<?xml version="1.0" encoding="UTF-8"?>
<robot generator="Robot 7.4.2 (Python 3.11.10 on linux)" generated="2026-04-08T00:49:34.357502" rpa="false" schemaversion="5">
<suite id="s1" name="openflowplugin-clustering.txt">
<suite id="s1-s1" name="Cluster HA Owner Failover" source="/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustering/010__Cluster_HA_Owner_Failover.robot">
<kw name="Setup_Utils_For_Setup_And_Teardown" owner="SetupUtils" type="SETUP">
<kw name="Do_Not_Fail_Fast_From_Now_On" owner="FailFast">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-08T00:49:35.011773" level="INFO">${SuiteFastFail} = False</msg>
<arg>${SuiteFastFail}</arg>
<arg>False</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-08T00:49:35.007698" elapsed="0.004143"/>
</kw>
<doc>Set suite to not fail fast.</doc>
<status status="PASS" start="2026-04-08T00:49:35.007223" elapsed="0.004703"/>
</kw>
<kw name="Setup_Karaf_Keywords" owner="KarafKeywords">
<kw name="ClusterManagement_Setup" owner="ClusterManagement">
<kw name="Get Variable Value" owner="BuiltIn">
<msg time="2026-04-08T00:49:35.017034" level="INFO">${already_done} = False</msg>
<var>${already_done}</var>
<arg>\${ClusterManagement__has_setup_run}</arg>
<arg>False</arg>
<doc>Returns variable value or ``default`` if the variable does not exist.</doc>
<status status="PASS" start="2026-04-08T00:49:35.013498" elapsed="0.003568"/>
</kw>
<if>
<branch type="IF" condition="${already_done}">
<return>
<status status="NOT RUN" start="2026-04-08T00:49:35.017324" elapsed="0.000021"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:49:35.017183" elapsed="0.000193"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:35.017140" elapsed="0.000260"/>
</if>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-08T00:49:35.017941" level="INFO">${ClusterManagement__has_setup_run} = True</msg>
<arg>\${ClusterManagement__has_setup_run}</arg>
<arg>True</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-08T00:49:35.017562" elapsed="0.000427"/>
</kw>
<kw name="Get Variable Value" owner="BuiltIn">
<msg time="2026-04-08T00:49:35.018522" level="INFO">${cluster_size} = 3</msg>
<var>${cluster_size}</var>
<arg>\${NUM_ODL_SYSTEM}</arg>
<arg>1</arg>
<doc>Returns variable value or ``default`` if the variable does not exist.</doc>
<status status="PASS" start="2026-04-08T00:49:35.018186" elapsed="0.000366"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Convert To Integer" owner="BuiltIn">
<arg>${cluster_size}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:49:35.019114" elapsed="0.000324"/>
</kw>
<msg time="2026-04-08T00:49:35.019548" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:49:35.019597" level="INFO">${possibly_int_of_members} = 3</msg>
<var>${status}</var>
<var>${possibly_int_of_members}</var>
<arg>BuiltIn.Convert_To_Integer</arg>
<arg>${cluster_size}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:49:35.018729" elapsed="0.000891"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:49:35.020194" level="INFO">${int_of_members} = 3</msg>
<var>${int_of_members}</var>
<arg>'${status}' != 'PASS'</arg>
<arg>${1}</arg>
<arg>${possibly_int_of_members}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:49:35.019791" elapsed="0.000432"/>
</kw>
<kw name="ClusterManagement__Compute_Derived_Variables" owner="ClusterManagement">
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:49:35.021955" level="INFO">@{member_index_list} = [ ]</msg>
<var>@{member_index_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:49:35.021651" elapsed="0.000333"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:49:35.022408" level="INFO">@{session_list} = [ ]</msg>
<var>@{session_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:49:35.022133" elapsed="0.000302"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-08T00:49:35.022954" level="INFO">&amp;{index_to_ip_mapping} = { }</msg>
<var>&amp;{index_to_ip_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-08T00:49:35.022597" elapsed="0.000385"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="ClusterManagement__Include_Member_Index" owner="ClusterManagement">
<kw name="Append To List" owner="Collections">
<arg>${member_index_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-08T00:49:35.026255" elapsed="0.000241"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:49:35.026982" level="INFO">${member_ip} = 10.30.170.48</msg>
<var>${member_ip}</var>
<arg>${ODL_SYSTEM_${index}_IP}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:49:35.026656" elapsed="0.000352"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${index_to_ip_mapping}</arg>
<arg>${index}</arg>
<arg>${member_ip}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:49:35.027176" elapsed="0.000298"/>
</kw>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:49:35.028294" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:49:35.027973" elapsed="0.000347"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:49:35.028366" elapsed="0.000041"/>
</return>
<msg time="2026-04-08T00:49:35.028535" level="INFO">${session_alias} = ClusterManagement__session_1</msg>
<var>${session_alias}</var>
<arg>member_index=${index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:49:35.027672" elapsed="0.000888"/>
</kw>
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:49:35.029284" level="INFO">Creating Session using : alias=ClusterManagement__session_1, url=http://10.30.170.48:8181, headers={},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x76b9f5ec0450&gt;, timeout=5, proxies=None, verify=False,                     debug=0 </msg>
<arg>${session_alias}</arg>
<arg>http://${member_ip}:${RESTCONFPORT}</arg>
<arg>auth=${AUTH}</arg>
<arg>timeout=${http_timeout}</arg>
<arg>max_retries=${http_retries}</arg>
<doc>Create Session: create a HTTP session to a server</doc>
<status status="PASS" start="2026-04-08T00:49:35.028821" elapsed="0.000626"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${session_list}</arg>
<arg>${session_alias}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-08T00:49:35.029611" elapsed="0.000193"/>
</kw>
<arg>${index}</arg>
<arg>${member_index_list}</arg>
<arg>${session_list}</arg>
<arg>${index_to_ip_mapping}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>http_retries=${http_retries}</arg>
<doc>Add a corresponding item based on index into the last three arguments.
Create the Http session whose alias is added to list.</doc>
<status status="PASS" start="2026-04-08T00:49:35.025568" elapsed="0.004295"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T00:49:35.025373" elapsed="0.004535"/>
</iter>
<iter>
<kw name="ClusterManagement__Include_Member_Index" owner="ClusterManagement">
<kw name="Append To List" owner="Collections">
<arg>${member_index_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-08T00:49:35.030789" elapsed="0.000260"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:49:35.031551" level="INFO">${member_ip} = 10.30.170.131</msg>
<var>${member_ip}</var>
<arg>${ODL_SYSTEM_${index}_IP}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:49:35.031224" elapsed="0.000354"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${index_to_ip_mapping}</arg>
<arg>${index}</arg>
<arg>${member_ip}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:49:35.031730" elapsed="0.000223"/>
</kw>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:49:35.032908" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:49:35.032588" elapsed="0.000347"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:49:35.032982" elapsed="0.000031"/>
</return>
<msg time="2026-04-08T00:49:35.033140" level="INFO">${session_alias} = ClusterManagement__session_2</msg>
<var>${session_alias}</var>
<arg>member_index=${index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:49:35.032292" elapsed="0.000890"/>
</kw>
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:49:35.033750" level="INFO">Creating Session using : alias=ClusterManagement__session_2, url=http://10.30.170.131:8181, headers={},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x76b9f5ec3d10&gt;, timeout=5, proxies=None, verify=False,                     debug=0 </msg>
<arg>${session_alias}</arg>
<arg>http://${member_ip}:${RESTCONFPORT}</arg>
<arg>auth=${AUTH}</arg>
<arg>timeout=${http_timeout}</arg>
<arg>max_retries=${http_retries}</arg>
<doc>Create Session: create a HTTP session to a server</doc>
<status status="PASS" start="2026-04-08T00:49:35.033337" elapsed="0.000527"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${session_list}</arg>
<arg>${session_alias}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-08T00:49:35.034025" elapsed="0.000207"/>
</kw>
<arg>${index}</arg>
<arg>${member_index_list}</arg>
<arg>${session_list}</arg>
<arg>${index_to_ip_mapping}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>http_retries=${http_retries}</arg>
<doc>Add a corresponding item based on index into the last three arguments.
Create the Http session whose alias is added to list.</doc>
<status status="PASS" start="2026-04-08T00:49:35.030206" elapsed="0.004086"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T00:49:35.029997" elapsed="0.004338"/>
</iter>
<iter>
<kw name="ClusterManagement__Include_Member_Index" owner="ClusterManagement">
<kw name="Append To List" owner="Collections">
<arg>${member_index_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-08T00:49:35.035158" elapsed="0.000203"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:49:35.036006" level="INFO">${member_ip} = 10.30.171.110</msg>
<var>${member_ip}</var>
<arg>${ODL_SYSTEM_${index}_IP}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:49:35.035516" elapsed="0.000516"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${index_to_ip_mapping}</arg>
<arg>${index}</arg>
<arg>${member_ip}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:49:35.036199" elapsed="0.000225"/>
</kw>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:49:35.037260" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:49:35.036948" elapsed="0.000338"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:49:35.037331" elapsed="0.000031"/>
</return>
<msg time="2026-04-08T00:49:35.037485" level="INFO">${session_alias} = ClusterManagement__session_3</msg>
<var>${session_alias}</var>
<arg>member_index=${index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:49:35.036612" elapsed="0.000898"/>
</kw>
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:49:35.038070" level="INFO">Creating Session using : alias=ClusterManagement__session_3, url=http://10.30.171.110:8181, headers={},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x76b9f5d06650&gt;, timeout=5, proxies=None, verify=False,                     debug=0 </msg>
<arg>${session_alias}</arg>
<arg>http://${member_ip}:${RESTCONFPORT}</arg>
<arg>auth=${AUTH}</arg>
<arg>timeout=${http_timeout}</arg>
<arg>max_retries=${http_retries}</arg>
<doc>Create Session: create a HTTP session to a server</doc>
<status status="PASS" start="2026-04-08T00:49:35.037660" elapsed="0.000535"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${session_list}</arg>
<arg>${session_alias}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-08T00:49:35.038354" elapsed="0.000187"/>
</kw>
<arg>${index}</arg>
<arg>${member_index_list}</arg>
<arg>${session_list}</arg>
<arg>${index_to_ip_mapping}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>http_retries=${http_retries}</arg>
<doc>Add a corresponding item based on index into the last three arguments.
Create the Http session whose alias is added to list.</doc>
<status status="PASS" start="2026-04-08T00:49:35.034603" elapsed="0.003995"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T00:49:35.034423" elapsed="0.004218"/>
</iter>
<var>${index}</var>
<value>1</value>
<value>${int_of_members+1}</value>
<status status="PASS" start="2026-04-08T00:49:35.023043" elapsed="0.015629"/>
</for>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-08T00:49:35.039242" level="INFO">${ClusterManagement__member_index_list} = [1, 2, 3]</msg>
<arg>\${ClusterManagement__member_index_list}</arg>
<arg>${member_index_list}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-08T00:49:35.038834" elapsed="0.000452"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-08T00:49:35.039833" level="INFO">${ClusterManagement__index_to_ip_mapping} = {1: '10.30.170.48', 2: '10.30.170.131', 3: '10.30.171.110'}</msg>
<arg>\${ClusterManagement__index_to_ip_mapping}</arg>
<arg>${index_to_ip_mapping}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-08T00:49:35.039447" elapsed="0.000428"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-08T00:49:35.040422" level="INFO">${ClusterManagement__session_list} = ['ClusterManagement__session_1', 'ClusterManagement__session_2', 'ClusterManagement__session_3']</msg>
<arg>\${ClusterManagement__session_list}</arg>
<arg>${session_list}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-08T00:49:35.040034" elapsed="0.000430"/>
</kw>
<arg>int_of_members=${int_of_members}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>http_retries=${http_retries}</arg>
<doc>Construct index list, session list and IP mapping, publish them as suite variables.</doc>
<status status="PASS" start="2026-04-08T00:49:35.021173" elapsed="0.019347"/>
</kw>
<arg>http_timeout=${http_timeout}</arg>
<doc>Detect repeated call, or detect number of members and initialize derived suite variables.
Http sessions are created with parameters to not waste time when ODL is no accepting connections properly.</doc>
<status status="PASS" start="2026-04-08T00:49:35.013100" elapsed="0.027515"/>
</kw>
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:49:35.040828" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:49:35.040686" elapsed="0.000190"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:35.040664" elapsed="0.000234"/>
</if>
<kw name="Run_Bash_Command_On_List_Or_All" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:49:35.043858" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:49:35.043477" elapsed="0.000407"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:49:35.044360" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:49:35.044041" elapsed="0.000344"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:49:35.044430" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:49:35.044584" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:49:35.043135" elapsed="0.001474"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:49:35.045626" level="INFO">${member_ip} = 10.30.170.48</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:49:35.045365" elapsed="0.000287"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:49:35.046503" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

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

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T00:49:35.051952" elapsed="0.000308"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:35.053348" level="INFO">Attempting to execute command "iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save" on remote system "10.30.170.48" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:35.052414" elapsed="0.000982"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:49:35.054224" level="INFO">${conn_id} = 1</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:49:35.053555" elapsed="0.000697"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T00:49:35.055629" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T00:49:35.055828" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T00:49:35.054981" elapsed="0.000896"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:49:35.056171" elapsed="0.000604"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T00:49:35.058394" level="INFO">Logging into '10.30.170.48:22' as 'jenkins'.</msg>
<msg time="2026-04-08T00:49:35.397612" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 00:49:30 UTC 2026

  System load:  0.08               Processes:             121
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 7%                 IPv4 address for ens3: 10.30.170.48
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


[?2004h[jenkins@releng-11369-169-0-builder-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T00:49:35.057867" elapsed="0.340162"/>
</kw>
<msg time="2026-04-08T00:49:35.398158" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:49:35.057131" elapsed="0.341322"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T00:49:35.054470" elapsed="0.344258"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T00:49:35.399438" level="INFO">Executing command 'iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save'.</msg>
<msg time="2026-04-08T00:49:35.413412" level="INFO">Command exited with return code 4.</msg>
<msg time="2026-04-08T00:49:35.413994" level="INFO">${stdout} = </msg>
<msg time="2026-04-08T00:49:35.414106" level="INFO">${stderr} = iptables v1.8.7 (nf_tables): unknown option "--dport"
Try `iptables -h' or 'iptables --help' for more information.
iptables-save v1.8.7 (nf_tables): Could not fetch rule set generation id: Permission ...</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T00:49:35.399032" elapsed="0.015182"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:49:35.414778" elapsed="0.000913"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:35.417434" level="INFO">iptables v1.8.7 (nf_tables): unknown option "--dport"
Try `iptables -h' or 'iptables --help' for more information.
iptables-save v1.8.7 (nf_tables): Could not fetch rule set generation id: Permission denied (you must be root)</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:35.416151" elapsed="0.001398"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:49:35.418117" elapsed="0.000071"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:49:35.417749" elapsed="0.000519"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:35.417682" elapsed="0.000699"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T00:49:35.418858" elapsed="0.000083"/>
</return>
<status status="PASS" start="2026-04-08T00:49:35.418532" elapsed="0.000469"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:35.418492" elapsed="0.000547"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:49:35.419091" elapsed="0.000021"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:49:35.423143" elapsed="0.001097"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:49:35.424557" elapsed="0.000581"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:49:35.425457" elapsed="0.000280"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:49:35.419633" elapsed="0.006225"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T00:49:35.048470" elapsed="0.377532"/>
</kw>
<msg time="2026-04-08T00:49:35.426086" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:49:35.047792" elapsed="0.378404"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-08T00:49:35.047317" elapsed="0.378998"/>
</kw>
<msg time="2026-04-08T00:49:35.426415" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:49:35.046793" elapsed="0.379706"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:49:35.429233" elapsed="0.000317"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:49:35.429714" elapsed="0.000149"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:49:35.430010" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:49:35.426921" elapsed="0.003251"/>
</kw>
<msg time="2026-04-08T00:49:35.430271" level="INFO">${output} = </msg>
<var>${output}</var>
<arg>Utils.Run_Command_On_Controller</arg>
<arg>${member_ip}</arg>
<arg>${command}</arg>
<doc>Store current connection index, run keyword returning its result, restore connection in teardown.
Note that in order to avoid "got positional argument after named arguments", it is safer to use positional (not named) arguments on call.</doc>
<status status="PASS" start="2026-04-08T00:49:35.045863" elapsed="0.384434"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:35.430759" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:35.430504" elapsed="0.000300"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-08T00:49:35.430846" elapsed="0.000030"/>
</return>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-08T00:49:35.044998" elapsed="0.385972"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T00:49:35.044826" elapsed="0.386246"/>
</iter>
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:49:35.432044" level="INFO">${member_ip} = 10.30.170.131</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:49:35.431763" elapsed="0.000308"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:49:35.432897" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

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

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T00:49:35.436354" elapsed="0.000310"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:35.437754" level="INFO">Attempting to execute command "iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save" on remote system "10.30.170.131" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:35.436819" elapsed="0.000983"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:49:35.438674" level="INFO">${conn_id} = 4</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:49:35.437967" elapsed="0.000734"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T00:49:35.440050" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T00:49:35.440280" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T00:49:35.439469" elapsed="0.000860"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:49:35.440611" elapsed="0.000633"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T00:49:35.442752" level="INFO">Logging into '10.30.170.131:22' as 'jenkins'.</msg>
<msg time="2026-04-08T00:49:35.770718" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 00:49:31 UTC 2026

  System load:  0.33               Processes:             124
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 7%                 IPv4 address for ens3: 10.30.170.131
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


[?2004h[jenkins@releng-11369-169-0-builder-1 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T00:49:35.442327" elapsed="0.328599"/>
</kw>
<msg time="2026-04-08T00:49:35.771037" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:49:35.441572" elapsed="0.329709"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T00:49:35.438923" elapsed="0.332611"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T00:49:35.772185" level="INFO">Executing command 'iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save'.</msg>
<msg time="2026-04-08T00:49:35.784730" level="INFO">Command exited with return code 4.</msg>
<msg time="2026-04-08T00:49:35.785112" level="INFO">${stdout} = </msg>
<msg time="2026-04-08T00:49:35.785264" level="INFO">${stderr} = iptables v1.8.7 (nf_tables): unknown option "--dport"
Try `iptables -h' or 'iptables --help' for more information.
iptables-save v1.8.7 (nf_tables): Could not fetch rule set generation id: Permission ...</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T00:49:35.771827" elapsed="0.013495"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:49:35.785700" elapsed="0.000557"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:35.788007" level="INFO">iptables v1.8.7 (nf_tables): unknown option "--dport"
Try `iptables -h' or 'iptables --help' for more information.
iptables-save v1.8.7 (nf_tables): Could not fetch rule set generation id: Permission denied (you must be root)</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:35.786687" elapsed="0.001580"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:49:35.788838" elapsed="0.000038"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:49:35.788469" elapsed="0.000480"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:35.788406" elapsed="0.000591"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T00:49:35.789299" elapsed="0.000041"/>
</return>
<status status="PASS" start="2026-04-08T00:49:35.789086" elapsed="0.000302"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:35.789058" elapsed="0.000367"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:49:35.789476" elapsed="0.000021"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:49:35.793630" elapsed="0.001030"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:49:35.794974" elapsed="0.000589"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:49:35.795838" elapsed="0.000310"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:49:35.789945" elapsed="0.006340"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T00:49:35.434911" elapsed="0.361508"/>
</kw>
<msg time="2026-04-08T00:49:35.796496" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:49:35.434221" elapsed="0.362347"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-08T00:49:35.433722" elapsed="0.362956"/>
</kw>
<msg time="2026-04-08T00:49:35.796733" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:49:35.433207" elapsed="0.363589"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:49:35.799457" elapsed="0.000307"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:49:35.799947" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:49:35.800312" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:49:35.797191" elapsed="0.003271"/>
</kw>
<msg time="2026-04-08T00:49:35.800553" level="INFO">${output} = </msg>
<var>${output}</var>
<arg>Utils.Run_Command_On_Controller</arg>
<arg>${member_ip}</arg>
<arg>${command}</arg>
<doc>Store current connection index, run keyword returning its result, restore connection in teardown.
Note that in order to avoid "got positional argument after named arguments", it is safer to use positional (not named) arguments on call.</doc>
<status status="PASS" start="2026-04-08T00:49:35.432376" elapsed="0.368201"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:35.801001" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:35.800754" elapsed="0.000287"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-08T00:49:35.801082" elapsed="0.000028"/>
</return>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-08T00:49:35.431396" elapsed="0.369827"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T00:49:35.431209" elapsed="0.370052"/>
</iter>
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:49:35.802204" level="INFO">${member_ip} = 10.30.171.110</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:49:35.801912" elapsed="0.000319"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:49:35.802945" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

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

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T00:49:35.806069" elapsed="0.000348"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:35.807494" level="INFO">Attempting to execute command "iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save" on remote system "10.30.171.110" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:35.806569" elapsed="0.000974"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:49:35.808370" level="INFO">${conn_id} = 7</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:49:35.807701" elapsed="0.000696"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T00:49:35.809724" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T00:49:35.809997" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T00:49:35.809174" elapsed="0.000874"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:49:35.810349" elapsed="0.000751"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T00:49:35.812626" level="INFO">Logging into '10.30.171.110:22' as 'jenkins'.</msg>
<msg time="2026-04-08T00:49:36.143271" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 00:49:33 UTC 2026

  System load:  0.12               Processes:             126
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 7%                 IPv4 address for ens3: 10.30.171.110
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


[?2004h[jenkins@releng-11369-169-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T00:49:35.812240" elapsed="0.331263"/>
</kw>
<msg time="2026-04-08T00:49:36.143615" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:49:35.811477" elapsed="0.332310"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T00:49:35.808616" elapsed="0.335410"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T00:49:36.144624" level="INFO">Executing command 'iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save'.</msg>
<msg time="2026-04-08T00:49:36.156953" level="INFO">Command exited with return code 4.</msg>
<msg time="2026-04-08T00:49:36.157429" level="INFO">${stdout} = </msg>
<msg time="2026-04-08T00:49:36.157546" level="INFO">${stderr} = iptables v1.8.7 (nf_tables): unknown option "--dport"
Try `iptables -h' or 'iptables --help' for more information.
iptables-save v1.8.7 (nf_tables): Could not fetch rule set generation id: Permission ...</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T00:49:36.144298" elapsed="0.013306"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:49:36.158004" elapsed="0.000580"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:36.160191" level="INFO">iptables v1.8.7 (nf_tables): unknown option "--dport"
Try `iptables -h' or 'iptables --help' for more information.
iptables-save v1.8.7 (nf_tables): Could not fetch rule set generation id: Permission denied (you must be root)</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:36.159051" elapsed="0.001251"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:49:36.160826" elapsed="0.000036"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:49:36.160478" elapsed="0.000457"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:36.160425" elapsed="0.000560"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T00:49:36.161482" elapsed="0.000066"/>
</return>
<status status="PASS" start="2026-04-08T00:49:36.161104" elapsed="0.000520"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:36.161070" elapsed="0.000608"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:49:36.161755" elapsed="0.000033"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:49:36.165829" elapsed="0.001043"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:49:36.167227" elapsed="0.000550"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:49:36.168042" elapsed="0.000292"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:49:36.162382" elapsed="0.006068"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T00:49:35.804913" elapsed="0.363667"/>
</kw>
<msg time="2026-04-08T00:49:36.168743" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:49:35.804286" elapsed="0.364532"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-08T00:49:35.803741" elapsed="0.365187"/>
</kw>
<msg time="2026-04-08T00:49:36.168985" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:49:35.803238" elapsed="0.365809"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:49:36.171995" elapsed="0.000325"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:49:36.172481" elapsed="0.000142"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:49:36.172768" elapsed="0.000095"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:49:36.169521" elapsed="0.003393"/>
</kw>
<msg time="2026-04-08T00:49:36.173005" level="INFO">${output} = </msg>
<var>${output}</var>
<arg>Utils.Run_Command_On_Controller</arg>
<arg>${member_ip}</arg>
<arg>${command}</arg>
<doc>Store current connection index, run keyword returning its result, restore connection in teardown.
Note that in order to avoid "got positional argument after named arguments", it is safer to use positional (not named) arguments on call.</doc>
<status status="PASS" start="2026-04-08T00:49:35.802446" elapsed="0.370584"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:36.173496" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:36.173223" elapsed="0.000316"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-08T00:49:36.173582" elapsed="0.000029"/>
</return>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-08T00:49:35.801547" elapsed="0.372160"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T00:49:35.801366" elapsed="0.372380"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-08T00:49:35.044662" elapsed="1.129124"/>
</for>
<arg>iptables -I INPUT -p tcp --dport ${KARAF_SHELL_PORT} -j ACCEPT; iptables-save</arg>
<doc>Cycle through indices (or all), run command on each.</doc>
<status status="PASS" start="2026-04-08T00:49:35.041121" elapsed="1.132729"/>
</kw>
<kw name="Comment" owner="BuiltIn">
<arg>First connections to Karaf console may fail, so WUKS is used. TODO: Track as a Bug.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:49:36.174022" elapsed="0.000237"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:49:36.187353" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:49:36.187242" elapsed="0.000156"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:36.187223" elapsed="0.000197"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:49:36.187703" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T00:49:36.187570" elapsed="0.000263"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:36.188254" level="INFO">{}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:36.187982" elapsed="0.000316"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:36.188718" level="INFO">1</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:36.188462" elapsed="0.000300"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:49:36.189567" level="FAIL">Dictionary does not contain key '1'.</msg>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="FAIL" start="2026-04-08T00:49:36.189298" elapsed="0.000513">Dictionary does not contain key '1'.</status>
</kw>
<msg time="2026-04-08T00:49:36.189924" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:49:36.189971" level="INFO">${old_connection_index} = Dictionary does not contain key '1'.</msg>
<var>${status}</var>
<var>${old_connection_index}</var>
<arg>Get From Dictionary</arg>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:49:36.188920" elapsed="0.001098"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='PASS'">
<kw name="Run Keywords" owner="BuiltIn">
<arg>SSHLibrary.Switch_Connection</arg>
<arg>${old_connection_index}</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Executes all the given keywords in a sequence.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:36.190357" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:36.190107" elapsed="0.000338"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:36.190085" elapsed="0.000390"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:49:36.191295" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:49:36.190954" elapsed="0.000368"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:49:36.191371" elapsed="0.000031"/>
</return>
<msg time="2026-04-08T00:49:36.191523" level="INFO">${odl_ip} = 10.30.170.48</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:49:36.190682" elapsed="0.000865"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${odl_ip}</arg>
<arg>port=${KARAF_SHELL_PORT}</arg>
<arg>prompt=${KARAF_PROMPT_LOGIN}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:49:36.191701" elapsed="0.000407"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:49:36.192423" level="INFO">index=10
host=10.30.170.48
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-08T00:49:36.192526" level="INFO">${karaf_connection_object} = index=10
host=10.30.170.48
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_erro...</msg>
<var>${karaf_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T00:49:36.192306" elapsed="0.000247"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<arg>${karaf_connection_object.index}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:49:36.192703" elapsed="0.002123"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-08T00:49:36.195267" level="INFO">Logging into '10.30.170.48:8101' as 'karaf'.</msg>
<msg time="2026-04-08T00:49:36.928449" level="INFO">Read output: [33m                                                                                           
[33m    ________                       ________                .__  .__       .__     __       
[33m    \_____  \ ______   ____   ____ \______ \ _____  ___.__.|  | |__| ____ |  |___/  |_     
[33m     /   |   \\____ \_/ __ \ /    \ |    |  \\__  \&lt;   |  ||  | |  |/ ___\|  |  \   __\    
[33m    /    |    \  |_&gt; &gt;  ___/|   |  \|    `   \/ __ \\___  ||  |_|  / /_/  &gt;   Y  \  |      
[33m    \_______  /   __/ \___  &gt;___|  /_______  (____  / ____||____/__\___  /|___|  /__|      
[33m            \/|__|        \/     \/        \/     \/\/            /_____/      \/          
[33m                                                                                           

Hit '[1m&lt;tab&gt;[0m' for a list of available commands
and '[1m[cmd] --help[0m' for help on a specific command.
Hit '[1m&lt;ctrl-d&gt;[0m' or type '[1msystem:shutdown[0m' or '[1mlogout[0m' to shutdown OpenDaylight.

[?1h=[90m~[0m                                                                                [?2004hopendaylight-user</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="PASS" start="2026-04-08T00:49:36.194989" elapsed="0.733636"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:49:36.932514" elapsed="0.000315"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:49:36.932993" elapsed="0.000166"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:49:36.933342" elapsed="0.000110"/>
</kw>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:49:36.930305" elapsed="0.003200"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T00:49:36.929087" elapsed="0.004465"/>
</kw>
<arg>member_index=${index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for ${member_index},
close the previous connection. In any case create a new connection
to karaf console for ${member_index}, set correct prompt set and login to karaf console.
Store connection index for ${member_index} and restore the previous active connection.</doc>
<status status="PASS" start="2026-04-08T00:49:36.186942" elapsed="0.746662"/>
</kw>
<arg>3s</arg>
<arg>1s</arg>
<arg>Open_Controller_Karaf_Console_On_Background</arg>
<arg>member_index=${index}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-08T00:49:36.174990" elapsed="0.758662"/>
</kw>
<arg>BuiltIn.Wait_Until_Keyword_Succeeds</arg>
<arg>3s</arg>
<arg>1s</arg>
<arg>Open_Controller_Karaf_Console_On_Background</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:49:36.174626" elapsed="0.759077"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T00:49:36.174485" elapsed="0.759259"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:49:36.946907" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:49:36.946786" elapsed="0.000171"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:36.946762" elapsed="0.000218"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:49:36.947288" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T00:49:36.947131" elapsed="0.000291"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:36.947833" level="INFO">{1: 10}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:36.947572" elapsed="0.000305"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:36.948324" level="INFO">2</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:36.948029" elapsed="0.000343"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:49:36.949214" level="FAIL">Dictionary does not contain key '2'.</msg>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="FAIL" start="2026-04-08T00:49:36.948957" elapsed="0.000399">Dictionary does not contain key '2'.</status>
</kw>
<msg time="2026-04-08T00:49:36.949469" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:49:36.949514" level="INFO">${old_connection_index} = Dictionary does not contain key '2'.</msg>
<var>${status}</var>
<var>${old_connection_index}</var>
<arg>Get From Dictionary</arg>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:49:36.948595" elapsed="0.000942"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='PASS'">
<kw name="Run Keywords" owner="BuiltIn">
<arg>SSHLibrary.Switch_Connection</arg>
<arg>${old_connection_index}</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Executes all the given keywords in a sequence.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:36.949836" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:36.949614" elapsed="0.000296"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:36.949595" elapsed="0.000339"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:49:36.950691" level="INFO">${ip_address} = 10.30.170.131</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:49:36.950428" elapsed="0.000289"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:49:36.950764" elapsed="0.000031"/>
</return>
<msg time="2026-04-08T00:49:36.950914" level="INFO">${odl_ip} = 10.30.170.131</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:49:36.950141" elapsed="0.000797"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${odl_ip}</arg>
<arg>port=${KARAF_SHELL_PORT}</arg>
<arg>prompt=${KARAF_PROMPT_LOGIN}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:49:36.951088" elapsed="0.000427"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:49:36.951785" level="INFO">index=12
host=10.30.170.131
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-08T00:49:36.951884" level="INFO">${karaf_connection_object} = index=12
host=10.30.170.131
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_err...</msg>
<var>${karaf_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T00:49:36.951681" elapsed="0.000229"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<arg>${karaf_connection_object.index}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:49:36.952055" elapsed="0.002098"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-08T00:49:36.954588" level="INFO">Logging into '10.30.170.131:8101' as 'karaf'.</msg>
<msg time="2026-04-08T00:49:37.625481" level="INFO">Read output: [33m                                                                                           
[33m    ________                       ________                .__  .__       .__     __       
[33m    \_____  \ ______   ____   ____ \______ \ _____  ___.__.|  | |__| ____ |  |___/  |_     
[33m     /   |   \\____ \_/ __ \ /    \ |    |  \\__  \&lt;   |  ||  | |  |/ ___\|  |  \   __\    
[33m    /    |    \  |_&gt; &gt;  ___/|   |  \|    `   \/ __ \\___  ||  |_|  / /_/  &gt;   Y  \  |      
[33m    \_______  /   __/ \___  &gt;___|  /_______  (____  / ____||____/__\___  /|___|  /__|      
[33m            \/|__|        \/     \/        \/     \/\/            /_____/      \/          
[33m                                                                                           

Hit '[1m&lt;tab&gt;[0m' for a list of available commands
and '[1m[cmd] --help[0m' for help on a specific command.
Hit '[1m&lt;ctrl-d&gt;[0m' or type '[1msystem:shutdown[0m' or '[1mlogout[0m' to shutdown OpenDaylight.

[?1h=[90m~[0m                                                                                [?2004hopendaylight-user</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="PASS" start="2026-04-08T00:49:36.954329" elapsed="0.671336"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:49:37.629221" elapsed="0.000321"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:49:37.629709" elapsed="0.000170"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:49:37.630028" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:49:37.626879" elapsed="0.003322"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T00:49:37.626113" elapsed="0.004137"/>
</kw>
<arg>member_index=${index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for ${member_index},
close the previous connection. In any case create a new connection
to karaf console for ${member_index}, set correct prompt set and login to karaf console.
Store connection index for ${member_index} and restore the previous active connection.</doc>
<status status="PASS" start="2026-04-08T00:49:36.946495" elapsed="0.683809"/>
</kw>
<arg>3s</arg>
<arg>1s</arg>
<arg>Open_Controller_Karaf_Console_On_Background</arg>
<arg>member_index=${index}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-08T00:49:36.934536" elapsed="0.695817"/>
</kw>
<arg>BuiltIn.Wait_Until_Keyword_Succeeds</arg>
<arg>3s</arg>
<arg>1s</arg>
<arg>Open_Controller_Karaf_Console_On_Background</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:49:36.933999" elapsed="0.696408"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T00:49:36.933856" elapsed="0.696595"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:49:37.643680" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:49:37.643557" elapsed="0.000174"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:37.643534" elapsed="0.000220"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:49:37.644044" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T00:49:37.643907" elapsed="0.000290"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:37.644617" level="INFO">{1: 10, 2: 12}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:37.644351" elapsed="0.000310"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:37.645055" level="INFO">3</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:37.644811" elapsed="0.000290"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:49:37.645876" level="FAIL">Dictionary does not contain key '3'.</msg>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="FAIL" start="2026-04-08T00:49:37.645637" elapsed="0.000360">Dictionary does not contain key '3'.</status>
</kw>
<msg time="2026-04-08T00:49:37.646107" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:49:37.646153" level="INFO">${old_connection_index} = Dictionary does not contain key '3'.</msg>
<var>${status}</var>
<var>${old_connection_index}</var>
<arg>Get From Dictionary</arg>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:49:37.645274" elapsed="0.000920"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='PASS'">
<kw name="Run Keywords" owner="BuiltIn">
<arg>SSHLibrary.Switch_Connection</arg>
<arg>${old_connection_index}</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Executes all the given keywords in a sequence.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:37.646495" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:37.646272" elapsed="0.000299"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:37.646254" elapsed="0.000340"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:49:37.647362" level="INFO">${ip_address} = 10.30.171.110</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:49:37.647081" elapsed="0.000309"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:49:37.647437" elapsed="0.000032"/>
</return>
<msg time="2026-04-08T00:49:37.647588" level="INFO">${odl_ip} = 10.30.171.110</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:49:37.646813" elapsed="0.000799"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${odl_ip}</arg>
<arg>port=${KARAF_SHELL_PORT}</arg>
<arg>prompt=${KARAF_PROMPT_LOGIN}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:49:37.647765" elapsed="0.000418"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:49:37.648463" level="INFO">index=14
host=10.30.171.110
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-08T00:49:37.648562" level="INFO">${karaf_connection_object} = index=14
host=10.30.171.110
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_err...</msg>
<var>${karaf_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T00:49:37.648356" elapsed="0.000233"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<arg>${karaf_connection_object.index}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:49:37.648735" elapsed="0.002292"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-08T00:49:37.651471" level="INFO">Logging into '10.30.171.110:8101' as 'karaf'.</msg>
<msg time="2026-04-08T00:49:38.373416" level="INFO">Read output: [33m                                                                                           
[33m    ________                       ________                .__  .__       .__     __       
[33m    \_____  \ ______   ____   ____ \______ \ _____  ___.__.|  | |__| ____ |  |___/  |_     
[33m     /   |   \\____ \_/ __ \ /    \ |    |  \\__  \&lt;   |  ||  | |  |/ ___\|  |  \   __\    
[33m    /    |    \  |_&gt; &gt;  ___/|   |  \|    `   \/ __ \\___  ||  |_|  / /_/  &gt;   Y  \  |      
[33m    \_______  /   __/ \___  &gt;___|  /_______  (____  / ____||____/__\___  /|___|  /__|      
[33m            \/|__|        \/     \/        \/     \/\/            /_____/      \/          
[33m                                                                                           

Hit '[1m&lt;tab&gt;[0m' for a list of available commands
and '[1m[cmd] --help[0m' for help on a specific command.
Hit '[1m&lt;ctrl-d&gt;[0m' or type '[1msystem:shutdown[0m' or '[1mlogout[0m' to shutdown OpenDaylight.

[?1h=[90m~[0m                                                                                [?2004hopendaylight-user</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="PASS" start="2026-04-08T00:49:37.651209" elapsed="0.722373"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:49:38.377290" elapsed="0.000321"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:49:38.377777" elapsed="0.000169"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:49:38.378190" elapsed="0.000108"/>
</kw>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:49:38.374713" elapsed="0.003641"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T00:49:38.373999" elapsed="0.004402"/>
</kw>
<arg>member_index=${index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for ${member_index},
close the previous connection. In any case create a new connection
to karaf console for ${member_index}, set correct prompt set and login to karaf console.
Store connection index for ${member_index} and restore the previous active connection.</doc>
<status status="PASS" start="2026-04-08T00:49:37.643263" elapsed="0.735192"/>
</kw>
<arg>3s</arg>
<arg>1s</arg>
<arg>Open_Controller_Karaf_Console_On_Background</arg>
<arg>member_index=${index}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-08T00:49:37.631279" elapsed="0.747224"/>
</kw>
<arg>BuiltIn.Wait_Until_Keyword_Succeeds</arg>
<arg>3s</arg>
<arg>1s</arg>
<arg>Open_Controller_Karaf_Console_On_Background</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:49:37.630875" elapsed="0.747682"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T00:49:37.630687" elapsed="0.747912"/>
</iter>
<var>${index}</var>
<value>@{ClusterManagement__member_index_list}</value>
<status status="PASS" start="2026-04-08T00:49:36.174322" elapsed="2.204315"/>
</for>
<arg>http_timeout=${http_timeout}</arg>
<doc>Initialize ClusterManagement. Open ssh karaf connections to each ODL.</doc>
<status status="PASS" start="2026-04-08T00:49:35.012365" elapsed="3.366341"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Test_Suite_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:49:38.381316" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:49:38.381191" elapsed="0.000173"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:38.381156" elapsed="0.000232"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:49:38.385930" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:49:38.385809" elapsed="0.000168"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:38.385786" elapsed="0.000213"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:49:38.386983" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:49:38.386592" elapsed="0.000419"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:49:38.387493" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:49:38.387186" elapsed="0.000333"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:49:38.387563" elapsed="0.000035"/>
</return>
<msg time="2026-04-08T00:49:38.387723" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:49:38.386262" elapsed="0.001486"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:49:38.393114" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:49:38.392998" elapsed="0.000161"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:38.392977" elapsed="0.000220"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:49:38.394237" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:49:38.394112" elapsed="0.000170"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:38.394094" elapsed="0.000209"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:49:38.394729" level="INFO">${karaf_connection_index} = 10</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:49:38.394445" elapsed="0.000311"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:49:38.395106" level="INFO">${current_connection_index} = None</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:49:38.394913" elapsed="0.000219"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T00:49:38.476777" level="INFO">@root&gt;log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "s "u "i "t "e "[C "/ "w "/ "w "o "r "k "s "p "a "c "e "/ "o "p "e "[78Cn "[A[78Cf</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T00:49:38.395652" elapsed="0.081275"/>
</kw>
<msg time="2026-04-08T00:49:38.477042" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T00:49:38.477090" level="INFO">${message_write} = @root&gt;log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "s "u "i "t "e "[C "/ "w "/ "w "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:49:38.395316" elapsed="0.081812"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T00:49:38.607764" level="INFO">"l "o "w "p "l "u "g "i "n "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "o "n "l "y "- "v "a "n "a "d "i "u "m "/ "t "e "s "t "/ "c "s "i "t "/ "s "u "i "t "e "s "/ "o "p "e "n "f "l "o "w "p "l "u "g "i "n "/ "[78CC "[A[78Cl
 "u "s "t "e "r "i "n "g "/ "0 "1 "0 "_ "_ "C "l "u "s "t "e "r "_ "H "A "_ "O "w "n "e "r "_ "F "a "i "l "o "v "e "r ". "r "o "b "o "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T00:49:38.477740" elapsed="0.130257"/>
</kw>
<msg time="2026-04-08T00:49:38.608104" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T00:49:38.608150" level="INFO">${message_wait} =  "l "o "w "p "l "u "g "i "n "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "o "n "l "y "- "v "a "n ...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:49:38.477387" elapsed="0.130823"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:38.608538" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:38.608299" elapsed="0.000296"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:38.608275" elapsed="0.000345"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:38.609048" level="INFO"> "l "o "w "p "l "u "g "i "n "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "o "n "l "y "- "v "a "n "a "d "i "u "m "/ "t "e "s "t "/ "c "s "i "t "/ "s "u "i "t "e "s "/ "o "p "e "n "f "l "o "w "p "l "u "g "i "n "/ "[78CC "[A[78Cl
 "u "s "t "e "r "i "n "g "/ "0 "1 "0 "_ "_ "C "l "u "s "t "e "r "_ "H "A "_ "O "w "n "e "r "_ "F "a "i "l "o "v "e "r ". "r "o "b "o "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:38.608761" elapsed="0.000381"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:38.609456" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:38.609236" elapsed="0.000274"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:38.609217" elapsed="0.000316"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T00:49:38.609567" elapsed="0.000057"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:49:38.610861" elapsed="0.000599"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:49:38.611774" elapsed="0.000469"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:49:38.612501" elapsed="0.000191"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:49:38.610444" elapsed="0.002404"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T00:49:38.609880" elapsed="0.003030"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T00:49:38.393862" elapsed="0.219159"/>
</kw>
<msg time="2026-04-08T00:49:38.613129" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:49:38.613193" level="INFO">${message} =  "l "o "w "p "l "u "g "i "n "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "o "n "l "y "- "v "a "n ...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:49:38.393348" elapsed="0.219884"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T00:49:38.613417" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-08T00:49:38.613310" elapsed="0.000171"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:38.613291" elapsed="0.000222"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:38.613957" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:38.614343" elapsed="0.000026"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T00:49:38.614417" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T00:49:38.392670" elapsed="0.221855"/>
</kw>
<msg time="2026-04-08T00:49:38.614619" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:49:38.614663" level="INFO">${output} =  "l "o "w "p "l "u "g "i "n "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "o "n "l "y "- "v "a "n ...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:49:38.388133" elapsed="0.226567"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:38.615025" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:38.614776" elapsed="0.000302"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:38.614758" elapsed="0.000343"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T00:49:38.387987" elapsed="0.227137"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:49:38.620387" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:49:38.620279" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:38.620260" elapsed="0.000226"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:49:38.621529" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:49:38.621421" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:38.621403" elapsed="0.000192"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:49:38.622025" level="INFO">${karaf_connection_index} = 12</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:49:38.621764" elapsed="0.000288"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:49:38.622448" level="INFO">${current_connection_index} = None</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:49:38.622253" elapsed="0.000221"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T00:49:38.703606" level="INFO">@root&gt;log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "s "u "i "t "e "[C "/ "w "/ "w "o "r "k "s "p "a "c "e "/ "o "p "e "[78Cn "[A[78Cf</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T00:49:38.622965" elapsed="0.080786"/>
</kw>
<msg time="2026-04-08T00:49:38.703861" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T00:49:38.703908" level="INFO">${message_write} = @root&gt;log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "s "u "i "t "e "[C "/ "w "/ "w "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:49:38.622632" elapsed="0.081313"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T00:49:38.834699" level="INFO">"l "o "w "p "l "u "g "i "n "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "o "n "l "y "- "v "a "n "a "d "i "u "m "/ "t "e "s "t "/ "c "s "i "t "/ "s "u "i "t "e "s "/ "o "p "e "n "f "l "o "w "p "l "u "g "i "n "/ "[78CC "[A[78Cl
 "u "s "t "e "r "i "n "g "/ "0 "1 "0 "_ "_ "C "l "u "s "t "e "r "_ "H "A "_ "O "w "n "e "r "_ "F "a "i "l "o "v "e "r ". "r "o "b "o "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T00:49:38.704501" elapsed="0.130385"/>
</kw>
<msg time="2026-04-08T00:49:38.834994" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T00:49:38.835040" level="INFO">${message_wait} =  "l "o "w "p "l "u "g "i "n "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "o "n "l "y "- "v "a "n ...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:49:38.704121" elapsed="0.130956"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:38.835449" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:38.835190" elapsed="0.000325"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:38.835144" elapsed="0.000397"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:38.835972" level="INFO"> "l "o "w "p "l "u "g "i "n "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "o "n "l "y "- "v "a "n "a "d "i "u "m "/ "t "e "s "t "/ "c "s "i "t "/ "s "u "i "t "e "s "/ "o "p "e "n "f "l "o "w "p "l "u "g "i "n "/ "[78CC "[A[78Cl
 "u "s "t "e "r "i "n "g "/ "0 "1 "0 "_ "_ "C "l "u "s "t "e "r "_ "H "A "_ "O "w "n "e "r "_ "F "a "i "l "o "v "e "r ". "r "o "b "o "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:38.835684" elapsed="0.000382"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:38.836373" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:38.836133" elapsed="0.000294"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:38.836115" elapsed="0.000335"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T00:49:38.836483" elapsed="0.000029"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:49:38.837729" elapsed="0.000647"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:49:38.838670" elapsed="0.000441"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:49:38.839430" elapsed="0.000195"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:49:38.837314" elapsed="0.002442"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T00:49:38.836755" elapsed="0.003049"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T00:49:38.621152" elapsed="0.218751"/>
</kw>
<msg time="2026-04-08T00:49:38.839995" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:49:38.840039" level="INFO">${message} =  "l "o "w "p "l "u "g "i "n "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "o "n "l "y "- "v "a "n ...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:49:38.620643" elapsed="0.219434"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T00:49:38.840287" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-08T00:49:38.840154" elapsed="0.000232"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:38.840135" elapsed="0.000278"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 2,
close the previous connection. In any case create a new connection
to karaf console for 2, set correct prompt set and login to karaf console.
Store connection index for 2 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:38.840803" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:38.841136" elapsed="0.000042"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T00:49:38.841228" elapsed="0.000017"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T00:49:38.619971" elapsed="0.221366"/>
</kw>
<msg time="2026-04-08T00:49:38.841432" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:49:38.841477" level="INFO">${output} =  "l "o "w "p "l "u "g "i "n "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "o "n "l "y "- "v "a "n ...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:49:38.615409" elapsed="0.226106"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:38.841842" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:38.841593" elapsed="0.000303"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:38.841575" elapsed="0.000345"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T00:49:38.615268" elapsed="0.226675"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:49:38.847252" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:49:38.847127" elapsed="0.000171"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:38.847108" elapsed="0.000212"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:49:38.848426" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:49:38.848319" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:38.848300" elapsed="0.000194"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:49:38.848896" level="INFO">${karaf_connection_index} = 14</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:49:38.848635" elapsed="0.000289"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:49:38.849306" level="INFO">${current_connection_index} = None</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:49:38.849082" elapsed="0.000251"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T00:49:38.936218" level="INFO">@root&gt;log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "s "u "i "t "e "[C "/ "w "/ "w "o "r "k "s "p "a "c "e "/ "o "p "e "[78Cn "[A[78Cf</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T00:49:38.849833" elapsed="0.086538"/>
</kw>
<msg time="2026-04-08T00:49:38.936483" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T00:49:38.936529" level="INFO">${message_write} = @root&gt;log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "s "u "i "t "e "[C "/ "w "/ "w "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:49:38.849495" elapsed="0.087071"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T00:49:39.074412" level="INFO">"l "o "w "p "l "u "g "i "n "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "o "n "l "y "- "v "a "n "a "d "i "u "m "/ "t "e "s "t "/ "c "s "i "t "/ "s "u "i "t "e "s "/ "o "p "e "n "f "l "o "w "p "l "u "g "i "n "/ "[78CC "[A[78Cl
 "u "s "t "e "r "i "n "g "/ "0 "1 "0 "_ "_ "C "l "u "s "t "e "r "_ "H "A "_ "O "w "n "e "r "_ "F "a "i "l "o "v "e "r ". "r "o "b "o "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T00:49:38.937115" elapsed="0.137620"/>
</kw>
<msg time="2026-04-08T00:49:39.074908" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T00:49:39.074985" level="INFO">${message_wait} =  "l "o "w "p "l "u "g "i "n "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "o "n "l "y "- "v "a "n ...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:49:38.936753" elapsed="0.138272"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:39.075549" elapsed="0.000028"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:39.075180" elapsed="0.000434"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:39.075117" elapsed="0.000525"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:39.076222" level="INFO"> "l "o "w "p "l "u "g "i "n "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "o "n "l "y "- "v "a "n "a "d "i "u "m "/ "t "e "s "t "/ "c "s "i "t "/ "s "u "i "t "e "s "/ "o "p "e "n "f "l "o "w "p "l "u "g "i "n "/ "[78CC "[A[78Cl
 "u "s "t "e "r "i "n "g "/ "0 "1 "0 "_ "_ "C "l "u "s "t "e "r "_ "H "A "_ "O "w "n "e "r "_ "F "a "i "l "o "v "e "r ". "r "o "b "o "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:39.075794" elapsed="0.000526"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:39.076742" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:39.076487" elapsed="0.000313"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:39.076466" elapsed="0.000359"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T00:49:39.076863" elapsed="0.000040"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:49:39.078378" elapsed="0.000569"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:49:39.079281" elapsed="0.000471"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:49:39.080013" elapsed="0.000225"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:49:39.077913" elapsed="0.002460"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T00:49:39.077260" elapsed="0.003162"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T00:49:38.847971" elapsed="0.232552"/>
</kw>
<msg time="2026-04-08T00:49:39.080644" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:49:39.080702" level="INFO">${message} =  "l "o "w "p "l "u "g "i "n "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "o "n "l "y "- "v "a "n ...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:49:38.847470" elapsed="0.233277"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T00:49:39.080938" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-08T00:49:39.080830" elapsed="0.000167"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:39.080810" elapsed="0.000211"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 3,
close the previous connection. In any case create a new connection
to karaf console for 3, set correct prompt set and login to karaf console.
Store connection index for 3 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:39.081453" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:39.081804" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T00:49:39.081876" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T00:49:38.846833" elapsed="0.235154"/>
</kw>
<msg time="2026-04-08T00:49:39.082084" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:49:39.082130" level="INFO">${output} =  "l "o "w "p "l "u "g "i "n "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "o "n "l "y "- "v "a "n ...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:49:38.842233" elapsed="0.239951"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:39.082514" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:39.082265" elapsed="0.000303"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:39.082248" elapsed="0.000343"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T00:49:38.842070" elapsed="0.240544"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-08T00:49:38.387807" elapsed="0.694846"/>
</for>
<arg>Starting suite ${SUITE_SOURCE}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-08T00:49:38.385478" elapsed="0.697239"/>
</kw>
<doc>Log suite name to karaf log, useful in suite setup.</doc>
<status status="PASS" start="2026-04-08T00:49:38.379322" elapsed="0.703456"/>
</kw>
<arg>KarafKeywords.Log_Test_Suite_Start_To_Controller_Karaf</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:49:38.378864" elapsed="0.703959"/>
</kw>
<doc>Prepare both FailFast and Karaf logging, log that the caller suite has started.
This keyword is to be used in suite setup, and without it the other keywords may not work properly.</doc>
<status status="PASS" start="2026-04-08T00:49:35.006751" elapsed="4.076128"/>
</kw>
<test id="s1-s1-t1" name="Check Shards Status Before Fail" line="16">
<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-04-08T00:49:39.104637" elapsed="0.000248"/>
</kw>
<msg time="2026-04-08T00:49:39.104944" 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>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:49:39.103979" elapsed="0.001024"/>
</kw>
<arg>phosphorus</arg>
<arg>${kw_name}</arg>
<arg>@{varargs}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Compare ${lower_bound} to vanadium and in case vanadium 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-04-08T00:49:39.103509" elapsed="0.001569"/>
</kw>
<msg time="2026-04-08T00:49:39.105206" 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-04-08T00:49:39.095443" elapsed="0.009810"/>
</kw>
<arg>Collections.Remove Values From List</arg>
<arg>${SHARD_OPER_LIST}</arg>
<arg>entity-ownership</arg>
<doc>Compare phosphorus to vanadium and in case vanadium is at least phosphorus,
run ${kw_name} @{varargs} &amp;{kwargs} and return its value.</doc>
<status status="PASS" start="2026-04-08T00:49:39.095019" elapsed="0.010309"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:39.105774" 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-04-08T00:49:39.105518" elapsed="0.000300"/>
</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-04-08T00:49:39.111078" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:49:39.110664" elapsed="0.000442"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:49:39.111586" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:49:39.111283" elapsed="0.000329"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:49:39.111659" elapsed="0.000033"/>
</return>
<msg time="2026-04-08T00:49:39.111819" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:49:39.110293" elapsed="0.001550"/>
</kw>
<kw name="Sort List" owner="Collections">
<arg>${index_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="PASS" start="2026-04-08T00:49:39.111995" elapsed="0.000187"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:49:39.112801" level="INFO">${ds_type} = operational</msg>
<var>${ds_type}</var>
<arg>'${shard_type}' != 'config'</arg>
<arg>operational</arg>
<arg>config</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:49:39.112463" elapsed="0.000364"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:49:39.113247" level="INFO">${leader_list} = []</msg>
<var>${leader_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:49:39.112983" elapsed="0.000289"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:49:39.113653" level="INFO">${follower_list} = []</msg>
<var>${follower_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:49:39.113418" elapsed="0.000260"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_Raft_State_Of_Shard_At_Member" owner="ClusterManagement">
<kw name="Get_Raft_Property_From_Shard_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:49:39.116183" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:49:39.115814" elapsed="0.000398"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:49:39.116260" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:49:39.116406" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:49:39.115472" elapsed="0.000959"/>
</kw>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Get_As_Json_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:49:39.199050" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:49:39.198644" elapsed="0.000440"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:49:39.199949" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:49:39.199623" elapsed="0.000425">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-08T00:49:39.200144" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:49:39.199274" elapsed="0.000919"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:49:39.200744" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:49:39.200359" elapsed="0.000412"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T00:49:39.201075" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-08T00:49:39.201273" level="INFO">${template} = /rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T00:49:39.200931" elapsed="0.000369"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:39.201709" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:39.201461" elapsed="0.000355"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:39.202825" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:39.202570" elapsed="0.000299"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-08T00:49:39.203362" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-08T00:49:39.203026" elapsed="0.000363"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:39.203737" elapsed="0.000022"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:39.203941" elapsed="0.000023"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:39.204116" elapsed="0.000020"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-08T00:49:39.203602" elapsed="0.000593"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-08T00:49:39.203450" elapsed="0.000778"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-08T00:49:39.204280" elapsed="0.000034"/>
</return>
<msg time="2026-04-08T00:49:39.204448" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-08T00:49:39.202250" elapsed="0.002224"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:39.201902" elapsed="0.002604"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:39.204679" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:39.204532" elapsed="0.000202"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:39.201876" elapsed="0.002878"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:49:39.205367" level="INFO">${final_text} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:49:39.204895" elapsed="0.000499"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T00:49:39.205442" 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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="PASS" start="2026-04-08T00:49:39.197986" elapsed="0.007578"/>
</kw>
<msg time="2026-04-08T00:49:39.205617" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:49:39.185814" elapsed="0.019889"/>
</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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:39.217772" elapsed="0.000042"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:39.229707" elapsed="0.000041"/>
</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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:39.241598" elapsed="0.000043"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:39.242388" elapsed="0.000038"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:39.243147" elapsed="0.000053"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:39.243788" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:39.243638" elapsed="0.000262"/>
</branch>
<status status="NOT RUN" start="2026-04-08T00:49:39.243620" elapsed="0.000305"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:39.244089" elapsed="0.000024"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:39.244303" elapsed="0.000025"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:39.244492" elapsed="0.000022"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-08T00:49:39.243566" elapsed="0.001002"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-08T00:49:39.243297" elapsed="0.001312"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:39.245338" elapsed="0.000035"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-08T00:49:39.245455" elapsed="0.000050"/>
</return>
<msg time="2026-04-08T00:49:39.245693" level="INFO">${uri} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-08T00:49:39.179605" elapsed="0.066197"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:49:39.248765" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:49:39.248459" elapsed="0.000395">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-08T00:49:39.249048" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:49:39.247977" elapsed="0.001116"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:39.249631" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:39.249246" elapsed="0.000453"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:49:39.250360" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:49:39.250023" elapsed="0.000363"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:39.249736" elapsed="0.000698"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:39.249193" elapsed="0.001279"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:49:39.253629" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:49:39.251318" elapsed="0.002358"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-08T00:49:39.253753" elapsed="0.000117"/>
</return>
<msg time="2026-04-08T00:49:39.254130" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:49:39.246800" elapsed="0.007456"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:49:39.257133" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:49:39.256881" elapsed="0.000369">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-08T00:49:39.257440" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:49:39.256449" elapsed="0.001035"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-08T00:49:39.257862" elapsed="0.000078"/>
</return>
<status status="PASS" start="2026-04-08T00:49:39.257613" elapsed="0.000394"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:39.257562" elapsed="0.000483"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:39.258830" elapsed="0.000036"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:39.259638" elapsed="0.000038"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-08T00:49:39.259750" elapsed="0.000047"/>
</return>
<msg time="2026-04-08T00:49:39.261894" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:49:39.255096" elapsed="0.006908"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:39.265889" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:39.265496" elapsed="0.000493"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:39.267116" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:39.266735" elapsed="0.000498"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:49:40.182743" level="INFO">GET Request : url=http://10.30.170.48:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 path_url=/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:49:40.187618" level="INFO">GET Response : url=http://10.30.170.48:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 status=200, reason=OK 
 headers={'Set-Cookie': 'JSESSIONID=node01nfu2ssrokr1es5zgka78rw970.node0; Path=/rests; HttpOnly, rememberMe=deleteMe; Path=/rests; Max-Age=0; Expires=Tue, 07-Apr-2026 00:49:40 GMT; SameSite=lax', 'Expires': 'Thu, 01 Jan 1970 00:00:00 GMT', 'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Transfer-Encoding': 'chunked'} 
 body={"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","hidden-symmetric-keys","encrypted-private-keys","asymmetrically-encrypted-value-format","cms-encrypted-data-format","cleartext-private-keys","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["ssh-client-keepalives","client-ident-hostbased","client-ident-publickey","client-ident-password"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-ex... (set the log level to DEBUG or TRACE to see the full content) 
 </msg>
<msg time="2026-04-08T00:49:40.188142" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:49:39.269481" elapsed="0.918762"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:39.267361" elapsed="0.921038"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:40.189135" elapsed="0.000100"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:40.188514" elapsed="0.000841"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:39.267310" elapsed="0.922127"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:40.194589" level="INFO">{"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","hidden-symmetric-keys","encrypted-private-keys","asymmetrically-encrypted-value-format","cms-encrypted-data-format","cleartext-private-keys","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["ssh-client-keepalives","client-ident-hostbased","client-ident-publickey","client-ident-password"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-experimenter-types?revision=2015-10-20","namespace":"urn:opendaylight:openflowplugin:experimenter:types","conformance-type":"import"},{"name":"ietf-ip_2018-02-22","revision":"2018-02-22","schema":"/rests/modules/ietf-ip?revision=2018-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-ip","conformance-type":"import","feature":["ipv6-privacy-autoconf","ipv4-non-contiguous-netmasks"]},{"name":"ietf-tcp-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-client","conformance-type":"import","feature":["local-binding-supported","tcp-client-keepalives"]},{"name":"node-config_2014-10-15","revision":"2014-10-15","schema":"/rests/modules/node-config?revision=2014-10-15","namespace":"urn:opendaylight:module:config","conformance-type":"import"},{"name":"ietf-restconf_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf","conformance-type":"import"},{"name":"ietf-datastores_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-datastores?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-datastores","conformance-type":"import"},{"name":"ietf-yang-patch_2017-02-22","revision":"2017-02-22","schema":"/rests/modules/ietf-yang-patch?revision=2017-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-patch","conformance-type":"import"},{"name":"sal-group_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-group?revision=2013-09-18","namespace":"urn:opendaylight:group:service","conformance-type":"import"},{"name":"odl-codegen-extensions_2024-06-27","revision":"2024-06-27","schema":"/rests/modules/odl-codegen-extensions?revision=2024-06-27","namespace":"urn:opendaylight:yang:extension:codegen","conformance-type":"import"},{"name":"sal-meter_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-meter?revision=2013-09-18","namespace":"urn:opendaylight:meter:service","conformance-type":"import"},{"name":"ietf-interfaces_2018-02-20","revision":"2018-02-20","schema":"/rests/modules/ietf-interfaces?revision=2018-02-20","namespace":"urn:ietf:params:xml:ns:yang:ietf-interfaces","conformance-type":"import","feature":["pre-provisioning","if-mib","arbitrary-names"]},{"name":"opendaylight-l2-types_2013-08-27","revision":"2013-08-27","schema":"/rests/modules/opendaylight-l2-types?revision=2013-08-27","namespace":"urn:opendaylight:l2:types","conformance-type":"import"},{"name":"opendaylight-flow-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-flow-types?revision=2013-10-26","namespace":"urn:opendaylight:flow:types","conformance-type":"import"},{"name":"lldp-speaker-config_2016-05-12","revision":"2016-05-12","schema":"/rests/modules/lldp-speaker-config?revision=2016-05-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker:config","conformance-type":"import"},{"name":"aaa-cert_2015-11-26","revision":"2015-11-26","schema":"/rests/modules/aaa-cert?revision=2015-11-26","namespace":"urn:opendaylight:yang:aaa:cert","conformance-type":"import"},{"name":"openflow-action_2015-02-03","revision":"2015-02-03","schema":"/rests/modules/openflow-action?revision=2015-02-03","namespace":"urn:opendaylight:openflow:common:action","conformance-type":"import"},{"name":"openflow-approved-extensions_2016-08-02","revision":"2016-08-02","schema":"/rests/modules/openflow-approved-extensions?revision=2016-08-02","namespace":"urn:opendaylight:openflow:approved:extensions","conformance-type":"import"},{"name":"nc-notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/nc-notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netmod:notification","conformance-type":"import"},{"name":"ietf-netconf-nmda_2019-01-07","revision":"2019-01-07","schema":"/rests/modules/ietf-netconf-nmda?revision=2019-01-07","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-nmda","conformance-type":"import","feature":["with-defaults","origin"]},{"name":"ietf-tcp-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-common","conformance-type":"import","feature":["keepalives-supported"]},{"name":"network-topology_2013-10-21","revision":"2013-10-21","schema":"/rests/modules/network-topology?revision=2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:network-topology","conformance-type":"import"},{"name":"aaa-encrypt-service-config_2024-02-02","revision":"2024-02-02","schema":"/rests/modules/aaa-encrypt-service-config?revision=2024-02-02","namespace":"config:aaa:authn:encrypt:service:config","conformance-type":"import"},{"name":"openflow-instruction_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-instruction?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:instruction","conformance-type":"import"},{"name":"ietf-tls-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-client","conformance-type":"import","feature":["client-ident-x509-cert","server-auth-x509-cert"]},{"name":"opendaylight-group-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-group-statistics?revision=2013-11-11","namespace":"urn:opendaylight:group:statistics","conformance-type":"import"},{"name":"cluster-admin_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/cluster-admin?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:cluster:admin","conformance-type":"import"},{"name":"opendaylight-flow-statistics_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-flow-statistics?revision=2013-08-19","namespace":"urn:opendaylight:flow:statistics","conformance-type":"import"},{"name":"opendaylight-table-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-table-types?revision=2013-10-26","namespace":"urn:opendaylight:table:types","conformance-type":"import"},{"name":"forwarding-rules-manager-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/forwarding-rules-manager-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:forwardingrules-manager:config","conformance-type":"import"},{"name":"odl-srm-types_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-types?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:types","conformance-type":"import"},{"name":"ietf-x509-cert-to-name_2014-12-10","revision":"2014-12-10","schema":"/rests/modules/ietf-x509-cert-to-name?revision=2014-12-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-x509-cert-to-name","conformance-type":"import"},{"name":"flow-node-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-node-inventory?revision=2013-08-19","namespace":"urn:opendaylight:flow:inventory","conformance-type":"import"},{"name":"flow-errors_2013-11-16","revision":"2013-11-16","schema":"/rests/modules/flow-errors?revision=2013-11-16","namespace":"urn:opendaylight:flow:errors","conformance-type":"import"},{"name":"ietf-netconf_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:netconf:base:1.0","conformance-type":"import","feature":["xpath","url","rollback-on-error","validate","startup","candidate","confirmed-commit","writable-running"]},{"name":"iana-ssh-public-key-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-public-key-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-public-key-algs","conformance-type":"import"},{"name":"aaa-cert-mdsal_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/aaa-cert-mdsal?revision=2016-03-21","namespace":"urn:opendaylight:yang:aaa:cert:mdsal","conformance-type":"import"},{"name":"odl-device-notification_2024-02-18","revision":"2024-02-18","schema":"/rests/modules/odl-device-notification?revision=2024-02-18","namespace":"urn:opendaylight:device:notification","conformance-type":"import"},{"name":"ietf-origin_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-origin?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-origin","conformance-type":"import"},{"name":"openflow-augments_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-augments?revision=2015-02-25","namespace":"urn:opendaylight:openflow:augments","conformance-type":"import"},{"name":"iana-ssh-encryption-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-encryption-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-encryption-algs","conformance-type":"import"},{"name":"ietf-truststore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-truststore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-truststore","conformance-type":"import","feature":["inline-definitions-supported"]},{"name":"distributed-datastore-provider_2025-01-30","revision":"2025-01-30","schema":"/rests/modules/distributed-datastore-provider?revision=2025-01-30","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:distributed-datastore-provider","conformance-type":"import"},{"name":"opendaylight-group-types_2013-10-18","revision":"2013-10-18","schema":"/rests/modules/opendaylight-group-types?revision=2013-10-18","namespace":"urn:opendaylight:group:types","conformance-type":"import"},{"name":"sal-remote-augment_2023-11-03","revision":"2023-11-03","schema":"/rests/modules/sal-remote-augment?revision=2023-11-03","namespace":"urn:sal:restconf:event:subscription","conformance-type":"import"},{"name":"opendaylight-ipv6-arbitrary-bitmask-fields_2016-02-24","revision":"2016-02-24","schema":"/rests/modules/opendaylight-ipv6-arbitrary-bitmask-fields?revision=2016-02-24","namespace":"urn:opendaylight:opendaylight-ipv6-arbitrary-bitmask-fields","conformance-type":"import"},{"name":"sal-flows-batch_2016-03-14","revision":"2016-03-14","schema":"/rests/modules/sal-flows-batch?revision=2016-03-14","namespace":"urn:opendaylight:flows:service","conformance-type":"import"},{"name":"ietf-tls-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-common","conformance-type":"import","feature":["tls12","hello-params","tls13"]},{"name":"openflow-types_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-types?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:types","conformance-type":"import"},{"name":"ietf-netconf-with-defaults_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf-with-defaults?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults","conformance-type":"import"},{"name":"odl-srm-ops_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-ops?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:ops","conformance-type":"import"},{"name":"odl-general-entity_2015-09-30","revision":"2015-09-30","schema":"/rests/modules/odl-general-entity?revision=2015-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:mdsal:core:general-entity","conformance-type":"import"},{"name":"iana-ssh-key-exchange-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-key-exchange-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-key-exchange-algs","conformance-type":"import"},{"name":"node-ssl-connection-error_2019-07-23","revision":"2019-07-23","schema":"/rests/modules/node-ssl-connection-error?revision=2019-07-23","namespace":"urn:opendaylight:node-ssl-connection-error:service","conformance-type":"import"},{"name":"openflow-protocol_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-protocol?revision=2013-07-31","namespace":"urn:opendaylight:openflow:protocol","conformance-type":"import"},{"name":"ietf-udp-server_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-server?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-server","conformance-type":"import"},{"name":"ietf-keystore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-keystore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-keystore","conformance-type":"import","feature":["asymmetric-keys","inline-definitions-supported"]},{"name":"aaa_2016-12-14","revision":"2016-12-14","schema":"/rests/modules/aaa?revision=2016-12-14","namespace":"urn:opendaylight:params:xml:ns:yang:aaa","conformance-type":"import"},{"name":"aaa-cert-rpc_2015-12-15","revision":"2015-12-15","schema":"/rests/modules/aaa-cert-rpc?revision=2015-12-15","namespace":"urn:opendaylight:yang:aaa:cert:rpc","conformance-type":"import"},{"name":"system-notifications_2013-09-27","revision":"2013-09-27","schema":"/rests/modules/system-notifications?revision=2013-09-27","namespace":"urn:opendaylight:openflow:system","conformance-type":"import"},{"name":"sal-flat-batch_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/sal-flat-batch?revision=2016-03-21","namespace":"urn:opendaylight:flat-batch:service","conformance-type":"import"},{"name":"notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netconf:notification:1.0","conformance-type":"import"},{"name":"sal-remote_2014-01-14","revision":"2014-01-14","schema":"/rests/modules/sal-remote?revision=2014-01-14","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:remote","conformance-type":"import"},{"name":"yang-ext_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/yang-ext?revision=2013-07-09","namespace":"urn:opendaylight:yang:extension:yang-ext","conformance-type":"import"},{"name":"opendaylight-multipart-types_2017-01-12","revision":"2017-01-12","schema":"/rests/modules/opendaylight-multipart-types?revision=2017-01-12","namespace":"urn:opendaylight:multipart:types","conformance-type":"import"},{"name":"opendaylight-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-inventory?revision=2013-08-19","namespace":"urn:opendaylight:inventory","conformance-type":"import"},{"name":"sal-queue_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-queue?revision=2015-03-05","namespace":"urn:opendaylight:queue:service","conformance-type":"import"},{"name":"sal-groups-batch_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/sal-groups-batch?revision=2016-03-15","namespace":"urn:opendaylight:groups:service","conformance-type":"import"},{"name":"arbitrator-reconcile_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/arbitrator-reconcile?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:arbitrator-reconcile:service","conformance-type":"import"},{"name":"ietf-yang-metadata_2016-08-05","revision":"2016-08-05","schema":"/rests/modules/ietf-yang-metadata?revision=2016-08-05","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-metadata","conformance-type":"import"},{"name":"opendaylight-arbitrary-bitmask-fields_2016-01-30","revision":"2016-01-30","schema":"/rests/modules/opendaylight-arbitrary-bitmask-fields?revision=2016-01-30","namespace":"urn:opendaylight:arbitrary:bitmask:fields","conformance-type":"import"},{"name":"ietf-udp-client_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-client?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-client","conformance-type":"import","feature":["local-binding"]},{"name":"opendaylight-meter-types_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/opendaylight-meter-types?revision=2013-09-18","namespace":"urn:opendaylight:meter:types","conformance-type":"import"},{"name":"opendaylight-action-types_2013-11-12","revision":"2013-11-12","schema":"/rests/modules/opendaylight-action-types?revision=2013-11-12","namespace":"urn:opendaylight:action:types","conformance-type":"import"},{"name":"sal-role_2015-07-27","revision":"2015-07-27","schema":"/rests/modules/sal-role?revision=2015-07-27","namespace":"urn:opendaylight:role:service","conformance-type":"import"},{"name":"openflow-provider-config_2016-05-10","revision":"2016-05-10","schema":"/rests/modules/openflow-provider-config?revision=2016-05-10","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:provider:config","conformance-type":"import"},{"name":"odl-serviceutils-upgrade_2018-07-02","revision":"2018-07-02","schema":"/rests/modules/odl-serviceutils-upgrade?revision=2018-07-02","namespace":"urn:opendaylight:serviceutils:upgrade","conformance-type":"import"},{"name":"opendaylight-match-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-match-types?revision=2013-10-26","namespace":"urn:opendaylight:model:match:types","conformance-type":"import"},{"name":"ietf-restconf-server_2024-08-14","revision":"2024-08-14","schema":"/rests/modules/ietf-restconf-server?revision=2024-08-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-server","conformance-type":"import","feature":["http-listen","https-listen"]},{"name":"reconciliation-result-state_2017-07-13","revision":"2017-07-13","schema":"/rests/modules/reconciliation-result-state?revision=2017-07-13","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:rf:state","conformance-type":"import"},{"name":"onf-extensions_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/onf-extensions?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf","conformance-type":"import"},{"name":"sal-table_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/sal-table?revision=2013-10-26","namespace":"urn:opendaylight:table:service","conformance-type":"import"},{"name":"iana-http-versions_2026-02-04","revision":"2026-02-04","schema":"/rests/modules/iana-http-versions?revision=2026-02-04","namespace":"urn:ietf:params:xml:ns:yang:iana-http-versions","conformance-type":"import"},{"name":"opendaylight-direct-statistics_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/opendaylight-direct-statistics?revision=2016-05-11","namespace":"urn:opendaylight:direct:statistics","conformance-type":"import"},{"name":"opendaylight-port-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-port-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:port","conformance-type":"import"},{"name":"sal-async-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/sal-async-config?revision=2017-06-19","namespace":"urn:opendaylight:async-config:service","conformance-type":"import"},{"name":"aaa-password-service-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-password-service-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:password:service:config","conformance-type":"import"},{"name":"ietf-yang-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-yang-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-types","conformance-type":"import"},{"name":"opendaylight-queue-statistics_2013-12-16","revision":"2013-12-16","schema":"/rests/modules/opendaylight-queue-statistics?revision=2013-12-16","namespace":"urn:opendaylight:queue:statistics","conformance-type":"import"},{"name":"sal-bundle_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/sal-bundle?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf:bundle:service","conformance-type":"import"},{"name":"ietf-restconf-subscribed-notifications_2019-11-17","revision":"2019-11-17","schema":"/rests/modules/ietf-restconf-subscribed-notifications?revision=2019-11-17","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-subscribed-notifications","conformance-type":"import"},{"name":"sal-meters-batch_2016-03-16","revision":"2016-03-16","schema":"/rests/modules/sal-meters-batch?revision=2016-03-16","namespace":"urn:opendaylight:meters:service","conformance-type":"import"},{"name":"odl-entity-owners","revision":"","schema":"/rests/modules/odl-entity-owners","namespace":"urn:opendaylight:params:xml:ns:yang:controller:entity-owners","conformance-type":"import"},{"name":"sal-experimenter-mp-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-mp-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-mp-message:service","conformance-type":"import"},{"name":"packet-processing_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/packet-processing?revision=2013-07-09","namespace":"urn:opendaylight:packet:service","conformance-type":"import"},{"name":"openflow-configuration_2014-06-30","revision":"2014-06-30","schema":"/rests/modules/openflow-configuration?revision=2014-06-30","namespace":"urn:opendaylight:openflow:config","conformance-type":"import"},{"name":"odl-srm-rpcs_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-rpcs?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:rpc","conformance-type":"import"},{"name":"ietf-netconf-acm_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-netconf-acm?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-acm","conformance-type":"import"},{"name":"iana-crypt-hash_2014-08-06","revision":"2014-08-06","schema":"/rests/modules/iana-crypt-hash?revision=2014-08-06","namespace":"urn:ietf:params:xml:ns:yang:iana-crypt-hash","conformance-type":"import","feature":["crypt-hash-sha-512","crypt-hash-sha-256","crypt-hash-md5"]},{"name":"openflow-extensible-match_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-extensible-match?revision=2015-02-25","namespace":"urn:opendaylight:openflow:oxm","conformance-type":"import"}],"module-set-id":"2"}}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:40.191784" elapsed="0.003153"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:40.191534" elapsed="0.003441"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:40.191511" elapsed="0.003489"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:40.197491" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:40.195329" elapsed="0.002208"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:40.195085" elapsed="0.002487"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:40.195066" elapsed="0.002530"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:49:40.201267" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:49:40.197795" elapsed="0.003501"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:40.201634" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:40.201392" elapsed="0.000301"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:49:40.202228" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:49:40.201877" elapsed="0.000378"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:40.201716" elapsed="0.000575"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:40.201372" elapsed="0.000941"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:49:40.202863" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:49:40.202493" elapsed="0.000397"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:40.203232" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:40.202982" elapsed="0.000308"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:49:40.203770" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:49:40.203471" elapsed="0.000325"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:40.203313" elapsed="0.000518"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:40.202962" elapsed="0.000890"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:49:40.204024" elapsed="0.000378"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:49:40.205018" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:49:40.204586" elapsed="0.000459"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:49:40.205240" elapsed="0.002202"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:49:40.190730" elapsed="0.016835"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:49:40.207914" elapsed="0.000049"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:49:40.207694" elapsed="0.000341"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:40.207642" elapsed="0.000430"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:49:40.217043" level="INFO">${text_normalized} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:49:40.208803" elapsed="0.008290"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:49:40.217258" elapsed="0.000074"/>
</return>
<msg time="2026-04-08T00:49:40.217594" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:49:39.262771" elapsed="0.954931"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:49:40.218190" elapsed="0.000031"/>
</return>
<msg time="2026-04-08T00:49:40.218373" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="PASS" start="2026-04-08T00:49:39.124527" elapsed="1.093874"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Json_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:40.218740" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:40.218488" elapsed="0.000442"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:40.218470" elapsed="0.000486"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:49:40.218991" elapsed="0.000026"/>
</return>
<arg>session=${session}</arg>
<arg>folder=${RESTCONF_MODULES_DIR}</arg>
<arg>verify=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Add arguments sensible for JSON data, return Get_Templated response text.
Optionally, verification against JSON data (may be iterated) is called.
Only subset of JSON data is verified and returned if JMES path is specified in
file ${folder}/jmespath.expr.</doc>
<status status="PASS" start="2026-04-08T00:49:39.120508" elapsed="1.098609"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:39.116503" elapsed="1.102675"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:39.116484" elapsed="1.102720"/>
</if>
<kw name="Resolve_Shard_Type_Class" owner="ClusterManagement">
<if>
<branch type="IF" condition="'${shard_type}' == 'config'">
<return>
<value>DistributedConfigDatastore</value>
<status status="NOT RUN" start="2026-04-08T00:49:40.219816" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:49:40.219707" elapsed="0.000153"/>
</branch>
<branch type="ELSE IF" condition="'${shard_type}' == 'operational'">
<return>
<value>DistributedOperationalDatastore</value>
<status status="PASS" start="2026-04-08T00:49:40.219983" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-08T00:49:40.219882" elapsed="0.000158"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:40.219689" elapsed="0.000374"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized shard type: ${shard_type}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:40.220230" elapsed="0.000023"/>
</kw>
<msg time="2026-04-08T00:49:40.220351" level="INFO">${type_class} = DistributedOperationalDatastore</msg>
<var>${type_class}</var>
<arg>shard_type=${shard_type}</arg>
<doc>Simple lookup for class name corresponding to desired type.</doc>
<status status="PASS" start="2026-04-08T00:49:40.219432" elapsed="0.000945"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:49:40.220922" level="INFO">${cluster_index} = 1</msg>
<var>${cluster_index}</var>
<arg>${member_index}+${NODE_ROLE_INDEX_START}-1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:49:40.220544" elapsed="0.000405"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:49:40.221593" level="INFO">${uri} = jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-inventory-operational,type=DistributedOperationalDatastore</msg>
<var>${uri}</var>
<arg>${JOLOKIA_READ_URI}:Category=Shards,name=member-${cluster_index}-shard-${shard_name}-${shard_type},type=${type_class}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:49:40.221102" elapsed="0.000519"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:40.228413" level="INFO">jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-inventory-operational,type=DistributedOperationalDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:40.227926" elapsed="0.000536"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:40.229054" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:40.228617" elapsed="0.000482"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:49:40.266044" level="INFO">GET Request : url=http://10.30.170.48:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-inventory-operational,type=DistributedOperationalDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-inventory-operational,type=DistributedOperationalDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:49:40.266469" level="INFO">GET Response : url=http://10.30.170.48:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-inventory-operational,type=DistributedOperationalDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Wed, 08 Apr 2026 00:49:40 GMT', 'Expires': 'Tue, 07 Apr 2026 23:49:40 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-1-shard-inventory-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"ReadWriteTransactionCount":3,"SnapshotIndex":4,"InMemoryJournalLogSize":1,"ReplicatedToAllIndex":4,"Leader":"member-1-shard-inventory-operational","LastIndex":5,"RaftState":"Leader","LastApplied":5,"LastCommittedTransactionTime":"2026-04-08 00:46:47.000","PeerAddresses":"member-3-shard-inventory-operational: pekko:\/\/opendaylight-cluster-data@10.30.171.110:2550\/user\/shardmanager-operational\/member-3-shard-inventory-operational, member-2-shard-inventory-operational: pekko:\/\/opendaylight-cluster-data@10.30.170.131:2550\/user\/shardmanager-operational\/member-2-shard-inventory-operational","LastLogIndex":5,"LastLeadershipChangeTime":"2026-04-08 00:46:45.929","FollowerInitialSyncStatus":false,"FollowerInfo":[{"timeSinceLastActivity":"00:00:00.175","active":true,"matchIndex":5,"voting":true,"id":"member-3-shard-inventory-operational","nextIndex":6},{"timeSinceLastActivity":"00:00:00.175","active":true,"matchIndex":5,"voting":true,"id":"member-2-shard-inventory-operational","nextIndex":6}],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"3.028 ms","CurrentTerm":2,"LastTerm":2,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-inventory-operational","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":3,"TxCohortCacheSize":0,"PeerVotingStates":"member-3-shard-inventory-operational: true, member-2-shard-inventory-operational: true","LastLogTerm":2,"StatRetrievalError":null,"CommitIndex":5,"SnapshotTerm":2,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-1-shard-inventory-operational","LeadershipChangeCount":1,"InMemoryJournalDataSize":267},"timestamp":1775609380,"status":200} 
 </msg>
<msg time="2026-04-08T00:49:40.266952" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:49:40.239835" elapsed="0.027400"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:40.229246" elapsed="0.038591"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:40.268306" elapsed="0.000055"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:40.267910" elapsed="0.001202"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:40.229149" elapsed="0.040060"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:40.276494" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-1-shard-inventory-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"ReadWriteTransactionCount":3,"SnapshotIndex":4,"InMemoryJournalLogSize":1,"ReplicatedToAllIndex":4,"Leader":"member-1-shard-inventory-operational","LastIndex":5,"RaftState":"Leader","LastApplied":5,"LastCommittedTransactionTime":"2026-04-08 00:46:47.000","PeerAddresses":"member-3-shard-inventory-operational: pekko:\/\/opendaylight-cluster-data@10.30.171.110:2550\/user\/shardmanager-operational\/member-3-shard-inventory-operational, member-2-shard-inventory-operational: pekko:\/\/opendaylight-cluster-data@10.30.170.131:2550\/user\/shardmanager-operational\/member-2-shard-inventory-operational","LastLogIndex":5,"LastLeadershipChangeTime":"2026-04-08 00:46:45.929","FollowerInitialSyncStatus":false,"FollowerInfo":[{"timeSinceLastActivity":"00:00:00.175","active":true,"matchIndex":5,"voting":true,"id":"member-3-shard-inventory-operational","nextIndex":6},{"timeSinceLastActivity":"00:00:00.175","active":true,"matchIndex":5,"voting":true,"id":"member-2-shard-inventory-operational","nextIndex":6}],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"3.028 ms","CurrentTerm":2,"LastTerm":2,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-inventory-operational","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":3,"TxCohortCacheSize":0,"PeerVotingStates":"member-3-shard-inventory-operational: true, member-2-shard-inventory-operational: true","LastLogTerm":2,"StatRetrievalError":null,"CommitIndex":5,"SnapshotTerm":2,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-1-shard-inventory-operational","LeadershipChangeCount":1,"InMemoryJournalDataSize":267},"timestamp":1775609380,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:40.272989" elapsed="0.003678"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:40.271768" elapsed="0.004971"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:40.271739" elapsed="0.005054"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:40.280914" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:40.278188" elapsed="0.002827"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:40.276912" elapsed="0.004154"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:40.276885" elapsed="0.004219"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:49:40.282723" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:49:40.281809" elapsed="0.000982"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:40.283474" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:40.282963" elapsed="0.000601"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:49:40.284498" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:49:40.283954" elapsed="0.000593"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:40.283604" elapsed="0.000996"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:40.282942" elapsed="0.001696"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:49:40.286292" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:49:40.285286" elapsed="0.001072"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:40.287073" elapsed="0.000040"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:40.286561" elapsed="0.000671"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:49:40.288140" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:49:40.287612" elapsed="0.000593"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:40.287275" elapsed="0.000982"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:40.286535" elapsed="0.001758"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:49:40.288522" elapsed="0.000672"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:49:40.290040" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:49:40.289509" elapsed="0.000593"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:49:40.290425" elapsed="0.002444"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:49:40.270446" elapsed="0.022597"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:49:40.293271" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:49:40.293119" elapsed="0.000201"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:40.293099" elapsed="0.000244"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:49:40.297141" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-1-shard-inventory-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestam...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:49:40.293492" elapsed="0.003696"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:49:40.297282" elapsed="0.000039"/>
</return>
<msg time="2026-04-08T00:49:40.297458" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-1-shard-inventory-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestam...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:49:40.222603" elapsed="0.074883"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:49:40.297546" elapsed="0.000027"/>
</return>
<msg time="2026-04-08T00:49:40.297697" level="INFO">${data_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-1-shard-inventory-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestam...</msg>
<var>${data_text}</var>
<arg>uri=${uri}</arg>
<arg>session=${session}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-08T00:49:40.221832" elapsed="0.075892"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:49:40.298847" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-1-shard-inventory-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1775609...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:49:40.298364" elapsed="0.000513"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-08T00:49:40.298929" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:49:40.299116" level="INFO">${data_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-1-shard-inventory-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1775609...</msg>
<var>${data_object}</var>
<arg>${data_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-08T00:49:40.297955" elapsed="0.001189"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:49:40.299629" level="INFO">${value} = {'AbortTransactionsCount': 0, 'CommitIndex': 5, 'CommittedTransactionsCount': 3, 'CurrentTerm': 2, 'FailedReadTransactionsCount': 0, 'FailedTransactionsCount': 0, 'FollowerInfo': [{'active': True, 'id...</msg>
<var>${value}</var>
<arg>${data_object}</arg>
<arg>value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:49:40.299418" elapsed="0.000239"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:49:40.300023" level="INFO">${raft_property} = Leader</msg>
<var>${raft_property}</var>
<arg>${value}</arg>
<arg>${property}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:49:40.299813" elapsed="0.000240"/>
</kw>
<return>
<value>${raft_property}</value>
<status status="PASS" start="2026-04-08T00:49:40.300102" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:49:40.300275" level="INFO">${raft_state} = Leader</msg>
<var>${raft_state}</var>
<arg>RaftState</arg>
<arg>${shard_name}</arg>
<arg>${shard_type}</arg>
<arg>${member_index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft property.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T00:49:39.114822" elapsed="1.185479"/>
</kw>
<return>
<value>${raft_state}</value>
<status status="PASS" start="2026-04-08T00:49:40.300359" elapsed="0.000026"/>
</return>
<msg time="2026-04-08T00:49:40.300510" level="INFO">${raft_state} = Leader</msg>
<var>${raft_state}</var>
<arg>shard_name=${shard_name}</arg>
<arg>shard_type=${ds_type}</arg>
<arg>member_index=${index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft status.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T00:49:39.114095" elapsed="1.186440"/>
</kw>
<if>
<branch type="IF" condition="'Follower' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${follower_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:40.300835" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:40.300616" elapsed="0.000277"/>
</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="PASS" start="2026-04-08T00:49:40.301133" elapsed="0.000218"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:40.300917" elapsed="0.000473"/>
</branch>
<branch type="ELSE IF" condition="${validate}">
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized Raft state: ${raft_state}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:40.301562" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:40.301415" elapsed="0.000200"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:40.300599" elapsed="0.001039"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T00:49:39.113929" elapsed="1.187733"/>
</iter>
<iter>
<kw name="Get_Raft_State_Of_Shard_At_Member" owner="ClusterManagement">
<kw name="Get_Raft_Property_From_Shard_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:49:40.304469" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:49:40.304103" elapsed="0.000395"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:49:40.304547" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:49:40.304699" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:49:40.303745" elapsed="0.000980"/>
</kw>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Get_As_Json_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:49:40.391449" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:49:40.390878" elapsed="0.000607"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:49:40.392457" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:49:40.392136" elapsed="0.000409">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-08T00:49:40.392641" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:49:40.391772" elapsed="0.000894"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:49:40.393274" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:49:40.392843" elapsed="0.000459"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T00:49:40.393616" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-08T00:49:40.393791" level="INFO">${template} = /rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T00:49:40.393469" elapsed="0.000350"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:40.394258" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:40.393982" elapsed="0.000323"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:40.395375" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:40.395094" elapsed="0.000326"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-08T00:49:40.396083" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-08T00:49:40.395582" elapsed="0.000529"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:40.396480" elapsed="0.000024"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:40.396693" elapsed="0.000024"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:40.396880" elapsed="0.000023"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-08T00:49:40.396340" elapsed="0.000601"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-08T00:49:40.396186" elapsed="0.000787"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-08T00:49:40.397023" elapsed="0.000033"/>
</return>
<msg time="2026-04-08T00:49:40.397215" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-08T00:49:40.394768" elapsed="0.002474"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:40.394407" elapsed="0.002869"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:40.397454" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:40.397303" elapsed="0.000210"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:40.394380" elapsed="0.003155"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:49:40.398152" level="INFO">${final_text} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:49:40.397679" elapsed="0.000519"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T00:49:40.398249" elapsed="0.000031"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="PASS" start="2026-04-08T00:49:40.390025" elapsed="0.008387"/>
</kw>
<msg time="2026-04-08T00:49:40.398468" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:49:40.377281" elapsed="0.021292"/>
</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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:40.410716" elapsed="0.000043"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:40.423309" elapsed="0.000076"/>
</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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:40.435728" elapsed="0.000048"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:40.436672" elapsed="0.000041"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:40.437476" elapsed="0.000040"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:40.438121" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:40.437964" elapsed="0.000234"/>
</branch>
<status status="NOT RUN" start="2026-04-08T00:49:40.437943" elapsed="0.000283"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:40.438393" elapsed="0.000022"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:40.438612" elapsed="0.000023"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:40.438801" elapsed="0.000022"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-08T00:49:40.437866" elapsed="0.001011"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-08T00:49:40.437609" elapsed="0.001311"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:40.439646" elapsed="0.000036"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-08T00:49:40.439771" elapsed="0.000052"/>
</return>
<msg time="2026-04-08T00:49:40.440030" level="INFO">${uri} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-08T00:49:40.371084" elapsed="0.069066"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:49:40.443230" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:49:40.442888" elapsed="0.000432">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-08T00:49:40.443514" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:49:40.442342" elapsed="0.001215"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:40.444087" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:40.443690" elapsed="0.000468"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:49:40.444788" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:49:40.444491" elapsed="0.000324"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:40.444213" elapsed="0.000649"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:40.443637" elapsed="0.001264"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:49:40.448054" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:49:40.445729" elapsed="0.002372"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-08T00:49:40.448196" elapsed="0.000065"/>
</return>
<msg time="2026-04-08T00:49:40.448517" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:49:40.441204" elapsed="0.007420"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:49:40.451487" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:49:40.451236" elapsed="0.000318">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-08T00:49:40.451744" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:49:40.450785" elapsed="0.001003"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-08T00:49:40.452187" elapsed="0.000082"/>
</return>
<status status="PASS" start="2026-04-08T00:49:40.451920" elapsed="0.000417"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:40.451867" elapsed="0.000509"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:40.453091" elapsed="0.000037"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:40.453983" elapsed="0.000036"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-08T00:49:40.454091" elapsed="0.000047"/>
</return>
<msg time="2026-04-08T00:49:40.456332" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:49:40.449661" elapsed="0.006780"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:40.460340" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:40.459930" elapsed="0.000508"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:40.461510" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:40.461114" elapsed="0.000491"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:49:41.397186" level="INFO">GET Request : url=http://10.30.170.131:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 path_url=/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:49:41.398260" level="INFO">GET Response : url=http://10.30.170.131:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 status=200, reason=OK 
 headers={'Set-Cookie': 'JSESSIONID=node0evogeryo91251obsb096nsda10.node0; Path=/rests; HttpOnly, rememberMe=deleteMe; Path=/rests; Max-Age=0; Expires=Tue, 07-Apr-2026 00:49:41 GMT; SameSite=lax', 'Expires': 'Thu, 01 Jan 1970 00:00:00 GMT', 'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Transfer-Encoding': 'chunked'} 
 body={"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","hidden-symmetric-keys","encrypted-private-keys","asymmetrically-encrypted-value-format","cms-encrypted-data-format","cleartext-private-keys","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["ssh-client-keepalives","client-ident-hostbased","client-ident-publickey","client-ident-password"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-ex... (set the log level to DEBUG or TRACE to see the full content) 
 </msg>
<msg time="2026-04-08T00:49:41.398887" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:49:40.463980" elapsed="0.934983"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:40.461731" elapsed="0.937390"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:41.399939" elapsed="0.000058"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:41.399291" elapsed="0.000821"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:40.461679" elapsed="0.938555"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:41.406823" level="INFO">{"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","hidden-symmetric-keys","encrypted-private-keys","asymmetrically-encrypted-value-format","cms-encrypted-data-format","cleartext-private-keys","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["ssh-client-keepalives","client-ident-hostbased","client-ident-publickey","client-ident-password"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-experimenter-types?revision=2015-10-20","namespace":"urn:opendaylight:openflowplugin:experimenter:types","conformance-type":"import"},{"name":"ietf-ip_2018-02-22","revision":"2018-02-22","schema":"/rests/modules/ietf-ip?revision=2018-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-ip","conformance-type":"import","feature":["ipv6-privacy-autoconf","ipv4-non-contiguous-netmasks"]},{"name":"ietf-tcp-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-client","conformance-type":"import","feature":["local-binding-supported","tcp-client-keepalives"]},{"name":"node-config_2014-10-15","revision":"2014-10-15","schema":"/rests/modules/node-config?revision=2014-10-15","namespace":"urn:opendaylight:module:config","conformance-type":"import"},{"name":"ietf-restconf_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf","conformance-type":"import"},{"name":"ietf-datastores_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-datastores?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-datastores","conformance-type":"import"},{"name":"ietf-yang-patch_2017-02-22","revision":"2017-02-22","schema":"/rests/modules/ietf-yang-patch?revision=2017-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-patch","conformance-type":"import"},{"name":"sal-group_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-group?revision=2013-09-18","namespace":"urn:opendaylight:group:service","conformance-type":"import"},{"name":"odl-codegen-extensions_2024-06-27","revision":"2024-06-27","schema":"/rests/modules/odl-codegen-extensions?revision=2024-06-27","namespace":"urn:opendaylight:yang:extension:codegen","conformance-type":"import"},{"name":"sal-meter_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-meter?revision=2013-09-18","namespace":"urn:opendaylight:meter:service","conformance-type":"import"},{"name":"ietf-interfaces_2018-02-20","revision":"2018-02-20","schema":"/rests/modules/ietf-interfaces?revision=2018-02-20","namespace":"urn:ietf:params:xml:ns:yang:ietf-interfaces","conformance-type":"import","feature":["pre-provisioning","if-mib","arbitrary-names"]},{"name":"opendaylight-l2-types_2013-08-27","revision":"2013-08-27","schema":"/rests/modules/opendaylight-l2-types?revision=2013-08-27","namespace":"urn:opendaylight:l2:types","conformance-type":"import"},{"name":"opendaylight-flow-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-flow-types?revision=2013-10-26","namespace":"urn:opendaylight:flow:types","conformance-type":"import"},{"name":"lldp-speaker-config_2016-05-12","revision":"2016-05-12","schema":"/rests/modules/lldp-speaker-config?revision=2016-05-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker:config","conformance-type":"import"},{"name":"aaa-cert_2015-11-26","revision":"2015-11-26","schema":"/rests/modules/aaa-cert?revision=2015-11-26","namespace":"urn:opendaylight:yang:aaa:cert","conformance-type":"import"},{"name":"openflow-action_2015-02-03","revision":"2015-02-03","schema":"/rests/modules/openflow-action?revision=2015-02-03","namespace":"urn:opendaylight:openflow:common:action","conformance-type":"import"},{"name":"openflow-approved-extensions_2016-08-02","revision":"2016-08-02","schema":"/rests/modules/openflow-approved-extensions?revision=2016-08-02","namespace":"urn:opendaylight:openflow:approved:extensions","conformance-type":"import"},{"name":"nc-notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/nc-notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netmod:notification","conformance-type":"import"},{"name":"ietf-netconf-nmda_2019-01-07","revision":"2019-01-07","schema":"/rests/modules/ietf-netconf-nmda?revision=2019-01-07","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-nmda","conformance-type":"import","feature":["with-defaults","origin"]},{"name":"ietf-tcp-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-common","conformance-type":"import","feature":["keepalives-supported"]},{"name":"network-topology_2013-10-21","revision":"2013-10-21","schema":"/rests/modules/network-topology?revision=2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:network-topology","conformance-type":"import"},{"name":"aaa-encrypt-service-config_2024-02-02","revision":"2024-02-02","schema":"/rests/modules/aaa-encrypt-service-config?revision=2024-02-02","namespace":"config:aaa:authn:encrypt:service:config","conformance-type":"import"},{"name":"openflow-instruction_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-instruction?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:instruction","conformance-type":"import"},{"name":"ietf-tls-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-client","conformance-type":"import","feature":["client-ident-x509-cert","server-auth-x509-cert"]},{"name":"opendaylight-group-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-group-statistics?revision=2013-11-11","namespace":"urn:opendaylight:group:statistics","conformance-type":"import"},{"name":"cluster-admin_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/cluster-admin?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:cluster:admin","conformance-type":"import"},{"name":"opendaylight-flow-statistics_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-flow-statistics?revision=2013-08-19","namespace":"urn:opendaylight:flow:statistics","conformance-type":"import"},{"name":"opendaylight-table-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-table-types?revision=2013-10-26","namespace":"urn:opendaylight:table:types","conformance-type":"import"},{"name":"forwarding-rules-manager-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/forwarding-rules-manager-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:forwardingrules-manager:config","conformance-type":"import"},{"name":"odl-srm-types_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-types?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:types","conformance-type":"import"},{"name":"ietf-x509-cert-to-name_2014-12-10","revision":"2014-12-10","schema":"/rests/modules/ietf-x509-cert-to-name?revision=2014-12-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-x509-cert-to-name","conformance-type":"import"},{"name":"flow-node-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-node-inventory?revision=2013-08-19","namespace":"urn:opendaylight:flow:inventory","conformance-type":"import"},{"name":"flow-errors_2013-11-16","revision":"2013-11-16","schema":"/rests/modules/flow-errors?revision=2013-11-16","namespace":"urn:opendaylight:flow:errors","conformance-type":"import"},{"name":"ietf-netconf_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:netconf:base:1.0","conformance-type":"import","feature":["xpath","url","rollback-on-error","validate","startup","candidate","confirmed-commit","writable-running"]},{"name":"iana-ssh-public-key-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-public-key-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-public-key-algs","conformance-type":"import"},{"name":"aaa-cert-mdsal_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/aaa-cert-mdsal?revision=2016-03-21","namespace":"urn:opendaylight:yang:aaa:cert:mdsal","conformance-type":"import"},{"name":"odl-device-notification_2024-02-18","revision":"2024-02-18","schema":"/rests/modules/odl-device-notification?revision=2024-02-18","namespace":"urn:opendaylight:device:notification","conformance-type":"import"},{"name":"ietf-origin_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-origin?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-origin","conformance-type":"import"},{"name":"openflow-augments_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-augments?revision=2015-02-25","namespace":"urn:opendaylight:openflow:augments","conformance-type":"import"},{"name":"iana-ssh-encryption-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-encryption-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-encryption-algs","conformance-type":"import"},{"name":"ietf-truststore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-truststore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-truststore","conformance-type":"import","feature":["inline-definitions-supported"]},{"name":"distributed-datastore-provider_2025-01-30","revision":"2025-01-30","schema":"/rests/modules/distributed-datastore-provider?revision=2025-01-30","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:distributed-datastore-provider","conformance-type":"import"},{"name":"opendaylight-group-types_2013-10-18","revision":"2013-10-18","schema":"/rests/modules/opendaylight-group-types?revision=2013-10-18","namespace":"urn:opendaylight:group:types","conformance-type":"import"},{"name":"sal-remote-augment_2023-11-03","revision":"2023-11-03","schema":"/rests/modules/sal-remote-augment?revision=2023-11-03","namespace":"urn:sal:restconf:event:subscription","conformance-type":"import"},{"name":"opendaylight-ipv6-arbitrary-bitmask-fields_2016-02-24","revision":"2016-02-24","schema":"/rests/modules/opendaylight-ipv6-arbitrary-bitmask-fields?revision=2016-02-24","namespace":"urn:opendaylight:opendaylight-ipv6-arbitrary-bitmask-fields","conformance-type":"import"},{"name":"sal-flows-batch_2016-03-14","revision":"2016-03-14","schema":"/rests/modules/sal-flows-batch?revision=2016-03-14","namespace":"urn:opendaylight:flows:service","conformance-type":"import"},{"name":"ietf-tls-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-common","conformance-type":"import","feature":["tls12","hello-params","tls13"]},{"name":"openflow-types_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-types?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:types","conformance-type":"import"},{"name":"ietf-netconf-with-defaults_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf-with-defaults?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults","conformance-type":"import"},{"name":"odl-srm-ops_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-ops?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:ops","conformance-type":"import"},{"name":"odl-general-entity_2015-09-30","revision":"2015-09-30","schema":"/rests/modules/odl-general-entity?revision=2015-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:mdsal:core:general-entity","conformance-type":"import"},{"name":"iana-ssh-key-exchange-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-key-exchange-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-key-exchange-algs","conformance-type":"import"},{"name":"node-ssl-connection-error_2019-07-23","revision":"2019-07-23","schema":"/rests/modules/node-ssl-connection-error?revision=2019-07-23","namespace":"urn:opendaylight:node-ssl-connection-error:service","conformance-type":"import"},{"name":"openflow-protocol_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-protocol?revision=2013-07-31","namespace":"urn:opendaylight:openflow:protocol","conformance-type":"import"},{"name":"ietf-udp-server_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-server?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-server","conformance-type":"import"},{"name":"ietf-keystore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-keystore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-keystore","conformance-type":"import","feature":["asymmetric-keys","inline-definitions-supported"]},{"name":"aaa_2016-12-14","revision":"2016-12-14","schema":"/rests/modules/aaa?revision=2016-12-14","namespace":"urn:opendaylight:params:xml:ns:yang:aaa","conformance-type":"import"},{"name":"aaa-cert-rpc_2015-12-15","revision":"2015-12-15","schema":"/rests/modules/aaa-cert-rpc?revision=2015-12-15","namespace":"urn:opendaylight:yang:aaa:cert:rpc","conformance-type":"import"},{"name":"system-notifications_2013-09-27","revision":"2013-09-27","schema":"/rests/modules/system-notifications?revision=2013-09-27","namespace":"urn:opendaylight:openflow:system","conformance-type":"import"},{"name":"sal-flat-batch_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/sal-flat-batch?revision=2016-03-21","namespace":"urn:opendaylight:flat-batch:service","conformance-type":"import"},{"name":"notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netconf:notification:1.0","conformance-type":"import"},{"name":"sal-remote_2014-01-14","revision":"2014-01-14","schema":"/rests/modules/sal-remote?revision=2014-01-14","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:remote","conformance-type":"import"},{"name":"yang-ext_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/yang-ext?revision=2013-07-09","namespace":"urn:opendaylight:yang:extension:yang-ext","conformance-type":"import"},{"name":"opendaylight-multipart-types_2017-01-12","revision":"2017-01-12","schema":"/rests/modules/opendaylight-multipart-types?revision=2017-01-12","namespace":"urn:opendaylight:multipart:types","conformance-type":"import"},{"name":"opendaylight-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-inventory?revision=2013-08-19","namespace":"urn:opendaylight:inventory","conformance-type":"import"},{"name":"sal-queue_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-queue?revision=2015-03-05","namespace":"urn:opendaylight:queue:service","conformance-type":"import"},{"name":"sal-groups-batch_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/sal-groups-batch?revision=2016-03-15","namespace":"urn:opendaylight:groups:service","conformance-type":"import"},{"name":"arbitrator-reconcile_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/arbitrator-reconcile?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:arbitrator-reconcile:service","conformance-type":"import"},{"name":"ietf-yang-metadata_2016-08-05","revision":"2016-08-05","schema":"/rests/modules/ietf-yang-metadata?revision=2016-08-05","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-metadata","conformance-type":"import"},{"name":"opendaylight-arbitrary-bitmask-fields_2016-01-30","revision":"2016-01-30","schema":"/rests/modules/opendaylight-arbitrary-bitmask-fields?revision=2016-01-30","namespace":"urn:opendaylight:arbitrary:bitmask:fields","conformance-type":"import"},{"name":"ietf-udp-client_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-client?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-client","conformance-type":"import","feature":["local-binding"]},{"name":"opendaylight-meter-types_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/opendaylight-meter-types?revision=2013-09-18","namespace":"urn:opendaylight:meter:types","conformance-type":"import"},{"name":"opendaylight-action-types_2013-11-12","revision":"2013-11-12","schema":"/rests/modules/opendaylight-action-types?revision=2013-11-12","namespace":"urn:opendaylight:action:types","conformance-type":"import"},{"name":"sal-role_2015-07-27","revision":"2015-07-27","schema":"/rests/modules/sal-role?revision=2015-07-27","namespace":"urn:opendaylight:role:service","conformance-type":"import"},{"name":"openflow-provider-config_2016-05-10","revision":"2016-05-10","schema":"/rests/modules/openflow-provider-config?revision=2016-05-10","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:provider:config","conformance-type":"import"},{"name":"odl-serviceutils-upgrade_2018-07-02","revision":"2018-07-02","schema":"/rests/modules/odl-serviceutils-upgrade?revision=2018-07-02","namespace":"urn:opendaylight:serviceutils:upgrade","conformance-type":"import"},{"name":"opendaylight-match-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-match-types?revision=2013-10-26","namespace":"urn:opendaylight:model:match:types","conformance-type":"import"},{"name":"ietf-restconf-server_2024-08-14","revision":"2024-08-14","schema":"/rests/modules/ietf-restconf-server?revision=2024-08-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-server","conformance-type":"import","feature":["http-listen","https-listen"]},{"name":"reconciliation-result-state_2017-07-13","revision":"2017-07-13","schema":"/rests/modules/reconciliation-result-state?revision=2017-07-13","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:rf:state","conformance-type":"import"},{"name":"onf-extensions_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/onf-extensions?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf","conformance-type":"import"},{"name":"sal-table_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/sal-table?revision=2013-10-26","namespace":"urn:opendaylight:table:service","conformance-type":"import"},{"name":"iana-http-versions_2026-02-04","revision":"2026-02-04","schema":"/rests/modules/iana-http-versions?revision=2026-02-04","namespace":"urn:ietf:params:xml:ns:yang:iana-http-versions","conformance-type":"import"},{"name":"opendaylight-direct-statistics_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/opendaylight-direct-statistics?revision=2016-05-11","namespace":"urn:opendaylight:direct:statistics","conformance-type":"import"},{"name":"opendaylight-port-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-port-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:port","conformance-type":"import"},{"name":"sal-async-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/sal-async-config?revision=2017-06-19","namespace":"urn:opendaylight:async-config:service","conformance-type":"import"},{"name":"aaa-password-service-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-password-service-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:password:service:config","conformance-type":"import"},{"name":"ietf-yang-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-yang-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-types","conformance-type":"import"},{"name":"opendaylight-queue-statistics_2013-12-16","revision":"2013-12-16","schema":"/rests/modules/opendaylight-queue-statistics?revision=2013-12-16","namespace":"urn:opendaylight:queue:statistics","conformance-type":"import"},{"name":"sal-bundle_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/sal-bundle?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf:bundle:service","conformance-type":"import"},{"name":"ietf-restconf-subscribed-notifications_2019-11-17","revision":"2019-11-17","schema":"/rests/modules/ietf-restconf-subscribed-notifications?revision=2019-11-17","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-subscribed-notifications","conformance-type":"import"},{"name":"sal-meters-batch_2016-03-16","revision":"2016-03-16","schema":"/rests/modules/sal-meters-batch?revision=2016-03-16","namespace":"urn:opendaylight:meters:service","conformance-type":"import"},{"name":"odl-entity-owners","revision":"","schema":"/rests/modules/odl-entity-owners","namespace":"urn:opendaylight:params:xml:ns:yang:controller:entity-owners","conformance-type":"import"},{"name":"sal-experimenter-mp-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-mp-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-mp-message:service","conformance-type":"import"},{"name":"packet-processing_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/packet-processing?revision=2013-07-09","namespace":"urn:opendaylight:packet:service","conformance-type":"import"},{"name":"openflow-configuration_2014-06-30","revision":"2014-06-30","schema":"/rests/modules/openflow-configuration?revision=2014-06-30","namespace":"urn:opendaylight:openflow:config","conformance-type":"import"},{"name":"odl-srm-rpcs_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-rpcs?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:rpc","conformance-type":"import"},{"name":"ietf-netconf-acm_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-netconf-acm?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-acm","conformance-type":"import"},{"name":"iana-crypt-hash_2014-08-06","revision":"2014-08-06","schema":"/rests/modules/iana-crypt-hash?revision=2014-08-06","namespace":"urn:ietf:params:xml:ns:yang:iana-crypt-hash","conformance-type":"import","feature":["crypt-hash-sha-512","crypt-hash-sha-256","crypt-hash-md5"]},{"name":"openflow-extensible-match_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-extensible-match?revision=2015-02-25","namespace":"urn:opendaylight:openflow:oxm","conformance-type":"import"}],"module-set-id":"2"}}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:41.403147" elapsed="0.004144"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:41.402812" elapsed="0.004530"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:41.402780" elapsed="0.004598"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:41.410512" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:41.407810" elapsed="0.002795"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:41.407491" elapsed="0.003151"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:41.407465" elapsed="0.003201"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:49:41.411317" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:49:41.410872" elapsed="0.000472"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:41.411677" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:41.411435" elapsed="0.000299"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:49:41.412294" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:49:41.411922" elapsed="0.000400"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:41.411758" elapsed="0.000600"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:41.411415" elapsed="0.000964"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:49:41.412943" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:49:41.412559" elapsed="0.000411"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:41.413318" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:41.413060" elapsed="0.000316"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:49:41.413857" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:49:41.413557" elapsed="0.000326"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:41.413399" elapsed="0.000518"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:41.413041" elapsed="0.000897"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:49:41.414111" elapsed="0.000376"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:49:41.414977" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:49:41.414673" elapsed="0.000329"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:49:41.415203" elapsed="0.002321"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:49:41.401726" elapsed="0.015923"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:49:41.418002" elapsed="0.000060"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:49:41.417781" elapsed="0.000360"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:41.417729" elapsed="0.000468"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:49:41.427451" level="INFO">${text_normalized} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:49:41.419120" elapsed="0.008386"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:49:41.427595" elapsed="0.000080"/>
</return>
<msg time="2026-04-08T00:49:41.427948" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:49:40.457082" elapsed="0.970976"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:49:41.428589" elapsed="0.000033"/>
</return>
<msg time="2026-04-08T00:49:41.428790" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="PASS" start="2026-04-08T00:49:40.312820" elapsed="1.115998"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Json_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:41.429210" elapsed="0.000027"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:41.428910" elapsed="0.000509"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:41.428890" elapsed="0.000557"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:49:41.429482" elapsed="0.000027"/>
</return>
<arg>session=${session}</arg>
<arg>folder=${RESTCONF_MODULES_DIR}</arg>
<arg>verify=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Add arguments sensible for JSON data, return Get_Templated response text.
Optionally, verification against JSON data (may be iterated) is called.
Only subset of JSON data is verified and returned if JMES path is specified in
file ${folder}/jmespath.expr.</doc>
<status status="PASS" start="2026-04-08T00:49:40.308717" elapsed="1.120892"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:40.304794" elapsed="1.124859"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:40.304777" elapsed="1.124900"/>
</if>
<kw name="Resolve_Shard_Type_Class" owner="ClusterManagement">
<if>
<branch type="IF" condition="'${shard_type}' == 'config'">
<return>
<value>DistributedConfigDatastore</value>
<status status="NOT RUN" start="2026-04-08T00:49:41.430334" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:49:41.430222" elapsed="0.000157"/>
</branch>
<branch type="ELSE IF" condition="'${shard_type}' == 'operational'">
<return>
<value>DistributedOperationalDatastore</value>
<status status="PASS" start="2026-04-08T00:49:41.430502" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-08T00:49:41.430401" elapsed="0.000158"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:41.430203" elapsed="0.000380"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized shard type: ${shard_type}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:41.430739" elapsed="0.000021"/>
</kw>
<msg time="2026-04-08T00:49:41.430858" level="INFO">${type_class} = DistributedOperationalDatastore</msg>
<var>${type_class}</var>
<arg>shard_type=${shard_type}</arg>
<doc>Simple lookup for class name corresponding to desired type.</doc>
<status status="PASS" start="2026-04-08T00:49:41.429910" elapsed="0.000973"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:49:41.431538" level="INFO">${cluster_index} = 2</msg>
<var>${cluster_index}</var>
<arg>${member_index}+${NODE_ROLE_INDEX_START}-1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:49:41.431062" elapsed="0.000503"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:49:41.432202" level="INFO">${uri} = jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-inventory-operational,type=DistributedOperationalDatastore</msg>
<var>${uri}</var>
<arg>${JOLOKIA_READ_URI}:Category=Shards,name=member-${cluster_index}-shard-${shard_name}-${shard_type},type=${type_class}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:49:41.431720" elapsed="0.000511"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:41.437737" level="INFO">jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-inventory-operational,type=DistributedOperationalDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:41.437291" elapsed="0.000493"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:41.438503" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:41.437938" elapsed="0.000611"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:49:41.469344" level="INFO">GET Request : url=http://10.30.170.131:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-inventory-operational,type=DistributedOperationalDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-inventory-operational,type=DistributedOperationalDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:49:41.469666" level="INFO">GET Response : url=http://10.30.170.131:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-inventory-operational,type=DistributedOperationalDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Wed, 08 Apr 2026 00:49:41 GMT', 'Expires': 'Tue, 07 Apr 2026 23:49:41 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-2-shard-inventory-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"ReadWriteTransactionCount":0,"SnapshotIndex":4,"InMemoryJournalLogSize":1,"ReplicatedToAllIndex":4,"Leader":"member-1-shard-inventory-operational","LastIndex":5,"RaftState":"Follower","LastCommittedTransactionTime":"1970-01-01 00:00:00.000","LastApplied":5,"PeerAddresses":"member-1-shard-inventory-operational: pekko:\/\/opendaylight-cluster-data@10.30.170.48:2550\/user\/shardmanager-operational\/member-1-shard-inventory-operational, member-3-shard-inventory-operational: pekko:\/\/opendaylight-cluster-data@10.30.171.110:2550\/user\/shardmanager-operational\/member-3-shard-inventory-operational","LastLogIndex":5,"LastLeadershipChangeTime":"2026-04-08 00:46:45.936","FollowerInitialSyncStatus":true,"FollowerInfo":[],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"1.193 ms","CurrentTerm":2,"LastTerm":2,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-inventory-operational","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":0,"TxCohortCacheSize":0,"PeerVotingStates":"member-1-shard-inventory-operational: true, member-3-shard-inventory-operational: true","LastLogTerm":2,"StatRetrievalError":null,"CommitIndex":5,"SnapshotTerm":2,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-2-shard-inventory-operational","LeadershipChangeCount":1,"InMemoryJournalDataSize":267},"timestamp":1775609381,"status":200} 
 </msg>
<msg time="2026-04-08T00:49:41.470126" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:49:41.449734" elapsed="0.020683"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:41.438618" elapsed="0.032373"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:41.471446" elapsed="0.000054"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:41.471061" elapsed="0.001179"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:41.438599" elapsed="0.033705"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:41.479308" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-2-shard-inventory-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"ReadWriteTransactionCount":0,"SnapshotIndex":4,"InMemoryJournalLogSize":1,"ReplicatedToAllIndex":4,"Leader":"member-1-shard-inventory-operational","LastIndex":5,"RaftState":"Follower","LastCommittedTransactionTime":"1970-01-01 00:00:00.000","LastApplied":5,"PeerAddresses":"member-1-shard-inventory-operational: pekko:\/\/opendaylight-cluster-data@10.30.170.48:2550\/user\/shardmanager-operational\/member-1-shard-inventory-operational, member-3-shard-inventory-operational: pekko:\/\/opendaylight-cluster-data@10.30.171.110:2550\/user\/shardmanager-operational\/member-3-shard-inventory-operational","LastLogIndex":5,"LastLeadershipChangeTime":"2026-04-08 00:46:45.936","FollowerInitialSyncStatus":true,"FollowerInfo":[],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"1.193 ms","CurrentTerm":2,"LastTerm":2,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-inventory-operational","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":0,"TxCohortCacheSize":0,"PeerVotingStates":"member-1-shard-inventory-operational: true, member-3-shard-inventory-operational: true","LastLogTerm":2,"StatRetrievalError":null,"CommitIndex":5,"SnapshotTerm":2,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-2-shard-inventory-operational","LeadershipChangeCount":1,"InMemoryJournalDataSize":267},"timestamp":1775609381,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:41.475653" elapsed="0.003815"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:41.474395" elapsed="0.005142"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:41.474367" elapsed="0.005225"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:41.483878" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:41.480946" elapsed="0.003031"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:41.479710" elapsed="0.004317"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:41.479684" elapsed="0.004381"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:49:41.485487" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:49:41.484699" elapsed="0.000849"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:41.486218" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:41.485714" elapsed="0.000590"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:49:41.487183" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:49:41.486668" elapsed="0.000563"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:41.486341" elapsed="0.000940"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:41.485694" elapsed="0.001622"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:49:41.488730" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:49:41.487918" elapsed="0.000874"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:41.489529" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:41.489038" elapsed="0.000577"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:49:41.490563" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:49:41.489978" elapsed="0.000631"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:41.489652" elapsed="0.001006"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:41.489014" elapsed="0.001679"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:49:41.490914" elapsed="0.000635"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:49:41.492387" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:49:41.491863" elapsed="0.000584"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:49:41.492744" elapsed="0.002469"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:49:41.473405" elapsed="0.021971"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:49:41.495577" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:49:41.495449" elapsed="0.000174"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:41.495430" elapsed="0.000215"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:49:41.499404" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-2-shard-inventory-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestam...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:49:41.495790" elapsed="0.003648"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:49:41.499498" elapsed="0.000040"/>
</return>
<msg time="2026-04-08T00:49:41.499693" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-2-shard-inventory-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestam...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:49:41.433209" elapsed="0.066516"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:49:41.499823" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:49:41.499974" level="INFO">${data_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-2-shard-inventory-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestam...</msg>
<var>${data_text}</var>
<arg>uri=${uri}</arg>
<arg>session=${session}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-08T00:49:41.432442" elapsed="0.067558"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:49:41.501076" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-2-shard-inventory-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1775609...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:49:41.500598" elapsed="0.000507"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-08T00:49:41.501154" elapsed="0.000046"/>
</return>
<msg time="2026-04-08T00:49:41.501343" level="INFO">${data_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-2-shard-inventory-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1775609...</msg>
<var>${data_object}</var>
<arg>${data_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-08T00:49:41.500250" elapsed="0.001119"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:49:41.501720" level="INFO">${value} = {'AbortTransactionsCount': 0, 'CommitIndex': 5, 'CommittedTransactionsCount': 0, 'CurrentTerm': 2, 'FailedReadTransactionsCount': 0, 'FailedTransactionsCount': 0, 'FollowerInfo': [], 'FollowerInitialS...</msg>
<var>${value}</var>
<arg>${data_object}</arg>
<arg>value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:49:41.501524" elapsed="0.000222"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:49:41.502098" level="INFO">${raft_property} = Follower</msg>
<var>${raft_property}</var>
<arg>${value}</arg>
<arg>${property}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:49:41.501899" elapsed="0.000224"/>
</kw>
<return>
<value>${raft_property}</value>
<status status="PASS" start="2026-04-08T00:49:41.502214" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:49:41.502370" level="INFO">${raft_state} = Follower</msg>
<var>${raft_state}</var>
<arg>RaftState</arg>
<arg>${shard_name}</arg>
<arg>${shard_type}</arg>
<arg>${member_index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft property.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T00:49:40.303037" elapsed="1.199359"/>
</kw>
<return>
<value>${raft_state}</value>
<status status="PASS" start="2026-04-08T00:49:41.502454" elapsed="0.000026"/>
</return>
<msg time="2026-04-08T00:49:41.502601" level="INFO">${raft_state} = Follower</msg>
<var>${raft_state}</var>
<arg>shard_name=${shard_name}</arg>
<arg>shard_type=${ds_type}</arg>
<arg>member_index=${index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft status.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T00:49:40.302075" elapsed="1.200551"/>
</kw>
<if>
<branch type="IF" condition="'Follower' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${follower_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-08T00:49:41.502924" elapsed="0.000189"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:41.502706" elapsed="0.000444"/>
</branch>
<branch type="ELSE IF" condition="'Leader' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${leader_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:41.503370" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:41.503222" elapsed="0.000203"/>
</branch>
<branch type="ELSE IF" condition="${validate}">
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized Raft state: ${raft_state}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:41.503588" elapsed="0.000019"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:41.503447" elapsed="0.000190"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:41.502688" elapsed="0.000971"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T00:49:40.301891" elapsed="1.201793"/>
</iter>
<iter>
<kw name="Get_Raft_State_Of_Shard_At_Member" owner="ClusterManagement">
<kw name="Get_Raft_Property_From_Shard_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:49:41.506072" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:49:41.505751" elapsed="0.000348"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:49:41.506144" elapsed="0.000082"/>
</return>
<msg time="2026-04-08T00:49:41.506349" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:49:41.505412" elapsed="0.000961"/>
</kw>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Get_As_Json_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:49:41.588743" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:49:41.588351" elapsed="0.000425"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:49:41.589591" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:49:41.589321" elapsed="0.000354">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-08T00:49:41.589833" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:49:41.588943" elapsed="0.000915"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:49:41.590425" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:49:41.590021" elapsed="0.000431"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T00:49:41.590754" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-08T00:49:41.590922" level="INFO">${template} = /rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T00:49:41.590611" elapsed="0.000337"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:41.591372" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:41.591102" elapsed="0.000314"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:41.592380" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:41.592110" elapsed="0.000314"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-08T00:49:41.592849" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-08T00:49:41.592582" elapsed="0.000293"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:41.593256" elapsed="0.000023"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:41.593459" elapsed="0.000023"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:41.593630" elapsed="0.000021"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-08T00:49:41.593074" elapsed="0.000613"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-08T00:49:41.592930" elapsed="0.000787"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-08T00:49:41.593764" elapsed="0.000031"/>
</return>
<msg time="2026-04-08T00:49:41.593924" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-08T00:49:41.591794" elapsed="0.002156"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:41.591493" elapsed="0.002488"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:41.594150" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:41.594006" elapsed="0.000215"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:41.591470" elapsed="0.002771"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:49:41.594817" level="INFO">${final_text} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:49:41.594383" elapsed="0.000461"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T00:49:41.594891" elapsed="0.000028"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="PASS" start="2026-04-08T00:49:41.587720" elapsed="0.007292"/>
</kw>
<msg time="2026-04-08T00:49:41.595065" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:49:41.575583" elapsed="0.019564"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:41.607713" elapsed="0.000043"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:41.619731" elapsed="0.000040"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:41.631687" elapsed="0.000041"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:41.632453" elapsed="0.000036"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:41.633226" elapsed="0.000038"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:41.633784" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:41.633637" elapsed="0.000203"/>
</branch>
<status status="NOT RUN" start="2026-04-08T00:49:41.633620" elapsed="0.000243"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:41.634018" elapsed="0.000021"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:41.634216" elapsed="0.000022"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:41.634400" elapsed="0.000020"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-08T00:49:41.633570" elapsed="0.000902"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-08T00:49:41.633347" elapsed="0.001165"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:41.635212" elapsed="0.000036"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-08T00:49:41.635330" elapsed="0.000049"/>
</return>
<msg time="2026-04-08T00:49:41.635554" level="INFO">${uri} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-08T00:49:41.569312" elapsed="0.066349"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:49:41.638493" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:49:41.638234" elapsed="0.000334">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-08T00:49:41.638770" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:49:41.637776" elapsed="0.001038"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:41.639345" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:41.638944" elapsed="0.000467"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:49:41.640011" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:49:41.639716" elapsed="0.000321"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:41.639449" elapsed="0.000633"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:41.638894" elapsed="0.001226"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:49:41.643226" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:49:41.640845" elapsed="0.002427"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-08T00:49:41.643349" elapsed="0.000063"/>
</return>
<msg time="2026-04-08T00:49:41.643660" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:49:41.636637" elapsed="0.007128"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:49:41.646471" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:49:41.646225" elapsed="0.000311">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-08T00:49:41.646754" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:49:41.645780" elapsed="0.001018"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-08T00:49:41.647189" elapsed="0.000080"/>
</return>
<status status="PASS" start="2026-04-08T00:49:41.646927" elapsed="0.000409"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:41.646876" elapsed="0.000499"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:41.648085" elapsed="0.000037"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:41.648838" elapsed="0.000036"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-08T00:49:41.648947" elapsed="0.000049"/>
</return>
<msg time="2026-04-08T00:49:41.651198" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:49:41.644566" elapsed="0.006744"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:41.655135" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:41.654749" elapsed="0.000511"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:41.656359" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:41.655962" elapsed="0.000495"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:49:42.695128" level="INFO">GET Request : url=http://10.30.171.110:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 path_url=/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:49:42.696338" level="INFO">GET Response : url=http://10.30.171.110:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 status=200, reason=OK 
 headers={'Set-Cookie': 'JSESSIONID=node09orwbuy1e81xg3wze7ww55ua0.node0; Path=/rests; HttpOnly, rememberMe=deleteMe; Path=/rests; Max-Age=0; Expires=Tue, 07-Apr-2026 00:49:42 GMT; SameSite=lax', 'Expires': 'Thu, 01 Jan 1970 00:00:00 GMT', 'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Transfer-Encoding': 'chunked'} 
 body={"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","hidden-symmetric-keys","encrypted-private-keys","asymmetrically-encrypted-value-format","cms-encrypted-data-format","cleartext-private-keys","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["ssh-client-keepalives","client-ident-hostbased","client-ident-publickey","client-ident-password"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-ex... (set the log level to DEBUG or TRACE to see the full content) 
 </msg>
<msg time="2026-04-08T00:49:42.696881" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:49:41.658793" elapsed="1.038153"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:41.656584" elapsed="1.040517"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:42.697920" elapsed="0.000056"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:42.697290" elapsed="0.000806"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:41.656533" elapsed="1.041683"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:42.706110" level="INFO">{"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","hidden-symmetric-keys","encrypted-private-keys","asymmetrically-encrypted-value-format","cms-encrypted-data-format","cleartext-private-keys","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["ssh-client-keepalives","client-ident-hostbased","client-ident-publickey","client-ident-password"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-experimenter-types?revision=2015-10-20","namespace":"urn:opendaylight:openflowplugin:experimenter:types","conformance-type":"import"},{"name":"ietf-ip_2018-02-22","revision":"2018-02-22","schema":"/rests/modules/ietf-ip?revision=2018-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-ip","conformance-type":"import","feature":["ipv6-privacy-autoconf","ipv4-non-contiguous-netmasks"]},{"name":"ietf-tcp-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-client","conformance-type":"import","feature":["local-binding-supported","tcp-client-keepalives"]},{"name":"node-config_2014-10-15","revision":"2014-10-15","schema":"/rests/modules/node-config?revision=2014-10-15","namespace":"urn:opendaylight:module:config","conformance-type":"import"},{"name":"ietf-restconf_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf","conformance-type":"import"},{"name":"ietf-datastores_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-datastores?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-datastores","conformance-type":"import"},{"name":"ietf-yang-patch_2017-02-22","revision":"2017-02-22","schema":"/rests/modules/ietf-yang-patch?revision=2017-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-patch","conformance-type":"import"},{"name":"sal-group_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-group?revision=2013-09-18","namespace":"urn:opendaylight:group:service","conformance-type":"import"},{"name":"odl-codegen-extensions_2024-06-27","revision":"2024-06-27","schema":"/rests/modules/odl-codegen-extensions?revision=2024-06-27","namespace":"urn:opendaylight:yang:extension:codegen","conformance-type":"import"},{"name":"sal-meter_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-meter?revision=2013-09-18","namespace":"urn:opendaylight:meter:service","conformance-type":"import"},{"name":"ietf-interfaces_2018-02-20","revision":"2018-02-20","schema":"/rests/modules/ietf-interfaces?revision=2018-02-20","namespace":"urn:ietf:params:xml:ns:yang:ietf-interfaces","conformance-type":"import","feature":["pre-provisioning","if-mib","arbitrary-names"]},{"name":"opendaylight-l2-types_2013-08-27","revision":"2013-08-27","schema":"/rests/modules/opendaylight-l2-types?revision=2013-08-27","namespace":"urn:opendaylight:l2:types","conformance-type":"import"},{"name":"opendaylight-flow-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-flow-types?revision=2013-10-26","namespace":"urn:opendaylight:flow:types","conformance-type":"import"},{"name":"lldp-speaker-config_2016-05-12","revision":"2016-05-12","schema":"/rests/modules/lldp-speaker-config?revision=2016-05-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker:config","conformance-type":"import"},{"name":"aaa-cert_2015-11-26","revision":"2015-11-26","schema":"/rests/modules/aaa-cert?revision=2015-11-26","namespace":"urn:opendaylight:yang:aaa:cert","conformance-type":"import"},{"name":"openflow-action_2015-02-03","revision":"2015-02-03","schema":"/rests/modules/openflow-action?revision=2015-02-03","namespace":"urn:opendaylight:openflow:common:action","conformance-type":"import"},{"name":"openflow-approved-extensions_2016-08-02","revision":"2016-08-02","schema":"/rests/modules/openflow-approved-extensions?revision=2016-08-02","namespace":"urn:opendaylight:openflow:approved:extensions","conformance-type":"import"},{"name":"nc-notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/nc-notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netmod:notification","conformance-type":"import"},{"name":"ietf-netconf-nmda_2019-01-07","revision":"2019-01-07","schema":"/rests/modules/ietf-netconf-nmda?revision=2019-01-07","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-nmda","conformance-type":"import","feature":["with-defaults","origin"]},{"name":"ietf-tcp-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-common","conformance-type":"import","feature":["keepalives-supported"]},{"name":"network-topology_2013-10-21","revision":"2013-10-21","schema":"/rests/modules/network-topology?revision=2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:network-topology","conformance-type":"import"},{"name":"aaa-encrypt-service-config_2024-02-02","revision":"2024-02-02","schema":"/rests/modules/aaa-encrypt-service-config?revision=2024-02-02","namespace":"config:aaa:authn:encrypt:service:config","conformance-type":"import"},{"name":"openflow-instruction_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-instruction?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:instruction","conformance-type":"import"},{"name":"ietf-tls-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-client","conformance-type":"import","feature":["client-ident-x509-cert","server-auth-x509-cert"]},{"name":"opendaylight-group-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-group-statistics?revision=2013-11-11","namespace":"urn:opendaylight:group:statistics","conformance-type":"import"},{"name":"cluster-admin_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/cluster-admin?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:cluster:admin","conformance-type":"import"},{"name":"opendaylight-flow-statistics_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-flow-statistics?revision=2013-08-19","namespace":"urn:opendaylight:flow:statistics","conformance-type":"import"},{"name":"opendaylight-table-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-table-types?revision=2013-10-26","namespace":"urn:opendaylight:table:types","conformance-type":"import"},{"name":"forwarding-rules-manager-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/forwarding-rules-manager-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:forwardingrules-manager:config","conformance-type":"import"},{"name":"odl-srm-types_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-types?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:types","conformance-type":"import"},{"name":"ietf-x509-cert-to-name_2014-12-10","revision":"2014-12-10","schema":"/rests/modules/ietf-x509-cert-to-name?revision=2014-12-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-x509-cert-to-name","conformance-type":"import"},{"name":"flow-node-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-node-inventory?revision=2013-08-19","namespace":"urn:opendaylight:flow:inventory","conformance-type":"import"},{"name":"flow-errors_2013-11-16","revision":"2013-11-16","schema":"/rests/modules/flow-errors?revision=2013-11-16","namespace":"urn:opendaylight:flow:errors","conformance-type":"import"},{"name":"ietf-netconf_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:netconf:base:1.0","conformance-type":"import","feature":["xpath","url","rollback-on-error","validate","startup","candidate","confirmed-commit","writable-running"]},{"name":"iana-ssh-public-key-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-public-key-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-public-key-algs","conformance-type":"import"},{"name":"aaa-cert-mdsal_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/aaa-cert-mdsal?revision=2016-03-21","namespace":"urn:opendaylight:yang:aaa:cert:mdsal","conformance-type":"import"},{"name":"odl-device-notification_2024-02-18","revision":"2024-02-18","schema":"/rests/modules/odl-device-notification?revision=2024-02-18","namespace":"urn:opendaylight:device:notification","conformance-type":"import"},{"name":"ietf-origin_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-origin?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-origin","conformance-type":"import"},{"name":"openflow-augments_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-augments?revision=2015-02-25","namespace":"urn:opendaylight:openflow:augments","conformance-type":"import"},{"name":"iana-ssh-encryption-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-encryption-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-encryption-algs","conformance-type":"import"},{"name":"ietf-truststore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-truststore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-truststore","conformance-type":"import","feature":["inline-definitions-supported"]},{"name":"distributed-datastore-provider_2025-01-30","revision":"2025-01-30","schema":"/rests/modules/distributed-datastore-provider?revision=2025-01-30","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:distributed-datastore-provider","conformance-type":"import"},{"name":"opendaylight-group-types_2013-10-18","revision":"2013-10-18","schema":"/rests/modules/opendaylight-group-types?revision=2013-10-18","namespace":"urn:opendaylight:group:types","conformance-type":"import"},{"name":"sal-remote-augment_2023-11-03","revision":"2023-11-03","schema":"/rests/modules/sal-remote-augment?revision=2023-11-03","namespace":"urn:sal:restconf:event:subscription","conformance-type":"import"},{"name":"opendaylight-ipv6-arbitrary-bitmask-fields_2016-02-24","revision":"2016-02-24","schema":"/rests/modules/opendaylight-ipv6-arbitrary-bitmask-fields?revision=2016-02-24","namespace":"urn:opendaylight:opendaylight-ipv6-arbitrary-bitmask-fields","conformance-type":"import"},{"name":"sal-flows-batch_2016-03-14","revision":"2016-03-14","schema":"/rests/modules/sal-flows-batch?revision=2016-03-14","namespace":"urn:opendaylight:flows:service","conformance-type":"import"},{"name":"ietf-tls-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-common","conformance-type":"import","feature":["tls12","hello-params","tls13"]},{"name":"openflow-types_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-types?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:types","conformance-type":"import"},{"name":"ietf-netconf-with-defaults_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf-with-defaults?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults","conformance-type":"import"},{"name":"odl-srm-ops_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-ops?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:ops","conformance-type":"import"},{"name":"odl-general-entity_2015-09-30","revision":"2015-09-30","schema":"/rests/modules/odl-general-entity?revision=2015-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:mdsal:core:general-entity","conformance-type":"import"},{"name":"iana-ssh-key-exchange-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-key-exchange-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-key-exchange-algs","conformance-type":"import"},{"name":"node-ssl-connection-error_2019-07-23","revision":"2019-07-23","schema":"/rests/modules/node-ssl-connection-error?revision=2019-07-23","namespace":"urn:opendaylight:node-ssl-connection-error:service","conformance-type":"import"},{"name":"openflow-protocol_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-protocol?revision=2013-07-31","namespace":"urn:opendaylight:openflow:protocol","conformance-type":"import"},{"name":"ietf-udp-server_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-server?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-server","conformance-type":"import"},{"name":"ietf-keystore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-keystore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-keystore","conformance-type":"import","feature":["asymmetric-keys","inline-definitions-supported"]},{"name":"aaa_2016-12-14","revision":"2016-12-14","schema":"/rests/modules/aaa?revision=2016-12-14","namespace":"urn:opendaylight:params:xml:ns:yang:aaa","conformance-type":"import"},{"name":"aaa-cert-rpc_2015-12-15","revision":"2015-12-15","schema":"/rests/modules/aaa-cert-rpc?revision=2015-12-15","namespace":"urn:opendaylight:yang:aaa:cert:rpc","conformance-type":"import"},{"name":"system-notifications_2013-09-27","revision":"2013-09-27","schema":"/rests/modules/system-notifications?revision=2013-09-27","namespace":"urn:opendaylight:openflow:system","conformance-type":"import"},{"name":"sal-flat-batch_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/sal-flat-batch?revision=2016-03-21","namespace":"urn:opendaylight:flat-batch:service","conformance-type":"import"},{"name":"notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netconf:notification:1.0","conformance-type":"import"},{"name":"sal-remote_2014-01-14","revision":"2014-01-14","schema":"/rests/modules/sal-remote?revision=2014-01-14","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:remote","conformance-type":"import"},{"name":"yang-ext_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/yang-ext?revision=2013-07-09","namespace":"urn:opendaylight:yang:extension:yang-ext","conformance-type":"import"},{"name":"opendaylight-multipart-types_2017-01-12","revision":"2017-01-12","schema":"/rests/modules/opendaylight-multipart-types?revision=2017-01-12","namespace":"urn:opendaylight:multipart:types","conformance-type":"import"},{"name":"opendaylight-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-inventory?revision=2013-08-19","namespace":"urn:opendaylight:inventory","conformance-type":"import"},{"name":"sal-queue_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-queue?revision=2015-03-05","namespace":"urn:opendaylight:queue:service","conformance-type":"import"},{"name":"sal-groups-batch_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/sal-groups-batch?revision=2016-03-15","namespace":"urn:opendaylight:groups:service","conformance-type":"import"},{"name":"arbitrator-reconcile_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/arbitrator-reconcile?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:arbitrator-reconcile:service","conformance-type":"import"},{"name":"ietf-yang-metadata_2016-08-05","revision":"2016-08-05","schema":"/rests/modules/ietf-yang-metadata?revision=2016-08-05","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-metadata","conformance-type":"import"},{"name":"opendaylight-arbitrary-bitmask-fields_2016-01-30","revision":"2016-01-30","schema":"/rests/modules/opendaylight-arbitrary-bitmask-fields?revision=2016-01-30","namespace":"urn:opendaylight:arbitrary:bitmask:fields","conformance-type":"import"},{"name":"ietf-udp-client_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-client?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-client","conformance-type":"import","feature":["local-binding"]},{"name":"opendaylight-meter-types_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/opendaylight-meter-types?revision=2013-09-18","namespace":"urn:opendaylight:meter:types","conformance-type":"import"},{"name":"opendaylight-action-types_2013-11-12","revision":"2013-11-12","schema":"/rests/modules/opendaylight-action-types?revision=2013-11-12","namespace":"urn:opendaylight:action:types","conformance-type":"import"},{"name":"sal-role_2015-07-27","revision":"2015-07-27","schema":"/rests/modules/sal-role?revision=2015-07-27","namespace":"urn:opendaylight:role:service","conformance-type":"import"},{"name":"openflow-provider-config_2016-05-10","revision":"2016-05-10","schema":"/rests/modules/openflow-provider-config?revision=2016-05-10","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:provider:config","conformance-type":"import"},{"name":"odl-serviceutils-upgrade_2018-07-02","revision":"2018-07-02","schema":"/rests/modules/odl-serviceutils-upgrade?revision=2018-07-02","namespace":"urn:opendaylight:serviceutils:upgrade","conformance-type":"import"},{"name":"opendaylight-match-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-match-types?revision=2013-10-26","namespace":"urn:opendaylight:model:match:types","conformance-type":"import"},{"name":"ietf-restconf-server_2024-08-14","revision":"2024-08-14","schema":"/rests/modules/ietf-restconf-server?revision=2024-08-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-server","conformance-type":"import","feature":["http-listen","https-listen"]},{"name":"reconciliation-result-state_2017-07-13","revision":"2017-07-13","schema":"/rests/modules/reconciliation-result-state?revision=2017-07-13","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:rf:state","conformance-type":"import"},{"name":"onf-extensions_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/onf-extensions?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf","conformance-type":"import"},{"name":"sal-table_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/sal-table?revision=2013-10-26","namespace":"urn:opendaylight:table:service","conformance-type":"import"},{"name":"iana-http-versions_2026-02-04","revision":"2026-02-04","schema":"/rests/modules/iana-http-versions?revision=2026-02-04","namespace":"urn:ietf:params:xml:ns:yang:iana-http-versions","conformance-type":"import"},{"name":"opendaylight-direct-statistics_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/opendaylight-direct-statistics?revision=2016-05-11","namespace":"urn:opendaylight:direct:statistics","conformance-type":"import"},{"name":"opendaylight-port-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-port-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:port","conformance-type":"import"},{"name":"sal-async-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/sal-async-config?revision=2017-06-19","namespace":"urn:opendaylight:async-config:service","conformance-type":"import"},{"name":"aaa-password-service-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-password-service-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:password:service:config","conformance-type":"import"},{"name":"ietf-yang-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-yang-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-types","conformance-type":"import"},{"name":"opendaylight-queue-statistics_2013-12-16","revision":"2013-12-16","schema":"/rests/modules/opendaylight-queue-statistics?revision=2013-12-16","namespace":"urn:opendaylight:queue:statistics","conformance-type":"import"},{"name":"sal-bundle_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/sal-bundle?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf:bundle:service","conformance-type":"import"},{"name":"ietf-restconf-subscribed-notifications_2019-11-17","revision":"2019-11-17","schema":"/rests/modules/ietf-restconf-subscribed-notifications?revision=2019-11-17","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-subscribed-notifications","conformance-type":"import"},{"name":"sal-meters-batch_2016-03-16","revision":"2016-03-16","schema":"/rests/modules/sal-meters-batch?revision=2016-03-16","namespace":"urn:opendaylight:meters:service","conformance-type":"import"},{"name":"odl-entity-owners","revision":"","schema":"/rests/modules/odl-entity-owners","namespace":"urn:opendaylight:params:xml:ns:yang:controller:entity-owners","conformance-type":"import"},{"name":"sal-experimenter-mp-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-mp-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-mp-message:service","conformance-type":"import"},{"name":"packet-processing_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/packet-processing?revision=2013-07-09","namespace":"urn:opendaylight:packet:service","conformance-type":"import"},{"name":"openflow-configuration_2014-06-30","revision":"2014-06-30","schema":"/rests/modules/openflow-configuration?revision=2014-06-30","namespace":"urn:opendaylight:openflow:config","conformance-type":"import"},{"name":"odl-srm-rpcs_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-rpcs?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:rpc","conformance-type":"import"},{"name":"ietf-netconf-acm_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-netconf-acm?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-acm","conformance-type":"import"},{"name":"iana-crypt-hash_2014-08-06","revision":"2014-08-06","schema":"/rests/modules/iana-crypt-hash?revision=2014-08-06","namespace":"urn:ietf:params:xml:ns:yang:iana-crypt-hash","conformance-type":"import","feature":["crypt-hash-sha-512","crypt-hash-sha-256","crypt-hash-md5"]},{"name":"openflow-extensible-match_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-extensible-match?revision=2015-02-25","namespace":"urn:opendaylight:openflow:oxm","conformance-type":"import"}],"module-set-id":"2"}}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:42.702437" elapsed="0.004067"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:42.701866" elapsed="0.004675"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:42.701817" elapsed="0.004750"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:42.709053" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:42.706873" elapsed="0.002233"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:42.706647" elapsed="0.002494"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:42.706629" elapsed="0.002553"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:49:42.709822" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:49:42.709400" elapsed="0.000449"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:42.710257" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:42.709941" elapsed="0.000379"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:49:42.710816" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:49:42.710508" elapsed="0.000334"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:42.710343" elapsed="0.000534"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:42.709921" elapsed="0.000977"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:49:42.711492" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:49:42.711077" elapsed="0.000442"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:42.711942" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:42.711610" elapsed="0.000390"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:49:42.712501" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:49:42.712198" elapsed="0.000328"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:42.712024" elapsed="0.000537"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:42.711590" elapsed="0.000992"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:49:42.712756" elapsed="0.000353"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:49:42.713612" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:49:42.713310" elapsed="0.000327"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:49:42.713810" elapsed="0.002309"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:49:42.700131" elapsed="0.016130"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:49:42.716613" elapsed="0.000048"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:49:42.716392" elapsed="0.000334"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:42.716341" elapsed="0.000420"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:49:42.725756" level="INFO">${text_normalized} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:49:42.717495" elapsed="0.008311"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:49:42.725884" elapsed="0.000073"/>
</return>
<msg time="2026-04-08T00:49:42.726316" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:49:41.651944" elapsed="1.074481"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:49:42.726890" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:49:42.727070" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="PASS" start="2026-04-08T00:49:41.514538" elapsed="1.212560"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Json_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:42.727506" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:42.727202" elapsed="0.000505"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:42.727182" elapsed="0.000553"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:49:42.727769" elapsed="0.000027"/>
</return>
<arg>session=${session}</arg>
<arg>folder=${RESTCONF_MODULES_DIR}</arg>
<arg>verify=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Add arguments sensible for JSON data, return Get_Templated response text.
Optionally, verification against JSON data (may be iterated) is called.
Only subset of JSON data is verified and returned if JMES path is specified in
file ${folder}/jmespath.expr.</doc>
<status status="PASS" start="2026-04-08T00:49:41.510486" elapsed="1.217411"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:41.506439" elapsed="1.221502"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:41.506422" elapsed="1.221544"/>
</if>
<kw name="Resolve_Shard_Type_Class" owner="ClusterManagement">
<if>
<branch type="IF" condition="'${shard_type}' == 'config'">
<return>
<value>DistributedConfigDatastore</value>
<status status="NOT RUN" start="2026-04-08T00:49:42.728621" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:49:42.728512" elapsed="0.000153"/>
</branch>
<branch type="ELSE IF" condition="'${shard_type}' == 'operational'">
<return>
<value>DistributedOperationalDatastore</value>
<status status="PASS" start="2026-04-08T00:49:42.728788" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-08T00:49:42.728687" elapsed="0.000158"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:42.728494" elapsed="0.000375"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized shard type: ${shard_type}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:42.729019" elapsed="0.000021"/>
</kw>
<msg time="2026-04-08T00:49:42.729137" level="INFO">${type_class} = DistributedOperationalDatastore</msg>
<var>${type_class}</var>
<arg>shard_type=${shard_type}</arg>
<doc>Simple lookup for class name corresponding to desired type.</doc>
<status status="PASS" start="2026-04-08T00:49:42.728224" elapsed="0.000955"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:49:42.729747" level="INFO">${cluster_index} = 3</msg>
<var>${cluster_index}</var>
<arg>${member_index}+${NODE_ROLE_INDEX_START}-1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:49:42.729360" elapsed="0.000413"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:49:42.730416" level="INFO">${uri} = jolokia/read/org.opendaylight.controller:Category=Shards,name=member-3-shard-inventory-operational,type=DistributedOperationalDatastore</msg>
<var>${uri}</var>
<arg>${JOLOKIA_READ_URI}:Category=Shards,name=member-${cluster_index}-shard-${shard_name}-${shard_type},type=${type_class}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:49:42.729926" elapsed="0.000518"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:42.736034" level="INFO">jolokia/read/org.opendaylight.controller:Category=Shards,name=member-3-shard-inventory-operational,type=DistributedOperationalDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:42.735588" elapsed="0.000492"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:42.736721" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:42.736263" elapsed="0.000503"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:49:42.766759" level="INFO">GET Request : url=http://10.30.171.110:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-3-shard-inventory-operational,type=DistributedOperationalDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-3-shard-inventory-operational,type=DistributedOperationalDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:49:42.767092" level="INFO">GET Response : url=http://10.30.171.110:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-3-shard-inventory-operational,type=DistributedOperationalDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Wed, 08 Apr 2026 00:49:42 GMT', 'Expires': 'Tue, 07 Apr 2026 23:49:42 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-3-shard-inventory-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"ReadWriteTransactionCount":0,"SnapshotIndex":4,"InMemoryJournalLogSize":1,"ReplicatedToAllIndex":4,"Leader":"member-1-shard-inventory-operational","LastIndex":5,"RaftState":"Follower","LastApplied":5,"LastCommittedTransactionTime":"1970-01-01 00:00:00.000","PeerAddresses":"member-1-shard-inventory-operational: pekko:\/\/opendaylight-cluster-data@10.30.170.48:2550\/user\/shardmanager-operational\/member-1-shard-inventory-operational, member-2-shard-inventory-operational: pekko:\/\/opendaylight-cluster-data@10.30.170.131:2550\/user\/shardmanager-operational\/member-2-shard-inventory-operational","LastLogIndex":5,"LastLeadershipChangeTime":"2026-04-08 00:46:45.934","FollowerInitialSyncStatus":true,"FollowerInfo":[],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"981.2 μs","CurrentTerm":2,"LastTerm":2,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-inventory-operational","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":0,"TxCohortCacheSize":0,"PeerVotingStates":"member-1-shard-inventory-operational: true, member-2-shard-inventory-operational: true","LastLogTerm":2,"StatRetrievalError":null,"CommitIndex":5,"SnapshotTerm":2,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-3-shard-inventory-operational","LeadershipChangeCount":1,"InMemoryJournalDataSize":267},"timestamp":1775609382,"status":200} 
 </msg>
<msg time="2026-04-08T00:49:42.767648" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:49:42.747490" elapsed="0.020403"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:42.736834" elapsed="0.031710"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:42.769012" elapsed="0.000054"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:42.768620" elapsed="0.001139"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:42.736815" elapsed="0.033002"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:42.778653" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-3-shard-inventory-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"ReadWriteTransactionCount":0,"SnapshotIndex":4,"InMemoryJournalLogSize":1,"ReplicatedToAllIndex":4,"Leader":"member-1-shard-inventory-operational","LastIndex":5,"RaftState":"Follower","LastApplied":5,"LastCommittedTransactionTime":"1970-01-01 00:00:00.000","PeerAddresses":"member-1-shard-inventory-operational: pekko:\/\/opendaylight-cluster-data@10.30.170.48:2550\/user\/shardmanager-operational\/member-1-shard-inventory-operational, member-2-shard-inventory-operational: pekko:\/\/opendaylight-cluster-data@10.30.170.131:2550\/user\/shardmanager-operational\/member-2-shard-inventory-operational","LastLogIndex":5,"LastLeadershipChangeTime":"2026-04-08 00:46:45.934","FollowerInitialSyncStatus":true,"FollowerInfo":[],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"981.2 μs","CurrentTerm":2,"LastTerm":2,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-inventory-operational","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":0,"TxCohortCacheSize":0,"PeerVotingStates":"member-1-shard-inventory-operational: true, member-2-shard-inventory-operational: true","LastLogTerm":2,"StatRetrievalError":null,"CommitIndex":5,"SnapshotTerm":2,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-3-shard-inventory-operational","LeadershipChangeCount":1,"InMemoryJournalDataSize":267},"timestamp":1775609382,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:42.775310" elapsed="0.003493"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:42.772935" elapsed="0.005933"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:42.772873" elapsed="0.006046"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:42.782420" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:42.779955" elapsed="0.002571"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:42.779027" elapsed="0.003550"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:42.779003" elapsed="0.003614"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:49:42.784125" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:49:42.783272" elapsed="0.000987"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:42.784912" elapsed="0.000038"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:42.784433" elapsed="0.000569"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:49:42.785917" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:49:42.785390" elapsed="0.000576"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:42.785039" elapsed="0.000978"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:42.784412" elapsed="0.001641"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:49:42.787736" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:49:42.786756" elapsed="0.001056"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:42.788688" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:42.788023" elapsed="0.000755"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:49:42.789670" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:49:42.789146" elapsed="0.000579"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:42.788816" elapsed="0.000963"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:42.787997" elapsed="0.001818"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:49:42.790045" elapsed="0.000648"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:49:42.791756" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:49:42.791002" elapsed="0.001033"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:49:42.793190" elapsed="0.006332"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:49:42.770964" elapsed="0.028963"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:49:42.800764" elapsed="0.000036"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:49:42.800130" elapsed="0.000745"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:42.800074" elapsed="0.000853"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:49:42.806526" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-3-shard-inventory-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestam...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:49:42.801302" elapsed="0.005263"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:49:42.806633" elapsed="0.000050"/>
</return>
<msg time="2026-04-08T00:49:42.806856" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-3-shard-inventory-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestam...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:49:42.731424" elapsed="0.075468"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:49:42.807056" elapsed="0.000038"/>
</return>
<msg time="2026-04-08T00:49:42.807277" level="INFO">${data_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-3-shard-inventory-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestam...</msg>
<var>${data_text}</var>
<arg>uri=${uri}</arg>
<arg>session=${session}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-08T00:49:42.730655" elapsed="0.076657"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:49:42.808688" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-3-shard-inventory-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1775609...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:49:42.808087" elapsed="0.000630"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-08T00:49:42.808767" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:49:42.808943" level="INFO">${data_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-3-shard-inventory-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1775609...</msg>
<var>${data_object}</var>
<arg>${data_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-08T00:49:42.807659" elapsed="0.001311"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:49:42.809356" level="INFO">${value} = {'AbortTransactionsCount': 0, 'CommitIndex': 5, 'CommittedTransactionsCount': 0, 'CurrentTerm': 2, 'FailedReadTransactionsCount': 0, 'FailedTransactionsCount': 0, 'FollowerInfo': [], 'FollowerInitialS...</msg>
<var>${value}</var>
<arg>${data_object}</arg>
<arg>value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:49:42.809130" elapsed="0.000253"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:49:42.809737" level="INFO">${raft_property} = Follower</msg>
<var>${raft_property}</var>
<arg>${value}</arg>
<arg>${property}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:49:42.809537" elapsed="0.000225"/>
</kw>
<return>
<value>${raft_property}</value>
<status status="PASS" start="2026-04-08T00:49:42.809808" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:49:42.809961" level="INFO">${raft_state} = Follower</msg>
<var>${raft_state}</var>
<arg>RaftState</arg>
<arg>${shard_name}</arg>
<arg>${shard_type}</arg>
<arg>${member_index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft property.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T00:49:41.504772" elapsed="1.305213"/>
</kw>
<return>
<value>${raft_state}</value>
<status status="PASS" start="2026-04-08T00:49:42.810043" elapsed="0.000026"/>
</return>
<msg time="2026-04-08T00:49:42.810223" level="INFO">${raft_state} = Follower</msg>
<var>${raft_state}</var>
<arg>shard_name=${shard_name}</arg>
<arg>shard_type=${ds_type}</arg>
<arg>member_index=${index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft status.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T00:49:41.504017" elapsed="1.306239"/>
</kw>
<if>
<branch type="IF" condition="'Follower' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${follower_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-08T00:49:42.810568" elapsed="0.000210"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:42.810344" elapsed="0.000474"/>
</branch>
<branch type="ELSE IF" condition="'Leader' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${leader_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:42.811000" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:42.810843" elapsed="0.000219"/>
</branch>
<branch type="ELSE IF" condition="${validate}">
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized Raft state: ${raft_state}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:42.811299" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:42.811094" elapsed="0.000280"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:42.810325" elapsed="0.001079"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T00:49:41.503851" elapsed="1.307584"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-08T00:49:39.113727" elapsed="3.697759"/>
</for>
<return>
<value>${leader_list}</value>
<value>${follower_list}</value>
<status status="PASS" start="2026-04-08T00:49:42.811544" elapsed="0.000056"/>
</return>
<msg time="2026-04-08T00:49:42.811786" level="INFO">${leader_list} = [1]</msg>
<msg time="2026-04-08T00:49:42.811833" level="INFO">${follower_list} = [2, 3]</msg>
<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="PASS" start="2026-04-08T00:49:39.109566" elapsed="3.702291"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T00:49:42.812355" level="INFO">Length is 1.</msg>
<msg time="2026-04-08T00:49:42.812431" level="INFO">${leader_count} = 1</msg>
<var>${leader_count}</var>
<arg>${leader_list}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T00:49:42.812034" elapsed="0.000421"/>
</kw>
<if>
<branch type="IF" condition="${leader_count} &lt; 1">
<kw name="Fail" owner="BuiltIn">
<arg>No leader found.</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:42.812738" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:42.812523" elapsed="0.000267"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:42.812505" elapsed="0.000308"/>
</if>
<kw name="Length Should Be" owner="BuiltIn">
<msg time="2026-04-08T00:49:42.815056" level="INFO">Length is 1.</msg>
<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="PASS" start="2026-04-08T00:49:42.812947" elapsed="0.002156"/>
</kw>
<kw name="Get From List" owner="Collections">
<msg time="2026-04-08T00:49:42.815517" level="INFO">${leader} = 1</msg>
<var>${leader}</var>
<arg>${leader_list}</arg>
<arg>0</arg>
<doc>Returns the value specified with an ``index`` from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:49:42.815328" elapsed="0.000214"/>
</kw>
<return>
<value>${leader}</value>
<value>${follower_list}</value>
<status status="PASS" start="2026-04-08T00:49:42.815610" elapsed="0.000034"/>
</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="PASS" start="2026-04-08T00:49:39.106869" elapsed="3.708904"/>
</kw>
<var name="${shard_name}">inventory</var>
<status status="PASS" start="2026-04-08T00:49:39.106638" elapsed="3.709184"/>
</iter>
<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-04-08T00:49:42.820600" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:49:42.820076" elapsed="0.000551"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:49:42.821101" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:49:42.820790" elapsed="0.000338"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:49:42.821198" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:49:42.821360" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:49:42.819573" elapsed="0.001812"/>
</kw>
<kw name="Sort List" owner="Collections">
<arg>${index_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="PASS" start="2026-04-08T00:49:42.821542" elapsed="0.000158"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:49:42.822215" level="INFO">${ds_type} = operational</msg>
<var>${ds_type}</var>
<arg>'${shard_type}' != 'config'</arg>
<arg>operational</arg>
<arg>config</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:49:42.821859" elapsed="0.000383"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:49:42.822645" level="INFO">${leader_list} = []</msg>
<var>${leader_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:49:42.822407" elapsed="0.000264"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:49:42.823074" level="INFO">${follower_list} = []</msg>
<var>${follower_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:49:42.822817" elapsed="0.000283"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_Raft_State_Of_Shard_At_Member" owner="ClusterManagement">
<kw name="Get_Raft_Property_From_Shard_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:49:42.825875" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:49:42.825483" elapsed="0.000427"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:49:42.825967" elapsed="0.000038"/>
</return>
<msg time="2026-04-08T00:49:42.826184" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:49:42.825106" elapsed="0.001113"/>
</kw>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Get_As_Json_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:49:42.912584" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:49:42.912195" elapsed="0.000419"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:49:42.913397" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:49:42.913114" elapsed="0.000366">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-08T00:49:42.913573" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:49:42.912781" elapsed="0.000816"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:49:42.914143" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:49:42.913762" elapsed="0.000423"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T00:49:42.914487" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-08T00:49:42.914634" level="INFO">${template} = /rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T00:49:42.914347" elapsed="0.000313"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:42.915108" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:42.914859" elapsed="0.000294"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:42.916201" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:42.915923" elapsed="0.000324"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-08T00:49:42.916695" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-08T00:49:42.916409" elapsed="0.000320"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:42.917066" elapsed="0.000022"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:42.917288" elapsed="0.000025"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:42.917466" elapsed="0.000022"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-08T00:49:42.916932" elapsed="0.000593"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-08T00:49:42.916783" elapsed="0.000772"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-08T00:49:42.917600" elapsed="0.000031"/>
</return>
<msg time="2026-04-08T00:49:42.917766" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-08T00:49:42.915568" elapsed="0.002231"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:42.915248" elapsed="0.002595"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:42.918022" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:42.917871" elapsed="0.000207"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:42.915223" elapsed="0.002876"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:49:42.918701" level="INFO">${final_text} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:49:42.918257" elapsed="0.000471"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T00:49:42.918777" 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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="PASS" start="2026-04-08T00:49:42.911538" elapsed="0.007363"/>
</kw>
<msg time="2026-04-08T00:49:42.918954" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:49:42.899215" elapsed="0.019821"/>
</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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:42.962141" elapsed="0.000122"/>
</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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:42.974560" elapsed="0.000043"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:42.986652" elapsed="0.000042"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:42.987468" elapsed="0.000040"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:42.988309" elapsed="0.000038"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:42.988909" elapsed="0.000095"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:42.988754" elapsed="0.000295"/>
</branch>
<status status="NOT RUN" start="2026-04-08T00:49:42.988736" elapsed="0.000341"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:42.989261" elapsed="0.000023"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:42.989450" elapsed="0.000022"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:42.989634" elapsed="0.000022"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-08T00:49:42.988676" elapsed="0.001034"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-08T00:49:42.988436" elapsed="0.001316"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:42.990475" elapsed="0.000036"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-08T00:49:42.990599" elapsed="0.000050"/>
</return>
<msg time="2026-04-08T00:49:42.990852" level="INFO">${uri} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-08T00:49:42.893063" elapsed="0.097901"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:49:42.994022" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:49:42.993723" elapsed="0.000376">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-08T00:49:42.994314" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:49:42.993218" elapsed="0.001141"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:42.994898" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:42.994496" elapsed="0.000471"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:49:42.995620" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:49:42.995311" elapsed="0.000336"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:42.995006" elapsed="0.000691"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:42.994442" elapsed="0.001295"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:49:42.998992" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:49:42.996582" elapsed="0.002463"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-08T00:49:42.999136" elapsed="0.000093"/>
</return>
<msg time="2026-04-08T00:49:42.999507" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:49:42.992020" elapsed="0.007597"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:49:43.002526" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:49:43.002250" elapsed="0.000348">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-08T00:49:43.002807" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:49:43.001739" elapsed="0.001120"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-08T00:49:43.003352" elapsed="0.000098"/>
</return>
<status status="PASS" start="2026-04-08T00:49:43.003009" elapsed="0.000522"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:43.002951" elapsed="0.000623"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:43.004474" elapsed="0.000039"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:43.005222" elapsed="0.000047"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-08T00:49:43.005372" elapsed="0.000052"/>
</return>
<msg time="2026-04-08T00:49:43.007712" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:49:43.000600" elapsed="0.007221"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:43.011786" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:43.011374" elapsed="0.000513"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:43.013146" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:43.012758" elapsed="0.000505"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:49:43.033807" level="INFO">GET Request : url=http://10.30.170.48:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 path_url=/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01nfu2ssrokr1es5zgka78rw970.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:49:43.034556" level="INFO">GET Response : url=http://10.30.170.48:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Transfer-Encoding': 'chunked'} 
 body={"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","hidden-symmetric-keys","encrypted-private-keys","asymmetrically-encrypted-value-format","cms-encrypted-data-format","cleartext-private-keys","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["ssh-client-keepalives","client-ident-hostbased","client-ident-publickey","client-ident-password"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-ex... (set the log level to DEBUG or TRACE to see the full content) 
 </msg>
<msg time="2026-04-08T00:49:43.035069" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:49:43.015524" elapsed="0.019611"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:43.013393" elapsed="0.021911"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:43.036046" elapsed="0.000068"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:43.035411" elapsed="0.000895"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:43.013342" elapsed="0.023059"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:43.045608" level="INFO">{"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","hidden-symmetric-keys","encrypted-private-keys","asymmetrically-encrypted-value-format","cms-encrypted-data-format","cleartext-private-keys","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["ssh-client-keepalives","client-ident-hostbased","client-ident-publickey","client-ident-password"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-experimenter-types?revision=2015-10-20","namespace":"urn:opendaylight:openflowplugin:experimenter:types","conformance-type":"import"},{"name":"ietf-ip_2018-02-22","revision":"2018-02-22","schema":"/rests/modules/ietf-ip?revision=2018-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-ip","conformance-type":"import","feature":["ipv6-privacy-autoconf","ipv4-non-contiguous-netmasks"]},{"name":"ietf-tcp-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-client","conformance-type":"import","feature":["local-binding-supported","tcp-client-keepalives"]},{"name":"node-config_2014-10-15","revision":"2014-10-15","schema":"/rests/modules/node-config?revision=2014-10-15","namespace":"urn:opendaylight:module:config","conformance-type":"import"},{"name":"ietf-restconf_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf","conformance-type":"import"},{"name":"ietf-datastores_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-datastores?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-datastores","conformance-type":"import"},{"name":"ietf-yang-patch_2017-02-22","revision":"2017-02-22","schema":"/rests/modules/ietf-yang-patch?revision=2017-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-patch","conformance-type":"import"},{"name":"sal-group_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-group?revision=2013-09-18","namespace":"urn:opendaylight:group:service","conformance-type":"import"},{"name":"odl-codegen-extensions_2024-06-27","revision":"2024-06-27","schema":"/rests/modules/odl-codegen-extensions?revision=2024-06-27","namespace":"urn:opendaylight:yang:extension:codegen","conformance-type":"import"},{"name":"sal-meter_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-meter?revision=2013-09-18","namespace":"urn:opendaylight:meter:service","conformance-type":"import"},{"name":"ietf-interfaces_2018-02-20","revision":"2018-02-20","schema":"/rests/modules/ietf-interfaces?revision=2018-02-20","namespace":"urn:ietf:params:xml:ns:yang:ietf-interfaces","conformance-type":"import","feature":["pre-provisioning","if-mib","arbitrary-names"]},{"name":"opendaylight-l2-types_2013-08-27","revision":"2013-08-27","schema":"/rests/modules/opendaylight-l2-types?revision=2013-08-27","namespace":"urn:opendaylight:l2:types","conformance-type":"import"},{"name":"opendaylight-flow-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-flow-types?revision=2013-10-26","namespace":"urn:opendaylight:flow:types","conformance-type":"import"},{"name":"lldp-speaker-config_2016-05-12","revision":"2016-05-12","schema":"/rests/modules/lldp-speaker-config?revision=2016-05-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker:config","conformance-type":"import"},{"name":"aaa-cert_2015-11-26","revision":"2015-11-26","schema":"/rests/modules/aaa-cert?revision=2015-11-26","namespace":"urn:opendaylight:yang:aaa:cert","conformance-type":"import"},{"name":"openflow-action_2015-02-03","revision":"2015-02-03","schema":"/rests/modules/openflow-action?revision=2015-02-03","namespace":"urn:opendaylight:openflow:common:action","conformance-type":"import"},{"name":"openflow-approved-extensions_2016-08-02","revision":"2016-08-02","schema":"/rests/modules/openflow-approved-extensions?revision=2016-08-02","namespace":"urn:opendaylight:openflow:approved:extensions","conformance-type":"import"},{"name":"nc-notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/nc-notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netmod:notification","conformance-type":"import"},{"name":"ietf-netconf-nmda_2019-01-07","revision":"2019-01-07","schema":"/rests/modules/ietf-netconf-nmda?revision=2019-01-07","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-nmda","conformance-type":"import","feature":["with-defaults","origin"]},{"name":"ietf-tcp-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-common","conformance-type":"import","feature":["keepalives-supported"]},{"name":"network-topology_2013-10-21","revision":"2013-10-21","schema":"/rests/modules/network-topology?revision=2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:network-topology","conformance-type":"import"},{"name":"aaa-encrypt-service-config_2024-02-02","revision":"2024-02-02","schema":"/rests/modules/aaa-encrypt-service-config?revision=2024-02-02","namespace":"config:aaa:authn:encrypt:service:config","conformance-type":"import"},{"name":"openflow-instruction_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-instruction?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:instruction","conformance-type":"import"},{"name":"ietf-tls-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-client","conformance-type":"import","feature":["client-ident-x509-cert","server-auth-x509-cert"]},{"name":"opendaylight-group-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-group-statistics?revision=2013-11-11","namespace":"urn:opendaylight:group:statistics","conformance-type":"import"},{"name":"cluster-admin_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/cluster-admin?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:cluster:admin","conformance-type":"import"},{"name":"opendaylight-flow-statistics_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-flow-statistics?revision=2013-08-19","namespace":"urn:opendaylight:flow:statistics","conformance-type":"import"},{"name":"opendaylight-table-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-table-types?revision=2013-10-26","namespace":"urn:opendaylight:table:types","conformance-type":"import"},{"name":"forwarding-rules-manager-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/forwarding-rules-manager-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:forwardingrules-manager:config","conformance-type":"import"},{"name":"odl-srm-types_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-types?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:types","conformance-type":"import"},{"name":"ietf-x509-cert-to-name_2014-12-10","revision":"2014-12-10","schema":"/rests/modules/ietf-x509-cert-to-name?revision=2014-12-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-x509-cert-to-name","conformance-type":"import"},{"name":"flow-node-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-node-inventory?revision=2013-08-19","namespace":"urn:opendaylight:flow:inventory","conformance-type":"import"},{"name":"flow-errors_2013-11-16","revision":"2013-11-16","schema":"/rests/modules/flow-errors?revision=2013-11-16","namespace":"urn:opendaylight:flow:errors","conformance-type":"import"},{"name":"ietf-netconf_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:netconf:base:1.0","conformance-type":"import","feature":["xpath","url","rollback-on-error","validate","startup","candidate","confirmed-commit","writable-running"]},{"name":"iana-ssh-public-key-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-public-key-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-public-key-algs","conformance-type":"import"},{"name":"aaa-cert-mdsal_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/aaa-cert-mdsal?revision=2016-03-21","namespace":"urn:opendaylight:yang:aaa:cert:mdsal","conformance-type":"import"},{"name":"odl-device-notification_2024-02-18","revision":"2024-02-18","schema":"/rests/modules/odl-device-notification?revision=2024-02-18","namespace":"urn:opendaylight:device:notification","conformance-type":"import"},{"name":"ietf-origin_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-origin?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-origin","conformance-type":"import"},{"name":"openflow-augments_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-augments?revision=2015-02-25","namespace":"urn:opendaylight:openflow:augments","conformance-type":"import"},{"name":"iana-ssh-encryption-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-encryption-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-encryption-algs","conformance-type":"import"},{"name":"ietf-truststore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-truststore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-truststore","conformance-type":"import","feature":["inline-definitions-supported"]},{"name":"distributed-datastore-provider_2025-01-30","revision":"2025-01-30","schema":"/rests/modules/distributed-datastore-provider?revision=2025-01-30","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:distributed-datastore-provider","conformance-type":"import"},{"name":"opendaylight-group-types_2013-10-18","revision":"2013-10-18","schema":"/rests/modules/opendaylight-group-types?revision=2013-10-18","namespace":"urn:opendaylight:group:types","conformance-type":"import"},{"name":"sal-remote-augment_2023-11-03","revision":"2023-11-03","schema":"/rests/modules/sal-remote-augment?revision=2023-11-03","namespace":"urn:sal:restconf:event:subscription","conformance-type":"import"},{"name":"opendaylight-ipv6-arbitrary-bitmask-fields_2016-02-24","revision":"2016-02-24","schema":"/rests/modules/opendaylight-ipv6-arbitrary-bitmask-fields?revision=2016-02-24","namespace":"urn:opendaylight:opendaylight-ipv6-arbitrary-bitmask-fields","conformance-type":"import"},{"name":"sal-flows-batch_2016-03-14","revision":"2016-03-14","schema":"/rests/modules/sal-flows-batch?revision=2016-03-14","namespace":"urn:opendaylight:flows:service","conformance-type":"import"},{"name":"ietf-tls-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-common","conformance-type":"import","feature":["tls12","hello-params","tls13"]},{"name":"openflow-types_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-types?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:types","conformance-type":"import"},{"name":"ietf-netconf-with-defaults_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf-with-defaults?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults","conformance-type":"import"},{"name":"odl-srm-ops_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-ops?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:ops","conformance-type":"import"},{"name":"odl-general-entity_2015-09-30","revision":"2015-09-30","schema":"/rests/modules/odl-general-entity?revision=2015-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:mdsal:core:general-entity","conformance-type":"import"},{"name":"iana-ssh-key-exchange-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-key-exchange-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-key-exchange-algs","conformance-type":"import"},{"name":"node-ssl-connection-error_2019-07-23","revision":"2019-07-23","schema":"/rests/modules/node-ssl-connection-error?revision=2019-07-23","namespace":"urn:opendaylight:node-ssl-connection-error:service","conformance-type":"import"},{"name":"openflow-protocol_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-protocol?revision=2013-07-31","namespace":"urn:opendaylight:openflow:protocol","conformance-type":"import"},{"name":"ietf-udp-server_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-server?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-server","conformance-type":"import"},{"name":"ietf-keystore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-keystore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-keystore","conformance-type":"import","feature":["asymmetric-keys","inline-definitions-supported"]},{"name":"aaa_2016-12-14","revision":"2016-12-14","schema":"/rests/modules/aaa?revision=2016-12-14","namespace":"urn:opendaylight:params:xml:ns:yang:aaa","conformance-type":"import"},{"name":"aaa-cert-rpc_2015-12-15","revision":"2015-12-15","schema":"/rests/modules/aaa-cert-rpc?revision=2015-12-15","namespace":"urn:opendaylight:yang:aaa:cert:rpc","conformance-type":"import"},{"name":"system-notifications_2013-09-27","revision":"2013-09-27","schema":"/rests/modules/system-notifications?revision=2013-09-27","namespace":"urn:opendaylight:openflow:system","conformance-type":"import"},{"name":"sal-flat-batch_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/sal-flat-batch?revision=2016-03-21","namespace":"urn:opendaylight:flat-batch:service","conformance-type":"import"},{"name":"notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netconf:notification:1.0","conformance-type":"import"},{"name":"sal-remote_2014-01-14","revision":"2014-01-14","schema":"/rests/modules/sal-remote?revision=2014-01-14","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:remote","conformance-type":"import"},{"name":"yang-ext_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/yang-ext?revision=2013-07-09","namespace":"urn:opendaylight:yang:extension:yang-ext","conformance-type":"import"},{"name":"opendaylight-multipart-types_2017-01-12","revision":"2017-01-12","schema":"/rests/modules/opendaylight-multipart-types?revision=2017-01-12","namespace":"urn:opendaylight:multipart:types","conformance-type":"import"},{"name":"opendaylight-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-inventory?revision=2013-08-19","namespace":"urn:opendaylight:inventory","conformance-type":"import"},{"name":"sal-queue_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-queue?revision=2015-03-05","namespace":"urn:opendaylight:queue:service","conformance-type":"import"},{"name":"sal-groups-batch_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/sal-groups-batch?revision=2016-03-15","namespace":"urn:opendaylight:groups:service","conformance-type":"import"},{"name":"arbitrator-reconcile_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/arbitrator-reconcile?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:arbitrator-reconcile:service","conformance-type":"import"},{"name":"ietf-yang-metadata_2016-08-05","revision":"2016-08-05","schema":"/rests/modules/ietf-yang-metadata?revision=2016-08-05","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-metadata","conformance-type":"import"},{"name":"opendaylight-arbitrary-bitmask-fields_2016-01-30","revision":"2016-01-30","schema":"/rests/modules/opendaylight-arbitrary-bitmask-fields?revision=2016-01-30","namespace":"urn:opendaylight:arbitrary:bitmask:fields","conformance-type":"import"},{"name":"ietf-udp-client_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-client?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-client","conformance-type":"import","feature":["local-binding"]},{"name":"opendaylight-meter-types_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/opendaylight-meter-types?revision=2013-09-18","namespace":"urn:opendaylight:meter:types","conformance-type":"import"},{"name":"opendaylight-action-types_2013-11-12","revision":"2013-11-12","schema":"/rests/modules/opendaylight-action-types?revision=2013-11-12","namespace":"urn:opendaylight:action:types","conformance-type":"import"},{"name":"sal-role_2015-07-27","revision":"2015-07-27","schema":"/rests/modules/sal-role?revision=2015-07-27","namespace":"urn:opendaylight:role:service","conformance-type":"import"},{"name":"openflow-provider-config_2016-05-10","revision":"2016-05-10","schema":"/rests/modules/openflow-provider-config?revision=2016-05-10","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:provider:config","conformance-type":"import"},{"name":"odl-serviceutils-upgrade_2018-07-02","revision":"2018-07-02","schema":"/rests/modules/odl-serviceutils-upgrade?revision=2018-07-02","namespace":"urn:opendaylight:serviceutils:upgrade","conformance-type":"import"},{"name":"opendaylight-match-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-match-types?revision=2013-10-26","namespace":"urn:opendaylight:model:match:types","conformance-type":"import"},{"name":"ietf-restconf-server_2024-08-14","revision":"2024-08-14","schema":"/rests/modules/ietf-restconf-server?revision=2024-08-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-server","conformance-type":"import","feature":["http-listen","https-listen"]},{"name":"reconciliation-result-state_2017-07-13","revision":"2017-07-13","schema":"/rests/modules/reconciliation-result-state?revision=2017-07-13","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:rf:state","conformance-type":"import"},{"name":"onf-extensions_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/onf-extensions?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf","conformance-type":"import"},{"name":"sal-table_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/sal-table?revision=2013-10-26","namespace":"urn:opendaylight:table:service","conformance-type":"import"},{"name":"iana-http-versions_2026-02-04","revision":"2026-02-04","schema":"/rests/modules/iana-http-versions?revision=2026-02-04","namespace":"urn:ietf:params:xml:ns:yang:iana-http-versions","conformance-type":"import"},{"name":"opendaylight-direct-statistics_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/opendaylight-direct-statistics?revision=2016-05-11","namespace":"urn:opendaylight:direct:statistics","conformance-type":"import"},{"name":"opendaylight-port-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-port-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:port","conformance-type":"import"},{"name":"sal-async-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/sal-async-config?revision=2017-06-19","namespace":"urn:opendaylight:async-config:service","conformance-type":"import"},{"name":"aaa-password-service-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-password-service-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:password:service:config","conformance-type":"import"},{"name":"ietf-yang-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-yang-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-types","conformance-type":"import"},{"name":"opendaylight-queue-statistics_2013-12-16","revision":"2013-12-16","schema":"/rests/modules/opendaylight-queue-statistics?revision=2013-12-16","namespace":"urn:opendaylight:queue:statistics","conformance-type":"import"},{"name":"sal-bundle_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/sal-bundle?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf:bundle:service","conformance-type":"import"},{"name":"ietf-restconf-subscribed-notifications_2019-11-17","revision":"2019-11-17","schema":"/rests/modules/ietf-restconf-subscribed-notifications?revision=2019-11-17","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-subscribed-notifications","conformance-type":"import"},{"name":"sal-meters-batch_2016-03-16","revision":"2016-03-16","schema":"/rests/modules/sal-meters-batch?revision=2016-03-16","namespace":"urn:opendaylight:meters:service","conformance-type":"import"},{"name":"odl-entity-owners","revision":"","schema":"/rests/modules/odl-entity-owners","namespace":"urn:opendaylight:params:xml:ns:yang:controller:entity-owners","conformance-type":"import"},{"name":"sal-experimenter-mp-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-mp-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-mp-message:service","conformance-type":"import"},{"name":"packet-processing_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/packet-processing?revision=2013-07-09","namespace":"urn:opendaylight:packet:service","conformance-type":"import"},{"name":"openflow-configuration_2014-06-30","revision":"2014-06-30","schema":"/rests/modules/openflow-configuration?revision=2014-06-30","namespace":"urn:opendaylight:openflow:config","conformance-type":"import"},{"name":"odl-srm-rpcs_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-rpcs?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:rpc","conformance-type":"import"},{"name":"ietf-netconf-acm_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-netconf-acm?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-acm","conformance-type":"import"},{"name":"iana-crypt-hash_2014-08-06","revision":"2014-08-06","schema":"/rests/modules/iana-crypt-hash?revision=2014-08-06","namespace":"urn:ietf:params:xml:ns:yang:iana-crypt-hash","conformance-type":"import","feature":["crypt-hash-sha-512","crypt-hash-sha-256","crypt-hash-md5"]},{"name":"openflow-extensible-match_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-extensible-match?revision=2015-02-25","namespace":"urn:opendaylight:openflow:oxm","conformance-type":"import"}],"module-set-id":"2"}}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:43.040693" elapsed="0.005241"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:43.040111" elapsed="0.005860"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:43.040058" elapsed="0.005939"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:43.048611" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:43.046339" elapsed="0.002319"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:43.046078" elapsed="0.002615"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:43.046060" elapsed="0.002657"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:49:43.049367" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:49:43.048923" elapsed="0.000471"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:43.049726" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:43.049487" elapsed="0.000296"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:49:43.050291" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:49:43.049968" elapsed="0.000350"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:43.049806" elapsed="0.000548"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:43.049467" elapsed="0.000909"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:49:43.050918" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:49:43.050555" elapsed="0.000390"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:43.051290" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:43.051037" elapsed="0.000312"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:49:43.051844" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:49:43.051530" elapsed="0.000341"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:43.051372" elapsed="0.000534"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:43.051018" elapsed="0.000910"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:49:43.052133" elapsed="0.000378"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:49:43.053000" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:49:43.052699" elapsed="0.000327"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:49:43.053217" elapsed="0.002175"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:49:43.038272" elapsed="0.017245"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:49:43.055870" elapsed="0.000147"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:49:43.055648" elapsed="0.000467"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:43.055597" elapsed="0.000556"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:49:43.065347" level="INFO">${text_normalized} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:49:43.056891" elapsed="0.008507"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:49:43.065477" elapsed="0.000069"/>
</return>
<msg time="2026-04-08T00:49:43.065808" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:49:43.008661" elapsed="0.057257"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:49:43.066405" elapsed="0.000032"/>
</return>
<msg time="2026-04-08T00:49:43.066586" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="PASS" start="2026-04-08T00:49:42.836219" elapsed="0.230395"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Json_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:43.066943" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:43.066700" elapsed="0.000445"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:43.066682" elapsed="0.000506"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:49:43.067224" elapsed="0.000028"/>
</return>
<arg>session=${session}</arg>
<arg>folder=${RESTCONF_MODULES_DIR}</arg>
<arg>verify=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Add arguments sensible for JSON data, return Get_Templated response text.
Optionally, verification against JSON data (may be iterated) is called.
Only subset of JSON data is verified and returned if JMES path is specified in
file ${folder}/jmespath.expr.</doc>
<status status="PASS" start="2026-04-08T00:49:42.832071" elapsed="0.235283"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:42.826308" elapsed="0.241090"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:42.826284" elapsed="0.241138"/>
</if>
<kw name="Resolve_Shard_Type_Class" owner="ClusterManagement">
<if>
<branch type="IF" condition="'${shard_type}' == 'config'">
<return>
<value>DistributedConfigDatastore</value>
<status status="NOT RUN" start="2026-04-08T00:49:43.068028" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:49:43.067919" elapsed="0.000182"/>
</branch>
<branch type="ELSE IF" condition="'${shard_type}' == 'operational'">
<return>
<value>DistributedOperationalDatastore</value>
<status status="PASS" start="2026-04-08T00:49:43.068255" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-08T00:49:43.068125" elapsed="0.000188"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:43.067901" elapsed="0.000436"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized shard type: ${shard_type}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:43.068482" elapsed="0.000022"/>
</kw>
<msg time="2026-04-08T00:49:43.068601" level="INFO">${type_class} = DistributedOperationalDatastore</msg>
<var>${type_class}</var>
<arg>shard_type=${shard_type}</arg>
<doc>Simple lookup for class name corresponding to desired type.</doc>
<status status="PASS" start="2026-04-08T00:49:43.067650" elapsed="0.000976"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:49:43.069182" level="INFO">${cluster_index} = 1</msg>
<var>${cluster_index}</var>
<arg>${member_index}+${NODE_ROLE_INDEX_START}-1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:49:43.068792" elapsed="0.000418"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:49:43.069834" level="INFO">${uri} = jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-topology-operational,type=DistributedOperationalDatastore</msg>
<var>${uri}</var>
<arg>${JOLOKIA_READ_URI}:Category=Shards,name=member-${cluster_index}-shard-${shard_name}-${shard_type},type=${type_class}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:49:43.069365" elapsed="0.000496"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:43.075538" level="INFO">jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-topology-operational,type=DistributedOperationalDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:43.075079" elapsed="0.000507"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:43.076223" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:43.075741" elapsed="0.000533"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:49:43.097086" level="INFO">GET Request : url=http://10.30.170.48:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-topology-operational,type=DistributedOperationalDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-topology-operational,type=DistributedOperationalDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:49:43.097249" level="INFO">GET Response : url=http://10.30.170.48:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-topology-operational,type=DistributedOperationalDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Wed, 08 Apr 2026 00:49:43 GMT', 'Expires': 'Tue, 07 Apr 2026 23:49:43 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-1-shard-topology-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"ReadWriteTransactionCount":1,"SnapshotIndex":1,"InMemoryJournalLogSize":1,"ReplicatedToAllIndex":1,"Leader":"member-1-shard-topology-operational","LastIndex":2,"RaftState":"Leader","LastApplied":2,"LastCommittedTransactionTime":"2026-04-08 00:46:46.969","PeerAddresses":"member-2-shard-topology-operational: pekko:\/\/opendaylight-cluster-data@10.30.170.131:2550\/user\/shardmanager-operational\/member-2-shard-topology-operational, member-3-shard-topology-operational: pekko:\/\/opendaylight-cluster-data@10.30.171.110:2550\/user\/shardmanager-operational\/member-3-shard-topology-operational","LastLogIndex":2,"LastLeadershipChangeTime":"2026-04-08 00:46:45.974","FollowerInitialSyncStatus":false,"FollowerInfo":[{"timeSinceLastActivity":"00:00:00.409","active":true,"matchIndex":2,"voting":true,"id":"member-2-shard-topology-operational","nextIndex":3},{"timeSinceLastActivity":"00:00:00.411","active":true,"matchIndex":2,"voting":true,"id":"member-3-shard-topology-operational","nextIndex":3}],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"936.6 μs","CurrentTerm":2,"LastTerm":2,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-topology-operational","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":1,"TxCohortCacheSize":0,"PeerVotingStates":"member-2-shard-topology-operational: true, member-3-shard-topology-operational: true","LastLogTerm":2,"StatRetrievalError":null,"CommitIndex":2,"SnapshotTerm":2,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-1-shard-topology-operational","LeadershipChangeCount":1,"InMemoryJournalDataSize":260},"timestamp":1775609383,"status":200} 
 </msg>
<msg time="2026-04-08T00:49:43.097454" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:49:43.087140" elapsed="0.010420"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:43.076344" elapsed="0.021474"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:43.098004" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:43.097849" elapsed="0.000578"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:43.076325" elapsed="0.022161"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:43.103070" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-1-shard-topology-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"ReadWriteTransactionCount":1,"SnapshotIndex":1,"InMemoryJournalLogSize":1,"ReplicatedToAllIndex":1,"Leader":"member-1-shard-topology-operational","LastIndex":2,"RaftState":"Leader","LastApplied":2,"LastCommittedTransactionTime":"2026-04-08 00:46:46.969","PeerAddresses":"member-2-shard-topology-operational: pekko:\/\/opendaylight-cluster-data@10.30.170.131:2550\/user\/shardmanager-operational\/member-2-shard-topology-operational, member-3-shard-topology-operational: pekko:\/\/opendaylight-cluster-data@10.30.171.110:2550\/user\/shardmanager-operational\/member-3-shard-topology-operational","LastLogIndex":2,"LastLeadershipChangeTime":"2026-04-08 00:46:45.974","FollowerInitialSyncStatus":false,"FollowerInfo":[{"timeSinceLastActivity":"00:00:00.409","active":true,"matchIndex":2,"voting":true,"id":"member-2-shard-topology-operational","nextIndex":3},{"timeSinceLastActivity":"00:00:00.411","active":true,"matchIndex":2,"voting":true,"id":"member-3-shard-topology-operational","nextIndex":3}],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"936.6 μs","CurrentTerm":2,"LastTerm":2,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-topology-operational","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":1,"TxCohortCacheSize":0,"PeerVotingStates":"member-2-shard-topology-operational: true, member-3-shard-topology-operational: true","LastLogTerm":2,"StatRetrievalError":null,"CommitIndex":2,"SnapshotTerm":2,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-1-shard-topology-operational","LeadershipChangeCount":1,"InMemoryJournalDataSize":260},"timestamp":1775609383,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:43.100558" elapsed="0.002645"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:43.099672" elapsed="0.003583"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:43.099653" elapsed="0.003641"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:43.106580" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:43.104250" elapsed="0.002428"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:43.103379" elapsed="0.003347"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:43.103360" elapsed="0.003405"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:49:43.108195" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:49:43.107392" elapsed="0.000867"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:43.108903" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:43.108436" elapsed="0.000554"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:49:43.109882" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:49:43.109378" elapsed="0.000549"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:43.109029" elapsed="0.000948"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:43.108415" elapsed="0.001598"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:49:43.111492" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:49:43.110733" elapsed="0.000820"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:43.112224" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:43.111719" elapsed="0.000592"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:49:43.113199" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:49:43.112678" elapsed="0.000567"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:43.112349" elapsed="0.000945"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:43.111698" elapsed="0.001632"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:49:43.113549" elapsed="0.000694"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:49:43.115045" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:49:43.114553" elapsed="0.000552"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:49:43.115401" elapsed="0.002334"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:49:43.098970" elapsed="0.018925"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:49:43.118094" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:49:43.117968" elapsed="0.000172"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:43.117949" elapsed="0.000351"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:49:43.121858" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-1-shard-topology-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:49:43.118451" elapsed="0.003437"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:49:43.121971" elapsed="0.000033"/>
</return>
<msg time="2026-04-08T00:49:43.122135" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-1-shard-topology-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:49:43.070819" elapsed="0.051385"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:49:43.122265" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:49:43.122416" level="INFO">${data_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-1-shard-topology-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp...</msg>
<var>${data_text}</var>
<arg>uri=${uri}</arg>
<arg>session=${session}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-08T00:49:43.070074" elapsed="0.052368"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:49:43.123529" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-1-shard-topology-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 17756093...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:49:43.123000" elapsed="0.000558"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-08T00:49:43.123607" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:49:43.123787" level="INFO">${data_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-1-shard-topology-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 17756093...</msg>
<var>${data_object}</var>
<arg>${data_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-08T00:49:43.122662" elapsed="0.001151"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:49:43.124293" level="INFO">${value} = {'AbortTransactionsCount': 0, 'CommitIndex': 2, 'CommittedTransactionsCount': 1, 'CurrentTerm': 2, 'FailedReadTransactionsCount': 0, 'FailedTransactionsCount': 0, 'FollowerInfo': [{'active': True, 'id...</msg>
<var>${value}</var>
<arg>${data_object}</arg>
<arg>value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:49:43.123967" elapsed="0.000357"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:49:43.124682" level="INFO">${raft_property} = Leader</msg>
<var>${raft_property}</var>
<arg>${value}</arg>
<arg>${property}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:49:43.124480" elapsed="0.000227"/>
</kw>
<return>
<value>${raft_property}</value>
<status status="PASS" start="2026-04-08T00:49:43.124753" elapsed="0.000027"/>
</return>
<msg time="2026-04-08T00:49:43.124902" level="INFO">${raft_state} = Leader</msg>
<var>${raft_state}</var>
<arg>RaftState</arg>
<arg>${shard_name}</arg>
<arg>${shard_type}</arg>
<arg>${member_index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft property.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T00:49:42.824490" elapsed="0.300436"/>
</kw>
<return>
<value>${raft_state}</value>
<status status="PASS" start="2026-04-08T00:49:43.124983" elapsed="0.000025"/>
</return>
<msg time="2026-04-08T00:49:43.125127" level="INFO">${raft_state} = Leader</msg>
<var>${raft_state}</var>
<arg>shard_name=${shard_name}</arg>
<arg>shard_type=${ds_type}</arg>
<arg>member_index=${index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft status.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T00:49:42.823662" elapsed="0.301489"/>
</kw>
<if>
<branch type="IF" condition="'Follower' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${follower_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:43.125463" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:43.125248" elapsed="0.000272"/>
</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="PASS" start="2026-04-08T00:49:43.125748" elapsed="0.000190"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:43.125543" elapsed="0.000432"/>
</branch>
<branch type="ELSE IF" condition="${validate}">
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized Raft state: ${raft_state}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:43.126142" elapsed="0.000094"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:43.125999" elapsed="0.000272"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:43.125230" elapsed="0.001063"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T00:49:42.823410" elapsed="0.302907"/>
</iter>
<iter>
<kw name="Get_Raft_State_Of_Shard_At_Member" owner="ClusterManagement">
<kw name="Get_Raft_Property_From_Shard_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:49:43.128803" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:49:43.128336" elapsed="0.000495"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:49:43.128878" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:49:43.129028" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:49:43.127963" elapsed="0.001090"/>
</kw>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Get_As_Json_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:49:43.211209" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:49:43.210811" elapsed="0.000429"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:49:43.212068" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:49:43.211798" elapsed="0.000345">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-08T00:49:43.212256" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:49:43.211463" elapsed="0.000818"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:49:43.212867" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:49:43.212477" elapsed="0.000418"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T00:49:43.213213" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-08T00:49:43.213369" level="INFO">${template} = /rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T00:49:43.213056" elapsed="0.000339"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:43.213794" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:43.213551" elapsed="0.000289"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:43.214810" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:43.214558" elapsed="0.000296"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-08T00:49:43.215299" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-08T00:49:43.215012" elapsed="0.000313"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:43.215654" elapsed="0.000021"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:43.215853" elapsed="0.000024"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:43.216027" elapsed="0.000021"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-08T00:49:43.215521" elapsed="0.000563"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-08T00:49:43.215379" elapsed="0.000735"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-08T00:49:43.216175" elapsed="0.000033"/>
</return>
<msg time="2026-04-08T00:49:43.216364" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-08T00:49:43.214237" elapsed="0.002154"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:43.213914" elapsed="0.002510"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:43.216595" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:43.216449" elapsed="0.000201"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:43.213892" elapsed="0.002779"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:49:43.217265" level="INFO">${final_text} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:49:43.216812" elapsed="0.000480"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T00:49:43.217340" 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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="PASS" start="2026-04-08T00:49:43.210201" elapsed="0.007261"/>
</kw>
<msg time="2026-04-08T00:49:43.217516" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:49:43.197996" elapsed="0.019601"/>
</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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:43.230890" elapsed="0.000060"/>
</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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:43.243598" elapsed="0.000042"/>
</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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:43.255636" elapsed="0.000042"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:43.256436" elapsed="0.000038"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:43.257198" elapsed="0.000036"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:43.257769" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:43.257620" elapsed="0.000206"/>
</branch>
<status status="NOT RUN" start="2026-04-08T00:49:43.257603" elapsed="0.000248"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:43.258010" elapsed="0.000021"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:43.258211" elapsed="0.000022"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:43.258396" elapsed="0.000021"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-08T00:49:43.257549" elapsed="0.000921"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-08T00:49:43.257323" elapsed="0.001186"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:43.259211" elapsed="0.000036"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-08T00:49:43.259331" elapsed="0.000051"/>
</return>
<msg time="2026-04-08T00:49:43.259564" level="INFO">${uri} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-08T00:49:43.191962" elapsed="0.067710"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:49:43.262627" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:49:43.262347" elapsed="0.000353">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-08T00:49:43.262891" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:49:43.261873" elapsed="0.001063"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:43.263475" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:43.263066" elapsed="0.000477"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:49:43.264150" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:49:43.263854" elapsed="0.000339"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:43.263582" elapsed="0.000657"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:43.263016" elapsed="0.001261"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:49:43.267516" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:49:43.265112" elapsed="0.002451"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-08T00:49:43.267639" elapsed="0.000167"/>
</return>
<msg time="2026-04-08T00:49:43.268065" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:49:43.260695" elapsed="0.007496"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:49:43.271001" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:49:43.270749" elapsed="0.000317">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-08T00:49:43.271273" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:49:43.270312" elapsed="0.001006"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-08T00:49:43.271700" elapsed="0.000081"/>
</return>
<status status="PASS" start="2026-04-08T00:49:43.271451" elapsed="0.000397"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:43.271399" elapsed="0.000488"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:43.272677" elapsed="0.000039"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:43.273578" elapsed="0.000037"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-08T00:49:43.273688" elapsed="0.000049"/>
</return>
<msg time="2026-04-08T00:49:43.275819" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:49:43.269065" elapsed="0.006863"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:43.279807" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:43.279420" elapsed="0.000486"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:43.281008" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:43.280629" elapsed="0.000474"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:49:43.319243" level="INFO">GET Request : url=http://10.30.170.131:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 path_url=/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0evogeryo91251obsb096nsda10.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:49:43.319807" level="INFO">GET Response : url=http://10.30.170.131:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Transfer-Encoding': 'chunked'} 
 body={"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","hidden-symmetric-keys","encrypted-private-keys","asymmetrically-encrypted-value-format","cms-encrypted-data-format","cleartext-private-keys","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["ssh-client-keepalives","client-ident-hostbased","client-ident-publickey","client-ident-password"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-ex... (set the log level to DEBUG or TRACE to see the full content) 
 </msg>
<msg time="2026-04-08T00:49:43.320013" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:49:43.283545" elapsed="0.036495"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:43.281398" elapsed="0.038699"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:43.320416" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:43.320142" elapsed="0.000351"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:43.281346" elapsed="0.039214"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:43.324946" level="INFO">{"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","hidden-symmetric-keys","encrypted-private-keys","asymmetrically-encrypted-value-format","cms-encrypted-data-format","cleartext-private-keys","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["ssh-client-keepalives","client-ident-hostbased","client-ident-publickey","client-ident-password"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-experimenter-types?revision=2015-10-20","namespace":"urn:opendaylight:openflowplugin:experimenter:types","conformance-type":"import"},{"name":"ietf-ip_2018-02-22","revision":"2018-02-22","schema":"/rests/modules/ietf-ip?revision=2018-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-ip","conformance-type":"import","feature":["ipv6-privacy-autoconf","ipv4-non-contiguous-netmasks"]},{"name":"ietf-tcp-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-client","conformance-type":"import","feature":["local-binding-supported","tcp-client-keepalives"]},{"name":"node-config_2014-10-15","revision":"2014-10-15","schema":"/rests/modules/node-config?revision=2014-10-15","namespace":"urn:opendaylight:module:config","conformance-type":"import"},{"name":"ietf-restconf_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf","conformance-type":"import"},{"name":"ietf-datastores_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-datastores?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-datastores","conformance-type":"import"},{"name":"ietf-yang-patch_2017-02-22","revision":"2017-02-22","schema":"/rests/modules/ietf-yang-patch?revision=2017-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-patch","conformance-type":"import"},{"name":"sal-group_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-group?revision=2013-09-18","namespace":"urn:opendaylight:group:service","conformance-type":"import"},{"name":"odl-codegen-extensions_2024-06-27","revision":"2024-06-27","schema":"/rests/modules/odl-codegen-extensions?revision=2024-06-27","namespace":"urn:opendaylight:yang:extension:codegen","conformance-type":"import"},{"name":"sal-meter_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-meter?revision=2013-09-18","namespace":"urn:opendaylight:meter:service","conformance-type":"import"},{"name":"ietf-interfaces_2018-02-20","revision":"2018-02-20","schema":"/rests/modules/ietf-interfaces?revision=2018-02-20","namespace":"urn:ietf:params:xml:ns:yang:ietf-interfaces","conformance-type":"import","feature":["pre-provisioning","if-mib","arbitrary-names"]},{"name":"opendaylight-l2-types_2013-08-27","revision":"2013-08-27","schema":"/rests/modules/opendaylight-l2-types?revision=2013-08-27","namespace":"urn:opendaylight:l2:types","conformance-type":"import"},{"name":"opendaylight-flow-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-flow-types?revision=2013-10-26","namespace":"urn:opendaylight:flow:types","conformance-type":"import"},{"name":"lldp-speaker-config_2016-05-12","revision":"2016-05-12","schema":"/rests/modules/lldp-speaker-config?revision=2016-05-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker:config","conformance-type":"import"},{"name":"aaa-cert_2015-11-26","revision":"2015-11-26","schema":"/rests/modules/aaa-cert?revision=2015-11-26","namespace":"urn:opendaylight:yang:aaa:cert","conformance-type":"import"},{"name":"openflow-action_2015-02-03","revision":"2015-02-03","schema":"/rests/modules/openflow-action?revision=2015-02-03","namespace":"urn:opendaylight:openflow:common:action","conformance-type":"import"},{"name":"openflow-approved-extensions_2016-08-02","revision":"2016-08-02","schema":"/rests/modules/openflow-approved-extensions?revision=2016-08-02","namespace":"urn:opendaylight:openflow:approved:extensions","conformance-type":"import"},{"name":"nc-notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/nc-notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netmod:notification","conformance-type":"import"},{"name":"ietf-netconf-nmda_2019-01-07","revision":"2019-01-07","schema":"/rests/modules/ietf-netconf-nmda?revision=2019-01-07","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-nmda","conformance-type":"import","feature":["with-defaults","origin"]},{"name":"ietf-tcp-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-common","conformance-type":"import","feature":["keepalives-supported"]},{"name":"network-topology_2013-10-21","revision":"2013-10-21","schema":"/rests/modules/network-topology?revision=2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:network-topology","conformance-type":"import"},{"name":"aaa-encrypt-service-config_2024-02-02","revision":"2024-02-02","schema":"/rests/modules/aaa-encrypt-service-config?revision=2024-02-02","namespace":"config:aaa:authn:encrypt:service:config","conformance-type":"import"},{"name":"openflow-instruction_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-instruction?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:instruction","conformance-type":"import"},{"name":"ietf-tls-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-client","conformance-type":"import","feature":["client-ident-x509-cert","server-auth-x509-cert"]},{"name":"opendaylight-group-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-group-statistics?revision=2013-11-11","namespace":"urn:opendaylight:group:statistics","conformance-type":"import"},{"name":"cluster-admin_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/cluster-admin?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:cluster:admin","conformance-type":"import"},{"name":"opendaylight-flow-statistics_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-flow-statistics?revision=2013-08-19","namespace":"urn:opendaylight:flow:statistics","conformance-type":"import"},{"name":"opendaylight-table-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-table-types?revision=2013-10-26","namespace":"urn:opendaylight:table:types","conformance-type":"import"},{"name":"forwarding-rules-manager-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/forwarding-rules-manager-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:forwardingrules-manager:config","conformance-type":"import"},{"name":"odl-srm-types_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-types?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:types","conformance-type":"import"},{"name":"ietf-x509-cert-to-name_2014-12-10","revision":"2014-12-10","schema":"/rests/modules/ietf-x509-cert-to-name?revision=2014-12-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-x509-cert-to-name","conformance-type":"import"},{"name":"flow-node-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-node-inventory?revision=2013-08-19","namespace":"urn:opendaylight:flow:inventory","conformance-type":"import"},{"name":"flow-errors_2013-11-16","revision":"2013-11-16","schema":"/rests/modules/flow-errors?revision=2013-11-16","namespace":"urn:opendaylight:flow:errors","conformance-type":"import"},{"name":"ietf-netconf_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:netconf:base:1.0","conformance-type":"import","feature":["xpath","url","rollback-on-error","validate","startup","candidate","confirmed-commit","writable-running"]},{"name":"iana-ssh-public-key-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-public-key-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-public-key-algs","conformance-type":"import"},{"name":"aaa-cert-mdsal_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/aaa-cert-mdsal?revision=2016-03-21","namespace":"urn:opendaylight:yang:aaa:cert:mdsal","conformance-type":"import"},{"name":"odl-device-notification_2024-02-18","revision":"2024-02-18","schema":"/rests/modules/odl-device-notification?revision=2024-02-18","namespace":"urn:opendaylight:device:notification","conformance-type":"import"},{"name":"ietf-origin_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-origin?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-origin","conformance-type":"import"},{"name":"openflow-augments_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-augments?revision=2015-02-25","namespace":"urn:opendaylight:openflow:augments","conformance-type":"import"},{"name":"iana-ssh-encryption-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-encryption-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-encryption-algs","conformance-type":"import"},{"name":"ietf-truststore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-truststore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-truststore","conformance-type":"import","feature":["inline-definitions-supported"]},{"name":"distributed-datastore-provider_2025-01-30","revision":"2025-01-30","schema":"/rests/modules/distributed-datastore-provider?revision=2025-01-30","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:distributed-datastore-provider","conformance-type":"import"},{"name":"opendaylight-group-types_2013-10-18","revision":"2013-10-18","schema":"/rests/modules/opendaylight-group-types?revision=2013-10-18","namespace":"urn:opendaylight:group:types","conformance-type":"import"},{"name":"sal-remote-augment_2023-11-03","revision":"2023-11-03","schema":"/rests/modules/sal-remote-augment?revision=2023-11-03","namespace":"urn:sal:restconf:event:subscription","conformance-type":"import"},{"name":"opendaylight-ipv6-arbitrary-bitmask-fields_2016-02-24","revision":"2016-02-24","schema":"/rests/modules/opendaylight-ipv6-arbitrary-bitmask-fields?revision=2016-02-24","namespace":"urn:opendaylight:opendaylight-ipv6-arbitrary-bitmask-fields","conformance-type":"import"},{"name":"sal-flows-batch_2016-03-14","revision":"2016-03-14","schema":"/rests/modules/sal-flows-batch?revision=2016-03-14","namespace":"urn:opendaylight:flows:service","conformance-type":"import"},{"name":"ietf-tls-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-common","conformance-type":"import","feature":["tls12","hello-params","tls13"]},{"name":"openflow-types_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-types?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:types","conformance-type":"import"},{"name":"ietf-netconf-with-defaults_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf-with-defaults?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults","conformance-type":"import"},{"name":"odl-srm-ops_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-ops?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:ops","conformance-type":"import"},{"name":"odl-general-entity_2015-09-30","revision":"2015-09-30","schema":"/rests/modules/odl-general-entity?revision=2015-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:mdsal:core:general-entity","conformance-type":"import"},{"name":"iana-ssh-key-exchange-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-key-exchange-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-key-exchange-algs","conformance-type":"import"},{"name":"node-ssl-connection-error_2019-07-23","revision":"2019-07-23","schema":"/rests/modules/node-ssl-connection-error?revision=2019-07-23","namespace":"urn:opendaylight:node-ssl-connection-error:service","conformance-type":"import"},{"name":"openflow-protocol_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-protocol?revision=2013-07-31","namespace":"urn:opendaylight:openflow:protocol","conformance-type":"import"},{"name":"ietf-udp-server_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-server?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-server","conformance-type":"import"},{"name":"ietf-keystore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-keystore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-keystore","conformance-type":"import","feature":["asymmetric-keys","inline-definitions-supported"]},{"name":"aaa_2016-12-14","revision":"2016-12-14","schema":"/rests/modules/aaa?revision=2016-12-14","namespace":"urn:opendaylight:params:xml:ns:yang:aaa","conformance-type":"import"},{"name":"aaa-cert-rpc_2015-12-15","revision":"2015-12-15","schema":"/rests/modules/aaa-cert-rpc?revision=2015-12-15","namespace":"urn:opendaylight:yang:aaa:cert:rpc","conformance-type":"import"},{"name":"system-notifications_2013-09-27","revision":"2013-09-27","schema":"/rests/modules/system-notifications?revision=2013-09-27","namespace":"urn:opendaylight:openflow:system","conformance-type":"import"},{"name":"sal-flat-batch_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/sal-flat-batch?revision=2016-03-21","namespace":"urn:opendaylight:flat-batch:service","conformance-type":"import"},{"name":"notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netconf:notification:1.0","conformance-type":"import"},{"name":"sal-remote_2014-01-14","revision":"2014-01-14","schema":"/rests/modules/sal-remote?revision=2014-01-14","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:remote","conformance-type":"import"},{"name":"yang-ext_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/yang-ext?revision=2013-07-09","namespace":"urn:opendaylight:yang:extension:yang-ext","conformance-type":"import"},{"name":"opendaylight-multipart-types_2017-01-12","revision":"2017-01-12","schema":"/rests/modules/opendaylight-multipart-types?revision=2017-01-12","namespace":"urn:opendaylight:multipart:types","conformance-type":"import"},{"name":"opendaylight-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-inventory?revision=2013-08-19","namespace":"urn:opendaylight:inventory","conformance-type":"import"},{"name":"sal-queue_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-queue?revision=2015-03-05","namespace":"urn:opendaylight:queue:service","conformance-type":"import"},{"name":"sal-groups-batch_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/sal-groups-batch?revision=2016-03-15","namespace":"urn:opendaylight:groups:service","conformance-type":"import"},{"name":"arbitrator-reconcile_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/arbitrator-reconcile?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:arbitrator-reconcile:service","conformance-type":"import"},{"name":"ietf-yang-metadata_2016-08-05","revision":"2016-08-05","schema":"/rests/modules/ietf-yang-metadata?revision=2016-08-05","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-metadata","conformance-type":"import"},{"name":"opendaylight-arbitrary-bitmask-fields_2016-01-30","revision":"2016-01-30","schema":"/rests/modules/opendaylight-arbitrary-bitmask-fields?revision=2016-01-30","namespace":"urn:opendaylight:arbitrary:bitmask:fields","conformance-type":"import"},{"name":"ietf-udp-client_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-client?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-client","conformance-type":"import","feature":["local-binding"]},{"name":"opendaylight-meter-types_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/opendaylight-meter-types?revision=2013-09-18","namespace":"urn:opendaylight:meter:types","conformance-type":"import"},{"name":"opendaylight-action-types_2013-11-12","revision":"2013-11-12","schema":"/rests/modules/opendaylight-action-types?revision=2013-11-12","namespace":"urn:opendaylight:action:types","conformance-type":"import"},{"name":"sal-role_2015-07-27","revision":"2015-07-27","schema":"/rests/modules/sal-role?revision=2015-07-27","namespace":"urn:opendaylight:role:service","conformance-type":"import"},{"name":"openflow-provider-config_2016-05-10","revision":"2016-05-10","schema":"/rests/modules/openflow-provider-config?revision=2016-05-10","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:provider:config","conformance-type":"import"},{"name":"odl-serviceutils-upgrade_2018-07-02","revision":"2018-07-02","schema":"/rests/modules/odl-serviceutils-upgrade?revision=2018-07-02","namespace":"urn:opendaylight:serviceutils:upgrade","conformance-type":"import"},{"name":"opendaylight-match-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-match-types?revision=2013-10-26","namespace":"urn:opendaylight:model:match:types","conformance-type":"import"},{"name":"ietf-restconf-server_2024-08-14","revision":"2024-08-14","schema":"/rests/modules/ietf-restconf-server?revision=2024-08-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-server","conformance-type":"import","feature":["http-listen","https-listen"]},{"name":"reconciliation-result-state_2017-07-13","revision":"2017-07-13","schema":"/rests/modules/reconciliation-result-state?revision=2017-07-13","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:rf:state","conformance-type":"import"},{"name":"onf-extensions_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/onf-extensions?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf","conformance-type":"import"},{"name":"sal-table_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/sal-table?revision=2013-10-26","namespace":"urn:opendaylight:table:service","conformance-type":"import"},{"name":"iana-http-versions_2026-02-04","revision":"2026-02-04","schema":"/rests/modules/iana-http-versions?revision=2026-02-04","namespace":"urn:ietf:params:xml:ns:yang:iana-http-versions","conformance-type":"import"},{"name":"opendaylight-direct-statistics_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/opendaylight-direct-statistics?revision=2016-05-11","namespace":"urn:opendaylight:direct:statistics","conformance-type":"import"},{"name":"opendaylight-port-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-port-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:port","conformance-type":"import"},{"name":"sal-async-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/sal-async-config?revision=2017-06-19","namespace":"urn:opendaylight:async-config:service","conformance-type":"import"},{"name":"aaa-password-service-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-password-service-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:password:service:config","conformance-type":"import"},{"name":"ietf-yang-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-yang-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-types","conformance-type":"import"},{"name":"opendaylight-queue-statistics_2013-12-16","revision":"2013-12-16","schema":"/rests/modules/opendaylight-queue-statistics?revision=2013-12-16","namespace":"urn:opendaylight:queue:statistics","conformance-type":"import"},{"name":"sal-bundle_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/sal-bundle?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf:bundle:service","conformance-type":"import"},{"name":"ietf-restconf-subscribed-notifications_2019-11-17","revision":"2019-11-17","schema":"/rests/modules/ietf-restconf-subscribed-notifications?revision=2019-11-17","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-subscribed-notifications","conformance-type":"import"},{"name":"sal-meters-batch_2016-03-16","revision":"2016-03-16","schema":"/rests/modules/sal-meters-batch?revision=2016-03-16","namespace":"urn:opendaylight:meters:service","conformance-type":"import"},{"name":"odl-entity-owners","revision":"","schema":"/rests/modules/odl-entity-owners","namespace":"urn:opendaylight:params:xml:ns:yang:controller:entity-owners","conformance-type":"import"},{"name":"sal-experimenter-mp-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-mp-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-mp-message:service","conformance-type":"import"},{"name":"packet-processing_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/packet-processing?revision=2013-07-09","namespace":"urn:opendaylight:packet:service","conformance-type":"import"},{"name":"openflow-configuration_2014-06-30","revision":"2014-06-30","schema":"/rests/modules/openflow-configuration?revision=2014-06-30","namespace":"urn:opendaylight:openflow:config","conformance-type":"import"},{"name":"odl-srm-rpcs_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-rpcs?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:rpc","conformance-type":"import"},{"name":"ietf-netconf-acm_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-netconf-acm?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-acm","conformance-type":"import"},{"name":"iana-crypt-hash_2014-08-06","revision":"2014-08-06","schema":"/rests/modules/iana-crypt-hash?revision=2014-08-06","namespace":"urn:ietf:params:xml:ns:yang:iana-crypt-hash","conformance-type":"import","feature":["crypt-hash-sha-512","crypt-hash-sha-256","crypt-hash-md5"]},{"name":"openflow-extensible-match_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-extensible-match?revision=2015-02-25","namespace":"urn:opendaylight:openflow:oxm","conformance-type":"import"}],"module-set-id":"2"}}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:43.322266" elapsed="0.003018"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:43.322026" elapsed="0.003294"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:43.322004" elapsed="0.003341"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:43.327797" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:43.325648" elapsed="0.002193"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:43.325425" elapsed="0.002451"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:43.325406" elapsed="0.002494"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:49:43.328490" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:49:43.328084" elapsed="0.000433"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:43.328878" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:43.328639" elapsed="0.000297"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:49:43.329503" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:49:43.329119" elapsed="0.000409"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:43.328959" elapsed="0.000605"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:43.328619" elapsed="0.000966"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:49:43.330123" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:49:43.329763" elapsed="0.000386"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:43.330490" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:43.330256" elapsed="0.000291"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:49:43.331023" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:49:43.330726" elapsed="0.000323"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:43.330570" elapsed="0.000513"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:43.330236" elapsed="0.000868"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:49:43.331287" elapsed="0.000351"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:49:43.332118" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:49:43.331822" elapsed="0.000321"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:49:43.332335" elapsed="0.002191"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:49:43.321314" elapsed="0.013333"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:49:43.334990" elapsed="0.000046"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:49:43.334775" elapsed="0.000324"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:43.334724" elapsed="0.000411"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:49:43.344041" level="INFO">${text_normalized} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:49:43.335853" elapsed="0.008237"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:49:43.344183" elapsed="0.000066"/>
</return>
<msg time="2026-04-08T00:49:43.344506" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:49:43.276663" elapsed="0.067977"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:49:43.345101" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:49:43.345367" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="PASS" start="2026-04-08T00:49:43.137029" elapsed="0.208366"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Json_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:43.345721" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:43.345481" elapsed="0.000426"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:43.345463" elapsed="0.000471"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:49:43.345969" elapsed="0.000027"/>
</return>
<arg>session=${session}</arg>
<arg>folder=${RESTCONF_MODULES_DIR}</arg>
<arg>verify=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Add arguments sensible for JSON data, return Get_Templated response text.
Optionally, verification against JSON data (may be iterated) is called.
Only subset of JSON data is verified and returned if JMES path is specified in
file ${folder}/jmespath.expr.</doc>
<status status="PASS" start="2026-04-08T00:49:43.133005" elapsed="0.213092"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:43.129121" elapsed="0.217020"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:43.129103" elapsed="0.217078"/>
</if>
<kw name="Resolve_Shard_Type_Class" owner="ClusterManagement">
<if>
<branch type="IF" condition="'${shard_type}' == 'config'">
<return>
<value>DistributedConfigDatastore</value>
<status status="NOT RUN" start="2026-04-08T00:49:43.346786" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:49:43.346677" elapsed="0.000154"/>
</branch>
<branch type="ELSE IF" condition="'${shard_type}' == 'operational'">
<return>
<value>DistributedOperationalDatastore</value>
<status status="PASS" start="2026-04-08T00:49:43.346955" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-08T00:49:43.346853" elapsed="0.000159"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:43.346659" elapsed="0.000376"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized shard type: ${shard_type}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:43.347194" elapsed="0.000023"/>
</kw>
<msg time="2026-04-08T00:49:43.347316" level="INFO">${type_class} = DistributedOperationalDatastore</msg>
<var>${type_class}</var>
<arg>shard_type=${shard_type}</arg>
<doc>Simple lookup for class name corresponding to desired type.</doc>
<status status="PASS" start="2026-04-08T00:49:43.346411" elapsed="0.000930"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:49:43.347875" level="INFO">${cluster_index} = 2</msg>
<var>${cluster_index}</var>
<arg>${member_index}+${NODE_ROLE_INDEX_START}-1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:49:43.347508" elapsed="0.000394"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:49:43.348537" level="INFO">${uri} = jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-topology-operational,type=DistributedOperationalDatastore</msg>
<var>${uri}</var>
<arg>${JOLOKIA_READ_URI}:Category=Shards,name=member-${cluster_index}-shard-${shard_name}-${shard_type},type=${type_class}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:49:43.348055" elapsed="0.000535"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:43.354124" level="INFO">jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-topology-operational,type=DistributedOperationalDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:43.353690" elapsed="0.000500"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:43.354780" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:43.354351" elapsed="0.000474"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:49:43.373238" level="INFO">GET Request : url=http://10.30.170.131:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-topology-operational,type=DistributedOperationalDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-topology-operational,type=DistributedOperationalDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:49:43.373380" level="INFO">GET Response : url=http://10.30.170.131:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-topology-operational,type=DistributedOperationalDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Wed, 08 Apr 2026 00:49:43 GMT', 'Expires': 'Tue, 07 Apr 2026 23:49:43 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-2-shard-topology-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"ReadWriteTransactionCount":0,"SnapshotIndex":1,"InMemoryJournalLogSize":1,"ReplicatedToAllIndex":1,"Leader":"member-1-shard-topology-operational","LastIndex":2,"RaftState":"Follower","LastCommittedTransactionTime":"1970-01-01 00:00:00.000","LastApplied":2,"PeerAddresses":"member-1-shard-topology-operational: pekko:\/\/opendaylight-cluster-data@10.30.170.48:2550\/user\/shardmanager-operational\/member-1-shard-topology-operational, member-3-shard-topology-operational: pekko:\/\/opendaylight-cluster-data@10.30.171.110:2550\/user\/shardmanager-operational\/member-3-shard-topology-operational","LastLogIndex":2,"LastLeadershipChangeTime":"2026-04-08 00:46:45.981","FollowerInitialSyncStatus":true,"FollowerInfo":[],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"602.7 μs","CurrentTerm":2,"LastTerm":2,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-topology-operational","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":0,"TxCohortCacheSize":0,"PeerVotingStates":"member-1-shard-topology-operational: true, member-3-shard-topology-operational: true","LastLogTerm":2,"StatRetrievalError":null,"CommitIndex":2,"SnapshotTerm":2,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-2-shard-topology-operational","LeadershipChangeCount":1,"InMemoryJournalDataSize":260},"timestamp":1775609383,"status":200} 
 </msg>
<msg time="2026-04-08T00:49:43.373572" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:49:43.365393" elapsed="0.008286"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:43.354893" elapsed="0.019039"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:43.374117" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:43.373963" elapsed="0.000701"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:43.354874" elapsed="0.019816"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:43.379296" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-2-shard-topology-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"ReadWriteTransactionCount":0,"SnapshotIndex":1,"InMemoryJournalLogSize":1,"ReplicatedToAllIndex":1,"Leader":"member-1-shard-topology-operational","LastIndex":2,"RaftState":"Follower","LastCommittedTransactionTime":"1970-01-01 00:00:00.000","LastApplied":2,"PeerAddresses":"member-1-shard-topology-operational: pekko:\/\/opendaylight-cluster-data@10.30.170.48:2550\/user\/shardmanager-operational\/member-1-shard-topology-operational, member-3-shard-topology-operational: pekko:\/\/opendaylight-cluster-data@10.30.171.110:2550\/user\/shardmanager-operational\/member-3-shard-topology-operational","LastLogIndex":2,"LastLeadershipChangeTime":"2026-04-08 00:46:45.981","FollowerInitialSyncStatus":true,"FollowerInfo":[],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"602.7 μs","CurrentTerm":2,"LastTerm":2,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-topology-operational","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":0,"TxCohortCacheSize":0,"PeerVotingStates":"member-1-shard-topology-operational: true, member-3-shard-topology-operational: true","LastLogTerm":2,"StatRetrievalError":null,"CommitIndex":2,"SnapshotTerm":2,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-2-shard-topology-operational","LeadershipChangeCount":1,"InMemoryJournalDataSize":260},"timestamp":1775609383,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:43.376782" elapsed="0.002629"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:43.375852" elapsed="0.003608"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:43.375833" elapsed="0.003666"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:43.382770" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:43.380435" elapsed="0.002434"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:43.379582" elapsed="0.003335"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:43.379563" elapsed="0.003392"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:49:43.384397" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:49:43.383631" elapsed="0.000829"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:43.385116" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:43.384650" elapsed="0.000570"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:49:43.386086" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:49:43.385587" elapsed="0.000543"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:43.385257" elapsed="0.001032"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:43.384606" elapsed="0.001720"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:49:43.387675" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:49:43.386927" elapsed="0.000808"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:43.388506" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:43.387899" elapsed="0.000695"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:49:43.389492" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:49:43.388977" elapsed="0.000562"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:43.388647" elapsed="0.000942"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:43.387879" elapsed="0.001743"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:49:43.389842" elapsed="0.000709"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:49:43.391353" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:49:43.390853" elapsed="0.000560"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:49:43.391692" elapsed="0.002316"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:49:43.375170" elapsed="0.019112"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:49:43.394484" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:49:43.394358" elapsed="0.000171"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:43.394339" elapsed="0.000212"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:49:43.398114" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-2-shard-topology-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:49:43.394695" elapsed="0.003449"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:49:43.398211" elapsed="0.000031"/>
</return>
<msg time="2026-04-08T00:49:43.398368" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-2-shard-topology-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:49:43.349553" elapsed="0.048842"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:49:43.398494" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:49:43.398645" level="INFO">${data_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-2-shard-topology-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp...</msg>
<var>${data_text}</var>
<arg>uri=${uri}</arg>
<arg>session=${session}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-08T00:49:43.348804" elapsed="0.049867"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:49:43.399734" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-2-shard-topology-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 17756093...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:49:43.399256" elapsed="0.000508"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-08T00:49:43.399813" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:49:43.399986" level="INFO">${data_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-2-shard-topology-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 17756093...</msg>
<var>${data_object}</var>
<arg>${data_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-08T00:49:43.398891" elapsed="0.001122"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:49:43.400469" level="INFO">${value} = {'AbortTransactionsCount': 0, 'CommitIndex': 2, 'CommittedTransactionsCount': 0, 'CurrentTerm': 2, 'FailedReadTransactionsCount': 0, 'FailedTransactionsCount': 0, 'FollowerInfo': [], 'FollowerInitialS...</msg>
<var>${value}</var>
<arg>${data_object}</arg>
<arg>value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:49:43.400265" elapsed="0.000231"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:49:43.400882" level="INFO">${raft_property} = Follower</msg>
<var>${raft_property}</var>
<arg>${value}</arg>
<arg>${property}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:49:43.400679" elapsed="0.000229"/>
</kw>
<return>
<value>${raft_property}</value>
<status status="PASS" start="2026-04-08T00:49:43.400954" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:49:43.401104" level="INFO">${raft_state} = Follower</msg>
<var>${raft_state}</var>
<arg>RaftState</arg>
<arg>${shard_name}</arg>
<arg>${shard_type}</arg>
<arg>${member_index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft property.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T00:49:43.127370" elapsed="0.273758"/>
</kw>
<return>
<value>${raft_state}</value>
<status status="PASS" start="2026-04-08T00:49:43.401203" elapsed="0.000027"/>
</return>
<msg time="2026-04-08T00:49:43.401350" level="INFO">${raft_state} = Follower</msg>
<var>${raft_state}</var>
<arg>shard_name=${shard_name}</arg>
<arg>shard_type=${ds_type}</arg>
<arg>member_index=${index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft status.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T00:49:43.126649" elapsed="0.274726"/>
</kw>
<if>
<branch type="IF" condition="'Follower' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${follower_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-08T00:49:43.401668" elapsed="0.000191"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:43.401453" elapsed="0.000444"/>
</branch>
<branch type="ELSE IF" condition="'Leader' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${leader_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:43.402063" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:43.401920" elapsed="0.000196"/>
</branch>
<branch type="ELSE IF" condition="${validate}">
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized Raft state: ${raft_state}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:43.402297" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:43.402139" elapsed="0.000209"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:43.401436" elapsed="0.000934"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T00:49:43.126483" elapsed="0.275910"/>
</iter>
<iter>
<kw name="Get_Raft_State_Of_Shard_At_Member" owner="ClusterManagement">
<kw name="Get_Raft_Property_From_Shard_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:49:43.404840" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:49:43.404500" elapsed="0.000367"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:49:43.404912" elapsed="0.000167"/>
</return>
<msg time="2026-04-08T00:49:43.405224" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:49:43.404045" elapsed="0.001206"/>
</kw>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Get_As_Json_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:49:43.486082" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:49:43.485712" elapsed="0.000399"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:49:43.486847" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:49:43.486618" elapsed="0.000301">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-08T00:49:43.487051" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:49:43.486287" elapsed="0.000789"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:49:43.487647" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:49:43.487257" elapsed="0.000417"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T00:49:43.487981" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-08T00:49:43.488148" level="INFO">${template} = /rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T00:49:43.487837" elapsed="0.000359"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:43.488608" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:43.488359" elapsed="0.000293"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:43.489631" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:43.489370" elapsed="0.000305"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-08T00:49:43.490104" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-08T00:49:43.489835" elapsed="0.000294"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:43.490470" elapsed="0.000022"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:43.490669" elapsed="0.000024"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:43.490841" elapsed="0.000021"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-08T00:49:43.490338" elapsed="0.000559"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-08T00:49:43.490197" elapsed="0.000729"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-08T00:49:43.490968" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:49:43.491122" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-08T00:49:43.489032" elapsed="0.002116"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:43.488722" elapsed="0.002473"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:43.491365" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:43.491219" elapsed="0.000200"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:43.488701" elapsed="0.002738"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:49:43.492019" level="INFO">${final_text} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:49:43.491588" elapsed="0.000458"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T00:49:43.492093" elapsed="0.000028"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="PASS" start="2026-04-08T00:49:43.485092" elapsed="0.007138"/>
</kw>
<msg time="2026-04-08T00:49:43.492289" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:49:43.473026" elapsed="0.019343"/>
</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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:43.504508" elapsed="0.000042"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:43.516800" elapsed="0.000048"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:43.528660" elapsed="0.000041"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:43.529474" elapsed="0.000038"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:43.530238" elapsed="0.000040"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:43.530820" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:43.530667" elapsed="0.000210"/>
</branch>
<status status="NOT RUN" start="2026-04-08T00:49:43.530651" elapsed="0.000249"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:43.531058" elapsed="0.000021"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:43.531261" elapsed="0.000025"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:43.531450" elapsed="0.000021"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-08T00:49:43.530601" elapsed="0.000924"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-08T00:49:43.530364" elapsed="0.001200"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:43.532271" elapsed="0.000036"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-08T00:49:43.532390" elapsed="0.000049"/>
</return>
<msg time="2026-04-08T00:49:43.532630" level="INFO">${uri} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-08T00:49:43.466999" elapsed="0.065740"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:49:43.535653" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:49:43.535378" elapsed="0.000343">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-08T00:49:43.535907" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:49:43.534890" elapsed="0.001063"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:43.536481" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:43.536082" elapsed="0.000465"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:49:43.537187" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:49:43.536850" elapsed="0.000364"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:43.536585" elapsed="0.000675"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:43.536032" elapsed="0.001266"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:49:43.540365" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:49:43.538005" elapsed="0.002406"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-08T00:49:43.540488" elapsed="0.000062"/>
</return>
<msg time="2026-04-08T00:49:43.540798" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:49:43.533743" elapsed="0.007169"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:49:43.543609" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:49:43.543367" elapsed="0.000305">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-08T00:49:43.543892" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:49:43.542920" elapsed="0.001016"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-08T00:49:43.544327" elapsed="0.000078"/>
</return>
<status status="PASS" start="2026-04-08T00:49:43.544066" elapsed="0.000405"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:43.544016" elapsed="0.000493"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:43.545251" elapsed="0.000037"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:43.545975" elapsed="0.000036"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-08T00:49:43.546082" elapsed="0.000047"/>
</return>
<msg time="2026-04-08T00:49:43.548309" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:49:43.541729" elapsed="0.006686"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:43.552149" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:43.551768" elapsed="0.000499"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:43.553516" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:43.552983" elapsed="0.000635"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:49:43.590143" level="INFO">GET Request : url=http://10.30.171.110:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 path_url=/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node09orwbuy1e81xg3wze7ww55ua0.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:49:43.590611" level="INFO">GET Response : url=http://10.30.171.110:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Transfer-Encoding': 'chunked'} 
 body={"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","hidden-symmetric-keys","encrypted-private-keys","asymmetrically-encrypted-value-format","cms-encrypted-data-format","cleartext-private-keys","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["ssh-client-keepalives","client-ident-hostbased","client-ident-publickey","client-ident-password"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-ex... (set the log level to DEBUG or TRACE to see the full content) 
 </msg>
<msg time="2026-04-08T00:49:43.590818" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:49:43.555934" elapsed="0.034911"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:43.553744" elapsed="0.037157"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:43.591223" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:43.590944" elapsed="0.000361"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:43.553694" elapsed="0.037646"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:43.595715" level="INFO">{"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","hidden-symmetric-keys","encrypted-private-keys","asymmetrically-encrypted-value-format","cms-encrypted-data-format","cleartext-private-keys","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["ssh-client-keepalives","client-ident-hostbased","client-ident-publickey","client-ident-password"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-experimenter-types?revision=2015-10-20","namespace":"urn:opendaylight:openflowplugin:experimenter:types","conformance-type":"import"},{"name":"ietf-ip_2018-02-22","revision":"2018-02-22","schema":"/rests/modules/ietf-ip?revision=2018-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-ip","conformance-type":"import","feature":["ipv6-privacy-autoconf","ipv4-non-contiguous-netmasks"]},{"name":"ietf-tcp-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-client","conformance-type":"import","feature":["local-binding-supported","tcp-client-keepalives"]},{"name":"node-config_2014-10-15","revision":"2014-10-15","schema":"/rests/modules/node-config?revision=2014-10-15","namespace":"urn:opendaylight:module:config","conformance-type":"import"},{"name":"ietf-restconf_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf","conformance-type":"import"},{"name":"ietf-datastores_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-datastores?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-datastores","conformance-type":"import"},{"name":"ietf-yang-patch_2017-02-22","revision":"2017-02-22","schema":"/rests/modules/ietf-yang-patch?revision=2017-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-patch","conformance-type":"import"},{"name":"sal-group_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-group?revision=2013-09-18","namespace":"urn:opendaylight:group:service","conformance-type":"import"},{"name":"odl-codegen-extensions_2024-06-27","revision":"2024-06-27","schema":"/rests/modules/odl-codegen-extensions?revision=2024-06-27","namespace":"urn:opendaylight:yang:extension:codegen","conformance-type":"import"},{"name":"sal-meter_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-meter?revision=2013-09-18","namespace":"urn:opendaylight:meter:service","conformance-type":"import"},{"name":"ietf-interfaces_2018-02-20","revision":"2018-02-20","schema":"/rests/modules/ietf-interfaces?revision=2018-02-20","namespace":"urn:ietf:params:xml:ns:yang:ietf-interfaces","conformance-type":"import","feature":["pre-provisioning","if-mib","arbitrary-names"]},{"name":"opendaylight-l2-types_2013-08-27","revision":"2013-08-27","schema":"/rests/modules/opendaylight-l2-types?revision=2013-08-27","namespace":"urn:opendaylight:l2:types","conformance-type":"import"},{"name":"opendaylight-flow-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-flow-types?revision=2013-10-26","namespace":"urn:opendaylight:flow:types","conformance-type":"import"},{"name":"lldp-speaker-config_2016-05-12","revision":"2016-05-12","schema":"/rests/modules/lldp-speaker-config?revision=2016-05-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker:config","conformance-type":"import"},{"name":"aaa-cert_2015-11-26","revision":"2015-11-26","schema":"/rests/modules/aaa-cert?revision=2015-11-26","namespace":"urn:opendaylight:yang:aaa:cert","conformance-type":"import"},{"name":"openflow-action_2015-02-03","revision":"2015-02-03","schema":"/rests/modules/openflow-action?revision=2015-02-03","namespace":"urn:opendaylight:openflow:common:action","conformance-type":"import"},{"name":"openflow-approved-extensions_2016-08-02","revision":"2016-08-02","schema":"/rests/modules/openflow-approved-extensions?revision=2016-08-02","namespace":"urn:opendaylight:openflow:approved:extensions","conformance-type":"import"},{"name":"nc-notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/nc-notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netmod:notification","conformance-type":"import"},{"name":"ietf-netconf-nmda_2019-01-07","revision":"2019-01-07","schema":"/rests/modules/ietf-netconf-nmda?revision=2019-01-07","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-nmda","conformance-type":"import","feature":["with-defaults","origin"]},{"name":"ietf-tcp-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-common","conformance-type":"import","feature":["keepalives-supported"]},{"name":"network-topology_2013-10-21","revision":"2013-10-21","schema":"/rests/modules/network-topology?revision=2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:network-topology","conformance-type":"import"},{"name":"aaa-encrypt-service-config_2024-02-02","revision":"2024-02-02","schema":"/rests/modules/aaa-encrypt-service-config?revision=2024-02-02","namespace":"config:aaa:authn:encrypt:service:config","conformance-type":"import"},{"name":"openflow-instruction_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-instruction?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:instruction","conformance-type":"import"},{"name":"ietf-tls-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-client","conformance-type":"import","feature":["client-ident-x509-cert","server-auth-x509-cert"]},{"name":"opendaylight-group-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-group-statistics?revision=2013-11-11","namespace":"urn:opendaylight:group:statistics","conformance-type":"import"},{"name":"cluster-admin_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/cluster-admin?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:cluster:admin","conformance-type":"import"},{"name":"opendaylight-flow-statistics_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-flow-statistics?revision=2013-08-19","namespace":"urn:opendaylight:flow:statistics","conformance-type":"import"},{"name":"opendaylight-table-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-table-types?revision=2013-10-26","namespace":"urn:opendaylight:table:types","conformance-type":"import"},{"name":"forwarding-rules-manager-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/forwarding-rules-manager-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:forwardingrules-manager:config","conformance-type":"import"},{"name":"odl-srm-types_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-types?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:types","conformance-type":"import"},{"name":"ietf-x509-cert-to-name_2014-12-10","revision":"2014-12-10","schema":"/rests/modules/ietf-x509-cert-to-name?revision=2014-12-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-x509-cert-to-name","conformance-type":"import"},{"name":"flow-node-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-node-inventory?revision=2013-08-19","namespace":"urn:opendaylight:flow:inventory","conformance-type":"import"},{"name":"flow-errors_2013-11-16","revision":"2013-11-16","schema":"/rests/modules/flow-errors?revision=2013-11-16","namespace":"urn:opendaylight:flow:errors","conformance-type":"import"},{"name":"ietf-netconf_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:netconf:base:1.0","conformance-type":"import","feature":["xpath","url","rollback-on-error","validate","startup","candidate","confirmed-commit","writable-running"]},{"name":"iana-ssh-public-key-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-public-key-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-public-key-algs","conformance-type":"import"},{"name":"aaa-cert-mdsal_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/aaa-cert-mdsal?revision=2016-03-21","namespace":"urn:opendaylight:yang:aaa:cert:mdsal","conformance-type":"import"},{"name":"odl-device-notification_2024-02-18","revision":"2024-02-18","schema":"/rests/modules/odl-device-notification?revision=2024-02-18","namespace":"urn:opendaylight:device:notification","conformance-type":"import"},{"name":"ietf-origin_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-origin?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-origin","conformance-type":"import"},{"name":"openflow-augments_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-augments?revision=2015-02-25","namespace":"urn:opendaylight:openflow:augments","conformance-type":"import"},{"name":"iana-ssh-encryption-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-encryption-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-encryption-algs","conformance-type":"import"},{"name":"ietf-truststore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-truststore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-truststore","conformance-type":"import","feature":["inline-definitions-supported"]},{"name":"distributed-datastore-provider_2025-01-30","revision":"2025-01-30","schema":"/rests/modules/distributed-datastore-provider?revision=2025-01-30","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:distributed-datastore-provider","conformance-type":"import"},{"name":"opendaylight-group-types_2013-10-18","revision":"2013-10-18","schema":"/rests/modules/opendaylight-group-types?revision=2013-10-18","namespace":"urn:opendaylight:group:types","conformance-type":"import"},{"name":"sal-remote-augment_2023-11-03","revision":"2023-11-03","schema":"/rests/modules/sal-remote-augment?revision=2023-11-03","namespace":"urn:sal:restconf:event:subscription","conformance-type":"import"},{"name":"opendaylight-ipv6-arbitrary-bitmask-fields_2016-02-24","revision":"2016-02-24","schema":"/rests/modules/opendaylight-ipv6-arbitrary-bitmask-fields?revision=2016-02-24","namespace":"urn:opendaylight:opendaylight-ipv6-arbitrary-bitmask-fields","conformance-type":"import"},{"name":"sal-flows-batch_2016-03-14","revision":"2016-03-14","schema":"/rests/modules/sal-flows-batch?revision=2016-03-14","namespace":"urn:opendaylight:flows:service","conformance-type":"import"},{"name":"ietf-tls-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-common","conformance-type":"import","feature":["tls12","hello-params","tls13"]},{"name":"openflow-types_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-types?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:types","conformance-type":"import"},{"name":"ietf-netconf-with-defaults_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf-with-defaults?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults","conformance-type":"import"},{"name":"odl-srm-ops_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-ops?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:ops","conformance-type":"import"},{"name":"odl-general-entity_2015-09-30","revision":"2015-09-30","schema":"/rests/modules/odl-general-entity?revision=2015-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:mdsal:core:general-entity","conformance-type":"import"},{"name":"iana-ssh-key-exchange-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-key-exchange-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-key-exchange-algs","conformance-type":"import"},{"name":"node-ssl-connection-error_2019-07-23","revision":"2019-07-23","schema":"/rests/modules/node-ssl-connection-error?revision=2019-07-23","namespace":"urn:opendaylight:node-ssl-connection-error:service","conformance-type":"import"},{"name":"openflow-protocol_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-protocol?revision=2013-07-31","namespace":"urn:opendaylight:openflow:protocol","conformance-type":"import"},{"name":"ietf-udp-server_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-server?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-server","conformance-type":"import"},{"name":"ietf-keystore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-keystore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-keystore","conformance-type":"import","feature":["asymmetric-keys","inline-definitions-supported"]},{"name":"aaa_2016-12-14","revision":"2016-12-14","schema":"/rests/modules/aaa?revision=2016-12-14","namespace":"urn:opendaylight:params:xml:ns:yang:aaa","conformance-type":"import"},{"name":"aaa-cert-rpc_2015-12-15","revision":"2015-12-15","schema":"/rests/modules/aaa-cert-rpc?revision=2015-12-15","namespace":"urn:opendaylight:yang:aaa:cert:rpc","conformance-type":"import"},{"name":"system-notifications_2013-09-27","revision":"2013-09-27","schema":"/rests/modules/system-notifications?revision=2013-09-27","namespace":"urn:opendaylight:openflow:system","conformance-type":"import"},{"name":"sal-flat-batch_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/sal-flat-batch?revision=2016-03-21","namespace":"urn:opendaylight:flat-batch:service","conformance-type":"import"},{"name":"notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netconf:notification:1.0","conformance-type":"import"},{"name":"sal-remote_2014-01-14","revision":"2014-01-14","schema":"/rests/modules/sal-remote?revision=2014-01-14","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:remote","conformance-type":"import"},{"name":"yang-ext_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/yang-ext?revision=2013-07-09","namespace":"urn:opendaylight:yang:extension:yang-ext","conformance-type":"import"},{"name":"opendaylight-multipart-types_2017-01-12","revision":"2017-01-12","schema":"/rests/modules/opendaylight-multipart-types?revision=2017-01-12","namespace":"urn:opendaylight:multipart:types","conformance-type":"import"},{"name":"opendaylight-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-inventory?revision=2013-08-19","namespace":"urn:opendaylight:inventory","conformance-type":"import"},{"name":"sal-queue_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-queue?revision=2015-03-05","namespace":"urn:opendaylight:queue:service","conformance-type":"import"},{"name":"sal-groups-batch_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/sal-groups-batch?revision=2016-03-15","namespace":"urn:opendaylight:groups:service","conformance-type":"import"},{"name":"arbitrator-reconcile_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/arbitrator-reconcile?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:arbitrator-reconcile:service","conformance-type":"import"},{"name":"ietf-yang-metadata_2016-08-05","revision":"2016-08-05","schema":"/rests/modules/ietf-yang-metadata?revision=2016-08-05","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-metadata","conformance-type":"import"},{"name":"opendaylight-arbitrary-bitmask-fields_2016-01-30","revision":"2016-01-30","schema":"/rests/modules/opendaylight-arbitrary-bitmask-fields?revision=2016-01-30","namespace":"urn:opendaylight:arbitrary:bitmask:fields","conformance-type":"import"},{"name":"ietf-udp-client_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-client?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-client","conformance-type":"import","feature":["local-binding"]},{"name":"opendaylight-meter-types_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/opendaylight-meter-types?revision=2013-09-18","namespace":"urn:opendaylight:meter:types","conformance-type":"import"},{"name":"opendaylight-action-types_2013-11-12","revision":"2013-11-12","schema":"/rests/modules/opendaylight-action-types?revision=2013-11-12","namespace":"urn:opendaylight:action:types","conformance-type":"import"},{"name":"sal-role_2015-07-27","revision":"2015-07-27","schema":"/rests/modules/sal-role?revision=2015-07-27","namespace":"urn:opendaylight:role:service","conformance-type":"import"},{"name":"openflow-provider-config_2016-05-10","revision":"2016-05-10","schema":"/rests/modules/openflow-provider-config?revision=2016-05-10","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:provider:config","conformance-type":"import"},{"name":"odl-serviceutils-upgrade_2018-07-02","revision":"2018-07-02","schema":"/rests/modules/odl-serviceutils-upgrade?revision=2018-07-02","namespace":"urn:opendaylight:serviceutils:upgrade","conformance-type":"import"},{"name":"opendaylight-match-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-match-types?revision=2013-10-26","namespace":"urn:opendaylight:model:match:types","conformance-type":"import"},{"name":"ietf-restconf-server_2024-08-14","revision":"2024-08-14","schema":"/rests/modules/ietf-restconf-server?revision=2024-08-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-server","conformance-type":"import","feature":["http-listen","https-listen"]},{"name":"reconciliation-result-state_2017-07-13","revision":"2017-07-13","schema":"/rests/modules/reconciliation-result-state?revision=2017-07-13","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:rf:state","conformance-type":"import"},{"name":"onf-extensions_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/onf-extensions?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf","conformance-type":"import"},{"name":"sal-table_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/sal-table?revision=2013-10-26","namespace":"urn:opendaylight:table:service","conformance-type":"import"},{"name":"iana-http-versions_2026-02-04","revision":"2026-02-04","schema":"/rests/modules/iana-http-versions?revision=2026-02-04","namespace":"urn:ietf:params:xml:ns:yang:iana-http-versions","conformance-type":"import"},{"name":"opendaylight-direct-statistics_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/opendaylight-direct-statistics?revision=2016-05-11","namespace":"urn:opendaylight:direct:statistics","conformance-type":"import"},{"name":"opendaylight-port-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-port-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:port","conformance-type":"import"},{"name":"sal-async-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/sal-async-config?revision=2017-06-19","namespace":"urn:opendaylight:async-config:service","conformance-type":"import"},{"name":"aaa-password-service-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-password-service-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:password:service:config","conformance-type":"import"},{"name":"ietf-yang-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-yang-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-types","conformance-type":"import"},{"name":"opendaylight-queue-statistics_2013-12-16","revision":"2013-12-16","schema":"/rests/modules/opendaylight-queue-statistics?revision=2013-12-16","namespace":"urn:opendaylight:queue:statistics","conformance-type":"import"},{"name":"sal-bundle_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/sal-bundle?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf:bundle:service","conformance-type":"import"},{"name":"ietf-restconf-subscribed-notifications_2019-11-17","revision":"2019-11-17","schema":"/rests/modules/ietf-restconf-subscribed-notifications?revision=2019-11-17","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-subscribed-notifications","conformance-type":"import"},{"name":"sal-meters-batch_2016-03-16","revision":"2016-03-16","schema":"/rests/modules/sal-meters-batch?revision=2016-03-16","namespace":"urn:opendaylight:meters:service","conformance-type":"import"},{"name":"odl-entity-owners","revision":"","schema":"/rests/modules/odl-entity-owners","namespace":"urn:opendaylight:params:xml:ns:yang:controller:entity-owners","conformance-type":"import"},{"name":"sal-experimenter-mp-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-mp-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-mp-message:service","conformance-type":"import"},{"name":"packet-processing_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/packet-processing?revision=2013-07-09","namespace":"urn:opendaylight:packet:service","conformance-type":"import"},{"name":"openflow-configuration_2014-06-30","revision":"2014-06-30","schema":"/rests/modules/openflow-configuration?revision=2014-06-30","namespace":"urn:opendaylight:openflow:config","conformance-type":"import"},{"name":"odl-srm-rpcs_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-rpcs?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:rpc","conformance-type":"import"},{"name":"ietf-netconf-acm_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-netconf-acm?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-acm","conformance-type":"import"},{"name":"iana-crypt-hash_2014-08-06","revision":"2014-08-06","schema":"/rests/modules/iana-crypt-hash?revision=2014-08-06","namespace":"urn:ietf:params:xml:ns:yang:iana-crypt-hash","conformance-type":"import","feature":["crypt-hash-sha-512","crypt-hash-sha-256","crypt-hash-md5"]},{"name":"openflow-extensible-match_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-extensible-match?revision=2015-02-25","namespace":"urn:opendaylight:openflow:oxm","conformance-type":"import"}],"module-set-id":"2"}}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:43.593035" elapsed="0.003077"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:43.592795" elapsed="0.003354"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:43.592773" elapsed="0.003426"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:43.598703" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:43.596507" elapsed="0.002242"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:43.596283" elapsed="0.002500"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:43.596262" elapsed="0.002545"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:49:43.599393" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:49:43.598993" elapsed="0.000427"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:43.599747" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:43.599511" elapsed="0.000294"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:49:43.600374" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:49:43.599988" elapsed="0.000412"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:43.599828" elapsed="0.000609"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:43.599492" elapsed="0.000966"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:49:43.600998" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:49:43.600636" elapsed="0.000414"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:43.601395" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:43.601142" elapsed="0.000311"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:49:43.601932" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:49:43.601634" elapsed="0.000324"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:43.601476" elapsed="0.000517"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:43.601122" elapsed="0.000892"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:49:43.602197" elapsed="0.000350"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:49:43.603022" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:49:43.602730" elapsed="0.000317"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:49:43.603234" elapsed="0.002183"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:49:43.592066" elapsed="0.013472"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:49:43.605880" elapsed="0.000046"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:49:43.605666" elapsed="0.000322"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:43.605617" elapsed="0.000407"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:49:43.616438" level="INFO">${text_normalized} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:49:43.606743" elapsed="0.009748"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:49:43.616573" elapsed="0.000071"/>
</return>
<msg time="2026-04-08T00:49:43.616912" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:49:43.549071" elapsed="0.067950"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:49:43.617520" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:49:43.617698" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="PASS" start="2026-04-08T00:49:43.413193" elapsed="0.204532"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Json_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:43.618088" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:43.617813" elapsed="0.000489"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:43.617795" elapsed="0.000536"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:49:43.618366" elapsed="0.000027"/>
</return>
<arg>session=${session}</arg>
<arg>folder=${RESTCONF_MODULES_DIR}</arg>
<arg>verify=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Add arguments sensible for JSON data, return Get_Templated response text.
Optionally, verification against JSON data (may be iterated) is called.
Only subset of JSON data is verified and returned if JMES path is specified in
file ${folder}/jmespath.expr.</doc>
<status status="PASS" start="2026-04-08T00:49:43.409173" elapsed="0.209320"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:43.405319" elapsed="0.213216"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:43.405302" elapsed="0.213257"/>
</if>
<kw name="Resolve_Shard_Type_Class" owner="ClusterManagement">
<if>
<branch type="IF" condition="'${shard_type}' == 'config'">
<return>
<value>DistributedConfigDatastore</value>
<status status="NOT RUN" start="2026-04-08T00:49:43.619206" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:49:43.619076" elapsed="0.000176"/>
</branch>
<branch type="ELSE IF" condition="'${shard_type}' == 'operational'">
<return>
<value>DistributedOperationalDatastore</value>
<status status="PASS" start="2026-04-08T00:49:43.619384" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-08T00:49:43.619277" elapsed="0.000164"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:43.619058" elapsed="0.000406"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized shard type: ${shard_type}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:43.619623" elapsed="0.000022"/>
</kw>
<msg time="2026-04-08T00:49:43.619741" level="INFO">${type_class} = DistributedOperationalDatastore</msg>
<var>${type_class}</var>
<arg>shard_type=${shard_type}</arg>
<doc>Simple lookup for class name corresponding to desired type.</doc>
<status status="PASS" start="2026-04-08T00:49:43.618788" elapsed="0.000978"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:49:43.620375" level="INFO">${cluster_index} = 3</msg>
<var>${cluster_index}</var>
<arg>${member_index}+${NODE_ROLE_INDEX_START}-1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:49:43.619941" elapsed="0.000461"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:49:43.621023" level="INFO">${uri} = jolokia/read/org.opendaylight.controller:Category=Shards,name=member-3-shard-topology-operational,type=DistributedOperationalDatastore</msg>
<var>${uri}</var>
<arg>${JOLOKIA_READ_URI}:Category=Shards,name=member-${cluster_index}-shard-${shard_name}-${shard_type},type=${type_class}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:49:43.620558" elapsed="0.000534"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:43.626910" level="INFO">jolokia/read/org.opendaylight.controller:Category=Shards,name=member-3-shard-topology-operational,type=DistributedOperationalDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:43.626458" elapsed="0.000499"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:43.627571" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:43.627112" elapsed="0.000504"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:49:43.645962" level="INFO">GET Request : url=http://10.30.171.110:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-3-shard-topology-operational,type=DistributedOperationalDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-3-shard-topology-operational,type=DistributedOperationalDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:49:43.646099" level="INFO">GET Response : url=http://10.30.171.110:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-3-shard-topology-operational,type=DistributedOperationalDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Wed, 08 Apr 2026 00:49:43 GMT', 'Expires': 'Tue, 07 Apr 2026 23:49:43 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-3-shard-topology-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"ReadWriteTransactionCount":0,"SnapshotIndex":1,"InMemoryJournalLogSize":1,"ReplicatedToAllIndex":1,"Leader":"member-1-shard-topology-operational","LastIndex":2,"RaftState":"Follower","LastApplied":2,"LastCommittedTransactionTime":"1970-01-01 00:00:00.000","PeerAddresses":"member-1-shard-topology-operational: pekko:\/\/opendaylight-cluster-data@10.30.170.48:2550\/user\/shardmanager-operational\/member-1-shard-topology-operational, member-2-shard-topology-operational: pekko:\/\/opendaylight-cluster-data@10.30.170.131:2550\/user\/shardmanager-operational\/member-2-shard-topology-operational","LastLogIndex":2,"LastLeadershipChangeTime":"2026-04-08 00:46:45.978","FollowerInitialSyncStatus":true,"FollowerInfo":[],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"508.8 μs","CurrentTerm":2,"LastTerm":2,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-topology-operational","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":0,"TxCohortCacheSize":0,"PeerVotingStates":"member-1-shard-topology-operational: true, member-2-shard-topology-operational: true","LastLogTerm":2,"StatRetrievalError":null,"CommitIndex":2,"SnapshotTerm":2,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-3-shard-topology-operational","LeadershipChangeCount":1,"InMemoryJournalDataSize":260},"timestamp":1775609383,"status":200} 
 </msg>
<msg time="2026-04-08T00:49:43.646334" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:49:43.638680" elapsed="0.007801"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:43.627685" elapsed="0.019146"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:43.647089" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:43.646873" elapsed="0.000675"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:43.627666" elapsed="0.019918"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:43.654408" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-3-shard-topology-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"ReadWriteTransactionCount":0,"SnapshotIndex":1,"InMemoryJournalLogSize":1,"ReplicatedToAllIndex":1,"Leader":"member-1-shard-topology-operational","LastIndex":2,"RaftState":"Follower","LastApplied":2,"LastCommittedTransactionTime":"1970-01-01 00:00:00.000","PeerAddresses":"member-1-shard-topology-operational: pekko:\/\/opendaylight-cluster-data@10.30.170.48:2550\/user\/shardmanager-operational\/member-1-shard-topology-operational, member-2-shard-topology-operational: pekko:\/\/opendaylight-cluster-data@10.30.170.131:2550\/user\/shardmanager-operational\/member-2-shard-topology-operational","LastLogIndex":2,"LastLeadershipChangeTime":"2026-04-08 00:46:45.978","FollowerInitialSyncStatus":true,"FollowerInfo":[],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"508.8 μs","CurrentTerm":2,"LastTerm":2,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-topology-operational","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":0,"TxCohortCacheSize":0,"PeerVotingStates":"member-1-shard-topology-operational: true, member-2-shard-topology-operational: true","LastLogTerm":2,"StatRetrievalError":null,"CommitIndex":2,"SnapshotTerm":2,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-3-shard-topology-operational","LeadershipChangeCount":1,"InMemoryJournalDataSize":260},"timestamp":1775609383,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:43.650823" elapsed="0.003697"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:43.649598" elapsed="0.004971"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:43.649570" elapsed="0.005038"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:43.657870" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:43.655574" elapsed="0.002396"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:43.654691" elapsed="0.003328"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:43.654673" elapsed="0.003384"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:49:43.659517" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:49:43.658747" elapsed="0.000831"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:43.660221" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:43.659744" elapsed="0.000564"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:49:43.661215" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:49:43.660671" elapsed="0.000592"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:43.660344" elapsed="0.000970"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:43.659723" elapsed="0.001626"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:49:43.662750" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:49:43.661955" elapsed="0.000855"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:43.663450" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:43.662975" elapsed="0.000561"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:49:43.664416" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:49:43.663905" elapsed="0.000558"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:43.663573" elapsed="0.000939"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:43.662955" elapsed="0.001592"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:49:43.664769" elapsed="0.000646"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:49:43.666283" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:49:43.665720" elapsed="0.000627"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:49:43.666628" elapsed="0.002304"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:49:43.648556" elapsed="0.020534"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:49:43.669335" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:49:43.669202" elapsed="0.000179"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:43.669182" elapsed="0.000221"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:49:43.672971" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-3-shard-topology-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:49:43.669547" elapsed="0.003453"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:49:43.673052" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:49:43.673237" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-3-shard-topology-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:49:43.622232" elapsed="0.051033"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:49:43.673357" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:49:43.673508" level="INFO">${data_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-3-shard-topology-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp...</msg>
<var>${data_text}</var>
<arg>uri=${uri}</arg>
<arg>session=${session}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-08T00:49:43.621407" elapsed="0.052127"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:49:43.674697" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-3-shard-topology-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 17756093...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:49:43.674092" elapsed="0.000634"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-08T00:49:43.674776" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:49:43.674950" level="INFO">${data_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-3-shard-topology-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 17756093...</msg>
<var>${data_object}</var>
<arg>${data_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-08T00:49:43.673753" elapsed="0.001224"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:49:43.675356" level="INFO">${value} = {'AbortTransactionsCount': 0, 'CommitIndex': 2, 'CommittedTransactionsCount': 0, 'CurrentTerm': 2, 'FailedReadTransactionsCount': 0, 'FailedTransactionsCount': 0, 'FollowerInfo': [], 'FollowerInitialS...</msg>
<var>${value}</var>
<arg>${data_object}</arg>
<arg>value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:49:43.675137" elapsed="0.000246"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:49:43.675739" level="INFO">${raft_property} = Follower</msg>
<var>${raft_property}</var>
<arg>${value}</arg>
<arg>${property}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:49:43.675539" elapsed="0.000225"/>
</kw>
<return>
<value>${raft_property}</value>
<status status="PASS" start="2026-04-08T00:49:43.675809" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:49:43.675958" level="INFO">${raft_state} = Follower</msg>
<var>${raft_state}</var>
<arg>RaftState</arg>
<arg>${shard_name}</arg>
<arg>${shard_type}</arg>
<arg>${member_index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft property.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T00:49:43.403448" elapsed="0.272534"/>
</kw>
<return>
<value>${raft_state}</value>
<status status="PASS" start="2026-04-08T00:49:43.676038" elapsed="0.000026"/>
</return>
<msg time="2026-04-08T00:49:43.676199" level="INFO">${raft_state} = Follower</msg>
<var>${raft_state}</var>
<arg>shard_name=${shard_name}</arg>
<arg>shard_type=${ds_type}</arg>
<arg>member_index=${index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft status.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T00:49:43.402726" elapsed="0.273499"/>
</kw>
<if>
<branch type="IF" condition="'Follower' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${follower_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-08T00:49:43.676518" elapsed="0.000191"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:43.676304" elapsed="0.000442"/>
</branch>
<branch type="ELSE IF" condition="'Leader' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${leader_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:43.676914" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:43.676770" 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 with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:43.677131" elapsed="0.000061"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:43.676990" elapsed="0.000234"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:43.676287" elapsed="0.000960"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T00:49:43.402561" elapsed="0.274710"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-08T00:49:42.823171" elapsed="0.854134"/>
</for>
<return>
<value>${leader_list}</value>
<value>${follower_list}</value>
<status status="PASS" start="2026-04-08T00:49:43.677347" elapsed="0.000026"/>
</return>
<msg time="2026-04-08T00:49:43.677545" level="INFO">${leader_list} = [1]</msg>
<msg time="2026-04-08T00:49:43.677591" level="INFO">${follower_list} = [2, 3]</msg>
<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="PASS" start="2026-04-08T00:49:42.818694" elapsed="0.858920"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T00:49:43.678057" level="INFO">Length is 1.</msg>
<msg time="2026-04-08T00:49:43.678132" level="INFO">${leader_count} = 1</msg>
<var>${leader_count}</var>
<arg>${leader_list}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T00:49:43.677785" elapsed="0.000430"/>
</kw>
<if>
<branch type="IF" condition="${leader_count} &lt; 1">
<kw name="Fail" owner="BuiltIn">
<arg>No leader found.</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:43.678504" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:43.678288" elapsed="0.000268"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:43.678270" elapsed="0.000309"/>
</if>
<kw name="Length Should Be" owner="BuiltIn">
<msg time="2026-04-08T00:49:43.680604" level="INFO">Length is 1.</msg>
<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="PASS" start="2026-04-08T00:49:43.678807" elapsed="0.001842"/>
</kw>
<kw name="Get From List" owner="Collections">
<msg time="2026-04-08T00:49:43.681032" level="INFO">${leader} = 1</msg>
<var>${leader}</var>
<arg>${leader_list}</arg>
<arg>0</arg>
<doc>Returns the value specified with an ``index`` from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:49:43.680844" elapsed="0.000214"/>
</kw>
<return>
<value>${leader}</value>
<value>${follower_list}</value>
<status status="PASS" start="2026-04-08T00:49:43.681104" elapsed="0.000029"/>
</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="PASS" start="2026-04-08T00:49:42.816153" elapsed="0.865143"/>
</kw>
<var name="${shard_name}">topology</var>
<status status="PASS" start="2026-04-08T00:49:42.815917" elapsed="0.865425"/>
</iter>
<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-04-08T00:49:43.685829" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:49:43.685448" elapsed="0.000408"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:49:43.686337" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:49:43.686014" elapsed="0.000349"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:49:43.686408" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:49:43.686562" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:49:43.685040" elapsed="0.001547"/>
</kw>
<kw name="Sort List" owner="Collections">
<arg>${index_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="PASS" start="2026-04-08T00:49:43.686739" elapsed="0.000153"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:49:43.687399" level="INFO">${ds_type} = operational</msg>
<var>${ds_type}</var>
<arg>'${shard_type}' != 'config'</arg>
<arg>operational</arg>
<arg>config</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:49:43.687049" elapsed="0.000376"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:49:43.687820" level="INFO">${leader_list} = []</msg>
<var>${leader_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:49:43.687581" elapsed="0.000264"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:49:43.688250" level="INFO">${follower_list} = []</msg>
<var>${follower_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:49:43.687991" elapsed="0.000285"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_Raft_State_Of_Shard_At_Member" owner="ClusterManagement">
<kw name="Get_Raft_Property_From_Shard_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:49:43.690723" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:49:43.690383" elapsed="0.000368"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:49:43.690797" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:49:43.690945" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:49:43.690028" elapsed="0.000942"/>
</kw>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Get_As_Json_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:49:43.776343" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:49:43.775904" elapsed="0.000474"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:49:43.777205" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:49:43.776915" elapsed="0.000386">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-08T00:49:43.777415" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:49:43.776556" elapsed="0.000884"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:49:43.778007" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:49:43.777607" elapsed="0.000429"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T00:49:43.778369" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-08T00:49:43.778546" level="INFO">${template} = /rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T00:49:43.778214" elapsed="0.000359"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:43.779089" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:43.778742" elapsed="0.000394"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:43.780176" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:43.779901" elapsed="0.000324"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-08T00:49:43.780668" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-08T00:49:43.780387" elapsed="0.000308"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:43.781048" elapsed="0.000022"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:43.781278" elapsed="0.000024"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:43.781483" elapsed="0.000022"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-08T00:49:43.780912" elapsed="0.000630"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-08T00:49:43.780765" elapsed="0.000809"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-08T00:49:43.781623" elapsed="0.000034"/>
</return>
<msg time="2026-04-08T00:49:43.781801" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-08T00:49:43.779566" elapsed="0.002262"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:43.779239" elapsed="0.002622"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:43.782035" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:43.781887" elapsed="0.000204"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:43.779213" elapsed="0.002898"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:49:43.782719" level="INFO">${final_text} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:49:43.782271" elapsed="0.000481"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T00:49:43.782803" 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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="PASS" start="2026-04-08T00:49:43.775246" elapsed="0.007681"/>
</kw>
<msg time="2026-04-08T00:49:43.782982" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:49:43.762675" elapsed="0.020392"/>
</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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:43.795788" elapsed="0.000049"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:43.808735" elapsed="0.000053"/>
</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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:43.821083" elapsed="0.000044"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:43.821970" elapsed="0.000042"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:43.822759" elapsed="0.000039"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:43.823378" elapsed="0.000089"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:43.823223" elapsed="0.000285"/>
</branch>
<status status="NOT RUN" start="2026-04-08T00:49:43.823203" elapsed="0.000331"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:43.823699" elapsed="0.000022"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:43.823899" elapsed="0.000037"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:43.824122" elapsed="0.000023"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-08T00:49:43.823128" elapsed="0.001092"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-08T00:49:43.822887" elapsed="0.001378"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:43.824980" elapsed="0.000037"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-08T00:49:43.825104" elapsed="0.000065"/>
</return>
<msg time="2026-04-08T00:49:43.825381" level="INFO">${uri} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-08T00:49:43.756492" elapsed="0.069036"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:49:43.828601" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:49:43.828300" elapsed="0.000377">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-08T00:49:43.828901" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:49:43.827768" elapsed="0.001183"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:43.829555" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:43.829102" elapsed="0.000525"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:49:43.830371" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:49:43.829945" elapsed="0.000453"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:43.829667" elapsed="0.000778"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:43.829047" elapsed="0.001437"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:49:43.834517" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:49:43.831242" elapsed="0.003345"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-08T00:49:43.834700" elapsed="0.000094"/>
</return>
<msg time="2026-04-08T00:49:43.835204" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:49:43.826582" elapsed="0.008793"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:49:43.839078" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:49:43.838825" elapsed="0.000319">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-08T00:49:43.839355" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:49:43.838311" elapsed="0.001089"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-08T00:49:43.839785" elapsed="0.000079"/>
</return>
<status status="PASS" start="2026-04-08T00:49:43.839535" elapsed="0.000397"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:43.839483" elapsed="0.000488"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:43.840733" elapsed="0.000038"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:43.841498" elapsed="0.000041"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-08T00:49:43.841632" elapsed="0.000050"/>
</return>
<msg time="2026-04-08T00:49:43.843902" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:49:43.836566" elapsed="0.007445"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:43.848099" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:43.847694" elapsed="0.000526"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:43.849332" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:43.848917" elapsed="0.000516"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:49:43.867353" level="INFO">GET Request : url=http://10.30.170.48:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 path_url=/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01nfu2ssrokr1es5zgka78rw970.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:49:43.868300" level="INFO">GET Response : url=http://10.30.170.48:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Transfer-Encoding': 'chunked'} 
 body={"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","hidden-symmetric-keys","encrypted-private-keys","asymmetrically-encrypted-value-format","cms-encrypted-data-format","cleartext-private-keys","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["ssh-client-keepalives","client-ident-hostbased","client-ident-publickey","client-ident-password"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-ex... (set the log level to DEBUG or TRACE to see the full content) 
 </msg>
<msg time="2026-04-08T00:49:43.868746" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:49:43.851838" elapsed="0.016969"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:43.849601" elapsed="0.019331"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:43.869743" elapsed="0.000059"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:43.869032" elapsed="0.000893"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:43.849548" elapsed="0.020462"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:43.876357" level="INFO">{"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","hidden-symmetric-keys","encrypted-private-keys","asymmetrically-encrypted-value-format","cms-encrypted-data-format","cleartext-private-keys","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["ssh-client-keepalives","client-ident-hostbased","client-ident-publickey","client-ident-password"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-experimenter-types?revision=2015-10-20","namespace":"urn:opendaylight:openflowplugin:experimenter:types","conformance-type":"import"},{"name":"ietf-ip_2018-02-22","revision":"2018-02-22","schema":"/rests/modules/ietf-ip?revision=2018-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-ip","conformance-type":"import","feature":["ipv6-privacy-autoconf","ipv4-non-contiguous-netmasks"]},{"name":"ietf-tcp-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-client","conformance-type":"import","feature":["local-binding-supported","tcp-client-keepalives"]},{"name":"node-config_2014-10-15","revision":"2014-10-15","schema":"/rests/modules/node-config?revision=2014-10-15","namespace":"urn:opendaylight:module:config","conformance-type":"import"},{"name":"ietf-restconf_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf","conformance-type":"import"},{"name":"ietf-datastores_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-datastores?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-datastores","conformance-type":"import"},{"name":"ietf-yang-patch_2017-02-22","revision":"2017-02-22","schema":"/rests/modules/ietf-yang-patch?revision=2017-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-patch","conformance-type":"import"},{"name":"sal-group_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-group?revision=2013-09-18","namespace":"urn:opendaylight:group:service","conformance-type":"import"},{"name":"odl-codegen-extensions_2024-06-27","revision":"2024-06-27","schema":"/rests/modules/odl-codegen-extensions?revision=2024-06-27","namespace":"urn:opendaylight:yang:extension:codegen","conformance-type":"import"},{"name":"sal-meter_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-meter?revision=2013-09-18","namespace":"urn:opendaylight:meter:service","conformance-type":"import"},{"name":"ietf-interfaces_2018-02-20","revision":"2018-02-20","schema":"/rests/modules/ietf-interfaces?revision=2018-02-20","namespace":"urn:ietf:params:xml:ns:yang:ietf-interfaces","conformance-type":"import","feature":["pre-provisioning","if-mib","arbitrary-names"]},{"name":"opendaylight-l2-types_2013-08-27","revision":"2013-08-27","schema":"/rests/modules/opendaylight-l2-types?revision=2013-08-27","namespace":"urn:opendaylight:l2:types","conformance-type":"import"},{"name":"opendaylight-flow-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-flow-types?revision=2013-10-26","namespace":"urn:opendaylight:flow:types","conformance-type":"import"},{"name":"lldp-speaker-config_2016-05-12","revision":"2016-05-12","schema":"/rests/modules/lldp-speaker-config?revision=2016-05-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker:config","conformance-type":"import"},{"name":"aaa-cert_2015-11-26","revision":"2015-11-26","schema":"/rests/modules/aaa-cert?revision=2015-11-26","namespace":"urn:opendaylight:yang:aaa:cert","conformance-type":"import"},{"name":"openflow-action_2015-02-03","revision":"2015-02-03","schema":"/rests/modules/openflow-action?revision=2015-02-03","namespace":"urn:opendaylight:openflow:common:action","conformance-type":"import"},{"name":"openflow-approved-extensions_2016-08-02","revision":"2016-08-02","schema":"/rests/modules/openflow-approved-extensions?revision=2016-08-02","namespace":"urn:opendaylight:openflow:approved:extensions","conformance-type":"import"},{"name":"nc-notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/nc-notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netmod:notification","conformance-type":"import"},{"name":"ietf-netconf-nmda_2019-01-07","revision":"2019-01-07","schema":"/rests/modules/ietf-netconf-nmda?revision=2019-01-07","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-nmda","conformance-type":"import","feature":["with-defaults","origin"]},{"name":"ietf-tcp-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-common","conformance-type":"import","feature":["keepalives-supported"]},{"name":"network-topology_2013-10-21","revision":"2013-10-21","schema":"/rests/modules/network-topology?revision=2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:network-topology","conformance-type":"import"},{"name":"aaa-encrypt-service-config_2024-02-02","revision":"2024-02-02","schema":"/rests/modules/aaa-encrypt-service-config?revision=2024-02-02","namespace":"config:aaa:authn:encrypt:service:config","conformance-type":"import"},{"name":"openflow-instruction_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-instruction?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:instruction","conformance-type":"import"},{"name":"ietf-tls-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-client","conformance-type":"import","feature":["client-ident-x509-cert","server-auth-x509-cert"]},{"name":"opendaylight-group-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-group-statistics?revision=2013-11-11","namespace":"urn:opendaylight:group:statistics","conformance-type":"import"},{"name":"cluster-admin_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/cluster-admin?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:cluster:admin","conformance-type":"import"},{"name":"opendaylight-flow-statistics_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-flow-statistics?revision=2013-08-19","namespace":"urn:opendaylight:flow:statistics","conformance-type":"import"},{"name":"opendaylight-table-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-table-types?revision=2013-10-26","namespace":"urn:opendaylight:table:types","conformance-type":"import"},{"name":"forwarding-rules-manager-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/forwarding-rules-manager-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:forwardingrules-manager:config","conformance-type":"import"},{"name":"odl-srm-types_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-types?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:types","conformance-type":"import"},{"name":"ietf-x509-cert-to-name_2014-12-10","revision":"2014-12-10","schema":"/rests/modules/ietf-x509-cert-to-name?revision=2014-12-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-x509-cert-to-name","conformance-type":"import"},{"name":"flow-node-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-node-inventory?revision=2013-08-19","namespace":"urn:opendaylight:flow:inventory","conformance-type":"import"},{"name":"flow-errors_2013-11-16","revision":"2013-11-16","schema":"/rests/modules/flow-errors?revision=2013-11-16","namespace":"urn:opendaylight:flow:errors","conformance-type":"import"},{"name":"ietf-netconf_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:netconf:base:1.0","conformance-type":"import","feature":["xpath","url","rollback-on-error","validate","startup","candidate","confirmed-commit","writable-running"]},{"name":"iana-ssh-public-key-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-public-key-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-public-key-algs","conformance-type":"import"},{"name":"aaa-cert-mdsal_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/aaa-cert-mdsal?revision=2016-03-21","namespace":"urn:opendaylight:yang:aaa:cert:mdsal","conformance-type":"import"},{"name":"odl-device-notification_2024-02-18","revision":"2024-02-18","schema":"/rests/modules/odl-device-notification?revision=2024-02-18","namespace":"urn:opendaylight:device:notification","conformance-type":"import"},{"name":"ietf-origin_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-origin?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-origin","conformance-type":"import"},{"name":"openflow-augments_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-augments?revision=2015-02-25","namespace":"urn:opendaylight:openflow:augments","conformance-type":"import"},{"name":"iana-ssh-encryption-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-encryption-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-encryption-algs","conformance-type":"import"},{"name":"ietf-truststore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-truststore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-truststore","conformance-type":"import","feature":["inline-definitions-supported"]},{"name":"distributed-datastore-provider_2025-01-30","revision":"2025-01-30","schema":"/rests/modules/distributed-datastore-provider?revision=2025-01-30","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:distributed-datastore-provider","conformance-type":"import"},{"name":"opendaylight-group-types_2013-10-18","revision":"2013-10-18","schema":"/rests/modules/opendaylight-group-types?revision=2013-10-18","namespace":"urn:opendaylight:group:types","conformance-type":"import"},{"name":"sal-remote-augment_2023-11-03","revision":"2023-11-03","schema":"/rests/modules/sal-remote-augment?revision=2023-11-03","namespace":"urn:sal:restconf:event:subscription","conformance-type":"import"},{"name":"opendaylight-ipv6-arbitrary-bitmask-fields_2016-02-24","revision":"2016-02-24","schema":"/rests/modules/opendaylight-ipv6-arbitrary-bitmask-fields?revision=2016-02-24","namespace":"urn:opendaylight:opendaylight-ipv6-arbitrary-bitmask-fields","conformance-type":"import"},{"name":"sal-flows-batch_2016-03-14","revision":"2016-03-14","schema":"/rests/modules/sal-flows-batch?revision=2016-03-14","namespace":"urn:opendaylight:flows:service","conformance-type":"import"},{"name":"ietf-tls-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-common","conformance-type":"import","feature":["tls12","hello-params","tls13"]},{"name":"openflow-types_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-types?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:types","conformance-type":"import"},{"name":"ietf-netconf-with-defaults_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf-with-defaults?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults","conformance-type":"import"},{"name":"odl-srm-ops_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-ops?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:ops","conformance-type":"import"},{"name":"odl-general-entity_2015-09-30","revision":"2015-09-30","schema":"/rests/modules/odl-general-entity?revision=2015-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:mdsal:core:general-entity","conformance-type":"import"},{"name":"iana-ssh-key-exchange-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-key-exchange-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-key-exchange-algs","conformance-type":"import"},{"name":"node-ssl-connection-error_2019-07-23","revision":"2019-07-23","schema":"/rests/modules/node-ssl-connection-error?revision=2019-07-23","namespace":"urn:opendaylight:node-ssl-connection-error:service","conformance-type":"import"},{"name":"openflow-protocol_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-protocol?revision=2013-07-31","namespace":"urn:opendaylight:openflow:protocol","conformance-type":"import"},{"name":"ietf-udp-server_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-server?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-server","conformance-type":"import"},{"name":"ietf-keystore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-keystore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-keystore","conformance-type":"import","feature":["asymmetric-keys","inline-definitions-supported"]},{"name":"aaa_2016-12-14","revision":"2016-12-14","schema":"/rests/modules/aaa?revision=2016-12-14","namespace":"urn:opendaylight:params:xml:ns:yang:aaa","conformance-type":"import"},{"name":"aaa-cert-rpc_2015-12-15","revision":"2015-12-15","schema":"/rests/modules/aaa-cert-rpc?revision=2015-12-15","namespace":"urn:opendaylight:yang:aaa:cert:rpc","conformance-type":"import"},{"name":"system-notifications_2013-09-27","revision":"2013-09-27","schema":"/rests/modules/system-notifications?revision=2013-09-27","namespace":"urn:opendaylight:openflow:system","conformance-type":"import"},{"name":"sal-flat-batch_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/sal-flat-batch?revision=2016-03-21","namespace":"urn:opendaylight:flat-batch:service","conformance-type":"import"},{"name":"notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netconf:notification:1.0","conformance-type":"import"},{"name":"sal-remote_2014-01-14","revision":"2014-01-14","schema":"/rests/modules/sal-remote?revision=2014-01-14","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:remote","conformance-type":"import"},{"name":"yang-ext_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/yang-ext?revision=2013-07-09","namespace":"urn:opendaylight:yang:extension:yang-ext","conformance-type":"import"},{"name":"opendaylight-multipart-types_2017-01-12","revision":"2017-01-12","schema":"/rests/modules/opendaylight-multipart-types?revision=2017-01-12","namespace":"urn:opendaylight:multipart:types","conformance-type":"import"},{"name":"opendaylight-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-inventory?revision=2013-08-19","namespace":"urn:opendaylight:inventory","conformance-type":"import"},{"name":"sal-queue_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-queue?revision=2015-03-05","namespace":"urn:opendaylight:queue:service","conformance-type":"import"},{"name":"sal-groups-batch_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/sal-groups-batch?revision=2016-03-15","namespace":"urn:opendaylight:groups:service","conformance-type":"import"},{"name":"arbitrator-reconcile_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/arbitrator-reconcile?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:arbitrator-reconcile:service","conformance-type":"import"},{"name":"ietf-yang-metadata_2016-08-05","revision":"2016-08-05","schema":"/rests/modules/ietf-yang-metadata?revision=2016-08-05","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-metadata","conformance-type":"import"},{"name":"opendaylight-arbitrary-bitmask-fields_2016-01-30","revision":"2016-01-30","schema":"/rests/modules/opendaylight-arbitrary-bitmask-fields?revision=2016-01-30","namespace":"urn:opendaylight:arbitrary:bitmask:fields","conformance-type":"import"},{"name":"ietf-udp-client_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-client?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-client","conformance-type":"import","feature":["local-binding"]},{"name":"opendaylight-meter-types_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/opendaylight-meter-types?revision=2013-09-18","namespace":"urn:opendaylight:meter:types","conformance-type":"import"},{"name":"opendaylight-action-types_2013-11-12","revision":"2013-11-12","schema":"/rests/modules/opendaylight-action-types?revision=2013-11-12","namespace":"urn:opendaylight:action:types","conformance-type":"import"},{"name":"sal-role_2015-07-27","revision":"2015-07-27","schema":"/rests/modules/sal-role?revision=2015-07-27","namespace":"urn:opendaylight:role:service","conformance-type":"import"},{"name":"openflow-provider-config_2016-05-10","revision":"2016-05-10","schema":"/rests/modules/openflow-provider-config?revision=2016-05-10","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:provider:config","conformance-type":"import"},{"name":"odl-serviceutils-upgrade_2018-07-02","revision":"2018-07-02","schema":"/rests/modules/odl-serviceutils-upgrade?revision=2018-07-02","namespace":"urn:opendaylight:serviceutils:upgrade","conformance-type":"import"},{"name":"opendaylight-match-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-match-types?revision=2013-10-26","namespace":"urn:opendaylight:model:match:types","conformance-type":"import"},{"name":"ietf-restconf-server_2024-08-14","revision":"2024-08-14","schema":"/rests/modules/ietf-restconf-server?revision=2024-08-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-server","conformance-type":"import","feature":["http-listen","https-listen"]},{"name":"reconciliation-result-state_2017-07-13","revision":"2017-07-13","schema":"/rests/modules/reconciliation-result-state?revision=2017-07-13","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:rf:state","conformance-type":"import"},{"name":"onf-extensions_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/onf-extensions?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf","conformance-type":"import"},{"name":"sal-table_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/sal-table?revision=2013-10-26","namespace":"urn:opendaylight:table:service","conformance-type":"import"},{"name":"iana-http-versions_2026-02-04","revision":"2026-02-04","schema":"/rests/modules/iana-http-versions?revision=2026-02-04","namespace":"urn:ietf:params:xml:ns:yang:iana-http-versions","conformance-type":"import"},{"name":"opendaylight-direct-statistics_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/opendaylight-direct-statistics?revision=2016-05-11","namespace":"urn:opendaylight:direct:statistics","conformance-type":"import"},{"name":"opendaylight-port-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-port-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:port","conformance-type":"import"},{"name":"sal-async-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/sal-async-config?revision=2017-06-19","namespace":"urn:opendaylight:async-config:service","conformance-type":"import"},{"name":"aaa-password-service-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-password-service-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:password:service:config","conformance-type":"import"},{"name":"ietf-yang-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-yang-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-types","conformance-type":"import"},{"name":"opendaylight-queue-statistics_2013-12-16","revision":"2013-12-16","schema":"/rests/modules/opendaylight-queue-statistics?revision=2013-12-16","namespace":"urn:opendaylight:queue:statistics","conformance-type":"import"},{"name":"sal-bundle_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/sal-bundle?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf:bundle:service","conformance-type":"import"},{"name":"ietf-restconf-subscribed-notifications_2019-11-17","revision":"2019-11-17","schema":"/rests/modules/ietf-restconf-subscribed-notifications?revision=2019-11-17","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-subscribed-notifications","conformance-type":"import"},{"name":"sal-meters-batch_2016-03-16","revision":"2016-03-16","schema":"/rests/modules/sal-meters-batch?revision=2016-03-16","namespace":"urn:opendaylight:meters:service","conformance-type":"import"},{"name":"odl-entity-owners","revision":"","schema":"/rests/modules/odl-entity-owners","namespace":"urn:opendaylight:params:xml:ns:yang:controller:entity-owners","conformance-type":"import"},{"name":"sal-experimenter-mp-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-mp-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-mp-message:service","conformance-type":"import"},{"name":"packet-processing_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/packet-processing?revision=2013-07-09","namespace":"urn:opendaylight:packet:service","conformance-type":"import"},{"name":"openflow-configuration_2014-06-30","revision":"2014-06-30","schema":"/rests/modules/openflow-configuration?revision=2014-06-30","namespace":"urn:opendaylight:openflow:config","conformance-type":"import"},{"name":"odl-srm-rpcs_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-rpcs?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:rpc","conformance-type":"import"},{"name":"ietf-netconf-acm_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-netconf-acm?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-acm","conformance-type":"import"},{"name":"iana-crypt-hash_2014-08-06","revision":"2014-08-06","schema":"/rests/modules/iana-crypt-hash?revision=2014-08-06","namespace":"urn:ietf:params:xml:ns:yang:iana-crypt-hash","conformance-type":"import","feature":["crypt-hash-sha-512","crypt-hash-sha-256","crypt-hash-md5"]},{"name":"openflow-extensible-match_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-extensible-match?revision=2015-02-25","namespace":"urn:opendaylight:openflow:oxm","conformance-type":"import"}],"module-set-id":"2"}}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:43.872698" elapsed="0.004106"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:43.872378" elapsed="0.004477"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:43.872346" elapsed="0.004544"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:43.879884" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:43.877341" elapsed="0.002588"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:43.877003" elapsed="0.002961"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:43.876977" elapsed="0.003011"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:49:43.880617" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:49:43.880208" elapsed="0.000436"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:43.880973" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:43.880736" elapsed="0.000295"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:49:43.881558" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:49:43.881233" elapsed="0.000352"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:43.881055" elapsed="0.000567"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:43.880716" elapsed="0.000928"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:49:43.882238" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:49:43.881824" elapsed="0.000442"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:43.882596" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:43.882360" elapsed="0.000295"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:49:43.883173" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:49:43.882835" elapsed="0.000374"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:43.882678" elapsed="0.000574"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:43.882340" elapsed="0.000937"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:49:43.883503" elapsed="0.000448"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:49:43.884588" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:49:43.884208" elapsed="0.000411"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:49:43.884801" elapsed="0.002207"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:49:43.871320" elapsed="0.015815"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:49:43.887512" elapsed="0.000049"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:49:43.887289" elapsed="0.000336"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:43.887232" elapsed="0.000429"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:49:43.896926" level="INFO">${text_normalized} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:49:43.888398" elapsed="0.008580"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:49:43.897058" elapsed="0.000073"/>
</return>
<msg time="2026-04-08T00:49:43.897422" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:49:43.844725" elapsed="0.052829"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:49:43.898069" elapsed="0.000034"/>
</return>
<msg time="2026-04-08T00:49:43.898354" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="PASS" start="2026-04-08T00:49:43.699063" elapsed="0.199319"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Json_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:43.898742" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:43.898473" elapsed="0.000474"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:43.898453" elapsed="0.000521"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:49:43.899009" elapsed="0.000028"/>
</return>
<arg>session=${session}</arg>
<arg>folder=${RESTCONF_MODULES_DIR}</arg>
<arg>verify=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Add arguments sensible for JSON data, return Get_Templated response text.
Optionally, verification against JSON data (may be iterated) is called.
Only subset of JSON data is verified and returned if JMES path is specified in
file ${folder}/jmespath.expr.</doc>
<status status="PASS" start="2026-04-08T00:49:43.695017" elapsed="0.204123"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:43.691038" elapsed="0.208165"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:43.691020" elapsed="0.208210"/>
</if>
<kw name="Resolve_Shard_Type_Class" owner="ClusterManagement">
<if>
<branch type="IF" condition="'${shard_type}' == 'config'">
<return>
<value>DistributedConfigDatastore</value>
<status status="NOT RUN" start="2026-04-08T00:49:43.899867" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:49:43.899758" elapsed="0.000156"/>
</branch>
<branch type="ELSE IF" condition="'${shard_type}' == 'operational'">
<return>
<value>DistributedOperationalDatastore</value>
<status status="PASS" start="2026-04-08T00:49:43.900038" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-08T00:49:43.899936" elapsed="0.000160"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:43.899740" elapsed="0.000379"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized shard type: ${shard_type}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:43.900288" elapsed="0.000023"/>
</kw>
<msg time="2026-04-08T00:49:43.900410" level="INFO">${type_class} = DistributedOperationalDatastore</msg>
<var>${type_class}</var>
<arg>shard_type=${shard_type}</arg>
<doc>Simple lookup for class name corresponding to desired type.</doc>
<status status="PASS" start="2026-04-08T00:49:43.899475" elapsed="0.000960"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:49:43.900995" level="INFO">${cluster_index} = 1</msg>
<var>${cluster_index}</var>
<arg>${member_index}+${NODE_ROLE_INDEX_START}-1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:49:43.900607" elapsed="0.000415"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:49:43.901696" level="INFO">${uri} = jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-default-operational,type=DistributedOperationalDatastore</msg>
<var>${uri}</var>
<arg>${JOLOKIA_READ_URI}:Category=Shards,name=member-${cluster_index}-shard-${shard_name}-${shard_type},type=${type_class}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:49:43.901194" elapsed="0.000530"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:43.907460" level="INFO">jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-default-operational,type=DistributedOperationalDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:43.906913" elapsed="0.000595"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:43.908113" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:43.907664" elapsed="0.000509"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:49:43.928977" level="INFO">GET Request : url=http://10.30.170.48:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-default-operational,type=DistributedOperationalDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-default-operational,type=DistributedOperationalDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:49:43.929196" level="INFO">GET Response : url=http://10.30.170.48:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-default-operational,type=DistributedOperationalDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Wed, 08 Apr 2026 00:49:43 GMT', 'Expires': 'Tue, 07 Apr 2026 23:49:43 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-1-shard-default-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"ReadWriteTransactionCount":14,"SnapshotIndex":35,"InMemoryJournalLogSize":3,"ReplicatedToAllIndex":35,"Leader":"member-1-shard-default-operational","LastIndex":38,"RaftState":"Leader","LastApplied":37,"LastCommittedTransactionTime":"2026-04-08 00:46:49.710","PeerAddresses":"member-3-shard-default-operational: pekko:\/\/opendaylight-cluster-data@10.30.171.110:2550\/user\/shardmanager-operational\/member-3-shard-default-operational, member-2-shard-default-operational: pekko:\/\/opendaylight-cluster-data@10.30.170.131:2550\/user\/shardmanager-operational\/member-2-shard-default-operational","LastLogIndex":38,"LastLeadershipChangeTime":"2026-04-08 00:46:45.934","FollowerInitialSyncStatus":false,"FollowerInfo":[{"timeSinceLastActivity":"00:00:00.196","active":true,"matchIndex":37,"voting":true,"id":"member-3-shard-default-operational","nextIndex":38},{"timeSinceLastActivity":"00:00:00.201","active":true,"matchIndex":35,"voting":true,"id":"member-2-shard-default-operational","nextIndex":36}],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"909.6 μs","CurrentTerm":2,"LastTerm":2,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-default-operational","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":11,"TxCohortCacheSize":0,"PeerVotingStates":"member-3-shard-default-operational: true, member-2-shard-default-operational: true","LastLogTerm":2,"StatRetrievalError":null,"CommitIndex":37,"SnapshotTerm":2,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":4,"ShardName":"member-1-shard-default-operational","LeadershipChangeCount":1,"InMemoryJournalDataSize":89615},"timestamp":1775609383,"status":200} 
 </msg>
<msg time="2026-04-08T00:49:43.929480" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:49:43.919504" elapsed="0.010179"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:43.908246" elapsed="0.021798"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:43.930480" elapsed="0.000033"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:43.930087" elapsed="0.000833"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:43.908226" elapsed="0.022789"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:43.937572" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-1-shard-default-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"ReadWriteTransactionCount":14,"SnapshotIndex":35,"InMemoryJournalLogSize":3,"ReplicatedToAllIndex":35,"Leader":"member-1-shard-default-operational","LastIndex":38,"RaftState":"Leader","LastApplied":37,"LastCommittedTransactionTime":"2026-04-08 00:46:49.710","PeerAddresses":"member-3-shard-default-operational: pekko:\/\/opendaylight-cluster-data@10.30.171.110:2550\/user\/shardmanager-operational\/member-3-shard-default-operational, member-2-shard-default-operational: pekko:\/\/opendaylight-cluster-data@10.30.170.131:2550\/user\/shardmanager-operational\/member-2-shard-default-operational","LastLogIndex":38,"LastLeadershipChangeTime":"2026-04-08 00:46:45.934","FollowerInitialSyncStatus":false,"FollowerInfo":[{"timeSinceLastActivity":"00:00:00.196","active":true,"matchIndex":37,"voting":true,"id":"member-3-shard-default-operational","nextIndex":38},{"timeSinceLastActivity":"00:00:00.201","active":true,"matchIndex":35,"voting":true,"id":"member-2-shard-default-operational","nextIndex":36}],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"909.6 μs","CurrentTerm":2,"LastTerm":2,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-default-operational","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":11,"TxCohortCacheSize":0,"PeerVotingStates":"member-3-shard-default-operational: true, member-2-shard-default-operational: true","LastLogTerm":2,"StatRetrievalError":null,"CommitIndex":37,"SnapshotTerm":2,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":4,"ShardName":"member-1-shard-default-operational","LeadershipChangeCount":1,"InMemoryJournalDataSize":89615},"timestamp":1775609383,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:43.933982" elapsed="0.003814"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:43.932726" elapsed="0.005143"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:43.932698" elapsed="0.005225"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:43.942792" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:43.939411" elapsed="0.003479"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:43.938040" elapsed="0.004899"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:43.938014" elapsed="0.004963"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:49:43.944408" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:49:43.943621" elapsed="0.000848"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:43.945094" elapsed="0.000035"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:43.944634" elapsed="0.000561"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:49:43.946101" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:49:43.945561" elapsed="0.000588"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:43.945233" elapsed="0.001003"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:43.944613" elapsed="0.001660"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:49:43.947666" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:49:43.946896" elapsed="0.000835"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:43.948407" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:43.947916" elapsed="0.000581"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:49:43.949421" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:49:43.948889" elapsed="0.000579"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:43.948536" elapsed="0.000983"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:43.947894" elapsed="0.001661"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:49:43.949841" elapsed="0.000713"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:49:43.951404" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:49:43.950861" elapsed="0.000606"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:49:43.951755" elapsed="0.002396"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:49:43.931735" elapsed="0.022757"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:49:43.954703" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:49:43.954570" elapsed="0.000180"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:43.954549" elapsed="0.000223"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:49:43.958496" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-1-shard-default-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp"...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:49:43.954919" elapsed="0.003608"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:49:43.958619" elapsed="0.000037"/>
</return>
<msg time="2026-04-08T00:49:43.958790" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-1-shard-default-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp"...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:49:43.902717" elapsed="0.056101"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:49:43.958877" elapsed="0.000026"/>
</return>
<msg time="2026-04-08T00:49:43.959028" level="INFO">${data_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-1-shard-default-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp"...</msg>
<var>${data_text}</var>
<arg>uri=${uri}</arg>
<arg>session=${session}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-08T00:49:43.901939" elapsed="0.057115"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:49:43.960143" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-1-shard-default-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 177560938...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:49:43.959653" elapsed="0.000536"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-08T00:49:43.960241" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:49:43.960424" level="INFO">${data_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-1-shard-default-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 177560938...</msg>
<var>${data_object}</var>
<arg>${data_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-08T00:49:43.959302" elapsed="0.001150"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:49:43.960839" level="INFO">${value} = {'AbortTransactionsCount': 0, 'CommitIndex': 37, 'CommittedTransactionsCount': 11, 'CurrentTerm': 2, 'FailedReadTransactionsCount': 0, 'FailedTransactionsCount': 0, 'FollowerInfo': [{'active': True, '...</msg>
<var>${value}</var>
<arg>${data_object}</arg>
<arg>value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:49:43.960615" elapsed="0.000253"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:49:43.961251" level="INFO">${raft_property} = Leader</msg>
<var>${raft_property}</var>
<arg>${value}</arg>
<arg>${property}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:49:43.961026" elapsed="0.000252"/>
</kw>
<return>
<value>${raft_property}</value>
<status status="PASS" start="2026-04-08T00:49:43.961326" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:49:43.961481" level="INFO">${raft_state} = Leader</msg>
<var>${raft_state}</var>
<arg>RaftState</arg>
<arg>${shard_name}</arg>
<arg>${shard_type}</arg>
<arg>${member_index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft property.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T00:49:43.689435" elapsed="0.272072"/>
</kw>
<return>
<value>${raft_state}</value>
<status status="PASS" start="2026-04-08T00:49:43.961565" elapsed="0.000026"/>
</return>
<msg time="2026-04-08T00:49:43.961746" level="INFO">${raft_state} = Leader</msg>
<var>${raft_state}</var>
<arg>shard_name=${shard_name}</arg>
<arg>shard_type=${ds_type}</arg>
<arg>member_index=${index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft status.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T00:49:43.688698" elapsed="0.273074"/>
</kw>
<if>
<branch type="IF" condition="'Follower' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${follower_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:43.962078" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:43.961857" elapsed="0.000278"/>
</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="PASS" start="2026-04-08T00:49:43.962453" elapsed="0.000204"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:43.962237" elapsed="0.000462"/>
</branch>
<branch type="ELSE IF" condition="${validate}">
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized Raft state: ${raft_state}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:43.962873" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:43.962725" elapsed="0.000201"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:43.961837" elapsed="0.001111"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T00:49:43.688534" elapsed="0.274438"/>
</iter>
<iter>
<kw name="Get_Raft_State_Of_Shard_At_Member" owner="ClusterManagement">
<kw name="Get_Raft_Property_From_Shard_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:49:43.965399" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:49:43.965049" elapsed="0.000377"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:49:43.965473" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:49:43.965617" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:49:43.964712" elapsed="0.000930"/>
</kw>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Get_As_Json_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:49:44.051643" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:49:44.051185" elapsed="0.000492"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:49:44.052641" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:49:44.052327" elapsed="0.000411">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-08T00:49:44.052834" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:49:44.051947" elapsed="0.000912"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:49:44.053437" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:49:44.053025" elapsed="0.000440"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T00:49:44.053790" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-08T00:49:44.053971" level="INFO">${template} = /rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T00:49:44.053632" elapsed="0.000365"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:44.054425" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:44.054155" elapsed="0.000316"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:44.055520" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:44.055258" elapsed="0.000306"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-08T00:49:44.056051" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-08T00:49:44.055764" elapsed="0.000322"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:44.056448" elapsed="0.000023"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:44.056651" elapsed="0.000024"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:44.056842" elapsed="0.000024"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-08T00:49:44.056312" elapsed="0.000591"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-08T00:49:44.056144" elapsed="0.000792"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-08T00:49:44.056983" elapsed="0.000034"/>
</return>
<msg time="2026-04-08T00:49:44.057178" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-08T00:49:44.054902" elapsed="0.002307"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:44.054569" elapsed="0.002683"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:44.057454" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:44.057285" elapsed="0.000235"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:44.054539" elapsed="0.003003"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:49:44.058227" level="INFO">${final_text} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:49:44.057693" elapsed="0.000563"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T00:49:44.058315" 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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="PASS" start="2026-04-08T00:49:44.050525" elapsed="0.007952"/>
</kw>
<msg time="2026-04-08T00:49:44.058538" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:49:44.038021" elapsed="0.020602"/>
</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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:44.071309" elapsed="0.000060"/>
</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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:44.083693" elapsed="0.000042"/>
</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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:44.095632" elapsed="0.000040"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:44.096430" elapsed="0.000038"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:44.097203" elapsed="0.000037"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:44.097781" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:44.097632" elapsed="0.000205"/>
</branch>
<status status="NOT RUN" start="2026-04-08T00:49:44.097614" elapsed="0.000247"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:44.098048" elapsed="0.000022"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:44.098249" elapsed="0.000022"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:44.098439" elapsed="0.000021"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-08T00:49:44.097559" elapsed="0.000953"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-08T00:49:44.097329" elapsed="0.001225"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:44.099270" elapsed="0.000035"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-08T00:49:44.099389" elapsed="0.000050"/>
</return>
<msg time="2026-04-08T00:49:44.099628" level="INFO">${uri} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-08T00:49:44.031503" elapsed="0.068234"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:49:44.102864" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:49:44.102574" elapsed="0.000365">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-08T00:49:44.103131" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:49:44.102068" elapsed="0.001123"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:44.103716" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:44.103325" elapsed="0.000458"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:49:44.104419" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:49:44.104099" elapsed="0.000346"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:44.103823" elapsed="0.000669"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:44.103272" elapsed="0.001259"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:49:44.107758" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:49:44.105380" elapsed="0.002425"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-08T00:49:44.107883" elapsed="0.000065"/>
</return>
<msg time="2026-04-08T00:49:44.108216" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:49:44.100811" elapsed="0.007514"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:49:44.111498" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:49:44.111186" elapsed="0.000381">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-08T00:49:44.111764" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:49:44.110593" elapsed="0.001218"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-08T00:49:44.112222" elapsed="0.000082"/>
</return>
<status status="PASS" start="2026-04-08T00:49:44.111949" elapsed="0.000426"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:44.111895" elapsed="0.000519"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:44.113153" elapsed="0.000178"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:44.114081" elapsed="0.000039"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-08T00:49:44.114213" elapsed="0.000055"/>
</return>
<msg time="2026-04-08T00:49:44.117385" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:49:44.109365" elapsed="0.008192"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:44.121872" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:44.121450" elapsed="0.000560"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:44.123217" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:44.122805" elapsed="0.000515"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:49:44.149716" level="INFO">GET Request : url=http://10.30.170.131:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 path_url=/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0evogeryo91251obsb096nsda10.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:49:44.150704" level="INFO">GET Response : url=http://10.30.170.131:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Transfer-Encoding': 'chunked'} 
 body={"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","hidden-symmetric-keys","encrypted-private-keys","asymmetrically-encrypted-value-format","cms-encrypted-data-format","cleartext-private-keys","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["ssh-client-keepalives","client-ident-hostbased","client-ident-publickey","client-ident-password"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-ex... (set the log level to DEBUG or TRACE to see the full content) 
 </msg>
<msg time="2026-04-08T00:49:44.151207" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:49:44.125582" elapsed="0.025689"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:44.123452" elapsed="0.027949"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:44.152104" elapsed="0.000099"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:44.151503" elapsed="0.000826"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:44.123399" elapsed="0.029013"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:44.160464" level="INFO">{"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","hidden-symmetric-keys","encrypted-private-keys","asymmetrically-encrypted-value-format","cms-encrypted-data-format","cleartext-private-keys","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["ssh-client-keepalives","client-ident-hostbased","client-ident-publickey","client-ident-password"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-experimenter-types?revision=2015-10-20","namespace":"urn:opendaylight:openflowplugin:experimenter:types","conformance-type":"import"},{"name":"ietf-ip_2018-02-22","revision":"2018-02-22","schema":"/rests/modules/ietf-ip?revision=2018-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-ip","conformance-type":"import","feature":["ipv6-privacy-autoconf","ipv4-non-contiguous-netmasks"]},{"name":"ietf-tcp-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-client","conformance-type":"import","feature":["local-binding-supported","tcp-client-keepalives"]},{"name":"node-config_2014-10-15","revision":"2014-10-15","schema":"/rests/modules/node-config?revision=2014-10-15","namespace":"urn:opendaylight:module:config","conformance-type":"import"},{"name":"ietf-restconf_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf","conformance-type":"import"},{"name":"ietf-datastores_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-datastores?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-datastores","conformance-type":"import"},{"name":"ietf-yang-patch_2017-02-22","revision":"2017-02-22","schema":"/rests/modules/ietf-yang-patch?revision=2017-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-patch","conformance-type":"import"},{"name":"sal-group_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-group?revision=2013-09-18","namespace":"urn:opendaylight:group:service","conformance-type":"import"},{"name":"odl-codegen-extensions_2024-06-27","revision":"2024-06-27","schema":"/rests/modules/odl-codegen-extensions?revision=2024-06-27","namespace":"urn:opendaylight:yang:extension:codegen","conformance-type":"import"},{"name":"sal-meter_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-meter?revision=2013-09-18","namespace":"urn:opendaylight:meter:service","conformance-type":"import"},{"name":"ietf-interfaces_2018-02-20","revision":"2018-02-20","schema":"/rests/modules/ietf-interfaces?revision=2018-02-20","namespace":"urn:ietf:params:xml:ns:yang:ietf-interfaces","conformance-type":"import","feature":["pre-provisioning","if-mib","arbitrary-names"]},{"name":"opendaylight-l2-types_2013-08-27","revision":"2013-08-27","schema":"/rests/modules/opendaylight-l2-types?revision=2013-08-27","namespace":"urn:opendaylight:l2:types","conformance-type":"import"},{"name":"opendaylight-flow-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-flow-types?revision=2013-10-26","namespace":"urn:opendaylight:flow:types","conformance-type":"import"},{"name":"lldp-speaker-config_2016-05-12","revision":"2016-05-12","schema":"/rests/modules/lldp-speaker-config?revision=2016-05-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker:config","conformance-type":"import"},{"name":"aaa-cert_2015-11-26","revision":"2015-11-26","schema":"/rests/modules/aaa-cert?revision=2015-11-26","namespace":"urn:opendaylight:yang:aaa:cert","conformance-type":"import"},{"name":"openflow-action_2015-02-03","revision":"2015-02-03","schema":"/rests/modules/openflow-action?revision=2015-02-03","namespace":"urn:opendaylight:openflow:common:action","conformance-type":"import"},{"name":"openflow-approved-extensions_2016-08-02","revision":"2016-08-02","schema":"/rests/modules/openflow-approved-extensions?revision=2016-08-02","namespace":"urn:opendaylight:openflow:approved:extensions","conformance-type":"import"},{"name":"nc-notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/nc-notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netmod:notification","conformance-type":"import"},{"name":"ietf-netconf-nmda_2019-01-07","revision":"2019-01-07","schema":"/rests/modules/ietf-netconf-nmda?revision=2019-01-07","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-nmda","conformance-type":"import","feature":["with-defaults","origin"]},{"name":"ietf-tcp-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-common","conformance-type":"import","feature":["keepalives-supported"]},{"name":"network-topology_2013-10-21","revision":"2013-10-21","schema":"/rests/modules/network-topology?revision=2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:network-topology","conformance-type":"import"},{"name":"aaa-encrypt-service-config_2024-02-02","revision":"2024-02-02","schema":"/rests/modules/aaa-encrypt-service-config?revision=2024-02-02","namespace":"config:aaa:authn:encrypt:service:config","conformance-type":"import"},{"name":"openflow-instruction_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-instruction?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:instruction","conformance-type":"import"},{"name":"ietf-tls-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-client","conformance-type":"import","feature":["client-ident-x509-cert","server-auth-x509-cert"]},{"name":"opendaylight-group-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-group-statistics?revision=2013-11-11","namespace":"urn:opendaylight:group:statistics","conformance-type":"import"},{"name":"cluster-admin_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/cluster-admin?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:cluster:admin","conformance-type":"import"},{"name":"opendaylight-flow-statistics_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-flow-statistics?revision=2013-08-19","namespace":"urn:opendaylight:flow:statistics","conformance-type":"import"},{"name":"opendaylight-table-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-table-types?revision=2013-10-26","namespace":"urn:opendaylight:table:types","conformance-type":"import"},{"name":"forwarding-rules-manager-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/forwarding-rules-manager-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:forwardingrules-manager:config","conformance-type":"import"},{"name":"odl-srm-types_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-types?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:types","conformance-type":"import"},{"name":"ietf-x509-cert-to-name_2014-12-10","revision":"2014-12-10","schema":"/rests/modules/ietf-x509-cert-to-name?revision=2014-12-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-x509-cert-to-name","conformance-type":"import"},{"name":"flow-node-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-node-inventory?revision=2013-08-19","namespace":"urn:opendaylight:flow:inventory","conformance-type":"import"},{"name":"flow-errors_2013-11-16","revision":"2013-11-16","schema":"/rests/modules/flow-errors?revision=2013-11-16","namespace":"urn:opendaylight:flow:errors","conformance-type":"import"},{"name":"ietf-netconf_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:netconf:base:1.0","conformance-type":"import","feature":["xpath","url","rollback-on-error","validate","startup","candidate","confirmed-commit","writable-running"]},{"name":"iana-ssh-public-key-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-public-key-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-public-key-algs","conformance-type":"import"},{"name":"aaa-cert-mdsal_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/aaa-cert-mdsal?revision=2016-03-21","namespace":"urn:opendaylight:yang:aaa:cert:mdsal","conformance-type":"import"},{"name":"odl-device-notification_2024-02-18","revision":"2024-02-18","schema":"/rests/modules/odl-device-notification?revision=2024-02-18","namespace":"urn:opendaylight:device:notification","conformance-type":"import"},{"name":"ietf-origin_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-origin?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-origin","conformance-type":"import"},{"name":"openflow-augments_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-augments?revision=2015-02-25","namespace":"urn:opendaylight:openflow:augments","conformance-type":"import"},{"name":"iana-ssh-encryption-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-encryption-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-encryption-algs","conformance-type":"import"},{"name":"ietf-truststore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-truststore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-truststore","conformance-type":"import","feature":["inline-definitions-supported"]},{"name":"distributed-datastore-provider_2025-01-30","revision":"2025-01-30","schema":"/rests/modules/distributed-datastore-provider?revision=2025-01-30","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:distributed-datastore-provider","conformance-type":"import"},{"name":"opendaylight-group-types_2013-10-18","revision":"2013-10-18","schema":"/rests/modules/opendaylight-group-types?revision=2013-10-18","namespace":"urn:opendaylight:group:types","conformance-type":"import"},{"name":"sal-remote-augment_2023-11-03","revision":"2023-11-03","schema":"/rests/modules/sal-remote-augment?revision=2023-11-03","namespace":"urn:sal:restconf:event:subscription","conformance-type":"import"},{"name":"opendaylight-ipv6-arbitrary-bitmask-fields_2016-02-24","revision":"2016-02-24","schema":"/rests/modules/opendaylight-ipv6-arbitrary-bitmask-fields?revision=2016-02-24","namespace":"urn:opendaylight:opendaylight-ipv6-arbitrary-bitmask-fields","conformance-type":"import"},{"name":"sal-flows-batch_2016-03-14","revision":"2016-03-14","schema":"/rests/modules/sal-flows-batch?revision=2016-03-14","namespace":"urn:opendaylight:flows:service","conformance-type":"import"},{"name":"ietf-tls-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-common","conformance-type":"import","feature":["tls12","hello-params","tls13"]},{"name":"openflow-types_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-types?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:types","conformance-type":"import"},{"name":"ietf-netconf-with-defaults_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf-with-defaults?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults","conformance-type":"import"},{"name":"odl-srm-ops_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-ops?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:ops","conformance-type":"import"},{"name":"odl-general-entity_2015-09-30","revision":"2015-09-30","schema":"/rests/modules/odl-general-entity?revision=2015-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:mdsal:core:general-entity","conformance-type":"import"},{"name":"iana-ssh-key-exchange-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-key-exchange-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-key-exchange-algs","conformance-type":"import"},{"name":"node-ssl-connection-error_2019-07-23","revision":"2019-07-23","schema":"/rests/modules/node-ssl-connection-error?revision=2019-07-23","namespace":"urn:opendaylight:node-ssl-connection-error:service","conformance-type":"import"},{"name":"openflow-protocol_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-protocol?revision=2013-07-31","namespace":"urn:opendaylight:openflow:protocol","conformance-type":"import"},{"name":"ietf-udp-server_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-server?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-server","conformance-type":"import"},{"name":"ietf-keystore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-keystore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-keystore","conformance-type":"import","feature":["asymmetric-keys","inline-definitions-supported"]},{"name":"aaa_2016-12-14","revision":"2016-12-14","schema":"/rests/modules/aaa?revision=2016-12-14","namespace":"urn:opendaylight:params:xml:ns:yang:aaa","conformance-type":"import"},{"name":"aaa-cert-rpc_2015-12-15","revision":"2015-12-15","schema":"/rests/modules/aaa-cert-rpc?revision=2015-12-15","namespace":"urn:opendaylight:yang:aaa:cert:rpc","conformance-type":"import"},{"name":"system-notifications_2013-09-27","revision":"2013-09-27","schema":"/rests/modules/system-notifications?revision=2013-09-27","namespace":"urn:opendaylight:openflow:system","conformance-type":"import"},{"name":"sal-flat-batch_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/sal-flat-batch?revision=2016-03-21","namespace":"urn:opendaylight:flat-batch:service","conformance-type":"import"},{"name":"notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netconf:notification:1.0","conformance-type":"import"},{"name":"sal-remote_2014-01-14","revision":"2014-01-14","schema":"/rests/modules/sal-remote?revision=2014-01-14","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:remote","conformance-type":"import"},{"name":"yang-ext_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/yang-ext?revision=2013-07-09","namespace":"urn:opendaylight:yang:extension:yang-ext","conformance-type":"import"},{"name":"opendaylight-multipart-types_2017-01-12","revision":"2017-01-12","schema":"/rests/modules/opendaylight-multipart-types?revision=2017-01-12","namespace":"urn:opendaylight:multipart:types","conformance-type":"import"},{"name":"opendaylight-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-inventory?revision=2013-08-19","namespace":"urn:opendaylight:inventory","conformance-type":"import"},{"name":"sal-queue_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-queue?revision=2015-03-05","namespace":"urn:opendaylight:queue:service","conformance-type":"import"},{"name":"sal-groups-batch_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/sal-groups-batch?revision=2016-03-15","namespace":"urn:opendaylight:groups:service","conformance-type":"import"},{"name":"arbitrator-reconcile_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/arbitrator-reconcile?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:arbitrator-reconcile:service","conformance-type":"import"},{"name":"ietf-yang-metadata_2016-08-05","revision":"2016-08-05","schema":"/rests/modules/ietf-yang-metadata?revision=2016-08-05","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-metadata","conformance-type":"import"},{"name":"opendaylight-arbitrary-bitmask-fields_2016-01-30","revision":"2016-01-30","schema":"/rests/modules/opendaylight-arbitrary-bitmask-fields?revision=2016-01-30","namespace":"urn:opendaylight:arbitrary:bitmask:fields","conformance-type":"import"},{"name":"ietf-udp-client_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-client?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-client","conformance-type":"import","feature":["local-binding"]},{"name":"opendaylight-meter-types_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/opendaylight-meter-types?revision=2013-09-18","namespace":"urn:opendaylight:meter:types","conformance-type":"import"},{"name":"opendaylight-action-types_2013-11-12","revision":"2013-11-12","schema":"/rests/modules/opendaylight-action-types?revision=2013-11-12","namespace":"urn:opendaylight:action:types","conformance-type":"import"},{"name":"sal-role_2015-07-27","revision":"2015-07-27","schema":"/rests/modules/sal-role?revision=2015-07-27","namespace":"urn:opendaylight:role:service","conformance-type":"import"},{"name":"openflow-provider-config_2016-05-10","revision":"2016-05-10","schema":"/rests/modules/openflow-provider-config?revision=2016-05-10","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:provider:config","conformance-type":"import"},{"name":"odl-serviceutils-upgrade_2018-07-02","revision":"2018-07-02","schema":"/rests/modules/odl-serviceutils-upgrade?revision=2018-07-02","namespace":"urn:opendaylight:serviceutils:upgrade","conformance-type":"import"},{"name":"opendaylight-match-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-match-types?revision=2013-10-26","namespace":"urn:opendaylight:model:match:types","conformance-type":"import"},{"name":"ietf-restconf-server_2024-08-14","revision":"2024-08-14","schema":"/rests/modules/ietf-restconf-server?revision=2024-08-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-server","conformance-type":"import","feature":["http-listen","https-listen"]},{"name":"reconciliation-result-state_2017-07-13","revision":"2017-07-13","schema":"/rests/modules/reconciliation-result-state?revision=2017-07-13","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:rf:state","conformance-type":"import"},{"name":"onf-extensions_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/onf-extensions?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf","conformance-type":"import"},{"name":"sal-table_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/sal-table?revision=2013-10-26","namespace":"urn:opendaylight:table:service","conformance-type":"import"},{"name":"iana-http-versions_2026-02-04","revision":"2026-02-04","schema":"/rests/modules/iana-http-versions?revision=2026-02-04","namespace":"urn:ietf:params:xml:ns:yang:iana-http-versions","conformance-type":"import"},{"name":"opendaylight-direct-statistics_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/opendaylight-direct-statistics?revision=2016-05-11","namespace":"urn:opendaylight:direct:statistics","conformance-type":"import"},{"name":"opendaylight-port-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-port-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:port","conformance-type":"import"},{"name":"sal-async-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/sal-async-config?revision=2017-06-19","namespace":"urn:opendaylight:async-config:service","conformance-type":"import"},{"name":"aaa-password-service-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-password-service-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:password:service:config","conformance-type":"import"},{"name":"ietf-yang-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-yang-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-types","conformance-type":"import"},{"name":"opendaylight-queue-statistics_2013-12-16","revision":"2013-12-16","schema":"/rests/modules/opendaylight-queue-statistics?revision=2013-12-16","namespace":"urn:opendaylight:queue:statistics","conformance-type":"import"},{"name":"sal-bundle_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/sal-bundle?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf:bundle:service","conformance-type":"import"},{"name":"ietf-restconf-subscribed-notifications_2019-11-17","revision":"2019-11-17","schema":"/rests/modules/ietf-restconf-subscribed-notifications?revision=2019-11-17","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-subscribed-notifications","conformance-type":"import"},{"name":"sal-meters-batch_2016-03-16","revision":"2016-03-16","schema":"/rests/modules/sal-meters-batch?revision=2016-03-16","namespace":"urn:opendaylight:meters:service","conformance-type":"import"},{"name":"odl-entity-owners","revision":"","schema":"/rests/modules/odl-entity-owners","namespace":"urn:opendaylight:params:xml:ns:yang:controller:entity-owners","conformance-type":"import"},{"name":"sal-experimenter-mp-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-mp-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-mp-message:service","conformance-type":"import"},{"name":"packet-processing_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/packet-processing?revision=2013-07-09","namespace":"urn:opendaylight:packet:service","conformance-type":"import"},{"name":"openflow-configuration_2014-06-30","revision":"2014-06-30","schema":"/rests/modules/openflow-configuration?revision=2014-06-30","namespace":"urn:opendaylight:openflow:config","conformance-type":"import"},{"name":"odl-srm-rpcs_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-rpcs?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:rpc","conformance-type":"import"},{"name":"ietf-netconf-acm_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-netconf-acm?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-acm","conformance-type":"import"},{"name":"iana-crypt-hash_2014-08-06","revision":"2014-08-06","schema":"/rests/modules/iana-crypt-hash?revision=2014-08-06","namespace":"urn:ietf:params:xml:ns:yang:iana-crypt-hash","conformance-type":"import","feature":["crypt-hash-sha-512","crypt-hash-sha-256","crypt-hash-md5"]},{"name":"openflow-extensible-match_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-extensible-match?revision=2015-02-25","namespace":"urn:opendaylight:openflow:oxm","conformance-type":"import"}],"module-set-id":"2"}}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:44.157148" elapsed="0.003688"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:44.156640" elapsed="0.004235"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:44.156589" elapsed="0.004311"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:44.163426" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:44.161250" elapsed="0.002222"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:44.160982" elapsed="0.002525"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:44.160962" elapsed="0.002569"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:49:44.164177" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:49:44.163733" elapsed="0.000474"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:44.164542" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:44.164302" elapsed="0.000299"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:49:44.165131" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:49:44.164786" elapsed="0.000424"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:44.164624" elapsed="0.000626"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:44.164282" elapsed="0.000989"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:49:44.165825" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:49:44.165455" elapsed="0.000396"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:44.166245" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:44.165943" elapsed="0.000362"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:49:44.166797" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:49:44.166489" elapsed="0.000334"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:44.166328" elapsed="0.000531"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:44.165924" elapsed="0.000957"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:49:44.167055" elapsed="0.000431"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:49:44.167980" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:49:44.167678" elapsed="0.000328"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:49:44.168196" elapsed="0.002215"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:49:44.154729" elapsed="0.015826"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:49:44.170964" elapsed="0.000047"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:49:44.170710" elapsed="0.000366"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:44.170646" elapsed="0.000467"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:49:44.180637" level="INFO">${text_normalized} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:49:44.171936" elapsed="0.008754"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:49:44.180771" elapsed="0.000071"/>
</return>
<msg time="2026-04-08T00:49:44.181108" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:49:44.118535" elapsed="0.062771"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:49:44.181788" elapsed="0.000032"/>
</return>
<msg time="2026-04-08T00:49:44.181975" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="PASS" start="2026-04-08T00:49:43.973882" elapsed="0.208121"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Json_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:44.182390" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:44.182122" elapsed="0.000462"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:44.182102" elapsed="0.000511"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:49:44.182647" elapsed="0.000028"/>
</return>
<arg>session=${session}</arg>
<arg>folder=${RESTCONF_MODULES_DIR}</arg>
<arg>verify=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Add arguments sensible for JSON data, return Get_Templated response text.
Optionally, verification against JSON data (may be iterated) is called.
Only subset of JSON data is verified and returned if JMES path is specified in
file ${folder}/jmespath.expr.</doc>
<status status="PASS" start="2026-04-08T00:49:43.969813" elapsed="0.212966"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:43.965740" elapsed="0.217083"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:43.965722" elapsed="0.217125"/>
</if>
<kw name="Resolve_Shard_Type_Class" owner="ClusterManagement">
<if>
<branch type="IF" condition="'${shard_type}' == 'config'">
<return>
<value>DistributedConfigDatastore</value>
<status status="NOT RUN" start="2026-04-08T00:49:44.183483" elapsed="0.000020"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:49:44.183370" elapsed="0.000175"/>
</branch>
<branch type="ELSE IF" condition="'${shard_type}' == 'operational'">
<return>
<value>DistributedOperationalDatastore</value>
<status status="PASS" start="2026-04-08T00:49:44.183715" elapsed="0.000033"/>
</return>
<status status="PASS" start="2026-04-08T00:49:44.183578" elapsed="0.000211"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:44.183352" elapsed="0.000468"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized shard type: ${shard_type}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:44.184011" elapsed="0.000025"/>
</kw>
<msg time="2026-04-08T00:49:44.184150" level="INFO">${type_class} = DistributedOperationalDatastore</msg>
<var>${type_class}</var>
<arg>shard_type=${shard_type}</arg>
<doc>Simple lookup for class name corresponding to desired type.</doc>
<status status="PASS" start="2026-04-08T00:49:44.183080" elapsed="0.001115"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:49:44.184793" level="INFO">${cluster_index} = 2</msg>
<var>${cluster_index}</var>
<arg>${member_index}+${NODE_ROLE_INDEX_START}-1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:49:44.184366" elapsed="0.000456"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:49:44.185505" level="INFO">${uri} = jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-default-operational,type=DistributedOperationalDatastore</msg>
<var>${uri}</var>
<arg>${JOLOKIA_READ_URI}:Category=Shards,name=member-${cluster_index}-shard-${shard_name}-${shard_type},type=${type_class}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:49:44.184978" elapsed="0.000583"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:44.191282" level="INFO">jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-default-operational,type=DistributedOperationalDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:44.190796" elapsed="0.000535"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:44.191933" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:44.191486" elapsed="0.000493"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:49:44.211766" level="INFO">GET Request : url=http://10.30.170.131:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-default-operational,type=DistributedOperationalDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-default-operational,type=DistributedOperationalDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:49:44.211911" level="INFO">GET Response : url=http://10.30.170.131:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-default-operational,type=DistributedOperationalDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Wed, 08 Apr 2026 00:49:44 GMT', 'Expires': 'Tue, 07 Apr 2026 23:49:44 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-2-shard-default-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"ReadWriteTransactionCount":0,"SnapshotIndex":33,"InMemoryJournalLogSize":2,"ReplicatedToAllIndex":33,"Leader":"member-1-shard-default-operational","LastIndex":35,"RaftState":"Follower","LastCommittedTransactionTime":"1970-01-01 00:00:00.000","LastApplied":35,"PeerAddresses":"member-1-shard-default-operational: pekko:\/\/opendaylight-cluster-data@10.30.170.48:2550\/user\/shardmanager-operational\/member-1-shard-default-operational, member-3-shard-default-operational: pekko:\/\/opendaylight-cluster-data@10.30.171.110:2550\/user\/shardmanager-operational\/member-3-shard-default-operational","LastLogIndex":35,"LastLeadershipChangeTime":"2026-04-08 00:46:45.939","FollowerInitialSyncStatus":true,"FollowerInfo":[],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"512.8 μs","CurrentTerm":2,"LastTerm":2,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-default-operational","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":0,"TxCohortCacheSize":0,"PeerVotingStates":"member-1-shard-default-operational: true, member-3-shard-default-operational: true","LastLogTerm":2,"StatRetrievalError":null,"CommitIndex":35,"SnapshotTerm":2,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-2-shard-default-operational","LeadershipChangeCount":1,"InMemoryJournalDataSize":89492},"timestamp":1775609384,"status":200} 
 </msg>
<msg time="2026-04-08T00:49:44.212110" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:49:44.203177" elapsed="0.009058"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:44.192052" elapsed="0.020445"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:44.212693" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:44.212532" elapsed="0.000480"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:44.192031" elapsed="0.021008"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:44.221794" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-2-shard-default-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"ReadWriteTransactionCount":0,"SnapshotIndex":33,"InMemoryJournalLogSize":2,"ReplicatedToAllIndex":33,"Leader":"member-1-shard-default-operational","LastIndex":35,"RaftState":"Follower","LastCommittedTransactionTime":"1970-01-01 00:00:00.000","LastApplied":35,"PeerAddresses":"member-1-shard-default-operational: pekko:\/\/opendaylight-cluster-data@10.30.170.48:2550\/user\/shardmanager-operational\/member-1-shard-default-operational, member-3-shard-default-operational: pekko:\/\/opendaylight-cluster-data@10.30.171.110:2550\/user\/shardmanager-operational\/member-3-shard-default-operational","LastLogIndex":35,"LastLeadershipChangeTime":"2026-04-08 00:46:45.939","FollowerInitialSyncStatus":true,"FollowerInfo":[],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"512.8 μs","CurrentTerm":2,"LastTerm":2,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-default-operational","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":0,"TxCohortCacheSize":0,"PeerVotingStates":"member-1-shard-default-operational: true, member-3-shard-default-operational: true","LastLogTerm":2,"StatRetrievalError":null,"CommitIndex":35,"SnapshotTerm":2,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-2-shard-default-operational","LeadershipChangeCount":1,"InMemoryJournalDataSize":89492},"timestamp":1775609384,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:44.216222" elapsed="0.005746"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:44.214856" elapsed="0.007186"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:44.214822" elapsed="0.007315"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:44.225650" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:44.223343" elapsed="0.002421"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:44.222406" elapsed="0.003410"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:44.222374" elapsed="0.003481"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:49:44.227485" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:49:44.226618" elapsed="0.000938"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:44.228334" elapsed="0.000038"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:44.227739" elapsed="0.000687"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:49:44.229386" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:49:44.228800" elapsed="0.000635"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:44.228463" elapsed="0.001024"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:44.227717" elapsed="0.001807"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:49:44.230994" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:49:44.230224" elapsed="0.000833"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:44.231736" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:44.231250" elapsed="0.000575"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:49:44.232736" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:49:44.232219" elapsed="0.000565"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:44.231863" elapsed="0.000974"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:44.231229" elapsed="0.001645"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:49:44.233112" elapsed="0.000684"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:49:44.234922" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:49:44.234149" elapsed="0.000844"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:49:44.235302" elapsed="0.002350"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:49:44.213569" elapsed="0.024279"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:49:44.238063" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:49:44.237927" elapsed="0.000216"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:44.237906" elapsed="0.000437"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:49:44.241896" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-2-shard-default-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp"...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:49:44.238497" elapsed="0.003430"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:49:44.241981" elapsed="0.000036"/>
</return>
<msg time="2026-04-08T00:49:44.242271" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-2-shard-default-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp"...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:49:44.186616" elapsed="0.055685"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:49:44.242406" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:49:44.242563" level="INFO">${data_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-2-shard-default-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp"...</msg>
<var>${data_text}</var>
<arg>uri=${uri}</arg>
<arg>session=${session}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-08T00:49:44.185831" elapsed="0.056759"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:49:44.243710" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-2-shard-default-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 177560938...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:49:44.243225" elapsed="0.000514"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-08T00:49:44.243790" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:49:44.243968" level="INFO">${data_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-2-shard-default-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 177560938...</msg>
<var>${data_object}</var>
<arg>${data_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-08T00:49:44.242837" elapsed="0.001158"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:49:44.244411" level="INFO">${value} = {'AbortTransactionsCount': 0, 'CommitIndex': 35, 'CommittedTransactionsCount': 0, 'CurrentTerm': 2, 'FailedReadTransactionsCount': 0, 'FailedTransactionsCount': 0, 'FollowerInfo': [], 'FollowerInitial...</msg>
<var>${value}</var>
<arg>${data_object}</arg>
<arg>value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:49:44.244198" elapsed="0.000240"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:49:44.244795" level="INFO">${raft_property} = Follower</msg>
<var>${raft_property}</var>
<arg>${value}</arg>
<arg>${property}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:49:44.244594" elapsed="0.000226"/>
</kw>
<return>
<value>${raft_property}</value>
<status status="PASS" start="2026-04-08T00:49:44.244866" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:49:44.245017" level="INFO">${raft_state} = Follower</msg>
<var>${raft_state}</var>
<arg>RaftState</arg>
<arg>${shard_name}</arg>
<arg>${shard_type}</arg>
<arg>${member_index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft property.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T00:49:43.964098" elapsed="0.280943"/>
</kw>
<return>
<value>${raft_state}</value>
<status status="PASS" start="2026-04-08T00:49:44.245098" elapsed="0.000027"/>
</return>
<msg time="2026-04-08T00:49:44.245262" level="INFO">${raft_state} = Follower</msg>
<var>${raft_state}</var>
<arg>shard_name=${shard_name}</arg>
<arg>shard_type=${ds_type}</arg>
<arg>member_index=${index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft status.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T00:49:43.963341" elapsed="0.281946"/>
</kw>
<if>
<branch type="IF" condition="'Follower' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${follower_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-08T00:49:44.245584" elapsed="0.000193"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:44.245367" elapsed="0.000448"/>
</branch>
<branch type="ELSE IF" condition="'Leader' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${leader_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:44.245984" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:44.245840" elapsed="0.000197"/>
</branch>
<branch type="ELSE IF" condition="${validate}">
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized Raft state: ${raft_state}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:44.246352" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:44.246061" elapsed="0.000349"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:44.245349" elapsed="0.001084"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T00:49:43.963146" elapsed="0.283311"/>
</iter>
<iter>
<kw name="Get_Raft_State_Of_Shard_At_Member" owner="ClusterManagement">
<kw name="Get_Raft_Property_From_Shard_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:49:44.249103" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:49:44.248694" elapsed="0.000443"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:49:44.249211" elapsed="0.000037"/>
</return>
<msg time="2026-04-08T00:49:44.249398" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:49:44.248257" elapsed="0.001173"/>
</kw>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Get_As_Json_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:49:44.332801" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:49:44.332415" elapsed="0.000417"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:49:44.333773" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:49:44.333513" elapsed="0.000340">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-08T00:49:44.334033" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:49:44.332997" elapsed="0.001060"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:49:44.334667" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:49:44.334246" elapsed="0.000448"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T00:49:44.334995" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-08T00:49:44.335167" level="INFO">${template} = /rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T00:49:44.334855" elapsed="0.000340"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:44.335596" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:44.335351" elapsed="0.000290"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:44.336630" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:44.336370" elapsed="0.000304"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-08T00:49:44.337123" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-08T00:49:44.336832" elapsed="0.000317"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:44.337516" elapsed="0.000022"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:44.337718" elapsed="0.000024"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:44.337890" elapsed="0.000021"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-08T00:49:44.337381" elapsed="0.000566"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-08T00:49:44.337233" elapsed="0.000745"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-08T00:49:44.338024" elapsed="0.000031"/>
</return>
<msg time="2026-04-08T00:49:44.338207" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-08T00:49:44.336020" elapsed="0.002214"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:44.335713" elapsed="0.002570"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:44.338459" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:44.338310" elapsed="0.000204"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:44.335690" elapsed="0.002845"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:49:44.339176" level="INFO">${final_text} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:49:44.338676" elapsed="0.000529"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T00:49:44.339254" elapsed="0.000030"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="PASS" start="2026-04-08T00:49:44.331783" elapsed="0.007596"/>
</kw>
<msg time="2026-04-08T00:49:44.339432" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:49:44.319415" elapsed="0.020098"/>
</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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:44.351778" elapsed="0.000043"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:44.365893" 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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:44.378376" elapsed="0.000047"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:44.379186" elapsed="0.000039"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:44.379957" elapsed="0.000036"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:44.380581" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:44.380428" elapsed="0.000210"/>
</branch>
<status status="NOT RUN" start="2026-04-08T00:49:44.380408" elapsed="0.000256"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:44.380824" elapsed="0.000022"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:44.381008" elapsed="0.000022"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:44.381209" elapsed="0.000022"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-08T00:49:44.380347" elapsed="0.000938"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-08T00:49:44.380085" elapsed="0.001242"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:44.382019" elapsed="0.000035"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-08T00:49:44.382140" elapsed="0.000065"/>
</return>
<msg time="2026-04-08T00:49:44.382448" level="INFO">${uri} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-08T00:49:44.313408" elapsed="0.069158"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:49:44.385558" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:49:44.385253" elapsed="0.000381">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-08T00:49:44.385822" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:49:44.384744" elapsed="0.001124"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:44.386438" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:44.385998" elapsed="0.000509"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:49:44.387124" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:49:44.386822" elapsed="0.000328"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:44.386547" elapsed="0.000666"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:44.385947" elapsed="0.001306"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:49:44.390343" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:49:44.387987" elapsed="0.002441"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-08T00:49:44.390506" elapsed="0.000080"/>
</return>
<msg time="2026-04-08T00:49:44.390844" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:49:44.383570" elapsed="0.007379"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:49:44.393667" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:49:44.393422" elapsed="0.000309">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-08T00:49:44.394004" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:49:44.392868" elapsed="0.001189"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-08T00:49:44.394538" elapsed="0.000092"/>
</return>
<status status="PASS" start="2026-04-08T00:49:44.394229" elapsed="0.000478"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:44.394151" elapsed="0.000600"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:44.395599" elapsed="0.000043"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:44.396609" elapsed="0.000040"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-08T00:49:44.396732" elapsed="0.000054"/>
</return>
<msg time="2026-04-08T00:49:44.399466" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:49:44.391758" elapsed="0.007815"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:44.403561" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:44.403139" elapsed="0.000526"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:44.404893" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:44.404501" elapsed="0.000492"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:49:44.433073" level="INFO">GET Request : url=http://10.30.171.110:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 path_url=/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node09orwbuy1e81xg3wze7ww55ua0.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:49:44.434198" level="INFO">GET Response : url=http://10.30.171.110:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Transfer-Encoding': 'chunked'} 
 body={"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","hidden-symmetric-keys","encrypted-private-keys","asymmetrically-encrypted-value-format","cms-encrypted-data-format","cleartext-private-keys","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["ssh-client-keepalives","client-ident-hostbased","client-ident-publickey","client-ident-password"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-ex... (set the log level to DEBUG or TRACE to see the full content) 
 </msg>
<msg time="2026-04-08T00:49:44.434990" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:49:44.407385" elapsed="0.027695"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:44.405123" elapsed="0.030196"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:44.436492" elapsed="0.000085"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:44.435493" elapsed="0.001259"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:44.405073" elapsed="0.031815"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:44.443733" level="INFO">{"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","hidden-symmetric-keys","encrypted-private-keys","asymmetrically-encrypted-value-format","cms-encrypted-data-format","cleartext-private-keys","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["ssh-client-keepalives","client-ident-hostbased","client-ident-publickey","client-ident-password"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-experimenter-types?revision=2015-10-20","namespace":"urn:opendaylight:openflowplugin:experimenter:types","conformance-type":"import"},{"name":"ietf-ip_2018-02-22","revision":"2018-02-22","schema":"/rests/modules/ietf-ip?revision=2018-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-ip","conformance-type":"import","feature":["ipv6-privacy-autoconf","ipv4-non-contiguous-netmasks"]},{"name":"ietf-tcp-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-client","conformance-type":"import","feature":["local-binding-supported","tcp-client-keepalives"]},{"name":"node-config_2014-10-15","revision":"2014-10-15","schema":"/rests/modules/node-config?revision=2014-10-15","namespace":"urn:opendaylight:module:config","conformance-type":"import"},{"name":"ietf-restconf_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf","conformance-type":"import"},{"name":"ietf-datastores_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-datastores?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-datastores","conformance-type":"import"},{"name":"ietf-yang-patch_2017-02-22","revision":"2017-02-22","schema":"/rests/modules/ietf-yang-patch?revision=2017-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-patch","conformance-type":"import"},{"name":"sal-group_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-group?revision=2013-09-18","namespace":"urn:opendaylight:group:service","conformance-type":"import"},{"name":"odl-codegen-extensions_2024-06-27","revision":"2024-06-27","schema":"/rests/modules/odl-codegen-extensions?revision=2024-06-27","namespace":"urn:opendaylight:yang:extension:codegen","conformance-type":"import"},{"name":"sal-meter_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-meter?revision=2013-09-18","namespace":"urn:opendaylight:meter:service","conformance-type":"import"},{"name":"ietf-interfaces_2018-02-20","revision":"2018-02-20","schema":"/rests/modules/ietf-interfaces?revision=2018-02-20","namespace":"urn:ietf:params:xml:ns:yang:ietf-interfaces","conformance-type":"import","feature":["pre-provisioning","if-mib","arbitrary-names"]},{"name":"opendaylight-l2-types_2013-08-27","revision":"2013-08-27","schema":"/rests/modules/opendaylight-l2-types?revision=2013-08-27","namespace":"urn:opendaylight:l2:types","conformance-type":"import"},{"name":"opendaylight-flow-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-flow-types?revision=2013-10-26","namespace":"urn:opendaylight:flow:types","conformance-type":"import"},{"name":"lldp-speaker-config_2016-05-12","revision":"2016-05-12","schema":"/rests/modules/lldp-speaker-config?revision=2016-05-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker:config","conformance-type":"import"},{"name":"aaa-cert_2015-11-26","revision":"2015-11-26","schema":"/rests/modules/aaa-cert?revision=2015-11-26","namespace":"urn:opendaylight:yang:aaa:cert","conformance-type":"import"},{"name":"openflow-action_2015-02-03","revision":"2015-02-03","schema":"/rests/modules/openflow-action?revision=2015-02-03","namespace":"urn:opendaylight:openflow:common:action","conformance-type":"import"},{"name":"openflow-approved-extensions_2016-08-02","revision":"2016-08-02","schema":"/rests/modules/openflow-approved-extensions?revision=2016-08-02","namespace":"urn:opendaylight:openflow:approved:extensions","conformance-type":"import"},{"name":"nc-notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/nc-notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netmod:notification","conformance-type":"import"},{"name":"ietf-netconf-nmda_2019-01-07","revision":"2019-01-07","schema":"/rests/modules/ietf-netconf-nmda?revision=2019-01-07","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-nmda","conformance-type":"import","feature":["with-defaults","origin"]},{"name":"ietf-tcp-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-common","conformance-type":"import","feature":["keepalives-supported"]},{"name":"network-topology_2013-10-21","revision":"2013-10-21","schema":"/rests/modules/network-topology?revision=2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:network-topology","conformance-type":"import"},{"name":"aaa-encrypt-service-config_2024-02-02","revision":"2024-02-02","schema":"/rests/modules/aaa-encrypt-service-config?revision=2024-02-02","namespace":"config:aaa:authn:encrypt:service:config","conformance-type":"import"},{"name":"openflow-instruction_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-instruction?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:instruction","conformance-type":"import"},{"name":"ietf-tls-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-client","conformance-type":"import","feature":["client-ident-x509-cert","server-auth-x509-cert"]},{"name":"opendaylight-group-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-group-statistics?revision=2013-11-11","namespace":"urn:opendaylight:group:statistics","conformance-type":"import"},{"name":"cluster-admin_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/cluster-admin?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:cluster:admin","conformance-type":"import"},{"name":"opendaylight-flow-statistics_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-flow-statistics?revision=2013-08-19","namespace":"urn:opendaylight:flow:statistics","conformance-type":"import"},{"name":"opendaylight-table-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-table-types?revision=2013-10-26","namespace":"urn:opendaylight:table:types","conformance-type":"import"},{"name":"forwarding-rules-manager-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/forwarding-rules-manager-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:forwardingrules-manager:config","conformance-type":"import"},{"name":"odl-srm-types_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-types?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:types","conformance-type":"import"},{"name":"ietf-x509-cert-to-name_2014-12-10","revision":"2014-12-10","schema":"/rests/modules/ietf-x509-cert-to-name?revision=2014-12-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-x509-cert-to-name","conformance-type":"import"},{"name":"flow-node-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-node-inventory?revision=2013-08-19","namespace":"urn:opendaylight:flow:inventory","conformance-type":"import"},{"name":"flow-errors_2013-11-16","revision":"2013-11-16","schema":"/rests/modules/flow-errors?revision=2013-11-16","namespace":"urn:opendaylight:flow:errors","conformance-type":"import"},{"name":"ietf-netconf_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:netconf:base:1.0","conformance-type":"import","feature":["xpath","url","rollback-on-error","validate","startup","candidate","confirmed-commit","writable-running"]},{"name":"iana-ssh-public-key-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-public-key-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-public-key-algs","conformance-type":"import"},{"name":"aaa-cert-mdsal_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/aaa-cert-mdsal?revision=2016-03-21","namespace":"urn:opendaylight:yang:aaa:cert:mdsal","conformance-type":"import"},{"name":"odl-device-notification_2024-02-18","revision":"2024-02-18","schema":"/rests/modules/odl-device-notification?revision=2024-02-18","namespace":"urn:opendaylight:device:notification","conformance-type":"import"},{"name":"ietf-origin_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-origin?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-origin","conformance-type":"import"},{"name":"openflow-augments_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-augments?revision=2015-02-25","namespace":"urn:opendaylight:openflow:augments","conformance-type":"import"},{"name":"iana-ssh-encryption-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-encryption-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-encryption-algs","conformance-type":"import"},{"name":"ietf-truststore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-truststore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-truststore","conformance-type":"import","feature":["inline-definitions-supported"]},{"name":"distributed-datastore-provider_2025-01-30","revision":"2025-01-30","schema":"/rests/modules/distributed-datastore-provider?revision=2025-01-30","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:distributed-datastore-provider","conformance-type":"import"},{"name":"opendaylight-group-types_2013-10-18","revision":"2013-10-18","schema":"/rests/modules/opendaylight-group-types?revision=2013-10-18","namespace":"urn:opendaylight:group:types","conformance-type":"import"},{"name":"sal-remote-augment_2023-11-03","revision":"2023-11-03","schema":"/rests/modules/sal-remote-augment?revision=2023-11-03","namespace":"urn:sal:restconf:event:subscription","conformance-type":"import"},{"name":"opendaylight-ipv6-arbitrary-bitmask-fields_2016-02-24","revision":"2016-02-24","schema":"/rests/modules/opendaylight-ipv6-arbitrary-bitmask-fields?revision=2016-02-24","namespace":"urn:opendaylight:opendaylight-ipv6-arbitrary-bitmask-fields","conformance-type":"import"},{"name":"sal-flows-batch_2016-03-14","revision":"2016-03-14","schema":"/rests/modules/sal-flows-batch?revision=2016-03-14","namespace":"urn:opendaylight:flows:service","conformance-type":"import"},{"name":"ietf-tls-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-common","conformance-type":"import","feature":["tls12","hello-params","tls13"]},{"name":"openflow-types_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-types?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:types","conformance-type":"import"},{"name":"ietf-netconf-with-defaults_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf-with-defaults?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults","conformance-type":"import"},{"name":"odl-srm-ops_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-ops?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:ops","conformance-type":"import"},{"name":"odl-general-entity_2015-09-30","revision":"2015-09-30","schema":"/rests/modules/odl-general-entity?revision=2015-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:mdsal:core:general-entity","conformance-type":"import"},{"name":"iana-ssh-key-exchange-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-key-exchange-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-key-exchange-algs","conformance-type":"import"},{"name":"node-ssl-connection-error_2019-07-23","revision":"2019-07-23","schema":"/rests/modules/node-ssl-connection-error?revision=2019-07-23","namespace":"urn:opendaylight:node-ssl-connection-error:service","conformance-type":"import"},{"name":"openflow-protocol_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-protocol?revision=2013-07-31","namespace":"urn:opendaylight:openflow:protocol","conformance-type":"import"},{"name":"ietf-udp-server_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-server?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-server","conformance-type":"import"},{"name":"ietf-keystore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-keystore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-keystore","conformance-type":"import","feature":["asymmetric-keys","inline-definitions-supported"]},{"name":"aaa_2016-12-14","revision":"2016-12-14","schema":"/rests/modules/aaa?revision=2016-12-14","namespace":"urn:opendaylight:params:xml:ns:yang:aaa","conformance-type":"import"},{"name":"aaa-cert-rpc_2015-12-15","revision":"2015-12-15","schema":"/rests/modules/aaa-cert-rpc?revision=2015-12-15","namespace":"urn:opendaylight:yang:aaa:cert:rpc","conformance-type":"import"},{"name":"system-notifications_2013-09-27","revision":"2013-09-27","schema":"/rests/modules/system-notifications?revision=2013-09-27","namespace":"urn:opendaylight:openflow:system","conformance-type":"import"},{"name":"sal-flat-batch_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/sal-flat-batch?revision=2016-03-21","namespace":"urn:opendaylight:flat-batch:service","conformance-type":"import"},{"name":"notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netconf:notification:1.0","conformance-type":"import"},{"name":"sal-remote_2014-01-14","revision":"2014-01-14","schema":"/rests/modules/sal-remote?revision=2014-01-14","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:remote","conformance-type":"import"},{"name":"yang-ext_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/yang-ext?revision=2013-07-09","namespace":"urn:opendaylight:yang:extension:yang-ext","conformance-type":"import"},{"name":"opendaylight-multipart-types_2017-01-12","revision":"2017-01-12","schema":"/rests/modules/opendaylight-multipart-types?revision=2017-01-12","namespace":"urn:opendaylight:multipart:types","conformance-type":"import"},{"name":"opendaylight-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-inventory?revision=2013-08-19","namespace":"urn:opendaylight:inventory","conformance-type":"import"},{"name":"sal-queue_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-queue?revision=2015-03-05","namespace":"urn:opendaylight:queue:service","conformance-type":"import"},{"name":"sal-groups-batch_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/sal-groups-batch?revision=2016-03-15","namespace":"urn:opendaylight:groups:service","conformance-type":"import"},{"name":"arbitrator-reconcile_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/arbitrator-reconcile?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:arbitrator-reconcile:service","conformance-type":"import"},{"name":"ietf-yang-metadata_2016-08-05","revision":"2016-08-05","schema":"/rests/modules/ietf-yang-metadata?revision=2016-08-05","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-metadata","conformance-type":"import"},{"name":"opendaylight-arbitrary-bitmask-fields_2016-01-30","revision":"2016-01-30","schema":"/rests/modules/opendaylight-arbitrary-bitmask-fields?revision=2016-01-30","namespace":"urn:opendaylight:arbitrary:bitmask:fields","conformance-type":"import"},{"name":"ietf-udp-client_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-client?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-client","conformance-type":"import","feature":["local-binding"]},{"name":"opendaylight-meter-types_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/opendaylight-meter-types?revision=2013-09-18","namespace":"urn:opendaylight:meter:types","conformance-type":"import"},{"name":"opendaylight-action-types_2013-11-12","revision":"2013-11-12","schema":"/rests/modules/opendaylight-action-types?revision=2013-11-12","namespace":"urn:opendaylight:action:types","conformance-type":"import"},{"name":"sal-role_2015-07-27","revision":"2015-07-27","schema":"/rests/modules/sal-role?revision=2015-07-27","namespace":"urn:opendaylight:role:service","conformance-type":"import"},{"name":"openflow-provider-config_2016-05-10","revision":"2016-05-10","schema":"/rests/modules/openflow-provider-config?revision=2016-05-10","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:provider:config","conformance-type":"import"},{"name":"odl-serviceutils-upgrade_2018-07-02","revision":"2018-07-02","schema":"/rests/modules/odl-serviceutils-upgrade?revision=2018-07-02","namespace":"urn:opendaylight:serviceutils:upgrade","conformance-type":"import"},{"name":"opendaylight-match-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-match-types?revision=2013-10-26","namespace":"urn:opendaylight:model:match:types","conformance-type":"import"},{"name":"ietf-restconf-server_2024-08-14","revision":"2024-08-14","schema":"/rests/modules/ietf-restconf-server?revision=2024-08-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-server","conformance-type":"import","feature":["http-listen","https-listen"]},{"name":"reconciliation-result-state_2017-07-13","revision":"2017-07-13","schema":"/rests/modules/reconciliation-result-state?revision=2017-07-13","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:rf:state","conformance-type":"import"},{"name":"onf-extensions_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/onf-extensions?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf","conformance-type":"import"},{"name":"sal-table_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/sal-table?revision=2013-10-26","namespace":"urn:opendaylight:table:service","conformance-type":"import"},{"name":"iana-http-versions_2026-02-04","revision":"2026-02-04","schema":"/rests/modules/iana-http-versions?revision=2026-02-04","namespace":"urn:ietf:params:xml:ns:yang:iana-http-versions","conformance-type":"import"},{"name":"opendaylight-direct-statistics_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/opendaylight-direct-statistics?revision=2016-05-11","namespace":"urn:opendaylight:direct:statistics","conformance-type":"import"},{"name":"opendaylight-port-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-port-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:port","conformance-type":"import"},{"name":"sal-async-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/sal-async-config?revision=2017-06-19","namespace":"urn:opendaylight:async-config:service","conformance-type":"import"},{"name":"aaa-password-service-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-password-service-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:password:service:config","conformance-type":"import"},{"name":"ietf-yang-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-yang-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-types","conformance-type":"import"},{"name":"opendaylight-queue-statistics_2013-12-16","revision":"2013-12-16","schema":"/rests/modules/opendaylight-queue-statistics?revision=2013-12-16","namespace":"urn:opendaylight:queue:statistics","conformance-type":"import"},{"name":"sal-bundle_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/sal-bundle?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf:bundle:service","conformance-type":"import"},{"name":"ietf-restconf-subscribed-notifications_2019-11-17","revision":"2019-11-17","schema":"/rests/modules/ietf-restconf-subscribed-notifications?revision=2019-11-17","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-subscribed-notifications","conformance-type":"import"},{"name":"sal-meters-batch_2016-03-16","revision":"2016-03-16","schema":"/rests/modules/sal-meters-batch?revision=2016-03-16","namespace":"urn:opendaylight:meters:service","conformance-type":"import"},{"name":"odl-entity-owners","revision":"","schema":"/rests/modules/odl-entity-owners","namespace":"urn:opendaylight:params:xml:ns:yang:controller:entity-owners","conformance-type":"import"},{"name":"sal-experimenter-mp-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-mp-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-mp-message:service","conformance-type":"import"},{"name":"packet-processing_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/packet-processing?revision=2013-07-09","namespace":"urn:opendaylight:packet:service","conformance-type":"import"},{"name":"openflow-configuration_2014-06-30","revision":"2014-06-30","schema":"/rests/modules/openflow-configuration?revision=2014-06-30","namespace":"urn:opendaylight:openflow:config","conformance-type":"import"},{"name":"odl-srm-rpcs_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-rpcs?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:rpc","conformance-type":"import"},{"name":"ietf-netconf-acm_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-netconf-acm?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-acm","conformance-type":"import"},{"name":"iana-crypt-hash_2014-08-06","revision":"2014-08-06","schema":"/rests/modules/iana-crypt-hash?revision=2014-08-06","namespace":"urn:ietf:params:xml:ns:yang:iana-crypt-hash","conformance-type":"import","feature":["crypt-hash-sha-512","crypt-hash-sha-256","crypt-hash-md5"]},{"name":"openflow-extensible-match_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-extensible-match?revision=2015-02-25","namespace":"urn:opendaylight:openflow:oxm","conformance-type":"import"}],"module-set-id":"2"}}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:44.440648" elapsed="0.003449"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:44.440304" elapsed="0.003834"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:44.440266" elapsed="0.003916"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:44.446968" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:44.444542" elapsed="0.002475"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:44.444273" elapsed="0.002780"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:44.444252" elapsed="0.002826"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:49:44.447764" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:49:44.447318" elapsed="0.000473"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:44.448134" elapsed="0.000038"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:44.447889" elapsed="0.000322"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:49:44.448745" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:49:44.448406" elapsed="0.000367"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:44.448235" elapsed="0.000575"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:44.447869" elapsed="0.000963"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:49:44.449411" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:49:44.449015" elapsed="0.000423"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:44.449780" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:44.449532" elapsed="0.000308"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:49:44.450353" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:49:44.450025" elapsed="0.000355"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:44.449865" elapsed="0.000551"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:44.449512" elapsed="0.000926"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:49:44.450635" elapsed="0.000384"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:49:44.451564" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:49:44.451226" elapsed="0.000367"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:49:44.451818" elapsed="0.002575"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:49:44.439384" elapsed="0.015166"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:49:44.454908" elapsed="0.000048"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:49:44.454684" elapsed="0.000336"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:44.454632" elapsed="0.000424"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:49:44.464192" level="INFO">${text_normalized} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:49:44.455805" elapsed="0.008439"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:49:44.464325" elapsed="0.000073"/>
</return>
<msg time="2026-04-08T00:49:44.464664" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:49:44.400356" elapsed="0.064417"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:49:44.465338" elapsed="0.000031"/>
</return>
<msg time="2026-04-08T00:49:44.465522" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="PASS" start="2026-04-08T00:49:44.257995" elapsed="0.207555"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Json_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:44.465960" elapsed="0.000029"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:44.465636" elapsed="0.000600"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:44.465618" elapsed="0.000654"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:49:44.466309" elapsed="0.000029"/>
</return>
<arg>session=${session}</arg>
<arg>folder=${RESTCONF_MODULES_DIR}</arg>
<arg>verify=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Add arguments sensible for JSON data, return Get_Templated response text.
Optionally, verification against JSON data (may be iterated) is called.
Only subset of JSON data is verified and returned if JMES path is specified in
file ${folder}/jmespath.expr.</doc>
<status status="PASS" start="2026-04-08T00:49:44.253877" elapsed="0.212567"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:44.249516" elapsed="0.217022"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:44.249493" elapsed="0.217078"/>
</if>
<kw name="Resolve_Shard_Type_Class" owner="ClusterManagement">
<if>
<branch type="IF" condition="'${shard_type}' == 'config'">
<return>
<value>DistributedConfigDatastore</value>
<status status="NOT RUN" start="2026-04-08T00:49:44.467240" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:49:44.467111" elapsed="0.000175"/>
</branch>
<branch type="ELSE IF" condition="'${shard_type}' == 'operational'">
<return>
<value>DistributedOperationalDatastore</value>
<status status="PASS" start="2026-04-08T00:49:44.467418" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-08T00:49:44.467310" elapsed="0.000167"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:44.467093" elapsed="0.000408"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized shard type: ${shard_type}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:44.467649" elapsed="0.000022"/>
</kw>
<msg time="2026-04-08T00:49:44.467771" level="INFO">${type_class} = DistributedOperationalDatastore</msg>
<var>${type_class}</var>
<arg>shard_type=${shard_type}</arg>
<doc>Simple lookup for class name corresponding to desired type.</doc>
<status status="PASS" start="2026-04-08T00:49:44.466823" elapsed="0.000974"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:49:44.468387" level="INFO">${cluster_index} = 3</msg>
<var>${cluster_index}</var>
<arg>${member_index}+${NODE_ROLE_INDEX_START}-1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:49:44.467970" elapsed="0.000447"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:49:44.469050" level="INFO">${uri} = jolokia/read/org.opendaylight.controller:Category=Shards,name=member-3-shard-default-operational,type=DistributedOperationalDatastore</msg>
<var>${uri}</var>
<arg>${JOLOKIA_READ_URI}:Category=Shards,name=member-${cluster_index}-shard-${shard_name}-${shard_type},type=${type_class}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:49:44.468577" elapsed="0.000500"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:44.474743" level="INFO">jolokia/read/org.opendaylight.controller:Category=Shards,name=member-3-shard-default-operational,type=DistributedOperationalDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:44.474265" elapsed="0.000526"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:44.475469" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:44.474988" elapsed="0.000529"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:49:44.493706" level="INFO">GET Request : url=http://10.30.171.110:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-3-shard-default-operational,type=DistributedOperationalDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-3-shard-default-operational,type=DistributedOperationalDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:49:44.493844" level="INFO">GET Response : url=http://10.30.171.110:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-3-shard-default-operational,type=DistributedOperationalDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Wed, 08 Apr 2026 00:49:44 GMT', 'Expires': 'Tue, 07 Apr 2026 23:49:44 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-3-shard-default-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"ReadWriteTransactionCount":0,"SnapshotIndex":40,"InMemoryJournalLogSize":1,"ReplicatedToAllIndex":40,"Leader":"member-1-shard-default-operational","LastIndex":41,"RaftState":"Follower","LastApplied":41,"LastCommittedTransactionTime":"1970-01-01 00:00:00.000","PeerAddresses":"member-1-shard-default-operational: pekko:\/\/opendaylight-cluster-data@10.30.170.48:2550\/user\/shardmanager-operational\/member-1-shard-default-operational, member-2-shard-default-operational: pekko:\/\/opendaylight-cluster-data@10.30.170.131:2550\/user\/shardmanager-operational\/member-2-shard-default-operational","LastLogIndex":41,"LastLeadershipChangeTime":"2026-04-08 00:46:45.941","FollowerInitialSyncStatus":true,"FollowerInfo":[],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"609.2 μs","CurrentTerm":2,"LastTerm":2,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-default-operational","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":0,"TxCohortCacheSize":0,"PeerVotingStates":"member-1-shard-default-operational: true, member-2-shard-default-operational: true","LastLogTerm":2,"StatRetrievalError":null,"CommitIndex":41,"SnapshotTerm":2,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-3-shard-default-operational","LeadershipChangeCount":1,"InMemoryJournalDataSize":89738},"timestamp":1775609384,"status":200} 
 </msg>
<msg time="2026-04-08T00:49:44.494041" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:49:44.486745" elapsed="0.007402"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:44.475588" elapsed="0.018841"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:44.494637" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:44.494461" elapsed="0.000491"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:44.475569" elapsed="0.019408"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:44.500097" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-3-shard-default-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"ReadWriteTransactionCount":0,"SnapshotIndex":40,"InMemoryJournalLogSize":1,"ReplicatedToAllIndex":40,"Leader":"member-1-shard-default-operational","LastIndex":41,"RaftState":"Follower","LastApplied":41,"LastCommittedTransactionTime":"1970-01-01 00:00:00.000","PeerAddresses":"member-1-shard-default-operational: pekko:\/\/opendaylight-cluster-data@10.30.170.48:2550\/user\/shardmanager-operational\/member-1-shard-default-operational, member-2-shard-default-operational: pekko:\/\/opendaylight-cluster-data@10.30.170.131:2550\/user\/shardmanager-operational\/member-2-shard-default-operational","LastLogIndex":41,"LastLeadershipChangeTime":"2026-04-08 00:46:45.941","FollowerInitialSyncStatus":true,"FollowerInfo":[],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"609.2 μs","CurrentTerm":2,"LastTerm":2,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-default-operational","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":0,"TxCohortCacheSize":0,"PeerVotingStates":"member-1-shard-default-operational: true, member-2-shard-default-operational: true","LastLogTerm":2,"StatRetrievalError":null,"CommitIndex":41,"SnapshotTerm":2,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-3-shard-default-operational","LeadershipChangeCount":1,"InMemoryJournalDataSize":89738},"timestamp":1775609384,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:44.497364" elapsed="0.002877"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:44.496454" elapsed="0.003840"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:44.496434" elapsed="0.003900"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:44.503669" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:44.501299" elapsed="0.002471"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:44.500426" elapsed="0.003394"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:44.500404" elapsed="0.003455"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:49:44.505335" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:49:44.504515" elapsed="0.000888"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:44.506046" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:44.505574" elapsed="0.000562"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:49:44.507098" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:49:44.506583" elapsed="0.000562"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:44.506190" elapsed="0.001116"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:44.505553" elapsed="0.001790"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:49:44.508721" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:49:44.507949" elapsed="0.000834"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:44.509451" elapsed="0.000038"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:44.508951" elapsed="0.000589"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:49:44.510445" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:49:44.509909" elapsed="0.000584"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:44.509577" elapsed="0.000982"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:44.508931" elapsed="0.001667"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:49:44.510827" elapsed="0.000711"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:49:44.512418" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:49:44.511845" elapsed="0.000635"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:49:44.512765" elapsed="0.002543"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:49:44.495746" elapsed="0.019741"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:49:44.515701" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:49:44.515566" elapsed="0.000184"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:44.515546" elapsed="0.000227"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:49:44.519615" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-3-shard-default-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp"...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:49:44.515921" elapsed="0.003725"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:49:44.519699" elapsed="0.000037"/>
</return>
<msg time="2026-04-08T00:49:44.519869" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-3-shard-default-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp"...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:49:44.470071" elapsed="0.049826"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:49:44.520007" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:49:44.520180" level="INFO">${data_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-3-shard-default-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp"...</msg>
<var>${data_text}</var>
<arg>uri=${uri}</arg>
<arg>session=${session}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-08T00:49:44.469318" elapsed="0.050891"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:49:44.521386" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-3-shard-default-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 177560938...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:49:44.520818" elapsed="0.000600"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-08T00:49:44.521474" elapsed="0.000031"/>
</return>
<msg time="2026-04-08T00:49:44.521654" level="INFO">${data_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-3-shard-default-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 177560938...</msg>
<var>${data_object}</var>
<arg>${data_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-08T00:49:44.520456" elapsed="0.001226"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:49:44.522044" level="INFO">${value} = {'AbortTransactionsCount': 0, 'CommitIndex': 41, 'CommittedTransactionsCount': 0, 'CurrentTerm': 2, 'FailedReadTransactionsCount': 0, 'FailedTransactionsCount': 0, 'FollowerInfo': [], 'FollowerInitial...</msg>
<var>${value}</var>
<arg>${data_object}</arg>
<arg>value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:49:44.521839" elapsed="0.000233"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:49:44.522454" level="INFO">${raft_property} = Follower</msg>
<var>${raft_property}</var>
<arg>${value}</arg>
<arg>${property}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:49:44.522247" elapsed="0.000237"/>
</kw>
<return>
<value>${raft_property}</value>
<status status="PASS" start="2026-04-08T00:49:44.522538" elapsed="0.000060"/>
</return>
<msg time="2026-04-08T00:49:44.522729" level="INFO">${raft_state} = Follower</msg>
<var>${raft_state}</var>
<arg>RaftState</arg>
<arg>${shard_name}</arg>
<arg>${shard_type}</arg>
<arg>${member_index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft property.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T00:49:44.247542" elapsed="0.275213"/>
</kw>
<return>
<value>${raft_state}</value>
<status status="PASS" start="2026-04-08T00:49:44.522814" elapsed="0.000026"/>
</return>
<msg time="2026-04-08T00:49:44.522965" level="INFO">${raft_state} = Follower</msg>
<var>${raft_state}</var>
<arg>shard_name=${shard_name}</arg>
<arg>shard_type=${ds_type}</arg>
<arg>member_index=${index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft status.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T00:49:44.246792" elapsed="0.276198"/>
</kw>
<if>
<branch type="IF" condition="'Follower' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${follower_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-08T00:49:44.523307" elapsed="0.000201"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:44.523071" elapsed="0.000477"/>
</branch>
<branch type="ELSE IF" condition="'Leader' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${leader_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:44.523718" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:44.523573" elapsed="0.000201"/>
</branch>
<branch type="ELSE IF" condition="${validate}">
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized Raft state: ${raft_state}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:44.523936" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:44.523796" elapsed="0.000191"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:44.523053" elapsed="0.000956"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T00:49:44.246623" elapsed="0.277411"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-08T00:49:43.688327" elapsed="0.835743"/>
</for>
<return>
<value>${leader_list}</value>
<value>${follower_list}</value>
<status status="PASS" start="2026-04-08T00:49:44.524113" elapsed="0.000026"/>
</return>
<msg time="2026-04-08T00:49:44.524335" level="INFO">${leader_list} = [1]</msg>
<msg time="2026-04-08T00:49:44.524382" level="INFO">${follower_list} = [2, 3]</msg>
<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="PASS" start="2026-04-08T00:49:43.684337" elapsed="0.840070"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T00:49:44.524871" level="INFO">Length is 1.</msg>
<msg time="2026-04-08T00:49:44.524948" level="INFO">${leader_count} = 1</msg>
<var>${leader_count}</var>
<arg>${leader_list}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T00:49:44.524592" elapsed="0.000380"/>
</kw>
<if>
<branch type="IF" condition="${leader_count} &lt; 1">
<kw name="Fail" owner="BuiltIn">
<arg>No leader found.</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:44.525272" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:44.525041" elapsed="0.000285"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:44.525024" elapsed="0.000324"/>
</if>
<kw name="Length Should Be" owner="BuiltIn">
<msg time="2026-04-08T00:49:44.527441" level="INFO">Length is 1.</msg>
<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="PASS" start="2026-04-08T00:49:44.525483" elapsed="0.002006"/>
</kw>
<kw name="Get From List" owner="Collections">
<msg time="2026-04-08T00:49:44.527893" level="INFO">${leader} = 1</msg>
<var>${leader}</var>
<arg>${leader_list}</arg>
<arg>0</arg>
<doc>Returns the value specified with an ``index`` from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:49:44.527699" elapsed="0.000221"/>
</kw>
<return>
<value>${leader}</value>
<value>${follower_list}</value>
<status status="PASS" start="2026-04-08T00:49:44.527967" elapsed="0.000030"/>
</return>
<arg>shard_name=${shard_name}</arg>
<arg>shard_type=${shard_type}</arg>
<arg>validate=True</arg>
<arg>member_index_list=${member_index_list}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<doc>Get role lists, validate there is one leader, return the leader and list of followers.
Optionally, issue GET to a simple restconf URL to make sure subsequent operations will not encounter 503.</doc>
<status status="PASS" start="2026-04-08T00:49:43.681650" elapsed="0.846475"/>
</kw>
<var name="${shard_name}">default</var>
<status status="PASS" start="2026-04-08T00:49:43.681432" elapsed="0.846758"/>
</iter>
<var>${shard_name}</var>
<value>@{shard_name_list}</value>
<status status="PASS" start="2026-04-08T00:49:39.106485" elapsed="5.421738"/>
</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="PASS" start="2026-04-08T00:49:39.106052" elapsed="5.422230"/>
</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-04-08T00:49:44.533298" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:49:44.532896" elapsed="0.000432"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:49:44.533792" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:49:44.533489" elapsed="0.000329"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:49:44.533863" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:49:44.534015" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:49:44.532529" elapsed="0.001510"/>
</kw>
<kw name="Sort List" owner="Collections">
<arg>${index_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="PASS" start="2026-04-08T00:49:44.534206" elapsed="0.000159"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:49:44.534875" level="INFO">${ds_type} = config</msg>
<var>${ds_type}</var>
<arg>'${shard_type}' != 'config'</arg>
<arg>operational</arg>
<arg>config</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:49:44.534523" elapsed="0.000378"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:49:44.535313" level="INFO">${leader_list} = []</msg>
<var>${leader_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:49:44.535057" elapsed="0.000281"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:49:44.535715" level="INFO">${follower_list} = []</msg>
<var>${follower_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:49:44.535482" elapsed="0.000257"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_Raft_State_Of_Shard_At_Member" owner="ClusterManagement">
<kw name="Get_Raft_Property_From_Shard_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:49:44.538148" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:49:44.537823" elapsed="0.000374"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:49:44.538245" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:49:44.538394" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:49:44.537482" elapsed="0.000937"/>
</kw>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Get_As_Json_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:49:44.623446" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:49:44.623029" elapsed="0.000450"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:49:44.624292" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:49:44.623985" elapsed="0.000390">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-08T00:49:44.624471" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:49:44.623654" elapsed="0.000841"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:49:44.625070" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:49:44.624659" elapsed="0.000450"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T00:49:44.625450" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-08T00:49:44.625728" level="INFO">${template} = /rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T00:49:44.625300" elapsed="0.000454"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:44.626174" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:44.625910" elapsed="0.000312"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:44.627224" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:44.626954" elapsed="0.000315"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-08T00:49:44.627695" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-08T00:49:44.627427" elapsed="0.000294"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:44.628059" elapsed="0.000021"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:44.628275" elapsed="0.000024"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:44.628448" elapsed="0.000020"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-08T00:49:44.627925" elapsed="0.000579"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-08T00:49:44.627781" elapsed="0.000754"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-08T00:49:44.628582" elapsed="0.000033"/>
</return>
<msg time="2026-04-08T00:49:44.628748" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-08T00:49:44.626621" elapsed="0.002152"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:44.626305" elapsed="0.002499"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:44.628973" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:44.628829" elapsed="0.000199"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:44.626280" elapsed="0.002768"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:49:44.629650" level="INFO">${final_text} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:49:44.629202" elapsed="0.000475"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T00:49:44.629726" 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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="PASS" start="2026-04-08T00:49:44.622378" elapsed="0.007471"/>
</kw>
<msg time="2026-04-08T00:49:44.629903" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:49:44.610179" elapsed="0.019816"/>
</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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:44.642632" elapsed="0.000064"/>
</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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:44.654973" elapsed="0.000043"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:44.667259" elapsed="0.000056"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:44.668197" elapsed="0.000040"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:44.668955" elapsed="0.000036"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:44.669596" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:44.669415" elapsed="0.000243"/>
</branch>
<status status="NOT RUN" start="2026-04-08T00:49:44.669397" elapsed="0.000286"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:44.669889" elapsed="0.000028"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:44.670140" elapsed="0.000048"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:44.670420" elapsed="0.000030"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-08T00:49:44.669338" elapsed="0.001181"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-08T00:49:44.669079" elapsed="0.001495"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:44.671395" elapsed="0.000037"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-08T00:49:44.671519" elapsed="0.000051"/>
</return>
<msg time="2026-04-08T00:49:44.671785" level="INFO">${uri} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-08T00:49:44.604111" elapsed="0.067783"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:49:44.675090" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:49:44.674739" elapsed="0.000445">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-08T00:49:44.675382" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:49:44.674227" elapsed="0.001201"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:44.675965" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:44.675561" elapsed="0.000472"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:49:44.676697" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:49:44.676389" elapsed="0.000334"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:44.676073" elapsed="0.000696"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:44.675510" elapsed="0.001299"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:49:44.680032" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:49:44.677667" elapsed="0.002413"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-08T00:49:44.680175" elapsed="0.000070"/>
</return>
<msg time="2026-04-08T00:49:44.680509" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:49:44.672960" elapsed="0.007659"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:49:44.683493" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:49:44.683246" elapsed="0.000312">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-08T00:49:44.683753" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:49:44.682761" elapsed="0.001038"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-08T00:49:44.684206" elapsed="0.000083"/>
</return>
<status status="PASS" start="2026-04-08T00:49:44.683935" elapsed="0.000423"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:44.683880" elapsed="0.000518"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:44.685125" elapsed="0.000153"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:44.686060" elapsed="0.000039"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-08T00:49:44.686192" elapsed="0.000051"/>
</return>
<msg time="2026-04-08T00:49:44.688424" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:49:44.681573" elapsed="0.006960"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:44.692467" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:44.692050" elapsed="0.000518"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:44.693810" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:44.693424" elapsed="0.000484"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:49:44.713331" level="INFO">GET Request : url=http://10.30.170.48:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 path_url=/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01nfu2ssrokr1es5zgka78rw970.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:49:44.714711" level="INFO">GET Response : url=http://10.30.170.48:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Transfer-Encoding': 'chunked'} 
 body={"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","hidden-symmetric-keys","encrypted-private-keys","asymmetrically-encrypted-value-format","cms-encrypted-data-format","cleartext-private-keys","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["ssh-client-keepalives","client-ident-hostbased","client-ident-publickey","client-ident-password"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-ex... (set the log level to DEBUG or TRACE to see the full content) 
 </msg>
<msg time="2026-04-08T00:49:44.715459" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:49:44.696216" elapsed="0.019334"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:44.694036" elapsed="0.021695"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:44.716641" elapsed="0.000064"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:44.715884" elapsed="0.000981"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:44.693984" elapsed="0.023015"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:44.724182" level="INFO">{"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","hidden-symmetric-keys","encrypted-private-keys","asymmetrically-encrypted-value-format","cms-encrypted-data-format","cleartext-private-keys","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["ssh-client-keepalives","client-ident-hostbased","client-ident-publickey","client-ident-password"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-experimenter-types?revision=2015-10-20","namespace":"urn:opendaylight:openflowplugin:experimenter:types","conformance-type":"import"},{"name":"ietf-ip_2018-02-22","revision":"2018-02-22","schema":"/rests/modules/ietf-ip?revision=2018-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-ip","conformance-type":"import","feature":["ipv6-privacy-autoconf","ipv4-non-contiguous-netmasks"]},{"name":"ietf-tcp-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-client","conformance-type":"import","feature":["local-binding-supported","tcp-client-keepalives"]},{"name":"node-config_2014-10-15","revision":"2014-10-15","schema":"/rests/modules/node-config?revision=2014-10-15","namespace":"urn:opendaylight:module:config","conformance-type":"import"},{"name":"ietf-restconf_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf","conformance-type":"import"},{"name":"ietf-datastores_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-datastores?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-datastores","conformance-type":"import"},{"name":"ietf-yang-patch_2017-02-22","revision":"2017-02-22","schema":"/rests/modules/ietf-yang-patch?revision=2017-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-patch","conformance-type":"import"},{"name":"sal-group_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-group?revision=2013-09-18","namespace":"urn:opendaylight:group:service","conformance-type":"import"},{"name":"odl-codegen-extensions_2024-06-27","revision":"2024-06-27","schema":"/rests/modules/odl-codegen-extensions?revision=2024-06-27","namespace":"urn:opendaylight:yang:extension:codegen","conformance-type":"import"},{"name":"sal-meter_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-meter?revision=2013-09-18","namespace":"urn:opendaylight:meter:service","conformance-type":"import"},{"name":"ietf-interfaces_2018-02-20","revision":"2018-02-20","schema":"/rests/modules/ietf-interfaces?revision=2018-02-20","namespace":"urn:ietf:params:xml:ns:yang:ietf-interfaces","conformance-type":"import","feature":["pre-provisioning","if-mib","arbitrary-names"]},{"name":"opendaylight-l2-types_2013-08-27","revision":"2013-08-27","schema":"/rests/modules/opendaylight-l2-types?revision=2013-08-27","namespace":"urn:opendaylight:l2:types","conformance-type":"import"},{"name":"opendaylight-flow-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-flow-types?revision=2013-10-26","namespace":"urn:opendaylight:flow:types","conformance-type":"import"},{"name":"lldp-speaker-config_2016-05-12","revision":"2016-05-12","schema":"/rests/modules/lldp-speaker-config?revision=2016-05-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker:config","conformance-type":"import"},{"name":"aaa-cert_2015-11-26","revision":"2015-11-26","schema":"/rests/modules/aaa-cert?revision=2015-11-26","namespace":"urn:opendaylight:yang:aaa:cert","conformance-type":"import"},{"name":"openflow-action_2015-02-03","revision":"2015-02-03","schema":"/rests/modules/openflow-action?revision=2015-02-03","namespace":"urn:opendaylight:openflow:common:action","conformance-type":"import"},{"name":"openflow-approved-extensions_2016-08-02","revision":"2016-08-02","schema":"/rests/modules/openflow-approved-extensions?revision=2016-08-02","namespace":"urn:opendaylight:openflow:approved:extensions","conformance-type":"import"},{"name":"nc-notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/nc-notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netmod:notification","conformance-type":"import"},{"name":"ietf-netconf-nmda_2019-01-07","revision":"2019-01-07","schema":"/rests/modules/ietf-netconf-nmda?revision=2019-01-07","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-nmda","conformance-type":"import","feature":["with-defaults","origin"]},{"name":"ietf-tcp-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-common","conformance-type":"import","feature":["keepalives-supported"]},{"name":"network-topology_2013-10-21","revision":"2013-10-21","schema":"/rests/modules/network-topology?revision=2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:network-topology","conformance-type":"import"},{"name":"aaa-encrypt-service-config_2024-02-02","revision":"2024-02-02","schema":"/rests/modules/aaa-encrypt-service-config?revision=2024-02-02","namespace":"config:aaa:authn:encrypt:service:config","conformance-type":"import"},{"name":"openflow-instruction_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-instruction?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:instruction","conformance-type":"import"},{"name":"ietf-tls-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-client","conformance-type":"import","feature":["client-ident-x509-cert","server-auth-x509-cert"]},{"name":"opendaylight-group-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-group-statistics?revision=2013-11-11","namespace":"urn:opendaylight:group:statistics","conformance-type":"import"},{"name":"cluster-admin_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/cluster-admin?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:cluster:admin","conformance-type":"import"},{"name":"opendaylight-flow-statistics_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-flow-statistics?revision=2013-08-19","namespace":"urn:opendaylight:flow:statistics","conformance-type":"import"},{"name":"opendaylight-table-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-table-types?revision=2013-10-26","namespace":"urn:opendaylight:table:types","conformance-type":"import"},{"name":"forwarding-rules-manager-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/forwarding-rules-manager-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:forwardingrules-manager:config","conformance-type":"import"},{"name":"odl-srm-types_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-types?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:types","conformance-type":"import"},{"name":"ietf-x509-cert-to-name_2014-12-10","revision":"2014-12-10","schema":"/rests/modules/ietf-x509-cert-to-name?revision=2014-12-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-x509-cert-to-name","conformance-type":"import"},{"name":"flow-node-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-node-inventory?revision=2013-08-19","namespace":"urn:opendaylight:flow:inventory","conformance-type":"import"},{"name":"flow-errors_2013-11-16","revision":"2013-11-16","schema":"/rests/modules/flow-errors?revision=2013-11-16","namespace":"urn:opendaylight:flow:errors","conformance-type":"import"},{"name":"ietf-netconf_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:netconf:base:1.0","conformance-type":"import","feature":["xpath","url","rollback-on-error","validate","startup","candidate","confirmed-commit","writable-running"]},{"name":"iana-ssh-public-key-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-public-key-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-public-key-algs","conformance-type":"import"},{"name":"aaa-cert-mdsal_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/aaa-cert-mdsal?revision=2016-03-21","namespace":"urn:opendaylight:yang:aaa:cert:mdsal","conformance-type":"import"},{"name":"odl-device-notification_2024-02-18","revision":"2024-02-18","schema":"/rests/modules/odl-device-notification?revision=2024-02-18","namespace":"urn:opendaylight:device:notification","conformance-type":"import"},{"name":"ietf-origin_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-origin?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-origin","conformance-type":"import"},{"name":"openflow-augments_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-augments?revision=2015-02-25","namespace":"urn:opendaylight:openflow:augments","conformance-type":"import"},{"name":"iana-ssh-encryption-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-encryption-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-encryption-algs","conformance-type":"import"},{"name":"ietf-truststore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-truststore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-truststore","conformance-type":"import","feature":["inline-definitions-supported"]},{"name":"distributed-datastore-provider_2025-01-30","revision":"2025-01-30","schema":"/rests/modules/distributed-datastore-provider?revision=2025-01-30","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:distributed-datastore-provider","conformance-type":"import"},{"name":"opendaylight-group-types_2013-10-18","revision":"2013-10-18","schema":"/rests/modules/opendaylight-group-types?revision=2013-10-18","namespace":"urn:opendaylight:group:types","conformance-type":"import"},{"name":"sal-remote-augment_2023-11-03","revision":"2023-11-03","schema":"/rests/modules/sal-remote-augment?revision=2023-11-03","namespace":"urn:sal:restconf:event:subscription","conformance-type":"import"},{"name":"opendaylight-ipv6-arbitrary-bitmask-fields_2016-02-24","revision":"2016-02-24","schema":"/rests/modules/opendaylight-ipv6-arbitrary-bitmask-fields?revision=2016-02-24","namespace":"urn:opendaylight:opendaylight-ipv6-arbitrary-bitmask-fields","conformance-type":"import"},{"name":"sal-flows-batch_2016-03-14","revision":"2016-03-14","schema":"/rests/modules/sal-flows-batch?revision=2016-03-14","namespace":"urn:opendaylight:flows:service","conformance-type":"import"},{"name":"ietf-tls-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-common","conformance-type":"import","feature":["tls12","hello-params","tls13"]},{"name":"openflow-types_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-types?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:types","conformance-type":"import"},{"name":"ietf-netconf-with-defaults_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf-with-defaults?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults","conformance-type":"import"},{"name":"odl-srm-ops_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-ops?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:ops","conformance-type":"import"},{"name":"odl-general-entity_2015-09-30","revision":"2015-09-30","schema":"/rests/modules/odl-general-entity?revision=2015-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:mdsal:core:general-entity","conformance-type":"import"},{"name":"iana-ssh-key-exchange-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-key-exchange-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-key-exchange-algs","conformance-type":"import"},{"name":"node-ssl-connection-error_2019-07-23","revision":"2019-07-23","schema":"/rests/modules/node-ssl-connection-error?revision=2019-07-23","namespace":"urn:opendaylight:node-ssl-connection-error:service","conformance-type":"import"},{"name":"openflow-protocol_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-protocol?revision=2013-07-31","namespace":"urn:opendaylight:openflow:protocol","conformance-type":"import"},{"name":"ietf-udp-server_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-server?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-server","conformance-type":"import"},{"name":"ietf-keystore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-keystore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-keystore","conformance-type":"import","feature":["asymmetric-keys","inline-definitions-supported"]},{"name":"aaa_2016-12-14","revision":"2016-12-14","schema":"/rests/modules/aaa?revision=2016-12-14","namespace":"urn:opendaylight:params:xml:ns:yang:aaa","conformance-type":"import"},{"name":"aaa-cert-rpc_2015-12-15","revision":"2015-12-15","schema":"/rests/modules/aaa-cert-rpc?revision=2015-12-15","namespace":"urn:opendaylight:yang:aaa:cert:rpc","conformance-type":"import"},{"name":"system-notifications_2013-09-27","revision":"2013-09-27","schema":"/rests/modules/system-notifications?revision=2013-09-27","namespace":"urn:opendaylight:openflow:system","conformance-type":"import"},{"name":"sal-flat-batch_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/sal-flat-batch?revision=2016-03-21","namespace":"urn:opendaylight:flat-batch:service","conformance-type":"import"},{"name":"notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netconf:notification:1.0","conformance-type":"import"},{"name":"sal-remote_2014-01-14","revision":"2014-01-14","schema":"/rests/modules/sal-remote?revision=2014-01-14","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:remote","conformance-type":"import"},{"name":"yang-ext_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/yang-ext?revision=2013-07-09","namespace":"urn:opendaylight:yang:extension:yang-ext","conformance-type":"import"},{"name":"opendaylight-multipart-types_2017-01-12","revision":"2017-01-12","schema":"/rests/modules/opendaylight-multipart-types?revision=2017-01-12","namespace":"urn:opendaylight:multipart:types","conformance-type":"import"},{"name":"opendaylight-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-inventory?revision=2013-08-19","namespace":"urn:opendaylight:inventory","conformance-type":"import"},{"name":"sal-queue_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-queue?revision=2015-03-05","namespace":"urn:opendaylight:queue:service","conformance-type":"import"},{"name":"sal-groups-batch_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/sal-groups-batch?revision=2016-03-15","namespace":"urn:opendaylight:groups:service","conformance-type":"import"},{"name":"arbitrator-reconcile_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/arbitrator-reconcile?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:arbitrator-reconcile:service","conformance-type":"import"},{"name":"ietf-yang-metadata_2016-08-05","revision":"2016-08-05","schema":"/rests/modules/ietf-yang-metadata?revision=2016-08-05","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-metadata","conformance-type":"import"},{"name":"opendaylight-arbitrary-bitmask-fields_2016-01-30","revision":"2016-01-30","schema":"/rests/modules/opendaylight-arbitrary-bitmask-fields?revision=2016-01-30","namespace":"urn:opendaylight:arbitrary:bitmask:fields","conformance-type":"import"},{"name":"ietf-udp-client_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-client?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-client","conformance-type":"import","feature":["local-binding"]},{"name":"opendaylight-meter-types_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/opendaylight-meter-types?revision=2013-09-18","namespace":"urn:opendaylight:meter:types","conformance-type":"import"},{"name":"opendaylight-action-types_2013-11-12","revision":"2013-11-12","schema":"/rests/modules/opendaylight-action-types?revision=2013-11-12","namespace":"urn:opendaylight:action:types","conformance-type":"import"},{"name":"sal-role_2015-07-27","revision":"2015-07-27","schema":"/rests/modules/sal-role?revision=2015-07-27","namespace":"urn:opendaylight:role:service","conformance-type":"import"},{"name":"openflow-provider-config_2016-05-10","revision":"2016-05-10","schema":"/rests/modules/openflow-provider-config?revision=2016-05-10","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:provider:config","conformance-type":"import"},{"name":"odl-serviceutils-upgrade_2018-07-02","revision":"2018-07-02","schema":"/rests/modules/odl-serviceutils-upgrade?revision=2018-07-02","namespace":"urn:opendaylight:serviceutils:upgrade","conformance-type":"import"},{"name":"opendaylight-match-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-match-types?revision=2013-10-26","namespace":"urn:opendaylight:model:match:types","conformance-type":"import"},{"name":"ietf-restconf-server_2024-08-14","revision":"2024-08-14","schema":"/rests/modules/ietf-restconf-server?revision=2024-08-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-server","conformance-type":"import","feature":["http-listen","https-listen"]},{"name":"reconciliation-result-state_2017-07-13","revision":"2017-07-13","schema":"/rests/modules/reconciliation-result-state?revision=2017-07-13","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:rf:state","conformance-type":"import"},{"name":"onf-extensions_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/onf-extensions?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf","conformance-type":"import"},{"name":"sal-table_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/sal-table?revision=2013-10-26","namespace":"urn:opendaylight:table:service","conformance-type":"import"},{"name":"iana-http-versions_2026-02-04","revision":"2026-02-04","schema":"/rests/modules/iana-http-versions?revision=2026-02-04","namespace":"urn:ietf:params:xml:ns:yang:iana-http-versions","conformance-type":"import"},{"name":"opendaylight-direct-statistics_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/opendaylight-direct-statistics?revision=2016-05-11","namespace":"urn:opendaylight:direct:statistics","conformance-type":"import"},{"name":"opendaylight-port-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-port-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:port","conformance-type":"import"},{"name":"sal-async-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/sal-async-config?revision=2017-06-19","namespace":"urn:opendaylight:async-config:service","conformance-type":"import"},{"name":"aaa-password-service-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-password-service-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:password:service:config","conformance-type":"import"},{"name":"ietf-yang-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-yang-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-types","conformance-type":"import"},{"name":"opendaylight-queue-statistics_2013-12-16","revision":"2013-12-16","schema":"/rests/modules/opendaylight-queue-statistics?revision=2013-12-16","namespace":"urn:opendaylight:queue:statistics","conformance-type":"import"},{"name":"sal-bundle_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/sal-bundle?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf:bundle:service","conformance-type":"import"},{"name":"ietf-restconf-subscribed-notifications_2019-11-17","revision":"2019-11-17","schema":"/rests/modules/ietf-restconf-subscribed-notifications?revision=2019-11-17","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-subscribed-notifications","conformance-type":"import"},{"name":"sal-meters-batch_2016-03-16","revision":"2016-03-16","schema":"/rests/modules/sal-meters-batch?revision=2016-03-16","namespace":"urn:opendaylight:meters:service","conformance-type":"import"},{"name":"odl-entity-owners","revision":"","schema":"/rests/modules/odl-entity-owners","namespace":"urn:opendaylight:params:xml:ns:yang:controller:entity-owners","conformance-type":"import"},{"name":"sal-experimenter-mp-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-mp-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-mp-message:service","conformance-type":"import"},{"name":"packet-processing_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/packet-processing?revision=2013-07-09","namespace":"urn:opendaylight:packet:service","conformance-type":"import"},{"name":"openflow-configuration_2014-06-30","revision":"2014-06-30","schema":"/rests/modules/openflow-configuration?revision=2014-06-30","namespace":"urn:opendaylight:openflow:config","conformance-type":"import"},{"name":"odl-srm-rpcs_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-rpcs?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:rpc","conformance-type":"import"},{"name":"ietf-netconf-acm_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-netconf-acm?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-acm","conformance-type":"import"},{"name":"iana-crypt-hash_2014-08-06","revision":"2014-08-06","schema":"/rests/modules/iana-crypt-hash?revision=2014-08-06","namespace":"urn:ietf:params:xml:ns:yang:iana-crypt-hash","conformance-type":"import","feature":["crypt-hash-sha-512","crypt-hash-sha-256","crypt-hash-md5"]},{"name":"openflow-extensible-match_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-extensible-match?revision=2015-02-25","namespace":"urn:opendaylight:openflow:oxm","conformance-type":"import"}],"module-set-id":"2"}}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:44.720760" elapsed="0.003761"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:44.720433" elapsed="0.004124"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:44.720400" elapsed="0.004183"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:44.727097" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:44.724890" elapsed="0.002254"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:44.724665" elapsed="0.002529"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:44.724647" elapsed="0.002578"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:49:44.727867" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:49:44.727434" elapsed="0.000461"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:44.728249" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:44.727990" elapsed="0.000317"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:49:44.728803" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:49:44.728493" elapsed="0.000336"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:44.728332" elapsed="0.000533"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:44.727970" elapsed="0.000916"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:49:44.729497" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:49:44.729065" elapsed="0.000459"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:44.729939" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:44.729617" elapsed="0.000381"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:49:44.730501" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:49:44.730197" elapsed="0.000330"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:44.730022" elapsed="0.000541"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:44.729597" elapsed="0.000988"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:49:44.730760" elapsed="0.000427"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:49:44.731675" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:49:44.731377" elapsed="0.000324"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:49:44.731881" elapsed="0.002213"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:49:44.719334" elapsed="0.014905"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:49:44.734597" elapsed="0.000050"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:49:44.734372" elapsed="0.000342"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:44.734320" elapsed="0.000430"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:49:44.745104" level="INFO">${text_normalized} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:49:44.735536" elapsed="0.009764"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:49:44.745419" elapsed="0.000110"/>
</return>
<msg time="2026-04-08T00:49:44.745897" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:49:44.689313" elapsed="0.056732"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:49:44.746681" elapsed="0.000041"/>
</return>
<msg time="2026-04-08T00:49:44.746949" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="PASS" start="2026-04-08T00:49:44.547678" elapsed="0.199314"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Json_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:44.747512" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:44.747118" elapsed="0.000690"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:44.747091" elapsed="0.000756"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:49:44.747898" elapsed="0.000037"/>
</return>
<arg>session=${session}</arg>
<arg>folder=${RESTCONF_MODULES_DIR}</arg>
<arg>verify=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Add arguments sensible for JSON data, return Get_Templated response text.
Optionally, verification against JSON data (may be iterated) is called.
Only subset of JSON data is verified and returned if JMES path is specified in
file ${folder}/jmespath.expr.</doc>
<status status="PASS" start="2026-04-08T00:49:44.543338" elapsed="0.204735"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:44.538487" elapsed="0.209647"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:44.538469" elapsed="0.209723"/>
</if>
<kw name="Resolve_Shard_Type_Class" owner="ClusterManagement">
<if>
<branch type="IF" condition="'${shard_type}' == 'config'">
<return>
<value>DistributedConfigDatastore</value>
<status status="PASS" start="2026-04-08T00:49:44.749052" elapsed="0.000038"/>
</return>
<status status="PASS" start="2026-04-08T00:49:44.748902" elapsed="0.000234"/>
</branch>
<branch type="ELSE IF" condition="'${shard_type}' == 'operational'">
<return>
<value>DistributedOperationalDatastore</value>
<status status="NOT RUN" start="2026-04-08T00:49:44.749256" elapsed="0.000020"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:49:44.749198" elapsed="0.000117"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:44.748876" elapsed="0.000475"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized shard type: ${shard_type}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:44.749572" elapsed="0.000030"/>
</kw>
<msg time="2026-04-08T00:49:44.749734" level="INFO">${type_class} = DistributedConfigDatastore</msg>
<var>${type_class}</var>
<arg>shard_type=${shard_type}</arg>
<doc>Simple lookup for class name corresponding to desired type.</doc>
<status status="PASS" start="2026-04-08T00:49:44.748520" elapsed="0.001253"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:49:44.750483" level="INFO">${cluster_index} = 1</msg>
<var>${cluster_index}</var>
<arg>${member_index}+${NODE_ROLE_INDEX_START}-1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:49:44.750008" elapsed="0.000504"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:49:44.751223" level="INFO">${uri} = jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-inventory-config,type=DistributedConfigDatastore</msg>
<var>${uri}</var>
<arg>${JOLOKIA_READ_URI}:Category=Shards,name=member-${cluster_index}-shard-${shard_name}-${shard_type},type=${type_class}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:49:44.750670" elapsed="0.000583"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:44.756969" level="INFO">jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-inventory-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:44.756501" elapsed="0.000517"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:44.757641" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:44.757190" elapsed="0.000498"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:49:44.778296" level="INFO">GET Request : url=http://10.30.170.48:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-inventory-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-inventory-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:49:44.778471" level="INFO">GET Response : url=http://10.30.170.48:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-inventory-config,type=DistributedConfigDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Wed, 08 Apr 2026 00:49:44 GMT', 'Expires': 'Tue, 07 Apr 2026 23:49:44 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-1-shard-inventory-config,type=DistributedConfigDatastore","type":"read"},"value":{"ReadWriteTransactionCount":0,"SnapshotIndex":-1,"InMemoryJournalLogSize":0,"ReplicatedToAllIndex":-1,"Leader":"member-1-shard-inventory-config","LastIndex":-1,"RaftState":"Leader","LastApplied":-1,"LastCommittedTransactionTime":"1970-01-01 00:00:00.000","PeerAddresses":"member-2-shard-inventory-config: pekko:\/\/opendaylight-cluster-data@10.30.170.131:2550\/user\/shardmanager-config\/member-2-shard-inventory-config, member-3-shard-inventory-config: pekko:\/\/opendaylight-cluster-data@10.30.171.110:2550\/user\/shardmanager-config\/member-3-shard-inventory-config","LastLogIndex":-1,"LastLeadershipChangeTime":"2026-04-08 00:46:45.964","FollowerInitialSyncStatus":false,"FollowerInfo":[{"timeSinceLastActivity":"00:00:00.493","active":true,"matchIndex":-1,"voting":true,"id":"member-2-shard-inventory-config","nextIndex":0},{"timeSinceLastActivity":"00:00:00.492","active":true,"matchIndex":-1,"voting":true,"id":"member-3-shard-inventory-config","nextIndex":0}],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"674.3 μs","CurrentTerm":2,"LastTerm":-1,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-inventory-config","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":0,"TxCohortCacheSize":0,"PeerVotingStates":"member-2-shard-inventory-config: true, member-3-shard-inventory-config: true","LastLogTerm":-1,"StatRetrievalError":null,"CommitIndex":-1,"SnapshotTerm":-1,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-1-shard-inventory-config","LeadershipChangeCount":1,"InMemoryJournalDataSize":0},"timestamp":1775609384,"status":200} 
 </msg>
<msg time="2026-04-08T00:49:44.778704" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:49:44.768531" elapsed="0.010282"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:44.757773" elapsed="0.021335"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:44.779335" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:44.779141" elapsed="0.000911"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:44.757751" elapsed="0.022357"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:44.788985" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-1-shard-inventory-config,type=DistributedConfigDatastore","type":"read"},"value":{"ReadWriteTransactionCount":0,"SnapshotIndex":-1,"InMemoryJournalLogSize":0,"ReplicatedToAllIndex":-1,"Leader":"member-1-shard-inventory-config","LastIndex":-1,"RaftState":"Leader","LastApplied":-1,"LastCommittedTransactionTime":"1970-01-01 00:00:00.000","PeerAddresses":"member-2-shard-inventory-config: pekko:\/\/opendaylight-cluster-data@10.30.170.131:2550\/user\/shardmanager-config\/member-2-shard-inventory-config, member-3-shard-inventory-config: pekko:\/\/opendaylight-cluster-data@10.30.171.110:2550\/user\/shardmanager-config\/member-3-shard-inventory-config","LastLogIndex":-1,"LastLeadershipChangeTime":"2026-04-08 00:46:45.964","FollowerInitialSyncStatus":false,"FollowerInfo":[{"timeSinceLastActivity":"00:00:00.493","active":true,"matchIndex":-1,"voting":true,"id":"member-2-shard-inventory-config","nextIndex":0},{"timeSinceLastActivity":"00:00:00.492","active":true,"matchIndex":-1,"voting":true,"id":"member-3-shard-inventory-config","nextIndex":0}],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"674.3 μs","CurrentTerm":2,"LastTerm":-1,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-inventory-config","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":0,"TxCohortCacheSize":0,"PeerVotingStates":"member-2-shard-inventory-config: true, member-3-shard-inventory-config: true","LastLogTerm":-1,"StatRetrievalError":null,"CommitIndex":-1,"SnapshotTerm":-1,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-1-shard-inventory-config","LeadershipChangeCount":1,"InMemoryJournalDataSize":0},"timestamp":1775609384,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:44.785089" elapsed="0.004014"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:44.783093" elapsed="0.006075"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:44.783041" elapsed="0.006170"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:44.792548" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:44.790179" elapsed="0.002469"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:44.789297" elapsed="0.003401"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:44.789279" elapsed="0.003458"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:49:44.794185" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:49:44.793372" elapsed="0.000878"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:44.794892" elapsed="0.000038"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:44.794420" elapsed="0.000563"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:49:44.795928" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:49:44.795415" elapsed="0.000559"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:44.795052" elapsed="0.000973"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:44.794399" elapsed="0.001662"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:49:44.797463" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:49:44.796696" elapsed="0.000829"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:44.798193" elapsed="0.000039"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:44.797695" elapsed="0.000588"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:49:44.799204" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:49:44.798659" elapsed="0.000595"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:44.798325" elapsed="0.000979"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:44.797672" elapsed="0.001668"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:49:44.799565" elapsed="0.000721"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:49:44.801118" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:49:44.800593" elapsed="0.000604"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:49:44.801481" elapsed="0.002430"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:49:44.781424" elapsed="0.022643"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:49:44.804456" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:49:44.804140" elapsed="0.000362"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:44.804121" elapsed="0.000402"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:49:44.808122" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-1-shard-inventory-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 177560...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:49:44.804668" elapsed="0.003582"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:49:44.808309" elapsed="0.000036"/>
</return>
<msg time="2026-04-08T00:49:44.808509" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-1-shard-inventory-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 177560...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:49:44.752236" elapsed="0.056301"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:49:44.808596" elapsed="0.000026"/>
</return>
<msg time="2026-04-08T00:49:44.808743" level="INFO">${data_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-1-shard-inventory-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 177560...</msg>
<var>${data_text}</var>
<arg>uri=${uri}</arg>
<arg>session=${session}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-08T00:49:44.751475" elapsed="0.057295"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:49:44.809837" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-1-shard-inventory-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1775609384, 'valu...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:49:44.809350" elapsed="0.000516"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-08T00:49:44.809915" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:49:44.810093" level="INFO">${data_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-1-shard-inventory-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1775609384, 'valu...</msg>
<var>${data_object}</var>
<arg>${data_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-08T00:49:44.808992" elapsed="0.001128"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:49:44.810500" level="INFO">${value} = {'AbortTransactionsCount': 0, 'CommitIndex': -1, 'CommittedTransactionsCount': 0, 'CurrentTerm': 2, 'FailedReadTransactionsCount': 0, 'FailedTransactionsCount': 0, 'FollowerInfo': [{'active': True, 'i...</msg>
<var>${value}</var>
<arg>${data_object}</arg>
<arg>value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:49:44.810293" elapsed="0.000234"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:49:44.810880" level="INFO">${raft_property} = Leader</msg>
<var>${raft_property}</var>
<arg>${value}</arg>
<arg>${property}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:49:44.810681" elapsed="0.000225"/>
</kw>
<return>
<value>${raft_property}</value>
<status status="PASS" start="2026-04-08T00:49:44.810951" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:49:44.811138" level="INFO">${raft_state} = Leader</msg>
<var>${raft_state}</var>
<arg>RaftState</arg>
<arg>${shard_name}</arg>
<arg>${shard_type}</arg>
<arg>${member_index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft property.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T00:49:44.536871" elapsed="0.274308"/>
</kw>
<return>
<value>${raft_state}</value>
<status status="PASS" start="2026-04-08T00:49:44.811239" elapsed="0.000027"/>
</return>
<msg time="2026-04-08T00:49:44.811428" level="INFO">${raft_state} = Leader</msg>
<var>${raft_state}</var>
<arg>shard_name=${shard_name}</arg>
<arg>shard_type=${ds_type}</arg>
<arg>member_index=${index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft status.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T00:49:44.536144" elapsed="0.275322"/>
</kw>
<if>
<branch type="IF" condition="'Follower' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${follower_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:44.811896" elapsed="0.000029"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:44.811584" elapsed="0.000392"/>
</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="PASS" start="2026-04-08T00:49:44.812402" elapsed="0.000266"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:44.812009" elapsed="0.000712"/>
</branch>
<branch type="ELSE IF" condition="${validate}">
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized Raft state: ${raft_state}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:44.812957" elapsed="0.000029"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:44.812756" elapsed="0.000273"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:44.811559" elapsed="0.001503"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T00:49:44.535982" elapsed="0.277112"/>
</iter>
<iter>
<kw name="Get_Raft_State_Of_Shard_At_Member" owner="ClusterManagement">
<kw name="Get_Raft_Property_From_Shard_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:49:44.818337" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:49:44.815947" elapsed="0.002431"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:49:44.818445" elapsed="0.000041"/>
</return>
<msg time="2026-04-08T00:49:44.818655" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:49:44.815476" elapsed="0.003214"/>
</kw>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Get_As_Json_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:49:44.901142" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:49:44.900765" elapsed="0.000421"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:49:44.901992" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:49:44.901754" elapsed="0.000315">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-08T00:49:44.902176" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:49:44.901365" elapsed="0.000837"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:49:44.902751" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:49:44.902369" elapsed="0.000409"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T00:49:44.903071" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-08T00:49:44.903266" level="INFO">${template} = /rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T00:49:44.902935" elapsed="0.000357"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:44.903690" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:44.903447" elapsed="0.000287"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:44.904677" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:44.904420" elapsed="0.000302"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-08T00:49:44.905146" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-08T00:49:44.904877" elapsed="0.000310"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:44.905516" elapsed="0.000022"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:44.905714" elapsed="0.000024"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:44.905884" elapsed="0.000021"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-08T00:49:44.905386" elapsed="0.000554"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-08T00:49:44.905241" elapsed="0.000728"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-08T00:49:44.906014" elapsed="0.000027"/>
</return>
<msg time="2026-04-08T00:49:44.906184" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-08T00:49:44.904088" elapsed="0.002122"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:44.903802" elapsed="0.002440"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:44.906411" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:44.906266" elapsed="0.000199"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:44.903783" elapsed="0.002702"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:49:44.907049" level="INFO">${final_text} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:49:44.906624" elapsed="0.000452"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T00:49:44.907123" 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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="PASS" start="2026-04-08T00:49:44.900137" elapsed="0.007148"/>
</kw>
<msg time="2026-04-08T00:49:44.907339" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:49:44.887869" elapsed="0.019549"/>
</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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:44.919668" elapsed="0.000047"/>
</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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:44.931574" elapsed="0.000040"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:44.943612" elapsed="0.000042"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:44.944390" elapsed="0.000037"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:44.945133" elapsed="0.000052"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:44.945719" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:44.945570" elapsed="0.000205"/>
</branch>
<status status="NOT RUN" start="2026-04-08T00:49:44.945552" elapsed="0.000247"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:44.945957" elapsed="0.000021"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:44.946141" elapsed="0.000036"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:44.946346" elapsed="0.000022"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-08T00:49:44.945499" elapsed="0.000923"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-08T00:49:44.945271" elapsed="0.001191"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:44.947148" elapsed="0.000052"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-08T00:49:44.947309" elapsed="0.000049"/>
</return>
<msg time="2026-04-08T00:49:44.947541" level="INFO">${uri} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-08T00:49:44.881707" elapsed="0.065942"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:49:44.950510" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:49:44.950239" elapsed="0.000345">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-08T00:49:44.950769" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:49:44.949760" elapsed="0.001054"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:44.951353" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:44.950941" elapsed="0.000480"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:49:44.952022" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:49:44.951728" elapsed="0.000320"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:44.951461" elapsed="0.000632"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:44.950892" elapsed="0.001238"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:49:44.955210" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:49:44.952857" elapsed="0.002400"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-08T00:49:44.955366" elapsed="0.000064"/>
</return>
<msg time="2026-04-08T00:49:44.955681" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:49:44.948629" elapsed="0.007156"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:49:44.958683" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:49:44.958430" elapsed="0.000318">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-08T00:49:44.958937" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:49:44.957845" elapsed="0.001136"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-08T00:49:44.959404" elapsed="0.000079"/>
</return>
<status status="PASS" start="2026-04-08T00:49:44.959111" elapsed="0.000439"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:44.959060" elapsed="0.000530"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:44.960321" elapsed="0.000041"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:44.961056" elapsed="0.000036"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-08T00:49:44.961177" elapsed="0.000050"/>
</return>
<msg time="2026-04-08T00:49:44.963431" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:49:44.956595" elapsed="0.006944"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:44.967469" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:44.967049" elapsed="0.000520"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:44.968665" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:44.968280" elapsed="0.000484"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:49:44.996089" level="INFO">GET Request : url=http://10.30.170.131:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 path_url=/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0evogeryo91251obsb096nsda10.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:49:44.997376" level="INFO">GET Response : url=http://10.30.170.131:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Transfer-Encoding': 'chunked'} 
 body={"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","hidden-symmetric-keys","encrypted-private-keys","asymmetrically-encrypted-value-format","cms-encrypted-data-format","cleartext-private-keys","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["ssh-client-keepalives","client-ident-hostbased","client-ident-publickey","client-ident-password"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-ex... (set the log level to DEBUG or TRACE to see the full content) 
 </msg>
<msg time="2026-04-08T00:49:44.998015" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:49:44.971081" elapsed="0.027022"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:44.968892" elapsed="0.029418"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:44.999391" elapsed="0.000092"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:44.998455" elapsed="0.001199"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:44.968840" elapsed="0.030939"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:45.006438" level="INFO">{"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","hidden-symmetric-keys","encrypted-private-keys","asymmetrically-encrypted-value-format","cms-encrypted-data-format","cleartext-private-keys","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["ssh-client-keepalives","client-ident-hostbased","client-ident-publickey","client-ident-password"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-experimenter-types?revision=2015-10-20","namespace":"urn:opendaylight:openflowplugin:experimenter:types","conformance-type":"import"},{"name":"ietf-ip_2018-02-22","revision":"2018-02-22","schema":"/rests/modules/ietf-ip?revision=2018-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-ip","conformance-type":"import","feature":["ipv6-privacy-autoconf","ipv4-non-contiguous-netmasks"]},{"name":"ietf-tcp-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-client","conformance-type":"import","feature":["local-binding-supported","tcp-client-keepalives"]},{"name":"node-config_2014-10-15","revision":"2014-10-15","schema":"/rests/modules/node-config?revision=2014-10-15","namespace":"urn:opendaylight:module:config","conformance-type":"import"},{"name":"ietf-restconf_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf","conformance-type":"import"},{"name":"ietf-datastores_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-datastores?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-datastores","conformance-type":"import"},{"name":"ietf-yang-patch_2017-02-22","revision":"2017-02-22","schema":"/rests/modules/ietf-yang-patch?revision=2017-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-patch","conformance-type":"import"},{"name":"sal-group_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-group?revision=2013-09-18","namespace":"urn:opendaylight:group:service","conformance-type":"import"},{"name":"odl-codegen-extensions_2024-06-27","revision":"2024-06-27","schema":"/rests/modules/odl-codegen-extensions?revision=2024-06-27","namespace":"urn:opendaylight:yang:extension:codegen","conformance-type":"import"},{"name":"sal-meter_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-meter?revision=2013-09-18","namespace":"urn:opendaylight:meter:service","conformance-type":"import"},{"name":"ietf-interfaces_2018-02-20","revision":"2018-02-20","schema":"/rests/modules/ietf-interfaces?revision=2018-02-20","namespace":"urn:ietf:params:xml:ns:yang:ietf-interfaces","conformance-type":"import","feature":["pre-provisioning","if-mib","arbitrary-names"]},{"name":"opendaylight-l2-types_2013-08-27","revision":"2013-08-27","schema":"/rests/modules/opendaylight-l2-types?revision=2013-08-27","namespace":"urn:opendaylight:l2:types","conformance-type":"import"},{"name":"opendaylight-flow-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-flow-types?revision=2013-10-26","namespace":"urn:opendaylight:flow:types","conformance-type":"import"},{"name":"lldp-speaker-config_2016-05-12","revision":"2016-05-12","schema":"/rests/modules/lldp-speaker-config?revision=2016-05-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker:config","conformance-type":"import"},{"name":"aaa-cert_2015-11-26","revision":"2015-11-26","schema":"/rests/modules/aaa-cert?revision=2015-11-26","namespace":"urn:opendaylight:yang:aaa:cert","conformance-type":"import"},{"name":"openflow-action_2015-02-03","revision":"2015-02-03","schema":"/rests/modules/openflow-action?revision=2015-02-03","namespace":"urn:opendaylight:openflow:common:action","conformance-type":"import"},{"name":"openflow-approved-extensions_2016-08-02","revision":"2016-08-02","schema":"/rests/modules/openflow-approved-extensions?revision=2016-08-02","namespace":"urn:opendaylight:openflow:approved:extensions","conformance-type":"import"},{"name":"nc-notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/nc-notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netmod:notification","conformance-type":"import"},{"name":"ietf-netconf-nmda_2019-01-07","revision":"2019-01-07","schema":"/rests/modules/ietf-netconf-nmda?revision=2019-01-07","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-nmda","conformance-type":"import","feature":["with-defaults","origin"]},{"name":"ietf-tcp-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-common","conformance-type":"import","feature":["keepalives-supported"]},{"name":"network-topology_2013-10-21","revision":"2013-10-21","schema":"/rests/modules/network-topology?revision=2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:network-topology","conformance-type":"import"},{"name":"aaa-encrypt-service-config_2024-02-02","revision":"2024-02-02","schema":"/rests/modules/aaa-encrypt-service-config?revision=2024-02-02","namespace":"config:aaa:authn:encrypt:service:config","conformance-type":"import"},{"name":"openflow-instruction_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-instruction?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:instruction","conformance-type":"import"},{"name":"ietf-tls-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-client","conformance-type":"import","feature":["client-ident-x509-cert","server-auth-x509-cert"]},{"name":"opendaylight-group-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-group-statistics?revision=2013-11-11","namespace":"urn:opendaylight:group:statistics","conformance-type":"import"},{"name":"cluster-admin_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/cluster-admin?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:cluster:admin","conformance-type":"import"},{"name":"opendaylight-flow-statistics_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-flow-statistics?revision=2013-08-19","namespace":"urn:opendaylight:flow:statistics","conformance-type":"import"},{"name":"opendaylight-table-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-table-types?revision=2013-10-26","namespace":"urn:opendaylight:table:types","conformance-type":"import"},{"name":"forwarding-rules-manager-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/forwarding-rules-manager-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:forwardingrules-manager:config","conformance-type":"import"},{"name":"odl-srm-types_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-types?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:types","conformance-type":"import"},{"name":"ietf-x509-cert-to-name_2014-12-10","revision":"2014-12-10","schema":"/rests/modules/ietf-x509-cert-to-name?revision=2014-12-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-x509-cert-to-name","conformance-type":"import"},{"name":"flow-node-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-node-inventory?revision=2013-08-19","namespace":"urn:opendaylight:flow:inventory","conformance-type":"import"},{"name":"flow-errors_2013-11-16","revision":"2013-11-16","schema":"/rests/modules/flow-errors?revision=2013-11-16","namespace":"urn:opendaylight:flow:errors","conformance-type":"import"},{"name":"ietf-netconf_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:netconf:base:1.0","conformance-type":"import","feature":["xpath","url","rollback-on-error","validate","startup","candidate","confirmed-commit","writable-running"]},{"name":"iana-ssh-public-key-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-public-key-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-public-key-algs","conformance-type":"import"},{"name":"aaa-cert-mdsal_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/aaa-cert-mdsal?revision=2016-03-21","namespace":"urn:opendaylight:yang:aaa:cert:mdsal","conformance-type":"import"},{"name":"odl-device-notification_2024-02-18","revision":"2024-02-18","schema":"/rests/modules/odl-device-notification?revision=2024-02-18","namespace":"urn:opendaylight:device:notification","conformance-type":"import"},{"name":"ietf-origin_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-origin?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-origin","conformance-type":"import"},{"name":"openflow-augments_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-augments?revision=2015-02-25","namespace":"urn:opendaylight:openflow:augments","conformance-type":"import"},{"name":"iana-ssh-encryption-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-encryption-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-encryption-algs","conformance-type":"import"},{"name":"ietf-truststore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-truststore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-truststore","conformance-type":"import","feature":["inline-definitions-supported"]},{"name":"distributed-datastore-provider_2025-01-30","revision":"2025-01-30","schema":"/rests/modules/distributed-datastore-provider?revision=2025-01-30","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:distributed-datastore-provider","conformance-type":"import"},{"name":"opendaylight-group-types_2013-10-18","revision":"2013-10-18","schema":"/rests/modules/opendaylight-group-types?revision=2013-10-18","namespace":"urn:opendaylight:group:types","conformance-type":"import"},{"name":"sal-remote-augment_2023-11-03","revision":"2023-11-03","schema":"/rests/modules/sal-remote-augment?revision=2023-11-03","namespace":"urn:sal:restconf:event:subscription","conformance-type":"import"},{"name":"opendaylight-ipv6-arbitrary-bitmask-fields_2016-02-24","revision":"2016-02-24","schema":"/rests/modules/opendaylight-ipv6-arbitrary-bitmask-fields?revision=2016-02-24","namespace":"urn:opendaylight:opendaylight-ipv6-arbitrary-bitmask-fields","conformance-type":"import"},{"name":"sal-flows-batch_2016-03-14","revision":"2016-03-14","schema":"/rests/modules/sal-flows-batch?revision=2016-03-14","namespace":"urn:opendaylight:flows:service","conformance-type":"import"},{"name":"ietf-tls-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-common","conformance-type":"import","feature":["tls12","hello-params","tls13"]},{"name":"openflow-types_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-types?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:types","conformance-type":"import"},{"name":"ietf-netconf-with-defaults_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf-with-defaults?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults","conformance-type":"import"},{"name":"odl-srm-ops_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-ops?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:ops","conformance-type":"import"},{"name":"odl-general-entity_2015-09-30","revision":"2015-09-30","schema":"/rests/modules/odl-general-entity?revision=2015-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:mdsal:core:general-entity","conformance-type":"import"},{"name":"iana-ssh-key-exchange-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-key-exchange-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-key-exchange-algs","conformance-type":"import"},{"name":"node-ssl-connection-error_2019-07-23","revision":"2019-07-23","schema":"/rests/modules/node-ssl-connection-error?revision=2019-07-23","namespace":"urn:opendaylight:node-ssl-connection-error:service","conformance-type":"import"},{"name":"openflow-protocol_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-protocol?revision=2013-07-31","namespace":"urn:opendaylight:openflow:protocol","conformance-type":"import"},{"name":"ietf-udp-server_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-server?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-server","conformance-type":"import"},{"name":"ietf-keystore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-keystore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-keystore","conformance-type":"import","feature":["asymmetric-keys","inline-definitions-supported"]},{"name":"aaa_2016-12-14","revision":"2016-12-14","schema":"/rests/modules/aaa?revision=2016-12-14","namespace":"urn:opendaylight:params:xml:ns:yang:aaa","conformance-type":"import"},{"name":"aaa-cert-rpc_2015-12-15","revision":"2015-12-15","schema":"/rests/modules/aaa-cert-rpc?revision=2015-12-15","namespace":"urn:opendaylight:yang:aaa:cert:rpc","conformance-type":"import"},{"name":"system-notifications_2013-09-27","revision":"2013-09-27","schema":"/rests/modules/system-notifications?revision=2013-09-27","namespace":"urn:opendaylight:openflow:system","conformance-type":"import"},{"name":"sal-flat-batch_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/sal-flat-batch?revision=2016-03-21","namespace":"urn:opendaylight:flat-batch:service","conformance-type":"import"},{"name":"notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netconf:notification:1.0","conformance-type":"import"},{"name":"sal-remote_2014-01-14","revision":"2014-01-14","schema":"/rests/modules/sal-remote?revision=2014-01-14","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:remote","conformance-type":"import"},{"name":"yang-ext_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/yang-ext?revision=2013-07-09","namespace":"urn:opendaylight:yang:extension:yang-ext","conformance-type":"import"},{"name":"opendaylight-multipart-types_2017-01-12","revision":"2017-01-12","schema":"/rests/modules/opendaylight-multipart-types?revision=2017-01-12","namespace":"urn:opendaylight:multipart:types","conformance-type":"import"},{"name":"opendaylight-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-inventory?revision=2013-08-19","namespace":"urn:opendaylight:inventory","conformance-type":"import"},{"name":"sal-queue_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-queue?revision=2015-03-05","namespace":"urn:opendaylight:queue:service","conformance-type":"import"},{"name":"sal-groups-batch_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/sal-groups-batch?revision=2016-03-15","namespace":"urn:opendaylight:groups:service","conformance-type":"import"},{"name":"arbitrator-reconcile_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/arbitrator-reconcile?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:arbitrator-reconcile:service","conformance-type":"import"},{"name":"ietf-yang-metadata_2016-08-05","revision":"2016-08-05","schema":"/rests/modules/ietf-yang-metadata?revision=2016-08-05","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-metadata","conformance-type":"import"},{"name":"opendaylight-arbitrary-bitmask-fields_2016-01-30","revision":"2016-01-30","schema":"/rests/modules/opendaylight-arbitrary-bitmask-fields?revision=2016-01-30","namespace":"urn:opendaylight:arbitrary:bitmask:fields","conformance-type":"import"},{"name":"ietf-udp-client_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-client?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-client","conformance-type":"import","feature":["local-binding"]},{"name":"opendaylight-meter-types_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/opendaylight-meter-types?revision=2013-09-18","namespace":"urn:opendaylight:meter:types","conformance-type":"import"},{"name":"opendaylight-action-types_2013-11-12","revision":"2013-11-12","schema":"/rests/modules/opendaylight-action-types?revision=2013-11-12","namespace":"urn:opendaylight:action:types","conformance-type":"import"},{"name":"sal-role_2015-07-27","revision":"2015-07-27","schema":"/rests/modules/sal-role?revision=2015-07-27","namespace":"urn:opendaylight:role:service","conformance-type":"import"},{"name":"openflow-provider-config_2016-05-10","revision":"2016-05-10","schema":"/rests/modules/openflow-provider-config?revision=2016-05-10","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:provider:config","conformance-type":"import"},{"name":"odl-serviceutils-upgrade_2018-07-02","revision":"2018-07-02","schema":"/rests/modules/odl-serviceutils-upgrade?revision=2018-07-02","namespace":"urn:opendaylight:serviceutils:upgrade","conformance-type":"import"},{"name":"opendaylight-match-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-match-types?revision=2013-10-26","namespace":"urn:opendaylight:model:match:types","conformance-type":"import"},{"name":"ietf-restconf-server_2024-08-14","revision":"2024-08-14","schema":"/rests/modules/ietf-restconf-server?revision=2024-08-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-server","conformance-type":"import","feature":["http-listen","https-listen"]},{"name":"reconciliation-result-state_2017-07-13","revision":"2017-07-13","schema":"/rests/modules/reconciliation-result-state?revision=2017-07-13","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:rf:state","conformance-type":"import"},{"name":"onf-extensions_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/onf-extensions?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf","conformance-type":"import"},{"name":"sal-table_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/sal-table?revision=2013-10-26","namespace":"urn:opendaylight:table:service","conformance-type":"import"},{"name":"iana-http-versions_2026-02-04","revision":"2026-02-04","schema":"/rests/modules/iana-http-versions?revision=2026-02-04","namespace":"urn:ietf:params:xml:ns:yang:iana-http-versions","conformance-type":"import"},{"name":"opendaylight-direct-statistics_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/opendaylight-direct-statistics?revision=2016-05-11","namespace":"urn:opendaylight:direct:statistics","conformance-type":"import"},{"name":"opendaylight-port-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-port-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:port","conformance-type":"import"},{"name":"sal-async-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/sal-async-config?revision=2017-06-19","namespace":"urn:opendaylight:async-config:service","conformance-type":"import"},{"name":"aaa-password-service-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-password-service-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:password:service:config","conformance-type":"import"},{"name":"ietf-yang-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-yang-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-types","conformance-type":"import"},{"name":"opendaylight-queue-statistics_2013-12-16","revision":"2013-12-16","schema":"/rests/modules/opendaylight-queue-statistics?revision=2013-12-16","namespace":"urn:opendaylight:queue:statistics","conformance-type":"import"},{"name":"sal-bundle_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/sal-bundle?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf:bundle:service","conformance-type":"import"},{"name":"ietf-restconf-subscribed-notifications_2019-11-17","revision":"2019-11-17","schema":"/rests/modules/ietf-restconf-subscribed-notifications?revision=2019-11-17","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-subscribed-notifications","conformance-type":"import"},{"name":"sal-meters-batch_2016-03-16","revision":"2016-03-16","schema":"/rests/modules/sal-meters-batch?revision=2016-03-16","namespace":"urn:opendaylight:meters:service","conformance-type":"import"},{"name":"odl-entity-owners","revision":"","schema":"/rests/modules/odl-entity-owners","namespace":"urn:opendaylight:params:xml:ns:yang:controller:entity-owners","conformance-type":"import"},{"name":"sal-experimenter-mp-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-mp-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-mp-message:service","conformance-type":"import"},{"name":"packet-processing_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/packet-processing?revision=2013-07-09","namespace":"urn:opendaylight:packet:service","conformance-type":"import"},{"name":"openflow-configuration_2014-06-30","revision":"2014-06-30","schema":"/rests/modules/openflow-configuration?revision=2014-06-30","namespace":"urn:opendaylight:openflow:config","conformance-type":"import"},{"name":"odl-srm-rpcs_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-rpcs?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:rpc","conformance-type":"import"},{"name":"ietf-netconf-acm_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-netconf-acm?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-acm","conformance-type":"import"},{"name":"iana-crypt-hash_2014-08-06","revision":"2014-08-06","schema":"/rests/modules/iana-crypt-hash?revision=2014-08-06","namespace":"urn:ietf:params:xml:ns:yang:iana-crypt-hash","conformance-type":"import","feature":["crypt-hash-sha-512","crypt-hash-sha-256","crypt-hash-md5"]},{"name":"openflow-extensible-match_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-extensible-match?revision=2015-02-25","namespace":"urn:opendaylight:openflow:oxm","conformance-type":"import"}],"module-set-id":"2"}}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:45.002667" elapsed="0.004229"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:45.002323" elapsed="0.004624"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:45.002290" elapsed="0.004693"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:45.009975" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:45.007508" elapsed="0.002512"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:45.007099" elapsed="0.002955"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:45.007072" elapsed="0.003007"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:49:45.010700" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:49:45.010297" elapsed="0.000431"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:45.011055" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:45.010818" elapsed="0.000294"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:49:45.011660" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:49:45.011315" elapsed="0.000371"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:45.011135" elapsed="0.000587"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:45.010799" elapsed="0.000945"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:49:45.012328" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:49:45.011922" elapsed="0.000434"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:45.012682" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:45.012448" elapsed="0.000291"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:49:45.013244" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:49:45.012921" elapsed="0.000350"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:45.012763" elapsed="0.000544"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:45.012429" elapsed="0.000901"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:49:45.013508" elapsed="0.000381"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:49:45.014395" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:49:45.014076" elapsed="0.000345"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:49:45.014594" elapsed="0.002507"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:49:45.001217" elapsed="0.016029"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:49:45.017617" elapsed="0.000066"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:49:45.017381" elapsed="0.000374"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:45.017329" elapsed="0.000463"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:49:45.026870" level="INFO">${text_normalized} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:49:45.018526" elapsed="0.008394"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:49:45.026999" elapsed="0.000071"/>
</return>
<msg time="2026-04-08T00:49:45.027345" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:49:44.964319" elapsed="0.063151"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:49:45.027938" elapsed="0.000031"/>
</return>
<msg time="2026-04-08T00:49:45.028120" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="PASS" start="2026-04-08T00:49:44.826829" elapsed="0.201318"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Json_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:45.028563" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:45.028319" elapsed="0.000431"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:45.028300" elapsed="0.000478"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:49:45.028812" elapsed="0.000026"/>
</return>
<arg>session=${session}</arg>
<arg>folder=${RESTCONF_MODULES_DIR}</arg>
<arg>verify=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Add arguments sensible for JSON data, return Get_Templated response text.
Optionally, verification against JSON data (may be iterated) is called.
Only subset of JSON data is verified and returned if JMES path is specified in
file ${folder}/jmespath.expr.</doc>
<status status="PASS" start="2026-04-08T00:49:44.822812" elapsed="0.206125"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:44.818785" elapsed="0.210197"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:44.818760" elapsed="0.210246"/>
</if>
<kw name="Resolve_Shard_Type_Class" owner="ClusterManagement">
<if>
<branch type="IF" condition="'${shard_type}' == 'config'">
<return>
<value>DistributedConfigDatastore</value>
<status status="PASS" start="2026-04-08T00:49:45.029633" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-08T00:49:45.029526" elapsed="0.000166"/>
</branch>
<branch type="ELSE IF" condition="'${shard_type}' == 'operational'">
<return>
<value>DistributedOperationalDatastore</value>
<status status="NOT RUN" start="2026-04-08T00:49:45.029753" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:49:45.029715" elapsed="0.000077"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:45.029508" elapsed="0.000306"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized shard type: ${shard_type}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:45.029957" elapsed="0.000021"/>
</kw>
<msg time="2026-04-08T00:49:45.030075" level="INFO">${type_class} = DistributedConfigDatastore</msg>
<var>${type_class}</var>
<arg>shard_type=${shard_type}</arg>
<doc>Simple lookup for class name corresponding to desired type.</doc>
<status status="PASS" start="2026-04-08T00:49:45.029255" elapsed="0.000846"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:49:45.030651" level="INFO">${cluster_index} = 2</msg>
<var>${cluster_index}</var>
<arg>${member_index}+${NODE_ROLE_INDEX_START}-1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:49:45.030281" elapsed="0.000396"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:49:45.031305" level="INFO">${uri} = jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-inventory-config,type=DistributedConfigDatastore</msg>
<var>${uri}</var>
<arg>${JOLOKIA_READ_URI}:Category=Shards,name=member-${cluster_index}-shard-${shard_name}-${shard_type},type=${type_class}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:49:45.030829" elapsed="0.000503"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:45.036878" level="INFO">jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-inventory-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:45.036442" elapsed="0.000483"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:45.037527" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:45.037077" elapsed="0.000495"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:49:45.058046" level="INFO">GET Request : url=http://10.30.170.131:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-inventory-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-inventory-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:49:45.058263" level="INFO">GET Response : url=http://10.30.170.131:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-inventory-config,type=DistributedConfigDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Wed, 08 Apr 2026 00:49:45 GMT', 'Expires': 'Tue, 07 Apr 2026 23:49:45 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-2-shard-inventory-config,type=DistributedConfigDatastore","type":"read"},"value":{"ReadWriteTransactionCount":0,"SnapshotIndex":-1,"InMemoryJournalLogSize":0,"ReplicatedToAllIndex":-1,"Leader":"member-1-shard-inventory-config","LastIndex":-1,"RaftState":"Follower","LastCommittedTransactionTime":"1970-01-01 00:00:00.000","LastApplied":-1,"PeerAddresses":"member-1-shard-inventory-config: pekko:\/\/opendaylight-cluster-data@10.30.170.48:2550\/user\/shardmanager-config\/member-1-shard-inventory-config, member-3-shard-inventory-config: pekko:\/\/opendaylight-cluster-data@10.30.171.110:2550\/user\/shardmanager-config\/member-3-shard-inventory-config","LastLogIndex":-1,"LastLeadershipChangeTime":"2026-04-08 00:46:45.970","FollowerInitialSyncStatus":true,"FollowerInfo":[],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"738.9 μs","CurrentTerm":2,"LastTerm":-1,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-inventory-config","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":0,"TxCohortCacheSize":0,"PeerVotingStates":"member-1-shard-inventory-config: true, member-3-shard-inventory-config: true","LastLogTerm":-1,"StatRetrievalError":null,"CommitIndex":-1,"SnapshotTerm":-1,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-2-shard-inventory-config","LeadershipChangeCount":1,"InMemoryJournalDataSize":0},"timestamp":1775609385,"status":200} 
 </msg>
<msg time="2026-04-08T00:49:45.058537" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:49:45.048414" elapsed="0.010272"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:45.037640" elapsed="0.021404"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:45.059323" elapsed="0.000032"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:45.059086" elapsed="0.000704"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:45.037621" elapsed="0.022206"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:45.066250" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-2-shard-inventory-config,type=DistributedConfigDatastore","type":"read"},"value":{"ReadWriteTransactionCount":0,"SnapshotIndex":-1,"InMemoryJournalLogSize":0,"ReplicatedToAllIndex":-1,"Leader":"member-1-shard-inventory-config","LastIndex":-1,"RaftState":"Follower","LastCommittedTransactionTime":"1970-01-01 00:00:00.000","LastApplied":-1,"PeerAddresses":"member-1-shard-inventory-config: pekko:\/\/opendaylight-cluster-data@10.30.170.48:2550\/user\/shardmanager-config\/member-1-shard-inventory-config, member-3-shard-inventory-config: pekko:\/\/opendaylight-cluster-data@10.30.171.110:2550\/user\/shardmanager-config\/member-3-shard-inventory-config","LastLogIndex":-1,"LastLeadershipChangeTime":"2026-04-08 00:46:45.970","FollowerInitialSyncStatus":true,"FollowerInfo":[],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"738.9 μs","CurrentTerm":2,"LastTerm":-1,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-inventory-config","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":0,"TxCohortCacheSize":0,"PeerVotingStates":"member-1-shard-inventory-config: true, member-3-shard-inventory-config: true","LastLogTerm":-1,"StatRetrievalError":null,"CommitIndex":-1,"SnapshotTerm":-1,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-2-shard-inventory-config","LeadershipChangeCount":1,"InMemoryJournalDataSize":0},"timestamp":1775609385,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:45.062690" elapsed="0.003789"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:45.061499" elapsed="0.005050"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:45.061472" elapsed="0.005132"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:45.071310" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:45.067949" elapsed="0.003546"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:45.066722" elapsed="0.004929"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:45.066696" elapsed="0.005017"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:49:45.073355" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:49:45.072545" elapsed="0.000872"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:45.074050" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:45.073584" elapsed="0.000553"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:49:45.075020" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:49:45.074522" elapsed="0.000545"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:45.074190" elapsed="0.000927"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:45.073563" elapsed="0.001590"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:49:45.076555" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:49:45.075802" elapsed="0.000815"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:45.077322" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:45.076782" elapsed="0.000627"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:49:45.078279" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:49:45.077770" elapsed="0.000555"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:45.077446" elapsed="0.000929"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:45.076761" elapsed="0.001649"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:49:45.078632" elapsed="0.000643"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:49:45.080173" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:49:45.079652" elapsed="0.000588"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:49:45.080533" elapsed="0.002384"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:49:45.060511" elapsed="0.022567"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:49:45.083300" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:49:45.083151" elapsed="0.000194"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:45.083131" elapsed="0.000237"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:49:45.087043" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-2-shard-inventory-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 177560...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:49:45.083553" elapsed="0.003520"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:49:45.087124" elapsed="0.000045"/>
</return>
<msg time="2026-04-08T00:49:45.087300" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-2-shard-inventory-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 177560...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:49:45.032320" elapsed="0.055007"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:49:45.087420" elapsed="0.000027"/>
</return>
<msg time="2026-04-08T00:49:45.087606" level="INFO">${data_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-2-shard-inventory-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 177560...</msg>
<var>${data_text}</var>
<arg>uri=${uri}</arg>
<arg>session=${session}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-08T00:49:45.031567" elapsed="0.056067"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:49:45.088688" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-2-shard-inventory-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1775609385, 'valu...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:49:45.088213" elapsed="0.000505"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-08T00:49:45.088767" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:49:45.088940" level="INFO">${data_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-2-shard-inventory-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1775609385, 'valu...</msg>
<var>${data_object}</var>
<arg>${data_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-08T00:49:45.087856" elapsed="0.001112"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:49:45.089436" level="INFO">${value} = {'AbortTransactionsCount': 0, 'CommitIndex': -1, 'CommittedTransactionsCount': 0, 'CurrentTerm': 2, 'FailedReadTransactionsCount': 0, 'FailedTransactionsCount': 0, 'FollowerInfo': [], 'FollowerInitial...</msg>
<var>${value}</var>
<arg>${data_object}</arg>
<arg>value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:49:45.089121" elapsed="0.000343"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:49:45.089832" level="INFO">${raft_property} = Follower</msg>
<var>${raft_property}</var>
<arg>${value}</arg>
<arg>${property}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:49:45.089618" elapsed="0.000240"/>
</kw>
<return>
<value>${raft_property}</value>
<status status="PASS" start="2026-04-08T00:49:45.089904" elapsed="0.000027"/>
</return>
<msg time="2026-04-08T00:49:45.090054" level="INFO">${raft_state} = Follower</msg>
<var>${raft_state}</var>
<arg>RaftState</arg>
<arg>${shard_name}</arg>
<arg>${shard_type}</arg>
<arg>${member_index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft property.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T00:49:44.814584" elapsed="0.275495"/>
</kw>
<return>
<value>${raft_state}</value>
<status status="PASS" start="2026-04-08T00:49:45.090133" elapsed="0.000041"/>
</return>
<msg time="2026-04-08T00:49:45.090296" level="INFO">${raft_state} = Follower</msg>
<var>${raft_state}</var>
<arg>shard_name=${shard_name}</arg>
<arg>shard_type=${ds_type}</arg>
<arg>member_index=${index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft status.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T00:49:44.813569" elapsed="0.276752"/>
</kw>
<if>
<branch type="IF" condition="'Follower' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${follower_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-08T00:49:45.090615" elapsed="0.000191"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:45.090399" elapsed="0.000444"/>
</branch>
<branch type="ELSE IF" condition="'Leader' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${leader_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:45.091010" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:45.090868" elapsed="0.000195"/>
</branch>
<branch type="ELSE IF" condition="${validate}">
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized Raft state: ${raft_state}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:45.091241" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:45.091086" elapsed="0.000207"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:45.090382" elapsed="0.000932"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T00:49:44.813338" elapsed="0.278000"/>
</iter>
<iter>
<kw name="Get_Raft_State_Of_Shard_At_Member" owner="ClusterManagement">
<kw name="Get_Raft_Property_From_Shard_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:49:45.093699" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:49:45.093375" elapsed="0.000351"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:49:45.093770" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:49:45.093916" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:49:45.092999" elapsed="0.000942"/>
</kw>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Get_As_Json_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:49:45.177137" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:49:45.176654" elapsed="0.000538"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:49:45.177965" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:49:45.177701" elapsed="0.000343">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-08T00:49:45.178212" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:49:45.177363" elapsed="0.000875"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:49:45.178792" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:49:45.178403" elapsed="0.000416"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T00:49:45.179119" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-08T00:49:45.179291" level="INFO">${template} = /rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T00:49:45.178979" elapsed="0.000337"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:45.179734" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:45.179471" elapsed="0.000307"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:45.180753" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:45.180499" elapsed="0.000298"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-08T00:49:45.181246" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-08T00:49:45.180955" elapsed="0.000317"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:45.181607" elapsed="0.000022"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:45.181807" elapsed="0.000024"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:45.181979" elapsed="0.000021"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-08T00:49:45.181472" elapsed="0.000563"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-08T00:49:45.181328" elapsed="0.000739"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-08T00:49:45.182112" elapsed="0.000032"/>
</return>
<msg time="2026-04-08T00:49:45.182291" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-08T00:49:45.180170" elapsed="0.002146"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:45.179854" elapsed="0.002493"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:45.182519" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:45.182373" elapsed="0.000200"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:45.179831" elapsed="0.002762"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:49:45.183183" level="INFO">${final_text} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:49:45.182733" elapsed="0.000478"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T00:49:45.183258" 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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="PASS" start="2026-04-08T00:49:45.176031" elapsed="0.007348"/>
</kw>
<msg time="2026-04-08T00:49:45.183431" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:49:45.163707" elapsed="0.019806"/>
</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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:45.195691" elapsed="0.000042"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:45.207567" elapsed="0.000041"/>
</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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:45.219873" elapsed="0.000041"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:45.220643" elapsed="0.000036"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:45.221389" elapsed="0.000036"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:45.221950" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:45.221804" elapsed="0.000202"/>
</branch>
<status status="NOT RUN" start="2026-04-08T00:49:45.221787" elapsed="0.000242"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:45.222201" elapsed="0.000023"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:45.222388" elapsed="0.000022"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:45.222572" elapsed="0.000027"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-08T00:49:45.221733" elapsed="0.000928"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-08T00:49:45.221507" elapsed="0.001195"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:45.223403" elapsed="0.000036"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-08T00:49:45.223520" elapsed="0.000048"/>
</return>
<msg time="2026-04-08T00:49:45.223768" level="INFO">${uri} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-08T00:49:45.157763" elapsed="0.066111"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:49:45.226652" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:49:45.226405" elapsed="0.000312">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-08T00:49:45.226901" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:49:45.225953" elapsed="0.000992"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:45.227465" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:45.227073" elapsed="0.000458"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:49:45.228273" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:49:45.227916" elapsed="0.000384"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:45.227568" elapsed="0.000779"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:45.227024" elapsed="0.001361"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:49:45.231474" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:49:45.229115" elapsed="0.002404"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-08T00:49:45.231595" elapsed="0.000062"/>
</return>
<msg time="2026-04-08T00:49:45.231993" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:49:45.224854" elapsed="0.007245"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:49:45.234823" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:49:45.234583" elapsed="0.000303">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-08T00:49:45.235104" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:49:45.234137" elapsed="0.001011"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-08T00:49:45.235542" elapsed="0.000077"/>
</return>
<status status="PASS" start="2026-04-08T00:49:45.235296" elapsed="0.000390"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:45.235245" elapsed="0.000495"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:45.236455" elapsed="0.000037"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:45.237282" elapsed="0.000036"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-08T00:49:45.237390" elapsed="0.000047"/>
</return>
<msg time="2026-04-08T00:49:45.239495" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:49:45.232907" elapsed="0.006693"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:45.243373" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:45.242959" elapsed="0.000512"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:45.244728" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:45.244200" elapsed="0.000661"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:49:45.274698" level="INFO">GET Request : url=http://10.30.171.110:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 path_url=/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node09orwbuy1e81xg3wze7ww55ua0.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:49:45.275675" level="INFO">GET Response : url=http://10.30.171.110:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Transfer-Encoding': 'chunked'} 
 body={"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","hidden-symmetric-keys","encrypted-private-keys","asymmetrically-encrypted-value-format","cms-encrypted-data-format","cleartext-private-keys","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["ssh-client-keepalives","client-ident-hostbased","client-ident-publickey","client-ident-password"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-ex... (set the log level to DEBUG or TRACE to see the full content) 
 </msg>
<msg time="2026-04-08T00:49:45.276213" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:49:45.248148" elapsed="0.028129"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:45.245035" elapsed="0.031383"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:45.277076" elapsed="0.000071"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:45.276529" elapsed="0.000781"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:45.244966" elapsed="0.032426"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:45.285663" level="INFO">{"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","hidden-symmetric-keys","encrypted-private-keys","asymmetrically-encrypted-value-format","cms-encrypted-data-format","cleartext-private-keys","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["ssh-client-keepalives","client-ident-hostbased","client-ident-publickey","client-ident-password"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-experimenter-types?revision=2015-10-20","namespace":"urn:opendaylight:openflowplugin:experimenter:types","conformance-type":"import"},{"name":"ietf-ip_2018-02-22","revision":"2018-02-22","schema":"/rests/modules/ietf-ip?revision=2018-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-ip","conformance-type":"import","feature":["ipv6-privacy-autoconf","ipv4-non-contiguous-netmasks"]},{"name":"ietf-tcp-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-client","conformance-type":"import","feature":["local-binding-supported","tcp-client-keepalives"]},{"name":"node-config_2014-10-15","revision":"2014-10-15","schema":"/rests/modules/node-config?revision=2014-10-15","namespace":"urn:opendaylight:module:config","conformance-type":"import"},{"name":"ietf-restconf_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf","conformance-type":"import"},{"name":"ietf-datastores_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-datastores?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-datastores","conformance-type":"import"},{"name":"ietf-yang-patch_2017-02-22","revision":"2017-02-22","schema":"/rests/modules/ietf-yang-patch?revision=2017-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-patch","conformance-type":"import"},{"name":"sal-group_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-group?revision=2013-09-18","namespace":"urn:opendaylight:group:service","conformance-type":"import"},{"name":"odl-codegen-extensions_2024-06-27","revision":"2024-06-27","schema":"/rests/modules/odl-codegen-extensions?revision=2024-06-27","namespace":"urn:opendaylight:yang:extension:codegen","conformance-type":"import"},{"name":"sal-meter_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-meter?revision=2013-09-18","namespace":"urn:opendaylight:meter:service","conformance-type":"import"},{"name":"ietf-interfaces_2018-02-20","revision":"2018-02-20","schema":"/rests/modules/ietf-interfaces?revision=2018-02-20","namespace":"urn:ietf:params:xml:ns:yang:ietf-interfaces","conformance-type":"import","feature":["pre-provisioning","if-mib","arbitrary-names"]},{"name":"opendaylight-l2-types_2013-08-27","revision":"2013-08-27","schema":"/rests/modules/opendaylight-l2-types?revision=2013-08-27","namespace":"urn:opendaylight:l2:types","conformance-type":"import"},{"name":"opendaylight-flow-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-flow-types?revision=2013-10-26","namespace":"urn:opendaylight:flow:types","conformance-type":"import"},{"name":"lldp-speaker-config_2016-05-12","revision":"2016-05-12","schema":"/rests/modules/lldp-speaker-config?revision=2016-05-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker:config","conformance-type":"import"},{"name":"aaa-cert_2015-11-26","revision":"2015-11-26","schema":"/rests/modules/aaa-cert?revision=2015-11-26","namespace":"urn:opendaylight:yang:aaa:cert","conformance-type":"import"},{"name":"openflow-action_2015-02-03","revision":"2015-02-03","schema":"/rests/modules/openflow-action?revision=2015-02-03","namespace":"urn:opendaylight:openflow:common:action","conformance-type":"import"},{"name":"openflow-approved-extensions_2016-08-02","revision":"2016-08-02","schema":"/rests/modules/openflow-approved-extensions?revision=2016-08-02","namespace":"urn:opendaylight:openflow:approved:extensions","conformance-type":"import"},{"name":"nc-notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/nc-notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netmod:notification","conformance-type":"import"},{"name":"ietf-netconf-nmda_2019-01-07","revision":"2019-01-07","schema":"/rests/modules/ietf-netconf-nmda?revision=2019-01-07","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-nmda","conformance-type":"import","feature":["with-defaults","origin"]},{"name":"ietf-tcp-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-common","conformance-type":"import","feature":["keepalives-supported"]},{"name":"network-topology_2013-10-21","revision":"2013-10-21","schema":"/rests/modules/network-topology?revision=2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:network-topology","conformance-type":"import"},{"name":"aaa-encrypt-service-config_2024-02-02","revision":"2024-02-02","schema":"/rests/modules/aaa-encrypt-service-config?revision=2024-02-02","namespace":"config:aaa:authn:encrypt:service:config","conformance-type":"import"},{"name":"openflow-instruction_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-instruction?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:instruction","conformance-type":"import"},{"name":"ietf-tls-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-client","conformance-type":"import","feature":["client-ident-x509-cert","server-auth-x509-cert"]},{"name":"opendaylight-group-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-group-statistics?revision=2013-11-11","namespace":"urn:opendaylight:group:statistics","conformance-type":"import"},{"name":"cluster-admin_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/cluster-admin?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:cluster:admin","conformance-type":"import"},{"name":"opendaylight-flow-statistics_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-flow-statistics?revision=2013-08-19","namespace":"urn:opendaylight:flow:statistics","conformance-type":"import"},{"name":"opendaylight-table-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-table-types?revision=2013-10-26","namespace":"urn:opendaylight:table:types","conformance-type":"import"},{"name":"forwarding-rules-manager-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/forwarding-rules-manager-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:forwardingrules-manager:config","conformance-type":"import"},{"name":"odl-srm-types_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-types?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:types","conformance-type":"import"},{"name":"ietf-x509-cert-to-name_2014-12-10","revision":"2014-12-10","schema":"/rests/modules/ietf-x509-cert-to-name?revision=2014-12-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-x509-cert-to-name","conformance-type":"import"},{"name":"flow-node-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-node-inventory?revision=2013-08-19","namespace":"urn:opendaylight:flow:inventory","conformance-type":"import"},{"name":"flow-errors_2013-11-16","revision":"2013-11-16","schema":"/rests/modules/flow-errors?revision=2013-11-16","namespace":"urn:opendaylight:flow:errors","conformance-type":"import"},{"name":"ietf-netconf_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:netconf:base:1.0","conformance-type":"import","feature":["xpath","url","rollback-on-error","validate","startup","candidate","confirmed-commit","writable-running"]},{"name":"iana-ssh-public-key-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-public-key-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-public-key-algs","conformance-type":"import"},{"name":"aaa-cert-mdsal_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/aaa-cert-mdsal?revision=2016-03-21","namespace":"urn:opendaylight:yang:aaa:cert:mdsal","conformance-type":"import"},{"name":"odl-device-notification_2024-02-18","revision":"2024-02-18","schema":"/rests/modules/odl-device-notification?revision=2024-02-18","namespace":"urn:opendaylight:device:notification","conformance-type":"import"},{"name":"ietf-origin_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-origin?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-origin","conformance-type":"import"},{"name":"openflow-augments_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-augments?revision=2015-02-25","namespace":"urn:opendaylight:openflow:augments","conformance-type":"import"},{"name":"iana-ssh-encryption-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-encryption-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-encryption-algs","conformance-type":"import"},{"name":"ietf-truststore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-truststore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-truststore","conformance-type":"import","feature":["inline-definitions-supported"]},{"name":"distributed-datastore-provider_2025-01-30","revision":"2025-01-30","schema":"/rests/modules/distributed-datastore-provider?revision=2025-01-30","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:distributed-datastore-provider","conformance-type":"import"},{"name":"opendaylight-group-types_2013-10-18","revision":"2013-10-18","schema":"/rests/modules/opendaylight-group-types?revision=2013-10-18","namespace":"urn:opendaylight:group:types","conformance-type":"import"},{"name":"sal-remote-augment_2023-11-03","revision":"2023-11-03","schema":"/rests/modules/sal-remote-augment?revision=2023-11-03","namespace":"urn:sal:restconf:event:subscription","conformance-type":"import"},{"name":"opendaylight-ipv6-arbitrary-bitmask-fields_2016-02-24","revision":"2016-02-24","schema":"/rests/modules/opendaylight-ipv6-arbitrary-bitmask-fields?revision=2016-02-24","namespace":"urn:opendaylight:opendaylight-ipv6-arbitrary-bitmask-fields","conformance-type":"import"},{"name":"sal-flows-batch_2016-03-14","revision":"2016-03-14","schema":"/rests/modules/sal-flows-batch?revision=2016-03-14","namespace":"urn:opendaylight:flows:service","conformance-type":"import"},{"name":"ietf-tls-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-common","conformance-type":"import","feature":["tls12","hello-params","tls13"]},{"name":"openflow-types_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-types?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:types","conformance-type":"import"},{"name":"ietf-netconf-with-defaults_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf-with-defaults?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults","conformance-type":"import"},{"name":"odl-srm-ops_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-ops?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:ops","conformance-type":"import"},{"name":"odl-general-entity_2015-09-30","revision":"2015-09-30","schema":"/rests/modules/odl-general-entity?revision=2015-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:mdsal:core:general-entity","conformance-type":"import"},{"name":"iana-ssh-key-exchange-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-key-exchange-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-key-exchange-algs","conformance-type":"import"},{"name":"node-ssl-connection-error_2019-07-23","revision":"2019-07-23","schema":"/rests/modules/node-ssl-connection-error?revision=2019-07-23","namespace":"urn:opendaylight:node-ssl-connection-error:service","conformance-type":"import"},{"name":"openflow-protocol_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-protocol?revision=2013-07-31","namespace":"urn:opendaylight:openflow:protocol","conformance-type":"import"},{"name":"ietf-udp-server_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-server?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-server","conformance-type":"import"},{"name":"ietf-keystore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-keystore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-keystore","conformance-type":"import","feature":["asymmetric-keys","inline-definitions-supported"]},{"name":"aaa_2016-12-14","revision":"2016-12-14","schema":"/rests/modules/aaa?revision=2016-12-14","namespace":"urn:opendaylight:params:xml:ns:yang:aaa","conformance-type":"import"},{"name":"aaa-cert-rpc_2015-12-15","revision":"2015-12-15","schema":"/rests/modules/aaa-cert-rpc?revision=2015-12-15","namespace":"urn:opendaylight:yang:aaa:cert:rpc","conformance-type":"import"},{"name":"system-notifications_2013-09-27","revision":"2013-09-27","schema":"/rests/modules/system-notifications?revision=2013-09-27","namespace":"urn:opendaylight:openflow:system","conformance-type":"import"},{"name":"sal-flat-batch_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/sal-flat-batch?revision=2016-03-21","namespace":"urn:opendaylight:flat-batch:service","conformance-type":"import"},{"name":"notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netconf:notification:1.0","conformance-type":"import"},{"name":"sal-remote_2014-01-14","revision":"2014-01-14","schema":"/rests/modules/sal-remote?revision=2014-01-14","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:remote","conformance-type":"import"},{"name":"yang-ext_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/yang-ext?revision=2013-07-09","namespace":"urn:opendaylight:yang:extension:yang-ext","conformance-type":"import"},{"name":"opendaylight-multipart-types_2017-01-12","revision":"2017-01-12","schema":"/rests/modules/opendaylight-multipart-types?revision=2017-01-12","namespace":"urn:opendaylight:multipart:types","conformance-type":"import"},{"name":"opendaylight-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-inventory?revision=2013-08-19","namespace":"urn:opendaylight:inventory","conformance-type":"import"},{"name":"sal-queue_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-queue?revision=2015-03-05","namespace":"urn:opendaylight:queue:service","conformance-type":"import"},{"name":"sal-groups-batch_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/sal-groups-batch?revision=2016-03-15","namespace":"urn:opendaylight:groups:service","conformance-type":"import"},{"name":"arbitrator-reconcile_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/arbitrator-reconcile?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:arbitrator-reconcile:service","conformance-type":"import"},{"name":"ietf-yang-metadata_2016-08-05","revision":"2016-08-05","schema":"/rests/modules/ietf-yang-metadata?revision=2016-08-05","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-metadata","conformance-type":"import"},{"name":"opendaylight-arbitrary-bitmask-fields_2016-01-30","revision":"2016-01-30","schema":"/rests/modules/opendaylight-arbitrary-bitmask-fields?revision=2016-01-30","namespace":"urn:opendaylight:arbitrary:bitmask:fields","conformance-type":"import"},{"name":"ietf-udp-client_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-client?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-client","conformance-type":"import","feature":["local-binding"]},{"name":"opendaylight-meter-types_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/opendaylight-meter-types?revision=2013-09-18","namespace":"urn:opendaylight:meter:types","conformance-type":"import"},{"name":"opendaylight-action-types_2013-11-12","revision":"2013-11-12","schema":"/rests/modules/opendaylight-action-types?revision=2013-11-12","namespace":"urn:opendaylight:action:types","conformance-type":"import"},{"name":"sal-role_2015-07-27","revision":"2015-07-27","schema":"/rests/modules/sal-role?revision=2015-07-27","namespace":"urn:opendaylight:role:service","conformance-type":"import"},{"name":"openflow-provider-config_2016-05-10","revision":"2016-05-10","schema":"/rests/modules/openflow-provider-config?revision=2016-05-10","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:provider:config","conformance-type":"import"},{"name":"odl-serviceutils-upgrade_2018-07-02","revision":"2018-07-02","schema":"/rests/modules/odl-serviceutils-upgrade?revision=2018-07-02","namespace":"urn:opendaylight:serviceutils:upgrade","conformance-type":"import"},{"name":"opendaylight-match-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-match-types?revision=2013-10-26","namespace":"urn:opendaylight:model:match:types","conformance-type":"import"},{"name":"ietf-restconf-server_2024-08-14","revision":"2024-08-14","schema":"/rests/modules/ietf-restconf-server?revision=2024-08-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-server","conformance-type":"import","feature":["http-listen","https-listen"]},{"name":"reconciliation-result-state_2017-07-13","revision":"2017-07-13","schema":"/rests/modules/reconciliation-result-state?revision=2017-07-13","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:rf:state","conformance-type":"import"},{"name":"onf-extensions_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/onf-extensions?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf","conformance-type":"import"},{"name":"sal-table_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/sal-table?revision=2013-10-26","namespace":"urn:opendaylight:table:service","conformance-type":"import"},{"name":"iana-http-versions_2026-02-04","revision":"2026-02-04","schema":"/rests/modules/iana-http-versions?revision=2026-02-04","namespace":"urn:ietf:params:xml:ns:yang:iana-http-versions","conformance-type":"import"},{"name":"opendaylight-direct-statistics_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/opendaylight-direct-statistics?revision=2016-05-11","namespace":"urn:opendaylight:direct:statistics","conformance-type":"import"},{"name":"opendaylight-port-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-port-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:port","conformance-type":"import"},{"name":"sal-async-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/sal-async-config?revision=2017-06-19","namespace":"urn:opendaylight:async-config:service","conformance-type":"import"},{"name":"aaa-password-service-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-password-service-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:password:service:config","conformance-type":"import"},{"name":"ietf-yang-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-yang-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-types","conformance-type":"import"},{"name":"opendaylight-queue-statistics_2013-12-16","revision":"2013-12-16","schema":"/rests/modules/opendaylight-queue-statistics?revision=2013-12-16","namespace":"urn:opendaylight:queue:statistics","conformance-type":"import"},{"name":"sal-bundle_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/sal-bundle?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf:bundle:service","conformance-type":"import"},{"name":"ietf-restconf-subscribed-notifications_2019-11-17","revision":"2019-11-17","schema":"/rests/modules/ietf-restconf-subscribed-notifications?revision=2019-11-17","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-subscribed-notifications","conformance-type":"import"},{"name":"sal-meters-batch_2016-03-16","revision":"2016-03-16","schema":"/rests/modules/sal-meters-batch?revision=2016-03-16","namespace":"urn:opendaylight:meters:service","conformance-type":"import"},{"name":"odl-entity-owners","revision":"","schema":"/rests/modules/odl-entity-owners","namespace":"urn:opendaylight:params:xml:ns:yang:controller:entity-owners","conformance-type":"import"},{"name":"sal-experimenter-mp-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-mp-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-mp-message:service","conformance-type":"import"},{"name":"packet-processing_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/packet-processing?revision=2013-07-09","namespace":"urn:opendaylight:packet:service","conformance-type":"import"},{"name":"openflow-configuration_2014-06-30","revision":"2014-06-30","schema":"/rests/modules/openflow-configuration?revision=2014-06-30","namespace":"urn:opendaylight:openflow:config","conformance-type":"import"},{"name":"odl-srm-rpcs_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-rpcs?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:rpc","conformance-type":"import"},{"name":"ietf-netconf-acm_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-netconf-acm?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-acm","conformance-type":"import"},{"name":"iana-crypt-hash_2014-08-06","revision":"2014-08-06","schema":"/rests/modules/iana-crypt-hash?revision=2014-08-06","namespace":"urn:ietf:params:xml:ns:yang:iana-crypt-hash","conformance-type":"import","feature":["crypt-hash-sha-512","crypt-hash-sha-256","crypt-hash-md5"]},{"name":"openflow-extensible-match_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-extensible-match?revision=2015-02-25","namespace":"urn:opendaylight:openflow:oxm","conformance-type":"import"}],"module-set-id":"2"}}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:45.281335" elapsed="0.004658"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:45.280788" elapsed="0.005242"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:45.280738" elapsed="0.005317"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:45.288640" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:45.286405" elapsed="0.002281"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:45.286135" elapsed="0.002584"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:45.286117" elapsed="0.002626"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:49:45.289351" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:49:45.288935" elapsed="0.000443"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:45.289713" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:45.289470" elapsed="0.000300"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:49:45.290327" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:49:45.289967" elapsed="0.000387"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:45.289794" elapsed="0.000596"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:45.289450" elapsed="0.000962"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:49:45.290975" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:49:45.290595" elapsed="0.000408"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:45.291367" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:45.291096" elapsed="0.000330"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:49:45.291941" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:49:45.291609" elapsed="0.000358"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:45.291450" elapsed="0.000552"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:45.291077" elapsed="0.000946"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:49:45.292210" elapsed="0.000354"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:49:45.293053" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:49:45.292750" elapsed="0.000329"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:49:45.293271" elapsed="0.002304"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:49:45.279047" elapsed="0.016654"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:49:45.296085" elapsed="0.000047"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:49:45.295867" elapsed="0.000346"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:45.295807" elapsed="0.000442"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:49:45.305355" level="INFO">${text_normalized} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:49:45.296963" elapsed="0.008441"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:49:45.305481" elapsed="0.000066"/>
</return>
<msg time="2026-04-08T00:49:45.305807" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:49:45.240278" elapsed="0.065638"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:49:45.306474" elapsed="0.000034"/>
</return>
<msg time="2026-04-08T00:49:45.306674" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="PASS" start="2026-04-08T00:49:45.102300" elapsed="0.204403"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Json_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:45.307040" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:45.306789" elapsed="0.000460"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:45.306771" elapsed="0.000506"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:49:45.307313" elapsed="0.000027"/>
</return>
<arg>session=${session}</arg>
<arg>folder=${RESTCONF_MODULES_DIR}</arg>
<arg>verify=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Add arguments sensible for JSON data, return Get_Templated response text.
Optionally, verification against JSON data (may be iterated) is called.
Only subset of JSON data is verified and returned if JMES path is specified in
file ${folder}/jmespath.expr.</doc>
<status status="PASS" start="2026-04-08T00:49:45.098231" elapsed="0.209211"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:45.094009" elapsed="0.213478"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:45.093991" elapsed="0.213520"/>
</if>
<kw name="Resolve_Shard_Type_Class" owner="ClusterManagement">
<if>
<branch type="IF" condition="'${shard_type}' == 'config'">
<return>
<value>DistributedConfigDatastore</value>
<status status="PASS" start="2026-04-08T00:49:45.308170" elapsed="0.000028"/>
</return>
<status status="PASS" start="2026-04-08T00:49:45.308048" elapsed="0.000185"/>
</branch>
<branch type="ELSE IF" condition="'${shard_type}' == 'operational'">
<return>
<value>DistributedOperationalDatastore</value>
<status status="NOT RUN" start="2026-04-08T00:49:45.308292" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:49:45.308256" elapsed="0.000075"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:45.308029" elapsed="0.000324"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized shard type: ${shard_type}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:45.308499" elapsed="0.000022"/>
</kw>
<msg time="2026-04-08T00:49:45.308619" level="INFO">${type_class} = DistributedConfigDatastore</msg>
<var>${type_class}</var>
<arg>shard_type=${shard_type}</arg>
<doc>Simple lookup for class name corresponding to desired type.</doc>
<status status="PASS" start="2026-04-08T00:49:45.307742" elapsed="0.000902"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:49:45.309200" level="INFO">${cluster_index} = 3</msg>
<var>${cluster_index}</var>
<arg>${member_index}+${NODE_ROLE_INDEX_START}-1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:49:45.308812" elapsed="0.000416"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:49:45.309845" level="INFO">${uri} = jolokia/read/org.opendaylight.controller:Category=Shards,name=member-3-shard-inventory-config,type=DistributedConfigDatastore</msg>
<var>${uri}</var>
<arg>${JOLOKIA_READ_URI}:Category=Shards,name=member-${cluster_index}-shard-${shard_name}-${shard_type},type=${type_class}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:49:45.309383" elapsed="0.000488"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:45.315417" level="INFO">jolokia/read/org.opendaylight.controller:Category=Shards,name=member-3-shard-inventory-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:45.314953" elapsed="0.000511"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:45.316088" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:45.315618" elapsed="0.000514"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:49:45.336061" level="INFO">GET Request : url=http://10.30.171.110:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-3-shard-inventory-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-3-shard-inventory-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:49:45.336276" level="INFO">GET Response : url=http://10.30.171.110:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-3-shard-inventory-config,type=DistributedConfigDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Wed, 08 Apr 2026 00:49:45 GMT', 'Expires': 'Tue, 07 Apr 2026 23:49:45 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-3-shard-inventory-config,type=DistributedConfigDatastore","type":"read"},"value":{"ReadWriteTransactionCount":0,"SnapshotIndex":-1,"InMemoryJournalLogSize":0,"ReplicatedToAllIndex":-1,"Leader":"member-1-shard-inventory-config","LastIndex":-1,"RaftState":"Follower","LastApplied":-1,"LastCommittedTransactionTime":"1970-01-01 00:00:00.000","PeerAddresses":"member-1-shard-inventory-config: pekko:\/\/opendaylight-cluster-data@10.30.170.48:2550\/user\/shardmanager-config\/member-1-shard-inventory-config, member-2-shard-inventory-config: pekko:\/\/opendaylight-cluster-data@10.30.170.131:2550\/user\/shardmanager-config\/member-2-shard-inventory-config","LastLogIndex":-1,"LastLeadershipChangeTime":"2026-04-08 00:46:45.969","FollowerInitialSyncStatus":true,"FollowerInfo":[],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"643.7 μs","CurrentTerm":2,"LastTerm":-1,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-inventory-config","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":0,"TxCohortCacheSize":0,"PeerVotingStates":"member-1-shard-inventory-config: true, member-2-shard-inventory-config: true","LastLogTerm":-1,"StatRetrievalError":null,"CommitIndex":-1,"SnapshotTerm":-1,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-3-shard-inventory-config","LeadershipChangeCount":1,"InMemoryJournalDataSize":0},"timestamp":1775609385,"status":200} 
 </msg>
<msg time="2026-04-08T00:49:45.336545" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:49:45.326900" elapsed="0.009792"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:45.316218" elapsed="0.020827"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:45.337327" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:45.337088" elapsed="0.000681"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:45.316198" elapsed="0.021606"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:45.344398" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-3-shard-inventory-config,type=DistributedConfigDatastore","type":"read"},"value":{"ReadWriteTransactionCount":0,"SnapshotIndex":-1,"InMemoryJournalLogSize":0,"ReplicatedToAllIndex":-1,"Leader":"member-1-shard-inventory-config","LastIndex":-1,"RaftState":"Follower","LastApplied":-1,"LastCommittedTransactionTime":"1970-01-01 00:00:00.000","PeerAddresses":"member-1-shard-inventory-config: pekko:\/\/opendaylight-cluster-data@10.30.170.48:2550\/user\/shardmanager-config\/member-1-shard-inventory-config, member-2-shard-inventory-config: pekko:\/\/opendaylight-cluster-data@10.30.170.131:2550\/user\/shardmanager-config\/member-2-shard-inventory-config","LastLogIndex":-1,"LastLeadershipChangeTime":"2026-04-08 00:46:45.969","FollowerInitialSyncStatus":true,"FollowerInfo":[],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"643.7 μs","CurrentTerm":2,"LastTerm":-1,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-inventory-config","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":0,"TxCohortCacheSize":0,"PeerVotingStates":"member-1-shard-inventory-config: true, member-2-shard-inventory-config: true","LastLogTerm":-1,"StatRetrievalError":null,"CommitIndex":-1,"SnapshotTerm":-1,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-3-shard-inventory-config","LeadershipChangeCount":1,"InMemoryJournalDataSize":0},"timestamp":1775609385,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:45.340742" elapsed="0.003865"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:45.339518" elapsed="0.005158"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:45.339490" elapsed="0.005240"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:45.349101" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:45.346043" elapsed="0.003183"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:45.344844" elapsed="0.004431"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:45.344819" elapsed="0.004494"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:49:45.350708" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:49:45.349925" elapsed="0.000843"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:45.351439" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:45.350936" elapsed="0.000591"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:49:45.352444" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:49:45.351912" elapsed="0.000584"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:45.351564" elapsed="0.001012"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:45.350914" elapsed="0.001711"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:49:45.354017" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:49:45.353282" elapsed="0.000797"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:45.354734" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:45.354262" elapsed="0.000559"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:49:45.355709" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:49:45.355211" elapsed="0.000543"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:45.354857" elapsed="0.000947"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:45.354241" elapsed="0.001599"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:49:45.356104" elapsed="0.000784"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:49:45.357704" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:49:45.357211" elapsed="0.000553"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:49:45.358044" elapsed="0.002477"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:49:45.338498" elapsed="0.022182"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:49:45.360878" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:49:45.360752" elapsed="0.000171"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:45.360734" elapsed="0.000211"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:49:45.364533" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-3-shard-inventory-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 177560...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:49:45.361088" elapsed="0.003475"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:49:45.364613" elapsed="0.000033"/>
</return>
<msg time="2026-04-08T00:49:45.364771" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-3-shard-inventory-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 177560...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:49:45.310845" elapsed="0.053952"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:49:45.364889" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:49:45.365041" level="INFO">${data_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-3-shard-inventory-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 177560...</msg>
<var>${data_text}</var>
<arg>uri=${uri}</arg>
<arg>session=${session}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-08T00:49:45.310086" elapsed="0.054981"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:49:45.366121" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-3-shard-inventory-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1775609385, 'valu...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:49:45.365650" elapsed="0.000499"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-08T00:49:45.366216" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:49:45.366389" level="INFO">${data_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-3-shard-inventory-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1775609385, 'valu...</msg>
<var>${data_object}</var>
<arg>${data_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-08T00:49:45.365311" elapsed="0.001105"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:49:45.366777" level="INFO">${value} = {'AbortTransactionsCount': 0, 'CommitIndex': -1, 'CommittedTransactionsCount': 0, 'CurrentTerm': 2, 'FailedReadTransactionsCount': 0, 'FailedTransactionsCount': 0, 'FollowerInfo': [], 'FollowerInitial...</msg>
<var>${value}</var>
<arg>${data_object}</arg>
<arg>value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:49:45.366577" elapsed="0.000226"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:49:45.367151" level="INFO">${raft_property} = Follower</msg>
<var>${raft_property}</var>
<arg>${value}</arg>
<arg>${property}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:49:45.366955" elapsed="0.000237"/>
</kw>
<return>
<value>${raft_property}</value>
<status status="PASS" start="2026-04-08T00:49:45.367239" elapsed="0.000027"/>
</return>
<msg time="2026-04-08T00:49:45.367387" level="INFO">${raft_state} = Follower</msg>
<var>${raft_state}</var>
<arg>RaftState</arg>
<arg>${shard_name}</arg>
<arg>${shard_type}</arg>
<arg>${member_index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft property.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T00:49:45.092405" elapsed="0.275007"/>
</kw>
<return>
<value>${raft_state}</value>
<status status="PASS" start="2026-04-08T00:49:45.367468" elapsed="0.000025"/>
</return>
<msg time="2026-04-08T00:49:45.367614" level="INFO">${raft_state} = Follower</msg>
<var>${raft_state}</var>
<arg>shard_name=${shard_name}</arg>
<arg>shard_type=${ds_type}</arg>
<arg>member_index=${index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft status.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T00:49:45.091681" elapsed="0.275957"/>
</kw>
<if>
<branch type="IF" condition="'Follower' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${follower_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-08T00:49:45.367954" elapsed="0.000289"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:45.367718" elapsed="0.000566"/>
</branch>
<branch type="ELSE IF" condition="'Leader' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${leader_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:45.368453" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:45.368308" elapsed="0.000199"/>
</branch>
<branch type="ELSE IF" condition="${validate}">
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized Raft state: ${raft_state}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:45.368668" elapsed="0.000019"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:45.368529" elapsed="0.000188"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:45.367701" elapsed="0.001038"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T00:49:45.091513" elapsed="0.277250"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-08T00:49:44.535785" elapsed="0.833013"/>
</for>
<return>
<value>${leader_list}</value>
<value>${follower_list}</value>
<status status="PASS" start="2026-04-08T00:49:45.368841" elapsed="0.000026"/>
</return>
<msg time="2026-04-08T00:49:45.369038" level="INFO">${leader_list} = [1]</msg>
<msg time="2026-04-08T00:49:45.369084" level="INFO">${follower_list} = [2, 3]</msg>
<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="PASS" start="2026-04-08T00:49:44.531811" elapsed="0.837296"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T00:49:45.369560" level="INFO">Length is 1.</msg>
<msg time="2026-04-08T00:49:45.369634" level="INFO">${leader_count} = 1</msg>
<var>${leader_count}</var>
<arg>${leader_list}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T00:49:45.369294" elapsed="0.000363"/>
</kw>
<if>
<branch type="IF" condition="${leader_count} &lt; 1">
<kw name="Fail" owner="BuiltIn">
<arg>No leader found.</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:45.369935" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:45.369724" elapsed="0.000263"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:45.369707" elapsed="0.000303"/>
</if>
<kw name="Length Should Be" owner="BuiltIn">
<msg time="2026-04-08T00:49:45.372147" level="INFO">Length is 1.</msg>
<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="PASS" start="2026-04-08T00:49:45.370143" elapsed="0.002130"/>
</kw>
<kw name="Get From List" owner="Collections">
<msg time="2026-04-08T00:49:45.372668" level="INFO">${leader} = 1</msg>
<var>${leader}</var>
<arg>${leader_list}</arg>
<arg>0</arg>
<doc>Returns the value specified with an ``index`` from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:49:45.372473" elapsed="0.000220"/>
</kw>
<return>
<value>${leader}</value>
<value>${follower_list}</value>
<status status="PASS" start="2026-04-08T00:49:45.372740" elapsed="0.000028"/>
</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="PASS" start="2026-04-08T00:49:44.529302" elapsed="0.843592"/>
</kw>
<var name="${shard_name}">inventory</var>
<status status="PASS" start="2026-04-08T00:49:44.529065" elapsed="0.843875"/>
</iter>
<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-04-08T00:49:45.377330" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:49:45.376915" elapsed="0.000442"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:49:45.377826" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:49:45.377517" elapsed="0.000335"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:49:45.377898" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:49:45.378053" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:49:45.376551" elapsed="0.001528"/>
</kw>
<kw name="Sort List" owner="Collections">
<arg>${index_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="PASS" start="2026-04-08T00:49:45.378247" elapsed="0.000157"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:49:45.378896" level="INFO">${ds_type} = config</msg>
<var>${ds_type}</var>
<arg>'${shard_type}' != 'config'</arg>
<arg>operational</arg>
<arg>config</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:49:45.378563" elapsed="0.000360"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:49:45.379336" level="INFO">${leader_list} = []</msg>
<var>${leader_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:49:45.379078" elapsed="0.000284"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:49:45.379757" level="INFO">${follower_list} = []</msg>
<var>${follower_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:49:45.379520" elapsed="0.000263"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_Raft_State_Of_Shard_At_Member" owner="ClusterManagement">
<kw name="Get_Raft_Property_From_Shard_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:49:45.382348" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:49:45.381951" elapsed="0.000425"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:49:45.382424" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:49:45.382727" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:49:45.381608" elapsed="0.001157"/>
</kw>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Get_As_Json_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:49:45.465613" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:49:45.465196" elapsed="0.000450"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:49:45.466434" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:49:45.466176" elapsed="0.000336">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-08T00:49:45.466605" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:49:45.465820" elapsed="0.000810"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:49:45.467202" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:49:45.466800" elapsed="0.000431"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T00:49:45.467535" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-08T00:49:45.467697" level="INFO">${template} = /rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T00:49:45.467391" elapsed="0.000331"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:45.468204" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:45.467906" elapsed="0.000416"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:45.469356" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:45.469082" elapsed="0.000318"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-08T00:49:45.469835" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-08T00:49:45.469560" elapsed="0.000301"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:45.470219" elapsed="0.000023"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:45.470426" elapsed="0.000024"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:45.470598" elapsed="0.000021"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-08T00:49:45.470060" elapsed="0.000595"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-08T00:49:45.469916" elapsed="0.000770"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-08T00:49:45.470732" elapsed="0.000033"/>
</return>
<msg time="2026-04-08T00:49:45.470898" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-08T00:49:45.468757" elapsed="0.002166"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:45.468411" elapsed="0.002544"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:45.471132" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:45.470982" elapsed="0.000224"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:45.468384" elapsed="0.002843"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:49:45.471809" level="INFO">${final_text} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:49:45.471368" elapsed="0.000468"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T00:49:45.471883" 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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="PASS" start="2026-04-08T00:49:45.464485" elapsed="0.007521"/>
</kw>
<msg time="2026-04-08T00:49:45.472092" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:49:45.451905" elapsed="0.020317"/>
</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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:45.485756" elapsed="0.000070"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:45.499897" elapsed="0.000090"/>
</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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:45.512508" elapsed="0.000053"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:45.513380" elapsed="0.000041"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:45.514192" elapsed="0.000039"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:45.514836" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:45.514680" elapsed="0.000283"/>
</branch>
<status status="NOT RUN" start="2026-04-08T00:49:45.514661" elapsed="0.000328"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:45.515174" elapsed="0.000024"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:45.515370" elapsed="0.000021"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:45.515556" elapsed="0.000021"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-08T00:49:45.514595" elapsed="0.001037"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-08T00:49:45.514327" elapsed="0.001346"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:45.516463" elapsed="0.000038"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-08T00:49:45.516593" elapsed="0.000052"/>
</return>
<msg time="2026-04-08T00:49:45.516864" level="INFO">${uri} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-08T00:49:45.445988" elapsed="0.070990"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:49:45.520092" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:49:45.519781" elapsed="0.000433">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-08T00:49:45.520415" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:49:45.519272" elapsed="0.001191"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:45.521011" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:45.520603" elapsed="0.000476"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:49:45.521734" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:49:45.521425" elapsed="0.000336"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:45.521121" elapsed="0.000688"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:45.520547" elapsed="0.001304"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:49:45.525116" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:49:45.522644" elapsed="0.002541"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-08T00:49:45.525276" elapsed="0.000074"/>
</return>
<msg time="2026-04-08T00:49:45.525619" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:49:45.518040" elapsed="0.007686"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:49:45.528694" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:49:45.528408" elapsed="0.000362">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-08T00:49:45.528961" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:49:45.527900" elapsed="0.001109"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-08T00:49:45.529458" elapsed="0.000081"/>
</return>
<status status="PASS" start="2026-04-08T00:49:45.529194" elapsed="0.000416"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:45.529093" elapsed="0.000557"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:45.530550" elapsed="0.000037"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:45.531386" elapsed="0.000039"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-08T00:49:45.531502" elapsed="0.000207"/>
</return>
<msg time="2026-04-08T00:49:45.534074" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:49:45.526731" elapsed="0.007546"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:45.541532" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:45.540494" elapsed="0.001283"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:45.544711" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:45.543428" elapsed="0.001503"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:49:45.562992" level="INFO">GET Request : url=http://10.30.170.48:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 path_url=/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01nfu2ssrokr1es5zgka78rw970.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:49:45.563632" level="INFO">GET Response : url=http://10.30.170.48:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Transfer-Encoding': 'chunked'} 
 body={"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","hidden-symmetric-keys","encrypted-private-keys","asymmetrically-encrypted-value-format","cms-encrypted-data-format","cleartext-private-keys","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["ssh-client-keepalives","client-ident-hostbased","client-ident-publickey","client-ident-password"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-ex... (set the log level to DEBUG or TRACE to see the full content) 
 </msg>
<msg time="2026-04-08T00:49:45.563981" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:49:45.547636" elapsed="0.016384"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:45.545274" elapsed="0.018838"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:45.564631" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:45.564233" elapsed="0.000508"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:45.545118" elapsed="0.019674"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:45.571296" level="INFO">{"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","hidden-symmetric-keys","encrypted-private-keys","asymmetrically-encrypted-value-format","cms-encrypted-data-format","cleartext-private-keys","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["ssh-client-keepalives","client-ident-hostbased","client-ident-publickey","client-ident-password"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-experimenter-types?revision=2015-10-20","namespace":"urn:opendaylight:openflowplugin:experimenter:types","conformance-type":"import"},{"name":"ietf-ip_2018-02-22","revision":"2018-02-22","schema":"/rests/modules/ietf-ip?revision=2018-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-ip","conformance-type":"import","feature":["ipv6-privacy-autoconf","ipv4-non-contiguous-netmasks"]},{"name":"ietf-tcp-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-client","conformance-type":"import","feature":["local-binding-supported","tcp-client-keepalives"]},{"name":"node-config_2014-10-15","revision":"2014-10-15","schema":"/rests/modules/node-config?revision=2014-10-15","namespace":"urn:opendaylight:module:config","conformance-type":"import"},{"name":"ietf-restconf_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf","conformance-type":"import"},{"name":"ietf-datastores_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-datastores?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-datastores","conformance-type":"import"},{"name":"ietf-yang-patch_2017-02-22","revision":"2017-02-22","schema":"/rests/modules/ietf-yang-patch?revision=2017-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-patch","conformance-type":"import"},{"name":"sal-group_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-group?revision=2013-09-18","namespace":"urn:opendaylight:group:service","conformance-type":"import"},{"name":"odl-codegen-extensions_2024-06-27","revision":"2024-06-27","schema":"/rests/modules/odl-codegen-extensions?revision=2024-06-27","namespace":"urn:opendaylight:yang:extension:codegen","conformance-type":"import"},{"name":"sal-meter_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-meter?revision=2013-09-18","namespace":"urn:opendaylight:meter:service","conformance-type":"import"},{"name":"ietf-interfaces_2018-02-20","revision":"2018-02-20","schema":"/rests/modules/ietf-interfaces?revision=2018-02-20","namespace":"urn:ietf:params:xml:ns:yang:ietf-interfaces","conformance-type":"import","feature":["pre-provisioning","if-mib","arbitrary-names"]},{"name":"opendaylight-l2-types_2013-08-27","revision":"2013-08-27","schema":"/rests/modules/opendaylight-l2-types?revision=2013-08-27","namespace":"urn:opendaylight:l2:types","conformance-type":"import"},{"name":"opendaylight-flow-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-flow-types?revision=2013-10-26","namespace":"urn:opendaylight:flow:types","conformance-type":"import"},{"name":"lldp-speaker-config_2016-05-12","revision":"2016-05-12","schema":"/rests/modules/lldp-speaker-config?revision=2016-05-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker:config","conformance-type":"import"},{"name":"aaa-cert_2015-11-26","revision":"2015-11-26","schema":"/rests/modules/aaa-cert?revision=2015-11-26","namespace":"urn:opendaylight:yang:aaa:cert","conformance-type":"import"},{"name":"openflow-action_2015-02-03","revision":"2015-02-03","schema":"/rests/modules/openflow-action?revision=2015-02-03","namespace":"urn:opendaylight:openflow:common:action","conformance-type":"import"},{"name":"openflow-approved-extensions_2016-08-02","revision":"2016-08-02","schema":"/rests/modules/openflow-approved-extensions?revision=2016-08-02","namespace":"urn:opendaylight:openflow:approved:extensions","conformance-type":"import"},{"name":"nc-notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/nc-notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netmod:notification","conformance-type":"import"},{"name":"ietf-netconf-nmda_2019-01-07","revision":"2019-01-07","schema":"/rests/modules/ietf-netconf-nmda?revision=2019-01-07","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-nmda","conformance-type":"import","feature":["with-defaults","origin"]},{"name":"ietf-tcp-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-common","conformance-type":"import","feature":["keepalives-supported"]},{"name":"network-topology_2013-10-21","revision":"2013-10-21","schema":"/rests/modules/network-topology?revision=2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:network-topology","conformance-type":"import"},{"name":"aaa-encrypt-service-config_2024-02-02","revision":"2024-02-02","schema":"/rests/modules/aaa-encrypt-service-config?revision=2024-02-02","namespace":"config:aaa:authn:encrypt:service:config","conformance-type":"import"},{"name":"openflow-instruction_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-instruction?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:instruction","conformance-type":"import"},{"name":"ietf-tls-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-client","conformance-type":"import","feature":["client-ident-x509-cert","server-auth-x509-cert"]},{"name":"opendaylight-group-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-group-statistics?revision=2013-11-11","namespace":"urn:opendaylight:group:statistics","conformance-type":"import"},{"name":"cluster-admin_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/cluster-admin?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:cluster:admin","conformance-type":"import"},{"name":"opendaylight-flow-statistics_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-flow-statistics?revision=2013-08-19","namespace":"urn:opendaylight:flow:statistics","conformance-type":"import"},{"name":"opendaylight-table-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-table-types?revision=2013-10-26","namespace":"urn:opendaylight:table:types","conformance-type":"import"},{"name":"forwarding-rules-manager-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/forwarding-rules-manager-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:forwardingrules-manager:config","conformance-type":"import"},{"name":"odl-srm-types_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-types?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:types","conformance-type":"import"},{"name":"ietf-x509-cert-to-name_2014-12-10","revision":"2014-12-10","schema":"/rests/modules/ietf-x509-cert-to-name?revision=2014-12-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-x509-cert-to-name","conformance-type":"import"},{"name":"flow-node-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-node-inventory?revision=2013-08-19","namespace":"urn:opendaylight:flow:inventory","conformance-type":"import"},{"name":"flow-errors_2013-11-16","revision":"2013-11-16","schema":"/rests/modules/flow-errors?revision=2013-11-16","namespace":"urn:opendaylight:flow:errors","conformance-type":"import"},{"name":"ietf-netconf_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:netconf:base:1.0","conformance-type":"import","feature":["xpath","url","rollback-on-error","validate","startup","candidate","confirmed-commit","writable-running"]},{"name":"iana-ssh-public-key-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-public-key-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-public-key-algs","conformance-type":"import"},{"name":"aaa-cert-mdsal_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/aaa-cert-mdsal?revision=2016-03-21","namespace":"urn:opendaylight:yang:aaa:cert:mdsal","conformance-type":"import"},{"name":"odl-device-notification_2024-02-18","revision":"2024-02-18","schema":"/rests/modules/odl-device-notification?revision=2024-02-18","namespace":"urn:opendaylight:device:notification","conformance-type":"import"},{"name":"ietf-origin_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-origin?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-origin","conformance-type":"import"},{"name":"openflow-augments_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-augments?revision=2015-02-25","namespace":"urn:opendaylight:openflow:augments","conformance-type":"import"},{"name":"iana-ssh-encryption-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-encryption-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-encryption-algs","conformance-type":"import"},{"name":"ietf-truststore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-truststore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-truststore","conformance-type":"import","feature":["inline-definitions-supported"]},{"name":"distributed-datastore-provider_2025-01-30","revision":"2025-01-30","schema":"/rests/modules/distributed-datastore-provider?revision=2025-01-30","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:distributed-datastore-provider","conformance-type":"import"},{"name":"opendaylight-group-types_2013-10-18","revision":"2013-10-18","schema":"/rests/modules/opendaylight-group-types?revision=2013-10-18","namespace":"urn:opendaylight:group:types","conformance-type":"import"},{"name":"sal-remote-augment_2023-11-03","revision":"2023-11-03","schema":"/rests/modules/sal-remote-augment?revision=2023-11-03","namespace":"urn:sal:restconf:event:subscription","conformance-type":"import"},{"name":"opendaylight-ipv6-arbitrary-bitmask-fields_2016-02-24","revision":"2016-02-24","schema":"/rests/modules/opendaylight-ipv6-arbitrary-bitmask-fields?revision=2016-02-24","namespace":"urn:opendaylight:opendaylight-ipv6-arbitrary-bitmask-fields","conformance-type":"import"},{"name":"sal-flows-batch_2016-03-14","revision":"2016-03-14","schema":"/rests/modules/sal-flows-batch?revision=2016-03-14","namespace":"urn:opendaylight:flows:service","conformance-type":"import"},{"name":"ietf-tls-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-common","conformance-type":"import","feature":["tls12","hello-params","tls13"]},{"name":"openflow-types_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-types?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:types","conformance-type":"import"},{"name":"ietf-netconf-with-defaults_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf-with-defaults?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults","conformance-type":"import"},{"name":"odl-srm-ops_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-ops?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:ops","conformance-type":"import"},{"name":"odl-general-entity_2015-09-30","revision":"2015-09-30","schema":"/rests/modules/odl-general-entity?revision=2015-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:mdsal:core:general-entity","conformance-type":"import"},{"name":"iana-ssh-key-exchange-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-key-exchange-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-key-exchange-algs","conformance-type":"import"},{"name":"node-ssl-connection-error_2019-07-23","revision":"2019-07-23","schema":"/rests/modules/node-ssl-connection-error?revision=2019-07-23","namespace":"urn:opendaylight:node-ssl-connection-error:service","conformance-type":"import"},{"name":"openflow-protocol_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-protocol?revision=2013-07-31","namespace":"urn:opendaylight:openflow:protocol","conformance-type":"import"},{"name":"ietf-udp-server_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-server?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-server","conformance-type":"import"},{"name":"ietf-keystore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-keystore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-keystore","conformance-type":"import","feature":["asymmetric-keys","inline-definitions-supported"]},{"name":"aaa_2016-12-14","revision":"2016-12-14","schema":"/rests/modules/aaa?revision=2016-12-14","namespace":"urn:opendaylight:params:xml:ns:yang:aaa","conformance-type":"import"},{"name":"aaa-cert-rpc_2015-12-15","revision":"2015-12-15","schema":"/rests/modules/aaa-cert-rpc?revision=2015-12-15","namespace":"urn:opendaylight:yang:aaa:cert:rpc","conformance-type":"import"},{"name":"system-notifications_2013-09-27","revision":"2013-09-27","schema":"/rests/modules/system-notifications?revision=2013-09-27","namespace":"urn:opendaylight:openflow:system","conformance-type":"import"},{"name":"sal-flat-batch_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/sal-flat-batch?revision=2016-03-21","namespace":"urn:opendaylight:flat-batch:service","conformance-type":"import"},{"name":"notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netconf:notification:1.0","conformance-type":"import"},{"name":"sal-remote_2014-01-14","revision":"2014-01-14","schema":"/rests/modules/sal-remote?revision=2014-01-14","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:remote","conformance-type":"import"},{"name":"yang-ext_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/yang-ext?revision=2013-07-09","namespace":"urn:opendaylight:yang:extension:yang-ext","conformance-type":"import"},{"name":"opendaylight-multipart-types_2017-01-12","revision":"2017-01-12","schema":"/rests/modules/opendaylight-multipart-types?revision=2017-01-12","namespace":"urn:opendaylight:multipart:types","conformance-type":"import"},{"name":"opendaylight-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-inventory?revision=2013-08-19","namespace":"urn:opendaylight:inventory","conformance-type":"import"},{"name":"sal-queue_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-queue?revision=2015-03-05","namespace":"urn:opendaylight:queue:service","conformance-type":"import"},{"name":"sal-groups-batch_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/sal-groups-batch?revision=2016-03-15","namespace":"urn:opendaylight:groups:service","conformance-type":"import"},{"name":"arbitrator-reconcile_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/arbitrator-reconcile?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:arbitrator-reconcile:service","conformance-type":"import"},{"name":"ietf-yang-metadata_2016-08-05","revision":"2016-08-05","schema":"/rests/modules/ietf-yang-metadata?revision=2016-08-05","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-metadata","conformance-type":"import"},{"name":"opendaylight-arbitrary-bitmask-fields_2016-01-30","revision":"2016-01-30","schema":"/rests/modules/opendaylight-arbitrary-bitmask-fields?revision=2016-01-30","namespace":"urn:opendaylight:arbitrary:bitmask:fields","conformance-type":"import"},{"name":"ietf-udp-client_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-client?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-client","conformance-type":"import","feature":["local-binding"]},{"name":"opendaylight-meter-types_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/opendaylight-meter-types?revision=2013-09-18","namespace":"urn:opendaylight:meter:types","conformance-type":"import"},{"name":"opendaylight-action-types_2013-11-12","revision":"2013-11-12","schema":"/rests/modules/opendaylight-action-types?revision=2013-11-12","namespace":"urn:opendaylight:action:types","conformance-type":"import"},{"name":"sal-role_2015-07-27","revision":"2015-07-27","schema":"/rests/modules/sal-role?revision=2015-07-27","namespace":"urn:opendaylight:role:service","conformance-type":"import"},{"name":"openflow-provider-config_2016-05-10","revision":"2016-05-10","schema":"/rests/modules/openflow-provider-config?revision=2016-05-10","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:provider:config","conformance-type":"import"},{"name":"odl-serviceutils-upgrade_2018-07-02","revision":"2018-07-02","schema":"/rests/modules/odl-serviceutils-upgrade?revision=2018-07-02","namespace":"urn:opendaylight:serviceutils:upgrade","conformance-type":"import"},{"name":"opendaylight-match-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-match-types?revision=2013-10-26","namespace":"urn:opendaylight:model:match:types","conformance-type":"import"},{"name":"ietf-restconf-server_2024-08-14","revision":"2024-08-14","schema":"/rests/modules/ietf-restconf-server?revision=2024-08-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-server","conformance-type":"import","feature":["http-listen","https-listen"]},{"name":"reconciliation-result-state_2017-07-13","revision":"2017-07-13","schema":"/rests/modules/reconciliation-result-state?revision=2017-07-13","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:rf:state","conformance-type":"import"},{"name":"onf-extensions_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/onf-extensions?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf","conformance-type":"import"},{"name":"sal-table_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/sal-table?revision=2013-10-26","namespace":"urn:opendaylight:table:service","conformance-type":"import"},{"name":"iana-http-versions_2026-02-04","revision":"2026-02-04","schema":"/rests/modules/iana-http-versions?revision=2026-02-04","namespace":"urn:ietf:params:xml:ns:yang:iana-http-versions","conformance-type":"import"},{"name":"opendaylight-direct-statistics_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/opendaylight-direct-statistics?revision=2016-05-11","namespace":"urn:opendaylight:direct:statistics","conformance-type":"import"},{"name":"opendaylight-port-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-port-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:port","conformance-type":"import"},{"name":"sal-async-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/sal-async-config?revision=2017-06-19","namespace":"urn:opendaylight:async-config:service","conformance-type":"import"},{"name":"aaa-password-service-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-password-service-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:password:service:config","conformance-type":"import"},{"name":"ietf-yang-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-yang-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-types","conformance-type":"import"},{"name":"opendaylight-queue-statistics_2013-12-16","revision":"2013-12-16","schema":"/rests/modules/opendaylight-queue-statistics?revision=2013-12-16","namespace":"urn:opendaylight:queue:statistics","conformance-type":"import"},{"name":"sal-bundle_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/sal-bundle?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf:bundle:service","conformance-type":"import"},{"name":"ietf-restconf-subscribed-notifications_2019-11-17","revision":"2019-11-17","schema":"/rests/modules/ietf-restconf-subscribed-notifications?revision=2019-11-17","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-subscribed-notifications","conformance-type":"import"},{"name":"sal-meters-batch_2016-03-16","revision":"2016-03-16","schema":"/rests/modules/sal-meters-batch?revision=2016-03-16","namespace":"urn:opendaylight:meters:service","conformance-type":"import"},{"name":"odl-entity-owners","revision":"","schema":"/rests/modules/odl-entity-owners","namespace":"urn:opendaylight:params:xml:ns:yang:controller:entity-owners","conformance-type":"import"},{"name":"sal-experimenter-mp-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-mp-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-mp-message:service","conformance-type":"import"},{"name":"packet-processing_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/packet-processing?revision=2013-07-09","namespace":"urn:opendaylight:packet:service","conformance-type":"import"},{"name":"openflow-configuration_2014-06-30","revision":"2014-06-30","schema":"/rests/modules/openflow-configuration?revision=2014-06-30","namespace":"urn:opendaylight:openflow:config","conformance-type":"import"},{"name":"odl-srm-rpcs_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-rpcs?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:rpc","conformance-type":"import"},{"name":"ietf-netconf-acm_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-netconf-acm?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-acm","conformance-type":"import"},{"name":"iana-crypt-hash_2014-08-06","revision":"2014-08-06","schema":"/rests/modules/iana-crypt-hash?revision=2014-08-06","namespace":"urn:ietf:params:xml:ns:yang:iana-crypt-hash","conformance-type":"import","feature":["crypt-hash-sha-512","crypt-hash-sha-256","crypt-hash-md5"]},{"name":"openflow-extensible-match_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-extensible-match?revision=2015-02-25","namespace":"urn:opendaylight:openflow:oxm","conformance-type":"import"}],"module-set-id":"2"}}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:45.567381" elapsed="0.004394"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:45.567020" elapsed="0.004808"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:45.566988" elapsed="0.004877"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:45.575707" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:45.572361" elapsed="0.003413"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:45.571984" elapsed="0.003842"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:45.571956" elapsed="0.003906"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:49:45.576810" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:49:45.576174" elapsed="0.000676"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:45.577353" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:45.576986" elapsed="0.000426"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:49:45.577907" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:49:45.577601" elapsed="0.000332"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:45.577435" elapsed="0.000533"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:45.576957" elapsed="0.001032"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:49:45.578557" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:49:45.578192" elapsed="0.000392"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:45.578912" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:45.578677" elapsed="0.000291"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:49:45.579469" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:49:45.579150" elapsed="0.000344"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:45.578991" elapsed="0.000538"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:45.578657" elapsed="0.000893"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:49:45.579726" elapsed="0.000355"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:49:45.580605" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:49:45.580296" elapsed="0.000335"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:49:45.580814" elapsed="0.002245"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:49:45.565928" elapsed="0.017277"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:49:45.583565" elapsed="0.000048"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:49:45.583341" elapsed="0.000338"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:45.583290" elapsed="0.000425"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:49:45.593062" level="INFO">${text_normalized} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:49:45.584475" elapsed="0.008645"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:49:45.593223" elapsed="0.000079"/>
</return>
<msg time="2026-04-08T00:49:45.593581" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:49:45.535016" elapsed="0.058676"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:49:45.594268" elapsed="0.000031"/>
</return>
<msg time="2026-04-08T00:49:45.594452" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="PASS" start="2026-04-08T00:49:45.391090" elapsed="0.203389"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Json_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:45.594874" elapsed="0.000029"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:45.594572" elapsed="0.000530"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:45.594553" elapsed="0.000576"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:49:45.595179" elapsed="0.000028"/>
</return>
<arg>session=${session}</arg>
<arg>folder=${RESTCONF_MODULES_DIR}</arg>
<arg>verify=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Add arguments sensible for JSON data, return Get_Templated response text.
Optionally, verification against JSON data (may be iterated) is called.
Only subset of JSON data is verified and returned if JMES path is specified in
file ${folder}/jmespath.expr.</doc>
<status status="PASS" start="2026-04-08T00:49:45.386924" elapsed="0.208386"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:45.382860" elapsed="0.212501"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:45.382833" elapsed="0.212553"/>
</if>
<kw name="Resolve_Shard_Type_Class" owner="ClusterManagement">
<if>
<branch type="IF" condition="'${shard_type}' == 'config'">
<return>
<value>DistributedConfigDatastore</value>
<status status="PASS" start="2026-04-08T00:49:45.596038" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-08T00:49:45.595929" elapsed="0.000168"/>
</branch>
<branch type="ELSE IF" condition="'${shard_type}' == 'operational'">
<return>
<value>DistributedOperationalDatastore</value>
<status status="NOT RUN" start="2026-04-08T00:49:45.596174" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:49:45.596121" elapsed="0.000096"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:45.595911" elapsed="0.000342"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized shard type: ${shard_type}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:45.596410" elapsed="0.000022"/>
</kw>
<msg time="2026-04-08T00:49:45.596530" level="INFO">${type_class} = DistributedConfigDatastore</msg>
<var>${type_class}</var>
<arg>shard_type=${shard_type}</arg>
<doc>Simple lookup for class name corresponding to desired type.</doc>
<status status="PASS" start="2026-04-08T00:49:45.595630" elapsed="0.000925"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:49:45.597167" level="INFO">${cluster_index} = 1</msg>
<var>${cluster_index}</var>
<arg>${member_index}+${NODE_ROLE_INDEX_START}-1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:49:45.596736" elapsed="0.000460"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:49:45.597823" level="INFO">${uri} = jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-topology-config,type=DistributedConfigDatastore</msg>
<var>${uri}</var>
<arg>${JOLOKIA_READ_URI}:Category=Shards,name=member-${cluster_index}-shard-${shard_name}-${shard_type},type=${type_class}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:49:45.597353" elapsed="0.000497"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:45.603542" level="INFO">jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-topology-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:45.603063" elapsed="0.000526"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:45.604200" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:45.603744" elapsed="0.000514"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:49:45.623909" level="INFO">GET Request : url=http://10.30.170.48:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-topology-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-topology-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:49:45.624047" level="INFO">GET Response : url=http://10.30.170.48:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-topology-config,type=DistributedConfigDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Wed, 08 Apr 2026 00:49:45 GMT', 'Expires': 'Tue, 07 Apr 2026 23:49:45 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-1-shard-topology-config,type=DistributedConfigDatastore","type":"read"},"value":{"ReadWriteTransactionCount":0,"SnapshotIndex":-1,"InMemoryJournalLogSize":0,"ReplicatedToAllIndex":-1,"Leader":"member-1-shard-topology-config","LastIndex":-1,"RaftState":"Leader","LastApplied":-1,"LastCommittedTransactionTime":"1970-01-01 00:00:00.000","PeerAddresses":"member-2-shard-topology-config: pekko:\/\/opendaylight-cluster-data@10.30.170.131:2550\/user\/shardmanager-config\/member-2-shard-topology-config, member-3-shard-topology-config: pekko:\/\/opendaylight-cluster-data@10.30.171.110:2550\/user\/shardmanager-config\/member-3-shard-topology-config","LastLogIndex":-1,"LastLeadershipChangeTime":"2026-04-08 00:46:45.979","FollowerInitialSyncStatus":false,"FollowerInfo":[{"timeSinceLastActivity":"00:00:00.337","active":true,"matchIndex":-1,"voting":true,"id":"member-2-shard-topology-config","nextIndex":0},{"timeSinceLastActivity":"00:00:00.338","active":true,"matchIndex":-1,"voting":true,"id":"member-3-shard-topology-config","nextIndex":0}],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"623.0 μs","CurrentTerm":2,"LastTerm":-1,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-topology-config","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":0,"TxCohortCacheSize":0,"PeerVotingStates":"member-2-shard-topology-config: true, member-3-shard-topology-config: true","LastLogTerm":-1,"StatRetrievalError":null,"CommitIndex":-1,"SnapshotTerm":-1,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-1-shard-topology-config","LeadershipChangeCount":1,"InMemoryJournalDataSize":0},"timestamp":1775609385,"status":200} 
 </msg>
<msg time="2026-04-08T00:49:45.624263" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:49:45.615142" elapsed="0.009264"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:45.604328" elapsed="0.020335"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:45.624850" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:45.624694" elapsed="0.000489"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:45.604309" elapsed="0.020902"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:45.631757" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-1-shard-topology-config,type=DistributedConfigDatastore","type":"read"},"value":{"ReadWriteTransactionCount":0,"SnapshotIndex":-1,"InMemoryJournalLogSize":0,"ReplicatedToAllIndex":-1,"Leader":"member-1-shard-topology-config","LastIndex":-1,"RaftState":"Leader","LastApplied":-1,"LastCommittedTransactionTime":"1970-01-01 00:00:00.000","PeerAddresses":"member-2-shard-topology-config: pekko:\/\/opendaylight-cluster-data@10.30.170.131:2550\/user\/shardmanager-config\/member-2-shard-topology-config, member-3-shard-topology-config: pekko:\/\/opendaylight-cluster-data@10.30.171.110:2550\/user\/shardmanager-config\/member-3-shard-topology-config","LastLogIndex":-1,"LastLeadershipChangeTime":"2026-04-08 00:46:45.979","FollowerInitialSyncStatus":false,"FollowerInfo":[{"timeSinceLastActivity":"00:00:00.337","active":true,"matchIndex":-1,"voting":true,"id":"member-2-shard-topology-config","nextIndex":0},{"timeSinceLastActivity":"00:00:00.338","active":true,"matchIndex":-1,"voting":true,"id":"member-3-shard-topology-config","nextIndex":0}],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"623.0 μs","CurrentTerm":2,"LastTerm":-1,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-topology-config","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":0,"TxCohortCacheSize":0,"PeerVotingStates":"member-2-shard-topology-config: true, member-3-shard-topology-config: true","LastLogTerm":-1,"StatRetrievalError":null,"CommitIndex":-1,"SnapshotTerm":-1,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-1-shard-topology-config","LeadershipChangeCount":1,"InMemoryJournalDataSize":0},"timestamp":1775609385,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:45.628081" elapsed="0.003837"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:45.626874" elapsed="0.005113"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:45.626847" elapsed="0.005194"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:45.635807" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:45.633403" elapsed="0.002503"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:45.632176" elapsed="0.003779"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:45.632130" elapsed="0.003864"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:49:45.637453" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:49:45.636640" elapsed="0.000875"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:45.638151" elapsed="0.000068"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:45.637682" elapsed="0.000589"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:49:45.639212" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:49:45.638685" elapsed="0.000574"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:45.638308" elapsed="0.001003"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:45.637661" elapsed="0.001685"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:49:45.640750" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:49:45.639958" elapsed="0.000854"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:45.641463" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:45.640979" elapsed="0.000570"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:49:45.642486" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:49:45.641914" elapsed="0.000617"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:45.641586" elapsed="0.000996"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:45.640959" elapsed="0.001658"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:49:45.642864" elapsed="0.000645"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:49:45.644360" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:49:45.643818" elapsed="0.000603"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:49:45.644702" elapsed="0.002424"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:49:45.625893" elapsed="0.021408"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:49:45.647508" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:49:45.647382" elapsed="0.000171"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:45.647361" elapsed="0.000214"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:49:45.651286" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-1-shard-topology-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1775609...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:49:45.647720" elapsed="0.003596"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:49:45.651368" elapsed="0.000031"/>
</return>
<msg time="2026-04-08T00:49:45.651563" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-1-shard-topology-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1775609...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:49:45.598818" elapsed="0.052772"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:49:45.651649" elapsed="0.000027"/>
</return>
<msg time="2026-04-08T00:49:45.651798" level="INFO">${data_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-1-shard-topology-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1775609...</msg>
<var>${data_text}</var>
<arg>uri=${uri}</arg>
<arg>session=${session}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-08T00:49:45.598064" elapsed="0.053760"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:49:45.652921" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-1-shard-topology-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1775609385, 'value...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:49:45.652433" elapsed="0.000517"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-08T00:49:45.653000" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:49:45.653208" level="INFO">${data_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-1-shard-topology-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1775609385, 'value...</msg>
<var>${data_object}</var>
<arg>${data_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-08T00:49:45.652047" elapsed="0.001193"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:49:45.653608" level="INFO">${value} = {'AbortTransactionsCount': 0, 'CommitIndex': -1, 'CommittedTransactionsCount': 0, 'CurrentTerm': 2, 'FailedReadTransactionsCount': 0, 'FailedTransactionsCount': 0, 'FollowerInfo': [{'active': True, 'i...</msg>
<var>${value}</var>
<arg>${data_object}</arg>
<arg>value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:49:45.653400" elapsed="0.000235"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:49:45.653992" level="INFO">${raft_property} = Leader</msg>
<var>${raft_property}</var>
<arg>${value}</arg>
<arg>${property}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:49:45.653791" elapsed="0.000226"/>
</kw>
<return>
<value>${raft_property}</value>
<status status="PASS" start="2026-04-08T00:49:45.654065" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:49:45.654315" level="INFO">${raft_state} = Leader</msg>
<var>${raft_state}</var>
<arg>RaftState</arg>
<arg>${shard_name}</arg>
<arg>${shard_type}</arg>
<arg>${member_index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft property.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T00:49:45.380969" elapsed="0.273371"/>
</kw>
<return>
<value>${raft_state}</value>
<status status="PASS" start="2026-04-08T00:49:45.654399" elapsed="0.000026"/>
</return>
<msg time="2026-04-08T00:49:45.654559" level="INFO">${raft_state} = Leader</msg>
<var>${raft_state}</var>
<arg>shard_name=${shard_name}</arg>
<arg>shard_type=${ds_type}</arg>
<arg>member_index=${index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft status.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T00:49:45.380248" elapsed="0.274338"/>
</kw>
<if>
<branch type="IF" condition="'Follower' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${follower_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:45.654890" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:45.654669" elapsed="0.000278"/>
</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="PASS" start="2026-04-08T00:49:45.655192" elapsed="0.000193"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:45.654970" elapsed="0.000453"/>
</branch>
<branch type="ELSE IF" condition="${validate}">
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized Raft state: ${raft_state}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:45.655590" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:45.655446" elapsed="0.000195"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:45.654651" elapsed="0.001012"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T00:49:45.380064" elapsed="0.275622"/>
</iter>
<iter>
<kw name="Get_Raft_State_Of_Shard_At_Member" owner="ClusterManagement">
<kw name="Get_Raft_Property_From_Shard_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:49:45.658072" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:49:45.657746" elapsed="0.000353"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:49:45.658145" elapsed="0.000083"/>
</return>
<msg time="2026-04-08T00:49:45.658351" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:49:45.657408" elapsed="0.000969"/>
</kw>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Get_As_Json_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:49:45.741623" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:49:45.741223" elapsed="0.000434"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:49:45.742559" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:49:45.742288" elapsed="0.000354">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-08T00:49:45.742736" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:49:45.741853" elapsed="0.000907"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:49:45.743328" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:49:45.742925" elapsed="0.000430"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T00:49:45.743657" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-08T00:49:45.743814" level="INFO">${template} = /rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T00:49:45.743515" elapsed="0.000325"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:45.744259" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:45.743996" elapsed="0.000308"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:45.745366" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:45.745086" elapsed="0.000325"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-08T00:49:45.745837" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-08T00:49:45.745570" elapsed="0.000293"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:45.746213" elapsed="0.000022"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:45.746420" elapsed="0.000023"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:45.746590" elapsed="0.000021"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-08T00:49:45.746064" elapsed="0.000582"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-08T00:49:45.745920" elapsed="0.000758"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-08T00:49:45.746726" elapsed="0.000033"/>
</return>
<msg time="2026-04-08T00:49:45.746891" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-08T00:49:45.744761" elapsed="0.002155"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:45.744385" elapsed="0.002563"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:45.747117" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:45.746973" elapsed="0.000214"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:45.744360" elapsed="0.002849"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:49:45.747788" level="INFO">${final_text} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:49:45.747351" elapsed="0.000465"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T00:49:45.747863" 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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="PASS" start="2026-04-08T00:49:45.740593" elapsed="0.007390"/>
</kw>
<msg time="2026-04-08T00:49:45.748037" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:49:45.728120" elapsed="0.019996"/>
</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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:45.760211" elapsed="0.000042"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:45.772076" elapsed="0.000040"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:45.784277" elapsed="0.000041"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:45.785040" elapsed="0.000037"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:45.785791" elapsed="0.000036"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:45.786365" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:45.786212" elapsed="0.000210"/>
</branch>
<status status="NOT RUN" start="2026-04-08T00:49:45.786195" elapsed="0.000250"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:45.786600" elapsed="0.000022"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:45.786783" elapsed="0.000021"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:45.786964" elapsed="0.000021"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-08T00:49:45.786129" elapsed="0.000909"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-08T00:49:45.785909" elapsed="0.001168"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:45.787769" elapsed="0.000035"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-08T00:49:45.787886" elapsed="0.000047"/>
</return>
<msg time="2026-04-08T00:49:45.788104" level="INFO">${uri} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-08T00:49:45.722140" elapsed="0.066086"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:49:45.791081" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:49:45.790836" elapsed="0.000310">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-08T00:49:45.791348" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:49:45.790401" elapsed="0.000991"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:45.791894" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:45.791522" elapsed="0.000438"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:49:45.792589" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:49:45.792283" elapsed="0.000332"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:45.791998" elapsed="0.000663"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:45.791472" elapsed="0.001226"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:49:45.795757" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:49:45.793433" elapsed="0.002369"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-08T00:49:45.795878" elapsed="0.000062"/>
</return>
<msg time="2026-04-08T00:49:45.796202" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:49:45.789231" elapsed="0.007077"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:49:45.799073" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:49:45.798832" elapsed="0.000305">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-08T00:49:45.799341" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:49:45.798402" elapsed="0.000986"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-08T00:49:45.799764" elapsed="0.000077"/>
</return>
<status status="PASS" start="2026-04-08T00:49:45.799519" elapsed="0.000390"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:45.799469" elapsed="0.000478"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:45.800781" elapsed="0.000037"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:45.801598" elapsed="0.000037"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-08T00:49:45.801709" elapsed="0.000047"/>
</return>
<msg time="2026-04-08T00:49:45.803847" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:49:45.797122" elapsed="0.006832"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:45.807833" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:45.807441" elapsed="0.000491"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:45.809083" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:45.808702" elapsed="0.000493"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:49:45.833218" level="INFO">GET Request : url=http://10.30.170.131:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 path_url=/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0evogeryo91251obsb096nsda10.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:49:45.833650" level="INFO">GET Response : url=http://10.30.170.131:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Transfer-Encoding': 'chunked'} 
 body={"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","hidden-symmetric-keys","encrypted-private-keys","asymmetrically-encrypted-value-format","cms-encrypted-data-format","cleartext-private-keys","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["ssh-client-keepalives","client-ident-hostbased","client-ident-publickey","client-ident-password"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-ex... (set the log level to DEBUG or TRACE to see the full content) 
 </msg>
<msg time="2026-04-08T00:49:45.833860" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:49:45.811485" elapsed="0.022402"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:45.809325" elapsed="0.024619"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:45.834261" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:45.833989" elapsed="0.000348"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:45.809274" elapsed="0.025102"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:45.838728" level="INFO">{"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","hidden-symmetric-keys","encrypted-private-keys","asymmetrically-encrypted-value-format","cms-encrypted-data-format","cleartext-private-keys","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["ssh-client-keepalives","client-ident-hostbased","client-ident-publickey","client-ident-password"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-experimenter-types?revision=2015-10-20","namespace":"urn:opendaylight:openflowplugin:experimenter:types","conformance-type":"import"},{"name":"ietf-ip_2018-02-22","revision":"2018-02-22","schema":"/rests/modules/ietf-ip?revision=2018-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-ip","conformance-type":"import","feature":["ipv6-privacy-autoconf","ipv4-non-contiguous-netmasks"]},{"name":"ietf-tcp-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-client","conformance-type":"import","feature":["local-binding-supported","tcp-client-keepalives"]},{"name":"node-config_2014-10-15","revision":"2014-10-15","schema":"/rests/modules/node-config?revision=2014-10-15","namespace":"urn:opendaylight:module:config","conformance-type":"import"},{"name":"ietf-restconf_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf","conformance-type":"import"},{"name":"ietf-datastores_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-datastores?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-datastores","conformance-type":"import"},{"name":"ietf-yang-patch_2017-02-22","revision":"2017-02-22","schema":"/rests/modules/ietf-yang-patch?revision=2017-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-patch","conformance-type":"import"},{"name":"sal-group_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-group?revision=2013-09-18","namespace":"urn:opendaylight:group:service","conformance-type":"import"},{"name":"odl-codegen-extensions_2024-06-27","revision":"2024-06-27","schema":"/rests/modules/odl-codegen-extensions?revision=2024-06-27","namespace":"urn:opendaylight:yang:extension:codegen","conformance-type":"import"},{"name":"sal-meter_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-meter?revision=2013-09-18","namespace":"urn:opendaylight:meter:service","conformance-type":"import"},{"name":"ietf-interfaces_2018-02-20","revision":"2018-02-20","schema":"/rests/modules/ietf-interfaces?revision=2018-02-20","namespace":"urn:ietf:params:xml:ns:yang:ietf-interfaces","conformance-type":"import","feature":["pre-provisioning","if-mib","arbitrary-names"]},{"name":"opendaylight-l2-types_2013-08-27","revision":"2013-08-27","schema":"/rests/modules/opendaylight-l2-types?revision=2013-08-27","namespace":"urn:opendaylight:l2:types","conformance-type":"import"},{"name":"opendaylight-flow-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-flow-types?revision=2013-10-26","namespace":"urn:opendaylight:flow:types","conformance-type":"import"},{"name":"lldp-speaker-config_2016-05-12","revision":"2016-05-12","schema":"/rests/modules/lldp-speaker-config?revision=2016-05-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker:config","conformance-type":"import"},{"name":"aaa-cert_2015-11-26","revision":"2015-11-26","schema":"/rests/modules/aaa-cert?revision=2015-11-26","namespace":"urn:opendaylight:yang:aaa:cert","conformance-type":"import"},{"name":"openflow-action_2015-02-03","revision":"2015-02-03","schema":"/rests/modules/openflow-action?revision=2015-02-03","namespace":"urn:opendaylight:openflow:common:action","conformance-type":"import"},{"name":"openflow-approved-extensions_2016-08-02","revision":"2016-08-02","schema":"/rests/modules/openflow-approved-extensions?revision=2016-08-02","namespace":"urn:opendaylight:openflow:approved:extensions","conformance-type":"import"},{"name":"nc-notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/nc-notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netmod:notification","conformance-type":"import"},{"name":"ietf-netconf-nmda_2019-01-07","revision":"2019-01-07","schema":"/rests/modules/ietf-netconf-nmda?revision=2019-01-07","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-nmda","conformance-type":"import","feature":["with-defaults","origin"]},{"name":"ietf-tcp-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-common","conformance-type":"import","feature":["keepalives-supported"]},{"name":"network-topology_2013-10-21","revision":"2013-10-21","schema":"/rests/modules/network-topology?revision=2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:network-topology","conformance-type":"import"},{"name":"aaa-encrypt-service-config_2024-02-02","revision":"2024-02-02","schema":"/rests/modules/aaa-encrypt-service-config?revision=2024-02-02","namespace":"config:aaa:authn:encrypt:service:config","conformance-type":"import"},{"name":"openflow-instruction_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-instruction?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:instruction","conformance-type":"import"},{"name":"ietf-tls-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-client","conformance-type":"import","feature":["client-ident-x509-cert","server-auth-x509-cert"]},{"name":"opendaylight-group-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-group-statistics?revision=2013-11-11","namespace":"urn:opendaylight:group:statistics","conformance-type":"import"},{"name":"cluster-admin_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/cluster-admin?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:cluster:admin","conformance-type":"import"},{"name":"opendaylight-flow-statistics_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-flow-statistics?revision=2013-08-19","namespace":"urn:opendaylight:flow:statistics","conformance-type":"import"},{"name":"opendaylight-table-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-table-types?revision=2013-10-26","namespace":"urn:opendaylight:table:types","conformance-type":"import"},{"name":"forwarding-rules-manager-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/forwarding-rules-manager-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:forwardingrules-manager:config","conformance-type":"import"},{"name":"odl-srm-types_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-types?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:types","conformance-type":"import"},{"name":"ietf-x509-cert-to-name_2014-12-10","revision":"2014-12-10","schema":"/rests/modules/ietf-x509-cert-to-name?revision=2014-12-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-x509-cert-to-name","conformance-type":"import"},{"name":"flow-node-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-node-inventory?revision=2013-08-19","namespace":"urn:opendaylight:flow:inventory","conformance-type":"import"},{"name":"flow-errors_2013-11-16","revision":"2013-11-16","schema":"/rests/modules/flow-errors?revision=2013-11-16","namespace":"urn:opendaylight:flow:errors","conformance-type":"import"},{"name":"ietf-netconf_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:netconf:base:1.0","conformance-type":"import","feature":["xpath","url","rollback-on-error","validate","startup","candidate","confirmed-commit","writable-running"]},{"name":"iana-ssh-public-key-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-public-key-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-public-key-algs","conformance-type":"import"},{"name":"aaa-cert-mdsal_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/aaa-cert-mdsal?revision=2016-03-21","namespace":"urn:opendaylight:yang:aaa:cert:mdsal","conformance-type":"import"},{"name":"odl-device-notification_2024-02-18","revision":"2024-02-18","schema":"/rests/modules/odl-device-notification?revision=2024-02-18","namespace":"urn:opendaylight:device:notification","conformance-type":"import"},{"name":"ietf-origin_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-origin?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-origin","conformance-type":"import"},{"name":"openflow-augments_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-augments?revision=2015-02-25","namespace":"urn:opendaylight:openflow:augments","conformance-type":"import"},{"name":"iana-ssh-encryption-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-encryption-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-encryption-algs","conformance-type":"import"},{"name":"ietf-truststore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-truststore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-truststore","conformance-type":"import","feature":["inline-definitions-supported"]},{"name":"distributed-datastore-provider_2025-01-30","revision":"2025-01-30","schema":"/rests/modules/distributed-datastore-provider?revision=2025-01-30","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:distributed-datastore-provider","conformance-type":"import"},{"name":"opendaylight-group-types_2013-10-18","revision":"2013-10-18","schema":"/rests/modules/opendaylight-group-types?revision=2013-10-18","namespace":"urn:opendaylight:group:types","conformance-type":"import"},{"name":"sal-remote-augment_2023-11-03","revision":"2023-11-03","schema":"/rests/modules/sal-remote-augment?revision=2023-11-03","namespace":"urn:sal:restconf:event:subscription","conformance-type":"import"},{"name":"opendaylight-ipv6-arbitrary-bitmask-fields_2016-02-24","revision":"2016-02-24","schema":"/rests/modules/opendaylight-ipv6-arbitrary-bitmask-fields?revision=2016-02-24","namespace":"urn:opendaylight:opendaylight-ipv6-arbitrary-bitmask-fields","conformance-type":"import"},{"name":"sal-flows-batch_2016-03-14","revision":"2016-03-14","schema":"/rests/modules/sal-flows-batch?revision=2016-03-14","namespace":"urn:opendaylight:flows:service","conformance-type":"import"},{"name":"ietf-tls-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-common","conformance-type":"import","feature":["tls12","hello-params","tls13"]},{"name":"openflow-types_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-types?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:types","conformance-type":"import"},{"name":"ietf-netconf-with-defaults_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf-with-defaults?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults","conformance-type":"import"},{"name":"odl-srm-ops_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-ops?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:ops","conformance-type":"import"},{"name":"odl-general-entity_2015-09-30","revision":"2015-09-30","schema":"/rests/modules/odl-general-entity?revision=2015-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:mdsal:core:general-entity","conformance-type":"import"},{"name":"iana-ssh-key-exchange-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-key-exchange-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-key-exchange-algs","conformance-type":"import"},{"name":"node-ssl-connection-error_2019-07-23","revision":"2019-07-23","schema":"/rests/modules/node-ssl-connection-error?revision=2019-07-23","namespace":"urn:opendaylight:node-ssl-connection-error:service","conformance-type":"import"},{"name":"openflow-protocol_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-protocol?revision=2013-07-31","namespace":"urn:opendaylight:openflow:protocol","conformance-type":"import"},{"name":"ietf-udp-server_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-server?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-server","conformance-type":"import"},{"name":"ietf-keystore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-keystore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-keystore","conformance-type":"import","feature":["asymmetric-keys","inline-definitions-supported"]},{"name":"aaa_2016-12-14","revision":"2016-12-14","schema":"/rests/modules/aaa?revision=2016-12-14","namespace":"urn:opendaylight:params:xml:ns:yang:aaa","conformance-type":"import"},{"name":"aaa-cert-rpc_2015-12-15","revision":"2015-12-15","schema":"/rests/modules/aaa-cert-rpc?revision=2015-12-15","namespace":"urn:opendaylight:yang:aaa:cert:rpc","conformance-type":"import"},{"name":"system-notifications_2013-09-27","revision":"2013-09-27","schema":"/rests/modules/system-notifications?revision=2013-09-27","namespace":"urn:opendaylight:openflow:system","conformance-type":"import"},{"name":"sal-flat-batch_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/sal-flat-batch?revision=2016-03-21","namespace":"urn:opendaylight:flat-batch:service","conformance-type":"import"},{"name":"notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netconf:notification:1.0","conformance-type":"import"},{"name":"sal-remote_2014-01-14","revision":"2014-01-14","schema":"/rests/modules/sal-remote?revision=2014-01-14","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:remote","conformance-type":"import"},{"name":"yang-ext_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/yang-ext?revision=2013-07-09","namespace":"urn:opendaylight:yang:extension:yang-ext","conformance-type":"import"},{"name":"opendaylight-multipart-types_2017-01-12","revision":"2017-01-12","schema":"/rests/modules/opendaylight-multipart-types?revision=2017-01-12","namespace":"urn:opendaylight:multipart:types","conformance-type":"import"},{"name":"opendaylight-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-inventory?revision=2013-08-19","namespace":"urn:opendaylight:inventory","conformance-type":"import"},{"name":"sal-queue_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-queue?revision=2015-03-05","namespace":"urn:opendaylight:queue:service","conformance-type":"import"},{"name":"sal-groups-batch_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/sal-groups-batch?revision=2016-03-15","namespace":"urn:opendaylight:groups:service","conformance-type":"import"},{"name":"arbitrator-reconcile_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/arbitrator-reconcile?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:arbitrator-reconcile:service","conformance-type":"import"},{"name":"ietf-yang-metadata_2016-08-05","revision":"2016-08-05","schema":"/rests/modules/ietf-yang-metadata?revision=2016-08-05","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-metadata","conformance-type":"import"},{"name":"opendaylight-arbitrary-bitmask-fields_2016-01-30","revision":"2016-01-30","schema":"/rests/modules/opendaylight-arbitrary-bitmask-fields?revision=2016-01-30","namespace":"urn:opendaylight:arbitrary:bitmask:fields","conformance-type":"import"},{"name":"ietf-udp-client_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-client?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-client","conformance-type":"import","feature":["local-binding"]},{"name":"opendaylight-meter-types_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/opendaylight-meter-types?revision=2013-09-18","namespace":"urn:opendaylight:meter:types","conformance-type":"import"},{"name":"opendaylight-action-types_2013-11-12","revision":"2013-11-12","schema":"/rests/modules/opendaylight-action-types?revision=2013-11-12","namespace":"urn:opendaylight:action:types","conformance-type":"import"},{"name":"sal-role_2015-07-27","revision":"2015-07-27","schema":"/rests/modules/sal-role?revision=2015-07-27","namespace":"urn:opendaylight:role:service","conformance-type":"import"},{"name":"openflow-provider-config_2016-05-10","revision":"2016-05-10","schema":"/rests/modules/openflow-provider-config?revision=2016-05-10","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:provider:config","conformance-type":"import"},{"name":"odl-serviceutils-upgrade_2018-07-02","revision":"2018-07-02","schema":"/rests/modules/odl-serviceutils-upgrade?revision=2018-07-02","namespace":"urn:opendaylight:serviceutils:upgrade","conformance-type":"import"},{"name":"opendaylight-match-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-match-types?revision=2013-10-26","namespace":"urn:opendaylight:model:match:types","conformance-type":"import"},{"name":"ietf-restconf-server_2024-08-14","revision":"2024-08-14","schema":"/rests/modules/ietf-restconf-server?revision=2024-08-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-server","conformance-type":"import","feature":["http-listen","https-listen"]},{"name":"reconciliation-result-state_2017-07-13","revision":"2017-07-13","schema":"/rests/modules/reconciliation-result-state?revision=2017-07-13","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:rf:state","conformance-type":"import"},{"name":"onf-extensions_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/onf-extensions?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf","conformance-type":"import"},{"name":"sal-table_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/sal-table?revision=2013-10-26","namespace":"urn:opendaylight:table:service","conformance-type":"import"},{"name":"iana-http-versions_2026-02-04","revision":"2026-02-04","schema":"/rests/modules/iana-http-versions?revision=2026-02-04","namespace":"urn:ietf:params:xml:ns:yang:iana-http-versions","conformance-type":"import"},{"name":"opendaylight-direct-statistics_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/opendaylight-direct-statistics?revision=2016-05-11","namespace":"urn:opendaylight:direct:statistics","conformance-type":"import"},{"name":"opendaylight-port-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-port-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:port","conformance-type":"import"},{"name":"sal-async-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/sal-async-config?revision=2017-06-19","namespace":"urn:opendaylight:async-config:service","conformance-type":"import"},{"name":"aaa-password-service-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-password-service-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:password:service:config","conformance-type":"import"},{"name":"ietf-yang-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-yang-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-types","conformance-type":"import"},{"name":"opendaylight-queue-statistics_2013-12-16","revision":"2013-12-16","schema":"/rests/modules/opendaylight-queue-statistics?revision=2013-12-16","namespace":"urn:opendaylight:queue:statistics","conformance-type":"import"},{"name":"sal-bundle_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/sal-bundle?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf:bundle:service","conformance-type":"import"},{"name":"ietf-restconf-subscribed-notifications_2019-11-17","revision":"2019-11-17","schema":"/rests/modules/ietf-restconf-subscribed-notifications?revision=2019-11-17","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-subscribed-notifications","conformance-type":"import"},{"name":"sal-meters-batch_2016-03-16","revision":"2016-03-16","schema":"/rests/modules/sal-meters-batch?revision=2016-03-16","namespace":"urn:opendaylight:meters:service","conformance-type":"import"},{"name":"odl-entity-owners","revision":"","schema":"/rests/modules/odl-entity-owners","namespace":"urn:opendaylight:params:xml:ns:yang:controller:entity-owners","conformance-type":"import"},{"name":"sal-experimenter-mp-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-mp-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-mp-message:service","conformance-type":"import"},{"name":"packet-processing_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/packet-processing?revision=2013-07-09","namespace":"urn:opendaylight:packet:service","conformance-type":"import"},{"name":"openflow-configuration_2014-06-30","revision":"2014-06-30","schema":"/rests/modules/openflow-configuration?revision=2014-06-30","namespace":"urn:opendaylight:openflow:config","conformance-type":"import"},{"name":"odl-srm-rpcs_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-rpcs?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:rpc","conformance-type":"import"},{"name":"ietf-netconf-acm_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-netconf-acm?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-acm","conformance-type":"import"},{"name":"iana-crypt-hash_2014-08-06","revision":"2014-08-06","schema":"/rests/modules/iana-crypt-hash?revision=2014-08-06","namespace":"urn:ietf:params:xml:ns:yang:iana-crypt-hash","conformance-type":"import","feature":["crypt-hash-sha-512","crypt-hash-sha-256","crypt-hash-md5"]},{"name":"openflow-extensible-match_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-extensible-match?revision=2015-02-25","namespace":"urn:opendaylight:openflow:oxm","conformance-type":"import"}],"module-set-id":"2"}}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:45.836076" elapsed="0.002976"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:45.835854" elapsed="0.003234"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:45.835832" elapsed="0.003280"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:45.841614" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:45.839440" elapsed="0.002219"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:45.839217" elapsed="0.002477"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:45.839198" elapsed="0.002519"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:49:45.842326" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:49:45.841908" elapsed="0.000445"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:45.842681" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:45.842445" elapsed="0.000294"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:49:45.843299" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:49:45.842921" elapsed="0.000404"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:45.842761" elapsed="0.000603"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:45.842425" elapsed="0.000962"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:49:45.843925" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:49:45.843565" elapsed="0.000386"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:45.844290" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:45.844042" elapsed="0.000306"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:49:45.844842" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:49:45.844527" elapsed="0.000341"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:45.844371" elapsed="0.000532"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:45.844022" elapsed="0.000903"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:49:45.845095" elapsed="0.000370"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:49:45.845945" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:49:45.845649" elapsed="0.000322"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:49:45.846143" elapsed="0.002171"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:49:45.835120" elapsed="0.013316"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:49:45.848808" elapsed="0.000046"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:49:45.848564" elapsed="0.000352"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:45.848514" elapsed="0.000437"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:49:45.857962" level="INFO">${text_normalized} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:49:45.849665" elapsed="0.008346"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:49:45.858088" elapsed="0.000079"/>
</return>
<msg time="2026-04-08T00:49:45.858424" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:49:45.804763" elapsed="0.053767"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:49:45.858988" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:49:45.859251" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="PASS" start="2026-04-08T00:49:45.666762" elapsed="0.192518"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Json_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:45.859605" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:45.859366" elapsed="0.000423"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:45.859347" elapsed="0.000469"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:49:45.859850" elapsed="0.000027"/>
</return>
<arg>session=${session}</arg>
<arg>folder=${RESTCONF_MODULES_DIR}</arg>
<arg>verify=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Add arguments sensible for JSON data, return Get_Templated response text.
Optionally, verification against JSON data (may be iterated) is called.
Only subset of JSON data is verified and returned if JMES path is specified in
file ${folder}/jmespath.expr.</doc>
<status status="PASS" start="2026-04-08T00:49:45.662527" elapsed="0.197451"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:45.658444" elapsed="0.201578"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:45.658427" elapsed="0.201619"/>
</if>
<kw name="Resolve_Shard_Type_Class" owner="ClusterManagement">
<if>
<branch type="IF" condition="'${shard_type}' == 'config'">
<return>
<value>DistributedConfigDatastore</value>
<status status="PASS" start="2026-04-08T00:49:45.860681" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-08T00:49:45.860557" elapsed="0.000183"/>
</branch>
<branch type="ELSE IF" condition="'${shard_type}' == 'operational'">
<return>
<value>DistributedOperationalDatastore</value>
<status status="NOT RUN" start="2026-04-08T00:49:45.860801" elapsed="0.000012"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:49:45.860764" elapsed="0.000075"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:45.860540" elapsed="0.000321"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized shard type: ${shard_type}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:45.861005" elapsed="0.000022"/>
</kw>
<msg time="2026-04-08T00:49:45.861124" level="INFO">${type_class} = DistributedConfigDatastore</msg>
<var>${type_class}</var>
<arg>shard_type=${shard_type}</arg>
<doc>Simple lookup for class name corresponding to desired type.</doc>
<status status="PASS" start="2026-04-08T00:49:45.860290" elapsed="0.000859"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:49:45.861699" level="INFO">${cluster_index} = 2</msg>
<var>${cluster_index}</var>
<arg>${member_index}+${NODE_ROLE_INDEX_START}-1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:49:45.861333" elapsed="0.000393"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:49:45.862357" level="INFO">${uri} = jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-topology-config,type=DistributedConfigDatastore</msg>
<var>${uri}</var>
<arg>${JOLOKIA_READ_URI}:Category=Shards,name=member-${cluster_index}-shard-${shard_name}-${shard_type},type=${type_class}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:49:45.861878" elapsed="0.000506"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:45.867932" level="INFO">jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-topology-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:45.867498" elapsed="0.000480"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:45.868576" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:45.868132" elapsed="0.000488"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:49:45.887215" level="INFO">GET Request : url=http://10.30.170.131:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-topology-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-topology-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:49:45.887350" level="INFO">GET Response : url=http://10.30.170.131:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-topology-config,type=DistributedConfigDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Wed, 08 Apr 2026 00:49:45 GMT', 'Expires': 'Tue, 07 Apr 2026 23:49:45 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-2-shard-topology-config,type=DistributedConfigDatastore","type":"read"},"value":{"ReadWriteTransactionCount":0,"SnapshotIndex":-1,"InMemoryJournalLogSize":0,"ReplicatedToAllIndex":-1,"Leader":"member-1-shard-topology-config","LastIndex":-1,"RaftState":"Follower","LastCommittedTransactionTime":"1970-01-01 00:00:00.000","LastApplied":-1,"PeerAddresses":"member-1-shard-topology-config: pekko:\/\/opendaylight-cluster-data@10.30.170.48:2550\/user\/shardmanager-config\/member-1-shard-topology-config, member-3-shard-topology-config: pekko:\/\/opendaylight-cluster-data@10.30.171.110:2550\/user\/shardmanager-config\/member-3-shard-topology-config","LastLogIndex":-1,"LastLeadershipChangeTime":"2026-04-08 00:46:45.985","FollowerInitialSyncStatus":true,"FollowerInfo":[],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"481.9 μs","CurrentTerm":2,"LastTerm":-1,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-topology-config","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":0,"TxCohortCacheSize":0,"PeerVotingStates":"member-1-shard-topology-config: true, member-3-shard-topology-config: true","LastLogTerm":-1,"StatRetrievalError":null,"CommitIndex":-1,"SnapshotTerm":-1,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-2-shard-topology-config","LeadershipChangeCount":1,"InMemoryJournalDataSize":0},"timestamp":1775609385,"status":200} 
 </msg>
<msg time="2026-04-08T00:49:45.887538" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:49:45.879421" elapsed="0.008224"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:45.868706" elapsed="0.019196"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:45.888084" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:45.887932" elapsed="0.000679"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:45.868686" elapsed="0.019951"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:45.893212" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-2-shard-topology-config,type=DistributedConfigDatastore","type":"read"},"value":{"ReadWriteTransactionCount":0,"SnapshotIndex":-1,"InMemoryJournalLogSize":0,"ReplicatedToAllIndex":-1,"Leader":"member-1-shard-topology-config","LastIndex":-1,"RaftState":"Follower","LastCommittedTransactionTime":"1970-01-01 00:00:00.000","LastApplied":-1,"PeerAddresses":"member-1-shard-topology-config: pekko:\/\/opendaylight-cluster-data@10.30.170.48:2550\/user\/shardmanager-config\/member-1-shard-topology-config, member-3-shard-topology-config: pekko:\/\/opendaylight-cluster-data@10.30.171.110:2550\/user\/shardmanager-config\/member-3-shard-topology-config","LastLogIndex":-1,"LastLeadershipChangeTime":"2026-04-08 00:46:45.985","FollowerInitialSyncStatus":true,"FollowerInfo":[],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"481.9 μs","CurrentTerm":2,"LastTerm":-1,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-topology-config","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":0,"TxCohortCacheSize":0,"PeerVotingStates":"member-1-shard-topology-config: true, member-3-shard-topology-config: true","LastLogTerm":-1,"StatRetrievalError":null,"CommitIndex":-1,"SnapshotTerm":-1,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-2-shard-topology-config","LeadershipChangeCount":1,"InMemoryJournalDataSize":0},"timestamp":1775609385,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:45.890688" elapsed="0.002671"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:45.889829" elapsed="0.003580"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:45.889810" elapsed="0.003637"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:45.896790" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:45.894392" elapsed="0.002498"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:45.893531" elapsed="0.003407"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:45.893513" elapsed="0.003463"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:49:45.898354" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:49:45.897598" elapsed="0.000817"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:45.899041" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:45.898581" elapsed="0.000546"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:49:45.900012" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:49:45.899513" elapsed="0.000545"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:45.899187" elapsed="0.000921"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:45.898560" elapsed="0.001583"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:49:45.901613" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:49:45.900868" elapsed="0.000805"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:45.902308" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:45.901837" elapsed="0.000563"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:49:45.903270" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:49:45.902761" elapsed="0.000554"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:45.902437" elapsed="0.000927"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:45.901816" elapsed="0.001582"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:49:45.903616" elapsed="0.000689"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:49:45.905115" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:49:45.904608" elapsed="0.000582"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:49:45.905470" elapsed="0.002294"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:49:45.889133" elapsed="0.018787"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:49:45.908116" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:49:45.907993" elapsed="0.000303"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:45.907974" elapsed="0.000347"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:49:45.911758" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-2-shard-topology-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1775609...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:49:45.908466" elapsed="0.003321"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:49:45.911837" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:49:45.911992" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-2-shard-topology-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1775609...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:49:45.863339" elapsed="0.048680"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:49:45.912075" elapsed="0.000026"/>
</return>
<msg time="2026-04-08T00:49:45.912368" level="INFO">${data_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-2-shard-topology-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1775609...</msg>
<var>${data_text}</var>
<arg>uri=${uri}</arg>
<arg>session=${session}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-08T00:49:45.862595" elapsed="0.049800"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:49:45.913465" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-2-shard-topology-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1775609385, 'value...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:49:45.912977" elapsed="0.000517"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-08T00:49:45.913587" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:49:45.913763" level="INFO">${data_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-2-shard-topology-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1775609385, 'value...</msg>
<var>${data_object}</var>
<arg>${data_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-08T00:49:45.912612" elapsed="0.001178"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:49:45.914144" level="INFO">${value} = {'AbortTransactionsCount': 0, 'CommitIndex': -1, 'CommittedTransactionsCount': 0, 'CurrentTerm': 2, 'FailedReadTransactionsCount': 0, 'FailedTransactionsCount': 0, 'FollowerInfo': [], 'FollowerInitial...</msg>
<var>${value}</var>
<arg>${data_object}</arg>
<arg>value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:49:45.913944" elapsed="0.000244"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:49:45.914544" level="INFO">${raft_property} = Follower</msg>
<var>${raft_property}</var>
<arg>${value}</arg>
<arg>${property}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:49:45.914343" elapsed="0.000226"/>
</kw>
<return>
<value>${raft_property}</value>
<status status="PASS" start="2026-04-08T00:49:45.914615" elapsed="0.000027"/>
</return>
<msg time="2026-04-08T00:49:45.914764" level="INFO">${raft_state} = Follower</msg>
<var>${raft_state}</var>
<arg>RaftState</arg>
<arg>${shard_name}</arg>
<arg>${shard_type}</arg>
<arg>${member_index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft property.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T00:49:45.656789" elapsed="0.258000"/>
</kw>
<return>
<value>${raft_state}</value>
<status status="PASS" start="2026-04-08T00:49:45.914845" elapsed="0.000025"/>
</return>
<msg time="2026-04-08T00:49:45.914991" level="INFO">${raft_state} = Follower</msg>
<var>${raft_state}</var>
<arg>shard_name=${shard_name}</arg>
<arg>shard_type=${ds_type}</arg>
<arg>member_index=${index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft status.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T00:49:45.656024" elapsed="0.258991"/>
</kw>
<if>
<branch type="IF" condition="'Follower' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${follower_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-08T00:49:45.915326" elapsed="0.000191"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:45.915095" elapsed="0.000459"/>
</branch>
<branch type="ELSE IF" condition="'Leader' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${leader_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:45.915720" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:45.915578" elapsed="0.000196"/>
</branch>
<branch type="ELSE IF" condition="${validate}">
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized Raft state: ${raft_state}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:45.915934" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:45.915797" elapsed="0.000188"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:45.915077" elapsed="0.000930"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T00:49:45.655854" elapsed="0.260177"/>
</iter>
<iter>
<kw name="Get_Raft_State_Of_Shard_At_Member" owner="ClusterManagement">
<kw name="Get_Raft_Property_From_Shard_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:49:45.918461" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:49:45.918119" elapsed="0.000369"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:49:45.918534" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:49:45.918679" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:49:45.917783" elapsed="0.001051"/>
</kw>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Get_As_Json_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:49:46.000805" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:49:46.000425" elapsed="0.000447"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:49:46.001704" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:49:46.001450" elapsed="0.000337">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-08T00:49:46.001880" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:49:46.001044" elapsed="0.000860"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:49:46.002469" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:49:46.002069" elapsed="0.000427"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T00:49:46.002792" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-08T00:49:46.002943" level="INFO">${template} = /rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T00:49:46.002655" elapsed="0.000357"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:46.003434" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:46.003185" elapsed="0.000294"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:46.004439" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:46.004179" elapsed="0.000303"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-08T00:49:46.004935" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-08T00:49:46.004641" elapsed="0.000320"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:46.005347" elapsed="0.000023"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:46.005550" elapsed="0.000023"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:46.005722" elapsed="0.000021"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-08T00:49:46.005174" elapsed="0.000605"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-08T00:49:46.005017" elapsed="0.000792"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-08T00:49:46.005854" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:49:46.006013" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-08T00:49:46.003847" elapsed="0.002191"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:46.003552" elapsed="0.002518"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:46.006254" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:46.006094" elapsed="0.000216"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:46.003532" elapsed="0.002799"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:49:46.006897" level="INFO">${final_text} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:49:46.006470" elapsed="0.000454"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T00:49:46.006972" elapsed="0.000028"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="PASS" start="2026-04-08T00:49:45.999793" elapsed="0.007299"/>
</kw>
<msg time="2026-04-08T00:49:46.007145" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:49:45.987585" elapsed="0.019657"/>
</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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:46.019254" elapsed="0.000042"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:46.031233" elapsed="0.000040"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:46.043046" elapsed="0.000040"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:46.043804" elapsed="0.000035"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:46.044546" elapsed="0.000036"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:46.045142" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:46.044997" elapsed="0.000219"/>
</branch>
<status status="NOT RUN" start="2026-04-08T00:49:46.044981" elapsed="0.000258"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:46.045397" elapsed="0.000021"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:46.045582" elapsed="0.000021"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:46.045765" elapsed="0.000021"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-08T00:49:46.044931" elapsed="0.000908"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-08T00:49:46.044696" elapsed="0.001182"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:46.046581" elapsed="0.000036"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-08T00:49:46.046699" elapsed="0.000048"/>
</return>
<msg time="2026-04-08T00:49:46.046918" level="INFO">${uri} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-08T00:49:45.981293" elapsed="0.065731"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:49:46.049826" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:49:46.049579" elapsed="0.000311">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-08T00:49:46.050143" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:49:46.049128" elapsed="0.001083"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:46.050718" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:46.050343" elapsed="0.000441"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:49:46.051402" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:49:46.051089" elapsed="0.000339"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:46.050823" elapsed="0.000650"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:46.050293" elapsed="0.001218"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:49:46.054580" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:49:46.052328" elapsed="0.002298"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-08T00:49:46.054707" elapsed="0.000062"/>
</return>
<msg time="2026-04-08T00:49:46.055017" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:49:46.047992" elapsed="0.007130"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:49:46.057879" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:49:46.057633" elapsed="0.000309">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-08T00:49:46.058128" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:49:46.057203" elapsed="0.000983"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-08T00:49:46.058574" elapsed="0.000076"/>
</return>
<status status="PASS" start="2026-04-08T00:49:46.058329" elapsed="0.000392"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:46.058269" elapsed="0.000492"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:46.059480" elapsed="0.000036"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:46.060334" elapsed="0.000036"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-08T00:49:46.060443" elapsed="0.000046"/>
</return>
<msg time="2026-04-08T00:49:46.062584" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:49:46.055924" elapsed="0.006768"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:46.066483" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:46.066084" elapsed="0.000498"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:46.067651" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:46.067275" elapsed="0.000472"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:49:46.089288" level="INFO">GET Request : url=http://10.30.171.110:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 path_url=/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node09orwbuy1e81xg3wze7ww55ua0.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:49:46.089777" level="INFO">GET Response : url=http://10.30.171.110:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Transfer-Encoding': 'chunked'} 
 body={"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","hidden-symmetric-keys","encrypted-private-keys","asymmetrically-encrypted-value-format","cms-encrypted-data-format","cleartext-private-keys","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["ssh-client-keepalives","client-ident-hostbased","client-ident-publickey","client-ident-password"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-ex... (set the log level to DEBUG or TRACE to see the full content) 
 </msg>
<msg time="2026-04-08T00:49:46.090051" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:49:46.070128" elapsed="0.019953"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:46.067872" elapsed="0.022321"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:46.090588" elapsed="0.000028"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:46.090259" elapsed="0.000409"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:46.067820" elapsed="0.022886"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:46.095244" level="INFO">{"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","hidden-symmetric-keys","encrypted-private-keys","asymmetrically-encrypted-value-format","cms-encrypted-data-format","cleartext-private-keys","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["ssh-client-keepalives","client-ident-hostbased","client-ident-publickey","client-ident-password"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-experimenter-types?revision=2015-10-20","namespace":"urn:opendaylight:openflowplugin:experimenter:types","conformance-type":"import"},{"name":"ietf-ip_2018-02-22","revision":"2018-02-22","schema":"/rests/modules/ietf-ip?revision=2018-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-ip","conformance-type":"import","feature":["ipv6-privacy-autoconf","ipv4-non-contiguous-netmasks"]},{"name":"ietf-tcp-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-client","conformance-type":"import","feature":["local-binding-supported","tcp-client-keepalives"]},{"name":"node-config_2014-10-15","revision":"2014-10-15","schema":"/rests/modules/node-config?revision=2014-10-15","namespace":"urn:opendaylight:module:config","conformance-type":"import"},{"name":"ietf-restconf_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf","conformance-type":"import"},{"name":"ietf-datastores_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-datastores?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-datastores","conformance-type":"import"},{"name":"ietf-yang-patch_2017-02-22","revision":"2017-02-22","schema":"/rests/modules/ietf-yang-patch?revision=2017-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-patch","conformance-type":"import"},{"name":"sal-group_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-group?revision=2013-09-18","namespace":"urn:opendaylight:group:service","conformance-type":"import"},{"name":"odl-codegen-extensions_2024-06-27","revision":"2024-06-27","schema":"/rests/modules/odl-codegen-extensions?revision=2024-06-27","namespace":"urn:opendaylight:yang:extension:codegen","conformance-type":"import"},{"name":"sal-meter_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-meter?revision=2013-09-18","namespace":"urn:opendaylight:meter:service","conformance-type":"import"},{"name":"ietf-interfaces_2018-02-20","revision":"2018-02-20","schema":"/rests/modules/ietf-interfaces?revision=2018-02-20","namespace":"urn:ietf:params:xml:ns:yang:ietf-interfaces","conformance-type":"import","feature":["pre-provisioning","if-mib","arbitrary-names"]},{"name":"opendaylight-l2-types_2013-08-27","revision":"2013-08-27","schema":"/rests/modules/opendaylight-l2-types?revision=2013-08-27","namespace":"urn:opendaylight:l2:types","conformance-type":"import"},{"name":"opendaylight-flow-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-flow-types?revision=2013-10-26","namespace":"urn:opendaylight:flow:types","conformance-type":"import"},{"name":"lldp-speaker-config_2016-05-12","revision":"2016-05-12","schema":"/rests/modules/lldp-speaker-config?revision=2016-05-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker:config","conformance-type":"import"},{"name":"aaa-cert_2015-11-26","revision":"2015-11-26","schema":"/rests/modules/aaa-cert?revision=2015-11-26","namespace":"urn:opendaylight:yang:aaa:cert","conformance-type":"import"},{"name":"openflow-action_2015-02-03","revision":"2015-02-03","schema":"/rests/modules/openflow-action?revision=2015-02-03","namespace":"urn:opendaylight:openflow:common:action","conformance-type":"import"},{"name":"openflow-approved-extensions_2016-08-02","revision":"2016-08-02","schema":"/rests/modules/openflow-approved-extensions?revision=2016-08-02","namespace":"urn:opendaylight:openflow:approved:extensions","conformance-type":"import"},{"name":"nc-notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/nc-notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netmod:notification","conformance-type":"import"},{"name":"ietf-netconf-nmda_2019-01-07","revision":"2019-01-07","schema":"/rests/modules/ietf-netconf-nmda?revision=2019-01-07","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-nmda","conformance-type":"import","feature":["with-defaults","origin"]},{"name":"ietf-tcp-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-common","conformance-type":"import","feature":["keepalives-supported"]},{"name":"network-topology_2013-10-21","revision":"2013-10-21","schema":"/rests/modules/network-topology?revision=2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:network-topology","conformance-type":"import"},{"name":"aaa-encrypt-service-config_2024-02-02","revision":"2024-02-02","schema":"/rests/modules/aaa-encrypt-service-config?revision=2024-02-02","namespace":"config:aaa:authn:encrypt:service:config","conformance-type":"import"},{"name":"openflow-instruction_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-instruction?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:instruction","conformance-type":"import"},{"name":"ietf-tls-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-client","conformance-type":"import","feature":["client-ident-x509-cert","server-auth-x509-cert"]},{"name":"opendaylight-group-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-group-statistics?revision=2013-11-11","namespace":"urn:opendaylight:group:statistics","conformance-type":"import"},{"name":"cluster-admin_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/cluster-admin?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:cluster:admin","conformance-type":"import"},{"name":"opendaylight-flow-statistics_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-flow-statistics?revision=2013-08-19","namespace":"urn:opendaylight:flow:statistics","conformance-type":"import"},{"name":"opendaylight-table-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-table-types?revision=2013-10-26","namespace":"urn:opendaylight:table:types","conformance-type":"import"},{"name":"forwarding-rules-manager-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/forwarding-rules-manager-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:forwardingrules-manager:config","conformance-type":"import"},{"name":"odl-srm-types_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-types?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:types","conformance-type":"import"},{"name":"ietf-x509-cert-to-name_2014-12-10","revision":"2014-12-10","schema":"/rests/modules/ietf-x509-cert-to-name?revision=2014-12-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-x509-cert-to-name","conformance-type":"import"},{"name":"flow-node-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-node-inventory?revision=2013-08-19","namespace":"urn:opendaylight:flow:inventory","conformance-type":"import"},{"name":"flow-errors_2013-11-16","revision":"2013-11-16","schema":"/rests/modules/flow-errors?revision=2013-11-16","namespace":"urn:opendaylight:flow:errors","conformance-type":"import"},{"name":"ietf-netconf_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:netconf:base:1.0","conformance-type":"import","feature":["xpath","url","rollback-on-error","validate","startup","candidate","confirmed-commit","writable-running"]},{"name":"iana-ssh-public-key-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-public-key-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-public-key-algs","conformance-type":"import"},{"name":"aaa-cert-mdsal_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/aaa-cert-mdsal?revision=2016-03-21","namespace":"urn:opendaylight:yang:aaa:cert:mdsal","conformance-type":"import"},{"name":"odl-device-notification_2024-02-18","revision":"2024-02-18","schema":"/rests/modules/odl-device-notification?revision=2024-02-18","namespace":"urn:opendaylight:device:notification","conformance-type":"import"},{"name":"ietf-origin_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-origin?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-origin","conformance-type":"import"},{"name":"openflow-augments_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-augments?revision=2015-02-25","namespace":"urn:opendaylight:openflow:augments","conformance-type":"import"},{"name":"iana-ssh-encryption-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-encryption-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-encryption-algs","conformance-type":"import"},{"name":"ietf-truststore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-truststore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-truststore","conformance-type":"import","feature":["inline-definitions-supported"]},{"name":"distributed-datastore-provider_2025-01-30","revision":"2025-01-30","schema":"/rests/modules/distributed-datastore-provider?revision=2025-01-30","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:distributed-datastore-provider","conformance-type":"import"},{"name":"opendaylight-group-types_2013-10-18","revision":"2013-10-18","schema":"/rests/modules/opendaylight-group-types?revision=2013-10-18","namespace":"urn:opendaylight:group:types","conformance-type":"import"},{"name":"sal-remote-augment_2023-11-03","revision":"2023-11-03","schema":"/rests/modules/sal-remote-augment?revision=2023-11-03","namespace":"urn:sal:restconf:event:subscription","conformance-type":"import"},{"name":"opendaylight-ipv6-arbitrary-bitmask-fields_2016-02-24","revision":"2016-02-24","schema":"/rests/modules/opendaylight-ipv6-arbitrary-bitmask-fields?revision=2016-02-24","namespace":"urn:opendaylight:opendaylight-ipv6-arbitrary-bitmask-fields","conformance-type":"import"},{"name":"sal-flows-batch_2016-03-14","revision":"2016-03-14","schema":"/rests/modules/sal-flows-batch?revision=2016-03-14","namespace":"urn:opendaylight:flows:service","conformance-type":"import"},{"name":"ietf-tls-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-common","conformance-type":"import","feature":["tls12","hello-params","tls13"]},{"name":"openflow-types_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-types?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:types","conformance-type":"import"},{"name":"ietf-netconf-with-defaults_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf-with-defaults?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults","conformance-type":"import"},{"name":"odl-srm-ops_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-ops?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:ops","conformance-type":"import"},{"name":"odl-general-entity_2015-09-30","revision":"2015-09-30","schema":"/rests/modules/odl-general-entity?revision=2015-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:mdsal:core:general-entity","conformance-type":"import"},{"name":"iana-ssh-key-exchange-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-key-exchange-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-key-exchange-algs","conformance-type":"import"},{"name":"node-ssl-connection-error_2019-07-23","revision":"2019-07-23","schema":"/rests/modules/node-ssl-connection-error?revision=2019-07-23","namespace":"urn:opendaylight:node-ssl-connection-error:service","conformance-type":"import"},{"name":"openflow-protocol_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-protocol?revision=2013-07-31","namespace":"urn:opendaylight:openflow:protocol","conformance-type":"import"},{"name":"ietf-udp-server_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-server?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-server","conformance-type":"import"},{"name":"ietf-keystore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-keystore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-keystore","conformance-type":"import","feature":["asymmetric-keys","inline-definitions-supported"]},{"name":"aaa_2016-12-14","revision":"2016-12-14","schema":"/rests/modules/aaa?revision=2016-12-14","namespace":"urn:opendaylight:params:xml:ns:yang:aaa","conformance-type":"import"},{"name":"aaa-cert-rpc_2015-12-15","revision":"2015-12-15","schema":"/rests/modules/aaa-cert-rpc?revision=2015-12-15","namespace":"urn:opendaylight:yang:aaa:cert:rpc","conformance-type":"import"},{"name":"system-notifications_2013-09-27","revision":"2013-09-27","schema":"/rests/modules/system-notifications?revision=2013-09-27","namespace":"urn:opendaylight:openflow:system","conformance-type":"import"},{"name":"sal-flat-batch_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/sal-flat-batch?revision=2016-03-21","namespace":"urn:opendaylight:flat-batch:service","conformance-type":"import"},{"name":"notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netconf:notification:1.0","conformance-type":"import"},{"name":"sal-remote_2014-01-14","revision":"2014-01-14","schema":"/rests/modules/sal-remote?revision=2014-01-14","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:remote","conformance-type":"import"},{"name":"yang-ext_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/yang-ext?revision=2013-07-09","namespace":"urn:opendaylight:yang:extension:yang-ext","conformance-type":"import"},{"name":"opendaylight-multipart-types_2017-01-12","revision":"2017-01-12","schema":"/rests/modules/opendaylight-multipart-types?revision=2017-01-12","namespace":"urn:opendaylight:multipart:types","conformance-type":"import"},{"name":"opendaylight-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-inventory?revision=2013-08-19","namespace":"urn:opendaylight:inventory","conformance-type":"import"},{"name":"sal-queue_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-queue?revision=2015-03-05","namespace":"urn:opendaylight:queue:service","conformance-type":"import"},{"name":"sal-groups-batch_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/sal-groups-batch?revision=2016-03-15","namespace":"urn:opendaylight:groups:service","conformance-type":"import"},{"name":"arbitrator-reconcile_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/arbitrator-reconcile?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:arbitrator-reconcile:service","conformance-type":"import"},{"name":"ietf-yang-metadata_2016-08-05","revision":"2016-08-05","schema":"/rests/modules/ietf-yang-metadata?revision=2016-08-05","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-metadata","conformance-type":"import"},{"name":"opendaylight-arbitrary-bitmask-fields_2016-01-30","revision":"2016-01-30","schema":"/rests/modules/opendaylight-arbitrary-bitmask-fields?revision=2016-01-30","namespace":"urn:opendaylight:arbitrary:bitmask:fields","conformance-type":"import"},{"name":"ietf-udp-client_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-client?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-client","conformance-type":"import","feature":["local-binding"]},{"name":"opendaylight-meter-types_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/opendaylight-meter-types?revision=2013-09-18","namespace":"urn:opendaylight:meter:types","conformance-type":"import"},{"name":"opendaylight-action-types_2013-11-12","revision":"2013-11-12","schema":"/rests/modules/opendaylight-action-types?revision=2013-11-12","namespace":"urn:opendaylight:action:types","conformance-type":"import"},{"name":"sal-role_2015-07-27","revision":"2015-07-27","schema":"/rests/modules/sal-role?revision=2015-07-27","namespace":"urn:opendaylight:role:service","conformance-type":"import"},{"name":"openflow-provider-config_2016-05-10","revision":"2016-05-10","schema":"/rests/modules/openflow-provider-config?revision=2016-05-10","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:provider:config","conformance-type":"import"},{"name":"odl-serviceutils-upgrade_2018-07-02","revision":"2018-07-02","schema":"/rests/modules/odl-serviceutils-upgrade?revision=2018-07-02","namespace":"urn:opendaylight:serviceutils:upgrade","conformance-type":"import"},{"name":"opendaylight-match-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-match-types?revision=2013-10-26","namespace":"urn:opendaylight:model:match:types","conformance-type":"import"},{"name":"ietf-restconf-server_2024-08-14","revision":"2024-08-14","schema":"/rests/modules/ietf-restconf-server?revision=2024-08-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-server","conformance-type":"import","feature":["http-listen","https-listen"]},{"name":"reconciliation-result-state_2017-07-13","revision":"2017-07-13","schema":"/rests/modules/reconciliation-result-state?revision=2017-07-13","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:rf:state","conformance-type":"import"},{"name":"onf-extensions_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/onf-extensions?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf","conformance-type":"import"},{"name":"sal-table_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/sal-table?revision=2013-10-26","namespace":"urn:opendaylight:table:service","conformance-type":"import"},{"name":"iana-http-versions_2026-02-04","revision":"2026-02-04","schema":"/rests/modules/iana-http-versions?revision=2026-02-04","namespace":"urn:ietf:params:xml:ns:yang:iana-http-versions","conformance-type":"import"},{"name":"opendaylight-direct-statistics_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/opendaylight-direct-statistics?revision=2016-05-11","namespace":"urn:opendaylight:direct:statistics","conformance-type":"import"},{"name":"opendaylight-port-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-port-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:port","conformance-type":"import"},{"name":"sal-async-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/sal-async-config?revision=2017-06-19","namespace":"urn:opendaylight:async-config:service","conformance-type":"import"},{"name":"aaa-password-service-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-password-service-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:password:service:config","conformance-type":"import"},{"name":"ietf-yang-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-yang-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-types","conformance-type":"import"},{"name":"opendaylight-queue-statistics_2013-12-16","revision":"2013-12-16","schema":"/rests/modules/opendaylight-queue-statistics?revision=2013-12-16","namespace":"urn:opendaylight:queue:statistics","conformance-type":"import"},{"name":"sal-bundle_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/sal-bundle?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf:bundle:service","conformance-type":"import"},{"name":"ietf-restconf-subscribed-notifications_2019-11-17","revision":"2019-11-17","schema":"/rests/modules/ietf-restconf-subscribed-notifications?revision=2019-11-17","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-subscribed-notifications","conformance-type":"import"},{"name":"sal-meters-batch_2016-03-16","revision":"2016-03-16","schema":"/rests/modules/sal-meters-batch?revision=2016-03-16","namespace":"urn:opendaylight:meters:service","conformance-type":"import"},{"name":"odl-entity-owners","revision":"","schema":"/rests/modules/odl-entity-owners","namespace":"urn:opendaylight:params:xml:ns:yang:controller:entity-owners","conformance-type":"import"},{"name":"sal-experimenter-mp-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-mp-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-mp-message:service","conformance-type":"import"},{"name":"packet-processing_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/packet-processing?revision=2013-07-09","namespace":"urn:opendaylight:packet:service","conformance-type":"import"},{"name":"openflow-configuration_2014-06-30","revision":"2014-06-30","schema":"/rests/modules/openflow-configuration?revision=2014-06-30","namespace":"urn:opendaylight:openflow:config","conformance-type":"import"},{"name":"odl-srm-rpcs_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-rpcs?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:rpc","conformance-type":"import"},{"name":"ietf-netconf-acm_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-netconf-acm?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-acm","conformance-type":"import"},{"name":"iana-crypt-hash_2014-08-06","revision":"2014-08-06","schema":"/rests/modules/iana-crypt-hash?revision=2014-08-06","namespace":"urn:ietf:params:xml:ns:yang:iana-crypt-hash","conformance-type":"import","feature":["crypt-hash-sha-512","crypt-hash-sha-256","crypt-hash-md5"]},{"name":"openflow-extensible-match_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-extensible-match?revision=2015-02-25","namespace":"urn:opendaylight:openflow:oxm","conformance-type":"import"}],"module-set-id":"2"}}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:46.092595" elapsed="0.002997"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:46.092348" elapsed="0.003280"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:46.092324" elapsed="0.003328"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:46.098252" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:46.095953" elapsed="0.002345"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:46.095733" elapsed="0.002599"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:46.095715" elapsed="0.002641"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:49:46.098956" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:49:46.098559" elapsed="0.000423"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:46.099356" elapsed="0.000027"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:46.099074" elapsed="0.000346"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:49:46.099913" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:49:46.099605" elapsed="0.000334"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:46.099443" elapsed="0.000532"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:46.099054" elapsed="0.000942"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:49:46.100597" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:49:46.100235" elapsed="0.000388"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:46.100946" elapsed="0.000041"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:46.100714" elapsed="0.000310"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:49:46.101519" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:49:46.101220" elapsed="0.000324"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:46.101047" elapsed="0.000533"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:46.100694" elapsed="0.000907"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:49:46.101771" elapsed="0.000349"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:49:46.102719" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:49:46.102366" elapsed="0.000379"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:49:46.102923" elapsed="0.002220"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:49:46.091540" elapsed="0.013742"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:49:46.105633" elapsed="0.000048"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:49:46.105410" elapsed="0.000336"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:46.105361" elapsed="0.000421"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:49:46.116396" level="INFO">${text_normalized} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:49:46.106515" elapsed="0.009931"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:49:46.116525" elapsed="0.000073"/>
</return>
<msg time="2026-04-08T00:49:46.116863" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:49:46.063350" elapsed="0.053623"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:49:46.117468" elapsed="0.000031"/>
</return>
<msg time="2026-04-08T00:49:46.117648" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="PASS" start="2026-04-08T00:49:45.926964" elapsed="0.190710"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Json_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:46.118019" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:46.117759" elapsed="0.000473"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:46.117741" elapsed="0.000519"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:49:46.118294" elapsed="0.000027"/>
</return>
<arg>session=${session}</arg>
<arg>folder=${RESTCONF_MODULES_DIR}</arg>
<arg>verify=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Add arguments sensible for JSON data, return Get_Templated response text.
Optionally, verification against JSON data (may be iterated) is called.
Only subset of JSON data is verified and returned if JMES path is specified in
file ${folder}/jmespath.expr.</doc>
<status status="PASS" start="2026-04-08T00:49:45.922939" elapsed="0.195481"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:45.918907" elapsed="0.199557"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:45.918888" elapsed="0.199599"/>
</if>
<kw name="Resolve_Shard_Type_Class" owner="ClusterManagement">
<if>
<branch type="IF" condition="'${shard_type}' == 'config'">
<return>
<value>DistributedConfigDatastore</value>
<status status="PASS" start="2026-04-08T00:49:46.119100" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-08T00:49:46.118993" elapsed="0.000192"/>
</branch>
<branch type="ELSE IF" condition="'${shard_type}' == 'operational'">
<return>
<value>DistributedOperationalDatastore</value>
<status status="NOT RUN" start="2026-04-08T00:49:46.119249" elapsed="0.000012"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:49:46.119211" elapsed="0.000076"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:46.118975" elapsed="0.000335"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized shard type: ${shard_type}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:46.119457" elapsed="0.000021"/>
</kw>
<msg time="2026-04-08T00:49:46.119576" level="INFO">${type_class} = DistributedConfigDatastore</msg>
<var>${type_class}</var>
<arg>shard_type=${shard_type}</arg>
<doc>Simple lookup for class name corresponding to desired type.</doc>
<status status="PASS" start="2026-04-08T00:49:46.118717" elapsed="0.000883"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:49:46.120175" level="INFO">${cluster_index} = 3</msg>
<var>${cluster_index}</var>
<arg>${member_index}+${NODE_ROLE_INDEX_START}-1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:49:46.119771" elapsed="0.000432"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:49:46.120817" level="INFO">${uri} = jolokia/read/org.opendaylight.controller:Category=Shards,name=member-3-shard-topology-config,type=DistributedConfigDatastore</msg>
<var>${uri}</var>
<arg>${JOLOKIA_READ_URI}:Category=Shards,name=member-${cluster_index}-shard-${shard_name}-${shard_type},type=${type_class}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:49:46.120356" elapsed="0.000488"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:46.126372" level="INFO">jolokia/read/org.opendaylight.controller:Category=Shards,name=member-3-shard-topology-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:46.125903" elapsed="0.000516"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:46.127012" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:46.126574" elapsed="0.000482"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:49:46.146794" level="INFO">GET Request : url=http://10.30.171.110:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-3-shard-topology-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-3-shard-topology-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:49:46.146999" level="INFO">GET Response : url=http://10.30.171.110:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-3-shard-topology-config,type=DistributedConfigDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Wed, 08 Apr 2026 00:49:46 GMT', 'Expires': 'Tue, 07 Apr 2026 23:49:46 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-3-shard-topology-config,type=DistributedConfigDatastore","type":"read"},"value":{"ReadWriteTransactionCount":0,"SnapshotIndex":-1,"InMemoryJournalLogSize":0,"ReplicatedToAllIndex":-1,"Leader":"member-1-shard-topology-config","LastIndex":-1,"RaftState":"Follower","LastApplied":-1,"LastCommittedTransactionTime":"1970-01-01 00:00:00.000","PeerAddresses":"member-2-shard-topology-config: pekko:\/\/opendaylight-cluster-data@10.30.170.131:2550\/user\/shardmanager-config\/member-2-shard-topology-config, member-1-shard-topology-config: pekko:\/\/opendaylight-cluster-data@10.30.170.48:2550\/user\/shardmanager-config\/member-1-shard-topology-config","LastLogIndex":-1,"LastLeadershipChangeTime":"2026-04-08 00:46:45.985","FollowerInitialSyncStatus":true,"FollowerInfo":[],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"561.8 μs","CurrentTerm":2,"LastTerm":-1,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-topology-config","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":0,"TxCohortCacheSize":0,"PeerVotingStates":"member-2-shard-topology-config: true, member-1-shard-topology-config: true","LastLogTerm":-1,"StatRetrievalError":null,"CommitIndex":-1,"SnapshotTerm":-1,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-3-shard-topology-config","LeadershipChangeCount":1,"InMemoryJournalDataSize":0},"timestamp":1775609386,"status":200} 
 </msg>
<msg time="2026-04-08T00:49:46.147510" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:49:46.137998" elapsed="0.009662"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:46.127125" elapsed="0.020899"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:46.148342" elapsed="0.000038"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:46.148071" elapsed="0.000717"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:46.127107" elapsed="0.021716"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:46.154965" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-3-shard-topology-config,type=DistributedConfigDatastore","type":"read"},"value":{"ReadWriteTransactionCount":0,"SnapshotIndex":-1,"InMemoryJournalLogSize":0,"ReplicatedToAllIndex":-1,"Leader":"member-1-shard-topology-config","LastIndex":-1,"RaftState":"Follower","LastApplied":-1,"LastCommittedTransactionTime":"1970-01-01 00:00:00.000","PeerAddresses":"member-2-shard-topology-config: pekko:\/\/opendaylight-cluster-data@10.30.170.131:2550\/user\/shardmanager-config\/member-2-shard-topology-config, member-1-shard-topology-config: pekko:\/\/opendaylight-cluster-data@10.30.170.48:2550\/user\/shardmanager-config\/member-1-shard-topology-config","LastLogIndex":-1,"LastLeadershipChangeTime":"2026-04-08 00:46:45.985","FollowerInitialSyncStatus":true,"FollowerInfo":[],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"561.8 μs","CurrentTerm":2,"LastTerm":-1,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-topology-config","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":0,"TxCohortCacheSize":0,"PeerVotingStates":"member-2-shard-topology-config: true, member-1-shard-topology-config: true","LastLogTerm":-1,"StatRetrievalError":null,"CommitIndex":-1,"SnapshotTerm":-1,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-3-shard-topology-config","LeadershipChangeCount":1,"InMemoryJournalDataSize":0},"timestamp":1775609386,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:46.151898" elapsed="0.003229"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:46.150689" elapsed="0.004521"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:46.150661" elapsed="0.004589"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:46.158484" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:46.156188" elapsed="0.002394"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:46.155333" elapsed="0.003298"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:46.155314" elapsed="0.003355"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:49:46.160220" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:49:46.159435" elapsed="0.000847"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:46.161083" elapsed="0.000038"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:46.160537" elapsed="0.000650"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:49:46.162131" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:49:46.161571" elapsed="0.000624"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:46.161227" elapsed="0.001021"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:46.160515" elapsed="0.001768"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:49:46.163773" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:49:46.162934" elapsed="0.000899"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:46.164505" elapsed="0.000035"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:46.164000" elapsed="0.000592"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:49:46.165491" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:49:46.164956" elapsed="0.000581"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:46.164629" elapsed="0.000958"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:46.163978" elapsed="0.001646"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:49:46.165851" elapsed="0.000640"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:49:46.167374" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:49:46.166796" elapsed="0.000638"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:49:46.167714" elapsed="0.002389"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:49:46.149676" elapsed="0.020609"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:49:46.170493" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:49:46.170360" elapsed="0.000182"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:46.170341" elapsed="0.000224"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:49:46.174310" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-3-shard-topology-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1775609...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:49:46.170710" elapsed="0.003631"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:49:46.174396" elapsed="0.000041"/>
</return>
<msg time="2026-04-08T00:49:46.174574" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-3-shard-topology-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1775609...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:49:46.121829" elapsed="0.052773"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:49:46.174661" elapsed="0.000026"/>
</return>
<msg time="2026-04-08T00:49:46.174812" level="INFO">${data_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-3-shard-topology-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1775609...</msg>
<var>${data_text}</var>
<arg>uri=${uri}</arg>
<arg>session=${session}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-08T00:49:46.121081" elapsed="0.053758"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:49:46.176101" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-3-shard-topology-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1775609386, 'value...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:49:46.175605" elapsed="0.000526"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-08T00:49:46.176260" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:49:46.176437" level="INFO">${data_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-3-shard-topology-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1775609386, 'value...</msg>
<var>${data_object}</var>
<arg>${data_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-08T00:49:46.175081" elapsed="0.001383"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:49:46.176821" level="INFO">${value} = {'AbortTransactionsCount': 0, 'CommitIndex': -1, 'CommittedTransactionsCount': 0, 'CurrentTerm': 2, 'FailedReadTransactionsCount': 0, 'FailedTransactionsCount': 0, 'FollowerInfo': [], 'FollowerInitial...</msg>
<var>${value}</var>
<arg>${data_object}</arg>
<arg>value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:49:46.176619" elapsed="0.000229"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:49:46.177250" level="INFO">${raft_property} = Follower</msg>
<var>${raft_property}</var>
<arg>${value}</arg>
<arg>${property}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:49:46.177001" elapsed="0.000276"/>
</kw>
<return>
<value>${raft_property}</value>
<status status="PASS" start="2026-04-08T00:49:46.177323" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:49:46.177473" level="INFO">${raft_state} = Follower</msg>
<var>${raft_state}</var>
<arg>RaftState</arg>
<arg>${shard_name}</arg>
<arg>${shard_type}</arg>
<arg>${member_index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft property.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T00:49:45.917185" elapsed="0.260312"/>
</kw>
<return>
<value>${raft_state}</value>
<status status="PASS" start="2026-04-08T00:49:46.177554" elapsed="0.000025"/>
</return>
<msg time="2026-04-08T00:49:46.177700" level="INFO">${raft_state} = Follower</msg>
<var>${raft_state}</var>
<arg>shard_name=${shard_name}</arg>
<arg>shard_type=${ds_type}</arg>
<arg>member_index=${index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft status.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T00:49:45.916444" elapsed="0.261281"/>
</kw>
<if>
<branch type="IF" condition="'Follower' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${follower_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-08T00:49:46.178027" elapsed="0.000208"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:46.177807" elapsed="0.000466"/>
</branch>
<branch type="ELSE IF" condition="'Leader' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${leader_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:46.178470" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:46.178298" elapsed="0.000240"/>
</branch>
<branch type="ELSE IF" condition="${validate}">
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized Raft state: ${raft_state}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:46.178742" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:46.178569" elapsed="0.000227"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:46.177789" elapsed="0.001029"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T00:49:45.916275" elapsed="0.262567"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-08T00:49:45.379834" elapsed="0.799043"/>
</for>
<return>
<value>${leader_list}</value>
<value>${follower_list}</value>
<status status="PASS" start="2026-04-08T00:49:46.178920" elapsed="0.000026"/>
</return>
<msg time="2026-04-08T00:49:46.179121" level="INFO">${leader_list} = [1]</msg>
<msg time="2026-04-08T00:49:46.179245" level="INFO">${follower_list} = [2, 3]</msg>
<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="PASS" start="2026-04-08T00:49:45.375820" elapsed="0.803460"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T00:49:46.179777" level="INFO">Length is 1.</msg>
<msg time="2026-04-08T00:49:46.179854" level="INFO">${leader_count} = 1</msg>
<var>${leader_count}</var>
<arg>${leader_list}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T00:49:46.179487" elapsed="0.000391"/>
</kw>
<if>
<branch type="IF" condition="${leader_count} &lt; 1">
<kw name="Fail" owner="BuiltIn">
<arg>No leader found.</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:46.180178" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:46.179947" elapsed="0.000285"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:46.179929" elapsed="0.000326"/>
</if>
<kw name="Length Should Be" owner="BuiltIn">
<msg time="2026-04-08T00:49:46.182265" level="INFO">Length is 1.</msg>
<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="PASS" start="2026-04-08T00:49:46.180390" elapsed="0.001922"/>
</kw>
<kw name="Get From List" owner="Collections">
<msg time="2026-04-08T00:49:46.182656" level="INFO">${leader} = 1</msg>
<var>${leader}</var>
<arg>${leader_list}</arg>
<arg>0</arg>
<doc>Returns the value specified with an ``index`` from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:49:46.182471" elapsed="0.000210"/>
</kw>
<return>
<value>${leader}</value>
<value>${follower_list}</value>
<status status="PASS" start="2026-04-08T00:49:46.182727" elapsed="0.000028"/>
</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="PASS" start="2026-04-08T00:49:45.373263" elapsed="0.809617"/>
</kw>
<var name="${shard_name}">topology</var>
<status status="PASS" start="2026-04-08T00:49:45.373028" elapsed="0.809899"/>
</iter>
<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-04-08T00:49:46.187651" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:49:46.187250" elapsed="0.000429"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:49:46.188212" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:49:46.187890" elapsed="0.000349"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:49:46.188285" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:49:46.188439" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:49:46.186854" elapsed="0.001611"/>
</kw>
<kw name="Sort List" owner="Collections">
<arg>${index_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="PASS" start="2026-04-08T00:49:46.188618" elapsed="0.000156"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:49:46.189300" level="INFO">${ds_type} = config</msg>
<var>${ds_type}</var>
<arg>'${shard_type}' != 'config'</arg>
<arg>operational</arg>
<arg>config</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:49:46.188934" elapsed="0.000393"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:49:46.189724" level="INFO">${leader_list} = []</msg>
<var>${leader_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:49:46.189486" elapsed="0.000263"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:49:46.190129" level="INFO">${follower_list} = []</msg>
<var>${follower_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:49:46.189895" elapsed="0.000274"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_Raft_State_Of_Shard_At_Member" owner="ClusterManagement">
<kw name="Get_Raft_Property_From_Shard_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:49:46.192602" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:49:46.192266" elapsed="0.000363"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:49:46.192674" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:49:46.192821" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:49:46.191910" elapsed="0.000935"/>
</kw>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Get_As_Json_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:49:46.275822" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:49:46.275408" elapsed="0.000448"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:49:46.276654" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:49:46.276387" elapsed="0.000347">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-08T00:49:46.276827" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:49:46.276031" elapsed="0.000820"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:49:46.277431" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:49:46.277016" elapsed="0.000442"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T00:49:46.277761" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-08T00:49:46.277926" level="INFO">${template} = /rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T00:49:46.277620" elapsed="0.000332"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:46.278371" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:46.278106" elapsed="0.000308"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:46.279412" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:46.279141" elapsed="0.000315"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-08T00:49:46.279880" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-08T00:49:46.279613" elapsed="0.000293"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:46.280261" elapsed="0.000022"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:46.280470" elapsed="0.000024"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:46.280642" elapsed="0.000021"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-08T00:49:46.280105" elapsed="0.000659"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-08T00:49:46.279962" elapsed="0.000836"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-08T00:49:46.280848" elapsed="0.000034"/>
</return>
<msg time="2026-04-08T00:49:46.281018" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-08T00:49:46.278824" elapsed="0.002219"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:46.278498" elapsed="0.002577"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:46.281301" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:46.281101" elapsed="0.000260"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:46.278472" elapsed="0.002910"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:49:46.281967" level="INFO">${final_text} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:49:46.281525" elapsed="0.000469"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T00:49:46.282043" elapsed="0.000028"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="PASS" start="2026-04-08T00:49:46.274733" elapsed="0.007447"/>
</kw>
<msg time="2026-04-08T00:49:46.282235" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:49:46.262505" elapsed="0.019815"/>
</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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:46.294398" elapsed="0.000041"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:46.306359" elapsed="0.000041"/>
</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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:46.318496" elapsed="0.000044"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:46.319288" elapsed="0.000037"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:46.320028" elapsed="0.000035"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:46.320622" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:46.320473" elapsed="0.000205"/>
</branch>
<status status="NOT RUN" start="2026-04-08T00:49:46.320456" elapsed="0.000246"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:46.320860" elapsed="0.000021"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:46.321047" elapsed="0.000021"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:46.321246" elapsed="0.000062"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-08T00:49:46.320402" elapsed="0.000965"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-08T00:49:46.320148" elapsed="0.001260"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:46.322104" elapsed="0.000034"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-08T00:49:46.322291" elapsed="0.000051"/>
</return>
<msg time="2026-04-08T00:49:46.322532" level="INFO">${uri} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-08T00:49:46.256333" elapsed="0.066307"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:49:46.325585" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:49:46.325303" elapsed="0.000355">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-08T00:49:46.325846" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:49:46.324793" elapsed="0.001098"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:46.326427" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:46.326024" elapsed="0.000471"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:49:46.327103" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:49:46.326806" elapsed="0.000323"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:46.326534" elapsed="0.000654"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:46.325972" elapsed="0.001255"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:49:46.330420" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:49:46.327983" elapsed="0.002483"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-08T00:49:46.330543" elapsed="0.000063"/>
</return>
<msg time="2026-04-08T00:49:46.330857" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:49:46.323640" elapsed="0.007323"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:49:46.333693" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:49:46.333448" elapsed="0.000310">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-08T00:49:46.333944" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:49:46.332985" elapsed="0.001003"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-08T00:49:46.334390" elapsed="0.000077"/>
</return>
<status status="PASS" start="2026-04-08T00:49:46.334117" elapsed="0.000419"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:46.334067" elapsed="0.000506"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:46.335337" elapsed="0.000036"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:46.336062" elapsed="0.000035"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-08T00:49:46.336212" elapsed="0.000048"/>
</return>
<msg time="2026-04-08T00:49:46.338470" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:49:46.331774" elapsed="0.006803"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:46.342659" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:46.342256" elapsed="0.000503"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:46.343845" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:46.343466" elapsed="0.000477"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:49:46.360752" level="INFO">GET Request : url=http://10.30.170.48:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 path_url=/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01nfu2ssrokr1es5zgka78rw970.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:49:46.361410" level="INFO">GET Response : url=http://10.30.170.48:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Transfer-Encoding': 'chunked'} 
 body={"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","hidden-symmetric-keys","encrypted-private-keys","asymmetrically-encrypted-value-format","cms-encrypted-data-format","cleartext-private-keys","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["ssh-client-keepalives","client-ident-hostbased","client-ident-publickey","client-ident-password"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-ex... (set the log level to DEBUG or TRACE to see the full content) 
 </msg>
<msg time="2026-04-08T00:49:46.361738" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:49:46.346250" elapsed="0.015526"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:46.344069" elapsed="0.017791"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:46.362311" elapsed="0.000041"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:46.361924" elapsed="0.000548"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:46.344018" elapsed="0.018544"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:46.371415" level="INFO">{"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","hidden-symmetric-keys","encrypted-private-keys","asymmetrically-encrypted-value-format","cms-encrypted-data-format","cleartext-private-keys","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["ssh-client-keepalives","client-ident-hostbased","client-ident-publickey","client-ident-password"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-experimenter-types?revision=2015-10-20","namespace":"urn:opendaylight:openflowplugin:experimenter:types","conformance-type":"import"},{"name":"ietf-ip_2018-02-22","revision":"2018-02-22","schema":"/rests/modules/ietf-ip?revision=2018-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-ip","conformance-type":"import","feature":["ipv6-privacy-autoconf","ipv4-non-contiguous-netmasks"]},{"name":"ietf-tcp-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-client","conformance-type":"import","feature":["local-binding-supported","tcp-client-keepalives"]},{"name":"node-config_2014-10-15","revision":"2014-10-15","schema":"/rests/modules/node-config?revision=2014-10-15","namespace":"urn:opendaylight:module:config","conformance-type":"import"},{"name":"ietf-restconf_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf","conformance-type":"import"},{"name":"ietf-datastores_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-datastores?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-datastores","conformance-type":"import"},{"name":"ietf-yang-patch_2017-02-22","revision":"2017-02-22","schema":"/rests/modules/ietf-yang-patch?revision=2017-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-patch","conformance-type":"import"},{"name":"sal-group_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-group?revision=2013-09-18","namespace":"urn:opendaylight:group:service","conformance-type":"import"},{"name":"odl-codegen-extensions_2024-06-27","revision":"2024-06-27","schema":"/rests/modules/odl-codegen-extensions?revision=2024-06-27","namespace":"urn:opendaylight:yang:extension:codegen","conformance-type":"import"},{"name":"sal-meter_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-meter?revision=2013-09-18","namespace":"urn:opendaylight:meter:service","conformance-type":"import"},{"name":"ietf-interfaces_2018-02-20","revision":"2018-02-20","schema":"/rests/modules/ietf-interfaces?revision=2018-02-20","namespace":"urn:ietf:params:xml:ns:yang:ietf-interfaces","conformance-type":"import","feature":["pre-provisioning","if-mib","arbitrary-names"]},{"name":"opendaylight-l2-types_2013-08-27","revision":"2013-08-27","schema":"/rests/modules/opendaylight-l2-types?revision=2013-08-27","namespace":"urn:opendaylight:l2:types","conformance-type":"import"},{"name":"opendaylight-flow-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-flow-types?revision=2013-10-26","namespace":"urn:opendaylight:flow:types","conformance-type":"import"},{"name":"lldp-speaker-config_2016-05-12","revision":"2016-05-12","schema":"/rests/modules/lldp-speaker-config?revision=2016-05-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker:config","conformance-type":"import"},{"name":"aaa-cert_2015-11-26","revision":"2015-11-26","schema":"/rests/modules/aaa-cert?revision=2015-11-26","namespace":"urn:opendaylight:yang:aaa:cert","conformance-type":"import"},{"name":"openflow-action_2015-02-03","revision":"2015-02-03","schema":"/rests/modules/openflow-action?revision=2015-02-03","namespace":"urn:opendaylight:openflow:common:action","conformance-type":"import"},{"name":"openflow-approved-extensions_2016-08-02","revision":"2016-08-02","schema":"/rests/modules/openflow-approved-extensions?revision=2016-08-02","namespace":"urn:opendaylight:openflow:approved:extensions","conformance-type":"import"},{"name":"nc-notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/nc-notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netmod:notification","conformance-type":"import"},{"name":"ietf-netconf-nmda_2019-01-07","revision":"2019-01-07","schema":"/rests/modules/ietf-netconf-nmda?revision=2019-01-07","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-nmda","conformance-type":"import","feature":["with-defaults","origin"]},{"name":"ietf-tcp-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-common","conformance-type":"import","feature":["keepalives-supported"]},{"name":"network-topology_2013-10-21","revision":"2013-10-21","schema":"/rests/modules/network-topology?revision=2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:network-topology","conformance-type":"import"},{"name":"aaa-encrypt-service-config_2024-02-02","revision":"2024-02-02","schema":"/rests/modules/aaa-encrypt-service-config?revision=2024-02-02","namespace":"config:aaa:authn:encrypt:service:config","conformance-type":"import"},{"name":"openflow-instruction_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-instruction?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:instruction","conformance-type":"import"},{"name":"ietf-tls-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-client","conformance-type":"import","feature":["client-ident-x509-cert","server-auth-x509-cert"]},{"name":"opendaylight-group-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-group-statistics?revision=2013-11-11","namespace":"urn:opendaylight:group:statistics","conformance-type":"import"},{"name":"cluster-admin_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/cluster-admin?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:cluster:admin","conformance-type":"import"},{"name":"opendaylight-flow-statistics_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-flow-statistics?revision=2013-08-19","namespace":"urn:opendaylight:flow:statistics","conformance-type":"import"},{"name":"opendaylight-table-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-table-types?revision=2013-10-26","namespace":"urn:opendaylight:table:types","conformance-type":"import"},{"name":"forwarding-rules-manager-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/forwarding-rules-manager-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:forwardingrules-manager:config","conformance-type":"import"},{"name":"odl-srm-types_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-types?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:types","conformance-type":"import"},{"name":"ietf-x509-cert-to-name_2014-12-10","revision":"2014-12-10","schema":"/rests/modules/ietf-x509-cert-to-name?revision=2014-12-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-x509-cert-to-name","conformance-type":"import"},{"name":"flow-node-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-node-inventory?revision=2013-08-19","namespace":"urn:opendaylight:flow:inventory","conformance-type":"import"},{"name":"flow-errors_2013-11-16","revision":"2013-11-16","schema":"/rests/modules/flow-errors?revision=2013-11-16","namespace":"urn:opendaylight:flow:errors","conformance-type":"import"},{"name":"ietf-netconf_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:netconf:base:1.0","conformance-type":"import","feature":["xpath","url","rollback-on-error","validate","startup","candidate","confirmed-commit","writable-running"]},{"name":"iana-ssh-public-key-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-public-key-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-public-key-algs","conformance-type":"import"},{"name":"aaa-cert-mdsal_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/aaa-cert-mdsal?revision=2016-03-21","namespace":"urn:opendaylight:yang:aaa:cert:mdsal","conformance-type":"import"},{"name":"odl-device-notification_2024-02-18","revision":"2024-02-18","schema":"/rests/modules/odl-device-notification?revision=2024-02-18","namespace":"urn:opendaylight:device:notification","conformance-type":"import"},{"name":"ietf-origin_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-origin?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-origin","conformance-type":"import"},{"name":"openflow-augments_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-augments?revision=2015-02-25","namespace":"urn:opendaylight:openflow:augments","conformance-type":"import"},{"name":"iana-ssh-encryption-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-encryption-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-encryption-algs","conformance-type":"import"},{"name":"ietf-truststore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-truststore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-truststore","conformance-type":"import","feature":["inline-definitions-supported"]},{"name":"distributed-datastore-provider_2025-01-30","revision":"2025-01-30","schema":"/rests/modules/distributed-datastore-provider?revision=2025-01-30","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:distributed-datastore-provider","conformance-type":"import"},{"name":"opendaylight-group-types_2013-10-18","revision":"2013-10-18","schema":"/rests/modules/opendaylight-group-types?revision=2013-10-18","namespace":"urn:opendaylight:group:types","conformance-type":"import"},{"name":"sal-remote-augment_2023-11-03","revision":"2023-11-03","schema":"/rests/modules/sal-remote-augment?revision=2023-11-03","namespace":"urn:sal:restconf:event:subscription","conformance-type":"import"},{"name":"opendaylight-ipv6-arbitrary-bitmask-fields_2016-02-24","revision":"2016-02-24","schema":"/rests/modules/opendaylight-ipv6-arbitrary-bitmask-fields?revision=2016-02-24","namespace":"urn:opendaylight:opendaylight-ipv6-arbitrary-bitmask-fields","conformance-type":"import"},{"name":"sal-flows-batch_2016-03-14","revision":"2016-03-14","schema":"/rests/modules/sal-flows-batch?revision=2016-03-14","namespace":"urn:opendaylight:flows:service","conformance-type":"import"},{"name":"ietf-tls-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-common","conformance-type":"import","feature":["tls12","hello-params","tls13"]},{"name":"openflow-types_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-types?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:types","conformance-type":"import"},{"name":"ietf-netconf-with-defaults_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf-with-defaults?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults","conformance-type":"import"},{"name":"odl-srm-ops_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-ops?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:ops","conformance-type":"import"},{"name":"odl-general-entity_2015-09-30","revision":"2015-09-30","schema":"/rests/modules/odl-general-entity?revision=2015-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:mdsal:core:general-entity","conformance-type":"import"},{"name":"iana-ssh-key-exchange-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-key-exchange-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-key-exchange-algs","conformance-type":"import"},{"name":"node-ssl-connection-error_2019-07-23","revision":"2019-07-23","schema":"/rests/modules/node-ssl-connection-error?revision=2019-07-23","namespace":"urn:opendaylight:node-ssl-connection-error:service","conformance-type":"import"},{"name":"openflow-protocol_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-protocol?revision=2013-07-31","namespace":"urn:opendaylight:openflow:protocol","conformance-type":"import"},{"name":"ietf-udp-server_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-server?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-server","conformance-type":"import"},{"name":"ietf-keystore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-keystore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-keystore","conformance-type":"import","feature":["asymmetric-keys","inline-definitions-supported"]},{"name":"aaa_2016-12-14","revision":"2016-12-14","schema":"/rests/modules/aaa?revision=2016-12-14","namespace":"urn:opendaylight:params:xml:ns:yang:aaa","conformance-type":"import"},{"name":"aaa-cert-rpc_2015-12-15","revision":"2015-12-15","schema":"/rests/modules/aaa-cert-rpc?revision=2015-12-15","namespace":"urn:opendaylight:yang:aaa:cert:rpc","conformance-type":"import"},{"name":"system-notifications_2013-09-27","revision":"2013-09-27","schema":"/rests/modules/system-notifications?revision=2013-09-27","namespace":"urn:opendaylight:openflow:system","conformance-type":"import"},{"name":"sal-flat-batch_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/sal-flat-batch?revision=2016-03-21","namespace":"urn:opendaylight:flat-batch:service","conformance-type":"import"},{"name":"notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netconf:notification:1.0","conformance-type":"import"},{"name":"sal-remote_2014-01-14","revision":"2014-01-14","schema":"/rests/modules/sal-remote?revision=2014-01-14","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:remote","conformance-type":"import"},{"name":"yang-ext_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/yang-ext?revision=2013-07-09","namespace":"urn:opendaylight:yang:extension:yang-ext","conformance-type":"import"},{"name":"opendaylight-multipart-types_2017-01-12","revision":"2017-01-12","schema":"/rests/modules/opendaylight-multipart-types?revision=2017-01-12","namespace":"urn:opendaylight:multipart:types","conformance-type":"import"},{"name":"opendaylight-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-inventory?revision=2013-08-19","namespace":"urn:opendaylight:inventory","conformance-type":"import"},{"name":"sal-queue_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-queue?revision=2015-03-05","namespace":"urn:opendaylight:queue:service","conformance-type":"import"},{"name":"sal-groups-batch_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/sal-groups-batch?revision=2016-03-15","namespace":"urn:opendaylight:groups:service","conformance-type":"import"},{"name":"arbitrator-reconcile_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/arbitrator-reconcile?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:arbitrator-reconcile:service","conformance-type":"import"},{"name":"ietf-yang-metadata_2016-08-05","revision":"2016-08-05","schema":"/rests/modules/ietf-yang-metadata?revision=2016-08-05","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-metadata","conformance-type":"import"},{"name":"opendaylight-arbitrary-bitmask-fields_2016-01-30","revision":"2016-01-30","schema":"/rests/modules/opendaylight-arbitrary-bitmask-fields?revision=2016-01-30","namespace":"urn:opendaylight:arbitrary:bitmask:fields","conformance-type":"import"},{"name":"ietf-udp-client_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-client?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-client","conformance-type":"import","feature":["local-binding"]},{"name":"opendaylight-meter-types_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/opendaylight-meter-types?revision=2013-09-18","namespace":"urn:opendaylight:meter:types","conformance-type":"import"},{"name":"opendaylight-action-types_2013-11-12","revision":"2013-11-12","schema":"/rests/modules/opendaylight-action-types?revision=2013-11-12","namespace":"urn:opendaylight:action:types","conformance-type":"import"},{"name":"sal-role_2015-07-27","revision":"2015-07-27","schema":"/rests/modules/sal-role?revision=2015-07-27","namespace":"urn:opendaylight:role:service","conformance-type":"import"},{"name":"openflow-provider-config_2016-05-10","revision":"2016-05-10","schema":"/rests/modules/openflow-provider-config?revision=2016-05-10","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:provider:config","conformance-type":"import"},{"name":"odl-serviceutils-upgrade_2018-07-02","revision":"2018-07-02","schema":"/rests/modules/odl-serviceutils-upgrade?revision=2018-07-02","namespace":"urn:opendaylight:serviceutils:upgrade","conformance-type":"import"},{"name":"opendaylight-match-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-match-types?revision=2013-10-26","namespace":"urn:opendaylight:model:match:types","conformance-type":"import"},{"name":"ietf-restconf-server_2024-08-14","revision":"2024-08-14","schema":"/rests/modules/ietf-restconf-server?revision=2024-08-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-server","conformance-type":"import","feature":["http-listen","https-listen"]},{"name":"reconciliation-result-state_2017-07-13","revision":"2017-07-13","schema":"/rests/modules/reconciliation-result-state?revision=2017-07-13","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:rf:state","conformance-type":"import"},{"name":"onf-extensions_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/onf-extensions?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf","conformance-type":"import"},{"name":"sal-table_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/sal-table?revision=2013-10-26","namespace":"urn:opendaylight:table:service","conformance-type":"import"},{"name":"iana-http-versions_2026-02-04","revision":"2026-02-04","schema":"/rests/modules/iana-http-versions?revision=2026-02-04","namespace":"urn:ietf:params:xml:ns:yang:iana-http-versions","conformance-type":"import"},{"name":"opendaylight-direct-statistics_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/opendaylight-direct-statistics?revision=2016-05-11","namespace":"urn:opendaylight:direct:statistics","conformance-type":"import"},{"name":"opendaylight-port-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-port-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:port","conformance-type":"import"},{"name":"sal-async-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/sal-async-config?revision=2017-06-19","namespace":"urn:opendaylight:async-config:service","conformance-type":"import"},{"name":"aaa-password-service-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-password-service-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:password:service:config","conformance-type":"import"},{"name":"ietf-yang-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-yang-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-types","conformance-type":"import"},{"name":"opendaylight-queue-statistics_2013-12-16","revision":"2013-12-16","schema":"/rests/modules/opendaylight-queue-statistics?revision=2013-12-16","namespace":"urn:opendaylight:queue:statistics","conformance-type":"import"},{"name":"sal-bundle_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/sal-bundle?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf:bundle:service","conformance-type":"import"},{"name":"ietf-restconf-subscribed-notifications_2019-11-17","revision":"2019-11-17","schema":"/rests/modules/ietf-restconf-subscribed-notifications?revision=2019-11-17","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-subscribed-notifications","conformance-type":"import"},{"name":"sal-meters-batch_2016-03-16","revision":"2016-03-16","schema":"/rests/modules/sal-meters-batch?revision=2016-03-16","namespace":"urn:opendaylight:meters:service","conformance-type":"import"},{"name":"odl-entity-owners","revision":"","schema":"/rests/modules/odl-entity-owners","namespace":"urn:opendaylight:params:xml:ns:yang:controller:entity-owners","conformance-type":"import"},{"name":"sal-experimenter-mp-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-mp-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-mp-message:service","conformance-type":"import"},{"name":"packet-processing_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/packet-processing?revision=2013-07-09","namespace":"urn:opendaylight:packet:service","conformance-type":"import"},{"name":"openflow-configuration_2014-06-30","revision":"2014-06-30","schema":"/rests/modules/openflow-configuration?revision=2014-06-30","namespace":"urn:opendaylight:openflow:config","conformance-type":"import"},{"name":"odl-srm-rpcs_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-rpcs?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:rpc","conformance-type":"import"},{"name":"ietf-netconf-acm_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-netconf-acm?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-acm","conformance-type":"import"},{"name":"iana-crypt-hash_2014-08-06","revision":"2014-08-06","schema":"/rests/modules/iana-crypt-hash?revision=2014-08-06","namespace":"urn:ietf:params:xml:ns:yang:iana-crypt-hash","conformance-type":"import","feature":["crypt-hash-sha-512","crypt-hash-sha-256","crypt-hash-md5"]},{"name":"openflow-extensible-match_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-extensible-match?revision=2015-02-25","namespace":"urn:opendaylight:openflow:oxm","conformance-type":"import"}],"module-set-id":"2"}}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:46.366509" elapsed="0.005231"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:46.365951" elapsed="0.005825"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:46.365901" elapsed="0.005900"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:46.374274" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:46.372109" elapsed="0.002211"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:46.371883" elapsed="0.002472"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:46.371865" elapsed="0.002514"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:49:46.374980" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:49:46.374577" elapsed="0.000429"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:46.375387" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:46.375098" elapsed="0.000348"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:49:46.375939" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:49:46.375631" elapsed="0.000334"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:46.375470" elapsed="0.000530"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:46.375079" elapsed="0.000942"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:49:46.376579" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:49:46.376215" elapsed="0.000391"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:46.376928" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:46.376696" elapsed="0.000289"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:49:46.377515" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:49:46.377179" elapsed="0.000363"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:46.377008" elapsed="0.000569"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:46.376676" elapsed="0.000922"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:49:46.377771" elapsed="0.000351"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:49:46.378631" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:49:46.378323" elapsed="0.000334"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:49:46.378830" elapsed="0.002162"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:49:46.364261" elapsed="0.016855"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:49:46.381506" elapsed="0.000050"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:49:46.381262" elapsed="0.000358"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:46.381210" elapsed="0.000445"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:49:46.390740" level="INFO">${text_normalized} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:49:46.382376" elapsed="0.008413"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:49:46.390868" elapsed="0.000070"/>
</return>
<msg time="2026-04-08T00:49:46.391212" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:49:46.339229" elapsed="0.052094"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:49:46.391786" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:49:46.391964" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="PASS" start="2026-04-08T00:49:46.201258" elapsed="0.190734"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Json_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:46.392416" elapsed="0.000027"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:46.392077" elapsed="0.000533"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:46.392059" elapsed="0.000578"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:49:46.392671" elapsed="0.000027"/>
</return>
<arg>session=${session}</arg>
<arg>folder=${RESTCONF_MODULES_DIR}</arg>
<arg>verify=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Add arguments sensible for JSON data, return Get_Templated response text.
Optionally, verification against JSON data (may be iterated) is called.
Only subset of JSON data is verified and returned if JMES path is specified in
file ${folder}/jmespath.expr.</doc>
<status status="PASS" start="2026-04-08T00:49:46.197010" elapsed="0.195790"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:46.192914" elapsed="0.199932"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:46.192896" elapsed="0.199974"/>
</if>
<kw name="Resolve_Shard_Type_Class" owner="ClusterManagement">
<if>
<branch type="IF" condition="'${shard_type}' == 'config'">
<return>
<value>DistributedConfigDatastore</value>
<status status="PASS" start="2026-04-08T00:49:46.393531" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-08T00:49:46.393421" elapsed="0.000170"/>
</branch>
<branch type="ELSE IF" condition="'${shard_type}' == 'operational'">
<return>
<value>DistributedOperationalDatastore</value>
<status status="NOT RUN" start="2026-04-08T00:49:46.393651" elapsed="0.000012"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:49:46.393614" elapsed="0.000075"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:46.393401" elapsed="0.000310"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized shard type: ${shard_type}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:46.393857" elapsed="0.000022"/>
</kw>
<msg time="2026-04-08T00:49:46.393976" level="INFO">${type_class} = DistributedConfigDatastore</msg>
<var>${type_class}</var>
<arg>shard_type=${shard_type}</arg>
<doc>Simple lookup for class name corresponding to desired type.</doc>
<status status="PASS" start="2026-04-08T00:49:46.393101" elapsed="0.000900"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:49:46.394558" level="INFO">${cluster_index} = 1</msg>
<var>${cluster_index}</var>
<arg>${member_index}+${NODE_ROLE_INDEX_START}-1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:49:46.394184" elapsed="0.000401"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:49:46.395219" level="INFO">${uri} = jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-default-config,type=DistributedConfigDatastore</msg>
<var>${uri}</var>
<arg>${JOLOKIA_READ_URI}:Category=Shards,name=member-${cluster_index}-shard-${shard_name}-${shard_type},type=${type_class}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:49:46.394739" elapsed="0.000508"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:46.400781" level="INFO">jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-default-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:46.400343" elapsed="0.000485"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:46.401468" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:46.400981" elapsed="0.000533"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:49:46.420932" level="INFO">GET Request : url=http://10.30.170.48:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-default-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-default-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:49:46.421130" level="INFO">GET Response : url=http://10.30.170.48:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-default-config,type=DistributedConfigDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Wed, 08 Apr 2026 00:49:46 GMT', 'Expires': 'Tue, 07 Apr 2026 23:49:46 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-1-shard-default-config,type=DistributedConfigDatastore","type":"read"},"value":{"ReadWriteTransactionCount":21,"SnapshotIndex":73,"InMemoryJournalLogSize":1,"ReplicatedToAllIndex":73,"Leader":"member-1-shard-default-config","LastIndex":74,"RaftState":"Leader","LastApplied":74,"LastCommittedTransactionTime":"2026-04-08 00:46:46.951","PeerAddresses":"member-3-shard-default-config: pekko:\/\/opendaylight-cluster-data@10.30.171.110:2550\/user\/shardmanager-config\/member-3-shard-default-config, member-2-shard-default-config: pekko:\/\/opendaylight-cluster-data@10.30.170.131:2550\/user\/shardmanager-config\/member-2-shard-default-config","LastLogIndex":74,"LastLeadershipChangeTime":"2026-04-08 00:46:45.929","FollowerInitialSyncStatus":false,"FollowerInfo":[{"timeSinceLastActivity":"00:00:00.095","active":true,"matchIndex":74,"voting":true,"id":"member-3-shard-default-config","nextIndex":75},{"timeSinceLastActivity":"00:00:00.095","active":true,"matchIndex":74,"voting":true,"id":"member-2-shard-default-config","nextIndex":75}],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"903.9 μs","CurrentTerm":2,"LastTerm":2,"FailedTransactionsCount":3,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-default-config","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":7,"TxCohortCacheSize":0,"PeerVotingStates":"member-3-shard-default-config: true, member-2-shard-default-config: true","LastLogTerm":2,"StatRetrievalError":null,"CommitIndex":74,"SnapshotTerm":2,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":18,"ShardName":"member-1-shard-default-config","LeadershipChangeCount":1,"InMemoryJournalDataSize":10675},"timestamp":1775609386,"status":200} 
 </msg>
<msg time="2026-04-08T00:49:46.421467" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:49:46.412393" elapsed="0.009224"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:46.401583" elapsed="0.020397"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:46.422285" elapsed="0.000033"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:46.422025" elapsed="0.000766"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:46.401564" elapsed="0.021265"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:46.430002" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-1-shard-default-config,type=DistributedConfigDatastore","type":"read"},"value":{"ReadWriteTransactionCount":21,"SnapshotIndex":73,"InMemoryJournalLogSize":1,"ReplicatedToAllIndex":73,"Leader":"member-1-shard-default-config","LastIndex":74,"RaftState":"Leader","LastApplied":74,"LastCommittedTransactionTime":"2026-04-08 00:46:46.951","PeerAddresses":"member-3-shard-default-config: pekko:\/\/opendaylight-cluster-data@10.30.171.110:2550\/user\/shardmanager-config\/member-3-shard-default-config, member-2-shard-default-config: pekko:\/\/opendaylight-cluster-data@10.30.170.131:2550\/user\/shardmanager-config\/member-2-shard-default-config","LastLogIndex":74,"LastLeadershipChangeTime":"2026-04-08 00:46:45.929","FollowerInitialSyncStatus":false,"FollowerInfo":[{"timeSinceLastActivity":"00:00:00.095","active":true,"matchIndex":74,"voting":true,"id":"member-3-shard-default-config","nextIndex":75},{"timeSinceLastActivity":"00:00:00.095","active":true,"matchIndex":74,"voting":true,"id":"member-2-shard-default-config","nextIndex":75}],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"903.9 μs","CurrentTerm":2,"LastTerm":2,"FailedTransactionsCount":3,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-default-config","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":7,"TxCohortCacheSize":0,"PeerVotingStates":"member-3-shard-default-config: true, member-2-shard-default-config: true","LastLogTerm":2,"StatRetrievalError":null,"CommitIndex":74,"SnapshotTerm":2,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":18,"ShardName":"member-1-shard-default-config","LeadershipChangeCount":1,"InMemoryJournalDataSize":10675},"timestamp":1775609386,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:46.426151" elapsed="0.004117"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:46.424849" elapsed="0.005497"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:46.424820" elapsed="0.005585"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:46.435136" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:46.431927" elapsed="0.003326"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:46.430527" elapsed="0.004777"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:46.430501" elapsed="0.004841"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:49:46.436782" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:49:46.435980" elapsed="0.000862"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:46.437523" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:46.437011" elapsed="0.000601"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:49:46.438511" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:49:46.437983" elapsed="0.000574"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:46.437650" elapsed="0.000956"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:46.436990" elapsed="0.001652"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:49:46.440020" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:49:46.439273" elapsed="0.000808"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:46.440762" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:46.440269" elapsed="0.000580"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:49:46.441767" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:49:46.441233" elapsed="0.000581"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:46.440886" elapsed="0.000977"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:46.440248" elapsed="0.001649"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:49:46.442129" elapsed="0.000718"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:49:46.443675" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:49:46.443149" elapsed="0.000587"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:49:46.444017" elapsed="0.002786"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:49:46.423768" elapsed="0.023210"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:49:46.447228" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:49:46.447071" elapsed="0.000206"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:46.447046" elapsed="0.000253"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:49:46.451225" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-1-shard-default-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 17756093...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:49:46.447459" elapsed="0.003799"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:49:46.451315" elapsed="0.000039"/>
</return>
<msg time="2026-04-08T00:49:46.451557" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-1-shard-default-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 17756093...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:49:46.396207" elapsed="0.055378"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:49:46.451646" elapsed="0.000027"/>
</return>
<msg time="2026-04-08T00:49:46.451799" level="INFO">${data_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-1-shard-default-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 17756093...</msg>
<var>${data_text}</var>
<arg>uri=${uri}</arg>
<arg>session=${session}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-08T00:49:46.395465" elapsed="0.056362"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:49:46.453023" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-1-shard-default-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1775609386, 'value'...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:49:46.452494" elapsed="0.000558"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-08T00:49:46.453102" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:49:46.453299" level="INFO">${data_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-1-shard-default-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1775609386, 'value'...</msg>
<var>${data_object}</var>
<arg>${data_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-08T00:49:46.452082" elapsed="0.001245"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:49:46.453709" level="INFO">${value} = {'AbortTransactionsCount': 0, 'CommitIndex': 74, 'CommittedTransactionsCount': 7, 'CurrentTerm': 2, 'FailedReadTransactionsCount': 0, 'FailedTransactionsCount': 3, 'FollowerInfo': [{'active': True, 'i...</msg>
<var>${value}</var>
<arg>${data_object}</arg>
<arg>value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:49:46.453501" elapsed="0.000236"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:49:46.454089" level="INFO">${raft_property} = Leader</msg>
<var>${raft_property}</var>
<arg>${value}</arg>
<arg>${property}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:49:46.453890" elapsed="0.000225"/>
</kw>
<return>
<value>${raft_property}</value>
<status status="PASS" start="2026-04-08T00:49:46.454267" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:49:46.454445" level="INFO">${raft_state} = Leader</msg>
<var>${raft_state}</var>
<arg>RaftState</arg>
<arg>${shard_name}</arg>
<arg>${shard_type}</arg>
<arg>${member_index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft property.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T00:49:46.191315" elapsed="0.263162"/>
</kw>
<return>
<value>${raft_state}</value>
<status status="PASS" start="2026-04-08T00:49:46.454545" elapsed="0.000026"/>
</return>
<msg time="2026-04-08T00:49:46.454691" level="INFO">${raft_state} = Leader</msg>
<var>${raft_state}</var>
<arg>shard_name=${shard_name}</arg>
<arg>shard_type=${ds_type}</arg>
<arg>member_index=${index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft status.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T00:49:46.190595" elapsed="0.264120"/>
</kw>
<if>
<branch type="IF" condition="'Follower' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${follower_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:46.455018" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:46.454798" elapsed="0.000276"/>
</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="PASS" start="2026-04-08T00:49:46.455319" elapsed="0.000199"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:46.455098" elapsed="0.000457"/>
</branch>
<branch type="ELSE IF" condition="${validate}">
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized Raft state: ${raft_state}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:46.455721" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:46.455578" elapsed="0.000194"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:46.454780" elapsed="0.001014"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T00:49:46.190430" elapsed="0.265388"/>
</iter>
<iter>
<kw name="Get_Raft_State_Of_Shard_At_Member" owner="ClusterManagement">
<kw name="Get_Raft_Property_From_Shard_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:49:46.458299" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:49:46.457867" elapsed="0.000461"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:49:46.458374" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:49:46.458521" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:49:46.457526" elapsed="0.001020"/>
</kw>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Get_As_Json_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:49:46.541336" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:49:46.540914" elapsed="0.000456"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:49:46.542261" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:49:46.541981" elapsed="0.000362">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-08T00:49:46.542438" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:49:46.541543" elapsed="0.000920"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:49:46.543203" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:49:46.542803" elapsed="0.000428"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T00:49:46.543530" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-08T00:49:46.543687" level="INFO">${template} = /rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T00:49:46.543390" elapsed="0.000323"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:46.544109" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:46.543866" elapsed="0.000302"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:46.545223" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:46.544905" elapsed="0.000369"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-08T00:49:46.545758" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-08T00:49:46.545440" elapsed="0.000345"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:46.546116" elapsed="0.000022"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:46.546337" elapsed="0.000024"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:46.546508" elapsed="0.000021"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-08T00:49:46.545983" elapsed="0.000581"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-08T00:49:46.545841" elapsed="0.000755"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-08T00:49:46.546644" elapsed="0.000034"/>
</return>
<msg time="2026-04-08T00:49:46.546809" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-08T00:49:46.544585" elapsed="0.002250"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:46.544255" elapsed="0.002611"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:46.547035" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:46.546891" elapsed="0.000197"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:46.544229" elapsed="0.002879"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:49:46.547713" level="INFO">${final_text} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:49:46.547272" elapsed="0.000468"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T00:49:46.547787" 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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="PASS" start="2026-04-08T00:49:46.540266" elapsed="0.007643"/>
</kw>
<msg time="2026-04-08T00:49:46.547962" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:49:46.527963" elapsed="0.020090"/>
</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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:46.560215" elapsed="0.000042"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:46.572038" elapsed="0.000044"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:46.584005" elapsed="0.000045"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:46.584806" elapsed="0.000037"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:46.585562" elapsed="0.000036"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:46.586191" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:46.586024" elapsed="0.000225"/>
</branch>
<status status="NOT RUN" start="2026-04-08T00:49:46.586007" elapsed="0.000268"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:46.586433" elapsed="0.000021"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:46.586615" elapsed="0.000021"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:46.586794" elapsed="0.000021"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-08T00:49:46.585948" elapsed="0.000920"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-08T00:49:46.585712" elapsed="0.001196"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:46.587611" elapsed="0.000035"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-08T00:49:46.587729" elapsed="0.000050"/>
</return>
<msg time="2026-04-08T00:49:46.587973" level="INFO">${uri} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-08T00:49:46.521606" elapsed="0.066494"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:49:46.591096" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:49:46.590798" elapsed="0.000392">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-08T00:49:46.591381" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:49:46.590313" elapsed="0.001116"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:46.591946" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:46.591561" elapsed="0.000450"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:49:46.592637" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:49:46.592342" elapsed="0.000321"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:46.592050" elapsed="0.000657"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:46.591509" elapsed="0.001236"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:49:46.599663" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:49:46.593564" elapsed="0.006222"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-08T00:49:46.599995" elapsed="0.000280"/>
</return>
<msg time="2026-04-08T00:49:46.600879" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:49:46.589151" elapsed="0.011964"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:49:46.607062" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:49:46.606745" elapsed="0.000401">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-08T00:49:46.607353" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:49:46.606093" elapsed="0.001305"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-08T00:49:46.607802" elapsed="0.000078"/>
</return>
<status status="PASS" start="2026-04-08T00:49:46.607543" elapsed="0.000405"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:46.607488" elapsed="0.000501"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:46.608761" elapsed="0.000038"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:46.609516" elapsed="0.000035"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-08T00:49:46.609624" elapsed="0.000060"/>
</return>
<msg time="2026-04-08T00:49:46.611800" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:49:46.603290" elapsed="0.008621"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:46.615837" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:46.615436" elapsed="0.000501"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:46.617109" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:46.616729" elapsed="0.000493"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:49:46.643518" level="INFO">GET Request : url=http://10.30.170.131:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 path_url=/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0evogeryo91251obsb096nsda10.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:49:46.643951" level="INFO">GET Response : url=http://10.30.170.131:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Transfer-Encoding': 'chunked'} 
 body={"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","hidden-symmetric-keys","encrypted-private-keys","asymmetrically-encrypted-value-format","cms-encrypted-data-format","cleartext-private-keys","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["ssh-client-keepalives","client-ident-hostbased","client-ident-publickey","client-ident-password"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-ex... (set the log level to DEBUG or TRACE to see the full content) 
 </msg>
<msg time="2026-04-08T00:49:46.644178" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:49:46.619444" elapsed="0.024763"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:46.617350" elapsed="0.026914"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:46.644559" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:46.644308" elapsed="0.000327"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:46.617299" elapsed="0.027373"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:46.649091" level="INFO">{"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","hidden-symmetric-keys","encrypted-private-keys","asymmetrically-encrypted-value-format","cms-encrypted-data-format","cleartext-private-keys","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["ssh-client-keepalives","client-ident-hostbased","client-ident-publickey","client-ident-password"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-experimenter-types?revision=2015-10-20","namespace":"urn:opendaylight:openflowplugin:experimenter:types","conformance-type":"import"},{"name":"ietf-ip_2018-02-22","revision":"2018-02-22","schema":"/rests/modules/ietf-ip?revision=2018-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-ip","conformance-type":"import","feature":["ipv6-privacy-autoconf","ipv4-non-contiguous-netmasks"]},{"name":"ietf-tcp-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-client","conformance-type":"import","feature":["local-binding-supported","tcp-client-keepalives"]},{"name":"node-config_2014-10-15","revision":"2014-10-15","schema":"/rests/modules/node-config?revision=2014-10-15","namespace":"urn:opendaylight:module:config","conformance-type":"import"},{"name":"ietf-restconf_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf","conformance-type":"import"},{"name":"ietf-datastores_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-datastores?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-datastores","conformance-type":"import"},{"name":"ietf-yang-patch_2017-02-22","revision":"2017-02-22","schema":"/rests/modules/ietf-yang-patch?revision=2017-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-patch","conformance-type":"import"},{"name":"sal-group_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-group?revision=2013-09-18","namespace":"urn:opendaylight:group:service","conformance-type":"import"},{"name":"odl-codegen-extensions_2024-06-27","revision":"2024-06-27","schema":"/rests/modules/odl-codegen-extensions?revision=2024-06-27","namespace":"urn:opendaylight:yang:extension:codegen","conformance-type":"import"},{"name":"sal-meter_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-meter?revision=2013-09-18","namespace":"urn:opendaylight:meter:service","conformance-type":"import"},{"name":"ietf-interfaces_2018-02-20","revision":"2018-02-20","schema":"/rests/modules/ietf-interfaces?revision=2018-02-20","namespace":"urn:ietf:params:xml:ns:yang:ietf-interfaces","conformance-type":"import","feature":["pre-provisioning","if-mib","arbitrary-names"]},{"name":"opendaylight-l2-types_2013-08-27","revision":"2013-08-27","schema":"/rests/modules/opendaylight-l2-types?revision=2013-08-27","namespace":"urn:opendaylight:l2:types","conformance-type":"import"},{"name":"opendaylight-flow-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-flow-types?revision=2013-10-26","namespace":"urn:opendaylight:flow:types","conformance-type":"import"},{"name":"lldp-speaker-config_2016-05-12","revision":"2016-05-12","schema":"/rests/modules/lldp-speaker-config?revision=2016-05-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker:config","conformance-type":"import"},{"name":"aaa-cert_2015-11-26","revision":"2015-11-26","schema":"/rests/modules/aaa-cert?revision=2015-11-26","namespace":"urn:opendaylight:yang:aaa:cert","conformance-type":"import"},{"name":"openflow-action_2015-02-03","revision":"2015-02-03","schema":"/rests/modules/openflow-action?revision=2015-02-03","namespace":"urn:opendaylight:openflow:common:action","conformance-type":"import"},{"name":"openflow-approved-extensions_2016-08-02","revision":"2016-08-02","schema":"/rests/modules/openflow-approved-extensions?revision=2016-08-02","namespace":"urn:opendaylight:openflow:approved:extensions","conformance-type":"import"},{"name":"nc-notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/nc-notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netmod:notification","conformance-type":"import"},{"name":"ietf-netconf-nmda_2019-01-07","revision":"2019-01-07","schema":"/rests/modules/ietf-netconf-nmda?revision=2019-01-07","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-nmda","conformance-type":"import","feature":["with-defaults","origin"]},{"name":"ietf-tcp-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-common","conformance-type":"import","feature":["keepalives-supported"]},{"name":"network-topology_2013-10-21","revision":"2013-10-21","schema":"/rests/modules/network-topology?revision=2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:network-topology","conformance-type":"import"},{"name":"aaa-encrypt-service-config_2024-02-02","revision":"2024-02-02","schema":"/rests/modules/aaa-encrypt-service-config?revision=2024-02-02","namespace":"config:aaa:authn:encrypt:service:config","conformance-type":"import"},{"name":"openflow-instruction_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-instruction?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:instruction","conformance-type":"import"},{"name":"ietf-tls-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-client","conformance-type":"import","feature":["client-ident-x509-cert","server-auth-x509-cert"]},{"name":"opendaylight-group-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-group-statistics?revision=2013-11-11","namespace":"urn:opendaylight:group:statistics","conformance-type":"import"},{"name":"cluster-admin_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/cluster-admin?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:cluster:admin","conformance-type":"import"},{"name":"opendaylight-flow-statistics_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-flow-statistics?revision=2013-08-19","namespace":"urn:opendaylight:flow:statistics","conformance-type":"import"},{"name":"opendaylight-table-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-table-types?revision=2013-10-26","namespace":"urn:opendaylight:table:types","conformance-type":"import"},{"name":"forwarding-rules-manager-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/forwarding-rules-manager-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:forwardingrules-manager:config","conformance-type":"import"},{"name":"odl-srm-types_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-types?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:types","conformance-type":"import"},{"name":"ietf-x509-cert-to-name_2014-12-10","revision":"2014-12-10","schema":"/rests/modules/ietf-x509-cert-to-name?revision=2014-12-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-x509-cert-to-name","conformance-type":"import"},{"name":"flow-node-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-node-inventory?revision=2013-08-19","namespace":"urn:opendaylight:flow:inventory","conformance-type":"import"},{"name":"flow-errors_2013-11-16","revision":"2013-11-16","schema":"/rests/modules/flow-errors?revision=2013-11-16","namespace":"urn:opendaylight:flow:errors","conformance-type":"import"},{"name":"ietf-netconf_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:netconf:base:1.0","conformance-type":"import","feature":["xpath","url","rollback-on-error","validate","startup","candidate","confirmed-commit","writable-running"]},{"name":"iana-ssh-public-key-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-public-key-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-public-key-algs","conformance-type":"import"},{"name":"aaa-cert-mdsal_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/aaa-cert-mdsal?revision=2016-03-21","namespace":"urn:opendaylight:yang:aaa:cert:mdsal","conformance-type":"import"},{"name":"odl-device-notification_2024-02-18","revision":"2024-02-18","schema":"/rests/modules/odl-device-notification?revision=2024-02-18","namespace":"urn:opendaylight:device:notification","conformance-type":"import"},{"name":"ietf-origin_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-origin?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-origin","conformance-type":"import"},{"name":"openflow-augments_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-augments?revision=2015-02-25","namespace":"urn:opendaylight:openflow:augments","conformance-type":"import"},{"name":"iana-ssh-encryption-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-encryption-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-encryption-algs","conformance-type":"import"},{"name":"ietf-truststore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-truststore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-truststore","conformance-type":"import","feature":["inline-definitions-supported"]},{"name":"distributed-datastore-provider_2025-01-30","revision":"2025-01-30","schema":"/rests/modules/distributed-datastore-provider?revision=2025-01-30","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:distributed-datastore-provider","conformance-type":"import"},{"name":"opendaylight-group-types_2013-10-18","revision":"2013-10-18","schema":"/rests/modules/opendaylight-group-types?revision=2013-10-18","namespace":"urn:opendaylight:group:types","conformance-type":"import"},{"name":"sal-remote-augment_2023-11-03","revision":"2023-11-03","schema":"/rests/modules/sal-remote-augment?revision=2023-11-03","namespace":"urn:sal:restconf:event:subscription","conformance-type":"import"},{"name":"opendaylight-ipv6-arbitrary-bitmask-fields_2016-02-24","revision":"2016-02-24","schema":"/rests/modules/opendaylight-ipv6-arbitrary-bitmask-fields?revision=2016-02-24","namespace":"urn:opendaylight:opendaylight-ipv6-arbitrary-bitmask-fields","conformance-type":"import"},{"name":"sal-flows-batch_2016-03-14","revision":"2016-03-14","schema":"/rests/modules/sal-flows-batch?revision=2016-03-14","namespace":"urn:opendaylight:flows:service","conformance-type":"import"},{"name":"ietf-tls-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-common","conformance-type":"import","feature":["tls12","hello-params","tls13"]},{"name":"openflow-types_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-types?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:types","conformance-type":"import"},{"name":"ietf-netconf-with-defaults_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf-with-defaults?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults","conformance-type":"import"},{"name":"odl-srm-ops_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-ops?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:ops","conformance-type":"import"},{"name":"odl-general-entity_2015-09-30","revision":"2015-09-30","schema":"/rests/modules/odl-general-entity?revision=2015-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:mdsal:core:general-entity","conformance-type":"import"},{"name":"iana-ssh-key-exchange-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-key-exchange-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-key-exchange-algs","conformance-type":"import"},{"name":"node-ssl-connection-error_2019-07-23","revision":"2019-07-23","schema":"/rests/modules/node-ssl-connection-error?revision=2019-07-23","namespace":"urn:opendaylight:node-ssl-connection-error:service","conformance-type":"import"},{"name":"openflow-protocol_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-protocol?revision=2013-07-31","namespace":"urn:opendaylight:openflow:protocol","conformance-type":"import"},{"name":"ietf-udp-server_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-server?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-server","conformance-type":"import"},{"name":"ietf-keystore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-keystore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-keystore","conformance-type":"import","feature":["asymmetric-keys","inline-definitions-supported"]},{"name":"aaa_2016-12-14","revision":"2016-12-14","schema":"/rests/modules/aaa?revision=2016-12-14","namespace":"urn:opendaylight:params:xml:ns:yang:aaa","conformance-type":"import"},{"name":"aaa-cert-rpc_2015-12-15","revision":"2015-12-15","schema":"/rests/modules/aaa-cert-rpc?revision=2015-12-15","namespace":"urn:opendaylight:yang:aaa:cert:rpc","conformance-type":"import"},{"name":"system-notifications_2013-09-27","revision":"2013-09-27","schema":"/rests/modules/system-notifications?revision=2013-09-27","namespace":"urn:opendaylight:openflow:system","conformance-type":"import"},{"name":"sal-flat-batch_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/sal-flat-batch?revision=2016-03-21","namespace":"urn:opendaylight:flat-batch:service","conformance-type":"import"},{"name":"notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netconf:notification:1.0","conformance-type":"import"},{"name":"sal-remote_2014-01-14","revision":"2014-01-14","schema":"/rests/modules/sal-remote?revision=2014-01-14","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:remote","conformance-type":"import"},{"name":"yang-ext_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/yang-ext?revision=2013-07-09","namespace":"urn:opendaylight:yang:extension:yang-ext","conformance-type":"import"},{"name":"opendaylight-multipart-types_2017-01-12","revision":"2017-01-12","schema":"/rests/modules/opendaylight-multipart-types?revision=2017-01-12","namespace":"urn:opendaylight:multipart:types","conformance-type":"import"},{"name":"opendaylight-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-inventory?revision=2013-08-19","namespace":"urn:opendaylight:inventory","conformance-type":"import"},{"name":"sal-queue_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-queue?revision=2015-03-05","namespace":"urn:opendaylight:queue:service","conformance-type":"import"},{"name":"sal-groups-batch_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/sal-groups-batch?revision=2016-03-15","namespace":"urn:opendaylight:groups:service","conformance-type":"import"},{"name":"arbitrator-reconcile_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/arbitrator-reconcile?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:arbitrator-reconcile:service","conformance-type":"import"},{"name":"ietf-yang-metadata_2016-08-05","revision":"2016-08-05","schema":"/rests/modules/ietf-yang-metadata?revision=2016-08-05","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-metadata","conformance-type":"import"},{"name":"opendaylight-arbitrary-bitmask-fields_2016-01-30","revision":"2016-01-30","schema":"/rests/modules/opendaylight-arbitrary-bitmask-fields?revision=2016-01-30","namespace":"urn:opendaylight:arbitrary:bitmask:fields","conformance-type":"import"},{"name":"ietf-udp-client_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-client?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-client","conformance-type":"import","feature":["local-binding"]},{"name":"opendaylight-meter-types_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/opendaylight-meter-types?revision=2013-09-18","namespace":"urn:opendaylight:meter:types","conformance-type":"import"},{"name":"opendaylight-action-types_2013-11-12","revision":"2013-11-12","schema":"/rests/modules/opendaylight-action-types?revision=2013-11-12","namespace":"urn:opendaylight:action:types","conformance-type":"import"},{"name":"sal-role_2015-07-27","revision":"2015-07-27","schema":"/rests/modules/sal-role?revision=2015-07-27","namespace":"urn:opendaylight:role:service","conformance-type":"import"},{"name":"openflow-provider-config_2016-05-10","revision":"2016-05-10","schema":"/rests/modules/openflow-provider-config?revision=2016-05-10","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:provider:config","conformance-type":"import"},{"name":"odl-serviceutils-upgrade_2018-07-02","revision":"2018-07-02","schema":"/rests/modules/odl-serviceutils-upgrade?revision=2018-07-02","namespace":"urn:opendaylight:serviceutils:upgrade","conformance-type":"import"},{"name":"opendaylight-match-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-match-types?revision=2013-10-26","namespace":"urn:opendaylight:model:match:types","conformance-type":"import"},{"name":"ietf-restconf-server_2024-08-14","revision":"2024-08-14","schema":"/rests/modules/ietf-restconf-server?revision=2024-08-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-server","conformance-type":"import","feature":["http-listen","https-listen"]},{"name":"reconciliation-result-state_2017-07-13","revision":"2017-07-13","schema":"/rests/modules/reconciliation-result-state?revision=2017-07-13","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:rf:state","conformance-type":"import"},{"name":"onf-extensions_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/onf-extensions?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf","conformance-type":"import"},{"name":"sal-table_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/sal-table?revision=2013-10-26","namespace":"urn:opendaylight:table:service","conformance-type":"import"},{"name":"iana-http-versions_2026-02-04","revision":"2026-02-04","schema":"/rests/modules/iana-http-versions?revision=2026-02-04","namespace":"urn:ietf:params:xml:ns:yang:iana-http-versions","conformance-type":"import"},{"name":"opendaylight-direct-statistics_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/opendaylight-direct-statistics?revision=2016-05-11","namespace":"urn:opendaylight:direct:statistics","conformance-type":"import"},{"name":"opendaylight-port-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-port-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:port","conformance-type":"import"},{"name":"sal-async-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/sal-async-config?revision=2017-06-19","namespace":"urn:opendaylight:async-config:service","conformance-type":"import"},{"name":"aaa-password-service-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-password-service-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:password:service:config","conformance-type":"import"},{"name":"ietf-yang-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-yang-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-types","conformance-type":"import"},{"name":"opendaylight-queue-statistics_2013-12-16","revision":"2013-12-16","schema":"/rests/modules/opendaylight-queue-statistics?revision=2013-12-16","namespace":"urn:opendaylight:queue:statistics","conformance-type":"import"},{"name":"sal-bundle_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/sal-bundle?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf:bundle:service","conformance-type":"import"},{"name":"ietf-restconf-subscribed-notifications_2019-11-17","revision":"2019-11-17","schema":"/rests/modules/ietf-restconf-subscribed-notifications?revision=2019-11-17","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-subscribed-notifications","conformance-type":"import"},{"name":"sal-meters-batch_2016-03-16","revision":"2016-03-16","schema":"/rests/modules/sal-meters-batch?revision=2016-03-16","namespace":"urn:opendaylight:meters:service","conformance-type":"import"},{"name":"odl-entity-owners","revision":"","schema":"/rests/modules/odl-entity-owners","namespace":"urn:opendaylight:params:xml:ns:yang:controller:entity-owners","conformance-type":"import"},{"name":"sal-experimenter-mp-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-mp-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-mp-message:service","conformance-type":"import"},{"name":"packet-processing_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/packet-processing?revision=2013-07-09","namespace":"urn:opendaylight:packet:service","conformance-type":"import"},{"name":"openflow-configuration_2014-06-30","revision":"2014-06-30","schema":"/rests/modules/openflow-configuration?revision=2014-06-30","namespace":"urn:opendaylight:openflow:config","conformance-type":"import"},{"name":"odl-srm-rpcs_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-rpcs?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:rpc","conformance-type":"import"},{"name":"ietf-netconf-acm_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-netconf-acm?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-acm","conformance-type":"import"},{"name":"iana-crypt-hash_2014-08-06","revision":"2014-08-06","schema":"/rests/modules/iana-crypt-hash?revision=2014-08-06","namespace":"urn:ietf:params:xml:ns:yang:iana-crypt-hash","conformance-type":"import","feature":["crypt-hash-sha-512","crypt-hash-sha-256","crypt-hash-md5"]},{"name":"openflow-extensible-match_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-extensible-match?revision=2015-02-25","namespace":"urn:opendaylight:openflow:oxm","conformance-type":"import"}],"module-set-id":"2"}}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:46.646535" elapsed="0.002898"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:46.646307" elapsed="0.003163"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:46.646285" elapsed="0.003211"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:46.652043" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:46.649855" elapsed="0.002234"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:46.649578" elapsed="0.002544"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:46.649559" elapsed="0.002587"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:49:46.652761" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:49:46.652363" elapsed="0.000425"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:46.653117" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:46.652879" elapsed="0.000312"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:49:46.653683" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:49:46.653378" elapsed="0.000331"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:46.653215" elapsed="0.000584"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:46.652860" elapsed="0.000962"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:49:46.654428" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:49:46.654005" elapsed="0.000450"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:46.654777" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:46.654545" elapsed="0.000288"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:49:46.655328" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:49:46.655013" elapsed="0.000340"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:46.654857" elapsed="0.000535"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:46.654525" elapsed="0.000889"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:49:46.655584" elapsed="0.000387"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:49:46.656625" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:49:46.656310" elapsed="0.000341"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:49:46.656825" elapsed="0.002361"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:49:46.645522" elapsed="0.013788"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:49:46.659715" elapsed="0.000070"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:49:46.659443" elapsed="0.000409"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:46.659391" elapsed="0.000498"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:49:46.669100" level="INFO">${text_normalized} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:49:46.660620" elapsed="0.008550"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:49:46.669251" elapsed="0.000074"/>
</return>
<msg time="2026-04-08T00:49:46.669584" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:49:46.612632" elapsed="0.057061"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:49:46.670208" elapsed="0.000031"/>
</return>
<msg time="2026-04-08T00:49:46.670391" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="PASS" start="2026-04-08T00:49:46.466704" elapsed="0.203714"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Json_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:46.670745" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:46.670505" elapsed="0.000426"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:46.670487" elapsed="0.000470"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:49:46.670991" elapsed="0.000026"/>
</return>
<arg>session=${session}</arg>
<arg>folder=${RESTCONF_MODULES_DIR}</arg>
<arg>verify=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Add arguments sensible for JSON data, return Get_Templated response text.
Optionally, verification against JSON data (may be iterated) is called.
Only subset of JSON data is verified and returned if JMES path is specified in
file ${folder}/jmespath.expr.</doc>
<status status="PASS" start="2026-04-08T00:49:46.462674" elapsed="0.208445"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:46.458612" elapsed="0.212567"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:46.458595" elapsed="0.212610"/>
</if>
<kw name="Resolve_Shard_Type_Class" owner="ClusterManagement">
<if>
<branch type="IF" condition="'${shard_type}' == 'config'">
<return>
<value>DistributedConfigDatastore</value>
<status status="PASS" start="2026-04-08T00:49:46.671804" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-08T00:49:46.671698" elapsed="0.000165"/>
</branch>
<branch type="ELSE IF" condition="'${shard_type}' == 'operational'">
<return>
<value>DistributedOperationalDatastore</value>
<status status="NOT RUN" start="2026-04-08T00:49:46.671924" elapsed="0.000012"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:49:46.671886" elapsed="0.000076"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:46.671680" elapsed="0.000304"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized shard type: ${shard_type}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:46.672127" elapsed="0.000021"/>
</kw>
<msg time="2026-04-08T00:49:46.672271" level="INFO">${type_class} = DistributedConfigDatastore</msg>
<var>${type_class}</var>
<arg>shard_type=${shard_type}</arg>
<doc>Simple lookup for class name corresponding to desired type.</doc>
<status status="PASS" start="2026-04-08T00:49:46.671431" elapsed="0.000865"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:49:46.672829" level="INFO">${cluster_index} = 2</msg>
<var>${cluster_index}</var>
<arg>${member_index}+${NODE_ROLE_INDEX_START}-1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:49:46.672460" elapsed="0.000395"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:49:46.673491" level="INFO">${uri} = jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-default-config,type=DistributedConfigDatastore</msg>
<var>${uri}</var>
<arg>${JOLOKIA_READ_URI}:Category=Shards,name=member-${cluster_index}-shard-${shard_name}-${shard_type},type=${type_class}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:49:46.673006" elapsed="0.000512"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:46.679026" level="INFO">jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-default-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:46.678588" elapsed="0.000484"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:46.679673" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:46.679243" elapsed="0.000474"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:49:46.698338" level="INFO">GET Request : url=http://10.30.170.131:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-default-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-default-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:49:46.698494" level="INFO">GET Response : url=http://10.30.170.131:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-default-config,type=DistributedConfigDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Wed, 08 Apr 2026 00:49:46 GMT', 'Expires': 'Tue, 07 Apr 2026 23:49:46 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-2-shard-default-config,type=DistributedConfigDatastore","type":"read"},"value":{"ReadWriteTransactionCount":0,"SnapshotIndex":73,"InMemoryJournalLogSize":1,"ReplicatedToAllIndex":73,"Leader":"member-1-shard-default-config","LastIndex":74,"RaftState":"Follower","LastCommittedTransactionTime":"1970-01-01 00:00:00.000","LastApplied":74,"PeerAddresses":"member-1-shard-default-config: pekko:\/\/opendaylight-cluster-data@10.30.170.48:2550\/user\/shardmanager-config\/member-1-shard-default-config, member-3-shard-default-config: pekko:\/\/opendaylight-cluster-data@10.30.171.110:2550\/user\/shardmanager-config\/member-3-shard-default-config","LastLogIndex":74,"LastLeadershipChangeTime":"2026-04-08 00:46:45.946","FollowerInitialSyncStatus":true,"FollowerInfo":[],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"438.3 μs","CurrentTerm":2,"LastTerm":2,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-default-config","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":0,"TxCohortCacheSize":0,"PeerVotingStates":"member-1-shard-default-config: true, member-3-shard-default-config: true","LastLogTerm":2,"StatRetrievalError":null,"CommitIndex":74,"SnapshotTerm":2,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-2-shard-default-config","LeadershipChangeCount":1,"InMemoryJournalDataSize":10675},"timestamp":1775609386,"status":200} 
 </msg>
<msg time="2026-04-08T00:49:46.698703" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:49:46.690612" elapsed="0.008206"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:46.679784" elapsed="0.019315"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:46.699327" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:46.699132" elapsed="0.000544"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:46.679765" elapsed="0.019939"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:46.707114" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-2-shard-default-config,type=DistributedConfigDatastore","type":"read"},"value":{"ReadWriteTransactionCount":0,"SnapshotIndex":73,"InMemoryJournalLogSize":1,"ReplicatedToAllIndex":73,"Leader":"member-1-shard-default-config","LastIndex":74,"RaftState":"Follower","LastCommittedTransactionTime":"1970-01-01 00:00:00.000","LastApplied":74,"PeerAddresses":"member-1-shard-default-config: pekko:\/\/opendaylight-cluster-data@10.30.170.48:2550\/user\/shardmanager-config\/member-1-shard-default-config, member-3-shard-default-config: pekko:\/\/opendaylight-cluster-data@10.30.171.110:2550\/user\/shardmanager-config\/member-3-shard-default-config","LastLogIndex":74,"LastLeadershipChangeTime":"2026-04-08 00:46:45.946","FollowerInitialSyncStatus":true,"FollowerInfo":[],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"438.3 μs","CurrentTerm":2,"LastTerm":2,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-default-config","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":0,"TxCohortCacheSize":0,"PeerVotingStates":"member-1-shard-default-config: true, member-3-shard-default-config: true","LastLogTerm":2,"StatRetrievalError":null,"CommitIndex":74,"SnapshotTerm":2,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-2-shard-default-config","LeadershipChangeCount":1,"InMemoryJournalDataSize":10675},"timestamp":1775609386,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:46.702068" elapsed="0.005269"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:46.701187" elapsed="0.006226"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:46.701152" elapsed="0.006314"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:46.711609" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:46.708851" elapsed="0.002856"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:46.707579" elapsed="0.004178"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:46.707554" elapsed="0.004240"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:49:46.713245" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:49:46.712489" elapsed="0.000817"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:46.713952" elapsed="0.000035"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:46.713474" elapsed="0.000564"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:49:46.714921" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:49:46.714419" elapsed="0.000548"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:46.714075" elapsed="0.000942"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:46.713454" elapsed="0.001597"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:49:46.716504" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:49:46.715709" elapsed="0.000855"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:46.717201" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:46.716729" elapsed="0.000559"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:49:46.718186" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:49:46.717649" elapsed="0.000583"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:46.717326" elapsed="0.000956"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:46.716709" elapsed="0.001608"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:49:46.718556" elapsed="0.000662"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:49:46.720003" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:49:46.719521" elapsed="0.000541"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:49:46.720527" elapsed="0.002372"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:49:46.700439" elapsed="0.022619"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:49:46.723273" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:49:46.723130" elapsed="0.000189"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:46.723111" elapsed="0.000229"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:49:46.726937" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-2-shard-default-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 17756093...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:49:46.723484" elapsed="0.003483"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:49:46.727019" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:49:46.727193" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-2-shard-default-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 17756093...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:49:46.674529" elapsed="0.052692"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:49:46.727279" elapsed="0.000027"/>
</return>
<msg time="2026-04-08T00:49:46.727425" level="INFO">${data_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-2-shard-default-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 17756093...</msg>
<var>${data_text}</var>
<arg>uri=${uri}</arg>
<arg>session=${session}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-08T00:49:46.673727" elapsed="0.053724"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:49:46.728604" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-2-shard-default-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1775609386, 'value'...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:49:46.728007" elapsed="0.000626"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-08T00:49:46.728715" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:49:46.728891" level="INFO">${data_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-2-shard-default-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1775609386, 'value'...</msg>
<var>${data_object}</var>
<arg>${data_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-08T00:49:46.727670" elapsed="0.001248"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:49:46.729289" level="INFO">${value} = {'AbortTransactionsCount': 0, 'CommitIndex': 74, 'CommittedTransactionsCount': 0, 'CurrentTerm': 2, 'FailedReadTransactionsCount': 0, 'FailedTransactionsCount': 0, 'FollowerInfo': [], 'FollowerInitial...</msg>
<var>${value}</var>
<arg>${data_object}</arg>
<arg>value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:49:46.729072" elapsed="0.000244"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:49:46.729667" level="INFO">${raft_property} = Follower</msg>
<var>${raft_property}</var>
<arg>${value}</arg>
<arg>${property}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:49:46.729470" elapsed="0.000222"/>
</kw>
<return>
<value>${raft_property}</value>
<status status="PASS" start="2026-04-08T00:49:46.729739" elapsed="0.000027"/>
</return>
<msg time="2026-04-08T00:49:46.729902" level="INFO">${raft_state} = Follower</msg>
<var>${raft_state}</var>
<arg>RaftState</arg>
<arg>${shard_name}</arg>
<arg>${shard_type}</arg>
<arg>${member_index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft property.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T00:49:46.456878" elapsed="0.273053"/>
</kw>
<return>
<value>${raft_state}</value>
<status status="PASS" start="2026-04-08T00:49:46.729988" elapsed="0.000026"/>
</return>
<msg time="2026-04-08T00:49:46.730133" level="INFO">${raft_state} = Follower</msg>
<var>${raft_state}</var>
<arg>shard_name=${shard_name}</arg>
<arg>shard_type=${ds_type}</arg>
<arg>member_index=${index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft status.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T00:49:46.456167" elapsed="0.274004"/>
</kw>
<if>
<branch type="IF" condition="'Follower' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${follower_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-08T00:49:46.730466" elapsed="0.000187"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:46.730253" elapsed="0.000438"/>
</branch>
<branch type="ELSE IF" condition="'Leader' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${leader_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:46.730856" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:46.730715" elapsed="0.000194"/>
</branch>
<branch type="ELSE IF" condition="${validate}">
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized Raft state: ${raft_state}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:46.731070" elapsed="0.000019"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:46.730932" elapsed="0.000187"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:46.730235" elapsed="0.000905"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T00:49:46.455987" elapsed="0.275192"/>
</iter>
<iter>
<kw name="Get_Raft_State_Of_Shard_At_Member" owner="ClusterManagement">
<kw name="Get_Raft_Property_From_Shard_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:49:46.733542" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:49:46.733215" elapsed="0.000354"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:49:46.733615" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:49:46.733761" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:49:46.732859" elapsed="0.000927"/>
</kw>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Get_As_Json_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:49:46.815651" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:49:46.815277" elapsed="0.000403"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:49:46.816449" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:49:46.816188" elapsed="0.000337">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-08T00:49:46.816616" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:49:46.815842" elapsed="0.000798"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:49:46.817198" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:49:46.816801" elapsed="0.000425"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T00:49:46.817518" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-08T00:49:46.817666" level="INFO">${template} = /rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T00:49:46.817383" elapsed="0.000340"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:46.818139" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:46.817880" elapsed="0.000320"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:46.819123" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:46.818874" elapsed="0.000308"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-08T00:49:46.819614" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-08T00:49:46.819342" elapsed="0.000297"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:46.819965" elapsed="0.000021"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:46.820184" elapsed="0.000025"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:46.820359" elapsed="0.000020"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-08T00:49:46.819832" elapsed="0.000583"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-08T00:49:46.819692" elapsed="0.000752"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-08T00:49:46.820488" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:49:46.820645" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-08T00:49:46.818557" elapsed="0.002112"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:46.818270" elapsed="0.002430"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:46.820870" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:46.820724" elapsed="0.000200"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:46.818250" elapsed="0.002694"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:49:46.821527" level="INFO">${final_text} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:49:46.821084" elapsed="0.000470"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T00:49:46.821601" 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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="PASS" start="2026-04-08T00:49:46.814655" elapsed="0.007068"/>
</kw>
<msg time="2026-04-08T00:49:46.821776" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:49:46.802494" elapsed="0.019362"/>
</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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:46.834027" elapsed="0.000043"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:46.845974" elapsed="0.000075"/>
</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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:46.858206" elapsed="0.000042"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:46.858946" elapsed="0.000036"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:46.859685" elapsed="0.000036"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:46.860285" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:46.860123" elapsed="0.000219"/>
</branch>
<status status="NOT RUN" start="2026-04-08T00:49:46.860107" elapsed="0.000259"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:46.860530" elapsed="0.000021"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:46.860715" elapsed="0.000021"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:46.860898" elapsed="0.000021"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-08T00:49:46.860057" elapsed="0.000914"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-08T00:49:46.859835" elapsed="0.001175"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:46.861723" elapsed="0.000036"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-08T00:49:46.861841" elapsed="0.000048"/>
</return>
<msg time="2026-04-08T00:49:46.862092" level="INFO">${uri} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-08T00:49:46.796472" elapsed="0.065745"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:49:46.865007" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:49:46.864752" elapsed="0.000320">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-08T00:49:46.865284" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:49:46.864315" elapsed="0.001014"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:46.865845" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:46.865459" elapsed="0.000454"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:49:46.866530" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:49:46.866238" elapsed="0.000318"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:46.865951" elapsed="0.000650"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:46.865409" elapsed="0.001230"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:49:46.869720" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:49:46.867466" elapsed="0.002300"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-08T00:49:46.869842" elapsed="0.000062"/>
</return>
<msg time="2026-04-08T00:49:46.870344" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:49:46.863206" elapsed="0.007246"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:49:46.873175" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:49:46.872921" elapsed="0.000319">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-08T00:49:46.873426" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:49:46.872492" elapsed="0.000976"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-08T00:49:46.873842" elapsed="0.000076"/>
</return>
<status status="PASS" start="2026-04-08T00:49:46.873597" elapsed="0.000388"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:46.873547" elapsed="0.000500"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:46.874772" elapsed="0.000036"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:46.875580" elapsed="0.000036"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-08T00:49:46.875688" elapsed="0.000047"/>
</return>
<msg time="2026-04-08T00:49:46.877830" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:49:46.871412" elapsed="0.006523"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:46.881733" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:46.881351" elapsed="0.000479"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:46.882928" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:46.882543" elapsed="0.000482"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:49:46.905732" level="INFO">GET Request : url=http://10.30.171.110:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 path_url=/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node09orwbuy1e81xg3wze7ww55ua0.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:49:46.906777" level="INFO">GET Response : url=http://10.30.171.110:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Transfer-Encoding': 'chunked'} 
 body={"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","hidden-symmetric-keys","encrypted-private-keys","asymmetrically-encrypted-value-format","cms-encrypted-data-format","cleartext-private-keys","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["ssh-client-keepalives","client-ident-hostbased","client-ident-publickey","client-ident-password"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-ex... (set the log level to DEBUG or TRACE to see the full content) 
 </msg>
<msg time="2026-04-08T00:49:46.907280" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:49:46.885358" elapsed="0.021989"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:46.883149" elapsed="0.024333"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:46.908222" elapsed="0.000060"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:46.907586" elapsed="0.000824"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:46.883099" elapsed="0.025399"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:46.915324" level="INFO">{"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","hidden-symmetric-keys","encrypted-private-keys","asymmetrically-encrypted-value-format","cms-encrypted-data-format","cleartext-private-keys","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["ssh-client-keepalives","client-ident-hostbased","client-ident-publickey","client-ident-password"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-experimenter-types?revision=2015-10-20","namespace":"urn:opendaylight:openflowplugin:experimenter:types","conformance-type":"import"},{"name":"ietf-ip_2018-02-22","revision":"2018-02-22","schema":"/rests/modules/ietf-ip?revision=2018-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-ip","conformance-type":"import","feature":["ipv6-privacy-autoconf","ipv4-non-contiguous-netmasks"]},{"name":"ietf-tcp-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-client","conformance-type":"import","feature":["local-binding-supported","tcp-client-keepalives"]},{"name":"node-config_2014-10-15","revision":"2014-10-15","schema":"/rests/modules/node-config?revision=2014-10-15","namespace":"urn:opendaylight:module:config","conformance-type":"import"},{"name":"ietf-restconf_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf","conformance-type":"import"},{"name":"ietf-datastores_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-datastores?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-datastores","conformance-type":"import"},{"name":"ietf-yang-patch_2017-02-22","revision":"2017-02-22","schema":"/rests/modules/ietf-yang-patch?revision=2017-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-patch","conformance-type":"import"},{"name":"sal-group_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-group?revision=2013-09-18","namespace":"urn:opendaylight:group:service","conformance-type":"import"},{"name":"odl-codegen-extensions_2024-06-27","revision":"2024-06-27","schema":"/rests/modules/odl-codegen-extensions?revision=2024-06-27","namespace":"urn:opendaylight:yang:extension:codegen","conformance-type":"import"},{"name":"sal-meter_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-meter?revision=2013-09-18","namespace":"urn:opendaylight:meter:service","conformance-type":"import"},{"name":"ietf-interfaces_2018-02-20","revision":"2018-02-20","schema":"/rests/modules/ietf-interfaces?revision=2018-02-20","namespace":"urn:ietf:params:xml:ns:yang:ietf-interfaces","conformance-type":"import","feature":["pre-provisioning","if-mib","arbitrary-names"]},{"name":"opendaylight-l2-types_2013-08-27","revision":"2013-08-27","schema":"/rests/modules/opendaylight-l2-types?revision=2013-08-27","namespace":"urn:opendaylight:l2:types","conformance-type":"import"},{"name":"opendaylight-flow-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-flow-types?revision=2013-10-26","namespace":"urn:opendaylight:flow:types","conformance-type":"import"},{"name":"lldp-speaker-config_2016-05-12","revision":"2016-05-12","schema":"/rests/modules/lldp-speaker-config?revision=2016-05-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker:config","conformance-type":"import"},{"name":"aaa-cert_2015-11-26","revision":"2015-11-26","schema":"/rests/modules/aaa-cert?revision=2015-11-26","namespace":"urn:opendaylight:yang:aaa:cert","conformance-type":"import"},{"name":"openflow-action_2015-02-03","revision":"2015-02-03","schema":"/rests/modules/openflow-action?revision=2015-02-03","namespace":"urn:opendaylight:openflow:common:action","conformance-type":"import"},{"name":"openflow-approved-extensions_2016-08-02","revision":"2016-08-02","schema":"/rests/modules/openflow-approved-extensions?revision=2016-08-02","namespace":"urn:opendaylight:openflow:approved:extensions","conformance-type":"import"},{"name":"nc-notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/nc-notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netmod:notification","conformance-type":"import"},{"name":"ietf-netconf-nmda_2019-01-07","revision":"2019-01-07","schema":"/rests/modules/ietf-netconf-nmda?revision=2019-01-07","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-nmda","conformance-type":"import","feature":["with-defaults","origin"]},{"name":"ietf-tcp-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-common","conformance-type":"import","feature":["keepalives-supported"]},{"name":"network-topology_2013-10-21","revision":"2013-10-21","schema":"/rests/modules/network-topology?revision=2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:network-topology","conformance-type":"import"},{"name":"aaa-encrypt-service-config_2024-02-02","revision":"2024-02-02","schema":"/rests/modules/aaa-encrypt-service-config?revision=2024-02-02","namespace":"config:aaa:authn:encrypt:service:config","conformance-type":"import"},{"name":"openflow-instruction_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-instruction?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:instruction","conformance-type":"import"},{"name":"ietf-tls-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-client","conformance-type":"import","feature":["client-ident-x509-cert","server-auth-x509-cert"]},{"name":"opendaylight-group-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-group-statistics?revision=2013-11-11","namespace":"urn:opendaylight:group:statistics","conformance-type":"import"},{"name":"cluster-admin_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/cluster-admin?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:cluster:admin","conformance-type":"import"},{"name":"opendaylight-flow-statistics_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-flow-statistics?revision=2013-08-19","namespace":"urn:opendaylight:flow:statistics","conformance-type":"import"},{"name":"opendaylight-table-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-table-types?revision=2013-10-26","namespace":"urn:opendaylight:table:types","conformance-type":"import"},{"name":"forwarding-rules-manager-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/forwarding-rules-manager-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:forwardingrules-manager:config","conformance-type":"import"},{"name":"odl-srm-types_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-types?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:types","conformance-type":"import"},{"name":"ietf-x509-cert-to-name_2014-12-10","revision":"2014-12-10","schema":"/rests/modules/ietf-x509-cert-to-name?revision=2014-12-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-x509-cert-to-name","conformance-type":"import"},{"name":"flow-node-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-node-inventory?revision=2013-08-19","namespace":"urn:opendaylight:flow:inventory","conformance-type":"import"},{"name":"flow-errors_2013-11-16","revision":"2013-11-16","schema":"/rests/modules/flow-errors?revision=2013-11-16","namespace":"urn:opendaylight:flow:errors","conformance-type":"import"},{"name":"ietf-netconf_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:netconf:base:1.0","conformance-type":"import","feature":["xpath","url","rollback-on-error","validate","startup","candidate","confirmed-commit","writable-running"]},{"name":"iana-ssh-public-key-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-public-key-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-public-key-algs","conformance-type":"import"},{"name":"aaa-cert-mdsal_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/aaa-cert-mdsal?revision=2016-03-21","namespace":"urn:opendaylight:yang:aaa:cert:mdsal","conformance-type":"import"},{"name":"odl-device-notification_2024-02-18","revision":"2024-02-18","schema":"/rests/modules/odl-device-notification?revision=2024-02-18","namespace":"urn:opendaylight:device:notification","conformance-type":"import"},{"name":"ietf-origin_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-origin?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-origin","conformance-type":"import"},{"name":"openflow-augments_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-augments?revision=2015-02-25","namespace":"urn:opendaylight:openflow:augments","conformance-type":"import"},{"name":"iana-ssh-encryption-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-encryption-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-encryption-algs","conformance-type":"import"},{"name":"ietf-truststore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-truststore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-truststore","conformance-type":"import","feature":["inline-definitions-supported"]},{"name":"distributed-datastore-provider_2025-01-30","revision":"2025-01-30","schema":"/rests/modules/distributed-datastore-provider?revision=2025-01-30","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:distributed-datastore-provider","conformance-type":"import"},{"name":"opendaylight-group-types_2013-10-18","revision":"2013-10-18","schema":"/rests/modules/opendaylight-group-types?revision=2013-10-18","namespace":"urn:opendaylight:group:types","conformance-type":"import"},{"name":"sal-remote-augment_2023-11-03","revision":"2023-11-03","schema":"/rests/modules/sal-remote-augment?revision=2023-11-03","namespace":"urn:sal:restconf:event:subscription","conformance-type":"import"},{"name":"opendaylight-ipv6-arbitrary-bitmask-fields_2016-02-24","revision":"2016-02-24","schema":"/rests/modules/opendaylight-ipv6-arbitrary-bitmask-fields?revision=2016-02-24","namespace":"urn:opendaylight:opendaylight-ipv6-arbitrary-bitmask-fields","conformance-type":"import"},{"name":"sal-flows-batch_2016-03-14","revision":"2016-03-14","schema":"/rests/modules/sal-flows-batch?revision=2016-03-14","namespace":"urn:opendaylight:flows:service","conformance-type":"import"},{"name":"ietf-tls-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-common","conformance-type":"import","feature":["tls12","hello-params","tls13"]},{"name":"openflow-types_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-types?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:types","conformance-type":"import"},{"name":"ietf-netconf-with-defaults_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf-with-defaults?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults","conformance-type":"import"},{"name":"odl-srm-ops_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-ops?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:ops","conformance-type":"import"},{"name":"odl-general-entity_2015-09-30","revision":"2015-09-30","schema":"/rests/modules/odl-general-entity?revision=2015-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:mdsal:core:general-entity","conformance-type":"import"},{"name":"iana-ssh-key-exchange-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-key-exchange-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-key-exchange-algs","conformance-type":"import"},{"name":"node-ssl-connection-error_2019-07-23","revision":"2019-07-23","schema":"/rests/modules/node-ssl-connection-error?revision=2019-07-23","namespace":"urn:opendaylight:node-ssl-connection-error:service","conformance-type":"import"},{"name":"openflow-protocol_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-protocol?revision=2013-07-31","namespace":"urn:opendaylight:openflow:protocol","conformance-type":"import"},{"name":"ietf-udp-server_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-server?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-server","conformance-type":"import"},{"name":"ietf-keystore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-keystore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-keystore","conformance-type":"import","feature":["asymmetric-keys","inline-definitions-supported"]},{"name":"aaa_2016-12-14","revision":"2016-12-14","schema":"/rests/modules/aaa?revision=2016-12-14","namespace":"urn:opendaylight:params:xml:ns:yang:aaa","conformance-type":"import"},{"name":"aaa-cert-rpc_2015-12-15","revision":"2015-12-15","schema":"/rests/modules/aaa-cert-rpc?revision=2015-12-15","namespace":"urn:opendaylight:yang:aaa:cert:rpc","conformance-type":"import"},{"name":"system-notifications_2013-09-27","revision":"2013-09-27","schema":"/rests/modules/system-notifications?revision=2013-09-27","namespace":"urn:opendaylight:openflow:system","conformance-type":"import"},{"name":"sal-flat-batch_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/sal-flat-batch?revision=2016-03-21","namespace":"urn:opendaylight:flat-batch:service","conformance-type":"import"},{"name":"notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netconf:notification:1.0","conformance-type":"import"},{"name":"sal-remote_2014-01-14","revision":"2014-01-14","schema":"/rests/modules/sal-remote?revision=2014-01-14","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:remote","conformance-type":"import"},{"name":"yang-ext_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/yang-ext?revision=2013-07-09","namespace":"urn:opendaylight:yang:extension:yang-ext","conformance-type":"import"},{"name":"opendaylight-multipart-types_2017-01-12","revision":"2017-01-12","schema":"/rests/modules/opendaylight-multipart-types?revision=2017-01-12","namespace":"urn:opendaylight:multipart:types","conformance-type":"import"},{"name":"opendaylight-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-inventory?revision=2013-08-19","namespace":"urn:opendaylight:inventory","conformance-type":"import"},{"name":"sal-queue_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-queue?revision=2015-03-05","namespace":"urn:opendaylight:queue:service","conformance-type":"import"},{"name":"sal-groups-batch_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/sal-groups-batch?revision=2016-03-15","namespace":"urn:opendaylight:groups:service","conformance-type":"import"},{"name":"arbitrator-reconcile_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/arbitrator-reconcile?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:arbitrator-reconcile:service","conformance-type":"import"},{"name":"ietf-yang-metadata_2016-08-05","revision":"2016-08-05","schema":"/rests/modules/ietf-yang-metadata?revision=2016-08-05","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-metadata","conformance-type":"import"},{"name":"opendaylight-arbitrary-bitmask-fields_2016-01-30","revision":"2016-01-30","schema":"/rests/modules/opendaylight-arbitrary-bitmask-fields?revision=2016-01-30","namespace":"urn:opendaylight:arbitrary:bitmask:fields","conformance-type":"import"},{"name":"ietf-udp-client_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-client?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-client","conformance-type":"import","feature":["local-binding"]},{"name":"opendaylight-meter-types_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/opendaylight-meter-types?revision=2013-09-18","namespace":"urn:opendaylight:meter:types","conformance-type":"import"},{"name":"opendaylight-action-types_2013-11-12","revision":"2013-11-12","schema":"/rests/modules/opendaylight-action-types?revision=2013-11-12","namespace":"urn:opendaylight:action:types","conformance-type":"import"},{"name":"sal-role_2015-07-27","revision":"2015-07-27","schema":"/rests/modules/sal-role?revision=2015-07-27","namespace":"urn:opendaylight:role:service","conformance-type":"import"},{"name":"openflow-provider-config_2016-05-10","revision":"2016-05-10","schema":"/rests/modules/openflow-provider-config?revision=2016-05-10","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:provider:config","conformance-type":"import"},{"name":"odl-serviceutils-upgrade_2018-07-02","revision":"2018-07-02","schema":"/rests/modules/odl-serviceutils-upgrade?revision=2018-07-02","namespace":"urn:opendaylight:serviceutils:upgrade","conformance-type":"import"},{"name":"opendaylight-match-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-match-types?revision=2013-10-26","namespace":"urn:opendaylight:model:match:types","conformance-type":"import"},{"name":"ietf-restconf-server_2024-08-14","revision":"2024-08-14","schema":"/rests/modules/ietf-restconf-server?revision=2024-08-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-server","conformance-type":"import","feature":["http-listen","https-listen"]},{"name":"reconciliation-result-state_2017-07-13","revision":"2017-07-13","schema":"/rests/modules/reconciliation-result-state?revision=2017-07-13","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:rf:state","conformance-type":"import"},{"name":"onf-extensions_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/onf-extensions?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf","conformance-type":"import"},{"name":"sal-table_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/sal-table?revision=2013-10-26","namespace":"urn:opendaylight:table:service","conformance-type":"import"},{"name":"iana-http-versions_2026-02-04","revision":"2026-02-04","schema":"/rests/modules/iana-http-versions?revision=2026-02-04","namespace":"urn:ietf:params:xml:ns:yang:iana-http-versions","conformance-type":"import"},{"name":"opendaylight-direct-statistics_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/opendaylight-direct-statistics?revision=2016-05-11","namespace":"urn:opendaylight:direct:statistics","conformance-type":"import"},{"name":"opendaylight-port-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-port-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:port","conformance-type":"import"},{"name":"sal-async-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/sal-async-config?revision=2017-06-19","namespace":"urn:opendaylight:async-config:service","conformance-type":"import"},{"name":"aaa-password-service-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-password-service-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:password:service:config","conformance-type":"import"},{"name":"ietf-yang-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-yang-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-types","conformance-type":"import"},{"name":"opendaylight-queue-statistics_2013-12-16","revision":"2013-12-16","schema":"/rests/modules/opendaylight-queue-statistics?revision=2013-12-16","namespace":"urn:opendaylight:queue:statistics","conformance-type":"import"},{"name":"sal-bundle_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/sal-bundle?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf:bundle:service","conformance-type":"import"},{"name":"ietf-restconf-subscribed-notifications_2019-11-17","revision":"2019-11-17","schema":"/rests/modules/ietf-restconf-subscribed-notifications?revision=2019-11-17","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-subscribed-notifications","conformance-type":"import"},{"name":"sal-meters-batch_2016-03-16","revision":"2016-03-16","schema":"/rests/modules/sal-meters-batch?revision=2016-03-16","namespace":"urn:opendaylight:meters:service","conformance-type":"import"},{"name":"odl-entity-owners","revision":"","schema":"/rests/modules/odl-entity-owners","namespace":"urn:opendaylight:params:xml:ns:yang:controller:entity-owners","conformance-type":"import"},{"name":"sal-experimenter-mp-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-mp-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-mp-message:service","conformance-type":"import"},{"name":"packet-processing_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/packet-processing?revision=2013-07-09","namespace":"urn:opendaylight:packet:service","conformance-type":"import"},{"name":"openflow-configuration_2014-06-30","revision":"2014-06-30","schema":"/rests/modules/openflow-configuration?revision=2014-06-30","namespace":"urn:opendaylight:openflow:config","conformance-type":"import"},{"name":"odl-srm-rpcs_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-rpcs?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:rpc","conformance-type":"import"},{"name":"ietf-netconf-acm_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-netconf-acm?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-acm","conformance-type":"import"},{"name":"iana-crypt-hash_2014-08-06","revision":"2014-08-06","schema":"/rests/modules/iana-crypt-hash?revision=2014-08-06","namespace":"urn:ietf:params:xml:ns:yang:iana-crypt-hash","conformance-type":"import","feature":["crypt-hash-sha-512","crypt-hash-sha-256","crypt-hash-md5"]},{"name":"openflow-extensible-match_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-extensible-match?revision=2015-02-25","namespace":"urn:opendaylight:openflow:oxm","conformance-type":"import"}],"module-set-id":"2"}}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:46.911734" elapsed="0.004033"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:46.911420" elapsed="0.004397"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:46.911387" elapsed="0.004465"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:46.919102" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:46.916295" elapsed="0.002854"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:46.915964" elapsed="0.003238"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:46.915938" elapsed="0.003289"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:49:46.919790" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:49:46.919412" elapsed="0.000405"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:46.920145" elapsed="0.000038"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:46.919908" elapsed="0.000312"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:49:46.920713" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:49:46.920409" elapsed="0.000329"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:46.920244" elapsed="0.000530"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:46.919888" elapsed="0.000907"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:49:46.921372" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:49:46.920972" elapsed="0.000427"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:46.921723" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:46.921490" elapsed="0.000290"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:49:46.922305" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:49:46.921959" elapsed="0.000372"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:46.921803" elapsed="0.000563"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:46.921470" elapsed="0.000917"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:49:46.922557" elapsed="0.000346"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:49:46.923394" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:49:46.923087" elapsed="0.000333"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:49:46.923595" elapsed="0.002164"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:49:46.910365" elapsed="0.015526"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:49:46.926289" elapsed="0.000048"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:49:46.926020" elapsed="0.000381"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:46.925969" elapsed="0.000468"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:49:46.935472" level="INFO">${text_normalized} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:49:46.927149" elapsed="0.008372"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:49:46.935598" elapsed="0.000064"/>
</return>
<msg time="2026-04-08T00:49:46.935918" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:49:46.878625" elapsed="0.057400"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:49:46.936504" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:49:46.936683" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="PASS" start="2026-04-08T00:49:46.741965" elapsed="0.194745"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Json_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:46.937032" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:46.936793" elapsed="0.000506"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:46.936776" elapsed="0.000554"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:49:46.937367" elapsed="0.000027"/>
</return>
<arg>session=${session}</arg>
<arg>folder=${RESTCONF_MODULES_DIR}</arg>
<arg>verify=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Add arguments sensible for JSON data, return Get_Templated response text.
Optionally, verification against JSON data (may be iterated) is called.
Only subset of JSON data is verified and returned if JMES path is specified in
file ${folder}/jmespath.expr.</doc>
<status status="PASS" start="2026-04-08T00:49:46.737900" elapsed="0.199595"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:46.733876" elapsed="0.203663"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:46.733857" elapsed="0.203706"/>
</if>
<kw name="Resolve_Shard_Type_Class" owner="ClusterManagement">
<if>
<branch type="IF" condition="'${shard_type}' == 'config'">
<return>
<value>DistributedConfigDatastore</value>
<status status="PASS" start="2026-04-08T00:49:46.938191" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-08T00:49:46.938054" elapsed="0.000198"/>
</branch>
<branch type="ELSE IF" condition="'${shard_type}' == 'operational'">
<return>
<value>DistributedOperationalDatastore</value>
<status status="NOT RUN" start="2026-04-08T00:49:46.938312" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:49:46.938275" elapsed="0.000076"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:46.938036" elapsed="0.000337"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized shard type: ${shard_type}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:46.938519" elapsed="0.000022"/>
</kw>
<msg time="2026-04-08T00:49:46.938639" level="INFO">${type_class} = DistributedConfigDatastore</msg>
<var>${type_class}</var>
<arg>shard_type=${shard_type}</arg>
<doc>Simple lookup for class name corresponding to desired type.</doc>
<status status="PASS" start="2026-04-08T00:49:46.937789" elapsed="0.000875"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:49:46.939217" level="INFO">${cluster_index} = 3</msg>
<var>${cluster_index}</var>
<arg>${member_index}+${NODE_ROLE_INDEX_START}-1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:49:46.938831" elapsed="0.000413"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:49:46.939862" level="INFO">${uri} = jolokia/read/org.opendaylight.controller:Category=Shards,name=member-3-shard-default-config,type=DistributedConfigDatastore</msg>
<var>${uri}</var>
<arg>${JOLOKIA_READ_URI}:Category=Shards,name=member-${cluster_index}-shard-${shard_name}-${shard_type},type=${type_class}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:49:46.939403" elapsed="0.000485"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:46.945443" level="INFO">jolokia/read/org.opendaylight.controller:Category=Shards,name=member-3-shard-default-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:46.944923" elapsed="0.000567"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:46.946073" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:46.945645" elapsed="0.000494"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:49:46.964697" level="INFO">GET Request : url=http://10.30.171.110:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-3-shard-default-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-3-shard-default-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:49:46.964832" level="INFO">GET Response : url=http://10.30.171.110:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-3-shard-default-config,type=DistributedConfigDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Wed, 08 Apr 2026 00:49:46 GMT', 'Expires': 'Tue, 07 Apr 2026 23:49:46 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-3-shard-default-config,type=DistributedConfigDatastore","type":"read"},"value":{"ReadWriteTransactionCount":0,"SnapshotIndex":73,"InMemoryJournalLogSize":1,"ReplicatedToAllIndex":73,"Leader":"member-1-shard-default-config","LastIndex":74,"RaftState":"Follower","LastApplied":74,"LastCommittedTransactionTime":"1970-01-01 00:00:00.000","PeerAddresses":"member-1-shard-default-config: pekko:\/\/opendaylight-cluster-data@10.30.170.48:2550\/user\/shardmanager-config\/member-1-shard-default-config, member-2-shard-default-config: pekko:\/\/opendaylight-cluster-data@10.30.170.131:2550\/user\/shardmanager-config\/member-2-shard-default-config","LastLogIndex":74,"LastLeadershipChangeTime":"2026-04-08 00:46:45.933","FollowerInitialSyncStatus":true,"FollowerInfo":[],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"533.8 μs","CurrentTerm":2,"LastTerm":2,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-default-config","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":0,"TxCohortCacheSize":0,"PeerVotingStates":"member-1-shard-default-config: true, member-2-shard-default-config: true","LastLogTerm":2,"StatRetrievalError":null,"CommitIndex":74,"SnapshotTerm":2,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-3-shard-default-config","LeadershipChangeCount":1,"InMemoryJournalDataSize":10675},"timestamp":1775609386,"status":200} 
 </msg>
<msg time="2026-04-08T00:49:46.965020" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:49:46.956615" elapsed="0.008509"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:46.946224" elapsed="0.019340"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:46.965760" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:46.965595" elapsed="0.000478"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:46.946205" elapsed="0.019894"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:46.972428" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-3-shard-default-config,type=DistributedConfigDatastore","type":"read"},"value":{"ReadWriteTransactionCount":0,"SnapshotIndex":73,"InMemoryJournalLogSize":1,"ReplicatedToAllIndex":73,"Leader":"member-1-shard-default-config","LastIndex":74,"RaftState":"Follower","LastApplied":74,"LastCommittedTransactionTime":"1970-01-01 00:00:00.000","PeerAddresses":"member-1-shard-default-config: pekko:\/\/opendaylight-cluster-data@10.30.170.48:2550\/user\/shardmanager-config\/member-1-shard-default-config, member-2-shard-default-config: pekko:\/\/opendaylight-cluster-data@10.30.170.131:2550\/user\/shardmanager-config\/member-2-shard-default-config","LastLogIndex":74,"LastLeadershipChangeTime":"2026-04-08 00:46:45.933","FollowerInitialSyncStatus":true,"FollowerInfo":[],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"533.8 μs","CurrentTerm":2,"LastTerm":2,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-default-config","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":0,"TxCohortCacheSize":0,"PeerVotingStates":"member-1-shard-default-config: true, member-2-shard-default-config: true","LastLogTerm":2,"StatRetrievalError":null,"CommitIndex":74,"SnapshotTerm":2,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-3-shard-default-config","LeadershipChangeCount":1,"InMemoryJournalDataSize":10675},"timestamp":1775609386,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:46.968882" elapsed="0.003765"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:46.967703" elapsed="0.005016"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:46.967676" elapsed="0.005098"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:46.976670" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:46.974131" elapsed="0.002638"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:46.972890" elapsed="0.003928"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:46.972865" elapsed="0.003991"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:49:46.978384" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:49:46.977600" elapsed="0.000845"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:46.979081" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:46.978613" elapsed="0.000570"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:49:46.980066" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:49:46.979556" elapsed="0.000558"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:46.979224" elapsed="0.000956"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:46.978592" elapsed="0.001633"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:49:46.981624" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:49:46.980842" elapsed="0.000844"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:46.982402" elapsed="0.000041"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:46.981853" elapsed="0.000641"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:49:46.983393" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:49:46.982859" elapsed="0.000580"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:46.982532" elapsed="0.000957"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:46.981833" elapsed="0.001690"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:49:46.983746" elapsed="0.000636"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:49:46.985243" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:49:46.984698" elapsed="0.000607"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:49:46.985589" elapsed="0.002326"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:49:46.966741" elapsed="0.021336"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:49:46.988293" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:49:46.988150" elapsed="0.000189"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:46.988131" elapsed="0.000230"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:49:46.991998" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-3-shard-default-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 17756093...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:49:46.988507" elapsed="0.003520"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:49:46.992078" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:49:46.992252" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-3-shard-default-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 17756093...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:49:46.940830" elapsed="0.051449"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:49:46.992337" elapsed="0.000026"/>
</return>
<msg time="2026-04-08T00:49:46.992483" level="INFO">${data_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-3-shard-default-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 17756093...</msg>
<var>${data_text}</var>
<arg>uri=${uri}</arg>
<arg>session=${session}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-08T00:49:46.940096" elapsed="0.052412"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:49:46.993655" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-3-shard-default-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1775609386, 'value'...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:49:46.993078" elapsed="0.000606"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-08T00:49:46.993768" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:49:46.993945" level="INFO">${data_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-3-shard-default-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1775609386, 'value'...</msg>
<var>${data_object}</var>
<arg>${data_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-08T00:49:46.992736" elapsed="0.001235"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:49:46.994361" level="INFO">${value} = {'AbortTransactionsCount': 0, 'CommitIndex': 74, 'CommittedTransactionsCount': 0, 'CurrentTerm': 2, 'FailedReadTransactionsCount': 0, 'FailedTransactionsCount': 0, 'FollowerInfo': [], 'FollowerInitial...</msg>
<var>${value}</var>
<arg>${data_object}</arg>
<arg>value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:49:46.994126" elapsed="0.000263"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:49:46.994745" level="INFO">${raft_property} = Follower</msg>
<var>${raft_property}</var>
<arg>${value}</arg>
<arg>${property}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:49:46.994545" elapsed="0.000225"/>
</kw>
<return>
<value>${raft_property}</value>
<status status="PASS" start="2026-04-08T00:49:46.994816" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:49:46.994965" level="INFO">${raft_state} = Follower</msg>
<var>${raft_state}</var>
<arg>RaftState</arg>
<arg>${shard_name}</arg>
<arg>${shard_type}</arg>
<arg>${member_index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft property.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T00:49:46.732263" elapsed="0.262726"/>
</kw>
<return>
<value>${raft_state}</value>
<status status="PASS" start="2026-04-08T00:49:46.995045" elapsed="0.000026"/>
</return>
<msg time="2026-04-08T00:49:46.995207" level="INFO">${raft_state} = Follower</msg>
<var>${raft_state}</var>
<arg>shard_name=${shard_name}</arg>
<arg>shard_type=${ds_type}</arg>
<arg>member_index=${index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft status.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T00:49:46.731514" elapsed="0.263719"/>
</kw>
<if>
<branch type="IF" condition="'Follower' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${follower_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-08T00:49:46.995531" elapsed="0.000190"/>
</kw>
<status status="PASS" start="2026-04-08T00:49:46.995314" elapsed="0.000445"/>
</branch>
<branch type="ELSE IF" condition="'Leader' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${leader_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:46.995926" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:46.995783" elapsed="0.000196"/>
</branch>
<branch type="ELSE IF" condition="${validate}">
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized Raft state: ${raft_state}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:46.996142" elapsed="0.000034"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:46.996002" elapsed="0.000207"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:46.995296" elapsed="0.000935"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T00:49:46.731343" elapsed="0.264912"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-08T00:49:46.190225" elapsed="0.806066"/>
</for>
<return>
<value>${leader_list}</value>
<value>${follower_list}</value>
<status status="PASS" start="2026-04-08T00:49:46.996334" elapsed="0.000026"/>
</return>
<msg time="2026-04-08T00:49:46.996536" level="INFO">${leader_list} = [1]</msg>
<msg time="2026-04-08T00:49:46.996581" level="INFO">${follower_list} = [2, 3]</msg>
<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="PASS" start="2026-04-08T00:49:46.186088" elapsed="0.810517"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T00:49:46.997045" level="INFO">Length is 1.</msg>
<msg time="2026-04-08T00:49:46.997118" level="INFO">${leader_count} = 1</msg>
<var>${leader_count}</var>
<arg>${leader_list}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T00:49:46.996779" elapsed="0.000362"/>
</kw>
<if>
<branch type="IF" condition="${leader_count} &lt; 1">
<kw name="Fail" owner="BuiltIn">
<arg>No leader found.</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:46.997485" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:46.997270" elapsed="0.000267"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:46.997252" elapsed="0.000308"/>
</if>
<kw name="Length Should Be" owner="BuiltIn">
<msg time="2026-04-08T00:49:46.999673" level="INFO">Length is 1.</msg>
<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="PASS" start="2026-04-08T00:49:46.997694" elapsed="0.002025"/>
</kw>
<kw name="Get From List" owner="Collections">
<msg time="2026-04-08T00:49:47.000069" level="INFO">${leader} = 1</msg>
<var>${leader}</var>
<arg>${leader_list}</arg>
<arg>0</arg>
<doc>Returns the value specified with an ``index`` from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:49:46.999886" elapsed="0.000208"/>
</kw>
<return>
<value>${leader}</value>
<value>${follower_list}</value>
<status status="PASS" start="2026-04-08T00:49:47.000140" elapsed="0.000101"/>
</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="PASS" start="2026-04-08T00:49:46.183339" elapsed="0.817033"/>
</kw>
<var name="${shard_name}">default</var>
<status status="PASS" start="2026-04-08T00:49:46.183020" elapsed="0.817400"/>
</iter>
<var>${shard_name}</var>
<value>@{shard_name_list}</value>
<status status="PASS" start="2026-04-08T00:49:44.528928" elapsed="2.471524"/>
</for>
<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="PASS" start="2026-04-08T00:49:44.528519" elapsed="2.471989"/>
</kw>
<doc>Check Status for all shards in OpenFlow application.</doc>
<status status="PASS" start="2026-04-08T00:49:39.083915" elapsed="7.916694"/>
</kw>
<doc>Check Status for all shards in OpenFlow application.</doc>
<status status="PASS" start="2026-04-08T00:49:39.082962" elapsed="7.917784"/>
</test>
<test id="s1-s1-t2" name="Start Mininet Multiple Connections" line="20">
<kw name="Start Mininet Multiple Controllers" owner="MininetKeywords">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:49:47.009176" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:49:47.008785" elapsed="0.000419"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:49:47.009665" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:49:47.009363" elapsed="0.000328"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:49:47.009735" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:49:47.009886" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${controller_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:49:47.008412" elapsed="0.001499"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:47.010321" level="INFO">Clear any existing mininet</msg>
<arg>Clear any existing mininet</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:47.010083" elapsed="0.000282"/>
</kw>
<kw name="Clean Mininet System" owner="Utils">
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:47.012738" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:47.012473" elapsed="0.000322"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:47.012454" elapsed="0.000365"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:49:47.013126" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T00:49:47.012966" elapsed="0.000308"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:47.013800" level="INFO">Attempting to execute command "sudo mn -c" on remote system "10.30.170.192" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:47.013423" elapsed="0.000423"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:49:47.014418" level="INFO">${conn_id} = 19</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:49:47.014003" elapsed="0.000442"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T00:49:47.015333" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T00:49:47.015408" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T00:49:47.015054" elapsed="0.000378"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:49:47.015629" elapsed="0.000318"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T00:49:47.016941" level="INFO">Logging into '10.30.170.192:22' as 'jenkins'.</msg>
<msg time="2026-04-08T00:49:47.724499" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 00:49:47 UTC 2026

  System load:  0.04               Processes:             106
  Usage of /:   19.5% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.192
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


[?2004h[jenkins@releng-11369-169-1-mininet-ovs-217-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T00:49:47.016481" elapsed="0.708173"/>
</kw>
<msg time="2026-04-08T00:49:47.724738" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:49:47.016113" elapsed="0.708709"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T00:49:47.014659" elapsed="0.710279"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T00:49:47.725458" level="INFO">Executing command 'sudo mn -c'.</msg>
<msg time="2026-04-08T00:49:48.893253" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-08T00:49:48.893638" level="INFO">${stdout} = </msg>
<msg time="2026-04-08T00:49:48.893754" level="INFO">${stderr} = *** Removing excess controllers/ofprotocols/ofdatapaths/pings/noxes
killall controller ofprotocol ofdatapath ping nox_corelt-nox_core ovs-openflowd ovs-controllerovs-testcontroller udpbwtest mnexec iv...</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T00:49:47.725207" elapsed="1.168738"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:49:48.894467" elapsed="0.000579"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:48.896299" level="INFO">*** Removing excess controllers/ofprotocols/ofdatapaths/pings/noxes
killall controller ofprotocol ofdatapath ping nox_corelt-nox_core ovs-openflowd ovs-controllerovs-testcontroller udpbwtest mnexec ivs ryu-manager 2&gt; /dev/null
killall -9 controller ofprotocol ofdatapath ping nox_corelt-nox_core ovs-openflowd ovs-controllerovs-testcontroller udpbwtest mnexec ivs ryu-manager 2&gt; /dev/null
pkill -9 -f "sudo mnexec"
*** Removing junk from /tmp
rm -f /tmp/vconn* /tmp/vlogs* /tmp/*.out /tmp/*.log
*** Removing old X11 tunnels
*** Removing excess kernel datapaths
ps ax | egrep -o 'dp[0-9]+' | sed 's/dp/nl:/'
***  Removing OVS datapaths
ovs-vsctl --timeout=1 list-br
ovs-vsctl --timeout=1 list-br
*** Removing all links of the pattern foo-ethX
ip link show | egrep -o '([-_.[:alnum:]]+-eth[[:digit:]]+)'
ip link show
*** Killing stale mininet node processes
pkill -9 -f mininet:
*** Shutting down stale tunnels
pkill -9 -f Tunnel=Ethernet
pkill -9 -f .ssh/mn
rm -f ~/.ssh/mn/*
*** Cleanup complete.</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:48.895521" elapsed="0.000916"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:49:48.896779" elapsed="0.000024"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:49:48.896575" elapsed="0.000283"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:48.896539" elapsed="0.000354"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T00:49:48.897128" elapsed="0.000070"/>
</return>
<status status="PASS" start="2026-04-08T00:49:48.896973" elapsed="0.000276"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:48.896950" elapsed="0.000335"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:49:48.897333" elapsed="0.000020"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:49:48.901478" elapsed="0.000478"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:49:48.902229" elapsed="0.000228"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:49:48.902666" elapsed="0.000142"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:49:48.897795" elapsed="0.005088"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T00:49:47.011933" elapsed="1.891092"/>
</kw>
<msg time="2026-04-08T00:49:48.903105" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:49:47.011396" elapsed="1.891807"/>
</kw>
<arg>${system}</arg>
<arg>sudo mn -c</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-08T00:49:47.010903" elapsed="1.892415"/>
</kw>
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:48.906307" elapsed="0.000033"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:48.905892" elapsed="0.000500"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:48.905865" elapsed="0.000560"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:49:48.906823" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T00:49:48.906634" elapsed="0.000372"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:48.907788" level="INFO">Attempting to execute command "sudo ps -elf | egrep 'usr/local/bin/mn' | egrep python | awk '{print "sudo kill -9",$4}' | sh" on remote system "10.30.170.192" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:48.907249" elapsed="0.000606"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:49:48.908681" level="INFO">${conn_id} = 21</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:49:48.908084" elapsed="0.000625"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T00:49:48.909646" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T00:49:48.909725" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T00:49:48.909357" elapsed="0.000392"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:49:48.909908" elapsed="0.000561"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T00:49:48.911424" level="INFO">Logging into '10.30.170.192:22' as 'jenkins'.</msg>
<msg time="2026-04-08T00:49:49.231566" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 00:49:47 UTC 2026

  System load:  0.04               Processes:             106
  Usage of /:   19.5% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.192
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 00:49:47 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-1-mininet-ovs-217-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T00:49:48.911055" elapsed="0.320673"/>
</kw>
<msg time="2026-04-08T00:49:49.231814" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:49:48.910686" elapsed="0.321216"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T00:49:48.908927" elapsed="0.323091"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T00:49:49.232549" level="INFO">Executing command 'sudo ps -elf | egrep 'usr/local/bin/mn' | egrep python | awk '{print "sudo kill -9",$4}' | sh'.</msg>
<msg time="2026-04-08T00:49:49.265183" level="INFO">Command exited with return code -1.</msg>
<msg time="2026-04-08T00:49:49.265469" level="INFO">${stdout} = </msg>
<msg time="2026-04-08T00:49:49.265581" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T00:49:49.232290" elapsed="0.033357"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:49:49.266014" elapsed="0.000609"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:49.267754" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:49.267058" elapsed="0.000868"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:49:49.268487" elapsed="0.000036"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:49:49.268176" elapsed="0.000417"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:49.268074" elapsed="0.000570"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T00:49:49.269015" elapsed="0.000061"/>
</return>
<status status="PASS" start="2026-04-08T00:49:49.268762" elapsed="0.000435"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:49.268728" elapsed="0.000527"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:49:49.269347" elapsed="0.000044"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:49:49.274239" elapsed="0.000449"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:49:49.274915" elapsed="0.000210"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:49:49.275354" elapsed="0.000135"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:49:49.270099" elapsed="0.005463"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T00:49:48.905120" elapsed="0.370583"/>
</kw>
<msg time="2026-04-08T00:49:49.275778" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:49:48.904317" elapsed="0.371530"/>
</kw>
<arg>${system}</arg>
<arg>sudo ps -elf | egrep 'usr/local/bin/mn' | egrep python | awk '{print "sudo kill -9",$4}' | sh</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-08T00:49:48.903563" elapsed="0.372394"/>
</kw>
<arg>${mininet}</arg>
<status status="PASS" start="2026-04-08T00:49:47.010559" elapsed="2.265476"/>
</kw>
<kw name="Open_Connection_To_Tools_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:49:49.282713" level="INFO">${tools_connection} = 23</msg>
<var>${tools_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:49:49.282210" elapsed="0.000540"/>
</kw>
<kw name="Flexible_Mininet_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T00:49:49.284750" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T00:49:49.284825" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T00:49:49.284471" elapsed="0.000377"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:49:49.285003" elapsed="0.000330"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T00:49:49.286425" level="INFO">Logging into '10.30.170.192:22' as 'jenkins'.</msg>
<msg time="2026-04-08T00:49:49.610755" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 00:49:47 UTC 2026

  System load:  0.04               Processes:             106
  Usage of /:   19.5% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.192
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 00:49:49 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-1-mininet-ovs-217-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T00:49:49.285916" elapsed="0.324985"/>
</kw>
<msg time="2026-04-08T00:49:49.610979" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:49:49.285561" elapsed="0.325496"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T00:49:49.283977" elapsed="0.327213"/>
</kw>
<msg time="2026-04-08T00:49:49.611244" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:49:49.283576" elapsed="0.327715"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-08T00:49:49.282993" elapsed="0.328373"/>
</kw>
<return>
<value>${tools_connection}</value>
<status status="PASS" start="2026-04-08T00:49:49.611419" elapsed="0.000041"/>
</return>
<msg time="2026-04-08T00:49:49.611619" level="INFO">${mininet_conn_id} = 23</msg>
<var>${mininet_conn_id}</var>
<arg>ip_address=${mininet}</arg>
<arg>timeout=${timeout}</arg>
<doc>Open a connection to the tools system at ${ip_address} and return its identifier.</doc>
<status status="PASS" start="2026-04-08T00:49:49.281526" elapsed="0.330119"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-08T00:49:49.612347" level="INFO">${mininet_conn_id} = 23</msg>
<arg>${mininet_conn_id}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-08T00:49:49.611911" elapsed="0.000480"/>
</kw>
<if>
<branch type="IF" condition="'${custom}' != '${EMPTY}'">
<kw name="Put File" owner="SSHLibrary">
<arg>${custom}</arg>
<doc>Uploads file(s) from the local machine to the remote machine.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:49.614538" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:49.612473" elapsed="0.002121"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:49.612451" elapsed="0.002168"/>
</if>
<if>
<branch type="IF" condition="'${protocol}' == 'ssl'">
<kw name="Install Certificates In Mininet" owner="MininetKeywords">
<doc>Copy and install certificates in simulator.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:49.614971" elapsed="0.000028"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:49.614675" elapsed="0.000362"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:49.614659" elapsed="0.000410"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:49.615525" level="INFO">Start mininet --topo tree,2</msg>
<arg>Start mininet ${options}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:49.615249" elapsed="0.000321"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T00:49:49.617112" level="INFO">sudo mn --topo tree,2</msg>
<arg>sudo mn ${options}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T00:49:49.615725" elapsed="0.001468"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-08T00:49:49.908828" level="INFO">[?2004l*** No default OpenFlow controller found for default switch!
*** Falling back to OVS Bridge
*** Creating network
*** Adding controller
*** Adding hosts:
h1 h2 h3 h4 
*** Adding switches:
s1 s2 s3 
*** Adding links:
(s1, s2) (s1, s3) (s2, h1) (s2, h2) (s3, h3) (s3, h4) 
*** Configuring hosts
h1 h2 h3 h4 
*** Starting controller

*** Starting 3 switches
s1 s2 s3 ...
*** Starting CLI:
mininet&gt;</msg>
<arg>mininet&gt;</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-08T00:49:49.617349" elapsed="0.291593"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:49.909513" level="INFO">Create controller configuration</msg>
<arg>Create controller configuration</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:49.909219" elapsed="0.000338"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:49:49.909985" level="INFO">${controller_opt} = </msg>
<var>${controller_opt}</var>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:49:49.909734" elapsed="0.000277"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:49:49.910848" level="INFO">${controller_opt} =   tcp:10.30.170.48:6633</msg>
<var>${controller_opt}</var>
<arg>${controller_opt}</arg>
<arg>${SPACE}${protocol}:${ODL_SYSTEM_${index}_IP}:${ofport}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:49:49.910406" elapsed="0.000469"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:49.911302" level="INFO">  tcp:10.30.170.48:6633</msg>
<arg>${controller_opt}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:49.911043" elapsed="0.000303"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T00:49:49.910253" elapsed="0.001125"/>
</iter>
<iter>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:49:49.912038" level="INFO">${controller_opt} =   tcp:10.30.170.48:6633  tcp:10.30.170.131:6633</msg>
<var>${controller_opt}</var>
<arg>${controller_opt}</arg>
<arg>${SPACE}${protocol}:${ODL_SYSTEM_${index}_IP}:${ofport}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:49:49.911610" elapsed="0.000455"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:49.912498" level="INFO">  tcp:10.30.170.48:6633  tcp:10.30.170.131:6633</msg>
<arg>${controller_opt}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:49.912246" elapsed="0.000296"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T00:49:49.911467" elapsed="0.001107"/>
</iter>
<iter>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:49:49.913345" level="INFO">${controller_opt} =   tcp:10.30.170.48:6633  tcp:10.30.170.131:6633  tcp:10.30.171.110:6633</msg>
<var>${controller_opt}</var>
<arg>${controller_opt}</arg>
<arg>${SPACE}${protocol}:${ODL_SYSTEM_${index}_IP}:${ofport}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:49:49.912889" elapsed="0.000484"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:49.913779" level="INFO">  tcp:10.30.170.48:6633  tcp:10.30.170.131:6633  tcp:10.30.171.110:6633</msg>
<arg>${controller_opt}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:49.913540" elapsed="0.000290"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T00:49:49.912735" elapsed="0.001128"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-08T00:49:49.910071" elapsed="0.003821"/>
</for>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:49.914276" level="INFO">Open extra SSH connection to configure the OVS bridges</msg>
<arg>Open extra SSH connection to configure the OVS bridges</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:49.914054" elapsed="0.000267"/>
</kw>
<kw name="Open_Connection_To_Tools_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:49:49.919780" level="INFO">${tools_connection} = 24</msg>
<var>${tools_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:49:49.919400" elapsed="0.000407"/>
</kw>
<kw name="Flexible_Mininet_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T00:49:49.921568" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T00:49:49.921644" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T00:49:49.921289" elapsed="0.000379"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:49:49.921822" elapsed="0.000330"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T00:49:49.922998" level="INFO">Logging into '10.30.170.192:22' as 'jenkins'.</msg>
<msg time="2026-04-08T00:49:50.266200" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 00:49:47 UTC 2026

  System load:  0.04               Processes:             106
  Usage of /:   19.5% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.192
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 00:49:49 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-1-mininet-ovs-217-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T00:49:49.922687" elapsed="0.343672"/>
</kw>
<msg time="2026-04-08T00:49:50.266440" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:49:49.922338" elapsed="0.344185"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T00:49:49.920800" elapsed="0.345856"/>
</kw>
<msg time="2026-04-08T00:49:50.266710" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:49:49.920403" elapsed="0.346355"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-08T00:49:49.919983" elapsed="0.346852"/>
</kw>
<return>
<value>${tools_connection}</value>
<status status="PASS" start="2026-04-08T00:49:50.266887" elapsed="0.000039"/>
</return>
<arg>ip_address=${mininet}</arg>
<arg>timeout=${timeout}</arg>
<doc>Open a connection to the tools system at ${ip_address} and return its identifier.</doc>
<status status="PASS" start="2026-04-08T00:49:49.918856" elapsed="0.348199"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T00:49:50.267450" level="INFO">Executing command 'sudo ovs-vsctl show | grep Bridge | wc -l'.</msg>
<msg time="2026-04-08T00:49:50.290060" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-08T00:49:50.290333" level="INFO">${num_bridges} = 3</msg>
<var>${num_bridges}</var>
<arg>sudo ovs-vsctl show | grep Bridge | wc -l</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T00:49:50.267314" elapsed="0.023084"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:49:50.291679" level="INFO">${num_bridges} = 3</msg>
<var>${num_bridges}</var>
<arg>${num_bridges}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:49:50.290855" elapsed="0.000882"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:49:50.292689" level="INFO">${bridges} = []</msg>
<var>${bridges}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:49:50.292119" elapsed="0.000627"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T00:49:50.298998" level="INFO">Executing command 'sudo ovs-vsctl show | grep Bridge | cut -c 12- | sort | head -1 | tail -1'.</msg>
<msg time="2026-04-08T00:49:50.352232" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-08T00:49:50.352453" level="INFO">${bridge} = s1</msg>
<var>${bridge}</var>
<arg>sudo ovs-vsctl show | grep Bridge | cut -c 12- | sort | head -${i} | tail -1</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T00:49:50.298691" elapsed="0.053819"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T00:49:50.353553" level="INFO">Executing command 'sudo ovs-vsctl del-controller s1 &amp;&amp; sudo ovs-vsctl set bridge s1 protocols=OpenFlow13'.</msg>
<msg time="2026-04-08T00:49:50.436991" level="INFO">Command exited with return code 0.</msg>
<arg>sudo ovs-vsctl del-controller ${bridge} &amp;&amp; sudo ovs-vsctl set bridge ${bridge} protocols=OpenFlow${ofversion}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T00:49:50.352887" elapsed="0.084322"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${bridges}</arg>
<arg>${bridge}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-08T00:49:50.437777" elapsed="0.000532"/>
</kw>
<var name="${i}">1</var>
<status status="PASS" start="2026-04-08T00:49:50.298366" elapsed="0.140033"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T00:49:50.439308" level="INFO">Executing command 'sudo ovs-vsctl show | grep Bridge | cut -c 12- | sort | head -2 | tail -1'.</msg>
<msg time="2026-04-08T00:49:50.514985" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-08T00:49:50.515370" level="INFO">${bridge} = s2</msg>
<var>${bridge}</var>
<arg>sudo ovs-vsctl show | grep Bridge | cut -c 12- | sort | head -${i} | tail -1</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T00:49:50.438950" elapsed="0.076479"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T00:49:50.516592" level="INFO">Executing command 'sudo ovs-vsctl del-controller s2 &amp;&amp; sudo ovs-vsctl set bridge s2 protocols=OpenFlow13'.</msg>
<msg time="2026-04-08T00:49:50.592595" level="INFO">Command exited with return code 0.</msg>
<arg>sudo ovs-vsctl del-controller ${bridge} &amp;&amp; sudo ovs-vsctl set bridge ${bridge} protocols=OpenFlow${ofversion}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T00:49:50.515879" elapsed="0.076880"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${bridges}</arg>
<arg>${bridge}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-08T00:49:50.593215" elapsed="0.000508"/>
</kw>
<var name="${i}">2</var>
<status status="PASS" start="2026-04-08T00:49:50.438635" elapsed="0.155175"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T00:49:50.594740" level="INFO">Executing command 'sudo ovs-vsctl show | grep Bridge | cut -c 12- | sort | head -3 | tail -1'.</msg>
<msg time="2026-04-08T00:49:50.656629" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-08T00:49:50.656906" level="INFO">${bridge} = s3</msg>
<var>${bridge}</var>
<arg>sudo ovs-vsctl show | grep Bridge | cut -c 12- | sort | head -${i} | tail -1</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T00:49:50.594427" elapsed="0.062537"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T00:49:50.658106" level="INFO">Executing command 'sudo ovs-vsctl del-controller s3 &amp;&amp; sudo ovs-vsctl set bridge s3 protocols=OpenFlow13'.</msg>
<msg time="2026-04-08T00:49:50.740439" level="INFO">Command exited with return code 0.</msg>
<arg>sudo ovs-vsctl del-controller ${bridge} &amp;&amp; sudo ovs-vsctl set bridge ${bridge} protocols=OpenFlow${ofversion}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T00:49:50.657423" elapsed="0.083226"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${bridges}</arg>
<arg>${bridge}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-08T00:49:50.741116" elapsed="0.000667"/>
</kw>
<var name="${i}">3</var>
<status status="PASS" start="2026-04-08T00:49:50.594059" elapsed="0.147835"/>
</iter>
<var>${i}</var>
<value>1</value>
<value>${num_bridges+1}</value>
<status status="PASS" start="2026-04-08T00:49:50.292858" elapsed="0.449114"/>
</for>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:50.743084" level="INFO">Configure OVS controllers   tcp:10.30.170.48:6633  tcp:10.30.170.131:6633  tcp:10.30.171.110:6633 in all bridges</msg>
<arg>Configure OVS controllers ${controller_opt} in all bridges</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:50.742447" elapsed="0.000856"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T00:49:50.744549" level="INFO">Executing command 'sudo ovs-vsctl set-controller s1   tcp:10.30.170.48:6633  tcp:10.30.170.131:6633  tcp:10.30.171.110:6633'.</msg>
<msg time="2026-04-08T00:49:50.861192" level="INFO">Command exited with return code 0.</msg>
<arg>sudo ovs-vsctl set-controller ${bridge} ${controller_opt}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T00:49:50.744145" elapsed="0.117290"/>
</kw>
<var name="${bridge}">s1</var>
<status status="PASS" start="2026-04-08T00:49:50.743834" elapsed="0.117711"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T00:49:50.862736" level="INFO">Executing command 'sudo ovs-vsctl set-controller s2   tcp:10.30.170.48:6633  tcp:10.30.170.131:6633  tcp:10.30.171.110:6633'.</msg>
<msg time="2026-04-08T00:49:50.934587" level="INFO">Command exited with return code 0.</msg>
<arg>sudo ovs-vsctl set-controller ${bridge} ${controller_opt}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T00:49:50.862278" elapsed="0.072538"/>
</kw>
<var name="${bridge}">s2</var>
<status status="PASS" start="2026-04-08T00:49:50.861835" elapsed="0.073090"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T00:49:50.936275" level="INFO">Executing command 'sudo ovs-vsctl set-controller s3   tcp:10.30.170.48:6633  tcp:10.30.170.131:6633  tcp:10.30.171.110:6633'.</msg>
<msg time="2026-04-08T00:49:51.002518" level="INFO">Command exited with return code 0.</msg>
<arg>sudo ovs-vsctl set-controller ${bridge} ${controller_opt}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T00:49:50.935713" elapsed="0.067028"/>
</kw>
<var name="${bridge}">s3</var>
<status status="PASS" start="2026-04-08T00:49:50.935253" elapsed="0.067595"/>
</iter>
<var>${bridge}</var>
<value>@{bridges}</value>
<status status="PASS" start="2026-04-08T00:49:50.743471" elapsed="0.259455"/>
</for>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:51.004136" level="INFO">Check OVS configuratiom</msg>
<arg>Check OVS configuratiom</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:51.003507" elapsed="0.000768"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T00:49:51.004860" level="INFO">Executing command 'sudo ovs-vsctl show'.</msg>
<msg time="2026-04-08T00:49:51.077854" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-08T00:49:51.078110" level="INFO">${output} = 9a5df812-eb49-4477-a37e-2d464c02791d
    Bridge s1
        Controller "tcp:10.30.171.110:6633"
        Controller "tcp:10.30.170.131:6633"
        Controller "tcp:10.30.170.48:6633"
        fail_mode:...</msg>
<var>${output}</var>
<arg>sudo ovs-vsctl show</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T00:49:51.004646" elapsed="0.073566"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:51.079335" level="INFO">9a5df812-eb49-4477-a37e-2d464c02791d
    Bridge s1
        Controller "tcp:10.30.171.110:6633"
        Controller "tcp:10.30.170.131:6633"
        Controller "tcp:10.30.170.48:6633"
        fail_mode: standalone
        Port s1-eth2
            Interface s1-eth2
        Port s1
            Interface s1
                type: internal
        Port s1-eth1
            Interface s1-eth1
    Bridge s2
        Controller "tcp:10.30.171.110:6633"
        Controller "tcp:10.30.170.48:6633"
        Controller "tcp:10.30.170.131:6633"
        fail_mode: standalone
        Port s2
            Interface s2
                type: internal
        Port s2-eth3
            Interface s2-eth3
        Port s2-eth1
            Interface s2-eth1
        Port s2-eth2
            Interface s2-eth2
    Bridge s3
        Controller "tcp:10.30.170.48:6633"
        Controller "tcp:10.30.170.131:6633"
        Controller "tcp:10.30.171.110:6633"
        fail_mode: standalone
        Port s3-eth2
            Interface s3-eth2
        Port s3-eth3
            Interface s3-eth3
        Port s3-eth1
            Interface s3-eth1
        Port s3
            Interface s3
                type: internal
    ovs_version: "2.17.11"</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:51.078649" elapsed="0.000928"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:49:51.079927" elapsed="0.000501"/>
</kw>
<return>
<value>${mininet_conn_id}</value>
<status status="PASS" start="2026-04-08T00:49:51.080528" elapsed="0.000102"/>
</return>
<msg time="2026-04-08T00:49:51.080954" level="INFO">${mininet_conn_id} = 23</msg>
<var>${mininet_conn_id}</var>
<arg>${TOOLS_SYSTEM_IP}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<arg>--topo tree,2</arg>
<doc>Start Mininet with custom topology and connect to list of controllers in ${controller_index_list} or all if no list is provided.</doc>
<status status="PASS" start="2026-04-08T00:49:47.006069" elapsed="4.074943"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-08T00:49:51.082239" level="INFO">${mininet_conn_id} = 23</msg>
<arg>${mininet_conn_id}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-08T00:49:51.081457" elapsed="0.000878"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Check OVS OpenFlow Connections" owner="OVSDB">
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:51.097131" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:51.096824" elapsed="0.000381"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:51.096802" elapsed="0.000429"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:49:51.097534" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T00:49:51.097383" elapsed="0.000279"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:51.098207" level="INFO">Attempting to execute command "sudo ovs-vsctl show" on remote system "10.30.170.192" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:51.097812" elapsed="0.000441"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:49:51.098775" level="INFO">${conn_id} = 25</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:49:51.098410" elapsed="0.000390"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T00:49:51.101469" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T00:49:51.101547" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T00:49:51.101183" elapsed="0.000387"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:49:51.101729" elapsed="0.000324"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T00:49:51.102920" level="INFO">Logging into '10.30.170.192:22' as 'jenkins'.</msg>
<msg time="2026-04-08T00:49:51.446466" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 00:49:47 UTC 2026

  System load:  0.04               Processes:             106
  Usage of /:   19.5% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.192
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 00:49:50 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-1-mininet-ovs-217-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T00:49:51.102599" elapsed="0.344057"/>
</kw>
<msg time="2026-04-08T00:49:51.446747" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:49:51.102236" elapsed="0.344596"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T00:49:51.099011" elapsed="0.347937"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T00:49:51.447482" level="INFO">Executing command 'sudo ovs-vsctl show'.</msg>
<msg time="2026-04-08T00:49:51.480499" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-08T00:49:51.480864" level="INFO">${stdout} = 9a5df812-eb49-4477-a37e-2d464c02791d
    Bridge s1
        Controller "tcp:10.30.171.110:6633"
        Controller "tcp:10.30.170.131:6633"
        Controller "tcp:10.30.170.48:6633"
        fail_mode:...</msg>
<msg time="2026-04-08T00:49:51.480972" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T00:49:51.447212" elapsed="0.033818"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:49:51.481560" elapsed="0.000590"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:51.483333" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:51.482638" elapsed="0.000812"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:49:51.483971" elapsed="0.000041"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:49:51.483651" elapsed="0.000587"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:51.483594" elapsed="0.000712"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T00:49:51.484709" elapsed="0.000077"/>
</return>
<status status="PASS" start="2026-04-08T00:49:51.484441" elapsed="0.000424"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:51.484404" elapsed="0.000518"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:49:51.485025" elapsed="0.000035"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:49:51.489933" elapsed="0.000486"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:49:51.490654" elapsed="0.000219"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:49:51.491080" elapsed="0.000171"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:49:51.485897" elapsed="0.005437"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T00:49:51.096266" elapsed="0.395199"/>
</kw>
<msg time="2026-04-08T00:49:51.491552" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:49:51.095586" elapsed="0.396039"/>
</kw>
<msg time="2026-04-08T00:49:51.491783" level="INFO">${output} = 9a5df812-eb49-4477-a37e-2d464c02791d
    Bridge s1
        Controller "tcp:10.30.171.110:6633"
        Controller "tcp:10.30.170.131:6633"
        Controller "tcp:10.30.170.48:6633"
        fail_mode:...</msg>
<var>${output}</var>
<arg>${tools_system}</arg>
<arg>sudo ovs-vsctl show</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-08T00:49:51.095031" elapsed="0.396790"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:51.492426" level="INFO">9a5df812-eb49-4477-a37e-2d464c02791d
    Bridge s1
        Controller "tcp:10.30.171.110:6633"
        Controller "tcp:10.30.170.131:6633"
        Controller "tcp:10.30.170.48:6633"
        fail_mode: standalone
        Port s1-eth2
            Interface s1-eth2
        Port s1
            Interface s1
                type: internal
        Port s1-eth1
            Interface s1-eth1
    Bridge s2
        Controller "tcp:10.30.171.110:6633"
        Controller "tcp:10.30.170.48:6633"
        Controller "tcp:10.30.170.131:6633"
        fail_mode: standalone
        Port s2
            Interface s2
                type: internal
        Port s2-eth3
            Interface s2-eth3
        Port s2-eth1
            Interface s2-eth1
        Port s2-eth2
            Interface s2-eth2
    Bridge s3
        Controller "tcp:10.30.170.48:6633"
        Controller "tcp:10.30.170.131:6633"
        Controller "tcp:10.30.171.110:6633"
        fail_mode: standalone
        Port s3-eth2
            Interface s3-eth2
        Port s3-eth3
            Interface s3-eth3
        Port s3-eth1
            Interface s3-eth1
        Port s3
            Interface s3
                type: internal
    ovs_version: "2.17.11"</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:51.492046" elapsed="0.000458"/>
</kw>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T00:49:51.493292" level="INFO">Item found from container 0 times.</msg>
<msg time="2026-04-08T00:49:51.493468" level="FAIL">'9a5df812-eb49-4477-a37e-2d464c02791d\n    Bridge s1\n        Controller "tcp:10.30.171.110:6633"\n        Controller "tcp:10.30.170.131:6633"\n        Controller "tcp:10.30.170.48:6633"\n        fail_mode: standalone\n        Port s1-eth2\n            Interface s1-eth2\n        Port s1\n            Interface s1\n                type: internal\n        Port s1-eth1\n            Interface s1-eth1\n    Bridge s2\n        Controller "tcp:10.30.171.110:6633"\n        Controller "tcp:10.30.170.48:6633"\n        Controller "tcp:10.30.170.131:6633"\n        fail_mode: standalone\n        Port s2\n            Interface s2\n                type: internal\n        Port s2-eth3\n            Interface s2-eth3\n        Port s2-eth1\n            Interface s2-eth1\n        Port s2-eth2\n            Interface s2-eth2\n    Bridge s3\n        Controller "tcp:10.30.170.48:6633"\n        Controller "tcp:10.30.170.131:6633"\n        Controller "tcp:10.30.171.110:6633"\n        fail_mode: standalone\n        Port s3-eth2\n            Interface s3-eth2\n        Port s3-eth3\n            Interface s3-eth3\n        Port s3-eth1\n            Interface s3-eth1\n        Port s3\n            Interface s3\n                type: internal\n    ovs_version: "2.17.11"' contains 'is_connected' 0 times, not 9 times.</msg>
<arg>${output}</arg>
<arg>is_connected</arg>
<arg>${of_connections}</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="FAIL" start="2026-04-08T00:49:51.492719" elapsed="0.000865">'9a5df812-eb49-4477-a37e-2d464c02791d\n    Bridge s1\n        Controller "tcp:10.30.171.110:6633"\n        Controller "tcp:10.30.170.131:6633"\n        Controller "tcp:10.30.170.48:6633"\n        fail_mode: standalone\n        Port s1-eth2\n            Interface s1-eth2\n        Port s1\n            Interface s1\n                type: internal\n        Port s1-eth1\n            Interface s1-eth1\n    Bridge s2\n        Controller "tcp:10.30.171.110:6633"\n        Controller "tcp:10.30.170.48:6633"\n        Controller "tcp:10.30.170.131:6633"\n        fail_mode: standalone\n        Port s2\n            Interface s2\n                type: internal\n        Port s2-eth3\n            Interface s2-eth3\n        Port s2-eth1\n            Interface s2-eth1\n        Port s2-eth2\n            Interface s2-eth2\n    Bridge s3\n        Controller "tcp:10.30.170.48:6633"\n        Controller "tcp:10.30.170.131:6633"\n        Controller "tcp:10.30.171.110:6633"\n        fail_mode: standalone\n        Port s3-eth2\n            Interface s3-eth2\n        Port s3-eth3\n            Interface s3-eth3\n        Port s3-eth1\n            Interface s3-eth1\n        Port s3\n            Interface s3\n                type: internal\n    ovs_version: "2.17.11"' contains 'is_connected' 0 times, not 9 times.</status>
</kw>
<arg>${TOOLS_SYSTEM_IP}</arg>
<arg>9</arg>
<doc>Check OVS instance with IP ${tools_system} has ${of_connections} OpenFlow connections.</doc>
<status status="FAIL" start="2026-04-08T00:49:51.094595" elapsed="0.399176">'9a5df812-eb49-4477-a37e-2d464c02791d\n    Bridge s1\n        Controller "tcp:10.30.171.110:6633"\n        Controller "tcp:10.30.170.131:6633"\n        Controller "tcp:10.30.170.48:6633"\n        fail_mode: standalone\n        Port s1-eth2\n            Interface s1-eth2\n        Port s1\n            Interface s1\n                type: internal\n        Port s1-eth1\n            Interface s1-eth1\n    Bridge s2\n        Controller "tcp:10.30.171.110:6633"\n        Controller "tcp:10.30.170.48:6633"\n        Controller "tcp:10.30.170.131:6633"\n        fail_mode: standalone\n        Port s2\n            Interface s2\n                type: internal\n        Port s2-eth3\n            Interface s2-eth3\n        Port s2-eth1\n            Interface s2-eth1\n        Port s2-eth2\n            Interface s2-eth2\n    Bridge s3\n        Controller "tcp:10.30.170.48:6633"\n        Controller "tcp:10.30.170.131:6633"\n        Controller "tcp:10.30.171.110:6633"\n        fail_mode: standalone\n        Port s3-eth2\n            Interface s3-eth2\n        Port s3-eth3\n            Interface s3-eth3\n        Port s3-eth1\n            Interface s3-eth1\n        Port s3\n            Interface s3\n                type: internal\n    ovs_version: "2.17.11"' contains 'is_connected' 0 times, not 9 times.</status>
</kw>
<kw name="Check OVS OpenFlow Connections" owner="OVSDB">
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:52.512446" elapsed="0.000033"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:52.511975" elapsed="0.000565"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:52.511912" elapsed="0.000664"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:49:52.513037" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T00:49:52.512789" elapsed="0.000509"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:52.513894" level="INFO">Attempting to execute command "sudo ovs-vsctl show" on remote system "10.30.170.192" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:52.513478" elapsed="0.000468"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:49:52.514545" level="INFO">${conn_id} = 27</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:49:52.514133" elapsed="0.000439"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T00:49:52.515486" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T00:49:52.515563" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T00:49:52.515201" elapsed="0.000386"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:49:52.515748" elapsed="0.000343"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T00:49:52.516962" level="INFO">Logging into '10.30.170.192:22' as 'jenkins'.</msg>
<msg time="2026-04-08T00:49:52.886357" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 00:49:47 UTC 2026

  System load:  0.04               Processes:             106
  Usage of /:   19.5% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.192
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 00:49:51 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-1-mininet-ovs-217-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T00:49:52.516645" elapsed="0.369887"/>
</kw>
<msg time="2026-04-08T00:49:52.886632" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:49:52.516287" elapsed="0.370443"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T00:49:52.514791" elapsed="0.372070"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T00:49:52.887490" level="INFO">Executing command 'sudo ovs-vsctl show'.</msg>
<msg time="2026-04-08T00:49:52.950336" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-08T00:49:52.950620" level="INFO">${stdout} = 9a5df812-eb49-4477-a37e-2d464c02791d
    Bridge s1
        Controller "tcp:10.30.171.110:6633"
        Controller "tcp:10.30.170.131:6633"
        Controller "tcp:10.30.170.48:6633"
        fail_mode:...</msg>
<msg time="2026-04-08T00:49:52.950738" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T00:49:52.887179" elapsed="0.063617"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:49:52.951243" elapsed="0.000590"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:52.952936" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:52.952297" elapsed="0.000731"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:49:52.953611" elapsed="0.000046"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:49:52.953241" elapsed="0.000507"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:52.953184" elapsed="0.000625"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T00:49:52.954236" elapsed="0.000069"/>
</return>
<status status="PASS" start="2026-04-08T00:49:52.953942" elapsed="0.000442"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:52.953908" elapsed="0.000532"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:49:52.954520" elapsed="0.000032"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:49:52.960397" elapsed="0.000340"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:49:52.960904" elapsed="0.000178"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:49:52.961310" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:49:52.955786" elapsed="0.005680"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T00:49:52.511193" elapsed="0.450365"/>
</kw>
<msg time="2026-04-08T00:49:52.961622" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:49:52.510304" elapsed="0.451371"/>
</kw>
<msg time="2026-04-08T00:49:52.961787" level="INFO">${output} = 9a5df812-eb49-4477-a37e-2d464c02791d
    Bridge s1
        Controller "tcp:10.30.171.110:6633"
        Controller "tcp:10.30.170.131:6633"
        Controller "tcp:10.30.170.48:6633"
        fail_mode:...</msg>
<var>${output}</var>
<arg>${tools_system}</arg>
<arg>sudo ovs-vsctl show</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-08T00:49:52.509460" elapsed="0.452354"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:52.962240" level="INFO">9a5df812-eb49-4477-a37e-2d464c02791d
    Bridge s1
        Controller "tcp:10.30.171.110:6633"
        Controller "tcp:10.30.170.131:6633"
        Controller "tcp:10.30.170.48:6633"
        fail_mode: standalone
        Port s1-eth2
            Interface s1-eth2
        Port s1
            Interface s1
                type: internal
        Port s1-eth1
            Interface s1-eth1
    Bridge s2
        Controller "tcp:10.30.171.110:6633"
        Controller "tcp:10.30.170.48:6633"
        Controller "tcp:10.30.170.131:6633"
        fail_mode: standalone
        Port s2
            Interface s2
                type: internal
        Port s2-eth3
            Interface s2-eth3
        Port s2-eth1
            Interface s2-eth1
        Port s2-eth2
            Interface s2-eth2
    Bridge s3
        Controller "tcp:10.30.170.48:6633"
        Controller "tcp:10.30.170.131:6633"
        Controller "tcp:10.30.171.110:6633"
        fail_mode: standalone
        Port s3-eth2
            Interface s3-eth2
        Port s3-eth3
            Interface s3-eth3
        Port s3-eth1
            Interface s3-eth1
        Port s3
            Interface s3
                type: internal
    ovs_version: "2.17.11"</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:52.961973" elapsed="0.000321"/>
</kw>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T00:49:52.962790" level="INFO">Item found from container 0 times.</msg>
<msg time="2026-04-08T00:49:52.962910" level="FAIL">'9a5df812-eb49-4477-a37e-2d464c02791d\n    Bridge s1\n        Controller "tcp:10.30.171.110:6633"\n        Controller "tcp:10.30.170.131:6633"\n        Controller "tcp:10.30.170.48:6633"\n        fail_mode: standalone\n        Port s1-eth2\n            Interface s1-eth2\n        Port s1\n            Interface s1\n                type: internal\n        Port s1-eth1\n            Interface s1-eth1\n    Bridge s2\n        Controller "tcp:10.30.171.110:6633"\n        Controller "tcp:10.30.170.48:6633"\n        Controller "tcp:10.30.170.131:6633"\n        fail_mode: standalone\n        Port s2\n            Interface s2\n                type: internal\n        Port s2-eth3\n            Interface s2-eth3\n        Port s2-eth1\n            Interface s2-eth1\n        Port s2-eth2\n            Interface s2-eth2\n    Bridge s3\n        Controller "tcp:10.30.170.48:6633"\n        Controller "tcp:10.30.170.131:6633"\n        Controller "tcp:10.30.171.110:6633"\n        fail_mode: standalone\n        Port s3-eth2\n            Interface s3-eth2\n        Port s3-eth3\n            Interface s3-eth3\n        Port s3-eth1\n            Interface s3-eth1\n        Port s3\n            Interface s3\n                type: internal\n    ovs_version: "2.17.11"' contains 'is_connected' 0 times, not 9 times.</msg>
<arg>${output}</arg>
<arg>is_connected</arg>
<arg>${of_connections}</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="FAIL" start="2026-04-08T00:49:52.962445" elapsed="0.000549">'9a5df812-eb49-4477-a37e-2d464c02791d\n    Bridge s1\n        Controller "tcp:10.30.171.110:6633"\n        Controller "tcp:10.30.170.131:6633"\n        Controller "tcp:10.30.170.48:6633"\n        fail_mode: standalone\n        Port s1-eth2\n            Interface s1-eth2\n        Port s1\n            Interface s1\n                type: internal\n        Port s1-eth1\n            Interface s1-eth1\n    Bridge s2\n        Controller "tcp:10.30.171.110:6633"\n        Controller "tcp:10.30.170.48:6633"\n        Controller "tcp:10.30.170.131:6633"\n        fail_mode: standalone\n        Port s2\n            Interface s2\n                type: internal\n        Port s2-eth3\n            Interface s2-eth3\n        Port s2-eth1\n            Interface s2-eth1\n        Port s2-eth2\n            Interface s2-eth2\n    Bridge s3\n        Controller "tcp:10.30.170.48:6633"\n        Controller "tcp:10.30.170.131:6633"\n        Controller "tcp:10.30.171.110:6633"\n        fail_mode: standalone\n        Port s3-eth2\n            Interface s3-eth2\n        Port s3-eth3\n            Interface s3-eth3\n        Port s3-eth1\n            Interface s3-eth1\n        Port s3\n            Interface s3\n                type: internal\n    ovs_version: "2.17.11"' contains 'is_connected' 0 times, not 9 times.</status>
</kw>
<arg>${TOOLS_SYSTEM_IP}</arg>
<arg>9</arg>
<doc>Check OVS instance with IP ${tools_system} has ${of_connections} OpenFlow connections.</doc>
<status status="FAIL" start="2026-04-08T00:49:52.508767" elapsed="0.454376">'9a5df812-eb49-4477-a37e-2d464c02791d\n    Bridge s1\n        Controller "tcp:10.30.171.110:6633"\n        Controller "tcp:10.30.170.131:6633"\n        Controller "tcp:10.30.170.48:6633"\n        fail_mode: standalone\n        Port s1-eth2\n            Interface s1-eth2\n        Port s1\n            Interface s1\n                type: internal\n        Port s1-eth1\n            Interface s1-eth1\n    Bridge s2\n        Controller "tcp:10.30.171.110:6633"\n        Controller "tcp:10.30.170.48:6633"\n        Controller "tcp:10.30.170.131:6633"\n        fail_mode: standalone\n        Port s2\n            Interface s2\n                type: internal\n        Port s2-eth3\n            Interface s2-eth3\n        Port s2-eth1\n            Interface s2-eth1\n        Port s2-eth2\n            Interface s2-eth2\n    Bridge s3\n        Controller "tcp:10.30.170.48:6633"\n        Controller "tcp:10.30.170.131:6633"\n        Controller "tcp:10.30.171.110:6633"\n        fail_mode: standalone\n        Port s3-eth2\n            Interface s3-eth2\n        Port s3-eth3\n            Interface s3-eth3\n        Port s3-eth1\n            Interface s3-eth1\n        Port s3\n            Interface s3\n                type: internal\n    ovs_version: "2.17.11"' contains 'is_connected' 0 times, not 9 times.</status>
</kw>
<kw name="Check OVS OpenFlow Connections" owner="OVSDB">
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:53.980633" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:53.980317" elapsed="0.000386"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:53.980293" elapsed="0.000437"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:49:53.981049" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T00:49:53.980881" elapsed="0.000325"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:53.981842" level="INFO">Attempting to execute command "sudo ovs-vsctl show" on remote system "10.30.170.192" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:53.981375" elapsed="0.000518"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:49:53.982453" level="INFO">${conn_id} = 29</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:49:53.982054" elapsed="0.000425"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T00:49:53.983497" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T00:49:53.983574" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T00:49:53.983198" elapsed="0.000400"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:49:53.983755" elapsed="0.000342"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T00:49:53.985086" level="INFO">Logging into '10.30.170.192:22' as 'jenkins'.</msg>
<msg time="2026-04-08T00:49:54.372414" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 00:49:47 UTC 2026

  System load:  0.04               Processes:             106
  Usage of /:   19.5% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.192
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 00:49:52 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-1-mininet-ovs-217-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T00:49:53.984703" elapsed="0.387867"/>
</kw>
<msg time="2026-04-08T00:49:54.372655" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:49:53.984289" elapsed="0.388451"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T00:49:53.982714" elapsed="0.390139"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T00:49:54.373388" level="INFO">Executing command 'sudo ovs-vsctl show'.</msg>
<msg time="2026-04-08T00:49:54.446566" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-08T00:49:54.446832" level="INFO">${stdout} = 9a5df812-eb49-4477-a37e-2d464c02791d
    Bridge s1
        Controller "tcp:10.30.171.110:6633"
        Controller "tcp:10.30.170.131:6633"
        Controller "tcp:10.30.170.48:6633"
        fail_mode:...</msg>
<msg time="2026-04-08T00:49:54.446934" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T00:49:54.373113" elapsed="0.073872"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:49:54.447456" elapsed="0.000652"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:54.449207" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:54.448560" elapsed="0.000746"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:49:54.449776" elapsed="0.000037"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:49:54.449481" elapsed="0.000403"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:54.449430" elapsed="0.000504"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T00:49:54.450321" elapsed="0.000062"/>
</return>
<status status="PASS" start="2026-04-08T00:49:54.450052" elapsed="0.000404"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:54.450019" elapsed="0.000490"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:49:54.450584" elapsed="0.000031"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:49:54.456056" elapsed="0.000347"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:49:54.456568" elapsed="0.000164"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:49:54.456953" elapsed="0.000099"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:49:54.451322" elapsed="0.005783"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T00:49:53.979755" elapsed="0.477458"/>
</kw>
<msg time="2026-04-08T00:49:54.457276" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:49:53.979105" elapsed="0.478222"/>
</kw>
<msg time="2026-04-08T00:49:54.457442" level="INFO">${output} = 9a5df812-eb49-4477-a37e-2d464c02791d
    Bridge s1
        Controller "tcp:10.30.171.110:6633"
        Controller "tcp:10.30.170.131:6633"
        Controller "tcp:10.30.170.48:6633"
        fail_mode:...</msg>
<var>${output}</var>
<arg>${tools_system}</arg>
<arg>sudo ovs-vsctl show</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-08T00:49:53.978582" elapsed="0.478887"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:54.457873" level="INFO">9a5df812-eb49-4477-a37e-2d464c02791d
    Bridge s1
        Controller "tcp:10.30.171.110:6633"
        Controller "tcp:10.30.170.131:6633"
        Controller "tcp:10.30.170.48:6633"
        fail_mode: standalone
        Port s1-eth2
            Interface s1-eth2
        Port s1
            Interface s1
                type: internal
        Port s1-eth1
            Interface s1-eth1
    Bridge s2
        Controller "tcp:10.30.171.110:6633"
        Controller "tcp:10.30.170.48:6633"
        Controller "tcp:10.30.170.131:6633"
        fail_mode: standalone
        Port s2
            Interface s2
                type: internal
        Port s2-eth3
            Interface s2-eth3
        Port s2-eth1
            Interface s2-eth1
        Port s2-eth2
            Interface s2-eth2
    Bridge s3
        Controller "tcp:10.30.170.48:6633"
        Controller "tcp:10.30.170.131:6633"
        Controller "tcp:10.30.171.110:6633"
        fail_mode: standalone
        Port s3-eth2
            Interface s3-eth2
        Port s3-eth3
            Interface s3-eth3
        Port s3-eth1
            Interface s3-eth1
        Port s3
            Interface s3
                type: internal
    ovs_version: "2.17.11"</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:54.457626" elapsed="0.000300"/>
</kw>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T00:49:54.458439" level="INFO">Item found from container 0 times.</msg>
<msg time="2026-04-08T00:49:54.458560" level="FAIL">'9a5df812-eb49-4477-a37e-2d464c02791d\n    Bridge s1\n        Controller "tcp:10.30.171.110:6633"\n        Controller "tcp:10.30.170.131:6633"\n        Controller "tcp:10.30.170.48:6633"\n        fail_mode: standalone\n        Port s1-eth2\n            Interface s1-eth2\n        Port s1\n            Interface s1\n                type: internal\n        Port s1-eth1\n            Interface s1-eth1\n    Bridge s2\n        Controller "tcp:10.30.171.110:6633"\n        Controller "tcp:10.30.170.48:6633"\n        Controller "tcp:10.30.170.131:6633"\n        fail_mode: standalone\n        Port s2\n            Interface s2\n                type: internal\n        Port s2-eth3\n            Interface s2-eth3\n        Port s2-eth1\n            Interface s2-eth1\n        Port s2-eth2\n            Interface s2-eth2\n    Bridge s3\n        Controller "tcp:10.30.170.48:6633"\n        Controller "tcp:10.30.170.131:6633"\n        Controller "tcp:10.30.171.110:6633"\n        fail_mode: standalone\n        Port s3-eth2\n            Interface s3-eth2\n        Port s3-eth3\n            Interface s3-eth3\n        Port s3-eth1\n            Interface s3-eth1\n        Port s3\n            Interface s3\n                type: internal\n    ovs_version: "2.17.11"' contains 'is_connected' 0 times, not 9 times.</msg>
<arg>${output}</arg>
<arg>is_connected</arg>
<arg>${of_connections}</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="FAIL" start="2026-04-08T00:49:54.458075" elapsed="0.000570">'9a5df812-eb49-4477-a37e-2d464c02791d\n    Bridge s1\n        Controller "tcp:10.30.171.110:6633"\n        Controller "tcp:10.30.170.131:6633"\n        Controller "tcp:10.30.170.48:6633"\n        fail_mode: standalone\n        Port s1-eth2\n            Interface s1-eth2\n        Port s1\n            Interface s1\n                type: internal\n        Port s1-eth1\n            Interface s1-eth1\n    Bridge s2\n        Controller "tcp:10.30.171.110:6633"\n        Controller "tcp:10.30.170.48:6633"\n        Controller "tcp:10.30.170.131:6633"\n        fail_mode: standalone\n        Port s2\n            Interface s2\n                type: internal\n        Port s2-eth3\n            Interface s2-eth3\n        Port s2-eth1\n            Interface s2-eth1\n        Port s2-eth2\n            Interface s2-eth2\n    Bridge s3\n        Controller "tcp:10.30.170.48:6633"\n        Controller "tcp:10.30.170.131:6633"\n        Controller "tcp:10.30.171.110:6633"\n        fail_mode: standalone\n        Port s3-eth2\n            Interface s3-eth2\n        Port s3-eth3\n            Interface s3-eth3\n        Port s3-eth1\n            Interface s3-eth1\n        Port s3\n            Interface s3\n                type: internal\n    ovs_version: "2.17.11"' contains 'is_connected' 0 times, not 9 times.</status>
</kw>
<arg>${TOOLS_SYSTEM_IP}</arg>
<arg>9</arg>
<doc>Check OVS instance with IP ${tools_system} has ${of_connections} OpenFlow connections.</doc>
<status status="FAIL" start="2026-04-08T00:49:53.978039" elapsed="0.480735">'9a5df812-eb49-4477-a37e-2d464c02791d\n    Bridge s1\n        Controller "tcp:10.30.171.110:6633"\n        Controller "tcp:10.30.170.131:6633"\n        Controller "tcp:10.30.170.48:6633"\n        fail_mode: standalone\n        Port s1-eth2\n            Interface s1-eth2\n        Port s1\n            Interface s1\n                type: internal\n        Port s1-eth1\n            Interface s1-eth1\n    Bridge s2\n        Controller "tcp:10.30.171.110:6633"\n        Controller "tcp:10.30.170.48:6633"\n        Controller "tcp:10.30.170.131:6633"\n        fail_mode: standalone\n        Port s2\n            Interface s2\n                type: internal\n        Port s2-eth3\n            Interface s2-eth3\n        Port s2-eth1\n            Interface s2-eth1\n        Port s2-eth2\n            Interface s2-eth2\n    Bridge s3\n        Controller "tcp:10.30.170.48:6633"\n        Controller "tcp:10.30.170.131:6633"\n        Controller "tcp:10.30.171.110:6633"\n        fail_mode: standalone\n        Port s3-eth2\n            Interface s3-eth2\n        Port s3-eth3\n            Interface s3-eth3\n        Port s3-eth1\n            Interface s3-eth1\n        Port s3\n            Interface s3\n                type: internal\n    ovs_version: "2.17.11"' contains 'is_connected' 0 times, not 9 times.</status>
</kw>
<kw name="Check OVS OpenFlow Connections" owner="OVSDB">
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:55.477105" elapsed="0.000034"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:49:55.476670" elapsed="0.000554"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:55.476632" elapsed="0.000629"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:49:55.477724" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T00:49:55.477485" elapsed="0.000484"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:55.478862" level="INFO">Attempting to execute command "sudo ovs-vsctl show" on remote system "10.30.170.192" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:55.478270" elapsed="0.000662"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:49:55.479704" level="INFO">${conn_id} = 31</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:49:55.479183" elapsed="0.000559"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T00:49:55.481332" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T00:49:55.481443" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T00:49:55.480615" elapsed="0.000861"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:49:55.481702" elapsed="0.000504"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T00:49:55.483424" level="INFO">Logging into '10.30.170.192:22' as 'jenkins'.</msg>
<msg time="2026-04-08T00:49:55.844279" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 00:49:47 UTC 2026

  System load:  0.04               Processes:             106
  Usage of /:   19.5% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.192
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 00:49:54 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-1-mininet-ovs-217-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T00:49:55.482954" elapsed="0.361508"/>
</kw>
<msg time="2026-04-08T00:49:55.844556" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:49:55.482449" elapsed="0.362199"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T00:49:55.480042" elapsed="0.364729"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T00:49:55.845325" level="INFO">Executing command 'sudo ovs-vsctl show'.</msg>
<msg time="2026-04-08T00:49:55.878683" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-08T00:49:55.878969" level="INFO">${stdout} = 9a5df812-eb49-4477-a37e-2d464c02791d
    Bridge s1
        Controller "tcp:10.30.171.110:6633"
            is_connected: true
        Controller "tcp:10.30.170.131:6633"
            is_connected: true...</msg>
<msg time="2026-04-08T00:49:55.879072" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T00:49:55.845027" elapsed="0.034096"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:49:55.879543" elapsed="0.000498"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:55.881152" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:55.880499" elapsed="0.000786"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:49:55.881772" elapsed="0.000035"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:49:55.881468" elapsed="0.000410"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:55.881414" elapsed="0.000515"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T00:49:55.882433" elapsed="0.000087"/>
</return>
<status status="PASS" start="2026-04-08T00:49:55.882047" elapsed="0.000577"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:55.882013" elapsed="0.000689"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:49:55.882812" elapsed="0.000049"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:49:55.887811" elapsed="0.000333"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:49:55.888331" elapsed="0.000163"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:49:55.888724" elapsed="0.000108"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:49:55.883610" elapsed="0.005276"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T00:49:55.475876" elapsed="0.413105"/>
</kw>
<msg time="2026-04-08T00:49:55.889044" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:49:55.474962" elapsed="0.414133"/>
</kw>
<msg time="2026-04-08T00:49:55.889231" level="INFO">${output} = 9a5df812-eb49-4477-a37e-2d464c02791d
    Bridge s1
        Controller "tcp:10.30.171.110:6633"
            is_connected: true
        Controller "tcp:10.30.170.131:6633"
            is_connected: true...</msg>
<var>${output}</var>
<arg>${tools_system}</arg>
<arg>sudo ovs-vsctl show</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-08T00:49:55.474217" elapsed="0.415042"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:55.889673" level="INFO">9a5df812-eb49-4477-a37e-2d464c02791d
    Bridge s1
        Controller "tcp:10.30.171.110:6633"
            is_connected: true
        Controller "tcp:10.30.170.131:6633"
            is_connected: true
        Controller "tcp:10.30.170.48:6633"
            is_connected: true
        fail_mode: standalone
        Port s1-eth2
            Interface s1-eth2
        Port s1
            Interface s1
                type: internal
        Port s1-eth1
            Interface s1-eth1
    Bridge s2
        Controller "tcp:10.30.171.110:6633"
            is_connected: true
        Controller "tcp:10.30.170.48:6633"
            is_connected: true
        Controller "tcp:10.30.170.131:6633"
            is_connected: true
        fail_mode: standalone
        Port s2
            Interface s2
                type: internal
        Port s2-eth3
            Interface s2-eth3
        Port s2-eth1
            Interface s2-eth1
        Port s2-eth2
            Interface s2-eth2
    Bridge s3
        Controller "tcp:10.30.170.48:6633"
            is_connected: true
        Controller "tcp:10.30.170.131:6633"
            is_connected: true
        Controller "tcp:10.30.171.110:6633"
            is_connected: true
        fail_mode: standalone
        Port s3-eth2
            Interface s3-eth2
        Port s3-eth3
            Interface s3-eth3
        Port s3-eth1
            Interface s3-eth1
        Port s3
            Interface s3
                type: internal
    ovs_version: "2.17.11"</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:55.889418" elapsed="0.000311"/>
</kw>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T00:49:55.890466" level="INFO">Item found from container 9 times.</msg>
<arg>${output}</arg>
<arg>is_connected</arg>
<arg>${of_connections}</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="PASS" start="2026-04-08T00:49:55.890033" elapsed="0.000513"/>
</kw>
<arg>${TOOLS_SYSTEM_IP}</arg>
<arg>9</arg>
<doc>Check OVS instance with IP ${tools_system} has ${of_connections} OpenFlow connections.</doc>
<status status="PASS" start="2026-04-08T00:49:55.473529" elapsed="0.417083"/>
</kw>
<arg>10s</arg>
<arg>1s</arg>
<arg>OVSDB.Check OVS OpenFlow Connections</arg>
<arg>${TOOLS_SYSTEM_IP}</arg>
<arg>9</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-08T00:49:51.082687" elapsed="4.807976"/>
</kw>
<doc>Start mininet tree,2 with connection to all cluster instances.</doc>
<status status="PASS" start="2026-04-08T00:49:47.001339" elapsed="8.889466"/>
</test>
<test id="s1-s1-t3" name="Check Entity Owner Status And Find Owner and Successor Before Fail" line="29">
<kw name="Get OpenFlow Entity Owner Status For One Device" owner="ClusterOpenFlow">
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:49:55.926292" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:49:55.925876" elapsed="0.000444"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:49:55.926786" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:49:55.926481" elapsed="0.000331"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:49:55.926856" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:49:55.927009" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:49:55.925482" elapsed="0.001551"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T00:49:55.931616" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T00:49:55.931430" elapsed="0.000212"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:49:55.931790" elapsed="0.000192"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:49:55.932400" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:49:55.932133" elapsed="0.000293"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:55.932841" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:55.932594" elapsed="0.000287"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:49:55.933067" elapsed="0.000204"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:49:55.933657" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:49:55.933423" elapsed="0.000259"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:55.934096" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:55.933850" elapsed="0.000287"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:49:55.934650" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:49:55.934308" elapsed="0.000368"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:55.935085" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:55.934848" elapsed="0.000280"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:49:55.935575" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:49:55.935293" elapsed="0.000308"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:49:55.942198" elapsed="0.000219"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:49:55.951348" elapsed="0.000218"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:49:55.952131" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:49:55.951725" elapsed="0.000456"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:49:55.953442" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:49:55.952782" elapsed="0.000703"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:49:55.953626" elapsed="0.000035"/>
</return>
<msg time="2026-04-08T00:49:55.953786" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:49:55.952379" elapsed="0.001432"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:49:55.954454" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:49:55.953981" elapsed="0.000500"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:49:55.955093" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:49:55.954643" elapsed="0.000477"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:49:55.955669" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:49:56.002845" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:49:55.955302" elapsed="0.055840">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:56.011486" elapsed="0.000041"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:56.011741" elapsed="0.000029"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:56.011974" elapsed="0.000029"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:56.012277" elapsed="0.000034"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:56.012527" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:56.012755" elapsed="0.000028"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:56.013188" elapsed="0.000032"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:56.013511" elapsed="0.000030"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:56.013786" elapsed="0.000029"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:49:56.012985" elapsed="0.000915"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:49:56.012860" elapsed="0.001145"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:56.014237" elapsed="0.000031"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:49:56.014327" elapsed="0.000024"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:49:55.950813" elapsed="0.063700">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:49:56.014615" elapsed="0.000022"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T00:49:55.939933" elapsed="0.074825">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:56.015007" elapsed="0.000029"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:56.021165" elapsed="0.000030"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:56.021364" elapsed="0.000022"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T00:49:56.021430" elapsed="0.000016"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T00:49:55.930881" elapsed="0.090658">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:49:56.021661" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:49:56.021706" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:49:55.930295" elapsed="0.091434"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T00:49:56.021947" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:49:56.021823" elapsed="0.000167"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:56.021802" elapsed="0.000210"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:49:56.023401" elapsed="0.000215"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:49:56.024106" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:49:56.023774" elapsed="0.000359"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:49:56.024953" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:49:56.024682" elapsed="0.000297"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:49:56.025026" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:49:56.025190" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:49:56.024343" elapsed="0.000873"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:49:56.025748" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:49:56.025375" elapsed="0.000399"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:49:56.026291" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:49:56.025929" elapsed="0.000389"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:49:56.026747" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:49:56.038219" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:49:56.026478" elapsed="0.015127">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:56.042020" elapsed="0.000051"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:56.042444" elapsed="0.000048"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:56.042924" elapsed="0.000051"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:56.043345" elapsed="0.000049"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:56.043757" elapsed="0.000047"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:56.044129" elapsed="0.000081"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:56.044815" elapsed="0.000063"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:56.045275" elapsed="0.000048"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:56.045639" elapsed="0.000045"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:49:56.044471" elapsed="0.001288"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:49:56.044318" elapsed="0.001499"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:56.046123" elapsed="0.000075"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:49:56.046288" elapsed="0.000035"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:49:56.022826" elapsed="0.023707">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:49:56.046787" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:49:56.046883" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:49:56.022179" elapsed="0.024755"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T00:49:56.048799" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T00:49:56.047680" elapsed="0.001313">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T00:49:56.047118" elapsed="0.002123">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T00:49:56.047076" elapsed="0.002308">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T00:49:56.049487" elapsed="0.000021"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:49:55.929729" elapsed="0.119874">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:56.049783" elapsed="0.000022"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:56.049951" elapsed="0.000019"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T00:49:56.050011" elapsed="0.000020"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T00:49:55.927351" elapsed="0.122771">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:56.050345" elapsed="0.000022"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:56.050525" elapsed="0.000020"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:56.050692" elapsed="0.000019"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:56.050849" elapsed="0.000019"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:56.051013" elapsed="0.000020"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:56.051187" elapsed="0.000021"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T00:49:56.051249" elapsed="0.000015"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T00:49:55.924772" elapsed="0.126579">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:49:57.085014" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:49:57.084534" elapsed="0.000514"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:49:57.085564" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:49:57.085235" elapsed="0.000356"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:49:57.085639" elapsed="0.000043"/>
</return>
<msg time="2026-04-08T00:49:57.085821" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:49:57.084124" elapsed="0.001723"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T00:49:57.090633" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T00:49:57.090423" elapsed="0.000237"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:49:57.090811" elapsed="0.000196"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:49:57.091392" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:49:57.091178" elapsed="0.000240"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:57.091871" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:57.091611" elapsed="0.000302"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:49:57.092058" elapsed="0.000200"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:49:57.092616" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:49:57.092408" elapsed="0.000234"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:57.093110" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:57.092807" elapsed="0.000379"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:49:57.093723" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:49:57.093371" elapsed="0.000378"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:57.094195" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:57.093920" elapsed="0.000321"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:49:57.094761" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:49:57.094440" elapsed="0.000350"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:49:57.101273" elapsed="0.000282"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:49:57.110062" elapsed="0.000245"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:49:57.110845" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:49:57.110463" elapsed="0.000408"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:49:57.112016" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:49:57.111480" elapsed="0.000578"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:49:57.112216" elapsed="0.000035"/>
</return>
<msg time="2026-04-08T00:49:57.112377" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:49:57.111056" elapsed="0.001345"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:49:57.113012" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:49:57.112562" elapsed="0.000476"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:49:57.113646" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:49:57.113214" elapsed="0.000459"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:49:57.114222" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:49:57.127431" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:49:57.113835" elapsed="0.016266">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:57.130424" elapsed="0.000044"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:57.130687" elapsed="0.000030"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:57.131023" elapsed="0.000064"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:57.131495" elapsed="0.000063"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:57.132009" elapsed="0.000056"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:57.132460" elapsed="0.000052"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:57.133080" elapsed="0.000047"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:57.133630" elapsed="0.000076"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:57.134124" elapsed="0.000086"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:49:57.132789" elapsed="0.001556"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:49:57.132625" elapsed="0.001785"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:57.134726" elapsed="0.000046"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:49:57.134860" elapsed="0.000035"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:49:57.109547" elapsed="0.025567">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:49:57.135304" elapsed="0.000035"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T00:49:57.099070" elapsed="0.036459">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:57.136005" elapsed="0.000050"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:57.144333" elapsed="0.000029"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:57.144531" elapsed="0.000022"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T00:49:57.144598" elapsed="0.000016"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T00:49:57.089834" elapsed="0.054870">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:49:57.144823" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:49:57.144866" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:49:57.089243" elapsed="0.055647"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T00:49:57.145100" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:49:57.144981" elapsed="0.000161"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:57.144960" elapsed="0.000219"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:49:57.146514" elapsed="0.000208"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:49:57.147196" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:49:57.146874" elapsed="0.000349"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:49:57.148010" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:49:57.147741" elapsed="0.000295"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:49:57.148083" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:49:57.148253" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:49:57.147405" elapsed="0.000874"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:49:57.148809" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:49:57.148443" elapsed="0.000392"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:49:57.149351" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:49:57.148990" elapsed="0.000387"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:49:57.149787" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:49:57.160968" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:49:57.149565" elapsed="0.013130">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:57.162880" elapsed="0.000022"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:57.163050" elapsed="0.000021"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:57.163230" elapsed="0.000022"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:57.163396" elapsed="0.000020"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:57.163564" elapsed="0.000020"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:57.163724" elapsed="0.000019"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:57.164031" elapsed="0.000020"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:57.164215" elapsed="0.000022"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:57.164376" elapsed="0.000020"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:49:57.163904" elapsed="0.000524"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:49:57.163835" elapsed="0.000620"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:57.164592" elapsed="0.000019"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:49:57.164650" elapsed="0.000016"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:49:57.145950" elapsed="0.018808">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:49:57.164870" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:49:57.164914" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:49:57.145332" elapsed="0.019604"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T00:49:57.165714" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T00:49:57.165384" elapsed="0.000391">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T00:49:57.165020" elapsed="0.000817">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T00:49:57.165001" elapsed="0.000867">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T00:49:57.165914" elapsed="0.000016"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:49:57.088665" elapsed="0.077348">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:57.166207" elapsed="0.000023"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:57.166374" elapsed="0.000020"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T00:49:57.166435" elapsed="0.000014"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T00:49:57.086148" elapsed="0.080385">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:57.166699" elapsed="0.000021"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:57.166882" elapsed="0.000021"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:57.167050" elapsed="0.000020"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:57.167224" elapsed="0.000021"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:57.167392" elapsed="0.000019"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:57.167553" elapsed="0.000020"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T00:49:57.167645" elapsed="0.000016"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T00:49:57.083329" elapsed="0.084417">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:49:58.200029" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:49:58.199562" elapsed="0.000500"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:49:58.200574" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:49:58.200255" elapsed="0.000346"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:49:58.200653" elapsed="0.000039"/>
</return>
<msg time="2026-04-08T00:49:58.200823" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:49:58.199148" elapsed="0.001701"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T00:49:58.205507" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T00:49:58.205315" elapsed="0.000219"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:49:58.205684" elapsed="0.000197"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:49:58.206261" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:49:58.206033" elapsed="0.000254"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:58.206838" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:58.206568" elapsed="0.000314"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:49:58.207034" elapsed="0.000260"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:49:58.207678" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:49:58.207460" elapsed="0.000246"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:58.208204" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:58.207887" elapsed="0.000366"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:49:58.208804" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:49:58.208446" elapsed="0.000385"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:58.209324" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:58.209022" elapsed="0.000348"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:49:58.209821" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:49:58.209532" elapsed="0.000316"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:49:58.218282" elapsed="0.000233"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:49:58.227121" elapsed="0.000237"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:49:58.227910" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:49:58.227515" elapsed="0.000422"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:49:58.229109" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:49:58.228563" elapsed="0.000588"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:49:58.229331" elapsed="0.000042"/>
</return>
<msg time="2026-04-08T00:49:58.229504" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:49:58.228124" elapsed="0.001406"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:49:58.230192" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:49:58.229694" elapsed="0.000594"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:49:58.230975" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:49:58.230457" elapsed="0.000557"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:49:58.231747" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:49:58.246119" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:49:58.231281" elapsed="0.018928">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:58.250689" elapsed="0.000071"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:58.251149" elapsed="0.000125"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:58.251667" elapsed="0.000052"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:58.252054" elapsed="0.000046"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:58.252503" elapsed="0.000049"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:58.252925" elapsed="0.000070"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:58.253723" elapsed="0.000064"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:58.254334" elapsed="0.000053"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:58.254783" elapsed="0.000039"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:49:58.253330" elapsed="0.001582"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:49:58.253120" elapsed="0.001833"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:58.255177" elapsed="0.000032"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:49:58.255271" elapsed="0.000024"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:49:58.226620" elapsed="0.028824">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:49:58.255546" elapsed="0.000022"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T00:49:58.215959" elapsed="0.039729">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:58.255935" elapsed="0.000031"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:58.262137" elapsed="0.000062"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:58.262439" elapsed="0.000030"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T00:49:58.262532" elapsed="0.000022"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T00:49:58.204751" elapsed="0.058009">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:49:58.262929" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:49:58.262992" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:49:58.204188" elapsed="0.058837"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T00:49:58.263356" elapsed="0.000021"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:49:58.263154" elapsed="0.000264"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:58.263124" elapsed="0.000326"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:49:58.265372" elapsed="0.000344"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:49:58.266271" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:49:58.265922" elapsed="0.000376"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:49:58.267320" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:49:58.266825" elapsed="0.000523"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:49:58.267399" elapsed="0.000031"/>
</return>
<msg time="2026-04-08T00:49:58.267553" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:49:58.266483" elapsed="0.001095"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:49:58.268218" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:49:58.267806" elapsed="0.000440"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:49:58.268761" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:49:58.268407" elapsed="0.000382"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:49:58.269190" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:49:58.279630" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:49:58.268956" elapsed="0.013164">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:58.282409" elapsed="0.000033"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:58.282652" elapsed="0.000030"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:58.282884" elapsed="0.000030"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:58.283120" elapsed="0.000029"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:58.283381" elapsed="0.000029"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:58.283612" elapsed="0.000028"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:58.283988" elapsed="0.000029"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:58.284251" elapsed="0.000031"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:58.284485" elapsed="0.000030"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:49:58.283807" elapsed="0.000753"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:49:58.283706" elapsed="0.000892"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:58.284797" elapsed="0.000029"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:49:58.284881" elapsed="0.000022"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:49:58.264570" elapsed="0.020465">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:49:58.285315" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:49:58.285392" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:49:58.263664" elapsed="0.021762"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T00:49:58.286334" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T00:49:58.285856" elapsed="0.000566">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T00:49:58.285549" elapsed="0.000960">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T00:49:58.285521" elapsed="0.001033">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T00:49:58.286620" elapsed="0.000023"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:49:58.203624" elapsed="0.083135">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:58.287006" elapsed="0.000031"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:58.287263" elapsed="0.000029"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T00:49:58.287353" elapsed="0.000021"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T00:49:58.201145" elapsed="0.086347">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:58.287727" elapsed="0.000029"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:58.287976" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:58.288234" elapsed="0.000029"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:58.288463" elapsed="0.000028"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:58.288694" elapsed="0.000028"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:58.288926" elapsed="0.000027"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T00:49:58.289012" elapsed="0.000020"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T00:49:58.198314" elapsed="0.090835">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:49:59.321334" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:49:59.320758" elapsed="0.000611"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:49:59.321965" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:49:59.321546" elapsed="0.000445"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:49:59.322042" elapsed="0.000044"/>
</return>
<msg time="2026-04-08T00:49:59.322237" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:49:59.320329" elapsed="0.001934"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T00:49:59.327207" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T00:49:59.326997" elapsed="0.000238"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:49:59.327390" elapsed="0.000198"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:49:59.327954" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:49:59.327743" elapsed="0.000236"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:59.328468" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:59.328191" elapsed="0.000319"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:49:59.328659" elapsed="0.000190"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:49:59.329235" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:49:59.329004" elapsed="0.000257"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:59.329683" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:59.329435" elapsed="0.000290"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:49:59.330238" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:49:59.329878" elapsed="0.000386"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:49:59.330667" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:49:59.330431" elapsed="0.000279"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:49:59.331141" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:49:59.330860" elapsed="0.000322"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:49:59.337601" elapsed="0.000214"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:49:59.346361" elapsed="0.000214"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:49:59.347118" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:49:59.346732" elapsed="0.000413"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:49:59.348547" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:49:59.347778" elapsed="0.000812"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:49:59.348724" elapsed="0.000044"/>
</return>
<msg time="2026-04-08T00:49:59.348898" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:49:59.347378" elapsed="0.001546"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:49:59.349570" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:49:59.349086" elapsed="0.000511"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:49:59.350198" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:49:59.349757" elapsed="0.000469"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:49:59.350766" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:49:59.366609" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:49:59.350410" elapsed="0.020020">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:59.370856" elapsed="0.000209"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:59.371460" elapsed="0.000050"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:59.371843" elapsed="0.000064"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:59.372285" elapsed="0.000049"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:59.372681" elapsed="0.000046"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:59.373054" elapsed="0.000047"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:59.373692" elapsed="0.000047"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:59.374246" elapsed="0.000050"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:59.374687" elapsed="0.000047"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:49:59.373400" elapsed="0.001471"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:49:59.373241" elapsed="0.001694"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:59.375289" elapsed="0.000048"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:49:59.375429" elapsed="0.000036"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:49:59.345852" elapsed="0.029832">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:49:59.375889" elapsed="0.000037"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T00:49:59.335363" elapsed="0.040757">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:59.376559" elapsed="0.000048"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:59.380866" elapsed="0.000026"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:59.381059" elapsed="0.000021"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T00:49:59.381125" elapsed="0.000016"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T00:49:59.326454" elapsed="0.054793">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:49:59.381362" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:49:59.381408" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:49:59.325867" elapsed="0.055565"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T00:49:59.381641" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:49:59.381525" elapsed="0.000159"/>
</branch>
<status status="PASS" start="2026-04-08T00:49:59.381504" elapsed="0.000203"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:49:59.383067" elapsed="0.000236"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:49:59.383781" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:49:59.383462" elapsed="0.000346"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:49:59.384619" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:49:59.384351" elapsed="0.000295"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:49:59.384694" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:49:59.384843" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:49:59.383991" elapsed="0.000877"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:49:59.385424" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:49:59.385028" elapsed="0.000423"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:49:59.385955" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:49:59.385608" elapsed="0.000373"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:49:59.386361" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:49:59.397723" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:49:59.386141" elapsed="0.015900">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:59.402498" elapsed="0.000053"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:59.402885" elapsed="0.000046"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:59.403283" elapsed="0.000046"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:59.403679" elapsed="0.000046"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:59.404056" elapsed="0.000043"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:59.404446" elapsed="0.000046"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:59.405017" elapsed="0.000045"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:59.405424" elapsed="0.000047"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:59.405785" elapsed="0.000044"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:49:59.404738" elapsed="0.001163"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:49:59.404591" elapsed="0.001368"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:59.406296" elapsed="0.000047"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:49:59.406430" elapsed="0.000034"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:49:59.382519" elapsed="0.024152">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:49:59.406925" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:49:59.407023" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:49:59.381857" elapsed="0.025218"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T00:49:59.408216" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T00:49:59.407816" elapsed="0.000485">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T00:49:59.407291" elapsed="0.001137">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T00:49:59.407248" elapsed="0.001225">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T00:49:59.408535" elapsed="0.000022"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:49:59.325312" elapsed="0.083338">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:59.408830" elapsed="0.000021"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:59.408995" elapsed="0.000020"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T00:49:59.409056" elapsed="0.000016"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T00:49:59.322574" elapsed="0.086604">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:59.409352" elapsed="0.000021"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:59.409530" elapsed="0.000021"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:59.409698" elapsed="0.000020"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:59.409858" elapsed="0.000019"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:59.410028" elapsed="0.000021"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:49:59.410209" elapsed="0.000021"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T00:49:59.410272" elapsed="0.000015"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T00:49:59.319421" elapsed="0.090963">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:50:00.442323" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:50:00.441831" elapsed="0.000525"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:50:00.442844" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:50:00.442528" elapsed="0.000342"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:50:00.442919" elapsed="0.000040"/>
</return>
<msg time="2026-04-08T00:50:00.443089" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:50:00.441429" elapsed="0.001686"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T00:50:00.447711" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T00:50:00.447523" elapsed="0.000214"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:50:00.447885" elapsed="0.000191"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:00.448558" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:00.448335" elapsed="0.000249"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:00.449244" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:00.448779" elapsed="0.000507"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:50:00.449435" elapsed="0.000182"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:00.449980" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:00.449768" elapsed="0.000238"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:00.450434" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:00.450188" elapsed="0.000286"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:00.450964" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:00.450624" elapsed="0.000365"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:00.451404" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:00.451152" elapsed="0.000295"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:00.451883" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:00.451595" elapsed="0.000314"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:50:00.458238" elapsed="0.000213"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:50:00.466932" elapsed="0.000208"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:50:00.467690" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:50:00.467309" elapsed="0.000407"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:00.469061" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:00.468348" elapsed="0.000755"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:50:00.469257" elapsed="0.000034"/>
</return>
<msg time="2026-04-08T00:50:00.469416" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:50:00.467901" elapsed="0.001540"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:50:00.470053" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:50:00.469601" elapsed="0.000479"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:50:00.470681" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:50:00.470255" elapsed="0.000452"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:50:00.471221" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:50:00.482823" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:50:00.470869" elapsed="0.015914">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:00.487238" elapsed="0.000054"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:00.487631" elapsed="0.000047"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:00.488016" elapsed="0.000046"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:00.488435" elapsed="0.000048"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:00.488816" elapsed="0.000045"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:00.489206" elapsed="0.000047"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:00.489802" elapsed="0.000046"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:00.490436" elapsed="0.000050"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:00.490879" elapsed="0.000046"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:50:00.489516" elapsed="0.001544"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:50:00.489360" elapsed="0.001762"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:00.491478" elapsed="0.000057"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:50:00.491623" elapsed="0.000036"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:50:00.466441" elapsed="0.025483">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:50:00.492086" elapsed="0.000035"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T00:50:00.456038" elapsed="0.036307">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:00.492735" elapsed="0.000057"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:00.497145" elapsed="0.000038"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:00.497351" elapsed="0.000021"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T00:50:00.497417" elapsed="0.000016"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T00:50:00.446974" elapsed="0.050549">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:50:00.497636" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:50:00.497679" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:50:00.446416" elapsed="0.051287"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T00:50:00.497910" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:50:00.497794" elapsed="0.000157"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:00.497773" elapsed="0.000200"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:50:00.499321" elapsed="0.000228"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:50:00.500033" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:50:00.499701" elapsed="0.000358"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:00.500859" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:00.500594" elapsed="0.000291"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:50:00.500932" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:50:00.501078" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:50:00.500259" elapsed="0.000843"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:50:00.501737" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:50:00.501319" elapsed="0.000444"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:50:00.502330" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:50:00.501960" elapsed="0.000396"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:50:00.502734" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:50:00.510987" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:50:00.502517" elapsed="0.010401">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:00.513119" elapsed="0.000024"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:00.513312" elapsed="0.000021"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:00.513500" elapsed="0.000022"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:00.513669" elapsed="0.000021"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:00.513842" elapsed="0.000020"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:00.514002" elapsed="0.000020"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:00.514294" elapsed="0.000026"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:00.514469" elapsed="0.000020"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:00.514642" elapsed="0.000022"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:50:00.514151" elapsed="0.000547"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:50:00.514073" elapsed="0.000653"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:00.514872" elapsed="0.000021"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:50:00.514934" elapsed="0.000016"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:50:00.498747" elapsed="0.016312">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:50:00.515205" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:50:00.515251" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:50:00.498122" elapsed="0.017153"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T00:50:00.515978" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T00:50:00.515594" elapsed="0.000447">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T00:50:00.515368" elapsed="0.000736">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T00:50:00.515347" elapsed="0.000790">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T00:50:00.516221" elapsed="0.000016"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:50:00.445859" elapsed="0.070462">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:00.516528" elapsed="0.000030"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:00.516777" elapsed="0.000030"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T00:50:00.516930" elapsed="0.000024"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T00:50:00.443433" elapsed="0.073641">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:00.517335" elapsed="0.000029"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:00.517588" elapsed="0.000027"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:00.517825" elapsed="0.000027"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:00.518068" elapsed="0.000036"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:00.518337" elapsed="0.000029"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:00.518575" elapsed="0.000027"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T00:50:00.518659" elapsed="0.000021"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T00:50:00.440575" elapsed="0.078222">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:50:01.552856" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:50:01.552365" elapsed="0.000524"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:50:01.553415" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:50:01.553062" elapsed="0.000380"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:50:01.553492" elapsed="0.000042"/>
</return>
<msg time="2026-04-08T00:50:01.553668" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:50:01.551936" elapsed="0.001759"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T00:50:01.558600" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T00:50:01.558408" elapsed="0.000219"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:50:01.558780" elapsed="0.000218"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:01.559492" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:01.559217" elapsed="0.000309"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:01.560001" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:01.559737" elapsed="0.000307"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:50:01.560211" elapsed="0.000186"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:01.560768" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:01.560557" elapsed="0.000237"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:01.561234" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:01.560967" elapsed="0.000310"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:01.561769" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:01.561428" elapsed="0.000367"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:01.562379" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:01.562104" elapsed="0.000319"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:01.562857" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:01.562575" elapsed="0.000307"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:50:01.569355" elapsed="0.000213"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:50:01.578294" elapsed="0.000212"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:50:01.579038" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:50:01.578662" elapsed="0.000403"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:01.580220" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:01.579670" elapsed="0.000591"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:50:01.580395" elapsed="0.000037"/>
</return>
<msg time="2026-04-08T00:50:01.580557" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:50:01.579276" elapsed="0.001306"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:50:01.581209" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:50:01.580741" elapsed="0.000495"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:50:01.581842" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:50:01.581395" elapsed="0.000474"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:50:01.582399" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:50:01.593997" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:50:01.582037" elapsed="0.013756">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:01.595980" elapsed="0.000024"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:01.596175" elapsed="0.000023"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:01.596353" elapsed="0.000021"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:01.596521" elapsed="0.000021"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:01.596694" elapsed="0.000021"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:01.596857" elapsed="0.000020"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:01.597136" elapsed="0.000035"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:01.597380" elapsed="0.000021"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:01.597587" elapsed="0.000022"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:50:01.597004" elapsed="0.000665"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:50:01.596929" elapsed="0.000768"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:01.597869" elapsed="0.000021"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:50:01.597933" elapsed="0.000023"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:50:01.577723" elapsed="0.020339">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:50:01.598219" elapsed="0.000017"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T00:50:01.567130" elapsed="0.031196">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:01.598503" elapsed="0.000020"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:01.602852" elapsed="0.000027"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:01.603046" elapsed="0.000020"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T00:50:01.603111" elapsed="0.000015"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T00:50:01.557812" elapsed="0.045417">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:50:01.603347" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:50:01.603390" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:50:01.557253" elapsed="0.046160"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T00:50:01.603627" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:50:01.603507" elapsed="0.000162"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:01.603485" elapsed="0.000206"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:50:01.605029" elapsed="0.000224"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:50:01.605728" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:50:01.605405" elapsed="0.000349"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:01.606621" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:01.606350" elapsed="0.000297"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:50:01.606694" elapsed="0.000031"/>
</return>
<msg time="2026-04-08T00:50:01.606843" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:50:01.605933" elapsed="0.000934"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:50:01.607419" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:50:01.607023" elapsed="0.000422"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:50:01.607939" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:50:01.607598" elapsed="0.000367"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:50:01.608350" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:50:01.617710" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:50:01.608122" elapsed="0.011326">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:01.619631" elapsed="0.000023"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:01.619803" elapsed="0.000020"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:01.620009" elapsed="0.000023"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:01.620192" elapsed="0.000021"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:01.620362" elapsed="0.000019"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:01.620523" elapsed="0.000020"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:01.620780" elapsed="0.000020"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:01.620948" elapsed="0.000019"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:01.621106" elapsed="0.000020"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:50:01.620655" elapsed="0.000518"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:50:01.620588" elapsed="0.000613"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:01.621340" elapsed="0.000050"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:50:01.621430" elapsed="0.000016"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:50:01.604483" elapsed="0.017056">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:50:01.621652" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:50:01.621696" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:50:01.603842" elapsed="0.017877"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T00:50:01.622360" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T00:50:01.622016" elapsed="0.000407">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T00:50:01.621802" elapsed="0.000688">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T00:50:01.621783" elapsed="0.000740">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T00:50:01.622569" elapsed="0.000016"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:50:01.556690" elapsed="0.065977">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:01.622842" elapsed="0.000022"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:01.623014" elapsed="0.000020"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T00:50:01.623076" elapsed="0.000014"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T00:50:01.554042" elapsed="0.069147">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:01.623358" elapsed="0.000021"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:01.623540" elapsed="0.000021"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:01.623714" elapsed="0.000021"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:01.623911" elapsed="0.000021"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:01.624077" elapsed="0.000020"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:01.624255" elapsed="0.000021"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T00:50:01.624319" elapsed="0.000014"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T00:50:01.551000" elapsed="0.073419">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:50:02.660681" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:50:02.660149" elapsed="0.000579"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:50:02.661319" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:50:02.660948" elapsed="0.000399"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:50:02.661397" elapsed="0.000046"/>
</return>
<msg time="2026-04-08T00:50:02.661577" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:50:02.659724" elapsed="0.001878"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T00:50:02.666377" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T00:50:02.666183" elapsed="0.000220"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:50:02.666555" elapsed="0.000194"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:02.667115" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:02.666902" elapsed="0.000238"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:02.667642" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:02.667360" elapsed="0.000326"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:50:02.667833" elapsed="0.000183"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:02.668396" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:02.668183" elapsed="0.000239"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:02.668845" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:02.668598" elapsed="0.000287"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:02.669484" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:02.669107" elapsed="0.000403"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:02.669918" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:02.669676" elapsed="0.000285"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:02.670410" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:02.670109" elapsed="0.000326"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:50:02.676875" elapsed="0.000214"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:50:02.685877" elapsed="0.000240"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:50:02.686731" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:50:02.686293" elapsed="0.000465"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:02.688008" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:02.687468" elapsed="0.000582"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:50:02.688224" elapsed="0.000035"/>
</return>
<msg time="2026-04-08T00:50:02.688386" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:50:02.687037" elapsed="0.001375"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:50:02.689141" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:50:02.688572" elapsed="0.000630"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:50:02.689810" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:50:02.689370" elapsed="0.000469"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:50:02.690363" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:50:02.701319" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:50:02.690005" elapsed="0.013837">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:02.704140" elapsed="0.000058"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:02.704412" elapsed="0.000029"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:02.704665" elapsed="0.000030"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:02.704902" elapsed="0.000028"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:02.705138" elapsed="0.000053"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:02.705401" elapsed="0.000028"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:02.705787" elapsed="0.000028"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:02.706105" elapsed="0.000030"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:02.706508" elapsed="0.000044"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:50:02.705607" elapsed="0.001064"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:50:02.705502" elapsed="0.001223"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:02.706997" elapsed="0.000039"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:50:02.707114" elapsed="0.000029"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:50:02.685339" elapsed="0.022021">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:50:02.707492" elapsed="0.000029"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T00:50:02.674665" elapsed="0.033015">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:02.708013" elapsed="0.000038"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:02.718919" elapsed="0.000071"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:02.719401" elapsed="0.000034"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T00:50:02.719503" elapsed="0.000027"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T00:50:02.665607" elapsed="0.054078">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:50:02.719869" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:50:02.719934" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:50:02.665016" elapsed="0.054953"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T00:50:02.720309" elapsed="0.000020"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:50:02.720101" elapsed="0.000271"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:02.720072" elapsed="0.000332"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:50:02.722072" elapsed="0.000230"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:50:02.722777" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:50:02.722456" elapsed="0.000346"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:02.723612" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:02.723343" elapsed="0.000295"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:50:02.723685" elapsed="0.000032"/>
</return>
<msg time="2026-04-08T00:50:02.723836" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:50:02.722985" elapsed="0.000876"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:50:02.724409" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:50:02.724020" elapsed="0.000416"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:50:02.724972" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:50:02.724620" elapsed="0.000383"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:50:02.725429" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:50:02.734570" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:50:02.725208" elapsed="0.013421">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:02.739072" elapsed="0.000053"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:02.739684" elapsed="0.000049"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:02.740077" elapsed="0.000047"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:02.740543" elapsed="0.000052"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:02.740968" elapsed="0.000054"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:02.741410" elapsed="0.000051"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:02.742062" elapsed="0.000046"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:02.742480" elapsed="0.000045"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:02.742921" elapsed="0.000047"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:50:02.741741" elapsed="0.001302"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:50:02.741575" elapsed="0.001526"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:02.743446" elapsed="0.000045"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:50:02.743578" elapsed="0.000034"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:50:02.721503" elapsed="0.022314">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:50:02.744069" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:50:02.744196" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:50:02.720703" elapsed="0.023549"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T00:50:02.745354" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T00:50:02.744981" elapsed="0.000434">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T00:50:02.744497" elapsed="0.000979">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T00:50:02.744452" elapsed="0.001055">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T00:50:02.745553" elapsed="0.000015"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:50:02.664453" elapsed="0.081198">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:02.745850" elapsed="0.000028"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:02.746045" elapsed="0.000021"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T00:50:02.746108" elapsed="0.000015"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T00:50:02.661947" elapsed="0.084278">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:02.746396" elapsed="0.000021"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:02.746576" elapsed="0.000021"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:02.746744" elapsed="0.000020"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:02.746904" elapsed="0.000020"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:02.747073" elapsed="0.000020"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:02.747271" elapsed="0.000026"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T00:50:02.747341" elapsed="0.000015"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T00:50:02.658874" elapsed="0.088568">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:50:03.782494" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:50:03.781970" elapsed="0.000559"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:50:03.783022" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:50:03.782702" elapsed="0.000346"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:50:03.783098" elapsed="0.000045"/>
</return>
<msg time="2026-04-08T00:50:03.783297" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:50:03.781557" elapsed="0.001765"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T00:50:03.787960" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T00:50:03.787766" elapsed="0.000221"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:50:03.788140" elapsed="0.000214"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:03.788722" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:03.788507" elapsed="0.000243"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:03.789241" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:03.788941" elapsed="0.000344"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:50:03.789434" elapsed="0.000184"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:03.789980" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:03.789770" elapsed="0.000235"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:03.790529" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:03.790187" elapsed="0.000384"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:03.791072" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:03.790726" elapsed="0.000372"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:03.791528" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:03.791286" elapsed="0.000286"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:03.792010" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:03.791724" elapsed="0.000311"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:50:03.798740" elapsed="0.000221"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:50:03.807807" elapsed="0.000219"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:50:03.808611" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:50:03.808205" elapsed="0.000433"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:03.809864" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:03.809311" elapsed="0.000596"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:50:03.810042" elapsed="0.000035"/>
</return>
<msg time="2026-04-08T00:50:03.810222" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:50:03.808876" elapsed="0.001372"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:50:03.810886" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:50:03.810410" elapsed="0.000504"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:50:03.811559" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:50:03.811075" elapsed="0.000512"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:50:03.812111" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:50:03.822890" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:50:03.811754" elapsed="0.015696">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:03.827880" elapsed="0.000053"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:03.828312" elapsed="0.000050"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:03.828687" elapsed="0.000068"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:03.829087" elapsed="0.000046"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:03.829502" elapsed="0.000047"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:03.829871" elapsed="0.000045"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:03.830509" elapsed="0.000047"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:03.831016" elapsed="0.000047"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:03.831488" elapsed="0.000049"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:50:03.830216" elapsed="0.001455"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:50:03.830026" elapsed="0.001709"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:03.832055" elapsed="0.000049"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:50:03.832224" elapsed="0.000037"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:50:03.807258" elapsed="0.025229">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:50:03.832642" elapsed="0.000033"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T00:50:03.796520" elapsed="0.036411">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:03.833178" elapsed="0.000023"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:03.837592" elapsed="0.000036"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:03.837842" elapsed="0.000028"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T00:50:03.837932" elapsed="0.000021"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T00:50:03.787222" elapsed="0.050844">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:50:03.838207" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:50:03.838252" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:50:03.786632" elapsed="0.051644"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T00:50:03.838535" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:50:03.838413" elapsed="0.000166"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:03.838391" elapsed="0.000211"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:50:03.840019" elapsed="0.000234"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:50:03.840733" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:50:03.840407" elapsed="0.000353"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:03.841765" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:03.841307" elapsed="0.000486"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:50:03.841843" elapsed="0.000032"/>
</return>
<msg time="2026-04-08T00:50:03.841999" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:50:03.840942" elapsed="0.001082"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:50:03.842583" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:50:03.842202" elapsed="0.000408"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:50:03.843127" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:50:03.842769" elapsed="0.000409"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:50:03.843574" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:50:03.853352" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:50:03.843364" elapsed="0.011729">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:03.855302" elapsed="0.000024"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:03.855475" elapsed="0.000023"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:03.855682" elapsed="0.000024"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:03.855856" elapsed="0.000021"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:03.856027" elapsed="0.000022"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:03.856208" elapsed="0.000022"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:03.856474" elapsed="0.000021"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:03.856736" elapsed="0.000026"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:03.856910" elapsed="0.000020"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:50:03.856347" elapsed="0.000615"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:50:03.856277" elapsed="0.000712"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:03.857302" elapsed="0.000048"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:50:03.857439" elapsed="0.000035"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:50:03.839409" elapsed="0.018273">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:50:03.857934" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:50:03.858032" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:50:03.838756" elapsed="0.019326"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T00:50:03.859653" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T00:50:03.858876" elapsed="0.000915">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T00:50:03.858389" elapsed="0.001539">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T00:50:03.858343" elapsed="0.001654">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T00:50:03.860103" elapsed="0.000035"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:50:03.786059" elapsed="0.074300">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:03.860809" elapsed="0.000049"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:03.861121" elapsed="0.000027"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T00:50:03.861230" elapsed="0.000021"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T00:50:03.783622" elapsed="0.077747">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:03.861600" elapsed="0.000029"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:03.861846" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:03.862078" elapsed="0.000028"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:03.862321" elapsed="0.000028"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:03.862553" elapsed="0.000028"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:03.862779" elapsed="0.000027"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T00:50:03.862863" elapsed="0.000020"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T00:50:03.780653" elapsed="0.082345">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:50:04.895854" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:50:04.895303" elapsed="0.000586"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:50:04.896399" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:50:04.896065" elapsed="0.000361"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:50:04.896475" elapsed="0.000045"/>
</return>
<msg time="2026-04-08T00:50:04.896655" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:50:04.894895" elapsed="0.001784"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T00:50:04.901637" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T00:50:04.901445" elapsed="0.000218"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:50:04.901815" elapsed="0.000189"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:04.902491" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:04.902172" elapsed="0.000345"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:04.902969" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:04.902713" elapsed="0.000298"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:50:04.903175" elapsed="0.000188"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:04.903720" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:04.903514" elapsed="0.000231"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:04.904151" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:04.903911" elapsed="0.000297"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:04.904698" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:04.904359" elapsed="0.000364"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:04.905120" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:04.904886" elapsed="0.000292"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:04.905632" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:04.905328" elapsed="0.000332"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:50:04.912212" elapsed="0.000215"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:50:04.921384" elapsed="0.000214"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:50:04.922221" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:50:04.921753" elapsed="0.000497"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:04.923412" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:04.922842" elapsed="0.000612"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:50:04.923590" elapsed="0.000034"/>
</return>
<msg time="2026-04-08T00:50:04.923750" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:50:04.922445" elapsed="0.001331"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:50:04.924403" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:50:04.923936" elapsed="0.000494"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:50:04.925015" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:50:04.924589" elapsed="0.000453"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:50:04.925556" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:50:04.937307" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:50:04.925219" elapsed="0.016109">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:04.941751" elapsed="0.000052"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:04.942227" elapsed="0.000051"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:04.942614" elapsed="0.000047"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:04.942985" elapsed="0.000045"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:04.943483" elapsed="0.000049"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:04.943855" elapsed="0.000046"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:04.944499" elapsed="0.000047"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:04.945005" elapsed="0.000046"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:04.945480" elapsed="0.000048"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:50:04.944197" elapsed="0.001467"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:50:04.944008" elapsed="0.001718"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:04.946148" elapsed="0.000091"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:50:04.946339" elapsed="0.000038"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:50:04.920828" elapsed="0.025773">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:50:04.946758" elapsed="0.000034"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T00:50:04.909990" elapsed="0.036986">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:04.947288" elapsed="0.000021"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:04.951462" elapsed="0.000027"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:04.951654" elapsed="0.000021"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T00:50:04.951719" elapsed="0.000015"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T00:50:04.900874" elapsed="0.050949">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:50:04.951937" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:50:04.951982" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:50:04.900310" elapsed="0.051695"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T00:50:04.952230" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:50:04.952097" elapsed="0.000177"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:04.952077" elapsed="0.000219"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:50:04.953616" elapsed="0.000209"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:50:04.954321" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:50:04.953987" elapsed="0.000360"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:04.955127" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:04.954862" elapsed="0.000292"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:50:04.955253" elapsed="0.000032"/>
</return>
<msg time="2026-04-08T00:50:04.955406" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:50:04.954526" elapsed="0.000905"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:50:04.955963" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:50:04.955588" elapsed="0.000401"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:50:04.956532" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:50:04.956153" elapsed="0.000405"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:50:04.956938" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:50:04.967724" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:50:04.956719" elapsed="0.014404">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:04.971569" elapsed="0.000051"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:04.971952" elapsed="0.000045"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:04.972346" elapsed="0.000047"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:04.972728" elapsed="0.000046"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:04.973102" elapsed="0.000043"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:04.973500" elapsed="0.000044"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:04.974091" elapsed="0.000045"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:04.974504" elapsed="0.000044"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:04.974856" elapsed="0.000424"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:50:04.973790" elapsed="0.001569"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:50:04.973643" elapsed="0.001775"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:04.975735" elapsed="0.000046"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:50:04.975868" elapsed="0.000034"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:50:04.953056" elapsed="0.023055">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:50:04.976422" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:50:04.976561" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:50:04.952446" elapsed="0.024173"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T00:50:04.978089" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T00:50:04.977326" elapsed="0.000844">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T00:50:04.976809" elapsed="0.001426">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T00:50:04.976765" elapsed="0.001502">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T00:50:04.978313" elapsed="0.000015"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:50:04.899743" elapsed="0.078667">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:04.978628" elapsed="0.000022"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:04.978796" elapsed="0.000021"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T00:50:04.978860" elapsed="0.000015"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T00:50:04.896974" elapsed="0.081986">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:04.979129" elapsed="0.000021"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:04.979326" elapsed="0.000020"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:04.979496" elapsed="0.000020"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:04.979657" elapsed="0.000020"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:04.979822" elapsed="0.000020"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:04.979984" elapsed="0.000019"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T00:50:04.980044" elapsed="0.000014"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T00:50:04.894052" elapsed="0.086090">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:50:06.010207" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:50:06.009718" elapsed="0.000521"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:50:06.010722" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:50:06.010410" elapsed="0.000339"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:50:06.010797" elapsed="0.000040"/>
</return>
<msg time="2026-04-08T00:50:06.010966" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:50:06.009328" elapsed="0.001664"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T00:50:06.015848" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T00:50:06.015660" elapsed="0.000216"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:50:06.016027" elapsed="0.000208"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:06.016610" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:06.016399" elapsed="0.000237"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:06.017074" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:06.016820" elapsed="0.000297"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:50:06.017279" elapsed="0.000182"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:06.017819" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:06.017612" elapsed="0.000233"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:06.018364" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:06.018094" elapsed="0.000312"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:06.018903" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:06.018559" elapsed="0.000370"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:06.019530" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:06.019094" elapsed="0.000482"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:06.020014" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:06.019727" elapsed="0.000313"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:50:06.026432" elapsed="0.000220"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:50:06.035366" elapsed="0.000257"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:50:06.036243" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:50:06.035793" elapsed="0.000479"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:06.037463" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:06.036896" elapsed="0.000608"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:50:06.037642" elapsed="0.000042"/>
</return>
<msg time="2026-04-08T00:50:06.037815" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:50:06.036493" elapsed="0.001348"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:50:06.038494" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:50:06.038008" elapsed="0.000514"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:50:06.039109" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:50:06.038681" elapsed="0.000455"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:50:06.039654" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:50:06.052325" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:50:06.039318" elapsed="0.017070">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:06.056882" elapsed="0.000059"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:06.057321" elapsed="0.000049"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:06.057700" elapsed="0.000046"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:06.058073" elapsed="0.000046"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:06.058486" elapsed="0.000045"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:06.058850" elapsed="0.000046"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:06.059503" elapsed="0.000046"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:06.060016" elapsed="0.000046"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:06.060574" elapsed="0.000048"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:50:06.059197" elapsed="0.001557"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:50:06.059002" elapsed="0.001815"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:06.061100" elapsed="0.000020"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:50:06.061180" elapsed="0.000019"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:50:06.034748" elapsed="0.026572">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:50:06.061465" elapsed="0.000017"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T00:50:06.024200" elapsed="0.037370">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:06.061752" elapsed="0.000021"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:06.066245" elapsed="0.000029"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:06.066447" elapsed="0.000026"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T00:50:06.066520" elapsed="0.000016"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T00:50:06.015099" elapsed="0.051529">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:50:06.066760" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:50:06.066806" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:50:06.014434" elapsed="0.052396"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T00:50:06.067061" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:50:06.066928" elapsed="0.000176"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:06.066906" elapsed="0.000221"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:50:06.068578" elapsed="0.000214"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:50:06.069299" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:50:06.068945" elapsed="0.000380"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:06.070117" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:06.069847" elapsed="0.000296"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:50:06.070207" elapsed="0.000032"/>
</return>
<msg time="2026-04-08T00:50:06.070360" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:50:06.069509" elapsed="0.000875"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:50:06.070916" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:50:06.070542" elapsed="0.000400"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:50:06.071467" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:50:06.071097" elapsed="0.000396"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:50:06.071880" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:50:06.081180" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:50:06.071653" elapsed="0.012295">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:06.084537" elapsed="0.000052"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:06.084932" elapsed="0.000047"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:06.085336" elapsed="0.000047"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:06.085712" elapsed="0.000046"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:06.086095" elapsed="0.000046"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:06.086503" elapsed="0.000046"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:06.087092" elapsed="0.000046"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:06.087507" elapsed="0.000047"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:06.087870" elapsed="0.000045"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:50:06.086804" elapsed="0.001212"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:50:06.086652" elapsed="0.001425"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:06.088426" elapsed="0.000059"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:50:06.088575" elapsed="0.000034"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:50:06.067978" elapsed="0.020840">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:50:06.089071" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:50:06.089197" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:50:06.067298" elapsed="0.021966"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T00:50:06.090810" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T00:50:06.090008" elapsed="0.000940">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T00:50:06.089507" elapsed="0.001580">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T00:50:06.089449" elapsed="0.001760">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T00:50:06.091353" elapsed="0.000046"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:50:06.013868" elapsed="0.077767">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:06.092093" elapsed="0.000052"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:06.092510" elapsed="0.000045"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T00:50:06.092647" elapsed="0.000046"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T00:50:06.011304" elapsed="0.081580">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:06.093233" elapsed="0.000022"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:06.093452" elapsed="0.000021"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:06.093622" elapsed="0.000020"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:06.093783" elapsed="0.000019"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:06.093953" elapsed="0.000020"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:06.094117" elapsed="0.000020"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T00:50:06.094194" elapsed="0.000015"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T00:50:06.008438" elapsed="0.085858">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:50:07.125206" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:50:07.124724" elapsed="0.000516"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:50:07.125726" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:50:07.125411" elapsed="0.000342"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:50:07.125800" elapsed="0.000042"/>
</return>
<msg time="2026-04-08T00:50:07.125972" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:50:07.124330" elapsed="0.001668"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T00:50:07.134364" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T00:50:07.134058" elapsed="0.000346"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:50:07.134629" elapsed="0.000284"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:07.135504" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:07.135185" elapsed="0.000357"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:07.136207" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:07.135810" elapsed="0.000461"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:50:07.136488" elapsed="0.000289"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:07.137517" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:07.137062" elapsed="0.000508"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:07.138262" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:07.137841" elapsed="0.000494"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:07.139220" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:07.138693" elapsed="0.000565"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:07.139903" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:07.139563" elapsed="0.000421"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:07.140728" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:07.140297" elapsed="0.000468"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:50:07.148520" elapsed="0.000268"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:50:07.159771" elapsed="0.000441"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:50:07.160765" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:50:07.160376" elapsed="0.000416"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:07.161986" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:07.161412" elapsed="0.000619"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:50:07.162185" elapsed="0.000042"/>
</return>
<msg time="2026-04-08T00:50:07.162357" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:50:07.160985" elapsed="0.001398"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:50:07.163072" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:50:07.162546" elapsed="0.000555"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:50:07.163723" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:50:07.163284" elapsed="0.000467"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:50:07.164343" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:50:07.176265" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:50:07.163982" elapsed="0.015287">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:07.179745" elapsed="0.000058"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:07.180144" elapsed="0.000083"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:07.180561" elapsed="0.000048"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:07.180932" elapsed="0.000046"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:07.181354" elapsed="0.000050"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:07.181723" elapsed="0.000046"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:07.182380" elapsed="0.000049"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:07.182907" elapsed="0.000057"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:07.183446" elapsed="0.000051"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:50:07.182043" elapsed="0.001595"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:50:07.181879" elapsed="0.001822"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:07.184024" elapsed="0.000048"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:50:07.184192" elapsed="0.000040"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:50:07.158969" elapsed="0.025493">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:50:07.184619" elapsed="0.000035"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T00:50:07.146169" elapsed="0.038674">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:07.185382" elapsed="0.000051"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:07.190869" elapsed="0.000030"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:07.191068" elapsed="0.000021"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T00:50:07.191134" elapsed="0.000015"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T00:50:07.133244" elapsed="0.058012">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:50:07.191374" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:50:07.191445" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:50:07.132379" elapsed="0.059090"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T00:50:07.191687" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:50:07.191564" elapsed="0.000166"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:07.191543" elapsed="0.000210"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:50:07.193121" elapsed="0.000227"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:50:07.193811" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:50:07.193500" elapsed="0.000336"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:07.194632" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:07.194367" elapsed="0.000291"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:50:07.194705" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:50:07.194879" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:50:07.194015" elapsed="0.000890"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:50:07.195449" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:50:07.195063" elapsed="0.000411"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:50:07.195979" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:50:07.195629" elapsed="0.000375"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:50:07.196393" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:50:07.206695" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:50:07.196178" elapsed="0.013122">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:07.209558" elapsed="0.000048"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:07.209817" elapsed="0.000028"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:07.210058" elapsed="0.000029"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:07.210308" elapsed="0.000029"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:07.210543" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:07.210781" elapsed="0.000029"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:07.211215" elapsed="0.000086"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:07.211524" elapsed="0.000029"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:07.211752" elapsed="0.000029"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:50:07.210969" elapsed="0.000857"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:50:07.210874" elapsed="0.000989"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:07.212071" elapsed="0.000029"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:50:07.212179" elapsed="0.000023"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:50:07.192572" elapsed="0.019762">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:50:07.212507" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:50:07.212567" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:50:07.191903" elapsed="0.020697"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T00:50:07.213565" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T00:50:07.213077" elapsed="0.000581">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T00:50:07.212771" elapsed="0.000974">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T00:50:07.212742" elapsed="0.001047">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T00:50:07.213853" elapsed="0.000022"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:50:07.131210" elapsed="0.082819">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:07.214297" elapsed="0.000031"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:07.214532" elapsed="0.000028"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T00:50:07.214617" elapsed="0.000020"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T00:50:07.126310" elapsed="0.088468">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:07.215017" elapsed="0.000029"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:07.215285" elapsed="0.000030"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:07.215529" elapsed="0.000028"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:07.215766" elapsed="0.000028"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:07.216053" elapsed="0.000030"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:07.216307" elapsed="0.000028"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T00:50:07.216394" elapsed="0.000020"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T00:50:07.123511" elapsed="0.093035">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:50:08.251253" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:50:08.250743" elapsed="0.000545"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:50:08.251778" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:50:08.251459" elapsed="0.000345"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:50:08.251852" elapsed="0.000041"/>
</return>
<msg time="2026-04-08T00:50:08.252026" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:50:08.250325" elapsed="0.001726"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T00:50:08.256735" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T00:50:08.256545" elapsed="0.000217"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:50:08.256914" elapsed="0.000193"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:08.257494" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:08.257283" elapsed="0.000236"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:08.257959" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:08.257701" elapsed="0.000299"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:50:08.258146" elapsed="0.000199"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:08.258746" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:08.258496" elapsed="0.000277"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:08.259208" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:08.258943" elapsed="0.000306"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:08.259744" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:08.259401" elapsed="0.000369"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:08.260212" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:08.259936" elapsed="0.000321"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:08.260692" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:08.260408" elapsed="0.000310"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:50:08.267266" elapsed="0.000222"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:50:08.275988" elapsed="0.000229"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:50:08.276771" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:50:08.276374" elapsed="0.000424"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:08.277943" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:08.277407" elapsed="0.000578"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:50:08.278122" elapsed="0.000048"/>
</return>
<msg time="2026-04-08T00:50:08.278298" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:50:08.276985" elapsed="0.001338"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:50:08.278937" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:50:08.278495" elapsed="0.000470"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:50:08.279640" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:50:08.279201" elapsed="0.000466"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:50:08.280177" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:50:08.290256" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:50:08.279829" elapsed="0.012198">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:08.292232" elapsed="0.000024"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:08.292408" elapsed="0.000021"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:08.292575" elapsed="0.000020"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:08.292738" elapsed="0.000020"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:08.292905" elapsed="0.000020"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:08.293065" elapsed="0.000020"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:08.293360" elapsed="0.000020"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:08.293586" elapsed="0.000021"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:08.293777" elapsed="0.000021"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:50:08.293228" elapsed="0.000629"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:50:08.293135" elapsed="0.000752"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:08.294030" elapsed="0.000020"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:50:08.294089" elapsed="0.000015"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:50:08.275492" elapsed="0.018738">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:50:08.294304" elapsed="0.000016"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T00:50:08.264985" elapsed="0.029439">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:08.294603" elapsed="0.000022"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:08.300234" elapsed="0.000038"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:08.300504" elapsed="0.000029"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T00:50:08.300595" elapsed="0.000022"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T00:50:08.255988" elapsed="0.044754">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:50:08.300952" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:50:08.301013" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:50:08.255433" elapsed="0.045612"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T00:50:08.301355" elapsed="0.000019"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:50:08.301190" elapsed="0.000225"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:08.301140" elapsed="0.000308"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:50:08.303295" elapsed="0.000294"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:50:08.304260" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:50:08.303805" elapsed="0.000493"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:08.305812" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:08.305027" elapsed="0.000823"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:50:08.305918" elapsed="0.000043"/>
</return>
<msg time="2026-04-08T00:50:08.306130" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:50:08.304551" elapsed="0.001634"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:50:08.306966" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:50:08.306446" elapsed="0.000557"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:50:08.307603" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:50:08.307247" elapsed="0.000382"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:50:08.307992" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:50:08.318340" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:50:08.307792" elapsed="0.013330">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:08.321577" elapsed="0.000052"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:08.321964" elapsed="0.000046"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:08.322385" elapsed="0.000047"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:08.322759" elapsed="0.000044"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:08.323134" elapsed="0.000074"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:08.323531" elapsed="0.000045"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:08.324106" elapsed="0.000044"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:08.324527" elapsed="0.000045"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:08.324883" elapsed="0.000044"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:50:08.323822" elapsed="0.001177"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:50:08.323674" elapsed="0.001382"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:08.325396" elapsed="0.000047"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:50:08.325531" elapsed="0.000034"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:50:08.302515" elapsed="0.023259">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:50:08.326330" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:50:08.326436" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:50:08.301659" elapsed="0.024829"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T00:50:08.327551" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T00:50:08.327193" elapsed="0.000419">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T00:50:08.326678" elapsed="0.000995">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T00:50:08.326634" elapsed="0.001072">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T00:50:08.327752" elapsed="0.000016"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:50:08.254858" elapsed="0.072994">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:08.328029" elapsed="0.000021"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:08.328211" elapsed="0.000021"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T00:50:08.328275" elapsed="0.000015"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T00:50:08.252359" elapsed="0.076016">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:08.328544" elapsed="0.000028"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:08.328732" elapsed="0.000020"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:08.328903" elapsed="0.000020"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:08.329065" elapsed="0.000020"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:08.329254" elapsed="0.000021"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:08.329420" elapsed="0.000020"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T00:50:08.329481" elapsed="0.000015"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T00:50:08.249526" elapsed="0.080053">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:50:09.361241" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:50:09.360711" elapsed="0.000564"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:50:09.361764" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:50:09.361449" elapsed="0.000342"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:50:09.361838" elapsed="0.000041"/>
</return>
<msg time="2026-04-08T00:50:09.362008" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:50:09.360318" elapsed="0.001802"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T00:50:09.367013" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T00:50:09.366822" elapsed="0.000218"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:50:09.367211" elapsed="0.000195"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:09.367767" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:09.367559" elapsed="0.000232"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:09.368249" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:09.367978" elapsed="0.000314"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:50:09.368441" elapsed="0.000180"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:09.368979" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:09.368772" elapsed="0.000232"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:09.369430" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:09.369186" elapsed="0.000285"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:09.369962" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:09.369622" elapsed="0.000365"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:09.370403" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:09.370152" elapsed="0.000293"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:09.370910" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:09.370619" elapsed="0.000317"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:50:09.377305" elapsed="0.000212"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:50:09.386082" elapsed="0.000229"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:50:09.386862" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:50:09.386467" elapsed="0.000422"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:09.388040" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:09.387507" elapsed="0.000575"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:50:09.388234" elapsed="0.000037"/>
</return>
<msg time="2026-04-08T00:50:09.388396" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:50:09.387075" elapsed="0.001346"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:50:09.389030" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:50:09.388581" elapsed="0.000476"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:50:09.389662" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:50:09.389234" elapsed="0.000456"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:50:09.390207" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:50:09.400976" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:50:09.389852" elapsed="0.014907">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:09.405220" elapsed="0.000055"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:09.405618" elapsed="0.000047"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:09.406088" elapsed="0.000048"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:09.406533" elapsed="0.000049"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:09.406924" elapsed="0.000045"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:09.407345" elapsed="0.000055"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:09.407966" elapsed="0.000045"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:09.408551" elapsed="0.000050"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:09.408995" elapsed="0.000048"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:50:09.407675" elapsed="0.001557"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:50:09.407519" elapsed="0.001801"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:09.409650" elapsed="0.000062"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:50:09.409802" elapsed="0.000036"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:50:09.385591" elapsed="0.024472">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:50:09.410258" elapsed="0.000036"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T00:50:09.375056" elapsed="0.035494">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:09.410955" elapsed="0.000047"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:09.415396" elapsed="0.000027"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:09.415590" elapsed="0.000021"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T00:50:09.415655" elapsed="0.000015"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T00:50:09.366267" elapsed="0.049493">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:50:09.415873" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:50:09.415917" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:50:09.365695" elapsed="0.050245"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T00:50:09.416149" elapsed="0.000029"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:50:09.416032" elapsed="0.000176"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:09.416011" elapsed="0.000221"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:50:09.417541" elapsed="0.000208"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:50:09.418229" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:50:09.417907" elapsed="0.000348"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:09.419093" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:09.418828" elapsed="0.000292"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:50:09.419182" elapsed="0.000031"/>
</return>
<msg time="2026-04-08T00:50:09.419332" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:50:09.418490" elapsed="0.000867"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:50:09.419882" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:50:09.419515" elapsed="0.000394"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:50:09.420426" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:50:09.420063" elapsed="0.000389"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:50:09.420818" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:50:09.428758" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:50:09.420611" elapsed="0.010031">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:09.430827" elapsed="0.000023"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:09.430998" elapsed="0.000020"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:09.431177" elapsed="0.000022"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:09.431418" elapsed="0.000050"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:09.431809" elapsed="0.000046"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:09.432197" elapsed="0.000050"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:09.432776" elapsed="0.000045"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:09.433153" elapsed="0.000096"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:09.433582" elapsed="0.000044"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:50:09.432494" elapsed="0.001205"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:50:09.432347" elapsed="0.001409"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:09.434060" elapsed="0.000044"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:50:09.434227" elapsed="0.000036"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:50:09.416982" elapsed="0.017516">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:50:09.434768" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:50:09.434869" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:50:09.416391" elapsed="0.018530"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T00:50:09.436889" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T00:50:09.435611" elapsed="0.001422">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T00:50:09.435102" elapsed="0.002112">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T00:50:09.435061" elapsed="0.002236">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T00:50:09.437407" elapsed="0.000036"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:50:09.365122" elapsed="0.072619">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:09.438152" elapsed="0.000084"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:09.438621" elapsed="0.000047"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T00:50:09.438763" elapsed="0.000033"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T00:50:09.362440" elapsed="0.076544">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:09.439385" elapsed="0.000047"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:09.439779" elapsed="0.000044"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:09.440151" elapsed="0.000074"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:09.440540" elapsed="0.000043"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:09.440902" elapsed="0.000043"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:09.441292" elapsed="0.000045"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T00:50:09.441431" elapsed="0.000033"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T00:50:09.359496" elapsed="0.082153">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:50:10.478378" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:50:10.477900" elapsed="0.000511"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:50:10.478897" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:50:10.478579" elapsed="0.000344"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:50:10.478970" elapsed="0.000039"/>
</return>
<msg time="2026-04-08T00:50:10.479172" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:50:10.477511" elapsed="0.001689"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T00:50:10.483817" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T00:50:10.483627" elapsed="0.000216"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:50:10.483994" elapsed="0.000215"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:10.484731" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:10.484433" elapsed="0.000333"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:10.485498" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:10.485012" elapsed="0.000545"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:50:10.485762" elapsed="0.000254"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:10.486552" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:10.486251" elapsed="0.000337"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:10.487216" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:10.486821" elapsed="0.000454"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:10.487962" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:10.487488" elapsed="0.000510"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:10.488583" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:10.488248" elapsed="0.000394"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:10.489268" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:10.488849" elapsed="0.000455"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:50:10.497592" elapsed="0.000235"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:50:10.506371" elapsed="0.000211"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:50:10.507141" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:50:10.506737" elapsed="0.000458"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:10.508344" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:10.507790" elapsed="0.000594"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:50:10.508516" elapsed="0.000033"/>
</return>
<msg time="2026-04-08T00:50:10.508672" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:50:10.507393" elapsed="0.001304"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:50:10.509313" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:50:10.508857" elapsed="0.000483"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:50:10.509924" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:50:10.509499" elapsed="0.000451"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:50:10.510471" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:50:10.521829" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:50:10.510113" elapsed="0.014243">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:10.524618" elapsed="0.000032"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:10.524860" elapsed="0.000029"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:10.525093" elapsed="0.000028"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:10.525351" elapsed="0.000030"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:10.525598" elapsed="0.000029"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:10.525829" elapsed="0.000028"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:10.526229" elapsed="0.000030"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:10.526546" elapsed="0.000030"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:10.526816" elapsed="0.000029"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:50:10.526028" elapsed="0.001032"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:50:10.525924" elapsed="0.001185"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:10.527352" elapsed="0.000032"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:50:10.527441" elapsed="0.000022"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:50:10.505865" elapsed="0.021737">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:50:10.527701" elapsed="0.000022"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T00:50:10.495339" elapsed="0.032500">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:10.528082" elapsed="0.000030"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:10.534128" elapsed="0.000052"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:10.534415" elapsed="0.000029"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T00:50:10.534508" elapsed="0.000021"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T00:50:10.483008" elapsed="0.051646">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:50:10.534864" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:50:10.534979" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:50:10.482457" elapsed="0.052561"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T00:50:10.535341" elapsed="0.000019"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:50:10.535151" elapsed="0.000250"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:10.535122" elapsed="0.000309"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:50:10.537269" elapsed="0.000289"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:50:10.538209" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:50:10.537768" elapsed="0.000478"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:10.539465" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:10.539027" elapsed="0.000474"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:50:10.539567" elapsed="0.000041"/>
</return>
<msg time="2026-04-08T00:50:10.539771" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:50:10.538498" elapsed="0.001306"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:50:10.540571" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:50:10.540030" elapsed="0.000577"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:50:10.541332" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:50:10.540831" elapsed="0.000537"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:50:10.542117" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:50:10.552661" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:50:10.541757" elapsed="0.014361">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:10.556578" elapsed="0.000056"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:10.556991" elapsed="0.000046"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:10.557413" elapsed="0.000048"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:10.557823" elapsed="0.000048"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:10.558243" elapsed="0.000048"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:10.558611" elapsed="0.000044"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:10.559311" elapsed="0.000050"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:10.559720" elapsed="0.000046"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:10.560079" elapsed="0.000049"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:50:10.558965" elapsed="0.001265"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:50:10.558760" elapsed="0.001531"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:10.560622" elapsed="0.000048"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:50:10.560761" elapsed="0.000039"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:50:10.536498" elapsed="0.024517">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:50:10.561306" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:50:10.561405" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:50:10.535639" elapsed="0.025818"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T00:50:10.562937" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T00:50:10.562131" elapsed="0.000944">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T00:50:10.561649" elapsed="0.001595">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T00:50:10.561605" elapsed="0.001682">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T00:50:10.563334" elapsed="0.000015"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:50:10.481888" elapsed="0.081543">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:10.563606" elapsed="0.000021"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:10.563772" elapsed="0.000019"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T00:50:10.563833" elapsed="0.000014"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T00:50:10.479502" elapsed="0.084428">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:10.564143" elapsed="0.000036"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:10.564341" elapsed="0.000020"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:10.564509" elapsed="0.000020"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:10.564667" elapsed="0.000020"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:10.564831" elapsed="0.000020"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:10.564992" elapsed="0.000020"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T00:50:10.565054" elapsed="0.000014"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T00:50:10.476722" elapsed="0.088431">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:50:11.597656" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:50:11.597186" elapsed="0.000502"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:50:11.598188" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:50:11.597859" elapsed="0.000357"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:50:11.598264" elapsed="0.000040"/>
</return>
<msg time="2026-04-08T00:50:11.598433" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:50:11.596770" elapsed="0.001689"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T00:50:11.603053" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T00:50:11.602863" elapsed="0.000217"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:50:11.603251" elapsed="0.000195"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:11.603810" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:11.603600" elapsed="0.000235"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:11.604303" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:11.604027" elapsed="0.000320"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:50:11.604491" elapsed="0.000180"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:11.605025" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:11.604820" elapsed="0.000230"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:11.605477" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:11.605230" elapsed="0.000288"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:11.606015" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:11.605666" elapsed="0.000375"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:11.606452" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:11.606218" elapsed="0.000277"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:11.606923" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:11.606641" elapsed="0.000308"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:50:11.613393" elapsed="0.000279"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:50:11.622299" elapsed="0.000217"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:50:11.623053" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:50:11.622673" elapsed="0.000407"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:11.624270" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:11.623692" elapsed="0.000625"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:50:11.624450" elapsed="0.000032"/>
</return>
<msg time="2026-04-08T00:50:11.624606" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:50:11.623294" elapsed="0.001337"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:50:11.625294" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:50:11.624792" elapsed="0.000530"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:50:11.625910" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:50:11.625482" elapsed="0.000455"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:50:11.626446" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:50:11.640024" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:50:11.626100" elapsed="0.017889">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:11.644437" elapsed="0.000054"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:11.644824" elapsed="0.000047"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:11.645227" elapsed="0.000049"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:11.645601" elapsed="0.000046"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:11.645979" elapsed="0.000045"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:11.646370" elapsed="0.000047"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:11.646963" elapsed="0.000046"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:11.647514" elapsed="0.000048"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:11.647993" elapsed="0.000050"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:50:11.646678" elapsed="0.001533"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:50:11.646524" elapsed="0.001756"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:11.648489" elapsed="0.000029"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:50:11.648573" elapsed="0.000021"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:50:11.621781" elapsed="0.026950">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:50:11.648828" elapsed="0.000022"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T00:50:11.611195" elapsed="0.037770">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:11.649282" elapsed="0.000031"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:11.655334" elapsed="0.000038"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:11.655603" elapsed="0.000030"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T00:50:11.655695" elapsed="0.000022"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T00:50:11.602323" elapsed="0.053672">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:50:11.656180" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:50:11.656247" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:50:11.601749" elapsed="0.054532"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T00:50:11.656562" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:50:11.656404" elapsed="0.000217"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:11.656375" elapsed="0.000276"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:50:11.658490" elapsed="0.000292"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:50:11.659439" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:50:11.658996" elapsed="0.000478"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:11.660547" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:11.660240" elapsed="0.000333"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:50:11.660620" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:50:11.660766" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:50:11.659724" elapsed="0.001067"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:50:11.661327" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:50:11.660946" elapsed="0.000407"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:50:11.661849" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:50:11.661508" elapsed="0.000366"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:50:11.662245" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:50:11.671979" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:50:11.662032" elapsed="0.012750">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:11.675247" elapsed="0.000054"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:11.675640" elapsed="0.000048"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:11.676074" elapsed="0.000048"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:11.676484" elapsed="0.000047"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:11.676865" elapsed="0.000055"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:11.677286" elapsed="0.000048"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:11.677978" elapsed="0.000048"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:11.678402" elapsed="0.000049"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:11.678767" elapsed="0.000046"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:50:11.677676" elapsed="0.001209"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:50:11.677524" elapsed="0.001426"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:11.679317" elapsed="0.000050"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:50:11.679460" elapsed="0.000037"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:50:11.657706" elapsed="0.022025">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:50:11.680005" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:50:11.680125" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:50:11.656860" elapsed="0.023354"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T00:50:11.681682" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T00:50:11.680895" elapsed="0.000924">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T00:50:11.680411" elapsed="0.001548">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T00:50:11.680365" elapsed="0.001670">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T00:50:11.682185" elapsed="0.000042"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:50:11.601190" elapsed="0.081235">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:11.682826" elapsed="0.000048"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:11.683251" elapsed="0.000052"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T00:50:11.683401" elapsed="0.000034"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T00:50:11.598757" elapsed="0.084869">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:11.684070" elapsed="0.000061"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:11.684410" elapsed="0.000021"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:11.684590" elapsed="0.000020"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:11.684753" elapsed="0.000020"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:11.684926" elapsed="0.000020"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:11.685090" elapsed="0.000022"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T00:50:11.685208" elapsed="0.000018"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T00:50:11.595917" elapsed="0.089399">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:50:12.718472" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:50:12.717976" elapsed="0.000528"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:50:12.718991" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:50:12.718675" elapsed="0.000342"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:50:12.719066" elapsed="0.000039"/>
</return>
<msg time="2026-04-08T00:50:12.719254" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:50:12.717553" elapsed="0.001727"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T00:50:12.723899" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T00:50:12.723710" elapsed="0.000216"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:50:12.724077" elapsed="0.000209"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:12.724648" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:12.724439" elapsed="0.000234"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:12.725117" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:12.724862" elapsed="0.000334"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:50:12.725347" elapsed="0.000184"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:12.725933" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:12.725701" elapsed="0.000258"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:12.726392" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:12.726128" elapsed="0.000305"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:12.726927" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:12.726584" elapsed="0.000371"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:12.727395" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:12.727125" elapsed="0.000321"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:12.727886" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:12.727599" elapsed="0.000312"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:50:12.736211" elapsed="0.000225"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:50:12.745076" elapsed="0.000261"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:50:12.745891" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:50:12.745498" elapsed="0.000420"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:12.747074" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:12.746531" elapsed="0.000584"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:50:12.747277" elapsed="0.000038"/>
</return>
<msg time="2026-04-08T00:50:12.747443" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:50:12.746106" elapsed="0.001362"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:50:12.748087" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:50:12.747630" elapsed="0.000559"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:50:12.748786" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:50:12.748352" elapsed="0.000461"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:50:12.749381" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:50:12.762702" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:50:12.748976" elapsed="0.017357">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:12.766633" elapsed="0.000037"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:12.766897" elapsed="0.000031"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:12.767144" elapsed="0.000055"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:12.767420" elapsed="0.000030"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:12.767672" elapsed="0.000030"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:12.767913" elapsed="0.000029"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:12.768345" elapsed="0.000033"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:12.768688" elapsed="0.000031"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:12.768972" elapsed="0.000031"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:50:12.768128" elapsed="0.001015"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:50:12.768017" elapsed="0.001203"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:12.769493" elapsed="0.000040"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:50:12.769615" elapsed="0.000034"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:50:12.744575" elapsed="0.025271">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:50:12.769983" elapsed="0.000031"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T00:50:12.733996" elapsed="0.036210">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:12.770559" elapsed="0.000043"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:12.776810" elapsed="0.000052"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:12.777137" elapsed="0.000052"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T00:50:12.777255" elapsed="0.000023"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T00:50:12.723147" elapsed="0.054322">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:50:12.777635" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:50:12.777697" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:50:12.722589" elapsed="0.055140"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T00:50:12.778068" elapsed="0.000020"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:50:12.777890" elapsed="0.000241"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:12.777854" elapsed="0.000332"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:50:12.780210" elapsed="0.000299"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:50:12.781211" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:50:12.780725" elapsed="0.000525"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:12.823049" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:12.781793" elapsed="0.041301"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:50:12.823180" elapsed="0.000050"/>
</return>
<msg time="2026-04-08T00:50:12.823367" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:50:12.781456" elapsed="0.041938"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:50:12.824043" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:50:12.823594" elapsed="0.000476"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:50:12.824606" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:50:12.824244" elapsed="0.000389"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:50:12.825032" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:50:12.836700" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:50:12.824795" elapsed="0.013727">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:12.838712" elapsed="0.000023"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:12.838885" elapsed="0.000021"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:12.839049" elapsed="0.000020"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:12.839233" elapsed="0.000022"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:12.839406" elapsed="0.000021"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:12.839571" elapsed="0.000020"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:12.839849" elapsed="0.000020"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:12.840020" elapsed="0.000020"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:12.840198" elapsed="0.000021"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:50:12.839720" elapsed="0.000532"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:50:12.839642" elapsed="0.000637"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:12.840424" elapsed="0.000021"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:50:12.840485" elapsed="0.000017"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:50:12.779324" elapsed="0.061335">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:50:12.840845" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:50:12.840913" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:50:12.778411" elapsed="0.062528"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T00:50:12.841603" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T00:50:12.841274" elapsed="0.000389">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T00:50:12.841033" elapsed="0.000691">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T00:50:12.841012" elapsed="0.000743">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T00:50:12.841801" elapsed="0.000015"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:50:12.722015" elapsed="0.119884">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:12.842073" elapsed="0.000022"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:12.842256" elapsed="0.000021"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T00:50:12.842319" elapsed="0.000015"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T00:50:12.719579" elapsed="0.122837">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:12.842581" elapsed="0.000020"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:12.842758" elapsed="0.000020"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:12.842922" elapsed="0.000019"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:12.843079" elapsed="0.000019"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:12.843256" elapsed="0.000021"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:12.843426" elapsed="0.000019"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T00:50:12.843486" elapsed="0.000015"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T00:50:12.716682" elapsed="0.126903">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:50:13.877196" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:50:13.876662" elapsed="0.000569"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:50:13.877840" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:50:13.877404" elapsed="0.000464"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:50:13.877917" elapsed="0.000042"/>
</return>
<msg time="2026-04-08T00:50:13.878092" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:50:13.876242" elapsed="0.001876"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T00:50:13.883052" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T00:50:13.882838" elapsed="0.000248"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:50:13.883278" elapsed="0.000203"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:13.883859" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:13.883634" elapsed="0.000258"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:13.884441" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:13.884128" elapsed="0.000356"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:50:13.884632" elapsed="0.000183"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:13.885207" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:13.884965" elapsed="0.000271"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:13.885654" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:13.885406" elapsed="0.000289"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:13.886226" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:13.885862" elapsed="0.000389"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:13.886681" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:13.886421" elapsed="0.000304"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:13.887173" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:13.886875" elapsed="0.000325"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:50:13.893693" elapsed="0.000216"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:50:13.902509" elapsed="0.000224"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:50:13.903303" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:50:13.902889" elapsed="0.000440"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:13.904466" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:13.903911" elapsed="0.000596"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:50:13.904641" elapsed="0.000032"/>
</return>
<msg time="2026-04-08T00:50:13.904796" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:50:13.903515" elapsed="0.001305"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:50:13.905434" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:50:13.904979" elapsed="0.000482"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:50:13.906042" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:50:13.905618" elapsed="0.000450"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:50:13.906583" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:50:13.916280" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:50:13.906243" elapsed="0.011865">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:13.918315" elapsed="0.000062"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:13.918533" elapsed="0.000021"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:13.918716" elapsed="0.000021"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:13.918882" elapsed="0.000020"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:13.919052" elapsed="0.000020"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:13.919231" elapsed="0.000022"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:13.919516" elapsed="0.000020"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:13.919743" elapsed="0.000021"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:13.919934" elapsed="0.000020"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:50:13.919386" elapsed="0.000628"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:50:13.919311" elapsed="0.000732"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:13.920205" elapsed="0.000021"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:50:13.920266" elapsed="0.000015"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:50:13.901995" elapsed="0.018391">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:50:13.920456" elapsed="0.000015"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T00:50:13.891499" elapsed="0.029056">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:13.920726" elapsed="0.000021"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:13.925020" elapsed="0.000027"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:13.925241" elapsed="0.000022"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T00:50:13.925308" elapsed="0.000015"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T00:50:13.882188" elapsed="0.043225">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:50:13.925526" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:50:13.925568" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:50:13.881584" elapsed="0.044007"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T00:50:13.925802" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:50:13.925683" elapsed="0.000161"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:13.925662" elapsed="0.000205"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:50:13.927468" elapsed="0.000209"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:50:13.928135" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:50:13.927830" elapsed="0.000353"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:13.928965" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:13.928701" elapsed="0.000290"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:50:13.929038" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:50:13.929203" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:50:13.928367" elapsed="0.000862"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:50:13.929756" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:50:13.929389" elapsed="0.000392"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:50:13.930298" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:50:13.929935" elapsed="0.000389"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:50:13.930709" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:50:13.938595" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:50:13.930483" elapsed="0.009867">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:13.940534" elapsed="0.000022"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:13.940702" elapsed="0.000020"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:13.940866" elapsed="0.000020"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:13.941029" elapsed="0.000020"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:13.941213" elapsed="0.000021"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:13.941375" elapsed="0.000021"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:13.941634" elapsed="0.000020"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:13.941802" elapsed="0.000020"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:13.941959" elapsed="0.000020"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:50:13.941508" elapsed="0.000503"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:50:13.941440" elapsed="0.000597"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:13.942188" elapsed="0.000021"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:50:13.942248" elapsed="0.000016"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:50:13.926855" elapsed="0.015499">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:50:13.942467" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:50:13.942511" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:50:13.926019" elapsed="0.016528"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T00:50:13.943180" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T00:50:13.942847" elapsed="0.000395">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T00:50:13.942633" elapsed="0.000707">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T00:50:13.942614" elapsed="0.000759">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T00:50:13.943419" elapsed="0.000016"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:50:13.880999" elapsed="0.062518">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:13.943692" elapsed="0.000022"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:13.943858" elapsed="0.000020"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T00:50:13.943919" elapsed="0.000015"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T00:50:13.878458" elapsed="0.065558">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:13.944201" elapsed="0.000022"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:13.944379" elapsed="0.000020"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:13.944547" elapsed="0.000020"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:13.944712" elapsed="0.000019"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:13.944875" elapsed="0.000019"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:13.945035" elapsed="0.000019"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T00:50:13.945095" elapsed="0.000014"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T00:50:13.875326" elapsed="0.069881">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:50:14.977324" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:50:14.976835" elapsed="0.000522"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:50:14.977837" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:50:14.977525" elapsed="0.000339"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:50:14.977909" elapsed="0.000040"/>
</return>
<msg time="2026-04-08T00:50:14.978080" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:50:14.976438" elapsed="0.001667"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T00:50:14.982708" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T00:50:14.982518" elapsed="0.000217"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:50:14.982888" elapsed="0.000190"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:14.983521" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:14.983306" elapsed="0.000241"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:14.983986" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:14.983731" elapsed="0.000297"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:50:14.984189" elapsed="0.000184"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:14.984753" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:14.984543" elapsed="0.000235"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:14.985208" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:14.984946" elapsed="0.000305"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:14.985783" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:14.985415" elapsed="0.000395"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:14.986229" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:14.985977" elapsed="0.000297"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:14.986712" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:14.986427" elapsed="0.000312"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:50:14.993450" elapsed="0.000234"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:50:15.002645" elapsed="0.000229"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:50:15.003449" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:50:15.003034" elapsed="0.000441"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:15.004713" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:15.004059" elapsed="0.000698"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:50:15.004895" elapsed="0.000035"/>
</return>
<msg time="2026-04-08T00:50:15.005057" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:50:15.003664" elapsed="0.001418"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:50:15.005726" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:50:15.005264" elapsed="0.000492"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:50:15.006366" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:50:15.005917" elapsed="0.000475"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:50:15.007056" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:50:15.018115" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:50:15.006560" elapsed="0.013394">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:15.020143" elapsed="0.000039"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:15.020337" elapsed="0.000021"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:15.020519" elapsed="0.000024"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:15.020689" elapsed="0.000021"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:15.020859" elapsed="0.000020"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:15.021022" elapsed="0.000020"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:15.021321" elapsed="0.000020"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:15.021601" elapsed="0.000022"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:15.021798" elapsed="0.000022"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:50:15.021184" elapsed="0.000696"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:50:15.021093" elapsed="0.000817"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:15.022053" elapsed="0.000021"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:50:15.022114" elapsed="0.000016"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:50:15.002058" elapsed="0.020191">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:50:15.022321" elapsed="0.000016"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T00:50:14.991145" elapsed="0.031277">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:15.022636" elapsed="0.000021"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:15.027003" elapsed="0.000027"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:15.027209" elapsed="0.000023"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T00:50:15.027278" elapsed="0.000015"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T00:50:14.981952" elapsed="0.045430">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:50:15.027501" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:50:15.027545" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:50:14.981398" elapsed="0.046170"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T00:50:15.027778" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:50:15.027660" elapsed="0.000160"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:15.027639" elapsed="0.000203"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:50:15.029233" elapsed="0.000226"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:50:15.029942" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:50:15.029639" elapsed="0.000329"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:15.030760" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:15.030497" elapsed="0.000289"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:50:15.030834" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:50:15.030980" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:50:15.030147" elapsed="0.000858"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:50:15.031550" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:50:15.031175" elapsed="0.000405"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:50:15.032119" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:50:15.031772" elapsed="0.000373"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:50:15.032537" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:50:15.041432" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:50:15.032322" elapsed="0.010808">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:15.043338" elapsed="0.000023"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:15.043539" elapsed="0.000024"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:15.043706" elapsed="0.000020"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:15.043871" elapsed="0.000020"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:15.044040" elapsed="0.000019"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:15.044218" elapsed="0.000021"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:15.044492" elapsed="0.000021"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:15.044663" elapsed="0.000019"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:15.044822" elapsed="0.000019"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:50:15.044352" elapsed="0.000521"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:50:15.044284" elapsed="0.000616"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:15.045044" elapsed="0.000021"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:50:15.045104" elapsed="0.000015"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:50:15.028679" elapsed="0.016554">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:50:15.045349" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:50:15.045392" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:50:15.027992" elapsed="0.017423"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T00:50:15.046035" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T00:50:15.045715" elapsed="0.000380">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T00:50:15.045499" elapsed="0.000674">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T00:50:15.045479" elapsed="0.000728">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T00:50:15.046253" elapsed="0.000016"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:50:14.980834" elapsed="0.065516">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:15.046531" elapsed="0.000021"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:15.046697" elapsed="0.000020"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T00:50:15.046796" elapsed="0.000016"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T00:50:14.978416" elapsed="0.068480">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:15.047065" elapsed="0.000021"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:15.047260" elapsed="0.000021"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:15.047432" elapsed="0.000020"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:15.047594" elapsed="0.000020"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:15.047761" elapsed="0.000020"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:15.047925" elapsed="0.000020"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T00:50:15.047986" elapsed="0.000014"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T00:50:14.975664" elapsed="0.072419">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:50:16.079937" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:50:16.079467" elapsed="0.000503"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:50:16.080478" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:50:16.080141" elapsed="0.000364"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:50:16.080555" elapsed="0.000040"/>
</return>
<msg time="2026-04-08T00:50:16.080726" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:50:16.078991" elapsed="0.001761"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T00:50:16.085550" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T00:50:16.085358" elapsed="0.000218"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:50:16.085731" elapsed="0.000193"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:16.086313" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:16.086079" elapsed="0.000260"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:16.086825" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:16.086524" elapsed="0.000342"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:50:16.087014" elapsed="0.000197"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:16.087571" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:16.087365" elapsed="0.000231"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:16.088004" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:16.087762" elapsed="0.000283"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:16.088549" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:16.088209" elapsed="0.000367"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:16.089049" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:16.088812" elapsed="0.000281"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:16.089541" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:16.089256" elapsed="0.000311"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:50:16.096025" elapsed="0.000230"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:50:16.104809" elapsed="0.000211"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:50:16.105581" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:50:16.105191" elapsed="0.000417"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:16.106792" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:16.106217" elapsed="0.000617"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:50:16.106970" elapsed="0.000033"/>
</return>
<msg time="2026-04-08T00:50:16.107127" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:50:16.105796" elapsed="0.001372"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:50:16.107779" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:50:16.107333" elapsed="0.000473"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:50:16.108410" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:50:16.107965" elapsed="0.000472"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:50:16.108934" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:50:16.120557" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:50:16.108599" elapsed="0.014543">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:16.123429" elapsed="0.000033"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:16.123673" elapsed="0.000030"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:16.123906" elapsed="0.000029"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:16.124136" elapsed="0.000049"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:16.124399" elapsed="0.000029"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:16.124625" elapsed="0.000028"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:16.125003" elapsed="0.000029"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:16.125340" elapsed="0.000030"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:16.125612" elapsed="0.000030"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:50:16.124823" elapsed="0.000903"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:50:16.124723" elapsed="0.001044"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:16.125966" elapsed="0.000029"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:50:16.126049" elapsed="0.000022"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:50:16.104315" elapsed="0.021932">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:50:16.126398" elapsed="0.000023"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T00:50:16.093814" elapsed="0.032757">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:16.126822" elapsed="0.000030"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:16.132804" elapsed="0.000038"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:16.133074" elapsed="0.000029"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T00:50:16.133185" elapsed="0.000023"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T00:50:16.084784" elapsed="0.048550">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:50:16.133490" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:50:16.133551" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:50:16.084107" elapsed="0.049478"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T00:50:16.133869" elapsed="0.000019"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:50:16.133709" elapsed="0.000219"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:16.133680" elapsed="0.000280"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:50:16.135810" elapsed="0.000293"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:50:16.136761" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:50:16.136337" elapsed="0.000459"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:16.137910" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:16.137542" elapsed="0.000404"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:50:16.138011" elapsed="0.000041"/>
</return>
<msg time="2026-04-08T00:50:16.138240" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:50:16.137048" elapsed="0.001227"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:50:16.139040" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:50:16.138496" elapsed="0.000580"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:50:16.139774" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:50:16.139317" elapsed="0.000483"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:50:16.140169" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:50:16.148219" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:50:16.139958" elapsed="0.011788">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:16.152150" elapsed="0.000082"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:16.152591" elapsed="0.000048"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:16.153043" elapsed="0.000047"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:16.153454" elapsed="0.000047"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:16.153833" elapsed="0.000045"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:16.154223" elapsed="0.000048"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:16.154816" elapsed="0.000046"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:16.155224" elapsed="0.000048"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:16.155589" elapsed="0.000044"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:50:16.154531" elapsed="0.001174"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:50:16.154368" elapsed="0.001393"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:16.156067" elapsed="0.000044"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:50:16.156227" elapsed="0.000035"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:50:16.135033" elapsed="0.021435">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:50:16.156715" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:50:16.156811" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:50:16.134186" elapsed="0.022677"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T00:50:16.158349" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T00:50:16.157558" elapsed="0.000924">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T00:50:16.157044" elapsed="0.001629">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T00:50:16.157003" elapsed="0.001739">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T00:50:16.158844" elapsed="0.000036"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:50:16.083556" elapsed="0.075506">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:16.159491" elapsed="0.000055"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:16.159712" elapsed="0.000019"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T00:50:16.159772" elapsed="0.000015"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T00:50:16.081050" elapsed="0.078819">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:16.160034" elapsed="0.000020"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:16.160224" elapsed="0.000021"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:16.160395" elapsed="0.000020"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:16.160598" elapsed="0.000021"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:16.160768" elapsed="0.000019"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:16.160929" elapsed="0.000019"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T00:50:16.160989" elapsed="0.000015"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T00:50:16.078177" elapsed="0.082910">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:50:17.190047" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:50:17.189581" elapsed="0.000498"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:50:17.190582" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:50:17.190265" elapsed="0.000343"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:50:17.190655" elapsed="0.000039"/>
</return>
<msg time="2026-04-08T00:50:17.190825" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:50:17.189192" elapsed="0.001658"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T00:50:17.195492" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T00:50:17.195304" elapsed="0.000215"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:50:17.195668" elapsed="0.000190"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:17.196235" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:17.196008" elapsed="0.000253"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:17.196705" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:17.196447" elapsed="0.000299"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:50:17.196948" elapsed="0.000201"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:17.197537" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:17.197325" elapsed="0.000237"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:17.198007" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:17.197729" elapsed="0.000320"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:17.198559" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:17.198216" elapsed="0.000368"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:17.198983" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:17.198748" elapsed="0.000278"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:17.199475" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:17.199190" elapsed="0.000311"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:50:17.206044" elapsed="0.000237"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:50:17.214751" elapsed="0.000211"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:50:17.215526" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:50:17.215118" elapsed="0.000434"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:17.216758" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:17.216221" elapsed="0.000578"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:50:17.216948" elapsed="0.000033"/>
</return>
<msg time="2026-04-08T00:50:17.217108" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:50:17.215798" elapsed="0.001336"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:50:17.217758" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:50:17.217314" elapsed="0.000471"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:50:17.218392" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:50:17.217945" elapsed="0.000474"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:50:17.218920" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:50:17.230341" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:50:17.218588" elapsed="0.013515">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:17.232306" elapsed="0.000024"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:17.232483" elapsed="0.000023"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:17.232650" elapsed="0.000020"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:17.232813" elapsed="0.000053"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:17.233018" elapsed="0.000021"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:17.233209" elapsed="0.000022"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:17.233484" elapsed="0.000021"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:17.233723" elapsed="0.000022"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:17.233917" elapsed="0.000021"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:50:17.233353" elapsed="0.000646"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:50:17.233281" elapsed="0.000765"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:17.234239" elapsed="0.000024"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:50:17.234304" elapsed="0.000016"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:50:17.214260" elapsed="0.020158">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:50:17.234489" elapsed="0.000015"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T00:50:17.203756" elapsed="0.030832">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:17.234768" elapsed="0.000021"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:17.240315" elapsed="0.000026"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:17.240547" elapsed="0.000022"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T00:50:17.240614" elapsed="0.000016"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T00:50:17.194751" elapsed="0.045969">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:50:17.240843" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:50:17.240888" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:50:17.194198" elapsed="0.046714"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T00:50:17.241113" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:50:17.241000" elapsed="0.000171"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:17.240979" elapsed="0.000216"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:50:17.242509" elapsed="0.000211"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:50:17.243204" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:50:17.242873" elapsed="0.000358"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:17.244023" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:17.243756" elapsed="0.000294"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:50:17.244098" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:50:17.244263" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:50:17.243416" elapsed="0.000872"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:50:17.244851" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:50:17.244449" elapsed="0.000430"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:50:17.245425" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:50:17.245037" elapsed="0.000427"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:50:17.245917" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:50:17.255585" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:50:17.245667" elapsed="0.012673">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:17.258560" elapsed="0.000026"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:17.258757" elapsed="0.000033"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:17.258956" elapsed="0.000030"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:17.259171" elapsed="0.000027"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:17.259369" elapsed="0.000022"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:17.259560" elapsed="0.000022"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:17.259878" elapsed="0.000022"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:17.260077" elapsed="0.000022"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:17.260339" elapsed="0.000024"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:50:17.259731" elapsed="0.000669"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:50:17.259639" elapsed="0.000792"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:17.260603" elapsed="0.000024"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:50:17.260683" elapsed="0.000026"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:50:17.241944" elapsed="0.018901">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:50:17.260985" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:50:17.261032" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:50:17.241345" elapsed="0.019713"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T00:50:17.261828" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T00:50:17.261454" elapsed="0.000442">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T00:50:17.261173" elapsed="0.000800">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T00:50:17.261133" elapsed="0.000875">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T00:50:17.262060" elapsed="0.000017"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:50:17.193636" elapsed="0.068565">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:17.262406" elapsed="0.000024"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:17.262600" elapsed="0.000022"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T00:50:17.262668" elapsed="0.000018"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T00:50:17.191144" elapsed="0.071639">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:17.262977" elapsed="0.000023"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:17.263206" elapsed="0.000025"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:17.263408" elapsed="0.000022"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:17.263594" elapsed="0.000022"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:17.263782" elapsed="0.000022"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:17.263979" elapsed="0.000022"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T00:50:17.264047" elapsed="0.000017"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T00:50:17.188385" elapsed="0.075800">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:50:18.296567" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:50:18.296059" elapsed="0.000542"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:50:18.297095" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:50:18.296778" elapsed="0.000344"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:50:18.297184" elapsed="0.000042"/>
</return>
<msg time="2026-04-08T00:50:18.297358" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:50:18.295664" elapsed="0.001720"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T00:50:18.302076" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T00:50:18.301882" elapsed="0.000221"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:50:18.302270" elapsed="0.000195"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:18.302828" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:18.302617" elapsed="0.000237"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:18.303327" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:18.303039" elapsed="0.000337"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:50:18.303523" elapsed="0.000179"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:18.304057" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:18.303854" elapsed="0.000228"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:18.304508" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:18.304265" elapsed="0.000284"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:18.305035" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:18.304699" elapsed="0.000361"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:18.305474" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:18.305239" elapsed="0.000280"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:18.305945" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:18.305666" elapsed="0.000304"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:50:18.312528" elapsed="0.000219"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:50:18.321403" elapsed="0.000217"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:50:18.322206" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:50:18.321777" elapsed="0.000464"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:18.323434" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:18.322844" elapsed="0.000631"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:50:18.323610" elapsed="0.000037"/>
</return>
<msg time="2026-04-08T00:50:18.323772" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:50:18.322447" elapsed="0.001351"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:50:18.324428" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:50:18.323959" elapsed="0.000497"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:50:18.325043" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:50:18.324615" elapsed="0.000454"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:50:18.325587" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:50:18.337032" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:50:18.325251" elapsed="0.014287">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:18.339808" elapsed="0.000034"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:18.340052" elapsed="0.000029"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:18.340310" elapsed="0.000031"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:18.340547" elapsed="0.000029"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:18.340787" elapsed="0.000029"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:18.341018" elapsed="0.000028"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:18.341425" elapsed="0.000030"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:18.341742" elapsed="0.000030"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:18.342010" elapsed="0.000029"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:50:18.341241" elapsed="0.000908"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:50:18.341117" elapsed="0.001093"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:18.342414" elapsed="0.000030"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:50:18.342500" elapsed="0.000023"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:50:18.320882" elapsed="0.021782">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:50:18.342763" elapsed="0.000021"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T00:50:18.310256" elapsed="0.032647">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:18.343148" elapsed="0.000066"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:18.349067" elapsed="0.000038"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:18.349354" elapsed="0.000029"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T00:50:18.349447" elapsed="0.000021"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T00:50:18.301343" elapsed="0.048253">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:50:18.349759" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:50:18.349821" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:50:18.300770" elapsed="0.049083"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T00:50:18.350235" elapsed="0.000019"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:50:18.350042" elapsed="0.000254"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:18.350011" elapsed="0.000317"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:50:18.352228" elapsed="0.000293"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:50:18.353185" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:50:18.352736" elapsed="0.000488"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:18.354606" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:18.353950" elapsed="0.000693"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:50:18.354711" elapsed="0.000042"/>
</return>
<msg time="2026-04-08T00:50:18.354917" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:50:18.353480" elapsed="0.001471"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:50:18.355756" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:50:18.355191" elapsed="0.000591"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:50:18.356300" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:50:18.355938" elapsed="0.000388"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:50:18.356695" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:50:18.366861" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:50:18.356487" elapsed="0.012775">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:18.369520" elapsed="0.000031"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:18.369755" elapsed="0.000029"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:18.369982" elapsed="0.000027"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:18.370229" elapsed="0.000030"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:18.370466" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:18.370689" elapsed="0.000029"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:18.371044" elapsed="0.000029"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:18.371314" elapsed="0.000029"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:18.371540" elapsed="0.000028"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:50:18.370869" elapsed="0.000744"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:50:18.370779" elapsed="0.000869"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:18.371835" elapsed="0.000028"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:50:18.371917" elapsed="0.000021"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:50:18.351439" elapsed="0.020625">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:50:18.372244" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:50:18.372307" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:50:18.350545" elapsed="0.021795"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T00:50:18.373272" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T00:50:18.372807" elapsed="0.000551">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T00:50:18.372508" elapsed="0.000936">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T00:50:18.372481" elapsed="0.001007">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T00:50:18.373552" elapsed="0.000021"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:50:18.300216" elapsed="0.073472">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:18.373936" elapsed="0.000030"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:18.374188" elapsed="0.000030"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T00:50:18.374277" elapsed="0.000020"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T00:50:18.297684" elapsed="0.076731">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:18.374648" elapsed="0.000029"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:18.374895" elapsed="0.000027"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:18.375128" elapsed="0.000027"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:18.375403" elapsed="0.000028"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:18.375633" elapsed="0.000027"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:18.375857" elapsed="0.000027"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T00:50:18.375942" elapsed="0.000019"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T00:50:18.294818" elapsed="0.081259">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:50:19.410284" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:50:19.409751" elapsed="0.000566"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:50:19.410804" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:50:19.410491" elapsed="0.000340"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:50:19.410881" elapsed="0.000044"/>
</return>
<msg time="2026-04-08T00:50:19.411057" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:50:19.409350" elapsed="0.001732"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T00:50:19.416064" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T00:50:19.415875" elapsed="0.000215"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:50:19.416257" elapsed="0.000192"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:19.416807" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:19.416600" elapsed="0.000232"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:19.417322" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:19.417016" elapsed="0.000351"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:50:19.417516" elapsed="0.000182"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:19.418068" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:19.417847" elapsed="0.000246"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:19.418529" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:19.418284" elapsed="0.000287"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:19.419059" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:19.418722" elapsed="0.000363"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:19.419520" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:19.419279" elapsed="0.000284"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:19.420055" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:19.419712" elapsed="0.000369"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:50:19.426430" elapsed="0.000213"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:50:19.435192" elapsed="0.000212"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:50:19.435946" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:50:19.435561" elapsed="0.000412"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:19.437173" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:19.436600" elapsed="0.000616"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:50:19.437350" elapsed="0.000036"/>
</return>
<msg time="2026-04-08T00:50:19.437511" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:50:19.436179" elapsed="0.001357"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:50:19.438178" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:50:19.437699" elapsed="0.000509"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:50:19.438796" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:50:19.438368" elapsed="0.000454"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:50:19.439349" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:50:19.450140" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:50:19.438982" elapsed="0.013022">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:19.452216" elapsed="0.000024"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:19.452393" elapsed="0.000021"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:19.452561" elapsed="0.000021"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:19.452728" elapsed="0.000020"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:19.452949" elapsed="0.000022"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:19.453116" elapsed="0.000020"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:19.453418" elapsed="0.000021"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:19.453644" elapsed="0.000022"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:19.453884" elapsed="0.000024"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:50:19.453287" elapsed="0.000687"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:50:19.453209" elapsed="0.000796"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:19.454151" elapsed="0.000039"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:50:19.454232" elapsed="0.000016"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:50:19.434687" elapsed="0.019666">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:50:19.454424" elapsed="0.000015"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T00:50:19.424237" elapsed="0.030285">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:19.454761" elapsed="0.000038"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:19.460569" elapsed="0.000037"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:19.460837" elapsed="0.000029"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T00:50:19.460929" elapsed="0.000021"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T00:50:19.415331" elapsed="0.045752">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:50:19.461272" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:50:19.461333" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:50:19.414723" elapsed="0.046642"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T00:50:19.461650" elapsed="0.000019"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:50:19.461490" elapsed="0.000220"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:19.461462" elapsed="0.000279"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:50:19.463747" elapsed="0.000291"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:50:19.464700" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:50:19.464277" elapsed="0.000459"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:19.465879" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:19.465476" elapsed="0.000442"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:50:19.466034" elapsed="0.000044"/>
</return>
<msg time="2026-04-08T00:50:19.466268" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:50:19.464986" elapsed="0.001318"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:50:19.466925" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:50:19.466527" elapsed="0.000434"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:50:19.467487" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:50:19.467122" elapsed="0.000391"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:50:19.467884" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:50:19.477541" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:50:19.467674" elapsed="0.012252">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:19.480205" elapsed="0.000033"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:19.480447" elapsed="0.000037"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:19.480683" elapsed="0.000028"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:19.480909" elapsed="0.000027"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:19.481140" elapsed="0.000047"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:19.481387" elapsed="0.000028"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:19.481991" elapsed="0.000029"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:19.482252" elapsed="0.000030"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:19.482477" elapsed="0.000029"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:50:19.481787" elapsed="0.000764"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:50:19.481478" elapsed="0.001110"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:19.482789" elapsed="0.000029"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:50:19.482874" elapsed="0.000024"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:50:19.462962" elapsed="0.020108">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:50:19.483263" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:50:19.483326" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:50:19.461969" elapsed="0.021389"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T00:50:19.484249" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T00:50:19.483782" elapsed="0.000552">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T00:50:19.483480" elapsed="0.000940">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T00:50:19.483451" elapsed="0.001012">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T00:50:19.484527" elapsed="0.000022"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:50:19.414175" elapsed="0.070489">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:19.484962" elapsed="0.000031"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:19.485218" elapsed="0.000030"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T00:50:19.485307" elapsed="0.000021"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T00:50:19.411395" elapsed="0.074052">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:19.485687" elapsed="0.000049"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:19.486069" elapsed="0.000033"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:19.486332" elapsed="0.000029"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:19.486556" elapsed="0.000027"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:19.486784" elapsed="0.000028"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:19.487008" elapsed="0.000026"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T00:50:19.487100" elapsed="0.000029"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T00:50:19.408541" elapsed="0.078762">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:50:20.521864" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:50:20.521273" elapsed="0.000644"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:50:20.522465" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:50:20.522114" elapsed="0.000378"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:50:20.522544" elapsed="0.000046"/>
</return>
<msg time="2026-04-08T00:50:20.522725" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:50:20.520821" elapsed="0.001930"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T00:50:20.527624" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T00:50:20.527423" elapsed="0.000231"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:50:20.527807" elapsed="0.000222"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:20.528419" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:20.528203" elapsed="0.000242"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:20.528927" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:20.528665" elapsed="0.000305"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:50:20.529117" elapsed="0.000198"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:20.529676" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:20.529468" elapsed="0.000234"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:20.530412" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:20.529954" elapsed="0.000501"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:20.530955" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:20.530610" elapsed="0.000371"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:20.531403" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:20.531149" elapsed="0.000298"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:20.531957" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:20.531597" elapsed="0.000389"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:50:20.538362" elapsed="0.000215"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:50:20.547257" elapsed="0.000212"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:50:20.548008" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:50:20.547624" elapsed="0.000410"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:20.549295" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:20.548726" elapsed="0.000611"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:50:20.549477" elapsed="0.000041"/>
</return>
<msg time="2026-04-08T00:50:20.549647" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:50:20.548269" elapsed="0.001404"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:50:20.550318" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:50:20.549836" elapsed="0.000510"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:50:20.550936" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:50:20.550506" elapsed="0.000458"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:50:20.551490" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:50:20.562071" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:50:20.551128" elapsed="0.013588">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:20.564982" elapsed="0.000033"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:20.565255" elapsed="0.000032"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:20.565494" elapsed="0.000030"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:20.565729" elapsed="0.000030"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:20.565966" elapsed="0.000029"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:20.566218" elapsed="0.000031"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:20.566606" elapsed="0.000029"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:20.566983" elapsed="0.000033"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:20.567288" elapsed="0.000031"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:50:20.566423" elapsed="0.000988"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:50:20.566319" elapsed="0.001135"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:20.567655" elapsed="0.000030"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:50:20.567740" elapsed="0.000023"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:50:20.546750" elapsed="0.021159">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:50:20.568072" elapsed="0.000025"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T00:50:20.536132" elapsed="0.032141">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:20.568570" elapsed="0.000034"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:20.574835" elapsed="0.000039"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:20.575108" elapsed="0.000029"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T00:50:20.575221" elapsed="0.000023"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T00:50:20.526800" elapsed="0.048571">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:50:20.575529" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:50:20.575590" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:50:20.526204" elapsed="0.049418"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T00:50:20.575909" elapsed="0.000019"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:50:20.575748" elapsed="0.000221"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:20.575719" elapsed="0.000281"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:50:20.577874" elapsed="0.000311"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:50:20.578827" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:50:20.578401" elapsed="0.000461"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:20.579968" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:20.579599" elapsed="0.000406"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:50:20.580070" elapsed="0.000042"/>
</return>
<msg time="2026-04-08T00:50:20.580299" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:50:20.579112" elapsed="0.001221"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:50:20.581127" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:50:20.580601" elapsed="0.000585"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:50:20.581917" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:50:20.581413" elapsed="0.000532"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:50:20.582374" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:50:20.592019" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:50:20.582106" elapsed="0.013835">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:20.596551" elapsed="0.000057"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:20.596956" elapsed="0.000047"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:20.597362" elapsed="0.000049"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:20.597738" elapsed="0.000045"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:20.598113" elapsed="0.000072"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:20.598510" elapsed="0.000045"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:20.599121" elapsed="0.000075"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:20.599537" elapsed="0.000045"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:20.599892" elapsed="0.000045"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:50:20.598837" elapsed="0.001171"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:50:20.598668" elapsed="0.001397"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:20.600412" elapsed="0.000047"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:50:20.600598" elapsed="0.000037"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:50:20.577097" elapsed="0.023752">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:50:20.601104" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:50:20.601237" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:50:20.576231" elapsed="0.025063"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T00:50:20.602225" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T00:50:20.601875" elapsed="0.000413">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T00:50:20.601486" elapsed="0.000864">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T00:50:20.601441" elapsed="0.000947">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T00:50:20.602437" elapsed="0.000015"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:50:20.525585" elapsed="0.076950">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:20.602716" elapsed="0.000021"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:20.602881" elapsed="0.000020"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T00:50:20.602941" elapsed="0.000015"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T00:50:20.523051" elapsed="0.079988">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:20.603223" elapsed="0.000022"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:20.603484" elapsed="0.000022"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:20.603654" elapsed="0.000020"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:20.603814" elapsed="0.000020"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:20.603978" elapsed="0.000019"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:20.604138" elapsed="0.000036"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T00:50:20.604218" elapsed="0.000015"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T00:50:20.519969" elapsed="0.084350">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:50:21.635433" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:50:21.634937" elapsed="0.000529"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:50:21.635946" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:50:21.635634" elapsed="0.000338"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:50:21.636020" elapsed="0.000042"/>
</return>
<msg time="2026-04-08T00:50:21.636211" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:50:21.634552" elapsed="0.001692"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T00:50:21.640971" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T00:50:21.640783" elapsed="0.000214"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:50:21.641147" elapsed="0.000207"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:21.641713" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:21.641504" elapsed="0.000234"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:21.642351" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:21.641920" elapsed="0.000479"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:50:21.642546" elapsed="0.000181"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:21.643081" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:21.642876" elapsed="0.000230"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:21.643530" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:21.643287" elapsed="0.000284"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:21.644054" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:21.643719" elapsed="0.000360"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:21.644495" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:21.644258" elapsed="0.000279"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:21.644960" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:21.644682" elapsed="0.000303"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:50:21.651442" elapsed="0.000217"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:50:21.660086" elapsed="0.000299"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:50:21.660935" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:50:21.660544" elapsed="0.000418"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:21.662147" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:21.661577" elapsed="0.000631"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:50:21.662348" elapsed="0.000033"/>
</return>
<msg time="2026-04-08T00:50:21.662505" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:50:21.661149" elapsed="0.001382"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:50:21.663132" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:50:21.662692" elapsed="0.000483"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:50:21.663764" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:50:21.663336" elapsed="0.000455"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:50:21.664307" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:50:21.675249" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:50:21.663953" elapsed="0.013731">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:21.677966" elapsed="0.000033"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:21.678233" elapsed="0.000030"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:21.678466" elapsed="0.000029"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:21.678711" elapsed="0.000034"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:21.678977" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:21.679218" elapsed="0.000029"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:21.679599" elapsed="0.000028"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:21.679913" elapsed="0.000029"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:21.680223" elapsed="0.000031"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:50:21.679417" elapsed="0.000920"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:50:21.679317" elapsed="0.001062"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:21.680577" elapsed="0.000028"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:50:21.680659" elapsed="0.000022"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:50:21.659595" elapsed="0.021225">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:50:21.680918" elapsed="0.000022"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T00:50:21.649211" elapsed="0.031846">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:21.681442" elapsed="0.000031"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:21.687534" elapsed="0.000038"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:21.687802" elapsed="0.000029"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T00:50:21.687892" elapsed="0.000022"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T00:50:21.640245" elapsed="0.047794">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:50:21.688215" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:50:21.688278" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:50:21.639677" elapsed="0.048634"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T00:50:21.688594" elapsed="0.000019"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:50:21.688434" elapsed="0.000220"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:21.688405" elapsed="0.000281"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:50:21.690568" elapsed="0.000289"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:50:21.691515" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:50:21.691069" elapsed="0.000482"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:21.692654" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:21.692287" elapsed="0.000404"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:50:21.692756" elapsed="0.000041"/>
</return>
<msg time="2026-04-08T00:50:21.692960" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:50:21.691802" elapsed="0.001193"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:50:21.693745" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:50:21.693235" elapsed="0.000546"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:50:21.694545" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:50:21.694028" elapsed="0.000553"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:50:21.694955" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:50:21.703508" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:50:21.694757" elapsed="0.012355">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:21.707553" elapsed="0.000051"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:21.707937" elapsed="0.000045"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:21.708333" elapsed="0.000047"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:21.708709" elapsed="0.000045"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:21.709087" elapsed="0.000044"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:21.709488" elapsed="0.000045"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:21.710082" elapsed="0.000146"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:21.710579" elapsed="0.000045"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:21.710936" elapsed="0.000044"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:50:21.709777" elapsed="0.001275"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:50:21.709630" elapsed="0.001480"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:21.711450" elapsed="0.000045"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:50:21.711583" elapsed="0.000033"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:50:21.689772" elapsed="0.022048">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:50:21.712068" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:50:21.712194" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:50:21.688893" elapsed="0.023357"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T00:50:21.713699" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T00:50:21.712960" elapsed="0.000924">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T00:50:21.712440" elapsed="0.001586">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T00:50:21.712397" elapsed="0.001698">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T00:50:21.714228" elapsed="0.000037"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:50:21.639114" elapsed="0.075339">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:21.714817" elapsed="0.000026"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:21.714989" elapsed="0.000020"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T00:50:21.715050" elapsed="0.000015"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T00:50:21.636540" elapsed="0.078607">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:21.715333" elapsed="0.000021"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:21.715512" elapsed="0.000020"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:21.715678" elapsed="0.000020"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:21.715838" elapsed="0.000019"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:21.716007" elapsed="0.000019"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:21.716181" elapsed="0.000021"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T00:50:21.716245" elapsed="0.000016"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T00:50:21.633677" elapsed="0.082668">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:50:22.754723" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:50:22.754222" elapsed="0.000535"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:50:22.755280" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:50:22.754932" elapsed="0.000375"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:50:22.755357" elapsed="0.000045"/>
</return>
<msg time="2026-04-08T00:50:22.755534" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:50:22.753761" elapsed="0.001799"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T00:50:22.760447" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T00:50:22.760242" elapsed="0.000232"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:50:22.760628" elapsed="0.000195"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:22.761203" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:22.760977" elapsed="0.000252"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:22.761684" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:22.761424" elapsed="0.000301"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:50:22.761872" elapsed="0.000181"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:22.762449" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:22.762230" elapsed="0.000249"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:22.762895" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:22.762650" elapsed="0.000286"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:22.763484" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:22.763087" elapsed="0.000424"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:22.763920" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:22.763680" elapsed="0.000283"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:22.764414" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:22.764111" elapsed="0.000332"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:50:22.770974" elapsed="0.000259"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:50:22.779855" elapsed="0.000213"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:50:22.780645" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:50:22.780248" elapsed="0.000427"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:22.781857" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:22.781304" elapsed="0.000595"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:50:22.782035" elapsed="0.000035"/>
</return>
<msg time="2026-04-08T00:50:22.782215" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:50:22.780875" elapsed="0.001366"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:50:22.782862" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:50:22.782405" elapsed="0.000485"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:50:22.783615" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:50:22.783172" elapsed="0.000469"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:50:22.784202" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:50:22.796589" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:50:22.783817" elapsed="0.015370">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:22.799463" elapsed="0.000035"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:22.799710" elapsed="0.000030"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:22.799949" elapsed="0.000035"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:22.800229" elapsed="0.000032"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:22.800476" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:22.800704" elapsed="0.000048"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:22.801130" elapsed="0.000054"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:22.801492" elapsed="0.000030"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:22.801767" elapsed="0.000029"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:50:22.800936" elapsed="0.000948"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:50:22.800827" elapsed="0.001097"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:22.802133" elapsed="0.000061"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:50:22.802255" elapsed="0.000024"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:50:22.779350" elapsed="0.023075">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:50:22.802525" elapsed="0.000022"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T00:50:22.768752" elapsed="0.033914">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:22.802914" elapsed="0.000029"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:22.809092" elapsed="0.000043"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:22.809399" elapsed="0.000031"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T00:50:22.809493" elapsed="0.000021"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T00:50:22.759682" elapsed="0.049959">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:50:22.809872" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:50:22.809934" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:50:22.759031" elapsed="0.050936"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T00:50:22.810296" elapsed="0.000019"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:50:22.810097" elapsed="0.000261"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:22.810066" elapsed="0.000323"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:50:22.812352" elapsed="0.000297"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:50:22.813351" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:50:22.812873" elapsed="0.000515"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:22.814872" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:22.814198" elapsed="0.000712"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:50:22.814981" elapsed="0.000043"/>
</return>
<msg time="2026-04-08T00:50:22.815269" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:50:22.813648" elapsed="0.001661"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:50:22.816032" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:50:22.815542" elapsed="0.000517"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:50:22.816597" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:50:22.816235" elapsed="0.000389"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:50:22.817010" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:50:22.825841" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:50:22.816790" elapsed="0.011546">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:22.828604" elapsed="0.000033"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:22.828843" elapsed="0.000028"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:22.829070" elapsed="0.000028"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:22.829323" elapsed="0.000029"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:22.829581" elapsed="0.000030"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:22.829813" elapsed="0.000028"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:22.830201" elapsed="0.000030"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:22.830443" elapsed="0.000034"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:22.830681" elapsed="0.000029"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:50:22.829999" elapsed="0.000756"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:50:22.829905" elapsed="0.000886"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:22.830984" elapsed="0.000045"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:50:22.831085" elapsed="0.000022"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:50:22.811536" elapsed="0.019730">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:50:22.831507" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:50:22.831574" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:50:22.810602" elapsed="0.021005"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T00:50:22.832521" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T00:50:22.832034" elapsed="0.000580">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T00:50:22.831728" elapsed="0.000986">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T00:50:22.831699" elapsed="0.001070">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T00:50:22.832849" elapsed="0.000027"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:50:22.758461" elapsed="0.074537">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:22.833270" elapsed="0.000032"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:22.833505" elapsed="0.000028"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T00:50:22.833591" elapsed="0.000021"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T00:50:22.755893" elapsed="0.077836">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:22.833964" elapsed="0.000029"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:22.834240" elapsed="0.000030"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:22.834478" elapsed="0.000028"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:22.834704" elapsed="0.000028"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:22.834933" elapsed="0.000028"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:22.835288" elapsed="0.000034"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T00:50:22.835385" elapsed="0.000021"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T00:50:22.752857" elapsed="0.082671">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:50:23.867701" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:50:23.867211" elapsed="0.000523"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:50:23.868243" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:50:23.867908" elapsed="0.000362"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:50:23.868318" elapsed="0.000041"/>
</return>
<msg time="2026-04-08T00:50:23.868490" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:50:23.866799" elapsed="0.001815"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T00:50:23.873531" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T00:50:23.873340" elapsed="0.000218"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:50:23.873709" elapsed="0.000196"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:23.874288" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:23.874058" elapsed="0.000256"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:23.874764" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:23.874504" elapsed="0.000303"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:50:23.874953" elapsed="0.000182"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:23.875520" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:23.875310" elapsed="0.000235"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:23.875961" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:23.875713" elapsed="0.000289"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:23.876514" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:23.876168" elapsed="0.000372"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:23.876969" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:23.876733" elapsed="0.000280"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:23.877463" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:23.877179" elapsed="0.000310"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:50:23.883794" elapsed="0.000213"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:50:23.892684" elapsed="0.000216"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:50:23.893466" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:50:23.893056" elapsed="0.000438"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:23.894648" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:23.894078" elapsed="0.000611"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:50:23.894824" elapsed="0.000038"/>
</return>
<msg time="2026-04-08T00:50:23.894989" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:50:23.893682" elapsed="0.001331"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:50:23.895645" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:50:23.895190" elapsed="0.000482"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:50:23.896271" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:50:23.895831" elapsed="0.000467"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:50:23.896816" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:50:23.908381" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:50:23.896463" elapsed="0.016006">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:23.912931" elapsed="0.000053"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:23.913369" elapsed="0.000050"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:23.913853" elapsed="0.000049"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:23.914263" elapsed="0.000048"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:23.914650" elapsed="0.000045"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:23.915014" elapsed="0.000046"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:23.915657" elapsed="0.000046"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:23.916207" elapsed="0.000051"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:23.916699" elapsed="0.000059"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:50:23.915365" elapsed="0.001513"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:50:23.915198" elapsed="0.001716"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:23.917064" elapsed="0.000021"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:50:23.917126" elapsed="0.000017"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:50:23.892142" elapsed="0.025125">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:50:23.917338" elapsed="0.000015"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T00:50:23.881605" elapsed="0.035833">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:23.917613" elapsed="0.000021"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:23.921830" elapsed="0.000027"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:23.922023" elapsed="0.000021"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T00:50:23.922088" elapsed="0.000015"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T00:50:23.872778" elapsed="0.049431">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:50:23.922328" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:50:23.922370" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:50:23.872195" elapsed="0.050198"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T00:50:23.922610" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:50:23.922489" elapsed="0.000163"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:23.922467" elapsed="0.000208"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:50:23.924012" elapsed="0.000227"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:50:23.924721" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:50:23.924393" elapsed="0.000354"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:23.925597" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:23.925328" elapsed="0.000295"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:50:23.925671" elapsed="0.000031"/>
</return>
<msg time="2026-04-08T00:50:23.925826" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:50:23.924965" elapsed="0.000885"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:50:23.926419" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:50:23.926007" elapsed="0.000439"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:50:23.926960" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:50:23.926612" elapsed="0.000374"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:50:23.927374" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:50:23.936536" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:50:23.927148" elapsed="0.011130">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:23.938465" elapsed="0.000023"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:23.938637" elapsed="0.000021"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:23.938807" elapsed="0.000020"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:23.938971" elapsed="0.000019"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:23.939138" elapsed="0.000042"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:23.939329" elapsed="0.000020"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:23.939588" elapsed="0.000020"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:23.939758" elapsed="0.000020"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:23.939918" elapsed="0.000020"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:50:23.939461" elapsed="0.000509"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:50:23.939392" elapsed="0.000604"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:23.940135" elapsed="0.000074"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:50:23.940257" elapsed="0.000017"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:50:23.923466" elapsed="0.016903">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:50:23.940514" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:50:23.940558" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:50:23.922832" elapsed="0.017749"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T00:50:23.941465" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T00:50:23.940884" elapsed="0.000642">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T00:50:23.940666" elapsed="0.000922">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T00:50:23.940646" elapsed="0.000975">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T00:50:23.941667" elapsed="0.000016"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:50:23.871603" elapsed="0.070203">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:23.941987" elapsed="0.000022"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:23.942173" elapsed="0.000022"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T00:50:23.942238" elapsed="0.000015"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T00:50:23.868919" elapsed="0.073419">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:23.942507" elapsed="0.000021"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:23.942686" elapsed="0.000021"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:23.942857" elapsed="0.000020"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:23.943020" elapsed="0.000020"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:23.943205" elapsed="0.000021"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:23.943370" elapsed="0.000019"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T00:50:23.943431" elapsed="0.000014"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T00:50:23.865997" elapsed="0.077532">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:50:24.974563" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:50:24.974038" elapsed="0.000560"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:50:24.975088" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:50:24.974774" elapsed="0.000340"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:50:24.975179" elapsed="0.000043"/>
</return>
<msg time="2026-04-08T00:50:24.975355" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:50:24.973642" elapsed="0.001739"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T00:50:24.979967" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T00:50:24.979780" elapsed="0.000214"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:50:24.980145" elapsed="0.000211"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:24.980838" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:24.980624" elapsed="0.000240"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:24.981413" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:24.981053" elapsed="0.000403"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:50:24.981603" elapsed="0.000181"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:24.982182" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:24.981934" elapsed="0.000276"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:24.982622" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:24.982379" elapsed="0.000284"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:24.983177" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:24.982819" elapsed="0.000385"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:24.983604" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:24.983370" elapsed="0.000278"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:24.984126" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:24.983796" elapsed="0.000356"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:50:24.990925" elapsed="0.000214"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:50:24.999625" elapsed="0.000211"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:50:25.000442" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:50:24.999992" elapsed="0.000477"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:25.001704" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:25.001091" elapsed="0.000655"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:50:25.001881" elapsed="0.000039"/>
</return>
<msg time="2026-04-08T00:50:25.002047" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:50:25.000657" elapsed="0.001438"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:50:25.002793" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:50:25.002296" elapsed="0.000532"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:50:25.003456" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:50:25.003007" elapsed="0.000476"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:50:25.004012" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:50:25.015913" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:50:25.003663" elapsed="0.014902">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:25.018869" elapsed="0.000039"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:25.019121" elapsed="0.000030"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:25.019384" elapsed="0.000030"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:25.019625" elapsed="0.000029"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:25.019869" elapsed="0.000030"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:25.020137" elapsed="0.000057"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:25.020566" elapsed="0.000029"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:25.020902" elapsed="0.000032"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:25.021255" elapsed="0.000036"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:50:25.020378" elapsed="0.001078"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:50:25.020269" elapsed="0.001231"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:25.021709" elapsed="0.000032"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:50:25.021799" elapsed="0.000023"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:50:24.999114" elapsed="0.022856">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:50:25.022113" elapsed="0.000024"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T00:50:24.988670" elapsed="0.033616">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:25.022563" elapsed="0.000041"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:25.029501" elapsed="0.000042"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:25.029784" elapsed="0.000031"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T00:50:25.029878" elapsed="0.000022"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T00:50:24.979237" elapsed="0.050812">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:50:25.030248" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:50:25.030312" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:50:24.978668" elapsed="0.051677"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T00:50:25.030649" elapsed="0.000019"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:50:25.030479" elapsed="0.000236"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:25.030447" elapsed="0.000308"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:50:25.032955" elapsed="0.000313"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:50:25.033915" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:50:25.033481" elapsed="0.000470"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:25.035060" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:25.034766" elapsed="0.000320"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:50:25.035133" elapsed="0.000047"/>
</return>
<msg time="2026-04-08T00:50:25.035303" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:50:25.034275" elapsed="0.001053"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:50:25.035952" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:50:25.035487" elapsed="0.000492"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:50:25.036503" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:50:25.036135" elapsed="0.000394"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:50:25.036957" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:50:25.048399" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:50:25.036732" elapsed="0.014083">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:25.051100" elapsed="0.000034"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:25.051370" elapsed="0.000029"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:25.051596" elapsed="0.000027"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:25.051821" elapsed="0.000028"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:25.052051" elapsed="0.000027"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:25.052292" elapsed="0.000029"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:25.052655" elapsed="0.000028"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:25.052889" elapsed="0.000028"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:25.053109" elapsed="0.000027"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:50:25.052480" elapsed="0.000720"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:50:25.052385" elapsed="0.000853"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:25.053430" elapsed="0.000027"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:50:25.053509" elapsed="0.000021"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:50:25.032148" elapsed="0.021510">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:50:25.053889" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:50:25.053952" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:50:25.030985" elapsed="0.023027"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T00:50:25.054944" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T00:50:25.054468" elapsed="0.000561">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T00:50:25.054134" elapsed="0.000982">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T00:50:25.054106" elapsed="0.001076">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T00:50:25.055251" elapsed="0.000022"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:50:24.978072" elapsed="0.077317">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:25.055656" elapsed="0.000031"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:25.056094" elapsed="0.000111"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T00:50:25.056335" elapsed="0.000039"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T00:50:24.975679" elapsed="0.080918">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:25.057110" elapsed="0.000084"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:25.057588" elapsed="0.000049"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:25.058025" elapsed="0.000051"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:25.058452" elapsed="0.000048"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:25.058852" elapsed="0.000047"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:25.059272" elapsed="0.000049"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T00:50:25.059420" elapsed="0.000035"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T00:50:24.972807" elapsed="0.086854">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:50:26.086925" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:50:26.086426" elapsed="0.000534"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:50:26.087468" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:50:26.087135" elapsed="0.000360"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:50:26.087544" elapsed="0.000044"/>
</return>
<msg time="2026-04-08T00:50:26.087720" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:50:26.086007" elapsed="0.001738"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T00:50:26.092399" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T00:50:26.092205" elapsed="0.000220"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:50:26.092578" elapsed="0.000193"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:26.093135" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:26.092924" elapsed="0.000251"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:26.093622" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:26.093364" elapsed="0.000299"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:50:26.093809" elapsed="0.000181"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:26.094365" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:26.094141" elapsed="0.000250"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:26.094805" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:26.094559" elapsed="0.000285"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:26.095352" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:26.094994" elapsed="0.000384"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:26.095792" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:26.095543" elapsed="0.000304"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:26.096347" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:26.096034" elapsed="0.000340"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:50:26.105219" elapsed="0.000293"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:50:26.113992" elapsed="0.000227"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:50:26.114766" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:50:26.114376" elapsed="0.000417"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:26.115961" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:26.115402" elapsed="0.000601"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:50:26.116139" elapsed="0.000050"/>
</return>
<msg time="2026-04-08T00:50:26.116316" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:50:26.114979" elapsed="0.001363"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:50:26.116951" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:50:26.116503" elapsed="0.000475"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:50:26.117581" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:50:26.117136" elapsed="0.000472"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:50:26.118202" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:50:26.129144" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:50:26.117770" elapsed="0.013167">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:26.131127" elapsed="0.000023"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:26.131326" elapsed="0.000022"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:26.131495" elapsed="0.000021"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:26.131664" elapsed="0.000021"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:26.131849" elapsed="0.000021"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:26.132015" elapsed="0.000020"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:26.132356" elapsed="0.000022"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:26.132586" elapsed="0.000022"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:26.132779" elapsed="0.000021"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:50:26.132182" elapsed="0.000684"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:50:26.132086" elapsed="0.000809"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:26.133036" elapsed="0.000021"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:50:26.133096" elapsed="0.000016"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:50:26.113500" elapsed="0.019738">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:50:26.133309" elapsed="0.000016"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T00:50:26.102167" elapsed="0.031243">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:26.133628" elapsed="0.000022"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:26.137939" elapsed="0.000027"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:26.138133" elapsed="0.000034"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T00:50:26.138215" elapsed="0.000016"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T00:50:26.091600" elapsed="0.046722">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:50:26.138435" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:50:26.138479" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:50:26.091026" elapsed="0.047477"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T00:50:26.138715" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:50:26.138596" elapsed="0.000161"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:26.138575" elapsed="0.000205"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:50:26.140106" elapsed="0.000227"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:50:26.140791" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:50:26.140486" elapsed="0.000331"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:26.141613" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:26.141349" elapsed="0.000291"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:50:26.141686" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:50:26.141832" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:50:26.140998" elapsed="0.000859"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:50:26.142418" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:50:26.142029" elapsed="0.000416"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:50:26.143002" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:50:26.142600" elapsed="0.000428"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:50:26.143407" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:50:26.154442" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:50:26.143206" elapsed="0.013134">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:26.156544" elapsed="0.000023"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:26.156717" elapsed="0.000020"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:26.156881" elapsed="0.000020"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:26.157044" elapsed="0.000020"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:26.157230" elapsed="0.000021"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:26.157394" elapsed="0.000020"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:26.157690" elapsed="0.000020"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:26.157865" elapsed="0.000020"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:26.158025" elapsed="0.000020"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:50:26.157561" elapsed="0.000517"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:50:26.157493" elapsed="0.000611"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:26.158261" elapsed="0.000020"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:50:26.158321" elapsed="0.000016"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:50:26.139550" elapsed="0.018880">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:50:26.158544" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:50:26.158589" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:50:26.138935" elapsed="0.019678"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T00:50:26.159262" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T00:50:26.158919" elapsed="0.000405">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T00:50:26.158703" elapsed="0.000684">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T00:50:26.158678" elapsed="0.000741">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T00:50:26.159465" elapsed="0.000015"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:50:26.090482" elapsed="0.069082">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:26.159759" elapsed="0.000022"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:26.159926" elapsed="0.000020"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T00:50:26.159988" elapsed="0.000015"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T00:50:26.088086" elapsed="0.072001">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:26.160276" elapsed="0.000022"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:26.160456" elapsed="0.000020"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:26.160624" elapsed="0.000021"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:26.160786" elapsed="0.000024"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:26.160958" elapsed="0.000020"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:26.161123" elapsed="0.000020"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T00:50:26.161241" elapsed="0.000017"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T00:50:26.085170" elapsed="0.076177">Could not parse owner and candidates for device openflow:1</status>
</kw>
<msg time="2026-04-08T00:50:26.161452" level="FAIL">Keyword 'ClusterManagement.Verify_Owner_And_Successors_For_Device' failed after retrying for 30 seconds. The last error was: Could not parse owner and candidates for device openflow:1</msg>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>30s</arg>
<arg>1s</arg>
<arg>ClusterManagement.Verify_Owner_And_Successors_For_Device</arg>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="FAIL" start="2026-04-08T00:49:55.901289" elapsed="30.260257">Keyword 'ClusterManagement.Verify_Owner_And_Successors_For_Device' failed after retrying for 30 seconds. The last error was: Could not parse owner and candidates for device openflow:1</status>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T00:50:26.161624" elapsed="0.000016"/>
</return>
<var>${original_owner}</var>
<var>${original_successor_list}</var>
<arg>openflow:1</arg>
<arg>1</arg>
<doc>Check Entity Owner Status and identify owner and successors for the device ${device}. Request is sent to controller ${controller_index}.</doc>
<status status="FAIL" start="2026-04-08T00:49:55.898982" elapsed="30.262740">Keyword 'ClusterManagement.Verify_Owner_And_Successors_For_Device' failed after retrying for 30 seconds. The last error was: Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Get From List" owner="Collections">
<var>${original_successor}</var>
<arg>${original_successor_list}</arg>
<arg>0</arg>
<doc>Returns the value specified with an ``index`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:26.161898" elapsed="0.000020"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<arg>${original_owner}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:26.162078" elapsed="0.000019"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<arg>${original_successor_list}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:26.162264" elapsed="0.000021"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<arg>${original_successor}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:26.162435" elapsed="0.000020"/>
</kw>
<doc>Check Entity Owner Status and identify owner and successor for first switch s1.</doc>
<status status="FAIL" start="2026-04-08T00:49:55.891021" elapsed="30.271591">Keyword 'ClusterManagement.Verify_Owner_And_Successors_For_Device' failed after retrying for 30 seconds. The last error was: Could not parse owner and candidates for device openflow:1</status>
</test>
<test id="s1-s1-t4" name="Reconnect Extra Switches To Successors And Check OVS Connections" line="39">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:26.164067" level="INFO">${controller_opt} = </msg>
<var>${controller_opt}</var>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:26.163544" elapsed="0.000551"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Catenate" owner="BuiltIn">
<var>${controller_opt}</var>
<arg>${controller_opt}</arg>
<arg>${SPACE}tcp:${ODL_SYSTEM_${index}_IP}:${ODL_OF_PORT}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:26.167216" elapsed="0.000023"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${controller_opt}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:26.167419" elapsed="0.000020"/>
</kw>
<var name="${index}"/>
<status status="NOT RUN" start="2026-04-08T00:50:26.167066" elapsed="0.000404"/>
</iter>
<msg time="2026-04-08T00:50:26.167501" level="FAIL">Variable '@{original_successor_list}' not found.</msg>
<var>${index}</var>
<value>@{original_successor_list}</value>
<status status="FAIL" start="2026-04-08T00:50:26.164145" elapsed="0.003391">Variable '@{original_successor_list}' not found.</status>
</for>
<kw name="Set Controller In OVS Bridge" owner="OVSDB">
<arg>${TOOLS_SYSTEM_IP}</arg>
<arg>s2</arg>
<arg>${controller_opt}</arg>
<doc>Sets controller for the OVS bridge ${bridge} using  and OF version ${ofversion}.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:26.174737" elapsed="0.000026"/>
</kw>
<kw name="Set Controller In OVS Bridge" owner="OVSDB">
<arg>${TOOLS_SYSTEM_IP}</arg>
<arg>s3</arg>
<arg>${controller_opt}</arg>
<doc>Sets controller for the OVS bridge ${bridge} using  and OF version ${ofversion}.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:26.181846" elapsed="0.000026"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<arg>10s</arg>
<arg>1s</arg>
<arg>OVSDB.Check OVS OpenFlow Connections</arg>
<arg>${TOOLS_SYSTEM_IP}</arg>
<arg>7</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:26.182037" elapsed="0.000020"/>
</kw>
<doc>Connect switches s2 and s3 to successor instances.</doc>
<status status="FAIL" start="2026-04-08T00:50:26.163003" elapsed="0.019207">Variable '@{original_successor_list}' not found.</status>
</test>
<test id="s1-s1-t5" name="Check Network Operational Information Before Fail" line="52">
<kw name="Check OpenFlow Network Operational Information For Sample Topology" owner="ClusterOpenFlow">
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-08T00:50:26.189129" level="INFO">${dictionary} = {'openflow:1': '4', 'openflow:2': '5', 'openflow:3': '5'}</msg>
<var>${dictionary}</var>
<arg>openflow:1=4</arg>
<arg>openflow:2=5</arg>
<arg>openflow:3=5</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-08T00:50:26.188775" elapsed="0.000395"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Check_Item_Occurrence_Member_List_Or_All" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:50:26.195128" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:50:26.194744" elapsed="0.000425"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:50:26.195646" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:50:26.195329" elapsed="0.000344"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:50:26.195762" elapsed="0.000033"/>
</return>
<msg time="2026-04-08T00:50:26.195925" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:50:26.194375" elapsed="0.001574"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_From_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:26.203227" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:26.202910" elapsed="0.000344"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:50:26.203299" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:50:26.203445" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:50:26.202565" elapsed="0.000904"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:26.209681" level="INFO">/rests/data/opendaylight-inventory:nodes?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:26.209428" elapsed="0.000300"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:26.210168" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:26.209911" elapsed="0.000304"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:50:26.241568" level="INFO">GET Request : url=http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01nfu2ssrokr1es5zgka78rw970.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:50:26.243550" level="INFO">GET Response : url=http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Transfer-Encoding': 'chunked'} 
 body={"opendaylight-inventory:nodes":{"node":[{"id":"openflow:3","flow-node-inventory:port-number":55176,"flow-node-inventory:table":[{"id":62,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":28,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":2,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":224,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":181,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":147,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":106,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":61,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":27,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":1,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":223,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":182,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":148,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":105,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":60,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":30,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":0,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"37","active-flows":1,"packets-matched":"28"},"flow":[{"id":"#UF$TABLE*0-1","table_id":0,"priority":0,"cookie_mask":"0","idle-timeout":0,"cookie":"10","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"output-action":{"max-length":65535,"output-node-connector":"CONTROLLER"}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"16","byte-count":"1225","duration":{"second":33,"nanosecond":436000000}},"flags":"SEND_FLOW_REM"}]},{"id":226,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":179,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":149,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":104,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":59,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":29,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":225,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":180,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":150,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":103,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":66,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":32,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":220,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":185,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":151,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":102,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":65,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":31,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":253,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":219,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":186,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":152,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":101,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":64,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":34,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":252,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":222,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":183,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":153,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":100,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":63,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":33,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":251,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":221,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":184,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":154,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":99,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":54,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":20,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":250,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":216,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":189,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":155,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":129,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":114,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":53,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":19,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":249,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":215,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":190,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":156,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":130,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":113,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{... (set the log level to DEBUG or TRACE to see the full content) 
 </msg>
<msg time="2026-04-08T00:50:26.243790" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:50:26.212237" elapsed="0.031580"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:26.210286" elapsed="0.033575"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:26.244045" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:26.243889" elapsed="0.000220"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:26.210266" elapsed="0.033865"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:26.247834" level="INFO">{"opendaylight-inventory:nodes":{"node":[{"id":"openflow:3","flow-node-inventory:port-number":55176,"flow-node-inventory:table":[{"id":62,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":28,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":2,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":224,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":181,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":147,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":106,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":61,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":27,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":1,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":223,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":182,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":148,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":105,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":60,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":30,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":0,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"37","active-flows":1,"packets-matched":"28"},"flow":[{"id":"#UF$TABLE*0-1","table_id":0,"priority":0,"cookie_mask":"0","idle-timeout":0,"cookie":"10","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"output-action":{"max-length":65535,"output-node-connector":"CONTROLLER"}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"16","byte-count":"1225","duration":{"second":33,"nanosecond":436000000}},"flags":"SEND_FLOW_REM"}]},{"id":226,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":179,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":149,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":104,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":59,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":29,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":225,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":180,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":150,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":103,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":66,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":32,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":220,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":185,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":151,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":102,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":65,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":31,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":253,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":219,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":186,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":152,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":101,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":64,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":34,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":252,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":222,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":183,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":153,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":100,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":63,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":33,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":251,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":221,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":184,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":154,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":99,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":54,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":20,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":250,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":216,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":189,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":155,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":129,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":114,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":53,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":19,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":249,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":215,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":190,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":156,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":130,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":113,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":52,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":22,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":248,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":218,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":187,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":157,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":112,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":51,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":21,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":247,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":217,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":188,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":158,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":128,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":111,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":58,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":24,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":246,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":212,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":193,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":159,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":110,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":57,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":23,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":245,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":211,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":194,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":160,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":109,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":56,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":26,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":244,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":214,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":191,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":161,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":108,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":55,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":25,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":243,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":213,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":192,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":162,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":107,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":77,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":43,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":17,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":239,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":198,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":164,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":138,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":119,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":89,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":78,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":44,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":18,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":240,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":197,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":163,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":137,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":120,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":90,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":75,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":45,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":15,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":241,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":196,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":166,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":136,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":121,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":87,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":76,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":46,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":16,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":242,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":195,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":165,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":135,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":122,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":88,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":81,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":47,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":13,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":235,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":202,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":168,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":134,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":115,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":85,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":82,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":48,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":14,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":236,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":201,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":167,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":133,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":116,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":86,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":79,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":49,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":11,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":237,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":200,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":170,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":132,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":117,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":83,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":80,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":50,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":12,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":238,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":199,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":169,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":131,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":118,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":84,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":69,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":35,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":9,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":231,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":206,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":172,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":146,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":127,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":97,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":70,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":36,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":10,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":232,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":205,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":171,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":145,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":98,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":67,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":37,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":7,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":233,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":204,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":174,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":144,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":95,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":68,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":38,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":8,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":234,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":203,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":173,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":143,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":96,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":73,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":39,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":5,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":227,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":210,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":176,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":142,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":123,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":93,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":74,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":40,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":6,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":228,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":209,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":175,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":141,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":124,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":94,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":71,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":41,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":3,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":229,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":208,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":178,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":140,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":125,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":91,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":72,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":42,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":4,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":230,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":207,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":177,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":139,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":126,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":92,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}}],"opendaylight-group-statistics:group-features":{"max-groups":[4294967040],"group-types-supported":["opendaylight-group-types:group-all","opendaylight-group-types:group-ff","opendaylight-group-types:group-select","opendaylight-group-types:group-indirect"],"group-capabilities-supported":["opendaylight-group-types:chaining","opendaylight-group-types:select-weight","opendaylight-group-types:select-liveness"],"actions":[67076097]},"flow-node-inventory:manufacturer":"Nicira, Inc.","flow-node-inventory:description":"s3","flow-node-inventory:hardware":"Open vSwitch","flow-node-inventory:switch-features":{"max_tables":254,"capabilities":["flow-node-inventory:flow-feature-capability-table-stats","flow-node-inventory:flow-feature-capability-group-stats","flow-node-inventory:flow-feature-capability-queue-stats","flow-node-inventory:flow-feature-capability-flow-stats","flow-node-inventory:flow-feature-capability-port-stats"],"max_buffers":0},"flow-node-inventory:snapshot-gathering-status-start":{"begin":"2026-04-08T00:50:24.978Z"},"flow-node-inventory:software":"2.17.11","node-connector":[{"id":"openflow:3:3","flow-node-inventory:port-number":3,"flow-node-inventory:hardware-address":"d6:85:2c:89:fa:1b","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s3-eth3","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"20","received":"22"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":35,"nanosecond":105000000},"bytes":{"transmitted":"1673","received":"1849"},"receive-crc-error":"0"}},{"id":"openflow:3:2","flow-node-inventory:port-number":2,"flow-node-inventory:hardware-address":"0e:09:5c:6f:b8:35","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s3-eth2","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"26","received":"9"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":35,"nanosecond":105000000},"bytes":{"transmitted":"2201","received":"726"},"receive-crc-error":"0"}},{"id":"openflow:3:1","flow-node-inventory:port-number":1,"flow-node-inventory:hardware-address":"ea:2e:b0:52:05:a4","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s3-eth1","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"26","received":"9"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":35,"nanosecond":105000000},"bytes":{"transmitted":"2201","received":"726"},"receive-crc-error":"0"}},{"id":"openflow:3:LOCAL","flow-node-inventory:port-number":4294967294,"flow-node-inventory:hardware-address":"46:1b:44:af:67:4b","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s3","flow-node-inventory:current-feature":"","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":0,"flow-node-inventory:state":{"live":false,"blocked":false,"link-down":true},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"PORT-DOWN","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"0","received":"0"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":35,"nanosecond":100000000},"bytes":{"transmitted":"0","received":"0"},"receive-crc-error":"0"}}],"flow-node-inventory:ip-address":"10.30.170.192","flow-node-inventory:serial-number":"None","flow-node-inventory:snapshot-gathering-status-end":{"succeeded":true,"end":"2026-04-08T00:50:25.043Z"}},{"id":"openflow:1","flow-node-inventory:port-number":55166,"flow-node-inventory:table":[{"id":62,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":28,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":2,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":224,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":181,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":147,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":106,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":61,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":27,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":1,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":223,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":182,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":148,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":105,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":60,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":30,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":0,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"38","active-flows":1,"packets-matched":"31"},"flow":[{"id":"#UF$TABLE*0-2","table_id":0,"priority":0,"cookie_mask":"0","idle-timeout":0,"cookie":"10","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"output-action":{"max-length":65535,"output-node-connector":"CONTROLLER"}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"19","byte-count":"1530","duration":{"second":33,"nanosecond":439000000}},"flags":"SEND_FLOW_REM"}]},{"id":226,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":179,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":149,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":104,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":59,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":29,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":225,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":180,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":150,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":103,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":66,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":32,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":220,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":185,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":151,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":102,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":65,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":31,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":253,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":219,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":186,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":152,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":101,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":64,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":34,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":252,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":222,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":183,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":153,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":100,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":63,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":33,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":251,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":221,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":184,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":154,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":99,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":54,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":20,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":250,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":216,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":189,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":155,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":129,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":114,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":53,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":19,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":249,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":215,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":190,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":156,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":130,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":113,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":52,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":22,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":248,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":218,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":187,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":157,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":112,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":51,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":21,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":247,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":217,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":188,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":158,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":128,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":111,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":58,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":24,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":246,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":212,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":193,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":159,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":110,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":57,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":23,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":245,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":211,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":194,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":160,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":109,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":56,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":26,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":244,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":214,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":191,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":161,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":108,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":55,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":25,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":243,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":213,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":192,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":162,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":107,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":77,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":43,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":17,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":239,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":198,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":164,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":138,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":119,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":89,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":78,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":44,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":18,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":240,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":197,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":163,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":137,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":120,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":90,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":75,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":45,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":15,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":241,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":196,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":166,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":136,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":121,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":87,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":76,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":46,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":16,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":242,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":195,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":165,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":135,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":122,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":88,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":81,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":47,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":13,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":235,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":202,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":168,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":134,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":115,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":85,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":82,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":48,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":14,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":236,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":201,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":167,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":133,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":116,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":86,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":79,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":49,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":11,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":237,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":200,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":170,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":132,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":117,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":83,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":80,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":50,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":12,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":238,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":199,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":169,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":131,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":118,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":84,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":69,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":35,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":9,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":231,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":206,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":172,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":146,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":127,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":97,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":70,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":36,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":10,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":232,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":205,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":171,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":145,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":98,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":67,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":37,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":7,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":233,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":204,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":174,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":144,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":95,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":68,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":38,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":8,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":234,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":203,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":173,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":143,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":96,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":73,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":39,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":5,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":227,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":210,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":176,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":142,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":123,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":93,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":74,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":40,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":6,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":228,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":209,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":175,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":141,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":124,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":94,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":71,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":41,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":3,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":229,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":208,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":178,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":140,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":125,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":91,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":72,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":42,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":4,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":230,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":207,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":177,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":139,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":126,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":92,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}}],"opendaylight-group-statistics:group-features":{"max-groups":[4294967040],"group-types-supported":["opendaylight-group-types:group-all","opendaylight-group-types:group-ff","opendaylight-group-types:group-select","opendaylight-group-types:group-indirect"],"group-capabilities-supported":["opendaylight-group-types:chaining","opendaylight-group-types:select-weight","opendaylight-group-types:select-liveness"],"actions":[67076097]},"flow-node-inventory:manufacturer":"Nicira, Inc.","flow-node-inventory:description":"s1","flow-node-inventory:hardware":"Open vSwitch","flow-node-inventory:switch-features":{"max_tables":254,"capabilities":["flow-node-inventory:flow-feature-capability-table-stats","flow-node-inventory:flow-feature-capability-group-stats","flow-node-inventory:flow-feature-capability-queue-stats","flow-node-inventory:flow-feature-capability-flow-stats","flow-node-inventory:flow-feature-capability-port-stats"],"max_buffers":0},"flow-node-inventory:snapshot-gathering-status-start":{"begin":"2026-04-08T00:50:24.988Z"},"flow-node-inventory:software":"2.17.11","node-connector":[{"id":"openflow:1:1","flow-node-inventory:port-number":1,"flow-node-inventory:hardware-address":"c6:0c:45:fe:a3:df","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s1-eth1","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"22","received":"20"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":35,"nanosecond":165000000},"bytes":{"transmitted":"1849","received":"1673"},"receive-crc-error":"0"}},{"id":"openflow:1:LOCAL","flow-node-inventory:port-number":4294967294,"flow-node-inventory:hardware-address":"92:dc:44:02:39:46","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s1","flow-node-inventory:current-feature":"","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":0,"flow-node-inventory:state":{"live":false,"blocked":false,"link-down":true},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"PORT-DOWN","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"0","received":"0"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":35,"nanosecond":153000000},"bytes":{"transmitted":"0","received":"0"},"receive-crc-error":"0"}},{"id":"openflow:1:2","flow-node-inventory:port-number":2,"flow-node-inventory:hardware-address":"c2:e9:b7:e4:fd:76","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s1-eth2","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"22","received":"20"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":35,"nanosecond":165000000},"bytes":{"transmitted":"1849","received":"1673"},"receive-crc-error":"0"}}],"flow-node-inventory:ip-address":"10.30.170.192","flow-node-inventory:serial-number":"None","flow-node-inventory:snapshot-gathering-status-end":{"succeeded":true,"end":"2026-04-08T00:50:25.049Z"}},{"id":"openflow:2","flow-node-inventory:port-number":55170,"flow-node-inventory:table":[{"id":62,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":28,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":2,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":224,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":181,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":147,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":106,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":61,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":27,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":1,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":223,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":182,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":148,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":105,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":60,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":30,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":0,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"37","active-flows":1,"packets-matched":"32"},"flow":[{"id":"#UF$TABLE*0-3","table_id":0,"priority":0,"cookie_mask":"0","idle-timeout":0,"cookie":"10","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"output-action":{"max-length":65535,"output-node-connector":"CONTROLLER"}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"20","byte-count":"1565","duration":{"second":33,"nanosecond":431000000}},"flags":"SEND_FLOW_REM"}]},{"id":226,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":179,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":149,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":104,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":59,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":29,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":225,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":180,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":150,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":103,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":66,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":32,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":220,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":185,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":151,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":102,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":65,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":31,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":253,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":219,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":186,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":152,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":101,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":64,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":34,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":252,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":222,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":183,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":153,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":100,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":63,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":33,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":251,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":221,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":184,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":154,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":99,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":54,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":20,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":250,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":216,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":189,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":155,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":129,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":114,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":53,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":19,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":249,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":215,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":190,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":156,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":130,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":113,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":52,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":22,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":248,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":218,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":187,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":157,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":112,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":51,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":21,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":247,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":217,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":188,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":158,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":128,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":111,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":58,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":24,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":246,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":212,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":193,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":159,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":110,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":57,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":23,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":245,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":211,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":194,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":160,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":109,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":56,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":26,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":244,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":214,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":191,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":161,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":108,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":55,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":25,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":243,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":213,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":192,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":162,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":107,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":77,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":43,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":17,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":239,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":198,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":164,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":138,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":119,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":89,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":78,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":44,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":18,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":240,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":197,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":163,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":137,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":120,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":90,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":75,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":45,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":15,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":241,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":196,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":166,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":136,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":121,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":87,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":76,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":46,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":16,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":242,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":195,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":165,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":135,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":122,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":88,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":81,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":47,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":13,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":235,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":202,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":168,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":134,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":115,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":85,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":82,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":48,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":14,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":236,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":201,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":167,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":133,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":116,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":86,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":79,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":49,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":11,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":237,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":200,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":170,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":132,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":117,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":83,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":80,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":50,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":12,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":238,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":199,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":169,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":131,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":118,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":84,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":69,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":35,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":9,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":231,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":206,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":172,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":146,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":127,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":97,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":70,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":36,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":10,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":232,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":205,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":171,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":145,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":98,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":67,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":37,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":7,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":233,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":204,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":174,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":144,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":95,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":68,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":38,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":8,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":234,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":203,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":173,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":143,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":96,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":73,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":39,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":5,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":227,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":210,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":176,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":142,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":123,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":93,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":74,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":40,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":6,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":228,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":209,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":175,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":141,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":124,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":94,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":71,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":41,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":3,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":229,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":208,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":178,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":140,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":125,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":91,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":72,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":42,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":4,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":230,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":207,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":177,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":139,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":126,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":92,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}}],"opendaylight-group-statistics:group-features":{"max-groups":[4294967040],"group-types-supported":["opendaylight-group-types:group-all","opendaylight-group-types:group-ff","opendaylight-group-types:group-select","opendaylight-group-types:group-indirect"],"group-capabilities-supported":["opendaylight-group-types:chaining","opendaylight-group-types:select-weight","opendaylight-group-types:select-liveness"],"actions":[67076097]},"flow-node-inventory:manufacturer":"Nicira, Inc.","flow-node-inventory:description":"s2","flow-node-inventory:hardware":"Open vSwitch","flow-node-inventory:switch-features":{"max_tables":254,"capabilities":["flow-node-inventory:flow-feature-capability-table-stats","flow-node-inventory:flow-feature-capability-group-stats","flow-node-inventory:flow-feature-capability-queue-stats","flow-node-inventory:flow-feature-capability-flow-stats","flow-node-inventory:flow-feature-capability-port-stats"],"max_buffers":0},"flow-node-inventory:snapshot-gathering-status-start":{"begin":"2026-04-08T00:50:24.974Z"},"flow-node-inventory:software":"2.17.11","node-connector":[{"id":"openflow:2:3","flow-node-inventory:port-number":3,"flow-node-inventory:hardware-address":"e6:ba:34:39:b4:59","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s2-eth3","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"20","received":"22"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":35,"nanosecond":145000000},"bytes":{"transmitted":"1673","received":"1849"},"receive-crc-error":"0"}},{"id":"openflow:2:LOCAL","flow-node-inventory:port-number":4294967294,"flow-node-inventory:hardware-address":"a6:b5:a2:39:96:47","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s2","flow-node-inventory:current-feature":"","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":0,"flow-node-inventory:state":{"live":false,"blocked":false,"link-down":true},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"PORT-DOWN","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"0","received":"0"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":35,"nanosecond":143000000},"bytes":{"transmitted":"0","received":"0"},"receive-crc-error":"0"}},{"id":"openflow:2:2","flow-node-inventory:port-number":2,"flow-node-inventory:hardware-address":"8e:25:49:71:1c:58","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s2-eth2","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"26","received":"9"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":35,"nanosecond":145000000},"bytes":{"transmitted":"2201","received":"726"},"receive-crc-error":"0"}},{"id":"openflow:2:1","flow-node-inventory:port-number":1,"flow-node-inventory:hardware-address":"66:b8:61:ef:20:c7","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s2-eth1","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"26","received":"10"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":35,"nanosecond":145000000},"bytes":{"transmitted":"2201","received":"816"},"receive-crc-error":"0"}}],"flow-node-inventory:ip-address":"10.30.170.192","flow-node-inventory:serial-number":"None","flow-node-inventory:snapshot-gathering-status-end":{"succeeded":true,"end":"2026-04-08T00:50:25.047Z"}}]}}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:26.245148" elapsed="0.003763"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:26.244927" elapsed="0.004021"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:26.244908" elapsed="0.004065"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:26.251430" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:26.249270" elapsed="0.002222"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:26.249029" elapsed="0.002498"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:26.249013" elapsed="0.002538"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:50:26.252118" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:50:26.251721" elapsed="0.000423"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:26.252469" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:26.252231" elapsed="0.000295"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:26.253010" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:26.252711" elapsed="0.000325"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:26.252550" elapsed="0.000521"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:26.252212" elapsed="0.000881"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:50:26.253627" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:50:26.253267" elapsed="0.000386"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:26.253953" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:26.253722" elapsed="0.000288"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:26.254508" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:26.254211" elapsed="0.000322"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:26.254033" elapsed="0.000536"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:26.253704" elapsed="0.000886"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:50:26.254740" elapsed="0.000343"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:50:26.255574" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:50:26.255260" elapsed="0.000340"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:50:26.255752" elapsed="0.002349"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:50:26.244505" elapsed="0.013673"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-08T00:50:26.258354" elapsed="0.000029"/>
</return>
<status status="PASS" start="2026-04-08T00:50:26.258249" elapsed="0.000167"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:26.258230" elapsed="0.000209"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:26.258586" elapsed="0.000021"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-08T00:50:26.258654" elapsed="0.000014"/>
</return>
<msg time="2026-04-08T00:50:26.261184" level="INFO">${response_text} = {"opendaylight-inventory:nodes":{"node":[{"id":"openflow:3","flow-node-inventory:port-number":55176,"flow-node-inventory:table":[{"id":62,"opendaylight-flow-table-statistics:flow-table-statistics":{"p...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${access}</arg>
<arg>session=${session}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:50:26.203815" elapsed="0.057398"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:50:26.261264" elapsed="0.000027"/>
</return>
<msg time="2026-04-08T00:50:26.261414" level="INFO">${data} = {"opendaylight-inventory:nodes":{"node":[{"id":"openflow:3","flow-node-inventory:port-number":55176,"flow-node-inventory:table":[{"id":62,"opendaylight-flow-table-statistics:flow-table-statistics":{"p...</msg>
<var>${data}</var>
<arg>uri=${uri}</arg>
<arg>member_index=${index}</arg>
<doc>Send a GET with the supplied uri to member ${member_index}.</doc>
<status status="PASS" start="2026-04-08T00:50:26.202057" elapsed="0.059382"/>
</kw>
<kw name="Check Item Occurrence" owner="Utils">
<for flavor="IN">
<iter>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T00:50:26.262663" level="INFO">Item found from container 4 times.</msg>
<arg>${string}</arg>
<arg>${item}</arg>
<arg>${dictionary_item_occurrence}[${item}]</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="PASS" start="2026-04-08T00:50:26.262236" elapsed="0.000868"/>
</kw>
<var name="${item}">openflow:1</var>
<status status="PASS" start="2026-04-08T00:50:26.262064" elapsed="0.001080"/>
</iter>
<iter>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T00:50:26.263824" level="INFO">Item found from container 5 times.</msg>
<arg>${string}</arg>
<arg>${item}</arg>
<arg>${dictionary_item_occurrence}[${item}]</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="PASS" start="2026-04-08T00:50:26.263400" elapsed="0.000732"/>
</kw>
<var name="${item}">openflow:2</var>
<status status="PASS" start="2026-04-08T00:50:26.263246" elapsed="0.000984"/>
</iter>
<iter>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T00:50:26.264879" level="INFO">Item found from container 5 times.</msg>
<arg>${string}</arg>
<arg>${item}</arg>
<arg>${dictionary_item_occurrence}[${item}]</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="PASS" start="2026-04-08T00:50:26.264471" elapsed="0.000750"/>
</kw>
<var name="${item}">openflow:3</var>
<status status="PASS" start="2026-04-08T00:50:26.264318" elapsed="0.000943"/>
</iter>
<var>${item}</var>
<value>@{dictionary_item_occurrence}</value>
<status status="PASS" start="2026-04-08T00:50:26.261929" elapsed="0.003362"/>
</for>
<arg>${data}</arg>
<arg>${dictionary}</arg>
<doc>Check string for occurrences of items expressed in a list of dictionaries {item=occurrences}. 0 occurences means item is not present.</doc>
<status status="PASS" start="2026-04-08T00:50:26.261667" elapsed="0.003679"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T00:50:26.196134" elapsed="0.069246"/>
</iter>
<iter>
<kw name="Get_From_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:26.270802" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:26.270496" elapsed="0.000336"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:50:26.270877" elapsed="0.000031"/>
</return>
<msg time="2026-04-08T00:50:26.271027" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:50:26.270137" elapsed="0.000915"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:26.277317" level="INFO">/rests/data/opendaylight-inventory:nodes?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:26.277048" elapsed="0.000315"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:26.277757" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:26.277515" elapsed="0.000285"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:50:26.338686" level="INFO">GET Request : url=http://10.30.170.131:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0evogeryo91251obsb096nsda10.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:50:26.340625" level="INFO">GET Response : url=http://10.30.170.131:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Transfer-Encoding': 'chunked'} 
 body={"opendaylight-inventory:nodes":{"node":[{"id":"openflow:3","flow-node-inventory:manufacturer":"Nicira, Inc.","flow-node-inventory:description":"s3","flow-node-inventory:hardware":"Open vSwitch","flow-node-inventory:software":"2.17.11","flow-node-inventory:ip-address":"10.30.170.192","flow-node-inventory:serial-number":"None","flow-node-inventory:port-number":55176,"flow-node-inventory:table":[{"id":62,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":28,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":2,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":224,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":181,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":147,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":106,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":61,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":27,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":1,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":223,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":182,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":148,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":105,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":60,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":30,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":0,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"37","active-flows":1,"packets-matched":"28"},"flow":[{"id":"#UF$TABLE*0-1","table_id":0,"priority":0,"cookie_mask":"0","idle-timeout":0,"cookie":"10","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"output-action":{"max-length":65535,"output-node-connector":"CONTROLLER"}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"16","byte-count":"1225","duration":{"second":33,"nanosecond":436000000}},"flags":"SEND_FLOW_REM"}]},{"id":226,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":179,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":149,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":104,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":59,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":29,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":225,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":180,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":150,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":103,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":66,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":32,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":220,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":185,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":151,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":102,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":65,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":31,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":253,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":219,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":186,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":152,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":101,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":64,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":34,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":252,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":222,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":183,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":153,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":100,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":63,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":33,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":251,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":221,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":184,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":154,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":99,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":54,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":20,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":250,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":216,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":189,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":155,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":129,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":114,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":53,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":19,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":249,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":215,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":190,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":156,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"i... (set the log level to DEBUG or TRACE to see the full content) 
 </msg>
<msg time="2026-04-08T00:50:26.340905" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:50:26.279974" elapsed="0.060960"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:26.277870" elapsed="0.063119"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:26.341242" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:26.341025" elapsed="0.000286"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:26.277851" elapsed="0.063483"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:26.345453" level="INFO">{"opendaylight-inventory:nodes":{"node":[{"id":"openflow:3","flow-node-inventory:manufacturer":"Nicira, Inc.","flow-node-inventory:description":"s3","flow-node-inventory:hardware":"Open vSwitch","flow-node-inventory:software":"2.17.11","flow-node-inventory:ip-address":"10.30.170.192","flow-node-inventory:serial-number":"None","flow-node-inventory:port-number":55176,"flow-node-inventory:table":[{"id":62,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":28,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":2,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":224,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":181,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":147,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":106,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":61,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":27,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":1,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":223,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":182,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":148,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":105,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":60,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":30,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":0,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"37","active-flows":1,"packets-matched":"28"},"flow":[{"id":"#UF$TABLE*0-1","table_id":0,"priority":0,"cookie_mask":"0","idle-timeout":0,"cookie":"10","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"output-action":{"max-length":65535,"output-node-connector":"CONTROLLER"}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"16","byte-count":"1225","duration":{"second":33,"nanosecond":436000000}},"flags":"SEND_FLOW_REM"}]},{"id":226,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":179,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":149,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":104,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":59,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":29,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":225,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":180,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":150,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":103,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":66,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":32,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":220,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":185,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":151,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":102,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":65,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":31,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":253,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":219,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":186,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":152,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":101,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":64,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":34,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":252,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":222,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":183,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":153,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":100,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":63,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":33,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":251,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":221,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":184,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":154,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":99,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":54,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":20,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":250,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":216,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":189,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":155,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":129,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":114,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":53,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":19,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":249,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":215,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":190,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":156,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":130,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":113,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":52,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":22,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":248,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":218,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":187,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":157,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":112,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":51,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":21,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":247,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":217,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":188,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":158,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":128,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":111,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":58,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":24,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":246,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":212,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":193,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":159,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":110,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":57,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":23,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":245,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":211,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":194,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":160,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":109,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":56,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":26,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":244,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":214,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":191,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":161,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":108,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":55,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":25,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":243,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":213,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":192,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":162,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":107,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":77,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":43,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":17,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":239,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":198,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":164,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":138,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":119,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":89,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":78,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":44,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":18,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":240,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":197,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":163,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":137,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":120,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":90,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":75,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":45,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":15,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":241,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":196,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":166,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":136,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":121,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":87,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":76,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":46,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":16,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":242,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":195,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":165,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":135,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":122,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":88,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":81,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":47,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":13,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":235,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":202,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":168,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":134,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":115,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":85,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":82,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":48,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":14,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":236,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":201,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":167,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":133,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":116,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":86,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":79,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":49,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":11,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":237,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":200,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":170,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":132,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":117,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":83,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":80,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":50,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":12,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":238,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":199,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":169,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":131,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":118,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":84,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":69,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":35,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":9,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":231,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":206,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":172,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":146,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":127,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":97,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":70,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":36,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":10,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":232,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":205,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":171,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":145,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":98,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":67,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":37,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":7,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":233,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":204,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":174,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":144,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":95,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":68,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":38,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":8,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":234,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":203,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":173,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":143,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":96,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":73,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":39,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":5,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":227,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":210,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":176,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":142,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":123,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":93,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":74,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":40,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":6,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":228,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":209,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":175,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":141,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":124,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":94,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":71,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":41,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":3,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":229,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":208,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":178,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":140,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":125,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":91,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":72,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":42,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":4,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":230,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":207,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":177,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":139,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":126,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":92,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}}],"opendaylight-group-statistics:group-features":{"max-groups":[4294967040],"group-types-supported":["opendaylight-group-types:group-all","opendaylight-group-types:group-ff","opendaylight-group-types:group-select","opendaylight-group-types:group-indirect"],"group-capabilities-supported":["opendaylight-group-types:chaining","opendaylight-group-types:select-weight","opendaylight-group-types:select-liveness"],"actions":[67076097]},"flow-node-inventory:switch-features":{"max_tables":254,"capabilities":["flow-node-inventory:flow-feature-capability-table-stats","flow-node-inventory:flow-feature-capability-group-stats","flow-node-inventory:flow-feature-capability-queue-stats","flow-node-inventory:flow-feature-capability-flow-stats","flow-node-inventory:flow-feature-capability-port-stats"],"max_buffers":0},"flow-node-inventory:snapshot-gathering-status-start":{"begin":"2026-04-08T00:50:24.978Z"},"node-connector":[{"id":"openflow:3:3","flow-node-inventory:port-number":3,"flow-node-inventory:hardware-address":"d6:85:2c:89:fa:1b","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s3-eth3","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"20","received":"22"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":35,"nanosecond":105000000},"bytes":{"transmitted":"1673","received":"1849"},"receive-crc-error":"0"}},{"id":"openflow:3:2","flow-node-inventory:port-number":2,"flow-node-inventory:hardware-address":"0e:09:5c:6f:b8:35","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s3-eth2","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"26","received":"9"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":35,"nanosecond":105000000},"bytes":{"transmitted":"2201","received":"726"},"receive-crc-error":"0"}},{"id":"openflow:3:1","flow-node-inventory:port-number":1,"flow-node-inventory:hardware-address":"ea:2e:b0:52:05:a4","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s3-eth1","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"26","received":"9"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":35,"nanosecond":105000000},"bytes":{"transmitted":"2201","received":"726"},"receive-crc-error":"0"}},{"id":"openflow:3:LOCAL","flow-node-inventory:port-number":4294967294,"flow-node-inventory:hardware-address":"46:1b:44:af:67:4b","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s3","flow-node-inventory:current-feature":"","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":0,"flow-node-inventory:state":{"live":false,"blocked":false,"link-down":true},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"PORT-DOWN","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"0","received":"0"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":35,"nanosecond":100000000},"bytes":{"transmitted":"0","received":"0"},"receive-crc-error":"0"}}],"flow-node-inventory:snapshot-gathering-status-end":{"succeeded":true,"end":"2026-04-08T00:50:25.043Z"}},{"id":"openflow:1","flow-node-inventory:manufacturer":"Nicira, Inc.","flow-node-inventory:description":"s1","flow-node-inventory:hardware":"Open vSwitch","flow-node-inventory:software":"2.17.11","flow-node-inventory:ip-address":"10.30.170.192","flow-node-inventory:serial-number":"None","flow-node-inventory:port-number":55166,"flow-node-inventory:table":[{"id":62,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":28,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":2,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":224,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":181,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":147,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":106,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":61,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":27,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":1,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":223,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":182,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":148,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":105,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":60,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":30,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":0,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"38","active-flows":1,"packets-matched":"31"},"flow":[{"id":"#UF$TABLE*0-2","table_id":0,"priority":0,"cookie_mask":"0","idle-timeout":0,"cookie":"10","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"output-action":{"max-length":65535,"output-node-connector":"CONTROLLER"}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"19","byte-count":"1530","duration":{"second":33,"nanosecond":439000000}},"flags":"SEND_FLOW_REM"}]},{"id":226,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":179,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":149,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":104,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":59,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":29,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":225,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":180,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":150,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":103,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":66,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":32,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":220,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":185,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":151,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":102,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":65,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":31,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":253,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":219,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":186,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":152,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":101,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":64,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":34,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":252,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":222,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":183,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":153,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":100,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":63,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":33,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":251,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":221,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":184,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":154,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":99,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":54,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":20,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":250,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":216,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":189,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":155,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":129,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":114,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":53,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":19,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":249,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":215,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":190,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":156,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":130,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":113,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":52,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":22,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":248,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":218,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":187,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":157,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":112,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":51,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":21,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":247,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":217,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":188,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":158,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":128,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":111,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":58,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":24,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":246,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":212,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":193,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":159,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":110,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":57,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":23,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":245,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":211,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":194,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":160,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":109,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":56,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":26,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":244,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":214,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":191,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":161,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":108,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":55,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":25,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":243,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":213,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":192,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":162,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":107,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":77,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":43,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":17,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":239,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":198,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":164,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":138,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":119,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":89,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":78,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":44,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":18,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":240,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":197,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":163,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":137,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":120,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":90,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":75,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":45,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":15,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":241,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":196,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":166,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":136,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":121,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":87,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":76,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":46,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":16,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":242,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":195,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":165,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":135,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":122,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":88,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":81,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":47,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":13,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":235,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":202,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":168,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":134,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":115,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":85,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":82,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":48,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":14,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":236,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":201,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":167,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":133,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":116,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":86,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":79,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":49,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":11,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":237,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":200,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":170,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":132,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":117,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":83,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":80,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":50,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":12,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":238,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":199,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":169,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":131,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":118,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":84,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":69,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":35,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":9,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":231,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":206,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":172,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":146,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":127,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":97,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":70,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":36,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":10,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":232,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":205,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":171,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":145,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":98,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":67,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":37,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":7,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":233,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":204,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":174,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":144,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":95,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":68,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":38,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":8,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":234,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":203,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":173,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":143,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":96,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":73,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":39,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":5,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":227,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":210,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":176,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":142,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":123,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":93,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":74,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":40,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":6,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":228,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":209,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":175,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":141,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":124,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":94,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":71,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":41,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":3,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":229,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":208,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":178,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":140,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":125,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":91,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":72,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":42,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":4,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":230,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":207,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":177,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":139,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":126,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":92,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}}],"opendaylight-group-statistics:group-features":{"max-groups":[4294967040],"group-types-supported":["opendaylight-group-types:group-all","opendaylight-group-types:group-ff","opendaylight-group-types:group-select","opendaylight-group-types:group-indirect"],"group-capabilities-supported":["opendaylight-group-types:chaining","opendaylight-group-types:select-weight","opendaylight-group-types:select-liveness"],"actions":[67076097]},"flow-node-inventory:switch-features":{"max_tables":254,"capabilities":["flow-node-inventory:flow-feature-capability-table-stats","flow-node-inventory:flow-feature-capability-group-stats","flow-node-inventory:flow-feature-capability-queue-stats","flow-node-inventory:flow-feature-capability-flow-stats","flow-node-inventory:flow-feature-capability-port-stats"],"max_buffers":0},"flow-node-inventory:snapshot-gathering-status-start":{"begin":"2026-04-08T00:50:24.988Z"},"node-connector":[{"id":"openflow:1:1","flow-node-inventory:port-number":1,"flow-node-inventory:hardware-address":"c6:0c:45:fe:a3:df","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s1-eth1","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"22","received":"20"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":35,"nanosecond":165000000},"bytes":{"transmitted":"1849","received":"1673"},"receive-crc-error":"0"}},{"id":"openflow:1:LOCAL","flow-node-inventory:port-number":4294967294,"flow-node-inventory:hardware-address":"92:dc:44:02:39:46","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s1","flow-node-inventory:current-feature":"","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":0,"flow-node-inventory:state":{"live":false,"blocked":false,"link-down":true},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"PORT-DOWN","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"0","received":"0"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":35,"nanosecond":153000000},"bytes":{"transmitted":"0","received":"0"},"receive-crc-error":"0"}},{"id":"openflow:1:2","flow-node-inventory:port-number":2,"flow-node-inventory:hardware-address":"c2:e9:b7:e4:fd:76","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s1-eth2","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"22","received":"20"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":35,"nanosecond":165000000},"bytes":{"transmitted":"1849","received":"1673"},"receive-crc-error":"0"}}],"flow-node-inventory:snapshot-gathering-status-end":{"succeeded":true,"end":"2026-04-08T00:50:25.049Z"}},{"id":"openflow:2","flow-node-inventory:manufacturer":"Nicira, Inc.","flow-node-inventory:description":"s2","flow-node-inventory:hardware":"Open vSwitch","flow-node-inventory:software":"2.17.11","flow-node-inventory:ip-address":"10.30.170.192","flow-node-inventory:serial-number":"None","flow-node-inventory:port-number":55170,"flow-node-inventory:table":[{"id":62,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":28,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":2,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":224,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":181,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":147,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":106,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":61,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":27,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":1,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":223,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":182,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":148,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":105,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":60,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":30,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":0,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"37","active-flows":1,"packets-matched":"32"},"flow":[{"id":"#UF$TABLE*0-3","table_id":0,"priority":0,"cookie_mask":"0","idle-timeout":0,"cookie":"10","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"output-action":{"max-length":65535,"output-node-connector":"CONTROLLER"}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"20","byte-count":"1565","duration":{"second":33,"nanosecond":431000000}},"flags":"SEND_FLOW_REM"}]},{"id":226,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":179,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":149,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":104,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":59,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":29,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":225,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":180,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":150,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":103,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":66,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":32,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":220,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":185,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":151,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":102,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":65,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":31,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":253,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":219,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":186,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":152,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":101,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":64,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":34,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":252,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":222,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":183,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":153,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":100,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":63,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":33,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":251,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":221,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":184,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":154,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":99,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":54,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":20,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":250,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":216,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":189,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":155,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":129,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":114,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":53,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":19,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":249,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":215,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":190,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":156,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":130,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":113,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":52,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":22,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":248,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":218,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":187,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":157,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":112,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":51,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":21,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":247,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":217,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":188,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":158,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":128,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":111,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":58,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":24,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":246,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":212,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":193,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":159,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":110,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":57,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":23,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":245,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":211,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":194,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":160,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":109,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":56,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":26,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":244,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":214,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":191,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":161,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":108,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":55,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":25,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":243,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":213,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":192,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":162,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":107,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":77,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":43,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":17,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":239,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":198,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":164,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":138,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":119,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":89,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":78,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":44,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":18,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":240,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":197,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":163,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":137,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":120,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":90,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":75,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":45,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":15,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":241,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":196,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":166,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":136,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":121,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":87,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":76,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":46,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":16,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":242,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":195,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":165,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":135,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":122,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":88,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":81,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":47,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":13,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":235,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":202,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":168,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":134,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":115,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":85,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":82,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":48,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":14,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":236,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":201,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":167,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":133,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":116,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":86,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":79,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":49,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":11,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":237,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":200,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":170,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":132,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":117,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":83,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":80,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":50,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":12,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":238,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":199,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":169,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":131,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":118,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":84,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":69,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":35,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":9,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":231,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":206,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":172,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":146,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":127,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":97,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":70,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":36,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":10,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":232,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":205,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":171,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":145,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":98,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":67,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":37,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":7,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":233,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":204,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":174,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":144,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":95,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":68,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":38,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":8,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":234,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":203,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":173,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":143,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":96,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":73,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":39,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":5,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":227,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":210,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":176,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":142,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":123,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":93,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":74,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":40,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":6,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":228,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":209,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":175,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":141,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":124,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":94,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":71,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":41,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":3,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":229,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":208,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":178,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":140,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":125,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":91,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":72,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":42,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":4,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":230,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":207,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":177,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":139,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":126,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":92,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}}],"opendaylight-group-statistics:group-features":{"max-groups":[4294967040],"group-types-supported":["opendaylight-group-types:group-all","opendaylight-group-types:group-ff","opendaylight-group-types:group-select","opendaylight-group-types:group-indirect"],"group-capabilities-supported":["opendaylight-group-types:chaining","opendaylight-group-types:select-weight","opendaylight-group-types:select-liveness"],"actions":[67076097]},"flow-node-inventory:switch-features":{"max_tables":254,"capabilities":["flow-node-inventory:flow-feature-capability-table-stats","flow-node-inventory:flow-feature-capability-group-stats","flow-node-inventory:flow-feature-capability-queue-stats","flow-node-inventory:flow-feature-capability-flow-stats","flow-node-inventory:flow-feature-capability-port-stats"],"max_buffers":0},"flow-node-inventory:snapshot-gathering-status-start":{"begin":"2026-04-08T00:50:24.974Z"},"node-connector":[{"id":"openflow:2:3","flow-node-inventory:port-number":3,"flow-node-inventory:hardware-address":"e6:ba:34:39:b4:59","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s2-eth3","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"20","received":"22"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":35,"nanosecond":145000000},"bytes":{"transmitted":"1673","received":"1849"},"receive-crc-error":"0"}},{"id":"openflow:2:LOCAL","flow-node-inventory:port-number":4294967294,"flow-node-inventory:hardware-address":"a6:b5:a2:39:96:47","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s2","flow-node-inventory:current-feature":"","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":0,"flow-node-inventory:state":{"live":false,"blocked":false,"link-down":true},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"PORT-DOWN","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"0","received":"0"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":35,"nanosecond":143000000},"bytes":{"transmitted":"0","received":"0"},"receive-crc-error":"0"}},{"id":"openflow:2:2","flow-node-inventory:port-number":2,"flow-node-inventory:hardware-address":"8e:25:49:71:1c:58","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s2-eth2","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"26","received":"9"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":35,"nanosecond":145000000},"bytes":{"transmitted":"2201","received":"726"},"receive-crc-error":"0"}},{"id":"openflow:2:1","flow-node-inventory:port-number":1,"flow-node-inventory:hardware-address":"66:b8:61:ef:20:c7","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s2-eth1","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"26","received":"10"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":35,"nanosecond":145000000},"bytes":{"transmitted":"2201","received":"816"},"receive-crc-error":"0"}}],"flow-node-inventory:snapshot-gathering-status-end":{"succeeded":true,"end":"2026-04-08T00:50:25.047Z"}}]}}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:26.342472" elapsed="0.004096"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:26.342229" elapsed="0.004376"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:26.342204" elapsed="0.004427"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:26.349091" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:26.346917" elapsed="0.002220"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:26.346687" elapsed="0.002500"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:26.346670" elapsed="0.002542"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:50:26.349797" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:50:26.349394" elapsed="0.000463"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:26.350186" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:26.349930" elapsed="0.000314"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:26.350734" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:26.350429" elapsed="0.000331"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:26.350268" elapsed="0.000528"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:26.349911" elapsed="0.000906"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:50:26.351381" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:50:26.350976" elapsed="0.000432"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:26.351711" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:26.351478" elapsed="0.000290"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:26.352259" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:26.351949" elapsed="0.000335"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:26.351791" elapsed="0.000529"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:26.351460" elapsed="0.000881"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:50:26.352494" elapsed="0.000349"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:50:26.353311" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:50:26.353005" elapsed="0.000332"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:50:26.353489" elapsed="0.002274"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:50:26.341741" elapsed="0.014092"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-08T00:50:26.356010" elapsed="0.000033"/>
</return>
<status status="PASS" start="2026-04-08T00:50:26.355902" elapsed="0.000176"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:26.355884" 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-04-08T00:50:26.356265" elapsed="0.000022"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-08T00:50:26.356335" elapsed="0.000015"/>
</return>
<msg time="2026-04-08T00:50:26.358812" level="INFO">${response_text} = {"opendaylight-inventory:nodes":{"node":[{"id":"openflow:3","flow-node-inventory:manufacturer":"Nicira, Inc.","flow-node-inventory:description":"s3","flow-node-inventory:hardware":"Open vSwitch","flow...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${access}</arg>
<arg>session=${session}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:50:26.271399" elapsed="0.087442"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:50:26.358892" elapsed="0.000027"/>
</return>
<msg time="2026-04-08T00:50:26.359043" level="INFO">${data} = {"opendaylight-inventory:nodes":{"node":[{"id":"openflow:3","flow-node-inventory:manufacturer":"Nicira, Inc.","flow-node-inventory:description":"s3","flow-node-inventory:hardware":"Open vSwitch","flow...</msg>
<var>${data}</var>
<arg>uri=${uri}</arg>
<arg>member_index=${index}</arg>
<doc>Send a GET with the supplied uri to member ${member_index}.</doc>
<status status="PASS" start="2026-04-08T00:50:26.269645" elapsed="0.089425"/>
</kw>
<kw name="Check Item Occurrence" owner="Utils">
<for flavor="IN">
<iter>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T00:50:26.360341" level="INFO">Item found from container 4 times.</msg>
<arg>${string}</arg>
<arg>${item}</arg>
<arg>${dictionary_item_occurrence}[${item}]</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="PASS" start="2026-04-08T00:50:26.359898" elapsed="0.000890"/>
</kw>
<var name="${item}">openflow:1</var>
<status status="PASS" start="2026-04-08T00:50:26.359737" elapsed="0.001092"/>
</iter>
<iter>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T00:50:26.361489" level="INFO">Item found from container 5 times.</msg>
<arg>${string}</arg>
<arg>${item}</arg>
<arg>${dictionary_item_occurrence}[${item}]</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="PASS" start="2026-04-08T00:50:26.361065" elapsed="0.000730"/>
</kw>
<var name="${item}">openflow:2</var>
<status status="PASS" start="2026-04-08T00:50:26.360912" elapsed="0.000959"/>
</iter>
<iter>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T00:50:26.362532" level="INFO">Item found from container 5 times.</msg>
<arg>${string}</arg>
<arg>${item}</arg>
<arg>${dictionary_item_occurrence}[${item}]</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="PASS" start="2026-04-08T00:50:26.362110" elapsed="0.000734"/>
</kw>
<var name="${item}">openflow:3</var>
<status status="PASS" start="2026-04-08T00:50:26.361956" elapsed="0.000928"/>
</iter>
<var>${item}</var>
<value>@{dictionary_item_occurrence}</value>
<status status="PASS" start="2026-04-08T00:50:26.359600" elapsed="0.003313"/>
</for>
<arg>${data}</arg>
<arg>${dictionary}</arg>
<doc>Check string for occurrences of items expressed in a list of dictionaries {item=occurrences}. 0 occurences means item is not present.</doc>
<status status="PASS" start="2026-04-08T00:50:26.359332" elapsed="0.003636"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T00:50:26.265469" elapsed="0.097535"/>
</iter>
<iter>
<kw name="Get_From_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:26.368300" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:26.367986" elapsed="0.000341"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:50:26.368373" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:50:26.368521" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:50:26.367644" elapsed="0.000902"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:26.375077" level="INFO">/rests/data/opendaylight-inventory:nodes?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:26.374814" elapsed="0.000310"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:26.375549" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:26.375305" elapsed="0.000288"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:50:26.432468" level="INFO">GET Request : url=http://10.30.171.110:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node09orwbuy1e81xg3wze7ww55ua0.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:50:26.432950" level="INFO">GET Response : url=http://10.30.171.110:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Transfer-Encoding': 'chunked'} 
 body={"opendaylight-inventory:nodes":{"node":[{"id":"openflow:3","flow-node-inventory:manufacturer":"Nicira, Inc.","flow-node-inventory:description":"s3","flow-node-inventory:hardware":"Open vSwitch","flow-node-inventory:software":"2.17.11","flow-node-inventory:ip-address":"10.30.170.192","flow-node-inventory:serial-number":"None","flow-node-inventory:port-number":55176,"flow-node-inventory:table":[{"id":62,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":28,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":2,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":224,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":181,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":147,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":106,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":61,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":27,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":1,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":223,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":182,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":148,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":105,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":60,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":30,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":0,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"37","active-flows":1,"packets-matched":"28"},"flow":[{"id":"#UF$TABLE*0-1","table_id":0,"priority":0,"cookie_mask":"0","idle-timeout":0,"cookie":"10","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"output-action":{"max-length":65535,"output-node-connector":"CONTROLLER"}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"16","byte-count":"1225","duration":{"second":33,"nanosecond":436000000}},"flags":"SEND_FLOW_REM"}]},{"id":226,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":179,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":149,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":104,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":59,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":29,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":225,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":180,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":150,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":103,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":66,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":32,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":220,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":185,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":151,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":102,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":65,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":31,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":253,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":219,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":186,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":152,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":101,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":64,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":34,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":252,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":222,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":183,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":153,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":100,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":63,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":33,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":251,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":221,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":184,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":154,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":99,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":54,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":20,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":250,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":216,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":189,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":155,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":129,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":114,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":53,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":19,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":249,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":215,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":190,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":156,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"i... (set the log level to DEBUG or TRACE to see the full content) 
 </msg>
<msg time="2026-04-08T00:50:26.433234" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:50:26.377596" elapsed="0.055668"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:26.375662" elapsed="0.057655"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:26.433543" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:26.433351" elapsed="0.000259"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:26.375643" elapsed="0.057989"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:26.437434" level="INFO">{"opendaylight-inventory:nodes":{"node":[{"id":"openflow:3","flow-node-inventory:manufacturer":"Nicira, Inc.","flow-node-inventory:description":"s3","flow-node-inventory:hardware":"Open vSwitch","flow-node-inventory:software":"2.17.11","flow-node-inventory:ip-address":"10.30.170.192","flow-node-inventory:serial-number":"None","flow-node-inventory:port-number":55176,"flow-node-inventory:table":[{"id":62,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":28,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":2,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":224,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":181,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":147,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":106,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":61,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":27,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":1,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":223,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":182,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":148,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":105,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":60,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":30,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":0,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"37","active-flows":1,"packets-matched":"28"},"flow":[{"id":"#UF$TABLE*0-1","table_id":0,"priority":0,"cookie_mask":"0","idle-timeout":0,"cookie":"10","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"output-action":{"max-length":65535,"output-node-connector":"CONTROLLER"}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"16","byte-count":"1225","duration":{"second":33,"nanosecond":436000000}},"flags":"SEND_FLOW_REM"}]},{"id":226,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":179,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":149,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":104,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":59,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":29,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":225,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":180,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":150,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":103,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":66,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":32,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":220,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":185,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":151,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":102,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":65,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":31,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":253,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":219,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":186,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":152,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":101,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":64,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":34,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":252,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":222,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":183,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":153,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":100,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":63,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":33,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":251,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":221,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":184,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":154,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":99,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":54,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":20,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":250,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":216,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":189,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":155,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":129,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":114,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":53,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":19,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":249,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":215,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":190,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":156,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":130,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":113,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":52,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":22,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":248,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":218,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":187,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":157,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":112,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":51,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":21,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":247,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":217,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":188,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":158,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":128,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":111,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":58,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":24,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":246,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":212,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":193,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":159,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":110,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":57,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":23,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":245,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":211,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":194,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":160,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":109,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":56,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":26,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":244,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":214,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":191,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":161,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":108,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":55,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":25,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":243,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":213,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":192,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":162,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":107,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":77,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":43,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":17,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":239,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":198,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":164,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":138,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":119,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":89,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":78,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":44,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":18,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":240,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":197,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":163,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":137,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":120,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":90,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":75,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":45,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":15,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":241,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":196,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":166,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":136,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":121,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":87,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":76,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":46,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":16,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":242,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":195,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":165,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":135,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":122,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":88,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":81,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":47,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":13,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":235,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":202,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":168,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":134,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":115,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":85,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":82,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":48,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":14,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":236,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":201,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":167,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":133,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":116,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":86,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":79,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":49,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":11,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":237,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":200,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":170,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":132,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":117,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":83,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":80,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":50,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":12,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":238,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":199,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":169,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":131,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":118,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":84,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":69,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":35,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":9,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":231,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":206,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":172,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":146,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":127,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":97,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":70,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":36,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":10,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":232,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":205,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":171,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":145,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":98,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":67,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":37,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":7,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":233,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":204,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":174,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":144,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":95,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":68,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":38,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":8,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":234,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":203,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":173,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":143,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":96,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":73,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":39,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":5,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":227,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":210,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":176,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":142,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":123,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":93,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":74,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":40,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":6,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":228,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":209,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":175,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":141,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":124,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":94,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":71,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":41,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":3,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":229,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":208,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":178,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":140,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":125,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":91,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":72,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":42,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":4,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":230,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":207,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":177,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":139,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":126,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":92,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}}],"opendaylight-group-statistics:group-features":{"max-groups":[4294967040],"group-types-supported":["opendaylight-group-types:group-all","opendaylight-group-types:group-ff","opendaylight-group-types:group-select","opendaylight-group-types:group-indirect"],"group-capabilities-supported":["opendaylight-group-types:chaining","opendaylight-group-types:select-weight","opendaylight-group-types:select-liveness"],"actions":[67076097]},"flow-node-inventory:switch-features":{"max_tables":254,"capabilities":["flow-node-inventory:flow-feature-capability-table-stats","flow-node-inventory:flow-feature-capability-group-stats","flow-node-inventory:flow-feature-capability-queue-stats","flow-node-inventory:flow-feature-capability-flow-stats","flow-node-inventory:flow-feature-capability-port-stats"],"max_buffers":0},"flow-node-inventory:snapshot-gathering-status-start":{"begin":"2026-04-08T00:50:24.978Z"},"node-connector":[{"id":"openflow:3:3","flow-node-inventory:port-number":3,"flow-node-inventory:hardware-address":"d6:85:2c:89:fa:1b","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s3-eth3","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"20","received":"22"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":35,"nanosecond":105000000},"bytes":{"transmitted":"1673","received":"1849"},"receive-crc-error":"0"}},{"id":"openflow:3:2","flow-node-inventory:port-number":2,"flow-node-inventory:hardware-address":"0e:09:5c:6f:b8:35","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s3-eth2","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"26","received":"9"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":35,"nanosecond":105000000},"bytes":{"transmitted":"2201","received":"726"},"receive-crc-error":"0"}},{"id":"openflow:3:1","flow-node-inventory:port-number":1,"flow-node-inventory:hardware-address":"ea:2e:b0:52:05:a4","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s3-eth1","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"26","received":"9"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":35,"nanosecond":105000000},"bytes":{"transmitted":"2201","received":"726"},"receive-crc-error":"0"}},{"id":"openflow:3:LOCAL","flow-node-inventory:port-number":4294967294,"flow-node-inventory:hardware-address":"46:1b:44:af:67:4b","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s3","flow-node-inventory:current-feature":"","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":0,"flow-node-inventory:state":{"live":false,"blocked":false,"link-down":true},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"PORT-DOWN","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"0","received":"0"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":35,"nanosecond":100000000},"bytes":{"transmitted":"0","received":"0"},"receive-crc-error":"0"}}],"flow-node-inventory:snapshot-gathering-status-end":{"succeeded":true,"end":"2026-04-08T00:50:25.043Z"}},{"id":"openflow:1","flow-node-inventory:manufacturer":"Nicira, Inc.","flow-node-inventory:description":"s1","flow-node-inventory:hardware":"Open vSwitch","flow-node-inventory:software":"2.17.11","flow-node-inventory:ip-address":"10.30.170.192","flow-node-inventory:serial-number":"None","flow-node-inventory:port-number":55166,"flow-node-inventory:table":[{"id":62,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":28,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":2,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":224,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":181,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":147,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":106,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":61,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":27,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":1,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":223,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":182,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":148,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":105,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":60,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":30,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":0,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"38","active-flows":1,"packets-matched":"31"},"flow":[{"id":"#UF$TABLE*0-2","table_id":0,"priority":0,"cookie_mask":"0","idle-timeout":0,"cookie":"10","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"output-action":{"max-length":65535,"output-node-connector":"CONTROLLER"}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"19","byte-count":"1530","duration":{"second":33,"nanosecond":439000000}},"flags":"SEND_FLOW_REM"}]},{"id":226,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":179,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":149,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":104,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":59,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":29,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":225,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":180,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":150,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":103,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":66,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":32,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":220,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":185,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":151,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":102,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":65,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":31,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":253,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":219,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":186,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":152,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":101,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":64,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":34,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":252,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":222,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":183,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":153,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":100,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":63,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":33,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":251,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":221,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":184,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":154,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":99,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":54,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":20,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":250,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":216,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":189,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":155,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":129,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":114,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":53,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":19,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":249,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":215,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":190,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":156,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":130,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":113,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":52,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":22,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":248,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":218,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":187,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":157,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":112,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":51,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":21,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":247,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":217,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":188,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":158,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":128,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":111,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":58,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":24,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":246,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":212,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":193,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":159,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":110,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":57,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":23,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":245,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":211,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":194,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":160,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":109,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":56,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":26,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":244,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":214,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":191,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":161,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":108,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":55,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":25,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":243,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":213,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":192,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":162,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":107,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":77,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":43,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":17,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":239,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":198,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":164,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":138,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":119,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":89,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":78,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":44,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":18,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":240,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":197,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":163,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":137,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":120,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":90,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":75,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":45,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":15,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":241,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":196,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":166,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":136,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":121,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":87,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":76,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":46,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":16,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":242,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":195,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":165,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":135,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":122,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":88,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":81,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":47,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":13,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":235,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":202,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":168,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":134,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":115,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":85,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":82,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":48,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":14,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":236,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":201,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":167,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":133,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":116,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":86,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":79,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":49,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":11,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":237,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":200,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":170,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":132,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":117,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":83,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":80,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":50,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":12,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":238,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":199,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":169,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":131,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":118,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":84,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":69,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":35,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":9,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":231,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":206,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":172,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":146,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":127,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":97,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":70,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":36,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":10,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":232,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":205,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":171,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":145,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":98,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":67,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":37,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":7,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":233,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":204,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":174,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":144,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":95,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":68,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":38,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":8,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":234,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":203,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":173,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":143,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":96,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":73,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":39,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":5,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":227,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":210,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":176,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":142,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":123,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":93,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":74,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":40,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":6,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":228,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":209,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":175,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":141,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":124,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":94,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":71,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":41,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":3,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":229,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":208,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":178,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":140,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":125,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":91,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":72,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":42,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":4,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":230,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":207,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":177,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":139,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":126,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":92,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}}],"opendaylight-group-statistics:group-features":{"max-groups":[4294967040],"group-types-supported":["opendaylight-group-types:group-all","opendaylight-group-types:group-ff","opendaylight-group-types:group-select","opendaylight-group-types:group-indirect"],"group-capabilities-supported":["opendaylight-group-types:chaining","opendaylight-group-types:select-weight","opendaylight-group-types:select-liveness"],"actions":[67076097]},"flow-node-inventory:switch-features":{"max_tables":254,"capabilities":["flow-node-inventory:flow-feature-capability-table-stats","flow-node-inventory:flow-feature-capability-group-stats","flow-node-inventory:flow-feature-capability-queue-stats","flow-node-inventory:flow-feature-capability-flow-stats","flow-node-inventory:flow-feature-capability-port-stats"],"max_buffers":0},"flow-node-inventory:snapshot-gathering-status-start":{"begin":"2026-04-08T00:50:24.988Z"},"node-connector":[{"id":"openflow:1:1","flow-node-inventory:port-number":1,"flow-node-inventory:hardware-address":"c6:0c:45:fe:a3:df","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s1-eth1","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"22","received":"20"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":35,"nanosecond":165000000},"bytes":{"transmitted":"1849","received":"1673"},"receive-crc-error":"0"}},{"id":"openflow:1:LOCAL","flow-node-inventory:port-number":4294967294,"flow-node-inventory:hardware-address":"92:dc:44:02:39:46","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s1","flow-node-inventory:current-feature":"","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":0,"flow-node-inventory:state":{"live":false,"blocked":false,"link-down":true},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"PORT-DOWN","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"0","received":"0"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":35,"nanosecond":153000000},"bytes":{"transmitted":"0","received":"0"},"receive-crc-error":"0"}},{"id":"openflow:1:2","flow-node-inventory:port-number":2,"flow-node-inventory:hardware-address":"c2:e9:b7:e4:fd:76","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s1-eth2","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"22","received":"20"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":35,"nanosecond":165000000},"bytes":{"transmitted":"1849","received":"1673"},"receive-crc-error":"0"}}],"flow-node-inventory:snapshot-gathering-status-end":{"succeeded":true,"end":"2026-04-08T00:50:25.049Z"}},{"id":"openflow:2","flow-node-inventory:manufacturer":"Nicira, Inc.","flow-node-inventory:description":"s2","flow-node-inventory:hardware":"Open vSwitch","flow-node-inventory:software":"2.17.11","flow-node-inventory:ip-address":"10.30.170.192","flow-node-inventory:serial-number":"None","flow-node-inventory:port-number":55170,"flow-node-inventory:table":[{"id":62,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":28,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":2,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":224,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":181,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":147,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":106,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":61,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":27,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":1,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":223,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":182,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":148,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":105,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":60,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":30,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":0,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"37","active-flows":1,"packets-matched":"32"},"flow":[{"id":"#UF$TABLE*0-3","table_id":0,"priority":0,"cookie_mask":"0","idle-timeout":0,"cookie":"10","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"output-action":{"max-length":65535,"output-node-connector":"CONTROLLER"}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"20","byte-count":"1565","duration":{"second":33,"nanosecond":431000000}},"flags":"SEND_FLOW_REM"}]},{"id":226,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":179,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":149,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":104,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":59,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":29,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":225,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":180,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":150,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":103,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":66,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":32,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":220,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":185,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":151,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":102,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":65,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":31,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":253,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":219,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":186,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":152,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":101,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":64,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":34,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":252,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":222,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":183,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":153,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":100,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":63,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":33,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":251,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":221,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":184,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":154,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":99,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":54,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":20,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":250,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":216,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":189,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":155,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":129,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":114,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":53,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":19,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":249,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":215,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":190,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":156,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":130,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":113,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":52,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":22,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":248,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":218,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":187,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":157,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":112,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":51,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":21,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":247,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":217,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":188,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":158,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":128,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":111,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":58,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":24,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":246,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":212,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":193,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":159,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":110,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":57,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":23,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":245,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":211,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":194,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":160,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":109,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":56,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":26,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":244,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":214,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":191,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":161,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":108,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":55,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":25,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":243,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":213,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":192,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":162,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":107,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":77,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":43,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":17,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":239,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":198,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":164,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":138,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":119,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":89,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":78,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":44,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":18,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":240,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":197,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":163,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":137,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":120,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":90,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":75,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":45,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":15,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":241,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":196,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":166,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":136,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":121,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":87,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":76,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":46,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":16,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":242,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":195,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":165,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":135,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":122,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":88,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":81,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":47,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":13,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":235,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":202,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":168,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":134,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":115,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":85,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":82,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":48,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":14,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":236,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":201,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":167,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":133,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":116,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":86,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":79,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":49,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":11,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":237,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":200,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":170,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":132,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":117,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":83,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":80,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":50,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":12,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":238,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":199,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":169,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":131,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":118,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":84,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":69,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":35,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":9,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":231,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":206,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":172,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":146,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":127,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":97,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":70,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":36,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":10,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":232,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":205,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":171,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":145,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":98,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":67,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":37,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":7,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":233,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":204,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":174,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":144,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":95,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":68,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":38,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":8,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":234,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":203,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":173,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":143,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":96,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":73,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":39,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":5,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":227,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":210,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":176,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":142,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":123,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":93,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":74,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":40,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":6,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":228,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":209,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":175,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":141,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":124,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":94,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":71,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":41,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":3,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":229,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":208,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":178,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":140,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":125,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":91,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":72,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":42,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":4,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":230,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":207,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":177,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":139,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":126,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":92,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}}],"opendaylight-group-statistics:group-features":{"max-groups":[4294967040],"group-types-supported":["opendaylight-group-types:group-all","opendaylight-group-types:group-ff","opendaylight-group-types:group-select","opendaylight-group-types:group-indirect"],"group-capabilities-supported":["opendaylight-group-types:chaining","opendaylight-group-types:select-weight","opendaylight-group-types:select-liveness"],"actions":[67076097]},"flow-node-inventory:switch-features":{"max_tables":254,"capabilities":["flow-node-inventory:flow-feature-capability-table-stats","flow-node-inventory:flow-feature-capability-group-stats","flow-node-inventory:flow-feature-capability-queue-stats","flow-node-inventory:flow-feature-capability-flow-stats","flow-node-inventory:flow-feature-capability-port-stats"],"max_buffers":0},"flow-node-inventory:snapshot-gathering-status-start":{"begin":"2026-04-08T00:50:24.974Z"},"node-connector":[{"id":"openflow:2:3","flow-node-inventory:port-number":3,"flow-node-inventory:hardware-address":"e6:ba:34:39:b4:59","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s2-eth3","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"20","received":"22"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":35,"nanosecond":145000000},"bytes":{"transmitted":"1673","received":"1849"},"receive-crc-error":"0"}},{"id":"openflow:2:LOCAL","flow-node-inventory:port-number":4294967294,"flow-node-inventory:hardware-address":"a6:b5:a2:39:96:47","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s2","flow-node-inventory:current-feature":"","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":0,"flow-node-inventory:state":{"live":false,"blocked":false,"link-down":true},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"PORT-DOWN","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"0","received":"0"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":35,"nanosecond":143000000},"bytes":{"transmitted":"0","received":"0"},"receive-crc-error":"0"}},{"id":"openflow:2:2","flow-node-inventory:port-number":2,"flow-node-inventory:hardware-address":"8e:25:49:71:1c:58","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s2-eth2","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"26","received":"9"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":35,"nanosecond":145000000},"bytes":{"transmitted":"2201","received":"726"},"receive-crc-error":"0"}},{"id":"openflow:2:1","flow-node-inventory:port-number":1,"flow-node-inventory:hardware-address":"66:b8:61:ef:20:c7","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s2-eth1","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"26","received":"10"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":35,"nanosecond":145000000},"bytes":{"transmitted":"2201","received":"816"},"receive-crc-error":"0"}}],"flow-node-inventory:snapshot-gathering-status-end":{"succeeded":true,"end":"2026-04-08T00:50:25.047Z"}}]}}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:26.434728" elapsed="0.003778"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:26.434494" elapsed="0.004048"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:26.434473" elapsed="0.004094"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:26.441024" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:26.438847" elapsed="0.002223"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:26.438623" elapsed="0.002481"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:26.438607" elapsed="0.002520"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:50:26.441715" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:50:26.441317" elapsed="0.000424"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:26.442048" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:26.441811" elapsed="0.000295"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:26.442607" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:26.442306" elapsed="0.000326"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:26.442129" elapsed="0.000539"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:26.441793" elapsed="0.000896"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:50:26.443259" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:50:26.442852" elapsed="0.000433"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:26.443586" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:26.443355" elapsed="0.000287"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:26.444115" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:26.443823" elapsed="0.000318"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:26.443665" elapsed="0.000527"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:26.443337" elapsed="0.000877"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:50:26.444367" elapsed="0.000348"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:50:26.445179" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:50:26.444879" elapsed="0.000327"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:50:26.445361" elapsed="0.002206"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:50:26.434021" elapsed="0.013611"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-08T00:50:26.447811" elapsed="0.000033"/>
</return>
<status status="PASS" start="2026-04-08T00:50:26.447703" elapsed="0.000176"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:26.447684" elapsed="0.000219"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:26.448051" elapsed="0.000021"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-08T00:50:26.448120" elapsed="0.000015"/>
</return>
<msg time="2026-04-08T00:50:26.450624" level="INFO">${response_text} = {"opendaylight-inventory:nodes":{"node":[{"id":"openflow:3","flow-node-inventory:manufacturer":"Nicira, Inc.","flow-node-inventory:description":"s3","flow-node-inventory:hardware":"Open vSwitch","flow...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${access}</arg>
<arg>session=${session}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:50:26.368882" elapsed="0.081771"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:50:26.450706" elapsed="0.000027"/>
</return>
<msg time="2026-04-08T00:50:26.450862" level="INFO">${data} = {"opendaylight-inventory:nodes":{"node":[{"id":"openflow:3","flow-node-inventory:manufacturer":"Nicira, Inc.","flow-node-inventory:description":"s3","flow-node-inventory:hardware":"Open vSwitch","flow...</msg>
<var>${data}</var>
<arg>uri=${uri}</arg>
<arg>member_index=${index}</arg>
<doc>Send a GET with the supplied uri to member ${member_index}.</doc>
<status status="PASS" start="2026-04-08T00:50:26.367123" elapsed="0.083766"/>
</kw>
<kw name="Check Item Occurrence" owner="Utils">
<for flavor="IN">
<iter>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T00:50:26.452145" level="INFO">Item found from container 4 times.</msg>
<arg>${string}</arg>
<arg>${item}</arg>
<arg>${dictionary_item_occurrence}[${item}]</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="PASS" start="2026-04-08T00:50:26.451726" elapsed="0.000882"/>
</kw>
<var name="${item}">openflow:1</var>
<status status="PASS" start="2026-04-08T00:50:26.451571" elapsed="0.001078"/>
</iter>
<iter>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T00:50:26.453303" level="INFO">Item found from container 5 times.</msg>
<arg>${string}</arg>
<arg>${item}</arg>
<arg>${dictionary_item_occurrence}[${item}]</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="PASS" start="2026-04-08T00:50:26.452884" elapsed="0.000725"/>
</kw>
<var name="${item}">openflow:2</var>
<status status="PASS" start="2026-04-08T00:50:26.452732" elapsed="0.000951"/>
</iter>
<iter>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T00:50:26.454338" level="INFO">Item found from container 5 times.</msg>
<arg>${string}</arg>
<arg>${item}</arg>
<arg>${dictionary_item_occurrence}[${item}]</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="PASS" start="2026-04-08T00:50:26.453919" elapsed="0.000724"/>
</kw>
<var name="${item}">openflow:3</var>
<status status="PASS" start="2026-04-08T00:50:26.453767" elapsed="0.000916"/>
</iter>
<var>${item}</var>
<value>@{dictionary_item_occurrence}</value>
<status status="PASS" start="2026-04-08T00:50:26.451434" elapsed="0.003278"/>
</for>
<arg>${data}</arg>
<arg>${dictionary}</arg>
<doc>Check string for occurrences of items expressed in a list of dictionaries {item=occurrences}. 0 occurences means item is not present.</doc>
<status status="PASS" start="2026-04-08T00:50:26.451137" elapsed="0.003628"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T00:50:26.363092" elapsed="0.091709"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-08T00:50:26.195999" elapsed="0.258834"/>
</for>
<arg>uri=${RFC8040_OPERATIONAL_NODES_API}</arg>
<arg>dictionary=${dictionary}</arg>
<arg>member_index_list=${controller_index_list}</arg>
<doc>Send a GET with the supplied uri to all or some members defined in ${member_index_list}.
Then check received for occurrences of items expressed in a dictionary {'openflow:1': '4', 'openflow:2': '5', 'openflow:3': '5'}.</doc>
<status status="PASS" start="2026-04-08T00:50:26.193807" elapsed="0.261076"/>
</kw>
<arg>5s</arg>
<arg>1s</arg>
<arg>ClusterManagement.Check_Item_Occurrence_Member_List_Or_All</arg>
<arg>uri=${RFC8040_OPERATIONAL_NODES_API}</arg>
<arg>dictionary=${dictionary}</arg>
<arg>member_index_list=${controller_index_list}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-08T00:50:26.189364" elapsed="0.265574"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-08T00:50:26.455526" level="INFO">${dictionary} = {'openflow:1': '21', 'openflow:2': '19', 'openflow:3': '19'}</msg>
<var>${dictionary}</var>
<arg>openflow:1=21</arg>
<arg>openflow:2=19</arg>
<arg>openflow:3=19</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-08T00:50:26.455184" elapsed="0.000369"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Check_Item_Occurrence_Member_List_Or_All" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:50:26.461830" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:50:26.461449" elapsed="0.000408"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:50:26.462333" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:50:26.462016" elapsed="0.000343"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:50:26.462403" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:50:26.462557" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:50:26.461059" elapsed="0.001522"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_From_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:26.467943" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:26.467645" elapsed="0.000325"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:50:26.468015" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:50:26.468176" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:50:26.467302" elapsed="0.000901"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:26.474412" level="INFO">/rests/data/network-topology:network-topology?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:26.474147" elapsed="0.000310"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:26.474847" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:26.474608" elapsed="0.000282"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:50:26.489367" level="INFO">GET Request : url=http://10.30.170.48:8181/rests/data/network-topology:network-topology?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01nfu2ssrokr1es5zgka78rw970.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:50:26.491040" level="INFO">GET Response : url=http://10.30.170.48:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '3149'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"},{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:3']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:1:1","dest-node":"openflow:1"}},{"link-id":"openflow:3:3","source":{"source-node":"openflow:3","source-tp":"openflow:3:3"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:1:1","source":{"source-node":"openflow:1","source-tp":"openflow:1:1"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:3:3","dest-node":"openflow:3"}}]}]}} 
 </msg>
<msg time="2026-04-08T00:50:26.491229" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:50:26.476892" elapsed="0.014364"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:26.474958" elapsed="0.016342"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:26.491480" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:26.491327" elapsed="0.000217"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:26.474940" elapsed="0.016625"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:26.495149" level="INFO">{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"},{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:3']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:1:1","dest-node":"openflow:1"}},{"link-id":"openflow:3:3","source":{"source-node":"openflow:3","source-tp":"openflow:3:3"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:1:1","source":{"source-node":"openflow:1","source-tp":"openflow:1:1"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:3:3","dest-node":"openflow:3"}}]}]}}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:26.492594" elapsed="0.002642"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:26.492372" elapsed="0.002900"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:26.492352" elapsed="0.002944"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:26.497730" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:26.495572" elapsed="0.002203"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:26.495352" elapsed="0.002459"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:26.495336" elapsed="0.002501"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:50:26.498407" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:50:26.498004" elapsed="0.000429"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:26.498740" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:26.498504" elapsed="0.000292"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:26.499325" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:26.499005" elapsed="0.000346"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:26.498820" elapsed="0.000567"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:26.498486" elapsed="0.000922"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:50:26.499927" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:50:26.499565" elapsed="0.000389"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:26.500271" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:26.500023" elapsed="0.000305"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:26.500804" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:26.500511" elapsed="0.000319"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:26.500351" elapsed="0.000514"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:26.500005" elapsed="0.000881"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:50:26.501036" elapsed="0.000360"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:50:26.501879" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:50:26.501593" elapsed="0.000312"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:50:26.502056" elapsed="0.002352"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:50:26.491928" elapsed="0.012544"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-08T00:50:26.504646" elapsed="0.000029"/>
</return>
<status status="PASS" start="2026-04-08T00:50:26.504541" elapsed="0.000168"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:26.504522" elapsed="0.000211"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:26.504882" elapsed="0.000021"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-08T00:50:26.504950" elapsed="0.000015"/>
</return>
<msg time="2026-04-08T00:50:26.507322" level="INFO">${response_text} = {"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='o...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${access}</arg>
<arg>session=${session}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:50:26.468535" elapsed="0.038816"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:50:26.507402" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:50:26.507552" level="INFO">${data} = {"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='o...</msg>
<var>${data}</var>
<arg>uri=${uri}</arg>
<arg>member_index=${index}</arg>
<doc>Send a GET with the supplied uri to member ${member_index}.</doc>
<status status="PASS" start="2026-04-08T00:50:26.466773" elapsed="0.040805"/>
</kw>
<kw name="Check Item Occurrence" owner="Utils">
<for flavor="IN">
<iter>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T00:50:26.508757" level="INFO">Item found from container 21 times.</msg>
<arg>${string}</arg>
<arg>${item}</arg>
<arg>${dictionary_item_occurrence}[${item}]</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="PASS" start="2026-04-08T00:50:26.508377" elapsed="0.000460"/>
</kw>
<var name="${item}">openflow:1</var>
<status status="PASS" start="2026-04-08T00:50:26.508222" elapsed="0.000654"/>
</iter>
<iter>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T00:50:26.509491" level="INFO">Item found from container 19 times.</msg>
<arg>${string}</arg>
<arg>${item}</arg>
<arg>${dictionary_item_occurrence}[${item}]</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="PASS" start="2026-04-08T00:50:26.509109" elapsed="0.000459"/>
</kw>
<var name="${item}">openflow:2</var>
<status status="PASS" start="2026-04-08T00:50:26.508957" elapsed="0.000651"/>
</iter>
<iter>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T00:50:26.510211" level="INFO">Item found from container 19 times.</msg>
<arg>${string}</arg>
<arg>${item}</arg>
<arg>${dictionary_item_occurrence}[${item}]</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="PASS" start="2026-04-08T00:50:26.509837" elapsed="0.000451"/>
</kw>
<var name="${item}">openflow:3</var>
<status status="PASS" start="2026-04-08T00:50:26.509687" elapsed="0.000640"/>
</iter>
<var>${item}</var>
<value>@{dictionary_item_occurrence}</value>
<status status="PASS" start="2026-04-08T00:50:26.508071" elapsed="0.002284"/>
</for>
<arg>${data}</arg>
<arg>${dictionary}</arg>
<doc>Check string for occurrences of items expressed in a list of dictionaries {item=occurrences}. 0 occurences means item is not present.</doc>
<status status="PASS" start="2026-04-08T00:50:26.507808" elapsed="0.002601"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T00:50:26.462762" elapsed="0.047681"/>
</iter>
<iter>
<kw name="Get_From_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:26.515716" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:26.515421" elapsed="0.000322"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:50:26.515787" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:50:26.515933" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:50:26.515061" elapsed="0.000896"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:26.522347" level="INFO">/rests/data/network-topology:network-topology?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:26.522082" elapsed="0.000310"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:26.522781" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:26.522543" elapsed="0.000281"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:50:26.542375" level="INFO">GET Request : url=http://10.30.170.131:8181/rests/data/network-topology:network-topology?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0evogeryo91251obsb096nsda10.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:50:26.542600" level="INFO">GET Response : url=http://10.30.170.131:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '3149'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"},{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:3']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:1:1","dest-node":"openflow:1"}},{"link-id":"openflow:3:3","source":{"source-node":"openflow:3","source-tp":"openflow:3:3"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:1:1","source":{"source-node":"openflow:1","source-tp":"openflow:1:1"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:3:3","dest-node":"openflow:3"}}]}]}} 
 </msg>
<msg time="2026-04-08T00:50:26.542769" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:50:26.524924" elapsed="0.017872"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:26.522890" elapsed="0.019955"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:26.543078" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:26.542913" elapsed="0.000231"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:26.522872" elapsed="0.020310"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:26.546604" level="INFO">{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"},{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:3']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:1:1","dest-node":"openflow:1"}},{"link-id":"openflow:3:3","source":{"source-node":"openflow:3","source-tp":"openflow:3:3"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:1:1","source":{"source-node":"openflow:1","source-tp":"openflow:1:1"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:3:3","dest-node":"openflow:3"}}]}]}}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:26.544210" elapsed="0.002462"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:26.543971" elapsed="0.002735"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:26.543952" elapsed="0.002779"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:26.549212" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:26.547020" elapsed="0.002238"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:26.546787" elapsed="0.002505"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:26.546770" elapsed="0.002546"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:50:26.549875" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:50:26.549487" elapsed="0.000415"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:26.550225" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:26.549973" elapsed="0.000310"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:26.550764" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:26.550467" elapsed="0.000323"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:26.550307" elapsed="0.000517"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:26.549955" elapsed="0.000891"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:50:26.551398" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:50:26.551020" elapsed="0.000405"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:26.551727" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:26.551495" elapsed="0.000288"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:26.552272" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:26.551964" elapsed="0.000334"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:26.551806" elapsed="0.000527"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:26.551477" elapsed="0.000877"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:50:26.552506" elapsed="0.000344"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:50:26.553350" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:50:26.553047" elapsed="0.000329"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:50:26.553529" elapsed="0.002227"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:50:26.543544" elapsed="0.012275"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-08T00:50:26.555994" elapsed="0.000032"/>
</return>
<status status="PASS" start="2026-04-08T00:50:26.555887" elapsed="0.000173"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:26.555869" elapsed="0.000215"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:26.556247" elapsed="0.000022"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-08T00:50:26.556318" elapsed="0.000015"/>
</return>
<msg time="2026-04-08T00:50:26.558660" level="INFO">${response_text} = {"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='o...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${access}</arg>
<arg>session=${session}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:50:26.516304" elapsed="0.042385"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:50:26.558740" elapsed="0.000027"/>
</return>
<msg time="2026-04-08T00:50:26.558902" level="INFO">${data} = {"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='o...</msg>
<var>${data}</var>
<arg>uri=${uri}</arg>
<arg>member_index=${index}</arg>
<doc>Send a GET with the supplied uri to member ${member_index}.</doc>
<status status="PASS" start="2026-04-08T00:50:26.514566" elapsed="0.044362"/>
</kw>
<kw name="Check Item Occurrence" owner="Utils">
<for flavor="IN">
<iter>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T00:50:26.560100" level="INFO">Item found from container 21 times.</msg>
<arg>${string}</arg>
<arg>${item}</arg>
<arg>${dictionary_item_occurrence}[${item}]</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="PASS" start="2026-04-08T00:50:26.559727" elapsed="0.000472"/>
</kw>
<var name="${item}">openflow:1</var>
<status status="PASS" start="2026-04-08T00:50:26.559573" elapsed="0.000666"/>
</iter>
<iter>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T00:50:26.560827" level="INFO">Item found from container 19 times.</msg>
<arg>${string}</arg>
<arg>${item}</arg>
<arg>${dictionary_item_occurrence}[${item}]</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="PASS" start="2026-04-08T00:50:26.560470" elapsed="0.000433"/>
</kw>
<var name="${item}">openflow:2</var>
<status status="PASS" start="2026-04-08T00:50:26.560319" elapsed="0.000622"/>
</iter>
<iter>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T00:50:26.561543" level="INFO">Item found from container 19 times.</msg>
<arg>${string}</arg>
<arg>${item}</arg>
<arg>${dictionary_item_occurrence}[${item}]</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="PASS" start="2026-04-08T00:50:26.561184" elapsed="0.000435"/>
</kw>
<var name="${item}">openflow:3</var>
<status status="PASS" start="2026-04-08T00:50:26.561018" elapsed="0.000639"/>
</iter>
<var>${item}</var>
<value>@{dictionary_item_occurrence}</value>
<status status="PASS" start="2026-04-08T00:50:26.559438" elapsed="0.002247"/>
</for>
<arg>${data}</arg>
<arg>${dictionary}</arg>
<doc>Check string for occurrences of items expressed in a list of dictionaries {item=occurrences}. 0 occurences means item is not present.</doc>
<status status="PASS" start="2026-04-08T00:50:26.559175" elapsed="0.002563"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T00:50:26.510529" elapsed="0.051241"/>
</iter>
<iter>
<kw name="Get_From_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:26.567291" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:26.566978" elapsed="0.000340"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:50:26.567364" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:50:26.567510" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:50:26.566620" elapsed="0.000915"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:26.573725" level="INFO">/rests/data/network-topology:network-topology?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:26.573479" elapsed="0.000292"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:26.574174" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:26.573921" elapsed="0.000299"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:50:26.594347" level="INFO">GET Request : url=http://10.30.171.110:8181/rests/data/network-topology:network-topology?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node09orwbuy1e81xg3wze7ww55ua0.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:50:26.594569" level="INFO">GET Response : url=http://10.30.171.110:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '3149'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"},{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:3']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:1:1","dest-node":"openflow:1"}},{"link-id":"openflow:3:3","source":{"source-node":"openflow:3","source-tp":"openflow:3:3"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:1:1","source":{"source-node":"openflow:1","source-tp":"openflow:1:1"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:3:3","dest-node":"openflow:3"}}]}]}} 
 </msg>
<msg time="2026-04-08T00:50:26.594738" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:50:26.576228" elapsed="0.018551"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:26.574289" elapsed="0.020534"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:26.595000" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:26.594849" elapsed="0.000215"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:26.574270" elapsed="0.020815"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:26.598467" level="INFO">{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"},{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:3']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:1:1","dest-node":"openflow:1"}},{"link-id":"openflow:3:3","source":{"source-node":"openflow:3","source-tp":"openflow:3:3"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:1:1","source":{"source-node":"openflow:1","source-tp":"openflow:1:1"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:3:3","dest-node":"openflow:3"}}]}]}}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:26.596097" elapsed="0.002438"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:26.595879" elapsed="0.002691"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:26.595860" elapsed="0.002734"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:26.601048" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:26.598883" elapsed="0.002211"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:26.598650" elapsed="0.002478"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:26.598633" elapsed="0.002519"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:50:26.601719" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:50:26.601335" elapsed="0.000411"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:26.602056" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:26.601821" elapsed="0.000292"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:26.602614" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:26.602313" elapsed="0.000327"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:26.602137" elapsed="0.000538"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:26.601800" elapsed="0.000896"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:50:26.603273" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:50:26.602895" elapsed="0.000405"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:26.603598" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:26.603369" elapsed="0.000285"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:26.604124" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:26.603833" elapsed="0.000317"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:26.603677" elapsed="0.000524"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:26.603351" elapsed="0.000871"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:50:26.604373" elapsed="0.000342"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:50:26.605214" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:50:26.604913" elapsed="0.000328"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:50:26.605394" elapsed="0.002346"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:50:26.595453" elapsed="0.012350"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-08T00:50:26.607979" elapsed="0.000032"/>
</return>
<status status="PASS" start="2026-04-08T00:50:26.607873" elapsed="0.000172"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:26.607853" elapsed="0.000216"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:26.608232" elapsed="0.000022"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-08T00:50:26.608304" elapsed="0.000015"/>
</return>
<msg time="2026-04-08T00:50:26.610628" level="INFO">${response_text} = {"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='o...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${access}</arg>
<arg>session=${session}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:50:26.567861" elapsed="0.042796"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:50:26.610708" elapsed="0.000037"/>
</return>
<msg time="2026-04-08T00:50:26.610871" level="INFO">${data} = {"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='o...</msg>
<var>${data}</var>
<arg>uri=${uri}</arg>
<arg>member_index=${index}</arg>
<doc>Send a GET with the supplied uri to member ${member_index}.</doc>
<status status="PASS" start="2026-04-08T00:50:26.566116" elapsed="0.044781"/>
</kw>
<kw name="Check Item Occurrence" owner="Utils">
<for flavor="IN">
<iter>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T00:50:26.612078" level="INFO">Item found from container 21 times.</msg>
<arg>${string}</arg>
<arg>${item}</arg>
<arg>${dictionary_item_occurrence}[${item}]</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="PASS" start="2026-04-08T00:50:26.611702" elapsed="0.000471"/>
</kw>
<var name="${item}">openflow:1</var>
<status status="PASS" start="2026-04-08T00:50:26.611548" elapsed="0.000666"/>
</iter>
<iter>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T00:50:26.612814" level="INFO">Item found from container 19 times.</msg>
<arg>${string}</arg>
<arg>${item}</arg>
<arg>${dictionary_item_occurrence}[${item}]</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="PASS" start="2026-04-08T00:50:26.612448" elapsed="0.000445"/>
</kw>
<var name="${item}">openflow:2</var>
<status status="PASS" start="2026-04-08T00:50:26.612295" elapsed="0.000637"/>
</iter>
<iter>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T00:50:26.613538" level="INFO">Item found from container 19 times.</msg>
<arg>${string}</arg>
<arg>${item}</arg>
<arg>${dictionary_item_occurrence}[${item}]</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="PASS" start="2026-04-08T00:50:26.613174" elapsed="0.000442"/>
</kw>
<var name="${item}">openflow:3</var>
<status status="PASS" start="2026-04-08T00:50:26.613009" elapsed="0.000645"/>
</iter>
<var>${item}</var>
<value>@{dictionary_item_occurrence}</value>
<status status="PASS" start="2026-04-08T00:50:26.611412" elapsed="0.002271"/>
</for>
<arg>${data}</arg>
<arg>${dictionary}</arg>
<doc>Check string for occurrences of items expressed in a list of dictionaries {item=occurrences}. 0 occurences means item is not present.</doc>
<status status="PASS" start="2026-04-08T00:50:26.611130" elapsed="0.002606"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T00:50:26.561857" elapsed="0.051913"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-08T00:50:26.462631" elapsed="0.151168"/>
</for>
<arg>uri=${RFC8040_OPERATIONAL_TOPO_API}</arg>
<arg>dictionary=${dictionary}</arg>
<arg>member_index_list=${controller_index_list}</arg>
<doc>Send a GET with the supplied uri to all or some members defined in ${member_index_list}.
Then check received for occurrences of items expressed in a dictionary {'openflow:1': '21', 'openflow:2': '19', 'openflow:3': '19'}.</doc>
<status status="PASS" start="2026-04-08T00:50:26.460489" elapsed="0.153363"/>
</kw>
<arg>5s</arg>
<arg>1s</arg>
<arg>ClusterManagement.Check_Item_Occurrence_Member_List_Or_All</arg>
<arg>uri=${RFC8040_OPERATIONAL_TOPO_API}</arg>
<arg>dictionary=${dictionary}</arg>
<arg>member_index_list=${controller_index_list}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-08T00:50:26.455742" elapsed="0.158166"/>
</kw>
<doc>Check devices in tree,2 are in operational inventory and topology in all instances in ${controller_index_list}.
Inventory should show 1x node_id per device 1x node_id per connector. Topology should show 2x node_id per device + 3x node_id per connector
+ 5x node_id per link termination. TODO: A Keyword that can calculate this based on mininet topology.</doc>
<status status="PASS" start="2026-04-08T00:50:26.186773" elapsed="0.427200"/>
</kw>
<doc>Check devices in operational inventory and topology in all cluster instances.</doc>
<status status="PASS" start="2026-04-08T00:50:26.182489" elapsed="0.431607"/>
</test>
<test id="s1-s1-t6" name="Add Configuration In Owner and Verify Before Fail" line="56">
<kw name="Add Sample Flow And Verify" owner="ClusterOpenFlow">
<msg time="2026-04-08T00:50:26.626381" level="FAIL">Variable '${original_owner}' not found.</msg>
<arg>${original_owner}</arg>
<doc>Add sample flow in ${controller_index} and verify it gets applied in all instances in ${controller_index_list}.</doc>
<status status="FAIL" start="2026-04-08T00:50:26.622615" elapsed="0.003806">Variable '${original_owner}' not found.</status>
</kw>
<doc>Add Flow in Owner and verify it gets applied from all instances.</doc>
<status status="FAIL" start="2026-04-08T00:50:26.614437" elapsed="0.012130">Variable '${original_owner}' not found.</status>
</test>
<test id="s1-s1-t7" name="Modify Configuration In Owner and Verify Before Fail" line="60">
<kw name="Modify Sample Flow And Verify" owner="ClusterOpenFlow">
<msg time="2026-04-08T00:50:26.639361" level="FAIL">Variable '${original_owner}' not found.</msg>
<arg>${original_owner}</arg>
<doc>Modify sample flow in ${controller_index} and verify it gets applied in all instances in ${controller_index_list}.</doc>
<status status="FAIL" start="2026-04-08T00:50:26.635586" elapsed="0.003815">Variable '${original_owner}' not found.</status>
</kw>
<doc>Modify Flow in Owner and verify it gets applied from all instances.</doc>
<status status="FAIL" start="2026-04-08T00:50:26.627088" elapsed="0.012500">Variable '${original_owner}' not found.</status>
</test>
<test id="s1-s1-t8" name="Delete Configuration In Owner and Verify Before Fail" line="64">
<kw name="Delete Sample Flow And Verify" owner="ClusterOpenFlow">
<msg time="2026-04-08T00:50:26.644873" level="FAIL">Variable '${original_owner}' not found.</msg>
<arg>${original_owner}</arg>
<doc>Delete sample flow in Owner and verify it gets removed from all instances.</doc>
<status status="FAIL" start="2026-04-08T00:50:26.640949" elapsed="0.003963">Variable '${original_owner}' not found.</status>
</kw>
<doc>Delete Flow in Owner and verify it gets applied from all instances.</doc>
<status status="FAIL" start="2026-04-08T00:50:26.640082" elapsed="0.004969">Variable '${original_owner}' not found.</status>
</test>
<test id="s1-s1-t9" name="Add Configuration In Successor and Verify Before Fail" line="68">
<kw name="Add Sample Flow And Verify" owner="ClusterOpenFlow">
<msg time="2026-04-08T00:50:26.658300" level="FAIL">Variable '${original_successor}' not found.</msg>
<arg>${original_successor}</arg>
<doc>Add sample flow in ${controller_index} and verify it gets applied in all instances in ${controller_index_list}.</doc>
<status status="FAIL" start="2026-04-08T00:50:26.654430" elapsed="0.003909">Variable '${original_successor}' not found.</status>
</kw>
<doc>Add Flow in Successor and verify it gets applied from all instances.</doc>
<status status="FAIL" start="2026-04-08T00:50:26.645575" elapsed="0.012895">Variable '${original_successor}' not found.</status>
</test>
<test id="s1-s1-t10" name="Modify Configuration In Successor and Verify Before Fail" line="72">
<kw name="Modify Sample Flow And Verify" owner="ClusterOpenFlow">
<msg time="2026-04-08T00:50:26.671917" level="FAIL">Variable '${original_successor}' not found.</msg>
<arg>${original_successor}</arg>
<doc>Modify sample flow in ${controller_index} and verify it gets applied in all instances in ${controller_index_list}.</doc>
<status status="FAIL" start="2026-04-08T00:50:26.667944" elapsed="0.004012">Variable '${original_successor}' not found.</status>
</kw>
<doc>Modify Flow in successor and verify it gets applied from all instances.</doc>
<status status="FAIL" start="2026-04-08T00:50:26.658960" elapsed="0.013127">Variable '${original_successor}' not found.</status>
</test>
<test id="s1-s1-t11" name="Delete Configuration In Successor and Verify Before Fail" line="76">
<kw name="Delete Sample Flow And Verify" owner="ClusterOpenFlow">
<msg time="2026-04-08T00:50:26.677194" level="FAIL">Variable '${original_successor}' not found.</msg>
<arg>${original_successor}</arg>
<doc>Delete sample flow in Owner and verify it gets removed from all instances.</doc>
<status status="FAIL" start="2026-04-08T00:50:26.672981" elapsed="0.004253">Variable '${original_successor}' not found.</status>
</kw>
<doc>Delete Flow in Successor and verify it gets removed from all instances.</doc>
<status status="FAIL" start="2026-04-08T00:50:26.672431" elapsed="0.004938">Variable '${original_successor}' not found.</status>
</test>
<test id="s1-s1-t12" name="Send RPC Add to Owner and Verify Before Fail" line="80">
<kw name="Send RPC Add Sample Flow And Verify" owner="ClusterOpenFlow">
<msg time="2026-04-08T00:50:26.690201" level="FAIL">Variable '${original_owner}' not found.</msg>
<arg>${original_owner}</arg>
<doc>Add sample flow in ${controller_index} and verify it gets applied from all instances in ${controller_index_list}.</doc>
<status status="FAIL" start="2026-04-08T00:50:26.686456" elapsed="0.003782">Variable '${original_owner}' not found.</status>
</kw>
<doc>Add Flow in Owner and verify it gets applied from all instances.</doc>
<status status="FAIL" start="2026-04-08T00:50:26.677782" elapsed="0.012584">Variable '${original_owner}' not found.</status>
</test>
<test id="s1-s1-t13" name="Send RPC Delete to Owner and Verify Before Fail" line="84">
<kw name="Send RPC Delete Sample Flow And Verify" owner="ClusterOpenFlow">
<msg time="2026-04-08T00:50:26.703086" level="FAIL">Variable '${original_owner}' not found.</msg>
<arg>${original_owner}</arg>
<doc>Delete sample flow in ${controller_index} and verify it gets removed from all instances in ${controller_index_list}.</doc>
<status status="FAIL" start="2026-04-08T00:50:26.699344" elapsed="0.003780">Variable '${original_owner}' not found.</status>
</kw>
<doc>Delete Flow in Owner and verify it gets removed from all instances.</doc>
<status status="FAIL" start="2026-04-08T00:50:26.690872" elapsed="0.012392">Variable '${original_owner}' not found.</status>
</test>
<test id="s1-s1-t14" name="Send RPC Add to Successor and Verify Before Fail" line="88">
<kw name="Send RPC Add Sample Flow And Verify" owner="ClusterOpenFlow">
<msg time="2026-04-08T00:50:26.716035" level="FAIL">Variable '${original_successor}' not found.</msg>
<arg>${original_successor}</arg>
<doc>Add sample flow in ${controller_index} and verify it gets applied from all instances in ${controller_index_list}.</doc>
<status status="FAIL" start="2026-04-08T00:50:26.712183" elapsed="0.003890">Variable '${original_successor}' not found.</status>
</kw>
<doc>Add Flow in Successor and verify it gets applied from all instances.</doc>
<status status="FAIL" start="2026-04-08T00:50:26.703716" elapsed="0.012501">Variable '${original_successor}' not found.</status>
</test>
<test id="s1-s1-t15" name="Send RPC Delete to Successor and Verify Before Fail" line="92">
<kw name="Send RPC Delete Sample Flow And Verify" owner="ClusterOpenFlow">
<msg time="2026-04-08T00:50:26.728317" level="FAIL">Variable '${original_successor}' not found.</msg>
<arg>${original_successor}</arg>
<doc>Delete sample flow in ${controller_index} and verify it gets removed from all instances in ${controller_index_list}.</doc>
<status status="FAIL" start="2026-04-08T00:50:26.724465" elapsed="0.003891">Variable '${original_successor}' not found.</status>
</kw>
<doc>Delete Flow in Successor and verify it gets removed from all instances.</doc>
<status status="FAIL" start="2026-04-08T00:50:26.716449" elapsed="0.012034">Variable '${original_successor}' not found.</status>
</test>
<test id="s1-s1-t16" name="Modify Network And Verify Before Fail" line="96">
<kw name="Take OpenFlow Device Link Down and Verify" owner="ClusterOpenFlow">
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-08T00:50:26.735934" level="INFO">${dictionary} = {'"link-down":true': '1'}</msg>
<var>${dictionary}</var>
<arg>"link-down":true=1</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-08T00:50:26.735553" elapsed="0.000408"/>
</kw>
<kw name="Send Mininet Command" owner="MininetKeywords">
<if>
<branch type="IF" condition="&quot;&quot;&quot;${mininet_conn}&quot;&quot;&quot; != &quot;&quot;">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${mininet_conn}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:50:26.743473" elapsed="0.000150"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:26.743227" elapsed="0.000433"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:26.743203" elapsed="0.000484"/>
</if>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T00:50:26.746845" level="INFO">link s1 s2 down</msg>
<arg>${cmd}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T00:50:26.743824" elapsed="0.003077"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-08T00:50:26.752587" level="INFO">mininet&gt;</msg>
<msg time="2026-04-08T00:50:26.752674" level="INFO">${output} = mininet&gt;</msg>
<var>${output}</var>
<arg>mininet&gt;</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-08T00:50:26.747057" elapsed="0.005642"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-08T00:50:26.752801" elapsed="0.000036"/>
</return>
<msg time="2026-04-08T00:50:26.752962" level="INFO">${ouput} = mininet&gt;</msg>
<var>${ouput}</var>
<arg>${mininet_conn_id}</arg>
<arg>link s1 s2 down</arg>
<doc>Sends Command ${cmd} to Mininet session ${mininet_conn} and returns read buffer response.</doc>
<status status="PASS" start="2026-04-08T00:50:26.742911" elapsed="0.010077"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Check_Item_Occurrence_Member_List_Or_All" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:50:26.758985" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:50:26.758604" elapsed="0.000408"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:50:26.759486" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:50:26.759186" elapsed="0.000327"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:50:26.759557" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:50:26.759708" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:50:26.758220" elapsed="0.001513"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_From_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:26.765269" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:26.764954" elapsed="0.000342"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:50:26.765341" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:50:26.765488" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:50:26.764610" elapsed="0.000902"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:26.771779" level="INFO">/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:26.771529" elapsed="0.000296"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:26.772248" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:26.771990" elapsed="0.000301"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:50:26.783130" level="INFO">GET Request : url=http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01nfu2ssrokr1es5zgka78rw970.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:50:26.783675" level="INFO">GET Response : url=http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '618'} 
 body={"opendaylight-inventory:node-connector":[{"id":"openflow:1:1","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:maximum-speed":0,"flow-node-inventory:reason":"update","flow-node-inventory:configuration":"PORT-DOWN","flow-node-inventory:port-number":1,"flow-node-inventory:hardware-address":"c6:0c:45:fe:a3:df","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s1-eth1","flow-node-inventory:supported":"","flow-node-inventory:state":{"live":false,"blocked":false,"link-down":true}}]} 
 </msg>
<msg time="2026-04-08T00:50:26.783775" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:50:26.774272" elapsed="0.009529"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:26.772359" elapsed="0.011488"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:26.784038" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:26.783875" elapsed="0.000226"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:26.772341" elapsed="0.011782"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:26.787497" level="INFO">{"opendaylight-inventory:node-connector":[{"id":"openflow:1:1","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:maximum-speed":0,"flow-node-inventory:reason":"update","flow-node-inventory:configuration":"PORT-DOWN","flow-node-inventory:port-number":1,"flow-node-inventory:hardware-address":"c6:0c:45:fe:a3:df","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s1-eth1","flow-node-inventory:supported":"","flow-node-inventory:state":{"live":false,"blocked":false,"link-down":true}}]}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:26.785175" elapsed="0.002373"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:26.784940" elapsed="0.002643"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:26.784921" elapsed="0.002686"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:26.790218" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:26.787888" elapsed="0.002377"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:26.787664" elapsed="0.002636"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:26.787648" elapsed="0.002676"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:50:26.790935" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:50:26.790546" elapsed="0.000416"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:26.791285" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:26.791033" elapsed="0.000310"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:26.791825" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:26.791527" elapsed="0.000324"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:26.791366" elapsed="0.000520"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:26.791015" elapsed="0.000893"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:50:26.792439" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:50:26.792064" elapsed="0.000402"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:26.792767" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:26.792535" elapsed="0.000293"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:26.793317" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:26.793008" elapsed="0.000334"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:26.792851" elapsed="0.000527"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:26.792517" elapsed="0.000882"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:50:26.793547" elapsed="0.000343"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:50:26.794357" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:50:26.794053" elapsed="0.000344"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:50:26.794551" elapsed="0.003575"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:50:26.784500" elapsed="0.013705"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-08T00:50:26.798410" elapsed="0.000029"/>
</return>
<status status="PASS" start="2026-04-08T00:50:26.798276" elapsed="0.000198"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:26.798257" elapsed="0.000241"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:26.798645" elapsed="0.000021"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-08T00:50:26.798714" elapsed="0.000014"/>
</return>
<msg time="2026-04-08T00:50:26.800907" level="INFO">${response_text} = {"opendaylight-inventory:node-connector":[{"id":"openflow:1:1","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed"...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${access}</arg>
<arg>session=${session}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:50:26.765838" elapsed="0.035098"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:50:26.800986" elapsed="0.000027"/>
</return>
<msg time="2026-04-08T00:50:26.801134" level="INFO">${data} = {"opendaylight-inventory:node-connector":[{"id":"openflow:1:1","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed"...</msg>
<var>${data}</var>
<arg>uri=${uri}</arg>
<arg>member_index=${index}</arg>
<doc>Send a GET with the supplied uri to member ${member_index}.</doc>
<status status="PASS" start="2026-04-08T00:50:26.764109" elapsed="0.037066"/>
</kw>
<kw name="Check Item Occurrence" owner="Utils">
<for flavor="IN">
<iter>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T00:50:26.802371" level="INFO">Item found from container 1 time.</msg>
<arg>${string}</arg>
<arg>${item}</arg>
<arg>${dictionary_item_occurrence}[${item}]</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="PASS" start="2026-04-08T00:50:26.801961" elapsed="0.000481"/>
</kw>
<var name="${item}">"link-down":true</var>
<status status="PASS" start="2026-04-08T00:50:26.801806" elapsed="0.000676"/>
</iter>
<var>${item}</var>
<value>@{dictionary_item_occurrence}</value>
<status status="PASS" start="2026-04-08T00:50:26.801672" elapsed="0.000841"/>
</for>
<arg>${data}</arg>
<arg>${dictionary}</arg>
<doc>Check string for occurrences of items expressed in a list of dictionaries {item=occurrences}. 0 occurences means item is not present.</doc>
<status status="PASS" start="2026-04-08T00:50:26.801408" elapsed="0.001158"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T00:50:26.759934" elapsed="0.042666"/>
</iter>
<iter>
<kw name="Get_From_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:26.808051" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:26.807750" elapsed="0.000330"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:50:26.808129" elapsed="0.000054"/>
</return>
<msg time="2026-04-08T00:50:26.808345" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:50:26.807394" elapsed="0.001031"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:26.814821" level="INFO">/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:26.814565" elapsed="0.000302"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:26.815283" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:26.815021" elapsed="0.000306"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:50:26.828395" level="INFO">GET Request : url=http://10.30.170.131:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0evogeryo91251obsb096nsda10.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:50:26.828543" level="INFO">GET Response : url=http://10.30.170.131:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '618'} 
 body={"opendaylight-inventory:node-connector":[{"id":"openflow:1:1","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:maximum-speed":0,"flow-node-inventory:reason":"update","flow-node-inventory:configuration":"PORT-DOWN","flow-node-inventory:port-number":1,"flow-node-inventory:hardware-address":"c6:0c:45:fe:a3:df","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s1-eth1","flow-node-inventory:supported":"","flow-node-inventory:state":{"live":false,"blocked":false,"link-down":true}}]} 
 </msg>
<msg time="2026-04-08T00:50:26.828663" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:50:26.817330" elapsed="0.011366"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:26.815398" elapsed="0.013353"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:26.829259" elapsed="0.000062"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:26.828790" elapsed="0.000652"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:26.815379" elapsed="0.014124"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:26.838495" level="INFO">{"opendaylight-inventory:node-connector":[{"id":"openflow:1:1","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:maximum-speed":0,"flow-node-inventory:reason":"update","flow-node-inventory:configuration":"PORT-DOWN","flow-node-inventory:port-number":1,"flow-node-inventory:hardware-address":"c6:0c:45:fe:a3:df","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s1-eth1","flow-node-inventory:supported":"","flow-node-inventory:state":{"live":false,"blocked":false,"link-down":true}}]}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:26.832532" elapsed="0.006036"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:26.831820" elapsed="0.006797"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:26.831765" elapsed="0.006888"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:26.841189" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:26.839016" elapsed="0.002221"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:26.838733" elapsed="0.002538"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:26.838709" elapsed="0.002587"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:50:26.841948" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:50:26.841473" elapsed="0.000504"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:26.842316" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:26.842048" elapsed="0.000328"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:26.842867" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:26.842563" elapsed="0.000331"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:26.842400" elapsed="0.000530"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:26.842030" elapsed="0.000922"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:50:26.843488" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:50:26.843109" elapsed="0.000406"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:26.843817" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:26.843584" elapsed="0.000290"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:26.844372" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:26.844058" elapsed="0.000341"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:26.843898" elapsed="0.000536"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:26.843566" elapsed="0.000890"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:50:26.844608" elapsed="0.000346"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:50:26.845475" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:50:26.845186" elapsed="0.000316"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:50:26.845654" elapsed="0.002201"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:50:26.830609" elapsed="0.017310"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-08T00:50:26.848099" elapsed="0.000032"/>
</return>
<status status="PASS" start="2026-04-08T00:50:26.847990" elapsed="0.000191"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:26.847971" elapsed="0.000236"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:26.848355" elapsed="0.000022"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-08T00:50:26.848426" elapsed="0.000015"/>
</return>
<msg time="2026-04-08T00:50:26.850633" level="INFO">${response_text} = {"opendaylight-inventory:node-connector":[{"id":"openflow:1:1","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed"...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${access}</arg>
<arg>session=${session}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:50:26.808759" elapsed="0.041903"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:50:26.850714" elapsed="0.000027"/>
</return>
<msg time="2026-04-08T00:50:26.850863" level="INFO">${data} = {"opendaylight-inventory:node-connector":[{"id":"openflow:1:1","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed"...</msg>
<var>${data}</var>
<arg>uri=${uri}</arg>
<arg>member_index=${index}</arg>
<doc>Send a GET with the supplied uri to member ${member_index}.</doc>
<status status="PASS" start="2026-04-08T00:50:26.806881" elapsed="0.044008"/>
</kw>
<kw name="Check Item Occurrence" owner="Utils">
<for flavor="IN">
<iter>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T00:50:26.852075" level="INFO">Item found from container 1 time.</msg>
<arg>${string}</arg>
<arg>${item}</arg>
<arg>${dictionary_item_occurrence}[${item}]</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="PASS" start="2026-04-08T00:50:26.851696" elapsed="0.000448"/>
</kw>
<var name="${item}">"link-down":true</var>
<status status="PASS" start="2026-04-08T00:50:26.851541" elapsed="0.000659"/>
</iter>
<var>${item}</var>
<value>@{dictionary_item_occurrence}</value>
<status status="PASS" start="2026-04-08T00:50:26.851404" elapsed="0.000828"/>
</for>
<arg>${data}</arg>
<arg>${dictionary}</arg>
<doc>Check string for occurrences of items expressed in a list of dictionaries {item=occurrences}. 0 occurences means item is not present.</doc>
<status status="PASS" start="2026-04-08T00:50:26.851119" elapsed="0.001166"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T00:50:26.802686" elapsed="0.049634"/>
</iter>
<iter>
<kw name="Get_From_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:26.857641" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:26.857342" elapsed="0.000326"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:50:26.857714" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:50:26.857865" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:50:26.856983" elapsed="0.000908"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:26.864189" level="INFO">/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:26.863928" elapsed="0.000309"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:26.864632" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:26.864390" elapsed="0.000287"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:50:26.880043" level="INFO">GET Request : url=http://10.30.171.110:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node09orwbuy1e81xg3wze7ww55ua0.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:50:26.880250" level="INFO">GET Response : url=http://10.30.171.110:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '618'} 
 body={"opendaylight-inventory:node-connector":[{"id":"openflow:1:1","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:maximum-speed":0,"flow-node-inventory:reason":"update","flow-node-inventory:configuration":"PORT-DOWN","flow-node-inventory:port-number":1,"flow-node-inventory:hardware-address":"c6:0c:45:fe:a3:df","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s1-eth1","flow-node-inventory:supported":"","flow-node-inventory:state":{"live":false,"blocked":false,"link-down":true}}]} 
 </msg>
<msg time="2026-04-08T00:50:26.880408" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:50:26.866843" elapsed="0.013603"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:26.864743" elapsed="0.015827"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:26.880825" elapsed="0.000032"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:26.880610" elapsed="0.000306"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:26.864725" elapsed="0.016221"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:26.885751" level="INFO">{"opendaylight-inventory:node-connector":[{"id":"openflow:1:1","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:maximum-speed":0,"flow-node-inventory:reason":"update","flow-node-inventory:configuration":"PORT-DOWN","flow-node-inventory:port-number":1,"flow-node-inventory:hardware-address":"c6:0c:45:fe:a3:df","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s1-eth1","flow-node-inventory:supported":"","flow-node-inventory:state":{"live":false,"blocked":false,"link-down":true}}]}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:26.882551" elapsed="0.003274"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:26.882241" elapsed="0.003634"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:26.882213" elapsed="0.003696"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:26.889557" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:26.886332" elapsed="0.003289"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:26.885987" elapsed="0.003682"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:26.885964" elapsed="0.003739"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:50:26.890527" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:50:26.889927" elapsed="0.000639"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:26.890951" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:26.890665" elapsed="0.000343"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:26.891526" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:26.891209" elapsed="0.000348"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:26.891032" elapsed="0.000563"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:26.890639" elapsed="0.000977"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:50:26.892147" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:50:26.891776" elapsed="0.000415"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:26.892502" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:26.892264" elapsed="0.000297"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:26.893054" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:26.892756" elapsed="0.000324"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:26.892585" elapsed="0.000531"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:26.892245" elapsed="0.000893"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:50:26.893309" elapsed="0.000350"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:50:26.894101" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:50:26.893823" elapsed="0.000304"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:50:26.894315" elapsed="0.002319"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:50:26.881611" elapsed="0.015085"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-08T00:50:26.896872" elapsed="0.000028"/>
</return>
<status status="PASS" start="2026-04-08T00:50:26.896766" elapsed="0.000167"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:26.896748" elapsed="0.000209"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:26.897103" elapsed="0.000021"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-08T00:50:26.897187" elapsed="0.000016"/>
</return>
<msg time="2026-04-08T00:50:26.899380" level="INFO">${response_text} = {"opendaylight-inventory:node-connector":[{"id":"openflow:1:1","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed"...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${access}</arg>
<arg>session=${session}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:50:26.858234" elapsed="0.041175"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:50:26.899502" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:50:26.899659" level="INFO">${data} = {"opendaylight-inventory:node-connector":[{"id":"openflow:1:1","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed"...</msg>
<var>${data}</var>
<arg>uri=${uri}</arg>
<arg>member_index=${index}</arg>
<doc>Send a GET with the supplied uri to member ${member_index}.</doc>
<status status="PASS" start="2026-04-08T00:50:26.856502" elapsed="0.043183"/>
</kw>
<kw name="Check Item Occurrence" owner="Utils">
<for flavor="IN">
<iter>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T00:50:26.900857" level="INFO">Item found from container 1 time.</msg>
<arg>${string}</arg>
<arg>${item}</arg>
<arg>${dictionary_item_occurrence}[${item}]</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="PASS" start="2026-04-08T00:50:26.900484" elapsed="0.000441"/>
</kw>
<var name="${item}">"link-down":true</var>
<status status="PASS" start="2026-04-08T00:50:26.900329" elapsed="0.000636"/>
</iter>
<var>${item}</var>
<value>@{dictionary_item_occurrence}</value>
<status status="PASS" start="2026-04-08T00:50:26.900193" elapsed="0.000802"/>
</for>
<arg>${data}</arg>
<arg>${dictionary}</arg>
<doc>Check string for occurrences of items expressed in a list of dictionaries {item=occurrences}. 0 occurences means item is not present.</doc>
<status status="PASS" start="2026-04-08T00:50:26.899914" elapsed="0.001134"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T00:50:26.852407" elapsed="0.048676"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-08T00:50:26.759787" elapsed="0.141324"/>
</for>
<arg>uri=${operational_port_1}</arg>
<arg>dictionary=${dictionary}</arg>
<arg>member_index_list=${controller_index_list}</arg>
<doc>Send a GET with the supplied uri to all or some members defined in ${member_index_list}.
Then check received for occurrences of items expressed in a dictionary {'"link-down":true': '1'}.</doc>
<status status="PASS" start="2026-04-08T00:50:26.757654" elapsed="0.143522"/>
</kw>
<arg>5s</arg>
<arg>1s</arg>
<arg>ClusterManagement.Check_Item_Occurrence_Member_List_Or_All</arg>
<arg>uri=${operational_port_1}</arg>
<arg>dictionary=${dictionary}</arg>
<arg>member_index_list=${controller_index_list}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-08T00:50:26.753196" elapsed="0.148038"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-08T00:50:26.901762" level="INFO">${dictionary} = {'openflow:1': '16', 'openflow:2': '14', 'openflow:3': '19'}</msg>
<var>${dictionary}</var>
<arg>openflow:1=16</arg>
<arg>openflow:2=14</arg>
<arg>openflow:3=19</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-08T00:50:26.901425" elapsed="0.000364"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Check_Item_Occurrence_Member_List_Or_All" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:50:26.908024" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:50:26.907639" elapsed="0.000413"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:50:26.908534" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:50:26.908228" elapsed="0.000331"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:50:26.908603" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:50:26.908758" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:50:26.907264" elapsed="0.001518"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_From_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:26.914112" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:26.913811" elapsed="0.000366"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:50:26.914226" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:50:26.914373" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:50:26.913470" elapsed="0.000928"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:26.920616" level="INFO">/rests/data/network-topology:network-topology?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:26.920369" elapsed="0.000293"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:26.921053" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:26.920814" elapsed="0.000282"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:50:26.931716" level="INFO">GET Request : url=http://10.30.170.48:8181/rests/data/network-topology:network-topology?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01nfu2ssrokr1es5zgka78rw970.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:50:26.933413" level="INFO">GET Response : url=http://10.30.170.48:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '2833'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"},{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:3']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:3:3","source":{"source-node":"openflow:3","source-tp":"openflow:3:3"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:3:3","dest-node":"openflow:3"}}]}]}} 
 </msg>
<msg time="2026-04-08T00:50:26.933603" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:50:26.923111" elapsed="0.010522"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:26.921178" elapsed="0.012503"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:26.933891" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:26.933713" elapsed="0.000250"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:26.921145" elapsed="0.012842"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:26.941595" level="INFO">{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"},{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:3']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:3:3","source":{"source-node":"openflow:3","source-tp":"openflow:3:3"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:3:3","dest-node":"openflow:3"}}]}]}}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:26.935812" elapsed="0.005883"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:26.935213" elapsed="0.006534"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:26.935126" elapsed="0.006658"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:26.945517" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:26.942253" elapsed="0.003331"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:26.941871" elapsed="0.003762"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:26.941846" elapsed="0.003824"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:50:26.946532" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:50:26.945911" elapsed="0.000660"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:26.946947" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:26.946673" elapsed="0.000330"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:26.947507" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:26.947205" elapsed="0.000327"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:26.947027" elapsed="0.000541"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:26.946647" elapsed="0.000942"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:50:26.948107" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:50:26.947747" elapsed="0.000386"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:26.948461" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:26.948226" elapsed="0.000291"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:26.949086" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:26.948708" elapsed="0.000412"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:26.948540" elapsed="0.000644"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:26.948207" elapsed="0.001006"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:50:26.949395" elapsed="0.000415"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:50:26.950356" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:50:26.949992" elapsed="0.000436"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:50:26.950594" elapsed="0.002501"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:50:26.934469" elapsed="0.018721"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-08T00:50:26.953413" elapsed="0.000038"/>
</return>
<status status="PASS" start="2026-04-08T00:50:26.953282" elapsed="0.000210"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:26.953259" elapsed="0.000259"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:26.953669" elapsed="0.000021"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-08T00:50:26.953739" elapsed="0.000015"/>
</return>
<msg time="2026-04-08T00:50:26.956549" level="INFO">${response_text} = {"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='o...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${access}</arg>
<arg>session=${session}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:50:26.914722" elapsed="0.041863"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:50:26.956651" elapsed="0.000035"/>
</return>
<msg time="2026-04-08T00:50:26.956840" level="INFO">${data} = {"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='o...</msg>
<var>${data}</var>
<arg>uri=${uri}</arg>
<arg>member_index=${index}</arg>
<doc>Send a GET with the supplied uri to member ${member_index}.</doc>
<status status="PASS" start="2026-04-08T00:50:26.912971" elapsed="0.043902"/>
</kw>
<kw name="Check Item Occurrence" owner="Utils">
<for flavor="IN">
<iter>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T00:50:26.958364" level="INFO">Item found from container 16 times.</msg>
<arg>${string}</arg>
<arg>${item}</arg>
<arg>${dictionary_item_occurrence}[${item}]</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="PASS" start="2026-04-08T00:50:26.957849" elapsed="0.000658"/>
</kw>
<var name="${item}">openflow:1</var>
<status status="PASS" start="2026-04-08T00:50:26.957688" elapsed="0.000871"/>
</iter>
<iter>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T00:50:26.959345" level="INFO">Item found from container 14 times.</msg>
<arg>${string}</arg>
<arg>${item}</arg>
<arg>${dictionary_item_occurrence}[${item}]</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="PASS" start="2026-04-08T00:50:26.958868" elapsed="0.000579"/>
</kw>
<var name="${item}">openflow:2</var>
<status status="PASS" start="2026-04-08T00:50:26.958659" elapsed="0.000838"/>
</iter>
<iter>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T00:50:26.960134" level="INFO">Item found from container 19 times.</msg>
<arg>${string}</arg>
<arg>${item}</arg>
<arg>${dictionary_item_occurrence}[${item}]</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="PASS" start="2026-04-08T00:50:26.959764" elapsed="0.000467"/>
</kw>
<var name="${item}">openflow:3</var>
<status status="PASS" start="2026-04-08T00:50:26.959596" elapsed="0.000675"/>
</iter>
<var>${item}</var>
<value>@{dictionary_item_occurrence}</value>
<status status="PASS" start="2026-04-08T00:50:26.957536" elapsed="0.002773"/>
</for>
<arg>${data}</arg>
<arg>${dictionary}</arg>
<doc>Check string for occurrences of items expressed in a list of dictionaries {item=occurrences}. 0 occurences means item is not present.</doc>
<status status="PASS" start="2026-04-08T00:50:26.957200" elapsed="0.003179"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T00:50:26.908961" elapsed="0.051461"/>
</iter>
<iter>
<kw name="Get_From_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:26.966942" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:26.966584" elapsed="0.000391"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:50:26.967031" elapsed="0.000037"/>
</return>
<msg time="2026-04-08T00:50:26.967233" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:50:26.966233" elapsed="0.001031"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:26.975100" level="INFO">/rests/data/network-topology:network-topology?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:26.974835" elapsed="0.000314"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:26.975564" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:26.975321" elapsed="0.000317"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:50:26.989927" level="INFO">GET Request : url=http://10.30.170.131:8181/rests/data/network-topology:network-topology?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0evogeryo91251obsb096nsda10.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:50:26.990451" level="INFO">GET Response : url=http://10.30.170.131:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '2833'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"},{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:3']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:3:3","source":{"source-node":"openflow:3","source-tp":"openflow:3:3"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:3:3","dest-node":"openflow:3"}}]}]}} 
 </msg>
<msg time="2026-04-08T00:50:26.990745" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:50:26.978103" elapsed="0.012694"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:26.975729" elapsed="0.015146"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:26.991147" elapsed="0.000055"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:26.990917" elapsed="0.000359"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:26.975705" elapsed="0.015615"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:26.997501" level="INFO">{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"},{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:3']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:3:3","source":{"source-node":"openflow:3","source-tp":"openflow:3:3"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:3:3","dest-node":"openflow:3"}}]}]}}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:26.993290" elapsed="0.004333"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:26.992848" elapsed="0.004838"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:26.992809" elapsed="0.004923"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:27.001084" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:26.998321" elapsed="0.002819"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:26.997836" elapsed="0.003364"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:26.997804" elapsed="0.003428"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:50:27.001943" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:50:27.001459" elapsed="0.000533"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:27.002326" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:27.002066" elapsed="0.000318"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:27.002877" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:27.002571" elapsed="0.000334"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:27.002408" elapsed="0.000543"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:27.002047" elapsed="0.000932"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:50:27.003665" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:50:27.003211" elapsed="0.000488"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:27.004090" elapsed="0.000027"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:27.003787" elapsed="0.000393"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:27.004681" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:27.004385" elapsed="0.000322"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:27.004215" elapsed="0.000526"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:27.003764" elapsed="0.000999"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:50:27.004922" elapsed="0.000458"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:50:27.005977" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:50:27.005594" elapsed="0.000468"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:50:27.006289" elapsed="0.002602"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:50:26.992021" elapsed="0.016935"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-08T00:50:27.009136" elapsed="0.000050"/>
</return>
<status status="PASS" start="2026-04-08T00:50:27.009025" elapsed="0.000198"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:27.009006" elapsed="0.000242"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:27.009399" elapsed="0.000022"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-08T00:50:27.009469" elapsed="0.000015"/>
</return>
<msg time="2026-04-08T00:50:27.012200" level="INFO">${response_text} = {"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='o...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${access}</arg>
<arg>session=${session}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:50:26.967687" elapsed="0.044551"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:50:27.012303" elapsed="0.000034"/>
</return>
<msg time="2026-04-08T00:50:27.012479" level="INFO">${data} = {"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='o...</msg>
<var>${data}</var>
<arg>uri=${uri}</arg>
<arg>member_index=${index}</arg>
<doc>Send a GET with the supplied uri to member ${member_index}.</doc>
<status status="PASS" start="2026-04-08T00:50:26.965555" elapsed="0.046951"/>
</kw>
<kw name="Check Item Occurrence" owner="Utils">
<for flavor="IN">
<iter>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T00:50:27.013829" level="INFO">Item found from container 16 times.</msg>
<arg>${string}</arg>
<arg>${item}</arg>
<arg>${dictionary_item_occurrence}[${item}]</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="PASS" start="2026-04-08T00:50:27.013346" elapsed="0.000588"/>
</kw>
<var name="${item}">openflow:1</var>
<status status="PASS" start="2026-04-08T00:50:27.013144" elapsed="0.000858"/>
</iter>
<iter>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T00:50:27.014750" level="INFO">Item found from container 14 times.</msg>
<arg>${string}</arg>
<arg>${item}</arg>
<arg>${dictionary_item_occurrence}[${item}]</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="PASS" start="2026-04-08T00:50:27.014325" elapsed="0.000504"/>
</kw>
<var name="${item}">openflow:2</var>
<status status="PASS" start="2026-04-08T00:50:27.014105" elapsed="0.000765"/>
</iter>
<iter>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T00:50:27.015575" level="INFO">Item found from container 19 times.</msg>
<arg>${string}</arg>
<arg>${item}</arg>
<arg>${dictionary_item_occurrence}[${item}]</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="PASS" start="2026-04-08T00:50:27.015101" elapsed="0.000574"/>
</kw>
<var name="${item}">openflow:3</var>
<status status="PASS" start="2026-04-08T00:50:27.014948" elapsed="0.000776"/>
</iter>
<var>${item}</var>
<value>@{dictionary_item_occurrence}</value>
<status status="PASS" start="2026-04-08T00:50:27.013008" elapsed="0.002753"/>
</for>
<arg>${data}</arg>
<arg>${dictionary}</arg>
<doc>Check string for occurrences of items expressed in a list of dictionaries {item=occurrences}. 0 occurences means item is not present.</doc>
<status status="PASS" start="2026-04-08T00:50:27.012741" elapsed="0.003087"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T00:50:26.960529" elapsed="0.055343"/>
</iter>
<iter>
<kw name="Get_From_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:27.022523" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:27.022200" elapsed="0.000351"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:50:27.022598" elapsed="0.000032"/>
</return>
<msg time="2026-04-08T00:50:27.022749" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:50:27.021524" elapsed="0.001250"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:27.028974" level="INFO">/rests/data/network-topology:network-topology?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:27.028722" elapsed="0.000306"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:27.029471" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:27.029221" elapsed="0.000295"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:50:27.049231" level="INFO">GET Request : url=http://10.30.171.110:8181/rests/data/network-topology:network-topology?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node09orwbuy1e81xg3wze7ww55ua0.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:50:27.049506" level="INFO">GET Response : url=http://10.30.171.110:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '2833'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"},{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:3']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:3:3","source":{"source-node":"openflow:3","source-tp":"openflow:3:3"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:3:3","dest-node":"openflow:3"}}]}]}} 
 </msg>
<msg time="2026-04-08T00:50:27.049750" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:50:27.034615" elapsed="0.015164"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:27.029586" elapsed="0.020284"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:27.050406" elapsed="0.000055"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:27.049988" elapsed="0.000578"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:27.029567" elapsed="0.021051"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:27.058967" level="INFO">{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"},{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:3']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:3:3","source":{"source-node":"openflow:3","source-tp":"openflow:3:3"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:3:3","dest-node":"openflow:3"}}]}]}}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:27.053254" elapsed="0.005781"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:27.052680" elapsed="0.006389"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:27.052633" elapsed="0.006461"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:27.061548" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:27.059388" elapsed="0.002206"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:27.059149" elapsed="0.002479"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:27.059133" elapsed="0.002520"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:50:27.062311" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:50:27.061839" elapsed="0.000499"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:27.062653" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:27.062410" elapsed="0.000300"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:27.063220" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:27.062898" elapsed="0.000349"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:27.062733" elapsed="0.000550"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:27.062391" elapsed="0.000913"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:50:27.063865" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:50:27.063464" elapsed="0.000429"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:27.064209" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:27.063963" elapsed="0.000304"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:27.064747" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:27.064450" elapsed="0.000324"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:27.064290" elapsed="0.000519"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:27.063944" elapsed="0.000886"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:50:27.064985" elapsed="0.000365"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:50:27.065820" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:50:27.065516" elapsed="0.000416"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:50:27.066096" elapsed="0.002377"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:50:27.051571" elapsed="0.016969"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-08T00:50:27.068722" elapsed="0.000038"/>
</return>
<status status="PASS" start="2026-04-08T00:50:27.068611" elapsed="0.000186"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:27.068592" elapsed="0.000229"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:27.068971" elapsed="0.000021"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-08T00:50:27.069040" elapsed="0.000014"/>
</return>
<msg time="2026-04-08T00:50:27.071346" level="INFO">${response_text} = {"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='o...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${access}</arg>
<arg>session=${session}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:50:27.023103" elapsed="0.048273"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:50:27.071427" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:50:27.071581" level="INFO">${data} = {"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='o...</msg>
<var>${data}</var>
<arg>uri=${uri}</arg>
<arg>member_index=${index}</arg>
<doc>Send a GET with the supplied uri to member ${member_index}.</doc>
<status status="PASS" start="2026-04-08T00:50:27.020887" elapsed="0.050721"/>
</kw>
<kw name="Check Item Occurrence" owner="Utils">
<for flavor="IN">
<iter>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T00:50:27.072840" level="INFO">Item found from container 16 times.</msg>
<arg>${string}</arg>
<arg>${item}</arg>
<arg>${dictionary_item_occurrence}[${item}]</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="PASS" start="2026-04-08T00:50:27.072452" elapsed="0.000470"/>
</kw>
<var name="${item}">openflow:1</var>
<status status="PASS" start="2026-04-08T00:50:27.072291" elapsed="0.000671"/>
</iter>
<iter>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T00:50:27.073578" level="INFO">Item found from container 14 times.</msg>
<arg>${string}</arg>
<arg>${item}</arg>
<arg>${dictionary_item_occurrence}[${item}]</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="PASS" start="2026-04-08T00:50:27.073213" elapsed="0.000440"/>
</kw>
<var name="${item}">openflow:2</var>
<status status="PASS" start="2026-04-08T00:50:27.073044" elapsed="0.000648"/>
</iter>
<iter>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T00:50:27.074316" level="INFO">Item found from container 19 times.</msg>
<arg>${string}</arg>
<arg>${item}</arg>
<arg>${dictionary_item_occurrence}[${item}]</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="PASS" start="2026-04-08T00:50:27.073937" elapsed="0.000456"/>
</kw>
<var name="${item}">openflow:3</var>
<status status="PASS" start="2026-04-08T00:50:27.073771" elapsed="0.000661"/>
</iter>
<var>${item}</var>
<value>@{dictionary_item_occurrence}</value>
<status status="PASS" start="2026-04-08T00:50:27.072126" elapsed="0.002335"/>
</for>
<arg>${data}</arg>
<arg>${dictionary}</arg>
<doc>Check string for occurrences of items expressed in a list of dictionaries {item=occurrences}. 0 occurences means item is not present.</doc>
<status status="PASS" start="2026-04-08T00:50:27.071850" elapsed="0.002666"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T00:50:27.015982" elapsed="0.058568"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-08T00:50:26.908831" elapsed="0.165750"/>
</for>
<arg>uri=${RFC8040_OPERATIONAL_TOPO_API}</arg>
<arg>dictionary=${dictionary}</arg>
<arg>member_index_list=${controller_index_list}</arg>
<doc>Send a GET with the supplied uri to all or some members defined in ${member_index_list}.
Then check received for occurrences of items expressed in a dictionary {'openflow:1': '16', 'openflow:2': '14', 'openflow:3': '19'}.</doc>
<status status="PASS" start="2026-04-08T00:50:26.906689" elapsed="0.167948"/>
</kw>
<arg>20s</arg>
<arg>2s</arg>
<arg>ClusterManagement.Check_Item_Occurrence_Member_List_Or_All</arg>
<arg>uri=${RFC8040_OPERATIONAL_TOPO_API}</arg>
<arg>dictionary=${dictionary}</arg>
<arg>member_index_list=${controller_index_list}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-08T00:50:26.901979" elapsed="0.172717"/>
</kw>
<doc>Take a link down and verify port status in all instances in ${controller_index_list}.</doc>
<status status="PASS" start="2026-04-08T00:50:26.733497" elapsed="0.341267"/>
</kw>
<doc>Take a link down and verify port status in all instances.</doc>
<status status="PASS" start="2026-04-08T00:50:26.728924" elapsed="0.345962"/>
</test>
<test id="s1-s1-t17" name="Restore Network And Verify Before Fail" line="100">
<kw name="Take OpenFlow Device Link Up and Verify" owner="ClusterOpenFlow">
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-08T00:50:27.082262" level="INFO">${dictionary} = {'"link-down":true': '0'}</msg>
<var>${dictionary}</var>
<arg>"link-down":true=0</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-08T00:50:27.081927" elapsed="0.000363"/>
</kw>
<kw name="Send Mininet Command" owner="MininetKeywords">
<if>
<branch type="IF" condition="&quot;&quot;&quot;${mininet_conn}&quot;&quot;&quot; != &quot;&quot;">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${mininet_conn}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:50:27.089739" elapsed="0.000159"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:27.089517" elapsed="0.000417"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:27.089499" elapsed="0.000460"/>
</if>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T00:50:27.091787" level="INFO">link s1 s2 up</msg>
<arg>${cmd}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T00:50:27.090096" elapsed="0.001747"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-08T00:50:27.099169" level="INFO">mininet&gt;</msg>
<msg time="2026-04-08T00:50:27.099279" level="INFO">${output} = mininet&gt;</msg>
<var>${output}</var>
<arg>mininet&gt;</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-08T00:50:27.091997" elapsed="0.007316"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-08T00:50:27.099414" elapsed="0.000034"/>
</return>
<msg time="2026-04-08T00:50:27.099573" level="INFO">${ouput} = mininet&gt;</msg>
<var>${ouput}</var>
<arg>${mininet_conn_id}</arg>
<arg>link s1 s2 up</arg>
<doc>Sends Command ${cmd} to Mininet session ${mininet_conn} and returns read buffer response.</doc>
<status status="PASS" start="2026-04-08T00:50:27.089231" elapsed="0.010369"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Check_Item_Occurrence_Member_List_Or_All" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:50:27.106089" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:50:27.105673" elapsed="0.000443"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:50:27.106607" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:50:27.106302" elapsed="0.000333"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:50:27.106679" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:50:27.106834" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:50:27.105237" elapsed="0.001622"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_From_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:27.112510" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:27.112203" elapsed="0.000334"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:50:27.112583" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:50:27.112731" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:50:27.111841" elapsed="0.000915"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:27.119235" level="INFO">/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:27.118939" elapsed="0.000344"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:27.119682" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:27.119438" elapsed="0.000287"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:50:27.127536" level="INFO">GET Request : url=http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01nfu2ssrokr1es5zgka78rw970.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:50:27.128058" level="INFO">GET Response : url=http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '609'} 
 body={"opendaylight-inventory:node-connector":[{"id":"openflow:1:1","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:maximum-speed":0,"flow-node-inventory:reason":"update","flow-node-inventory:configuration":"","flow-node-inventory:port-number":1,"flow-node-inventory:hardware-address":"c6:0c:45:fe:a3:df","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s1-eth1","flow-node-inventory:supported":"","flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false}}]} 
 </msg>
<msg time="2026-04-08T00:50:27.128177" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:50:27.121792" elapsed="0.006414"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:27.119794" elapsed="0.008454"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:27.128449" elapsed="0.000029"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:27.128275" elapsed="0.000252"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:27.119774" elapsed="0.008775"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:27.131971" level="INFO">{"opendaylight-inventory:node-connector":[{"id":"openflow:1:1","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:maximum-speed":0,"flow-node-inventory:reason":"update","flow-node-inventory:configuration":"","flow-node-inventory:port-number":1,"flow-node-inventory:hardware-address":"c6:0c:45:fe:a3:df","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s1-eth1","flow-node-inventory:supported":"","flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false}}]}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:27.129606" elapsed="0.002426"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:27.129383" elapsed="0.002691"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:27.129365" elapsed="0.002734"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:27.134753" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:27.132416" elapsed="0.002385"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:27.132171" elapsed="0.002680"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:27.132139" elapsed="0.002748"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:50:27.135737" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:50:27.135194" elapsed="0.000581"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:27.136223" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:27.135873" elapsed="0.000430"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:27.137016" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:27.136558" elapsed="0.000494"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:27.136336" elapsed="0.000764"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:27.135848" elapsed="0.001282"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:50:27.138012" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:50:27.137374" elapsed="0.000677"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:27.138507" elapsed="0.000029"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:27.138173" elapsed="0.000411"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:27.139271" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:27.138836" elapsed="0.000471"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:27.138618" elapsed="0.000737"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:27.138126" elapsed="0.001259"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:50:27.139591" elapsed="0.000473"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:50:27.140702" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:50:27.140311" elapsed="0.000427"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:50:27.140948" elapsed="0.003288"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:50:27.128942" elapsed="0.015384"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-08T00:50:27.144570" elapsed="0.000038"/>
</return>
<status status="PASS" start="2026-04-08T00:50:27.144423" elapsed="0.000232"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:27.144397" elapsed="0.000291"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:27.145115" elapsed="0.000110"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-08T00:50:27.145363" elapsed="0.000039"/>
</return>
<msg time="2026-04-08T00:50:27.150820" level="INFO">${response_text} = {"opendaylight-inventory:node-connector":[{"id":"openflow:1:1","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed"...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${access}</arg>
<arg>session=${session}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:50:27.113085" elapsed="0.037783"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:50:27.150940" elapsed="0.000041"/>
</return>
<msg time="2026-04-08T00:50:27.151154" level="INFO">${data} = {"opendaylight-inventory:node-connector":[{"id":"openflow:1:1","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed"...</msg>
<var>${data}</var>
<arg>uri=${uri}</arg>
<arg>member_index=${index}</arg>
<doc>Send a GET with the supplied uri to member ${member_index}.</doc>
<status status="PASS" start="2026-04-08T00:50:27.111345" elapsed="0.039868"/>
</kw>
<kw name="Check Item Occurrence" owner="Utils">
<for flavor="IN">
<iter>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T00:50:27.152859" level="INFO">Item found from container 0 times.</msg>
<arg>${string}</arg>
<arg>${item}</arg>
<arg>${dictionary_item_occurrence}[${item}]</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="PASS" start="2026-04-08T00:50:27.152324" elapsed="0.000630"/>
</kw>
<var name="${item}">"link-down":true</var>
<status status="PASS" start="2026-04-08T00:50:27.152091" elapsed="0.000919"/>
</iter>
<var>${item}</var>
<value>@{dictionary_item_occurrence}</value>
<status status="PASS" start="2026-04-08T00:50:27.151906" elapsed="0.001145"/>
</for>
<arg>${data}</arg>
<arg>${dictionary}</arg>
<doc>Check string for occurrences of items expressed in a list of dictionaries {item=occurrences}. 0 occurences means item is not present.</doc>
<status status="PASS" start="2026-04-08T00:50:27.151535" elapsed="0.001590"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T00:50:27.107048" elapsed="0.046144"/>
</iter>
<iter>
<kw name="Get_From_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:27.159010" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:27.158706" elapsed="0.000331"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:50:27.159082" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:50:27.159246" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:50:27.158351" elapsed="0.000957"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:27.165645" level="INFO">/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:27.165394" elapsed="0.000326"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:27.166136" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:27.165889" elapsed="0.000308"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:50:27.179009" level="INFO">GET Request : url=http://10.30.170.131:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0evogeryo91251obsb096nsda10.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:50:27.179208" level="INFO">GET Response : url=http://10.30.170.131:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '609'} 
 body={"opendaylight-inventory:node-connector":[{"id":"openflow:1:1","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:maximum-speed":0,"flow-node-inventory:reason":"update","flow-node-inventory:configuration":"","flow-node-inventory:port-number":1,"flow-node-inventory:hardware-address":"c6:0c:45:fe:a3:df","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s1-eth1","flow-node-inventory:supported":"","flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false}}]} 
 </msg>
<msg time="2026-04-08T00:50:27.179346" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:50:27.168196" elapsed="0.011186"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:27.166266" elapsed="0.013174"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:27.179685" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:27.179476" elapsed="0.000297"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:27.166247" elapsed="0.013555"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:27.184691" level="INFO">{"opendaylight-inventory:node-connector":[{"id":"openflow:1:1","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:maximum-speed":0,"flow-node-inventory:reason":"update","flow-node-inventory:configuration":"","flow-node-inventory:port-number":1,"flow-node-inventory:hardware-address":"c6:0c:45:fe:a3:df","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s1-eth1","flow-node-inventory:supported":"","flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false}}]}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:27.181212" elapsed="0.003552"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:27.180884" elapsed="0.003928"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:27.180858" elapsed="0.003989"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:27.188304" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:27.185255" elapsed="0.003114"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:27.184925" elapsed="0.003491"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:27.184902" elapsed="0.003549"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:50:27.189211" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:50:27.188671" elapsed="0.000580"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:27.189710" elapsed="0.000032"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:27.189349" elapsed="0.000445"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:27.190337" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:27.190021" elapsed="0.000343"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:27.189834" elapsed="0.000566"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:27.189324" elapsed="0.001097"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:50:27.190936" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:50:27.190578" elapsed="0.000384"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:27.191279" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:27.191031" elapsed="0.000305"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:27.191815" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:27.191523" elapsed="0.000318"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:27.191359" elapsed="0.000517"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:27.191013" elapsed="0.000884"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:50:27.192043" elapsed="0.000358"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:50:27.192867" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:50:27.192598" elapsed="0.000296"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:50:27.193044" elapsed="0.002199"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:50:27.180301" elapsed="0.015012"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-08T00:50:27.195487" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-08T00:50:27.195382" elapsed="0.000164"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:27.195364" elapsed="0.000206"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:27.195714" elapsed="0.000022"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-08T00:50:27.195784" elapsed="0.000015"/>
</return>
<msg time="2026-04-08T00:50:27.197987" level="INFO">${response_text} = {"opendaylight-inventory:node-connector":[{"id":"openflow:1:1","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed"...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${access}</arg>
<arg>session=${session}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:50:27.159638" elapsed="0.038379"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:50:27.198068" elapsed="0.000027"/>
</return>
<msg time="2026-04-08T00:50:27.198235" level="INFO">${data} = {"opendaylight-inventory:node-connector":[{"id":"openflow:1:1","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed"...</msg>
<var>${data}</var>
<arg>uri=${uri}</arg>
<arg>member_index=${index}</arg>
<doc>Send a GET with the supplied uri to member ${member_index}.</doc>
<status status="PASS" start="2026-04-08T00:50:27.157826" elapsed="0.040435"/>
</kw>
<kw name="Check Item Occurrence" owner="Utils">
<for flavor="IN">
<iter>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T00:50:27.199436" level="INFO">Item found from container 0 times.</msg>
<arg>${string}</arg>
<arg>${item}</arg>
<arg>${dictionary_item_occurrence}[${item}]</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="PASS" start="2026-04-08T00:50:27.199029" elapsed="0.000472"/>
</kw>
<var name="${item}">"link-down":true</var>
<status status="PASS" start="2026-04-08T00:50:27.198877" elapsed="0.000664"/>
</iter>
<var>${item}</var>
<value>@{dictionary_item_occurrence}</value>
<status status="PASS" start="2026-04-08T00:50:27.198749" elapsed="0.000821"/>
</for>
<arg>${data}</arg>
<arg>${dictionary}</arg>
<doc>Check string for occurrences of items expressed in a list of dictionaries {item=occurrences}. 0 occurences means item is not present.</doc>
<status status="PASS" start="2026-04-08T00:50:27.198491" elapsed="0.001130"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T00:50:27.153317" elapsed="0.046338"/>
</iter>
<iter>
<kw name="Get_From_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:27.204978" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:27.204681" elapsed="0.000323"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:50:27.205049" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:50:27.205212" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:50:27.204333" elapsed="0.000905"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:27.211648" level="INFO">/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:27.211400" elapsed="0.000294"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:27.212089" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:27.211849" elapsed="0.000283"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:50:27.225437" level="INFO">GET Request : url=http://10.30.171.110:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node09orwbuy1e81xg3wze7ww55ua0.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:50:27.225634" level="INFO">GET Response : url=http://10.30.171.110:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '609'} 
 body={"opendaylight-inventory:node-connector":[{"id":"openflow:1:1","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:maximum-speed":0,"flow-node-inventory:reason":"update","flow-node-inventory:configuration":"","flow-node-inventory:port-number":1,"flow-node-inventory:hardware-address":"c6:0c:45:fe:a3:df","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s1-eth1","flow-node-inventory:supported":"","flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false}}]} 
 </msg>
<msg time="2026-04-08T00:50:27.225771" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:50:27.214449" elapsed="0.011365"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:27.212221" elapsed="0.013746"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:27.226253" elapsed="0.000033"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:27.226015" elapsed="0.000332"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:27.212202" elapsed="0.014174"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:27.230994" level="INFO">{"opendaylight-inventory:node-connector":[{"id":"openflow:1:1","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:maximum-speed":0,"flow-node-inventory:reason":"update","flow-node-inventory:configuration":"","flow-node-inventory:port-number":1,"flow-node-inventory:hardware-address":"c6:0c:45:fe:a3:df","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s1-eth1","flow-node-inventory:supported":"","flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false}}]}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:27.227770" elapsed="0.003295"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:27.227465" elapsed="0.003648"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:27.227439" elapsed="0.003707"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:27.234620" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:27.231553" elapsed="0.003131"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:27.231246" elapsed="0.003485"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:27.231223" elapsed="0.003542"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:50:27.235525" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:50:27.234987" elapsed="0.000576"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:27.235985" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:27.235660" elapsed="0.000405"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:27.236756" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:27.236341" elapsed="0.000450"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:27.236097" elapsed="0.000748"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:27.235635" elapsed="0.001240"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:50:27.237632" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:50:27.237092" elapsed="0.000578"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:27.238145" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:27.237766" elapsed="0.000483"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:27.238921" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:27.238505" elapsed="0.000452"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:27.238282" elapsed="0.000724"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:27.237741" elapsed="0.001295"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:50:27.239261" elapsed="0.000476"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:50:27.240358" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:50:27.239962" elapsed="0.000432"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:50:27.240603" elapsed="0.003090"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:50:27.226855" elapsed="0.016925"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-08T00:50:27.244070" elapsed="0.000037"/>
</return>
<status status="PASS" start="2026-04-08T00:50:27.243897" elapsed="0.000255"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:27.243866" elapsed="0.000342"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:27.244414" elapsed="0.000030"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-08T00:50:27.244511" elapsed="0.000020"/>
</return>
<msg time="2026-04-08T00:50:27.247089" level="INFO">${response_text} = {"opendaylight-inventory:node-connector":[{"id":"openflow:1:1","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed"...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${access}</arg>
<arg>session=${session}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:50:27.205557" elapsed="0.041561"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:50:27.247223" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:50:27.247380" level="INFO">${data} = {"opendaylight-inventory:node-connector":[{"id":"openflow:1:1","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed"...</msg>
<var>${data}</var>
<arg>uri=${uri}</arg>
<arg>member_index=${index}</arg>
<doc>Send a GET with the supplied uri to member ${member_index}.</doc>
<status status="PASS" start="2026-04-08T00:50:27.203790" elapsed="0.043617"/>
</kw>
<kw name="Check Item Occurrence" owner="Utils">
<for flavor="IN">
<iter>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T00:50:27.248559" level="INFO">Item found from container 0 times.</msg>
<arg>${string}</arg>
<arg>${item}</arg>
<arg>${dictionary_item_occurrence}[${item}]</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="PASS" start="2026-04-08T00:50:27.248189" elapsed="0.000436"/>
</kw>
<var name="${item}">"link-down":true</var>
<status status="PASS" start="2026-04-08T00:50:27.248020" elapsed="0.000645"/>
</iter>
<var>${item}</var>
<value>@{dictionary_item_occurrence}</value>
<status status="PASS" start="2026-04-08T00:50:27.247891" elapsed="0.000804"/>
</for>
<arg>${data}</arg>
<arg>${dictionary}</arg>
<doc>Check string for occurrences of items expressed in a list of dictionaries {item=occurrences}. 0 occurences means item is not present.</doc>
<status status="PASS" start="2026-04-08T00:50:27.247631" elapsed="0.001117"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T00:50:27.199741" elapsed="0.049041"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-08T00:50:27.106911" elapsed="0.141899"/>
</for>
<arg>uri=${operational_port_1}</arg>
<arg>dictionary=${dictionary}</arg>
<arg>member_index_list=${controller_index_list}</arg>
<doc>Send a GET with the supplied uri to all or some members defined in ${member_index_list}.
Then check received for occurrences of items expressed in a dictionary {'"link-down":true': '0'}.</doc>
<status status="PASS" start="2026-04-08T00:50:27.104663" elapsed="0.144196"/>
</kw>
<arg>5s</arg>
<arg>1s</arg>
<arg>ClusterManagement.Check_Item_Occurrence_Member_List_Or_All</arg>
<arg>uri=${operational_port_1}</arg>
<arg>dictionary=${dictionary}</arg>
<arg>member_index_list=${controller_index_list}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-08T00:50:27.099791" elapsed="0.149121"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-08T00:50:27.249462" level="INFO">${dictionary} = {'openflow:1': '21', 'openflow:2': '19', 'openflow:3': '19'}</msg>
<var>${dictionary}</var>
<arg>openflow:1=21</arg>
<arg>openflow:2=19</arg>
<arg>openflow:3=19</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-08T00:50:27.249106" elapsed="0.000396"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Check_Item_Occurrence_Member_List_Or_All" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:50:27.257109" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:50:27.256730" elapsed="0.000406"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:50:27.257638" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:50:27.257312" elapsed="0.000352"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:50:27.257709" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:50:27.257862" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:50:27.256359" elapsed="0.001528"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_From_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:27.263224" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:27.262911" elapsed="0.000340"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:50:27.263297" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:50:27.263441" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:50:27.262568" elapsed="0.000898"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:27.269655" level="INFO">/rests/data/network-topology:network-topology?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:27.269384" elapsed="0.000316"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:27.270090" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:27.269851" elapsed="0.000282"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:50:27.279178" level="INFO">GET Request : url=http://10.30.170.48:8181/rests/data/network-topology:network-topology?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01nfu2ssrokr1es5zgka78rw970.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:50:27.279398" level="INFO">GET Response : url=http://10.30.170.48:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '3149'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"},{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:3']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:1:1","dest-node":"openflow:1"}},{"link-id":"openflow:3:3","source":{"source-node":"openflow:3","source-tp":"openflow:3:3"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:1:1","source":{"source-node":"openflow:1","source-tp":"openflow:1:1"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:3:3","dest-node":"openflow:3"}}]}]}} 
 </msg>
<msg time="2026-04-08T00:50:27.279562" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:50:27.272125" elapsed="0.007464"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:27.270218" elapsed="0.009413"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:27.279812" elapsed="0.000028"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:27.279657" elapsed="0.000256"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:27.270198" elapsed="0.009751"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:27.284915" level="INFO">{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"},{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:3']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:1:1","dest-node":"openflow:1"}},{"link-id":"openflow:3:3","source":{"source-node":"openflow:3","source-tp":"openflow:3:3"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:1:1","source":{"source-node":"openflow:1","source-tp":"openflow:1:1"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:3:3","dest-node":"openflow:3"}}]}]}}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:27.281378" elapsed="0.003633"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:27.281051" elapsed="0.004009"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:27.281024" elapsed="0.004070"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:27.288583" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:27.285522" elapsed="0.003124"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:27.285195" elapsed="0.003499"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:27.285149" elapsed="0.003579"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:50:27.289529" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:50:27.288954" elapsed="0.000614"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:27.290017" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:27.289668" elapsed="0.000409"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:27.290583" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:27.290279" elapsed="0.000331"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:27.290101" elapsed="0.000545"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:27.289641" elapsed="0.001026"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:50:27.291205" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:50:27.290826" elapsed="0.000407"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:27.291538" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:27.291303" elapsed="0.000292"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:27.292068" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:27.291776" elapsed="0.000318"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:27.291618" elapsed="0.000510"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:27.291285" elapsed="0.000864"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:50:27.292313" elapsed="0.000338"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:50:27.293115" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:50:27.292844" elapsed="0.000297"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:50:27.293310" elapsed="0.002207"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:50:27.280463" elapsed="0.015116"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-08T00:50:27.295753" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-08T00:50:27.295648" elapsed="0.000164"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:27.295630" elapsed="0.000205"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:27.295981" elapsed="0.000021"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-08T00:50:27.296050" elapsed="0.000014"/>
</return>
<msg time="2026-04-08T00:50:27.298353" level="INFO">${response_text} = {"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='o...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${access}</arg>
<arg>session=${session}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:50:27.263784" elapsed="0.034598"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:50:27.298433" elapsed="0.000027"/>
</return>
<msg time="2026-04-08T00:50:27.298581" level="INFO">${data} = {"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='o...</msg>
<var>${data}</var>
<arg>uri=${uri}</arg>
<arg>member_index=${index}</arg>
<doc>Send a GET with the supplied uri to member ${member_index}.</doc>
<status status="PASS" start="2026-04-08T00:50:27.262074" elapsed="0.036533"/>
</kw>
<kw name="Check Item Occurrence" owner="Utils">
<for flavor="IN">
<iter>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T00:50:27.299775" level="INFO">Item found from container 21 times.</msg>
<arg>${string}</arg>
<arg>${item}</arg>
<arg>${dictionary_item_occurrence}[${item}]</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="PASS" start="2026-04-08T00:50:27.299396" elapsed="0.000458"/>
</kw>
<var name="${item}">openflow:1</var>
<status status="PASS" start="2026-04-08T00:50:27.299240" elapsed="0.000653"/>
</iter>
<iter>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T00:50:27.300507" level="INFO">Item found from container 19 times.</msg>
<arg>${string}</arg>
<arg>${item}</arg>
<arg>${dictionary_item_occurrence}[${item}]</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="PASS" start="2026-04-08T00:50:27.300126" elapsed="0.000458"/>
</kw>
<var name="${item}">openflow:2</var>
<status status="PASS" start="2026-04-08T00:50:27.299973" elapsed="0.000651"/>
</iter>
<iter>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T00:50:27.301239" level="INFO">Item found from container 19 times.</msg>
<arg>${string}</arg>
<arg>${item}</arg>
<arg>${dictionary_item_occurrence}[${item}]</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="PASS" start="2026-04-08T00:50:27.300854" elapsed="0.000462"/>
</kw>
<var name="${item}">openflow:3</var>
<status status="PASS" start="2026-04-08T00:50:27.300702" elapsed="0.000653"/>
</iter>
<var>${item}</var>
<value>@{dictionary_item_occurrence}</value>
<status status="PASS" start="2026-04-08T00:50:27.299093" elapsed="0.002291"/>
</for>
<arg>${data}</arg>
<arg>${dictionary}</arg>
<doc>Check string for occurrences of items expressed in a list of dictionaries {item=occurrences}. 0 occurences means item is not present.</doc>
<status status="PASS" start="2026-04-08T00:50:27.298831" elapsed="0.002633"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T00:50:27.258068" elapsed="0.043431"/>
</iter>
<iter>
<kw name="Get_From_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:27.306773" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:27.306472" elapsed="0.000327"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:50:27.306850" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:50:27.306996" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:50:27.306113" elapsed="0.000908"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:27.313488" level="INFO">/rests/data/network-topology:network-topology?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:27.313209" elapsed="0.000326"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:27.313934" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:27.313690" elapsed="0.000288"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:50:27.329486" level="INFO">GET Request : url=http://10.30.170.131:8181/rests/data/network-topology:network-topology?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0evogeryo91251obsb096nsda10.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:50:27.329837" level="INFO">GET Response : url=http://10.30.170.131:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '3149'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"},{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:3']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:1:1","dest-node":"openflow:1"}},{"link-id":"openflow:3:3","source":{"source-node":"openflow:3","source-tp":"openflow:3:3"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:1:1","source":{"source-node":"openflow:1","source-tp":"openflow:1:1"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:3:3","dest-node":"openflow:3"}}]}]}} 
 </msg>
<msg time="2026-04-08T00:50:27.330107" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:50:27.316170" elapsed="0.013977"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:27.314049" elapsed="0.016189"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:27.330519" elapsed="0.000032"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:27.330281" elapsed="0.000333"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:27.314029" elapsed="0.016617"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:27.335839" level="INFO">{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"},{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:3']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:1:1","dest-node":"openflow:1"}},{"link-id":"openflow:3:3","source":{"source-node":"openflow:3","source-tp":"openflow:3:3"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:1:1","source":{"source-node":"openflow:1","source-tp":"openflow:1:1"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:3:3","dest-node":"openflow:3"}}]}]}}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:27.332218" elapsed="0.003722"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:27.331862" elapsed="0.004129"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:27.331833" elapsed="0.004194"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:27.339745" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:27.336465" elapsed="0.003346"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:27.336107" elapsed="0.003755"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:27.336084" elapsed="0.003814"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:50:27.340762" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:50:27.340174" elapsed="0.000628"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:27.341273" elapsed="0.000032"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:27.340903" elapsed="0.000472"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:27.342098" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:27.341655" elapsed="0.000481"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:27.341411" elapsed="0.000799"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:27.340877" elapsed="0.001366"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:50:27.343007" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:50:27.342478" elapsed="0.000567"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:27.343515" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:27.343146" elapsed="0.000452"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:27.344320" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:27.343866" elapsed="0.000492"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:27.343633" elapsed="0.000777"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:27.343120" elapsed="0.001321"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:50:27.344665" elapsed="0.000528"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:50:27.345947" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:50:27.345519" elapsed="0.000466"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:50:27.346234" elapsed="0.003331"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:50:27.331215" elapsed="0.018446"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-08T00:50:27.349900" elapsed="0.000037"/>
</return>
<status status="PASS" start="2026-04-08T00:50:27.349764" elapsed="0.000208"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:27.349737" elapsed="0.000258"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:27.350144" elapsed="0.000037"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-08T00:50:27.350231" elapsed="0.000015"/>
</return>
<msg time="2026-04-08T00:50:27.352524" level="INFO">${response_text} = {"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='o...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${access}</arg>
<arg>session=${session}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:50:27.307362" elapsed="0.045191"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:50:27.352606" elapsed="0.000027"/>
</return>
<msg time="2026-04-08T00:50:27.352757" level="INFO">${data} = {"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='o...</msg>
<var>${data}</var>
<arg>uri=${uri}</arg>
<arg>member_index=${index}</arg>
<doc>Send a GET with the supplied uri to member ${member_index}.</doc>
<status status="PASS" start="2026-04-08T00:50:27.305630" elapsed="0.047154"/>
</kw>
<kw name="Check Item Occurrence" owner="Utils">
<for flavor="IN">
<iter>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T00:50:27.354048" level="INFO">Item found from container 21 times.</msg>
<arg>${string}</arg>
<arg>${item}</arg>
<arg>${dictionary_item_occurrence}[${item}]</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="PASS" start="2026-04-08T00:50:27.353652" elapsed="0.000479"/>
</kw>
<var name="${item}">openflow:1</var>
<status status="PASS" start="2026-04-08T00:50:27.353492" elapsed="0.000701"/>
</iter>
<iter>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T00:50:27.354796" level="INFO">Item found from container 19 times.</msg>
<arg>${string}</arg>
<arg>${item}</arg>
<arg>${dictionary_item_occurrence}[${item}]</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="PASS" start="2026-04-08T00:50:27.354433" elapsed="0.000439"/>
</kw>
<var name="${item}">openflow:2</var>
<status status="PASS" start="2026-04-08T00:50:27.354277" elapsed="0.000634"/>
</iter>
<iter>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T00:50:27.355523" level="INFO">Item found from container 19 times.</msg>
<arg>${string}</arg>
<arg>${item}</arg>
<arg>${dictionary_item_occurrence}[${item}]</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="PASS" start="2026-04-08T00:50:27.355144" elapsed="0.000456"/>
</kw>
<var name="${item}">openflow:3</var>
<status status="PASS" start="2026-04-08T00:50:27.354989" elapsed="0.000650"/>
</iter>
<var>${item}</var>
<value>@{dictionary_item_occurrence}</value>
<status status="PASS" start="2026-04-08T00:50:27.353344" elapsed="0.002325"/>
</for>
<arg>${data}</arg>
<arg>${dictionary}</arg>
<doc>Check string for occurrences of items expressed in a list of dictionaries {item=occurrences}. 0 occurences means item is not present.</doc>
<status status="PASS" start="2026-04-08T00:50:27.353030" elapsed="0.002695"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T00:50:27.301586" elapsed="0.054173"/>
</iter>
<iter>
<kw name="Get_From_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:27.361375" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:27.361041" elapsed="0.000361"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:50:27.361449" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:50:27.361597" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:50:27.360694" elapsed="0.000927"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:27.367873" level="INFO">/rests/data/network-topology:network-topology?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:27.367626" elapsed="0.000294"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:27.368336" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:27.368071" elapsed="0.000308"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:50:27.383001" level="INFO">GET Request : url=http://10.30.171.110:8181/rests/data/network-topology:network-topology?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node09orwbuy1e81xg3wze7ww55ua0.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:50:27.383545" level="INFO">GET Response : url=http://10.30.171.110:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '3149'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"},{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:3']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:1:1","dest-node":"openflow:1"}},{"link-id":"openflow:3:3","source":{"source-node":"openflow:3","source-tp":"openflow:3:3"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:1:1","source":{"source-node":"openflow:1","source-tp":"openflow:1:1"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:3:3","dest-node":"openflow:3"}}]}]}} 
 </msg>
<msg time="2026-04-08T00:50:27.383921" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:50:27.370423" elapsed="0.013725"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:27.368448" elapsed="0.015827"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:27.384678" elapsed="0.000049"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:27.384338" elapsed="0.000483"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:27.368429" elapsed="0.016438"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:27.392681" level="INFO">{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"},{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:3']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:1:1","dest-node":"openflow:1"}},{"link-id":"openflow:3:3","source":{"source-node":"openflow:3","source-tp":"openflow:3:3"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:1:1","source":{"source-node":"openflow:1","source-tp":"openflow:1:1"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:3:3","dest-node":"openflow:3"}}]}]}}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:27.387208" elapsed="0.005626"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:27.386689" elapsed="0.006222"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:27.386647" elapsed="0.006319"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:27.395939" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:27.393652" elapsed="0.002333"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:27.393089" elapsed="0.002931"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:27.393052" elapsed="0.002992"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:50:27.396660" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:50:27.396243" elapsed="0.000444"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:27.396997" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:27.396757" elapsed="0.000297"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:27.397574" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:27.397268" elapsed="0.000332"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:27.397077" elapsed="0.000559"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:27.396739" elapsed="0.000918"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:50:27.398195" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:50:27.397817" elapsed="0.000405"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:27.398524" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:27.398293" elapsed="0.000288"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:27.399054" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:27.398761" elapsed="0.000319"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:27.398604" elapsed="0.000512"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:27.398275" elapsed="0.000861"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:50:27.399314" elapsed="0.000350"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:50:27.400186" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:50:27.399864" elapsed="0.000350"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:50:27.400370" elapsed="0.002392"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:50:27.385709" elapsed="0.017119"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-08T00:50:27.403005" elapsed="0.000035"/>
</return>
<status status="PASS" start="2026-04-08T00:50:27.402897" elapsed="0.000178"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:27.402879" elapsed="0.000219"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:27.403262" elapsed="0.000022"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-08T00:50:27.403334" elapsed="0.000014"/>
</return>
<msg time="2026-04-08T00:50:27.405638" level="INFO">${response_text} = {"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='o...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${access}</arg>
<arg>session=${session}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:50:27.361952" elapsed="0.043715"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:50:27.405718" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:50:27.405870" level="INFO">${data} = {"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='o...</msg>
<var>${data}</var>
<arg>uri=${uri}</arg>
<arg>member_index=${index}</arg>
<doc>Send a GET with the supplied uri to member ${member_index}.</doc>
<status status="PASS" start="2026-04-08T00:50:27.360195" elapsed="0.045701"/>
</kw>
<kw name="Check Item Occurrence" owner="Utils">
<for flavor="IN">
<iter>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T00:50:27.407108" level="INFO">Item found from container 21 times.</msg>
<arg>${string}</arg>
<arg>${item}</arg>
<arg>${dictionary_item_occurrence}[${item}]</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="PASS" start="2026-04-08T00:50:27.406720" elapsed="0.000487"/>
</kw>
<var name="${item}">openflow:1</var>
<status status="PASS" start="2026-04-08T00:50:27.406566" elapsed="0.000682"/>
</iter>
<iter>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T00:50:27.407849" level="INFO">Item found from container 19 times.</msg>
<arg>${string}</arg>
<arg>${item}</arg>
<arg>${dictionary_item_occurrence}[${item}]</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="PASS" start="2026-04-08T00:50:27.407484" elapsed="0.000442"/>
</kw>
<var name="${item}">openflow:2</var>
<status status="PASS" start="2026-04-08T00:50:27.407330" elapsed="0.000635"/>
</iter>
<iter>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T00:50:27.408581" level="INFO">Item found from container 19 times.</msg>
<arg>${string}</arg>
<arg>${item}</arg>
<arg>${dictionary_item_occurrence}[${item}]</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="PASS" start="2026-04-08T00:50:27.408215" elapsed="0.000445"/>
</kw>
<var name="${item}">openflow:3</var>
<status status="PASS" start="2026-04-08T00:50:27.408044" elapsed="0.000655"/>
</iter>
<var>${item}</var>
<value>@{dictionary_item_occurrence}</value>
<status status="PASS" start="2026-04-08T00:50:27.406422" elapsed="0.002306"/>
</for>
<arg>${data}</arg>
<arg>${dictionary}</arg>
<doc>Check string for occurrences of items expressed in a list of dictionaries {item=occurrences}. 0 occurences means item is not present.</doc>
<status status="PASS" start="2026-04-08T00:50:27.406134" elapsed="0.002650"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T00:50:27.355847" elapsed="0.052971"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-08T00:50:27.257937" elapsed="0.150911"/>
</for>
<arg>uri=${RFC8040_OPERATIONAL_TOPO_API}</arg>
<arg>dictionary=${dictionary}</arg>
<arg>member_index_list=${controller_index_list}</arg>
<doc>Send a GET with the supplied uri to all or some members defined in ${member_index_list}.
Then check received for occurrences of items expressed in a dictionary {'openflow:1': '21', 'openflow:2': '19', 'openflow:3': '19'}.</doc>
<status status="PASS" start="2026-04-08T00:50:27.255785" elapsed="0.153117"/>
</kw>
<arg>10s</arg>
<arg>1s</arg>
<arg>ClusterManagement.Check_Item_Occurrence_Member_List_Or_All</arg>
<arg>uri=${RFC8040_OPERATIONAL_TOPO_API}</arg>
<arg>dictionary=${dictionary}</arg>
<arg>member_index_list=${controller_index_list}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-08T00:50:27.249695" elapsed="0.159266"/>
</kw>
<doc>Take the link up and verify port status in all instances in ${controller_index_list}.</doc>
<status status="PASS" start="2026-04-08T00:50:27.079925" elapsed="0.329104"/>
</kw>
<doc>Take the link up and verify port status in all instances.</doc>
<status status="PASS" start="2026-04-08T00:50:27.075378" elapsed="0.333789"/>
</test>
<test id="s1-s1-t18" name="Kill Owner Instance" line="104">
<kw name="Kill_Single_Member" owner="ClusterManagement">
<msg time="2026-04-08T00:50:27.414475" level="FAIL">Variable '${original_owner}' not found.</msg>
<arg>${original_owner}</arg>
<doc>Convenience keyword that kills the specified member of the cluster.
The KW will return a list of available members: ${updated index_list}=${original_index_list}-${member}</doc>
<status status="FAIL" start="2026-04-08T00:50:27.410390" elapsed="0.004126">Variable '${original_owner}' not found.</status>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<arg>${new_cluster_list}</arg>
<arg>${original_successor_list}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:27.414696" elapsed="0.000021"/>
</kw>
<doc>Kill Owner Instance and verify it is dead</doc>
<status status="FAIL" start="2026-04-08T00:50:27.409707" elapsed="0.005146">Variable '${original_owner}' not found.</status>
</test>
<test id="s1-s1-t19" name="Check Shards Status After Fail" line="109">
<kw name="Check OpenFlow Shards Status After Cluster Event" owner="ClusterOpenFlow">
<msg time="2026-04-08T00:50:27.420205" level="FAIL">Variable '${new_cluster_list}' not found.</msg>
<arg>${new_cluster_list}</arg>
<doc>Check Shards Status after some cluster event.</doc>
<status status="FAIL" start="2026-04-08T00:50:27.415988" elapsed="0.004305">Variable '${new_cluster_list}' not found.</status>
</kw>
<doc>Create original cluster list and check Status for all shards in OpenFlow application.</doc>
<status status="FAIL" start="2026-04-08T00:50:27.415366" elapsed="0.005061">Variable '${new_cluster_list}' not found.</status>
</test>
<test id="s1-s1-t20" name="Check Entity Owner Status And Find Owner and Successor After Fail" line="113">
<kw name="Get OpenFlow Entity Owner Status For One Device" owner="ClusterOpenFlow">
<msg time="2026-04-08T00:50:27.432995" level="FAIL">Variable '${original_successor}' not found.</msg>
<var>${new_owner}</var>
<var>${new_successor_list}</var>
<arg>openflow:1</arg>
<arg>${original_successor}</arg>
<arg>${new_cluster_list}</arg>
<doc>Check Entity Owner Status and identify owner and successors for the device ${device}. Request is sent to controller ${controller_index}.</doc>
<status status="FAIL" start="2026-04-08T00:50:27.429095" elapsed="0.003938">Variable '${original_successor}' not found.</status>
</kw>
<kw name="Get From List" owner="Collections">
<var>${new_successor}</var>
<arg>${new_successor_list}</arg>
<arg>0</arg>
<doc>Returns the value specified with an ``index`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:27.433235" elapsed="0.000022"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<arg>${new_owner}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:27.433417" elapsed="0.000020"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<arg>${new_successor}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:27.433585" elapsed="0.000020"/>
</kw>
<doc>Check Entity Owner Status and identify owner and successor.</doc>
<status status="FAIL" start="2026-04-08T00:50:27.420981" elapsed="0.012743">Variable '${original_successor}' not found.</status>
</test>
<test id="s1-s1-t21" name="Check Network Operational Information After Fail" line="123">
<kw name="Check OpenFlow Network Operational Information For Sample Topology" owner="ClusterOpenFlow">
<msg time="2026-04-08T00:50:27.442783" level="FAIL">Variable '${new_cluster_list}' not found.</msg>
<arg>${new_cluster_list}</arg>
<doc>Check devices in tree,2 are in operational inventory and topology in all instances in ${controller_index_list}.
Inventory should show 1x node_id per device 1x node_id per connector. Topology should show 2x node_id per device + 3x node_id per connector
+ 5x node_id per link termination. TODO: A Keyword that can calculate this based on mininet topology.</doc>
<status status="FAIL" start="2026-04-08T00:50:27.438952" elapsed="0.003869">Variable '${new_cluster_list}' not found.</status>
</kw>
<doc>Check devices in operational inventory and topology in all cluster instances.</doc>
<status status="FAIL" start="2026-04-08T00:50:27.434087" elapsed="0.008863">Variable '${new_cluster_list}' not found.</status>
</test>
<test id="s1-s1-t22" name="Add Configuration In Owner and Verify After Fail" line="127">
<kw name="Add Sample Flow And Verify" owner="ClusterOpenFlow">
<msg time="2026-04-08T00:50:27.455494" level="FAIL">Variable '${new_owner}' not found.</msg>
<arg>${new_owner}</arg>
<arg>${new_cluster_list}</arg>
<doc>Add sample flow in ${controller_index} and verify it gets applied in all instances in ${controller_index_list}.</doc>
<status status="FAIL" start="2026-04-08T00:50:27.451915" elapsed="0.003616">Variable '${new_owner}' not found.</status>
</kw>
<doc>Add Flow in Owner and verify it gets applied from all instances.</doc>
<status status="FAIL" start="2026-04-08T00:50:27.443379" elapsed="0.012283">Variable '${new_owner}' not found.</status>
</test>
<test id="s1-s1-t23" name="Modify Configuration In Owner and Verify After Fail" line="131">
<kw name="Modify Sample Flow And Verify" owner="ClusterOpenFlow">
<msg time="2026-04-08T00:50:27.468342" level="FAIL">Variable '${new_owner}' not found.</msg>
<arg>${new_owner}</arg>
<arg>${new_cluster_list}</arg>
<doc>Modify sample flow in ${controller_index} and verify it gets applied in all instances in ${controller_index_list}.</doc>
<status status="FAIL" start="2026-04-08T00:50:27.464780" elapsed="0.003599">Variable '${new_owner}' not found.</status>
</kw>
<doc>Modify Flow in Owner and verify it gets applied from all instances.</doc>
<status status="FAIL" start="2026-04-08T00:50:27.456146" elapsed="0.012363">Variable '${new_owner}' not found.</status>
</test>
<test id="s1-s1-t24" name="Delete Configuration In Owner and Verify After Fail" line="135">
<kw name="Delete Sample Flow And Verify" owner="ClusterOpenFlow">
<msg time="2026-04-08T00:50:27.473510" level="FAIL">Variable '${new_owner}' not found.</msg>
<arg>${new_owner}</arg>
<arg>${new_cluster_list}</arg>
<doc>Delete sample flow in Owner and verify it gets removed from all instances.</doc>
<status status="FAIL" start="2026-04-08T00:50:27.469623" elapsed="0.003927">Variable '${new_owner}' not found.</status>
</kw>
<doc>Delete Flow in Owner and verify it gets applied from all instances.</doc>
<status status="FAIL" start="2026-04-08T00:50:27.468950" elapsed="0.004733">Variable '${new_owner}' not found.</status>
</test>
<test id="s1-s1-t25" name="Add Configuration In Successor and Verify After Fail" line="139">
<kw name="Add Sample Flow And Verify" owner="ClusterOpenFlow">
<msg time="2026-04-08T00:50:27.486386" level="FAIL">Variable '${new_successor}' not found.</msg>
<arg>${new_successor}</arg>
<arg>${new_cluster_list}</arg>
<doc>Add sample flow in ${controller_index} and verify it gets applied in all instances in ${controller_index_list}.</doc>
<status status="FAIL" start="2026-04-08T00:50:27.482611" elapsed="0.003813">Variable '${new_successor}' not found.</status>
</kw>
<doc>Add Flow in Successor and verify it gets applied from all instances.</doc>
<status status="FAIL" start="2026-04-08T00:50:27.474147" elapsed="0.012407">Variable '${new_successor}' not found.</status>
</test>
<test id="s1-s1-t26" name="Modify Configuration In Successor and Verify After Fail" line="143">
<kw name="Modify Sample Flow And Verify" owner="ClusterOpenFlow">
<msg time="2026-04-08T00:50:27.499492" level="FAIL">Variable '${new_successor}' not found.</msg>
<arg>${new_successor}</arg>
<arg>${new_cluster_list}</arg>
<doc>Modify sample flow in ${controller_index} and verify it gets applied in all instances in ${controller_index_list}.</doc>
<status status="FAIL" start="2026-04-08T00:50:27.495696" elapsed="0.003834">Variable '${new_successor}' not found.</status>
</kw>
<doc>Modify Flow in Successor and verify it gets applied from all instances.</doc>
<status status="FAIL" start="2026-04-08T00:50:27.486876" elapsed="0.012784">Variable '${new_successor}' not found.</status>
</test>
<test id="s1-s1-t27" name="Delete Configuration In Successor and Verify After Fail" line="147">
<kw name="Delete Sample Flow And Verify" owner="ClusterOpenFlow">
<msg time="2026-04-08T00:50:27.504716" level="FAIL">Variable '${new_successor}' not found.</msg>
<arg>${new_successor}</arg>
<arg>${new_cluster_list}</arg>
<doc>Delete sample flow in Owner and verify it gets removed from all instances.</doc>
<status status="FAIL" start="2026-04-08T00:50:27.500625" elapsed="0.004130">Variable '${new_successor}' not found.</status>
</kw>
<doc>Delete Flow in Successor and verify it gets applied from all instances.</doc>
<status status="FAIL" start="2026-04-08T00:50:27.500014" elapsed="0.004872">Variable '${new_successor}' not found.</status>
</test>
<test id="s1-s1-t28" name="Send RPC Add to Owner and Verify After Fail" line="151">
<kw name="Send RPC Add Sample Flow And Verify" owner="ClusterOpenFlow">
<msg time="2026-04-08T00:50:27.517203" level="FAIL">Variable '${new_owner}' not found.</msg>
<arg>${new_owner}</arg>
<arg>${new_cluster_list}</arg>
<doc>Add sample flow in ${controller_index} and verify it gets applied from all instances in ${controller_index_list}.</doc>
<status status="FAIL" start="2026-04-08T00:50:27.513628" elapsed="0.003613">Variable '${new_owner}' not found.</status>
</kw>
<doc>Add Flow in Owner and verify it gets applied from all instances.</doc>
<status status="FAIL" start="2026-04-08T00:50:27.505282" elapsed="0.012130">Variable '${new_owner}' not found.</status>
</test>
<test id="s1-s1-t29" name="Send RPC Delete to Owner and Verify After Fail" line="155">
<kw name="Send RPC Delete Sample Flow And Verify" owner="ClusterOpenFlow">
<msg time="2026-04-08T00:50:27.530120" level="FAIL">Variable '${new_owner}' not found.</msg>
<arg>${new_owner}</arg>
<arg>${new_cluster_list}</arg>
<doc>Delete sample flow in ${controller_index} and verify it gets removed from all instances in ${controller_index_list}.</doc>
<status status="FAIL" start="2026-04-08T00:50:27.526567" elapsed="0.003602">Variable '${new_owner}' not found.</status>
</kw>
<doc>Delete Flow in Owner and verify it gets removed from all instances.</doc>
<status status="FAIL" start="2026-04-08T00:50:27.517898" elapsed="0.012405">Variable '${new_owner}' not found.</status>
</test>
<test id="s1-s1-t30" name="Send RPC Add to Successor and Verify After Fail" line="159">
<kw name="Send RPC Add Sample Flow And Verify" owner="ClusterOpenFlow">
<msg time="2026-04-08T00:50:27.543003" level="FAIL">Variable '${new_successor}' not found.</msg>
<arg>${new_successor}</arg>
<arg>${new_cluster_list}</arg>
<doc>Add sample flow in ${controller_index} and verify it gets applied from all instances in ${controller_index_list}.</doc>
<status status="FAIL" start="2026-04-08T00:50:27.539261" elapsed="0.003780">Variable '${new_successor}' not found.</status>
</kw>
<doc>Add Flow in Successor and verify it gets applied from all instances.</doc>
<status status="FAIL" start="2026-04-08T00:50:27.530787" elapsed="0.012396">Variable '${new_successor}' not found.</status>
</test>
<test id="s1-s1-t31" name="Send RPC Delete to Successor and Verify After Fail" line="163">
<kw name="Send RPC Delete Sample Flow And Verify" owner="ClusterOpenFlow">
<msg time="2026-04-08T00:50:27.555416" level="FAIL">Variable '${new_successor}' not found.</msg>
<arg>${new_successor}</arg>
<arg>${new_cluster_list}</arg>
<doc>Delete sample flow in ${controller_index} and verify it gets removed from all instances in ${controller_index_list}.</doc>
<status status="FAIL" start="2026-04-08T00:50:27.551641" elapsed="0.003813">Variable '${new_successor}' not found.</status>
</kw>
<doc>Delete Flow in Successor and verify it gets removed from all instances.</doc>
<status status="FAIL" start="2026-04-08T00:50:27.543438" elapsed="0.012145">Variable '${new_successor}' not found.</status>
</test>
<test id="s1-s1-t32" name="Modify Network and Verify After Fail" line="167">
<kw name="Take OpenFlow Device Link Down and Verify" owner="ClusterOpenFlow">
<msg time="2026-04-08T00:50:27.563785" level="FAIL">Variable '${new_cluster_list}' not found.</msg>
<arg>${new_cluster_list}</arg>
<doc>Take a link down and verify port status in all instances in ${controller_index_list}.</doc>
<status status="FAIL" start="2026-04-08T00:50:27.559961" elapsed="0.003863">Variable '${new_cluster_list}' not found.</status>
</kw>
<doc>Take a link down and verify port status in all instances.</doc>
<status status="FAIL" start="2026-04-08T00:50:27.555758" elapsed="0.008193">Variable '${new_cluster_list}' not found.</status>
</test>
<test id="s1-s1-t33" name="Restore Network and Verify After Fail" line="171">
<kw name="Take OpenFlow Device Link Up and Verify" owner="ClusterOpenFlow">
<msg time="2026-04-08T00:50:27.572834" level="FAIL">Variable '${new_cluster_list}' not found.</msg>
<arg>${new_cluster_list}</arg>
<doc>Take the link up and verify port status in all instances in ${controller_index_list}.</doc>
<status status="FAIL" start="2026-04-08T00:50:27.569065" elapsed="0.003830">Variable '${new_cluster_list}' not found.</status>
</kw>
<doc>Take the link up and verify port status in all instances.</doc>
<status status="FAIL" start="2026-04-08T00:50:27.564414" elapsed="0.008613">Variable '${new_cluster_list}' not found.</status>
</test>
<test id="s1-s1-t34" name="Start Old Owner Instance" line="175">
<kw name="Start_Single_Member" owner="ClusterManagement">
<msg time="2026-04-08T00:50:27.578278" level="FAIL">Variable '${original_owner}' not found.</msg>
<arg>${original_owner}</arg>
<doc>Convenience keyword that starts the specified member of the cluster.</doc>
<status status="FAIL" start="2026-04-08T00:50:27.574250" elapsed="0.004067">Variable '${original_owner}' not found.</status>
</kw>
<kw name="Report Failure Due To Bug" owner="Utils" type="TEARDOWN">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:50:27.579871" level="INFO">${test_skipped} = False</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:50:27.579079" elapsed="0.000820"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="NOT RUN" start="2026-04-08T00:50:27.580127" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:50:27.579979" elapsed="0.000206"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:27.579959" elapsed="0.000249"/>
</if>
<kw name="Comment" owner="BuiltIn">
<arg>Jira tickets are {PROJECT}-{NUMBER} while Bugzilla tickets are {NUMBER}</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:50:27.580382" elapsed="0.000216"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="Should Contain" owner="BuiltIn">
<arg>${number}</arg>
<arg>-</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-08T00:50:27.581170" elapsed="0.000302"/>
</kw>
<msg time="2026-04-08T00:50:27.581557" level="INFO">${match} = True</msg>
<var>${match}</var>
<arg>Should Contain</arg>
<arg>${number}</arg>
<arg>-</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:50:27.580759" elapsed="0.000822"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:50:27.582074" level="INFO">${bug_url} = https://jira.opendaylight.org/browse/CONTROLLER-1849</msg>
<var>${bug_url}</var>
<arg>${match}</arg>
<arg>https://jira.opendaylight.org/browse/${number}</arg>
<arg>https://bugs.opendaylight.org/show_bug.cgi?id=${number}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:50:27.581747" elapsed="0.000352"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:27.582563" level="INFO">${msg} = This test fails due to https://jira.opendaylight.org/browse/CONTROLLER-1849</msg>
<var>${msg}</var>
<arg>This test fails due to ${bug_url}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:27.582275" elapsed="0.000314"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:50:27.583029" level="INFO">${newline} = 
</msg>
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:50:27.582740" elapsed="0.000315"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<msg time="2026-04-08T00:50:27.583590" level="INFO">Set test message to:
This test fails due to https://jira.opendaylight.org/browse/CONTROLLER-1849

Variable '${original_owner}' not found.</msg>
<arg>${msg}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="PASS" start="2026-04-08T00:50:27.583223" elapsed="0.000412"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:27.584020" level="INFO">This test fails due to https://jira.opendaylight.org/browse/CONTROLLER-1849</msg>
<arg>${msg}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:27.583786" elapsed="0.000278"/>
</kw>
<if>
<branch type="IF" condition="&quot;${include_bug_in_tags}&quot;==&quot;True&quot;">
<kw name="Set Tags" owner="BuiltIn">
<msg time="2026-04-08T00:50:27.584773" level="INFO">Set tag 'https://jira.opendaylight.org/browse/CONTROLLER-1849'.</msg>
<arg>${bug_url}</arg>
<doc>Adds given ``tags`` for the current test or all tests in a suite.</doc>
<status status="PASS" start="2026-04-08T00:50:27.584423" elapsed="0.000397"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:27.584128" elapsed="0.000745"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:27.584110" elapsed="0.000789"/>
</if>
<arg>CONTROLLER-1849</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-04-08T00:50:27.578724" elapsed="0.006221"/>
</kw>
<doc>Start old Owner Instance and verify it is up</doc>
<tag>https://jira.opendaylight.org/browse/CONTROLLER-1849</tag>
<status status="FAIL" start="2026-04-08T00:50:27.573536" elapsed="0.011456">This test fails due to https://jira.opendaylight.org/browse/CONTROLLER-1849

Variable '${original_owner}' not found.</status>
</test>
<test id="s1-s1-t35" name="Check Shards Status After Recover" line="180">
<kw name="Check OpenFlow Shards Status After Cluster Event" owner="ClusterOpenFlow">
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<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-04-08T00:50:27.606831" elapsed="0.000217"/>
</kw>
<msg time="2026-04-08T00:50:27.607096" 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>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:50:27.606214" elapsed="0.000932"/>
</kw>
<arg>phosphorus</arg>
<arg>${kw_name}</arg>
<arg>@{varargs}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Compare ${lower_bound} to vanadium and in case vanadium is at least ${lower_bound},
run Collections.Remove Values From List [['inventory', 'topology', 'default'], 'entity-ownership'] {} and return its value.</doc>
<status status="PASS" start="2026-04-08T00:50:27.605746" elapsed="0.001492"/>
</kw>
<msg time="2026-04-08T00:50:27.607282" 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-04-08T00:50:27.597543" elapsed="0.009782"/>
</kw>
<arg>Collections.Remove Values From List</arg>
<arg>${SHARD_OPER_LIST}</arg>
<arg>entity-ownership</arg>
<doc>Compare phosphorus to vanadium and in case vanadium is at least phosphorus,
run ${kw_name} @{varargs} &amp;{kwargs} and return its value.</doc>
<status status="PASS" start="2026-04-08T00:50:27.597136" elapsed="0.010260"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:27.607815" 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-04-08T00:50:27.607567" elapsed="0.000291"/>
</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-04-08T00:50:27.612804" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:50:27.612413" elapsed="0.000418"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:50:27.613325" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:50:27.613001" elapsed="0.000350"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:50:27.613395" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:50:27.613547" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:50:27.612030" elapsed="0.001542"/>
</kw>
<kw name="Sort List" owner="Collections">
<arg>${index_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="PASS" start="2026-04-08T00:50:27.613724" elapsed="0.000153"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:50:27.614391" level="INFO">${ds_type} = operational</msg>
<var>${ds_type}</var>
<arg>'${shard_type}' != 'config'</arg>
<arg>operational</arg>
<arg>config</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:50:27.614035" elapsed="0.000382"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:50:27.614808" level="INFO">${leader_list} = []</msg>
<var>${leader_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:50:27.614571" elapsed="0.000263"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:50:27.615254" level="INFO">${follower_list} = []</msg>
<var>${follower_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:50:27.614978" elapsed="0.000302"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_Raft_State_Of_Shard_At_Member" owner="ClusterManagement">
<kw name="Get_Raft_Property_From_Shard_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:27.618792" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:27.617929" elapsed="0.000958"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:50:27.618968" elapsed="0.000031"/>
</return>
<msg time="2026-04-08T00:50:27.619252" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:50:27.617403" elapsed="0.001876"/>
</kw>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Get_As_Json_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:27.677258" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:27.676859" elapsed="0.000428"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:50:27.678060" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:50:27.677785" elapsed="0.000356">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-08T00:50:27.678255" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:50:27.677449" elapsed="0.000832"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:50:27.678827" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:50:27.678444" elapsed="0.000410"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T00:50:27.679153" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-08T00:50:27.679344" level="INFO">${template} = /rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T00:50:27.679015" elapsed="0.000356"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:27.679769" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:27.679524" elapsed="0.000290"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:27.680799" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:27.680512" elapsed="0.000332"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-08T00:50:27.681294" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-08T00:50:27.681004" elapsed="0.000317"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:27.681637" elapsed="0.000023"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:27.681839" elapsed="0.000024"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:27.682009" elapsed="0.000022"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-08T00:50:27.681503" elapsed="0.000563"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-08T00:50:27.681368" elapsed="0.000729"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-08T00:50:27.682142" elapsed="0.000044"/>
</return>
<msg time="2026-04-08T00:50:27.682317" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-08T00:50:27.680189" elapsed="0.002154"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:27.679882" elapsed="0.002492"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:27.682544" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:27.682399" elapsed="0.000200"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:27.679863" elapsed="0.002757"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:50:27.683221" level="INFO">${final_text} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:50:27.682759" elapsed="0.000490"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T00:50:27.683296" elapsed="0.000030"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="PASS" start="2026-04-08T00:50:27.676186" elapsed="0.007234"/>
</kw>
<msg time="2026-04-08T00:50:27.683473" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:50:27.662982" elapsed="0.020543"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:27.695036" elapsed="0.000032"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:27.706648" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:27.718329" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:27.718531" elapsed="0.000022"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:27.718708" elapsed="0.000022"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:27.719088" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:27.718943" elapsed="0.000200"/>
</branch>
<status status="NOT RUN" start="2026-04-08T00:50:27.718928" elapsed="0.000254"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:27.719323" elapsed="0.000021"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:27.719488" elapsed="0.000021"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:27.719652" elapsed="0.000020"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-08T00:50:27.718895" elapsed="0.000809"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-08T00:50:27.718790" elapsed="0.000940"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:27.719876" elapsed="0.000021"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-08T00:50:27.719951" elapsed="0.000016"/>
</return>
<msg time="2026-04-08T00:50:27.720071" level="INFO">${uri} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-08T00:50:27.658999" elapsed="0.061099"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:50:27.721501" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:50:27.721203" elapsed="0.000376">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-08T00:50:27.721671" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:50:27.720809" elapsed="0.000887"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:27.722014" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:27.721766" elapsed="0.000305"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:27.722581" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:27.722289" elapsed="0.000318"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:27.722095" elapsed="0.000546"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:27.721747" elapsed="0.000916"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:50:27.724919" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:50:27.722810" elapsed="0.002144"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-08T00:50:27.725007" elapsed="0.000031"/>
</return>
<msg time="2026-04-08T00:50:27.725178" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:50:27.720447" elapsed="0.004758"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:50:27.726450" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:50:27.726215" elapsed="0.000299">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-08T00:50:27.726607" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:50:27.725857" elapsed="0.000775"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-08T00:50:27.726837" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-08T00:50:27.726702" elapsed="0.000194"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:27.726684" elapsed="0.000236"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:27.727064" elapsed="0.000022"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:27.727250" elapsed="0.000022"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-08T00:50:27.727318" elapsed="0.000015"/>
</return>
<msg time="2026-04-08T00:50:27.729086" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:50:27.725538" elapsed="0.003575"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:27.730493" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:27.730243" elapsed="0.000295"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:27.730926" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:27.730687" elapsed="0.000281"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:50:27.744921" level="INFO">GET Request : url=http://10.30.170.48:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 path_url=/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01nfu2ssrokr1es5zgka78rw970.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:50:27.745876" level="INFO">GET Response : url=http://10.30.170.48:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Transfer-Encoding': 'chunked'} 
 body={"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","hidden-symmetric-keys","encrypted-private-keys","asymmetrically-encrypted-value-format","cms-encrypted-data-format","cleartext-private-keys","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["ssh-client-keepalives","client-ident-hostbased","client-ident-publickey","client-ident-password"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-ex... (set the log level to DEBUG or TRACE to see the full content) 
 </msg>
<msg time="2026-04-08T00:50:27.746380" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:50:27.734326" elapsed="0.012115"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:27.731036" elapsed="0.015501"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:27.746935" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:27.746598" elapsed="0.000484"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:27.731017" elapsed="0.016111"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:27.753979" level="INFO">{"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","hidden-symmetric-keys","encrypted-private-keys","asymmetrically-encrypted-value-format","cms-encrypted-data-format","cleartext-private-keys","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["ssh-client-keepalives","client-ident-hostbased","client-ident-publickey","client-ident-password"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-experimenter-types?revision=2015-10-20","namespace":"urn:opendaylight:openflowplugin:experimenter:types","conformance-type":"import"},{"name":"ietf-ip_2018-02-22","revision":"2018-02-22","schema":"/rests/modules/ietf-ip?revision=2018-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-ip","conformance-type":"import","feature":["ipv6-privacy-autoconf","ipv4-non-contiguous-netmasks"]},{"name":"ietf-tcp-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-client","conformance-type":"import","feature":["local-binding-supported","tcp-client-keepalives"]},{"name":"node-config_2014-10-15","revision":"2014-10-15","schema":"/rests/modules/node-config?revision=2014-10-15","namespace":"urn:opendaylight:module:config","conformance-type":"import"},{"name":"ietf-restconf_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf","conformance-type":"import"},{"name":"ietf-datastores_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-datastores?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-datastores","conformance-type":"import"},{"name":"ietf-yang-patch_2017-02-22","revision":"2017-02-22","schema":"/rests/modules/ietf-yang-patch?revision=2017-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-patch","conformance-type":"import"},{"name":"sal-group_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-group?revision=2013-09-18","namespace":"urn:opendaylight:group:service","conformance-type":"import"},{"name":"odl-codegen-extensions_2024-06-27","revision":"2024-06-27","schema":"/rests/modules/odl-codegen-extensions?revision=2024-06-27","namespace":"urn:opendaylight:yang:extension:codegen","conformance-type":"import"},{"name":"sal-meter_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-meter?revision=2013-09-18","namespace":"urn:opendaylight:meter:service","conformance-type":"import"},{"name":"ietf-interfaces_2018-02-20","revision":"2018-02-20","schema":"/rests/modules/ietf-interfaces?revision=2018-02-20","namespace":"urn:ietf:params:xml:ns:yang:ietf-interfaces","conformance-type":"import","feature":["pre-provisioning","if-mib","arbitrary-names"]},{"name":"opendaylight-l2-types_2013-08-27","revision":"2013-08-27","schema":"/rests/modules/opendaylight-l2-types?revision=2013-08-27","namespace":"urn:opendaylight:l2:types","conformance-type":"import"},{"name":"opendaylight-flow-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-flow-types?revision=2013-10-26","namespace":"urn:opendaylight:flow:types","conformance-type":"import"},{"name":"lldp-speaker-config_2016-05-12","revision":"2016-05-12","schema":"/rests/modules/lldp-speaker-config?revision=2016-05-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker:config","conformance-type":"import"},{"name":"aaa-cert_2015-11-26","revision":"2015-11-26","schema":"/rests/modules/aaa-cert?revision=2015-11-26","namespace":"urn:opendaylight:yang:aaa:cert","conformance-type":"import"},{"name":"openflow-action_2015-02-03","revision":"2015-02-03","schema":"/rests/modules/openflow-action?revision=2015-02-03","namespace":"urn:opendaylight:openflow:common:action","conformance-type":"import"},{"name":"openflow-approved-extensions_2016-08-02","revision":"2016-08-02","schema":"/rests/modules/openflow-approved-extensions?revision=2016-08-02","namespace":"urn:opendaylight:openflow:approved:extensions","conformance-type":"import"},{"name":"nc-notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/nc-notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netmod:notification","conformance-type":"import"},{"name":"ietf-netconf-nmda_2019-01-07","revision":"2019-01-07","schema":"/rests/modules/ietf-netconf-nmda?revision=2019-01-07","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-nmda","conformance-type":"import","feature":["with-defaults","origin"]},{"name":"ietf-tcp-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-common","conformance-type":"import","feature":["keepalives-supported"]},{"name":"network-topology_2013-10-21","revision":"2013-10-21","schema":"/rests/modules/network-topology?revision=2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:network-topology","conformance-type":"import"},{"name":"aaa-encrypt-service-config_2024-02-02","revision":"2024-02-02","schema":"/rests/modules/aaa-encrypt-service-config?revision=2024-02-02","namespace":"config:aaa:authn:encrypt:service:config","conformance-type":"import"},{"name":"openflow-instruction_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-instruction?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:instruction","conformance-type":"import"},{"name":"ietf-tls-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-client","conformance-type":"import","feature":["client-ident-x509-cert","server-auth-x509-cert"]},{"name":"opendaylight-group-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-group-statistics?revision=2013-11-11","namespace":"urn:opendaylight:group:statistics","conformance-type":"import"},{"name":"cluster-admin_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/cluster-admin?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:cluster:admin","conformance-type":"import"},{"name":"opendaylight-flow-statistics_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-flow-statistics?revision=2013-08-19","namespace":"urn:opendaylight:flow:statistics","conformance-type":"import"},{"name":"opendaylight-table-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-table-types?revision=2013-10-26","namespace":"urn:opendaylight:table:types","conformance-type":"import"},{"name":"forwarding-rules-manager-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/forwarding-rules-manager-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:forwardingrules-manager:config","conformance-type":"import"},{"name":"odl-srm-types_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-types?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:types","conformance-type":"import"},{"name":"ietf-x509-cert-to-name_2014-12-10","revision":"2014-12-10","schema":"/rests/modules/ietf-x509-cert-to-name?revision=2014-12-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-x509-cert-to-name","conformance-type":"import"},{"name":"flow-node-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-node-inventory?revision=2013-08-19","namespace":"urn:opendaylight:flow:inventory","conformance-type":"import"},{"name":"flow-errors_2013-11-16","revision":"2013-11-16","schema":"/rests/modules/flow-errors?revision=2013-11-16","namespace":"urn:opendaylight:flow:errors","conformance-type":"import"},{"name":"ietf-netconf_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:netconf:base:1.0","conformance-type":"import","feature":["xpath","url","rollback-on-error","validate","startup","candidate","confirmed-commit","writable-running"]},{"name":"iana-ssh-public-key-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-public-key-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-public-key-algs","conformance-type":"import"},{"name":"aaa-cert-mdsal_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/aaa-cert-mdsal?revision=2016-03-21","namespace":"urn:opendaylight:yang:aaa:cert:mdsal","conformance-type":"import"},{"name":"odl-device-notification_2024-02-18","revision":"2024-02-18","schema":"/rests/modules/odl-device-notification?revision=2024-02-18","namespace":"urn:opendaylight:device:notification","conformance-type":"import"},{"name":"ietf-origin_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-origin?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-origin","conformance-type":"import"},{"name":"openflow-augments_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-augments?revision=2015-02-25","namespace":"urn:opendaylight:openflow:augments","conformance-type":"import"},{"name":"iana-ssh-encryption-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-encryption-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-encryption-algs","conformance-type":"import"},{"name":"ietf-truststore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-truststore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-truststore","conformance-type":"import","feature":["inline-definitions-supported"]},{"name":"distributed-datastore-provider_2025-01-30","revision":"2025-01-30","schema":"/rests/modules/distributed-datastore-provider?revision=2025-01-30","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:distributed-datastore-provider","conformance-type":"import"},{"name":"opendaylight-group-types_2013-10-18","revision":"2013-10-18","schema":"/rests/modules/opendaylight-group-types?revision=2013-10-18","namespace":"urn:opendaylight:group:types","conformance-type":"import"},{"name":"sal-remote-augment_2023-11-03","revision":"2023-11-03","schema":"/rests/modules/sal-remote-augment?revision=2023-11-03","namespace":"urn:sal:restconf:event:subscription","conformance-type":"import"},{"name":"opendaylight-ipv6-arbitrary-bitmask-fields_2016-02-24","revision":"2016-02-24","schema":"/rests/modules/opendaylight-ipv6-arbitrary-bitmask-fields?revision=2016-02-24","namespace":"urn:opendaylight:opendaylight-ipv6-arbitrary-bitmask-fields","conformance-type":"import"},{"name":"sal-flows-batch_2016-03-14","revision":"2016-03-14","schema":"/rests/modules/sal-flows-batch?revision=2016-03-14","namespace":"urn:opendaylight:flows:service","conformance-type":"import"},{"name":"ietf-tls-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-common","conformance-type":"import","feature":["tls12","hello-params","tls13"]},{"name":"openflow-types_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-types?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:types","conformance-type":"import"},{"name":"ietf-netconf-with-defaults_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf-with-defaults?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults","conformance-type":"import"},{"name":"odl-srm-ops_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-ops?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:ops","conformance-type":"import"},{"name":"odl-general-entity_2015-09-30","revision":"2015-09-30","schema":"/rests/modules/odl-general-entity?revision=2015-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:mdsal:core:general-entity","conformance-type":"import"},{"name":"iana-ssh-key-exchange-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-key-exchange-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-key-exchange-algs","conformance-type":"import"},{"name":"node-ssl-connection-error_2019-07-23","revision":"2019-07-23","schema":"/rests/modules/node-ssl-connection-error?revision=2019-07-23","namespace":"urn:opendaylight:node-ssl-connection-error:service","conformance-type":"import"},{"name":"openflow-protocol_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-protocol?revision=2013-07-31","namespace":"urn:opendaylight:openflow:protocol","conformance-type":"import"},{"name":"ietf-udp-server_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-server?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-server","conformance-type":"import"},{"name":"ietf-keystore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-keystore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-keystore","conformance-type":"import","feature":["asymmetric-keys","inline-definitions-supported"]},{"name":"aaa_2016-12-14","revision":"2016-12-14","schema":"/rests/modules/aaa?revision=2016-12-14","namespace":"urn:opendaylight:params:xml:ns:yang:aaa","conformance-type":"import"},{"name":"aaa-cert-rpc_2015-12-15","revision":"2015-12-15","schema":"/rests/modules/aaa-cert-rpc?revision=2015-12-15","namespace":"urn:opendaylight:yang:aaa:cert:rpc","conformance-type":"import"},{"name":"system-notifications_2013-09-27","revision":"2013-09-27","schema":"/rests/modules/system-notifications?revision=2013-09-27","namespace":"urn:opendaylight:openflow:system","conformance-type":"import"},{"name":"sal-flat-batch_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/sal-flat-batch?revision=2016-03-21","namespace":"urn:opendaylight:flat-batch:service","conformance-type":"import"},{"name":"notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netconf:notification:1.0","conformance-type":"import"},{"name":"sal-remote_2014-01-14","revision":"2014-01-14","schema":"/rests/modules/sal-remote?revision=2014-01-14","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:remote","conformance-type":"import"},{"name":"yang-ext_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/yang-ext?revision=2013-07-09","namespace":"urn:opendaylight:yang:extension:yang-ext","conformance-type":"import"},{"name":"opendaylight-multipart-types_2017-01-12","revision":"2017-01-12","schema":"/rests/modules/opendaylight-multipart-types?revision=2017-01-12","namespace":"urn:opendaylight:multipart:types","conformance-type":"import"},{"name":"opendaylight-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-inventory?revision=2013-08-19","namespace":"urn:opendaylight:inventory","conformance-type":"import"},{"name":"sal-queue_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-queue?revision=2015-03-05","namespace":"urn:opendaylight:queue:service","conformance-type":"import"},{"name":"sal-groups-batch_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/sal-groups-batch?revision=2016-03-15","namespace":"urn:opendaylight:groups:service","conformance-type":"import"},{"name":"arbitrator-reconcile_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/arbitrator-reconcile?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:arbitrator-reconcile:service","conformance-type":"import"},{"name":"ietf-yang-metadata_2016-08-05","revision":"2016-08-05","schema":"/rests/modules/ietf-yang-metadata?revision=2016-08-05","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-metadata","conformance-type":"import"},{"name":"opendaylight-arbitrary-bitmask-fields_2016-01-30","revision":"2016-01-30","schema":"/rests/modules/opendaylight-arbitrary-bitmask-fields?revision=2016-01-30","namespace":"urn:opendaylight:arbitrary:bitmask:fields","conformance-type":"import"},{"name":"ietf-udp-client_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-client?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-client","conformance-type":"import","feature":["local-binding"]},{"name":"opendaylight-meter-types_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/opendaylight-meter-types?revision=2013-09-18","namespace":"urn:opendaylight:meter:types","conformance-type":"import"},{"name":"opendaylight-action-types_2013-11-12","revision":"2013-11-12","schema":"/rests/modules/opendaylight-action-types?revision=2013-11-12","namespace":"urn:opendaylight:action:types","conformance-type":"import"},{"name":"sal-role_2015-07-27","revision":"2015-07-27","schema":"/rests/modules/sal-role?revision=2015-07-27","namespace":"urn:opendaylight:role:service","conformance-type":"import"},{"name":"openflow-provider-config_2016-05-10","revision":"2016-05-10","schema":"/rests/modules/openflow-provider-config?revision=2016-05-10","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:provider:config","conformance-type":"import"},{"name":"odl-serviceutils-upgrade_2018-07-02","revision":"2018-07-02","schema":"/rests/modules/odl-serviceutils-upgrade?revision=2018-07-02","namespace":"urn:opendaylight:serviceutils:upgrade","conformance-type":"import"},{"name":"opendaylight-match-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-match-types?revision=2013-10-26","namespace":"urn:opendaylight:model:match:types","conformance-type":"import"},{"name":"ietf-restconf-server_2024-08-14","revision":"2024-08-14","schema":"/rests/modules/ietf-restconf-server?revision=2024-08-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-server","conformance-type":"import","feature":["http-listen","https-listen"]},{"name":"reconciliation-result-state_2017-07-13","revision":"2017-07-13","schema":"/rests/modules/reconciliation-result-state?revision=2017-07-13","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:rf:state","conformance-type":"import"},{"name":"onf-extensions_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/onf-extensions?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf","conformance-type":"import"},{"name":"sal-table_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/sal-table?revision=2013-10-26","namespace":"urn:opendaylight:table:service","conformance-type":"import"},{"name":"iana-http-versions_2026-02-04","revision":"2026-02-04","schema":"/rests/modules/iana-http-versions?revision=2026-02-04","namespace":"urn:ietf:params:xml:ns:yang:iana-http-versions","conformance-type":"import"},{"name":"opendaylight-direct-statistics_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/opendaylight-direct-statistics?revision=2016-05-11","namespace":"urn:opendaylight:direct:statistics","conformance-type":"import"},{"name":"opendaylight-port-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-port-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:port","conformance-type":"import"},{"name":"sal-async-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/sal-async-config?revision=2017-06-19","namespace":"urn:opendaylight:async-config:service","conformance-type":"import"},{"name":"aaa-password-service-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-password-service-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:password:service:config","conformance-type":"import"},{"name":"ietf-yang-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-yang-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-types","conformance-type":"import"},{"name":"opendaylight-queue-statistics_2013-12-16","revision":"2013-12-16","schema":"/rests/modules/opendaylight-queue-statistics?revision=2013-12-16","namespace":"urn:opendaylight:queue:statistics","conformance-type":"import"},{"name":"sal-bundle_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/sal-bundle?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf:bundle:service","conformance-type":"import"},{"name":"ietf-restconf-subscribed-notifications_2019-11-17","revision":"2019-11-17","schema":"/rests/modules/ietf-restconf-subscribed-notifications?revision=2019-11-17","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-subscribed-notifications","conformance-type":"import"},{"name":"sal-meters-batch_2016-03-16","revision":"2016-03-16","schema":"/rests/modules/sal-meters-batch?revision=2016-03-16","namespace":"urn:opendaylight:meters:service","conformance-type":"import"},{"name":"odl-entity-owners","revision":"","schema":"/rests/modules/odl-entity-owners","namespace":"urn:opendaylight:params:xml:ns:yang:controller:entity-owners","conformance-type":"import"},{"name":"sal-experimenter-mp-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-mp-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-mp-message:service","conformance-type":"import"},{"name":"packet-processing_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/packet-processing?revision=2013-07-09","namespace":"urn:opendaylight:packet:service","conformance-type":"import"},{"name":"openflow-configuration_2014-06-30","revision":"2014-06-30","schema":"/rests/modules/openflow-configuration?revision=2014-06-30","namespace":"urn:opendaylight:openflow:config","conformance-type":"import"},{"name":"odl-srm-rpcs_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-rpcs?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:rpc","conformance-type":"import"},{"name":"ietf-netconf-acm_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-netconf-acm?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-acm","conformance-type":"import"},{"name":"iana-crypt-hash_2014-08-06","revision":"2014-08-06","schema":"/rests/modules/iana-crypt-hash?revision=2014-08-06","namespace":"urn:ietf:params:xml:ns:yang:iana-crypt-hash","conformance-type":"import","feature":["crypt-hash-sha-512","crypt-hash-sha-256","crypt-hash-md5"]},{"name":"openflow-extensible-match_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-extensible-match?revision=2015-02-25","namespace":"urn:opendaylight:openflow:oxm","conformance-type":"import"}],"module-set-id":"2"}}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:27.749438" elapsed="0.004886"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:27.748913" elapsed="0.005448"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:27.748869" elapsed="0.005518"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:27.756825" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:27.754667" elapsed="0.002203"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:27.754444" elapsed="0.002461"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:27.754427" elapsed="0.002502"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:50:27.757508" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:50:27.757093" elapsed="0.000442"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:27.757839" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:27.757605" elapsed="0.000292"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:27.758396" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:27.758080" elapsed="0.000342"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:27.757920" elapsed="0.000537"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:27.757587" elapsed="0.000892"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:50:27.758998" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:50:27.758638" elapsed="0.000387"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:27.759348" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:27.759096" elapsed="0.000310"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:27.759883" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:27.759590" elapsed="0.000318"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:27.759429" elapsed="0.000515"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:27.759077" elapsed="0.000888"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:50:27.760114" elapsed="0.000362"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:50:27.760951" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:50:27.760653" elapsed="0.000324"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:50:27.761128" elapsed="0.002172"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:50:27.747925" elapsed="0.015438"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:50:27.763537" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:50:27.763432" elapsed="0.000149"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:27.763414" elapsed="0.000188"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:50:27.771781" level="INFO">${text_normalized} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:50:27.763745" elapsed="0.008067"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:50:27.771863" elapsed="0.000032"/>
</return>
<msg time="2026-04-08T00:50:27.772023" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:50:27.729429" elapsed="0.042621"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:50:27.772112" elapsed="0.000026"/>
</return>
<msg time="2026-04-08T00:50:27.772447" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="PASS" start="2026-04-08T00:50:27.629244" elapsed="0.143260"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Json_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:27.772973" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:27.772634" elapsed="0.000484"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:27.772602" elapsed="0.000581"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:50:27.773246" elapsed="0.000071"/>
</return>
<arg>session=${session}</arg>
<arg>folder=${RESTCONF_MODULES_DIR}</arg>
<arg>verify=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Add arguments sensible for JSON data, return Get_Templated response text.
Optionally, verification against JSON data (may be iterated) is called.
Only subset of JSON data is verified and returned if JMES path is specified in
file ${folder}/jmespath.expr.</doc>
<status status="PASS" start="2026-04-08T00:50:27.623539" elapsed="0.149968"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:27.619349" elapsed="0.154265"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:27.619331" elapsed="0.154309"/>
</if>
<kw name="Resolve_Shard_Type_Class" owner="ClusterManagement">
<if>
<branch type="IF" condition="'${shard_type}' == 'config'">
<return>
<value>DistributedConfigDatastore</value>
<status status="NOT RUN" start="2026-04-08T00:50:27.774543" elapsed="0.000046"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:50:27.774320" elapsed="0.000313"/>
</branch>
<branch type="ELSE IF" condition="'${shard_type}' == 'operational'">
<return>
<value>DistributedOperationalDatastore</value>
<status status="PASS" start="2026-04-08T00:50:27.774911" elapsed="0.000069"/>
</return>
<status status="PASS" start="2026-04-08T00:50:27.774690" elapsed="0.000336"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:27.774287" elapsed="0.000798"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized shard type: ${shard_type}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:27.775332" elapsed="0.000065"/>
</kw>
<msg time="2026-04-08T00:50:27.775535" level="INFO">${type_class} = DistributedOperationalDatastore</msg>
<var>${type_class}</var>
<arg>shard_type=${shard_type}</arg>
<doc>Simple lookup for class name corresponding to desired type.</doc>
<status status="PASS" start="2026-04-08T00:50:27.773905" elapsed="0.001656"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:50:27.776378" level="INFO">${cluster_index} = 1</msg>
<var>${cluster_index}</var>
<arg>${member_index}+${NODE_ROLE_INDEX_START}-1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:50:27.775731" elapsed="0.000674"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:27.777555" level="INFO">${uri} = jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-inventory-operational,type=DistributedOperationalDatastore</msg>
<var>${uri}</var>
<arg>${JOLOKIA_READ_URI}:Category=Shards,name=member-${cluster_index}-shard-${shard_name}-${shard_type},type=${type_class}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:27.776585" elapsed="0.000998"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:27.784596" level="INFO">jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-inventory-operational,type=DistributedOperationalDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:27.784299" elapsed="0.000383"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:27.785221" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:27.784926" elapsed="0.000380"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:50:27.794729" level="INFO">GET Request : url=http://10.30.170.48:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-inventory-operational,type=DistributedOperationalDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-inventory-operational,type=DistributedOperationalDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:50:27.794789" level="INFO">GET Response : url=http://10.30.170.48:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-inventory-operational,type=DistributedOperationalDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Wed, 08 Apr 2026 00:50:27 GMT', 'Expires': 'Tue, 07 Apr 2026 23:50:27 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-1-shard-inventory-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"ReadWriteTransactionCount":195,"SnapshotIndex":397,"InMemoryJournalLogSize":4,"ReplicatedToAllIndex":397,"Leader":"member-1-shard-inventory-operational","LastIndex":401,"RaftState":"Leader","LastApplied":398,"LastCommittedTransactionTime":"2026-04-08 00:50:27.105","PeerAddresses":"member-3-shard-inventory-operational: pekko:\/\/opendaylight-cluster-data@10.30.171.110:2550\/user\/shardmanager-operational\/member-3-shard-inventory-operational, member-2-shard-inventory-operational: pekko:\/\/opendaylight-cluster-data@10.30.170.131:2550\/user\/shardmanager-operational\/member-2-shard-inventory-operational","LastLogIndex":401,"LastLeadershipChangeTime":"2026-04-08 00:46:45.929","FollowerInitialSyncStatus":false,"FollowerInfo":[{"timeSinceLastActivity":"00:00:00.674","active":true,"matchIndex":398,"voting":true,"id":"member-3-shard-inventory-operational","nextIndex":399},{"timeSinceLastActivity":"00:00:00.675","active":true,"matchIndex":398,"voting":true,"id":"member-2-shard-inventory-operational","nextIndex":399}],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"528.3 μs","CurrentTerm":2,"LastTerm":2,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-inventory-operational","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":153,"TxCohortCacheSize":0,"PeerVotingStates":"member-3-shard-inventory-operational: true, member-2-shard-inventory-operational: true","LastLogTerm":2,"StatRetrievalError":null,"CommitIndex":398,"SnapshotTerm":2,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":6,"ShardName":"member-1-shard-inventory-operational","LeadershipChangeCount":1,"InMemoryJournalDataSize":523571},"timestamp":1775609427,"status":200} 
 </msg>
<msg time="2026-04-08T00:50:27.794896" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:50:27.787486" elapsed="0.007435"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:27.785451" elapsed="0.009513"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:27.795186" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:27.795010" elapsed="0.000274"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:27.785406" elapsed="0.009918"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:27.798765" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-1-shard-inventory-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"ReadWriteTransactionCount":195,"SnapshotIndex":397,"InMemoryJournalLogSize":4,"ReplicatedToAllIndex":397,"Leader":"member-1-shard-inventory-operational","LastIndex":401,"RaftState":"Leader","LastApplied":398,"LastCommittedTransactionTime":"2026-04-08 00:50:27.105","PeerAddresses":"member-3-shard-inventory-operational: pekko:\/\/opendaylight-cluster-data@10.30.171.110:2550\/user\/shardmanager-operational\/member-3-shard-inventory-operational, member-2-shard-inventory-operational: pekko:\/\/opendaylight-cluster-data@10.30.170.131:2550\/user\/shardmanager-operational\/member-2-shard-inventory-operational","LastLogIndex":401,"LastLeadershipChangeTime":"2026-04-08 00:46:45.929","FollowerInitialSyncStatus":false,"FollowerInfo":[{"timeSinceLastActivity":"00:00:00.674","active":true,"matchIndex":398,"voting":true,"id":"member-3-shard-inventory-operational","nextIndex":399},{"timeSinceLastActivity":"00:00:00.675","active":true,"matchIndex":398,"voting":true,"id":"member-2-shard-inventory-operational","nextIndex":399}],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"528.3 μs","CurrentTerm":2,"LastTerm":2,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-inventory-operational","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":153,"TxCohortCacheSize":0,"PeerVotingStates":"member-3-shard-inventory-operational: true, member-2-shard-inventory-operational: true","LastLogTerm":2,"StatRetrievalError":null,"CommitIndex":398,"SnapshotTerm":2,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":6,"ShardName":"member-1-shard-inventory-operational","LeadershipChangeCount":1,"InMemoryJournalDataSize":523571},"timestamp":1775609427,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:27.796393" elapsed="0.002436"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:27.796147" elapsed="0.002718"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:27.796128" elapsed="0.002762"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:27.801634" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:27.799184" elapsed="0.002515"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:27.798946" elapsed="0.002801"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:27.798929" elapsed="0.002852"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:50:27.802550" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:50:27.802006" elapsed="0.000583"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:27.803013" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:27.802686" elapsed="0.000408"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:27.803790" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:27.803373" elapsed="0.000454"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:27.803127" elapsed="0.000750"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:27.802661" elapsed="0.001246"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:50:27.804671" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:50:27.804124" elapsed="0.000584"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:27.805130" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:27.804807" elapsed="0.000424"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:27.805931" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:27.805488" elapsed="0.000482"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:27.805265" elapsed="0.000753"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:27.804781" elapsed="0.001267"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:50:27.806274" elapsed="0.000477"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:50:27.807379" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:50:27.806978" elapsed="0.000437"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:50:27.807625" elapsed="0.003022"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:50:27.795725" elapsed="0.015008"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:50:27.811103" elapsed="0.000020"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:50:27.810949" elapsed="0.000245"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:27.810885" elapsed="0.000366"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:50:27.814812" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-1-shard-inventory-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestam...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:50:27.811574" elapsed="0.003295"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:50:27.814985" elapsed="0.000064"/>
</return>
<msg time="2026-04-08T00:50:27.815358" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-1-shard-inventory-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestam...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:50:27.779324" elapsed="0.036123"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:50:27.815549" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:50:27.815813" level="INFO">${data_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-1-shard-inventory-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestam...</msg>
<var>${data_text}</var>
<arg>uri=${uri}</arg>
<arg>session=${session}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-08T00:50:27.777799" elapsed="0.038042"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:50:27.817952" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-1-shard-inventory-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1775609...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:50:27.816901" elapsed="0.001143"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-08T00:50:27.818127" elapsed="0.000045"/>
</return>
<msg time="2026-04-08T00:50:27.818441" level="INFO">${data_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-1-shard-inventory-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1775609...</msg>
<var>${data_object}</var>
<arg>${data_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-08T00:50:27.816066" elapsed="0.002403"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:27.818939" level="INFO">${value} = {'AbortTransactionsCount': 0, 'CommitIndex': 398, 'CommittedTransactionsCount': 153, 'CurrentTerm': 2, 'FailedReadTransactionsCount': 0, 'FailedTransactionsCount': 0, 'FollowerInfo': [{'active': True,...</msg>
<var>${value}</var>
<arg>${data_object}</arg>
<arg>value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:27.818627" elapsed="0.000339"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:27.819516" level="INFO">${raft_property} = Leader</msg>
<var>${raft_property}</var>
<arg>${value}</arg>
<arg>${property}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:27.819123" elapsed="0.000419"/>
</kw>
<return>
<value>${raft_property}</value>
<status status="PASS" start="2026-04-08T00:50:27.819589" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:50:27.819741" level="INFO">${raft_state} = Leader</msg>
<var>${raft_state}</var>
<arg>RaftState</arg>
<arg>${shard_name}</arg>
<arg>${shard_type}</arg>
<arg>${member_index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft property.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T00:50:27.616666" elapsed="0.203100"/>
</kw>
<return>
<value>${raft_state}</value>
<status status="PASS" start="2026-04-08T00:50:27.819822" elapsed="0.000026"/>
</return>
<msg time="2026-04-08T00:50:27.819967" level="INFO">${raft_state} = Leader</msg>
<var>${raft_state}</var>
<arg>shard_name=${shard_name}</arg>
<arg>shard_type=${ds_type}</arg>
<arg>member_index=${index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft status.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T00:50:27.615853" elapsed="0.204138"/>
</kw>
<if>
<branch type="IF" condition="'Follower' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${follower_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:27.820314" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:27.820071" 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="PASS" start="2026-04-08T00:50:27.820614" elapsed="0.000192"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:27.820406" elapsed="0.000441"/>
</branch>
<branch type="ELSE IF" condition="${validate}">
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized Raft state: ${raft_state}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:27.821017" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:27.820875" elapsed="0.000194"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:27.820053" elapsed="0.001038"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T00:50:27.615677" elapsed="0.205437"/>
</iter>
<iter>
<kw name="Get_Raft_State_Of_Shard_At_Member" owner="ClusterManagement">
<kw name="Get_Raft_Property_From_Shard_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:27.824418" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:27.823473" elapsed="0.001037"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:50:27.824591" elapsed="0.000031"/>
</return>
<msg time="2026-04-08T00:50:27.824854" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:50:27.822936" elapsed="0.001943"/>
</kw>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Get_As_Json_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:27.873000" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:27.872627" elapsed="0.000436"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:50:27.873814" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:50:27.873579" elapsed="0.000306">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-08T00:50:27.873977" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:50:27.873244" elapsed="0.000758"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:50:27.874567" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:50:27.874179" elapsed="0.000414"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T00:50:27.874891" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-08T00:50:27.875041" level="INFO">${template} = /rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T00:50:27.874755" elapsed="0.000311"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:27.875481" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:27.875237" elapsed="0.000288"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:27.876482" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:27.876214" elapsed="0.000312"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-08T00:50:27.876952" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-08T00:50:27.876684" elapsed="0.000293"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:27.877330" elapsed="0.000021"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:27.877529" elapsed="0.000024"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:27.877699" elapsed="0.000020"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-08T00:50:27.877193" elapsed="0.000562"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-08T00:50:27.877028" elapsed="0.000756"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-08T00:50:27.877828" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:50:27.877983" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-08T00:50:27.875882" elapsed="0.002126"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:27.875593" elapsed="0.002446"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:27.878221" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:27.878062" elapsed="0.000216"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:27.875573" elapsed="0.002725"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:50:27.878860" level="INFO">${final_text} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:50:27.878438" elapsed="0.000449"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T00:50:27.878934" elapsed="0.000028"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="PASS" start="2026-04-08T00:50:27.871978" elapsed="0.007077"/>
</kw>
<msg time="2026-04-08T00:50:27.879107" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:50:27.860223" elapsed="0.018952"/>
</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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:27.890985" 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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:27.902515" 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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:27.914054" elapsed="0.000029"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:27.914263" elapsed="0.000022"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:27.914438" elapsed="0.000020"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:27.914797" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:27.914655" elapsed="0.000197"/>
</branch>
<status status="NOT RUN" start="2026-04-08T00:50:27.914640" elapsed="0.000235"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:27.915013" elapsed="0.000020"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:27.915194" elapsed="0.000022"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:27.915363" elapsed="0.000021"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-08T00:50:27.914611" elapsed="0.000804"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-08T00:50:27.914512" elapsed="0.000929"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:27.915586" elapsed="0.000021"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-08T00:50:27.915661" elapsed="0.000015"/>
</return>
<msg time="2026-04-08T00:50:27.915774" level="INFO">${uri} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-08T00:50:27.856246" elapsed="0.059553"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:50:27.917040" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:50:27.916806" elapsed="0.000297">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-08T00:50:27.917209" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:50:27.916470" elapsed="0.000765"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:27.917551" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:27.917307" elapsed="0.000301"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:27.918096" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:27.917793" elapsed="0.000337"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:27.917631" elapsed="0.000566"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:27.917288" elapsed="0.000938"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:50:27.920452" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:50:27.918387" elapsed="0.002092"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-08T00:50:27.920529" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:50:27.920681" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:50:27.916115" elapsed="0.004591"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:50:27.921962" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:50:27.921723" elapsed="0.000302">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-08T00:50:27.922116" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:50:27.921387" elapsed="0.000754"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-08T00:50:27.922364" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-08T00:50:27.922230" elapsed="0.000193"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:27.922210" elapsed="0.000236"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:27.922589" elapsed="0.000022"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:27.922758" elapsed="0.000021"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-08T00:50:27.922823" elapsed="0.000015"/>
</return>
<msg time="2026-04-08T00:50:27.924755" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:50:27.921048" elapsed="0.003733"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:27.926151" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:27.925903" elapsed="0.000309"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:27.926607" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:27.926366" elapsed="0.000284"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:50:27.945513" level="INFO">GET Request : url=http://10.30.170.131:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 path_url=/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0evogeryo91251obsb096nsda10.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:50:27.946444" level="INFO">GET Response : url=http://10.30.170.131:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Transfer-Encoding': 'chunked'} 
 body={"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","hidden-symmetric-keys","encrypted-private-keys","asymmetrically-encrypted-value-format","cms-encrypted-data-format","cleartext-private-keys","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["ssh-client-keepalives","client-ident-hostbased","client-ident-publickey","client-ident-password"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-ex... (set the log level to DEBUG or TRACE to see the full content) 
 </msg>
<msg time="2026-04-08T00:50:27.946891" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:50:27.928672" elapsed="0.018279"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:27.926741" elapsed="0.020308"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:27.947481" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:27.947109" elapsed="0.000521"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:27.926699" elapsed="0.020979"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:27.954762" level="INFO">{"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","hidden-symmetric-keys","encrypted-private-keys","asymmetrically-encrypted-value-format","cms-encrypted-data-format","cleartext-private-keys","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["ssh-client-keepalives","client-ident-hostbased","client-ident-publickey","client-ident-password"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-experimenter-types?revision=2015-10-20","namespace":"urn:opendaylight:openflowplugin:experimenter:types","conformance-type":"import"},{"name":"ietf-ip_2018-02-22","revision":"2018-02-22","schema":"/rests/modules/ietf-ip?revision=2018-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-ip","conformance-type":"import","feature":["ipv6-privacy-autoconf","ipv4-non-contiguous-netmasks"]},{"name":"ietf-tcp-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-client","conformance-type":"import","feature":["local-binding-supported","tcp-client-keepalives"]},{"name":"node-config_2014-10-15","revision":"2014-10-15","schema":"/rests/modules/node-config?revision=2014-10-15","namespace":"urn:opendaylight:module:config","conformance-type":"import"},{"name":"ietf-restconf_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf","conformance-type":"import"},{"name":"ietf-datastores_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-datastores?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-datastores","conformance-type":"import"},{"name":"ietf-yang-patch_2017-02-22","revision":"2017-02-22","schema":"/rests/modules/ietf-yang-patch?revision=2017-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-patch","conformance-type":"import"},{"name":"sal-group_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-group?revision=2013-09-18","namespace":"urn:opendaylight:group:service","conformance-type":"import"},{"name":"odl-codegen-extensions_2024-06-27","revision":"2024-06-27","schema":"/rests/modules/odl-codegen-extensions?revision=2024-06-27","namespace":"urn:opendaylight:yang:extension:codegen","conformance-type":"import"},{"name":"sal-meter_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-meter?revision=2013-09-18","namespace":"urn:opendaylight:meter:service","conformance-type":"import"},{"name":"ietf-interfaces_2018-02-20","revision":"2018-02-20","schema":"/rests/modules/ietf-interfaces?revision=2018-02-20","namespace":"urn:ietf:params:xml:ns:yang:ietf-interfaces","conformance-type":"import","feature":["pre-provisioning","if-mib","arbitrary-names"]},{"name":"opendaylight-l2-types_2013-08-27","revision":"2013-08-27","schema":"/rests/modules/opendaylight-l2-types?revision=2013-08-27","namespace":"urn:opendaylight:l2:types","conformance-type":"import"},{"name":"opendaylight-flow-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-flow-types?revision=2013-10-26","namespace":"urn:opendaylight:flow:types","conformance-type":"import"},{"name":"lldp-speaker-config_2016-05-12","revision":"2016-05-12","schema":"/rests/modules/lldp-speaker-config?revision=2016-05-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker:config","conformance-type":"import"},{"name":"aaa-cert_2015-11-26","revision":"2015-11-26","schema":"/rests/modules/aaa-cert?revision=2015-11-26","namespace":"urn:opendaylight:yang:aaa:cert","conformance-type":"import"},{"name":"openflow-action_2015-02-03","revision":"2015-02-03","schema":"/rests/modules/openflow-action?revision=2015-02-03","namespace":"urn:opendaylight:openflow:common:action","conformance-type":"import"},{"name":"openflow-approved-extensions_2016-08-02","revision":"2016-08-02","schema":"/rests/modules/openflow-approved-extensions?revision=2016-08-02","namespace":"urn:opendaylight:openflow:approved:extensions","conformance-type":"import"},{"name":"nc-notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/nc-notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netmod:notification","conformance-type":"import"},{"name":"ietf-netconf-nmda_2019-01-07","revision":"2019-01-07","schema":"/rests/modules/ietf-netconf-nmda?revision=2019-01-07","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-nmda","conformance-type":"import","feature":["with-defaults","origin"]},{"name":"ietf-tcp-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-common","conformance-type":"import","feature":["keepalives-supported"]},{"name":"network-topology_2013-10-21","revision":"2013-10-21","schema":"/rests/modules/network-topology?revision=2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:network-topology","conformance-type":"import"},{"name":"aaa-encrypt-service-config_2024-02-02","revision":"2024-02-02","schema":"/rests/modules/aaa-encrypt-service-config?revision=2024-02-02","namespace":"config:aaa:authn:encrypt:service:config","conformance-type":"import"},{"name":"openflow-instruction_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-instruction?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:instruction","conformance-type":"import"},{"name":"ietf-tls-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-client","conformance-type":"import","feature":["client-ident-x509-cert","server-auth-x509-cert"]},{"name":"opendaylight-group-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-group-statistics?revision=2013-11-11","namespace":"urn:opendaylight:group:statistics","conformance-type":"import"},{"name":"cluster-admin_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/cluster-admin?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:cluster:admin","conformance-type":"import"},{"name":"opendaylight-flow-statistics_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-flow-statistics?revision=2013-08-19","namespace":"urn:opendaylight:flow:statistics","conformance-type":"import"},{"name":"opendaylight-table-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-table-types?revision=2013-10-26","namespace":"urn:opendaylight:table:types","conformance-type":"import"},{"name":"forwarding-rules-manager-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/forwarding-rules-manager-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:forwardingrules-manager:config","conformance-type":"import"},{"name":"odl-srm-types_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-types?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:types","conformance-type":"import"},{"name":"ietf-x509-cert-to-name_2014-12-10","revision":"2014-12-10","schema":"/rests/modules/ietf-x509-cert-to-name?revision=2014-12-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-x509-cert-to-name","conformance-type":"import"},{"name":"flow-node-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-node-inventory?revision=2013-08-19","namespace":"urn:opendaylight:flow:inventory","conformance-type":"import"},{"name":"flow-errors_2013-11-16","revision":"2013-11-16","schema":"/rests/modules/flow-errors?revision=2013-11-16","namespace":"urn:opendaylight:flow:errors","conformance-type":"import"},{"name":"ietf-netconf_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:netconf:base:1.0","conformance-type":"import","feature":["xpath","url","rollback-on-error","validate","startup","candidate","confirmed-commit","writable-running"]},{"name":"iana-ssh-public-key-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-public-key-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-public-key-algs","conformance-type":"import"},{"name":"aaa-cert-mdsal_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/aaa-cert-mdsal?revision=2016-03-21","namespace":"urn:opendaylight:yang:aaa:cert:mdsal","conformance-type":"import"},{"name":"odl-device-notification_2024-02-18","revision":"2024-02-18","schema":"/rests/modules/odl-device-notification?revision=2024-02-18","namespace":"urn:opendaylight:device:notification","conformance-type":"import"},{"name":"ietf-origin_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-origin?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-origin","conformance-type":"import"},{"name":"openflow-augments_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-augments?revision=2015-02-25","namespace":"urn:opendaylight:openflow:augments","conformance-type":"import"},{"name":"iana-ssh-encryption-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-encryption-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-encryption-algs","conformance-type":"import"},{"name":"ietf-truststore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-truststore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-truststore","conformance-type":"import","feature":["inline-definitions-supported"]},{"name":"distributed-datastore-provider_2025-01-30","revision":"2025-01-30","schema":"/rests/modules/distributed-datastore-provider?revision=2025-01-30","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:distributed-datastore-provider","conformance-type":"import"},{"name":"opendaylight-group-types_2013-10-18","revision":"2013-10-18","schema":"/rests/modules/opendaylight-group-types?revision=2013-10-18","namespace":"urn:opendaylight:group:types","conformance-type":"import"},{"name":"sal-remote-augment_2023-11-03","revision":"2023-11-03","schema":"/rests/modules/sal-remote-augment?revision=2023-11-03","namespace":"urn:sal:restconf:event:subscription","conformance-type":"import"},{"name":"opendaylight-ipv6-arbitrary-bitmask-fields_2016-02-24","revision":"2016-02-24","schema":"/rests/modules/opendaylight-ipv6-arbitrary-bitmask-fields?revision=2016-02-24","namespace":"urn:opendaylight:opendaylight-ipv6-arbitrary-bitmask-fields","conformance-type":"import"},{"name":"sal-flows-batch_2016-03-14","revision":"2016-03-14","schema":"/rests/modules/sal-flows-batch?revision=2016-03-14","namespace":"urn:opendaylight:flows:service","conformance-type":"import"},{"name":"ietf-tls-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-common","conformance-type":"import","feature":["tls12","hello-params","tls13"]},{"name":"openflow-types_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-types?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:types","conformance-type":"import"},{"name":"ietf-netconf-with-defaults_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf-with-defaults?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults","conformance-type":"import"},{"name":"odl-srm-ops_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-ops?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:ops","conformance-type":"import"},{"name":"odl-general-entity_2015-09-30","revision":"2015-09-30","schema":"/rests/modules/odl-general-entity?revision=2015-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:mdsal:core:general-entity","conformance-type":"import"},{"name":"iana-ssh-key-exchange-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-key-exchange-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-key-exchange-algs","conformance-type":"import"},{"name":"node-ssl-connection-error_2019-07-23","revision":"2019-07-23","schema":"/rests/modules/node-ssl-connection-error?revision=2019-07-23","namespace":"urn:opendaylight:node-ssl-connection-error:service","conformance-type":"import"},{"name":"openflow-protocol_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-protocol?revision=2013-07-31","namespace":"urn:opendaylight:openflow:protocol","conformance-type":"import"},{"name":"ietf-udp-server_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-server?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-server","conformance-type":"import"},{"name":"ietf-keystore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-keystore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-keystore","conformance-type":"import","feature":["asymmetric-keys","inline-definitions-supported"]},{"name":"aaa_2016-12-14","revision":"2016-12-14","schema":"/rests/modules/aaa?revision=2016-12-14","namespace":"urn:opendaylight:params:xml:ns:yang:aaa","conformance-type":"import"},{"name":"aaa-cert-rpc_2015-12-15","revision":"2015-12-15","schema":"/rests/modules/aaa-cert-rpc?revision=2015-12-15","namespace":"urn:opendaylight:yang:aaa:cert:rpc","conformance-type":"import"},{"name":"system-notifications_2013-09-27","revision":"2013-09-27","schema":"/rests/modules/system-notifications?revision=2013-09-27","namespace":"urn:opendaylight:openflow:system","conformance-type":"import"},{"name":"sal-flat-batch_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/sal-flat-batch?revision=2016-03-21","namespace":"urn:opendaylight:flat-batch:service","conformance-type":"import"},{"name":"notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netconf:notification:1.0","conformance-type":"import"},{"name":"sal-remote_2014-01-14","revision":"2014-01-14","schema":"/rests/modules/sal-remote?revision=2014-01-14","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:remote","conformance-type":"import"},{"name":"yang-ext_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/yang-ext?revision=2013-07-09","namespace":"urn:opendaylight:yang:extension:yang-ext","conformance-type":"import"},{"name":"opendaylight-multipart-types_2017-01-12","revision":"2017-01-12","schema":"/rests/modules/opendaylight-multipart-types?revision=2017-01-12","namespace":"urn:opendaylight:multipart:types","conformance-type":"import"},{"name":"opendaylight-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-inventory?revision=2013-08-19","namespace":"urn:opendaylight:inventory","conformance-type":"import"},{"name":"sal-queue_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-queue?revision=2015-03-05","namespace":"urn:opendaylight:queue:service","conformance-type":"import"},{"name":"sal-groups-batch_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/sal-groups-batch?revision=2016-03-15","namespace":"urn:opendaylight:groups:service","conformance-type":"import"},{"name":"arbitrator-reconcile_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/arbitrator-reconcile?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:arbitrator-reconcile:service","conformance-type":"import"},{"name":"ietf-yang-metadata_2016-08-05","revision":"2016-08-05","schema":"/rests/modules/ietf-yang-metadata?revision=2016-08-05","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-metadata","conformance-type":"import"},{"name":"opendaylight-arbitrary-bitmask-fields_2016-01-30","revision":"2016-01-30","schema":"/rests/modules/opendaylight-arbitrary-bitmask-fields?revision=2016-01-30","namespace":"urn:opendaylight:arbitrary:bitmask:fields","conformance-type":"import"},{"name":"ietf-udp-client_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-client?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-client","conformance-type":"import","feature":["local-binding"]},{"name":"opendaylight-meter-types_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/opendaylight-meter-types?revision=2013-09-18","namespace":"urn:opendaylight:meter:types","conformance-type":"import"},{"name":"opendaylight-action-types_2013-11-12","revision":"2013-11-12","schema":"/rests/modules/opendaylight-action-types?revision=2013-11-12","namespace":"urn:opendaylight:action:types","conformance-type":"import"},{"name":"sal-role_2015-07-27","revision":"2015-07-27","schema":"/rests/modules/sal-role?revision=2015-07-27","namespace":"urn:opendaylight:role:service","conformance-type":"import"},{"name":"openflow-provider-config_2016-05-10","revision":"2016-05-10","schema":"/rests/modules/openflow-provider-config?revision=2016-05-10","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:provider:config","conformance-type":"import"},{"name":"odl-serviceutils-upgrade_2018-07-02","revision":"2018-07-02","schema":"/rests/modules/odl-serviceutils-upgrade?revision=2018-07-02","namespace":"urn:opendaylight:serviceutils:upgrade","conformance-type":"import"},{"name":"opendaylight-match-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-match-types?revision=2013-10-26","namespace":"urn:opendaylight:model:match:types","conformance-type":"import"},{"name":"ietf-restconf-server_2024-08-14","revision":"2024-08-14","schema":"/rests/modules/ietf-restconf-server?revision=2024-08-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-server","conformance-type":"import","feature":["http-listen","https-listen"]},{"name":"reconciliation-result-state_2017-07-13","revision":"2017-07-13","schema":"/rests/modules/reconciliation-result-state?revision=2017-07-13","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:rf:state","conformance-type":"import"},{"name":"onf-extensions_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/onf-extensions?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf","conformance-type":"import"},{"name":"sal-table_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/sal-table?revision=2013-10-26","namespace":"urn:opendaylight:table:service","conformance-type":"import"},{"name":"iana-http-versions_2026-02-04","revision":"2026-02-04","schema":"/rests/modules/iana-http-versions?revision=2026-02-04","namespace":"urn:ietf:params:xml:ns:yang:iana-http-versions","conformance-type":"import"},{"name":"opendaylight-direct-statistics_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/opendaylight-direct-statistics?revision=2016-05-11","namespace":"urn:opendaylight:direct:statistics","conformance-type":"import"},{"name":"opendaylight-port-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-port-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:port","conformance-type":"import"},{"name":"sal-async-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/sal-async-config?revision=2017-06-19","namespace":"urn:opendaylight:async-config:service","conformance-type":"import"},{"name":"aaa-password-service-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-password-service-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:password:service:config","conformance-type":"import"},{"name":"ietf-yang-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-yang-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-types","conformance-type":"import"},{"name":"opendaylight-queue-statistics_2013-12-16","revision":"2013-12-16","schema":"/rests/modules/opendaylight-queue-statistics?revision=2013-12-16","namespace":"urn:opendaylight:queue:statistics","conformance-type":"import"},{"name":"sal-bundle_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/sal-bundle?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf:bundle:service","conformance-type":"import"},{"name":"ietf-restconf-subscribed-notifications_2019-11-17","revision":"2019-11-17","schema":"/rests/modules/ietf-restconf-subscribed-notifications?revision=2019-11-17","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-subscribed-notifications","conformance-type":"import"},{"name":"sal-meters-batch_2016-03-16","revision":"2016-03-16","schema":"/rests/modules/sal-meters-batch?revision=2016-03-16","namespace":"urn:opendaylight:meters:service","conformance-type":"import"},{"name":"odl-entity-owners","revision":"","schema":"/rests/modules/odl-entity-owners","namespace":"urn:opendaylight:params:xml:ns:yang:controller:entity-owners","conformance-type":"import"},{"name":"sal-experimenter-mp-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-mp-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-mp-message:service","conformance-type":"import"},{"name":"packet-processing_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/packet-processing?revision=2013-07-09","namespace":"urn:opendaylight:packet:service","conformance-type":"import"},{"name":"openflow-configuration_2014-06-30","revision":"2014-06-30","schema":"/rests/modules/openflow-configuration?revision=2014-06-30","namespace":"urn:opendaylight:openflow:config","conformance-type":"import"},{"name":"odl-srm-rpcs_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-rpcs?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:rpc","conformance-type":"import"},{"name":"ietf-netconf-acm_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-netconf-acm?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-acm","conformance-type":"import"},{"name":"iana-crypt-hash_2014-08-06","revision":"2014-08-06","schema":"/rests/modules/iana-crypt-hash?revision=2014-08-06","namespace":"urn:ietf:params:xml:ns:yang:iana-crypt-hash","conformance-type":"import","feature":["crypt-hash-sha-512","crypt-hash-sha-256","crypt-hash-md5"]},{"name":"openflow-extensible-match_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-extensible-match?revision=2015-02-25","namespace":"urn:opendaylight:openflow:oxm","conformance-type":"import"}],"module-set-id":"2"}}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:27.949951" elapsed="0.005302"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:27.949465" elapsed="0.005840"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:27.949420" elapsed="0.005920"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:27.958809" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:27.955732" elapsed="0.003142"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:27.955420" elapsed="0.003503"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:27.955396" elapsed="0.003562"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:50:27.959727" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:50:27.959204" elapsed="0.000561"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:27.960230" elapsed="0.000032"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:27.959865" elapsed="0.000449"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:27.960985" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:27.960570" elapsed="0.000451"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:27.960348" elapsed="0.000724"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:27.959839" elapsed="0.001264"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:50:27.961844" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:50:27.961344" elapsed="0.000538"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:27.962325" elapsed="0.000032"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:27.961981" elapsed="0.000427"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:27.963065" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:27.962660" elapsed="0.000441"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:27.962441" elapsed="0.000709"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:27.961955" elapsed="0.001246"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:50:27.963408" elapsed="0.000478"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:50:27.964542" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:50:27.964112" elapsed="0.000468"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:50:27.964793" elapsed="0.002301"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:50:27.948492" elapsed="0.018691"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:50:27.967366" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:50:27.967258" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:27.967238" elapsed="0.000195"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:50:27.975604" level="INFO">${text_normalized} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:50:27.967576" elapsed="0.008059"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:50:27.975688" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:50:27.975846" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:50:27.925083" elapsed="0.050790"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:50:27.975937" elapsed="0.000027"/>
</return>
<msg time="2026-04-08T00:50:27.976294" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="PASS" start="2026-04-08T00:50:27.834935" elapsed="0.141396"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Json_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:27.976792" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:27.976458" elapsed="0.000453"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:27.976427" elapsed="0.000526"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:50:27.977012" elapsed="0.000069"/>
</return>
<arg>session=${session}</arg>
<arg>folder=${RESTCONF_MODULES_DIR}</arg>
<arg>verify=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Add arguments sensible for JSON data, return Get_Templated response text.
Optionally, verification against JSON data (may be iterated) is called.
Only subset of JSON data is verified and returned if JMES path is specified in
file ${folder}/jmespath.expr.</doc>
<status status="PASS" start="2026-04-08T00:50:27.829343" elapsed="0.147946"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:27.824948" elapsed="0.152451"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:27.824930" elapsed="0.152496"/>
</if>
<kw name="Resolve_Shard_Type_Class" owner="ClusterManagement">
<if>
<branch type="IF" condition="'${shard_type}' == 'config'">
<return>
<value>DistributedConfigDatastore</value>
<status status="NOT RUN" start="2026-04-08T00:50:27.978318" elapsed="0.000046"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:50:27.978079" elapsed="0.000329"/>
</branch>
<branch type="ELSE IF" condition="'${shard_type}' == 'operational'">
<return>
<value>DistributedOperationalDatastore</value>
<status status="PASS" start="2026-04-08T00:50:27.978681" elapsed="0.000066"/>
</return>
<status status="PASS" start="2026-04-08T00:50:27.978466" elapsed="0.000328"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:27.978046" elapsed="0.000807"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized shard type: ${shard_type}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:27.979077" elapsed="0.000066"/>
</kw>
<msg time="2026-04-08T00:50:27.979299" level="INFO">${type_class} = DistributedOperationalDatastore</msg>
<var>${type_class}</var>
<arg>shard_type=${shard_type}</arg>
<doc>Simple lookup for class name corresponding to desired type.</doc>
<status status="PASS" start="2026-04-08T00:50:27.977685" elapsed="0.001640"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:50:27.980134" level="INFO">${cluster_index} = 2</msg>
<var>${cluster_index}</var>
<arg>${member_index}+${NODE_ROLE_INDEX_START}-1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:50:27.979495" elapsed="0.000683"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:27.981293" level="INFO">${uri} = jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-inventory-operational,type=DistributedOperationalDatastore</msg>
<var>${uri}</var>
<arg>${JOLOKIA_READ_URI}:Category=Shards,name=member-${cluster_index}-shard-${shard_name}-${shard_type},type=${type_class}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:27.980336" elapsed="0.000985"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:27.988310" level="INFO">jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-inventory-operational,type=DistributedOperationalDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:27.987933" elapsed="0.000463"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:27.988990" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:27.988635" elapsed="0.000440"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:50:27.998082" level="INFO">GET Request : url=http://10.30.170.131:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-inventory-operational,type=DistributedOperationalDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-inventory-operational,type=DistributedOperationalDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:50:27.998186" level="INFO">GET Response : url=http://10.30.170.131:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-inventory-operational,type=DistributedOperationalDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Wed, 08 Apr 2026 00:50:27 GMT', 'Expires': 'Tue, 07 Apr 2026 23:50:27 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-2-shard-inventory-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"ReadWriteTransactionCount":0,"SnapshotIndex":402,"InMemoryJournalLogSize":2,"ReplicatedToAllIndex":402,"Leader":"member-1-shard-inventory-operational","LastIndex":404,"RaftState":"Follower","LastCommittedTransactionTime":"1970-01-01 00:00:00.000","LastApplied":404,"PeerAddresses":"member-1-shard-inventory-operational: pekko:\/\/opendaylight-cluster-data@10.30.170.48:2550\/user\/shardmanager-operational\/member-1-shard-inventory-operational, member-3-shard-inventory-operational: pekko:\/\/opendaylight-cluster-data@10.30.171.110:2550\/user\/shardmanager-operational\/member-3-shard-inventory-operational","LastLogIndex":404,"LastLeadershipChangeTime":"2026-04-08 00:46:45.936","FollowerInitialSyncStatus":true,"FollowerInfo":[],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"248.1 μs","CurrentTerm":2,"LastTerm":2,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-inventory-operational","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":0,"TxCohortCacheSize":0,"PeerVotingStates":"member-1-shard-inventory-operational: true, member-3-shard-inventory-operational: true","LastLogTerm":2,"StatRetrievalError":null,"CommitIndex":404,"SnapshotTerm":2,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-2-shard-inventory-operational","LeadershipChangeCount":1,"InMemoryJournalDataSize":523697},"timestamp":1775609427,"status":200} 
 </msg>
<msg time="2026-04-08T00:50:27.998333" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:50:27.991285" elapsed="0.007083"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:27.989372" elapsed="0.009054"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:27.998706" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:27.998491" elapsed="0.000303"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:27.989324" elapsed="0.009524"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:28.003702" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-2-shard-inventory-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"ReadWriteTransactionCount":0,"SnapshotIndex":402,"InMemoryJournalLogSize":2,"ReplicatedToAllIndex":402,"Leader":"member-1-shard-inventory-operational","LastIndex":404,"RaftState":"Follower","LastCommittedTransactionTime":"1970-01-01 00:00:00.000","LastApplied":404,"PeerAddresses":"member-1-shard-inventory-operational: pekko:\/\/opendaylight-cluster-data@10.30.170.48:2550\/user\/shardmanager-operational\/member-1-shard-inventory-operational, member-3-shard-inventory-operational: pekko:\/\/opendaylight-cluster-data@10.30.171.110:2550\/user\/shardmanager-operational\/member-3-shard-inventory-operational","LastLogIndex":404,"LastLeadershipChangeTime":"2026-04-08 00:46:45.936","FollowerInitialSyncStatus":true,"FollowerInfo":[],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"248.1 μs","CurrentTerm":2,"LastTerm":2,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-inventory-operational","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":0,"TxCohortCacheSize":0,"PeerVotingStates":"member-1-shard-inventory-operational: true, member-3-shard-inventory-operational: true","LastLogTerm":2,"StatRetrievalError":null,"CommitIndex":404,"SnapshotTerm":2,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-2-shard-inventory-operational","LeadershipChangeCount":1,"InMemoryJournalDataSize":523697},"timestamp":1775609427,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:28.000412" elapsed="0.003375"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:28.000004" elapsed="0.003832"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:27.999978" elapsed="0.003892"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:28.007311" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:28.004307" elapsed="0.003068"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:28.003950" elapsed="0.003473"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:28.003925" elapsed="0.003532"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:50:28.008249" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:50:28.007681" elapsed="0.000606"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:28.008716" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:28.008388" elapsed="0.000408"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:28.009380" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:28.009065" elapsed="0.000341"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:28.008834" elapsed="0.000607"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:28.008362" elapsed="0.001100"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:50:28.009976" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:50:28.009619" elapsed="0.000384"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:28.010321" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:28.010072" elapsed="0.000306"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:28.010849" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:28.010558" elapsed="0.000320"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:28.010401" elapsed="0.000512"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:28.010054" elapsed="0.000880"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:50:28.011080" elapsed="0.000355"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:50:28.011862" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:50:28.011596" elapsed="0.000291"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:50:28.012038" elapsed="0.002181"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:50:27.999423" elapsed="0.014859"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:50:28.014544" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:50:28.014434" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:28.014389" elapsed="0.000237"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:50:28.017563" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-2-shard-inventory-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestam...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:50:28.014855" elapsed="0.002761"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:50:28.017698" elapsed="0.000061"/>
</return>
<msg time="2026-04-08T00:50:28.018047" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-2-shard-inventory-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestam...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:50:27.982886" elapsed="0.035295"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:50:28.018287" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:50:28.018552" level="INFO">${data_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-2-shard-inventory-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestam...</msg>
<var>${data_text}</var>
<arg>uri=${uri}</arg>
<arg>session=${session}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-08T00:50:27.981537" elapsed="0.037043"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:50:28.020681" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-2-shard-inventory-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1775609...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:50:28.019612" elapsed="0.001161"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-08T00:50:28.020858" elapsed="0.000039"/>
</return>
<msg time="2026-04-08T00:50:28.021172" level="INFO">${data_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-2-shard-inventory-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1775609...</msg>
<var>${data_object}</var>
<arg>${data_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-08T00:50:28.018801" elapsed="0.002401"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:28.021666" level="INFO">${value} = {'AbortTransactionsCount': 0, 'CommitIndex': 404, 'CommittedTransactionsCount': 0, 'CurrentTerm': 2, 'FailedReadTransactionsCount': 0, 'FailedTransactionsCount': 0, 'FollowerInfo': [], 'FollowerInitia...</msg>
<var>${value}</var>
<arg>${data_object}</arg>
<arg>value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:28.021360" elapsed="0.000333"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:28.022240" level="INFO">${raft_property} = Follower</msg>
<var>${raft_property}</var>
<arg>${value}</arg>
<arg>${property}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:28.021851" elapsed="0.000416"/>
</kw>
<return>
<value>${raft_property}</value>
<status status="PASS" start="2026-04-08T00:50:28.022315" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:50:28.022465" level="INFO">${raft_state} = Follower</msg>
<var>${raft_state}</var>
<arg>RaftState</arg>
<arg>${shard_name}</arg>
<arg>${shard_type}</arg>
<arg>${member_index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft property.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T00:50:27.822258" elapsed="0.200231"/>
</kw>
<return>
<value>${raft_state}</value>
<status status="PASS" start="2026-04-08T00:50:28.022545" elapsed="0.000026"/>
</return>
<msg time="2026-04-08T00:50:28.022689" level="INFO">${raft_state} = Follower</msg>
<var>${raft_state}</var>
<arg>shard_name=${shard_name}</arg>
<arg>shard_type=${ds_type}</arg>
<arg>member_index=${index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft status.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T00:50:27.821462" elapsed="0.201251"/>
</kw>
<if>
<branch type="IF" condition="'Follower' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${follower_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-08T00:50:28.023003" elapsed="0.000206"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:28.022791" elapsed="0.000457"/>
</branch>
<branch type="ELSE IF" condition="'Leader' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${leader_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:28.023415" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:28.023272" elapsed="0.000197"/>
</branch>
<branch type="ELSE IF" condition="${validate}">
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized Raft state: ${raft_state}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:28.023629" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:28.023491" elapsed="0.000189"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:28.022774" elapsed="0.000928"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T00:50:27.821294" elapsed="0.202431"/>
</iter>
<iter>
<kw name="Get_Raft_State_Of_Shard_At_Member" owner="ClusterManagement">
<kw name="Get_Raft_Property_From_Shard_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:28.027029" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:28.026208" elapsed="0.000910"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:50:28.027213" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:50:28.027475" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:50:28.025670" elapsed="0.001831"/>
</kw>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Get_As_Json_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:28.075393" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:28.075002" elapsed="0.000419"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:50:28.076176" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:50:28.075913" elapsed="0.000335">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-08T00:50:28.076377" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:50:28.075582" elapsed="0.000820"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:50:28.076945" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:50:28.076565" elapsed="0.000407"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T00:50:28.077285" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-08T00:50:28.077424" level="INFO">${template} = /rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T00:50:28.077130" elapsed="0.000319"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:28.077842" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:28.077602" elapsed="0.000284"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:28.078824" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:28.078573" elapsed="0.000294"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-08T00:50:28.079313" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-08T00:50:28.079023" elapsed="0.000315"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:28.079655" elapsed="0.000022"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:28.079855" elapsed="0.000026"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:28.080116" elapsed="0.000022"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-08T00:50:28.079523" elapsed="0.000670"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-08T00:50:28.079388" elapsed="0.000835"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-08T00:50:28.080266" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:50:28.080424" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-08T00:50:28.078253" elapsed="0.002196"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:28.077954" elapsed="0.002528"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:28.080652" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:28.080507" elapsed="0.000199"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:28.077934" elapsed="0.002793"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:50:28.081305" level="INFO">${final_text} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:50:28.080864" elapsed="0.000468"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T00:50:28.081380" 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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="PASS" start="2026-04-08T00:50:28.074401" elapsed="0.007101"/>
</kw>
<msg time="2026-04-08T00:50:28.081555" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:50:28.062640" elapsed="0.018971"/>
</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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:28.093298" elapsed="0.000029"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:28.104903" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:28.116453" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:28.116647" elapsed="0.000021"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:28.116825" elapsed="0.000021"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:28.117197" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:28.117042" elapsed="0.000212"/>
</branch>
<status status="NOT RUN" start="2026-04-08T00:50:28.117027" elapsed="0.000250"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:28.117413" elapsed="0.000021"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:28.117577" elapsed="0.000020"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:28.117740" elapsed="0.000020"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-08T00:50:28.116998" elapsed="0.000795"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-08T00:50:28.116899" elapsed="0.000919"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:28.117960" elapsed="0.000021"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-08T00:50:28.118035" elapsed="0.000015"/>
</return>
<msg time="2026-04-08T00:50:28.118147" level="INFO">${uri} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-08T00:50:28.058675" elapsed="0.059513"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:50:28.119410" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:50:28.119173" elapsed="0.000301">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-08T00:50:28.119564" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:50:28.118824" elapsed="0.000764"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:28.119923" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:28.119660" elapsed="0.000325"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:28.120476" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:28.120186" elapsed="0.000316"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:28.120008" elapsed="0.000530"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:28.119641" elapsed="0.000918"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:50:28.122742" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:50:28.120706" elapsed="0.002063"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-08T00:50:28.122819" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:50:28.122971" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:50:28.118504" elapsed="0.004491"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:50:28.124225" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:50:28.123976" elapsed="0.000313">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-08T00:50:28.124417" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:50:28.123632" elapsed="0.000811"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-08T00:50:28.124652" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-08T00:50:28.124518" elapsed="0.000192"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:28.124499" elapsed="0.000233"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:28.124875" elapsed="0.000022"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:28.125045" elapsed="0.000020"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-08T00:50:28.125109" elapsed="0.000015"/>
</return>
<msg time="2026-04-08T00:50:28.127028" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:50:28.123305" elapsed="0.003751"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:28.128457" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:28.128208" elapsed="0.000294"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:28.128891" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:28.128654" elapsed="0.000280"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:50:28.146674" level="INFO">GET Request : url=http://10.30.171.110:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 path_url=/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node09orwbuy1e81xg3wze7ww55ua0.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:50:28.147272" level="INFO">GET Response : url=http://10.30.171.110:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Transfer-Encoding': 'chunked'} 
 body={"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","hidden-symmetric-keys","encrypted-private-keys","asymmetrically-encrypted-value-format","cms-encrypted-data-format","cleartext-private-keys","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["ssh-client-keepalives","client-ident-hostbased","client-ident-publickey","client-ident-password"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-ex... (set the log level to DEBUG or TRACE to see the full content) 
 </msg>
<msg time="2026-04-08T00:50:28.147566" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:50:28.130927" elapsed="0.016676"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:28.129001" elapsed="0.018662"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:28.147940" elapsed="0.000032"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:28.147700" elapsed="0.000331"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:28.128982" elapsed="0.019079"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:28.153268" level="INFO">{"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","hidden-symmetric-keys","encrypted-private-keys","asymmetrically-encrypted-value-format","cms-encrypted-data-format","cleartext-private-keys","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["ssh-client-keepalives","client-ident-hostbased","client-ident-publickey","client-ident-password"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-experimenter-types?revision=2015-10-20","namespace":"urn:opendaylight:openflowplugin:experimenter:types","conformance-type":"import"},{"name":"ietf-ip_2018-02-22","revision":"2018-02-22","schema":"/rests/modules/ietf-ip?revision=2018-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-ip","conformance-type":"import","feature":["ipv6-privacy-autoconf","ipv4-non-contiguous-netmasks"]},{"name":"ietf-tcp-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-client","conformance-type":"import","feature":["local-binding-supported","tcp-client-keepalives"]},{"name":"node-config_2014-10-15","revision":"2014-10-15","schema":"/rests/modules/node-config?revision=2014-10-15","namespace":"urn:opendaylight:module:config","conformance-type":"import"},{"name":"ietf-restconf_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf","conformance-type":"import"},{"name":"ietf-datastores_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-datastores?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-datastores","conformance-type":"import"},{"name":"ietf-yang-patch_2017-02-22","revision":"2017-02-22","schema":"/rests/modules/ietf-yang-patch?revision=2017-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-patch","conformance-type":"import"},{"name":"sal-group_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-group?revision=2013-09-18","namespace":"urn:opendaylight:group:service","conformance-type":"import"},{"name":"odl-codegen-extensions_2024-06-27","revision":"2024-06-27","schema":"/rests/modules/odl-codegen-extensions?revision=2024-06-27","namespace":"urn:opendaylight:yang:extension:codegen","conformance-type":"import"},{"name":"sal-meter_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-meter?revision=2013-09-18","namespace":"urn:opendaylight:meter:service","conformance-type":"import"},{"name":"ietf-interfaces_2018-02-20","revision":"2018-02-20","schema":"/rests/modules/ietf-interfaces?revision=2018-02-20","namespace":"urn:ietf:params:xml:ns:yang:ietf-interfaces","conformance-type":"import","feature":["pre-provisioning","if-mib","arbitrary-names"]},{"name":"opendaylight-l2-types_2013-08-27","revision":"2013-08-27","schema":"/rests/modules/opendaylight-l2-types?revision=2013-08-27","namespace":"urn:opendaylight:l2:types","conformance-type":"import"},{"name":"opendaylight-flow-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-flow-types?revision=2013-10-26","namespace":"urn:opendaylight:flow:types","conformance-type":"import"},{"name":"lldp-speaker-config_2016-05-12","revision":"2016-05-12","schema":"/rests/modules/lldp-speaker-config?revision=2016-05-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker:config","conformance-type":"import"},{"name":"aaa-cert_2015-11-26","revision":"2015-11-26","schema":"/rests/modules/aaa-cert?revision=2015-11-26","namespace":"urn:opendaylight:yang:aaa:cert","conformance-type":"import"},{"name":"openflow-action_2015-02-03","revision":"2015-02-03","schema":"/rests/modules/openflow-action?revision=2015-02-03","namespace":"urn:opendaylight:openflow:common:action","conformance-type":"import"},{"name":"openflow-approved-extensions_2016-08-02","revision":"2016-08-02","schema":"/rests/modules/openflow-approved-extensions?revision=2016-08-02","namespace":"urn:opendaylight:openflow:approved:extensions","conformance-type":"import"},{"name":"nc-notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/nc-notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netmod:notification","conformance-type":"import"},{"name":"ietf-netconf-nmda_2019-01-07","revision":"2019-01-07","schema":"/rests/modules/ietf-netconf-nmda?revision=2019-01-07","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-nmda","conformance-type":"import","feature":["with-defaults","origin"]},{"name":"ietf-tcp-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-common","conformance-type":"import","feature":["keepalives-supported"]},{"name":"network-topology_2013-10-21","revision":"2013-10-21","schema":"/rests/modules/network-topology?revision=2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:network-topology","conformance-type":"import"},{"name":"aaa-encrypt-service-config_2024-02-02","revision":"2024-02-02","schema":"/rests/modules/aaa-encrypt-service-config?revision=2024-02-02","namespace":"config:aaa:authn:encrypt:service:config","conformance-type":"import"},{"name":"openflow-instruction_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-instruction?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:instruction","conformance-type":"import"},{"name":"ietf-tls-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-client","conformance-type":"import","feature":["client-ident-x509-cert","server-auth-x509-cert"]},{"name":"opendaylight-group-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-group-statistics?revision=2013-11-11","namespace":"urn:opendaylight:group:statistics","conformance-type":"import"},{"name":"cluster-admin_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/cluster-admin?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:cluster:admin","conformance-type":"import"},{"name":"opendaylight-flow-statistics_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-flow-statistics?revision=2013-08-19","namespace":"urn:opendaylight:flow:statistics","conformance-type":"import"},{"name":"opendaylight-table-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-table-types?revision=2013-10-26","namespace":"urn:opendaylight:table:types","conformance-type":"import"},{"name":"forwarding-rules-manager-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/forwarding-rules-manager-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:forwardingrules-manager:config","conformance-type":"import"},{"name":"odl-srm-types_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-types?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:types","conformance-type":"import"},{"name":"ietf-x509-cert-to-name_2014-12-10","revision":"2014-12-10","schema":"/rests/modules/ietf-x509-cert-to-name?revision=2014-12-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-x509-cert-to-name","conformance-type":"import"},{"name":"flow-node-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-node-inventory?revision=2013-08-19","namespace":"urn:opendaylight:flow:inventory","conformance-type":"import"},{"name":"flow-errors_2013-11-16","revision":"2013-11-16","schema":"/rests/modules/flow-errors?revision=2013-11-16","namespace":"urn:opendaylight:flow:errors","conformance-type":"import"},{"name":"ietf-netconf_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:netconf:base:1.0","conformance-type":"import","feature":["xpath","url","rollback-on-error","validate","startup","candidate","confirmed-commit","writable-running"]},{"name":"iana-ssh-public-key-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-public-key-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-public-key-algs","conformance-type":"import"},{"name":"aaa-cert-mdsal_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/aaa-cert-mdsal?revision=2016-03-21","namespace":"urn:opendaylight:yang:aaa:cert:mdsal","conformance-type":"import"},{"name":"odl-device-notification_2024-02-18","revision":"2024-02-18","schema":"/rests/modules/odl-device-notification?revision=2024-02-18","namespace":"urn:opendaylight:device:notification","conformance-type":"import"},{"name":"ietf-origin_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-origin?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-origin","conformance-type":"import"},{"name":"openflow-augments_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-augments?revision=2015-02-25","namespace":"urn:opendaylight:openflow:augments","conformance-type":"import"},{"name":"iana-ssh-encryption-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-encryption-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-encryption-algs","conformance-type":"import"},{"name":"ietf-truststore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-truststore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-truststore","conformance-type":"import","feature":["inline-definitions-supported"]},{"name":"distributed-datastore-provider_2025-01-30","revision":"2025-01-30","schema":"/rests/modules/distributed-datastore-provider?revision=2025-01-30","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:distributed-datastore-provider","conformance-type":"import"},{"name":"opendaylight-group-types_2013-10-18","revision":"2013-10-18","schema":"/rests/modules/opendaylight-group-types?revision=2013-10-18","namespace":"urn:opendaylight:group:types","conformance-type":"import"},{"name":"sal-remote-augment_2023-11-03","revision":"2023-11-03","schema":"/rests/modules/sal-remote-augment?revision=2023-11-03","namespace":"urn:sal:restconf:event:subscription","conformance-type":"import"},{"name":"opendaylight-ipv6-arbitrary-bitmask-fields_2016-02-24","revision":"2016-02-24","schema":"/rests/modules/opendaylight-ipv6-arbitrary-bitmask-fields?revision=2016-02-24","namespace":"urn:opendaylight:opendaylight-ipv6-arbitrary-bitmask-fields","conformance-type":"import"},{"name":"sal-flows-batch_2016-03-14","revision":"2016-03-14","schema":"/rests/modules/sal-flows-batch?revision=2016-03-14","namespace":"urn:opendaylight:flows:service","conformance-type":"import"},{"name":"ietf-tls-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-common","conformance-type":"import","feature":["tls12","hello-params","tls13"]},{"name":"openflow-types_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-types?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:types","conformance-type":"import"},{"name":"ietf-netconf-with-defaults_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf-with-defaults?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults","conformance-type":"import"},{"name":"odl-srm-ops_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-ops?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:ops","conformance-type":"import"},{"name":"odl-general-entity_2015-09-30","revision":"2015-09-30","schema":"/rests/modules/odl-general-entity?revision=2015-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:mdsal:core:general-entity","conformance-type":"import"},{"name":"iana-ssh-key-exchange-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-key-exchange-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-key-exchange-algs","conformance-type":"import"},{"name":"node-ssl-connection-error_2019-07-23","revision":"2019-07-23","schema":"/rests/modules/node-ssl-connection-error?revision=2019-07-23","namespace":"urn:opendaylight:node-ssl-connection-error:service","conformance-type":"import"},{"name":"openflow-protocol_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-protocol?revision=2013-07-31","namespace":"urn:opendaylight:openflow:protocol","conformance-type":"import"},{"name":"ietf-udp-server_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-server?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-server","conformance-type":"import"},{"name":"ietf-keystore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-keystore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-keystore","conformance-type":"import","feature":["asymmetric-keys","inline-definitions-supported"]},{"name":"aaa_2016-12-14","revision":"2016-12-14","schema":"/rests/modules/aaa?revision=2016-12-14","namespace":"urn:opendaylight:params:xml:ns:yang:aaa","conformance-type":"import"},{"name":"aaa-cert-rpc_2015-12-15","revision":"2015-12-15","schema":"/rests/modules/aaa-cert-rpc?revision=2015-12-15","namespace":"urn:opendaylight:yang:aaa:cert:rpc","conformance-type":"import"},{"name":"system-notifications_2013-09-27","revision":"2013-09-27","schema":"/rests/modules/system-notifications?revision=2013-09-27","namespace":"urn:opendaylight:openflow:system","conformance-type":"import"},{"name":"sal-flat-batch_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/sal-flat-batch?revision=2016-03-21","namespace":"urn:opendaylight:flat-batch:service","conformance-type":"import"},{"name":"notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netconf:notification:1.0","conformance-type":"import"},{"name":"sal-remote_2014-01-14","revision":"2014-01-14","schema":"/rests/modules/sal-remote?revision=2014-01-14","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:remote","conformance-type":"import"},{"name":"yang-ext_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/yang-ext?revision=2013-07-09","namespace":"urn:opendaylight:yang:extension:yang-ext","conformance-type":"import"},{"name":"opendaylight-multipart-types_2017-01-12","revision":"2017-01-12","schema":"/rests/modules/opendaylight-multipart-types?revision=2017-01-12","namespace":"urn:opendaylight:multipart:types","conformance-type":"import"},{"name":"opendaylight-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-inventory?revision=2013-08-19","namespace":"urn:opendaylight:inventory","conformance-type":"import"},{"name":"sal-queue_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-queue?revision=2015-03-05","namespace":"urn:opendaylight:queue:service","conformance-type":"import"},{"name":"sal-groups-batch_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/sal-groups-batch?revision=2016-03-15","namespace":"urn:opendaylight:groups:service","conformance-type":"import"},{"name":"arbitrator-reconcile_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/arbitrator-reconcile?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:arbitrator-reconcile:service","conformance-type":"import"},{"name":"ietf-yang-metadata_2016-08-05","revision":"2016-08-05","schema":"/rests/modules/ietf-yang-metadata?revision=2016-08-05","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-metadata","conformance-type":"import"},{"name":"opendaylight-arbitrary-bitmask-fields_2016-01-30","revision":"2016-01-30","schema":"/rests/modules/opendaylight-arbitrary-bitmask-fields?revision=2016-01-30","namespace":"urn:opendaylight:arbitrary:bitmask:fields","conformance-type":"import"},{"name":"ietf-udp-client_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-client?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-client","conformance-type":"import","feature":["local-binding"]},{"name":"opendaylight-meter-types_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/opendaylight-meter-types?revision=2013-09-18","namespace":"urn:opendaylight:meter:types","conformance-type":"import"},{"name":"opendaylight-action-types_2013-11-12","revision":"2013-11-12","schema":"/rests/modules/opendaylight-action-types?revision=2013-11-12","namespace":"urn:opendaylight:action:types","conformance-type":"import"},{"name":"sal-role_2015-07-27","revision":"2015-07-27","schema":"/rests/modules/sal-role?revision=2015-07-27","namespace":"urn:opendaylight:role:service","conformance-type":"import"},{"name":"openflow-provider-config_2016-05-10","revision":"2016-05-10","schema":"/rests/modules/openflow-provider-config?revision=2016-05-10","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:provider:config","conformance-type":"import"},{"name":"odl-serviceutils-upgrade_2018-07-02","revision":"2018-07-02","schema":"/rests/modules/odl-serviceutils-upgrade?revision=2018-07-02","namespace":"urn:opendaylight:serviceutils:upgrade","conformance-type":"import"},{"name":"opendaylight-match-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-match-types?revision=2013-10-26","namespace":"urn:opendaylight:model:match:types","conformance-type":"import"},{"name":"ietf-restconf-server_2024-08-14","revision":"2024-08-14","schema":"/rests/modules/ietf-restconf-server?revision=2024-08-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-server","conformance-type":"import","feature":["http-listen","https-listen"]},{"name":"reconciliation-result-state_2017-07-13","revision":"2017-07-13","schema":"/rests/modules/reconciliation-result-state?revision=2017-07-13","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:rf:state","conformance-type":"import"},{"name":"onf-extensions_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/onf-extensions?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf","conformance-type":"import"},{"name":"sal-table_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/sal-table?revision=2013-10-26","namespace":"urn:opendaylight:table:service","conformance-type":"import"},{"name":"iana-http-versions_2026-02-04","revision":"2026-02-04","schema":"/rests/modules/iana-http-versions?revision=2026-02-04","namespace":"urn:ietf:params:xml:ns:yang:iana-http-versions","conformance-type":"import"},{"name":"opendaylight-direct-statistics_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/opendaylight-direct-statistics?revision=2016-05-11","namespace":"urn:opendaylight:direct:statistics","conformance-type":"import"},{"name":"opendaylight-port-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-port-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:port","conformance-type":"import"},{"name":"sal-async-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/sal-async-config?revision=2017-06-19","namespace":"urn:opendaylight:async-config:service","conformance-type":"import"},{"name":"aaa-password-service-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-password-service-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:password:service:config","conformance-type":"import"},{"name":"ietf-yang-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-yang-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-types","conformance-type":"import"},{"name":"opendaylight-queue-statistics_2013-12-16","revision":"2013-12-16","schema":"/rests/modules/opendaylight-queue-statistics?revision=2013-12-16","namespace":"urn:opendaylight:queue:statistics","conformance-type":"import"},{"name":"sal-bundle_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/sal-bundle?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf:bundle:service","conformance-type":"import"},{"name":"ietf-restconf-subscribed-notifications_2019-11-17","revision":"2019-11-17","schema":"/rests/modules/ietf-restconf-subscribed-notifications?revision=2019-11-17","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-subscribed-notifications","conformance-type":"import"},{"name":"sal-meters-batch_2016-03-16","revision":"2016-03-16","schema":"/rests/modules/sal-meters-batch?revision=2016-03-16","namespace":"urn:opendaylight:meters:service","conformance-type":"import"},{"name":"odl-entity-owners","revision":"","schema":"/rests/modules/odl-entity-owners","namespace":"urn:opendaylight:params:xml:ns:yang:controller:entity-owners","conformance-type":"import"},{"name":"sal-experimenter-mp-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-mp-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-mp-message:service","conformance-type":"import"},{"name":"packet-processing_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/packet-processing?revision=2013-07-09","namespace":"urn:opendaylight:packet:service","conformance-type":"import"},{"name":"openflow-configuration_2014-06-30","revision":"2014-06-30","schema":"/rests/modules/openflow-configuration?revision=2014-06-30","namespace":"urn:opendaylight:openflow:config","conformance-type":"import"},{"name":"odl-srm-rpcs_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-rpcs?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:rpc","conformance-type":"import"},{"name":"ietf-netconf-acm_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-netconf-acm?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-acm","conformance-type":"import"},{"name":"iana-crypt-hash_2014-08-06","revision":"2014-08-06","schema":"/rests/modules/iana-crypt-hash?revision=2014-08-06","namespace":"urn:ietf:params:xml:ns:yang:iana-crypt-hash","conformance-type":"import","feature":["crypt-hash-sha-512","crypt-hash-sha-256","crypt-hash-md5"]},{"name":"openflow-extensible-match_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-extensible-match?revision=2015-02-25","namespace":"urn:opendaylight:openflow:oxm","conformance-type":"import"}],"module-set-id":"2"}}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:28.149474" elapsed="0.004237"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:28.149143" elapsed="0.004618"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:28.149115" elapsed="0.004681"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:28.157227" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:28.154204" elapsed="0.003087"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:28.153874" elapsed="0.003465"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:28.153850" elapsed="0.003523"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:50:28.158113" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:50:28.157597" elapsed="0.000575"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:28.158605" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:28.158275" elapsed="0.000411"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:28.159377" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:28.158939" elapsed="0.000474"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:28.158719" elapsed="0.000745"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:28.158249" elapsed="0.001245"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:50:28.160259" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:50:28.159713" elapsed="0.000584"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:28.160720" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:28.160398" elapsed="0.000401"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:28.161478" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:28.161049" elapsed="0.000465"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:28.160831" elapsed="0.000732"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:28.160372" elapsed="0.001220"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:50:28.161796" elapsed="0.000495"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:50:28.162902" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:50:28.162518" elapsed="0.000419"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:50:28.163147" elapsed="0.002669"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:50:28.148554" elapsed="0.017325"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:50:28.166053" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:50:28.165948" elapsed="0.000149"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:28.165929" elapsed="0.000190"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:50:28.174239" level="INFO">${text_normalized} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:50:28.166276" elapsed="0.007993"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:50:28.174321" elapsed="0.000031"/>
</return>
<msg time="2026-04-08T00:50:28.174479" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:50:28.127368" elapsed="0.047142"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:50:28.174572" elapsed="0.000026"/>
</return>
<msg time="2026-04-08T00:50:28.174878" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="PASS" start="2026-04-08T00:50:28.037511" elapsed="0.137404"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Json_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:28.175397" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:28.175039" elapsed="0.000475"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:28.175009" elapsed="0.000546"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:50:28.175614" elapsed="0.000070"/>
</return>
<arg>session=${session}</arg>
<arg>folder=${RESTCONF_MODULES_DIR}</arg>
<arg>verify=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Add arguments sensible for JSON data, return Get_Templated response text.
Optionally, verification against JSON data (may be iterated) is called.
Only subset of JSON data is verified and returned if JMES path is specified in
file ${folder}/jmespath.expr.</doc>
<status status="PASS" start="2026-04-08T00:50:28.031860" elapsed="0.144046"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:28.027569" elapsed="0.148446"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:28.027551" elapsed="0.148491"/>
</if>
<kw name="Resolve_Shard_Type_Class" owner="ClusterManagement">
<if>
<branch type="IF" condition="'${shard_type}' == 'config'">
<return>
<value>DistributedConfigDatastore</value>
<status status="NOT RUN" start="2026-04-08T00:50:28.176938" elapsed="0.000046"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:50:28.176716" elapsed="0.000314"/>
</branch>
<branch type="ELSE IF" condition="'${shard_type}' == 'operational'">
<return>
<value>DistributedOperationalDatastore</value>
<status status="PASS" start="2026-04-08T00:50:28.177323" elapsed="0.000068"/>
</return>
<status status="PASS" start="2026-04-08T00:50:28.177086" elapsed="0.000353"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:28.176685" elapsed="0.000813"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized shard type: ${shard_type}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:28.177727" elapsed="0.000069"/>
</kw>
<msg time="2026-04-08T00:50:28.177932" level="INFO">${type_class} = DistributedOperationalDatastore</msg>
<var>${type_class}</var>
<arg>shard_type=${shard_type}</arg>
<doc>Simple lookup for class name corresponding to desired type.</doc>
<status status="PASS" start="2026-04-08T00:50:28.176318" elapsed="0.001641"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:50:28.178772" level="INFO">${cluster_index} = 3</msg>
<var>${cluster_index}</var>
<arg>${member_index}+${NODE_ROLE_INDEX_START}-1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:50:28.178128" elapsed="0.000676"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:28.179941" level="INFO">${uri} = jolokia/read/org.opendaylight.controller:Category=Shards,name=member-3-shard-inventory-operational,type=DistributedOperationalDatastore</msg>
<var>${uri}</var>
<arg>${JOLOKIA_READ_URI}:Category=Shards,name=member-${cluster_index}-shard-${shard_name}-${shard_type},type=${type_class}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:28.178960" elapsed="0.001009"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:28.186825" level="INFO">jolokia/read/org.opendaylight.controller:Category=Shards,name=member-3-shard-inventory-operational,type=DistributedOperationalDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:28.186541" elapsed="0.000374"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:28.187452" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:28.187169" elapsed="0.000364"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:50:28.194573" level="INFO">GET Request : url=http://10.30.171.110:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-3-shard-inventory-operational,type=DistributedOperationalDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-3-shard-inventory-operational,type=DistributedOperationalDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:50:28.194632" level="INFO">GET Response : url=http://10.30.171.110:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-3-shard-inventory-operational,type=DistributedOperationalDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Wed, 08 Apr 2026 00:50:28 GMT', 'Expires': 'Tue, 07 Apr 2026 23:50:28 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-3-shard-inventory-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"ReadWriteTransactionCount":0,"SnapshotIndex":430,"InMemoryJournalLogSize":2,"ReplicatedToAllIndex":430,"Leader":"member-1-shard-inventory-operational","LastIndex":432,"RaftState":"Follower","LastApplied":432,"LastCommittedTransactionTime":"1970-01-01 00:00:00.000","PeerAddresses":"member-1-shard-inventory-operational: pekko:\/\/opendaylight-cluster-data@10.30.170.48:2550\/user\/shardmanager-operational\/member-1-shard-inventory-operational, member-2-shard-inventory-operational: pekko:\/\/opendaylight-cluster-data@10.30.170.131:2550\/user\/shardmanager-operational\/member-2-shard-inventory-operational","LastLogIndex":432,"LastLeadershipChangeTime":"2026-04-08 00:46:45.934","FollowerInitialSyncStatus":true,"FollowerInfo":[],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"250.3 μs","CurrentTerm":2,"LastTerm":2,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-inventory-operational","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":0,"TxCohortCacheSize":0,"PeerVotingStates":"member-1-shard-inventory-operational: true, member-2-shard-inventory-operational: true","LastLogTerm":2,"StatRetrievalError":null,"CommitIndex":432,"SnapshotTerm":2,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-3-shard-inventory-operational","LeadershipChangeCount":1,"InMemoryJournalDataSize":566745},"timestamp":1775609428,"status":200} 
 </msg>
<msg time="2026-04-08T00:50:28.194735" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:50:28.189759" elapsed="0.005001"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:28.187676" elapsed="0.007126"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:28.195006" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:28.194851" elapsed="0.000218"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:28.187632" elapsed="0.007475"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:28.199824" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-3-shard-inventory-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"ReadWriteTransactionCount":0,"SnapshotIndex":430,"InMemoryJournalLogSize":2,"ReplicatedToAllIndex":430,"Leader":"member-1-shard-inventory-operational","LastIndex":432,"RaftState":"Follower","LastApplied":432,"LastCommittedTransactionTime":"1970-01-01 00:00:00.000","PeerAddresses":"member-1-shard-inventory-operational: pekko:\/\/opendaylight-cluster-data@10.30.170.48:2550\/user\/shardmanager-operational\/member-1-shard-inventory-operational, member-2-shard-inventory-operational: pekko:\/\/opendaylight-cluster-data@10.30.170.131:2550\/user\/shardmanager-operational\/member-2-shard-inventory-operational","LastLogIndex":432,"LastLeadershipChangeTime":"2026-04-08 00:46:45.934","FollowerInitialSyncStatus":true,"FollowerInfo":[],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"250.3 μs","CurrentTerm":2,"LastTerm":2,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-inventory-operational","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":0,"TxCohortCacheSize":0,"PeerVotingStates":"member-1-shard-inventory-operational: true, member-2-shard-inventory-operational: true","LastLogTerm":2,"StatRetrievalError":null,"CommitIndex":432,"SnapshotTerm":2,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-3-shard-inventory-operational","LeadershipChangeCount":1,"InMemoryJournalDataSize":566745},"timestamp":1775609428,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:28.196283" elapsed="0.003603"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:28.195960" elapsed="0.003962"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:28.195941" elapsed="0.004005"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:28.203121" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:28.200255" elapsed="0.002951"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:28.200002" elapsed="0.003253"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:28.199985" elapsed="0.003303"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:50:28.204058" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:50:28.203513" elapsed="0.000583"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:28.204553" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:28.204224" elapsed="0.000410"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:28.205328" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:28.204889" elapsed="0.000476"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:28.204666" elapsed="0.000748"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:28.204196" elapsed="0.001247"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:50:28.206180" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:50:28.205660" elapsed="0.000559"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:28.206642" elapsed="0.000029"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:28.206318" elapsed="0.000403"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:28.207412" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:28.206977" elapsed="0.000472"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:28.206753" elapsed="0.000746"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:28.206293" elapsed="0.001236"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:50:28.207760" elapsed="0.000507"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:50:28.208873" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:50:28.208496" elapsed="0.000413"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:50:28.209119" elapsed="0.003079"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:50:28.195513" elapsed="0.016774"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:50:28.212652" elapsed="0.000022"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:50:28.212499" elapsed="0.000216"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:28.212436" elapsed="0.000333"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:50:28.215761" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-3-shard-inventory-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestam...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:50:28.213027" elapsed="0.002791"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:50:28.215905" elapsed="0.000072"/>
</return>
<msg time="2026-04-08T00:50:28.216281" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-3-shard-inventory-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestam...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:50:28.181579" elapsed="0.034823"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:50:28.216507" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:50:28.216770" level="INFO">${data_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-3-shard-inventory-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestam...</msg>
<var>${data_text}</var>
<arg>uri=${uri}</arg>
<arg>session=${session}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-08T00:50:28.180215" elapsed="0.036583"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:50:28.218881" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-3-shard-inventory-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1775609...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:50:28.217833" elapsed="0.001140"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-08T00:50:28.219057" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:50:28.219363" level="INFO">${data_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-3-shard-inventory-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1775609...</msg>
<var>${data_object}</var>
<arg>${data_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-08T00:50:28.217017" elapsed="0.002374"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:28.219871" level="INFO">${value} = {'AbortTransactionsCount': 0, 'CommitIndex': 432, 'CommittedTransactionsCount': 0, 'CurrentTerm': 2, 'FailedReadTransactionsCount': 0, 'FailedTransactionsCount': 0, 'FollowerInfo': [], 'FollowerInitia...</msg>
<var>${value}</var>
<arg>${data_object}</arg>
<arg>value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:28.219548" elapsed="0.000351"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:28.220446" level="INFO">${raft_property} = Follower</msg>
<var>${raft_property}</var>
<arg>${value}</arg>
<arg>${property}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:28.220056" elapsed="0.000416"/>
</kw>
<return>
<value>${raft_property}</value>
<status status="PASS" start="2026-04-08T00:50:28.220519" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:50:28.220669" level="INFO">${raft_state} = Follower</msg>
<var>${raft_state}</var>
<arg>RaftState</arg>
<arg>${shard_name}</arg>
<arg>${shard_type}</arg>
<arg>${member_index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft property.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T00:50:28.024823" elapsed="0.195871"/>
</kw>
<return>
<value>${raft_state}</value>
<status status="PASS" start="2026-04-08T00:50:28.220750" elapsed="0.000026"/>
</return>
<msg time="2026-04-08T00:50:28.220895" level="INFO">${raft_state} = Follower</msg>
<var>${raft_state}</var>
<arg>shard_name=${shard_name}</arg>
<arg>shard_type=${ds_type}</arg>
<arg>member_index=${index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft status.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T00:50:28.024059" elapsed="0.196860"/>
</kw>
<if>
<branch type="IF" condition="'Follower' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${follower_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-08T00:50:28.221226" elapsed="0.000193"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:28.220997" elapsed="0.000460"/>
</branch>
<branch type="ELSE IF" condition="'Leader' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${leader_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:28.221624" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:28.221481" elapsed="0.000196"/>
</branch>
<branch type="ELSE IF" condition="${validate}">
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized Raft state: ${raft_state}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:28.221837" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:28.221699" elapsed="0.000193"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:28.220979" elapsed="0.000962"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T00:50:28.023884" elapsed="0.198083"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-08T00:50:27.615325" elapsed="0.606675"/>
</for>
<return>
<value>${leader_list}</value>
<value>${follower_list}</value>
<status status="PASS" start="2026-04-08T00:50:28.222041" elapsed="0.000027"/>
</return>
<msg time="2026-04-08T00:50:28.222338" level="INFO">${leader_list} = [1]</msg>
<msg time="2026-04-08T00:50:28.222385" level="INFO">${follower_list} = [2, 3]</msg>
<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="PASS" start="2026-04-08T00:50:27.611328" elapsed="0.611080"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T00:50:28.222851" level="INFO">Length is 1.</msg>
<msg time="2026-04-08T00:50:28.222926" level="INFO">${leader_count} = 1</msg>
<var>${leader_count}</var>
<arg>${leader_list}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T00:50:28.222584" elapsed="0.000365"/>
</kw>
<if>
<branch type="IF" condition="${leader_count} &lt; 1">
<kw name="Fail" owner="BuiltIn">
<arg>No leader found.</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:28.223243" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:28.223017" elapsed="0.000280"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:28.222999" elapsed="0.000321"/>
</if>
<kw name="Length Should Be" owner="BuiltIn">
<msg time="2026-04-08T00:50:28.225272" level="INFO">Length is 1.</msg>
<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="PASS" start="2026-04-08T00:50:28.223454" elapsed="0.001866"/>
</kw>
<kw name="Get From List" owner="Collections">
<msg time="2026-04-08T00:50:28.225707" level="INFO">${leader} = 1</msg>
<var>${leader}</var>
<arg>${leader_list}</arg>
<arg>0</arg>
<doc>Returns the value specified with an ``index`` from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:50:28.225520" elapsed="0.000212"/>
</kw>
<return>
<value>${leader}</value>
<value>${follower_list}</value>
<status status="PASS" start="2026-04-08T00:50:28.225778" elapsed="0.000028"/>
</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="PASS" start="2026-04-08T00:50:27.608849" elapsed="0.617082"/>
</kw>
<var name="${shard_name}">inventory</var>
<status status="PASS" start="2026-04-08T00:50:27.608610" elapsed="0.617367"/>
</iter>
<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-04-08T00:50:28.230519" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:50:28.230120" elapsed="0.000426"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:50:28.231007" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:50:28.230702" elapsed="0.000331"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:50:28.231076" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:50:28.231246" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:50:28.229753" elapsed="0.001518"/>
</kw>
<kw name="Sort List" owner="Collections">
<arg>${index_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="PASS" start="2026-04-08T00:50:28.231424" elapsed="0.000155"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:50:28.232096" level="INFO">${ds_type} = operational</msg>
<var>${ds_type}</var>
<arg>'${shard_type}' != 'config'</arg>
<arg>operational</arg>
<arg>config</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:50:28.231755" elapsed="0.000368"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:50:28.232538" level="INFO">${leader_list} = []</msg>
<var>${leader_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:50:28.232299" elapsed="0.000265"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:50:28.232950" level="INFO">${follower_list} = []</msg>
<var>${follower_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:50:28.232712" elapsed="0.000264"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_Raft_State_Of_Shard_At_Member" owner="ClusterManagement">
<kw name="Get_Raft_Property_From_Shard_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:28.236304" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:28.235402" elapsed="0.000992"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:50:28.236473" elapsed="0.000031"/>
</return>
<msg time="2026-04-08T00:50:28.236735" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:50:28.234861" elapsed="0.001901"/>
</kw>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Get_As_Json_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:28.284616" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:28.284240" elapsed="0.000403"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:50:28.285386" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:50:28.285135" elapsed="0.000322">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-08T00:50:28.285548" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:50:28.284805" elapsed="0.000767"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:50:28.286115" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:50:28.285735" elapsed="0.000407"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T00:50:28.286453" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-08T00:50:28.286592" level="INFO">${template} = /rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T00:50:28.286317" elapsed="0.000300"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:28.287054" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:28.286810" elapsed="0.000288"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:28.288053" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:28.287801" elapsed="0.000296"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-08T00:50:28.288542" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-08T00:50:28.288271" elapsed="0.000296"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:28.288878" elapsed="0.000022"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:28.289077" elapsed="0.000024"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:28.289262" elapsed="0.000021"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-08T00:50:28.288746" elapsed="0.000573"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-08T00:50:28.288614" elapsed="0.000735"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-08T00:50:28.289391" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:50:28.289547" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-08T00:50:28.287471" elapsed="0.002101"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:28.287183" elapsed="0.002419"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:28.289771" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:28.289626" elapsed="0.000199"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:28.287147" elapsed="0.002699"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:50:28.290425" level="INFO">${final_text} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:50:28.289984" elapsed="0.000469"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T00:50:28.290500" 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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="PASS" start="2026-04-08T00:50:28.283615" elapsed="0.007015"/>
</kw>
<msg time="2026-04-08T00:50:28.290682" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:50:28.271875" elapsed="0.018858"/>
</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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:28.302504" elapsed="0.000029"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:28.314096" 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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:28.325615" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:28.325807" elapsed="0.000021"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:28.325985" elapsed="0.000021"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:28.326397" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:28.326218" elapsed="0.000236"/>
</branch>
<status status="NOT RUN" start="2026-04-08T00:50:28.326203" elapsed="0.000275"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:28.326615" elapsed="0.000021"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:28.326778" elapsed="0.000020"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:28.326942" elapsed="0.000021"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-08T00:50:28.326171" elapsed="0.000824"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-08T00:50:28.326058" elapsed="0.000963"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:28.327180" elapsed="0.000022"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-08T00:50:28.327258" elapsed="0.000015"/>
</return>
<msg time="2026-04-08T00:50:28.327372" level="INFO">${uri} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-08T00:50:28.267895" elapsed="0.059503"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:50:28.328657" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:50:28.328423" elapsed="0.000297">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-08T00:50:28.328809" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:50:28.328068" elapsed="0.000765"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:28.329170" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:28.328903" elapsed="0.000325"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:28.329704" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:28.329416" elapsed="0.000314"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:28.329252" elapsed="0.000512"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:28.328885" elapsed="0.000900"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:50:28.331988" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:50:28.329932" elapsed="0.002082"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-08T00:50:28.332064" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:50:28.332230" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:50:28.327747" elapsed="0.004509"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:50:28.333452" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:50:28.333218" elapsed="0.000297">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-08T00:50:28.333606" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:50:28.332867" elapsed="0.000764"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-08T00:50:28.333835" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-08T00:50:28.333701" elapsed="0.000193"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:28.333682" elapsed="0.000236"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:28.334063" elapsed="0.000021"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:28.334248" elapsed="0.000022"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-08T00:50:28.334315" elapsed="0.000015"/>
</return>
<msg time="2026-04-08T00:50:28.336272" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:50:28.332549" elapsed="0.003784"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:28.337704" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:28.337457" elapsed="0.000292"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:28.338141" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:28.337900" elapsed="0.000303"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:50:28.350727" level="INFO">GET Request : url=http://10.30.170.48:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 path_url=/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01nfu2ssrokr1es5zgka78rw970.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:50:28.351557" level="INFO">GET Response : url=http://10.30.170.48:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Transfer-Encoding': 'chunked'} 
 body={"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","hidden-symmetric-keys","encrypted-private-keys","asymmetrically-encrypted-value-format","cms-encrypted-data-format","cleartext-private-keys","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["ssh-client-keepalives","client-ident-hostbased","client-ident-publickey","client-ident-password"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-ex... (set the log level to DEBUG or TRACE to see the full content) 
 </msg>
<msg time="2026-04-08T00:50:28.351994" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:50:28.340239" elapsed="0.011816"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:28.338270" elapsed="0.013879"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:28.352588" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:28.352243" elapsed="0.000487"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:28.338251" elapsed="0.014527"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:28.360410" level="INFO">{"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","hidden-symmetric-keys","encrypted-private-keys","asymmetrically-encrypted-value-format","cms-encrypted-data-format","cleartext-private-keys","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["ssh-client-keepalives","client-ident-hostbased","client-ident-publickey","client-ident-password"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-experimenter-types?revision=2015-10-20","namespace":"urn:opendaylight:openflowplugin:experimenter:types","conformance-type":"import"},{"name":"ietf-ip_2018-02-22","revision":"2018-02-22","schema":"/rests/modules/ietf-ip?revision=2018-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-ip","conformance-type":"import","feature":["ipv6-privacy-autoconf","ipv4-non-contiguous-netmasks"]},{"name":"ietf-tcp-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-client","conformance-type":"import","feature":["local-binding-supported","tcp-client-keepalives"]},{"name":"node-config_2014-10-15","revision":"2014-10-15","schema":"/rests/modules/node-config?revision=2014-10-15","namespace":"urn:opendaylight:module:config","conformance-type":"import"},{"name":"ietf-restconf_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf","conformance-type":"import"},{"name":"ietf-datastores_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-datastores?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-datastores","conformance-type":"import"},{"name":"ietf-yang-patch_2017-02-22","revision":"2017-02-22","schema":"/rests/modules/ietf-yang-patch?revision=2017-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-patch","conformance-type":"import"},{"name":"sal-group_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-group?revision=2013-09-18","namespace":"urn:opendaylight:group:service","conformance-type":"import"},{"name":"odl-codegen-extensions_2024-06-27","revision":"2024-06-27","schema":"/rests/modules/odl-codegen-extensions?revision=2024-06-27","namespace":"urn:opendaylight:yang:extension:codegen","conformance-type":"import"},{"name":"sal-meter_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-meter?revision=2013-09-18","namespace":"urn:opendaylight:meter:service","conformance-type":"import"},{"name":"ietf-interfaces_2018-02-20","revision":"2018-02-20","schema":"/rests/modules/ietf-interfaces?revision=2018-02-20","namespace":"urn:ietf:params:xml:ns:yang:ietf-interfaces","conformance-type":"import","feature":["pre-provisioning","if-mib","arbitrary-names"]},{"name":"opendaylight-l2-types_2013-08-27","revision":"2013-08-27","schema":"/rests/modules/opendaylight-l2-types?revision=2013-08-27","namespace":"urn:opendaylight:l2:types","conformance-type":"import"},{"name":"opendaylight-flow-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-flow-types?revision=2013-10-26","namespace":"urn:opendaylight:flow:types","conformance-type":"import"},{"name":"lldp-speaker-config_2016-05-12","revision":"2016-05-12","schema":"/rests/modules/lldp-speaker-config?revision=2016-05-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker:config","conformance-type":"import"},{"name":"aaa-cert_2015-11-26","revision":"2015-11-26","schema":"/rests/modules/aaa-cert?revision=2015-11-26","namespace":"urn:opendaylight:yang:aaa:cert","conformance-type":"import"},{"name":"openflow-action_2015-02-03","revision":"2015-02-03","schema":"/rests/modules/openflow-action?revision=2015-02-03","namespace":"urn:opendaylight:openflow:common:action","conformance-type":"import"},{"name":"openflow-approved-extensions_2016-08-02","revision":"2016-08-02","schema":"/rests/modules/openflow-approved-extensions?revision=2016-08-02","namespace":"urn:opendaylight:openflow:approved:extensions","conformance-type":"import"},{"name":"nc-notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/nc-notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netmod:notification","conformance-type":"import"},{"name":"ietf-netconf-nmda_2019-01-07","revision":"2019-01-07","schema":"/rests/modules/ietf-netconf-nmda?revision=2019-01-07","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-nmda","conformance-type":"import","feature":["with-defaults","origin"]},{"name":"ietf-tcp-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-common","conformance-type":"import","feature":["keepalives-supported"]},{"name":"network-topology_2013-10-21","revision":"2013-10-21","schema":"/rests/modules/network-topology?revision=2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:network-topology","conformance-type":"import"},{"name":"aaa-encrypt-service-config_2024-02-02","revision":"2024-02-02","schema":"/rests/modules/aaa-encrypt-service-config?revision=2024-02-02","namespace":"config:aaa:authn:encrypt:service:config","conformance-type":"import"},{"name":"openflow-instruction_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-instruction?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:instruction","conformance-type":"import"},{"name":"ietf-tls-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-client","conformance-type":"import","feature":["client-ident-x509-cert","server-auth-x509-cert"]},{"name":"opendaylight-group-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-group-statistics?revision=2013-11-11","namespace":"urn:opendaylight:group:statistics","conformance-type":"import"},{"name":"cluster-admin_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/cluster-admin?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:cluster:admin","conformance-type":"import"},{"name":"opendaylight-flow-statistics_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-flow-statistics?revision=2013-08-19","namespace":"urn:opendaylight:flow:statistics","conformance-type":"import"},{"name":"opendaylight-table-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-table-types?revision=2013-10-26","namespace":"urn:opendaylight:table:types","conformance-type":"import"},{"name":"forwarding-rules-manager-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/forwarding-rules-manager-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:forwardingrules-manager:config","conformance-type":"import"},{"name":"odl-srm-types_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-types?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:types","conformance-type":"import"},{"name":"ietf-x509-cert-to-name_2014-12-10","revision":"2014-12-10","schema":"/rests/modules/ietf-x509-cert-to-name?revision=2014-12-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-x509-cert-to-name","conformance-type":"import"},{"name":"flow-node-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-node-inventory?revision=2013-08-19","namespace":"urn:opendaylight:flow:inventory","conformance-type":"import"},{"name":"flow-errors_2013-11-16","revision":"2013-11-16","schema":"/rests/modules/flow-errors?revision=2013-11-16","namespace":"urn:opendaylight:flow:errors","conformance-type":"import"},{"name":"ietf-netconf_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:netconf:base:1.0","conformance-type":"import","feature":["xpath","url","rollback-on-error","validate","startup","candidate","confirmed-commit","writable-running"]},{"name":"iana-ssh-public-key-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-public-key-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-public-key-algs","conformance-type":"import"},{"name":"aaa-cert-mdsal_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/aaa-cert-mdsal?revision=2016-03-21","namespace":"urn:opendaylight:yang:aaa:cert:mdsal","conformance-type":"import"},{"name":"odl-device-notification_2024-02-18","revision":"2024-02-18","schema":"/rests/modules/odl-device-notification?revision=2024-02-18","namespace":"urn:opendaylight:device:notification","conformance-type":"import"},{"name":"ietf-origin_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-origin?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-origin","conformance-type":"import"},{"name":"openflow-augments_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-augments?revision=2015-02-25","namespace":"urn:opendaylight:openflow:augments","conformance-type":"import"},{"name":"iana-ssh-encryption-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-encryption-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-encryption-algs","conformance-type":"import"},{"name":"ietf-truststore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-truststore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-truststore","conformance-type":"import","feature":["inline-definitions-supported"]},{"name":"distributed-datastore-provider_2025-01-30","revision":"2025-01-30","schema":"/rests/modules/distributed-datastore-provider?revision=2025-01-30","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:distributed-datastore-provider","conformance-type":"import"},{"name":"opendaylight-group-types_2013-10-18","revision":"2013-10-18","schema":"/rests/modules/opendaylight-group-types?revision=2013-10-18","namespace":"urn:opendaylight:group:types","conformance-type":"import"},{"name":"sal-remote-augment_2023-11-03","revision":"2023-11-03","schema":"/rests/modules/sal-remote-augment?revision=2023-11-03","namespace":"urn:sal:restconf:event:subscription","conformance-type":"import"},{"name":"opendaylight-ipv6-arbitrary-bitmask-fields_2016-02-24","revision":"2016-02-24","schema":"/rests/modules/opendaylight-ipv6-arbitrary-bitmask-fields?revision=2016-02-24","namespace":"urn:opendaylight:opendaylight-ipv6-arbitrary-bitmask-fields","conformance-type":"import"},{"name":"sal-flows-batch_2016-03-14","revision":"2016-03-14","schema":"/rests/modules/sal-flows-batch?revision=2016-03-14","namespace":"urn:opendaylight:flows:service","conformance-type":"import"},{"name":"ietf-tls-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-common","conformance-type":"import","feature":["tls12","hello-params","tls13"]},{"name":"openflow-types_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-types?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:types","conformance-type":"import"},{"name":"ietf-netconf-with-defaults_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf-with-defaults?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults","conformance-type":"import"},{"name":"odl-srm-ops_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-ops?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:ops","conformance-type":"import"},{"name":"odl-general-entity_2015-09-30","revision":"2015-09-30","schema":"/rests/modules/odl-general-entity?revision=2015-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:mdsal:core:general-entity","conformance-type":"import"},{"name":"iana-ssh-key-exchange-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-key-exchange-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-key-exchange-algs","conformance-type":"import"},{"name":"node-ssl-connection-error_2019-07-23","revision":"2019-07-23","schema":"/rests/modules/node-ssl-connection-error?revision=2019-07-23","namespace":"urn:opendaylight:node-ssl-connection-error:service","conformance-type":"import"},{"name":"openflow-protocol_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-protocol?revision=2013-07-31","namespace":"urn:opendaylight:openflow:protocol","conformance-type":"import"},{"name":"ietf-udp-server_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-server?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-server","conformance-type":"import"},{"name":"ietf-keystore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-keystore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-keystore","conformance-type":"import","feature":["asymmetric-keys","inline-definitions-supported"]},{"name":"aaa_2016-12-14","revision":"2016-12-14","schema":"/rests/modules/aaa?revision=2016-12-14","namespace":"urn:opendaylight:params:xml:ns:yang:aaa","conformance-type":"import"},{"name":"aaa-cert-rpc_2015-12-15","revision":"2015-12-15","schema":"/rests/modules/aaa-cert-rpc?revision=2015-12-15","namespace":"urn:opendaylight:yang:aaa:cert:rpc","conformance-type":"import"},{"name":"system-notifications_2013-09-27","revision":"2013-09-27","schema":"/rests/modules/system-notifications?revision=2013-09-27","namespace":"urn:opendaylight:openflow:system","conformance-type":"import"},{"name":"sal-flat-batch_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/sal-flat-batch?revision=2016-03-21","namespace":"urn:opendaylight:flat-batch:service","conformance-type":"import"},{"name":"notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netconf:notification:1.0","conformance-type":"import"},{"name":"sal-remote_2014-01-14","revision":"2014-01-14","schema":"/rests/modules/sal-remote?revision=2014-01-14","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:remote","conformance-type":"import"},{"name":"yang-ext_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/yang-ext?revision=2013-07-09","namespace":"urn:opendaylight:yang:extension:yang-ext","conformance-type":"import"},{"name":"opendaylight-multipart-types_2017-01-12","revision":"2017-01-12","schema":"/rests/modules/opendaylight-multipart-types?revision=2017-01-12","namespace":"urn:opendaylight:multipart:types","conformance-type":"import"},{"name":"opendaylight-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-inventory?revision=2013-08-19","namespace":"urn:opendaylight:inventory","conformance-type":"import"},{"name":"sal-queue_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-queue?revision=2015-03-05","namespace":"urn:opendaylight:queue:service","conformance-type":"import"},{"name":"sal-groups-batch_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/sal-groups-batch?revision=2016-03-15","namespace":"urn:opendaylight:groups:service","conformance-type":"import"},{"name":"arbitrator-reconcile_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/arbitrator-reconcile?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:arbitrator-reconcile:service","conformance-type":"import"},{"name":"ietf-yang-metadata_2016-08-05","revision":"2016-08-05","schema":"/rests/modules/ietf-yang-metadata?revision=2016-08-05","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-metadata","conformance-type":"import"},{"name":"opendaylight-arbitrary-bitmask-fields_2016-01-30","revision":"2016-01-30","schema":"/rests/modules/opendaylight-arbitrary-bitmask-fields?revision=2016-01-30","namespace":"urn:opendaylight:arbitrary:bitmask:fields","conformance-type":"import"},{"name":"ietf-udp-client_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-client?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-client","conformance-type":"import","feature":["local-binding"]},{"name":"opendaylight-meter-types_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/opendaylight-meter-types?revision=2013-09-18","namespace":"urn:opendaylight:meter:types","conformance-type":"import"},{"name":"opendaylight-action-types_2013-11-12","revision":"2013-11-12","schema":"/rests/modules/opendaylight-action-types?revision=2013-11-12","namespace":"urn:opendaylight:action:types","conformance-type":"import"},{"name":"sal-role_2015-07-27","revision":"2015-07-27","schema":"/rests/modules/sal-role?revision=2015-07-27","namespace":"urn:opendaylight:role:service","conformance-type":"import"},{"name":"openflow-provider-config_2016-05-10","revision":"2016-05-10","schema":"/rests/modules/openflow-provider-config?revision=2016-05-10","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:provider:config","conformance-type":"import"},{"name":"odl-serviceutils-upgrade_2018-07-02","revision":"2018-07-02","schema":"/rests/modules/odl-serviceutils-upgrade?revision=2018-07-02","namespace":"urn:opendaylight:serviceutils:upgrade","conformance-type":"import"},{"name":"opendaylight-match-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-match-types?revision=2013-10-26","namespace":"urn:opendaylight:model:match:types","conformance-type":"import"},{"name":"ietf-restconf-server_2024-08-14","revision":"2024-08-14","schema":"/rests/modules/ietf-restconf-server?revision=2024-08-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-server","conformance-type":"import","feature":["http-listen","https-listen"]},{"name":"reconciliation-result-state_2017-07-13","revision":"2017-07-13","schema":"/rests/modules/reconciliation-result-state?revision=2017-07-13","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:rf:state","conformance-type":"import"},{"name":"onf-extensions_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/onf-extensions?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf","conformance-type":"import"},{"name":"sal-table_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/sal-table?revision=2013-10-26","namespace":"urn:opendaylight:table:service","conformance-type":"import"},{"name":"iana-http-versions_2026-02-04","revision":"2026-02-04","schema":"/rests/modules/iana-http-versions?revision=2026-02-04","namespace":"urn:ietf:params:xml:ns:yang:iana-http-versions","conformance-type":"import"},{"name":"opendaylight-direct-statistics_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/opendaylight-direct-statistics?revision=2016-05-11","namespace":"urn:opendaylight:direct:statistics","conformance-type":"import"},{"name":"opendaylight-port-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-port-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:port","conformance-type":"import"},{"name":"sal-async-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/sal-async-config?revision=2017-06-19","namespace":"urn:opendaylight:async-config:service","conformance-type":"import"},{"name":"aaa-password-service-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-password-service-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:password:service:config","conformance-type":"import"},{"name":"ietf-yang-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-yang-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-types","conformance-type":"import"},{"name":"opendaylight-queue-statistics_2013-12-16","revision":"2013-12-16","schema":"/rests/modules/opendaylight-queue-statistics?revision=2013-12-16","namespace":"urn:opendaylight:queue:statistics","conformance-type":"import"},{"name":"sal-bundle_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/sal-bundle?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf:bundle:service","conformance-type":"import"},{"name":"ietf-restconf-subscribed-notifications_2019-11-17","revision":"2019-11-17","schema":"/rests/modules/ietf-restconf-subscribed-notifications?revision=2019-11-17","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-subscribed-notifications","conformance-type":"import"},{"name":"sal-meters-batch_2016-03-16","revision":"2016-03-16","schema":"/rests/modules/sal-meters-batch?revision=2016-03-16","namespace":"urn:opendaylight:meters:service","conformance-type":"import"},{"name":"odl-entity-owners","revision":"","schema":"/rests/modules/odl-entity-owners","namespace":"urn:opendaylight:params:xml:ns:yang:controller:entity-owners","conformance-type":"import"},{"name":"sal-experimenter-mp-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-mp-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-mp-message:service","conformance-type":"import"},{"name":"packet-processing_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/packet-processing?revision=2013-07-09","namespace":"urn:opendaylight:packet:service","conformance-type":"import"},{"name":"openflow-configuration_2014-06-30","revision":"2014-06-30","schema":"/rests/modules/openflow-configuration?revision=2014-06-30","namespace":"urn:opendaylight:openflow:config","conformance-type":"import"},{"name":"odl-srm-rpcs_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-rpcs?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:rpc","conformance-type":"import"},{"name":"ietf-netconf-acm_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-netconf-acm?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-acm","conformance-type":"import"},{"name":"iana-crypt-hash_2014-08-06","revision":"2014-08-06","schema":"/rests/modules/iana-crypt-hash?revision=2014-08-06","namespace":"urn:ietf:params:xml:ns:yang:iana-crypt-hash","conformance-type":"import","feature":["crypt-hash-sha-512","crypt-hash-sha-256","crypt-hash-md5"]},{"name":"openflow-extensible-match_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-extensible-match?revision=2015-02-25","namespace":"urn:opendaylight:openflow:oxm","conformance-type":"import"}],"module-set-id":"2"}}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:28.355050" elapsed="0.005765"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:28.354536" elapsed="0.006317"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:28.354493" elapsed="0.006386"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:28.363328" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:28.361182" elapsed="0.002192"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:28.360935" elapsed="0.002482"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:28.360918" elapsed="0.002525"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:50:28.363992" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:50:28.363610" elapsed="0.000409"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:28.364342" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:28.364089" elapsed="0.000310"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:28.364876" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:28.364581" elapsed="0.000321"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:28.364423" elapsed="0.000513"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:28.364071" elapsed="0.000886"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:50:28.365488" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:50:28.365114" elapsed="0.000401"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:28.365815" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:28.365584" elapsed="0.000288"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:28.366373" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:28.366055" elapsed="0.000344"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:28.365896" elapsed="0.000538"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:28.365566" elapsed="0.000889"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:50:28.366602" elapsed="0.000343"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:50:28.367413" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:50:28.367108" elapsed="0.000332"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:50:28.367601" elapsed="0.002157"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:50:28.353571" elapsed="0.016249"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:50:28.370001" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:50:28.369896" elapsed="0.000149"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:28.369874" elapsed="0.000193"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:50:28.378198" level="INFO">${text_normalized} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:50:28.370226" elapsed="0.008003"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:50:28.378281" elapsed="0.000031"/>
</return>
<msg time="2026-04-08T00:50:28.378441" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:50:28.336636" elapsed="0.041831"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:50:28.378530" elapsed="0.000027"/>
</return>
<msg time="2026-04-08T00:50:28.378841" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="PASS" start="2026-04-08T00:50:28.246649" elapsed="0.132229"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Json_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:28.379361" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:28.379002" elapsed="0.000492"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:28.378972" elapsed="0.000564"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:50:28.379595" elapsed="0.000070"/>
</return>
<arg>session=${session}</arg>
<arg>folder=${RESTCONF_MODULES_DIR}</arg>
<arg>verify=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Add arguments sensible for JSON data, return Get_Templated response text.
Optionally, verification against JSON data (may be iterated) is called.
Only subset of JSON data is verified and returned if JMES path is specified in
file ${folder}/jmespath.expr.</doc>
<status status="PASS" start="2026-04-08T00:50:28.241032" elapsed="0.138826"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:28.236831" elapsed="0.143140"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:28.236813" elapsed="0.143184"/>
</if>
<kw name="Resolve_Shard_Type_Class" owner="ClusterManagement">
<if>
<branch type="IF" condition="'${shard_type}' == 'config'">
<return>
<value>DistributedConfigDatastore</value>
<status status="NOT RUN" start="2026-04-08T00:50:28.380894" elapsed="0.000047"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:50:28.380671" elapsed="0.000315"/>
</branch>
<branch type="ELSE IF" condition="'${shard_type}' == 'operational'">
<return>
<value>DistributedOperationalDatastore</value>
<status status="PASS" start="2026-04-08T00:50:28.381282" elapsed="0.000069"/>
</return>
<status status="PASS" start="2026-04-08T00:50:28.381043" elapsed="0.000356"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:28.380638" elapsed="0.000819"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized shard type: ${shard_type}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:28.381686" elapsed="0.000065"/>
</kw>
<msg time="2026-04-08T00:50:28.381887" level="INFO">${type_class} = DistributedOperationalDatastore</msg>
<var>${type_class}</var>
<arg>shard_type=${shard_type}</arg>
<doc>Simple lookup for class name corresponding to desired type.</doc>
<status status="PASS" start="2026-04-08T00:50:28.380276" elapsed="0.001636"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:50:28.382737" level="INFO">${cluster_index} = 1</msg>
<var>${cluster_index}</var>
<arg>${member_index}+${NODE_ROLE_INDEX_START}-1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:50:28.382082" elapsed="0.000682"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:28.383920" level="INFO">${uri} = jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-topology-operational,type=DistributedOperationalDatastore</msg>
<var>${uri}</var>
<arg>${JOLOKIA_READ_URI}:Category=Shards,name=member-${cluster_index}-shard-${shard_name}-${shard_type},type=${type_class}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:28.382927" elapsed="0.001021"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:28.390935" level="INFO">jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-topology-operational,type=DistributedOperationalDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:28.390645" elapsed="0.000373"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:28.391584" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:28.391276" elapsed="0.000391"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:50:28.400331" level="INFO">GET Request : url=http://10.30.170.48:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-topology-operational,type=DistributedOperationalDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-topology-operational,type=DistributedOperationalDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:50:28.400393" level="INFO">GET Response : url=http://10.30.170.48:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-topology-operational,type=DistributedOperationalDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Wed, 08 Apr 2026 00:50:28 GMT', 'Expires': 'Tue, 07 Apr 2026 23:50:28 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-1-shard-topology-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"ReadWriteTransactionCount":16,"SnapshotIndex":44,"InMemoryJournalLogSize":1,"ReplicatedToAllIndex":44,"Leader":"member-1-shard-topology-operational","LastIndex":45,"RaftState":"Leader","LastApplied":45,"LastCommittedTransactionTime":"2026-04-08 00:50:27.117","PeerAddresses":"member-2-shard-topology-operational: pekko:\/\/opendaylight-cluster-data@10.30.170.131:2550\/user\/shardmanager-operational\/member-2-shard-topology-operational, member-3-shard-topology-operational: pekko:\/\/opendaylight-cluster-data@10.30.171.110:2550\/user\/shardmanager-operational\/member-3-shard-topology-operational","LastLogIndex":45,"LastLeadershipChangeTime":"2026-04-08 00:46:45.974","FollowerInitialSyncStatus":false,"FollowerInfo":[{"timeSinceLastActivity":"00:00:00.004","active":true,"matchIndex":45,"voting":true,"id":"member-2-shard-topology-operational","nextIndex":46},{"timeSinceLastActivity":"00:00:00.005","active":true,"matchIndex":45,"voting":true,"id":"member-3-shard-topology-operational","nextIndex":46}],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"451.5 μs","CurrentTerm":2,"LastTerm":2,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-topology-operational","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":13,"TxCohortCacheSize":0,"PeerVotingStates":"member-2-shard-topology-operational: true, member-3-shard-topology-operational: true","LastLogTerm":2,"StatRetrievalError":null,"CommitIndex":45,"SnapshotTerm":2,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":6,"ShardName":"member-1-shard-topology-operational","LeadershipChangeCount":1,"InMemoryJournalDataSize":8474},"timestamp":1775609428,"status":200} 
 </msg>
<msg time="2026-04-08T00:50:28.400501" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:50:28.393745" elapsed="0.006782"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:28.391812" elapsed="0.008757"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:28.400771" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:28.400616" elapsed="0.000260"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:28.391766" elapsed="0.009149"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:28.404416" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-1-shard-topology-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"ReadWriteTransactionCount":16,"SnapshotIndex":44,"InMemoryJournalLogSize":1,"ReplicatedToAllIndex":44,"Leader":"member-1-shard-topology-operational","LastIndex":45,"RaftState":"Leader","LastApplied":45,"LastCommittedTransactionTime":"2026-04-08 00:50:27.117","PeerAddresses":"member-2-shard-topology-operational: pekko:\/\/opendaylight-cluster-data@10.30.170.131:2550\/user\/shardmanager-operational\/member-2-shard-topology-operational, member-3-shard-topology-operational: pekko:\/\/opendaylight-cluster-data@10.30.171.110:2550\/user\/shardmanager-operational\/member-3-shard-topology-operational","LastLogIndex":45,"LastLeadershipChangeTime":"2026-04-08 00:46:45.974","FollowerInitialSyncStatus":false,"FollowerInfo":[{"timeSinceLastActivity":"00:00:00.004","active":true,"matchIndex":45,"voting":true,"id":"member-2-shard-topology-operational","nextIndex":46},{"timeSinceLastActivity":"00:00:00.005","active":true,"matchIndex":45,"voting":true,"id":"member-3-shard-topology-operational","nextIndex":46}],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"451.5 μs","CurrentTerm":2,"LastTerm":2,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-topology-operational","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":13,"TxCohortCacheSize":0,"PeerVotingStates":"member-2-shard-topology-operational: true, member-3-shard-topology-operational: true","LastLogTerm":2,"StatRetrievalError":null,"CommitIndex":45,"SnapshotTerm":2,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":6,"ShardName":"member-1-shard-topology-operational","LeadershipChangeCount":1,"InMemoryJournalDataSize":8474},"timestamp":1775609428,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:28.402033" elapsed="0.002445"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:28.401814" elapsed="0.002699"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:28.401795" elapsed="0.002743"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:28.406968" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:28.404813" elapsed="0.002200"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:28.404593" elapsed="0.002454"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:28.404576" elapsed="0.002495"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:50:28.407661" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:50:28.407248" elapsed="0.000440"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:28.408092" elapsed="0.000034"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:28.407758" elapsed="0.000440"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:28.408878" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:28.408459" elapsed="0.000454"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:28.408233" elapsed="0.000730"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:28.407739" elapsed="0.001253"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:50:28.409731" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:50:28.409232" elapsed="0.000535"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:28.410206" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:28.409864" elapsed="0.000423"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:28.410950" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:28.410540" elapsed="0.000446"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:28.410319" elapsed="0.000715"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:28.409839" elapsed="0.001224"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:50:28.411290" elapsed="0.000562"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:50:28.412496" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:50:28.412084" elapsed="0.000447"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:50:28.412744" elapsed="0.003025"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:50:28.401392" elapsed="0.014463"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:50:28.416259" elapsed="0.000022"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:50:28.416074" elapsed="0.000250"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:28.416010" elapsed="0.000368"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:50:28.420505" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-1-shard-topology-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:50:28.416703" elapsed="0.003854"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:50:28.420673" elapsed="0.000067"/>
</return>
<msg time="2026-04-08T00:50:28.421040" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-1-shard-topology-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:50:28.385562" elapsed="0.035569"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:50:28.421269" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:50:28.421537" level="INFO">${data_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-1-shard-topology-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp...</msg>
<var>${data_text}</var>
<arg>uri=${uri}</arg>
<arg>session=${session}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-08T00:50:28.384198" elapsed="0.037366"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:50:28.423691" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-1-shard-topology-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 17756094...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:50:28.422621" elapsed="0.001164"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-08T00:50:28.423870" elapsed="0.000035"/>
</return>
<msg time="2026-04-08T00:50:28.424189" level="INFO">${data_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-1-shard-topology-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 17756094...</msg>
<var>${data_object}</var>
<arg>${data_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-08T00:50:28.421796" elapsed="0.002423"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:28.424692" level="INFO">${value} = {'AbortTransactionsCount': 0, 'CommitIndex': 45, 'CommittedTransactionsCount': 13, 'CurrentTerm': 2, 'FailedReadTransactionsCount': 0, 'FailedTransactionsCount': 0, 'FollowerInfo': [{'active': True, '...</msg>
<var>${value}</var>
<arg>${data_object}</arg>
<arg>value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:28.424378" elapsed="0.000342"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:28.425283" level="INFO">${raft_property} = Leader</msg>
<var>${raft_property}</var>
<arg>${value}</arg>
<arg>${property}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:28.424877" elapsed="0.000432"/>
</kw>
<return>
<value>${raft_property}</value>
<status status="PASS" start="2026-04-08T00:50:28.425356" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:50:28.425507" level="INFO">${raft_state} = Leader</msg>
<var>${raft_state}</var>
<arg>RaftState</arg>
<arg>${shard_name}</arg>
<arg>${shard_type}</arg>
<arg>${member_index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft property.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T00:50:28.234176" elapsed="0.191356"/>
</kw>
<return>
<value>${raft_state}</value>
<status status="PASS" start="2026-04-08T00:50:28.425590" elapsed="0.000027"/>
</return>
<msg time="2026-04-08T00:50:28.425740" level="INFO">${raft_state} = Leader</msg>
<var>${raft_state}</var>
<arg>shard_name=${shard_name}</arg>
<arg>shard_type=${ds_type}</arg>
<arg>member_index=${index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft status.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T00:50:28.233408" elapsed="0.192356"/>
</kw>
<if>
<branch type="IF" condition="'Follower' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${follower_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:28.426061" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:28.425844" elapsed="0.000273"/>
</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="PASS" start="2026-04-08T00:50:28.426366" elapsed="0.000190"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:28.426140" elapsed="0.000454"/>
</branch>
<branch type="ELSE IF" condition="${validate}">
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized Raft state: ${raft_state}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:28.426763" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:28.426619" elapsed="0.000196"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:28.425827" elapsed="0.001010"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T00:50:28.233244" elapsed="0.193617"/>
</iter>
<iter>
<kw name="Get_Raft_State_Of_Shard_At_Member" owner="ClusterManagement">
<kw name="Get_Raft_Property_From_Shard_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:28.430246" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:28.429341" elapsed="0.000996"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:50:28.430418" elapsed="0.000031"/>
</return>
<msg time="2026-04-08T00:50:28.430681" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:50:28.428676" elapsed="0.002031"/>
</kw>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Get_As_Json_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:28.488035" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:28.487554" elapsed="0.000509"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:50:28.488878" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:50:28.488620" elapsed="0.000335">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-08T00:50:28.489051" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:50:28.488283" elapsed="0.000792"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:50:28.489643" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:50:28.489257" elapsed="0.000413"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T00:50:28.489973" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-08T00:50:28.490119" level="INFO">${template} = /rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T00:50:28.489830" elapsed="0.000314"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:28.490558" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:28.490315" elapsed="0.000287"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:28.491558" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:28.491305" elapsed="0.000296"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-08T00:50:28.492026" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-08T00:50:28.491759" elapsed="0.000293"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:28.492391" elapsed="0.000022"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:28.492590" elapsed="0.000024"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:28.492761" elapsed="0.000020"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-08T00:50:28.492259" elapsed="0.000558"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-08T00:50:28.492104" elapsed="0.000742"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-08T00:50:28.492893" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:50:28.493048" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-08T00:50:28.490961" elapsed="0.002112"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:28.490671" elapsed="0.002433"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:28.493290" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:28.493128" elapsed="0.000217"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:28.490650" elapsed="0.002716"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:50:28.493936" level="INFO">${final_text} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:50:28.493506" elapsed="0.000457"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T00:50:28.494011" elapsed="0.000028"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="PASS" start="2026-04-08T00:50:28.486571" elapsed="0.007561"/>
</kw>
<msg time="2026-04-08T00:50:28.494202" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:50:28.465684" elapsed="0.028572"/>
</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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:28.505974" elapsed="0.000029"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:28.517535" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:28.529012" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:28.529219" elapsed="0.000022"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:28.529395" elapsed="0.000022"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:28.529755" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:28.529613" elapsed="0.000197"/>
</branch>
<status status="NOT RUN" start="2026-04-08T00:50:28.529599" elapsed="0.000235"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:28.529971" elapsed="0.000020"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:28.530134" elapsed="0.000034"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:28.530317" elapsed="0.000021"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-08T00:50:28.529571" elapsed="0.000799"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-08T00:50:28.529471" elapsed="0.000924"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:28.530539" elapsed="0.000020"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-08T00:50:28.530613" elapsed="0.000015"/>
</return>
<msg time="2026-04-08T00:50:28.530726" level="INFO">${uri} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-08T00:50:28.461727" elapsed="0.069024"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:50:28.532003" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:50:28.531769" elapsed="0.000298">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-08T00:50:28.532174" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:50:28.531432" elapsed="0.000769"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:28.532516" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:28.532272" elapsed="0.000301"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:28.533049" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:28.532759" elapsed="0.000316"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:28.532596" elapsed="0.000514"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:28.532253" elapsed="0.000879"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:50:28.535373" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:50:28.533297" elapsed="0.002103"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-08T00:50:28.535450" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:50:28.535603" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:50:28.531071" elapsed="0.004557"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:50:28.536870" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:50:28.536637" elapsed="0.000295">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-08T00:50:28.537025" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:50:28.536302" elapsed="0.000747"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-08T00:50:28.537273" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-08T00:50:28.537120" elapsed="0.000212"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:28.537101" elapsed="0.000255"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:28.537500" elapsed="0.000022"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:28.537668" elapsed="0.000020"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-08T00:50:28.537732" elapsed="0.000015"/>
</return>
<msg time="2026-04-08T00:50:28.539676" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:50:28.535964" elapsed="0.003739"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:28.541110" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:28.540815" elapsed="0.000355"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:28.541565" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:28.541324" elapsed="0.000283"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:50:28.562102" level="INFO">GET Request : url=http://10.30.170.131:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 path_url=/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0evogeryo91251obsb096nsda10.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:50:28.563086" level="INFO">GET Response : url=http://10.30.170.131:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Transfer-Encoding': 'chunked'} 
 body={"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","hidden-symmetric-keys","encrypted-private-keys","asymmetrically-encrypted-value-format","cms-encrypted-data-format","cleartext-private-keys","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["ssh-client-keepalives","client-ident-hostbased","client-ident-publickey","client-ident-password"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-ex... (set the log level to DEBUG or TRACE to see the full content) 
 </msg>
<msg time="2026-04-08T00:50:28.563561" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:50:28.543602" elapsed="0.020020"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:28.541673" elapsed="0.022046"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:28.564118" elapsed="0.000087"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:28.563777" elapsed="0.000526"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:28.541655" elapsed="0.022694"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:28.570660" level="INFO">{"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","hidden-symmetric-keys","encrypted-private-keys","asymmetrically-encrypted-value-format","cms-encrypted-data-format","cleartext-private-keys","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["ssh-client-keepalives","client-ident-hostbased","client-ident-publickey","client-ident-password"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-experimenter-types?revision=2015-10-20","namespace":"urn:opendaylight:openflowplugin:experimenter:types","conformance-type":"import"},{"name":"ietf-ip_2018-02-22","revision":"2018-02-22","schema":"/rests/modules/ietf-ip?revision=2018-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-ip","conformance-type":"import","feature":["ipv6-privacy-autoconf","ipv4-non-contiguous-netmasks"]},{"name":"ietf-tcp-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-client","conformance-type":"import","feature":["local-binding-supported","tcp-client-keepalives"]},{"name":"node-config_2014-10-15","revision":"2014-10-15","schema":"/rests/modules/node-config?revision=2014-10-15","namespace":"urn:opendaylight:module:config","conformance-type":"import"},{"name":"ietf-restconf_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf","conformance-type":"import"},{"name":"ietf-datastores_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-datastores?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-datastores","conformance-type":"import"},{"name":"ietf-yang-patch_2017-02-22","revision":"2017-02-22","schema":"/rests/modules/ietf-yang-patch?revision=2017-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-patch","conformance-type":"import"},{"name":"sal-group_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-group?revision=2013-09-18","namespace":"urn:opendaylight:group:service","conformance-type":"import"},{"name":"odl-codegen-extensions_2024-06-27","revision":"2024-06-27","schema":"/rests/modules/odl-codegen-extensions?revision=2024-06-27","namespace":"urn:opendaylight:yang:extension:codegen","conformance-type":"import"},{"name":"sal-meter_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-meter?revision=2013-09-18","namespace":"urn:opendaylight:meter:service","conformance-type":"import"},{"name":"ietf-interfaces_2018-02-20","revision":"2018-02-20","schema":"/rests/modules/ietf-interfaces?revision=2018-02-20","namespace":"urn:ietf:params:xml:ns:yang:ietf-interfaces","conformance-type":"import","feature":["pre-provisioning","if-mib","arbitrary-names"]},{"name":"opendaylight-l2-types_2013-08-27","revision":"2013-08-27","schema":"/rests/modules/opendaylight-l2-types?revision=2013-08-27","namespace":"urn:opendaylight:l2:types","conformance-type":"import"},{"name":"opendaylight-flow-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-flow-types?revision=2013-10-26","namespace":"urn:opendaylight:flow:types","conformance-type":"import"},{"name":"lldp-speaker-config_2016-05-12","revision":"2016-05-12","schema":"/rests/modules/lldp-speaker-config?revision=2016-05-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker:config","conformance-type":"import"},{"name":"aaa-cert_2015-11-26","revision":"2015-11-26","schema":"/rests/modules/aaa-cert?revision=2015-11-26","namespace":"urn:opendaylight:yang:aaa:cert","conformance-type":"import"},{"name":"openflow-action_2015-02-03","revision":"2015-02-03","schema":"/rests/modules/openflow-action?revision=2015-02-03","namespace":"urn:opendaylight:openflow:common:action","conformance-type":"import"},{"name":"openflow-approved-extensions_2016-08-02","revision":"2016-08-02","schema":"/rests/modules/openflow-approved-extensions?revision=2016-08-02","namespace":"urn:opendaylight:openflow:approved:extensions","conformance-type":"import"},{"name":"nc-notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/nc-notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netmod:notification","conformance-type":"import"},{"name":"ietf-netconf-nmda_2019-01-07","revision":"2019-01-07","schema":"/rests/modules/ietf-netconf-nmda?revision=2019-01-07","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-nmda","conformance-type":"import","feature":["with-defaults","origin"]},{"name":"ietf-tcp-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-common","conformance-type":"import","feature":["keepalives-supported"]},{"name":"network-topology_2013-10-21","revision":"2013-10-21","schema":"/rests/modules/network-topology?revision=2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:network-topology","conformance-type":"import"},{"name":"aaa-encrypt-service-config_2024-02-02","revision":"2024-02-02","schema":"/rests/modules/aaa-encrypt-service-config?revision=2024-02-02","namespace":"config:aaa:authn:encrypt:service:config","conformance-type":"import"},{"name":"openflow-instruction_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-instruction?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:instruction","conformance-type":"import"},{"name":"ietf-tls-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-client","conformance-type":"import","feature":["client-ident-x509-cert","server-auth-x509-cert"]},{"name":"opendaylight-group-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-group-statistics?revision=2013-11-11","namespace":"urn:opendaylight:group:statistics","conformance-type":"import"},{"name":"cluster-admin_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/cluster-admin?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:cluster:admin","conformance-type":"import"},{"name":"opendaylight-flow-statistics_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-flow-statistics?revision=2013-08-19","namespace":"urn:opendaylight:flow:statistics","conformance-type":"import"},{"name":"opendaylight-table-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-table-types?revision=2013-10-26","namespace":"urn:opendaylight:table:types","conformance-type":"import"},{"name":"forwarding-rules-manager-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/forwarding-rules-manager-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:forwardingrules-manager:config","conformance-type":"import"},{"name":"odl-srm-types_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-types?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:types","conformance-type":"import"},{"name":"ietf-x509-cert-to-name_2014-12-10","revision":"2014-12-10","schema":"/rests/modules/ietf-x509-cert-to-name?revision=2014-12-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-x509-cert-to-name","conformance-type":"import"},{"name":"flow-node-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-node-inventory?revision=2013-08-19","namespace":"urn:opendaylight:flow:inventory","conformance-type":"import"},{"name":"flow-errors_2013-11-16","revision":"2013-11-16","schema":"/rests/modules/flow-errors?revision=2013-11-16","namespace":"urn:opendaylight:flow:errors","conformance-type":"import"},{"name":"ietf-netconf_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:netconf:base:1.0","conformance-type":"import","feature":["xpath","url","rollback-on-error","validate","startup","candidate","confirmed-commit","writable-running"]},{"name":"iana-ssh-public-key-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-public-key-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-public-key-algs","conformance-type":"import"},{"name":"aaa-cert-mdsal_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/aaa-cert-mdsal?revision=2016-03-21","namespace":"urn:opendaylight:yang:aaa:cert:mdsal","conformance-type":"import"},{"name":"odl-device-notification_2024-02-18","revision":"2024-02-18","schema":"/rests/modules/odl-device-notification?revision=2024-02-18","namespace":"urn:opendaylight:device:notification","conformance-type":"import"},{"name":"ietf-origin_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-origin?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-origin","conformance-type":"import"},{"name":"openflow-augments_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-augments?revision=2015-02-25","namespace":"urn:opendaylight:openflow:augments","conformance-type":"import"},{"name":"iana-ssh-encryption-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-encryption-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-encryption-algs","conformance-type":"import"},{"name":"ietf-truststore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-truststore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-truststore","conformance-type":"import","feature":["inline-definitions-supported"]},{"name":"distributed-datastore-provider_2025-01-30","revision":"2025-01-30","schema":"/rests/modules/distributed-datastore-provider?revision=2025-01-30","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:distributed-datastore-provider","conformance-type":"import"},{"name":"opendaylight-group-types_2013-10-18","revision":"2013-10-18","schema":"/rests/modules/opendaylight-group-types?revision=2013-10-18","namespace":"urn:opendaylight:group:types","conformance-type":"import"},{"name":"sal-remote-augment_2023-11-03","revision":"2023-11-03","schema":"/rests/modules/sal-remote-augment?revision=2023-11-03","namespace":"urn:sal:restconf:event:subscription","conformance-type":"import"},{"name":"opendaylight-ipv6-arbitrary-bitmask-fields_2016-02-24","revision":"2016-02-24","schema":"/rests/modules/opendaylight-ipv6-arbitrary-bitmask-fields?revision=2016-02-24","namespace":"urn:opendaylight:opendaylight-ipv6-arbitrary-bitmask-fields","conformance-type":"import"},{"name":"sal-flows-batch_2016-03-14","revision":"2016-03-14","schema":"/rests/modules/sal-flows-batch?revision=2016-03-14","namespace":"urn:opendaylight:flows:service","conformance-type":"import"},{"name":"ietf-tls-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-common","conformance-type":"import","feature":["tls12","hello-params","tls13"]},{"name":"openflow-types_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-types?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:types","conformance-type":"import"},{"name":"ietf-netconf-with-defaults_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf-with-defaults?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults","conformance-type":"import"},{"name":"odl-srm-ops_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-ops?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:ops","conformance-type":"import"},{"name":"odl-general-entity_2015-09-30","revision":"2015-09-30","schema":"/rests/modules/odl-general-entity?revision=2015-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:mdsal:core:general-entity","conformance-type":"import"},{"name":"iana-ssh-key-exchange-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-key-exchange-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-key-exchange-algs","conformance-type":"import"},{"name":"node-ssl-connection-error_2019-07-23","revision":"2019-07-23","schema":"/rests/modules/node-ssl-connection-error?revision=2019-07-23","namespace":"urn:opendaylight:node-ssl-connection-error:service","conformance-type":"import"},{"name":"openflow-protocol_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-protocol?revision=2013-07-31","namespace":"urn:opendaylight:openflow:protocol","conformance-type":"import"},{"name":"ietf-udp-server_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-server?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-server","conformance-type":"import"},{"name":"ietf-keystore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-keystore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-keystore","conformance-type":"import","feature":["asymmetric-keys","inline-definitions-supported"]},{"name":"aaa_2016-12-14","revision":"2016-12-14","schema":"/rests/modules/aaa?revision=2016-12-14","namespace":"urn:opendaylight:params:xml:ns:yang:aaa","conformance-type":"import"},{"name":"aaa-cert-rpc_2015-12-15","revision":"2015-12-15","schema":"/rests/modules/aaa-cert-rpc?revision=2015-12-15","namespace":"urn:opendaylight:yang:aaa:cert:rpc","conformance-type":"import"},{"name":"system-notifications_2013-09-27","revision":"2013-09-27","schema":"/rests/modules/system-notifications?revision=2013-09-27","namespace":"urn:opendaylight:openflow:system","conformance-type":"import"},{"name":"sal-flat-batch_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/sal-flat-batch?revision=2016-03-21","namespace":"urn:opendaylight:flat-batch:service","conformance-type":"import"},{"name":"notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netconf:notification:1.0","conformance-type":"import"},{"name":"sal-remote_2014-01-14","revision":"2014-01-14","schema":"/rests/modules/sal-remote?revision=2014-01-14","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:remote","conformance-type":"import"},{"name":"yang-ext_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/yang-ext?revision=2013-07-09","namespace":"urn:opendaylight:yang:extension:yang-ext","conformance-type":"import"},{"name":"opendaylight-multipart-types_2017-01-12","revision":"2017-01-12","schema":"/rests/modules/opendaylight-multipart-types?revision=2017-01-12","namespace":"urn:opendaylight:multipart:types","conformance-type":"import"},{"name":"opendaylight-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-inventory?revision=2013-08-19","namespace":"urn:opendaylight:inventory","conformance-type":"import"},{"name":"sal-queue_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-queue?revision=2015-03-05","namespace":"urn:opendaylight:queue:service","conformance-type":"import"},{"name":"sal-groups-batch_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/sal-groups-batch?revision=2016-03-15","namespace":"urn:opendaylight:groups:service","conformance-type":"import"},{"name":"arbitrator-reconcile_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/arbitrator-reconcile?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:arbitrator-reconcile:service","conformance-type":"import"},{"name":"ietf-yang-metadata_2016-08-05","revision":"2016-08-05","schema":"/rests/modules/ietf-yang-metadata?revision=2016-08-05","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-metadata","conformance-type":"import"},{"name":"opendaylight-arbitrary-bitmask-fields_2016-01-30","revision":"2016-01-30","schema":"/rests/modules/opendaylight-arbitrary-bitmask-fields?revision=2016-01-30","namespace":"urn:opendaylight:arbitrary:bitmask:fields","conformance-type":"import"},{"name":"ietf-udp-client_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-client?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-client","conformance-type":"import","feature":["local-binding"]},{"name":"opendaylight-meter-types_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/opendaylight-meter-types?revision=2013-09-18","namespace":"urn:opendaylight:meter:types","conformance-type":"import"},{"name":"opendaylight-action-types_2013-11-12","revision":"2013-11-12","schema":"/rests/modules/opendaylight-action-types?revision=2013-11-12","namespace":"urn:opendaylight:action:types","conformance-type":"import"},{"name":"sal-role_2015-07-27","revision":"2015-07-27","schema":"/rests/modules/sal-role?revision=2015-07-27","namespace":"urn:opendaylight:role:service","conformance-type":"import"},{"name":"openflow-provider-config_2016-05-10","revision":"2016-05-10","schema":"/rests/modules/openflow-provider-config?revision=2016-05-10","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:provider:config","conformance-type":"import"},{"name":"odl-serviceutils-upgrade_2018-07-02","revision":"2018-07-02","schema":"/rests/modules/odl-serviceutils-upgrade?revision=2018-07-02","namespace":"urn:opendaylight:serviceutils:upgrade","conformance-type":"import"},{"name":"opendaylight-match-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-match-types?revision=2013-10-26","namespace":"urn:opendaylight:model:match:types","conformance-type":"import"},{"name":"ietf-restconf-server_2024-08-14","revision":"2024-08-14","schema":"/rests/modules/ietf-restconf-server?revision=2024-08-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-server","conformance-type":"import","feature":["http-listen","https-listen"]},{"name":"reconciliation-result-state_2017-07-13","revision":"2017-07-13","schema":"/rests/modules/reconciliation-result-state?revision=2017-07-13","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:rf:state","conformance-type":"import"},{"name":"onf-extensions_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/onf-extensions?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf","conformance-type":"import"},{"name":"sal-table_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/sal-table?revision=2013-10-26","namespace":"urn:opendaylight:table:service","conformance-type":"import"},{"name":"iana-http-versions_2026-02-04","revision":"2026-02-04","schema":"/rests/modules/iana-http-versions?revision=2026-02-04","namespace":"urn:ietf:params:xml:ns:yang:iana-http-versions","conformance-type":"import"},{"name":"opendaylight-direct-statistics_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/opendaylight-direct-statistics?revision=2016-05-11","namespace":"urn:opendaylight:direct:statistics","conformance-type":"import"},{"name":"opendaylight-port-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-port-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:port","conformance-type":"import"},{"name":"sal-async-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/sal-async-config?revision=2017-06-19","namespace":"urn:opendaylight:async-config:service","conformance-type":"import"},{"name":"aaa-password-service-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-password-service-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:password:service:config","conformance-type":"import"},{"name":"ietf-yang-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-yang-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-types","conformance-type":"import"},{"name":"opendaylight-queue-statistics_2013-12-16","revision":"2013-12-16","schema":"/rests/modules/opendaylight-queue-statistics?revision=2013-12-16","namespace":"urn:opendaylight:queue:statistics","conformance-type":"import"},{"name":"sal-bundle_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/sal-bundle?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf:bundle:service","conformance-type":"import"},{"name":"ietf-restconf-subscribed-notifications_2019-11-17","revision":"2019-11-17","schema":"/rests/modules/ietf-restconf-subscribed-notifications?revision=2019-11-17","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-subscribed-notifications","conformance-type":"import"},{"name":"sal-meters-batch_2016-03-16","revision":"2016-03-16","schema":"/rests/modules/sal-meters-batch?revision=2016-03-16","namespace":"urn:opendaylight:meters:service","conformance-type":"import"},{"name":"odl-entity-owners","revision":"","schema":"/rests/modules/odl-entity-owners","namespace":"urn:opendaylight:params:xml:ns:yang:controller:entity-owners","conformance-type":"import"},{"name":"sal-experimenter-mp-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-mp-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-mp-message:service","conformance-type":"import"},{"name":"packet-processing_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/packet-processing?revision=2013-07-09","namespace":"urn:opendaylight:packet:service","conformance-type":"import"},{"name":"openflow-configuration_2014-06-30","revision":"2014-06-30","schema":"/rests/modules/openflow-configuration?revision=2014-06-30","namespace":"urn:opendaylight:openflow:config","conformance-type":"import"},{"name":"odl-srm-rpcs_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-rpcs?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:rpc","conformance-type":"import"},{"name":"ietf-netconf-acm_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-netconf-acm?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-acm","conformance-type":"import"},{"name":"iana-crypt-hash_2014-08-06","revision":"2014-08-06","schema":"/rests/modules/iana-crypt-hash?revision=2014-08-06","namespace":"urn:ietf:params:xml:ns:yang:iana-crypt-hash","conformance-type":"import","feature":["crypt-hash-sha-512","crypt-hash-sha-256","crypt-hash-md5"]},{"name":"openflow-extensible-match_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-extensible-match?revision=2015-02-25","namespace":"urn:opendaylight:openflow:oxm","conformance-type":"import"}],"module-set-id":"2"}}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:28.566616" elapsed="0.004556"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:28.566083" elapsed="0.005143"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:28.566038" elapsed="0.005222"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:28.574628" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:28.571652" elapsed="0.003042"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:28.571341" elapsed="0.003401"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:28.571317" elapsed="0.003458"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:50:28.575563" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:50:28.574997" elapsed="0.000603"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:28.576070" elapsed="0.000035"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:28.575699" elapsed="0.000475"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:28.576931" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:28.576527" elapsed="0.000429"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:28.576210" elapsed="0.000782"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:28.575673" elapsed="0.001340"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:50:28.577553" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:50:28.577194" elapsed="0.000386"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:28.577880" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:28.577649" elapsed="0.000291"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:28.578431" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:28.578119" elapsed="0.000338"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:28.577963" elapsed="0.000529"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:28.577630" elapsed="0.000882"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:50:28.578658" elapsed="0.000369"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:50:28.579482" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:50:28.579210" elapsed="0.000298"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:50:28.579659" elapsed="0.002284"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:50:28.565111" elapsed="0.016895"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:50:28.582204" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:50:28.582076" elapsed="0.000175"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:28.582058" elapsed="0.000214"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:50:28.590372" level="INFO">${text_normalized} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:50:28.582415" elapsed="0.007987"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:50:28.590454" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:50:28.590612" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:50:28.539999" elapsed="0.050639"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:50:28.590699" elapsed="0.000027"/>
</return>
<msg time="2026-04-08T00:50:28.591021" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="PASS" start="2026-04-08T00:50:28.440623" elapsed="0.150435"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Json_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:28.591545" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:28.591212" elapsed="0.000451"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:28.591179" elapsed="0.000525"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:50:28.591763" elapsed="0.000068"/>
</return>
<arg>session=${session}</arg>
<arg>folder=${RESTCONF_MODULES_DIR}</arg>
<arg>verify=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Add arguments sensible for JSON data, return Get_Templated response text.
Optionally, verification against JSON data (may be iterated) is called.
Only subset of JSON data is verified and returned if JMES path is specified in
file ${folder}/jmespath.expr.</doc>
<status status="PASS" start="2026-04-08T00:50:28.435058" elapsed="0.156963"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:28.430776" elapsed="0.161351"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:28.430758" elapsed="0.161395"/>
</if>
<kw name="Resolve_Shard_Type_Class" owner="ClusterManagement">
<if>
<branch type="IF" condition="'${shard_type}' == 'config'">
<return>
<value>DistributedConfigDatastore</value>
<status status="NOT RUN" start="2026-04-08T00:50:28.593039" elapsed="0.000047"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:50:28.592821" elapsed="0.000309"/>
</branch>
<branch type="ELSE IF" condition="'${shard_type}' == 'operational'">
<return>
<value>DistributedOperationalDatastore</value>
<status status="PASS" start="2026-04-08T00:50:28.593421" elapsed="0.000069"/>
</return>
<status status="PASS" start="2026-04-08T00:50:28.593204" elapsed="0.000333"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:28.592789" elapsed="0.000805"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized shard type: ${shard_type}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:28.593819" elapsed="0.000068"/>
</kw>
<msg time="2026-04-08T00:50:28.594024" level="INFO">${type_class} = DistributedOperationalDatastore</msg>
<var>${type_class}</var>
<arg>shard_type=${shard_type}</arg>
<doc>Simple lookup for class name corresponding to desired type.</doc>
<status status="PASS" start="2026-04-08T00:50:28.592428" elapsed="0.001621"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:50:28.594851" level="INFO">${cluster_index} = 2</msg>
<var>${cluster_index}</var>
<arg>${member_index}+${NODE_ROLE_INDEX_START}-1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:50:28.594232" elapsed="0.000646"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:28.596001" level="INFO">${uri} = jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-topology-operational,type=DistributedOperationalDatastore</msg>
<var>${uri}</var>
<arg>${JOLOKIA_READ_URI}:Category=Shards,name=member-${cluster_index}-shard-${shard_name}-${shard_type},type=${type_class}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:28.595049" elapsed="0.000980"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:28.602826" level="INFO">jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-topology-operational,type=DistributedOperationalDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:28.602544" elapsed="0.000365"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:28.603474" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:28.603193" elapsed="0.000362"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:50:28.611679" level="INFO">GET Request : url=http://10.30.170.131:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-topology-operational,type=DistributedOperationalDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-topology-operational,type=DistributedOperationalDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:50:28.611737" level="INFO">GET Response : url=http://10.30.170.131:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-topology-operational,type=DistributedOperationalDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Wed, 08 Apr 2026 00:50:28 GMT', 'Expires': 'Tue, 07 Apr 2026 23:50:28 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-2-shard-topology-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"ReadWriteTransactionCount":0,"SnapshotIndex":44,"InMemoryJournalLogSize":1,"ReplicatedToAllIndex":44,"Leader":"member-1-shard-topology-operational","LastIndex":45,"RaftState":"Follower","LastCommittedTransactionTime":"1970-01-01 00:00:00.000","LastApplied":45,"PeerAddresses":"member-1-shard-topology-operational: pekko:\/\/opendaylight-cluster-data@10.30.170.48:2550\/user\/shardmanager-operational\/member-1-shard-topology-operational, member-3-shard-topology-operational: pekko:\/\/opendaylight-cluster-data@10.30.171.110:2550\/user\/shardmanager-operational\/member-3-shard-topology-operational","LastLogIndex":45,"LastLeadershipChangeTime":"2026-04-08 00:46:45.981","FollowerInitialSyncStatus":true,"FollowerInfo":[],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"249.7 μs","CurrentTerm":2,"LastTerm":2,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-topology-operational","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":0,"TxCohortCacheSize":0,"PeerVotingStates":"member-1-shard-topology-operational: true, member-3-shard-topology-operational: true","LastLogTerm":2,"StatRetrievalError":null,"CommitIndex":45,"SnapshotTerm":2,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-2-shard-topology-operational","LeadershipChangeCount":1,"InMemoryJournalDataSize":8474},"timestamp":1775609428,"status":200} 
 </msg>
<msg time="2026-04-08T00:50:28.611840" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:50:28.605706" elapsed="0.006159"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:28.603698" elapsed="0.008210"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:28.612108" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:28.611954" elapsed="0.000282"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:28.603653" elapsed="0.008622"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:28.615715" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-2-shard-topology-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"ReadWriteTransactionCount":0,"SnapshotIndex":44,"InMemoryJournalLogSize":1,"ReplicatedToAllIndex":44,"Leader":"member-1-shard-topology-operational","LastIndex":45,"RaftState":"Follower","LastCommittedTransactionTime":"1970-01-01 00:00:00.000","LastApplied":45,"PeerAddresses":"member-1-shard-topology-operational: pekko:\/\/opendaylight-cluster-data@10.30.170.48:2550\/user\/shardmanager-operational\/member-1-shard-topology-operational, member-3-shard-topology-operational: pekko:\/\/opendaylight-cluster-data@10.30.171.110:2550\/user\/shardmanager-operational\/member-3-shard-topology-operational","LastLogIndex":45,"LastLeadershipChangeTime":"2026-04-08 00:46:45.981","FollowerInitialSyncStatus":true,"FollowerInfo":[],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"249.7 μs","CurrentTerm":2,"LastTerm":2,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-topology-operational","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":0,"TxCohortCacheSize":0,"PeerVotingStates":"member-1-shard-topology-operational: true, member-3-shard-topology-operational: true","LastLogTerm":2,"StatRetrievalError":null,"CommitIndex":45,"SnapshotTerm":2,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-2-shard-topology-operational","LeadershipChangeCount":1,"InMemoryJournalDataSize":8474},"timestamp":1775609428,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:28.613355" elapsed="0.002421"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:28.613080" elapsed="0.002732"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:28.613062" elapsed="0.002774"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:28.618274" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:28.616118" elapsed="0.002202"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:28.615897" elapsed="0.002458"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:28.615876" elapsed="0.002503"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:50:28.618908" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:50:28.618540" elapsed="0.000423"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:28.619291" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:28.619039" elapsed="0.000310"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:28.619827" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:28.619530" elapsed="0.000323"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:28.619372" elapsed="0.000522"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:28.619020" elapsed="0.000906"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:50:28.620669" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:50:28.620147" elapsed="0.000559"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:28.621123" elapsed="0.000029"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:28.620802" elapsed="0.000431"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:28.621896" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:28.621487" elapsed="0.000444"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:28.621265" elapsed="0.000715"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:28.620777" elapsed="0.001232"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:50:28.622234" elapsed="0.000548"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:50:28.623460" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:50:28.623054" elapsed="0.000443"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:50:28.623709" elapsed="0.003006"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:50:28.612662" elapsed="0.014139"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:50:28.627222" elapsed="0.000022"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:50:28.627038" elapsed="0.000248"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:28.626968" elapsed="0.000371"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:50:28.631452" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-2-shard-topology-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:50:28.627662" elapsed="0.003864"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:50:28.631642" elapsed="0.000086"/>
</return>
<msg time="2026-04-08T00:50:28.632065" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-2-shard-topology-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:50:28.597612" elapsed="0.034561"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:50:28.632310" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:50:28.632577" level="INFO">${data_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-2-shard-topology-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp...</msg>
<var>${data_text}</var>
<arg>uri=${uri}</arg>
<arg>session=${session}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-08T00:50:28.596274" elapsed="0.036330"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:50:28.634649" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-2-shard-topology-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 17756094...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:50:28.633631" elapsed="0.001110"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-08T00:50:28.634822" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:50:28.635147" level="INFO">${data_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-2-shard-topology-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 17756094...</msg>
<var>${data_object}</var>
<arg>${data_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-08T00:50:28.632823" elapsed="0.002369"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:28.635656" level="INFO">${value} = {'AbortTransactionsCount': 0, 'CommitIndex': 45, 'CommittedTransactionsCount': 0, 'CurrentTerm': 2, 'FailedReadTransactionsCount': 0, 'FailedTransactionsCount': 0, 'FollowerInfo': [], 'FollowerInitial...</msg>
<var>${value}</var>
<arg>${data_object}</arg>
<arg>value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:28.635350" elapsed="0.000333"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:28.636242" level="INFO">${raft_property} = Follower</msg>
<var>${raft_property}</var>
<arg>${value}</arg>
<arg>${property}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:28.635840" elapsed="0.000429"/>
</kw>
<return>
<value>${raft_property}</value>
<status status="PASS" start="2026-04-08T00:50:28.636315" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:50:28.636466" level="INFO">${raft_state} = Follower</msg>
<var>${raft_state}</var>
<arg>RaftState</arg>
<arg>${shard_name}</arg>
<arg>${shard_type}</arg>
<arg>${member_index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft property.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T00:50:28.427980" elapsed="0.208511"/>
</kw>
<return>
<value>${raft_state}</value>
<status status="PASS" start="2026-04-08T00:50:28.636547" elapsed="0.000026"/>
</return>
<msg time="2026-04-08T00:50:28.636692" level="INFO">${raft_state} = Follower</msg>
<var>${raft_state}</var>
<arg>shard_name=${shard_name}</arg>
<arg>shard_type=${ds_type}</arg>
<arg>member_index=${index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft status.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T00:50:28.427211" elapsed="0.209505"/>
</kw>
<if>
<branch type="IF" condition="'Follower' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${follower_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-08T00:50:28.637009" elapsed="0.000207"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:28.636795" elapsed="0.000460"/>
</branch>
<branch type="ELSE IF" condition="'Leader' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${leader_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:28.637422" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:28.637279" elapsed="0.000197"/>
</branch>
<branch type="ELSE IF" condition="${validate}">
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized Raft state: ${raft_state}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:28.637638" elapsed="0.000019"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:28.637499" elapsed="0.000189"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:28.636778" elapsed="0.000932"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T00:50:28.427027" elapsed="0.210706"/>
</iter>
<iter>
<kw name="Get_Raft_State_Of_Shard_At_Member" owner="ClusterManagement">
<kw name="Get_Raft_Property_From_Shard_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:28.640962" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:28.640124" elapsed="0.000927"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:50:28.641130" elapsed="0.000045"/>
</return>
<msg time="2026-04-08T00:50:28.641412" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:50:28.639609" elapsed="0.001829"/>
</kw>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Get_As_Json_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:28.690844" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:28.690446" elapsed="0.000427"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:50:28.691636" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:50:28.691404" elapsed="0.000301">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-08T00:50:28.691838" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:50:28.691035" elapsed="0.000828"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:50:28.692425" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:50:28.692026" elapsed="0.000426"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T00:50:28.692746" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-08T00:50:28.692884" level="INFO">${template} = /rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T00:50:28.692611" elapsed="0.000299"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:28.693324" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:28.693063" elapsed="0.000304"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:28.694309" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:28.694037" elapsed="0.000316"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-08T00:50:28.694774" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-08T00:50:28.694510" elapsed="0.000305"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:28.695142" elapsed="0.000038"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:28.695360" elapsed="0.000023"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:28.695529" elapsed="0.000021"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-08T00:50:28.695011" elapsed="0.000574"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-08T00:50:28.694871" elapsed="0.000744"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-08T00:50:28.695659" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:50:28.695817" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-08T00:50:28.693721" elapsed="0.002121"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:28.693437" elapsed="0.002437"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:28.696042" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:28.695898" elapsed="0.000199"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:28.693417" elapsed="0.002700"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:50:28.696697" level="INFO">${final_text} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:50:28.696271" elapsed="0.000454"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T00:50:28.696774" elapsed="0.000028"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="PASS" start="2026-04-08T00:50:28.689824" elapsed="0.007072"/>
</kw>
<msg time="2026-04-08T00:50:28.696948" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:50:28.677912" elapsed="0.019088"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:28.708722" 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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:28.720260" elapsed="0.000029"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:28.731974" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:28.732179" elapsed="0.000023"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:28.732354" elapsed="0.000021"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:28.732712" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:28.732571" elapsed="0.000196"/>
</branch>
<status status="NOT RUN" start="2026-04-08T00:50:28.732556" elapsed="0.000234"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:28.732929" elapsed="0.000020"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:28.733093" elapsed="0.000020"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:28.733271" elapsed="0.000021"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-08T00:50:28.732527" elapsed="0.000798"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-08T00:50:28.732428" elapsed="0.000923"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:28.733493" elapsed="0.000021"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-08T00:50:28.733567" elapsed="0.000015"/>
</return>
<msg time="2026-04-08T00:50:28.733680" level="INFO">${uri} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-08T00:50:28.673929" elapsed="0.059776"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:50:28.734950" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:50:28.734691" elapsed="0.000322">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-08T00:50:28.735103" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:50:28.734357" elapsed="0.000770"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:28.735459" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:28.735214" elapsed="0.000302"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:28.735996" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:28.735705" elapsed="0.000317"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:28.735540" elapsed="0.000517"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:28.735195" elapsed="0.000883"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:50:28.738278" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:50:28.736243" elapsed="0.002062"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-08T00:50:28.738355" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:50:28.738508" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:50:28.734018" elapsed="0.004515"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:50:28.739746" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:50:28.739513" elapsed="0.000296">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-08T00:50:28.739935" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:50:28.739181" elapsed="0.000779"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-08T00:50:28.740180" elapsed="0.000029"/>
</return>
<status status="PASS" start="2026-04-08T00:50:28.740031" elapsed="0.000211"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:28.740012" elapsed="0.000254"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:28.740409" elapsed="0.000022"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:28.740577" elapsed="0.000020"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-08T00:50:28.740641" elapsed="0.000015"/>
</return>
<msg time="2026-04-08T00:50:28.742564" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:50:28.738844" elapsed="0.003746"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:28.743983" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:28.743733" elapsed="0.000295"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:28.744437" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:28.744194" elapsed="0.000285"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:50:28.763462" level="INFO">GET Request : url=http://10.30.171.110:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 path_url=/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node09orwbuy1e81xg3wze7ww55ua0.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:50:28.764378" level="INFO">GET Response : url=http://10.30.171.110:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Transfer-Encoding': 'chunked'} 
 body={"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","hidden-symmetric-keys","encrypted-private-keys","asymmetrically-encrypted-value-format","cms-encrypted-data-format","cleartext-private-keys","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["ssh-client-keepalives","client-ident-hostbased","client-ident-publickey","client-ident-password"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-ex... (set the log level to DEBUG or TRACE to see the full content) 
 </msg>
<msg time="2026-04-08T00:50:28.764828" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:50:28.746473" elapsed="0.018413"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:28.744547" elapsed="0.020432"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:28.765399" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:28.765037" elapsed="0.000506"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:28.744528" elapsed="0.021061"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:28.771352" level="INFO">{"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","hidden-symmetric-keys","encrypted-private-keys","asymmetrically-encrypted-value-format","cms-encrypted-data-format","cleartext-private-keys","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["ssh-client-keepalives","client-ident-hostbased","client-ident-publickey","client-ident-password"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-experimenter-types?revision=2015-10-20","namespace":"urn:opendaylight:openflowplugin:experimenter:types","conformance-type":"import"},{"name":"ietf-ip_2018-02-22","revision":"2018-02-22","schema":"/rests/modules/ietf-ip?revision=2018-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-ip","conformance-type":"import","feature":["ipv6-privacy-autoconf","ipv4-non-contiguous-netmasks"]},{"name":"ietf-tcp-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-client","conformance-type":"import","feature":["local-binding-supported","tcp-client-keepalives"]},{"name":"node-config_2014-10-15","revision":"2014-10-15","schema":"/rests/modules/node-config?revision=2014-10-15","namespace":"urn:opendaylight:module:config","conformance-type":"import"},{"name":"ietf-restconf_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf","conformance-type":"import"},{"name":"ietf-datastores_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-datastores?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-datastores","conformance-type":"import"},{"name":"ietf-yang-patch_2017-02-22","revision":"2017-02-22","schema":"/rests/modules/ietf-yang-patch?revision=2017-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-patch","conformance-type":"import"},{"name":"sal-group_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-group?revision=2013-09-18","namespace":"urn:opendaylight:group:service","conformance-type":"import"},{"name":"odl-codegen-extensions_2024-06-27","revision":"2024-06-27","schema":"/rests/modules/odl-codegen-extensions?revision=2024-06-27","namespace":"urn:opendaylight:yang:extension:codegen","conformance-type":"import"},{"name":"sal-meter_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-meter?revision=2013-09-18","namespace":"urn:opendaylight:meter:service","conformance-type":"import"},{"name":"ietf-interfaces_2018-02-20","revision":"2018-02-20","schema":"/rests/modules/ietf-interfaces?revision=2018-02-20","namespace":"urn:ietf:params:xml:ns:yang:ietf-interfaces","conformance-type":"import","feature":["pre-provisioning","if-mib","arbitrary-names"]},{"name":"opendaylight-l2-types_2013-08-27","revision":"2013-08-27","schema":"/rests/modules/opendaylight-l2-types?revision=2013-08-27","namespace":"urn:opendaylight:l2:types","conformance-type":"import"},{"name":"opendaylight-flow-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-flow-types?revision=2013-10-26","namespace":"urn:opendaylight:flow:types","conformance-type":"import"},{"name":"lldp-speaker-config_2016-05-12","revision":"2016-05-12","schema":"/rests/modules/lldp-speaker-config?revision=2016-05-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker:config","conformance-type":"import"},{"name":"aaa-cert_2015-11-26","revision":"2015-11-26","schema":"/rests/modules/aaa-cert?revision=2015-11-26","namespace":"urn:opendaylight:yang:aaa:cert","conformance-type":"import"},{"name":"openflow-action_2015-02-03","revision":"2015-02-03","schema":"/rests/modules/openflow-action?revision=2015-02-03","namespace":"urn:opendaylight:openflow:common:action","conformance-type":"import"},{"name":"openflow-approved-extensions_2016-08-02","revision":"2016-08-02","schema":"/rests/modules/openflow-approved-extensions?revision=2016-08-02","namespace":"urn:opendaylight:openflow:approved:extensions","conformance-type":"import"},{"name":"nc-notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/nc-notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netmod:notification","conformance-type":"import"},{"name":"ietf-netconf-nmda_2019-01-07","revision":"2019-01-07","schema":"/rests/modules/ietf-netconf-nmda?revision=2019-01-07","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-nmda","conformance-type":"import","feature":["with-defaults","origin"]},{"name":"ietf-tcp-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-common","conformance-type":"import","feature":["keepalives-supported"]},{"name":"network-topology_2013-10-21","revision":"2013-10-21","schema":"/rests/modules/network-topology?revision=2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:network-topology","conformance-type":"import"},{"name":"aaa-encrypt-service-config_2024-02-02","revision":"2024-02-02","schema":"/rests/modules/aaa-encrypt-service-config?revision=2024-02-02","namespace":"config:aaa:authn:encrypt:service:config","conformance-type":"import"},{"name":"openflow-instruction_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-instruction?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:instruction","conformance-type":"import"},{"name":"ietf-tls-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-client","conformance-type":"import","feature":["client-ident-x509-cert","server-auth-x509-cert"]},{"name":"opendaylight-group-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-group-statistics?revision=2013-11-11","namespace":"urn:opendaylight:group:statistics","conformance-type":"import"},{"name":"cluster-admin_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/cluster-admin?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:cluster:admin","conformance-type":"import"},{"name":"opendaylight-flow-statistics_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-flow-statistics?revision=2013-08-19","namespace":"urn:opendaylight:flow:statistics","conformance-type":"import"},{"name":"opendaylight-table-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-table-types?revision=2013-10-26","namespace":"urn:opendaylight:table:types","conformance-type":"import"},{"name":"forwarding-rules-manager-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/forwarding-rules-manager-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:forwardingrules-manager:config","conformance-type":"import"},{"name":"odl-srm-types_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-types?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:types","conformance-type":"import"},{"name":"ietf-x509-cert-to-name_2014-12-10","revision":"2014-12-10","schema":"/rests/modules/ietf-x509-cert-to-name?revision=2014-12-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-x509-cert-to-name","conformance-type":"import"},{"name":"flow-node-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-node-inventory?revision=2013-08-19","namespace":"urn:opendaylight:flow:inventory","conformance-type":"import"},{"name":"flow-errors_2013-11-16","revision":"2013-11-16","schema":"/rests/modules/flow-errors?revision=2013-11-16","namespace":"urn:opendaylight:flow:errors","conformance-type":"import"},{"name":"ietf-netconf_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:netconf:base:1.0","conformance-type":"import","feature":["xpath","url","rollback-on-error","validate","startup","candidate","confirmed-commit","writable-running"]},{"name":"iana-ssh-public-key-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-public-key-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-public-key-algs","conformance-type":"import"},{"name":"aaa-cert-mdsal_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/aaa-cert-mdsal?revision=2016-03-21","namespace":"urn:opendaylight:yang:aaa:cert:mdsal","conformance-type":"import"},{"name":"odl-device-notification_2024-02-18","revision":"2024-02-18","schema":"/rests/modules/odl-device-notification?revision=2024-02-18","namespace":"urn:opendaylight:device:notification","conformance-type":"import"},{"name":"ietf-origin_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-origin?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-origin","conformance-type":"import"},{"name":"openflow-augments_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-augments?revision=2015-02-25","namespace":"urn:opendaylight:openflow:augments","conformance-type":"import"},{"name":"iana-ssh-encryption-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-encryption-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-encryption-algs","conformance-type":"import"},{"name":"ietf-truststore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-truststore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-truststore","conformance-type":"import","feature":["inline-definitions-supported"]},{"name":"distributed-datastore-provider_2025-01-30","revision":"2025-01-30","schema":"/rests/modules/distributed-datastore-provider?revision=2025-01-30","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:distributed-datastore-provider","conformance-type":"import"},{"name":"opendaylight-group-types_2013-10-18","revision":"2013-10-18","schema":"/rests/modules/opendaylight-group-types?revision=2013-10-18","namespace":"urn:opendaylight:group:types","conformance-type":"import"},{"name":"sal-remote-augment_2023-11-03","revision":"2023-11-03","schema":"/rests/modules/sal-remote-augment?revision=2023-11-03","namespace":"urn:sal:restconf:event:subscription","conformance-type":"import"},{"name":"opendaylight-ipv6-arbitrary-bitmask-fields_2016-02-24","revision":"2016-02-24","schema":"/rests/modules/opendaylight-ipv6-arbitrary-bitmask-fields?revision=2016-02-24","namespace":"urn:opendaylight:opendaylight-ipv6-arbitrary-bitmask-fields","conformance-type":"import"},{"name":"sal-flows-batch_2016-03-14","revision":"2016-03-14","schema":"/rests/modules/sal-flows-batch?revision=2016-03-14","namespace":"urn:opendaylight:flows:service","conformance-type":"import"},{"name":"ietf-tls-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-common","conformance-type":"import","feature":["tls12","hello-params","tls13"]},{"name":"openflow-types_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-types?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:types","conformance-type":"import"},{"name":"ietf-netconf-with-defaults_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf-with-defaults?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults","conformance-type":"import"},{"name":"odl-srm-ops_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-ops?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:ops","conformance-type":"import"},{"name":"odl-general-entity_2015-09-30","revision":"2015-09-30","schema":"/rests/modules/odl-general-entity?revision=2015-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:mdsal:core:general-entity","conformance-type":"import"},{"name":"iana-ssh-key-exchange-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-key-exchange-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-key-exchange-algs","conformance-type":"import"},{"name":"node-ssl-connection-error_2019-07-23","revision":"2019-07-23","schema":"/rests/modules/node-ssl-connection-error?revision=2019-07-23","namespace":"urn:opendaylight:node-ssl-connection-error:service","conformance-type":"import"},{"name":"openflow-protocol_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-protocol?revision=2013-07-31","namespace":"urn:opendaylight:openflow:protocol","conformance-type":"import"},{"name":"ietf-udp-server_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-server?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-server","conformance-type":"import"},{"name":"ietf-keystore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-keystore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-keystore","conformance-type":"import","feature":["asymmetric-keys","inline-definitions-supported"]},{"name":"aaa_2016-12-14","revision":"2016-12-14","schema":"/rests/modules/aaa?revision=2016-12-14","namespace":"urn:opendaylight:params:xml:ns:yang:aaa","conformance-type":"import"},{"name":"aaa-cert-rpc_2015-12-15","revision":"2015-12-15","schema":"/rests/modules/aaa-cert-rpc?revision=2015-12-15","namespace":"urn:opendaylight:yang:aaa:cert:rpc","conformance-type":"import"},{"name":"system-notifications_2013-09-27","revision":"2013-09-27","schema":"/rests/modules/system-notifications?revision=2013-09-27","namespace":"urn:opendaylight:openflow:system","conformance-type":"import"},{"name":"sal-flat-batch_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/sal-flat-batch?revision=2016-03-21","namespace":"urn:opendaylight:flat-batch:service","conformance-type":"import"},{"name":"notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netconf:notification:1.0","conformance-type":"import"},{"name":"sal-remote_2014-01-14","revision":"2014-01-14","schema":"/rests/modules/sal-remote?revision=2014-01-14","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:remote","conformance-type":"import"},{"name":"yang-ext_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/yang-ext?revision=2013-07-09","namespace":"urn:opendaylight:yang:extension:yang-ext","conformance-type":"import"},{"name":"opendaylight-multipart-types_2017-01-12","revision":"2017-01-12","schema":"/rests/modules/opendaylight-multipart-types?revision=2017-01-12","namespace":"urn:opendaylight:multipart:types","conformance-type":"import"},{"name":"opendaylight-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-inventory?revision=2013-08-19","namespace":"urn:opendaylight:inventory","conformance-type":"import"},{"name":"sal-queue_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-queue?revision=2015-03-05","namespace":"urn:opendaylight:queue:service","conformance-type":"import"},{"name":"sal-groups-batch_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/sal-groups-batch?revision=2016-03-15","namespace":"urn:opendaylight:groups:service","conformance-type":"import"},{"name":"arbitrator-reconcile_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/arbitrator-reconcile?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:arbitrator-reconcile:service","conformance-type":"import"},{"name":"ietf-yang-metadata_2016-08-05","revision":"2016-08-05","schema":"/rests/modules/ietf-yang-metadata?revision=2016-08-05","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-metadata","conformance-type":"import"},{"name":"opendaylight-arbitrary-bitmask-fields_2016-01-30","revision":"2016-01-30","schema":"/rests/modules/opendaylight-arbitrary-bitmask-fields?revision=2016-01-30","namespace":"urn:opendaylight:arbitrary:bitmask:fields","conformance-type":"import"},{"name":"ietf-udp-client_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-client?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-client","conformance-type":"import","feature":["local-binding"]},{"name":"opendaylight-meter-types_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/opendaylight-meter-types?revision=2013-09-18","namespace":"urn:opendaylight:meter:types","conformance-type":"import"},{"name":"opendaylight-action-types_2013-11-12","revision":"2013-11-12","schema":"/rests/modules/opendaylight-action-types?revision=2013-11-12","namespace":"urn:opendaylight:action:types","conformance-type":"import"},{"name":"sal-role_2015-07-27","revision":"2015-07-27","schema":"/rests/modules/sal-role?revision=2015-07-27","namespace":"urn:opendaylight:role:service","conformance-type":"import"},{"name":"openflow-provider-config_2016-05-10","revision":"2016-05-10","schema":"/rests/modules/openflow-provider-config?revision=2016-05-10","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:provider:config","conformance-type":"import"},{"name":"odl-serviceutils-upgrade_2018-07-02","revision":"2018-07-02","schema":"/rests/modules/odl-serviceutils-upgrade?revision=2018-07-02","namespace":"urn:opendaylight:serviceutils:upgrade","conformance-type":"import"},{"name":"opendaylight-match-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-match-types?revision=2013-10-26","namespace":"urn:opendaylight:model:match:types","conformance-type":"import"},{"name":"ietf-restconf-server_2024-08-14","revision":"2024-08-14","schema":"/rests/modules/ietf-restconf-server?revision=2024-08-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-server","conformance-type":"import","feature":["http-listen","https-listen"]},{"name":"reconciliation-result-state_2017-07-13","revision":"2017-07-13","schema":"/rests/modules/reconciliation-result-state?revision=2017-07-13","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:rf:state","conformance-type":"import"},{"name":"onf-extensions_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/onf-extensions?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf","conformance-type":"import"},{"name":"sal-table_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/sal-table?revision=2013-10-26","namespace":"urn:opendaylight:table:service","conformance-type":"import"},{"name":"iana-http-versions_2026-02-04","revision":"2026-02-04","schema":"/rests/modules/iana-http-versions?revision=2026-02-04","namespace":"urn:ietf:params:xml:ns:yang:iana-http-versions","conformance-type":"import"},{"name":"opendaylight-direct-statistics_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/opendaylight-direct-statistics?revision=2016-05-11","namespace":"urn:opendaylight:direct:statistics","conformance-type":"import"},{"name":"opendaylight-port-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-port-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:port","conformance-type":"import"},{"name":"sal-async-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/sal-async-config?revision=2017-06-19","namespace":"urn:opendaylight:async-config:service","conformance-type":"import"},{"name":"aaa-password-service-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-password-service-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:password:service:config","conformance-type":"import"},{"name":"ietf-yang-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-yang-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-types","conformance-type":"import"},{"name":"opendaylight-queue-statistics_2013-12-16","revision":"2013-12-16","schema":"/rests/modules/opendaylight-queue-statistics?revision=2013-12-16","namespace":"urn:opendaylight:queue:statistics","conformance-type":"import"},{"name":"sal-bundle_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/sal-bundle?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf:bundle:service","conformance-type":"import"},{"name":"ietf-restconf-subscribed-notifications_2019-11-17","revision":"2019-11-17","schema":"/rests/modules/ietf-restconf-subscribed-notifications?revision=2019-11-17","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-subscribed-notifications","conformance-type":"import"},{"name":"sal-meters-batch_2016-03-16","revision":"2016-03-16","schema":"/rests/modules/sal-meters-batch?revision=2016-03-16","namespace":"urn:opendaylight:meters:service","conformance-type":"import"},{"name":"odl-entity-owners","revision":"","schema":"/rests/modules/odl-entity-owners","namespace":"urn:opendaylight:params:xml:ns:yang:controller:entity-owners","conformance-type":"import"},{"name":"sal-experimenter-mp-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-mp-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-mp-message:service","conformance-type":"import"},{"name":"packet-processing_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/packet-processing?revision=2013-07-09","namespace":"urn:opendaylight:packet:service","conformance-type":"import"},{"name":"openflow-configuration_2014-06-30","revision":"2014-06-30","schema":"/rests/modules/openflow-configuration?revision=2014-06-30","namespace":"urn:opendaylight:openflow:config","conformance-type":"import"},{"name":"odl-srm-rpcs_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-rpcs?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:rpc","conformance-type":"import"},{"name":"ietf-netconf-acm_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-netconf-acm?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-acm","conformance-type":"import"},{"name":"iana-crypt-hash_2014-08-06","revision":"2014-08-06","schema":"/rests/modules/iana-crypt-hash?revision=2014-08-06","namespace":"urn:ietf:params:xml:ns:yang:iana-crypt-hash","conformance-type":"import","feature":["crypt-hash-sha-512","crypt-hash-sha-256","crypt-hash-md5"]},{"name":"openflow-extensible-match_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-extensible-match?revision=2015-02-25","namespace":"urn:opendaylight:openflow:oxm","conformance-type":"import"}],"module-set-id":"2"}}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:28.767543" elapsed="0.004285"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:28.767220" elapsed="0.004660"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:28.767190" elapsed="0.004726"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:28.775602" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:28.772345" elapsed="0.003325"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:28.771999" elapsed="0.003721"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:28.771975" elapsed="0.003781"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:50:28.776565" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:50:28.775990" elapsed="0.000615"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:28.777055" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:28.776709" elapsed="0.000426"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:28.777829" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:28.777413" elapsed="0.000452"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:28.777189" elapsed="0.000725"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:28.776682" elapsed="0.001262"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:50:28.778729" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:50:28.778185" elapsed="0.000583"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:28.779104" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:28.778866" elapsed="0.000312"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:28.779658" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:28.779363" elapsed="0.000321"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:28.779203" elapsed="0.000515"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:28.778840" elapsed="0.000899"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:50:28.779889" elapsed="0.000360"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:50:28.780685" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:50:28.780412" elapsed="0.000299"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:50:28.780861" elapsed="0.002183"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:50:28.766382" elapsed="0.016724"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:50:28.783299" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:50:28.783193" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:28.783172" elapsed="0.000193"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:50:28.791485" level="INFO">${text_normalized} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:50:28.783508" elapsed="0.008007"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:50:28.791567" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:50:28.791726" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:50:28.742918" elapsed="0.048834"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:50:28.791814" elapsed="0.000026"/>
</return>
<msg time="2026-04-08T00:50:28.792207" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="PASS" start="2026-04-08T00:50:28.652815" elapsed="0.139433"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Json_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:28.792707" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:28.792374" elapsed="0.000452"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:28.792343" elapsed="0.000526"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:50:28.792928" elapsed="0.000070"/>
</return>
<arg>session=${session}</arg>
<arg>folder=${RESTCONF_MODULES_DIR}</arg>
<arg>verify=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Add arguments sensible for JSON data, return Get_Templated response text.
Optionally, verification against JSON data (may be iterated) is called.
Only subset of JSON data is verified and returned if JMES path is specified in
file ${folder}/jmespath.expr.</doc>
<status status="PASS" start="2026-04-08T00:50:28.646973" elapsed="0.146232"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:28.641505" elapsed="0.151811"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:28.641487" elapsed="0.151856"/>
</if>
<kw name="Resolve_Shard_Type_Class" owner="ClusterManagement">
<if>
<branch type="IF" condition="'${shard_type}' == 'config'">
<return>
<value>DistributedConfigDatastore</value>
<status status="NOT RUN" start="2026-04-08T00:50:28.794235" elapsed="0.000047"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:50:28.793996" elapsed="0.000331"/>
</branch>
<branch type="ELSE IF" condition="'${shard_type}' == 'operational'">
<return>
<value>DistributedOperationalDatastore</value>
<status status="PASS" start="2026-04-08T00:50:28.794602" elapsed="0.000082"/>
</return>
<status status="PASS" start="2026-04-08T00:50:28.794383" elapsed="0.000352"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:28.793964" elapsed="0.000830"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized shard type: ${shard_type}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:28.795018" elapsed="0.000065"/>
</kw>
<msg time="2026-04-08T00:50:28.795236" level="INFO">${type_class} = DistributedOperationalDatastore</msg>
<var>${type_class}</var>
<arg>shard_type=${shard_type}</arg>
<doc>Simple lookup for class name corresponding to desired type.</doc>
<status status="PASS" start="2026-04-08T00:50:28.793604" elapsed="0.001658"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:50:28.796062" level="INFO">${cluster_index} = 3</msg>
<var>${cluster_index}</var>
<arg>${member_index}+${NODE_ROLE_INDEX_START}-1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:50:28.795431" elapsed="0.000659"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:28.797235" level="INFO">${uri} = jolokia/read/org.opendaylight.controller:Category=Shards,name=member-3-shard-topology-operational,type=DistributedOperationalDatastore</msg>
<var>${uri}</var>
<arg>${JOLOKIA_READ_URI}:Category=Shards,name=member-${cluster_index}-shard-${shard_name}-${shard_type},type=${type_class}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:28.796263" elapsed="0.001000"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:28.804100" level="INFO">jolokia/read/org.opendaylight.controller:Category=Shards,name=member-3-shard-topology-operational,type=DistributedOperationalDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:28.803817" elapsed="0.000479"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:28.804822" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:28.804542" elapsed="0.000362"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:50:28.812692" level="INFO">GET Request : url=http://10.30.171.110:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-3-shard-topology-operational,type=DistributedOperationalDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-3-shard-topology-operational,type=DistributedOperationalDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:50:28.812751" level="INFO">GET Response : url=http://10.30.171.110:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-3-shard-topology-operational,type=DistributedOperationalDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Wed, 08 Apr 2026 00:50:28 GMT', 'Expires': 'Tue, 07 Apr 2026 23:50:28 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-3-shard-topology-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"ReadWriteTransactionCount":0,"SnapshotIndex":44,"InMemoryJournalLogSize":1,"ReplicatedToAllIndex":44,"Leader":"member-1-shard-topology-operational","LastIndex":45,"RaftState":"Follower","LastApplied":45,"LastCommittedTransactionTime":"1970-01-01 00:00:00.000","PeerAddresses":"member-1-shard-topology-operational: pekko:\/\/opendaylight-cluster-data@10.30.170.48:2550\/user\/shardmanager-operational\/member-1-shard-topology-operational, member-2-shard-topology-operational: pekko:\/\/opendaylight-cluster-data@10.30.170.131:2550\/user\/shardmanager-operational\/member-2-shard-topology-operational","LastLogIndex":45,"LastLeadershipChangeTime":"2026-04-08 00:46:45.978","FollowerInitialSyncStatus":true,"FollowerInfo":[],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"204.1 μs","CurrentTerm":2,"LastTerm":2,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-topology-operational","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":0,"TxCohortCacheSize":0,"PeerVotingStates":"member-1-shard-topology-operational: true, member-2-shard-topology-operational: true","LastLogTerm":2,"StatRetrievalError":null,"CommitIndex":45,"SnapshotTerm":2,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-3-shard-topology-operational","LeadershipChangeCount":1,"InMemoryJournalDataSize":8474},"timestamp":1775609428,"status":200} 
 </msg>
<msg time="2026-04-08T00:50:28.812853" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:50:28.806999" elapsed="0.005879"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:28.805052" elapsed="0.007868"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:28.813120" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:28.812966" elapsed="0.000236"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:28.805007" elapsed="0.008234"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:28.816707" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-3-shard-topology-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"ReadWriteTransactionCount":0,"SnapshotIndex":44,"InMemoryJournalLogSize":1,"ReplicatedToAllIndex":44,"Leader":"member-1-shard-topology-operational","LastIndex":45,"RaftState":"Follower","LastApplied":45,"LastCommittedTransactionTime":"1970-01-01 00:00:00.000","PeerAddresses":"member-1-shard-topology-operational: pekko:\/\/opendaylight-cluster-data@10.30.170.48:2550\/user\/shardmanager-operational\/member-1-shard-topology-operational, member-2-shard-topology-operational: pekko:\/\/opendaylight-cluster-data@10.30.170.131:2550\/user\/shardmanager-operational\/member-2-shard-topology-operational","LastLogIndex":45,"LastLeadershipChangeTime":"2026-04-08 00:46:45.978","FollowerInitialSyncStatus":true,"FollowerInfo":[],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"204.1 μs","CurrentTerm":2,"LastTerm":2,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-topology-operational","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":0,"TxCohortCacheSize":0,"PeerVotingStates":"member-1-shard-topology-operational: true, member-2-shard-topology-operational: true","LastLogTerm":2,"StatRetrievalError":null,"CommitIndex":45,"SnapshotTerm":2,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-3-shard-topology-operational","LeadershipChangeCount":1,"InMemoryJournalDataSize":8474},"timestamp":1775609428,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:28.814322" elapsed="0.002445"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:28.814054" elapsed="0.002749"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:28.814035" elapsed="0.002792"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:28.819468" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:28.817103" elapsed="0.002428"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:28.816884" elapsed="0.002695"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:28.816867" elapsed="0.002746"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:50:28.820412" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:50:28.819834" elapsed="0.000618"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:28.820910" elapsed="0.000033"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:28.820556" elapsed="0.000437"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:28.821692" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:28.821272" elapsed="0.000456"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:28.821025" elapsed="0.000753"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:28.820529" elapsed="0.001278"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:50:28.822558" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:50:28.822034" elapsed="0.000601"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:28.823077" elapsed="0.000029"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:28.822742" elapsed="0.000434"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:28.823846" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:28.823437" elapsed="0.000444"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:28.823212" elapsed="0.000718"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:28.822715" elapsed="0.001244"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:50:28.824193" elapsed="0.000483"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:50:28.825302" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:50:28.824904" elapsed="0.000434"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:50:28.825552" elapsed="0.003019"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:50:28.813634" elapsed="0.015023"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:50:28.829028" elapsed="0.000021"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:50:28.828873" elapsed="0.000218"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:28.828810" elapsed="0.000333"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:50:28.832590" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-3-shard-topology-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:50:28.829499" elapsed="0.003145"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:50:28.832727" elapsed="0.000064"/>
</return>
<msg time="2026-04-08T00:50:28.833081" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-3-shard-topology-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:50:28.798867" elapsed="0.034421"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:50:28.833427" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:50:28.833699" level="INFO">${data_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-3-shard-topology-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp...</msg>
<var>${data_text}</var>
<arg>uri=${uri}</arg>
<arg>session=${session}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-08T00:50:28.797479" elapsed="0.036248"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:50:28.835839" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-3-shard-topology-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 17756094...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:50:28.834804" elapsed="0.001134"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-08T00:50:28.836022" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:50:28.836330" level="INFO">${data_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-3-shard-topology-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 17756094...</msg>
<var>${data_object}</var>
<arg>${data_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-08T00:50:28.833952" elapsed="0.002407"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:28.836824" level="INFO">${value} = {'AbortTransactionsCount': 0, 'CommitIndex': 45, 'CommittedTransactionsCount': 0, 'CurrentTerm': 2, 'FailedReadTransactionsCount': 0, 'FailedTransactionsCount': 0, 'FollowerInfo': [], 'FollowerInitial...</msg>
<var>${value}</var>
<arg>${data_object}</arg>
<arg>value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:28.836515" elapsed="0.000337"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:28.837410" level="INFO">${raft_property} = Follower</msg>
<var>${raft_property}</var>
<arg>${value}</arg>
<arg>${property}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:28.837011" elapsed="0.000426"/>
</kw>
<return>
<value>${raft_property}</value>
<status status="PASS" start="2026-04-08T00:50:28.837484" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:50:28.837635" level="INFO">${raft_state} = Follower</msg>
<var>${raft_state}</var>
<arg>RaftState</arg>
<arg>${shard_name}</arg>
<arg>${shard_type}</arg>
<arg>${member_index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft property.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T00:50:28.638913" elapsed="0.198747"/>
</kw>
<return>
<value>${raft_state}</value>
<status status="PASS" start="2026-04-08T00:50:28.837716" elapsed="0.000025"/>
</return>
<msg time="2026-04-08T00:50:28.837860" level="INFO">${raft_state} = Follower</msg>
<var>${raft_state}</var>
<arg>shard_name=${shard_name}</arg>
<arg>shard_type=${ds_type}</arg>
<arg>member_index=${index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft status.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T00:50:28.638082" elapsed="0.199802"/>
</kw>
<if>
<branch type="IF" condition="'Follower' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${follower_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-08T00:50:28.838204" elapsed="0.000193"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:28.837963" elapsed="0.000473"/>
</branch>
<branch type="ELSE IF" condition="'Leader' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${leader_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:28.838625" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:28.838460" elapsed="0.000223"/>
</branch>
<branch type="ELSE IF" condition="${validate}">
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized Raft state: ${raft_state}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:28.838846" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:28.838705" elapsed="0.000192"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:28.837945" elapsed="0.000973"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T00:50:28.637892" elapsed="0.201050"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-08T00:50:28.233023" elapsed="0.605948"/>
</for>
<return>
<value>${leader_list}</value>
<value>${follower_list}</value>
<status status="PASS" start="2026-04-08T00:50:28.839010" elapsed="0.000026"/>
</return>
<msg time="2026-04-08T00:50:28.839227" level="INFO">${leader_list} = [1]</msg>
<msg time="2026-04-08T00:50:28.839274" level="INFO">${follower_list} = [2, 3]</msg>
<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="PASS" start="2026-04-08T00:50:28.229030" elapsed="0.610267"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T00:50:28.839739" level="INFO">Length is 1.</msg>
<msg time="2026-04-08T00:50:28.839813" level="INFO">${leader_count} = 1</msg>
<var>${leader_count}</var>
<arg>${leader_list}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T00:50:28.839470" elapsed="0.000367"/>
</kw>
<if>
<branch type="IF" condition="${leader_count} &lt; 1">
<kw name="Fail" owner="BuiltIn">
<arg>No leader found.</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:28.840119" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:28.839906" elapsed="0.000286"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:28.839888" elapsed="0.000328"/>
</if>
<kw name="Length Should Be" owner="BuiltIn">
<msg time="2026-04-08T00:50:28.842399" level="INFO">Length is 1.</msg>
<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="PASS" start="2026-04-08T00:50:28.840354" elapsed="0.002092"/>
</kw>
<kw name="Get From List" owner="Collections">
<msg time="2026-04-08T00:50:28.842865" level="INFO">${leader} = 1</msg>
<var>${leader}</var>
<arg>${leader_list}</arg>
<arg>0</arg>
<doc>Returns the value specified with an ``index`` from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:50:28.842675" elapsed="0.000219"/>
</kw>
<return>
<value>${leader}</value>
<value>${follower_list}</value>
<status status="PASS" start="2026-04-08T00:50:28.842942" elapsed="0.000028"/>
</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="PASS" start="2026-04-08T00:50:28.226362" elapsed="0.616732"/>
</kw>
<var name="${shard_name}">topology</var>
<status status="PASS" start="2026-04-08T00:50:28.226062" elapsed="0.617079"/>
</iter>
<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-04-08T00:50:28.847506" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:50:28.847103" elapsed="0.000429"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:50:28.847995" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:50:28.847691" elapsed="0.000329"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:50:28.848064" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:50:28.848233" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:50:28.846734" elapsed="0.001524"/>
</kw>
<kw name="Sort List" owner="Collections">
<arg>${index_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="PASS" start="2026-04-08T00:50:28.848410" elapsed="0.000151"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:50:28.849049" level="INFO">${ds_type} = operational</msg>
<var>${ds_type}</var>
<arg>'${shard_type}' != 'config'</arg>
<arg>operational</arg>
<arg>config</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:50:28.848719" elapsed="0.000356"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:50:28.849488" level="INFO">${leader_list} = []</msg>
<var>${leader_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:50:28.849247" elapsed="0.000266"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:50:28.849892" level="INFO">${follower_list} = []</msg>
<var>${follower_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:50:28.849660" elapsed="0.000257"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_Raft_State_Of_Shard_At_Member" owner="ClusterManagement">
<kw name="Get_Raft_Property_From_Shard_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:28.853198" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:28.852335" elapsed="0.000958"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:50:28.853373" elapsed="0.000031"/>
</return>
<msg time="2026-04-08T00:50:28.853639" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:50:28.851796" elapsed="0.001869"/>
</kw>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Get_As_Json_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:28.901884" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:28.901511" elapsed="0.000401"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:50:28.902685" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:50:28.902444" elapsed="0.000310">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-08T00:50:28.902845" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:50:28.902074" elapsed="0.000796"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:50:28.903429" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:50:28.903031" elapsed="0.000425"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T00:50:28.903747" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-08T00:50:28.903875" level="INFO">${template} = /rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T00:50:28.903614" elapsed="0.000287"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:28.904357" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:28.904090" elapsed="0.000312"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:28.905347" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:28.905073" elapsed="0.000319"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-08T00:50:28.905813" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-08T00:50:28.905551" elapsed="0.000288"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:28.906149" elapsed="0.000042"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:28.906372" elapsed="0.000024"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:28.906556" elapsed="0.000021"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-08T00:50:28.906017" elapsed="0.000596"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-08T00:50:28.905886" elapsed="0.000756"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-08T00:50:28.906683" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:50:28.906839" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-08T00:50:28.904756" elapsed="0.002108"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:28.904471" elapsed="0.002425"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:28.907064" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:28.906920" elapsed="0.000199"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:28.904451" elapsed="0.002688"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:50:28.907720" level="INFO">${final_text} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:50:28.907295" elapsed="0.000452"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T00:50:28.907795" 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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="PASS" start="2026-04-08T00:50:28.900877" elapsed="0.007040"/>
</kw>
<msg time="2026-04-08T00:50:28.907969" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:50:28.888953" elapsed="0.019068"/>
</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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:28.919674" elapsed="0.000029"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:28.931094" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:28.942589" elapsed="0.000027"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:28.942780" elapsed="0.000022"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:28.942953" elapsed="0.000021"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:28.943329" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:28.943186" elapsed="0.000234"/>
</branch>
<status status="NOT RUN" start="2026-04-08T00:50:28.943170" elapsed="0.000273"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:28.943583" elapsed="0.000021"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:28.943748" elapsed="0.000021"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:28.943917" elapsed="0.000020"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-08T00:50:28.943126" elapsed="0.000844"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-08T00:50:28.943026" elapsed="0.000970"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:28.944138" elapsed="0.000034"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-08T00:50:28.944229" elapsed="0.000016"/>
</return>
<msg time="2026-04-08T00:50:28.944343" level="INFO">${uri} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-08T00:50:28.884978" elapsed="0.059391"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:50:28.945587" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:50:28.945352" elapsed="0.000298">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-08T00:50:28.945740" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:50:28.944998" elapsed="0.000766"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:28.946076" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:28.945835" elapsed="0.000297"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:28.946635" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:28.946334" elapsed="0.000328"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:28.946170" elapsed="0.000526"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:28.945816" elapsed="0.000902"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:50:28.948901" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:50:28.946867" elapsed="0.002060"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-08T00:50:28.948978" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:50:28.949129" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:50:28.944680" elapsed="0.004492"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:50:28.950406" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:50:28.950124" elapsed="0.000347">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-08T00:50:28.950563" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:50:28.949792" elapsed="0.000795"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-08T00:50:28.950792" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-08T00:50:28.950658" elapsed="0.000192"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:28.950640" elapsed="0.000233"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:28.951016" elapsed="0.000022"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:28.951206" elapsed="0.000023"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-08T00:50:28.951274" elapsed="0.000015"/>
</return>
<msg time="2026-04-08T00:50:28.953206" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:50:28.949475" elapsed="0.003758"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:28.954667" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:28.954418" elapsed="0.000296"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:28.955103" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:28.954864" elapsed="0.000283"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:50:28.968472" level="INFO">GET Request : url=http://10.30.170.48:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 path_url=/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01nfu2ssrokr1es5zgka78rw970.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:50:28.969404" level="INFO">GET Response : url=http://10.30.170.48:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Transfer-Encoding': 'chunked'} 
 body={"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","hidden-symmetric-keys","encrypted-private-keys","asymmetrically-encrypted-value-format","cms-encrypted-data-format","cleartext-private-keys","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["ssh-client-keepalives","client-ident-hostbased","client-ident-publickey","client-ident-password"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-ex... (set the log level to DEBUG or TRACE to see the full content) 
 </msg>
<msg time="2026-04-08T00:50:28.969832" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:50:28.957122" elapsed="0.012768"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:28.955230" elapsed="0.014754"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:28.970426" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:28.970041" elapsed="0.000531"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:28.955211" elapsed="0.015407"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:28.978640" level="INFO">{"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","hidden-symmetric-keys","encrypted-private-keys","asymmetrically-encrypted-value-format","cms-encrypted-data-format","cleartext-private-keys","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["ssh-client-keepalives","client-ident-hostbased","client-ident-publickey","client-ident-password"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-experimenter-types?revision=2015-10-20","namespace":"urn:opendaylight:openflowplugin:experimenter:types","conformance-type":"import"},{"name":"ietf-ip_2018-02-22","revision":"2018-02-22","schema":"/rests/modules/ietf-ip?revision=2018-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-ip","conformance-type":"import","feature":["ipv6-privacy-autoconf","ipv4-non-contiguous-netmasks"]},{"name":"ietf-tcp-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-client","conformance-type":"import","feature":["local-binding-supported","tcp-client-keepalives"]},{"name":"node-config_2014-10-15","revision":"2014-10-15","schema":"/rests/modules/node-config?revision=2014-10-15","namespace":"urn:opendaylight:module:config","conformance-type":"import"},{"name":"ietf-restconf_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf","conformance-type":"import"},{"name":"ietf-datastores_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-datastores?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-datastores","conformance-type":"import"},{"name":"ietf-yang-patch_2017-02-22","revision":"2017-02-22","schema":"/rests/modules/ietf-yang-patch?revision=2017-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-patch","conformance-type":"import"},{"name":"sal-group_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-group?revision=2013-09-18","namespace":"urn:opendaylight:group:service","conformance-type":"import"},{"name":"odl-codegen-extensions_2024-06-27","revision":"2024-06-27","schema":"/rests/modules/odl-codegen-extensions?revision=2024-06-27","namespace":"urn:opendaylight:yang:extension:codegen","conformance-type":"import"},{"name":"sal-meter_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-meter?revision=2013-09-18","namespace":"urn:opendaylight:meter:service","conformance-type":"import"},{"name":"ietf-interfaces_2018-02-20","revision":"2018-02-20","schema":"/rests/modules/ietf-interfaces?revision=2018-02-20","namespace":"urn:ietf:params:xml:ns:yang:ietf-interfaces","conformance-type":"import","feature":["pre-provisioning","if-mib","arbitrary-names"]},{"name":"opendaylight-l2-types_2013-08-27","revision":"2013-08-27","schema":"/rests/modules/opendaylight-l2-types?revision=2013-08-27","namespace":"urn:opendaylight:l2:types","conformance-type":"import"},{"name":"opendaylight-flow-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-flow-types?revision=2013-10-26","namespace":"urn:opendaylight:flow:types","conformance-type":"import"},{"name":"lldp-speaker-config_2016-05-12","revision":"2016-05-12","schema":"/rests/modules/lldp-speaker-config?revision=2016-05-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker:config","conformance-type":"import"},{"name":"aaa-cert_2015-11-26","revision":"2015-11-26","schema":"/rests/modules/aaa-cert?revision=2015-11-26","namespace":"urn:opendaylight:yang:aaa:cert","conformance-type":"import"},{"name":"openflow-action_2015-02-03","revision":"2015-02-03","schema":"/rests/modules/openflow-action?revision=2015-02-03","namespace":"urn:opendaylight:openflow:common:action","conformance-type":"import"},{"name":"openflow-approved-extensions_2016-08-02","revision":"2016-08-02","schema":"/rests/modules/openflow-approved-extensions?revision=2016-08-02","namespace":"urn:opendaylight:openflow:approved:extensions","conformance-type":"import"},{"name":"nc-notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/nc-notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netmod:notification","conformance-type":"import"},{"name":"ietf-netconf-nmda_2019-01-07","revision":"2019-01-07","schema":"/rests/modules/ietf-netconf-nmda?revision=2019-01-07","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-nmda","conformance-type":"import","feature":["with-defaults","origin"]},{"name":"ietf-tcp-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-common","conformance-type":"import","feature":["keepalives-supported"]},{"name":"network-topology_2013-10-21","revision":"2013-10-21","schema":"/rests/modules/network-topology?revision=2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:network-topology","conformance-type":"import"},{"name":"aaa-encrypt-service-config_2024-02-02","revision":"2024-02-02","schema":"/rests/modules/aaa-encrypt-service-config?revision=2024-02-02","namespace":"config:aaa:authn:encrypt:service:config","conformance-type":"import"},{"name":"openflow-instruction_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-instruction?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:instruction","conformance-type":"import"},{"name":"ietf-tls-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-client","conformance-type":"import","feature":["client-ident-x509-cert","server-auth-x509-cert"]},{"name":"opendaylight-group-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-group-statistics?revision=2013-11-11","namespace":"urn:opendaylight:group:statistics","conformance-type":"import"},{"name":"cluster-admin_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/cluster-admin?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:cluster:admin","conformance-type":"import"},{"name":"opendaylight-flow-statistics_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-flow-statistics?revision=2013-08-19","namespace":"urn:opendaylight:flow:statistics","conformance-type":"import"},{"name":"opendaylight-table-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-table-types?revision=2013-10-26","namespace":"urn:opendaylight:table:types","conformance-type":"import"},{"name":"forwarding-rules-manager-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/forwarding-rules-manager-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:forwardingrules-manager:config","conformance-type":"import"},{"name":"odl-srm-types_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-types?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:types","conformance-type":"import"},{"name":"ietf-x509-cert-to-name_2014-12-10","revision":"2014-12-10","schema":"/rests/modules/ietf-x509-cert-to-name?revision=2014-12-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-x509-cert-to-name","conformance-type":"import"},{"name":"flow-node-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-node-inventory?revision=2013-08-19","namespace":"urn:opendaylight:flow:inventory","conformance-type":"import"},{"name":"flow-errors_2013-11-16","revision":"2013-11-16","schema":"/rests/modules/flow-errors?revision=2013-11-16","namespace":"urn:opendaylight:flow:errors","conformance-type":"import"},{"name":"ietf-netconf_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:netconf:base:1.0","conformance-type":"import","feature":["xpath","url","rollback-on-error","validate","startup","candidate","confirmed-commit","writable-running"]},{"name":"iana-ssh-public-key-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-public-key-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-public-key-algs","conformance-type":"import"},{"name":"aaa-cert-mdsal_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/aaa-cert-mdsal?revision=2016-03-21","namespace":"urn:opendaylight:yang:aaa:cert:mdsal","conformance-type":"import"},{"name":"odl-device-notification_2024-02-18","revision":"2024-02-18","schema":"/rests/modules/odl-device-notification?revision=2024-02-18","namespace":"urn:opendaylight:device:notification","conformance-type":"import"},{"name":"ietf-origin_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-origin?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-origin","conformance-type":"import"},{"name":"openflow-augments_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-augments?revision=2015-02-25","namespace":"urn:opendaylight:openflow:augments","conformance-type":"import"},{"name":"iana-ssh-encryption-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-encryption-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-encryption-algs","conformance-type":"import"},{"name":"ietf-truststore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-truststore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-truststore","conformance-type":"import","feature":["inline-definitions-supported"]},{"name":"distributed-datastore-provider_2025-01-30","revision":"2025-01-30","schema":"/rests/modules/distributed-datastore-provider?revision=2025-01-30","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:distributed-datastore-provider","conformance-type":"import"},{"name":"opendaylight-group-types_2013-10-18","revision":"2013-10-18","schema":"/rests/modules/opendaylight-group-types?revision=2013-10-18","namespace":"urn:opendaylight:group:types","conformance-type":"import"},{"name":"sal-remote-augment_2023-11-03","revision":"2023-11-03","schema":"/rests/modules/sal-remote-augment?revision=2023-11-03","namespace":"urn:sal:restconf:event:subscription","conformance-type":"import"},{"name":"opendaylight-ipv6-arbitrary-bitmask-fields_2016-02-24","revision":"2016-02-24","schema":"/rests/modules/opendaylight-ipv6-arbitrary-bitmask-fields?revision=2016-02-24","namespace":"urn:opendaylight:opendaylight-ipv6-arbitrary-bitmask-fields","conformance-type":"import"},{"name":"sal-flows-batch_2016-03-14","revision":"2016-03-14","schema":"/rests/modules/sal-flows-batch?revision=2016-03-14","namespace":"urn:opendaylight:flows:service","conformance-type":"import"},{"name":"ietf-tls-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-common","conformance-type":"import","feature":["tls12","hello-params","tls13"]},{"name":"openflow-types_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-types?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:types","conformance-type":"import"},{"name":"ietf-netconf-with-defaults_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf-with-defaults?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults","conformance-type":"import"},{"name":"odl-srm-ops_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-ops?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:ops","conformance-type":"import"},{"name":"odl-general-entity_2015-09-30","revision":"2015-09-30","schema":"/rests/modules/odl-general-entity?revision=2015-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:mdsal:core:general-entity","conformance-type":"import"},{"name":"iana-ssh-key-exchange-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-key-exchange-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-key-exchange-algs","conformance-type":"import"},{"name":"node-ssl-connection-error_2019-07-23","revision":"2019-07-23","schema":"/rests/modules/node-ssl-connection-error?revision=2019-07-23","namespace":"urn:opendaylight:node-ssl-connection-error:service","conformance-type":"import"},{"name":"openflow-protocol_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-protocol?revision=2013-07-31","namespace":"urn:opendaylight:openflow:protocol","conformance-type":"import"},{"name":"ietf-udp-server_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-server?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-server","conformance-type":"import"},{"name":"ietf-keystore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-keystore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-keystore","conformance-type":"import","feature":["asymmetric-keys","inline-definitions-supported"]},{"name":"aaa_2016-12-14","revision":"2016-12-14","schema":"/rests/modules/aaa?revision=2016-12-14","namespace":"urn:opendaylight:params:xml:ns:yang:aaa","conformance-type":"import"},{"name":"aaa-cert-rpc_2015-12-15","revision":"2015-12-15","schema":"/rests/modules/aaa-cert-rpc?revision=2015-12-15","namespace":"urn:opendaylight:yang:aaa:cert:rpc","conformance-type":"import"},{"name":"system-notifications_2013-09-27","revision":"2013-09-27","schema":"/rests/modules/system-notifications?revision=2013-09-27","namespace":"urn:opendaylight:openflow:system","conformance-type":"import"},{"name":"sal-flat-batch_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/sal-flat-batch?revision=2016-03-21","namespace":"urn:opendaylight:flat-batch:service","conformance-type":"import"},{"name":"notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netconf:notification:1.0","conformance-type":"import"},{"name":"sal-remote_2014-01-14","revision":"2014-01-14","schema":"/rests/modules/sal-remote?revision=2014-01-14","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:remote","conformance-type":"import"},{"name":"yang-ext_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/yang-ext?revision=2013-07-09","namespace":"urn:opendaylight:yang:extension:yang-ext","conformance-type":"import"},{"name":"opendaylight-multipart-types_2017-01-12","revision":"2017-01-12","schema":"/rests/modules/opendaylight-multipart-types?revision=2017-01-12","namespace":"urn:opendaylight:multipart:types","conformance-type":"import"},{"name":"opendaylight-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-inventory?revision=2013-08-19","namespace":"urn:opendaylight:inventory","conformance-type":"import"},{"name":"sal-queue_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-queue?revision=2015-03-05","namespace":"urn:opendaylight:queue:service","conformance-type":"import"},{"name":"sal-groups-batch_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/sal-groups-batch?revision=2016-03-15","namespace":"urn:opendaylight:groups:service","conformance-type":"import"},{"name":"arbitrator-reconcile_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/arbitrator-reconcile?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:arbitrator-reconcile:service","conformance-type":"import"},{"name":"ietf-yang-metadata_2016-08-05","revision":"2016-08-05","schema":"/rests/modules/ietf-yang-metadata?revision=2016-08-05","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-metadata","conformance-type":"import"},{"name":"opendaylight-arbitrary-bitmask-fields_2016-01-30","revision":"2016-01-30","schema":"/rests/modules/opendaylight-arbitrary-bitmask-fields?revision=2016-01-30","namespace":"urn:opendaylight:arbitrary:bitmask:fields","conformance-type":"import"},{"name":"ietf-udp-client_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-client?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-client","conformance-type":"import","feature":["local-binding"]},{"name":"opendaylight-meter-types_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/opendaylight-meter-types?revision=2013-09-18","namespace":"urn:opendaylight:meter:types","conformance-type":"import"},{"name":"opendaylight-action-types_2013-11-12","revision":"2013-11-12","schema":"/rests/modules/opendaylight-action-types?revision=2013-11-12","namespace":"urn:opendaylight:action:types","conformance-type":"import"},{"name":"sal-role_2015-07-27","revision":"2015-07-27","schema":"/rests/modules/sal-role?revision=2015-07-27","namespace":"urn:opendaylight:role:service","conformance-type":"import"},{"name":"openflow-provider-config_2016-05-10","revision":"2016-05-10","schema":"/rests/modules/openflow-provider-config?revision=2016-05-10","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:provider:config","conformance-type":"import"},{"name":"odl-serviceutils-upgrade_2018-07-02","revision":"2018-07-02","schema":"/rests/modules/odl-serviceutils-upgrade?revision=2018-07-02","namespace":"urn:opendaylight:serviceutils:upgrade","conformance-type":"import"},{"name":"opendaylight-match-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-match-types?revision=2013-10-26","namespace":"urn:opendaylight:model:match:types","conformance-type":"import"},{"name":"ietf-restconf-server_2024-08-14","revision":"2024-08-14","schema":"/rests/modules/ietf-restconf-server?revision=2024-08-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-server","conformance-type":"import","feature":["http-listen","https-listen"]},{"name":"reconciliation-result-state_2017-07-13","revision":"2017-07-13","schema":"/rests/modules/reconciliation-result-state?revision=2017-07-13","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:rf:state","conformance-type":"import"},{"name":"onf-extensions_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/onf-extensions?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf","conformance-type":"import"},{"name":"sal-table_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/sal-table?revision=2013-10-26","namespace":"urn:opendaylight:table:service","conformance-type":"import"},{"name":"iana-http-versions_2026-02-04","revision":"2026-02-04","schema":"/rests/modules/iana-http-versions?revision=2026-02-04","namespace":"urn:ietf:params:xml:ns:yang:iana-http-versions","conformance-type":"import"},{"name":"opendaylight-direct-statistics_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/opendaylight-direct-statistics?revision=2016-05-11","namespace":"urn:opendaylight:direct:statistics","conformance-type":"import"},{"name":"opendaylight-port-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-port-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:port","conformance-type":"import"},{"name":"sal-async-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/sal-async-config?revision=2017-06-19","namespace":"urn:opendaylight:async-config:service","conformance-type":"import"},{"name":"aaa-password-service-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-password-service-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:password:service:config","conformance-type":"import"},{"name":"ietf-yang-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-yang-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-types","conformance-type":"import"},{"name":"opendaylight-queue-statistics_2013-12-16","revision":"2013-12-16","schema":"/rests/modules/opendaylight-queue-statistics?revision=2013-12-16","namespace":"urn:opendaylight:queue:statistics","conformance-type":"import"},{"name":"sal-bundle_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/sal-bundle?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf:bundle:service","conformance-type":"import"},{"name":"ietf-restconf-subscribed-notifications_2019-11-17","revision":"2019-11-17","schema":"/rests/modules/ietf-restconf-subscribed-notifications?revision=2019-11-17","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-subscribed-notifications","conformance-type":"import"},{"name":"sal-meters-batch_2016-03-16","revision":"2016-03-16","schema":"/rests/modules/sal-meters-batch?revision=2016-03-16","namespace":"urn:opendaylight:meters:service","conformance-type":"import"},{"name":"odl-entity-owners","revision":"","schema":"/rests/modules/odl-entity-owners","namespace":"urn:opendaylight:params:xml:ns:yang:controller:entity-owners","conformance-type":"import"},{"name":"sal-experimenter-mp-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-mp-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-mp-message:service","conformance-type":"import"},{"name":"packet-processing_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/packet-processing?revision=2013-07-09","namespace":"urn:opendaylight:packet:service","conformance-type":"import"},{"name":"openflow-configuration_2014-06-30","revision":"2014-06-30","schema":"/rests/modules/openflow-configuration?revision=2014-06-30","namespace":"urn:opendaylight:openflow:config","conformance-type":"import"},{"name":"odl-srm-rpcs_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-rpcs?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:rpc","conformance-type":"import"},{"name":"ietf-netconf-acm_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-netconf-acm?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-acm","conformance-type":"import"},{"name":"iana-crypt-hash_2014-08-06","revision":"2014-08-06","schema":"/rests/modules/iana-crypt-hash?revision=2014-08-06","namespace":"urn:ietf:params:xml:ns:yang:iana-crypt-hash","conformance-type":"import","feature":["crypt-hash-sha-512","crypt-hash-sha-256","crypt-hash-md5"]},{"name":"openflow-extensible-match_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-extensible-match?revision=2015-02-25","namespace":"urn:opendaylight:openflow:oxm","conformance-type":"import"}],"module-set-id":"2"}}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:28.972832" elapsed="0.006278"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:28.972355" elapsed="0.006790"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:28.972313" elapsed="0.006872"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:28.981639" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:28.979462" elapsed="0.002221"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:28.979243" elapsed="0.002474"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:28.979226" elapsed="0.002514"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:50:28.982300" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:50:28.981902" elapsed="0.000431"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:28.982651" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:28.982415" elapsed="0.000294"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:28.983202" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:28.982890" elapsed="0.000339"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:28.982732" elapsed="0.000532"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:28.982396" elapsed="0.000889"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:50:28.983797" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:50:28.983440" elapsed="0.000383"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:28.984122" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:28.983892" elapsed="0.000302"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:28.984669" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:28.984378" elapsed="0.000317"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:28.984218" elapsed="0.000511"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:28.983873" elapsed="0.000877"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:50:28.984895" elapsed="0.000356"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:50:28.985681" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:50:28.985413" elapsed="0.000294"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:50:28.985855" elapsed="0.002145"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:50:28.971400" elapsed="0.016662"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:50:28.988250" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:50:28.988130" elapsed="0.000164"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:28.988111" elapsed="0.000204"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:50:28.996341" level="INFO">${text_normalized} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:50:28.988457" elapsed="0.007914"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:50:28.996422" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:50:28.996578" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:50:28.953570" elapsed="0.043035"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:50:28.996666" elapsed="0.000026"/>
</return>
<msg time="2026-04-08T00:50:28.996969" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="PASS" start="2026-04-08T00:50:28.863870" elapsed="0.133136"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Json_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:28.997554" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:28.997131" elapsed="0.000550"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:28.997099" elapsed="0.000624"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:50:28.997783" elapsed="0.000072"/>
</return>
<arg>session=${session}</arg>
<arg>folder=${RESTCONF_MODULES_DIR}</arg>
<arg>verify=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Add arguments sensible for JSON data, return Get_Templated response text.
Optionally, verification against JSON data (may be iterated) is called.
Only subset of JSON data is verified and returned if JMES path is specified in
file ${folder}/jmespath.expr.</doc>
<status status="PASS" start="2026-04-08T00:50:28.858035" elapsed="0.140010"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:28.853736" elapsed="0.144433"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:28.853717" elapsed="0.144482"/>
</if>
<kw name="Resolve_Shard_Type_Class" owner="ClusterManagement">
<if>
<branch type="IF" condition="'${shard_type}' == 'config'">
<return>
<value>DistributedConfigDatastore</value>
<status status="NOT RUN" start="2026-04-08T00:50:28.999095" elapsed="0.000046"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:50:28.998875" elapsed="0.000329"/>
</branch>
<branch type="ELSE IF" condition="'${shard_type}' == 'operational'">
<return>
<value>DistributedOperationalDatastore</value>
<status status="PASS" start="2026-04-08T00:50:28.999477" elapsed="0.000068"/>
</return>
<status status="PASS" start="2026-04-08T00:50:28.999261" elapsed="0.000331"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:28.998843" elapsed="0.000806"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized shard type: ${shard_type}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:28.999872" elapsed="0.000065"/>
</kw>
<msg time="2026-04-08T00:50:29.000070" level="INFO">${type_class} = DistributedOperationalDatastore</msg>
<var>${type_class}</var>
<arg>shard_type=${shard_type}</arg>
<doc>Simple lookup for class name corresponding to desired type.</doc>
<status status="PASS" start="2026-04-08T00:50:28.998482" elapsed="0.001614"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:50:29.000923" level="INFO">${cluster_index} = 1</msg>
<var>${cluster_index}</var>
<arg>${member_index}+${NODE_ROLE_INDEX_START}-1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:50:29.000300" elapsed="0.000650"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:29.002051" level="INFO">${uri} = jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-default-operational,type=DistributedOperationalDatastore</msg>
<var>${uri}</var>
<arg>${JOLOKIA_READ_URI}:Category=Shards,name=member-${cluster_index}-shard-${shard_name}-${shard_type},type=${type_class}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:29.001106" elapsed="0.000973"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:29.009053" level="INFO">jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-default-operational,type=DistributedOperationalDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:29.008769" elapsed="0.000368"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:29.009676" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:29.009397" elapsed="0.000360"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:50:29.019689" level="INFO">GET Request : url=http://10.30.170.48:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-default-operational,type=DistributedOperationalDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-default-operational,type=DistributedOperationalDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:50:29.019748" level="INFO">GET Response : url=http://10.30.170.48:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-default-operational,type=DistributedOperationalDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Wed, 08 Apr 2026 00:50:29 GMT', 'Expires': 'Tue, 07 Apr 2026 23:50:29 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-1-shard-default-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"ReadWriteTransactionCount":20,"SnapshotIndex":70,"InMemoryJournalLogSize":4,"ReplicatedToAllIndex":70,"Leader":"member-1-shard-default-operational","LastIndex":74,"RaftState":"Leader","LastApplied":71,"LastCommittedTransactionTime":"2026-04-08 00:46:49.710","PeerAddresses":"member-3-shard-default-operational: pekko:\/\/opendaylight-cluster-data@10.30.171.110:2550\/user\/shardmanager-operational\/member-3-shard-default-operational, member-2-shard-default-operational: pekko:\/\/opendaylight-cluster-data@10.30.170.131:2550\/user\/shardmanager-operational\/member-2-shard-default-operational","LastLogIndex":74,"LastLeadershipChangeTime":"2026-04-08 00:46:45.934","FollowerInitialSyncStatus":false,"FollowerInfo":[{"timeSinceLastActivity":"00:00:00.101","active":true,"matchIndex":71,"voting":true,"id":"member-3-shard-default-operational","nextIndex":72},{"timeSinceLastActivity":"00:00:00.101","active":true,"matchIndex":71,"voting":true,"id":"member-2-shard-default-operational","nextIndex":72}],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"635.7 μs","CurrentTerm":2,"LastTerm":2,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-default-operational","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":11,"TxCohortCacheSize":0,"PeerVotingStates":"member-3-shard-default-operational: true, member-2-shard-default-operational: true","LastLogTerm":2,"StatRetrievalError":null,"CommitIndex":71,"SnapshotTerm":2,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":16,"ShardName":"member-1-shard-default-operational","LeadershipChangeCount":1,"InMemoryJournalDataSize":91091},"timestamp":1775609429,"status":200} 
 </msg>
<msg time="2026-04-08T00:50:29.019853" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:50:29.011826" elapsed="0.008055"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:29.009901" elapsed="0.010026"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:29.020126" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:29.019973" elapsed="0.000277"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:29.009856" elapsed="0.010462"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:29.024069" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-1-shard-default-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"ReadWriteTransactionCount":20,"SnapshotIndex":70,"InMemoryJournalLogSize":4,"ReplicatedToAllIndex":70,"Leader":"member-1-shard-default-operational","LastIndex":74,"RaftState":"Leader","LastApplied":71,"LastCommittedTransactionTime":"2026-04-08 00:46:49.710","PeerAddresses":"member-3-shard-default-operational: pekko:\/\/opendaylight-cluster-data@10.30.171.110:2550\/user\/shardmanager-operational\/member-3-shard-default-operational, member-2-shard-default-operational: pekko:\/\/opendaylight-cluster-data@10.30.170.131:2550\/user\/shardmanager-operational\/member-2-shard-default-operational","LastLogIndex":74,"LastLeadershipChangeTime":"2026-04-08 00:46:45.934","FollowerInitialSyncStatus":false,"FollowerInfo":[{"timeSinceLastActivity":"00:00:00.101","active":true,"matchIndex":71,"voting":true,"id":"member-3-shard-default-operational","nextIndex":72},{"timeSinceLastActivity":"00:00:00.101","active":true,"matchIndex":71,"voting":true,"id":"member-2-shard-default-operational","nextIndex":72}],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"635.7 μs","CurrentTerm":2,"LastTerm":2,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-default-operational","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":11,"TxCohortCacheSize":0,"PeerVotingStates":"member-3-shard-default-operational: true, member-2-shard-default-operational: true","LastLogTerm":2,"StatRetrievalError":null,"CommitIndex":71,"SnapshotTerm":2,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":16,"ShardName":"member-1-shard-default-operational","LeadershipChangeCount":1,"InMemoryJournalDataSize":91091},"timestamp":1775609429,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:29.021373" elapsed="0.002801"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:29.021135" elapsed="0.003091"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:29.021116" elapsed="0.003145"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:29.027726" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:29.024649" elapsed="0.003144"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:29.024340" elapsed="0.003505"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:29.024317" elapsed="0.003563"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:50:29.028649" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:50:29.028115" elapsed="0.000572"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:29.029110" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:29.028786" elapsed="0.000425"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:29.029881" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:29.029469" elapsed="0.000448"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:29.029245" elapsed="0.000721"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:29.028761" elapsed="0.001234"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:50:29.030783" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:50:29.030278" elapsed="0.000542"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:29.031263" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:29.030916" elapsed="0.000428"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:29.032003" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:29.031597" elapsed="0.000442"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:29.031376" elapsed="0.000711"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:29.030890" elapsed="0.001227"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:50:29.032342" elapsed="0.000476"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:50:29.033440" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:50:29.033043" elapsed="0.000433"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:50:29.033689" elapsed="0.002584"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:50:29.020718" elapsed="0.015617"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:50:29.036598" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:50:29.036488" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:29.036443" elapsed="0.000236"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:50:29.039696" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-1-shard-default-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp"...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:50:29.036911" elapsed="0.002838"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:50:29.039872" elapsed="0.000064"/>
</return>
<msg time="2026-04-08T00:50:29.040250" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-1-shard-default-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp"...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:50:29.003774" elapsed="0.036569"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:50:29.040446" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:50:29.040713" level="INFO">${data_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-1-shard-default-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp"...</msg>
<var>${data_text}</var>
<arg>uri=${uri}</arg>
<arg>session=${session}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-08T00:50:29.002334" elapsed="0.038407"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:50:29.042873" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-1-shard-default-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 177560942...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:50:29.041783" elapsed="0.001184"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-08T00:50:29.043051" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:50:29.043366" level="INFO">${data_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-1-shard-default-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 177560942...</msg>
<var>${data_object}</var>
<arg>${data_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-08T00:50:29.040960" elapsed="0.002434"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:29.043861" level="INFO">${value} = {'AbortTransactionsCount': 0, 'CommitIndex': 71, 'CommittedTransactionsCount': 11, 'CurrentTerm': 2, 'FailedReadTransactionsCount': 0, 'FailedTransactionsCount': 0, 'FollowerInfo': [{'active': True, '...</msg>
<var>${value}</var>
<arg>${data_object}</arg>
<arg>value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:29.043549" elapsed="0.000340"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:29.044442" level="INFO">${raft_property} = Leader</msg>
<var>${raft_property}</var>
<arg>${value}</arg>
<arg>${property}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:29.044045" elapsed="0.000423"/>
</kw>
<return>
<value>${raft_property}</value>
<status status="PASS" start="2026-04-08T00:50:29.044515" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:50:29.044665" level="INFO">${raft_state} = Leader</msg>
<var>${raft_state}</var>
<arg>RaftState</arg>
<arg>${shard_name}</arg>
<arg>${shard_type}</arg>
<arg>${member_index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft property.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T00:50:28.851098" elapsed="0.193592"/>
</kw>
<return>
<value>${raft_state}</value>
<status status="PASS" start="2026-04-08T00:50:29.044747" elapsed="0.000026"/>
</return>
<msg time="2026-04-08T00:50:29.044895" level="INFO">${raft_state} = Leader</msg>
<var>${raft_state}</var>
<arg>shard_name=${shard_name}</arg>
<arg>shard_type=${ds_type}</arg>
<arg>member_index=${index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft status.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T00:50:28.850338" elapsed="0.194637"/>
</kw>
<if>
<branch type="IF" condition="'Follower' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${follower_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:29.045293" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:29.045060" elapsed="0.000292"/>
</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="PASS" start="2026-04-08T00:50:29.045580" elapsed="0.000187"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:29.045375" elapsed="0.000430"/>
</branch>
<branch type="ELSE IF" condition="${validate}">
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized Raft state: ${raft_state}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:29.045972" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:29.045829" elapsed="0.000195"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:29.045041" elapsed="0.001005"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T00:50:28.850173" elapsed="0.195896"/>
</iter>
<iter>
<kw name="Get_Raft_State_Of_Shard_At_Member" owner="ClusterManagement">
<kw name="Get_Raft_Property_From_Shard_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:29.049365" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:29.048513" elapsed="0.000942"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:50:29.049536" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:50:29.049800" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:50:29.047975" 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-04-08T00:50:29.097509" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:29.097118" elapsed="0.000419"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:50:29.098342" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:50:29.098075" elapsed="0.000334">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-08T00:50:29.098502" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:50:29.097743" elapsed="0.000783"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:50:29.099071" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:50:29.098690" elapsed="0.000407"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T00:50:29.099407" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-08T00:50:29.099541" level="INFO">${template} = /rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T00:50:29.099272" elapsed="0.000295"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:29.099960" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:29.099720" elapsed="0.000284"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:29.100938" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:29.100687" elapsed="0.000294"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-08T00:50:29.101414" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-08T00:50:29.101136" elapsed="0.000304"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:29.101750" elapsed="0.000022"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:29.101947" elapsed="0.000024"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:29.102129" elapsed="0.000022"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-08T00:50:29.101620" elapsed="0.000589"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-08T00:50:29.101488" elapsed="0.000750"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-08T00:50:29.102281" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:50:29.102437" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-08T00:50:29.100371" elapsed="0.002091"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:29.100071" elapsed="0.002423"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:29.102660" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:29.102517" elapsed="0.000198"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:29.100052" elapsed="0.002684"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:50:29.103311" level="INFO">${final_text} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:50:29.102875" elapsed="0.000462"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T00:50:29.103385" elapsed="0.000028"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="PASS" start="2026-04-08T00:50:29.096515" elapsed="0.006991"/>
</kw>
<msg time="2026-04-08T00:50:29.103558" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:50:29.084840" elapsed="0.018769"/>
</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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:29.116606" elapsed="0.000029"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:29.128116" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:29.139647" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:29.139840" elapsed="0.000022"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:29.140020" elapsed="0.000021"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:29.140394" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:29.140252" elapsed="0.000197"/>
</branch>
<status status="NOT RUN" start="2026-04-08T00:50:29.140238" elapsed="0.000235"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:29.140610" elapsed="0.000021"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:29.140774" elapsed="0.000020"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:29.140938" elapsed="0.000020"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-08T00:50:29.140207" elapsed="0.000784"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-08T00:50:29.140094" elapsed="0.000922"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:29.141170" elapsed="0.000022"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-08T00:50:29.141247" elapsed="0.000015"/>
</return>
<msg time="2026-04-08T00:50:29.141360" level="INFO">${uri} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-08T00:50:29.080872" elapsed="0.060513"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:50:29.142636" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:50:29.142401" elapsed="0.000298">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-08T00:50:29.142789" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:50:29.142030" elapsed="0.000783"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:29.143129" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:29.142883" elapsed="0.000319"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:29.143679" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:29.143390" elapsed="0.000315"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:29.143227" elapsed="0.000512"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:29.142864" elapsed="0.000896"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:50:29.145952" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:50:29.143909" elapsed="0.002070"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-08T00:50:29.146051" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:50:29.146223" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:50:29.141696" elapsed="0.004553"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:50:29.147505" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:50:29.147264" elapsed="0.000304">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-08T00:50:29.147659" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:50:29.146911" elapsed="0.000773"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-08T00:50:29.147889" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-08T00:50:29.147755" elapsed="0.000192"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:29.147736" elapsed="0.000234"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:29.148114" elapsed="0.000022"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:29.148302" elapsed="0.000021"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-08T00:50:29.148368" elapsed="0.000015"/>
</return>
<msg time="2026-04-08T00:50:29.150304" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:50:29.146589" elapsed="0.003742"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:29.151696" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:29.151449" elapsed="0.000292"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:29.152133" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:29.151892" elapsed="0.000300"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:50:29.171949" level="INFO">GET Request : url=http://10.30.170.131:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 path_url=/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0evogeryo91251obsb096nsda10.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:50:29.172881" level="INFO">GET Response : url=http://10.30.170.131:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Transfer-Encoding': 'chunked'} 
 body={"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","hidden-symmetric-keys","encrypted-private-keys","asymmetrically-encrypted-value-format","cms-encrypted-data-format","cleartext-private-keys","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["ssh-client-keepalives","client-ident-hostbased","client-ident-publickey","client-ident-password"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-ex... (set the log level to DEBUG or TRACE to see the full content) 
 </msg>
<msg time="2026-04-08T00:50:29.173380" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:50:29.154307" elapsed="0.019133"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:29.152261" elapsed="0.021275"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:29.173929" elapsed="0.000083"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:29.173593" elapsed="0.000521"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:29.152242" elapsed="0.021950"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:29.182282" level="INFO">{"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","hidden-symmetric-keys","encrypted-private-keys","asymmetrically-encrypted-value-format","cms-encrypted-data-format","cleartext-private-keys","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["ssh-client-keepalives","client-ident-hostbased","client-ident-publickey","client-ident-password"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-experimenter-types?revision=2015-10-20","namespace":"urn:opendaylight:openflowplugin:experimenter:types","conformance-type":"import"},{"name":"ietf-ip_2018-02-22","revision":"2018-02-22","schema":"/rests/modules/ietf-ip?revision=2018-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-ip","conformance-type":"import","feature":["ipv6-privacy-autoconf","ipv4-non-contiguous-netmasks"]},{"name":"ietf-tcp-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-client","conformance-type":"import","feature":["local-binding-supported","tcp-client-keepalives"]},{"name":"node-config_2014-10-15","revision":"2014-10-15","schema":"/rests/modules/node-config?revision=2014-10-15","namespace":"urn:opendaylight:module:config","conformance-type":"import"},{"name":"ietf-restconf_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf","conformance-type":"import"},{"name":"ietf-datastores_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-datastores?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-datastores","conformance-type":"import"},{"name":"ietf-yang-patch_2017-02-22","revision":"2017-02-22","schema":"/rests/modules/ietf-yang-patch?revision=2017-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-patch","conformance-type":"import"},{"name":"sal-group_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-group?revision=2013-09-18","namespace":"urn:opendaylight:group:service","conformance-type":"import"},{"name":"odl-codegen-extensions_2024-06-27","revision":"2024-06-27","schema":"/rests/modules/odl-codegen-extensions?revision=2024-06-27","namespace":"urn:opendaylight:yang:extension:codegen","conformance-type":"import"},{"name":"sal-meter_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-meter?revision=2013-09-18","namespace":"urn:opendaylight:meter:service","conformance-type":"import"},{"name":"ietf-interfaces_2018-02-20","revision":"2018-02-20","schema":"/rests/modules/ietf-interfaces?revision=2018-02-20","namespace":"urn:ietf:params:xml:ns:yang:ietf-interfaces","conformance-type":"import","feature":["pre-provisioning","if-mib","arbitrary-names"]},{"name":"opendaylight-l2-types_2013-08-27","revision":"2013-08-27","schema":"/rests/modules/opendaylight-l2-types?revision=2013-08-27","namespace":"urn:opendaylight:l2:types","conformance-type":"import"},{"name":"opendaylight-flow-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-flow-types?revision=2013-10-26","namespace":"urn:opendaylight:flow:types","conformance-type":"import"},{"name":"lldp-speaker-config_2016-05-12","revision":"2016-05-12","schema":"/rests/modules/lldp-speaker-config?revision=2016-05-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker:config","conformance-type":"import"},{"name":"aaa-cert_2015-11-26","revision":"2015-11-26","schema":"/rests/modules/aaa-cert?revision=2015-11-26","namespace":"urn:opendaylight:yang:aaa:cert","conformance-type":"import"},{"name":"openflow-action_2015-02-03","revision":"2015-02-03","schema":"/rests/modules/openflow-action?revision=2015-02-03","namespace":"urn:opendaylight:openflow:common:action","conformance-type":"import"},{"name":"openflow-approved-extensions_2016-08-02","revision":"2016-08-02","schema":"/rests/modules/openflow-approved-extensions?revision=2016-08-02","namespace":"urn:opendaylight:openflow:approved:extensions","conformance-type":"import"},{"name":"nc-notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/nc-notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netmod:notification","conformance-type":"import"},{"name":"ietf-netconf-nmda_2019-01-07","revision":"2019-01-07","schema":"/rests/modules/ietf-netconf-nmda?revision=2019-01-07","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-nmda","conformance-type":"import","feature":["with-defaults","origin"]},{"name":"ietf-tcp-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-common","conformance-type":"import","feature":["keepalives-supported"]},{"name":"network-topology_2013-10-21","revision":"2013-10-21","schema":"/rests/modules/network-topology?revision=2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:network-topology","conformance-type":"import"},{"name":"aaa-encrypt-service-config_2024-02-02","revision":"2024-02-02","schema":"/rests/modules/aaa-encrypt-service-config?revision=2024-02-02","namespace":"config:aaa:authn:encrypt:service:config","conformance-type":"import"},{"name":"openflow-instruction_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-instruction?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:instruction","conformance-type":"import"},{"name":"ietf-tls-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-client","conformance-type":"import","feature":["client-ident-x509-cert","server-auth-x509-cert"]},{"name":"opendaylight-group-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-group-statistics?revision=2013-11-11","namespace":"urn:opendaylight:group:statistics","conformance-type":"import"},{"name":"cluster-admin_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/cluster-admin?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:cluster:admin","conformance-type":"import"},{"name":"opendaylight-flow-statistics_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-flow-statistics?revision=2013-08-19","namespace":"urn:opendaylight:flow:statistics","conformance-type":"import"},{"name":"opendaylight-table-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-table-types?revision=2013-10-26","namespace":"urn:opendaylight:table:types","conformance-type":"import"},{"name":"forwarding-rules-manager-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/forwarding-rules-manager-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:forwardingrules-manager:config","conformance-type":"import"},{"name":"odl-srm-types_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-types?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:types","conformance-type":"import"},{"name":"ietf-x509-cert-to-name_2014-12-10","revision":"2014-12-10","schema":"/rests/modules/ietf-x509-cert-to-name?revision=2014-12-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-x509-cert-to-name","conformance-type":"import"},{"name":"flow-node-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-node-inventory?revision=2013-08-19","namespace":"urn:opendaylight:flow:inventory","conformance-type":"import"},{"name":"flow-errors_2013-11-16","revision":"2013-11-16","schema":"/rests/modules/flow-errors?revision=2013-11-16","namespace":"urn:opendaylight:flow:errors","conformance-type":"import"},{"name":"ietf-netconf_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:netconf:base:1.0","conformance-type":"import","feature":["xpath","url","rollback-on-error","validate","startup","candidate","confirmed-commit","writable-running"]},{"name":"iana-ssh-public-key-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-public-key-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-public-key-algs","conformance-type":"import"},{"name":"aaa-cert-mdsal_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/aaa-cert-mdsal?revision=2016-03-21","namespace":"urn:opendaylight:yang:aaa:cert:mdsal","conformance-type":"import"},{"name":"odl-device-notification_2024-02-18","revision":"2024-02-18","schema":"/rests/modules/odl-device-notification?revision=2024-02-18","namespace":"urn:opendaylight:device:notification","conformance-type":"import"},{"name":"ietf-origin_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-origin?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-origin","conformance-type":"import"},{"name":"openflow-augments_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-augments?revision=2015-02-25","namespace":"urn:opendaylight:openflow:augments","conformance-type":"import"},{"name":"iana-ssh-encryption-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-encryption-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-encryption-algs","conformance-type":"import"},{"name":"ietf-truststore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-truststore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-truststore","conformance-type":"import","feature":["inline-definitions-supported"]},{"name":"distributed-datastore-provider_2025-01-30","revision":"2025-01-30","schema":"/rests/modules/distributed-datastore-provider?revision=2025-01-30","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:distributed-datastore-provider","conformance-type":"import"},{"name":"opendaylight-group-types_2013-10-18","revision":"2013-10-18","schema":"/rests/modules/opendaylight-group-types?revision=2013-10-18","namespace":"urn:opendaylight:group:types","conformance-type":"import"},{"name":"sal-remote-augment_2023-11-03","revision":"2023-11-03","schema":"/rests/modules/sal-remote-augment?revision=2023-11-03","namespace":"urn:sal:restconf:event:subscription","conformance-type":"import"},{"name":"opendaylight-ipv6-arbitrary-bitmask-fields_2016-02-24","revision":"2016-02-24","schema":"/rests/modules/opendaylight-ipv6-arbitrary-bitmask-fields?revision=2016-02-24","namespace":"urn:opendaylight:opendaylight-ipv6-arbitrary-bitmask-fields","conformance-type":"import"},{"name":"sal-flows-batch_2016-03-14","revision":"2016-03-14","schema":"/rests/modules/sal-flows-batch?revision=2016-03-14","namespace":"urn:opendaylight:flows:service","conformance-type":"import"},{"name":"ietf-tls-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-common","conformance-type":"import","feature":["tls12","hello-params","tls13"]},{"name":"openflow-types_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-types?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:types","conformance-type":"import"},{"name":"ietf-netconf-with-defaults_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf-with-defaults?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults","conformance-type":"import"},{"name":"odl-srm-ops_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-ops?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:ops","conformance-type":"import"},{"name":"odl-general-entity_2015-09-30","revision":"2015-09-30","schema":"/rests/modules/odl-general-entity?revision=2015-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:mdsal:core:general-entity","conformance-type":"import"},{"name":"iana-ssh-key-exchange-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-key-exchange-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-key-exchange-algs","conformance-type":"import"},{"name":"node-ssl-connection-error_2019-07-23","revision":"2019-07-23","schema":"/rests/modules/node-ssl-connection-error?revision=2019-07-23","namespace":"urn:opendaylight:node-ssl-connection-error:service","conformance-type":"import"},{"name":"openflow-protocol_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-protocol?revision=2013-07-31","namespace":"urn:opendaylight:openflow:protocol","conformance-type":"import"},{"name":"ietf-udp-server_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-server?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-server","conformance-type":"import"},{"name":"ietf-keystore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-keystore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-keystore","conformance-type":"import","feature":["asymmetric-keys","inline-definitions-supported"]},{"name":"aaa_2016-12-14","revision":"2016-12-14","schema":"/rests/modules/aaa?revision=2016-12-14","namespace":"urn:opendaylight:params:xml:ns:yang:aaa","conformance-type":"import"},{"name":"aaa-cert-rpc_2015-12-15","revision":"2015-12-15","schema":"/rests/modules/aaa-cert-rpc?revision=2015-12-15","namespace":"urn:opendaylight:yang:aaa:cert:rpc","conformance-type":"import"},{"name":"system-notifications_2013-09-27","revision":"2013-09-27","schema":"/rests/modules/system-notifications?revision=2013-09-27","namespace":"urn:opendaylight:openflow:system","conformance-type":"import"},{"name":"sal-flat-batch_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/sal-flat-batch?revision=2016-03-21","namespace":"urn:opendaylight:flat-batch:service","conformance-type":"import"},{"name":"notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netconf:notification:1.0","conformance-type":"import"},{"name":"sal-remote_2014-01-14","revision":"2014-01-14","schema":"/rests/modules/sal-remote?revision=2014-01-14","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:remote","conformance-type":"import"},{"name":"yang-ext_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/yang-ext?revision=2013-07-09","namespace":"urn:opendaylight:yang:extension:yang-ext","conformance-type":"import"},{"name":"opendaylight-multipart-types_2017-01-12","revision":"2017-01-12","schema":"/rests/modules/opendaylight-multipart-types?revision=2017-01-12","namespace":"urn:opendaylight:multipart:types","conformance-type":"import"},{"name":"opendaylight-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-inventory?revision=2013-08-19","namespace":"urn:opendaylight:inventory","conformance-type":"import"},{"name":"sal-queue_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-queue?revision=2015-03-05","namespace":"urn:opendaylight:queue:service","conformance-type":"import"},{"name":"sal-groups-batch_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/sal-groups-batch?revision=2016-03-15","namespace":"urn:opendaylight:groups:service","conformance-type":"import"},{"name":"arbitrator-reconcile_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/arbitrator-reconcile?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:arbitrator-reconcile:service","conformance-type":"import"},{"name":"ietf-yang-metadata_2016-08-05","revision":"2016-08-05","schema":"/rests/modules/ietf-yang-metadata?revision=2016-08-05","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-metadata","conformance-type":"import"},{"name":"opendaylight-arbitrary-bitmask-fields_2016-01-30","revision":"2016-01-30","schema":"/rests/modules/opendaylight-arbitrary-bitmask-fields?revision=2016-01-30","namespace":"urn:opendaylight:arbitrary:bitmask:fields","conformance-type":"import"},{"name":"ietf-udp-client_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-client?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-client","conformance-type":"import","feature":["local-binding"]},{"name":"opendaylight-meter-types_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/opendaylight-meter-types?revision=2013-09-18","namespace":"urn:opendaylight:meter:types","conformance-type":"import"},{"name":"opendaylight-action-types_2013-11-12","revision":"2013-11-12","schema":"/rests/modules/opendaylight-action-types?revision=2013-11-12","namespace":"urn:opendaylight:action:types","conformance-type":"import"},{"name":"sal-role_2015-07-27","revision":"2015-07-27","schema":"/rests/modules/sal-role?revision=2015-07-27","namespace":"urn:opendaylight:role:service","conformance-type":"import"},{"name":"openflow-provider-config_2016-05-10","revision":"2016-05-10","schema":"/rests/modules/openflow-provider-config?revision=2016-05-10","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:provider:config","conformance-type":"import"},{"name":"odl-serviceutils-upgrade_2018-07-02","revision":"2018-07-02","schema":"/rests/modules/odl-serviceutils-upgrade?revision=2018-07-02","namespace":"urn:opendaylight:serviceutils:upgrade","conformance-type":"import"},{"name":"opendaylight-match-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-match-types?revision=2013-10-26","namespace":"urn:opendaylight:model:match:types","conformance-type":"import"},{"name":"ietf-restconf-server_2024-08-14","revision":"2024-08-14","schema":"/rests/modules/ietf-restconf-server?revision=2024-08-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-server","conformance-type":"import","feature":["http-listen","https-listen"]},{"name":"reconciliation-result-state_2017-07-13","revision":"2017-07-13","schema":"/rests/modules/reconciliation-result-state?revision=2017-07-13","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:rf:state","conformance-type":"import"},{"name":"onf-extensions_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/onf-extensions?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf","conformance-type":"import"},{"name":"sal-table_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/sal-table?revision=2013-10-26","namespace":"urn:opendaylight:table:service","conformance-type":"import"},{"name":"iana-http-versions_2026-02-04","revision":"2026-02-04","schema":"/rests/modules/iana-http-versions?revision=2026-02-04","namespace":"urn:ietf:params:xml:ns:yang:iana-http-versions","conformance-type":"import"},{"name":"opendaylight-direct-statistics_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/opendaylight-direct-statistics?revision=2016-05-11","namespace":"urn:opendaylight:direct:statistics","conformance-type":"import"},{"name":"opendaylight-port-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-port-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:port","conformance-type":"import"},{"name":"sal-async-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/sal-async-config?revision=2017-06-19","namespace":"urn:opendaylight:async-config:service","conformance-type":"import"},{"name":"aaa-password-service-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-password-service-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:password:service:config","conformance-type":"import"},{"name":"ietf-yang-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-yang-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-types","conformance-type":"import"},{"name":"opendaylight-queue-statistics_2013-12-16","revision":"2013-12-16","schema":"/rests/modules/opendaylight-queue-statistics?revision=2013-12-16","namespace":"urn:opendaylight:queue:statistics","conformance-type":"import"},{"name":"sal-bundle_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/sal-bundle?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf:bundle:service","conformance-type":"import"},{"name":"ietf-restconf-subscribed-notifications_2019-11-17","revision":"2019-11-17","schema":"/rests/modules/ietf-restconf-subscribed-notifications?revision=2019-11-17","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-subscribed-notifications","conformance-type":"import"},{"name":"sal-meters-batch_2016-03-16","revision":"2016-03-16","schema":"/rests/modules/sal-meters-batch?revision=2016-03-16","namespace":"urn:opendaylight:meters:service","conformance-type":"import"},{"name":"odl-entity-owners","revision":"","schema":"/rests/modules/odl-entity-owners","namespace":"urn:opendaylight:params:xml:ns:yang:controller:entity-owners","conformance-type":"import"},{"name":"sal-experimenter-mp-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-mp-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-mp-message:service","conformance-type":"import"},{"name":"packet-processing_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/packet-processing?revision=2013-07-09","namespace":"urn:opendaylight:packet:service","conformance-type":"import"},{"name":"openflow-configuration_2014-06-30","revision":"2014-06-30","schema":"/rests/modules/openflow-configuration?revision=2014-06-30","namespace":"urn:opendaylight:openflow:config","conformance-type":"import"},{"name":"odl-srm-rpcs_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-rpcs?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:rpc","conformance-type":"import"},{"name":"ietf-netconf-acm_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-netconf-acm?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-acm","conformance-type":"import"},{"name":"iana-crypt-hash_2014-08-06","revision":"2014-08-06","schema":"/rests/modules/iana-crypt-hash?revision=2014-08-06","namespace":"urn:ietf:params:xml:ns:yang:iana-crypt-hash","conformance-type":"import","feature":["crypt-hash-sha-512","crypt-hash-sha-256","crypt-hash-md5"]},{"name":"openflow-extensible-match_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-extensible-match?revision=2015-02-25","namespace":"urn:opendaylight:openflow:oxm","conformance-type":"import"}],"module-set-id":"2"}}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:29.176452" elapsed="0.006556"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:29.175932" elapsed="0.007118"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:29.175888" elapsed="0.007187"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:29.185500" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:29.183370" elapsed="0.002175"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:29.183133" elapsed="0.002446"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:29.183115" elapsed="0.002488"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:50:29.186171" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:50:29.185764" elapsed="0.000436"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:29.186508" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:29.186272" elapsed="0.000294"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:29.187051" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:29.186748" elapsed="0.000328"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:29.186589" elapsed="0.000523"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:29.186252" elapsed="0.000881"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:50:29.187670" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:50:29.187311" elapsed="0.000385"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:29.187995" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:29.187765" elapsed="0.000287"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:29.188539" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:29.188247" elapsed="0.000317"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:29.188075" elapsed="0.000525"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:29.187747" elapsed="0.000874"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:50:29.188769" elapsed="0.000339"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:50:29.189558" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:50:29.189288" elapsed="0.000295"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:50:29.189734" elapsed="0.002179"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:50:29.174966" elapsed="0.017010"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:50:29.192149" elapsed="0.000030"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:50:29.192046" elapsed="0.000164"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:29.192026" elapsed="0.000206"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:50:29.200283" level="INFO">${text_normalized} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:50:29.192376" elapsed="0.007936"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:50:29.200364" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:50:29.200523" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:50:29.150626" elapsed="0.049924"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:50:29.200612" elapsed="0.000026"/>
</return>
<msg time="2026-04-08T00:50:29.200912" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="PASS" start="2026-04-08T00:50:29.059821" elapsed="0.141128"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Json_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:29.201426" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:29.201071" elapsed="0.000473"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:29.201040" elapsed="0.000545"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:50:29.201643" elapsed="0.000068"/>
</return>
<arg>session=${session}</arg>
<arg>folder=${RESTCONF_MODULES_DIR}</arg>
<arg>verify=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Add arguments sensible for JSON data, return Get_Templated response text.
Optionally, verification against JSON data (may be iterated) is called.
Only subset of JSON data is verified and returned if JMES path is specified in
file ${folder}/jmespath.expr.</doc>
<status status="PASS" start="2026-04-08T00:50:29.054237" elapsed="0.147688"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:29.049895" elapsed="0.152142"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:29.049877" elapsed="0.152187"/>
</if>
<kw name="Resolve_Shard_Type_Class" owner="ClusterManagement">
<if>
<branch type="IF" condition="'${shard_type}' == 'config'">
<return>
<value>DistributedConfigDatastore</value>
<status status="NOT RUN" start="2026-04-08T00:50:29.202952" elapsed="0.000046"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:50:29.202734" elapsed="0.000308"/>
</branch>
<branch type="ELSE IF" condition="'${shard_type}' == 'operational'">
<return>
<value>DistributedOperationalDatastore</value>
<status status="PASS" start="2026-04-08T00:50:29.203330" elapsed="0.000069"/>
</return>
<status status="PASS" start="2026-04-08T00:50:29.203098" elapsed="0.000347"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:29.202701" elapsed="0.000806"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized shard type: ${shard_type}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:29.203740" elapsed="0.000065"/>
</kw>
<msg time="2026-04-08T00:50:29.203944" level="INFO">${type_class} = DistributedOperationalDatastore</msg>
<var>${type_class}</var>
<arg>shard_type=${shard_type}</arg>
<doc>Simple lookup for class name corresponding to desired type.</doc>
<status status="PASS" start="2026-04-08T00:50:29.202339" elapsed="0.001631"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:50:29.204774" level="INFO">${cluster_index} = 2</msg>
<var>${cluster_index}</var>
<arg>${member_index}+${NODE_ROLE_INDEX_START}-1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:50:29.204139" elapsed="0.000661"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:29.205945" level="INFO">${uri} = jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-default-operational,type=DistributedOperationalDatastore</msg>
<var>${uri}</var>
<arg>${JOLOKIA_READ_URI}:Category=Shards,name=member-${cluster_index}-shard-${shard_name}-${shard_type},type=${type_class}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:29.204956" elapsed="0.001024"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:29.213361" level="INFO">jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-default-operational,type=DistributedOperationalDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:29.213047" elapsed="0.000403"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:29.214010" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:29.213700" elapsed="0.000394"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:50:29.222212" level="INFO">GET Request : url=http://10.30.170.131:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-default-operational,type=DistributedOperationalDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-default-operational,type=DistributedOperationalDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:50:29.222276" level="INFO">GET Response : url=http://10.30.170.131:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-default-operational,type=DistributedOperationalDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Wed, 08 Apr 2026 00:50:29 GMT', 'Expires': 'Tue, 07 Apr 2026 23:50:29 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-2-shard-default-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"ReadWriteTransactionCount":0,"SnapshotIndex":70,"InMemoryJournalLogSize":1,"ReplicatedToAllIndex":70,"Leader":"member-1-shard-default-operational","LastIndex":71,"RaftState":"Follower","LastCommittedTransactionTime":"1970-01-01 00:00:00.000","LastApplied":71,"PeerAddresses":"member-1-shard-default-operational: pekko:\/\/opendaylight-cluster-data@10.30.170.48:2550\/user\/shardmanager-operational\/member-1-shard-default-operational, member-3-shard-default-operational: pekko:\/\/opendaylight-cluster-data@10.30.171.110:2550\/user\/shardmanager-operational\/member-3-shard-default-operational","LastLogIndex":71,"LastLeadershipChangeTime":"2026-04-08 00:46:45.939","FollowerInitialSyncStatus":true,"FollowerInfo":[],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"279.2 μs","CurrentTerm":2,"LastTerm":2,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-default-operational","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":0,"TxCohortCacheSize":0,"PeerVotingStates":"member-1-shard-default-operational: true, member-3-shard-default-operational: true","LastLogTerm":2,"StatRetrievalError":null,"CommitIndex":71,"SnapshotTerm":2,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-2-shard-default-operational","LeadershipChangeCount":1,"InMemoryJournalDataSize":90968},"timestamp":1775609429,"status":200} 
 </msg>
<msg time="2026-04-08T00:50:29.222381" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:50:29.216337" elapsed="0.006070"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:29.214366" elapsed="0.008084"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:29.222652" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:29.222497" elapsed="0.000220"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:29.214318" elapsed="0.008437"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:29.226274" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-2-shard-default-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"ReadWriteTransactionCount":0,"SnapshotIndex":70,"InMemoryJournalLogSize":1,"ReplicatedToAllIndex":70,"Leader":"member-1-shard-default-operational","LastIndex":71,"RaftState":"Follower","LastCommittedTransactionTime":"1970-01-01 00:00:00.000","LastApplied":71,"PeerAddresses":"member-1-shard-default-operational: pekko:\/\/opendaylight-cluster-data@10.30.170.48:2550\/user\/shardmanager-operational\/member-1-shard-default-operational, member-3-shard-default-operational: pekko:\/\/opendaylight-cluster-data@10.30.171.110:2550\/user\/shardmanager-operational\/member-3-shard-default-operational","LastLogIndex":71,"LastLeadershipChangeTime":"2026-04-08 00:46:45.939","FollowerInitialSyncStatus":true,"FollowerInfo":[],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"279.2 μs","CurrentTerm":2,"LastTerm":2,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-default-operational","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":0,"TxCohortCacheSize":0,"PeerVotingStates":"member-1-shard-default-operational: true, member-3-shard-default-operational: true","LastLogTerm":2,"StatRetrievalError":null,"CommitIndex":71,"SnapshotTerm":2,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-2-shard-default-operational","LeadershipChangeCount":1,"InMemoryJournalDataSize":90968},"timestamp":1775609429,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:29.223861" elapsed="0.002475"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:29.223603" elapsed="0.002769"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:29.223584" elapsed="0.002813"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:29.228850" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:29.226675" elapsed="0.002221"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:29.226453" elapsed="0.002478"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:29.226436" elapsed="0.002519"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:50:29.229516" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:50:29.229118" elapsed="0.000425"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:29.229890" elapsed="0.000028"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:29.229615" elapsed="0.000341"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:29.230464" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:29.230144" elapsed="0.000346"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:29.229981" elapsed="0.000545"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:29.229596" elapsed="0.000952"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:50:29.231217" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:50:29.230704" elapsed="0.000553"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:29.231684" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:29.231357" elapsed="0.000408"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:29.232453" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:29.232017" elapsed="0.000472"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:29.231797" elapsed="0.000742"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:29.231332" elapsed="0.001237"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:50:29.232776" elapsed="0.000499"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:50:29.233903" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:50:29.233505" elapsed="0.000436"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:50:29.234176" elapsed="0.003049"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:50:29.223179" elapsed="0.014137"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:50:29.237688" elapsed="0.000021"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:50:29.237532" elapsed="0.000218"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:29.237469" elapsed="0.000333"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:50:29.241993" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-2-shard-default-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp"...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:50:29.238145" elapsed="0.003924"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:50:29.242207" elapsed="0.000091"/>
</return>
<msg time="2026-04-08T00:50:29.242710" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-2-shard-default-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp"...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:50:29.207611" elapsed="0.035225"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:50:29.243046" elapsed="0.000036"/>
</return>
<msg time="2026-04-08T00:50:29.243358" level="INFO">${data_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-2-shard-default-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp"...</msg>
<var>${data_text}</var>
<arg>uri=${uri}</arg>
<arg>session=${session}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-08T00:50:29.206233" elapsed="0.037153"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:50:29.245465" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-2-shard-default-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 177560942...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:50:29.244427" elapsed="0.001132"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-08T00:50:29.245643" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:50:29.245959" level="INFO">${data_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-2-shard-default-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 177560942...</msg>
<var>${data_object}</var>
<arg>${data_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-08T00:50:29.243608" elapsed="0.002379"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:29.246472" level="INFO">${value} = {'AbortTransactionsCount': 0, 'CommitIndex': 71, 'CommittedTransactionsCount': 0, 'CurrentTerm': 2, 'FailedReadTransactionsCount': 0, 'FailedTransactionsCount': 0, 'FollowerInfo': [], 'FollowerInitial...</msg>
<var>${value}</var>
<arg>${data_object}</arg>
<arg>value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:29.246144" elapsed="0.000355"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:29.247031" level="INFO">${raft_property} = Follower</msg>
<var>${raft_property}</var>
<arg>${value}</arg>
<arg>${property}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:29.246656" elapsed="0.000401"/>
</kw>
<return>
<value>${raft_property}</value>
<status status="PASS" start="2026-04-08T00:50:29.247105" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:50:29.247279" level="INFO">${raft_state} = Follower</msg>
<var>${raft_state}</var>
<arg>RaftState</arg>
<arg>${shard_name}</arg>
<arg>${shard_type}</arg>
<arg>${member_index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft property.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T00:50:29.047298" elapsed="0.200006"/>
</kw>
<return>
<value>${raft_state}</value>
<status status="PASS" start="2026-04-08T00:50:29.247361" elapsed="0.000026"/>
</return>
<msg time="2026-04-08T00:50:29.247506" level="INFO">${raft_state} = Follower</msg>
<var>${raft_state}</var>
<arg>shard_name=${shard_name}</arg>
<arg>shard_type=${ds_type}</arg>
<arg>member_index=${index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft status.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T00:50:29.046454" elapsed="0.201076"/>
</kw>
<if>
<branch type="IF" condition="'Follower' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${follower_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-08T00:50:29.247820" elapsed="0.000191"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:29.247608" elapsed="0.000441"/>
</branch>
<branch type="ELSE IF" condition="'Leader' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${leader_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:29.248234" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:29.248074" elapsed="0.000217"/>
</branch>
<branch type="ELSE IF" condition="${validate}">
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized Raft state: ${raft_state}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:29.248452" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:29.248313" elapsed="0.000190"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:29.247591" elapsed="0.000934"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T00:50:29.046286" elapsed="0.202262"/>
</iter>
<iter>
<kw name="Get_Raft_State_Of_Shard_At_Member" owner="ClusterManagement">
<kw name="Get_Raft_Property_From_Shard_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:29.251775" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:29.250871" elapsed="0.000992"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:50:29.251942" elapsed="0.000031"/>
</return>
<msg time="2026-04-08T00:50:29.252220" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:50:29.250349" elapsed="0.001899"/>
</kw>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Get_As_Json_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:29.300633" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:29.300252" elapsed="0.000409"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:50:29.301403" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:50:29.301170" elapsed="0.000305">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-08T00:50:29.301610" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:50:29.300823" elapsed="0.000812"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:50:29.302293" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:50:29.301865" elapsed="0.000457"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T00:50:29.302624" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-08T00:50:29.302758" level="INFO">${template} = /rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T00:50:29.302487" elapsed="0.000297"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:29.303198" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:29.302938" elapsed="0.000305"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:29.304186" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:29.303920" elapsed="0.000312"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-08T00:50:29.304654" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-08T00:50:29.304391" elapsed="0.000289"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:29.304996" elapsed="0.000022"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:29.305212" elapsed="0.000025"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:29.305385" elapsed="0.000020"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-08T00:50:29.304865" elapsed="0.000576"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-08T00:50:29.304730" elapsed="0.000740"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-08T00:50:29.305514" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:50:29.305669" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-08T00:50:29.303596" elapsed="0.002098"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:29.303312" elapsed="0.002437"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:29.305920" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:29.305774" elapsed="0.000201"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:29.303292" elapsed="0.002703"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:50:29.306576" level="INFO">${final_text} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:50:29.306133" elapsed="0.000471"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T00:50:29.306652" 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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="PASS" start="2026-04-08T00:50:29.299623" elapsed="0.007151"/>
</kw>
<msg time="2026-04-08T00:50:29.306826" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:50:29.287840" elapsed="0.019038"/>
</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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:29.320108" elapsed="0.000040"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:29.332274" elapsed="0.000029"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:29.343820" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:29.344014" elapsed="0.000022"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:29.344202" elapsed="0.000022"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:29.344565" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:29.344422" elapsed="0.000198"/>
</branch>
<status status="NOT RUN" start="2026-04-08T00:50:29.344406" elapsed="0.000238"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:29.344783" elapsed="0.000020"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:29.344953" elapsed="0.000020"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:29.345115" elapsed="0.000020"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-08T00:50:29.344377" elapsed="0.000806"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-08T00:50:29.344278" elapsed="0.000933"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:29.345355" elapsed="0.000021"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-08T00:50:29.345430" elapsed="0.000016"/>
</return>
<msg time="2026-04-08T00:50:29.345548" level="INFO">${uri} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-08T00:50:29.283852" elapsed="0.061722"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:50:29.346843" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:50:29.346608" elapsed="0.000298">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-08T00:50:29.346996" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:50:29.346270" elapsed="0.000750"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:29.347348" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:29.347091" elapsed="0.000314"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:29.347875" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:29.347588" elapsed="0.000312"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:29.347428" elapsed="0.000507"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:29.347072" elapsed="0.000885"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:50:29.350148" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:50:29.348103" elapsed="0.002085"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-08T00:50:29.350240" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:50:29.350393" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:50:29.345931" elapsed="0.004486"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:50:29.351610" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:50:29.351377" elapsed="0.000296">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-08T00:50:29.351801" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:50:29.351027" elapsed="0.000799"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-08T00:50:29.352031" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-08T00:50:29.351898" elapsed="0.000192"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:29.351879" elapsed="0.000235"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:29.352272" elapsed="0.000023"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:29.352442" elapsed="0.000021"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-08T00:50:29.352507" elapsed="0.000015"/>
</return>
<msg time="2026-04-08T00:50:29.354429" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:50:29.350708" elapsed="0.003748"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:29.355816" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:29.355571" elapsed="0.000290"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:29.356262" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:29.356009" elapsed="0.000296"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:50:29.373332" level="INFO">GET Request : url=http://10.30.171.110:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 path_url=/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node09orwbuy1e81xg3wze7ww55ua0.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:50:29.373765" level="INFO">GET Response : url=http://10.30.171.110:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Transfer-Encoding': 'chunked'} 
 body={"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","hidden-symmetric-keys","encrypted-private-keys","asymmetrically-encrypted-value-format","cms-encrypted-data-format","cleartext-private-keys","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["ssh-client-keepalives","client-ident-hostbased","client-ident-publickey","client-ident-password"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-ex... (set the log level to DEBUG or TRACE to see the full content) 
 </msg>
<msg time="2026-04-08T00:50:29.374088" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:50:29.358315" elapsed="0.015881"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:29.356372" elapsed="0.017925"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:29.374695" elapsed="0.000049"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:29.374357" elapsed="0.000482"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:29.356353" elapsed="0.018538"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:29.382388" level="INFO">{"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","hidden-symmetric-keys","encrypted-private-keys","asymmetrically-encrypted-value-format","cms-encrypted-data-format","cleartext-private-keys","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["ssh-client-keepalives","client-ident-hostbased","client-ident-publickey","client-ident-password"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-experimenter-types?revision=2015-10-20","namespace":"urn:opendaylight:openflowplugin:experimenter:types","conformance-type":"import"},{"name":"ietf-ip_2018-02-22","revision":"2018-02-22","schema":"/rests/modules/ietf-ip?revision=2018-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-ip","conformance-type":"import","feature":["ipv6-privacy-autoconf","ipv4-non-contiguous-netmasks"]},{"name":"ietf-tcp-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-client","conformance-type":"import","feature":["local-binding-supported","tcp-client-keepalives"]},{"name":"node-config_2014-10-15","revision":"2014-10-15","schema":"/rests/modules/node-config?revision=2014-10-15","namespace":"urn:opendaylight:module:config","conformance-type":"import"},{"name":"ietf-restconf_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf","conformance-type":"import"},{"name":"ietf-datastores_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-datastores?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-datastores","conformance-type":"import"},{"name":"ietf-yang-patch_2017-02-22","revision":"2017-02-22","schema":"/rests/modules/ietf-yang-patch?revision=2017-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-patch","conformance-type":"import"},{"name":"sal-group_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-group?revision=2013-09-18","namespace":"urn:opendaylight:group:service","conformance-type":"import"},{"name":"odl-codegen-extensions_2024-06-27","revision":"2024-06-27","schema":"/rests/modules/odl-codegen-extensions?revision=2024-06-27","namespace":"urn:opendaylight:yang:extension:codegen","conformance-type":"import"},{"name":"sal-meter_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-meter?revision=2013-09-18","namespace":"urn:opendaylight:meter:service","conformance-type":"import"},{"name":"ietf-interfaces_2018-02-20","revision":"2018-02-20","schema":"/rests/modules/ietf-interfaces?revision=2018-02-20","namespace":"urn:ietf:params:xml:ns:yang:ietf-interfaces","conformance-type":"import","feature":["pre-provisioning","if-mib","arbitrary-names"]},{"name":"opendaylight-l2-types_2013-08-27","revision":"2013-08-27","schema":"/rests/modules/opendaylight-l2-types?revision=2013-08-27","namespace":"urn:opendaylight:l2:types","conformance-type":"import"},{"name":"opendaylight-flow-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-flow-types?revision=2013-10-26","namespace":"urn:opendaylight:flow:types","conformance-type":"import"},{"name":"lldp-speaker-config_2016-05-12","revision":"2016-05-12","schema":"/rests/modules/lldp-speaker-config?revision=2016-05-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker:config","conformance-type":"import"},{"name":"aaa-cert_2015-11-26","revision":"2015-11-26","schema":"/rests/modules/aaa-cert?revision=2015-11-26","namespace":"urn:opendaylight:yang:aaa:cert","conformance-type":"import"},{"name":"openflow-action_2015-02-03","revision":"2015-02-03","schema":"/rests/modules/openflow-action?revision=2015-02-03","namespace":"urn:opendaylight:openflow:common:action","conformance-type":"import"},{"name":"openflow-approved-extensions_2016-08-02","revision":"2016-08-02","schema":"/rests/modules/openflow-approved-extensions?revision=2016-08-02","namespace":"urn:opendaylight:openflow:approved:extensions","conformance-type":"import"},{"name":"nc-notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/nc-notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netmod:notification","conformance-type":"import"},{"name":"ietf-netconf-nmda_2019-01-07","revision":"2019-01-07","schema":"/rests/modules/ietf-netconf-nmda?revision=2019-01-07","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-nmda","conformance-type":"import","feature":["with-defaults","origin"]},{"name":"ietf-tcp-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-common","conformance-type":"import","feature":["keepalives-supported"]},{"name":"network-topology_2013-10-21","revision":"2013-10-21","schema":"/rests/modules/network-topology?revision=2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:network-topology","conformance-type":"import"},{"name":"aaa-encrypt-service-config_2024-02-02","revision":"2024-02-02","schema":"/rests/modules/aaa-encrypt-service-config?revision=2024-02-02","namespace":"config:aaa:authn:encrypt:service:config","conformance-type":"import"},{"name":"openflow-instruction_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-instruction?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:instruction","conformance-type":"import"},{"name":"ietf-tls-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-client","conformance-type":"import","feature":["client-ident-x509-cert","server-auth-x509-cert"]},{"name":"opendaylight-group-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-group-statistics?revision=2013-11-11","namespace":"urn:opendaylight:group:statistics","conformance-type":"import"},{"name":"cluster-admin_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/cluster-admin?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:cluster:admin","conformance-type":"import"},{"name":"opendaylight-flow-statistics_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-flow-statistics?revision=2013-08-19","namespace":"urn:opendaylight:flow:statistics","conformance-type":"import"},{"name":"opendaylight-table-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-table-types?revision=2013-10-26","namespace":"urn:opendaylight:table:types","conformance-type":"import"},{"name":"forwarding-rules-manager-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/forwarding-rules-manager-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:forwardingrules-manager:config","conformance-type":"import"},{"name":"odl-srm-types_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-types?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:types","conformance-type":"import"},{"name":"ietf-x509-cert-to-name_2014-12-10","revision":"2014-12-10","schema":"/rests/modules/ietf-x509-cert-to-name?revision=2014-12-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-x509-cert-to-name","conformance-type":"import"},{"name":"flow-node-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-node-inventory?revision=2013-08-19","namespace":"urn:opendaylight:flow:inventory","conformance-type":"import"},{"name":"flow-errors_2013-11-16","revision":"2013-11-16","schema":"/rests/modules/flow-errors?revision=2013-11-16","namespace":"urn:opendaylight:flow:errors","conformance-type":"import"},{"name":"ietf-netconf_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:netconf:base:1.0","conformance-type":"import","feature":["xpath","url","rollback-on-error","validate","startup","candidate","confirmed-commit","writable-running"]},{"name":"iana-ssh-public-key-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-public-key-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-public-key-algs","conformance-type":"import"},{"name":"aaa-cert-mdsal_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/aaa-cert-mdsal?revision=2016-03-21","namespace":"urn:opendaylight:yang:aaa:cert:mdsal","conformance-type":"import"},{"name":"odl-device-notification_2024-02-18","revision":"2024-02-18","schema":"/rests/modules/odl-device-notification?revision=2024-02-18","namespace":"urn:opendaylight:device:notification","conformance-type":"import"},{"name":"ietf-origin_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-origin?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-origin","conformance-type":"import"},{"name":"openflow-augments_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-augments?revision=2015-02-25","namespace":"urn:opendaylight:openflow:augments","conformance-type":"import"},{"name":"iana-ssh-encryption-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-encryption-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-encryption-algs","conformance-type":"import"},{"name":"ietf-truststore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-truststore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-truststore","conformance-type":"import","feature":["inline-definitions-supported"]},{"name":"distributed-datastore-provider_2025-01-30","revision":"2025-01-30","schema":"/rests/modules/distributed-datastore-provider?revision=2025-01-30","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:distributed-datastore-provider","conformance-type":"import"},{"name":"opendaylight-group-types_2013-10-18","revision":"2013-10-18","schema":"/rests/modules/opendaylight-group-types?revision=2013-10-18","namespace":"urn:opendaylight:group:types","conformance-type":"import"},{"name":"sal-remote-augment_2023-11-03","revision":"2023-11-03","schema":"/rests/modules/sal-remote-augment?revision=2023-11-03","namespace":"urn:sal:restconf:event:subscription","conformance-type":"import"},{"name":"opendaylight-ipv6-arbitrary-bitmask-fields_2016-02-24","revision":"2016-02-24","schema":"/rests/modules/opendaylight-ipv6-arbitrary-bitmask-fields?revision=2016-02-24","namespace":"urn:opendaylight:opendaylight-ipv6-arbitrary-bitmask-fields","conformance-type":"import"},{"name":"sal-flows-batch_2016-03-14","revision":"2016-03-14","schema":"/rests/modules/sal-flows-batch?revision=2016-03-14","namespace":"urn:opendaylight:flows:service","conformance-type":"import"},{"name":"ietf-tls-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-common","conformance-type":"import","feature":["tls12","hello-params","tls13"]},{"name":"openflow-types_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-types?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:types","conformance-type":"import"},{"name":"ietf-netconf-with-defaults_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf-with-defaults?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults","conformance-type":"import"},{"name":"odl-srm-ops_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-ops?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:ops","conformance-type":"import"},{"name":"odl-general-entity_2015-09-30","revision":"2015-09-30","schema":"/rests/modules/odl-general-entity?revision=2015-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:mdsal:core:general-entity","conformance-type":"import"},{"name":"iana-ssh-key-exchange-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-key-exchange-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-key-exchange-algs","conformance-type":"import"},{"name":"node-ssl-connection-error_2019-07-23","revision":"2019-07-23","schema":"/rests/modules/node-ssl-connection-error?revision=2019-07-23","namespace":"urn:opendaylight:node-ssl-connection-error:service","conformance-type":"import"},{"name":"openflow-protocol_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-protocol?revision=2013-07-31","namespace":"urn:opendaylight:openflow:protocol","conformance-type":"import"},{"name":"ietf-udp-server_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-server?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-server","conformance-type":"import"},{"name":"ietf-keystore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-keystore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-keystore","conformance-type":"import","feature":["asymmetric-keys","inline-definitions-supported"]},{"name":"aaa_2016-12-14","revision":"2016-12-14","schema":"/rests/modules/aaa?revision=2016-12-14","namespace":"urn:opendaylight:params:xml:ns:yang:aaa","conformance-type":"import"},{"name":"aaa-cert-rpc_2015-12-15","revision":"2015-12-15","schema":"/rests/modules/aaa-cert-rpc?revision=2015-12-15","namespace":"urn:opendaylight:yang:aaa:cert:rpc","conformance-type":"import"},{"name":"system-notifications_2013-09-27","revision":"2013-09-27","schema":"/rests/modules/system-notifications?revision=2013-09-27","namespace":"urn:opendaylight:openflow:system","conformance-type":"import"},{"name":"sal-flat-batch_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/sal-flat-batch?revision=2016-03-21","namespace":"urn:opendaylight:flat-batch:service","conformance-type":"import"},{"name":"notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netconf:notification:1.0","conformance-type":"import"},{"name":"sal-remote_2014-01-14","revision":"2014-01-14","schema":"/rests/modules/sal-remote?revision=2014-01-14","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:remote","conformance-type":"import"},{"name":"yang-ext_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/yang-ext?revision=2013-07-09","namespace":"urn:opendaylight:yang:extension:yang-ext","conformance-type":"import"},{"name":"opendaylight-multipart-types_2017-01-12","revision":"2017-01-12","schema":"/rests/modules/opendaylight-multipart-types?revision=2017-01-12","namespace":"urn:opendaylight:multipart:types","conformance-type":"import"},{"name":"opendaylight-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-inventory?revision=2013-08-19","namespace":"urn:opendaylight:inventory","conformance-type":"import"},{"name":"sal-queue_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-queue?revision=2015-03-05","namespace":"urn:opendaylight:queue:service","conformance-type":"import"},{"name":"sal-groups-batch_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/sal-groups-batch?revision=2016-03-15","namespace":"urn:opendaylight:groups:service","conformance-type":"import"},{"name":"arbitrator-reconcile_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/arbitrator-reconcile?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:arbitrator-reconcile:service","conformance-type":"import"},{"name":"ietf-yang-metadata_2016-08-05","revision":"2016-08-05","schema":"/rests/modules/ietf-yang-metadata?revision=2016-08-05","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-metadata","conformance-type":"import"},{"name":"opendaylight-arbitrary-bitmask-fields_2016-01-30","revision":"2016-01-30","schema":"/rests/modules/opendaylight-arbitrary-bitmask-fields?revision=2016-01-30","namespace":"urn:opendaylight:arbitrary:bitmask:fields","conformance-type":"import"},{"name":"ietf-udp-client_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-client?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-client","conformance-type":"import","feature":["local-binding"]},{"name":"opendaylight-meter-types_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/opendaylight-meter-types?revision=2013-09-18","namespace":"urn:opendaylight:meter:types","conformance-type":"import"},{"name":"opendaylight-action-types_2013-11-12","revision":"2013-11-12","schema":"/rests/modules/opendaylight-action-types?revision=2013-11-12","namespace":"urn:opendaylight:action:types","conformance-type":"import"},{"name":"sal-role_2015-07-27","revision":"2015-07-27","schema":"/rests/modules/sal-role?revision=2015-07-27","namespace":"urn:opendaylight:role:service","conformance-type":"import"},{"name":"openflow-provider-config_2016-05-10","revision":"2016-05-10","schema":"/rests/modules/openflow-provider-config?revision=2016-05-10","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:provider:config","conformance-type":"import"},{"name":"odl-serviceutils-upgrade_2018-07-02","revision":"2018-07-02","schema":"/rests/modules/odl-serviceutils-upgrade?revision=2018-07-02","namespace":"urn:opendaylight:serviceutils:upgrade","conformance-type":"import"},{"name":"opendaylight-match-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-match-types?revision=2013-10-26","namespace":"urn:opendaylight:model:match:types","conformance-type":"import"},{"name":"ietf-restconf-server_2024-08-14","revision":"2024-08-14","schema":"/rests/modules/ietf-restconf-server?revision=2024-08-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-server","conformance-type":"import","feature":["http-listen","https-listen"]},{"name":"reconciliation-result-state_2017-07-13","revision":"2017-07-13","schema":"/rests/modules/reconciliation-result-state?revision=2017-07-13","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:rf:state","conformance-type":"import"},{"name":"onf-extensions_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/onf-extensions?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf","conformance-type":"import"},{"name":"sal-table_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/sal-table?revision=2013-10-26","namespace":"urn:opendaylight:table:service","conformance-type":"import"},{"name":"iana-http-versions_2026-02-04","revision":"2026-02-04","schema":"/rests/modules/iana-http-versions?revision=2026-02-04","namespace":"urn:ietf:params:xml:ns:yang:iana-http-versions","conformance-type":"import"},{"name":"opendaylight-direct-statistics_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/opendaylight-direct-statistics?revision=2016-05-11","namespace":"urn:opendaylight:direct:statistics","conformance-type":"import"},{"name":"opendaylight-port-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-port-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:port","conformance-type":"import"},{"name":"sal-async-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/sal-async-config?revision=2017-06-19","namespace":"urn:opendaylight:async-config:service","conformance-type":"import"},{"name":"aaa-password-service-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-password-service-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:password:service:config","conformance-type":"import"},{"name":"ietf-yang-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-yang-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-types","conformance-type":"import"},{"name":"opendaylight-queue-statistics_2013-12-16","revision":"2013-12-16","schema":"/rests/modules/opendaylight-queue-statistics?revision=2013-12-16","namespace":"urn:opendaylight:queue:statistics","conformance-type":"import"},{"name":"sal-bundle_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/sal-bundle?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf:bundle:service","conformance-type":"import"},{"name":"ietf-restconf-subscribed-notifications_2019-11-17","revision":"2019-11-17","schema":"/rests/modules/ietf-restconf-subscribed-notifications?revision=2019-11-17","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-subscribed-notifications","conformance-type":"import"},{"name":"sal-meters-batch_2016-03-16","revision":"2016-03-16","schema":"/rests/modules/sal-meters-batch?revision=2016-03-16","namespace":"urn:opendaylight:meters:service","conformance-type":"import"},{"name":"odl-entity-owners","revision":"","schema":"/rests/modules/odl-entity-owners","namespace":"urn:opendaylight:params:xml:ns:yang:controller:entity-owners","conformance-type":"import"},{"name":"sal-experimenter-mp-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-mp-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-mp-message:service","conformance-type":"import"},{"name":"packet-processing_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/packet-processing?revision=2013-07-09","namespace":"urn:opendaylight:packet:service","conformance-type":"import"},{"name":"openflow-configuration_2014-06-30","revision":"2014-06-30","schema":"/rests/modules/openflow-configuration?revision=2014-06-30","namespace":"urn:opendaylight:openflow:config","conformance-type":"import"},{"name":"odl-srm-rpcs_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-rpcs?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:rpc","conformance-type":"import"},{"name":"ietf-netconf-acm_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-netconf-acm?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-acm","conformance-type":"import"},{"name":"iana-crypt-hash_2014-08-06","revision":"2014-08-06","schema":"/rests/modules/iana-crypt-hash?revision=2014-08-06","namespace":"urn:ietf:params:xml:ns:yang:iana-crypt-hash","conformance-type":"import","feature":["crypt-hash-sha-512","crypt-hash-sha-256","crypt-hash-md5"]},{"name":"openflow-extensible-match_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-extensible-match?revision=2015-02-25","namespace":"urn:opendaylight:openflow:oxm","conformance-type":"import"}],"module-set-id":"2"}}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:29.377137" elapsed="0.005575"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:29.376653" elapsed="0.006095"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:29.376609" elapsed="0.006164"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:29.385207" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:29.383053" elapsed="0.002200"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:29.382830" elapsed="0.002457"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:29.382813" elapsed="0.002497"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:50:29.385849" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:50:29.385467" elapsed="0.000409"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:29.386197" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:29.385950" elapsed="0.000306"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:29.386732" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:29.386438" elapsed="0.000320"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:29.386279" elapsed="0.000514"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:29.385931" elapsed="0.000883"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:50:29.387344" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:50:29.386970" elapsed="0.000401"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:29.387670" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:29.387440" elapsed="0.000286"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:29.388214" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:29.387906" elapsed="0.000334"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:29.387749" elapsed="0.000527"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:29.387422" elapsed="0.000875"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:50:29.388444" elapsed="0.000341"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:50:29.389242" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:50:29.388953" elapsed="0.000315"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:50:29.389419" elapsed="0.002316"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:50:29.375696" elapsed="0.016107"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:50:29.391986" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:50:29.391874" elapsed="0.000156"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:29.391855" elapsed="0.000197"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:50:29.400229" level="INFO">${text_normalized} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:50:29.392216" elapsed="0.008044"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:50:29.400311" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:50:29.400469" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:50:29.354752" elapsed="0.045743"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:50:29.400557" elapsed="0.000027"/>
</return>
<msg time="2026-04-08T00:50:29.400859" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="PASS" start="2026-04-08T00:50:29.262678" elapsed="0.138217"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Json_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:29.401374" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:29.401019" elapsed="0.000474"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:29.400988" elapsed="0.000546"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:50:29.401606" elapsed="0.000073"/>
</return>
<arg>session=${session}</arg>
<arg>folder=${RESTCONF_MODULES_DIR}</arg>
<arg>verify=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Add arguments sensible for JSON data, return Get_Templated response text.
Optionally, verification against JSON data (may be iterated) is called.
Only subset of JSON data is verified and returned if JMES path is specified in
file ${folder}/jmespath.expr.</doc>
<status status="PASS" start="2026-04-08T00:50:29.256916" elapsed="0.144950"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:29.252317" elapsed="0.149657"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:29.252299" elapsed="0.149701"/>
</if>
<kw name="Resolve_Shard_Type_Class" owner="ClusterManagement">
<if>
<branch type="IF" condition="'${shard_type}' == 'config'">
<return>
<value>DistributedConfigDatastore</value>
<status status="NOT RUN" start="2026-04-08T00:50:29.402888" elapsed="0.000046"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:50:29.402670" elapsed="0.000308"/>
</branch>
<branch type="ELSE IF" condition="'${shard_type}' == 'operational'">
<return>
<value>DistributedOperationalDatastore</value>
<status status="PASS" start="2026-04-08T00:50:29.403265" elapsed="0.000067"/>
</return>
<status status="PASS" start="2026-04-08T00:50:29.403034" elapsed="0.000346"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:29.402638" elapsed="0.000799"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized shard type: ${shard_type}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:29.403662" elapsed="0.000065"/>
</kw>
<msg time="2026-04-08T00:50:29.403862" level="INFO">${type_class} = DistributedOperationalDatastore</msg>
<var>${type_class}</var>
<arg>shard_type=${shard_type}</arg>
<doc>Simple lookup for class name corresponding to desired type.</doc>
<status status="PASS" start="2026-04-08T00:50:29.402278" elapsed="0.001610"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:50:29.404693" level="INFO">${cluster_index} = 3</msg>
<var>${cluster_index}</var>
<arg>${member_index}+${NODE_ROLE_INDEX_START}-1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:50:29.404054" elapsed="0.000666"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:29.405850" level="INFO">${uri} = jolokia/read/org.opendaylight.controller:Category=Shards,name=member-3-shard-default-operational,type=DistributedOperationalDatastore</msg>
<var>${uri}</var>
<arg>${JOLOKIA_READ_URI}:Category=Shards,name=member-${cluster_index}-shard-${shard_name}-${shard_type},type=${type_class}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:29.404878" elapsed="0.000999"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:29.412671" level="INFO">jolokia/read/org.opendaylight.controller:Category=Shards,name=member-3-shard-default-operational,type=DistributedOperationalDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:29.412388" elapsed="0.000367"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:29.413303" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:29.412994" elapsed="0.000392"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:50:29.421836" level="INFO">GET Request : url=http://10.30.171.110:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-3-shard-default-operational,type=DistributedOperationalDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-3-shard-default-operational,type=DistributedOperationalDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:50:29.421966" level="INFO">GET Response : url=http://10.30.171.110:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-3-shard-default-operational,type=DistributedOperationalDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Wed, 08 Apr 2026 00:50:29 GMT', 'Expires': 'Tue, 07 Apr 2026 23:50:29 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-3-shard-default-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"ReadWriteTransactionCount":0,"SnapshotIndex":69,"InMemoryJournalLogSize":2,"ReplicatedToAllIndex":69,"Leader":"member-1-shard-default-operational","LastIndex":71,"RaftState":"Follower","LastApplied":71,"LastCommittedTransactionTime":"1970-01-01 00:00:00.000","PeerAddresses":"member-1-shard-default-operational: pekko:\/\/opendaylight-cluster-data@10.30.170.48:2550\/user\/shardmanager-operational\/member-1-shard-default-operational, member-2-shard-default-operational: pekko:\/\/opendaylight-cluster-data@10.30.170.131:2550\/user\/shardmanager-operational\/member-2-shard-default-operational","LastLogIndex":71,"LastLeadershipChangeTime":"2026-04-08 00:46:45.941","FollowerInitialSyncStatus":true,"FollowerInfo":[],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"184.3 μs","CurrentTerm":2,"LastTerm":2,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-default-operational","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":0,"TxCohortCacheSize":0,"PeerVotingStates":"member-1-shard-default-operational: true, member-2-shard-default-operational: true","LastLogTerm":2,"StatRetrievalError":null,"CommitIndex":71,"SnapshotTerm":2,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-3-shard-default-operational","LeadershipChangeCount":1,"InMemoryJournalDataSize":90968},"timestamp":1775609429,"status":200} 
 </msg>
<msg time="2026-04-08T00:50:29.422230" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:50:29.415575" elapsed="0.006715"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:29.413551" elapsed="0.008837"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:29.422835" elapsed="0.000048"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:29.422490" elapsed="0.000490"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:29.413485" elapsed="0.009578"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:29.430593" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-3-shard-default-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"ReadWriteTransactionCount":0,"SnapshotIndex":69,"InMemoryJournalLogSize":2,"ReplicatedToAllIndex":69,"Leader":"member-1-shard-default-operational","LastIndex":71,"RaftState":"Follower","LastApplied":71,"LastCommittedTransactionTime":"1970-01-01 00:00:00.000","PeerAddresses":"member-1-shard-default-operational: pekko:\/\/opendaylight-cluster-data@10.30.170.48:2550\/user\/shardmanager-operational\/member-1-shard-default-operational, member-2-shard-default-operational: pekko:\/\/opendaylight-cluster-data@10.30.170.131:2550\/user\/shardmanager-operational\/member-2-shard-default-operational","LastLogIndex":71,"LastLeadershipChangeTime":"2026-04-08 00:46:45.941","FollowerInitialSyncStatus":true,"FollowerInfo":[],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"184.3 μs","CurrentTerm":2,"LastTerm":2,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-default-operational","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":0,"TxCohortCacheSize":0,"PeerVotingStates":"member-1-shard-default-operational: true, member-2-shard-default-operational: true","LastLogTerm":2,"StatRetrievalError":null,"CommitIndex":71,"SnapshotTerm":2,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-3-shard-default-operational","LeadershipChangeCount":1,"InMemoryJournalDataSize":90968},"timestamp":1775609429,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:29.425566" elapsed="0.005112"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:29.424956" elapsed="0.005772"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:29.424913" elapsed="0.005850"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:29.434225" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:29.431174" elapsed="0.003117"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:29.430843" elapsed="0.003497"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:29.430819" elapsed="0.003554"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:50:29.435125" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:50:29.434602" elapsed="0.000582"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:29.435615" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:29.435287" elapsed="0.000409"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:29.436393" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:29.435951" elapsed="0.000478"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:29.435729" elapsed="0.000751"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:29.435261" elapsed="0.001248"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:50:29.437256" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:50:29.436728" elapsed="0.000566"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:29.437735" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:29.437393" elapsed="0.000423"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:29.438509" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:29.438072" elapsed="0.000473"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:29.437848" elapsed="0.000747"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:29.437367" elapsed="0.001258"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:50:29.438833" elapsed="0.000502"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:50:29.439940" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:50:29.439565" elapsed="0.000411"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:50:29.440211" elapsed="0.002674"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:50:29.423985" elapsed="0.018966"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:50:29.443239" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:50:29.443106" elapsed="0.000178"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:29.443061" elapsed="0.000262"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:50:29.446242" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-3-shard-default-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp"...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:50:29.443556" elapsed="0.002739"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:50:29.446379" elapsed="0.000063"/>
</return>
<msg time="2026-04-08T00:50:29.446734" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-3-shard-default-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp"...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:50:29.407461" elapsed="0.039363"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:50:29.446958" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:50:29.447244" level="INFO">${data_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-3-shard-default-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp"...</msg>
<var>${data_text}</var>
<arg>uri=${uri}</arg>
<arg>session=${session}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-08T00:50:29.406091" elapsed="0.041182"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:50:29.449349" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-3-shard-default-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 177560942...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:50:29.448321" elapsed="0.001122"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-08T00:50:29.449552" elapsed="0.000031"/>
</return>
<msg time="2026-04-08T00:50:29.449845" level="INFO">${data_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-3-shard-default-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 177560942...</msg>
<var>${data_object}</var>
<arg>${data_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-08T00:50:29.447494" elapsed="0.002380"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:29.450358" level="INFO">${value} = {'AbortTransactionsCount': 0, 'CommitIndex': 71, 'CommittedTransactionsCount': 0, 'CurrentTerm': 2, 'FailedReadTransactionsCount': 0, 'FailedTransactionsCount': 0, 'FollowerInfo': [], 'FollowerInitial...</msg>
<var>${value}</var>
<arg>${data_object}</arg>
<arg>value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:29.450032" elapsed="0.000354"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:29.450922" level="INFO">${raft_property} = Follower</msg>
<var>${raft_property}</var>
<arg>${value}</arg>
<arg>${property}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:29.450545" elapsed="0.000403"/>
</kw>
<return>
<value>${raft_property}</value>
<status status="PASS" start="2026-04-08T00:50:29.450996" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:50:29.451147" level="INFO">${raft_state} = Follower</msg>
<var>${raft_state}</var>
<arg>RaftState</arg>
<arg>${shard_name}</arg>
<arg>${shard_type}</arg>
<arg>${member_index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft property.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T00:50:29.249637" elapsed="0.201551"/>
</kw>
<return>
<value>${raft_state}</value>
<status status="PASS" start="2026-04-08T00:50:29.451246" elapsed="0.000027"/>
</return>
<msg time="2026-04-08T00:50:29.451395" level="INFO">${raft_state} = Follower</msg>
<var>${raft_state}</var>
<arg>shard_name=${shard_name}</arg>
<arg>shard_type=${ds_type}</arg>
<arg>member_index=${index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft status.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T00:50:29.248868" elapsed="0.202551"/>
</kw>
<if>
<branch type="IF" condition="'Follower' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${follower_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-08T00:50:29.451714" elapsed="0.000192"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:29.451499" elapsed="0.000445"/>
</branch>
<branch type="ELSE IF" condition="'Leader' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${leader_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:29.452111" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:29.451968" elapsed="0.000226"/>
</branch>
<branch type="ELSE IF" condition="${validate}">
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized Raft state: ${raft_state}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:29.452360" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:29.452219" elapsed="0.000193"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:29.451481" elapsed="0.000954"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T00:50:29.248704" elapsed="0.203754"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-08T00:50:28.849962" elapsed="0.602527"/>
</for>
<return>
<value>${leader_list}</value>
<value>${follower_list}</value>
<status status="PASS" start="2026-04-08T00:50:29.452531" elapsed="0.000026"/>
</return>
<msg time="2026-04-08T00:50:29.452729" level="INFO">${leader_list} = [1]</msg>
<msg time="2026-04-08T00:50:29.452777" level="INFO">${follower_list} = [2, 3]</msg>
<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="PASS" start="2026-04-08T00:50:28.845913" elapsed="0.606888"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T00:50:29.453256" level="INFO">Length is 1.</msg>
<msg time="2026-04-08T00:50:29.453333" level="INFO">${leader_count} = 1</msg>
<var>${leader_count}</var>
<arg>${leader_list}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T00:50:29.452974" elapsed="0.000383"/>
</kw>
<if>
<branch type="IF" condition="${leader_count} &lt; 1">
<kw name="Fail" owner="BuiltIn">
<arg>No leader found.</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:29.453664" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:29.453427" elapsed="0.000292"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:29.453409" elapsed="0.000333"/>
</if>
<kw name="Length Should Be" owner="BuiltIn">
<msg time="2026-04-08T00:50:29.455790" level="INFO">Length is 1.</msg>
<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="PASS" start="2026-04-08T00:50:29.453877" elapsed="0.001960"/>
</kw>
<kw name="Get From List" owner="Collections">
<msg time="2026-04-08T00:50:29.456343" level="INFO">${leader} = 1</msg>
<var>${leader}</var>
<arg>${leader_list}</arg>
<arg>0</arg>
<doc>Returns the value specified with an ``index`` from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:50:29.456040" elapsed="0.000330"/>
</kw>
<return>
<value>${leader}</value>
<value>${follower_list}</value>
<status status="PASS" start="2026-04-08T00:50:29.456418" elapsed="0.000028"/>
</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="PASS" start="2026-04-08T00:50:28.843459" elapsed="0.613114"/>
</kw>
<var name="${shard_name}">default</var>
<status status="PASS" start="2026-04-08T00:50:28.843241" elapsed="0.613379"/>
</iter>
<var>${shard_name}</var>
<value>@{shard_name_list}</value>
<status status="PASS" start="2026-04-08T00:50:27.608477" elapsed="1.848175"/>
</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="PASS" start="2026-04-08T00:50:27.608079" elapsed="1.848627"/>
</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-04-08T00:50:29.461726" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:50:29.461326" elapsed="0.000428"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:50:29.462243" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:50:29.461918" elapsed="0.000352"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:50:29.462314" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:50:29.462468" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:50:29.460941" elapsed="0.001553"/>
</kw>
<kw name="Sort List" owner="Collections">
<arg>${index_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="PASS" start="2026-04-08T00:50:29.462647" elapsed="0.000153"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:50:29.463305" level="INFO">${ds_type} = config</msg>
<var>${ds_type}</var>
<arg>'${shard_type}' != 'config'</arg>
<arg>operational</arg>
<arg>config</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:50:29.462958" elapsed="0.000374"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:50:29.463726" level="INFO">${leader_list} = []</msg>
<var>${leader_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:50:29.463488" elapsed="0.000264"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:50:29.464131" level="INFO">${follower_list} = []</msg>
<var>${follower_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:50:29.463898" elapsed="0.000273"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_Raft_State_Of_Shard_At_Member" owner="ClusterManagement">
<kw name="Get_Raft_Property_From_Shard_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:29.467555" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:29.466693" elapsed="0.000953"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:50:29.467728" elapsed="0.000031"/>
</return>
<msg time="2026-04-08T00:50:29.467995" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:50:29.466139" elapsed="0.001883"/>
</kw>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Get_As_Json_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:29.516127" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:29.515752" elapsed="0.000417"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:50:29.516891" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:50:29.516659" elapsed="0.000302">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-08T00:50:29.517053" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:50:29.516332" elapsed="0.000745"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:50:29.517652" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:50:29.517255" elapsed="0.000424"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T00:50:29.517970" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-08T00:50:29.518290" level="INFO">${template} = /rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T00:50:29.517838" elapsed="0.000479"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:29.518718" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:29.518472" elapsed="0.000290"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:29.519710" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:29.519457" elapsed="0.000297"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-08T00:50:29.520196" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-08T00:50:29.519914" elapsed="0.000309"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:29.520538" elapsed="0.000022"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:29.520738" elapsed="0.000023"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:29.520909" elapsed="0.000021"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-08T00:50:29.520405" elapsed="0.000560"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-08T00:50:29.520272" elapsed="0.000723"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-08T00:50:29.521036" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:50:29.521210" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-08T00:50:29.519116" elapsed="0.002120"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:29.518831" elapsed="0.002437"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:29.521459" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:29.521292" elapsed="0.000223"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:29.518811" elapsed="0.002724"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:50:29.522097" level="INFO">${final_text} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:50:29.521673" elapsed="0.000451"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T00:50:29.522188" 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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="PASS" start="2026-04-08T00:50:29.515137" elapsed="0.007175"/>
</kw>
<msg time="2026-04-08T00:50:29.522365" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:50:29.503472" elapsed="0.018944"/>
</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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:29.534148" elapsed="0.000040"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:29.545631" elapsed="0.000029"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:29.557051" elapsed="0.000027"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:29.557318" elapsed="0.000023"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:29.557497" elapsed="0.000022"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:29.557861" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:29.557720" elapsed="0.000196"/>
</branch>
<status status="NOT RUN" start="2026-04-08T00:50:29.557706" elapsed="0.000233"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:29.558075" elapsed="0.000020"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:29.558254" elapsed="0.000021"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:29.558417" elapsed="0.000021"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-08T00:50:29.557674" elapsed="0.000796"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-08T00:50:29.557574" elapsed="0.000922"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:29.558637" elapsed="0.000020"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-08T00:50:29.558711" elapsed="0.000015"/>
</return>
<msg time="2026-04-08T00:50:29.558827" level="INFO">${uri} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-08T00:50:29.499526" elapsed="0.059327"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:50:29.560090" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:50:29.559845" elapsed="0.000326">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-08T00:50:29.560265" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:50:29.559501" elapsed="0.000789"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:29.560604" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:29.560361" elapsed="0.000299"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:29.561146" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:29.560856" elapsed="0.000331"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:29.560684" elapsed="0.000538"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:29.560343" elapsed="0.000900"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:50:29.563423" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:50:29.561400" elapsed="0.002050"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-08T00:50:29.563500" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:50:29.563652" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:50:29.559177" elapsed="0.004500"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:50:29.564871" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:50:29.564640" elapsed="0.000294">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-08T00:50:29.565025" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:50:29.564309" elapsed="0.000740"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-08T00:50:29.565286" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-08T00:50:29.565120" elapsed="0.000226"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:29.565101" elapsed="0.000268"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:29.565513" elapsed="0.000022"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:29.565732" elapsed="0.000021"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-08T00:50:29.565799" elapsed="0.000015"/>
</return>
<msg time="2026-04-08T00:50:29.568949" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:50:29.563973" elapsed="0.005004"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:29.570391" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:29.570125" elapsed="0.000311"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:29.570942" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:29.570586" elapsed="0.000400"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:50:29.584771" level="INFO">GET Request : url=http://10.30.170.48:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 path_url=/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01nfu2ssrokr1es5zgka78rw970.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:50:29.585433" level="INFO">GET Response : url=http://10.30.170.48:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Transfer-Encoding': 'chunked'} 
 body={"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","hidden-symmetric-keys","encrypted-private-keys","asymmetrically-encrypted-value-format","cms-encrypted-data-format","cleartext-private-keys","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["ssh-client-keepalives","client-ident-hostbased","client-ident-publickey","client-ident-password"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-ex... (set the log level to DEBUG or TRACE to see the full content) 
 </msg>
<msg time="2026-04-08T00:50:29.585721" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:50:29.572986" elapsed="0.012773"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:29.571055" elapsed="0.014763"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:29.586072" elapsed="0.000032"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:29.585855" elapsed="0.000329"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:29.571036" elapsed="0.015179"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:29.591178" level="INFO">{"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","hidden-symmetric-keys","encrypted-private-keys","asymmetrically-encrypted-value-format","cms-encrypted-data-format","cleartext-private-keys","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["ssh-client-keepalives","client-ident-hostbased","client-ident-publickey","client-ident-password"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-experimenter-types?revision=2015-10-20","namespace":"urn:opendaylight:openflowplugin:experimenter:types","conformance-type":"import"},{"name":"ietf-ip_2018-02-22","revision":"2018-02-22","schema":"/rests/modules/ietf-ip?revision=2018-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-ip","conformance-type":"import","feature":["ipv6-privacy-autoconf","ipv4-non-contiguous-netmasks"]},{"name":"ietf-tcp-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-client","conformance-type":"import","feature":["local-binding-supported","tcp-client-keepalives"]},{"name":"node-config_2014-10-15","revision":"2014-10-15","schema":"/rests/modules/node-config?revision=2014-10-15","namespace":"urn:opendaylight:module:config","conformance-type":"import"},{"name":"ietf-restconf_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf","conformance-type":"import"},{"name":"ietf-datastores_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-datastores?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-datastores","conformance-type":"import"},{"name":"ietf-yang-patch_2017-02-22","revision":"2017-02-22","schema":"/rests/modules/ietf-yang-patch?revision=2017-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-patch","conformance-type":"import"},{"name":"sal-group_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-group?revision=2013-09-18","namespace":"urn:opendaylight:group:service","conformance-type":"import"},{"name":"odl-codegen-extensions_2024-06-27","revision":"2024-06-27","schema":"/rests/modules/odl-codegen-extensions?revision=2024-06-27","namespace":"urn:opendaylight:yang:extension:codegen","conformance-type":"import"},{"name":"sal-meter_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-meter?revision=2013-09-18","namespace":"urn:opendaylight:meter:service","conformance-type":"import"},{"name":"ietf-interfaces_2018-02-20","revision":"2018-02-20","schema":"/rests/modules/ietf-interfaces?revision=2018-02-20","namespace":"urn:ietf:params:xml:ns:yang:ietf-interfaces","conformance-type":"import","feature":["pre-provisioning","if-mib","arbitrary-names"]},{"name":"opendaylight-l2-types_2013-08-27","revision":"2013-08-27","schema":"/rests/modules/opendaylight-l2-types?revision=2013-08-27","namespace":"urn:opendaylight:l2:types","conformance-type":"import"},{"name":"opendaylight-flow-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-flow-types?revision=2013-10-26","namespace":"urn:opendaylight:flow:types","conformance-type":"import"},{"name":"lldp-speaker-config_2016-05-12","revision":"2016-05-12","schema":"/rests/modules/lldp-speaker-config?revision=2016-05-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker:config","conformance-type":"import"},{"name":"aaa-cert_2015-11-26","revision":"2015-11-26","schema":"/rests/modules/aaa-cert?revision=2015-11-26","namespace":"urn:opendaylight:yang:aaa:cert","conformance-type":"import"},{"name":"openflow-action_2015-02-03","revision":"2015-02-03","schema":"/rests/modules/openflow-action?revision=2015-02-03","namespace":"urn:opendaylight:openflow:common:action","conformance-type":"import"},{"name":"openflow-approved-extensions_2016-08-02","revision":"2016-08-02","schema":"/rests/modules/openflow-approved-extensions?revision=2016-08-02","namespace":"urn:opendaylight:openflow:approved:extensions","conformance-type":"import"},{"name":"nc-notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/nc-notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netmod:notification","conformance-type":"import"},{"name":"ietf-netconf-nmda_2019-01-07","revision":"2019-01-07","schema":"/rests/modules/ietf-netconf-nmda?revision=2019-01-07","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-nmda","conformance-type":"import","feature":["with-defaults","origin"]},{"name":"ietf-tcp-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-common","conformance-type":"import","feature":["keepalives-supported"]},{"name":"network-topology_2013-10-21","revision":"2013-10-21","schema":"/rests/modules/network-topology?revision=2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:network-topology","conformance-type":"import"},{"name":"aaa-encrypt-service-config_2024-02-02","revision":"2024-02-02","schema":"/rests/modules/aaa-encrypt-service-config?revision=2024-02-02","namespace":"config:aaa:authn:encrypt:service:config","conformance-type":"import"},{"name":"openflow-instruction_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-instruction?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:instruction","conformance-type":"import"},{"name":"ietf-tls-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-client","conformance-type":"import","feature":["client-ident-x509-cert","server-auth-x509-cert"]},{"name":"opendaylight-group-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-group-statistics?revision=2013-11-11","namespace":"urn:opendaylight:group:statistics","conformance-type":"import"},{"name":"cluster-admin_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/cluster-admin?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:cluster:admin","conformance-type":"import"},{"name":"opendaylight-flow-statistics_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-flow-statistics?revision=2013-08-19","namespace":"urn:opendaylight:flow:statistics","conformance-type":"import"},{"name":"opendaylight-table-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-table-types?revision=2013-10-26","namespace":"urn:opendaylight:table:types","conformance-type":"import"},{"name":"forwarding-rules-manager-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/forwarding-rules-manager-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:forwardingrules-manager:config","conformance-type":"import"},{"name":"odl-srm-types_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-types?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:types","conformance-type":"import"},{"name":"ietf-x509-cert-to-name_2014-12-10","revision":"2014-12-10","schema":"/rests/modules/ietf-x509-cert-to-name?revision=2014-12-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-x509-cert-to-name","conformance-type":"import"},{"name":"flow-node-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-node-inventory?revision=2013-08-19","namespace":"urn:opendaylight:flow:inventory","conformance-type":"import"},{"name":"flow-errors_2013-11-16","revision":"2013-11-16","schema":"/rests/modules/flow-errors?revision=2013-11-16","namespace":"urn:opendaylight:flow:errors","conformance-type":"import"},{"name":"ietf-netconf_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:netconf:base:1.0","conformance-type":"import","feature":["xpath","url","rollback-on-error","validate","startup","candidate","confirmed-commit","writable-running"]},{"name":"iana-ssh-public-key-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-public-key-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-public-key-algs","conformance-type":"import"},{"name":"aaa-cert-mdsal_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/aaa-cert-mdsal?revision=2016-03-21","namespace":"urn:opendaylight:yang:aaa:cert:mdsal","conformance-type":"import"},{"name":"odl-device-notification_2024-02-18","revision":"2024-02-18","schema":"/rests/modules/odl-device-notification?revision=2024-02-18","namespace":"urn:opendaylight:device:notification","conformance-type":"import"},{"name":"ietf-origin_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-origin?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-origin","conformance-type":"import"},{"name":"openflow-augments_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-augments?revision=2015-02-25","namespace":"urn:opendaylight:openflow:augments","conformance-type":"import"},{"name":"iana-ssh-encryption-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-encryption-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-encryption-algs","conformance-type":"import"},{"name":"ietf-truststore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-truststore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-truststore","conformance-type":"import","feature":["inline-definitions-supported"]},{"name":"distributed-datastore-provider_2025-01-30","revision":"2025-01-30","schema":"/rests/modules/distributed-datastore-provider?revision=2025-01-30","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:distributed-datastore-provider","conformance-type":"import"},{"name":"opendaylight-group-types_2013-10-18","revision":"2013-10-18","schema":"/rests/modules/opendaylight-group-types?revision=2013-10-18","namespace":"urn:opendaylight:group:types","conformance-type":"import"},{"name":"sal-remote-augment_2023-11-03","revision":"2023-11-03","schema":"/rests/modules/sal-remote-augment?revision=2023-11-03","namespace":"urn:sal:restconf:event:subscription","conformance-type":"import"},{"name":"opendaylight-ipv6-arbitrary-bitmask-fields_2016-02-24","revision":"2016-02-24","schema":"/rests/modules/opendaylight-ipv6-arbitrary-bitmask-fields?revision=2016-02-24","namespace":"urn:opendaylight:opendaylight-ipv6-arbitrary-bitmask-fields","conformance-type":"import"},{"name":"sal-flows-batch_2016-03-14","revision":"2016-03-14","schema":"/rests/modules/sal-flows-batch?revision=2016-03-14","namespace":"urn:opendaylight:flows:service","conformance-type":"import"},{"name":"ietf-tls-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-common","conformance-type":"import","feature":["tls12","hello-params","tls13"]},{"name":"openflow-types_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-types?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:types","conformance-type":"import"},{"name":"ietf-netconf-with-defaults_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf-with-defaults?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults","conformance-type":"import"},{"name":"odl-srm-ops_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-ops?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:ops","conformance-type":"import"},{"name":"odl-general-entity_2015-09-30","revision":"2015-09-30","schema":"/rests/modules/odl-general-entity?revision=2015-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:mdsal:core:general-entity","conformance-type":"import"},{"name":"iana-ssh-key-exchange-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-key-exchange-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-key-exchange-algs","conformance-type":"import"},{"name":"node-ssl-connection-error_2019-07-23","revision":"2019-07-23","schema":"/rests/modules/node-ssl-connection-error?revision=2019-07-23","namespace":"urn:opendaylight:node-ssl-connection-error:service","conformance-type":"import"},{"name":"openflow-protocol_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-protocol?revision=2013-07-31","namespace":"urn:opendaylight:openflow:protocol","conformance-type":"import"},{"name":"ietf-udp-server_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-server?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-server","conformance-type":"import"},{"name":"ietf-keystore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-keystore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-keystore","conformance-type":"import","feature":["asymmetric-keys","inline-definitions-supported"]},{"name":"aaa_2016-12-14","revision":"2016-12-14","schema":"/rests/modules/aaa?revision=2016-12-14","namespace":"urn:opendaylight:params:xml:ns:yang:aaa","conformance-type":"import"},{"name":"aaa-cert-rpc_2015-12-15","revision":"2015-12-15","schema":"/rests/modules/aaa-cert-rpc?revision=2015-12-15","namespace":"urn:opendaylight:yang:aaa:cert:rpc","conformance-type":"import"},{"name":"system-notifications_2013-09-27","revision":"2013-09-27","schema":"/rests/modules/system-notifications?revision=2013-09-27","namespace":"urn:opendaylight:openflow:system","conformance-type":"import"},{"name":"sal-flat-batch_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/sal-flat-batch?revision=2016-03-21","namespace":"urn:opendaylight:flat-batch:service","conformance-type":"import"},{"name":"notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netconf:notification:1.0","conformance-type":"import"},{"name":"sal-remote_2014-01-14","revision":"2014-01-14","schema":"/rests/modules/sal-remote?revision=2014-01-14","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:remote","conformance-type":"import"},{"name":"yang-ext_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/yang-ext?revision=2013-07-09","namespace":"urn:opendaylight:yang:extension:yang-ext","conformance-type":"import"},{"name":"opendaylight-multipart-types_2017-01-12","revision":"2017-01-12","schema":"/rests/modules/opendaylight-multipart-types?revision=2017-01-12","namespace":"urn:opendaylight:multipart:types","conformance-type":"import"},{"name":"opendaylight-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-inventory?revision=2013-08-19","namespace":"urn:opendaylight:inventory","conformance-type":"import"},{"name":"sal-queue_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-queue?revision=2015-03-05","namespace":"urn:opendaylight:queue:service","conformance-type":"import"},{"name":"sal-groups-batch_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/sal-groups-batch?revision=2016-03-15","namespace":"urn:opendaylight:groups:service","conformance-type":"import"},{"name":"arbitrator-reconcile_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/arbitrator-reconcile?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:arbitrator-reconcile:service","conformance-type":"import"},{"name":"ietf-yang-metadata_2016-08-05","revision":"2016-08-05","schema":"/rests/modules/ietf-yang-metadata?revision=2016-08-05","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-metadata","conformance-type":"import"},{"name":"opendaylight-arbitrary-bitmask-fields_2016-01-30","revision":"2016-01-30","schema":"/rests/modules/opendaylight-arbitrary-bitmask-fields?revision=2016-01-30","namespace":"urn:opendaylight:arbitrary:bitmask:fields","conformance-type":"import"},{"name":"ietf-udp-client_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-client?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-client","conformance-type":"import","feature":["local-binding"]},{"name":"opendaylight-meter-types_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/opendaylight-meter-types?revision=2013-09-18","namespace":"urn:opendaylight:meter:types","conformance-type":"import"},{"name":"opendaylight-action-types_2013-11-12","revision":"2013-11-12","schema":"/rests/modules/opendaylight-action-types?revision=2013-11-12","namespace":"urn:opendaylight:action:types","conformance-type":"import"},{"name":"sal-role_2015-07-27","revision":"2015-07-27","schema":"/rests/modules/sal-role?revision=2015-07-27","namespace":"urn:opendaylight:role:service","conformance-type":"import"},{"name":"openflow-provider-config_2016-05-10","revision":"2016-05-10","schema":"/rests/modules/openflow-provider-config?revision=2016-05-10","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:provider:config","conformance-type":"import"},{"name":"odl-serviceutils-upgrade_2018-07-02","revision":"2018-07-02","schema":"/rests/modules/odl-serviceutils-upgrade?revision=2018-07-02","namespace":"urn:opendaylight:serviceutils:upgrade","conformance-type":"import"},{"name":"opendaylight-match-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-match-types?revision=2013-10-26","namespace":"urn:opendaylight:model:match:types","conformance-type":"import"},{"name":"ietf-restconf-server_2024-08-14","revision":"2024-08-14","schema":"/rests/modules/ietf-restconf-server?revision=2024-08-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-server","conformance-type":"import","feature":["http-listen","https-listen"]},{"name":"reconciliation-result-state_2017-07-13","revision":"2017-07-13","schema":"/rests/modules/reconciliation-result-state?revision=2017-07-13","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:rf:state","conformance-type":"import"},{"name":"onf-extensions_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/onf-extensions?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf","conformance-type":"import"},{"name":"sal-table_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/sal-table?revision=2013-10-26","namespace":"urn:opendaylight:table:service","conformance-type":"import"},{"name":"iana-http-versions_2026-02-04","revision":"2026-02-04","schema":"/rests/modules/iana-http-versions?revision=2026-02-04","namespace":"urn:ietf:params:xml:ns:yang:iana-http-versions","conformance-type":"import"},{"name":"opendaylight-direct-statistics_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/opendaylight-direct-statistics?revision=2016-05-11","namespace":"urn:opendaylight:direct:statistics","conformance-type":"import"},{"name":"opendaylight-port-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-port-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:port","conformance-type":"import"},{"name":"sal-async-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/sal-async-config?revision=2017-06-19","namespace":"urn:opendaylight:async-config:service","conformance-type":"import"},{"name":"aaa-password-service-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-password-service-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:password:service:config","conformance-type":"import"},{"name":"ietf-yang-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-yang-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-types","conformance-type":"import"},{"name":"opendaylight-queue-statistics_2013-12-16","revision":"2013-12-16","schema":"/rests/modules/opendaylight-queue-statistics?revision=2013-12-16","namespace":"urn:opendaylight:queue:statistics","conformance-type":"import"},{"name":"sal-bundle_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/sal-bundle?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf:bundle:service","conformance-type":"import"},{"name":"ietf-restconf-subscribed-notifications_2019-11-17","revision":"2019-11-17","schema":"/rests/modules/ietf-restconf-subscribed-notifications?revision=2019-11-17","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-subscribed-notifications","conformance-type":"import"},{"name":"sal-meters-batch_2016-03-16","revision":"2016-03-16","schema":"/rests/modules/sal-meters-batch?revision=2016-03-16","namespace":"urn:opendaylight:meters:service","conformance-type":"import"},{"name":"odl-entity-owners","revision":"","schema":"/rests/modules/odl-entity-owners","namespace":"urn:opendaylight:params:xml:ns:yang:controller:entity-owners","conformance-type":"import"},{"name":"sal-experimenter-mp-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-mp-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-mp-message:service","conformance-type":"import"},{"name":"packet-processing_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/packet-processing?revision=2013-07-09","namespace":"urn:opendaylight:packet:service","conformance-type":"import"},{"name":"openflow-configuration_2014-06-30","revision":"2014-06-30","schema":"/rests/modules/openflow-configuration?revision=2014-06-30","namespace":"urn:opendaylight:openflow:config","conformance-type":"import"},{"name":"odl-srm-rpcs_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-rpcs?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:rpc","conformance-type":"import"},{"name":"ietf-netconf-acm_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-netconf-acm?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-acm","conformance-type":"import"},{"name":"iana-crypt-hash_2014-08-06","revision":"2014-08-06","schema":"/rests/modules/iana-crypt-hash?revision=2014-08-06","namespace":"urn:ietf:params:xml:ns:yang:iana-crypt-hash","conformance-type":"import","feature":["crypt-hash-sha-512","crypt-hash-sha-256","crypt-hash-md5"]},{"name":"openflow-extensible-match_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-extensible-match?revision=2015-02-25","namespace":"urn:opendaylight:openflow:oxm","conformance-type":"import"}],"module-set-id":"2"}}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:29.587597" elapsed="0.004036"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:29.587294" elapsed="0.004389"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:29.587267" elapsed="0.004451"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:29.594875" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:29.592120" elapsed="0.002802"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:29.591797" elapsed="0.003159"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:29.591773" elapsed="0.003207"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:50:29.595544" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:50:29.595144" elapsed="0.000427"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:29.595876" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:29.595642" elapsed="0.000290"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:29.596428" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:29.596112" elapsed="0.000342"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:29.595955" elapsed="0.000535"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:29.595623" elapsed="0.000888"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:50:29.597027" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:50:29.596668" elapsed="0.000386"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:29.597388" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:29.597124" elapsed="0.000322"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:29.597917" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:29.597626" elapsed="0.000317"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:29.597469" elapsed="0.000508"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:29.597106" elapsed="0.000892"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:50:29.598144" elapsed="0.000361"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:50:29.598951" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:50:29.598668" elapsed="0.000309"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:50:29.599128" elapsed="0.002200"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:50:29.586693" elapsed="0.014697"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:50:29.601563" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:50:29.601459" elapsed="0.000148"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:29.601441" elapsed="0.000187"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:50:29.609884" level="INFO">${text_normalized} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:50:29.601769" elapsed="0.008146"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:50:29.609967" elapsed="0.000032"/>
</return>
<msg time="2026-04-08T00:50:29.610128" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:50:29.569323" elapsed="0.040845"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:50:29.610233" elapsed="0.000027"/>
</return>
<msg time="2026-04-08T00:50:29.610549" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="PASS" start="2026-04-08T00:50:29.478284" elapsed="0.132303"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Json_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:29.611050" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:29.610712" elapsed="0.000470"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:29.610682" elapsed="0.000541"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:50:29.611282" elapsed="0.000069"/>
</return>
<arg>session=${session}</arg>
<arg>folder=${RESTCONF_MODULES_DIR}</arg>
<arg>verify=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Add arguments sensible for JSON data, return Get_Templated response text.
Optionally, verification against JSON data (may be iterated) is called.
Only subset of JSON data is verified and returned if JMES path is specified in
file ${folder}/jmespath.expr.</doc>
<status status="PASS" start="2026-04-08T00:50:29.472515" elapsed="0.139025"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:29.468092" elapsed="0.143557"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:29.468073" elapsed="0.143602"/>
</if>
<kw name="Resolve_Shard_Type_Class" owner="ClusterManagement">
<if>
<branch type="IF" condition="'${shard_type}' == 'config'">
<return>
<value>DistributedConfigDatastore</value>
<status status="PASS" start="2026-04-08T00:50:29.612583" elapsed="0.000069"/>
</return>
<status status="PASS" start="2026-04-08T00:50:29.612362" elapsed="0.000338"/>
</branch>
<branch type="ELSE IF" condition="'${shard_type}' == 'operational'">
<return>
<value>DistributedOperationalDatastore</value>
<status status="NOT RUN" start="2026-04-08T00:50:29.612841" elapsed="0.000044"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:50:29.612757" elapsed="0.000170"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:29.612329" elapsed="0.000655"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized shard type: ${shard_type}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:29.613452" elapsed="0.000068"/>
</kw>
<msg time="2026-04-08T00:50:29.613659" level="INFO">${type_class} = DistributedConfigDatastore</msg>
<var>${type_class}</var>
<arg>shard_type=${shard_type}</arg>
<doc>Simple lookup for class name corresponding to desired type.</doc>
<status status="PASS" start="2026-04-08T00:50:29.611931" elapsed="0.001754"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:50:29.614501" level="INFO">${cluster_index} = 1</msg>
<var>${cluster_index}</var>
<arg>${member_index}+${NODE_ROLE_INDEX_START}-1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:50:29.613852" elapsed="0.000676"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:29.615636" level="INFO">${uri} = jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-inventory-config,type=DistributedConfigDatastore</msg>
<var>${uri}</var>
<arg>${JOLOKIA_READ_URI}:Category=Shards,name=member-${cluster_index}-shard-${shard_name}-${shard_type},type=${type_class}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:29.614682" elapsed="0.000982"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:29.622582" level="INFO">jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-inventory-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:29.622297" elapsed="0.000368"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:29.623203" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:29.622905" elapsed="0.000380"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:50:29.633107" level="INFO">GET Request : url=http://10.30.170.48:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-inventory-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-inventory-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:50:29.633256" level="INFO">GET Response : url=http://10.30.170.48:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-inventory-config,type=DistributedConfigDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Wed, 08 Apr 2026 00:50:29 GMT', 'Expires': 'Tue, 07 Apr 2026 23:50:29 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-1-shard-inventory-config,type=DistributedConfigDatastore","type":"read"},"value":{"ReadWriteTransactionCount":6,"SnapshotIndex":10,"InMemoryJournalLogSize":1,"ReplicatedToAllIndex":10,"Leader":"member-1-shard-inventory-config","LastIndex":11,"RaftState":"Leader","LastApplied":11,"LastCommittedTransactionTime":"1970-01-01 00:00:00.000","PeerAddresses":"member-2-shard-inventory-config: pekko:\/\/opendaylight-cluster-data@10.30.170.131:2550\/user\/shardmanager-config\/member-2-shard-inventory-config, member-3-shard-inventory-config: pekko:\/\/opendaylight-cluster-data@10.30.171.110:2550\/user\/shardmanager-config\/member-3-shard-inventory-config","LastLogIndex":11,"LastLeadershipChangeTime":"2026-04-08 00:46:45.964","FollowerInitialSyncStatus":false,"FollowerInfo":[{"timeSinceLastActivity":"00:00:00.157","active":true,"matchIndex":11,"voting":true,"id":"member-2-shard-inventory-config","nextIndex":12},{"timeSinceLastActivity":"00:00:00.158","active":true,"matchIndex":11,"voting":true,"id":"member-3-shard-inventory-config","nextIndex":12}],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"697.3 μs","CurrentTerm":2,"LastTerm":2,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-inventory-config","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":0,"TxCohortCacheSize":0,"PeerVotingStates":"member-2-shard-inventory-config: true, member-3-shard-inventory-config: true","LastLogTerm":2,"StatRetrievalError":null,"CommitIndex":11,"SnapshotTerm":2,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-1-shard-inventory-config","LeadershipChangeCount":1,"InMemoryJournalDataSize":444},"timestamp":1775609429,"status":200} 
 </msg>
<msg time="2026-04-08T00:50:29.633367" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:50:29.625533" elapsed="0.007859"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:29.623428" elapsed="0.010007"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:29.633635" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:29.633481" elapsed="0.000218"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:29.623383" elapsed="0.010354"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:29.637243" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-1-shard-inventory-config,type=DistributedConfigDatastore","type":"read"},"value":{"ReadWriteTransactionCount":6,"SnapshotIndex":10,"InMemoryJournalLogSize":1,"ReplicatedToAllIndex":10,"Leader":"member-1-shard-inventory-config","LastIndex":11,"RaftState":"Leader","LastApplied":11,"LastCommittedTransactionTime":"1970-01-01 00:00:00.000","PeerAddresses":"member-2-shard-inventory-config: pekko:\/\/opendaylight-cluster-data@10.30.170.131:2550\/user\/shardmanager-config\/member-2-shard-inventory-config, member-3-shard-inventory-config: pekko:\/\/opendaylight-cluster-data@10.30.171.110:2550\/user\/shardmanager-config\/member-3-shard-inventory-config","LastLogIndex":11,"LastLeadershipChangeTime":"2026-04-08 00:46:45.964","FollowerInitialSyncStatus":false,"FollowerInfo":[{"timeSinceLastActivity":"00:00:00.157","active":true,"matchIndex":11,"voting":true,"id":"member-2-shard-inventory-config","nextIndex":12},{"timeSinceLastActivity":"00:00:00.158","active":true,"matchIndex":11,"voting":true,"id":"member-3-shard-inventory-config","nextIndex":12}],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"697.3 μs","CurrentTerm":2,"LastTerm":2,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-inventory-config","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":0,"TxCohortCacheSize":0,"PeerVotingStates":"member-2-shard-inventory-config: true, member-3-shard-inventory-config: true","LastLogTerm":2,"StatRetrievalError":null,"CommitIndex":11,"SnapshotTerm":2,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-1-shard-inventory-config","LeadershipChangeCount":1,"InMemoryJournalDataSize":444},"timestamp":1775609429,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:29.634828" elapsed="0.002478"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:29.634611" elapsed="0.002730"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:29.634592" elapsed="0.002774"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:29.640627" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:29.637645" elapsed="0.003047"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:29.637423" elapsed="0.003316"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:29.637406" elapsed="0.003366"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:50:29.641562" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:50:29.640996" elapsed="0.000603"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:29.642027" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:29.641699" elapsed="0.000409"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:29.642802" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:29.642387" elapsed="0.000451"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:29.642141" elapsed="0.000746"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:29.641673" elapsed="0.001244"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:50:29.643661" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:50:29.643137" elapsed="0.000561"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:29.644121" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:29.643794" elapsed="0.000429"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:29.644881" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:29.644476" elapsed="0.000441"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:29.644256" elapsed="0.000709"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:29.643769" elapsed="0.001225"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:50:29.645242" elapsed="0.000520"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:50:29.646389" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:50:29.645991" elapsed="0.000433"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:50:29.646642" elapsed="0.003049"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:50:29.634190" elapsed="0.015588"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:50:29.650112" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:50:29.650000" elapsed="0.000350"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:29.649932" elapsed="0.000459"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:50:29.653433" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-1-shard-inventory-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 177560...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:50:29.650623" elapsed="0.002862"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:50:29.653567" elapsed="0.000062"/>
</return>
<msg time="2026-04-08T00:50:29.653957" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-1-shard-inventory-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 177560...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:50:29.617324" elapsed="0.036727"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:50:29.654152" elapsed="0.000044"/>
</return>
<msg time="2026-04-08T00:50:29.654437" level="INFO">${data_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-1-shard-inventory-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 177560...</msg>
<var>${data_text}</var>
<arg>uri=${uri}</arg>
<arg>session=${session}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-08T00:50:29.615879" elapsed="0.038586"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:50:29.656540" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-1-shard-inventory-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1775609429, 'valu...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:50:29.655502" elapsed="0.001131"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-08T00:50:29.656715" elapsed="0.000031"/>
</return>
<msg time="2026-04-08T00:50:29.657007" level="INFO">${data_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-1-shard-inventory-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1775609429, 'valu...</msg>
<var>${data_object}</var>
<arg>${data_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-08T00:50:29.654685" elapsed="0.002350"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:29.657541" level="INFO">${value} = {'AbortTransactionsCount': 0, 'CommitIndex': 11, 'CommittedTransactionsCount': 0, 'CurrentTerm': 2, 'FailedReadTransactionsCount': 0, 'FailedTransactionsCount': 0, 'FollowerInfo': [{'active': True, 'i...</msg>
<var>${value}</var>
<arg>${data_object}</arg>
<arg>value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:29.657225" elapsed="0.000344"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:29.658101" level="INFO">${raft_property} = Leader</msg>
<var>${raft_property}</var>
<arg>${value}</arg>
<arg>${property}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:29.657725" elapsed="0.000402"/>
</kw>
<return>
<value>${raft_property}</value>
<status status="PASS" start="2026-04-08T00:50:29.658189" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:50:29.658344" level="INFO">${raft_state} = Leader</msg>
<var>${raft_state}</var>
<arg>RaftState</arg>
<arg>${shard_name}</arg>
<arg>${shard_type}</arg>
<arg>${member_index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft property.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T00:50:29.465455" elapsed="0.192914"/>
</kw>
<return>
<value>${raft_state}</value>
<status status="PASS" start="2026-04-08T00:50:29.658425" elapsed="0.000026"/>
</return>
<msg time="2026-04-08T00:50:29.658569" level="INFO">${raft_state} = Leader</msg>
<var>${raft_state}</var>
<arg>shard_name=${shard_name}</arg>
<arg>shard_type=${ds_type}</arg>
<arg>member_index=${index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft status.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T00:50:29.464579" elapsed="0.194014"/>
</kw>
<if>
<branch type="IF" condition="'Follower' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${follower_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:29.658883" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:29.658671" elapsed="0.000269"/>
</branch>
<branch type="ELSE IF" condition="'Leader' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${leader_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-08T00:50:29.659194" elapsed="0.000194"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:29.658963" elapsed="0.000464"/>
</branch>
<branch type="ELSE IF" condition="${validate}">
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized Raft state: ${raft_state}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:29.659593" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:29.659450" elapsed="0.000194"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:29.658653" elapsed="0.001013"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T00:50:29.464417" elapsed="0.195272"/>
</iter>
<iter>
<kw name="Get_Raft_State_Of_Shard_At_Member" owner="ClusterManagement">
<kw name="Get_Raft_Property_From_Shard_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:29.662879" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:29.662030" elapsed="0.000938"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:50:29.663046" elapsed="0.000031"/>
</return>
<msg time="2026-04-08T00:50:29.663422" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:50:29.661507" elapsed="0.001941"/>
</kw>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Get_As_Json_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:29.711423" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:29.711032" elapsed="0.000419"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:50:29.712242" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:50:29.711987" elapsed="0.000328">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-08T00:50:29.712409" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:50:29.711611" elapsed="0.000822"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:50:29.712978" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:50:29.712597" elapsed="0.000435"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T00:50:29.713350" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-08T00:50:29.713495" level="INFO">${template} = /rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T00:50:29.713211" elapsed="0.000309"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:29.713919" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:29.713675" elapsed="0.000287"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:29.714907" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:29.714657" elapsed="0.000294"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-08T00:50:29.715393" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-08T00:50:29.715109" elapsed="0.000310"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:29.715735" elapsed="0.000022"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:29.715935" elapsed="0.000023"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:29.716106" elapsed="0.000021"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-08T00:50:29.715604" elapsed="0.000574"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-08T00:50:29.715467" elapsed="0.000742"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-08T00:50:29.716253" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:50:29.716410" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-08T00:50:29.714338" elapsed="0.002097"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:29.714031" elapsed="0.002436"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:29.716638" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:29.716492" elapsed="0.000201"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:29.714011" elapsed="0.002702"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:50:29.717310" level="INFO">${final_text} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:50:29.716851" elapsed="0.000487"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T00:50:29.717386" elapsed="0.000028"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="PASS" start="2026-04-08T00:50:29.710424" elapsed="0.007083"/>
</kw>
<msg time="2026-04-08T00:50:29.717561" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:50:29.698703" elapsed="0.018910"/>
</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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:29.729433" 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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:29.741036" 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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:29.752672" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:29.752865" elapsed="0.000022"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:29.753057" elapsed="0.000027"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:29.753440" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:29.753297" elapsed="0.000199"/>
</branch>
<status status="NOT RUN" start="2026-04-08T00:50:29.753283" elapsed="0.000236"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:29.753657" elapsed="0.000021"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:29.753823" elapsed="0.000020"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:29.753986" elapsed="0.000020"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-08T00:50:29.753253" elapsed="0.000785"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-08T00:50:29.753138" elapsed="0.000926"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:29.754222" elapsed="0.000021"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-08T00:50:29.754297" elapsed="0.000015"/>
</return>
<msg time="2026-04-08T00:50:29.754409" level="INFO">${uri} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-08T00:50:29.694721" elapsed="0.059714"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:50:29.755654" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:50:29.755419" elapsed="0.000299">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-08T00:50:29.755809" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:50:29.755063" elapsed="0.000771"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:29.756144" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:29.755903" elapsed="0.000313"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:29.756694" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:29.756404" elapsed="0.000316"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:29.756241" elapsed="0.000513"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:29.755885" elapsed="0.000891"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:50:29.758994" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:50:29.756922" elapsed="0.002098"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-08T00:50:29.759070" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:50:29.759237" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:50:29.754745" elapsed="0.004517"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:50:29.760489" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:50:29.760257" elapsed="0.000295">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-08T00:50:29.760644" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:50:29.759909" elapsed="0.000760"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-08T00:50:29.760873" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-08T00:50:29.760739" elapsed="0.000221"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:29.760721" elapsed="0.000265"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:29.761131" elapsed="0.000036"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:29.761317" elapsed="0.000021"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-08T00:50:29.761383" elapsed="0.000015"/>
</return>
<msg time="2026-04-08T00:50:29.763286" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:50:29.759555" elapsed="0.003758"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:29.764669" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:29.764423" elapsed="0.000291"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:29.765121" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:29.764863" elapsed="0.000318"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:50:29.799844" level="INFO">GET Request : url=http://10.30.170.131:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 path_url=/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0evogeryo91251obsb096nsda10.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:50:29.800779" level="INFO">GET Response : url=http://10.30.170.131:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Transfer-Encoding': 'chunked'} 
 body={"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","hidden-symmetric-keys","encrypted-private-keys","asymmetrically-encrypted-value-format","cms-encrypted-data-format","cleartext-private-keys","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["ssh-client-keepalives","client-ident-hostbased","client-ident-publickey","client-ident-password"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-ex... (set the log level to DEBUG or TRACE to see the full content) 
 </msg>
<msg time="2026-04-08T00:50:29.801284" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:50:29.767169" elapsed="0.034176"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:29.765250" elapsed="0.036190"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:29.801835" elapsed="0.000048"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:29.801499" elapsed="0.000477"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:29.765231" elapsed="0.036792"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:29.808479" level="INFO">{"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","hidden-symmetric-keys","encrypted-private-keys","asymmetrically-encrypted-value-format","cms-encrypted-data-format","cleartext-private-keys","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["ssh-client-keepalives","client-ident-hostbased","client-ident-publickey","client-ident-password"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-experimenter-types?revision=2015-10-20","namespace":"urn:opendaylight:openflowplugin:experimenter:types","conformance-type":"import"},{"name":"ietf-ip_2018-02-22","revision":"2018-02-22","schema":"/rests/modules/ietf-ip?revision=2018-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-ip","conformance-type":"import","feature":["ipv6-privacy-autoconf","ipv4-non-contiguous-netmasks"]},{"name":"ietf-tcp-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-client","conformance-type":"import","feature":["local-binding-supported","tcp-client-keepalives"]},{"name":"node-config_2014-10-15","revision":"2014-10-15","schema":"/rests/modules/node-config?revision=2014-10-15","namespace":"urn:opendaylight:module:config","conformance-type":"import"},{"name":"ietf-restconf_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf","conformance-type":"import"},{"name":"ietf-datastores_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-datastores?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-datastores","conformance-type":"import"},{"name":"ietf-yang-patch_2017-02-22","revision":"2017-02-22","schema":"/rests/modules/ietf-yang-patch?revision=2017-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-patch","conformance-type":"import"},{"name":"sal-group_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-group?revision=2013-09-18","namespace":"urn:opendaylight:group:service","conformance-type":"import"},{"name":"odl-codegen-extensions_2024-06-27","revision":"2024-06-27","schema":"/rests/modules/odl-codegen-extensions?revision=2024-06-27","namespace":"urn:opendaylight:yang:extension:codegen","conformance-type":"import"},{"name":"sal-meter_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-meter?revision=2013-09-18","namespace":"urn:opendaylight:meter:service","conformance-type":"import"},{"name":"ietf-interfaces_2018-02-20","revision":"2018-02-20","schema":"/rests/modules/ietf-interfaces?revision=2018-02-20","namespace":"urn:ietf:params:xml:ns:yang:ietf-interfaces","conformance-type":"import","feature":["pre-provisioning","if-mib","arbitrary-names"]},{"name":"opendaylight-l2-types_2013-08-27","revision":"2013-08-27","schema":"/rests/modules/opendaylight-l2-types?revision=2013-08-27","namespace":"urn:opendaylight:l2:types","conformance-type":"import"},{"name":"opendaylight-flow-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-flow-types?revision=2013-10-26","namespace":"urn:opendaylight:flow:types","conformance-type":"import"},{"name":"lldp-speaker-config_2016-05-12","revision":"2016-05-12","schema":"/rests/modules/lldp-speaker-config?revision=2016-05-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker:config","conformance-type":"import"},{"name":"aaa-cert_2015-11-26","revision":"2015-11-26","schema":"/rests/modules/aaa-cert?revision=2015-11-26","namespace":"urn:opendaylight:yang:aaa:cert","conformance-type":"import"},{"name":"openflow-action_2015-02-03","revision":"2015-02-03","schema":"/rests/modules/openflow-action?revision=2015-02-03","namespace":"urn:opendaylight:openflow:common:action","conformance-type":"import"},{"name":"openflow-approved-extensions_2016-08-02","revision":"2016-08-02","schema":"/rests/modules/openflow-approved-extensions?revision=2016-08-02","namespace":"urn:opendaylight:openflow:approved:extensions","conformance-type":"import"},{"name":"nc-notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/nc-notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netmod:notification","conformance-type":"import"},{"name":"ietf-netconf-nmda_2019-01-07","revision":"2019-01-07","schema":"/rests/modules/ietf-netconf-nmda?revision=2019-01-07","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-nmda","conformance-type":"import","feature":["with-defaults","origin"]},{"name":"ietf-tcp-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-common","conformance-type":"import","feature":["keepalives-supported"]},{"name":"network-topology_2013-10-21","revision":"2013-10-21","schema":"/rests/modules/network-topology?revision=2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:network-topology","conformance-type":"import"},{"name":"aaa-encrypt-service-config_2024-02-02","revision":"2024-02-02","schema":"/rests/modules/aaa-encrypt-service-config?revision=2024-02-02","namespace":"config:aaa:authn:encrypt:service:config","conformance-type":"import"},{"name":"openflow-instruction_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-instruction?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:instruction","conformance-type":"import"},{"name":"ietf-tls-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-client","conformance-type":"import","feature":["client-ident-x509-cert","server-auth-x509-cert"]},{"name":"opendaylight-group-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-group-statistics?revision=2013-11-11","namespace":"urn:opendaylight:group:statistics","conformance-type":"import"},{"name":"cluster-admin_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/cluster-admin?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:cluster:admin","conformance-type":"import"},{"name":"opendaylight-flow-statistics_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-flow-statistics?revision=2013-08-19","namespace":"urn:opendaylight:flow:statistics","conformance-type":"import"},{"name":"opendaylight-table-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-table-types?revision=2013-10-26","namespace":"urn:opendaylight:table:types","conformance-type":"import"},{"name":"forwarding-rules-manager-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/forwarding-rules-manager-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:forwardingrules-manager:config","conformance-type":"import"},{"name":"odl-srm-types_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-types?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:types","conformance-type":"import"},{"name":"ietf-x509-cert-to-name_2014-12-10","revision":"2014-12-10","schema":"/rests/modules/ietf-x509-cert-to-name?revision=2014-12-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-x509-cert-to-name","conformance-type":"import"},{"name":"flow-node-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-node-inventory?revision=2013-08-19","namespace":"urn:opendaylight:flow:inventory","conformance-type":"import"},{"name":"flow-errors_2013-11-16","revision":"2013-11-16","schema":"/rests/modules/flow-errors?revision=2013-11-16","namespace":"urn:opendaylight:flow:errors","conformance-type":"import"},{"name":"ietf-netconf_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:netconf:base:1.0","conformance-type":"import","feature":["xpath","url","rollback-on-error","validate","startup","candidate","confirmed-commit","writable-running"]},{"name":"iana-ssh-public-key-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-public-key-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-public-key-algs","conformance-type":"import"},{"name":"aaa-cert-mdsal_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/aaa-cert-mdsal?revision=2016-03-21","namespace":"urn:opendaylight:yang:aaa:cert:mdsal","conformance-type":"import"},{"name":"odl-device-notification_2024-02-18","revision":"2024-02-18","schema":"/rests/modules/odl-device-notification?revision=2024-02-18","namespace":"urn:opendaylight:device:notification","conformance-type":"import"},{"name":"ietf-origin_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-origin?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-origin","conformance-type":"import"},{"name":"openflow-augments_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-augments?revision=2015-02-25","namespace":"urn:opendaylight:openflow:augments","conformance-type":"import"},{"name":"iana-ssh-encryption-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-encryption-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-encryption-algs","conformance-type":"import"},{"name":"ietf-truststore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-truststore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-truststore","conformance-type":"import","feature":["inline-definitions-supported"]},{"name":"distributed-datastore-provider_2025-01-30","revision":"2025-01-30","schema":"/rests/modules/distributed-datastore-provider?revision=2025-01-30","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:distributed-datastore-provider","conformance-type":"import"},{"name":"opendaylight-group-types_2013-10-18","revision":"2013-10-18","schema":"/rests/modules/opendaylight-group-types?revision=2013-10-18","namespace":"urn:opendaylight:group:types","conformance-type":"import"},{"name":"sal-remote-augment_2023-11-03","revision":"2023-11-03","schema":"/rests/modules/sal-remote-augment?revision=2023-11-03","namespace":"urn:sal:restconf:event:subscription","conformance-type":"import"},{"name":"opendaylight-ipv6-arbitrary-bitmask-fields_2016-02-24","revision":"2016-02-24","schema":"/rests/modules/opendaylight-ipv6-arbitrary-bitmask-fields?revision=2016-02-24","namespace":"urn:opendaylight:opendaylight-ipv6-arbitrary-bitmask-fields","conformance-type":"import"},{"name":"sal-flows-batch_2016-03-14","revision":"2016-03-14","schema":"/rests/modules/sal-flows-batch?revision=2016-03-14","namespace":"urn:opendaylight:flows:service","conformance-type":"import"},{"name":"ietf-tls-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-common","conformance-type":"import","feature":["tls12","hello-params","tls13"]},{"name":"openflow-types_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-types?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:types","conformance-type":"import"},{"name":"ietf-netconf-with-defaults_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf-with-defaults?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults","conformance-type":"import"},{"name":"odl-srm-ops_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-ops?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:ops","conformance-type":"import"},{"name":"odl-general-entity_2015-09-30","revision":"2015-09-30","schema":"/rests/modules/odl-general-entity?revision=2015-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:mdsal:core:general-entity","conformance-type":"import"},{"name":"iana-ssh-key-exchange-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-key-exchange-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-key-exchange-algs","conformance-type":"import"},{"name":"node-ssl-connection-error_2019-07-23","revision":"2019-07-23","schema":"/rests/modules/node-ssl-connection-error?revision=2019-07-23","namespace":"urn:opendaylight:node-ssl-connection-error:service","conformance-type":"import"},{"name":"openflow-protocol_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-protocol?revision=2013-07-31","namespace":"urn:opendaylight:openflow:protocol","conformance-type":"import"},{"name":"ietf-udp-server_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-server?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-server","conformance-type":"import"},{"name":"ietf-keystore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-keystore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-keystore","conformance-type":"import","feature":["asymmetric-keys","inline-definitions-supported"]},{"name":"aaa_2016-12-14","revision":"2016-12-14","schema":"/rests/modules/aaa?revision=2016-12-14","namespace":"urn:opendaylight:params:xml:ns:yang:aaa","conformance-type":"import"},{"name":"aaa-cert-rpc_2015-12-15","revision":"2015-12-15","schema":"/rests/modules/aaa-cert-rpc?revision=2015-12-15","namespace":"urn:opendaylight:yang:aaa:cert:rpc","conformance-type":"import"},{"name":"system-notifications_2013-09-27","revision":"2013-09-27","schema":"/rests/modules/system-notifications?revision=2013-09-27","namespace":"urn:opendaylight:openflow:system","conformance-type":"import"},{"name":"sal-flat-batch_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/sal-flat-batch?revision=2016-03-21","namespace":"urn:opendaylight:flat-batch:service","conformance-type":"import"},{"name":"notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netconf:notification:1.0","conformance-type":"import"},{"name":"sal-remote_2014-01-14","revision":"2014-01-14","schema":"/rests/modules/sal-remote?revision=2014-01-14","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:remote","conformance-type":"import"},{"name":"yang-ext_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/yang-ext?revision=2013-07-09","namespace":"urn:opendaylight:yang:extension:yang-ext","conformance-type":"import"},{"name":"opendaylight-multipart-types_2017-01-12","revision":"2017-01-12","schema":"/rests/modules/opendaylight-multipart-types?revision=2017-01-12","namespace":"urn:opendaylight:multipart:types","conformance-type":"import"},{"name":"opendaylight-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-inventory?revision=2013-08-19","namespace":"urn:opendaylight:inventory","conformance-type":"import"},{"name":"sal-queue_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-queue?revision=2015-03-05","namespace":"urn:opendaylight:queue:service","conformance-type":"import"},{"name":"sal-groups-batch_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/sal-groups-batch?revision=2016-03-15","namespace":"urn:opendaylight:groups:service","conformance-type":"import"},{"name":"arbitrator-reconcile_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/arbitrator-reconcile?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:arbitrator-reconcile:service","conformance-type":"import"},{"name":"ietf-yang-metadata_2016-08-05","revision":"2016-08-05","schema":"/rests/modules/ietf-yang-metadata?revision=2016-08-05","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-metadata","conformance-type":"import"},{"name":"opendaylight-arbitrary-bitmask-fields_2016-01-30","revision":"2016-01-30","schema":"/rests/modules/opendaylight-arbitrary-bitmask-fields?revision=2016-01-30","namespace":"urn:opendaylight:arbitrary:bitmask:fields","conformance-type":"import"},{"name":"ietf-udp-client_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-client?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-client","conformance-type":"import","feature":["local-binding"]},{"name":"opendaylight-meter-types_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/opendaylight-meter-types?revision=2013-09-18","namespace":"urn:opendaylight:meter:types","conformance-type":"import"},{"name":"opendaylight-action-types_2013-11-12","revision":"2013-11-12","schema":"/rests/modules/opendaylight-action-types?revision=2013-11-12","namespace":"urn:opendaylight:action:types","conformance-type":"import"},{"name":"sal-role_2015-07-27","revision":"2015-07-27","schema":"/rests/modules/sal-role?revision=2015-07-27","namespace":"urn:opendaylight:role:service","conformance-type":"import"},{"name":"openflow-provider-config_2016-05-10","revision":"2016-05-10","schema":"/rests/modules/openflow-provider-config?revision=2016-05-10","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:provider:config","conformance-type":"import"},{"name":"odl-serviceutils-upgrade_2018-07-02","revision":"2018-07-02","schema":"/rests/modules/odl-serviceutils-upgrade?revision=2018-07-02","namespace":"urn:opendaylight:serviceutils:upgrade","conformance-type":"import"},{"name":"opendaylight-match-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-match-types?revision=2013-10-26","namespace":"urn:opendaylight:model:match:types","conformance-type":"import"},{"name":"ietf-restconf-server_2024-08-14","revision":"2024-08-14","schema":"/rests/modules/ietf-restconf-server?revision=2024-08-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-server","conformance-type":"import","feature":["http-listen","https-listen"]},{"name":"reconciliation-result-state_2017-07-13","revision":"2017-07-13","schema":"/rests/modules/reconciliation-result-state?revision=2017-07-13","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:rf:state","conformance-type":"import"},{"name":"onf-extensions_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/onf-extensions?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf","conformance-type":"import"},{"name":"sal-table_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/sal-table?revision=2013-10-26","namespace":"urn:opendaylight:table:service","conformance-type":"import"},{"name":"iana-http-versions_2026-02-04","revision":"2026-02-04","schema":"/rests/modules/iana-http-versions?revision=2026-02-04","namespace":"urn:ietf:params:xml:ns:yang:iana-http-versions","conformance-type":"import"},{"name":"opendaylight-direct-statistics_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/opendaylight-direct-statistics?revision=2016-05-11","namespace":"urn:opendaylight:direct:statistics","conformance-type":"import"},{"name":"opendaylight-port-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-port-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:port","conformance-type":"import"},{"name":"sal-async-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/sal-async-config?revision=2017-06-19","namespace":"urn:opendaylight:async-config:service","conformance-type":"import"},{"name":"aaa-password-service-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-password-service-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:password:service:config","conformance-type":"import"},{"name":"ietf-yang-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-yang-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-types","conformance-type":"import"},{"name":"opendaylight-queue-statistics_2013-12-16","revision":"2013-12-16","schema":"/rests/modules/opendaylight-queue-statistics?revision=2013-12-16","namespace":"urn:opendaylight:queue:statistics","conformance-type":"import"},{"name":"sal-bundle_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/sal-bundle?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf:bundle:service","conformance-type":"import"},{"name":"ietf-restconf-subscribed-notifications_2019-11-17","revision":"2019-11-17","schema":"/rests/modules/ietf-restconf-subscribed-notifications?revision=2019-11-17","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-subscribed-notifications","conformance-type":"import"},{"name":"sal-meters-batch_2016-03-16","revision":"2016-03-16","schema":"/rests/modules/sal-meters-batch?revision=2016-03-16","namespace":"urn:opendaylight:meters:service","conformance-type":"import"},{"name":"odl-entity-owners","revision":"","schema":"/rests/modules/odl-entity-owners","namespace":"urn:opendaylight:params:xml:ns:yang:controller:entity-owners","conformance-type":"import"},{"name":"sal-experimenter-mp-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-mp-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-mp-message:service","conformance-type":"import"},{"name":"packet-processing_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/packet-processing?revision=2013-07-09","namespace":"urn:opendaylight:packet:service","conformance-type":"import"},{"name":"openflow-configuration_2014-06-30","revision":"2014-06-30","schema":"/rests/modules/openflow-configuration?revision=2014-06-30","namespace":"urn:opendaylight:openflow:config","conformance-type":"import"},{"name":"odl-srm-rpcs_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-rpcs?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:rpc","conformance-type":"import"},{"name":"ietf-netconf-acm_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-netconf-acm?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-acm","conformance-type":"import"},{"name":"iana-crypt-hash_2014-08-06","revision":"2014-08-06","schema":"/rests/modules/iana-crypt-hash?revision=2014-08-06","namespace":"urn:ietf:params:xml:ns:yang:iana-crypt-hash","conformance-type":"import","feature":["crypt-hash-sha-512","crypt-hash-sha-256","crypt-hash-md5"]},{"name":"openflow-extensible-match_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-extensible-match?revision=2015-02-25","namespace":"urn:opendaylight:openflow:oxm","conformance-type":"import"}],"module-set-id":"2"}}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:29.804272" elapsed="0.004668"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:29.803758" elapsed="0.005232"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:29.803715" elapsed="0.005310"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:29.812420" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:29.809436" elapsed="0.003046"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:29.809104" elapsed="0.003425"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:29.809080" elapsed="0.003483"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:50:29.813362" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:50:29.812783" elapsed="0.000616"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:29.813821" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:29.813496" elapsed="0.000405"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:29.814637" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:29.814224" elapsed="0.000449"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:29.813941" elapsed="0.000781"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:29.813471" elapsed="0.001280"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:50:29.815484" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:50:29.814967" elapsed="0.000554"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:29.815935" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:29.815617" elapsed="0.000397"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:29.816693" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:29.816285" elapsed="0.000444"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:29.816045" elapsed="0.000732"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:29.815592" elapsed="0.001214"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:50:29.817041" elapsed="0.000500"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:50:29.818149" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:50:29.817769" elapsed="0.000421"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:50:29.818346" elapsed="0.002147"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:50:29.802801" elapsed="0.017753"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:50:29.820726" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:50:29.820624" elapsed="0.000145"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:29.820605" elapsed="0.000186"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:50:29.829006" level="INFO">${text_normalized} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:50:29.820945" elapsed="0.008092"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:50:29.829088" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:50:29.829262" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:50:29.763610" elapsed="0.065679"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:50:29.829351" elapsed="0.000026"/>
</return>
<msg time="2026-04-08T00:50:29.829651" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="PASS" start="2026-04-08T00:50:29.673491" elapsed="0.156196"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Json_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:29.830208" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:29.829811" elapsed="0.000544"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:29.829780" elapsed="0.000617"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:50:29.830456" elapsed="0.000069"/>
</return>
<arg>session=${session}</arg>
<arg>folder=${RESTCONF_MODULES_DIR}</arg>
<arg>verify=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Add arguments sensible for JSON data, return Get_Templated response text.
Optionally, verification against JSON data (may be iterated) is called.
Only subset of JSON data is verified and returned if JMES path is specified in
file ${folder}/jmespath.expr.</doc>
<status status="PASS" start="2026-04-08T00:50:29.667860" elapsed="0.162854"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:29.663518" elapsed="0.167303"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:29.663500" elapsed="0.167348"/>
</if>
<kw name="Resolve_Shard_Type_Class" owner="ClusterManagement">
<if>
<branch type="IF" condition="'${shard_type}' == 'config'">
<return>
<value>DistributedConfigDatastore</value>
<status status="PASS" start="2026-04-08T00:50:29.831739" elapsed="0.000068"/>
</return>
<status status="PASS" start="2026-04-08T00:50:29.831522" elapsed="0.000334"/>
</branch>
<branch type="ELSE IF" condition="'${shard_type}' == 'operational'">
<return>
<value>DistributedOperationalDatastore</value>
<status status="NOT RUN" start="2026-04-08T00:50:29.831996" elapsed="0.000044"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:50:29.831913" elapsed="0.000168"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:29.831489" elapsed="0.000648"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized shard type: ${shard_type}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:29.832382" elapsed="0.000065"/>
</kw>
<msg time="2026-04-08T00:50:29.832583" level="INFO">${type_class} = DistributedConfigDatastore</msg>
<var>${type_class}</var>
<arg>shard_type=${shard_type}</arg>
<doc>Simple lookup for class name corresponding to desired type.</doc>
<status status="PASS" start="2026-04-08T00:50:29.831108" elapsed="0.001501"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:50:29.833437" level="INFO">${cluster_index} = 2</msg>
<var>${cluster_index}</var>
<arg>${member_index}+${NODE_ROLE_INDEX_START}-1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:50:29.832776" elapsed="0.000689"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:29.834593" level="INFO">${uri} = jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-inventory-config,type=DistributedConfigDatastore</msg>
<var>${uri}</var>
<arg>${JOLOKIA_READ_URI}:Category=Shards,name=member-${cluster_index}-shard-${shard_name}-${shard_type},type=${type_class}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:29.833621" elapsed="0.000999"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:29.841660" level="INFO">jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-inventory-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:29.841375" elapsed="0.000368"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:29.842343" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:29.842041" elapsed="0.000384"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:50:29.850757" level="INFO">GET Request : url=http://10.30.170.131:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-inventory-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-inventory-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:50:29.850838" level="INFO">GET Response : url=http://10.30.170.131:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-inventory-config,type=DistributedConfigDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Wed, 08 Apr 2026 00:50:29 GMT', 'Expires': 'Tue, 07 Apr 2026 23:50:29 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-2-shard-inventory-config,type=DistributedConfigDatastore","type":"read"},"value":{"ReadWriteTransactionCount":0,"SnapshotIndex":10,"InMemoryJournalLogSize":1,"ReplicatedToAllIndex":10,"Leader":"member-1-shard-inventory-config","LastIndex":11,"RaftState":"Follower","LastCommittedTransactionTime":"1970-01-01 00:00:00.000","LastApplied":11,"PeerAddresses":"member-1-shard-inventory-config: pekko:\/\/opendaylight-cluster-data@10.30.170.48:2550\/user\/shardmanager-config\/member-1-shard-inventory-config, member-3-shard-inventory-config: pekko:\/\/opendaylight-cluster-data@10.30.171.110:2550\/user\/shardmanager-config\/member-3-shard-inventory-config","LastLogIndex":11,"LastLeadershipChangeTime":"2026-04-08 00:46:45.970","FollowerInitialSyncStatus":true,"FollowerInfo":[],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"268.6 μs","CurrentTerm":2,"LastTerm":2,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-inventory-config","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":0,"TxCohortCacheSize":0,"PeerVotingStates":"member-1-shard-inventory-config: true, member-3-shard-inventory-config: true","LastLogTerm":2,"StatRetrievalError":null,"CommitIndex":11,"SnapshotTerm":2,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-2-shard-inventory-config","LeadershipChangeCount":1,"InMemoryJournalDataSize":444},"timestamp":1775609429,"status":200} 
 </msg>
<msg time="2026-04-08T00:50:29.850981" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:50:29.844536" elapsed="0.006480"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:29.842568" elapsed="0.008507"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:29.851383" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:29.851139" elapsed="0.000334"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:29.842523" elapsed="0.009003"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:29.856276" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-2-shard-inventory-config,type=DistributedConfigDatastore","type":"read"},"value":{"ReadWriteTransactionCount":0,"SnapshotIndex":10,"InMemoryJournalLogSize":1,"ReplicatedToAllIndex":10,"Leader":"member-1-shard-inventory-config","LastIndex":11,"RaftState":"Follower","LastCommittedTransactionTime":"1970-01-01 00:00:00.000","LastApplied":11,"PeerAddresses":"member-1-shard-inventory-config: pekko:\/\/opendaylight-cluster-data@10.30.170.48:2550\/user\/shardmanager-config\/member-1-shard-inventory-config, member-3-shard-inventory-config: pekko:\/\/opendaylight-cluster-data@10.30.171.110:2550\/user\/shardmanager-config\/member-3-shard-inventory-config","LastLogIndex":11,"LastLeadershipChangeTime":"2026-04-08 00:46:45.970","FollowerInitialSyncStatus":true,"FollowerInfo":[],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"268.6 μs","CurrentTerm":2,"LastTerm":2,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-inventory-config","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":0,"TxCohortCacheSize":0,"PeerVotingStates":"member-1-shard-inventory-config: true, member-3-shard-inventory-config: true","LastLogTerm":2,"StatRetrievalError":null,"CommitIndex":11,"SnapshotTerm":2,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-2-shard-inventory-config","LeadershipChangeCount":1,"InMemoryJournalDataSize":444},"timestamp":1775609429,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:29.853007" elapsed="0.003397"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:29.852681" elapsed="0.003773"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:29.852655" elapsed="0.003834"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:29.859903" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:29.856900" elapsed="0.003068"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:29.856568" elapsed="0.003448"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:29.856544" elapsed="0.003505"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:50:29.860861" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:50:29.860301" elapsed="0.000598"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:29.861349" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:29.861000" elapsed="0.000431"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:29.862114" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:29.861684" elapsed="0.000459"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:29.861464" elapsed="0.000730"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:29.860973" elapsed="0.001243"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:50:29.862732" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:50:29.862373" elapsed="0.000385"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:29.863062" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:29.862827" elapsed="0.000291"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:29.863617" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:29.863317" elapsed="0.000327"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:29.863142" elapsed="0.000537"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:29.862809" elapsed="0.000892"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:50:29.863848" elapsed="0.000358"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:50:29.864638" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:50:29.864369" elapsed="0.000295"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:50:29.864840" elapsed="0.002148"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:50:29.852075" elapsed="0.014975"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:50:29.867338" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:50:29.867227" elapsed="0.000156"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:29.867179" elapsed="0.000242"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:50:29.870339" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-2-shard-inventory-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 177560...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:50:29.867649" elapsed="0.002743"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:50:29.870473" elapsed="0.000062"/>
</return>
<msg time="2026-04-08T00:50:29.870825" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-2-shard-inventory-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 177560...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:50:29.836201" elapsed="0.034720"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:50:29.871056" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:50:29.871339" level="INFO">${data_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-2-shard-inventory-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 177560...</msg>
<var>${data_text}</var>
<arg>uri=${uri}</arg>
<arg>session=${session}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-08T00:50:29.834831" elapsed="0.036536"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:50:29.873464" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-2-shard-inventory-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1775609429, 'valu...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:50:29.872407" elapsed="0.001149"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-08T00:50:29.873640" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:50:29.873930" level="INFO">${data_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-2-shard-inventory-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1775609429, 'valu...</msg>
<var>${data_object}</var>
<arg>${data_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-08T00:50:29.871588" elapsed="0.002371"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:29.874483" level="INFO">${value} = {'AbortTransactionsCount': 0, 'CommitIndex': 11, 'CommittedTransactionsCount': 0, 'CurrentTerm': 2, 'FailedReadTransactionsCount': 0, 'FailedTransactionsCount': 0, 'FollowerInfo': [], 'FollowerInitial...</msg>
<var>${value}</var>
<arg>${data_object}</arg>
<arg>value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:29.874136" elapsed="0.000377"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:29.875053" level="INFO">${raft_property} = Follower</msg>
<var>${raft_property}</var>
<arg>${value}</arg>
<arg>${property}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:29.874672" elapsed="0.000407"/>
</kw>
<return>
<value>${raft_property}</value>
<status status="PASS" start="2026-04-08T00:50:29.875127" elapsed="0.000044"/>
</return>
<msg time="2026-04-08T00:50:29.875299" level="INFO">${raft_state} = Follower</msg>
<var>${raft_state}</var>
<arg>RaftState</arg>
<arg>${shard_name}</arg>
<arg>${shard_type}</arg>
<arg>${member_index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft property.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T00:50:29.660772" elapsed="0.214553"/>
</kw>
<return>
<value>${raft_state}</value>
<status status="PASS" start="2026-04-08T00:50:29.875381" elapsed="0.000026"/>
</return>
<msg time="2026-04-08T00:50:29.875529" level="INFO">${raft_state} = Follower</msg>
<var>${raft_state}</var>
<arg>shard_name=${shard_name}</arg>
<arg>shard_type=${ds_type}</arg>
<arg>member_index=${index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft status.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T00:50:29.660010" elapsed="0.215543"/>
</kw>
<if>
<branch type="IF" condition="'Follower' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${follower_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-08T00:50:29.875845" elapsed="0.000192"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:29.875632" elapsed="0.000444"/>
</branch>
<branch type="ELSE IF" condition="'Leader' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${leader_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:29.876272" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:29.876100" elapsed="0.000228"/>
</branch>
<branch type="ELSE IF" condition="${validate}">
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized Raft state: ${raft_state}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:29.876490" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:29.876351" elapsed="0.000190"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:29.875614" elapsed="0.000949"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T00:50:29.659847" elapsed="0.216739"/>
</iter>
<iter>
<kw name="Get_Raft_State_Of_Shard_At_Member" owner="ClusterManagement">
<kw name="Get_Raft_Property_From_Shard_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:29.879750" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:29.878892" elapsed="0.000951"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:50:29.879922" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:50:29.880297" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:50:29.878373" elapsed="0.001952"/>
</kw>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Get_As_Json_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:29.928462" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:29.928071" elapsed="0.000419"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:50:29.929256" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:50:29.929011" elapsed="0.000314">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-08T00:50:29.929454" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:50:29.928675" elapsed="0.000804"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:50:29.930026" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:50:29.929644" elapsed="0.000409"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T00:50:29.930364" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-08T00:50:29.930551" level="INFO">${template} = /rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T00:50:29.930228" elapsed="0.000349"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:29.930975" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:29.930733" elapsed="0.000286"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:29.931958" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:29.931706" elapsed="0.000296"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-08T00:50:29.932445" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-08T00:50:29.932178" elapsed="0.000293"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:29.932802" elapsed="0.000021"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:29.933000" elapsed="0.000024"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:29.933188" elapsed="0.000022"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-08T00:50:29.932667" elapsed="0.000580"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-08T00:50:29.932520" elapsed="0.000756"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-08T00:50:29.933318" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:50:29.933474" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-08T00:50:29.931390" elapsed="0.002109"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:29.931087" elapsed="0.002444"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:29.933699" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:29.933555" elapsed="0.000198"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:29.931067" elapsed="0.002707"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:50:29.934357" level="INFO">${final_text} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:50:29.933913" elapsed="0.000471"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T00:50:29.934432" 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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="PASS" start="2026-04-08T00:50:29.927464" elapsed="0.007089"/>
</kw>
<msg time="2026-04-08T00:50:29.934606" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:50:29.915719" elapsed="0.018939"/>
</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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:29.946548" elapsed="0.000029"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:29.957988" 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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:29.969482" elapsed="0.000027"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:29.969675" elapsed="0.000021"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:29.969847" elapsed="0.000021"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:29.970223" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:29.970066" elapsed="0.000214"/>
</branch>
<status status="NOT RUN" start="2026-04-08T00:50:29.970051" elapsed="0.000252"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:29.970441" elapsed="0.000020"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:29.970605" elapsed="0.000020"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:29.970768" elapsed="0.000019"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-08T00:50:29.970023" elapsed="0.000797"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-08T00:50:29.969923" elapsed="0.000922"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:29.970988" elapsed="0.000020"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-08T00:50:29.971062" elapsed="0.000015"/>
</return>
<msg time="2026-04-08T00:50:29.971190" level="INFO">${uri} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-08T00:50:29.911777" elapsed="0.059439"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:50:29.972432" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:50:29.972197" elapsed="0.000298">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-08T00:50:29.972601" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:50:29.971845" elapsed="0.000781"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:29.972945" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:29.972704" elapsed="0.000297"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:29.973494" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:29.973205" elapsed="0.000315"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:29.973024" elapsed="0.000530"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:29.972685" elapsed="0.000890"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:50:29.975748" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:50:29.973722" elapsed="0.002052"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-08T00:50:29.975824" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:50:29.975974" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:50:29.971529" elapsed="0.004469"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:50:29.977234" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:50:29.976986" elapsed="0.000310">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-08T00:50:29.977422" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:50:29.976650" elapsed="0.000797"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-08T00:50:29.977668" elapsed="0.000029"/>
</return>
<status status="PASS" start="2026-04-08T00:50:29.977519" elapsed="0.000219"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:29.977500" elapsed="0.000261"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:29.977906" elapsed="0.000022"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:29.978077" elapsed="0.000020"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-08T00:50:29.978146" elapsed="0.000031"/>
</return>
<msg time="2026-04-08T00:50:29.980072" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:50:29.976306" elapsed="0.003792"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:29.981490" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:29.981244" elapsed="0.000290"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:29.981920" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:29.981684" elapsed="0.000278"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:50:29.998892" level="INFO">GET Request : url=http://10.30.171.110:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 path_url=/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node09orwbuy1e81xg3wze7ww55ua0.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:50:29.999829" level="INFO">GET Response : url=http://10.30.171.110:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Transfer-Encoding': 'chunked'} 
 body={"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","hidden-symmetric-keys","encrypted-private-keys","asymmetrically-encrypted-value-format","cms-encrypted-data-format","cleartext-private-keys","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["ssh-client-keepalives","client-ident-hostbased","client-ident-publickey","client-ident-password"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-ex... (set the log level to DEBUG or TRACE to see the full content) 
 </msg>
<msg time="2026-04-08T00:50:30.000328" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:50:29.983945" elapsed="0.016443"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:29.982027" elapsed="0.018455"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:30.000905" elapsed="0.000049"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:30.000568" elapsed="0.000480"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:29.982009" elapsed="0.019085"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:30.009140" level="INFO">{"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","hidden-symmetric-keys","encrypted-private-keys","asymmetrically-encrypted-value-format","cms-encrypted-data-format","cleartext-private-keys","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["ssh-client-keepalives","client-ident-hostbased","client-ident-publickey","client-ident-password"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-experimenter-types?revision=2015-10-20","namespace":"urn:opendaylight:openflowplugin:experimenter:types","conformance-type":"import"},{"name":"ietf-ip_2018-02-22","revision":"2018-02-22","schema":"/rests/modules/ietf-ip?revision=2018-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-ip","conformance-type":"import","feature":["ipv6-privacy-autoconf","ipv4-non-contiguous-netmasks"]},{"name":"ietf-tcp-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-client","conformance-type":"import","feature":["local-binding-supported","tcp-client-keepalives"]},{"name":"node-config_2014-10-15","revision":"2014-10-15","schema":"/rests/modules/node-config?revision=2014-10-15","namespace":"urn:opendaylight:module:config","conformance-type":"import"},{"name":"ietf-restconf_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf","conformance-type":"import"},{"name":"ietf-datastores_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-datastores?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-datastores","conformance-type":"import"},{"name":"ietf-yang-patch_2017-02-22","revision":"2017-02-22","schema":"/rests/modules/ietf-yang-patch?revision=2017-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-patch","conformance-type":"import"},{"name":"sal-group_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-group?revision=2013-09-18","namespace":"urn:opendaylight:group:service","conformance-type":"import"},{"name":"odl-codegen-extensions_2024-06-27","revision":"2024-06-27","schema":"/rests/modules/odl-codegen-extensions?revision=2024-06-27","namespace":"urn:opendaylight:yang:extension:codegen","conformance-type":"import"},{"name":"sal-meter_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-meter?revision=2013-09-18","namespace":"urn:opendaylight:meter:service","conformance-type":"import"},{"name":"ietf-interfaces_2018-02-20","revision":"2018-02-20","schema":"/rests/modules/ietf-interfaces?revision=2018-02-20","namespace":"urn:ietf:params:xml:ns:yang:ietf-interfaces","conformance-type":"import","feature":["pre-provisioning","if-mib","arbitrary-names"]},{"name":"opendaylight-l2-types_2013-08-27","revision":"2013-08-27","schema":"/rests/modules/opendaylight-l2-types?revision=2013-08-27","namespace":"urn:opendaylight:l2:types","conformance-type":"import"},{"name":"opendaylight-flow-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-flow-types?revision=2013-10-26","namespace":"urn:opendaylight:flow:types","conformance-type":"import"},{"name":"lldp-speaker-config_2016-05-12","revision":"2016-05-12","schema":"/rests/modules/lldp-speaker-config?revision=2016-05-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker:config","conformance-type":"import"},{"name":"aaa-cert_2015-11-26","revision":"2015-11-26","schema":"/rests/modules/aaa-cert?revision=2015-11-26","namespace":"urn:opendaylight:yang:aaa:cert","conformance-type":"import"},{"name":"openflow-action_2015-02-03","revision":"2015-02-03","schema":"/rests/modules/openflow-action?revision=2015-02-03","namespace":"urn:opendaylight:openflow:common:action","conformance-type":"import"},{"name":"openflow-approved-extensions_2016-08-02","revision":"2016-08-02","schema":"/rests/modules/openflow-approved-extensions?revision=2016-08-02","namespace":"urn:opendaylight:openflow:approved:extensions","conformance-type":"import"},{"name":"nc-notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/nc-notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netmod:notification","conformance-type":"import"},{"name":"ietf-netconf-nmda_2019-01-07","revision":"2019-01-07","schema":"/rests/modules/ietf-netconf-nmda?revision=2019-01-07","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-nmda","conformance-type":"import","feature":["with-defaults","origin"]},{"name":"ietf-tcp-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-common","conformance-type":"import","feature":["keepalives-supported"]},{"name":"network-topology_2013-10-21","revision":"2013-10-21","schema":"/rests/modules/network-topology?revision=2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:network-topology","conformance-type":"import"},{"name":"aaa-encrypt-service-config_2024-02-02","revision":"2024-02-02","schema":"/rests/modules/aaa-encrypt-service-config?revision=2024-02-02","namespace":"config:aaa:authn:encrypt:service:config","conformance-type":"import"},{"name":"openflow-instruction_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-instruction?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:instruction","conformance-type":"import"},{"name":"ietf-tls-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-client","conformance-type":"import","feature":["client-ident-x509-cert","server-auth-x509-cert"]},{"name":"opendaylight-group-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-group-statistics?revision=2013-11-11","namespace":"urn:opendaylight:group:statistics","conformance-type":"import"},{"name":"cluster-admin_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/cluster-admin?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:cluster:admin","conformance-type":"import"},{"name":"opendaylight-flow-statistics_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-flow-statistics?revision=2013-08-19","namespace":"urn:opendaylight:flow:statistics","conformance-type":"import"},{"name":"opendaylight-table-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-table-types?revision=2013-10-26","namespace":"urn:opendaylight:table:types","conformance-type":"import"},{"name":"forwarding-rules-manager-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/forwarding-rules-manager-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:forwardingrules-manager:config","conformance-type":"import"},{"name":"odl-srm-types_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-types?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:types","conformance-type":"import"},{"name":"ietf-x509-cert-to-name_2014-12-10","revision":"2014-12-10","schema":"/rests/modules/ietf-x509-cert-to-name?revision=2014-12-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-x509-cert-to-name","conformance-type":"import"},{"name":"flow-node-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-node-inventory?revision=2013-08-19","namespace":"urn:opendaylight:flow:inventory","conformance-type":"import"},{"name":"flow-errors_2013-11-16","revision":"2013-11-16","schema":"/rests/modules/flow-errors?revision=2013-11-16","namespace":"urn:opendaylight:flow:errors","conformance-type":"import"},{"name":"ietf-netconf_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:netconf:base:1.0","conformance-type":"import","feature":["xpath","url","rollback-on-error","validate","startup","candidate","confirmed-commit","writable-running"]},{"name":"iana-ssh-public-key-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-public-key-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-public-key-algs","conformance-type":"import"},{"name":"aaa-cert-mdsal_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/aaa-cert-mdsal?revision=2016-03-21","namespace":"urn:opendaylight:yang:aaa:cert:mdsal","conformance-type":"import"},{"name":"odl-device-notification_2024-02-18","revision":"2024-02-18","schema":"/rests/modules/odl-device-notification?revision=2024-02-18","namespace":"urn:opendaylight:device:notification","conformance-type":"import"},{"name":"ietf-origin_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-origin?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-origin","conformance-type":"import"},{"name":"openflow-augments_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-augments?revision=2015-02-25","namespace":"urn:opendaylight:openflow:augments","conformance-type":"import"},{"name":"iana-ssh-encryption-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-encryption-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-encryption-algs","conformance-type":"import"},{"name":"ietf-truststore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-truststore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-truststore","conformance-type":"import","feature":["inline-definitions-supported"]},{"name":"distributed-datastore-provider_2025-01-30","revision":"2025-01-30","schema":"/rests/modules/distributed-datastore-provider?revision=2025-01-30","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:distributed-datastore-provider","conformance-type":"import"},{"name":"opendaylight-group-types_2013-10-18","revision":"2013-10-18","schema":"/rests/modules/opendaylight-group-types?revision=2013-10-18","namespace":"urn:opendaylight:group:types","conformance-type":"import"},{"name":"sal-remote-augment_2023-11-03","revision":"2023-11-03","schema":"/rests/modules/sal-remote-augment?revision=2023-11-03","namespace":"urn:sal:restconf:event:subscription","conformance-type":"import"},{"name":"opendaylight-ipv6-arbitrary-bitmask-fields_2016-02-24","revision":"2016-02-24","schema":"/rests/modules/opendaylight-ipv6-arbitrary-bitmask-fields?revision=2016-02-24","namespace":"urn:opendaylight:opendaylight-ipv6-arbitrary-bitmask-fields","conformance-type":"import"},{"name":"sal-flows-batch_2016-03-14","revision":"2016-03-14","schema":"/rests/modules/sal-flows-batch?revision=2016-03-14","namespace":"urn:opendaylight:flows:service","conformance-type":"import"},{"name":"ietf-tls-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-common","conformance-type":"import","feature":["tls12","hello-params","tls13"]},{"name":"openflow-types_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-types?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:types","conformance-type":"import"},{"name":"ietf-netconf-with-defaults_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf-with-defaults?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults","conformance-type":"import"},{"name":"odl-srm-ops_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-ops?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:ops","conformance-type":"import"},{"name":"odl-general-entity_2015-09-30","revision":"2015-09-30","schema":"/rests/modules/odl-general-entity?revision=2015-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:mdsal:core:general-entity","conformance-type":"import"},{"name":"iana-ssh-key-exchange-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-key-exchange-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-key-exchange-algs","conformance-type":"import"},{"name":"node-ssl-connection-error_2019-07-23","revision":"2019-07-23","schema":"/rests/modules/node-ssl-connection-error?revision=2019-07-23","namespace":"urn:opendaylight:node-ssl-connection-error:service","conformance-type":"import"},{"name":"openflow-protocol_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-protocol?revision=2013-07-31","namespace":"urn:opendaylight:openflow:protocol","conformance-type":"import"},{"name":"ietf-udp-server_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-server?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-server","conformance-type":"import"},{"name":"ietf-keystore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-keystore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-keystore","conformance-type":"import","feature":["asymmetric-keys","inline-definitions-supported"]},{"name":"aaa_2016-12-14","revision":"2016-12-14","schema":"/rests/modules/aaa?revision=2016-12-14","namespace":"urn:opendaylight:params:xml:ns:yang:aaa","conformance-type":"import"},{"name":"aaa-cert-rpc_2015-12-15","revision":"2015-12-15","schema":"/rests/modules/aaa-cert-rpc?revision=2015-12-15","namespace":"urn:opendaylight:yang:aaa:cert:rpc","conformance-type":"import"},{"name":"system-notifications_2013-09-27","revision":"2013-09-27","schema":"/rests/modules/system-notifications?revision=2013-09-27","namespace":"urn:opendaylight:openflow:system","conformance-type":"import"},{"name":"sal-flat-batch_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/sal-flat-batch?revision=2016-03-21","namespace":"urn:opendaylight:flat-batch:service","conformance-type":"import"},{"name":"notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netconf:notification:1.0","conformance-type":"import"},{"name":"sal-remote_2014-01-14","revision":"2014-01-14","schema":"/rests/modules/sal-remote?revision=2014-01-14","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:remote","conformance-type":"import"},{"name":"yang-ext_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/yang-ext?revision=2013-07-09","namespace":"urn:opendaylight:yang:extension:yang-ext","conformance-type":"import"},{"name":"opendaylight-multipart-types_2017-01-12","revision":"2017-01-12","schema":"/rests/modules/opendaylight-multipart-types?revision=2017-01-12","namespace":"urn:opendaylight:multipart:types","conformance-type":"import"},{"name":"opendaylight-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-inventory?revision=2013-08-19","namespace":"urn:opendaylight:inventory","conformance-type":"import"},{"name":"sal-queue_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-queue?revision=2015-03-05","namespace":"urn:opendaylight:queue:service","conformance-type":"import"},{"name":"sal-groups-batch_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/sal-groups-batch?revision=2016-03-15","namespace":"urn:opendaylight:groups:service","conformance-type":"import"},{"name":"arbitrator-reconcile_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/arbitrator-reconcile?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:arbitrator-reconcile:service","conformance-type":"import"},{"name":"ietf-yang-metadata_2016-08-05","revision":"2016-08-05","schema":"/rests/modules/ietf-yang-metadata?revision=2016-08-05","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-metadata","conformance-type":"import"},{"name":"opendaylight-arbitrary-bitmask-fields_2016-01-30","revision":"2016-01-30","schema":"/rests/modules/opendaylight-arbitrary-bitmask-fields?revision=2016-01-30","namespace":"urn:opendaylight:arbitrary:bitmask:fields","conformance-type":"import"},{"name":"ietf-udp-client_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-client?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-client","conformance-type":"import","feature":["local-binding"]},{"name":"opendaylight-meter-types_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/opendaylight-meter-types?revision=2013-09-18","namespace":"urn:opendaylight:meter:types","conformance-type":"import"},{"name":"opendaylight-action-types_2013-11-12","revision":"2013-11-12","schema":"/rests/modules/opendaylight-action-types?revision=2013-11-12","namespace":"urn:opendaylight:action:types","conformance-type":"import"},{"name":"sal-role_2015-07-27","revision":"2015-07-27","schema":"/rests/modules/sal-role?revision=2015-07-27","namespace":"urn:opendaylight:role:service","conformance-type":"import"},{"name":"openflow-provider-config_2016-05-10","revision":"2016-05-10","schema":"/rests/modules/openflow-provider-config?revision=2016-05-10","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:provider:config","conformance-type":"import"},{"name":"odl-serviceutils-upgrade_2018-07-02","revision":"2018-07-02","schema":"/rests/modules/odl-serviceutils-upgrade?revision=2018-07-02","namespace":"urn:opendaylight:serviceutils:upgrade","conformance-type":"import"},{"name":"opendaylight-match-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-match-types?revision=2013-10-26","namespace":"urn:opendaylight:model:match:types","conformance-type":"import"},{"name":"ietf-restconf-server_2024-08-14","revision":"2024-08-14","schema":"/rests/modules/ietf-restconf-server?revision=2024-08-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-server","conformance-type":"import","feature":["http-listen","https-listen"]},{"name":"reconciliation-result-state_2017-07-13","revision":"2017-07-13","schema":"/rests/modules/reconciliation-result-state?revision=2017-07-13","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:rf:state","conformance-type":"import"},{"name":"onf-extensions_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/onf-extensions?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf","conformance-type":"import"},{"name":"sal-table_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/sal-table?revision=2013-10-26","namespace":"urn:opendaylight:table:service","conformance-type":"import"},{"name":"iana-http-versions_2026-02-04","revision":"2026-02-04","schema":"/rests/modules/iana-http-versions?revision=2026-02-04","namespace":"urn:ietf:params:xml:ns:yang:iana-http-versions","conformance-type":"import"},{"name":"opendaylight-direct-statistics_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/opendaylight-direct-statistics?revision=2016-05-11","namespace":"urn:opendaylight:direct:statistics","conformance-type":"import"},{"name":"opendaylight-port-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-port-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:port","conformance-type":"import"},{"name":"sal-async-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/sal-async-config?revision=2017-06-19","namespace":"urn:opendaylight:async-config:service","conformance-type":"import"},{"name":"aaa-password-service-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-password-service-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:password:service:config","conformance-type":"import"},{"name":"ietf-yang-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-yang-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-types","conformance-type":"import"},{"name":"opendaylight-queue-statistics_2013-12-16","revision":"2013-12-16","schema":"/rests/modules/opendaylight-queue-statistics?revision=2013-12-16","namespace":"urn:opendaylight:queue:statistics","conformance-type":"import"},{"name":"sal-bundle_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/sal-bundle?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf:bundle:service","conformance-type":"import"},{"name":"ietf-restconf-subscribed-notifications_2019-11-17","revision":"2019-11-17","schema":"/rests/modules/ietf-restconf-subscribed-notifications?revision=2019-11-17","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-subscribed-notifications","conformance-type":"import"},{"name":"sal-meters-batch_2016-03-16","revision":"2016-03-16","schema":"/rests/modules/sal-meters-batch?revision=2016-03-16","namespace":"urn:opendaylight:meters:service","conformance-type":"import"},{"name":"odl-entity-owners","revision":"","schema":"/rests/modules/odl-entity-owners","namespace":"urn:opendaylight:params:xml:ns:yang:controller:entity-owners","conformance-type":"import"},{"name":"sal-experimenter-mp-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-mp-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-mp-message:service","conformance-type":"import"},{"name":"packet-processing_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/packet-processing?revision=2013-07-09","namespace":"urn:opendaylight:packet:service","conformance-type":"import"},{"name":"openflow-configuration_2014-06-30","revision":"2014-06-30","schema":"/rests/modules/openflow-configuration?revision=2014-06-30","namespace":"urn:opendaylight:openflow:config","conformance-type":"import"},{"name":"odl-srm-rpcs_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-rpcs?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:rpc","conformance-type":"import"},{"name":"ietf-netconf-acm_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-netconf-acm?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-acm","conformance-type":"import"},{"name":"iana-crypt-hash_2014-08-06","revision":"2014-08-06","schema":"/rests/modules/iana-crypt-hash?revision=2014-08-06","namespace":"urn:ietf:params:xml:ns:yang:iana-crypt-hash","conformance-type":"import","feature":["crypt-hash-sha-512","crypt-hash-sha-256","crypt-hash-md5"]},{"name":"openflow-extensible-match_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-extensible-match?revision=2015-02-25","namespace":"urn:opendaylight:openflow:oxm","conformance-type":"import"}],"module-set-id":"2"}}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:30.003390" elapsed="0.006083"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:30.002837" elapsed="0.006672"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:30.002794" elapsed="0.006739"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:30.011945" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:30.009809" elapsed="0.002181"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:30.009589" elapsed="0.002435"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:30.009572" elapsed="0.002476"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:50:30.012602" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:50:30.012220" elapsed="0.000409"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:30.012930" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:30.012699" elapsed="0.000289"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:30.013482" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:30.013183" elapsed="0.000324"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:30.013011" elapsed="0.000533"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:30.012681" elapsed="0.000883"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:50:30.014080" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:50:30.013720" elapsed="0.000386"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:30.014425" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:30.014192" elapsed="0.000290"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:30.014952" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:30.014662" elapsed="0.000316"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:30.014505" elapsed="0.000508"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:30.014172" elapsed="0.000862"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:50:30.015194" elapsed="0.000342"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:50:30.015969" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:50:30.015698" elapsed="0.000296"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:50:30.016143" elapsed="0.002180"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:50:30.001878" elapsed="0.016506"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:50:30.018556" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:50:30.018453" elapsed="0.000147"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:30.018434" elapsed="0.000187"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:50:30.026694" level="INFO">${text_normalized} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:50:30.018761" elapsed="0.007963"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:50:30.026775" elapsed="0.000031"/>
</return>
<msg time="2026-04-08T00:50:30.026934" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:50:29.980407" elapsed="0.046555"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:50:30.027023" elapsed="0.000026"/>
</return>
<msg time="2026-04-08T00:50:30.027349" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="PASS" start="2026-04-08T00:50:29.890680" elapsed="0.136705"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Json_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:30.027838" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:30.027509" elapsed="0.000444"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:30.027479" elapsed="0.000515"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:50:30.028052" elapsed="0.000069"/>
</return>
<arg>session=${session}</arg>
<arg>folder=${RESTCONF_MODULES_DIR}</arg>
<arg>verify=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Add arguments sensible for JSON data, return Get_Templated response text.
Optionally, verification against JSON data (may be iterated) is called.
Only subset of JSON data is verified and returned if JMES path is specified in
file ${folder}/jmespath.expr.</doc>
<status status="PASS" start="2026-04-08T00:50:29.884940" elapsed="0.143389"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:29.880396" elapsed="0.148040"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:29.880377" elapsed="0.148085"/>
</if>
<kw name="Resolve_Shard_Type_Class" owner="ClusterManagement">
<if>
<branch type="IF" condition="'${shard_type}' == 'config'">
<return>
<value>DistributedConfigDatastore</value>
<status status="PASS" start="2026-04-08T00:50:30.029358" elapsed="0.000067"/>
</return>
<status status="PASS" start="2026-04-08T00:50:30.029124" elapsed="0.000349"/>
</branch>
<branch type="ELSE IF" condition="'${shard_type}' == 'operational'">
<return>
<value>DistributedOperationalDatastore</value>
<status status="NOT RUN" start="2026-04-08T00:50:30.029613" elapsed="0.000044"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:50:30.029529" elapsed="0.000168"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:30.029092" elapsed="0.000661"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized shard type: ${shard_type}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:30.029982" elapsed="0.000065"/>
</kw>
<msg time="2026-04-08T00:50:30.030196" level="INFO">${type_class} = DistributedConfigDatastore</msg>
<var>${type_class}</var>
<arg>shard_type=${shard_type}</arg>
<doc>Simple lookup for class name corresponding to desired type.</doc>
<status status="PASS" start="2026-04-08T00:50:30.028733" elapsed="0.001490"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:50:30.031039" level="INFO">${cluster_index} = 3</msg>
<var>${cluster_index}</var>
<arg>${member_index}+${NODE_ROLE_INDEX_START}-1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:50:30.030390" elapsed="0.000677"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:30.032187" level="INFO">${uri} = jolokia/read/org.opendaylight.controller:Category=Shards,name=member-3-shard-inventory-config,type=DistributedConfigDatastore</msg>
<var>${uri}</var>
<arg>${JOLOKIA_READ_URI}:Category=Shards,name=member-${cluster_index}-shard-${shard_name}-${shard_type},type=${type_class}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:30.031242" elapsed="0.000974"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:30.039039" level="INFO">jolokia/read/org.opendaylight.controller:Category=Shards,name=member-3-shard-inventory-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:30.038751" elapsed="0.000372"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:30.039657" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:30.039380" elapsed="0.000357"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:50:30.047813" level="INFO">GET Request : url=http://10.30.171.110:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-3-shard-inventory-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-3-shard-inventory-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:50:30.047871" level="INFO">GET Response : url=http://10.30.171.110:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-3-shard-inventory-config,type=DistributedConfigDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Wed, 08 Apr 2026 00:50:30 GMT', 'Expires': 'Tue, 07 Apr 2026 23:50:30 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-3-shard-inventory-config,type=DistributedConfigDatastore","type":"read"},"value":{"ReadWriteTransactionCount":0,"SnapshotIndex":10,"InMemoryJournalLogSize":1,"ReplicatedToAllIndex":10,"Leader":"member-1-shard-inventory-config","LastIndex":11,"RaftState":"Follower","LastApplied":11,"LastCommittedTransactionTime":"1970-01-01 00:00:00.000","PeerAddresses":"member-1-shard-inventory-config: pekko:\/\/opendaylight-cluster-data@10.30.170.48:2550\/user\/shardmanager-config\/member-1-shard-inventory-config, member-2-shard-inventory-config: pekko:\/\/opendaylight-cluster-data@10.30.170.131:2550\/user\/shardmanager-config\/member-2-shard-inventory-config","LastLogIndex":11,"LastLeadershipChangeTime":"2026-04-08 00:46:45.969","FollowerInitialSyncStatus":true,"FollowerInfo":[],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"231.6 μs","CurrentTerm":2,"LastTerm":2,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-inventory-config","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":0,"TxCohortCacheSize":0,"PeerVotingStates":"member-1-shard-inventory-config: true, member-2-shard-inventory-config: true","LastLogTerm":2,"StatRetrievalError":null,"CommitIndex":11,"SnapshotTerm":2,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-3-shard-inventory-config","LeadershipChangeCount":1,"InMemoryJournalDataSize":444},"timestamp":1775609430,"status":200} 
 </msg>
<msg time="2026-04-08T00:50:30.047973" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:50:30.041906" elapsed="0.006092"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:30.039879" elapsed="0.008161"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:30.048306" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:30.048087" elapsed="0.000286"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:30.039834" elapsed="0.008578"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:30.052939" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-3-shard-inventory-config,type=DistributedConfigDatastore","type":"read"},"value":{"ReadWriteTransactionCount":0,"SnapshotIndex":10,"InMemoryJournalLogSize":1,"ReplicatedToAllIndex":10,"Leader":"member-1-shard-inventory-config","LastIndex":11,"RaftState":"Follower","LastApplied":11,"LastCommittedTransactionTime":"1970-01-01 00:00:00.000","PeerAddresses":"member-1-shard-inventory-config: pekko:\/\/opendaylight-cluster-data@10.30.170.48:2550\/user\/shardmanager-config\/member-1-shard-inventory-config, member-2-shard-inventory-config: pekko:\/\/opendaylight-cluster-data@10.30.170.131:2550\/user\/shardmanager-config\/member-2-shard-inventory-config","LastLogIndex":11,"LastLeadershipChangeTime":"2026-04-08 00:46:45.969","FollowerInitialSyncStatus":true,"FollowerInfo":[],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"231.6 μs","CurrentTerm":2,"LastTerm":2,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-inventory-config","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":0,"TxCohortCacheSize":0,"PeerVotingStates":"member-1-shard-inventory-config: true, member-2-shard-inventory-config: true","LastLogTerm":2,"StatRetrievalError":null,"CommitIndex":11,"SnapshotTerm":2,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-3-shard-inventory-config","LeadershipChangeCount":1,"InMemoryJournalDataSize":444},"timestamp":1775609430,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:30.049489" elapsed="0.003583"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:30.049272" elapsed="0.003850"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:30.049253" elapsed="0.003929"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:30.056616" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:30.053574" elapsed="0.003105"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:30.053266" elapsed="0.003461"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:30.053241" elapsed="0.003519"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:50:30.057524" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:50:30.056981" elapsed="0.000581"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:30.057989" elapsed="0.000029"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:30.057660" elapsed="0.000408"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:30.058812" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:30.058342" elapsed="0.000508"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:30.058100" elapsed="0.000806"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:30.057634" elapsed="0.001307"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:50:30.059698" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:50:30.059193" elapsed="0.000543"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:30.060152" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:30.059832" elapsed="0.000421"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:30.060934" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:30.060522" elapsed="0.000449"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:30.060284" elapsed="0.000736"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:30.059807" elapsed="0.001242"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:50:30.061275" elapsed="0.000475"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:50:30.062372" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:50:30.061976" elapsed="0.000432"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:50:30.062617" elapsed="0.002826"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:50:30.048835" elapsed="0.016671"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:50:30.065770" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:50:30.065661" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:30.065615" elapsed="0.000239"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:50:30.068811" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-3-shard-inventory-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 177560...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:50:30.066087" elapsed="0.002778"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:50:30.068947" elapsed="0.000064"/>
</return>
<msg time="2026-04-08T00:50:30.069322" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-3-shard-inventory-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 177560...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:50:30.033788" elapsed="0.035625"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:50:30.069545" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:50:30.069811" level="INFO">${data_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-3-shard-inventory-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 177560...</msg>
<var>${data_text}</var>
<arg>uri=${uri}</arg>
<arg>session=${session}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-08T00:50:30.032429" elapsed="0.037410"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:50:30.071943" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-3-shard-inventory-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1775609430, 'valu...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:50:30.070903" elapsed="0.001134"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-08T00:50:30.072120" elapsed="0.000031"/>
</return>
<msg time="2026-04-08T00:50:30.072446" level="INFO">${data_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-3-shard-inventory-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1775609430, 'valu...</msg>
<var>${data_object}</var>
<arg>${data_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-08T00:50:30.070059" elapsed="0.002417"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:30.072942" level="INFO">${value} = {'AbortTransactionsCount': 0, 'CommitIndex': 11, 'CommittedTransactionsCount': 0, 'CurrentTerm': 2, 'FailedReadTransactionsCount': 0, 'FailedTransactionsCount': 0, 'FollowerInfo': [], 'FollowerInitial...</msg>
<var>${value}</var>
<arg>${data_object}</arg>
<arg>value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:30.072635" elapsed="0.000335"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:30.073525" level="INFO">${raft_property} = Follower</msg>
<var>${raft_property}</var>
<arg>${value}</arg>
<arg>${property}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:30.073127" elapsed="0.000424"/>
</kw>
<return>
<value>${raft_property}</value>
<status status="PASS" start="2026-04-08T00:50:30.073598" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:50:30.073750" level="INFO">${raft_state} = Follower</msg>
<var>${raft_state}</var>
<arg>RaftState</arg>
<arg>${shard_name}</arg>
<arg>${shard_type}</arg>
<arg>${member_index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft property.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T00:50:29.877686" elapsed="0.196089"/>
</kw>
<return>
<value>${raft_state}</value>
<status status="PASS" start="2026-04-08T00:50:30.073831" elapsed="0.000025"/>
</return>
<msg time="2026-04-08T00:50:30.073981" level="INFO">${raft_state} = Follower</msg>
<var>${raft_state}</var>
<arg>shard_name=${shard_name}</arg>
<arg>shard_type=${ds_type}</arg>
<arg>member_index=${index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft status.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T00:50:29.876923" elapsed="0.197083"/>
</kw>
<if>
<branch type="IF" condition="'Follower' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${follower_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-08T00:50:30.074314" elapsed="0.000191"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:30.074083" elapsed="0.000461"/>
</branch>
<branch type="ELSE IF" condition="'Leader' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${leader_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:30.074711" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:30.074568" elapsed="0.000197"/>
</branch>
<branch type="ELSE IF" condition="${validate}">
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized Raft state: ${raft_state}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:30.074927" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:30.074788" elapsed="0.000190"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:30.074066" elapsed="0.000934"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T00:50:29.876757" elapsed="0.198266"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-08T00:50:29.464218" elapsed="0.610834"/>
</for>
<return>
<value>${leader_list}</value>
<value>${follower_list}</value>
<status status="PASS" start="2026-04-08T00:50:30.075092" elapsed="0.000026"/>
</return>
<msg time="2026-04-08T00:50:30.075350" level="INFO">${leader_list} = [1]</msg>
<msg time="2026-04-08T00:50:30.075396" level="INFO">${follower_list} = [2, 3]</msg>
<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="PASS" start="2026-04-08T00:50:29.460226" elapsed="0.615193"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T00:50:30.075857" level="INFO">Length is 1.</msg>
<msg time="2026-04-08T00:50:30.075930" level="INFO">${leader_count} = 1</msg>
<var>${leader_count}</var>
<arg>${leader_list}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T00:50:30.075592" elapsed="0.000361"/>
</kw>
<if>
<branch type="IF" condition="${leader_count} &lt; 1">
<kw name="Fail" owner="BuiltIn">
<arg>No leader found.</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:30.076246" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:30.076021" elapsed="0.000279"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:30.076004" elapsed="0.000319"/>
</if>
<kw name="Length Should Be" owner="BuiltIn">
<msg time="2026-04-08T00:50:30.078258" level="INFO">Length is 1.</msg>
<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="PASS" start="2026-04-08T00:50:30.076481" elapsed="0.001823"/>
</kw>
<kw name="Get From List" owner="Collections">
<msg time="2026-04-08T00:50:30.078684" level="INFO">${leader} = 1</msg>
<var>${leader}</var>
<arg>${leader_list}</arg>
<arg>0</arg>
<doc>Returns the value specified with an ``index`` from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:50:30.078499" elapsed="0.000210"/>
</kw>
<return>
<value>${leader}</value>
<value>${follower_list}</value>
<status status="PASS" start="2026-04-08T00:50:30.078756" elapsed="0.000028"/>
</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="PASS" start="2026-04-08T00:50:29.457701" elapsed="0.621206"/>
</kw>
<var name="${shard_name}">inventory</var>
<status status="PASS" start="2026-04-08T00:50:29.457486" elapsed="0.621467"/>
</iter>
<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-04-08T00:50:30.128372" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:50:30.127848" elapsed="0.000562"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:50:30.128896" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:50:30.128581" elapsed="0.000341"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:50:30.128969" elapsed="0.000038"/>
</return>
<msg time="2026-04-08T00:50:30.129136" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:50:30.127458" elapsed="0.001719"/>
</kw>
<kw name="Sort List" owner="Collections">
<arg>${index_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="PASS" start="2026-04-08T00:50:30.129332" elapsed="0.000166"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:50:30.129993" level="INFO">${ds_type} = config</msg>
<var>${ds_type}</var>
<arg>'${shard_type}' != 'config'</arg>
<arg>operational</arg>
<arg>config</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:50:30.129657" elapsed="0.000362"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:50:30.130441" level="INFO">${leader_list} = []</msg>
<var>${leader_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:50:30.130196" elapsed="0.000272"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:50:30.130854" level="INFO">${follower_list} = []</msg>
<var>${follower_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:50:30.130615" elapsed="0.000264"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_Raft_State_Of_Shard_At_Member" owner="ClusterManagement">
<kw name="Get_Raft_Property_From_Shard_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:30.134230" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:30.133368" elapsed="0.000953"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:50:30.134402" elapsed="0.000031"/>
</return>
<msg time="2026-04-08T00:50:30.134672" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:50:30.132818" elapsed="0.001881"/>
</kw>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Get_As_Json_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:30.183048" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:30.182670" elapsed="0.000407"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:50:30.183845" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:50:30.183592" elapsed="0.000329">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-08T00:50:30.184014" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:50:30.183255" elapsed="0.000783"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:50:30.184629" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:50:30.184237" elapsed="0.000419"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T00:50:30.184958" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-08T00:50:30.185116" level="INFO">${template} = /rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T00:50:30.184817" elapsed="0.000324"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:30.185557" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:30.185311" elapsed="0.000345"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:30.186604" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:30.186350" elapsed="0.000299"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-08T00:50:30.187073" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-08T00:50:30.186807" elapsed="0.000291"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:30.187429" elapsed="0.000022"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:30.187628" elapsed="0.000023"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:30.187798" elapsed="0.000021"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-08T00:50:30.187296" elapsed="0.000559"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-08T00:50:30.187145" elapsed="0.000740"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-08T00:50:30.187930" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:50:30.188089" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-08T00:50:30.186015" elapsed="0.002099"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:30.185726" elapsed="0.002420"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:30.188349" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:30.188186" elapsed="0.000218"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:30.185707" elapsed="0.002718"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:50:30.188997" level="INFO">${final_text} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:50:30.188562" elapsed="0.000462"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T00:50:30.189071" elapsed="0.000028"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="PASS" start="2026-04-08T00:50:30.182049" elapsed="0.007161"/>
</kw>
<msg time="2026-04-08T00:50:30.189264" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:50:30.170286" elapsed="0.019030"/>
</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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:30.201041" 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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:30.212572" 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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:30.224176" elapsed="0.000030"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:30.224471" elapsed="0.000023"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:30.224651" elapsed="0.000021"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:30.225016" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:30.224872" elapsed="0.000241"/>
</branch>
<status status="NOT RUN" start="2026-04-08T00:50:30.224857" elapsed="0.000283"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:30.225305" elapsed="0.000022"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:30.225475" elapsed="0.000021"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:30.225641" elapsed="0.000021"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-08T00:50:30.224827" elapsed="0.000867"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-08T00:50:30.224726" elapsed="0.000994"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:30.225864" elapsed="0.000020"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-08T00:50:30.225940" elapsed="0.000015"/>
</return>
<msg time="2026-04-08T00:50:30.226054" level="INFO">${uri} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-08T00:50:30.166201" elapsed="0.059879"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:50:30.227326" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:50:30.227068" elapsed="0.000322">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-08T00:50:30.227481" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:50:30.226732" elapsed="0.000775"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:30.227821" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:30.227578" elapsed="0.000300"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:30.228417" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:30.228074" elapsed="0.000369"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:30.227902" elapsed="0.000576"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:30.227559" elapsed="0.000940"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:50:30.230687" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:50:30.228650" elapsed="0.002063"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-08T00:50:30.230765" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:50:30.230918" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:50:30.226411" elapsed="0.004532"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:50:30.232182" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:50:30.231899" elapsed="0.000349">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-08T00:50:30.232346" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:50:30.231568" elapsed="0.000802"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-08T00:50:30.232574" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-08T00:50:30.232441" elapsed="0.000192"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:30.232422" elapsed="0.000236"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:30.232801" elapsed="0.000022"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:30.232969" elapsed="0.000020"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-08T00:50:30.233033" elapsed="0.000015"/>
</return>
<msg time="2026-04-08T00:50:30.234958" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:50:30.231251" elapsed="0.003734"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:30.236434" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:30.236181" elapsed="0.000298"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:30.236875" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:30.236632" elapsed="0.000287"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:50:30.251617" level="INFO">GET Request : url=http://10.30.170.48:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 path_url=/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01nfu2ssrokr1es5zgka78rw970.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:50:30.252252" level="INFO">GET Response : url=http://10.30.170.48:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Transfer-Encoding': 'chunked'} 
 body={"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","hidden-symmetric-keys","encrypted-private-keys","asymmetrically-encrypted-value-format","cms-encrypted-data-format","cleartext-private-keys","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["ssh-client-keepalives","client-ident-hostbased","client-ident-publickey","client-ident-password"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-ex... (set the log level to DEBUG or TRACE to see the full content) 
 </msg>
<msg time="2026-04-08T00:50:30.252725" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:50:30.238926" elapsed="0.013860"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:30.236986" elapsed="0.015896"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:30.253341" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:30.252951" elapsed="0.000538"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:30.236968" elapsed="0.016568"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:30.261255" level="INFO">{"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","hidden-symmetric-keys","encrypted-private-keys","asymmetrically-encrypted-value-format","cms-encrypted-data-format","cleartext-private-keys","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["ssh-client-keepalives","client-ident-hostbased","client-ident-publickey","client-ident-password"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-experimenter-types?revision=2015-10-20","namespace":"urn:opendaylight:openflowplugin:experimenter:types","conformance-type":"import"},{"name":"ietf-ip_2018-02-22","revision":"2018-02-22","schema":"/rests/modules/ietf-ip?revision=2018-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-ip","conformance-type":"import","feature":["ipv6-privacy-autoconf","ipv4-non-contiguous-netmasks"]},{"name":"ietf-tcp-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-client","conformance-type":"import","feature":["local-binding-supported","tcp-client-keepalives"]},{"name":"node-config_2014-10-15","revision":"2014-10-15","schema":"/rests/modules/node-config?revision=2014-10-15","namespace":"urn:opendaylight:module:config","conformance-type":"import"},{"name":"ietf-restconf_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf","conformance-type":"import"},{"name":"ietf-datastores_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-datastores?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-datastores","conformance-type":"import"},{"name":"ietf-yang-patch_2017-02-22","revision":"2017-02-22","schema":"/rests/modules/ietf-yang-patch?revision=2017-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-patch","conformance-type":"import"},{"name":"sal-group_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-group?revision=2013-09-18","namespace":"urn:opendaylight:group:service","conformance-type":"import"},{"name":"odl-codegen-extensions_2024-06-27","revision":"2024-06-27","schema":"/rests/modules/odl-codegen-extensions?revision=2024-06-27","namespace":"urn:opendaylight:yang:extension:codegen","conformance-type":"import"},{"name":"sal-meter_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-meter?revision=2013-09-18","namespace":"urn:opendaylight:meter:service","conformance-type":"import"},{"name":"ietf-interfaces_2018-02-20","revision":"2018-02-20","schema":"/rests/modules/ietf-interfaces?revision=2018-02-20","namespace":"urn:ietf:params:xml:ns:yang:ietf-interfaces","conformance-type":"import","feature":["pre-provisioning","if-mib","arbitrary-names"]},{"name":"opendaylight-l2-types_2013-08-27","revision":"2013-08-27","schema":"/rests/modules/opendaylight-l2-types?revision=2013-08-27","namespace":"urn:opendaylight:l2:types","conformance-type":"import"},{"name":"opendaylight-flow-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-flow-types?revision=2013-10-26","namespace":"urn:opendaylight:flow:types","conformance-type":"import"},{"name":"lldp-speaker-config_2016-05-12","revision":"2016-05-12","schema":"/rests/modules/lldp-speaker-config?revision=2016-05-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker:config","conformance-type":"import"},{"name":"aaa-cert_2015-11-26","revision":"2015-11-26","schema":"/rests/modules/aaa-cert?revision=2015-11-26","namespace":"urn:opendaylight:yang:aaa:cert","conformance-type":"import"},{"name":"openflow-action_2015-02-03","revision":"2015-02-03","schema":"/rests/modules/openflow-action?revision=2015-02-03","namespace":"urn:opendaylight:openflow:common:action","conformance-type":"import"},{"name":"openflow-approved-extensions_2016-08-02","revision":"2016-08-02","schema":"/rests/modules/openflow-approved-extensions?revision=2016-08-02","namespace":"urn:opendaylight:openflow:approved:extensions","conformance-type":"import"},{"name":"nc-notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/nc-notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netmod:notification","conformance-type":"import"},{"name":"ietf-netconf-nmda_2019-01-07","revision":"2019-01-07","schema":"/rests/modules/ietf-netconf-nmda?revision=2019-01-07","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-nmda","conformance-type":"import","feature":["with-defaults","origin"]},{"name":"ietf-tcp-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-common","conformance-type":"import","feature":["keepalives-supported"]},{"name":"network-topology_2013-10-21","revision":"2013-10-21","schema":"/rests/modules/network-topology?revision=2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:network-topology","conformance-type":"import"},{"name":"aaa-encrypt-service-config_2024-02-02","revision":"2024-02-02","schema":"/rests/modules/aaa-encrypt-service-config?revision=2024-02-02","namespace":"config:aaa:authn:encrypt:service:config","conformance-type":"import"},{"name":"openflow-instruction_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-instruction?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:instruction","conformance-type":"import"},{"name":"ietf-tls-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-client","conformance-type":"import","feature":["client-ident-x509-cert","server-auth-x509-cert"]},{"name":"opendaylight-group-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-group-statistics?revision=2013-11-11","namespace":"urn:opendaylight:group:statistics","conformance-type":"import"},{"name":"cluster-admin_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/cluster-admin?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:cluster:admin","conformance-type":"import"},{"name":"opendaylight-flow-statistics_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-flow-statistics?revision=2013-08-19","namespace":"urn:opendaylight:flow:statistics","conformance-type":"import"},{"name":"opendaylight-table-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-table-types?revision=2013-10-26","namespace":"urn:opendaylight:table:types","conformance-type":"import"},{"name":"forwarding-rules-manager-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/forwarding-rules-manager-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:forwardingrules-manager:config","conformance-type":"import"},{"name":"odl-srm-types_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-types?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:types","conformance-type":"import"},{"name":"ietf-x509-cert-to-name_2014-12-10","revision":"2014-12-10","schema":"/rests/modules/ietf-x509-cert-to-name?revision=2014-12-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-x509-cert-to-name","conformance-type":"import"},{"name":"flow-node-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-node-inventory?revision=2013-08-19","namespace":"urn:opendaylight:flow:inventory","conformance-type":"import"},{"name":"flow-errors_2013-11-16","revision":"2013-11-16","schema":"/rests/modules/flow-errors?revision=2013-11-16","namespace":"urn:opendaylight:flow:errors","conformance-type":"import"},{"name":"ietf-netconf_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:netconf:base:1.0","conformance-type":"import","feature":["xpath","url","rollback-on-error","validate","startup","candidate","confirmed-commit","writable-running"]},{"name":"iana-ssh-public-key-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-public-key-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-public-key-algs","conformance-type":"import"},{"name":"aaa-cert-mdsal_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/aaa-cert-mdsal?revision=2016-03-21","namespace":"urn:opendaylight:yang:aaa:cert:mdsal","conformance-type":"import"},{"name":"odl-device-notification_2024-02-18","revision":"2024-02-18","schema":"/rests/modules/odl-device-notification?revision=2024-02-18","namespace":"urn:opendaylight:device:notification","conformance-type":"import"},{"name":"ietf-origin_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-origin?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-origin","conformance-type":"import"},{"name":"openflow-augments_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-augments?revision=2015-02-25","namespace":"urn:opendaylight:openflow:augments","conformance-type":"import"},{"name":"iana-ssh-encryption-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-encryption-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-encryption-algs","conformance-type":"import"},{"name":"ietf-truststore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-truststore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-truststore","conformance-type":"import","feature":["inline-definitions-supported"]},{"name":"distributed-datastore-provider_2025-01-30","revision":"2025-01-30","schema":"/rests/modules/distributed-datastore-provider?revision=2025-01-30","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:distributed-datastore-provider","conformance-type":"import"},{"name":"opendaylight-group-types_2013-10-18","revision":"2013-10-18","schema":"/rests/modules/opendaylight-group-types?revision=2013-10-18","namespace":"urn:opendaylight:group:types","conformance-type":"import"},{"name":"sal-remote-augment_2023-11-03","revision":"2023-11-03","schema":"/rests/modules/sal-remote-augment?revision=2023-11-03","namespace":"urn:sal:restconf:event:subscription","conformance-type":"import"},{"name":"opendaylight-ipv6-arbitrary-bitmask-fields_2016-02-24","revision":"2016-02-24","schema":"/rests/modules/opendaylight-ipv6-arbitrary-bitmask-fields?revision=2016-02-24","namespace":"urn:opendaylight:opendaylight-ipv6-arbitrary-bitmask-fields","conformance-type":"import"},{"name":"sal-flows-batch_2016-03-14","revision":"2016-03-14","schema":"/rests/modules/sal-flows-batch?revision=2016-03-14","namespace":"urn:opendaylight:flows:service","conformance-type":"import"},{"name":"ietf-tls-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-common","conformance-type":"import","feature":["tls12","hello-params","tls13"]},{"name":"openflow-types_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-types?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:types","conformance-type":"import"},{"name":"ietf-netconf-with-defaults_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf-with-defaults?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults","conformance-type":"import"},{"name":"odl-srm-ops_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-ops?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:ops","conformance-type":"import"},{"name":"odl-general-entity_2015-09-30","revision":"2015-09-30","schema":"/rests/modules/odl-general-entity?revision=2015-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:mdsal:core:general-entity","conformance-type":"import"},{"name":"iana-ssh-key-exchange-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-key-exchange-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-key-exchange-algs","conformance-type":"import"},{"name":"node-ssl-connection-error_2019-07-23","revision":"2019-07-23","schema":"/rests/modules/node-ssl-connection-error?revision=2019-07-23","namespace":"urn:opendaylight:node-ssl-connection-error:service","conformance-type":"import"},{"name":"openflow-protocol_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-protocol?revision=2013-07-31","namespace":"urn:opendaylight:openflow:protocol","conformance-type":"import"},{"name":"ietf-udp-server_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-server?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-server","conformance-type":"import"},{"name":"ietf-keystore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-keystore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-keystore","conformance-type":"import","feature":["asymmetric-keys","inline-definitions-supported"]},{"name":"aaa_2016-12-14","revision":"2016-12-14","schema":"/rests/modules/aaa?revision=2016-12-14","namespace":"urn:opendaylight:params:xml:ns:yang:aaa","conformance-type":"import"},{"name":"aaa-cert-rpc_2015-12-15","revision":"2015-12-15","schema":"/rests/modules/aaa-cert-rpc?revision=2015-12-15","namespace":"urn:opendaylight:yang:aaa:cert:rpc","conformance-type":"import"},{"name":"system-notifications_2013-09-27","revision":"2013-09-27","schema":"/rests/modules/system-notifications?revision=2013-09-27","namespace":"urn:opendaylight:openflow:system","conformance-type":"import"},{"name":"sal-flat-batch_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/sal-flat-batch?revision=2016-03-21","namespace":"urn:opendaylight:flat-batch:service","conformance-type":"import"},{"name":"notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netconf:notification:1.0","conformance-type":"import"},{"name":"sal-remote_2014-01-14","revision":"2014-01-14","schema":"/rests/modules/sal-remote?revision=2014-01-14","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:remote","conformance-type":"import"},{"name":"yang-ext_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/yang-ext?revision=2013-07-09","namespace":"urn:opendaylight:yang:extension:yang-ext","conformance-type":"import"},{"name":"opendaylight-multipart-types_2017-01-12","revision":"2017-01-12","schema":"/rests/modules/opendaylight-multipart-types?revision=2017-01-12","namespace":"urn:opendaylight:multipart:types","conformance-type":"import"},{"name":"opendaylight-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-inventory?revision=2013-08-19","namespace":"urn:opendaylight:inventory","conformance-type":"import"},{"name":"sal-queue_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-queue?revision=2015-03-05","namespace":"urn:opendaylight:queue:service","conformance-type":"import"},{"name":"sal-groups-batch_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/sal-groups-batch?revision=2016-03-15","namespace":"urn:opendaylight:groups:service","conformance-type":"import"},{"name":"arbitrator-reconcile_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/arbitrator-reconcile?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:arbitrator-reconcile:service","conformance-type":"import"},{"name":"ietf-yang-metadata_2016-08-05","revision":"2016-08-05","schema":"/rests/modules/ietf-yang-metadata?revision=2016-08-05","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-metadata","conformance-type":"import"},{"name":"opendaylight-arbitrary-bitmask-fields_2016-01-30","revision":"2016-01-30","schema":"/rests/modules/opendaylight-arbitrary-bitmask-fields?revision=2016-01-30","namespace":"urn:opendaylight:arbitrary:bitmask:fields","conformance-type":"import"},{"name":"ietf-udp-client_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-client?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-client","conformance-type":"import","feature":["local-binding"]},{"name":"opendaylight-meter-types_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/opendaylight-meter-types?revision=2013-09-18","namespace":"urn:opendaylight:meter:types","conformance-type":"import"},{"name":"opendaylight-action-types_2013-11-12","revision":"2013-11-12","schema":"/rests/modules/opendaylight-action-types?revision=2013-11-12","namespace":"urn:opendaylight:action:types","conformance-type":"import"},{"name":"sal-role_2015-07-27","revision":"2015-07-27","schema":"/rests/modules/sal-role?revision=2015-07-27","namespace":"urn:opendaylight:role:service","conformance-type":"import"},{"name":"openflow-provider-config_2016-05-10","revision":"2016-05-10","schema":"/rests/modules/openflow-provider-config?revision=2016-05-10","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:provider:config","conformance-type":"import"},{"name":"odl-serviceutils-upgrade_2018-07-02","revision":"2018-07-02","schema":"/rests/modules/odl-serviceutils-upgrade?revision=2018-07-02","namespace":"urn:opendaylight:serviceutils:upgrade","conformance-type":"import"},{"name":"opendaylight-match-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-match-types?revision=2013-10-26","namespace":"urn:opendaylight:model:match:types","conformance-type":"import"},{"name":"ietf-restconf-server_2024-08-14","revision":"2024-08-14","schema":"/rests/modules/ietf-restconf-server?revision=2024-08-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-server","conformance-type":"import","feature":["http-listen","https-listen"]},{"name":"reconciliation-result-state_2017-07-13","revision":"2017-07-13","schema":"/rests/modules/reconciliation-result-state?revision=2017-07-13","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:rf:state","conformance-type":"import"},{"name":"onf-extensions_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/onf-extensions?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf","conformance-type":"import"},{"name":"sal-table_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/sal-table?revision=2013-10-26","namespace":"urn:opendaylight:table:service","conformance-type":"import"},{"name":"iana-http-versions_2026-02-04","revision":"2026-02-04","schema":"/rests/modules/iana-http-versions?revision=2026-02-04","namespace":"urn:ietf:params:xml:ns:yang:iana-http-versions","conformance-type":"import"},{"name":"opendaylight-direct-statistics_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/opendaylight-direct-statistics?revision=2016-05-11","namespace":"urn:opendaylight:direct:statistics","conformance-type":"import"},{"name":"opendaylight-port-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-port-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:port","conformance-type":"import"},{"name":"sal-async-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/sal-async-config?revision=2017-06-19","namespace":"urn:opendaylight:async-config:service","conformance-type":"import"},{"name":"aaa-password-service-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-password-service-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:password:service:config","conformance-type":"import"},{"name":"ietf-yang-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-yang-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-types","conformance-type":"import"},{"name":"opendaylight-queue-statistics_2013-12-16","revision":"2013-12-16","schema":"/rests/modules/opendaylight-queue-statistics?revision=2013-12-16","namespace":"urn:opendaylight:queue:statistics","conformance-type":"import"},{"name":"sal-bundle_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/sal-bundle?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf:bundle:service","conformance-type":"import"},{"name":"ietf-restconf-subscribed-notifications_2019-11-17","revision":"2019-11-17","schema":"/rests/modules/ietf-restconf-subscribed-notifications?revision=2019-11-17","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-subscribed-notifications","conformance-type":"import"},{"name":"sal-meters-batch_2016-03-16","revision":"2016-03-16","schema":"/rests/modules/sal-meters-batch?revision=2016-03-16","namespace":"urn:opendaylight:meters:service","conformance-type":"import"},{"name":"odl-entity-owners","revision":"","schema":"/rests/modules/odl-entity-owners","namespace":"urn:opendaylight:params:xml:ns:yang:controller:entity-owners","conformance-type":"import"},{"name":"sal-experimenter-mp-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-mp-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-mp-message:service","conformance-type":"import"},{"name":"packet-processing_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/packet-processing?revision=2013-07-09","namespace":"urn:opendaylight:packet:service","conformance-type":"import"},{"name":"openflow-configuration_2014-06-30","revision":"2014-06-30","schema":"/rests/modules/openflow-configuration?revision=2014-06-30","namespace":"urn:opendaylight:openflow:config","conformance-type":"import"},{"name":"odl-srm-rpcs_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-rpcs?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:rpc","conformance-type":"import"},{"name":"ietf-netconf-acm_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-netconf-acm?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-acm","conformance-type":"import"},{"name":"iana-crypt-hash_2014-08-06","revision":"2014-08-06","schema":"/rests/modules/iana-crypt-hash?revision=2014-08-06","namespace":"urn:ietf:params:xml:ns:yang:iana-crypt-hash","conformance-type":"import","feature":["crypt-hash-sha-512","crypt-hash-sha-256","crypt-hash-md5"]},{"name":"openflow-extensible-match_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-extensible-match?revision=2015-02-25","namespace":"urn:opendaylight:openflow:oxm","conformance-type":"import"}],"module-set-id":"2"}}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:30.255791" elapsed="0.005784"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:30.255302" elapsed="0.006309"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:30.255257" elapsed="0.006379"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:30.264091" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:30.261919" elapsed="0.002218"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:30.261692" elapsed="0.002501"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:30.261675" elapsed="0.002543"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:50:30.264761" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:50:30.264380" elapsed="0.000408"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:30.265092" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:30.264858" elapsed="0.000292"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:30.265648" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:30.265351" elapsed="0.000322"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:30.265190" elapsed="0.000519"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:30.264839" elapsed="0.000891"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:50:30.266259" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:50:30.265888" elapsed="0.000397"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:30.266584" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:30.266355" elapsed="0.000286"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:30.267118" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:30.266822" elapsed="0.000321"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:30.266664" elapsed="0.000529"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:30.266337" elapsed="0.000879"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:50:30.267361" elapsed="0.000342"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:50:30.268365" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:50:30.267864" elapsed="0.000529"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:50:30.268544" elapsed="0.002165"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:50:30.254338" elapsed="0.016433"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:50:30.270944" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:50:30.270840" elapsed="0.000149"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:30.270821" elapsed="0.000191"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:50:30.279111" level="INFO">${text_normalized} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:50:30.271169" elapsed="0.007973"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:50:30.279209" elapsed="0.000032"/>
</return>
<msg time="2026-04-08T00:50:30.279389" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:50:30.235344" elapsed="0.044073"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:50:30.279481" elapsed="0.000027"/>
</return>
<msg time="2026-04-08T00:50:30.279793" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="PASS" start="2026-04-08T00:50:30.144822" elapsed="0.135007"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Json_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:30.280332" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:30.279954" elapsed="0.000497"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:30.279923" elapsed="0.000570"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:50:30.280554" elapsed="0.000071"/>
</return>
<arg>session=${session}</arg>
<arg>folder=${RESTCONF_MODULES_DIR}</arg>
<arg>verify=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Add arguments sensible for JSON data, return Get_Templated response text.
Optionally, verification against JSON data (may be iterated) is called.
Only subset of JSON data is verified and returned if JMES path is specified in
file ${folder}/jmespath.expr.</doc>
<status status="PASS" start="2026-04-08T00:50:30.139082" elapsed="0.141741"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:30.134773" elapsed="0.146160"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:30.134754" elapsed="0.146207"/>
</if>
<kw name="Resolve_Shard_Type_Class" owner="ClusterManagement">
<if>
<branch type="IF" condition="'${shard_type}' == 'config'">
<return>
<value>DistributedConfigDatastore</value>
<status status="PASS" start="2026-04-08T00:50:30.281856" elapsed="0.000069"/>
</return>
<status status="PASS" start="2026-04-08T00:50:30.281635" elapsed="0.000343"/>
</branch>
<branch type="ELSE IF" condition="'${shard_type}' == 'operational'">
<return>
<value>DistributedOperationalDatastore</value>
<status status="NOT RUN" start="2026-04-08T00:50:30.282122" elapsed="0.000061"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:50:30.282037" elapsed="0.000189"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:30.281603" elapsed="0.000681"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized shard type: ${shard_type}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:30.282513" elapsed="0.000064"/>
</kw>
<msg time="2026-04-08T00:50:30.282715" level="INFO">${type_class} = DistributedConfigDatastore</msg>
<var>${type_class}</var>
<arg>shard_type=${shard_type}</arg>
<doc>Simple lookup for class name corresponding to desired type.</doc>
<status status="PASS" start="2026-04-08T00:50:30.281237" elapsed="0.001504"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:50:30.283559" level="INFO">${cluster_index} = 1</msg>
<var>${cluster_index}</var>
<arg>${member_index}+${NODE_ROLE_INDEX_START}-1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:50:30.282912" elapsed="0.000674"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:30.284728" level="INFO">${uri} = jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-topology-config,type=DistributedConfigDatastore</msg>
<var>${uri}</var>
<arg>${JOLOKIA_READ_URI}:Category=Shards,name=member-${cluster_index}-shard-${shard_name}-${shard_type},type=${type_class}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:30.283742" elapsed="0.001014"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:30.291607" level="INFO">jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-topology-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:30.291322" elapsed="0.000370"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:30.292253" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:30.291933" elapsed="0.000403"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:50:30.302868" level="INFO">GET Request : url=http://10.30.170.48:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-topology-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-topology-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:50:30.302950" level="INFO">GET Response : url=http://10.30.170.48:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-topology-config,type=DistributedConfigDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Wed, 08 Apr 2026 00:50:30 GMT', 'Expires': 'Tue, 07 Apr 2026 23:50:30 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-1-shard-topology-config,type=DistributedConfigDatastore","type":"read"},"value":{"ReadWriteTransactionCount":0,"SnapshotIndex":-1,"InMemoryJournalLogSize":0,"ReplicatedToAllIndex":-1,"Leader":"member-1-shard-topology-config","LastIndex":-1,"RaftState":"Leader","LastApplied":-1,"LastCommittedTransactionTime":"1970-01-01 00:00:00.000","PeerAddresses":"member-2-shard-topology-config: pekko:\/\/opendaylight-cluster-data@10.30.170.131:2550\/user\/shardmanager-config\/member-2-shard-topology-config, member-3-shard-topology-config: pekko:\/\/opendaylight-cluster-data@10.30.171.110:2550\/user\/shardmanager-config\/member-3-shard-topology-config","LastLogIndex":-1,"LastLeadershipChangeTime":"2026-04-08 00:46:45.979","FollowerInitialSyncStatus":false,"FollowerInfo":[{"timeSinceLastActivity":"00:00:00.346","active":true,"matchIndex":-1,"voting":true,"id":"member-2-shard-topology-config","nextIndex":0},{"timeSinceLastActivity":"00:00:00.346","active":true,"matchIndex":-1,"voting":true,"id":"member-3-shard-topology-config","nextIndex":0}],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"444.3 μs","CurrentTerm":2,"LastTerm":-1,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-topology-config","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":0,"TxCohortCacheSize":0,"PeerVotingStates":"member-2-shard-topology-config: true, member-3-shard-topology-config: true","LastLogTerm":-1,"StatRetrievalError":null,"CommitIndex":-1,"SnapshotTerm":-1,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-1-shard-topology-config","LeadershipChangeCount":1,"InMemoryJournalDataSize":0},"timestamp":1775609430,"status":200} 
 </msg>
<msg time="2026-04-08T00:50:30.303100" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:50:30.294939" elapsed="0.008192"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:30.292479" elapsed="0.010712"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:30.303418" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:30.303249" elapsed="0.000234"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:30.292434" elapsed="0.011086"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:30.307121" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-1-shard-topology-config,type=DistributedConfigDatastore","type":"read"},"value":{"ReadWriteTransactionCount":0,"SnapshotIndex":-1,"InMemoryJournalLogSize":0,"ReplicatedToAllIndex":-1,"Leader":"member-1-shard-topology-config","LastIndex":-1,"RaftState":"Leader","LastApplied":-1,"LastCommittedTransactionTime":"1970-01-01 00:00:00.000","PeerAddresses":"member-2-shard-topology-config: pekko:\/\/opendaylight-cluster-data@10.30.170.131:2550\/user\/shardmanager-config\/member-2-shard-topology-config, member-3-shard-topology-config: pekko:\/\/opendaylight-cluster-data@10.30.171.110:2550\/user\/shardmanager-config\/member-3-shard-topology-config","LastLogIndex":-1,"LastLeadershipChangeTime":"2026-04-08 00:46:45.979","FollowerInitialSyncStatus":false,"FollowerInfo":[{"timeSinceLastActivity":"00:00:00.346","active":true,"matchIndex":-1,"voting":true,"id":"member-2-shard-topology-config","nextIndex":0},{"timeSinceLastActivity":"00:00:00.346","active":true,"matchIndex":-1,"voting":true,"id":"member-3-shard-topology-config","nextIndex":0}],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"444.3 μs","CurrentTerm":2,"LastTerm":-1,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-topology-config","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":0,"TxCohortCacheSize":0,"PeerVotingStates":"member-2-shard-topology-config: true, member-3-shard-topology-config: true","LastLogTerm":-1,"StatRetrievalError":null,"CommitIndex":-1,"SnapshotTerm":-1,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-1-shard-topology-config","LeadershipChangeCount":1,"InMemoryJournalDataSize":0},"timestamp":1775609430,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:30.304732" elapsed="0.002467"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:30.304510" elapsed="0.002725"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:30.304490" elapsed="0.002769"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:30.309851" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:30.307537" elapsed="0.002383"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:30.307316" elapsed="0.002655"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:30.307299" elapsed="0.002708"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:50:30.310855" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:50:30.310271" elapsed="0.000624"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:30.311374" elapsed="0.000033"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:30.311005" elapsed="0.000456"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:30.312212" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:30.311731" elapsed="0.000522"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:30.311496" elapsed="0.000810"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:30.310977" elapsed="0.001361"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:50:30.313115" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:50:30.312571" elapsed="0.000606"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:30.313603" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:30.313278" elapsed="0.000404"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:30.314361" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:30.313934" elapsed="0.000464"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:30.313713" elapsed="0.000733"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:30.313253" elapsed="0.001222"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:50:30.314682" elapsed="0.000493"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:50:30.315791" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:50:30.315407" elapsed="0.000420"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:50:30.316089" elapsed="0.003089"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:50:30.304037" elapsed="0.015230"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:50:30.319637" elapsed="0.000021"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:50:30.319481" elapsed="0.000219"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:30.319417" elapsed="0.000335"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:50:30.323171" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-1-shard-topology-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1775609...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:50:30.320120" elapsed="0.003106"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:50:30.323309" elapsed="0.000066"/>
</return>
<msg time="2026-04-08T00:50:30.323701" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-1-shard-topology-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1775609...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:50:30.286353" elapsed="0.037438"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:50:30.323895" elapsed="0.000036"/>
</return>
<msg time="2026-04-08T00:50:30.324227" level="INFO">${data_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-1-shard-topology-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1775609...</msg>
<var>${data_text}</var>
<arg>uri=${uri}</arg>
<arg>session=${session}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-08T00:50:30.284975" elapsed="0.039280"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:50:30.326447" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-1-shard-topology-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1775609430, 'value...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:50:30.325374" elapsed="0.001168"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-08T00:50:30.326628" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:50:30.326927" level="INFO">${data_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-1-shard-topology-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1775609430, 'value...</msg>
<var>${data_object}</var>
<arg>${data_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-08T00:50:30.324480" elapsed="0.002476"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:30.327444" level="INFO">${value} = {'AbortTransactionsCount': 0, 'CommitIndex': -1, 'CommittedTransactionsCount': 0, 'CurrentTerm': 2, 'FailedReadTransactionsCount': 0, 'FailedTransactionsCount': 0, 'FollowerInfo': [{'active': True, 'i...</msg>
<var>${value}</var>
<arg>${data_object}</arg>
<arg>value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:30.327115" elapsed="0.000357"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:30.328023" level="INFO">${raft_property} = Leader</msg>
<var>${raft_property}</var>
<arg>${value}</arg>
<arg>${property}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:30.327630" elapsed="0.000423"/>
</kw>
<return>
<value>${raft_property}</value>
<status status="PASS" start="2026-04-08T00:50:30.328100" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:50:30.328277" level="INFO">${raft_state} = Leader</msg>
<var>${raft_state}</var>
<arg>RaftState</arg>
<arg>${shard_name}</arg>
<arg>${shard_type}</arg>
<arg>${member_index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft property.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T00:50:30.132091" elapsed="0.196212"/>
</kw>
<return>
<value>${raft_state}</value>
<status status="PASS" start="2026-04-08T00:50:30.328361" elapsed="0.000025"/>
</return>
<msg time="2026-04-08T00:50:30.328508" level="INFO">${raft_state} = Leader</msg>
<var>${raft_state}</var>
<arg>shard_name=${shard_name}</arg>
<arg>shard_type=${ds_type}</arg>
<arg>member_index=${index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft status.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T00:50:30.131324" elapsed="0.197208"/>
</kw>
<if>
<branch type="IF" condition="'Follower' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${follower_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:30.328828" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:30.328612" elapsed="0.000273"/>
</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="PASS" start="2026-04-08T00:50:30.329113" elapsed="0.000218"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:30.328908" elapsed="0.000462"/>
</branch>
<branch type="ELSE IF" condition="${validate}">
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized Raft state: ${raft_state}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:30.329538" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:30.329394" elapsed="0.000197"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:30.328594" elapsed="0.001019"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T00:50:30.131135" elapsed="0.198501"/>
</iter>
<iter>
<kw name="Get_Raft_State_Of_Shard_At_Member" owner="ClusterManagement">
<kw name="Get_Raft_Property_From_Shard_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:30.333146" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:30.332112" elapsed="0.001240"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:50:30.333434" elapsed="0.000031"/>
</return>
<msg time="2026-04-08T00:50:30.333701" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:50:30.331559" elapsed="0.002169"/>
</kw>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Get_As_Json_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:30.381482" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:30.381091" elapsed="0.000419"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:50:30.382330" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:50:30.382045" elapsed="0.000367">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-08T00:50:30.382506" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:50:30.381673" elapsed="0.000858"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:50:30.383079" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:50:30.382694" elapsed="0.000412"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T00:50:30.383418" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-08T00:50:30.383581" level="INFO">${template} = /rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T00:50:30.383280" elapsed="0.000327"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:30.384032" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:30.383758" elapsed="0.000318"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:30.385022" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:30.384767" elapsed="0.000299"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-08T00:50:30.385504" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-08T00:50:30.385239" elapsed="0.000291"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:30.385846" elapsed="0.000022"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:30.386044" elapsed="0.000024"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:30.386231" elapsed="0.000022"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-08T00:50:30.385714" elapsed="0.000574"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-08T00:50:30.385579" elapsed="0.000738"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-08T00:50:30.386360" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:50:30.386515" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-08T00:50:30.384449" elapsed="0.002091"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:30.384149" elapsed="0.002423"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:30.386740" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:30.386596" elapsed="0.000198"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:30.384128" elapsed="0.002686"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:50:30.387389" level="INFO">${final_text} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:50:30.386950" elapsed="0.000467"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T00:50:30.387464" 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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="PASS" start="2026-04-08T00:50:30.380484" elapsed="0.007101"/>
</kw>
<msg time="2026-04-08T00:50:30.387638" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:50:30.368770" elapsed="0.018920"/>
</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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:30.399413" 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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:30.411279" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:30.423373" elapsed="0.000040"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:30.423647" elapsed="0.000030"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:30.423910" elapsed="0.000030"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:30.424430" elapsed="0.000029"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:30.424234" elapsed="0.000274"/>
</branch>
<status status="NOT RUN" start="2026-04-08T00:50:30.424213" elapsed="0.000327"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:30.424733" elapsed="0.000028"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:30.424967" elapsed="0.000028"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:30.425216" elapsed="0.000030"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-08T00:50:30.424152" elapsed="0.001140"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-08T00:50:30.424015" elapsed="0.001313"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:30.425526" elapsed="0.000029"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-08T00:50:30.425630" elapsed="0.000021"/>
</return>
<msg time="2026-04-08T00:50:30.425788" level="INFO">${uri} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-08T00:50:30.364797" elapsed="0.061028"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:50:30.427552" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:50:30.427224" elapsed="0.000416">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-08T00:50:30.427765" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:50:30.426733" elapsed="0.001066"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:30.428297" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:30.427936" elapsed="0.000441"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:30.429044" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:30.428637" elapsed="0.000433"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:30.428411" elapsed="0.000693"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:30.427905" elapsed="0.001220"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:50:30.431306" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:50:30.429289" elapsed="0.002043"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-08T00:50:30.431382" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:50:30.431533" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:50:30.426288" elapsed="0.005270"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:50:30.432837" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:50:30.432595" elapsed="0.000305">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-08T00:50:30.432992" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:50:30.432261" elapsed="0.000755"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-08T00:50:30.433239" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-08T00:50:30.433088" elapsed="0.000211"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:30.433069" elapsed="0.000253"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:30.433467" elapsed="0.000022"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:30.433636" elapsed="0.000021"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-08T00:50:30.433701" elapsed="0.000015"/>
</return>
<msg time="2026-04-08T00:50:30.435619" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:50:30.431871" elapsed="0.003775"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:30.437056" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:30.436806" elapsed="0.000294"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:30.437510" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:30.437270" elapsed="0.000284"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:50:30.455428" level="INFO">GET Request : url=http://10.30.170.131:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 path_url=/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0evogeryo91251obsb096nsda10.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:50:30.456413" level="INFO">GET Response : url=http://10.30.170.131:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Transfer-Encoding': 'chunked'} 
 body={"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","hidden-symmetric-keys","encrypted-private-keys","asymmetrically-encrypted-value-format","cms-encrypted-data-format","cleartext-private-keys","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["ssh-client-keepalives","client-ident-hostbased","client-ident-publickey","client-ident-password"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-ex... (set the log level to DEBUG or TRACE to see the full content) 
 </msg>
<msg time="2026-04-08T00:50:30.456978" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:50:30.439630" elapsed="0.017411"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:30.437621" elapsed="0.019517"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:30.457584" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:30.457240" elapsed="0.000490"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:30.437603" elapsed="0.020174"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:30.465372" level="INFO">{"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","hidden-symmetric-keys","encrypted-private-keys","asymmetrically-encrypted-value-format","cms-encrypted-data-format","cleartext-private-keys","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["ssh-client-keepalives","client-ident-hostbased","client-ident-publickey","client-ident-password"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-experimenter-types?revision=2015-10-20","namespace":"urn:opendaylight:openflowplugin:experimenter:types","conformance-type":"import"},{"name":"ietf-ip_2018-02-22","revision":"2018-02-22","schema":"/rests/modules/ietf-ip?revision=2018-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-ip","conformance-type":"import","feature":["ipv6-privacy-autoconf","ipv4-non-contiguous-netmasks"]},{"name":"ietf-tcp-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-client","conformance-type":"import","feature":["local-binding-supported","tcp-client-keepalives"]},{"name":"node-config_2014-10-15","revision":"2014-10-15","schema":"/rests/modules/node-config?revision=2014-10-15","namespace":"urn:opendaylight:module:config","conformance-type":"import"},{"name":"ietf-restconf_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf","conformance-type":"import"},{"name":"ietf-datastores_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-datastores?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-datastores","conformance-type":"import"},{"name":"ietf-yang-patch_2017-02-22","revision":"2017-02-22","schema":"/rests/modules/ietf-yang-patch?revision=2017-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-patch","conformance-type":"import"},{"name":"sal-group_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-group?revision=2013-09-18","namespace":"urn:opendaylight:group:service","conformance-type":"import"},{"name":"odl-codegen-extensions_2024-06-27","revision":"2024-06-27","schema":"/rests/modules/odl-codegen-extensions?revision=2024-06-27","namespace":"urn:opendaylight:yang:extension:codegen","conformance-type":"import"},{"name":"sal-meter_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-meter?revision=2013-09-18","namespace":"urn:opendaylight:meter:service","conformance-type":"import"},{"name":"ietf-interfaces_2018-02-20","revision":"2018-02-20","schema":"/rests/modules/ietf-interfaces?revision=2018-02-20","namespace":"urn:ietf:params:xml:ns:yang:ietf-interfaces","conformance-type":"import","feature":["pre-provisioning","if-mib","arbitrary-names"]},{"name":"opendaylight-l2-types_2013-08-27","revision":"2013-08-27","schema":"/rests/modules/opendaylight-l2-types?revision=2013-08-27","namespace":"urn:opendaylight:l2:types","conformance-type":"import"},{"name":"opendaylight-flow-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-flow-types?revision=2013-10-26","namespace":"urn:opendaylight:flow:types","conformance-type":"import"},{"name":"lldp-speaker-config_2016-05-12","revision":"2016-05-12","schema":"/rests/modules/lldp-speaker-config?revision=2016-05-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker:config","conformance-type":"import"},{"name":"aaa-cert_2015-11-26","revision":"2015-11-26","schema":"/rests/modules/aaa-cert?revision=2015-11-26","namespace":"urn:opendaylight:yang:aaa:cert","conformance-type":"import"},{"name":"openflow-action_2015-02-03","revision":"2015-02-03","schema":"/rests/modules/openflow-action?revision=2015-02-03","namespace":"urn:opendaylight:openflow:common:action","conformance-type":"import"},{"name":"openflow-approved-extensions_2016-08-02","revision":"2016-08-02","schema":"/rests/modules/openflow-approved-extensions?revision=2016-08-02","namespace":"urn:opendaylight:openflow:approved:extensions","conformance-type":"import"},{"name":"nc-notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/nc-notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netmod:notification","conformance-type":"import"},{"name":"ietf-netconf-nmda_2019-01-07","revision":"2019-01-07","schema":"/rests/modules/ietf-netconf-nmda?revision=2019-01-07","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-nmda","conformance-type":"import","feature":["with-defaults","origin"]},{"name":"ietf-tcp-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-common","conformance-type":"import","feature":["keepalives-supported"]},{"name":"network-topology_2013-10-21","revision":"2013-10-21","schema":"/rests/modules/network-topology?revision=2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:network-topology","conformance-type":"import"},{"name":"aaa-encrypt-service-config_2024-02-02","revision":"2024-02-02","schema":"/rests/modules/aaa-encrypt-service-config?revision=2024-02-02","namespace":"config:aaa:authn:encrypt:service:config","conformance-type":"import"},{"name":"openflow-instruction_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-instruction?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:instruction","conformance-type":"import"},{"name":"ietf-tls-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-client","conformance-type":"import","feature":["client-ident-x509-cert","server-auth-x509-cert"]},{"name":"opendaylight-group-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-group-statistics?revision=2013-11-11","namespace":"urn:opendaylight:group:statistics","conformance-type":"import"},{"name":"cluster-admin_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/cluster-admin?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:cluster:admin","conformance-type":"import"},{"name":"opendaylight-flow-statistics_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-flow-statistics?revision=2013-08-19","namespace":"urn:opendaylight:flow:statistics","conformance-type":"import"},{"name":"opendaylight-table-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-table-types?revision=2013-10-26","namespace":"urn:opendaylight:table:types","conformance-type":"import"},{"name":"forwarding-rules-manager-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/forwarding-rules-manager-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:forwardingrules-manager:config","conformance-type":"import"},{"name":"odl-srm-types_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-types?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:types","conformance-type":"import"},{"name":"ietf-x509-cert-to-name_2014-12-10","revision":"2014-12-10","schema":"/rests/modules/ietf-x509-cert-to-name?revision=2014-12-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-x509-cert-to-name","conformance-type":"import"},{"name":"flow-node-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-node-inventory?revision=2013-08-19","namespace":"urn:opendaylight:flow:inventory","conformance-type":"import"},{"name":"flow-errors_2013-11-16","revision":"2013-11-16","schema":"/rests/modules/flow-errors?revision=2013-11-16","namespace":"urn:opendaylight:flow:errors","conformance-type":"import"},{"name":"ietf-netconf_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:netconf:base:1.0","conformance-type":"import","feature":["xpath","url","rollback-on-error","validate","startup","candidate","confirmed-commit","writable-running"]},{"name":"iana-ssh-public-key-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-public-key-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-public-key-algs","conformance-type":"import"},{"name":"aaa-cert-mdsal_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/aaa-cert-mdsal?revision=2016-03-21","namespace":"urn:opendaylight:yang:aaa:cert:mdsal","conformance-type":"import"},{"name":"odl-device-notification_2024-02-18","revision":"2024-02-18","schema":"/rests/modules/odl-device-notification?revision=2024-02-18","namespace":"urn:opendaylight:device:notification","conformance-type":"import"},{"name":"ietf-origin_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-origin?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-origin","conformance-type":"import"},{"name":"openflow-augments_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-augments?revision=2015-02-25","namespace":"urn:opendaylight:openflow:augments","conformance-type":"import"},{"name":"iana-ssh-encryption-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-encryption-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-encryption-algs","conformance-type":"import"},{"name":"ietf-truststore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-truststore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-truststore","conformance-type":"import","feature":["inline-definitions-supported"]},{"name":"distributed-datastore-provider_2025-01-30","revision":"2025-01-30","schema":"/rests/modules/distributed-datastore-provider?revision=2025-01-30","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:distributed-datastore-provider","conformance-type":"import"},{"name":"opendaylight-group-types_2013-10-18","revision":"2013-10-18","schema":"/rests/modules/opendaylight-group-types?revision=2013-10-18","namespace":"urn:opendaylight:group:types","conformance-type":"import"},{"name":"sal-remote-augment_2023-11-03","revision":"2023-11-03","schema":"/rests/modules/sal-remote-augment?revision=2023-11-03","namespace":"urn:sal:restconf:event:subscription","conformance-type":"import"},{"name":"opendaylight-ipv6-arbitrary-bitmask-fields_2016-02-24","revision":"2016-02-24","schema":"/rests/modules/opendaylight-ipv6-arbitrary-bitmask-fields?revision=2016-02-24","namespace":"urn:opendaylight:opendaylight-ipv6-arbitrary-bitmask-fields","conformance-type":"import"},{"name":"sal-flows-batch_2016-03-14","revision":"2016-03-14","schema":"/rests/modules/sal-flows-batch?revision=2016-03-14","namespace":"urn:opendaylight:flows:service","conformance-type":"import"},{"name":"ietf-tls-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-common","conformance-type":"import","feature":["tls12","hello-params","tls13"]},{"name":"openflow-types_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-types?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:types","conformance-type":"import"},{"name":"ietf-netconf-with-defaults_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf-with-defaults?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults","conformance-type":"import"},{"name":"odl-srm-ops_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-ops?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:ops","conformance-type":"import"},{"name":"odl-general-entity_2015-09-30","revision":"2015-09-30","schema":"/rests/modules/odl-general-entity?revision=2015-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:mdsal:core:general-entity","conformance-type":"import"},{"name":"iana-ssh-key-exchange-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-key-exchange-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-key-exchange-algs","conformance-type":"import"},{"name":"node-ssl-connection-error_2019-07-23","revision":"2019-07-23","schema":"/rests/modules/node-ssl-connection-error?revision=2019-07-23","namespace":"urn:opendaylight:node-ssl-connection-error:service","conformance-type":"import"},{"name":"openflow-protocol_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-protocol?revision=2013-07-31","namespace":"urn:opendaylight:openflow:protocol","conformance-type":"import"},{"name":"ietf-udp-server_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-server?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-server","conformance-type":"import"},{"name":"ietf-keystore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-keystore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-keystore","conformance-type":"import","feature":["asymmetric-keys","inline-definitions-supported"]},{"name":"aaa_2016-12-14","revision":"2016-12-14","schema":"/rests/modules/aaa?revision=2016-12-14","namespace":"urn:opendaylight:params:xml:ns:yang:aaa","conformance-type":"import"},{"name":"aaa-cert-rpc_2015-12-15","revision":"2015-12-15","schema":"/rests/modules/aaa-cert-rpc?revision=2015-12-15","namespace":"urn:opendaylight:yang:aaa:cert:rpc","conformance-type":"import"},{"name":"system-notifications_2013-09-27","revision":"2013-09-27","schema":"/rests/modules/system-notifications?revision=2013-09-27","namespace":"urn:opendaylight:openflow:system","conformance-type":"import"},{"name":"sal-flat-batch_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/sal-flat-batch?revision=2016-03-21","namespace":"urn:opendaylight:flat-batch:service","conformance-type":"import"},{"name":"notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netconf:notification:1.0","conformance-type":"import"},{"name":"sal-remote_2014-01-14","revision":"2014-01-14","schema":"/rests/modules/sal-remote?revision=2014-01-14","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:remote","conformance-type":"import"},{"name":"yang-ext_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/yang-ext?revision=2013-07-09","namespace":"urn:opendaylight:yang:extension:yang-ext","conformance-type":"import"},{"name":"opendaylight-multipart-types_2017-01-12","revision":"2017-01-12","schema":"/rests/modules/opendaylight-multipart-types?revision=2017-01-12","namespace":"urn:opendaylight:multipart:types","conformance-type":"import"},{"name":"opendaylight-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-inventory?revision=2013-08-19","namespace":"urn:opendaylight:inventory","conformance-type":"import"},{"name":"sal-queue_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-queue?revision=2015-03-05","namespace":"urn:opendaylight:queue:service","conformance-type":"import"},{"name":"sal-groups-batch_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/sal-groups-batch?revision=2016-03-15","namespace":"urn:opendaylight:groups:service","conformance-type":"import"},{"name":"arbitrator-reconcile_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/arbitrator-reconcile?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:arbitrator-reconcile:service","conformance-type":"import"},{"name":"ietf-yang-metadata_2016-08-05","revision":"2016-08-05","schema":"/rests/modules/ietf-yang-metadata?revision=2016-08-05","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-metadata","conformance-type":"import"},{"name":"opendaylight-arbitrary-bitmask-fields_2016-01-30","revision":"2016-01-30","schema":"/rests/modules/opendaylight-arbitrary-bitmask-fields?revision=2016-01-30","namespace":"urn:opendaylight:arbitrary:bitmask:fields","conformance-type":"import"},{"name":"ietf-udp-client_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-client?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-client","conformance-type":"import","feature":["local-binding"]},{"name":"opendaylight-meter-types_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/opendaylight-meter-types?revision=2013-09-18","namespace":"urn:opendaylight:meter:types","conformance-type":"import"},{"name":"opendaylight-action-types_2013-11-12","revision":"2013-11-12","schema":"/rests/modules/opendaylight-action-types?revision=2013-11-12","namespace":"urn:opendaylight:action:types","conformance-type":"import"},{"name":"sal-role_2015-07-27","revision":"2015-07-27","schema":"/rests/modules/sal-role?revision=2015-07-27","namespace":"urn:opendaylight:role:service","conformance-type":"import"},{"name":"openflow-provider-config_2016-05-10","revision":"2016-05-10","schema":"/rests/modules/openflow-provider-config?revision=2016-05-10","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:provider:config","conformance-type":"import"},{"name":"odl-serviceutils-upgrade_2018-07-02","revision":"2018-07-02","schema":"/rests/modules/odl-serviceutils-upgrade?revision=2018-07-02","namespace":"urn:opendaylight:serviceutils:upgrade","conformance-type":"import"},{"name":"opendaylight-match-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-match-types?revision=2013-10-26","namespace":"urn:opendaylight:model:match:types","conformance-type":"import"},{"name":"ietf-restconf-server_2024-08-14","revision":"2024-08-14","schema":"/rests/modules/ietf-restconf-server?revision=2024-08-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-server","conformance-type":"import","feature":["http-listen","https-listen"]},{"name":"reconciliation-result-state_2017-07-13","revision":"2017-07-13","schema":"/rests/modules/reconciliation-result-state?revision=2017-07-13","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:rf:state","conformance-type":"import"},{"name":"onf-extensions_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/onf-extensions?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf","conformance-type":"import"},{"name":"sal-table_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/sal-table?revision=2013-10-26","namespace":"urn:opendaylight:table:service","conformance-type":"import"},{"name":"iana-http-versions_2026-02-04","revision":"2026-02-04","schema":"/rests/modules/iana-http-versions?revision=2026-02-04","namespace":"urn:ietf:params:xml:ns:yang:iana-http-versions","conformance-type":"import"},{"name":"opendaylight-direct-statistics_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/opendaylight-direct-statistics?revision=2016-05-11","namespace":"urn:opendaylight:direct:statistics","conformance-type":"import"},{"name":"opendaylight-port-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-port-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:port","conformance-type":"import"},{"name":"sal-async-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/sal-async-config?revision=2017-06-19","namespace":"urn:opendaylight:async-config:service","conformance-type":"import"},{"name":"aaa-password-service-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-password-service-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:password:service:config","conformance-type":"import"},{"name":"ietf-yang-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-yang-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-types","conformance-type":"import"},{"name":"opendaylight-queue-statistics_2013-12-16","revision":"2013-12-16","schema":"/rests/modules/opendaylight-queue-statistics?revision=2013-12-16","namespace":"urn:opendaylight:queue:statistics","conformance-type":"import"},{"name":"sal-bundle_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/sal-bundle?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf:bundle:service","conformance-type":"import"},{"name":"ietf-restconf-subscribed-notifications_2019-11-17","revision":"2019-11-17","schema":"/rests/modules/ietf-restconf-subscribed-notifications?revision=2019-11-17","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-subscribed-notifications","conformance-type":"import"},{"name":"sal-meters-batch_2016-03-16","revision":"2016-03-16","schema":"/rests/modules/sal-meters-batch?revision=2016-03-16","namespace":"urn:opendaylight:meters:service","conformance-type":"import"},{"name":"odl-entity-owners","revision":"","schema":"/rests/modules/odl-entity-owners","namespace":"urn:opendaylight:params:xml:ns:yang:controller:entity-owners","conformance-type":"import"},{"name":"sal-experimenter-mp-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-mp-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-mp-message:service","conformance-type":"import"},{"name":"packet-processing_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/packet-processing?revision=2013-07-09","namespace":"urn:opendaylight:packet:service","conformance-type":"import"},{"name":"openflow-configuration_2014-06-30","revision":"2014-06-30","schema":"/rests/modules/openflow-configuration?revision=2014-06-30","namespace":"urn:opendaylight:openflow:config","conformance-type":"import"},{"name":"odl-srm-rpcs_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-rpcs?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:rpc","conformance-type":"import"},{"name":"ietf-netconf-acm_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-netconf-acm?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-acm","conformance-type":"import"},{"name":"iana-crypt-hash_2014-08-06","revision":"2014-08-06","schema":"/rests/modules/iana-crypt-hash?revision=2014-08-06","namespace":"urn:ietf:params:xml:ns:yang:iana-crypt-hash","conformance-type":"import","feature":["crypt-hash-sha-512","crypt-hash-sha-256","crypt-hash-md5"]},{"name":"openflow-extensible-match_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-extensible-match?revision=2015-02-25","namespace":"urn:opendaylight:openflow:oxm","conformance-type":"import"}],"module-set-id":"2"}}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:30.460076" elapsed="0.005620"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:30.459543" elapsed="0.006189"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:30.459498" elapsed="0.006259"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:30.468224" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:30.466036" elapsed="0.002234"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:30.465815" elapsed="0.002489"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:30.465797" elapsed="0.002531"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:50:30.468883" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:50:30.468494" elapsed="0.000417"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:30.469236" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:30.468986" elapsed="0.000308"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:30.469775" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:30.469477" elapsed="0.000324"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:30.469318" elapsed="0.000519"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:30.468967" elapsed="0.000891"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:50:30.470388" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:50:30.470015" elapsed="0.000400"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:30.470716" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:30.470485" elapsed="0.000288"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:30.471261" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:30.470954" elapsed="0.000333"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:30.470796" elapsed="0.000526"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:30.470467" elapsed="0.000876"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:50:30.471490" elapsed="0.000357"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:50:30.472320" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:50:30.472016" elapsed="0.000330"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:50:30.472499" elapsed="0.002144"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:50:30.458573" elapsed="0.016133"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:50:30.474881" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:50:30.474776" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:30.474757" elapsed="0.000192"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:50:30.483038" level="INFO">${text_normalized} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:50:30.475094" elapsed="0.007974"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:50:30.483120" elapsed="0.000032"/>
</return>
<msg time="2026-04-08T00:50:30.483296" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:50:30.435995" elapsed="0.047328"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:50:30.483386" elapsed="0.000027"/>
</return>
<msg time="2026-04-08T00:50:30.483722" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="PASS" start="2026-04-08T00:50:30.343579" elapsed="0.140188"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Json_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:30.484265" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:30.483896" elapsed="0.000490"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:30.483865" elapsed="0.000563"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:50:30.484487" elapsed="0.000071"/>
</return>
<arg>session=${session}</arg>
<arg>folder=${RESTCONF_MODULES_DIR}</arg>
<arg>verify=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Add arguments sensible for JSON data, return Get_Templated response text.
Optionally, verification against JSON data (may be iterated) is called.
Only subset of JSON data is verified and returned if JMES path is specified in
file ${folder}/jmespath.expr.</doc>
<status status="PASS" start="2026-04-08T00:50:30.337945" elapsed="0.146806"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:30.333797" elapsed="0.151065"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:30.333779" elapsed="0.151109"/>
</if>
<kw name="Resolve_Shard_Type_Class" owner="ClusterManagement">
<if>
<branch type="IF" condition="'${shard_type}' == 'config'">
<return>
<value>DistributedConfigDatastore</value>
<status status="PASS" start="2026-04-08T00:50:30.485788" elapsed="0.000071"/>
</return>
<status status="PASS" start="2026-04-08T00:50:30.485567" elapsed="0.000340"/>
</branch>
<branch type="ELSE IF" condition="'${shard_type}' == 'operational'">
<return>
<value>DistributedOperationalDatastore</value>
<status status="NOT RUN" start="2026-04-08T00:50:30.486052" elapsed="0.000045"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:50:30.485966" elapsed="0.000172"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:30.485534" elapsed="0.000680"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized shard type: ${shard_type}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:30.486446" elapsed="0.000066"/>
</kw>
<msg time="2026-04-08T00:50:30.486649" level="INFO">${type_class} = DistributedConfigDatastore</msg>
<var>${type_class}</var>
<arg>shard_type=${shard_type}</arg>
<doc>Simple lookup for class name corresponding to desired type.</doc>
<status status="PASS" start="2026-04-08T00:50:30.485148" elapsed="0.001527"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:50:30.487498" level="INFO">${cluster_index} = 2</msg>
<var>${cluster_index}</var>
<arg>${member_index}+${NODE_ROLE_INDEX_START}-1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:50:30.486844" elapsed="0.000682"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:30.488680" level="INFO">${uri} = jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-topology-config,type=DistributedConfigDatastore</msg>
<var>${uri}</var>
<arg>${JOLOKIA_READ_URI}:Category=Shards,name=member-${cluster_index}-shard-${shard_name}-${shard_type},type=${type_class}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:30.487683" elapsed="0.001025"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:30.495544" level="INFO">jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-topology-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:30.495262" elapsed="0.000366"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:30.496180" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:30.495887" elapsed="0.000376"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:50:30.505359" level="INFO">GET Request : url=http://10.30.170.131:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-topology-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-topology-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:50:30.505421" level="INFO">GET Response : url=http://10.30.170.131:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-topology-config,type=DistributedConfigDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Wed, 08 Apr 2026 00:50:30 GMT', 'Expires': 'Tue, 07 Apr 2026 23:50:30 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-2-shard-topology-config,type=DistributedConfigDatastore","type":"read"},"value":{"ReadWriteTransactionCount":0,"SnapshotIndex":-1,"InMemoryJournalLogSize":0,"ReplicatedToAllIndex":-1,"Leader":"member-1-shard-topology-config","LastIndex":-1,"RaftState":"Follower","LastCommittedTransactionTime":"1970-01-01 00:00:00.000","LastApplied":-1,"PeerAddresses":"member-1-shard-topology-config: pekko:\/\/opendaylight-cluster-data@10.30.170.48:2550\/user\/shardmanager-config\/member-1-shard-topology-config, member-3-shard-topology-config: pekko:\/\/opendaylight-cluster-data@10.30.171.110:2550\/user\/shardmanager-config\/member-3-shard-topology-config","LastLogIndex":-1,"LastLeadershipChangeTime":"2026-04-08 00:46:45.985","FollowerInitialSyncStatus":true,"FollowerInfo":[],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"259.9 μs","CurrentTerm":2,"LastTerm":-1,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-topology-config","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":0,"TxCohortCacheSize":0,"PeerVotingStates":"member-1-shard-topology-config: true, member-3-shard-topology-config: true","LastLogTerm":-1,"StatRetrievalError":null,"CommitIndex":-1,"SnapshotTerm":-1,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-2-shard-topology-config","LeadershipChangeCount":1,"InMemoryJournalDataSize":0},"timestamp":1775609430,"status":200} 
 </msg>
<msg time="2026-04-08T00:50:30.505524" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:50:30.498423" elapsed="0.007126"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:30.496407" elapsed="0.009185"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:30.505793" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:30.505638" elapsed="0.000219"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:30.496362" elapsed="0.009532"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:30.509325" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-2-shard-topology-config,type=DistributedConfigDatastore","type":"read"},"value":{"ReadWriteTransactionCount":0,"SnapshotIndex":-1,"InMemoryJournalLogSize":0,"ReplicatedToAllIndex":-1,"Leader":"member-1-shard-topology-config","LastIndex":-1,"RaftState":"Follower","LastCommittedTransactionTime":"1970-01-01 00:00:00.000","LastApplied":-1,"PeerAddresses":"member-1-shard-topology-config: pekko:\/\/opendaylight-cluster-data@10.30.170.48:2550\/user\/shardmanager-config\/member-1-shard-topology-config, member-3-shard-topology-config: pekko:\/\/opendaylight-cluster-data@10.30.171.110:2550\/user\/shardmanager-config\/member-3-shard-topology-config","LastLogIndex":-1,"LastLeadershipChangeTime":"2026-04-08 00:46:45.985","FollowerInitialSyncStatus":true,"FollowerInfo":[],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"259.9 μs","CurrentTerm":2,"LastTerm":-1,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-topology-config","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":0,"TxCohortCacheSize":0,"PeerVotingStates":"member-1-shard-topology-config: true, member-3-shard-topology-config: true","LastLogTerm":-1,"StatRetrievalError":null,"CommitIndex":-1,"SnapshotTerm":-1,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-2-shard-topology-config","LeadershipChangeCount":1,"InMemoryJournalDataSize":0},"timestamp":1775609430,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:30.506948" elapsed="0.002473"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:30.506731" elapsed="0.002726"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:30.506712" elapsed="0.002770"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:30.511992" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:30.509758" elapsed="0.002298"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:30.509539" elapsed="0.002565"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:30.509521" elapsed="0.002615"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:50:30.512898" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:50:30.512385" elapsed="0.000551"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:30.513379" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:30.513033" elapsed="0.000427"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:30.514122" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:30.513712" elapsed="0.000466"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:30.513491" elapsed="0.000739"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:30.513007" elapsed="0.001252"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:50:30.514991" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:50:30.514478" elapsed="0.000558"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:30.515501" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:30.515177" elapsed="0.000403"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:30.516292" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:30.515861" elapsed="0.000467"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:30.515612" elapsed="0.000766"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:30.515124" elapsed="0.001282"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:50:30.516610" elapsed="0.000479"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:50:30.517713" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:50:30.517337" elapsed="0.000411"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:50:30.517958" elapsed="0.002996"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:50:30.506316" elapsed="0.014725"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:50:30.521442" elapsed="0.000020"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:50:30.521287" elapsed="0.000218"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:30.521223" elapsed="0.000335"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:50:30.525247" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-2-shard-topology-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1775609...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:50:30.521878" elapsed="0.003422"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:50:30.525381" elapsed="0.000062"/>
</return>
<msg time="2026-04-08T00:50:30.525732" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-2-shard-topology-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1775609...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:50:30.490320" elapsed="0.035501"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:50:30.525921" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:50:30.526203" level="INFO">${data_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-2-shard-topology-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1775609...</msg>
<var>${data_text}</var>
<arg>uri=${uri}</arg>
<arg>session=${session}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-08T00:50:30.488921" elapsed="0.037311"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:50:30.528299" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-2-shard-topology-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1775609430, 'value...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:50:30.527263" elapsed="0.001128"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-08T00:50:30.528507" elapsed="0.000031"/>
</return>
<msg time="2026-04-08T00:50:30.528800" level="INFO">${data_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-2-shard-topology-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1775609430, 'value...</msg>
<var>${data_object}</var>
<arg>${data_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-08T00:50:30.526454" elapsed="0.002373"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:30.529309" level="INFO">${value} = {'AbortTransactionsCount': 0, 'CommitIndex': -1, 'CommittedTransactionsCount': 0, 'CurrentTerm': 2, 'FailedReadTransactionsCount': 0, 'FailedTransactionsCount': 0, 'FollowerInfo': [], 'FollowerInitial...</msg>
<var>${value}</var>
<arg>${data_object}</arg>
<arg>value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:30.528985" elapsed="0.000352"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:30.529869" level="INFO">${raft_property} = Follower</msg>
<var>${raft_property}</var>
<arg>${value}</arg>
<arg>${property}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:30.529494" elapsed="0.000401"/>
</kw>
<return>
<value>${raft_property}</value>
<status status="PASS" start="2026-04-08T00:50:30.529941" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:50:30.530092" level="INFO">${raft_state} = Follower</msg>
<var>${raft_state}</var>
<arg>RaftState</arg>
<arg>${shard_name}</arg>
<arg>${shard_type}</arg>
<arg>${member_index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft property.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T00:50:30.330868" elapsed="0.199249"/>
</kw>
<return>
<value>${raft_state}</value>
<status status="PASS" start="2026-04-08T00:50:30.530205" elapsed="0.000027"/>
</return>
<msg time="2026-04-08T00:50:30.530354" level="INFO">${raft_state} = Follower</msg>
<var>${raft_state}</var>
<arg>shard_name=${shard_name}</arg>
<arg>shard_type=${ds_type}</arg>
<arg>member_index=${index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft status.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T00:50:30.330093" elapsed="0.200285"/>
</kw>
<if>
<branch type="IF" condition="'Follower' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${follower_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-08T00:50:30.530673" elapsed="0.000192"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:30.530457" elapsed="0.000447"/>
</branch>
<branch type="ELSE IF" condition="'Leader' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${leader_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:30.531071" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:30.530928" elapsed="0.000197"/>
</branch>
<branch type="ELSE IF" condition="${validate}">
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized Raft state: ${raft_state}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:30.531306" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:30.531148" elapsed="0.000211"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:30.530440" elapsed="0.000941"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T00:50:30.329924" elapsed="0.201480"/>
</iter>
<iter>
<kw name="Get_Raft_State_Of_Shard_At_Member" owner="ClusterManagement">
<kw name="Get_Raft_Property_From_Shard_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:30.534636" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:30.533730" elapsed="0.000995"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:50:30.534804" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:50:30.535232" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:50:30.533211" elapsed="0.002048"/>
</kw>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Get_As_Json_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:30.590868" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:30.590494" elapsed="0.000403"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:50:30.591697" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:50:30.591415" elapsed="0.000360">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-08T00:50:30.591867" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:50:30.591065" elapsed="0.000827"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:50:30.592462" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:50:30.592062" elapsed="0.000427"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T00:50:30.592784" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-08T00:50:30.592933" level="INFO">${template} = /rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T00:50:30.592649" elapsed="0.000345"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:30.593410" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:30.593150" elapsed="0.000304"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:30.594402" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:30.594133" elapsed="0.000313"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-08T00:50:30.594873" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-08T00:50:30.594605" elapsed="0.000293"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:30.595238" elapsed="0.000023"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:30.595441" elapsed="0.000024"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:30.595625" elapsed="0.000021"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-08T00:50:30.595090" elapsed="0.000593"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-08T00:50:30.594951" elapsed="0.000762"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-08T00:50:30.595757" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:50:30.595915" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-08T00:50:30.593811" elapsed="0.002129"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:30.593522" elapsed="0.002450"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:30.596140" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:30.595996" elapsed="0.000216"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:30.593502" elapsed="0.002730"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:50:30.596803" level="INFO">${final_text} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:50:30.596373" elapsed="0.000457"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T00:50:30.596877" 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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="PASS" start="2026-04-08T00:50:30.589868" elapsed="0.007131"/>
</kw>
<msg time="2026-04-08T00:50:30.597052" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:50:30.578148" elapsed="0.018955"/>
</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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:30.610132" elapsed="0.000040"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:30.621663" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:30.633199" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:30.633392" elapsed="0.000021"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:30.633564" elapsed="0.000021"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:30.633959" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:30.633818" elapsed="0.000197"/>
</branch>
<status status="NOT RUN" start="2026-04-08T00:50:30.633803" elapsed="0.000235"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:30.634194" elapsed="0.000022"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:30.634362" elapsed="0.000021"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:30.634526" elapsed="0.000021"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-08T00:50:30.633774" elapsed="0.000805"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-08T00:50:30.633673" elapsed="0.000932"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:30.634748" elapsed="0.000021"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-08T00:50:30.634824" elapsed="0.000015"/>
</return>
<msg time="2026-04-08T00:50:30.634937" level="INFO">${uri} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-08T00:50:30.574201" elapsed="0.060761"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:50:30.636218" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:50:30.635962" elapsed="0.000320">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-08T00:50:30.636374" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:50:30.635625" elapsed="0.000773"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:30.636714" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:30.636470" elapsed="0.000301"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:30.637270" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:30.636961" elapsed="0.000335"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:30.636795" elapsed="0.000537"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:30.636451" elapsed="0.000902"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:50:30.639729" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:50:30.637503" elapsed="0.002253"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-08T00:50:30.639807" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:50:30.639960" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:50:30.635293" elapsed="0.004692"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:50:30.641204" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:50:30.640953" elapsed="0.000314">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-08T00:50:30.641359" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:50:30.640618" elapsed="0.000766"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-08T00:50:30.641589" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-08T00:50:30.641455" elapsed="0.000193"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:30.641436" elapsed="0.000235"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:30.641812" elapsed="0.000022"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:30.641980" elapsed="0.000020"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-08T00:50:30.642044" elapsed="0.000015"/>
</return>
<msg time="2026-04-08T00:50:30.644017" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:50:30.640299" elapsed="0.003746"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:30.645438" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:30.645191" elapsed="0.000293"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:30.645876" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:30.645634" elapsed="0.000286"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:50:30.663316" level="INFO">GET Request : url=http://10.30.171.110:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 path_url=/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node09orwbuy1e81xg3wze7ww55ua0.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:50:30.664275" level="INFO">GET Response : url=http://10.30.171.110:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Transfer-Encoding': 'chunked'} 
 body={"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","hidden-symmetric-keys","encrypted-private-keys","asymmetrically-encrypted-value-format","cms-encrypted-data-format","cleartext-private-keys","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["ssh-client-keepalives","client-ident-hostbased","client-ident-publickey","client-ident-password"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-ex... (set the log level to DEBUG or TRACE to see the full content) 
 </msg>
<msg time="2026-04-08T00:50:30.664729" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:50:30.647929" elapsed="0.016861"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:30.645987" elapsed="0.018899"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:30.665321" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:30.664948" elapsed="0.000522"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:30.645969" elapsed="0.019549"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:30.672695" level="INFO">{"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","hidden-symmetric-keys","encrypted-private-keys","asymmetrically-encrypted-value-format","cms-encrypted-data-format","cleartext-private-keys","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["ssh-client-keepalives","client-ident-hostbased","client-ident-publickey","client-ident-password"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-experimenter-types?revision=2015-10-20","namespace":"urn:opendaylight:openflowplugin:experimenter:types","conformance-type":"import"},{"name":"ietf-ip_2018-02-22","revision":"2018-02-22","schema":"/rests/modules/ietf-ip?revision=2018-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-ip","conformance-type":"import","feature":["ipv6-privacy-autoconf","ipv4-non-contiguous-netmasks"]},{"name":"ietf-tcp-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-client","conformance-type":"import","feature":["local-binding-supported","tcp-client-keepalives"]},{"name":"node-config_2014-10-15","revision":"2014-10-15","schema":"/rests/modules/node-config?revision=2014-10-15","namespace":"urn:opendaylight:module:config","conformance-type":"import"},{"name":"ietf-restconf_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf","conformance-type":"import"},{"name":"ietf-datastores_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-datastores?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-datastores","conformance-type":"import"},{"name":"ietf-yang-patch_2017-02-22","revision":"2017-02-22","schema":"/rests/modules/ietf-yang-patch?revision=2017-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-patch","conformance-type":"import"},{"name":"sal-group_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-group?revision=2013-09-18","namespace":"urn:opendaylight:group:service","conformance-type":"import"},{"name":"odl-codegen-extensions_2024-06-27","revision":"2024-06-27","schema":"/rests/modules/odl-codegen-extensions?revision=2024-06-27","namespace":"urn:opendaylight:yang:extension:codegen","conformance-type":"import"},{"name":"sal-meter_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-meter?revision=2013-09-18","namespace":"urn:opendaylight:meter:service","conformance-type":"import"},{"name":"ietf-interfaces_2018-02-20","revision":"2018-02-20","schema":"/rests/modules/ietf-interfaces?revision=2018-02-20","namespace":"urn:ietf:params:xml:ns:yang:ietf-interfaces","conformance-type":"import","feature":["pre-provisioning","if-mib","arbitrary-names"]},{"name":"opendaylight-l2-types_2013-08-27","revision":"2013-08-27","schema":"/rests/modules/opendaylight-l2-types?revision=2013-08-27","namespace":"urn:opendaylight:l2:types","conformance-type":"import"},{"name":"opendaylight-flow-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-flow-types?revision=2013-10-26","namespace":"urn:opendaylight:flow:types","conformance-type":"import"},{"name":"lldp-speaker-config_2016-05-12","revision":"2016-05-12","schema":"/rests/modules/lldp-speaker-config?revision=2016-05-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker:config","conformance-type":"import"},{"name":"aaa-cert_2015-11-26","revision":"2015-11-26","schema":"/rests/modules/aaa-cert?revision=2015-11-26","namespace":"urn:opendaylight:yang:aaa:cert","conformance-type":"import"},{"name":"openflow-action_2015-02-03","revision":"2015-02-03","schema":"/rests/modules/openflow-action?revision=2015-02-03","namespace":"urn:opendaylight:openflow:common:action","conformance-type":"import"},{"name":"openflow-approved-extensions_2016-08-02","revision":"2016-08-02","schema":"/rests/modules/openflow-approved-extensions?revision=2016-08-02","namespace":"urn:opendaylight:openflow:approved:extensions","conformance-type":"import"},{"name":"nc-notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/nc-notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netmod:notification","conformance-type":"import"},{"name":"ietf-netconf-nmda_2019-01-07","revision":"2019-01-07","schema":"/rests/modules/ietf-netconf-nmda?revision=2019-01-07","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-nmda","conformance-type":"import","feature":["with-defaults","origin"]},{"name":"ietf-tcp-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-common","conformance-type":"import","feature":["keepalives-supported"]},{"name":"network-topology_2013-10-21","revision":"2013-10-21","schema":"/rests/modules/network-topology?revision=2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:network-topology","conformance-type":"import"},{"name":"aaa-encrypt-service-config_2024-02-02","revision":"2024-02-02","schema":"/rests/modules/aaa-encrypt-service-config?revision=2024-02-02","namespace":"config:aaa:authn:encrypt:service:config","conformance-type":"import"},{"name":"openflow-instruction_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-instruction?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:instruction","conformance-type":"import"},{"name":"ietf-tls-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-client","conformance-type":"import","feature":["client-ident-x509-cert","server-auth-x509-cert"]},{"name":"opendaylight-group-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-group-statistics?revision=2013-11-11","namespace":"urn:opendaylight:group:statistics","conformance-type":"import"},{"name":"cluster-admin_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/cluster-admin?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:cluster:admin","conformance-type":"import"},{"name":"opendaylight-flow-statistics_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-flow-statistics?revision=2013-08-19","namespace":"urn:opendaylight:flow:statistics","conformance-type":"import"},{"name":"opendaylight-table-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-table-types?revision=2013-10-26","namespace":"urn:opendaylight:table:types","conformance-type":"import"},{"name":"forwarding-rules-manager-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/forwarding-rules-manager-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:forwardingrules-manager:config","conformance-type":"import"},{"name":"odl-srm-types_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-types?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:types","conformance-type":"import"},{"name":"ietf-x509-cert-to-name_2014-12-10","revision":"2014-12-10","schema":"/rests/modules/ietf-x509-cert-to-name?revision=2014-12-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-x509-cert-to-name","conformance-type":"import"},{"name":"flow-node-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-node-inventory?revision=2013-08-19","namespace":"urn:opendaylight:flow:inventory","conformance-type":"import"},{"name":"flow-errors_2013-11-16","revision":"2013-11-16","schema":"/rests/modules/flow-errors?revision=2013-11-16","namespace":"urn:opendaylight:flow:errors","conformance-type":"import"},{"name":"ietf-netconf_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:netconf:base:1.0","conformance-type":"import","feature":["xpath","url","rollback-on-error","validate","startup","candidate","confirmed-commit","writable-running"]},{"name":"iana-ssh-public-key-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-public-key-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-public-key-algs","conformance-type":"import"},{"name":"aaa-cert-mdsal_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/aaa-cert-mdsal?revision=2016-03-21","namespace":"urn:opendaylight:yang:aaa:cert:mdsal","conformance-type":"import"},{"name":"odl-device-notification_2024-02-18","revision":"2024-02-18","schema":"/rests/modules/odl-device-notification?revision=2024-02-18","namespace":"urn:opendaylight:device:notification","conformance-type":"import"},{"name":"ietf-origin_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-origin?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-origin","conformance-type":"import"},{"name":"openflow-augments_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-augments?revision=2015-02-25","namespace":"urn:opendaylight:openflow:augments","conformance-type":"import"},{"name":"iana-ssh-encryption-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-encryption-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-encryption-algs","conformance-type":"import"},{"name":"ietf-truststore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-truststore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-truststore","conformance-type":"import","feature":["inline-definitions-supported"]},{"name":"distributed-datastore-provider_2025-01-30","revision":"2025-01-30","schema":"/rests/modules/distributed-datastore-provider?revision=2025-01-30","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:distributed-datastore-provider","conformance-type":"import"},{"name":"opendaylight-group-types_2013-10-18","revision":"2013-10-18","schema":"/rests/modules/opendaylight-group-types?revision=2013-10-18","namespace":"urn:opendaylight:group:types","conformance-type":"import"},{"name":"sal-remote-augment_2023-11-03","revision":"2023-11-03","schema":"/rests/modules/sal-remote-augment?revision=2023-11-03","namespace":"urn:sal:restconf:event:subscription","conformance-type":"import"},{"name":"opendaylight-ipv6-arbitrary-bitmask-fields_2016-02-24","revision":"2016-02-24","schema":"/rests/modules/opendaylight-ipv6-arbitrary-bitmask-fields?revision=2016-02-24","namespace":"urn:opendaylight:opendaylight-ipv6-arbitrary-bitmask-fields","conformance-type":"import"},{"name":"sal-flows-batch_2016-03-14","revision":"2016-03-14","schema":"/rests/modules/sal-flows-batch?revision=2016-03-14","namespace":"urn:opendaylight:flows:service","conformance-type":"import"},{"name":"ietf-tls-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-common","conformance-type":"import","feature":["tls12","hello-params","tls13"]},{"name":"openflow-types_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-types?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:types","conformance-type":"import"},{"name":"ietf-netconf-with-defaults_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf-with-defaults?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults","conformance-type":"import"},{"name":"odl-srm-ops_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-ops?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:ops","conformance-type":"import"},{"name":"odl-general-entity_2015-09-30","revision":"2015-09-30","schema":"/rests/modules/odl-general-entity?revision=2015-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:mdsal:core:general-entity","conformance-type":"import"},{"name":"iana-ssh-key-exchange-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-key-exchange-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-key-exchange-algs","conformance-type":"import"},{"name":"node-ssl-connection-error_2019-07-23","revision":"2019-07-23","schema":"/rests/modules/node-ssl-connection-error?revision=2019-07-23","namespace":"urn:opendaylight:node-ssl-connection-error:service","conformance-type":"import"},{"name":"openflow-protocol_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-protocol?revision=2013-07-31","namespace":"urn:opendaylight:openflow:protocol","conformance-type":"import"},{"name":"ietf-udp-server_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-server?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-server","conformance-type":"import"},{"name":"ietf-keystore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-keystore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-keystore","conformance-type":"import","feature":["asymmetric-keys","inline-definitions-supported"]},{"name":"aaa_2016-12-14","revision":"2016-12-14","schema":"/rests/modules/aaa?revision=2016-12-14","namespace":"urn:opendaylight:params:xml:ns:yang:aaa","conformance-type":"import"},{"name":"aaa-cert-rpc_2015-12-15","revision":"2015-12-15","schema":"/rests/modules/aaa-cert-rpc?revision=2015-12-15","namespace":"urn:opendaylight:yang:aaa:cert:rpc","conformance-type":"import"},{"name":"system-notifications_2013-09-27","revision":"2013-09-27","schema":"/rests/modules/system-notifications?revision=2013-09-27","namespace":"urn:opendaylight:openflow:system","conformance-type":"import"},{"name":"sal-flat-batch_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/sal-flat-batch?revision=2016-03-21","namespace":"urn:opendaylight:flat-batch:service","conformance-type":"import"},{"name":"notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netconf:notification:1.0","conformance-type":"import"},{"name":"sal-remote_2014-01-14","revision":"2014-01-14","schema":"/rests/modules/sal-remote?revision=2014-01-14","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:remote","conformance-type":"import"},{"name":"yang-ext_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/yang-ext?revision=2013-07-09","namespace":"urn:opendaylight:yang:extension:yang-ext","conformance-type":"import"},{"name":"opendaylight-multipart-types_2017-01-12","revision":"2017-01-12","schema":"/rests/modules/opendaylight-multipart-types?revision=2017-01-12","namespace":"urn:opendaylight:multipart:types","conformance-type":"import"},{"name":"opendaylight-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-inventory?revision=2013-08-19","namespace":"urn:opendaylight:inventory","conformance-type":"import"},{"name":"sal-queue_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-queue?revision=2015-03-05","namespace":"urn:opendaylight:queue:service","conformance-type":"import"},{"name":"sal-groups-batch_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/sal-groups-batch?revision=2016-03-15","namespace":"urn:opendaylight:groups:service","conformance-type":"import"},{"name":"arbitrator-reconcile_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/arbitrator-reconcile?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:arbitrator-reconcile:service","conformance-type":"import"},{"name":"ietf-yang-metadata_2016-08-05","revision":"2016-08-05","schema":"/rests/modules/ietf-yang-metadata?revision=2016-08-05","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-metadata","conformance-type":"import"},{"name":"opendaylight-arbitrary-bitmask-fields_2016-01-30","revision":"2016-01-30","schema":"/rests/modules/opendaylight-arbitrary-bitmask-fields?revision=2016-01-30","namespace":"urn:opendaylight:arbitrary:bitmask:fields","conformance-type":"import"},{"name":"ietf-udp-client_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-client?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-client","conformance-type":"import","feature":["local-binding"]},{"name":"opendaylight-meter-types_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/opendaylight-meter-types?revision=2013-09-18","namespace":"urn:opendaylight:meter:types","conformance-type":"import"},{"name":"opendaylight-action-types_2013-11-12","revision":"2013-11-12","schema":"/rests/modules/opendaylight-action-types?revision=2013-11-12","namespace":"urn:opendaylight:action:types","conformance-type":"import"},{"name":"sal-role_2015-07-27","revision":"2015-07-27","schema":"/rests/modules/sal-role?revision=2015-07-27","namespace":"urn:opendaylight:role:service","conformance-type":"import"},{"name":"openflow-provider-config_2016-05-10","revision":"2016-05-10","schema":"/rests/modules/openflow-provider-config?revision=2016-05-10","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:provider:config","conformance-type":"import"},{"name":"odl-serviceutils-upgrade_2018-07-02","revision":"2018-07-02","schema":"/rests/modules/odl-serviceutils-upgrade?revision=2018-07-02","namespace":"urn:opendaylight:serviceutils:upgrade","conformance-type":"import"},{"name":"opendaylight-match-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-match-types?revision=2013-10-26","namespace":"urn:opendaylight:model:match:types","conformance-type":"import"},{"name":"ietf-restconf-server_2024-08-14","revision":"2024-08-14","schema":"/rests/modules/ietf-restconf-server?revision=2024-08-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-server","conformance-type":"import","feature":["http-listen","https-listen"]},{"name":"reconciliation-result-state_2017-07-13","revision":"2017-07-13","schema":"/rests/modules/reconciliation-result-state?revision=2017-07-13","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:rf:state","conformance-type":"import"},{"name":"onf-extensions_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/onf-extensions?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf","conformance-type":"import"},{"name":"sal-table_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/sal-table?revision=2013-10-26","namespace":"urn:opendaylight:table:service","conformance-type":"import"},{"name":"iana-http-versions_2026-02-04","revision":"2026-02-04","schema":"/rests/modules/iana-http-versions?revision=2026-02-04","namespace":"urn:ietf:params:xml:ns:yang:iana-http-versions","conformance-type":"import"},{"name":"opendaylight-direct-statistics_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/opendaylight-direct-statistics?revision=2016-05-11","namespace":"urn:opendaylight:direct:statistics","conformance-type":"import"},{"name":"opendaylight-port-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-port-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:port","conformance-type":"import"},{"name":"sal-async-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/sal-async-config?revision=2017-06-19","namespace":"urn:opendaylight:async-config:service","conformance-type":"import"},{"name":"aaa-password-service-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-password-service-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:password:service:config","conformance-type":"import"},{"name":"ietf-yang-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-yang-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-types","conformance-type":"import"},{"name":"opendaylight-queue-statistics_2013-12-16","revision":"2013-12-16","schema":"/rests/modules/opendaylight-queue-statistics?revision=2013-12-16","namespace":"urn:opendaylight:queue:statistics","conformance-type":"import"},{"name":"sal-bundle_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/sal-bundle?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf:bundle:service","conformance-type":"import"},{"name":"ietf-restconf-subscribed-notifications_2019-11-17","revision":"2019-11-17","schema":"/rests/modules/ietf-restconf-subscribed-notifications?revision=2019-11-17","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-subscribed-notifications","conformance-type":"import"},{"name":"sal-meters-batch_2016-03-16","revision":"2016-03-16","schema":"/rests/modules/sal-meters-batch?revision=2016-03-16","namespace":"urn:opendaylight:meters:service","conformance-type":"import"},{"name":"odl-entity-owners","revision":"","schema":"/rests/modules/odl-entity-owners","namespace":"urn:opendaylight:params:xml:ns:yang:controller:entity-owners","conformance-type":"import"},{"name":"sal-experimenter-mp-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-mp-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-mp-message:service","conformance-type":"import"},{"name":"packet-processing_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/packet-processing?revision=2013-07-09","namespace":"urn:opendaylight:packet:service","conformance-type":"import"},{"name":"openflow-configuration_2014-06-30","revision":"2014-06-30","schema":"/rests/modules/openflow-configuration?revision=2014-06-30","namespace":"urn:opendaylight:openflow:config","conformance-type":"import"},{"name":"odl-srm-rpcs_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-rpcs?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:rpc","conformance-type":"import"},{"name":"ietf-netconf-acm_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-netconf-acm?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-acm","conformance-type":"import"},{"name":"iana-crypt-hash_2014-08-06","revision":"2014-08-06","schema":"/rests/modules/iana-crypt-hash?revision=2014-08-06","namespace":"urn:ietf:params:xml:ns:yang:iana-crypt-hash","conformance-type":"import","feature":["crypt-hash-sha-512","crypt-hash-sha-256","crypt-hash-md5"]},{"name":"openflow-extensible-match_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-extensible-match?revision=2015-02-25","namespace":"urn:opendaylight:openflow:oxm","conformance-type":"import"}],"module-set-id":"2"}}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:30.667824" elapsed="0.005198"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:30.667309" elapsed="0.005748"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:30.667264" elapsed="0.005819"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:30.675536" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:30.673378" elapsed="0.002204"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:30.673140" elapsed="0.002476"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:30.673122" elapsed="0.002518"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:50:30.676194" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:50:30.675800" elapsed="0.000423"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:30.676527" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:30.676293" elapsed="0.000291"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:30.677060" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:30.676765" elapsed="0.000320"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:30.676607" elapsed="0.000514"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:30.676275" elapsed="0.000867"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:50:30.677677" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:50:30.677320" elapsed="0.000383"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:30.678003" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:30.677772" elapsed="0.000288"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:30.678547" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:30.678256" elapsed="0.000317"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:30.678083" elapsed="0.000653"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:30.677754" elapsed="0.001007"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:50:30.678910" elapsed="0.000415"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:50:30.679787" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:50:30.679509" elapsed="0.000304"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:50:30.679967" elapsed="0.002166"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:50:30.666331" elapsed="0.015880"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:50:30.682386" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:50:30.682280" elapsed="0.000149"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:30.682262" elapsed="0.000189"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:50:30.690498" level="INFO">${text_normalized} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:50:30.682593" elapsed="0.007935"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:50:30.690581" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:50:30.690739" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:50:30.644364" elapsed="0.046402"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:50:30.690829" elapsed="0.000027"/>
</return>
<msg time="2026-04-08T00:50:30.691142" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="PASS" start="2026-04-08T00:50:30.549752" elapsed="0.141449"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Json_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:30.691682" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:30.691330" elapsed="0.000471"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:30.691298" elapsed="0.000545"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:50:30.691903" elapsed="0.000071"/>
</return>
<arg>session=${session}</arg>
<arg>folder=${RESTCONF_MODULES_DIR}</arg>
<arg>verify=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Add arguments sensible for JSON data, return Get_Templated response text.
Optionally, verification against JSON data (may be iterated) is called.
Only subset of JSON data is verified and returned if JMES path is specified in
file ${folder}/jmespath.expr.</doc>
<status status="PASS" start="2026-04-08T00:50:30.539770" elapsed="0.152412"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:30.535331" elapsed="0.156964"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:30.535312" elapsed="0.157009"/>
</if>
<kw name="Resolve_Shard_Type_Class" owner="ClusterManagement">
<if>
<branch type="IF" condition="'${shard_type}' == 'config'">
<return>
<value>DistributedConfigDatastore</value>
<status status="PASS" start="2026-04-08T00:50:30.693215" elapsed="0.000070"/>
</return>
<status status="PASS" start="2026-04-08T00:50:30.692979" elapsed="0.000355"/>
</branch>
<branch type="ELSE IF" condition="'${shard_type}' == 'operational'">
<return>
<value>DistributedOperationalDatastore</value>
<status status="NOT RUN" start="2026-04-08T00:50:30.693480" elapsed="0.000044"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:50:30.693393" elapsed="0.000173"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:30.692947" elapsed="0.000677"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized shard type: ${shard_type}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:30.693850" elapsed="0.000065"/>
</kw>
<msg time="2026-04-08T00:50:30.694052" level="INFO">${type_class} = DistributedConfigDatastore</msg>
<var>${type_class}</var>
<arg>shard_type=${shard_type}</arg>
<doc>Simple lookup for class name corresponding to desired type.</doc>
<status status="PASS" start="2026-04-08T00:50:30.692584" elapsed="0.001494"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:50:30.694894" level="INFO">${cluster_index} = 3</msg>
<var>${cluster_index}</var>
<arg>${member_index}+${NODE_ROLE_INDEX_START}-1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:50:30.694264" elapsed="0.000657"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:30.696060" level="INFO">${uri} = jolokia/read/org.opendaylight.controller:Category=Shards,name=member-3-shard-topology-config,type=DistributedConfigDatastore</msg>
<var>${uri}</var>
<arg>${JOLOKIA_READ_URI}:Category=Shards,name=member-${cluster_index}-shard-${shard_name}-${shard_type},type=${type_class}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:30.695084" elapsed="0.001004"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:30.702918" level="INFO">jolokia/read/org.opendaylight.controller:Category=Shards,name=member-3-shard-topology-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:30.702627" elapsed="0.000374"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:30.703554" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:30.703260" elapsed="0.000376"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:50:30.711606" level="INFO">GET Request : url=http://10.30.171.110:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-3-shard-topology-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-3-shard-topology-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:50:30.711665" level="INFO">GET Response : url=http://10.30.171.110:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-3-shard-topology-config,type=DistributedConfigDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Wed, 08 Apr 2026 00:50:30 GMT', 'Expires': 'Tue, 07 Apr 2026 23:50:30 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-3-shard-topology-config,type=DistributedConfigDatastore","type":"read"},"value":{"ReadWriteTransactionCount":0,"SnapshotIndex":-1,"InMemoryJournalLogSize":0,"ReplicatedToAllIndex":-1,"Leader":"member-1-shard-topology-config","LastIndex":-1,"RaftState":"Follower","LastApplied":-1,"LastCommittedTransactionTime":"1970-01-01 00:00:00.000","PeerAddresses":"member-2-shard-topology-config: pekko:\/\/opendaylight-cluster-data@10.30.170.131:2550\/user\/shardmanager-config\/member-2-shard-topology-config, member-1-shard-topology-config: pekko:\/\/opendaylight-cluster-data@10.30.170.48:2550\/user\/shardmanager-config\/member-1-shard-topology-config","LastLogIndex":-1,"LastLeadershipChangeTime":"2026-04-08 00:46:45.985","FollowerInitialSyncStatus":true,"FollowerInfo":[],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"185.6 μs","CurrentTerm":2,"LastTerm":-1,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-topology-config","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":0,"TxCohortCacheSize":0,"PeerVotingStates":"member-2-shard-topology-config: true, member-1-shard-topology-config: true","LastLogTerm":-1,"StatRetrievalError":null,"CommitIndex":-1,"SnapshotTerm":-1,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-3-shard-topology-config","LeadershipChangeCount":1,"InMemoryJournalDataSize":0},"timestamp":1775609430,"status":200} 
 </msg>
<msg time="2026-04-08T00:50:30.711768" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:50:30.705824" elapsed="0.005969"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:30.703780" elapsed="0.008055"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:30.712042" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:30.711882" elapsed="0.000224"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:30.703735" elapsed="0.008408"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:30.715619" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-3-shard-topology-config,type=DistributedConfigDatastore","type":"read"},"value":{"ReadWriteTransactionCount":0,"SnapshotIndex":-1,"InMemoryJournalLogSize":0,"ReplicatedToAllIndex":-1,"Leader":"member-1-shard-topology-config","LastIndex":-1,"RaftState":"Follower","LastApplied":-1,"LastCommittedTransactionTime":"1970-01-01 00:00:00.000","PeerAddresses":"member-2-shard-topology-config: pekko:\/\/opendaylight-cluster-data@10.30.170.131:2550\/user\/shardmanager-config\/member-2-shard-topology-config, member-1-shard-topology-config: pekko:\/\/opendaylight-cluster-data@10.30.170.48:2550\/user\/shardmanager-config\/member-1-shard-topology-config","LastLogIndex":-1,"LastLeadershipChangeTime":"2026-04-08 00:46:45.985","FollowerInitialSyncStatus":true,"FollowerInfo":[],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"185.6 μs","CurrentTerm":2,"LastTerm":-1,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-topology-config","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":0,"TxCohortCacheSize":0,"PeerVotingStates":"member-2-shard-topology-config: true, member-1-shard-topology-config: true","LastLogTerm":-1,"StatRetrievalError":null,"CommitIndex":-1,"SnapshotTerm":-1,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-3-shard-topology-config","LeadershipChangeCount":1,"InMemoryJournalDataSize":0},"timestamp":1775609430,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:30.713261" elapsed="0.002450"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:30.712986" elapsed="0.002761"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:30.712968" elapsed="0.002805"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:30.718264" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:30.716055" elapsed="0.002256"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:30.715831" elapsed="0.002515"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:30.715813" elapsed="0.002557"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:50:30.718905" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:50:30.718532" elapsed="0.000400"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:30.719258" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:30.719002" elapsed="0.000343"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:30.719833" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:30.719534" elapsed="0.000325"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:30.719371" elapsed="0.000524"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:30.718984" elapsed="0.000932"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:50:30.720662" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:50:30.720134" elapsed="0.000565"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:30.721124" elapsed="0.000048"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:30.720797" elapsed="0.000429"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:30.721891" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:30.721484" elapsed="0.000444"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:30.721259" elapsed="0.000719"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:30.720771" elapsed="0.001237"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:50:30.722235" elapsed="0.000482"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:50:30.724496" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:50:30.722954" elapsed="0.001581"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:50:30.724754" elapsed="0.003111"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:50:30.712568" elapsed="0.015386"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:50:30.728380" elapsed="0.000021"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:50:30.728221" elapsed="0.000224"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:30.728128" elapsed="0.000371"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:50:30.732459" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-3-shard-topology-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1775609...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:50:30.728827" elapsed="0.003685"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:50:30.732595" elapsed="0.000063"/>
</return>
<msg time="2026-04-08T00:50:30.732953" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-3-shard-topology-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1775609...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:50:30.697664" elapsed="0.035379"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:50:30.733147" elapsed="0.000052"/>
</return>
<msg time="2026-04-08T00:50:30.733440" level="INFO">${data_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-3-shard-topology-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1775609...</msg>
<var>${data_text}</var>
<arg>uri=${uri}</arg>
<arg>session=${session}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-08T00:50:30.696330" elapsed="0.037138"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:50:30.735548" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-3-shard-topology-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1775609430, 'value...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:50:30.734506" elapsed="0.001135"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-08T00:50:30.735762" elapsed="0.000031"/>
</return>
<msg time="2026-04-08T00:50:30.736065" level="INFO">${data_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-3-shard-topology-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1775609430, 'value...</msg>
<var>${data_object}</var>
<arg>${data_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-08T00:50:30.733692" elapsed="0.002402"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:30.736579" level="INFO">${value} = {'AbortTransactionsCount': 0, 'CommitIndex': -1, 'CommittedTransactionsCount': 0, 'CurrentTerm': 2, 'FailedReadTransactionsCount': 0, 'FailedTransactionsCount': 0, 'FollowerInfo': [], 'FollowerInitial...</msg>
<var>${value}</var>
<arg>${data_object}</arg>
<arg>value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:30.736269" elapsed="0.000339"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:30.737144" level="INFO">${raft_property} = Follower</msg>
<var>${raft_property}</var>
<arg>${value}</arg>
<arg>${property}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:30.736767" elapsed="0.000431"/>
</kw>
<return>
<value>${raft_property}</value>
<status status="PASS" start="2026-04-08T00:50:30.737247" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:50:30.737404" level="INFO">${raft_state} = Follower</msg>
<var>${raft_state}</var>
<arg>RaftState</arg>
<arg>${shard_name}</arg>
<arg>${shard_type}</arg>
<arg>${member_index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft property.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T00:50:30.532526" elapsed="0.204903"/>
</kw>
<return>
<value>${raft_state}</value>
<status status="PASS" start="2026-04-08T00:50:30.737488" elapsed="0.000026"/>
</return>
<msg time="2026-04-08T00:50:30.737637" level="INFO">${raft_state} = Follower</msg>
<var>${raft_state}</var>
<arg>shard_name=${shard_name}</arg>
<arg>shard_type=${ds_type}</arg>
<arg>member_index=${index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft status.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T00:50:30.531761" elapsed="0.205901"/>
</kw>
<if>
<branch type="IF" condition="'Follower' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${follower_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-08T00:50:30.737956" elapsed="0.000191"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:30.737741" elapsed="0.000462"/>
</branch>
<branch type="ELSE IF" condition="'Leader' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${leader_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:30.738372" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:30.738228" elapsed="0.000199"/>
</branch>
<branch type="ELSE IF" condition="${validate}">
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized Raft state: ${raft_state}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:30.738591" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:30.738451" elapsed="0.000192"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:30.737723" elapsed="0.000942"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T00:50:30.531568" elapsed="0.207121"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-08T00:50:30.130930" elapsed="0.607789"/>
</for>
<return>
<value>${leader_list}</value>
<value>${follower_list}</value>
<status status="PASS" start="2026-04-08T00:50:30.738759" elapsed="0.000027"/>
</return>
<msg time="2026-04-08T00:50:30.738959" level="INFO">${leader_list} = [1]</msg>
<msg time="2026-04-08T00:50:30.739004" level="INFO">${follower_list} = [2, 3]</msg>
<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="PASS" start="2026-04-08T00:50:30.126666" elapsed="0.612361"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T00:50:30.739489" level="INFO">Length is 1.</msg>
<msg time="2026-04-08T00:50:30.739564" level="INFO">${leader_count} = 1</msg>
<var>${leader_count}</var>
<arg>${leader_list}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T00:50:30.739213" elapsed="0.000374"/>
</kw>
<if>
<branch type="IF" condition="${leader_count} &lt; 1">
<kw name="Fail" owner="BuiltIn">
<arg>No leader found.</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:30.739866" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:30.739656" elapsed="0.000262"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:30.739638" elapsed="0.000303"/>
</if>
<kw name="Length Should Be" owner="BuiltIn">
<msg time="2026-04-08T00:50:30.742047" level="INFO">Length is 1.</msg>
<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="PASS" start="2026-04-08T00:50:30.740073" elapsed="0.002021"/>
</kw>
<kw name="Get From List" owner="Collections">
<msg time="2026-04-08T00:50:30.742456" level="INFO">${leader} = 1</msg>
<var>${leader}</var>
<arg>${leader_list}</arg>
<arg>0</arg>
<doc>Returns the value specified with an ``index`` from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:50:30.742271" elapsed="0.000211"/>
</kw>
<return>
<value>${leader}</value>
<value>${follower_list}</value>
<status status="PASS" start="2026-04-08T00:50:30.742528" elapsed="0.000028"/>
</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="PASS" start="2026-04-08T00:50:30.079355" elapsed="0.663326"/>
</kw>
<var name="${shard_name}">topology</var>
<status status="PASS" start="2026-04-08T00:50:30.079038" elapsed="0.663689"/>
</iter>
<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-04-08T00:50:30.747123" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:50:30.746740" elapsed="0.000410"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:50:30.747687" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:50:30.747375" elapsed="0.000338"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:50:30.747758" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:50:30.747910" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:50:30.746371" elapsed="0.001563"/>
</kw>
<kw name="Sort List" owner="Collections">
<arg>${index_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="PASS" start="2026-04-08T00:50:30.748084" elapsed="0.000168"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:50:30.748742" level="INFO">${ds_type} = config</msg>
<var>${ds_type}</var>
<arg>'${shard_type}' != 'config'</arg>
<arg>operational</arg>
<arg>config</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:50:30.748410" elapsed="0.000359"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:50:30.749176" level="INFO">${leader_list} = []</msg>
<var>${leader_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:50:30.748925" elapsed="0.000279"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:50:30.749587" level="INFO">${follower_list} = []</msg>
<var>${follower_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:50:30.749352" elapsed="0.000261"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_Raft_State_Of_Shard_At_Member" owner="ClusterManagement">
<kw name="Get_Raft_Property_From_Shard_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:30.752874" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:30.752031" elapsed="0.000932"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:50:30.753044" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:50:30.753324" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:50:30.751500" 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-04-08T00:50:30.801586" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:30.801212" elapsed="0.000402"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:50:30.802356" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:50:30.802103" elapsed="0.000324">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-08T00:50:30.802518" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:50:30.801775" elapsed="0.000767"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:50:30.803082" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:50:30.802704" elapsed="0.000404"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T00:50:30.803437" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-08T00:50:30.803592" level="INFO">${template} = /rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T00:50:30.803301" elapsed="0.000316"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:30.804016" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:30.803770" elapsed="0.000290"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:30.805001" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:30.804751" elapsed="0.000294"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-08T00:50:30.805485" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-08T00:50:30.805218" elapsed="0.000293"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:30.805819" elapsed="0.000023"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:30.806018" elapsed="0.000024"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:30.806204" elapsed="0.000022"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-08T00:50:30.805689" elapsed="0.000611"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-08T00:50:30.805558" elapsed="0.000773"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-08T00:50:30.806375" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:50:30.806534" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-08T00:50:30.804436" elapsed="0.002123"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:30.804129" elapsed="0.002461"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:30.806760" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:30.806615" elapsed="0.000201"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:30.804109" elapsed="0.002727"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:50:30.807431" level="INFO">${final_text} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:50:30.806974" elapsed="0.000485"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T00:50:30.807507" elapsed="0.000028"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="PASS" start="2026-04-08T00:50:30.800590" elapsed="0.007039"/>
</kw>
<msg time="2026-04-08T00:50:30.807681" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:50:30.788744" elapsed="0.018988"/>
</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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:30.819352" elapsed="0.000029"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:30.830769" 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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:30.842330" elapsed="0.000029"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:30.842523" elapsed="0.000022"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:30.842693" elapsed="0.000020"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:30.843046" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:30.842907" elapsed="0.000194"/>
</branch>
<status status="NOT RUN" start="2026-04-08T00:50:30.842892" elapsed="0.000246"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:30.843302" elapsed="0.000022"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:30.843471" elapsed="0.000020"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:30.843633" elapsed="0.000020"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-08T00:50:30.842863" elapsed="0.000823"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-08T00:50:30.842766" elapsed="0.000946"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:30.843854" elapsed="0.000021"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-08T00:50:30.843964" elapsed="0.000017"/>
</return>
<msg time="2026-04-08T00:50:30.844081" level="INFO">${uri} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-08T00:50:30.784778" elapsed="0.059328"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:50:30.845348" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:50:30.845096" elapsed="0.000315">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-08T00:50:30.845501" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:50:30.844761" elapsed="0.000765"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:30.845839" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:30.845597" elapsed="0.000299"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:30.846392" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:30.846084" elapsed="0.000334"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:30.845920" elapsed="0.000533"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:30.845579" elapsed="0.000896"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:50:30.848688" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:50:30.846622" elapsed="0.002092"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-08T00:50:30.848765" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:50:30.848916" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:50:30.844440" elapsed="0.004501"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:50:30.850126" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:50:30.849895" elapsed="0.000310">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-08T00:50:30.850299" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:50:30.849567" elapsed="0.000756"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-08T00:50:30.850527" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-08T00:50:30.850393" elapsed="0.000191"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:30.850374" elapsed="0.000234"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:30.850750" elapsed="0.000022"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:30.850917" elapsed="0.000020"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-08T00:50:30.850980" elapsed="0.000015"/>
</return>
<msg time="2026-04-08T00:50:30.852907" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:50:30.849249" elapsed="0.003684"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:30.854306" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:30.854042" elapsed="0.000309"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:30.854736" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:30.854499" elapsed="0.000279"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:50:30.868707" level="INFO">GET Request : url=http://10.30.170.48:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 path_url=/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01nfu2ssrokr1es5zgka78rw970.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:50:30.869407" level="INFO">GET Response : url=http://10.30.170.48:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Transfer-Encoding': 'chunked'} 
 body={"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","hidden-symmetric-keys","encrypted-private-keys","asymmetrically-encrypted-value-format","cms-encrypted-data-format","cleartext-private-keys","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["ssh-client-keepalives","client-ident-hostbased","client-ident-publickey","client-ident-password"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-ex... (set the log level to DEBUG or TRACE to see the full content) 
 </msg>
<msg time="2026-04-08T00:50:30.869876" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:50:30.856784" elapsed="0.013152"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:30.854844" elapsed="0.015187"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:30.870462" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:30.870090" elapsed="0.000516"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:30.854826" elapsed="0.015828"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:30.878748" level="INFO">{"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","hidden-symmetric-keys","encrypted-private-keys","asymmetrically-encrypted-value-format","cms-encrypted-data-format","cleartext-private-keys","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["ssh-client-keepalives","client-ident-hostbased","client-ident-publickey","client-ident-password"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-experimenter-types?revision=2015-10-20","namespace":"urn:opendaylight:openflowplugin:experimenter:types","conformance-type":"import"},{"name":"ietf-ip_2018-02-22","revision":"2018-02-22","schema":"/rests/modules/ietf-ip?revision=2018-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-ip","conformance-type":"import","feature":["ipv6-privacy-autoconf","ipv4-non-contiguous-netmasks"]},{"name":"ietf-tcp-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-client","conformance-type":"import","feature":["local-binding-supported","tcp-client-keepalives"]},{"name":"node-config_2014-10-15","revision":"2014-10-15","schema":"/rests/modules/node-config?revision=2014-10-15","namespace":"urn:opendaylight:module:config","conformance-type":"import"},{"name":"ietf-restconf_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf","conformance-type":"import"},{"name":"ietf-datastores_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-datastores?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-datastores","conformance-type":"import"},{"name":"ietf-yang-patch_2017-02-22","revision":"2017-02-22","schema":"/rests/modules/ietf-yang-patch?revision=2017-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-patch","conformance-type":"import"},{"name":"sal-group_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-group?revision=2013-09-18","namespace":"urn:opendaylight:group:service","conformance-type":"import"},{"name":"odl-codegen-extensions_2024-06-27","revision":"2024-06-27","schema":"/rests/modules/odl-codegen-extensions?revision=2024-06-27","namespace":"urn:opendaylight:yang:extension:codegen","conformance-type":"import"},{"name":"sal-meter_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-meter?revision=2013-09-18","namespace":"urn:opendaylight:meter:service","conformance-type":"import"},{"name":"ietf-interfaces_2018-02-20","revision":"2018-02-20","schema":"/rests/modules/ietf-interfaces?revision=2018-02-20","namespace":"urn:ietf:params:xml:ns:yang:ietf-interfaces","conformance-type":"import","feature":["pre-provisioning","if-mib","arbitrary-names"]},{"name":"opendaylight-l2-types_2013-08-27","revision":"2013-08-27","schema":"/rests/modules/opendaylight-l2-types?revision=2013-08-27","namespace":"urn:opendaylight:l2:types","conformance-type":"import"},{"name":"opendaylight-flow-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-flow-types?revision=2013-10-26","namespace":"urn:opendaylight:flow:types","conformance-type":"import"},{"name":"lldp-speaker-config_2016-05-12","revision":"2016-05-12","schema":"/rests/modules/lldp-speaker-config?revision=2016-05-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker:config","conformance-type":"import"},{"name":"aaa-cert_2015-11-26","revision":"2015-11-26","schema":"/rests/modules/aaa-cert?revision=2015-11-26","namespace":"urn:opendaylight:yang:aaa:cert","conformance-type":"import"},{"name":"openflow-action_2015-02-03","revision":"2015-02-03","schema":"/rests/modules/openflow-action?revision=2015-02-03","namespace":"urn:opendaylight:openflow:common:action","conformance-type":"import"},{"name":"openflow-approved-extensions_2016-08-02","revision":"2016-08-02","schema":"/rests/modules/openflow-approved-extensions?revision=2016-08-02","namespace":"urn:opendaylight:openflow:approved:extensions","conformance-type":"import"},{"name":"nc-notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/nc-notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netmod:notification","conformance-type":"import"},{"name":"ietf-netconf-nmda_2019-01-07","revision":"2019-01-07","schema":"/rests/modules/ietf-netconf-nmda?revision=2019-01-07","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-nmda","conformance-type":"import","feature":["with-defaults","origin"]},{"name":"ietf-tcp-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-common","conformance-type":"import","feature":["keepalives-supported"]},{"name":"network-topology_2013-10-21","revision":"2013-10-21","schema":"/rests/modules/network-topology?revision=2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:network-topology","conformance-type":"import"},{"name":"aaa-encrypt-service-config_2024-02-02","revision":"2024-02-02","schema":"/rests/modules/aaa-encrypt-service-config?revision=2024-02-02","namespace":"config:aaa:authn:encrypt:service:config","conformance-type":"import"},{"name":"openflow-instruction_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-instruction?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:instruction","conformance-type":"import"},{"name":"ietf-tls-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-client","conformance-type":"import","feature":["client-ident-x509-cert","server-auth-x509-cert"]},{"name":"opendaylight-group-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-group-statistics?revision=2013-11-11","namespace":"urn:opendaylight:group:statistics","conformance-type":"import"},{"name":"cluster-admin_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/cluster-admin?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:cluster:admin","conformance-type":"import"},{"name":"opendaylight-flow-statistics_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-flow-statistics?revision=2013-08-19","namespace":"urn:opendaylight:flow:statistics","conformance-type":"import"},{"name":"opendaylight-table-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-table-types?revision=2013-10-26","namespace":"urn:opendaylight:table:types","conformance-type":"import"},{"name":"forwarding-rules-manager-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/forwarding-rules-manager-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:forwardingrules-manager:config","conformance-type":"import"},{"name":"odl-srm-types_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-types?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:types","conformance-type":"import"},{"name":"ietf-x509-cert-to-name_2014-12-10","revision":"2014-12-10","schema":"/rests/modules/ietf-x509-cert-to-name?revision=2014-12-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-x509-cert-to-name","conformance-type":"import"},{"name":"flow-node-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-node-inventory?revision=2013-08-19","namespace":"urn:opendaylight:flow:inventory","conformance-type":"import"},{"name":"flow-errors_2013-11-16","revision":"2013-11-16","schema":"/rests/modules/flow-errors?revision=2013-11-16","namespace":"urn:opendaylight:flow:errors","conformance-type":"import"},{"name":"ietf-netconf_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:netconf:base:1.0","conformance-type":"import","feature":["xpath","url","rollback-on-error","validate","startup","candidate","confirmed-commit","writable-running"]},{"name":"iana-ssh-public-key-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-public-key-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-public-key-algs","conformance-type":"import"},{"name":"aaa-cert-mdsal_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/aaa-cert-mdsal?revision=2016-03-21","namespace":"urn:opendaylight:yang:aaa:cert:mdsal","conformance-type":"import"},{"name":"odl-device-notification_2024-02-18","revision":"2024-02-18","schema":"/rests/modules/odl-device-notification?revision=2024-02-18","namespace":"urn:opendaylight:device:notification","conformance-type":"import"},{"name":"ietf-origin_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-origin?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-origin","conformance-type":"import"},{"name":"openflow-augments_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-augments?revision=2015-02-25","namespace":"urn:opendaylight:openflow:augments","conformance-type":"import"},{"name":"iana-ssh-encryption-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-encryption-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-encryption-algs","conformance-type":"import"},{"name":"ietf-truststore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-truststore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-truststore","conformance-type":"import","feature":["inline-definitions-supported"]},{"name":"distributed-datastore-provider_2025-01-30","revision":"2025-01-30","schema":"/rests/modules/distributed-datastore-provider?revision=2025-01-30","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:distributed-datastore-provider","conformance-type":"import"},{"name":"opendaylight-group-types_2013-10-18","revision":"2013-10-18","schema":"/rests/modules/opendaylight-group-types?revision=2013-10-18","namespace":"urn:opendaylight:group:types","conformance-type":"import"},{"name":"sal-remote-augment_2023-11-03","revision":"2023-11-03","schema":"/rests/modules/sal-remote-augment?revision=2023-11-03","namespace":"urn:sal:restconf:event:subscription","conformance-type":"import"},{"name":"opendaylight-ipv6-arbitrary-bitmask-fields_2016-02-24","revision":"2016-02-24","schema":"/rests/modules/opendaylight-ipv6-arbitrary-bitmask-fields?revision=2016-02-24","namespace":"urn:opendaylight:opendaylight-ipv6-arbitrary-bitmask-fields","conformance-type":"import"},{"name":"sal-flows-batch_2016-03-14","revision":"2016-03-14","schema":"/rests/modules/sal-flows-batch?revision=2016-03-14","namespace":"urn:opendaylight:flows:service","conformance-type":"import"},{"name":"ietf-tls-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-common","conformance-type":"import","feature":["tls12","hello-params","tls13"]},{"name":"openflow-types_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-types?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:types","conformance-type":"import"},{"name":"ietf-netconf-with-defaults_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf-with-defaults?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults","conformance-type":"import"},{"name":"odl-srm-ops_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-ops?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:ops","conformance-type":"import"},{"name":"odl-general-entity_2015-09-30","revision":"2015-09-30","schema":"/rests/modules/odl-general-entity?revision=2015-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:mdsal:core:general-entity","conformance-type":"import"},{"name":"iana-ssh-key-exchange-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-key-exchange-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-key-exchange-algs","conformance-type":"import"},{"name":"node-ssl-connection-error_2019-07-23","revision":"2019-07-23","schema":"/rests/modules/node-ssl-connection-error?revision=2019-07-23","namespace":"urn:opendaylight:node-ssl-connection-error:service","conformance-type":"import"},{"name":"openflow-protocol_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-protocol?revision=2013-07-31","namespace":"urn:opendaylight:openflow:protocol","conformance-type":"import"},{"name":"ietf-udp-server_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-server?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-server","conformance-type":"import"},{"name":"ietf-keystore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-keystore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-keystore","conformance-type":"import","feature":["asymmetric-keys","inline-definitions-supported"]},{"name":"aaa_2016-12-14","revision":"2016-12-14","schema":"/rests/modules/aaa?revision=2016-12-14","namespace":"urn:opendaylight:params:xml:ns:yang:aaa","conformance-type":"import"},{"name":"aaa-cert-rpc_2015-12-15","revision":"2015-12-15","schema":"/rests/modules/aaa-cert-rpc?revision=2015-12-15","namespace":"urn:opendaylight:yang:aaa:cert:rpc","conformance-type":"import"},{"name":"system-notifications_2013-09-27","revision":"2013-09-27","schema":"/rests/modules/system-notifications?revision=2013-09-27","namespace":"urn:opendaylight:openflow:system","conformance-type":"import"},{"name":"sal-flat-batch_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/sal-flat-batch?revision=2016-03-21","namespace":"urn:opendaylight:flat-batch:service","conformance-type":"import"},{"name":"notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netconf:notification:1.0","conformance-type":"import"},{"name":"sal-remote_2014-01-14","revision":"2014-01-14","schema":"/rests/modules/sal-remote?revision=2014-01-14","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:remote","conformance-type":"import"},{"name":"yang-ext_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/yang-ext?revision=2013-07-09","namespace":"urn:opendaylight:yang:extension:yang-ext","conformance-type":"import"},{"name":"opendaylight-multipart-types_2017-01-12","revision":"2017-01-12","schema":"/rests/modules/opendaylight-multipart-types?revision=2017-01-12","namespace":"urn:opendaylight:multipart:types","conformance-type":"import"},{"name":"opendaylight-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-inventory?revision=2013-08-19","namespace":"urn:opendaylight:inventory","conformance-type":"import"},{"name":"sal-queue_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-queue?revision=2015-03-05","namespace":"urn:opendaylight:queue:service","conformance-type":"import"},{"name":"sal-groups-batch_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/sal-groups-batch?revision=2016-03-15","namespace":"urn:opendaylight:groups:service","conformance-type":"import"},{"name":"arbitrator-reconcile_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/arbitrator-reconcile?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:arbitrator-reconcile:service","conformance-type":"import"},{"name":"ietf-yang-metadata_2016-08-05","revision":"2016-08-05","schema":"/rests/modules/ietf-yang-metadata?revision=2016-08-05","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-metadata","conformance-type":"import"},{"name":"opendaylight-arbitrary-bitmask-fields_2016-01-30","revision":"2016-01-30","schema":"/rests/modules/opendaylight-arbitrary-bitmask-fields?revision=2016-01-30","namespace":"urn:opendaylight:arbitrary:bitmask:fields","conformance-type":"import"},{"name":"ietf-udp-client_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-client?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-client","conformance-type":"import","feature":["local-binding"]},{"name":"opendaylight-meter-types_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/opendaylight-meter-types?revision=2013-09-18","namespace":"urn:opendaylight:meter:types","conformance-type":"import"},{"name":"opendaylight-action-types_2013-11-12","revision":"2013-11-12","schema":"/rests/modules/opendaylight-action-types?revision=2013-11-12","namespace":"urn:opendaylight:action:types","conformance-type":"import"},{"name":"sal-role_2015-07-27","revision":"2015-07-27","schema":"/rests/modules/sal-role?revision=2015-07-27","namespace":"urn:opendaylight:role:service","conformance-type":"import"},{"name":"openflow-provider-config_2016-05-10","revision":"2016-05-10","schema":"/rests/modules/openflow-provider-config?revision=2016-05-10","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:provider:config","conformance-type":"import"},{"name":"odl-serviceutils-upgrade_2018-07-02","revision":"2018-07-02","schema":"/rests/modules/odl-serviceutils-upgrade?revision=2018-07-02","namespace":"urn:opendaylight:serviceutils:upgrade","conformance-type":"import"},{"name":"opendaylight-match-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-match-types?revision=2013-10-26","namespace":"urn:opendaylight:model:match:types","conformance-type":"import"},{"name":"ietf-restconf-server_2024-08-14","revision":"2024-08-14","schema":"/rests/modules/ietf-restconf-server?revision=2024-08-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-server","conformance-type":"import","feature":["http-listen","https-listen"]},{"name":"reconciliation-result-state_2017-07-13","revision":"2017-07-13","schema":"/rests/modules/reconciliation-result-state?revision=2017-07-13","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:rf:state","conformance-type":"import"},{"name":"onf-extensions_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/onf-extensions?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf","conformance-type":"import"},{"name":"sal-table_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/sal-table?revision=2013-10-26","namespace":"urn:opendaylight:table:service","conformance-type":"import"},{"name":"iana-http-versions_2026-02-04","revision":"2026-02-04","schema":"/rests/modules/iana-http-versions?revision=2026-02-04","namespace":"urn:ietf:params:xml:ns:yang:iana-http-versions","conformance-type":"import"},{"name":"opendaylight-direct-statistics_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/opendaylight-direct-statistics?revision=2016-05-11","namespace":"urn:opendaylight:direct:statistics","conformance-type":"import"},{"name":"opendaylight-port-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-port-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:port","conformance-type":"import"},{"name":"sal-async-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/sal-async-config?revision=2017-06-19","namespace":"urn:opendaylight:async-config:service","conformance-type":"import"},{"name":"aaa-password-service-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-password-service-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:password:service:config","conformance-type":"import"},{"name":"ietf-yang-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-yang-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-types","conformance-type":"import"},{"name":"opendaylight-queue-statistics_2013-12-16","revision":"2013-12-16","schema":"/rests/modules/opendaylight-queue-statistics?revision=2013-12-16","namespace":"urn:opendaylight:queue:statistics","conformance-type":"import"},{"name":"sal-bundle_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/sal-bundle?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf:bundle:service","conformance-type":"import"},{"name":"ietf-restconf-subscribed-notifications_2019-11-17","revision":"2019-11-17","schema":"/rests/modules/ietf-restconf-subscribed-notifications?revision=2019-11-17","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-subscribed-notifications","conformance-type":"import"},{"name":"sal-meters-batch_2016-03-16","revision":"2016-03-16","schema":"/rests/modules/sal-meters-batch?revision=2016-03-16","namespace":"urn:opendaylight:meters:service","conformance-type":"import"},{"name":"odl-entity-owners","revision":"","schema":"/rests/modules/odl-entity-owners","namespace":"urn:opendaylight:params:xml:ns:yang:controller:entity-owners","conformance-type":"import"},{"name":"sal-experimenter-mp-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-mp-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-mp-message:service","conformance-type":"import"},{"name":"packet-processing_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/packet-processing?revision=2013-07-09","namespace":"urn:opendaylight:packet:service","conformance-type":"import"},{"name":"openflow-configuration_2014-06-30","revision":"2014-06-30","schema":"/rests/modules/openflow-configuration?revision=2014-06-30","namespace":"urn:opendaylight:openflow:config","conformance-type":"import"},{"name":"odl-srm-rpcs_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-rpcs?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:rpc","conformance-type":"import"},{"name":"ietf-netconf-acm_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-netconf-acm?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-acm","conformance-type":"import"},{"name":"iana-crypt-hash_2014-08-06","revision":"2014-08-06","schema":"/rests/modules/iana-crypt-hash?revision=2014-08-06","namespace":"urn:ietf:params:xml:ns:yang:iana-crypt-hash","conformance-type":"import","feature":["crypt-hash-sha-512","crypt-hash-sha-256","crypt-hash-md5"]},{"name":"openflow-extensible-match_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-extensible-match?revision=2015-02-25","namespace":"urn:opendaylight:openflow:oxm","conformance-type":"import"}],"module-set-id":"2"}}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:30.872992" elapsed="0.006562"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:30.872504" elapsed="0.007132"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:30.872460" elapsed="0.007233"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:30.882381" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:30.880235" elapsed="0.002191"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:30.879818" elapsed="0.002642"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:30.879780" elapsed="0.002704"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:50:30.883016" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:50:30.882644" elapsed="0.000399"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:30.883403" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:30.883139" elapsed="0.000322"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:30.883937" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:30.883642" elapsed="0.000320"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:30.883484" elapsed="0.000513"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:30.883119" elapsed="0.000899"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:50:30.884545" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:50:30.884189" elapsed="0.000382"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:30.884870" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:30.884640" elapsed="0.000286"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:30.885428" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:30.885105" elapsed="0.000349"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:30.884949" elapsed="0.000539"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:30.884622" elapsed="0.000887"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:50:30.885652" elapsed="0.000338"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:50:30.886438" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:50:30.886150" elapsed="0.000313"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:50:30.886614" elapsed="0.002175"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:50:30.871532" elapsed="0.017319"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:50:30.889024" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:50:30.888920" elapsed="0.000148"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:30.888901" elapsed="0.000188"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:50:30.897269" level="INFO">${text_normalized} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:50:30.889246" elapsed="0.008053"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:50:30.897350" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:50:30.897507" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:50:30.853245" elapsed="0.044288"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:50:30.897595" elapsed="0.000026"/>
</return>
<msg time="2026-04-08T00:50:30.897895" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="PASS" start="2026-04-08T00:50:30.763660" elapsed="0.134271"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Json_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:30.898407" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:30.898054" elapsed="0.000469"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:30.898023" elapsed="0.000541"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:50:30.898622" elapsed="0.000070"/>
</return>
<arg>session=${session}</arg>
<arg>folder=${RESTCONF_MODULES_DIR}</arg>
<arg>verify=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Add arguments sensible for JSON data, return Get_Templated response text.
Optionally, verification against JSON data (may be iterated) is called.
Only subset of JSON data is verified and returned if JMES path is specified in
file ${folder}/jmespath.expr.</doc>
<status status="PASS" start="2026-04-08T00:50:30.757808" elapsed="0.141072"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:30.753420" elapsed="0.145568"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:30.753402" elapsed="0.145613"/>
</if>
<kw name="Resolve_Shard_Type_Class" owner="ClusterManagement">
<if>
<branch type="IF" condition="'${shard_type}' == 'config'">
<return>
<value>DistributedConfigDatastore</value>
<status status="PASS" start="2026-04-08T00:50:30.899923" elapsed="0.000068"/>
</return>
<status status="PASS" start="2026-04-08T00:50:30.899703" elapsed="0.000336"/>
</branch>
<branch type="ELSE IF" condition="'${shard_type}' == 'operational'">
<return>
<value>DistributedOperationalDatastore</value>
<status status="NOT RUN" start="2026-04-08T00:50:30.900202" elapsed="0.000046"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:50:30.900096" elapsed="0.000193"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:30.899670" elapsed="0.000675"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized shard type: ${shard_type}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:30.900571" elapsed="0.000064"/>
</kw>
<msg time="2026-04-08T00:50:30.900771" level="INFO">${type_class} = DistributedConfigDatastore</msg>
<var>${type_class}</var>
<arg>shard_type=${shard_type}</arg>
<doc>Simple lookup for class name corresponding to desired type.</doc>
<status status="PASS" start="2026-04-08T00:50:30.899309" elapsed="0.001488"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:50:30.901602" level="INFO">${cluster_index} = 1</msg>
<var>${cluster_index}</var>
<arg>${member_index}+${NODE_ROLE_INDEX_START}-1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:50:30.900965" elapsed="0.000665"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:30.902736" level="INFO">${uri} = jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-default-config,type=DistributedConfigDatastore</msg>
<var>${uri}</var>
<arg>${JOLOKIA_READ_URI}:Category=Shards,name=member-${cluster_index}-shard-${shard_name}-${shard_type},type=${type_class}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:30.901784" elapsed="0.000980"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:30.909624" level="INFO">jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-default-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:30.909339" elapsed="0.000369"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:30.910246" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:30.909951" elapsed="0.000378"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:50:30.919686" level="INFO">GET Request : url=http://10.30.170.48:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-default-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-default-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:50:30.919746" level="INFO">GET Response : url=http://10.30.170.48:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-default-config,type=DistributedConfigDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Wed, 08 Apr 2026 00:50:30 GMT', 'Expires': 'Tue, 07 Apr 2026 23:50:30 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-1-shard-default-config,type=DistributedConfigDatastore","type":"read"},"value":{"ReadWriteTransactionCount":21,"SnapshotIndex":73,"InMemoryJournalLogSize":1,"ReplicatedToAllIndex":73,"Leader":"member-1-shard-default-config","LastIndex":74,"RaftState":"Leader","LastApplied":74,"LastCommittedTransactionTime":"2026-04-08 00:46:46.951","PeerAddresses":"member-3-shard-default-config: pekko:\/\/opendaylight-cluster-data@10.30.171.110:2550\/user\/shardmanager-config\/member-3-shard-default-config, member-2-shard-default-config: pekko:\/\/opendaylight-cluster-data@10.30.170.131:2550\/user\/shardmanager-config\/member-2-shard-default-config","LastLogIndex":74,"LastLeadershipChangeTime":"2026-04-08 00:46:45.929","FollowerInitialSyncStatus":false,"FollowerInfo":[{"timeSinceLastActivity":"00:00:00.444","active":true,"matchIndex":74,"voting":true,"id":"member-3-shard-default-config","nextIndex":75},{"timeSinceLastActivity":"00:00:00.444","active":true,"matchIndex":74,"voting":true,"id":"member-2-shard-default-config","nextIndex":75}],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"702.1 μs","CurrentTerm":2,"LastTerm":2,"FailedTransactionsCount":3,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-default-config","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":7,"TxCohortCacheSize":0,"PeerVotingStates":"member-3-shard-default-config: true, member-2-shard-default-config: true","LastLogTerm":2,"StatRetrievalError":null,"CommitIndex":74,"SnapshotTerm":2,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":18,"ShardName":"member-1-shard-default-config","LeadershipChangeCount":1,"InMemoryJournalDataSize":10675},"timestamp":1775609430,"status":200} 
 </msg>
<msg time="2026-04-08T00:50:30.919852" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:50:30.912584" elapsed="0.007295"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:30.910474" elapsed="0.009448"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:30.920133" elapsed="0.000045"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:30.919974" elapsed="0.000249"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:30.910428" elapsed="0.009835"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:30.923736" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-1-shard-default-config,type=DistributedConfigDatastore","type":"read"},"value":{"ReadWriteTransactionCount":21,"SnapshotIndex":73,"InMemoryJournalLogSize":1,"ReplicatedToAllIndex":73,"Leader":"member-1-shard-default-config","LastIndex":74,"RaftState":"Leader","LastApplied":74,"LastCommittedTransactionTime":"2026-04-08 00:46:46.951","PeerAddresses":"member-3-shard-default-config: pekko:\/\/opendaylight-cluster-data@10.30.171.110:2550\/user\/shardmanager-config\/member-3-shard-default-config, member-2-shard-default-config: pekko:\/\/opendaylight-cluster-data@10.30.170.131:2550\/user\/shardmanager-config\/member-2-shard-default-config","LastLogIndex":74,"LastLeadershipChangeTime":"2026-04-08 00:46:45.929","FollowerInitialSyncStatus":false,"FollowerInfo":[{"timeSinceLastActivity":"00:00:00.444","active":true,"matchIndex":74,"voting":true,"id":"member-3-shard-default-config","nextIndex":75},{"timeSinceLastActivity":"00:00:00.444","active":true,"matchIndex":74,"voting":true,"id":"member-2-shard-default-config","nextIndex":75}],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"702.1 μs","CurrentTerm":2,"LastTerm":2,"FailedTransactionsCount":3,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-default-config","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":7,"TxCohortCacheSize":0,"PeerVotingStates":"member-3-shard-default-config: true, member-2-shard-default-config: true","LastLogTerm":2,"StatRetrievalError":null,"CommitIndex":74,"SnapshotTerm":2,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":18,"ShardName":"member-1-shard-default-config","LeadershipChangeCount":1,"InMemoryJournalDataSize":10675},"timestamp":1775609430,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:30.921370" elapsed="0.002428"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:30.921116" elapsed="0.002717"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:30.921096" elapsed="0.002762"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:30.927363" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:30.924284" elapsed="0.003144"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:30.923916" elapsed="0.003560"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:30.923897" elapsed="0.003613"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:50:30.928279" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:50:30.927734" elapsed="0.000583"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:30.928746" elapsed="0.000032"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:30.928419" elapsed="0.000409"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:30.929526" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:30.929087" elapsed="0.000476"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:30.928860" elapsed="0.000753"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:30.928392" elapsed="0.001250"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:50:30.930392" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:50:30.929863" elapsed="0.000567"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:30.930855" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:30.930528" elapsed="0.000407"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:30.931662" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:30.931247" elapsed="0.000451"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:30.930967" elapsed="0.000779"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:30.930502" elapsed="0.001274"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:50:30.931982" elapsed="0.000502"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:50:30.933092" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:50:30.932715" elapsed="0.000413"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:50:30.933365" elapsed="0.003012"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:50:30.920696" elapsed="0.015745"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:50:30.936705" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:50:30.936595" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:30.936549" elapsed="0.000238"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:50:30.939795" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-1-shard-default-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 17756094...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:50:30.937017" elapsed="0.002831"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:50:30.939929" elapsed="0.000064"/>
</return>
<msg time="2026-04-08T00:50:30.940332" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-1-shard-default-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 17756094...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:50:30.904369" elapsed="0.036053"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:50:30.940524" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:50:30.940786" level="INFO">${data_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-1-shard-default-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 17756094...</msg>
<var>${data_text}</var>
<arg>uri=${uri}</arg>
<arg>session=${session}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-08T00:50:30.902977" elapsed="0.037836"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:50:30.942903" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-1-shard-default-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1775609430, 'value'...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:50:30.941843" elapsed="0.001183"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-08T00:50:30.943116" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:50:30.943431" level="INFO">${data_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-1-shard-default-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1775609430, 'value'...</msg>
<var>${data_object}</var>
<arg>${data_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-08T00:50:30.941032" elapsed="0.002426"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:30.943924" level="INFO">${value} = {'AbortTransactionsCount': 0, 'CommitIndex': 74, 'CommittedTransactionsCount': 7, 'CurrentTerm': 2, 'FailedReadTransactionsCount': 0, 'FailedTransactionsCount': 3, 'FollowerInfo': [{'active': True, 'i...</msg>
<var>${value}</var>
<arg>${data_object}</arg>
<arg>value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:30.943616" elapsed="0.000335"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:30.944498" level="INFO">${raft_property} = Leader</msg>
<var>${raft_property}</var>
<arg>${value}</arg>
<arg>${property}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:30.944107" elapsed="0.000416"/>
</kw>
<return>
<value>${raft_property}</value>
<status status="PASS" start="2026-04-08T00:50:30.944570" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:50:30.944722" level="INFO">${raft_state} = Leader</msg>
<var>${raft_state}</var>
<arg>RaftState</arg>
<arg>${shard_name}</arg>
<arg>${shard_type}</arg>
<arg>${member_index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft property.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T00:50:30.750790" elapsed="0.193957"/>
</kw>
<return>
<value>${raft_state}</value>
<status status="PASS" start="2026-04-08T00:50:30.944804" elapsed="0.000025"/>
</return>
<msg time="2026-04-08T00:50:30.944948" level="INFO">${raft_state} = Leader</msg>
<var>${raft_state}</var>
<arg>shard_name=${shard_name}</arg>
<arg>shard_type=${ds_type}</arg>
<arg>member_index=${index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft status.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T00:50:30.750023" elapsed="0.194949"/>
</kw>
<if>
<branch type="IF" condition="'Follower' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${follower_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:30.945286" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:30.945050" elapsed="0.000294"/>
</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="PASS" start="2026-04-08T00:50:30.945574" elapsed="0.000188"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:30.945368" elapsed="0.000431"/>
</branch>
<branch type="ELSE IF" condition="${validate}">
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized Raft state: ${raft_state}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:30.945966" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:30.945823" elapsed="0.000194"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:30.945033" elapsed="0.001007"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T00:50:30.749859" elapsed="0.196204"/>
</iter>
<iter>
<kw name="Get_Raft_State_Of_Shard_At_Member" owner="ClusterManagement">
<kw name="Get_Raft_Property_From_Shard_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:30.949308" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:30.948465" elapsed="0.000932"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:50:30.949476" elapsed="0.000031"/>
</return>
<msg time="2026-04-08T00:50:30.949737" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:50:30.947933" elapsed="0.001830"/>
</kw>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Get_As_Json_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:30.997494" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:30.997107" elapsed="0.000414"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:50:30.998291" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:50:30.998052" elapsed="0.000306">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-08T00:50:30.998450" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:50:30.997681" elapsed="0.000793"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:50:30.999046" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:50:30.998636" elapsed="0.000436"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T00:50:30.999384" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-08T00:50:30.999533" level="INFO">${template} = /rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T00:50:30.999247" elapsed="0.000312"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:30.999955" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:30.999714" elapsed="0.000285"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:31.000941" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:31.000693" elapsed="0.000292"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-08T00:50:31.001424" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-08T00:50:31.001141" elapsed="0.000309"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:31.001758" elapsed="0.000021"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:31.001955" elapsed="0.000024"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:31.002124" elapsed="0.000021"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-08T00:50:31.001629" elapsed="0.000568"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-08T00:50:31.001496" elapsed="0.000731"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-08T00:50:31.002269" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:50:31.002425" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-08T00:50:31.000375" elapsed="0.002075"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:31.000067" elapsed="0.002414"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:31.002648" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:31.002505" elapsed="0.000197"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:31.000048" elapsed="0.002674"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:50:31.003315" level="INFO">${final_text} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:50:31.002859" elapsed="0.000483"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T00:50:31.003389" 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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="PASS" start="2026-04-08T00:50:30.996504" elapsed="0.007006"/>
</kw>
<msg time="2026-04-08T00:50:31.003561" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:50:30.984850" elapsed="0.018762"/>
</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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:31.015222" 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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:31.026656" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:31.038133" elapsed="0.000039"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:31.038337" elapsed="0.000022"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:31.038510" elapsed="0.000021"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:31.038875" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:31.038724" elapsed="0.000207"/>
</branch>
<status status="NOT RUN" start="2026-04-08T00:50:31.038709" elapsed="0.000245"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:31.039090" elapsed="0.000021"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:31.039269" elapsed="0.000021"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:31.039433" elapsed="0.000020"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-08T00:50:31.038681" elapsed="0.000804"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-08T00:50:31.038583" elapsed="0.000927"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:31.039651" elapsed="0.000021"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-08T00:50:31.039726" elapsed="0.000015"/>
</return>
<msg time="2026-04-08T00:50:31.039839" level="INFO">${uri} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-08T00:50:30.980899" elapsed="0.058966"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:50:31.041092" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:50:31.040859" elapsed="0.000308">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-08T00:50:31.041261" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:50:31.040521" elapsed="0.000765"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:31.041598" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:31.041357" elapsed="0.000297"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:31.042125" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:31.041838" elapsed="0.000312"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:31.041678" elapsed="0.000522"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:31.041338" elapsed="0.000883"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:50:31.044415" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:50:31.042368" elapsed="0.002074"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-08T00:50:31.044492" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:50:31.044642" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:50:31.040190" elapsed="0.004477"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:50:31.045889" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:50:31.045657" elapsed="0.000295">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-08T00:50:31.046043" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:50:31.045327" elapsed="0.000740"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-08T00:50:31.046288" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-08T00:50:31.046137" elapsed="0.000209"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:31.046119" elapsed="0.000250"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:31.046511" elapsed="0.000021"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:31.046678" elapsed="0.000020"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-08T00:50:31.046741" elapsed="0.000015"/>
</return>
<msg time="2026-04-08T00:50:31.049715" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:50:31.044956" elapsed="0.004787"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:31.051127" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:31.050879" elapsed="0.000309"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:31.051582" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:31.051341" elapsed="0.000285"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:50:31.068492" level="INFO">GET Request : url=http://10.30.170.131:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 path_url=/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0evogeryo91251obsb096nsda10.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:50:31.069115" level="INFO">GET Response : url=http://10.30.170.131:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Transfer-Encoding': 'chunked'} 
 body={"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","hidden-symmetric-keys","encrypted-private-keys","asymmetrically-encrypted-value-format","cms-encrypted-data-format","cleartext-private-keys","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["ssh-client-keepalives","client-ident-hostbased","client-ident-publickey","client-ident-password"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-ex... (set the log level to DEBUG or TRACE to see the full content) 
 </msg>
<msg time="2026-04-08T00:50:31.069610" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:50:31.053633" elapsed="0.016038"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:31.051693" elapsed="0.018071"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:31.070217" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:31.069823" elapsed="0.000541"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:31.051674" elapsed="0.018737"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:31.078605" level="INFO">{"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","hidden-symmetric-keys","encrypted-private-keys","asymmetrically-encrypted-value-format","cms-encrypted-data-format","cleartext-private-keys","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["ssh-client-keepalives","client-ident-hostbased","client-ident-publickey","client-ident-password"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-experimenter-types?revision=2015-10-20","namespace":"urn:opendaylight:openflowplugin:experimenter:types","conformance-type":"import"},{"name":"ietf-ip_2018-02-22","revision":"2018-02-22","schema":"/rests/modules/ietf-ip?revision=2018-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-ip","conformance-type":"import","feature":["ipv6-privacy-autoconf","ipv4-non-contiguous-netmasks"]},{"name":"ietf-tcp-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-client","conformance-type":"import","feature":["local-binding-supported","tcp-client-keepalives"]},{"name":"node-config_2014-10-15","revision":"2014-10-15","schema":"/rests/modules/node-config?revision=2014-10-15","namespace":"urn:opendaylight:module:config","conformance-type":"import"},{"name":"ietf-restconf_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf","conformance-type":"import"},{"name":"ietf-datastores_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-datastores?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-datastores","conformance-type":"import"},{"name":"ietf-yang-patch_2017-02-22","revision":"2017-02-22","schema":"/rests/modules/ietf-yang-patch?revision=2017-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-patch","conformance-type":"import"},{"name":"sal-group_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-group?revision=2013-09-18","namespace":"urn:opendaylight:group:service","conformance-type":"import"},{"name":"odl-codegen-extensions_2024-06-27","revision":"2024-06-27","schema":"/rests/modules/odl-codegen-extensions?revision=2024-06-27","namespace":"urn:opendaylight:yang:extension:codegen","conformance-type":"import"},{"name":"sal-meter_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-meter?revision=2013-09-18","namespace":"urn:opendaylight:meter:service","conformance-type":"import"},{"name":"ietf-interfaces_2018-02-20","revision":"2018-02-20","schema":"/rests/modules/ietf-interfaces?revision=2018-02-20","namespace":"urn:ietf:params:xml:ns:yang:ietf-interfaces","conformance-type":"import","feature":["pre-provisioning","if-mib","arbitrary-names"]},{"name":"opendaylight-l2-types_2013-08-27","revision":"2013-08-27","schema":"/rests/modules/opendaylight-l2-types?revision=2013-08-27","namespace":"urn:opendaylight:l2:types","conformance-type":"import"},{"name":"opendaylight-flow-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-flow-types?revision=2013-10-26","namespace":"urn:opendaylight:flow:types","conformance-type":"import"},{"name":"lldp-speaker-config_2016-05-12","revision":"2016-05-12","schema":"/rests/modules/lldp-speaker-config?revision=2016-05-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker:config","conformance-type":"import"},{"name":"aaa-cert_2015-11-26","revision":"2015-11-26","schema":"/rests/modules/aaa-cert?revision=2015-11-26","namespace":"urn:opendaylight:yang:aaa:cert","conformance-type":"import"},{"name":"openflow-action_2015-02-03","revision":"2015-02-03","schema":"/rests/modules/openflow-action?revision=2015-02-03","namespace":"urn:opendaylight:openflow:common:action","conformance-type":"import"},{"name":"openflow-approved-extensions_2016-08-02","revision":"2016-08-02","schema":"/rests/modules/openflow-approved-extensions?revision=2016-08-02","namespace":"urn:opendaylight:openflow:approved:extensions","conformance-type":"import"},{"name":"nc-notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/nc-notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netmod:notification","conformance-type":"import"},{"name":"ietf-netconf-nmda_2019-01-07","revision":"2019-01-07","schema":"/rests/modules/ietf-netconf-nmda?revision=2019-01-07","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-nmda","conformance-type":"import","feature":["with-defaults","origin"]},{"name":"ietf-tcp-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-common","conformance-type":"import","feature":["keepalives-supported"]},{"name":"network-topology_2013-10-21","revision":"2013-10-21","schema":"/rests/modules/network-topology?revision=2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:network-topology","conformance-type":"import"},{"name":"aaa-encrypt-service-config_2024-02-02","revision":"2024-02-02","schema":"/rests/modules/aaa-encrypt-service-config?revision=2024-02-02","namespace":"config:aaa:authn:encrypt:service:config","conformance-type":"import"},{"name":"openflow-instruction_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-instruction?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:instruction","conformance-type":"import"},{"name":"ietf-tls-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-client","conformance-type":"import","feature":["client-ident-x509-cert","server-auth-x509-cert"]},{"name":"opendaylight-group-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-group-statistics?revision=2013-11-11","namespace":"urn:opendaylight:group:statistics","conformance-type":"import"},{"name":"cluster-admin_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/cluster-admin?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:cluster:admin","conformance-type":"import"},{"name":"opendaylight-flow-statistics_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-flow-statistics?revision=2013-08-19","namespace":"urn:opendaylight:flow:statistics","conformance-type":"import"},{"name":"opendaylight-table-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-table-types?revision=2013-10-26","namespace":"urn:opendaylight:table:types","conformance-type":"import"},{"name":"forwarding-rules-manager-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/forwarding-rules-manager-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:forwardingrules-manager:config","conformance-type":"import"},{"name":"odl-srm-types_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-types?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:types","conformance-type":"import"},{"name":"ietf-x509-cert-to-name_2014-12-10","revision":"2014-12-10","schema":"/rests/modules/ietf-x509-cert-to-name?revision=2014-12-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-x509-cert-to-name","conformance-type":"import"},{"name":"flow-node-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-node-inventory?revision=2013-08-19","namespace":"urn:opendaylight:flow:inventory","conformance-type":"import"},{"name":"flow-errors_2013-11-16","revision":"2013-11-16","schema":"/rests/modules/flow-errors?revision=2013-11-16","namespace":"urn:opendaylight:flow:errors","conformance-type":"import"},{"name":"ietf-netconf_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:netconf:base:1.0","conformance-type":"import","feature":["xpath","url","rollback-on-error","validate","startup","candidate","confirmed-commit","writable-running"]},{"name":"iana-ssh-public-key-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-public-key-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-public-key-algs","conformance-type":"import"},{"name":"aaa-cert-mdsal_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/aaa-cert-mdsal?revision=2016-03-21","namespace":"urn:opendaylight:yang:aaa:cert:mdsal","conformance-type":"import"},{"name":"odl-device-notification_2024-02-18","revision":"2024-02-18","schema":"/rests/modules/odl-device-notification?revision=2024-02-18","namespace":"urn:opendaylight:device:notification","conformance-type":"import"},{"name":"ietf-origin_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-origin?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-origin","conformance-type":"import"},{"name":"openflow-augments_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-augments?revision=2015-02-25","namespace":"urn:opendaylight:openflow:augments","conformance-type":"import"},{"name":"iana-ssh-encryption-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-encryption-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-encryption-algs","conformance-type":"import"},{"name":"ietf-truststore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-truststore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-truststore","conformance-type":"import","feature":["inline-definitions-supported"]},{"name":"distributed-datastore-provider_2025-01-30","revision":"2025-01-30","schema":"/rests/modules/distributed-datastore-provider?revision=2025-01-30","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:distributed-datastore-provider","conformance-type":"import"},{"name":"opendaylight-group-types_2013-10-18","revision":"2013-10-18","schema":"/rests/modules/opendaylight-group-types?revision=2013-10-18","namespace":"urn:opendaylight:group:types","conformance-type":"import"},{"name":"sal-remote-augment_2023-11-03","revision":"2023-11-03","schema":"/rests/modules/sal-remote-augment?revision=2023-11-03","namespace":"urn:sal:restconf:event:subscription","conformance-type":"import"},{"name":"opendaylight-ipv6-arbitrary-bitmask-fields_2016-02-24","revision":"2016-02-24","schema":"/rests/modules/opendaylight-ipv6-arbitrary-bitmask-fields?revision=2016-02-24","namespace":"urn:opendaylight:opendaylight-ipv6-arbitrary-bitmask-fields","conformance-type":"import"},{"name":"sal-flows-batch_2016-03-14","revision":"2016-03-14","schema":"/rests/modules/sal-flows-batch?revision=2016-03-14","namespace":"urn:opendaylight:flows:service","conformance-type":"import"},{"name":"ietf-tls-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-common","conformance-type":"import","feature":["tls12","hello-params","tls13"]},{"name":"openflow-types_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-types?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:types","conformance-type":"import"},{"name":"ietf-netconf-with-defaults_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf-with-defaults?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults","conformance-type":"import"},{"name":"odl-srm-ops_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-ops?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:ops","conformance-type":"import"},{"name":"odl-general-entity_2015-09-30","revision":"2015-09-30","schema":"/rests/modules/odl-general-entity?revision=2015-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:mdsal:core:general-entity","conformance-type":"import"},{"name":"iana-ssh-key-exchange-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-key-exchange-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-key-exchange-algs","conformance-type":"import"},{"name":"node-ssl-connection-error_2019-07-23","revision":"2019-07-23","schema":"/rests/modules/node-ssl-connection-error?revision=2019-07-23","namespace":"urn:opendaylight:node-ssl-connection-error:service","conformance-type":"import"},{"name":"openflow-protocol_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-protocol?revision=2013-07-31","namespace":"urn:opendaylight:openflow:protocol","conformance-type":"import"},{"name":"ietf-udp-server_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-server?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-server","conformance-type":"import"},{"name":"ietf-keystore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-keystore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-keystore","conformance-type":"import","feature":["asymmetric-keys","inline-definitions-supported"]},{"name":"aaa_2016-12-14","revision":"2016-12-14","schema":"/rests/modules/aaa?revision=2016-12-14","namespace":"urn:opendaylight:params:xml:ns:yang:aaa","conformance-type":"import"},{"name":"aaa-cert-rpc_2015-12-15","revision":"2015-12-15","schema":"/rests/modules/aaa-cert-rpc?revision=2015-12-15","namespace":"urn:opendaylight:yang:aaa:cert:rpc","conformance-type":"import"},{"name":"system-notifications_2013-09-27","revision":"2013-09-27","schema":"/rests/modules/system-notifications?revision=2013-09-27","namespace":"urn:opendaylight:openflow:system","conformance-type":"import"},{"name":"sal-flat-batch_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/sal-flat-batch?revision=2016-03-21","namespace":"urn:opendaylight:flat-batch:service","conformance-type":"import"},{"name":"notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netconf:notification:1.0","conformance-type":"import"},{"name":"sal-remote_2014-01-14","revision":"2014-01-14","schema":"/rests/modules/sal-remote?revision=2014-01-14","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:remote","conformance-type":"import"},{"name":"yang-ext_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/yang-ext?revision=2013-07-09","namespace":"urn:opendaylight:yang:extension:yang-ext","conformance-type":"import"},{"name":"opendaylight-multipart-types_2017-01-12","revision":"2017-01-12","schema":"/rests/modules/opendaylight-multipart-types?revision=2017-01-12","namespace":"urn:opendaylight:multipart:types","conformance-type":"import"},{"name":"opendaylight-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-inventory?revision=2013-08-19","namespace":"urn:opendaylight:inventory","conformance-type":"import"},{"name":"sal-queue_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-queue?revision=2015-03-05","namespace":"urn:opendaylight:queue:service","conformance-type":"import"},{"name":"sal-groups-batch_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/sal-groups-batch?revision=2016-03-15","namespace":"urn:opendaylight:groups:service","conformance-type":"import"},{"name":"arbitrator-reconcile_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/arbitrator-reconcile?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:arbitrator-reconcile:service","conformance-type":"import"},{"name":"ietf-yang-metadata_2016-08-05","revision":"2016-08-05","schema":"/rests/modules/ietf-yang-metadata?revision=2016-08-05","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-metadata","conformance-type":"import"},{"name":"opendaylight-arbitrary-bitmask-fields_2016-01-30","revision":"2016-01-30","schema":"/rests/modules/opendaylight-arbitrary-bitmask-fields?revision=2016-01-30","namespace":"urn:opendaylight:arbitrary:bitmask:fields","conformance-type":"import"},{"name":"ietf-udp-client_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-client?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-client","conformance-type":"import","feature":["local-binding"]},{"name":"opendaylight-meter-types_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/opendaylight-meter-types?revision=2013-09-18","namespace":"urn:opendaylight:meter:types","conformance-type":"import"},{"name":"opendaylight-action-types_2013-11-12","revision":"2013-11-12","schema":"/rests/modules/opendaylight-action-types?revision=2013-11-12","namespace":"urn:opendaylight:action:types","conformance-type":"import"},{"name":"sal-role_2015-07-27","revision":"2015-07-27","schema":"/rests/modules/sal-role?revision=2015-07-27","namespace":"urn:opendaylight:role:service","conformance-type":"import"},{"name":"openflow-provider-config_2016-05-10","revision":"2016-05-10","schema":"/rests/modules/openflow-provider-config?revision=2016-05-10","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:provider:config","conformance-type":"import"},{"name":"odl-serviceutils-upgrade_2018-07-02","revision":"2018-07-02","schema":"/rests/modules/odl-serviceutils-upgrade?revision=2018-07-02","namespace":"urn:opendaylight:serviceutils:upgrade","conformance-type":"import"},{"name":"opendaylight-match-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-match-types?revision=2013-10-26","namespace":"urn:opendaylight:model:match:types","conformance-type":"import"},{"name":"ietf-restconf-server_2024-08-14","revision":"2024-08-14","schema":"/rests/modules/ietf-restconf-server?revision=2024-08-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-server","conformance-type":"import","feature":["http-listen","https-listen"]},{"name":"reconciliation-result-state_2017-07-13","revision":"2017-07-13","schema":"/rests/modules/reconciliation-result-state?revision=2017-07-13","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:rf:state","conformance-type":"import"},{"name":"onf-extensions_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/onf-extensions?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf","conformance-type":"import"},{"name":"sal-table_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/sal-table?revision=2013-10-26","namespace":"urn:opendaylight:table:service","conformance-type":"import"},{"name":"iana-http-versions_2026-02-04","revision":"2026-02-04","schema":"/rests/modules/iana-http-versions?revision=2026-02-04","namespace":"urn:ietf:params:xml:ns:yang:iana-http-versions","conformance-type":"import"},{"name":"opendaylight-direct-statistics_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/opendaylight-direct-statistics?revision=2016-05-11","namespace":"urn:opendaylight:direct:statistics","conformance-type":"import"},{"name":"opendaylight-port-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-port-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:port","conformance-type":"import"},{"name":"sal-async-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/sal-async-config?revision=2017-06-19","namespace":"urn:opendaylight:async-config:service","conformance-type":"import"},{"name":"aaa-password-service-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-password-service-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:password:service:config","conformance-type":"import"},{"name":"ietf-yang-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-yang-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-types","conformance-type":"import"},{"name":"opendaylight-queue-statistics_2013-12-16","revision":"2013-12-16","schema":"/rests/modules/opendaylight-queue-statistics?revision=2013-12-16","namespace":"urn:opendaylight:queue:statistics","conformance-type":"import"},{"name":"sal-bundle_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/sal-bundle?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf:bundle:service","conformance-type":"import"},{"name":"ietf-restconf-subscribed-notifications_2019-11-17","revision":"2019-11-17","schema":"/rests/modules/ietf-restconf-subscribed-notifications?revision=2019-11-17","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-subscribed-notifications","conformance-type":"import"},{"name":"sal-meters-batch_2016-03-16","revision":"2016-03-16","schema":"/rests/modules/sal-meters-batch?revision=2016-03-16","namespace":"urn:opendaylight:meters:service","conformance-type":"import"},{"name":"odl-entity-owners","revision":"","schema":"/rests/modules/odl-entity-owners","namespace":"urn:opendaylight:params:xml:ns:yang:controller:entity-owners","conformance-type":"import"},{"name":"sal-experimenter-mp-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-mp-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-mp-message:service","conformance-type":"import"},{"name":"packet-processing_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/packet-processing?revision=2013-07-09","namespace":"urn:opendaylight:packet:service","conformance-type":"import"},{"name":"openflow-configuration_2014-06-30","revision":"2014-06-30","schema":"/rests/modules/openflow-configuration?revision=2014-06-30","namespace":"urn:opendaylight:openflow:config","conformance-type":"import"},{"name":"odl-srm-rpcs_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-rpcs?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:rpc","conformance-type":"import"},{"name":"ietf-netconf-acm_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-netconf-acm?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-acm","conformance-type":"import"},{"name":"iana-crypt-hash_2014-08-06","revision":"2014-08-06","schema":"/rests/modules/iana-crypt-hash?revision=2014-08-06","namespace":"urn:ietf:params:xml:ns:yang:iana-crypt-hash","conformance-type":"import","feature":["crypt-hash-sha-512","crypt-hash-sha-256","crypt-hash-md5"]},{"name":"openflow-extensible-match_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-extensible-match?revision=2015-02-25","namespace":"urn:opendaylight:openflow:oxm","conformance-type":"import"}],"module-set-id":"2"}}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:31.072688" elapsed="0.006490"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:31.072198" elapsed="0.007017"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:31.072126" elapsed="0.007115"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:31.081658" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:31.079520" elapsed="0.002184"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:31.079298" elapsed="0.002440"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:31.079281" elapsed="0.002481"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:50:31.082306" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:50:31.081920" elapsed="0.000413"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:31.082635" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:31.082403" elapsed="0.000289"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:31.083204" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:31.082889" elapsed="0.000342"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:31.082716" elapsed="0.000550"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:31.082384" elapsed="0.000904"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:50:31.083804" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:50:31.083448" elapsed="0.000382"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:31.084135" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:31.083899" elapsed="0.000309"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:31.084683" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:31.084392" elapsed="0.000316"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:31.084232" elapsed="0.000511"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:31.083881" elapsed="0.000883"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:50:31.084910" elapsed="0.000357"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:50:31.085699" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:50:31.085430" elapsed="0.000294"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:50:31.085874" elapsed="0.002215"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:50:31.071228" elapsed="0.016938"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:50:31.088342" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:50:31.088238" elapsed="0.000149"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:31.088219" elapsed="0.000189"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:50:31.096435" level="INFO">${text_normalized} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:50:31.088553" elapsed="0.007913"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:50:31.096517" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:50:31.096675" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:50:31.050039" elapsed="0.046663"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:50:31.096763" elapsed="0.000027"/>
</return>
<msg time="2026-04-08T00:50:31.097066" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="PASS" start="2026-04-08T00:50:30.959711" elapsed="0.137391"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Json_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:31.097580" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:31.097251" elapsed="0.000446"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:31.097220" elapsed="0.000517"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:50:31.097796" elapsed="0.000068"/>
</return>
<arg>session=${session}</arg>
<arg>folder=${RESTCONF_MODULES_DIR}</arg>
<arg>verify=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Add arguments sensible for JSON data, return Get_Templated response text.
Optionally, verification against JSON data (may be iterated) is called.
Only subset of JSON data is verified and returned if JMES path is specified in
file ${folder}/jmespath.expr.</doc>
<status status="PASS" start="2026-04-08T00:50:30.954210" elapsed="0.143841"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:30.949831" elapsed="0.148342"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:30.949813" elapsed="0.148389"/>
</if>
<kw name="Resolve_Shard_Type_Class" owner="ClusterManagement">
<if>
<branch type="IF" condition="'${shard_type}' == 'config'">
<return>
<value>DistributedConfigDatastore</value>
<status status="PASS" start="2026-04-08T00:50:31.099095" elapsed="0.000084"/>
</return>
<status status="PASS" start="2026-04-08T00:50:31.098878" elapsed="0.000352"/>
</branch>
<branch type="ELSE IF" condition="'${shard_type}' == 'operational'">
<return>
<value>DistributedOperationalDatastore</value>
<status status="NOT RUN" start="2026-04-08T00:50:31.099371" elapsed="0.000044"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:50:31.099287" elapsed="0.000168"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:31.098847" elapsed="0.000664"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized shard type: ${shard_type}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:31.099734" elapsed="0.000065"/>
</kw>
<msg time="2026-04-08T00:50:31.099933" level="INFO">${type_class} = DistributedConfigDatastore</msg>
<var>${type_class}</var>
<arg>shard_type=${shard_type}</arg>
<doc>Simple lookup for class name corresponding to desired type.</doc>
<status status="PASS" start="2026-04-08T00:50:31.098457" elapsed="0.001501"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:50:31.100757" level="INFO">${cluster_index} = 2</msg>
<var>${cluster_index}</var>
<arg>${member_index}+${NODE_ROLE_INDEX_START}-1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:50:31.100125" elapsed="0.000659"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:31.101877" level="INFO">${uri} = jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-default-config,type=DistributedConfigDatastore</msg>
<var>${uri}</var>
<arg>${JOLOKIA_READ_URI}:Category=Shards,name=member-${cluster_index}-shard-${shard_name}-${shard_type},type=${type_class}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:31.100938" elapsed="0.000967"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:31.108728" level="INFO">jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-default-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:31.108443" elapsed="0.000369"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:31.109356" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:31.109059" elapsed="0.000379"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:50:31.116478" level="INFO">GET Request : url=http://10.30.170.131:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-default-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-default-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:50:31.116538" level="INFO">GET Response : url=http://10.30.170.131:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-default-config,type=DistributedConfigDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Wed, 08 Apr 2026 00:50:31 GMT', 'Expires': 'Tue, 07 Apr 2026 23:50:31 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-2-shard-default-config,type=DistributedConfigDatastore","type":"read"},"value":{"ReadWriteTransactionCount":0,"SnapshotIndex":73,"InMemoryJournalLogSize":1,"ReplicatedToAllIndex":73,"Leader":"member-1-shard-default-config","LastIndex":74,"RaftState":"Follower","LastCommittedTransactionTime":"1970-01-01 00:00:00.000","LastApplied":74,"PeerAddresses":"member-1-shard-default-config: pekko:\/\/opendaylight-cluster-data@10.30.170.48:2550\/user\/shardmanager-config\/member-1-shard-default-config, member-3-shard-default-config: pekko:\/\/opendaylight-cluster-data@10.30.171.110:2550\/user\/shardmanager-config\/member-3-shard-default-config","LastLogIndex":74,"LastLeadershipChangeTime":"2026-04-08 00:46:45.946","FollowerInitialSyncStatus":true,"FollowerInfo":[],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"131.4 μs","CurrentTerm":2,"LastTerm":2,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-default-config","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":0,"TxCohortCacheSize":0,"PeerVotingStates":"member-1-shard-default-config: true, member-3-shard-default-config: true","LastLogTerm":2,"StatRetrievalError":null,"CommitIndex":74,"SnapshotTerm":2,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-2-shard-default-config","LeadershipChangeCount":1,"InMemoryJournalDataSize":10675},"timestamp":1775609431,"status":200} 
 </msg>
<msg time="2026-04-08T00:50:31.116640" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:50:31.111655" elapsed="0.005010"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:31.109581" elapsed="0.007126"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:31.116909" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:31.116754" elapsed="0.000219"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:31.109536" elapsed="0.007477"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:31.120515" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-2-shard-default-config,type=DistributedConfigDatastore","type":"read"},"value":{"ReadWriteTransactionCount":0,"SnapshotIndex":73,"InMemoryJournalLogSize":1,"ReplicatedToAllIndex":73,"Leader":"member-1-shard-default-config","LastIndex":74,"RaftState":"Follower","LastCommittedTransactionTime":"1970-01-01 00:00:00.000","LastApplied":74,"PeerAddresses":"member-1-shard-default-config: pekko:\/\/opendaylight-cluster-data@10.30.170.48:2550\/user\/shardmanager-config\/member-1-shard-default-config, member-3-shard-default-config: pekko:\/\/opendaylight-cluster-data@10.30.171.110:2550\/user\/shardmanager-config\/member-3-shard-default-config","LastLogIndex":74,"LastLeadershipChangeTime":"2026-04-08 00:46:45.946","FollowerInitialSyncStatus":true,"FollowerInfo":[],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"131.4 μs","CurrentTerm":2,"LastTerm":2,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-default-config","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":0,"TxCohortCacheSize":0,"PeerVotingStates":"member-1-shard-default-config: true, member-3-shard-default-config: true","LastLogTerm":2,"StatRetrievalError":null,"CommitIndex":74,"SnapshotTerm":2,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-2-shard-default-config","LeadershipChangeCount":1,"InMemoryJournalDataSize":10675},"timestamp":1775609431,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:31.118071" elapsed="0.002543"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:31.117854" elapsed="0.002796"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:31.117835" elapsed="0.002840"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:31.123235" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:31.120956" elapsed="0.002344"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:31.120732" elapsed="0.002617"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:31.120715" elapsed="0.002667"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:50:31.124129" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:50:31.123609" elapsed="0.000578"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:31.124616" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:31.124289" elapsed="0.000407"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:31.125386" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:31.124946" elapsed="0.000476"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:31.124728" elapsed="0.000745"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:31.124262" elapsed="0.001240"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:50:31.126249" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:50:31.125722" elapsed="0.000565"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:31.126732" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:31.126386" elapsed="0.000428"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:31.127499" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:31.127066" elapsed="0.000469"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:31.126846" elapsed="0.000739"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:31.126360" elapsed="0.001255"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:50:31.127821" elapsed="0.000500"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:50:31.128934" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:50:31.128553" elapsed="0.000417"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:50:31.129200" elapsed="0.003035"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:50:31.117434" elapsed="0.014892"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:50:31.132697" elapsed="0.000021"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:50:31.132541" elapsed="0.000219"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:31.132477" elapsed="0.000335"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:50:31.136583" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-2-shard-default-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 17756094...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:50:31.133135" elapsed="0.003500"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:50:31.136717" elapsed="0.000064"/>
</return>
<msg time="2026-04-08T00:50:31.137073" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-2-shard-default-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 17756094...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:50:31.103495" elapsed="0.033684"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:50:31.137282" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:50:31.137548" level="INFO">${data_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-2-shard-default-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 17756094...</msg>
<var>${data_text}</var>
<arg>uri=${uri}</arg>
<arg>session=${session}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-08T00:50:31.102122" elapsed="0.035454"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:50:31.139663" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-2-shard-default-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1775609431, 'value'...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:50:31.138621" elapsed="0.001136"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-08T00:50:31.139875" elapsed="0.000031"/>
</return>
<msg time="2026-04-08T00:50:31.140183" level="INFO">${data_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-2-shard-default-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1775609431, 'value'...</msg>
<var>${data_object}</var>
<arg>${data_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-08T00:50:31.137797" elapsed="0.002415"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:31.140676" level="INFO">${value} = {'AbortTransactionsCount': 0, 'CommitIndex': 74, 'CommittedTransactionsCount': 0, 'CurrentTerm': 2, 'FailedReadTransactionsCount': 0, 'FailedTransactionsCount': 0, 'FollowerInfo': [], 'FollowerInitial...</msg>
<var>${value}</var>
<arg>${data_object}</arg>
<arg>value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:31.140369" elapsed="0.000334"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:31.141262" level="INFO">${raft_property} = Follower</msg>
<var>${raft_property}</var>
<arg>${value}</arg>
<arg>${property}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:31.140859" elapsed="0.000429"/>
</kw>
<return>
<value>${raft_property}</value>
<status status="PASS" start="2026-04-08T00:50:31.141336" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:50:31.141491" level="INFO">${raft_state} = Follower</msg>
<var>${raft_state}</var>
<arg>RaftState</arg>
<arg>${shard_name}</arg>
<arg>${shard_type}</arg>
<arg>${member_index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft property.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T00:50:30.947256" elapsed="0.194259"/>
</kw>
<return>
<value>${raft_state}</value>
<status status="PASS" start="2026-04-08T00:50:31.141573" elapsed="0.000026"/>
</return>
<msg time="2026-04-08T00:50:31.141721" level="INFO">${raft_state} = Follower</msg>
<var>${raft_state}</var>
<arg>shard_name=${shard_name}</arg>
<arg>shard_type=${ds_type}</arg>
<arg>member_index=${index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft status.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T00:50:30.946399" elapsed="0.195346"/>
</kw>
<if>
<branch type="IF" condition="'Follower' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${follower_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-08T00:50:31.142040" elapsed="0.000214"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:31.141826" elapsed="0.000468"/>
</branch>
<branch type="ELSE IF" condition="'Leader' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${leader_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:31.142462" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:31.142318" elapsed="0.000199"/>
</branch>
<branch type="ELSE IF" condition="${validate}">
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized Raft state: ${raft_state}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:31.142693" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:31.142540" elapsed="0.000206"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:31.141808" elapsed="0.000960"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T00:50:30.946234" elapsed="0.196558"/>
</iter>
<iter>
<kw name="Get_Raft_State_Of_Shard_At_Member" owner="ClusterManagement">
<kw name="Get_Raft_Property_From_Shard_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:31.145997" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:31.145144" elapsed="0.000942"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:50:31.146267" elapsed="0.000032"/>
</return>
<msg time="2026-04-08T00:50:31.146534" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:50:31.144623" elapsed="0.001939"/>
</kw>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Get_As_Json_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:31.194708" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:31.194323" elapsed="0.000413"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:50:31.195482" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:50:31.195242" elapsed="0.000312">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-08T00:50:31.195646" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:50:31.194897" elapsed="0.000773"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:50:31.196233" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:50:31.195834" elapsed="0.000426"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T00:50:31.196553" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-08T00:50:31.196692" level="INFO">${template} = /rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T00:50:31.196419" elapsed="0.000331"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:31.197170" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:31.196907" elapsed="0.000310"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:31.198139" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:31.197889" elapsed="0.000315"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-08T00:50:31.198640" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-08T00:50:31.198363" elapsed="0.000304"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:31.198979" elapsed="0.000022"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:31.199192" elapsed="0.000025"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:31.199365" elapsed="0.000021"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-08T00:50:31.198850" elapsed="0.000573"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-08T00:50:31.198716" elapsed="0.000736"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-08T00:50:31.199495" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:50:31.199650" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-08T00:50:31.197571" elapsed="0.002104"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:31.197284" elapsed="0.002422"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:31.199873" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:31.199730" elapsed="0.000199"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:31.197265" elapsed="0.002684"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:50:31.200533" level="INFO">${final_text} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:50:31.200087" elapsed="0.000473"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T00:50:31.200608" 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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="PASS" start="2026-04-08T00:50:31.193700" elapsed="0.007029"/>
</kw>
<msg time="2026-04-08T00:50:31.200782" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:50:31.181941" elapsed="0.018892"/>
</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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:31.212600" 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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:31.224073" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:31.235601" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:31.235794" elapsed="0.000022"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:31.235968" elapsed="0.000021"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:31.236382" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:31.236238" elapsed="0.000200"/>
</branch>
<status status="NOT RUN" start="2026-04-08T00:50:31.236223" elapsed="0.000239"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:31.236599" elapsed="0.000021"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:31.236765" elapsed="0.000021"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:31.236931" elapsed="0.000020"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-08T00:50:31.236192" elapsed="0.000792"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-08T00:50:31.236077" elapsed="0.000933"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:31.237152" elapsed="0.000035"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-08T00:50:31.237243" elapsed="0.000016"/>
</return>
<msg time="2026-04-08T00:50:31.237356" level="INFO">${uri} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-08T00:50:31.177960" elapsed="0.059421"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:50:31.238630" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:50:31.238364" elapsed="0.000329">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-08T00:50:31.238784" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:50:31.238013" elapsed="0.000795"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:31.239120" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:31.238879" elapsed="0.000317"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:31.239670" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:31.239384" elapsed="0.000312"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:31.239220" elapsed="0.000510"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:31.238861" elapsed="0.000890"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:50:31.241925" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:50:31.239898" elapsed="0.002053"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-08T00:50:31.242001" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:50:31.242152" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:50:31.237694" elapsed="0.004499"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:50:31.243410" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:50:31.243174" elapsed="0.000298">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-08T00:50:31.243562" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:50:31.242822" elapsed="0.000764"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-08T00:50:31.243790" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-08T00:50:31.243657" elapsed="0.000192"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:31.243638" elapsed="0.000234"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:31.244016" elapsed="0.000022"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:31.244201" elapsed="0.000022"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-08T00:50:31.244267" elapsed="0.000015"/>
</return>
<msg time="2026-04-08T00:50:31.246220" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:50:31.242502" elapsed="0.003745"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:31.247627" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:31.247380" elapsed="0.000292"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:31.248062" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:31.247822" elapsed="0.000283"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:50:31.266369" level="INFO">GET Request : url=http://10.30.171.110:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 path_url=/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node09orwbuy1e81xg3wze7ww55ua0.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:50:31.266814" level="INFO">GET Response : url=http://10.30.171.110:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Transfer-Encoding': 'chunked'} 
 body={"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","hidden-symmetric-keys","encrypted-private-keys","asymmetrically-encrypted-value-format","cms-encrypted-data-format","cleartext-private-keys","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["ssh-client-keepalives","client-ident-hostbased","client-ident-publickey","client-ident-password"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-ex... (set the log level to DEBUG or TRACE to see the full content) 
 </msg>
<msg time="2026-04-08T00:50:31.267073" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:50:31.250168" elapsed="0.016965"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:31.248186" elapsed="0.019232"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:31.267817" elapsed="0.000048"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:31.267478" elapsed="0.000481"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:31.248152" elapsed="0.019853"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:31.275593" level="INFO">{"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","hidden-symmetric-keys","encrypted-private-keys","asymmetrically-encrypted-value-format","cms-encrypted-data-format","cleartext-private-keys","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["ssh-client-keepalives","client-ident-hostbased","client-ident-publickey","client-ident-password"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-experimenter-types?revision=2015-10-20","namespace":"urn:opendaylight:openflowplugin:experimenter:types","conformance-type":"import"},{"name":"ietf-ip_2018-02-22","revision":"2018-02-22","schema":"/rests/modules/ietf-ip?revision=2018-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-ip","conformance-type":"import","feature":["ipv6-privacy-autoconf","ipv4-non-contiguous-netmasks"]},{"name":"ietf-tcp-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-client","conformance-type":"import","feature":["local-binding-supported","tcp-client-keepalives"]},{"name":"node-config_2014-10-15","revision":"2014-10-15","schema":"/rests/modules/node-config?revision=2014-10-15","namespace":"urn:opendaylight:module:config","conformance-type":"import"},{"name":"ietf-restconf_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf","conformance-type":"import"},{"name":"ietf-datastores_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-datastores?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-datastores","conformance-type":"import"},{"name":"ietf-yang-patch_2017-02-22","revision":"2017-02-22","schema":"/rests/modules/ietf-yang-patch?revision=2017-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-patch","conformance-type":"import"},{"name":"sal-group_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-group?revision=2013-09-18","namespace":"urn:opendaylight:group:service","conformance-type":"import"},{"name":"odl-codegen-extensions_2024-06-27","revision":"2024-06-27","schema":"/rests/modules/odl-codegen-extensions?revision=2024-06-27","namespace":"urn:opendaylight:yang:extension:codegen","conformance-type":"import"},{"name":"sal-meter_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-meter?revision=2013-09-18","namespace":"urn:opendaylight:meter:service","conformance-type":"import"},{"name":"ietf-interfaces_2018-02-20","revision":"2018-02-20","schema":"/rests/modules/ietf-interfaces?revision=2018-02-20","namespace":"urn:ietf:params:xml:ns:yang:ietf-interfaces","conformance-type":"import","feature":["pre-provisioning","if-mib","arbitrary-names"]},{"name":"opendaylight-l2-types_2013-08-27","revision":"2013-08-27","schema":"/rests/modules/opendaylight-l2-types?revision=2013-08-27","namespace":"urn:opendaylight:l2:types","conformance-type":"import"},{"name":"opendaylight-flow-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-flow-types?revision=2013-10-26","namespace":"urn:opendaylight:flow:types","conformance-type":"import"},{"name":"lldp-speaker-config_2016-05-12","revision":"2016-05-12","schema":"/rests/modules/lldp-speaker-config?revision=2016-05-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker:config","conformance-type":"import"},{"name":"aaa-cert_2015-11-26","revision":"2015-11-26","schema":"/rests/modules/aaa-cert?revision=2015-11-26","namespace":"urn:opendaylight:yang:aaa:cert","conformance-type":"import"},{"name":"openflow-action_2015-02-03","revision":"2015-02-03","schema":"/rests/modules/openflow-action?revision=2015-02-03","namespace":"urn:opendaylight:openflow:common:action","conformance-type":"import"},{"name":"openflow-approved-extensions_2016-08-02","revision":"2016-08-02","schema":"/rests/modules/openflow-approved-extensions?revision=2016-08-02","namespace":"urn:opendaylight:openflow:approved:extensions","conformance-type":"import"},{"name":"nc-notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/nc-notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netmod:notification","conformance-type":"import"},{"name":"ietf-netconf-nmda_2019-01-07","revision":"2019-01-07","schema":"/rests/modules/ietf-netconf-nmda?revision=2019-01-07","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-nmda","conformance-type":"import","feature":["with-defaults","origin"]},{"name":"ietf-tcp-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-common","conformance-type":"import","feature":["keepalives-supported"]},{"name":"network-topology_2013-10-21","revision":"2013-10-21","schema":"/rests/modules/network-topology?revision=2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:network-topology","conformance-type":"import"},{"name":"aaa-encrypt-service-config_2024-02-02","revision":"2024-02-02","schema":"/rests/modules/aaa-encrypt-service-config?revision=2024-02-02","namespace":"config:aaa:authn:encrypt:service:config","conformance-type":"import"},{"name":"openflow-instruction_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-instruction?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:instruction","conformance-type":"import"},{"name":"ietf-tls-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-client","conformance-type":"import","feature":["client-ident-x509-cert","server-auth-x509-cert"]},{"name":"opendaylight-group-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-group-statistics?revision=2013-11-11","namespace":"urn:opendaylight:group:statistics","conformance-type":"import"},{"name":"cluster-admin_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/cluster-admin?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:cluster:admin","conformance-type":"import"},{"name":"opendaylight-flow-statistics_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-flow-statistics?revision=2013-08-19","namespace":"urn:opendaylight:flow:statistics","conformance-type":"import"},{"name":"opendaylight-table-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-table-types?revision=2013-10-26","namespace":"urn:opendaylight:table:types","conformance-type":"import"},{"name":"forwarding-rules-manager-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/forwarding-rules-manager-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:forwardingrules-manager:config","conformance-type":"import"},{"name":"odl-srm-types_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-types?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:types","conformance-type":"import"},{"name":"ietf-x509-cert-to-name_2014-12-10","revision":"2014-12-10","schema":"/rests/modules/ietf-x509-cert-to-name?revision=2014-12-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-x509-cert-to-name","conformance-type":"import"},{"name":"flow-node-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-node-inventory?revision=2013-08-19","namespace":"urn:opendaylight:flow:inventory","conformance-type":"import"},{"name":"flow-errors_2013-11-16","revision":"2013-11-16","schema":"/rests/modules/flow-errors?revision=2013-11-16","namespace":"urn:opendaylight:flow:errors","conformance-type":"import"},{"name":"ietf-netconf_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:netconf:base:1.0","conformance-type":"import","feature":["xpath","url","rollback-on-error","validate","startup","candidate","confirmed-commit","writable-running"]},{"name":"iana-ssh-public-key-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-public-key-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-public-key-algs","conformance-type":"import"},{"name":"aaa-cert-mdsal_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/aaa-cert-mdsal?revision=2016-03-21","namespace":"urn:opendaylight:yang:aaa:cert:mdsal","conformance-type":"import"},{"name":"odl-device-notification_2024-02-18","revision":"2024-02-18","schema":"/rests/modules/odl-device-notification?revision=2024-02-18","namespace":"urn:opendaylight:device:notification","conformance-type":"import"},{"name":"ietf-origin_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-origin?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-origin","conformance-type":"import"},{"name":"openflow-augments_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-augments?revision=2015-02-25","namespace":"urn:opendaylight:openflow:augments","conformance-type":"import"},{"name":"iana-ssh-encryption-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-encryption-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-encryption-algs","conformance-type":"import"},{"name":"ietf-truststore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-truststore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-truststore","conformance-type":"import","feature":["inline-definitions-supported"]},{"name":"distributed-datastore-provider_2025-01-30","revision":"2025-01-30","schema":"/rests/modules/distributed-datastore-provider?revision=2025-01-30","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:distributed-datastore-provider","conformance-type":"import"},{"name":"opendaylight-group-types_2013-10-18","revision":"2013-10-18","schema":"/rests/modules/opendaylight-group-types?revision=2013-10-18","namespace":"urn:opendaylight:group:types","conformance-type":"import"},{"name":"sal-remote-augment_2023-11-03","revision":"2023-11-03","schema":"/rests/modules/sal-remote-augment?revision=2023-11-03","namespace":"urn:sal:restconf:event:subscription","conformance-type":"import"},{"name":"opendaylight-ipv6-arbitrary-bitmask-fields_2016-02-24","revision":"2016-02-24","schema":"/rests/modules/opendaylight-ipv6-arbitrary-bitmask-fields?revision=2016-02-24","namespace":"urn:opendaylight:opendaylight-ipv6-arbitrary-bitmask-fields","conformance-type":"import"},{"name":"sal-flows-batch_2016-03-14","revision":"2016-03-14","schema":"/rests/modules/sal-flows-batch?revision=2016-03-14","namespace":"urn:opendaylight:flows:service","conformance-type":"import"},{"name":"ietf-tls-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-common","conformance-type":"import","feature":["tls12","hello-params","tls13"]},{"name":"openflow-types_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-types?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:types","conformance-type":"import"},{"name":"ietf-netconf-with-defaults_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf-with-defaults?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults","conformance-type":"import"},{"name":"odl-srm-ops_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-ops?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:ops","conformance-type":"import"},{"name":"odl-general-entity_2015-09-30","revision":"2015-09-30","schema":"/rests/modules/odl-general-entity?revision=2015-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:mdsal:core:general-entity","conformance-type":"import"},{"name":"iana-ssh-key-exchange-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-key-exchange-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-key-exchange-algs","conformance-type":"import"},{"name":"node-ssl-connection-error_2019-07-23","revision":"2019-07-23","schema":"/rests/modules/node-ssl-connection-error?revision=2019-07-23","namespace":"urn:opendaylight:node-ssl-connection-error:service","conformance-type":"import"},{"name":"openflow-protocol_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-protocol?revision=2013-07-31","namespace":"urn:opendaylight:openflow:protocol","conformance-type":"import"},{"name":"ietf-udp-server_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-server?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-server","conformance-type":"import"},{"name":"ietf-keystore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-keystore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-keystore","conformance-type":"import","feature":["asymmetric-keys","inline-definitions-supported"]},{"name":"aaa_2016-12-14","revision":"2016-12-14","schema":"/rests/modules/aaa?revision=2016-12-14","namespace":"urn:opendaylight:params:xml:ns:yang:aaa","conformance-type":"import"},{"name":"aaa-cert-rpc_2015-12-15","revision":"2015-12-15","schema":"/rests/modules/aaa-cert-rpc?revision=2015-12-15","namespace":"urn:opendaylight:yang:aaa:cert:rpc","conformance-type":"import"},{"name":"system-notifications_2013-09-27","revision":"2013-09-27","schema":"/rests/modules/system-notifications?revision=2013-09-27","namespace":"urn:opendaylight:openflow:system","conformance-type":"import"},{"name":"sal-flat-batch_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/sal-flat-batch?revision=2016-03-21","namespace":"urn:opendaylight:flat-batch:service","conformance-type":"import"},{"name":"notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netconf:notification:1.0","conformance-type":"import"},{"name":"sal-remote_2014-01-14","revision":"2014-01-14","schema":"/rests/modules/sal-remote?revision=2014-01-14","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:remote","conformance-type":"import"},{"name":"yang-ext_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/yang-ext?revision=2013-07-09","namespace":"urn:opendaylight:yang:extension:yang-ext","conformance-type":"import"},{"name":"opendaylight-multipart-types_2017-01-12","revision":"2017-01-12","schema":"/rests/modules/opendaylight-multipart-types?revision=2017-01-12","namespace":"urn:opendaylight:multipart:types","conformance-type":"import"},{"name":"opendaylight-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-inventory?revision=2013-08-19","namespace":"urn:opendaylight:inventory","conformance-type":"import"},{"name":"sal-queue_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-queue?revision=2015-03-05","namespace":"urn:opendaylight:queue:service","conformance-type":"import"},{"name":"sal-groups-batch_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/sal-groups-batch?revision=2016-03-15","namespace":"urn:opendaylight:groups:service","conformance-type":"import"},{"name":"arbitrator-reconcile_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/arbitrator-reconcile?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:arbitrator-reconcile:service","conformance-type":"import"},{"name":"ietf-yang-metadata_2016-08-05","revision":"2016-08-05","schema":"/rests/modules/ietf-yang-metadata?revision=2016-08-05","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-metadata","conformance-type":"import"},{"name":"opendaylight-arbitrary-bitmask-fields_2016-01-30","revision":"2016-01-30","schema":"/rests/modules/opendaylight-arbitrary-bitmask-fields?revision=2016-01-30","namespace":"urn:opendaylight:arbitrary:bitmask:fields","conformance-type":"import"},{"name":"ietf-udp-client_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-client?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-client","conformance-type":"import","feature":["local-binding"]},{"name":"opendaylight-meter-types_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/opendaylight-meter-types?revision=2013-09-18","namespace":"urn:opendaylight:meter:types","conformance-type":"import"},{"name":"opendaylight-action-types_2013-11-12","revision":"2013-11-12","schema":"/rests/modules/opendaylight-action-types?revision=2013-11-12","namespace":"urn:opendaylight:action:types","conformance-type":"import"},{"name":"sal-role_2015-07-27","revision":"2015-07-27","schema":"/rests/modules/sal-role?revision=2015-07-27","namespace":"urn:opendaylight:role:service","conformance-type":"import"},{"name":"openflow-provider-config_2016-05-10","revision":"2016-05-10","schema":"/rests/modules/openflow-provider-config?revision=2016-05-10","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:provider:config","conformance-type":"import"},{"name":"odl-serviceutils-upgrade_2018-07-02","revision":"2018-07-02","schema":"/rests/modules/odl-serviceutils-upgrade?revision=2018-07-02","namespace":"urn:opendaylight:serviceutils:upgrade","conformance-type":"import"},{"name":"opendaylight-match-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-match-types?revision=2013-10-26","namespace":"urn:opendaylight:model:match:types","conformance-type":"import"},{"name":"ietf-restconf-server_2024-08-14","revision":"2024-08-14","schema":"/rests/modules/ietf-restconf-server?revision=2024-08-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-server","conformance-type":"import","feature":["http-listen","https-listen"]},{"name":"reconciliation-result-state_2017-07-13","revision":"2017-07-13","schema":"/rests/modules/reconciliation-result-state?revision=2017-07-13","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:rf:state","conformance-type":"import"},{"name":"onf-extensions_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/onf-extensions?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf","conformance-type":"import"},{"name":"sal-table_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/sal-table?revision=2013-10-26","namespace":"urn:opendaylight:table:service","conformance-type":"import"},{"name":"iana-http-versions_2026-02-04","revision":"2026-02-04","schema":"/rests/modules/iana-http-versions?revision=2026-02-04","namespace":"urn:ietf:params:xml:ns:yang:iana-http-versions","conformance-type":"import"},{"name":"opendaylight-direct-statistics_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/opendaylight-direct-statistics?revision=2016-05-11","namespace":"urn:opendaylight:direct:statistics","conformance-type":"import"},{"name":"opendaylight-port-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-port-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:port","conformance-type":"import"},{"name":"sal-async-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/sal-async-config?revision=2017-06-19","namespace":"urn:opendaylight:async-config:service","conformance-type":"import"},{"name":"aaa-password-service-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-password-service-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:password:service:config","conformance-type":"import"},{"name":"ietf-yang-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-yang-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-types","conformance-type":"import"},{"name":"opendaylight-queue-statistics_2013-12-16","revision":"2013-12-16","schema":"/rests/modules/opendaylight-queue-statistics?revision=2013-12-16","namespace":"urn:opendaylight:queue:statistics","conformance-type":"import"},{"name":"sal-bundle_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/sal-bundle?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf:bundle:service","conformance-type":"import"},{"name":"ietf-restconf-subscribed-notifications_2019-11-17","revision":"2019-11-17","schema":"/rests/modules/ietf-restconf-subscribed-notifications?revision=2019-11-17","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-subscribed-notifications","conformance-type":"import"},{"name":"sal-meters-batch_2016-03-16","revision":"2016-03-16","schema":"/rests/modules/sal-meters-batch?revision=2016-03-16","namespace":"urn:opendaylight:meters:service","conformance-type":"import"},{"name":"odl-entity-owners","revision":"","schema":"/rests/modules/odl-entity-owners","namespace":"urn:opendaylight:params:xml:ns:yang:controller:entity-owners","conformance-type":"import"},{"name":"sal-experimenter-mp-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-mp-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-mp-message:service","conformance-type":"import"},{"name":"packet-processing_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/packet-processing?revision=2013-07-09","namespace":"urn:opendaylight:packet:service","conformance-type":"import"},{"name":"openflow-configuration_2014-06-30","revision":"2014-06-30","schema":"/rests/modules/openflow-configuration?revision=2014-06-30","namespace":"urn:opendaylight:openflow:config","conformance-type":"import"},{"name":"odl-srm-rpcs_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-rpcs?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:rpc","conformance-type":"import"},{"name":"ietf-netconf-acm_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-netconf-acm?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-acm","conformance-type":"import"},{"name":"iana-crypt-hash_2014-08-06","revision":"2014-08-06","schema":"/rests/modules/iana-crypt-hash?revision=2014-08-06","namespace":"urn:ietf:params:xml:ns:yang:iana-crypt-hash","conformance-type":"import","feature":["crypt-hash-sha-512","crypt-hash-sha-256","crypt-hash-md5"]},{"name":"openflow-extensible-match_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-extensible-match?revision=2015-02-25","namespace":"urn:opendaylight:openflow:oxm","conformance-type":"import"}],"module-set-id":"2"}}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:31.270337" elapsed="0.005582"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:31.269782" elapsed="0.006173"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:31.269738" elapsed="0.006245"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:31.278479" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:31.276288" elapsed="0.002238"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:31.276042" elapsed="0.002522"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:31.276025" elapsed="0.002562"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:50:31.279123" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:50:31.278747" elapsed="0.000403"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:31.279472" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:31.279238" elapsed="0.000291"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:31.280005" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:31.279710" elapsed="0.000320"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:31.279553" elapsed="0.000513"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:31.279219" elapsed="0.000867"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:50:31.280613" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:50:31.280258" elapsed="0.000382"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:31.280938" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:31.280710" elapsed="0.000284"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:31.281547" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:31.281191" elapsed="0.000382"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:31.281017" elapsed="0.000592"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:31.280691" elapsed="0.000939"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:50:31.281776" elapsed="0.000344"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:50:31.282600" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:50:31.282308" elapsed="0.000318"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:50:31.282778" elapsed="0.002158"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:50:31.268790" elapsed="0.016209"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:50:31.285187" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:50:31.285069" elapsed="0.000165"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:31.285050" elapsed="0.000206"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:50:31.293477" level="INFO">${text_normalized} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:50:31.285398" elapsed="0.008110"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:50:31.293559" elapsed="0.000031"/>
</return>
<msg time="2026-04-08T00:50:31.293717" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:50:31.246558" elapsed="0.047185"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:50:31.293805" elapsed="0.000027"/>
</return>
<msg time="2026-04-08T00:50:31.294107" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="PASS" start="2026-04-08T00:50:31.156698" elapsed="0.137446"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Json_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:31.294643" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:31.294293" elapsed="0.000468"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:31.294262" elapsed="0.000539"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:50:31.294860" elapsed="0.000075"/>
</return>
<arg>session=${session}</arg>
<arg>folder=${RESTCONF_MODULES_DIR}</arg>
<arg>verify=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Add arguments sensible for JSON data, return Get_Templated response text.
Optionally, verification against JSON data (may be iterated) is called.
Only subset of JSON data is verified and returned if JMES path is specified in
file ${folder}/jmespath.expr.</doc>
<status status="PASS" start="2026-04-08T00:50:31.151118" elapsed="0.144009"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:31.146656" elapsed="0.148594"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:31.146613" elapsed="0.148664"/>
</if>
<kw name="Resolve_Shard_Type_Class" owner="ClusterManagement">
<if>
<branch type="IF" condition="'${shard_type}' == 'config'">
<return>
<value>DistributedConfigDatastore</value>
<status status="PASS" start="2026-04-08T00:50:31.296148" elapsed="0.000086"/>
</return>
<status status="PASS" start="2026-04-08T00:50:31.295930" elapsed="0.000353"/>
</branch>
<branch type="ELSE IF" condition="'${shard_type}' == 'operational'">
<return>
<value>DistributedOperationalDatastore</value>
<status status="NOT RUN" start="2026-04-08T00:50:31.296426" elapsed="0.000044"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:50:31.296341" elapsed="0.000171"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:31.295897" elapsed="0.000672"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized shard type: ${shard_type}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:31.296795" elapsed="0.000066"/>
</kw>
<msg time="2026-04-08T00:50:31.297002" level="INFO">${type_class} = DistributedConfigDatastore</msg>
<var>${type_class}</var>
<arg>shard_type=${shard_type}</arg>
<doc>Simple lookup for class name corresponding to desired type.</doc>
<status status="PASS" start="2026-04-08T00:50:31.295535" elapsed="0.001493"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:50:31.297840" level="INFO">${cluster_index} = 3</msg>
<var>${cluster_index}</var>
<arg>${member_index}+${NODE_ROLE_INDEX_START}-1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:50:31.297214" elapsed="0.000653"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:31.299019" level="INFO">${uri} = jolokia/read/org.opendaylight.controller:Category=Shards,name=member-3-shard-default-config,type=DistributedConfigDatastore</msg>
<var>${uri}</var>
<arg>${JOLOKIA_READ_URI}:Category=Shards,name=member-${cluster_index}-shard-${shard_name}-${shard_type},type=${type_class}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:31.298028" elapsed="0.001020"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:31.305855" level="INFO">jolokia/read/org.opendaylight.controller:Category=Shards,name=member-3-shard-default-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:31.305573" elapsed="0.000366"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:31.306490" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:31.306192" elapsed="0.000380"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:50:31.314766" level="INFO">GET Request : url=http://10.30.171.110:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-3-shard-default-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-3-shard-default-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:50:31.314825" level="INFO">GET Response : url=http://10.30.171.110:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-3-shard-default-config,type=DistributedConfigDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Wed, 08 Apr 2026 00:50:31 GMT', 'Expires': 'Tue, 07 Apr 2026 23:50:31 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-3-shard-default-config,type=DistributedConfigDatastore","type":"read"},"value":{"ReadWriteTransactionCount":0,"SnapshotIndex":73,"InMemoryJournalLogSize":1,"ReplicatedToAllIndex":73,"Leader":"member-1-shard-default-config","LastIndex":74,"RaftState":"Follower","LastApplied":74,"LastCommittedTransactionTime":"1970-01-01 00:00:00.000","PeerAddresses":"member-1-shard-default-config: pekko:\/\/opendaylight-cluster-data@10.30.170.48:2550\/user\/shardmanager-config\/member-1-shard-default-config, member-2-shard-default-config: pekko:\/\/opendaylight-cluster-data@10.30.170.131:2550\/user\/shardmanager-config\/member-2-shard-default-config","LastLogIndex":74,"LastLeadershipChangeTime":"2026-04-08 00:46:45.933","FollowerInitialSyncStatus":true,"FollowerInfo":[],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"235.8 μs","CurrentTerm":2,"LastTerm":2,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-default-config","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":0,"TxCohortCacheSize":0,"PeerVotingStates":"member-1-shard-default-config: true, member-2-shard-default-config: true","LastLogTerm":2,"StatRetrievalError":null,"CommitIndex":74,"SnapshotTerm":2,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-3-shard-default-config","LeadershipChangeCount":1,"InMemoryJournalDataSize":10675},"timestamp":1775609431,"status":200} 
 </msg>
<msg time="2026-04-08T00:50:31.314926" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:50:31.308760" elapsed="0.006191"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:31.306715" elapsed="0.008283"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:31.315265" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:31.315044" elapsed="0.000287"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:31.306671" elapsed="0.008699"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:31.318783" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-3-shard-default-config,type=DistributedConfigDatastore","type":"read"},"value":{"ReadWriteTransactionCount":0,"SnapshotIndex":73,"InMemoryJournalLogSize":1,"ReplicatedToAllIndex":73,"Leader":"member-1-shard-default-config","LastIndex":74,"RaftState":"Follower","LastApplied":74,"LastCommittedTransactionTime":"1970-01-01 00:00:00.000","PeerAddresses":"member-1-shard-default-config: pekko:\/\/opendaylight-cluster-data@10.30.170.48:2550\/user\/shardmanager-config\/member-1-shard-default-config, member-2-shard-default-config: pekko:\/\/opendaylight-cluster-data@10.30.170.131:2550\/user\/shardmanager-config\/member-2-shard-default-config","LastLogIndex":74,"LastLeadershipChangeTime":"2026-04-08 00:46:45.933","FollowerInitialSyncStatus":true,"FollowerInfo":[],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"235.8 μs","CurrentTerm":2,"LastTerm":2,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-default-config","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":0,"TxCohortCacheSize":0,"PeerVotingStates":"member-1-shard-default-config: true, member-2-shard-default-config: true","LastLogTerm":2,"StatRetrievalError":null,"CommitIndex":74,"SnapshotTerm":2,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-3-shard-default-config","LeadershipChangeCount":1,"InMemoryJournalDataSize":10675},"timestamp":1775609431,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:31.316410" elapsed="0.002464"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:31.316192" elapsed="0.002718"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:31.316172" elapsed="0.002762"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:31.322382" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:31.319339" elapsed="0.003121"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:31.319008" elapsed="0.003500"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:31.318982" elapsed="0.003560"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:50:31.323305" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:50:31.322764" elapsed="0.000579"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:31.323770" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:31.323442" elapsed="0.000408"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:31.324537" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:31.324102" elapsed="0.000472"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:31.323882" elapsed="0.000740"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:31.323416" elapsed="0.001236"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:50:31.325402" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:50:31.324873" elapsed="0.000567"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:31.325862" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:31.325537" elapsed="0.000404"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:31.326650" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:31.326215" elapsed="0.000472"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:31.325973" elapsed="0.000763"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:31.325512" elapsed="0.001254"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:50:31.326970" elapsed="0.000498"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:50:31.328068" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:50:31.327695" elapsed="0.000409"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:50:31.328335" elapsed="0.002986"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:50:31.315763" elapsed="0.015623"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:50:31.331650" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:50:31.331541" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:31.331495" elapsed="0.000238"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:50:31.334656" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-3-shard-default-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 17756094...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:50:31.331962" elapsed="0.002747"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:50:31.334790" elapsed="0.000062"/>
</return>
<msg time="2026-04-08T00:50:31.335143" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-3-shard-default-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 17756094...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:50:31.300640" elapsed="0.034608"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:50:31.335350" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:50:31.335614" level="INFO">${data_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-3-shard-default-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 17756094...</msg>
<var>${data_text}</var>
<arg>uri=${uri}</arg>
<arg>session=${session}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-08T00:50:31.299293" elapsed="0.036349"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:50:31.337720" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-3-shard-default-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1775609431, 'value'...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:50:31.336676" elapsed="0.001135"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-08T00:50:31.337928" elapsed="0.000031"/>
</return>
<msg time="2026-04-08T00:50:31.338236" level="INFO">${data_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-3-shard-default-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1775609431, 'value'...</msg>
<var>${data_object}</var>
<arg>${data_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-08T00:50:31.335862" elapsed="0.002402"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:31.338749" level="INFO">${value} = {'AbortTransactionsCount': 0, 'CommitIndex': 74, 'CommittedTransactionsCount': 0, 'CurrentTerm': 2, 'FailedReadTransactionsCount': 0, 'FailedTransactionsCount': 0, 'FollowerInfo': [], 'FollowerInitial...</msg>
<var>${value}</var>
<arg>${data_object}</arg>
<arg>value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:31.338438" elapsed="0.000340"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:31.339332" level="INFO">${raft_property} = Follower</msg>
<var>${raft_property}</var>
<arg>${value}</arg>
<arg>${property}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:31.338933" elapsed="0.000425"/>
</kw>
<return>
<value>${raft_property}</value>
<status status="PASS" start="2026-04-08T00:50:31.339405" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:50:31.339557" level="INFO">${raft_state} = Follower</msg>
<var>${raft_state}</var>
<arg>RaftState</arg>
<arg>${shard_name}</arg>
<arg>${shard_type}</arg>
<arg>${member_index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft property.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T00:50:31.143923" elapsed="0.195659"/>
</kw>
<return>
<value>${raft_state}</value>
<status status="PASS" start="2026-04-08T00:50:31.339638" elapsed="0.000026"/>
</return>
<msg time="2026-04-08T00:50:31.339781" level="INFO">${raft_state} = Follower</msg>
<var>${raft_state}</var>
<arg>shard_name=${shard_name}</arg>
<arg>shard_type=${ds_type}</arg>
<arg>member_index=${index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft status.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T00:50:31.143173" elapsed="0.196632"/>
</kw>
<if>
<branch type="IF" condition="'Follower' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${follower_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-08T00:50:31.340094" elapsed="0.000206"/>
</kw>
<status status="PASS" start="2026-04-08T00:50:31.339883" elapsed="0.000456"/>
</branch>
<branch type="ELSE IF" condition="'Leader' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${leader_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:31.340505" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:31.340363" elapsed="0.000195"/>
</branch>
<branch type="ELSE IF" condition="${validate}">
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized Raft state: ${raft_state}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:31.340721" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:31.340581" elapsed="0.000191"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:31.339866" elapsed="0.000928"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T00:50:31.142959" elapsed="0.197858"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-08T00:50:30.749659" elapsed="0.591188"/>
</for>
<return>
<value>${leader_list}</value>
<value>${follower_list}</value>
<status status="PASS" start="2026-04-08T00:50:31.340888" elapsed="0.000025"/>
</return>
<msg time="2026-04-08T00:50:31.341087" level="INFO">${leader_list} = [1]</msg>
<msg time="2026-04-08T00:50:31.341132" level="INFO">${follower_list} = [2, 3]</msg>
<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="PASS" start="2026-04-08T00:50:30.745641" elapsed="0.595528"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T00:50:31.341611" level="INFO">Length is 1.</msg>
<msg time="2026-04-08T00:50:31.341686" level="INFO">${leader_count} = 1</msg>
<var>${leader_count}</var>
<arg>${leader_list}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T00:50:31.341344" elapsed="0.000365"/>
</kw>
<if>
<branch type="IF" condition="${leader_count} &lt; 1">
<kw name="Fail" owner="BuiltIn">
<arg>No leader found.</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:31.342020" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:50:31.341778" elapsed="0.000296"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:31.341760" elapsed="0.000336"/>
</if>
<kw name="Length Should Be" owner="BuiltIn">
<msg time="2026-04-08T00:50:31.344265" level="INFO">Length is 1.</msg>
<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="PASS" start="2026-04-08T00:50:31.342359" elapsed="0.001952"/>
</kw>
<kw name="Get From List" owner="Collections">
<msg time="2026-04-08T00:50:31.344652" level="INFO">${leader} = 1</msg>
<var>${leader}</var>
<arg>${leader_list}</arg>
<arg>0</arg>
<doc>Returns the value specified with an ``index`` from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:50:31.344471" elapsed="0.000206"/>
</kw>
<return>
<value>${leader}</value>
<value>${follower_list}</value>
<status status="PASS" start="2026-04-08T00:50:31.344722" elapsed="0.000028"/>
</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="PASS" start="2026-04-08T00:50:30.743031" elapsed="0.601841"/>
</kw>
<var name="${shard_name}">default</var>
<status status="PASS" start="2026-04-08T00:50:30.742812" elapsed="0.602106"/>
</iter>
<var>${shard_name}</var>
<value>@{shard_name_list}</value>
<status status="PASS" start="2026-04-08T00:50:29.457342" elapsed="1.887607"/>
</for>
<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="PASS" start="2026-04-08T00:50:29.456936" elapsed="1.888066"/>
</kw>
<arg>${controller_index_list}</arg>
<doc>Check Status for all shards in OpenFlow application.</doc>
<status status="PASS" start="2026-04-08T00:50:27.588681" elapsed="3.756419"/>
</kw>
<arg>90s</arg>
<arg>1s</arg>
<arg>ClusterOpenFlow.Check OpenFlow Shards Status</arg>
<arg>${controller_index_list}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-08T00:50:27.588141" elapsed="3.757007"/>
</kw>
<doc>Check Shards Status after some cluster event.</doc>
<status status="PASS" start="2026-04-08T00:50:27.585914" elapsed="3.759311"/>
</kw>
<doc>Create original cluster list and check Status for all shards in OpenFlow application.</doc>
<status status="PASS" start="2026-04-08T00:50:27.585387" elapsed="3.759955"/>
</test>
<test id="s1-s1-t36" name="Check Entity Owner Status After Recover" line="184">
<kw name="Get OpenFlow Entity Owner Status For One Device" owner="ClusterOpenFlow">
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:50:31.380054" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:50:31.379677" elapsed="0.000404"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:50:31.380732" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:50:31.380426" elapsed="0.000332"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:50:31.380803" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:50:31.380955" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:50:31.379310" elapsed="0.001671"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T00:50:31.385512" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T00:50:31.385330" elapsed="0.000208"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:50:31.385686" elapsed="0.000181"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:31.386240" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:31.386017" elapsed="0.000259"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:31.386744" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:31.386444" elapsed="0.000341"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:50:31.386931" elapsed="0.000179"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:31.387489" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:31.387282" elapsed="0.000232"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:31.387920" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:31.387680" elapsed="0.000280"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:31.388463" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:31.388109" elapsed="0.000379"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:31.388885" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:31.388653" elapsed="0.000274"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:31.389372" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:31.389074" elapsed="0.000323"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:50:31.395972" elapsed="0.000229"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:50:31.404946" elapsed="0.000232"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:50:31.405690" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:50:31.405335" elapsed="0.000381"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:31.406856" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:31.406329" elapsed="0.000567"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:50:31.407025" elapsed="0.000032"/>
</return>
<msg time="2026-04-08T00:50:31.407196" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:50:31.405903" elapsed="0.001319"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:50:31.407815" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:50:31.407383" elapsed="0.000459"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:50:31.408479" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:50:31.408034" elapsed="0.000472"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:50:31.408997" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:50:31.420284" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:50:31.408669" elapsed="0.013387">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:31.422272" elapsed="0.000024"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:31.422451" elapsed="0.000020"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:31.422616" elapsed="0.000020"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:31.422781" elapsed="0.000020"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:31.422949" elapsed="0.000020"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:31.423110" elapsed="0.000020"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:31.423392" elapsed="0.000020"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:31.423616" elapsed="0.000021"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:31.423808" elapsed="0.000021"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:50:31.423264" elapsed="0.000625"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:50:31.423193" elapsed="0.000723"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:31.424062" elapsed="0.000021"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:50:31.424122" elapsed="0.000016"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:50:31.404455" elapsed="0.019800">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:50:31.424327" elapsed="0.000016"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T00:50:31.393663" elapsed="0.030764">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:31.424602" elapsed="0.000021"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:31.428871" elapsed="0.000027"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:31.429066" elapsed="0.000021"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T00:50:31.429131" elapsed="0.000016"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T00:50:31.384782" elapsed="0.044503">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:50:31.429399" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:50:31.429445" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:50:31.384232" elapsed="0.045237"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T00:50:31.429664" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:50:31.429553" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:31.429534" elapsed="0.000194"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:50:31.431056" elapsed="0.000225"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:50:31.431732" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:50:31.431433" elapsed="0.000325"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:31.432546" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:31.432282" elapsed="0.000290"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:50:31.432619" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:50:31.432766" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:50:31.431935" elapsed="0.000855"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:50:31.433324" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:50:31.432946" elapsed="0.000405"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:50:31.433843" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:50:31.433504" elapsed="0.000365"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:50:31.434255" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:50:31.443274" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:50:31.434032" elapsed="0.010894">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:31.445107" elapsed="0.000022"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:31.445296" elapsed="0.000021"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:31.445459" elapsed="0.000020"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:31.445622" elapsed="0.000020"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:31.445788" elapsed="0.000020"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:31.445949" elapsed="0.000021"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:31.446238" elapsed="0.000021"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:31.446414" elapsed="0.000020"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:31.446574" elapsed="0.000020"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:50:31.446081" elapsed="0.000544"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:50:31.446016" elapsed="0.000634"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:31.446788" elapsed="0.000020"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:50:31.446845" elapsed="0.000016"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:50:31.430519" elapsed="0.016433">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:50:31.447100" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:50:31.447144" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:50:31.429876" elapsed="0.017310"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T00:50:31.447793" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T00:50:31.447483" elapsed="0.000371">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T00:50:31.447271" elapsed="0.000643">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T00:50:31.447252" elapsed="0.000693">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T00:50:31.447990" elapsed="0.000016"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:50:31.383678" elapsed="0.064409">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:31.448280" elapsed="0.000022"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:31.448446" elapsed="0.000020"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T00:50:31.448506" elapsed="0.000015"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T00:50:31.381294" elapsed="0.067310">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:31.448770" elapsed="0.000020"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:31.448945" elapsed="0.000020"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:31.449112" elapsed="0.000020"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:31.449287" elapsed="0.000020"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:31.449451" elapsed="0.000019"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:31.449614" elapsed="0.000020"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T00:50:31.449674" elapsed="0.000015"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T00:50:31.378654" elapsed="0.071115">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:50:32.483229" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:50:32.482740" elapsed="0.000523"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:50:32.483740" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:50:32.483431" elapsed="0.000335"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:50:32.483812" elapsed="0.000039"/>
</return>
<msg time="2026-04-08T00:50:32.483981" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:50:32.482358" elapsed="0.001714"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T00:50:32.488703" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T00:50:32.488476" elapsed="0.000253"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:50:32.488880" elapsed="0.000189"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:32.489449" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:32.489237" elapsed="0.000237"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:32.489913" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:32.489660" elapsed="0.000294"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:50:32.490098" elapsed="0.000197"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:32.490651" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:32.490445" elapsed="0.000231"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:32.491099" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:32.490848" elapsed="0.000292"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:32.491645" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:32.491305" elapsed="0.000365"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:32.492069" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:32.491834" elapsed="0.000278"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:32.492573" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:32.492275" elapsed="0.000327"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:50:32.500571" elapsed="0.000218"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:50:32.509360" elapsed="0.000212"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:50:32.510119" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:50:32.509727" elapsed="0.000420"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:32.511335" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:32.510767" elapsed="0.000609"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:50:32.511511" elapsed="0.000036"/>
</return>
<msg time="2026-04-08T00:50:32.511673" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:50:32.510368" elapsed="0.001331"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:50:32.512330" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:50:32.511857" elapsed="0.000500"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:50:32.512971" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:50:32.512536" elapsed="0.000462"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:50:32.513523" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:50:32.524311" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:50:32.513183" elapsed="0.013558">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:32.527009" elapsed="0.000039"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:32.527286" elapsed="0.000036"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:32.527591" elapsed="0.000030"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:32.527827" elapsed="0.000029"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:32.528065" elapsed="0.000029"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:32.528316" elapsed="0.000029"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:32.528706" elapsed="0.000029"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:32.529031" elapsed="0.000032"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:32.529325" elapsed="0.000031"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:50:32.528522" elapsed="0.000920"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:50:32.528412" elapsed="0.001070"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:32.529684" elapsed="0.000029"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:50:32.529770" elapsed="0.000022"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:50:32.508854" elapsed="0.021078">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:50:32.530032" elapsed="0.000022"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T00:50:32.498344" elapsed="0.031850">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:32.530447" elapsed="0.000030"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:32.536289" elapsed="0.000036"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:32.536569" elapsed="0.000035"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T00:50:32.536667" elapsed="0.000020"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T00:50:32.487919" elapsed="0.048894">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:50:32.536968" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:50:32.537028" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:50:32.487361" elapsed="0.049699"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T00:50:32.537364" elapsed="0.000019"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:50:32.537205" elapsed="0.000218"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:32.537175" elapsed="0.000278"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:50:32.539291" elapsed="0.000294"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:50:32.540244" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:50:32.539798" elapsed="0.000482"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:32.541713" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:32.541082" elapsed="0.000669"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:50:32.541818" elapsed="0.000041"/>
</return>
<msg time="2026-04-08T00:50:32.542025" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:50:32.540608" elapsed="0.001452"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:50:32.542818" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:50:32.542300" elapsed="0.000555"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:50:32.543572" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:50:32.543071" elapsed="0.000537"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:50:32.544103" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:50:32.553891" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:50:32.543830" elapsed="0.013770">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:32.558008" elapsed="0.000050"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:32.558421" elapsed="0.000047"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:32.558789" elapsed="0.000044"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:32.559154" elapsed="0.000080"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:32.559567" elapsed="0.000045"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:32.559931" elapsed="0.000044"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:32.560557" elapsed="0.000046"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:32.560939" elapsed="0.000044"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:32.561321" elapsed="0.000047"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:50:32.560247" elapsed="0.001197"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:50:32.560072" elapsed="0.001429"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:32.561805" elapsed="0.000045"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:50:32.561934" elapsed="0.000033"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:50:32.538516" elapsed="0.023683">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:50:32.562455" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:50:32.562554" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:50:32.537660" elapsed="0.024946"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T00:50:32.564001" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T00:50:32.563298" elapsed="0.000842">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T00:50:32.562791" elapsed="0.001522">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T00:50:32.562749" elapsed="0.001636">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T00:50:32.564532" elapsed="0.000039"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:50:32.486798" elapsed="0.078037">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:32.565261" elapsed="0.000050"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:32.565658" elapsed="0.000052"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T00:50:32.565765" elapsed="0.000018"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T00:50:32.484389" elapsed="0.081483">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:32.566038" elapsed="0.000021"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:32.566231" elapsed="0.000023"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:32.566407" elapsed="0.000020"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:32.566570" elapsed="0.000019"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:32.566735" elapsed="0.000019"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:32.566896" elapsed="0.000020"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T00:50:32.566957" elapsed="0.000014"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T00:50:32.481582" elapsed="0.085472">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:50:33.599601" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:50:33.599096" elapsed="0.000539"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:50:33.600124" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:50:33.599808" elapsed="0.000343"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:50:33.600220" elapsed="0.000042"/>
</return>
<msg time="2026-04-08T00:50:33.600393" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:50:33.598679" elapsed="0.001740"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T00:50:33.605481" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T00:50:33.605291" elapsed="0.000216"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:50:33.605659" elapsed="0.000191"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:33.606292" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:33.606002" elapsed="0.000318"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:33.606937" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:33.606511" elapsed="0.000470"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:50:33.607132" elapsed="0.000206"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:33.607698" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:33.607492" elapsed="0.000231"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:33.608135" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:33.607891" elapsed="0.000302"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:33.608689" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:33.608347" elapsed="0.000367"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:33.609115" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:33.608879" elapsed="0.000294"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:33.609606" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:33.609325" elapsed="0.000306"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:50:33.616204" elapsed="0.000215"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:50:33.624915" elapsed="0.000211"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:50:33.625682" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:50:33.625298" elapsed="0.000411"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:33.626907" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:33.626321" elapsed="0.000632"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:50:33.627090" elapsed="0.000048"/>
</return>
<msg time="2026-04-08T00:50:33.627314" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:50:33.625895" elapsed="0.001451"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:50:33.628047" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:50:33.627523" elapsed="0.000560"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:50:33.628863" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:50:33.628313" elapsed="0.000582"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:50:33.629520" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:50:33.642108" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:50:33.629106" elapsed="0.015582">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:33.644994" elapsed="0.000039"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:33.645268" elapsed="0.000031"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:33.645508" elapsed="0.000030"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:33.645748" elapsed="0.000029"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:33.645991" elapsed="0.000029"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:33.646243" elapsed="0.000030"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:33.646637" elapsed="0.000030"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:33.647003" elapsed="0.000032"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:33.647322" elapsed="0.000034"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:50:33.646452" elapsed="0.001065"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:50:33.646345" elapsed="0.001217"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:33.647771" elapsed="0.000030"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:50:33.647859" elapsed="0.000025"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:50:33.624416" elapsed="0.023614">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:50:33.648132" elapsed="0.000023"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T00:50:33.613946" elapsed="0.034417">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:33.648619" elapsed="0.000032"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:33.654638" elapsed="0.000041"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:33.654976" elapsed="0.000034"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T00:50:33.655079" elapsed="0.000023"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T00:50:33.604730" elapsed="0.050528">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:50:33.655433" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:50:33.655497" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:50:33.604177" elapsed="0.051355"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T00:50:33.655839" elapsed="0.000020"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:50:33.655667" elapsed="0.000235"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:33.655637" elapsed="0.000298"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:50:33.657916" elapsed="0.000327"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:50:33.658960" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:50:33.658469" elapsed="0.000528"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:33.659817" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:33.659552" elapsed="0.000291"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:50:33.659889" elapsed="0.000031"/>
</return>
<msg time="2026-04-08T00:50:33.660038" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:50:33.659211" elapsed="0.000851"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:50:33.660608" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:50:33.660236" elapsed="0.000399"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:50:33.661138" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:50:33.660791" elapsed="0.000389"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:50:33.661596" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:50:33.671706" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:50:33.661381" elapsed="0.012707">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:33.674369" elapsed="0.000032"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:33.674611" elapsed="0.000029"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:33.674876" elapsed="0.000031"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:33.675113" elapsed="0.000029"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:33.675376" elapsed="0.000030"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:33.675608" elapsed="0.000027"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:33.675967" elapsed="0.000027"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:33.676250" elapsed="0.000033"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:33.676487" elapsed="0.000248"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:50:33.675789" elapsed="0.000994"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:50:33.675697" elapsed="0.001122"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:33.677019" elapsed="0.000028"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:50:33.677100" elapsed="0.000021"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:50:33.657086" elapsed="0.020189">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:50:33.677433" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:50:33.677495" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:50:33.656177" elapsed="0.021350"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T00:50:33.678407" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T00:50:33.677941" elapsed="0.000550">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T00:50:33.677642" elapsed="0.000936">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T00:50:33.677616" elapsed="0.001005">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T00:50:33.678684" elapsed="0.000022"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:50:33.603604" elapsed="0.075233">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:33.679087" elapsed="0.000030"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:33.679339" elapsed="0.000029"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T00:50:33.679427" elapsed="0.000021"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T00:50:33.600716" elapsed="0.078849">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:33.679857" elapsed="0.000029"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:33.680107" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:33.680366" elapsed="0.000028"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:33.680594" elapsed="0.000027"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:33.680825" elapsed="0.000028"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:33.681053" elapsed="0.000027"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T00:50:33.681138" elapsed="0.000038"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T00:50:33.597838" elapsed="0.083460">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:50:34.713581" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:50:34.713035" elapsed="0.000579"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:50:34.714107" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:50:34.713787" elapsed="0.000349"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:50:34.714202" elapsed="0.000043"/>
</return>
<msg time="2026-04-08T00:50:34.714377" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:50:34.712637" elapsed="0.001766"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T00:50:34.718988" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T00:50:34.718799" elapsed="0.000215"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:50:34.719183" elapsed="0.000197"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:34.719743" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:34.719534" elapsed="0.000235"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:34.720228" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:34.719958" elapsed="0.000312"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:50:34.720416" elapsed="0.000184"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:34.720957" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:34.720752" elapsed="0.000230"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:34.721429" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:34.721152" elapsed="0.000319"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:34.722170" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:34.721624" elapsed="0.000574"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:34.722605" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:34.722368" elapsed="0.000281"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:34.723084" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:34.722799" elapsed="0.000314"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:50:34.729495" elapsed="0.000305"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:50:34.738321" elapsed="0.000212"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:50:34.739080" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:50:34.738691" elapsed="0.000416"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:34.740294" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:34.739733" elapsed="0.000602"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:50:34.740473" elapsed="0.000036"/>
</return>
<msg time="2026-04-08T00:50:34.740636" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:50:34.739326" elapsed="0.001335"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:50:34.741286" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:50:34.740821" elapsed="0.000508"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:50:34.741927" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:50:34.741503" elapsed="0.000451"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:50:34.742466" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:50:34.754044" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:50:34.742117" elapsed="0.014590">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:34.756987" elapsed="0.000035"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:34.757319" elapsed="0.000041"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:34.757586" elapsed="0.000030"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:34.757835" elapsed="0.000029"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:34.758085" elapsed="0.000030"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:34.758353" elapsed="0.000031"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:34.758760" elapsed="0.000031"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:34.759105" elapsed="0.000030"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:34.759425" elapsed="0.000031"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:50:34.758569" elapsed="0.000974"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:50:34.758459" elapsed="0.001127"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:34.759798" elapsed="0.000030"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:50:34.759885" elapsed="0.000023"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:50:34.737812" elapsed="0.022247">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:50:34.760184" elapsed="0.000024"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T00:50:34.727274" elapsed="0.033061">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:34.760662" elapsed="0.000031"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:34.767185" elapsed="0.000041"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:34.767476" elapsed="0.000031"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T00:50:34.767573" elapsed="0.000022"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T00:50:34.718255" elapsed="0.049473">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:50:34.767896" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:50:34.767961" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:50:34.717674" elapsed="0.050322"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T00:50:34.768338" elapsed="0.000020"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:50:34.768134" elapsed="0.000268"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:34.768103" elapsed="0.000334"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:50:34.770517" elapsed="0.000210"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:50:34.771212" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:50:34.770880" elapsed="0.000359"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:34.772025" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:34.771758" elapsed="0.000293"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:50:34.772098" elapsed="0.000031"/>
</return>
<msg time="2026-04-08T00:50:34.772265" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:50:34.771421" elapsed="0.000869"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:50:34.772820" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:50:34.772449" elapsed="0.000397"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:50:34.773402" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:50:34.773002" elapsed="0.000426"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:50:34.773808" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:50:34.785815" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:50:34.773590" elapsed="0.014847">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:34.788711" elapsed="0.000033"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:34.788965" elapsed="0.000030"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:34.789268" elapsed="0.000042"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:34.789537" elapsed="0.000030"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:34.789788" elapsed="0.000030"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:34.790027" elapsed="0.000029"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:34.790526" elapsed="0.000030"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:34.790775" elapsed="0.000029"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:34.791011" elapsed="0.000029"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:50:34.790334" elapsed="0.000754"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:50:34.790225" elapsed="0.000903"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:34.791358" elapsed="0.000030"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:50:34.791445" elapsed="0.000023"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:50:34.769661" elapsed="0.021949">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:50:34.791779" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:50:34.791844" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:50:34.768658" elapsed="0.023220"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T00:50:34.792834" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T00:50:34.792362" elapsed="0.000562">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T00:50:34.792013" elapsed="0.001001">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T00:50:34.791977" elapsed="0.001083">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T00:50:34.793127" elapsed="0.000023"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:50:34.717085" elapsed="0.076224">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:34.793573" elapsed="0.000031"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:34.793817" elapsed="0.000029"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T00:50:34.793906" elapsed="0.000023"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T00:50:34.714701" elapsed="0.079351">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:34.794324" elapsed="0.000032"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:34.794587" elapsed="0.000029"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:34.794834" elapsed="0.000030"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:34.795075" elapsed="0.000038"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:34.795373" elapsed="0.000028"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:34.795599" elapsed="0.000026"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T00:50:34.795727" elapsed="0.000022"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T00:50:34.711796" elapsed="0.084073">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:50:35.827821" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:50:35.827352" elapsed="0.000526"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:50:35.828382" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:50:35.828050" elapsed="0.000358"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:50:35.828455" elapsed="0.000039"/>
</return>
<msg time="2026-04-08T00:50:35.828624" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:50:35.826926" elapsed="0.001723"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T00:50:35.833244" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T00:50:35.833031" elapsed="0.000244"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:50:35.833457" elapsed="0.000197"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:35.834018" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:35.833809" elapsed="0.000235"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:35.834499" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:35.834244" elapsed="0.000298"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:50:35.834689" elapsed="0.000182"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:35.835245" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:35.835023" elapsed="0.000248"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:35.835683" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:35.835438" elapsed="0.000286"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:35.836281" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:35.835905" elapsed="0.000402"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:35.836711" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:35.836474" elapsed="0.000282"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:35.837208" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:35.836910" elapsed="0.000325"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:50:35.843719" elapsed="0.000237"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:50:35.852479" elapsed="0.000211"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:50:35.853260" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:50:35.852844" elapsed="0.000443"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:35.854428" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:35.853869" elapsed="0.000601"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:50:35.854604" elapsed="0.000032"/>
</return>
<msg time="2026-04-08T00:50:35.854760" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:50:35.853471" elapsed="0.001314"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:50:35.855411" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:50:35.854945" elapsed="0.000548"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:50:35.856107" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:50:35.855655" elapsed="0.000479"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:50:35.856657" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:50:35.867954" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:50:35.856326" elapsed="0.014158">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:35.870747" elapsed="0.000032"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:35.870991" elapsed="0.000029"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:35.871247" elapsed="0.000031"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:35.871483" elapsed="0.000029"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:35.871722" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:35.871985" elapsed="0.000029"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:35.872380" elapsed="0.000029"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:35.872700" elapsed="0.000030"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:35.872973" elapsed="0.000029"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:50:35.872195" elapsed="0.000890"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:50:35.872080" elapsed="0.001045"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:35.873360" elapsed="0.000030"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:50:35.873447" elapsed="0.000022"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:50:35.851967" elapsed="0.021641">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:50:35.873707" elapsed="0.000022"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T00:50:35.841470" elapsed="0.032377">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:35.874096" elapsed="0.000029"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:35.880337" elapsed="0.000038"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:35.880607" elapsed="0.000029"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T00:50:35.880699" elapsed="0.000021"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T00:50:35.832493" elapsed="0.048400">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:50:35.881049" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:50:35.881109" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:50:35.831925" elapsed="0.049216"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T00:50:35.881444" elapsed="0.000019"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:50:35.881287" elapsed="0.000216"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:35.881259" elapsed="0.000276"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:50:35.883351" elapsed="0.000290"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:50:35.884365" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:50:35.883901" elapsed="0.000490"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:35.885187" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:35.884907" elapsed="0.000308"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:50:35.885262" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:50:35.885409" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:50:35.884571" elapsed="0.000863"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:50:35.885956" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:50:35.885591" elapsed="0.000392"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:50:35.886499" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:50:35.886136" elapsed="0.000390"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:50:35.886883" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:50:35.896193" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:50:35.886685" elapsed="0.011182">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:35.898048" elapsed="0.000022"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:35.898235" elapsed="0.000022"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:35.898402" elapsed="0.000020"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:35.898564" elapsed="0.000020"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:35.898735" elapsed="0.000020"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:35.898894" elapsed="0.000020"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:35.899145" elapsed="0.000035"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:35.899331" elapsed="0.000020"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:35.899488" elapsed="0.000020"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:50:35.899021" elapsed="0.000519"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:50:35.898957" elapsed="0.000609"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:35.899702" elapsed="0.000020"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:50:35.899792" elapsed="0.000020"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:50:35.882581" elapsed="0.017328">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:50:35.900058" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:50:35.900103" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:50:35.881742" elapsed="0.018395"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T00:50:35.901025" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T00:50:35.900587" elapsed="0.000523">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T00:50:35.900289" elapsed="0.000932">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T00:50:35.900253" elapsed="0.001014">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T00:50:35.901331" elapsed="0.000022"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:50:35.831365" elapsed="0.070102">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:35.901711" elapsed="0.000029"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:35.901939" elapsed="0.000028"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T00:50:35.902023" elapsed="0.000021"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T00:50:35.828946" elapsed="0.073231">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:35.902413" elapsed="0.000029"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:35.902658" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:35.902891" elapsed="0.000028"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:35.903112" elapsed="0.000027"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:35.903371" elapsed="0.000029"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:35.903599" elapsed="0.000027"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T00:50:35.903682" elapsed="0.000021"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T00:50:35.826148" elapsed="0.077717">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:50:36.935400" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:50:36.934923" elapsed="0.000509"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:50:36.935980" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:50:36.935602" elapsed="0.000405"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:50:36.936054" elapsed="0.000039"/>
</return>
<msg time="2026-04-08T00:50:36.936247" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:50:36.934538" elapsed="0.001735"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T00:50:36.940924" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T00:50:36.940736" elapsed="0.000215"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:50:36.941101" elapsed="0.000206"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:36.941669" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:36.941460" elapsed="0.000234"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:36.942128" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:36.941875" elapsed="0.000310"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:50:36.942332" elapsed="0.000342"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:36.943035" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:36.942827" elapsed="0.000233"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:36.943488" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:36.943243" elapsed="0.000286"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:36.944019" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:36.943680" elapsed="0.000364"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:36.944491" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:36.944223" elapsed="0.000325"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:36.944983" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:36.944701" elapsed="0.000308"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:50:36.951440" elapsed="0.000220"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:50:36.960255" elapsed="0.000212"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:50:36.961006" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:50:36.960623" elapsed="0.000409"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:36.962289" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:36.961641" elapsed="0.000692"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:50:36.962481" elapsed="0.000039"/>
</return>
<msg time="2026-04-08T00:50:36.962645" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:50:36.961244" elapsed="0.001425"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:50:36.963298" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:50:36.962828" elapsed="0.000498"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:50:36.963911" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:50:36.963484" elapsed="0.000454"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:50:36.964445" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:50:36.974599" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:50:36.964098" elapsed="0.013941">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:36.978522" elapsed="0.000131"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:36.979003" elapsed="0.000054"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:36.979424" elapsed="0.000047"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:36.979801" elapsed="0.000046"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:36.980212" elapsed="0.000049"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:36.980585" elapsed="0.000046"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:36.981203" elapsed="0.000047"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:36.981713" elapsed="0.000047"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:36.982145" elapsed="0.000099"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:50:36.980885" elapsed="0.001520"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:50:36.980734" elapsed="0.001734"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:36.982788" elapsed="0.000047"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:50:36.982922" elapsed="0.000035"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:50:36.959747" elapsed="0.023475">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:50:36.983407" elapsed="0.000034"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T00:50:36.949246" elapsed="0.034387">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:36.984025" elapsed="0.000046"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:36.991836" elapsed="0.000028"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:36.992036" elapsed="0.000023"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T00:50:36.992104" elapsed="0.000016"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T00:50:36.940196" elapsed="0.052042">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:50:36.992362" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:50:36.992411" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:50:36.939632" elapsed="0.052811"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T00:50:36.992660" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:50:36.992539" elapsed="0.000172"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:36.992518" elapsed="0.000216"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:50:36.994187" elapsed="0.000242"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:50:36.994914" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:50:36.994601" elapsed="0.000340"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:36.995764" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:36.995494" elapsed="0.000296"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:50:36.995837" elapsed="0.000031"/>
</return>
<msg time="2026-04-08T00:50:36.995988" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:50:36.995123" elapsed="0.000890"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:50:36.996577" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:50:36.996186" elapsed="0.000419"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:50:36.997110" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:50:36.996763" elapsed="0.000373"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:50:36.997536" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:50:37.006658" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:50:36.997315" elapsed="0.012542">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:37.010294" elapsed="0.000074"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:37.010705" elapsed="0.000047"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:37.011070" elapsed="0.000044"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:37.011466" elapsed="0.000045"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:37.011840" elapsed="0.000044"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:37.012230" elapsed="0.000048"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:37.012808" elapsed="0.000046"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:37.013219" elapsed="0.000049"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:37.013586" elapsed="0.000045"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:50:37.012526" elapsed="0.001176"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:50:37.012378" elapsed="0.001380"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:37.014069" elapsed="0.000044"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:50:37.014229" elapsed="0.000035"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:50:36.993621" elapsed="0.020869">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:50:37.014743" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:50:37.014841" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:50:36.992886" elapsed="0.022006"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T00:50:37.016317" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T00:50:37.015583" elapsed="0.000871">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T00:50:37.015075" elapsed="0.001595">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T00:50:37.015034" elapsed="0.001710">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T00:50:37.016846" elapsed="0.000034"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:50:36.939020" elapsed="0.078039">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:37.017484" elapsed="0.000049"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:37.017855" elapsed="0.000044"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T00:50:37.017991" elapsed="0.000032"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T00:50:36.936567" elapsed="0.081669">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:37.018665" elapsed="0.000047"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:37.019063" elapsed="0.000045"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:37.019320" elapsed="0.000020"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:37.019618" elapsed="0.000019"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:37.019780" elapsed="0.000019"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:37.019943" elapsed="0.000019"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T00:50:37.020003" elapsed="0.000014"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T00:50:36.933738" elapsed="0.086362">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:50:38.051565" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:50:38.051034" elapsed="0.000565"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:50:38.052101" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:50:38.051774" elapsed="0.000355"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:50:38.052203" elapsed="0.000043"/>
</return>
<msg time="2026-04-08T00:50:38.052383" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:50:38.050639" elapsed="0.001771"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T00:50:38.057037" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T00:50:38.056848" elapsed="0.000232"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:50:38.057250" elapsed="0.000195"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:38.057886" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:38.057672" elapsed="0.000240"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:38.058394" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:38.058105" elapsed="0.000331"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:50:38.058585" elapsed="0.000184"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:38.059132" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:38.058922" elapsed="0.000251"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:38.059599" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:38.059347" elapsed="0.000294"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:38.060133" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:38.059793" elapsed="0.000381"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:38.060580" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:38.060344" elapsed="0.000279"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:38.061065" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:38.060773" elapsed="0.000320"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:50:38.067574" elapsed="0.000216"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:50:38.076356" elapsed="0.000211"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:50:38.077138" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:50:38.076722" elapsed="0.000467"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:38.078327" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:38.077775" elapsed="0.000593"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:50:38.078503" elapsed="0.000035"/>
</return>
<msg time="2026-04-08T00:50:38.078663" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:50:38.077377" elapsed="0.001312"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:50:38.079310" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:50:38.078849" elapsed="0.000488"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:50:38.079921" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:50:38.079495" elapsed="0.000452"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:50:38.080468" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:50:38.092366" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:50:38.080108" elapsed="0.014681">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:38.095055" elapsed="0.000034"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:38.095322" elapsed="0.000031"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:38.095556" elapsed="0.000028"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:38.095783" elapsed="0.000029"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:38.096018" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:38.096264" elapsed="0.000030"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:38.096648" elapsed="0.000027"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:38.097058" elapsed="0.000032"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:38.097358" elapsed="0.000031"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:50:38.096469" elapsed="0.001003"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:50:38.096365" elapsed="0.001148"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:38.097714" elapsed="0.000028"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:50:38.097798" elapsed="0.000022"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:50:38.075846" elapsed="0.022120">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:50:38.098063" elapsed="0.000021"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T00:50:38.065384" elapsed="0.032845">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:38.098477" elapsed="0.000030"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:38.104382" elapsed="0.000038"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:38.104652" elapsed="0.000029"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T00:50:38.104743" elapsed="0.000021"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T00:50:38.056312" elapsed="0.048576">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:50:38.105068" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:50:38.105130" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:50:38.055741" elapsed="0.049441"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T00:50:38.105476" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:50:38.105313" elapsed="0.000221"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:38.105284" elapsed="0.000283"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:50:38.107422" elapsed="0.000292"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:50:38.108372" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:50:38.107927" elapsed="0.000481"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:38.109639" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:38.109183" elapsed="0.000483"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:50:38.109715" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:50:38.109863" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:50:38.108657" elapsed="0.001231"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:50:38.110432" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:50:38.110044" elapsed="0.000415"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:50:38.110997" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:50:38.110651" elapsed="0.000373"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:50:38.111406" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:50:38.121335" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:50:38.111198" elapsed="0.011833">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:38.123232" elapsed="0.000023"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:38.123405" elapsed="0.000020"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:38.123568" elapsed="0.000020"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:38.123731" elapsed="0.000020"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:38.123900" elapsed="0.000019"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:38.124059" elapsed="0.000019"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:38.124333" elapsed="0.000021"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:38.124503" elapsed="0.000020"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:38.124662" elapsed="0.000020"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:50:38.124206" elapsed="0.000507"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:50:38.124122" elapsed="0.000618"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:38.124876" elapsed="0.000020"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:50:38.124933" elapsed="0.000015"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:50:38.106642" elapsed="0.018437">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:50:38.125227" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:50:38.125293" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:50:38.105777" elapsed="0.019549"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T00:50:38.126206" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T00:50:38.125740" elapsed="0.000558">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T00:50:38.125442" elapsed="0.000943">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T00:50:38.125415" elapsed="0.001014">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T00:50:38.126492" elapsed="0.000022"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:50:38.055194" elapsed="0.071434">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:38.126872" elapsed="0.000029"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:38.127100" elapsed="0.000027"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T00:50:38.127259" elapsed="0.000024"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T00:50:38.052734" elapsed="0.074669">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:38.127638" elapsed="0.000029"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:38.127885" elapsed="0.000027"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:38.128120" elapsed="0.000027"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:38.128373" elapsed="0.000027"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:38.128603" elapsed="0.000026"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:38.128826" elapsed="0.000027"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T00:50:38.128909" elapsed="0.000020"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T00:50:38.049816" elapsed="0.079249">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:50:39.169423" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:50:39.168908" elapsed="0.000549"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:50:39.169950" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:50:39.169631" elapsed="0.000346"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:50:39.170028" elapsed="0.000046"/>
</return>
<msg time="2026-04-08T00:50:39.170225" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:50:39.168486" elapsed="0.001766"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T00:50:39.175224" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T00:50:39.175014" elapsed="0.000237"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:50:39.175405" elapsed="0.000195"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:39.175980" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:39.175767" elapsed="0.000238"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:39.176472" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:39.176212" elapsed="0.000301"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:50:39.176659" elapsed="0.000180"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:39.177213" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:39.176991" elapsed="0.000248"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:39.177653" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:39.177410" elapsed="0.000284"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:39.178201" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:39.177845" elapsed="0.000383"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:39.178710" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:39.178472" elapsed="0.000282"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:39.179198" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:39.178902" elapsed="0.000323"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:50:39.185621" elapsed="0.000215"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:50:39.194413" elapsed="0.000218"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:50:39.195197" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:50:39.194787" elapsed="0.000439"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:39.196414" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:39.195854" elapsed="0.000602"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:50:39.196590" elapsed="0.000034"/>
</return>
<msg time="2026-04-08T00:50:39.196750" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:50:39.195416" elapsed="0.001359"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:50:39.197400" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:50:39.196936" elapsed="0.000491"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:50:39.198012" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:50:39.197586" elapsed="0.000453"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:50:39.198556" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:50:39.209774" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:50:39.198217" elapsed="0.014049">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:39.212531" elapsed="0.000032"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:39.212775" elapsed="0.000030"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:39.213011" elapsed="0.000028"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:39.213268" elapsed="0.000030"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:39.213511" elapsed="0.000029"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:39.213739" elapsed="0.000029"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:39.214124" elapsed="0.000029"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:39.214462" elapsed="0.000030"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:39.214732" elapsed="0.000030"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:50:39.213941" elapsed="0.000904"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:50:39.213837" elapsed="0.001049"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:39.215086" elapsed="0.000028"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:50:39.215188" elapsed="0.000024"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:50:39.193901" elapsed="0.021456">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:50:39.215518" elapsed="0.000024"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T00:50:39.183394" elapsed="0.032269">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:39.215947" elapsed="0.000030"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:39.221836" elapsed="0.000037"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:39.222107" elapsed="0.000028"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T00:50:39.222217" elapsed="0.000023"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T00:50:39.174469" elapsed="0.047897">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:50:39.222525" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:50:39.222587" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:50:39.173881" elapsed="0.048738"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T00:50:39.222909" elapsed="0.000019"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:50:39.222747" elapsed="0.000220"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:39.222717" elapsed="0.000282"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:50:39.224876" elapsed="0.000312"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:50:39.225829" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:50:39.225404" elapsed="0.000461"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:39.226980" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:39.226609" elapsed="0.000407"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:50:39.227082" elapsed="0.000041"/>
</return>
<msg time="2026-04-08T00:50:39.227313" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:50:39.226117" elapsed="0.001231"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:50:39.228127" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:50:39.227571" elapsed="0.000614"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:50:39.228779" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:50:39.228433" elapsed="0.000371"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:50:39.229184" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:50:39.238429" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:50:39.228963" elapsed="0.011844">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:39.241066" elapsed="0.000031"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:39.241329" elapsed="0.000030"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:39.241629" elapsed="0.000029"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:39.241859" elapsed="0.000028"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:39.242093" elapsed="0.000027"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:39.242339" elapsed="0.000029"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:39.242701" elapsed="0.000028"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:39.242936" elapsed="0.000027"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:39.243173" elapsed="0.000255"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:50:39.242523" elapsed="0.000956"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:50:39.242431" elapsed="0.001085"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:39.243733" elapsed="0.000029"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:50:39.243817" elapsed="0.000021"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:50:39.224097" elapsed="0.019870">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:50:39.244123" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:50:39.244208" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:50:39.223233" elapsed="0.021011"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T00:50:39.245102" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T00:50:39.244661" elapsed="0.000548">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T00:50:39.244361" elapsed="0.000936">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T00:50:39.244334" elapsed="0.001007">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T00:50:39.245404" elapsed="0.000023"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:50:39.173333" elapsed="0.072208">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:39.245829" elapsed="0.000043"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:39.246202" elapsed="0.000041"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T00:50:39.246317" elapsed="0.000024"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T00:50:39.170551" elapsed="0.075939">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:39.247012" elapsed="0.000038"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:39.247358" elapsed="0.000036"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:39.247692" elapsed="0.000035"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:39.248055" elapsed="0.000040"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:39.248427" elapsed="0.000034"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:39.248702" elapsed="0.000030"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T00:50:39.248798" elapsed="0.000025"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T00:50:39.167487" elapsed="0.081476">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:50:40.288797" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:50:40.288283" elapsed="0.000550"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:50:40.289349" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:50:40.289010" elapsed="0.000366"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:50:40.289425" elapsed="0.000047"/>
</return>
<msg time="2026-04-08T00:50:40.289606" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:50:40.287847" elapsed="0.001785"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T00:50:40.294268" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T00:50:40.294057" elapsed="0.000237"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:50:40.294448" elapsed="0.000221"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:40.295033" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:40.294822" elapsed="0.000236"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:40.295522" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:40.295263" elapsed="0.000301"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:50:40.295709" elapsed="0.000181"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:40.296262" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:40.296041" elapsed="0.000248"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:40.296702" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:40.296456" elapsed="0.000286"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:40.297256" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:40.296895" elapsed="0.000387"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:40.297890" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:40.297446" elapsed="0.000488"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:40.298390" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:40.298085" elapsed="0.000330"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:50:40.304792" elapsed="0.000215"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:50:40.313522" elapsed="0.000215"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:50:40.314311" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:50:40.313895" elapsed="0.000443"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:40.315620" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:40.315052" elapsed="0.000609"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:50:40.315796" elapsed="0.000033"/>
</return>
<msg time="2026-04-08T00:50:40.315954" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:50:40.314645" elapsed="0.001334"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:50:40.316604" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:50:40.316140" elapsed="0.000492"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:50:40.317240" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:50:40.316793" elapsed="0.000474"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:50:40.317772" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:50:40.328960" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:50:40.317430" elapsed="0.015010">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:40.332889" elapsed="0.000056"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:40.333276" elapsed="0.000045"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:40.333625" elapsed="0.000041"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:40.333961" elapsed="0.000039"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:40.334325" elapsed="0.000042"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:40.334704" elapsed="0.000042"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:40.335296" elapsed="0.000032"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:40.335604" elapsed="0.000029"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:40.335869" elapsed="0.000029"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:50:40.335005" elapsed="0.000978"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:50:40.334847" elapsed="0.001179"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:40.336235" elapsed="0.000030"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:50:40.336325" elapsed="0.000027"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:50:40.313010" elapsed="0.023496">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:50:40.336583" elapsed="0.000017"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T00:50:40.302593" elapsed="0.034096">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:40.336891" elapsed="0.000023"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:40.341671" elapsed="0.000033"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:40.341950" elapsed="0.000022"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T00:50:40.342017" elapsed="0.000016"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T00:50:40.293518" elapsed="0.048616">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:50:40.342310" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:50:40.342357" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:50:40.292936" elapsed="0.049444"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T00:50:40.342688" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:50:40.342531" elapsed="0.000202"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:40.342498" elapsed="0.000259"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:50:40.344652" elapsed="0.000304"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:50:40.345656" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:50:40.345193" elapsed="0.000500"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:40.346948" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:40.346542" elapsed="0.000445"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:50:40.347056" elapsed="0.000045"/>
</return>
<msg time="2026-04-08T00:50:40.347307" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:50:40.345954" elapsed="0.001392"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:50:40.347924" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:50:40.347544" elapsed="0.000407"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:50:40.348473" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:50:40.348107" elapsed="0.000393"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:50:40.348895" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:50:40.362378" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:50:40.348661" elapsed="0.015532">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:40.364385" elapsed="0.000024"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:40.364557" elapsed="0.000020"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:40.364720" elapsed="0.000020"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:40.364884" elapsed="0.000020"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:40.365050" elapsed="0.000019"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:40.365225" elapsed="0.000021"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:40.365629" elapsed="0.000020"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:40.365798" elapsed="0.000020"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:40.366006" elapsed="0.000021"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:50:40.365378" elapsed="0.000682"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:50:40.365297" elapsed="0.000791"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:40.366245" elapsed="0.000021"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:50:40.366305" elapsed="0.000016"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:50:40.343811" elapsed="0.022624">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:50:40.366568" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:50:40.366613" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:50:40.342914" elapsed="0.023722"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T00:50:40.367296" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T00:50:40.366946" elapsed="0.000413">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T00:50:40.366723" elapsed="0.000699">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T00:50:40.366702" elapsed="0.000751">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T00:50:40.367499" elapsed="0.000016"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:50:40.292386" elapsed="0.075214">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:40.367780" elapsed="0.000021"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:40.367948" elapsed="0.000020"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T00:50:40.368010" elapsed="0.000016"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T00:50:40.289934" elapsed="0.078197">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:40.368332" elapsed="0.000024"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:40.368517" elapsed="0.000020"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:40.368685" elapsed="0.000020"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:40.368845" elapsed="0.000019"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:40.369010" elapsed="0.000019"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:40.369186" elapsed="0.000020"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T00:50:40.369249" elapsed="0.000014"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T00:50:40.286864" elapsed="0.082487">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:50:41.403852" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:50:41.403211" elapsed="0.000685"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:50:41.404597" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:50:41.404133" elapsed="0.000501"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:50:41.404700" elapsed="0.000053"/>
</return>
<msg time="2026-04-08T00:50:41.404934" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:50:41.402653" elapsed="0.002317"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T00:50:41.411221" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T00:50:41.411015" elapsed="0.000233"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:50:41.411404" elapsed="0.000194"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:41.411958" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:41.411750" elapsed="0.000233"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:41.412443" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:41.412185" elapsed="0.000299"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:50:41.412631" elapsed="0.000180"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:41.413183" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:41.412963" elapsed="0.000247"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:41.413635" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:41.413391" elapsed="0.000284"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:41.414182" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:41.413827" elapsed="0.000381"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:41.414607" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:41.414373" elapsed="0.000278"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:41.415077" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:41.414799" elapsed="0.000303"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:50:41.421669" elapsed="0.000216"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:50:41.430386" elapsed="0.000214"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:50:41.431149" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:50:41.430756" elapsed="0.000450"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:41.432547" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:41.431953" elapsed="0.000636"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:50:41.432723" elapsed="0.000034"/>
</return>
<msg time="2026-04-08T00:50:41.432881" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:50:41.431412" elapsed="0.001495"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:50:41.433607" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:50:41.433068" elapsed="0.000567"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:50:41.434244" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:50:41.433797" elapsed="0.000474"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:50:41.434774" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:50:41.445392" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:50:41.434440" elapsed="0.013546">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:41.448296" elapsed="0.000037"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:41.448557" elapsed="0.000031"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:41.448802" elapsed="0.000031"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:41.449049" elapsed="0.000031"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:41.449378" elapsed="0.000034"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:41.449631" elapsed="0.000030"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:41.450035" elapsed="0.000029"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:41.450395" elapsed="0.000031"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:41.450683" elapsed="0.000031"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:50:41.449843" elapsed="0.000958"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:50:41.449734" elapsed="0.001109"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:41.451056" elapsed="0.000030"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:50:41.451145" elapsed="0.000044"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:50:41.429880" elapsed="0.021460">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:50:41.451445" elapsed="0.000022"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T00:50:41.419454" elapsed="0.032139">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:41.451849" elapsed="0.000031"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:41.458419" elapsed="0.000028"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:41.458615" elapsed="0.000021"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T00:50:41.458682" elapsed="0.000015"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T00:50:41.410468" elapsed="0.048320">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:50:41.458905" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:50:41.458948" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:50:41.409633" elapsed="0.049338"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T00:50:41.459255" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:50:41.459116" elapsed="0.000183"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:41.459093" elapsed="0.000229"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:50:41.460701" elapsed="0.000211"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:50:41.461576" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:50:41.461067" elapsed="0.000544"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:41.462445" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:41.462135" elapsed="0.000337"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:50:41.462520" elapsed="0.000031"/>
</return>
<msg time="2026-04-08T00:50:41.462667" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:50:41.461797" elapsed="0.000895"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:50:41.463232" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:50:41.462849" elapsed="0.000409"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:50:41.463758" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:50:41.463413" elapsed="0.000371"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:50:41.464212" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:50:41.475651" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:50:41.463943" elapsed="0.014837">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:41.479215" elapsed="0.000051"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:41.479597" elapsed="0.000046"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:41.479957" elapsed="0.000044"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:41.480343" elapsed="0.000048"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:41.480719" elapsed="0.000044"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:41.481077" elapsed="0.000044"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:41.481752" elapsed="0.000044"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:41.482128" elapsed="0.000072"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:41.482517" elapsed="0.000044"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:50:41.481469" elapsed="0.001163"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:50:41.481315" elapsed="0.001374"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:41.482991" elapsed="0.000042"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:50:41.483119" elapsed="0.000033"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:50:41.460130" elapsed="0.023252">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:50:41.483628" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:50:41.483725" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:50:41.459474" elapsed="0.024303"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T00:50:41.485318" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T00:50:41.484542" elapsed="0.000916">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T00:50:41.484036" elapsed="0.001559">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T00:50:41.483994" elapsed="0.001669">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T00:50:41.485764" elapsed="0.000034"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:50:41.408814" elapsed="0.077166">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:41.486367" elapsed="0.000023"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:41.486538" elapsed="0.000020"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T00:50:41.486599" elapsed="0.000015"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T00:50:41.405439" elapsed="0.081260">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:41.486866" elapsed="0.000020"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:41.487042" elapsed="0.000019"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:41.487226" elapsed="0.000020"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:41.487388" elapsed="0.000019"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:41.487552" elapsed="0.000019"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:41.487712" elapsed="0.000019"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T00:50:41.487772" elapsed="0.000014"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T00:50:41.401566" elapsed="0.086303">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:50:42.519899" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:50:42.519420" elapsed="0.000512"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:50:42.520458" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:50:42.520103" elapsed="0.000381"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:50:42.520533" elapsed="0.000041"/>
</return>
<msg time="2026-04-08T00:50:42.520707" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:50:42.519014" elapsed="0.001723"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T00:50:42.525478" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T00:50:42.525287" elapsed="0.000218"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:50:42.525656" elapsed="0.000193"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:42.526227" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:42.526001" elapsed="0.000252"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:42.526693" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:42.526438" elapsed="0.000296"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:50:42.526880" elapsed="0.000189"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:42.527444" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:42.527237" elapsed="0.000232"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:42.527877" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:42.527636" elapsed="0.000282"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:42.528444" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:42.528069" elapsed="0.000401"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:42.528870" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:42.528636" elapsed="0.000276"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:42.529358" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:42.529060" elapsed="0.000324"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:50:42.535809" elapsed="0.000213"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:50:42.544581" elapsed="0.000211"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:50:42.545368" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:50:42.544948" elapsed="0.000446"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:42.546534" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:42.545978" elapsed="0.000597"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:50:42.546707" elapsed="0.000032"/>
</return>
<msg time="2026-04-08T00:50:42.546863" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:50:42.545581" elapsed="0.001307"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:50:42.547514" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:50:42.547049" elapsed="0.000492"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:50:42.548140" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:50:42.547700" elapsed="0.000486"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:50:42.548695" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:50:42.560380" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:50:42.548350" elapsed="0.014543">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:42.563185" elapsed="0.000036"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:42.563437" elapsed="0.000029"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:42.563669" elapsed="0.000028"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:42.563898" elapsed="0.000028"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:42.564257" elapsed="0.000032"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:42.564492" elapsed="0.000028"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:42.564874" elapsed="0.000028"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:42.565210" elapsed="0.000030"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:42.565481" elapsed="0.000029"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:50:42.564694" elapsed="0.000901"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:50:42.564590" elapsed="0.001046"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:42.565832" elapsed="0.000029"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:50:42.565916" elapsed="0.000022"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:50:42.544039" elapsed="0.022079">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:50:42.566243" elapsed="0.000022"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T00:50:42.533625" elapsed="0.032757">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:42.566622" elapsed="0.000029"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:42.572685" elapsed="0.000040"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:42.572971" elapsed="0.000031"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T00:50:42.573068" elapsed="0.000023"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T00:50:42.524739" elapsed="0.048509">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:50:42.573396" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:50:42.573440" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:50:42.524187" elapsed="0.049277"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T00:50:42.573686" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:50:42.573560" elapsed="0.000168"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:42.573538" elapsed="0.000214"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:50:42.575219" elapsed="0.000213"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:50:42.575899" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:50:42.575583" elapsed="0.000341"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:42.576985" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:42.576481" elapsed="0.000532"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:50:42.577210" elapsed="0.000083"/>
</return>
<msg time="2026-04-08T00:50:42.577424" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:50:42.576126" elapsed="0.001324"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:50:42.577987" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:50:42.577609" elapsed="0.000405"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:50:42.578529" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:50:42.578185" elapsed="0.000370"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:50:42.578935" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:50:42.588723" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:50:42.578714" elapsed="0.014196">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:42.593411" elapsed="0.000059"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:42.593832" elapsed="0.000048"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:42.594300" elapsed="0.000065"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:42.594741" elapsed="0.000049"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:42.595194" elapsed="0.000051"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:42.595592" elapsed="0.000047"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:42.596298" elapsed="0.000051"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:42.596715" elapsed="0.000048"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:42.597098" elapsed="0.000048"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:50:42.595916" elapsed="0.001338"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:50:42.595749" elapsed="0.001589"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:42.597689" elapsed="0.000049"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:50:42.597832" elapsed="0.000038"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:50:42.574640" elapsed="0.023459">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:50:42.598419" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:50:42.598525" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:50:42.573939" elapsed="0.024642"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T00:50:42.600253" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T00:50:42.599346" elapsed="0.001028">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T00:50:42.598787" elapsed="0.001674">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T00:50:42.598739" elapsed="0.001767">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T00:50:42.600570" elapsed="0.000022"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:50:42.523606" elapsed="0.077102">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:42.601019" elapsed="0.000030"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:42.601276" elapsed="0.000029"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T00:50:42.601364" elapsed="0.000021"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T00:50:42.521034" elapsed="0.080470">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:42.601738" elapsed="0.000028"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:42.601985" elapsed="0.000027"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:42.602240" elapsed="0.000028"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:42.602466" elapsed="0.000030"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:42.602713" elapsed="0.000030"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:42.602970" elapsed="0.000029"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T00:50:42.603066" elapsed="0.000027"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T00:50:42.518225" elapsed="0.085015">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:50:43.628272" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:50:43.627788" elapsed="0.000517"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:50:43.628791" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:50:43.628475" elapsed="0.000343"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:50:43.628865" elapsed="0.000039"/>
</return>
<msg time="2026-04-08T00:50:43.629035" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:50:43.627399" elapsed="0.001663"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T00:50:43.633954" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T00:50:43.633766" elapsed="0.000215"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:50:43.634134" elapsed="0.000207"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:43.634703" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:43.634495" elapsed="0.000234"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:43.635226" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:43.634917" elapsed="0.000352"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:50:43.635418" elapsed="0.000180"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:43.635956" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:43.635750" elapsed="0.000232"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:43.636483" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:43.636235" elapsed="0.000290"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:43.637021" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:43.636677" elapsed="0.000370"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:43.637467" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:43.637229" elapsed="0.000282"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:43.637943" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:43.637660" elapsed="0.000309"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:50:43.644442" elapsed="0.000215"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:50:43.653228" elapsed="0.000217"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:50:43.654108" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:50:43.653722" elapsed="0.000419"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:43.655332" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:43.654756" elapsed="0.000618"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:50:43.655508" elapsed="0.000032"/>
</return>
<msg time="2026-04-08T00:50:43.655664" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:50:43.654357" elapsed="0.001331"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:50:43.656304" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:50:43.655848" elapsed="0.000484"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:50:43.656916" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:50:43.656491" elapsed="0.000451"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:50:43.657459" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:50:43.668665" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:50:43.657105" elapsed="0.013343">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:43.670637" elapsed="0.000024"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:43.670811" elapsed="0.000021"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:43.670998" elapsed="0.000021"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:43.671187" elapsed="0.000022"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:43.671359" elapsed="0.000021"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:43.671520" elapsed="0.000020"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:43.671789" elapsed="0.000020"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:43.672013" elapsed="0.000021"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:43.672222" elapsed="0.000022"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:50:43.671660" elapsed="0.000644"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:50:43.671588" elapsed="0.000745"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:43.672475" elapsed="0.000020"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:50:43.672534" elapsed="0.000015"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:50:43.652677" elapsed="0.019974">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:50:43.672764" elapsed="0.000017"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T00:50:43.642184" elapsed="0.030682">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:43.673042" elapsed="0.000021"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:43.677215" elapsed="0.000026"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:43.677413" elapsed="0.000021"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T00:50:43.677479" elapsed="0.000016"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T00:50:43.633219" elapsed="0.044366">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:50:43.677699" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:50:43.677743" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:50:43.632641" elapsed="0.045125"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T00:50:43.677973" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:50:43.677857" elapsed="0.000159"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:43.677836" elapsed="0.000203"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:50:43.679493" elapsed="0.000214"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:50:43.680178" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:50:43.679859" elapsed="0.000347"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:43.680991" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:43.680726" elapsed="0.000291"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:50:43.681065" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:50:43.681230" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:50:43.680389" elapsed="0.000866"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:50:43.681780" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:50:43.681413" elapsed="0.000392"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:50:43.682320" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:50:43.681960" elapsed="0.000385"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:50:43.682707" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:50:43.690500" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:50:43.682506" elapsed="0.009824">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:43.692618" elapsed="0.000033"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:43.692855" elapsed="0.000027"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:43.693079" elapsed="0.000029"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:43.693339" elapsed="0.000047"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:43.693640" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:43.693865" elapsed="0.000027"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:43.694250" elapsed="0.000030"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:43.694490" elapsed="0.000028"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:43.694710" elapsed="0.000027"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:50:43.694048" elapsed="0.000734"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:50:43.693955" elapsed="0.000864"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:43.695043" elapsed="0.000029"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:50:43.695128" elapsed="0.000022"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:50:43.678806" elapsed="0.016497">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:50:43.695463" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:50:43.695524" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:50:43.678204" elapsed="0.017353"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T00:50:43.696822" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T00:50:43.695974" elapsed="0.000934">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T00:50:43.695672" elapsed="0.001324">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T00:50:43.695644" elapsed="0.001396">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T00:50:43.697103" elapsed="0.000022"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:50:43.632077" elapsed="0.065188">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:43.697516" elapsed="0.000030"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:43.697748" elapsed="0.000028"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T00:50:43.697832" elapsed="0.000021"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T00:50:43.629377" elapsed="0.068591">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:43.698222" elapsed="0.000031"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:43.698530" elapsed="0.000029"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:43.698769" elapsed="0.000028"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:43.699045" elapsed="0.000032"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:43.699309" elapsed="0.000030"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:43.699504" elapsed="0.000020"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T00:50:43.699566" elapsed="0.000016"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T00:50:43.626578" elapsed="0.073090">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:50:44.733297" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:50:44.732745" elapsed="0.000587"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:50:44.733901" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:50:44.733508" elapsed="0.000428"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:50:44.734056" elapsed="0.000043"/>
</return>
<msg time="2026-04-08T00:50:44.734254" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:50:44.732306" elapsed="0.001974"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T00:50:44.739047" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T00:50:44.738854" elapsed="0.000219"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:50:44.739241" elapsed="0.000199"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:44.739983" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:44.739595" elapsed="0.000413"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:44.740473" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:44.740214" elapsed="0.000300"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:50:44.740660" elapsed="0.000180"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:44.741215" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:44.740991" elapsed="0.000250"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:44.741660" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:44.741410" elapsed="0.000290"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:44.742238" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:44.741853" elapsed="0.000412"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:44.742701" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:44.742458" elapsed="0.000287"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:44.743195" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:44.742896" elapsed="0.000326"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:50:44.749805" elapsed="0.000240"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:50:44.758561" elapsed="0.000306"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:50:44.759447" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:50:44.759030" elapsed="0.000445"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:44.760640" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:44.760064" elapsed="0.000618"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:50:44.760818" elapsed="0.000044"/>
</return>
<msg time="2026-04-08T00:50:44.760991" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:50:44.759666" elapsed="0.001352"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:50:44.761662" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:50:44.761195" elapsed="0.000494"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:50:44.762311" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:50:44.761848" elapsed="0.000491"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:50:44.762843" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:50:44.773199" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:50:44.762508" elapsed="0.012506">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:44.775238" elapsed="0.000026"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:44.775417" elapsed="0.000021"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:44.775588" elapsed="0.000022"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:44.775759" elapsed="0.000021"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:44.775934" elapsed="0.000021"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:44.776099" elapsed="0.000020"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:44.776399" elapsed="0.000021"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:44.776627" elapsed="0.000022"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:44.776823" elapsed="0.000021"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:50:44.776266" elapsed="0.000638"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:50:44.776185" elapsed="0.000748"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:44.777077" elapsed="0.000021"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:50:44.777140" elapsed="0.000030"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:50:44.758045" elapsed="0.019235">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:50:44.777352" elapsed="0.000016"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T00:50:44.747619" elapsed="0.029835">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:44.777691" elapsed="0.000022"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:44.782147" elapsed="0.000044"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:44.782363" elapsed="0.000021"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T00:50:44.782462" elapsed="0.000034"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T00:50:44.738310" elapsed="0.044386">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:50:44.782946" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:50:44.783043" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:50:44.737702" elapsed="0.045392"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T00:50:44.783594" elapsed="0.000030"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:50:44.783338" elapsed="0.000348"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:44.783293" elapsed="0.000443"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:50:44.786586" elapsed="0.000211"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:50:44.787299" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:50:44.786950" elapsed="0.000375"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:44.788366" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:44.788062" elapsed="0.000331"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:50:44.788441" elapsed="0.000031"/>
</return>
<msg time="2026-04-08T00:50:44.788589" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:50:44.787720" elapsed="0.000894"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:50:44.789142" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:50:44.788771" elapsed="0.000413"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:50:44.789685" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:50:44.789342" elapsed="0.000369"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:50:44.790115" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:50:44.799263" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:50:44.789871" elapsed="0.011334">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:44.801404" elapsed="0.000025"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:44.801581" elapsed="0.000020"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:44.801746" elapsed="0.000021"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:44.801948" elapsed="0.000021"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:44.802125" elapsed="0.000020"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:44.802305" elapsed="0.000020"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:44.802666" elapsed="0.000102"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:44.802996" elapsed="0.000030"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:44.803258" elapsed="0.000030"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:50:44.802476" elapsed="0.000862"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:50:44.802376" elapsed="0.001002"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:44.803586" elapsed="0.000030"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:50:44.803673" elapsed="0.000023"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:50:44.785481" elapsed="0.018359">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:50:44.804018" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:50:44.804085" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:50:44.784070" elapsed="0.020051"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T00:50:44.805098" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T00:50:44.804606" elapsed="0.000605">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T00:50:44.804279" elapsed="0.001025">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T00:50:44.804249" elapsed="0.001102">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T00:50:44.805419" elapsed="0.000023"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:50:44.737127" elapsed="0.068439">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:44.805832" elapsed="0.000032"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:44.806100" elapsed="0.000030"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T00:50:44.806213" elapsed="0.000023"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T00:50:44.734587" elapsed="0.071773">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:44.806641" elapsed="0.000031"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:44.806910" elapsed="0.000029"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:44.807180" elapsed="0.000031"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:44.807425" elapsed="0.000029"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:44.807674" elapsed="0.000029"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:44.807915" elapsed="0.000028"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T00:50:44.808004" elapsed="0.000022"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T00:50:44.731398" elapsed="0.076752">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:50:45.839180" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:50:45.838658" elapsed="0.000558"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:50:45.839701" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:50:45.839388" elapsed="0.000340"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:50:45.839775" elapsed="0.000043"/>
</return>
<msg time="2026-04-08T00:50:45.839950" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:50:45.838263" elapsed="0.001712"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T00:50:45.844706" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T00:50:45.844518" elapsed="0.000215"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:50:45.844883" elapsed="0.000211"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:45.845474" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:45.845263" elapsed="0.000236"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:45.845935" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:45.845683" elapsed="0.000292"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:50:45.846118" elapsed="0.000195"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:45.846671" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:45.846462" elapsed="0.000234"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:45.847140" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:45.846880" elapsed="0.000318"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:45.847692" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:45.847350" elapsed="0.000370"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:45.848198" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:45.847902" elapsed="0.000341"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:45.848684" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:45.848397" elapsed="0.000314"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:50:45.855322" elapsed="0.000215"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:50:45.864222" elapsed="0.000212"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:50:45.865032" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:50:45.864590" elapsed="0.000477"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:45.866331" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:45.865773" elapsed="0.000600"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:50:45.866505" elapsed="0.000033"/>
</return>
<msg time="2026-04-08T00:50:45.866661" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:50:45.865317" elapsed="0.001369"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:50:45.867312" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:50:45.866846" elapsed="0.000493"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:50:45.868028" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:50:45.867565" elapsed="0.000497"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:50:45.868589" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:50:45.882899" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:50:45.868248" elapsed="0.018394">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:45.887067" elapsed="0.000054"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:45.887500" elapsed="0.000061"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:45.887908" elapsed="0.000048"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:45.888352" elapsed="0.000052"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:45.888745" elapsed="0.000045"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:45.889140" elapsed="0.000083"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:45.889819" elapsed="0.000047"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:45.890408" elapsed="0.000051"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:45.890851" elapsed="0.000047"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:50:45.889518" elapsed="0.001522"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:50:45.889334" elapsed="0.001771"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:45.891463" elapsed="0.000047"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:50:45.891600" elapsed="0.000036"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:50:45.863713" elapsed="0.028146">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:50:45.892018" elapsed="0.000035"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T00:50:45.852997" elapsed="0.039281">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:45.892677" elapsed="0.000048"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:45.897820" elapsed="0.000035"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:45.898029" elapsed="0.000022"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T00:50:45.898099" elapsed="0.000020"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T00:50:45.843965" elapsed="0.054285">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:50:45.898410" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:50:45.898454" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:50:45.843398" elapsed="0.055083"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T00:50:45.898698" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:50:45.898579" elapsed="0.000161"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:45.898557" elapsed="0.000206"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:50:45.900113" elapsed="0.000232"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:50:45.900808" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:50:45.900500" elapsed="0.000334"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:45.901658" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:45.901389" elapsed="0.000295"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:50:45.901732" elapsed="0.000032"/>
</return>
<msg time="2026-04-08T00:50:45.901900" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:50:45.901033" elapsed="0.000894"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:50:45.902505" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:50:45.902096" elapsed="0.000435"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:50:45.903079" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:50:45.902720" elapsed="0.000385"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:50:45.903525" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:50:45.915414" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:50:45.903306" elapsed="0.016026">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:45.919770" elapsed="0.000052"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:45.920185" elapsed="0.000050"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:45.920605" elapsed="0.000051"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:45.921027" elapsed="0.000049"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:45.921454" elapsed="0.000046"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:45.921819" elapsed="0.000048"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:45.922493" elapsed="0.000047"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:45.922875" elapsed="0.000045"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:45.923359" elapsed="0.000072"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:50:45.922195" elapsed="0.001342"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:50:45.921995" elapsed="0.001627"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:45.924061" elapsed="0.000067"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:50:45.924293" elapsed="0.000050"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:50:45.899564" elapsed="0.025056">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:50:45.925125" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:50:45.925333" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:50:45.898915" elapsed="0.026493"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T00:50:45.926266" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T00:50:45.925923" elapsed="0.000406">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T00:50:45.925662" elapsed="0.000730">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T00:50:45.925622" elapsed="0.000802">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T00:50:45.926471" elapsed="0.000016"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:50:45.842758" elapsed="0.083812">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:45.926748" elapsed="0.000022"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:45.926915" elapsed="0.000020"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T00:50:45.926976" elapsed="0.000015"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T00:50:45.840285" elapsed="0.086807">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:45.927318" elapsed="0.000028"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:45.927551" elapsed="0.000026"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:45.927773" elapsed="0.000027"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:45.927985" elapsed="0.000026"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:45.928226" elapsed="0.000030"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:45.928452" elapsed="0.000022"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T00:50:45.928520" elapsed="0.000017"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T00:50:45.837424" elapsed="0.091199">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:50:46.961722" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:50:46.961210" elapsed="0.000547"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:50:46.962282" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:50:46.961933" elapsed="0.000378"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:50:46.962361" elapsed="0.000044"/>
</return>
<msg time="2026-04-08T00:50:46.962538" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:50:46.960767" elapsed="0.001874"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T00:50:46.967347" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T00:50:46.967121" elapsed="0.000255"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:50:46.967532" elapsed="0.000197"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:46.968132" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:46.967883" elapsed="0.000292"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:46.968643" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:46.968378" elapsed="0.000308"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:50:46.968835" elapsed="0.000184"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:46.969412" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:46.969190" elapsed="0.000249"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:46.969863" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:46.969611" elapsed="0.000293"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:46.970449" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:46.970057" elapsed="0.000418"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:46.970879" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:46.970642" elapsed="0.000280"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:46.971391" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:46.971072" elapsed="0.000347"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:50:46.980013" elapsed="0.000244"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:50:46.988903" elapsed="0.000218"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:50:46.989710" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:50:46.989301" elapsed="0.000438"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:46.990933" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:46.990361" elapsed="0.000616"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:50:46.991114" elapsed="0.000037"/>
</return>
<msg time="2026-04-08T00:50:46.991300" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:50:46.989929" elapsed="0.001396"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:50:46.992031" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:50:46.991489" elapsed="0.000570"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:50:46.992671" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:50:46.992236" elapsed="0.000462"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:50:46.993215" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:50:47.004937" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:50:46.992861" elapsed="0.014689">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:47.007917" elapsed="0.000048"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:47.008221" elapsed="0.000034"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:47.008553" elapsed="0.000031"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:47.008793" elapsed="0.000029"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:47.009046" elapsed="0.000032"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:47.009307" elapsed="0.000030"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:47.009716" elapsed="0.000028"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:47.010045" elapsed="0.000031"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:47.010349" elapsed="0.000031"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:50:47.009531" elapsed="0.000938"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:50:47.009415" elapsed="0.001096"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:47.010715" elapsed="0.000029"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:50:47.010805" elapsed="0.000024"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:50:46.988392" elapsed="0.022591">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:50:47.011096" elapsed="0.000022"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T00:50:46.977679" elapsed="0.033605">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:47.011536" elapsed="0.000030"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:47.017794" elapsed="0.000043"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:47.018080" elapsed="0.000030"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T00:50:47.018193" elapsed="0.000028"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T00:50:46.966577" elapsed="0.051793">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:50:47.018577" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:50:47.018658" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:50:46.965983" elapsed="0.052721"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T00:50:47.019104" elapsed="0.000021"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:50:47.018878" elapsed="0.000313"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:47.018837" elapsed="0.000391"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:50:47.021270" elapsed="0.000223"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:50:47.022009" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:50:47.021651" elapsed="0.000387"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:47.023170" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:47.022646" elapsed="0.000553"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:50:47.023248" elapsed="0.000033"/>
</return>
<msg time="2026-04-08T00:50:47.023404" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:50:47.022300" elapsed="0.001130"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:50:47.023997" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:50:47.023597" elapsed="0.000427"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:50:47.024559" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:50:47.024201" elapsed="0.000385"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:50:47.024985" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:50:47.034896" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:50:47.024749" elapsed="0.012510">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:47.037525" elapsed="0.000031"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:47.037764" elapsed="0.000029"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:47.037993" elapsed="0.000029"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:47.038254" elapsed="0.000031"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:47.038497" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:47.038724" elapsed="0.000028"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:47.039096" elapsed="0.000029"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:47.039377" elapsed="0.000030"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:47.039612" elapsed="0.000030"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:50:47.038917" elapsed="0.000773"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:50:47.038817" elapsed="0.000911"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:47.039943" elapsed="0.000030"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:50:47.040028" elapsed="0.000024"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:50:47.020635" elapsed="0.019580">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:50:47.040386" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:50:47.040447" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:50:47.019493" elapsed="0.020989"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T00:50:47.041451" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T00:50:47.040960" elapsed="0.000578">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T00:50:47.040632" elapsed="0.000994">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T00:50:47.040597" elapsed="0.001075">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T00:50:47.041737" elapsed="0.000021"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:50:46.965428" elapsed="0.076507">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:47.042207" elapsed="0.000031"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:47.042444" elapsed="0.000029"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T00:50:47.042531" elapsed="0.000022"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T00:50:46.962949" elapsed="0.079722">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:47.042907" elapsed="0.000029"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:47.043156" elapsed="0.000048"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:47.043417" elapsed="0.000028"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:47.043643" elapsed="0.000028"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:47.043925" elapsed="0.000034"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:47.044194" elapsed="0.000030"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T00:50:47.044286" elapsed="0.000021"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T00:50:46.959844" elapsed="0.084583">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:50:48.075820" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:50:48.075339" elapsed="0.000514"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:50:48.076361" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:50:48.076027" elapsed="0.000361"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:50:48.076436" elapsed="0.000041"/>
</return>
<msg time="2026-04-08T00:50:48.076608" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:50:48.074893" elapsed="0.001742"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T00:50:48.081539" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T00:50:48.081351" elapsed="0.000232"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:50:48.081738" elapsed="0.000192"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:48.082357" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:48.082083" elapsed="0.000302"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:48.082999" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:48.082574" elapsed="0.000469"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:50:48.083216" elapsed="0.000184"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:48.083758" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:48.083552" elapsed="0.000231"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:48.084235" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:48.083972" elapsed="0.000305"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:48.084770" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:48.084429" elapsed="0.000366"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:48.085211" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:48.084959" elapsed="0.000296"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:48.085688" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:48.085405" elapsed="0.000308"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:50:48.092094" elapsed="0.000231"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:50:48.100856" elapsed="0.000211"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:50:48.101650" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:50:48.101247" elapsed="0.000430"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:48.102829" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:48.102288" elapsed="0.000582"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:50:48.103043" elapsed="0.000044"/>
</return>
<msg time="2026-04-08T00:50:48.103235" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:50:48.101865" elapsed="0.001396"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:50:48.103914" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:50:48.103444" elapsed="0.000497"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:50:48.104647" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:50:48.104102" elapsed="0.000573"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:50:48.105193" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:50:48.116702" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:50:48.104840" elapsed="0.014566">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:48.119716" elapsed="0.000039"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:48.119975" elapsed="0.000030"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:48.120257" elapsed="0.000034"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:48.120511" elapsed="0.000031"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:48.120765" elapsed="0.000030"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:48.121008" elapsed="0.000030"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:48.121442" elapsed="0.000030"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:48.121775" elapsed="0.000031"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:48.122060" elapsed="0.000031"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:50:48.121247" elapsed="0.001029"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:50:48.121112" elapsed="0.001212"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:48.122553" elapsed="0.000033"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:50:48.122651" elapsed="0.000025"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:50:48.100363" elapsed="0.022475">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:50:48.122990" elapsed="0.000025"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T00:50:48.089867" elapsed="0.033286">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:48.123463" elapsed="0.000032"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:48.129914" elapsed="0.000041"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:48.130223" elapsed="0.000033"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T00:50:48.130324" elapsed="0.000023"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T00:50:48.080798" elapsed="0.049683">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:50:48.130663" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:50:48.130729" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:50:48.080239" elapsed="0.050525"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T00:50:48.131096" elapsed="0.000020"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:50:48.130914" elapsed="0.000263"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:48.130871" elapsed="0.000343"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:50:48.133455" elapsed="0.000317"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:50:48.134496" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:50:48.134002" elapsed="0.000532"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:48.135735" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:48.135411" elapsed="0.000351"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:50:48.135809" elapsed="0.000033"/>
</return>
<msg time="2026-04-08T00:50:48.135961" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:50:48.134843" elapsed="0.001143"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:50:48.136538" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:50:48.136145" elapsed="0.000420"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:50:48.137063" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:50:48.136720" elapsed="0.000369"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:50:48.137548" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:50:48.145551" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:50:48.137324" elapsed="0.010873">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:48.148494" elapsed="0.000036"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:48.148750" elapsed="0.000030"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:48.148995" elapsed="0.000029"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:48.149261" elapsed="0.000031"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:48.149516" elapsed="0.000030"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:48.149754" elapsed="0.000029"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:48.150170" elapsed="0.000032"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:48.150425" elapsed="0.000028"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:48.150661" elapsed="0.000029"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:50:48.149964" elapsed="0.000774"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:50:48.149853" elapsed="0.000925"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:48.151001" elapsed="0.000030"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:50:48.151090" elapsed="0.000024"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:50:48.132459" elapsed="0.018849">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:50:48.151544" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:50:48.151614" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:50:48.131441" elapsed="0.020209"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T00:50:48.153108" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T00:50:48.152128" elapsed="0.001098">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T00:50:48.151792" elapsed="0.001531">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T00:50:48.151758" elapsed="0.001616">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T00:50:48.153450" elapsed="0.000030"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:50:48.079671" elapsed="0.073941">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:48.153888" elapsed="0.000032"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:48.154141" elapsed="0.000052"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T00:50:48.154261" elapsed="0.000022"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T00:50:48.076931" elapsed="0.077480">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:48.154756" elapsed="0.000033"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:48.155078" elapsed="0.000032"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:48.155360" elapsed="0.000031"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:48.155592" elapsed="0.000021"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:48.155763" elapsed="0.000020"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:48.155928" elapsed="0.000021"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T00:50:48.155991" elapsed="0.000015"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T00:50:48.073993" elapsed="0.082104">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:50:49.191441" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:50:49.190919" elapsed="0.000556"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:50:49.191975" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:50:49.191651" elapsed="0.000350"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:50:49.192051" elapsed="0.000045"/>
</return>
<msg time="2026-04-08T00:50:49.192249" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:50:49.190516" elapsed="0.001759"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T00:50:49.196907" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T00:50:49.196715" elapsed="0.000219"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:50:49.197086" elapsed="0.000209"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:49.197664" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:49.197451" elapsed="0.000239"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:49.198175" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:49.197877" elapsed="0.000342"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:50:49.198366" elapsed="0.000183"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:49.198906" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:49.198700" elapsed="0.000231"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:49.199371" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:49.199098" elapsed="0.000313"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:49.199903" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:49.199564" elapsed="0.000365"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:49.200363" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:49.200093" elapsed="0.000322"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:49.200888" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:49.200597" elapsed="0.000317"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:50:49.208243" elapsed="0.000337"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:50:49.217827" elapsed="0.000271"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:50:49.218714" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:50:49.218280" elapsed="0.000462"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:49.219961" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:49.219404" elapsed="0.000599"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:50:49.220139" elapsed="0.000060"/>
</return>
<msg time="2026-04-08T00:50:49.220331" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:50:49.218934" elapsed="0.001423"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:50:49.220993" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:50:49.220521" elapsed="0.000499"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:50:49.221679" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:50:49.221198" elapsed="0.000509"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:50:49.222301" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:50:49.234110" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:50:49.221875" elapsed="0.015000">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:49.237192" elapsed="0.000038"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:49.237457" elapsed="0.000031"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:49.237705" elapsed="0.000030"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:49.237953" elapsed="0.000045"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:49.238243" elapsed="0.000032"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:49.238546" elapsed="0.000032"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:49.238959" elapsed="0.000030"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:49.239382" elapsed="0.000033"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:49.239673" elapsed="0.000032"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:50:49.238767" elapsed="0.001026"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:50:49.238652" elapsed="0.001233"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:49.240105" elapsed="0.000030"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:50:49.240220" elapsed="0.000026"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:50:49.217315" elapsed="0.023085">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:50:49.240554" elapsed="0.000027"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T00:50:49.205875" elapsed="0.034834">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:49.241039" elapsed="0.000032"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:49.248332" elapsed="0.000056"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:49.248717" elapsed="0.000045"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T00:50:49.248853" elapsed="0.000032"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T00:50:49.196173" elapsed="0.052958">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:50:49.249400" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:50:49.249487" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:50:49.195598" elapsed="0.053932"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T00:50:49.249993" elapsed="0.000025"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:50:49.249686" elapsed="0.000377"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:49.249648" elapsed="0.000450"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:50:49.252265" elapsed="0.000373"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:50:49.253439" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:50:49.252858" elapsed="0.000619"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:49.254405" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:49.254110" elapsed="0.000322"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:50:49.254479" elapsed="0.000033"/>
</return>
<msg time="2026-04-08T00:50:49.254631" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:50:49.253705" elapsed="0.000988"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:50:49.255258" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:50:49.254860" elapsed="0.000425"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:50:49.255961" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:50:49.255513" elapsed="0.000483"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:50:49.256549" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:50:49.265241" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:50:49.256266" elapsed="0.011467">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:49.267998" elapsed="0.000032"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:49.268261" elapsed="0.000031"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:49.268582" elapsed="0.000038"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:49.268834" elapsed="0.000029"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:49.269072" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:49.269323" elapsed="0.000030"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:49.269807" elapsed="0.000028"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:49.270101" elapsed="0.000033"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:49.270365" elapsed="0.000029"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:50:49.269622" elapsed="0.000824"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:50:49.269512" elapsed="0.000979"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:49.270729" elapsed="0.000037"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:50:49.270828" elapsed="0.000025"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:50:49.251345" elapsed="0.019650">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:50:49.271190" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:50:49.271256" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:50:49.250342" elapsed="0.020947"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T00:50:49.272277" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T00:50:49.271773" elapsed="0.000593">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T00:50:49.271416" elapsed="0.001050">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T00:50:49.271387" elapsed="0.001133">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T00:50:49.272589" elapsed="0.000022"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:50:49.195025" elapsed="0.077710">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:49.272983" elapsed="0.000031"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:49.273239" elapsed="0.000030"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T00:50:49.273328" elapsed="0.000022"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T00:50:49.192578" elapsed="0.080902">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:49.273724" elapsed="0.000030"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:49.274009" elapsed="0.000031"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:49.274272" elapsed="0.000032"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:49.274524" elapsed="0.000031"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:49.274766" elapsed="0.000027"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:49.274992" elapsed="0.000027"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T00:50:49.275127" elapsed="0.000024"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T00:50:49.189547" elapsed="0.085750">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:50:50.306266" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:50:50.305784" elapsed="0.000515"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:50:50.306780" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:50:50.306469" elapsed="0.000338"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:50:50.306854" elapsed="0.000039"/>
</return>
<msg time="2026-04-08T00:50:50.307023" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:50:50.305391" elapsed="0.001657"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T00:50:50.311699" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T00:50:50.311513" elapsed="0.000213"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:50:50.311875" elapsed="0.000247"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:50.312565" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:50.312345" elapsed="0.000246"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:50.313029" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:50.312775" elapsed="0.000294"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:50:50.313253" elapsed="0.000183"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:50.313790" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:50.313587" elapsed="0.000228"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:50.314243" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:50.313980" elapsed="0.000303"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:50.314769" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:50.314433" elapsed="0.000360"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:50.315203" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:50.314955" elapsed="0.000292"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:50.315670" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:50.315394" elapsed="0.000301"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:50:50.322296" elapsed="0.000214"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:50:50.331007" elapsed="0.000226"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:50:50.331786" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:50:50.331390" elapsed="0.000422"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:50.332955" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:50.332416" elapsed="0.000579"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:50:50.333169" elapsed="0.000034"/>
</return>
<msg time="2026-04-08T00:50:50.333328" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:50:50.331997" elapsed="0.001355"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:50:50.333951" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:50:50.333511" elapsed="0.000525"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:50:50.334645" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:50:50.334215" elapsed="0.000457"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:50:50.335184" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:50:50.345273" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:50:50.334834" elapsed="0.012194">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:50.347232" elapsed="0.000024"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:50.347408" elapsed="0.000021"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:50.347574" elapsed="0.000021"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:50.347746" elapsed="0.000020"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:50.347916" elapsed="0.000020"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:50.348079" elapsed="0.000020"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:50.348363" elapsed="0.000021"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:50.348591" elapsed="0.000021"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:50.348782" elapsed="0.000021"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:50:50.348233" elapsed="0.000629"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:50:50.348146" elapsed="0.000743"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:50.349029" elapsed="0.000021"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:50:50.349102" elapsed="0.000016"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:50:50.330515" elapsed="0.018718">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:50:50.349305" elapsed="0.000016"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T00:50:50.320072" elapsed="0.029332">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:50.349579" elapsed="0.000021"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:50.355519" elapsed="0.000049"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:50.355882" elapsed="0.000044"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T00:50:50.356009" elapsed="0.000029"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T00:50:50.310962" elapsed="0.045342">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:50:50.356511" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:50:50.356592" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:50:50.310411" elapsed="0.046225"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T00:50:50.356958" elapsed="0.000019"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:50:50.356791" elapsed="0.000227"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:50.356758" elapsed="0.000291"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:50:50.359006" elapsed="0.000322"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:50:50.359989" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:50:50.359560" elapsed="0.000465"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:50.361202" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:50.360785" elapsed="0.000457"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:50:50.361308" elapsed="0.000043"/>
</return>
<msg time="2026-04-08T00:50:50.361528" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:50:50.360301" elapsed="0.001263"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:50:50.362332" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:50:50.361790" elapsed="0.000579"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:50:50.363092" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:50:50.362597" elapsed="0.000542"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:50:50.363694" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:50:50.372673" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:50:50.363395" elapsed="0.011512">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:50.375090" elapsed="0.000022"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:50.375276" elapsed="0.000021"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:50.375440" elapsed="0.000020"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:50.375601" elapsed="0.000020"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:50.375765" elapsed="0.000020"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:50.375926" elapsed="0.000019"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:50.376198" elapsed="0.000021"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:50.376368" elapsed="0.000019"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:50.376525" elapsed="0.000020"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:50:50.376056" elapsed="0.000520"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:50:50.375989" elapsed="0.000613"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:50.376744" elapsed="0.000020"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:50:50.376802" elapsed="0.000015"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:50:50.358232" elapsed="0.018675">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:50:50.377093" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:50:50.377142" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:50:50.357335" elapsed="0.019844"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T00:50:50.377953" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T00:50:50.377504" elapsed="0.000555">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T00:50:50.377266" elapsed="0.000886">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T00:50:50.377247" elapsed="0.000980">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T00:50:50.378293" elapsed="0.000022"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:50:50.309848" elapsed="0.068588">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:50.378696" elapsed="0.000030"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:50.378939" elapsed="0.000032"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T00:50:50.379041" elapsed="0.000028"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T00:50:50.307360" elapsed="0.071866">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:50.379479" elapsed="0.000032"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:50.379743" elapsed="0.000030"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:50.379982" elapsed="0.000029"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:50.380233" elapsed="0.000029"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:50.380498" elapsed="0.000031"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:50.380733" elapsed="0.000028"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T00:50:50.380819" elapsed="0.000020"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T00:50:50.304587" elapsed="0.076370">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:50:51.412992" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:50:51.412496" elapsed="0.000530"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:50:51.413619" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:50:51.413219" elapsed="0.000427"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:50:51.413694" elapsed="0.000041"/>
</return>
<msg time="2026-04-08T00:50:51.413867" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:50:51.412049" elapsed="0.001844"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T00:50:51.418500" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T00:50:51.418310" elapsed="0.000216"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:50:51.418678" elapsed="0.000192"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:51.419248" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:51.419023" elapsed="0.000250"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:51.419718" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:51.419463" elapsed="0.000296"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:50:51.419905" elapsed="0.000178"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:51.420469" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:51.420259" elapsed="0.000235"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:51.420922" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:51.420667" elapsed="0.000296"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:51.421471" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:51.421115" elapsed="0.000381"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:51.421913" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:51.421678" elapsed="0.000278"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:51.422406" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:51.422106" elapsed="0.000326"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:50:51.429048" elapsed="0.000234"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:50:51.437859" elapsed="0.000214"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:50:51.438650" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:50:51.438247" elapsed="0.000430"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:51.439835" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:51.439290" elapsed="0.000586"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:50:51.440014" elapsed="0.000044"/>
</return>
<msg time="2026-04-08T00:50:51.440220" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:50:51.438866" elapsed="0.001381"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:50:51.440878" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:50:51.440412" elapsed="0.000493"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:50:51.441505" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:50:51.441064" elapsed="0.000468"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:50:51.442031" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:50:51.451690" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:50:51.441695" elapsed="0.011884">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:51.453795" elapsed="0.000098"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:51.454049" elapsed="0.000022"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:51.454237" elapsed="0.000022"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:51.454411" elapsed="0.000020"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:51.454583" elapsed="0.000021"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:51.454748" elapsed="0.000021"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:51.455042" elapsed="0.000020"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:51.455283" elapsed="0.000022"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:51.455478" elapsed="0.000021"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:50:51.454908" elapsed="0.000651"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:50:51.454822" elapsed="0.000767"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:51.455734" elapsed="0.000021"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:50:51.455797" elapsed="0.000019"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:50:51.437365" elapsed="0.018562">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:50:51.455999" elapsed="0.000015"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T00:50:51.426695" elapsed="0.029405">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:51.456326" elapsed="0.000022"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:51.465295" elapsed="0.000053"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:51.465613" elapsed="0.000030"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T00:50:51.465710" elapsed="0.000025"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T00:50:51.417759" elapsed="0.048119">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:50:51.466061" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:50:51.466127" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:50:51.417202" elapsed="0.048987"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T00:50:51.466517" elapsed="0.000020"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:50:51.466330" elapsed="0.000249"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:51.466299" elapsed="0.000314"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:50:51.468758" elapsed="0.000212"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:50:51.469464" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:50:51.469123" elapsed="0.000367"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:51.470297" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:51.470011" elapsed="0.000312"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:50:51.470370" elapsed="0.000032"/>
</return>
<msg time="2026-04-08T00:50:51.470520" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:50:51.469673" elapsed="0.000872"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:50:51.471081" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:50:51.470705" elapsed="0.000402"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:50:51.471623" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:50:51.471280" elapsed="0.000369"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:50:51.472033" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:50:51.480763" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:50:51.471808" elapsed="0.010758">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:51.482773" elapsed="0.000025"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:51.482946" elapsed="0.000020"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:51.483110" elapsed="0.000020"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:51.483295" elapsed="0.000020"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:51.483465" elapsed="0.000020"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:51.483627" elapsed="0.000022"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:51.483916" elapsed="0.000020"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:51.484087" elapsed="0.000021"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:51.484305" elapsed="0.000022"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:50:51.483787" elapsed="0.000574"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:50:51.483705" elapsed="0.000684"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:51.484533" elapsed="0.000020"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:50:51.484594" elapsed="0.000017"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:50:51.467913" elapsed="0.016830">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:50:51.484922" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:50:51.484987" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:50:51.466842" elapsed="0.018180"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T00:50:51.486011" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T00:50:51.485514" elapsed="0.000585">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T00:50:51.485180" elapsed="0.001107">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T00:50:51.485127" elapsed="0.001212">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T00:50:51.486408" elapsed="0.000022"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:50:51.416639" elapsed="0.069913">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:51.486819" elapsed="0.000031"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:51.487064" elapsed="0.000030"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T00:50:51.487175" elapsed="0.000023"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T00:50:51.414210" elapsed="0.073115">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:51.487573" elapsed="0.000030"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:51.487837" elapsed="0.000029"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:51.488088" elapsed="0.000029"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:51.488363" elapsed="0.000030"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:51.488612" elapsed="0.000029"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:51.488855" elapsed="0.000029"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T00:50:51.488944" elapsed="0.000021"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T00:50:51.411167" elapsed="0.077923">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:50:52.520286" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:50:52.519804" elapsed="0.000514"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:50:52.520799" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:50:52.520486" elapsed="0.000340"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:50:52.520873" elapsed="0.000041"/>
</return>
<msg time="2026-04-08T00:50:52.521046" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:50:52.519388" elapsed="0.001683"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T00:50:52.525810" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T00:50:52.525590" elapsed="0.000253"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:50:52.525998" elapsed="0.000210"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:52.526644" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:52.526431" elapsed="0.000243"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:52.527145" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:52.526889" elapsed="0.000315"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:50:52.527354" elapsed="0.000197"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:52.527912" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:52.527706" elapsed="0.000232"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:52.528371" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:52.528107" elapsed="0.000306"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:52.528904" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:52.528564" elapsed="0.000366"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:52.529348" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:52.529096" elapsed="0.000295"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:52.529818" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:52.529540" elapsed="0.000303"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:50:52.536514" elapsed="0.000215"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:50:52.545357" elapsed="0.000211"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:50:52.546110" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:50:52.545726" elapsed="0.000411"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:52.547297" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:52.546743" elapsed="0.000595"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:50:52.547492" elapsed="0.000033"/>
</return>
<msg time="2026-04-08T00:50:52.547648" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:50:52.546348" elapsed="0.001325"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:50:52.548287" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:50:52.547834" elapsed="0.000481"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:50:52.548898" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:50:52.548474" elapsed="0.000450"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:50:52.549437" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:50:52.560471" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:50:52.549086" elapsed="0.013165">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:52.562440" elapsed="0.000023"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:52.562615" elapsed="0.000021"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:52.562788" elapsed="0.000020"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:52.562956" elapsed="0.000020"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:52.563128" elapsed="0.000021"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:52.563312" elapsed="0.000049"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:52.563620" elapsed="0.000021"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:52.564146" elapsed="0.000081"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:52.564623" elapsed="0.000047"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:50:52.563488" elapsed="0.001318"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:50:52.563412" elapsed="0.001456"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:52.565217" elapsed="0.000048"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:50:52.565355" elapsed="0.000034"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:50:52.544848" elapsed="0.020760">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:50:52.565771" elapsed="0.000037"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T00:50:52.534108" elapsed="0.031891">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:52.566451" elapsed="0.000049"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:52.576015" elapsed="0.000059"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:52.576400" elapsed="0.000022"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T00:50:52.576466" elapsed="0.000015"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T00:50:52.525037" elapsed="0.051534">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:50:52.576684" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:50:52.576729" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:50:52.524481" elapsed="0.052272"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T00:50:52.577135" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:50:52.576843" elapsed="0.000350"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:52.576823" elapsed="0.000393"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:50:52.578519" elapsed="0.000214"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:50:52.579337" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:50:52.578887" elapsed="0.000477"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:52.580350" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:52.579884" elapsed="0.000494"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:50:52.580427" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:50:52.580577" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:50:52.579547" elapsed="0.001056"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:50:52.581134" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:50:52.580763" elapsed="0.000413"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:50:52.581722" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:50:52.581371" elapsed="0.000377"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:50:52.582110" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:50:52.589340" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:50:52.581911" elapsed="0.009133">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:52.591250" elapsed="0.000023"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:52.591440" elapsed="0.000021"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:52.591606" elapsed="0.000020"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:52.591772" elapsed="0.000024"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:52.591944" elapsed="0.000020"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:52.592105" elapsed="0.000020"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:52.592378" elapsed="0.000020"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:52.592548" elapsed="0.000020"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:52.592709" elapsed="0.000020"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:50:52.592251" elapsed="0.000510"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:50:52.592184" elapsed="0.000603"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:52.592926" elapsed="0.000020"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:50:52.592984" elapsed="0.000015"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:50:52.577960" elapsed="0.015130">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:50:52.593218" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:50:52.593264" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:50:52.577366" elapsed="0.015921"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T00:50:52.593901" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T00:50:52.593585" elapsed="0.000376">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T00:50:52.593371" elapsed="0.000651">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T00:50:52.593352" elapsed="0.000701">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T00:50:52.594098" elapsed="0.000015"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:50:52.523917" elapsed="0.070295">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:52.594390" elapsed="0.000022"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:52.594556" elapsed="0.000020"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T00:50:52.594653" elapsed="0.000016"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T00:50:52.521399" elapsed="0.073359">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:52.594927" elapsed="0.000021"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:52.595105" elapsed="0.000020"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:52.595297" elapsed="0.000045"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:52.595488" elapsed="0.000021"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:52.595657" elapsed="0.000024"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:52.595897" elapsed="0.000028"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T00:50:52.595984" elapsed="0.000020"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T00:50:52.518605" elapsed="0.077514">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:50:53.628995" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:50:53.628486" elapsed="0.000544"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:50:53.629549" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:50:53.629225" elapsed="0.000350"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:50:53.629626" elapsed="0.000047"/>
</return>
<msg time="2026-04-08T00:50:53.629809" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:50:53.628058" elapsed="0.001776"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T00:50:53.634836" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T00:50:53.634642" elapsed="0.000221"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:50:53.635016" elapsed="0.000210"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:53.635593" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:53.635382" elapsed="0.000237"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:53.636064" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:53.635804" elapsed="0.000301"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:50:53.636268" elapsed="0.000182"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:53.636828" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:53.636605" elapsed="0.000249"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:53.637288" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:53.637022" elapsed="0.000307"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:53.637826" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:53.637483" elapsed="0.000368"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:53.638423" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:53.638178" elapsed="0.000288"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:53.638939" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:53.638650" elapsed="0.000315"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:50:53.645351" elapsed="0.000216"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:50:53.654108" elapsed="0.000229"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:50:53.654914" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:50:53.654493" elapsed="0.000448"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:53.656100" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:53.655555" elapsed="0.000587"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:50:53.656297" elapsed="0.000035"/>
</return>
<msg time="2026-04-08T00:50:53.656459" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:50:53.655131" elapsed="0.001354"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:50:53.657091" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:50:53.656646" elapsed="0.000473"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:50:53.657726" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:50:53.657297" elapsed="0.000456"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:50:53.658302" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:50:53.669263" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:50:53.657917" elapsed="0.015525">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:53.673877" elapsed="0.000053"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:53.674315" elapsed="0.000050"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:53.674718" elapsed="0.000048"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:53.675093" elapsed="0.000046"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:53.675508" elapsed="0.000047"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:53.675872" elapsed="0.000045"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:53.676501" elapsed="0.000046"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:53.677008" elapsed="0.000047"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:53.677481" elapsed="0.000047"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:50:53.676205" elapsed="0.001458"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:50:53.676019" elapsed="0.001707"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:53.678046" elapsed="0.000046"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:50:53.678209" elapsed="0.000037"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:50:53.653609" elapsed="0.024860">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:50:53.678748" elapsed="0.000017"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T00:50:53.643131" elapsed="0.035723">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:53.679031" elapsed="0.000021"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:53.683242" elapsed="0.000027"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:53.683436" elapsed="0.000020"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T00:50:53.683501" elapsed="0.000015"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T00:50:53.634041" elapsed="0.049565">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:50:53.683720" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:50:53.683763" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:50:53.633469" elapsed="0.050318"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T00:50:53.683999" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:50:53.683879" elapsed="0.000163"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:53.683858" elapsed="0.000208"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:50:53.685412" elapsed="0.000211"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:50:53.686081" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:50:53.685775" elapsed="0.000332"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:53.686942" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:53.686675" elapsed="0.000293"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:50:53.687015" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:50:53.687179" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:50:53.686307" elapsed="0.000898"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:50:53.687733" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:50:53.687363" elapsed="0.000396"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:50:53.688274" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:50:53.687914" elapsed="0.000386"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:50:53.688660" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:50:53.696964" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:50:53.688459" elapsed="0.010283">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:53.699192" elapsed="0.000054"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:53.699583" elapsed="0.000046"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:53.700039" elapsed="0.000046"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:53.700442" elapsed="0.000047"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:53.700824" elapsed="0.000045"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:53.701218" elapsed="0.000048"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:53.701835" elapsed="0.000046"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:53.702257" elapsed="0.000048"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:53.702671" elapsed="0.000401"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:50:53.701541" elapsed="0.001641"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:50:53.701384" elapsed="0.001863"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:53.703572" elapsed="0.000046"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:50:53.703704" elapsed="0.000034"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:50:53.684851" elapsed="0.019094">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:50:53.704236" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:50:53.704339" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:50:53.684235" elapsed="0.020156"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T00:50:53.705858" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T00:50:53.705107" elapsed="0.000888">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T00:50:53.704578" elapsed="0.001557">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T00:50:53.704534" elapsed="0.001706">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T00:50:53.706346" elapsed="0.000035"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:50:53.632895" elapsed="0.073700">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:53.706992" elapsed="0.000049"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:53.707399" elapsed="0.000047"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T00:50:53.707539" elapsed="0.000033"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T00:50:53.630135" elapsed="0.077627">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:53.708136" elapsed="0.000075"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:53.708565" elapsed="0.000045"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:53.708941" elapsed="0.000044"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:53.709415" elapsed="0.000048"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:53.709788" elapsed="0.000044"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:53.710178" elapsed="0.000049"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T00:50:53.710321" elapsed="0.000034"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T00:50:53.627189" elapsed="0.083411">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:50:54.742317" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:50:54.741829" elapsed="0.000521"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:50:54.742835" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:50:54.742522" elapsed="0.000340"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:50:54.742909" elapsed="0.000041"/>
</return>
<msg time="2026-04-08T00:50:54.743081" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:50:54.741412" elapsed="0.001695"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T00:50:54.747818" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T00:50:54.747630" elapsed="0.000215"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:50:54.747996" elapsed="0.000209"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:54.748573" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:54.748364" elapsed="0.000234"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:54.749038" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:54.748783" elapsed="0.000296"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:50:54.749240" elapsed="0.000183"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:54.749804" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:54.749574" elapsed="0.000261"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:54.750278" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:54.750004" elapsed="0.000316"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:54.750993" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:54.750472" elapsed="0.000547"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:54.751460" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:54.751216" elapsed="0.000288"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:54.751935" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:54.751653" elapsed="0.000307"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:50:54.758388" elapsed="0.000219"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:50:54.768533" elapsed="0.000316"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:50:54.769608" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:50:54.769066" elapsed="0.000580"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:54.771489" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:54.770683" elapsed="0.000878"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:50:54.771746" elapsed="0.000047"/>
</return>
<msg time="2026-04-08T00:50:54.771968" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:50:54.770080" elapsed="0.001923"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:50:54.772866" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:50:54.772250" elapsed="0.000653"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:50:54.773769" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:50:54.773124" elapsed="0.000683"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:50:54.774513" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:50:54.788546" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:50:54.774035" elapsed="0.016992">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:54.791320" elapsed="0.000035"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:54.791567" elapsed="0.000029"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:54.791804" elapsed="0.000029"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:54.792034" elapsed="0.000029"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:54.792290" elapsed="0.000031"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:54.792521" elapsed="0.000028"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:54.792897" elapsed="0.000029"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:54.793234" elapsed="0.000030"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:54.793505" elapsed="0.000029"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:50:54.792718" elapsed="0.000898"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:50:54.792615" elapsed="0.001041"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:54.793921" elapsed="0.000030"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:50:54.794006" elapsed="0.000023"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:50:54.767799" elapsed="0.026404">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:50:54.794312" elapsed="0.000021"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T00:50:54.756074" elapsed="0.038376">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:54.794692" elapsed="0.000030"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:54.800802" elapsed="0.000038"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:54.801124" elapsed="0.000047"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T00:50:54.801237" elapsed="0.000022"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T00:50:54.747070" elapsed="0.054314">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:50:54.801539" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:50:54.801602" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:50:54.746518" elapsed="0.055116"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T00:50:54.801953" elapsed="0.000019"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:50:54.801794" elapsed="0.000220"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:54.801757" elapsed="0.000287"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:50:54.803871" elapsed="0.000310"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:50:54.804817" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:50:54.804395" elapsed="0.000458"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:54.806047" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:54.805597" elapsed="0.000487"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:50:54.806149" elapsed="0.000063"/>
</return>
<msg time="2026-04-08T00:50:54.806380" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:50:54.805102" elapsed="0.001312"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:50:54.807116" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:50:54.806633" elapsed="0.000509"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:50:54.807654" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:50:54.807313" elapsed="0.000367"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:50:54.808034" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:50:54.818412" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:50:54.807837" elapsed="0.012914">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:54.821008" elapsed="0.000031"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:54.821276" elapsed="0.000030"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:54.821507" elapsed="0.000028"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:54.821760" elapsed="0.000029"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:54.821995" elapsed="0.000027"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:54.822292" elapsed="0.000030"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:54.822650" elapsed="0.000028"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:54.822884" elapsed="0.000028"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:54.823175" elapsed="0.000032"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:50:54.822474" elapsed="0.000785"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:50:54.822383" elapsed="0.000916"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:54.823491" elapsed="0.000029"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:50:54.823573" elapsed="0.000021"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:50:54.803097" elapsed="0.020628">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:50:54.823916" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:50:54.823978" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:50:54.802275" elapsed="0.021735"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T00:50:54.824888" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T00:50:54.824447" elapsed="0.000524">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T00:50:54.824126" elapsed="0.000930">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T00:50:54.824100" elapsed="0.001000">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T00:50:54.825183" elapsed="0.000023"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:50:54.745949" elapsed="0.079374">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:54.825565" elapsed="0.000030"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:54.825827" elapsed="0.000029"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T00:50:54.825914" elapsed="0.000020"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T00:50:54.743420" elapsed="0.082630">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:54.826304" elapsed="0.000030"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:54.826554" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:54.826789" elapsed="0.000027"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:54.827012" elapsed="0.000027"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:54.827259" elapsed="0.000029"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:54.827489" elapsed="0.000027"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T00:50:54.827572" elapsed="0.000020"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T00:50:54.740585" elapsed="0.087123">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:50:55.859929" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:50:55.859437" elapsed="0.000526"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:50:55.860488" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:50:55.860143" elapsed="0.000371"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:50:55.860564" elapsed="0.000044"/>
</return>
<msg time="2026-04-08T00:50:55.860744" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:50:55.859014" elapsed="0.001756"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T00:50:55.865552" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T00:50:55.865356" elapsed="0.000223"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:50:55.865737" elapsed="0.000214"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:55.866345" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:55.866110" elapsed="0.000261"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:55.866831" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:55.866566" elapsed="0.000312"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:50:55.867027" elapsed="0.000204"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:55.867599" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:55.867386" elapsed="0.000238"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:55.868042" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:55.867794" elapsed="0.000291"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:55.868604" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:55.868256" elapsed="0.000375"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:55.869061" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:55.868799" elapsed="0.000307"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:55.869567" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:55.869277" elapsed="0.000316"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:50:55.876111" elapsed="0.000232"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:50:55.884816" elapsed="0.000230"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:50:55.885621" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:50:55.885219" elapsed="0.000429"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:55.886826" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:55.886284" elapsed="0.000583"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:50:55.887002" elapsed="0.000034"/>
</return>
<msg time="2026-04-08T00:50:55.887176" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:50:55.885836" elapsed="0.001367"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:50:55.887818" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:50:55.887363" elapsed="0.000483"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:50:55.888449" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:50:55.888004" elapsed="0.000472"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:50:55.889005" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:50:55.899137" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:50:55.888638" elapsed="0.012363">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:55.901219" elapsed="0.000055"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:55.901437" elapsed="0.000021"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:55.901605" elapsed="0.000022"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:55.901775" elapsed="0.000020"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:55.901956" elapsed="0.000021"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:55.902124" elapsed="0.000020"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:55.902425" elapsed="0.000021"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:55.902651" elapsed="0.000022"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:55.902841" elapsed="0.000022"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:50:55.902295" elapsed="0.000627"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:50:55.902213" elapsed="0.000738"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:55.903094" elapsed="0.000021"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:50:55.903170" elapsed="0.000018"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:50:55.884319" elapsed="0.018982">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:50:55.903372" elapsed="0.000015"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T00:50:55.873915" elapsed="0.029556">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:55.903643" elapsed="0.000021"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:55.908089" elapsed="0.000028"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:55.908301" elapsed="0.000021"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T00:50:55.908368" elapsed="0.000015"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T00:50:55.864759" elapsed="0.043716">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:50:55.908594" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:50:55.908641" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:50:55.864104" elapsed="0.044561"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T00:50:55.908980" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:50:55.908812" elapsed="0.000212"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:55.908789" elapsed="0.000257"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:50:55.910453" elapsed="0.000210"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:50:55.911132" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:50:55.910815" elapsed="0.000370"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:55.911977" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:55.911709" elapsed="0.000294"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:50:55.912050" elapsed="0.000031"/>
</return>
<msg time="2026-04-08T00:50:55.912215" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:50:55.911374" elapsed="0.000866"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:50:55.912772" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:50:55.912399" elapsed="0.000399"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:50:55.913331" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:50:55.912970" elapsed="0.000387"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:50:55.913736" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:50:55.922764" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:50:55.913517" elapsed="0.011896">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:55.925688" elapsed="0.000032"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:55.925931" elapsed="0.000030"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:55.926182" elapsed="0.000031"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:55.926417" elapsed="0.000033"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:55.926713" elapsed="0.000035"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:55.927108" elapsed="0.000029"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:55.927542" elapsed="0.000035"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:55.927795" elapsed="0.000028"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:55.928020" elapsed="0.000027"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:50:55.927332" elapsed="0.000762"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:50:55.927224" elapsed="0.000959"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:55.928425" elapsed="0.000051"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:50:55.928549" elapsed="0.000027"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:50:55.909875" elapsed="0.018834">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:50:55.928919" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:50:55.928991" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:50:55.909228" elapsed="0.019797"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T00:50:55.930040" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T00:50:55.929571" elapsed="0.000557">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T00:50:55.929236" elapsed="0.001005">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T00:50:55.929197" elapsed="0.001090">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T00:50:55.930351" elapsed="0.000022"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:50:55.863550" elapsed="0.066949">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:55.930753" elapsed="0.000029"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:55.930986" elapsed="0.000028"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T00:50:55.931071" elapsed="0.000021"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T00:50:55.861125" elapsed="0.070107">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:55.931483" elapsed="0.000032"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:55.931738" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:55.931973" elapsed="0.000029"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:55.932220" elapsed="0.000030"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:55.932464" elapsed="0.000030"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:55.932697" elapsed="0.000027"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T00:50:55.932782" elapsed="0.000020"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T00:50:55.858180" elapsed="0.074786">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:50:56.966593" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:50:56.966093" elapsed="0.000533"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:50:56.967111" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:50:56.966798" elapsed="0.000340"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:50:56.967204" elapsed="0.000041"/>
</return>
<msg time="2026-04-08T00:50:56.967378" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:50:56.965705" elapsed="0.001698"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T00:50:56.972101" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T00:50:56.971914" elapsed="0.000214"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:50:56.972318" elapsed="0.000192"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:56.972875" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:56.972663" elapsed="0.000239"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:56.973363" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:56.973086" elapsed="0.000320"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:50:56.973554" elapsed="0.000181"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:56.974096" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:56.973888" elapsed="0.000234"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:56.974556" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:56.974307" elapsed="0.000291"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:56.975112" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:56.974749" elapsed="0.000390"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:56.975561" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:56.975324" elapsed="0.000280"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:56.976052" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:56.975752" elapsed="0.000327"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:50:56.983414" elapsed="0.000303"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:50:56.992710" elapsed="0.000222"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:50:56.993495" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:50:56.993092" elapsed="0.000430"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:56.994668" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:56.994105" elapsed="0.000604"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:50:56.994841" elapsed="0.000032"/>
</return>
<msg time="2026-04-08T00:50:56.994996" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:50:56.993707" elapsed="0.001314"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:50:56.995639" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:50:56.995197" elapsed="0.000469"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:50:56.996299" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:50:56.995824" elapsed="0.000502"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:50:56.996826" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:50:57.010509" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:50:56.996490" elapsed="0.016479">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:57.013255" elapsed="0.000034"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:57.013499" elapsed="0.000030"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:57.013730" elapsed="0.000028"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:57.013959" elapsed="0.000029"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:57.014272" elapsed="0.000031"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:57.014506" elapsed="0.000029"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:57.014878" elapsed="0.000029"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:57.015212" elapsed="0.000031"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:57.015486" elapsed="0.000029"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:50:57.014697" elapsed="0.000900"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:50:57.014599" elapsed="0.001037"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:57.015834" elapsed="0.000029"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:50:57.015923" elapsed="0.000022"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:50:56.992210" elapsed="0.023872">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:50:57.016250" elapsed="0.000023"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T00:50:56.980446" elapsed="0.035948">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:57.016638" elapsed="0.000029"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:57.022432" elapsed="0.000037"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:57.022700" elapsed="0.000029"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T00:50:57.022792" elapsed="0.000026"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T00:50:56.971374" elapsed="0.051600">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:50:57.023139" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:50:57.023221" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:50:56.970799" elapsed="0.052456"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T00:50:57.023532" elapsed="0.000019"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:50:57.023375" elapsed="0.000216"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:57.023347" elapsed="0.000275"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:50:57.025489" elapsed="0.000295"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:50:57.026447" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:50:57.025997" elapsed="0.000487"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:57.027851" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:57.027228" elapsed="0.000662"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:50:57.028005" elapsed="0.000043"/>
</return>
<msg time="2026-04-08T00:50:57.028286" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:50:57.026736" elapsed="0.001586"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:50:57.029026" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:50:57.028550" elapsed="0.000502"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:50:57.029582" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:50:57.029227" elapsed="0.000382"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:50:57.029971" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:50:57.041091" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:50:57.029772" elapsed="0.013008">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:57.042967" elapsed="0.000023"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:57.043140" elapsed="0.000037"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:57.043325" elapsed="0.000020"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:57.043490" elapsed="0.000020"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:57.043660" elapsed="0.000020"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:57.043821" elapsed="0.000020"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:57.044082" elapsed="0.000067"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:57.044328" elapsed="0.000022"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:57.044489" elapsed="0.000020"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:50:57.043955" elapsed="0.000586"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:50:57.043889" elapsed="0.000678"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:57.044703" elapsed="0.000020"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:50:57.044760" elapsed="0.000016"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:50:57.024710" elapsed="0.020177">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:50:57.045067" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:50:57.045136" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:50:57.023828" elapsed="0.021362"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T00:50:57.046042" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T00:50:57.045605" elapsed="0.000522">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T00:50:57.045308" elapsed="0.000933">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T00:50:57.045282" elapsed="0.001003">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T00:50:57.046348" elapsed="0.000022"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:50:56.970245" elapsed="0.076240">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:57.046799" elapsed="0.000031"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:57.047035" elapsed="0.000028"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T00:50:57.047121" elapsed="0.000021"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T00:50:56.967698" elapsed="0.079583">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:57.047515" elapsed="0.000028"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:57.047760" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:57.047994" elapsed="0.000027"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:57.048256" elapsed="0.000029"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:57.048489" elapsed="0.000028"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:57.048715" elapsed="0.000028"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T00:50:57.048800" elapsed="0.000020"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T00:50:56.964910" elapsed="0.084024">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:50:58.083748" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:50:58.083234" elapsed="0.000548"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:50:58.084320" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:50:58.083959" elapsed="0.000388"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:50:58.084398" elapsed="0.000042"/>
</return>
<msg time="2026-04-08T00:50:58.084573" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:50:58.082817" elapsed="0.001781"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T00:50:58.089575" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T00:50:58.089380" elapsed="0.000223"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:50:58.089756" elapsed="0.000196"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:58.090339" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:58.090107" elapsed="0.000258"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:58.090816" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:58.090555" elapsed="0.000302"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:50:58.091004" elapsed="0.000200"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:58.091587" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:58.091357" elapsed="0.000256"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:58.092125" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:58.091860" elapsed="0.000323"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:58.092683" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:58.092339" elapsed="0.000369"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:58.093111" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:58.092875" elapsed="0.000293"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:58.093604" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:58.093320" elapsed="0.000310"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:50:58.100119" elapsed="0.000233"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:50:58.109013" elapsed="0.000232"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:50:58.109808" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:50:58.109407" elapsed="0.000428"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:58.110994" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:58.110452" elapsed="0.000583"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:50:58.111184" elapsed="0.000036"/>
</return>
<msg time="2026-04-08T00:50:58.111348" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:50:58.110025" elapsed="0.001359"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:50:58.111999" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:50:58.111548" elapsed="0.000479"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:50:58.112637" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:50:58.112203" elapsed="0.000461"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:50:58.113180" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:50:58.124325" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:50:58.112827" elapsed="0.014837">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:58.128089" elapsed="0.000053"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:58.128528" elapsed="0.000063"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:58.129034" elapsed="0.000061"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:58.129633" elapsed="0.000051"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:58.130065" elapsed="0.000054"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:58.130490" elapsed="0.000046"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:58.131094" elapsed="0.000045"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:58.131658" elapsed="0.000049"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:58.132095" elapsed="0.000047"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:50:58.130805" elapsed="0.001504"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:50:58.130642" elapsed="0.001733"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:58.132695" elapsed="0.000046"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:50:58.132829" elapsed="0.000035"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:50:58.108514" elapsed="0.024580">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:50:58.133391" elapsed="0.000040"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T00:50:58.097833" elapsed="0.035793">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:58.134020" elapsed="0.000048"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:58.139477" elapsed="0.000028"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:58.139673" elapsed="0.000021"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T00:50:58.139738" elapsed="0.000016"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T00:50:58.088816" elapsed="0.051029">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:50:58.139969" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:50:58.140014" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:50:58.088251" elapsed="0.051787"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T00:50:58.140280" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:50:58.140135" elapsed="0.000188"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:58.140113" elapsed="0.000233"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:50:58.141734" elapsed="0.000216"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:50:58.142441" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:50:58.142103" elapsed="0.000364"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:58.143284" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:58.142992" elapsed="0.000318"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:50:58.143377" elapsed="0.000033"/>
</return>
<msg time="2026-04-08T00:50:58.143531" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:50:58.142649" elapsed="0.000907"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:50:58.144091" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:50:58.143715" elapsed="0.000403"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:50:58.144639" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:50:58.144291" elapsed="0.000374"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:50:58.145057" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:50:58.154278" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:50:58.144827" elapsed="0.012205">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:58.157440" elapsed="0.000038"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:58.157703" elapsed="0.000030"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:58.157951" elapsed="0.000030"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:58.158226" elapsed="0.000031"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:58.158538" elapsed="0.000032"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:58.158782" elapsed="0.000029"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:58.159205" elapsed="0.000032"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:58.159492" elapsed="0.000031"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:58.159734" elapsed="0.000029"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:50:58.158994" elapsed="0.000817"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:50:58.158883" elapsed="0.000969"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:58.159993" elapsed="0.000019"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:50:58.160051" elapsed="0.000017"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:50:58.141171" elapsed="0.019015">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:50:58.160315" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:50:58.160359" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:50:58.140501" elapsed="0.019882"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T00:50:58.161368" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T00:50:58.160699" elapsed="0.000732">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T00:50:58.160473" elapsed="0.001020">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T00:50:58.160452" elapsed="0.001074">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T00:50:58.161572" elapsed="0.000016"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:50:58.087678" elapsed="0.073995">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:58.161854" elapsed="0.000021"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:58.162021" elapsed="0.000020"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T00:50:58.162081" elapsed="0.000015"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T00:50:58.084899" elapsed="0.077297">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:58.162366" elapsed="0.000021"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:58.162584" elapsed="0.000021"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:58.162755" elapsed="0.000020"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:58.162916" elapsed="0.000019"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:58.163081" elapsed="0.000019"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:58.163261" elapsed="0.000020"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T00:50:58.163324" elapsed="0.000029"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T00:50:58.081965" elapsed="0.081477">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:50:59.195509" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:50:59.194995" elapsed="0.000549"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:50:59.196044" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:50:59.195718" elapsed="0.000353"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:50:59.196120" elapsed="0.000059"/>
</return>
<msg time="2026-04-08T00:50:59.196316" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:50:59.194511" elapsed="0.001831"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T00:50:59.201001" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T00:50:59.200808" elapsed="0.000220"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:50:59.201195" elapsed="0.000197"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:59.201762" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:59.201546" elapsed="0.000242"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:59.202251" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:59.201975" elapsed="0.000320"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:50:59.202446" elapsed="0.000185"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:59.203008" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:59.202797" elapsed="0.000237"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:59.203473" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:59.203222" elapsed="0.000294"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:59.204014" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:59.203669" elapsed="0.000371"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:50:59.204463" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:50:59.204223" elapsed="0.000285"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:50:59.204943" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:50:59.204658" elapsed="0.000311"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:50:59.211631" elapsed="0.000231"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:50:59.220671" elapsed="0.000343"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:50:59.221619" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:50:59.221201" elapsed="0.000446"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:59.222860" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:59.222293" elapsed="0.000609"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:50:59.223041" elapsed="0.000043"/>
</return>
<msg time="2026-04-08T00:50:59.223232" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:50:59.221862" elapsed="0.001397"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:50:59.223897" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:50:59.223425" elapsed="0.000500"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:50:59.224540" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:50:59.224088" elapsed="0.000480"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:50:59.225068" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:50:59.235268" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:50:59.224735" elapsed="0.012286">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:59.237226" elapsed="0.000024"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:59.237404" elapsed="0.000021"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:59.237574" elapsed="0.000021"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:59.237743" elapsed="0.000021"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:59.237918" elapsed="0.000020"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:59.238085" elapsed="0.000021"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:59.238385" elapsed="0.000021"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:59.238614" elapsed="0.000050"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:59.238842" elapsed="0.000021"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:50:59.238251" elapsed="0.000672"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:50:59.238175" elapsed="0.000777"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:59.239097" elapsed="0.000021"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:50:59.239176" elapsed="0.000017"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:50:59.220050" elapsed="0.019247">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:50:59.239368" elapsed="0.000015"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T00:50:59.209346" elapsed="0.030123">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:59.239694" elapsed="0.000021"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:59.244050" elapsed="0.000028"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:59.244271" elapsed="0.000022"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T00:50:59.244339" elapsed="0.000016"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T00:50:59.200264" elapsed="0.044186">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:50:59.244570" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:50:59.244615" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:50:59.199685" elapsed="0.044953"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T00:50:59.244856" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:50:59.244732" elapsed="0.000166"/>
</branch>
<status status="PASS" start="2026-04-08T00:50:59.244710" elapsed="0.000210"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:50:59.246286" elapsed="0.000212"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:50:59.246984" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:50:59.246671" elapsed="0.000340"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:50:59.247819" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:50:59.247551" elapsed="0.000293"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:50:59.247892" elapsed="0.000031"/>
</return>
<msg time="2026-04-08T00:50:59.248042" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:50:59.247209" elapsed="0.000857"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:50:59.248613" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:50:59.248241" elapsed="0.000398"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:50:59.249140" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:50:59.248795" elapsed="0.000386"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:50:59.249553" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:50:59.258445" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:50:59.249343" elapsed="0.010902">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:59.260440" elapsed="0.000024"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:59.260616" elapsed="0.000020"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:59.260781" elapsed="0.000021"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:59.260953" elapsed="0.000021"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:59.261123" elapsed="0.000020"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:59.261304" elapsed="0.000020"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:59.261572" elapsed="0.000074"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:59.261804" elapsed="0.000021"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:59.261967" elapsed="0.000021"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:50:59.261442" elapsed="0.000579"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:50:59.261371" elapsed="0.000677"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:59.262207" elapsed="0.000022"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:50:59.262270" elapsed="0.000016"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:50:59.245722" elapsed="0.016662">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:50:59.262506" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:50:59.262551" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:50:59.245073" elapsed="0.017503"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T00:50:59.263254" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T00:50:59.262903" elapsed="0.000413">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T00:50:59.262679" elapsed="0.000700">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T00:50:59.262658" elapsed="0.000753">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T00:50:59.263457" elapsed="0.000016"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:50:59.199120" elapsed="0.064437">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:59.263735" elapsed="0.000021"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:59.263904" elapsed="0.000020"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T00:50:59.263966" elapsed="0.000015"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T00:50:59.196646" elapsed="0.067421">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:59.264256" elapsed="0.000022"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:59.264439" elapsed="0.000021"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:59.264609" elapsed="0.000020"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:59.264771" elapsed="0.000020"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:59.264935" elapsed="0.000020"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:50:59.265098" elapsed="0.000020"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T00:50:59.265173" elapsed="0.000016"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T00:50:59.193657" elapsed="0.071619">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:51:00.298228" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:51:00.297691" elapsed="0.000570"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:51:00.298757" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:51:00.298435" elapsed="0.000350"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:51:00.298833" elapsed="0.000040"/>
</return>
<msg time="2026-04-08T00:51:00.299007" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:51:00.297293" elapsed="0.001739"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T00:51:00.303721" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T00:51:00.303529" elapsed="0.000218"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:51:00.303900" elapsed="0.000194"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:51:00.304473" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:51:00.304261" elapsed="0.000238"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:00.304942" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:00.304685" elapsed="0.000299"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:51:00.305131" elapsed="0.000200"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:51:00.305694" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:51:00.305484" elapsed="0.000236"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:00.306167" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:00.305888" elapsed="0.000324"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:00.306710" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:00.306364" elapsed="0.000372"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:00.307138" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:00.306901" elapsed="0.000298"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:00.307635" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:00.307350" elapsed="0.000311"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:51:00.314212" elapsed="0.000217"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:51:00.322962" elapsed="0.000230"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:51:00.323745" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:51:00.323352" elapsed="0.000420"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:51:00.324917" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:51:00.324380" elapsed="0.000578"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:51:00.325093" elapsed="0.000032"/>
</return>
<msg time="2026-04-08T00:51:00.325267" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:51:00.323958" elapsed="0.001334"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:51:00.325899" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:51:00.325453" elapsed="0.000497"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:51:00.326628" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:51:00.326192" elapsed="0.000464"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:51:00.327172" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:51:00.339511" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:51:00.326821" elapsed="0.015366">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:00.342476" elapsed="0.000036"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:00.342737" elapsed="0.000031"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:00.342984" elapsed="0.000030"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:00.343253" elapsed="0.000031"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:00.343507" elapsed="0.000030"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:00.343747" elapsed="0.000029"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:00.344151" elapsed="0.000048"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:00.344490" elapsed="0.000029"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:00.344758" elapsed="0.000030"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:51:00.343965" elapsed="0.000906"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:51:00.343847" elapsed="0.001065"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:00.345129" elapsed="0.000062"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:51:00.345253" elapsed="0.000024"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:51:00.322467" elapsed="0.022966">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:51:00.345535" elapsed="0.000023"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T00:51:00.311942" elapsed="0.033741">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:00.345960" elapsed="0.000032"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:00.352055" elapsed="0.000027"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:00.352264" elapsed="0.000022"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T00:51:00.352331" elapsed="0.000016"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T00:51:00.302950" elapsed="0.049486">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:51:00.352598" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:51:00.352642" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:51:00.302379" elapsed="0.050287"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T00:51:00.352879" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:51:00.352760" elapsed="0.000162"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:00.352739" elapsed="0.000205"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:51:00.354321" elapsed="0.000213"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:51:00.354999" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:51:00.354688" elapsed="0.000337"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:51:00.355825" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:51:00.355559" elapsed="0.000292"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:51:00.355898" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:51:00.356045" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:51:00.355222" elapsed="0.000847"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:51:00.356614" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:51:00.356244" elapsed="0.000395"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:51:00.357143" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:51:00.356795" elapsed="0.000389"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:51:00.357548" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:51:00.368711" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:51:00.357344" elapsed="0.015121">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:00.372988" elapsed="0.000060"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:00.373448" elapsed="0.000062"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:00.373843" elapsed="0.000068"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:00.374266" elapsed="0.000047"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:00.374641" elapsed="0.000043"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:00.374993" elapsed="0.000042"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:00.375595" elapsed="0.000044"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:00.375971" elapsed="0.000043"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:00.376355" elapsed="0.000046"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:51:00.375312" elapsed="0.001161"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:51:00.375131" elapsed="0.001400"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:00.376837" elapsed="0.000043"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:51:00.376964" elapsed="0.000033"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:51:00.353728" elapsed="0.023511">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:51:00.377597" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:51:00.377696" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:51:00.353095" elapsed="0.024654"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T00:51:00.379082" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T00:51:00.378500" elapsed="0.000643">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T00:51:00.377985" elapsed="0.001236">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T00:51:00.377940" elapsed="0.001313">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T00:51:00.379300" elapsed="0.000015"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:51:00.301755" elapsed="0.077645">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:00.379580" elapsed="0.000022"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:00.379749" elapsed="0.000020"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T00:51:00.379811" elapsed="0.000014"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T00:51:00.299349" elapsed="0.080560">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:00.380079" elapsed="0.000020"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:00.380272" elapsed="0.000021"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:00.380444" elapsed="0.000019"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:00.380604" elapsed="0.000020"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:00.380769" elapsed="0.000019"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:00.380931" elapsed="0.000020"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T00:51:00.380992" elapsed="0.000014"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T00:51:00.296465" elapsed="0.084626">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:51:01.412825" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:51:01.412356" elapsed="0.000501"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:51:01.413406" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:51:01.413027" elapsed="0.000406"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:51:01.413482" elapsed="0.000044"/>
</return>
<msg time="2026-04-08T00:51:01.413657" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:51:01.411937" elapsed="0.001824"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T00:51:01.418424" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T00:51:01.418231" elapsed="0.000225"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:51:01.418653" elapsed="0.000244"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:51:01.419295" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:51:01.419058" elapsed="0.000262"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:01.419766" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:01.419506" elapsed="0.000302"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:51:01.419956" elapsed="0.000182"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:51:01.420518" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:51:01.420307" elapsed="0.000237"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:01.420960" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:01.420712" elapsed="0.000290"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:01.421533" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:01.421168" elapsed="0.000391"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:01.421968" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:01.421729" elapsed="0.000283"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:01.422464" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:01.422177" elapsed="0.000313"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:51:01.431102" elapsed="0.000240"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:51:01.439920" elapsed="0.000276"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:51:01.440761" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:51:01.440364" elapsed="0.000424"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:51:01.442007" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:51:01.441427" elapsed="0.000624"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:51:01.442208" elapsed="0.000037"/>
</return>
<msg time="2026-04-08T00:51:01.442376" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:51:01.440975" elapsed="0.001427"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:51:01.443020" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:51:01.442563" elapsed="0.000485"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:51:01.443656" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:51:01.443223" elapsed="0.000460"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:51:01.444204" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:51:01.454325" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:51:01.443847" elapsed="0.012285">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:01.456344" elapsed="0.000024"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:01.456522" elapsed="0.000022"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:01.456745" elapsed="0.000021"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:01.456915" elapsed="0.000021"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:01.457089" elapsed="0.000021"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:01.457311" elapsed="0.000022"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:01.457592" elapsed="0.000022"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:01.457823" elapsed="0.000021"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:01.458070" elapsed="0.000057"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:51:01.457460" elapsed="0.000855"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:51:01.457384" elapsed="0.000998"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:01.458701" elapsed="0.000048"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:51:01.458837" elapsed="0.000037"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:51:01.439418" elapsed="0.019678">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:51:01.459336" elapsed="0.000039"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T00:51:01.428898" elapsed="0.030680">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:01.459971" elapsed="0.000047"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:01.469610" elapsed="0.000063"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:01.470060" elapsed="0.000038"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T00:51:01.470152" elapsed="0.000036"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T00:51:01.417670" elapsed="0.052613">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:51:01.470406" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:51:01.470450" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:51:01.417070" elapsed="0.053403"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T00:51:01.470694" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:51:01.470569" elapsed="0.000167"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:01.470548" elapsed="0.000211"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:51:01.472185" elapsed="0.000217"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:51:01.472874" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:51:01.472556" elapsed="0.000345"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:51:01.473983" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:51:01.473508" elapsed="0.000506"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:51:01.474066" elapsed="0.000032"/>
</return>
<msg time="2026-04-08T00:51:01.474238" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:51:01.473133" elapsed="0.001131"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:51:01.474809" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:51:01.474425" elapsed="0.000412"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:51:01.475364" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:51:01.474994" elapsed="0.000398"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:51:01.475772" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:51:01.484538" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:51:01.475555" elapsed="0.010901">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:01.486645" elapsed="0.000023"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:01.486819" elapsed="0.000020"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:01.487003" elapsed="0.000026"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:01.487199" elapsed="0.000022"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:01.487375" elapsed="0.000020"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:01.487538" elapsed="0.000020"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:01.487802" elapsed="0.000020"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:01.487992" elapsed="0.000022"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:01.488189" elapsed="0.000031"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:51:01.487673" elapsed="0.000585"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:51:01.487603" elapsed="0.000684"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:01.488435" elapsed="0.000021"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:51:01.488496" elapsed="0.000016"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:51:01.471610" elapsed="0.016997">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:51:01.488723" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:51:01.488767" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:51:01.470912" elapsed="0.017878"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T00:51:01.489501" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T00:51:01.489117" elapsed="0.000447">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T00:51:01.488875" elapsed="0.000752">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T00:51:01.488856" elapsed="0.000803">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T00:51:01.489705" elapsed="0.000015"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:51:01.416511" elapsed="0.073341">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:01.490077" elapsed="0.000032"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:01.490345" elapsed="0.000030"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T00:51:01.490433" elapsed="0.000021"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T00:51:01.414064" elapsed="0.076508">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:01.490805" elapsed="0.000029"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:01.491079" elapsed="0.000031"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:01.491348" elapsed="0.000029"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:01.491580" elapsed="0.000028"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:01.491815" elapsed="0.000029"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:01.492059" elapsed="0.000030"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T00:51:01.492149" elapsed="0.000041"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T00:51:01.411103" elapsed="0.081211">Could not parse owner and candidates for device openflow:1</status>
</kw>
<msg time="2026-04-08T00:51:01.492460" level="FAIL">Keyword 'ClusterManagement.Verify_Owner_And_Successors_For_Device' failed after retrying for 30 seconds. The last error was: Could not parse owner and candidates for device openflow:1</msg>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>30s</arg>
<arg>1s</arg>
<arg>ClusterManagement.Verify_Owner_And_Successors_For_Device</arg>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="FAIL" start="2026-04-08T00:50:31.355481" elapsed="30.137110">Keyword 'ClusterManagement.Verify_Owner_And_Successors_For_Device' failed after retrying for 30 seconds. The last error was: Could not parse owner and candidates for device openflow:1</status>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T00:51:01.492698" elapsed="0.000022"/>
</return>
<var>${new_owner}</var>
<var>${new_successors_list}</var>
<arg>openflow:1</arg>
<arg>1</arg>
<doc>Check Entity Owner Status and identify owner and successors for the device ${device}. Request is sent to controller ${controller_index}.</doc>
<status status="FAIL" start="2026-04-08T00:50:31.353417" elapsed="30.139419">Keyword 'ClusterManagement.Verify_Owner_And_Successors_For_Device' failed after retrying for 30 seconds. The last error was: Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<arg>${new_owner}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:01.493102" elapsed="0.000031"/>
</kw>
<doc>Check Entity Owner Status and identify owner and successor.</doc>
<status status="FAIL" start="2026-04-08T00:50:31.345549" elapsed="30.147822">Keyword 'ClusterManagement.Verify_Owner_And_Successors_For_Device' failed after retrying for 30 seconds. The last error was: Could not parse owner and candidates for device openflow:1</status>
</test>
<test id="s1-s1-t37" name="Check Network Operational Information After Recover" line="191">
<kw name="Check OpenFlow Network Operational Information For Sample Topology" owner="ClusterOpenFlow">
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-08T00:51:01.503737" level="INFO">${dictionary} = {'openflow:1': '4', 'openflow:2': '5', 'openflow:3': '5'}</msg>
<var>${dictionary}</var>
<arg>openflow:1=4</arg>
<arg>openflow:2=5</arg>
<arg>openflow:3=5</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-08T00:51:01.503324" elapsed="0.000445"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Check_Item_Occurrence_Member_List_Or_All" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:51:01.510440" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:51:01.510017" elapsed="0.000452"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:51:01.510974" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:51:01.510628" elapsed="0.000374"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:51:01.511049" elapsed="0.000042"/>
</return>
<msg time="2026-04-08T00:51:01.511242" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:51:01.509641" elapsed="0.001627"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_From_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:01.516683" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:01.516378" elapsed="0.000332"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:51:01.516756" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:51:01.516904" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:51:01.516016" elapsed="0.000913"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:01.523278" level="INFO">/rests/data/opendaylight-inventory:nodes?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:01.522998" elapsed="0.000328"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:01.523728" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:01.523482" elapsed="0.000289"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:51:01.543656" level="INFO">GET Request : url=http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01nfu2ssrokr1es5zgka78rw970.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:51:01.546202" level="INFO">GET Response : url=http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Transfer-Encoding': 'chunked'} 
 body={"opendaylight-inventory:nodes":{"node":[{"id":"openflow:3","flow-node-inventory:port-number":55176,"flow-node-inventory:table":[{"id":62,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":28,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":2,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":224,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":181,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":147,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":106,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":61,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":27,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":1,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":223,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":182,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":148,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":105,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":60,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":30,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":0,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"47","active-flows":1,"packets-matched":"38"},"flow":[{"id":"#UF$TABLE*0-1","table_id":0,"priority":0,"cookie_mask":"0","idle-timeout":0,"cookie":"10","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"output-action":{"max-length":65535,"output-node-connector":"CONTROLLER"}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"26","byte-count":"2030","duration":{"second":69,"nanosecond":761000000}},"flags":"SEND_FLOW_REM"}]},{"id":226,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":179,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":149,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":104,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":59,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":29,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":225,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":180,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":150,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":103,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":66,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":32,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":220,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":185,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":151,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":102,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":65,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":31,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":253,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":219,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":186,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":152,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":101,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":64,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":34,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":252,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":222,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":183,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":153,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":100,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":63,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":33,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":251,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":221,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":184,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":154,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":99,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":54,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":20,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":250,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":216,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":189,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":155,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":129,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":114,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":53,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":19,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":249,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":215,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":190,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":156,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":130,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":113,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{... (set the log level to DEBUG or TRACE to see the full content) 
 </msg>
<msg time="2026-04-08T00:51:01.546837" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:51:01.525887" elapsed="0.021038"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:01.523845" elapsed="0.023199"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:01.547558" elapsed="0.000075"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:01.547111" elapsed="0.000627"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:01.523825" elapsed="0.023963"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:01.556762" level="INFO">{"opendaylight-inventory:nodes":{"node":[{"id":"openflow:3","flow-node-inventory:port-number":55176,"flow-node-inventory:table":[{"id":62,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":28,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":2,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":224,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":181,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":147,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":106,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":61,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":27,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":1,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":223,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":182,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":148,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":105,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":60,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":30,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":0,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"47","active-flows":1,"packets-matched":"38"},"flow":[{"id":"#UF$TABLE*0-1","table_id":0,"priority":0,"cookie_mask":"0","idle-timeout":0,"cookie":"10","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"output-action":{"max-length":65535,"output-node-connector":"CONTROLLER"}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"26","byte-count":"2030","duration":{"second":69,"nanosecond":761000000}},"flags":"SEND_FLOW_REM"}]},{"id":226,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":179,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":149,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":104,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":59,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":29,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":225,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":180,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":150,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":103,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":66,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":32,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":220,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":185,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":151,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":102,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":65,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":31,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":253,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":219,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":186,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":152,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":101,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":64,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":34,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":252,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":222,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":183,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":153,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":100,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":63,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":33,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":251,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":221,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":184,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":154,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":99,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":54,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":20,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":250,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":216,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":189,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":155,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":129,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":114,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":53,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":19,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":249,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":215,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":190,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":156,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":130,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":113,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":52,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":22,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":248,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":218,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":187,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":157,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":112,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":51,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":21,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":247,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":217,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":188,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":158,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":128,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":111,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":58,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":24,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":246,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":212,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":193,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":159,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":110,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":57,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":23,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":245,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":211,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":194,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":160,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":109,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":56,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":26,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":244,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":214,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":191,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":161,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":108,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":55,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":25,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":243,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":213,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":192,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":162,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":107,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":77,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":43,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":17,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":239,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":198,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":164,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":138,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":119,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":89,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":78,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":44,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":18,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":240,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":197,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":163,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":137,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":120,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":90,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":75,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":45,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":15,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":241,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":196,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":166,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":136,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":121,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":87,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":76,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":46,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":16,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":242,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":195,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":165,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":135,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":122,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":88,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":81,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":47,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":13,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":235,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":202,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":168,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":134,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":115,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":85,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":82,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":48,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":14,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":236,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":201,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":167,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":133,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":116,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":86,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":79,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":49,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":11,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":237,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":200,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":170,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":132,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":117,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":83,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":80,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":50,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":12,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":238,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":199,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":169,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":131,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":118,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":84,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":69,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":35,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":9,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":231,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":206,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":172,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":146,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":127,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":97,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":70,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":36,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":10,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":232,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":205,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":171,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":145,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":98,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":67,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":37,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":7,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":233,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":204,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":174,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":144,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":95,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":68,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":38,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":8,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":234,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":203,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":173,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":143,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":96,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":73,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":39,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":5,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":227,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":210,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":176,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":142,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":123,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":93,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":74,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":40,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":6,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":228,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":209,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":175,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":141,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":124,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":94,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":71,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":41,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":3,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":229,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":208,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":178,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":140,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":125,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":91,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":72,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":42,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":4,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":230,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":207,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":177,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":139,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":126,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":92,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}}],"opendaylight-group-statistics:group-features":{"max-groups":[4294967040],"group-types-supported":["opendaylight-group-types:group-all","opendaylight-group-types:group-ff","opendaylight-group-types:group-select","opendaylight-group-types:group-indirect"],"group-capabilities-supported":["opendaylight-group-types:chaining","opendaylight-group-types:select-weight","opendaylight-group-types:select-liveness"],"actions":[67076097]},"flow-node-inventory:manufacturer":"Nicira, Inc.","flow-node-inventory:description":"s3","flow-node-inventory:hardware":"Open vSwitch","flow-node-inventory:switch-features":{"max_tables":254,"capabilities":["flow-node-inventory:flow-feature-capability-table-stats","flow-node-inventory:flow-feature-capability-group-stats","flow-node-inventory:flow-feature-capability-queue-stats","flow-node-inventory:flow-feature-capability-flow-stats","flow-node-inventory:flow-feature-capability-port-stats"],"max_buffers":0},"flow-node-inventory:snapshot-gathering-status-start":{"begin":"2026-04-08T00:51:01.305Z"},"flow-node-inventory:software":"2.17.11","node-connector":[{"id":"openflow:3:3","flow-node-inventory:port-number":3,"flow-node-inventory:hardware-address":"d6:85:2c:89:fa:1b","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s3-eth3","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"28","received":"30"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":71,"nanosecond":430000000},"bytes":{"transmitted":"2338","received":"2514"},"receive-crc-error":"0"}},{"id":"openflow:3:2","flow-node-inventory:port-number":2,"flow-node-inventory:hardware-address":"0e:09:5c:6f:b8:35","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s3-eth2","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"34","received":"10"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":71,"nanosecond":430000000},"bytes":{"transmitted":"2866","received":"796"},"receive-crc-error":"0"}},{"id":"openflow:3:1","flow-node-inventory:port-number":1,"flow-node-inventory:hardware-address":"ea:2e:b0:52:05:a4","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s3-eth1","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"34","received":"10"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":71,"nanosecond":430000000},"bytes":{"transmitted":"2866","received":"796"},"receive-crc-error":"0"}},{"id":"openflow:3:LOCAL","flow-node-inventory:port-number":4294967294,"flow-node-inventory:hardware-address":"46:1b:44:af:67:4b","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s3","flow-node-inventory:current-feature":"","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":0,"flow-node-inventory:state":{"live":false,"blocked":false,"link-down":true},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"PORT-DOWN","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"0","received":"0"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":71,"nanosecond":425000000},"bytes":{"transmitted":"0","received":"0"},"receive-crc-error":"0"}}],"flow-node-inventory:ip-address":"10.30.170.192","flow-node-inventory:serial-number":"None","flow-node-inventory:snapshot-gathering-status-end":{"succeeded":true,"end":"2026-04-08T00:51:01.323Z"}},{"id":"openflow:1","flow-node-inventory:port-number":55166,"flow-node-inventory:table":[{"id":62,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":28,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":2,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":224,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":181,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":147,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":106,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":61,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":27,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":1,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":223,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":182,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":148,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":105,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":60,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":30,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":0,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"63","active-flows":1,"packets-matched":"56"},"flow":[{"id":"#UF$TABLE*0-2","table_id":0,"priority":0,"cookie_mask":"0","idle-timeout":0,"cookie":"10","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"output-action":{"max-length":65535,"output-node-connector":"CONTROLLER"}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"44","byte-count":"3601","duration":{"second":69,"nanosecond":757000000}},"flags":"SEND_FLOW_REM"}]},{"id":226,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":179,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":149,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":104,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":59,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":29,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":225,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":180,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":150,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":103,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":66,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":32,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":220,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":185,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":151,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":102,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":65,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":31,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":253,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":219,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":186,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":152,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":101,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":64,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":34,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":252,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":222,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":183,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":153,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":100,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":63,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":33,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":251,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":221,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":184,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":154,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":99,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":54,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":20,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":250,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":216,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":189,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":155,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":129,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":114,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":53,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":19,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":249,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":215,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":190,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":156,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":130,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":113,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":52,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":22,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":248,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":218,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":187,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":157,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":112,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":51,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":21,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":247,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":217,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":188,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":158,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":128,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":111,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":58,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":24,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":246,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":212,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":193,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":159,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":110,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":57,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":23,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":245,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":211,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":194,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":160,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":109,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":56,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":26,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":244,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":214,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":191,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":161,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":108,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":55,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":25,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":243,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":213,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":192,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":162,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":107,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":77,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":43,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":17,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":239,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":198,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":164,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":138,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":119,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":89,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":78,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":44,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":18,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":240,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":197,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":163,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":137,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":120,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":90,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":75,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":45,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":15,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":241,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":196,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":166,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":136,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":121,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":87,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":76,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":46,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":16,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":242,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":195,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":165,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":135,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":122,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":88,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":81,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":47,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":13,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":235,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":202,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":168,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":134,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":115,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":85,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":82,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":48,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":14,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":236,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":201,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":167,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":133,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":116,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":86,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":79,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":49,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":11,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":237,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":200,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":170,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":132,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":117,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":83,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":80,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":50,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":12,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":238,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":199,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":169,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":131,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":118,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":84,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":69,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":35,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":9,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":231,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":206,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":172,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":146,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":127,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":97,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":70,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":36,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":10,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":232,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":205,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":171,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":145,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":98,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":67,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":37,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":7,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":233,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":204,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":174,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":144,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":95,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":68,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":38,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":8,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":234,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":203,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":173,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":143,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":96,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":73,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":39,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":5,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":227,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":210,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":176,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":142,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":123,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":93,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":74,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":40,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":6,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":228,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":209,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":175,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":141,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":124,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":94,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":71,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":41,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":3,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":229,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":208,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":178,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":140,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":125,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":91,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":72,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":42,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":4,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":230,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":207,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":177,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":139,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":126,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":92,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}}],"opendaylight-group-statistics:group-features":{"max-groups":[4294967040],"group-types-supported":["opendaylight-group-types:group-all","opendaylight-group-types:group-ff","opendaylight-group-types:group-select","opendaylight-group-types:group-indirect"],"group-capabilities-supported":["opendaylight-group-types:chaining","opendaylight-group-types:select-weight","opendaylight-group-types:select-liveness"],"actions":[67076097]},"flow-node-inventory:manufacturer":"Nicira, Inc.","flow-node-inventory:description":"s1","flow-node-inventory:hardware":"Open vSwitch","flow-node-inventory:switch-features":{"max_tables":254,"capabilities":["flow-node-inventory:flow-feature-capability-table-stats","flow-node-inventory:flow-feature-capability-group-stats","flow-node-inventory:flow-feature-capability-queue-stats","flow-node-inventory:flow-feature-capability-flow-stats","flow-node-inventory:flow-feature-capability-port-stats"],"max_buffers":0},"flow-node-inventory:snapshot-gathering-status-start":{"begin":"2026-04-08T00:51:01.304Z"},"flow-node-inventory:software":"2.17.11","node-connector":[{"id":"openflow:1:1","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:maximum-speed":0,"flow-node-inventory:reason":"update","flow-node-inventory:configuration":"","flow-node-inventory:port-number":1,"flow-node-inventory:hardware-address":"c6:0c:45:fe:a3:df","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s1-eth1","flow-node-inventory:supported":"","flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"39","received":"37"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":71,"nanosecond":441000000},"bytes":{"transmitted":"3255","received":"3079"},"receive-crc-error":"0"}},{"id":"openflow:1:LOCAL","flow-node-inventory:port-number":4294967294,"flow-node-inventory:hardware-address":"92:dc:44:02:39:46","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s1","flow-node-inventory:current-feature":"","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":0,"flow-node-inventory:state":{"live":false,"blocked":false,"link-down":true},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"PORT-DOWN","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"0","received":"0"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":71,"nanosecond":429000000},"bytes":{"transmitted":"0","received":"0"},"receive-crc-error":"0"}},{"id":"openflow:1:2","flow-node-inventory:port-number":2,"flow-node-inventory:hardware-address":"c2:e9:b7:e4:fd:76","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s1-eth2","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"30","received":"28"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":71,"nanosecond":441000000},"bytes":{"transmitted":"2514","received":"2338"},"receive-crc-error":"0"}}],"flow-node-inventory:ip-address":"10.30.170.192","flow-node-inventory:serial-number":"None","flow-node-inventory:snapshot-gathering-status-end":{"succeeded":true,"end":"2026-04-08T00:51:01.323Z"}},{"id":"openflow:2","flow-node-inventory:port-number":55170,"flow-node-inventory:table":[{"id":62,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":28,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":2,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":224,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":181,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":147,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":106,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":61,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":27,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":1,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":223,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":182,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":148,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":105,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":60,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":30,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":0,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"55","active-flows":1,"packets-matched":"50"},"flow":[{"id":"#UF$TABLE*0-3","table_id":0,"priority":0,"cookie_mask":"0","idle-timeout":0,"cookie":"10","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"output-action":{"max-length":65535,"output-node-connector":"CONTROLLER"}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"38","byte-count":"3041","duration":{"second":69,"nanosecond":763000000}},"flags":"SEND_FLOW_REM"}]},{"id":226,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":179,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":149,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":104,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":59,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":29,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":225,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":180,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":150,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":103,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":66,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":32,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":220,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":185,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":151,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":102,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":65,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":31,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":253,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":219,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":186,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":152,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":101,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":64,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":34,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":252,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":222,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":183,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":153,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":100,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":63,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":33,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":251,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":221,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":184,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":154,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":99,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":54,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":20,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":250,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":216,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":189,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":155,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":129,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":114,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":53,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":19,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":249,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":215,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":190,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":156,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":130,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":113,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":52,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":22,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":248,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":218,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":187,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":157,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":112,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":51,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":21,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":247,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":217,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":188,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":158,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":128,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":111,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":58,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":24,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":246,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":212,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":193,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":159,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":110,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":57,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":23,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":245,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":211,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":194,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":160,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":109,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":56,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":26,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":244,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":214,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":191,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":161,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":108,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":55,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":25,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":243,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":213,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":192,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":162,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":107,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":77,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":43,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":17,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":239,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":198,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":164,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":138,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":119,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":89,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":78,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":44,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":18,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":240,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":197,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":163,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":137,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":120,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":90,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":75,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":45,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":15,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":241,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":196,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":166,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":136,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":121,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":87,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":76,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":46,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":16,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":242,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":195,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":165,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":135,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":122,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":88,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":81,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":47,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":13,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":235,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":202,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":168,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":134,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":115,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":85,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":82,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":48,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":14,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":236,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":201,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":167,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":133,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":116,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":86,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":79,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":49,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":11,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":237,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":200,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":170,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":132,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":117,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":83,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":80,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":50,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":12,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":238,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":199,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":169,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":131,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":118,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":84,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":69,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":35,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":9,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":231,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":206,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":172,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":146,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":127,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":97,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":70,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":36,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":10,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":232,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":205,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":171,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":145,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":98,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":67,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":37,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":7,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":233,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":204,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":174,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":144,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":95,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":68,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":38,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":8,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":234,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":203,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":173,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":143,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":96,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":73,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":39,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":5,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":227,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":210,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":176,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":142,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":123,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":93,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":74,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":40,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":6,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":228,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":209,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":175,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":141,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":124,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":94,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":71,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":41,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":3,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":229,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":208,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":178,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":140,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":125,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":91,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":72,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":42,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":4,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":230,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":207,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":177,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":139,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":126,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":92,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}}],"opendaylight-group-statistics:group-features":{"max-groups":[4294967040],"group-types-supported":["opendaylight-group-types:group-all","opendaylight-group-types:group-ff","opendaylight-group-types:group-select","opendaylight-group-types:group-indirect"],"group-capabilities-supported":["opendaylight-group-types:chaining","opendaylight-group-types:select-weight","opendaylight-group-types:select-liveness"],"actions":[67076097]},"flow-node-inventory:manufacturer":"Nicira, Inc.","flow-node-inventory:description":"s2","flow-node-inventory:hardware":"Open vSwitch","flow-node-inventory:switch-features":{"max_tables":254,"capabilities":["flow-node-inventory:flow-feature-capability-table-stats","flow-node-inventory:flow-feature-capability-group-stats","flow-node-inventory:flow-feature-capability-queue-stats","flow-node-inventory:flow-feature-capability-flow-stats","flow-node-inventory:flow-feature-capability-port-stats"],"max_buffers":0},"flow-node-inventory:snapshot-gathering-status-start":{"begin":"2026-04-08T00:51:01.308Z"},"flow-node-inventory:software":"2.17.11","node-connector":[{"id":"openflow:2:3","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:maximum-speed":0,"flow-node-inventory:reason":"update","flow-node-inventory:configuration":"","flow-node-inventory:port-number":3,"flow-node-inventory:hardware-address":"e6:ba:34:39:b4:59","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s2-eth3","flow-node-inventory:supported":"","flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"37","received":"39"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":71,"nanosecond":428000000},"bytes":{"transmitted":"3079","received":"3255"},"receive-crc-error":"0"}},{"id":"openflow:2:LOCAL","flow-node-inventory:port-number":4294967294,"flow-node-inventory:hardware-address":"a6:b5:a2:39:96:47","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s2","flow-node-inventory:current-feature":"","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":0,"flow-node-inventory:state":{"live":false,"blocked":false,"link-down":true},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"PORT-DOWN","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"0","received":"0"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":71,"nanosecond":426000000},"bytes":{"transmitted":"0","received":"0"},"receive-crc-error":"0"}},{"id":"openflow:2:2","flow-node-inventory:port-number":2,"flow-node-inventory:hardware-address":"8e:25:49:71:1c:58","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s2-eth2","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"34","received":"10"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":71,"nanosecond":428000000},"bytes":{"transmitted":"2866","received":"796"},"receive-crc-error":"0"}},{"id":"openflow:2:1","flow-node-inventory:port-number":1,"flow-node-inventory:hardware-address":"66:b8:61:ef:20:c7","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s2-eth1","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"34","received":"10"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":71,"nanosecond":428000000},"bytes":{"transmitted":"2866","received":"816"},"receive-crc-error":"0"}}],"flow-node-inventory:ip-address":"10.30.170.192","flow-node-inventory:serial-number":"None","flow-node-inventory:snapshot-gathering-status-end":{"succeeded":true,"end":"2026-04-08T00:51:01.329Z"}}]}}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:01.550222" elapsed="0.008344"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:01.549682" elapsed="0.008924"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:01.549635" elapsed="0.008997"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:01.561234" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:01.558940" elapsed="0.002341"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:01.558691" elapsed="0.002625"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:01.558673" elapsed="0.002667"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:01.561936" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:01.561531" elapsed="0.000432"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:01.562287" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:01.562033" elapsed="0.000312"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:01.562835" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:01.562532" elapsed="0.000329"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:01.562369" elapsed="0.000527"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:01.562015" elapsed="0.000903"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:01.563468" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:01.563086" elapsed="0.000409"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:01.563801" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:01.563565" elapsed="0.000293"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:01.564353" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:01.564041" elapsed="0.000337"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:01.563882" elapsed="0.000531"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:01.563547" elapsed="0.000888"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:51:01.564588" elapsed="0.000347"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:51:01.565447" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:01.565100" elapsed="0.000373"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:51:01.565629" elapsed="0.002211"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:51:01.548646" elapsed="0.019259"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-08T00:51:01.568087" elapsed="0.000034"/>
</return>
<status status="PASS" start="2026-04-08T00:51:01.567977" elapsed="0.000194"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:01.567957" elapsed="0.000241"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:01.568349" elapsed="0.000022"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-08T00:51:01.568419" elapsed="0.000014"/>
</return>
<msg time="2026-04-08T00:51:01.570942" level="INFO">${response_text} = {"opendaylight-inventory:nodes":{"node":[{"id":"openflow:3","flow-node-inventory:port-number":55176,"flow-node-inventory:table":[{"id":62,"opendaylight-flow-table-statistics:flow-table-statistics":{"p...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${access}</arg>
<arg>session=${session}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:51:01.517308" elapsed="0.053665"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:51:01.571024" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:51:01.571192" level="INFO">${data} = {"opendaylight-inventory:nodes":{"node":[{"id":"openflow:3","flow-node-inventory:port-number":55176,"flow-node-inventory:table":[{"id":62,"opendaylight-flow-table-statistics:flow-table-statistics":{"p...</msg>
<var>${data}</var>
<arg>uri=${uri}</arg>
<arg>member_index=${index}</arg>
<doc>Send a GET with the supplied uri to member ${member_index}.</doc>
<status status="PASS" start="2026-04-08T00:51:01.515526" elapsed="0.055694"/>
</kw>
<kw name="Check Item Occurrence" owner="Utils">
<for flavor="IN">
<iter>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T00:51:01.572490" level="INFO">Item found from container 4 times.</msg>
<arg>${string}</arg>
<arg>${item}</arg>
<arg>${dictionary_item_occurrence}[${item}]</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="PASS" start="2026-04-08T00:51:01.572043" elapsed="0.000890"/>
</kw>
<var name="${item}">openflow:1</var>
<status status="PASS" start="2026-04-08T00:51:01.571876" elapsed="0.001097"/>
</iter>
<iter>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T00:51:01.573643" level="INFO">Item found from container 5 times.</msg>
<arg>${string}</arg>
<arg>${item}</arg>
<arg>${dictionary_item_occurrence}[${item}]</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="PASS" start="2026-04-08T00:51:01.573238" elapsed="0.000711"/>
</kw>
<var name="${item}">openflow:2</var>
<status status="PASS" start="2026-04-08T00:51:01.573056" elapsed="0.000967"/>
</iter>
<iter>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T00:51:01.574682" level="INFO">Item found from container 5 times.</msg>
<arg>${string}</arg>
<arg>${item}</arg>
<arg>${dictionary_item_occurrence}[${item}]</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="PASS" start="2026-04-08T00:51:01.574277" elapsed="0.000713"/>
</kw>
<var name="${item}">openflow:3</var>
<status status="PASS" start="2026-04-08T00:51:01.574107" elapsed="0.000923"/>
</iter>
<var>${item}</var>
<value>@{dictionary_item_occurrence}</value>
<status status="PASS" start="2026-04-08T00:51:01.571735" elapsed="0.003324"/>
</for>
<arg>${data}</arg>
<arg>${dictionary}</arg>
<doc>Check string for occurrences of items expressed in a list of dictionaries {item=occurrences}. 0 occurences means item is not present.</doc>
<status status="PASS" start="2026-04-08T00:51:01.571464" elapsed="0.003650"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T00:51:01.511474" elapsed="0.063674"/>
</iter>
<iter>
<kw name="Get_From_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:01.580439" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:01.580125" elapsed="0.000341"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:51:01.580510" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:51:01.580657" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:51:01.579782" elapsed="0.000900"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:01.587201" level="INFO">/rests/data/opendaylight-inventory:nodes?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:01.586932" elapsed="0.000317"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:01.587643" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:01.587402" elapsed="0.000285"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:51:01.623403" level="INFO">GET Request : url=http://10.30.170.131:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0evogeryo91251obsb096nsda10.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:51:01.627409" level="INFO">GET Response : url=http://10.30.170.131:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Transfer-Encoding': 'chunked'} 
 body={"opendaylight-inventory:nodes":{"node":[{"id":"openflow:3","flow-node-inventory:manufacturer":"Nicira, Inc.","flow-node-inventory:description":"s3","flow-node-inventory:hardware":"Open vSwitch","flow-node-inventory:software":"2.17.11","flow-node-inventory:ip-address":"10.30.170.192","flow-node-inventory:serial-number":"None","flow-node-inventory:port-number":55176,"flow-node-inventory:table":[{"id":62,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":28,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":2,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":224,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":181,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":147,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":106,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":61,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":27,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":1,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":223,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":182,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":148,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":105,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":60,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":30,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":0,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"47","active-flows":1,"packets-matched":"38"},"flow":[{"id":"#UF$TABLE*0-1","table_id":0,"priority":0,"cookie_mask":"0","idle-timeout":0,"cookie":"10","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"output-action":{"max-length":65535,"output-node-connector":"CONTROLLER"}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"26","byte-count":"2030","duration":{"second":69,"nanosecond":761000000}},"flags":"SEND_FLOW_REM"}]},{"id":226,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":179,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":149,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":104,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":59,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":29,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":225,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":180,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":150,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":103,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":66,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":32,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":220,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":185,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":151,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":102,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":65,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":31,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":253,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":219,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":186,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":152,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":101,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":64,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":34,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":252,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":222,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":183,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":153,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":100,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":63,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":33,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":251,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":221,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":184,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":154,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":99,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":54,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":20,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":250,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":216,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":189,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":155,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":129,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":114,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":53,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":19,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":249,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":215,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":190,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":156,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"i... (set the log level to DEBUG or TRACE to see the full content) 
 </msg>
<msg time="2026-04-08T00:51:01.627962" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:51:01.589711" elapsed="0.038318"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:01.587754" elapsed="0.040388"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:01.628666" elapsed="0.000055"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:01.628248" elapsed="0.000576"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:01.587736" elapsed="0.041140"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:01.634694" level="INFO">{"opendaylight-inventory:nodes":{"node":[{"id":"openflow:3","flow-node-inventory:manufacturer":"Nicira, Inc.","flow-node-inventory:description":"s3","flow-node-inventory:hardware":"Open vSwitch","flow-node-inventory:software":"2.17.11","flow-node-inventory:ip-address":"10.30.170.192","flow-node-inventory:serial-number":"None","flow-node-inventory:port-number":55176,"flow-node-inventory:table":[{"id":62,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":28,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":2,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":224,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":181,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":147,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":106,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":61,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":27,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":1,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":223,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":182,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":148,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":105,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":60,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":30,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":0,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"47","active-flows":1,"packets-matched":"38"},"flow":[{"id":"#UF$TABLE*0-1","table_id":0,"priority":0,"cookie_mask":"0","idle-timeout":0,"cookie":"10","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"output-action":{"max-length":65535,"output-node-connector":"CONTROLLER"}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"26","byte-count":"2030","duration":{"second":69,"nanosecond":761000000}},"flags":"SEND_FLOW_REM"}]},{"id":226,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":179,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":149,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":104,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":59,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":29,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":225,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":180,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":150,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":103,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":66,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":32,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":220,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":185,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":151,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":102,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":65,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":31,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":253,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":219,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":186,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":152,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":101,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":64,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":34,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":252,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":222,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":183,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":153,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":100,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":63,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":33,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":251,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":221,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":184,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":154,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":99,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":54,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":20,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":250,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":216,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":189,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":155,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":129,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":114,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":53,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":19,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":249,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":215,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":190,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":156,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":130,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":113,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":52,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":22,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":248,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":218,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":187,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":157,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":112,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":51,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":21,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":247,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":217,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":188,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":158,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":128,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":111,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":58,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":24,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":246,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":212,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":193,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":159,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":110,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":57,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":23,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":245,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":211,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":194,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":160,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":109,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":56,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":26,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":244,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":214,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":191,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":161,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":108,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":55,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":25,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":243,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":213,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":192,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":162,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":107,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":77,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":43,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":17,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":239,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":198,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":164,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":138,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":119,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":89,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":78,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":44,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":18,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":240,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":197,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":163,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":137,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":120,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":90,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":75,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":45,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":15,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":241,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":196,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":166,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":136,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":121,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":87,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":76,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":46,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":16,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":242,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":195,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":165,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":135,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":122,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":88,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":81,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":47,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":13,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":235,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":202,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":168,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":134,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":115,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":85,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":82,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":48,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":14,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":236,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":201,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":167,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":133,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":116,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":86,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":79,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":49,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":11,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":237,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":200,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":170,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":132,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":117,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":83,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":80,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":50,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":12,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":238,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":199,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":169,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":131,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":118,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":84,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":69,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":35,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":9,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":231,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":206,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":172,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":146,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":127,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":97,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":70,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":36,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":10,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":232,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":205,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":171,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":145,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":98,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":67,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":37,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":7,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":233,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":204,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":174,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":144,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":95,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":68,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":38,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":8,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":234,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":203,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":173,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":143,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":96,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":73,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":39,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":5,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":227,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":210,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":176,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":142,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":123,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":93,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":74,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":40,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":6,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":228,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":209,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":175,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":141,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":124,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":94,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":71,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":41,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":3,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":229,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":208,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":178,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":140,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":125,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":91,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":72,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":42,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":4,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":230,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":207,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":177,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":139,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":126,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":92,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}}],"opendaylight-group-statistics:group-features":{"max-groups":[4294967040],"group-types-supported":["opendaylight-group-types:group-all","opendaylight-group-types:group-ff","opendaylight-group-types:group-select","opendaylight-group-types:group-indirect"],"group-capabilities-supported":["opendaylight-group-types:chaining","opendaylight-group-types:select-weight","opendaylight-group-types:select-liveness"],"actions":[67076097]},"flow-node-inventory:switch-features":{"max_tables":254,"capabilities":["flow-node-inventory:flow-feature-capability-table-stats","flow-node-inventory:flow-feature-capability-group-stats","flow-node-inventory:flow-feature-capability-queue-stats","flow-node-inventory:flow-feature-capability-flow-stats","flow-node-inventory:flow-feature-capability-port-stats"],"max_buffers":0},"flow-node-inventory:snapshot-gathering-status-start":{"begin":"2026-04-08T00:51:01.305Z"},"node-connector":[{"id":"openflow:3:3","flow-node-inventory:port-number":3,"flow-node-inventory:hardware-address":"d6:85:2c:89:fa:1b","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s3-eth3","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"28","received":"30"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":71,"nanosecond":430000000},"bytes":{"transmitted":"2338","received":"2514"},"receive-crc-error":"0"}},{"id":"openflow:3:2","flow-node-inventory:port-number":2,"flow-node-inventory:hardware-address":"0e:09:5c:6f:b8:35","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s3-eth2","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"34","received":"10"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":71,"nanosecond":430000000},"bytes":{"transmitted":"2866","received":"796"},"receive-crc-error":"0"}},{"id":"openflow:3:1","flow-node-inventory:port-number":1,"flow-node-inventory:hardware-address":"ea:2e:b0:52:05:a4","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s3-eth1","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"34","received":"10"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":71,"nanosecond":430000000},"bytes":{"transmitted":"2866","received":"796"},"receive-crc-error":"0"}},{"id":"openflow:3:LOCAL","flow-node-inventory:port-number":4294967294,"flow-node-inventory:hardware-address":"46:1b:44:af:67:4b","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s3","flow-node-inventory:current-feature":"","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":0,"flow-node-inventory:state":{"live":false,"blocked":false,"link-down":true},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"PORT-DOWN","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"0","received":"0"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":71,"nanosecond":425000000},"bytes":{"transmitted":"0","received":"0"},"receive-crc-error":"0"}}],"flow-node-inventory:snapshot-gathering-status-end":{"succeeded":true,"end":"2026-04-08T00:51:01.323Z"}},{"id":"openflow:1","flow-node-inventory:manufacturer":"Nicira, Inc.","flow-node-inventory:description":"s1","flow-node-inventory:hardware":"Open vSwitch","flow-node-inventory:software":"2.17.11","flow-node-inventory:ip-address":"10.30.170.192","flow-node-inventory:serial-number":"None","flow-node-inventory:port-number":55166,"flow-node-inventory:table":[{"id":62,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":28,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":2,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":224,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":181,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":147,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":106,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":61,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":27,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":1,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":223,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":182,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":148,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":105,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":60,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":30,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":0,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"63","active-flows":1,"packets-matched":"56"},"flow":[{"id":"#UF$TABLE*0-2","table_id":0,"priority":0,"cookie_mask":"0","idle-timeout":0,"cookie":"10","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"output-action":{"max-length":65535,"output-node-connector":"CONTROLLER"}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"44","byte-count":"3601","duration":{"second":69,"nanosecond":757000000}},"flags":"SEND_FLOW_REM"}]},{"id":226,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":179,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":149,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":104,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":59,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":29,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":225,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":180,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":150,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":103,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":66,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":32,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":220,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":185,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":151,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":102,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":65,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":31,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":253,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":219,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":186,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":152,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":101,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":64,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":34,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":252,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":222,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":183,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":153,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":100,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":63,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":33,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":251,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":221,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":184,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":154,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":99,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":54,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":20,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":250,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":216,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":189,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":155,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":129,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":114,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":53,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":19,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":249,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":215,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":190,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":156,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":130,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":113,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":52,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":22,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":248,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":218,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":187,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":157,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":112,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":51,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":21,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":247,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":217,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":188,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":158,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":128,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":111,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":58,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":24,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":246,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":212,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":193,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":159,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":110,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":57,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":23,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":245,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":211,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":194,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":160,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":109,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":56,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":26,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":244,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":214,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":191,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":161,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":108,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":55,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":25,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":243,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":213,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":192,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":162,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":107,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":77,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":43,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":17,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":239,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":198,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":164,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":138,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":119,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":89,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":78,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":44,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":18,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":240,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":197,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":163,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":137,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":120,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":90,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":75,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":45,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":15,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":241,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":196,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":166,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":136,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":121,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":87,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":76,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":46,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":16,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":242,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":195,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":165,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":135,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":122,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":88,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":81,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":47,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":13,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":235,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":202,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":168,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":134,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":115,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":85,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":82,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":48,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":14,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":236,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":201,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":167,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":133,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":116,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":86,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":79,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":49,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":11,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":237,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":200,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":170,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":132,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":117,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":83,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":80,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":50,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":12,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":238,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":199,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":169,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":131,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":118,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":84,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":69,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":35,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":9,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":231,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":206,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":172,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":146,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":127,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":97,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":70,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":36,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":10,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":232,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":205,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":171,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":145,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":98,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":67,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":37,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":7,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":233,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":204,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":174,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":144,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":95,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":68,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":38,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":8,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":234,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":203,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":173,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":143,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":96,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":73,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":39,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":5,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":227,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":210,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":176,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":142,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":123,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":93,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":74,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":40,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":6,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":228,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":209,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":175,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":141,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":124,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":94,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":71,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":41,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":3,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":229,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":208,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":178,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":140,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":125,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":91,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":72,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":42,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":4,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":230,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":207,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":177,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":139,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":126,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":92,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}}],"opendaylight-group-statistics:group-features":{"max-groups":[4294967040],"group-types-supported":["opendaylight-group-types:group-all","opendaylight-group-types:group-ff","opendaylight-group-types:group-select","opendaylight-group-types:group-indirect"],"group-capabilities-supported":["opendaylight-group-types:chaining","opendaylight-group-types:select-weight","opendaylight-group-types:select-liveness"],"actions":[67076097]},"flow-node-inventory:switch-features":{"max_tables":254,"capabilities":["flow-node-inventory:flow-feature-capability-table-stats","flow-node-inventory:flow-feature-capability-group-stats","flow-node-inventory:flow-feature-capability-queue-stats","flow-node-inventory:flow-feature-capability-flow-stats","flow-node-inventory:flow-feature-capability-port-stats"],"max_buffers":0},"flow-node-inventory:snapshot-gathering-status-start":{"begin":"2026-04-08T00:51:01.304Z"},"node-connector":[{"id":"openflow:1:1","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:maximum-speed":0,"flow-node-inventory:reason":"update","flow-node-inventory:configuration":"","flow-node-inventory:port-number":1,"flow-node-inventory:hardware-address":"c6:0c:45:fe:a3:df","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s1-eth1","flow-node-inventory:supported":"","flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"39","received":"37"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":71,"nanosecond":441000000},"bytes":{"transmitted":"3255","received":"3079"},"receive-crc-error":"0"}},{"id":"openflow:1:LOCAL","flow-node-inventory:port-number":4294967294,"flow-node-inventory:hardware-address":"92:dc:44:02:39:46","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s1","flow-node-inventory:current-feature":"","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":0,"flow-node-inventory:state":{"live":false,"blocked":false,"link-down":true},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"PORT-DOWN","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"0","received":"0"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":71,"nanosecond":429000000},"bytes":{"transmitted":"0","received":"0"},"receive-crc-error":"0"}},{"id":"openflow:1:2","flow-node-inventory:port-number":2,"flow-node-inventory:hardware-address":"c2:e9:b7:e4:fd:76","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s1-eth2","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"30","received":"28"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":71,"nanosecond":441000000},"bytes":{"transmitted":"2514","received":"2338"},"receive-crc-error":"0"}}],"flow-node-inventory:snapshot-gathering-status-end":{"succeeded":true,"end":"2026-04-08T00:51:01.323Z"}},{"id":"openflow:2","flow-node-inventory:manufacturer":"Nicira, Inc.","flow-node-inventory:description":"s2","flow-node-inventory:hardware":"Open vSwitch","flow-node-inventory:software":"2.17.11","flow-node-inventory:ip-address":"10.30.170.192","flow-node-inventory:serial-number":"None","flow-node-inventory:port-number":55170,"flow-node-inventory:table":[{"id":62,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":28,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":2,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":224,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":181,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":147,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":106,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":61,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":27,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":1,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":223,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":182,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":148,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":105,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":60,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":30,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":0,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"55","active-flows":1,"packets-matched":"50"},"flow":[{"id":"#UF$TABLE*0-3","table_id":0,"priority":0,"cookie_mask":"0","idle-timeout":0,"cookie":"10","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"output-action":{"max-length":65535,"output-node-connector":"CONTROLLER"}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"38","byte-count":"3041","duration":{"second":69,"nanosecond":763000000}},"flags":"SEND_FLOW_REM"}]},{"id":226,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":179,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":149,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":104,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":59,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":29,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":225,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":180,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":150,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":103,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":66,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":32,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":220,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":185,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":151,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":102,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":65,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":31,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":253,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":219,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":186,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":152,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":101,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":64,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":34,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":252,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":222,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":183,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":153,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":100,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":63,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":33,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":251,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":221,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":184,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":154,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":99,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":54,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":20,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":250,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":216,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":189,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":155,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":129,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":114,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":53,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":19,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":249,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":215,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":190,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":156,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":130,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":113,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":52,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":22,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":248,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":218,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":187,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":157,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":112,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":51,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":21,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":247,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":217,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":188,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":158,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":128,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":111,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":58,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":24,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":246,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":212,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":193,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":159,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":110,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":57,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":23,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":245,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":211,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":194,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":160,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":109,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":56,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":26,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":244,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":214,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":191,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":161,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":108,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":55,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":25,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":243,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":213,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":192,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":162,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":107,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":77,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":43,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":17,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":239,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":198,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":164,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":138,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":119,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":89,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":78,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":44,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":18,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":240,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":197,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":163,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":137,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":120,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":90,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":75,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":45,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":15,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":241,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":196,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":166,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":136,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":121,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":87,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":76,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":46,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":16,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":242,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":195,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":165,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":135,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":122,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":88,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":81,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":47,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":13,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":235,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":202,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":168,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":134,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":115,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":85,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":82,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":48,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":14,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":236,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":201,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":167,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":133,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":116,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":86,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":79,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":49,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":11,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":237,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":200,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":170,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":132,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":117,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":83,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":80,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":50,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":12,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":238,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":199,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":169,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":131,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":118,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":84,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":69,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":35,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":9,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":231,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":206,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":172,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":146,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":127,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":97,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":70,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":36,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":10,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":232,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":205,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":171,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":145,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":98,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":67,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":37,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":7,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":233,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":204,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":174,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":144,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":95,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":68,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":38,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":8,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":234,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":203,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":173,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":143,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":96,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":73,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":39,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":5,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":227,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":210,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":176,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":142,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":123,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":93,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":74,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":40,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":6,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":228,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":209,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":175,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":141,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":124,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":94,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":71,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":41,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":3,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":229,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":208,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":178,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":140,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":125,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":91,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":72,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":42,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":4,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":230,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":207,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":177,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":139,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":126,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":92,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}}],"opendaylight-group-statistics:group-features":{"max-groups":[4294967040],"group-types-supported":["opendaylight-group-types:group-all","opendaylight-group-types:group-ff","opendaylight-group-types:group-select","opendaylight-group-types:group-indirect"],"group-capabilities-supported":["opendaylight-group-types:chaining","opendaylight-group-types:select-weight","opendaylight-group-types:select-liveness"],"actions":[67076097]},"flow-node-inventory:switch-features":{"max_tables":254,"capabilities":["flow-node-inventory:flow-feature-capability-table-stats","flow-node-inventory:flow-feature-capability-group-stats","flow-node-inventory:flow-feature-capability-queue-stats","flow-node-inventory:flow-feature-capability-flow-stats","flow-node-inventory:flow-feature-capability-port-stats"],"max_buffers":0},"flow-node-inventory:snapshot-gathering-status-start":{"begin":"2026-04-08T00:51:01.308Z"},"node-connector":[{"id":"openflow:2:3","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:maximum-speed":0,"flow-node-inventory:reason":"update","flow-node-inventory:configuration":"","flow-node-inventory:port-number":3,"flow-node-inventory:hardware-address":"e6:ba:34:39:b4:59","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s2-eth3","flow-node-inventory:supported":"","flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"37","received":"39"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":71,"nanosecond":428000000},"bytes":{"transmitted":"3079","received":"3255"},"receive-crc-error":"0"}},{"id":"openflow:2:LOCAL","flow-node-inventory:port-number":4294967294,"flow-node-inventory:hardware-address":"a6:b5:a2:39:96:47","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s2","flow-node-inventory:current-feature":"","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":0,"flow-node-inventory:state":{"live":false,"blocked":false,"link-down":true},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"PORT-DOWN","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"0","received":"0"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":71,"nanosecond":426000000},"bytes":{"transmitted":"0","received":"0"},"receive-crc-error":"0"}},{"id":"openflow:2:2","flow-node-inventory:port-number":2,"flow-node-inventory:hardware-address":"8e:25:49:71:1c:58","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s2-eth2","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"34","received":"10"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":71,"nanosecond":428000000},"bytes":{"transmitted":"2866","received":"796"},"receive-crc-error":"0"}},{"id":"openflow:2:1","flow-node-inventory:port-number":1,"flow-node-inventory:hardware-address":"66:b8:61:ef:20:c7","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s2-eth1","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"34","received":"10"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":71,"nanosecond":428000000},"bytes":{"transmitted":"2866","received":"816"},"receive-crc-error":"0"}}],"flow-node-inventory:snapshot-gathering-status-end":{"succeeded":true,"end":"2026-04-08T00:51:01.329Z"}}]}}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:01.630901" elapsed="0.005309"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:01.630571" elapsed="0.005691"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:01.630541" elapsed="0.005756"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:01.639762" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:01.636691" elapsed="0.003135"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:01.636377" elapsed="0.003497"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:01.636354" elapsed="0.003555"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:01.640722" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:01.640171" elapsed="0.000589"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:01.641292" elapsed="0.000038"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:01.640857" elapsed="0.000527"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:01.642051" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:01.641645" elapsed="0.000432"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:01.641418" elapsed="0.000695"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:01.640832" elapsed="0.001302"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:01.642717" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:01.642309" elapsed="0.000435"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:01.643045" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:01.642815" elapsed="0.000287"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:01.643595" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:01.643299" elapsed="0.000321"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:01.643125" elapsed="0.000531"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:01.642796" elapsed="0.000881"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:51:01.643828" elapsed="0.000512"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:51:01.644799" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:01.644505" elapsed="0.000320"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:51:01.644981" elapsed="0.002242"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:51:01.629865" elapsed="0.017424"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-08T00:51:01.647472" elapsed="0.000034"/>
</return>
<status status="PASS" start="2026-04-08T00:51:01.647361" elapsed="0.000180"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:01.647342" elapsed="0.000224"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:01.647715" elapsed="0.000021"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-08T00:51:01.647785" elapsed="0.000015"/>
</return>
<msg time="2026-04-08T00:51:01.650331" level="INFO">${response_text} = {"opendaylight-inventory:nodes":{"node":[{"id":"openflow:3","flow-node-inventory:manufacturer":"Nicira, Inc.","flow-node-inventory:description":"s3","flow-node-inventory:hardware":"Open vSwitch","flow...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${access}</arg>
<arg>session=${session}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:51:01.581012" elapsed="0.069347"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:51:01.650412" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:51:01.650565" level="INFO">${data} = {"opendaylight-inventory:nodes":{"node":[{"id":"openflow:3","flow-node-inventory:manufacturer":"Nicira, Inc.","flow-node-inventory:description":"s3","flow-node-inventory:hardware":"Open vSwitch","flow...</msg>
<var>${data}</var>
<arg>uri=${uri}</arg>
<arg>member_index=${index}</arg>
<doc>Send a GET with the supplied uri to member ${member_index}.</doc>
<status status="PASS" start="2026-04-08T00:51:01.579292" elapsed="0.071299"/>
</kw>
<kw name="Check Item Occurrence" owner="Utils">
<for flavor="IN">
<iter>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T00:51:01.651845" level="INFO">Item found from container 4 times.</msg>
<arg>${string}</arg>
<arg>${item}</arg>
<arg>${dictionary_item_occurrence}[${item}]</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="PASS" start="2026-04-08T00:51:01.651424" elapsed="0.000894"/>
</kw>
<var name="${item}">openflow:1</var>
<status status="PASS" start="2026-04-08T00:51:01.651268" elapsed="0.001092"/>
</iter>
<iter>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T00:51:01.653003" level="INFO">Item found from container 5 times.</msg>
<arg>${string}</arg>
<arg>${item}</arg>
<arg>${dictionary_item_occurrence}[${item}]</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="PASS" start="2026-04-08T00:51:01.652595" elapsed="0.000743"/>
</kw>
<var name="${item}">openflow:2</var>
<status status="PASS" start="2026-04-08T00:51:01.652442" elapsed="0.000978"/>
</iter>
<iter>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T00:51:01.654091" level="INFO">Item found from container 5 times.</msg>
<arg>${string}</arg>
<arg>${item}</arg>
<arg>${dictionary_item_occurrence}[${item}]</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="PASS" start="2026-04-08T00:51:01.653656" elapsed="0.000757"/>
</kw>
<var name="${item}">openflow:3</var>
<status status="PASS" start="2026-04-08T00:51:01.653505" elapsed="0.000948"/>
</iter>
<var>${item}</var>
<value>@{dictionary_item_occurrence}</value>
<status status="PASS" start="2026-04-08T00:51:01.651111" elapsed="0.003371"/>
</for>
<arg>${data}</arg>
<arg>${dictionary}</arg>
<doc>Check string for occurrences of items expressed in a list of dictionaries {item=occurrences}. 0 occurences means item is not present.</doc>
<status status="PASS" start="2026-04-08T00:51:01.650834" elapsed="0.003702"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T00:51:01.575254" elapsed="0.079317"/>
</iter>
<iter>
<kw name="Get_From_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:01.660027" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:01.659727" elapsed="0.000327"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:51:01.660100" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:51:01.660266" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:51:01.659383" elapsed="0.000908"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:01.666569" level="INFO">/rests/data/opendaylight-inventory:nodes?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:01.666319" elapsed="0.000295"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:01.667010" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:01.666766" elapsed="0.000289"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:51:01.703577" level="INFO">GET Request : url=http://10.30.171.110:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node09orwbuy1e81xg3wze7ww55ua0.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:51:01.704092" level="INFO">GET Response : url=http://10.30.171.110:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Transfer-Encoding': 'chunked'} 
 body={"opendaylight-inventory:nodes":{"node":[{"id":"openflow:3","flow-node-inventory:manufacturer":"Nicira, Inc.","flow-node-inventory:description":"s3","flow-node-inventory:hardware":"Open vSwitch","flow-node-inventory:software":"2.17.11","flow-node-inventory:ip-address":"10.30.170.192","flow-node-inventory:serial-number":"None","flow-node-inventory:port-number":55176,"flow-node-inventory:table":[{"id":62,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":28,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":2,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":224,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":181,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":147,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":106,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":61,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":27,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":1,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":223,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":182,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":148,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":105,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":60,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":30,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":0,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"47","active-flows":1,"packets-matched":"38"},"flow":[{"id":"#UF$TABLE*0-1","table_id":0,"priority":0,"cookie_mask":"0","idle-timeout":0,"cookie":"10","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"output-action":{"max-length":65535,"output-node-connector":"CONTROLLER"}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"26","byte-count":"2030","duration":{"second":69,"nanosecond":761000000}},"flags":"SEND_FLOW_REM"}]},{"id":226,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":179,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":149,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":104,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":59,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":29,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":225,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":180,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":150,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":103,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":66,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":32,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":220,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":185,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":151,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":102,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":65,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":31,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":253,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":219,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":186,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":152,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":101,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":64,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":34,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":252,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":222,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":183,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":153,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":100,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":63,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":33,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":251,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":221,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":184,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":154,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":99,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":54,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":20,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":250,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":216,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":189,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":155,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":129,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":114,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":53,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":19,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":249,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":215,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":190,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":156,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"i... (set the log level to DEBUG or TRACE to see the full content) 
 </msg>
<msg time="2026-04-08T00:51:01.704392" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:51:01.669095" elapsed="0.035328"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:01.667123" elapsed="0.037358"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:01.704733" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:01.704518" elapsed="0.000284"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:01.667104" elapsed="0.037720"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:01.708745" level="INFO">{"opendaylight-inventory:nodes":{"node":[{"id":"openflow:3","flow-node-inventory:manufacturer":"Nicira, Inc.","flow-node-inventory:description":"s3","flow-node-inventory:hardware":"Open vSwitch","flow-node-inventory:software":"2.17.11","flow-node-inventory:ip-address":"10.30.170.192","flow-node-inventory:serial-number":"None","flow-node-inventory:port-number":55176,"flow-node-inventory:table":[{"id":62,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":28,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":2,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":224,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":181,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":147,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":106,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":61,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":27,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":1,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":223,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":182,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":148,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":105,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":60,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":30,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":0,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"47","active-flows":1,"packets-matched":"38"},"flow":[{"id":"#UF$TABLE*0-1","table_id":0,"priority":0,"cookie_mask":"0","idle-timeout":0,"cookie":"10","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"output-action":{"max-length":65535,"output-node-connector":"CONTROLLER"}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"26","byte-count":"2030","duration":{"second":69,"nanosecond":761000000}},"flags":"SEND_FLOW_REM"}]},{"id":226,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":179,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":149,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":104,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":59,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":29,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":225,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":180,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":150,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":103,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":66,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":32,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":220,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":185,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":151,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":102,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":65,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":31,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":253,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":219,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":186,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":152,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":101,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":64,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":34,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":252,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":222,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":183,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":153,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":100,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":63,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":33,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":251,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":221,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":184,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":154,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":99,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":54,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":20,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":250,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":216,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":189,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":155,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":129,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":114,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":53,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":19,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":249,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":215,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":190,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":156,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":130,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":113,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":52,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":22,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":248,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":218,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":187,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":157,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":112,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":51,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":21,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":247,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":217,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":188,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":158,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":128,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":111,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":58,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":24,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":246,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":212,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":193,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":159,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":110,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":57,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":23,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":245,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":211,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":194,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":160,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":109,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":56,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":26,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":244,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":214,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":191,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":161,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":108,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":55,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":25,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":243,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":213,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":192,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":162,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":107,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":77,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":43,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":17,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":239,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":198,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":164,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":138,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":119,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":89,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":78,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":44,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":18,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":240,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":197,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":163,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":137,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":120,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":90,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":75,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":45,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":15,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":241,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":196,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":166,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":136,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":121,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":87,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":76,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":46,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":16,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":242,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":195,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":165,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":135,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":122,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":88,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":81,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":47,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":13,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":235,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":202,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":168,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":134,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":115,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":85,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":82,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":48,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":14,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":236,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":201,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":167,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":133,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":116,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":86,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":79,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":49,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":11,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":237,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":200,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":170,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":132,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":117,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":83,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":80,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":50,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":12,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":238,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":199,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":169,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":131,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":118,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":84,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":69,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":35,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":9,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":231,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":206,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":172,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":146,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":127,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":97,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":70,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":36,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":10,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":232,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":205,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":171,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":145,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":98,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":67,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":37,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":7,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":233,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":204,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":174,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":144,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":95,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":68,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":38,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":8,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":234,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":203,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":173,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":143,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":96,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":73,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":39,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":5,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":227,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":210,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":176,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":142,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":123,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":93,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":74,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":40,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":6,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":228,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":209,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":175,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":141,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":124,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":94,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":71,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":41,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":3,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":229,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":208,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":178,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":140,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":125,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":91,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":72,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":42,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":4,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":230,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":207,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":177,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":139,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":126,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":92,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}}],"opendaylight-group-statistics:group-features":{"max-groups":[4294967040],"group-types-supported":["opendaylight-group-types:group-all","opendaylight-group-types:group-ff","opendaylight-group-types:group-select","opendaylight-group-types:group-indirect"],"group-capabilities-supported":["opendaylight-group-types:chaining","opendaylight-group-types:select-weight","opendaylight-group-types:select-liveness"],"actions":[67076097]},"flow-node-inventory:switch-features":{"max_tables":254,"capabilities":["flow-node-inventory:flow-feature-capability-table-stats","flow-node-inventory:flow-feature-capability-group-stats","flow-node-inventory:flow-feature-capability-queue-stats","flow-node-inventory:flow-feature-capability-flow-stats","flow-node-inventory:flow-feature-capability-port-stats"],"max_buffers":0},"flow-node-inventory:snapshot-gathering-status-start":{"begin":"2026-04-08T00:51:01.305Z"},"node-connector":[{"id":"openflow:3:3","flow-node-inventory:port-number":3,"flow-node-inventory:hardware-address":"d6:85:2c:89:fa:1b","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s3-eth3","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"28","received":"30"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":71,"nanosecond":430000000},"bytes":{"transmitted":"2338","received":"2514"},"receive-crc-error":"0"}},{"id":"openflow:3:2","flow-node-inventory:port-number":2,"flow-node-inventory:hardware-address":"0e:09:5c:6f:b8:35","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s3-eth2","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"34","received":"10"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":71,"nanosecond":430000000},"bytes":{"transmitted":"2866","received":"796"},"receive-crc-error":"0"}},{"id":"openflow:3:1","flow-node-inventory:port-number":1,"flow-node-inventory:hardware-address":"ea:2e:b0:52:05:a4","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s3-eth1","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"34","received":"10"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":71,"nanosecond":430000000},"bytes":{"transmitted":"2866","received":"796"},"receive-crc-error":"0"}},{"id":"openflow:3:LOCAL","flow-node-inventory:port-number":4294967294,"flow-node-inventory:hardware-address":"46:1b:44:af:67:4b","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s3","flow-node-inventory:current-feature":"","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":0,"flow-node-inventory:state":{"live":false,"blocked":false,"link-down":true},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"PORT-DOWN","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"0","received":"0"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":71,"nanosecond":425000000},"bytes":{"transmitted":"0","received":"0"},"receive-crc-error":"0"}}],"flow-node-inventory:snapshot-gathering-status-end":{"succeeded":true,"end":"2026-04-08T00:51:01.323Z"}},{"id":"openflow:1","flow-node-inventory:manufacturer":"Nicira, Inc.","flow-node-inventory:description":"s1","flow-node-inventory:hardware":"Open vSwitch","flow-node-inventory:software":"2.17.11","flow-node-inventory:ip-address":"10.30.170.192","flow-node-inventory:serial-number":"None","flow-node-inventory:port-number":55166,"flow-node-inventory:table":[{"id":62,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":28,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":2,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":224,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":181,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":147,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":106,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":61,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":27,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":1,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":223,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":182,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":148,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":105,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":60,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":30,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":0,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"63","active-flows":1,"packets-matched":"56"},"flow":[{"id":"#UF$TABLE*0-2","table_id":0,"priority":0,"cookie_mask":"0","idle-timeout":0,"cookie":"10","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"output-action":{"max-length":65535,"output-node-connector":"CONTROLLER"}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"44","byte-count":"3601","duration":{"second":69,"nanosecond":757000000}},"flags":"SEND_FLOW_REM"}]},{"id":226,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":179,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":149,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":104,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":59,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":29,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":225,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":180,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":150,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":103,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":66,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":32,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":220,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":185,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":151,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":102,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":65,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":31,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":253,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":219,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":186,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":152,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":101,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":64,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":34,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":252,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":222,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":183,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":153,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":100,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":63,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":33,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":251,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":221,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":184,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":154,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":99,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":54,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":20,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":250,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":216,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":189,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":155,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":129,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":114,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":53,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":19,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":249,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":215,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":190,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":156,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":130,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":113,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":52,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":22,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":248,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":218,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":187,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":157,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":112,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":51,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":21,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":247,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":217,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":188,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":158,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":128,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":111,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":58,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":24,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":246,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":212,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":193,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":159,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":110,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":57,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":23,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":245,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":211,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":194,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":160,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":109,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":56,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":26,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":244,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":214,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":191,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":161,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":108,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":55,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":25,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":243,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":213,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":192,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":162,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":107,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":77,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":43,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":17,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":239,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":198,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":164,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":138,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":119,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":89,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":78,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":44,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":18,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":240,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":197,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":163,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":137,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":120,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":90,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":75,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":45,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":15,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":241,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":196,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":166,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":136,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":121,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":87,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":76,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":46,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":16,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":242,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":195,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":165,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":135,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":122,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":88,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":81,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":47,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":13,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":235,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":202,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":168,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":134,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":115,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":85,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":82,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":48,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":14,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":236,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":201,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":167,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":133,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":116,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":86,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":79,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":49,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":11,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":237,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":200,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":170,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":132,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":117,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":83,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":80,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":50,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":12,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":238,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":199,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":169,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":131,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":118,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":84,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":69,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":35,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":9,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":231,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":206,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":172,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":146,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":127,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":97,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":70,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":36,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":10,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":232,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":205,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":171,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":145,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":98,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":67,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":37,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":7,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":233,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":204,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":174,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":144,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":95,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":68,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":38,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":8,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":234,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":203,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":173,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":143,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":96,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":73,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":39,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":5,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":227,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":210,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":176,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":142,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":123,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":93,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":74,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":40,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":6,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":228,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":209,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":175,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":141,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":124,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":94,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":71,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":41,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":3,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":229,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":208,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":178,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":140,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":125,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":91,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":72,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":42,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":4,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":230,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":207,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":177,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":139,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":126,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":92,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}}],"opendaylight-group-statistics:group-features":{"max-groups":[4294967040],"group-types-supported":["opendaylight-group-types:group-all","opendaylight-group-types:group-ff","opendaylight-group-types:group-select","opendaylight-group-types:group-indirect"],"group-capabilities-supported":["opendaylight-group-types:chaining","opendaylight-group-types:select-weight","opendaylight-group-types:select-liveness"],"actions":[67076097]},"flow-node-inventory:switch-features":{"max_tables":254,"capabilities":["flow-node-inventory:flow-feature-capability-table-stats","flow-node-inventory:flow-feature-capability-group-stats","flow-node-inventory:flow-feature-capability-queue-stats","flow-node-inventory:flow-feature-capability-flow-stats","flow-node-inventory:flow-feature-capability-port-stats"],"max_buffers":0},"flow-node-inventory:snapshot-gathering-status-start":{"begin":"2026-04-08T00:51:01.304Z"},"node-connector":[{"id":"openflow:1:1","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:maximum-speed":0,"flow-node-inventory:reason":"update","flow-node-inventory:configuration":"","flow-node-inventory:port-number":1,"flow-node-inventory:hardware-address":"c6:0c:45:fe:a3:df","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s1-eth1","flow-node-inventory:supported":"","flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"39","received":"37"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":71,"nanosecond":441000000},"bytes":{"transmitted":"3255","received":"3079"},"receive-crc-error":"0"}},{"id":"openflow:1:LOCAL","flow-node-inventory:port-number":4294967294,"flow-node-inventory:hardware-address":"92:dc:44:02:39:46","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s1","flow-node-inventory:current-feature":"","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":0,"flow-node-inventory:state":{"live":false,"blocked":false,"link-down":true},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"PORT-DOWN","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"0","received":"0"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":71,"nanosecond":429000000},"bytes":{"transmitted":"0","received":"0"},"receive-crc-error":"0"}},{"id":"openflow:1:2","flow-node-inventory:port-number":2,"flow-node-inventory:hardware-address":"c2:e9:b7:e4:fd:76","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s1-eth2","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"30","received":"28"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":71,"nanosecond":441000000},"bytes":{"transmitted":"2514","received":"2338"},"receive-crc-error":"0"}}],"flow-node-inventory:snapshot-gathering-status-end":{"succeeded":true,"end":"2026-04-08T00:51:01.323Z"}},{"id":"openflow:2","flow-node-inventory:manufacturer":"Nicira, Inc.","flow-node-inventory:description":"s2","flow-node-inventory:hardware":"Open vSwitch","flow-node-inventory:software":"2.17.11","flow-node-inventory:ip-address":"10.30.170.192","flow-node-inventory:serial-number":"None","flow-node-inventory:port-number":55170,"flow-node-inventory:table":[{"id":62,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":28,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":2,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":224,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":181,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":147,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":106,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":61,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":27,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":1,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":223,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":182,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":148,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":105,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":60,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":30,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":0,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"55","active-flows":1,"packets-matched":"50"},"flow":[{"id":"#UF$TABLE*0-3","table_id":0,"priority":0,"cookie_mask":"0","idle-timeout":0,"cookie":"10","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"output-action":{"max-length":65535,"output-node-connector":"CONTROLLER"}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"38","byte-count":"3041","duration":{"second":69,"nanosecond":763000000}},"flags":"SEND_FLOW_REM"}]},{"id":226,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":179,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":149,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":104,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":59,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":29,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":225,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":180,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":150,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":103,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":66,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":32,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":220,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":185,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":151,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":102,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":65,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":31,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":253,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":219,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":186,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":152,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":101,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":64,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":34,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":252,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":222,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":183,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":153,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":100,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":63,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":33,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":251,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":221,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":184,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":154,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":99,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":54,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":20,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":250,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":216,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":189,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":155,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":129,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":114,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":53,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":19,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":249,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":215,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":190,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":156,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":130,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":113,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":52,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":22,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":248,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":218,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":187,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":157,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":112,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":51,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":21,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":247,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":217,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":188,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":158,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":128,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":111,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":58,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":24,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":246,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":212,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":193,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":159,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":110,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":57,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":23,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":245,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":211,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":194,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":160,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":109,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":56,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":26,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":244,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":214,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":191,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":161,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":108,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":55,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":25,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":243,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":213,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":192,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":162,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":107,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":77,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":43,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":17,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":239,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":198,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":164,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":138,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":119,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":89,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":78,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":44,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":18,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":240,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":197,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":163,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":137,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":120,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":90,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":75,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":45,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":15,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":241,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":196,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":166,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":136,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":121,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":87,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":76,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":46,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":16,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":242,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":195,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":165,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":135,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":122,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":88,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":81,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":47,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":13,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":235,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":202,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":168,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":134,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":115,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":85,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":82,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":48,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":14,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":236,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":201,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":167,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":133,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":116,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":86,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":79,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":49,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":11,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":237,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":200,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":170,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":132,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":117,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":83,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":80,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":50,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":12,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":238,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":199,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":169,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":131,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":118,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":84,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":69,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":35,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":9,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":231,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":206,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":172,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":146,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":127,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":97,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":70,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":36,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":10,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":232,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":205,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":171,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":145,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":98,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":67,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":37,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":7,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":233,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":204,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":174,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":144,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":95,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":68,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":38,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":8,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":234,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":203,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":173,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":143,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":96,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":73,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":39,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":5,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":227,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":210,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":176,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":142,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":123,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":93,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":74,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":40,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":6,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":228,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":209,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":175,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":141,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":124,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":94,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":71,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":41,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":3,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":229,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":208,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":178,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":140,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":125,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":91,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":72,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":42,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":4,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":230,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":207,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":177,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":139,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":126,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":92,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}}],"opendaylight-group-statistics:group-features":{"max-groups":[4294967040],"group-types-supported":["opendaylight-group-types:group-all","opendaylight-group-types:group-ff","opendaylight-group-types:group-select","opendaylight-group-types:group-indirect"],"group-capabilities-supported":["opendaylight-group-types:chaining","opendaylight-group-types:select-weight","opendaylight-group-types:select-liveness"],"actions":[67076097]},"flow-node-inventory:switch-features":{"max_tables":254,"capabilities":["flow-node-inventory:flow-feature-capability-table-stats","flow-node-inventory:flow-feature-capability-group-stats","flow-node-inventory:flow-feature-capability-queue-stats","flow-node-inventory:flow-feature-capability-flow-stats","flow-node-inventory:flow-feature-capability-port-stats"],"max_buffers":0},"flow-node-inventory:snapshot-gathering-status-start":{"begin":"2026-04-08T00:51:01.308Z"},"node-connector":[{"id":"openflow:2:3","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:maximum-speed":0,"flow-node-inventory:reason":"update","flow-node-inventory:configuration":"","flow-node-inventory:port-number":3,"flow-node-inventory:hardware-address":"e6:ba:34:39:b4:59","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s2-eth3","flow-node-inventory:supported":"","flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"37","received":"39"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":71,"nanosecond":428000000},"bytes":{"transmitted":"3079","received":"3255"},"receive-crc-error":"0"}},{"id":"openflow:2:LOCAL","flow-node-inventory:port-number":4294967294,"flow-node-inventory:hardware-address":"a6:b5:a2:39:96:47","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s2","flow-node-inventory:current-feature":"","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":0,"flow-node-inventory:state":{"live":false,"blocked":false,"link-down":true},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"PORT-DOWN","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"0","received":"0"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":71,"nanosecond":426000000},"bytes":{"transmitted":"0","received":"0"},"receive-crc-error":"0"}},{"id":"openflow:2:2","flow-node-inventory:port-number":2,"flow-node-inventory:hardware-address":"8e:25:49:71:1c:58","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s2-eth2","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"34","received":"10"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":71,"nanosecond":428000000},"bytes":{"transmitted":"2866","received":"796"},"receive-crc-error":"0"}},{"id":"openflow:2:1","flow-node-inventory:port-number":1,"flow-node-inventory:hardware-address":"66:b8:61:ef:20:c7","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s2-eth1","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"34","received":"10"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":71,"nanosecond":428000000},"bytes":{"transmitted":"2866","received":"816"},"receive-crc-error":"0"}}],"flow-node-inventory:snapshot-gathering-status-end":{"succeeded":true,"end":"2026-04-08T00:51:01.329Z"}}]}}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:01.706040" elapsed="0.003995"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:01.705787" elapsed="0.004290"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:01.705766" elapsed="0.004337"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:01.712626" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:01.710419" elapsed="0.002253"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:01.710177" elapsed="0.002530"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:01.710146" elapsed="0.002585"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:01.713361" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:01.712921" elapsed="0.000467"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:01.713698" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:01.713460" elapsed="0.000294"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:01.714264" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:01.713940" elapsed="0.000350"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:01.713777" elapsed="0.000549"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:01.713442" elapsed="0.000905"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:01.714861" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:01.714504" elapsed="0.000383"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:01.715201" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:01.714955" elapsed="0.000304"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:01.715736" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:01.715442" elapsed="0.000319"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:01.715283" elapsed="0.000514"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:01.714938" elapsed="0.000880"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:51:01.715969" elapsed="0.000360"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:51:01.716783" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:01.716491" elapsed="0.000317"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:51:01.716967" elapsed="0.002418"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:51:01.705302" elapsed="0.014149"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-08T00:51:01.719632" elapsed="0.000034"/>
</return>
<status status="PASS" start="2026-04-08T00:51:01.719523" elapsed="0.000177"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:01.719504" 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-04-08T00:51:01.719871" elapsed="0.000021"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-08T00:51:01.719940" elapsed="0.000015"/>
</return>
<msg time="2026-04-08T00:51:01.722523" level="INFO">${response_text} = {"opendaylight-inventory:nodes":{"node":[{"id":"openflow:3","flow-node-inventory:manufacturer":"Nicira, Inc.","flow-node-inventory:description":"s3","flow-node-inventory:hardware":"Open vSwitch","flow...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${access}</arg>
<arg>session=${session}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:51:01.660624" elapsed="0.061928"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:51:01.722604" elapsed="0.000027"/>
</return>
<msg time="2026-04-08T00:51:01.722756" level="INFO">${data} = {"opendaylight-inventory:nodes":{"node":[{"id":"openflow:3","flow-node-inventory:manufacturer":"Nicira, Inc.","flow-node-inventory:description":"s3","flow-node-inventory:hardware":"Open vSwitch","flow...</msg>
<var>${data}</var>
<arg>uri=${uri}</arg>
<arg>member_index=${index}</arg>
<doc>Send a GET with the supplied uri to member ${member_index}.</doc>
<status status="PASS" start="2026-04-08T00:51:01.658880" elapsed="0.063902"/>
</kw>
<kw name="Check Item Occurrence" owner="Utils">
<for flavor="IN">
<iter>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T00:51:01.724057" level="INFO">Item found from container 4 times.</msg>
<arg>${string}</arg>
<arg>${item}</arg>
<arg>${dictionary_item_occurrence}[${item}]</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="PASS" start="2026-04-08T00:51:01.723630" elapsed="0.000883"/>
</kw>
<var name="${item}">openflow:1</var>
<status status="PASS" start="2026-04-08T00:51:01.723475" elapsed="0.001080"/>
</iter>
<iter>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T00:51:01.725220" level="INFO">Item found from container 5 times.</msg>
<arg>${string}</arg>
<arg>${item}</arg>
<arg>${dictionary_item_occurrence}[${item}]</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="PASS" start="2026-04-08T00:51:01.724787" elapsed="0.000743"/>
</kw>
<var name="${item}">openflow:2</var>
<status status="PASS" start="2026-04-08T00:51:01.724637" elapsed="0.000969"/>
</iter>
<iter>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T00:51:01.726263" level="INFO">Item found from container 5 times.</msg>
<arg>${string}</arg>
<arg>${item}</arg>
<arg>${dictionary_item_occurrence}[${item}]</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="PASS" start="2026-04-08T00:51:01.725843" elapsed="0.000729"/>
</kw>
<var name="${item}">openflow:3</var>
<status status="PASS" start="2026-04-08T00:51:01.725691" elapsed="0.000921"/>
</iter>
<var>${item}</var>
<value>@{dictionary_item_occurrence}</value>
<status status="PASS" start="2026-04-08T00:51:01.723335" elapsed="0.003306"/>
</for>
<arg>${data}</arg>
<arg>${dictionary}</arg>
<doc>Check string for occurrences of items expressed in a list of dictionaries {item=occurrences}. 0 occurences means item is not present.</doc>
<status status="PASS" start="2026-04-08T00:51:01.723035" elapsed="0.003662"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T00:51:01.654663" elapsed="0.072069"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-08T00:51:01.511327" elapsed="0.215435"/>
</for>
<arg>uri=${RFC8040_OPERATIONAL_NODES_API}</arg>
<arg>dictionary=${dictionary}</arg>
<arg>member_index_list=${controller_index_list}</arg>
<doc>Send a GET with the supplied uri to all or some members defined in ${member_index_list}.
Then check received for occurrences of items expressed in a dictionary {'openflow:1': '4', 'openflow:2': '5', 'openflow:3': '5'}.</doc>
<status status="PASS" start="2026-04-08T00:51:01.508909" elapsed="0.217906"/>
</kw>
<arg>5s</arg>
<arg>1s</arg>
<arg>ClusterManagement.Check_Item_Occurrence_Member_List_Or_All</arg>
<arg>uri=${RFC8040_OPERATIONAL_NODES_API}</arg>
<arg>dictionary=${dictionary}</arg>
<arg>member_index_list=${controller_index_list}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-08T00:51:01.503969" elapsed="0.222904"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-08T00:51:01.727428" level="INFO">${dictionary} = {'openflow:1': '21', 'openflow:2': '19', 'openflow:3': '19'}</msg>
<var>${dictionary}</var>
<arg>openflow:1=21</arg>
<arg>openflow:2=19</arg>
<arg>openflow:3=19</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-08T00:51:01.727065" elapsed="0.000390"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Check_Item_Occurrence_Member_List_Or_All" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:51:01.733476" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:51:01.733079" elapsed="0.000424"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:51:01.733961" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:51:01.733662" elapsed="0.000324"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:51:01.734030" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:51:01.734197" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:51:01.732686" elapsed="0.001536"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_From_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:01.739913" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:01.739619" elapsed="0.000320"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:51:01.739984" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:51:01.740129" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:51:01.739280" elapsed="0.000887"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:01.746572" level="INFO">/rests/data/network-topology:network-topology?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:01.746323" elapsed="0.000294"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:01.747011" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:01.746770" elapsed="0.000283"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:51:01.757651" level="INFO">GET Request : url=http://10.30.170.48:8181/rests/data/network-topology:network-topology?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01nfu2ssrokr1es5zgka78rw970.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:51:01.757872" level="INFO">GET Response : url=http://10.30.170.48:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '3149'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"},{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:3']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:1:1","dest-node":"openflow:1"}},{"link-id":"openflow:3:3","source":{"source-node":"openflow:3","source-tp":"openflow:3:3"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:1:1","source":{"source-node":"openflow:1","source-tp":"openflow:1:1"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:3:3","dest-node":"openflow:3"}}]}]}} 
 </msg>
<msg time="2026-04-08T00:51:01.758031" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:51:01.749073" elapsed="0.008986"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:01.747122" elapsed="0.010981"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:01.758305" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:01.758130" elapsed="0.000241"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:01.747103" elapsed="0.011290"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:01.761858" level="INFO">{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"},{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:3']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:1:1","dest-node":"openflow:1"}},{"link-id":"openflow:3:3","source":{"source-node":"openflow:3","source-tp":"openflow:3:3"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:1:1","source":{"source-node":"openflow:1","source-tp":"openflow:1:1"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:3:3","dest-node":"openflow:3"}}]}]}}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:01.759409" elapsed="0.002518"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:01.759188" elapsed="0.002774"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:01.759151" elapsed="0.002838"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:01.764444" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:01.762286" elapsed="0.002203"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:01.762048" elapsed="0.002475"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:01.762031" elapsed="0.002517"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:01.765100" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:01.764708" elapsed="0.000419"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:01.765453" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:01.765214" elapsed="0.000296"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:01.765996" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:01.765694" elapsed="0.000328"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:01.765534" elapsed="0.000523"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:01.765195" elapsed="0.000883"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:01.766613" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:01.766251" elapsed="0.000388"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:01.767058" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:01.766709" elapsed="0.000406"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:01.767608" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:01.767313" elapsed="0.000321"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:01.767138" elapsed="0.000531"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:01.766691" elapsed="0.000999"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:51:01.767838" elapsed="0.000359"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:51:01.768679" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:01.768399" elapsed="0.000307"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:51:01.768859" elapsed="0.002203"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:51:01.758746" elapsed="0.012381"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-08T00:51:01.771323" elapsed="0.000029"/>
</return>
<status status="PASS" start="2026-04-08T00:51:01.771215" elapsed="0.000171"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:01.771195" elapsed="0.000215"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:01.771556" elapsed="0.000021"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-08T00:51:01.771626" elapsed="0.000015"/>
</return>
<msg time="2026-04-08T00:51:01.774077" level="INFO">${response_text} = {"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='o...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${access}</arg>
<arg>session=${session}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:51:01.740495" elapsed="0.033610"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:51:01.774170" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:51:01.774322" level="INFO">${data} = {"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='o...</msg>
<var>${data}</var>
<arg>uri=${uri}</arg>
<arg>member_index=${index}</arg>
<doc>Send a GET with the supplied uri to member ${member_index}.</doc>
<status status="PASS" start="2026-04-08T00:51:01.738750" elapsed="0.035599"/>
</kw>
<kw name="Check Item Occurrence" owner="Utils">
<for flavor="IN">
<iter>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T00:51:01.775512" level="INFO">Item found from container 21 times.</msg>
<arg>${string}</arg>
<arg>${item}</arg>
<arg>${dictionary_item_occurrence}[${item}]</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="PASS" start="2026-04-08T00:51:01.775121" elapsed="0.000471"/>
</kw>
<var name="${item}">openflow:1</var>
<status status="PASS" start="2026-04-08T00:51:01.774968" elapsed="0.000664"/>
</iter>
<iter>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T00:51:01.776238" level="INFO">Item found from container 19 times.</msg>
<arg>${string}</arg>
<arg>${item}</arg>
<arg>${dictionary_item_occurrence}[${item}]</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="PASS" start="2026-04-08T00:51:01.775862" elapsed="0.000453"/>
</kw>
<var name="${item}">openflow:2</var>
<status status="PASS" start="2026-04-08T00:51:01.775711" elapsed="0.000643"/>
</iter>
<iter>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T00:51:01.776940" level="INFO">Item found from container 19 times.</msg>
<arg>${string}</arg>
<arg>${item}</arg>
<arg>${dictionary_item_occurrence}[${item}]</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="PASS" start="2026-04-08T00:51:01.776582" elapsed="0.000448"/>
</kw>
<var name="${item}">openflow:3</var>
<status status="PASS" start="2026-04-08T00:51:01.776431" elapsed="0.000638"/>
</iter>
<var>${item}</var>
<value>@{dictionary_item_occurrence}</value>
<status status="PASS" start="2026-04-08T00:51:01.774837" elapsed="0.002260"/>
</for>
<arg>${data}</arg>
<arg>${dictionary}</arg>
<doc>Check string for occurrences of items expressed in a list of dictionaries {item=occurrences}. 0 occurences means item is not present.</doc>
<status status="PASS" start="2026-04-08T00:51:01.774575" elapsed="0.002575"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T00:51:01.734403" elapsed="0.042799"/>
</iter>
<iter>
<kw name="Get_From_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:01.782657" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:01.782357" elapsed="0.000326"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:51:01.782729" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:51:01.782876" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:51:01.781984" elapsed="0.000917"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:01.789152" level="INFO">/rests/data/network-topology:network-topology?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:01.788872" elapsed="0.000343"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:01.789607" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:01.789367" elapsed="0.000283"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:51:01.803807" level="INFO">GET Request : url=http://10.30.170.131:8181/rests/data/network-topology:network-topology?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0evogeryo91251obsb096nsda10.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:51:01.804078" level="INFO">GET Response : url=http://10.30.170.131:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '3149'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"},{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:3']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:1:1","dest-node":"openflow:1"}},{"link-id":"openflow:3:3","source":{"source-node":"openflow:3","source-tp":"openflow:3:3"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:1:1","source":{"source-node":"openflow:1","source-tp":"openflow:1:1"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:3:3","dest-node":"openflow:3"}}]}]}} 
 </msg>
<msg time="2026-04-08T00:51:01.804483" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:51:01.791860" elapsed="0.012683"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:01.789718" elapsed="0.014923"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:01.805063" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:01.804700" elapsed="0.000541"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:01.789699" elapsed="0.015591"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:01.813011" level="INFO">{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"},{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:3']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:1:1","dest-node":"openflow:1"}},{"link-id":"openflow:3:3","source":{"source-node":"openflow:3","source-tp":"openflow:3:3"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:1:1","source":{"source-node":"openflow:1","source-tp":"openflow:1:1"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:3:3","dest-node":"openflow:3"}}]}]}}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:01.807594" elapsed="0.005603"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:01.807074" elapsed="0.006203"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:01.807032" elapsed="0.006301"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:01.816237" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:01.813956" elapsed="0.002327"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:01.813459" elapsed="0.002858"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:01.813422" elapsed="0.002919"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:01.816891" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:01.816508" elapsed="0.000410"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:01.817254" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:01.817002" elapsed="0.000311"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:01.817793" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:01.817495" elapsed="0.000324"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:01.817336" elapsed="0.000518"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:01.816983" elapsed="0.000893"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:01.818405" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:01.818031" elapsed="0.000400"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:01.818731" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:01.818500" elapsed="0.000287"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:01.819303" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:01.818965" elapsed="0.000365"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:01.818810" elapsed="0.000555"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:01.818482" elapsed="0.000904"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:51:01.819536" elapsed="0.000344"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:51:01.820405" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:01.820080" elapsed="0.000352"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:51:01.820585" elapsed="0.002336"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:51:01.806065" elapsed="0.016918"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-08T00:51:01.823179" elapsed="0.000030"/>
</return>
<status status="PASS" start="2026-04-08T00:51:01.823052" elapsed="0.000191"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:01.823034" elapsed="0.000233"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:01.823412" elapsed="0.000021"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-08T00:51:01.823481" elapsed="0.000014"/>
</return>
<msg time="2026-04-08T00:51:01.825763" level="INFO">${response_text} = {"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='o...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${access}</arg>
<arg>session=${session}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:51:01.783243" elapsed="0.042548"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:51:01.825841" elapsed="0.000027"/>
</return>
<msg time="2026-04-08T00:51:01.825988" level="INFO">${data} = {"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='o...</msg>
<var>${data}</var>
<arg>uri=${uri}</arg>
<arg>member_index=${index}</arg>
<doc>Send a GET with the supplied uri to member ${member_index}.</doc>
<status status="PASS" start="2026-04-08T00:51:01.781456" elapsed="0.044559"/>
</kw>
<kw name="Check Item Occurrence" owner="Utils">
<for flavor="IN">
<iter>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T00:51:01.827194" level="INFO">Item found from container 21 times.</msg>
<arg>${string}</arg>
<arg>${item}</arg>
<arg>${dictionary_item_occurrence}[${item}]</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="PASS" start="2026-04-08T00:51:01.826805" elapsed="0.000471"/>
</kw>
<var name="${item}">openflow:1</var>
<status status="PASS" start="2026-04-08T00:51:01.826654" elapsed="0.000662"/>
</iter>
<iter>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T00:51:01.827910" level="INFO">Item found from container 19 times.</msg>
<arg>${string}</arg>
<arg>${item}</arg>
<arg>${dictionary_item_occurrence}[${item}]</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="PASS" start="2026-04-08T00:51:01.827548" elapsed="0.000438"/>
</kw>
<var name="${item}">openflow:2</var>
<status status="PASS" start="2026-04-08T00:51:01.827396" elapsed="0.000629"/>
</iter>
<iter>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T00:51:01.828652" level="INFO">Item found from container 19 times.</msg>
<arg>${string}</arg>
<arg>${item}</arg>
<arg>${dictionary_item_occurrence}[${item}]</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="PASS" start="2026-04-08T00:51:01.828271" elapsed="0.000459"/>
</kw>
<var name="${item}">openflow:3</var>
<status status="PASS" start="2026-04-08T00:51:01.828103" elapsed="0.000666"/>
</iter>
<var>${item}</var>
<value>@{dictionary_item_occurrence}</value>
<status status="PASS" start="2026-04-08T00:51:01.826522" elapsed="0.002275"/>
</for>
<arg>${data}</arg>
<arg>${dictionary}</arg>
<doc>Check string for occurrences of items expressed in a list of dictionaries {item=occurrences}. 0 occurences means item is not present.</doc>
<status status="PASS" start="2026-04-08T00:51:01.826261" elapsed="0.002589"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T00:51:01.777290" elapsed="0.051594"/>
</iter>
<iter>
<kw name="Get_From_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:01.834117" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:01.833823" elapsed="0.000320"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:51:01.834204" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:51:01.834351" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:51:01.833484" elapsed="0.000892"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:01.840569" level="INFO">/rests/data/network-topology:network-topology?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:01.840323" elapsed="0.000290"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:01.841014" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:01.840763" elapsed="0.000294"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:51:01.854391" level="INFO">GET Request : url=http://10.30.171.110:8181/rests/data/network-topology:network-topology?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node09orwbuy1e81xg3wze7ww55ua0.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:51:01.854747" level="INFO">GET Response : url=http://10.30.171.110:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '3149'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"},{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:3']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:1:1","dest-node":"openflow:1"}},{"link-id":"openflow:3:3","source":{"source-node":"openflow:3","source-tp":"openflow:3:3"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:1:1","source":{"source-node":"openflow:1","source-tp":"openflow:1:1"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:3:3","dest-node":"openflow:3"}}]}]}} 
 </msg>
<msg time="2026-04-08T00:51:01.855069" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:51:01.843032" elapsed="0.012078"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:01.841124" elapsed="0.014078"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:01.855505" elapsed="0.000033"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:01.855248" elapsed="0.000350"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:01.841105" elapsed="0.014523"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:01.860816" level="INFO">{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"},{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:3']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:1:1","dest-node":"openflow:1"}},{"link-id":"openflow:3:3","source":{"source-node":"openflow:3","source-tp":"openflow:3:3"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:1:1","source":{"source-node":"openflow:1","source-tp":"openflow:1:1"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:3:3","dest-node":"openflow:3"}}]}]}}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:01.857173" elapsed="0.003740"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:01.856800" elapsed="0.004179"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:01.856774" elapsed="0.004241"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:01.864683" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:01.861483" elapsed="0.003267"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:01.861094" elapsed="0.003707"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:01.861071" elapsed="0.003765"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:01.865723" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:01.865126" elapsed="0.000638"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:01.866140" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:01.865866" elapsed="0.000349"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:01.867180" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:01.866401" elapsed="0.000807"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:01.866238" elapsed="0.001007"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:01.865841" elapsed="0.001425"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:01.867788" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:01.867426" elapsed="0.000388"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:01.868113" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:01.867883" elapsed="0.000302"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:01.868662" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:01.868368" elapsed="0.000321"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:01.868208" elapsed="0.000516"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:01.867865" elapsed="0.000880"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:51:01.868895" elapsed="0.000381"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:51:01.869774" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:01.869485" elapsed="0.000315"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:51:01.869990" elapsed="0.002208"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:51:01.856152" elapsed="0.016114"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-08T00:51:01.872445" elapsed="0.000035"/>
</return>
<status status="PASS" start="2026-04-08T00:51:01.872337" elapsed="0.000178"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:01.872319" 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-04-08T00:51:01.872683" elapsed="0.000022"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-08T00:51:01.872753" elapsed="0.000014"/>
</return>
<msg time="2026-04-08T00:51:01.875038" level="INFO">${response_text} = {"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='o...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${access}</arg>
<arg>session=${session}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:51:01.834697" elapsed="0.040369"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:51:01.875117" elapsed="0.000027"/>
</return>
<msg time="2026-04-08T00:51:01.875284" level="INFO">${data} = {"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='o...</msg>
<var>${data}</var>
<arg>uri=${uri}</arg>
<arg>member_index=${index}</arg>
<doc>Send a GET with the supplied uri to member ${member_index}.</doc>
<status status="PASS" start="2026-04-08T00:51:01.832990" elapsed="0.042321"/>
</kw>
<kw name="Check Item Occurrence" owner="Utils">
<for flavor="IN">
<iter>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T00:51:01.876511" level="INFO">Item found from container 21 times.</msg>
<arg>${string}</arg>
<arg>${item}</arg>
<arg>${dictionary_item_occurrence}[${item}]</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="PASS" start="2026-04-08T00:51:01.876115" elapsed="0.000479"/>
</kw>
<var name="${item}">openflow:1</var>
<status status="PASS" start="2026-04-08T00:51:01.875959" elapsed="0.000675"/>
</iter>
<iter>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T00:51:01.877280" level="INFO">Item found from container 19 times.</msg>
<arg>${string}</arg>
<arg>${item}</arg>
<arg>${dictionary_item_occurrence}[${item}]</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="PASS" start="2026-04-08T00:51:01.876872" elapsed="0.000486"/>
</kw>
<var name="${item}">openflow:2</var>
<status status="PASS" start="2026-04-08T00:51:01.876715" elapsed="0.000682"/>
</iter>
<iter>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T00:51:01.877988" level="INFO">Item found from container 19 times.</msg>
<arg>${string}</arg>
<arg>${item}</arg>
<arg>${dictionary_item_occurrence}[${item}]</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="PASS" start="2026-04-08T00:51:01.877627" elapsed="0.000438"/>
</kw>
<var name="${item}">openflow:3</var>
<status status="PASS" start="2026-04-08T00:51:01.877475" elapsed="0.000629"/>
</iter>
<var>${item}</var>
<value>@{dictionary_item_occurrence}</value>
<status status="PASS" start="2026-04-08T00:51:01.875821" elapsed="0.002311"/>
</for>
<arg>${data}</arg>
<arg>${dictionary}</arg>
<doc>Check string for occurrences of items expressed in a list of dictionaries {item=occurrences}. 0 occurences means item is not present.</doc>
<status status="PASS" start="2026-04-08T00:51:01.875551" elapsed="0.002652"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T00:51:01.828983" elapsed="0.049255"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-08T00:51:01.734272" elapsed="0.143994"/>
</for>
<arg>uri=${RFC8040_OPERATIONAL_TOPO_API}</arg>
<arg>dictionary=${dictionary}</arg>
<arg>member_index_list=${controller_index_list}</arg>
<doc>Send a GET with the supplied uri to all or some members defined in ${member_index_list}.
Then check received for occurrences of items expressed in a dictionary {'openflow:1': '21', 'openflow:2': '19', 'openflow:3': '19'}.</doc>
<status status="PASS" start="2026-04-08T00:51:01.732108" elapsed="0.146212"/>
</kw>
<arg>5s</arg>
<arg>1s</arg>
<arg>ClusterManagement.Check_Item_Occurrence_Member_List_Or_All</arg>
<arg>uri=${RFC8040_OPERATIONAL_TOPO_API}</arg>
<arg>dictionary=${dictionary}</arg>
<arg>member_index_list=${controller_index_list}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-08T00:51:01.727659" elapsed="0.150718"/>
</kw>
<doc>Check devices in tree,2 are in operational inventory and topology in all instances in ${controller_index_list}.
Inventory should show 1x node_id per device 1x node_id per connector. Topology should show 2x node_id per device + 3x node_id per connector
+ 5x node_id per link termination. TODO: A Keyword that can calculate this based on mininet topology.</doc>
<status status="PASS" start="2026-04-08T00:51:01.500272" elapsed="0.378173"/>
</kw>
<doc>Check devices in operational inventory and topology in all cluster instances.</doc>
<status status="PASS" start="2026-04-08T00:51:01.493900" elapsed="0.384662"/>
</test>
<test id="s1-s1-t38" name="Add Configuration In Owner and Verify After Recover" line="195">
<kw name="Add Sample Flow And Verify" owner="ClusterOpenFlow">
<msg time="2026-04-08T00:51:01.890734" level="FAIL">Variable '${new_owner}' not found.</msg>
<arg>${new_owner}</arg>
<doc>Add sample flow in ${controller_index} and verify it gets applied in all instances in ${controller_index_list}.</doc>
<status status="FAIL" start="2026-04-08T00:51:01.887102" elapsed="0.003676">Variable '${new_owner}' not found.</status>
</kw>
<doc>Add Flow in Owner and verify it gets applied from all instances.</doc>
<status status="FAIL" start="2026-04-08T00:51:01.878859" elapsed="0.012068">Variable '${new_owner}' not found.</status>
</test>
<test id="s1-s1-t39" name="Modify Configuration In Owner and Verify After Recover" line="199">
<kw name="Modify Sample Flow And Verify" owner="ClusterOpenFlow">
<msg time="2026-04-08T00:51:01.904000" level="FAIL">Variable '${new_owner}' not found.</msg>
<arg>${new_owner}</arg>
<doc>Modify sample flow in ${controller_index} and verify it gets applied in all instances in ${controller_index_list}.</doc>
<status status="FAIL" start="2026-04-08T00:51:01.900189" elapsed="0.003856">Variable '${new_owner}' not found.</status>
</kw>
<doc>Modify Flow in Owner and verify it gets applied from all instances.</doc>
<status status="FAIL" start="2026-04-08T00:51:01.891544" elapsed="0.012723">Variable '${new_owner}' not found.</status>
</test>
<test id="s1-s1-t40" name="Delete Configuration In Owner and Verify After Recover" line="203">
<kw name="Delete Sample Flow And Verify" owner="ClusterOpenFlow">
<msg time="2026-04-08T00:51:01.909269" level="FAIL">Variable '${new_owner}' not found.</msg>
<arg>${new_owner}</arg>
<doc>Delete sample flow in Owner and verify it gets removed from all instances.</doc>
<status status="FAIL" start="2026-04-08T00:51:01.905480" elapsed="0.003832">Variable '${new_owner}' not found.</status>
</kw>
<doc>Delete Flow in Owner and verify it gets applied from all instances.</doc>
<status status="FAIL" start="2026-04-08T00:51:01.904690" elapsed="0.004761">Variable '${new_owner}' not found.</status>
</test>
<test id="s1-s1-t41" name="Add Configuration In Old Owner and Verify After Recover" line="207">
<kw name="Add Sample Flow And Verify" owner="ClusterOpenFlow">
<msg time="2026-04-08T00:51:01.921817" level="FAIL">Variable '${original_owner}' not found.</msg>
<arg>${original_owner}</arg>
<doc>Add sample flow in ${controller_index} and verify it gets applied in all instances in ${controller_index_list}.</doc>
<status status="FAIL" start="2026-04-08T00:51:01.917933" elapsed="0.003934">Variable '${original_owner}' not found.</status>
</kw>
<doc>Add Flow in Owner and verify it gets applied from all instances.</doc>
<status status="FAIL" start="2026-04-08T00:51:01.909632" elapsed="0.012404">Variable '${original_owner}' not found.</status>
</test>
<test id="s1-s1-t42" name="Modify Configuration In Old Owner and Verify After Recover" line="211">
<kw name="Modify Sample Flow And Verify" owner="ClusterOpenFlow">
<msg time="2026-04-08T00:51:01.934363" level="FAIL">Variable '${original_owner}' not found.</msg>
<arg>${original_owner}</arg>
<doc>Modify sample flow in ${controller_index} and verify it gets applied in all instances in ${controller_index_list}.</doc>
<status status="FAIL" start="2026-04-08T00:51:01.930565" elapsed="0.003839">Variable '${original_owner}' not found.</status>
</kw>
<doc>Modify Flow in Owner and verify it gets applied from all instances.</doc>
<status status="FAIL" start="2026-04-08T00:51:01.922332" elapsed="0.012208">Variable '${original_owner}' not found.</status>
</test>
<test id="s1-s1-t43" name="Delete Configuration In Old Owner and Verify After Recover" line="215">
<kw name="Delete Sample Flow And Verify" owner="ClusterOpenFlow">
<msg time="2026-04-08T00:51:01.939094" level="FAIL">Variable '${original_owner}' not found.</msg>
<arg>${original_owner}</arg>
<doc>Delete sample flow in Owner and verify it gets removed from all instances.</doc>
<status status="FAIL" start="2026-04-08T00:51:01.935318" elapsed="0.003814">Variable '${original_owner}' not found.</status>
</kw>
<doc>Delete Flow in Owner and verify it gets applied from all instances.</doc>
<status status="FAIL" start="2026-04-08T00:51:01.934720" elapsed="0.004561">Variable '${original_owner}' not found.</status>
</test>
<test id="s1-s1-t44" name="Send RPC Add to Owner and Verify After Recover" line="219">
<kw name="Send RPC Add Sample Flow And Verify" owner="ClusterOpenFlow">
<msg time="2026-04-08T00:51:01.953583" level="FAIL">Variable '${new_owner}' not found.</msg>
<arg>${new_owner}</arg>
<doc>Add sample flow in ${controller_index} and verify it gets applied from all instances in ${controller_index_list}.</doc>
<status status="FAIL" start="2026-04-08T00:51:01.950011" elapsed="0.003617">Variable '${new_owner}' not found.</status>
</kw>
<doc>Add Flow in Owner and verify it gets applied from all instances.</doc>
<status status="FAIL" start="2026-04-08T00:51:01.939556" elapsed="0.014221">Variable '${new_owner}' not found.</status>
</test>
<test id="s1-s1-t45" name="Send RPC Delete to Owner and Verify After Recover" line="223">
<kw name="Send RPC Delete Sample Flow And Verify" owner="ClusterOpenFlow">
<msg time="2026-04-08T00:51:01.965858" level="FAIL">Variable '${new_owner}' not found.</msg>
<arg>${new_owner}</arg>
<doc>Delete sample flow in ${controller_index} and verify it gets removed from all instances in ${controller_index_list}.</doc>
<status status="FAIL" start="2026-04-08T00:51:01.962332" elapsed="0.003563">Variable '${new_owner}' not found.</status>
</kw>
<doc>Delete Flow in Owner and verify it gets removed from all instances.</doc>
<status status="FAIL" start="2026-04-08T00:51:01.954193" elapsed="0.011829">Variable '${new_owner}' not found.</status>
</test>
<test id="s1-s1-t46" name="Send RPC Add to Old Owner and Verify After Recover" line="227">
<kw name="Send RPC Add Sample Flow And Verify" owner="ClusterOpenFlow">
<msg time="2026-04-08T00:51:01.978319" level="FAIL">Variable '${original_owner}' not found.</msg>
<arg>${original_owner}</arg>
<doc>Add sample flow in ${controller_index} and verify it gets applied from all instances in ${controller_index_list}.</doc>
<status status="FAIL" start="2026-04-08T00:51:01.974506" elapsed="0.003852">Variable '${original_owner}' not found.</status>
</kw>
<doc>Add Flow in Owner and verify it gets applied from all instances.</doc>
<status status="FAIL" start="2026-04-08T00:51:01.966318" elapsed="0.012182">Variable '${original_owner}' not found.</status>
</test>
<test id="s1-s1-t47" name="Send RPC Delete to Old Owner and Verify After Recover" line="231">
<kw name="Send RPC Delete Sample Flow And Verify" owner="ClusterOpenFlow">
<msg time="2026-04-08T00:51:01.990656" level="FAIL">Variable '${original_owner}' not found.</msg>
<arg>${original_owner}</arg>
<doc>Delete sample flow in ${controller_index} and verify it gets removed from all instances in ${controller_index_list}.</doc>
<status status="FAIL" start="2026-04-08T00:51:01.986907" elapsed="0.003786">Variable '${original_owner}' not found.</status>
</kw>
<doc>Delete Flow in Owner and verify it gets removed from all instances.</doc>
<status status="FAIL" start="2026-04-08T00:51:01.978794" elapsed="0.012029">Variable '${original_owner}' not found.</status>
</test>
<test id="s1-s1-t48" name="Modify Network and Verify After Recover" line="235">
<kw name="Take OpenFlow Device Link Down and Verify" owner="ClusterOpenFlow">
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-08T00:51:01.997941" level="INFO">${dictionary} = {'"link-down":true': '1'}</msg>
<var>${dictionary}</var>
<arg>"link-down":true=1</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-08T00:51:01.997563" elapsed="0.000406"/>
</kw>
<kw name="Send Mininet Command" owner="MininetKeywords">
<if>
<branch type="IF" condition="&quot;&quot;&quot;${mininet_conn}&quot;&quot;&quot; != &quot;&quot;">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${mininet_conn}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:51:02.005777" elapsed="0.000159"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:02.005529" elapsed="0.000444"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:02.005505" elapsed="0.000495"/>
</if>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T00:51:02.009549" level="INFO">link s1 s2 down</msg>
<arg>${cmd}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T00:51:02.006138" elapsed="0.003467"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-08T00:51:02.014236" level="INFO">mininet&gt;</msg>
<msg time="2026-04-08T00:51:02.014325" level="INFO">${output} = mininet&gt;</msg>
<var>${output}</var>
<arg>mininet&gt;</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-08T00:51:02.009762" elapsed="0.004588"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-08T00:51:02.014400" elapsed="0.000035"/>
</return>
<msg time="2026-04-08T00:51:02.014613" level="INFO">${ouput} = mininet&gt;</msg>
<var>${ouput}</var>
<arg>${mininet_conn_id}</arg>
<arg>link s1 s2 down</arg>
<doc>Sends Command ${cmd} to Mininet session ${mininet_conn} and returns read buffer response.</doc>
<status status="PASS" start="2026-04-08T00:51:02.005219" elapsed="0.009419"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Check_Item_Occurrence_Member_List_Or_All" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:51:02.020719" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:51:02.020331" elapsed="0.000415"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:51:02.021257" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:51:02.020936" elapsed="0.000348"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:51:02.021328" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:51:02.021480" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:51:02.019942" elapsed="0.001562"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_From_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:02.026835" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:02.026538" elapsed="0.000323"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:51:02.026906" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:51:02.027055" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:51:02.026196" elapsed="0.000884"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:02.033432" level="INFO">/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:02.033147" elapsed="0.000330"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:02.033867" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:02.033628" elapsed="0.000282"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:51:02.044554" level="INFO">GET Request : url=http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01nfu2ssrokr1es5zgka78rw970.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:51:02.045590" level="INFO">GET Response : url=http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '1010'} 
 body={"opendaylight-inventory:node-connector":[{"id":"openflow:1:1","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:maximum-speed":0,"flow-node-inventory:reason":"update","flow-node-inventory:configuration":"","flow-node-inventory:port-number":1,"flow-node-inventory:hardware-address":"c6:0c:45:fe:a3:df","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s1-eth1","flow-node-inventory:supported":"","flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"39","received":"37"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":71,"nanosecond":441000000},"bytes":{"transmitted":"3255","received":"3079"},"receive-crc-error":"0"}}]} 
 </msg>
<msg time="2026-04-08T00:51:02.045748" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:51:02.035885" elapsed="0.009901"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:02.033977" elapsed="0.011869"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:02.046099" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:02.045884" elapsed="0.000325"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:02.033959" elapsed="0.012281"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:02.050893" level="INFO">{"opendaylight-inventory:node-connector":[{"id":"openflow:1:1","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:maximum-speed":0,"flow-node-inventory:reason":"update","flow-node-inventory:configuration":"","flow-node-inventory:port-number":1,"flow-node-inventory:hardware-address":"c6:0c:45:fe:a3:df","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s1-eth1","flow-node-inventory:supported":"","flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"39","received":"37"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":71,"nanosecond":441000000},"bytes":{"transmitted":"3255","received":"3079"},"receive-crc-error":"0"}}]}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:02.047666" elapsed="0.003303"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:02.047361" elapsed="0.003656"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:02.047334" elapsed="0.003767"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:02.054584" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:02.051514" elapsed="0.003136"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:02.051206" elapsed="0.003492"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:02.051181" elapsed="0.003551"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:02.055531" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:02.054965" elapsed="0.000604"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:02.055992" elapsed="0.000029"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:02.055666" elapsed="0.000405"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:02.056769" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:02.056349" elapsed="0.000477"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:02.056103" elapsed="0.000774"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:02.055641" elapsed="0.001266"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:02.057647" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:02.057124" elapsed="0.000560"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:02.058100" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:02.057778" elapsed="0.000422"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:02.058966" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:02.058474" elapsed="0.000529"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:02.058233" elapsed="0.000819"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:02.057754" elapsed="0.001327"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:51:02.059310" elapsed="0.000482"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:51:02.060442" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:02.060020" elapsed="0.000458"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:51:02.060689" elapsed="0.003069"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:51:02.046720" elapsed="0.017128"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-08T00:51:02.064098" elapsed="0.000043"/>
</return>
<status status="PASS" start="2026-04-08T00:51:02.063949" elapsed="0.000259"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:02.063923" elapsed="0.000319"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:02.064445" elapsed="0.000031"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-08T00:51:02.064543" elapsed="0.000019"/>
</return>
<msg time="2026-04-08T00:51:02.066959" level="INFO">${response_text} = {"opendaylight-inventory:node-connector":[{"id":"openflow:1:1","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed"...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${access}</arg>
<arg>session=${session}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:51:02.027419" elapsed="0.039569"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:51:02.067040" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:51:02.067205" level="INFO">${data} = {"opendaylight-inventory:node-connector":[{"id":"openflow:1:1","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed"...</msg>
<var>${data}</var>
<arg>uri=${uri}</arg>
<arg>member_index=${index}</arg>
<doc>Send a GET with the supplied uri to member ${member_index}.</doc>
<status status="PASS" start="2026-04-08T00:51:02.025700" elapsed="0.041533"/>
</kw>
<kw name="Check Item Occurrence" owner="Utils">
<for flavor="IN">
<iter>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T00:51:02.068471" level="INFO">Item found from container 0 times.</msg>
<msg time="2026-04-08T00:51:02.068592" level="FAIL">'{"opendaylight-inventory:node-connector":[{"id":"openflow:1:1","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:maximum-speed":0,"flow-node-inventory:reason":"update","flow-node-inventory:configuration":"","flow-node-inventory:port-number":1,"flow-node-inventory:hardware-address":"c6:0c:45:fe:a3:df","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s1-eth1","flow-node-inventory:supported":"","flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"39","received":"37"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":71,"nanosecond":441000000},"bytes":{"transmitted":"3255","received":"3079"},"receive-crc-error":"0"}}]}' contains '"link-down":true' 0 times, not 1 time.</msg>
<arg>${string}</arg>
<arg>${item}</arg>
<arg>${dictionary_item_occurrence}[${item}]</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="FAIL" start="2026-04-08T00:51:02.068061" elapsed="0.000670">'{"opendaylight-inventory:node-connector":[{"id":"openflow:1:1","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:maximum-speed":0,"flow-node-inventory:reason":"update","flow-node-inventory:configuration":"","flow-node-inventory:port-number":1,"flow-node-inventory:hardware-address":"c6:0c:45:fe:a3:df","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s1-eth1","flow-node-inventory:supported":"","flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"39","received":"37"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":71,"nanosecond":441000000},"bytes":{"transmitted":"3255","received":"3079"},"receive-crc-error":"0"}}]}' contains '"link-down":true' 0 times, not 1 time.</status>
</kw>
<var name="${item}">"link-down":true</var>
<status status="FAIL" start="2026-04-08T00:51:02.067894" elapsed="0.000935">'{"opendaylight-inventory:node-connector":[{"id":"openflow:1:1","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:maximum-speed":0,"flow-node-inventory:reason":"update","flow-node-inventory:configuration":"","flow-node-inventory:port-number":1,"flow-node-inventory:hardware-address":"c6:0c:45:fe:a3:df","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s1-eth1","flow-node-inventory:supported":"","flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"39","received":"37"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":71,"nanosecond":441000000},"bytes":{"transmitted":"3255","received":"3079"},"receive-crc-error":"0"}}]}' contains '"link-down":true' 0 times, not 1 time.</status>
</iter>
<var>${item}</var>
<value>@{dictionary_item_occurrence}</value>
<status status="FAIL" start="2026-04-08T00:51:02.067754" elapsed="0.001142">'{"opendaylight-inventory:node-connector":[{"id":"openflow:1:1","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:maximum-speed":0,"flow-node-inventory:reason":"update","flow-node-inventory:configuration":"","flow-node-inventory:port-number":1,"flow-node-inventory:hardware-address":"c6:0c:45:fe:a3:df","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s1-eth1","flow-node-inventory:supported":"","flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"39","received":"37"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":71,"nanosecond":441000000},"bytes":{"transmitted":"3255","received":"3079"},"receive-crc-error":"0"}}]}' contains '"link-down":true' 0 times, not 1 time.</status>
</for>
<arg>${data}</arg>
<arg>${dictionary}</arg>
<doc>Check string for occurrences of items expressed in a list of dictionaries {item=occurrences}. 0 occurences means item is not present.</doc>
<status status="FAIL" start="2026-04-08T00:51:02.067479" elapsed="0.001536">'{"opendaylight-inventory:node-connector":[{"id":"openflow:1:1","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:maximum-speed":0,"flow-node-inventory:reason":"update","flow-node-inventory:configuration":"","flow-node-inventory:port-number":1,"flow-node-inventory:hardware-address":"c6:0c:45:fe:a3:df","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s1-eth1","flow-node-inventory:supported":"","flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"39","received":"37"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":71,"nanosecond":441000000},"bytes":{"transmitted":"3255","received":"3079"},"receive-crc-error":"0"}}]}' contains '"link-down":true' 0 times, not 1 time.</status>
</kw>
<var name="${index}">1</var>
<status status="FAIL" start="2026-04-08T00:51:02.021699" elapsed="0.047398">'{"opendaylight-inventory:node-connector":[{"id":"openflow:1:1","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:maximum-speed":0,"flow-node-inventory:reason":"update","flow-node-inventory:configuration":"","flow-node-inventory:port-number":1,"flow-node-inventory:hardware-address":"c6:0c:45:fe:a3:df","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s1-eth1","flow-node-inventory:supported":"","flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"39","received":"37"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":71,"nanosecond":441000000},"bytes":{"transmitted":"3255","received":"3079"},"receive-crc-error":"0"}}]}' contains '"link-down":true' 0 times, not 1 time.</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-04-08T00:51:02.021559" elapsed="0.047620">'{"opendaylight-inventory:node-connector":[{"id":"openflow:1:1","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:maximum-speed":0,"flow-node-inventory:reason":"update","flow-node-inventory:configuration":"","flow-node-inventory:port-number":1,"flow-node-inventory:hardware-address":"c6:0c:45:fe:a3:df","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s1-eth1","flow-node-inventory:supported":"","flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"39","received":"37"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":71,"nanosecond":441000000},"bytes":{"transmitted":"3255","received":"3079"},"receive-crc-error":"0"}}]}' contains '"link-down":true' 0 times, not 1 time.</status>
</for>
<arg>uri=${operational_port_1}</arg>
<arg>dictionary=${dictionary}</arg>
<arg>member_index_list=${controller_index_list}</arg>
<doc>Send a GET with the supplied uri to all or some members defined in ${member_index_list}.
Then check received for occurrences of items expressed in a dictionary {'"link-down":true': '1'}.</doc>
<status status="FAIL" start="2026-04-08T00:51:02.019349" elapsed="0.049929">'{"opendaylight-inventory:node-connector":[{"id":"openflow:1:1","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:maximum-speed":0,"flow-node-inventory:reason":"update","flow-node-inventory:configuration":"","flow-node-inventory:port-number":1,"flow-node-inventory:hardware-address":"c6:0c:45:fe:a3:df","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s1-eth1","flow-node-inventory:supported":"","flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"39","received":"37"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":71,"nanosecond":441000000},"bytes":{"transmitted":"3255","received":"3079"},"receive-crc-error":"0"}}]}' contains '"link-down":true' 0 times, not 1 time.</status>
</kw>
<kw name="Check_Item_Occurrence_Member_List_Or_All" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:51:03.082220" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:51:03.081698" elapsed="0.000558"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:51:03.082756" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:51:03.082430" elapsed="0.000354"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:51:03.082832" elapsed="0.000040"/>
</return>
<msg time="2026-04-08T00:51:03.083008" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:51:03.081303" elapsed="0.001732"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_From_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:03.088683" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:03.088330" elapsed="0.000385"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:51:03.088770" elapsed="0.000035"/>
</return>
<msg time="2026-04-08T00:51:03.088953" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:51:03.087855" elapsed="0.001132"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:03.095394" level="INFO">/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:03.095112" elapsed="0.000330"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:03.095848" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:03.095598" elapsed="0.000296"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:51:03.105433" level="INFO">GET Request : url=http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01nfu2ssrokr1es5zgka78rw970.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:51:03.105891" level="INFO">GET Response : url=http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '618'} 
 body={"opendaylight-inventory:node-connector":[{"id":"openflow:1:1","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:maximum-speed":0,"flow-node-inventory:reason":"update","flow-node-inventory:configuration":"PORT-DOWN","flow-node-inventory:port-number":1,"flow-node-inventory:hardware-address":"c6:0c:45:fe:a3:df","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s1-eth1","flow-node-inventory:supported":"","flow-node-inventory:state":{"live":false,"blocked":false,"link-down":true}}]} 
 </msg>
<msg time="2026-04-08T00:51:03.106255" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:51:03.097979" elapsed="0.008360"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:03.095971" elapsed="0.010492"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:03.107065" elapsed="0.000070"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:03.106556" elapsed="0.000790"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:03.095950" elapsed="0.011467"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:03.112953" level="INFO">{"opendaylight-inventory:node-connector":[{"id":"openflow:1:1","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:maximum-speed":0,"flow-node-inventory:reason":"update","flow-node-inventory:configuration":"PORT-DOWN","flow-node-inventory:port-number":1,"flow-node-inventory:hardware-address":"c6:0c:45:fe:a3:df","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s1-eth1","flow-node-inventory:supported":"","flow-node-inventory:state":{"live":false,"blocked":false,"link-down":true}}]}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:03.109260" elapsed="0.003769"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:03.108913" elapsed="0.004166"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:03.108885" elapsed="0.004228"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:03.116653" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:03.113542" elapsed="0.003178"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:03.113218" elapsed="0.003551"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:03.113193" elapsed="0.003611"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:03.117540" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:03.117106" elapsed="0.000462"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:03.117879" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:03.117640" elapsed="0.000362"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:03.118522" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:03.118209" elapsed="0.000340"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:03.118027" elapsed="0.000558"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:03.117622" elapsed="0.000985"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:03.119140" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:03.118767" elapsed="0.000416"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:03.119494" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:03.119257" elapsed="0.000297"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:03.120047" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:03.119740" elapsed="0.000333"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:03.119578" elapsed="0.000531"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:03.119238" elapsed="0.000909"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:51:03.120328" elapsed="0.000360"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:51:03.121145" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:03.120851" elapsed="0.000337"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:51:03.121344" elapsed="0.002191"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:51:03.108257" elapsed="0.015343"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-08T00:51:03.123779" elapsed="0.000031"/>
</return>
<status status="PASS" start="2026-04-08T00:51:03.123670" elapsed="0.000173"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:03.123651" elapsed="0.000217"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:03.124016" elapsed="0.000022"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-08T00:51:03.124086" elapsed="0.000015"/>
</return>
<msg time="2026-04-08T00:51:03.126323" level="INFO">${response_text} = {"opendaylight-inventory:node-connector":[{"id":"openflow:1:1","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed"...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${access}</arg>
<arg>session=${session}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:51:03.089416" elapsed="0.036936"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:51:03.126403" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:51:03.126555" level="INFO">${data} = {"opendaylight-inventory:node-connector":[{"id":"openflow:1:1","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed"...</msg>
<var>${data}</var>
<arg>uri=${uri}</arg>
<arg>member_index=${index}</arg>
<doc>Send a GET with the supplied uri to member ${member_index}.</doc>
<status status="PASS" start="2026-04-08T00:51:03.087360" elapsed="0.039221"/>
</kw>
<kw name="Check Item Occurrence" owner="Utils">
<for flavor="IN">
<iter>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T00:51:03.127780" level="INFO">Item found from container 1 time.</msg>
<arg>${string}</arg>
<arg>${item}</arg>
<arg>${dictionary_item_occurrence}[${item}]</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="PASS" start="2026-04-08T00:51:03.127394" elapsed="0.000454"/>
</kw>
<var name="${item}">"link-down":true</var>
<status status="PASS" start="2026-04-08T00:51:03.127236" elapsed="0.000652"/>
</iter>
<var>${item}</var>
<value>@{dictionary_item_occurrence}</value>
<status status="PASS" start="2026-04-08T00:51:03.127080" elapsed="0.000838"/>
</for>
<arg>${data}</arg>
<arg>${dictionary}</arg>
<doc>Check string for occurrences of items expressed in a list of dictionaries {item=occurrences}. 0 occurences means item is not present.</doc>
<status status="PASS" start="2026-04-08T00:51:03.126812" elapsed="0.001160"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T00:51:03.083258" elapsed="0.044748"/>
</iter>
<iter>
<kw name="Get_From_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:03.133337" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:03.133014" elapsed="0.000350"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:51:03.133409" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:51:03.133557" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:51:03.132669" elapsed="0.000913"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:03.139989" level="INFO">/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:03.139735" elapsed="0.000345"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:03.140540" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:03.140284" elapsed="0.000301"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:51:03.155346" level="INFO">GET Request : url=http://10.30.170.131:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0evogeryo91251obsb096nsda10.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:51:03.155484" level="INFO">GET Response : url=http://10.30.170.131:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '618'} 
 body={"opendaylight-inventory:node-connector":[{"id":"openflow:1:1","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:maximum-speed":0,"flow-node-inventory:reason":"update","flow-node-inventory:configuration":"PORT-DOWN","flow-node-inventory:port-number":1,"flow-node-inventory:hardware-address":"c6:0c:45:fe:a3:df","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s1-eth1","flow-node-inventory:supported":"","flow-node-inventory:state":{"live":false,"blocked":false,"link-down":true}}]} 
 </msg>
<msg time="2026-04-08T00:51:03.155587" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:51:03.142589" elapsed="0.013024"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:03.140653" elapsed="0.015004"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:03.155846" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:03.155685" elapsed="0.000225"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:03.140635" elapsed="0.015297"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:03.163553" level="INFO">{"opendaylight-inventory:node-connector":[{"id":"openflow:1:1","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:maximum-speed":0,"flow-node-inventory:reason":"update","flow-node-inventory:configuration":"PORT-DOWN","flow-node-inventory:port-number":1,"flow-node-inventory:hardware-address":"c6:0c:45:fe:a3:df","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s1-eth1","flow-node-inventory:supported":"","flow-node-inventory:state":{"live":false,"blocked":false,"link-down":true}}]}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:03.158136" elapsed="0.005539"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:03.157644" elapsed="0.006114"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:03.157602" elapsed="0.006214"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:03.166987" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:03.164557" elapsed="0.002475"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:03.163947" elapsed="0.003152"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:03.163908" elapsed="0.003217"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:03.167687" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:03.167304" elapsed="0.000410"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:03.168018" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:03.167784" elapsed="0.000290"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:03.168660" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:03.168288" elapsed="0.000399"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:03.168098" elapsed="0.000624"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:03.167766" elapsed="0.000978"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:03.169327" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:03.168899" elapsed="0.000456"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:03.169656" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:03.169425" elapsed="0.000287"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:03.170206" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:03.169895" elapsed="0.000338"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:03.169735" elapsed="0.000533"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:03.169407" elapsed="0.000882"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:51:03.170440" elapsed="0.000345"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:51:03.171246" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:03.170948" elapsed="0.000324"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:51:03.171470" elapsed="0.002192"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:51:03.156668" elapsed="0.017056"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-08T00:51:03.173897" elapsed="0.000029"/>
</return>
<status status="PASS" start="2026-04-08T00:51:03.173793" elapsed="0.000166"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:03.173775" elapsed="0.000207"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:03.174127" elapsed="0.000022"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-08T00:51:03.174213" elapsed="0.000016"/>
</return>
<msg time="2026-04-08T00:51:03.176419" level="INFO">${response_text} = {"opendaylight-inventory:node-connector":[{"id":"openflow:1:1","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed"...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${access}</arg>
<arg>session=${session}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:51:03.133907" elapsed="0.042541"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:51:03.176499" elapsed="0.000027"/>
</return>
<msg time="2026-04-08T00:51:03.176649" level="INFO">${data} = {"opendaylight-inventory:node-connector":[{"id":"openflow:1:1","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed"...</msg>
<var>${data}</var>
<arg>uri=${uri}</arg>
<arg>member_index=${index}</arg>
<doc>Send a GET with the supplied uri to member ${member_index}.</doc>
<status status="PASS" start="2026-04-08T00:51:03.132175" elapsed="0.044500"/>
</kw>
<kw name="Check Item Occurrence" owner="Utils">
<for flavor="IN">
<iter>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T00:51:03.177845" level="INFO">Item found from container 1 time.</msg>
<arg>${string}</arg>
<arg>${item}</arg>
<arg>${dictionary_item_occurrence}[${item}]</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="PASS" start="2026-04-08T00:51:03.177472" elapsed="0.000440"/>
</kw>
<var name="${item}">"link-down":true</var>
<status status="PASS" start="2026-04-08T00:51:03.177317" elapsed="0.000636"/>
</iter>
<var>${item}</var>
<value>@{dictionary_item_occurrence}</value>
<status status="PASS" start="2026-04-08T00:51:03.177180" elapsed="0.000802"/>
</for>
<arg>${data}</arg>
<arg>${dictionary}</arg>
<doc>Check string for occurrences of items expressed in a list of dictionaries {item=occurrences}. 0 occurences means item is not present.</doc>
<status status="PASS" start="2026-04-08T00:51:03.176903" elapsed="0.001132"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T00:51:03.128093" elapsed="0.049977"/>
</iter>
<iter>
<kw name="Get_From_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:03.183484" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:03.183187" elapsed="0.000323"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:51:03.183556" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:51:03.183701" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:51:03.182829" elapsed="0.000897"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:03.189959" level="INFO">/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:03.189712" elapsed="0.000293"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:03.190414" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:03.190173" elapsed="0.000285"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:51:03.204362" level="INFO">GET Request : url=http://10.30.171.110:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node09orwbuy1e81xg3wze7ww55ua0.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:51:03.204534" level="INFO">GET Response : url=http://10.30.171.110:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '618'} 
 body={"opendaylight-inventory:node-connector":[{"id":"openflow:1:1","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:maximum-speed":0,"flow-node-inventory:reason":"update","flow-node-inventory:configuration":"PORT-DOWN","flow-node-inventory:port-number":1,"flow-node-inventory:hardware-address":"c6:0c:45:fe:a3:df","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s1-eth1","flow-node-inventory:supported":"","flow-node-inventory:state":{"live":false,"blocked":false,"link-down":true}}]} 
 </msg>
<msg time="2026-04-08T00:51:03.204667" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:51:03.192467" elapsed="0.012236"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:03.190526" elapsed="0.014236"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:03.205007" elapsed="0.000032"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:03.204798" elapsed="0.000350"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:03.190508" elapsed="0.014696"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:03.209850" level="INFO">{"opendaylight-inventory:node-connector":[{"id":"openflow:1:1","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:maximum-speed":0,"flow-node-inventory:reason":"update","flow-node-inventory:configuration":"PORT-DOWN","flow-node-inventory:port-number":1,"flow-node-inventory:hardware-address":"c6:0c:45:fe:a3:df","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s1-eth1","flow-node-inventory:supported":"","flow-node-inventory:state":{"live":false,"blocked":false,"link-down":true}}]}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:03.206622" elapsed="0.003299"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:03.206313" elapsed="0.003657"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:03.206287" elapsed="0.003718"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:03.213459" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:03.210412" elapsed="0.003112"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:03.210082" elapsed="0.003490"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:03.210059" elapsed="0.003546"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:03.214370" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:03.213831" elapsed="0.000578"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:03.214836" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:03.214510" elapsed="0.000407"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:03.215611" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:03.215192" elapsed="0.000456"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:03.214950" elapsed="0.000747"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:03.214484" elapsed="0.001243"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:03.216483" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:03.215947" elapsed="0.000573"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:03.216941" elapsed="0.000029"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:03.216617" elapsed="0.000403"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:03.217887" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:03.217476" elapsed="0.000447"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:03.217053" elapsed="0.000919"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:03.216592" elapsed="0.001410"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:51:03.218182" elapsed="0.000346"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:51:03.218957" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:03.218689" elapsed="0.000293"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:51:03.219133" elapsed="0.002364"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:51:03.205685" elapsed="0.015876"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-08T00:51:03.221736" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-08T00:51:03.221632" elapsed="0.000164"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:03.221614" elapsed="0.000206"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:03.221964" elapsed="0.000022"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-08T00:51:03.222036" elapsed="0.000014"/>
</return>
<msg time="2026-04-08T00:51:03.224280" level="INFO">${response_text} = {"opendaylight-inventory:node-connector":[{"id":"openflow:1:1","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed"...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${access}</arg>
<arg>session=${session}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:51:03.184045" elapsed="0.040264"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:51:03.224361" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:51:03.224512" level="INFO">${data} = {"opendaylight-inventory:node-connector":[{"id":"openflow:1:1","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed"...</msg>
<var>${data}</var>
<arg>uri=${uri}</arg>
<arg>member_index=${index}</arg>
<doc>Send a GET with the supplied uri to member ${member_index}.</doc>
<status status="PASS" start="2026-04-08T00:51:03.182338" elapsed="0.042200"/>
</kw>
<kw name="Check Item Occurrence" owner="Utils">
<for flavor="IN">
<iter>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T00:51:03.225759" level="INFO">Item found from container 1 time.</msg>
<arg>${string}</arg>
<arg>${item}</arg>
<arg>${dictionary_item_occurrence}[${item}]</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="PASS" start="2026-04-08T00:51:03.225382" elapsed="0.000445"/>
</kw>
<var name="${item}">"link-down":true</var>
<status status="PASS" start="2026-04-08T00:51:03.225224" elapsed="0.000643"/>
</iter>
<var>${item}</var>
<value>@{dictionary_item_occurrence}</value>
<status status="PASS" start="2026-04-08T00:51:03.225074" elapsed="0.000822"/>
</for>
<arg>${data}</arg>
<arg>${dictionary}</arg>
<doc>Check string for occurrences of items expressed in a list of dictionaries {item=occurrences}. 0 occurences means item is not present.</doc>
<status status="PASS" start="2026-04-08T00:51:03.224810" elapsed="0.001139"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T00:51:03.178172" elapsed="0.047812"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-08T00:51:03.083093" elapsed="0.142920"/>
</for>
<arg>uri=${operational_port_1}</arg>
<arg>dictionary=${dictionary}</arg>
<arg>member_index_list=${controller_index_list}</arg>
<doc>Send a GET with the supplied uri to all or some members defined in ${member_index_list}.
Then check received for occurrences of items expressed in a dictionary {'"link-down":true': '1'}.</doc>
<status status="PASS" start="2026-04-08T00:51:03.080041" elapsed="0.146028"/>
</kw>
<arg>5s</arg>
<arg>1s</arg>
<arg>ClusterManagement.Check_Item_Occurrence_Member_List_Or_All</arg>
<arg>uri=${operational_port_1}</arg>
<arg>dictionary=${dictionary}</arg>
<arg>member_index_list=${controller_index_list}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-08T00:51:02.014828" elapsed="1.211297"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-08T00:51:03.226678" level="INFO">${dictionary} = {'openflow:1': '16', 'openflow:2': '14', 'openflow:3': '19'}</msg>
<var>${dictionary}</var>
<arg>openflow:1=16</arg>
<arg>openflow:2=14</arg>
<arg>openflow:3=19</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-08T00:51:03.226337" elapsed="0.000368"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Check_Item_Occurrence_Member_List_Or_All" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:51:03.232759" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:51:03.232377" elapsed="0.000409"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:51:03.233267" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:51:03.232946" elapsed="0.000347"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:51:03.233337" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:51:03.233491" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:51:03.231969" elapsed="0.001546"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_From_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:03.238879" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:03.238583" elapsed="0.000322"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:51:03.238951" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:51:03.239096" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:51:03.238240" elapsed="0.000880"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:03.245644" level="INFO">/rests/data/network-topology:network-topology?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:03.245375" elapsed="0.000317"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:03.246102" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:03.245847" elapsed="0.000300"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:51:03.253859" level="INFO">GET Request : url=http://10.30.170.48:8181/rests/data/network-topology:network-topology?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01nfu2ssrokr1es5zgka78rw970.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:51:03.254075" level="INFO">GET Response : url=http://10.30.170.48:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '2833'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"},{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:3']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:3:3","source":{"source-node":"openflow:3","source-tp":"openflow:3:3"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:3:3","dest-node":"openflow:3"}}]}]}} 
 </msg>
<msg time="2026-04-08T00:51:03.254250" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:51:03.248266" elapsed="0.006010"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:03.246240" elapsed="0.008080"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:03.254500" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:03.254347" elapsed="0.000217"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:03.246218" elapsed="0.008367"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:03.258002" level="INFO">{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"},{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:3']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:3:3","source":{"source-node":"openflow:3","source-tp":"openflow:3:3"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:3:3","dest-node":"openflow:3"}}]}]}}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:03.255609" elapsed="0.002459"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:03.255387" elapsed="0.002716"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:03.255368" elapsed="0.002760"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:03.260604" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:03.258421" elapsed="0.002228"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:03.258199" elapsed="0.002485"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:03.258181" elapsed="0.002528"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:03.261361" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:03.260871" elapsed="0.000528"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:03.261827" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:03.261498" elapsed="0.000410"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:03.262614" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:03.262190" elapsed="0.000461"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:03.261942" elapsed="0.000759"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:03.261473" elapsed="0.001258"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:03.263474" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:03.262951" elapsed="0.000561"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:03.263929" elapsed="0.000029"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:03.263608" elapsed="0.000399"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:03.264713" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:03.264302" elapsed="0.000447"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:03.264039" elapsed="0.000759"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:03.263584" elapsed="0.001243"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:51:03.265034" elapsed="0.000501"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:51:03.266148" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:03.265763" elapsed="0.000621"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:51:03.266605" elapsed="0.002947"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:51:03.254931" elapsed="0.014684"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-08T00:51:03.269791" elapsed="0.000030"/>
</return>
<status status="PASS" start="2026-04-08T00:51:03.269685" elapsed="0.000170"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:03.269667" elapsed="0.000213"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:03.270027" elapsed="0.000021"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-08T00:51:03.270096" elapsed="0.000015"/>
</return>
<msg time="2026-04-08T00:51:03.272470" level="INFO">${response_text} = {"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='o...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${access}</arg>
<arg>session=${session}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:51:03.239457" elapsed="0.033043"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:51:03.272553" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:51:03.272706" level="INFO">${data} = {"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='o...</msg>
<var>${data}</var>
<arg>uri=${uri}</arg>
<arg>member_index=${index}</arg>
<doc>Send a GET with the supplied uri to member ${member_index}.</doc>
<status status="PASS" start="2026-04-08T00:51:03.237701" elapsed="0.035031"/>
</kw>
<kw name="Check Item Occurrence" owner="Utils">
<for flavor="IN">
<iter>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T00:51:03.274060" level="INFO">Item found from container 16 times.</msg>
<arg>${string}</arg>
<arg>${item}</arg>
<arg>${dictionary_item_occurrence}[${item}]</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="PASS" start="2026-04-08T00:51:03.273687" elapsed="0.000452"/>
</kw>
<var name="${item}">openflow:1</var>
<status status="PASS" start="2026-04-08T00:51:03.273533" elapsed="0.000669"/>
</iter>
<iter>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T00:51:03.274795" level="INFO">Item found from container 14 times.</msg>
<arg>${string}</arg>
<arg>${item}</arg>
<arg>${dictionary_item_occurrence}[${item}]</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="PASS" start="2026-04-08T00:51:03.274435" elapsed="0.000437"/>
</kw>
<var name="${item}">openflow:2</var>
<status status="PASS" start="2026-04-08T00:51:03.274283" elapsed="0.000629"/>
</iter>
<iter>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T00:51:03.275519" level="INFO">Item found from container 19 times.</msg>
<arg>${string}</arg>
<arg>${item}</arg>
<arg>${dictionary_item_occurrence}[${item}]</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="PASS" start="2026-04-08T00:51:03.275140" elapsed="0.000454"/>
</kw>
<var name="${item}">openflow:3</var>
<status status="PASS" start="2026-04-08T00:51:03.274990" elapsed="0.000643"/>
</iter>
<var>${item}</var>
<value>@{dictionary_item_occurrence}</value>
<status status="PASS" start="2026-04-08T00:51:03.273398" elapsed="0.002264"/>
</for>
<arg>${data}</arg>
<arg>${dictionary}</arg>
<doc>Check string for occurrences of items expressed in a list of dictionaries {item=occurrences}. 0 occurences means item is not present.</doc>
<status status="PASS" start="2026-04-08T00:51:03.272963" elapsed="0.002751"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T00:51:03.233697" elapsed="0.042051"/>
</iter>
<iter>
<kw name="Get_From_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:03.281228" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:03.280912" elapsed="0.000343"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:51:03.281300" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:51:03.281448" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:51:03.280570" elapsed="0.000903"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:03.287637" level="INFO">/rests/data/network-topology:network-topology?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:03.287390" elapsed="0.000293"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:03.288086" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:03.287833" elapsed="0.000297"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:51:03.302603" level="INFO">GET Request : url=http://10.30.170.131:8181/rests/data/network-topology:network-topology?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0evogeryo91251obsb096nsda10.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:51:03.302806" level="INFO">GET Response : url=http://10.30.170.131:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '2833'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"},{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:3']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:3:3","source":{"source-node":"openflow:3","source-tp":"openflow:3:3"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:3:3","dest-node":"openflow:3"}}]}]}} 
 </msg>
<msg time="2026-04-08T00:51:03.302958" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:51:03.290171" elapsed="0.012813"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:03.288213" elapsed="0.014819"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:03.303486" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:03.303095" elapsed="0.000538"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:03.288194" elapsed="0.015487"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:03.311382" level="INFO">{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"},{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:3']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:3:3","source":{"source-node":"openflow:3","source-tp":"openflow:3:3"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:3:3","dest-node":"openflow:3"}}]}]}}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:03.305962" elapsed="0.005567"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:03.305476" elapsed="0.006131"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:03.305434" elapsed="0.006228"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:03.314928" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:03.312382" elapsed="0.002591"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:03.311803" elapsed="0.003204"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:03.311763" elapsed="0.003269"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:03.315579" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:03.315206" elapsed="0.000399"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:03.315908" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:03.315675" elapsed="0.000289"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:03.316478" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:03.316176" elapsed="0.000328"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:03.315988" elapsed="0.000551"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:03.315657" elapsed="0.000904"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:03.317083" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:03.316719" elapsed="0.000390"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:03.317427" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:03.317193" elapsed="0.000290"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:03.317959" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:03.317665" elapsed="0.000321"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:03.317506" elapsed="0.000514"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:03.317174" elapsed="0.000867"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:51:03.318206" elapsed="0.000342"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:51:03.318979" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:03.318709" elapsed="0.000338"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:51:03.319220" elapsed="0.002339"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:51:03.304508" elapsed="0.017114"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-08T00:51:03.321796" elapsed="0.000028"/>
</return>
<status status="PASS" start="2026-04-08T00:51:03.321691" elapsed="0.000166"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:03.321673" elapsed="0.000209"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:03.322028" elapsed="0.000021"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-08T00:51:03.322097" elapsed="0.000015"/>
</return>
<msg time="2026-04-08T00:51:03.324551" level="INFO">${response_text} = {"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='o...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${access}</arg>
<arg>session=${session}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:51:03.281793" elapsed="0.042787"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:51:03.324632" elapsed="0.000027"/>
</return>
<msg time="2026-04-08T00:51:03.324782" level="INFO">${data} = {"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='o...</msg>
<var>${data}</var>
<arg>uri=${uri}</arg>
<arg>member_index=${index}</arg>
<doc>Send a GET with the supplied uri to member ${member_index}.</doc>
<status status="PASS" start="2026-04-08T00:51:03.280062" elapsed="0.044746"/>
</kw>
<kw name="Check Item Occurrence" owner="Utils">
<for flavor="IN">
<iter>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T00:51:03.325983" level="INFO">Item found from container 16 times.</msg>
<arg>${string}</arg>
<arg>${item}</arg>
<arg>${dictionary_item_occurrence}[${item}]</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="PASS" start="2026-04-08T00:51:03.325598" elapsed="0.000463"/>
</kw>
<var name="${item}">openflow:1</var>
<status status="PASS" start="2026-04-08T00:51:03.325446" elapsed="0.000655"/>
</iter>
<iter>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T00:51:03.326712" level="INFO">Item found from container 14 times.</msg>
<arg>${string}</arg>
<arg>${item}</arg>
<arg>${dictionary_item_occurrence}[${item}]</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="PASS" start="2026-04-08T00:51:03.326350" elapsed="0.000437"/>
</kw>
<var name="${item}">openflow:2</var>
<status status="PASS" start="2026-04-08T00:51:03.326197" elapsed="0.000628"/>
</iter>
<iter>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T00:51:03.327431" level="INFO">Item found from container 19 times.</msg>
<arg>${string}</arg>
<arg>${item}</arg>
<arg>${dictionary_item_occurrence}[${item}]</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="PASS" start="2026-04-08T00:51:03.327054" elapsed="0.000453"/>
</kw>
<var name="${item}">openflow:3</var>
<status status="PASS" start="2026-04-08T00:51:03.326904" elapsed="0.000642"/>
</iter>
<var>${item}</var>
<value>@{dictionary_item_occurrence}</value>
<status status="PASS" start="2026-04-08T00:51:03.325314" elapsed="0.002261"/>
</for>
<arg>${data}</arg>
<arg>${dictionary}</arg>
<doc>Check string for occurrences of items expressed in a list of dictionaries {item=occurrences}. 0 occurences means item is not present.</doc>
<status status="PASS" start="2026-04-08T00:51:03.325036" elapsed="0.002592"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T00:51:03.275834" elapsed="0.051829"/>
</iter>
<iter>
<kw name="Get_From_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:03.332931" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:03.332632" elapsed="0.000325"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:51:03.333003" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:51:03.333147" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:51:03.332280" elapsed="0.000923"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:03.339383" level="INFO">/rests/data/network-topology:network-topology?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:03.339119" elapsed="0.000310"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:03.339820" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:03.339580" elapsed="0.000283"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:51:03.354334" level="INFO">GET Request : url=http://10.30.171.110:8181/rests/data/network-topology:network-topology?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node09orwbuy1e81xg3wze7ww55ua0.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:51:03.354640" level="INFO">GET Response : url=http://10.30.171.110:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '2833'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"},{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:3']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:3:3","source":{"source-node":"openflow:3","source-tp":"openflow:3:3"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:3:3","dest-node":"openflow:3"}}]}]}} 
 </msg>
<msg time="2026-04-08T00:51:03.354879" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:51:03.341873" elapsed="0.013044"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:03.339930" elapsed="0.015049"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:03.355262" elapsed="0.000032"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:03.355018" elapsed="0.000336"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:03.339911" elapsed="0.015473"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:03.360514" level="INFO">{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"},{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:3']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:3:3","source":{"source-node":"openflow:3","source-tp":"openflow:3:3"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:3:3","dest-node":"openflow:3"}}]}]}}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:03.356890" elapsed="0.003718"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:03.356572" elapsed="0.004085"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:03.356545" elapsed="0.004147"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:03.364172" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:03.361079" elapsed="0.003162"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:03.360771" elapsed="0.003519"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:03.360747" elapsed="0.003578"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:03.365101" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:03.364560" elapsed="0.000579"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:03.365591" elapsed="0.000029"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:03.365262" elapsed="0.000408"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:03.366373" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:03.365926" elapsed="0.000483"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:03.365702" elapsed="0.000757"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:03.365235" elapsed="0.001254"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:03.367227" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:03.366707" elapsed="0.000559"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:03.367692" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:03.367365" elapsed="0.000406"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:03.368481" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:03.368039" elapsed="0.000479"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:03.367804" elapsed="0.000762"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:03.367340" elapsed="0.001256"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:51:03.368804" elapsed="0.000500"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:51:03.369918" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:03.369531" elapsed="0.000465"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:51:03.370237" elapsed="0.003046"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:51:03.355923" elapsed="0.017559"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-08T00:51:03.373660" elapsed="0.000032"/>
</return>
<status status="PASS" start="2026-04-08T00:51:03.373552" elapsed="0.000174"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:03.373534" elapsed="0.000216"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:03.373896" elapsed="0.000021"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-08T00:51:03.373964" elapsed="0.000015"/>
</return>
<msg time="2026-04-08T00:51:03.376257" level="INFO">${response_text} = {"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='o...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${access}</arg>
<arg>session=${session}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:51:03.333526" elapsed="0.042760"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:51:03.376337" elapsed="0.000027"/>
</return>
<msg time="2026-04-08T00:51:03.376486" level="INFO">${data} = {"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='o...</msg>
<var>${data}</var>
<arg>uri=${uri}</arg>
<arg>member_index=${index}</arg>
<doc>Send a GET with the supplied uri to member ${member_index}.</doc>
<status status="PASS" start="2026-04-08T00:51:03.331761" elapsed="0.044751"/>
</kw>
<kw name="Check Item Occurrence" owner="Utils">
<for flavor="IN">
<iter>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T00:51:03.377694" level="INFO">Item found from container 16 times.</msg>
<arg>${string}</arg>
<arg>${item}</arg>
<arg>${dictionary_item_occurrence}[${item}]</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="PASS" start="2026-04-08T00:51:03.377318" elapsed="0.000456"/>
</kw>
<var name="${item}">openflow:1</var>
<status status="PASS" start="2026-04-08T00:51:03.377145" elapsed="0.000669"/>
</iter>
<iter>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T00:51:03.378434" level="INFO">Item found from container 14 times.</msg>
<arg>${string}</arg>
<arg>${item}</arg>
<arg>${dictionary_item_occurrence}[${item}]</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="PASS" start="2026-04-08T00:51:03.378052" elapsed="0.000459"/>
</kw>
<var name="${item}">openflow:2</var>
<status status="PASS" start="2026-04-08T00:51:03.377895" elapsed="0.000655"/>
</iter>
<iter>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T00:51:03.379138" level="INFO">Item found from container 19 times.</msg>
<arg>${string}</arg>
<arg>${item}</arg>
<arg>${dictionary_item_occurrence}[${item}]</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="PASS" start="2026-04-08T00:51:03.378780" elapsed="0.000450"/>
</kw>
<var name="${item}">openflow:3</var>
<status status="PASS" start="2026-04-08T00:51:03.378628" elapsed="0.000642"/>
</iter>
<var>${item}</var>
<value>@{dictionary_item_occurrence}</value>
<status status="PASS" start="2026-04-08T00:51:03.377004" elapsed="0.002295"/>
</for>
<arg>${data}</arg>
<arg>${dictionary}</arg>
<doc>Check string for occurrences of items expressed in a list of dictionaries {item=occurrences}. 0 occurences means item is not present.</doc>
<status status="PASS" start="2026-04-08T00:51:03.376739" elapsed="0.002613"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T00:51:03.327750" elapsed="0.051636"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-08T00:51:03.233564" elapsed="0.145849"/>
</for>
<arg>uri=${RFC8040_OPERATIONAL_TOPO_API}</arg>
<arg>dictionary=${dictionary}</arg>
<arg>member_index_list=${controller_index_list}</arg>
<doc>Send a GET with the supplied uri to all or some members defined in ${member_index_list}.
Then check received for occurrences of items expressed in a dictionary {'openflow:1': '16', 'openflow:2': '14', 'openflow:3': '19'}.</doc>
<status status="PASS" start="2026-04-08T00:51:03.231412" elapsed="0.148053"/>
</kw>
<arg>20s</arg>
<arg>2s</arg>
<arg>ClusterManagement.Check_Item_Occurrence_Member_List_Or_All</arg>
<arg>uri=${RFC8040_OPERATIONAL_TOPO_API}</arg>
<arg>dictionary=${dictionary}</arg>
<arg>member_index_list=${controller_index_list}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-08T00:51:03.226896" elapsed="0.152625"/>
</kw>
<doc>Take a link down and verify port status in all instances in ${controller_index_list}.</doc>
<status status="PASS" start="2026-04-08T00:51:01.995517" elapsed="1.384070"/>
</kw>
<doc>Take a link down and verify port status in all instances.</doc>
<status status="PASS" start="2026-04-08T00:51:01.991103" elapsed="1.388603"/>
</test>
<test id="s1-s1-t49" name="Restore Network and Verify After Recover" line="239">
<kw name="Take OpenFlow Device Link Up and Verify" owner="ClusterOpenFlow">
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-08T00:51:03.386719" level="INFO">${dictionary} = {'"link-down":true': '0'}</msg>
<var>${dictionary}</var>
<arg>"link-down":true=0</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-08T00:51:03.386385" elapsed="0.000361"/>
</kw>
<kw name="Send Mininet Command" owner="MininetKeywords">
<if>
<branch type="IF" condition="&quot;&quot;&quot;${mininet_conn}&quot;&quot;&quot; != &quot;&quot;">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${mininet_conn}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:51:03.394330" elapsed="0.000148"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:03.394087" elapsed="0.000427"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:03.394068" elapsed="0.000470"/>
</if>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T00:51:03.397300" level="INFO">link s1 s2 up</msg>
<arg>${cmd}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T00:51:03.394676" elapsed="0.002682"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-08T00:51:03.400877" level="INFO">mininet&gt;</msg>
<msg time="2026-04-08T00:51:03.400966" level="INFO">${output} = mininet&gt;</msg>
<var>${output}</var>
<arg>mininet&gt;</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-08T00:51:03.397515" elapsed="0.003476"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-08T00:51:03.401079" elapsed="0.000031"/>
</return>
<msg time="2026-04-08T00:51:03.401252" level="INFO">${ouput} = mininet&gt;</msg>
<var>${ouput}</var>
<arg>${mininet_conn_id}</arg>
<arg>link s1 s2 up</arg>
<doc>Sends Command ${cmd} to Mininet session ${mininet_conn} and returns read buffer response.</doc>
<status status="PASS" start="2026-04-08T00:51:03.393797" elapsed="0.007481"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Check_Item_Occurrence_Member_List_Or_All" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:51:03.409722" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:51:03.409280" elapsed="0.000473"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:51:03.410310" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:51:03.409946" elapsed="0.000394"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:51:03.410391" elapsed="0.000034"/>
</return>
<msg time="2026-04-08T00:51:03.410565" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:51:03.408816" elapsed="0.001779"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_From_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:03.416798" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:03.416500" elapsed="0.000324"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:51:03.416870" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:51:03.417016" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:51:03.416142" elapsed="0.000898"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:03.423284" level="INFO">/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:03.423012" elapsed="0.000318"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:03.423724" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:03.423482" elapsed="0.000285"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:51:03.433391" level="INFO">GET Request : url=http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01nfu2ssrokr1es5zgka78rw970.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:51:03.433586" level="INFO">GET Response : url=http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '618'} 
 body={"opendaylight-inventory:node-connector":[{"id":"openflow:1:1","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:maximum-speed":0,"flow-node-inventory:reason":"update","flow-node-inventory:configuration":"PORT-DOWN","flow-node-inventory:port-number":1,"flow-node-inventory:hardware-address":"c6:0c:45:fe:a3:df","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s1-eth1","flow-node-inventory:supported":"","flow-node-inventory:state":{"live":false,"blocked":false,"link-down":true}}]} 
 </msg>
<msg time="2026-04-08T00:51:03.433737" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:51:03.425847" elapsed="0.007927"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:03.423837" elapsed="0.009996"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:03.434088" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:03.433872" elapsed="0.000327"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:03.423817" elapsed="0.010414"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:03.486616" level="INFO">{"opendaylight-inventory:node-connector":[{"id":"openflow:1:1","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:maximum-speed":0,"flow-node-inventory:reason":"update","flow-node-inventory:configuration":"PORT-DOWN","flow-node-inventory:port-number":1,"flow-node-inventory:hardware-address":"c6:0c:45:fe:a3:df","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s1-eth1","flow-node-inventory:supported":"","flow-node-inventory:state":{"live":false,"blocked":false,"link-down":true}}]}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:03.435675" elapsed="0.051015"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:03.435368" elapsed="0.051370"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:03.435342" elapsed="0.051431"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:03.489408" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:03.487134" elapsed="0.002324"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:03.486855" elapsed="0.002639"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:03.486828" elapsed="0.002691"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:03.490241" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:03.489798" elapsed="0.000472"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:03.490614" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:03.490342" elapsed="0.000351"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:03.491230" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:03.490897" elapsed="0.000360"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:03.490724" elapsed="0.000570"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:03.490323" elapsed="0.000995"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:03.491845" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:03.491479" elapsed="0.000393"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:03.492240" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:03.491987" elapsed="0.000310"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:03.492775" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:03.492479" elapsed="0.000322"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:03.492322" elapsed="0.000513"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:03.491967" elapsed="0.000890"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:51:03.493010" elapsed="0.000364"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:51:03.493826" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:03.493537" elapsed="0.000315"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:51:03.494004" elapsed="0.002223"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:51:03.434724" elapsed="0.061573"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-08T00:51:03.496477" elapsed="0.000035"/>
</return>
<status status="PASS" start="2026-04-08T00:51:03.496368" elapsed="0.000178"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:03.496349" 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-04-08T00:51:03.496718" elapsed="0.000021"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-08T00:51:03.496786" elapsed="0.000014"/>
</return>
<msg time="2026-04-08T00:51:03.498985" level="INFO">${response_text} = {"opendaylight-inventory:node-connector":[{"id":"openflow:1:1","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed"...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${access}</arg>
<arg>session=${session}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:51:03.417384" elapsed="0.081630"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:51:03.499064" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:51:03.499231" level="INFO">${data} = {"opendaylight-inventory:node-connector":[{"id":"openflow:1:1","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed"...</msg>
<var>${data}</var>
<arg>uri=${uri}</arg>
<arg>member_index=${index}</arg>
<doc>Send a GET with the supplied uri to member ${member_index}.</doc>
<status status="PASS" start="2026-04-08T00:51:03.415629" elapsed="0.083629"/>
</kw>
<kw name="Check Item Occurrence" owner="Utils">
<for flavor="IN">
<iter>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T00:51:03.500550" level="INFO">Item found from container 1 time.</msg>
<msg time="2026-04-08T00:51:03.500667" level="FAIL">'{"opendaylight-inventory:node-connector":[{"id":"openflow:1:1","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:maximum-speed":0,"flow-node-inventory:reason":"update","flow-node-inventory:configuration":"PORT-DOWN","flow-node-inventory:port-number":1,"flow-node-inventory:hardware-address":"c6:0c:45:fe:a3:df","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s1-eth1","flow-node-inventory:supported":"","flow-node-inventory:state":{"live":false,"blocked":false,"link-down":true}}]}' contains '"link-down":true' 1 time, not 0 times.</msg>
<arg>${string}</arg>
<arg>${item}</arg>
<arg>${dictionary_item_occurrence}[${item}]</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="FAIL" start="2026-04-08T00:51:03.500145" elapsed="0.000604">'{"opendaylight-inventory:node-connector":[{"id":"openflow:1:1","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:maximum-speed":0,"flow-node-inventory:reason":"update","flow-node-inventory:configuration":"PORT-DOWN","flow-node-inventory:port-number":1,"flow-node-inventory:hardware-address":"c6:0c:45:fe:a3:df","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s1-eth1","flow-node-inventory:supported":"","flow-node-inventory:state":{"live":false,"blocked":false,"link-down":true}}]}' contains '"link-down":true' 1 time, not 0 times.</status>
</kw>
<var name="${item}">"link-down":true</var>
<status status="FAIL" start="2026-04-08T00:51:03.499983" elapsed="0.000892">'{"opendaylight-inventory:node-connector":[{"id":"openflow:1:1","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:maximum-speed":0,"flow-node-inventory:reason":"update","flow-node-inventory:configuration":"PORT-DOWN","flow-node-inventory:port-number":1,"flow-node-inventory:hardware-address":"c6:0c:45:fe:a3:df","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s1-eth1","flow-node-inventory:supported":"","flow-node-inventory:state":{"live":false,"blocked":false,"link-down":true}}]}' contains '"link-down":true' 1 time, not 0 times.</status>
</iter>
<var>${item}</var>
<value>@{dictionary_item_occurrence}</value>
<status status="FAIL" start="2026-04-08T00:51:03.499813" elapsed="0.001127">'{"opendaylight-inventory:node-connector":[{"id":"openflow:1:1","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:maximum-speed":0,"flow-node-inventory:reason":"update","flow-node-inventory:configuration":"PORT-DOWN","flow-node-inventory:port-number":1,"flow-node-inventory:hardware-address":"c6:0c:45:fe:a3:df","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s1-eth1","flow-node-inventory:supported":"","flow-node-inventory:state":{"live":false,"blocked":false,"link-down":true}}]}' contains '"link-down":true' 1 time, not 0 times.</status>
</for>
<arg>${data}</arg>
<arg>${dictionary}</arg>
<doc>Check string for occurrences of items expressed in a list of dictionaries {item=occurrences}. 0 occurences means item is not present.</doc>
<status status="FAIL" start="2026-04-08T00:51:03.499509" elapsed="0.001535">'{"opendaylight-inventory:node-connector":[{"id":"openflow:1:1","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:maximum-speed":0,"flow-node-inventory:reason":"update","flow-node-inventory:configuration":"PORT-DOWN","flow-node-inventory:port-number":1,"flow-node-inventory:hardware-address":"c6:0c:45:fe:a3:df","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s1-eth1","flow-node-inventory:supported":"","flow-node-inventory:state":{"live":false,"blocked":false,"link-down":true}}]}' contains '"link-down":true' 1 time, not 0 times.</status>
</kw>
<var name="${index}">1</var>
<status status="FAIL" start="2026-04-08T00:51:03.410816" elapsed="0.090292">'{"opendaylight-inventory:node-connector":[{"id":"openflow:1:1","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:maximum-speed":0,"flow-node-inventory:reason":"update","flow-node-inventory:configuration":"PORT-DOWN","flow-node-inventory:port-number":1,"flow-node-inventory:hardware-address":"c6:0c:45:fe:a3:df","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s1-eth1","flow-node-inventory:supported":"","flow-node-inventory:state":{"live":false,"blocked":false,"link-down":true}}]}' contains '"link-down":true' 1 time, not 0 times.</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-04-08T00:51:03.410654" elapsed="0.090528">'{"opendaylight-inventory:node-connector":[{"id":"openflow:1:1","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:maximum-speed":0,"flow-node-inventory:reason":"update","flow-node-inventory:configuration":"PORT-DOWN","flow-node-inventory:port-number":1,"flow-node-inventory:hardware-address":"c6:0c:45:fe:a3:df","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s1-eth1","flow-node-inventory:supported":"","flow-node-inventory:state":{"live":false,"blocked":false,"link-down":true}}]}' contains '"link-down":true' 1 time, not 0 times.</status>
</for>
<arg>uri=${operational_port_1}</arg>
<arg>dictionary=${dictionary}</arg>
<arg>member_index_list=${controller_index_list}</arg>
<doc>Send a GET with the supplied uri to all or some members defined in ${member_index_list}.
Then check received for occurrences of items expressed in a dictionary {'"link-down":true': '0'}.</doc>
<status status="FAIL" start="2026-04-08T00:51:03.408137" elapsed="0.093141">'{"opendaylight-inventory:node-connector":[{"id":"openflow:1:1","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:maximum-speed":0,"flow-node-inventory:reason":"update","flow-node-inventory:configuration":"PORT-DOWN","flow-node-inventory:port-number":1,"flow-node-inventory:hardware-address":"c6:0c:45:fe:a3:df","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s1-eth1","flow-node-inventory:supported":"","flow-node-inventory:state":{"live":false,"blocked":false,"link-down":true}}]}' contains '"link-down":true' 1 time, not 0 times.</status>
</kw>
<kw name="Check_Item_Occurrence_Member_List_Or_All" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:51:04.512606" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:51:04.511961" elapsed="0.000688"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:51:04.513339" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:51:04.512883" elapsed="0.000494"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:51:04.513441" elapsed="0.000052"/>
</return>
<msg time="2026-04-08T00:51:04.513674" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:51:04.511423" elapsed="0.002287"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_From_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:04.521177" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:04.520862" elapsed="0.000343"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:51:04.521251" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:51:04.521398" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:51:04.520517" elapsed="0.000906"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:04.527632" level="INFO">/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:04.527378" elapsed="0.000300"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:04.528372" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:04.528017" elapsed="0.000400"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:51:04.537372" level="INFO">GET Request : url=http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01nfu2ssrokr1es5zgka78rw970.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:51:04.538120" level="INFO">GET Response : url=http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '1010'} 
 body={"opendaylight-inventory:node-connector":[{"id":"openflow:1:1","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:maximum-speed":0,"flow-node-inventory:reason":"update","flow-node-inventory:configuration":"","flow-node-inventory:port-number":1,"flow-node-inventory:hardware-address":"c6:0c:45:fe:a3:df","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s1-eth1","flow-node-inventory:supported":"","flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"43","received":"42"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":74,"nanosecond":463000000},"bytes":{"transmitted":"3601","received":"3515"},"receive-crc-error":"0"}}]} 
 </msg>
<msg time="2026-04-08T00:51:04.538285" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:51:04.530496" elapsed="0.007825"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:04.528513" elapsed="0.009867"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:04.538628" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:04.538418" elapsed="0.000299"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:04.528470" elapsed="0.010277"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:04.543558" level="INFO">{"opendaylight-inventory:node-connector":[{"id":"openflow:1:1","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:maximum-speed":0,"flow-node-inventory:reason":"update","flow-node-inventory:configuration":"","flow-node-inventory:port-number":1,"flow-node-inventory:hardware-address":"c6:0c:45:fe:a3:df","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s1-eth1","flow-node-inventory:supported":"","flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"43","received":"42"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":74,"nanosecond":463000000},"bytes":{"transmitted":"3601","received":"3515"},"receive-crc-error":"0"}}]}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:04.540177" elapsed="0.003457"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:04.539855" elapsed="0.003827"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:04.539830" elapsed="0.003887"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:04.547343" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:04.544101" elapsed="0.003308"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:04.543794" elapsed="0.003663"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:04.543771" elapsed="0.003719"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:04.548247" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:04.547733" elapsed="0.000542"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:04.548582" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:04.548345" elapsed="0.000294"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:04.549120" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:04.548820" elapsed="0.000326"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:04.548662" elapsed="0.000536"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:04.548327" elapsed="0.000893"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:04.549740" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:04.549378" elapsed="0.000388"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:04.550067" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:04.549835" elapsed="0.000288"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:04.550614" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:04.550321" elapsed="0.000318"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:04.550146" elapsed="0.000528"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:04.549817" elapsed="0.000878"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:51:04.550887" elapsed="0.000388"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:51:04.551746" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:04.551445" elapsed="0.000328"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:51:04.551923" elapsed="0.002178"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:51:04.539255" elapsed="0.014923"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-08T00:51:04.554355" elapsed="0.000029"/>
</return>
<status status="PASS" start="2026-04-08T00:51:04.554250" elapsed="0.000166"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:04.554231" elapsed="0.000209"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:04.554585" elapsed="0.000021"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-08T00:51:04.554653" elapsed="0.000014"/>
</return>
<msg time="2026-04-08T00:51:04.556870" level="INFO">${response_text} = {"opendaylight-inventory:node-connector":[{"id":"openflow:1:1","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed"...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${access}</arg>
<arg>session=${session}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:51:04.521756" elapsed="0.035144"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:51:04.556950" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:51:04.557100" level="INFO">${data} = {"opendaylight-inventory:node-connector":[{"id":"openflow:1:1","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed"...</msg>
<var>${data}</var>
<arg>uri=${uri}</arg>
<arg>member_index=${index}</arg>
<doc>Send a GET with the supplied uri to member ${member_index}.</doc>
<status status="PASS" start="2026-04-08T00:51:04.519927" elapsed="0.037199"/>
</kw>
<kw name="Check Item Occurrence" owner="Utils">
<for flavor="IN">
<iter>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T00:51:04.558327" level="INFO">Item found from container 0 times.</msg>
<arg>${string}</arg>
<arg>${item}</arg>
<arg>${dictionary_item_occurrence}[${item}]</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="PASS" start="2026-04-08T00:51:04.557931" elapsed="0.000466"/>
</kw>
<var name="${item}">"link-down":true</var>
<status status="PASS" start="2026-04-08T00:51:04.557775" elapsed="0.000662"/>
</iter>
<var>${item}</var>
<value>@{dictionary_item_occurrence}</value>
<status status="PASS" start="2026-04-08T00:51:04.557639" elapsed="0.000828"/>
</for>
<arg>${data}</arg>
<arg>${dictionary}</arg>
<doc>Check string for occurrences of items expressed in a list of dictionaries {item=occurrences}. 0 occurences means item is not present.</doc>
<status status="PASS" start="2026-04-08T00:51:04.557376" elapsed="0.001144"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T00:51:04.513981" elapsed="0.044573"/>
</iter>
<iter>
<kw name="Get_From_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:04.563961" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:04.563664" elapsed="0.000325"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:51:04.564034" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:51:04.564196" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:51:04.563319" elapsed="0.000903"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:04.570659" level="INFO">/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:04.570310" elapsed="0.000413"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:04.571321" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:04.570935" elapsed="0.000448"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:51:04.587327" level="INFO">GET Request : url=http://10.30.170.131:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0evogeryo91251obsb096nsda10.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:51:04.587771" level="INFO">GET Response : url=http://10.30.170.131:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '1010'} 
 body={"opendaylight-inventory:node-connector":[{"id":"openflow:1:1","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:maximum-speed":0,"flow-node-inventory:reason":"update","flow-node-inventory:configuration":"","flow-node-inventory:port-number":1,"flow-node-inventory:hardware-address":"c6:0c:45:fe:a3:df","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s1-eth1","flow-node-inventory:supported":"","flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"43","received":"42"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":74,"nanosecond":463000000},"bytes":{"transmitted":"3601","received":"3515"},"receive-crc-error":"0"}}]} 
 </msg>
<msg time="2026-04-08T00:51:04.588263" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:51:04.574341" elapsed="0.013994"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:04.571476" elapsed="0.016981"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:04.589008" elapsed="0.000058"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:04.588542" elapsed="0.000649"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:04.571451" elapsed="0.017794"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:04.596739" level="INFO">{"opendaylight-inventory:node-connector":[{"id":"openflow:1:1","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:maximum-speed":0,"flow-node-inventory:reason":"update","flow-node-inventory:configuration":"","flow-node-inventory:port-number":1,"flow-node-inventory:hardware-address":"c6:0c:45:fe:a3:df","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s1-eth1","flow-node-inventory:supported":"","flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"43","received":"42"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":74,"nanosecond":463000000},"bytes":{"transmitted":"3601","received":"3515"},"receive-crc-error":"0"}}]}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:04.591824" elapsed="0.004973"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:04.591286" elapsed="0.005547"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:04.591222" elapsed="0.005637"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:04.599348" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:04.597140" elapsed="0.002257"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:04.596914" elapsed="0.002517"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:04.596897" elapsed="0.002559"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:04.600088" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:04.599651" elapsed="0.000465"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:04.600459" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:04.600210" elapsed="0.000309"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:04.601019" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:04.600711" elapsed="0.000335"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:04.600543" elapsed="0.000539"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:04.600190" elapsed="0.000914"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:04.601650" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:04.601279" elapsed="0.000398"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:04.601988" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:04.601748" elapsed="0.000296"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:04.602552" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:04.602252" elapsed="0.000328"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:04.602068" elapsed="0.000547"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:04.601730" elapsed="0.000906"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:51:04.602793" elapsed="0.000354"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:51:04.603661" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:04.603344" elapsed="0.000343"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:51:04.603841" elapsed="0.002214"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:51:04.590141" elapsed="0.015981"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-08T00:51:04.606325" elapsed="0.000042"/>
</return>
<status status="PASS" start="2026-04-08T00:51:04.606210" elapsed="0.000198"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:04.606190" 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-04-08T00:51:04.606584" elapsed="0.000021"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-08T00:51:04.606654" elapsed="0.000014"/>
</return>
<msg time="2026-04-08T00:51:04.608890" level="INFO">${response_text} = {"opendaylight-inventory:node-connector":[{"id":"openflow:1:1","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed"...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${access}</arg>
<arg>session=${session}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:51:04.564545" elapsed="0.044419"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:51:04.609021" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:51:04.609202" level="INFO">${data} = {"opendaylight-inventory:node-connector":[{"id":"openflow:1:1","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed"...</msg>
<var>${data}</var>
<arg>uri=${uri}</arg>
<arg>member_index=${index}</arg>
<doc>Send a GET with the supplied uri to member ${member_index}.</doc>
<status status="PASS" start="2026-04-08T00:51:04.562782" elapsed="0.046449"/>
</kw>
<kw name="Check Item Occurrence" owner="Utils">
<for flavor="IN">
<iter>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T00:51:04.610472" level="INFO">Item found from container 0 times.</msg>
<arg>${string}</arg>
<arg>${item}</arg>
<arg>${dictionary_item_occurrence}[${item}]</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="PASS" start="2026-04-08T00:51:04.610064" elapsed="0.000480"/>
</kw>
<var name="${item}">"link-down":true</var>
<status status="PASS" start="2026-04-08T00:51:04.609905" elapsed="0.000680"/>
</iter>
<var>${item}</var>
<value>@{dictionary_item_occurrence}</value>
<status status="PASS" start="2026-04-08T00:51:04.609755" elapsed="0.000862"/>
</for>
<arg>${data}</arg>
<arg>${dictionary}</arg>
<doc>Check string for occurrences of items expressed in a list of dictionaries {item=occurrences}. 0 occurences means item is not present.</doc>
<status status="PASS" start="2026-04-08T00:51:04.609477" elapsed="0.001196"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T00:51:04.558641" elapsed="0.052067"/>
</iter>
<iter>
<kw name="Get_From_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:04.616198" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:04.615883" elapsed="0.000343"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:51:04.616271" elapsed="0.000035"/>
</return>
<msg time="2026-04-08T00:51:04.616424" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:51:04.615538" elapsed="0.000910"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:04.623000" level="INFO">/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:04.622750" elapsed="0.000296"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:04.623499" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:04.623246" elapsed="0.000296"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:51:04.637529" level="INFO">GET Request : url=http://10.30.171.110:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node09orwbuy1e81xg3wze7ww55ua0.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:51:04.637668" level="INFO">GET Response : url=http://10.30.171.110:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '1010'} 
 body={"opendaylight-inventory:node-connector":[{"id":"openflow:1:1","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:maximum-speed":0,"flow-node-inventory:reason":"update","flow-node-inventory:configuration":"","flow-node-inventory:port-number":1,"flow-node-inventory:hardware-address":"c6:0c:45:fe:a3:df","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s1-eth1","flow-node-inventory:supported":"","flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"43","received":"42"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":74,"nanosecond":463000000},"bytes":{"transmitted":"3601","received":"3515"},"receive-crc-error":"0"}}]} 
 </msg>
<msg time="2026-04-08T00:51:04.637769" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:51:04.625546" elapsed="0.012248"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:04.623609" elapsed="0.014228"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:04.638013" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:04.637863" elapsed="0.000222"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:04.623591" elapsed="0.014520"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:04.645631" level="INFO">{"opendaylight-inventory:node-connector":[{"id":"openflow:1:1","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:maximum-speed":0,"flow-node-inventory:reason":"update","flow-node-inventory:configuration":"","flow-node-inventory:port-number":1,"flow-node-inventory:hardware-address":"c6:0c:45:fe:a3:df","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s1-eth1","flow-node-inventory:supported":"","flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"43","received":"42"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":74,"nanosecond":463000000},"bytes":{"transmitted":"3601","received":"3515"},"receive-crc-error":"0"}}]}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:04.640423" elapsed="0.005415"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:04.639902" elapsed="0.006015"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:04.639861" elapsed="0.006113"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:04.649755" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:04.646631" elapsed="0.003170"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:04.646100" elapsed="0.003734"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:04.646060" elapsed="0.003798"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:04.650427" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:04.650028" elapsed="0.000426"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:04.650758" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:04.650523" elapsed="0.000291"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:04.651324" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:04.650997" elapsed="0.000354"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:04.650837" elapsed="0.000549"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:04.650505" elapsed="0.000902"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:04.651925" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:04.651566" elapsed="0.000385"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:04.652273" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:04.652020" elapsed="0.000311"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:04.652806" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:04.652512" elapsed="0.000319"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:04.652354" elapsed="0.000512"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:04.652002" elapsed="0.000885"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:51:04.653037" elapsed="0.000362"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:51:04.653840" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:04.653562" elapsed="0.000304"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:51:04.654016" elapsed="0.002208"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:51:04.638909" elapsed="0.017378"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-08T00:51:04.656461" elapsed="0.000029"/>
</return>
<status status="PASS" start="2026-04-08T00:51:04.656355" elapsed="0.000170"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:04.656337" elapsed="0.000211"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:04.656693" elapsed="0.000021"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-08T00:51:04.656761" elapsed="0.000014"/>
</return>
<msg time="2026-04-08T00:51:04.658955" level="INFO">${response_text} = {"opendaylight-inventory:node-connector":[{"id":"openflow:1:1","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed"...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${access}</arg>
<arg>session=${session}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:51:04.616782" elapsed="0.042201"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:51:04.659034" elapsed="0.000027"/>
</return>
<msg time="2026-04-08T00:51:04.659227" level="INFO">${data} = {"opendaylight-inventory:node-connector":[{"id":"openflow:1:1","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed"...</msg>
<var>${data}</var>
<arg>uri=${uri}</arg>
<arg>member_index=${index}</arg>
<doc>Send a GET with the supplied uri to member ${member_index}.</doc>
<status status="PASS" start="2026-04-08T00:51:04.614983" elapsed="0.044273"/>
</kw>
<kw name="Check Item Occurrence" owner="Utils">
<for flavor="IN">
<iter>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T00:51:04.660437" level="INFO">Item found from container 0 times.</msg>
<arg>${string}</arg>
<arg>${item}</arg>
<arg>${dictionary_item_occurrence}[${item}]</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="PASS" start="2026-04-08T00:51:04.660041" elapsed="0.000466"/>
</kw>
<var name="${item}">"link-down":true</var>
<status status="PASS" start="2026-04-08T00:51:04.659887" elapsed="0.000659"/>
</iter>
<var>${item}</var>
<value>@{dictionary_item_occurrence}</value>
<status status="PASS" start="2026-04-08T00:51:04.659751" elapsed="0.000827"/>
</for>
<arg>${data}</arg>
<arg>${dictionary}</arg>
<doc>Check string for occurrences of items expressed in a list of dictionaries {item=occurrences}. 0 occurences means item is not present.</doc>
<status status="PASS" start="2026-04-08T00:51:04.659489" elapsed="0.001142"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T00:51:04.610799" elapsed="0.049900"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-08T00:51:04.513787" elapsed="0.146943"/>
</for>
<arg>uri=${operational_port_1}</arg>
<arg>dictionary=${dictionary}</arg>
<arg>member_index_list=${controller_index_list}</arg>
<doc>Send a GET with the supplied uri to all or some members defined in ${member_index_list}.
Then check received for occurrences of items expressed in a dictionary {'"link-down":true': '0'}.</doc>
<status status="PASS" start="2026-04-08T00:51:04.510467" elapsed="0.150319"/>
</kw>
<arg>5s</arg>
<arg>1s</arg>
<arg>ClusterManagement.Check_Item_Occurrence_Member_List_Or_All</arg>
<arg>uri=${operational_port_1}</arg>
<arg>dictionary=${dictionary}</arg>
<arg>member_index_list=${controller_index_list}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-08T00:51:03.401468" elapsed="1.259377"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-08T00:51:04.661409" level="INFO">${dictionary} = {'openflow:1': '21', 'openflow:2': '19', 'openflow:3': '19'}</msg>
<var>${dictionary}</var>
<arg>openflow:1=21</arg>
<arg>openflow:2=19</arg>
<arg>openflow:3=19</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-08T00:51:04.661040" elapsed="0.000395"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Check_Item_Occurrence_Member_List_Or_All" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:51:04.667666" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:51:04.667283" elapsed="0.000409"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:51:04.668173" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:51:04.667850" elapsed="0.000352"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:51:04.668247" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:51:04.668400" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:51:04.666885" elapsed="0.001540"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_From_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:04.673748" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:04.673451" elapsed="0.000324"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:51:04.673819" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:51:04.673964" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:51:04.673092" elapsed="0.000897"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:04.680216" level="INFO">/rests/data/network-topology:network-topology?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:04.679953" elapsed="0.000309"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:04.680656" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:04.680414" elapsed="0.000286"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:51:04.689151" level="INFO">GET Request : url=http://10.30.170.48:8181/rests/data/network-topology:network-topology?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01nfu2ssrokr1es5zgka78rw970.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:51:04.689434" level="INFO">GET Response : url=http://10.30.170.48:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '3149'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"},{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:3']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:1:1","dest-node":"openflow:1"}},{"link-id":"openflow:3:3","source":{"source-node":"openflow:3","source-tp":"openflow:3:3"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:1:1","source":{"source-node":"openflow:1","source-tp":"openflow:1:1"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:3:3","dest-node":"openflow:3"}}]}]}} 
 </msg>
<msg time="2026-04-08T00:51:04.689589" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:51:04.682714" elapsed="0.006903"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:04.680766" elapsed="0.008893"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:04.689836" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:04.689686" elapsed="0.000213"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:04.680748" elapsed="0.009173"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:04.693528" level="INFO">{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"},{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:3']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:1:1","dest-node":"openflow:1"}},{"link-id":"openflow:3:3","source":{"source-node":"openflow:3","source-tp":"openflow:3:3"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:1:1","source":{"source-node":"openflow:1","source-tp":"openflow:1:1"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:3:3","dest-node":"openflow:3"}}]}]}}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:04.690925" elapsed="0.002672"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:04.690697" elapsed="0.002935"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:04.690678" elapsed="0.002979"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:04.696232" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:04.693934" elapsed="0.002380"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:04.693713" elapsed="0.002669"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:04.693696" elapsed="0.002737"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:04.697255" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:04.696697" elapsed="0.000596"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:04.697723" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:04.697392" elapsed="0.000411"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:04.698566" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:04.698057" elapsed="0.000547"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:04.697835" elapsed="0.000819"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:04.697367" elapsed="0.001317"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:04.699457" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:04.698908" elapsed="0.000587"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:04.699944" elapsed="0.000032"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:04.699593" elapsed="0.000433"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:04.700769" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:04.700356" elapsed="0.000450"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:04.700065" elapsed="0.000789"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:04.699568" elapsed="0.001316"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:51:04.701090" elapsed="0.000504"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:51:04.702272" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:04.701866" elapsed="0.000443"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:51:04.702520" elapsed="0.003125"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:51:04.690277" elapsed="0.015456"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-08T00:51:04.705975" elapsed="0.000037"/>
</return>
<status status="PASS" start="2026-04-08T00:51:04.705828" elapsed="0.000231"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:04.705803" elapsed="0.000293"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:04.706322" elapsed="0.000031"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-08T00:51:04.706421" elapsed="0.000020"/>
</return>
<msg time="2026-04-08T00:51:04.709214" level="INFO">${response_text} = {"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='o...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${access}</arg>
<arg>session=${session}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:51:04.674329" elapsed="0.034915"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:51:04.709295" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:51:04.709445" level="INFO">${data} = {"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='o...</msg>
<var>${data}</var>
<arg>uri=${uri}</arg>
<arg>member_index=${index}</arg>
<doc>Send a GET with the supplied uri to member ${member_index}.</doc>
<status status="PASS" start="2026-04-08T00:51:04.672608" elapsed="0.036864"/>
</kw>
<kw name="Check Item Occurrence" owner="Utils">
<for flavor="IN">
<iter>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T00:51:04.710625" level="INFO">Item found from container 21 times.</msg>
<arg>${string}</arg>
<arg>${item}</arg>
<arg>${dictionary_item_occurrence}[${item}]</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="PASS" start="2026-04-08T00:51:04.710249" elapsed="0.000456"/>
</kw>
<var name="${item}">openflow:1</var>
<status status="PASS" start="2026-04-08T00:51:04.710081" elapsed="0.000663"/>
</iter>
<iter>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T00:51:04.711361" level="INFO">Item found from container 19 times.</msg>
<arg>${string}</arg>
<arg>${item}</arg>
<arg>${dictionary_item_occurrence}[${item}]</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="PASS" start="2026-04-08T00:51:04.710975" elapsed="0.000464"/>
</kw>
<var name="${item}">openflow:2</var>
<status status="PASS" start="2026-04-08T00:51:04.710823" elapsed="0.000655"/>
</iter>
<iter>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T00:51:04.712068" level="INFO">Item found from container 19 times.</msg>
<arg>${string}</arg>
<arg>${item}</arg>
<arg>${dictionary_item_occurrence}[${item}]</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="PASS" start="2026-04-08T00:51:04.711708" elapsed="0.000436"/>
</kw>
<var name="${item}">openflow:3</var>
<status status="PASS" start="2026-04-08T00:51:04.711556" elapsed="0.000642"/>
</iter>
<var>${item}</var>
<value>@{dictionary_item_occurrence}</value>
<status status="PASS" start="2026-04-08T00:51:04.709953" elapsed="0.002274"/>
</for>
<arg>${data}</arg>
<arg>${dictionary}</arg>
<doc>Check string for occurrences of items expressed in a list of dictionaries {item=occurrences}. 0 occurences means item is not present.</doc>
<status status="PASS" start="2026-04-08T00:51:04.709695" elapsed="0.002585"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T00:51:04.668602" elapsed="0.043712"/>
</iter>
<iter>
<kw name="Get_From_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:04.717523" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:04.717227" elapsed="0.000322"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:51:04.717593" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:51:04.717738" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:51:04.716871" elapsed="0.000890"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:04.724229" level="INFO">/rests/data/network-topology:network-topology?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:04.723965" elapsed="0.000310"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:04.724713" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:04.724427" elapsed="0.000329"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:51:04.738489" level="INFO">GET Request : url=http://10.30.170.131:8181/rests/data/network-topology:network-topology?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0evogeryo91251obsb096nsda10.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:51:04.738967" level="INFO">GET Response : url=http://10.30.170.131:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '3149'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"},{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:3']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:1:1","dest-node":"openflow:1"}},{"link-id":"openflow:3:3","source":{"source-node":"openflow:3","source-tp":"openflow:3:3"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:1:1","source":{"source-node":"openflow:1","source-tp":"openflow:1:1"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:3:3","dest-node":"openflow:3"}}]}]}} 
 </msg>
<msg time="2026-04-08T00:51:04.739356" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:51:04.726746" elapsed="0.012670"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:04.724825" elapsed="0.014686"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:04.739907" elapsed="0.000058"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:04.739570" elapsed="0.000489"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:04.724806" elapsed="0.015302"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:04.747899" level="INFO">{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"},{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:3']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:1:1","dest-node":"openflow:1"}},{"link-id":"openflow:3:3","source":{"source-node":"openflow:3","source-tp":"openflow:3:3"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:1:1","source":{"source-node":"openflow:1","source-tp":"openflow:1:1"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:3:3","dest-node":"openflow:3"}}]}]}}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:04.742368" elapsed="0.005683"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:04.741850" elapsed="0.006248"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:04.741810" elapsed="0.006315"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:04.750575" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:04.748420" elapsed="0.002200"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:04.748196" elapsed="0.002459"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:04.748178" elapsed="0.002501"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:04.751253" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:04.750840" elapsed="0.000441"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:04.751589" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:04.751352" elapsed="0.000294"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:04.752125" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:04.751827" elapsed="0.000323"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:04.751669" elapsed="0.000534"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:04.751334" elapsed="0.000891"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:04.752738" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:04.752382" elapsed="0.000382"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:04.753061" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:04.752831" elapsed="0.000286"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:04.753607" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:04.753315" elapsed="0.000317"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:04.753141" elapsed="0.000526"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:04.752814" elapsed="0.000874"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:51:04.753836" elapsed="0.000359"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:51:04.754658" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:04.754389" elapsed="0.000294"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:51:04.754835" elapsed="0.002186"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:51:04.740892" elapsed="0.016191"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-08T00:51:04.757277" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-08T00:51:04.757170" elapsed="0.000167"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:04.757138" elapsed="0.000223"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:04.757505" elapsed="0.000021"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-08T00:51:04.757574" elapsed="0.000014"/>
</return>
<msg time="2026-04-08T00:51:04.759857" level="INFO">${response_text} = {"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='o...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${access}</arg>
<arg>session=${session}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:51:04.718077" elapsed="0.041808"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:51:04.759936" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:51:04.760084" level="INFO">${data} = {"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='o...</msg>
<var>${data}</var>
<arg>uri=${uri}</arg>
<arg>member_index=${index}</arg>
<doc>Send a GET with the supplied uri to member ${member_index}.</doc>
<status status="PASS" start="2026-04-08T00:51:04.716390" elapsed="0.043719"/>
</kw>
<kw name="Check Item Occurrence" owner="Utils">
<for flavor="IN">
<iter>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T00:51:04.761276" level="INFO">Item found from container 21 times.</msg>
<arg>${string}</arg>
<arg>${item}</arg>
<arg>${dictionary_item_occurrence}[${item}]</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="PASS" start="2026-04-08T00:51:04.760890" elapsed="0.000466"/>
</kw>
<var name="${item}">openflow:1</var>
<status status="PASS" start="2026-04-08T00:51:04.760739" elapsed="0.000657"/>
</iter>
<iter>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T00:51:04.761989" level="INFO">Item found from container 19 times.</msg>
<arg>${string}</arg>
<arg>${item}</arg>
<arg>${dictionary_item_occurrence}[${item}]</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="PASS" start="2026-04-08T00:51:04.761628" elapsed="0.000437"/>
</kw>
<var name="${item}">openflow:2</var>
<status status="PASS" start="2026-04-08T00:51:04.761474" elapsed="0.000630"/>
</iter>
<iter>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T00:51:04.762707" level="INFO">Item found from container 19 times.</msg>
<arg>${string}</arg>
<arg>${item}</arg>
<arg>${dictionary_item_occurrence}[${item}]</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="PASS" start="2026-04-08T00:51:04.762349" elapsed="0.000435"/>
</kw>
<var name="${item}">openflow:3</var>
<status status="PASS" start="2026-04-08T00:51:04.762197" elapsed="0.000626"/>
</iter>
<var>${item}</var>
<value>@{dictionary_item_occurrence}</value>
<status status="PASS" start="2026-04-08T00:51:04.760611" elapsed="0.002240"/>
</for>
<arg>${data}</arg>
<arg>${dictionary}</arg>
<doc>Check string for occurrences of items expressed in a list of dictionaries {item=occurrences}. 0 occurences means item is not present.</doc>
<status status="PASS" start="2026-04-08T00:51:04.760353" elapsed="0.002550"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T00:51:04.712398" elapsed="0.050538"/>
</iter>
<iter>
<kw name="Get_From_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:04.768358" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:04.768043" elapsed="0.000342"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:51:04.768430" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:51:04.768576" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:51:04.767704" elapsed="0.000897"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:04.774785" level="INFO">/rests/data/network-topology:network-topology?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:04.774540" elapsed="0.000290"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:04.775248" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:04.774980" elapsed="0.000311"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:51:04.789745" level="INFO">GET Request : url=http://10.30.171.110:8181/rests/data/network-topology:network-topology?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node09orwbuy1e81xg3wze7ww55ua0.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:51:04.790305" level="INFO">GET Response : url=http://10.30.171.110:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '3149'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"},{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:3']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:1:1","dest-node":"openflow:1"}},{"link-id":"openflow:3:3","source":{"source-node":"openflow:3","source-tp":"openflow:3:3"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:1:1","source":{"source-node":"openflow:1","source-tp":"openflow:1:1"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:3:3","dest-node":"openflow:3"}}]}]}} 
 </msg>
<msg time="2026-04-08T00:51:04.790681" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:51:04.777269" elapsed="0.013476"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:04.775357" elapsed="0.015492"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:04.791361" elapsed="0.000057"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:04.790913" elapsed="0.000609"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:04.775339" elapsed="0.016235"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:04.799925" level="INFO">{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"},{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:3']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:1:1","dest-node":"openflow:1"}},{"link-id":"openflow:3:3","source":{"source-node":"openflow:3","source-tp":"openflow:3:3"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:1:1","source":{"source-node":"openflow:1","source-tp":"openflow:1:1"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:3:3","dest-node":"openflow:3"}}]}]}}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:04.794004" elapsed="0.006093"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:04.793477" elapsed="0.006761"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:04.793432" elapsed="0.006842"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:04.802827" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:04.800557" elapsed="0.002317"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:04.800336" elapsed="0.002572"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:04.800319" elapsed="0.002613"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:04.803551" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:04.803125" elapsed="0.000454"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:04.803888" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:04.803651" elapsed="0.000293"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:04.804443" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:04.804124" elapsed="0.000345"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:04.803967" elapsed="0.000536"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:04.803631" elapsed="0.000894"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:04.805055" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:04.804688" elapsed="0.000393"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:04.805400" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:04.805149" elapsed="0.000306"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:04.805924" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:04.805635" elapsed="0.000315"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:04.805478" elapsed="0.000506"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:04.805132" elapsed="0.000873"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:51:04.806151" elapsed="0.000355"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:51:04.806970" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:04.806701" elapsed="0.000295"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:51:04.807176" elapsed="0.002465"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:51:04.792429" elapsed="0.017275"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-08T00:51:04.809877" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-08T00:51:04.809773" elapsed="0.000164"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:04.809755" elapsed="0.000206"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:04.810128" elapsed="0.000022"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-08T00:51:04.810217" elapsed="0.000016"/>
</return>
<msg time="2026-04-08T00:51:04.812561" level="INFO">${response_text} = {"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='o...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${access}</arg>
<arg>session=${session}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:51:04.768915" elapsed="0.043675"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:51:04.812640" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:51:04.812789" level="INFO">${data} = {"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='o...</msg>
<var>${data}</var>
<arg>uri=${uri}</arg>
<arg>member_index=${index}</arg>
<doc>Send a GET with the supplied uri to member ${member_index}.</doc>
<status status="PASS" start="2026-04-08T00:51:04.767219" elapsed="0.045596"/>
</kw>
<kw name="Check Item Occurrence" owner="Utils">
<for flavor="IN">
<iter>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T00:51:04.814000" level="INFO">Item found from container 21 times.</msg>
<arg>${string}</arg>
<arg>${item}</arg>
<arg>${dictionary_item_occurrence}[${item}]</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="PASS" start="2026-04-08T00:51:04.813629" elapsed="0.000457"/>
</kw>
<var name="${item}">openflow:1</var>
<status status="PASS" start="2026-04-08T00:51:04.813475" elapsed="0.000651"/>
</iter>
<iter>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T00:51:04.814734" level="INFO">Item found from container 19 times.</msg>
<arg>${string}</arg>
<arg>${item}</arg>
<arg>${dictionary_item_occurrence}[${item}]</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="PASS" start="2026-04-08T00:51:04.814374" elapsed="0.000439"/>
</kw>
<var name="${item}">openflow:2</var>
<status status="PASS" start="2026-04-08T00:51:04.814221" elapsed="0.000631"/>
</iter>
<iter>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T00:51:04.815470" level="INFO">Item found from container 19 times.</msg>
<arg>${string}</arg>
<arg>${item}</arg>
<arg>${dictionary_item_occurrence}[${item}]</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="PASS" start="2026-04-08T00:51:04.815079" elapsed="0.000468"/>
</kw>
<var name="${item}">openflow:3</var>
<status status="PASS" start="2026-04-08T00:51:04.814929" elapsed="0.000656"/>
</iter>
<var>${item}</var>
<value>@{dictionary_item_occurrence}</value>
<status status="PASS" start="2026-04-08T00:51:04.813339" elapsed="0.002275"/>
</for>
<arg>${data}</arg>
<arg>${dictionary}</arg>
<doc>Check string for occurrences of items expressed in a list of dictionaries {item=occurrences}. 0 occurences means item is not present.</doc>
<status status="PASS" start="2026-04-08T00:51:04.813058" elapsed="0.002609"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T00:51:04.763021" elapsed="0.052679"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-08T00:51:04.668473" elapsed="0.147255"/>
</for>
<arg>uri=${RFC8040_OPERATIONAL_TOPO_API}</arg>
<arg>dictionary=${dictionary}</arg>
<arg>member_index_list=${controller_index_list}</arg>
<doc>Send a GET with the supplied uri to all or some members defined in ${member_index_list}.
Then check received for occurrences of items expressed in a dictionary {'openflow:1': '21', 'openflow:2': '19', 'openflow:3': '19'}.</doc>
<status status="PASS" start="2026-04-08T00:51:04.666323" elapsed="0.149454"/>
</kw>
<arg>10s</arg>
<arg>1s</arg>
<arg>ClusterManagement.Check_Item_Occurrence_Member_List_Or_All</arg>
<arg>uri=${RFC8040_OPERATIONAL_TOPO_API}</arg>
<arg>dictionary=${dictionary}</arg>
<arg>member_index_list=${controller_index_list}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-08T00:51:04.661626" elapsed="0.154204"/>
</kw>
<doc>Take the link up and verify port status in all instances in ${controller_index_list}.</doc>
<status status="PASS" start="2026-04-08T00:51:03.384375" elapsed="1.431521"/>
</kw>
<doc>Take the link up and verify port status in all instances.</doc>
<status status="PASS" start="2026-04-08T00:51:03.380083" elapsed="1.435933"/>
</test>
<test id="s1-s1-t50" name="Stop Mininet and Exit" line="243">
<kw name="Stop Mininet And Exit" owner="MininetKeywords">
<if>
<branch type="IF" condition="&quot;&quot;&quot;${mininet_conn}&quot;&quot;&quot; != &quot;&quot;">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${mininet_conn}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:51:04.821138" elapsed="0.000163"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:04.820916" elapsed="0.000421"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:04.820899" elapsed="0.000463"/>
</if>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T00:51:04.824405" level="INFO">exit</msg>
<arg>exit</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T00:51:04.821501" elapsed="0.002961"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-08T00:51:05.110868" level="INFO">*** Stopping 0 controllers

*** Stopping 6 links
......
*** Stopping 3 switches
s1 s2 s3 
*** Stopping 4 hosts
h1 h2 h3 h4 
*** Done
completed in 75.433 seconds
[?2004h[jenkins@releng-11369-169-1-mininet-ovs-217-0 ~]&gt;</msg>
<arg>${TOOLS_SYSTEM_PROMPT}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-08T00:51:04.824620" elapsed="0.286448"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:51:05.111464" elapsed="0.000232"/>
</kw>
<arg>${mininet_conn_id}</arg>
<doc>Stops Mininet and exits session ${mininet_conn}</doc>
<status status="PASS" start="2026-04-08T00:51:04.820656" elapsed="0.291106"/>
</kw>
<kw name="Clean Mininet System" owner="Utils">
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:05.114497" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:05.114173" elapsed="0.000380"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:05.114133" elapsed="0.000448"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:51:05.114889" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T00:51:05.114733" elapsed="0.000313"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:05.115597" level="INFO">Attempting to execute command "sudo mn -c" on remote system "10.30.170.192" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:05.115212" elapsed="0.000430"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:51:05.116185" level="INFO">${conn_id} = 33</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:51:05.115798" elapsed="0.000414"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T00:51:05.117098" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T00:51:05.117191" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T00:51:05.116816" elapsed="0.000400"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:51:05.117516" elapsed="0.000318"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T00:51:05.118937" level="INFO">Logging into '10.30.170.192:22' as 'jenkins'.</msg>
<msg time="2026-04-08T00:51:05.725430" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 00:51:05 UTC 2026

  System load:  0.01               Processes:             111
  Usage of /:   19.5% of 38.58GB   Users logged in:       0
  Memory usage: 5%                 IPv4 address for ens3: 10.30.170.192
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 00:49:55 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-1-mininet-ovs-217-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T00:51:05.118595" elapsed="0.606980"/>
</kw>
<msg time="2026-04-08T00:51:05.725669" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:51:05.117999" elapsed="0.607755"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T00:51:05.116427" elapsed="0.609438"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T00:51:05.726405" level="INFO">Executing command 'sudo mn -c'.</msg>
<msg time="2026-04-08T00:51:06.874779" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-08T00:51:06.875242" level="INFO">${stdout} = </msg>
<msg time="2026-04-08T00:51:06.875352" level="INFO">${stderr} = *** Removing excess controllers/ofprotocols/ofdatapaths/pings/noxes
killall controller ofprotocol ofdatapath ping nox_corelt-nox_core ovs-openflowd ovs-controllerovs-testcontroller udpbwtest mnexec iv...</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T00:51:05.726119" elapsed="1.149292"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:51:06.875925" elapsed="0.000678"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:06.877748" level="INFO">*** Removing excess controllers/ofprotocols/ofdatapaths/pings/noxes
killall controller ofprotocol ofdatapath ping nox_corelt-nox_core ovs-openflowd ovs-controllerovs-testcontroller udpbwtest mnexec ivs ryu-manager 2&gt; /dev/null
killall -9 controller ofprotocol ofdatapath ping nox_corelt-nox_core ovs-openflowd ovs-controllerovs-testcontroller udpbwtest mnexec ivs ryu-manager 2&gt; /dev/null
pkill -9 -f "sudo mnexec"
*** Removing junk from /tmp
rm -f /tmp/vconn* /tmp/vlogs* /tmp/*.out /tmp/*.log
*** Removing old X11 tunnels
*** Removing excess kernel datapaths
ps ax | egrep -o 'dp[0-9]+' | sed 's/dp/nl:/'
***  Removing OVS datapaths
ovs-vsctl --timeout=1 list-br
ovs-vsctl --timeout=1 list-br
*** Removing all links of the pattern foo-ethX
ip link show | egrep -o '([-_.[:alnum:]]+-eth[[:digit:]]+)'
ip link show
*** Killing stale mininet node processes
pkill -9 -f mininet:
*** Shutting down stale tunnels
pkill -9 -f Tunnel=Ethernet
pkill -9 -f .ssh/mn
rm -f ~/.ssh/mn/*
*** Cleanup complete.</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:06.877048" elapsed="0.000846"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:51:06.878546" elapsed="0.000042"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:51:06.878081" elapsed="0.000586"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:06.878027" elapsed="0.000692"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T00:51:06.879082" elapsed="0.000071"/>
</return>
<status status="PASS" start="2026-04-08T00:51:06.878840" elapsed="0.000424"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:06.878806" elapsed="0.000512"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:51:06.879396" elapsed="0.000031"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:51:06.885379" elapsed="0.000837"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:51:06.886465" elapsed="0.000172"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:51:06.886784" elapsed="0.000095"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:51:06.880110" elapsed="0.006824"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T00:51:05.113611" elapsed="1.773418"/>
</kw>
<msg time="2026-04-08T00:51:06.887228" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:51:05.112959" elapsed="1.774330"/>
</kw>
<arg>${system}</arg>
<arg>sudo mn -c</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-08T00:51:05.112453" elapsed="1.774922"/>
</kw>
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:06.889481" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:06.889197" elapsed="0.000340"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:06.889177" elapsed="0.000383"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:51:06.889867" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T00:51:06.889711" elapsed="0.000290"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:06.890550" level="INFO">Attempting to execute command "sudo ps -elf | egrep 'usr/local/bin/mn' | egrep python | awk '{print "sudo kill -9",$4}' | sh" on remote system "10.30.170.192" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:06.890152" elapsed="0.000445"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:51:06.891120" level="INFO">${conn_id} = 35</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:51:06.890752" elapsed="0.000393"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T00:51:06.892284" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T00:51:06.892361" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T00:51:06.891766" elapsed="0.000619"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:51:06.892543" elapsed="0.000322"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T00:51:06.893731" level="INFO">Logging into '10.30.170.192:22' as 'jenkins'.</msg>
<msg time="2026-04-08T00:51:07.222728" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 00:51:05 UTC 2026

  System load:  0.01               Processes:             111
  Usage of /:   19.5% of 38.58GB   Users logged in:       0
  Memory usage: 5%                 IPv4 address for ens3: 10.30.170.192
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 00:51:05 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-1-mininet-ovs-217-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T00:51:06.893413" elapsed="0.329492"/>
</kw>
<msg time="2026-04-08T00:51:07.222994" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:51:06.893033" elapsed="0.330168"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T00:51:06.891377" elapsed="0.331963"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T00:51:07.223896" level="INFO">Executing command 'sudo ps -elf | egrep 'usr/local/bin/mn' | egrep python | awk '{print "sudo kill -9",$4}' | sh'.</msg>
<msg time="2026-04-08T00:51:07.256841" level="INFO">Command exited with return code -1.</msg>
<msg time="2026-04-08T00:51:07.257103" level="INFO">${stdout} = </msg>
<msg time="2026-04-08T00:51:07.257277" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T00:51:07.223616" elapsed="0.033727"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:51:07.257749" elapsed="0.000571"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:07.259450" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:07.258784" elapsed="0.000760"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:51:07.260017" elapsed="0.000035"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:51:07.259722" elapsed="0.000401"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:07.259670" elapsed="0.000542"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T00:51:07.260573" elapsed="0.000058"/>
</return>
<status status="PASS" start="2026-04-08T00:51:07.260336" elapsed="0.000369"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:07.260302" elapsed="0.000455"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:51:07.260831" elapsed="0.000031"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:51:07.266874" elapsed="0.000366"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:51:07.267408" elapsed="0.000182"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:51:07.267757" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:51:07.261555" elapsed="0.006359"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T00:51:06.888655" elapsed="0.379351"/>
</kw>
<msg time="2026-04-08T00:51:07.268060" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:51:06.888063" elapsed="0.380047"/>
</kw>
<arg>${system}</arg>
<arg>sudo ps -elf | egrep 'usr/local/bin/mn' | egrep python | awk '{print "sudo kill -9",$4}' | sh</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-08T00:51:06.887553" elapsed="0.380657"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:05.112018" elapsed="2.156258"/>
</kw>
<doc>Stop mininet and exit connection.</doc>
<status status="PASS" start="2026-04-08T00:51:04.816348" elapsed="2.452040"/>
</test>
<test id="s1-s1-t51" name="Check No Network Operational Information" line="248">
<kw name="Check No OpenFlow Network Operational Information" owner="ClusterOpenFlow">
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-08T00:51:07.275488" level="INFO">${dictionary} = {'openflow': '0'}</msg>
<var>${dictionary}</var>
<arg>openflow=0</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-08T00:51:07.275137" elapsed="0.000379"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Check_No_Content_Member_List_Or_All" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:51:07.283413" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:51:07.282989" elapsed="0.000452"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:51:07.283912" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:51:07.283603" elapsed="0.000334"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:51:07.283982" elapsed="0.000031"/>
</return>
<msg time="2026-04-08T00:51:07.284139" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:51:07.282617" elapsed="0.001564"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:07.285210" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:07.284896" elapsed="0.000341"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:51:07.285281" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:51:07.285428" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:51:07.284555" elapsed="0.000898"/>
</kw>
<kw name="No Content From URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:51:07.300026" level="INFO">GET Request : url=http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01nfu2ssrokr1es5zgka78rw970.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:51:07.300547" level="INFO">GET Response : url=http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 status=409, reason=Conflict 
 headers={'Content-Type': 'application/yang-data+json', 'Content-Length': '242'} 
 body={
  "errors": {
    "error": [
      {
        "error-tag": "data-missing",
        "error-message": "Request could not be completed because the relevant data model content does not exist",
        "error-type": "protocol"
      }
    ]
  }
} 
 </msg>
<msg time="2026-04-08T00:51:07.300800" level="INFO">${resp} = &lt;Response [409]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${headers}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:51:07.286293" elapsed="0.014565"/>
</kw>
<if>
<branch type="IF" condition="${resp.status_code} == 404 or ${resp.status_code} == 409">
<return>
<status status="PASS" start="2026-04-08T00:51:07.310741" elapsed="0.000031"/>
</return>
<status status="PASS" start="2026-04-08T00:51:07.301044" elapsed="0.009761"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:07.300997" elapsed="0.009833"/>
</if>
<kw name="Log" owner="BuiltIn">
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:07.310990" elapsed="0.000022"/>
</kw>
<kw name="Fail" owner="BuiltIn">
<arg>The request failed with code ${resp.status_code}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:07.311178" elapsed="0.000022"/>
</kw>
<arg>${session}</arg>
<arg>${uri}</arg>
<doc>Issue a Get On Session and return on error 404 (No content) or will fail and log the content.
Issues a Get On Session for /rests/data/opendaylight-inventory:nodes?content=nonconfig in ClusterManagement__session_1 using headers from
{'Content-Type': 'application/json'}. If the request returns a HTTP error, fails. Otherwise
returns the data obtained by the request.</doc>
<status status="PASS" start="2026-04-08T00:51:07.285874" elapsed="0.025386"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T00:51:07.284390" elapsed="0.026907"/>
</iter>
<iter>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:07.312255" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:07.311917" elapsed="0.000367"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:51:07.312329" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:51:07.312475" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>member_index=${index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:51:07.311569" elapsed="0.000931"/>
</kw>
<kw name="No Content From URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:51:07.327356" level="INFO">GET Request : url=http://10.30.170.131:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0evogeryo91251obsb096nsda10.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:51:07.327605" level="INFO">GET Response : url=http://10.30.170.131:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 status=409, reason=Conflict 
 headers={'Content-Type': 'application/yang-data+json', 'Content-Length': '242'} 
 body={
  "errors": {
    "error": [
      {
        "error-tag": "data-missing",
        "error-message": "Request could not be completed because the relevant data model content does not exist",
        "error-type": "protocol"
      }
    ]
  }
} 
 </msg>
<msg time="2026-04-08T00:51:07.327811" level="INFO">${resp} = &lt;Response [409]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${headers}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:51:07.313263" elapsed="0.014605"/>
</kw>
<if>
<branch type="IF" condition="${resp.status_code} == 404 or ${resp.status_code} == 409">
<return>
<status status="PASS" start="2026-04-08T00:51:07.338208" elapsed="0.000038"/>
</return>
<status status="PASS" start="2026-04-08T00:51:07.328093" elapsed="0.010187"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:07.328038" elapsed="0.010267"/>
</if>
<kw name="Log" owner="BuiltIn">
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:07.338456" elapsed="0.000023"/>
</kw>
<kw name="Fail" owner="BuiltIn">
<arg>The request failed with code ${resp.status_code}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:07.338620" elapsed="0.000019"/>
</kw>
<arg>${session}</arg>
<arg>${uri}</arg>
<doc>Issue a Get On Session and return on error 404 (No content) or will fail and log the content.
Issues a Get On Session for /rests/data/opendaylight-inventory:nodes?content=nonconfig in ClusterManagement__session_2 using headers from
{'Content-Type': 'application/json'}. If the request returns a HTTP error, fails. Otherwise
returns the data obtained by the request.</doc>
<status status="PASS" start="2026-04-08T00:51:07.312848" elapsed="0.025849"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T00:51:07.311395" elapsed="0.027337"/>
</iter>
<iter>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:07.339695" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:07.339388" elapsed="0.000334"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:51:07.339768" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:51:07.339916" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>member_index=${index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:51:07.338987" elapsed="0.000953"/>
</kw>
<kw name="No Content From URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:51:07.355883" level="INFO">GET Request : url=http://10.30.171.110:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node09orwbuy1e81xg3wze7ww55ua0.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:51:07.356106" level="INFO">GET Response : url=http://10.30.171.110:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 status=409, reason=Conflict 
 headers={'Content-Type': 'application/yang-data+json', 'Content-Length': '242'} 
 body={
  "errors": {
    "error": [
      {
        "error-tag": "data-missing",
        "error-message": "Request could not be completed because the relevant data model content does not exist",
        "error-type": "protocol"
      }
    ]
  }
} 
 </msg>
<msg time="2026-04-08T00:51:07.356325" level="INFO">${resp} = &lt;Response [409]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${headers}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:51:07.340728" elapsed="0.015656"/>
</kw>
<if>
<branch type="IF" condition="${resp.status_code} == 404 or ${resp.status_code} == 409">
<return>
<status status="PASS" start="2026-04-08T00:51:07.366022" elapsed="0.000064"/>
</return>
<status status="PASS" start="2026-04-08T00:51:07.356606" elapsed="0.009581"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:07.356551" elapsed="0.009677"/>
</if>
<kw name="Log" owner="BuiltIn">
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:07.366379" elapsed="0.000023"/>
</kw>
<kw name="Fail" owner="BuiltIn">
<arg>The request failed with code ${resp.status_code}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:07.366546" elapsed="0.000020"/>
</kw>
<arg>${session}</arg>
<arg>${uri}</arg>
<doc>Issue a Get On Session and return on error 404 (No content) or will fail and log the content.
Issues a Get On Session for /rests/data/opendaylight-inventory:nodes?content=nonconfig in ClusterManagement__session_3 using headers from
{'Content-Type': 'application/json'}. If the request returns a HTTP error, fails. Otherwise
returns the data obtained by the request.</doc>
<status status="PASS" start="2026-04-08T00:51:07.340311" elapsed="0.026313"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T00:51:07.338822" elapsed="0.027837"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-08T00:51:07.284241" elapsed="0.082448"/>
</for>
<arg>uri=${RFC8040_OPERATIONAL_NODES_API}</arg>
<arg>member_index_list=${controller_index_list}</arg>
<doc>Send a GET with the supplied uri to all or some members defined in ${member_index_list}.
Then check there is no content.</doc>
<status status="PASS" start="2026-04-08T00:51:07.282085" elapsed="0.084667"/>
</kw>
<arg>5s</arg>
<arg>1s</arg>
<arg>ClusterManagement.Check_No_Content_Member_List_Or_All</arg>
<arg>uri=${RFC8040_OPERATIONAL_NODES_API}</arg>
<arg>member_index_list=${controller_index_list}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-08T00:51:07.275704" elapsed="0.091111"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-08T00:51:07.367356" level="INFO">${dictionary} = {'openflow': '0'}</msg>
<var>${dictionary}</var>
<arg>openflow=0</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-08T00:51:07.367016" elapsed="0.000367"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Check_Item_Occurrence_Member_List_Or_All" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:51:07.373561" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:51:07.373173" elapsed="0.000431"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:51:07.374122" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:51:07.373767" elapsed="0.000382"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:51:07.374213" elapsed="0.000031"/>
</return>
<msg time="2026-04-08T00:51:07.374370" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:51:07.372761" elapsed="0.001633"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_From_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:07.380144" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:07.379840" elapsed="0.000349"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:51:07.380235" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:51:07.380387" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:51:07.379490" elapsed="0.000929"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:07.387075" level="INFO">/rests/data/network-topology:network-topology?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:07.386815" elapsed="0.000317"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:07.387562" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:07.387310" elapsed="0.000295"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:51:07.396714" level="INFO">GET Request : url=http://10.30.170.48:8181/rests/data/network-topology:network-topology?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01nfu2ssrokr1es5zgka78rw970.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:51:07.396909" level="INFO">GET Response : url=http://10.30.170.48:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '77'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"}]}} 
 </msg>
<msg time="2026-04-08T00:51:07.397015" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:51:07.389674" elapsed="0.007367"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:07.387675" elapsed="0.009409"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:07.397344" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:07.397185" elapsed="0.000235"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:07.387656" elapsed="0.009795"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:07.402339" level="INFO">{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"}]}}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:07.398672" elapsed="0.003736"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:07.398360" elapsed="0.004096"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:07.398332" elapsed="0.004159"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:07.405983" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:07.402886" elapsed="0.003163"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:07.402571" elapsed="0.003527"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:07.402546" elapsed="0.003586"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:07.407027" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:07.406425" elapsed="0.000645"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:07.407538" elapsed="0.000033"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:07.407194" elapsed="0.000446"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:07.408418" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:07.407915" elapsed="0.000541"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:07.407681" elapsed="0.000824"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:07.407142" elapsed="0.001393"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:07.409372" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:07.408821" elapsed="0.000589"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:07.409919" elapsed="0.000044"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:07.409510" elapsed="0.000519"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:07.410613" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:07.410311" elapsed="0.000328"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:07.410079" elapsed="0.000595"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:07.409485" elapsed="0.001210"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:51:07.410849" elapsed="0.000385"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:51:07.411712" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:07.411404" elapsed="0.000334"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:51:07.411894" elapsed="0.002326"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:51:07.397847" elapsed="0.016437"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-08T00:51:07.414464" elapsed="0.000031"/>
</return>
<status status="PASS" start="2026-04-08T00:51:07.414354" elapsed="0.000177"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:07.414335" elapsed="0.000219"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:07.414704" elapsed="0.000022"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-08T00:51:07.414773" elapsed="0.000014"/>
</return>
<msg time="2026-04-08T00:51:07.416951" level="INFO">${response_text} = {"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"}]}}</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${access}</arg>
<arg>session=${session}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:51:07.380776" elapsed="0.036209"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:51:07.417038" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:51:07.417211" level="INFO">${data} = {"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"}]}}</msg>
<var>${data}</var>
<arg>uri=${uri}</arg>
<arg>member_index=${index}</arg>
<doc>Send a GET with the supplied uri to member ${member_index}.</doc>
<status status="PASS" start="2026-04-08T00:51:07.378920" elapsed="0.038317"/>
</kw>
<kw name="Check Item Occurrence" owner="Utils">
<for flavor="IN">
<iter>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T00:51:07.418509" level="INFO">Item found from container 0 times.</msg>
<arg>${string}</arg>
<arg>${item}</arg>
<arg>${dictionary_item_occurrence}[${item}]</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="PASS" start="2026-04-08T00:51:07.418081" elapsed="0.000499"/>
</kw>
<var name="${item}">openflow</var>
<status status="PASS" start="2026-04-08T00:51:07.417893" elapsed="0.000779"/>
</iter>
<var>${item}</var>
<value>@{dictionary_item_occurrence}</value>
<status status="PASS" start="2026-04-08T00:51:07.417755" elapsed="0.000953"/>
</for>
<arg>${data}</arg>
<arg>${dictionary}</arg>
<doc>Check string for occurrences of items expressed in a list of dictionaries {item=occurrences}. 0 occurences means item is not present.</doc>
<status status="PASS" start="2026-04-08T00:51:07.417473" elapsed="0.001292"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T00:51:07.374585" elapsed="0.044214"/>
</iter>
<iter>
<kw name="Get_From_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:07.424583" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:07.424284" elapsed="0.000325"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:51:07.424655" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:51:07.424803" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:51:07.423927" elapsed="0.000901"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:07.431191" level="INFO">/rests/data/network-topology:network-topology?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:07.430918" elapsed="0.000322"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:07.431637" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:07.431393" elapsed="0.000288"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:51:07.444290" level="INFO">GET Request : url=http://10.30.170.131:8181/rests/data/network-topology:network-topology?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0evogeryo91251obsb096nsda10.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:51:07.444525" level="INFO">GET Response : url=http://10.30.170.131:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '77'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"}]}} 
 </msg>
<msg time="2026-04-08T00:51:07.444732" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:51:07.433724" elapsed="0.011064"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:07.431749" elapsed="0.013134"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:07.445314" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:07.444940" elapsed="0.000521"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:07.431730" elapsed="0.013778"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:07.453246" level="INFO">{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"}]}}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:07.447790" elapsed="0.005514"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:07.447299" elapsed="0.006046"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:07.447257" elapsed="0.006121"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:07.455868" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:07.453681" elapsed="0.002233"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:07.453436" elapsed="0.002513"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:07.453419" elapsed="0.002553"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:07.456554" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:07.456137" elapsed="0.000451"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:07.456921" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:07.456662" elapsed="0.000320"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:07.457491" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:07.457184" elapsed="0.000346"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:07.457006" elapsed="0.000563"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:07.456643" elapsed="0.000948"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:07.458113" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:07.457750" elapsed="0.000390"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:07.458463" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:07.458226" elapsed="0.000296"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:07.459004" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:07.458705" elapsed="0.000325"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:07.458545" elapsed="0.000520"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:07.458208" elapsed="0.000918"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:51:07.459296" elapsed="0.000348"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:51:07.460112" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:07.459808" elapsed="0.000332"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:51:07.460329" elapsed="0.002588"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:51:07.446340" elapsed="0.016646"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-08T00:51:07.463185" elapsed="0.000030"/>
</return>
<status status="PASS" start="2026-04-08T00:51:07.463059" elapsed="0.000189"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:07.463039" elapsed="0.000233"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:07.463419" elapsed="0.000021"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-08T00:51:07.463488" elapsed="0.000014"/>
</return>
<msg time="2026-04-08T00:51:07.465664" level="INFO">${response_text} = {"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"}]}}</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${access}</arg>
<arg>session=${session}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:51:07.425173" elapsed="0.040522"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:51:07.465747" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:51:07.465897" level="INFO">${data} = {"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"}]}}</msg>
<var>${data}</var>
<arg>uri=${uri}</arg>
<arg>member_index=${index}</arg>
<doc>Send a GET with the supplied uri to member ${member_index}.</doc>
<status status="PASS" start="2026-04-08T00:51:07.423433" elapsed="0.042490"/>
</kw>
<kw name="Check Item Occurrence" owner="Utils">
<for flavor="IN">
<iter>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T00:51:07.467118" level="INFO">Item found from container 0 times.</msg>
<arg>${string}</arg>
<arg>${item}</arg>
<arg>${dictionary_item_occurrence}[${item}]</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="PASS" start="2026-04-08T00:51:07.466731" elapsed="0.000471"/>
</kw>
<var name="${item}">openflow</var>
<status status="PASS" start="2026-04-08T00:51:07.466571" elapsed="0.000671"/>
</iter>
<var>${item}</var>
<value>@{dictionary_item_occurrence}</value>
<status status="PASS" start="2026-04-08T00:51:07.466436" elapsed="0.000836"/>
</for>
<arg>${data}</arg>
<arg>${dictionary}</arg>
<doc>Check string for occurrences of items expressed in a list of dictionaries {item=occurrences}. 0 occurences means item is not present.</doc>
<status status="PASS" start="2026-04-08T00:51:07.466169" elapsed="0.001156"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T00:51:07.418889" elapsed="0.048471"/>
</iter>
<iter>
<kw name="Get_From_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:07.472583" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:07.472287" elapsed="0.000323"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:51:07.472654" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:51:07.472800" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:51:07.471929" elapsed="0.000895"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:07.479253" level="INFO">/rests/data/network-topology:network-topology?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:07.478991" elapsed="0.000309"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:07.479688" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:07.479450" elapsed="0.000281"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:51:07.492837" level="INFO">GET Request : url=http://10.30.171.110:8181/rests/data/network-topology:network-topology?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node09orwbuy1e81xg3wze7ww55ua0.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:51:07.492944" level="INFO">GET Response : url=http://10.30.171.110:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '77'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"}]}} 
 </msg>
<msg time="2026-04-08T00:51:07.493038" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:51:07.481738" elapsed="0.011326"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:07.479796" elapsed="0.013309"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:07.493484" elapsed="0.000073"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:07.493132" elapsed="0.000522"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:07.479778" elapsed="0.013924"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:07.501711" level="INFO">{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"}]}}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:07.496080" elapsed="0.005738"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:07.495591" elapsed="0.006304"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:07.495549" elapsed="0.006402"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:07.504549" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:07.502377" elapsed="0.002218"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:07.502077" elapsed="0.002552"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:07.502039" elapsed="0.002614"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:07.505219" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:07.504817" elapsed="0.000430"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:07.505565" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:07.505318" elapsed="0.000306"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:07.506108" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:07.505810" elapsed="0.000324"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:07.505648" elapsed="0.000536"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:07.505299" elapsed="0.000907"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:07.506725" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:07.506365" elapsed="0.000387"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:07.507053" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:07.506821" elapsed="0.000288"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:07.507602" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:07.507310" elapsed="0.000318"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:07.507132" elapsed="0.000531"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:07.506803" elapsed="0.000881"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:51:07.507833" elapsed="0.000357"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:51:07.508626" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:07.508355" elapsed="0.000297"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:51:07.508804" elapsed="0.002209"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:51:07.494594" elapsed="0.016481"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-08T00:51:07.511275" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-08T00:51:07.511145" elapsed="0.000190"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:07.511126" elapsed="0.000233"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:07.511506" elapsed="0.000021"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-08T00:51:07.511575" elapsed="0.000015"/>
</return>
<msg time="2026-04-08T00:51:07.513766" level="INFO">${response_text} = {"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"}]}}</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${access}</arg>
<arg>session=${session}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:51:07.473145" elapsed="0.040650"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:51:07.513846" elapsed="0.000027"/>
</return>
<msg time="2026-04-08T00:51:07.513995" level="INFO">${data} = {"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"}]}}</msg>
<var>${data}</var>
<arg>uri=${uri}</arg>
<arg>member_index=${index}</arg>
<doc>Send a GET with the supplied uri to member ${member_index}.</doc>
<status status="PASS" start="2026-04-08T00:51:07.471449" elapsed="0.042571"/>
</kw>
<kw name="Check Item Occurrence" owner="Utils">
<for flavor="IN">
<iter>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T00:51:07.515198" level="INFO">Item found from container 0 times.</msg>
<arg>${string}</arg>
<arg>${item}</arg>
<arg>${dictionary_item_occurrence}[${item}]</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="PASS" start="2026-04-08T00:51:07.514812" elapsed="0.000453"/>
</kw>
<var name="${item}">openflow</var>
<status status="PASS" start="2026-04-08T00:51:07.514657" elapsed="0.000648"/>
</iter>
<var>${item}</var>
<value>@{dictionary_item_occurrence}</value>
<status status="PASS" start="2026-04-08T00:51:07.514523" elapsed="0.000812"/>
</for>
<arg>${data}</arg>
<arg>${dictionary}</arg>
<doc>Check string for occurrences of items expressed in a list of dictionaries {item=occurrences}. 0 occurences means item is not present.</doc>
<status status="PASS" start="2026-04-08T00:51:07.514261" elapsed="0.001126"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T00:51:07.467446" elapsed="0.048011"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-08T00:51:07.374447" elapsed="0.141040"/>
</for>
<arg>uri=${RFC8040_OPERATIONAL_TOPO_API}</arg>
<arg>dictionary=${dictionary}</arg>
<arg>member_index_list=${controller_index_list}</arg>
<doc>Send a GET with the supplied uri to all or some members defined in ${member_index_list}.
Then check received for occurrences of items expressed in a dictionary {'openflow': '0'}.</doc>
<status status="PASS" start="2026-04-08T00:51:07.372194" elapsed="0.143346"/>
</kw>
<arg>20s</arg>
<arg>2s</arg>
<arg>ClusterManagement.Check_Item_Occurrence_Member_List_Or_All</arg>
<arg>uri=${RFC8040_OPERATIONAL_TOPO_API}</arg>
<arg>dictionary=${dictionary}</arg>
<arg>member_index_list=${controller_index_list}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-08T00:51:07.367568" elapsed="0.148028"/>
</kw>
<doc>Check device is not in operational inventory or topology in all cluster instances in ${controller_index_list}.</doc>
<status status="PASS" start="2026-04-08T00:51:07.273113" elapsed="0.242550"/>
</kw>
<doc>Check device is not in operational inventory or topology in all cluster instances.</doc>
<status status="PASS" start="2026-04-08T00:51:07.268770" elapsed="0.247009"/>
</test>
<kw name="Delete All Sessions" owner="RequestsLibrary" type="TEARDOWN">
<msg time="2026-04-08T00:51:07.516732" level="INFO">Deleting All Sessions</msg>
<doc>Removes all the session objects</doc>
<status status="PASS" start="2026-04-08T00:51:07.516651" elapsed="0.000189"/>
</kw>
<doc>Test suite for Cluster HA - Device Owner failover</doc>
<status status="FAIL" start="2026-04-08T00:49:34.399695" elapsed="93.117179"/>
</suite>
<suite id="s1-s2" name="Cluster HA Owner Restart" source="/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustering/020__Cluster_HA_Owner_Restart.robot">
<kw name="Setup_Utils_For_Setup_And_Teardown" owner="SetupUtils" type="SETUP">
<kw name="Do_Not_Fail_Fast_From_Now_On" owner="FailFast">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:07.596886" level="INFO">${SuiteFastFail} = False</msg>
<arg>${SuiteFastFail}</arg>
<arg>False</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-08T00:51:07.592902" elapsed="0.004037"/>
</kw>
<doc>Set suite to not fail fast.</doc>
<status status="PASS" start="2026-04-08T00:51:07.592675" elapsed="0.004331"/>
</kw>
<kw name="Setup_Karaf_Keywords" owner="KarafKeywords">
<kw name="ClusterManagement_Setup" owner="ClusterManagement">
<kw name="Get Variable Value" owner="BuiltIn">
<msg time="2026-04-08T00:51:07.601617" level="INFO">${already_done} = False</msg>
<var>${already_done}</var>
<arg>\${ClusterManagement__has_setup_run}</arg>
<arg>False</arg>
<doc>Returns variable value or ``default`` if the variable does not exist.</doc>
<status status="PASS" start="2026-04-08T00:51:07.598096" elapsed="0.003549"/>
</kw>
<if>
<branch type="IF" condition="${already_done}">
<return>
<status status="NOT RUN" start="2026-04-08T00:51:07.601846" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:51:07.601729" elapsed="0.000161"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:07.601705" elapsed="0.000207"/>
</if>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:07.602416" level="INFO">${ClusterManagement__has_setup_run} = True</msg>
<arg>\${ClusterManagement__has_setup_run}</arg>
<arg>True</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-08T00:51:07.602063" elapsed="0.000395"/>
</kw>
<kw name="Get Variable Value" owner="BuiltIn">
<msg time="2026-04-08T00:51:07.602920" level="INFO">${cluster_size} = 3</msg>
<var>${cluster_size}</var>
<arg>\${NUM_ODL_SYSTEM}</arg>
<arg>1</arg>
<doc>Returns variable value or ``default`` if the variable does not exist.</doc>
<status status="PASS" start="2026-04-08T00:51:07.602616" elapsed="0.000330"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Convert To Integer" owner="BuiltIn">
<arg>${cluster_size}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:51:07.603466" elapsed="0.000275"/>
</kw>
<msg time="2026-04-08T00:51:07.603837" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:51:07.603882" level="INFO">${possibly_int_of_members} = 3</msg>
<var>${status}</var>
<var>${possibly_int_of_members}</var>
<arg>BuiltIn.Convert_To_Integer</arg>
<arg>${cluster_size}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:51:07.603109" elapsed="0.000797"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:51:07.604456" level="INFO">${int_of_members} = 3</msg>
<var>${int_of_members}</var>
<arg>'${status}' != 'PASS'</arg>
<arg>${1}</arg>
<arg>${possibly_int_of_members}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:51:07.604072" elapsed="0.000410"/>
</kw>
<kw name="ClusterManagement__Compute_Derived_Variables" owner="ClusterManagement">
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:51:07.605473" level="INFO">@{member_index_list} = [ ]</msg>
<var>@{member_index_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:51:07.605189" elapsed="0.000312"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:51:07.605903" level="INFO">@{session_list} = [ ]</msg>
<var>@{session_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:51:07.605649" elapsed="0.000280"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-08T00:51:07.606391" level="INFO">&amp;{index_to_ip_mapping} = { }</msg>
<var>&amp;{index_to_ip_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-08T00:51:07.606087" elapsed="0.000331"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="ClusterManagement__Include_Member_Index" owner="ClusterManagement">
<kw name="Append To List" owner="Collections">
<arg>${member_index_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-08T00:51:07.609354" elapsed="0.000225"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:07.610061" level="INFO">${member_ip} = 10.30.170.48</msg>
<var>${member_ip}</var>
<arg>${ODL_SYSTEM_${index}_IP}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:07.609738" elapsed="0.000348"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${index_to_ip_mapping}</arg>
<arg>${index}</arg>
<arg>${member_ip}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:51:07.610262" elapsed="0.000231"/>
</kw>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:07.611282" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:07.610973" elapsed="0.000337"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:51:07.611354" elapsed="0.000042"/>
</return>
<msg time="2026-04-08T00:51:07.611517" level="INFO">${session_alias} = ClusterManagement__session_1</msg>
<var>${session_alias}</var>
<arg>member_index=${index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:51:07.610684" elapsed="0.000858"/>
</kw>
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:51:07.612212" level="INFO">Creating Session using : alias=ClusterManagement__session_1, url=http://10.30.170.48:8181, headers={},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x76b9e5fce990&gt;, timeout=5, proxies=None, verify=False,                     debug=0 </msg>
<arg>${session_alias}</arg>
<arg>http://${member_ip}:${RESTCONFPORT}</arg>
<arg>auth=${AUTH}</arg>
<arg>timeout=${http_timeout}</arg>
<arg>max_retries=${http_retries}</arg>
<doc>Create Session: create a HTTP session to a server</doc>
<status status="PASS" start="2026-04-08T00:51:07.611761" elapsed="0.000586"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${session_list}</arg>
<arg>${session_alias}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-08T00:51:07.612507" elapsed="0.000187"/>
</kw>
<arg>${index}</arg>
<arg>${member_index_list}</arg>
<arg>${session_list}</arg>
<arg>${index_to_ip_mapping}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>http_retries=${http_retries}</arg>
<doc>Add a corresponding item based on index into the last three arguments.
Create the Http session whose alias is added to list.</doc>
<status status="PASS" start="2026-04-08T00:51:07.608775" elapsed="0.003977"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T00:51:07.608591" elapsed="0.004204"/>
</iter>
<iter>
<kw name="ClusterManagement__Include_Member_Index" owner="ClusterManagement">
<kw name="Append To List" owner="Collections">
<arg>${member_index_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-08T00:51:07.613793" elapsed="0.000192"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:07.614484" level="INFO">${member_ip} = 10.30.170.131</msg>
<var>${member_ip}</var>
<arg>${ODL_SYSTEM_${index}_IP}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:07.614143" elapsed="0.000367"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${index_to_ip_mapping}</arg>
<arg>${index}</arg>
<arg>${member_ip}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:51:07.614663" elapsed="0.000216"/>
</kw>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:07.615662" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:07.615371" elapsed="0.000317"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:51:07.615731" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:51:07.615878" level="INFO">${session_alias} = ClusterManagement__session_2</msg>
<var>${session_alias}</var>
<arg>member_index=${index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:51:07.615065" elapsed="0.000839"/>
</kw>
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:51:07.616470" level="INFO">Creating Session using : alias=ClusterManagement__session_2, url=http://10.30.170.131:8181, headers={},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x76b9e5f4ebd0&gt;, timeout=5, proxies=None, verify=False,                     debug=0 </msg>
<arg>${session_alias}</arg>
<arg>http://${member_ip}:${RESTCONFPORT}</arg>
<arg>auth=${AUTH}</arg>
<arg>timeout=${http_timeout}</arg>
<arg>max_retries=${http_retries}</arg>
<doc>Create Session: create a HTTP session to a server</doc>
<status status="PASS" start="2026-04-08T00:51:07.616053" elapsed="0.000520"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${session_list}</arg>
<arg>${session_alias}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-08T00:51:07.616732" elapsed="0.000185"/>
</kw>
<arg>${index}</arg>
<arg>${member_index_list}</arg>
<arg>${session_list}</arg>
<arg>${index_to_ip_mapping}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>http_retries=${http_retries}</arg>
<doc>Add a corresponding item based on index into the last three arguments.
Create the Http session whose alias is added to list.</doc>
<status status="PASS" start="2026-04-08T00:51:07.613223" elapsed="0.003752"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T00:51:07.612878" elapsed="0.004140"/>
</iter>
<iter>
<kw name="ClusterManagement__Include_Member_Index" owner="ClusterManagement">
<kw name="Append To List" owner="Collections">
<arg>${member_index_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-08T00:51:07.617863" elapsed="0.000185"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:07.618543" level="INFO">${member_ip} = 10.30.171.110</msg>
<var>${member_ip}</var>
<arg>${ODL_SYSTEM_${index}_IP}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:07.618222" elapsed="0.000347"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${index_to_ip_mapping}</arg>
<arg>${index}</arg>
<arg>${member_ip}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:51:07.618719" elapsed="0.000222"/>
</kw>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:07.619721" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:07.619430" elapsed="0.000317"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:51:07.619790" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:51:07.619937" level="INFO">${session_alias} = ClusterManagement__session_3</msg>
<var>${session_alias}</var>
<arg>member_index=${index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:51:07.619126" elapsed="0.000835"/>
</kw>
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:51:07.620527" level="INFO">Creating Session using : alias=ClusterManagement__session_3, url=http://10.30.171.110:8181, headers={},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x76b9f42de050&gt;, timeout=5, proxies=None, verify=False,                     debug=0 </msg>
<arg>${session_alias}</arg>
<arg>http://${member_ip}:${RESTCONFPORT}</arg>
<arg>auth=${AUTH}</arg>
<arg>timeout=${http_timeout}</arg>
<arg>max_retries=${http_retries}</arg>
<doc>Create Session: create a HTTP session to a server</doc>
<status status="PASS" start="2026-04-08T00:51:07.620111" elapsed="0.000519"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${session_list}</arg>
<arg>${session_alias}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-08T00:51:07.620788" elapsed="0.000185"/>
</kw>
<arg>${index}</arg>
<arg>${member_index_list}</arg>
<arg>${session_list}</arg>
<arg>${index_to_ip_mapping}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>http_retries=${http_retries}</arg>
<doc>Add a corresponding item based on index into the last three arguments.
Create the Http session whose alias is added to list.</doc>
<status status="PASS" start="2026-04-08T00:51:07.617292" elapsed="0.003738"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T00:51:07.617100" elapsed="0.003972"/>
</iter>
<var>${index}</var>
<value>1</value>
<value>${int_of_members+1}</value>
<status status="PASS" start="2026-04-08T00:51:07.606472" elapsed="0.014666"/>
</for>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:07.621744" level="INFO">${ClusterManagement__member_index_list} = [1, 2, 3]</msg>
<arg>\${ClusterManagement__member_index_list}</arg>
<arg>${member_index_list}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-08T00:51:07.621344" elapsed="0.000443"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:07.622343" level="INFO">${ClusterManagement__index_to_ip_mapping} = {1: '10.30.170.48', 2: '10.30.170.131', 3: '10.30.171.110'}</msg>
<arg>\${ClusterManagement__index_to_ip_mapping}</arg>
<arg>${index_to_ip_mapping}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-08T00:51:07.621946" elapsed="0.000440"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:07.622919" level="INFO">${ClusterManagement__session_list} = ['ClusterManagement__session_1', 'ClusterManagement__session_2', 'ClusterManagement__session_3']</msg>
<arg>\${ClusterManagement__session_list}</arg>
<arg>${session_list}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-08T00:51:07.622545" elapsed="0.000417"/>
</kw>
<arg>int_of_members=${int_of_members}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>http_retries=${http_retries}</arg>
<doc>Construct index list, session list and IP mapping, publish them as suite variables.</doc>
<status status="PASS" start="2026-04-08T00:51:07.604729" elapsed="0.018290"/>
</kw>
<arg>http_timeout=${http_timeout}</arg>
<doc>Detect repeated call, or detect number of members and initialize derived suite variables.
Http sessions are created with parameters to not waste time when ODL is no accepting connections properly.</doc>
<status status="PASS" start="2026-04-08T00:51:07.597759" elapsed="0.025314"/>
</kw>
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:51:07.623268" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:51:07.623138" elapsed="0.000174"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:07.623119" elapsed="0.000216"/>
</if>
<kw name="Run_Bash_Command_On_List_Or_All" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:51:07.626441" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:51:07.626048" elapsed="0.000420"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:51:07.626919" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:51:07.626624" elapsed="0.000320"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:51:07.626986" elapsed="0.000027"/>
</return>
<msg time="2026-04-08T00:51:07.627135" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:51:07.625729" elapsed="0.001445"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:51:07.628123" level="INFO">${member_ip} = 10.30.170.48</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:51:07.627865" elapsed="0.000284"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:51:07.628899" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

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

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T00:51:07.632045" elapsed="0.000297"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:07.633410" level="INFO">Attempting to execute command "iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save" on remote system "10.30.170.48" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:07.632495" elapsed="0.000975"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:51:07.634280" level="INFO">${conn_id} = 37</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:51:07.633631" elapsed="0.000677"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T00:51:07.635593" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T00:51:07.635794" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T00:51:07.635040" elapsed="0.000836"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:51:07.636179" elapsed="0.000595"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T00:51:07.638386" level="INFO">Logging into '10.30.170.48:22' as 'jenkins'.</msg>
<msg time="2026-04-08T00:51:08.232437" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 00:51:07 UTC 2026

  System load:  0.23               Processes:             120
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 8%                 IPv4 address for ens3: 10.30.170.48
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 00:49:35 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-0-builder-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T00:51:07.637980" elapsed="0.594685"/>
</kw>
<msg time="2026-04-08T00:51:08.232783" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:51:07.637091" elapsed="0.595892"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T00:51:07.634524" elapsed="0.598771"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T00:51:08.233899" level="INFO">Executing command 'iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save'.</msg>
<msg time="2026-04-08T00:51:08.246560" level="INFO">Command exited with return code 4.</msg>
<msg time="2026-04-08T00:51:08.246734" level="INFO">${stdout} = </msg>
<msg time="2026-04-08T00:51:08.246780" level="INFO">${stderr} = iptables v1.8.7 (nf_tables): unknown option "--dport"
Try `iptables -h' or 'iptables --help' for more information.
iptables-save v1.8.7 (nf_tables): Could not fetch rule set generation id: Permission ...</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T00:51:08.233553" elapsed="0.013253"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:51:08.246976" elapsed="0.000274"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:08.248031" level="INFO">iptables v1.8.7 (nf_tables): unknown option "--dport"
Try `iptables -h' or 'iptables --help' for more information.
iptables-save v1.8.7 (nf_tables): Could not fetch rule set generation id: Permission denied (you must be root)</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:08.247469" elapsed="0.000610"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:51:08.248376" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:51:08.248193" elapsed="0.000235"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:08.248143" elapsed="0.000308"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T00:51:08.248635" elapsed="0.000028"/>
</return>
<status status="PASS" start="2026-04-08T00:51:08.248505" elapsed="0.000191"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:08.248489" elapsed="0.000231"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:51:08.248754" elapsed="0.000014"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:51:08.251772" elapsed="0.000815"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:51:08.252825" elapsed="0.000483"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:51:08.253500" elapsed="0.000206"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:51:08.249104" elapsed="0.004690"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T00:51:07.630872" elapsed="0.623016"/>
</kw>
<msg time="2026-04-08T00:51:08.253942" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:51:07.630210" elapsed="0.623782"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-08T00:51:07.629722" elapsed="0.624350"/>
</kw>
<msg time="2026-04-08T00:51:08.254113" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:51:07.629195" elapsed="0.624979"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:51:08.256718" elapsed="0.000306"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:51:08.257292" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:51:08.257584" elapsed="0.000096"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:51:08.254463" elapsed="0.003267"/>
</kw>
<msg time="2026-04-08T00:51:08.257821" level="INFO">${output} = </msg>
<var>${output}</var>
<arg>Utils.Run_Command_On_Controller</arg>
<arg>${member_ip}</arg>
<arg>${command}</arg>
<doc>Store current connection index, run keyword returning its result, restore connection in teardown.
Note that in order to avoid "got positional argument after named arguments", it is safer to use positional (not named) arguments on call.</doc>
<status status="PASS" start="2026-04-08T00:51:07.628381" elapsed="0.629465"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:08.258280" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:08.258018" elapsed="0.000304"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-08T00:51:08.258363" elapsed="0.000029"/>
</return>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-08T00:51:07.627519" elapsed="0.630966"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T00:51:07.627351" elapsed="0.631170"/>
</iter>
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:51:08.259434" level="INFO">${member_ip} = 10.30.170.131</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:51:08.259149" elapsed="0.000311"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:51:08.260268" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

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

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T00:51:08.264978" elapsed="0.000334"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:08.266474" level="INFO">Attempting to execute command "iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save" on remote system "10.30.170.131" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:08.265465" elapsed="0.001056"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:51:08.267429" level="INFO">${conn_id} = 40</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:51:08.266730" elapsed="0.000725"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T00:51:08.268814" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T00:51:08.269033" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T00:51:08.268221" elapsed="0.000895"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:51:08.269446" elapsed="0.000644"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T00:51:08.271663" level="INFO">Logging into '10.30.170.131:22' as 'jenkins'.</msg>
<msg time="2026-04-08T00:51:08.852418" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 00:51:08 UTC 2026

  System load:  0.22               Processes:             122
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 8%                 IPv4 address for ens3: 10.30.170.131
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 00:49:35 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-0-builder-1 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T00:51:08.271264" elapsed="0.581316"/>
</kw>
<msg time="2026-04-08T00:51:08.852676" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:51:08.270455" elapsed="0.582466"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T00:51:08.267671" elapsed="0.585478"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T00:51:08.853687" level="INFO">Executing command 'iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save'.</msg>
<msg time="2026-04-08T00:51:08.866603" level="INFO">Command exited with return code 4.</msg>
<msg time="2026-04-08T00:51:08.866954" level="INFO">${stdout} = </msg>
<msg time="2026-04-08T00:51:08.867058" level="INFO">${stderr} = iptables v1.8.7 (nf_tables): unknown option "--dport"
Try `iptables -h' or 'iptables --help' for more information.
iptables-save v1.8.7 (nf_tables): Could not fetch rule set generation id: Permission ...</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T00:51:08.853392" elapsed="0.013721"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:51:08.867533" elapsed="0.000467"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:08.869590" level="INFO">iptables v1.8.7 (nf_tables): unknown option "--dport"
Try `iptables -h' or 'iptables --help' for more information.
iptables-save v1.8.7 (nf_tables): Could not fetch rule set generation id: Permission denied (you must be root)</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:08.868448" elapsed="0.001248"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:51:08.870230" elapsed="0.000040"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:51:08.869866" elapsed="0.000478"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:08.869817" elapsed="0.000578"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T00:51:08.870800" elapsed="0.000060"/>
</return>
<status status="PASS" start="2026-04-08T00:51:08.870515" elapsed="0.000420"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:08.870480" elapsed="0.000510"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:51:08.871063" elapsed="0.000032"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:51:08.877564" elapsed="0.000723"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:51:08.878510" elapsed="0.000399"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:51:08.879097" elapsed="0.000206"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:51:08.871798" elapsed="0.007589"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T00:51:08.263744" elapsed="0.615738"/>
</kw>
<msg time="2026-04-08T00:51:08.879536" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:51:08.263029" elapsed="0.616557"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-08T00:51:08.262526" elapsed="0.617138"/>
</kw>
<msg time="2026-04-08T00:51:08.879705" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:51:08.260553" elapsed="0.619196"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:51:08.882326" elapsed="0.000309"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:51:08.882797" elapsed="0.000143"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:51:08.883085" elapsed="0.000112"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:51:08.880035" elapsed="0.003213"/>
</kw>
<msg time="2026-04-08T00:51:08.883342" level="INFO">${output} = </msg>
<var>${output}</var>
<arg>Utils.Run_Command_On_Controller</arg>
<arg>${member_ip}</arg>
<arg>${command}</arg>
<doc>Store current connection index, run keyword returning its result, restore connection in teardown.
Note that in order to avoid "got positional argument after named arguments", it is safer to use positional (not named) arguments on call.</doc>
<status status="PASS" start="2026-04-08T00:51:08.259672" elapsed="0.623695"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:08.883783" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:08.883540" elapsed="0.000284"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-08T00:51:08.883865" elapsed="0.000029"/>
</return>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-08T00:51:08.258795" elapsed="0.625191"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T00:51:08.258617" elapsed="0.625407"/>
</iter>
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:51:08.884964" level="INFO">${member_ip} = 10.30.171.110</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:51:08.884674" elapsed="0.000351"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:51:08.885747" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

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

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T00:51:08.888918" elapsed="0.000296"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:08.890270" level="INFO">Attempting to execute command "iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save" on remote system "10.30.171.110" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:08.889367" elapsed="0.000951"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:51:08.891104" level="INFO">${conn_id} = 43</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:51:08.890476" elapsed="0.000655"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T00:51:08.892437" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T00:51:08.892634" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T00:51:08.891874" elapsed="0.000824"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:51:08.892977" elapsed="0.000780"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T00:51:08.895282" level="INFO">Logging into '10.30.171.110:22' as 'jenkins'.</msg>
<msg time="2026-04-08T00:51:09.457491" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 00:51:09 UTC 2026

  System load:  0.17               Processes:             123
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 8%                 IPv4 address for ens3: 10.30.171.110
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 00:49:36 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T00:51:08.894827" elapsed="0.562810"/>
</kw>
<msg time="2026-04-08T00:51:09.457730" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:51:08.894080" elapsed="0.563821"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T00:51:08.891364" elapsed="0.566784"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T00:51:09.458653" level="INFO">Executing command 'iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save'.</msg>
<msg time="2026-04-08T00:51:09.470999" level="INFO">Command exited with return code 4.</msg>
<msg time="2026-04-08T00:51:09.471260" level="INFO">${stdout} = </msg>
<msg time="2026-04-08T00:51:09.471328" level="INFO">${stderr} = iptables v1.8.7 (nf_tables): unknown option "--dport"
Try `iptables -h' or 'iptables --help' for more information.
iptables-save v1.8.7 (nf_tables): Could not fetch rule set generation id: Permission ...</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T00:51:09.458368" elapsed="0.012996"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:51:09.471594" elapsed="0.000310"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:09.472946" level="INFO">iptables v1.8.7 (nf_tables): unknown option "--dport"
Try `iptables -h' or 'iptables --help' for more information.
iptables-save v1.8.7 (nf_tables): Could not fetch rule set generation id: Permission denied (you must be root)</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:09.472195" elapsed="0.000817"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:51:09.473429" elapsed="0.000023"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:51:09.473203" elapsed="0.000295"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:09.473088" elapsed="0.000442"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T00:51:09.473784" elapsed="0.000039"/>
</return>
<status status="PASS" start="2026-04-08T00:51:09.473605" elapsed="0.000263"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:09.473583" elapsed="0.000318"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:51:09.473947" elapsed="0.000019"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:51:09.477908" elapsed="0.001113"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:51:09.479372" elapsed="0.000617"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:51:09.480310" elapsed="0.000308"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:51:09.474450" elapsed="0.006288"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T00:51:08.887653" elapsed="0.593216"/>
</kw>
<msg time="2026-04-08T00:51:09.480943" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:51:08.887016" elapsed="0.594000"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-08T00:51:08.886539" elapsed="0.594586"/>
</kw>
<msg time="2026-04-08T00:51:09.481205" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:51:08.886024" elapsed="0.595246"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:51:09.484822" elapsed="0.000455"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:51:09.485503" elapsed="0.000198"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:51:09.485903" elapsed="0.000131"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:51:09.481668" elapsed="0.004438"/>
</kw>
<msg time="2026-04-08T00:51:09.486255" level="INFO">${output} = </msg>
<var>${output}</var>
<arg>Utils.Run_Command_On_Controller</arg>
<arg>${member_ip}</arg>
<arg>${command}</arg>
<doc>Store current connection index, run keyword returning its result, restore connection in teardown.
Note that in order to avoid "got positional argument after named arguments", it is safer to use positional (not named) arguments on call.</doc>
<status status="PASS" start="2026-04-08T00:51:08.885260" elapsed="0.601031"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:09.486871" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:09.486533" elapsed="0.000394"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-08T00:51:09.486983" elapsed="0.000039"/>
</return>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-08T00:51:08.884318" elapsed="0.602833"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T00:51:08.884119" elapsed="0.603105"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-08T00:51:07.627226" elapsed="1.860045"/>
</for>
<arg>iptables -I INPUT -p tcp --dport ${KARAF_SHELL_PORT} -j ACCEPT; iptables-save</arg>
<doc>Cycle through indices (or all), run command on each.</doc>
<status status="PASS" start="2026-04-08T00:51:07.623560" elapsed="1.863792"/>
</kw>
<kw name="Comment" owner="BuiltIn">
<arg>First connections to Karaf console may fail, so WUKS is used. TODO: Track as a Bug.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:51:09.487567" elapsed="0.000287"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:51:09.501272" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:51:09.501147" elapsed="0.000174"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:09.501129" elapsed="0.000216"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:51:09.501625" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T00:51:09.501494" elapsed="0.000261"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:09.502185" level="INFO">{}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:09.501912" elapsed="0.000319"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:09.502664" level="INFO">1</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:09.502383" elapsed="0.000324"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:51:09.503470" level="FAIL">Dictionary does not contain key '1'.</msg>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="FAIL" start="2026-04-08T00:51:09.503247" elapsed="0.000338">Dictionary does not contain key '1'.</status>
</kw>
<msg time="2026-04-08T00:51:09.503689" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:51:09.503734" level="INFO">${old_connection_index} = Dictionary does not contain key '1'.</msg>
<var>${status}</var>
<var>${old_connection_index}</var>
<arg>Get From Dictionary</arg>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:51:09.502865" elapsed="0.000892"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='PASS'">
<kw name="Run Keywords" owner="BuiltIn">
<arg>SSHLibrary.Switch_Connection</arg>
<arg>${old_connection_index}</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Executes all the given keywords in a sequence.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:09.504054" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:09.503833" elapsed="0.000295"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:09.503815" elapsed="0.000336"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:51:09.504933" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:51:09.504672" elapsed="0.000286"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:51:09.505005" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:51:09.505151" level="INFO">${odl_ip} = 10.30.170.48</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:51:09.504405" elapsed="0.000787"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${odl_ip}</arg>
<arg>port=${KARAF_SHELL_PORT}</arg>
<arg>prompt=${KARAF_PROMPT_LOGIN}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:51:09.505348" elapsed="0.000395"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:51:09.506013" level="INFO">index=46
host=10.30.170.48
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-08T00:51:09.506111" level="INFO">${karaf_connection_object} = index=46
host=10.30.170.48
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_erro...</msg>
<var>${karaf_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T00:51:09.505907" elapsed="0.000229"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<arg>${karaf_connection_object.index}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:51:09.506301" elapsed="0.002114"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-08T00:51:09.508873" level="INFO">Logging into '10.30.170.48:8101' as 'karaf'.</msg>
<msg time="2026-04-08T00:51:09.743895" level="INFO">Read output: [33m                                                                                           
[33m    ________                       ________                .__  .__       .__     __       
[33m    \_____  \ ______   ____   ____ \______ \ _____  ___.__.|  | |__| ____ |  |___/  |_     
[33m     /   |   \\____ \_/ __ \ /    \ |    |  \\__  \&lt;   |  ||  | |  |/ ___\|  |  \   __\    
[33m    /    |    \  |_&gt; &gt;  ___/|   |  \|    `   \/ __ \\___  ||  |_|  / /_/  &gt;   Y  \  |      
[33m    \_______  /   __/ \___  &gt;___|  /_______  (____  / ____||____/__\___  /|___|  /__|      
[33m            \/|__|        \/     \/        \/     \/\/            /_____/      \/          
[33m                                                                                           

Hit '[1m&lt;tab&gt;[0m' for a list of available commands
and '[1m[cmd] --help[0m' for help on a specific command.
Hit '[1m&lt;ctrl-d&gt;[0m' or type '[1msystem:shutdown[0m' or '[1mlogout[0m' to shutdown OpenDaylight.

[?1h=[90m~[0m                                                                                [?2004hopendaylight-user</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="PASS" start="2026-04-08T00:51:09.508588" elapsed="0.235418"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:51:09.747291" elapsed="0.000312"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:51:09.747765" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:51:09.748057" elapsed="0.000133"/>
</kw>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:51:09.744946" elapsed="0.003307"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T00:51:09.744363" elapsed="0.003937"/>
</kw>
<arg>member_index=${index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for ${member_index},
close the previous connection. In any case create a new connection
to karaf console for ${member_index}, set correct prompt set and login to karaf console.
Store connection index for ${member_index} and restore the previous active connection.</doc>
<status status="PASS" start="2026-04-08T00:51:09.500872" elapsed="0.247479"/>
</kw>
<arg>3s</arg>
<arg>1s</arg>
<arg>Open_Controller_Karaf_Console_On_Background</arg>
<arg>member_index=${index}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-08T00:51:09.489031" elapsed="0.259367"/>
</kw>
<arg>BuiltIn.Wait_Until_Keyword_Succeeds</arg>
<arg>3s</arg>
<arg>1s</arg>
<arg>Open_Controller_Karaf_Console_On_Background</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:51:09.488520" elapsed="0.259932"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T00:51:09.488127" elapsed="0.260423"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:51:09.761131" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:51:09.761016" elapsed="0.000179"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:09.760993" elapsed="0.000225"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:51:09.761497" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T00:51:09.761369" elapsed="0.000259"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:09.762038" level="INFO">{1: 46}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:09.761780" elapsed="0.000302"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:09.762490" level="INFO">2</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:09.762248" elapsed="0.000285"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:51:09.763281" level="FAIL">Dictionary does not contain key '2'.</msg>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="FAIL" start="2026-04-08T00:51:09.763047" elapsed="0.000339">Dictionary does not contain key '2'.</status>
</kw>
<msg time="2026-04-08T00:51:09.763491" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:51:09.763537" level="INFO">${old_connection_index} = Dictionary does not contain key '2'.</msg>
<var>${status}</var>
<var>${old_connection_index}</var>
<arg>Get From Dictionary</arg>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:51:09.762690" elapsed="0.000870"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='PASS'">
<kw name="Run Keywords" owner="BuiltIn">
<arg>SSHLibrary.Switch_Connection</arg>
<arg>${old_connection_index}</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Executes all the given keywords in a sequence.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:09.763853" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:09.763634" elapsed="0.000293"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:09.763617" elapsed="0.000333"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:51:09.764717" level="INFO">${ip_address} = 10.30.170.131</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:51:09.764455" elapsed="0.000288"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:51:09.764790" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:51:09.764938" level="INFO">${odl_ip} = 10.30.170.131</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:51:09.764145" elapsed="0.000817"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${odl_ip}</arg>
<arg>port=${KARAF_SHELL_PORT}</arg>
<arg>prompt=${KARAF_PROMPT_LOGIN}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:51:09.765114" elapsed="0.000410"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:51:09.765797" level="INFO">index=48
host=10.30.170.131
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-08T00:51:09.765894" level="INFO">${karaf_connection_object} = index=48
host=10.30.170.131
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_err...</msg>
<var>${karaf_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T00:51:09.765691" elapsed="0.000229"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<arg>${karaf_connection_object.index}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:51:09.766064" elapsed="0.002105"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-08T00:51:09.768608" level="INFO">Logging into '10.30.170.131:8101' as 'karaf'.</msg>
<msg time="2026-04-08T00:51:10.014032" level="INFO">Read output: [33m                                                                                           
[33m    ________                       ________                .__  .__       .__     __       
[33m    \_____  \ ______   ____   ____ \______ \ _____  ___.__.|  | |__| ____ |  |___/  |_     
[33m     /   |   \\____ \_/ __ \ /    \ |    |  \\__  \&lt;   |  ||  | |  |/ ___\|  |  \   __\    
[33m    /    |    \  |_&gt; &gt;  ___/|   |  \|    `   \/ __ \\___  ||  |_|  / /_/  &gt;   Y  \  |      
[33m    \_______  /   __/ \___  &gt;___|  /_______  (____  / ____||____/__\___  /|___|  /__|      
[33m            \/|__|        \/     \/        \/     \/\/            /_____/      \/          
[33m                                                                                           

Hit '[1m&lt;tab&gt;[0m' for a list of available commands
and '[1m[cmd] --help[0m' for help on a specific command.
Hit '[1m&lt;ctrl-d&gt;[0m' or type '[1msystem:shutdown[0m' or '[1mlogout[0m' to shutdown OpenDaylight.

[?1h=[90m~[0m                                                                                [?2004hopendaylight-user</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="PASS" start="2026-04-08T00:51:09.768348" elapsed="0.245771"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:51:10.017042" elapsed="0.000321"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:51:10.017525" elapsed="0.000187"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:51:10.017859" elapsed="0.000096"/>
</kw>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:51:10.014935" elapsed="0.003072"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T00:51:10.014397" elapsed="0.003655"/>
</kw>
<arg>member_index=${index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for ${member_index},
close the previous connection. In any case create a new connection
to karaf console for ${member_index}, set correct prompt set and login to karaf console.
Store connection index for ${member_index} and restore the previous active connection.</doc>
<status status="PASS" start="2026-04-08T00:51:09.760728" elapsed="0.257374"/>
</kw>
<arg>3s</arg>
<arg>1s</arg>
<arg>Open_Controller_Karaf_Console_On_Background</arg>
<arg>member_index=${index}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-08T00:51:09.749171" elapsed="0.268977"/>
</kw>
<arg>BuiltIn.Wait_Until_Keyword_Succeeds</arg>
<arg>3s</arg>
<arg>1s</arg>
<arg>Open_Controller_Karaf_Console_On_Background</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:51:09.748792" elapsed="0.269425"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T00:51:09.748652" elapsed="0.269605"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:51:10.030851" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:51:10.030738" elapsed="0.000160"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:10.030718" elapsed="0.000202"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:51:10.031222" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T00:51:10.031078" elapsed="0.000274"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:10.031760" level="INFO">{1: 46, 2: 48}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:10.031502" elapsed="0.000302"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:10.032241" level="INFO">3</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:10.031951" elapsed="0.000339"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:51:10.033011" level="FAIL">Dictionary does not contain key '3'.</msg>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="FAIL" start="2026-04-08T00:51:10.032798" elapsed="0.000306">Dictionary does not contain key '3'.</status>
</kw>
<msg time="2026-04-08T00:51:10.033236" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:51:10.033282" level="INFO">${old_connection_index} = Dictionary does not contain key '3'.</msg>
<var>${status}</var>
<var>${old_connection_index}</var>
<arg>Get From Dictionary</arg>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:51:10.032446" elapsed="0.000859"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='PASS'">
<kw name="Run Keywords" owner="BuiltIn">
<arg>SSHLibrary.Switch_Connection</arg>
<arg>${old_connection_index}</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Executes all the given keywords in a sequence.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:10.033598" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:10.033381" elapsed="0.000290"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:10.033362" elapsed="0.000332"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:51:10.034433" level="INFO">${ip_address} = 10.30.171.110</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:51:10.034168" elapsed="0.000291"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:51:10.034507" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:51:10.034655" level="INFO">${odl_ip} = 10.30.171.110</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:51:10.033890" elapsed="0.000789"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${odl_ip}</arg>
<arg>port=${KARAF_SHELL_PORT}</arg>
<arg>prompt=${KARAF_PROMPT_LOGIN}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:51:10.034830" elapsed="0.000403"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:51:10.035510" level="INFO">index=50
host=10.30.171.110
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-08T00:51:10.035607" level="INFO">${karaf_connection_object} = index=50
host=10.30.171.110
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_err...</msg>
<var>${karaf_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T00:51:10.035405" elapsed="0.000228"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<arg>${karaf_connection_object.index}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:51:10.035777" elapsed="0.002232"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-08T00:51:10.038441" level="INFO">Logging into '10.30.171.110:8101' as 'karaf'.</msg>
<msg time="2026-04-08T00:51:10.265081" level="INFO">Read output: [33m                                                                                           
[33m    ________                       ________                .__  .__       .__     __       
[33m    \_____  \ ______   ____   ____ \______ \ _____  ___.__.|  | |__| ____ |  |___/  |_     
[33m     /   |   \\____ \_/ __ \ /    \ |    |  \\__  \&lt;   |  ||  | |  |/ ___\|  |  \   __\    
[33m    /    |    \  |_&gt; &gt;  ___/|   |  \|    `   \/ __ \\___  ||  |_|  / /_/  &gt;   Y  \  |      
[33m    \_______  /   __/ \___  &gt;___|  /_______  (____  / ____||____/__\___  /|___|  /__|      
[33m            \/|__|        \/     \/        \/     \/\/            /_____/      \/          
[33m                                                                                           

Hit '[1m&lt;tab&gt;[0m' for a list of available commands
and '[1m[cmd] --help[0m' for help on a specific command.
Hit '[1m&lt;ctrl-d&gt;[0m' or type '[1msystem:shutdown[0m' or '[1mlogout[0m' to shutdown OpenDaylight.

[?1h=[90m~[0m                                                                                [?2004hopendaylight-user</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="PASS" start="2026-04-08T00:51:10.038184" elapsed="0.227056"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:51:10.268266" elapsed="0.000315"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:51:10.268745" elapsed="0.000149"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:51:10.269042" elapsed="0.000097"/>
</kw>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:51:10.266110" elapsed="0.003098"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T00:51:10.265538" elapsed="0.003716"/>
</kw>
<arg>member_index=${index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for ${member_index},
close the previous connection. In any case create a new connection
to karaf console for ${member_index}, set correct prompt set and login to karaf console.
Store connection index for ${member_index} and restore the previous active connection.</doc>
<status status="PASS" start="2026-04-08T00:51:10.030324" elapsed="0.238982"/>
</kw>
<arg>3s</arg>
<arg>1s</arg>
<arg>Open_Controller_Karaf_Console_On_Background</arg>
<arg>member_index=${index}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-08T00:51:10.018847" elapsed="0.250509"/>
</kw>
<arg>BuiltIn.Wait_Until_Keyword_Succeeds</arg>
<arg>3s</arg>
<arg>1s</arg>
<arg>Open_Controller_Karaf_Console_On_Background</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:51:10.018484" elapsed="0.250922"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T00:51:10.018348" elapsed="0.251098"/>
</iter>
<var>${index}</var>
<value>@{ClusterManagement__member_index_list}</value>
<status status="PASS" start="2026-04-08T00:51:09.487928" elapsed="0.781552"/>
</for>
<arg>http_timeout=${http_timeout}</arg>
<doc>Initialize ClusterManagement. Open ssh karaf connections to each ODL.</doc>
<status status="PASS" start="2026-04-08T00:51:07.597314" elapsed="2.672226"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Test_Suite_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:51:10.272037" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:51:10.271923" elapsed="0.000159"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:10.271890" elapsed="0.000215"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:51:10.276576" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:51:10.276472" elapsed="0.000149"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:10.276455" elapsed="0.000187"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:51:10.277582" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:51:10.277201" elapsed="0.000408"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:51:10.278064" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:51:10.277766" elapsed="0.000324"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:51:10.278132" elapsed="0.000046"/>
</return>
<msg time="2026-04-08T00:51:10.278306" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:51:10.276863" elapsed="0.001467"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:51:10.283515" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:51:10.283407" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:10.283388" elapsed="0.000196"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:51:10.284631" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:51:10.284524" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:10.284507" elapsed="0.000190"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:51:10.285097" level="INFO">${karaf_connection_index} = 46</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:51:10.284837" elapsed="0.000287"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:51:10.285494" level="INFO">${current_connection_index} = None</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:51:10.285303" elapsed="0.000217"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T00:51:10.339672" level="INFO">@root&gt;log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "s "u "i "t "e "[C "/ "w "/ "w "o "r "k "s "p "a "c "e "/ "o "p "e "[78Cn "[A[78Cf</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T00:51:10.286009" elapsed="0.053795"/>
</kw>
<msg time="2026-04-08T00:51:10.339934" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T00:51:10.339982" level="INFO">${message_write} = @root&gt;log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "s "u "i "t "e "[C "/ "w "/ "w "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:51:10.285678" elapsed="0.054377"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T00:51:10.412908" level="INFO">"l "o "w "p "l "u "g "i "n "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "o "n "l "y "- "v "a "n "a "d "i "u "m "/ "t "e "s "t "/ "c "s "i "t "/ "s "u "i "t "e "s "/ "o "p "e "n "f "l "o "w "p "l "u "g "i "n "/ "[78CC "[A[78Cl
 "u "s "t "e "r "i "n "g "/ "0 "2 "0 "_ "_ "C "l "u "s "t "e "r "_ "H "A "_ "O "w "n "e "r "_ "R "e "s "t "a "r "t ". "r "o "b "o "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T00:51:10.340597" elapsed="0.072477"/>
</kw>
<msg time="2026-04-08T00:51:10.413192" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T00:51:10.413239" level="INFO">${message_wait} =  "l "o "w "p "l "u "g "i "n "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "o "n "l "y "- "v "a "n ...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:51:10.340252" elapsed="0.073025"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:10.413580" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:10.413355" elapsed="0.000280"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:10.413335" elapsed="0.000324"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:10.414076" level="INFO"> "l "o "w "p "l "u "g "i "n "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "o "n "l "y "- "v "a "n "a "d "i "u "m "/ "t "e "s "t "/ "c "s "i "t "/ "s "u "i "t "e "s "/ "o "p "e "n "f "l "o "w "p "l "u "g "i "n "/ "[78CC "[A[78Cl
 "u "s "t "e "r "i "n "g "/ "0 "2 "0 "_ "_ "C "l "u "s "t "e "r "_ "H "A "_ "O "w "n "e "r "_ "R "e "s "t "a "r "t ". "r "o "b "o "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:10.413800" elapsed="0.000389"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:10.414473" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:10.414257" elapsed="0.000269"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:10.414239" elapsed="0.000311"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T00:51:10.414582" elapsed="0.000028"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:51:10.415790" elapsed="0.000596"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:51:10.416679" elapsed="0.000447"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:51:10.417403" elapsed="0.000190"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:51:10.415382" elapsed="0.002344"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T00:51:10.414840" elapsed="0.002934"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T00:51:10.284275" elapsed="0.133596"/>
</kw>
<msg time="2026-04-08T00:51:10.417961" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:51:10.418004" level="INFO">${message} =  "l "o "w "p "l "u "g "i "n "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "o "n "l "y "- "v "a "n ...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:51:10.283733" elapsed="0.134308"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T00:51:10.418246" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-08T00:51:10.418117" elapsed="0.000188"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:10.418098" elapsed="0.000231"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:10.418757" elapsed="0.000027"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:10.419093" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T00:51:10.419179" elapsed="0.000018"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T00:51:10.283104" elapsed="0.136185"/>
</kw>
<msg time="2026-04-08T00:51:10.419381" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:51:10.419424" level="INFO">${output} =  "l "o "w "p "l "u "g "i "n "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "o "n "l "y "- "v "a "n ...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:51:10.278690" elapsed="0.140771"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:10.419843" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:10.419535" elapsed="0.000365"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:10.419518" elapsed="0.000406"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T00:51:10.278551" elapsed="0.141396"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:51:10.425051" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:51:10.424943" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:10.424924" elapsed="0.000194"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:51:10.426144" elapsed="0.000100"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:51:10.426037" elapsed="0.000242"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:10.426019" elapsed="0.000287"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:51:10.426706" level="INFO">${karaf_connection_index} = 48</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:51:10.426449" elapsed="0.000283"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:51:10.427080" level="INFO">${current_connection_index} = None</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:51:10.426889" elapsed="0.000218"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T00:51:10.486614" level="INFO">@root&gt;log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "s "u "i "t "e "[C "/ "w "/ "w "o "r "k "s "p "a "c "e "/ "o "p "e "[78Cn "[A[78Cf</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T00:51:10.427622" elapsed="0.059122"/>
</kw>
<msg time="2026-04-08T00:51:10.486843" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T00:51:10.486889" level="INFO">${message_write} = @root&gt;log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "s "u "i "t "e "[C "/ "w "/ "w "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:51:10.427285" elapsed="0.059642"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T00:51:10.576457" level="INFO">"l "o "w "p "l "u "g "i "n "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "o "n "l "y "- "v "a "n "a "d "i "u "m "/ "t "e "s "t "/ "c "s "i "t "/ "s "u "i "t "e "s "/ "o "p "e "n "f "l "o "w "p "l "u "g "i "n "/ "[78CC "[A[78Cl
 "u "s "t "e "r "i "n "g "/ "0 "2 "0 "_ "_ "C "l "u "s "t "e "r "_ "H "A "_ "O "w "n "e "r "_ "R "e "s "t "a "r "t ". "r "o "b "o "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T00:51:10.487460" elapsed="0.089165"/>
</kw>
<msg time="2026-04-08T00:51:10.576724" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T00:51:10.576770" level="INFO">${message_wait} =  "l "o "w "p "l "u "g "i "n "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "o "n "l "y "- "v "a "n ...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:51:10.487095" elapsed="0.089712"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:10.577107" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:10.576885" elapsed="0.000295"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:10.576865" elapsed="0.000342"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:10.577662" level="INFO"> "l "o "w "p "l "u "g "i "n "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "o "n "l "y "- "v "a "n "a "d "i "u "m "/ "t "e "s "t "/ "c "s "i "t "/ "s "u "i "t "e "s "/ "o "p "e "n "f "l "o "w "p "l "u "g "i "n "/ "[78CC "[A[78Cl
 "u "s "t "e "r "i "n "g "/ "0 "2 "0 "_ "_ "C "l "u "s "t "e "r "_ "H "A "_ "O "w "n "e "r "_ "R "e "s "t "a "r "t ". "r "o "b "o "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:10.577378" elapsed="0.000377"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:10.578035" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:10.577820" elapsed="0.000269"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:10.577803" elapsed="0.000309"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T00:51:10.578144" elapsed="0.000043"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:51:10.579366" elapsed="0.000584"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:51:10.580260" elapsed="0.000440"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:51:10.580960" elapsed="0.000186"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:51:10.578943" elapsed="0.002352"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T00:51:10.578422" elapsed="0.002921"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T00:51:10.425786" elapsed="0.155659"/>
</kw>
<msg time="2026-04-08T00:51:10.581573" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:51:10.581616" level="INFO">${message} =  "l "o "w "p "l "u "g "i "n "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "o "n "l "y "- "v "a "n ...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:51:10.425284" elapsed="0.156370"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T00:51:10.581835" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-08T00:51:10.581730" elapsed="0.000163"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:10.581712" elapsed="0.000204"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 2,
close the previous connection. In any case create a new connection
to karaf console for 2, set correct prompt set and login to karaf console.
Store connection index for 2 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:10.582317" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:10.582645" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T00:51:10.582716" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T00:51:10.424652" elapsed="0.158169"/>
</kw>
<msg time="2026-04-08T00:51:10.582913" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:51:10.582957" level="INFO">${output} =  "l "o "w "p "l "u "g "i "n "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "o "n "l "y "- "v "a "n ...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:51:10.420223" elapsed="0.162771"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:10.583331" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:10.583068" elapsed="0.000317"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:10.583051" elapsed="0.000356"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T00:51:10.420068" elapsed="0.163361"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:51:10.588549" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:51:10.588443" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:10.588424" elapsed="0.000192"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:51:10.589639" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:51:10.589533" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:10.589515" elapsed="0.000190"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:51:10.590101" level="INFO">${karaf_connection_index} = 50</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:51:10.589847" elapsed="0.000280"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:51:10.590566" level="INFO">${current_connection_index} = None</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:51:10.590374" elapsed="0.000218"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T00:51:10.644046" level="INFO">@root&gt;log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "s "u "i "t "e "[C "/ "w "/ "w "o "r "k "s "p "a "c "e "/ "o "p "e "[78Cn "[A[78Cf</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T00:51:10.591081" elapsed="0.053188"/>
</kw>
<msg time="2026-04-08T00:51:10.644406" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T00:51:10.644472" level="INFO">${message_write} = @root&gt;log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "s "u "i "t "e "[C "/ "w "/ "w "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:51:10.590750" elapsed="0.053761"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T00:51:10.749742" level="INFO">"l "o "w "p "l "u "g "i "n "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "o "n "l "y "- "v "a "n "a "d "i "u "m "/ "t "e "s "t "/ "c "s "i "t "/ "s "u "i "t "e "s "/ "o "p "e "n "f "l "o "w "p "l "u "g "i "n "/ "[78CC "[A[78Cl
 "u "s "t "e "r "i "n "g "/ "0 "2 "0 "_ "_ "C "l "u "s "t "e "r "_ "H "A "_ "O "w "n "e "r "_ "R "e "s "t "a "r "t ". "r "o "b "o "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T00:51:10.645174" elapsed="0.104750"/>
</kw>
<msg time="2026-04-08T00:51:10.750028" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T00:51:10.750073" level="INFO">${message_wait} =  "l "o "w "p "l "u "g "i "n "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "o "n "l "y "- "v "a "n ...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:51:10.644741" elapsed="0.105368"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:10.750490" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:10.750226" elapsed="0.000381"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:10.750198" elapsed="0.000437"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:10.751070" level="INFO"> "l "o "w "p "l "u "g "i "n "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "o "n "l "y "- "v "a "n "a "d "i "u "m "/ "t "e "s "t "/ "c "s "i "t "/ "s "u "i "t "e "s "/ "o "p "e "n "f "l "o "w "p "l "u "g "i "n "/ "[78CC "[A[78Cl
 "u "s "t "e "r "i "n "g "/ "0 "2 "0 "_ "_ "C "l "u "s "t "e "r "_ "H "A "_ "O "w "n "e "r "_ "R "e "s "t "a "r "t ". "r "o "b "o "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:10.750780" elapsed="0.000401"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:10.751473" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:10.751253" elapsed="0.000275"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:10.751233" elapsed="0.000318"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T00:51:10.751587" elapsed="0.000065"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:51:10.752935" elapsed="0.000590"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:51:10.753824" elapsed="0.000472"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:51:10.754556" elapsed="0.000190"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:51:10.752504" elapsed="0.002394"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T00:51:10.751921" elapsed="0.003025"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T00:51:10.589283" elapsed="0.165762"/>
</kw>
<msg time="2026-04-08T00:51:10.755140" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:51:10.755207" level="INFO">${message} =  "l "o "w "p "l "u "g "i "n "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "o "n "l "y "- "v "a "n ...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:51:10.588766" elapsed="0.166480"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T00:51:10.755436" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-08T00:51:10.755329" elapsed="0.000165"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:10.755309" elapsed="0.000209"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 3,
close the previous connection. In any case create a new connection
to karaf console for 3, set correct prompt set and login to karaf console.
Store connection index for 3 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:10.755941" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:10.756305" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T00:51:10.756375" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T00:51:10.588139" elapsed="0.168343"/>
</kw>
<msg time="2026-04-08T00:51:10.756578" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:51:10.756622" level="INFO">${output} =  "l "o "w "p "l "u "g "i "n "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "o "n "l "y "- "v "a "n ...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:51:10.583683" elapsed="0.172975"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:10.756978" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:10.756733" elapsed="0.000298"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:10.756716" elapsed="0.000338"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T00:51:10.583546" elapsed="0.173530"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-08T00:51:10.278383" elapsed="0.478728"/>
</for>
<arg>Starting suite ${SUITE_SOURCE}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-08T00:51:10.276187" elapsed="0.481008"/>
</kw>
<doc>Log suite name to karaf log, useful in suite setup.</doc>
<status status="PASS" start="2026-04-08T00:51:10.270121" elapsed="0.487134"/>
</kw>
<arg>KarafKeywords.Log_Test_Suite_Start_To_Controller_Karaf</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:51:10.269695" elapsed="0.487606"/>
</kw>
<doc>Prepare both FailFast and Karaf logging, log that the caller suite has started.
This keyword is to be used in suite setup, and without it the other keywords may not work properly.</doc>
<status status="PASS" start="2026-04-08T00:51:07.592329" elapsed="3.165028"/>
</kw>
<test id="s1-s2-t1" name="Check Shards Status Before Stop" line="16">
<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-04-08T00:51:10.778742" elapsed="0.000242"/>
</kw>
<msg time="2026-04-08T00:51:10.779034" 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>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:51:10.778099" elapsed="0.000987"/>
</kw>
<arg>phosphorus</arg>
<arg>${kw_name}</arg>
<arg>@{varargs}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Compare ${lower_bound} to vanadium and in case vanadium 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-04-08T00:51:10.777611" elapsed="0.001564"/>
</kw>
<msg time="2026-04-08T00:51:10.779223" 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-04-08T00:51:10.769218" elapsed="0.010049"/>
</kw>
<arg>Collections.Remove Values From List</arg>
<arg>${SHARD_OPER_LIST}</arg>
<arg>entity-ownership</arg>
<doc>Compare phosphorus to vanadium and in case vanadium is at least phosphorus,
run ${kw_name} @{varargs} &amp;{kwargs} and return its value.</doc>
<status status="PASS" start="2026-04-08T00:51:10.768774" elapsed="0.010566"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:10.779782" 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-04-08T00:51:10.779514" elapsed="0.000312"/>
</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-04-08T00:51:10.784917" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:51:10.784532" elapsed="0.000412"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:51:10.785422" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:51:10.785102" elapsed="0.000354"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:51:10.785502" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:51:10.785655" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:51:10.784137" elapsed="0.001542"/>
</kw>
<kw name="Sort List" owner="Collections">
<arg>${index_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="PASS" start="2026-04-08T00:51:10.785832" elapsed="0.000159"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:51:10.786500" level="INFO">${ds_type} = operational</msg>
<var>${ds_type}</var>
<arg>'${shard_type}' != 'config'</arg>
<arg>operational</arg>
<arg>config</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:51:10.786148" elapsed="0.000378"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:51:10.786916" level="INFO">${leader_list} = []</msg>
<var>${leader_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:51:10.786681" elapsed="0.000261"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:51:10.787340" level="INFO">${follower_list} = []</msg>
<var>${follower_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:51:10.787087" elapsed="0.000278"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_Raft_State_Of_Shard_At_Member" owner="ClusterManagement">
<kw name="Get_Raft_Property_From_Shard_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:10.789983" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:10.789653" elapsed="0.000357"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:51:10.790058" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:51:10.790235" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:51:10.789310" elapsed="0.000952"/>
</kw>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Get_As_Json_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:10.871708" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:10.871309" elapsed="0.000428"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:51:10.872502" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:51:10.872241" elapsed="0.000342">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-08T00:51:10.872675" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:51:10.871900" elapsed="0.000799"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:51:10.873258" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:51:10.872861" elapsed="0.000466"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T00:51:10.873629" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-08T00:51:10.873800" level="INFO">${template} = /rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T00:51:10.873492" elapsed="0.000334"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:10.874237" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:10.873979" elapsed="0.000303"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:10.876568" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:10.874955" elapsed="0.001659"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-08T00:51:10.877054" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-08T00:51:10.876776" elapsed="0.000304"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:10.877413" elapsed="0.000022"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:10.877614" elapsed="0.000023"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:10.877785" elapsed="0.000021"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-08T00:51:10.877280" elapsed="0.000562"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-08T00:51:10.877128" elapsed="0.000744"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-08T00:51:10.877914" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:51:10.878071" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-08T00:51:10.874637" elapsed="0.003460"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:10.874351" elapsed="0.003777"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:10.878322" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:10.878153" elapsed="0.000225"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:10.874331" elapsed="0.004067"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:10.879040" level="INFO">${final_text} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:10.878539" elapsed="0.000529"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T00:51:10.879116" 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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="PASS" start="2026-04-08T00:51:10.870688" elapsed="0.008576"/>
</kw>
<msg time="2026-04-08T00:51:10.879317" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:51:10.858608" elapsed="0.020788"/>
</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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:10.891344" elapsed="0.000042"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:10.903184" elapsed="0.000041"/>
</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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:10.915022" elapsed="0.000040"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:10.915828" elapsed="0.000036"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:10.916571" elapsed="0.000036"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:10.917119" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:10.916972" elapsed="0.000219"/>
</branch>
<status status="NOT RUN" start="2026-04-08T00:51:10.916956" elapsed="0.000259"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:10.917374" elapsed="0.000022"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:10.917573" elapsed="0.000022"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:10.917759" elapsed="0.000022"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-08T00:51:10.916908" elapsed="0.000926"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-08T00:51:10.916689" elapsed="0.001184"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:10.918586" elapsed="0.000036"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-08T00:51:10.918706" elapsed="0.000047"/>
</return>
<msg time="2026-04-08T00:51:10.918924" level="INFO">${uri} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-08T00:51:10.852417" elapsed="0.066613"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:51:10.921835" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:51:10.921562" elapsed="0.000338">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-08T00:51:10.922087" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:51:10.921115" elapsed="0.001016"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:10.922659" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:10.922278" elapsed="0.000448"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:10.923332" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:10.923021" elapsed="0.000338"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:10.922764" elapsed="0.000644"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:10.922227" elapsed="0.001219"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:51:10.926532" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:51:10.924278" elapsed="0.002300"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-08T00:51:10.926654" elapsed="0.000061"/>
</return>
<msg time="2026-04-08T00:51:10.926964" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:51:10.920030" elapsed="0.007039"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:51:10.929808" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:51:10.929568" elapsed="0.000302">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-08T00:51:10.930055" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:51:10.929127" elapsed="0.000971"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-08T00:51:10.930492" elapsed="0.000078"/>
</return>
<status status="PASS" start="2026-04-08T00:51:10.930247" elapsed="0.000389"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:10.930195" elapsed="0.000479"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:10.931388" elapsed="0.000069"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:10.932269" elapsed="0.000037"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-08T00:51:10.932384" elapsed="0.000047"/>
</return>
<msg time="2026-04-08T00:51:10.934542" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:51:10.927893" elapsed="0.006755"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:10.938419" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:10.938010" elapsed="0.000506"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:10.939616" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:10.939209" elapsed="0.000503"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:51:10.955660" level="INFO">GET Request : url=http://10.30.170.48:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 path_url=/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:51:10.956629" level="INFO">GET Response : url=http://10.30.170.48:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 status=200, reason=OK 
 headers={'Set-Cookie': 'JSESSIONID=node01ju7g9ih47awu1dako8be5k84o113.node0; Path=/rests; HttpOnly, rememberMe=deleteMe; Path=/rests; Max-Age=0; Expires=Tue, 07-Apr-2026 00:51:10 GMT; SameSite=lax', 'Expires': 'Thu, 01 Jan 1970 00:00:00 GMT', 'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Transfer-Encoding': 'chunked'} 
 body={"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","hidden-symmetric-keys","encrypted-private-keys","asymmetrically-encrypted-value-format","cms-encrypted-data-format","cleartext-private-keys","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["ssh-client-keepalives","client-ident-hostbased","client-ident-publickey","client-ident-password"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-ex... (set the log level to DEBUG or TRACE to see the full content) 
 </msg>
<msg time="2026-04-08T00:51:10.957297" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:51:10.942042" elapsed="0.015319"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:10.939840" elapsed="0.017648"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:10.958262" elapsed="0.000057"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:10.957588" elapsed="0.000848"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:10.939787" elapsed="0.018732"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:10.966200" level="INFO">{"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","hidden-symmetric-keys","encrypted-private-keys","asymmetrically-encrypted-value-format","cms-encrypted-data-format","cleartext-private-keys","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["ssh-client-keepalives","client-ident-hostbased","client-ident-publickey","client-ident-password"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-experimenter-types?revision=2015-10-20","namespace":"urn:opendaylight:openflowplugin:experimenter:types","conformance-type":"import"},{"name":"ietf-ip_2018-02-22","revision":"2018-02-22","schema":"/rests/modules/ietf-ip?revision=2018-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-ip","conformance-type":"import","feature":["ipv6-privacy-autoconf","ipv4-non-contiguous-netmasks"]},{"name":"ietf-tcp-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-client","conformance-type":"import","feature":["local-binding-supported","tcp-client-keepalives"]},{"name":"node-config_2014-10-15","revision":"2014-10-15","schema":"/rests/modules/node-config?revision=2014-10-15","namespace":"urn:opendaylight:module:config","conformance-type":"import"},{"name":"ietf-restconf_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf","conformance-type":"import"},{"name":"ietf-datastores_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-datastores?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-datastores","conformance-type":"import"},{"name":"ietf-yang-patch_2017-02-22","revision":"2017-02-22","schema":"/rests/modules/ietf-yang-patch?revision=2017-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-patch","conformance-type":"import"},{"name":"sal-group_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-group?revision=2013-09-18","namespace":"urn:opendaylight:group:service","conformance-type":"import"},{"name":"odl-codegen-extensions_2024-06-27","revision":"2024-06-27","schema":"/rests/modules/odl-codegen-extensions?revision=2024-06-27","namespace":"urn:opendaylight:yang:extension:codegen","conformance-type":"import"},{"name":"sal-meter_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-meter?revision=2013-09-18","namespace":"urn:opendaylight:meter:service","conformance-type":"import"},{"name":"ietf-interfaces_2018-02-20","revision":"2018-02-20","schema":"/rests/modules/ietf-interfaces?revision=2018-02-20","namespace":"urn:ietf:params:xml:ns:yang:ietf-interfaces","conformance-type":"import","feature":["pre-provisioning","if-mib","arbitrary-names"]},{"name":"opendaylight-l2-types_2013-08-27","revision":"2013-08-27","schema":"/rests/modules/opendaylight-l2-types?revision=2013-08-27","namespace":"urn:opendaylight:l2:types","conformance-type":"import"},{"name":"opendaylight-flow-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-flow-types?revision=2013-10-26","namespace":"urn:opendaylight:flow:types","conformance-type":"import"},{"name":"lldp-speaker-config_2016-05-12","revision":"2016-05-12","schema":"/rests/modules/lldp-speaker-config?revision=2016-05-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker:config","conformance-type":"import"},{"name":"aaa-cert_2015-11-26","revision":"2015-11-26","schema":"/rests/modules/aaa-cert?revision=2015-11-26","namespace":"urn:opendaylight:yang:aaa:cert","conformance-type":"import"},{"name":"openflow-action_2015-02-03","revision":"2015-02-03","schema":"/rests/modules/openflow-action?revision=2015-02-03","namespace":"urn:opendaylight:openflow:common:action","conformance-type":"import"},{"name":"openflow-approved-extensions_2016-08-02","revision":"2016-08-02","schema":"/rests/modules/openflow-approved-extensions?revision=2016-08-02","namespace":"urn:opendaylight:openflow:approved:extensions","conformance-type":"import"},{"name":"nc-notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/nc-notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netmod:notification","conformance-type":"import"},{"name":"ietf-netconf-nmda_2019-01-07","revision":"2019-01-07","schema":"/rests/modules/ietf-netconf-nmda?revision=2019-01-07","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-nmda","conformance-type":"import","feature":["with-defaults","origin"]},{"name":"ietf-tcp-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-common","conformance-type":"import","feature":["keepalives-supported"]},{"name":"network-topology_2013-10-21","revision":"2013-10-21","schema":"/rests/modules/network-topology?revision=2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:network-topology","conformance-type":"import"},{"name":"aaa-encrypt-service-config_2024-02-02","revision":"2024-02-02","schema":"/rests/modules/aaa-encrypt-service-config?revision=2024-02-02","namespace":"config:aaa:authn:encrypt:service:config","conformance-type":"import"},{"name":"openflow-instruction_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-instruction?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:instruction","conformance-type":"import"},{"name":"ietf-tls-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-client","conformance-type":"import","feature":["client-ident-x509-cert","server-auth-x509-cert"]},{"name":"opendaylight-group-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-group-statistics?revision=2013-11-11","namespace":"urn:opendaylight:group:statistics","conformance-type":"import"},{"name":"cluster-admin_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/cluster-admin?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:cluster:admin","conformance-type":"import"},{"name":"opendaylight-flow-statistics_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-flow-statistics?revision=2013-08-19","namespace":"urn:opendaylight:flow:statistics","conformance-type":"import"},{"name":"opendaylight-table-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-table-types?revision=2013-10-26","namespace":"urn:opendaylight:table:types","conformance-type":"import"},{"name":"forwarding-rules-manager-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/forwarding-rules-manager-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:forwardingrules-manager:config","conformance-type":"import"},{"name":"odl-srm-types_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-types?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:types","conformance-type":"import"},{"name":"ietf-x509-cert-to-name_2014-12-10","revision":"2014-12-10","schema":"/rests/modules/ietf-x509-cert-to-name?revision=2014-12-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-x509-cert-to-name","conformance-type":"import"},{"name":"flow-node-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-node-inventory?revision=2013-08-19","namespace":"urn:opendaylight:flow:inventory","conformance-type":"import"},{"name":"flow-errors_2013-11-16","revision":"2013-11-16","schema":"/rests/modules/flow-errors?revision=2013-11-16","namespace":"urn:opendaylight:flow:errors","conformance-type":"import"},{"name":"ietf-netconf_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:netconf:base:1.0","conformance-type":"import","feature":["xpath","url","rollback-on-error","validate","startup","candidate","confirmed-commit","writable-running"]},{"name":"iana-ssh-public-key-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-public-key-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-public-key-algs","conformance-type":"import"},{"name":"aaa-cert-mdsal_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/aaa-cert-mdsal?revision=2016-03-21","namespace":"urn:opendaylight:yang:aaa:cert:mdsal","conformance-type":"import"},{"name":"odl-device-notification_2024-02-18","revision":"2024-02-18","schema":"/rests/modules/odl-device-notification?revision=2024-02-18","namespace":"urn:opendaylight:device:notification","conformance-type":"import"},{"name":"ietf-origin_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-origin?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-origin","conformance-type":"import"},{"name":"openflow-augments_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-augments?revision=2015-02-25","namespace":"urn:opendaylight:openflow:augments","conformance-type":"import"},{"name":"iana-ssh-encryption-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-encryption-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-encryption-algs","conformance-type":"import"},{"name":"ietf-truststore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-truststore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-truststore","conformance-type":"import","feature":["inline-definitions-supported"]},{"name":"distributed-datastore-provider_2025-01-30","revision":"2025-01-30","schema":"/rests/modules/distributed-datastore-provider?revision=2025-01-30","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:distributed-datastore-provider","conformance-type":"import"},{"name":"opendaylight-group-types_2013-10-18","revision":"2013-10-18","schema":"/rests/modules/opendaylight-group-types?revision=2013-10-18","namespace":"urn:opendaylight:group:types","conformance-type":"import"},{"name":"sal-remote-augment_2023-11-03","revision":"2023-11-03","schema":"/rests/modules/sal-remote-augment?revision=2023-11-03","namespace":"urn:sal:restconf:event:subscription","conformance-type":"import"},{"name":"opendaylight-ipv6-arbitrary-bitmask-fields_2016-02-24","revision":"2016-02-24","schema":"/rests/modules/opendaylight-ipv6-arbitrary-bitmask-fields?revision=2016-02-24","namespace":"urn:opendaylight:opendaylight-ipv6-arbitrary-bitmask-fields","conformance-type":"import"},{"name":"sal-flows-batch_2016-03-14","revision":"2016-03-14","schema":"/rests/modules/sal-flows-batch?revision=2016-03-14","namespace":"urn:opendaylight:flows:service","conformance-type":"import"},{"name":"ietf-tls-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-common","conformance-type":"import","feature":["tls12","hello-params","tls13"]},{"name":"openflow-types_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-types?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:types","conformance-type":"import"},{"name":"ietf-netconf-with-defaults_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf-with-defaults?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults","conformance-type":"import"},{"name":"odl-srm-ops_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-ops?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:ops","conformance-type":"import"},{"name":"odl-general-entity_2015-09-30","revision":"2015-09-30","schema":"/rests/modules/odl-general-entity?revision=2015-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:mdsal:core:general-entity","conformance-type":"import"},{"name":"iana-ssh-key-exchange-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-key-exchange-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-key-exchange-algs","conformance-type":"import"},{"name":"node-ssl-connection-error_2019-07-23","revision":"2019-07-23","schema":"/rests/modules/node-ssl-connection-error?revision=2019-07-23","namespace":"urn:opendaylight:node-ssl-connection-error:service","conformance-type":"import"},{"name":"openflow-protocol_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-protocol?revision=2013-07-31","namespace":"urn:opendaylight:openflow:protocol","conformance-type":"import"},{"name":"ietf-udp-server_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-server?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-server","conformance-type":"import"},{"name":"ietf-keystore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-keystore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-keystore","conformance-type":"import","feature":["asymmetric-keys","inline-definitions-supported"]},{"name":"aaa_2016-12-14","revision":"2016-12-14","schema":"/rests/modules/aaa?revision=2016-12-14","namespace":"urn:opendaylight:params:xml:ns:yang:aaa","conformance-type":"import"},{"name":"aaa-cert-rpc_2015-12-15","revision":"2015-12-15","schema":"/rests/modules/aaa-cert-rpc?revision=2015-12-15","namespace":"urn:opendaylight:yang:aaa:cert:rpc","conformance-type":"import"},{"name":"system-notifications_2013-09-27","revision":"2013-09-27","schema":"/rests/modules/system-notifications?revision=2013-09-27","namespace":"urn:opendaylight:openflow:system","conformance-type":"import"},{"name":"sal-flat-batch_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/sal-flat-batch?revision=2016-03-21","namespace":"urn:opendaylight:flat-batch:service","conformance-type":"import"},{"name":"notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netconf:notification:1.0","conformance-type":"import"},{"name":"sal-remote_2014-01-14","revision":"2014-01-14","schema":"/rests/modules/sal-remote?revision=2014-01-14","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:remote","conformance-type":"import"},{"name":"yang-ext_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/yang-ext?revision=2013-07-09","namespace":"urn:opendaylight:yang:extension:yang-ext","conformance-type":"import"},{"name":"opendaylight-multipart-types_2017-01-12","revision":"2017-01-12","schema":"/rests/modules/opendaylight-multipart-types?revision=2017-01-12","namespace":"urn:opendaylight:multipart:types","conformance-type":"import"},{"name":"opendaylight-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-inventory?revision=2013-08-19","namespace":"urn:opendaylight:inventory","conformance-type":"import"},{"name":"sal-queue_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-queue?revision=2015-03-05","namespace":"urn:opendaylight:queue:service","conformance-type":"import"},{"name":"sal-groups-batch_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/sal-groups-batch?revision=2016-03-15","namespace":"urn:opendaylight:groups:service","conformance-type":"import"},{"name":"arbitrator-reconcile_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/arbitrator-reconcile?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:arbitrator-reconcile:service","conformance-type":"import"},{"name":"ietf-yang-metadata_2016-08-05","revision":"2016-08-05","schema":"/rests/modules/ietf-yang-metadata?revision=2016-08-05","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-metadata","conformance-type":"import"},{"name":"opendaylight-arbitrary-bitmask-fields_2016-01-30","revision":"2016-01-30","schema":"/rests/modules/opendaylight-arbitrary-bitmask-fields?revision=2016-01-30","namespace":"urn:opendaylight:arbitrary:bitmask:fields","conformance-type":"import"},{"name":"ietf-udp-client_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-client?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-client","conformance-type":"import","feature":["local-binding"]},{"name":"opendaylight-meter-types_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/opendaylight-meter-types?revision=2013-09-18","namespace":"urn:opendaylight:meter:types","conformance-type":"import"},{"name":"opendaylight-action-types_2013-11-12","revision":"2013-11-12","schema":"/rests/modules/opendaylight-action-types?revision=2013-11-12","namespace":"urn:opendaylight:action:types","conformance-type":"import"},{"name":"sal-role_2015-07-27","revision":"2015-07-27","schema":"/rests/modules/sal-role?revision=2015-07-27","namespace":"urn:opendaylight:role:service","conformance-type":"import"},{"name":"openflow-provider-config_2016-05-10","revision":"2016-05-10","schema":"/rests/modules/openflow-provider-config?revision=2016-05-10","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:provider:config","conformance-type":"import"},{"name":"odl-serviceutils-upgrade_2018-07-02","revision":"2018-07-02","schema":"/rests/modules/odl-serviceutils-upgrade?revision=2018-07-02","namespace":"urn:opendaylight:serviceutils:upgrade","conformance-type":"import"},{"name":"opendaylight-match-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-match-types?revision=2013-10-26","namespace":"urn:opendaylight:model:match:types","conformance-type":"import"},{"name":"ietf-restconf-server_2024-08-14","revision":"2024-08-14","schema":"/rests/modules/ietf-restconf-server?revision=2024-08-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-server","conformance-type":"import","feature":["http-listen","https-listen"]},{"name":"reconciliation-result-state_2017-07-13","revision":"2017-07-13","schema":"/rests/modules/reconciliation-result-state?revision=2017-07-13","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:rf:state","conformance-type":"import"},{"name":"onf-extensions_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/onf-extensions?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf","conformance-type":"import"},{"name":"sal-table_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/sal-table?revision=2013-10-26","namespace":"urn:opendaylight:table:service","conformance-type":"import"},{"name":"iana-http-versions_2026-02-04","revision":"2026-02-04","schema":"/rests/modules/iana-http-versions?revision=2026-02-04","namespace":"urn:ietf:params:xml:ns:yang:iana-http-versions","conformance-type":"import"},{"name":"opendaylight-direct-statistics_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/opendaylight-direct-statistics?revision=2016-05-11","namespace":"urn:opendaylight:direct:statistics","conformance-type":"import"},{"name":"opendaylight-port-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-port-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:port","conformance-type":"import"},{"name":"sal-async-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/sal-async-config?revision=2017-06-19","namespace":"urn:opendaylight:async-config:service","conformance-type":"import"},{"name":"aaa-password-service-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-password-service-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:password:service:config","conformance-type":"import"},{"name":"ietf-yang-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-yang-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-types","conformance-type":"import"},{"name":"opendaylight-queue-statistics_2013-12-16","revision":"2013-12-16","schema":"/rests/modules/opendaylight-queue-statistics?revision=2013-12-16","namespace":"urn:opendaylight:queue:statistics","conformance-type":"import"},{"name":"sal-bundle_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/sal-bundle?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf:bundle:service","conformance-type":"import"},{"name":"ietf-restconf-subscribed-notifications_2019-11-17","revision":"2019-11-17","schema":"/rests/modules/ietf-restconf-subscribed-notifications?revision=2019-11-17","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-subscribed-notifications","conformance-type":"import"},{"name":"sal-meters-batch_2016-03-16","revision":"2016-03-16","schema":"/rests/modules/sal-meters-batch?revision=2016-03-16","namespace":"urn:opendaylight:meters:service","conformance-type":"import"},{"name":"odl-entity-owners","revision":"","schema":"/rests/modules/odl-entity-owners","namespace":"urn:opendaylight:params:xml:ns:yang:controller:entity-owners","conformance-type":"import"},{"name":"sal-experimenter-mp-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-mp-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-mp-message:service","conformance-type":"import"},{"name":"packet-processing_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/packet-processing?revision=2013-07-09","namespace":"urn:opendaylight:packet:service","conformance-type":"import"},{"name":"openflow-configuration_2014-06-30","revision":"2014-06-30","schema":"/rests/modules/openflow-configuration?revision=2014-06-30","namespace":"urn:opendaylight:openflow:config","conformance-type":"import"},{"name":"odl-srm-rpcs_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-rpcs?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:rpc","conformance-type":"import"},{"name":"ietf-netconf-acm_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-netconf-acm?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-acm","conformance-type":"import"},{"name":"iana-crypt-hash_2014-08-06","revision":"2014-08-06","schema":"/rests/modules/iana-crypt-hash?revision=2014-08-06","namespace":"urn:ietf:params:xml:ns:yang:iana-crypt-hash","conformance-type":"import","feature":["crypt-hash-sha-512","crypt-hash-sha-256","crypt-hash-md5"]},{"name":"openflow-extensible-match_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-extensible-match?revision=2015-02-25","namespace":"urn:opendaylight:openflow:oxm","conformance-type":"import"}],"module-set-id":"2"}}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:10.962431" elapsed="0.004099"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:10.961899" elapsed="0.004667"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:10.961851" elapsed="0.004740"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:10.969081" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:10.966897" elapsed="0.002230"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:10.966672" elapsed="0.002502"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:10.966654" elapsed="0.002546"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:10.969773" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:10.969385" elapsed="0.000415"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:10.970127" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:10.969890" elapsed="0.000352"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:10.970732" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:10.970428" elapsed="0.000330"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:10.970266" elapsed="0.000527"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:10.969871" elapsed="0.000944"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:10.971368" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:10.970992" elapsed="0.000402"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:10.971829" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:10.971485" elapsed="0.000403"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:10.972389" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:10.972068" elapsed="0.000347"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:10.971912" elapsed="0.000538"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:10.971465" elapsed="0.001007"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:51:10.972640" elapsed="0.000347"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:51:10.973476" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:10.973186" elapsed="0.000316"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:51:10.973675" elapsed="0.002178"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:51:10.960240" elapsed="0.015735"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:51:10.976340" elapsed="0.000046"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:51:10.976102" elapsed="0.000347"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:10.976051" elapsed="0.000434"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:51:10.985849" level="INFO">${text_normalized} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:51:10.977298" elapsed="0.008601"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:51:10.985979" elapsed="0.000065"/>
</return>
<msg time="2026-04-08T00:51:10.986321" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:51:10.935299" elapsed="0.051131"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:51:10.986917" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:51:10.987095" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="PASS" start="2026-04-08T00:51:10.798146" elapsed="0.188976"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Json_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:10.987463" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:10.987225" elapsed="0.000452"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:10.987206" elapsed="0.000499"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:51:10.987739" elapsed="0.000027"/>
</return>
<arg>session=${session}</arg>
<arg>folder=${RESTCONF_MODULES_DIR}</arg>
<arg>verify=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Add arguments sensible for JSON data, return Get_Templated response text.
Optionally, verification against JSON data (may be iterated) is called.
Only subset of JSON data is verified and returned if JMES path is specified in
file ${folder}/jmespath.expr.</doc>
<status status="PASS" start="2026-04-08T00:51:10.794146" elapsed="0.193718"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:10.790337" elapsed="0.197570"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:10.790319" elapsed="0.197612"/>
</if>
<kw name="Resolve_Shard_Type_Class" owner="ClusterManagement">
<if>
<branch type="IF" condition="'${shard_type}' == 'config'">
<return>
<value>DistributedConfigDatastore</value>
<status status="NOT RUN" start="2026-04-08T00:51:10.988550" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:51:10.988442" elapsed="0.000153"/>
</branch>
<branch type="ELSE IF" condition="'${shard_type}' == 'operational'">
<return>
<value>DistributedOperationalDatastore</value>
<status status="PASS" start="2026-04-08T00:51:10.988717" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-08T00:51:10.988617" elapsed="0.000157"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:10.988424" elapsed="0.000373"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized shard type: ${shard_type}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:10.988940" elapsed="0.000021"/>
</kw>
<msg time="2026-04-08T00:51:10.989058" level="INFO">${type_class} = DistributedOperationalDatastore</msg>
<var>${type_class}</var>
<arg>shard_type=${shard_type}</arg>
<doc>Simple lookup for class name corresponding to desired type.</doc>
<status status="PASS" start="2026-04-08T00:51:10.988170" elapsed="0.000914"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:10.989651" level="INFO">${cluster_index} = 1</msg>
<var>${cluster_index}</var>
<arg>${member_index}+${NODE_ROLE_INDEX_START}-1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:10.989275" elapsed="0.000403"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:10.990311" level="INFO">${uri} = jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-inventory-operational,type=DistributedOperationalDatastore</msg>
<var>${uri}</var>
<arg>${JOLOKIA_READ_URI}:Category=Shards,name=member-${cluster_index}-shard-${shard_name}-${shard_type},type=${type_class}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:10.989830" elapsed="0.000509"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:10.995920" level="INFO">jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-inventory-operational,type=DistributedOperationalDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:10.995460" elapsed="0.000509"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:10.996576" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:10.996125" elapsed="0.000497"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:51:11.015046" level="INFO">GET Request : url=http://10.30.170.48:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-inventory-operational,type=DistributedOperationalDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-inventory-operational,type=DistributedOperationalDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:51:11.015196" level="INFO">GET Response : url=http://10.30.170.48:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-inventory-operational,type=DistributedOperationalDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Wed, 08 Apr 2026 00:51:11 GMT', 'Expires': 'Tue, 07 Apr 2026 23:51:11 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-1-shard-inventory-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"ReadWriteTransactionCount":416,"SnapshotIndex":867,"InMemoryJournalLogSize":1,"ReplicatedToAllIndex":867,"Leader":"member-1-shard-inventory-operational","LastIndex":868,"RaftState":"Leader","LastApplied":868,"LastCommittedTransactionTime":"2026-04-08 00:51:05.801","PeerAddresses":"member-3-shard-inventory-operational: pekko:\/\/opendaylight-cluster-data@10.30.171.110:2550\/user\/shardmanager-operational\/member-3-shard-inventory-operational, member-2-shard-inventory-operational: pekko:\/\/opendaylight-cluster-data@10.30.170.131:2550\/user\/shardmanager-operational\/member-2-shard-inventory-operational","LastLogIndex":868,"LastLeadershipChangeTime":"2026-04-08 00:46:45.929","FollowerInitialSyncStatus":false,"FollowerInfo":[{"timeSinceLastActivity":"00:00:00.488","active":true,"matchIndex":868,"voting":true,"id":"member-3-shard-inventory-operational","nextIndex":869},{"timeSinceLastActivity":"00:00:00.488","active":true,"matchIndex":868,"voting":true,"id":"member-2-shard-inventory-operational","nextIndex":869}],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"827.5 μs","CurrentTerm":2,"LastTerm":2,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-inventory-operational","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":329,"TxCohortCacheSize":0,"PeerVotingStates":"member-3-shard-inventory-operational: true, member-2-shard-inventory-operational: true","LastLogTerm":2,"StatRetrievalError":null,"CommitIndex":868,"SnapshotTerm":2,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":14,"ShardName":"member-1-shard-inventory-operational","LeadershipChangeCount":1,"InMemoryJournalDataSize":1097257},"timestamp":1775609471,"status":200} 
 </msg>
<msg time="2026-04-08T00:51:11.015394" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:51:11.007278" elapsed="0.008238"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:10.996692" elapsed="0.019077"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:11.015951" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:11.015799" elapsed="0.000716"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:10.996672" elapsed="0.019871"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:11.021054" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-1-shard-inventory-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"ReadWriteTransactionCount":416,"SnapshotIndex":867,"InMemoryJournalLogSize":1,"ReplicatedToAllIndex":867,"Leader":"member-1-shard-inventory-operational","LastIndex":868,"RaftState":"Leader","LastApplied":868,"LastCommittedTransactionTime":"2026-04-08 00:51:05.801","PeerAddresses":"member-3-shard-inventory-operational: pekko:\/\/opendaylight-cluster-data@10.30.171.110:2550\/user\/shardmanager-operational\/member-3-shard-inventory-operational, member-2-shard-inventory-operational: pekko:\/\/opendaylight-cluster-data@10.30.170.131:2550\/user\/shardmanager-operational\/member-2-shard-inventory-operational","LastLogIndex":868,"LastLeadershipChangeTime":"2026-04-08 00:46:45.929","FollowerInitialSyncStatus":false,"FollowerInfo":[{"timeSinceLastActivity":"00:00:00.488","active":true,"matchIndex":868,"voting":true,"id":"member-3-shard-inventory-operational","nextIndex":869},{"timeSinceLastActivity":"00:00:00.488","active":true,"matchIndex":868,"voting":true,"id":"member-2-shard-inventory-operational","nextIndex":869}],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"827.5 μs","CurrentTerm":2,"LastTerm":2,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-inventory-operational","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":329,"TxCohortCacheSize":0,"PeerVotingStates":"member-3-shard-inventory-operational: true, member-2-shard-inventory-operational: true","LastLogTerm":2,"StatRetrievalError":null,"CommitIndex":868,"SnapshotTerm":2,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":14,"ShardName":"member-1-shard-inventory-operational","LeadershipChangeCount":1,"InMemoryJournalDataSize":1097257},"timestamp":1775609471,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:11.018547" elapsed="0.002639"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:11.017705" elapsed="0.003532"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:11.017686" elapsed="0.003590"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:11.024567" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:11.022223" elapsed="0.002442"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:11.021358" elapsed="0.003355"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:11.021340" elapsed="0.003410"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:11.026122" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:11.025370" elapsed="0.000830"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:11.026830" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:11.026368" elapsed="0.000594"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:11.027869" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:11.027349" elapsed="0.000567"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:11.027006" elapsed="0.000959"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:11.026347" elapsed="0.001654"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:11.029456" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:11.028706" elapsed="0.000810"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:11.030137" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:11.029680" elapsed="0.000559"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:11.031097" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:11.030602" elapsed="0.000542"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:11.030277" elapsed="0.000933"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:11.029660" elapsed="0.001586"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:51:11.031509" elapsed="0.000620"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:51:11.032988" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:11.032505" elapsed="0.000542"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:51:11.033347" elapsed="0.002311"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:51:11.017009" elapsed="0.018805"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:51:11.036012" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:51:11.035888" elapsed="0.000168"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:11.035868" elapsed="0.000210"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:51:11.039749" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-1-shard-inventory-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestam...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:51:11.036368" elapsed="0.003411"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:51:11.039865" elapsed="0.000031"/>
</return>
<msg time="2026-04-08T00:51:11.040024" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-1-shard-inventory-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestam...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:51:10.991283" elapsed="0.048769"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:51:11.040109" elapsed="0.000026"/>
</return>
<msg time="2026-04-08T00:51:11.040402" level="INFO">${data_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-1-shard-inventory-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestam...</msg>
<var>${data_text}</var>
<arg>uri=${uri}</arg>
<arg>session=${session}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-08T00:51:10.990549" elapsed="0.049880"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:11.041491" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-1-shard-inventory-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1775609...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:11.040988" elapsed="0.000533"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-08T00:51:11.041569" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:51:11.041747" level="INFO">${data_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-1-shard-inventory-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1775609...</msg>
<var>${data_object}</var>
<arg>${data_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-08T00:51:11.040650" elapsed="0.001124"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:51:11.042135" level="INFO">${value} = {'AbortTransactionsCount': 0, 'CommitIndex': 868, 'CommittedTransactionsCount': 329, 'CurrentTerm': 2, 'FailedReadTransactionsCount': 0, 'FailedTransactionsCount': 0, 'FollowerInfo': [{'active': True,...</msg>
<var>${value}</var>
<arg>${data_object}</arg>
<arg>value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:51:11.041929" elapsed="0.000249"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:51:11.042541" level="INFO">${raft_property} = Leader</msg>
<var>${raft_property}</var>
<arg>${value}</arg>
<arg>${property}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:51:11.042336" elapsed="0.000230"/>
</kw>
<return>
<value>${raft_property}</value>
<status status="PASS" start="2026-04-08T00:51:11.042613" elapsed="0.000027"/>
</return>
<msg time="2026-04-08T00:51:11.042761" level="INFO">${raft_state} = Leader</msg>
<var>${raft_state}</var>
<arg>RaftState</arg>
<arg>${shard_name}</arg>
<arg>${shard_type}</arg>
<arg>${member_index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft property.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T00:51:10.788688" elapsed="0.254098"/>
</kw>
<return>
<value>${raft_state}</value>
<status status="PASS" start="2026-04-08T00:51:11.042841" elapsed="0.000025"/>
</return>
<msg time="2026-04-08T00:51:11.042984" level="INFO">${raft_state} = Leader</msg>
<var>${raft_state}</var>
<arg>shard_name=${shard_name}</arg>
<arg>shard_type=${ds_type}</arg>
<arg>member_index=${index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft status.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T00:51:10.787806" elapsed="0.255202"/>
</kw>
<if>
<branch type="IF" condition="'Follower' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${follower_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:11.043314" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:11.043085" elapsed="0.000285"/>
</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="PASS" start="2026-04-08T00:51:11.043612" elapsed="0.000188"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:11.043393" elapsed="0.000445"/>
</branch>
<branch type="ELSE IF" condition="${validate}">
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized Raft state: ${raft_state}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:11.044007" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:11.043863" elapsed="0.000194"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:11.043067" elapsed="0.001013"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T00:51:10.787637" elapsed="0.256466"/>
</iter>
<iter>
<kw name="Get_Raft_State_Of_Shard_At_Member" owner="ClusterManagement">
<kw name="Get_Raft_Property_From_Shard_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:11.046485" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:11.046146" elapsed="0.000367"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:51:11.046558" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:51:11.046703" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:51:11.045811" elapsed="0.000916"/>
</kw>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Get_As_Json_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:11.128921" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:11.128420" elapsed="0.000593"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:51:11.129764" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:51:11.129535" elapsed="0.000298">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-08T00:51:11.129925" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:51:11.129198" elapsed="0.000753"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:51:11.130517" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:51:11.130119" elapsed="0.000425"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T00:51:11.130838" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-08T00:51:11.130975" level="INFO">${template} = /rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T00:51:11.130703" elapsed="0.000297"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:11.131435" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:11.131168" elapsed="0.000319"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:11.132441" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:11.132182" elapsed="0.000303"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-08T00:51:11.132904" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-08T00:51:11.132642" elapsed="0.000287"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:11.133259" elapsed="0.000023"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:11.133461" elapsed="0.000024"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:11.133631" elapsed="0.000021"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-08T00:51:11.133112" elapsed="0.000575"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-08T00:51:11.132978" elapsed="0.000738"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-08T00:51:11.133759" elapsed="0.000027"/>
</return>
<msg time="2026-04-08T00:51:11.133914" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-08T00:51:11.131851" elapsed="0.002088"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:11.131562" elapsed="0.002408"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:11.134137" elapsed="0.000035"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:11.133994" elapsed="0.000214"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:11.131543" elapsed="0.002685"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:11.134799" level="INFO">${final_text} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:11.134373" elapsed="0.000452"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T00:51:11.134872" elapsed="0.000028"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="PASS" start="2026-04-08T00:51:11.127798" elapsed="0.007195"/>
</kw>
<msg time="2026-04-08T00:51:11.135045" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:51:11.115739" elapsed="0.019384"/>
</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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:11.147151" elapsed="0.000068"/>
</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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:11.159050" elapsed="0.000041"/>
</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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:11.170900" elapsed="0.000041"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:11.171678" elapsed="0.000037"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:11.172422" elapsed="0.000037"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:11.172967" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:11.172823" elapsed="0.000199"/>
</branch>
<status status="NOT RUN" start="2026-04-08T00:51:11.172807" elapsed="0.000239"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:11.173221" elapsed="0.000023"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:11.173410" elapsed="0.000021"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:11.173592" elapsed="0.000021"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-08T00:51:11.172758" elapsed="0.000907"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-08T00:51:11.172541" elapsed="0.001163"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:11.174410" elapsed="0.000038"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-08T00:51:11.174534" elapsed="0.000046"/>
</return>
<msg time="2026-04-08T00:51:11.174749" level="INFO">${uri} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-08T00:51:11.109775" elapsed="0.065080"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:51:11.177664" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:51:11.177410" elapsed="0.000318">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-08T00:51:11.177913" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:51:11.176944" elapsed="0.001013"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:11.178477" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:11.178086" elapsed="0.000458"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:11.179132" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:11.178840" elapsed="0.000332"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:11.178584" elapsed="0.000637"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:11.178035" elapsed="0.001225"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:51:11.182341" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:51:11.179990" elapsed="0.002397"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-08T00:51:11.182462" elapsed="0.000063"/>
</return>
<msg time="2026-04-08T00:51:11.182864" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:51:11.175846" elapsed="0.007127"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:51:11.185792" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:51:11.185537" elapsed="0.000318">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-08T00:51:11.186043" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:51:11.185096" elapsed="0.000992"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-08T00:51:11.186487" elapsed="0.000078"/>
</return>
<status status="PASS" start="2026-04-08T00:51:11.186240" elapsed="0.000393"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:11.186187" elapsed="0.000485"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:11.187422" elapsed="0.000038"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:11.188227" elapsed="0.000039"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-08T00:51:11.188339" elapsed="0.000047"/>
</return>
<msg time="2026-04-08T00:51:11.190448" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:51:11.183853" elapsed="0.006704"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:11.194456" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:11.194053" elapsed="0.000502"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:11.195660" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:11.195256" elapsed="0.000501"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:51:11.222154" level="INFO">GET Request : url=http://10.30.170.131:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 path_url=/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:51:11.223093" level="INFO">GET Response : url=http://10.30.170.131:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 status=200, reason=OK 
 headers={'Set-Cookie': 'JSESSIONID=node012m0dyuink19r12kj250j53usg1.node0; Path=/rests; HttpOnly, rememberMe=deleteMe; Path=/rests; Max-Age=0; Expires=Tue, 07-Apr-2026 00:51:11 GMT; SameSite=lax', 'Expires': 'Thu, 01 Jan 1970 00:00:00 GMT', 'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Transfer-Encoding': 'chunked'} 
 body={"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","hidden-symmetric-keys","encrypted-private-keys","asymmetrically-encrypted-value-format","cms-encrypted-data-format","cleartext-private-keys","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["ssh-client-keepalives","client-ident-hostbased","client-ident-publickey","client-ident-password"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-ex... (set the log level to DEBUG or TRACE to see the full content) 
 </msg>
<msg time="2026-04-08T00:51:11.223596" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:51:11.198093" elapsed="0.025564"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:11.195884" elapsed="0.027897"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:11.224472" elapsed="0.000055"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:11.223879" elapsed="0.000762"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:11.195833" elapsed="0.028888"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:11.233401" level="INFO">{"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","hidden-symmetric-keys","encrypted-private-keys","asymmetrically-encrypted-value-format","cms-encrypted-data-format","cleartext-private-keys","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["ssh-client-keepalives","client-ident-hostbased","client-ident-publickey","client-ident-password"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-experimenter-types?revision=2015-10-20","namespace":"urn:opendaylight:openflowplugin:experimenter:types","conformance-type":"import"},{"name":"ietf-ip_2018-02-22","revision":"2018-02-22","schema":"/rests/modules/ietf-ip?revision=2018-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-ip","conformance-type":"import","feature":["ipv6-privacy-autoconf","ipv4-non-contiguous-netmasks"]},{"name":"ietf-tcp-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-client","conformance-type":"import","feature":["local-binding-supported","tcp-client-keepalives"]},{"name":"node-config_2014-10-15","revision":"2014-10-15","schema":"/rests/modules/node-config?revision=2014-10-15","namespace":"urn:opendaylight:module:config","conformance-type":"import"},{"name":"ietf-restconf_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf","conformance-type":"import"},{"name":"ietf-datastores_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-datastores?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-datastores","conformance-type":"import"},{"name":"ietf-yang-patch_2017-02-22","revision":"2017-02-22","schema":"/rests/modules/ietf-yang-patch?revision=2017-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-patch","conformance-type":"import"},{"name":"sal-group_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-group?revision=2013-09-18","namespace":"urn:opendaylight:group:service","conformance-type":"import"},{"name":"odl-codegen-extensions_2024-06-27","revision":"2024-06-27","schema":"/rests/modules/odl-codegen-extensions?revision=2024-06-27","namespace":"urn:opendaylight:yang:extension:codegen","conformance-type":"import"},{"name":"sal-meter_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-meter?revision=2013-09-18","namespace":"urn:opendaylight:meter:service","conformance-type":"import"},{"name":"ietf-interfaces_2018-02-20","revision":"2018-02-20","schema":"/rests/modules/ietf-interfaces?revision=2018-02-20","namespace":"urn:ietf:params:xml:ns:yang:ietf-interfaces","conformance-type":"import","feature":["pre-provisioning","if-mib","arbitrary-names"]},{"name":"opendaylight-l2-types_2013-08-27","revision":"2013-08-27","schema":"/rests/modules/opendaylight-l2-types?revision=2013-08-27","namespace":"urn:opendaylight:l2:types","conformance-type":"import"},{"name":"opendaylight-flow-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-flow-types?revision=2013-10-26","namespace":"urn:opendaylight:flow:types","conformance-type":"import"},{"name":"lldp-speaker-config_2016-05-12","revision":"2016-05-12","schema":"/rests/modules/lldp-speaker-config?revision=2016-05-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker:config","conformance-type":"import"},{"name":"aaa-cert_2015-11-26","revision":"2015-11-26","schema":"/rests/modules/aaa-cert?revision=2015-11-26","namespace":"urn:opendaylight:yang:aaa:cert","conformance-type":"import"},{"name":"openflow-action_2015-02-03","revision":"2015-02-03","schema":"/rests/modules/openflow-action?revision=2015-02-03","namespace":"urn:opendaylight:openflow:common:action","conformance-type":"import"},{"name":"openflow-approved-extensions_2016-08-02","revision":"2016-08-02","schema":"/rests/modules/openflow-approved-extensions?revision=2016-08-02","namespace":"urn:opendaylight:openflow:approved:extensions","conformance-type":"import"},{"name":"nc-notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/nc-notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netmod:notification","conformance-type":"import"},{"name":"ietf-netconf-nmda_2019-01-07","revision":"2019-01-07","schema":"/rests/modules/ietf-netconf-nmda?revision=2019-01-07","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-nmda","conformance-type":"import","feature":["with-defaults","origin"]},{"name":"ietf-tcp-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-common","conformance-type":"import","feature":["keepalives-supported"]},{"name":"network-topology_2013-10-21","revision":"2013-10-21","schema":"/rests/modules/network-topology?revision=2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:network-topology","conformance-type":"import"},{"name":"aaa-encrypt-service-config_2024-02-02","revision":"2024-02-02","schema":"/rests/modules/aaa-encrypt-service-config?revision=2024-02-02","namespace":"config:aaa:authn:encrypt:service:config","conformance-type":"import"},{"name":"openflow-instruction_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-instruction?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:instruction","conformance-type":"import"},{"name":"ietf-tls-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-client","conformance-type":"import","feature":["client-ident-x509-cert","server-auth-x509-cert"]},{"name":"opendaylight-group-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-group-statistics?revision=2013-11-11","namespace":"urn:opendaylight:group:statistics","conformance-type":"import"},{"name":"cluster-admin_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/cluster-admin?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:cluster:admin","conformance-type":"import"},{"name":"opendaylight-flow-statistics_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-flow-statistics?revision=2013-08-19","namespace":"urn:opendaylight:flow:statistics","conformance-type":"import"},{"name":"opendaylight-table-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-table-types?revision=2013-10-26","namespace":"urn:opendaylight:table:types","conformance-type":"import"},{"name":"forwarding-rules-manager-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/forwarding-rules-manager-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:forwardingrules-manager:config","conformance-type":"import"},{"name":"odl-srm-types_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-types?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:types","conformance-type":"import"},{"name":"ietf-x509-cert-to-name_2014-12-10","revision":"2014-12-10","schema":"/rests/modules/ietf-x509-cert-to-name?revision=2014-12-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-x509-cert-to-name","conformance-type":"import"},{"name":"flow-node-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-node-inventory?revision=2013-08-19","namespace":"urn:opendaylight:flow:inventory","conformance-type":"import"},{"name":"flow-errors_2013-11-16","revision":"2013-11-16","schema":"/rests/modules/flow-errors?revision=2013-11-16","namespace":"urn:opendaylight:flow:errors","conformance-type":"import"},{"name":"ietf-netconf_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:netconf:base:1.0","conformance-type":"import","feature":["xpath","url","rollback-on-error","validate","startup","candidate","confirmed-commit","writable-running"]},{"name":"iana-ssh-public-key-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-public-key-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-public-key-algs","conformance-type":"import"},{"name":"aaa-cert-mdsal_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/aaa-cert-mdsal?revision=2016-03-21","namespace":"urn:opendaylight:yang:aaa:cert:mdsal","conformance-type":"import"},{"name":"odl-device-notification_2024-02-18","revision":"2024-02-18","schema":"/rests/modules/odl-device-notification?revision=2024-02-18","namespace":"urn:opendaylight:device:notification","conformance-type":"import"},{"name":"ietf-origin_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-origin?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-origin","conformance-type":"import"},{"name":"openflow-augments_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-augments?revision=2015-02-25","namespace":"urn:opendaylight:openflow:augments","conformance-type":"import"},{"name":"iana-ssh-encryption-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-encryption-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-encryption-algs","conformance-type":"import"},{"name":"ietf-truststore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-truststore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-truststore","conformance-type":"import","feature":["inline-definitions-supported"]},{"name":"distributed-datastore-provider_2025-01-30","revision":"2025-01-30","schema":"/rests/modules/distributed-datastore-provider?revision=2025-01-30","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:distributed-datastore-provider","conformance-type":"import"},{"name":"opendaylight-group-types_2013-10-18","revision":"2013-10-18","schema":"/rests/modules/opendaylight-group-types?revision=2013-10-18","namespace":"urn:opendaylight:group:types","conformance-type":"import"},{"name":"sal-remote-augment_2023-11-03","revision":"2023-11-03","schema":"/rests/modules/sal-remote-augment?revision=2023-11-03","namespace":"urn:sal:restconf:event:subscription","conformance-type":"import"},{"name":"opendaylight-ipv6-arbitrary-bitmask-fields_2016-02-24","revision":"2016-02-24","schema":"/rests/modules/opendaylight-ipv6-arbitrary-bitmask-fields?revision=2016-02-24","namespace":"urn:opendaylight:opendaylight-ipv6-arbitrary-bitmask-fields","conformance-type":"import"},{"name":"sal-flows-batch_2016-03-14","revision":"2016-03-14","schema":"/rests/modules/sal-flows-batch?revision=2016-03-14","namespace":"urn:opendaylight:flows:service","conformance-type":"import"},{"name":"ietf-tls-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-common","conformance-type":"import","feature":["tls12","hello-params","tls13"]},{"name":"openflow-types_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-types?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:types","conformance-type":"import"},{"name":"ietf-netconf-with-defaults_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf-with-defaults?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults","conformance-type":"import"},{"name":"odl-srm-ops_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-ops?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:ops","conformance-type":"import"},{"name":"odl-general-entity_2015-09-30","revision":"2015-09-30","schema":"/rests/modules/odl-general-entity?revision=2015-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:mdsal:core:general-entity","conformance-type":"import"},{"name":"iana-ssh-key-exchange-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-key-exchange-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-key-exchange-algs","conformance-type":"import"},{"name":"node-ssl-connection-error_2019-07-23","revision":"2019-07-23","schema":"/rests/modules/node-ssl-connection-error?revision=2019-07-23","namespace":"urn:opendaylight:node-ssl-connection-error:service","conformance-type":"import"},{"name":"openflow-protocol_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-protocol?revision=2013-07-31","namespace":"urn:opendaylight:openflow:protocol","conformance-type":"import"},{"name":"ietf-udp-server_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-server?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-server","conformance-type":"import"},{"name":"ietf-keystore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-keystore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-keystore","conformance-type":"import","feature":["asymmetric-keys","inline-definitions-supported"]},{"name":"aaa_2016-12-14","revision":"2016-12-14","schema":"/rests/modules/aaa?revision=2016-12-14","namespace":"urn:opendaylight:params:xml:ns:yang:aaa","conformance-type":"import"},{"name":"aaa-cert-rpc_2015-12-15","revision":"2015-12-15","schema":"/rests/modules/aaa-cert-rpc?revision=2015-12-15","namespace":"urn:opendaylight:yang:aaa:cert:rpc","conformance-type":"import"},{"name":"system-notifications_2013-09-27","revision":"2013-09-27","schema":"/rests/modules/system-notifications?revision=2013-09-27","namespace":"urn:opendaylight:openflow:system","conformance-type":"import"},{"name":"sal-flat-batch_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/sal-flat-batch?revision=2016-03-21","namespace":"urn:opendaylight:flat-batch:service","conformance-type":"import"},{"name":"notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netconf:notification:1.0","conformance-type":"import"},{"name":"sal-remote_2014-01-14","revision":"2014-01-14","schema":"/rests/modules/sal-remote?revision=2014-01-14","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:remote","conformance-type":"import"},{"name":"yang-ext_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/yang-ext?revision=2013-07-09","namespace":"urn:opendaylight:yang:extension:yang-ext","conformance-type":"import"},{"name":"opendaylight-multipart-types_2017-01-12","revision":"2017-01-12","schema":"/rests/modules/opendaylight-multipart-types?revision=2017-01-12","namespace":"urn:opendaylight:multipart:types","conformance-type":"import"},{"name":"opendaylight-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-inventory?revision=2013-08-19","namespace":"urn:opendaylight:inventory","conformance-type":"import"},{"name":"sal-queue_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-queue?revision=2015-03-05","namespace":"urn:opendaylight:queue:service","conformance-type":"import"},{"name":"sal-groups-batch_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/sal-groups-batch?revision=2016-03-15","namespace":"urn:opendaylight:groups:service","conformance-type":"import"},{"name":"arbitrator-reconcile_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/arbitrator-reconcile?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:arbitrator-reconcile:service","conformance-type":"import"},{"name":"ietf-yang-metadata_2016-08-05","revision":"2016-08-05","schema":"/rests/modules/ietf-yang-metadata?revision=2016-08-05","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-metadata","conformance-type":"import"},{"name":"opendaylight-arbitrary-bitmask-fields_2016-01-30","revision":"2016-01-30","schema":"/rests/modules/opendaylight-arbitrary-bitmask-fields?revision=2016-01-30","namespace":"urn:opendaylight:arbitrary:bitmask:fields","conformance-type":"import"},{"name":"ietf-udp-client_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-client?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-client","conformance-type":"import","feature":["local-binding"]},{"name":"opendaylight-meter-types_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/opendaylight-meter-types?revision=2013-09-18","namespace":"urn:opendaylight:meter:types","conformance-type":"import"},{"name":"opendaylight-action-types_2013-11-12","revision":"2013-11-12","schema":"/rests/modules/opendaylight-action-types?revision=2013-11-12","namespace":"urn:opendaylight:action:types","conformance-type":"import"},{"name":"sal-role_2015-07-27","revision":"2015-07-27","schema":"/rests/modules/sal-role?revision=2015-07-27","namespace":"urn:opendaylight:role:service","conformance-type":"import"},{"name":"openflow-provider-config_2016-05-10","revision":"2016-05-10","schema":"/rests/modules/openflow-provider-config?revision=2016-05-10","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:provider:config","conformance-type":"import"},{"name":"odl-serviceutils-upgrade_2018-07-02","revision":"2018-07-02","schema":"/rests/modules/odl-serviceutils-upgrade?revision=2018-07-02","namespace":"urn:opendaylight:serviceutils:upgrade","conformance-type":"import"},{"name":"opendaylight-match-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-match-types?revision=2013-10-26","namespace":"urn:opendaylight:model:match:types","conformance-type":"import"},{"name":"ietf-restconf-server_2024-08-14","revision":"2024-08-14","schema":"/rests/modules/ietf-restconf-server?revision=2024-08-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-server","conformance-type":"import","feature":["http-listen","https-listen"]},{"name":"reconciliation-result-state_2017-07-13","revision":"2017-07-13","schema":"/rests/modules/reconciliation-result-state?revision=2017-07-13","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:rf:state","conformance-type":"import"},{"name":"onf-extensions_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/onf-extensions?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf","conformance-type":"import"},{"name":"sal-table_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/sal-table?revision=2013-10-26","namespace":"urn:opendaylight:table:service","conformance-type":"import"},{"name":"iana-http-versions_2026-02-04","revision":"2026-02-04","schema":"/rests/modules/iana-http-versions?revision=2026-02-04","namespace":"urn:ietf:params:xml:ns:yang:iana-http-versions","conformance-type":"import"},{"name":"opendaylight-direct-statistics_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/opendaylight-direct-statistics?revision=2016-05-11","namespace":"urn:opendaylight:direct:statistics","conformance-type":"import"},{"name":"opendaylight-port-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-port-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:port","conformance-type":"import"},{"name":"sal-async-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/sal-async-config?revision=2017-06-19","namespace":"urn:opendaylight:async-config:service","conformance-type":"import"},{"name":"aaa-password-service-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-password-service-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:password:service:config","conformance-type":"import"},{"name":"ietf-yang-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-yang-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-types","conformance-type":"import"},{"name":"opendaylight-queue-statistics_2013-12-16","revision":"2013-12-16","schema":"/rests/modules/opendaylight-queue-statistics?revision=2013-12-16","namespace":"urn:opendaylight:queue:statistics","conformance-type":"import"},{"name":"sal-bundle_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/sal-bundle?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf:bundle:service","conformance-type":"import"},{"name":"ietf-restconf-subscribed-notifications_2019-11-17","revision":"2019-11-17","schema":"/rests/modules/ietf-restconf-subscribed-notifications?revision=2019-11-17","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-subscribed-notifications","conformance-type":"import"},{"name":"sal-meters-batch_2016-03-16","revision":"2016-03-16","schema":"/rests/modules/sal-meters-batch?revision=2016-03-16","namespace":"urn:opendaylight:meters:service","conformance-type":"import"},{"name":"odl-entity-owners","revision":"","schema":"/rests/modules/odl-entity-owners","namespace":"urn:opendaylight:params:xml:ns:yang:controller:entity-owners","conformance-type":"import"},{"name":"sal-experimenter-mp-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-mp-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-mp-message:service","conformance-type":"import"},{"name":"packet-processing_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/packet-processing?revision=2013-07-09","namespace":"urn:opendaylight:packet:service","conformance-type":"import"},{"name":"openflow-configuration_2014-06-30","revision":"2014-06-30","schema":"/rests/modules/openflow-configuration?revision=2014-06-30","namespace":"urn:opendaylight:openflow:config","conformance-type":"import"},{"name":"odl-srm-rpcs_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-rpcs?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:rpc","conformance-type":"import"},{"name":"ietf-netconf-acm_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-netconf-acm?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-acm","conformance-type":"import"},{"name":"iana-crypt-hash_2014-08-06","revision":"2014-08-06","schema":"/rests/modules/iana-crypt-hash?revision=2014-08-06","namespace":"urn:ietf:params:xml:ns:yang:iana-crypt-hash","conformance-type":"import","feature":["crypt-hash-sha-512","crypt-hash-sha-256","crypt-hash-md5"]},{"name":"openflow-extensible-match_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-extensible-match?revision=2015-02-25","namespace":"urn:opendaylight:openflow:oxm","conformance-type":"import"}],"module-set-id":"2"}}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:11.228680" elapsed="0.005068"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:11.228019" elapsed="0.005765"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:11.227970" elapsed="0.005839"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:11.236274" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:11.234113" elapsed="0.002207"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:11.233888" elapsed="0.002466"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:11.233870" elapsed="0.002508"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:11.236933" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:11.236558" elapsed="0.000402"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:11.237325" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:11.237050" elapsed="0.000335"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:11.237872" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:11.237568" elapsed="0.000330"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:11.237409" elapsed="0.000524"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:11.237030" elapsed="0.000925"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:11.238516" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:11.238134" elapsed="0.000408"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:11.238863" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:11.238632" elapsed="0.000287"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:11.239427" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:11.239099" elapsed="0.000357"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:11.238943" elapsed="0.000549"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:11.238613" elapsed="0.000901"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:51:11.239681" elapsed="0.000352"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:51:11.240517" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:11.240235" elapsed="0.000308"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:51:11.240714" elapsed="0.002258"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:51:11.226386" elapsed="0.016706"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:51:11.243479" elapsed="0.000045"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:51:11.243235" elapsed="0.000350"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:11.243183" elapsed="0.000438"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:51:11.252358" level="INFO">${text_normalized} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:51:11.244327" elapsed="0.008081"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:51:11.252483" elapsed="0.000063"/>
</return>
<msg time="2026-04-08T00:51:11.252797" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:51:11.191318" elapsed="0.061585"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:51:11.253401" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:51:11.253577" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="PASS" start="2026-04-08T00:51:11.054870" elapsed="0.198734"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Json_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:11.253924" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:11.253688" elapsed="0.000421"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:11.253671" elapsed="0.000467"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:51:11.254217" elapsed="0.000028"/>
</return>
<arg>session=${session}</arg>
<arg>folder=${RESTCONF_MODULES_DIR}</arg>
<arg>verify=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Add arguments sensible for JSON data, return Get_Templated response text.
Optionally, verification against JSON data (may be iterated) is called.
Only subset of JSON data is verified and returned if JMES path is specified in
file ${folder}/jmespath.expr.</doc>
<status status="PASS" start="2026-04-08T00:51:11.050825" elapsed="0.203525"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:11.046793" elapsed="0.207601"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:11.046775" elapsed="0.207642"/>
</if>
<kw name="Resolve_Shard_Type_Class" owner="ClusterManagement">
<if>
<branch type="IF" condition="'${shard_type}' == 'config'">
<return>
<value>DistributedConfigDatastore</value>
<status status="NOT RUN" start="2026-04-08T00:51:11.255011" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:51:11.254904" elapsed="0.000151"/>
</branch>
<branch type="ELSE IF" condition="'${shard_type}' == 'operational'">
<return>
<value>DistributedOperationalDatastore</value>
<status status="PASS" start="2026-04-08T00:51:11.255218" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-08T00:51:11.255077" elapsed="0.000200"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:11.254886" elapsed="0.000414"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized shard type: ${shard_type}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:11.255466" elapsed="0.000022"/>
</kw>
<msg time="2026-04-08T00:51:11.255586" level="INFO">${type_class} = DistributedOperationalDatastore</msg>
<var>${type_class}</var>
<arg>shard_type=${shard_type}</arg>
<doc>Simple lookup for class name corresponding to desired type.</doc>
<status status="PASS" start="2026-04-08T00:51:11.254639" elapsed="0.000972"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:11.256142" level="INFO">${cluster_index} = 2</msg>
<var>${cluster_index}</var>
<arg>${member_index}+${NODE_ROLE_INDEX_START}-1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:11.255775" elapsed="0.000409"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:11.256797" level="INFO">${uri} = jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-inventory-operational,type=DistributedOperationalDatastore</msg>
<var>${uri}</var>
<arg>${JOLOKIA_READ_URI}:Category=Shards,name=member-${cluster_index}-shard-${shard_name}-${shard_type},type=${type_class}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:11.256338" elapsed="0.000487"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:11.262344" level="INFO">jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-inventory-operational,type=DistributedOperationalDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:11.261881" elapsed="0.000511"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:11.262972" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:11.262544" elapsed="0.000472"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:51:11.282816" level="INFO">GET Request : url=http://10.30.170.131:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-inventory-operational,type=DistributedOperationalDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-inventory-operational,type=DistributedOperationalDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:51:11.282950" level="INFO">GET Response : url=http://10.30.170.131:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-inventory-operational,type=DistributedOperationalDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Wed, 08 Apr 2026 00:51:11 GMT', 'Expires': 'Tue, 07 Apr 2026 23:51:11 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-2-shard-inventory-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"ReadWriteTransactionCount":0,"SnapshotIndex":867,"InMemoryJournalLogSize":1,"ReplicatedToAllIndex":867,"Leader":"member-1-shard-inventory-operational","LastIndex":868,"RaftState":"Follower","LastCommittedTransactionTime":"1970-01-01 00:00:00.000","LastApplied":868,"PeerAddresses":"member-1-shard-inventory-operational: pekko:\/\/opendaylight-cluster-data@10.30.170.48:2550\/user\/shardmanager-operational\/member-1-shard-inventory-operational, member-3-shard-inventory-operational: pekko:\/\/opendaylight-cluster-data@10.30.171.110:2550\/user\/shardmanager-operational\/member-3-shard-inventory-operational","LastLogIndex":868,"LastLeadershipChangeTime":"2026-04-08 00:46:45.936","FollowerInitialSyncStatus":true,"FollowerInfo":[],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"391.1 μs","CurrentTerm":2,"LastTerm":2,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-inventory-operational","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":0,"TxCohortCacheSize":0,"PeerVotingStates":"member-1-shard-inventory-operational: true, member-3-shard-inventory-operational: true","LastLogTerm":2,"StatRetrievalError":null,"CommitIndex":868,"SnapshotTerm":2,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-2-shard-inventory-operational","LeadershipChangeCount":1,"InMemoryJournalDataSize":1097257},"timestamp":1775609471,"status":200} 
 </msg>
<msg time="2026-04-08T00:51:11.283171" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:51:11.273770" elapsed="0.009509"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:11.263084" elapsed="0.020462"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:11.283729" elapsed="0.000028"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:11.283577" elapsed="0.000469"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:11.263065" elapsed="0.021006"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:11.288804" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-2-shard-inventory-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"ReadWriteTransactionCount":0,"SnapshotIndex":867,"InMemoryJournalLogSize":1,"ReplicatedToAllIndex":867,"Leader":"member-1-shard-inventory-operational","LastIndex":868,"RaftState":"Follower","LastCommittedTransactionTime":"1970-01-01 00:00:00.000","LastApplied":868,"PeerAddresses":"member-1-shard-inventory-operational: pekko:\/\/opendaylight-cluster-data@10.30.170.48:2550\/user\/shardmanager-operational\/member-1-shard-inventory-operational, member-3-shard-inventory-operational: pekko:\/\/opendaylight-cluster-data@10.30.171.110:2550\/user\/shardmanager-operational\/member-3-shard-inventory-operational","LastLogIndex":868,"LastLeadershipChangeTime":"2026-04-08 00:46:45.936","FollowerInitialSyncStatus":true,"FollowerInfo":[],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"391.1 μs","CurrentTerm":2,"LastTerm":2,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-inventory-operational","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":0,"TxCohortCacheSize":0,"PeerVotingStates":"member-1-shard-inventory-operational: true, member-3-shard-inventory-operational: true","LastLogTerm":2,"StatRetrievalError":null,"CommitIndex":868,"SnapshotTerm":2,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-2-shard-inventory-operational","LeadershipChangeCount":1,"InMemoryJournalDataSize":1097257},"timestamp":1775609471,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:11.286138" elapsed="0.002827"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:11.285242" elapsed="0.003791"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:11.285223" elapsed="0.003864"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:11.293711" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:11.290431" elapsed="0.003416"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:11.289223" elapsed="0.004692"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:11.289196" elapsed="0.004772"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:11.296128" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:11.295030" elapsed="0.001289"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:11.297326" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:11.296557" elapsed="0.000894"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:11.298709" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:11.297967" elapsed="0.000806"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:11.297504" elapsed="0.001340"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:11.296528" elapsed="0.002366"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:11.300719" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:11.299802" elapsed="0.000977"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:11.301438" elapsed="0.000035"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:11.300943" elapsed="0.000581"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:11.302396" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:11.301885" elapsed="0.000556"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:11.301560" elapsed="0.000929"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:11.300923" elapsed="0.001603"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:51:11.302743" elapsed="0.000637"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:51:11.304178" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:11.303682" elapsed="0.000559"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:51:11.304524" elapsed="0.002478"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:51:11.284555" elapsed="0.022621"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:51:11.307398" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:51:11.307251" elapsed="0.000195"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:11.307232" elapsed="0.000235"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:51:11.311029" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-2-shard-inventory-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestam...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:51:11.307611" elapsed="0.003448"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:51:11.311110" elapsed="0.000031"/>
</return>
<msg time="2026-04-08T00:51:11.311291" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-2-shard-inventory-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestam...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:51:11.257773" elapsed="0.053604"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:51:11.311441" elapsed="0.000027"/>
</return>
<msg time="2026-04-08T00:51:11.311591" level="INFO">${data_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-2-shard-inventory-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestam...</msg>
<var>${data_text}</var>
<arg>uri=${uri}</arg>
<arg>session=${session}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-08T00:51:11.257032" elapsed="0.054585"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:11.312701" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-2-shard-inventory-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1775609...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:11.312190" elapsed="0.000541"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-08T00:51:11.312780" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:51:11.312953" level="INFO">${data_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-2-shard-inventory-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1775609...</msg>
<var>${data_object}</var>
<arg>${data_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-08T00:51:11.311837" elapsed="0.001143"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:51:11.313429" level="INFO">${value} = {'AbortTransactionsCount': 0, 'CommitIndex': 868, 'CommittedTransactionsCount': 0, 'CurrentTerm': 2, 'FailedReadTransactionsCount': 0, 'FailedTransactionsCount': 0, 'FollowerInfo': [], 'FollowerInitia...</msg>
<var>${value}</var>
<arg>${data_object}</arg>
<arg>value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:51:11.313132" elapsed="0.000325"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:51:11.313811" level="INFO">${raft_property} = Follower</msg>
<var>${raft_property}</var>
<arg>${value}</arg>
<arg>${property}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:51:11.313612" elapsed="0.000224"/>
</kw>
<return>
<value>${raft_property}</value>
<status status="PASS" start="2026-04-08T00:51:11.313882" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:51:11.314032" level="INFO">${raft_state} = Follower</msg>
<var>${raft_state}</var>
<arg>RaftState</arg>
<arg>${shard_name}</arg>
<arg>${shard_type}</arg>
<arg>${member_index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft property.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T00:51:11.045214" elapsed="0.268842"/>
</kw>
<return>
<value>${raft_state}</value>
<status status="PASS" start="2026-04-08T00:51:11.314112" elapsed="0.000026"/>
</return>
<msg time="2026-04-08T00:51:11.314274" level="INFO">${raft_state} = Follower</msg>
<var>${raft_state}</var>
<arg>shard_name=${shard_name}</arg>
<arg>shard_type=${ds_type}</arg>
<arg>member_index=${index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft status.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T00:51:11.044499" elapsed="0.269800"/>
</kw>
<if>
<branch type="IF" condition="'Follower' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${follower_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-08T00:51:11.314592" elapsed="0.000190"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:11.314379" elapsed="0.000440"/>
</branch>
<branch type="ELSE IF" condition="'Leader' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${leader_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:11.314985" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:11.314843" elapsed="0.000196"/>
</branch>
<branch type="ELSE IF" condition="${validate}">
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized Raft state: ${raft_state}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:11.315216" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:11.315062" elapsed="0.000206"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:11.314361" elapsed="0.000929"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T00:51:11.044335" elapsed="0.270988"/>
</iter>
<iter>
<kw name="Get_Raft_State_Of_Shard_At_Member" owner="ClusterManagement">
<kw name="Get_Raft_Property_From_Shard_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:11.317671" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:11.317342" elapsed="0.000356"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:51:11.317743" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:51:11.317891" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:51:11.316968" elapsed="0.000948"/>
</kw>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Get_As_Json_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:11.400478" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:11.400078" elapsed="0.000428"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:51:11.401336" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:51:11.400996" elapsed="0.000415">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-08T00:51:11.401566" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:51:11.400668" elapsed="0.000923"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:51:11.402138" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:51:11.401754" elapsed="0.000434"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T00:51:11.402487" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-08T00:51:11.402645" level="INFO">${template} = /rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T00:51:11.402351" elapsed="0.000320"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:11.403069" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:11.402824" elapsed="0.000289"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:11.404080" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:11.403825" elapsed="0.000299"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-08T00:51:11.404570" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-08T00:51:11.404305" elapsed="0.000290"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:11.404916" elapsed="0.000021"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:11.405116" elapsed="0.000023"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:11.405304" elapsed="0.000021"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-08T00:51:11.404784" elapsed="0.000577"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-08T00:51:11.404645" elapsed="0.000745"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-08T00:51:11.405433" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:51:11.405589" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-08T00:51:11.403509" elapsed="0.002104"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:11.403201" elapsed="0.002443"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:11.405813" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:11.405669" elapsed="0.000198"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:11.403180" elapsed="0.002707"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:11.406477" level="INFO">${final_text} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:11.406024" elapsed="0.000480"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T00:51:11.406552" elapsed="0.000028"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="PASS" start="2026-04-08T00:51:11.399338" elapsed="0.007335"/>
</kw>
<msg time="2026-04-08T00:51:11.406726" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:51:11.387308" elapsed="0.019508"/>
</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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:11.418875" elapsed="0.000041"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:11.430696" elapsed="0.000040"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:11.442608" elapsed="0.000040"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:11.443401" elapsed="0.000037"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:11.444190" elapsed="0.000036"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:11.444736" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:11.444592" elapsed="0.000200"/>
</branch>
<status status="NOT RUN" start="2026-04-08T00:51:11.444575" elapsed="0.000240"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:11.444970" elapsed="0.000022"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:11.445153" elapsed="0.000037"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:11.445353" elapsed="0.000020"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-08T00:51:11.444527" elapsed="0.000900"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-08T00:51:11.444308" elapsed="0.001158"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:11.446146" elapsed="0.000050"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-08T00:51:11.446280" elapsed="0.000048"/>
</return>
<msg time="2026-04-08T00:51:11.446500" level="INFO">${uri} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-08T00:51:11.380946" elapsed="0.065659"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:51:11.449414" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:51:11.449149" elapsed="0.000329">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-08T00:51:11.449663" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:51:11.448715" elapsed="0.000992"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:11.450228" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:11.449836" elapsed="0.000459"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:11.450880" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:11.450588" elapsed="0.000318"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:11.450333" elapsed="0.000618"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:11.449786" elapsed="0.001203"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:51:11.454053" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:51:11.451724" elapsed="0.002374"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-08T00:51:11.454190" elapsed="0.000063"/>
</return>
<msg time="2026-04-08T00:51:11.454502" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:51:11.447599" elapsed="0.007008"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:51:11.457329" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:51:11.457073" elapsed="0.000320">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-08T00:51:11.457624" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:51:11.456644" elapsed="0.001025"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-08T00:51:11.458042" elapsed="0.000077"/>
</return>
<status status="PASS" start="2026-04-08T00:51:11.457799" elapsed="0.000401"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:11.457748" elapsed="0.000491"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:11.458944" elapsed="0.000036"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:11.459705" elapsed="0.000037"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-08T00:51:11.459815" elapsed="0.000048"/>
</return>
<msg time="2026-04-08T00:51:11.462029" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:51:11.455433" elapsed="0.006701"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:11.465893" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:11.465514" elapsed="0.000476"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:11.467063" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:11.466688" elapsed="0.000487"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:51:11.487654" level="INFO">GET Request : url=http://10.30.171.110:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 path_url=/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:51:11.488600" level="INFO">GET Response : url=http://10.30.171.110:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 status=200, reason=OK 
 headers={'Set-Cookie': 'JSESSIONID=node0u16rl3earouwvehy59feej101.node0; Path=/rests; HttpOnly, rememberMe=deleteMe; Path=/rests; Max-Age=0; Expires=Tue, 07-Apr-2026 00:51:11 GMT; SameSite=lax', 'Expires': 'Thu, 01 Jan 1970 00:00:00 GMT', 'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Transfer-Encoding': 'chunked'} 
 body={"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","hidden-symmetric-keys","encrypted-private-keys","asymmetrically-encrypted-value-format","cms-encrypted-data-format","cleartext-private-keys","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["ssh-client-keepalives","client-ident-hostbased","client-ident-publickey","client-ident-password"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-ex... (set the log level to DEBUG or TRACE to see the full content) 
 </msg>
<msg time="2026-04-08T00:51:11.489047" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:51:11.469525" elapsed="0.019581"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:11.467340" elapsed="0.021920"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:11.489900" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:11.489357" elapsed="0.000708"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:11.467285" elapsed="0.022858"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:11.497937" level="INFO">{"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","hidden-symmetric-keys","encrypted-private-keys","asymmetrically-encrypted-value-format","cms-encrypted-data-format","cleartext-private-keys","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["ssh-client-keepalives","client-ident-hostbased","client-ident-publickey","client-ident-password"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-experimenter-types?revision=2015-10-20","namespace":"urn:opendaylight:openflowplugin:experimenter:types","conformance-type":"import"},{"name":"ietf-ip_2018-02-22","revision":"2018-02-22","schema":"/rests/modules/ietf-ip?revision=2018-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-ip","conformance-type":"import","feature":["ipv6-privacy-autoconf","ipv4-non-contiguous-netmasks"]},{"name":"ietf-tcp-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-client","conformance-type":"import","feature":["local-binding-supported","tcp-client-keepalives"]},{"name":"node-config_2014-10-15","revision":"2014-10-15","schema":"/rests/modules/node-config?revision=2014-10-15","namespace":"urn:opendaylight:module:config","conformance-type":"import"},{"name":"ietf-restconf_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf","conformance-type":"import"},{"name":"ietf-datastores_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-datastores?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-datastores","conformance-type":"import"},{"name":"ietf-yang-patch_2017-02-22","revision":"2017-02-22","schema":"/rests/modules/ietf-yang-patch?revision=2017-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-patch","conformance-type":"import"},{"name":"sal-group_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-group?revision=2013-09-18","namespace":"urn:opendaylight:group:service","conformance-type":"import"},{"name":"odl-codegen-extensions_2024-06-27","revision":"2024-06-27","schema":"/rests/modules/odl-codegen-extensions?revision=2024-06-27","namespace":"urn:opendaylight:yang:extension:codegen","conformance-type":"import"},{"name":"sal-meter_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-meter?revision=2013-09-18","namespace":"urn:opendaylight:meter:service","conformance-type":"import"},{"name":"ietf-interfaces_2018-02-20","revision":"2018-02-20","schema":"/rests/modules/ietf-interfaces?revision=2018-02-20","namespace":"urn:ietf:params:xml:ns:yang:ietf-interfaces","conformance-type":"import","feature":["pre-provisioning","if-mib","arbitrary-names"]},{"name":"opendaylight-l2-types_2013-08-27","revision":"2013-08-27","schema":"/rests/modules/opendaylight-l2-types?revision=2013-08-27","namespace":"urn:opendaylight:l2:types","conformance-type":"import"},{"name":"opendaylight-flow-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-flow-types?revision=2013-10-26","namespace":"urn:opendaylight:flow:types","conformance-type":"import"},{"name":"lldp-speaker-config_2016-05-12","revision":"2016-05-12","schema":"/rests/modules/lldp-speaker-config?revision=2016-05-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker:config","conformance-type":"import"},{"name":"aaa-cert_2015-11-26","revision":"2015-11-26","schema":"/rests/modules/aaa-cert?revision=2015-11-26","namespace":"urn:opendaylight:yang:aaa:cert","conformance-type":"import"},{"name":"openflow-action_2015-02-03","revision":"2015-02-03","schema":"/rests/modules/openflow-action?revision=2015-02-03","namespace":"urn:opendaylight:openflow:common:action","conformance-type":"import"},{"name":"openflow-approved-extensions_2016-08-02","revision":"2016-08-02","schema":"/rests/modules/openflow-approved-extensions?revision=2016-08-02","namespace":"urn:opendaylight:openflow:approved:extensions","conformance-type":"import"},{"name":"nc-notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/nc-notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netmod:notification","conformance-type":"import"},{"name":"ietf-netconf-nmda_2019-01-07","revision":"2019-01-07","schema":"/rests/modules/ietf-netconf-nmda?revision=2019-01-07","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-nmda","conformance-type":"import","feature":["with-defaults","origin"]},{"name":"ietf-tcp-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-common","conformance-type":"import","feature":["keepalives-supported"]},{"name":"network-topology_2013-10-21","revision":"2013-10-21","schema":"/rests/modules/network-topology?revision=2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:network-topology","conformance-type":"import"},{"name":"aaa-encrypt-service-config_2024-02-02","revision":"2024-02-02","schema":"/rests/modules/aaa-encrypt-service-config?revision=2024-02-02","namespace":"config:aaa:authn:encrypt:service:config","conformance-type":"import"},{"name":"openflow-instruction_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-instruction?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:instruction","conformance-type":"import"},{"name":"ietf-tls-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-client","conformance-type":"import","feature":["client-ident-x509-cert","server-auth-x509-cert"]},{"name":"opendaylight-group-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-group-statistics?revision=2013-11-11","namespace":"urn:opendaylight:group:statistics","conformance-type":"import"},{"name":"cluster-admin_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/cluster-admin?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:cluster:admin","conformance-type":"import"},{"name":"opendaylight-flow-statistics_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-flow-statistics?revision=2013-08-19","namespace":"urn:opendaylight:flow:statistics","conformance-type":"import"},{"name":"opendaylight-table-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-table-types?revision=2013-10-26","namespace":"urn:opendaylight:table:types","conformance-type":"import"},{"name":"forwarding-rules-manager-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/forwarding-rules-manager-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:forwardingrules-manager:config","conformance-type":"import"},{"name":"odl-srm-types_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-types?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:types","conformance-type":"import"},{"name":"ietf-x509-cert-to-name_2014-12-10","revision":"2014-12-10","schema":"/rests/modules/ietf-x509-cert-to-name?revision=2014-12-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-x509-cert-to-name","conformance-type":"import"},{"name":"flow-node-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-node-inventory?revision=2013-08-19","namespace":"urn:opendaylight:flow:inventory","conformance-type":"import"},{"name":"flow-errors_2013-11-16","revision":"2013-11-16","schema":"/rests/modules/flow-errors?revision=2013-11-16","namespace":"urn:opendaylight:flow:errors","conformance-type":"import"},{"name":"ietf-netconf_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:netconf:base:1.0","conformance-type":"import","feature":["xpath","url","rollback-on-error","validate","startup","candidate","confirmed-commit","writable-running"]},{"name":"iana-ssh-public-key-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-public-key-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-public-key-algs","conformance-type":"import"},{"name":"aaa-cert-mdsal_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/aaa-cert-mdsal?revision=2016-03-21","namespace":"urn:opendaylight:yang:aaa:cert:mdsal","conformance-type":"import"},{"name":"odl-device-notification_2024-02-18","revision":"2024-02-18","schema":"/rests/modules/odl-device-notification?revision=2024-02-18","namespace":"urn:opendaylight:device:notification","conformance-type":"import"},{"name":"ietf-origin_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-origin?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-origin","conformance-type":"import"},{"name":"openflow-augments_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-augments?revision=2015-02-25","namespace":"urn:opendaylight:openflow:augments","conformance-type":"import"},{"name":"iana-ssh-encryption-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-encryption-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-encryption-algs","conformance-type":"import"},{"name":"ietf-truststore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-truststore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-truststore","conformance-type":"import","feature":["inline-definitions-supported"]},{"name":"distributed-datastore-provider_2025-01-30","revision":"2025-01-30","schema":"/rests/modules/distributed-datastore-provider?revision=2025-01-30","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:distributed-datastore-provider","conformance-type":"import"},{"name":"opendaylight-group-types_2013-10-18","revision":"2013-10-18","schema":"/rests/modules/opendaylight-group-types?revision=2013-10-18","namespace":"urn:opendaylight:group:types","conformance-type":"import"},{"name":"sal-remote-augment_2023-11-03","revision":"2023-11-03","schema":"/rests/modules/sal-remote-augment?revision=2023-11-03","namespace":"urn:sal:restconf:event:subscription","conformance-type":"import"},{"name":"opendaylight-ipv6-arbitrary-bitmask-fields_2016-02-24","revision":"2016-02-24","schema":"/rests/modules/opendaylight-ipv6-arbitrary-bitmask-fields?revision=2016-02-24","namespace":"urn:opendaylight:opendaylight-ipv6-arbitrary-bitmask-fields","conformance-type":"import"},{"name":"sal-flows-batch_2016-03-14","revision":"2016-03-14","schema":"/rests/modules/sal-flows-batch?revision=2016-03-14","namespace":"urn:opendaylight:flows:service","conformance-type":"import"},{"name":"ietf-tls-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-common","conformance-type":"import","feature":["tls12","hello-params","tls13"]},{"name":"openflow-types_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-types?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:types","conformance-type":"import"},{"name":"ietf-netconf-with-defaults_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf-with-defaults?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults","conformance-type":"import"},{"name":"odl-srm-ops_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-ops?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:ops","conformance-type":"import"},{"name":"odl-general-entity_2015-09-30","revision":"2015-09-30","schema":"/rests/modules/odl-general-entity?revision=2015-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:mdsal:core:general-entity","conformance-type":"import"},{"name":"iana-ssh-key-exchange-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-key-exchange-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-key-exchange-algs","conformance-type":"import"},{"name":"node-ssl-connection-error_2019-07-23","revision":"2019-07-23","schema":"/rests/modules/node-ssl-connection-error?revision=2019-07-23","namespace":"urn:opendaylight:node-ssl-connection-error:service","conformance-type":"import"},{"name":"openflow-protocol_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-protocol?revision=2013-07-31","namespace":"urn:opendaylight:openflow:protocol","conformance-type":"import"},{"name":"ietf-udp-server_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-server?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-server","conformance-type":"import"},{"name":"ietf-keystore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-keystore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-keystore","conformance-type":"import","feature":["asymmetric-keys","inline-definitions-supported"]},{"name":"aaa_2016-12-14","revision":"2016-12-14","schema":"/rests/modules/aaa?revision=2016-12-14","namespace":"urn:opendaylight:params:xml:ns:yang:aaa","conformance-type":"import"},{"name":"aaa-cert-rpc_2015-12-15","revision":"2015-12-15","schema":"/rests/modules/aaa-cert-rpc?revision=2015-12-15","namespace":"urn:opendaylight:yang:aaa:cert:rpc","conformance-type":"import"},{"name":"system-notifications_2013-09-27","revision":"2013-09-27","schema":"/rests/modules/system-notifications?revision=2013-09-27","namespace":"urn:opendaylight:openflow:system","conformance-type":"import"},{"name":"sal-flat-batch_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/sal-flat-batch?revision=2016-03-21","namespace":"urn:opendaylight:flat-batch:service","conformance-type":"import"},{"name":"notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netconf:notification:1.0","conformance-type":"import"},{"name":"sal-remote_2014-01-14","revision":"2014-01-14","schema":"/rests/modules/sal-remote?revision=2014-01-14","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:remote","conformance-type":"import"},{"name":"yang-ext_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/yang-ext?revision=2013-07-09","namespace":"urn:opendaylight:yang:extension:yang-ext","conformance-type":"import"},{"name":"opendaylight-multipart-types_2017-01-12","revision":"2017-01-12","schema":"/rests/modules/opendaylight-multipart-types?revision=2017-01-12","namespace":"urn:opendaylight:multipart:types","conformance-type":"import"},{"name":"opendaylight-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-inventory?revision=2013-08-19","namespace":"urn:opendaylight:inventory","conformance-type":"import"},{"name":"sal-queue_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-queue?revision=2015-03-05","namespace":"urn:opendaylight:queue:service","conformance-type":"import"},{"name":"sal-groups-batch_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/sal-groups-batch?revision=2016-03-15","namespace":"urn:opendaylight:groups:service","conformance-type":"import"},{"name":"arbitrator-reconcile_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/arbitrator-reconcile?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:arbitrator-reconcile:service","conformance-type":"import"},{"name":"ietf-yang-metadata_2016-08-05","revision":"2016-08-05","schema":"/rests/modules/ietf-yang-metadata?revision=2016-08-05","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-metadata","conformance-type":"import"},{"name":"opendaylight-arbitrary-bitmask-fields_2016-01-30","revision":"2016-01-30","schema":"/rests/modules/opendaylight-arbitrary-bitmask-fields?revision=2016-01-30","namespace":"urn:opendaylight:arbitrary:bitmask:fields","conformance-type":"import"},{"name":"ietf-udp-client_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-client?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-client","conformance-type":"import","feature":["local-binding"]},{"name":"opendaylight-meter-types_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/opendaylight-meter-types?revision=2013-09-18","namespace":"urn:opendaylight:meter:types","conformance-type":"import"},{"name":"opendaylight-action-types_2013-11-12","revision":"2013-11-12","schema":"/rests/modules/opendaylight-action-types?revision=2013-11-12","namespace":"urn:opendaylight:action:types","conformance-type":"import"},{"name":"sal-role_2015-07-27","revision":"2015-07-27","schema":"/rests/modules/sal-role?revision=2015-07-27","namespace":"urn:opendaylight:role:service","conformance-type":"import"},{"name":"openflow-provider-config_2016-05-10","revision":"2016-05-10","schema":"/rests/modules/openflow-provider-config?revision=2016-05-10","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:provider:config","conformance-type":"import"},{"name":"odl-serviceutils-upgrade_2018-07-02","revision":"2018-07-02","schema":"/rests/modules/odl-serviceutils-upgrade?revision=2018-07-02","namespace":"urn:opendaylight:serviceutils:upgrade","conformance-type":"import"},{"name":"opendaylight-match-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-match-types?revision=2013-10-26","namespace":"urn:opendaylight:model:match:types","conformance-type":"import"},{"name":"ietf-restconf-server_2024-08-14","revision":"2024-08-14","schema":"/rests/modules/ietf-restconf-server?revision=2024-08-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-server","conformance-type":"import","feature":["http-listen","https-listen"]},{"name":"reconciliation-result-state_2017-07-13","revision":"2017-07-13","schema":"/rests/modules/reconciliation-result-state?revision=2017-07-13","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:rf:state","conformance-type":"import"},{"name":"onf-extensions_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/onf-extensions?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf","conformance-type":"import"},{"name":"sal-table_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/sal-table?revision=2013-10-26","namespace":"urn:opendaylight:table:service","conformance-type":"import"},{"name":"iana-http-versions_2026-02-04","revision":"2026-02-04","schema":"/rests/modules/iana-http-versions?revision=2026-02-04","namespace":"urn:ietf:params:xml:ns:yang:iana-http-versions","conformance-type":"import"},{"name":"opendaylight-direct-statistics_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/opendaylight-direct-statistics?revision=2016-05-11","namespace":"urn:opendaylight:direct:statistics","conformance-type":"import"},{"name":"opendaylight-port-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-port-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:port","conformance-type":"import"},{"name":"sal-async-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/sal-async-config?revision=2017-06-19","namespace":"urn:opendaylight:async-config:service","conformance-type":"import"},{"name":"aaa-password-service-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-password-service-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:password:service:config","conformance-type":"import"},{"name":"ietf-yang-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-yang-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-types","conformance-type":"import"},{"name":"opendaylight-queue-statistics_2013-12-16","revision":"2013-12-16","schema":"/rests/modules/opendaylight-queue-statistics?revision=2013-12-16","namespace":"urn:opendaylight:queue:statistics","conformance-type":"import"},{"name":"sal-bundle_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/sal-bundle?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf:bundle:service","conformance-type":"import"},{"name":"ietf-restconf-subscribed-notifications_2019-11-17","revision":"2019-11-17","schema":"/rests/modules/ietf-restconf-subscribed-notifications?revision=2019-11-17","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-subscribed-notifications","conformance-type":"import"},{"name":"sal-meters-batch_2016-03-16","revision":"2016-03-16","schema":"/rests/modules/sal-meters-batch?revision=2016-03-16","namespace":"urn:opendaylight:meters:service","conformance-type":"import"},{"name":"odl-entity-owners","revision":"","schema":"/rests/modules/odl-entity-owners","namespace":"urn:opendaylight:params:xml:ns:yang:controller:entity-owners","conformance-type":"import"},{"name":"sal-experimenter-mp-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-mp-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-mp-message:service","conformance-type":"import"},{"name":"packet-processing_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/packet-processing?revision=2013-07-09","namespace":"urn:opendaylight:packet:service","conformance-type":"import"},{"name":"openflow-configuration_2014-06-30","revision":"2014-06-30","schema":"/rests/modules/openflow-configuration?revision=2014-06-30","namespace":"urn:opendaylight:openflow:config","conformance-type":"import"},{"name":"odl-srm-rpcs_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-rpcs?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:rpc","conformance-type":"import"},{"name":"ietf-netconf-acm_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-netconf-acm?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-acm","conformance-type":"import"},{"name":"iana-crypt-hash_2014-08-06","revision":"2014-08-06","schema":"/rests/modules/iana-crypt-hash?revision=2014-08-06","namespace":"urn:ietf:params:xml:ns:yang:iana-crypt-hash","conformance-type":"import","feature":["crypt-hash-sha-512","crypt-hash-sha-256","crypt-hash-md5"]},{"name":"openflow-extensible-match_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-extensible-match?revision=2015-02-25","namespace":"urn:opendaylight:openflow:oxm","conformance-type":"import"}],"module-set-id":"2"}}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:11.494015" elapsed="0.004270"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:11.493524" elapsed="0.004798"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:11.493476" elapsed="0.004871"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:11.500931" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:11.498649" elapsed="0.002328"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:11.498427" elapsed="0.002585"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:11.498408" elapsed="0.002628"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:11.501695" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:11.501283" elapsed="0.000440"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:11.502076" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:11.501819" elapsed="0.000316"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:11.502642" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:11.502337" elapsed="0.000331"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:11.502174" elapsed="0.000542"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:11.501798" elapsed="0.000947"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:11.503598" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:11.502974" elapsed="0.000651"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:11.503959" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:11.503722" elapsed="0.000295"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:11.504570" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:11.504247" elapsed="0.000350"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:11.504040" elapsed="0.000594"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:11.503701" elapsed="0.000955"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:51:11.504829" elapsed="0.000374"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:51:11.505686" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:11.505391" elapsed="0.000322"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:51:11.505887" elapsed="0.003721"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:51:11.491876" elapsed="0.017856"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:51:11.510077" elapsed="0.000046"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:51:11.509860" elapsed="0.000343"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:11.509810" elapsed="0.000431"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:51:11.519147" level="INFO">${text_normalized} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:51:11.510965" elapsed="0.008326"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:51:11.519371" elapsed="0.000068"/>
</return>
<msg time="2026-04-08T00:51:11.519700" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:51:11.462779" elapsed="0.057030"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:51:11.520292" elapsed="0.000031"/>
</return>
<msg time="2026-04-08T00:51:11.520469" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="PASS" start="2026-04-08T00:51:11.326338" elapsed="0.194158"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Json_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:11.520823" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:11.520580" elapsed="0.000433"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:11.520563" elapsed="0.000477"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:51:11.521074" elapsed="0.000026"/>
</return>
<arg>session=${session}</arg>
<arg>folder=${RESTCONF_MODULES_DIR}</arg>
<arg>verify=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Add arguments sensible for JSON data, return Get_Templated response text.
Optionally, verification against JSON data (may be iterated) is called.
Only subset of JSON data is verified and returned if JMES path is specified in
file ${folder}/jmespath.expr.</doc>
<status status="PASS" start="2026-04-08T00:51:11.322287" elapsed="0.198927"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:11.317982" elapsed="0.203276"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:11.317965" elapsed="0.203316"/>
</if>
<kw name="Resolve_Shard_Type_Class" owner="ClusterManagement">
<if>
<branch type="IF" condition="'${shard_type}' == 'config'">
<return>
<value>DistributedConfigDatastore</value>
<status status="NOT RUN" start="2026-04-08T00:51:11.521879" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:51:11.521772" elapsed="0.000151"/>
</branch>
<branch type="ELSE IF" condition="'${shard_type}' == 'operational'">
<return>
<value>DistributedOperationalDatastore</value>
<status status="PASS" start="2026-04-08T00:51:11.522045" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-08T00:51:11.521945" elapsed="0.000156"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:11.521754" elapsed="0.000370"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized shard type: ${shard_type}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:11.522282" elapsed="0.000022"/>
</kw>
<msg time="2026-04-08T00:51:11.522402" level="INFO">${type_class} = DistributedOperationalDatastore</msg>
<var>${type_class}</var>
<arg>shard_type=${shard_type}</arg>
<doc>Simple lookup for class name corresponding to desired type.</doc>
<status status="PASS" start="2026-04-08T00:51:11.521504" elapsed="0.000923"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:11.522961" level="INFO">${cluster_index} = 3</msg>
<var>${cluster_index}</var>
<arg>${member_index}+${NODE_ROLE_INDEX_START}-1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:11.522592" elapsed="0.000395"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:11.523641" level="INFO">${uri} = jolokia/read/org.opendaylight.controller:Category=Shards,name=member-3-shard-inventory-operational,type=DistributedOperationalDatastore</msg>
<var>${uri}</var>
<arg>${JOLOKIA_READ_URI}:Category=Shards,name=member-${cluster_index}-shard-${shard_name}-${shard_type},type=${type_class}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:11.523141" elapsed="0.000528"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:11.529123" level="INFO">jolokia/read/org.opendaylight.controller:Category=Shards,name=member-3-shard-inventory-operational,type=DistributedOperationalDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:11.528681" elapsed="0.000505"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:11.529780" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:11.529341" elapsed="0.000491"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:51:11.547795" level="INFO">GET Request : url=http://10.30.171.110:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-3-shard-inventory-operational,type=DistributedOperationalDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-3-shard-inventory-operational,type=DistributedOperationalDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:51:11.547930" level="INFO">GET Response : url=http://10.30.171.110:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-3-shard-inventory-operational,type=DistributedOperationalDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Wed, 08 Apr 2026 00:51:11 GMT', 'Expires': 'Tue, 07 Apr 2026 23:51:11 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-3-shard-inventory-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"ReadWriteTransactionCount":0,"SnapshotIndex":867,"InMemoryJournalLogSize":1,"ReplicatedToAllIndex":867,"Leader":"member-1-shard-inventory-operational","LastIndex":868,"RaftState":"Follower","LastApplied":868,"LastCommittedTransactionTime":"1970-01-01 00:00:00.000","PeerAddresses":"member-1-shard-inventory-operational: pekko:\/\/opendaylight-cluster-data@10.30.170.48:2550\/user\/shardmanager-operational\/member-1-shard-inventory-operational, member-2-shard-inventory-operational: pekko:\/\/opendaylight-cluster-data@10.30.170.131:2550\/user\/shardmanager-operational\/member-2-shard-inventory-operational","LastLogIndex":868,"LastLeadershipChangeTime":"2026-04-08 00:46:45.934","FollowerInitialSyncStatus":true,"FollowerInfo":[],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"246.8 μs","CurrentTerm":2,"LastTerm":2,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-inventory-operational","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":0,"TxCohortCacheSize":0,"PeerVotingStates":"member-1-shard-inventory-operational: true, member-2-shard-inventory-operational: true","LastLogTerm":2,"StatRetrievalError":null,"CommitIndex":868,"SnapshotTerm":2,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-3-shard-inventory-operational","LeadershipChangeCount":1,"InMemoryJournalDataSize":1097257},"timestamp":1775609471,"status":200} 
 </msg>
<msg time="2026-04-08T00:51:11.548119" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:51:11.540660" elapsed="0.007583"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:11.529900" elapsed="0.018595"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:11.548677" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:11.548525" elapsed="0.000462"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:11.529881" elapsed="0.019131"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:11.554298" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-3-shard-inventory-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"ReadWriteTransactionCount":0,"SnapshotIndex":867,"InMemoryJournalLogSize":1,"ReplicatedToAllIndex":867,"Leader":"member-1-shard-inventory-operational","LastIndex":868,"RaftState":"Follower","LastApplied":868,"LastCommittedTransactionTime":"1970-01-01 00:00:00.000","PeerAddresses":"member-1-shard-inventory-operational: pekko:\/\/opendaylight-cluster-data@10.30.170.48:2550\/user\/shardmanager-operational\/member-1-shard-inventory-operational, member-2-shard-inventory-operational: pekko:\/\/opendaylight-cluster-data@10.30.170.131:2550\/user\/shardmanager-operational\/member-2-shard-inventory-operational","LastLogIndex":868,"LastLeadershipChangeTime":"2026-04-08 00:46:45.934","FollowerInitialSyncStatus":true,"FollowerInfo":[],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"246.8 μs","CurrentTerm":2,"LastTerm":2,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-inventory-operational","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":0,"TxCohortCacheSize":0,"PeerVotingStates":"member-1-shard-inventory-operational: true, member-2-shard-inventory-operational: true","LastLogTerm":2,"StatRetrievalError":null,"CommitIndex":868,"SnapshotTerm":2,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-3-shard-inventory-operational","LeadershipChangeCount":1,"InMemoryJournalDataSize":1097257},"timestamp":1775609471,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:11.551049" elapsed="0.003407"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:11.550181" elapsed="0.004342"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:11.550147" elapsed="0.004429"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:11.559281" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:11.555880" elapsed="0.003537"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:11.554692" elapsed="0.004793"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:11.554666" elapsed="0.004870"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:11.561556" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:11.560401" elapsed="0.001240"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:11.562533" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:11.561871" elapsed="0.000783"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:11.563906" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:11.563204" elapsed="0.000764"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:11.562707" elapsed="0.001331"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:11.561842" elapsed="0.002245"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:11.565577" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:11.564830" elapsed="0.000807"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:11.566351" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:11.565803" elapsed="0.000635"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:11.567323" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:11.566800" elapsed="0.000568"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:11.566476" elapsed="0.000942"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:11.565783" elapsed="0.001669"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:51:11.567680" elapsed="0.000629"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:51:11.569100" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:11.568620" elapsed="0.000553"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:51:11.569461" elapsed="0.002433"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:51:11.549491" elapsed="0.022560"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:51:11.572266" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:51:11.572124" elapsed="0.000187"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:11.572105" elapsed="0.000228"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:51:11.575838" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-3-shard-inventory-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestam...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:51:11.572483" elapsed="0.003384"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:51:11.575919" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:51:11.576076" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-3-shard-inventory-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestam...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:51:11.524618" elapsed="0.051515"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:51:11.576210" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:51:11.576361" level="INFO">${data_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-3-shard-inventory-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestam...</msg>
<var>${data_text}</var>
<arg>uri=${uri}</arg>
<arg>session=${session}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-08T00:51:11.523881" elapsed="0.052509"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:11.577434" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-3-shard-inventory-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1775609...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:11.576945" elapsed="0.000518"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-08T00:51:11.577512" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:51:11.577685" level="INFO">${data_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-3-shard-inventory-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1775609...</msg>
<var>${data_object}</var>
<arg>${data_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-08T00:51:11.576609" elapsed="0.001102"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:51:11.578063" level="INFO">${value} = {'AbortTransactionsCount': 0, 'CommitIndex': 868, 'CommittedTransactionsCount': 0, 'CurrentTerm': 2, 'FailedReadTransactionsCount': 0, 'FailedTransactionsCount': 0, 'FollowerInfo': [], 'FollowerInitia...</msg>
<var>${value}</var>
<arg>${data_object}</arg>
<arg>value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:51:11.577864" elapsed="0.000226"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:51:11.578513" level="INFO">${raft_property} = Follower</msg>
<var>${raft_property}</var>
<arg>${value}</arg>
<arg>${property}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:51:11.578311" elapsed="0.000227"/>
</kw>
<return>
<value>${raft_property}</value>
<status status="PASS" start="2026-04-08T00:51:11.578584" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:51:11.578732" level="INFO">${raft_state} = Follower</msg>
<var>${raft_state}</var>
<arg>RaftState</arg>
<arg>${shard_name}</arg>
<arg>${shard_type}</arg>
<arg>${member_index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft property.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T00:51:11.316372" elapsed="0.262384"/>
</kw>
<return>
<value>${raft_state}</value>
<status status="PASS" start="2026-04-08T00:51:11.578813" elapsed="0.000025"/>
</return>
<msg time="2026-04-08T00:51:11.578956" level="INFO">${raft_state} = Follower</msg>
<var>${raft_state}</var>
<arg>shard_name=${shard_name}</arg>
<arg>shard_type=${ds_type}</arg>
<arg>member_index=${index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft status.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T00:51:11.315652" elapsed="0.263327"/>
</kw>
<if>
<branch type="IF" condition="'Follower' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${follower_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-08T00:51:11.579299" elapsed="0.000194"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:11.579057" elapsed="0.000473"/>
</branch>
<branch type="ELSE IF" condition="'Leader' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${leader_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:11.579695" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:11.579554" elapsed="0.000199"/>
</branch>
<branch type="ELSE IF" condition="${validate}">
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized Raft state: ${raft_state}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:11.579913" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:11.579776" elapsed="0.000187"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:11.579040" elapsed="0.000944"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T00:51:11.315488" elapsed="0.264520"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-08T00:51:10.787410" elapsed="0.792632"/>
</for>
<return>
<value>${leader_list}</value>
<value>${follower_list}</value>
<status status="PASS" start="2026-04-08T00:51:11.580083" elapsed="0.000026"/>
</return>
<msg time="2026-04-08T00:51:11.580297" level="INFO">${leader_list} = [1]</msg>
<msg time="2026-04-08T00:51:11.580343" level="INFO">${follower_list} = [2, 3]</msg>
<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="PASS" start="2026-04-08T00:51:10.783416" elapsed="0.796950"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T00:51:11.580808" level="INFO">Length is 1.</msg>
<msg time="2026-04-08T00:51:11.580882" level="INFO">${leader_count} = 1</msg>
<var>${leader_count}</var>
<arg>${leader_list}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T00:51:11.580538" elapsed="0.000367"/>
</kw>
<if>
<branch type="IF" condition="${leader_count} &lt; 1">
<kw name="Fail" owner="BuiltIn">
<arg>No leader found.</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:11.581198" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:11.580972" elapsed="0.000280"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:11.580955" elapsed="0.000319"/>
</if>
<kw name="Length Should Be" owner="BuiltIn">
<msg time="2026-04-08T00:51:11.583333" level="INFO">Length is 1.</msg>
<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="PASS" start="2026-04-08T00:51:11.581408" elapsed="0.001971"/>
</kw>
<kw name="Get From List" owner="Collections">
<msg time="2026-04-08T00:51:11.583759" level="INFO">${leader} = 1</msg>
<var>${leader}</var>
<arg>${leader_list}</arg>
<arg>0</arg>
<doc>Returns the value specified with an ``index`` from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:51:11.583575" elapsed="0.000211"/>
</kw>
<return>
<value>${leader}</value>
<value>${follower_list}</value>
<status status="PASS" start="2026-04-08T00:51:11.583832" elapsed="0.000028"/>
</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="PASS" start="2026-04-08T00:51:10.780817" elapsed="0.803171"/>
</kw>
<var name="${shard_name}">inventory</var>
<status status="PASS" start="2026-04-08T00:51:10.780598" elapsed="0.803437"/>
</iter>
<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-04-08T00:51:11.588527" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:51:11.588120" elapsed="0.000435"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:51:11.589018" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:51:11.588714" elapsed="0.000331"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:51:11.589089" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:51:11.589261" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:51:11.587751" elapsed="0.001535"/>
</kw>
<kw name="Sort List" owner="Collections">
<arg>${index_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="PASS" start="2026-04-08T00:51:11.589439" elapsed="0.000152"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:51:11.590087" level="INFO">${ds_type} = operational</msg>
<var>${ds_type}</var>
<arg>'${shard_type}' != 'config'</arg>
<arg>operational</arg>
<arg>config</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:51:11.589749" elapsed="0.000364"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:51:11.590529" level="INFO">${leader_list} = []</msg>
<var>${leader_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:51:11.590291" elapsed="0.000264"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:51:11.590932" level="INFO">${follower_list} = []</msg>
<var>${follower_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:51:11.590700" elapsed="0.000258"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_Raft_State_Of_Shard_At_Member" owner="ClusterManagement">
<kw name="Get_Raft_Property_From_Shard_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:11.593408" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:11.593062" elapsed="0.000373"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:51:11.593481" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:51:11.593627" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:51:11.592725" elapsed="0.000927"/>
</kw>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Get_As_Json_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:11.676820" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:11.676444" elapsed="0.000405"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:51:11.677638" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:51:11.677381" elapsed="0.000338">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-08T00:51:11.677811" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:51:11.677013" elapsed="0.000822"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:51:11.678396" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:51:11.677998" elapsed="0.000425"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T00:51:11.678719" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-08T00:51:11.678875" level="INFO">${template} = /rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T00:51:11.678583" elapsed="0.000317"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:11.679376" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:11.679112" elapsed="0.000308"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:11.680373" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:11.680104" elapsed="0.000313"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-08T00:51:11.680843" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-08T00:51:11.680575" elapsed="0.000294"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:11.681211" elapsed="0.000023"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:11.681417" elapsed="0.000023"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:11.681585" elapsed="0.000021"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-08T00:51:11.681057" elapsed="0.000586"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-08T00:51:11.680918" elapsed="0.000755"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-08T00:51:11.681718" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:51:11.681876" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-08T00:51:11.679786" elapsed="0.002115"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:11.679492" elapsed="0.002441"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:11.682113" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:11.681959" elapsed="0.000228"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:11.679471" elapsed="0.002740"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:11.682801" level="INFO">${final_text} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:11.682360" elapsed="0.000468"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T00:51:11.682877" 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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="PASS" start="2026-04-08T00:51:11.675817" elapsed="0.007184"/>
</kw>
<msg time="2026-04-08T00:51:11.683054" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:51:11.663789" elapsed="0.019402"/>
</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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:11.695376" elapsed="0.000042"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:11.707286" elapsed="0.000040"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:11.719342" elapsed="0.000041"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:11.720089" elapsed="0.000036"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:11.720850" elapsed="0.000036"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:11.721478" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:11.721290" elapsed="0.000247"/>
</branch>
<status status="NOT RUN" start="2026-04-08T00:51:11.721274" elapsed="0.000287"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:11.721721" elapsed="0.000021"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:11.721908" elapsed="0.000021"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:11.722091" elapsed="0.000021"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-08T00:51:11.721222" elapsed="0.000959"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-08T00:51:11.720968" elapsed="0.001257"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:11.722914" elapsed="0.000036"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-08T00:51:11.723034" elapsed="0.000061"/>
</return>
<msg time="2026-04-08T00:51:11.723286" level="INFO">${uri} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-08T00:51:11.657617" elapsed="0.065777"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:51:11.726247" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:51:11.725979" elapsed="0.000336">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-08T00:51:11.726508" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:51:11.725542" elapsed="0.001010"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:11.727058" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:11.726682" elapsed="0.000457"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:11.727765" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:11.727471" elapsed="0.000320"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:11.727195" elapsed="0.000640"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:11.726631" elapsed="0.001243"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:51:11.730949" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:51:11.728606" elapsed="0.002389"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-08T00:51:11.731093" elapsed="0.000082"/>
</return>
<msg time="2026-04-08T00:51:11.731489" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:51:11.724384" elapsed="0.007211"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:51:11.734325" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:51:11.734065" elapsed="0.000324">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-08T00:51:11.734575" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:51:11.733633" elapsed="0.000986"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-08T00:51:11.734995" elapsed="0.000086"/>
</return>
<status status="PASS" start="2026-04-08T00:51:11.734750" elapsed="0.000400"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:11.734699" elapsed="0.000512"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:11.735908" elapsed="0.000035"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:11.736644" elapsed="0.000036"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-08T00:51:11.736752" elapsed="0.000047"/>
</return>
<msg time="2026-04-08T00:51:11.738995" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:51:11.732408" elapsed="0.006738"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:11.742897" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:11.742518" elapsed="0.000478"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:11.744103" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:11.743724" elapsed="0.000492"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:51:11.755808" level="INFO">GET Request : url=http://10.30.170.48:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 path_url=/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01ju7g9ih47awu1dako8be5k84o113.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:51:11.756424" level="INFO">GET Response : url=http://10.30.170.48:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Transfer-Encoding': 'chunked'} 
 body={"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","hidden-symmetric-keys","encrypted-private-keys","asymmetrically-encrypted-value-format","cms-encrypted-data-format","cleartext-private-keys","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["ssh-client-keepalives","client-ident-hostbased","client-ident-publickey","client-ident-password"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-ex... (set the log level to DEBUG or TRACE to see the full content) 
 </msg>
<msg time="2026-04-08T00:51:11.756700" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:51:11.746549" elapsed="0.010188"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:11.744342" elapsed="0.012471"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:11.757251" elapsed="0.000034"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:11.756874" elapsed="0.000487"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:11.744292" elapsed="0.013120"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:11.763383" level="INFO">{"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","hidden-symmetric-keys","encrypted-private-keys","asymmetrically-encrypted-value-format","cms-encrypted-data-format","cleartext-private-keys","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["ssh-client-keepalives","client-ident-hostbased","client-ident-publickey","client-ident-password"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-experimenter-types?revision=2015-10-20","namespace":"urn:opendaylight:openflowplugin:experimenter:types","conformance-type":"import"},{"name":"ietf-ip_2018-02-22","revision":"2018-02-22","schema":"/rests/modules/ietf-ip?revision=2018-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-ip","conformance-type":"import","feature":["ipv6-privacy-autoconf","ipv4-non-contiguous-netmasks"]},{"name":"ietf-tcp-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-client","conformance-type":"import","feature":["local-binding-supported","tcp-client-keepalives"]},{"name":"node-config_2014-10-15","revision":"2014-10-15","schema":"/rests/modules/node-config?revision=2014-10-15","namespace":"urn:opendaylight:module:config","conformance-type":"import"},{"name":"ietf-restconf_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf","conformance-type":"import"},{"name":"ietf-datastores_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-datastores?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-datastores","conformance-type":"import"},{"name":"ietf-yang-patch_2017-02-22","revision":"2017-02-22","schema":"/rests/modules/ietf-yang-patch?revision=2017-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-patch","conformance-type":"import"},{"name":"sal-group_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-group?revision=2013-09-18","namespace":"urn:opendaylight:group:service","conformance-type":"import"},{"name":"odl-codegen-extensions_2024-06-27","revision":"2024-06-27","schema":"/rests/modules/odl-codegen-extensions?revision=2024-06-27","namespace":"urn:opendaylight:yang:extension:codegen","conformance-type":"import"},{"name":"sal-meter_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-meter?revision=2013-09-18","namespace":"urn:opendaylight:meter:service","conformance-type":"import"},{"name":"ietf-interfaces_2018-02-20","revision":"2018-02-20","schema":"/rests/modules/ietf-interfaces?revision=2018-02-20","namespace":"urn:ietf:params:xml:ns:yang:ietf-interfaces","conformance-type":"import","feature":["pre-provisioning","if-mib","arbitrary-names"]},{"name":"opendaylight-l2-types_2013-08-27","revision":"2013-08-27","schema":"/rests/modules/opendaylight-l2-types?revision=2013-08-27","namespace":"urn:opendaylight:l2:types","conformance-type":"import"},{"name":"opendaylight-flow-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-flow-types?revision=2013-10-26","namespace":"urn:opendaylight:flow:types","conformance-type":"import"},{"name":"lldp-speaker-config_2016-05-12","revision":"2016-05-12","schema":"/rests/modules/lldp-speaker-config?revision=2016-05-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker:config","conformance-type":"import"},{"name":"aaa-cert_2015-11-26","revision":"2015-11-26","schema":"/rests/modules/aaa-cert?revision=2015-11-26","namespace":"urn:opendaylight:yang:aaa:cert","conformance-type":"import"},{"name":"openflow-action_2015-02-03","revision":"2015-02-03","schema":"/rests/modules/openflow-action?revision=2015-02-03","namespace":"urn:opendaylight:openflow:common:action","conformance-type":"import"},{"name":"openflow-approved-extensions_2016-08-02","revision":"2016-08-02","schema":"/rests/modules/openflow-approved-extensions?revision=2016-08-02","namespace":"urn:opendaylight:openflow:approved:extensions","conformance-type":"import"},{"name":"nc-notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/nc-notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netmod:notification","conformance-type":"import"},{"name":"ietf-netconf-nmda_2019-01-07","revision":"2019-01-07","schema":"/rests/modules/ietf-netconf-nmda?revision=2019-01-07","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-nmda","conformance-type":"import","feature":["with-defaults","origin"]},{"name":"ietf-tcp-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-common","conformance-type":"import","feature":["keepalives-supported"]},{"name":"network-topology_2013-10-21","revision":"2013-10-21","schema":"/rests/modules/network-topology?revision=2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:network-topology","conformance-type":"import"},{"name":"aaa-encrypt-service-config_2024-02-02","revision":"2024-02-02","schema":"/rests/modules/aaa-encrypt-service-config?revision=2024-02-02","namespace":"config:aaa:authn:encrypt:service:config","conformance-type":"import"},{"name":"openflow-instruction_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-instruction?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:instruction","conformance-type":"import"},{"name":"ietf-tls-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-client","conformance-type":"import","feature":["client-ident-x509-cert","server-auth-x509-cert"]},{"name":"opendaylight-group-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-group-statistics?revision=2013-11-11","namespace":"urn:opendaylight:group:statistics","conformance-type":"import"},{"name":"cluster-admin_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/cluster-admin?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:cluster:admin","conformance-type":"import"},{"name":"opendaylight-flow-statistics_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-flow-statistics?revision=2013-08-19","namespace":"urn:opendaylight:flow:statistics","conformance-type":"import"},{"name":"opendaylight-table-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-table-types?revision=2013-10-26","namespace":"urn:opendaylight:table:types","conformance-type":"import"},{"name":"forwarding-rules-manager-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/forwarding-rules-manager-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:forwardingrules-manager:config","conformance-type":"import"},{"name":"odl-srm-types_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-types?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:types","conformance-type":"import"},{"name":"ietf-x509-cert-to-name_2014-12-10","revision":"2014-12-10","schema":"/rests/modules/ietf-x509-cert-to-name?revision=2014-12-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-x509-cert-to-name","conformance-type":"import"},{"name":"flow-node-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-node-inventory?revision=2013-08-19","namespace":"urn:opendaylight:flow:inventory","conformance-type":"import"},{"name":"flow-errors_2013-11-16","revision":"2013-11-16","schema":"/rests/modules/flow-errors?revision=2013-11-16","namespace":"urn:opendaylight:flow:errors","conformance-type":"import"},{"name":"ietf-netconf_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:netconf:base:1.0","conformance-type":"import","feature":["xpath","url","rollback-on-error","validate","startup","candidate","confirmed-commit","writable-running"]},{"name":"iana-ssh-public-key-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-public-key-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-public-key-algs","conformance-type":"import"},{"name":"aaa-cert-mdsal_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/aaa-cert-mdsal?revision=2016-03-21","namespace":"urn:opendaylight:yang:aaa:cert:mdsal","conformance-type":"import"},{"name":"odl-device-notification_2024-02-18","revision":"2024-02-18","schema":"/rests/modules/odl-device-notification?revision=2024-02-18","namespace":"urn:opendaylight:device:notification","conformance-type":"import"},{"name":"ietf-origin_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-origin?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-origin","conformance-type":"import"},{"name":"openflow-augments_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-augments?revision=2015-02-25","namespace":"urn:opendaylight:openflow:augments","conformance-type":"import"},{"name":"iana-ssh-encryption-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-encryption-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-encryption-algs","conformance-type":"import"},{"name":"ietf-truststore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-truststore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-truststore","conformance-type":"import","feature":["inline-definitions-supported"]},{"name":"distributed-datastore-provider_2025-01-30","revision":"2025-01-30","schema":"/rests/modules/distributed-datastore-provider?revision=2025-01-30","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:distributed-datastore-provider","conformance-type":"import"},{"name":"opendaylight-group-types_2013-10-18","revision":"2013-10-18","schema":"/rests/modules/opendaylight-group-types?revision=2013-10-18","namespace":"urn:opendaylight:group:types","conformance-type":"import"},{"name":"sal-remote-augment_2023-11-03","revision":"2023-11-03","schema":"/rests/modules/sal-remote-augment?revision=2023-11-03","namespace":"urn:sal:restconf:event:subscription","conformance-type":"import"},{"name":"opendaylight-ipv6-arbitrary-bitmask-fields_2016-02-24","revision":"2016-02-24","schema":"/rests/modules/opendaylight-ipv6-arbitrary-bitmask-fields?revision=2016-02-24","namespace":"urn:opendaylight:opendaylight-ipv6-arbitrary-bitmask-fields","conformance-type":"import"},{"name":"sal-flows-batch_2016-03-14","revision":"2016-03-14","schema":"/rests/modules/sal-flows-batch?revision=2016-03-14","namespace":"urn:opendaylight:flows:service","conformance-type":"import"},{"name":"ietf-tls-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-common","conformance-type":"import","feature":["tls12","hello-params","tls13"]},{"name":"openflow-types_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-types?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:types","conformance-type":"import"},{"name":"ietf-netconf-with-defaults_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf-with-defaults?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults","conformance-type":"import"},{"name":"odl-srm-ops_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-ops?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:ops","conformance-type":"import"},{"name":"odl-general-entity_2015-09-30","revision":"2015-09-30","schema":"/rests/modules/odl-general-entity?revision=2015-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:mdsal:core:general-entity","conformance-type":"import"},{"name":"iana-ssh-key-exchange-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-key-exchange-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-key-exchange-algs","conformance-type":"import"},{"name":"node-ssl-connection-error_2019-07-23","revision":"2019-07-23","schema":"/rests/modules/node-ssl-connection-error?revision=2019-07-23","namespace":"urn:opendaylight:node-ssl-connection-error:service","conformance-type":"import"},{"name":"openflow-protocol_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-protocol?revision=2013-07-31","namespace":"urn:opendaylight:openflow:protocol","conformance-type":"import"},{"name":"ietf-udp-server_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-server?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-server","conformance-type":"import"},{"name":"ietf-keystore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-keystore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-keystore","conformance-type":"import","feature":["asymmetric-keys","inline-definitions-supported"]},{"name":"aaa_2016-12-14","revision":"2016-12-14","schema":"/rests/modules/aaa?revision=2016-12-14","namespace":"urn:opendaylight:params:xml:ns:yang:aaa","conformance-type":"import"},{"name":"aaa-cert-rpc_2015-12-15","revision":"2015-12-15","schema":"/rests/modules/aaa-cert-rpc?revision=2015-12-15","namespace":"urn:opendaylight:yang:aaa:cert:rpc","conformance-type":"import"},{"name":"system-notifications_2013-09-27","revision":"2013-09-27","schema":"/rests/modules/system-notifications?revision=2013-09-27","namespace":"urn:opendaylight:openflow:system","conformance-type":"import"},{"name":"sal-flat-batch_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/sal-flat-batch?revision=2016-03-21","namespace":"urn:opendaylight:flat-batch:service","conformance-type":"import"},{"name":"notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netconf:notification:1.0","conformance-type":"import"},{"name":"sal-remote_2014-01-14","revision":"2014-01-14","schema":"/rests/modules/sal-remote?revision=2014-01-14","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:remote","conformance-type":"import"},{"name":"yang-ext_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/yang-ext?revision=2013-07-09","namespace":"urn:opendaylight:yang:extension:yang-ext","conformance-type":"import"},{"name":"opendaylight-multipart-types_2017-01-12","revision":"2017-01-12","schema":"/rests/modules/opendaylight-multipart-types?revision=2017-01-12","namespace":"urn:opendaylight:multipart:types","conformance-type":"import"},{"name":"opendaylight-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-inventory?revision=2013-08-19","namespace":"urn:opendaylight:inventory","conformance-type":"import"},{"name":"sal-queue_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-queue?revision=2015-03-05","namespace":"urn:opendaylight:queue:service","conformance-type":"import"},{"name":"sal-groups-batch_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/sal-groups-batch?revision=2016-03-15","namespace":"urn:opendaylight:groups:service","conformance-type":"import"},{"name":"arbitrator-reconcile_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/arbitrator-reconcile?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:arbitrator-reconcile:service","conformance-type":"import"},{"name":"ietf-yang-metadata_2016-08-05","revision":"2016-08-05","schema":"/rests/modules/ietf-yang-metadata?revision=2016-08-05","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-metadata","conformance-type":"import"},{"name":"opendaylight-arbitrary-bitmask-fields_2016-01-30","revision":"2016-01-30","schema":"/rests/modules/opendaylight-arbitrary-bitmask-fields?revision=2016-01-30","namespace":"urn:opendaylight:arbitrary:bitmask:fields","conformance-type":"import"},{"name":"ietf-udp-client_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-client?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-client","conformance-type":"import","feature":["local-binding"]},{"name":"opendaylight-meter-types_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/opendaylight-meter-types?revision=2013-09-18","namespace":"urn:opendaylight:meter:types","conformance-type":"import"},{"name":"opendaylight-action-types_2013-11-12","revision":"2013-11-12","schema":"/rests/modules/opendaylight-action-types?revision=2013-11-12","namespace":"urn:opendaylight:action:types","conformance-type":"import"},{"name":"sal-role_2015-07-27","revision":"2015-07-27","schema":"/rests/modules/sal-role?revision=2015-07-27","namespace":"urn:opendaylight:role:service","conformance-type":"import"},{"name":"openflow-provider-config_2016-05-10","revision":"2016-05-10","schema":"/rests/modules/openflow-provider-config?revision=2016-05-10","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:provider:config","conformance-type":"import"},{"name":"odl-serviceutils-upgrade_2018-07-02","revision":"2018-07-02","schema":"/rests/modules/odl-serviceutils-upgrade?revision=2018-07-02","namespace":"urn:opendaylight:serviceutils:upgrade","conformance-type":"import"},{"name":"opendaylight-match-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-match-types?revision=2013-10-26","namespace":"urn:opendaylight:model:match:types","conformance-type":"import"},{"name":"ietf-restconf-server_2024-08-14","revision":"2024-08-14","schema":"/rests/modules/ietf-restconf-server?revision=2024-08-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-server","conformance-type":"import","feature":["http-listen","https-listen"]},{"name":"reconciliation-result-state_2017-07-13","revision":"2017-07-13","schema":"/rests/modules/reconciliation-result-state?revision=2017-07-13","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:rf:state","conformance-type":"import"},{"name":"onf-extensions_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/onf-extensions?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf","conformance-type":"import"},{"name":"sal-table_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/sal-table?revision=2013-10-26","namespace":"urn:opendaylight:table:service","conformance-type":"import"},{"name":"iana-http-versions_2026-02-04","revision":"2026-02-04","schema":"/rests/modules/iana-http-versions?revision=2026-02-04","namespace":"urn:ietf:params:xml:ns:yang:iana-http-versions","conformance-type":"import"},{"name":"opendaylight-direct-statistics_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/opendaylight-direct-statistics?revision=2016-05-11","namespace":"urn:opendaylight:direct:statistics","conformance-type":"import"},{"name":"opendaylight-port-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-port-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:port","conformance-type":"import"},{"name":"sal-async-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/sal-async-config?revision=2017-06-19","namespace":"urn:opendaylight:async-config:service","conformance-type":"import"},{"name":"aaa-password-service-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-password-service-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:password:service:config","conformance-type":"import"},{"name":"ietf-yang-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-yang-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-types","conformance-type":"import"},{"name":"opendaylight-queue-statistics_2013-12-16","revision":"2013-12-16","schema":"/rests/modules/opendaylight-queue-statistics?revision=2013-12-16","namespace":"urn:opendaylight:queue:statistics","conformance-type":"import"},{"name":"sal-bundle_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/sal-bundle?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf:bundle:service","conformance-type":"import"},{"name":"ietf-restconf-subscribed-notifications_2019-11-17","revision":"2019-11-17","schema":"/rests/modules/ietf-restconf-subscribed-notifications?revision=2019-11-17","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-subscribed-notifications","conformance-type":"import"},{"name":"sal-meters-batch_2016-03-16","revision":"2016-03-16","schema":"/rests/modules/sal-meters-batch?revision=2016-03-16","namespace":"urn:opendaylight:meters:service","conformance-type":"import"},{"name":"odl-entity-owners","revision":"","schema":"/rests/modules/odl-entity-owners","namespace":"urn:opendaylight:params:xml:ns:yang:controller:entity-owners","conformance-type":"import"},{"name":"sal-experimenter-mp-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-mp-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-mp-message:service","conformance-type":"import"},{"name":"packet-processing_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/packet-processing?revision=2013-07-09","namespace":"urn:opendaylight:packet:service","conformance-type":"import"},{"name":"openflow-configuration_2014-06-30","revision":"2014-06-30","schema":"/rests/modules/openflow-configuration?revision=2014-06-30","namespace":"urn:opendaylight:openflow:config","conformance-type":"import"},{"name":"odl-srm-rpcs_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-rpcs?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:rpc","conformance-type":"import"},{"name":"ietf-netconf-acm_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-netconf-acm?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-acm","conformance-type":"import"},{"name":"iana-crypt-hash_2014-08-06","revision":"2014-08-06","schema":"/rests/modules/iana-crypt-hash?revision=2014-08-06","namespace":"urn:ietf:params:xml:ns:yang:iana-crypt-hash","conformance-type":"import","feature":["crypt-hash-sha-512","crypt-hash-sha-256","crypt-hash-md5"]},{"name":"openflow-extensible-match_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-extensible-match?revision=2015-02-25","namespace":"urn:opendaylight:openflow:oxm","conformance-type":"import"}],"module-set-id":"2"}}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:11.759777" elapsed="0.004053"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:11.759466" elapsed="0.004413"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:11.759436" elapsed="0.004479"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:11.767455" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:11.764361" elapsed="0.003158"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:11.764027" elapsed="0.003539"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:11.764001" elapsed="0.003599"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:11.768417" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:11.767855" elapsed="0.000600"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:11.768918" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:11.768581" elapsed="0.000417"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:11.769702" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:11.769277" elapsed="0.000462"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:11.769031" elapsed="0.000757"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:11.768554" elapsed="0.001264"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:11.770611" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:11.770070" elapsed="0.000578"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:11.771120" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:11.770776" elapsed="0.000446"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:11.771900" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:11.771482" elapsed="0.000454"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:11.771256" elapsed="0.000728"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:11.770748" elapsed="0.001266"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:51:11.772269" elapsed="0.000486"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:51:11.773433" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:11.773013" elapsed="0.000457"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:51:11.773713" elapsed="0.002740"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:51:11.758441" elapsed="0.018131"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:51:11.776916" elapsed="0.000046"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:51:11.776701" elapsed="0.000325"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:11.776650" elapsed="0.000411"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:51:11.786086" level="INFO">${text_normalized} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:51:11.777778" elapsed="0.008358"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:51:11.786297" elapsed="0.000064"/>
</return>
<msg time="2026-04-08T00:51:11.786616" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:51:11.739805" elapsed="0.046918"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:51:11.787218" elapsed="0.000032"/>
</return>
<msg time="2026-04-08T00:51:11.787403" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="PASS" start="2026-04-08T00:51:11.601687" elapsed="0.185744"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Json_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:11.787753" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:11.787515" elapsed="0.000452"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:11.787497" elapsed="0.000497"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:51:11.788028" elapsed="0.000027"/>
</return>
<arg>session=${session}</arg>
<arg>folder=${RESTCONF_MODULES_DIR}</arg>
<arg>verify=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Add arguments sensible for JSON data, return Get_Templated response text.
Optionally, verification against JSON data (may be iterated) is called.
Only subset of JSON data is verified and returned if JMES path is specified in
file ${folder}/jmespath.expr.</doc>
<status status="PASS" start="2026-04-08T00:51:11.597661" elapsed="0.190510"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:11.593720" elapsed="0.194497"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:11.593702" elapsed="0.194540"/>
</if>
<kw name="Resolve_Shard_Type_Class" owner="ClusterManagement">
<if>
<branch type="IF" condition="'${shard_type}' == 'config'">
<return>
<value>DistributedConfigDatastore</value>
<status status="NOT RUN" start="2026-04-08T00:51:11.788840" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:51:11.788731" elapsed="0.000154"/>
</branch>
<branch type="ELSE IF" condition="'${shard_type}' == 'operational'">
<return>
<value>DistributedOperationalDatastore</value>
<status status="PASS" start="2026-04-08T00:51:11.789009" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-08T00:51:11.788907" elapsed="0.000160"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:11.788713" elapsed="0.000377"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized shard type: ${shard_type}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:11.789252" elapsed="0.000022"/>
</kw>
<msg time="2026-04-08T00:51:11.789373" level="INFO">${type_class} = DistributedOperationalDatastore</msg>
<var>${type_class}</var>
<arg>shard_type=${shard_type}</arg>
<doc>Simple lookup for class name corresponding to desired type.</doc>
<status status="PASS" start="2026-04-08T00:51:11.788466" elapsed="0.000932"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:11.789933" level="INFO">${cluster_index} = 1</msg>
<var>${cluster_index}</var>
<arg>${member_index}+${NODE_ROLE_INDEX_START}-1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:11.789565" elapsed="0.000403"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:11.790613" level="INFO">${uri} = jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-topology-operational,type=DistributedOperationalDatastore</msg>
<var>${uri}</var>
<arg>${JOLOKIA_READ_URI}:Category=Shards,name=member-${cluster_index}-shard-${shard_name}-${shard_type},type=${type_class}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:11.790122" elapsed="0.000518"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:11.796190" level="INFO">jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-topology-operational,type=DistributedOperationalDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:11.795736" elapsed="0.000501"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:11.796825" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:11.796391" elapsed="0.000477"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:51:11.814687" level="INFO">GET Request : url=http://10.30.170.48:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-topology-operational,type=DistributedOperationalDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-topology-operational,type=DistributedOperationalDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:51:11.814822" level="INFO">GET Response : url=http://10.30.170.48:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-topology-operational,type=DistributedOperationalDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Wed, 08 Apr 2026 00:51:11 GMT', 'Expires': 'Tue, 07 Apr 2026 23:51:11 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-1-shard-topology-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"ReadWriteTransactionCount":48,"SnapshotIndex":124,"InMemoryJournalLogSize":1,"ReplicatedToAllIndex":124,"Leader":"member-1-shard-topology-operational","LastIndex":125,"RaftState":"Leader","LastApplied":125,"LastCommittedTransactionTime":"2026-04-08 00:51:05.673","PeerAddresses":"member-2-shard-topology-operational: pekko:\/\/opendaylight-cluster-data@10.30.170.131:2550\/user\/shardmanager-operational\/member-2-shard-topology-operational, member-3-shard-topology-operational: pekko:\/\/opendaylight-cluster-data@10.30.171.110:2550\/user\/shardmanager-operational\/member-3-shard-topology-operational","LastLogIndex":125,"LastLeadershipChangeTime":"2026-04-08 00:46:45.974","FollowerInitialSyncStatus":false,"FollowerInfo":[{"timeSinceLastActivity":"00:00:00.248","active":true,"matchIndex":125,"voting":true,"id":"member-2-shard-topology-operational","nextIndex":126},{"timeSinceLastActivity":"00:00:00.248","active":true,"matchIndex":125,"voting":true,"id":"member-3-shard-topology-operational","nextIndex":126}],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"490.2 μs","CurrentTerm":2,"LastTerm":2,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-topology-operational","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":41,"TxCohortCacheSize":0,"PeerVotingStates":"member-2-shard-topology-operational: true, member-3-shard-topology-operational: true","LastLogTerm":2,"StatRetrievalError":null,"CommitIndex":125,"SnapshotTerm":2,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":14,"ShardName":"member-1-shard-topology-operational","LeadershipChangeCount":1,"InMemoryJournalDataSize":23304},"timestamp":1775609471,"status":200} 
 </msg>
<msg time="2026-04-08T00:51:11.815015" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:51:11.807511" elapsed="0.007629"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:11.796938" elapsed="0.018480"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:11.815611" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:11.815457" elapsed="0.000501"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:11.796919" elapsed="0.019065"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:11.821420" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-1-shard-topology-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"ReadWriteTransactionCount":48,"SnapshotIndex":124,"InMemoryJournalLogSize":1,"ReplicatedToAllIndex":124,"Leader":"member-1-shard-topology-operational","LastIndex":125,"RaftState":"Leader","LastApplied":125,"LastCommittedTransactionTime":"2026-04-08 00:51:05.673","PeerAddresses":"member-2-shard-topology-operational: pekko:\/\/opendaylight-cluster-data@10.30.170.131:2550\/user\/shardmanager-operational\/member-2-shard-topology-operational, member-3-shard-topology-operational: pekko:\/\/opendaylight-cluster-data@10.30.171.110:2550\/user\/shardmanager-operational\/member-3-shard-topology-operational","LastLogIndex":125,"LastLeadershipChangeTime":"2026-04-08 00:46:45.974","FollowerInitialSyncStatus":false,"FollowerInfo":[{"timeSinceLastActivity":"00:00:00.248","active":true,"matchIndex":125,"voting":true,"id":"member-2-shard-topology-operational","nextIndex":126},{"timeSinceLastActivity":"00:00:00.248","active":true,"matchIndex":125,"voting":true,"id":"member-3-shard-topology-operational","nextIndex":126}],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"490.2 μs","CurrentTerm":2,"LastTerm":2,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-topology-operational","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":41,"TxCohortCacheSize":0,"PeerVotingStates":"member-2-shard-topology-operational: true, member-3-shard-topology-operational: true","LastLogTerm":2,"StatRetrievalError":null,"CommitIndex":125,"SnapshotTerm":2,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":14,"ShardName":"member-1-shard-topology-operational","LeadershipChangeCount":1,"InMemoryJournalDataSize":23304},"timestamp":1775609471,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:11.818243" elapsed="0.003338"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:11.817389" elapsed="0.004260"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:11.817370" elapsed="0.004333"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:11.826433" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:11.823015" elapsed="0.003554"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:11.821820" elapsed="0.004818"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:11.821794" elapsed="0.004898"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:11.828435" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:11.827590" elapsed="0.000907"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:11.829131" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:11.828662" elapsed="0.000573"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:11.830106" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:11.829601" elapsed="0.000551"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:11.829273" elapsed="0.000946"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:11.828642" elapsed="0.001613"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:11.831650" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:11.830865" elapsed="0.000846"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:11.832417" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:11.831876" elapsed="0.000626"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:11.833371" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:11.832863" elapsed="0.000552"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:11.832540" elapsed="0.000924"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:11.831856" elapsed="0.001642"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:51:11.833713" elapsed="0.000629"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:51:11.835142" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:11.834647" elapsed="0.000572"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:51:11.835496" elapsed="0.002435"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:51:11.816692" elapsed="0.021397"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:51:11.838306" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:51:11.838178" elapsed="0.000173"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:11.838144" elapsed="0.000228"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:51:11.842020" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-1-shard-topology-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:51:11.838522" elapsed="0.003527"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:51:11.842132" elapsed="0.000046"/>
</return>
<msg time="2026-04-08T00:51:11.842309" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-1-shard-topology-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:51:11.791602" elapsed="0.050734"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:51:11.842393" elapsed="0.000027"/>
</return>
<msg time="2026-04-08T00:51:11.842542" level="INFO">${data_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-1-shard-topology-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp...</msg>
<var>${data_text}</var>
<arg>uri=${uri}</arg>
<arg>session=${session}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-08T00:51:11.790851" elapsed="0.051716"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:11.843637" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-1-shard-topology-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 17756094...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:11.843132" elapsed="0.000534"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-08T00:51:11.843715" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:51:11.843891" level="INFO">${data_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-1-shard-topology-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 17756094...</msg>
<var>${data_object}</var>
<arg>${data_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-08T00:51:11.842785" elapsed="0.001132"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:51:11.844395" level="INFO">${value} = {'AbortTransactionsCount': 0, 'CommitIndex': 125, 'CommittedTransactionsCount': 41, 'CurrentTerm': 2, 'FailedReadTransactionsCount': 0, 'FailedTransactionsCount': 0, 'FollowerInfo': [{'active': True, ...</msg>
<var>${value}</var>
<arg>${data_object}</arg>
<arg>value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:51:11.844071" elapsed="0.000353"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:51:11.844776" level="INFO">${raft_property} = Leader</msg>
<var>${raft_property}</var>
<arg>${value}</arg>
<arg>${property}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:51:11.844577" elapsed="0.000224"/>
</kw>
<return>
<value>${raft_property}</value>
<status status="PASS" start="2026-04-08T00:51:11.844846" elapsed="0.000027"/>
</return>
<msg time="2026-04-08T00:51:11.844997" level="INFO">${raft_state} = Leader</msg>
<var>${raft_state}</var>
<arg>RaftState</arg>
<arg>${shard_name}</arg>
<arg>${shard_type}</arg>
<arg>${member_index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft property.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T00:51:11.592110" elapsed="0.252912"/>
</kw>
<return>
<value>${raft_state}</value>
<status status="PASS" start="2026-04-08T00:51:11.845077" elapsed="0.000026"/>
</return>
<msg time="2026-04-08T00:51:11.845241" level="INFO">${raft_state} = Leader</msg>
<var>${raft_state}</var>
<arg>shard_name=${shard_name}</arg>
<arg>shard_type=${ds_type}</arg>
<arg>member_index=${index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft status.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T00:51:11.591409" elapsed="0.253857"/>
</kw>
<if>
<branch type="IF" condition="'Follower' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${follower_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:11.845629" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:11.845408" elapsed="0.000275"/>
</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="PASS" start="2026-04-08T00:51:11.845909" elapsed="0.000191"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:11.845706" elapsed="0.000431"/>
</branch>
<branch type="ELSE IF" condition="${validate}">
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized Raft state: ${raft_state}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:11.846323" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:11.846177" elapsed="0.000196"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:11.845388" elapsed="0.001008"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T00:51:11.591243" elapsed="0.255175"/>
</iter>
<iter>
<kw name="Get_Raft_State_Of_Shard_At_Member" owner="ClusterManagement">
<kw name="Get_Raft_Property_From_Shard_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:11.848764" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:11.848443" elapsed="0.000349"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:51:11.848837" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:51:11.848982" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:51:11.848069" elapsed="0.000937"/>
</kw>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Get_As_Json_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:11.930390" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:11.929855" elapsed="0.000597"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:51:11.931206" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:51:11.930955" elapsed="0.000323">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-08T00:51:11.931369" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:51:11.930617" elapsed="0.000777"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:51:11.931937" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:51:11.931556" elapsed="0.000408"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T00:51:11.932271" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-08T00:51:11.932409" level="INFO">${template} = /rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T00:51:11.932120" elapsed="0.000314"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:11.932825" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:11.932586" elapsed="0.000283"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:11.933800" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:11.933551" elapsed="0.000300"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-08T00:51:11.934286" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-08T00:51:11.934006" elapsed="0.000306"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:11.934622" elapsed="0.000022"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:11.934820" elapsed="0.000024"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:11.935014" elapsed="0.000022"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-08T00:51:11.934493" elapsed="0.000579"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-08T00:51:11.934360" elapsed="0.000741"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-08T00:51:11.935143" elapsed="0.000049"/>
</return>
<msg time="2026-04-08T00:51:11.935322" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-08T00:51:11.933234" elapsed="0.002113"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:11.932936" elapsed="0.002443"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:11.935549" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:11.935406" elapsed="0.000197"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:11.932916" elapsed="0.002708"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:11.936197" level="INFO">${final_text} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:11.935760" elapsed="0.000465"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T00:51:11.936272" 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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="PASS" start="2026-04-08T00:51:11.929249" elapsed="0.007145"/>
</kw>
<msg time="2026-04-08T00:51:11.936445" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:51:11.917067" elapsed="0.019458"/>
</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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:11.948724" elapsed="0.000042"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:11.960623" elapsed="0.000040"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:11.972458" elapsed="0.000040"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:11.973232" elapsed="0.000038"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:11.973954" elapsed="0.000036"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:11.974520" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:11.974376" elapsed="0.000200"/>
</branch>
<status status="NOT RUN" start="2026-04-08T00:51:11.974360" elapsed="0.000240"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:11.974755" elapsed="0.000022"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:11.974951" elapsed="0.000022"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:11.975138" elapsed="0.000036"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-08T00:51:11.974311" elapsed="0.000918"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-08T00:51:11.974070" elapsed="0.001199"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:11.975942" elapsed="0.000035"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-08T00:51:11.976057" elapsed="0.000047"/>
</return>
<msg time="2026-04-08T00:51:11.976291" level="INFO">${uri} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-08T00:51:11.911264" elapsed="0.065137"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:51:11.979205" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:51:11.978932" elapsed="0.000339">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-08T00:51:11.979457" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:51:11.978502" elapsed="0.000998"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:11.979997" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:11.979628" elapsed="0.000436"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:11.980668" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:11.980375" elapsed="0.000319"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:11.980102" elapsed="0.000638"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:11.979579" elapsed="0.001199"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:51:11.983835" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:51:11.981502" elapsed="0.002378"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-08T00:51:11.983955" elapsed="0.000061"/>
</return>
<msg time="2026-04-08T00:51:11.984278" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:51:11.977376" elapsed="0.007008"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:51:11.987139" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:51:11.986879" elapsed="0.000340">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-08T00:51:11.987408" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:51:11.986450" elapsed="0.001003"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-08T00:51:11.987829" elapsed="0.000077"/>
</return>
<status status="PASS" start="2026-04-08T00:51:11.987582" elapsed="0.000390"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:11.987531" elapsed="0.000479"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:11.988727" elapsed="0.000037"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:11.989463" elapsed="0.000036"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-08T00:51:11.989571" elapsed="0.000046"/>
</return>
<msg time="2026-04-08T00:51:11.991791" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:51:11.985223" elapsed="0.006673"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:11.995674" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:11.995288" elapsed="0.000482"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:11.996835" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:11.996457" elapsed="0.000473"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:51:12.018516" level="INFO">GET Request : url=http://10.30.170.131:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 path_url=/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node012m0dyuink19r12kj250j53usg1.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:51:12.019466" level="INFO">GET Response : url=http://10.30.170.131:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Transfer-Encoding': 'chunked'} 
 body={"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","hidden-symmetric-keys","encrypted-private-keys","asymmetrically-encrypted-value-format","cms-encrypted-data-format","cleartext-private-keys","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["ssh-client-keepalives","client-ident-hostbased","client-ident-publickey","client-ident-password"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-ex... (set the log level to DEBUG or TRACE to see the full content) 
 </msg>
<msg time="2026-04-08T00:51:12.019916" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:51:11.999279" elapsed="0.020695"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:11.997056" elapsed="0.023042"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:12.020832" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:12.020240" elapsed="0.000759"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:11.997005" elapsed="0.024074"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:12.028174" level="INFO">{"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","hidden-symmetric-keys","encrypted-private-keys","asymmetrically-encrypted-value-format","cms-encrypted-data-format","cleartext-private-keys","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["ssh-client-keepalives","client-ident-hostbased","client-ident-publickey","client-ident-password"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-experimenter-types?revision=2015-10-20","namespace":"urn:opendaylight:openflowplugin:experimenter:types","conformance-type":"import"},{"name":"ietf-ip_2018-02-22","revision":"2018-02-22","schema":"/rests/modules/ietf-ip?revision=2018-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-ip","conformance-type":"import","feature":["ipv6-privacy-autoconf","ipv4-non-contiguous-netmasks"]},{"name":"ietf-tcp-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-client","conformance-type":"import","feature":["local-binding-supported","tcp-client-keepalives"]},{"name":"node-config_2014-10-15","revision":"2014-10-15","schema":"/rests/modules/node-config?revision=2014-10-15","namespace":"urn:opendaylight:module:config","conformance-type":"import"},{"name":"ietf-restconf_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf","conformance-type":"import"},{"name":"ietf-datastores_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-datastores?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-datastores","conformance-type":"import"},{"name":"ietf-yang-patch_2017-02-22","revision":"2017-02-22","schema":"/rests/modules/ietf-yang-patch?revision=2017-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-patch","conformance-type":"import"},{"name":"sal-group_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-group?revision=2013-09-18","namespace":"urn:opendaylight:group:service","conformance-type":"import"},{"name":"odl-codegen-extensions_2024-06-27","revision":"2024-06-27","schema":"/rests/modules/odl-codegen-extensions?revision=2024-06-27","namespace":"urn:opendaylight:yang:extension:codegen","conformance-type":"import"},{"name":"sal-meter_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-meter?revision=2013-09-18","namespace":"urn:opendaylight:meter:service","conformance-type":"import"},{"name":"ietf-interfaces_2018-02-20","revision":"2018-02-20","schema":"/rests/modules/ietf-interfaces?revision=2018-02-20","namespace":"urn:ietf:params:xml:ns:yang:ietf-interfaces","conformance-type":"import","feature":["pre-provisioning","if-mib","arbitrary-names"]},{"name":"opendaylight-l2-types_2013-08-27","revision":"2013-08-27","schema":"/rests/modules/opendaylight-l2-types?revision=2013-08-27","namespace":"urn:opendaylight:l2:types","conformance-type":"import"},{"name":"opendaylight-flow-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-flow-types?revision=2013-10-26","namespace":"urn:opendaylight:flow:types","conformance-type":"import"},{"name":"lldp-speaker-config_2016-05-12","revision":"2016-05-12","schema":"/rests/modules/lldp-speaker-config?revision=2016-05-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker:config","conformance-type":"import"},{"name":"aaa-cert_2015-11-26","revision":"2015-11-26","schema":"/rests/modules/aaa-cert?revision=2015-11-26","namespace":"urn:opendaylight:yang:aaa:cert","conformance-type":"import"},{"name":"openflow-action_2015-02-03","revision":"2015-02-03","schema":"/rests/modules/openflow-action?revision=2015-02-03","namespace":"urn:opendaylight:openflow:common:action","conformance-type":"import"},{"name":"openflow-approved-extensions_2016-08-02","revision":"2016-08-02","schema":"/rests/modules/openflow-approved-extensions?revision=2016-08-02","namespace":"urn:opendaylight:openflow:approved:extensions","conformance-type":"import"},{"name":"nc-notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/nc-notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netmod:notification","conformance-type":"import"},{"name":"ietf-netconf-nmda_2019-01-07","revision":"2019-01-07","schema":"/rests/modules/ietf-netconf-nmda?revision=2019-01-07","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-nmda","conformance-type":"import","feature":["with-defaults","origin"]},{"name":"ietf-tcp-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-common","conformance-type":"import","feature":["keepalives-supported"]},{"name":"network-topology_2013-10-21","revision":"2013-10-21","schema":"/rests/modules/network-topology?revision=2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:network-topology","conformance-type":"import"},{"name":"aaa-encrypt-service-config_2024-02-02","revision":"2024-02-02","schema":"/rests/modules/aaa-encrypt-service-config?revision=2024-02-02","namespace":"config:aaa:authn:encrypt:service:config","conformance-type":"import"},{"name":"openflow-instruction_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-instruction?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:instruction","conformance-type":"import"},{"name":"ietf-tls-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-client","conformance-type":"import","feature":["client-ident-x509-cert","server-auth-x509-cert"]},{"name":"opendaylight-group-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-group-statistics?revision=2013-11-11","namespace":"urn:opendaylight:group:statistics","conformance-type":"import"},{"name":"cluster-admin_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/cluster-admin?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:cluster:admin","conformance-type":"import"},{"name":"opendaylight-flow-statistics_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-flow-statistics?revision=2013-08-19","namespace":"urn:opendaylight:flow:statistics","conformance-type":"import"},{"name":"opendaylight-table-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-table-types?revision=2013-10-26","namespace":"urn:opendaylight:table:types","conformance-type":"import"},{"name":"forwarding-rules-manager-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/forwarding-rules-manager-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:forwardingrules-manager:config","conformance-type":"import"},{"name":"odl-srm-types_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-types?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:types","conformance-type":"import"},{"name":"ietf-x509-cert-to-name_2014-12-10","revision":"2014-12-10","schema":"/rests/modules/ietf-x509-cert-to-name?revision=2014-12-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-x509-cert-to-name","conformance-type":"import"},{"name":"flow-node-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-node-inventory?revision=2013-08-19","namespace":"urn:opendaylight:flow:inventory","conformance-type":"import"},{"name":"flow-errors_2013-11-16","revision":"2013-11-16","schema":"/rests/modules/flow-errors?revision=2013-11-16","namespace":"urn:opendaylight:flow:errors","conformance-type":"import"},{"name":"ietf-netconf_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:netconf:base:1.0","conformance-type":"import","feature":["xpath","url","rollback-on-error","validate","startup","candidate","confirmed-commit","writable-running"]},{"name":"iana-ssh-public-key-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-public-key-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-public-key-algs","conformance-type":"import"},{"name":"aaa-cert-mdsal_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/aaa-cert-mdsal?revision=2016-03-21","namespace":"urn:opendaylight:yang:aaa:cert:mdsal","conformance-type":"import"},{"name":"odl-device-notification_2024-02-18","revision":"2024-02-18","schema":"/rests/modules/odl-device-notification?revision=2024-02-18","namespace":"urn:opendaylight:device:notification","conformance-type":"import"},{"name":"ietf-origin_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-origin?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-origin","conformance-type":"import"},{"name":"openflow-augments_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-augments?revision=2015-02-25","namespace":"urn:opendaylight:openflow:augments","conformance-type":"import"},{"name":"iana-ssh-encryption-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-encryption-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-encryption-algs","conformance-type":"import"},{"name":"ietf-truststore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-truststore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-truststore","conformance-type":"import","feature":["inline-definitions-supported"]},{"name":"distributed-datastore-provider_2025-01-30","revision":"2025-01-30","schema":"/rests/modules/distributed-datastore-provider?revision=2025-01-30","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:distributed-datastore-provider","conformance-type":"import"},{"name":"opendaylight-group-types_2013-10-18","revision":"2013-10-18","schema":"/rests/modules/opendaylight-group-types?revision=2013-10-18","namespace":"urn:opendaylight:group:types","conformance-type":"import"},{"name":"sal-remote-augment_2023-11-03","revision":"2023-11-03","schema":"/rests/modules/sal-remote-augment?revision=2023-11-03","namespace":"urn:sal:restconf:event:subscription","conformance-type":"import"},{"name":"opendaylight-ipv6-arbitrary-bitmask-fields_2016-02-24","revision":"2016-02-24","schema":"/rests/modules/opendaylight-ipv6-arbitrary-bitmask-fields?revision=2016-02-24","namespace":"urn:opendaylight:opendaylight-ipv6-arbitrary-bitmask-fields","conformance-type":"import"},{"name":"sal-flows-batch_2016-03-14","revision":"2016-03-14","schema":"/rests/modules/sal-flows-batch?revision=2016-03-14","namespace":"urn:opendaylight:flows:service","conformance-type":"import"},{"name":"ietf-tls-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-common","conformance-type":"import","feature":["tls12","hello-params","tls13"]},{"name":"openflow-types_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-types?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:types","conformance-type":"import"},{"name":"ietf-netconf-with-defaults_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf-with-defaults?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults","conformance-type":"import"},{"name":"odl-srm-ops_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-ops?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:ops","conformance-type":"import"},{"name":"odl-general-entity_2015-09-30","revision":"2015-09-30","schema":"/rests/modules/odl-general-entity?revision=2015-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:mdsal:core:general-entity","conformance-type":"import"},{"name":"iana-ssh-key-exchange-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-key-exchange-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-key-exchange-algs","conformance-type":"import"},{"name":"node-ssl-connection-error_2019-07-23","revision":"2019-07-23","schema":"/rests/modules/node-ssl-connection-error?revision=2019-07-23","namespace":"urn:opendaylight:node-ssl-connection-error:service","conformance-type":"import"},{"name":"openflow-protocol_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-protocol?revision=2013-07-31","namespace":"urn:opendaylight:openflow:protocol","conformance-type":"import"},{"name":"ietf-udp-server_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-server?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-server","conformance-type":"import"},{"name":"ietf-keystore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-keystore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-keystore","conformance-type":"import","feature":["asymmetric-keys","inline-definitions-supported"]},{"name":"aaa_2016-12-14","revision":"2016-12-14","schema":"/rests/modules/aaa?revision=2016-12-14","namespace":"urn:opendaylight:params:xml:ns:yang:aaa","conformance-type":"import"},{"name":"aaa-cert-rpc_2015-12-15","revision":"2015-12-15","schema":"/rests/modules/aaa-cert-rpc?revision=2015-12-15","namespace":"urn:opendaylight:yang:aaa:cert:rpc","conformance-type":"import"},{"name":"system-notifications_2013-09-27","revision":"2013-09-27","schema":"/rests/modules/system-notifications?revision=2013-09-27","namespace":"urn:opendaylight:openflow:system","conformance-type":"import"},{"name":"sal-flat-batch_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/sal-flat-batch?revision=2016-03-21","namespace":"urn:opendaylight:flat-batch:service","conformance-type":"import"},{"name":"notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netconf:notification:1.0","conformance-type":"import"},{"name":"sal-remote_2014-01-14","revision":"2014-01-14","schema":"/rests/modules/sal-remote?revision=2014-01-14","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:remote","conformance-type":"import"},{"name":"yang-ext_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/yang-ext?revision=2013-07-09","namespace":"urn:opendaylight:yang:extension:yang-ext","conformance-type":"import"},{"name":"opendaylight-multipart-types_2017-01-12","revision":"2017-01-12","schema":"/rests/modules/opendaylight-multipart-types?revision=2017-01-12","namespace":"urn:opendaylight:multipart:types","conformance-type":"import"},{"name":"opendaylight-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-inventory?revision=2013-08-19","namespace":"urn:opendaylight:inventory","conformance-type":"import"},{"name":"sal-queue_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-queue?revision=2015-03-05","namespace":"urn:opendaylight:queue:service","conformance-type":"import"},{"name":"sal-groups-batch_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/sal-groups-batch?revision=2016-03-15","namespace":"urn:opendaylight:groups:service","conformance-type":"import"},{"name":"arbitrator-reconcile_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/arbitrator-reconcile?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:arbitrator-reconcile:service","conformance-type":"import"},{"name":"ietf-yang-metadata_2016-08-05","revision":"2016-08-05","schema":"/rests/modules/ietf-yang-metadata?revision=2016-08-05","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-metadata","conformance-type":"import"},{"name":"opendaylight-arbitrary-bitmask-fields_2016-01-30","revision":"2016-01-30","schema":"/rests/modules/opendaylight-arbitrary-bitmask-fields?revision=2016-01-30","namespace":"urn:opendaylight:arbitrary:bitmask:fields","conformance-type":"import"},{"name":"ietf-udp-client_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-client?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-client","conformance-type":"import","feature":["local-binding"]},{"name":"opendaylight-meter-types_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/opendaylight-meter-types?revision=2013-09-18","namespace":"urn:opendaylight:meter:types","conformance-type":"import"},{"name":"opendaylight-action-types_2013-11-12","revision":"2013-11-12","schema":"/rests/modules/opendaylight-action-types?revision=2013-11-12","namespace":"urn:opendaylight:action:types","conformance-type":"import"},{"name":"sal-role_2015-07-27","revision":"2015-07-27","schema":"/rests/modules/sal-role?revision=2015-07-27","namespace":"urn:opendaylight:role:service","conformance-type":"import"},{"name":"openflow-provider-config_2016-05-10","revision":"2016-05-10","schema":"/rests/modules/openflow-provider-config?revision=2016-05-10","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:provider:config","conformance-type":"import"},{"name":"odl-serviceutils-upgrade_2018-07-02","revision":"2018-07-02","schema":"/rests/modules/odl-serviceutils-upgrade?revision=2018-07-02","namespace":"urn:opendaylight:serviceutils:upgrade","conformance-type":"import"},{"name":"opendaylight-match-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-match-types?revision=2013-10-26","namespace":"urn:opendaylight:model:match:types","conformance-type":"import"},{"name":"ietf-restconf-server_2024-08-14","revision":"2024-08-14","schema":"/rests/modules/ietf-restconf-server?revision=2024-08-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-server","conformance-type":"import","feature":["http-listen","https-listen"]},{"name":"reconciliation-result-state_2017-07-13","revision":"2017-07-13","schema":"/rests/modules/reconciliation-result-state?revision=2017-07-13","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:rf:state","conformance-type":"import"},{"name":"onf-extensions_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/onf-extensions?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf","conformance-type":"import"},{"name":"sal-table_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/sal-table?revision=2013-10-26","namespace":"urn:opendaylight:table:service","conformance-type":"import"},{"name":"iana-http-versions_2026-02-04","revision":"2026-02-04","schema":"/rests/modules/iana-http-versions?revision=2026-02-04","namespace":"urn:ietf:params:xml:ns:yang:iana-http-versions","conformance-type":"import"},{"name":"opendaylight-direct-statistics_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/opendaylight-direct-statistics?revision=2016-05-11","namespace":"urn:opendaylight:direct:statistics","conformance-type":"import"},{"name":"opendaylight-port-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-port-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:port","conformance-type":"import"},{"name":"sal-async-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/sal-async-config?revision=2017-06-19","namespace":"urn:opendaylight:async-config:service","conformance-type":"import"},{"name":"aaa-password-service-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-password-service-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:password:service:config","conformance-type":"import"},{"name":"ietf-yang-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-yang-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-types","conformance-type":"import"},{"name":"opendaylight-queue-statistics_2013-12-16","revision":"2013-12-16","schema":"/rests/modules/opendaylight-queue-statistics?revision=2013-12-16","namespace":"urn:opendaylight:queue:statistics","conformance-type":"import"},{"name":"sal-bundle_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/sal-bundle?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf:bundle:service","conformance-type":"import"},{"name":"ietf-restconf-subscribed-notifications_2019-11-17","revision":"2019-11-17","schema":"/rests/modules/ietf-restconf-subscribed-notifications?revision=2019-11-17","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-subscribed-notifications","conformance-type":"import"},{"name":"sal-meters-batch_2016-03-16","revision":"2016-03-16","schema":"/rests/modules/sal-meters-batch?revision=2016-03-16","namespace":"urn:opendaylight:meters:service","conformance-type":"import"},{"name":"odl-entity-owners","revision":"","schema":"/rests/modules/odl-entity-owners","namespace":"urn:opendaylight:params:xml:ns:yang:controller:entity-owners","conformance-type":"import"},{"name":"sal-experimenter-mp-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-mp-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-mp-message:service","conformance-type":"import"},{"name":"packet-processing_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/packet-processing?revision=2013-07-09","namespace":"urn:opendaylight:packet:service","conformance-type":"import"},{"name":"openflow-configuration_2014-06-30","revision":"2014-06-30","schema":"/rests/modules/openflow-configuration?revision=2014-06-30","namespace":"urn:opendaylight:openflow:config","conformance-type":"import"},{"name":"odl-srm-rpcs_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-rpcs?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:rpc","conformance-type":"import"},{"name":"ietf-netconf-acm_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-netconf-acm?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-acm","conformance-type":"import"},{"name":"iana-crypt-hash_2014-08-06","revision":"2014-08-06","schema":"/rests/modules/iana-crypt-hash?revision=2014-08-06","namespace":"urn:ietf:params:xml:ns:yang:iana-crypt-hash","conformance-type":"import","feature":["crypt-hash-sha-512","crypt-hash-sha-256","crypt-hash-md5"]},{"name":"openflow-extensible-match_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-extensible-match?revision=2015-02-25","namespace":"urn:opendaylight:openflow:oxm","conformance-type":"import"}],"module-set-id":"2"}}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:12.024403" elapsed="0.004222"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:12.024070" elapsed="0.004604"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:12.024041" elapsed="0.004668"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:12.032289" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:12.029130" elapsed="0.003225"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:12.028821" elapsed="0.003584"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:12.028795" elapsed="0.003646"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:12.033245" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:12.032699" elapsed="0.000584"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:12.033745" elapsed="0.000029"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:12.033411" elapsed="0.000413"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:12.034526" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:12.034075" elapsed="0.000487"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:12.033856" elapsed="0.000755"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:12.033383" elapsed="0.001258"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:12.035599" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:12.034950" elapsed="0.000675"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:12.035949" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:12.035717" elapsed="0.000289"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:12.036506" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:12.036203" elapsed="0.000328"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:12.036029" elapsed="0.000538"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:12.035697" elapsed="0.000891"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:51:12.036755" elapsed="0.000353"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:51:12.037584" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:12.037306" elapsed="0.000303"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:51:12.037779" elapsed="0.002156"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:51:12.022822" elapsed="0.017254"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:51:12.040560" elapsed="0.000048"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:51:12.040229" elapsed="0.000444"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:12.040176" elapsed="0.000534"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:51:12.049758" level="INFO">${text_normalized} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:51:12.041439" elapsed="0.008369"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:51:12.049885" elapsed="0.000063"/>
</return>
<msg time="2026-04-08T00:51:12.050221" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:51:11.992540" elapsed="0.057808"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:51:12.050820" elapsed="0.000031"/>
</return>
<msg time="2026-04-08T00:51:12.051021" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="PASS" start="2026-04-08T00:51:11.857152" elapsed="0.193896"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Json_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:12.051392" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:12.051133" elapsed="0.000446"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:12.051115" elapsed="0.000492"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:51:12.051641" elapsed="0.000033"/>
</return>
<arg>session=${session}</arg>
<arg>folder=${RESTCONF_MODULES_DIR}</arg>
<arg>verify=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Add arguments sensible for JSON data, return Get_Templated response text.
Optionally, verification against JSON data (may be iterated) is called.
Only subset of JSON data is verified and returned if JMES path is specified in
file ${folder}/jmespath.expr.</doc>
<status status="PASS" start="2026-04-08T00:51:11.853130" elapsed="0.198657"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:11.849072" elapsed="0.202759"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:11.849055" elapsed="0.202799"/>
</if>
<kw name="Resolve_Shard_Type_Class" owner="ClusterManagement">
<if>
<branch type="IF" condition="'${shard_type}' == 'config'">
<return>
<value>DistributedConfigDatastore</value>
<status status="NOT RUN" start="2026-04-08T00:51:12.052511" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:51:12.052391" elapsed="0.000164"/>
</branch>
<branch type="ELSE IF" condition="'${shard_type}' == 'operational'">
<return>
<value>DistributedOperationalDatastore</value>
<status status="PASS" start="2026-04-08T00:51:12.052677" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-08T00:51:12.052577" elapsed="0.000156"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:12.052373" elapsed="0.000383"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized shard type: ${shard_type}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:12.052900" elapsed="0.000021"/>
</kw>
<msg time="2026-04-08T00:51:12.053017" level="INFO">${type_class} = DistributedOperationalDatastore</msg>
<var>${type_class}</var>
<arg>shard_type=${shard_type}</arg>
<doc>Simple lookup for class name corresponding to desired type.</doc>
<status status="PASS" start="2026-04-08T00:51:12.052077" elapsed="0.000964"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:12.053595" level="INFO">${cluster_index} = 2</msg>
<var>${cluster_index}</var>
<arg>${member_index}+${NODE_ROLE_INDEX_START}-1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:12.053225" elapsed="0.000397"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:12.054252" level="INFO">${uri} = jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-topology-operational,type=DistributedOperationalDatastore</msg>
<var>${uri}</var>
<arg>${JOLOKIA_READ_URI}:Category=Shards,name=member-${cluster_index}-shard-${shard_name}-${shard_type},type=${type_class}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:12.053775" elapsed="0.000505"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:12.059835" level="INFO">jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-topology-operational,type=DistributedOperationalDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:12.059393" elapsed="0.000489"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:12.060486" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:12.060035" elapsed="0.000496"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:51:12.080441" level="INFO">GET Request : url=http://10.30.170.131:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-topology-operational,type=DistributedOperationalDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-topology-operational,type=DistributedOperationalDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:51:12.080653" level="INFO">GET Response : url=http://10.30.170.131:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-topology-operational,type=DistributedOperationalDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Wed, 08 Apr 2026 00:51:12 GMT', 'Expires': 'Tue, 07 Apr 2026 23:51:12 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-2-shard-topology-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"ReadWriteTransactionCount":0,"SnapshotIndex":124,"InMemoryJournalLogSize":1,"ReplicatedToAllIndex":124,"Leader":"member-1-shard-topology-operational","LastIndex":125,"RaftState":"Follower","LastCommittedTransactionTime":"1970-01-01 00:00:00.000","LastApplied":125,"PeerAddresses":"member-1-shard-topology-operational: pekko:\/\/opendaylight-cluster-data@10.30.170.48:2550\/user\/shardmanager-operational\/member-1-shard-topology-operational, member-3-shard-topology-operational: pekko:\/\/opendaylight-cluster-data@10.30.171.110:2550\/user\/shardmanager-operational\/member-3-shard-topology-operational","LastLogIndex":125,"LastLeadershipChangeTime":"2026-04-08 00:46:45.981","FollowerInitialSyncStatus":true,"FollowerInfo":[],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"222.2 μs","CurrentTerm":2,"LastTerm":2,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-topology-operational","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":0,"TxCohortCacheSize":0,"PeerVotingStates":"member-1-shard-topology-operational: true, member-3-shard-topology-operational: true","LastLogTerm":2,"StatRetrievalError":null,"CommitIndex":125,"SnapshotTerm":2,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-2-shard-topology-operational","LeadershipChangeCount":1,"InMemoryJournalDataSize":23304},"timestamp":1775609472,"status":200} 
 </msg>
<msg time="2026-04-08T00:51:12.080913" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:51:12.071545" elapsed="0.009515"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:12.060599" elapsed="0.020835"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:12.081690" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:12.081477" elapsed="0.000649"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:12.060580" elapsed="0.021666"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:12.090281" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-2-shard-topology-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"ReadWriteTransactionCount":0,"SnapshotIndex":124,"InMemoryJournalLogSize":1,"ReplicatedToAllIndex":124,"Leader":"member-1-shard-topology-operational","LastIndex":125,"RaftState":"Follower","LastCommittedTransactionTime":"1970-01-01 00:00:00.000","LastApplied":125,"PeerAddresses":"member-1-shard-topology-operational: pekko:\/\/opendaylight-cluster-data@10.30.170.48:2550\/user\/shardmanager-operational\/member-1-shard-topology-operational, member-3-shard-topology-operational: pekko:\/\/opendaylight-cluster-data@10.30.171.110:2550\/user\/shardmanager-operational\/member-3-shard-topology-operational","LastLogIndex":125,"LastLeadershipChangeTime":"2026-04-08 00:46:45.981","FollowerInitialSyncStatus":true,"FollowerInfo":[],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"222.2 μs","CurrentTerm":2,"LastTerm":2,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-topology-operational","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":0,"TxCohortCacheSize":0,"PeerVotingStates":"member-1-shard-topology-operational: true, member-3-shard-topology-operational: true","LastLogTerm":2,"StatRetrievalError":null,"CommitIndex":125,"SnapshotTerm":2,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-2-shard-topology-operational","LeadershipChangeCount":1,"InMemoryJournalDataSize":23304},"timestamp":1775609472,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:12.085120" elapsed="0.005328"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:12.083897" elapsed="0.006619"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:12.083870" elapsed="0.006700"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:12.094145" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:12.091868" elapsed="0.002442"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:12.090683" elapsed="0.003676"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:12.090657" elapsed="0.003740"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:12.095784" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:12.095017" elapsed="0.000828"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:12.096485" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:12.096009" elapsed="0.000563"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:12.097450" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:12.096937" elapsed="0.000559"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:12.096609" elapsed="0.000938"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:12.095989" elapsed="0.001592"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:12.098996" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:12.098245" elapsed="0.000812"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:12.099700" elapsed="0.000035"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:12.099240" elapsed="0.000545"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:12.100668" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:12.100148" elapsed="0.000568"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:12.099823" elapsed="0.000944"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:12.099219" elapsed="0.001582"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:51:12.101017" elapsed="0.000661"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:51:12.102543" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:12.101987" elapsed="0.000616"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:51:12.102906" elapsed="0.002323"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:51:12.082915" elapsed="0.022472"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:51:12.105584" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:51:12.105459" elapsed="0.000170"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:12.105440" elapsed="0.000211"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:51:12.109339" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-2-shard-topology-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:51:12.105797" elapsed="0.003572"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:51:12.109421" elapsed="0.000032"/>
</return>
<msg time="2026-04-08T00:51:12.109580" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-2-shard-topology-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:51:12.055263" elapsed="0.054377"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:51:12.109701" elapsed="0.000026"/>
</return>
<msg time="2026-04-08T00:51:12.109878" level="INFO">${data_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-2-shard-topology-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp...</msg>
<var>${data_text}</var>
<arg>uri=${uri}</arg>
<arg>session=${session}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-08T00:51:12.054490" elapsed="0.055415"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:12.111099" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-2-shard-topology-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 17756094...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:12.110602" elapsed="0.000526"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-08T00:51:12.111195" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:51:12.111371" level="INFO">${data_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-2-shard-topology-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 17756094...</msg>
<var>${data_object}</var>
<arg>${data_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-08T00:51:12.110126" elapsed="0.001272"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:51:12.111753" level="INFO">${value} = {'AbortTransactionsCount': 0, 'CommitIndex': 125, 'CommittedTransactionsCount': 0, 'CurrentTerm': 2, 'FailedReadTransactionsCount': 0, 'FailedTransactionsCount': 0, 'FollowerInfo': [], 'FollowerInitia...</msg>
<var>${value}</var>
<arg>${data_object}</arg>
<arg>value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:51:12.111551" elapsed="0.000235"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:51:12.112138" level="INFO">${raft_property} = Follower</msg>
<var>${raft_property}</var>
<arg>${value}</arg>
<arg>${property}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:51:12.111940" elapsed="0.000239"/>
</kw>
<return>
<value>${raft_property}</value>
<status status="PASS" start="2026-04-08T00:51:12.112228" elapsed="0.000027"/>
</return>
<msg time="2026-04-08T00:51:12.112376" level="INFO">${raft_state} = Follower</msg>
<var>${raft_state}</var>
<arg>RaftState</arg>
<arg>${shard_name}</arg>
<arg>${shard_type}</arg>
<arg>${member_index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft property.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T00:51:11.847476" elapsed="0.264925"/>
</kw>
<return>
<value>${raft_state}</value>
<status status="PASS" start="2026-04-08T00:51:12.112457" elapsed="0.000033"/>
</return>
<msg time="2026-04-08T00:51:12.112606" level="INFO">${raft_state} = Follower</msg>
<var>${raft_state}</var>
<arg>shard_name=${shard_name}</arg>
<arg>shard_type=${ds_type}</arg>
<arg>member_index=${index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft status.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T00:51:11.846739" elapsed="0.265891"/>
</kw>
<if>
<branch type="IF" condition="'Follower' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${follower_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-08T00:51:12.112921" elapsed="0.000187"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:12.112709" elapsed="0.000436"/>
</branch>
<branch type="ELSE IF" condition="'Leader' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${leader_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:12.113330" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:12.113186" elapsed="0.000197"/>
</branch>
<branch type="ELSE IF" condition="${validate}">
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized Raft state: ${raft_state}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:12.113544" elapsed="0.000019"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:12.113406" elapsed="0.000187"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:12.112691" elapsed="0.000923"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T00:51:11.846574" elapsed="0.267064"/>
</iter>
<iter>
<kw name="Get_Raft_State_Of_Shard_At_Member" owner="ClusterManagement">
<kw name="Get_Raft_Property_From_Shard_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:12.116038" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:12.115717" elapsed="0.000348"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:51:12.116111" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:51:12.116276" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:51:12.115378" elapsed="0.000923"/>
</kw>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Get_As_Json_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:12.199359" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:12.198940" elapsed="0.000454"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:51:12.200147" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:51:12.199897" elapsed="0.000352">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-08T00:51:12.200395" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:51:12.199561" elapsed="0.000859"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:51:12.200966" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:51:12.200584" elapsed="0.000408"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T00:51:12.201311" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-08T00:51:12.201463" level="INFO">${template} = /rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T00:51:12.201152" elapsed="0.000336"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:12.201886" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:12.201643" elapsed="0.000287"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:12.202907" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:12.202636" elapsed="0.000315"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-08T00:51:12.203397" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-08T00:51:12.203110" elapsed="0.000313"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:12.203751" elapsed="0.000022"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:12.203952" elapsed="0.000024"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:12.204123" elapsed="0.000021"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-08T00:51:12.203619" elapsed="0.000581"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-08T00:51:12.203476" elapsed="0.000755"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-08T00:51:12.204276" elapsed="0.000031"/>
</return>
<msg time="2026-04-08T00:51:12.204436" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-08T00:51:12.202316" elapsed="0.002146"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:12.202004" elapsed="0.002489"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:12.204661" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:12.204517" elapsed="0.000199"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:12.201982" elapsed="0.002754"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:12.205331" level="INFO">${final_text} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:12.204876" elapsed="0.000483"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T00:51:12.205409" elapsed="0.000028"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="PASS" start="2026-04-08T00:51:12.198301" elapsed="0.007231"/>
</kw>
<msg time="2026-04-08T00:51:12.205587" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:51:12.186013" elapsed="0.019655"/>
</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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:12.220035" elapsed="0.000057"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:12.232101" elapsed="0.000041"/>
</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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:12.244192" elapsed="0.000043"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:12.244945" elapsed="0.000038"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:12.245718" elapsed="0.000037"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:12.246444" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:12.246246" elapsed="0.000278"/>
</branch>
<status status="NOT RUN" start="2026-04-08T00:51:12.246228" elapsed="0.000328"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:12.246775" elapsed="0.000050"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:12.247056" elapsed="0.000030"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:12.247336" elapsed="0.000027"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-08T00:51:12.246172" elapsed="0.001252"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-08T00:51:12.245842" elapsed="0.001625"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:12.248205" elapsed="0.000038"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-08T00:51:12.248331" elapsed="0.000053"/>
</return>
<msg time="2026-04-08T00:51:12.248572" level="INFO">${uri} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-08T00:51:12.180177" elapsed="0.068507"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:51:12.251626" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:51:12.251356" elapsed="0.000343">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-08T00:51:12.251892" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:51:12.250871" elapsed="0.001066"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:12.252483" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:12.252070" elapsed="0.000488"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:12.253297" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:12.252884" elapsed="0.000441"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:12.252604" elapsed="0.000768"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:12.252017" elapsed="0.001394"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:51:12.256463" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:51:12.254130" elapsed="0.002380"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-08T00:51:12.256588" elapsed="0.000065"/>
</return>
<msg time="2026-04-08T00:51:12.256911" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:51:12.249709" elapsed="0.007310"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:51:12.259893" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:51:12.259650" elapsed="0.000306">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-08T00:51:12.260200" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:51:12.259212" elapsed="0.001035"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-08T00:51:12.260631" elapsed="0.000078"/>
</return>
<status status="PASS" start="2026-04-08T00:51:12.260380" elapsed="0.000399"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:12.260327" elapsed="0.000491"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:12.261626" elapsed="0.000037"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:12.262377" elapsed="0.000036"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-08T00:51:12.262487" elapsed="0.000049"/>
</return>
<msg time="2026-04-08T00:51:12.264671" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:51:12.258071" elapsed="0.006710"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:12.268796" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:12.268399" elapsed="0.000497"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:12.270115" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:12.269730" elapsed="0.000499"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:51:12.289315" level="INFO">GET Request : url=http://10.30.171.110:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 path_url=/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0u16rl3earouwvehy59feej101.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:51:12.290264" level="INFO">GET Response : url=http://10.30.171.110:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Transfer-Encoding': 'chunked'} 
 body={"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","hidden-symmetric-keys","encrypted-private-keys","asymmetrically-encrypted-value-format","cms-encrypted-data-format","cleartext-private-keys","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["ssh-client-keepalives","client-ident-hostbased","client-ident-publickey","client-ident-password"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-ex... (set the log level to DEBUG or TRACE to see the full content) 
 </msg>
<msg time="2026-04-08T00:51:12.290709" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:51:12.272457" elapsed="0.018364"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:12.270359" elapsed="0.020592"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:12.291652" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:12.291048" elapsed="0.000772"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:12.270307" elapsed="0.021592"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:12.301909" level="INFO">{"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","hidden-symmetric-keys","encrypted-private-keys","asymmetrically-encrypted-value-format","cms-encrypted-data-format","cleartext-private-keys","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["ssh-client-keepalives","client-ident-hostbased","client-ident-publickey","client-ident-password"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-experimenter-types?revision=2015-10-20","namespace":"urn:opendaylight:openflowplugin:experimenter:types","conformance-type":"import"},{"name":"ietf-ip_2018-02-22","revision":"2018-02-22","schema":"/rests/modules/ietf-ip?revision=2018-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-ip","conformance-type":"import","feature":["ipv6-privacy-autoconf","ipv4-non-contiguous-netmasks"]},{"name":"ietf-tcp-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-client","conformance-type":"import","feature":["local-binding-supported","tcp-client-keepalives"]},{"name":"node-config_2014-10-15","revision":"2014-10-15","schema":"/rests/modules/node-config?revision=2014-10-15","namespace":"urn:opendaylight:module:config","conformance-type":"import"},{"name":"ietf-restconf_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf","conformance-type":"import"},{"name":"ietf-datastores_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-datastores?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-datastores","conformance-type":"import"},{"name":"ietf-yang-patch_2017-02-22","revision":"2017-02-22","schema":"/rests/modules/ietf-yang-patch?revision=2017-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-patch","conformance-type":"import"},{"name":"sal-group_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-group?revision=2013-09-18","namespace":"urn:opendaylight:group:service","conformance-type":"import"},{"name":"odl-codegen-extensions_2024-06-27","revision":"2024-06-27","schema":"/rests/modules/odl-codegen-extensions?revision=2024-06-27","namespace":"urn:opendaylight:yang:extension:codegen","conformance-type":"import"},{"name":"sal-meter_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-meter?revision=2013-09-18","namespace":"urn:opendaylight:meter:service","conformance-type":"import"},{"name":"ietf-interfaces_2018-02-20","revision":"2018-02-20","schema":"/rests/modules/ietf-interfaces?revision=2018-02-20","namespace":"urn:ietf:params:xml:ns:yang:ietf-interfaces","conformance-type":"import","feature":["pre-provisioning","if-mib","arbitrary-names"]},{"name":"opendaylight-l2-types_2013-08-27","revision":"2013-08-27","schema":"/rests/modules/opendaylight-l2-types?revision=2013-08-27","namespace":"urn:opendaylight:l2:types","conformance-type":"import"},{"name":"opendaylight-flow-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-flow-types?revision=2013-10-26","namespace":"urn:opendaylight:flow:types","conformance-type":"import"},{"name":"lldp-speaker-config_2016-05-12","revision":"2016-05-12","schema":"/rests/modules/lldp-speaker-config?revision=2016-05-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker:config","conformance-type":"import"},{"name":"aaa-cert_2015-11-26","revision":"2015-11-26","schema":"/rests/modules/aaa-cert?revision=2015-11-26","namespace":"urn:opendaylight:yang:aaa:cert","conformance-type":"import"},{"name":"openflow-action_2015-02-03","revision":"2015-02-03","schema":"/rests/modules/openflow-action?revision=2015-02-03","namespace":"urn:opendaylight:openflow:common:action","conformance-type":"import"},{"name":"openflow-approved-extensions_2016-08-02","revision":"2016-08-02","schema":"/rests/modules/openflow-approved-extensions?revision=2016-08-02","namespace":"urn:opendaylight:openflow:approved:extensions","conformance-type":"import"},{"name":"nc-notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/nc-notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netmod:notification","conformance-type":"import"},{"name":"ietf-netconf-nmda_2019-01-07","revision":"2019-01-07","schema":"/rests/modules/ietf-netconf-nmda?revision=2019-01-07","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-nmda","conformance-type":"import","feature":["with-defaults","origin"]},{"name":"ietf-tcp-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-common","conformance-type":"import","feature":["keepalives-supported"]},{"name":"network-topology_2013-10-21","revision":"2013-10-21","schema":"/rests/modules/network-topology?revision=2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:network-topology","conformance-type":"import"},{"name":"aaa-encrypt-service-config_2024-02-02","revision":"2024-02-02","schema":"/rests/modules/aaa-encrypt-service-config?revision=2024-02-02","namespace":"config:aaa:authn:encrypt:service:config","conformance-type":"import"},{"name":"openflow-instruction_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-instruction?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:instruction","conformance-type":"import"},{"name":"ietf-tls-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-client","conformance-type":"import","feature":["client-ident-x509-cert","server-auth-x509-cert"]},{"name":"opendaylight-group-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-group-statistics?revision=2013-11-11","namespace":"urn:opendaylight:group:statistics","conformance-type":"import"},{"name":"cluster-admin_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/cluster-admin?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:cluster:admin","conformance-type":"import"},{"name":"opendaylight-flow-statistics_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-flow-statistics?revision=2013-08-19","namespace":"urn:opendaylight:flow:statistics","conformance-type":"import"},{"name":"opendaylight-table-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-table-types?revision=2013-10-26","namespace":"urn:opendaylight:table:types","conformance-type":"import"},{"name":"forwarding-rules-manager-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/forwarding-rules-manager-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:forwardingrules-manager:config","conformance-type":"import"},{"name":"odl-srm-types_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-types?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:types","conformance-type":"import"},{"name":"ietf-x509-cert-to-name_2014-12-10","revision":"2014-12-10","schema":"/rests/modules/ietf-x509-cert-to-name?revision=2014-12-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-x509-cert-to-name","conformance-type":"import"},{"name":"flow-node-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-node-inventory?revision=2013-08-19","namespace":"urn:opendaylight:flow:inventory","conformance-type":"import"},{"name":"flow-errors_2013-11-16","revision":"2013-11-16","schema":"/rests/modules/flow-errors?revision=2013-11-16","namespace":"urn:opendaylight:flow:errors","conformance-type":"import"},{"name":"ietf-netconf_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:netconf:base:1.0","conformance-type":"import","feature":["xpath","url","rollback-on-error","validate","startup","candidate","confirmed-commit","writable-running"]},{"name":"iana-ssh-public-key-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-public-key-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-public-key-algs","conformance-type":"import"},{"name":"aaa-cert-mdsal_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/aaa-cert-mdsal?revision=2016-03-21","namespace":"urn:opendaylight:yang:aaa:cert:mdsal","conformance-type":"import"},{"name":"odl-device-notification_2024-02-18","revision":"2024-02-18","schema":"/rests/modules/odl-device-notification?revision=2024-02-18","namespace":"urn:opendaylight:device:notification","conformance-type":"import"},{"name":"ietf-origin_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-origin?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-origin","conformance-type":"import"},{"name":"openflow-augments_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-augments?revision=2015-02-25","namespace":"urn:opendaylight:openflow:augments","conformance-type":"import"},{"name":"iana-ssh-encryption-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-encryption-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-encryption-algs","conformance-type":"import"},{"name":"ietf-truststore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-truststore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-truststore","conformance-type":"import","feature":["inline-definitions-supported"]},{"name":"distributed-datastore-provider_2025-01-30","revision":"2025-01-30","schema":"/rests/modules/distributed-datastore-provider?revision=2025-01-30","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:distributed-datastore-provider","conformance-type":"import"},{"name":"opendaylight-group-types_2013-10-18","revision":"2013-10-18","schema":"/rests/modules/opendaylight-group-types?revision=2013-10-18","namespace":"urn:opendaylight:group:types","conformance-type":"import"},{"name":"sal-remote-augment_2023-11-03","revision":"2023-11-03","schema":"/rests/modules/sal-remote-augment?revision=2023-11-03","namespace":"urn:sal:restconf:event:subscription","conformance-type":"import"},{"name":"opendaylight-ipv6-arbitrary-bitmask-fields_2016-02-24","revision":"2016-02-24","schema":"/rests/modules/opendaylight-ipv6-arbitrary-bitmask-fields?revision=2016-02-24","namespace":"urn:opendaylight:opendaylight-ipv6-arbitrary-bitmask-fields","conformance-type":"import"},{"name":"sal-flows-batch_2016-03-14","revision":"2016-03-14","schema":"/rests/modules/sal-flows-batch?revision=2016-03-14","namespace":"urn:opendaylight:flows:service","conformance-type":"import"},{"name":"ietf-tls-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-common","conformance-type":"import","feature":["tls12","hello-params","tls13"]},{"name":"openflow-types_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-types?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:types","conformance-type":"import"},{"name":"ietf-netconf-with-defaults_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf-with-defaults?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults","conformance-type":"import"},{"name":"odl-srm-ops_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-ops?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:ops","conformance-type":"import"},{"name":"odl-general-entity_2015-09-30","revision":"2015-09-30","schema":"/rests/modules/odl-general-entity?revision=2015-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:mdsal:core:general-entity","conformance-type":"import"},{"name":"iana-ssh-key-exchange-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-key-exchange-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-key-exchange-algs","conformance-type":"import"},{"name":"node-ssl-connection-error_2019-07-23","revision":"2019-07-23","schema":"/rests/modules/node-ssl-connection-error?revision=2019-07-23","namespace":"urn:opendaylight:node-ssl-connection-error:service","conformance-type":"import"},{"name":"openflow-protocol_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-protocol?revision=2013-07-31","namespace":"urn:opendaylight:openflow:protocol","conformance-type":"import"},{"name":"ietf-udp-server_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-server?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-server","conformance-type":"import"},{"name":"ietf-keystore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-keystore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-keystore","conformance-type":"import","feature":["asymmetric-keys","inline-definitions-supported"]},{"name":"aaa_2016-12-14","revision":"2016-12-14","schema":"/rests/modules/aaa?revision=2016-12-14","namespace":"urn:opendaylight:params:xml:ns:yang:aaa","conformance-type":"import"},{"name":"aaa-cert-rpc_2015-12-15","revision":"2015-12-15","schema":"/rests/modules/aaa-cert-rpc?revision=2015-12-15","namespace":"urn:opendaylight:yang:aaa:cert:rpc","conformance-type":"import"},{"name":"system-notifications_2013-09-27","revision":"2013-09-27","schema":"/rests/modules/system-notifications?revision=2013-09-27","namespace":"urn:opendaylight:openflow:system","conformance-type":"import"},{"name":"sal-flat-batch_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/sal-flat-batch?revision=2016-03-21","namespace":"urn:opendaylight:flat-batch:service","conformance-type":"import"},{"name":"notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netconf:notification:1.0","conformance-type":"import"},{"name":"sal-remote_2014-01-14","revision":"2014-01-14","schema":"/rests/modules/sal-remote?revision=2014-01-14","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:remote","conformance-type":"import"},{"name":"yang-ext_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/yang-ext?revision=2013-07-09","namespace":"urn:opendaylight:yang:extension:yang-ext","conformance-type":"import"},{"name":"opendaylight-multipart-types_2017-01-12","revision":"2017-01-12","schema":"/rests/modules/opendaylight-multipart-types?revision=2017-01-12","namespace":"urn:opendaylight:multipart:types","conformance-type":"import"},{"name":"opendaylight-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-inventory?revision=2013-08-19","namespace":"urn:opendaylight:inventory","conformance-type":"import"},{"name":"sal-queue_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-queue?revision=2015-03-05","namespace":"urn:opendaylight:queue:service","conformance-type":"import"},{"name":"sal-groups-batch_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/sal-groups-batch?revision=2016-03-15","namespace":"urn:opendaylight:groups:service","conformance-type":"import"},{"name":"arbitrator-reconcile_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/arbitrator-reconcile?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:arbitrator-reconcile:service","conformance-type":"import"},{"name":"ietf-yang-metadata_2016-08-05","revision":"2016-08-05","schema":"/rests/modules/ietf-yang-metadata?revision=2016-08-05","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-metadata","conformance-type":"import"},{"name":"opendaylight-arbitrary-bitmask-fields_2016-01-30","revision":"2016-01-30","schema":"/rests/modules/opendaylight-arbitrary-bitmask-fields?revision=2016-01-30","namespace":"urn:opendaylight:arbitrary:bitmask:fields","conformance-type":"import"},{"name":"ietf-udp-client_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-client?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-client","conformance-type":"import","feature":["local-binding"]},{"name":"opendaylight-meter-types_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/opendaylight-meter-types?revision=2013-09-18","namespace":"urn:opendaylight:meter:types","conformance-type":"import"},{"name":"opendaylight-action-types_2013-11-12","revision":"2013-11-12","schema":"/rests/modules/opendaylight-action-types?revision=2013-11-12","namespace":"urn:opendaylight:action:types","conformance-type":"import"},{"name":"sal-role_2015-07-27","revision":"2015-07-27","schema":"/rests/modules/sal-role?revision=2015-07-27","namespace":"urn:opendaylight:role:service","conformance-type":"import"},{"name":"openflow-provider-config_2016-05-10","revision":"2016-05-10","schema":"/rests/modules/openflow-provider-config?revision=2016-05-10","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:provider:config","conformance-type":"import"},{"name":"odl-serviceutils-upgrade_2018-07-02","revision":"2018-07-02","schema":"/rests/modules/odl-serviceutils-upgrade?revision=2018-07-02","namespace":"urn:opendaylight:serviceutils:upgrade","conformance-type":"import"},{"name":"opendaylight-match-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-match-types?revision=2013-10-26","namespace":"urn:opendaylight:model:match:types","conformance-type":"import"},{"name":"ietf-restconf-server_2024-08-14","revision":"2024-08-14","schema":"/rests/modules/ietf-restconf-server?revision=2024-08-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-server","conformance-type":"import","feature":["http-listen","https-listen"]},{"name":"reconciliation-result-state_2017-07-13","revision":"2017-07-13","schema":"/rests/modules/reconciliation-result-state?revision=2017-07-13","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:rf:state","conformance-type":"import"},{"name":"onf-extensions_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/onf-extensions?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf","conformance-type":"import"},{"name":"sal-table_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/sal-table?revision=2013-10-26","namespace":"urn:opendaylight:table:service","conformance-type":"import"},{"name":"iana-http-versions_2026-02-04","revision":"2026-02-04","schema":"/rests/modules/iana-http-versions?revision=2026-02-04","namespace":"urn:ietf:params:xml:ns:yang:iana-http-versions","conformance-type":"import"},{"name":"opendaylight-direct-statistics_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/opendaylight-direct-statistics?revision=2016-05-11","namespace":"urn:opendaylight:direct:statistics","conformance-type":"import"},{"name":"opendaylight-port-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-port-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:port","conformance-type":"import"},{"name":"sal-async-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/sal-async-config?revision=2017-06-19","namespace":"urn:opendaylight:async-config:service","conformance-type":"import"},{"name":"aaa-password-service-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-password-service-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:password:service:config","conformance-type":"import"},{"name":"ietf-yang-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-yang-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-types","conformance-type":"import"},{"name":"opendaylight-queue-statistics_2013-12-16","revision":"2013-12-16","schema":"/rests/modules/opendaylight-queue-statistics?revision=2013-12-16","namespace":"urn:opendaylight:queue:statistics","conformance-type":"import"},{"name":"sal-bundle_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/sal-bundle?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf:bundle:service","conformance-type":"import"},{"name":"ietf-restconf-subscribed-notifications_2019-11-17","revision":"2019-11-17","schema":"/rests/modules/ietf-restconf-subscribed-notifications?revision=2019-11-17","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-subscribed-notifications","conformance-type":"import"},{"name":"sal-meters-batch_2016-03-16","revision":"2016-03-16","schema":"/rests/modules/sal-meters-batch?revision=2016-03-16","namespace":"urn:opendaylight:meters:service","conformance-type":"import"},{"name":"odl-entity-owners","revision":"","schema":"/rests/modules/odl-entity-owners","namespace":"urn:opendaylight:params:xml:ns:yang:controller:entity-owners","conformance-type":"import"},{"name":"sal-experimenter-mp-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-mp-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-mp-message:service","conformance-type":"import"},{"name":"packet-processing_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/packet-processing?revision=2013-07-09","namespace":"urn:opendaylight:packet:service","conformance-type":"import"},{"name":"openflow-configuration_2014-06-30","revision":"2014-06-30","schema":"/rests/modules/openflow-configuration?revision=2014-06-30","namespace":"urn:opendaylight:openflow:config","conformance-type":"import"},{"name":"odl-srm-rpcs_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-rpcs?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:rpc","conformance-type":"import"},{"name":"ietf-netconf-acm_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-netconf-acm?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-acm","conformance-type":"import"},{"name":"iana-crypt-hash_2014-08-06","revision":"2014-08-06","schema":"/rests/modules/iana-crypt-hash?revision=2014-08-06","namespace":"urn:ietf:params:xml:ns:yang:iana-crypt-hash","conformance-type":"import","feature":["crypt-hash-sha-512","crypt-hash-sha-256","crypt-hash-md5"]},{"name":"openflow-extensible-match_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-extensible-match?revision=2015-02-25","namespace":"urn:opendaylight:openflow:oxm","conformance-type":"import"}],"module-set-id":"2"}}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:12.295809" elapsed="0.007080"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:12.295280" elapsed="0.007712"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:12.295230" elapsed="0.007835"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:12.306288" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:12.303649" elapsed="0.002692"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:12.303344" elapsed="0.003045"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:12.303287" elapsed="0.003129"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:12.307153" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:12.306665" elapsed="0.000535"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:12.307648" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:12.307315" elapsed="0.000401"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:12.308318" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:12.307941" elapsed="0.000406"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:12.307746" elapsed="0.000642"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:12.307289" elapsed="0.001123"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:12.309055" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:12.308624" elapsed="0.000460"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:12.309477" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:12.309209" elapsed="0.000334"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:12.310120" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:12.309761" elapsed="0.000387"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:12.309569" elapsed="0.000635"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:12.309185" elapsed="0.001044"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:51:12.310434" elapsed="0.000428"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:51:12.311478" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:12.311079" elapsed="0.000428"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:51:12.311719" elapsed="0.002490"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:51:12.293582" elapsed="0.020758"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:51:12.314696" elapsed="0.000048"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:51:12.314474" elapsed="0.000369"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:12.314422" elapsed="0.000458"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:51:12.324112" level="INFO">${text_normalized} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:51:12.315620" elapsed="0.008554"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:51:12.324253" elapsed="0.000073"/>
</return>
<msg time="2026-04-08T00:51:12.324621" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:51:12.265682" elapsed="0.059049"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:51:12.325223" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:51:12.325435" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="PASS" start="2026-04-08T00:51:12.124536" elapsed="0.200931"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Json_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:12.325800" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:12.325554" elapsed="0.000439"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:12.325535" elapsed="0.000485"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:51:12.326055" elapsed="0.000026"/>
</return>
<arg>session=${session}</arg>
<arg>folder=${RESTCONF_MODULES_DIR}</arg>
<arg>verify=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Add arguments sensible for JSON data, return Get_Templated response text.
Optionally, verification against JSON data (may be iterated) is called.
Only subset of JSON data is verified and returned if JMES path is specified in
file ${folder}/jmespath.expr.</doc>
<status status="PASS" start="2026-04-08T00:51:12.120412" elapsed="0.205801"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:12.116368" elapsed="0.209891"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:12.116351" elapsed="0.209933"/>
</if>
<kw name="Resolve_Shard_Type_Class" owner="ClusterManagement">
<if>
<branch type="IF" condition="'${shard_type}' == 'config'">
<return>
<value>DistributedConfigDatastore</value>
<status status="NOT RUN" start="2026-04-08T00:51:12.326925" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:51:12.326814" elapsed="0.000156"/>
</branch>
<branch type="ELSE IF" condition="'${shard_type}' == 'operational'">
<return>
<value>DistributedOperationalDatastore</value>
<status status="PASS" start="2026-04-08T00:51:12.327093" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-08T00:51:12.326992" elapsed="0.000158"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:12.326795" elapsed="0.000397"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized shard type: ${shard_type}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:12.327340" elapsed="0.000024"/>
</kw>
<msg time="2026-04-08T00:51:12.327462" level="INFO">${type_class} = DistributedOperationalDatastore</msg>
<var>${type_class}</var>
<arg>shard_type=${shard_type}</arg>
<doc>Simple lookup for class name corresponding to desired type.</doc>
<status status="PASS" start="2026-04-08T00:51:12.326515" elapsed="0.000972"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:12.328023" level="INFO">${cluster_index} = 3</msg>
<var>${cluster_index}</var>
<arg>${member_index}+${NODE_ROLE_INDEX_START}-1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:12.327653" elapsed="0.000396"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:12.328688" level="INFO">${uri} = jolokia/read/org.opendaylight.controller:Category=Shards,name=member-3-shard-topology-operational,type=DistributedOperationalDatastore</msg>
<var>${uri}</var>
<arg>${JOLOKIA_READ_URI}:Category=Shards,name=member-${cluster_index}-shard-${shard_name}-${shard_type},type=${type_class}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:12.328219" elapsed="0.000497"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:12.334252" level="INFO">jolokia/read/org.opendaylight.controller:Category=Shards,name=member-3-shard-topology-operational,type=DistributedOperationalDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:12.333796" elapsed="0.000502"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:12.334920" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:12.334452" elapsed="0.000513"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:51:12.352229" level="INFO">GET Request : url=http://10.30.171.110:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-3-shard-topology-operational,type=DistributedOperationalDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-3-shard-topology-operational,type=DistributedOperationalDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:51:12.352363" level="INFO">GET Response : url=http://10.30.171.110:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-3-shard-topology-operational,type=DistributedOperationalDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Wed, 08 Apr 2026 00:51:12 GMT', 'Expires': 'Tue, 07 Apr 2026 23:51:12 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-3-shard-topology-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"ReadWriteTransactionCount":0,"SnapshotIndex":124,"InMemoryJournalLogSize":1,"ReplicatedToAllIndex":124,"Leader":"member-1-shard-topology-operational","LastIndex":125,"RaftState":"Follower","LastApplied":125,"LastCommittedTransactionTime":"1970-01-01 00:00:00.000","PeerAddresses":"member-1-shard-topology-operational: pekko:\/\/opendaylight-cluster-data@10.30.170.48:2550\/user\/shardmanager-operational\/member-1-shard-topology-operational, member-2-shard-topology-operational: pekko:\/\/opendaylight-cluster-data@10.30.170.131:2550\/user\/shardmanager-operational\/member-2-shard-topology-operational","LastLogIndex":125,"LastLeadershipChangeTime":"2026-04-08 00:46:45.978","FollowerInitialSyncStatus":true,"FollowerInfo":[],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"242.9 μs","CurrentTerm":2,"LastTerm":2,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-topology-operational","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":0,"TxCohortCacheSize":0,"PeerVotingStates":"member-1-shard-topology-operational: true, member-2-shard-topology-operational: true","LastLogTerm":2,"StatRetrievalError":null,"CommitIndex":125,"SnapshotTerm":2,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-3-shard-topology-operational","LeadershipChangeCount":1,"InMemoryJournalDataSize":23304},"timestamp":1775609472,"status":200} 
 </msg>
<msg time="2026-04-08T00:51:12.352554" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:51:12.345767" elapsed="0.006893"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:12.335033" elapsed="0.017879"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:12.353091" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:12.352942" elapsed="0.000718"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:12.335014" elapsed="0.018672"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:12.358320" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-3-shard-topology-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"ReadWriteTransactionCount":0,"SnapshotIndex":124,"InMemoryJournalLogSize":1,"ReplicatedToAllIndex":124,"Leader":"member-1-shard-topology-operational","LastIndex":125,"RaftState":"Follower","LastApplied":125,"LastCommittedTransactionTime":"1970-01-01 00:00:00.000","PeerAddresses":"member-1-shard-topology-operational: pekko:\/\/opendaylight-cluster-data@10.30.170.48:2550\/user\/shardmanager-operational\/member-1-shard-topology-operational, member-2-shard-topology-operational: pekko:\/\/opendaylight-cluster-data@10.30.170.131:2550\/user\/shardmanager-operational\/member-2-shard-topology-operational","LastLogIndex":125,"LastLeadershipChangeTime":"2026-04-08 00:46:45.978","FollowerInitialSyncStatus":true,"FollowerInfo":[],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"242.9 μs","CurrentTerm":2,"LastTerm":2,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-topology-operational","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":0,"TxCohortCacheSize":0,"PeerVotingStates":"member-1-shard-topology-operational: true, member-2-shard-topology-operational: true","LastLogTerm":2,"StatRetrievalError":null,"CommitIndex":125,"SnapshotTerm":2,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-3-shard-topology-operational","LeadershipChangeCount":1,"InMemoryJournalDataSize":23304},"timestamp":1775609472,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:12.355766" elapsed="0.002673"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:12.354860" elapsed="0.003628"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:12.354841" elapsed="0.003686"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:12.361800" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:12.359531" elapsed="0.002367"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:12.358610" elapsed="0.003336"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:12.358592" elapsed="0.003392"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:12.363584" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:12.362608" elapsed="0.001039"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:12.364304" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:12.363817" elapsed="0.000575"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:12.365286" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:12.364762" elapsed="0.000574"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:12.364431" elapsed="0.000957"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:12.363796" elapsed="0.001628"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:12.366814" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:12.366033" elapsed="0.000843"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:12.367569" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:12.367044" elapsed="0.000612"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:12.368611" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:12.368020" elapsed="0.000639"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:12.367693" elapsed="0.001016"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:12.367023" elapsed="0.001721"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:51:12.368966" elapsed="0.000639"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:51:12.370415" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:12.369911" elapsed="0.000564"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:51:12.370787" elapsed="0.002420"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:51:12.354150" elapsed="0.019218"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:51:12.373569" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:51:12.373442" elapsed="0.000172"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:12.373423" elapsed="0.000212"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:51:12.377243" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-3-shard-topology-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:51:12.373778" elapsed="0.003494"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:51:12.377325" elapsed="0.000033"/>
</return>
<msg time="2026-04-08T00:51:12.377485" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-3-shard-topology-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:51:12.329674" elapsed="0.047898"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:51:12.377634" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:51:12.377787" level="INFO">${data_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-3-shard-topology-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp...</msg>
<var>${data_text}</var>
<arg>uri=${uri}</arg>
<arg>session=${session}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-08T00:51:12.328926" elapsed="0.048887"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:12.378884" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-3-shard-topology-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 17756094...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:12.378396" elapsed="0.000517"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-08T00:51:12.378962" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:51:12.379135" level="INFO">${data_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-3-shard-topology-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 17756094...</msg>
<var>${data_object}</var>
<arg>${data_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-08T00:51:12.378031" elapsed="0.001250"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:51:12.379642" level="INFO">${value} = {'AbortTransactionsCount': 0, 'CommitIndex': 125, 'CommittedTransactionsCount': 0, 'CurrentTerm': 2, 'FailedReadTransactionsCount': 0, 'FailedTransactionsCount': 0, 'FollowerInfo': [], 'FollowerInitia...</msg>
<var>${value}</var>
<arg>${data_object}</arg>
<arg>value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:51:12.379440" elapsed="0.000229"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:51:12.380021" level="INFO">${raft_property} = Follower</msg>
<var>${raft_property}</var>
<arg>${value}</arg>
<arg>${property}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:51:12.379822" elapsed="0.000225"/>
</kw>
<return>
<value>${raft_property}</value>
<status status="PASS" start="2026-04-08T00:51:12.380092" elapsed="0.000027"/>
</return>
<msg time="2026-04-08T00:51:12.380260" level="INFO">${raft_state} = Follower</msg>
<var>${raft_state}</var>
<arg>RaftState</arg>
<arg>${shard_name}</arg>
<arg>${shard_type}</arg>
<arg>${member_index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft property.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T00:51:12.114735" elapsed="0.265550"/>
</kw>
<return>
<value>${raft_state}</value>
<status status="PASS" start="2026-04-08T00:51:12.380344" elapsed="0.000025"/>
</return>
<msg time="2026-04-08T00:51:12.380489" level="INFO">${raft_state} = Follower</msg>
<var>${raft_state}</var>
<arg>shard_name=${shard_name}</arg>
<arg>shard_type=${ds_type}</arg>
<arg>member_index=${index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft status.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T00:51:12.113964" elapsed="0.266550"/>
</kw>
<if>
<branch type="IF" condition="'Follower' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${follower_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-08T00:51:12.380808" elapsed="0.000188"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:12.380594" elapsed="0.000439"/>
</branch>
<branch type="ELSE IF" condition="'Leader' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${leader_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:12.381215" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:12.381058" elapsed="0.000211"/>
</branch>
<branch type="ELSE IF" condition="${validate}">
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized Raft state: ${raft_state}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:12.381431" elapsed="0.000019"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:12.381292" elapsed="0.000188"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:12.380577" elapsed="0.000925"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T00:51:12.113800" elapsed="0.267726"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-08T00:51:11.591006" elapsed="0.790554"/>
</for>
<return>
<value>${leader_list}</value>
<value>${follower_list}</value>
<status status="PASS" start="2026-04-08T00:51:12.381603" elapsed="0.000026"/>
</return>
<msg time="2026-04-08T00:51:12.381802" level="INFO">${leader_list} = [1]</msg>
<msg time="2026-04-08T00:51:12.381847" level="INFO">${follower_list} = [2, 3]</msg>
<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="PASS" start="2026-04-08T00:51:11.587006" elapsed="0.794864"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T00:51:12.382325" level="INFO">Length is 1.</msg>
<msg time="2026-04-08T00:51:12.382400" level="INFO">${leader_count} = 1</msg>
<var>${leader_count}</var>
<arg>${leader_list}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T00:51:12.382043" elapsed="0.000380"/>
</kw>
<if>
<branch type="IF" condition="${leader_count} &lt; 1">
<kw name="Fail" owner="BuiltIn">
<arg>No leader found.</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:12.382700" elapsed="0.000046"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:12.382491" elapsed="0.000289"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:12.382473" elapsed="0.000330"/>
</if>
<kw name="Length Should Be" owner="BuiltIn">
<msg time="2026-04-08T00:51:12.384868" level="INFO">Length is 1.</msg>
<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="PASS" start="2026-04-08T00:51:12.382937" elapsed="0.001977"/>
</kw>
<kw name="Get From List" owner="Collections">
<msg time="2026-04-08T00:51:12.385326" level="INFO">${leader} = 1</msg>
<var>${leader}</var>
<arg>${leader_list}</arg>
<arg>0</arg>
<doc>Returns the value specified with an ``index`` from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:51:12.385123" elapsed="0.000228"/>
</kw>
<return>
<value>${leader}</value>
<value>${follower_list}</value>
<status status="PASS" start="2026-04-08T00:51:12.385398" elapsed="0.000028"/>
</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="PASS" start="2026-04-08T00:51:11.584385" elapsed="0.801166"/>
</kw>
<var name="${shard_name}">topology</var>
<status status="PASS" start="2026-04-08T00:51:11.584123" elapsed="0.801475"/>
</iter>
<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-04-08T00:51:12.389926" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:51:12.389545" elapsed="0.000408"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:51:12.390428" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:51:12.390110" elapsed="0.000343"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:51:12.390497" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:51:12.390648" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:51:12.389176" elapsed="0.001496"/>
</kw>
<kw name="Sort List" owner="Collections">
<arg>${index_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="PASS" start="2026-04-08T00:51:12.390839" elapsed="0.000152"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:51:12.391495" level="INFO">${ds_type} = operational</msg>
<var>${ds_type}</var>
<arg>'${shard_type}' != 'config'</arg>
<arg>operational</arg>
<arg>config</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:51:12.391148" elapsed="0.000373"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:51:12.391911" level="INFO">${leader_list} = []</msg>
<var>${leader_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:51:12.391676" elapsed="0.000261"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:51:12.392331" level="INFO">${follower_list} = []</msg>
<var>${follower_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:51:12.392081" elapsed="0.000275"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_Raft_State_Of_Shard_At_Member" owner="ClusterManagement">
<kw name="Get_Raft_Property_From_Shard_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:12.394792" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:12.394441" elapsed="0.000379"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:51:12.394866" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:51:12.395013" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:51:12.394084" elapsed="0.000954"/>
</kw>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Get_As_Json_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:12.476891" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:12.476519" elapsed="0.000400"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:51:12.477702" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:51:12.477431" elapsed="0.000351">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-08T00:51:12.477875" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:51:12.477080" elapsed="0.000819"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:51:12.478455" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:51:12.478059" elapsed="0.000423"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T00:51:12.478806" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-08T00:51:12.478986" level="INFO">${template} = /rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T00:51:12.478641" elapsed="0.000370"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:12.479463" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:12.479215" elapsed="0.000292"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:12.480451" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:12.480196" elapsed="0.000299"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-08T00:51:12.480920" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-08T00:51:12.480655" elapsed="0.000290"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:12.481275" elapsed="0.000023"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:12.481479" elapsed="0.000023"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:12.481648" elapsed="0.000021"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-08T00:51:12.481125" elapsed="0.000579"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-08T00:51:12.480992" elapsed="0.000741"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-08T00:51:12.481774" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:51:12.481930" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-08T00:51:12.479864" elapsed="0.002091"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:12.479577" elapsed="0.002409"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:12.482168" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:12.482010" elapsed="0.000215"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:12.479557" elapsed="0.002689"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:12.482832" level="INFO">${final_text} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:12.482388" elapsed="0.000471"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T00:51:12.482906" elapsed="0.000030"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="PASS" start="2026-04-08T00:51:12.475900" elapsed="0.007129"/>
</kw>
<msg time="2026-04-08T00:51:12.483081" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:51:12.463779" elapsed="0.019403"/>
</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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:12.495149" elapsed="0.000061"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:12.506942" elapsed="0.000041"/>
</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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:12.518820" elapsed="0.000039"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:12.519623" elapsed="0.000037"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:12.520376" elapsed="0.000044"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:12.520943" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:12.520796" elapsed="0.000236"/>
</branch>
<status status="NOT RUN" start="2026-04-08T00:51:12.520781" elapsed="0.000275"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:12.521232" elapsed="0.000022"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:12.521420" elapsed="0.000022"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:12.521604" elapsed="0.000021"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-08T00:51:12.520733" elapsed="0.000946"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-08T00:51:12.520517" elapsed="0.001201"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:12.522411" elapsed="0.000036"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-08T00:51:12.522528" elapsed="0.000046"/>
</return>
<msg time="2026-04-08T00:51:12.522777" level="INFO">${uri} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-08T00:51:12.457773" elapsed="0.065112"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:51:12.525732" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:51:12.525482" elapsed="0.000314">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-08T00:51:12.526013" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:51:12.525030" elapsed="0.001028"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:12.526687" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:12.526287" elapsed="0.000467"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:12.527375" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:12.527052" elapsed="0.000356"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:12.526792" elapsed="0.000672"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:12.526138" elapsed="0.001371"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:51:12.530665" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:51:12.528233" elapsed="0.002479"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-08T00:51:12.530793" elapsed="0.000156"/>
</return>
<msg time="2026-04-08T00:51:12.531221" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:51:12.523872" elapsed="0.007457"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:51:12.533901" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:51:12.533663" elapsed="0.000301">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-08T00:51:12.534150" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:51:12.533232" elapsed="0.000993"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-08T00:51:12.534603" elapsed="0.000112"/>
</return>
<status status="PASS" start="2026-04-08T00:51:12.534356" elapsed="0.000429"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:12.534305" elapsed="0.000518"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:12.535559" elapsed="0.000037"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:12.536309" elapsed="0.000036"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-08T00:51:12.536417" elapsed="0.000048"/>
</return>
<msg time="2026-04-08T00:51:12.538607" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:51:12.532122" elapsed="0.006609"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:12.542609" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:12.542045" elapsed="0.000672"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:12.543781" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:12.543405" elapsed="0.000470"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:51:12.556282" level="INFO">GET Request : url=http://10.30.170.48:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 path_url=/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01ju7g9ih47awu1dako8be5k84o113.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:51:12.556699" level="INFO">GET Response : url=http://10.30.170.48:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Transfer-Encoding': 'chunked'} 
 body={"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","hidden-symmetric-keys","encrypted-private-keys","asymmetrically-encrypted-value-format","cms-encrypted-data-format","cleartext-private-keys","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["ssh-client-keepalives","client-ident-hostbased","client-ident-publickey","client-ident-password"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-ex... (set the log level to DEBUG or TRACE to see the full content) 
 </msg>
<msg time="2026-04-08T00:51:12.556892" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:51:12.546039" elapsed="0.010880"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:12.543999" elapsed="0.012975"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:12.557292" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:12.557018" elapsed="0.000353"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:12.543949" elapsed="0.013459"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:12.561622" level="INFO">{"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","hidden-symmetric-keys","encrypted-private-keys","asymmetrically-encrypted-value-format","cms-encrypted-data-format","cleartext-private-keys","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["ssh-client-keepalives","client-ident-hostbased","client-ident-publickey","client-ident-password"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-experimenter-types?revision=2015-10-20","namespace":"urn:opendaylight:openflowplugin:experimenter:types","conformance-type":"import"},{"name":"ietf-ip_2018-02-22","revision":"2018-02-22","schema":"/rests/modules/ietf-ip?revision=2018-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-ip","conformance-type":"import","feature":["ipv6-privacy-autoconf","ipv4-non-contiguous-netmasks"]},{"name":"ietf-tcp-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-client","conformance-type":"import","feature":["local-binding-supported","tcp-client-keepalives"]},{"name":"node-config_2014-10-15","revision":"2014-10-15","schema":"/rests/modules/node-config?revision=2014-10-15","namespace":"urn:opendaylight:module:config","conformance-type":"import"},{"name":"ietf-restconf_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf","conformance-type":"import"},{"name":"ietf-datastores_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-datastores?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-datastores","conformance-type":"import"},{"name":"ietf-yang-patch_2017-02-22","revision":"2017-02-22","schema":"/rests/modules/ietf-yang-patch?revision=2017-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-patch","conformance-type":"import"},{"name":"sal-group_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-group?revision=2013-09-18","namespace":"urn:opendaylight:group:service","conformance-type":"import"},{"name":"odl-codegen-extensions_2024-06-27","revision":"2024-06-27","schema":"/rests/modules/odl-codegen-extensions?revision=2024-06-27","namespace":"urn:opendaylight:yang:extension:codegen","conformance-type":"import"},{"name":"sal-meter_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-meter?revision=2013-09-18","namespace":"urn:opendaylight:meter:service","conformance-type":"import"},{"name":"ietf-interfaces_2018-02-20","revision":"2018-02-20","schema":"/rests/modules/ietf-interfaces?revision=2018-02-20","namespace":"urn:ietf:params:xml:ns:yang:ietf-interfaces","conformance-type":"import","feature":["pre-provisioning","if-mib","arbitrary-names"]},{"name":"opendaylight-l2-types_2013-08-27","revision":"2013-08-27","schema":"/rests/modules/opendaylight-l2-types?revision=2013-08-27","namespace":"urn:opendaylight:l2:types","conformance-type":"import"},{"name":"opendaylight-flow-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-flow-types?revision=2013-10-26","namespace":"urn:opendaylight:flow:types","conformance-type":"import"},{"name":"lldp-speaker-config_2016-05-12","revision":"2016-05-12","schema":"/rests/modules/lldp-speaker-config?revision=2016-05-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker:config","conformance-type":"import"},{"name":"aaa-cert_2015-11-26","revision":"2015-11-26","schema":"/rests/modules/aaa-cert?revision=2015-11-26","namespace":"urn:opendaylight:yang:aaa:cert","conformance-type":"import"},{"name":"openflow-action_2015-02-03","revision":"2015-02-03","schema":"/rests/modules/openflow-action?revision=2015-02-03","namespace":"urn:opendaylight:openflow:common:action","conformance-type":"import"},{"name":"openflow-approved-extensions_2016-08-02","revision":"2016-08-02","schema":"/rests/modules/openflow-approved-extensions?revision=2016-08-02","namespace":"urn:opendaylight:openflow:approved:extensions","conformance-type":"import"},{"name":"nc-notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/nc-notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netmod:notification","conformance-type":"import"},{"name":"ietf-netconf-nmda_2019-01-07","revision":"2019-01-07","schema":"/rests/modules/ietf-netconf-nmda?revision=2019-01-07","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-nmda","conformance-type":"import","feature":["with-defaults","origin"]},{"name":"ietf-tcp-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-common","conformance-type":"import","feature":["keepalives-supported"]},{"name":"network-topology_2013-10-21","revision":"2013-10-21","schema":"/rests/modules/network-topology?revision=2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:network-topology","conformance-type":"import"},{"name":"aaa-encrypt-service-config_2024-02-02","revision":"2024-02-02","schema":"/rests/modules/aaa-encrypt-service-config?revision=2024-02-02","namespace":"config:aaa:authn:encrypt:service:config","conformance-type":"import"},{"name":"openflow-instruction_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-instruction?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:instruction","conformance-type":"import"},{"name":"ietf-tls-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-client","conformance-type":"import","feature":["client-ident-x509-cert","server-auth-x509-cert"]},{"name":"opendaylight-group-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-group-statistics?revision=2013-11-11","namespace":"urn:opendaylight:group:statistics","conformance-type":"import"},{"name":"cluster-admin_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/cluster-admin?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:cluster:admin","conformance-type":"import"},{"name":"opendaylight-flow-statistics_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-flow-statistics?revision=2013-08-19","namespace":"urn:opendaylight:flow:statistics","conformance-type":"import"},{"name":"opendaylight-table-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-table-types?revision=2013-10-26","namespace":"urn:opendaylight:table:types","conformance-type":"import"},{"name":"forwarding-rules-manager-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/forwarding-rules-manager-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:forwardingrules-manager:config","conformance-type":"import"},{"name":"odl-srm-types_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-types?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:types","conformance-type":"import"},{"name":"ietf-x509-cert-to-name_2014-12-10","revision":"2014-12-10","schema":"/rests/modules/ietf-x509-cert-to-name?revision=2014-12-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-x509-cert-to-name","conformance-type":"import"},{"name":"flow-node-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-node-inventory?revision=2013-08-19","namespace":"urn:opendaylight:flow:inventory","conformance-type":"import"},{"name":"flow-errors_2013-11-16","revision":"2013-11-16","schema":"/rests/modules/flow-errors?revision=2013-11-16","namespace":"urn:opendaylight:flow:errors","conformance-type":"import"},{"name":"ietf-netconf_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:netconf:base:1.0","conformance-type":"import","feature":["xpath","url","rollback-on-error","validate","startup","candidate","confirmed-commit","writable-running"]},{"name":"iana-ssh-public-key-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-public-key-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-public-key-algs","conformance-type":"import"},{"name":"aaa-cert-mdsal_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/aaa-cert-mdsal?revision=2016-03-21","namespace":"urn:opendaylight:yang:aaa:cert:mdsal","conformance-type":"import"},{"name":"odl-device-notification_2024-02-18","revision":"2024-02-18","schema":"/rests/modules/odl-device-notification?revision=2024-02-18","namespace":"urn:opendaylight:device:notification","conformance-type":"import"},{"name":"ietf-origin_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-origin?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-origin","conformance-type":"import"},{"name":"openflow-augments_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-augments?revision=2015-02-25","namespace":"urn:opendaylight:openflow:augments","conformance-type":"import"},{"name":"iana-ssh-encryption-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-encryption-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-encryption-algs","conformance-type":"import"},{"name":"ietf-truststore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-truststore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-truststore","conformance-type":"import","feature":["inline-definitions-supported"]},{"name":"distributed-datastore-provider_2025-01-30","revision":"2025-01-30","schema":"/rests/modules/distributed-datastore-provider?revision=2025-01-30","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:distributed-datastore-provider","conformance-type":"import"},{"name":"opendaylight-group-types_2013-10-18","revision":"2013-10-18","schema":"/rests/modules/opendaylight-group-types?revision=2013-10-18","namespace":"urn:opendaylight:group:types","conformance-type":"import"},{"name":"sal-remote-augment_2023-11-03","revision":"2023-11-03","schema":"/rests/modules/sal-remote-augment?revision=2023-11-03","namespace":"urn:sal:restconf:event:subscription","conformance-type":"import"},{"name":"opendaylight-ipv6-arbitrary-bitmask-fields_2016-02-24","revision":"2016-02-24","schema":"/rests/modules/opendaylight-ipv6-arbitrary-bitmask-fields?revision=2016-02-24","namespace":"urn:opendaylight:opendaylight-ipv6-arbitrary-bitmask-fields","conformance-type":"import"},{"name":"sal-flows-batch_2016-03-14","revision":"2016-03-14","schema":"/rests/modules/sal-flows-batch?revision=2016-03-14","namespace":"urn:opendaylight:flows:service","conformance-type":"import"},{"name":"ietf-tls-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-common","conformance-type":"import","feature":["tls12","hello-params","tls13"]},{"name":"openflow-types_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-types?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:types","conformance-type":"import"},{"name":"ietf-netconf-with-defaults_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf-with-defaults?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults","conformance-type":"import"},{"name":"odl-srm-ops_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-ops?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:ops","conformance-type":"import"},{"name":"odl-general-entity_2015-09-30","revision":"2015-09-30","schema":"/rests/modules/odl-general-entity?revision=2015-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:mdsal:core:general-entity","conformance-type":"import"},{"name":"iana-ssh-key-exchange-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-key-exchange-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-key-exchange-algs","conformance-type":"import"},{"name":"node-ssl-connection-error_2019-07-23","revision":"2019-07-23","schema":"/rests/modules/node-ssl-connection-error?revision=2019-07-23","namespace":"urn:opendaylight:node-ssl-connection-error:service","conformance-type":"import"},{"name":"openflow-protocol_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-protocol?revision=2013-07-31","namespace":"urn:opendaylight:openflow:protocol","conformance-type":"import"},{"name":"ietf-udp-server_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-server?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-server","conformance-type":"import"},{"name":"ietf-keystore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-keystore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-keystore","conformance-type":"import","feature":["asymmetric-keys","inline-definitions-supported"]},{"name":"aaa_2016-12-14","revision":"2016-12-14","schema":"/rests/modules/aaa?revision=2016-12-14","namespace":"urn:opendaylight:params:xml:ns:yang:aaa","conformance-type":"import"},{"name":"aaa-cert-rpc_2015-12-15","revision":"2015-12-15","schema":"/rests/modules/aaa-cert-rpc?revision=2015-12-15","namespace":"urn:opendaylight:yang:aaa:cert:rpc","conformance-type":"import"},{"name":"system-notifications_2013-09-27","revision":"2013-09-27","schema":"/rests/modules/system-notifications?revision=2013-09-27","namespace":"urn:opendaylight:openflow:system","conformance-type":"import"},{"name":"sal-flat-batch_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/sal-flat-batch?revision=2016-03-21","namespace":"urn:opendaylight:flat-batch:service","conformance-type":"import"},{"name":"notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netconf:notification:1.0","conformance-type":"import"},{"name":"sal-remote_2014-01-14","revision":"2014-01-14","schema":"/rests/modules/sal-remote?revision=2014-01-14","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:remote","conformance-type":"import"},{"name":"yang-ext_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/yang-ext?revision=2013-07-09","namespace":"urn:opendaylight:yang:extension:yang-ext","conformance-type":"import"},{"name":"opendaylight-multipart-types_2017-01-12","revision":"2017-01-12","schema":"/rests/modules/opendaylight-multipart-types?revision=2017-01-12","namespace":"urn:opendaylight:multipart:types","conformance-type":"import"},{"name":"opendaylight-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-inventory?revision=2013-08-19","namespace":"urn:opendaylight:inventory","conformance-type":"import"},{"name":"sal-queue_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-queue?revision=2015-03-05","namespace":"urn:opendaylight:queue:service","conformance-type":"import"},{"name":"sal-groups-batch_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/sal-groups-batch?revision=2016-03-15","namespace":"urn:opendaylight:groups:service","conformance-type":"import"},{"name":"arbitrator-reconcile_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/arbitrator-reconcile?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:arbitrator-reconcile:service","conformance-type":"import"},{"name":"ietf-yang-metadata_2016-08-05","revision":"2016-08-05","schema":"/rests/modules/ietf-yang-metadata?revision=2016-08-05","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-metadata","conformance-type":"import"},{"name":"opendaylight-arbitrary-bitmask-fields_2016-01-30","revision":"2016-01-30","schema":"/rests/modules/opendaylight-arbitrary-bitmask-fields?revision=2016-01-30","namespace":"urn:opendaylight:arbitrary:bitmask:fields","conformance-type":"import"},{"name":"ietf-udp-client_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-client?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-client","conformance-type":"import","feature":["local-binding"]},{"name":"opendaylight-meter-types_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/opendaylight-meter-types?revision=2013-09-18","namespace":"urn:opendaylight:meter:types","conformance-type":"import"},{"name":"opendaylight-action-types_2013-11-12","revision":"2013-11-12","schema":"/rests/modules/opendaylight-action-types?revision=2013-11-12","namespace":"urn:opendaylight:action:types","conformance-type":"import"},{"name":"sal-role_2015-07-27","revision":"2015-07-27","schema":"/rests/modules/sal-role?revision=2015-07-27","namespace":"urn:opendaylight:role:service","conformance-type":"import"},{"name":"openflow-provider-config_2016-05-10","revision":"2016-05-10","schema":"/rests/modules/openflow-provider-config?revision=2016-05-10","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:provider:config","conformance-type":"import"},{"name":"odl-serviceutils-upgrade_2018-07-02","revision":"2018-07-02","schema":"/rests/modules/odl-serviceutils-upgrade?revision=2018-07-02","namespace":"urn:opendaylight:serviceutils:upgrade","conformance-type":"import"},{"name":"opendaylight-match-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-match-types?revision=2013-10-26","namespace":"urn:opendaylight:model:match:types","conformance-type":"import"},{"name":"ietf-restconf-server_2024-08-14","revision":"2024-08-14","schema":"/rests/modules/ietf-restconf-server?revision=2024-08-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-server","conformance-type":"import","feature":["http-listen","https-listen"]},{"name":"reconciliation-result-state_2017-07-13","revision":"2017-07-13","schema":"/rests/modules/reconciliation-result-state?revision=2017-07-13","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:rf:state","conformance-type":"import"},{"name":"onf-extensions_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/onf-extensions?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf","conformance-type":"import"},{"name":"sal-table_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/sal-table?revision=2013-10-26","namespace":"urn:opendaylight:table:service","conformance-type":"import"},{"name":"iana-http-versions_2026-02-04","revision":"2026-02-04","schema":"/rests/modules/iana-http-versions?revision=2026-02-04","namespace":"urn:ietf:params:xml:ns:yang:iana-http-versions","conformance-type":"import"},{"name":"opendaylight-direct-statistics_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/opendaylight-direct-statistics?revision=2016-05-11","namespace":"urn:opendaylight:direct:statistics","conformance-type":"import"},{"name":"opendaylight-port-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-port-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:port","conformance-type":"import"},{"name":"sal-async-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/sal-async-config?revision=2017-06-19","namespace":"urn:opendaylight:async-config:service","conformance-type":"import"},{"name":"aaa-password-service-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-password-service-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:password:service:config","conformance-type":"import"},{"name":"ietf-yang-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-yang-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-types","conformance-type":"import"},{"name":"opendaylight-queue-statistics_2013-12-16","revision":"2013-12-16","schema":"/rests/modules/opendaylight-queue-statistics?revision=2013-12-16","namespace":"urn:opendaylight:queue:statistics","conformance-type":"import"},{"name":"sal-bundle_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/sal-bundle?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf:bundle:service","conformance-type":"import"},{"name":"ietf-restconf-subscribed-notifications_2019-11-17","revision":"2019-11-17","schema":"/rests/modules/ietf-restconf-subscribed-notifications?revision=2019-11-17","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-subscribed-notifications","conformance-type":"import"},{"name":"sal-meters-batch_2016-03-16","revision":"2016-03-16","schema":"/rests/modules/sal-meters-batch?revision=2016-03-16","namespace":"urn:opendaylight:meters:service","conformance-type":"import"},{"name":"odl-entity-owners","revision":"","schema":"/rests/modules/odl-entity-owners","namespace":"urn:opendaylight:params:xml:ns:yang:controller:entity-owners","conformance-type":"import"},{"name":"sal-experimenter-mp-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-mp-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-mp-message:service","conformance-type":"import"},{"name":"packet-processing_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/packet-processing?revision=2013-07-09","namespace":"urn:opendaylight:packet:service","conformance-type":"import"},{"name":"openflow-configuration_2014-06-30","revision":"2014-06-30","schema":"/rests/modules/openflow-configuration?revision=2014-06-30","namespace":"urn:opendaylight:openflow:config","conformance-type":"import"},{"name":"odl-srm-rpcs_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-rpcs?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:rpc","conformance-type":"import"},{"name":"ietf-netconf-acm_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-netconf-acm?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-acm","conformance-type":"import"},{"name":"iana-crypt-hash_2014-08-06","revision":"2014-08-06","schema":"/rests/modules/iana-crypt-hash?revision=2014-08-06","namespace":"urn:ietf:params:xml:ns:yang:iana-crypt-hash","conformance-type":"import","feature":["crypt-hash-sha-512","crypt-hash-sha-256","crypt-hash-md5"]},{"name":"openflow-extensible-match_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-extensible-match?revision=2015-02-25","namespace":"urn:opendaylight:openflow:oxm","conformance-type":"import"}],"module-set-id":"2"}}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:12.559100" elapsed="0.002851"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:12.558879" elapsed="0.003107"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:12.558858" elapsed="0.003153"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:12.564486" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:12.562338" elapsed="0.002192"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:12.562091" elapsed="0.002473"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:12.562072" elapsed="0.002516"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:12.565143" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:12.564769" elapsed="0.000416"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:12.565516" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:12.565277" elapsed="0.000296"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:12.566057" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:12.565754" elapsed="0.000329"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:12.565596" elapsed="0.000522"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:12.565257" elapsed="0.000882"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:12.566759" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:12.566360" elapsed="0.000426"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:12.567112" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:12.566877" elapsed="0.000334"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:12.567695" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:12.567397" elapsed="0.000323"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:12.567236" elapsed="0.000519"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:12.566857" elapsed="0.000919"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:51:12.567944" elapsed="0.000373"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:51:12.568777" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:12.568500" elapsed="0.000304"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:51:12.568984" elapsed="0.002162"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:51:12.558127" elapsed="0.013155"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:51:12.571625" elapsed="0.000047"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:51:12.571412" elapsed="0.000325"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:12.571360" elapsed="0.000413"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:51:12.580747" level="INFO">${text_normalized} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:51:12.572492" elapsed="0.008302"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:51:12.580871" elapsed="0.000062"/>
</return>
<msg time="2026-04-08T00:51:12.581202" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:51:12.539414" elapsed="0.041896"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:51:12.581763" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:51:12.581938" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="PASS" start="2026-04-08T00:51:12.403067" elapsed="0.178898"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Json_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:12.582368" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:12.582049" elapsed="0.000533"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:12.582031" elapsed="0.000593"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:51:12.582660" elapsed="0.000027"/>
</return>
<arg>session=${session}</arg>
<arg>folder=${RESTCONF_MODULES_DIR}</arg>
<arg>verify=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Add arguments sensible for JSON data, return Get_Templated response text.
Optionally, verification against JSON data (may be iterated) is called.
Only subset of JSON data is verified and returned if JMES path is specified in
file ${folder}/jmespath.expr.</doc>
<status status="PASS" start="2026-04-08T00:51:12.399042" elapsed="0.183744"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:12.395105" elapsed="0.187724"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:12.395087" elapsed="0.187766"/>
</if>
<kw name="Resolve_Shard_Type_Class" owner="ClusterManagement">
<if>
<branch type="IF" condition="'${shard_type}' == 'config'">
<return>
<value>DistributedConfigDatastore</value>
<status status="NOT RUN" start="2026-04-08T00:51:12.583458" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:51:12.583351" elapsed="0.000151"/>
</branch>
<branch type="ELSE IF" condition="'${shard_type}' == 'operational'">
<return>
<value>DistributedOperationalDatastore</value>
<status status="PASS" start="2026-04-08T00:51:12.583625" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-08T00:51:12.583524" elapsed="0.000158"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:12.583332" elapsed="0.000373"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized shard type: ${shard_type}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:12.583849" elapsed="0.000021"/>
</kw>
<msg time="2026-04-08T00:51:12.583965" level="INFO">${type_class} = DistributedOperationalDatastore</msg>
<var>${type_class}</var>
<arg>shard_type=${shard_type}</arg>
<doc>Simple lookup for class name corresponding to desired type.</doc>
<status status="PASS" start="2026-04-08T00:51:12.583071" elapsed="0.000919"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:12.584538" level="INFO">${cluster_index} = 1</msg>
<var>${cluster_index}</var>
<arg>${member_index}+${NODE_ROLE_INDEX_START}-1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:12.584171" elapsed="0.000393"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:12.585192" level="INFO">${uri} = jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-default-operational,type=DistributedOperationalDatastore</msg>
<var>${uri}</var>
<arg>${JOLOKIA_READ_URI}:Category=Shards,name=member-${cluster_index}-shard-${shard_name}-${shard_type},type=${type_class}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:12.584718" elapsed="0.000503"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:12.590729" level="INFO">jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-default-operational,type=DistributedOperationalDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:12.590266" elapsed="0.000510"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:12.591377" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:12.590930" elapsed="0.000497"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:51:12.609745" level="INFO">GET Request : url=http://10.30.170.48:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-default-operational,type=DistributedOperationalDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-default-operational,type=DistributedOperationalDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:51:12.610045" level="INFO">GET Response : url=http://10.30.170.48:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-default-operational,type=DistributedOperationalDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Wed, 08 Apr 2026 00:51:12 GMT', 'Expires': 'Tue, 07 Apr 2026 23:51:12 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-1-shard-default-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"ReadWriteTransactionCount":26,"SnapshotIndex":108,"InMemoryJournalLogSize":2,"ReplicatedToAllIndex":108,"Leader":"member-1-shard-default-operational","LastIndex":110,"RaftState":"Leader","LastApplied":109,"LastCommittedTransactionTime":"2026-04-08 00:46:49.710","PeerAddresses":"member-3-shard-default-operational: pekko:\/\/opendaylight-cluster-data@10.30.171.110:2550\/user\/shardmanager-operational\/member-3-shard-default-operational, member-2-shard-default-operational: pekko:\/\/opendaylight-cluster-data@10.30.170.131:2550\/user\/shardmanager-operational\/member-2-shard-default-operational","LastLogIndex":110,"LastLeadershipChangeTime":"2026-04-08 00:46:45.934","FollowerInitialSyncStatus":false,"FollowerInfo":[{"timeSinceLastActivity":"00:00:00.002","active":true,"matchIndex":109,"voting":true,"id":"member-3-shard-default-operational","nextIndex":110},{"timeSinceLastActivity":"00:00:00.002","active":true,"matchIndex":109,"voting":true,"id":"member-2-shard-default-operational","nextIndex":110}],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"463.2 μs","CurrentTerm":2,"LastTerm":2,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-default-operational","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":11,"TxCohortCacheSize":0,"PeerVotingStates":"member-3-shard-default-operational: true, member-2-shard-default-operational: true","LastLogTerm":2,"StatRetrievalError":null,"CommitIndex":109,"SnapshotTerm":2,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":28,"ShardName":"member-1-shard-default-operational","LeadershipChangeCount":1,"InMemoryJournalDataSize":92567},"timestamp":1775609472,"status":200} 
 </msg>
<msg time="2026-04-08T00:51:12.610520" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:51:12.602096" elapsed="0.008721"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:12.591494" elapsed="0.020010"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:12.611943" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:12.611580" elapsed="0.001432"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:12.591475" elapsed="0.021659"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:12.620902" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-1-shard-default-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"ReadWriteTransactionCount":26,"SnapshotIndex":108,"InMemoryJournalLogSize":2,"ReplicatedToAllIndex":108,"Leader":"member-1-shard-default-operational","LastIndex":110,"RaftState":"Leader","LastApplied":109,"LastCommittedTransactionTime":"2026-04-08 00:46:49.710","PeerAddresses":"member-3-shard-default-operational: pekko:\/\/opendaylight-cluster-data@10.30.171.110:2550\/user\/shardmanager-operational\/member-3-shard-default-operational, member-2-shard-default-operational: pekko:\/\/opendaylight-cluster-data@10.30.170.131:2550\/user\/shardmanager-operational\/member-2-shard-default-operational","LastLogIndex":110,"LastLeadershipChangeTime":"2026-04-08 00:46:45.934","FollowerInitialSyncStatus":false,"FollowerInfo":[{"timeSinceLastActivity":"00:00:00.002","active":true,"matchIndex":109,"voting":true,"id":"member-3-shard-default-operational","nextIndex":110},{"timeSinceLastActivity":"00:00:00.002","active":true,"matchIndex":109,"voting":true,"id":"member-2-shard-default-operational","nextIndex":110}],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"463.2 μs","CurrentTerm":2,"LastTerm":2,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-default-operational","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":11,"TxCohortCacheSize":0,"PeerVotingStates":"member-3-shard-default-operational: true, member-2-shard-default-operational: true","LastLogTerm":2,"StatRetrievalError":null,"CommitIndex":109,"SnapshotTerm":2,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":28,"ShardName":"member-1-shard-default-operational","LeadershipChangeCount":1,"InMemoryJournalDataSize":92567},"timestamp":1775609472,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:12.617108" elapsed="0.003966"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:12.615836" elapsed="0.005310"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:12.615806" elapsed="0.005421"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:12.627494" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:12.622632" elapsed="0.004965"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:12.621352" elapsed="0.006296"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:12.621325" elapsed="0.006363"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:12.629091" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:12.628322" elapsed="0.000830"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:12.629881" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:12.629411" elapsed="0.000557"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:12.630890" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:12.630356" elapsed="0.000581"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:12.630006" elapsed="0.000981"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:12.629389" elapsed="0.001652"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:12.632509" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:12.631744" elapsed="0.000826"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:12.633222" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:12.632737" elapsed="0.000572"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:12.634196" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:12.633679" elapsed="0.000566"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:12.633346" elapsed="0.000948"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:12.632716" elapsed="0.001613"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:51:12.634548" elapsed="0.000668"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:51:12.636007" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:12.635523" elapsed="0.000544"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:51:12.636487" elapsed="0.002378"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:51:12.614375" elapsed="0.024675"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:51:12.639309" elapsed="0.000021"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:51:12.639139" elapsed="0.000250"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:12.639116" elapsed="0.000313"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:51:12.645102" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-1-shard-default-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp"...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:51:12.639681" elapsed="0.005465"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:51:12.645312" elapsed="0.000048"/>
</return>
<msg time="2026-04-08T00:51:12.645552" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-1-shard-default-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp"...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:51:12.586141" elapsed="0.059452"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:51:12.645679" elapsed="0.000038"/>
</return>
<msg time="2026-04-08T00:51:12.645915" level="INFO">${data_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-1-shard-default-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp"...</msg>
<var>${data_text}</var>
<arg>uri=${uri}</arg>
<arg>session=${session}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-08T00:51:12.585429" elapsed="0.060527"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:12.647544" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-1-shard-default-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 177560947...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:12.646871" elapsed="0.000702"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-08T00:51:12.647623" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:51:12.647802" level="INFO">${data_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-1-shard-default-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 177560947...</msg>
<var>${data_object}</var>
<arg>${data_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-08T00:51:12.646308" elapsed="0.001521"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:51:12.648227" level="INFO">${value} = {'AbortTransactionsCount': 0, 'CommitIndex': 109, 'CommittedTransactionsCount': 11, 'CurrentTerm': 2, 'FailedReadTransactionsCount': 0, 'FailedTransactionsCount': 0, 'FollowerInfo': [{'active': True, ...</msg>
<var>${value}</var>
<arg>${data_object}</arg>
<arg>value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:51:12.648001" elapsed="0.000255"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:51:12.648614" level="INFO">${raft_property} = Leader</msg>
<var>${raft_property}</var>
<arg>${value}</arg>
<arg>${property}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:51:12.648412" elapsed="0.000228"/>
</kw>
<return>
<value>${raft_property}</value>
<status status="PASS" start="2026-04-08T00:51:12.648686" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:51:12.648838" level="INFO">${raft_state} = Leader</msg>
<var>${raft_state}</var>
<arg>RaftState</arg>
<arg>${shard_name}</arg>
<arg>${shard_type}</arg>
<arg>${member_index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft property.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T00:51:12.393486" elapsed="0.255378"/>
</kw>
<return>
<value>${raft_state}</value>
<status status="PASS" start="2026-04-08T00:51:12.648929" elapsed="0.000027"/>
</return>
<msg time="2026-04-08T00:51:12.649080" level="INFO">${raft_state} = Leader</msg>
<var>${raft_state}</var>
<arg>shard_name=${shard_name}</arg>
<arg>shard_type=${ds_type}</arg>
<arg>member_index=${index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft status.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T00:51:12.392767" elapsed="0.256339"/>
</kw>
<if>
<branch type="IF" condition="'Follower' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${follower_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:12.649451" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:12.649224" elapsed="0.000284"/>
</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="PASS" start="2026-04-08T00:51:12.649740" elapsed="0.000199"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:12.649532" elapsed="0.000446"/>
</branch>
<branch type="ELSE IF" condition="${validate}">
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized Raft state: ${raft_state}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:12.650149" elapsed="0.000038"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:12.650002" elapsed="0.000219"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:12.649204" elapsed="0.001040"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T00:51:12.392605" elapsed="0.257663"/>
</iter>
<iter>
<kw name="Get_Raft_State_Of_Shard_At_Member" owner="ClusterManagement">
<kw name="Get_Raft_Property_From_Shard_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:12.652660" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:12.652331" elapsed="0.000356"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:51:12.652734" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:51:12.652882" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:51:12.651969" elapsed="0.000938"/>
</kw>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Get_As_Json_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:12.737036" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:12.736658" elapsed="0.000407"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:51:12.737917" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:51:12.737672" elapsed="0.000316">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-08T00:51:12.738079" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:51:12.737290" elapsed="0.000813"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:51:12.738727" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:51:12.738285" elapsed="0.000469"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T00:51:12.739048" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-08T00:51:12.739220" level="INFO">${template} = /rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T00:51:12.738913" elapsed="0.000334"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:12.739644" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:12.739402" elapsed="0.000289"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:12.740680" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:12.740404" elapsed="0.000319"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-08T00:51:12.741147" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-08T00:51:12.740880" elapsed="0.000309"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:12.741515" elapsed="0.000022"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:12.741714" elapsed="0.000024"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:12.741885" elapsed="0.000020"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-08T00:51:12.741382" elapsed="0.000559"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-08T00:51:12.741241" elapsed="0.000730"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-08T00:51:12.742015" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:51:12.742188" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-08T00:51:12.740055" elapsed="0.002161"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:12.739764" elapsed="0.002484"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:12.742419" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:12.742272" elapsed="0.000201"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:12.739743" elapsed="0.002751"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:12.743094" level="INFO">${final_text} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:12.742661" elapsed="0.000461"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T00:51:12.743185" elapsed="0.000030"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="PASS" start="2026-04-08T00:51:12.736032" elapsed="0.007278"/>
</kw>
<msg time="2026-04-08T00:51:12.743363" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:51:12.723793" elapsed="0.019650"/>
</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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:12.755626" elapsed="0.000042"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:12.767815" elapsed="0.000041"/>
</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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:12.779857" elapsed="0.000042"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:12.780628" elapsed="0.000037"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:12.781384" elapsed="0.000044"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:12.781966" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:12.781821" elapsed="0.000200"/>
</branch>
<status status="NOT RUN" start="2026-04-08T00:51:12.781805" elapsed="0.000239"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:12.782217" elapsed="0.000022"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:12.782405" elapsed="0.000021"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:12.782602" elapsed="0.000021"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-08T00:51:12.781757" elapsed="0.000920"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-08T00:51:12.781533" elapsed="0.001184"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:12.783465" elapsed="0.000041"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-08T00:51:12.783589" elapsed="0.000055"/>
</return>
<msg time="2026-04-08T00:51:12.783818" level="INFO">${uri} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-08T00:51:12.717785" elapsed="0.066139"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:51:12.786911" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:51:12.786661" elapsed="0.000313">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-08T00:51:12.787176" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:51:12.786195" elapsed="0.001028"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:12.787771" elapsed="0.000045"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:12.787362" elapsed="0.000502"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:12.788476" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:12.788182" elapsed="0.000320"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:12.787904" elapsed="0.000643"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:12.787302" elapsed="0.001283"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:51:12.791730" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:51:12.789432" elapsed="0.002344"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-08T00:51:12.791850" elapsed="0.000062"/>
</return>
<msg time="2026-04-08T00:51:12.792174" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:51:12.785062" elapsed="0.007219"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:51:12.795108" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:51:12.794864" elapsed="0.000323">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-08T00:51:12.795383" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:51:12.794423" elapsed="0.001015"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-08T00:51:12.795823" elapsed="0.000078"/>
</return>
<status status="PASS" start="2026-04-08T00:51:12.795579" elapsed="0.000391"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:12.795529" elapsed="0.000479"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:12.796764" elapsed="0.000037"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:12.797577" elapsed="0.000036"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-08T00:51:12.797684" elapsed="0.000046"/>
</return>
<msg time="2026-04-08T00:51:12.799861" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:51:12.793342" elapsed="0.006625"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:12.803810" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:12.803406" elapsed="0.000502"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:12.805122" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:12.804743" elapsed="0.000491"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:51:12.825049" level="INFO">GET Request : url=http://10.30.170.131:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 path_url=/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node012m0dyuink19r12kj250j53usg1.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:51:12.826067" level="INFO">GET Response : url=http://10.30.170.131:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Transfer-Encoding': 'chunked'} 
 body={"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","hidden-symmetric-keys","encrypted-private-keys","asymmetrically-encrypted-value-format","cms-encrypted-data-format","cleartext-private-keys","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["ssh-client-keepalives","client-ident-hostbased","client-ident-publickey","client-ident-password"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-ex... (set the log level to DEBUG or TRACE to see the full content) 
 </msg>
<msg time="2026-04-08T00:51:12.826618" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:51:12.807556" elapsed="0.019127"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:12.805372" elapsed="0.021443"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:12.827561" elapsed="0.000057"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:12.826919" elapsed="0.000821"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:12.805312" elapsed="0.022513"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:12.835314" level="INFO">{"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","hidden-symmetric-keys","encrypted-private-keys","asymmetrically-encrypted-value-format","cms-encrypted-data-format","cleartext-private-keys","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["ssh-client-keepalives","client-ident-hostbased","client-ident-publickey","client-ident-password"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-experimenter-types?revision=2015-10-20","namespace":"urn:opendaylight:openflowplugin:experimenter:types","conformance-type":"import"},{"name":"ietf-ip_2018-02-22","revision":"2018-02-22","schema":"/rests/modules/ietf-ip?revision=2018-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-ip","conformance-type":"import","feature":["ipv6-privacy-autoconf","ipv4-non-contiguous-netmasks"]},{"name":"ietf-tcp-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-client","conformance-type":"import","feature":["local-binding-supported","tcp-client-keepalives"]},{"name":"node-config_2014-10-15","revision":"2014-10-15","schema":"/rests/modules/node-config?revision=2014-10-15","namespace":"urn:opendaylight:module:config","conformance-type":"import"},{"name":"ietf-restconf_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf","conformance-type":"import"},{"name":"ietf-datastores_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-datastores?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-datastores","conformance-type":"import"},{"name":"ietf-yang-patch_2017-02-22","revision":"2017-02-22","schema":"/rests/modules/ietf-yang-patch?revision=2017-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-patch","conformance-type":"import"},{"name":"sal-group_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-group?revision=2013-09-18","namespace":"urn:opendaylight:group:service","conformance-type":"import"},{"name":"odl-codegen-extensions_2024-06-27","revision":"2024-06-27","schema":"/rests/modules/odl-codegen-extensions?revision=2024-06-27","namespace":"urn:opendaylight:yang:extension:codegen","conformance-type":"import"},{"name":"sal-meter_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-meter?revision=2013-09-18","namespace":"urn:opendaylight:meter:service","conformance-type":"import"},{"name":"ietf-interfaces_2018-02-20","revision":"2018-02-20","schema":"/rests/modules/ietf-interfaces?revision=2018-02-20","namespace":"urn:ietf:params:xml:ns:yang:ietf-interfaces","conformance-type":"import","feature":["pre-provisioning","if-mib","arbitrary-names"]},{"name":"opendaylight-l2-types_2013-08-27","revision":"2013-08-27","schema":"/rests/modules/opendaylight-l2-types?revision=2013-08-27","namespace":"urn:opendaylight:l2:types","conformance-type":"import"},{"name":"opendaylight-flow-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-flow-types?revision=2013-10-26","namespace":"urn:opendaylight:flow:types","conformance-type":"import"},{"name":"lldp-speaker-config_2016-05-12","revision":"2016-05-12","schema":"/rests/modules/lldp-speaker-config?revision=2016-05-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker:config","conformance-type":"import"},{"name":"aaa-cert_2015-11-26","revision":"2015-11-26","schema":"/rests/modules/aaa-cert?revision=2015-11-26","namespace":"urn:opendaylight:yang:aaa:cert","conformance-type":"import"},{"name":"openflow-action_2015-02-03","revision":"2015-02-03","schema":"/rests/modules/openflow-action?revision=2015-02-03","namespace":"urn:opendaylight:openflow:common:action","conformance-type":"import"},{"name":"openflow-approved-extensions_2016-08-02","revision":"2016-08-02","schema":"/rests/modules/openflow-approved-extensions?revision=2016-08-02","namespace":"urn:opendaylight:openflow:approved:extensions","conformance-type":"import"},{"name":"nc-notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/nc-notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netmod:notification","conformance-type":"import"},{"name":"ietf-netconf-nmda_2019-01-07","revision":"2019-01-07","schema":"/rests/modules/ietf-netconf-nmda?revision=2019-01-07","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-nmda","conformance-type":"import","feature":["with-defaults","origin"]},{"name":"ietf-tcp-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-common","conformance-type":"import","feature":["keepalives-supported"]},{"name":"network-topology_2013-10-21","revision":"2013-10-21","schema":"/rests/modules/network-topology?revision=2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:network-topology","conformance-type":"import"},{"name":"aaa-encrypt-service-config_2024-02-02","revision":"2024-02-02","schema":"/rests/modules/aaa-encrypt-service-config?revision=2024-02-02","namespace":"config:aaa:authn:encrypt:service:config","conformance-type":"import"},{"name":"openflow-instruction_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-instruction?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:instruction","conformance-type":"import"},{"name":"ietf-tls-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-client","conformance-type":"import","feature":["client-ident-x509-cert","server-auth-x509-cert"]},{"name":"opendaylight-group-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-group-statistics?revision=2013-11-11","namespace":"urn:opendaylight:group:statistics","conformance-type":"import"},{"name":"cluster-admin_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/cluster-admin?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:cluster:admin","conformance-type":"import"},{"name":"opendaylight-flow-statistics_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-flow-statistics?revision=2013-08-19","namespace":"urn:opendaylight:flow:statistics","conformance-type":"import"},{"name":"opendaylight-table-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-table-types?revision=2013-10-26","namespace":"urn:opendaylight:table:types","conformance-type":"import"},{"name":"forwarding-rules-manager-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/forwarding-rules-manager-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:forwardingrules-manager:config","conformance-type":"import"},{"name":"odl-srm-types_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-types?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:types","conformance-type":"import"},{"name":"ietf-x509-cert-to-name_2014-12-10","revision":"2014-12-10","schema":"/rests/modules/ietf-x509-cert-to-name?revision=2014-12-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-x509-cert-to-name","conformance-type":"import"},{"name":"flow-node-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-node-inventory?revision=2013-08-19","namespace":"urn:opendaylight:flow:inventory","conformance-type":"import"},{"name":"flow-errors_2013-11-16","revision":"2013-11-16","schema":"/rests/modules/flow-errors?revision=2013-11-16","namespace":"urn:opendaylight:flow:errors","conformance-type":"import"},{"name":"ietf-netconf_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:netconf:base:1.0","conformance-type":"import","feature":["xpath","url","rollback-on-error","validate","startup","candidate","confirmed-commit","writable-running"]},{"name":"iana-ssh-public-key-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-public-key-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-public-key-algs","conformance-type":"import"},{"name":"aaa-cert-mdsal_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/aaa-cert-mdsal?revision=2016-03-21","namespace":"urn:opendaylight:yang:aaa:cert:mdsal","conformance-type":"import"},{"name":"odl-device-notification_2024-02-18","revision":"2024-02-18","schema":"/rests/modules/odl-device-notification?revision=2024-02-18","namespace":"urn:opendaylight:device:notification","conformance-type":"import"},{"name":"ietf-origin_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-origin?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-origin","conformance-type":"import"},{"name":"openflow-augments_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-augments?revision=2015-02-25","namespace":"urn:opendaylight:openflow:augments","conformance-type":"import"},{"name":"iana-ssh-encryption-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-encryption-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-encryption-algs","conformance-type":"import"},{"name":"ietf-truststore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-truststore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-truststore","conformance-type":"import","feature":["inline-definitions-supported"]},{"name":"distributed-datastore-provider_2025-01-30","revision":"2025-01-30","schema":"/rests/modules/distributed-datastore-provider?revision=2025-01-30","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:distributed-datastore-provider","conformance-type":"import"},{"name":"opendaylight-group-types_2013-10-18","revision":"2013-10-18","schema":"/rests/modules/opendaylight-group-types?revision=2013-10-18","namespace":"urn:opendaylight:group:types","conformance-type":"import"},{"name":"sal-remote-augment_2023-11-03","revision":"2023-11-03","schema":"/rests/modules/sal-remote-augment?revision=2023-11-03","namespace":"urn:sal:restconf:event:subscription","conformance-type":"import"},{"name":"opendaylight-ipv6-arbitrary-bitmask-fields_2016-02-24","revision":"2016-02-24","schema":"/rests/modules/opendaylight-ipv6-arbitrary-bitmask-fields?revision=2016-02-24","namespace":"urn:opendaylight:opendaylight-ipv6-arbitrary-bitmask-fields","conformance-type":"import"},{"name":"sal-flows-batch_2016-03-14","revision":"2016-03-14","schema":"/rests/modules/sal-flows-batch?revision=2016-03-14","namespace":"urn:opendaylight:flows:service","conformance-type":"import"},{"name":"ietf-tls-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-common","conformance-type":"import","feature":["tls12","hello-params","tls13"]},{"name":"openflow-types_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-types?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:types","conformance-type":"import"},{"name":"ietf-netconf-with-defaults_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf-with-defaults?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults","conformance-type":"import"},{"name":"odl-srm-ops_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-ops?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:ops","conformance-type":"import"},{"name":"odl-general-entity_2015-09-30","revision":"2015-09-30","schema":"/rests/modules/odl-general-entity?revision=2015-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:mdsal:core:general-entity","conformance-type":"import"},{"name":"iana-ssh-key-exchange-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-key-exchange-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-key-exchange-algs","conformance-type":"import"},{"name":"node-ssl-connection-error_2019-07-23","revision":"2019-07-23","schema":"/rests/modules/node-ssl-connection-error?revision=2019-07-23","namespace":"urn:opendaylight:node-ssl-connection-error:service","conformance-type":"import"},{"name":"openflow-protocol_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-protocol?revision=2013-07-31","namespace":"urn:opendaylight:openflow:protocol","conformance-type":"import"},{"name":"ietf-udp-server_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-server?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-server","conformance-type":"import"},{"name":"ietf-keystore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-keystore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-keystore","conformance-type":"import","feature":["asymmetric-keys","inline-definitions-supported"]},{"name":"aaa_2016-12-14","revision":"2016-12-14","schema":"/rests/modules/aaa?revision=2016-12-14","namespace":"urn:opendaylight:params:xml:ns:yang:aaa","conformance-type":"import"},{"name":"aaa-cert-rpc_2015-12-15","revision":"2015-12-15","schema":"/rests/modules/aaa-cert-rpc?revision=2015-12-15","namespace":"urn:opendaylight:yang:aaa:cert:rpc","conformance-type":"import"},{"name":"system-notifications_2013-09-27","revision":"2013-09-27","schema":"/rests/modules/system-notifications?revision=2013-09-27","namespace":"urn:opendaylight:openflow:system","conformance-type":"import"},{"name":"sal-flat-batch_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/sal-flat-batch?revision=2016-03-21","namespace":"urn:opendaylight:flat-batch:service","conformance-type":"import"},{"name":"notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netconf:notification:1.0","conformance-type":"import"},{"name":"sal-remote_2014-01-14","revision":"2014-01-14","schema":"/rests/modules/sal-remote?revision=2014-01-14","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:remote","conformance-type":"import"},{"name":"yang-ext_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/yang-ext?revision=2013-07-09","namespace":"urn:opendaylight:yang:extension:yang-ext","conformance-type":"import"},{"name":"opendaylight-multipart-types_2017-01-12","revision":"2017-01-12","schema":"/rests/modules/opendaylight-multipart-types?revision=2017-01-12","namespace":"urn:opendaylight:multipart:types","conformance-type":"import"},{"name":"opendaylight-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-inventory?revision=2013-08-19","namespace":"urn:opendaylight:inventory","conformance-type":"import"},{"name":"sal-queue_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-queue?revision=2015-03-05","namespace":"urn:opendaylight:queue:service","conformance-type":"import"},{"name":"sal-groups-batch_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/sal-groups-batch?revision=2016-03-15","namespace":"urn:opendaylight:groups:service","conformance-type":"import"},{"name":"arbitrator-reconcile_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/arbitrator-reconcile?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:arbitrator-reconcile:service","conformance-type":"import"},{"name":"ietf-yang-metadata_2016-08-05","revision":"2016-08-05","schema":"/rests/modules/ietf-yang-metadata?revision=2016-08-05","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-metadata","conformance-type":"import"},{"name":"opendaylight-arbitrary-bitmask-fields_2016-01-30","revision":"2016-01-30","schema":"/rests/modules/opendaylight-arbitrary-bitmask-fields?revision=2016-01-30","namespace":"urn:opendaylight:arbitrary:bitmask:fields","conformance-type":"import"},{"name":"ietf-udp-client_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-client?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-client","conformance-type":"import","feature":["local-binding"]},{"name":"opendaylight-meter-types_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/opendaylight-meter-types?revision=2013-09-18","namespace":"urn:opendaylight:meter:types","conformance-type":"import"},{"name":"opendaylight-action-types_2013-11-12","revision":"2013-11-12","schema":"/rests/modules/opendaylight-action-types?revision=2013-11-12","namespace":"urn:opendaylight:action:types","conformance-type":"import"},{"name":"sal-role_2015-07-27","revision":"2015-07-27","schema":"/rests/modules/sal-role?revision=2015-07-27","namespace":"urn:opendaylight:role:service","conformance-type":"import"},{"name":"openflow-provider-config_2016-05-10","revision":"2016-05-10","schema":"/rests/modules/openflow-provider-config?revision=2016-05-10","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:provider:config","conformance-type":"import"},{"name":"odl-serviceutils-upgrade_2018-07-02","revision":"2018-07-02","schema":"/rests/modules/odl-serviceutils-upgrade?revision=2018-07-02","namespace":"urn:opendaylight:serviceutils:upgrade","conformance-type":"import"},{"name":"opendaylight-match-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-match-types?revision=2013-10-26","namespace":"urn:opendaylight:model:match:types","conformance-type":"import"},{"name":"ietf-restconf-server_2024-08-14","revision":"2024-08-14","schema":"/rests/modules/ietf-restconf-server?revision=2024-08-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-server","conformance-type":"import","feature":["http-listen","https-listen"]},{"name":"reconciliation-result-state_2017-07-13","revision":"2017-07-13","schema":"/rests/modules/reconciliation-result-state?revision=2017-07-13","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:rf:state","conformance-type":"import"},{"name":"onf-extensions_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/onf-extensions?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf","conformance-type":"import"},{"name":"sal-table_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/sal-table?revision=2013-10-26","namespace":"urn:opendaylight:table:service","conformance-type":"import"},{"name":"iana-http-versions_2026-02-04","revision":"2026-02-04","schema":"/rests/modules/iana-http-versions?revision=2026-02-04","namespace":"urn:ietf:params:xml:ns:yang:iana-http-versions","conformance-type":"import"},{"name":"opendaylight-direct-statistics_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/opendaylight-direct-statistics?revision=2016-05-11","namespace":"urn:opendaylight:direct:statistics","conformance-type":"import"},{"name":"opendaylight-port-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-port-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:port","conformance-type":"import"},{"name":"sal-async-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/sal-async-config?revision=2017-06-19","namespace":"urn:opendaylight:async-config:service","conformance-type":"import"},{"name":"aaa-password-service-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-password-service-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:password:service:config","conformance-type":"import"},{"name":"ietf-yang-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-yang-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-types","conformance-type":"import"},{"name":"opendaylight-queue-statistics_2013-12-16","revision":"2013-12-16","schema":"/rests/modules/opendaylight-queue-statistics?revision=2013-12-16","namespace":"urn:opendaylight:queue:statistics","conformance-type":"import"},{"name":"sal-bundle_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/sal-bundle?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf:bundle:service","conformance-type":"import"},{"name":"ietf-restconf-subscribed-notifications_2019-11-17","revision":"2019-11-17","schema":"/rests/modules/ietf-restconf-subscribed-notifications?revision=2019-11-17","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-subscribed-notifications","conformance-type":"import"},{"name":"sal-meters-batch_2016-03-16","revision":"2016-03-16","schema":"/rests/modules/sal-meters-batch?revision=2016-03-16","namespace":"urn:opendaylight:meters:service","conformance-type":"import"},{"name":"odl-entity-owners","revision":"","schema":"/rests/modules/odl-entity-owners","namespace":"urn:opendaylight:params:xml:ns:yang:controller:entity-owners","conformance-type":"import"},{"name":"sal-experimenter-mp-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-mp-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-mp-message:service","conformance-type":"import"},{"name":"packet-processing_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/packet-processing?revision=2013-07-09","namespace":"urn:opendaylight:packet:service","conformance-type":"import"},{"name":"openflow-configuration_2014-06-30","revision":"2014-06-30","schema":"/rests/modules/openflow-configuration?revision=2014-06-30","namespace":"urn:opendaylight:openflow:config","conformance-type":"import"},{"name":"odl-srm-rpcs_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-rpcs?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:rpc","conformance-type":"import"},{"name":"ietf-netconf-acm_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-netconf-acm?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-acm","conformance-type":"import"},{"name":"iana-crypt-hash_2014-08-06","revision":"2014-08-06","schema":"/rests/modules/iana-crypt-hash?revision=2014-08-06","namespace":"urn:ietf:params:xml:ns:yang:iana-crypt-hash","conformance-type":"import","feature":["crypt-hash-sha-512","crypt-hash-sha-256","crypt-hash-md5"]},{"name":"openflow-extensible-match_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-extensible-match?revision=2015-02-25","namespace":"urn:opendaylight:openflow:oxm","conformance-type":"import"}],"module-set-id":"2"}}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:12.831703" elapsed="0.004084"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:12.831388" elapsed="0.004449"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:12.831357" elapsed="0.004515"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:12.839381" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:12.836352" elapsed="0.003092"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:12.835983" elapsed="0.003509"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:12.835957" elapsed="0.003569"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:12.840388" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:12.839784" elapsed="0.000642"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:12.840884" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:12.840555" elapsed="0.000409"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:12.841665" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:12.841239" elapsed="0.000463"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:12.840997" elapsed="0.000754"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:12.840527" elapsed="0.001253"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:12.842658" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:12.842082" elapsed="0.000614"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:12.843153" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:12.842826" elapsed="0.000431"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:12.843832" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:12.843528" elapsed="0.000331"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:12.843291" elapsed="0.000604"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:12.842797" elapsed="0.001119"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:51:12.844085" elapsed="0.000374"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:51:12.844972" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:12.844657" elapsed="0.000343"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:51:12.845193" elapsed="0.002247"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:51:12.829614" elapsed="0.017949"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:51:12.847907" elapsed="0.000045"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:51:12.847692" elapsed="0.000322"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:12.847641" elapsed="0.000409"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:51:12.857258" level="INFO">${text_normalized} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:51:12.848773" elapsed="0.008535"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:51:12.857390" elapsed="0.000064"/>
</return>
<msg time="2026-04-08T00:51:12.857710" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:51:12.800693" elapsed="0.057125"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:51:12.858291" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:51:12.858480" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="PASS" start="2026-04-08T00:51:12.662543" elapsed="0.195965"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Json_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:12.858829" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:12.858592" elapsed="0.000438"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:12.858574" elapsed="0.000483"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:51:12.859092" elapsed="0.000027"/>
</return>
<arg>session=${session}</arg>
<arg>folder=${RESTCONF_MODULES_DIR}</arg>
<arg>verify=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Add arguments sensible for JSON data, return Get_Templated response text.
Optionally, verification against JSON data (may be iterated) is called.
Only subset of JSON data is verified and returned if JMES path is specified in
file ${folder}/jmespath.expr.</doc>
<status status="PASS" start="2026-04-08T00:51:12.658484" elapsed="0.200751"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:12.652982" elapsed="0.206296"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:12.652963" elapsed="0.206339"/>
</if>
<kw name="Resolve_Shard_Type_Class" owner="ClusterManagement">
<if>
<branch type="IF" condition="'${shard_type}' == 'config'">
<return>
<value>DistributedConfigDatastore</value>
<status status="NOT RUN" start="2026-04-08T00:51:12.859900" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:51:12.859792" elapsed="0.000152"/>
</branch>
<branch type="ELSE IF" condition="'${shard_type}' == 'operational'">
<return>
<value>DistributedOperationalDatastore</value>
<status status="PASS" start="2026-04-08T00:51:12.860065" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-08T00:51:12.859966" elapsed="0.000156"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:12.859773" elapsed="0.000372"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized shard type: ${shard_type}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:12.860314" elapsed="0.000023"/>
</kw>
<msg time="2026-04-08T00:51:12.860439" level="INFO">${type_class} = DistributedOperationalDatastore</msg>
<var>${type_class}</var>
<arg>shard_type=${shard_type}</arg>
<doc>Simple lookup for class name corresponding to desired type.</doc>
<status status="PASS" start="2026-04-08T00:51:12.859526" elapsed="0.000939"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:12.860998" level="INFO">${cluster_index} = 2</msg>
<var>${cluster_index}</var>
<arg>${member_index}+${NODE_ROLE_INDEX_START}-1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:12.860631" elapsed="0.000394"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:12.861658" level="INFO">${uri} = jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-default-operational,type=DistributedOperationalDatastore</msg>
<var>${uri}</var>
<arg>${JOLOKIA_READ_URI}:Category=Shards,name=member-${cluster_index}-shard-${shard_name}-${shard_type},type=${type_class}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:12.861197" elapsed="0.000488"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:12.867505" level="INFO">jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-default-operational,type=DistributedOperationalDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:12.867040" elapsed="0.000512"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:12.868140" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:12.867706" elapsed="0.000495"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:51:12.887858" level="INFO">GET Request : url=http://10.30.170.131:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-default-operational,type=DistributedOperationalDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-default-operational,type=DistributedOperationalDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:51:12.888046" level="INFO">GET Response : url=http://10.30.170.131:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-default-operational,type=DistributedOperationalDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Wed, 08 Apr 2026 00:51:12 GMT', 'Expires': 'Tue, 07 Apr 2026 23:51:12 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-2-shard-default-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"ReadWriteTransactionCount":0,"SnapshotIndex":110,"InMemoryJournalLogSize":1,"ReplicatedToAllIndex":110,"Leader":"member-1-shard-default-operational","LastIndex":111,"RaftState":"Follower","LastCommittedTransactionTime":"1970-01-01 00:00:00.000","LastApplied":111,"PeerAddresses":"member-1-shard-default-operational: pekko:\/\/opendaylight-cluster-data@10.30.170.48:2550\/user\/shardmanager-operational\/member-1-shard-default-operational, member-3-shard-default-operational: pekko:\/\/opendaylight-cluster-data@10.30.171.110:2550\/user\/shardmanager-operational\/member-3-shard-default-operational","LastLogIndex":111,"LastLeadershipChangeTime":"2026-04-08 00:46:45.939","FollowerInitialSyncStatus":true,"FollowerInfo":[],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"327.8 μs","CurrentTerm":2,"LastTerm":2,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-default-operational","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":0,"TxCohortCacheSize":0,"PeerVotingStates":"member-1-shard-default-operational: true, member-3-shard-default-operational: true","LastLogTerm":2,"StatRetrievalError":null,"CommitIndex":111,"SnapshotTerm":2,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-2-shard-default-operational","LeadershipChangeCount":1,"InMemoryJournalDataSize":92608},"timestamp":1775609472,"status":200} 
 </msg>
<msg time="2026-04-08T00:51:12.888333" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:51:12.879120" elapsed="0.009364"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:12.868270" elapsed="0.020571"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:12.889095" elapsed="0.000032"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:12.888882" elapsed="0.000682"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:12.868251" elapsed="0.021349"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:12.896365" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-2-shard-default-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"ReadWriteTransactionCount":0,"SnapshotIndex":110,"InMemoryJournalLogSize":1,"ReplicatedToAllIndex":110,"Leader":"member-1-shard-default-operational","LastIndex":111,"RaftState":"Follower","LastCommittedTransactionTime":"1970-01-01 00:00:00.000","LastApplied":111,"PeerAddresses":"member-1-shard-default-operational: pekko:\/\/opendaylight-cluster-data@10.30.170.48:2550\/user\/shardmanager-operational\/member-1-shard-default-operational, member-3-shard-default-operational: pekko:\/\/opendaylight-cluster-data@10.30.171.110:2550\/user\/shardmanager-operational\/member-3-shard-default-operational","LastLogIndex":111,"LastLeadershipChangeTime":"2026-04-08 00:46:45.939","FollowerInitialSyncStatus":true,"FollowerInfo":[],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"327.8 μs","CurrentTerm":2,"LastTerm":2,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-default-operational","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":0,"TxCohortCacheSize":0,"PeerVotingStates":"member-1-shard-default-operational: true, member-3-shard-default-operational: true","LastLogTerm":2,"StatRetrievalError":null,"CommitIndex":111,"SnapshotTerm":2,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-2-shard-default-operational","LeadershipChangeCount":1,"InMemoryJournalDataSize":92608},"timestamp":1775609472,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:12.892626" elapsed="0.003900"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:12.891340" elapsed="0.005254"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:12.891313" elapsed="0.005334"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:12.901301" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:12.898010" elapsed="0.003427"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:12.896763" elapsed="0.004741"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:12.896738" elapsed="0.004819"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:12.903493" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:12.902434" elapsed="0.001143"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:12.904505" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:12.903808" elapsed="0.000819"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:12.905858" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:12.905132" elapsed="0.000791"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:12.904679" elapsed="0.001314"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:12.903779" elapsed="0.002263"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:12.907809" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:12.906941" elapsed="0.000928"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:12.908577" elapsed="0.000035"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:12.908033" elapsed="0.000630"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:12.909536" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:12.909024" elapsed="0.000557"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:12.908701" elapsed="0.000930"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:12.908013" elapsed="0.001653"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:51:12.909883" elapsed="0.000642"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:51:12.911329" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:12.910826" elapsed="0.000568"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:51:12.911674" elapsed="0.002448"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:51:12.890276" elapsed="0.024020"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:51:12.914544" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:51:12.914384" elapsed="0.000205"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:12.914359" elapsed="0.000251"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:51:12.918131" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-2-shard-default-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp"...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:51:12.914755" elapsed="0.003420"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:51:12.918228" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:51:12.918386" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-2-shard-default-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp"...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:51:12.862652" elapsed="0.055785"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:51:12.918531" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:51:12.918683" level="INFO">${data_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-2-shard-default-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp"...</msg>
<var>${data_text}</var>
<arg>uri=${uri}</arg>
<arg>session=${session}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-08T00:51:12.861896" elapsed="0.056813"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:12.919796" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-2-shard-default-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 177560947...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:12.919319" elapsed="0.000507"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-08T00:51:12.919876" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:51:12.920061" level="INFO">${data_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-2-shard-default-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 177560947...</msg>
<var>${data_object}</var>
<arg>${data_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-08T00:51:12.918930" elapsed="0.001160"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:51:12.920584" level="INFO">${value} = {'AbortTransactionsCount': 0, 'CommitIndex': 111, 'CommittedTransactionsCount': 0, 'CurrentTerm': 2, 'FailedReadTransactionsCount': 0, 'FailedTransactionsCount': 0, 'FollowerInfo': [], 'FollowerInitia...</msg>
<var>${value}</var>
<arg>${data_object}</arg>
<arg>value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:51:12.920377" elapsed="0.000234"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:51:12.920968" level="INFO">${raft_property} = Follower</msg>
<var>${raft_property}</var>
<arg>${value}</arg>
<arg>${property}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:51:12.920768" elapsed="0.000225"/>
</kw>
<return>
<value>${raft_property}</value>
<status status="PASS" start="2026-04-08T00:51:12.921039" elapsed="0.000033"/>
</return>
<msg time="2026-04-08T00:51:12.921215" level="INFO">${raft_state} = Follower</msg>
<var>${raft_state}</var>
<arg>RaftState</arg>
<arg>${shard_name}</arg>
<arg>${shard_type}</arg>
<arg>${member_index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft property.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T00:51:12.651357" elapsed="0.269882"/>
</kw>
<return>
<value>${raft_state}</value>
<status status="PASS" start="2026-04-08T00:51:12.921297" elapsed="0.000026"/>
</return>
<msg time="2026-04-08T00:51:12.921443" level="INFO">${raft_state} = Follower</msg>
<var>${raft_state}</var>
<arg>shard_name=${shard_name}</arg>
<arg>shard_type=${ds_type}</arg>
<arg>member_index=${index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft status.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T00:51:12.650612" elapsed="0.270854"/>
</kw>
<if>
<branch type="IF" condition="'Follower' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${follower_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-08T00:51:12.921762" elapsed="0.000189"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:12.921546" elapsed="0.000443"/>
</branch>
<branch type="ELSE IF" condition="'Leader' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${leader_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:12.922180" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:12.922013" elapsed="0.000226"/>
</branch>
<branch type="ELSE IF" condition="${validate}">
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized Raft state: ${raft_state}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:12.922441" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:12.922262" elapsed="0.000244"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:12.921529" elapsed="0.001003"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T00:51:12.650431" elapsed="0.272125"/>
</iter>
<iter>
<kw name="Get_Raft_State_Of_Shard_At_Member" owner="ClusterManagement">
<kw name="Get_Raft_Property_From_Shard_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:12.924945" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:12.924619" elapsed="0.000354"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:51:12.925019" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:51:12.925196" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:51:12.924277" elapsed="0.000948"/>
</kw>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Get_As_Json_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:13.009586" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:13.009191" elapsed="0.000423"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:51:13.010395" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:51:13.010108" elapsed="0.000376">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-08T00:51:13.010623" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:51:13.009775" elapsed="0.000873"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:51:13.011220" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:51:13.010814" elapsed="0.000434"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T00:51:13.011561" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-08T00:51:13.011709" level="INFO">${template} = /rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T00:51:13.011419" elapsed="0.000315"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:13.012177" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:13.011889" elapsed="0.000337"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:13.013204" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:13.012933" elapsed="0.000316"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-08T00:51:13.013684" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-08T00:51:13.013416" elapsed="0.000293"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:13.014034" elapsed="0.000021"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:13.014251" elapsed="0.000025"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:13.014451" elapsed="0.000024"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-08T00:51:13.013901" elapsed="0.000611"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-08T00:51:13.013762" elapsed="0.000780"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-08T00:51:13.014585" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:51:13.014742" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-08T00:51:13.012611" elapsed="0.002156"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:13.012297" elapsed="0.002502"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:13.014967" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:13.014823" elapsed="0.000199"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:13.012276" elapsed="0.002766"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:13.015645" level="INFO">${final_text} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:13.015199" elapsed="0.000474"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T00:51:13.015721" 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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="PASS" start="2026-04-08T00:51:13.008559" elapsed="0.007284"/>
</kw>
<msg time="2026-04-08T00:51:13.015897" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:51:12.996304" elapsed="0.019672"/>
</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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:13.028137" elapsed="0.000064"/>
</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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:13.040087" elapsed="0.000042"/>
</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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:13.052146" elapsed="0.000063"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:13.052909" elapsed="0.000039"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:13.053667" elapsed="0.000037"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:13.054253" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:13.054089" elapsed="0.000223"/>
</branch>
<status status="NOT RUN" start="2026-04-08T00:51:13.054072" elapsed="0.000263"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:13.054513" elapsed="0.000021"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:13.054697" elapsed="0.000022"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:13.054878" elapsed="0.000021"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-08T00:51:13.054021" elapsed="0.000932"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-08T00:51:13.053786" elapsed="0.001216"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:13.055721" elapsed="0.000035"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-08T00:51:13.055839" elapsed="0.000047"/>
</return>
<msg time="2026-04-08T00:51:13.056070" level="INFO">${uri} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-08T00:51:12.990190" elapsed="0.066005"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:51:13.059014" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:51:13.058760" elapsed="0.000330">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-08T00:51:13.059305" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:51:13.058292" elapsed="0.001058"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:13.059860" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:13.059484" elapsed="0.000444"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:13.060548" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:13.060251" elapsed="0.000323"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:13.059967" elapsed="0.000655"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:13.059431" elapsed="0.001232"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:51:13.063815" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:51:13.061435" elapsed="0.002427"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-08T00:51:13.063940" elapsed="0.000063"/>
</return>
<msg time="2026-04-08T00:51:13.064376" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:51:13.057185" elapsed="0.007299"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:51:13.067327" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:51:13.067055" elapsed="0.000337">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-08T00:51:13.067618" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:51:13.066615" elapsed="0.001050"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-08T00:51:13.068050" elapsed="0.000081"/>
</return>
<status status="PASS" start="2026-04-08T00:51:13.067798" elapsed="0.000431"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:13.067747" elapsed="0.000525"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:13.068990" elapsed="0.000037"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:13.069845" elapsed="0.000038"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-08T00:51:13.069959" elapsed="0.000048"/>
</return>
<msg time="2026-04-08T00:51:13.072135" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:51:13.065467" elapsed="0.006800"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:13.076310" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:13.075891" elapsed="0.000527"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:13.077660" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:13.077115" elapsed="0.000643"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:51:13.094233" level="INFO">GET Request : url=http://10.30.171.110:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 path_url=/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0u16rl3earouwvehy59feej101.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:51:13.094917" level="INFO">GET Response : url=http://10.30.171.110:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Transfer-Encoding': 'chunked'} 
 body={"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","hidden-symmetric-keys","encrypted-private-keys","asymmetrically-encrypted-value-format","cms-encrypted-data-format","cleartext-private-keys","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["ssh-client-keepalives","client-ident-hostbased","client-ident-publickey","client-ident-password"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-ex... (set the log level to DEBUG or TRACE to see the full content) 
 </msg>
<msg time="2026-04-08T00:51:13.095234" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:51:13.080014" elapsed="0.015259"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:13.077886" elapsed="0.017466"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:13.095769" elapsed="0.000034"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:13.095415" elapsed="0.000461"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:13.077835" elapsed="0.018092"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:13.102219" level="INFO">{"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","hidden-symmetric-keys","encrypted-private-keys","asymmetrically-encrypted-value-format","cms-encrypted-data-format","cleartext-private-keys","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["ssh-client-keepalives","client-ident-hostbased","client-ident-publickey","client-ident-password"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-experimenter-types?revision=2015-10-20","namespace":"urn:opendaylight:openflowplugin:experimenter:types","conformance-type":"import"},{"name":"ietf-ip_2018-02-22","revision":"2018-02-22","schema":"/rests/modules/ietf-ip?revision=2018-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-ip","conformance-type":"import","feature":["ipv6-privacy-autoconf","ipv4-non-contiguous-netmasks"]},{"name":"ietf-tcp-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-client","conformance-type":"import","feature":["local-binding-supported","tcp-client-keepalives"]},{"name":"node-config_2014-10-15","revision":"2014-10-15","schema":"/rests/modules/node-config?revision=2014-10-15","namespace":"urn:opendaylight:module:config","conformance-type":"import"},{"name":"ietf-restconf_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf","conformance-type":"import"},{"name":"ietf-datastores_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-datastores?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-datastores","conformance-type":"import"},{"name":"ietf-yang-patch_2017-02-22","revision":"2017-02-22","schema":"/rests/modules/ietf-yang-patch?revision=2017-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-patch","conformance-type":"import"},{"name":"sal-group_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-group?revision=2013-09-18","namespace":"urn:opendaylight:group:service","conformance-type":"import"},{"name":"odl-codegen-extensions_2024-06-27","revision":"2024-06-27","schema":"/rests/modules/odl-codegen-extensions?revision=2024-06-27","namespace":"urn:opendaylight:yang:extension:codegen","conformance-type":"import"},{"name":"sal-meter_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-meter?revision=2013-09-18","namespace":"urn:opendaylight:meter:service","conformance-type":"import"},{"name":"ietf-interfaces_2018-02-20","revision":"2018-02-20","schema":"/rests/modules/ietf-interfaces?revision=2018-02-20","namespace":"urn:ietf:params:xml:ns:yang:ietf-interfaces","conformance-type":"import","feature":["pre-provisioning","if-mib","arbitrary-names"]},{"name":"opendaylight-l2-types_2013-08-27","revision":"2013-08-27","schema":"/rests/modules/opendaylight-l2-types?revision=2013-08-27","namespace":"urn:opendaylight:l2:types","conformance-type":"import"},{"name":"opendaylight-flow-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-flow-types?revision=2013-10-26","namespace":"urn:opendaylight:flow:types","conformance-type":"import"},{"name":"lldp-speaker-config_2016-05-12","revision":"2016-05-12","schema":"/rests/modules/lldp-speaker-config?revision=2016-05-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker:config","conformance-type":"import"},{"name":"aaa-cert_2015-11-26","revision":"2015-11-26","schema":"/rests/modules/aaa-cert?revision=2015-11-26","namespace":"urn:opendaylight:yang:aaa:cert","conformance-type":"import"},{"name":"openflow-action_2015-02-03","revision":"2015-02-03","schema":"/rests/modules/openflow-action?revision=2015-02-03","namespace":"urn:opendaylight:openflow:common:action","conformance-type":"import"},{"name":"openflow-approved-extensions_2016-08-02","revision":"2016-08-02","schema":"/rests/modules/openflow-approved-extensions?revision=2016-08-02","namespace":"urn:opendaylight:openflow:approved:extensions","conformance-type":"import"},{"name":"nc-notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/nc-notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netmod:notification","conformance-type":"import"},{"name":"ietf-netconf-nmda_2019-01-07","revision":"2019-01-07","schema":"/rests/modules/ietf-netconf-nmda?revision=2019-01-07","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-nmda","conformance-type":"import","feature":["with-defaults","origin"]},{"name":"ietf-tcp-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-common","conformance-type":"import","feature":["keepalives-supported"]},{"name":"network-topology_2013-10-21","revision":"2013-10-21","schema":"/rests/modules/network-topology?revision=2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:network-topology","conformance-type":"import"},{"name":"aaa-encrypt-service-config_2024-02-02","revision":"2024-02-02","schema":"/rests/modules/aaa-encrypt-service-config?revision=2024-02-02","namespace":"config:aaa:authn:encrypt:service:config","conformance-type":"import"},{"name":"openflow-instruction_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-instruction?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:instruction","conformance-type":"import"},{"name":"ietf-tls-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-client","conformance-type":"import","feature":["client-ident-x509-cert","server-auth-x509-cert"]},{"name":"opendaylight-group-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-group-statistics?revision=2013-11-11","namespace":"urn:opendaylight:group:statistics","conformance-type":"import"},{"name":"cluster-admin_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/cluster-admin?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:cluster:admin","conformance-type":"import"},{"name":"opendaylight-flow-statistics_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-flow-statistics?revision=2013-08-19","namespace":"urn:opendaylight:flow:statistics","conformance-type":"import"},{"name":"opendaylight-table-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-table-types?revision=2013-10-26","namespace":"urn:opendaylight:table:types","conformance-type":"import"},{"name":"forwarding-rules-manager-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/forwarding-rules-manager-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:forwardingrules-manager:config","conformance-type":"import"},{"name":"odl-srm-types_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-types?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:types","conformance-type":"import"},{"name":"ietf-x509-cert-to-name_2014-12-10","revision":"2014-12-10","schema":"/rests/modules/ietf-x509-cert-to-name?revision=2014-12-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-x509-cert-to-name","conformance-type":"import"},{"name":"flow-node-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-node-inventory?revision=2013-08-19","namespace":"urn:opendaylight:flow:inventory","conformance-type":"import"},{"name":"flow-errors_2013-11-16","revision":"2013-11-16","schema":"/rests/modules/flow-errors?revision=2013-11-16","namespace":"urn:opendaylight:flow:errors","conformance-type":"import"},{"name":"ietf-netconf_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:netconf:base:1.0","conformance-type":"import","feature":["xpath","url","rollback-on-error","validate","startup","candidate","confirmed-commit","writable-running"]},{"name":"iana-ssh-public-key-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-public-key-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-public-key-algs","conformance-type":"import"},{"name":"aaa-cert-mdsal_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/aaa-cert-mdsal?revision=2016-03-21","namespace":"urn:opendaylight:yang:aaa:cert:mdsal","conformance-type":"import"},{"name":"odl-device-notification_2024-02-18","revision":"2024-02-18","schema":"/rests/modules/odl-device-notification?revision=2024-02-18","namespace":"urn:opendaylight:device:notification","conformance-type":"import"},{"name":"ietf-origin_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-origin?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-origin","conformance-type":"import"},{"name":"openflow-augments_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-augments?revision=2015-02-25","namespace":"urn:opendaylight:openflow:augments","conformance-type":"import"},{"name":"iana-ssh-encryption-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-encryption-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-encryption-algs","conformance-type":"import"},{"name":"ietf-truststore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-truststore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-truststore","conformance-type":"import","feature":["inline-definitions-supported"]},{"name":"distributed-datastore-provider_2025-01-30","revision":"2025-01-30","schema":"/rests/modules/distributed-datastore-provider?revision=2025-01-30","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:distributed-datastore-provider","conformance-type":"import"},{"name":"opendaylight-group-types_2013-10-18","revision":"2013-10-18","schema":"/rests/modules/opendaylight-group-types?revision=2013-10-18","namespace":"urn:opendaylight:group:types","conformance-type":"import"},{"name":"sal-remote-augment_2023-11-03","revision":"2023-11-03","schema":"/rests/modules/sal-remote-augment?revision=2023-11-03","namespace":"urn:sal:restconf:event:subscription","conformance-type":"import"},{"name":"opendaylight-ipv6-arbitrary-bitmask-fields_2016-02-24","revision":"2016-02-24","schema":"/rests/modules/opendaylight-ipv6-arbitrary-bitmask-fields?revision=2016-02-24","namespace":"urn:opendaylight:opendaylight-ipv6-arbitrary-bitmask-fields","conformance-type":"import"},{"name":"sal-flows-batch_2016-03-14","revision":"2016-03-14","schema":"/rests/modules/sal-flows-batch?revision=2016-03-14","namespace":"urn:opendaylight:flows:service","conformance-type":"import"},{"name":"ietf-tls-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-common","conformance-type":"import","feature":["tls12","hello-params","tls13"]},{"name":"openflow-types_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-types?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:types","conformance-type":"import"},{"name":"ietf-netconf-with-defaults_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf-with-defaults?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults","conformance-type":"import"},{"name":"odl-srm-ops_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-ops?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:ops","conformance-type":"import"},{"name":"odl-general-entity_2015-09-30","revision":"2015-09-30","schema":"/rests/modules/odl-general-entity?revision=2015-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:mdsal:core:general-entity","conformance-type":"import"},{"name":"iana-ssh-key-exchange-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-key-exchange-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-key-exchange-algs","conformance-type":"import"},{"name":"node-ssl-connection-error_2019-07-23","revision":"2019-07-23","schema":"/rests/modules/node-ssl-connection-error?revision=2019-07-23","namespace":"urn:opendaylight:node-ssl-connection-error:service","conformance-type":"import"},{"name":"openflow-protocol_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-protocol?revision=2013-07-31","namespace":"urn:opendaylight:openflow:protocol","conformance-type":"import"},{"name":"ietf-udp-server_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-server?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-server","conformance-type":"import"},{"name":"ietf-keystore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-keystore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-keystore","conformance-type":"import","feature":["asymmetric-keys","inline-definitions-supported"]},{"name":"aaa_2016-12-14","revision":"2016-12-14","schema":"/rests/modules/aaa?revision=2016-12-14","namespace":"urn:opendaylight:params:xml:ns:yang:aaa","conformance-type":"import"},{"name":"aaa-cert-rpc_2015-12-15","revision":"2015-12-15","schema":"/rests/modules/aaa-cert-rpc?revision=2015-12-15","namespace":"urn:opendaylight:yang:aaa:cert:rpc","conformance-type":"import"},{"name":"system-notifications_2013-09-27","revision":"2013-09-27","schema":"/rests/modules/system-notifications?revision=2013-09-27","namespace":"urn:opendaylight:openflow:system","conformance-type":"import"},{"name":"sal-flat-batch_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/sal-flat-batch?revision=2016-03-21","namespace":"urn:opendaylight:flat-batch:service","conformance-type":"import"},{"name":"notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netconf:notification:1.0","conformance-type":"import"},{"name":"sal-remote_2014-01-14","revision":"2014-01-14","schema":"/rests/modules/sal-remote?revision=2014-01-14","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:remote","conformance-type":"import"},{"name":"yang-ext_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/yang-ext?revision=2013-07-09","namespace":"urn:opendaylight:yang:extension:yang-ext","conformance-type":"import"},{"name":"opendaylight-multipart-types_2017-01-12","revision":"2017-01-12","schema":"/rests/modules/opendaylight-multipart-types?revision=2017-01-12","namespace":"urn:opendaylight:multipart:types","conformance-type":"import"},{"name":"opendaylight-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-inventory?revision=2013-08-19","namespace":"urn:opendaylight:inventory","conformance-type":"import"},{"name":"sal-queue_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-queue?revision=2015-03-05","namespace":"urn:opendaylight:queue:service","conformance-type":"import"},{"name":"sal-groups-batch_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/sal-groups-batch?revision=2016-03-15","namespace":"urn:opendaylight:groups:service","conformance-type":"import"},{"name":"arbitrator-reconcile_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/arbitrator-reconcile?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:arbitrator-reconcile:service","conformance-type":"import"},{"name":"ietf-yang-metadata_2016-08-05","revision":"2016-08-05","schema":"/rests/modules/ietf-yang-metadata?revision=2016-08-05","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-metadata","conformance-type":"import"},{"name":"opendaylight-arbitrary-bitmask-fields_2016-01-30","revision":"2016-01-30","schema":"/rests/modules/opendaylight-arbitrary-bitmask-fields?revision=2016-01-30","namespace":"urn:opendaylight:arbitrary:bitmask:fields","conformance-type":"import"},{"name":"ietf-udp-client_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-client?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-client","conformance-type":"import","feature":["local-binding"]},{"name":"opendaylight-meter-types_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/opendaylight-meter-types?revision=2013-09-18","namespace":"urn:opendaylight:meter:types","conformance-type":"import"},{"name":"opendaylight-action-types_2013-11-12","revision":"2013-11-12","schema":"/rests/modules/opendaylight-action-types?revision=2013-11-12","namespace":"urn:opendaylight:action:types","conformance-type":"import"},{"name":"sal-role_2015-07-27","revision":"2015-07-27","schema":"/rests/modules/sal-role?revision=2015-07-27","namespace":"urn:opendaylight:role:service","conformance-type":"import"},{"name":"openflow-provider-config_2016-05-10","revision":"2016-05-10","schema":"/rests/modules/openflow-provider-config?revision=2016-05-10","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:provider:config","conformance-type":"import"},{"name":"odl-serviceutils-upgrade_2018-07-02","revision":"2018-07-02","schema":"/rests/modules/odl-serviceutils-upgrade?revision=2018-07-02","namespace":"urn:opendaylight:serviceutils:upgrade","conformance-type":"import"},{"name":"opendaylight-match-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-match-types?revision=2013-10-26","namespace":"urn:opendaylight:model:match:types","conformance-type":"import"},{"name":"ietf-restconf-server_2024-08-14","revision":"2024-08-14","schema":"/rests/modules/ietf-restconf-server?revision=2024-08-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-server","conformance-type":"import","feature":["http-listen","https-listen"]},{"name":"reconciliation-result-state_2017-07-13","revision":"2017-07-13","schema":"/rests/modules/reconciliation-result-state?revision=2017-07-13","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:rf:state","conformance-type":"import"},{"name":"onf-extensions_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/onf-extensions?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf","conformance-type":"import"},{"name":"sal-table_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/sal-table?revision=2013-10-26","namespace":"urn:opendaylight:table:service","conformance-type":"import"},{"name":"iana-http-versions_2026-02-04","revision":"2026-02-04","schema":"/rests/modules/iana-http-versions?revision=2026-02-04","namespace":"urn:ietf:params:xml:ns:yang:iana-http-versions","conformance-type":"import"},{"name":"opendaylight-direct-statistics_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/opendaylight-direct-statistics?revision=2016-05-11","namespace":"urn:opendaylight:direct:statistics","conformance-type":"import"},{"name":"opendaylight-port-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-port-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:port","conformance-type":"import"},{"name":"sal-async-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/sal-async-config?revision=2017-06-19","namespace":"urn:opendaylight:async-config:service","conformance-type":"import"},{"name":"aaa-password-service-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-password-service-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:password:service:config","conformance-type":"import"},{"name":"ietf-yang-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-yang-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-types","conformance-type":"import"},{"name":"opendaylight-queue-statistics_2013-12-16","revision":"2013-12-16","schema":"/rests/modules/opendaylight-queue-statistics?revision=2013-12-16","namespace":"urn:opendaylight:queue:statistics","conformance-type":"import"},{"name":"sal-bundle_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/sal-bundle?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf:bundle:service","conformance-type":"import"},{"name":"ietf-restconf-subscribed-notifications_2019-11-17","revision":"2019-11-17","schema":"/rests/modules/ietf-restconf-subscribed-notifications?revision=2019-11-17","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-subscribed-notifications","conformance-type":"import"},{"name":"sal-meters-batch_2016-03-16","revision":"2016-03-16","schema":"/rests/modules/sal-meters-batch?revision=2016-03-16","namespace":"urn:opendaylight:meters:service","conformance-type":"import"},{"name":"odl-entity-owners","revision":"","schema":"/rests/modules/odl-entity-owners","namespace":"urn:opendaylight:params:xml:ns:yang:controller:entity-owners","conformance-type":"import"},{"name":"sal-experimenter-mp-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-mp-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-mp-message:service","conformance-type":"import"},{"name":"packet-processing_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/packet-processing?revision=2013-07-09","namespace":"urn:opendaylight:packet:service","conformance-type":"import"},{"name":"openflow-configuration_2014-06-30","revision":"2014-06-30","schema":"/rests/modules/openflow-configuration?revision=2014-06-30","namespace":"urn:opendaylight:openflow:config","conformance-type":"import"},{"name":"odl-srm-rpcs_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-rpcs?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:rpc","conformance-type":"import"},{"name":"ietf-netconf-acm_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-netconf-acm?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-acm","conformance-type":"import"},{"name":"iana-crypt-hash_2014-08-06","revision":"2014-08-06","schema":"/rests/modules/iana-crypt-hash?revision=2014-08-06","namespace":"urn:ietf:params:xml:ns:yang:iana-crypt-hash","conformance-type":"import","feature":["crypt-hash-sha-512","crypt-hash-sha-256","crypt-hash-md5"]},{"name":"openflow-extensible-match_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-extensible-match?revision=2015-02-25","namespace":"urn:opendaylight:openflow:oxm","conformance-type":"import"}],"module-set-id":"2"}}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:13.098471" elapsed="0.004215"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:13.098086" elapsed="0.004659"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:13.098055" elapsed="0.004730"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:13.106412" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:13.103273" elapsed="0.003204"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:13.102900" elapsed="0.003626"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:13.102874" elapsed="0.003686"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:13.107389" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:13.106826" elapsed="0.000602"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:13.107923" elapsed="0.000033"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:13.107564" elapsed="0.000443"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:13.108779" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:13.108348" elapsed="0.000468"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:13.108041" elapsed="0.000836"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:13.107536" elapsed="0.001378"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:13.109702" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:13.109191" elapsed="0.000547"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:13.110242" elapsed="0.000032"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:13.109871" elapsed="0.000489"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:13.111062" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:13.110620" elapsed="0.000479"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:13.110395" elapsed="0.000755"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:13.109840" elapsed="0.001366"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:51:13.111446" elapsed="0.000523"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:51:13.112531" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:13.112247" elapsed="0.000310"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:51:13.112731" elapsed="0.002195"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:51:13.096972" elapsed="0.018085"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:51:13.115427" elapsed="0.000045"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:51:13.115209" elapsed="0.000326"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:13.115136" elapsed="0.000434"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:51:13.124599" level="INFO">${text_normalized} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:51:13.116291" elapsed="0.008356"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:51:13.124724" elapsed="0.000072"/>
</return>
<msg time="2026-04-08T00:51:13.125046" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:51:13.072921" elapsed="0.052231"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:51:13.125657" elapsed="0.000031"/>
</return>
<msg time="2026-04-08T00:51:13.125838" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="PASS" start="2026-04-08T00:51:12.933708" elapsed="0.192157"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Json_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:13.126207" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:13.125950" elapsed="0.000469"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:13.125932" elapsed="0.000519"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:51:13.126486" elapsed="0.000027"/>
</return>
<arg>session=${session}</arg>
<arg>folder=${RESTCONF_MODULES_DIR}</arg>
<arg>verify=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Add arguments sensible for JSON data, return Get_Templated response text.
Optionally, verification against JSON data (may be iterated) is called.
Only subset of JSON data is verified and returned if JMES path is specified in
file ${folder}/jmespath.expr.</doc>
<status status="PASS" start="2026-04-08T00:51:12.929424" elapsed="0.197187"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:12.925294" elapsed="0.201360"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:12.925276" elapsed="0.201404"/>
</if>
<kw name="Resolve_Shard_Type_Class" owner="ClusterManagement">
<if>
<branch type="IF" condition="'${shard_type}' == 'config'">
<return>
<value>DistributedConfigDatastore</value>
<status status="NOT RUN" start="2026-04-08T00:51:13.127301" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:51:13.127190" elapsed="0.000155"/>
</branch>
<branch type="ELSE IF" condition="'${shard_type}' == 'operational'">
<return>
<value>DistributedOperationalDatastore</value>
<status status="PASS" start="2026-04-08T00:51:13.127466" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-08T00:51:13.127367" elapsed="0.000156"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:13.127150" elapsed="0.000396"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized shard type: ${shard_type}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:13.127689" elapsed="0.000022"/>
</kw>
<msg time="2026-04-08T00:51:13.127808" level="INFO">${type_class} = DistributedOperationalDatastore</msg>
<var>${type_class}</var>
<arg>shard_type=${shard_type}</arg>
<doc>Simple lookup for class name corresponding to desired type.</doc>
<status status="PASS" start="2026-04-08T00:51:13.126905" elapsed="0.000928"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:13.128386" level="INFO">${cluster_index} = 3</msg>
<var>${cluster_index}</var>
<arg>${member_index}+${NODE_ROLE_INDEX_START}-1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:13.127997" elapsed="0.000416"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:13.129026" level="INFO">${uri} = jolokia/read/org.opendaylight.controller:Category=Shards,name=member-3-shard-default-operational,type=DistributedOperationalDatastore</msg>
<var>${uri}</var>
<arg>${JOLOKIA_READ_URI}:Category=Shards,name=member-${cluster_index}-shard-${shard_name}-${shard_type},type=${type_class}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:13.128566" elapsed="0.000487"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:13.134716" level="INFO">jolokia/read/org.opendaylight.controller:Category=Shards,name=member-3-shard-default-operational,type=DistributedOperationalDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:13.134236" elapsed="0.000527"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:13.135360" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:13.134916" elapsed="0.000491"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:51:13.153357" level="INFO">GET Request : url=http://10.30.171.110:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-3-shard-default-operational,type=DistributedOperationalDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-3-shard-default-operational,type=DistributedOperationalDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:51:13.153490" level="INFO">GET Response : url=http://10.30.171.110:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-3-shard-default-operational,type=DistributedOperationalDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Wed, 08 Apr 2026 00:51:13 GMT', 'Expires': 'Tue, 07 Apr 2026 23:51:13 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-3-shard-default-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"ReadWriteTransactionCount":0,"SnapshotIndex":114,"InMemoryJournalLogSize":1,"ReplicatedToAllIndex":114,"Leader":"member-1-shard-default-operational","LastIndex":115,"RaftState":"Follower","LastApplied":115,"LastCommittedTransactionTime":"1970-01-01 00:00:00.000","PeerAddresses":"member-1-shard-default-operational: pekko:\/\/opendaylight-cluster-data@10.30.170.48:2550\/user\/shardmanager-operational\/member-1-shard-default-operational, member-2-shard-default-operational: pekko:\/\/opendaylight-cluster-data@10.30.170.131:2550\/user\/shardmanager-operational\/member-2-shard-default-operational","LastLogIndex":115,"LastLeadershipChangeTime":"2026-04-08 00:46:45.941","FollowerInitialSyncStatus":true,"FollowerInfo":[],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"169.2 μs","CurrentTerm":2,"LastTerm":2,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-default-operational","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":0,"TxCohortCacheSize":0,"PeerVotingStates":"member-1-shard-default-operational: true, member-2-shard-default-operational: true","LastLogTerm":2,"StatRetrievalError":null,"CommitIndex":115,"SnapshotTerm":2,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-3-shard-default-operational","LeadershipChangeCount":1,"InMemoryJournalDataSize":92772},"timestamp":1775609473,"status":200} 
 </msg>
<msg time="2026-04-08T00:51:13.153677" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:51:13.145976" elapsed="0.007806"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:13.135477" elapsed="0.018556"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:13.154460" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:13.154063" elapsed="0.000712"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:13.135458" elapsed="0.019343"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:13.160974" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-3-shard-default-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"ReadWriteTransactionCount":0,"SnapshotIndex":114,"InMemoryJournalLogSize":1,"ReplicatedToAllIndex":114,"Leader":"member-1-shard-default-operational","LastIndex":115,"RaftState":"Follower","LastApplied":115,"LastCommittedTransactionTime":"1970-01-01 00:00:00.000","PeerAddresses":"member-1-shard-default-operational: pekko:\/\/opendaylight-cluster-data@10.30.170.48:2550\/user\/shardmanager-operational\/member-1-shard-default-operational, member-2-shard-default-operational: pekko:\/\/opendaylight-cluster-data@10.30.170.131:2550\/user\/shardmanager-operational\/member-2-shard-default-operational","LastLogIndex":115,"LastLeadershipChangeTime":"2026-04-08 00:46:45.941","FollowerInitialSyncStatus":true,"FollowerInfo":[],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"169.2 μs","CurrentTerm":2,"LastTerm":2,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-default-operational","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":0,"TxCohortCacheSize":0,"PeerVotingStates":"member-1-shard-default-operational: true, member-2-shard-default-operational: true","LastLogTerm":2,"StatRetrievalError":null,"CommitIndex":115,"SnapshotTerm":2,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-3-shard-default-operational","LeadershipChangeCount":1,"InMemoryJournalDataSize":92772},"timestamp":1775609473,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:13.157484" elapsed="0.003647"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:13.156254" elapsed="0.004970"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:13.156227" elapsed="0.005053"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:13.165977" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:13.162791" elapsed="0.003323"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:13.161394" elapsed="0.004969"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:13.161369" elapsed="0.005053"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:13.168149" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:13.167301" elapsed="0.000926"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:13.168861" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:13.168395" elapsed="0.000553"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:13.169949" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:13.169332" elapsed="0.000664"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:13.168985" elapsed="0.001060"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:13.168375" elapsed="0.001706"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:13.171596" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:13.170800" elapsed="0.000859"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:13.172310" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:13.171829" elapsed="0.000568"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:13.173279" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:13.172763" elapsed="0.000563"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:13.172434" elapsed="0.000944"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:13.171808" elapsed="0.001609"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:51:13.173635" elapsed="0.000663"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:51:13.175096" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:13.174604" elapsed="0.000568"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:51:13.175459" elapsed="0.002321"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:51:13.155286" elapsed="0.022653"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:51:13.178139" elapsed="0.000162"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:51:13.178012" elapsed="0.000326"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:13.177993" elapsed="0.000368"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:51:13.181979" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-3-shard-default-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp"...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:51:13.178507" elapsed="0.003502"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:51:13.182060" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:51:13.182407" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-3-shard-default-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp"...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:51:13.130005" elapsed="0.052430"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:51:13.182528" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:51:13.182680" level="INFO">${data_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-3-shard-default-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp"...</msg>
<var>${data_text}</var>
<arg>uri=${uri}</arg>
<arg>session=${session}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-08T00:51:13.129280" elapsed="0.053426"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:13.183755" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-3-shard-default-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 177560947...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:13.183286" elapsed="0.000498"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-08T00:51:13.183833" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:51:13.184005" level="INFO">${data_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-3-shard-default-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 177560947...</msg>
<var>${data_object}</var>
<arg>${data_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-08T00:51:13.182932" elapsed="0.001100"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:51:13.184404" level="INFO">${value} = {'AbortTransactionsCount': 0, 'CommitIndex': 115, 'CommittedTransactionsCount': 0, 'CurrentTerm': 2, 'FailedReadTransactionsCount': 0, 'FailedTransactionsCount': 0, 'FollowerInfo': [], 'FollowerInitia...</msg>
<var>${value}</var>
<arg>${data_object}</arg>
<arg>value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:51:13.184201" elapsed="0.000230"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:51:13.184781" level="INFO">${raft_property} = Follower</msg>
<var>${raft_property}</var>
<arg>${value}</arg>
<arg>${property}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:51:13.184583" elapsed="0.000223"/>
</kw>
<return>
<value>${raft_property}</value>
<status status="PASS" start="2026-04-08T00:51:13.184851" elapsed="0.000027"/>
</return>
<msg time="2026-04-08T00:51:13.185000" level="INFO">${raft_state} = Follower</msg>
<var>${raft_state}</var>
<arg>RaftState</arg>
<arg>${shard_name}</arg>
<arg>${shard_type}</arg>
<arg>${member_index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft property.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T00:51:12.923634" elapsed="0.261390"/>
</kw>
<return>
<value>${raft_state}</value>
<status status="PASS" start="2026-04-08T00:51:13.185080" elapsed="0.000026"/>
</return>
<msg time="2026-04-08T00:51:13.185245" level="INFO">${raft_state} = Follower</msg>
<var>${raft_state}</var>
<arg>shard_name=${shard_name}</arg>
<arg>shard_type=${ds_type}</arg>
<arg>member_index=${index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft status.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T00:51:12.922888" elapsed="0.262382"/>
</kw>
<if>
<branch type="IF" condition="'Follower' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${follower_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-08T00:51:13.185562" elapsed="0.000188"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:13.185350" elapsed="0.000438"/>
</branch>
<branch type="ELSE IF" condition="'Leader' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${leader_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:13.185955" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:13.185812" elapsed="0.000196"/>
</branch>
<branch type="ELSE IF" condition="${validate}">
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized Raft state: ${raft_state}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:13.186213" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:13.186032" elapsed="0.000244"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:13.185333" elapsed="0.000966"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T00:51:12.922720" elapsed="0.263602"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-08T00:51:12.392405" elapsed="0.793951"/>
</for>
<return>
<value>${leader_list}</value>
<value>${follower_list}</value>
<status status="PASS" start="2026-04-08T00:51:13.186401" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:51:13.186605" level="INFO">${leader_list} = [1]</msg>
<msg time="2026-04-08T00:51:13.186651" level="INFO">${follower_list} = [2, 3]</msg>
<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="PASS" start="2026-04-08T00:51:12.388460" elapsed="0.798214"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T00:51:13.187118" level="INFO">Length is 1.</msg>
<msg time="2026-04-08T00:51:13.187227" level="INFO">${leader_count} = 1</msg>
<var>${leader_count}</var>
<arg>${leader_list}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T00:51:13.186849" elapsed="0.000403"/>
</kw>
<if>
<branch type="IF" condition="${leader_count} &lt; 1">
<kw name="Fail" owner="BuiltIn">
<arg>No leader found.</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:13.187533" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:13.187322" elapsed="0.000264"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:13.187304" elapsed="0.000305"/>
</if>
<kw name="Length Should Be" owner="BuiltIn">
<msg time="2026-04-08T00:51:13.189676" level="INFO">Length is 1.</msg>
<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="PASS" start="2026-04-08T00:51:13.187743" elapsed="0.001979"/>
</kw>
<kw name="Get From List" owner="Collections">
<msg time="2026-04-08T00:51:13.190107" level="INFO">${leader} = 1</msg>
<var>${leader}</var>
<arg>${leader_list}</arg>
<arg>0</arg>
<doc>Returns the value specified with an ``index`` from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:51:13.189921" elapsed="0.000211"/>
</kw>
<return>
<value>${leader}</value>
<value>${follower_list}</value>
<status status="PASS" start="2026-04-08T00:51:13.190248" elapsed="0.000061"/>
</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="PASS" start="2026-04-08T00:51:12.385908" elapsed="0.804543"/>
</kw>
<var name="${shard_name}">default</var>
<status status="PASS" start="2026-04-08T00:51:12.385689" elapsed="0.804810"/>
</iter>
<var>${shard_name}</var>
<value>@{shard_name_list}</value>
<status status="PASS" start="2026-04-08T00:51:10.780463" elapsed="2.410068"/>
</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="PASS" start="2026-04-08T00:51:10.780058" elapsed="2.410528"/>
</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-04-08T00:51:13.195531" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:51:13.195129" elapsed="0.000429"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:51:13.196073" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:51:13.195769" elapsed="0.000330"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:51:13.196143" elapsed="0.000051"/>
</return>
<msg time="2026-04-08T00:51:13.196322" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:51:13.194762" elapsed="0.001584"/>
</kw>
<kw name="Sort List" owner="Collections">
<arg>${index_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="PASS" start="2026-04-08T00:51:13.196502" elapsed="0.000152"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:51:13.197140" level="INFO">${ds_type} = config</msg>
<var>${ds_type}</var>
<arg>'${shard_type}' != 'config'</arg>
<arg>operational</arg>
<arg>config</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:51:13.196811" elapsed="0.000371"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:51:13.197573" level="INFO">${leader_list} = []</msg>
<var>${leader_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:51:13.197339" elapsed="0.000259"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:51:13.197973" level="INFO">${follower_list} = []</msg>
<var>${follower_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:51:13.197742" elapsed="0.000256"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_Raft_State_Of_Shard_At_Member" owner="ClusterManagement">
<kw name="Get_Raft_Property_From_Shard_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:13.200430" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:13.200086" elapsed="0.000371"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:51:13.200503" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:51:13.200647" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:51:13.199749" elapsed="0.000923"/>
</kw>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Get_As_Json_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:13.281743" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:13.281359" elapsed="0.000412"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:51:13.282552" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:51:13.282299" elapsed="0.000328">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-08T00:51:13.282720" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:51:13.281931" elapsed="0.000813"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:51:13.283300" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:51:13.282904" elapsed="0.000423"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T00:51:13.283618" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-08T00:51:13.283851" level="INFO">${template} = /rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T00:51:13.283485" elapsed="0.000393"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:13.284302" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:13.284032" elapsed="0.000315"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:13.285287" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:13.285019" elapsed="0.000312"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-08T00:51:13.285753" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-08T00:51:13.285487" elapsed="0.000292"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:13.286090" elapsed="0.000021"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:13.286328" elapsed="0.000024"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:13.286499" elapsed="0.000021"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-08T00:51:13.285958" elapsed="0.000597"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-08T00:51:13.285826" elapsed="0.000759"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-08T00:51:13.286626" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:51:13.286782" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-08T00:51:13.284702" elapsed="0.002104"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:13.284417" elapsed="0.002420"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:13.287005" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:13.286861" elapsed="0.000198"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:13.284397" elapsed="0.002682"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:13.287665" level="INFO">${final_text} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:13.287233" elapsed="0.000459"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T00:51:13.287739" elapsed="0.000028"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="PASS" start="2026-04-08T00:51:13.280735" elapsed="0.007123"/>
</kw>
<msg time="2026-04-08T00:51:13.287911" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:51:13.268640" 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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:13.301422" elapsed="0.000043"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:13.313232" elapsed="0.000042"/>
</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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:13.325066" elapsed="0.000040"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:13.325867" elapsed="0.000037"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:13.326642" elapsed="0.000037"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:13.327220" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:13.327058" elapsed="0.000220"/>
</branch>
<status status="NOT RUN" start="2026-04-08T00:51:13.327041" elapsed="0.000261"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:13.327460" elapsed="0.000022"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:13.327643" elapsed="0.000021"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:13.327825" elapsed="0.000021"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-08T00:51:13.326989" elapsed="0.000910"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-08T00:51:13.326764" elapsed="0.001175"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:13.328638" elapsed="0.000036"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-08T00:51:13.328756" elapsed="0.000047"/>
</return>
<msg time="2026-04-08T00:51:13.328980" level="INFO">${uri} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-08T00:51:13.262788" elapsed="0.066300"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:51:13.331923" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:51:13.331664" elapsed="0.000328">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-08T00:51:13.332195" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:51:13.331213" elapsed="0.001028"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:13.332751" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:13.332371" elapsed="0.000447"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:13.333438" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:13.333124" elapsed="0.000341"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:13.332857" elapsed="0.000654"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:13.332320" elapsed="0.001229"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:51:13.336652" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:51:13.334398" elapsed="0.002301"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-08T00:51:13.336775" elapsed="0.000063"/>
</return>
<msg time="2026-04-08T00:51:13.337089" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:51:13.330061" elapsed="0.007148"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:51:13.339942" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:51:13.339702" elapsed="0.000303">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-08T00:51:13.340205" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:51:13.339272" elapsed="0.000978"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-08T00:51:13.340625" elapsed="0.000077"/>
</return>
<status status="PASS" start="2026-04-08T00:51:13.340378" elapsed="0.000390"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:13.340328" elapsed="0.000478"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:13.341519" elapsed="0.000036"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:13.342379" elapsed="0.000036"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-08T00:51:13.342488" elapsed="0.000046"/>
</return>
<msg time="2026-04-08T00:51:13.344609" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:51:13.338007" elapsed="0.006706"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:13.348459" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:13.348052" elapsed="0.000505"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:13.349631" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:13.349252" elapsed="0.000476"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:51:13.361356" level="INFO">GET Request : url=http://10.30.170.48:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 path_url=/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01ju7g9ih47awu1dako8be5k84o113.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:51:13.362448" level="INFO">GET Response : url=http://10.30.170.48:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Transfer-Encoding': 'chunked'} 
 body={"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","hidden-symmetric-keys","encrypted-private-keys","asymmetrically-encrypted-value-format","cms-encrypted-data-format","cleartext-private-keys","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["ssh-client-keepalives","client-ident-hostbased","client-ident-publickey","client-ident-password"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-ex... (set the log level to DEBUG or TRACE to see the full content) 
 </msg>
<msg time="2026-04-08T00:51:13.362957" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:51:13.352083" elapsed="0.010940"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:13.349854" elapsed="0.013343"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:13.363910" elapsed="0.000056"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:13.363310" elapsed="0.000780"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:13.349803" elapsed="0.014409"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:13.372040" level="INFO">{"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","hidden-symmetric-keys","encrypted-private-keys","asymmetrically-encrypted-value-format","cms-encrypted-data-format","cleartext-private-keys","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["ssh-client-keepalives","client-ident-hostbased","client-ident-publickey","client-ident-password"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-experimenter-types?revision=2015-10-20","namespace":"urn:opendaylight:openflowplugin:experimenter:types","conformance-type":"import"},{"name":"ietf-ip_2018-02-22","revision":"2018-02-22","schema":"/rests/modules/ietf-ip?revision=2018-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-ip","conformance-type":"import","feature":["ipv6-privacy-autoconf","ipv4-non-contiguous-netmasks"]},{"name":"ietf-tcp-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-client","conformance-type":"import","feature":["local-binding-supported","tcp-client-keepalives"]},{"name":"node-config_2014-10-15","revision":"2014-10-15","schema":"/rests/modules/node-config?revision=2014-10-15","namespace":"urn:opendaylight:module:config","conformance-type":"import"},{"name":"ietf-restconf_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf","conformance-type":"import"},{"name":"ietf-datastores_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-datastores?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-datastores","conformance-type":"import"},{"name":"ietf-yang-patch_2017-02-22","revision":"2017-02-22","schema":"/rests/modules/ietf-yang-patch?revision=2017-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-patch","conformance-type":"import"},{"name":"sal-group_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-group?revision=2013-09-18","namespace":"urn:opendaylight:group:service","conformance-type":"import"},{"name":"odl-codegen-extensions_2024-06-27","revision":"2024-06-27","schema":"/rests/modules/odl-codegen-extensions?revision=2024-06-27","namespace":"urn:opendaylight:yang:extension:codegen","conformance-type":"import"},{"name":"sal-meter_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-meter?revision=2013-09-18","namespace":"urn:opendaylight:meter:service","conformance-type":"import"},{"name":"ietf-interfaces_2018-02-20","revision":"2018-02-20","schema":"/rests/modules/ietf-interfaces?revision=2018-02-20","namespace":"urn:ietf:params:xml:ns:yang:ietf-interfaces","conformance-type":"import","feature":["pre-provisioning","if-mib","arbitrary-names"]},{"name":"opendaylight-l2-types_2013-08-27","revision":"2013-08-27","schema":"/rests/modules/opendaylight-l2-types?revision=2013-08-27","namespace":"urn:opendaylight:l2:types","conformance-type":"import"},{"name":"opendaylight-flow-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-flow-types?revision=2013-10-26","namespace":"urn:opendaylight:flow:types","conformance-type":"import"},{"name":"lldp-speaker-config_2016-05-12","revision":"2016-05-12","schema":"/rests/modules/lldp-speaker-config?revision=2016-05-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker:config","conformance-type":"import"},{"name":"aaa-cert_2015-11-26","revision":"2015-11-26","schema":"/rests/modules/aaa-cert?revision=2015-11-26","namespace":"urn:opendaylight:yang:aaa:cert","conformance-type":"import"},{"name":"openflow-action_2015-02-03","revision":"2015-02-03","schema":"/rests/modules/openflow-action?revision=2015-02-03","namespace":"urn:opendaylight:openflow:common:action","conformance-type":"import"},{"name":"openflow-approved-extensions_2016-08-02","revision":"2016-08-02","schema":"/rests/modules/openflow-approved-extensions?revision=2016-08-02","namespace":"urn:opendaylight:openflow:approved:extensions","conformance-type":"import"},{"name":"nc-notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/nc-notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netmod:notification","conformance-type":"import"},{"name":"ietf-netconf-nmda_2019-01-07","revision":"2019-01-07","schema":"/rests/modules/ietf-netconf-nmda?revision=2019-01-07","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-nmda","conformance-type":"import","feature":["with-defaults","origin"]},{"name":"ietf-tcp-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-common","conformance-type":"import","feature":["keepalives-supported"]},{"name":"network-topology_2013-10-21","revision":"2013-10-21","schema":"/rests/modules/network-topology?revision=2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:network-topology","conformance-type":"import"},{"name":"aaa-encrypt-service-config_2024-02-02","revision":"2024-02-02","schema":"/rests/modules/aaa-encrypt-service-config?revision=2024-02-02","namespace":"config:aaa:authn:encrypt:service:config","conformance-type":"import"},{"name":"openflow-instruction_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-instruction?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:instruction","conformance-type":"import"},{"name":"ietf-tls-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-client","conformance-type":"import","feature":["client-ident-x509-cert","server-auth-x509-cert"]},{"name":"opendaylight-group-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-group-statistics?revision=2013-11-11","namespace":"urn:opendaylight:group:statistics","conformance-type":"import"},{"name":"cluster-admin_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/cluster-admin?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:cluster:admin","conformance-type":"import"},{"name":"opendaylight-flow-statistics_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-flow-statistics?revision=2013-08-19","namespace":"urn:opendaylight:flow:statistics","conformance-type":"import"},{"name":"opendaylight-table-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-table-types?revision=2013-10-26","namespace":"urn:opendaylight:table:types","conformance-type":"import"},{"name":"forwarding-rules-manager-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/forwarding-rules-manager-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:forwardingrules-manager:config","conformance-type":"import"},{"name":"odl-srm-types_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-types?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:types","conformance-type":"import"},{"name":"ietf-x509-cert-to-name_2014-12-10","revision":"2014-12-10","schema":"/rests/modules/ietf-x509-cert-to-name?revision=2014-12-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-x509-cert-to-name","conformance-type":"import"},{"name":"flow-node-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-node-inventory?revision=2013-08-19","namespace":"urn:opendaylight:flow:inventory","conformance-type":"import"},{"name":"flow-errors_2013-11-16","revision":"2013-11-16","schema":"/rests/modules/flow-errors?revision=2013-11-16","namespace":"urn:opendaylight:flow:errors","conformance-type":"import"},{"name":"ietf-netconf_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:netconf:base:1.0","conformance-type":"import","feature":["xpath","url","rollback-on-error","validate","startup","candidate","confirmed-commit","writable-running"]},{"name":"iana-ssh-public-key-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-public-key-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-public-key-algs","conformance-type":"import"},{"name":"aaa-cert-mdsal_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/aaa-cert-mdsal?revision=2016-03-21","namespace":"urn:opendaylight:yang:aaa:cert:mdsal","conformance-type":"import"},{"name":"odl-device-notification_2024-02-18","revision":"2024-02-18","schema":"/rests/modules/odl-device-notification?revision=2024-02-18","namespace":"urn:opendaylight:device:notification","conformance-type":"import"},{"name":"ietf-origin_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-origin?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-origin","conformance-type":"import"},{"name":"openflow-augments_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-augments?revision=2015-02-25","namespace":"urn:opendaylight:openflow:augments","conformance-type":"import"},{"name":"iana-ssh-encryption-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-encryption-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-encryption-algs","conformance-type":"import"},{"name":"ietf-truststore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-truststore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-truststore","conformance-type":"import","feature":["inline-definitions-supported"]},{"name":"distributed-datastore-provider_2025-01-30","revision":"2025-01-30","schema":"/rests/modules/distributed-datastore-provider?revision=2025-01-30","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:distributed-datastore-provider","conformance-type":"import"},{"name":"opendaylight-group-types_2013-10-18","revision":"2013-10-18","schema":"/rests/modules/opendaylight-group-types?revision=2013-10-18","namespace":"urn:opendaylight:group:types","conformance-type":"import"},{"name":"sal-remote-augment_2023-11-03","revision":"2023-11-03","schema":"/rests/modules/sal-remote-augment?revision=2023-11-03","namespace":"urn:sal:restconf:event:subscription","conformance-type":"import"},{"name":"opendaylight-ipv6-arbitrary-bitmask-fields_2016-02-24","revision":"2016-02-24","schema":"/rests/modules/opendaylight-ipv6-arbitrary-bitmask-fields?revision=2016-02-24","namespace":"urn:opendaylight:opendaylight-ipv6-arbitrary-bitmask-fields","conformance-type":"import"},{"name":"sal-flows-batch_2016-03-14","revision":"2016-03-14","schema":"/rests/modules/sal-flows-batch?revision=2016-03-14","namespace":"urn:opendaylight:flows:service","conformance-type":"import"},{"name":"ietf-tls-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-common","conformance-type":"import","feature":["tls12","hello-params","tls13"]},{"name":"openflow-types_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-types?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:types","conformance-type":"import"},{"name":"ietf-netconf-with-defaults_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf-with-defaults?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults","conformance-type":"import"},{"name":"odl-srm-ops_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-ops?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:ops","conformance-type":"import"},{"name":"odl-general-entity_2015-09-30","revision":"2015-09-30","schema":"/rests/modules/odl-general-entity?revision=2015-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:mdsal:core:general-entity","conformance-type":"import"},{"name":"iana-ssh-key-exchange-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-key-exchange-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-key-exchange-algs","conformance-type":"import"},{"name":"node-ssl-connection-error_2019-07-23","revision":"2019-07-23","schema":"/rests/modules/node-ssl-connection-error?revision=2019-07-23","namespace":"urn:opendaylight:node-ssl-connection-error:service","conformance-type":"import"},{"name":"openflow-protocol_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-protocol?revision=2013-07-31","namespace":"urn:opendaylight:openflow:protocol","conformance-type":"import"},{"name":"ietf-udp-server_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-server?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-server","conformance-type":"import"},{"name":"ietf-keystore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-keystore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-keystore","conformance-type":"import","feature":["asymmetric-keys","inline-definitions-supported"]},{"name":"aaa_2016-12-14","revision":"2016-12-14","schema":"/rests/modules/aaa?revision=2016-12-14","namespace":"urn:opendaylight:params:xml:ns:yang:aaa","conformance-type":"import"},{"name":"aaa-cert-rpc_2015-12-15","revision":"2015-12-15","schema":"/rests/modules/aaa-cert-rpc?revision=2015-12-15","namespace":"urn:opendaylight:yang:aaa:cert:rpc","conformance-type":"import"},{"name":"system-notifications_2013-09-27","revision":"2013-09-27","schema":"/rests/modules/system-notifications?revision=2013-09-27","namespace":"urn:opendaylight:openflow:system","conformance-type":"import"},{"name":"sal-flat-batch_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/sal-flat-batch?revision=2016-03-21","namespace":"urn:opendaylight:flat-batch:service","conformance-type":"import"},{"name":"notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netconf:notification:1.0","conformance-type":"import"},{"name":"sal-remote_2014-01-14","revision":"2014-01-14","schema":"/rests/modules/sal-remote?revision=2014-01-14","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:remote","conformance-type":"import"},{"name":"yang-ext_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/yang-ext?revision=2013-07-09","namespace":"urn:opendaylight:yang:extension:yang-ext","conformance-type":"import"},{"name":"opendaylight-multipart-types_2017-01-12","revision":"2017-01-12","schema":"/rests/modules/opendaylight-multipart-types?revision=2017-01-12","namespace":"urn:opendaylight:multipart:types","conformance-type":"import"},{"name":"opendaylight-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-inventory?revision=2013-08-19","namespace":"urn:opendaylight:inventory","conformance-type":"import"},{"name":"sal-queue_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-queue?revision=2015-03-05","namespace":"urn:opendaylight:queue:service","conformance-type":"import"},{"name":"sal-groups-batch_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/sal-groups-batch?revision=2016-03-15","namespace":"urn:opendaylight:groups:service","conformance-type":"import"},{"name":"arbitrator-reconcile_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/arbitrator-reconcile?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:arbitrator-reconcile:service","conformance-type":"import"},{"name":"ietf-yang-metadata_2016-08-05","revision":"2016-08-05","schema":"/rests/modules/ietf-yang-metadata?revision=2016-08-05","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-metadata","conformance-type":"import"},{"name":"opendaylight-arbitrary-bitmask-fields_2016-01-30","revision":"2016-01-30","schema":"/rests/modules/opendaylight-arbitrary-bitmask-fields?revision=2016-01-30","namespace":"urn:opendaylight:arbitrary:bitmask:fields","conformance-type":"import"},{"name":"ietf-udp-client_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-client?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-client","conformance-type":"import","feature":["local-binding"]},{"name":"opendaylight-meter-types_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/opendaylight-meter-types?revision=2013-09-18","namespace":"urn:opendaylight:meter:types","conformance-type":"import"},{"name":"opendaylight-action-types_2013-11-12","revision":"2013-11-12","schema":"/rests/modules/opendaylight-action-types?revision=2013-11-12","namespace":"urn:opendaylight:action:types","conformance-type":"import"},{"name":"sal-role_2015-07-27","revision":"2015-07-27","schema":"/rests/modules/sal-role?revision=2015-07-27","namespace":"urn:opendaylight:role:service","conformance-type":"import"},{"name":"openflow-provider-config_2016-05-10","revision":"2016-05-10","schema":"/rests/modules/openflow-provider-config?revision=2016-05-10","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:provider:config","conformance-type":"import"},{"name":"odl-serviceutils-upgrade_2018-07-02","revision":"2018-07-02","schema":"/rests/modules/odl-serviceutils-upgrade?revision=2018-07-02","namespace":"urn:opendaylight:serviceutils:upgrade","conformance-type":"import"},{"name":"opendaylight-match-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-match-types?revision=2013-10-26","namespace":"urn:opendaylight:model:match:types","conformance-type":"import"},{"name":"ietf-restconf-server_2024-08-14","revision":"2024-08-14","schema":"/rests/modules/ietf-restconf-server?revision=2024-08-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-server","conformance-type":"import","feature":["http-listen","https-listen"]},{"name":"reconciliation-result-state_2017-07-13","revision":"2017-07-13","schema":"/rests/modules/reconciliation-result-state?revision=2017-07-13","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:rf:state","conformance-type":"import"},{"name":"onf-extensions_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/onf-extensions?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf","conformance-type":"import"},{"name":"sal-table_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/sal-table?revision=2013-10-26","namespace":"urn:opendaylight:table:service","conformance-type":"import"},{"name":"iana-http-versions_2026-02-04","revision":"2026-02-04","schema":"/rests/modules/iana-http-versions?revision=2026-02-04","namespace":"urn:ietf:params:xml:ns:yang:iana-http-versions","conformance-type":"import"},{"name":"opendaylight-direct-statistics_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/opendaylight-direct-statistics?revision=2016-05-11","namespace":"urn:opendaylight:direct:statistics","conformance-type":"import"},{"name":"opendaylight-port-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-port-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:port","conformance-type":"import"},{"name":"sal-async-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/sal-async-config?revision=2017-06-19","namespace":"urn:opendaylight:async-config:service","conformance-type":"import"},{"name":"aaa-password-service-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-password-service-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:password:service:config","conformance-type":"import"},{"name":"ietf-yang-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-yang-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-types","conformance-type":"import"},{"name":"opendaylight-queue-statistics_2013-12-16","revision":"2013-12-16","schema":"/rests/modules/opendaylight-queue-statistics?revision=2013-12-16","namespace":"urn:opendaylight:queue:statistics","conformance-type":"import"},{"name":"sal-bundle_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/sal-bundle?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf:bundle:service","conformance-type":"import"},{"name":"ietf-restconf-subscribed-notifications_2019-11-17","revision":"2019-11-17","schema":"/rests/modules/ietf-restconf-subscribed-notifications?revision=2019-11-17","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-subscribed-notifications","conformance-type":"import"},{"name":"sal-meters-batch_2016-03-16","revision":"2016-03-16","schema":"/rests/modules/sal-meters-batch?revision=2016-03-16","namespace":"urn:opendaylight:meters:service","conformance-type":"import"},{"name":"odl-entity-owners","revision":"","schema":"/rests/modules/odl-entity-owners","namespace":"urn:opendaylight:params:xml:ns:yang:controller:entity-owners","conformance-type":"import"},{"name":"sal-experimenter-mp-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-mp-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-mp-message:service","conformance-type":"import"},{"name":"packet-processing_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/packet-processing?revision=2013-07-09","namespace":"urn:opendaylight:packet:service","conformance-type":"import"},{"name":"openflow-configuration_2014-06-30","revision":"2014-06-30","schema":"/rests/modules/openflow-configuration?revision=2014-06-30","namespace":"urn:opendaylight:openflow:config","conformance-type":"import"},{"name":"odl-srm-rpcs_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-rpcs?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:rpc","conformance-type":"import"},{"name":"ietf-netconf-acm_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-netconf-acm?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-acm","conformance-type":"import"},{"name":"iana-crypt-hash_2014-08-06","revision":"2014-08-06","schema":"/rests/modules/iana-crypt-hash?revision=2014-08-06","namespace":"urn:ietf:params:xml:ns:yang:iana-crypt-hash","conformance-type":"import","feature":["crypt-hash-sha-512","crypt-hash-sha-256","crypt-hash-md5"]},{"name":"openflow-extensible-match_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-extensible-match?revision=2015-02-25","namespace":"urn:opendaylight:openflow:oxm","conformance-type":"import"}],"module-set-id":"2"}}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:13.368353" elapsed="0.004054"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:13.367773" elapsed="0.004670"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:13.367722" elapsed="0.004746"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:13.374931" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:13.372774" elapsed="0.002203"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:13.372548" elapsed="0.002463"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:13.372530" elapsed="0.002506"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:13.375633" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:13.375241" elapsed="0.000419"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:13.375989" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:13.375752" elapsed="0.000294"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:13.376588" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:13.376280" elapsed="0.000334"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:13.376070" elapsed="0.000580"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:13.375733" elapsed="0.000938"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:13.377228" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:13.376851" elapsed="0.000404"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:13.377581" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:13.377346" elapsed="0.000291"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:13.378116" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:13.377819" elapsed="0.000322"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:13.377661" elapsed="0.000547"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:13.377327" elapsed="0.000909"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:51:13.378415" elapsed="0.000352"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:51:13.379260" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:13.378952" elapsed="0.000334"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:51:13.379461" elapsed="0.002264"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:51:13.365990" elapsed="0.015860"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:51:13.382239" elapsed="0.000048"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:51:13.381979" elapsed="0.000371"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:13.381928" elapsed="0.000458"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:51:13.391443" level="INFO">${text_normalized} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:51:13.383095" elapsed="0.008399"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:51:13.391572" elapsed="0.000065"/>
</return>
<msg time="2026-04-08T00:51:13.391898" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:51:13.345355" elapsed="0.046651"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:51:13.392486" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:51:13.392803" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="PASS" start="2026-04-08T00:51:13.208717" elapsed="0.184114"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Json_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:13.393170" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:13.392916" elapsed="0.000469"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:13.392898" elapsed="0.000514"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:51:13.393447" elapsed="0.000026"/>
</return>
<arg>session=${session}</arg>
<arg>folder=${RESTCONF_MODULES_DIR}</arg>
<arg>verify=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Add arguments sensible for JSON data, return Get_Templated response text.
Optionally, verification against JSON data (may be iterated) is called.
Only subset of JSON data is verified and returned if JMES path is specified in
file ${folder}/jmespath.expr.</doc>
<status status="PASS" start="2026-04-08T00:51:13.204711" elapsed="0.188863"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:13.200739" elapsed="0.192878"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:13.200721" elapsed="0.192920"/>
</if>
<kw name="Resolve_Shard_Type_Class" owner="ClusterManagement">
<if>
<branch type="IF" condition="'${shard_type}' == 'config'">
<return>
<value>DistributedConfigDatastore</value>
<status status="PASS" start="2026-04-08T00:51:13.394285" elapsed="0.000148"/>
</return>
<status status="PASS" start="2026-04-08T00:51:13.394129" elapsed="0.000341"/>
</branch>
<branch type="ELSE IF" condition="'${shard_type}' == 'operational'">
<return>
<value>DistributedOperationalDatastore</value>
<status status="NOT RUN" start="2026-04-08T00:51:13.394531" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:51:13.394493" elapsed="0.000077"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:13.394111" elapsed="0.000481"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized shard type: ${shard_type}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:13.394738" elapsed="0.000021"/>
</kw>
<msg time="2026-04-08T00:51:13.394858" level="INFO">${type_class} = DistributedConfigDatastore</msg>
<var>${type_class}</var>
<arg>shard_type=${shard_type}</arg>
<doc>Simple lookup for class name corresponding to desired type.</doc>
<status status="PASS" start="2026-04-08T00:51:13.393865" elapsed="0.001018"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:13.395440" level="INFO">${cluster_index} = 1</msg>
<var>${cluster_index}</var>
<arg>${member_index}+${NODE_ROLE_INDEX_START}-1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:13.395049" elapsed="0.000418"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:13.396082" level="INFO">${uri} = jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-inventory-config,type=DistributedConfigDatastore</msg>
<var>${uri}</var>
<arg>${JOLOKIA_READ_URI}:Category=Shards,name=member-${cluster_index}-shard-${shard_name}-${shard_type},type=${type_class}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:13.395622" elapsed="0.000487"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:13.401770" level="INFO">jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-inventory-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:13.401328" elapsed="0.000489"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:13.402438" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:13.401973" elapsed="0.000509"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:51:13.420767" level="INFO">GET Request : url=http://10.30.170.48:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-inventory-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-inventory-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:51:13.420952" level="INFO">GET Response : url=http://10.30.170.48:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-inventory-config,type=DistributedConfigDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Wed, 08 Apr 2026 00:51:13 GMT', 'Expires': 'Tue, 07 Apr 2026 23:51:13 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-1-shard-inventory-config,type=DistributedConfigDatastore","type":"read"},"value":{"ReadWriteTransactionCount":6,"SnapshotIndex":10,"InMemoryJournalLogSize":1,"ReplicatedToAllIndex":10,"Leader":"member-1-shard-inventory-config","LastIndex":11,"RaftState":"Leader","LastApplied":11,"LastCommittedTransactionTime":"1970-01-01 00:00:00.000","PeerAddresses":"member-2-shard-inventory-config: pekko:\/\/opendaylight-cluster-data@10.30.170.131:2550\/user\/shardmanager-config\/member-2-shard-inventory-config, member-3-shard-inventory-config: pekko:\/\/opendaylight-cluster-data@10.30.171.110:2550\/user\/shardmanager-config\/member-3-shard-inventory-config","LastLogIndex":11,"LastLeadershipChangeTime":"2026-04-08 00:46:45.964","FollowerInitialSyncStatus":false,"FollowerInfo":[{"timeSinceLastActivity":"00:00:00.265","active":true,"matchIndex":11,"voting":true,"id":"member-2-shard-inventory-config","nextIndex":12},{"timeSinceLastActivity":"00:00:00.265","active":true,"matchIndex":11,"voting":true,"id":"member-3-shard-inventory-config","nextIndex":12}],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"484.4 μs","CurrentTerm":2,"LastTerm":2,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-inventory-config","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":0,"TxCohortCacheSize":0,"PeerVotingStates":"member-2-shard-inventory-config: true, member-3-shard-inventory-config: true","LastLogTerm":2,"StatRetrievalError":null,"CommitIndex":11,"SnapshotTerm":2,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-1-shard-inventory-config","LeadershipChangeCount":1,"InMemoryJournalDataSize":444},"timestamp":1775609473,"status":200} 
 </msg>
<msg time="2026-04-08T00:51:13.421575" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:51:13.413459" elapsed="0.008298"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:13.402551" elapsed="0.019578"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:13.422435" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:13.422216" elapsed="0.000654"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:13.402532" elapsed="0.020373"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:13.429430" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-1-shard-inventory-config,type=DistributedConfigDatastore","type":"read"},"value":{"ReadWriteTransactionCount":6,"SnapshotIndex":10,"InMemoryJournalLogSize":1,"ReplicatedToAllIndex":10,"Leader":"member-1-shard-inventory-config","LastIndex":11,"RaftState":"Leader","LastApplied":11,"LastCommittedTransactionTime":"1970-01-01 00:00:00.000","PeerAddresses":"member-2-shard-inventory-config: pekko:\/\/opendaylight-cluster-data@10.30.170.131:2550\/user\/shardmanager-config\/member-2-shard-inventory-config, member-3-shard-inventory-config: pekko:\/\/opendaylight-cluster-data@10.30.171.110:2550\/user\/shardmanager-config\/member-3-shard-inventory-config","LastLogIndex":11,"LastLeadershipChangeTime":"2026-04-08 00:46:45.964","FollowerInitialSyncStatus":false,"FollowerInfo":[{"timeSinceLastActivity":"00:00:00.265","active":true,"matchIndex":11,"voting":true,"id":"member-2-shard-inventory-config","nextIndex":12},{"timeSinceLastActivity":"00:00:00.265","active":true,"matchIndex":11,"voting":true,"id":"member-3-shard-inventory-config","nextIndex":12}],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"484.4 μs","CurrentTerm":2,"LastTerm":2,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-inventory-config","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":0,"TxCohortCacheSize":0,"PeerVotingStates":"member-2-shard-inventory-config: true, member-3-shard-inventory-config: true","LastLogTerm":2,"StatRetrievalError":null,"CommitIndex":11,"SnapshotTerm":2,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-1-shard-inventory-config","LeadershipChangeCount":1,"InMemoryJournalDataSize":444},"timestamp":1775609473,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:13.425865" elapsed="0.003724"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:13.424635" elapsed="0.005023"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:13.424608" elapsed="0.005104"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:13.433254" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:13.430876" elapsed="0.002480"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:13.429826" elapsed="0.003579"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:13.429800" elapsed="0.003643"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:13.434830" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:13.434048" elapsed="0.000843"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:13.435548" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:13.435058" elapsed="0.000581"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:13.436526" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:13.436007" elapsed="0.000565"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:13.435676" elapsed="0.000956"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:13.435037" elapsed="0.001630"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:13.438068" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:13.437343" elapsed="0.000798"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:13.438792" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:13.438327" elapsed="0.000551"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:13.439757" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:13.439258" elapsed="0.000546"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:13.438915" elapsed="0.000940"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:13.438305" elapsed="0.001585"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:51:13.440111" elapsed="0.000638"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:51:13.441626" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:13.441056" elapsed="0.000631"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:51:13.441968" elapsed="0.002379"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:51:13.423662" elapsed="0.020845"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:51:13.444708" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:51:13.444582" elapsed="0.000171"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:13.444562" elapsed="0.000213"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:51:13.448508" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-1-shard-inventory-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 177560...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:51:13.444921" elapsed="0.003617"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:51:13.448590" elapsed="0.000034"/>
</return>
<msg time="2026-04-08T00:51:13.448793" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-1-shard-inventory-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 177560...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:51:13.397060" elapsed="0.051760"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:51:13.448879" elapsed="0.000027"/>
</return>
<msg time="2026-04-08T00:51:13.449030" level="INFO">${data_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-1-shard-inventory-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 177560...</msg>
<var>${data_text}</var>
<arg>uri=${uri}</arg>
<arg>session=${session}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-08T00:51:13.396336" elapsed="0.052721"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:13.450288" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-1-shard-inventory-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1775609473, 'valu...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:13.449772" elapsed="0.000546"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-08T00:51:13.450367" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:51:13.450552" level="INFO">${data_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-1-shard-inventory-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1775609473, 'valu...</msg>
<var>${data_object}</var>
<arg>${data_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-08T00:51:13.449424" elapsed="0.001155"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:51:13.450939" level="INFO">${value} = {'AbortTransactionsCount': 0, 'CommitIndex': 11, 'CommittedTransactionsCount': 0, 'CurrentTerm': 2, 'FailedReadTransactionsCount': 0, 'FailedTransactionsCount': 0, 'FollowerInfo': [{'active': True, 'i...</msg>
<var>${value}</var>
<arg>${data_object}</arg>
<arg>value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:51:13.450736" elapsed="0.000231"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:51:13.451340" level="INFO">${raft_property} = Leader</msg>
<var>${raft_property}</var>
<arg>${value}</arg>
<arg>${property}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:51:13.451122" elapsed="0.000244"/>
</kw>
<return>
<value>${raft_property}</value>
<status status="PASS" start="2026-04-08T00:51:13.451413" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:51:13.451564" level="INFO">${raft_state} = Leader</msg>
<var>${raft_state}</var>
<arg>RaftState</arg>
<arg>${shard_name}</arg>
<arg>${shard_type}</arg>
<arg>${member_index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft property.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T00:51:13.199136" elapsed="0.252453"/>
</kw>
<return>
<value>${raft_state}</value>
<status status="PASS" start="2026-04-08T00:51:13.451645" elapsed="0.000025"/>
</return>
<msg time="2026-04-08T00:51:13.451790" level="INFO">${raft_state} = Leader</msg>
<var>${raft_state}</var>
<arg>shard_name=${shard_name}</arg>
<arg>shard_type=${ds_type}</arg>
<arg>member_index=${index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft status.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T00:51:13.198431" elapsed="0.253383"/>
</kw>
<if>
<branch type="IF" condition="'Follower' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${follower_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:13.452173" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:13.451893" elapsed="0.000343"/>
</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="PASS" start="2026-04-08T00:51:13.452472" elapsed="0.000191"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:13.452260" elapsed="0.000440"/>
</branch>
<branch type="ELSE IF" condition="${validate}">
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized Raft state: ${raft_state}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:13.452868" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:13.452724" elapsed="0.000195"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:13.451876" elapsed="0.001066"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T00:51:13.198265" elapsed="0.254700"/>
</iter>
<iter>
<kw name="Get_Raft_State_Of_Shard_At_Member" owner="ClusterManagement">
<kw name="Get_Raft_Property_From_Shard_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:13.455460" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:13.455116" elapsed="0.000372"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:51:13.455533" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:51:13.455681" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:51:13.454775" elapsed="0.000931"/>
</kw>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Get_As_Json_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:13.542536" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:13.542060" elapsed="0.000520"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:51:13.543756" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:51:13.543399" elapsed="0.000466">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-08T00:51:13.543978" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:51:13.542811" elapsed="0.001193"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:51:13.544590" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:51:13.544194" elapsed="0.000423"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T00:51:13.544924" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-08T00:51:13.545087" level="INFO">${template} = /rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T00:51:13.544777" elapsed="0.000336"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:13.545540" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:13.545287" elapsed="0.000298"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:13.546668" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:13.546407" elapsed="0.000306"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-08T00:51:13.547187" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-08T00:51:13.546891" elapsed="0.000324"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:13.547604" elapsed="0.000027"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:13.547863" 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-04-08T00:51:13.548085" elapsed="0.000023"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-08T00:51:13.547442" elapsed="0.000704"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-08T00:51:13.547270" elapsed="0.000926"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-08T00:51:13.548247" elapsed="0.000035"/>
</return>
<msg time="2026-04-08T00:51:13.548419" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-08T00:51:13.546023" elapsed="0.002421"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:13.545672" elapsed="0.002805"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:13.548652" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:13.548504" elapsed="0.000204"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:13.545644" elapsed="0.003086"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:13.549336" level="INFO">${final_text} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:13.548872" elapsed="0.000496"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T00:51:13.549419" elapsed="0.000035"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="PASS" start="2026-04-08T00:51:13.541418" elapsed="0.008136"/>
</kw>
<msg time="2026-04-08T00:51:13.549609" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:51:13.528502" elapsed="0.021196"/>
</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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:13.562249" elapsed="0.000043"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:13.574391" elapsed="0.000042"/>
</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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:13.586974" elapsed="0.000042"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:13.587769" elapsed="0.000038"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:13.588542" elapsed="0.000036"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:13.589098" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:13.588950" elapsed="0.000222"/>
</branch>
<status status="NOT RUN" start="2026-04-08T00:51:13.588933" elapsed="0.000265"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:13.589358" elapsed="0.000022"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:13.589545" elapsed="0.000021"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:13.589730" elapsed="0.000022"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-08T00:51:13.588884" elapsed="0.000923"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-08T00:51:13.588662" elapsed="0.001185"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:13.590571" elapsed="0.000036"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-08T00:51:13.590690" elapsed="0.000113"/>
</return>
<msg time="2026-04-08T00:51:13.590988" level="INFO">${uri} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-08T00:51:13.521725" elapsed="0.069372"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:51:13.593941" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:51:13.593688" elapsed="0.000321">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-08T00:51:13.594229" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:51:13.593245" elapsed="0.001031"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:13.594783" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:13.594405" elapsed="0.000444"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:13.595478" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:13.595178" elapsed="0.000326"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:13.594889" elapsed="0.000662"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:13.594354" elapsed="0.001234"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:51:13.598724" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:51:13.596414" elapsed="0.002356"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-08T00:51:13.598846" elapsed="0.000064"/>
</return>
<msg time="2026-04-08T00:51:13.599175" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:51:13.592100" elapsed="0.007181"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:51:13.602205" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:51:13.601927" elapsed="0.000346">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-08T00:51:13.602464" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:51:13.601493" elapsed="0.001016"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-08T00:51:13.602890" elapsed="0.000079"/>
</return>
<status status="PASS" start="2026-04-08T00:51:13.602640" elapsed="0.000398"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:13.602588" elapsed="0.000489"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:13.603809" elapsed="0.000036"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:13.604552" elapsed="0.000035"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-08T00:51:13.604659" elapsed="0.000049"/>
</return>
<msg time="2026-04-08T00:51:13.606962" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:51:13.600090" elapsed="0.006980"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:13.610975" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:13.610590" elapsed="0.000483"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:13.612138" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:13.611763" elapsed="0.000486"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:51:13.633869" level="INFO">GET Request : url=http://10.30.170.131:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 path_url=/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node012m0dyuink19r12kj250j53usg1.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:51:13.634850" level="INFO">GET Response : url=http://10.30.170.131:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Transfer-Encoding': 'chunked'} 
 body={"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","hidden-symmetric-keys","encrypted-private-keys","asymmetrically-encrypted-value-format","cms-encrypted-data-format","cleartext-private-keys","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["ssh-client-keepalives","client-ident-hostbased","client-ident-publickey","client-ident-password"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-ex... (set the log level to DEBUG or TRACE to see the full content) 
 </msg>
<msg time="2026-04-08T00:51:13.635342" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:51:13.614457" elapsed="0.020946"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:13.612375" elapsed="0.023156"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:13.636230" elapsed="0.000055"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:13.635630" elapsed="0.000774"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:13.612325" elapsed="0.024160"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:13.644918" level="INFO">{"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","hidden-symmetric-keys","encrypted-private-keys","asymmetrically-encrypted-value-format","cms-encrypted-data-format","cleartext-private-keys","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["ssh-client-keepalives","client-ident-hostbased","client-ident-publickey","client-ident-password"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-experimenter-types?revision=2015-10-20","namespace":"urn:opendaylight:openflowplugin:experimenter:types","conformance-type":"import"},{"name":"ietf-ip_2018-02-22","revision":"2018-02-22","schema":"/rests/modules/ietf-ip?revision=2018-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-ip","conformance-type":"import","feature":["ipv6-privacy-autoconf","ipv4-non-contiguous-netmasks"]},{"name":"ietf-tcp-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-client","conformance-type":"import","feature":["local-binding-supported","tcp-client-keepalives"]},{"name":"node-config_2014-10-15","revision":"2014-10-15","schema":"/rests/modules/node-config?revision=2014-10-15","namespace":"urn:opendaylight:module:config","conformance-type":"import"},{"name":"ietf-restconf_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf","conformance-type":"import"},{"name":"ietf-datastores_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-datastores?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-datastores","conformance-type":"import"},{"name":"ietf-yang-patch_2017-02-22","revision":"2017-02-22","schema":"/rests/modules/ietf-yang-patch?revision=2017-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-patch","conformance-type":"import"},{"name":"sal-group_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-group?revision=2013-09-18","namespace":"urn:opendaylight:group:service","conformance-type":"import"},{"name":"odl-codegen-extensions_2024-06-27","revision":"2024-06-27","schema":"/rests/modules/odl-codegen-extensions?revision=2024-06-27","namespace":"urn:opendaylight:yang:extension:codegen","conformance-type":"import"},{"name":"sal-meter_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-meter?revision=2013-09-18","namespace":"urn:opendaylight:meter:service","conformance-type":"import"},{"name":"ietf-interfaces_2018-02-20","revision":"2018-02-20","schema":"/rests/modules/ietf-interfaces?revision=2018-02-20","namespace":"urn:ietf:params:xml:ns:yang:ietf-interfaces","conformance-type":"import","feature":["pre-provisioning","if-mib","arbitrary-names"]},{"name":"opendaylight-l2-types_2013-08-27","revision":"2013-08-27","schema":"/rests/modules/opendaylight-l2-types?revision=2013-08-27","namespace":"urn:opendaylight:l2:types","conformance-type":"import"},{"name":"opendaylight-flow-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-flow-types?revision=2013-10-26","namespace":"urn:opendaylight:flow:types","conformance-type":"import"},{"name":"lldp-speaker-config_2016-05-12","revision":"2016-05-12","schema":"/rests/modules/lldp-speaker-config?revision=2016-05-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker:config","conformance-type":"import"},{"name":"aaa-cert_2015-11-26","revision":"2015-11-26","schema":"/rests/modules/aaa-cert?revision=2015-11-26","namespace":"urn:opendaylight:yang:aaa:cert","conformance-type":"import"},{"name":"openflow-action_2015-02-03","revision":"2015-02-03","schema":"/rests/modules/openflow-action?revision=2015-02-03","namespace":"urn:opendaylight:openflow:common:action","conformance-type":"import"},{"name":"openflow-approved-extensions_2016-08-02","revision":"2016-08-02","schema":"/rests/modules/openflow-approved-extensions?revision=2016-08-02","namespace":"urn:opendaylight:openflow:approved:extensions","conformance-type":"import"},{"name":"nc-notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/nc-notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netmod:notification","conformance-type":"import"},{"name":"ietf-netconf-nmda_2019-01-07","revision":"2019-01-07","schema":"/rests/modules/ietf-netconf-nmda?revision=2019-01-07","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-nmda","conformance-type":"import","feature":["with-defaults","origin"]},{"name":"ietf-tcp-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-common","conformance-type":"import","feature":["keepalives-supported"]},{"name":"network-topology_2013-10-21","revision":"2013-10-21","schema":"/rests/modules/network-topology?revision=2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:network-topology","conformance-type":"import"},{"name":"aaa-encrypt-service-config_2024-02-02","revision":"2024-02-02","schema":"/rests/modules/aaa-encrypt-service-config?revision=2024-02-02","namespace":"config:aaa:authn:encrypt:service:config","conformance-type":"import"},{"name":"openflow-instruction_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-instruction?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:instruction","conformance-type":"import"},{"name":"ietf-tls-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-client","conformance-type":"import","feature":["client-ident-x509-cert","server-auth-x509-cert"]},{"name":"opendaylight-group-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-group-statistics?revision=2013-11-11","namespace":"urn:opendaylight:group:statistics","conformance-type":"import"},{"name":"cluster-admin_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/cluster-admin?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:cluster:admin","conformance-type":"import"},{"name":"opendaylight-flow-statistics_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-flow-statistics?revision=2013-08-19","namespace":"urn:opendaylight:flow:statistics","conformance-type":"import"},{"name":"opendaylight-table-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-table-types?revision=2013-10-26","namespace":"urn:opendaylight:table:types","conformance-type":"import"},{"name":"forwarding-rules-manager-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/forwarding-rules-manager-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:forwardingrules-manager:config","conformance-type":"import"},{"name":"odl-srm-types_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-types?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:types","conformance-type":"import"},{"name":"ietf-x509-cert-to-name_2014-12-10","revision":"2014-12-10","schema":"/rests/modules/ietf-x509-cert-to-name?revision=2014-12-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-x509-cert-to-name","conformance-type":"import"},{"name":"flow-node-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-node-inventory?revision=2013-08-19","namespace":"urn:opendaylight:flow:inventory","conformance-type":"import"},{"name":"flow-errors_2013-11-16","revision":"2013-11-16","schema":"/rests/modules/flow-errors?revision=2013-11-16","namespace":"urn:opendaylight:flow:errors","conformance-type":"import"},{"name":"ietf-netconf_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:netconf:base:1.0","conformance-type":"import","feature":["xpath","url","rollback-on-error","validate","startup","candidate","confirmed-commit","writable-running"]},{"name":"iana-ssh-public-key-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-public-key-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-public-key-algs","conformance-type":"import"},{"name":"aaa-cert-mdsal_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/aaa-cert-mdsal?revision=2016-03-21","namespace":"urn:opendaylight:yang:aaa:cert:mdsal","conformance-type":"import"},{"name":"odl-device-notification_2024-02-18","revision":"2024-02-18","schema":"/rests/modules/odl-device-notification?revision=2024-02-18","namespace":"urn:opendaylight:device:notification","conformance-type":"import"},{"name":"ietf-origin_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-origin?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-origin","conformance-type":"import"},{"name":"openflow-augments_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-augments?revision=2015-02-25","namespace":"urn:opendaylight:openflow:augments","conformance-type":"import"},{"name":"iana-ssh-encryption-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-encryption-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-encryption-algs","conformance-type":"import"},{"name":"ietf-truststore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-truststore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-truststore","conformance-type":"import","feature":["inline-definitions-supported"]},{"name":"distributed-datastore-provider_2025-01-30","revision":"2025-01-30","schema":"/rests/modules/distributed-datastore-provider?revision=2025-01-30","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:distributed-datastore-provider","conformance-type":"import"},{"name":"opendaylight-group-types_2013-10-18","revision":"2013-10-18","schema":"/rests/modules/opendaylight-group-types?revision=2013-10-18","namespace":"urn:opendaylight:group:types","conformance-type":"import"},{"name":"sal-remote-augment_2023-11-03","revision":"2023-11-03","schema":"/rests/modules/sal-remote-augment?revision=2023-11-03","namespace":"urn:sal:restconf:event:subscription","conformance-type":"import"},{"name":"opendaylight-ipv6-arbitrary-bitmask-fields_2016-02-24","revision":"2016-02-24","schema":"/rests/modules/opendaylight-ipv6-arbitrary-bitmask-fields?revision=2016-02-24","namespace":"urn:opendaylight:opendaylight-ipv6-arbitrary-bitmask-fields","conformance-type":"import"},{"name":"sal-flows-batch_2016-03-14","revision":"2016-03-14","schema":"/rests/modules/sal-flows-batch?revision=2016-03-14","namespace":"urn:opendaylight:flows:service","conformance-type":"import"},{"name":"ietf-tls-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-common","conformance-type":"import","feature":["tls12","hello-params","tls13"]},{"name":"openflow-types_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-types?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:types","conformance-type":"import"},{"name":"ietf-netconf-with-defaults_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf-with-defaults?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults","conformance-type":"import"},{"name":"odl-srm-ops_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-ops?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:ops","conformance-type":"import"},{"name":"odl-general-entity_2015-09-30","revision":"2015-09-30","schema":"/rests/modules/odl-general-entity?revision=2015-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:mdsal:core:general-entity","conformance-type":"import"},{"name":"iana-ssh-key-exchange-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-key-exchange-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-key-exchange-algs","conformance-type":"import"},{"name":"node-ssl-connection-error_2019-07-23","revision":"2019-07-23","schema":"/rests/modules/node-ssl-connection-error?revision=2019-07-23","namespace":"urn:opendaylight:node-ssl-connection-error:service","conformance-type":"import"},{"name":"openflow-protocol_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-protocol?revision=2013-07-31","namespace":"urn:opendaylight:openflow:protocol","conformance-type":"import"},{"name":"ietf-udp-server_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-server?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-server","conformance-type":"import"},{"name":"ietf-keystore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-keystore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-keystore","conformance-type":"import","feature":["asymmetric-keys","inline-definitions-supported"]},{"name":"aaa_2016-12-14","revision":"2016-12-14","schema":"/rests/modules/aaa?revision=2016-12-14","namespace":"urn:opendaylight:params:xml:ns:yang:aaa","conformance-type":"import"},{"name":"aaa-cert-rpc_2015-12-15","revision":"2015-12-15","schema":"/rests/modules/aaa-cert-rpc?revision=2015-12-15","namespace":"urn:opendaylight:yang:aaa:cert:rpc","conformance-type":"import"},{"name":"system-notifications_2013-09-27","revision":"2013-09-27","schema":"/rests/modules/system-notifications?revision=2013-09-27","namespace":"urn:opendaylight:openflow:system","conformance-type":"import"},{"name":"sal-flat-batch_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/sal-flat-batch?revision=2016-03-21","namespace":"urn:opendaylight:flat-batch:service","conformance-type":"import"},{"name":"notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netconf:notification:1.0","conformance-type":"import"},{"name":"sal-remote_2014-01-14","revision":"2014-01-14","schema":"/rests/modules/sal-remote?revision=2014-01-14","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:remote","conformance-type":"import"},{"name":"yang-ext_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/yang-ext?revision=2013-07-09","namespace":"urn:opendaylight:yang:extension:yang-ext","conformance-type":"import"},{"name":"opendaylight-multipart-types_2017-01-12","revision":"2017-01-12","schema":"/rests/modules/opendaylight-multipart-types?revision=2017-01-12","namespace":"urn:opendaylight:multipart:types","conformance-type":"import"},{"name":"opendaylight-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-inventory?revision=2013-08-19","namespace":"urn:opendaylight:inventory","conformance-type":"import"},{"name":"sal-queue_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-queue?revision=2015-03-05","namespace":"urn:opendaylight:queue:service","conformance-type":"import"},{"name":"sal-groups-batch_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/sal-groups-batch?revision=2016-03-15","namespace":"urn:opendaylight:groups:service","conformance-type":"import"},{"name":"arbitrator-reconcile_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/arbitrator-reconcile?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:arbitrator-reconcile:service","conformance-type":"import"},{"name":"ietf-yang-metadata_2016-08-05","revision":"2016-08-05","schema":"/rests/modules/ietf-yang-metadata?revision=2016-08-05","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-metadata","conformance-type":"import"},{"name":"opendaylight-arbitrary-bitmask-fields_2016-01-30","revision":"2016-01-30","schema":"/rests/modules/opendaylight-arbitrary-bitmask-fields?revision=2016-01-30","namespace":"urn:opendaylight:arbitrary:bitmask:fields","conformance-type":"import"},{"name":"ietf-udp-client_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-client?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-client","conformance-type":"import","feature":["local-binding"]},{"name":"opendaylight-meter-types_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/opendaylight-meter-types?revision=2013-09-18","namespace":"urn:opendaylight:meter:types","conformance-type":"import"},{"name":"opendaylight-action-types_2013-11-12","revision":"2013-11-12","schema":"/rests/modules/opendaylight-action-types?revision=2013-11-12","namespace":"urn:opendaylight:action:types","conformance-type":"import"},{"name":"sal-role_2015-07-27","revision":"2015-07-27","schema":"/rests/modules/sal-role?revision=2015-07-27","namespace":"urn:opendaylight:role:service","conformance-type":"import"},{"name":"openflow-provider-config_2016-05-10","revision":"2016-05-10","schema":"/rests/modules/openflow-provider-config?revision=2016-05-10","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:provider:config","conformance-type":"import"},{"name":"odl-serviceutils-upgrade_2018-07-02","revision":"2018-07-02","schema":"/rests/modules/odl-serviceutils-upgrade?revision=2018-07-02","namespace":"urn:opendaylight:serviceutils:upgrade","conformance-type":"import"},{"name":"opendaylight-match-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-match-types?revision=2013-10-26","namespace":"urn:opendaylight:model:match:types","conformance-type":"import"},{"name":"ietf-restconf-server_2024-08-14","revision":"2024-08-14","schema":"/rests/modules/ietf-restconf-server?revision=2024-08-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-server","conformance-type":"import","feature":["http-listen","https-listen"]},{"name":"reconciliation-result-state_2017-07-13","revision":"2017-07-13","schema":"/rests/modules/reconciliation-result-state?revision=2017-07-13","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:rf:state","conformance-type":"import"},{"name":"onf-extensions_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/onf-extensions?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf","conformance-type":"import"},{"name":"sal-table_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/sal-table?revision=2013-10-26","namespace":"urn:opendaylight:table:service","conformance-type":"import"},{"name":"iana-http-versions_2026-02-04","revision":"2026-02-04","schema":"/rests/modules/iana-http-versions?revision=2026-02-04","namespace":"urn:ietf:params:xml:ns:yang:iana-http-versions","conformance-type":"import"},{"name":"opendaylight-direct-statistics_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/opendaylight-direct-statistics?revision=2016-05-11","namespace":"urn:opendaylight:direct:statistics","conformance-type":"import"},{"name":"opendaylight-port-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-port-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:port","conformance-type":"import"},{"name":"sal-async-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/sal-async-config?revision=2017-06-19","namespace":"urn:opendaylight:async-config:service","conformance-type":"import"},{"name":"aaa-password-service-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-password-service-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:password:service:config","conformance-type":"import"},{"name":"ietf-yang-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-yang-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-types","conformance-type":"import"},{"name":"opendaylight-queue-statistics_2013-12-16","revision":"2013-12-16","schema":"/rests/modules/opendaylight-queue-statistics?revision=2013-12-16","namespace":"urn:opendaylight:queue:statistics","conformance-type":"import"},{"name":"sal-bundle_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/sal-bundle?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf:bundle:service","conformance-type":"import"},{"name":"ietf-restconf-subscribed-notifications_2019-11-17","revision":"2019-11-17","schema":"/rests/modules/ietf-restconf-subscribed-notifications?revision=2019-11-17","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-subscribed-notifications","conformance-type":"import"},{"name":"sal-meters-batch_2016-03-16","revision":"2016-03-16","schema":"/rests/modules/sal-meters-batch?revision=2016-03-16","namespace":"urn:opendaylight:meters:service","conformance-type":"import"},{"name":"odl-entity-owners","revision":"","schema":"/rests/modules/odl-entity-owners","namespace":"urn:opendaylight:params:xml:ns:yang:controller:entity-owners","conformance-type":"import"},{"name":"sal-experimenter-mp-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-mp-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-mp-message:service","conformance-type":"import"},{"name":"packet-processing_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/packet-processing?revision=2013-07-09","namespace":"urn:opendaylight:packet:service","conformance-type":"import"},{"name":"openflow-configuration_2014-06-30","revision":"2014-06-30","schema":"/rests/modules/openflow-configuration?revision=2014-06-30","namespace":"urn:opendaylight:openflow:config","conformance-type":"import"},{"name":"odl-srm-rpcs_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-rpcs?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:rpc","conformance-type":"import"},{"name":"ietf-netconf-acm_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-netconf-acm?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-acm","conformance-type":"import"},{"name":"iana-crypt-hash_2014-08-06","revision":"2014-08-06","schema":"/rests/modules/iana-crypt-hash?revision=2014-08-06","namespace":"urn:ietf:params:xml:ns:yang:iana-crypt-hash","conformance-type":"import","feature":["crypt-hash-sha-512","crypt-hash-sha-256","crypt-hash-md5"]},{"name":"openflow-extensible-match_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-extensible-match?revision=2015-02-25","namespace":"urn:opendaylight:openflow:oxm","conformance-type":"import"}],"module-set-id":"2"}}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:13.640441" elapsed="0.004947"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:13.639904" elapsed="0.005534"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:13.639855" elapsed="0.005618"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:13.648962" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:13.645913" elapsed="0.003113"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:13.645585" elapsed="0.003488"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:13.645560" elapsed="0.003547"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:13.649954" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:13.649402" elapsed="0.000589"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:13.650496" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:13.650138" elapsed="0.000439"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:13.651284" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:13.650835" elapsed="0.000486"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:13.650610" elapsed="0.000761"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:13.650110" elapsed="0.001291"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:13.652152" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:13.651651" elapsed="0.000565"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:13.652693" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:13.652342" elapsed="0.000432"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:13.653472" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:13.653028" elapsed="0.000484"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:13.652806" elapsed="0.000766"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:13.652315" elapsed="0.001289"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:51:13.653848" elapsed="0.000595"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:51:13.654980" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:13.654679" elapsed="0.000327"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:51:13.655194" elapsed="0.002169"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:51:13.638218" elapsed="0.019268"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:51:13.657831" elapsed="0.000046"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:51:13.657614" elapsed="0.000327"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:13.657564" elapsed="0.000414"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:51:13.667007" level="INFO">${text_normalized} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:51:13.658728" elapsed="0.008329"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:51:13.667136" elapsed="0.000085"/>
</return>
<msg time="2026-04-08T00:51:13.667483" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:51:13.607723" elapsed="0.059868"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:51:13.668058" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:51:13.668325" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="PASS" start="2026-04-08T00:51:13.463863" elapsed="0.204489"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Json_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:13.668681" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:13.668438" elapsed="0.000433"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:13.668419" elapsed="0.000480"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:51:13.668933" elapsed="0.000027"/>
</return>
<arg>session=${session}</arg>
<arg>folder=${RESTCONF_MODULES_DIR}</arg>
<arg>verify=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Add arguments sensible for JSON data, return Get_Templated response text.
Optionally, verification against JSON data (may be iterated) is called.
Only subset of JSON data is verified and returned if JMES path is specified in
file ${folder}/jmespath.expr.</doc>
<status status="PASS" start="2026-04-08T00:51:13.459820" elapsed="0.209242"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:13.455773" elapsed="0.213333"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:13.455755" elapsed="0.213376"/>
</if>
<kw name="Resolve_Shard_Type_Class" owner="ClusterManagement">
<if>
<branch type="IF" condition="'${shard_type}' == 'config'">
<return>
<value>DistributedConfigDatastore</value>
<status status="PASS" start="2026-04-08T00:51:13.669757" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-08T00:51:13.669650" elapsed="0.000167"/>
</branch>
<branch type="ELSE IF" condition="'${shard_type}' == 'operational'">
<return>
<value>DistributedOperationalDatastore</value>
<status status="NOT RUN" start="2026-04-08T00:51:13.669878" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:51:13.669841" elapsed="0.000076"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:13.669632" elapsed="0.000307"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized shard type: ${shard_type}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:13.670098" elapsed="0.000022"/>
</kw>
<msg time="2026-04-08T00:51:13.670235" level="INFO">${type_class} = DistributedConfigDatastore</msg>
<var>${type_class}</var>
<arg>shard_type=${shard_type}</arg>
<doc>Simple lookup for class name corresponding to desired type.</doc>
<status status="PASS" start="2026-04-08T00:51:13.669378" elapsed="0.000883"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:13.670820" level="INFO">${cluster_index} = 2</msg>
<var>${cluster_index}</var>
<arg>${member_index}+${NODE_ROLE_INDEX_START}-1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:13.670431" elapsed="0.000422"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:13.671492" level="INFO">${uri} = jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-inventory-config,type=DistributedConfigDatastore</msg>
<var>${uri}</var>
<arg>${JOLOKIA_READ_URI}:Category=Shards,name=member-${cluster_index}-shard-${shard_name}-${shard_type},type=${type_class}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:13.671010" elapsed="0.000509"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:13.677035" level="INFO">jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-inventory-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:13.676595" elapsed="0.000487"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:13.677683" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:13.677250" elapsed="0.000478"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:51:13.695672" level="INFO">GET Request : url=http://10.30.170.131:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-inventory-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-inventory-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:51:13.695809" level="INFO">GET Response : url=http://10.30.170.131:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-inventory-config,type=DistributedConfigDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Wed, 08 Apr 2026 00:51:13 GMT', 'Expires': 'Tue, 07 Apr 2026 23:51:13 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-2-shard-inventory-config,type=DistributedConfigDatastore","type":"read"},"value":{"ReadWriteTransactionCount":0,"SnapshotIndex":10,"InMemoryJournalLogSize":1,"ReplicatedToAllIndex":10,"Leader":"member-1-shard-inventory-config","LastIndex":11,"RaftState":"Follower","LastCommittedTransactionTime":"1970-01-01 00:00:00.000","LastApplied":11,"PeerAddresses":"member-1-shard-inventory-config: pekko:\/\/opendaylight-cluster-data@10.30.170.48:2550\/user\/shardmanager-config\/member-1-shard-inventory-config, member-3-shard-inventory-config: pekko:\/\/opendaylight-cluster-data@10.30.171.110:2550\/user\/shardmanager-config\/member-3-shard-inventory-config","LastLogIndex":11,"LastLeadershipChangeTime":"2026-04-08 00:46:45.970","FollowerInitialSyncStatus":true,"FollowerInfo":[],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"286.3 μs","CurrentTerm":2,"LastTerm":2,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-inventory-config","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":0,"TxCohortCacheSize":0,"PeerVotingStates":"member-1-shard-inventory-config: true, member-3-shard-inventory-config: true","LastLogTerm":2,"StatRetrievalError":null,"CommitIndex":11,"SnapshotTerm":2,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-2-shard-inventory-config","LeadershipChangeCount":1,"InMemoryJournalDataSize":444},"timestamp":1775609473,"status":200} 
 </msg>
<msg time="2026-04-08T00:51:13.696013" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:51:13.688374" elapsed="0.007745"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:13.677796" elapsed="0.018595"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:13.696585" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:13.696424" elapsed="0.000475"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:13.677777" elapsed="0.019148"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:13.703398" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-2-shard-inventory-config,type=DistributedConfigDatastore","type":"read"},"value":{"ReadWriteTransactionCount":0,"SnapshotIndex":10,"InMemoryJournalLogSize":1,"ReplicatedToAllIndex":10,"Leader":"member-1-shard-inventory-config","LastIndex":11,"RaftState":"Follower","LastCommittedTransactionTime":"1970-01-01 00:00:00.000","LastApplied":11,"PeerAddresses":"member-1-shard-inventory-config: pekko:\/\/opendaylight-cluster-data@10.30.170.48:2550\/user\/shardmanager-config\/member-1-shard-inventory-config, member-3-shard-inventory-config: pekko:\/\/opendaylight-cluster-data@10.30.171.110:2550\/user\/shardmanager-config\/member-3-shard-inventory-config","LastLogIndex":11,"LastLeadershipChangeTime":"2026-04-08 00:46:45.970","FollowerInitialSyncStatus":true,"FollowerInfo":[],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"286.3 μs","CurrentTerm":2,"LastTerm":2,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-inventory-config","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":0,"TxCohortCacheSize":0,"PeerVotingStates":"member-1-shard-inventory-config: true, member-3-shard-inventory-config: true","LastLogTerm":2,"StatRetrievalError":null,"CommitIndex":11,"SnapshotTerm":2,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-2-shard-inventory-config","LeadershipChangeCount":1,"InMemoryJournalDataSize":444},"timestamp":1775609473,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:13.699641" elapsed="0.003991"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:13.698435" elapsed="0.005269"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:13.698414" elapsed="0.005345"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:13.708867" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:13.705215" elapsed="0.003780"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:13.703902" elapsed="0.005155"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:13.703856" elapsed="0.005251"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:13.710845" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:13.709829" elapsed="0.001106"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:13.711714" elapsed="0.000041"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:13.711129" elapsed="0.000693"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:13.712946" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:13.712316" elapsed="0.000693"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:13.711872" elapsed="0.001206"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:13.711105" elapsed="0.002022"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:13.714972" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:13.713989" elapsed="0.001047"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:13.715737" elapsed="0.000038"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:13.715228" elapsed="0.000611"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:13.716983" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:13.716469" elapsed="0.000561"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:13.715889" elapsed="0.001193"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:13.715205" elapsed="0.001913"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:51:13.717374" elapsed="0.000669"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:51:13.718881" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:13.718369" elapsed="0.000576"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:51:13.719242" elapsed="0.002808"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:51:13.697649" elapsed="0.024598"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:51:13.722465" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:51:13.722324" elapsed="0.000188"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:13.722305" elapsed="0.000229"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:51:13.726068" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-2-shard-inventory-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 177560...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:51:13.722682" elapsed="0.003416"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:51:13.726150" elapsed="0.000153"/>
</return>
<msg time="2026-04-08T00:51:13.726446" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-2-shard-inventory-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 177560...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:51:13.672478" elapsed="0.053996"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:51:13.726646" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:51:13.726805" level="INFO">${data_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-2-shard-inventory-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 177560...</msg>
<var>${data_text}</var>
<arg>uri=${uri}</arg>
<arg>session=${session}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-08T00:51:13.671731" elapsed="0.055101"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:13.727940" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-2-shard-inventory-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1775609473, 'valu...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:13.727458" elapsed="0.000512"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-08T00:51:13.728020" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:51:13.728212" level="INFO">${data_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-2-shard-inventory-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1775609473, 'valu...</msg>
<var>${data_object}</var>
<arg>${data_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-08T00:51:13.727075" elapsed="0.001166"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:51:13.728600" level="INFO">${value} = {'AbortTransactionsCount': 0, 'CommitIndex': 11, 'CommittedTransactionsCount': 0, 'CurrentTerm': 2, 'FailedReadTransactionsCount': 0, 'FailedTransactionsCount': 0, 'FollowerInfo': [], 'FollowerInitial...</msg>
<var>${value}</var>
<arg>${data_object}</arg>
<arg>value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:51:13.728398" elapsed="0.000229"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:51:13.728981" level="INFO">${raft_property} = Follower</msg>
<var>${raft_property}</var>
<arg>${value}</arg>
<arg>${property}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:51:13.728781" elapsed="0.000226"/>
</kw>
<return>
<value>${raft_property}</value>
<status status="PASS" start="2026-04-08T00:51:13.729053" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:51:13.729222" level="INFO">${raft_state} = Follower</msg>
<var>${raft_state}</var>
<arg>RaftState</arg>
<arg>${shard_name}</arg>
<arg>${shard_type}</arg>
<arg>${member_index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft property.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T00:51:13.454074" elapsed="0.275174"/>
</kw>
<return>
<value>${raft_state}</value>
<status status="PASS" start="2026-04-08T00:51:13.729306" elapsed="0.000025"/>
</return>
<msg time="2026-04-08T00:51:13.729459" level="INFO">${raft_state} = Follower</msg>
<var>${raft_state}</var>
<arg>shard_name=${shard_name}</arg>
<arg>shard_type=${ds_type}</arg>
<arg>member_index=${index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft status.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T00:51:13.453364" elapsed="0.276120"/>
</kw>
<if>
<branch type="IF" condition="'Follower' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${follower_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-08T00:51:13.729782" elapsed="0.000232"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:13.729565" elapsed="0.000493"/>
</branch>
<branch type="ELSE IF" condition="'Leader' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${leader_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:13.730245" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:13.730083" elapsed="0.000217"/>
</branch>
<branch type="ELSE IF" condition="${validate}">
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized Raft state: ${raft_state}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:13.730465" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:13.730324" elapsed="0.000191"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:13.729547" elapsed="0.000989"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T00:51:13.453129" elapsed="0.277431"/>
</iter>
<iter>
<kw name="Get_Raft_State_Of_Shard_At_Member" owner="ClusterManagement">
<kw name="Get_Raft_Property_From_Shard_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:13.733007" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:13.732683" elapsed="0.000352"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:51:13.733080" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:51:13.733242" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:51:13.732342" elapsed="0.000925"/>
</kw>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Get_As_Json_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:13.816192" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:13.815777" elapsed="0.000450"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:51:13.817013" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:51:13.816740" elapsed="0.000356">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-08T00:51:13.817286" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:51:13.816400" elapsed="0.000912"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:51:13.817871" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:51:13.817481" elapsed="0.000418"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T00:51:13.818258" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-08T00:51:13.818423" level="INFO">${template} = /rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T00:51:13.818091" elapsed="0.000358"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:13.818855" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:13.818607" elapsed="0.000293"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:13.819887" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:13.819634" elapsed="0.000298"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-08T00:51:13.820428" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-08T00:51:13.820091" elapsed="0.000365"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:13.820814" elapsed="0.000039"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:13.821054" elapsed="0.000024"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:13.821248" elapsed="0.000022"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-08T00:51:13.820660" elapsed="0.000648"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-08T00:51:13.820512" elapsed="0.000827"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-08T00:51:13.821388" elapsed="0.000033"/>
</return>
<msg time="2026-04-08T00:51:13.821554" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-08T00:51:13.819308" elapsed="0.002272"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:13.818982" elapsed="0.002630"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:13.821784" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:13.821637" elapsed="0.000203"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:13.818956" elapsed="0.003039"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:13.822611" level="INFO">${final_text} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:13.822150" elapsed="0.000489"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T00:51:13.822687" elapsed="0.000028"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="PASS" start="2026-04-08T00:51:13.815053" elapsed="0.007755"/>
</kw>
<msg time="2026-04-08T00:51:13.822861" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:51:13.802534" elapsed="0.020411"/>
</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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:13.835427" elapsed="0.000043"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:13.847715" elapsed="0.000042"/>
</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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:13.859670" elapsed="0.000040"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:13.860441" elapsed="0.000037"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:13.861197" elapsed="0.000036"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:13.861755" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:13.861608" elapsed="0.000203"/>
</branch>
<status status="NOT RUN" start="2026-04-08T00:51:13.861590" elapsed="0.000244"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:13.862016" elapsed="0.000022"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:13.862221" elapsed="0.000022"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:13.862408" elapsed="0.000022"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-08T00:51:13.861541" elapsed="0.000943"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-08T00:51:13.861316" elapsed="0.001208"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:13.863243" elapsed="0.000036"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-08T00:51:13.863363" elapsed="0.000047"/>
</return>
<msg time="2026-04-08T00:51:13.863586" level="INFO">${uri} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-08T00:51:13.796119" elapsed="0.067572"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:51:13.866580" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:51:13.866315" elapsed="0.000334">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-08T00:51:13.866839" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:51:13.865829" elapsed="0.001055"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:13.867416" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:13.867015" elapsed="0.000470"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:13.868096" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:13.867798" elapsed="0.000325"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:13.867523" elapsed="0.000662"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:13.866965" elapsed="0.001263"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:51:13.871452" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:51:13.868972" elapsed="0.002526"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-08T00:51:13.871575" elapsed="0.000063"/>
</return>
<msg time="2026-04-08T00:51:13.871887" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:51:13.864695" elapsed="0.007297"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:51:13.874842" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:51:13.874596" elapsed="0.000310">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-08T00:51:13.875133" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:51:13.874134" elapsed="0.001061"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-08T00:51:13.875596" elapsed="0.000081"/>
</return>
<status status="PASS" start="2026-04-08T00:51:13.875330" elapsed="0.000415"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:13.875279" elapsed="0.000505"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:13.876530" elapsed="0.000039"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:13.877398" elapsed="0.000038"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-08T00:51:13.877522" elapsed="0.000050"/>
</return>
<msg time="2026-04-08T00:51:13.879771" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:51:13.872862" elapsed="0.007030"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:13.883880" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:13.883487" elapsed="0.000495"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:13.885111" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:13.884700" elapsed="0.000683"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:51:13.903868" level="INFO">GET Request : url=http://10.30.171.110:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 path_url=/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0u16rl3earouwvehy59feej101.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:51:13.904853" level="INFO">GET Response : url=http://10.30.171.110:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Transfer-Encoding': 'chunked'} 
 body={"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","hidden-symmetric-keys","encrypted-private-keys","asymmetrically-encrypted-value-format","cms-encrypted-data-format","cleartext-private-keys","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["ssh-client-keepalives","client-ident-hostbased","client-ident-publickey","client-ident-password"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-ex... (set the log level to DEBUG or TRACE to see the full content) 
 </msg>
<msg time="2026-04-08T00:51:13.905356" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:51:13.887636" elapsed="0.017784"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:13.885523" elapsed="0.020045"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:13.906381" elapsed="0.000059"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:13.905674" elapsed="0.000906"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:13.885468" elapsed="0.021203"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:13.914174" level="INFO">{"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","hidden-symmetric-keys","encrypted-private-keys","asymmetrically-encrypted-value-format","cms-encrypted-data-format","cleartext-private-keys","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["ssh-client-keepalives","client-ident-hostbased","client-ident-publickey","client-ident-password"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-experimenter-types?revision=2015-10-20","namespace":"urn:opendaylight:openflowplugin:experimenter:types","conformance-type":"import"},{"name":"ietf-ip_2018-02-22","revision":"2018-02-22","schema":"/rests/modules/ietf-ip?revision=2018-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-ip","conformance-type":"import","feature":["ipv6-privacy-autoconf","ipv4-non-contiguous-netmasks"]},{"name":"ietf-tcp-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-client","conformance-type":"import","feature":["local-binding-supported","tcp-client-keepalives"]},{"name":"node-config_2014-10-15","revision":"2014-10-15","schema":"/rests/modules/node-config?revision=2014-10-15","namespace":"urn:opendaylight:module:config","conformance-type":"import"},{"name":"ietf-restconf_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf","conformance-type":"import"},{"name":"ietf-datastores_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-datastores?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-datastores","conformance-type":"import"},{"name":"ietf-yang-patch_2017-02-22","revision":"2017-02-22","schema":"/rests/modules/ietf-yang-patch?revision=2017-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-patch","conformance-type":"import"},{"name":"sal-group_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-group?revision=2013-09-18","namespace":"urn:opendaylight:group:service","conformance-type":"import"},{"name":"odl-codegen-extensions_2024-06-27","revision":"2024-06-27","schema":"/rests/modules/odl-codegen-extensions?revision=2024-06-27","namespace":"urn:opendaylight:yang:extension:codegen","conformance-type":"import"},{"name":"sal-meter_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-meter?revision=2013-09-18","namespace":"urn:opendaylight:meter:service","conformance-type":"import"},{"name":"ietf-interfaces_2018-02-20","revision":"2018-02-20","schema":"/rests/modules/ietf-interfaces?revision=2018-02-20","namespace":"urn:ietf:params:xml:ns:yang:ietf-interfaces","conformance-type":"import","feature":["pre-provisioning","if-mib","arbitrary-names"]},{"name":"opendaylight-l2-types_2013-08-27","revision":"2013-08-27","schema":"/rests/modules/opendaylight-l2-types?revision=2013-08-27","namespace":"urn:opendaylight:l2:types","conformance-type":"import"},{"name":"opendaylight-flow-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-flow-types?revision=2013-10-26","namespace":"urn:opendaylight:flow:types","conformance-type":"import"},{"name":"lldp-speaker-config_2016-05-12","revision":"2016-05-12","schema":"/rests/modules/lldp-speaker-config?revision=2016-05-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker:config","conformance-type":"import"},{"name":"aaa-cert_2015-11-26","revision":"2015-11-26","schema":"/rests/modules/aaa-cert?revision=2015-11-26","namespace":"urn:opendaylight:yang:aaa:cert","conformance-type":"import"},{"name":"openflow-action_2015-02-03","revision":"2015-02-03","schema":"/rests/modules/openflow-action?revision=2015-02-03","namespace":"urn:opendaylight:openflow:common:action","conformance-type":"import"},{"name":"openflow-approved-extensions_2016-08-02","revision":"2016-08-02","schema":"/rests/modules/openflow-approved-extensions?revision=2016-08-02","namespace":"urn:opendaylight:openflow:approved:extensions","conformance-type":"import"},{"name":"nc-notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/nc-notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netmod:notification","conformance-type":"import"},{"name":"ietf-netconf-nmda_2019-01-07","revision":"2019-01-07","schema":"/rests/modules/ietf-netconf-nmda?revision=2019-01-07","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-nmda","conformance-type":"import","feature":["with-defaults","origin"]},{"name":"ietf-tcp-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-common","conformance-type":"import","feature":["keepalives-supported"]},{"name":"network-topology_2013-10-21","revision":"2013-10-21","schema":"/rests/modules/network-topology?revision=2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:network-topology","conformance-type":"import"},{"name":"aaa-encrypt-service-config_2024-02-02","revision":"2024-02-02","schema":"/rests/modules/aaa-encrypt-service-config?revision=2024-02-02","namespace":"config:aaa:authn:encrypt:service:config","conformance-type":"import"},{"name":"openflow-instruction_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-instruction?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:instruction","conformance-type":"import"},{"name":"ietf-tls-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-client","conformance-type":"import","feature":["client-ident-x509-cert","server-auth-x509-cert"]},{"name":"opendaylight-group-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-group-statistics?revision=2013-11-11","namespace":"urn:opendaylight:group:statistics","conformance-type":"import"},{"name":"cluster-admin_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/cluster-admin?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:cluster:admin","conformance-type":"import"},{"name":"opendaylight-flow-statistics_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-flow-statistics?revision=2013-08-19","namespace":"urn:opendaylight:flow:statistics","conformance-type":"import"},{"name":"opendaylight-table-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-table-types?revision=2013-10-26","namespace":"urn:opendaylight:table:types","conformance-type":"import"},{"name":"forwarding-rules-manager-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/forwarding-rules-manager-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:forwardingrules-manager:config","conformance-type":"import"},{"name":"odl-srm-types_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-types?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:types","conformance-type":"import"},{"name":"ietf-x509-cert-to-name_2014-12-10","revision":"2014-12-10","schema":"/rests/modules/ietf-x509-cert-to-name?revision=2014-12-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-x509-cert-to-name","conformance-type":"import"},{"name":"flow-node-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-node-inventory?revision=2013-08-19","namespace":"urn:opendaylight:flow:inventory","conformance-type":"import"},{"name":"flow-errors_2013-11-16","revision":"2013-11-16","schema":"/rests/modules/flow-errors?revision=2013-11-16","namespace":"urn:opendaylight:flow:errors","conformance-type":"import"},{"name":"ietf-netconf_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:netconf:base:1.0","conformance-type":"import","feature":["xpath","url","rollback-on-error","validate","startup","candidate","confirmed-commit","writable-running"]},{"name":"iana-ssh-public-key-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-public-key-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-public-key-algs","conformance-type":"import"},{"name":"aaa-cert-mdsal_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/aaa-cert-mdsal?revision=2016-03-21","namespace":"urn:opendaylight:yang:aaa:cert:mdsal","conformance-type":"import"},{"name":"odl-device-notification_2024-02-18","revision":"2024-02-18","schema":"/rests/modules/odl-device-notification?revision=2024-02-18","namespace":"urn:opendaylight:device:notification","conformance-type":"import"},{"name":"ietf-origin_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-origin?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-origin","conformance-type":"import"},{"name":"openflow-augments_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-augments?revision=2015-02-25","namespace":"urn:opendaylight:openflow:augments","conformance-type":"import"},{"name":"iana-ssh-encryption-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-encryption-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-encryption-algs","conformance-type":"import"},{"name":"ietf-truststore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-truststore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-truststore","conformance-type":"import","feature":["inline-definitions-supported"]},{"name":"distributed-datastore-provider_2025-01-30","revision":"2025-01-30","schema":"/rests/modules/distributed-datastore-provider?revision=2025-01-30","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:distributed-datastore-provider","conformance-type":"import"},{"name":"opendaylight-group-types_2013-10-18","revision":"2013-10-18","schema":"/rests/modules/opendaylight-group-types?revision=2013-10-18","namespace":"urn:opendaylight:group:types","conformance-type":"import"},{"name":"sal-remote-augment_2023-11-03","revision":"2023-11-03","schema":"/rests/modules/sal-remote-augment?revision=2023-11-03","namespace":"urn:sal:restconf:event:subscription","conformance-type":"import"},{"name":"opendaylight-ipv6-arbitrary-bitmask-fields_2016-02-24","revision":"2016-02-24","schema":"/rests/modules/opendaylight-ipv6-arbitrary-bitmask-fields?revision=2016-02-24","namespace":"urn:opendaylight:opendaylight-ipv6-arbitrary-bitmask-fields","conformance-type":"import"},{"name":"sal-flows-batch_2016-03-14","revision":"2016-03-14","schema":"/rests/modules/sal-flows-batch?revision=2016-03-14","namespace":"urn:opendaylight:flows:service","conformance-type":"import"},{"name":"ietf-tls-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-common","conformance-type":"import","feature":["tls12","hello-params","tls13"]},{"name":"openflow-types_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-types?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:types","conformance-type":"import"},{"name":"ietf-netconf-with-defaults_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf-with-defaults?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults","conformance-type":"import"},{"name":"odl-srm-ops_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-ops?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:ops","conformance-type":"import"},{"name":"odl-general-entity_2015-09-30","revision":"2015-09-30","schema":"/rests/modules/odl-general-entity?revision=2015-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:mdsal:core:general-entity","conformance-type":"import"},{"name":"iana-ssh-key-exchange-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-key-exchange-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-key-exchange-algs","conformance-type":"import"},{"name":"node-ssl-connection-error_2019-07-23","revision":"2019-07-23","schema":"/rests/modules/node-ssl-connection-error?revision=2019-07-23","namespace":"urn:opendaylight:node-ssl-connection-error:service","conformance-type":"import"},{"name":"openflow-protocol_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-protocol?revision=2013-07-31","namespace":"urn:opendaylight:openflow:protocol","conformance-type":"import"},{"name":"ietf-udp-server_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-server?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-server","conformance-type":"import"},{"name":"ietf-keystore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-keystore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-keystore","conformance-type":"import","feature":["asymmetric-keys","inline-definitions-supported"]},{"name":"aaa_2016-12-14","revision":"2016-12-14","schema":"/rests/modules/aaa?revision=2016-12-14","namespace":"urn:opendaylight:params:xml:ns:yang:aaa","conformance-type":"import"},{"name":"aaa-cert-rpc_2015-12-15","revision":"2015-12-15","schema":"/rests/modules/aaa-cert-rpc?revision=2015-12-15","namespace":"urn:opendaylight:yang:aaa:cert:rpc","conformance-type":"import"},{"name":"system-notifications_2013-09-27","revision":"2013-09-27","schema":"/rests/modules/system-notifications?revision=2013-09-27","namespace":"urn:opendaylight:openflow:system","conformance-type":"import"},{"name":"sal-flat-batch_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/sal-flat-batch?revision=2016-03-21","namespace":"urn:opendaylight:flat-batch:service","conformance-type":"import"},{"name":"notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netconf:notification:1.0","conformance-type":"import"},{"name":"sal-remote_2014-01-14","revision":"2014-01-14","schema":"/rests/modules/sal-remote?revision=2014-01-14","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:remote","conformance-type":"import"},{"name":"yang-ext_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/yang-ext?revision=2013-07-09","namespace":"urn:opendaylight:yang:extension:yang-ext","conformance-type":"import"},{"name":"opendaylight-multipart-types_2017-01-12","revision":"2017-01-12","schema":"/rests/modules/opendaylight-multipart-types?revision=2017-01-12","namespace":"urn:opendaylight:multipart:types","conformance-type":"import"},{"name":"opendaylight-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-inventory?revision=2013-08-19","namespace":"urn:opendaylight:inventory","conformance-type":"import"},{"name":"sal-queue_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-queue?revision=2015-03-05","namespace":"urn:opendaylight:queue:service","conformance-type":"import"},{"name":"sal-groups-batch_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/sal-groups-batch?revision=2016-03-15","namespace":"urn:opendaylight:groups:service","conformance-type":"import"},{"name":"arbitrator-reconcile_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/arbitrator-reconcile?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:arbitrator-reconcile:service","conformance-type":"import"},{"name":"ietf-yang-metadata_2016-08-05","revision":"2016-08-05","schema":"/rests/modules/ietf-yang-metadata?revision=2016-08-05","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-metadata","conformance-type":"import"},{"name":"opendaylight-arbitrary-bitmask-fields_2016-01-30","revision":"2016-01-30","schema":"/rests/modules/opendaylight-arbitrary-bitmask-fields?revision=2016-01-30","namespace":"urn:opendaylight:arbitrary:bitmask:fields","conformance-type":"import"},{"name":"ietf-udp-client_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-client?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-client","conformance-type":"import","feature":["local-binding"]},{"name":"opendaylight-meter-types_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/opendaylight-meter-types?revision=2013-09-18","namespace":"urn:opendaylight:meter:types","conformance-type":"import"},{"name":"opendaylight-action-types_2013-11-12","revision":"2013-11-12","schema":"/rests/modules/opendaylight-action-types?revision=2013-11-12","namespace":"urn:opendaylight:action:types","conformance-type":"import"},{"name":"sal-role_2015-07-27","revision":"2015-07-27","schema":"/rests/modules/sal-role?revision=2015-07-27","namespace":"urn:opendaylight:role:service","conformance-type":"import"},{"name":"openflow-provider-config_2016-05-10","revision":"2016-05-10","schema":"/rests/modules/openflow-provider-config?revision=2016-05-10","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:provider:config","conformance-type":"import"},{"name":"odl-serviceutils-upgrade_2018-07-02","revision":"2018-07-02","schema":"/rests/modules/odl-serviceutils-upgrade?revision=2018-07-02","namespace":"urn:opendaylight:serviceutils:upgrade","conformance-type":"import"},{"name":"opendaylight-match-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-match-types?revision=2013-10-26","namespace":"urn:opendaylight:model:match:types","conformance-type":"import"},{"name":"ietf-restconf-server_2024-08-14","revision":"2024-08-14","schema":"/rests/modules/ietf-restconf-server?revision=2024-08-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-server","conformance-type":"import","feature":["http-listen","https-listen"]},{"name":"reconciliation-result-state_2017-07-13","revision":"2017-07-13","schema":"/rests/modules/reconciliation-result-state?revision=2017-07-13","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:rf:state","conformance-type":"import"},{"name":"onf-extensions_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/onf-extensions?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf","conformance-type":"import"},{"name":"sal-table_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/sal-table?revision=2013-10-26","namespace":"urn:opendaylight:table:service","conformance-type":"import"},{"name":"iana-http-versions_2026-02-04","revision":"2026-02-04","schema":"/rests/modules/iana-http-versions?revision=2026-02-04","namespace":"urn:ietf:params:xml:ns:yang:iana-http-versions","conformance-type":"import"},{"name":"opendaylight-direct-statistics_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/opendaylight-direct-statistics?revision=2016-05-11","namespace":"urn:opendaylight:direct:statistics","conformance-type":"import"},{"name":"opendaylight-port-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-port-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:port","conformance-type":"import"},{"name":"sal-async-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/sal-async-config?revision=2017-06-19","namespace":"urn:opendaylight:async-config:service","conformance-type":"import"},{"name":"aaa-password-service-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-password-service-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:password:service:config","conformance-type":"import"},{"name":"ietf-yang-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-yang-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-types","conformance-type":"import"},{"name":"opendaylight-queue-statistics_2013-12-16","revision":"2013-12-16","schema":"/rests/modules/opendaylight-queue-statistics?revision=2013-12-16","namespace":"urn:opendaylight:queue:statistics","conformance-type":"import"},{"name":"sal-bundle_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/sal-bundle?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf:bundle:service","conformance-type":"import"},{"name":"ietf-restconf-subscribed-notifications_2019-11-17","revision":"2019-11-17","schema":"/rests/modules/ietf-restconf-subscribed-notifications?revision=2019-11-17","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-subscribed-notifications","conformance-type":"import"},{"name":"sal-meters-batch_2016-03-16","revision":"2016-03-16","schema":"/rests/modules/sal-meters-batch?revision=2016-03-16","namespace":"urn:opendaylight:meters:service","conformance-type":"import"},{"name":"odl-entity-owners","revision":"","schema":"/rests/modules/odl-entity-owners","namespace":"urn:opendaylight:params:xml:ns:yang:controller:entity-owners","conformance-type":"import"},{"name":"sal-experimenter-mp-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-mp-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-mp-message:service","conformance-type":"import"},{"name":"packet-processing_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/packet-processing?revision=2013-07-09","namespace":"urn:opendaylight:packet:service","conformance-type":"import"},{"name":"openflow-configuration_2014-06-30","revision":"2014-06-30","schema":"/rests/modules/openflow-configuration?revision=2014-06-30","namespace":"urn:opendaylight:openflow:config","conformance-type":"import"},{"name":"odl-srm-rpcs_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-rpcs?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:rpc","conformance-type":"import"},{"name":"ietf-netconf-acm_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-netconf-acm?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-acm","conformance-type":"import"},{"name":"iana-crypt-hash_2014-08-06","revision":"2014-08-06","schema":"/rests/modules/iana-crypt-hash?revision=2014-08-06","namespace":"urn:ietf:params:xml:ns:yang:iana-crypt-hash","conformance-type":"import","feature":["crypt-hash-sha-512","crypt-hash-sha-256","crypt-hash-md5"]},{"name":"openflow-extensible-match_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-extensible-match?revision=2015-02-25","namespace":"urn:opendaylight:openflow:oxm","conformance-type":"import"}],"module-set-id":"2"}}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:13.910548" elapsed="0.004185"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:13.910104" elapsed="0.004679"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:13.910053" elapsed="0.004764"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:13.918407" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:13.915295" elapsed="0.003188"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:13.914931" elapsed="0.003603"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:13.914906" elapsed="0.003663"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:13.919507" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:13.918841" elapsed="0.000715"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:13.920058" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:13.919714" elapsed="0.000426"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:13.920871" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:13.920427" elapsed="0.000482"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:13.920198" elapsed="0.000761"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:13.919683" elapsed="0.001307"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:13.921800" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:13.921267" elapsed="0.000572"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:13.922428" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:13.922061" elapsed="0.000440"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:13.922987" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:13.922684" elapsed="0.000329"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:13.922525" elapsed="0.000524"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:13.922028" elapsed="0.001042"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:51:13.923260" elapsed="0.000350"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:51:13.924093" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:13.923796" elapsed="0.000323"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:51:13.924310" elapsed="0.002182"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:51:13.908404" elapsed="0.018214"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:51:13.926968" elapsed="0.000047"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:51:13.926747" elapsed="0.000333"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:13.926696" elapsed="0.000421"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:51:13.937941" level="INFO">${text_normalized} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:51:13.927854" elapsed="0.010139"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:51:13.938072" elapsed="0.000070"/>
</return>
<msg time="2026-04-08T00:51:13.938421" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:51:13.880650" elapsed="0.057880"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:51:13.939036" elapsed="0.000033"/>
</return>
<msg time="2026-04-08T00:51:13.939250" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="PASS" start="2026-04-08T00:51:13.741504" elapsed="0.197774"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Json_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:13.939626" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:13.939363" elapsed="0.000459"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:13.939345" elapsed="0.000505"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:51:13.939884" elapsed="0.000027"/>
</return>
<arg>session=${session}</arg>
<arg>folder=${RESTCONF_MODULES_DIR}</arg>
<arg>verify=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Add arguments sensible for JSON data, return Get_Templated response text.
Optionally, verification against JSON data (may be iterated) is called.
Only subset of JSON data is verified and returned if JMES path is specified in
file ${folder}/jmespath.expr.</doc>
<status status="PASS" start="2026-04-08T00:51:13.737456" elapsed="0.202553"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:13.733335" elapsed="0.206717"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:13.733317" elapsed="0.206758"/>
</if>
<kw name="Resolve_Shard_Type_Class" owner="ClusterManagement">
<if>
<branch type="IF" condition="'${shard_type}' == 'config'">
<return>
<value>DistributedConfigDatastore</value>
<status status="PASS" start="2026-04-08T00:51:13.940702" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-08T00:51:13.940595" elapsed="0.000166"/>
</branch>
<branch type="ELSE IF" condition="'${shard_type}' == 'operational'">
<return>
<value>DistributedOperationalDatastore</value>
<status status="NOT RUN" start="2026-04-08T00:51:13.940821" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:51:13.940784" elapsed="0.000076"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:13.940576" elapsed="0.000306"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized shard type: ${shard_type}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:13.941027" elapsed="0.000021"/>
</kw>
<msg time="2026-04-08T00:51:13.941145" level="INFO">${type_class} = DistributedConfigDatastore</msg>
<var>${type_class}</var>
<arg>shard_type=${shard_type}</arg>
<doc>Simple lookup for class name corresponding to desired type.</doc>
<status status="PASS" start="2026-04-08T00:51:13.940319" elapsed="0.000869"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:13.941737" level="INFO">${cluster_index} = 3</msg>
<var>${cluster_index}</var>
<arg>${member_index}+${NODE_ROLE_INDEX_START}-1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:13.941358" elapsed="0.000413"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:13.942437" level="INFO">${uri} = jolokia/read/org.opendaylight.controller:Category=Shards,name=member-3-shard-inventory-config,type=DistributedConfigDatastore</msg>
<var>${uri}</var>
<arg>${JOLOKIA_READ_URI}:Category=Shards,name=member-${cluster_index}-shard-${shard_name}-${shard_type},type=${type_class}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:13.941952" elapsed="0.000512"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:13.948040" level="INFO">jolokia/read/org.opendaylight.controller:Category=Shards,name=member-3-shard-inventory-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:13.947600" elapsed="0.000487"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:13.948697" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:13.948264" elapsed="0.000478"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:51:13.966102" level="INFO">GET Request : url=http://10.30.171.110:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-3-shard-inventory-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-3-shard-inventory-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:51:13.966256" level="INFO">GET Response : url=http://10.30.171.110:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-3-shard-inventory-config,type=DistributedConfigDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Wed, 08 Apr 2026 00:51:13 GMT', 'Expires': 'Tue, 07 Apr 2026 23:51:13 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-3-shard-inventory-config,type=DistributedConfigDatastore","type":"read"},"value":{"ReadWriteTransactionCount":0,"SnapshotIndex":10,"InMemoryJournalLogSize":1,"ReplicatedToAllIndex":10,"Leader":"member-1-shard-inventory-config","LastIndex":11,"RaftState":"Follower","LastApplied":11,"LastCommittedTransactionTime":"1970-01-01 00:00:00.000","PeerAddresses":"member-1-shard-inventory-config: pekko:\/\/opendaylight-cluster-data@10.30.170.48:2550\/user\/shardmanager-config\/member-1-shard-inventory-config, member-2-shard-inventory-config: pekko:\/\/opendaylight-cluster-data@10.30.170.131:2550\/user\/shardmanager-config\/member-2-shard-inventory-config","LastLogIndex":11,"LastLeadershipChangeTime":"2026-04-08 00:46:45.969","FollowerInitialSyncStatus":true,"FollowerInfo":[],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"225.7 μs","CurrentTerm":2,"LastTerm":2,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-inventory-config","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":0,"TxCohortCacheSize":0,"PeerVotingStates":"member-1-shard-inventory-config: true, member-2-shard-inventory-config: true","LastLogTerm":2,"StatRetrievalError":null,"CommitIndex":11,"SnapshotTerm":2,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-3-shard-inventory-config","LeadershipChangeCount":1,"InMemoryJournalDataSize":444},"timestamp":1775609473,"status":200} 
 </msg>
<msg time="2026-04-08T00:51:13.966479" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:51:13.959349" elapsed="0.007306"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:13.948811" elapsed="0.018194"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:13.967283" elapsed="0.000032"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:13.967047" elapsed="0.000673"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:13.948792" elapsed="0.018963"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:13.974587" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-3-shard-inventory-config,type=DistributedConfigDatastore","type":"read"},"value":{"ReadWriteTransactionCount":0,"SnapshotIndex":10,"InMemoryJournalLogSize":1,"ReplicatedToAllIndex":10,"Leader":"member-1-shard-inventory-config","LastIndex":11,"RaftState":"Follower","LastApplied":11,"LastCommittedTransactionTime":"1970-01-01 00:00:00.000","PeerAddresses":"member-1-shard-inventory-config: pekko:\/\/opendaylight-cluster-data@10.30.170.48:2550\/user\/shardmanager-config\/member-1-shard-inventory-config, member-2-shard-inventory-config: pekko:\/\/opendaylight-cluster-data@10.30.170.131:2550\/user\/shardmanager-config\/member-2-shard-inventory-config","LastLogIndex":11,"LastLeadershipChangeTime":"2026-04-08 00:46:45.969","FollowerInitialSyncStatus":true,"FollowerInfo":[],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"225.7 μs","CurrentTerm":2,"LastTerm":2,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-inventory-config","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":0,"TxCohortCacheSize":0,"PeerVotingStates":"member-1-shard-inventory-config: true, member-2-shard-inventory-config: true","LastLogTerm":2,"StatRetrievalError":null,"CommitIndex":11,"SnapshotTerm":2,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-3-shard-inventory-config","LeadershipChangeCount":1,"InMemoryJournalDataSize":444},"timestamp":1775609473,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:13.970902" elapsed="0.003889"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:13.969693" elapsed="0.005169"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:13.969666" elapsed="0.005250"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:13.979283" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:13.976319" elapsed="0.003062"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:13.975032" elapsed="0.004397"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:13.975007" elapsed="0.004460"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:13.980921" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:13.980079" elapsed="0.000904"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:13.981633" elapsed="0.000035"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:13.981148" elapsed="0.000570"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:13.982704" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:13.982112" elapsed="0.000638"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:13.981755" elapsed="0.001044"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:13.981127" elapsed="0.001707"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:13.984204" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:13.983454" elapsed="0.000811"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:13.984895" elapsed="0.000035"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:13.984430" elapsed="0.000550"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:13.985875" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:13.985357" elapsed="0.000564"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:13.985016" elapsed="0.000955"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:13.984410" elapsed="0.001596"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:51:13.986301" elapsed="0.000616"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:51:13.987724" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:13.987234" elapsed="0.000549"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:51:13.988063" elapsed="0.002427"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:51:13.968727" elapsed="0.021922"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:51:13.990849" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:51:13.990722" elapsed="0.000172"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:13.990702" elapsed="0.000215"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:51:13.994509" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-3-shard-inventory-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 177560...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:51:13.991063" elapsed="0.003476"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:51:13.994589" elapsed="0.000033"/>
</return>
<msg time="2026-04-08T00:51:13.994750" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-3-shard-inventory-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 177560...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:51:13.943416" elapsed="0.051360"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:51:13.994868" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:51:13.995018" level="INFO">${data_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-3-shard-inventory-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 177560...</msg>
<var>${data_text}</var>
<arg>uri=${uri}</arg>
<arg>session=${session}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-08T00:51:13.942677" elapsed="0.052367"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:13.996090" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-3-shard-inventory-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1775609473, 'valu...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:13.995620" elapsed="0.000499"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-08T00:51:13.996184" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:51:13.996359" level="INFO">${data_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-3-shard-inventory-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1775609473, 'valu...</msg>
<var>${data_object}</var>
<arg>${data_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-08T00:51:13.995281" elapsed="0.001105"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:51:13.996740" level="INFO">${value} = {'AbortTransactionsCount': 0, 'CommitIndex': 11, 'CommittedTransactionsCount': 0, 'CurrentTerm': 2, 'FailedReadTransactionsCount': 0, 'FailedTransactionsCount': 0, 'FollowerInfo': [], 'FollowerInitial...</msg>
<var>${value}</var>
<arg>${data_object}</arg>
<arg>value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:51:13.996541" elapsed="0.000225"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:51:13.997117" level="INFO">${raft_property} = Follower</msg>
<var>${raft_property}</var>
<arg>${value}</arg>
<arg>${property}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:51:13.996919" elapsed="0.000223"/>
</kw>
<return>
<value>${raft_property}</value>
<status status="PASS" start="2026-04-08T00:51:13.997205" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:51:13.997353" level="INFO">${raft_state} = Follower</msg>
<var>${raft_state}</var>
<arg>RaftState</arg>
<arg>${shard_name}</arg>
<arg>${shard_type}</arg>
<arg>${member_index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft property.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T00:51:13.731723" elapsed="0.265654"/>
</kw>
<return>
<value>${raft_state}</value>
<status status="PASS" start="2026-04-08T00:51:13.997436" elapsed="0.000027"/>
</return>
<msg time="2026-04-08T00:51:13.997582" level="INFO">${raft_state} = Follower</msg>
<var>${raft_state}</var>
<arg>shard_name=${shard_name}</arg>
<arg>shard_type=${ds_type}</arg>
<arg>member_index=${index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft status.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T00:51:13.730902" elapsed="0.266704"/>
</kw>
<if>
<branch type="IF" condition="'Follower' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${follower_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-08T00:51:13.997910" elapsed="0.000188"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:13.997684" elapsed="0.000452"/>
</branch>
<branch type="ELSE IF" condition="'Leader' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${leader_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:13.998388" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:13.998241" elapsed="0.000201"/>
</branch>
<branch type="ELSE IF" condition="${validate}">
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized Raft state: ${raft_state}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:13.998609" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:13.998468" elapsed="0.000190"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:13.997667" elapsed="0.001013"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T00:51:13.730736" elapsed="0.267968"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-08T00:51:13.198042" elapsed="0.800696"/>
</for>
<return>
<value>${leader_list}</value>
<value>${follower_list}</value>
<status status="PASS" start="2026-04-08T00:51:13.998781" elapsed="0.000026"/>
</return>
<msg time="2026-04-08T00:51:13.998979" level="INFO">${leader_list} = [1]</msg>
<msg time="2026-04-08T00:51:13.999024" level="INFO">${follower_list} = [2, 3]</msg>
<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="PASS" start="2026-04-08T00:51:13.194027" elapsed="0.805020"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T00:51:13.999505" level="INFO">Length is 1.</msg>
<msg time="2026-04-08T00:51:13.999580" level="INFO">${leader_count} = 1</msg>
<var>${leader_count}</var>
<arg>${leader_list}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T00:51:13.999236" elapsed="0.000367"/>
</kw>
<if>
<branch type="IF" condition="${leader_count} &lt; 1">
<kw name="Fail" owner="BuiltIn">
<arg>No leader found.</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:13.999883" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:13.999672" elapsed="0.000264"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:13.999654" elapsed="0.000304"/>
</if>
<kw name="Length Should Be" owner="BuiltIn">
<msg time="2026-04-08T00:51:14.002092" level="INFO">Length is 1.</msg>
<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="PASS" start="2026-04-08T00:51:14.000094" elapsed="0.002045"/>
</kw>
<kw name="Get From List" owner="Collections">
<msg time="2026-04-08T00:51:14.002541" level="INFO">${leader} = 1</msg>
<var>${leader}</var>
<arg>${leader_list}</arg>
<arg>0</arg>
<doc>Returns the value specified with an ``index`` from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:51:14.002354" elapsed="0.000212"/>
</kw>
<return>
<value>${leader}</value>
<value>${follower_list}</value>
<status status="PASS" start="2026-04-08T00:51:14.002613" elapsed="0.000028"/>
</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="PASS" start="2026-04-08T00:51:13.191574" elapsed="0.811192"/>
</kw>
<var name="${shard_name}">inventory</var>
<status status="PASS" start="2026-04-08T00:51:13.191359" elapsed="0.811453"/>
</iter>
<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-04-08T00:51:14.007288" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:51:14.006889" elapsed="0.000426"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:51:14.007777" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:51:14.007478" elapsed="0.000324"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:51:14.007847" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:51:14.007999" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:51:14.006522" elapsed="0.001502"/>
</kw>
<kw name="Sort List" owner="Collections">
<arg>${index_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="PASS" start="2026-04-08T00:51:14.008190" elapsed="0.000154"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:51:14.008833" level="INFO">${ds_type} = config</msg>
<var>${ds_type}</var>
<arg>'${shard_type}' != 'config'</arg>
<arg>operational</arg>
<arg>config</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:51:14.008503" elapsed="0.000356"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:51:14.009270" level="INFO">${leader_list} = []</msg>
<var>${leader_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:51:14.009016" elapsed="0.000280"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:51:14.009676" level="INFO">${follower_list} = []</msg>
<var>${follower_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:51:14.009442" elapsed="0.000259"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_Raft_State_Of_Shard_At_Member" owner="ClusterManagement">
<kw name="Get_Raft_Property_From_Shard_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:14.012150" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:14.011820" elapsed="0.000381"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:51:14.012248" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:51:14.012398" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:51:14.011480" elapsed="0.000943"/>
</kw>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Get_As_Json_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:14.095422" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:14.095023" elapsed="0.000431"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:51:14.096226" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:51:14.095951" elapsed="0.000374">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-08T00:51:14.096421" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:51:14.095619" elapsed="0.000827"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:51:14.096992" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:51:14.096610" elapsed="0.000409"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T00:51:14.097334" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-08T00:51:14.097494" level="INFO">${template} = /rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T00:51:14.097194" elapsed="0.000326"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:14.097962" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:14.097675" elapsed="0.000383"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:14.099024" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:14.098770" elapsed="0.000298"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-08T00:51:14.099515" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-08T00:51:14.099243" elapsed="0.000298"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:14.099864" elapsed="0.000021"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:14.100064" elapsed="0.000024"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:14.100251" elapsed="0.000022"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-08T00:51:14.099730" elapsed="0.000580"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-08T00:51:14.099591" elapsed="0.000750"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-08T00:51:14.100385" elapsed="0.000031"/>
</return>
<msg time="2026-04-08T00:51:14.100547" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-08T00:51:14.098452" elapsed="0.002121"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:14.098135" elapsed="0.002470"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:14.100774" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:14.100629" elapsed="0.000198"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:14.098113" elapsed="0.002735"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:14.101436" level="INFO">${final_text} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:14.100987" elapsed="0.000477"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T00:51:14.101511" 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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="PASS" start="2026-04-08T00:51:14.094411" elapsed="0.007222"/>
</kw>
<msg time="2026-04-08T00:51:14.101686" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:51:14.081951" elapsed="0.019850"/>
</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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:14.114233" elapsed="0.000042"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:14.126940" elapsed="0.000044"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:14.139084" elapsed="0.000042"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:14.139862" elapsed="0.000036"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:14.140621" elapsed="0.000036"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:14.141317" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:14.141152" elapsed="0.000263"/>
</branch>
<status status="NOT RUN" start="2026-04-08T00:51:14.141135" elapsed="0.000308"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:14.141606" elapsed="0.000023"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:14.142846" elapsed="0.000026"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:14.143051" elapsed="0.000022"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-08T00:51:14.141076" elapsed="0.002051"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-08T00:51:14.140741" elapsed="0.002443"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:14.143891" elapsed="0.000036"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-08T00:51:14.144009" elapsed="0.000048"/>
</return>
<msg time="2026-04-08T00:51:14.144267" level="INFO">${uri} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-08T00:51:14.075880" elapsed="0.068497"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:51:14.147367" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:51:14.147092" elapsed="0.000345">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-08T00:51:14.147626" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:51:14.146646" elapsed="0.001024"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:14.148347" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:14.147799" elapsed="0.000617"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:14.149033" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:14.148731" elapsed="0.000329"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:14.148456" elapsed="0.000650"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:14.147748" elapsed="0.001397"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:51:14.152294" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:51:14.149888" elapsed="0.002455"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-08T00:51:14.152426" elapsed="0.000064"/>
</return>
<msg time="2026-04-08T00:51:14.152743" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:51:14.145415" elapsed="0.007433"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:51:14.155600" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:51:14.155291" elapsed="0.000389">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-08T00:51:14.155914" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:51:14.154771" elapsed="0.001201"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-08T00:51:14.156529" elapsed="0.000094"/>
</return>
<status status="PASS" start="2026-04-08T00:51:14.156140" elapsed="0.000557"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:14.156075" elapsed="0.000661"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:14.157464" elapsed="0.000037"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:14.158363" elapsed="0.000056"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-08T00:51:14.158512" elapsed="0.000058"/>
</return>
<msg time="2026-04-08T00:51:14.160930" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:51:14.153661" elapsed="0.007401"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:14.165205" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:14.164774" elapsed="0.000554"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:14.166470" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:14.166070" elapsed="0.000496"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:51:14.177875" level="INFO">GET Request : url=http://10.30.170.48:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 path_url=/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01ju7g9ih47awu1dako8be5k84o113.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:51:14.178337" level="INFO">GET Response : url=http://10.30.170.48:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Transfer-Encoding': 'chunked'} 
 body={"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","hidden-symmetric-keys","encrypted-private-keys","asymmetrically-encrypted-value-format","cms-encrypted-data-format","cleartext-private-keys","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["ssh-client-keepalives","client-ident-hostbased","client-ident-publickey","client-ident-password"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-ex... (set the log level to DEBUG or TRACE to see the full content) 
 </msg>
<msg time="2026-04-08T00:51:14.178701" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:51:14.168894" elapsed="0.009885"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:14.166691" elapsed="0.012223"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:14.179680" elapsed="0.000057"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:14.179017" elapsed="0.000845"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:14.166641" elapsed="0.013331"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:14.190249" level="INFO">{"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","hidden-symmetric-keys","encrypted-private-keys","asymmetrically-encrypted-value-format","cms-encrypted-data-format","cleartext-private-keys","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["ssh-client-keepalives","client-ident-hostbased","client-ident-publickey","client-ident-password"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-experimenter-types?revision=2015-10-20","namespace":"urn:opendaylight:openflowplugin:experimenter:types","conformance-type":"import"},{"name":"ietf-ip_2018-02-22","revision":"2018-02-22","schema":"/rests/modules/ietf-ip?revision=2018-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-ip","conformance-type":"import","feature":["ipv6-privacy-autoconf","ipv4-non-contiguous-netmasks"]},{"name":"ietf-tcp-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-client","conformance-type":"import","feature":["local-binding-supported","tcp-client-keepalives"]},{"name":"node-config_2014-10-15","revision":"2014-10-15","schema":"/rests/modules/node-config?revision=2014-10-15","namespace":"urn:opendaylight:module:config","conformance-type":"import"},{"name":"ietf-restconf_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf","conformance-type":"import"},{"name":"ietf-datastores_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-datastores?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-datastores","conformance-type":"import"},{"name":"ietf-yang-patch_2017-02-22","revision":"2017-02-22","schema":"/rests/modules/ietf-yang-patch?revision=2017-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-patch","conformance-type":"import"},{"name":"sal-group_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-group?revision=2013-09-18","namespace":"urn:opendaylight:group:service","conformance-type":"import"},{"name":"odl-codegen-extensions_2024-06-27","revision":"2024-06-27","schema":"/rests/modules/odl-codegen-extensions?revision=2024-06-27","namespace":"urn:opendaylight:yang:extension:codegen","conformance-type":"import"},{"name":"sal-meter_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-meter?revision=2013-09-18","namespace":"urn:opendaylight:meter:service","conformance-type":"import"},{"name":"ietf-interfaces_2018-02-20","revision":"2018-02-20","schema":"/rests/modules/ietf-interfaces?revision=2018-02-20","namespace":"urn:ietf:params:xml:ns:yang:ietf-interfaces","conformance-type":"import","feature":["pre-provisioning","if-mib","arbitrary-names"]},{"name":"opendaylight-l2-types_2013-08-27","revision":"2013-08-27","schema":"/rests/modules/opendaylight-l2-types?revision=2013-08-27","namespace":"urn:opendaylight:l2:types","conformance-type":"import"},{"name":"opendaylight-flow-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-flow-types?revision=2013-10-26","namespace":"urn:opendaylight:flow:types","conformance-type":"import"},{"name":"lldp-speaker-config_2016-05-12","revision":"2016-05-12","schema":"/rests/modules/lldp-speaker-config?revision=2016-05-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker:config","conformance-type":"import"},{"name":"aaa-cert_2015-11-26","revision":"2015-11-26","schema":"/rests/modules/aaa-cert?revision=2015-11-26","namespace":"urn:opendaylight:yang:aaa:cert","conformance-type":"import"},{"name":"openflow-action_2015-02-03","revision":"2015-02-03","schema":"/rests/modules/openflow-action?revision=2015-02-03","namespace":"urn:opendaylight:openflow:common:action","conformance-type":"import"},{"name":"openflow-approved-extensions_2016-08-02","revision":"2016-08-02","schema":"/rests/modules/openflow-approved-extensions?revision=2016-08-02","namespace":"urn:opendaylight:openflow:approved:extensions","conformance-type":"import"},{"name":"nc-notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/nc-notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netmod:notification","conformance-type":"import"},{"name":"ietf-netconf-nmda_2019-01-07","revision":"2019-01-07","schema":"/rests/modules/ietf-netconf-nmda?revision=2019-01-07","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-nmda","conformance-type":"import","feature":["with-defaults","origin"]},{"name":"ietf-tcp-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-common","conformance-type":"import","feature":["keepalives-supported"]},{"name":"network-topology_2013-10-21","revision":"2013-10-21","schema":"/rests/modules/network-topology?revision=2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:network-topology","conformance-type":"import"},{"name":"aaa-encrypt-service-config_2024-02-02","revision":"2024-02-02","schema":"/rests/modules/aaa-encrypt-service-config?revision=2024-02-02","namespace":"config:aaa:authn:encrypt:service:config","conformance-type":"import"},{"name":"openflow-instruction_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-instruction?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:instruction","conformance-type":"import"},{"name":"ietf-tls-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-client","conformance-type":"import","feature":["client-ident-x509-cert","server-auth-x509-cert"]},{"name":"opendaylight-group-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-group-statistics?revision=2013-11-11","namespace":"urn:opendaylight:group:statistics","conformance-type":"import"},{"name":"cluster-admin_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/cluster-admin?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:cluster:admin","conformance-type":"import"},{"name":"opendaylight-flow-statistics_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-flow-statistics?revision=2013-08-19","namespace":"urn:opendaylight:flow:statistics","conformance-type":"import"},{"name":"opendaylight-table-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-table-types?revision=2013-10-26","namespace":"urn:opendaylight:table:types","conformance-type":"import"},{"name":"forwarding-rules-manager-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/forwarding-rules-manager-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:forwardingrules-manager:config","conformance-type":"import"},{"name":"odl-srm-types_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-types?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:types","conformance-type":"import"},{"name":"ietf-x509-cert-to-name_2014-12-10","revision":"2014-12-10","schema":"/rests/modules/ietf-x509-cert-to-name?revision=2014-12-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-x509-cert-to-name","conformance-type":"import"},{"name":"flow-node-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-node-inventory?revision=2013-08-19","namespace":"urn:opendaylight:flow:inventory","conformance-type":"import"},{"name":"flow-errors_2013-11-16","revision":"2013-11-16","schema":"/rests/modules/flow-errors?revision=2013-11-16","namespace":"urn:opendaylight:flow:errors","conformance-type":"import"},{"name":"ietf-netconf_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:netconf:base:1.0","conformance-type":"import","feature":["xpath","url","rollback-on-error","validate","startup","candidate","confirmed-commit","writable-running"]},{"name":"iana-ssh-public-key-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-public-key-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-public-key-algs","conformance-type":"import"},{"name":"aaa-cert-mdsal_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/aaa-cert-mdsal?revision=2016-03-21","namespace":"urn:opendaylight:yang:aaa:cert:mdsal","conformance-type":"import"},{"name":"odl-device-notification_2024-02-18","revision":"2024-02-18","schema":"/rests/modules/odl-device-notification?revision=2024-02-18","namespace":"urn:opendaylight:device:notification","conformance-type":"import"},{"name":"ietf-origin_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-origin?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-origin","conformance-type":"import"},{"name":"openflow-augments_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-augments?revision=2015-02-25","namespace":"urn:opendaylight:openflow:augments","conformance-type":"import"},{"name":"iana-ssh-encryption-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-encryption-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-encryption-algs","conformance-type":"import"},{"name":"ietf-truststore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-truststore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-truststore","conformance-type":"import","feature":["inline-definitions-supported"]},{"name":"distributed-datastore-provider_2025-01-30","revision":"2025-01-30","schema":"/rests/modules/distributed-datastore-provider?revision=2025-01-30","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:distributed-datastore-provider","conformance-type":"import"},{"name":"opendaylight-group-types_2013-10-18","revision":"2013-10-18","schema":"/rests/modules/opendaylight-group-types?revision=2013-10-18","namespace":"urn:opendaylight:group:types","conformance-type":"import"},{"name":"sal-remote-augment_2023-11-03","revision":"2023-11-03","schema":"/rests/modules/sal-remote-augment?revision=2023-11-03","namespace":"urn:sal:restconf:event:subscription","conformance-type":"import"},{"name":"opendaylight-ipv6-arbitrary-bitmask-fields_2016-02-24","revision":"2016-02-24","schema":"/rests/modules/opendaylight-ipv6-arbitrary-bitmask-fields?revision=2016-02-24","namespace":"urn:opendaylight:opendaylight-ipv6-arbitrary-bitmask-fields","conformance-type":"import"},{"name":"sal-flows-batch_2016-03-14","revision":"2016-03-14","schema":"/rests/modules/sal-flows-batch?revision=2016-03-14","namespace":"urn:opendaylight:flows:service","conformance-type":"import"},{"name":"ietf-tls-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-common","conformance-type":"import","feature":["tls12","hello-params","tls13"]},{"name":"openflow-types_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-types?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:types","conformance-type":"import"},{"name":"ietf-netconf-with-defaults_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf-with-defaults?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults","conformance-type":"import"},{"name":"odl-srm-ops_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-ops?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:ops","conformance-type":"import"},{"name":"odl-general-entity_2015-09-30","revision":"2015-09-30","schema":"/rests/modules/odl-general-entity?revision=2015-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:mdsal:core:general-entity","conformance-type":"import"},{"name":"iana-ssh-key-exchange-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-key-exchange-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-key-exchange-algs","conformance-type":"import"},{"name":"node-ssl-connection-error_2019-07-23","revision":"2019-07-23","schema":"/rests/modules/node-ssl-connection-error?revision=2019-07-23","namespace":"urn:opendaylight:node-ssl-connection-error:service","conformance-type":"import"},{"name":"openflow-protocol_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-protocol?revision=2013-07-31","namespace":"urn:opendaylight:openflow:protocol","conformance-type":"import"},{"name":"ietf-udp-server_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-server?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-server","conformance-type":"import"},{"name":"ietf-keystore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-keystore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-keystore","conformance-type":"import","feature":["asymmetric-keys","inline-definitions-supported"]},{"name":"aaa_2016-12-14","revision":"2016-12-14","schema":"/rests/modules/aaa?revision=2016-12-14","namespace":"urn:opendaylight:params:xml:ns:yang:aaa","conformance-type":"import"},{"name":"aaa-cert-rpc_2015-12-15","revision":"2015-12-15","schema":"/rests/modules/aaa-cert-rpc?revision=2015-12-15","namespace":"urn:opendaylight:yang:aaa:cert:rpc","conformance-type":"import"},{"name":"system-notifications_2013-09-27","revision":"2013-09-27","schema":"/rests/modules/system-notifications?revision=2013-09-27","namespace":"urn:opendaylight:openflow:system","conformance-type":"import"},{"name":"sal-flat-batch_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/sal-flat-batch?revision=2016-03-21","namespace":"urn:opendaylight:flat-batch:service","conformance-type":"import"},{"name":"notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netconf:notification:1.0","conformance-type":"import"},{"name":"sal-remote_2014-01-14","revision":"2014-01-14","schema":"/rests/modules/sal-remote?revision=2014-01-14","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:remote","conformance-type":"import"},{"name":"yang-ext_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/yang-ext?revision=2013-07-09","namespace":"urn:opendaylight:yang:extension:yang-ext","conformance-type":"import"},{"name":"opendaylight-multipart-types_2017-01-12","revision":"2017-01-12","schema":"/rests/modules/opendaylight-multipart-types?revision=2017-01-12","namespace":"urn:opendaylight:multipart:types","conformance-type":"import"},{"name":"opendaylight-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-inventory?revision=2013-08-19","namespace":"urn:opendaylight:inventory","conformance-type":"import"},{"name":"sal-queue_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-queue?revision=2015-03-05","namespace":"urn:opendaylight:queue:service","conformance-type":"import"},{"name":"sal-groups-batch_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/sal-groups-batch?revision=2016-03-15","namespace":"urn:opendaylight:groups:service","conformance-type":"import"},{"name":"arbitrator-reconcile_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/arbitrator-reconcile?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:arbitrator-reconcile:service","conformance-type":"import"},{"name":"ietf-yang-metadata_2016-08-05","revision":"2016-08-05","schema":"/rests/modules/ietf-yang-metadata?revision=2016-08-05","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-metadata","conformance-type":"import"},{"name":"opendaylight-arbitrary-bitmask-fields_2016-01-30","revision":"2016-01-30","schema":"/rests/modules/opendaylight-arbitrary-bitmask-fields?revision=2016-01-30","namespace":"urn:opendaylight:arbitrary:bitmask:fields","conformance-type":"import"},{"name":"ietf-udp-client_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-client?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-client","conformance-type":"import","feature":["local-binding"]},{"name":"opendaylight-meter-types_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/opendaylight-meter-types?revision=2013-09-18","namespace":"urn:opendaylight:meter:types","conformance-type":"import"},{"name":"opendaylight-action-types_2013-11-12","revision":"2013-11-12","schema":"/rests/modules/opendaylight-action-types?revision=2013-11-12","namespace":"urn:opendaylight:action:types","conformance-type":"import"},{"name":"sal-role_2015-07-27","revision":"2015-07-27","schema":"/rests/modules/sal-role?revision=2015-07-27","namespace":"urn:opendaylight:role:service","conformance-type":"import"},{"name":"openflow-provider-config_2016-05-10","revision":"2016-05-10","schema":"/rests/modules/openflow-provider-config?revision=2016-05-10","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:provider:config","conformance-type":"import"},{"name":"odl-serviceutils-upgrade_2018-07-02","revision":"2018-07-02","schema":"/rests/modules/odl-serviceutils-upgrade?revision=2018-07-02","namespace":"urn:opendaylight:serviceutils:upgrade","conformance-type":"import"},{"name":"opendaylight-match-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-match-types?revision=2013-10-26","namespace":"urn:opendaylight:model:match:types","conformance-type":"import"},{"name":"ietf-restconf-server_2024-08-14","revision":"2024-08-14","schema":"/rests/modules/ietf-restconf-server?revision=2024-08-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-server","conformance-type":"import","feature":["http-listen","https-listen"]},{"name":"reconciliation-result-state_2017-07-13","revision":"2017-07-13","schema":"/rests/modules/reconciliation-result-state?revision=2017-07-13","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:rf:state","conformance-type":"import"},{"name":"onf-extensions_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/onf-extensions?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf","conformance-type":"import"},{"name":"sal-table_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/sal-table?revision=2013-10-26","namespace":"urn:opendaylight:table:service","conformance-type":"import"},{"name":"iana-http-versions_2026-02-04","revision":"2026-02-04","schema":"/rests/modules/iana-http-versions?revision=2026-02-04","namespace":"urn:ietf:params:xml:ns:yang:iana-http-versions","conformance-type":"import"},{"name":"opendaylight-direct-statistics_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/opendaylight-direct-statistics?revision=2016-05-11","namespace":"urn:opendaylight:direct:statistics","conformance-type":"import"},{"name":"opendaylight-port-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-port-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:port","conformance-type":"import"},{"name":"sal-async-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/sal-async-config?revision=2017-06-19","namespace":"urn:opendaylight:async-config:service","conformance-type":"import"},{"name":"aaa-password-service-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-password-service-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:password:service:config","conformance-type":"import"},{"name":"ietf-yang-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-yang-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-types","conformance-type":"import"},{"name":"opendaylight-queue-statistics_2013-12-16","revision":"2013-12-16","schema":"/rests/modules/opendaylight-queue-statistics?revision=2013-12-16","namespace":"urn:opendaylight:queue:statistics","conformance-type":"import"},{"name":"sal-bundle_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/sal-bundle?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf:bundle:service","conformance-type":"import"},{"name":"ietf-restconf-subscribed-notifications_2019-11-17","revision":"2019-11-17","schema":"/rests/modules/ietf-restconf-subscribed-notifications?revision=2019-11-17","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-subscribed-notifications","conformance-type":"import"},{"name":"sal-meters-batch_2016-03-16","revision":"2016-03-16","schema":"/rests/modules/sal-meters-batch?revision=2016-03-16","namespace":"urn:opendaylight:meters:service","conformance-type":"import"},{"name":"odl-entity-owners","revision":"","schema":"/rests/modules/odl-entity-owners","namespace":"urn:opendaylight:params:xml:ns:yang:controller:entity-owners","conformance-type":"import"},{"name":"sal-experimenter-mp-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-mp-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-mp-message:service","conformance-type":"import"},{"name":"packet-processing_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/packet-processing?revision=2013-07-09","namespace":"urn:opendaylight:packet:service","conformance-type":"import"},{"name":"openflow-configuration_2014-06-30","revision":"2014-06-30","schema":"/rests/modules/openflow-configuration?revision=2014-06-30","namespace":"urn:opendaylight:openflow:config","conformance-type":"import"},{"name":"odl-srm-rpcs_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-rpcs?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:rpc","conformance-type":"import"},{"name":"ietf-netconf-acm_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-netconf-acm?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-acm","conformance-type":"import"},{"name":"iana-crypt-hash_2014-08-06","revision":"2014-08-06","schema":"/rests/modules/iana-crypt-hash?revision=2014-08-06","namespace":"urn:ietf:params:xml:ns:yang:iana-crypt-hash","conformance-type":"import","feature":["crypt-hash-sha-512","crypt-hash-sha-256","crypt-hash-md5"]},{"name":"openflow-extensible-match_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-extensible-match?revision=2015-02-25","namespace":"urn:opendaylight:openflow:oxm","conformance-type":"import"}],"module-set-id":"2"}}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:14.184121" elapsed="0.006659"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:14.183614" elapsed="0.007202"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:14.183564" elapsed="0.007277"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:14.193426" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:14.191149" elapsed="0.002328"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:14.190923" elapsed="0.002589"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:14.190904" elapsed="0.002633"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:14.194202" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:14.193766" elapsed="0.000464"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:14.194566" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:14.194323" elapsed="0.000303"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:14.195122" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:14.194814" elapsed="0.000334"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:14.194650" elapsed="0.000552"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:14.194303" elapsed="0.000922"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:14.195769" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:14.195405" elapsed="0.000390"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:14.196124" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:14.195887" elapsed="0.000321"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:14.196702" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:14.196399" elapsed="0.000329"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:14.196233" elapsed="0.000530"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:14.195867" elapsed="0.000917"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:51:14.196958" elapsed="0.000376"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:51:14.197856" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:14.197522" elapsed="0.000360"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:51:14.198089" elapsed="0.002256"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:51:14.181827" elapsed="0.018651"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:51:14.200832" elapsed="0.000047"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:51:14.200609" elapsed="0.000336"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:14.200558" elapsed="0.000424"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:51:14.210183" level="INFO">${text_normalized} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:51:14.201746" elapsed="0.008489"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:51:14.210315" elapsed="0.000071"/>
</return>
<msg time="2026-04-08T00:51:14.210650" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:51:14.161899" elapsed="0.048863"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:51:14.211255" elapsed="0.000031"/>
</return>
<msg time="2026-04-08T00:51:14.211440" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="PASS" start="2026-04-08T00:51:14.020717" elapsed="0.190752"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Json_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:14.211800" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:14.211556" elapsed="0.000468"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:14.211538" elapsed="0.000514"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:51:14.212088" elapsed="0.000028"/>
</return>
<arg>session=${session}</arg>
<arg>folder=${RESTCONF_MODULES_DIR}</arg>
<arg>verify=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Add arguments sensible for JSON data, return Get_Templated response text.
Optionally, verification against JSON data (may be iterated) is called.
Only subset of JSON data is verified and returned if JMES path is specified in
file ${folder}/jmespath.expr.</doc>
<status status="PASS" start="2026-04-08T00:51:14.016477" elapsed="0.195816"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:14.012492" elapsed="0.199847"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:14.012474" elapsed="0.199891"/>
</if>
<kw name="Resolve_Shard_Type_Class" owner="ClusterManagement">
<if>
<branch type="IF" condition="'${shard_type}' == 'config'">
<return>
<value>DistributedConfigDatastore</value>
<status status="PASS" start="2026-04-08T00:51:14.212981" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-08T00:51:14.212873" elapsed="0.000167"/>
</branch>
<branch type="ELSE IF" condition="'${shard_type}' == 'operational'">
<return>
<value>DistributedOperationalDatastore</value>
<status status="NOT RUN" start="2026-04-08T00:51:14.213102" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:51:14.213064" elapsed="0.000079"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:14.212855" elapsed="0.000340"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized shard type: ${shard_type}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:14.213352" elapsed="0.000022"/>
</kw>
<msg time="2026-04-08T00:51:14.213473" level="INFO">${type_class} = DistributedConfigDatastore</msg>
<var>${type_class}</var>
<arg>shard_type=${shard_type}</arg>
<doc>Simple lookup for class name corresponding to desired type.</doc>
<status status="PASS" start="2026-04-08T00:51:14.212602" elapsed="0.000897"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:14.214104" level="INFO">${cluster_index} = 1</msg>
<var>${cluster_index}</var>
<arg>${member_index}+${NODE_ROLE_INDEX_START}-1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:14.213667" elapsed="0.000465"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:14.214769" level="INFO">${uri} = jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-topology-config,type=DistributedConfigDatastore</msg>
<var>${uri}</var>
<arg>${JOLOKIA_READ_URI}:Category=Shards,name=member-${cluster_index}-shard-${shard_name}-${shard_type},type=${type_class}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:14.214306" elapsed="0.000491"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:14.220423" level="INFO">jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-topology-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:14.219963" elapsed="0.000508"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:14.221060" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:14.220626" elapsed="0.000480"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:51:14.239822" level="INFO">GET Request : url=http://10.30.170.48:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-topology-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-topology-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:51:14.239960" level="INFO">GET Response : url=http://10.30.170.48:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-topology-config,type=DistributedConfigDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Wed, 08 Apr 2026 00:51:14 GMT', 'Expires': 'Tue, 07 Apr 2026 23:51:14 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-1-shard-topology-config,type=DistributedConfigDatastore","type":"read"},"value":{"ReadWriteTransactionCount":0,"SnapshotIndex":-1,"InMemoryJournalLogSize":0,"ReplicatedToAllIndex":-1,"Leader":"member-1-shard-topology-config","LastIndex":-1,"RaftState":"Leader","LastApplied":-1,"LastCommittedTransactionTime":"1970-01-01 00:00:00.000","PeerAddresses":"member-2-shard-topology-config: pekko:\/\/opendaylight-cluster-data@10.30.170.131:2550\/user\/shardmanager-config\/member-2-shard-topology-config, member-3-shard-topology-config: pekko:\/\/opendaylight-cluster-data@10.30.171.110:2550\/user\/shardmanager-config\/member-3-shard-topology-config","LastLogIndex":-1,"LastLeadershipChangeTime":"2026-04-08 00:46:45.979","FollowerInitialSyncStatus":false,"FollowerInfo":[{"timeSinceLastActivity":"00:00:00.073","active":true,"matchIndex":-1,"voting":true,"id":"member-2-shard-topology-config","nextIndex":0},{"timeSinceLastActivity":"00:00:00.072","active":true,"matchIndex":-1,"voting":true,"id":"member-3-shard-topology-config","nextIndex":0}],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"502.3 μs","CurrentTerm":2,"LastTerm":-1,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-topology-config","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":0,"TxCohortCacheSize":0,"PeerVotingStates":"member-2-shard-topology-config: true, member-3-shard-topology-config: true","LastLogTerm":-1,"StatRetrievalError":null,"CommitIndex":-1,"SnapshotTerm":-1,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-1-shard-topology-config","LeadershipChangeCount":1,"InMemoryJournalDataSize":0},"timestamp":1775609474,"status":200} 
 </msg>
<msg time="2026-04-08T00:51:14.240172" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:51:14.232547" elapsed="0.007736"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:14.221189" elapsed="0.019351"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:14.240728" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:14.240571" elapsed="0.000476"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:14.221169" elapsed="0.019904"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:14.247475" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-1-shard-topology-config,type=DistributedConfigDatastore","type":"read"},"value":{"ReadWriteTransactionCount":0,"SnapshotIndex":-1,"InMemoryJournalLogSize":0,"ReplicatedToAllIndex":-1,"Leader":"member-1-shard-topology-config","LastIndex":-1,"RaftState":"Leader","LastApplied":-1,"LastCommittedTransactionTime":"1970-01-01 00:00:00.000","PeerAddresses":"member-2-shard-topology-config: pekko:\/\/opendaylight-cluster-data@10.30.170.131:2550\/user\/shardmanager-config\/member-2-shard-topology-config, member-3-shard-topology-config: pekko:\/\/opendaylight-cluster-data@10.30.171.110:2550\/user\/shardmanager-config\/member-3-shard-topology-config","LastLogIndex":-1,"LastLeadershipChangeTime":"2026-04-08 00:46:45.979","FollowerInitialSyncStatus":false,"FollowerInfo":[{"timeSinceLastActivity":"00:00:00.073","active":true,"matchIndex":-1,"voting":true,"id":"member-2-shard-topology-config","nextIndex":0},{"timeSinceLastActivity":"00:00:00.072","active":true,"matchIndex":-1,"voting":true,"id":"member-3-shard-topology-config","nextIndex":0}],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"502.3 μs","CurrentTerm":2,"LastTerm":-1,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-topology-config","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":0,"TxCohortCacheSize":0,"PeerVotingStates":"member-2-shard-topology-config: true, member-3-shard-topology-config: true","LastLogTerm":-1,"StatRetrievalError":null,"CommitIndex":-1,"SnapshotTerm":-1,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-1-shard-topology-config","LeadershipChangeCount":1,"InMemoryJournalDataSize":0},"timestamp":1775609474,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:14.243806" elapsed="0.003828"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:14.242407" elapsed="0.005294"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:14.242381" elapsed="0.005375"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:14.252723" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:14.249341" elapsed="0.003522"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:14.247872" elapsed="0.005060"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:14.247846" elapsed="0.005141"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:14.255048" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:14.254006" elapsed="0.001105"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:14.255789" elapsed="0.000040"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:14.255298" elapsed="0.000584"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:14.256803" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:14.256283" elapsed="0.000566"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:14.255922" elapsed="0.000979"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:14.255277" elapsed="0.001661"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:14.258404" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:14.257583" elapsed="0.000883"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:14.259129" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:14.258638" elapsed="0.000597"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:14.260114" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:14.259610" elapsed="0.000565"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:14.259272" elapsed="0.000956"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:14.258616" elapsed="0.001650"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:51:14.260494" elapsed="0.000798"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:51:14.262152" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:14.261603" elapsed="0.000698"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:51:14.262590" elapsed="0.002353"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:51:14.241607" elapsed="0.023498"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:51:14.265336" elapsed="0.000021"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:51:14.265196" elapsed="0.000199"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:14.265175" elapsed="0.000248"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:51:14.269123" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-1-shard-topology-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1775609...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:51:14.265609" elapsed="0.003563"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:51:14.269237" elapsed="0.000036"/>
</return>
<msg time="2026-04-08T00:51:14.269449" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-1-shard-topology-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1775609...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:51:14.215754" elapsed="0.053723"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:51:14.269537" elapsed="0.000027"/>
</return>
<msg time="2026-04-08T00:51:14.269709" level="INFO">${data_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-1-shard-topology-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1775609...</msg>
<var>${data_text}</var>
<arg>uri=${uri}</arg>
<arg>session=${session}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-08T00:51:14.215007" elapsed="0.054730"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:14.271090" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-1-shard-topology-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1775609474, 'value...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:14.270588" elapsed="0.000532"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-08T00:51:14.271187" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:51:14.271371" level="INFO">${data_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-1-shard-topology-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1775609474, 'value...</msg>
<var>${data_object}</var>
<arg>${data_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-08T00:51:14.269977" elapsed="0.001421"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:51:14.271760" level="INFO">${value} = {'AbortTransactionsCount': 0, 'CommitIndex': -1, 'CommittedTransactionsCount': 0, 'CurrentTerm': 2, 'FailedReadTransactionsCount': 0, 'FailedTransactionsCount': 0, 'FollowerInfo': [{'active': True, 'i...</msg>
<var>${value}</var>
<arg>${data_object}</arg>
<arg>value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:51:14.271555" elapsed="0.000233"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:51:14.272145" level="INFO">${raft_property} = Leader</msg>
<var>${raft_property}</var>
<arg>${value}</arg>
<arg>${property}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:51:14.271942" elapsed="0.000243"/>
</kw>
<return>
<value>${raft_property}</value>
<status status="PASS" start="2026-04-08T00:51:14.272233" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:51:14.272388" level="INFO">${raft_state} = Leader</msg>
<var>${raft_state}</var>
<arg>RaftState</arg>
<arg>${shard_name}</arg>
<arg>${shard_type}</arg>
<arg>${member_index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft property.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T00:51:14.010866" elapsed="0.261546"/>
</kw>
<return>
<value>${raft_state}</value>
<status status="PASS" start="2026-04-08T00:51:14.272475" elapsed="0.000026"/>
</return>
<msg time="2026-04-08T00:51:14.272625" level="INFO">${raft_state} = Leader</msg>
<var>${raft_state}</var>
<arg>shard_name=${shard_name}</arg>
<arg>shard_type=${ds_type}</arg>
<arg>member_index=${index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft status.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T00:51:14.010146" elapsed="0.262504"/>
</kw>
<if>
<branch type="IF" condition="'Follower' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${follower_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:14.272949" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:14.272732" elapsed="0.000274"/>
</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="PASS" start="2026-04-08T00:51:14.273263" elapsed="0.000192"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:14.273030" elapsed="0.000463"/>
</branch>
<branch type="ELSE IF" condition="${validate}">
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized Raft state: ${raft_state}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:14.273663" elapsed="0.000062"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:14.273518" elapsed="0.000241"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:14.272714" elapsed="0.001069"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T00:51:14.009984" elapsed="0.263824"/>
</iter>
<iter>
<kw name="Get_Raft_State_Of_Shard_At_Member" owner="ClusterManagement">
<kw name="Get_Raft_Property_From_Shard_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:14.276280" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:14.275897" elapsed="0.000414"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:51:14.276362" elapsed="0.000035"/>
</return>
<msg time="2026-04-08T00:51:14.276525" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:51:14.275556" elapsed="0.001002"/>
</kw>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Get_As_Json_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:14.360053" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:14.359665" elapsed="0.000420"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:51:14.360940" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:51:14.360680" elapsed="0.000336">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-08T00:51:14.361110" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:51:14.360272" elapsed="0.000863"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:51:14.361719" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:51:14.361319" elapsed="0.000427"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T00:51:14.362047" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-08T00:51:14.362235" level="INFO">${template} = /rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T00:51:14.361905" elapsed="0.000355"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:14.362658" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:14.362414" elapsed="0.000287"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:14.363664" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:14.363409" elapsed="0.000299"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-08T00:51:14.364132" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-08T00:51:14.363864" elapsed="0.000313"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:14.364507" elapsed="0.000021"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:14.364707" elapsed="0.000023"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:14.364878" elapsed="0.000021"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-08T00:51:14.364373" elapsed="0.000562"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-08T00:51:14.364230" elapsed="0.000734"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-08T00:51:14.365010" elapsed="0.000031"/>
</return>
<msg time="2026-04-08T00:51:14.365187" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-08T00:51:14.363076" elapsed="0.002137"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:14.362779" elapsed="0.002467"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:14.365417" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:14.365272" elapsed="0.000200"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:14.362755" elapsed="0.002738"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:14.366085" level="INFO">${final_text} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:14.365647" elapsed="0.000465"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T00:51:14.366173" elapsed="0.000030"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="PASS" start="2026-04-08T00:51:14.359039" elapsed="0.007258"/>
</kw>
<msg time="2026-04-08T00:51:14.366350" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:51:14.346669" elapsed="0.019762"/>
</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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:14.378407" elapsed="0.000041"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:14.390211" elapsed="0.000041"/>
</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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:14.402070" elapsed="0.000041"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:14.402830" elapsed="0.000036"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:14.403569" elapsed="0.000035"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:14.404108" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:14.403965" elapsed="0.000214"/>
</branch>
<status status="NOT RUN" start="2026-04-08T00:51:14.403949" elapsed="0.000255"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:14.404361" elapsed="0.000021"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:14.404545" elapsed="0.000021"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:14.404725" elapsed="0.000021"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-08T00:51:14.403901" elapsed="0.000898"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-08T00:51:14.403685" elapsed="0.001152"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:14.405548" elapsed="0.000036"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-08T00:51:14.405694" elapsed="0.000049"/>
</return>
<msg time="2026-04-08T00:51:14.405915" level="INFO">${uri} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-08T00:51:14.340802" elapsed="0.065219"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:51:14.408772" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:51:14.408529" elapsed="0.000307">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-08T00:51:14.409020" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:51:14.408080" elapsed="0.000984"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:14.409583" elapsed="0.000041"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:14.409210" elapsed="0.000458"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:14.410287" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:14.409981" elapsed="0.000332"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:14.409708" elapsed="0.000649"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:14.409142" elapsed="0.001253"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:51:14.413449" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:51:14.411100" elapsed="0.002395"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-08T00:51:14.413570" elapsed="0.000085"/>
</return>
<msg time="2026-04-08T00:51:14.413912" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:51:14.406991" elapsed="0.007025"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:51:14.416790" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:51:14.416545" elapsed="0.000309">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-08T00:51:14.417042" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:51:14.416096" elapsed="0.000991"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-08T00:51:14.417482" elapsed="0.000077"/>
</return>
<status status="PASS" start="2026-04-08T00:51:14.417235" elapsed="0.000434"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:14.417182" elapsed="0.000534"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:14.418439" elapsed="0.000036"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:14.419253" elapsed="0.000037"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-08T00:51:14.419362" elapsed="0.000047"/>
</return>
<msg time="2026-04-08T00:51:14.421456" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:51:14.414825" elapsed="0.006736"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:14.425364" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:14.424963" elapsed="0.000500"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:14.426552" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:14.426173" elapsed="0.000476"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:51:14.445445" level="INFO">GET Request : url=http://10.30.170.131:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 path_url=/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node012m0dyuink19r12kj250j53usg1.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:51:14.446407" level="INFO">GET Response : url=http://10.30.170.131:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Transfer-Encoding': 'chunked'} 
 body={"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","hidden-symmetric-keys","encrypted-private-keys","asymmetrically-encrypted-value-format","cms-encrypted-data-format","cleartext-private-keys","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["ssh-client-keepalives","client-ident-hostbased","client-ident-publickey","client-ident-password"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-ex... (set the log level to DEBUG or TRACE to see the full content) 
 </msg>
<msg time="2026-04-08T00:51:14.446857" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:51:14.429060" elapsed="0.017857"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:14.426772" elapsed="0.020268"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:14.447730" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:14.447138" elapsed="0.000759"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:14.426722" elapsed="0.021258"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:14.454968" level="INFO">{"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","hidden-symmetric-keys","encrypted-private-keys","asymmetrically-encrypted-value-format","cms-encrypted-data-format","cleartext-private-keys","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["ssh-client-keepalives","client-ident-hostbased","client-ident-publickey","client-ident-password"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-experimenter-types?revision=2015-10-20","namespace":"urn:opendaylight:openflowplugin:experimenter:types","conformance-type":"import"},{"name":"ietf-ip_2018-02-22","revision":"2018-02-22","schema":"/rests/modules/ietf-ip?revision=2018-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-ip","conformance-type":"import","feature":["ipv6-privacy-autoconf","ipv4-non-contiguous-netmasks"]},{"name":"ietf-tcp-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-client","conformance-type":"import","feature":["local-binding-supported","tcp-client-keepalives"]},{"name":"node-config_2014-10-15","revision":"2014-10-15","schema":"/rests/modules/node-config?revision=2014-10-15","namespace":"urn:opendaylight:module:config","conformance-type":"import"},{"name":"ietf-restconf_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf","conformance-type":"import"},{"name":"ietf-datastores_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-datastores?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-datastores","conformance-type":"import"},{"name":"ietf-yang-patch_2017-02-22","revision":"2017-02-22","schema":"/rests/modules/ietf-yang-patch?revision=2017-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-patch","conformance-type":"import"},{"name":"sal-group_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-group?revision=2013-09-18","namespace":"urn:opendaylight:group:service","conformance-type":"import"},{"name":"odl-codegen-extensions_2024-06-27","revision":"2024-06-27","schema":"/rests/modules/odl-codegen-extensions?revision=2024-06-27","namespace":"urn:opendaylight:yang:extension:codegen","conformance-type":"import"},{"name":"sal-meter_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-meter?revision=2013-09-18","namespace":"urn:opendaylight:meter:service","conformance-type":"import"},{"name":"ietf-interfaces_2018-02-20","revision":"2018-02-20","schema":"/rests/modules/ietf-interfaces?revision=2018-02-20","namespace":"urn:ietf:params:xml:ns:yang:ietf-interfaces","conformance-type":"import","feature":["pre-provisioning","if-mib","arbitrary-names"]},{"name":"opendaylight-l2-types_2013-08-27","revision":"2013-08-27","schema":"/rests/modules/opendaylight-l2-types?revision=2013-08-27","namespace":"urn:opendaylight:l2:types","conformance-type":"import"},{"name":"opendaylight-flow-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-flow-types?revision=2013-10-26","namespace":"urn:opendaylight:flow:types","conformance-type":"import"},{"name":"lldp-speaker-config_2016-05-12","revision":"2016-05-12","schema":"/rests/modules/lldp-speaker-config?revision=2016-05-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker:config","conformance-type":"import"},{"name":"aaa-cert_2015-11-26","revision":"2015-11-26","schema":"/rests/modules/aaa-cert?revision=2015-11-26","namespace":"urn:opendaylight:yang:aaa:cert","conformance-type":"import"},{"name":"openflow-action_2015-02-03","revision":"2015-02-03","schema":"/rests/modules/openflow-action?revision=2015-02-03","namespace":"urn:opendaylight:openflow:common:action","conformance-type":"import"},{"name":"openflow-approved-extensions_2016-08-02","revision":"2016-08-02","schema":"/rests/modules/openflow-approved-extensions?revision=2016-08-02","namespace":"urn:opendaylight:openflow:approved:extensions","conformance-type":"import"},{"name":"nc-notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/nc-notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netmod:notification","conformance-type":"import"},{"name":"ietf-netconf-nmda_2019-01-07","revision":"2019-01-07","schema":"/rests/modules/ietf-netconf-nmda?revision=2019-01-07","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-nmda","conformance-type":"import","feature":["with-defaults","origin"]},{"name":"ietf-tcp-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-common","conformance-type":"import","feature":["keepalives-supported"]},{"name":"network-topology_2013-10-21","revision":"2013-10-21","schema":"/rests/modules/network-topology?revision=2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:network-topology","conformance-type":"import"},{"name":"aaa-encrypt-service-config_2024-02-02","revision":"2024-02-02","schema":"/rests/modules/aaa-encrypt-service-config?revision=2024-02-02","namespace":"config:aaa:authn:encrypt:service:config","conformance-type":"import"},{"name":"openflow-instruction_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-instruction?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:instruction","conformance-type":"import"},{"name":"ietf-tls-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-client","conformance-type":"import","feature":["client-ident-x509-cert","server-auth-x509-cert"]},{"name":"opendaylight-group-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-group-statistics?revision=2013-11-11","namespace":"urn:opendaylight:group:statistics","conformance-type":"import"},{"name":"cluster-admin_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/cluster-admin?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:cluster:admin","conformance-type":"import"},{"name":"opendaylight-flow-statistics_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-flow-statistics?revision=2013-08-19","namespace":"urn:opendaylight:flow:statistics","conformance-type":"import"},{"name":"opendaylight-table-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-table-types?revision=2013-10-26","namespace":"urn:opendaylight:table:types","conformance-type":"import"},{"name":"forwarding-rules-manager-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/forwarding-rules-manager-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:forwardingrules-manager:config","conformance-type":"import"},{"name":"odl-srm-types_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-types?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:types","conformance-type":"import"},{"name":"ietf-x509-cert-to-name_2014-12-10","revision":"2014-12-10","schema":"/rests/modules/ietf-x509-cert-to-name?revision=2014-12-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-x509-cert-to-name","conformance-type":"import"},{"name":"flow-node-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-node-inventory?revision=2013-08-19","namespace":"urn:opendaylight:flow:inventory","conformance-type":"import"},{"name":"flow-errors_2013-11-16","revision":"2013-11-16","schema":"/rests/modules/flow-errors?revision=2013-11-16","namespace":"urn:opendaylight:flow:errors","conformance-type":"import"},{"name":"ietf-netconf_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:netconf:base:1.0","conformance-type":"import","feature":["xpath","url","rollback-on-error","validate","startup","candidate","confirmed-commit","writable-running"]},{"name":"iana-ssh-public-key-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-public-key-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-public-key-algs","conformance-type":"import"},{"name":"aaa-cert-mdsal_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/aaa-cert-mdsal?revision=2016-03-21","namespace":"urn:opendaylight:yang:aaa:cert:mdsal","conformance-type":"import"},{"name":"odl-device-notification_2024-02-18","revision":"2024-02-18","schema":"/rests/modules/odl-device-notification?revision=2024-02-18","namespace":"urn:opendaylight:device:notification","conformance-type":"import"},{"name":"ietf-origin_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-origin?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-origin","conformance-type":"import"},{"name":"openflow-augments_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-augments?revision=2015-02-25","namespace":"urn:opendaylight:openflow:augments","conformance-type":"import"},{"name":"iana-ssh-encryption-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-encryption-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-encryption-algs","conformance-type":"import"},{"name":"ietf-truststore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-truststore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-truststore","conformance-type":"import","feature":["inline-definitions-supported"]},{"name":"distributed-datastore-provider_2025-01-30","revision":"2025-01-30","schema":"/rests/modules/distributed-datastore-provider?revision=2025-01-30","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:distributed-datastore-provider","conformance-type":"import"},{"name":"opendaylight-group-types_2013-10-18","revision":"2013-10-18","schema":"/rests/modules/opendaylight-group-types?revision=2013-10-18","namespace":"urn:opendaylight:group:types","conformance-type":"import"},{"name":"sal-remote-augment_2023-11-03","revision":"2023-11-03","schema":"/rests/modules/sal-remote-augment?revision=2023-11-03","namespace":"urn:sal:restconf:event:subscription","conformance-type":"import"},{"name":"opendaylight-ipv6-arbitrary-bitmask-fields_2016-02-24","revision":"2016-02-24","schema":"/rests/modules/opendaylight-ipv6-arbitrary-bitmask-fields?revision=2016-02-24","namespace":"urn:opendaylight:opendaylight-ipv6-arbitrary-bitmask-fields","conformance-type":"import"},{"name":"sal-flows-batch_2016-03-14","revision":"2016-03-14","schema":"/rests/modules/sal-flows-batch?revision=2016-03-14","namespace":"urn:opendaylight:flows:service","conformance-type":"import"},{"name":"ietf-tls-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-common","conformance-type":"import","feature":["tls12","hello-params","tls13"]},{"name":"openflow-types_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-types?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:types","conformance-type":"import"},{"name":"ietf-netconf-with-defaults_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf-with-defaults?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults","conformance-type":"import"},{"name":"odl-srm-ops_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-ops?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:ops","conformance-type":"import"},{"name":"odl-general-entity_2015-09-30","revision":"2015-09-30","schema":"/rests/modules/odl-general-entity?revision=2015-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:mdsal:core:general-entity","conformance-type":"import"},{"name":"iana-ssh-key-exchange-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-key-exchange-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-key-exchange-algs","conformance-type":"import"},{"name":"node-ssl-connection-error_2019-07-23","revision":"2019-07-23","schema":"/rests/modules/node-ssl-connection-error?revision=2019-07-23","namespace":"urn:opendaylight:node-ssl-connection-error:service","conformance-type":"import"},{"name":"openflow-protocol_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-protocol?revision=2013-07-31","namespace":"urn:opendaylight:openflow:protocol","conformance-type":"import"},{"name":"ietf-udp-server_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-server?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-server","conformance-type":"import"},{"name":"ietf-keystore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-keystore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-keystore","conformance-type":"import","feature":["asymmetric-keys","inline-definitions-supported"]},{"name":"aaa_2016-12-14","revision":"2016-12-14","schema":"/rests/modules/aaa?revision=2016-12-14","namespace":"urn:opendaylight:params:xml:ns:yang:aaa","conformance-type":"import"},{"name":"aaa-cert-rpc_2015-12-15","revision":"2015-12-15","schema":"/rests/modules/aaa-cert-rpc?revision=2015-12-15","namespace":"urn:opendaylight:yang:aaa:cert:rpc","conformance-type":"import"},{"name":"system-notifications_2013-09-27","revision":"2013-09-27","schema":"/rests/modules/system-notifications?revision=2013-09-27","namespace":"urn:opendaylight:openflow:system","conformance-type":"import"},{"name":"sal-flat-batch_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/sal-flat-batch?revision=2016-03-21","namespace":"urn:opendaylight:flat-batch:service","conformance-type":"import"},{"name":"notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netconf:notification:1.0","conformance-type":"import"},{"name":"sal-remote_2014-01-14","revision":"2014-01-14","schema":"/rests/modules/sal-remote?revision=2014-01-14","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:remote","conformance-type":"import"},{"name":"yang-ext_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/yang-ext?revision=2013-07-09","namespace":"urn:opendaylight:yang:extension:yang-ext","conformance-type":"import"},{"name":"opendaylight-multipart-types_2017-01-12","revision":"2017-01-12","schema":"/rests/modules/opendaylight-multipart-types?revision=2017-01-12","namespace":"urn:opendaylight:multipart:types","conformance-type":"import"},{"name":"opendaylight-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-inventory?revision=2013-08-19","namespace":"urn:opendaylight:inventory","conformance-type":"import"},{"name":"sal-queue_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-queue?revision=2015-03-05","namespace":"urn:opendaylight:queue:service","conformance-type":"import"},{"name":"sal-groups-batch_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/sal-groups-batch?revision=2016-03-15","namespace":"urn:opendaylight:groups:service","conformance-type":"import"},{"name":"arbitrator-reconcile_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/arbitrator-reconcile?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:arbitrator-reconcile:service","conformance-type":"import"},{"name":"ietf-yang-metadata_2016-08-05","revision":"2016-08-05","schema":"/rests/modules/ietf-yang-metadata?revision=2016-08-05","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-metadata","conformance-type":"import"},{"name":"opendaylight-arbitrary-bitmask-fields_2016-01-30","revision":"2016-01-30","schema":"/rests/modules/opendaylight-arbitrary-bitmask-fields?revision=2016-01-30","namespace":"urn:opendaylight:arbitrary:bitmask:fields","conformance-type":"import"},{"name":"ietf-udp-client_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-client?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-client","conformance-type":"import","feature":["local-binding"]},{"name":"opendaylight-meter-types_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/opendaylight-meter-types?revision=2013-09-18","namespace":"urn:opendaylight:meter:types","conformance-type":"import"},{"name":"opendaylight-action-types_2013-11-12","revision":"2013-11-12","schema":"/rests/modules/opendaylight-action-types?revision=2013-11-12","namespace":"urn:opendaylight:action:types","conformance-type":"import"},{"name":"sal-role_2015-07-27","revision":"2015-07-27","schema":"/rests/modules/sal-role?revision=2015-07-27","namespace":"urn:opendaylight:role:service","conformance-type":"import"},{"name":"openflow-provider-config_2016-05-10","revision":"2016-05-10","schema":"/rests/modules/openflow-provider-config?revision=2016-05-10","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:provider:config","conformance-type":"import"},{"name":"odl-serviceutils-upgrade_2018-07-02","revision":"2018-07-02","schema":"/rests/modules/odl-serviceutils-upgrade?revision=2018-07-02","namespace":"urn:opendaylight:serviceutils:upgrade","conformance-type":"import"},{"name":"opendaylight-match-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-match-types?revision=2013-10-26","namespace":"urn:opendaylight:model:match:types","conformance-type":"import"},{"name":"ietf-restconf-server_2024-08-14","revision":"2024-08-14","schema":"/rests/modules/ietf-restconf-server?revision=2024-08-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-server","conformance-type":"import","feature":["http-listen","https-listen"]},{"name":"reconciliation-result-state_2017-07-13","revision":"2017-07-13","schema":"/rests/modules/reconciliation-result-state?revision=2017-07-13","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:rf:state","conformance-type":"import"},{"name":"onf-extensions_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/onf-extensions?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf","conformance-type":"import"},{"name":"sal-table_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/sal-table?revision=2013-10-26","namespace":"urn:opendaylight:table:service","conformance-type":"import"},{"name":"iana-http-versions_2026-02-04","revision":"2026-02-04","schema":"/rests/modules/iana-http-versions?revision=2026-02-04","namespace":"urn:ietf:params:xml:ns:yang:iana-http-versions","conformance-type":"import"},{"name":"opendaylight-direct-statistics_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/opendaylight-direct-statistics?revision=2016-05-11","namespace":"urn:opendaylight:direct:statistics","conformance-type":"import"},{"name":"opendaylight-port-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-port-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:port","conformance-type":"import"},{"name":"sal-async-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/sal-async-config?revision=2017-06-19","namespace":"urn:opendaylight:async-config:service","conformance-type":"import"},{"name":"aaa-password-service-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-password-service-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:password:service:config","conformance-type":"import"},{"name":"ietf-yang-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-yang-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-types","conformance-type":"import"},{"name":"opendaylight-queue-statistics_2013-12-16","revision":"2013-12-16","schema":"/rests/modules/opendaylight-queue-statistics?revision=2013-12-16","namespace":"urn:opendaylight:queue:statistics","conformance-type":"import"},{"name":"sal-bundle_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/sal-bundle?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf:bundle:service","conformance-type":"import"},{"name":"ietf-restconf-subscribed-notifications_2019-11-17","revision":"2019-11-17","schema":"/rests/modules/ietf-restconf-subscribed-notifications?revision=2019-11-17","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-subscribed-notifications","conformance-type":"import"},{"name":"sal-meters-batch_2016-03-16","revision":"2016-03-16","schema":"/rests/modules/sal-meters-batch?revision=2016-03-16","namespace":"urn:opendaylight:meters:service","conformance-type":"import"},{"name":"odl-entity-owners","revision":"","schema":"/rests/modules/odl-entity-owners","namespace":"urn:opendaylight:params:xml:ns:yang:controller:entity-owners","conformance-type":"import"},{"name":"sal-experimenter-mp-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-mp-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-mp-message:service","conformance-type":"import"},{"name":"packet-processing_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/packet-processing?revision=2013-07-09","namespace":"urn:opendaylight:packet:service","conformance-type":"import"},{"name":"openflow-configuration_2014-06-30","revision":"2014-06-30","schema":"/rests/modules/openflow-configuration?revision=2014-06-30","namespace":"urn:opendaylight:openflow:config","conformance-type":"import"},{"name":"odl-srm-rpcs_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-rpcs?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:rpc","conformance-type":"import"},{"name":"ietf-netconf-acm_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-netconf-acm?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-acm","conformance-type":"import"},{"name":"iana-crypt-hash_2014-08-06","revision":"2014-08-06","schema":"/rests/modules/iana-crypt-hash?revision=2014-08-06","namespace":"urn:ietf:params:xml:ns:yang:iana-crypt-hash","conformance-type":"import","feature":["crypt-hash-sha-512","crypt-hash-sha-256","crypt-hash-md5"]},{"name":"openflow-extensible-match_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-extensible-match?revision=2015-02-25","namespace":"urn:opendaylight:openflow:oxm","conformance-type":"import"}],"module-set-id":"2"}}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:14.451363" elapsed="0.004168"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:14.451029" elapsed="0.004554"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:14.450999" elapsed="0.004619"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:14.459133" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:14.456042" elapsed="0.003178"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:14.455730" elapsed="0.003539"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:14.455704" elapsed="0.003599"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:14.460089" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:14.459559" elapsed="0.000567"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:14.460656" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:14.460323" elapsed="0.000413"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:14.461635" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:14.460990" elapsed="0.000688"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:14.460768" elapsed="0.000961"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:14.460295" elapsed="0.001464"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:14.462583" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:14.462012" elapsed="0.000604"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:14.462939" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:14.462707" elapsed="0.000289"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:14.463489" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:14.463190" elapsed="0.000325"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:14.463019" elapsed="0.000531"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:14.462688" elapsed="0.000883"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:51:14.463738" elapsed="0.000348"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:51:14.464587" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:14.464287" elapsed="0.000325"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:51:14.464783" elapsed="0.002179"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:51:14.449740" elapsed="0.017344"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:51:14.467445" elapsed="0.000048"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:51:14.467229" elapsed="0.000327"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:14.467176" elapsed="0.000416"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:51:14.476645" level="INFO">${text_normalized} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:51:14.468347" elapsed="0.008348"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:51:14.476772" elapsed="0.000065"/>
</return>
<msg time="2026-04-08T00:51:14.477093" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:51:14.422225" elapsed="0.054991"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:51:14.477701" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:51:14.477878" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="PASS" start="2026-04-08T00:51:14.285610" elapsed="0.192295"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Json_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:14.478244" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:14.477990" elapsed="0.000440"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:14.477972" elapsed="0.000486"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:51:14.478493" elapsed="0.000026"/>
</return>
<arg>session=${session}</arg>
<arg>folder=${RESTCONF_MODULES_DIR}</arg>
<arg>verify=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Add arguments sensible for JSON data, return Get_Templated response text.
Optionally, verification against JSON data (may be iterated) is called.
Only subset of JSON data is verified and returned if JMES path is specified in
file ${folder}/jmespath.expr.</doc>
<status status="PASS" start="2026-04-08T00:51:14.281011" elapsed="0.197606"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:14.276629" elapsed="0.202032"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:14.276611" elapsed="0.202074"/>
</if>
<kw name="Resolve_Shard_Type_Class" owner="ClusterManagement">
<if>
<branch type="IF" condition="'${shard_type}' == 'config'">
<return>
<value>DistributedConfigDatastore</value>
<status status="PASS" start="2026-04-08T00:51:14.479294" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-08T00:51:14.479185" elapsed="0.000168"/>
</branch>
<branch type="ELSE IF" condition="'${shard_type}' == 'operational'">
<return>
<value>DistributedOperationalDatastore</value>
<status status="NOT RUN" start="2026-04-08T00:51:14.479413" elapsed="0.000012"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:51:14.479376" elapsed="0.000082"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:14.479151" elapsed="0.000329"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized shard type: ${shard_type}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:14.479621" elapsed="0.000022"/>
</kw>
<msg time="2026-04-08T00:51:14.479738" level="INFO">${type_class} = DistributedConfigDatastore</msg>
<var>${type_class}</var>
<arg>shard_type=${shard_type}</arg>
<doc>Simple lookup for class name corresponding to desired type.</doc>
<status status="PASS" start="2026-04-08T00:51:14.478907" elapsed="0.000856"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:14.480325" level="INFO">${cluster_index} = 2</msg>
<var>${cluster_index}</var>
<arg>${member_index}+${NODE_ROLE_INDEX_START}-1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:14.479929" elapsed="0.000423"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:14.480967" level="INFO">${uri} = jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-topology-config,type=DistributedConfigDatastore</msg>
<var>${uri}</var>
<arg>${JOLOKIA_READ_URI}:Category=Shards,name=member-${cluster_index}-shard-${shard_name}-${shard_type},type=${type_class}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:14.480506" elapsed="0.000488"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:14.486492" level="INFO">jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-topology-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:14.486037" elapsed="0.000502"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:14.487122" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:14.486694" elapsed="0.000488"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:51:14.504757" level="INFO">GET Request : url=http://10.30.170.131:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-topology-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-topology-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:51:14.504892" level="INFO">GET Response : url=http://10.30.170.131:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-topology-config,type=DistributedConfigDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Wed, 08 Apr 2026 00:51:14 GMT', 'Expires': 'Tue, 07 Apr 2026 23:51:14 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-2-shard-topology-config,type=DistributedConfigDatastore","type":"read"},"value":{"ReadWriteTransactionCount":0,"SnapshotIndex":-1,"InMemoryJournalLogSize":0,"ReplicatedToAllIndex":-1,"Leader":"member-1-shard-topology-config","LastIndex":-1,"RaftState":"Follower","LastCommittedTransactionTime":"1970-01-01 00:00:00.000","LastApplied":-1,"PeerAddresses":"member-1-shard-topology-config: pekko:\/\/opendaylight-cluster-data@10.30.170.48:2550\/user\/shardmanager-config\/member-1-shard-topology-config, member-3-shard-topology-config: pekko:\/\/opendaylight-cluster-data@10.30.171.110:2550\/user\/shardmanager-config\/member-3-shard-topology-config","LastLogIndex":-1,"LastLeadershipChangeTime":"2026-04-08 00:46:45.985","FollowerInitialSyncStatus":true,"FollowerInfo":[],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"235.9 μs","CurrentTerm":2,"LastTerm":-1,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-topology-config","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":0,"TxCohortCacheSize":0,"PeerVotingStates":"member-1-shard-topology-config: true, member-3-shard-topology-config: true","LastLogTerm":-1,"StatRetrievalError":null,"CommitIndex":-1,"SnapshotTerm":-1,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-2-shard-topology-config","LeadershipChangeCount":1,"InMemoryJournalDataSize":0},"timestamp":1775609474,"status":200} 
 </msg>
<msg time="2026-04-08T00:51:14.505081" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:51:14.497776" elapsed="0.007428"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:14.487252" elapsed="0.018204"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:14.505654" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:14.505485" elapsed="0.000483"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:14.487234" elapsed="0.018759"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:14.511913" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-2-shard-topology-config,type=DistributedConfigDatastore","type":"read"},"value":{"ReadWriteTransactionCount":0,"SnapshotIndex":-1,"InMemoryJournalLogSize":0,"ReplicatedToAllIndex":-1,"Leader":"member-1-shard-topology-config","LastIndex":-1,"RaftState":"Follower","LastCommittedTransactionTime":"1970-01-01 00:00:00.000","LastApplied":-1,"PeerAddresses":"member-1-shard-topology-config: pekko:\/\/opendaylight-cluster-data@10.30.170.48:2550\/user\/shardmanager-config\/member-1-shard-topology-config, member-3-shard-topology-config: pekko:\/\/opendaylight-cluster-data@10.30.171.110:2550\/user\/shardmanager-config\/member-3-shard-topology-config","LastLogIndex":-1,"LastLeadershipChangeTime":"2026-04-08 00:46:45.985","FollowerInitialSyncStatus":true,"FollowerInfo":[],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"235.9 μs","CurrentTerm":2,"LastTerm":-1,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-topology-config","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":0,"TxCohortCacheSize":0,"PeerVotingStates":"member-1-shard-topology-config: true, member-3-shard-topology-config: true","LastLogTerm":-1,"StatRetrievalError":null,"CommitIndex":-1,"SnapshotTerm":-1,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-2-shard-topology-config","LeadershipChangeCount":1,"InMemoryJournalDataSize":0},"timestamp":1775609474,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:14.507999" elapsed="0.004066"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:14.507171" elapsed="0.004943"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:14.507136" elapsed="0.005049"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:14.515429" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:14.513104" elapsed="0.002426"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:14.512272" elapsed="0.003306"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:14.512254" elapsed="0.003362"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:14.517099" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:14.516351" elapsed="0.000824"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:14.517831" elapsed="0.000035"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:14.517341" elapsed="0.000576"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:14.518803" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:14.518299" elapsed="0.000549"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:14.517954" elapsed="0.000945"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:14.517321" elapsed="0.001614"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:14.520370" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:14.519554" elapsed="0.000877"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:14.521052" elapsed="0.000035"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:14.520595" elapsed="0.000542"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:14.522031" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:14.521521" elapsed="0.000555"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:14.521190" elapsed="0.000936"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:14.520576" elapsed="0.001604"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:51:14.522407" elapsed="0.000614"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:51:14.523832" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:14.523341" elapsed="0.000550"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:51:14.524212" elapsed="0.002359"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:51:14.506472" elapsed="0.020257"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:51:14.526926" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:51:14.526802" elapsed="0.000171"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:14.526783" elapsed="0.000212"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:51:14.530585" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-2-shard-topology-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1775609...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:51:14.527139" elapsed="0.003476"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:51:14.530667" elapsed="0.000032"/>
</return>
<msg time="2026-04-08T00:51:14.530828" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-2-shard-topology-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1775609...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:51:14.481982" elapsed="0.048872"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:51:14.530911" elapsed="0.000027"/>
</return>
<msg time="2026-04-08T00:51:14.531059" level="INFO">${data_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-2-shard-topology-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1775609...</msg>
<var>${data_text}</var>
<arg>uri=${uri}</arg>
<arg>session=${session}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-08T00:51:14.481221" elapsed="0.049864"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:14.532128" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-2-shard-topology-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1775609474, 'value...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:14.531660" elapsed="0.000630"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-08T00:51:14.532385" elapsed="0.000031"/>
</return>
<msg time="2026-04-08T00:51:14.532564" level="INFO">${data_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-2-shard-topology-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1775609474, 'value...</msg>
<var>${data_object}</var>
<arg>${data_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-08T00:51:14.531319" elapsed="0.001272"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:51:14.532943" level="INFO">${value} = {'AbortTransactionsCount': 0, 'CommitIndex': -1, 'CommittedTransactionsCount': 0, 'CurrentTerm': 2, 'FailedReadTransactionsCount': 0, 'FailedTransactionsCount': 0, 'FollowerInfo': [], 'FollowerInitial...</msg>
<var>${value}</var>
<arg>${data_object}</arg>
<arg>value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:51:14.532743" elapsed="0.000226"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:51:14.533336" level="INFO">${raft_property} = Follower</msg>
<var>${raft_property}</var>
<arg>${value}</arg>
<arg>${property}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:51:14.533120" elapsed="0.000242"/>
</kw>
<return>
<value>${raft_property}</value>
<status status="PASS" start="2026-04-08T00:51:14.533408" elapsed="0.000027"/>
</return>
<msg time="2026-04-08T00:51:14.533584" level="INFO">${raft_state} = Follower</msg>
<var>${raft_state}</var>
<arg>RaftState</arg>
<arg>${shard_name}</arg>
<arg>${shard_type}</arg>
<arg>${member_index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft property.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T00:51:14.274937" elapsed="0.258673"/>
</kw>
<return>
<value>${raft_state}</value>
<status status="PASS" start="2026-04-08T00:51:14.533670" elapsed="0.000027"/>
</return>
<msg time="2026-04-08T00:51:14.533816" level="INFO">${raft_state} = Follower</msg>
<var>${raft_state}</var>
<arg>shard_name=${shard_name}</arg>
<arg>shard_type=${ds_type}</arg>
<arg>member_index=${index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft status.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T00:51:14.274217" elapsed="0.259623"/>
</kw>
<if>
<branch type="IF" condition="'Follower' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${follower_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-08T00:51:14.534129" elapsed="0.000205"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:14.533918" elapsed="0.000454"/>
</branch>
<branch type="ELSE IF" condition="'Leader' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${leader_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:14.534544" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:14.534397" elapsed="0.000199"/>
</branch>
<branch type="ELSE IF" condition="${validate}">
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized Raft state: ${raft_state}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:14.534757" elapsed="0.000019"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:14.534619" elapsed="0.000187"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:14.533900" elapsed="0.000928"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T00:51:14.273988" elapsed="0.260864"/>
</iter>
<iter>
<kw name="Get_Raft_State_Of_Shard_At_Member" owner="ClusterManagement">
<kw name="Get_Raft_Property_From_Shard_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:14.537213" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:14.536870" elapsed="0.000371"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:51:14.537287" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:51:14.537433" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:51:14.536533" elapsed="0.000926"/>
</kw>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Get_As_Json_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:14.619644" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:14.619260" elapsed="0.000413"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:51:14.620443" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:51:14.620183" elapsed="0.000340">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-08T00:51:14.620616" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:51:14.619837" elapsed="0.000803"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:51:14.621199" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:51:14.620802" elapsed="0.000425"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T00:51:14.621553" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-08T00:51:14.621712" level="INFO">${template} = /rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T00:51:14.621386" elapsed="0.000393"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:14.622197" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:14.621936" elapsed="0.000306"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:14.623191" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:14.622922" elapsed="0.000315"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-08T00:51:14.623669" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-08T00:51:14.623396" elapsed="0.000299"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:14.624020" elapsed="0.000021"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:14.624237" elapsed="0.000025"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:14.624411" elapsed="0.000020"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-08T00:51:14.623888" elapsed="0.000579"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-08T00:51:14.623746" elapsed="0.000752"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-08T00:51:14.624542" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:51:14.624699" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-08T00:51:14.622605" elapsed="0.002119"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:14.622313" elapsed="0.002443"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:14.624924" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:14.624780" elapsed="0.000198"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:14.622292" elapsed="0.002707"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:14.625599" level="INFO">${final_text} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:14.625137" elapsed="0.000490"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T00:51:14.625675" elapsed="0.000028"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="PASS" start="2026-04-08T00:51:14.618638" elapsed="0.007158"/>
</kw>
<msg time="2026-04-08T00:51:14.625850" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:51:14.606592" elapsed="0.019338"/>
</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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:14.637989" elapsed="0.000041"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:14.650114" elapsed="0.000058"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:14.662101" elapsed="0.000041"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:14.662886" elapsed="0.000036"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:14.663647" elapsed="0.000036"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:14.664292" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:14.664130" elapsed="0.000218"/>
</branch>
<status status="NOT RUN" start="2026-04-08T00:51:14.664113" elapsed="0.000259"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:14.664529" elapsed="0.000021"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:14.664714" elapsed="0.000021"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:14.664905" elapsed="0.000021"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-08T00:51:14.664062" elapsed="0.000918"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-08T00:51:14.663830" elapsed="0.001190"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:14.665744" elapsed="0.000035"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-08T00:51:14.665863" elapsed="0.000048"/>
</return>
<msg time="2026-04-08T00:51:14.666090" level="INFO">${uri} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-08T00:51:14.600566" elapsed="0.065650"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:51:14.669204" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:51:14.668783" elapsed="0.000493">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-08T00:51:14.669494" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:51:14.668338" elapsed="0.001202"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:14.670053" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:14.669673" elapsed="0.000446"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:14.670755" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:14.670450" elapsed="0.000331"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:14.670172" elapsed="0.000655"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:14.669621" elapsed="0.001245"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:51:14.673963" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:51:14.671694" elapsed="0.002315"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-08T00:51:14.674084" elapsed="0.000063"/>
</return>
<msg time="2026-04-08T00:51:14.674418" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:51:14.667246" elapsed="0.007279"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:51:14.677268" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:51:14.677010" elapsed="0.000322">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-08T00:51:14.677550" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:51:14.676579" elapsed="0.001016"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-08T00:51:14.677974" elapsed="0.000079"/>
</return>
<status status="PASS" start="2026-04-08T00:51:14.677727" elapsed="0.000394"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:14.677676" elapsed="0.000498"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:14.678889" elapsed="0.000036"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:14.679703" elapsed="0.000037"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-08T00:51:14.679812" elapsed="0.000047"/>
</return>
<msg time="2026-04-08T00:51:14.681990" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:51:14.675489" elapsed="0.006610"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:14.685979" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:14.685587" elapsed="0.000491"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:14.687327" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:14.686789" elapsed="0.000637"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:51:14.702620" level="INFO">GET Request : url=http://10.30.171.110:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 path_url=/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0u16rl3earouwvehy59feej101.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:51:14.703049" level="INFO">GET Response : url=http://10.30.171.110:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Transfer-Encoding': 'chunked'} 
 body={"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","hidden-symmetric-keys","encrypted-private-keys","asymmetrically-encrypted-value-format","cms-encrypted-data-format","cleartext-private-keys","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["ssh-client-keepalives","client-ident-hostbased","client-ident-publickey","client-ident-password"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-ex... (set the log level to DEBUG or TRACE to see the full content) 
 </msg>
<msg time="2026-04-08T00:51:14.703273" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:51:14.689686" elapsed="0.013613"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:14.687553" elapsed="0.015802"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:14.703645" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:14.703398" elapsed="0.000321"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:14.687501" elapsed="0.016254"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:14.708051" level="INFO">{"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","hidden-symmetric-keys","encrypted-private-keys","asymmetrically-encrypted-value-format","cms-encrypted-data-format","cleartext-private-keys","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["ssh-client-keepalives","client-ident-hostbased","client-ident-publickey","client-ident-password"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-experimenter-types?revision=2015-10-20","namespace":"urn:opendaylight:openflowplugin:experimenter:types","conformance-type":"import"},{"name":"ietf-ip_2018-02-22","revision":"2018-02-22","schema":"/rests/modules/ietf-ip?revision=2018-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-ip","conformance-type":"import","feature":["ipv6-privacy-autoconf","ipv4-non-contiguous-netmasks"]},{"name":"ietf-tcp-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-client","conformance-type":"import","feature":["local-binding-supported","tcp-client-keepalives"]},{"name":"node-config_2014-10-15","revision":"2014-10-15","schema":"/rests/modules/node-config?revision=2014-10-15","namespace":"urn:opendaylight:module:config","conformance-type":"import"},{"name":"ietf-restconf_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf","conformance-type":"import"},{"name":"ietf-datastores_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-datastores?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-datastores","conformance-type":"import"},{"name":"ietf-yang-patch_2017-02-22","revision":"2017-02-22","schema":"/rests/modules/ietf-yang-patch?revision=2017-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-patch","conformance-type":"import"},{"name":"sal-group_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-group?revision=2013-09-18","namespace":"urn:opendaylight:group:service","conformance-type":"import"},{"name":"odl-codegen-extensions_2024-06-27","revision":"2024-06-27","schema":"/rests/modules/odl-codegen-extensions?revision=2024-06-27","namespace":"urn:opendaylight:yang:extension:codegen","conformance-type":"import"},{"name":"sal-meter_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-meter?revision=2013-09-18","namespace":"urn:opendaylight:meter:service","conformance-type":"import"},{"name":"ietf-interfaces_2018-02-20","revision":"2018-02-20","schema":"/rests/modules/ietf-interfaces?revision=2018-02-20","namespace":"urn:ietf:params:xml:ns:yang:ietf-interfaces","conformance-type":"import","feature":["pre-provisioning","if-mib","arbitrary-names"]},{"name":"opendaylight-l2-types_2013-08-27","revision":"2013-08-27","schema":"/rests/modules/opendaylight-l2-types?revision=2013-08-27","namespace":"urn:opendaylight:l2:types","conformance-type":"import"},{"name":"opendaylight-flow-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-flow-types?revision=2013-10-26","namespace":"urn:opendaylight:flow:types","conformance-type":"import"},{"name":"lldp-speaker-config_2016-05-12","revision":"2016-05-12","schema":"/rests/modules/lldp-speaker-config?revision=2016-05-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker:config","conformance-type":"import"},{"name":"aaa-cert_2015-11-26","revision":"2015-11-26","schema":"/rests/modules/aaa-cert?revision=2015-11-26","namespace":"urn:opendaylight:yang:aaa:cert","conformance-type":"import"},{"name":"openflow-action_2015-02-03","revision":"2015-02-03","schema":"/rests/modules/openflow-action?revision=2015-02-03","namespace":"urn:opendaylight:openflow:common:action","conformance-type":"import"},{"name":"openflow-approved-extensions_2016-08-02","revision":"2016-08-02","schema":"/rests/modules/openflow-approved-extensions?revision=2016-08-02","namespace":"urn:opendaylight:openflow:approved:extensions","conformance-type":"import"},{"name":"nc-notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/nc-notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netmod:notification","conformance-type":"import"},{"name":"ietf-netconf-nmda_2019-01-07","revision":"2019-01-07","schema":"/rests/modules/ietf-netconf-nmda?revision=2019-01-07","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-nmda","conformance-type":"import","feature":["with-defaults","origin"]},{"name":"ietf-tcp-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-common","conformance-type":"import","feature":["keepalives-supported"]},{"name":"network-topology_2013-10-21","revision":"2013-10-21","schema":"/rests/modules/network-topology?revision=2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:network-topology","conformance-type":"import"},{"name":"aaa-encrypt-service-config_2024-02-02","revision":"2024-02-02","schema":"/rests/modules/aaa-encrypt-service-config?revision=2024-02-02","namespace":"config:aaa:authn:encrypt:service:config","conformance-type":"import"},{"name":"openflow-instruction_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-instruction?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:instruction","conformance-type":"import"},{"name":"ietf-tls-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-client","conformance-type":"import","feature":["client-ident-x509-cert","server-auth-x509-cert"]},{"name":"opendaylight-group-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-group-statistics?revision=2013-11-11","namespace":"urn:opendaylight:group:statistics","conformance-type":"import"},{"name":"cluster-admin_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/cluster-admin?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:cluster:admin","conformance-type":"import"},{"name":"opendaylight-flow-statistics_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-flow-statistics?revision=2013-08-19","namespace":"urn:opendaylight:flow:statistics","conformance-type":"import"},{"name":"opendaylight-table-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-table-types?revision=2013-10-26","namespace":"urn:opendaylight:table:types","conformance-type":"import"},{"name":"forwarding-rules-manager-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/forwarding-rules-manager-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:forwardingrules-manager:config","conformance-type":"import"},{"name":"odl-srm-types_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-types?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:types","conformance-type":"import"},{"name":"ietf-x509-cert-to-name_2014-12-10","revision":"2014-12-10","schema":"/rests/modules/ietf-x509-cert-to-name?revision=2014-12-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-x509-cert-to-name","conformance-type":"import"},{"name":"flow-node-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-node-inventory?revision=2013-08-19","namespace":"urn:opendaylight:flow:inventory","conformance-type":"import"},{"name":"flow-errors_2013-11-16","revision":"2013-11-16","schema":"/rests/modules/flow-errors?revision=2013-11-16","namespace":"urn:opendaylight:flow:errors","conformance-type":"import"},{"name":"ietf-netconf_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:netconf:base:1.0","conformance-type":"import","feature":["xpath","url","rollback-on-error","validate","startup","candidate","confirmed-commit","writable-running"]},{"name":"iana-ssh-public-key-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-public-key-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-public-key-algs","conformance-type":"import"},{"name":"aaa-cert-mdsal_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/aaa-cert-mdsal?revision=2016-03-21","namespace":"urn:opendaylight:yang:aaa:cert:mdsal","conformance-type":"import"},{"name":"odl-device-notification_2024-02-18","revision":"2024-02-18","schema":"/rests/modules/odl-device-notification?revision=2024-02-18","namespace":"urn:opendaylight:device:notification","conformance-type":"import"},{"name":"ietf-origin_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-origin?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-origin","conformance-type":"import"},{"name":"openflow-augments_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-augments?revision=2015-02-25","namespace":"urn:opendaylight:openflow:augments","conformance-type":"import"},{"name":"iana-ssh-encryption-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-encryption-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-encryption-algs","conformance-type":"import"},{"name":"ietf-truststore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-truststore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-truststore","conformance-type":"import","feature":["inline-definitions-supported"]},{"name":"distributed-datastore-provider_2025-01-30","revision":"2025-01-30","schema":"/rests/modules/distributed-datastore-provider?revision=2025-01-30","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:distributed-datastore-provider","conformance-type":"import"},{"name":"opendaylight-group-types_2013-10-18","revision":"2013-10-18","schema":"/rests/modules/opendaylight-group-types?revision=2013-10-18","namespace":"urn:opendaylight:group:types","conformance-type":"import"},{"name":"sal-remote-augment_2023-11-03","revision":"2023-11-03","schema":"/rests/modules/sal-remote-augment?revision=2023-11-03","namespace":"urn:sal:restconf:event:subscription","conformance-type":"import"},{"name":"opendaylight-ipv6-arbitrary-bitmask-fields_2016-02-24","revision":"2016-02-24","schema":"/rests/modules/opendaylight-ipv6-arbitrary-bitmask-fields?revision=2016-02-24","namespace":"urn:opendaylight:opendaylight-ipv6-arbitrary-bitmask-fields","conformance-type":"import"},{"name":"sal-flows-batch_2016-03-14","revision":"2016-03-14","schema":"/rests/modules/sal-flows-batch?revision=2016-03-14","namespace":"urn:opendaylight:flows:service","conformance-type":"import"},{"name":"ietf-tls-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-common","conformance-type":"import","feature":["tls12","hello-params","tls13"]},{"name":"openflow-types_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-types?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:types","conformance-type":"import"},{"name":"ietf-netconf-with-defaults_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf-with-defaults?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults","conformance-type":"import"},{"name":"odl-srm-ops_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-ops?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:ops","conformance-type":"import"},{"name":"odl-general-entity_2015-09-30","revision":"2015-09-30","schema":"/rests/modules/odl-general-entity?revision=2015-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:mdsal:core:general-entity","conformance-type":"import"},{"name":"iana-ssh-key-exchange-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-key-exchange-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-key-exchange-algs","conformance-type":"import"},{"name":"node-ssl-connection-error_2019-07-23","revision":"2019-07-23","schema":"/rests/modules/node-ssl-connection-error?revision=2019-07-23","namespace":"urn:opendaylight:node-ssl-connection-error:service","conformance-type":"import"},{"name":"openflow-protocol_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-protocol?revision=2013-07-31","namespace":"urn:opendaylight:openflow:protocol","conformance-type":"import"},{"name":"ietf-udp-server_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-server?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-server","conformance-type":"import"},{"name":"ietf-keystore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-keystore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-keystore","conformance-type":"import","feature":["asymmetric-keys","inline-definitions-supported"]},{"name":"aaa_2016-12-14","revision":"2016-12-14","schema":"/rests/modules/aaa?revision=2016-12-14","namespace":"urn:opendaylight:params:xml:ns:yang:aaa","conformance-type":"import"},{"name":"aaa-cert-rpc_2015-12-15","revision":"2015-12-15","schema":"/rests/modules/aaa-cert-rpc?revision=2015-12-15","namespace":"urn:opendaylight:yang:aaa:cert:rpc","conformance-type":"import"},{"name":"system-notifications_2013-09-27","revision":"2013-09-27","schema":"/rests/modules/system-notifications?revision=2013-09-27","namespace":"urn:opendaylight:openflow:system","conformance-type":"import"},{"name":"sal-flat-batch_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/sal-flat-batch?revision=2016-03-21","namespace":"urn:opendaylight:flat-batch:service","conformance-type":"import"},{"name":"notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netconf:notification:1.0","conformance-type":"import"},{"name":"sal-remote_2014-01-14","revision":"2014-01-14","schema":"/rests/modules/sal-remote?revision=2014-01-14","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:remote","conformance-type":"import"},{"name":"yang-ext_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/yang-ext?revision=2013-07-09","namespace":"urn:opendaylight:yang:extension:yang-ext","conformance-type":"import"},{"name":"opendaylight-multipart-types_2017-01-12","revision":"2017-01-12","schema":"/rests/modules/opendaylight-multipart-types?revision=2017-01-12","namespace":"urn:opendaylight:multipart:types","conformance-type":"import"},{"name":"opendaylight-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-inventory?revision=2013-08-19","namespace":"urn:opendaylight:inventory","conformance-type":"import"},{"name":"sal-queue_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-queue?revision=2015-03-05","namespace":"urn:opendaylight:queue:service","conformance-type":"import"},{"name":"sal-groups-batch_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/sal-groups-batch?revision=2016-03-15","namespace":"urn:opendaylight:groups:service","conformance-type":"import"},{"name":"arbitrator-reconcile_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/arbitrator-reconcile?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:arbitrator-reconcile:service","conformance-type":"import"},{"name":"ietf-yang-metadata_2016-08-05","revision":"2016-08-05","schema":"/rests/modules/ietf-yang-metadata?revision=2016-08-05","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-metadata","conformance-type":"import"},{"name":"opendaylight-arbitrary-bitmask-fields_2016-01-30","revision":"2016-01-30","schema":"/rests/modules/opendaylight-arbitrary-bitmask-fields?revision=2016-01-30","namespace":"urn:opendaylight:arbitrary:bitmask:fields","conformance-type":"import"},{"name":"ietf-udp-client_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-client?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-client","conformance-type":"import","feature":["local-binding"]},{"name":"opendaylight-meter-types_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/opendaylight-meter-types?revision=2013-09-18","namespace":"urn:opendaylight:meter:types","conformance-type":"import"},{"name":"opendaylight-action-types_2013-11-12","revision":"2013-11-12","schema":"/rests/modules/opendaylight-action-types?revision=2013-11-12","namespace":"urn:opendaylight:action:types","conformance-type":"import"},{"name":"sal-role_2015-07-27","revision":"2015-07-27","schema":"/rests/modules/sal-role?revision=2015-07-27","namespace":"urn:opendaylight:role:service","conformance-type":"import"},{"name":"openflow-provider-config_2016-05-10","revision":"2016-05-10","schema":"/rests/modules/openflow-provider-config?revision=2016-05-10","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:provider:config","conformance-type":"import"},{"name":"odl-serviceutils-upgrade_2018-07-02","revision":"2018-07-02","schema":"/rests/modules/odl-serviceutils-upgrade?revision=2018-07-02","namespace":"urn:opendaylight:serviceutils:upgrade","conformance-type":"import"},{"name":"opendaylight-match-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-match-types?revision=2013-10-26","namespace":"urn:opendaylight:model:match:types","conformance-type":"import"},{"name":"ietf-restconf-server_2024-08-14","revision":"2024-08-14","schema":"/rests/modules/ietf-restconf-server?revision=2024-08-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-server","conformance-type":"import","feature":["http-listen","https-listen"]},{"name":"reconciliation-result-state_2017-07-13","revision":"2017-07-13","schema":"/rests/modules/reconciliation-result-state?revision=2017-07-13","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:rf:state","conformance-type":"import"},{"name":"onf-extensions_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/onf-extensions?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf","conformance-type":"import"},{"name":"sal-table_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/sal-table?revision=2013-10-26","namespace":"urn:opendaylight:table:service","conformance-type":"import"},{"name":"iana-http-versions_2026-02-04","revision":"2026-02-04","schema":"/rests/modules/iana-http-versions?revision=2026-02-04","namespace":"urn:ietf:params:xml:ns:yang:iana-http-versions","conformance-type":"import"},{"name":"opendaylight-direct-statistics_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/opendaylight-direct-statistics?revision=2016-05-11","namespace":"urn:opendaylight:direct:statistics","conformance-type":"import"},{"name":"opendaylight-port-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-port-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:port","conformance-type":"import"},{"name":"sal-async-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/sal-async-config?revision=2017-06-19","namespace":"urn:opendaylight:async-config:service","conformance-type":"import"},{"name":"aaa-password-service-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-password-service-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:password:service:config","conformance-type":"import"},{"name":"ietf-yang-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-yang-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-types","conformance-type":"import"},{"name":"opendaylight-queue-statistics_2013-12-16","revision":"2013-12-16","schema":"/rests/modules/opendaylight-queue-statistics?revision=2013-12-16","namespace":"urn:opendaylight:queue:statistics","conformance-type":"import"},{"name":"sal-bundle_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/sal-bundle?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf:bundle:service","conformance-type":"import"},{"name":"ietf-restconf-subscribed-notifications_2019-11-17","revision":"2019-11-17","schema":"/rests/modules/ietf-restconf-subscribed-notifications?revision=2019-11-17","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-subscribed-notifications","conformance-type":"import"},{"name":"sal-meters-batch_2016-03-16","revision":"2016-03-16","schema":"/rests/modules/sal-meters-batch?revision=2016-03-16","namespace":"urn:opendaylight:meters:service","conformance-type":"import"},{"name":"odl-entity-owners","revision":"","schema":"/rests/modules/odl-entity-owners","namespace":"urn:opendaylight:params:xml:ns:yang:controller:entity-owners","conformance-type":"import"},{"name":"sal-experimenter-mp-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-mp-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-mp-message:service","conformance-type":"import"},{"name":"packet-processing_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/packet-processing?revision=2013-07-09","namespace":"urn:opendaylight:packet:service","conformance-type":"import"},{"name":"openflow-configuration_2014-06-30","revision":"2014-06-30","schema":"/rests/modules/openflow-configuration?revision=2014-06-30","namespace":"urn:opendaylight:openflow:config","conformance-type":"import"},{"name":"odl-srm-rpcs_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-rpcs?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:rpc","conformance-type":"import"},{"name":"ietf-netconf-acm_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-netconf-acm?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-acm","conformance-type":"import"},{"name":"iana-crypt-hash_2014-08-06","revision":"2014-08-06","schema":"/rests/modules/iana-crypt-hash?revision=2014-08-06","namespace":"urn:ietf:params:xml:ns:yang:iana-crypt-hash","conformance-type":"import","feature":["crypt-hash-sha-512","crypt-hash-sha-256","crypt-hash-md5"]},{"name":"openflow-extensible-match_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-extensible-match?revision=2015-02-25","namespace":"urn:opendaylight:openflow:oxm","conformance-type":"import"}],"module-set-id":"2"}}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:14.705498" elapsed="0.002887"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:14.705233" elapsed="0.003188"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:14.705211" elapsed="0.003237"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:14.710967" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:14.708752" elapsed="0.002261"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:14.708531" elapsed="0.002516"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:14.708512" elapsed="0.002559"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:14.711666" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:14.711273" elapsed="0.000420"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:14.712022" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:14.711784" elapsed="0.000296"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:14.712595" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:14.712280" elapsed="0.000341"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:14.712104" elapsed="0.000552"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:14.711765" elapsed="0.000913"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:14.713277" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:14.712858" elapsed="0.000446"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:14.713648" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:14.713396" elapsed="0.000309"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:14.714204" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:14.713885" elapsed="0.000346"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:14.713729" elapsed="0.000537"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:14.713376" elapsed="0.000912"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:51:14.714458" elapsed="0.000345"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:51:14.715303" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:14.714987" elapsed="0.000342"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:51:14.715507" elapsed="0.002211"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:51:14.704507" elapsed="0.013333"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:51:14.718197" elapsed="0.000047"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:51:14.717968" elapsed="0.000339"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:14.717917" elapsed="0.000426"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:51:14.727339" level="INFO">${text_normalized} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:51:14.719041" elapsed="0.008346"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:51:14.727463" elapsed="0.000068"/>
</return>
<msg time="2026-04-08T00:51:14.727787" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:51:14.682770" elapsed="0.045124"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:51:14.728371" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:51:14.728553" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="PASS" start="2026-04-08T00:51:14.545800" elapsed="0.182780"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Json_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:14.728910" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:14.728665" elapsed="0.000433"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:14.728647" elapsed="0.000478"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:51:14.729188" elapsed="0.000028"/>
</return>
<arg>session=${session}</arg>
<arg>folder=${RESTCONF_MODULES_DIR}</arg>
<arg>verify=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Add arguments sensible for JSON data, return Get_Templated response text.
Optionally, verification against JSON data (may be iterated) is called.
Only subset of JSON data is verified and returned if JMES path is specified in
file ${folder}/jmespath.expr.</doc>
<status status="PASS" start="2026-04-08T00:51:14.541767" elapsed="0.187551"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:14.537717" elapsed="0.191644"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:14.537697" elapsed="0.191688"/>
</if>
<kw name="Resolve_Shard_Type_Class" owner="ClusterManagement">
<if>
<branch type="IF" condition="'${shard_type}' == 'config'">
<return>
<value>DistributedConfigDatastore</value>
<status status="PASS" start="2026-04-08T00:51:14.729999" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-08T00:51:14.729894" elapsed="0.000164"/>
</branch>
<branch type="ELSE IF" condition="'${shard_type}' == 'operational'">
<return>
<value>DistributedOperationalDatastore</value>
<status status="NOT RUN" start="2026-04-08T00:51:14.730118" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:51:14.730082" elapsed="0.000092"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:14.729876" elapsed="0.000323"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized shard type: ${shard_type}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:14.730344" elapsed="0.000022"/>
</kw>
<msg time="2026-04-08T00:51:14.730466" level="INFO">${type_class} = DistributedConfigDatastore</msg>
<var>${type_class}</var>
<arg>shard_type=${shard_type}</arg>
<doc>Simple lookup for class name corresponding to desired type.</doc>
<status status="PASS" start="2026-04-08T00:51:14.729627" elapsed="0.000865"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:14.731099" level="INFO">${cluster_index} = 3</msg>
<var>${cluster_index}</var>
<arg>${member_index}+${NODE_ROLE_INDEX_START}-1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:14.730658" elapsed="0.000475"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:14.731791" level="INFO">${uri} = jolokia/read/org.opendaylight.controller:Category=Shards,name=member-3-shard-topology-config,type=DistributedConfigDatastore</msg>
<var>${uri}</var>
<arg>${JOLOKIA_READ_URI}:Category=Shards,name=member-${cluster_index}-shard-${shard_name}-${shard_type},type=${type_class}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:14.731318" elapsed="0.000499"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:14.737624" level="INFO">jolokia/read/org.opendaylight.controller:Category=Shards,name=member-3-shard-topology-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:14.737090" elapsed="0.000584"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:14.738292" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:14.737833" elapsed="0.000505"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:51:14.761649" level="INFO">GET Request : url=http://10.30.171.110:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-3-shard-topology-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-3-shard-topology-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:51:14.761860" level="INFO">GET Response : url=http://10.30.171.110:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-3-shard-topology-config,type=DistributedConfigDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Wed, 08 Apr 2026 00:51:14 GMT', 'Expires': 'Tue, 07 Apr 2026 23:51:14 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-3-shard-topology-config,type=DistributedConfigDatastore","type":"read"},"value":{"ReadWriteTransactionCount":0,"SnapshotIndex":-1,"InMemoryJournalLogSize":0,"ReplicatedToAllIndex":-1,"Leader":"member-1-shard-topology-config","LastIndex":-1,"RaftState":"Follower","LastApplied":-1,"LastCommittedTransactionTime":"1970-01-01 00:00:00.000","PeerAddresses":"member-2-shard-topology-config: pekko:\/\/opendaylight-cluster-data@10.30.170.131:2550\/user\/shardmanager-config\/member-2-shard-topology-config, member-1-shard-topology-config: pekko:\/\/opendaylight-cluster-data@10.30.170.48:2550\/user\/shardmanager-config\/member-1-shard-topology-config","LastLogIndex":-1,"LastLeadershipChangeTime":"2026-04-08 00:46:45.985","FollowerInitialSyncStatus":true,"FollowerInfo":[],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"181.6 μs","CurrentTerm":2,"LastTerm":-1,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-topology-config","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":0,"TxCohortCacheSize":0,"PeerVotingStates":"member-2-shard-topology-config: true, member-1-shard-topology-config: true","LastLogTerm":-1,"StatRetrievalError":null,"CommitIndex":-1,"SnapshotTerm":-1,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-3-shard-topology-config","LeadershipChangeCount":1,"InMemoryJournalDataSize":0},"timestamp":1775609474,"status":200} 
 </msg>
<msg time="2026-04-08T00:51:14.762181" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:51:14.750758" elapsed="0.011583"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:14.738413" elapsed="0.024320"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:14.763017" elapsed="0.000033"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:14.762786" elapsed="0.000724"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:14.738391" elapsed="0.025160"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:14.771030" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-3-shard-topology-config,type=DistributedConfigDatastore","type":"read"},"value":{"ReadWriteTransactionCount":0,"SnapshotIndex":-1,"InMemoryJournalLogSize":0,"ReplicatedToAllIndex":-1,"Leader":"member-1-shard-topology-config","LastIndex":-1,"RaftState":"Follower","LastApplied":-1,"LastCommittedTransactionTime":"1970-01-01 00:00:00.000","PeerAddresses":"member-2-shard-topology-config: pekko:\/\/opendaylight-cluster-data@10.30.170.131:2550\/user\/shardmanager-config\/member-2-shard-topology-config, member-1-shard-topology-config: pekko:\/\/opendaylight-cluster-data@10.30.170.48:2550\/user\/shardmanager-config\/member-1-shard-topology-config","LastLogIndex":-1,"LastLeadershipChangeTime":"2026-04-08 00:46:45.985","FollowerInitialSyncStatus":true,"FollowerInfo":[],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"181.6 μs","CurrentTerm":2,"LastTerm":-1,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-topology-config","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":0,"TxCohortCacheSize":0,"PeerVotingStates":"member-2-shard-topology-config: true, member-1-shard-topology-config: true","LastLogTerm":-1,"StatRetrievalError":null,"CommitIndex":-1,"SnapshotTerm":-1,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-3-shard-topology-config","LeadershipChangeCount":1,"InMemoryJournalDataSize":0},"timestamp":1775609474,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:14.766866" elapsed="0.004459"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:14.765556" elapsed="0.005842"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:14.765509" elapsed="0.005945"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:14.776294" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:14.772823" elapsed="0.003614"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:14.771574" elapsed="0.004933"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:14.771547" elapsed="0.005014"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:14.778649" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:14.777594" elapsed="0.001122"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:14.779387" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:14.778893" elapsed="0.000583"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:14.780404" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:14.779870" elapsed="0.000587"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:14.779514" elapsed="0.000995"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:14.778872" elapsed="0.001673"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:14.782058" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:14.781257" elapsed="0.000864"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:14.782787" elapsed="0.000045"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:14.782311" elapsed="0.000575"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:14.783786" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:14.783276" elapsed="0.000564"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:14.782924" elapsed="0.000971"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:14.782290" elapsed="0.001641"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:51:14.784182" elapsed="0.000638"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:51:14.785737" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:14.785139" elapsed="0.000659"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:51:14.786100" elapsed="0.002383"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:51:14.764409" elapsed="0.024243"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:51:14.788866" elapsed="0.000021"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:51:14.788730" elapsed="0.000195"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:14.788709" elapsed="0.000239"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:51:14.792776" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-3-shard-topology-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1775609...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:51:14.789099" elapsed="0.003708"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:51:14.792858" elapsed="0.000041"/>
</return>
<msg time="2026-04-08T00:51:14.793034" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-3-shard-topology-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1775609...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:51:14.732796" elapsed="0.060266"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:51:14.793121" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:51:14.793324" level="INFO">${data_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-3-shard-topology-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1775609...</msg>
<var>${data_text}</var>
<arg>uri=${uri}</arg>
<arg>session=${session}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-08T00:51:14.732027" elapsed="0.061325"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:14.794656" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-3-shard-topology-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1775609474, 'value...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:14.794015" elapsed="0.000680"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-08T00:51:14.794793" elapsed="0.000038"/>
</return>
<msg time="2026-04-08T00:51:14.795022" level="INFO">${data_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-3-shard-topology-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1775609474, 'value...</msg>
<var>${data_object}</var>
<arg>${data_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-08T00:51:14.793641" elapsed="0.001416"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:51:14.795466" level="INFO">${value} = {'AbortTransactionsCount': 0, 'CommitIndex': -1, 'CommittedTransactionsCount': 0, 'CurrentTerm': 2, 'FailedReadTransactionsCount': 0, 'FailedTransactionsCount': 0, 'FollowerInfo': [], 'FollowerInitial...</msg>
<var>${value}</var>
<arg>${data_object}</arg>
<arg>value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:51:14.795255" elapsed="0.000239"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:51:14.795853" level="INFO">${raft_property} = Follower</msg>
<var>${raft_property}</var>
<arg>${value}</arg>
<arg>${property}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:51:14.795650" elapsed="0.000229"/>
</kw>
<return>
<value>${raft_property}</value>
<status status="PASS" start="2026-04-08T00:51:14.795926" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:51:14.796081" level="INFO">${raft_state} = Follower</msg>
<var>${raft_state}</var>
<arg>RaftState</arg>
<arg>${shard_name}</arg>
<arg>${shard_type}</arg>
<arg>${member_index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft property.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T00:51:14.535903" elapsed="0.260203"/>
</kw>
<return>
<value>${raft_state}</value>
<status status="PASS" start="2026-04-08T00:51:14.796182" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:51:14.796339" level="INFO">${raft_state} = Follower</msg>
<var>${raft_state}</var>
<arg>shard_name=${shard_name}</arg>
<arg>shard_type=${ds_type}</arg>
<arg>member_index=${index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft status.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T00:51:14.535193" elapsed="0.261171"/>
</kw>
<if>
<branch type="IF" condition="'Follower' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${follower_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-08T00:51:14.796675" elapsed="0.000197"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:14.796452" elapsed="0.000457"/>
</branch>
<branch type="ELSE IF" condition="'Leader' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${leader_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:14.797079" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:14.796934" elapsed="0.000200"/>
</branch>
<branch type="ELSE IF" condition="${validate}">
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized Raft state: ${raft_state}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:14.797376" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:14.797223" elapsed="0.000222"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:14.796432" elapsed="0.001037"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T00:51:14.535013" elapsed="0.262481"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-08T00:51:14.009751" elapsed="0.787783"/>
</for>
<return>
<value>${leader_list}</value>
<value>${follower_list}</value>
<status status="PASS" start="2026-04-08T00:51:14.797581" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:51:14.797789" level="INFO">${leader_list} = [1]</msg>
<msg time="2026-04-08T00:51:14.797838" level="INFO">${follower_list} = [2, 3]</msg>
<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="PASS" start="2026-04-08T00:51:14.005785" elapsed="0.792077"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T00:51:14.798364" level="INFO">Length is 1.</msg>
<msg time="2026-04-08T00:51:14.798442" level="INFO">${leader_count} = 1</msg>
<var>${leader_count}</var>
<arg>${leader_list}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T00:51:14.798041" elapsed="0.000424"/>
</kw>
<if>
<branch type="IF" condition="${leader_count} &lt; 1">
<kw name="Fail" owner="BuiltIn">
<arg>No leader found.</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:14.798753" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:14.798536" elapsed="0.000270"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:14.798517" elapsed="0.000312"/>
</if>
<kw name="Length Should Be" owner="BuiltIn">
<msg time="2026-04-08T00:51:14.801126" level="INFO">Length is 1.</msg>
<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="PASS" start="2026-04-08T00:51:14.798963" elapsed="0.002237"/>
</kw>
<kw name="Get From List" owner="Collections">
<msg time="2026-04-08T00:51:14.801584" level="INFO">${leader} = 1</msg>
<var>${leader}</var>
<arg>${leader_list}</arg>
<arg>0</arg>
<doc>Returns the value specified with an ``index`` from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:51:14.801368" elapsed="0.000243"/>
</kw>
<return>
<value>${leader}</value>
<value>${follower_list}</value>
<status status="PASS" start="2026-04-08T00:51:14.801658" elapsed="0.000029"/>
</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="PASS" start="2026-04-08T00:51:14.003126" elapsed="0.798688"/>
</kw>
<var name="${shard_name}">topology</var>
<status status="PASS" start="2026-04-08T00:51:14.002903" elapsed="0.798958"/>
</iter>
<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-04-08T00:51:14.806444" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:51:14.805986" elapsed="0.000486"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:51:14.806992" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:51:14.806680" elapsed="0.000339"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:51:14.807063" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:51:14.807239" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:51:14.805607" elapsed="0.001674"/>
</kw>
<kw name="Sort List" owner="Collections">
<arg>${index_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="PASS" start="2026-04-08T00:51:14.807464" elapsed="0.000163"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:51:14.808169" level="INFO">${ds_type} = config</msg>
<var>${ds_type}</var>
<arg>'${shard_type}' != 'config'</arg>
<arg>operational</arg>
<arg>config</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:51:14.807789" elapsed="0.000409"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:51:14.808646" level="INFO">${leader_list} = []</msg>
<var>${leader_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:51:14.808391" elapsed="0.000282"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:51:14.809059" level="INFO">${follower_list} = []</msg>
<var>${follower_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:51:14.808822" elapsed="0.000263"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_Raft_State_Of_Shard_At_Member" owner="ClusterManagement">
<kw name="Get_Raft_Property_From_Shard_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:14.811737" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:14.811389" elapsed="0.000376"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:51:14.811811" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:51:14.811957" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:51:14.810999" elapsed="0.000983"/>
</kw>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Get_As_Json_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:14.897635" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:14.897213" elapsed="0.000457"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:51:14.898490" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:51:14.898205" elapsed="0.000371">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-08T00:51:14.898671" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:51:14.897850" elapsed="0.000845"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:51:14.899271" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:51:14.898864" elapsed="0.000435"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T00:51:14.899608" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-08T00:51:14.899800" level="INFO">${template} = /rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T00:51:14.899463" elapsed="0.000369"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:14.900321" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:14.900036" elapsed="0.000332"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:14.901389" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:14.901100" elapsed="0.000335"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-08T00:51:14.901878" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-08T00:51:14.901597" elapsed="0.000318"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:14.902283" elapsed="0.000023"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:14.902487" elapsed="0.000024"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:14.902662" elapsed="0.000021"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-08T00:51:14.902127" elapsed="0.000677"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-08T00:51:14.901974" elapsed="0.000870"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-08T00:51:14.902899" elapsed="0.000038"/>
</return>
<msg time="2026-04-08T00:51:14.903076" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-08T00:51:14.900778" elapsed="0.002324"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:14.900461" elapsed="0.002673"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:14.903332" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:14.903179" elapsed="0.000210"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:14.900431" elapsed="0.002980"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:14.904006" level="INFO">${final_text} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:14.903554" elapsed="0.000480"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T00:51:14.904082" 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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="PASS" start="2026-04-08T00:51:14.896583" elapsed="0.007640"/>
</kw>
<msg time="2026-04-08T00:51:14.904278" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:51:14.884083" elapsed="0.020278"/>
</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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:14.916465" elapsed="0.000041"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:14.928583" elapsed="0.000040"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:14.940527" elapsed="0.000040"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:14.941295" elapsed="0.000056"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:14.942053" elapsed="0.000035"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:14.942627" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:14.942480" elapsed="0.000202"/>
</branch>
<status status="NOT RUN" start="2026-04-08T00:51:14.942464" elapsed="0.000242"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:14.942862" elapsed="0.000021"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:14.943045" elapsed="0.000020"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:14.943240" elapsed="0.000022"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-08T00:51:14.942414" elapsed="0.000903"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-08T00:51:14.942186" elapsed="0.001170"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:14.944044" elapsed="0.000035"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-08T00:51:14.944216" elapsed="0.000050"/>
</return>
<msg time="2026-04-08T00:51:14.944444" level="INFO">${uri} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-08T00:51:14.877770" elapsed="0.066780"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:51:14.947455" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:51:14.947181" elapsed="0.000349">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-08T00:51:14.947744" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:51:14.946711" elapsed="0.001082"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:14.948325" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:14.947927" elapsed="0.000465"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:14.949010" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:14.948709" elapsed="0.000328"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:14.948431" elapsed="0.000651"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:14.947875" elapsed="0.001245"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:51:14.952285" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:51:14.949917" elapsed="0.002416"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-08T00:51:14.952410" elapsed="0.000064"/>
</return>
<msg time="2026-04-08T00:51:14.952723" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:51:14.945562" elapsed="0.007266"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:51:14.955588" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:51:14.955334" elapsed="0.000319">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-08T00:51:14.955842" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:51:14.954887" elapsed="0.001000"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-08T00:51:14.956287" elapsed="0.000081"/>
</return>
<status status="PASS" start="2026-04-08T00:51:14.956019" elapsed="0.000417"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:14.955966" elapsed="0.000510"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:14.957206" elapsed="0.000037"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:14.957987" elapsed="0.000036"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-08T00:51:14.958097" elapsed="0.000049"/>
</return>
<msg time="2026-04-08T00:51:14.960364" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:51:14.953655" elapsed="0.006818"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:14.964422" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:14.964014" elapsed="0.000508"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:14.965625" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:14.965230" elapsed="0.000493"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:51:14.977630" level="INFO">GET Request : url=http://10.30.170.48:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 path_url=/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01ju7g9ih47awu1dako8be5k84o113.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:51:14.978076" level="INFO">GET Response : url=http://10.30.170.48:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Transfer-Encoding': 'chunked'} 
 body={"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","hidden-symmetric-keys","encrypted-private-keys","asymmetrically-encrypted-value-format","cms-encrypted-data-format","cleartext-private-keys","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["ssh-client-keepalives","client-ident-hostbased","client-ident-publickey","client-ident-password"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-ex... (set the log level to DEBUG or TRACE to see the full content) 
 </msg>
<msg time="2026-04-08T00:51:14.978324" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:51:14.968116" elapsed="0.010238"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:14.965898" elapsed="0.012525"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:14.978739" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:14.978470" elapsed="0.000348"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:14.965800" elapsed="0.013055"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:14.983782" level="INFO">{"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","hidden-symmetric-keys","encrypted-private-keys","asymmetrically-encrypted-value-format","cms-encrypted-data-format","cleartext-private-keys","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["ssh-client-keepalives","client-ident-hostbased","client-ident-publickey","client-ident-password"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-experimenter-types?revision=2015-10-20","namespace":"urn:opendaylight:openflowplugin:experimenter:types","conformance-type":"import"},{"name":"ietf-ip_2018-02-22","revision":"2018-02-22","schema":"/rests/modules/ietf-ip?revision=2018-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-ip","conformance-type":"import","feature":["ipv6-privacy-autoconf","ipv4-non-contiguous-netmasks"]},{"name":"ietf-tcp-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-client","conformance-type":"import","feature":["local-binding-supported","tcp-client-keepalives"]},{"name":"node-config_2014-10-15","revision":"2014-10-15","schema":"/rests/modules/node-config?revision=2014-10-15","namespace":"urn:opendaylight:module:config","conformance-type":"import"},{"name":"ietf-restconf_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf","conformance-type":"import"},{"name":"ietf-datastores_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-datastores?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-datastores","conformance-type":"import"},{"name":"ietf-yang-patch_2017-02-22","revision":"2017-02-22","schema":"/rests/modules/ietf-yang-patch?revision=2017-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-patch","conformance-type":"import"},{"name":"sal-group_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-group?revision=2013-09-18","namespace":"urn:opendaylight:group:service","conformance-type":"import"},{"name":"odl-codegen-extensions_2024-06-27","revision":"2024-06-27","schema":"/rests/modules/odl-codegen-extensions?revision=2024-06-27","namespace":"urn:opendaylight:yang:extension:codegen","conformance-type":"import"},{"name":"sal-meter_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-meter?revision=2013-09-18","namespace":"urn:opendaylight:meter:service","conformance-type":"import"},{"name":"ietf-interfaces_2018-02-20","revision":"2018-02-20","schema":"/rests/modules/ietf-interfaces?revision=2018-02-20","namespace":"urn:ietf:params:xml:ns:yang:ietf-interfaces","conformance-type":"import","feature":["pre-provisioning","if-mib","arbitrary-names"]},{"name":"opendaylight-l2-types_2013-08-27","revision":"2013-08-27","schema":"/rests/modules/opendaylight-l2-types?revision=2013-08-27","namespace":"urn:opendaylight:l2:types","conformance-type":"import"},{"name":"opendaylight-flow-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-flow-types?revision=2013-10-26","namespace":"urn:opendaylight:flow:types","conformance-type":"import"},{"name":"lldp-speaker-config_2016-05-12","revision":"2016-05-12","schema":"/rests/modules/lldp-speaker-config?revision=2016-05-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker:config","conformance-type":"import"},{"name":"aaa-cert_2015-11-26","revision":"2015-11-26","schema":"/rests/modules/aaa-cert?revision=2015-11-26","namespace":"urn:opendaylight:yang:aaa:cert","conformance-type":"import"},{"name":"openflow-action_2015-02-03","revision":"2015-02-03","schema":"/rests/modules/openflow-action?revision=2015-02-03","namespace":"urn:opendaylight:openflow:common:action","conformance-type":"import"},{"name":"openflow-approved-extensions_2016-08-02","revision":"2016-08-02","schema":"/rests/modules/openflow-approved-extensions?revision=2016-08-02","namespace":"urn:opendaylight:openflow:approved:extensions","conformance-type":"import"},{"name":"nc-notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/nc-notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netmod:notification","conformance-type":"import"},{"name":"ietf-netconf-nmda_2019-01-07","revision":"2019-01-07","schema":"/rests/modules/ietf-netconf-nmda?revision=2019-01-07","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-nmda","conformance-type":"import","feature":["with-defaults","origin"]},{"name":"ietf-tcp-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-common","conformance-type":"import","feature":["keepalives-supported"]},{"name":"network-topology_2013-10-21","revision":"2013-10-21","schema":"/rests/modules/network-topology?revision=2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:network-topology","conformance-type":"import"},{"name":"aaa-encrypt-service-config_2024-02-02","revision":"2024-02-02","schema":"/rests/modules/aaa-encrypt-service-config?revision=2024-02-02","namespace":"config:aaa:authn:encrypt:service:config","conformance-type":"import"},{"name":"openflow-instruction_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-instruction?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:instruction","conformance-type":"import"},{"name":"ietf-tls-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-client","conformance-type":"import","feature":["client-ident-x509-cert","server-auth-x509-cert"]},{"name":"opendaylight-group-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-group-statistics?revision=2013-11-11","namespace":"urn:opendaylight:group:statistics","conformance-type":"import"},{"name":"cluster-admin_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/cluster-admin?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:cluster:admin","conformance-type":"import"},{"name":"opendaylight-flow-statistics_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-flow-statistics?revision=2013-08-19","namespace":"urn:opendaylight:flow:statistics","conformance-type":"import"},{"name":"opendaylight-table-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-table-types?revision=2013-10-26","namespace":"urn:opendaylight:table:types","conformance-type":"import"},{"name":"forwarding-rules-manager-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/forwarding-rules-manager-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:forwardingrules-manager:config","conformance-type":"import"},{"name":"odl-srm-types_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-types?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:types","conformance-type":"import"},{"name":"ietf-x509-cert-to-name_2014-12-10","revision":"2014-12-10","schema":"/rests/modules/ietf-x509-cert-to-name?revision=2014-12-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-x509-cert-to-name","conformance-type":"import"},{"name":"flow-node-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-node-inventory?revision=2013-08-19","namespace":"urn:opendaylight:flow:inventory","conformance-type":"import"},{"name":"flow-errors_2013-11-16","revision":"2013-11-16","schema":"/rests/modules/flow-errors?revision=2013-11-16","namespace":"urn:opendaylight:flow:errors","conformance-type":"import"},{"name":"ietf-netconf_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:netconf:base:1.0","conformance-type":"import","feature":["xpath","url","rollback-on-error","validate","startup","candidate","confirmed-commit","writable-running"]},{"name":"iana-ssh-public-key-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-public-key-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-public-key-algs","conformance-type":"import"},{"name":"aaa-cert-mdsal_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/aaa-cert-mdsal?revision=2016-03-21","namespace":"urn:opendaylight:yang:aaa:cert:mdsal","conformance-type":"import"},{"name":"odl-device-notification_2024-02-18","revision":"2024-02-18","schema":"/rests/modules/odl-device-notification?revision=2024-02-18","namespace":"urn:opendaylight:device:notification","conformance-type":"import"},{"name":"ietf-origin_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-origin?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-origin","conformance-type":"import"},{"name":"openflow-augments_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-augments?revision=2015-02-25","namespace":"urn:opendaylight:openflow:augments","conformance-type":"import"},{"name":"iana-ssh-encryption-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-encryption-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-encryption-algs","conformance-type":"import"},{"name":"ietf-truststore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-truststore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-truststore","conformance-type":"import","feature":["inline-definitions-supported"]},{"name":"distributed-datastore-provider_2025-01-30","revision":"2025-01-30","schema":"/rests/modules/distributed-datastore-provider?revision=2025-01-30","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:distributed-datastore-provider","conformance-type":"import"},{"name":"opendaylight-group-types_2013-10-18","revision":"2013-10-18","schema":"/rests/modules/opendaylight-group-types?revision=2013-10-18","namespace":"urn:opendaylight:group:types","conformance-type":"import"},{"name":"sal-remote-augment_2023-11-03","revision":"2023-11-03","schema":"/rests/modules/sal-remote-augment?revision=2023-11-03","namespace":"urn:sal:restconf:event:subscription","conformance-type":"import"},{"name":"opendaylight-ipv6-arbitrary-bitmask-fields_2016-02-24","revision":"2016-02-24","schema":"/rests/modules/opendaylight-ipv6-arbitrary-bitmask-fields?revision=2016-02-24","namespace":"urn:opendaylight:opendaylight-ipv6-arbitrary-bitmask-fields","conformance-type":"import"},{"name":"sal-flows-batch_2016-03-14","revision":"2016-03-14","schema":"/rests/modules/sal-flows-batch?revision=2016-03-14","namespace":"urn:opendaylight:flows:service","conformance-type":"import"},{"name":"ietf-tls-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-common","conformance-type":"import","feature":["tls12","hello-params","tls13"]},{"name":"openflow-types_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-types?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:types","conformance-type":"import"},{"name":"ietf-netconf-with-defaults_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf-with-defaults?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults","conformance-type":"import"},{"name":"odl-srm-ops_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-ops?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:ops","conformance-type":"import"},{"name":"odl-general-entity_2015-09-30","revision":"2015-09-30","schema":"/rests/modules/odl-general-entity?revision=2015-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:mdsal:core:general-entity","conformance-type":"import"},{"name":"iana-ssh-key-exchange-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-key-exchange-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-key-exchange-algs","conformance-type":"import"},{"name":"node-ssl-connection-error_2019-07-23","revision":"2019-07-23","schema":"/rests/modules/node-ssl-connection-error?revision=2019-07-23","namespace":"urn:opendaylight:node-ssl-connection-error:service","conformance-type":"import"},{"name":"openflow-protocol_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-protocol?revision=2013-07-31","namespace":"urn:opendaylight:openflow:protocol","conformance-type":"import"},{"name":"ietf-udp-server_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-server?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-server","conformance-type":"import"},{"name":"ietf-keystore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-keystore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-keystore","conformance-type":"import","feature":["asymmetric-keys","inline-definitions-supported"]},{"name":"aaa_2016-12-14","revision":"2016-12-14","schema":"/rests/modules/aaa?revision=2016-12-14","namespace":"urn:opendaylight:params:xml:ns:yang:aaa","conformance-type":"import"},{"name":"aaa-cert-rpc_2015-12-15","revision":"2015-12-15","schema":"/rests/modules/aaa-cert-rpc?revision=2015-12-15","namespace":"urn:opendaylight:yang:aaa:cert:rpc","conformance-type":"import"},{"name":"system-notifications_2013-09-27","revision":"2013-09-27","schema":"/rests/modules/system-notifications?revision=2013-09-27","namespace":"urn:opendaylight:openflow:system","conformance-type":"import"},{"name":"sal-flat-batch_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/sal-flat-batch?revision=2016-03-21","namespace":"urn:opendaylight:flat-batch:service","conformance-type":"import"},{"name":"notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netconf:notification:1.0","conformance-type":"import"},{"name":"sal-remote_2014-01-14","revision":"2014-01-14","schema":"/rests/modules/sal-remote?revision=2014-01-14","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:remote","conformance-type":"import"},{"name":"yang-ext_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/yang-ext?revision=2013-07-09","namespace":"urn:opendaylight:yang:extension:yang-ext","conformance-type":"import"},{"name":"opendaylight-multipart-types_2017-01-12","revision":"2017-01-12","schema":"/rests/modules/opendaylight-multipart-types?revision=2017-01-12","namespace":"urn:opendaylight:multipart:types","conformance-type":"import"},{"name":"opendaylight-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-inventory?revision=2013-08-19","namespace":"urn:opendaylight:inventory","conformance-type":"import"},{"name":"sal-queue_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-queue?revision=2015-03-05","namespace":"urn:opendaylight:queue:service","conformance-type":"import"},{"name":"sal-groups-batch_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/sal-groups-batch?revision=2016-03-15","namespace":"urn:opendaylight:groups:service","conformance-type":"import"},{"name":"arbitrator-reconcile_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/arbitrator-reconcile?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:arbitrator-reconcile:service","conformance-type":"import"},{"name":"ietf-yang-metadata_2016-08-05","revision":"2016-08-05","schema":"/rests/modules/ietf-yang-metadata?revision=2016-08-05","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-metadata","conformance-type":"import"},{"name":"opendaylight-arbitrary-bitmask-fields_2016-01-30","revision":"2016-01-30","schema":"/rests/modules/opendaylight-arbitrary-bitmask-fields?revision=2016-01-30","namespace":"urn:opendaylight:arbitrary:bitmask:fields","conformance-type":"import"},{"name":"ietf-udp-client_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-client?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-client","conformance-type":"import","feature":["local-binding"]},{"name":"opendaylight-meter-types_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/opendaylight-meter-types?revision=2013-09-18","namespace":"urn:opendaylight:meter:types","conformance-type":"import"},{"name":"opendaylight-action-types_2013-11-12","revision":"2013-11-12","schema":"/rests/modules/opendaylight-action-types?revision=2013-11-12","namespace":"urn:opendaylight:action:types","conformance-type":"import"},{"name":"sal-role_2015-07-27","revision":"2015-07-27","schema":"/rests/modules/sal-role?revision=2015-07-27","namespace":"urn:opendaylight:role:service","conformance-type":"import"},{"name":"openflow-provider-config_2016-05-10","revision":"2016-05-10","schema":"/rests/modules/openflow-provider-config?revision=2016-05-10","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:provider:config","conformance-type":"import"},{"name":"odl-serviceutils-upgrade_2018-07-02","revision":"2018-07-02","schema":"/rests/modules/odl-serviceutils-upgrade?revision=2018-07-02","namespace":"urn:opendaylight:serviceutils:upgrade","conformance-type":"import"},{"name":"opendaylight-match-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-match-types?revision=2013-10-26","namespace":"urn:opendaylight:model:match:types","conformance-type":"import"},{"name":"ietf-restconf-server_2024-08-14","revision":"2024-08-14","schema":"/rests/modules/ietf-restconf-server?revision=2024-08-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-server","conformance-type":"import","feature":["http-listen","https-listen"]},{"name":"reconciliation-result-state_2017-07-13","revision":"2017-07-13","schema":"/rests/modules/reconciliation-result-state?revision=2017-07-13","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:rf:state","conformance-type":"import"},{"name":"onf-extensions_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/onf-extensions?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf","conformance-type":"import"},{"name":"sal-table_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/sal-table?revision=2013-10-26","namespace":"urn:opendaylight:table:service","conformance-type":"import"},{"name":"iana-http-versions_2026-02-04","revision":"2026-02-04","schema":"/rests/modules/iana-http-versions?revision=2026-02-04","namespace":"urn:ietf:params:xml:ns:yang:iana-http-versions","conformance-type":"import"},{"name":"opendaylight-direct-statistics_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/opendaylight-direct-statistics?revision=2016-05-11","namespace":"urn:opendaylight:direct:statistics","conformance-type":"import"},{"name":"opendaylight-port-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-port-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:port","conformance-type":"import"},{"name":"sal-async-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/sal-async-config?revision=2017-06-19","namespace":"urn:opendaylight:async-config:service","conformance-type":"import"},{"name":"aaa-password-service-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-password-service-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:password:service:config","conformance-type":"import"},{"name":"ietf-yang-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-yang-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-types","conformance-type":"import"},{"name":"opendaylight-queue-statistics_2013-12-16","revision":"2013-12-16","schema":"/rests/modules/opendaylight-queue-statistics?revision=2013-12-16","namespace":"urn:opendaylight:queue:statistics","conformance-type":"import"},{"name":"sal-bundle_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/sal-bundle?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf:bundle:service","conformance-type":"import"},{"name":"ietf-restconf-subscribed-notifications_2019-11-17","revision":"2019-11-17","schema":"/rests/modules/ietf-restconf-subscribed-notifications?revision=2019-11-17","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-subscribed-notifications","conformance-type":"import"},{"name":"sal-meters-batch_2016-03-16","revision":"2016-03-16","schema":"/rests/modules/sal-meters-batch?revision=2016-03-16","namespace":"urn:opendaylight:meters:service","conformance-type":"import"},{"name":"odl-entity-owners","revision":"","schema":"/rests/modules/odl-entity-owners","namespace":"urn:opendaylight:params:xml:ns:yang:controller:entity-owners","conformance-type":"import"},{"name":"sal-experimenter-mp-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-mp-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-mp-message:service","conformance-type":"import"},{"name":"packet-processing_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/packet-processing?revision=2013-07-09","namespace":"urn:opendaylight:packet:service","conformance-type":"import"},{"name":"openflow-configuration_2014-06-30","revision":"2014-06-30","schema":"/rests/modules/openflow-configuration?revision=2014-06-30","namespace":"urn:opendaylight:openflow:config","conformance-type":"import"},{"name":"odl-srm-rpcs_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-rpcs?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:rpc","conformance-type":"import"},{"name":"ietf-netconf-acm_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-netconf-acm?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-acm","conformance-type":"import"},{"name":"iana-crypt-hash_2014-08-06","revision":"2014-08-06","schema":"/rests/modules/iana-crypt-hash?revision=2014-08-06","namespace":"urn:ietf:params:xml:ns:yang:iana-crypt-hash","conformance-type":"import","feature":["crypt-hash-sha-512","crypt-hash-sha-256","crypt-hash-md5"]},{"name":"openflow-extensible-match_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-extensible-match?revision=2015-02-25","namespace":"urn:opendaylight:openflow:oxm","conformance-type":"import"}],"module-set-id":"2"}}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:14.980671" elapsed="0.003733"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:14.980444" elapsed="0.004016"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:14.980420" elapsed="0.004086"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:14.988050" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:14.984966" elapsed="0.003151"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:14.984644" elapsed="0.003604"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:14.984615" elapsed="0.003682"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:14.989126" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:14.988568" elapsed="0.000619"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:14.989703" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:14.989343" elapsed="0.000443"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:14.990612" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:14.990098" elapsed="0.000557"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:14.989821" elapsed="0.000886"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:14.989314" elapsed="0.001423"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:14.991543" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:14.990994" elapsed="0.000588"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:14.992047" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:14.991715" elapsed="0.000413"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:14.992846" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:14.992420" elapsed="0.000464"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:14.992193" elapsed="0.000740"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:14.991686" elapsed="0.001278"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:51:14.993223" elapsed="0.000558"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:51:14.994533" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:14.994060" elapsed="0.000506"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:51:14.994754" elapsed="0.002258"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:51:14.979643" elapsed="0.017493"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:51:14.997579" elapsed="0.000049"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:51:14.997323" elapsed="0.000371"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:14.997237" elapsed="0.000494"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:51:15.006902" level="INFO">${text_normalized} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:51:14.998461" elapsed="0.008492"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:51:15.007032" elapsed="0.000068"/>
</return>
<msg time="2026-04-08T00:51:15.007388" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:51:14.961229" elapsed="0.046272"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:51:15.007973" elapsed="0.000031"/>
</return>
<msg time="2026-04-08T00:51:15.008174" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="PASS" start="2026-04-08T00:51:14.820320" elapsed="0.187885"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Json_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:15.008542" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:15.008293" elapsed="0.000444"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:15.008273" elapsed="0.000494"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:51:15.008803" elapsed="0.000028"/>
</return>
<arg>session=${session}</arg>
<arg>folder=${RESTCONF_MODULES_DIR}</arg>
<arg>verify=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Add arguments sensible for JSON data, return Get_Templated response text.
Optionally, verification against JSON data (may be iterated) is called.
Only subset of JSON data is verified and returned if JMES path is specified in
file ${folder}/jmespath.expr.</doc>
<status status="PASS" start="2026-04-08T00:51:14.816202" elapsed="0.192733"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:14.812049" elapsed="0.196931"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:14.812032" elapsed="0.196974"/>
</if>
<kw name="Resolve_Shard_Type_Class" owner="ClusterManagement">
<if>
<branch type="IF" condition="'${shard_type}' == 'config'">
<return>
<value>DistributedConfigDatastore</value>
<status status="PASS" start="2026-04-08T00:51:15.009655" elapsed="0.000032"/>
</return>
<status status="PASS" start="2026-04-08T00:51:15.009545" elapsed="0.000179"/>
</branch>
<branch type="ELSE IF" condition="'${shard_type}' == 'operational'">
<return>
<value>DistributedOperationalDatastore</value>
<status status="NOT RUN" start="2026-04-08T00:51:15.009788" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:51:15.009749" elapsed="0.000080"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:15.009526" elapsed="0.000325"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized shard type: ${shard_type}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:15.009998" elapsed="0.000022"/>
</kw>
<msg time="2026-04-08T00:51:15.010121" level="INFO">${type_class} = DistributedConfigDatastore</msg>
<var>${type_class}</var>
<arg>shard_type=${shard_type}</arg>
<doc>Simple lookup for class name corresponding to desired type.</doc>
<status status="PASS" start="2026-04-08T00:51:15.009254" elapsed="0.000893"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:15.010730" level="INFO">${cluster_index} = 1</msg>
<var>${cluster_index}</var>
<arg>${member_index}+${NODE_ROLE_INDEX_START}-1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:15.010334" elapsed="0.000428"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:15.011409" level="INFO">${uri} = jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-default-config,type=DistributedConfigDatastore</msg>
<var>${uri}</var>
<arg>${JOLOKIA_READ_URI}:Category=Shards,name=member-${cluster_index}-shard-${shard_name}-${shard_type},type=${type_class}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:15.010919" elapsed="0.000517"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:15.017028" level="INFO">jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-default-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:15.016592" elapsed="0.000483"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:15.017702" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:15.017243" elapsed="0.000503"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:51:15.036036" level="INFO">GET Request : url=http://10.30.170.48:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-default-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-default-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:51:15.036194" level="INFO">GET Response : url=http://10.30.170.48:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-default-config,type=DistributedConfigDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Wed, 08 Apr 2026 00:51:15 GMT', 'Expires': 'Tue, 07 Apr 2026 23:51:15 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-1-shard-default-config,type=DistributedConfigDatastore","type":"read"},"value":{"ReadWriteTransactionCount":21,"SnapshotIndex":73,"InMemoryJournalLogSize":1,"ReplicatedToAllIndex":73,"Leader":"member-1-shard-default-config","LastIndex":74,"RaftState":"Leader","LastApplied":74,"LastCommittedTransactionTime":"2026-04-08 00:46:46.951","PeerAddresses":"member-3-shard-default-config: pekko:\/\/opendaylight-cluster-data@10.30.171.110:2550\/user\/shardmanager-config\/member-3-shard-default-config, member-2-shard-default-config: pekko:\/\/opendaylight-cluster-data@10.30.170.131:2550\/user\/shardmanager-config\/member-2-shard-default-config","LastLogIndex":74,"LastLeadershipChangeTime":"2026-04-08 00:46:45.929","FollowerInitialSyncStatus":false,"FollowerInfo":[{"timeSinceLastActivity":"00:00:00.348","active":true,"matchIndex":74,"voting":true,"id":"member-3-shard-default-config","nextIndex":75},{"timeSinceLastActivity":"00:00:00.348","active":true,"matchIndex":74,"voting":true,"id":"member-2-shard-default-config","nextIndex":75}],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"460.5 μs","CurrentTerm":2,"LastTerm":2,"FailedTransactionsCount":3,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-default-config","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":7,"TxCohortCacheSize":0,"PeerVotingStates":"member-3-shard-default-config: true, member-2-shard-default-config: true","LastLogTerm":2,"StatRetrievalError":null,"CommitIndex":74,"SnapshotTerm":2,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":18,"ShardName":"member-1-shard-default-config","LeadershipChangeCount":1,"InMemoryJournalDataSize":10675},"timestamp":1775609475,"status":200} 
 </msg>
<msg time="2026-04-08T00:51:15.036397" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:51:15.028648" elapsed="0.007855"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:15.017814" elapsed="0.018947"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:15.036953" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:15.036794" elapsed="0.000508"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:15.017795" elapsed="0.019534"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:15.042072" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-1-shard-default-config,type=DistributedConfigDatastore","type":"read"},"value":{"ReadWriteTransactionCount":21,"SnapshotIndex":73,"InMemoryJournalLogSize":1,"ReplicatedToAllIndex":73,"Leader":"member-1-shard-default-config","LastIndex":74,"RaftState":"Leader","LastApplied":74,"LastCommittedTransactionTime":"2026-04-08 00:46:46.951","PeerAddresses":"member-3-shard-default-config: pekko:\/\/opendaylight-cluster-data@10.30.171.110:2550\/user\/shardmanager-config\/member-3-shard-default-config, member-2-shard-default-config: pekko:\/\/opendaylight-cluster-data@10.30.170.131:2550\/user\/shardmanager-config\/member-2-shard-default-config","LastLogIndex":74,"LastLeadershipChangeTime":"2026-04-08 00:46:45.929","FollowerInitialSyncStatus":false,"FollowerInfo":[{"timeSinceLastActivity":"00:00:00.348","active":true,"matchIndex":74,"voting":true,"id":"member-3-shard-default-config","nextIndex":75},{"timeSinceLastActivity":"00:00:00.348","active":true,"matchIndex":74,"voting":true,"id":"member-2-shard-default-config","nextIndex":75}],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"460.5 μs","CurrentTerm":2,"LastTerm":2,"FailedTransactionsCount":3,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-default-config","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":7,"TxCohortCacheSize":0,"PeerVotingStates":"member-3-shard-default-config: true, member-2-shard-default-config: true","LastLogTerm":2,"StatRetrievalError":null,"CommitIndex":74,"SnapshotTerm":2,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":18,"ShardName":"member-1-shard-default-config","LeadershipChangeCount":1,"InMemoryJournalDataSize":10675},"timestamp":1775609475,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:15.039521" elapsed="0.002682"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:15.038620" elapsed="0.003633"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:15.038600" elapsed="0.003692"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:15.046795" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:15.043605" elapsed="0.003325"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:15.042374" elapsed="0.004625"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:15.042356" elapsed="0.004695"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:15.049212" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:15.048118" elapsed="0.001361"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:15.050438" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:15.049713" elapsed="0.000848"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:15.051916" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:15.051080" elapsed="0.000899"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:15.050613" elapsed="0.001435"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:15.049684" elapsed="0.002413"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:15.054066" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:15.052961" elapsed="0.001191"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:15.054889" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:15.054413" elapsed="0.000564"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:15.055878" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:15.055372" elapsed="0.000554"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:15.055014" elapsed="0.000962"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:15.054383" elapsed="0.001628"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:51:15.056253" elapsed="0.000632"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:51:15.057738" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:15.057207" elapsed="0.000592"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:51:15.058083" elapsed="0.002423"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:51:15.037902" elapsed="0.022764"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:51:15.060874" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:51:15.060743" elapsed="0.000178"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:15.060723" elapsed="0.000221"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:51:15.064665" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-1-shard-default-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 17756094...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:51:15.061091" elapsed="0.003604"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:51:15.064747" elapsed="0.000034"/>
</return>
<msg time="2026-04-08T00:51:15.064953" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-1-shard-default-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 17756094...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:51:15.012458" elapsed="0.052523"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:51:15.065040" elapsed="0.000027"/>
</return>
<msg time="2026-04-08T00:51:15.065205" level="INFO">${data_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-1-shard-default-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 17756094...</msg>
<var>${data_text}</var>
<arg>uri=${uri}</arg>
<arg>session=${session}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-08T00:51:15.011652" elapsed="0.053580"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:15.066365" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-1-shard-default-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1775609475, 'value'...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:15.065837" elapsed="0.000557"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-08T00:51:15.066444" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:51:15.066622" level="INFO">${data_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-1-shard-default-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1775609475, 'value'...</msg>
<var>${data_object}</var>
<arg>${data_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-08T00:51:15.065495" elapsed="0.001153"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:51:15.067005" level="INFO">${value} = {'AbortTransactionsCount': 0, 'CommitIndex': 74, 'CommittedTransactionsCount': 7, 'CurrentTerm': 2, 'FailedReadTransactionsCount': 0, 'FailedTransactionsCount': 3, 'FollowerInfo': [{'active': True, 'i...</msg>
<var>${value}</var>
<arg>${data_object}</arg>
<arg>value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:51:15.066803" elapsed="0.000230"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:51:15.067471" level="INFO">${raft_property} = Leader</msg>
<var>${raft_property}</var>
<arg>${value}</arg>
<arg>${property}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:51:15.067265" elapsed="0.000232"/>
</kw>
<return>
<value>${raft_property}</value>
<status status="PASS" start="2026-04-08T00:51:15.067543" elapsed="0.000027"/>
</return>
<msg time="2026-04-08T00:51:15.067693" level="INFO">${raft_state} = Leader</msg>
<var>${raft_state}</var>
<arg>RaftState</arg>
<arg>${shard_name}</arg>
<arg>${shard_type}</arg>
<arg>${member_index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft property.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T00:51:14.810388" elapsed="0.257331"/>
</kw>
<return>
<value>${raft_state}</value>
<status status="PASS" start="2026-04-08T00:51:15.067776" elapsed="0.000026"/>
</return>
<msg time="2026-04-08T00:51:15.067924" level="INFO">${raft_state} = Leader</msg>
<var>${raft_state}</var>
<arg>shard_name=${shard_name}</arg>
<arg>shard_type=${ds_type}</arg>
<arg>member_index=${index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft status.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T00:51:14.809593" elapsed="0.258355"/>
</kw>
<if>
<branch type="IF" condition="'Follower' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${follower_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:15.068259" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:15.068028" elapsed="0.000288"/>
</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="PASS" start="2026-04-08T00:51:15.068546" elapsed="0.000188"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:15.068339" elapsed="0.000432"/>
</branch>
<branch type="ELSE IF" condition="${validate}">
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized Raft state: ${raft_state}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:15.068939" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:15.068796" elapsed="0.000194"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:15.068011" elapsed="0.001001"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T00:51:14.809420" elapsed="0.259616"/>
</iter>
<iter>
<kw name="Get_Raft_State_Of_Shard_At_Member" owner="ClusterManagement">
<kw name="Get_Raft_Property_From_Shard_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:15.071521" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:15.071194" elapsed="0.000354"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:51:15.071593" elapsed="0.001514"/>
</return>
<msg time="2026-04-08T00:51:15.073289" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:51:15.070824" elapsed="0.002494"/>
</kw>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Get_As_Json_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:15.155719" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:15.155309" elapsed="0.000442"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:51:15.156620" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:51:15.156346" elapsed="0.000359">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-08T00:51:15.156800" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:51:15.155923" elapsed="0.000902"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:51:15.157422" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:51:15.156991" elapsed="0.000459"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T00:51:15.157760" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-08T00:51:15.157926" level="INFO">${template} = /rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T00:51:15.157615" elapsed="0.000337"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:15.158384" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:15.158110" elapsed="0.000320"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:15.159435" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:15.159167" elapsed="0.000317"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-08T00:51:15.159924" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-08T00:51:15.159645" elapsed="0.000305"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:15.160309" elapsed="0.000022"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:15.160513" elapsed="0.000024"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:15.160688" elapsed="0.000021"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-08T00:51:15.160169" elapsed="0.000575"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-08T00:51:15.160004" elapsed="0.000773"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-08T00:51:15.160825" elapsed="0.000032"/>
</return>
<msg time="2026-04-08T00:51:15.160990" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-08T00:51:15.158825" elapsed="0.002191"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:15.158509" elapsed="0.002540"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:15.161252" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:15.161074" elapsed="0.000236"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:15.158485" elapsed="0.002846"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:15.161962" level="INFO">${final_text} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:15.161477" elapsed="0.000523"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T00:51:15.162052" elapsed="0.000030"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="PASS" start="2026-04-08T00:51:15.154654" elapsed="0.007544"/>
</kw>
<msg time="2026-04-08T00:51:15.162257" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:51:15.141847" elapsed="0.020494"/>
</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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:15.174556" elapsed="0.000043"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:15.186521" elapsed="0.000042"/>
</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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:15.198504" elapsed="0.000040"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:15.199265" elapsed="0.000037"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:15.199998" elapsed="0.000036"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:15.200578" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:15.200426" elapsed="0.000235"/>
</branch>
<status status="NOT RUN" start="2026-04-08T00:51:15.200408" elapsed="0.000278"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:15.200846" elapsed="0.000022"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:15.201032" elapsed="0.000022"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:15.201261" elapsed="0.000024"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-08T00:51:15.200358" elapsed="0.000985"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-08T00:51:15.200116" elapsed="0.001267"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:15.202064" elapsed="0.000034"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-08T00:51:15.202196" elapsed="0.000049"/>
</return>
<msg time="2026-04-08T00:51:15.202421" level="INFO">${uri} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-08T00:51:15.135763" elapsed="0.066765"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:51:15.205395" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:51:15.205072" elapsed="0.000389">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-08T00:51:15.205646" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:51:15.204635" elapsed="0.001055"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:15.206209" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:15.205818" elapsed="0.000458"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:15.206878" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:15.206585" elapsed="0.000320"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:15.206316" elapsed="0.000634"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:15.205768" elapsed="0.001219"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:51:15.210063" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:51:15.207714" elapsed="0.002395"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-08T00:51:15.210200" elapsed="0.000063"/>
</return>
<msg time="2026-04-08T00:51:15.210512" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:51:15.203507" elapsed="0.007110"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:51:15.213377" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:51:15.213105" elapsed="0.000336">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-08T00:51:15.213627" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:51:15.212674" elapsed="0.000998"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-08T00:51:15.214046" elapsed="0.000078"/>
</return>
<status status="PASS" start="2026-04-08T00:51:15.213802" elapsed="0.000407"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:15.213752" elapsed="0.000497"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:15.214953" elapsed="0.000036"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:15.215702" elapsed="0.000036"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-08T00:51:15.215812" elapsed="0.000048"/>
</return>
<msg time="2026-04-08T00:51:15.218058" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:51:15.211420" elapsed="0.006759"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:15.221948" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:15.221563" elapsed="0.000483"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:15.223122" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:15.222744" elapsed="0.000492"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:51:15.241016" level="INFO">GET Request : url=http://10.30.170.131:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 path_url=/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node012m0dyuink19r12kj250j53usg1.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:51:15.241791" level="INFO">GET Response : url=http://10.30.170.131:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Transfer-Encoding': 'chunked'} 
 body={"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","hidden-symmetric-keys","encrypted-private-keys","asymmetrically-encrypted-value-format","cms-encrypted-data-format","cleartext-private-keys","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["ssh-client-keepalives","client-ident-hostbased","client-ident-publickey","client-ident-password"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-ex... (set the log level to DEBUG or TRACE to see the full content) 
 </msg>
<msg time="2026-04-08T00:51:15.242337" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:51:15.225575" elapsed="0.016824"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:15.223363" elapsed="0.019163"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:15.243309" elapsed="0.000061"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:15.242623" elapsed="0.000866"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:15.223312" elapsed="0.020257"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:15.251352" level="INFO">{"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","hidden-symmetric-keys","encrypted-private-keys","asymmetrically-encrypted-value-format","cms-encrypted-data-format","cleartext-private-keys","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["ssh-client-keepalives","client-ident-hostbased","client-ident-publickey","client-ident-password"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-experimenter-types?revision=2015-10-20","namespace":"urn:opendaylight:openflowplugin:experimenter:types","conformance-type":"import"},{"name":"ietf-ip_2018-02-22","revision":"2018-02-22","schema":"/rests/modules/ietf-ip?revision=2018-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-ip","conformance-type":"import","feature":["ipv6-privacy-autoconf","ipv4-non-contiguous-netmasks"]},{"name":"ietf-tcp-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-client","conformance-type":"import","feature":["local-binding-supported","tcp-client-keepalives"]},{"name":"node-config_2014-10-15","revision":"2014-10-15","schema":"/rests/modules/node-config?revision=2014-10-15","namespace":"urn:opendaylight:module:config","conformance-type":"import"},{"name":"ietf-restconf_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf","conformance-type":"import"},{"name":"ietf-datastores_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-datastores?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-datastores","conformance-type":"import"},{"name":"ietf-yang-patch_2017-02-22","revision":"2017-02-22","schema":"/rests/modules/ietf-yang-patch?revision=2017-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-patch","conformance-type":"import"},{"name":"sal-group_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-group?revision=2013-09-18","namespace":"urn:opendaylight:group:service","conformance-type":"import"},{"name":"odl-codegen-extensions_2024-06-27","revision":"2024-06-27","schema":"/rests/modules/odl-codegen-extensions?revision=2024-06-27","namespace":"urn:opendaylight:yang:extension:codegen","conformance-type":"import"},{"name":"sal-meter_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-meter?revision=2013-09-18","namespace":"urn:opendaylight:meter:service","conformance-type":"import"},{"name":"ietf-interfaces_2018-02-20","revision":"2018-02-20","schema":"/rests/modules/ietf-interfaces?revision=2018-02-20","namespace":"urn:ietf:params:xml:ns:yang:ietf-interfaces","conformance-type":"import","feature":["pre-provisioning","if-mib","arbitrary-names"]},{"name":"opendaylight-l2-types_2013-08-27","revision":"2013-08-27","schema":"/rests/modules/opendaylight-l2-types?revision=2013-08-27","namespace":"urn:opendaylight:l2:types","conformance-type":"import"},{"name":"opendaylight-flow-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-flow-types?revision=2013-10-26","namespace":"urn:opendaylight:flow:types","conformance-type":"import"},{"name":"lldp-speaker-config_2016-05-12","revision":"2016-05-12","schema":"/rests/modules/lldp-speaker-config?revision=2016-05-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker:config","conformance-type":"import"},{"name":"aaa-cert_2015-11-26","revision":"2015-11-26","schema":"/rests/modules/aaa-cert?revision=2015-11-26","namespace":"urn:opendaylight:yang:aaa:cert","conformance-type":"import"},{"name":"openflow-action_2015-02-03","revision":"2015-02-03","schema":"/rests/modules/openflow-action?revision=2015-02-03","namespace":"urn:opendaylight:openflow:common:action","conformance-type":"import"},{"name":"openflow-approved-extensions_2016-08-02","revision":"2016-08-02","schema":"/rests/modules/openflow-approved-extensions?revision=2016-08-02","namespace":"urn:opendaylight:openflow:approved:extensions","conformance-type":"import"},{"name":"nc-notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/nc-notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netmod:notification","conformance-type":"import"},{"name":"ietf-netconf-nmda_2019-01-07","revision":"2019-01-07","schema":"/rests/modules/ietf-netconf-nmda?revision=2019-01-07","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-nmda","conformance-type":"import","feature":["with-defaults","origin"]},{"name":"ietf-tcp-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-common","conformance-type":"import","feature":["keepalives-supported"]},{"name":"network-topology_2013-10-21","revision":"2013-10-21","schema":"/rests/modules/network-topology?revision=2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:network-topology","conformance-type":"import"},{"name":"aaa-encrypt-service-config_2024-02-02","revision":"2024-02-02","schema":"/rests/modules/aaa-encrypt-service-config?revision=2024-02-02","namespace":"config:aaa:authn:encrypt:service:config","conformance-type":"import"},{"name":"openflow-instruction_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-instruction?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:instruction","conformance-type":"import"},{"name":"ietf-tls-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-client","conformance-type":"import","feature":["client-ident-x509-cert","server-auth-x509-cert"]},{"name":"opendaylight-group-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-group-statistics?revision=2013-11-11","namespace":"urn:opendaylight:group:statistics","conformance-type":"import"},{"name":"cluster-admin_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/cluster-admin?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:cluster:admin","conformance-type":"import"},{"name":"opendaylight-flow-statistics_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-flow-statistics?revision=2013-08-19","namespace":"urn:opendaylight:flow:statistics","conformance-type":"import"},{"name":"opendaylight-table-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-table-types?revision=2013-10-26","namespace":"urn:opendaylight:table:types","conformance-type":"import"},{"name":"forwarding-rules-manager-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/forwarding-rules-manager-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:forwardingrules-manager:config","conformance-type":"import"},{"name":"odl-srm-types_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-types?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:types","conformance-type":"import"},{"name":"ietf-x509-cert-to-name_2014-12-10","revision":"2014-12-10","schema":"/rests/modules/ietf-x509-cert-to-name?revision=2014-12-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-x509-cert-to-name","conformance-type":"import"},{"name":"flow-node-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-node-inventory?revision=2013-08-19","namespace":"urn:opendaylight:flow:inventory","conformance-type":"import"},{"name":"flow-errors_2013-11-16","revision":"2013-11-16","schema":"/rests/modules/flow-errors?revision=2013-11-16","namespace":"urn:opendaylight:flow:errors","conformance-type":"import"},{"name":"ietf-netconf_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:netconf:base:1.0","conformance-type":"import","feature":["xpath","url","rollback-on-error","validate","startup","candidate","confirmed-commit","writable-running"]},{"name":"iana-ssh-public-key-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-public-key-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-public-key-algs","conformance-type":"import"},{"name":"aaa-cert-mdsal_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/aaa-cert-mdsal?revision=2016-03-21","namespace":"urn:opendaylight:yang:aaa:cert:mdsal","conformance-type":"import"},{"name":"odl-device-notification_2024-02-18","revision":"2024-02-18","schema":"/rests/modules/odl-device-notification?revision=2024-02-18","namespace":"urn:opendaylight:device:notification","conformance-type":"import"},{"name":"ietf-origin_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-origin?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-origin","conformance-type":"import"},{"name":"openflow-augments_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-augments?revision=2015-02-25","namespace":"urn:opendaylight:openflow:augments","conformance-type":"import"},{"name":"iana-ssh-encryption-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-encryption-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-encryption-algs","conformance-type":"import"},{"name":"ietf-truststore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-truststore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-truststore","conformance-type":"import","feature":["inline-definitions-supported"]},{"name":"distributed-datastore-provider_2025-01-30","revision":"2025-01-30","schema":"/rests/modules/distributed-datastore-provider?revision=2025-01-30","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:distributed-datastore-provider","conformance-type":"import"},{"name":"opendaylight-group-types_2013-10-18","revision":"2013-10-18","schema":"/rests/modules/opendaylight-group-types?revision=2013-10-18","namespace":"urn:opendaylight:group:types","conformance-type":"import"},{"name":"sal-remote-augment_2023-11-03","revision":"2023-11-03","schema":"/rests/modules/sal-remote-augment?revision=2023-11-03","namespace":"urn:sal:restconf:event:subscription","conformance-type":"import"},{"name":"opendaylight-ipv6-arbitrary-bitmask-fields_2016-02-24","revision":"2016-02-24","schema":"/rests/modules/opendaylight-ipv6-arbitrary-bitmask-fields?revision=2016-02-24","namespace":"urn:opendaylight:opendaylight-ipv6-arbitrary-bitmask-fields","conformance-type":"import"},{"name":"sal-flows-batch_2016-03-14","revision":"2016-03-14","schema":"/rests/modules/sal-flows-batch?revision=2016-03-14","namespace":"urn:opendaylight:flows:service","conformance-type":"import"},{"name":"ietf-tls-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-common","conformance-type":"import","feature":["tls12","hello-params","tls13"]},{"name":"openflow-types_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-types?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:types","conformance-type":"import"},{"name":"ietf-netconf-with-defaults_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf-with-defaults?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults","conformance-type":"import"},{"name":"odl-srm-ops_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-ops?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:ops","conformance-type":"import"},{"name":"odl-general-entity_2015-09-30","revision":"2015-09-30","schema":"/rests/modules/odl-general-entity?revision=2015-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:mdsal:core:general-entity","conformance-type":"import"},{"name":"iana-ssh-key-exchange-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-key-exchange-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-key-exchange-algs","conformance-type":"import"},{"name":"node-ssl-connection-error_2019-07-23","revision":"2019-07-23","schema":"/rests/modules/node-ssl-connection-error?revision=2019-07-23","namespace":"urn:opendaylight:node-ssl-connection-error:service","conformance-type":"import"},{"name":"openflow-protocol_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-protocol?revision=2013-07-31","namespace":"urn:opendaylight:openflow:protocol","conformance-type":"import"},{"name":"ietf-udp-server_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-server?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-server","conformance-type":"import"},{"name":"ietf-keystore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-keystore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-keystore","conformance-type":"import","feature":["asymmetric-keys","inline-definitions-supported"]},{"name":"aaa_2016-12-14","revision":"2016-12-14","schema":"/rests/modules/aaa?revision=2016-12-14","namespace":"urn:opendaylight:params:xml:ns:yang:aaa","conformance-type":"import"},{"name":"aaa-cert-rpc_2015-12-15","revision":"2015-12-15","schema":"/rests/modules/aaa-cert-rpc?revision=2015-12-15","namespace":"urn:opendaylight:yang:aaa:cert:rpc","conformance-type":"import"},{"name":"system-notifications_2013-09-27","revision":"2013-09-27","schema":"/rests/modules/system-notifications?revision=2013-09-27","namespace":"urn:opendaylight:openflow:system","conformance-type":"import"},{"name":"sal-flat-batch_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/sal-flat-batch?revision=2016-03-21","namespace":"urn:opendaylight:flat-batch:service","conformance-type":"import"},{"name":"notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netconf:notification:1.0","conformance-type":"import"},{"name":"sal-remote_2014-01-14","revision":"2014-01-14","schema":"/rests/modules/sal-remote?revision=2014-01-14","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:remote","conformance-type":"import"},{"name":"yang-ext_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/yang-ext?revision=2013-07-09","namespace":"urn:opendaylight:yang:extension:yang-ext","conformance-type":"import"},{"name":"opendaylight-multipart-types_2017-01-12","revision":"2017-01-12","schema":"/rests/modules/opendaylight-multipart-types?revision=2017-01-12","namespace":"urn:opendaylight:multipart:types","conformance-type":"import"},{"name":"opendaylight-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-inventory?revision=2013-08-19","namespace":"urn:opendaylight:inventory","conformance-type":"import"},{"name":"sal-queue_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-queue?revision=2015-03-05","namespace":"urn:opendaylight:queue:service","conformance-type":"import"},{"name":"sal-groups-batch_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/sal-groups-batch?revision=2016-03-15","namespace":"urn:opendaylight:groups:service","conformance-type":"import"},{"name":"arbitrator-reconcile_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/arbitrator-reconcile?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:arbitrator-reconcile:service","conformance-type":"import"},{"name":"ietf-yang-metadata_2016-08-05","revision":"2016-08-05","schema":"/rests/modules/ietf-yang-metadata?revision=2016-08-05","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-metadata","conformance-type":"import"},{"name":"opendaylight-arbitrary-bitmask-fields_2016-01-30","revision":"2016-01-30","schema":"/rests/modules/opendaylight-arbitrary-bitmask-fields?revision=2016-01-30","namespace":"urn:opendaylight:arbitrary:bitmask:fields","conformance-type":"import"},{"name":"ietf-udp-client_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-client?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-client","conformance-type":"import","feature":["local-binding"]},{"name":"opendaylight-meter-types_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/opendaylight-meter-types?revision=2013-09-18","namespace":"urn:opendaylight:meter:types","conformance-type":"import"},{"name":"opendaylight-action-types_2013-11-12","revision":"2013-11-12","schema":"/rests/modules/opendaylight-action-types?revision=2013-11-12","namespace":"urn:opendaylight:action:types","conformance-type":"import"},{"name":"sal-role_2015-07-27","revision":"2015-07-27","schema":"/rests/modules/sal-role?revision=2015-07-27","namespace":"urn:opendaylight:role:service","conformance-type":"import"},{"name":"openflow-provider-config_2016-05-10","revision":"2016-05-10","schema":"/rests/modules/openflow-provider-config?revision=2016-05-10","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:provider:config","conformance-type":"import"},{"name":"odl-serviceutils-upgrade_2018-07-02","revision":"2018-07-02","schema":"/rests/modules/odl-serviceutils-upgrade?revision=2018-07-02","namespace":"urn:opendaylight:serviceutils:upgrade","conformance-type":"import"},{"name":"opendaylight-match-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-match-types?revision=2013-10-26","namespace":"urn:opendaylight:model:match:types","conformance-type":"import"},{"name":"ietf-restconf-server_2024-08-14","revision":"2024-08-14","schema":"/rests/modules/ietf-restconf-server?revision=2024-08-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-server","conformance-type":"import","feature":["http-listen","https-listen"]},{"name":"reconciliation-result-state_2017-07-13","revision":"2017-07-13","schema":"/rests/modules/reconciliation-result-state?revision=2017-07-13","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:rf:state","conformance-type":"import"},{"name":"onf-extensions_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/onf-extensions?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf","conformance-type":"import"},{"name":"sal-table_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/sal-table?revision=2013-10-26","namespace":"urn:opendaylight:table:service","conformance-type":"import"},{"name":"iana-http-versions_2026-02-04","revision":"2026-02-04","schema":"/rests/modules/iana-http-versions?revision=2026-02-04","namespace":"urn:ietf:params:xml:ns:yang:iana-http-versions","conformance-type":"import"},{"name":"opendaylight-direct-statistics_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/opendaylight-direct-statistics?revision=2016-05-11","namespace":"urn:opendaylight:direct:statistics","conformance-type":"import"},{"name":"opendaylight-port-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-port-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:port","conformance-type":"import"},{"name":"sal-async-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/sal-async-config?revision=2017-06-19","namespace":"urn:opendaylight:async-config:service","conformance-type":"import"},{"name":"aaa-password-service-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-password-service-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:password:service:config","conformance-type":"import"},{"name":"ietf-yang-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-yang-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-types","conformance-type":"import"},{"name":"opendaylight-queue-statistics_2013-12-16","revision":"2013-12-16","schema":"/rests/modules/opendaylight-queue-statistics?revision=2013-12-16","namespace":"urn:opendaylight:queue:statistics","conformance-type":"import"},{"name":"sal-bundle_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/sal-bundle?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf:bundle:service","conformance-type":"import"},{"name":"ietf-restconf-subscribed-notifications_2019-11-17","revision":"2019-11-17","schema":"/rests/modules/ietf-restconf-subscribed-notifications?revision=2019-11-17","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-subscribed-notifications","conformance-type":"import"},{"name":"sal-meters-batch_2016-03-16","revision":"2016-03-16","schema":"/rests/modules/sal-meters-batch?revision=2016-03-16","namespace":"urn:opendaylight:meters:service","conformance-type":"import"},{"name":"odl-entity-owners","revision":"","schema":"/rests/modules/odl-entity-owners","namespace":"urn:opendaylight:params:xml:ns:yang:controller:entity-owners","conformance-type":"import"},{"name":"sal-experimenter-mp-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-mp-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-mp-message:service","conformance-type":"import"},{"name":"packet-processing_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/packet-processing?revision=2013-07-09","namespace":"urn:opendaylight:packet:service","conformance-type":"import"},{"name":"openflow-configuration_2014-06-30","revision":"2014-06-30","schema":"/rests/modules/openflow-configuration?revision=2014-06-30","namespace":"urn:opendaylight:openflow:config","conformance-type":"import"},{"name":"odl-srm-rpcs_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-rpcs?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:rpc","conformance-type":"import"},{"name":"ietf-netconf-acm_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-netconf-acm?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-acm","conformance-type":"import"},{"name":"iana-crypt-hash_2014-08-06","revision":"2014-08-06","schema":"/rests/modules/iana-crypt-hash?revision=2014-08-06","namespace":"urn:ietf:params:xml:ns:yang:iana-crypt-hash","conformance-type":"import","feature":["crypt-hash-sha-512","crypt-hash-sha-256","crypt-hash-md5"]},{"name":"openflow-extensible-match_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-extensible-match?revision=2015-02-25","namespace":"urn:opendaylight:openflow:oxm","conformance-type":"import"}],"module-set-id":"2"}}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:15.247549" elapsed="0.004126"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:15.247016" elapsed="0.004695"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:15.246967" elapsed="0.004769"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:15.254287" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:15.252044" elapsed="0.002300"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:15.251819" elapsed="0.002563"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:15.251799" elapsed="0.002607"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:15.255002" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:15.254599" elapsed="0.000430"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:15.255382" elapsed="0.000027"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:15.255122" elapsed="0.000334"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:15.256026" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:15.255694" elapsed="0.000368"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:15.255486" elapsed="0.000624"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:15.255101" elapsed="0.001033"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:15.256730" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:15.256358" elapsed="0.000399"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:15.257084" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:15.256849" elapsed="0.000325"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:15.257697" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:15.257385" elapsed="0.000337"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:15.257202" elapsed="0.000557"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:15.256830" elapsed="0.000950"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:51:15.257976" elapsed="0.000382"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:51:15.258866" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:15.258566" elapsed="0.000325"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:51:15.259081" elapsed="0.002231"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:51:15.245264" elapsed="0.016173"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:51:15.261786" elapsed="0.000046"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:51:15.261567" elapsed="0.000329"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:15.261516" elapsed="0.000446"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:51:15.271069" level="INFO">${text_normalized} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:51:15.262692" elapsed="0.008428"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:51:15.271218" elapsed="0.000068"/>
</return>
<msg time="2026-04-08T00:51:15.271573" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:51:15.218816" elapsed="0.052873"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:51:15.272151" elapsed="0.000117"/>
</return>
<msg time="2026-04-08T00:51:15.272427" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="PASS" start="2026-04-08T00:51:15.081322" elapsed="0.191133"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Json_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:15.272787" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:15.272544" elapsed="0.000433"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:15.272525" elapsed="0.000481"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:51:15.273041" elapsed="0.000028"/>
</return>
<arg>session=${session}</arg>
<arg>folder=${RESTCONF_MODULES_DIR}</arg>
<arg>verify=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Add arguments sensible for JSON data, return Get_Templated response text.
Optionally, verification against JSON data (may be iterated) is called.
Only subset of JSON data is verified and returned if JMES path is specified in
file ${folder}/jmespath.expr.</doc>
<status status="PASS" start="2026-04-08T00:51:15.077240" elapsed="0.196024"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:15.073388" elapsed="0.199923"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:15.073369" elapsed="0.199968"/>
</if>
<kw name="Resolve_Shard_Type_Class" owner="ClusterManagement">
<if>
<branch type="IF" condition="'${shard_type}' == 'config'">
<return>
<value>DistributedConfigDatastore</value>
<status status="PASS" start="2026-04-08T00:51:15.273946" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-08T00:51:15.273839" elapsed="0.000167"/>
</branch>
<branch type="ELSE IF" condition="'${shard_type}' == 'operational'">
<return>
<value>DistributedOperationalDatastore</value>
<status status="NOT RUN" start="2026-04-08T00:51:15.274067" elapsed="0.000012"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:51:15.274030" elapsed="0.000076"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:15.273821" elapsed="0.000308"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized shard type: ${shard_type}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:15.274288" elapsed="0.000023"/>
</kw>
<msg time="2026-04-08T00:51:15.274410" level="INFO">${type_class} = DistributedConfigDatastore</msg>
<var>${type_class}</var>
<arg>shard_type=${shard_type}</arg>
<doc>Simple lookup for class name corresponding to desired type.</doc>
<status status="PASS" start="2026-04-08T00:51:15.273569" elapsed="0.000866"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:15.274972" level="INFO">${cluster_index} = 2</msg>
<var>${cluster_index}</var>
<arg>${member_index}+${NODE_ROLE_INDEX_START}-1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:15.274600" elapsed="0.000398"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:15.275649" level="INFO">${uri} = jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-default-config,type=DistributedConfigDatastore</msg>
<var>${uri}</var>
<arg>${JOLOKIA_READ_URI}:Category=Shards,name=member-${cluster_index}-shard-${shard_name}-${shard_type},type=${type_class}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:15.275152" elapsed="0.000524"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:15.281400" level="INFO">jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-default-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:15.280894" elapsed="0.000556"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:15.282052" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:15.281607" elapsed="0.000491"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:51:15.300091" level="INFO">GET Request : url=http://10.30.170.131:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-default-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-default-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:51:15.300306" level="INFO">GET Response : url=http://10.30.170.131:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-default-config,type=DistributedConfigDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Wed, 08 Apr 2026 00:51:15 GMT', 'Expires': 'Tue, 07 Apr 2026 23:51:15 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-2-shard-default-config,type=DistributedConfigDatastore","type":"read"},"value":{"ReadWriteTransactionCount":0,"SnapshotIndex":73,"InMemoryJournalLogSize":1,"ReplicatedToAllIndex":73,"Leader":"member-1-shard-default-config","LastIndex":74,"RaftState":"Follower","LastCommittedTransactionTime":"1970-01-01 00:00:00.000","LastApplied":74,"PeerAddresses":"member-1-shard-default-config: pekko:\/\/opendaylight-cluster-data@10.30.170.48:2550\/user\/shardmanager-config\/member-1-shard-default-config, member-3-shard-default-config: pekko:\/\/opendaylight-cluster-data@10.30.171.110:2550\/user\/shardmanager-config\/member-3-shard-default-config","LastLogIndex":74,"LastLeadershipChangeTime":"2026-04-08 00:46:45.946","FollowerInitialSyncStatus":true,"FollowerInfo":[],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"380.5 μs","CurrentTerm":2,"LastTerm":2,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-default-config","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":0,"TxCohortCacheSize":0,"PeerVotingStates":"member-1-shard-default-config: true, member-3-shard-default-config: true","LastLogTerm":2,"StatRetrievalError":null,"CommitIndex":74,"SnapshotTerm":2,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-2-shard-default-config","LeadershipChangeCount":1,"InMemoryJournalDataSize":10675},"timestamp":1775609475,"status":200} 
 </msg>
<msg time="2026-04-08T00:51:15.300568" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:51:15.293028" elapsed="0.007687"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:15.282184" elapsed="0.018880"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:15.301678" elapsed="0.000032"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:15.301128" elapsed="0.000989"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:15.282148" elapsed="0.020004"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:15.309280" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-2-shard-default-config,type=DistributedConfigDatastore","type":"read"},"value":{"ReadWriteTransactionCount":0,"SnapshotIndex":73,"InMemoryJournalLogSize":1,"ReplicatedToAllIndex":73,"Leader":"member-1-shard-default-config","LastIndex":74,"RaftState":"Follower","LastCommittedTransactionTime":"1970-01-01 00:00:00.000","LastApplied":74,"PeerAddresses":"member-1-shard-default-config: pekko:\/\/opendaylight-cluster-data@10.30.170.48:2550\/user\/shardmanager-config\/member-1-shard-default-config, member-3-shard-default-config: pekko:\/\/opendaylight-cluster-data@10.30.171.110:2550\/user\/shardmanager-config\/member-3-shard-default-config","LastLogIndex":74,"LastLeadershipChangeTime":"2026-04-08 00:46:45.946","FollowerInitialSyncStatus":true,"FollowerInfo":[],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"380.5 μs","CurrentTerm":2,"LastTerm":2,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-default-config","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":0,"TxCohortCacheSize":0,"PeerVotingStates":"member-1-shard-default-config: true, member-3-shard-default-config: true","LastLogTerm":2,"StatRetrievalError":null,"CommitIndex":74,"SnapshotTerm":2,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-2-shard-default-config","LeadershipChangeCount":1,"InMemoryJournalDataSize":10675},"timestamp":1775609475,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:15.305060" elapsed="0.004496"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:15.303882" elapsed="0.005738"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:15.303855" elapsed="0.005809"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:15.313260" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:15.310602" elapsed="0.002763"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:15.309748" elapsed="0.003668"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:15.309729" elapsed="0.003730"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:15.314919" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:15.314070" elapsed="0.000910"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:15.315632" elapsed="0.000035"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:15.315148" elapsed="0.000571"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:15.316614" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:15.316088" elapsed="0.000571"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:15.315758" elapsed="0.000952"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:15.315126" elapsed="0.001621"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:15.318269" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:15.317391" elapsed="0.000955"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:15.319144" elapsed="0.000064"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:15.318555" elapsed="0.000719"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:15.320334" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:15.319763" elapsed="0.000618"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:15.319324" elapsed="0.001112"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:15.318529" elapsed="0.001945"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:51:15.320711" elapsed="0.000741"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:51:15.322316" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:15.321758" elapsed="0.000619"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:51:15.322659" elapsed="0.002330"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:51:15.302901" elapsed="0.022452"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:51:15.325559" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:51:15.325430" elapsed="0.000176"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:15.325411" elapsed="0.000216"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:51:15.329118" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-2-shard-default-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 17756094...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:51:15.325773" elapsed="0.003378"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:51:15.329296" elapsed="0.000033"/>
</return>
<msg time="2026-04-08T00:51:15.329465" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-2-shard-default-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 17756094...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:51:15.276701" elapsed="0.052791"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:51:15.329548" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:51:15.329699" level="INFO">${data_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-2-shard-default-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 17756094...</msg>
<var>${data_text}</var>
<arg>uri=${uri}</arg>
<arg>session=${session}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-08T00:51:15.275888" elapsed="0.053837"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:15.330784" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-2-shard-default-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1775609475, 'value'...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:15.330308" elapsed="0.000505"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-08T00:51:15.330903" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:51:15.331082" level="INFO">${data_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-2-shard-default-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1775609475, 'value'...</msg>
<var>${data_object}</var>
<arg>${data_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-08T00:51:15.329949" elapsed="0.001159"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:51:15.331481" level="INFO">${value} = {'AbortTransactionsCount': 0, 'CommitIndex': 74, 'CommittedTransactionsCount': 0, 'CurrentTerm': 2, 'FailedReadTransactionsCount': 0, 'FailedTransactionsCount': 0, 'FollowerInfo': [], 'FollowerInitial...</msg>
<var>${value}</var>
<arg>${data_object}</arg>
<arg>value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:51:15.331279" elapsed="0.000229"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:51:15.331862" level="INFO">${raft_property} = Follower</msg>
<var>${raft_property}</var>
<arg>${value}</arg>
<arg>${property}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:51:15.331662" elapsed="0.000227"/>
</kw>
<return>
<value>${raft_property}</value>
<status status="PASS" start="2026-04-08T00:51:15.331940" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:51:15.332094" level="INFO">${raft_state} = Follower</msg>
<var>${raft_state}</var>
<arg>RaftState</arg>
<arg>${shard_name}</arg>
<arg>${shard_type}</arg>
<arg>${member_index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft property.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T00:51:15.070224" elapsed="0.261894"/>
</kw>
<return>
<value>${raft_state}</value>
<status status="PASS" start="2026-04-08T00:51:15.332192" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:51:15.332345" level="INFO">${raft_state} = Follower</msg>
<var>${raft_state}</var>
<arg>shard_name=${shard_name}</arg>
<arg>shard_type=${ds_type}</arg>
<arg>member_index=${index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft status.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T00:51:15.069400" elapsed="0.262970"/>
</kw>
<if>
<branch type="IF" condition="'Follower' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${follower_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-08T00:51:15.332671" elapsed="0.000195"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:15.332452" elapsed="0.000453"/>
</branch>
<branch type="ELSE IF" condition="'Leader' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${leader_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:15.333076" elapsed="0.000042"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:15.332930" elapsed="0.000302"/>
</branch>
<branch type="ELSE IF" condition="${validate}">
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized Raft state: ${raft_state}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:15.333430" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:15.333259" elapsed="0.000223"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:15.332434" elapsed="0.001070"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T00:51:15.069220" elapsed="0.264308"/>
</iter>
<iter>
<kw name="Get_Raft_State_Of_Shard_At_Member" owner="ClusterManagement">
<kw name="Get_Raft_Property_From_Shard_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:15.336032" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:15.335704" elapsed="0.000356"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:51:15.336107" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:51:15.336272" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:51:15.335360" elapsed="0.000938"/>
</kw>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Get_As_Json_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:15.418950" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:15.418575" elapsed="0.000403"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:51:15.419738" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:51:15.419488" elapsed="0.000329">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-08T00:51:15.419910" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:51:15.419141" elapsed="0.000793"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:51:15.420504" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:51:15.420098" elapsed="0.000432"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T00:51:15.420826" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-08T00:51:15.420981" level="INFO">${template} = /rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T00:51:15.420688" elapsed="0.000378"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:15.421489" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:15.421241" elapsed="0.000292"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:15.422527" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:15.422267" elapsed="0.000303"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-08T00:51:15.423000" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-08T00:51:15.422730" elapsed="0.000295"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:15.423373" elapsed="0.000022"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:15.423574" elapsed="0.000024"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:15.423745" elapsed="0.000021"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-08T00:51:15.423239" elapsed="0.000563"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-08T00:51:15.423079" elapsed="0.000752"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-08T00:51:15.423877" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:51:15.424034" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-08T00:51:15.421894" elapsed="0.002165"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:15.421603" elapsed="0.002487"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:15.424298" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:15.424120" elapsed="0.000235"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:15.421582" elapsed="0.002794"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:15.424943" level="INFO">${final_text} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:15.424514" elapsed="0.000456"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T00:51:15.425018" elapsed="0.000055"/>
</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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="PASS" start="2026-04-08T00:51:15.417951" elapsed="0.007236"/>
</kw>
<msg time="2026-04-08T00:51:15.425242" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:51:15.405952" elapsed="0.019371"/>
</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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:15.437569" elapsed="0.000044"/>
</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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:15.449538" elapsed="0.000041"/>
</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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:15.463769" elapsed="0.000041"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:15.464534" elapsed="0.000037"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:15.465296" elapsed="0.000036"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:15.465891" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:15.465746" elapsed="0.000201"/>
</branch>
<status status="NOT RUN" start="2026-04-08T00:51:15.465730" elapsed="0.000240"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:15.466129" elapsed="0.000021"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:15.466334" elapsed="0.000021"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:15.466519" elapsed="0.000022"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-08T00:51:15.465681" elapsed="0.000913"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-08T00:51:15.465458" elapsed="0.001175"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:15.467329" elapsed="0.000036"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-08T00:51:15.467448" elapsed="0.000047"/>
</return>
<msg time="2026-04-08T00:51:15.467671" level="INFO">${uri} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-08T00:51:15.399752" elapsed="0.068026"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:51:15.470575" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:51:15.470322" elapsed="0.000321">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-08T00:51:15.470830" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:51:15.469869" elapsed="0.001005"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:15.471394" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:15.471003" elapsed="0.000462"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:15.472059" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:15.471765" elapsed="0.000319"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:15.471503" elapsed="0.000627"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:15.470953" elapsed="0.001229"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:51:15.475280" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:51:15.472894" elapsed="0.002431"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-08T00:51:15.475401" elapsed="0.000066"/>
</return>
<msg time="2026-04-08T00:51:15.475713" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:51:15.468752" elapsed="0.007066"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:51:15.478556" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:51:15.478314" elapsed="0.000306">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-08T00:51:15.478804" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:51:15.477869" elapsed="0.000978"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-08T00:51:15.479237" elapsed="0.000077"/>
</return>
<status status="PASS" start="2026-04-08T00:51:15.478977" elapsed="0.000403"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:15.478927" elapsed="0.000491"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:15.480116" elapsed="0.000035"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:15.480854" elapsed="0.000034"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-08T00:51:15.480959" elapsed="0.000060"/>
</return>
<msg time="2026-04-08T00:51:15.483196" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:51:15.476619" elapsed="0.006682"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:15.487335" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:15.486783" elapsed="0.000653"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:15.488494" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:15.488104" elapsed="0.000484"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:51:15.505541" level="INFO">GET Request : url=http://10.30.171.110:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 path_url=/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0u16rl3earouwvehy59feej101.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:51:15.506557" level="INFO">GET Response : url=http://10.30.171.110:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Transfer-Encoding': 'chunked'} 
 body={"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","hidden-symmetric-keys","encrypted-private-keys","asymmetrically-encrypted-value-format","cms-encrypted-data-format","cleartext-private-keys","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["ssh-client-keepalives","client-ident-hostbased","client-ident-publickey","client-ident-password"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-ex... (set the log level to DEBUG or TRACE to see the full content) 
 </msg>
<msg time="2026-04-08T00:51:15.507060" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:51:15.490781" elapsed="0.016339"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:15.488712" elapsed="0.018568"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:15.507930" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:15.507381" elapsed="0.000714"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:15.488662" elapsed="0.019551"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:15.515719" level="INFO">{"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","hidden-symmetric-keys","encrypted-private-keys","asymmetrically-encrypted-value-format","cms-encrypted-data-format","cleartext-private-keys","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["ssh-client-keepalives","client-ident-hostbased","client-ident-publickey","client-ident-password"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-experimenter-types?revision=2015-10-20","namespace":"urn:opendaylight:openflowplugin:experimenter:types","conformance-type":"import"},{"name":"ietf-ip_2018-02-22","revision":"2018-02-22","schema":"/rests/modules/ietf-ip?revision=2018-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-ip","conformance-type":"import","feature":["ipv6-privacy-autoconf","ipv4-non-contiguous-netmasks"]},{"name":"ietf-tcp-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-client","conformance-type":"import","feature":["local-binding-supported","tcp-client-keepalives"]},{"name":"node-config_2014-10-15","revision":"2014-10-15","schema":"/rests/modules/node-config?revision=2014-10-15","namespace":"urn:opendaylight:module:config","conformance-type":"import"},{"name":"ietf-restconf_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf","conformance-type":"import"},{"name":"ietf-datastores_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-datastores?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-datastores","conformance-type":"import"},{"name":"ietf-yang-patch_2017-02-22","revision":"2017-02-22","schema":"/rests/modules/ietf-yang-patch?revision=2017-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-patch","conformance-type":"import"},{"name":"sal-group_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-group?revision=2013-09-18","namespace":"urn:opendaylight:group:service","conformance-type":"import"},{"name":"odl-codegen-extensions_2024-06-27","revision":"2024-06-27","schema":"/rests/modules/odl-codegen-extensions?revision=2024-06-27","namespace":"urn:opendaylight:yang:extension:codegen","conformance-type":"import"},{"name":"sal-meter_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-meter?revision=2013-09-18","namespace":"urn:opendaylight:meter:service","conformance-type":"import"},{"name":"ietf-interfaces_2018-02-20","revision":"2018-02-20","schema":"/rests/modules/ietf-interfaces?revision=2018-02-20","namespace":"urn:ietf:params:xml:ns:yang:ietf-interfaces","conformance-type":"import","feature":["pre-provisioning","if-mib","arbitrary-names"]},{"name":"opendaylight-l2-types_2013-08-27","revision":"2013-08-27","schema":"/rests/modules/opendaylight-l2-types?revision=2013-08-27","namespace":"urn:opendaylight:l2:types","conformance-type":"import"},{"name":"opendaylight-flow-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-flow-types?revision=2013-10-26","namespace":"urn:opendaylight:flow:types","conformance-type":"import"},{"name":"lldp-speaker-config_2016-05-12","revision":"2016-05-12","schema":"/rests/modules/lldp-speaker-config?revision=2016-05-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker:config","conformance-type":"import"},{"name":"aaa-cert_2015-11-26","revision":"2015-11-26","schema":"/rests/modules/aaa-cert?revision=2015-11-26","namespace":"urn:opendaylight:yang:aaa:cert","conformance-type":"import"},{"name":"openflow-action_2015-02-03","revision":"2015-02-03","schema":"/rests/modules/openflow-action?revision=2015-02-03","namespace":"urn:opendaylight:openflow:common:action","conformance-type":"import"},{"name":"openflow-approved-extensions_2016-08-02","revision":"2016-08-02","schema":"/rests/modules/openflow-approved-extensions?revision=2016-08-02","namespace":"urn:opendaylight:openflow:approved:extensions","conformance-type":"import"},{"name":"nc-notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/nc-notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netmod:notification","conformance-type":"import"},{"name":"ietf-netconf-nmda_2019-01-07","revision":"2019-01-07","schema":"/rests/modules/ietf-netconf-nmda?revision=2019-01-07","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-nmda","conformance-type":"import","feature":["with-defaults","origin"]},{"name":"ietf-tcp-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-common","conformance-type":"import","feature":["keepalives-supported"]},{"name":"network-topology_2013-10-21","revision":"2013-10-21","schema":"/rests/modules/network-topology?revision=2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:network-topology","conformance-type":"import"},{"name":"aaa-encrypt-service-config_2024-02-02","revision":"2024-02-02","schema":"/rests/modules/aaa-encrypt-service-config?revision=2024-02-02","namespace":"config:aaa:authn:encrypt:service:config","conformance-type":"import"},{"name":"openflow-instruction_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-instruction?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:instruction","conformance-type":"import"},{"name":"ietf-tls-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-client","conformance-type":"import","feature":["client-ident-x509-cert","server-auth-x509-cert"]},{"name":"opendaylight-group-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-group-statistics?revision=2013-11-11","namespace":"urn:opendaylight:group:statistics","conformance-type":"import"},{"name":"cluster-admin_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/cluster-admin?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:cluster:admin","conformance-type":"import"},{"name":"opendaylight-flow-statistics_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-flow-statistics?revision=2013-08-19","namespace":"urn:opendaylight:flow:statistics","conformance-type":"import"},{"name":"opendaylight-table-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-table-types?revision=2013-10-26","namespace":"urn:opendaylight:table:types","conformance-type":"import"},{"name":"forwarding-rules-manager-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/forwarding-rules-manager-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:forwardingrules-manager:config","conformance-type":"import"},{"name":"odl-srm-types_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-types?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:types","conformance-type":"import"},{"name":"ietf-x509-cert-to-name_2014-12-10","revision":"2014-12-10","schema":"/rests/modules/ietf-x509-cert-to-name?revision=2014-12-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-x509-cert-to-name","conformance-type":"import"},{"name":"flow-node-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-node-inventory?revision=2013-08-19","namespace":"urn:opendaylight:flow:inventory","conformance-type":"import"},{"name":"flow-errors_2013-11-16","revision":"2013-11-16","schema":"/rests/modules/flow-errors?revision=2013-11-16","namespace":"urn:opendaylight:flow:errors","conformance-type":"import"},{"name":"ietf-netconf_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:netconf:base:1.0","conformance-type":"import","feature":["xpath","url","rollback-on-error","validate","startup","candidate","confirmed-commit","writable-running"]},{"name":"iana-ssh-public-key-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-public-key-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-public-key-algs","conformance-type":"import"},{"name":"aaa-cert-mdsal_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/aaa-cert-mdsal?revision=2016-03-21","namespace":"urn:opendaylight:yang:aaa:cert:mdsal","conformance-type":"import"},{"name":"odl-device-notification_2024-02-18","revision":"2024-02-18","schema":"/rests/modules/odl-device-notification?revision=2024-02-18","namespace":"urn:opendaylight:device:notification","conformance-type":"import"},{"name":"ietf-origin_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-origin?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-origin","conformance-type":"import"},{"name":"openflow-augments_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-augments?revision=2015-02-25","namespace":"urn:opendaylight:openflow:augments","conformance-type":"import"},{"name":"iana-ssh-encryption-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-encryption-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-encryption-algs","conformance-type":"import"},{"name":"ietf-truststore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-truststore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-truststore","conformance-type":"import","feature":["inline-definitions-supported"]},{"name":"distributed-datastore-provider_2025-01-30","revision":"2025-01-30","schema":"/rests/modules/distributed-datastore-provider?revision=2025-01-30","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:distributed-datastore-provider","conformance-type":"import"},{"name":"opendaylight-group-types_2013-10-18","revision":"2013-10-18","schema":"/rests/modules/opendaylight-group-types?revision=2013-10-18","namespace":"urn:opendaylight:group:types","conformance-type":"import"},{"name":"sal-remote-augment_2023-11-03","revision":"2023-11-03","schema":"/rests/modules/sal-remote-augment?revision=2023-11-03","namespace":"urn:sal:restconf:event:subscription","conformance-type":"import"},{"name":"opendaylight-ipv6-arbitrary-bitmask-fields_2016-02-24","revision":"2016-02-24","schema":"/rests/modules/opendaylight-ipv6-arbitrary-bitmask-fields?revision=2016-02-24","namespace":"urn:opendaylight:opendaylight-ipv6-arbitrary-bitmask-fields","conformance-type":"import"},{"name":"sal-flows-batch_2016-03-14","revision":"2016-03-14","schema":"/rests/modules/sal-flows-batch?revision=2016-03-14","namespace":"urn:opendaylight:flows:service","conformance-type":"import"},{"name":"ietf-tls-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-common","conformance-type":"import","feature":["tls12","hello-params","tls13"]},{"name":"openflow-types_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-types?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:types","conformance-type":"import"},{"name":"ietf-netconf-with-defaults_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf-with-defaults?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults","conformance-type":"import"},{"name":"odl-srm-ops_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-ops?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:ops","conformance-type":"import"},{"name":"odl-general-entity_2015-09-30","revision":"2015-09-30","schema":"/rests/modules/odl-general-entity?revision=2015-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:mdsal:core:general-entity","conformance-type":"import"},{"name":"iana-ssh-key-exchange-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-key-exchange-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-key-exchange-algs","conformance-type":"import"},{"name":"node-ssl-connection-error_2019-07-23","revision":"2019-07-23","schema":"/rests/modules/node-ssl-connection-error?revision=2019-07-23","namespace":"urn:opendaylight:node-ssl-connection-error:service","conformance-type":"import"},{"name":"openflow-protocol_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-protocol?revision=2013-07-31","namespace":"urn:opendaylight:openflow:protocol","conformance-type":"import"},{"name":"ietf-udp-server_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-server?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-server","conformance-type":"import"},{"name":"ietf-keystore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-keystore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-keystore","conformance-type":"import","feature":["asymmetric-keys","inline-definitions-supported"]},{"name":"aaa_2016-12-14","revision":"2016-12-14","schema":"/rests/modules/aaa?revision=2016-12-14","namespace":"urn:opendaylight:params:xml:ns:yang:aaa","conformance-type":"import"},{"name":"aaa-cert-rpc_2015-12-15","revision":"2015-12-15","schema":"/rests/modules/aaa-cert-rpc?revision=2015-12-15","namespace":"urn:opendaylight:yang:aaa:cert:rpc","conformance-type":"import"},{"name":"system-notifications_2013-09-27","revision":"2013-09-27","schema":"/rests/modules/system-notifications?revision=2013-09-27","namespace":"urn:opendaylight:openflow:system","conformance-type":"import"},{"name":"sal-flat-batch_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/sal-flat-batch?revision=2016-03-21","namespace":"urn:opendaylight:flat-batch:service","conformance-type":"import"},{"name":"notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netconf:notification:1.0","conformance-type":"import"},{"name":"sal-remote_2014-01-14","revision":"2014-01-14","schema":"/rests/modules/sal-remote?revision=2014-01-14","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:remote","conformance-type":"import"},{"name":"yang-ext_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/yang-ext?revision=2013-07-09","namespace":"urn:opendaylight:yang:extension:yang-ext","conformance-type":"import"},{"name":"opendaylight-multipart-types_2017-01-12","revision":"2017-01-12","schema":"/rests/modules/opendaylight-multipart-types?revision=2017-01-12","namespace":"urn:opendaylight:multipart:types","conformance-type":"import"},{"name":"opendaylight-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-inventory?revision=2013-08-19","namespace":"urn:opendaylight:inventory","conformance-type":"import"},{"name":"sal-queue_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-queue?revision=2015-03-05","namespace":"urn:opendaylight:queue:service","conformance-type":"import"},{"name":"sal-groups-batch_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/sal-groups-batch?revision=2016-03-15","namespace":"urn:opendaylight:groups:service","conformance-type":"import"},{"name":"arbitrator-reconcile_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/arbitrator-reconcile?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:arbitrator-reconcile:service","conformance-type":"import"},{"name":"ietf-yang-metadata_2016-08-05","revision":"2016-08-05","schema":"/rests/modules/ietf-yang-metadata?revision=2016-08-05","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-metadata","conformance-type":"import"},{"name":"opendaylight-arbitrary-bitmask-fields_2016-01-30","revision":"2016-01-30","schema":"/rests/modules/opendaylight-arbitrary-bitmask-fields?revision=2016-01-30","namespace":"urn:opendaylight:arbitrary:bitmask:fields","conformance-type":"import"},{"name":"ietf-udp-client_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-client?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-client","conformance-type":"import","feature":["local-binding"]},{"name":"opendaylight-meter-types_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/opendaylight-meter-types?revision=2013-09-18","namespace":"urn:opendaylight:meter:types","conformance-type":"import"},{"name":"opendaylight-action-types_2013-11-12","revision":"2013-11-12","schema":"/rests/modules/opendaylight-action-types?revision=2013-11-12","namespace":"urn:opendaylight:action:types","conformance-type":"import"},{"name":"sal-role_2015-07-27","revision":"2015-07-27","schema":"/rests/modules/sal-role?revision=2015-07-27","namespace":"urn:opendaylight:role:service","conformance-type":"import"},{"name":"openflow-provider-config_2016-05-10","revision":"2016-05-10","schema":"/rests/modules/openflow-provider-config?revision=2016-05-10","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:provider:config","conformance-type":"import"},{"name":"odl-serviceutils-upgrade_2018-07-02","revision":"2018-07-02","schema":"/rests/modules/odl-serviceutils-upgrade?revision=2018-07-02","namespace":"urn:opendaylight:serviceutils:upgrade","conformance-type":"import"},{"name":"opendaylight-match-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-match-types?revision=2013-10-26","namespace":"urn:opendaylight:model:match:types","conformance-type":"import"},{"name":"ietf-restconf-server_2024-08-14","revision":"2024-08-14","schema":"/rests/modules/ietf-restconf-server?revision=2024-08-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-server","conformance-type":"import","feature":["http-listen","https-listen"]},{"name":"reconciliation-result-state_2017-07-13","revision":"2017-07-13","schema":"/rests/modules/reconciliation-result-state?revision=2017-07-13","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:rf:state","conformance-type":"import"},{"name":"onf-extensions_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/onf-extensions?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf","conformance-type":"import"},{"name":"sal-table_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/sal-table?revision=2013-10-26","namespace":"urn:opendaylight:table:service","conformance-type":"import"},{"name":"iana-http-versions_2026-02-04","revision":"2026-02-04","schema":"/rests/modules/iana-http-versions?revision=2026-02-04","namespace":"urn:ietf:params:xml:ns:yang:iana-http-versions","conformance-type":"import"},{"name":"opendaylight-direct-statistics_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/opendaylight-direct-statistics?revision=2016-05-11","namespace":"urn:opendaylight:direct:statistics","conformance-type":"import"},{"name":"opendaylight-port-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-port-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:port","conformance-type":"import"},{"name":"sal-async-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/sal-async-config?revision=2017-06-19","namespace":"urn:opendaylight:async-config:service","conformance-type":"import"},{"name":"aaa-password-service-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-password-service-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:password:service:config","conformance-type":"import"},{"name":"ietf-yang-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-yang-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-types","conformance-type":"import"},{"name":"opendaylight-queue-statistics_2013-12-16","revision":"2013-12-16","schema":"/rests/modules/opendaylight-queue-statistics?revision=2013-12-16","namespace":"urn:opendaylight:queue:statistics","conformance-type":"import"},{"name":"sal-bundle_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/sal-bundle?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf:bundle:service","conformance-type":"import"},{"name":"ietf-restconf-subscribed-notifications_2019-11-17","revision":"2019-11-17","schema":"/rests/modules/ietf-restconf-subscribed-notifications?revision=2019-11-17","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-subscribed-notifications","conformance-type":"import"},{"name":"sal-meters-batch_2016-03-16","revision":"2016-03-16","schema":"/rests/modules/sal-meters-batch?revision=2016-03-16","namespace":"urn:opendaylight:meters:service","conformance-type":"import"},{"name":"odl-entity-owners","revision":"","schema":"/rests/modules/odl-entity-owners","namespace":"urn:opendaylight:params:xml:ns:yang:controller:entity-owners","conformance-type":"import"},{"name":"sal-experimenter-mp-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-mp-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-mp-message:service","conformance-type":"import"},{"name":"packet-processing_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/packet-processing?revision=2013-07-09","namespace":"urn:opendaylight:packet:service","conformance-type":"import"},{"name":"openflow-configuration_2014-06-30","revision":"2014-06-30","schema":"/rests/modules/openflow-configuration?revision=2014-06-30","namespace":"urn:opendaylight:openflow:config","conformance-type":"import"},{"name":"odl-srm-rpcs_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-rpcs?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:rpc","conformance-type":"import"},{"name":"ietf-netconf-acm_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-netconf-acm?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-acm","conformance-type":"import"},{"name":"iana-crypt-hash_2014-08-06","revision":"2014-08-06","schema":"/rests/modules/iana-crypt-hash?revision=2014-08-06","namespace":"urn:ietf:params:xml:ns:yang:iana-crypt-hash","conformance-type":"import","feature":["crypt-hash-sha-512","crypt-hash-sha-256","crypt-hash-md5"]},{"name":"openflow-extensible-match_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-extensible-match?revision=2015-02-25","namespace":"urn:opendaylight:openflow:oxm","conformance-type":"import"}],"module-set-id":"2"}}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:15.512131" elapsed="0.003936"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:15.511632" elapsed="0.004472"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:15.511584" elapsed="0.004544"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:15.518659" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:15.516446" elapsed="0.002258"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:15.516223" elapsed="0.002516"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:15.516204" elapsed="0.002559"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:15.519368" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:15.518953" elapsed="0.000441"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:15.519722" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:15.519485" elapsed="0.000294"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:15.520279" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:15.519960" elapsed="0.000344"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:15.519802" elapsed="0.000538"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:15.519466" elapsed="0.000895"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:15.520898" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:15.520538" elapsed="0.000386"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:15.521298" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:15.521032" elapsed="0.000325"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:15.521843" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:15.521544" elapsed="0.000324"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:15.521381" elapsed="0.000522"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:15.521011" elapsed="0.000912"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:51:15.522093" elapsed="0.000366"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:51:15.522944" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:15.522644" elapsed="0.000325"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:51:15.523142" elapsed="0.002208"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:51:15.509937" elapsed="0.015535"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:51:15.525818" elapsed="0.000047"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:51:15.525601" elapsed="0.000332"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:15.525550" elapsed="0.000432"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:51:15.535090" level="INFO">${text_normalized} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:51:15.526752" elapsed="0.008387"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:51:15.535232" elapsed="0.000067"/>
</return>
<msg time="2026-04-08T00:51:15.535559" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:51:15.483939" elapsed="0.051728"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:51:15.536134" elapsed="0.000044"/>
</return>
<msg time="2026-04-08T00:51:15.536333" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="PASS" start="2026-04-08T00:51:15.344718" elapsed="0.191643"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Json_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:15.536707" elapsed="0.000027"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:15.536445" elapsed="0.000456"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:15.536428" elapsed="0.000501"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:51:15.536963" elapsed="0.000054"/>
</return>
<arg>session=${session}</arg>
<arg>folder=${RESTCONF_MODULES_DIR}</arg>
<arg>verify=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Add arguments sensible for JSON data, return Get_Templated response text.
Optionally, verification against JSON data (may be iterated) is called.
Only subset of JSON data is verified and returned if JMES path is specified in
file ${folder}/jmespath.expr.</doc>
<status status="PASS" start="2026-04-08T00:51:15.340474" elapsed="0.196652"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:15.336368" elapsed="0.200895"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:15.336348" elapsed="0.200949"/>
</if>
<kw name="Resolve_Shard_Type_Class" owner="ClusterManagement">
<if>
<branch type="IF" condition="'${shard_type}' == 'config'">
<return>
<value>DistributedConfigDatastore</value>
<status status="PASS" start="2026-04-08T00:51:15.538065" elapsed="0.000033"/>
</return>
<status status="PASS" start="2026-04-08T00:51:15.537928" elapsed="0.000212"/>
</branch>
<branch type="ELSE IF" condition="'${shard_type}' == 'operational'">
<return>
<value>DistributedOperationalDatastore</value>
<status status="NOT RUN" start="2026-04-08T00:51:15.538238" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:51:15.538189" elapsed="0.000098"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:15.537904" elapsed="0.000411"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized shard type: ${shard_type}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:15.538504" elapsed="0.000026"/>
</kw>
<msg time="2026-04-08T00:51:15.538651" level="INFO">${type_class} = DistributedConfigDatastore</msg>
<var>${type_class}</var>
<arg>shard_type=${shard_type}</arg>
<doc>Simple lookup for class name corresponding to desired type.</doc>
<status status="PASS" start="2026-04-08T00:51:15.537595" elapsed="0.001087"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:15.539371" level="INFO">${cluster_index} = 3</msg>
<var>${cluster_index}</var>
<arg>${member_index}+${NODE_ROLE_INDEX_START}-1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:15.538896" elapsed="0.000508"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:15.540185" level="INFO">${uri} = jolokia/read/org.opendaylight.controller:Category=Shards,name=member-3-shard-default-config,type=DistributedConfigDatastore</msg>
<var>${uri}</var>
<arg>${JOLOKIA_READ_URI}:Category=Shards,name=member-${cluster_index}-shard-${shard_name}-${shard_type},type=${type_class}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:15.539602" elapsed="0.000614"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:15.545959" level="INFO">jolokia/read/org.opendaylight.controller:Category=Shards,name=member-3-shard-default-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:15.545516" elapsed="0.000490"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:15.546616" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:15.546172" elapsed="0.000488"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:51:15.563118" level="INFO">GET Request : url=http://10.30.171.110:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-3-shard-default-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-3-shard-default-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:51:15.563272" level="INFO">GET Response : url=http://10.30.171.110:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-3-shard-default-config,type=DistributedConfigDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Wed, 08 Apr 2026 00:51:15 GMT', 'Expires': 'Tue, 07 Apr 2026 23:51:15 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-3-shard-default-config,type=DistributedConfigDatastore","type":"read"},"value":{"ReadWriteTransactionCount":0,"SnapshotIndex":73,"InMemoryJournalLogSize":1,"ReplicatedToAllIndex":73,"Leader":"member-1-shard-default-config","LastIndex":74,"RaftState":"Follower","LastApplied":74,"LastCommittedTransactionTime":"1970-01-01 00:00:00.000","PeerAddresses":"member-1-shard-default-config: pekko:\/\/opendaylight-cluster-data@10.30.170.48:2550\/user\/shardmanager-config\/member-1-shard-default-config, member-2-shard-default-config: pekko:\/\/opendaylight-cluster-data@10.30.170.131:2550\/user\/shardmanager-config\/member-2-shard-default-config","LastLogIndex":74,"LastLeadershipChangeTime":"2026-04-08 00:46:45.933","FollowerInitialSyncStatus":true,"FollowerInfo":[],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"226.9 μs","CurrentTerm":2,"LastTerm":2,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-default-config","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":0,"TxCohortCacheSize":0,"PeerVotingStates":"member-1-shard-default-config: true, member-2-shard-default-config: true","LastLogTerm":2,"StatRetrievalError":null,"CommitIndex":74,"SnapshotTerm":2,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-3-shard-default-config","LeadershipChangeCount":1,"InMemoryJournalDataSize":10675},"timestamp":1775609475,"status":200} 
 </msg>
<msg time="2026-04-08T00:51:15.563460" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:51:15.557263" elapsed="0.006302"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:15.546728" elapsed="0.017089"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:15.563999" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:15.563848" elapsed="0.000724"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:15.546710" elapsed="0.017888"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:15.569226" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-3-shard-default-config,type=DistributedConfigDatastore","type":"read"},"value":{"ReadWriteTransactionCount":0,"SnapshotIndex":73,"InMemoryJournalLogSize":1,"ReplicatedToAllIndex":73,"Leader":"member-1-shard-default-config","LastIndex":74,"RaftState":"Follower","LastApplied":74,"LastCommittedTransactionTime":"1970-01-01 00:00:00.000","PeerAddresses":"member-1-shard-default-config: pekko:\/\/opendaylight-cluster-data@10.30.170.48:2550\/user\/shardmanager-config\/member-1-shard-default-config, member-2-shard-default-config: pekko:\/\/opendaylight-cluster-data@10.30.170.131:2550\/user\/shardmanager-config\/member-2-shard-default-config","LastLogIndex":74,"LastLeadershipChangeTime":"2026-04-08 00:46:45.933","FollowerInitialSyncStatus":true,"FollowerInfo":[],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"226.9 μs","CurrentTerm":2,"LastTerm":2,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-default-config","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":0,"TxCohortCacheSize":0,"PeerVotingStates":"member-1-shard-default-config: true, member-2-shard-default-config: true","LastLogTerm":2,"StatRetrievalError":null,"CommitIndex":74,"SnapshotTerm":2,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-3-shard-default-config","LeadershipChangeCount":1,"InMemoryJournalDataSize":10675},"timestamp":1775609475,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:15.566608" elapsed="0.002770"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:15.565767" elapsed="0.003661"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:15.565748" elapsed="0.003741"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:15.574042" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:15.570783" elapsed="0.003417"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:15.569604" elapsed="0.004666"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:15.569578" elapsed="0.004744"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:15.576408" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:15.575178" elapsed="0.001332"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:15.577452" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:15.576764" elapsed="0.000809"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:15.578835" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:15.578116" elapsed="0.000782"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:15.577624" elapsed="0.001344"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:15.576736" elapsed="0.002280"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:15.581044" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:15.579885" elapsed="0.001245"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:15.581971" elapsed="0.000035"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:15.581422" elapsed="0.000634"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:15.582948" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:15.582454" elapsed="0.000538"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:15.582093" elapsed="0.000948"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:15.581389" elapsed="0.001687"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:51:15.583312" elapsed="0.000615"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:51:15.584917" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:15.584414" elapsed="0.000578"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:51:15.585294" elapsed="0.002309"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:51:15.565075" elapsed="0.022686"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:51:15.587957" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:51:15.587833" elapsed="0.000168"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:15.587814" elapsed="0.000209"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:51:15.591602" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-3-shard-default-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 17756094...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:51:15.588295" elapsed="0.003335"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:51:15.591680" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:51:15.591837" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-3-shard-default-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 17756094...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:51:15.541276" elapsed="0.050587"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:51:15.591919" elapsed="0.000027"/>
</return>
<msg time="2026-04-08T00:51:15.592064" level="INFO">${data_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-3-shard-default-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 17756094...</msg>
<var>${data_text}</var>
<arg>uri=${uri}</arg>
<arg>session=${session}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-08T00:51:15.540432" elapsed="0.051658"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:15.593276" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-3-shard-default-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1775609475, 'value'...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:15.592747" elapsed="0.000559"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-08T00:51:15.593397" elapsed="0.000031"/>
</return>
<msg time="2026-04-08T00:51:15.593576" level="INFO">${data_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-3-shard-default-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1775609475, 'value'...</msg>
<var>${data_object}</var>
<arg>${data_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-08T00:51:15.592407" elapsed="0.001197"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:51:15.593968" level="INFO">${value} = {'AbortTransactionsCount': 0, 'CommitIndex': 74, 'CommittedTransactionsCount': 0, 'CurrentTerm': 2, 'FailedReadTransactionsCount': 0, 'FailedTransactionsCount': 0, 'FollowerInfo': [], 'FollowerInitial...</msg>
<var>${value}</var>
<arg>${data_object}</arg>
<arg>value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:51:15.593759" elapsed="0.000238"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:51:15.594369" level="INFO">${raft_property} = Follower</msg>
<var>${raft_property}</var>
<arg>${value}</arg>
<arg>${property}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:51:15.594151" elapsed="0.000243"/>
</kw>
<return>
<value>${raft_property}</value>
<status status="PASS" start="2026-04-08T00:51:15.594439" elapsed="0.000027"/>
</return>
<msg time="2026-04-08T00:51:15.594588" level="INFO">${raft_state} = Follower</msg>
<var>${raft_state}</var>
<arg>RaftState</arg>
<arg>${shard_name}</arg>
<arg>${shard_type}</arg>
<arg>${member_index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft property.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T00:51:15.334706" elapsed="0.259906"/>
</kw>
<return>
<value>${raft_state}</value>
<status status="PASS" start="2026-04-08T00:51:15.594668" elapsed="0.000025"/>
</return>
<msg time="2026-04-08T00:51:15.594815" level="INFO">${raft_state} = Follower</msg>
<var>${raft_state}</var>
<arg>shard_name=${shard_name}</arg>
<arg>shard_type=${ds_type}</arg>
<arg>member_index=${index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft status.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T00:51:15.333865" elapsed="0.260975"/>
</kw>
<if>
<branch type="IF" condition="'Follower' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${follower_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-08T00:51:15.595133" elapsed="0.000206"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:15.594919" elapsed="0.000457"/>
</branch>
<branch type="ELSE IF" condition="'Leader' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${leader_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:15.595549" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:15.595400" elapsed="0.000202"/>
</branch>
<branch type="ELSE IF" condition="${validate}">
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized Raft state: ${raft_state}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:15.595765" elapsed="0.000019"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:15.595625" elapsed="0.000189"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:15.594902" elapsed="0.000935"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T00:51:15.333697" elapsed="0.262164"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-08T00:51:14.809137" elapsed="0.786759"/>
</for>
<return>
<value>${leader_list}</value>
<value>${follower_list}</value>
<status status="PASS" start="2026-04-08T00:51:15.595937" elapsed="0.000026"/>
</return>
<msg time="2026-04-08T00:51:15.596137" level="INFO">${leader_list} = [1]</msg>
<msg time="2026-04-08T00:51:15.596251" level="INFO">${follower_list} = [2, 3]</msg>
<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="PASS" start="2026-04-08T00:51:14.804800" elapsed="0.791477"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T00:51:15.596817" level="INFO">Length is 1.</msg>
<msg time="2026-04-08T00:51:15.596893" level="INFO">${leader_count} = 1</msg>
<var>${leader_count}</var>
<arg>${leader_list}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T00:51:15.596451" elapsed="0.000465"/>
</kw>
<if>
<branch type="IF" condition="${leader_count} &lt; 1">
<kw name="Fail" owner="BuiltIn">
<arg>No leader found.</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:15.597236" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:15.597004" elapsed="0.000287"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:15.596984" elapsed="0.000329"/>
</if>
<kw name="Length Should Be" owner="BuiltIn">
<msg time="2026-04-08T00:51:15.599413" level="INFO">Length is 1.</msg>
<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="PASS" start="2026-04-08T00:51:15.597454" elapsed="0.002004"/>
</kw>
<kw name="Get From List" owner="Collections">
<msg time="2026-04-08T00:51:15.599802" level="INFO">${leader} = 1</msg>
<var>${leader}</var>
<arg>${leader_list}</arg>
<arg>0</arg>
<doc>Returns the value specified with an ``index`` from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:51:15.599620" elapsed="0.000207"/>
</kw>
<return>
<value>${leader}</value>
<value>${follower_list}</value>
<status status="PASS" start="2026-04-08T00:51:15.599872" elapsed="0.000028"/>
</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="PASS" start="2026-04-08T00:51:14.802211" elapsed="0.797828"/>
</kw>
<var name="${shard_name}">default</var>
<status status="PASS" start="2026-04-08T00:51:14.801958" elapsed="0.798140"/>
</iter>
<var>${shard_name}</var>
<value>@{shard_name_list}</value>
<status status="PASS" start="2026-04-08T00:51:13.191225" elapsed="2.408906"/>
</for>
<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="PASS" start="2026-04-08T00:51:13.190818" elapsed="2.409446"/>
</kw>
<doc>Check Status for all shards in OpenFlow application.</doc>
<status status="PASS" start="2026-04-08T00:51:10.758243" elapsed="4.842121"/>
</kw>
<doc>Check Status for all shards in OpenFlow application.</doc>
<status status="PASS" start="2026-04-08T00:51:10.757430" elapsed="4.843082"/>
</test>
<test id="s1-s2-t2" name="Start Mininet Multiple Connections" line="20">
<kw name="Start Mininet Multiple Controllers" owner="MininetKeywords">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:51:15.609313" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:51:15.608887" elapsed="0.000454"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:51:15.609797" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:51:15.609497" elapsed="0.000326"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:51:15.609867" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:51:15.610018" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${controller_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:51:15.608517" elapsed="0.001525"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:15.610442" level="INFO">Clear any existing mininet</msg>
<arg>Clear any existing mininet</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:15.610232" elapsed="0.000253"/>
</kw>
<kw name="Clean Mininet System" owner="Utils">
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:15.612851" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:15.612587" elapsed="0.000321"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:15.612569" elapsed="0.000362"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:51:15.613295" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T00:51:15.613108" elapsed="0.000316"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:15.613945" level="INFO">Attempting to execute command "sudo mn -c" on remote system "10.30.170.192" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:15.613573" elapsed="0.000418"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:51:15.614534" level="INFO">${conn_id} = 55</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:51:15.614147" elapsed="0.000413"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T00:51:15.615435" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T00:51:15.615510" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T00:51:15.615172" elapsed="0.000361"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:51:15.615688" elapsed="0.000315"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T00:51:15.617037" level="INFO">Logging into '10.30.170.192:22' as 'jenkins'.</msg>
<msg time="2026-04-08T00:51:15.958279" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 00:51:05 UTC 2026

  System load:  0.01               Processes:             111
  Usage of /:   19.5% of 38.58GB   Users logged in:       0
  Memory usage: 5%                 IPv4 address for ens3: 10.30.170.192
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 00:51:07 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-1-mininet-ovs-217-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T00:51:15.616568" elapsed="0.341817"/>
</kw>
<msg time="2026-04-08T00:51:15.958455" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:51:15.616208" elapsed="0.342312"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T00:51:15.614772" elapsed="0.343843"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T00:51:15.959031" level="INFO">Executing command 'sudo mn -c'.</msg>
<msg time="2026-04-08T00:51:17.093771" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-08T00:51:17.094351" level="INFO">${stdout} = </msg>
<msg time="2026-04-08T00:51:17.094459" level="INFO">${stderr} = *** Removing excess controllers/ofprotocols/ofdatapaths/pings/noxes
killall controller ofprotocol ofdatapath ping nox_corelt-nox_core ovs-openflowd ovs-controllerovs-testcontroller udpbwtest mnexec iv...</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T00:51:15.958819" elapsed="1.135848"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:51:17.095333" elapsed="0.000575"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:17.097071" level="INFO">*** Removing excess controllers/ofprotocols/ofdatapaths/pings/noxes
killall controller ofprotocol ofdatapath ping nox_corelt-nox_core ovs-openflowd ovs-controllerovs-testcontroller udpbwtest mnexec ivs ryu-manager 2&gt; /dev/null
killall -9 controller ofprotocol ofdatapath ping nox_corelt-nox_core ovs-openflowd ovs-controllerovs-testcontroller udpbwtest mnexec ivs ryu-manager 2&gt; /dev/null
pkill -9 -f "sudo mnexec"
*** Removing junk from /tmp
rm -f /tmp/vconn* /tmp/vlogs* /tmp/*.out /tmp/*.log
*** Removing old X11 tunnels
*** Removing excess kernel datapaths
ps ax | egrep -o 'dp[0-9]+' | sed 's/dp/nl:/'
***  Removing OVS datapaths
ovs-vsctl --timeout=1 list-br
ovs-vsctl --timeout=1 list-br
*** Removing all links of the pattern foo-ethX
ip link show | egrep -o '([-_.[:alnum:]]+-eth[[:digit:]]+)'
ip link show
*** Killing stale mininet node processes
pkill -9 -f mininet:
*** Shutting down stale tunnels
pkill -9 -f Tunnel=Ethernet
pkill -9 -f .ssh/mn
rm -f ~/.ssh/mn/*
*** Cleanup complete.</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:17.096404" elapsed="0.000822"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:51:17.097725" elapsed="0.000035"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:51:17.097414" elapsed="0.000419"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:17.097361" elapsed="0.000523"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T00:51:17.098270" elapsed="0.000088"/>
</return>
<status status="PASS" start="2026-04-08T00:51:17.098003" elapsed="0.000430"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:17.097969" elapsed="0.000518"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:51:17.098564" elapsed="0.000030"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:51:17.103298" elapsed="0.000524"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:51:17.104084" elapsed="0.000339"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:51:17.104634" elapsed="0.000139"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:51:17.099428" elapsed="0.005417"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T00:51:15.612054" elapsed="1.492919"/>
</kw>
<msg time="2026-04-08T00:51:17.105050" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:51:15.611516" elapsed="1.493609"/>
</kw>
<arg>${system}</arg>
<arg>sudo mn -c</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-08T00:51:15.611023" elapsed="1.494233"/>
</kw>
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:17.108235" elapsed="0.000033"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:17.107813" elapsed="0.000502"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:17.107786" elapsed="0.000563"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:51:17.108742" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T00:51:17.108555" elapsed="0.000366"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:17.109687" level="INFO">Attempting to execute command "sudo ps -elf | egrep 'usr/local/bin/mn' | egrep python | awk '{print "sudo kill -9",$4}' | sh" on remote system "10.30.170.192" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:17.109128" elapsed="0.000625"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:51:17.110490" level="INFO">${conn_id} = 57</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:51:17.109966" elapsed="0.000560"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T00:51:17.111789" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T00:51:17.111895" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T00:51:17.111402" elapsed="0.000527"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:51:17.112194" elapsed="0.002379"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T00:51:17.115512" level="INFO">Logging into '10.30.170.192:22' as 'jenkins'.</msg>
<msg time="2026-04-08T00:51:17.492731" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 00:51:05 UTC 2026

  System load:  0.01               Processes:             111
  Usage of /:   19.5% of 38.58GB   Users logged in:       0
  Memory usage: 5%                 IPv4 address for ens3: 10.30.170.192
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 00:51:15 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-1-mininet-ovs-217-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T00:51:17.115187" elapsed="0.377704"/>
</kw>
<msg time="2026-04-08T00:51:17.492975" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:51:17.114811" elapsed="0.378248"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T00:51:17.110837" elapsed="0.382358"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T00:51:17.493686" level="INFO">Executing command 'sudo ps -elf | egrep 'usr/local/bin/mn' | egrep python | awk '{print "sudo kill -9",$4}' | sh'.</msg>
<msg time="2026-04-08T00:51:17.526237" level="INFO">Command exited with return code -1.</msg>
<msg time="2026-04-08T00:51:17.526596" level="INFO">${stdout} = </msg>
<msg time="2026-04-08T00:51:17.526696" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T00:51:17.493445" elapsed="0.033305"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:51:17.527249" elapsed="0.000580"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:17.528927" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:17.528303" elapsed="0.000718"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:51:17.529563" elapsed="0.000042"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:51:17.529222" elapsed="0.000465"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:17.529140" elapsed="0.000606"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T00:51:17.530100" elapsed="0.000101"/>
</return>
<status status="PASS" start="2026-04-08T00:51:17.529866" elapsed="0.000412"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:17.529833" elapsed="0.000498"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:51:17.530407" elapsed="0.000031"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:51:17.536410" elapsed="0.000839"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:51:17.537485" elapsed="0.000222"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:51:17.537911" elapsed="0.000133"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:51:17.531113" elapsed="0.007005"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T00:51:17.107013" elapsed="0.431265"/>
</kw>
<msg time="2026-04-08T00:51:17.538356" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:51:17.106230" elapsed="0.432199"/>
</kw>
<arg>${system}</arg>
<arg>sudo ps -elf | egrep 'usr/local/bin/mn' | egrep python | awk '{print "sudo kill -9",$4}' | sh</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-08T00:51:17.105518" elapsed="0.433019"/>
</kw>
<arg>${mininet}</arg>
<status status="PASS" start="2026-04-08T00:51:15.610679" elapsed="1.927936"/>
</kw>
<kw name="Open_Connection_To_Tools_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:51:17.545582" level="INFO">${tools_connection} = 59</msg>
<var>${tools_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:51:17.545047" elapsed="0.000573"/>
</kw>
<kw name="Flexible_Mininet_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T00:51:17.548105" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T00:51:17.548238" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T00:51:17.547669" elapsed="0.000605"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:51:17.548502" elapsed="0.000405"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T00:51:17.594936" level="INFO">Logging into '10.30.170.192:22' as 'jenkins'.</msg>
<msg time="2026-04-08T00:51:17.927342" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 00:51:05 UTC 2026

  System load:  0.01               Processes:             111
  Usage of /:   19.5% of 38.58GB   Users logged in:       0
  Memory usage: 5%                 IPv4 address for ens3: 10.30.170.192
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 00:51:17 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-1-mininet-ovs-217-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T00:51:17.549526" elapsed="0.377980"/>
</kw>
<msg time="2026-04-08T00:51:17.927594" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:51:17.549148" elapsed="0.378533"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T00:51:17.546968" elapsed="0.380852"/>
</kw>
<msg time="2026-04-08T00:51:17.927875" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:51:17.546423" elapsed="0.381500"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-08T00:51:17.545870" elapsed="0.382133"/>
</kw>
<return>
<value>${tools_connection}</value>
<status status="PASS" start="2026-04-08T00:51:17.928059" elapsed="0.000043"/>
</return>
<msg time="2026-04-08T00:51:17.928297" level="INFO">${mininet_conn_id} = 59</msg>
<var>${mininet_conn_id}</var>
<arg>ip_address=${mininet}</arg>
<arg>timeout=${timeout}</arg>
<doc>Open a connection to the tools system at ${ip_address} and return its identifier.</doc>
<status status="PASS" start="2026-04-08T00:51:17.544358" elapsed="0.383965"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:17.929059" level="INFO">${mininet_conn_id} = 59</msg>
<arg>${mininet_conn_id}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-08T00:51:17.928618" elapsed="0.000484"/>
</kw>
<if>
<branch type="IF" condition="'${custom}' != '${EMPTY}'">
<kw name="Put File" owner="SSHLibrary">
<arg>${custom}</arg>
<doc>Uploads file(s) from the local machine to the remote machine.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:17.931367" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:17.929205" elapsed="0.002217"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:17.929180" elapsed="0.002268"/>
</if>
<if>
<branch type="IF" condition="'${protocol}' == 'ssl'">
<kw name="Install Certificates In Mininet" owner="MininetKeywords">
<doc>Copy and install certificates in simulator.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:17.931840" elapsed="0.000027"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:17.931505" elapsed="0.000391"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:17.931489" elapsed="0.000431"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:17.932371" level="INFO">Start mininet --topo tree,2</msg>
<arg>Start mininet ${options}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:17.932083" elapsed="0.000333"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T00:51:17.933947" level="INFO">sudo mn --topo tree,2</msg>
<arg>sudo mn ${options}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T00:51:17.932576" elapsed="0.001427"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-08T00:51:18.222644" level="INFO">[?2004l*** No default OpenFlow controller found for default switch!
*** Falling back to OVS Bridge
*** Creating network
*** Adding controller
*** Adding hosts:
h1 h2 h3 h4 
*** Adding switches:
s1 s2 s3 
*** Adding links:
(s1, s2) (s1, s3) (s2, h1) (s2, h2) (s3, h3) (s3, h4) 
*** Configuring hosts
h1 h2 h3 h4 
*** Starting controller

*** Starting 3 switches
s1 s2 s3 ...
*** Starting CLI:
mininet&gt;</msg>
<arg>mininet&gt;</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-08T00:51:17.934186" elapsed="0.288631"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:18.223589" level="INFO">Create controller configuration</msg>
<arg>Create controller configuration</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:18.223188" elapsed="0.000448"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:18.224081" level="INFO">${controller_opt} = </msg>
<var>${controller_opt}</var>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:18.223818" elapsed="0.000289"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:51:18.224968" level="INFO">${controller_opt} =   tcp:10.30.170.48:6633</msg>
<var>${controller_opt}</var>
<arg>${controller_opt}</arg>
<arg>${SPACE}${protocol}:${ODL_SYSTEM_${index}_IP}:${ofport}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:51:18.224523" elapsed="0.000471"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:18.225428" level="INFO">  tcp:10.30.170.48:6633</msg>
<arg>${controller_opt}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:18.225182" elapsed="0.000290"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T00:51:18.224370" elapsed="0.001135"/>
</iter>
<iter>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:51:18.226190" level="INFO">${controller_opt} =   tcp:10.30.170.48:6633  tcp:10.30.170.131:6633</msg>
<var>${controller_opt}</var>
<arg>${controller_opt}</arg>
<arg>${SPACE}${protocol}:${ODL_SYSTEM_${index}_IP}:${ofport}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:51:18.225739" elapsed="0.000479"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:18.226627" level="INFO">  tcp:10.30.170.48:6633  tcp:10.30.170.131:6633</msg>
<arg>${controller_opt}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:18.226386" elapsed="0.000286"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T00:51:18.225596" elapsed="0.001108"/>
</iter>
<iter>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:51:18.227467" level="INFO">${controller_opt} =   tcp:10.30.170.48:6633  tcp:10.30.170.131:6633  tcp:10.30.171.110:6633</msg>
<var>${controller_opt}</var>
<arg>${controller_opt}</arg>
<arg>${SPACE}${protocol}:${ODL_SYSTEM_${index}_IP}:${ofport}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:51:18.227016" elapsed="0.000477"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:18.227922" level="INFO">  tcp:10.30.170.48:6633  tcp:10.30.170.131:6633  tcp:10.30.171.110:6633</msg>
<arg>${controller_opt}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:18.227680" elapsed="0.000286"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T00:51:18.226869" elapsed="0.001129"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-08T00:51:18.224186" elapsed="0.003840"/>
</for>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:18.228423" level="INFO">Open extra SSH connection to configure the OVS bridges</msg>
<arg>Open extra SSH connection to configure the OVS bridges</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:18.228206" elapsed="0.000261"/>
</kw>
<kw name="Open_Connection_To_Tools_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:51:18.233713" level="INFO">${tools_connection} = 60</msg>
<var>${tools_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:51:18.233326" elapsed="0.000414"/>
</kw>
<kw name="Flexible_Mininet_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T00:51:18.235489" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T00:51:18.235591" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T00:51:18.235204" elapsed="0.000412"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:51:18.235774" elapsed="0.000340"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T00:51:18.236962" level="INFO">Logging into '10.30.170.192:22' as 'jenkins'.</msg>
<msg time="2026-04-08T00:51:18.570963" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 00:51:05 UTC 2026

  System load:  0.01               Processes:             111
  Usage of /:   19.5% of 38.58GB   Users logged in:       0
  Memory usage: 5%                 IPv4 address for ens3: 10.30.170.192
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 00:51:17 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-1-mininet-ovs-217-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T00:51:18.236648" elapsed="0.334498"/>
</kw>
<msg time="2026-04-08T00:51:18.571259" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:51:18.236295" elapsed="0.335072"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T00:51:18.234711" elapsed="0.336786"/>
</kw>
<msg time="2026-04-08T00:51:18.571551" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:51:18.234312" elapsed="0.337285"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-08T00:51:18.233915" elapsed="0.337760"/>
</kw>
<return>
<value>${tools_connection}</value>
<status status="PASS" start="2026-04-08T00:51:18.571730" elapsed="0.000044"/>
</return>
<arg>ip_address=${mininet}</arg>
<arg>timeout=${timeout}</arg>
<doc>Open a connection to the tools system at ${ip_address} and return its identifier.</doc>
<status status="PASS" start="2026-04-08T00:51:18.232794" elapsed="0.339115"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T00:51:18.572317" level="INFO">Executing command 'sudo ovs-vsctl show | grep Bridge | wc -l'.</msg>
<msg time="2026-04-08T00:51:18.594923" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-08T00:51:18.595148" level="INFO">${num_bridges} = 3</msg>
<var>${num_bridges}</var>
<arg>sudo ovs-vsctl show | grep Bridge | wc -l</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T00:51:18.572152" elapsed="0.023091"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:51:18.596529" level="INFO">${num_bridges} = 3</msg>
<var>${num_bridges}</var>
<arg>${num_bridges}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:51:18.595719" elapsed="0.000869"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:51:18.597556" level="INFO">${bridges} = []</msg>
<var>${bridges}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:51:18.596974" elapsed="0.000639"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T00:51:18.603904" level="INFO">Executing command 'sudo ovs-vsctl show | grep Bridge | cut -c 12- | sort | head -1 | tail -1'.</msg>
<msg time="2026-04-08T00:51:18.656901" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-08T00:51:18.657125" level="INFO">${bridge} = s1</msg>
<var>${bridge}</var>
<arg>sudo ovs-vsctl show | grep Bridge | cut -c 12- | sort | head -${i} | tail -1</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T00:51:18.603765" elapsed="0.053461"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T00:51:18.658261" level="INFO">Executing command 'sudo ovs-vsctl del-controller s1 &amp;&amp; sudo ovs-vsctl set bridge s1 protocols=OpenFlow13'.</msg>
<msg time="2026-04-08T00:51:18.731285" level="INFO">Command exited with return code 0.</msg>
<arg>sudo ovs-vsctl del-controller ${bridge} &amp;&amp; sudo ovs-vsctl set bridge ${bridge} protocols=OpenFlow${ofversion}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T00:51:18.657600" elapsed="0.073861"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${bridges}</arg>
<arg>${bridge}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-08T00:51:18.732043" elapsed="0.000540"/>
</kw>
<var name="${i}">1</var>
<status status="PASS" start="2026-04-08T00:51:18.603451" elapsed="0.129219"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T00:51:18.733552" level="INFO">Executing command 'sudo ovs-vsctl show | grep Bridge | cut -c 12- | sort | head -2 | tail -1'.</msg>
<msg time="2026-04-08T00:51:18.797310" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-08T00:51:18.797563" level="INFO">${bridge} = s2</msg>
<var>${bridge}</var>
<arg>sudo ovs-vsctl show | grep Bridge | cut -c 12- | sort | head -${i} | tail -1</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T00:51:18.733249" elapsed="0.064370"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T00:51:18.798706" level="INFO">Executing command 'sudo ovs-vsctl del-controller s2 &amp;&amp; sudo ovs-vsctl set bridge s2 protocols=OpenFlow13'.</msg>
<msg time="2026-04-08T00:51:18.881622" level="INFO">Command exited with return code 0.</msg>
<arg>sudo ovs-vsctl del-controller ${bridge} &amp;&amp; sudo ovs-vsctl set bridge ${bridge} protocols=OpenFlow${ofversion}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T00:51:18.798015" elapsed="0.083831"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${bridges}</arg>
<arg>${bridge}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-08T00:51:18.882387" elapsed="0.000593"/>
</kw>
<var name="${i}">2</var>
<status status="PASS" start="2026-04-08T00:51:18.732907" elapsed="0.150170"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T00:51:18.884072" level="INFO">Executing command 'sudo ovs-vsctl show | grep Bridge | cut -c 12- | sort | head -3 | tail -1'.</msg>
<msg time="2026-04-08T00:51:18.937049" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-08T00:51:18.937379" level="INFO">${bridge} = s3</msg>
<var>${bridge}</var>
<arg>sudo ovs-vsctl show | grep Bridge | cut -c 12- | sort | head -${i} | tail -1</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T00:51:18.883751" elapsed="0.053688"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T00:51:18.938572" level="INFO">Executing command 'sudo ovs-vsctl del-controller s3 &amp;&amp; sudo ovs-vsctl set bridge s3 protocols=OpenFlow13'.</msg>
<msg time="2026-04-08T00:51:19.017128" level="INFO">Command exited with return code 0.</msg>
<arg>sudo ovs-vsctl del-controller ${bridge} &amp;&amp; sudo ovs-vsctl set bridge ${bridge} protocols=OpenFlow${ofversion}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T00:51:18.937869" elapsed="0.079489"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${bridges}</arg>
<arg>${bridge}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-08T00:51:19.017798" elapsed="0.000545"/>
</kw>
<var name="${i}">3</var>
<status status="PASS" start="2026-04-08T00:51:18.883409" elapsed="0.135025"/>
</iter>
<var>${i}</var>
<value>1</value>
<value>${num_bridges+1}</value>
<status status="PASS" start="2026-04-08T00:51:18.597735" elapsed="0.420774"/>
</for>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:19.019633" level="INFO">Configure OVS controllers   tcp:10.30.170.48:6633  tcp:10.30.170.131:6633  tcp:10.30.171.110:6633 in all bridges</msg>
<arg>Configure OVS controllers ${controller_opt} in all bridges</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:19.018939" elapsed="0.000795"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T00:51:19.020844" level="INFO">Executing command 'sudo ovs-vsctl set-controller s1   tcp:10.30.170.48:6633  tcp:10.30.170.131:6633  tcp:10.30.171.110:6633'.</msg>
<msg time="2026-04-08T00:51:19.073099" level="INFO">Command exited with return code 0.</msg>
<arg>sudo ovs-vsctl set-controller ${bridge} ${controller_opt}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T00:51:19.020484" elapsed="0.052801"/>
</kw>
<var name="${bridge}">s1</var>
<status status="PASS" start="2026-04-08T00:51:19.020149" elapsed="0.053218"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T00:51:19.074299" level="INFO">Executing command 'sudo ovs-vsctl set-controller s2   tcp:10.30.170.48:6633  tcp:10.30.170.131:6633  tcp:10.30.171.110:6633'.</msg>
<msg time="2026-04-08T00:51:19.174088" level="INFO">Command exited with return code 0.</msg>
<arg>sudo ovs-vsctl set-controller ${bridge} ${controller_opt}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T00:51:19.073893" elapsed="0.100444"/>
</kw>
<var name="${bridge}">s2</var>
<status status="PASS" start="2026-04-08T00:51:19.073573" elapsed="0.100863"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T00:51:19.175516" level="INFO">Executing command 'sudo ovs-vsctl set-controller s3   tcp:10.30.170.48:6633  tcp:10.30.170.131:6633  tcp:10.30.171.110:6633'.</msg>
<msg time="2026-04-08T00:51:19.233537" level="INFO">Command exited with return code 0.</msg>
<arg>sudo ovs-vsctl set-controller ${bridge} ${controller_opt}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T00:51:19.175085" elapsed="0.058744"/>
</kw>
<var name="${bridge}">s3</var>
<status status="PASS" start="2026-04-08T00:51:19.174705" elapsed="0.059282"/>
</iter>
<var>${bridge}</var>
<value>@{bridges}</value>
<status status="PASS" start="2026-04-08T00:51:19.019847" elapsed="0.214259"/>
</for>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:19.235666" level="INFO">Check OVS configuratiom</msg>
<arg>Check OVS configuratiom</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:19.234920" elapsed="0.000811"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T00:51:19.236113" level="INFO">Executing command 'sudo ovs-vsctl show'.</msg>
<msg time="2026-04-08T00:51:19.296941" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-08T00:51:19.297221" level="INFO">${output} = 9a5df812-eb49-4477-a37e-2d464c02791d
    Bridge s3
        Controller "tcp:10.30.171.110:6633"
        Controller "tcp:10.30.170.48:6633"
        Controller "tcp:10.30.170.131:6633"
        fail_mode:...</msg>
<var>${output}</var>
<arg>sudo ovs-vsctl show</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T00:51:19.235979" elapsed="0.061304"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:19.298272" level="INFO">9a5df812-eb49-4477-a37e-2d464c02791d
    Bridge s3
        Controller "tcp:10.30.171.110:6633"
        Controller "tcp:10.30.170.48:6633"
        Controller "tcp:10.30.170.131:6633"
        fail_mode: standalone
        Port s3
            Interface s3
                type: internal
        Port s3-eth2
            Interface s3-eth2
        Port s3-eth1
            Interface s3-eth1
        Port s3-eth3
            Interface s3-eth3
    Bridge s2
        Controller "tcp:10.30.171.110:6633"
        Controller "tcp:10.30.170.131:6633"
        Controller "tcp:10.30.170.48:6633"
        fail_mode: standalone
        Port s2-eth1
            Interface s2-eth1
        Port s2
            Interface s2
                type: internal
        Port s2-eth3
            Interface s2-eth3
        Port s2-eth2
            Interface s2-eth2
    Bridge s1
        Controller "tcp:10.30.170.131:6633"
        Controller "tcp:10.30.170.48:6633"
        Controller "tcp:10.30.171.110:6633"
        fail_mode: standalone
        Port s1
            Interface s1
                type: internal
        Port s1-eth1
            Interface s1-eth1
        Port s1-eth2
            Interface s1-eth2
    ovs_version: "2.17.11"</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:19.297672" elapsed="0.000846"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:51:19.298960" elapsed="0.000723"/>
</kw>
<return>
<value>${mininet_conn_id}</value>
<status status="PASS" start="2026-04-08T00:51:19.299830" elapsed="0.000124"/>
</return>
<msg time="2026-04-08T00:51:19.300390" level="INFO">${mininet_conn_id} = 59</msg>
<var>${mininet_conn_id}</var>
<arg>${TOOLS_SYSTEM_IP}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<arg>--topo tree,2</arg>
<doc>Start Mininet with custom topology and connect to list of controllers in ${controller_index_list} or all if no list is provided.</doc>
<status status="PASS" start="2026-04-08T00:51:15.606105" elapsed="3.694351"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:19.302096" level="INFO">${mininet_conn_id} = 59</msg>
<arg>${mininet_conn_id}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-08T00:51:19.301011" elapsed="0.001262"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Check OVS OpenFlow Connections" owner="OVSDB">
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:19.316439" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:19.316114" elapsed="0.000383"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:19.316093" elapsed="0.000430"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:51:19.316827" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T00:51:19.316674" elapsed="0.000283"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:19.317503" level="INFO">Attempting to execute command "sudo ovs-vsctl show" on remote system "10.30.170.192" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:19.317107" elapsed="0.000441"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:51:19.318073" level="INFO">${conn_id} = 61</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:51:19.317707" elapsed="0.000392"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T00:51:19.319236" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T00:51:19.319313" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T00:51:19.318913" elapsed="0.000424"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:51:19.319495" elapsed="0.000319"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T00:51:19.320663" level="INFO">Logging into '10.30.170.192:22' as 'jenkins'.</msg>
<msg time="2026-04-08T00:51:19.676226" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 00:51:05 UTC 2026

  System load:  0.01               Processes:             111
  Usage of /:   19.5% of 38.58GB   Users logged in:       0
  Memory usage: 5%                 IPv4 address for ens3: 10.30.170.192
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 00:51:18 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-1-mininet-ovs-217-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T00:51:19.320349" elapsed="0.356042"/>
</kw>
<msg time="2026-04-08T00:51:19.676479" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:51:19.319981" elapsed="0.356585"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T00:51:19.318329" elapsed="0.358355"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T00:51:19.677222" level="INFO">Executing command 'sudo ovs-vsctl show'.</msg>
<msg time="2026-04-08T00:51:19.699771" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-08T00:51:19.699892" level="INFO">${stdout} = 9a5df812-eb49-4477-a37e-2d464c02791d
    Bridge s3
        Controller "tcp:10.30.171.110:6633"
        Controller "tcp:10.30.170.48:6633"
        Controller "tcp:10.30.170.131:6633"
        fail_mode:...</msg>
<msg time="2026-04-08T00:51:19.699938" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T00:51:19.676939" elapsed="0.023021"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:51:19.700126" elapsed="0.000261"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:19.700919" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:19.700608" elapsed="0.000352"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:51:19.701230" elapsed="0.000019"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:51:19.701052" elapsed="0.000307"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:19.701022" elapsed="0.000364"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T00:51:19.701604" elapsed="0.000032"/>
</return>
<status status="PASS" start="2026-04-08T00:51:19.701471" elapsed="0.000200"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:19.701442" elapsed="0.000254"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:51:19.701731" elapsed="0.000014"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:51:19.706717" elapsed="0.000782"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:51:19.707863" elapsed="0.000368"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:51:19.708563" elapsed="0.000210"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:51:19.702064" elapsed="0.006823"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T00:51:19.315578" elapsed="0.393510"/>
</kw>
<msg time="2026-04-08T00:51:19.709256" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:51:19.314989" elapsed="0.394375"/>
</kw>
<msg time="2026-04-08T00:51:19.709612" level="INFO">${output} = 9a5df812-eb49-4477-a37e-2d464c02791d
    Bridge s3
        Controller "tcp:10.30.171.110:6633"
        Controller "tcp:10.30.170.48:6633"
        Controller "tcp:10.30.170.131:6633"
        fail_mode:...</msg>
<var>${output}</var>
<arg>${tools_system}</arg>
<arg>sudo ovs-vsctl show</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-08T00:51:19.314485" elapsed="0.395185"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:19.710599" level="INFO">9a5df812-eb49-4477-a37e-2d464c02791d
    Bridge s3
        Controller "tcp:10.30.171.110:6633"
        Controller "tcp:10.30.170.48:6633"
        Controller "tcp:10.30.170.131:6633"
        fail_mode: standalone
        Port s3
            Interface s3
                type: internal
        Port s3-eth2
            Interface s3-eth2
        Port s3-eth1
            Interface s3-eth1
        Port s3-eth3
            Interface s3-eth3
    Bridge s2
        Controller "tcp:10.30.171.110:6633"
        Controller "tcp:10.30.170.131:6633"
        Controller "tcp:10.30.170.48:6633"
        fail_mode: standalone
        Port s2-eth1
            Interface s2-eth1
        Port s2
            Interface s2
                type: internal
        Port s2-eth3
            Interface s2-eth3
        Port s2-eth2
            Interface s2-eth2
    Bridge s1
        Controller "tcp:10.30.170.131:6633"
        Controller "tcp:10.30.170.48:6633"
        Controller "tcp:10.30.171.110:6633"
        fail_mode: standalone
        Port s1
            Interface s1
                type: internal
        Port s1-eth1
            Interface s1-eth1
        Port s1-eth2
            Interface s1-eth2
    ovs_version: "2.17.11"</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:19.710014" elapsed="0.000701"/>
</kw>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T00:51:19.711794" level="INFO">Item found from container 0 times.</msg>
<msg time="2026-04-08T00:51:19.711913" level="FAIL">'9a5df812-eb49-4477-a37e-2d464c02791d\n    Bridge s3\n        Controller "tcp:10.30.171.110:6633"\n        Controller "tcp:10.30.170.48:6633"\n        Controller "tcp:10.30.170.131:6633"\n        fail_mode: standalone\n        Port s3\n            Interface s3\n                type: internal\n        Port s3-eth2\n            Interface s3-eth2\n        Port s3-eth1\n            Interface s3-eth1\n        Port s3-eth3\n            Interface s3-eth3\n    Bridge s2\n        Controller "tcp:10.30.171.110:6633"\n        Controller "tcp:10.30.170.131:6633"\n        Controller "tcp:10.30.170.48:6633"\n        fail_mode: standalone\n        Port s2-eth1\n            Interface s2-eth1\n        Port s2\n            Interface s2\n                type: internal\n        Port s2-eth3\n            Interface s2-eth3\n        Port s2-eth2\n            Interface s2-eth2\n    Bridge s1\n        Controller "tcp:10.30.170.131:6633"\n        Controller "tcp:10.30.170.48:6633"\n        Controller "tcp:10.30.171.110:6633"\n        fail_mode: standalone\n        Port s1\n            Interface s1\n                type: internal\n        Port s1-eth1\n            Interface s1-eth1\n        Port s1-eth2\n            Interface s1-eth2\n    ovs_version: "2.17.11"' contains 'is_connected' 0 times, not 9 times.</msg>
<arg>${output}</arg>
<arg>is_connected</arg>
<arg>${of_connections}</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="FAIL" start="2026-04-08T00:51:19.711114" elapsed="0.000884">'9a5df812-eb49-4477-a37e-2d464c02791d\n    Bridge s3\n        Controller "tcp:10.30.171.110:6633"\n        Controller "tcp:10.30.170.48:6633"\n        Controller "tcp:10.30.170.131:6633"\n        fail_mode: standalone\n        Port s3\n            Interface s3\n                type: internal\n        Port s3-eth2\n            Interface s3-eth2\n        Port s3-eth1\n            Interface s3-eth1\n        Port s3-eth3\n            Interface s3-eth3\n    Bridge s2\n        Controller "tcp:10.30.171.110:6633"\n        Controller "tcp:10.30.170.131:6633"\n        Controller "tcp:10.30.170.48:6633"\n        fail_mode: standalone\n        Port s2-eth1\n            Interface s2-eth1\n        Port s2\n            Interface s2\n                type: internal\n        Port s2-eth3\n            Interface s2-eth3\n        Port s2-eth2\n            Interface s2-eth2\n    Bridge s1\n        Controller "tcp:10.30.170.131:6633"\n        Controller "tcp:10.30.170.48:6633"\n        Controller "tcp:10.30.171.110:6633"\n        fail_mode: standalone\n        Port s1\n            Interface s1\n                type: internal\n        Port s1-eth1\n            Interface s1-eth1\n        Port s1-eth2\n            Interface s1-eth2\n    ovs_version: "2.17.11"' contains 'is_connected' 0 times, not 9 times.</status>
</kw>
<arg>${TOOLS_SYSTEM_IP}</arg>
<arg>9</arg>
<doc>Check OVS instance with IP ${tools_system} has ${of_connections} OpenFlow connections.</doc>
<status status="FAIL" start="2026-04-08T00:51:19.314051" elapsed="0.398072">'9a5df812-eb49-4477-a37e-2d464c02791d\n    Bridge s3\n        Controller "tcp:10.30.171.110:6633"\n        Controller "tcp:10.30.170.48:6633"\n        Controller "tcp:10.30.170.131:6633"\n        fail_mode: standalone\n        Port s3\n            Interface s3\n                type: internal\n        Port s3-eth2\n            Interface s3-eth2\n        Port s3-eth1\n            Interface s3-eth1\n        Port s3-eth3\n            Interface s3-eth3\n    Bridge s2\n        Controller "tcp:10.30.171.110:6633"\n        Controller "tcp:10.30.170.131:6633"\n        Controller "tcp:10.30.170.48:6633"\n        fail_mode: standalone\n        Port s2-eth1\n            Interface s2-eth1\n        Port s2\n            Interface s2\n                type: internal\n        Port s2-eth3\n            Interface s2-eth3\n        Port s2-eth2\n            Interface s2-eth2\n    Bridge s1\n        Controller "tcp:10.30.170.131:6633"\n        Controller "tcp:10.30.170.48:6633"\n        Controller "tcp:10.30.171.110:6633"\n        fail_mode: standalone\n        Port s1\n            Interface s1\n                type: internal\n        Port s1-eth1\n            Interface s1-eth1\n        Port s1-eth2\n            Interface s1-eth2\n    ovs_version: "2.17.11"' contains 'is_connected' 0 times, not 9 times.</status>
</kw>
<kw name="Check OVS OpenFlow Connections" owner="OVSDB">
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:20.732504" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:20.732183" elapsed="0.000392"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:20.732144" elapsed="0.000457"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:51:20.732916" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T00:51:20.732750" elapsed="0.000308"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:20.733616" level="INFO">Attempting to execute command "sudo ovs-vsctl show" on remote system "10.30.170.192" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:20.733226" elapsed="0.000438"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:51:20.734206" level="INFO">${conn_id} = 63</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:51:20.733821" elapsed="0.000421"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T00:51:20.735137" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T00:51:20.735230" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T00:51:20.734856" elapsed="0.000398"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:51:20.735411" elapsed="0.000325"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T00:51:20.736612" level="INFO">Logging into '10.30.170.192:22' as 'jenkins'.</msg>
<msg time="2026-04-08T00:51:21.066439" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 00:51:05 UTC 2026

  System load:  0.01               Processes:             111
  Usage of /:   19.5% of 38.58GB   Users logged in:       0
  Memory usage: 5%                 IPv4 address for ens3: 10.30.170.192
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 00:51:19 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-1-mininet-ovs-217-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T00:51:20.736293" elapsed="0.330395"/>
</kw>
<msg time="2026-04-08T00:51:21.066844" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:51:20.735904" elapsed="0.331090"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T00:51:20.734458" elapsed="0.332780"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T00:51:21.068188" level="INFO">Executing command 'sudo ovs-vsctl show'.</msg>
<msg time="2026-04-08T00:51:21.121664" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-08T00:51:21.121946" level="INFO">${stdout} = 9a5df812-eb49-4477-a37e-2d464c02791d
    Bridge s3
        Controller "tcp:10.30.171.110:6633"
        Controller "tcp:10.30.170.48:6633"
        Controller "tcp:10.30.170.131:6633"
        fail_mode:...</msg>
<msg time="2026-04-08T00:51:21.122086" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T00:51:21.067703" elapsed="0.054442"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:51:21.122699" elapsed="0.000959"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:21.124800" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:21.124103" elapsed="0.000796"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:51:21.125423" elapsed="0.000039"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:51:21.125082" elapsed="0.000457"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:21.125030" elapsed="0.000563"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T00:51:21.125966" elapsed="0.000102"/>
</return>
<status status="PASS" start="2026-04-08T00:51:21.125719" elapsed="0.000469"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:21.125684" elapsed="0.000566"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:51:21.126331" elapsed="0.000034"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:51:21.131837" elapsed="0.000356"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:51:21.132359" elapsed="0.000163"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:51:21.132738" elapsed="0.000095"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:51:21.127069" elapsed="0.005815"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T00:51:20.731626" elapsed="0.401346"/>
</kw>
<msg time="2026-04-08T00:51:21.133032" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:51:20.730960" elapsed="0.402121"/>
</kw>
<msg time="2026-04-08T00:51:21.133208" level="INFO">${output} = 9a5df812-eb49-4477-a37e-2d464c02791d
    Bridge s3
        Controller "tcp:10.30.171.110:6633"
        Controller "tcp:10.30.170.48:6633"
        Controller "tcp:10.30.170.131:6633"
        fail_mode:...</msg>
<var>${output}</var>
<arg>${tools_system}</arg>
<arg>sudo ovs-vsctl show</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-08T00:51:20.730206" elapsed="0.403029"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:21.133636" level="INFO">9a5df812-eb49-4477-a37e-2d464c02791d
    Bridge s3
        Controller "tcp:10.30.171.110:6633"
        Controller "tcp:10.30.170.48:6633"
        Controller "tcp:10.30.170.131:6633"
        fail_mode: standalone
        Port s3
            Interface s3
                type: internal
        Port s3-eth2
            Interface s3-eth2
        Port s3-eth1
            Interface s3-eth1
        Port s3-eth3
            Interface s3-eth3
    Bridge s2
        Controller "tcp:10.30.171.110:6633"
        Controller "tcp:10.30.170.131:6633"
        Controller "tcp:10.30.170.48:6633"
        fail_mode: standalone
        Port s2-eth1
            Interface s2-eth1
        Port s2
            Interface s2
                type: internal
        Port s2-eth3
            Interface s2-eth3
        Port s2-eth2
            Interface s2-eth2
    Bridge s1
        Controller "tcp:10.30.170.131:6633"
        Controller "tcp:10.30.170.48:6633"
        Controller "tcp:10.30.171.110:6633"
        fail_mode: standalone
        Port s1
            Interface s1
                type: internal
        Port s1-eth1
            Interface s1-eth1
        Port s1-eth2
            Interface s1-eth2
    ovs_version: "2.17.11"</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:21.133391" elapsed="0.000297"/>
</kw>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T00:51:21.134216" level="INFO">Item found from container 0 times.</msg>
<msg time="2026-04-08T00:51:21.134336" level="FAIL">'9a5df812-eb49-4477-a37e-2d464c02791d\n    Bridge s3\n        Controller "tcp:10.30.171.110:6633"\n        Controller "tcp:10.30.170.48:6633"\n        Controller "tcp:10.30.170.131:6633"\n        fail_mode: standalone\n        Port s3\n            Interface s3\n                type: internal\n        Port s3-eth2\n            Interface s3-eth2\n        Port s3-eth1\n            Interface s3-eth1\n        Port s3-eth3\n            Interface s3-eth3\n    Bridge s2\n        Controller "tcp:10.30.171.110:6633"\n        Controller "tcp:10.30.170.131:6633"\n        Controller "tcp:10.30.170.48:6633"\n        fail_mode: standalone\n        Port s2-eth1\n            Interface s2-eth1\n        Port s2\n            Interface s2\n                type: internal\n        Port s2-eth3\n            Interface s2-eth3\n        Port s2-eth2\n            Interface s2-eth2\n    Bridge s1\n        Controller "tcp:10.30.170.131:6633"\n        Controller "tcp:10.30.170.48:6633"\n        Controller "tcp:10.30.171.110:6633"\n        fail_mode: standalone\n        Port s1\n            Interface s1\n                type: internal\n        Port s1-eth1\n            Interface s1-eth1\n        Port s1-eth2\n            Interface s1-eth2\n    ovs_version: "2.17.11"' contains 'is_connected' 0 times, not 9 times.</msg>
<arg>${output}</arg>
<arg>is_connected</arg>
<arg>${of_connections}</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="FAIL" start="2026-04-08T00:51:21.133837" elapsed="0.000587">'9a5df812-eb49-4477-a37e-2d464c02791d\n    Bridge s3\n        Controller "tcp:10.30.171.110:6633"\n        Controller "tcp:10.30.170.48:6633"\n        Controller "tcp:10.30.170.131:6633"\n        fail_mode: standalone\n        Port s3\n            Interface s3\n                type: internal\n        Port s3-eth2\n            Interface s3-eth2\n        Port s3-eth1\n            Interface s3-eth1\n        Port s3-eth3\n            Interface s3-eth3\n    Bridge s2\n        Controller "tcp:10.30.171.110:6633"\n        Controller "tcp:10.30.170.131:6633"\n        Controller "tcp:10.30.170.48:6633"\n        fail_mode: standalone\n        Port s2-eth1\n            Interface s2-eth1\n        Port s2\n            Interface s2\n                type: internal\n        Port s2-eth3\n            Interface s2-eth3\n        Port s2-eth2\n            Interface s2-eth2\n    Bridge s1\n        Controller "tcp:10.30.170.131:6633"\n        Controller "tcp:10.30.170.48:6633"\n        Controller "tcp:10.30.171.110:6633"\n        fail_mode: standalone\n        Port s1\n            Interface s1\n                type: internal\n        Port s1-eth1\n            Interface s1-eth1\n        Port s1-eth2\n            Interface s1-eth2\n    ovs_version: "2.17.11"' contains 'is_connected' 0 times, not 9 times.</status>
</kw>
<arg>${TOOLS_SYSTEM_IP}</arg>
<arg>9</arg>
<doc>Check OVS instance with IP ${tools_system} has ${of_connections} OpenFlow connections.</doc>
<status status="FAIL" start="2026-04-08T00:51:20.729516" elapsed="0.405034">'9a5df812-eb49-4477-a37e-2d464c02791d\n    Bridge s3\n        Controller "tcp:10.30.171.110:6633"\n        Controller "tcp:10.30.170.48:6633"\n        Controller "tcp:10.30.170.131:6633"\n        fail_mode: standalone\n        Port s3\n            Interface s3\n                type: internal\n        Port s3-eth2\n            Interface s3-eth2\n        Port s3-eth1\n            Interface s3-eth1\n        Port s3-eth3\n            Interface s3-eth3\n    Bridge s2\n        Controller "tcp:10.30.171.110:6633"\n        Controller "tcp:10.30.170.131:6633"\n        Controller "tcp:10.30.170.48:6633"\n        fail_mode: standalone\n        Port s2-eth1\n            Interface s2-eth1\n        Port s2\n            Interface s2\n                type: internal\n        Port s2-eth3\n            Interface s2-eth3\n        Port s2-eth2\n            Interface s2-eth2\n    Bridge s1\n        Controller "tcp:10.30.170.131:6633"\n        Controller "tcp:10.30.170.48:6633"\n        Controller "tcp:10.30.171.110:6633"\n        fail_mode: standalone\n        Port s1\n            Interface s1\n                type: internal\n        Port s1-eth1\n            Interface s1-eth1\n        Port s1-eth2\n            Interface s1-eth2\n    ovs_version: "2.17.11"' contains 'is_connected' 0 times, not 9 times.</status>
</kw>
<kw name="Check OVS OpenFlow Connections" owner="OVSDB">
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:22.152147" elapsed="0.000039"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:22.151831" elapsed="0.000404"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:22.151807" elapsed="0.000454"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:51:22.152579" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T00:51:22.152411" elapsed="0.000315"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:22.153281" level="INFO">Attempting to execute command "sudo ovs-vsctl show" on remote system "10.30.170.192" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:22.152877" elapsed="0.000451"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:51:22.153870" level="INFO">${conn_id} = 65</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:51:22.153496" elapsed="0.000401"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T00:51:22.154795" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T00:51:22.154872" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T00:51:22.154519" elapsed="0.000377"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:51:22.155055" elapsed="0.000339"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T00:51:22.156439" level="INFO">Logging into '10.30.170.192:22' as 'jenkins'.</msg>
<msg time="2026-04-08T00:51:22.489181" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 00:51:05 UTC 2026

  System load:  0.01               Processes:             111
  Usage of /:   19.5% of 38.58GB   Users logged in:       0
  Memory usage: 5%                 IPv4 address for ens3: 10.30.170.192
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 00:51:20 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-1-mininet-ovs-217-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T00:51:22.155922" elapsed="0.333446"/>
</kw>
<msg time="2026-04-08T00:51:22.489456" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:51:22.155563" elapsed="0.333977"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T00:51:22.154111" elapsed="0.335543"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T00:51:22.490150" level="INFO">Executing command 'sudo ovs-vsctl show'.</msg>
<msg time="2026-04-08T00:51:22.543207" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-08T00:51:22.543496" level="INFO">${stdout} = 9a5df812-eb49-4477-a37e-2d464c02791d
    Bridge s3
        Controller "tcp:10.30.171.110:6633"
        Controller "tcp:10.30.170.48:6633"
        Controller "tcp:10.30.170.131:6633"
        fail_mode:...</msg>
<msg time="2026-04-08T00:51:22.543608" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T00:51:22.489902" elapsed="0.053763"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:51:22.544087" elapsed="0.000522"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:22.545786" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:22.545050" elapsed="0.000841"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:51:22.546400" elapsed="0.000036"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:51:22.546068" elapsed="0.000438"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:22.546017" elapsed="0.000539"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T00:51:22.546909" elapsed="0.000065"/>
</return>
<status status="PASS" start="2026-04-08T00:51:22.546673" elapsed="0.000372"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:22.546641" elapsed="0.000457"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:51:22.547204" elapsed="0.000033"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:51:22.553069" elapsed="0.000786"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:51:22.554024" elapsed="0.000176"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:51:22.554416" elapsed="0.000098"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:51:22.547900" elapsed="0.006666"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T00:51:22.151291" elapsed="0.403364"/>
</kw>
<msg time="2026-04-08T00:51:22.554717" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:51:22.150641" elapsed="0.404128"/>
</kw>
<msg time="2026-04-08T00:51:22.554882" level="INFO">${output} = 9a5df812-eb49-4477-a37e-2d464c02791d
    Bridge s3
        Controller "tcp:10.30.171.110:6633"
        Controller "tcp:10.30.170.48:6633"
        Controller "tcp:10.30.170.131:6633"
        fail_mode:...</msg>
<var>${output}</var>
<arg>${tools_system}</arg>
<arg>sudo ovs-vsctl show</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-08T00:51:22.150108" elapsed="0.404801"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:22.555329" level="INFO">9a5df812-eb49-4477-a37e-2d464c02791d
    Bridge s3
        Controller "tcp:10.30.171.110:6633"
        Controller "tcp:10.30.170.48:6633"
        Controller "tcp:10.30.170.131:6633"
        fail_mode: standalone
        Port s3
            Interface s3
                type: internal
        Port s3-eth2
            Interface s3-eth2
        Port s3-eth1
            Interface s3-eth1
        Port s3-eth3
            Interface s3-eth3
    Bridge s2
        Controller "tcp:10.30.171.110:6633"
        Controller "tcp:10.30.170.131:6633"
        Controller "tcp:10.30.170.48:6633"
        fail_mode: standalone
        Port s2-eth1
            Interface s2-eth1
        Port s2
            Interface s2
                type: internal
        Port s2-eth3
            Interface s2-eth3
        Port s2-eth2
            Interface s2-eth2
    Bridge s1
        Controller "tcp:10.30.170.131:6633"
        Controller "tcp:10.30.170.48:6633"
        Controller "tcp:10.30.171.110:6633"
        fail_mode: standalone
        Port s1
            Interface s1
                type: internal
        Port s1-eth1
            Interface s1-eth1
        Port s1-eth2
            Interface s1-eth2
    ovs_version: "2.17.11"</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:22.555064" elapsed="0.000317"/>
</kw>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T00:51:22.555900" level="INFO">Item found from container 0 times.</msg>
<msg time="2026-04-08T00:51:22.556047" level="FAIL">'9a5df812-eb49-4477-a37e-2d464c02791d\n    Bridge s3\n        Controller "tcp:10.30.171.110:6633"\n        Controller "tcp:10.30.170.48:6633"\n        Controller "tcp:10.30.170.131:6633"\n        fail_mode: standalone\n        Port s3\n            Interface s3\n                type: internal\n        Port s3-eth2\n            Interface s3-eth2\n        Port s3-eth1\n            Interface s3-eth1\n        Port s3-eth3\n            Interface s3-eth3\n    Bridge s2\n        Controller "tcp:10.30.171.110:6633"\n        Controller "tcp:10.30.170.131:6633"\n        Controller "tcp:10.30.170.48:6633"\n        fail_mode: standalone\n        Port s2-eth1\n            Interface s2-eth1\n        Port s2\n            Interface s2\n                type: internal\n        Port s2-eth3\n            Interface s2-eth3\n        Port s2-eth2\n            Interface s2-eth2\n    Bridge s1\n        Controller "tcp:10.30.170.131:6633"\n        Controller "tcp:10.30.170.48:6633"\n        Controller "tcp:10.30.171.110:6633"\n        fail_mode: standalone\n        Port s1\n            Interface s1\n                type: internal\n        Port s1-eth1\n            Interface s1-eth1\n        Port s1-eth2\n            Interface s1-eth2\n    ovs_version: "2.17.11"' contains 'is_connected' 0 times, not 9 times.</msg>
<arg>${output}</arg>
<arg>is_connected</arg>
<arg>${of_connections}</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="FAIL" start="2026-04-08T00:51:22.555529" elapsed="0.000606">'9a5df812-eb49-4477-a37e-2d464c02791d\n    Bridge s3\n        Controller "tcp:10.30.171.110:6633"\n        Controller "tcp:10.30.170.48:6633"\n        Controller "tcp:10.30.170.131:6633"\n        fail_mode: standalone\n        Port s3\n            Interface s3\n                type: internal\n        Port s3-eth2\n            Interface s3-eth2\n        Port s3-eth1\n            Interface s3-eth1\n        Port s3-eth3\n            Interface s3-eth3\n    Bridge s2\n        Controller "tcp:10.30.171.110:6633"\n        Controller "tcp:10.30.170.131:6633"\n        Controller "tcp:10.30.170.48:6633"\n        fail_mode: standalone\n        Port s2-eth1\n            Interface s2-eth1\n        Port s2\n            Interface s2\n                type: internal\n        Port s2-eth3\n            Interface s2-eth3\n        Port s2-eth2\n            Interface s2-eth2\n    Bridge s1\n        Controller "tcp:10.30.170.131:6633"\n        Controller "tcp:10.30.170.48:6633"\n        Controller "tcp:10.30.171.110:6633"\n        fail_mode: standalone\n        Port s1\n            Interface s1\n                type: internal\n        Port s1-eth1\n            Interface s1-eth1\n        Port s1-eth2\n            Interface s1-eth2\n    ovs_version: "2.17.11"' contains 'is_connected' 0 times, not 9 times.</status>
</kw>
<arg>${TOOLS_SYSTEM_IP}</arg>
<arg>9</arg>
<doc>Check OVS instance with IP ${tools_system} has ${of_connections} OpenFlow connections.</doc>
<status status="FAIL" start="2026-04-08T00:51:22.149600" elapsed="0.406680">'9a5df812-eb49-4477-a37e-2d464c02791d\n    Bridge s3\n        Controller "tcp:10.30.171.110:6633"\n        Controller "tcp:10.30.170.48:6633"\n        Controller "tcp:10.30.170.131:6633"\n        fail_mode: standalone\n        Port s3\n            Interface s3\n                type: internal\n        Port s3-eth2\n            Interface s3-eth2\n        Port s3-eth1\n            Interface s3-eth1\n        Port s3-eth3\n            Interface s3-eth3\n    Bridge s2\n        Controller "tcp:10.30.171.110:6633"\n        Controller "tcp:10.30.170.131:6633"\n        Controller "tcp:10.30.170.48:6633"\n        fail_mode: standalone\n        Port s2-eth1\n            Interface s2-eth1\n        Port s2\n            Interface s2\n                type: internal\n        Port s2-eth3\n            Interface s2-eth3\n        Port s2-eth2\n            Interface s2-eth2\n    Bridge s1\n        Controller "tcp:10.30.170.131:6633"\n        Controller "tcp:10.30.170.48:6633"\n        Controller "tcp:10.30.171.110:6633"\n        fail_mode: standalone\n        Port s1\n            Interface s1\n                type: internal\n        Port s1-eth1\n            Interface s1-eth1\n        Port s1-eth2\n            Interface s1-eth2\n    ovs_version: "2.17.11"' contains 'is_connected' 0 times, not 9 times.</status>
</kw>
<kw name="Check OVS OpenFlow Connections" owner="OVSDB">
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:23.573235" elapsed="0.000033"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:23.572791" elapsed="0.000536"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:23.572724" elapsed="0.000638"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:51:23.574063" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T00:51:23.573570" elapsed="0.000660"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:23.574776" level="INFO">Attempting to execute command "sudo ovs-vsctl show" on remote system "10.30.170.192" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:23.574385" elapsed="0.000440"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:51:23.575366" level="INFO">${conn_id} = 67</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:51:23.574980" elapsed="0.000412"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T00:51:23.576288" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T00:51:23.576365" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T00:51:23.575997" elapsed="0.000393"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:51:23.576547" elapsed="0.000333"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T00:51:23.577735" level="INFO">Logging into '10.30.170.192:22' as 'jenkins'.</msg>
<msg time="2026-04-08T00:51:23.902611" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 00:51:05 UTC 2026

  System load:  0.01               Processes:             111
  Usage of /:   19.5% of 38.58GB   Users logged in:       0
  Memory usage: 5%                 IPv4 address for ens3: 10.30.170.192
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 00:51:22 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-1-mininet-ovs-217-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T00:51:23.577418" elapsed="0.325348"/>
</kw>
<msg time="2026-04-08T00:51:23.902850" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:51:23.577047" elapsed="0.325885"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T00:51:23.575606" elapsed="0.327441"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T00:51:23.903542" level="INFO">Executing command 'sudo ovs-vsctl show'.</msg>
<msg time="2026-04-08T00:51:23.925979" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-08T00:51:23.926289" level="INFO">${stdout} = 9a5df812-eb49-4477-a37e-2d464c02791d
    Bridge s3
        Controller "tcp:10.30.171.110:6633"
            is_connected: true
        Controller "tcp:10.30.170.48:6633"
            is_connected: true
...</msg>
<msg time="2026-04-08T00:51:23.926395" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T00:51:23.903302" elapsed="0.023145"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:51:23.926849" elapsed="0.000496"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:23.928424" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:23.927766" elapsed="0.000752"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:51:23.929044" elapsed="0.000037"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:51:23.928725" elapsed="0.000458"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:23.928669" elapsed="0.000573"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T00:51:23.929618" elapsed="0.000066"/>
</return>
<status status="PASS" start="2026-04-08T00:51:23.929368" elapsed="0.000392"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:23.929333" elapsed="0.000484"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:51:23.929895" elapsed="0.000033"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:51:23.936769" elapsed="0.000824"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:51:23.937910" elapsed="0.000166"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:51:23.938444" elapsed="0.000107"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:51:23.930661" elapsed="0.007947"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T00:51:23.571988" elapsed="0.366713"/>
</kw>
<msg time="2026-04-08T00:51:23.938765" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:51:23.571130" elapsed="0.367686"/>
</kw>
<msg time="2026-04-08T00:51:23.938929" level="INFO">${output} = 9a5df812-eb49-4477-a37e-2d464c02791d
    Bridge s3
        Controller "tcp:10.30.171.110:6633"
            is_connected: true
        Controller "tcp:10.30.170.48:6633"
            is_connected: true
...</msg>
<var>${output}</var>
<arg>${tools_system}</arg>
<arg>sudo ovs-vsctl show</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-08T00:51:23.570416" elapsed="0.368539"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:23.939397" level="INFO">9a5df812-eb49-4477-a37e-2d464c02791d
    Bridge s3
        Controller "tcp:10.30.171.110:6633"
            is_connected: true
        Controller "tcp:10.30.170.48:6633"
            is_connected: true
        Controller "tcp:10.30.170.131:6633"
            is_connected: true
        fail_mode: standalone
        Port s3
            Interface s3
                type: internal
        Port s3-eth2
            Interface s3-eth2
        Port s3-eth1
            Interface s3-eth1
        Port s3-eth3
            Interface s3-eth3
    Bridge s2
        Controller "tcp:10.30.171.110:6633"
            is_connected: true
        Controller "tcp:10.30.170.131:6633"
            is_connected: true
        Controller "tcp:10.30.170.48:6633"
            is_connected: true
        fail_mode: standalone
        Port s2-eth1
            Interface s2-eth1
        Port s2
            Interface s2
                type: internal
        Port s2-eth3
            Interface s2-eth3
        Port s2-eth2
            Interface s2-eth2
    Bridge s1
        Controller "tcp:10.30.170.131:6633"
            is_connected: true
        Controller "tcp:10.30.170.48:6633"
            is_connected: true
        Controller "tcp:10.30.171.110:6633"
            is_connected: true
        fail_mode: standalone
        Port s1
            Interface s1
                type: internal
        Port s1-eth1
            Interface s1-eth1
        Port s1-eth2
            Interface s1-eth2
    ovs_version: "2.17.11"</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:23.939113" elapsed="0.000339"/>
</kw>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T00:51:23.939951" level="INFO">Item found from container 9 times.</msg>
<arg>${output}</arg>
<arg>is_connected</arg>
<arg>${of_connections}</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="PASS" start="2026-04-08T00:51:23.939602" elapsed="0.000422"/>
</kw>
<arg>${TOOLS_SYSTEM_IP}</arg>
<arg>9</arg>
<doc>Check OVS instance with IP ${tools_system} has ${of_connections} OpenFlow connections.</doc>
<status status="PASS" start="2026-04-08T00:51:23.569746" elapsed="0.370342"/>
</kw>
<arg>10s</arg>
<arg>1s</arg>
<arg>OVSDB.Check OVS OpenFlow Connections</arg>
<arg>${TOOLS_SYSTEM_IP}</arg>
<arg>9</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-08T00:51:19.302762" elapsed="4.637377"/>
</kw>
<doc>Start mininet tree,2 with connection to all cluster instances.</doc>
<status status="PASS" start="2026-04-08T00:51:15.601009" elapsed="8.339277"/>
</test>
<test id="s1-s2-t3" name="Check Entity Owner Status And Find Owner and Successor Before Stop" line="29">
<kw name="Get OpenFlow Entity Owner Status For One Device" owner="ClusterOpenFlow">
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:51:23.976085" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:51:23.975640" elapsed="0.000476"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:51:23.976629" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:51:23.976301" elapsed="0.000353"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:51:23.976702" elapsed="0.000039"/>
</return>
<msg time="2026-04-08T00:51:23.976869" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:51:23.975246" elapsed="0.001648"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T00:51:23.981458" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T00:51:23.981269" elapsed="0.000215"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:51:23.981632" elapsed="0.000191"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:51:23.982196" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:51:23.981974" elapsed="0.000248"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:23.982656" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:23.982406" elapsed="0.000291"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:51:23.982909" elapsed="0.000182"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:51:23.983465" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:51:23.983258" elapsed="0.000232"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:23.983898" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:23.983655" elapsed="0.000283"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:23.984658" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:23.984089" elapsed="0.000595"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:23.985092" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:23.984853" elapsed="0.000283"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:23.985587" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:23.985303" elapsed="0.000309"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:51:23.991877" elapsed="0.000212"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:51:24.000812" elapsed="0.000217"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:51:24.001582" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:51:24.001205" elapsed="0.000405"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:51:24.002788" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:51:24.002235" elapsed="0.000594"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:51:24.002964" elapsed="0.000034"/>
</return>
<msg time="2026-04-08T00:51:24.003123" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:51:24.001800" elapsed="0.001349"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:51:24.003780" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:51:24.003330" elapsed="0.000478"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:51:24.004420" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:51:24.003971" elapsed="0.000476"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:51:24.004988" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:51:24.019394" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:51:24.004643" elapsed="0.018914">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:24.023989" elapsed="0.000055"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:24.024423" elapsed="0.000051"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:24.024854" elapsed="0.000038"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:24.025106" elapsed="0.000030"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:24.025396" elapsed="0.000032"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:24.025637" elapsed="0.000030"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:24.026032" elapsed="0.000031"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:24.026419" elapsed="0.000032"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:24.026697" elapsed="0.000031"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:51:24.025846" elapsed="0.000968"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:51:24.025740" elapsed="0.001170"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:24.027123" elapsed="0.000031"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:51:24.027284" elapsed="0.000027"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:51:24.000296" elapsed="0.027162">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:51:24.027559" elapsed="0.000021"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T00:51:23.989695" elapsed="0.038002">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:24.027950" elapsed="0.000030"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:24.034059" elapsed="0.000040"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:24.034377" elapsed="0.000033"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T00:51:24.034475" elapsed="0.000024"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T00:51:23.980720" elapsed="0.053906">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:51:24.034787" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:51:24.034849" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:51:23.980123" elapsed="0.054758"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T00:51:24.035202" elapsed="0.000022"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:51:24.035008" elapsed="0.000257"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:24.034979" elapsed="0.000319"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:51:24.037097" elapsed="0.000232"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:51:24.037799" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:51:24.037483" elapsed="0.000343"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:51:24.038675" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:51:24.038397" elapsed="0.000306"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:51:24.038750" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:51:24.038901" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:51:24.038010" elapsed="0.000916"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:51:24.039487" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:51:24.039087" elapsed="0.000426"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:51:24.040019" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:51:24.039669" elapsed="0.000376"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:51:24.040490" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:51:24.050807" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:51:24.040223" elapsed="0.012769">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:24.053277" elapsed="0.000035"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:24.053517" elapsed="0.000029"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:24.053748" elapsed="0.000030"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:24.053976" elapsed="0.000028"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:24.054233" elapsed="0.000029"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:24.054462" elapsed="0.000027"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:24.054827" elapsed="0.000028"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:24.055061" elapsed="0.000028"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:24.055322" elapsed="0.000033"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:51:24.054650" elapsed="0.000753"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:51:24.054553" elapsed="0.000887"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:24.055634" elapsed="0.000028"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:51:24.055716" elapsed="0.000021"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:51:24.036389" elapsed="0.019477">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:51:24.056027" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:51:24.056087" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:51:24.035512" elapsed="0.020607"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T00:51:24.057034" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T00:51:24.056585" elapsed="0.000533">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T00:51:24.056266" elapsed="0.000959">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T00:51:24.056238" elapsed="0.001033">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T00:51:24.057336" elapsed="0.000021"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:51:23.979581" elapsed="0.077887">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:24.057711" elapsed="0.000029"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:24.057940" elapsed="0.000027"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T00:51:24.058023" elapsed="0.000021"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T00:51:23.977208" elapsed="0.080969">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:24.058464" elapsed="0.000029"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:24.058712" elapsed="0.000029"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:24.058946" elapsed="0.000028"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:24.059188" elapsed="0.000029"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:24.059422" elapsed="0.000028"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:24.059648" elapsed="0.000028"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T00:51:24.059732" elapsed="0.000020"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T00:51:23.974469" elapsed="0.085396">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:51:25.091100" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:51:25.090598" elapsed="0.000535"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:51:25.091630" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:51:25.091319" elapsed="0.000337"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:51:25.091704" elapsed="0.000042"/>
</return>
<msg time="2026-04-08T00:51:25.091878" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:51:25.090207" elapsed="0.001696"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T00:51:25.096533" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T00:51:25.096343" elapsed="0.000217"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:51:25.096710" elapsed="0.000189"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:51:25.097274" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:51:25.097051" elapsed="0.000249"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:25.097739" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:25.097486" elapsed="0.000295"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:51:25.097925" elapsed="0.000179"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:51:25.098477" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:51:25.098270" elapsed="0.000233"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:25.098911" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:25.098668" elapsed="0.000283"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:25.099458" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:25.099099" elapsed="0.000385"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:25.099883" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:25.099648" elapsed="0.000278"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:25.100400" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:25.100099" elapsed="0.000328"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:51:25.108266" elapsed="0.000287"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:51:25.117098" elapsed="0.000229"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:51:25.117865" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:51:25.117481" elapsed="0.000410"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:51:25.119026" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:51:25.118493" elapsed="0.000573"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:51:25.119217" elapsed="0.000033"/>
</return>
<msg time="2026-04-08T00:51:25.119375" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:51:25.118074" elapsed="0.001326"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:51:25.120038" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:51:25.119560" elapsed="0.000505"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:51:25.120666" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:51:25.120240" elapsed="0.000452"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:51:25.121201" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:51:25.132068" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:51:25.120859" elapsed="0.015550">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:25.136867" elapsed="0.000057"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:25.137321" elapsed="0.000053"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:25.137722" elapsed="0.000050"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:25.138096" elapsed="0.000046"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:25.138502" elapsed="0.000046"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:25.138864" elapsed="0.000045"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:25.139500" elapsed="0.000046"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:25.140047" elapsed="0.000048"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:25.140523" elapsed="0.000048"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:51:25.139208" elapsed="0.001495"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:51:25.139011" elapsed="0.001765"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:25.141022" elapsed="0.000020"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:51:25.141081" elapsed="0.000016"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:51:25.116598" elapsed="0.024617">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:51:25.141288" elapsed="0.000015"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T00:51:25.106036" elapsed="0.035351">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:25.141603" elapsed="0.000021"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:25.145796" elapsed="0.000027"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:25.145991" elapsed="0.000021"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T00:51:25.146057" elapsed="0.000016"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T00:51:25.095772" elapsed="0.050406">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:51:25.146295" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:51:25.146339" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:51:25.095213" elapsed="0.051149"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T00:51:25.146569" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:51:25.146452" elapsed="0.000159"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:25.146431" elapsed="0.000203"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:51:25.147955" elapsed="0.000230"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:51:25.148648" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:51:25.148340" elapsed="0.000334"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:51:25.149869" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:51:25.149217" elapsed="0.000680"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:51:25.149946" elapsed="0.000031"/>
</return>
<msg time="2026-04-08T00:51:25.150097" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:51:25.148859" elapsed="0.001263"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:51:25.150684" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:51:25.150307" elapsed="0.000403"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:51:25.151231" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:51:25.150867" elapsed="0.000390"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:51:25.151620" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:51:25.161235" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:51:25.151418" elapsed="0.012190">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:25.163863" elapsed="0.000031"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:25.164121" elapsed="0.000029"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:25.164371" elapsed="0.000028"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:25.164595" elapsed="0.000027"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:25.164826" elapsed="0.000027"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:25.165046" elapsed="0.000028"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:25.165479" elapsed="0.000028"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:25.165715" elapsed="0.000027"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:25.165936" elapsed="0.000027"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:51:25.165300" elapsed="0.000708"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:51:25.165205" elapsed="0.000839"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:25.166258" elapsed="0.000030"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:51:25.166342" elapsed="0.000022"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:51:25.147400" elapsed="0.019092">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:51:25.166648" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:51:25.166709" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:51:25.146783" elapsed="0.019958"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T00:51:25.167616" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T00:51:25.167152" elapsed="0.000550">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T00:51:25.166854" elapsed="0.000933">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T00:51:25.166829" elapsed="0.001000">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T00:51:25.167892" elapsed="0.000022"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:51:25.094649" elapsed="0.073413">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:25.168328" elapsed="0.000031"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:25.168558" elapsed="0.000028"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T00:51:25.168643" elapsed="0.000022"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T00:51:25.092242" elapsed="0.076537">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:25.169008" elapsed="0.000029"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:25.169275" elapsed="0.000029"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:25.169511" elapsed="0.000028"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:25.169732" elapsed="0.000027"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:25.169957" elapsed="0.000026"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:25.170198" elapsed="0.000028"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T00:51:25.170330" elapsed="0.000022"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T00:51:25.089413" elapsed="0.081055">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:51:26.202687" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:51:26.202199" elapsed="0.000521"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:51:26.203224" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:51:26.202892" elapsed="0.000358"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:51:26.203299" elapsed="0.000046"/>
</return>
<msg time="2026-04-08T00:51:26.203492" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:51:26.201798" elapsed="0.001720"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T00:51:26.208381" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T00:51:26.208189" elapsed="0.000219"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:51:26.208559" elapsed="0.000193"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:51:26.209108" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:51:26.208903" elapsed="0.000234"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:26.209596" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:26.209343" elapsed="0.000294"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:51:26.209781" elapsed="0.000181"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:51:26.210329" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:51:26.210110" elapsed="0.000245"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:26.210762" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:26.210520" elapsed="0.000282"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:26.211304" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:26.210950" elapsed="0.000379"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:26.211758" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:26.211520" elapsed="0.000283"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:26.212249" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:26.211951" elapsed="0.000324"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:51:26.218581" elapsed="0.000215"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:51:26.227239" elapsed="0.000246"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:51:26.228044" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:51:26.227648" elapsed="0.000423"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:51:26.229248" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:51:26.228691" elapsed="0.000598"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:51:26.229421" elapsed="0.000032"/>
</return>
<msg time="2026-04-08T00:51:26.229576" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:51:26.228293" elapsed="0.001308"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:51:26.230224" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:51:26.229765" elapsed="0.000548"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:51:26.230903" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:51:26.230475" elapsed="0.000455"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:51:26.231469" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:51:26.242577" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:51:26.231092" elapsed="0.014058">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:26.245441" elapsed="0.000032"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:26.245681" elapsed="0.000030"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:26.245910" elapsed="0.000029"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:26.246138" elapsed="0.000051"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:26.246402" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:26.246627" elapsed="0.000028"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:26.247007" elapsed="0.000028"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:26.247342" elapsed="0.000030"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:26.247651" elapsed="0.000030"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:51:26.246822" elapsed="0.000942"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:51:26.246722" elapsed="0.001082"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:26.248003" elapsed="0.000028"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:51:26.248086" elapsed="0.000021"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:51:26.226736" elapsed="0.021533">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:51:26.248369" elapsed="0.000021"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T00:51:26.216402" elapsed="0.032105">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:26.248750" elapsed="0.000029"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:26.254639" elapsed="0.000039"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:26.254917" elapsed="0.000029"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T00:51:26.255010" elapsed="0.000040"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T00:51:26.207636" elapsed="0.047886">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:51:26.255689" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:51:26.255751" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:51:26.207030" elapsed="0.048754"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T00:51:26.256078" elapsed="0.000019"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:51:26.255915" elapsed="0.000222"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:26.255885" elapsed="0.000311"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:51:26.258057" elapsed="0.000316"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:51:26.259013" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:51:26.258586" elapsed="0.000462"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:51:26.260146" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:51:26.259844" elapsed="0.000344"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:51:26.260250" elapsed="0.000032"/>
</return>
<msg time="2026-04-08T00:51:26.260401" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:51:26.259321" elapsed="0.001105"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:51:26.260962" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:51:26.260584" elapsed="0.000404"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:51:26.261521" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:51:26.261144" elapsed="0.000408"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:51:26.261927" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:51:26.269259" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:51:26.261717" elapsed="0.010233">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:26.272229" elapsed="0.000032"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:26.272469" elapsed="0.000027"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:26.272694" elapsed="0.000028"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:26.272923" elapsed="0.000027"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:26.273174" elapsed="0.000029"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:26.273406" elapsed="0.000028"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:26.273771" elapsed="0.000027"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:26.274003" elapsed="0.000028"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:26.274251" elapsed="0.000029"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:51:26.273595" elapsed="0.000732"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:51:26.273498" elapsed="0.000867"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:26.274557" elapsed="0.000028"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:51:26.274641" elapsed="0.000021"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:51:26.257289" elapsed="0.017499">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:51:26.274998" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:51:26.275059" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:51:26.256409" elapsed="0.018683"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T00:51:26.276000" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T00:51:26.275545" elapsed="0.000539">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T00:51:26.275229" elapsed="0.000961">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T00:51:26.275201" elapsed="0.001035">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T00:51:26.276301" elapsed="0.000022"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:51:26.206479" elapsed="0.069957">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:26.276681" elapsed="0.000029"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:26.276909" elapsed="0.000028"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T00:51:26.276994" elapsed="0.000021"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T00:51:26.203825" elapsed="0.073304">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:26.277389" elapsed="0.000029"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:26.277636" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:26.277868" elapsed="0.000027"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:26.278091" elapsed="0.000027"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:26.278341" elapsed="0.000028"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:26.278569" elapsed="0.000027"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T00:51:26.278653" elapsed="0.000020"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T00:51:26.200989" elapsed="0.077800">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:51:27.310871" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:51:27.310386" elapsed="0.000531"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:51:27.311594" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:51:27.311093" elapsed="0.000537"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:51:27.311690" elapsed="0.000044"/>
</return>
<msg time="2026-04-08T00:51:27.311870" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:51:27.309982" elapsed="0.001913"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T00:51:27.316535" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T00:51:27.316345" elapsed="0.000216"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:51:27.316711" elapsed="0.000192"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:51:27.317281" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:51:27.317055" elapsed="0.000252"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:27.317939" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:27.317498" elapsed="0.000484"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:51:27.318129" elapsed="0.000199"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:51:27.318685" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:51:27.318480" elapsed="0.000230"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:27.319137" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:27.318879" elapsed="0.000315"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:27.319686" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:27.319349" elapsed="0.000363"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:27.320109" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:27.319876" elapsed="0.000276"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:27.320601" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:27.320317" elapsed="0.000309"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:51:27.326943" elapsed="0.000228"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:51:27.335651" elapsed="0.000210"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:51:27.336416" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:51:27.336015" elapsed="0.000427"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:51:27.337588" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:51:27.337022" elapsed="0.000606"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:51:27.337760" elapsed="0.000033"/>
</return>
<msg time="2026-04-08T00:51:27.337917" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:51:27.336627" elapsed="0.001315"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:51:27.338560" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:51:27.338102" elapsed="0.000485"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:51:27.339226" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:51:27.338748" elapsed="0.000505"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:51:27.339751" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:51:27.354265" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:51:27.339415" elapsed="0.018550">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:27.358433" elapsed="0.000323"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:27.359245" elapsed="0.000062"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:27.359648" elapsed="0.000050"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:27.360025" elapsed="0.000046"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:27.360440" elapsed="0.000047"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:27.360806" elapsed="0.000046"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:27.361429" elapsed="0.000047"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:27.361939" elapsed="0.000047"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:27.362408" elapsed="0.000049"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:51:27.361110" elapsed="0.001487"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:51:27.360955" elapsed="0.001706"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:27.363029" elapsed="0.000047"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:51:27.363197" elapsed="0.000037"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:51:27.335149" elapsed="0.028309">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:51:27.363614" elapsed="0.000035"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T00:51:27.324727" elapsed="0.039117">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:27.364048" elapsed="0.000021"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:27.368388" elapsed="0.000027"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:27.368583" elapsed="0.000021"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T00:51:27.368648" elapsed="0.000015"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T00:51:27.315792" elapsed="0.052960">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:51:27.368863" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:51:27.368907" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:51:27.315225" elapsed="0.053705"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T00:51:27.369133" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:51:27.369020" elapsed="0.000170"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:27.368999" elapsed="0.000215"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:51:27.370575" elapsed="0.000210"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:51:27.371265" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:51:27.370947" elapsed="0.000344"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:51:27.372066" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:51:27.371804" elapsed="0.000288"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:51:27.372139" elapsed="0.000045"/>
</return>
<msg time="2026-04-08T00:51:27.372305" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:51:27.371472" elapsed="0.000858"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:51:27.372856" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:51:27.372487" elapsed="0.000395"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:51:27.373396" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:51:27.373037" elapsed="0.000385"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:51:27.373773" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:51:27.385544" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:51:27.373579" elapsed="0.015751">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:27.389741" elapsed="0.000050"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:27.390117" elapsed="0.000076"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:27.390523" elapsed="0.000045"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:27.390999" elapsed="0.000055"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:27.391440" elapsed="0.000046"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:27.391802" elapsed="0.000045"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:27.392399" elapsed="0.000046"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:27.392774" elapsed="0.000044"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:27.393123" elapsed="0.000071"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:51:27.392088" elapsed="0.001181"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:51:27.391943" elapsed="0.001383"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:27.393634" elapsed="0.000044"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:51:27.393762" elapsed="0.000034"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:51:27.370015" elapsed="0.023980">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:51:27.394276" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:51:27.394373" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:51:27.369363" elapsed="0.025062"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T00:51:27.395869" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T00:51:27.395131" elapsed="0.000812">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T00:51:27.394608" elapsed="0.001436">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T00:51:27.394567" elapsed="0.001509">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T00:51:27.396121" elapsed="0.000016"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:51:27.314627" elapsed="0.081608">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:27.396410" elapsed="0.000021"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:27.396573" elapsed="0.000020"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T00:51:27.396634" elapsed="0.000014"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T00:51:27.312209" elapsed="0.084521">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:27.396894" elapsed="0.000020"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:27.397067" elapsed="0.000020"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:27.397250" elapsed="0.000021"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:27.397414" elapsed="0.000019"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:27.397579" elapsed="0.000019"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:27.397739" elapsed="0.000020"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T00:51:27.397799" elapsed="0.000014"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T00:51:27.309148" elapsed="0.088747">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:51:28.429774" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:51:28.429257" elapsed="0.000551"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:51:28.430309" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:51:28.429979" elapsed="0.000357"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:51:28.430400" elapsed="0.000043"/>
</return>
<msg time="2026-04-08T00:51:28.430575" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:51:28.428848" elapsed="0.001752"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T00:51:28.435205" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T00:51:28.435002" elapsed="0.000231"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:51:28.435383" elapsed="0.000192"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:51:28.436016" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:51:28.435797" elapsed="0.000245"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:28.436500" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:28.436243" elapsed="0.000299"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:51:28.436689" elapsed="0.000179"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:51:28.437241" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:51:28.437020" elapsed="0.000247"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:28.437679" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:28.437436" elapsed="0.000284"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:28.438227" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:28.437870" elapsed="0.000383"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:28.438683" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:28.438444" elapsed="0.000283"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:28.439178" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:28.438880" elapsed="0.000327"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:51:28.445637" elapsed="0.000212"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:51:28.454354" elapsed="0.000230"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:51:28.455120" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:51:28.454739" elapsed="0.000407"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:51:28.456298" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:51:28.455748" elapsed="0.000591"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:51:28.456473" elapsed="0.000032"/>
</return>
<msg time="2026-04-08T00:51:28.456628" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:51:28.455355" elapsed="0.001298"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:51:28.457271" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:51:28.456812" elapsed="0.000486"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:51:28.457884" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:51:28.457456" elapsed="0.000454"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:51:28.458438" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:51:28.469052" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:51:28.458071" elapsed="0.013944">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:28.472457" elapsed="0.000053"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:28.472843" elapsed="0.000051"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:28.473273" elapsed="0.000052"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:28.473676" elapsed="0.000048"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:28.474070" elapsed="0.000045"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:28.474516" elapsed="0.000048"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:28.475111" elapsed="0.000044"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:28.475731" elapsed="0.000049"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:28.476203" elapsed="0.000050"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:51:28.474822" elapsed="0.001568"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:51:28.474669" elapsed="0.001785"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:28.476769" elapsed="0.000046"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:51:28.476906" elapsed="0.000034"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:51:28.453841" elapsed="0.023314">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:51:28.477346" elapsed="0.000035"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T00:51:28.443443" elapsed="0.034125">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:28.477954" elapsed="0.000047"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:28.482887" elapsed="0.000026"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:28.483080" elapsed="0.000021"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T00:51:28.483146" elapsed="0.000030"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T00:51:28.434467" elapsed="0.048800">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:51:28.483379" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:51:28.483422" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:51:28.433883" elapsed="0.049562"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T00:51:28.483650" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:51:28.483535" elapsed="0.000157"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:28.483514" elapsed="0.000200"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:51:28.485009" elapsed="0.000227"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:51:28.485693" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:51:28.485390" elapsed="0.000328"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:51:28.486530" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:51:28.486245" elapsed="0.000312"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:51:28.486606" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:51:28.486753" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:51:28.485896" elapsed="0.000882"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:51:28.487321" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:51:28.486937" elapsed="0.000411"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:51:28.487948" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:51:28.487541" elapsed="0.000433"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:51:28.488385" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:51:28.498376" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:51:28.488153" elapsed="0.013462">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:28.502022" elapsed="0.000051"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:28.502452" elapsed="0.000048"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:28.502823" elapsed="0.000045"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:28.503212" elapsed="0.000047"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:28.503594" elapsed="0.000044"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:28.503955" elapsed="0.000043"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:28.504558" elapsed="0.000045"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:28.504928" elapsed="0.000043"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:28.505307" elapsed="0.000046"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:51:28.504274" elapsed="0.001152"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:51:28.504092" elapsed="0.001393"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:28.505788" elapsed="0.000043"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:51:28.505914" elapsed="0.000033"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:51:28.484471" elapsed="0.021677">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:51:28.506470" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:51:28.506570" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:51:28.483863" elapsed="0.022758"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T00:51:28.507423" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T00:51:28.507090" elapsed="0.000394">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T00:51:28.506805" elapsed="0.000741">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T00:51:28.506764" elapsed="0.000812">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T00:51:28.507621" elapsed="0.000015"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:51:28.433337" elapsed="0.074379">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:28.507890" elapsed="0.000021"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:28.508054" elapsed="0.000020"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T00:51:28.508150" elapsed="0.000031"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T00:51:28.430904" elapsed="0.077363">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:28.508437" elapsed="0.000021"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:28.508615" elapsed="0.000019"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:28.508783" elapsed="0.000019"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:28.508942" elapsed="0.000019"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:28.509107" elapsed="0.000019"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:28.509283" elapsed="0.000020"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T00:51:28.509344" elapsed="0.000014"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T00:51:28.427996" elapsed="0.081443">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:51:29.540868" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:51:29.540397" elapsed="0.000503"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:51:29.541397" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:51:29.541068" elapsed="0.000357"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:51:29.541472" elapsed="0.000039"/>
</return>
<msg time="2026-04-08T00:51:29.541640" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:51:29.539994" elapsed="0.001672"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T00:51:29.546257" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T00:51:29.546053" elapsed="0.000231"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:51:29.546433" elapsed="0.000190"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:51:29.546984" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:51:29.546775" elapsed="0.000235"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:29.547466" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:29.547212" elapsed="0.000296"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:51:29.547654" elapsed="0.000180"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:51:29.548210" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:51:29.547989" elapsed="0.000247"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:29.548645" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:29.548402" elapsed="0.000283"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:29.549187" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:29.548833" elapsed="0.000382"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:29.549680" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:29.549442" elapsed="0.000281"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:29.550200" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:29.549898" elapsed="0.000329"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:51:29.556660" elapsed="0.000214"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:51:29.565388" elapsed="0.000213"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:51:29.566176" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:51:29.565756" elapsed="0.000448"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:51:29.567345" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:51:29.566789" elapsed="0.000599"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:51:29.567529" elapsed="0.000032"/>
</return>
<msg time="2026-04-08T00:51:29.567684" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:51:29.566394" elapsed="0.001315"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:51:29.568469" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:51:29.567868" elapsed="0.000629"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:51:29.569084" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:51:29.568655" elapsed="0.000456"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:51:29.569624" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:51:29.579749" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:51:29.569294" elapsed="0.014382">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:29.584093" elapsed="0.000052"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:29.584522" elapsed="0.000048"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:29.584893" elapsed="0.000046"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:29.585290" elapsed="0.000048"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:29.585674" elapsed="0.000046"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:29.586054" elapsed="0.000047"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:29.586690" elapsed="0.000047"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:29.587237" elapsed="0.000050"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:29.587679" elapsed="0.000047"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:51:29.586397" elapsed="0.001459"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:51:29.586242" elapsed="0.001680"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:29.588270" elapsed="0.000049"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:51:29.588406" elapsed="0.000035"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:51:29.564883" elapsed="0.023773">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:51:29.588902" elapsed="0.000044"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T00:51:29.554475" elapsed="0.034665">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:29.589567" elapsed="0.000047"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:29.596378" elapsed="0.000027"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:29.596574" elapsed="0.000022"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T00:51:29.596641" elapsed="0.000016"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T00:51:29.545503" elapsed="0.051244">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:51:29.596860" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:51:29.596905" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:51:29.544931" elapsed="0.051999"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T00:51:29.597133" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:51:29.597017" elapsed="0.000174"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:29.596997" elapsed="0.000217"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:51:29.598533" elapsed="0.000211"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:51:29.599222" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:51:29.598897" elapsed="0.000351"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:51:29.600040" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:51:29.599768" elapsed="0.000299"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:51:29.600114" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:51:29.600288" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:51:29.599432" elapsed="0.000882"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:51:29.600842" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:51:29.600473" elapsed="0.000396"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:51:29.601391" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:51:29.601026" elapsed="0.000392"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:51:29.601776" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:51:29.610828" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:51:29.601578" elapsed="0.010958">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:29.612721" elapsed="0.000024"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:29.612894" elapsed="0.000020"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:29.613099" elapsed="0.000020"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:29.613282" elapsed="0.000022"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:29.613453" elapsed="0.000020"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:29.613615" elapsed="0.000021"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:29.613904" elapsed="0.000022"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:29.614078" elapsed="0.000021"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:29.614256" elapsed="0.000030"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:51:29.613748" elapsed="0.000572"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:51:29.613679" elapsed="0.000668"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:29.614486" elapsed="0.000020"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:51:29.614545" elapsed="0.000016"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:51:29.597975" elapsed="0.016678">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:51:29.614766" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:51:29.614810" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:51:29.597366" elapsed="0.017468"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T00:51:29.615736" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T00:51:29.615295" elapsed="0.000524">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T00:51:29.614936" elapsed="0.000968">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T00:51:29.614908" elapsed="0.001038">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T00:51:29.616009" elapsed="0.000022"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:51:29.544384" elapsed="0.071761">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:29.616420" elapsed="0.000030"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:29.616651" elapsed="0.000028"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T00:51:29.616737" elapsed="0.000020"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T00:51:29.541979" elapsed="0.074893">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:29.617104" elapsed="0.000029"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:29.617375" elapsed="0.000029"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:29.617612" elapsed="0.000027"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:29.617899" elapsed="0.000034"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:29.618136" elapsed="0.000046"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:29.618387" elapsed="0.000028"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T00:51:29.618474" elapsed="0.000020"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T00:51:29.539256" elapsed="0.079355">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:51:30.652102" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:51:30.651651" elapsed="0.000483"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:51:30.652632" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:51:30.652318" elapsed="0.000340"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:51:30.652704" elapsed="0.000036"/>
</return>
<msg time="2026-04-08T00:51:30.652869" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:51:30.651270" elapsed="0.001624"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T00:51:30.657520" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T00:51:30.657297" elapsed="0.000250"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:51:30.657698" elapsed="0.000191"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:51:30.658268" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:51:30.658041" elapsed="0.000252"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:30.658732" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:30.658482" elapsed="0.000291"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:51:30.658919" elapsed="0.000181"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:51:30.659477" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:51:30.659270" elapsed="0.000233"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:30.659918" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:30.659671" elapsed="0.000289"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:30.660470" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:30.660111" elapsed="0.000385"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:30.660899" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:30.660664" elapsed="0.000279"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:30.661464" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:30.661137" elapsed="0.000353"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:51:30.668013" elapsed="0.000232"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:51:30.676950" elapsed="0.000231"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:51:30.677747" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:51:30.677353" elapsed="0.000421"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:51:30.678989" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:51:30.678441" elapsed="0.000590"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:51:30.679183" elapsed="0.000034"/>
</return>
<msg time="2026-04-08T00:51:30.679344" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:51:30.678017" elapsed="0.001353"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:51:30.679982" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:51:30.679531" elapsed="0.000478"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:51:30.680617" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:51:30.680185" elapsed="0.000459"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:51:30.681135" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:51:30.690793" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:51:30.680806" elapsed="0.013930">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:30.695154" elapsed="0.000085"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:30.695578" elapsed="0.000047"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:30.695950" elapsed="0.000045"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:30.696356" elapsed="0.000055"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:30.696750" elapsed="0.000045"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:30.697138" elapsed="0.000075"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:30.697790" elapsed="0.000046"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:30.698338" elapsed="0.000055"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:30.698779" elapsed="0.000046"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:51:30.697500" elapsed="0.001461"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:51:30.697337" elapsed="0.001687"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:30.699370" elapsed="0.000047"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:51:30.699507" elapsed="0.000034"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:51:30.676454" elapsed="0.023304">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:51:30.699914" elapsed="0.000035"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T00:51:30.665797" elapsed="0.034338">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:30.700562" elapsed="0.000047"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:30.705619" elapsed="0.000027"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:30.705853" elapsed="0.000022"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T00:51:30.705920" elapsed="0.000015"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T00:51:30.656745" elapsed="0.049278">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:51:30.706145" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:51:30.706207" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:51:30.656189" elapsed="0.050042"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T00:51:30.706450" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:51:30.706331" elapsed="0.000161"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:30.706310" elapsed="0.000205"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:51:30.707835" elapsed="0.000206"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:51:30.708513" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:51:30.708209" elapsed="0.000330"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:51:30.709535" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:51:30.709053" elapsed="0.000510"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:51:30.709612" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:51:30.709761" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:51:30.708719" elapsed="0.001067"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:51:30.710329" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:51:30.709945" elapsed="0.000410"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:51:30.710854" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:51:30.710512" elapsed="0.000368"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:51:30.711258" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:51:30.720375" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:51:30.711038" elapsed="0.011435">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:30.722915" elapsed="0.000054"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:30.723358" elapsed="0.000051"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:30.723753" elapsed="0.000047"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:30.724144" elapsed="0.000079"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:30.724588" elapsed="0.000048"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:30.724974" elapsed="0.000047"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:30.725688" elapsed="0.000050"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:30.726099" elapsed="0.000048"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:30.726612" elapsed="0.000051"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:51:30.725377" elapsed="0.001366"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:51:30.725127" elapsed="0.001679"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:30.727139" elapsed="0.000079"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:51:30.727316" elapsed="0.000037"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:51:30.707293" elapsed="0.020281">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:51:30.727844" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:51:30.727948" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:51:30.706666" elapsed="0.021338"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T00:51:30.729581" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T00:51:30.728747" elapsed="0.000979">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T00:51:30.728233" elapsed="0.001642">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T00:51:30.728187" elapsed="0.001774">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T00:51:30.730048" elapsed="0.000019"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:51:30.655630" elapsed="0.074548">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:30.730358" elapsed="0.000022"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:30.730526" elapsed="0.000020"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T00:51:30.730587" elapsed="0.000015"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T00:51:30.653204" elapsed="0.077482">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:30.730856" elapsed="0.000020"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:30.731034" elapsed="0.000020"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:30.731218" elapsed="0.000021"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:30.731381" elapsed="0.000020"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:30.731548" elapsed="0.000019"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:30.731730" elapsed="0.000026"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T00:51:30.731808" elapsed="0.000016"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T00:51:30.650520" elapsed="0.081390">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:51:31.765632" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:51:31.765145" elapsed="0.000520"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:51:31.766148" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:51:31.765833" elapsed="0.000357"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:51:31.766239" elapsed="0.000041"/>
</return>
<msg time="2026-04-08T00:51:31.766411" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:51:31.764732" elapsed="0.001705"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T00:51:31.771276" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T00:51:31.771073" elapsed="0.000229"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:51:31.771453" elapsed="0.000190"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:51:31.772002" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:51:31.771794" elapsed="0.000234"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:31.772484" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:31.772226" elapsed="0.000300"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:51:31.772672" elapsed="0.000196"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:51:31.773248" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:51:31.773025" elapsed="0.000250"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:31.773683" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:31.773441" elapsed="0.000284"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:31.774233" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:31.773875" elapsed="0.000384"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:31.774658" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:31.774423" elapsed="0.000280"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:31.775133" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:31.774851" elapsed="0.000322"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:51:31.781554" elapsed="0.000214"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:51:31.790504" elapsed="0.000212"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:51:31.791288" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:51:31.790869" elapsed="0.000445"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:51:31.792454" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:51:31.791889" elapsed="0.000607"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:51:31.792629" elapsed="0.000032"/>
</return>
<msg time="2026-04-08T00:51:31.792797" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:51:31.791498" elapsed="0.001326"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:51:31.793448" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:51:31.792993" elapsed="0.000482"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:51:31.794068" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:51:31.793633" elapsed="0.000462"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:51:31.794625" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:51:31.804839" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:51:31.794275" elapsed="0.014373">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:31.809098" elapsed="0.000053"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:31.809524" elapsed="0.000048"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:31.809894" elapsed="0.000047"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:31.810294" elapsed="0.000048"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:31.810681" elapsed="0.000045"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:31.811041" elapsed="0.000045"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:31.811670" elapsed="0.000045"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:31.812226" elapsed="0.000050"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:31.812664" elapsed="0.000047"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:51:31.811382" elapsed="0.001488"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:51:31.811223" elapsed="0.001712"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:31.813288" elapsed="0.000048"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:51:31.813424" elapsed="0.000034"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:51:31.789997" elapsed="0.023678">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:51:31.813829" elapsed="0.000034"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T00:51:31.779339" elapsed="0.034709">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:31.814465" elapsed="0.000047"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:31.820139" elapsed="0.000039"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:31.820345" elapsed="0.000021"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T00:51:31.820410" elapsed="0.000015"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T00:51:31.770531" elapsed="0.049983">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:51:31.820627" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:51:31.820670" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:51:31.769957" elapsed="0.050736"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T00:51:31.820949" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:51:31.820834" elapsed="0.000157"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:31.820812" elapsed="0.000202"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:51:31.822338" elapsed="0.000208"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:51:31.822998" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:51:31.822698" elapsed="0.000326"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:51:31.823821" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:51:31.823556" elapsed="0.000292"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:51:31.823895" elapsed="0.000031"/>
</return>
<msg time="2026-04-08T00:51:31.824044" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:51:31.823221" elapsed="0.000848"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:51:31.824609" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:51:31.824241" elapsed="0.000393"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:51:31.825152" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:51:31.824804" elapsed="0.000390"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:51:31.825548" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:51:31.835821" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:51:31.825353" elapsed="0.014207">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:31.840005" elapsed="0.000060"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:31.840451" elapsed="0.000049"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:31.840849" elapsed="0.000048"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:31.841281" elapsed="0.000051"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:31.841665" elapsed="0.000053"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:31.842043" elapsed="0.000045"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:31.842647" elapsed="0.000044"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:31.843020" elapsed="0.000044"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:31.843407" elapsed="0.000386"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:51:31.842366" elapsed="0.001509"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:51:31.842214" elapsed="0.001720"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:31.844288" elapsed="0.000049"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:51:31.844430" elapsed="0.000034"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:51:31.821783" elapsed="0.022887">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:51:31.844991" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:51:31.845093" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:51:31.821185" elapsed="0.023937"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T00:51:31.845812" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T00:51:31.845494" elapsed="0.000378">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T00:51:31.845276" elapsed="0.000658">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T00:51:31.845256" elapsed="0.000709">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T00:51:31.846011" elapsed="0.000015"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:51:31.769403" elapsed="0.076705">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:31.846300" elapsed="0.000022"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:31.846467" elapsed="0.000020"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T00:51:31.846528" elapsed="0.000015"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T00:51:31.766734" elapsed="0.079892">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:31.846851" elapsed="0.000024"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:31.847039" elapsed="0.000019"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:31.847222" elapsed="0.000021"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:31.847384" elapsed="0.000020"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:31.847549" elapsed="0.000019"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:31.847709" elapsed="0.000019"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T00:51:31.847769" elapsed="0.000015"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T00:51:31.763949" elapsed="0.083920">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:51:32.877840" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:51:32.877363" elapsed="0.000509"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:51:32.878375" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:51:32.878043" elapsed="0.000359"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:51:32.878451" elapsed="0.000040"/>
</return>
<msg time="2026-04-08T00:51:32.878621" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:51:32.876954" elapsed="0.001692"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T00:51:32.883316" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T00:51:32.883110" elapsed="0.000232"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:51:32.883493" elapsed="0.000192"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:51:32.884048" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:51:32.883837" elapsed="0.000237"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:32.884547" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:32.884290" elapsed="0.000299"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:51:32.884737" elapsed="0.000181"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:51:32.885295" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:51:32.885069" elapsed="0.000252"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:32.885751" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:32.885505" elapsed="0.000286"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:32.886320" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:32.885942" elapsed="0.000403"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:32.886926" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:32.886510" elapsed="0.000459"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:32.887417" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:32.887118" elapsed="0.000325"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:51:32.894199" elapsed="0.000212"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:51:32.902842" elapsed="0.000214"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:51:32.903632" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:51:32.903243" elapsed="0.000415"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:51:32.904917" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:51:32.904370" elapsed="0.000590"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:51:32.905094" elapsed="0.000033"/>
</return>
<msg time="2026-04-08T00:51:32.905269" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:51:32.903845" elapsed="0.001449"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:51:32.905900" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:51:32.905456" elapsed="0.000471"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:51:32.906535" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:51:32.906088" elapsed="0.000474"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:51:32.907057" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:51:32.916883" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:51:32.906723" elapsed="0.012000">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:32.918916" elapsed="0.000024"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:32.919091" elapsed="0.000020"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:32.919279" elapsed="0.000022"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:32.919449" elapsed="0.000021"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:32.919669" elapsed="0.000022"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:32.919835" elapsed="0.000021"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:32.920113" elapsed="0.000021"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:32.920391" elapsed="0.000022"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:32.920587" elapsed="0.000020"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:51:32.919982" elapsed="0.000685"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:51:32.919905" elapsed="0.000791"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:32.920837" elapsed="0.000021"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:51:32.920898" elapsed="0.000016"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:51:32.902354" elapsed="0.018673">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:51:32.921130" elapsed="0.000050"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T00:51:32.891797" elapsed="0.029517">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:32.921556" elapsed="0.000029"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:32.927736" elapsed="0.000041"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:32.928013" elapsed="0.000029"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T00:51:32.928104" elapsed="0.000021"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T00:51:32.882569" elapsed="0.045748">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:51:32.928487" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:51:32.928549" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:51:32.882000" elapsed="0.046581"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T00:51:32.928877" elapsed="0.000019"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:51:32.928709" elapsed="0.000228"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:32.928680" elapsed="0.000289"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:51:32.930428" elapsed="0.000213"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:51:32.931112" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:51:32.930794" elapsed="0.000344"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:51:32.931939" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:51:32.931673" elapsed="0.000292"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:51:32.932056" elapsed="0.000032"/>
</return>
<msg time="2026-04-08T00:51:32.932242" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:51:32.931336" elapsed="0.000933"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:51:32.932800" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:51:32.932429" elapsed="0.000397"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:51:32.933347" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:51:32.932981" elapsed="0.000392"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:51:32.933747" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:51:32.942457" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:51:32.933533" elapsed="0.010705">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:32.944432" elapsed="0.000024"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:32.944605" elapsed="0.000021"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:32.944770" elapsed="0.000020"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:32.944936" elapsed="0.000020"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:32.945104" elapsed="0.000020"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:32.945283" elapsed="0.000020"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:32.945551" elapsed="0.000021"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:32.945723" elapsed="0.000020"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:32.945883" elapsed="0.000020"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:51:32.945423" elapsed="0.000513"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:51:32.945350" elapsed="0.000612"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:32.946129" elapsed="0.000037"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:51:32.946208" elapsed="0.000016"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:51:32.929857" elapsed="0.016460">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:51:32.946437" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:51:32.946483" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:51:32.929208" elapsed="0.017298"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T00:51:32.947146" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T00:51:32.946812" elapsed="0.000412">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T00:51:32.946593" elapsed="0.000694">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T00:51:32.946572" elapsed="0.000747">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T00:51:32.947365" elapsed="0.000016"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:51:32.881452" elapsed="0.066011">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:32.947680" elapsed="0.000021"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:32.947846" elapsed="0.000020"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T00:51:32.947907" elapsed="0.000015"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T00:51:32.878939" elapsed="0.069067">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:32.948192" elapsed="0.000054"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:32.948410" elapsed="0.000020"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:32.948577" elapsed="0.000020"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:32.948736" elapsed="0.000020"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:32.948900" elapsed="0.000020"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:32.949096" elapsed="0.000027"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T00:51:32.949203" elapsed="0.000022"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T00:51:32.876140" elapsed="0.073202">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:51:33.980414" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:51:33.979927" elapsed="0.000520"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:51:33.980933" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:51:33.980617" elapsed="0.000342"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:51:33.981008" elapsed="0.000038"/>
</return>
<msg time="2026-04-08T00:51:33.981195" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:51:33.979490" elapsed="0.001733"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T00:51:33.985808" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T00:51:33.985618" elapsed="0.000217"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:51:33.985986" elapsed="0.000207"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:51:33.986555" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:51:33.986345" elapsed="0.000236"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:33.987022" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:33.986767" elapsed="0.000297"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:51:33.987223" elapsed="0.000184"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:51:33.987777" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:51:33.987557" elapsed="0.000246"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:33.988320" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:33.988049" elapsed="0.000312"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:33.988855" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:33.988513" elapsed="0.000367"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:33.989298" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:33.989046" elapsed="0.000294"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:33.989769" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:33.989489" elapsed="0.000305"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:51:33.996346" elapsed="0.000216"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:51:34.006301" elapsed="0.000213"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:51:34.007060" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:51:34.006671" elapsed="0.000420"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:51:34.008445" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:51:34.007874" elapsed="0.000613"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:51:34.008621" elapsed="0.000033"/>
</return>
<msg time="2026-04-08T00:51:34.008779" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:51:34.007451" elapsed="0.001354"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:51:34.009429" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:51:34.008966" elapsed="0.000491"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:51:34.010043" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:51:34.009615" elapsed="0.000454"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:51:34.010592" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:51:34.020597" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:51:34.010254" elapsed="0.012127">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:34.022578" elapsed="0.000025"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:34.022755" elapsed="0.000022"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:34.022923" elapsed="0.000021"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:34.023091" elapsed="0.000021"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:34.023278" elapsed="0.000021"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:34.023444" elapsed="0.000021"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:34.023750" elapsed="0.000022"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:34.023982" elapsed="0.000025"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:34.024390" elapsed="0.000049"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:51:34.023591" elapsed="0.000984"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:51:34.023516" elapsed="0.001121"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:34.024957" elapsed="0.000047"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:51:34.025093" elapsed="0.000035"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:51:34.005794" elapsed="0.019590">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:51:34.025636" elapsed="0.000037"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T00:51:33.994112" elapsed="0.031756">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:34.026294" elapsed="0.000049"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:34.036225" elapsed="0.000031"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:34.036424" elapsed="0.000021"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T00:51:34.036490" elapsed="0.000016"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T00:51:33.985064" elapsed="0.051532">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:51:34.036712" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:51:34.036756" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:51:33.984503" elapsed="0.052276"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T00:51:34.036991" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:51:34.036872" elapsed="0.000163"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:34.036851" elapsed="0.000207"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:51:34.038405" elapsed="0.000209"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:51:34.039071" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:51:34.038766" elapsed="0.000331"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:51:34.039912" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:51:34.039632" elapsed="0.000306"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:51:34.039985" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:51:34.040133" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:51:34.039296" elapsed="0.000877"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:51:34.040704" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:51:34.040335" elapsed="0.000395"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:51:34.041248" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:51:34.040884" elapsed="0.000390"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:51:34.041638" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:51:34.050739" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:51:34.041434" elapsed="0.011776">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:34.053517" elapsed="0.000032"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:34.053757" elapsed="0.000029"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:34.053987" elapsed="0.000028"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:34.054289" elapsed="0.000030"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:34.054529" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:34.054753" elapsed="0.000028"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:34.055109" elapsed="0.000027"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:34.055366" elapsed="0.000028"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:34.055589" elapsed="0.000027"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:51:34.054934" elapsed="0.000726"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:51:34.054841" elapsed="0.000872"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:34.055908" elapsed="0.000029"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:51:34.055991" elapsed="0.000021"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:51:34.037838" elapsed="0.018303">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:51:34.056322" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:51:34.056384" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:51:34.037225" elapsed="0.019191"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T00:51:34.057294" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T00:51:34.056829" elapsed="0.000551">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T00:51:34.056532" elapsed="0.000933">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T00:51:34.056506" elapsed="0.001002">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T00:51:34.057571" elapsed="0.000021"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:51:33.983939" elapsed="0.073767">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:34.057949" elapsed="0.000029"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:34.058198" elapsed="0.000030"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T00:51:34.058287" elapsed="0.000022"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T00:51:33.981521" elapsed="0.076904">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:34.058660" elapsed="0.000028"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:34.058959" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:34.059213" elapsed="0.000029"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:34.059440" elapsed="0.000027"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:34.059670" elapsed="0.000073"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:34.059954" elapsed="0.000029"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T00:51:34.060052" elapsed="0.000026"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T00:51:33.978673" elapsed="0.081555">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:51:35.098526" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:51:35.098027" elapsed="0.000531"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:51:35.099041" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:51:35.098727" elapsed="0.000341"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:51:35.099116" elapsed="0.000054"/>
</return>
<msg time="2026-04-08T00:51:35.099352" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:51:35.097637" elapsed="0.001742"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T00:51:35.104023" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T00:51:35.103831" elapsed="0.000218"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:51:35.104215" elapsed="0.000194"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:51:35.104769" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:51:35.104561" elapsed="0.000233"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:35.105250" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:35.104981" elapsed="0.000310"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:51:35.105435" elapsed="0.000180"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:51:35.105968" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:51:35.105763" elapsed="0.000230"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:35.106420" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:35.106174" elapsed="0.000286"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:35.106946" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:35.106608" elapsed="0.000363"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:35.107495" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:35.107138" elapsed="0.000401"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:35.107968" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:35.107688" elapsed="0.000306"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:51:35.114471" elapsed="0.000387"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:51:35.123433" elapsed="0.000279"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:51:35.124275" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:51:35.123870" elapsed="0.000432"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:51:35.125456" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:51:35.124886" elapsed="0.000613"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:51:35.125637" elapsed="0.000033"/>
</return>
<msg time="2026-04-08T00:51:35.125797" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:51:35.124489" elapsed="0.001335"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:51:35.126463" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:51:35.125988" elapsed="0.000503"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:51:35.127078" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:51:35.126650" elapsed="0.000455"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:51:35.127634" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:51:35.135738" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:51:35.127301" elapsed="0.010205">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:35.137694" elapsed="0.000023"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:35.137867" elapsed="0.000021"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:35.138034" elapsed="0.000021"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:35.138229" elapsed="0.000022"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:35.138404" elapsed="0.000021"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:35.138568" elapsed="0.000020"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:35.138839" elapsed="0.000020"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:35.139066" elapsed="0.000021"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:35.139315" elapsed="0.000022"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:51:35.138710" elapsed="0.000689"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:51:35.138638" elapsed="0.000790"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:35.139571" elapsed="0.000021"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:51:35.139631" elapsed="0.000015"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:51:35.122901" elapsed="0.016843">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:51:35.139814" elapsed="0.000016"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T00:51:35.112269" elapsed="0.027645">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:35.140177" elapsed="0.000034"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:35.145980" elapsed="0.000037"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:35.146269" elapsed="0.000030"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T00:51:35.146365" elapsed="0.000021"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T00:51:35.103294" elapsed="0.043219">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:51:35.146670" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:51:35.146732" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:51:35.102694" elapsed="0.044071"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T00:51:35.147044" elapsed="0.000019"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:51:35.146886" elapsed="0.000218"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:35.146859" elapsed="0.000276"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:51:35.149139" elapsed="0.000318"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:51:35.150098" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:51:35.149673" elapsed="0.000460"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:51:35.151603" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:51:35.150922" elapsed="0.000718"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:51:35.151708" elapsed="0.000041"/>
</return>
<msg time="2026-04-08T00:51:35.151913" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:51:35.150450" elapsed="0.001496"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:51:35.152564" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:51:35.152192" elapsed="0.000398"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:51:35.153088" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:51:35.152744" elapsed="0.000370"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:51:35.153485" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:51:35.161768" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:51:35.153288" elapsed="0.010924">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:35.164468" elapsed="0.000032"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:35.164708" elapsed="0.000028"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:35.164934" elapsed="0.000029"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:35.165180" elapsed="0.000030"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:35.165418" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:35.165641" elapsed="0.000028"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:35.165994" elapsed="0.000076"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:35.166308" elapsed="0.000030"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:35.166536" elapsed="0.000027"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:51:35.165819" elapsed="0.000789"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:51:35.165729" elapsed="0.000916"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:35.166836" elapsed="0.000028"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:51:35.166917" elapsed="0.000021"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:51:35.148253" elapsed="0.018813">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:51:35.167264" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:51:35.167326" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:51:35.147385" elapsed="0.019973"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T00:51:35.168230" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T00:51:35.167770" elapsed="0.000546">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T00:51:35.167474" elapsed="0.000928">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T00:51:35.167448" elapsed="0.000997">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T00:51:35.168509" elapsed="0.000021"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:51:35.102107" elapsed="0.066537">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:35.168887" elapsed="0.000030"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:35.169117" elapsed="0.000028"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T00:51:35.169224" elapsed="0.000021"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T00:51:35.099676" elapsed="0.069685">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:35.169592" elapsed="0.000029"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:35.169838" elapsed="0.000029"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:35.170073" elapsed="0.000028"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:35.170319" elapsed="0.000028"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:35.170549" elapsed="0.000027"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:35.170774" elapsed="0.000027"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T00:51:35.170859" elapsed="0.000020"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T00:51:35.096812" elapsed="0.074182">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:51:36.204803" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:51:36.204336" elapsed="0.000500"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:51:36.205336" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:51:36.205007" elapsed="0.000355"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:51:36.205410" elapsed="0.000039"/>
</return>
<msg time="2026-04-08T00:51:36.205581" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:51:36.203930" elapsed="0.001676"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T00:51:36.210501" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T00:51:36.210311" elapsed="0.000217"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:51:36.210702" elapsed="0.000199"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:51:36.211281" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:51:36.211055" elapsed="0.000252"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:36.211758" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:36.211503" elapsed="0.000296"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:51:36.211945" elapsed="0.000179"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:51:36.212496" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:51:36.212289" elapsed="0.000232"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:36.212929" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:36.212688" elapsed="0.000281"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:36.213475" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:36.213118" elapsed="0.000383"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:36.213904" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:36.213666" elapsed="0.000281"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:36.214394" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:36.214094" elapsed="0.000326"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:51:36.220914" elapsed="0.000212"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:51:36.229698" elapsed="0.000212"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:51:36.230502" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:51:36.230066" elapsed="0.000463"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:51:36.231713" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:51:36.231144" elapsed="0.000610"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:51:36.231892" elapsed="0.000033"/>
</return>
<msg time="2026-04-08T00:51:36.232050" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:51:36.230737" elapsed="0.001339"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:51:36.232700" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:51:36.232255" elapsed="0.000473"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:51:36.233409" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:51:36.232954" elapsed="0.000483"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:51:36.233932" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:51:36.245571" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:51:36.233604" elapsed="0.013764">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:36.247561" elapsed="0.000024"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:36.247737" elapsed="0.000021"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:36.247905" elapsed="0.000021"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:36.248074" elapsed="0.000021"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:36.248264" elapsed="0.000021"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:36.248431" elapsed="0.000021"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:36.248702" elapsed="0.000020"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:36.248928" elapsed="0.000021"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:36.249121" elapsed="0.000021"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:51:36.248573" elapsed="0.000644"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:51:36.248501" elapsed="0.000745"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:36.249389" elapsed="0.000020"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:51:36.249448" elapsed="0.000015"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:51:36.229205" elapsed="0.020361">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:51:36.249635" elapsed="0.000015"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T00:51:36.218706" elapsed="0.031026">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:36.249905" elapsed="0.000021"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:36.254072" elapsed="0.000026"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:36.254284" elapsed="0.000021"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T00:51:36.254351" elapsed="0.000015"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T00:51:36.209746" elapsed="0.044708">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:51:36.254608" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:51:36.254679" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:51:36.209142" elapsed="0.045562"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T00:51:36.254909" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:51:36.254794" elapsed="0.000157"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:36.254774" elapsed="0.000200"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:51:36.256301" elapsed="0.000210"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:51:36.256966" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:51:36.256663" elapsed="0.000328"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:51:36.257788" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:51:36.257527" elapsed="0.000287"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:51:36.257862" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:51:36.258007" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:51:36.257191" elapsed="0.000841"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:51:36.258572" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:51:36.258204" elapsed="0.000395"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:51:36.259108" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:51:36.258767" elapsed="0.000367"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:51:36.259508" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:51:36.267614" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:51:36.259311" elapsed="0.010003">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:36.269499" elapsed="0.000023"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:36.269671" elapsed="0.000020"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:36.269834" elapsed="0.000019"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:36.269997" elapsed="0.000020"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:36.270179" elapsed="0.000021"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:36.270342" elapsed="0.000020"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:36.270595" elapsed="0.000020"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:36.270868" elapsed="0.000021"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:36.271028" elapsed="0.000019"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:51:36.270470" elapsed="0.000609"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:51:36.270405" elapsed="0.000700"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:36.271257" elapsed="0.000021"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:51:36.271317" elapsed="0.000015"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:51:36.255741" elapsed="0.015683">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:51:36.271584" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:51:36.271630" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:51:36.255123" elapsed="0.016531"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T00:51:36.272527" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T00:51:36.271952" elapsed="0.000636">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T00:51:36.271738" elapsed="0.000912">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T00:51:36.271719" elapsed="0.000963">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T00:51:36.272728" elapsed="0.000015"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:51:36.208583" elapsed="0.064243">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:36.273002" elapsed="0.000021"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:36.273185" elapsed="0.000021"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T00:51:36.273249" elapsed="0.000015"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T00:51:36.205903" elapsed="0.067443">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:36.273512" elapsed="0.000020"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:36.273686" elapsed="0.000020"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:36.273852" elapsed="0.000019"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:36.274011" elapsed="0.000019"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:36.274188" elapsed="0.000020"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:36.274353" elapsed="0.000019"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T00:51:36.274413" elapsed="0.000015"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T00:51:36.203135" elapsed="0.071376">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:51:37.308538" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:51:37.308057" elapsed="0.000513"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:51:37.309056" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:51:37.308740" elapsed="0.000342"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:51:37.309130" elapsed="0.000056"/>
</return>
<msg time="2026-04-08T00:51:37.309318" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:51:37.307668" elapsed="0.001753"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T00:51:37.314023" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T00:51:37.313835" elapsed="0.000215"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:51:37.314230" elapsed="0.000194"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:51:37.314792" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:51:37.314579" elapsed="0.000238"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:37.315278" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:37.315007" elapsed="0.000313"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:51:37.315467" elapsed="0.000180"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:51:37.316005" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:51:37.315798" elapsed="0.000232"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:37.316463" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:37.316217" elapsed="0.000287"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:37.316994" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:37.316654" elapsed="0.000365"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:37.317436" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:37.317200" elapsed="0.000279"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:37.317930" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:37.317646" elapsed="0.000310"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:51:37.324620" elapsed="0.000214"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:51:37.333516" elapsed="0.000210"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:51:37.334298" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:51:37.333880" elapsed="0.000452"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:51:37.335479" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:51:37.334916" elapsed="0.000605"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:51:37.335657" elapsed="0.000032"/>
</return>
<msg time="2026-04-08T00:51:37.335812" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:51:37.334519" elapsed="0.001319"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:51:37.336460" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:51:37.335998" elapsed="0.000490"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:51:37.337071" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:51:37.336645" elapsed="0.000453"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:51:37.337612" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:51:37.347797" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:51:37.337277" elapsed="0.012317">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:37.349783" elapsed="0.000023"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:37.349957" elapsed="0.000021"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:37.350212" elapsed="0.000024"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:37.350392" elapsed="0.000021"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:37.350563" elapsed="0.000020"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:37.350727" elapsed="0.000020"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:37.351002" elapsed="0.000021"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:37.351415" elapsed="0.000050"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:37.351850" elapsed="0.000047"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:51:37.350872" elapsed="0.001157"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:51:37.350798" elapsed="0.001295"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:37.352446" elapsed="0.000048"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:51:37.352583" elapsed="0.000034"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:51:37.333012" elapsed="0.019822">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:51:37.352993" elapsed="0.000034"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T00:51:37.322313" elapsed="0.030935">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:37.353644" elapsed="0.000047"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:37.363429" elapsed="0.000028"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:37.363627" elapsed="0.000021"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T00:51:37.363693" elapsed="0.000015"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T00:51:37.313292" elapsed="0.050507">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:51:37.363912" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:51:37.363956" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:51:37.312717" elapsed="0.051263"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T00:51:37.364204" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:51:37.364070" elapsed="0.000178"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:37.364049" elapsed="0.000222"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:51:37.365571" elapsed="0.000210"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:51:37.366270" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:51:37.365934" elapsed="0.000362"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:51:37.367115" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:51:37.366850" elapsed="0.000291"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:51:37.367209" elapsed="0.000031"/>
</return>
<msg time="2026-04-08T00:51:37.367359" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:51:37.366514" elapsed="0.000870"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:51:37.367911" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:51:37.367542" elapsed="0.000395"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:51:37.368456" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:51:37.368093" elapsed="0.000389"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:51:37.368841" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:51:37.378232" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:51:37.368643" elapsed="0.011339">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:37.380186" elapsed="0.000024"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:37.380360" elapsed="0.000021"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:37.380524" elapsed="0.000019"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:37.380688" elapsed="0.000020"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:37.380855" elapsed="0.000019"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:37.381015" elapsed="0.000020"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:37.381289" elapsed="0.000021"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:37.381460" elapsed="0.000020"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:37.381618" elapsed="0.000020"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:51:37.381143" elapsed="0.000528"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:51:37.381078" elapsed="0.000619"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:37.381834" elapsed="0.000020"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:51:37.381892" elapsed="0.000015"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:51:37.365013" elapsed="0.016986">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:51:37.382135" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:51:37.382218" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:51:37.364420" elapsed="0.017823"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T00:51:37.382865" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T00:51:37.382549" elapsed="0.000377">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T00:51:37.382334" elapsed="0.000653">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T00:51:37.382316" elapsed="0.000702">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T00:51:37.383064" elapsed="0.000015"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:51:37.312146" elapsed="0.071101">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:37.383504" elapsed="0.000030"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:37.383734" elapsed="0.000028"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T00:51:37.383819" elapsed="0.000021"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T00:51:37.309725" elapsed="0.074231">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:37.384209" elapsed="0.000030"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:37.384459" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:37.384692" elapsed="0.000028"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:37.384915" elapsed="0.000027"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:37.385143" elapsed="0.000046"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:37.385392" elapsed="0.000028"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T00:51:37.385479" elapsed="0.000020"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T00:51:37.306868" elapsed="0.078746">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:51:38.418053" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:51:38.417565" elapsed="0.000520"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:51:38.418587" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:51:38.418272" elapsed="0.000342"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:51:38.418662" elapsed="0.000040"/>
</return>
<msg time="2026-04-08T00:51:38.418833" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:51:38.417172" elapsed="0.001686"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T00:51:38.423618" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T00:51:38.423429" elapsed="0.000215"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:51:38.423794" elapsed="0.000192"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:51:38.424362" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:51:38.424137" elapsed="0.000251"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:38.424897" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:38.424570" elapsed="0.000369"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:51:38.425086" elapsed="0.000198"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:51:38.425667" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:51:38.425435" elapsed="0.000259"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:38.426109" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:38.425863" elapsed="0.000286"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:38.426661" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:38.426318" elapsed="0.000368"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:38.427087" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:38.426852" elapsed="0.000279"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:38.427577" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:38.427295" elapsed="0.000308"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:51:38.434138" elapsed="0.000229"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:51:38.442970" elapsed="0.000225"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:51:38.443735" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:51:38.443351" elapsed="0.000411"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:51:38.444912" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:51:38.444367" elapsed="0.000587"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:51:38.445091" elapsed="0.000032"/>
</return>
<msg time="2026-04-08T00:51:38.445268" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:51:38.443946" elapsed="0.001348"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:51:38.445934" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:51:38.445456" elapsed="0.000505"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:51:38.446563" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:51:38.446121" elapsed="0.000469"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:51:38.447083" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:51:38.457068" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:51:38.446752" elapsed="0.012870">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:38.459886" elapsed="0.000033"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:38.460129" elapsed="0.000052"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:38.460394" elapsed="0.000029"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:38.460627" elapsed="0.000029"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:38.460865" elapsed="0.000029"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:38.461095" elapsed="0.000029"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:38.461493" elapsed="0.000029"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:38.461827" elapsed="0.000030"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:38.462098" elapsed="0.000029"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:51:38.461311" elapsed="0.000987"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:51:38.461209" elapsed="0.001133"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:38.462546" elapsed="0.000030"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:51:38.462634" elapsed="0.000022"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:51:38.442477" elapsed="0.020321">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:51:38.462900" elapsed="0.000022"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T00:51:38.431933" elapsed="0.031110">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:38.463314" elapsed="0.000031"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:38.469346" elapsed="0.000037"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:38.469631" elapsed="0.000030"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T00:51:38.469724" elapsed="0.000021"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T00:51:38.422869" elapsed="0.047000">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:51:38.470026" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:51:38.470086" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:51:38.422302" elapsed="0.047817"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T00:51:38.470424" elapsed="0.000019"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:51:38.470263" elapsed="0.000219"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:38.470234" elapsed="0.000280"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:51:38.472351" elapsed="0.000293"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:51:38.473300" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:51:38.472856" elapsed="0.000480"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:51:38.474462" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:51:38.474070" elapsed="0.000428"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:51:38.474563" elapsed="0.000041"/>
</return>
<msg time="2026-04-08T00:51:38.474767" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:51:38.473601" elapsed="0.001199"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:51:38.475556" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:51:38.475021" elapsed="0.000571"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:51:38.476310" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:51:38.475807" elapsed="0.000540"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:51:38.476902" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:51:38.486356" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:51:38.476620" elapsed="0.011420">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:38.488242" elapsed="0.000024"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:38.488416" elapsed="0.000020"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:38.488580" elapsed="0.000020"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:38.488743" elapsed="0.000020"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:38.488910" elapsed="0.000020"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:38.489069" elapsed="0.000020"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:38.489346" elapsed="0.000020"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:38.489516" elapsed="0.000020"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:38.489706" elapsed="0.000021"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:51:38.489218" elapsed="0.000541"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:51:38.489132" elapsed="0.000653"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:38.489922" elapsed="0.000020"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:51:38.489979" elapsed="0.000015"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:51:38.471579" elapsed="0.018506">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:51:38.490246" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:51:38.490323" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:51:38.470724" elapsed="0.019636"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T00:51:38.491232" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T00:51:38.490770" elapsed="0.000550">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T00:51:38.490475" elapsed="0.000930">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T00:51:38.490450" elapsed="0.000998">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T00:51:38.491512" elapsed="0.000022"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:51:38.421687" elapsed="0.069960">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:38.491892" elapsed="0.000030"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:38.492121" elapsed="0.000028"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T00:51:38.492234" elapsed="0.000021"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T00:51:38.419168" elapsed="0.073203">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:38.492653" elapsed="0.000029"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:38.492901" elapsed="0.000029"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:38.493137" elapsed="0.000047"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:38.493384" elapsed="0.000028"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:38.493630" elapsed="0.000028"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:38.493859" elapsed="0.000027"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T00:51:38.493943" elapsed="0.000020"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T00:51:38.416363" elapsed="0.077717">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:51:39.526093" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:51:39.525625" elapsed="0.000500"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:51:39.526630" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:51:39.526315" elapsed="0.000342"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:51:39.526704" elapsed="0.000040"/>
</return>
<msg time="2026-04-08T00:51:39.526876" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:51:39.525238" elapsed="0.001664"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T00:51:39.531501" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T00:51:39.531311" elapsed="0.000216"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:51:39.531677" elapsed="0.000191"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:51:39.532282" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:51:39.532019" elapsed="0.000290"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:39.532743" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:39.532488" elapsed="0.000296"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:51:39.532929" elapsed="0.000196"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:51:39.533500" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:51:39.533294" elapsed="0.000231"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:39.533936" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:39.533692" elapsed="0.000285"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:39.534482" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:39.534126" elapsed="0.000382"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:39.534905" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:39.534671" elapsed="0.000278"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:39.535399" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:39.535096" elapsed="0.000330"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:51:39.544014" elapsed="0.000325"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:51:39.552844" elapsed="0.000233"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:51:39.553825" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:51:39.553258" elapsed="0.000595"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:51:39.555006" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:51:39.554467" elapsed="0.000581"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:51:39.555203" elapsed="0.000038"/>
</return>
<msg time="2026-04-08T00:51:39.555371" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:51:39.554042" elapsed="0.001355"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:51:39.556013" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:51:39.555558" elapsed="0.000483"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:51:39.556648" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:51:39.556216" elapsed="0.000458"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:51:39.557193" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:51:39.567104" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:51:39.556837" elapsed="0.012092">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:39.569182" elapsed="0.000029"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:39.569368" elapsed="0.000021"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:39.569534" elapsed="0.000020"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:39.569699" elapsed="0.000021"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:39.569869" elapsed="0.000020"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:39.570031" elapsed="0.000020"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:39.570455" elapsed="0.000047"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:39.570960" elapsed="0.000047"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:39.571421" elapsed="0.000048"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:51:39.570198" elapsed="0.001404"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:51:39.570101" elapsed="0.001566"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:39.571983" elapsed="0.000047"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:51:39.572118" elapsed="0.000035"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:51:39.552351" elapsed="0.020080">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:51:39.572590" elapsed="0.000034"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T00:51:39.541626" elapsed="0.031184">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:39.573345" elapsed="0.000049"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:39.582572" elapsed="0.000027"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:39.582764" elapsed="0.000021"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T00:51:39.582830" elapsed="0.000016"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T00:51:39.530755" elapsed="0.052180">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:51:39.583050" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:51:39.583094" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:51:39.530202" elapsed="0.052916"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T00:51:39.583345" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:51:39.583226" elapsed="0.000162"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:39.583204" elapsed="0.000207"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:51:39.584735" elapsed="0.000210"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:51:39.585459" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:51:39.585130" elapsed="0.000355"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:51:39.586621" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:51:39.586003" elapsed="0.000645"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:51:39.586697" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:51:39.586848" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:51:39.585667" elapsed="0.001206"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:51:39.587418" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:51:39.587030" elapsed="0.000414"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:51:39.587942" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:51:39.587600" elapsed="0.000368"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:51:39.588341" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:51:39.595812" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:51:39.588126" elapsed="0.009433">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:39.597745" elapsed="0.000023"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:39.597917" elapsed="0.000020"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:39.598079" elapsed="0.000020"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:39.598262" elapsed="0.000023"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:39.598435" elapsed="0.000021"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:39.598598" elapsed="0.000020"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:39.598902" elapsed="0.000020"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:39.599071" elapsed="0.000020"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:39.599247" elapsed="0.000021"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:51:39.598774" elapsed="0.000528"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:51:39.598703" elapsed="0.000625"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:39.599467" elapsed="0.000020"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:51:39.599526" elapsed="0.000016"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:51:39.584185" elapsed="0.015449">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:51:39.599748" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:51:39.599791" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:51:39.583560" elapsed="0.016254"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T00:51:39.600463" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T00:51:39.600114" elapsed="0.000409">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T00:51:39.599897" elapsed="0.000688">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T00:51:39.599878" elapsed="0.000738">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T00:51:39.600662" elapsed="0.000016"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:51:39.529638" elapsed="0.071124">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:39.600939" elapsed="0.000022"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:39.601151" elapsed="0.000038"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T00:51:39.601234" elapsed="0.000017"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T00:51:39.527213" elapsed="0.074126">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:39.601508" elapsed="0.000021"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:39.601685" elapsed="0.000020"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:39.601851" elapsed="0.000020"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:39.602011" elapsed="0.000019"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:39.602196" elapsed="0.000025"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:39.602455" elapsed="0.000028"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T00:51:39.602588" elapsed="0.000022"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T00:51:39.524427" elapsed="0.078303">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:51:40.634427" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:51:40.633940" elapsed="0.000520"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:51:40.634952" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:51:40.634634" elapsed="0.000345"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:51:40.635028" elapsed="0.000040"/>
</return>
<msg time="2026-04-08T00:51:40.635218" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:51:40.633537" elapsed="0.001708"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T00:51:40.640190" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T00:51:40.639983" elapsed="0.000235"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:51:40.640371" elapsed="0.000208"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:51:40.640945" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:51:40.640734" elapsed="0.000236"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:40.641427" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:40.641168" elapsed="0.000301"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:51:40.641616" elapsed="0.000182"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:51:40.642169" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:51:40.641949" elapsed="0.000247"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:40.642610" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:40.642365" elapsed="0.000286"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:40.643143" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:40.642800" elapsed="0.000383"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:40.643591" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:40.643352" elapsed="0.000283"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:40.644069" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:40.643784" elapsed="0.000311"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:51:40.650569" elapsed="0.000350"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:51:40.659444" elapsed="0.000214"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:51:40.660230" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:51:40.659815" elapsed="0.000443"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:51:40.661417" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:51:40.660855" elapsed="0.000604"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:51:40.661593" elapsed="0.000032"/>
</return>
<msg time="2026-04-08T00:51:40.661751" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:51:40.660445" elapsed="0.001331"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:51:40.662408" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:51:40.661940" elapsed="0.000558"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:51:40.663104" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:51:40.662663" elapsed="0.000469"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:51:40.663654" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:51:40.673937" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:51:40.663319" elapsed="0.014439">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:40.678052" elapsed="0.000037"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:40.678340" elapsed="0.000034"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:40.678591" elapsed="0.000030"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:40.678838" elapsed="0.000032"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:40.679095" elapsed="0.000030"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:40.679367" elapsed="0.000031"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:40.679767" elapsed="0.000030"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:40.680107" elapsed="0.000031"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:40.680441" elapsed="0.000033"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:51:40.679576" elapsed="0.001007"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:51:40.679470" elapsed="0.001157"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:40.680838" elapsed="0.000031"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:51:40.680927" elapsed="0.000023"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:51:40.658931" elapsed="0.022167">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:51:40.681250" elapsed="0.000027"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T00:51:40.648367" elapsed="0.033041">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:40.681673" elapsed="0.000032"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:40.688020" elapsed="0.000043"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:40.688337" elapsed="0.000032"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T00:51:40.688438" elapsed="0.000023"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T00:51:40.639443" elapsed="0.049260">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:51:40.688880" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:51:40.688947" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:51:40.638865" elapsed="0.050117"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T00:51:40.689313" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:51:40.689117" elapsed="0.000240"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:40.689087" elapsed="0.000293"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:51:40.690744" elapsed="0.000216"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:51:40.691469" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:51:40.691114" elapsed="0.000382"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:51:40.692301" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:51:40.692016" elapsed="0.000312"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:51:40.692375" elapsed="0.000031"/>
</return>
<msg time="2026-04-08T00:51:40.692545" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:51:40.691681" elapsed="0.000891"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:51:40.693106" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:51:40.692732" elapsed="0.000401"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:51:40.693655" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:51:40.693307" elapsed="0.000375"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:51:40.694052" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:51:40.705766" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:51:40.693842" elapsed="0.014545">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:40.708708" elapsed="0.000035"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:40.708966" elapsed="0.000030"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:40.709233" elapsed="0.000033"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:40.709486" elapsed="0.000029"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:40.709735" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:40.709975" elapsed="0.000030"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:40.710405" elapsed="0.000032"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:40.710661" elapsed="0.000029"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:40.710909" elapsed="0.000030"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:51:40.710198" elapsed="0.000790"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:51:40.710069" elapsed="0.000958"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:40.711259" elapsed="0.000031"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:51:40.711351" elapsed="0.000023"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:51:40.690188" elapsed="0.021324">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:51:40.711744" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:51:40.711809" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:51:40.689534" elapsed="0.022310"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T00:51:40.713177" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T00:51:40.712310" elapsed="0.000964">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T00:51:40.711969" elapsed="0.001400">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T00:51:40.711940" elapsed="0.001476">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T00:51:40.713484" elapsed="0.000023"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:51:40.638311" elapsed="0.075321">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:40.713895" elapsed="0.000031"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:40.714142" elapsed="0.000050"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T00:51:40.714257" elapsed="0.000023"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T00:51:40.635544" elapsed="0.078861">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:40.714653" elapsed="0.000031"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:40.714917" elapsed="0.000030"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:40.715205" elapsed="0.000039"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:40.715467" elapsed="0.000029"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:40.715711" elapsed="0.000028"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:40.715951" elapsed="0.000028"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T00:51:40.716038" elapsed="0.000022"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T00:51:40.632678" elapsed="0.083525">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:51:41.746645" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:51:41.746146" elapsed="0.000531"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:51:41.747295" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:51:41.746849" elapsed="0.000473"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:51:41.747372" elapsed="0.000041"/>
</return>
<msg time="2026-04-08T00:51:41.747544" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:51:41.745758" elapsed="0.001811"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T00:51:41.752274" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T00:51:41.752055" elapsed="0.000245"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:51:41.752455" elapsed="0.000191"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:51:41.753302" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:51:41.752797" elapsed="0.000532"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:41.753794" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:41.753518" elapsed="0.000318"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:51:41.753983" elapsed="0.000213"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:51:41.754557" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:51:41.754351" elapsed="0.000232"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:41.754991" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:41.754749" elapsed="0.000282"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:41.755539" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:41.755201" elapsed="0.000364"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:41.755961" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:41.755729" elapsed="0.000289"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:41.756473" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:41.756194" elapsed="0.000304"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:51:41.763014" elapsed="0.000228"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:51:41.771810" elapsed="0.000220"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:51:41.772584" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:51:41.772201" elapsed="0.000410"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:51:41.773756" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:51:41.773220" elapsed="0.000576"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:51:41.773932" elapsed="0.000032"/>
</return>
<msg time="2026-04-08T00:51:41.774088" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:51:41.772797" elapsed="0.001316"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:51:41.774734" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:51:41.774291" elapsed="0.000470"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:51:41.775368" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:51:41.774920" elapsed="0.000475"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:51:41.775893" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:51:41.786917" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:51:41.775558" elapsed="0.015316">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:41.791324" elapsed="0.000131"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:41.791807" elapsed="0.000048"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:41.792241" elapsed="0.000049"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:41.792618" elapsed="0.000046"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:41.792998" elapsed="0.000046"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:41.793396" elapsed="0.000048"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:41.793995" elapsed="0.000045"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:41.794550" elapsed="0.000048"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:41.794983" elapsed="0.000048"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:51:41.793706" elapsed="0.001488"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:51:41.793550" elapsed="0.001711"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:41.795581" elapsed="0.000046"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:51:41.795715" elapsed="0.000035"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:51:41.771317" elapsed="0.024651">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:51:41.796207" elapsed="0.000037"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T00:51:41.760828" elapsed="0.035561">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:41.796632" elapsed="0.000029"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:41.802686" elapsed="0.000037"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:41.802955" elapsed="0.000030"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T00:51:41.803047" elapsed="0.000021"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T00:51:41.751463" elapsed="0.051751">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:51:41.803375" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:51:41.803437" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:51:41.750891" elapsed="0.052578"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T00:51:41.803751" elapsed="0.000020"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:51:41.803593" elapsed="0.000217"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:41.803564" elapsed="0.000278"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:51:41.805748" elapsed="0.000294"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:51:41.806704" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:51:41.806279" elapsed="0.000461"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:51:41.807855" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:51:41.807484" elapsed="0.000407"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:51:41.807958" elapsed="0.000081"/>
</return>
<msg time="2026-04-08T00:51:41.808232" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:51:41.806992" elapsed="0.001278"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:51:41.808884" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:51:41.808519" elapsed="0.000392"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:51:41.809430" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:51:41.809065" elapsed="0.000390"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:51:41.809811" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:51:41.819307" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:51:41.809615" elapsed="0.012336">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:41.822391" elapsed="0.000052"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:41.822778" elapsed="0.000046"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:41.823146" elapsed="0.000074"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:41.823548" elapsed="0.000045"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:41.823926" elapsed="0.000066"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:41.824347" elapsed="0.000049"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:41.824923" elapsed="0.000044"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:41.825338" elapsed="0.000048"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:41.825701" elapsed="0.000044"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:51:41.824642" elapsed="0.001174"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:51:41.824495" elapsed="0.001378"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:41.826209" elapsed="0.000048"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:51:41.826344" elapsed="0.000034"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:51:41.804970" elapsed="0.021612">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:51:41.826838" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:51:41.826937" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:51:41.804069" elapsed="0.022920"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T00:51:41.828487" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T00:51:41.827683" elapsed="0.000871">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T00:51:41.827204" elapsed="0.001448">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T00:51:41.827133" elapsed="0.001552">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T00:51:41.828731" elapsed="0.000015"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:51:41.750341" elapsed="0.078488">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:41.829005" elapsed="0.000021"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:41.829186" elapsed="0.000021"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T00:51:41.829249" elapsed="0.000014"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T00:51:41.747867" elapsed="0.081479">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:41.829514" elapsed="0.000021"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:41.829692" elapsed="0.000020"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:41.829864" elapsed="0.000020"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:41.830025" elapsed="0.000020"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:41.830210" elapsed="0.000021"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:41.830374" elapsed="0.000019"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T00:51:41.830433" elapsed="0.000015"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T00:51:41.744961" elapsed="0.085575">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:51:42.862792" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:51:42.862330" elapsed="0.000494"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:51:42.863321" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:51:42.862992" elapsed="0.000356"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:51:42.863400" elapsed="0.000041"/>
</return>
<msg time="2026-04-08T00:51:42.863612" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:51:42.861920" elapsed="0.001718"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T00:51:42.868477" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T00:51:42.868278" elapsed="0.000227"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:51:42.868660" elapsed="0.000196"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:51:42.869387" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:51:42.869135" elapsed="0.000278"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:42.869864" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:42.869604" elapsed="0.000302"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:51:42.870082" elapsed="0.000213"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:51:42.870659" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:51:42.870449" elapsed="0.000236"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:42.871100" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:42.870854" elapsed="0.000288"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:42.871683" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:42.871310" elapsed="0.000399"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:42.872110" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:42.871874" elapsed="0.000294"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:42.872605" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:42.872322" elapsed="0.000308"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:51:42.879111" elapsed="0.000232"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:51:42.887838" elapsed="0.000214"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:51:42.888617" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:51:42.888224" elapsed="0.000419"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:51:42.889833" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:51:42.889279" elapsed="0.000595"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:51:42.890011" elapsed="0.000038"/>
</return>
<msg time="2026-04-08T00:51:42.890197" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:51:42.888832" elapsed="0.001392"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:51:42.890852" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:51:42.890388" elapsed="0.000491"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:51:42.891529" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:51:42.891039" elapsed="0.000517"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:51:42.892063" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:51:42.903522" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:51:42.891721" elapsed="0.014255">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:42.906260" elapsed="0.000034"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:42.906507" elapsed="0.000029"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:42.906740" elapsed="0.000028"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:42.906971" elapsed="0.000028"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:42.907228" elapsed="0.000030"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:42.907480" elapsed="0.000032"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:42.907868" elapsed="0.000030"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:42.908285" elapsed="0.000036"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:42.908600" elapsed="0.000035"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:51:42.907686" elapsed="0.001044"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:51:42.907582" elapsed="0.001190"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:42.908973" elapsed="0.000029"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:51:42.909058" elapsed="0.000022"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:51:42.887324" elapsed="0.021960">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:51:42.909395" elapsed="0.000023"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T00:51:42.876919" elapsed="0.032621">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:42.909789" elapsed="0.000030"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:42.915903" elapsed="0.000039"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:42.916194" elapsed="0.000031"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T00:51:42.916289" elapsed="0.000021"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T00:51:42.867692" elapsed="0.048748">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:51:42.916598" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:51:42.916659" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:51:42.867078" elapsed="0.049613"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T00:51:42.916977" elapsed="0.000019"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:51:42.916817" elapsed="0.000218"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:42.916788" elapsed="0.000278"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:51:42.918889" elapsed="0.000311"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:51:42.919868" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:51:42.919414" elapsed="0.000490"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:51:42.921045" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:51:42.920678" elapsed="0.000403"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:51:42.921148" elapsed="0.000064"/>
</return>
<msg time="2026-04-08T00:51:42.921379" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:51:42.920196" elapsed="0.001218"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:51:42.922148" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:51:42.921635" elapsed="0.000572"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:51:42.922970" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:51:42.922485" elapsed="0.000521"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:51:42.923568" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:51:42.932681" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:51:42.923252" elapsed="0.012457">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:42.936125" elapsed="0.000082"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:42.936549" elapsed="0.000046"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:42.936918" elapsed="0.000047"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:42.937348" elapsed="0.000052"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:42.937739" elapsed="0.000045"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:42.938101" elapsed="0.000043"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:42.938713" elapsed="0.000046"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:42.939095" elapsed="0.000045"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:42.939539" elapsed="0.000050"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:51:42.938429" elapsed="0.001235"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:51:42.938279" elapsed="0.001445"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:42.940033" elapsed="0.000045"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:51:42.940193" elapsed="0.000037"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:51:42.918116" elapsed="0.022323">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:51:42.940688" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:51:42.940785" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:51:42.917293" elapsed="0.023544"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T00:51:42.942274" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T00:51:42.941536" elapsed="0.000876">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T00:51:42.941024" elapsed="0.001526">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T00:51:42.940982" elapsed="0.001638">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T00:51:42.942720" elapsed="0.000035"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:51:42.866481" elapsed="0.076454">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:42.943359" elapsed="0.000050"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:42.943816" elapsed="0.000047"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T00:51:42.944035" elapsed="0.000036"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T00:51:42.863937" elapsed="0.080359">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:42.944609" elapsed="0.000021"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:42.944786" elapsed="0.000020"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:42.944954" elapsed="0.000020"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:42.945113" elapsed="0.000019"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:42.945296" elapsed="0.000020"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:42.945459" elapsed="0.000019"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T00:51:42.945520" elapsed="0.000014"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T00:51:42.861061" elapsed="0.084558">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:51:43.978331" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:51:43.977707" elapsed="0.000663"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:51:43.978917" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:51:43.978570" elapsed="0.000411"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:51:43.979039" elapsed="0.000049"/>
</return>
<msg time="2026-04-08T00:51:43.979267" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:51:43.977231" elapsed="0.002064"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T00:51:43.984513" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T00:51:43.984321" elapsed="0.000219"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:51:43.984692" elapsed="0.000193"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:51:43.985263" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:51:43.985037" elapsed="0.000252"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:43.985734" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:43.985479" elapsed="0.000296"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:51:43.985920" elapsed="0.000179"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:51:43.986473" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:51:43.986266" elapsed="0.000232"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:43.986907" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:43.986666" elapsed="0.000296"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:43.987471" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:43.987113" elapsed="0.000385"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:43.987973" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:43.987737" elapsed="0.000279"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:43.988468" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:43.988184" elapsed="0.000309"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:51:43.994983" elapsed="0.000229"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:51:44.003707" elapsed="0.000211"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:51:44.004478" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:51:44.004076" elapsed="0.000429"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:51:44.005652" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:51:44.005089" elapsed="0.000605"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:51:44.005829" elapsed="0.000032"/>
</return>
<msg time="2026-04-08T00:51:44.005984" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:51:44.004692" elapsed="0.001317"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:51:44.006628" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:51:44.006187" elapsed="0.000468"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:51:44.007268" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:51:44.006813" elapsed="0.000482"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:51:44.007793" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:51:44.017177" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:51:44.007457" elapsed="0.011517">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:44.019176" elapsed="0.000025"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:44.019354" elapsed="0.000021"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:44.019523" elapsed="0.000020"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:44.019687" elapsed="0.000021"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:44.019858" elapsed="0.000020"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:44.020021" elapsed="0.000020"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:44.020309" elapsed="0.000022"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:44.020537" elapsed="0.000021"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:44.020729" elapsed="0.000021"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:51:44.020176" elapsed="0.000633"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:51:44.020089" elapsed="0.000748"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:44.020978" elapsed="0.000020"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:51:44.021037" elapsed="0.000016"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:51:44.003211" elapsed="0.017940">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:51:44.021276" elapsed="0.000017"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T00:51:43.992767" elapsed="0.028613">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:44.021559" elapsed="0.000022"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:44.027602" elapsed="0.000028"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:44.027799" elapsed="0.000021"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T00:51:44.027865" elapsed="0.000016"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T00:51:43.983765" elapsed="0.044206">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:51:44.028084" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:51:44.028129" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:51:43.983169" elapsed="0.044998"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T00:51:44.028373" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:51:44.028258" elapsed="0.000157"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:44.028237" elapsed="0.000200"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:51:44.029750" elapsed="0.000213"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:51:44.030442" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:51:44.030116" elapsed="0.000352"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:51:44.031296" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:51:44.031009" elapsed="0.000314"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:51:44.031370" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:51:44.031521" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:51:44.030649" elapsed="0.000897"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:51:44.032075" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:51:44.031704" elapsed="0.000397"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:51:44.032624" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:51:44.032272" elapsed="0.000379"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:51:44.033011" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:51:44.040047" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:51:44.032811" elapsed="0.008938">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:44.041932" elapsed="0.000022"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:44.042105" elapsed="0.000020"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:44.042326" elapsed="0.000021"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:44.042491" elapsed="0.000020"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:44.042658" elapsed="0.000020"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:44.042819" elapsed="0.000020"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:44.043111" elapsed="0.000020"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:44.043298" elapsed="0.000020"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:44.043458" elapsed="0.000020"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:51:44.042982" elapsed="0.000528"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:51:44.042882" elapsed="0.000654"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:44.043674" elapsed="0.000020"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:51:44.043732" elapsed="0.000015"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:51:44.029201" elapsed="0.014638">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:51:44.043952" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:51:44.043995" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:51:44.028586" elapsed="0.015432"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T00:51:44.044647" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T00:51:44.044330" elapsed="0.000377">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T00:51:44.044100" elapsed="0.000668">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T00:51:44.044082" elapsed="0.000718">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T00:51:44.044845" elapsed="0.000016"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:51:43.982578" elapsed="0.062365">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:44.045116" elapsed="0.000021"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:44.045302" elapsed="0.000021"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T00:51:44.045365" elapsed="0.000014"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T00:51:43.979653" elapsed="0.065808">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:44.045626" elapsed="0.000021"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:44.045802" elapsed="0.000020"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:44.045970" elapsed="0.000020"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:44.046181" elapsed="0.000024"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:44.046392" elapsed="0.000026"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:44.046597" elapsed="0.000021"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T00:51:44.046661" elapsed="0.000014"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T00:51:43.976261" elapsed="0.070498">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:51:45.078972" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:51:45.078508" elapsed="0.000496"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:51:45.079503" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:51:45.079187" elapsed="0.000343"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:51:45.079577" elapsed="0.000038"/>
</return>
<msg time="2026-04-08T00:51:45.079745" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:51:45.078095" elapsed="0.001675"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T00:51:45.084452" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T00:51:45.084261" elapsed="0.000218"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:51:45.084630" elapsed="0.000192"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:51:45.085198" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:51:45.084974" elapsed="0.000251"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:45.085670" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:45.085411" elapsed="0.000301"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:51:45.085859" elapsed="0.000182"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:51:45.086433" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:51:45.086208" elapsed="0.000251"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:45.086879" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:45.086635" elapsed="0.000286"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:45.087433" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:45.087072" elapsed="0.000386"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:45.087863" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:45.087627" elapsed="0.000279"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:45.088355" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:45.088055" elapsed="0.000326"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:51:45.094978" elapsed="0.000233"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:51:45.103749" elapsed="0.000215"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:51:45.104521" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:51:45.104119" elapsed="0.000429"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:51:45.105767" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:51:45.105211" elapsed="0.000598"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:51:45.105945" elapsed="0.000032"/>
</return>
<msg time="2026-04-08T00:51:45.106103" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:51:45.104790" elapsed="0.001338"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:51:45.106783" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:51:45.106307" elapsed="0.000503"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:51:45.107420" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:51:45.106971" elapsed="0.000476"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:51:45.107939" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:51:45.118706" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:51:45.107610" elapsed="0.015529">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:45.123562" elapsed="0.000036"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:45.123811" elapsed="0.000030"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:45.124046" elapsed="0.000030"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:45.124300" elapsed="0.000031"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:45.124545" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:45.124774" elapsed="0.000028"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:45.125180" elapsed="0.000040"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:45.125528" elapsed="0.000030"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:45.125797" elapsed="0.000029"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:51:45.124975" elapsed="0.000933"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:51:45.124869" elapsed="0.001080"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:45.126219" elapsed="0.000040"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:51:45.126320" elapsed="0.000023"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:51:45.103251" elapsed="0.023255">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:51:45.126607" elapsed="0.000023"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T00:51:45.092777" elapsed="0.033968">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:45.126996" elapsed="0.000030"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:45.132923" elapsed="0.000039"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:45.133276" elapsed="0.000032"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T00:51:45.133372" elapsed="0.000022"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T00:51:45.083702" elapsed="0.049825">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:51:45.133687" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:51:45.133751" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:51:45.083071" elapsed="0.050714"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T00:51:45.134075" elapsed="0.000020"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:51:45.133911" elapsed="0.000225"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:45.133883" elapsed="0.000304"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:51:45.135970" elapsed="0.000227"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:51:45.136665" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:51:45.136353" elapsed="0.000338"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:51:45.137685" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:51:45.137225" elapsed="0.000487"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:51:45.137760" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:51:45.137908" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:51:45.136872" elapsed="0.001061"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:51:45.138492" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:51:45.138092" elapsed="0.000426"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:51:45.139021" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:51:45.138674" elapsed="0.000372"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:51:45.139433" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:51:45.147967" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:51:45.139221" elapsed="0.011193">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:45.150673" elapsed="0.000032"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:45.150914" elapsed="0.000029"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:45.151145" elapsed="0.000051"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:45.151405" elapsed="0.000030"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:45.151646" elapsed="0.000029"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:45.151875" elapsed="0.000028"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:45.152287" elapsed="0.000033"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:45.152536" elapsed="0.000028"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:45.152818" elapsed="0.000030"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:51:45.152058" elapsed="0.000837"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:51:45.151965" elapsed="0.000967"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:45.153125" elapsed="0.000051"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:51:45.153235" elapsed="0.000023"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:51:45.135313" elapsed="0.018075">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:51:45.153548" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:51:45.153610" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:51:45.134436" elapsed="0.019206"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T00:51:45.154539" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T00:51:45.154057" elapsed="0.000569">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T00:51:45.153758" elapsed="0.000956">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T00:51:45.153731" elapsed="0.001028">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T00:51:45.154825" elapsed="0.000021"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:51:45.082519" elapsed="0.072443">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:45.155230" elapsed="0.000032"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:45.155467" elapsed="0.000028"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T00:51:45.155554" elapsed="0.000021"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T00:51:45.080064" elapsed="0.075629">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:45.155929" elapsed="0.000030"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:45.156200" elapsed="0.000030"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:45.156442" elapsed="0.000029"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:45.156671" elapsed="0.000028"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:45.156904" elapsed="0.000028"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:45.157136" elapsed="0.000046"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T00:51:45.157243" elapsed="0.000021"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T00:51:45.077346" elapsed="0.080037">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:51:46.187702" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:51:46.187234" elapsed="0.000499"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:51:46.188410" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:51:46.188064" elapsed="0.000373"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:51:46.188486" elapsed="0.000046"/>
</return>
<msg time="2026-04-08T00:51:46.188662" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:51:46.186826" elapsed="0.001863"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T00:51:46.193607" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T00:51:46.193418" elapsed="0.000216"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:51:46.193788" elapsed="0.000225"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:51:46.194400" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:51:46.194185" elapsed="0.000241"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:46.194870" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:46.194613" elapsed="0.000299"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:51:46.195062" elapsed="0.000200"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:51:46.195626" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:51:46.195417" elapsed="0.000235"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:46.196245" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:46.195822" elapsed="0.000466"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:46.196799" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:46.196448" elapsed="0.000377"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:46.197244" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:46.196991" elapsed="0.000297"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:46.197717" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:46.197438" elapsed="0.000304"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:51:46.204110" elapsed="0.000228"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:51:46.212822" elapsed="0.000210"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:51:46.213596" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:51:46.213202" elapsed="0.000421"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:51:46.214781" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:51:46.214243" elapsed="0.000580"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:51:46.214956" elapsed="0.000031"/>
</return>
<msg time="2026-04-08T00:51:46.215109" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:51:46.213808" elapsed="0.001327"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:51:46.215752" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:51:46.215314" elapsed="0.000465"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:51:46.216381" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:51:46.215935" elapsed="0.000474"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:51:46.216907" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:51:46.227318" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:51:46.216574" elapsed="0.014532">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:46.231554" elapsed="0.000053"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:46.231941" elapsed="0.000047"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:46.232349" elapsed="0.000050"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:46.232725" elapsed="0.000046"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:46.233106" elapsed="0.000046"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:46.233514" elapsed="0.000046"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:46.234126" elapsed="0.000074"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:46.234689" elapsed="0.000050"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:46.235124" elapsed="0.000080"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:51:46.233817" elapsed="0.001521"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:51:46.233663" elapsed="0.001738"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:46.235720" elapsed="0.000047"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:51:46.235854" elapsed="0.000035"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:51:46.212330" elapsed="0.023775">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:51:46.236314" elapsed="0.000036"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T00:51:46.201926" elapsed="0.034611">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:46.236924" elapsed="0.000047"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:46.242019" elapsed="0.000027"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:46.242224" elapsed="0.000022"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T00:51:46.242291" elapsed="0.000015"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T00:51:46.192835" elapsed="0.049561">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:51:46.242515" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:51:46.242559" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:51:46.192273" elapsed="0.050309"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T00:51:46.242826" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:51:46.242710" elapsed="0.000159"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:46.242688" elapsed="0.000203"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:51:46.244200" elapsed="0.000209"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:51:46.244864" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:51:46.244563" elapsed="0.000327"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:51:46.245704" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:51:46.245423" elapsed="0.000307"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:51:46.245777" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:51:46.245937" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:51:46.245069" elapsed="0.000893"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:51:46.246511" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:51:46.246120" elapsed="0.000417"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:51:46.247035" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:51:46.246693" elapsed="0.000368"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:51:46.247435" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:51:46.256058" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:51:46.247238" elapsed="0.010577">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:46.258034" elapsed="0.000023"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:46.258221" elapsed="0.000021"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:46.258386" elapsed="0.000024"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:46.258691" elapsed="0.000045"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:46.259065" elapsed="0.000044"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:46.259456" elapsed="0.000046"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:46.260019" elapsed="0.000045"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:46.260427" elapsed="0.000045"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:46.260785" elapsed="0.000444"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:51:46.259739" elapsed="0.001570"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:51:46.259596" elapsed="0.001770"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:46.261683" elapsed="0.000046"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:51:46.261817" elapsed="0.000051"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:51:46.243645" elapsed="0.018441">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:51:46.262395" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:51:46.262499" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:51:46.243040" elapsed="0.019512"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T00:51:46.264056" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T00:51:46.263337" elapsed="0.000886">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T00:51:46.262821" elapsed="0.001542">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T00:51:46.262777" elapsed="0.001654">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T00:51:46.264534" elapsed="0.000034"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:51:46.191704" elapsed="0.073046">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:46.265143" elapsed="0.000078"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:46.265565" elapsed="0.000050"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T00:51:46.265707" elapsed="0.000032"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T00:51:46.188987" elapsed="0.076985">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:46.266374" elapsed="0.000056"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:46.266705" elapsed="0.000020"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:46.266874" elapsed="0.000020"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:46.267032" elapsed="0.000019"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:46.267209" elapsed="0.000021"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:46.267372" elapsed="0.000019"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T00:51:46.267432" elapsed="0.000014"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T00:51:46.186044" elapsed="0.081488">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:51:47.298765" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:51:47.298249" elapsed="0.000552"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:51:47.299312" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:51:47.298977" elapsed="0.000362"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:51:47.299389" elapsed="0.000047"/>
</return>
<msg time="2026-04-08T00:51:47.299574" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:51:47.297821" elapsed="0.001778"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T00:51:47.304334" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T00:51:47.304123" elapsed="0.000238"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:51:47.304518" elapsed="0.000197"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:51:47.305134" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:51:47.304868" elapsed="0.000313"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:47.305666" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:47.305400" elapsed="0.000308"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:51:47.305855" elapsed="0.000180"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:51:47.306411" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:51:47.306203" elapsed="0.000233"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:47.306846" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:47.306605" elapsed="0.000281"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:47.307595" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:47.307038" elapsed="0.000584"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:47.308025" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:47.307790" elapsed="0.000278"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:47.308515" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:47.308232" elapsed="0.000308"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:51:47.314874" elapsed="0.000216"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:51:47.323692" elapsed="0.000215"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:51:47.324504" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:51:47.324067" elapsed="0.000464"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:51:47.325704" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:51:47.325120" elapsed="0.000626"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:51:47.325885" elapsed="0.000044"/>
</return>
<msg time="2026-04-08T00:51:47.326058" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:51:47.324721" elapsed="0.001362"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:51:47.326732" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:51:47.326266" elapsed="0.000493"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:51:47.327370" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:51:47.326921" elapsed="0.000476"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:51:47.327902" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:51:47.340911" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:51:47.327559" elapsed="0.017471">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:47.345503" elapsed="0.000061"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:47.345900" elapsed="0.000046"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:47.346312" elapsed="0.000049"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:47.346691" elapsed="0.000045"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:47.347195" elapsed="0.000050"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:47.347571" elapsed="0.000047"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:47.348193" elapsed="0.000049"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:47.348701" elapsed="0.000047"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:47.349133" elapsed="0.000085"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:51:47.347881" elapsed="0.001515"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:51:47.347721" elapsed="0.001740"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:47.349785" elapsed="0.000047"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:51:47.349919" elapsed="0.000035"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:51:47.323197" elapsed="0.027007">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:51:47.350362" elapsed="0.000034"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T00:51:47.312673" elapsed="0.037888">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:47.350832" elapsed="0.000038"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:47.356906" elapsed="0.000039"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:47.357204" elapsed="0.000031"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T00:51:47.357299" elapsed="0.000036"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T00:51:47.303585" elapsed="0.053881">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:51:47.357626" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:51:47.357686" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:51:47.302999" elapsed="0.054721"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T00:51:47.358005" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:51:47.357844" elapsed="0.000221"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:47.357816" elapsed="0.000281"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:51:47.360003" elapsed="0.000320"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:51:47.361004" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:51:47.360559" elapsed="0.000481"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:51:47.362202" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:51:47.361815" elapsed="0.000426"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:51:47.362353" elapsed="0.000043"/>
</return>
<msg time="2026-04-08T00:51:47.362537" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:51:47.361343" elapsed="0.001218"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:51:47.363088" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:51:47.362719" elapsed="0.000395"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:51:47.363628" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:51:47.363284" elapsed="0.000369"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:51:47.364009" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:51:47.372079" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:51:47.363812" elapsed="0.010623">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:47.374689" elapsed="0.000031"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:47.374925" elapsed="0.000027"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:47.375150" elapsed="0.000049"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:47.375400" elapsed="0.000028"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:47.375632" elapsed="0.000027"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:47.375854" elapsed="0.000027"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:47.376225" elapsed="0.000029"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:47.376462" elapsed="0.000028"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:47.376686" elapsed="0.000028"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:51:47.376030" elapsed="0.000729"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:51:47.375939" elapsed="0.000855"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:47.376984" elapsed="0.000027"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:51:47.377064" elapsed="0.000021"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:51:47.359197" elapsed="0.018055">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:51:47.377425" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:51:47.377487" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:51:47.358335" elapsed="0.019187"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T00:51:47.378421" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T00:51:47.377932" elapsed="0.000574">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T00:51:47.377639" elapsed="0.000954">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T00:51:47.377613" elapsed="0.001023">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T00:51:47.378699" elapsed="0.000022"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:51:47.302452" elapsed="0.076383">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:47.379131" elapsed="0.000049"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:47.379387" elapsed="0.000028"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T00:51:47.379474" elapsed="0.000021"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T00:51:47.299898" elapsed="0.079715">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:47.379846" elapsed="0.000028"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:47.380089" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:47.380346" elapsed="0.000028"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:47.380568" elapsed="0.000027"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:47.380794" elapsed="0.000027"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:47.381023" elapsed="0.000034"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T00:51:47.381123" elapsed="0.000022"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T00:51:47.296892" elapsed="0.084392">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:51:48.415007" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:51:48.414490" elapsed="0.000552"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:51:48.415608" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:51:48.415233" elapsed="0.000404"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:51:48.415687" elapsed="0.000041"/>
</return>
<msg time="2026-04-08T00:51:48.415863" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:51:48.414051" elapsed="0.001839"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T00:51:48.420772" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T00:51:48.420572" elapsed="0.000228"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:51:48.420973" elapsed="0.000222"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:51:48.421564" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:51:48.421351" elapsed="0.000239"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:48.422058" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:48.421797" elapsed="0.000304"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:51:48.422265" elapsed="0.000186"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:51:48.422821" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:51:48.422603" elapsed="0.000248"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:48.423375" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:48.423100" elapsed="0.000318"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:48.423927" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:48.423578" elapsed="0.000375"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:48.424376" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:48.424121" elapsed="0.000300"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:48.424876" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:48.424574" elapsed="0.000329"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:51:48.431595" elapsed="0.000220"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:51:48.440982" elapsed="0.000241"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:51:48.441814" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:51:48.441406" elapsed="0.000435"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:51:48.443056" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:51:48.442486" elapsed="0.000613"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:51:48.443255" elapsed="0.000036"/>
</return>
<msg time="2026-04-08T00:51:48.443420" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:51:48.442053" elapsed="0.001392"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:51:48.444090" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:51:48.443608" elapsed="0.000518"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:51:48.444893" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:51:48.444337" elapsed="0.000590"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:51:48.446716" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:51:48.459237" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:51:48.445734" elapsed="0.015989">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:48.462005" elapsed="0.000036"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:48.462275" elapsed="0.000031"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:48.462512" elapsed="0.000029"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:48.462744" elapsed="0.000029"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:48.462979" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:48.463227" elapsed="0.000030"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:48.463632" elapsed="0.000029"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:48.463948" elapsed="0.000029"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:48.464253" elapsed="0.000031"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:51:48.463452" elapsed="0.000918"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:51:48.463330" elapsed="0.001081"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:48.464612" elapsed="0.000030"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:51:48.464702" elapsed="0.000025"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:51:48.440431" elapsed="0.024467">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:51:48.465087" elapsed="0.000024"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T00:51:48.429286" elapsed="0.035972">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:48.465513" elapsed="0.000030"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:48.471254" elapsed="0.000029"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:48.471451" elapsed="0.000022"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T00:51:48.471518" elapsed="0.000015"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T00:51:48.419974" elapsed="0.051650">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:51:48.471753" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:51:48.471797" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:51:48.419410" elapsed="0.052411"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T00:51:48.472046" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:51:48.471920" elapsed="0.000169"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:48.471896" elapsed="0.000216"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:51:48.473584" elapsed="0.000218"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:51:48.474286" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:51:48.473955" elapsed="0.000357"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:51:48.475110" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:51:48.474838" elapsed="0.000301"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:51:48.475212" elapsed="0.000039"/>
</return>
<msg time="2026-04-08T00:51:48.475378" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:51:48.474494" elapsed="0.000908"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:51:48.475948" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:51:48.475562" elapsed="0.000412"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:51:48.476519" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:51:48.476137" elapsed="0.000416"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:51:48.476972" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:51:48.485515" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:51:48.476738" elapsed="0.013044">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:48.490143" elapsed="0.000058"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:48.490427" elapsed="0.000031"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:48.490671" elapsed="0.000029"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:48.490914" elapsed="0.000028"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:48.491185" elapsed="0.000032"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:48.491429" elapsed="0.000029"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:48.491830" elapsed="0.000029"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:48.492078" elapsed="0.000029"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:48.492337" elapsed="0.000030"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:51:48.491639" elapsed="0.000776"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:51:48.491525" elapsed="0.000931"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:48.492661" elapsed="0.000029"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:51:48.492747" elapsed="0.000044"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:51:48.472984" elapsed="0.019956">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:51:48.493117" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:51:48.493203" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:51:48.472285" elapsed="0.020955"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T00:51:48.494236" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T00:51:48.493700" elapsed="0.000629">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T00:51:48.493371" elapsed="0.001049">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T00:51:48.493340" elapsed="0.001127">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T00:51:48.494536" elapsed="0.000023"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:51:48.418832" elapsed="0.075851">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:48.494945" elapsed="0.000031"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:48.495209" elapsed="0.000031"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T00:51:48.495301" elapsed="0.000023"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T00:51:48.416206" elapsed="0.079241">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:48.495698" elapsed="0.000029"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:48.496014" elapsed="0.000031"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:48.496287" elapsed="0.000031"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:48.496530" elapsed="0.000031"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:48.496797" elapsed="0.000036"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:48.497052" elapsed="0.000029"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T00:51:48.497142" elapsed="0.000042"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T00:51:48.413110" elapsed="0.084204">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:51:49.529636" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:51:49.529138" elapsed="0.000531"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:51:49.530150" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:51:49.529839" elapsed="0.000353"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:51:49.530240" elapsed="0.000039"/>
</return>
<msg time="2026-04-08T00:51:49.530410" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:51:49.528748" elapsed="0.001687"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T00:51:49.535000" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T00:51:49.534806" elapsed="0.000220"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:51:49.535191" elapsed="0.000195"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:51:49.535744" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:51:49.535537" elapsed="0.000233"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:49.536226" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:49.535950" elapsed="0.000341"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:51:49.536455" elapsed="0.000198"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:51:49.537013" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:51:49.536805" elapsed="0.000233"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:49.537470" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:49.537220" elapsed="0.000290"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:49.538005" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:49.537665" elapsed="0.000365"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:49.538449" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:49.538213" elapsed="0.000279"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:49.538924" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:49.538639" elapsed="0.000311"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:51:49.545398" elapsed="0.000214"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:51:49.554141" elapsed="0.000312"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:51:49.554997" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:51:49.554614" elapsed="0.000410"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:51:49.556205" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:51:49.555648" elapsed="0.000600"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:51:49.556413" elapsed="0.000033"/>
</return>
<msg time="2026-04-08T00:51:49.556572" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:51:49.555243" elapsed="0.001355"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:51:49.557219" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:51:49.556760" elapsed="0.000488"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:51:49.557874" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:51:49.557409" elapsed="0.000492"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:51:49.558409" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:51:49.566194" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:51:49.558063" elapsed="0.010713">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:49.569039" elapsed="0.000033"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:49.569308" elapsed="0.000031"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:49.569546" elapsed="0.000029"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:49.569775" elapsed="0.000029"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:49.570012" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:49.570257" elapsed="0.000030"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:49.570632" elapsed="0.000028"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:49.570944" elapsed="0.000029"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:49.571231" elapsed="0.000031"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:51:49.570453" elapsed="0.000902"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:51:49.570354" elapsed="0.001040"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:49.571593" elapsed="0.000029"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:51:49.571676" elapsed="0.000022"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:51:49.553618" elapsed="0.018217">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:51:49.571933" elapsed="0.000021"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T00:51:49.543201" elapsed="0.028868">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:49.572410" elapsed="0.000032"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:49.577812" elapsed="0.000026"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:49.578003" elapsed="0.000021"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T00:51:49.578069" elapsed="0.000016"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T00:51:49.534270" elapsed="0.043917">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:51:49.578302" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:51:49.578347" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:51:49.533700" elapsed="0.044670"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T00:51:49.578577" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:51:49.578460" elapsed="0.000162"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:49.578439" elapsed="0.000206"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:51:49.579939" elapsed="0.000212"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:51:49.580643" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:51:49.580332" elapsed="0.000344"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:51:49.581654" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:51:49.581208" elapsed="0.000473"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:51:49.581730" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:51:49.581880" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:51:49.580857" elapsed="0.001048"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:51:49.582457" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:51:49.582065" elapsed="0.000419"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:51:49.582987" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:51:49.582641" elapsed="0.000373"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:51:49.583388" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:51:49.591670" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:51:49.583189" elapsed="0.010193">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:49.593565" elapsed="0.000027"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:49.593739" elapsed="0.000020"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:49.593900" elapsed="0.000020"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:49.594062" elapsed="0.000020"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:49.594247" elapsed="0.000021"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:49.594410" elapsed="0.000019"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:49.594661" elapsed="0.000055"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:49.594872" elapsed="0.000022"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:49.595038" elapsed="0.000020"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:51:49.594536" elapsed="0.000554"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:51:49.594472" elapsed="0.000644"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:49.595270" elapsed="0.000021"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:51:49.595331" elapsed="0.000015"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:51:49.579399" elapsed="0.016038">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:51:49.595549" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:51:49.595593" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:51:49.578794" elapsed="0.016822"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T00:51:49.596269" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T00:51:49.595912" elapsed="0.000423">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T00:51:49.595698" elapsed="0.000699">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T00:51:49.595679" elapsed="0.000749">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T00:51:49.596474" elapsed="0.000018"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:51:49.533141" elapsed="0.063455">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:49.596871" elapsed="0.000028"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:49.597099" elapsed="0.000028"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T00:51:49.597211" elapsed="0.000022"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T00:51:49.530737" elapsed="0.066611">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:49.597580" elapsed="0.000028"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:49.597823" elapsed="0.000027"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:49.598054" elapsed="0.000027"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:49.598299" elapsed="0.000029"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:49.598531" elapsed="0.000028"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:49.598753" elapsed="0.000027"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T00:51:49.598837" elapsed="0.000020"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T00:51:49.527923" elapsed="0.071047">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:51:50.636840" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:51:50.636360" elapsed="0.000514"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:51:50.637383" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:51:50.637048" elapsed="0.000362"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:51:50.637459" elapsed="0.000043"/>
</return>
<msg time="2026-04-08T00:51:50.637637" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:51:50.635934" elapsed="0.001728"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T00:51:50.642550" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T00:51:50.642358" elapsed="0.000219"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:51:50.642732" elapsed="0.000193"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:51:50.643308" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:51:50.643080" elapsed="0.000254"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:50.643790" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:50.643520" elapsed="0.000312"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:51:50.643981" elapsed="0.000197"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:51:50.644542" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:51:50.644333" elapsed="0.000234"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:50.644982" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:50.644738" elapsed="0.000286"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:50.645537" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:50.645191" elapsed="0.000372"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:50.645974" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:50.645736" elapsed="0.000281"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:50.646469" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:50.646182" elapsed="0.000313"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:51:50.652881" elapsed="0.000215"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:51:50.661629" elapsed="0.000212"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:51:50.662409" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:51:50.661997" elapsed="0.000438"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:51:50.663724" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:51:50.663186" elapsed="0.000599"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:51:50.663920" elapsed="0.000033"/>
</return>
<msg time="2026-04-08T00:51:50.664077" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:51:50.662620" elapsed="0.001482"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:51:50.664717" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:51:50.664280" elapsed="0.000464"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:51:50.665410" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:51:50.664965" elapsed="0.000472"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:51:50.665934" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:51:50.675108" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:51:50.665601" elapsed="0.011381">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:50.677186" elapsed="0.000024"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:50.677362" elapsed="0.000021"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:50.677529" elapsed="0.000020"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:50.677696" elapsed="0.000021"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:50.677866" elapsed="0.000021"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:50.678031" elapsed="0.000021"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:50.678323" elapsed="0.000021"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:50.678550" elapsed="0.000021"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:50.678740" elapsed="0.000021"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:51:50.678191" elapsed="0.000629"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:51:50.678101" elapsed="0.000748"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:50.678992" elapsed="0.000021"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:51:50.679052" elapsed="0.000015"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:51:50.661124" elapsed="0.018061">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:51:50.679256" elapsed="0.000016"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T00:51:50.650668" elapsed="0.028687">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:50.679528" elapsed="0.000021"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:50.683728" elapsed="0.000026"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:50.683920" elapsed="0.000021"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T00:51:50.683986" elapsed="0.000015"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T00:51:50.641789" elapsed="0.042301">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:51:50.684258" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:51:50.684302" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:51:50.641221" elapsed="0.043104"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T00:51:50.684529" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:51:50.684413" elapsed="0.000159"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:50.684392" elapsed="0.000203"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:51:50.685905" elapsed="0.000209"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:51:50.686590" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:51:50.686283" elapsed="0.000333"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:51:50.687422" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:51:50.687139" elapsed="0.000310"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:51:50.687496" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:51:50.687643" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:51:50.686799" elapsed="0.000870"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:51:50.688221" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:51:50.687837" elapsed="0.000410"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:51:50.688744" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:51:50.688401" elapsed="0.000369"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:51:50.689124" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:51:50.699056" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:51:50.688927" elapsed="0.011852">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:50.700963" elapsed="0.000023"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:50.701134" elapsed="0.000034"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:50.701316" elapsed="0.000020"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:50.701480" elapsed="0.000020"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:50.701647" elapsed="0.000020"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:50.701806" elapsed="0.000019"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:50.702063" elapsed="0.000020"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:50.702246" elapsed="0.000020"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:50.702408" elapsed="0.000020"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:51:50.701937" elapsed="0.000523"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:51:50.701869" elapsed="0.000617"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:50.702621" elapsed="0.000020"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:51:50.702679" elapsed="0.000015"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:51:50.685363" elapsed="0.017425">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:51:50.702946" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:51:50.702990" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:51:50.684745" elapsed="0.018269"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T00:51:50.703902" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T00:51:50.703333" elapsed="0.000631">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T00:51:50.703098" elapsed="0.000929">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T00:51:50.703078" elapsed="0.000981">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T00:51:50.704106" elapsed="0.000016"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:51:50.640649" elapsed="0.063579">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:50.704408" elapsed="0.000021"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:50.704576" elapsed="0.000020"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T00:51:50.704637" elapsed="0.000015"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T00:51:50.637963" elapsed="0.066773">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:50.704904" elapsed="0.000020"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:50.705079" elapsed="0.000019"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:50.705261" elapsed="0.000021"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:50.705425" elapsed="0.000019"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:50.705589" elapsed="0.000019"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:50.705752" elapsed="0.000019"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T00:51:50.705813" elapsed="0.000015"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T00:51:50.635045" elapsed="0.070866">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:51:51.738064" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:51:51.737390" elapsed="0.000708"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:51:51.738612" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:51:51.738291" elapsed="0.000349"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:51:51.738688" elapsed="0.000041"/>
</return>
<msg time="2026-04-08T00:51:51.738860" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:51:51.736973" elapsed="0.002033"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T00:51:51.743986" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T00:51:51.743763" elapsed="0.000254"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:51:51.744189" elapsed="0.000211"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:51:51.744765" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:51:51.744556" elapsed="0.000235"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:51.745248" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:51.744978" elapsed="0.000312"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:51:51.745437" elapsed="0.000178"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:51:51.745972" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:51:51.745766" elapsed="0.000231"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:51.746423" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:51.746178" elapsed="0.000286"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:51.746952" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:51.746614" elapsed="0.000363"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:51.747403" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:51.747142" elapsed="0.000304"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:51.747873" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:51.747595" elapsed="0.000304"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:51:51.754413" elapsed="0.000214"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:51:51.763122" elapsed="0.000256"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:51:51.763931" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:51:51.763537" elapsed="0.000420"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:51:51.765098" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:51:51.764565" elapsed="0.000574"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:51:51.765292" elapsed="0.000041"/>
</return>
<msg time="2026-04-08T00:51:51.765459" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:51:51.764144" elapsed="0.001340"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:51:51.766085" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:51:51.765644" elapsed="0.000467"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:51:51.766713" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:51:51.766286" elapsed="0.000453"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:51:51.767275" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:51:51.778097" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:51:51.766903" elapsed="0.015151">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:51.782509" elapsed="0.000053"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:51.782898" elapsed="0.000046"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:51.783438" elapsed="0.000052"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:51.783824" elapsed="0.000046"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:51.784232" elapsed="0.000048"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:51.784604" elapsed="0.000045"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:51.785233" elapsed="0.000047"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:51.785743" elapsed="0.000047"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:51.786221" elapsed="0.000052"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:51:51.784915" elapsed="0.001493"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:51:51.784756" elapsed="0.001716"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:51.786794" elapsed="0.000047"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:51:51.786928" elapsed="0.000035"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:51:51.762631" elapsed="0.024630">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:51:51.787429" elapsed="0.000036"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T00:51:51.752228" elapsed="0.035443">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:51.787922" elapsed="0.000021"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:51.792228" elapsed="0.000027"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:51.792421" elapsed="0.000021"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T00:51:51.792486" elapsed="0.000016"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T00:51:51.742890" elapsed="0.049701">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:51:51.792703" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:51:51.792746" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:51:51.742329" elapsed="0.050441"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T00:51:51.792976" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:51:51.792861" elapsed="0.000156"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:51.792840" elapsed="0.000200"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:51:51.794364" elapsed="0.000207"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:51:51.795023" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:51:51.794723" elapsed="0.000325"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:51:51.795916" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:51:51.795653" elapsed="0.000289"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:51:51.795989" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:51:51.796137" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:51:51.795300" elapsed="0.000877"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:51:51.796723" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:51:51.796337" elapsed="0.000412"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:51:51.797265" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:51:51.796906" elapsed="0.000385"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:51:51.797645" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:51:51.807793" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:51:51.797450" elapsed="0.013077">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:51.810936" elapsed="0.000050"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:51.811371" elapsed="0.000049"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:51.811745" elapsed="0.000045"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:51.812106" elapsed="0.000044"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:51.812514" elapsed="0.000044"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:51.812873" elapsed="0.000045"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:51.813480" elapsed="0.000046"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:51.813860" elapsed="0.000044"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:51.814250" elapsed="0.000047"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:51:51.813191" elapsed="0.001181"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:51:51.813012" elapsed="0.001416"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:51.814734" elapsed="0.000044"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:51:51.814863" elapsed="0.000033"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:51:51.793811" elapsed="0.021289">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:51:51.815418" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:51:51.815515" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:51:51.793203" elapsed="0.022364"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T00:51:51.816962" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T00:51:51.816260" elapsed="0.000836">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T00:51:51.815753" elapsed="0.001514">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T00:51:51.815711" elapsed="0.001629">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T00:51:51.817442" elapsed="0.000035"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:51:51.741758" elapsed="0.075983">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:51.818144" elapsed="0.000078"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:51.818552" elapsed="0.000044"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T00:51:51.818690" elapsed="0.000032"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T00:51:51.739342" elapsed="0.079569">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:51.819360" elapsed="0.000051"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:51.819790" elapsed="0.000025"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:51.819967" elapsed="0.000019"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:51.820128" elapsed="0.000020"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:51.820312" elapsed="0.000021"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:51.820475" elapsed="0.000020"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T00:51:51.820536" elapsed="0.000015"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T00:51:51.736134" elapsed="0.084500">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:51:52.852750" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:51:52.852263" elapsed="0.000521"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:51:52.853287" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:51:52.852954" elapsed="0.000359"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:51:52.853361" elapsed="0.000041"/>
</return>
<msg time="2026-04-08T00:51:52.853533" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:51:52.851852" elapsed="0.001707"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T00:51:52.858228" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T00:51:52.858022" elapsed="0.000233"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:51:52.858406" elapsed="0.000192"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:51:52.858973" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:51:52.858762" elapsed="0.000236"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:52.859537" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:52.859199" elapsed="0.000380"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:51:52.859728" elapsed="0.000182"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:51:52.860287" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:51:52.860062" elapsed="0.000251"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:52.860735" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:52.860481" elapsed="0.000295"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:52.861284" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:52.860927" elapsed="0.000383"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:52.861711" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:52.861476" elapsed="0.000278"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:52.862198" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:52.861903" elapsed="0.000322"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:51:52.868815" elapsed="0.000232"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:51:52.878080" elapsed="0.000247"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:51:52.878914" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:51:52.878490" elapsed="0.000451"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:51:52.880182" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:51:52.879608" elapsed="0.000630"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:51:52.880380" elapsed="0.000040"/>
</return>
<msg time="2026-04-08T00:51:52.880552" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:51:52.879188" elapsed="0.001390"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:51:52.881234" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:51:52.880749" elapsed="0.000514"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:51:52.881860" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:51:52.881425" elapsed="0.000462"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:51:52.882452" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:51:52.891890" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:51:52.882069" elapsed="0.011642">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:52.893902" elapsed="0.000024"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:52.894077" elapsed="0.000021"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:52.894263" elapsed="0.000022"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:52.894433" elapsed="0.000021"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:52.894604" elapsed="0.000021"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:52.894845" elapsed="0.000026"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:52.895132" elapsed="0.000020"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:52.895378" elapsed="0.000021"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:52.895574" elapsed="0.000021"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:51:52.895000" elapsed="0.000793"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:51:52.894926" elapsed="0.000936"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:52.896225" elapsed="0.000049"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:51:52.896365" elapsed="0.000035"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:51:52.877523" elapsed="0.019099">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:51:52.896781" elapsed="0.000034"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T00:51:52.866592" elapsed="0.030412">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:52.897429" elapsed="0.000047"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:52.907111" elapsed="0.000085"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:52.907576" elapsed="0.000047"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T00:51:52.907674" elapsed="0.000015"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T00:51:52.857484" elapsed="0.050295">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:51:52.907894" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:51:52.907938" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:51:52.856912" elapsed="0.051049"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T00:51:52.908186" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:51:52.908054" elapsed="0.000176"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:52.908033" elapsed="0.000220"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:51:52.909568" elapsed="0.000209"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:51:52.910250" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:51:52.909929" elapsed="0.000347"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:51:52.911069" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:51:52.910802" elapsed="0.000294"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:51:52.911143" elapsed="0.000045"/>
</return>
<msg time="2026-04-08T00:51:52.911309" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:51:52.910455" elapsed="0.000879"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:51:52.911868" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:51:52.911494" elapsed="0.000400"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:51:52.912411" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:51:52.912049" elapsed="0.000388"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:51:52.912841" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:51:52.923613" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:51:52.912638" elapsed="0.014758">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:52.927808" elapsed="0.000050"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:52.928226" elapsed="0.000048"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:52.928597" elapsed="0.000044"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:52.928963" elapsed="0.000044"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:52.929375" elapsed="0.000048"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:52.929741" elapsed="0.000044"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:52.930340" elapsed="0.000048"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:52.930744" elapsed="0.000046"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:52.931101" elapsed="0.000045"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:51:52.930026" elapsed="0.001221"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:51:52.929880" elapsed="0.001425"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:52.931709" elapsed="0.000049"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:51:52.931847" elapsed="0.000034"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:51:52.909006" elapsed="0.023079">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:51:52.932370" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:51:52.932468" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:51:52.908404" elapsed="0.024117"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T00:51:52.934257" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T00:51:52.933208" elapsed="0.001194">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T00:51:52.932704" elapsed="0.001842">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T00:51:52.932662" elapsed="0.001957">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T00:51:52.934774" elapsed="0.000039"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:51:52.856360" elapsed="0.078649">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:52.935452" elapsed="0.000052"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:52.935837" elapsed="0.000045"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T00:51:52.936003" elapsed="0.000037"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T00:51:52.853860" elapsed="0.082410">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:52.936844" elapsed="0.000051"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:52.937290" elapsed="0.000050"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:52.937721" elapsed="0.000054"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:52.938110" elapsed="0.000093"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:52.938674" elapsed="0.000068"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:52.939245" elapsed="0.000069"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T00:51:52.939450" elapsed="0.000051"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T00:51:52.850990" elapsed="0.088785">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:51:53.971855" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:51:53.971367" elapsed="0.000522"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:51:53.972403" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:51:53.972062" elapsed="0.000368"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:51:53.972479" elapsed="0.000043"/>
</return>
<msg time="2026-04-08T00:51:53.972655" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:51:53.970940" elapsed="0.001740"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T00:51:53.977430" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T00:51:53.977194" elapsed="0.000265"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:51:53.977618" elapsed="0.000204"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:51:53.978266" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:51:53.977979" elapsed="0.000322"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:53.978760" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:53.978495" elapsed="0.000308"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:51:53.978951" elapsed="0.000184"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:51:53.979516" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:51:53.979306" elapsed="0.000235"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:53.979955" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:53.979709" elapsed="0.000286"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:53.980508" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:53.980148" elapsed="0.000385"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:53.980962" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:53.980705" elapsed="0.000301"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:53.981455" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:53.981171" elapsed="0.000311"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:51:53.989989" elapsed="0.000341"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:51:53.999444" elapsed="0.000237"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:51:54.000294" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:51:53.999857" elapsed="0.000465"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:51:54.001535" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:51:54.000963" elapsed="0.000615"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:51:54.001719" elapsed="0.000043"/>
</return>
<msg time="2026-04-08T00:51:54.001894" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:51:54.000540" elapsed="0.001381"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:51:54.002610" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:51:54.002088" elapsed="0.000550"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:51:54.003263" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:51:54.002799" elapsed="0.000500"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:51:54.003841" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:51:54.017563" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:51:54.003477" elapsed="0.018261">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:54.022267" elapsed="0.000058"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:54.022680" elapsed="0.000055"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:54.023144" elapsed="0.000109"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:54.023596" elapsed="0.000046"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:54.023979" elapsed="0.000047"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:54.024380" elapsed="0.000047"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:54.024986" elapsed="0.000045"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:54.025524" elapsed="0.000047"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:54.025957" elapsed="0.000046"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:51:54.024695" elapsed="0.001535"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:51:54.024532" elapsed="0.001774"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:54.026695" elapsed="0.000043"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:51:54.026816" elapsed="0.000033"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:51:53.998892" elapsed="0.028136">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:51:54.027134" elapsed="0.000044"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T00:51:53.987675" elapsed="0.039631">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:54.027633" elapsed="0.000030"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:54.033633" elapsed="0.000039"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:54.033905" elapsed="0.000029"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T00:51:54.033997" elapsed="0.000022"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T00:51:53.976628" elapsed="0.057561">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:51:54.034364" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:51:54.034427" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:51:53.976020" elapsed="0.058442"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T00:51:54.034768" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:51:54.034594" elapsed="0.000234"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:54.034563" elapsed="0.000297"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:51:54.036902" elapsed="0.000332"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:51:54.037901" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:51:54.037456" elapsed="0.000482"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:51:54.039277" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:51:54.038735" elapsed="0.000571"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:51:54.039356" elapsed="0.000033"/>
</return>
<msg time="2026-04-08T00:51:54.039511" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:51:54.038255" elapsed="0.001282"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:51:54.040081" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:51:54.039699" elapsed="0.000409"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:51:54.040649" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:51:54.040282" elapsed="0.000394"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:51:54.041270" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:51:54.050975" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:51:54.040845" elapsed="0.014247">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:54.055400" elapsed="0.000035"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:54.055658" elapsed="0.000032"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:54.055898" elapsed="0.000028"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:54.056131" elapsed="0.000051"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:54.056400" elapsed="0.000029"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:54.056626" elapsed="0.000028"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:54.057083" elapsed="0.000029"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:54.057366" elapsed="0.000031"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:54.057598" elapsed="0.000029"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:51:54.056902" elapsed="0.000771"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:51:54.056794" elapsed="0.000919"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:54.057911" elapsed="0.000029"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:51:54.057996" elapsed="0.000023"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:51:54.036083" elapsed="0.022117">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:51:54.058378" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:51:54.058443" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:51:54.035095" elapsed="0.023380"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T00:51:54.059505" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T00:51:54.058972" elapsed="0.000621">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T00:51:54.058599" elapsed="0.001081">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T00:51:54.058570" elapsed="0.001154">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T00:51:54.059789" elapsed="0.000022"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:51:53.975468" elapsed="0.084460">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:54.060198" elapsed="0.000032"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:54.060437" elapsed="0.000027"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T00:51:54.060522" elapsed="0.000021"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T00:51:53.972978" elapsed="0.087683">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:54.060895" elapsed="0.000029"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:54.061144" elapsed="0.000048"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:54.061401" elapsed="0.000029"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:54.061627" elapsed="0.000028"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:54.061862" elapsed="0.000028"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:54.062089" elapsed="0.000044"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T00:51:54.062257" elapsed="0.000024"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T00:51:53.970043" elapsed="0.092359">Could not parse owner and candidates for device openflow:1</status>
</kw>
<msg time="2026-04-08T00:51:54.062547" level="FAIL">Keyword 'ClusterManagement.Verify_Owner_And_Successors_For_Device' failed after retrying for 30 seconds. The last error was: Could not parse owner and candidates for device openflow:1</msg>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>30s</arg>
<arg>1s</arg>
<arg>ClusterManagement.Verify_Owner_And_Successors_For_Device</arg>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="FAIL" start="2026-04-08T00:51:23.950945" elapsed="30.111732">Keyword 'ClusterManagement.Verify_Owner_And_Successors_For_Device' failed after retrying for 30 seconds. The last error was: Could not parse owner and candidates for device openflow:1</status>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T00:51:54.062789" elapsed="0.000022"/>
</return>
<var>${original_owner}</var>
<var>${original_successor_list}</var>
<arg>openflow:1</arg>
<arg>1</arg>
<doc>Check Entity Owner Status and identify owner and successors for the device ${device}. Request is sent to controller ${controller_index}.</doc>
<status status="FAIL" start="2026-04-08T00:51:23.948885" elapsed="30.114042">Keyword 'ClusterManagement.Verify_Owner_And_Successors_For_Device' failed after retrying for 30 seconds. The last error was: Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Get From List" owner="Collections">
<var>${original_successor}</var>
<arg>${original_successor_list}</arg>
<arg>0</arg>
<doc>Returns the value specified with an ``index`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:54.063186" elapsed="0.000031"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<arg>${original_owner}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:54.063441" elapsed="0.000028"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<arg>${original_successor_list}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:54.063678" elapsed="0.000027"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<arg>${original_successor}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:54.063911" elapsed="0.000026"/>
</kw>
<doc>Check Entity Owner Status and identify owner and successor for first switch s1.</doc>
<status status="FAIL" start="2026-04-08T00:51:23.940802" elapsed="30.123326">Keyword 'ClusterManagement.Verify_Owner_And_Successors_For_Device' failed after retrying for 30 seconds. The last error was: Could not parse owner and candidates for device openflow:1</status>
</test>
<test id="s1-s2-t4" name="Reconnect Extra Switches To Successors And Check OVS Connections" line="39">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:54.065495" level="INFO">${controller_opt} = </msg>
<var>${controller_opt}</var>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:54.065120" elapsed="0.000412"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Catenate" owner="BuiltIn">
<var>${controller_opt}</var>
<arg>${controller_opt}</arg>
<arg>${SPACE}tcp:${ODL_SYSTEM_${index}_IP}:${ODL_OF_PORT}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:54.069090" elapsed="0.000022"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${controller_opt}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:54.069328" elapsed="0.000021"/>
</kw>
<var name="${index}"/>
<status status="NOT RUN" start="2026-04-08T00:51:54.068954" elapsed="0.000426"/>
</iter>
<msg time="2026-04-08T00:51:54.069410" level="FAIL">Variable '@{original_successor_list}' not found.</msg>
<var>${index}</var>
<value>@{original_successor_list}</value>
<status status="FAIL" start="2026-04-08T00:51:54.065600" elapsed="0.003845">Variable '@{original_successor_list}' not found.</status>
</for>
<kw name="Set Controller In OVS Bridge" owner="OVSDB">
<arg>${TOOLS_SYSTEM_IP}</arg>
<arg>s2</arg>
<arg>${controller_opt}</arg>
<doc>Sets controller for the OVS bridge ${bridge} using  and OF version ${ofversion}.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:54.077255" elapsed="0.000032"/>
</kw>
<kw name="Set Controller In OVS Bridge" owner="OVSDB">
<arg>${TOOLS_SYSTEM_IP}</arg>
<arg>s3</arg>
<arg>${controller_opt}</arg>
<doc>Sets controller for the OVS bridge ${bridge} using  and OF version ${ofversion}.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:54.084505" elapsed="0.000027"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<arg>10s</arg>
<arg>1s</arg>
<arg>OVSDB.Check OVS OpenFlow Connections</arg>
<arg>${TOOLS_SYSTEM_IP}</arg>
<arg>7</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:54.084706" elapsed="0.000020"/>
</kw>
<doc>Connect switches s2 and s3 to successor instances.</doc>
<status status="FAIL" start="2026-04-08T00:51:54.064429" elapsed="0.020454">Variable '@{original_successor_list}' not found.</status>
</test>
<test id="s1-s2-t5" name="Check Network Operational Information Before Stop" line="52">
<kw name="Check OpenFlow Network Operational Information For Sample Topology" owner="ClusterOpenFlow">
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-08T00:51:54.092873" level="INFO">${dictionary} = {'openflow:1': '4', 'openflow:2': '5', 'openflow:3': '5'}</msg>
<var>${dictionary}</var>
<arg>openflow:1=4</arg>
<arg>openflow:2=5</arg>
<arg>openflow:3=5</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-08T00:51:54.092447" elapsed="0.000457"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Check_Item_Occurrence_Member_List_Or_All" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:51:54.099241" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:51:54.098819" elapsed="0.000449"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:51:54.099740" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:51:54.099428" elapsed="0.000338"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:51:54.099884" elapsed="0.000041"/>
</return>
<msg time="2026-04-08T00:51:54.100063" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:51:54.098444" elapsed="0.001644"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_From_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:54.105509" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:54.105202" elapsed="0.000339"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:51:54.105587" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:51:54.105740" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:51:54.104843" elapsed="0.000923"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:54.112762" level="INFO">/rests/data/opendaylight-inventory:nodes?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:54.112498" elapsed="0.000312"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:54.113224" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:54.112964" elapsed="0.000305"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:51:54.131505" level="INFO">GET Request : url=http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01ju7g9ih47awu1dako8be5k84o113.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:51:54.133262" level="INFO">GET Response : url=http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Transfer-Encoding': 'chunked'} 
 body={"opendaylight-inventory:nodes":{"node":[{"id":"openflow:3","flow-node-inventory:port-number":52804,"flow-node-inventory:table":[{"id":62,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":28,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":2,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":224,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":181,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":147,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":106,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":61,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":27,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":1,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":223,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":182,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":148,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":105,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":60,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":30,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":0,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"37","active-flows":1,"packets-matched":"32"},"flow":[{"id":"#UF$TABLE*0-6","table_id":0,"priority":0,"cookie_mask":"0","idle-timeout":0,"cookie":"10","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"output-action":{"max-length":65535,"output-node-connector":"CONTROLLER"}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"21","byte-count":"1655","duration":{"second":33,"nanosecond":182000000}},"flags":"SEND_FLOW_REM"}]},{"id":226,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":179,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":149,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":104,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":59,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":29,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":225,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":180,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":150,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":103,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":66,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":32,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":220,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":185,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":151,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":102,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":65,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":31,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":253,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":219,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":186,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":152,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":101,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":64,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":34,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":252,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":222,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":183,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":153,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":100,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":63,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":33,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":251,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":221,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":184,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":154,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":99,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":54,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":20,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":250,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":216,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":189,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":155,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":129,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":114,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":53,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":19,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":249,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":215,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":190,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":156,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":130,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":113,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{... (set the log level to DEBUG or TRACE to see the full content) 
 </msg>
<msg time="2026-04-08T00:51:54.133792" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:51:54.115314" elapsed="0.018543"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:54.113352" elapsed="0.020605"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:54.134447" elapsed="0.000054"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:54.134020" elapsed="0.000579"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:54.113328" elapsed="0.021322"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:54.142834" level="INFO">{"opendaylight-inventory:nodes":{"node":[{"id":"openflow:3","flow-node-inventory:port-number":52804,"flow-node-inventory:table":[{"id":62,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":28,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":2,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":224,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":181,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":147,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":106,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":61,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":27,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":1,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":223,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":182,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":148,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":105,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":60,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":30,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":0,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"37","active-flows":1,"packets-matched":"32"},"flow":[{"id":"#UF$TABLE*0-6","table_id":0,"priority":0,"cookie_mask":"0","idle-timeout":0,"cookie":"10","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"output-action":{"max-length":65535,"output-node-connector":"CONTROLLER"}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"21","byte-count":"1655","duration":{"second":33,"nanosecond":182000000}},"flags":"SEND_FLOW_REM"}]},{"id":226,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":179,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":149,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":104,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":59,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":29,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":225,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":180,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":150,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":103,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":66,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":32,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":220,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":185,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":151,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":102,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":65,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":31,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":253,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":219,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":186,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":152,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":101,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":64,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":34,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":252,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":222,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":183,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":153,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":100,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":63,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":33,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":251,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":221,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":184,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":154,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":99,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":54,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":20,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":250,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":216,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":189,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":155,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":129,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":114,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":53,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":19,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":249,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":215,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":190,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":156,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":130,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":113,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":52,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":22,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":248,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":218,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":187,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":157,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":112,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":51,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":21,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":247,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":217,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":188,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":158,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":128,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":111,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":58,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":24,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":246,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":212,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":193,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":159,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":110,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":57,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":23,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":245,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":211,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":194,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":160,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":109,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":56,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":26,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":244,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":214,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":191,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":161,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":108,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":55,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":25,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":243,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":213,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":192,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":162,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":107,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":77,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":43,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":17,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":239,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":198,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":164,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":138,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":119,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":89,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":78,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":44,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":18,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":240,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":197,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":163,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":137,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":120,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":90,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":75,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":45,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":15,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":241,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":196,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":166,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":136,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":121,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":87,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":76,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":46,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":16,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":242,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":195,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":165,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":135,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":122,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":88,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":81,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":47,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":13,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":235,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":202,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":168,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":134,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":115,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":85,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":82,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":48,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":14,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":236,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":201,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":167,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":133,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":116,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":86,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":79,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":49,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":11,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":237,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":200,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":170,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":132,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":117,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":83,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":80,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":50,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":12,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":238,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":199,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":169,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":131,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":118,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":84,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":69,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":35,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":9,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":231,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":206,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":172,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":146,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":127,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":97,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":70,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":36,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":10,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":232,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":205,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":171,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":145,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":98,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":67,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":37,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":7,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":233,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":204,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":174,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":144,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":95,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":68,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":38,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":8,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":234,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":203,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":173,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":143,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":96,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":73,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":39,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":5,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":227,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":210,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":176,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":142,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":123,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":93,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":74,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":40,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":6,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":228,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":209,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":175,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":141,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":124,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":94,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":71,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":41,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":3,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":229,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":208,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":178,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":140,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":125,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":91,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":72,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":42,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":4,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":230,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":207,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":177,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":139,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":126,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":92,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}}],"opendaylight-group-statistics:group-features":{"max-groups":[4294967040],"group-types-supported":["opendaylight-group-types:group-all","opendaylight-group-types:group-ff","opendaylight-group-types:group-select","opendaylight-group-types:group-indirect"],"group-capabilities-supported":["opendaylight-group-types:chaining","opendaylight-group-types:select-weight","opendaylight-group-types:select-liveness"],"actions":[67076097]},"flow-node-inventory:manufacturer":"Nicira, Inc.","flow-node-inventory:description":"s3","flow-node-inventory:hardware":"Open vSwitch","flow-node-inventory:switch-features":{"max_tables":254,"capabilities":["flow-node-inventory:flow-feature-capability-table-stats","flow-node-inventory:flow-feature-capability-group-stats","flow-node-inventory:flow-feature-capability-queue-stats","flow-node-inventory:flow-feature-capability-flow-stats","flow-node-inventory:flow-feature-capability-port-stats"],"max_buffers":0},"flow-node-inventory:snapshot-gathering-status-start":{"begin":"2026-04-08T00:51:52.646Z"},"flow-node-inventory:software":"2.17.11","node-connector":[{"id":"openflow:3:3","flow-node-inventory:port-number":3,"flow-node-inventory:hardware-address":"e6:d6:06:da:00:6e","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s3-eth3","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"21","received":"22"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":34,"nanosecond":525000000},"bytes":{"transmitted":"1758","received":"1844"},"receive-crc-error":"0"}},{"id":"openflow:3:2","flow-node-inventory:port-number":2,"flow-node-inventory:hardware-address":"8a:ac:a7:67:88:d5","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s3-eth2","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"26","received":"9"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":34,"nanosecond":525000000},"bytes":{"transmitted":"2196","received":"726"},"receive-crc-error":"0"}},{"id":"openflow:3:1","flow-node-inventory:port-number":1,"flow-node-inventory:hardware-address":"86:1f:d7:a8:33:33","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s3-eth1","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"26","received":"9"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":34,"nanosecond":525000000},"bytes":{"transmitted":"2196","received":"726"},"receive-crc-error":"0"}},{"id":"openflow:3:LOCAL","flow-node-inventory:port-number":4294967294,"flow-node-inventory:hardware-address":"12:15:a2:01:a9:49","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s3","flow-node-inventory:current-feature":"","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":0,"flow-node-inventory:state":{"live":false,"blocked":false,"link-down":true},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"PORT-DOWN","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"0","received":"0"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":34,"nanosecond":512000000},"bytes":{"transmitted":"0","received":"0"},"receive-crc-error":"0"}}],"flow-node-inventory:ip-address":"10.30.170.192","flow-node-inventory:serial-number":"None","flow-node-inventory:snapshot-gathering-status-end":{"succeeded":true,"end":"2026-04-08T00:51:52.664Z"}},{"id":"openflow:1","flow-node-inventory:port-number":52792,"flow-node-inventory:table":[{"id":62,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":28,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":2,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":224,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":181,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":147,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":106,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":61,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":27,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":1,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":223,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":182,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":148,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":105,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":60,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":30,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":0,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"39","active-flows":1,"packets-matched":"39"},"flow":[{"id":"#UF$TABLE*0-4","table_id":0,"priority":0,"cookie_mask":"0","idle-timeout":0,"cookie":"10","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"output-action":{"max-length":65535,"output-node-connector":"CONTROLLER"}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"28","byte-count":"2280","duration":{"second":33,"nanosecond":197000000}},"flags":"SEND_FLOW_REM"}]},{"id":226,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":179,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":149,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":104,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":59,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":29,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":225,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":180,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":150,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":103,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":66,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":32,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":220,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":185,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":151,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":102,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":65,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":31,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":253,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":219,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":186,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":152,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":101,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":64,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":34,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":252,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":222,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":183,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":153,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":100,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":63,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":33,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":251,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":221,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":184,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":154,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":99,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":54,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":20,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":250,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":216,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":189,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":155,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":129,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":114,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":53,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":19,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":249,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":215,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":190,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":156,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":130,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":113,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":52,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":22,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":248,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":218,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":187,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":157,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":112,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":51,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":21,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":247,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":217,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":188,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":158,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":128,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":111,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":58,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":24,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":246,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":212,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":193,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":159,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":110,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":57,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":23,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":245,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":211,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":194,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":160,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":109,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":56,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":26,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":244,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":214,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":191,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":161,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":108,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":55,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":25,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":243,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":213,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":192,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":162,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":107,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":77,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":43,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":17,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":239,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":198,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":164,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":138,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":119,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":89,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":78,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":44,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":18,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":240,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":197,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":163,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":137,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":120,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":90,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":75,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":45,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":15,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":241,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":196,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":166,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":136,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":121,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":87,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":76,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":46,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":16,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":242,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":195,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":165,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":135,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":122,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":88,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":81,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":47,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":13,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":235,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":202,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":168,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":134,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":115,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":85,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":82,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":48,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":14,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":236,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":201,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":167,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":133,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":116,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":86,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":79,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":49,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":11,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":237,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":200,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":170,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":132,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":117,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":83,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":80,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":50,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":12,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":238,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":199,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":169,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":131,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":118,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":84,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":69,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":35,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":9,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":231,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":206,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":172,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":146,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":127,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":97,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":70,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":36,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":10,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":232,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":205,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":171,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":145,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":98,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":67,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":37,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":7,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":233,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":204,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":174,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":144,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":95,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":68,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":38,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":8,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":234,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":203,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":173,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":143,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":96,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":73,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":39,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":5,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":227,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":210,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":176,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":142,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":123,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":93,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":74,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":40,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":6,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":228,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":209,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":175,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":141,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":124,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":94,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":71,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":41,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":3,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":229,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":208,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":178,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":140,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":125,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":91,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":72,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":42,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":4,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":230,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":207,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":177,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":139,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":126,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":92,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}}],"opendaylight-group-statistics:group-features":{"max-groups":[4294967040],"group-types-supported":["opendaylight-group-types:group-all","opendaylight-group-types:group-ff","opendaylight-group-types:group-select","opendaylight-group-types:group-indirect"],"group-capabilities-supported":["opendaylight-group-types:chaining","opendaylight-group-types:select-weight","opendaylight-group-types:select-liveness"],"actions":[67076097]},"flow-node-inventory:manufacturer":"Nicira, Inc.","flow-node-inventory:description":"s1","flow-node-inventory:hardware":"Open vSwitch","flow-node-inventory:switch-features":{"max_tables":254,"capabilities":["flow-node-inventory:flow-feature-capability-table-stats","flow-node-inventory:flow-feature-capability-group-stats","flow-node-inventory:flow-feature-capability-queue-stats","flow-node-inventory:flow-feature-capability-flow-stats","flow-node-inventory:flow-feature-capability-port-stats"],"max_buffers":0},"flow-node-inventory:snapshot-gathering-status-start":{"begin":"2026-04-08T00:51:52.547Z"},"flow-node-inventory:software":"2.17.11","node-connector":[{"id":"openflow:1:1","flow-node-inventory:port-number":1,"flow-node-inventory:hardware-address":"22:6b:5b:43:c9:13","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s1-eth1","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"23","received":"21"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":34,"nanosecond":439000000},"bytes":{"transmitted":"1934","received":"1758"},"receive-crc-error":"0"}},{"id":"openflow:1:LOCAL","flow-node-inventory:port-number":4294967294,"flow-node-inventory:hardware-address":"7e:2a:b5:f7:38:4d","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s1","flow-node-inventory:current-feature":"","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":0,"flow-node-inventory:state":{"live":false,"blocked":false,"link-down":true},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"PORT-DOWN","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"0","received":"0"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":34,"nanosecond":428000000},"bytes":{"transmitted":"0","received":"0"},"receive-crc-error":"0"}},{"id":"openflow:1:2","flow-node-inventory:port-number":2,"flow-node-inventory:hardware-address":"0a:0f:35:ec:0f:11","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s1-eth2","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"22","received":"21"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":34,"nanosecond":439000000},"bytes":{"transmitted":"1844","received":"1758"},"receive-crc-error":"0"}}],"flow-node-inventory:ip-address":"10.30.170.192","flow-node-inventory:serial-number":"None","flow-node-inventory:snapshot-gathering-status-end":{"succeeded":true,"end":"2026-04-08T00:51:52.565Z"}},{"id":"openflow:2","flow-node-inventory:port-number":52796,"flow-node-inventory:table":[{"id":62,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":28,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":2,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":224,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":181,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":147,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":106,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":61,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":27,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":1,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":223,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":182,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":148,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":105,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":60,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":30,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":0,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"37","active-flows":1,"packets-matched":"36"},"flow":[{"id":"#UF$TABLE*0-5","table_id":0,"priority":0,"cookie_mask":"0","idle-timeout":0,"cookie":"10","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"output-action":{"max-length":65535,"output-node-connector":"CONTROLLER"}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"25","byte-count":"1975","duration":{"second":33,"nanosecond":189000000}},"flags":"SEND_FLOW_REM"}]},{"id":226,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":179,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":149,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":104,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":59,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":29,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":225,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":180,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":150,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":103,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":66,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":32,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":220,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":185,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":151,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":102,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":65,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":31,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":253,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":219,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":186,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":152,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":101,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":64,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":34,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":252,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":222,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":183,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":153,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":100,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":63,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":33,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":251,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":221,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":184,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":154,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":99,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":54,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":20,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":250,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":216,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":189,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":155,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":129,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":114,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":53,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":19,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":249,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":215,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":190,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":156,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":130,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":113,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":52,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":22,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":248,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":218,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":187,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":157,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":112,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":51,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":21,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":247,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":217,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":188,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":158,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":128,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":111,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":58,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":24,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":246,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":212,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":193,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":159,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":110,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":57,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":23,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":245,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":211,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":194,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":160,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":109,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":56,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":26,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":244,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":214,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":191,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":161,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":108,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":55,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":25,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":243,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":213,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":192,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":162,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":107,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":77,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":43,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":17,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":239,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":198,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":164,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":138,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":119,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":89,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":78,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":44,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":18,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":240,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":197,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":163,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":137,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":120,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":90,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":75,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":45,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":15,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":241,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":196,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":166,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":136,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":121,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":87,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":76,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":46,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":16,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":242,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":195,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":165,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":135,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":122,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":88,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":81,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":47,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":13,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":235,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":202,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":168,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":134,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":115,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":85,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":82,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":48,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":14,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":236,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":201,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":167,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":133,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":116,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":86,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":79,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":49,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":11,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":237,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":200,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":170,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":132,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":117,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":83,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":80,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":50,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":12,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":238,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":199,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":169,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":131,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":118,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":84,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":69,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":35,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":9,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":231,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":206,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":172,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":146,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":127,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":97,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":70,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":36,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":10,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":232,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":205,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":171,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":145,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":98,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":67,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":37,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":7,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":233,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":204,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":174,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":144,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":95,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":68,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":38,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":8,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":234,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":203,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":173,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":143,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":96,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":73,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":39,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":5,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":227,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":210,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":176,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":142,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":123,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":93,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":74,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":40,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":6,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":228,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":209,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":175,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":141,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":124,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":94,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":71,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":41,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":3,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":229,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":208,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":178,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":140,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":125,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":91,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":72,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":42,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":4,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":230,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":207,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":177,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":139,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":126,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":92,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}}],"opendaylight-group-statistics:group-features":{"max-groups":[4294967040],"group-types-supported":["opendaylight-group-types:group-all","opendaylight-group-types:group-ff","opendaylight-group-types:group-select","opendaylight-group-types:group-indirect"],"group-capabilities-supported":["opendaylight-group-types:chaining","opendaylight-group-types:select-weight","opendaylight-group-types:select-liveness"],"actions":[67076097]},"flow-node-inventory:manufacturer":"Nicira, Inc.","flow-node-inventory:description":"s2","flow-node-inventory:hardware":"Open vSwitch","flow-node-inventory:switch-features":{"max_tables":254,"capabilities":["flow-node-inventory:flow-feature-capability-table-stats","flow-node-inventory:flow-feature-capability-group-stats","flow-node-inventory:flow-feature-capability-queue-stats","flow-node-inventory:flow-feature-capability-flow-stats","flow-node-inventory:flow-feature-capability-port-stats"],"max_buffers":0},"flow-node-inventory:snapshot-gathering-status-start":{"begin":"2026-04-08T00:51:52.546Z"},"flow-node-inventory:software":"2.17.11","node-connector":[{"id":"openflow:2:3","flow-node-inventory:port-number":3,"flow-node-inventory:hardware-address":"72:dd:8c:02:0b:4b","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s2-eth3","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"21","received":"23"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":34,"nanosecond":403000000},"bytes":{"transmitted":"1758","received":"1934"},"receive-crc-error":"0"}},{"id":"openflow:2:LOCAL","flow-node-inventory:port-number":4294967294,"flow-node-inventory:hardware-address":"5a:1e:a3:85:42:48","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s2","flow-node-inventory:current-feature":"","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":0,"flow-node-inventory:state":{"live":false,"blocked":false,"link-down":true},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"PORT-DOWN","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"0","received":"0"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":34,"nanosecond":366000000},"bytes":{"transmitted":"0","received":"0"},"receive-crc-error":"0"}},{"id":"openflow:2:2","flow-node-inventory:port-number":2,"flow-node-inventory:hardware-address":"c6:ba:d5:44:ef:8d","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s2-eth2","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"26","received":"9"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":34,"nanosecond":406000000},"bytes":{"transmitted":"2196","received":"726"},"receive-crc-error":"0"}},{"id":"openflow:2:1","flow-node-inventory:port-number":1,"flow-node-inventory:hardware-address":"b6:66:26:1b:66:76","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s2-eth1","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"26","received":"9"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":34,"nanosecond":397000000},"bytes":{"transmitted":"2196","received":"726"},"receive-crc-error":"0"}}],"flow-node-inventory:ip-address":"10.30.170.192","flow-node-inventory:serial-number":"None","flow-node-inventory:snapshot-gathering-status-end":{"succeeded":true,"end":"2026-04-08T00:51:52.564Z"}}]}}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:54.137001" elapsed="0.006995"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:54.136500" elapsed="0.007535"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:54.136456" elapsed="0.007605"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:54.146568" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:54.144368" elapsed="0.002246"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:54.144119" elapsed="0.002529"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:54.144102" elapsed="0.002570"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:54.147277" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:54.146846" elapsed="0.000458"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:54.147617" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:54.147375" elapsed="0.000304"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:54.148230" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:54.147868" elapsed="0.000388"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:54.147704" elapsed="0.000588"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:54.147356" elapsed="0.000958"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:54.148842" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:54.148475" elapsed="0.000393"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:54.149190" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:54.148938" elapsed="0.000311"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:54.149731" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:54.149433" elapsed="0.000323"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:54.149273" elapsed="0.000518"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:54.148920" elapsed="0.000892"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:51:54.149966" elapsed="0.000393"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:51:54.150852" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:54.150526" elapsed="0.000357"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:51:54.151048" elapsed="0.002447"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:51:54.135505" elapsed="0.018055"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-08T00:51:54.153747" elapsed="0.000032"/>
</return>
<status status="PASS" start="2026-04-08T00:51:54.153631" elapsed="0.000184"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:54.153612" elapsed="0.000228"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:54.153990" elapsed="0.000022"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-08T00:51:54.154086" elapsed="0.000016"/>
</return>
<msg time="2026-04-08T00:51:54.156706" level="INFO">${response_text} = {"opendaylight-inventory:nodes":{"node":[{"id":"openflow:3","flow-node-inventory:port-number":52804,"flow-node-inventory:table":[{"id":62,"opendaylight-flow-table-statistics:flow-table-statistics":{"p...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${access}</arg>
<arg>session=${session}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:51:54.106131" elapsed="0.050605"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:51:54.156788" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:51:54.156945" level="INFO">${data} = {"opendaylight-inventory:nodes":{"node":[{"id":"openflow:3","flow-node-inventory:port-number":52804,"flow-node-inventory:table":[{"id":62,"opendaylight-flow-table-statistics:flow-table-statistics":{"p...</msg>
<var>${data}</var>
<arg>uri=${uri}</arg>
<arg>member_index=${index}</arg>
<doc>Send a GET with the supplied uri to member ${member_index}.</doc>
<status status="PASS" start="2026-04-08T00:51:54.104355" elapsed="0.052616"/>
</kw>
<kw name="Check Item Occurrence" owner="Utils">
<for flavor="IN">
<iter>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T00:51:54.158245" level="INFO">Item found from container 4 times.</msg>
<arg>${string}</arg>
<arg>${item}</arg>
<arg>${dictionary_item_occurrence}[${item}]</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="PASS" start="2026-04-08T00:51:54.157786" elapsed="0.000860"/>
</kw>
<var name="${item}">openflow:1</var>
<status status="PASS" start="2026-04-08T00:51:54.157629" elapsed="0.001057"/>
</iter>
<iter>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T00:51:54.159348" level="INFO">Item found from container 5 times.</msg>
<arg>${string}</arg>
<arg>${item}</arg>
<arg>${dictionary_item_occurrence}[${item}]</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="PASS" start="2026-04-08T00:51:54.158923" elapsed="0.000730"/>
</kw>
<var name="${item}">openflow:2</var>
<status status="PASS" start="2026-04-08T00:51:54.158769" elapsed="0.000986"/>
</iter>
<iter>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T00:51:54.160435" level="INFO">Item found from container 5 times.</msg>
<arg>${string}</arg>
<arg>${item}</arg>
<arg>${dictionary_item_occurrence}[${item}]</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="PASS" start="2026-04-08T00:51:54.160009" elapsed="0.000739"/>
</kw>
<var name="${item}">openflow:3</var>
<status status="PASS" start="2026-04-08T00:51:54.159849" elapsed="0.000939"/>
</iter>
<var>${item}</var>
<value>@{dictionary_item_occurrence}</value>
<status status="PASS" start="2026-04-08T00:51:54.157489" elapsed="0.003329"/>
</for>
<arg>${data}</arg>
<arg>${dictionary}</arg>
<doc>Check string for occurrences of items expressed in a list of dictionaries {item=occurrences}. 0 occurences means item is not present.</doc>
<status status="PASS" start="2026-04-08T00:51:54.157222" elapsed="0.003651"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T00:51:54.100305" elapsed="0.060602"/>
</iter>
<iter>
<kw name="Get_From_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:54.166390" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:54.166070" elapsed="0.000348"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:51:54.166463" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:51:54.166612" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:51:54.165714" elapsed="0.000923"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:54.172896" level="INFO">/rests/data/opendaylight-inventory:nodes?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:54.172642" elapsed="0.000302"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:54.173361" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:54.173097" elapsed="0.000309"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:51:54.212356" level="INFO">GET Request : url=http://10.30.170.131:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node012m0dyuink19r12kj250j53usg1.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:51:54.214093" level="INFO">GET Response : url=http://10.30.170.131:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Transfer-Encoding': 'chunked'} 
 body={"opendaylight-inventory:nodes":{"node":[{"id":"openflow:3","flow-node-inventory:manufacturer":"Nicira, Inc.","flow-node-inventory:description":"s3","flow-node-inventory:hardware":"Open vSwitch","flow-node-inventory:software":"2.17.11","flow-node-inventory:ip-address":"10.30.170.192","flow-node-inventory:serial-number":"None","flow-node-inventory:port-number":52804,"flow-node-inventory:table":[{"id":62,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":28,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":2,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":224,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":181,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":147,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":106,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":61,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":27,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":1,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":223,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":182,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":148,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":105,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":60,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":30,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":0,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"37","active-flows":1,"packets-matched":"32"},"flow":[{"id":"#UF$TABLE*0-6","table_id":0,"priority":0,"cookie_mask":"0","idle-timeout":0,"cookie":"10","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"output-action":{"max-length":65535,"output-node-connector":"CONTROLLER"}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"21","byte-count":"1655","duration":{"second":33,"nanosecond":182000000}},"flags":"SEND_FLOW_REM"}]},{"id":226,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":179,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":149,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":104,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":59,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":29,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":225,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":180,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":150,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":103,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":66,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":32,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":220,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":185,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":151,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":102,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":65,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":31,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":253,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":219,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":186,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":152,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":101,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":64,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":34,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":252,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":222,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":183,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":153,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":100,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":63,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":33,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":251,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":221,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":184,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":154,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":99,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":54,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":20,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":250,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":216,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":189,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":155,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":129,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":114,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":53,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":19,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":249,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":215,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":190,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":156,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"i... (set the log level to DEBUG or TRACE to see the full content) 
 </msg>
<msg time="2026-04-08T00:51:54.214647" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:51:54.175445" elapsed="0.039267"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:54.173475" elapsed="0.041363"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:54.215342" elapsed="0.000055"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:54.214925" elapsed="0.000568"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:54.173456" elapsed="0.042087"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:54.223362" level="INFO">{"opendaylight-inventory:nodes":{"node":[{"id":"openflow:3","flow-node-inventory:manufacturer":"Nicira, Inc.","flow-node-inventory:description":"s3","flow-node-inventory:hardware":"Open vSwitch","flow-node-inventory:software":"2.17.11","flow-node-inventory:ip-address":"10.30.170.192","flow-node-inventory:serial-number":"None","flow-node-inventory:port-number":52804,"flow-node-inventory:table":[{"id":62,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":28,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":2,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":224,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":181,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":147,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":106,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":61,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":27,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":1,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":223,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":182,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":148,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":105,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":60,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":30,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":0,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"37","active-flows":1,"packets-matched":"32"},"flow":[{"id":"#UF$TABLE*0-6","table_id":0,"priority":0,"cookie_mask":"0","idle-timeout":0,"cookie":"10","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"output-action":{"max-length":65535,"output-node-connector":"CONTROLLER"}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"21","byte-count":"1655","duration":{"second":33,"nanosecond":182000000}},"flags":"SEND_FLOW_REM"}]},{"id":226,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":179,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":149,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":104,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":59,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":29,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":225,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":180,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":150,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":103,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":66,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":32,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":220,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":185,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":151,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":102,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":65,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":31,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":253,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":219,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":186,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":152,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":101,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":64,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":34,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":252,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":222,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":183,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":153,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":100,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":63,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":33,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":251,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":221,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":184,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":154,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":99,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":54,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":20,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":250,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":216,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":189,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":155,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":129,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":114,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":53,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":19,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":249,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":215,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":190,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":156,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":130,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":113,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":52,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":22,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":248,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":218,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":187,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":157,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":112,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":51,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":21,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":247,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":217,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":188,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":158,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":128,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":111,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":58,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":24,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":246,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":212,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":193,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":159,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":110,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":57,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":23,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":245,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":211,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":194,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":160,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":109,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":56,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":26,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":244,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":214,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":191,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":161,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":108,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":55,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":25,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":243,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":213,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":192,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":162,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":107,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":77,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":43,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":17,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":239,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":198,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":164,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":138,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":119,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":89,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":78,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":44,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":18,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":240,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":197,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":163,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":137,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":120,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":90,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":75,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":45,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":15,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":241,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":196,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":166,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":136,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":121,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":87,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":76,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":46,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":16,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":242,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":195,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":165,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":135,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":122,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":88,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":81,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":47,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":13,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":235,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":202,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":168,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":134,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":115,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":85,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":82,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":48,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":14,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":236,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":201,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":167,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":133,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":116,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":86,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":79,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":49,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":11,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":237,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":200,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":170,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":132,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":117,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":83,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":80,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":50,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":12,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":238,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":199,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":169,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":131,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":118,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":84,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":69,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":35,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":9,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":231,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":206,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":172,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":146,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":127,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":97,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":70,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":36,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":10,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":232,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":205,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":171,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":145,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":98,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":67,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":37,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":7,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":233,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":204,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":174,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":144,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":95,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":68,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":38,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":8,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":234,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":203,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":173,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":143,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":96,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":73,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":39,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":5,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":227,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":210,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":176,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":142,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":123,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":93,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":74,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":40,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":6,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":228,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":209,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":175,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":141,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":124,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":94,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":71,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":41,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":3,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":229,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":208,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":178,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":140,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":125,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":91,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":72,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":42,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":4,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":230,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":207,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":177,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":139,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":126,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":92,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}}],"opendaylight-group-statistics:group-features":{"max-groups":[4294967040],"group-types-supported":["opendaylight-group-types:group-all","opendaylight-group-types:group-ff","opendaylight-group-types:group-select","opendaylight-group-types:group-indirect"],"group-capabilities-supported":["opendaylight-group-types:chaining","opendaylight-group-types:select-weight","opendaylight-group-types:select-liveness"],"actions":[67076097]},"flow-node-inventory:switch-features":{"max_tables":254,"capabilities":["flow-node-inventory:flow-feature-capability-table-stats","flow-node-inventory:flow-feature-capability-group-stats","flow-node-inventory:flow-feature-capability-queue-stats","flow-node-inventory:flow-feature-capability-flow-stats","flow-node-inventory:flow-feature-capability-port-stats"],"max_buffers":0},"flow-node-inventory:snapshot-gathering-status-start":{"begin":"2026-04-08T00:51:52.646Z"},"node-connector":[{"id":"openflow:3:3","flow-node-inventory:port-number":3,"flow-node-inventory:hardware-address":"e6:d6:06:da:00:6e","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s3-eth3","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"21","received":"22"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":34,"nanosecond":525000000},"bytes":{"transmitted":"1758","received":"1844"},"receive-crc-error":"0"}},{"id":"openflow:3:2","flow-node-inventory:port-number":2,"flow-node-inventory:hardware-address":"8a:ac:a7:67:88:d5","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s3-eth2","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"26","received":"9"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":34,"nanosecond":525000000},"bytes":{"transmitted":"2196","received":"726"},"receive-crc-error":"0"}},{"id":"openflow:3:1","flow-node-inventory:port-number":1,"flow-node-inventory:hardware-address":"86:1f:d7:a8:33:33","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s3-eth1","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"26","received":"9"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":34,"nanosecond":525000000},"bytes":{"transmitted":"2196","received":"726"},"receive-crc-error":"0"}},{"id":"openflow:3:LOCAL","flow-node-inventory:port-number":4294967294,"flow-node-inventory:hardware-address":"12:15:a2:01:a9:49","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s3","flow-node-inventory:current-feature":"","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":0,"flow-node-inventory:state":{"live":false,"blocked":false,"link-down":true},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"PORT-DOWN","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"0","received":"0"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":34,"nanosecond":512000000},"bytes":{"transmitted":"0","received":"0"},"receive-crc-error":"0"}}],"flow-node-inventory:snapshot-gathering-status-end":{"succeeded":true,"end":"2026-04-08T00:51:52.664Z"}},{"id":"openflow:1","flow-node-inventory:manufacturer":"Nicira, Inc.","flow-node-inventory:description":"s1","flow-node-inventory:hardware":"Open vSwitch","flow-node-inventory:software":"2.17.11","flow-node-inventory:ip-address":"10.30.170.192","flow-node-inventory:serial-number":"None","flow-node-inventory:port-number":52792,"flow-node-inventory:table":[{"id":62,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":28,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":2,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":224,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":181,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":147,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":106,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":61,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":27,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":1,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":223,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":182,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":148,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":105,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":60,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":30,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":0,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"39","active-flows":1,"packets-matched":"39"},"flow":[{"id":"#UF$TABLE*0-4","table_id":0,"priority":0,"cookie_mask":"0","idle-timeout":0,"cookie":"10","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"output-action":{"max-length":65535,"output-node-connector":"CONTROLLER"}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"28","byte-count":"2280","duration":{"second":33,"nanosecond":197000000}},"flags":"SEND_FLOW_REM"}]},{"id":226,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":179,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":149,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":104,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":59,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":29,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":225,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":180,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":150,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":103,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":66,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":32,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":220,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":185,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":151,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":102,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":65,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":31,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":253,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":219,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":186,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":152,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":101,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":64,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":34,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":252,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":222,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":183,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":153,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":100,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":63,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":33,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":251,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":221,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":184,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":154,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":99,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":54,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":20,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":250,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":216,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":189,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":155,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":129,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":114,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":53,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":19,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":249,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":215,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":190,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":156,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":130,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":113,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":52,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":22,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":248,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":218,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":187,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":157,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":112,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":51,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":21,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":247,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":217,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":188,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":158,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":128,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":111,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":58,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":24,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":246,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":212,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":193,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":159,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":110,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":57,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":23,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":245,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":211,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":194,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":160,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":109,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":56,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":26,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":244,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":214,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":191,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":161,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":108,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":55,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":25,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":243,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":213,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":192,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":162,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":107,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":77,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":43,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":17,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":239,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":198,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":164,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":138,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":119,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":89,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":78,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":44,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":18,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":240,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":197,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":163,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":137,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":120,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":90,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":75,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":45,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":15,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":241,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":196,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":166,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":136,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":121,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":87,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":76,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":46,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":16,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":242,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":195,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":165,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":135,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":122,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":88,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":81,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":47,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":13,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":235,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":202,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":168,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":134,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":115,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":85,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":82,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":48,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":14,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":236,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":201,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":167,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":133,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":116,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":86,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":79,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":49,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":11,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":237,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":200,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":170,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":132,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":117,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":83,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":80,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":50,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":12,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":238,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":199,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":169,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":131,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":118,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":84,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":69,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":35,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":9,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":231,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":206,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":172,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":146,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":127,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":97,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":70,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":36,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":10,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":232,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":205,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":171,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":145,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":98,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":67,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":37,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":7,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":233,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":204,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":174,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":144,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":95,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":68,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":38,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":8,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":234,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":203,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":173,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":143,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":96,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":73,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":39,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":5,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":227,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":210,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":176,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":142,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":123,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":93,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":74,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":40,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":6,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":228,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":209,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":175,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":141,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":124,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":94,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":71,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":41,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":3,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":229,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":208,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":178,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":140,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":125,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":91,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":72,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":42,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":4,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":230,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":207,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":177,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":139,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":126,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":92,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}}],"opendaylight-group-statistics:group-features":{"max-groups":[4294967040],"group-types-supported":["opendaylight-group-types:group-all","opendaylight-group-types:group-ff","opendaylight-group-types:group-select","opendaylight-group-types:group-indirect"],"group-capabilities-supported":["opendaylight-group-types:chaining","opendaylight-group-types:select-weight","opendaylight-group-types:select-liveness"],"actions":[67076097]},"flow-node-inventory:switch-features":{"max_tables":254,"capabilities":["flow-node-inventory:flow-feature-capability-table-stats","flow-node-inventory:flow-feature-capability-group-stats","flow-node-inventory:flow-feature-capability-queue-stats","flow-node-inventory:flow-feature-capability-flow-stats","flow-node-inventory:flow-feature-capability-port-stats"],"max_buffers":0},"flow-node-inventory:snapshot-gathering-status-start":{"begin":"2026-04-08T00:51:52.547Z"},"node-connector":[{"id":"openflow:1:1","flow-node-inventory:port-number":1,"flow-node-inventory:hardware-address":"22:6b:5b:43:c9:13","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s1-eth1","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"23","received":"21"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":34,"nanosecond":439000000},"bytes":{"transmitted":"1934","received":"1758"},"receive-crc-error":"0"}},{"id":"openflow:1:LOCAL","flow-node-inventory:port-number":4294967294,"flow-node-inventory:hardware-address":"7e:2a:b5:f7:38:4d","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s1","flow-node-inventory:current-feature":"","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":0,"flow-node-inventory:state":{"live":false,"blocked":false,"link-down":true},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"PORT-DOWN","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"0","received":"0"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":34,"nanosecond":428000000},"bytes":{"transmitted":"0","received":"0"},"receive-crc-error":"0"}},{"id":"openflow:1:2","flow-node-inventory:port-number":2,"flow-node-inventory:hardware-address":"0a:0f:35:ec:0f:11","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s1-eth2","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"22","received":"21"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":34,"nanosecond":439000000},"bytes":{"transmitted":"1844","received":"1758"},"receive-crc-error":"0"}}],"flow-node-inventory:snapshot-gathering-status-end":{"succeeded":true,"end":"2026-04-08T00:51:52.565Z"}},{"id":"openflow:2","flow-node-inventory:manufacturer":"Nicira, Inc.","flow-node-inventory:description":"s2","flow-node-inventory:hardware":"Open vSwitch","flow-node-inventory:software":"2.17.11","flow-node-inventory:ip-address":"10.30.170.192","flow-node-inventory:serial-number":"None","flow-node-inventory:port-number":52796,"flow-node-inventory:table":[{"id":62,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":28,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":2,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":224,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":181,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":147,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":106,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":61,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":27,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":1,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":223,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":182,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":148,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":105,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":60,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":30,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":0,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"37","active-flows":1,"packets-matched":"36"},"flow":[{"id":"#UF$TABLE*0-5","table_id":0,"priority":0,"cookie_mask":"0","idle-timeout":0,"cookie":"10","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"output-action":{"max-length":65535,"output-node-connector":"CONTROLLER"}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"25","byte-count":"1975","duration":{"second":33,"nanosecond":189000000}},"flags":"SEND_FLOW_REM"}]},{"id":226,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":179,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":149,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":104,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":59,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":29,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":225,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":180,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":150,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":103,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":66,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":32,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":220,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":185,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":151,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":102,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":65,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":31,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":253,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":219,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":186,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":152,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":101,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":64,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":34,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":252,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":222,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":183,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":153,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":100,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":63,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":33,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":251,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":221,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":184,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":154,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":99,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":54,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":20,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":250,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":216,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":189,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":155,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":129,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":114,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":53,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":19,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":249,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":215,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":190,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":156,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":130,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":113,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":52,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":22,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":248,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":218,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":187,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":157,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":112,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":51,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":21,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":247,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":217,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":188,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":158,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":128,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":111,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":58,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":24,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":246,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":212,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":193,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":159,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":110,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":57,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":23,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":245,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":211,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":194,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":160,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":109,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":56,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":26,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":244,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":214,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":191,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":161,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":108,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":55,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":25,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":243,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":213,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":192,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":162,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":107,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":77,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":43,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":17,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":239,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":198,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":164,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":138,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":119,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":89,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":78,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":44,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":18,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":240,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":197,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":163,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":137,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":120,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":90,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":75,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":45,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":15,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":241,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":196,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":166,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":136,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":121,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":87,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":76,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":46,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":16,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":242,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":195,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":165,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":135,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":122,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":88,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":81,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":47,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":13,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":235,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":202,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":168,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":134,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":115,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":85,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":82,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":48,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":14,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":236,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":201,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":167,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":133,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":116,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":86,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":79,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":49,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":11,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":237,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":200,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":170,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":132,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":117,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":83,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":80,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":50,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":12,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":238,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":199,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":169,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":131,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":118,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":84,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":69,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":35,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":9,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":231,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":206,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":172,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":146,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":127,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":97,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":70,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":36,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":10,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":232,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":205,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":171,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":145,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":98,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":67,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":37,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":7,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":233,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":204,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":174,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":144,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":95,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":68,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":38,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":8,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":234,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":203,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":173,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":143,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":96,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":73,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":39,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":5,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":227,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":210,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":176,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":142,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":123,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":93,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":74,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":40,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":6,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":228,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":209,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":175,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":141,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":124,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":94,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":71,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":41,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":3,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":229,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":208,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":178,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":140,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":125,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":91,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":72,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":42,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":4,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":230,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":207,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":177,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":139,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":126,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":92,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}}],"opendaylight-group-statistics:group-features":{"max-groups":[4294967040],"group-types-supported":["opendaylight-group-types:group-all","opendaylight-group-types:group-ff","opendaylight-group-types:group-select","opendaylight-group-types:group-indirect"],"group-capabilities-supported":["opendaylight-group-types:chaining","opendaylight-group-types:select-weight","opendaylight-group-types:select-liveness"],"actions":[67076097]},"flow-node-inventory:switch-features":{"max_tables":254,"capabilities":["flow-node-inventory:flow-feature-capability-table-stats","flow-node-inventory:flow-feature-capability-group-stats","flow-node-inventory:flow-feature-capability-queue-stats","flow-node-inventory:flow-feature-capability-flow-stats","flow-node-inventory:flow-feature-capability-port-stats"],"max_buffers":0},"flow-node-inventory:snapshot-gathering-status-start":{"begin":"2026-04-08T00:51:52.546Z"},"node-connector":[{"id":"openflow:2:3","flow-node-inventory:port-number":3,"flow-node-inventory:hardware-address":"72:dd:8c:02:0b:4b","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s2-eth3","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"21","received":"23"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":34,"nanosecond":403000000},"bytes":{"transmitted":"1758","received":"1934"},"receive-crc-error":"0"}},{"id":"openflow:2:LOCAL","flow-node-inventory:port-number":4294967294,"flow-node-inventory:hardware-address":"5a:1e:a3:85:42:48","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s2","flow-node-inventory:current-feature":"","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":0,"flow-node-inventory:state":{"live":false,"blocked":false,"link-down":true},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"PORT-DOWN","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"0","received":"0"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":34,"nanosecond":366000000},"bytes":{"transmitted":"0","received":"0"},"receive-crc-error":"0"}},{"id":"openflow:2:2","flow-node-inventory:port-number":2,"flow-node-inventory:hardware-address":"c6:ba:d5:44:ef:8d","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s2-eth2","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"26","received":"9"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":34,"nanosecond":406000000},"bytes":{"transmitted":"2196","received":"726"},"receive-crc-error":"0"}},{"id":"openflow:2:1","flow-node-inventory:port-number":1,"flow-node-inventory:hardware-address":"b6:66:26:1b:66:76","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s2-eth1","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"26","received":"9"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":34,"nanosecond":397000000},"bytes":{"transmitted":"2196","received":"726"},"receive-crc-error":"0"}}],"flow-node-inventory:snapshot-gathering-status-end":{"succeeded":true,"end":"2026-04-08T00:51:52.564Z"}}]}}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:54.218016" elapsed="0.006424"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:54.217505" elapsed="0.006970"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:54.217457" elapsed="0.007044"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:54.226967" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:54.224783" elapsed="0.002231"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:54.224557" elapsed="0.002491"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:54.224541" elapsed="0.002532"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:54.227674" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:54.227267" elapsed="0.000435"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:54.228011" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:54.227772" elapsed="0.000297"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:54.228575" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:54.228273" elapsed="0.000328"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:54.228092" elapsed="0.000544"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:54.227754" elapsed="0.000903"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:54.229188" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:54.228814" elapsed="0.000402"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:54.229517" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:54.229285" elapsed="0.000288"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:54.230070" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:54.229758" elapsed="0.000341"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:54.229596" elapsed="0.000539"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:54.229267" elapsed="0.000909"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:51:54.230334" elapsed="0.000350"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:51:54.231139" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:54.230848" elapsed="0.000335"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:51:54.231340" elapsed="0.002389"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:51:54.216461" elapsed="0.017334"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-08T00:51:54.233976" elapsed="0.000034"/>
</return>
<status status="PASS" start="2026-04-08T00:51:54.233866" elapsed="0.000238"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:54.233848" elapsed="0.000286"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:54.234307" elapsed="0.000024"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-08T00:51:54.234379" elapsed="0.000015"/>
</return>
<msg time="2026-04-08T00:51:54.236945" level="INFO">${response_text} = {"opendaylight-inventory:nodes":{"node":[{"id":"openflow:3","flow-node-inventory:manufacturer":"Nicira, Inc.","flow-node-inventory:description":"s3","flow-node-inventory:hardware":"Open vSwitch","flow...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${access}</arg>
<arg>session=${session}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:51:54.166967" elapsed="0.070008"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:51:54.237026" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:51:54.237193" level="INFO">${data} = {"opendaylight-inventory:nodes":{"node":[{"id":"openflow:3","flow-node-inventory:manufacturer":"Nicira, Inc.","flow-node-inventory:description":"s3","flow-node-inventory:hardware":"Open vSwitch","flow...</msg>
<var>${data}</var>
<arg>uri=${uri}</arg>
<arg>member_index=${index}</arg>
<doc>Send a GET with the supplied uri to member ${member_index}.</doc>
<status status="PASS" start="2026-04-08T00:51:54.165225" elapsed="0.071996"/>
</kw>
<kw name="Check Item Occurrence" owner="Utils">
<for flavor="IN">
<iter>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T00:51:54.238471" level="INFO">Item found from container 4 times.</msg>
<arg>${string}</arg>
<arg>${item}</arg>
<arg>${dictionary_item_occurrence}[${item}]</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="PASS" start="2026-04-08T00:51:54.238033" elapsed="0.000916"/>
</kw>
<var name="${item}">openflow:1</var>
<status status="PASS" start="2026-04-08T00:51:54.237864" elapsed="0.001127"/>
</iter>
<iter>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T00:51:54.239648" level="INFO">Item found from container 5 times.</msg>
<arg>${string}</arg>
<arg>${item}</arg>
<arg>${dictionary_item_occurrence}[${item}]</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="PASS" start="2026-04-08T00:51:54.239243" elapsed="0.000711"/>
</kw>
<var name="${item}">openflow:2</var>
<status status="PASS" start="2026-04-08T00:51:54.239074" elapsed="0.000954"/>
</iter>
<iter>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T00:51:54.240684" level="INFO">Item found from container 5 times.</msg>
<arg>${string}</arg>
<arg>${item}</arg>
<arg>${dictionary_item_occurrence}[${item}]</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="PASS" start="2026-04-08T00:51:54.240282" elapsed="0.000710"/>
</kw>
<var name="${item}">openflow:3</var>
<status status="PASS" start="2026-04-08T00:51:54.240113" elapsed="0.000919"/>
</iter>
<var>${item}</var>
<value>@{dictionary_item_occurrence}</value>
<status status="PASS" start="2026-04-08T00:51:54.237723" elapsed="0.003339"/>
</for>
<arg>${data}</arg>
<arg>${dictionary}</arg>
<doc>Check string for occurrences of items expressed in a list of dictionaries {item=occurrences}. 0 occurences means item is not present.</doc>
<status status="PASS" start="2026-04-08T00:51:54.237455" elapsed="0.003661"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T00:51:54.160997" elapsed="0.080153"/>
</iter>
<iter>
<kw name="Get_From_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:54.246557" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:54.246258" elapsed="0.000326"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:51:54.246630" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:51:54.246777" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:51:54.245888" elapsed="0.000914"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:54.253450" level="INFO">/rests/data/opendaylight-inventory:nodes?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:54.253201" elapsed="0.000295"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:54.253888" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:54.253648" elapsed="0.000283"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:51:54.283867" level="INFO">GET Request : url=http://10.30.171.110:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0u16rl3earouwvehy59feej101.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:51:54.284932" level="INFO">GET Response : url=http://10.30.171.110:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Transfer-Encoding': 'chunked'} 
 body={"opendaylight-inventory:nodes":{"node":[{"id":"openflow:3","flow-node-inventory:manufacturer":"Nicira, Inc.","flow-node-inventory:description":"s3","flow-node-inventory:hardware":"Open vSwitch","flow-node-inventory:software":"2.17.11","flow-node-inventory:ip-address":"10.30.170.192","flow-node-inventory:serial-number":"None","flow-node-inventory:port-number":52804,"flow-node-inventory:table":[{"id":62,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":28,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":2,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":224,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":181,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":147,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":106,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":61,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":27,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":1,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":223,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":182,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":148,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":105,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":60,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":30,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":0,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"37","active-flows":1,"packets-matched":"32"},"flow":[{"id":"#UF$TABLE*0-6","table_id":0,"priority":0,"cookie_mask":"0","idle-timeout":0,"cookie":"10","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"output-action":{"max-length":65535,"output-node-connector":"CONTROLLER"}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"21","byte-count":"1655","duration":{"second":33,"nanosecond":182000000}},"flags":"SEND_FLOW_REM"}]},{"id":226,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":179,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":149,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":104,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":59,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":29,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":225,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":180,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":150,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":103,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":66,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":32,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":220,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":185,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":151,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":102,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":65,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":31,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":253,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":219,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":186,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":152,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":101,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":64,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":34,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":252,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":222,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":183,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":153,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":100,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":63,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":33,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":251,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":221,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":184,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":154,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":99,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":54,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":20,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":250,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":216,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":189,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":155,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":129,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":114,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":53,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":19,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":249,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":215,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":190,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":156,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"i... (set the log level to DEBUG or TRACE to see the full content) 
 </msg>
<msg time="2026-04-08T00:51:54.285484" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:51:54.255975" elapsed="0.029572"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:54.253999" elapsed="0.031657"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:54.286218" elapsed="0.000058"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:54.285728" elapsed="0.000646"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:54.253981" elapsed="0.032443"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:54.292093" level="INFO">{"opendaylight-inventory:nodes":{"node":[{"id":"openflow:3","flow-node-inventory:manufacturer":"Nicira, Inc.","flow-node-inventory:description":"s3","flow-node-inventory:hardware":"Open vSwitch","flow-node-inventory:software":"2.17.11","flow-node-inventory:ip-address":"10.30.170.192","flow-node-inventory:serial-number":"None","flow-node-inventory:port-number":52804,"flow-node-inventory:table":[{"id":62,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":28,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":2,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":224,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":181,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":147,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":106,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":61,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":27,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":1,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":223,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":182,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":148,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":105,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":60,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":30,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":0,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"37","active-flows":1,"packets-matched":"32"},"flow":[{"id":"#UF$TABLE*0-6","table_id":0,"priority":0,"cookie_mask":"0","idle-timeout":0,"cookie":"10","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"output-action":{"max-length":65535,"output-node-connector":"CONTROLLER"}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"21","byte-count":"1655","duration":{"second":33,"nanosecond":182000000}},"flags":"SEND_FLOW_REM"}]},{"id":226,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":179,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":149,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":104,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":59,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":29,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":225,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":180,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":150,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":103,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":66,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":32,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":220,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":185,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":151,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":102,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":65,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":31,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":253,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":219,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":186,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":152,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":101,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":64,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":34,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":252,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":222,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":183,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":153,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":100,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":63,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":33,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":251,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":221,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":184,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":154,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":99,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":54,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":20,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":250,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":216,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":189,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":155,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":129,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":114,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":53,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":19,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":249,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":215,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":190,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":156,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":130,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":113,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":52,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":22,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":248,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":218,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":187,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":157,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":112,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":51,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":21,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":247,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":217,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":188,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":158,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":128,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":111,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":58,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":24,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":246,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":212,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":193,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":159,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":110,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":57,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":23,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":245,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":211,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":194,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":160,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":109,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":56,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":26,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":244,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":214,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":191,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":161,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":108,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":55,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":25,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":243,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":213,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":192,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":162,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":107,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":77,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":43,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":17,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":239,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":198,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":164,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":138,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":119,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":89,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":78,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":44,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":18,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":240,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":197,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":163,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":137,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":120,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":90,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":75,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":45,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":15,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":241,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":196,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":166,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":136,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":121,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":87,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":76,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":46,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":16,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":242,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":195,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":165,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":135,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":122,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":88,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":81,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":47,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":13,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":235,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":202,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":168,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":134,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":115,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":85,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":82,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":48,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":14,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":236,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":201,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":167,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":133,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":116,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":86,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":79,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":49,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":11,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":237,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":200,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":170,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":132,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":117,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":83,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":80,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":50,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":12,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":238,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":199,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":169,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":131,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":118,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":84,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":69,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":35,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":9,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":231,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":206,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":172,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":146,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":127,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":97,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":70,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":36,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":10,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":232,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":205,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":171,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":145,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":98,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":67,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":37,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":7,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":233,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":204,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":174,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":144,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":95,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":68,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":38,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":8,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":234,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":203,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":173,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":143,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":96,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":73,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":39,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":5,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":227,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":210,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":176,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":142,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":123,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":93,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":74,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":40,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":6,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":228,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":209,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":175,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":141,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":124,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":94,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":71,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":41,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":3,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":229,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":208,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":178,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":140,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":125,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":91,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":72,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":42,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":4,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":230,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":207,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":177,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":139,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":126,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":92,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}}],"opendaylight-group-statistics:group-features":{"max-groups":[4294967040],"group-types-supported":["opendaylight-group-types:group-all","opendaylight-group-types:group-ff","opendaylight-group-types:group-select","opendaylight-group-types:group-indirect"],"group-capabilities-supported":["opendaylight-group-types:chaining","opendaylight-group-types:select-weight","opendaylight-group-types:select-liveness"],"actions":[67076097]},"flow-node-inventory:switch-features":{"max_tables":254,"capabilities":["flow-node-inventory:flow-feature-capability-table-stats","flow-node-inventory:flow-feature-capability-group-stats","flow-node-inventory:flow-feature-capability-queue-stats","flow-node-inventory:flow-feature-capability-flow-stats","flow-node-inventory:flow-feature-capability-port-stats"],"max_buffers":0},"flow-node-inventory:snapshot-gathering-status-start":{"begin":"2026-04-08T00:51:52.646Z"},"node-connector":[{"id":"openflow:3:3","flow-node-inventory:port-number":3,"flow-node-inventory:hardware-address":"e6:d6:06:da:00:6e","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s3-eth3","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"21","received":"22"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":34,"nanosecond":525000000},"bytes":{"transmitted":"1758","received":"1844"},"receive-crc-error":"0"}},{"id":"openflow:3:2","flow-node-inventory:port-number":2,"flow-node-inventory:hardware-address":"8a:ac:a7:67:88:d5","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s3-eth2","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"26","received":"9"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":34,"nanosecond":525000000},"bytes":{"transmitted":"2196","received":"726"},"receive-crc-error":"0"}},{"id":"openflow:3:1","flow-node-inventory:port-number":1,"flow-node-inventory:hardware-address":"86:1f:d7:a8:33:33","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s3-eth1","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"26","received":"9"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":34,"nanosecond":525000000},"bytes":{"transmitted":"2196","received":"726"},"receive-crc-error":"0"}},{"id":"openflow:3:LOCAL","flow-node-inventory:port-number":4294967294,"flow-node-inventory:hardware-address":"12:15:a2:01:a9:49","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s3","flow-node-inventory:current-feature":"","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":0,"flow-node-inventory:state":{"live":false,"blocked":false,"link-down":true},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"PORT-DOWN","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"0","received":"0"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":34,"nanosecond":512000000},"bytes":{"transmitted":"0","received":"0"},"receive-crc-error":"0"}}],"flow-node-inventory:snapshot-gathering-status-end":{"succeeded":true,"end":"2026-04-08T00:51:52.664Z"}},{"id":"openflow:1","flow-node-inventory:manufacturer":"Nicira, Inc.","flow-node-inventory:description":"s1","flow-node-inventory:hardware":"Open vSwitch","flow-node-inventory:software":"2.17.11","flow-node-inventory:ip-address":"10.30.170.192","flow-node-inventory:serial-number":"None","flow-node-inventory:port-number":52792,"flow-node-inventory:table":[{"id":62,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":28,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":2,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":224,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":181,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":147,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":106,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":61,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":27,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":1,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":223,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":182,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":148,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":105,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":60,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":30,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":0,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"39","active-flows":1,"packets-matched":"39"},"flow":[{"id":"#UF$TABLE*0-4","table_id":0,"priority":0,"cookie_mask":"0","idle-timeout":0,"cookie":"10","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"output-action":{"max-length":65535,"output-node-connector":"CONTROLLER"}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"28","byte-count":"2280","duration":{"second":33,"nanosecond":197000000}},"flags":"SEND_FLOW_REM"}]},{"id":226,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":179,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":149,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":104,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":59,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":29,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":225,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":180,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":150,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":103,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":66,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":32,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":220,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":185,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":151,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":102,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":65,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":31,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":253,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":219,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":186,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":152,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":101,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":64,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":34,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":252,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":222,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":183,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":153,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":100,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":63,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":33,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":251,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":221,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":184,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":154,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":99,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":54,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":20,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":250,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":216,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":189,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":155,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":129,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":114,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":53,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":19,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":249,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":215,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":190,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":156,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":130,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":113,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":52,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":22,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":248,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":218,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":187,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":157,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":112,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":51,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":21,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":247,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":217,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":188,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":158,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":128,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":111,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":58,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":24,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":246,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":212,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":193,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":159,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":110,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":57,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":23,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":245,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":211,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":194,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":160,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":109,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":56,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":26,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":244,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":214,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":191,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":161,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":108,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":55,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":25,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":243,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":213,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":192,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":162,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":107,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":77,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":43,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":17,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":239,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":198,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":164,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":138,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":119,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":89,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":78,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":44,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":18,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":240,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":197,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":163,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":137,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":120,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":90,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":75,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":45,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":15,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":241,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":196,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":166,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":136,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":121,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":87,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":76,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":46,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":16,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":242,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":195,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":165,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":135,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":122,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":88,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":81,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":47,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":13,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":235,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":202,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":168,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":134,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":115,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":85,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":82,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":48,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":14,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":236,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":201,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":167,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":133,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":116,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":86,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":79,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":49,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":11,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":237,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":200,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":170,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":132,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":117,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":83,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":80,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":50,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":12,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":238,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":199,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":169,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":131,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":118,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":84,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":69,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":35,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":9,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":231,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":206,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":172,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":146,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":127,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":97,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":70,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":36,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":10,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":232,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":205,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":171,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":145,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":98,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":67,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":37,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":7,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":233,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":204,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":174,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":144,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":95,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":68,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":38,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":8,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":234,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":203,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":173,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":143,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":96,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":73,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":39,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":5,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":227,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":210,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":176,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":142,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":123,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":93,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":74,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":40,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":6,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":228,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":209,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":175,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":141,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":124,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":94,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":71,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":41,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":3,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":229,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":208,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":178,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":140,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":125,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":91,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":72,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":42,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":4,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":230,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":207,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":177,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":139,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":126,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":92,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}}],"opendaylight-group-statistics:group-features":{"max-groups":[4294967040],"group-types-supported":["opendaylight-group-types:group-all","opendaylight-group-types:group-ff","opendaylight-group-types:group-select","opendaylight-group-types:group-indirect"],"group-capabilities-supported":["opendaylight-group-types:chaining","opendaylight-group-types:select-weight","opendaylight-group-types:select-liveness"],"actions":[67076097]},"flow-node-inventory:switch-features":{"max_tables":254,"capabilities":["flow-node-inventory:flow-feature-capability-table-stats","flow-node-inventory:flow-feature-capability-group-stats","flow-node-inventory:flow-feature-capability-queue-stats","flow-node-inventory:flow-feature-capability-flow-stats","flow-node-inventory:flow-feature-capability-port-stats"],"max_buffers":0},"flow-node-inventory:snapshot-gathering-status-start":{"begin":"2026-04-08T00:51:52.547Z"},"node-connector":[{"id":"openflow:1:1","flow-node-inventory:port-number":1,"flow-node-inventory:hardware-address":"22:6b:5b:43:c9:13","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s1-eth1","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"23","received":"21"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":34,"nanosecond":439000000},"bytes":{"transmitted":"1934","received":"1758"},"receive-crc-error":"0"}},{"id":"openflow:1:LOCAL","flow-node-inventory:port-number":4294967294,"flow-node-inventory:hardware-address":"7e:2a:b5:f7:38:4d","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s1","flow-node-inventory:current-feature":"","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":0,"flow-node-inventory:state":{"live":false,"blocked":false,"link-down":true},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"PORT-DOWN","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"0","received":"0"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":34,"nanosecond":428000000},"bytes":{"transmitted":"0","received":"0"},"receive-crc-error":"0"}},{"id":"openflow:1:2","flow-node-inventory:port-number":2,"flow-node-inventory:hardware-address":"0a:0f:35:ec:0f:11","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s1-eth2","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"22","received":"21"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":34,"nanosecond":439000000},"bytes":{"transmitted":"1844","received":"1758"},"receive-crc-error":"0"}}],"flow-node-inventory:snapshot-gathering-status-end":{"succeeded":true,"end":"2026-04-08T00:51:52.565Z"}},{"id":"openflow:2","flow-node-inventory:manufacturer":"Nicira, Inc.","flow-node-inventory:description":"s2","flow-node-inventory:hardware":"Open vSwitch","flow-node-inventory:software":"2.17.11","flow-node-inventory:ip-address":"10.30.170.192","flow-node-inventory:serial-number":"None","flow-node-inventory:port-number":52796,"flow-node-inventory:table":[{"id":62,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":28,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":2,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":224,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":181,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":147,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":106,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":61,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":27,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":1,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":223,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":182,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":148,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":105,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":60,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":30,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":0,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"37","active-flows":1,"packets-matched":"36"},"flow":[{"id":"#UF$TABLE*0-5","table_id":0,"priority":0,"cookie_mask":"0","idle-timeout":0,"cookie":"10","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"output-action":{"max-length":65535,"output-node-connector":"CONTROLLER"}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"25","byte-count":"1975","duration":{"second":33,"nanosecond":189000000}},"flags":"SEND_FLOW_REM"}]},{"id":226,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":179,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":149,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":104,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":59,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":29,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":225,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":180,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":150,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":103,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":66,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":32,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":220,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":185,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":151,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":102,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":65,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":31,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":253,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":219,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":186,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":152,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":101,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":64,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":34,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":252,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":222,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":183,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":153,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":100,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":63,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":33,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":251,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":221,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":184,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":154,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":99,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":54,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":20,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":250,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":216,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":189,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":155,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":129,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":114,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":53,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":19,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":249,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":215,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":190,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":156,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":130,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":113,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":52,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":22,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":248,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":218,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":187,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":157,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":112,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":51,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":21,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":247,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":217,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":188,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":158,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":128,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":111,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":58,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":24,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":246,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":212,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":193,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":159,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":110,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":57,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":23,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":245,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":211,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":194,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":160,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":109,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":56,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":26,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":244,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":214,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":191,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":161,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":108,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":55,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":25,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":243,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":213,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":192,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":162,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":107,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":77,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":43,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":17,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":239,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":198,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":164,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":138,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":119,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":89,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":78,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":44,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":18,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":240,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":197,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":163,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":137,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":120,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":90,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":75,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":45,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":15,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":241,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":196,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":166,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":136,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":121,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":87,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":76,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":46,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":16,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":242,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":195,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":165,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":135,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":122,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":88,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":81,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":47,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":13,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":235,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":202,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":168,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":134,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":115,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":85,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":82,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":48,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":14,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":236,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":201,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":167,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":133,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":116,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":86,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":79,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":49,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":11,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":237,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":200,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":170,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":132,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":117,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":83,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":80,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":50,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":12,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":238,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":199,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":169,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":131,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":118,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":84,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":69,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":35,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":9,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":231,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":206,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":172,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":146,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":127,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":97,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":70,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":36,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":10,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":232,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":205,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":171,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":145,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":98,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":67,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":37,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":7,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":233,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":204,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":174,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":144,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":95,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":68,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":38,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":8,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":234,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":203,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":173,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":143,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":96,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":73,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":39,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":5,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":227,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":210,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":176,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":142,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":123,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":93,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":74,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":40,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":6,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":228,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":209,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":175,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":141,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":124,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":94,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":71,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":41,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":3,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":229,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":208,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":178,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":140,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":125,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":91,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":72,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":42,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":4,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":230,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":207,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":177,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":139,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":126,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":92,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}}],"opendaylight-group-statistics:group-features":{"max-groups":[4294967040],"group-types-supported":["opendaylight-group-types:group-all","opendaylight-group-types:group-ff","opendaylight-group-types:group-select","opendaylight-group-types:group-indirect"],"group-capabilities-supported":["opendaylight-group-types:chaining","opendaylight-group-types:select-weight","opendaylight-group-types:select-liveness"],"actions":[67076097]},"flow-node-inventory:switch-features":{"max_tables":254,"capabilities":["flow-node-inventory:flow-feature-capability-table-stats","flow-node-inventory:flow-feature-capability-group-stats","flow-node-inventory:flow-feature-capability-queue-stats","flow-node-inventory:flow-feature-capability-flow-stats","flow-node-inventory:flow-feature-capability-port-stats"],"max_buffers":0},"flow-node-inventory:snapshot-gathering-status-start":{"begin":"2026-04-08T00:51:52.546Z"},"node-connector":[{"id":"openflow:2:3","flow-node-inventory:port-number":3,"flow-node-inventory:hardware-address":"72:dd:8c:02:0b:4b","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s2-eth3","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"21","received":"23"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":34,"nanosecond":403000000},"bytes":{"transmitted":"1758","received":"1934"},"receive-crc-error":"0"}},{"id":"openflow:2:LOCAL","flow-node-inventory:port-number":4294967294,"flow-node-inventory:hardware-address":"5a:1e:a3:85:42:48","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s2","flow-node-inventory:current-feature":"","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":0,"flow-node-inventory:state":{"live":false,"blocked":false,"link-down":true},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"PORT-DOWN","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"0","received":"0"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":34,"nanosecond":366000000},"bytes":{"transmitted":"0","received":"0"},"receive-crc-error":"0"}},{"id":"openflow:2:2","flow-node-inventory:port-number":2,"flow-node-inventory:hardware-address":"c6:ba:d5:44:ef:8d","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s2-eth2","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"26","received":"9"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":34,"nanosecond":406000000},"bytes":{"transmitted":"2196","received":"726"},"receive-crc-error":"0"}},{"id":"openflow:2:1","flow-node-inventory:port-number":1,"flow-node-inventory:hardware-address":"b6:66:26:1b:66:76","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s2-eth1","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"26","received":"9"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":34,"nanosecond":397000000},"bytes":{"transmitted":"2196","received":"726"},"receive-crc-error":"0"}}],"flow-node-inventory:snapshot-gathering-status-end":{"succeeded":true,"end":"2026-04-08T00:51:52.564Z"}}]}}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:54.288052" elapsed="0.005621"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:54.287720" elapsed="0.006007"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:54.287692" elapsed="0.006070"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:54.297291" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:54.294196" elapsed="0.003160"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:54.293841" elapsed="0.003564"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:54.293818" elapsed="0.003620"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:54.298312" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:54.297681" elapsed="0.000672"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:54.298789" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:54.298454" elapsed="0.000415"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:54.299486" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:54.299126" elapsed="0.000387"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:54.298902" elapsed="0.000647"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:54.298428" elapsed="0.001142"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:54.300087" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:54.299727" elapsed="0.000386"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:54.300457" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:54.300200" elapsed="0.000318"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:54.300999" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:54.300703" elapsed="0.000321"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:54.300542" elapsed="0.000518"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:54.300181" elapsed="0.000900"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:51:54.301251" elapsed="0.000349"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:51:54.302087" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:54.301774" elapsed="0.000340"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:51:54.302301" elapsed="0.002230"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:51:54.287066" elapsed="0.017530"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-08T00:51:54.304775" elapsed="0.000034"/>
</return>
<status status="PASS" start="2026-04-08T00:51:54.304666" elapsed="0.000178"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:54.304648" elapsed="0.000219"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:54.305014" elapsed="0.000021"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-08T00:51:54.305084" elapsed="0.000014"/>
</return>
<msg time="2026-04-08T00:51:54.307627" level="INFO">${response_text} = {"opendaylight-inventory:nodes":{"node":[{"id":"openflow:3","flow-node-inventory:manufacturer":"Nicira, Inc.","flow-node-inventory:description":"s3","flow-node-inventory:hardware":"Open vSwitch","flow...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${access}</arg>
<arg>session=${session}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:51:54.247127" elapsed="0.060530"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:51:54.307709" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:51:54.307862" level="INFO">${data} = {"opendaylight-inventory:nodes":{"node":[{"id":"openflow:3","flow-node-inventory:manufacturer":"Nicira, Inc.","flow-node-inventory:description":"s3","flow-node-inventory:hardware":"Open vSwitch","flow...</msg>
<var>${data}</var>
<arg>uri=${uri}</arg>
<arg>member_index=${index}</arg>
<doc>Send a GET with the supplied uri to member ${member_index}.</doc>
<status status="PASS" start="2026-04-08T00:51:54.245394" elapsed="0.062494"/>
</kw>
<kw name="Check Item Occurrence" owner="Utils">
<for flavor="IN">
<iter>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T00:51:54.309146" level="INFO">Item found from container 4 times.</msg>
<arg>${string}</arg>
<arg>${item}</arg>
<arg>${dictionary_item_occurrence}[${item}]</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="PASS" start="2026-04-08T00:51:54.308727" elapsed="0.000881"/>
</kw>
<var name="${item}">openflow:1</var>
<status status="PASS" start="2026-04-08T00:51:54.308565" elapsed="0.001084"/>
</iter>
<iter>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T00:51:54.310346" level="INFO">Item found from container 5 times.</msg>
<arg>${string}</arg>
<arg>${item}</arg>
<arg>${dictionary_item_occurrence}[${item}]</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="PASS" start="2026-04-08T00:51:54.309884" elapsed="0.000769"/>
</kw>
<var name="${item}">openflow:2</var>
<status status="PASS" start="2026-04-08T00:51:54.309732" elapsed="0.001000"/>
</iter>
<iter>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T00:51:54.311452" level="INFO">Item found from container 5 times.</msg>
<arg>${string}</arg>
<arg>${item}</arg>
<arg>${dictionary_item_occurrence}[${item}]</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="PASS" start="2026-04-08T00:51:54.311022" elapsed="0.000744"/>
</kw>
<var name="${item}">openflow:3</var>
<status status="PASS" start="2026-04-08T00:51:54.310863" elapsed="0.000945"/>
</iter>
<var>${item}</var>
<value>@{dictionary_item_occurrence}</value>
<status status="PASS" start="2026-04-08T00:51:54.308424" elapsed="0.003413"/>
</for>
<arg>${data}</arg>
<arg>${dictionary}</arg>
<doc>Check string for occurrences of items expressed in a list of dictionaries {item=occurrences}. 0 occurences means item is not present.</doc>
<status status="PASS" start="2026-04-08T00:51:54.308137" elapsed="0.003756"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T00:51:54.241258" elapsed="0.070670"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-08T00:51:54.100145" elapsed="0.211813"/>
</for>
<arg>uri=${RFC8040_OPERATIONAL_NODES_API}</arg>
<arg>dictionary=${dictionary}</arg>
<arg>member_index_list=${controller_index_list}</arg>
<doc>Send a GET with the supplied uri to all or some members defined in ${member_index_list}.
Then check received for occurrences of items expressed in a dictionary {'openflow:1': '4', 'openflow:2': '5', 'openflow:3': '5'}.</doc>
<status status="PASS" start="2026-04-08T00:51:54.097836" elapsed="0.214174"/>
</kw>
<arg>5s</arg>
<arg>1s</arg>
<arg>ClusterManagement.Check_Item_Occurrence_Member_List_Or_All</arg>
<arg>uri=${RFC8040_OPERATIONAL_NODES_API}</arg>
<arg>dictionary=${dictionary}</arg>
<arg>member_index_list=${controller_index_list}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-08T00:51:54.093097" elapsed="0.218970"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-08T00:51:54.312660" level="INFO">${dictionary} = {'openflow:1': '21', 'openflow:2': '19', 'openflow:3': '19'}</msg>
<var>${dictionary}</var>
<arg>openflow:1=21</arg>
<arg>openflow:2=19</arg>
<arg>openflow:3=19</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-08T00:51:54.312286" elapsed="0.000401"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Check_Item_Occurrence_Member_List_Or_All" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:51:54.318696" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:51:54.318317" elapsed="0.000406"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:51:54.319192" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:51:54.318880" elapsed="0.000340"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:51:54.319265" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:51:54.319417" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:51:54.317922" elapsed="0.001521"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_From_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:54.324989" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:54.324690" elapsed="0.000326"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:51:54.325061" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:51:54.325241" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:51:54.324343" elapsed="0.000925"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:54.331507" level="INFO">/rests/data/network-topology:network-topology?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:54.331251" elapsed="0.000303"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:54.331945" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:54.331705" elapsed="0.000284"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:51:54.342215" level="INFO">GET Request : url=http://10.30.170.48:8181/rests/data/network-topology:network-topology?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01ju7g9ih47awu1dako8be5k84o113.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:51:54.342436" level="INFO">GET Response : url=http://10.30.170.48:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '3149'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"},{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:3']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:1:1","dest-node":"openflow:1"}},{"link-id":"openflow:3:3","source":{"source-node":"openflow:3","source-tp":"openflow:3:3"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:1:1","source":{"source-node":"openflow:1","source-tp":"openflow:1:1"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:3:3","dest-node":"openflow:3"}}]}]}} 
 </msg>
<msg time="2026-04-08T00:51:54.342598" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:51:54.334059" elapsed="0.008566"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:54.332057" elapsed="0.010611"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:54.342980" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:54.342694" elapsed="0.000434"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:54.332038" elapsed="0.011172"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:54.350946" level="INFO">{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"},{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:3']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:1:1","dest-node":"openflow:1"}},{"link-id":"openflow:3:3","source":{"source-node":"openflow:3","source-tp":"openflow:3:3"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:1:1","source":{"source-node":"openflow:1","source-tp":"openflow:1:1"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:3:3","dest-node":"openflow:3"}}]}]}}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:54.345551" elapsed="0.005553"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:54.344995" elapsed="0.006219"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:54.344952" elapsed="0.006321"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:54.355892" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:54.351899" elapsed="0.004040"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:54.351401" elapsed="0.004572"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:54.351363" elapsed="0.004635"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:54.356583" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:54.356191" elapsed="0.000419"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:54.356953" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:54.356688" elapsed="0.000322"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:54.357516" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:54.357212" elapsed="0.000331"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:54.357034" elapsed="0.000544"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:54.356666" elapsed="0.000934"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:54.358137" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:54.357759" elapsed="0.000422"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:54.358486" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:54.358252" elapsed="0.000290"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:54.359055" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:54.358738" elapsed="0.000344"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:54.358565" elapsed="0.000551"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:54.358234" elapsed="0.000903"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:51:54.359306" elapsed="0.000345"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:51:54.360212" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:54.359880" elapsed="0.000359"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:51:54.360393" elapsed="0.002450"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:51:54.344025" elapsed="0.018888"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-08T00:51:54.363256" elapsed="0.000033"/>
</return>
<status status="PASS" start="2026-04-08T00:51:54.362983" elapsed="0.000341"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:54.362964" elapsed="0.000384"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:54.363498" elapsed="0.000022"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-08T00:51:54.363568" elapsed="0.000014"/>
</return>
<msg time="2026-04-08T00:51:54.365830" level="INFO">${response_text} = {"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='o...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${access}</arg>
<arg>session=${session}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:51:54.325592" elapsed="0.040266"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:51:54.365910" elapsed="0.000027"/>
</return>
<msg time="2026-04-08T00:51:54.366075" level="INFO">${data} = {"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='o...</msg>
<var>${data}</var>
<arg>uri=${uri}</arg>
<arg>member_index=${index}</arg>
<doc>Send a GET with the supplied uri to member ${member_index}.</doc>
<status status="PASS" start="2026-04-08T00:51:54.323843" elapsed="0.042258"/>
</kw>
<kw name="Check Item Occurrence" owner="Utils">
<for flavor="IN">
<iter>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T00:51:54.367333" level="INFO">Item found from container 21 times.</msg>
<arg>${string}</arg>
<arg>${item}</arg>
<arg>${dictionary_item_occurrence}[${item}]</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="PASS" start="2026-04-08T00:51:54.366934" elapsed="0.000481"/>
</kw>
<var name="${item}">openflow:1</var>
<status status="PASS" start="2026-04-08T00:51:54.366778" elapsed="0.000676"/>
</iter>
<iter>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T00:51:54.368046" level="INFO">Item found from container 19 times.</msg>
<arg>${string}</arg>
<arg>${item}</arg>
<arg>${dictionary_item_occurrence}[${item}]</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="PASS" start="2026-04-08T00:51:54.367686" elapsed="0.000437"/>
</kw>
<var name="${item}">openflow:2</var>
<status status="PASS" start="2026-04-08T00:51:54.367535" elapsed="0.000643"/>
</iter>
<iter>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T00:51:54.368771" level="INFO">Item found from container 19 times.</msg>
<arg>${string}</arg>
<arg>${item}</arg>
<arg>${dictionary_item_occurrence}[${item}]</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="PASS" start="2026-04-08T00:51:54.368410" elapsed="0.000439"/>
</kw>
<var name="${item}">openflow:3</var>
<status status="PASS" start="2026-04-08T00:51:54.368259" elapsed="0.000629"/>
</iter>
<var>${item}</var>
<value>@{dictionary_item_occurrence}</value>
<status status="PASS" start="2026-04-08T00:51:54.366638" elapsed="0.002279"/>
</for>
<arg>${data}</arg>
<arg>${dictionary}</arg>
<doc>Check string for occurrences of items expressed in a list of dictionaries {item=occurrences}. 0 occurences means item is not present.</doc>
<status status="PASS" start="2026-04-08T00:51:54.366361" elapsed="0.002610"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T00:51:54.319623" elapsed="0.049382"/>
</iter>
<iter>
<kw name="Get_From_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:54.374300" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:54.373985" elapsed="0.000341"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:51:54.374371" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:51:54.374516" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:51:54.373622" elapsed="0.000919"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:54.380685" level="INFO">/rests/data/network-topology:network-topology?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:54.380438" elapsed="0.000297"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:54.381123" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:54.380885" elapsed="0.000297"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:51:54.394824" level="INFO">GET Request : url=http://10.30.170.131:8181/rests/data/network-topology:network-topology?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node012m0dyuink19r12kj250j53usg1.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:51:54.395057" level="INFO">GET Response : url=http://10.30.170.131:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '3149'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"},{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:3']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:1:1","dest-node":"openflow:1"}},{"link-id":"openflow:3:3","source":{"source-node":"openflow:3","source-tp":"openflow:3:3"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:1:1","source":{"source-node":"openflow:1","source-tp":"openflow:1:1"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:3:3","dest-node":"openflow:3"}}]}]}} 
 </msg>
<msg time="2026-04-08T00:51:54.395257" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:51:54.383178" elapsed="0.012107"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:54.381251" elapsed="0.014078"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:54.395509" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:54.395356" elapsed="0.000217"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:54.381232" elapsed="0.014362"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:54.399953" level="INFO">{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"},{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:3']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:1:1","dest-node":"openflow:1"}},{"link-id":"openflow:3:3","source":{"source-node":"openflow:3","source-tp":"openflow:3:3"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:1:1","source":{"source-node":"openflow:1","source-tp":"openflow:1:1"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:3:3","dest-node":"openflow:3"}}]}]}}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:54.396631" elapsed="0.003476"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:54.396405" elapsed="0.003823"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:54.396385" elapsed="0.003904"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:54.406050" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:54.400959" elapsed="0.005233"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:54.400420" elapsed="0.005856"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:54.400382" elapsed="0.005951"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:54.407228" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:54.406718" elapsed="0.000538"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:54.407570" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:54.407328" elapsed="0.000300"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:54.408120" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:54.407816" elapsed="0.000330"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:54.407652" elapsed="0.000546"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:54.407310" elapsed="0.000911"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:54.408765" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:54.408383" elapsed="0.000415"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:54.409115" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:54.408882" elapsed="0.000305"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:54.409665" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:54.409373" elapsed="0.000318"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:54.409212" elapsed="0.000514"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:54.408862" elapsed="0.000888"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:51:54.409906" elapsed="0.000379"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:51:54.410818" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:54.410489" elapsed="0.000357"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:51:54.411003" elapsed="0.002227"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:51:54.395957" elapsed="0.017335"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-08T00:51:54.413469" elapsed="0.000031"/>
</return>
<status status="PASS" start="2026-04-08T00:51:54.413362" elapsed="0.000172"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:54.413343" elapsed="0.000215"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:54.413718" elapsed="0.000027"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-08T00:51:54.413806" elapsed="0.000017"/>
</return>
<msg time="2026-04-08T00:51:54.416150" level="INFO">${response_text} = {"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='o...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${access}</arg>
<arg>session=${session}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:51:54.374866" elapsed="0.041327"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:51:54.416246" elapsed="0.000027"/>
</return>
<msg time="2026-04-08T00:51:54.416397" level="INFO">${data} = {"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='o...</msg>
<var>${data}</var>
<arg>uri=${uri}</arg>
<arg>member_index=${index}</arg>
<doc>Send a GET with the supplied uri to member ${member_index}.</doc>
<status status="PASS" start="2026-04-08T00:51:54.373124" elapsed="0.043299"/>
</kw>
<kw name="Check Item Occurrence" owner="Utils">
<for flavor="IN">
<iter>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T00:51:54.417629" level="INFO">Item found from container 21 times.</msg>
<arg>${string}</arg>
<arg>${item}</arg>
<arg>${dictionary_item_occurrence}[${item}]</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="PASS" start="2026-04-08T00:51:54.417250" elapsed="0.000461"/>
</kw>
<var name="${item}">openflow:1</var>
<status status="PASS" start="2026-04-08T00:51:54.417058" elapsed="0.000692"/>
</iter>
<iter>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T00:51:54.418396" level="INFO">Item found from container 19 times.</msg>
<arg>${string}</arg>
<arg>${item}</arg>
<arg>${dictionary_item_occurrence}[${item}]</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="PASS" start="2026-04-08T00:51:54.418011" elapsed="0.000462"/>
</kw>
<var name="${item}">openflow:2</var>
<status status="PASS" start="2026-04-08T00:51:54.417832" elapsed="0.000680"/>
</iter>
<iter>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T00:51:54.419134" level="INFO">Item found from container 19 times.</msg>
<arg>${string}</arg>
<arg>${item}</arg>
<arg>${dictionary_item_occurrence}[${item}]</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="PASS" start="2026-04-08T00:51:54.418762" elapsed="0.000467"/>
</kw>
<var name="${item}">openflow:3</var>
<status status="PASS" start="2026-04-08T00:51:54.418590" elapsed="0.000678"/>
</iter>
<var>${item}</var>
<value>@{dictionary_item_occurrence}</value>
<status status="PASS" start="2026-04-08T00:51:54.416920" elapsed="0.002377"/>
</for>
<arg>${data}</arg>
<arg>${dictionary}</arg>
<doc>Check string for occurrences of items expressed in a list of dictionaries {item=occurrences}. 0 occurences means item is not present.</doc>
<status status="PASS" start="2026-04-08T00:51:54.416653" elapsed="0.002698"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T00:51:54.369092" elapsed="0.050294"/>
</iter>
<iter>
<kw name="Get_From_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:54.424758" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:54.424457" elapsed="0.000328"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:51:54.424831" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:51:54.424979" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:51:54.424095" elapsed="0.000909"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:54.431477" level="INFO">/rests/data/network-topology:network-topology?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:54.431224" elapsed="0.000299"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:54.431918" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:54.431677" elapsed="0.000286"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:51:54.446290" level="INFO">GET Request : url=http://10.30.171.110:8181/rests/data/network-topology:network-topology?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0u16rl3earouwvehy59feej101.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:51:54.446519" level="INFO">GET Response : url=http://10.30.171.110:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '3149'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"},{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:3']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:1:1","dest-node":"openflow:1"}},{"link-id":"openflow:3:3","source":{"source-node":"openflow:3","source-tp":"openflow:3:3"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:1:1","source":{"source-node":"openflow:1","source-tp":"openflow:1:1"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:3:3","dest-node":"openflow:3"}}]}]}} 
 </msg>
<msg time="2026-04-08T00:51:54.446702" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:51:54.433975" elapsed="0.012762"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:54.432030" elapsed="0.014773"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:54.447077" elapsed="0.000032"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:54.446852" elapsed="0.000338"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:54.432011" elapsed="0.015210"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:54.452223" level="INFO">{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"},{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:3']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:1:1","dest-node":"openflow:1"}},{"link-id":"openflow:3:3","source":{"source-node":"openflow:3","source-tp":"openflow:3:3"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:1:1","source":{"source-node":"openflow:1","source-tp":"openflow:1:1"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:3:3","dest-node":"openflow:3"}}]}]}}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:54.448721" elapsed="0.003600"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:54.448404" elapsed="0.003965"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:54.448377" elapsed="0.004026"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:54.455535" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:54.452797" elapsed="0.002784"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:54.452481" elapsed="0.003135"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:54.452458" elapsed="0.003182"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:54.456228" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:54.455813" elapsed="0.000442"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:54.456565" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:54.456326" elapsed="0.000296"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:54.457116" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:54.456812" elapsed="0.000330"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:54.456645" elapsed="0.000548"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:54.456308" elapsed="0.000907"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:54.457741" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:54.457376" elapsed="0.000391"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:54.458088" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:54.457837" elapsed="0.000307"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:54.458642" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:54.458347" elapsed="0.000322"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:54.458186" elapsed="0.000518"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:54.457819" elapsed="0.000907"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:51:54.458878" elapsed="0.000368"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:51:54.459755" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:54.459461" elapsed="0.000320"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:51:54.460059" elapsed="0.002301"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:51:54.447744" elapsed="0.014681"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-08T00:51:54.462602" elapsed="0.000033"/>
</return>
<status status="PASS" start="2026-04-08T00:51:54.462495" elapsed="0.000174"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:54.462476" elapsed="0.000219"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:54.462845" elapsed="0.000021"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-08T00:51:54.462914" elapsed="0.000015"/>
</return>
<msg time="2026-04-08T00:51:54.465198" level="INFO">${response_text} = {"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='o...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${access}</arg>
<arg>session=${session}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:51:54.425346" elapsed="0.039883"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:51:54.465281" elapsed="0.000027"/>
</return>
<msg time="2026-04-08T00:51:54.465432" level="INFO">${data} = {"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='o...</msg>
<var>${data}</var>
<arg>uri=${uri}</arg>
<arg>member_index=${index}</arg>
<doc>Send a GET with the supplied uri to member ${member_index}.</doc>
<status status="PASS" start="2026-04-08T00:51:54.423606" elapsed="0.041852"/>
</kw>
<kw name="Check Item Occurrence" owner="Utils">
<for flavor="IN">
<iter>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T00:51:54.466661" level="INFO">Item found from container 21 times.</msg>
<arg>${string}</arg>
<arg>${item}</arg>
<arg>${dictionary_item_occurrence}[${item}]</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="PASS" start="2026-04-08T00:51:54.466286" elapsed="0.000457"/>
</kw>
<var name="${item}">openflow:1</var>
<status status="PASS" start="2026-04-08T00:51:54.466113" elapsed="0.000669"/>
</iter>
<iter>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T00:51:54.467388" level="INFO">Item found from container 19 times.</msg>
<arg>${string}</arg>
<arg>${item}</arg>
<arg>${dictionary_item_occurrence}[${item}]</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="PASS" start="2026-04-08T00:51:54.467013" elapsed="0.000452"/>
</kw>
<var name="${item}">openflow:2</var>
<status status="PASS" start="2026-04-08T00:51:54.466861" elapsed="0.000642"/>
</iter>
<iter>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T00:51:54.468130" level="INFO">Item found from container 19 times.</msg>
<arg>${string}</arg>
<arg>${item}</arg>
<arg>${dictionary_item_occurrence}[${item}]</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="PASS" start="2026-04-08T00:51:54.467750" elapsed="0.000477"/>
</kw>
<var name="${item}">openflow:3</var>
<status status="PASS" start="2026-04-08T00:51:54.467580" elapsed="0.000686"/>
</iter>
<var>${item}</var>
<value>@{dictionary_item_occurrence}</value>
<status status="PASS" start="2026-04-08T00:51:54.465977" elapsed="0.002318"/>
</for>
<arg>${data}</arg>
<arg>${dictionary}</arg>
<doc>Check string for occurrences of items expressed in a list of dictionaries {item=occurrences}. 0 occurences means item is not present.</doc>
<status status="PASS" start="2026-04-08T00:51:54.465690" elapsed="0.002827"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T00:51:54.419473" elapsed="0.049088"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-08T00:51:54.319492" elapsed="0.149099"/>
</for>
<arg>uri=${RFC8040_OPERATIONAL_TOPO_API}</arg>
<arg>dictionary=${dictionary}</arg>
<arg>member_index_list=${controller_index_list}</arg>
<doc>Send a GET with the supplied uri to all or some members defined in ${member_index_list}.
Then check received for occurrences of items expressed in a dictionary {'openflow:1': '21', 'openflow:2': '19', 'openflow:3': '19'}.</doc>
<status status="PASS" start="2026-04-08T00:51:54.317352" elapsed="0.151293"/>
</kw>
<arg>5s</arg>
<arg>1s</arg>
<arg>ClusterManagement.Check_Item_Occurrence_Member_List_Or_All</arg>
<arg>uri=${RFC8040_OPERATIONAL_TOPO_API}</arg>
<arg>dictionary=${dictionary}</arg>
<arg>member_index_list=${controller_index_list}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-08T00:51:54.312882" elapsed="0.155821"/>
</kw>
<doc>Check devices in tree,2 are in operational inventory and topology in all instances in ${controller_index_list}.
Inventory should show 1x node_id per device 1x node_id per connector. Topology should show 2x node_id per device + 3x node_id per connector
+ 5x node_id per link termination. TODO: A Keyword that can calculate this based on mininet topology.</doc>
<status status="PASS" start="2026-04-08T00:51:54.090299" elapsed="0.378473"/>
</kw>
<doc>Check devices in operational inventory and topology in all cluster instances.</doc>
<status status="PASS" start="2026-04-08T00:51:54.085393" elapsed="0.383504"/>
</test>
<test id="s1-s2-t6" name="Add Configuration In Owner and Verify Before Stop" line="56">
<kw name="Add Sample Flow And Verify" owner="ClusterOpenFlow">
<msg time="2026-04-08T00:51:54.482052" level="FAIL">Variable '${original_owner}' not found.</msg>
<arg>${original_owner}</arg>
<doc>Add sample flow in ${controller_index} and verify it gets applied in all instances in ${controller_index_list}.</doc>
<status status="FAIL" start="2026-04-08T00:51:54.478281" elapsed="0.003813">Variable '${original_owner}' not found.</status>
</kw>
<doc>Add Flow in Owner and verify it gets applied from all instances.</doc>
<status status="FAIL" start="2026-04-08T00:51:54.469375" elapsed="0.012877">Variable '${original_owner}' not found.</status>
</test>
<test id="s1-s2-t7" name="Modify Configuration In Owner and Verify Before Stop" line="60">
<kw name="Modify Sample Flow And Verify" owner="ClusterOpenFlow">
<msg time="2026-04-08T00:51:54.494787" level="FAIL">Variable '${original_owner}' not found.</msg>
<arg>${original_owner}</arg>
<doc>Modify sample flow in ${controller_index} and verify it gets applied in all instances in ${controller_index_list}.</doc>
<status status="FAIL" start="2026-04-08T00:51:54.491051" elapsed="0.003774">Variable '${original_owner}' not found.</status>
</kw>
<doc>Modify Flow in Owner and verify it gets applied from all instances.</doc>
<status status="FAIL" start="2026-04-08T00:51:54.482544" elapsed="0.012465">Variable '${original_owner}' not found.</status>
</test>
<test id="s1-s2-t8" name="Delete Configuration In Owner and Verify Before Stop" line="64">
<kw name="Delete Sample Flow And Verify" owner="ClusterOpenFlow">
<msg time="2026-04-08T00:51:54.500431" level="FAIL">Variable '${original_owner}' not found.</msg>
<arg>${original_owner}</arg>
<doc>Delete sample flow in Owner and verify it gets removed from all instances.</doc>
<status status="FAIL" start="2026-04-08T00:51:54.496180" elapsed="0.004290">Variable '${original_owner}' not found.</status>
</kw>
<doc>Delete Flow in Owner and verify it gets applied from all instances.</doc>
<status status="FAIL" start="2026-04-08T00:51:54.495491" elapsed="0.005108">Variable '${original_owner}' not found.</status>
</test>
<test id="s1-s2-t9" name="Add Configuration In Successor and Verify Before Stop" line="68">
<kw name="Add Sample Flow And Verify" owner="ClusterOpenFlow">
<msg time="2026-04-08T00:51:54.513706" level="FAIL">Variable '${original_successor}' not found.</msg>
<arg>${original_successor}</arg>
<doc>Add sample flow in ${controller_index} and verify it gets applied in all instances in ${controller_index_list}.</doc>
<status status="FAIL" start="2026-04-08T00:51:54.509783" elapsed="0.003961">Variable '${original_successor}' not found.</status>
</kw>
<doc>Add Flow in Successor and verify it gets applied from all instances.</doc>
<status status="FAIL" start="2026-04-08T00:51:54.501003" elapsed="0.012869">Variable '${original_successor}' not found.</status>
</test>
<test id="s1-s2-t10" name="Modify Configuration In Successor and Verify Before Stop" line="72">
<kw name="Modify Sample Flow And Verify" owner="ClusterOpenFlow">
<msg time="2026-04-08T00:51:54.531791" level="FAIL">Variable '${original_successor}' not found.</msg>
<arg>${original_successor}</arg>
<doc>Modify sample flow in ${controller_index} and verify it gets applied in all instances in ${controller_index_list}.</doc>
<status status="FAIL" start="2026-04-08T00:51:54.527819" elapsed="0.004034">Variable '${original_successor}' not found.</status>
</kw>
<doc>Modify Flow in successor and verify it gets applied from all instances.</doc>
<status status="FAIL" start="2026-04-08T00:51:54.514775" elapsed="0.017240">Variable '${original_successor}' not found.</status>
</test>
<test id="s1-s2-t11" name="Delete Configuration In Successor and Verify Before Stop" line="76">
<kw name="Delete Sample Flow And Verify" owner="ClusterOpenFlow">
<msg time="2026-04-08T00:51:54.539872" level="FAIL">Variable '${original_successor}' not found.</msg>
<arg>${original_successor}</arg>
<doc>Delete sample flow in Owner and verify it gets removed from all instances.</doc>
<status status="FAIL" start="2026-04-08T00:51:54.532921" elapsed="0.007001">Variable '${original_successor}' not found.</status>
</kw>
<doc>Delete Flow in Successor and verify it gets removed from all instances.</doc>
<status status="FAIL" start="2026-04-08T00:51:54.532303" elapsed="0.007767">Variable '${original_successor}' not found.</status>
</test>
<test id="s1-s2-t12" name="Send RPC Add to Owner and Verify Before Stop" line="80">
<kw name="Send RPC Add Sample Flow And Verify" owner="ClusterOpenFlow">
<msg time="2026-04-08T00:51:54.552692" level="FAIL">Variable '${original_owner}' not found.</msg>
<arg>${original_owner}</arg>
<doc>Add sample flow in ${controller_index} and verify it gets applied from all instances in ${controller_index_list}.</doc>
<status status="FAIL" start="2026-04-08T00:51:54.548863" elapsed="0.003882">Variable '${original_owner}' not found.</status>
</kw>
<doc>Add Flow in Owner and verify it gets applied from all instances.</doc>
<status status="FAIL" start="2026-04-08T00:51:54.540347" elapsed="0.012560">Variable '${original_owner}' not found.</status>
</test>
<test id="s1-s2-t13" name="Send RPC Delete to Owner and Verify Before Stop" line="84">
<kw name="Send RPC Delete Sample Flow And Verify" owner="ClusterOpenFlow">
<msg time="2026-04-08T00:51:54.567833" level="FAIL">Variable '${original_owner}' not found.</msg>
<arg>${original_owner}</arg>
<doc>Delete sample flow in ${controller_index} and verify it gets removed from all instances in ${controller_index_list}.</doc>
<status status="FAIL" start="2026-04-08T00:51:54.563854" elapsed="0.004023">Variable '${original_owner}' not found.</status>
</kw>
<doc>Delete Flow in Owner and verify it gets removed from all instances.</doc>
<status status="FAIL" start="2026-04-08T00:51:54.553206" elapsed="0.014799">Variable '${original_owner}' not found.</status>
</test>
<test id="s1-s2-t14" name="Send RPC Add to Successor and Verify Before Stop" line="88">
<kw name="Send RPC Add Sample Flow And Verify" owner="ClusterOpenFlow">
<msg time="2026-04-08T00:51:54.580618" level="FAIL">Variable '${original_successor}' not found.</msg>
<arg>${original_successor}</arg>
<doc>Add sample flow in ${controller_index} and verify it gets applied from all instances in ${controller_index_list}.</doc>
<status status="FAIL" start="2026-04-08T00:51:54.576651" elapsed="0.004006">Variable '${original_successor}' not found.</status>
</kw>
<doc>Add Flow in Successor and verify it gets applied from all instances.</doc>
<status status="FAIL" start="2026-04-08T00:51:54.568278" elapsed="0.012509">Variable '${original_successor}' not found.</status>
</test>
<test id="s1-s2-t15" name="Send RPC Delete to Successor and Verify Before Stop" line="92">
<kw name="Send RPC Delete Sample Flow And Verify" owner="ClusterOpenFlow">
<msg time="2026-04-08T00:51:54.593036" level="FAIL">Variable '${original_successor}' not found.</msg>
<arg>${original_successor}</arg>
<doc>Delete sample flow in ${controller_index} and verify it gets removed from all instances in ${controller_index_list}.</doc>
<status status="FAIL" start="2026-04-08T00:51:54.589150" elapsed="0.003924">Variable '${original_successor}' not found.</status>
</kw>
<doc>Delete Flow in Successor and verify it gets removed from all instances.</doc>
<status status="FAIL" start="2026-04-08T00:51:54.581006" elapsed="0.012208">Variable '${original_successor}' not found.</status>
</test>
<test id="s1-s2-t16" name="Modify Network And Verify Before Stop" line="96">
<kw name="Take OpenFlow Device Link Down and Verify" owner="ClusterOpenFlow">
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-08T00:51:54.601393" level="INFO">${dictionary} = {'"link-down":true': '1'}</msg>
<var>${dictionary}</var>
<arg>"link-down":true=1</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-08T00:51:54.600959" elapsed="0.000476"/>
</kw>
<kw name="Send Mininet Command" owner="MininetKeywords">
<if>
<branch type="IF" condition="&quot;&quot;&quot;${mininet_conn}&quot;&quot;&quot; != &quot;&quot;">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${mininet_conn}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:51:54.609094" elapsed="0.000175"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:54.608840" elapsed="0.000465"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:54.608813" elapsed="0.000523"/>
</if>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T00:51:54.613789" level="INFO">link s1 s2 down</msg>
<arg>${cmd}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T00:51:54.609475" elapsed="0.004383"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-08T00:51:54.622882" level="INFO">mininet&gt;</msg>
<msg time="2026-04-08T00:51:54.622990" level="INFO">${output} = mininet&gt;</msg>
<var>${output}</var>
<arg>mininet&gt;</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-08T00:51:54.614016" elapsed="0.009005"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-08T00:51:54.623182" elapsed="0.000054"/>
</return>
<msg time="2026-04-08T00:51:54.623417" level="INFO">${ouput} = mininet&gt;</msg>
<var>${ouput}</var>
<arg>${mininet_conn_id}</arg>
<arg>link s1 s2 down</arg>
<doc>Sends Command ${cmd} to Mininet session ${mininet_conn} and returns read buffer response.</doc>
<status status="PASS" start="2026-04-08T00:51:54.608532" elapsed="0.014920"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Check_Item_Occurrence_Member_List_Or_All" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:51:54.630212" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:51:54.629724" elapsed="0.000517"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:51:54.630721" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:51:54.630405" elapsed="0.000350"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:51:54.630811" elapsed="0.000034"/>
</return>
<msg time="2026-04-08T00:51:54.630971" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:51:54.629333" elapsed="0.001664"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_From_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:54.636494" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:54.636187" elapsed="0.000335"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:51:54.636569" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:51:54.636729" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:51:54.635822" elapsed="0.000938"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:54.643268" level="INFO">/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:54.642997" elapsed="0.000319"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:54.643716" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:54.643470" elapsed="0.000289"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:51:54.652285" level="INFO">GET Request : url=http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01ju7g9ih47awu1dako8be5k84o113.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:51:54.652868" level="INFO">GET Response : url=http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '618'} 
 body={"opendaylight-inventory:node-connector":[{"id":"openflow:1:1","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:maximum-speed":0,"flow-node-inventory:reason":"update","flow-node-inventory:configuration":"PORT-DOWN","flow-node-inventory:port-number":1,"flow-node-inventory:hardware-address":"22:6b:5b:43:c9:13","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s1-eth1","flow-node-inventory:supported":"","flow-node-inventory:state":{"live":false,"blocked":false,"link-down":true}}]} 
 </msg>
<msg time="2026-04-08T00:51:54.653027" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:51:54.645745" elapsed="0.007318"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:54.643831" elapsed="0.009292"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:54.653397" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:54.653182" elapsed="0.000306"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:54.643811" elapsed="0.009707"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:54.658139" level="INFO">{"opendaylight-inventory:node-connector":[{"id":"openflow:1:1","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:maximum-speed":0,"flow-node-inventory:reason":"update","flow-node-inventory:configuration":"PORT-DOWN","flow-node-inventory:port-number":1,"flow-node-inventory:hardware-address":"22:6b:5b:43:c9:13","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s1-eth1","flow-node-inventory:supported":"","flow-node-inventory:state":{"live":false,"blocked":false,"link-down":true}}]}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:54.654958" elapsed="0.003272"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:54.654649" elapsed="0.003630"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:54.654623" elapsed="0.003689"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:54.661702" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:54.658696" elapsed="0.003073"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:54.658389" elapsed="0.003458"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:54.658366" elapsed="0.003517"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:54.662723" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:54.662183" elapsed="0.000568"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:54.663055" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:54.662821" elapsed="0.000291"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:54.663615" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:54.663316" elapsed="0.000325"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:54.663136" elapsed="0.000539"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:54.662802" elapsed="0.000894"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:54.664227" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:54.663851" elapsed="0.000402"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:54.664555" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:54.664323" elapsed="0.000288"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:54.665082" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:54.664791" elapsed="0.000317"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:54.664634" elapsed="0.000509"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:54.664305" elapsed="0.000875"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:51:54.665332" elapsed="0.000375"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:51:54.666200" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:54.665884" elapsed="0.000343"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:51:54.666381" elapsed="0.002212"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:51:54.654046" elapsed="0.014609"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-08T00:51:54.668876" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-08T00:51:54.668724" elapsed="0.000211"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:54.668705" elapsed="0.000254"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:54.669105" elapsed="0.000021"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-08T00:51:54.669189" elapsed="0.000015"/>
</return>
<msg time="2026-04-08T00:51:54.671637" level="INFO">${response_text} = {"opendaylight-inventory:node-connector":[{"id":"openflow:1:1","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed"...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${access}</arg>
<arg>session=${session}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:51:54.637115" elapsed="0.034551"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:51:54.671717" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:51:54.671864" level="INFO">${data} = {"opendaylight-inventory:node-connector":[{"id":"openflow:1:1","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed"...</msg>
<var>${data}</var>
<arg>uri=${uri}</arg>
<arg>member_index=${index}</arg>
<doc>Send a GET with the supplied uri to member ${member_index}.</doc>
<status status="PASS" start="2026-04-08T00:51:54.635321" elapsed="0.036569"/>
</kw>
<kw name="Check Item Occurrence" owner="Utils">
<for flavor="IN">
<iter>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T00:51:54.673057" level="INFO">Item found from container 1 time.</msg>
<arg>${string}</arg>
<arg>${item}</arg>
<arg>${dictionary_item_occurrence}[${item}]</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="PASS" start="2026-04-08T00:51:54.672678" elapsed="0.000449"/>
</kw>
<var name="${item}">"link-down":true</var>
<status status="PASS" start="2026-04-08T00:51:54.672521" elapsed="0.000687"/>
</iter>
<var>${item}</var>
<value>@{dictionary_item_occurrence}</value>
<status status="PASS" start="2026-04-08T00:51:54.672391" elapsed="0.000851"/>
</for>
<arg>${data}</arg>
<arg>${dictionary}</arg>
<doc>Check string for occurrences of items expressed in a list of dictionaries {item=occurrences}. 0 occurences means item is not present.</doc>
<status status="PASS" start="2026-04-08T00:51:54.672116" elapsed="0.001181"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T00:51:54.631230" elapsed="0.042101"/>
</iter>
<iter>
<kw name="Get_From_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:54.678694" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:54.678398" elapsed="0.000323"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:51:54.678766" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:51:54.678912" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:51:54.678042" elapsed="0.000930"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:54.685179" level="INFO">/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:54.684919" elapsed="0.000308"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:54.685615" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:54.685377" elapsed="0.000282"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:51:54.697206" level="INFO">GET Request : url=http://10.30.170.131:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node012m0dyuink19r12kj250j53usg1.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:51:54.697330" level="INFO">GET Response : url=http://10.30.170.131:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '618'} 
 body={"opendaylight-inventory:node-connector":[{"id":"openflow:1:1","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:maximum-speed":0,"flow-node-inventory:reason":"update","flow-node-inventory:configuration":"PORT-DOWN","flow-node-inventory:port-number":1,"flow-node-inventory:hardware-address":"22:6b:5b:43:c9:13","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s1-eth1","flow-node-inventory:supported":"","flow-node-inventory:state":{"live":false,"blocked":false,"link-down":true}}]} 
 </msg>
<msg time="2026-04-08T00:51:54.697425" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:51:54.687670" elapsed="0.009781"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:54.685729" elapsed="0.011765"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:54.697675" elapsed="0.000027"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:54.697520" elapsed="0.000237"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:54.685711" elapsed="0.012082"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:54.702493" level="INFO">{"opendaylight-inventory:node-connector":[{"id":"openflow:1:1","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:maximum-speed":0,"flow-node-inventory:reason":"update","flow-node-inventory:configuration":"PORT-DOWN","flow-node-inventory:port-number":1,"flow-node-inventory:hardware-address":"22:6b:5b:43:c9:13","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s1-eth1","flow-node-inventory:supported":"","flow-node-inventory:state":{"live":false,"blocked":false,"link-down":true}}]}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:54.699275" elapsed="0.003289"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:54.698908" elapsed="0.003704"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:54.698882" elapsed="0.003764"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:54.706131" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:54.703024" elapsed="0.003198"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:54.702723" elapsed="0.003547"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:54.702701" elapsed="0.003604"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:54.706939" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:54.706526" elapsed="0.000440"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:54.707283" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:54.707035" elapsed="0.000305"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:54.707823" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:54.707523" elapsed="0.000325"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:54.707364" elapsed="0.000520"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:54.707017" elapsed="0.000888"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:54.708435" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:54.708062" elapsed="0.000400"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:54.708761" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:54.708530" elapsed="0.000286"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:54.709304" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:54.708996" elapsed="0.000334"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:54.708839" elapsed="0.000525"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:54.708512" elapsed="0.000873"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:51:54.709529" elapsed="0.000350"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:51:54.710362" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:54.710074" elapsed="0.000314"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:51:54.710539" elapsed="0.002295"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:51:54.698333" elapsed="0.014562"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-08T00:51:54.713068" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-08T00:51:54.712965" elapsed="0.000161"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:54.712947" elapsed="0.000203"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:54.713311" elapsed="0.000021"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-08T00:51:54.713381" elapsed="0.000015"/>
</return>
<msg time="2026-04-08T00:51:54.715567" level="INFO">${response_text} = {"opendaylight-inventory:node-connector":[{"id":"openflow:1:1","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed"...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${access}</arg>
<arg>session=${session}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:51:54.679309" elapsed="0.036286"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:51:54.715647" elapsed="0.000032"/>
</return>
<msg time="2026-04-08T00:51:54.715829" level="INFO">${data} = {"opendaylight-inventory:node-connector":[{"id":"openflow:1:1","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed"...</msg>
<var>${data}</var>
<arg>uri=${uri}</arg>
<arg>member_index=${index}</arg>
<doc>Send a GET with the supplied uri to member ${member_index}.</doc>
<status status="PASS" start="2026-04-08T00:51:54.677548" elapsed="0.038313"/>
</kw>
<kw name="Check Item Occurrence" owner="Utils">
<for flavor="IN">
<iter>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T00:51:54.717001" level="INFO">Item found from container 1 time.</msg>
<arg>${string}</arg>
<arg>${item}</arg>
<arg>${dictionary_item_occurrence}[${item}]</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="PASS" start="2026-04-08T00:51:54.716635" elapsed="0.000431"/>
</kw>
<var name="${item}">"link-down":true</var>
<status status="PASS" start="2026-04-08T00:51:54.716484" elapsed="0.000622"/>
</iter>
<var>${item}</var>
<value>@{dictionary_item_occurrence}</value>
<status status="PASS" start="2026-04-08T00:51:54.716357" elapsed="0.000778"/>
</for>
<arg>${data}</arg>
<arg>${dictionary}</arg>
<doc>Check string for occurrences of items expressed in a list of dictionaries {item=occurrences}. 0 occurences means item is not present.</doc>
<status status="PASS" start="2026-04-08T00:51:54.716082" elapsed="0.001122"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T00:51:54.673418" elapsed="0.043820"/>
</iter>
<iter>
<kw name="Get_From_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:54.722501" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:54.722200" elapsed="0.000329"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:51:54.722574" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:51:54.722739" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:51:54.721841" elapsed="0.000928"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:54.729239" level="INFO">/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:54.728968" elapsed="0.000317"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:54.729687" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:54.729438" elapsed="0.000301"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:51:54.741422" level="INFO">GET Request : url=http://10.30.171.110:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0u16rl3earouwvehy59feej101.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:51:54.741593" level="INFO">GET Response : url=http://10.30.171.110:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '618'} 
 body={"opendaylight-inventory:node-connector":[{"id":"openflow:1:1","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:maximum-speed":0,"flow-node-inventory:reason":"update","flow-node-inventory:configuration":"PORT-DOWN","flow-node-inventory:port-number":1,"flow-node-inventory:hardware-address":"22:6b:5b:43:c9:13","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s1-eth1","flow-node-inventory:supported":"","flow-node-inventory:state":{"live":false,"blocked":false,"link-down":true}}]} 
 </msg>
<msg time="2026-04-08T00:51:54.741725" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:51:54.731797" elapsed="0.009964"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:54.729836" elapsed="0.012052"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:54.742138" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:54.741927" elapsed="0.000323"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:54.729813" elapsed="0.012466"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:54.747111" level="INFO">{"opendaylight-inventory:node-connector":[{"id":"openflow:1:1","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:maximum-speed":0,"flow-node-inventory:reason":"update","flow-node-inventory:configuration":"PORT-DOWN","flow-node-inventory:port-number":1,"flow-node-inventory:hardware-address":"22:6b:5b:43:c9:13","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s1-eth1","flow-node-inventory:supported":"","flow-node-inventory:state":{"live":false,"blocked":false,"link-down":true}}]}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:54.743657" elapsed="0.003545"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:54.743352" elapsed="0.003900"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:54.743326" elapsed="0.003960"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:54.751132" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:54.747674" elapsed="0.003550"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:54.747364" elapsed="0.003912"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:54.747341" elapsed="0.003972"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:54.752111" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:54.751561" elapsed="0.000588"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:54.752613" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:54.752276" elapsed="0.000420"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:54.753402" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:54.752956" elapsed="0.000483"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:54.752730" elapsed="0.000761"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:54.752249" elapsed="0.001273"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:54.754309" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:54.753745" elapsed="0.000603"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:54.754777" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:54.754448" elapsed="0.000410"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:54.755556" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:54.755115" elapsed="0.000478"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:54.754892" elapsed="0.000752"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:54.754422" elapsed="0.001253"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:51:54.755888" elapsed="0.000513"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:51:54.757022" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:54.756629" elapsed="0.000430"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:51:54.757298" elapsed="0.002792"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:51:54.742745" elapsed="0.017423"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-08T00:51:54.760350" elapsed="0.000032"/>
</return>
<status status="PASS" start="2026-04-08T00:51:54.760242" elapsed="0.000173"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:54.760223" elapsed="0.000216"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:54.760584" elapsed="0.000021"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-08T00:51:54.760653" elapsed="0.000015"/>
</return>
<msg time="2026-04-08T00:51:54.762855" level="INFO">${response_text} = {"opendaylight-inventory:node-connector":[{"id":"openflow:1:1","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed"...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${access}</arg>
<arg>session=${session}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:51:54.723112" elapsed="0.039772"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:51:54.762980" elapsed="0.000031"/>
</return>
<msg time="2026-04-08T00:51:54.763140" level="INFO">${data} = {"opendaylight-inventory:node-connector":[{"id":"openflow:1:1","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed"...</msg>
<var>${data}</var>
<arg>uri=${uri}</arg>
<arg>member_index=${index}</arg>
<doc>Send a GET with the supplied uri to member ${member_index}.</doc>
<status status="PASS" start="2026-04-08T00:51:54.721348" elapsed="0.041834"/>
</kw>
<kw name="Check Item Occurrence" owner="Utils">
<for flavor="IN">
<iter>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T00:51:54.764400" level="INFO">Item found from container 1 time.</msg>
<arg>${string}</arg>
<arg>${item}</arg>
<arg>${dictionary_item_occurrence}[${item}]</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="PASS" start="2026-04-08T00:51:54.764004" elapsed="0.000466"/>
</kw>
<var name="${item}">"link-down":true</var>
<status status="PASS" start="2026-04-08T00:51:54.763847" elapsed="0.000665"/>
</iter>
<var>${item}</var>
<value>@{dictionary_item_occurrence}</value>
<status status="PASS" start="2026-04-08T00:51:54.763708" elapsed="0.000835"/>
</for>
<arg>${data}</arg>
<arg>${dictionary}</arg>
<doc>Check string for occurrences of items expressed in a list of dictionaries {item=occurrences}. 0 occurences means item is not present.</doc>
<status status="PASS" start="2026-04-08T00:51:54.763430" elapsed="0.001169"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T00:51:54.717324" elapsed="0.047310"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-08T00:51:54.631057" elapsed="0.133606"/>
</for>
<arg>uri=${operational_port_1}</arg>
<arg>dictionary=${dictionary}</arg>
<arg>member_index_list=${controller_index_list}</arg>
<doc>Send a GET with the supplied uri to all or some members defined in ${member_index_list}.
Then check received for occurrences of items expressed in a dictionary {'"link-down":true': '1'}.</doc>
<status status="PASS" start="2026-04-08T00:51:54.628715" elapsed="0.136001"/>
</kw>
<arg>5s</arg>
<arg>1s</arg>
<arg>ClusterManagement.Check_Item_Occurrence_Member_List_Or_All</arg>
<arg>uri=${operational_port_1}</arg>
<arg>dictionary=${dictionary}</arg>
<arg>member_index_list=${controller_index_list}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-08T00:51:54.623672" elapsed="0.141106"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-08T00:51:54.765344" level="INFO">${dictionary} = {'openflow:1': '16', 'openflow:2': '14', 'openflow:3': '19'}</msg>
<var>${dictionary}</var>
<arg>openflow:1=16</arg>
<arg>openflow:2=14</arg>
<arg>openflow:3=19</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-08T00:51:54.764977" elapsed="0.000394"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Check_Item_Occurrence_Member_List_Or_All" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:51:54.771497" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:51:54.771088" elapsed="0.000436"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:51:54.771993" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:51:54.771684" elapsed="0.000335"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:51:54.772064" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:51:54.772240" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:51:54.770669" elapsed="0.001597"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_From_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:54.777988" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:54.777669" elapsed="0.000346"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:51:54.778060" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:51:54.778235" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:51:54.777325" elapsed="0.000936"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:54.784491" level="INFO">/rests/data/network-topology:network-topology?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:54.784237" elapsed="0.000301"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:54.784938" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:54.784691" elapsed="0.000291"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:51:54.794316" level="INFO">GET Request : url=http://10.30.170.48:8181/rests/data/network-topology:network-topology?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01ju7g9ih47awu1dako8be5k84o113.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:51:54.794526" level="INFO">GET Response : url=http://10.30.170.48:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '2833'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"},{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:3']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:3:3","source":{"source-node":"openflow:3","source-tp":"openflow:3:3"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:3:3","dest-node":"openflow:3"}}]}]}} 
 </msg>
<msg time="2026-04-08T00:51:54.794684" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:51:54.787099" elapsed="0.007612"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:54.785052" elapsed="0.009703"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:54.794936" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:54.794784" elapsed="0.000215"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:54.785032" elapsed="0.009988"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:54.798441" level="INFO">{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"},{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:3']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:3:3","source":{"source-node":"openflow:3","source-tp":"openflow:3:3"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:3:3","dest-node":"openflow:3"}}]}]}}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:54.796016" elapsed="0.002491"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:54.795798" elapsed="0.002744"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:54.795778" elapsed="0.002789"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:54.802005" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:54.798894" elapsed="0.003175"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:54.798623" elapsed="0.003494"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:54.798606" elapsed="0.003545"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:54.802923" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:54.802398" elapsed="0.000562"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:54.803406" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:54.803057" elapsed="0.000430"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:54.804185" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:54.803748" elapsed="0.000476"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:54.803520" elapsed="0.000754"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:54.803032" elapsed="0.001272"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:54.805020" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:54.804520" elapsed="0.000536"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:54.805502" elapsed="0.000029"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:54.805172" elapsed="0.000408"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:54.806289" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:54.805853" elapsed="0.000472"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:54.805612" elapsed="0.000762"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:54.805128" elapsed="0.001276"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:51:54.806608" elapsed="0.000474"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:51:54.807711" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:54.807330" elapsed="0.000461"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:51:54.808008" elapsed="0.003128"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:51:54.795382" elapsed="0.015832"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-08T00:51:54.811390" elapsed="0.000028"/>
</return>
<status status="PASS" start="2026-04-08T00:51:54.811285" elapsed="0.000165"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:54.811266" elapsed="0.000208"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:54.811620" elapsed="0.000021"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-08T00:51:54.811690" elapsed="0.000017"/>
</return>
<msg time="2026-04-08T00:51:54.813967" level="INFO">${response_text} = {"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='o...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${access}</arg>
<arg>session=${session}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:51:54.778587" elapsed="0.035408"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:51:54.814046" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:51:54.814212" level="INFO">${data} = {"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='o...</msg>
<var>${data}</var>
<arg>uri=${uri}</arg>
<arg>member_index=${index}</arg>
<doc>Send a GET with the supplied uri to member ${member_index}.</doc>
<status status="PASS" start="2026-04-08T00:51:54.776826" elapsed="0.037412"/>
</kw>
<kw name="Check Item Occurrence" owner="Utils">
<for flavor="IN">
<iter>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T00:51:54.815399" level="INFO">Item found from container 16 times.</msg>
<arg>${string}</arg>
<arg>${item}</arg>
<arg>${dictionary_item_occurrence}[${item}]</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="PASS" start="2026-04-08T00:51:54.815008" elapsed="0.000471"/>
</kw>
<var name="${item}">openflow:1</var>
<status status="PASS" start="2026-04-08T00:51:54.814855" elapsed="0.000664"/>
</iter>
<iter>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T00:51:54.816108" level="INFO">Item found from container 14 times.</msg>
<arg>${string}</arg>
<arg>${item}</arg>
<arg>${dictionary_item_occurrence}[${item}]</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="PASS" start="2026-04-08T00:51:54.815749" elapsed="0.000451"/>
</kw>
<var name="${item}">openflow:2</var>
<status status="PASS" start="2026-04-08T00:51:54.815598" elapsed="0.000642"/>
</iter>
<iter>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T00:51:54.816829" level="INFO">Item found from container 19 times.</msg>
<arg>${string}</arg>
<arg>${item}</arg>
<arg>${dictionary_item_occurrence}[${item}]</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="PASS" start="2026-04-08T00:51:54.816471" elapsed="0.000435"/>
</kw>
<var name="${item}">openflow:3</var>
<status status="PASS" start="2026-04-08T00:51:54.816318" elapsed="0.000626"/>
</iter>
<var>${item}</var>
<value>@{dictionary_item_occurrence}</value>
<status status="PASS" start="2026-04-08T00:51:54.814725" elapsed="0.002248"/>
</for>
<arg>${data}</arg>
<arg>${dictionary}</arg>
<doc>Check string for occurrences of items expressed in a list of dictionaries {item=occurrences}. 0 occurences means item is not present.</doc>
<status status="PASS" start="2026-04-08T00:51:54.814465" elapsed="0.002560"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T00:51:54.772451" elapsed="0.044609"/>
</iter>
<iter>
<kw name="Get_From_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:54.822362" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:54.822045" elapsed="0.000344"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:51:54.822433" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:51:54.822579" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:51:54.821666" elapsed="0.000938"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:54.828795" level="INFO">/rests/data/network-topology:network-topology?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:54.828549" elapsed="0.000291"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:54.829252" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:54.828992" elapsed="0.000304"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:51:54.841239" level="INFO">GET Request : url=http://10.30.170.131:8181/rests/data/network-topology:network-topology?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node012m0dyuink19r12kj250j53usg1.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:51:54.841486" level="INFO">GET Response : url=http://10.30.170.131:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '2833'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"},{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:3']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:3:3","source":{"source-node":"openflow:3","source-tp":"openflow:3:3"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:3:3","dest-node":"openflow:3"}}]}]}} 
 </msg>
<msg time="2026-04-08T00:51:54.841636" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:51:54.831324" elapsed="0.010339"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:54.829363" elapsed="0.012355"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:54.842147" elapsed="0.000083"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:54.841807" elapsed="0.000520"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:54.829345" elapsed="0.013030"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:54.850521" level="INFO">{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"},{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:3']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:3:3","source":{"source-node":"openflow:3","source-tp":"openflow:3:3"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:3:3","dest-node":"openflow:3"}}]}]}}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:54.844629" elapsed="0.006041"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:54.844106" elapsed="0.006625"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:54.844063" elapsed="0.006693"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:54.853258" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:54.851036" elapsed="0.002269"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:54.850812" elapsed="0.002527"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:54.850795" elapsed="0.002568"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:54.853912" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:54.853526" elapsed="0.000413"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:54.854262" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:54.854010" elapsed="0.000311"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:54.854807" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:54.854507" elapsed="0.000326"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:54.854345" elapsed="0.000523"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:54.853992" elapsed="0.000898"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:54.855427" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:54.855048" elapsed="0.000406"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:54.855756" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:54.855524" elapsed="0.000288"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:54.856302" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:54.855992" elapsed="0.000335"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:54.855835" elapsed="0.000527"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:54.855505" elapsed="0.000879"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:51:54.856530" elapsed="0.000340"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:51:54.857316" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:54.857032" elapsed="0.000341"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:51:54.857529" elapsed="0.002185"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:51:54.843142" elapsed="0.016635"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-08T00:51:54.859951" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-08T00:51:54.859847" elapsed="0.000163"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:54.859828" elapsed="0.000205"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:54.860193" elapsed="0.000022"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-08T00:51:54.860263" elapsed="0.000015"/>
</return>
<msg time="2026-04-08T00:51:54.862562" level="INFO">${response_text} = {"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='o...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${access}</arg>
<arg>session=${session}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:51:54.822924" elapsed="0.039666"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:51:54.862642" elapsed="0.000027"/>
</return>
<msg time="2026-04-08T00:51:54.862791" level="INFO">${data} = {"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='o...</msg>
<var>${data}</var>
<arg>uri=${uri}</arg>
<arg>member_index=${index}</arg>
<doc>Send a GET with the supplied uri to member ${member_index}.</doc>
<status status="PASS" start="2026-04-08T00:51:54.821184" elapsed="0.041633"/>
</kw>
<kw name="Check Item Occurrence" owner="Utils">
<for flavor="IN">
<iter>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T00:51:54.863972" level="INFO">Item found from container 16 times.</msg>
<arg>${string}</arg>
<arg>${item}</arg>
<arg>${dictionary_item_occurrence}[${item}]</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="PASS" start="2026-04-08T00:51:54.863599" elapsed="0.000452"/>
</kw>
<var name="${item}">openflow:1</var>
<status status="PASS" start="2026-04-08T00:51:54.863446" elapsed="0.000644"/>
</iter>
<iter>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T00:51:54.864703" level="INFO">Item found from container 14 times.</msg>
<arg>${string}</arg>
<arg>${item}</arg>
<arg>${dictionary_item_occurrence}[${item}]</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="PASS" start="2026-04-08T00:51:54.864339" elapsed="0.000439"/>
</kw>
<var name="${item}">openflow:2</var>
<status status="PASS" start="2026-04-08T00:51:54.864185" elapsed="0.000632"/>
</iter>
<iter>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T00:51:54.865428" level="INFO">Item found from container 19 times.</msg>
<arg>${string}</arg>
<arg>${item}</arg>
<arg>${dictionary_item_occurrence}[${item}]</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="PASS" start="2026-04-08T00:51:54.865047" elapsed="0.000456"/>
</kw>
<var name="${item}">openflow:3</var>
<status status="PASS" start="2026-04-08T00:51:54.864896" elapsed="0.000646"/>
</iter>
<var>${item}</var>
<value>@{dictionary_item_occurrence}</value>
<status status="PASS" start="2026-04-08T00:51:54.863316" elapsed="0.002254"/>
</for>
<arg>${data}</arg>
<arg>${dictionary}</arg>
<doc>Check string for occurrences of items expressed in a list of dictionaries {item=occurrences}. 0 occurences means item is not present.</doc>
<status status="PASS" start="2026-04-08T00:51:54.863040" elapsed="0.002581"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T00:51:54.817145" elapsed="0.048510"/>
</iter>
<iter>
<kw name="Get_From_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:54.870918" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:54.870623" elapsed="0.000322"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:51:54.870989" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:51:54.871133" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:51:54.870282" elapsed="0.000890"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:54.877623" level="INFO">/rests/data/network-topology:network-topology?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:54.877375" elapsed="0.000295"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:54.878089" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:54.877844" elapsed="0.000289"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:51:54.889383" level="INFO">GET Request : url=http://10.30.171.110:8181/rests/data/network-topology:network-topology?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0u16rl3earouwvehy59feej101.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:51:54.889588" level="INFO">GET Response : url=http://10.30.171.110:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '2833'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"},{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:3']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:3:3","source":{"source-node":"openflow:3","source-tp":"openflow:3:3"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:3:3","dest-node":"openflow:3"}}]}]}} 
 </msg>
<msg time="2026-04-08T00:51:54.889764" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:51:54.880175" elapsed="0.009616"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:54.878219" elapsed="0.011616"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:54.890016" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:54.889863" elapsed="0.000217"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:54.878200" elapsed="0.011900"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:54.893542" level="INFO">{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"},{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:3']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:3:3","source":{"source-node":"openflow:3","source-tp":"openflow:3:3"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:3:3","dest-node":"openflow:3"}}]}]}}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:54.891115" elapsed="0.002493"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:54.890893" elapsed="0.002749"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:54.890874" elapsed="0.002792"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:54.896751" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:54.893994" elapsed="0.002821"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:54.893762" elapsed="0.003100"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:54.893739" elapsed="0.003157"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:54.897659" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:54.897118" elapsed="0.000604"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:54.898188" elapsed="0.000032"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:54.897842" elapsed="0.000429"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:54.898945" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:54.898527" elapsed="0.000454"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:54.898303" elapsed="0.000728"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:54.897815" elapsed="0.001245"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:54.899814" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:54.899302" elapsed="0.000549"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:54.900296" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:54.899948" elapsed="0.000427"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:54.901035" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:54.900627" elapsed="0.000445"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:54.900408" elapsed="0.000713"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:54.899923" elapsed="0.001227"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:51:54.901383" elapsed="0.000534"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:51:54.902551" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:54.902147" elapsed="0.000484"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:51:54.902805" elapsed="0.002187"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:51:54.890463" elapsed="0.014593"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-08T00:51:54.905248" elapsed="0.000029"/>
</return>
<status status="PASS" start="2026-04-08T00:51:54.905126" elapsed="0.000184"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:54.905107" elapsed="0.000227"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:54.905481" elapsed="0.000021"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-08T00:51:54.905549" elapsed="0.000015"/>
</return>
<msg time="2026-04-08T00:51:54.907880" level="INFO">${response_text} = {"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='o...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${access}</arg>
<arg>session=${session}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:51:54.871495" elapsed="0.036415"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:51:54.907962" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:51:54.908115" level="INFO">${data} = {"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='o...</msg>
<var>${data}</var>
<arg>uri=${uri}</arg>
<arg>member_index=${index}</arg>
<doc>Send a GET with the supplied uri to member ${member_index}.</doc>
<status status="PASS" start="2026-04-08T00:51:54.869789" elapsed="0.038352"/>
</kw>
<kw name="Check Item Occurrence" owner="Utils">
<for flavor="IN">
<iter>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T00:51:54.909395" level="INFO">Item found from container 16 times.</msg>
<arg>${string}</arg>
<arg>${item}</arg>
<arg>${dictionary_item_occurrence}[${item}]</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="PASS" start="2026-04-08T00:51:54.908953" elapsed="0.000526"/>
</kw>
<var name="${item}">openflow:1</var>
<status status="PASS" start="2026-04-08T00:51:54.908795" elapsed="0.000725"/>
</iter>
<iter>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T00:51:54.910195" level="INFO">Item found from container 14 times.</msg>
<arg>${string}</arg>
<arg>${item}</arg>
<arg>${dictionary_item_occurrence}[${item}]</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="PASS" start="2026-04-08T00:51:54.909796" elapsed="0.000479"/>
</kw>
<var name="${item}">openflow:2</var>
<status status="PASS" start="2026-04-08T00:51:54.909604" elapsed="0.000712"/>
</iter>
<iter>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T00:51:54.910937" level="INFO">Item found from container 19 times.</msg>
<arg>${string}</arg>
<arg>${item}</arg>
<arg>${dictionary_item_occurrence}[${item}]</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="PASS" start="2026-04-08T00:51:54.910551" elapsed="0.000476"/>
</kw>
<var name="${item}">openflow:3</var>
<status status="PASS" start="2026-04-08T00:51:54.910397" elapsed="0.000674"/>
</iter>
<var>${item}</var>
<value>@{dictionary_item_occurrence}</value>
<status status="PASS" start="2026-04-08T00:51:54.908658" elapsed="0.002443"/>
</for>
<arg>${data}</arg>
<arg>${dictionary}</arg>
<doc>Check string for occurrences of items expressed in a list of dictionaries {item=occurrences}. 0 occurences means item is not present.</doc>
<status status="PASS" start="2026-04-08T00:51:54.908390" elapsed="0.002799"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T00:51:54.865755" elapsed="0.045479"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-08T00:51:54.772317" elapsed="0.138948"/>
</for>
<arg>uri=${RFC8040_OPERATIONAL_TOPO_API}</arg>
<arg>dictionary=${dictionary}</arg>
<arg>member_index_list=${controller_index_list}</arg>
<doc>Send a GET with the supplied uri to all or some members defined in ${member_index_list}.
Then check received for occurrences of items expressed in a dictionary {'openflow:1': '16', 'openflow:2': '14', 'openflow:3': '19'}.</doc>
<status status="PASS" start="2026-04-08T00:51:54.770085" elapsed="0.141237"/>
</kw>
<arg>20s</arg>
<arg>2s</arg>
<arg>ClusterManagement.Check_Item_Occurrence_Member_List_Or_All</arg>
<arg>uri=${RFC8040_OPERATIONAL_TOPO_API}</arg>
<arg>dictionary=${dictionary}</arg>
<arg>member_index_list=${controller_index_list}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-08T00:51:54.765565" elapsed="0.145817"/>
</kw>
<doc>Take a link down and verify port status in all instances in ${controller_index_list}.</doc>
<status status="PASS" start="2026-04-08T00:51:54.597816" elapsed="0.313633"/>
</kw>
<doc>Take a link down and verify port status in all instances.</doc>
<status status="PASS" start="2026-04-08T00:51:54.593393" elapsed="0.318180"/>
</test>
<test id="s1-s2-t17" name="Restore Network And Verify Before Stop" line="100">
<kw name="Take OpenFlow Device Link Up and Verify" owner="ClusterOpenFlow">
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-08T00:51:54.918760" level="INFO">${dictionary} = {'"link-down":true': '0'}</msg>
<var>${dictionary}</var>
<arg>"link-down":true=0</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-08T00:51:54.918436" elapsed="0.000353"/>
</kw>
<kw name="Send Mininet Command" owner="MininetKeywords">
<if>
<branch type="IF" condition="&quot;&quot;&quot;${mininet_conn}&quot;&quot;&quot; != &quot;&quot;">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${mininet_conn}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:51:54.926325" elapsed="0.000148"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:54.926082" elapsed="0.000428"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:54.926063" elapsed="0.000472"/>
</if>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T00:51:54.929100" level="INFO">link s1 s2 up</msg>
<arg>${cmd}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T00:51:54.926673" elapsed="0.002499"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-08T00:51:54.933513" level="INFO">mininet&gt;</msg>
<msg time="2026-04-08T00:51:54.933603" level="INFO">${output} = mininet&gt;</msg>
<var>${output}</var>
<arg>mininet&gt;</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-08T00:51:54.929333" elapsed="0.004294"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-08T00:51:54.933737" elapsed="0.000037"/>
</return>
<msg time="2026-04-08T00:51:54.933898" level="INFO">${ouput} = mininet&gt;</msg>
<var>${ouput}</var>
<arg>${mininet_conn_id}</arg>
<arg>link s1 s2 up</arg>
<doc>Sends Command ${cmd} to Mininet session ${mininet_conn} and returns read buffer response.</doc>
<status status="PASS" start="2026-04-08T00:51:54.925794" elapsed="0.008129"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Check_Item_Occurrence_Member_List_Or_All" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:51:54.939940" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:51:54.939557" elapsed="0.000409"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:51:54.940446" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:51:54.940123" elapsed="0.000350"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:51:54.940516" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:51:54.940670" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:51:54.939182" elapsed="0.001513"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_From_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:54.946110" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:54.945812" elapsed="0.000325"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:51:54.946203" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:51:54.946353" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:51:54.945438" elapsed="0.000941"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:54.952816" level="INFO">/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:54.952559" elapsed="0.000303"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:54.953278" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:54.953016" elapsed="0.000307"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:51:54.960542" level="INFO">GET Request : url=http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01ju7g9ih47awu1dako8be5k84o113.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:51:54.961062" level="INFO">GET Response : url=http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '609'} 
 body={"opendaylight-inventory:node-connector":[{"id":"openflow:1:1","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:maximum-speed":0,"flow-node-inventory:reason":"update","flow-node-inventory:configuration":"","flow-node-inventory:port-number":1,"flow-node-inventory:hardware-address":"22:6b:5b:43:c9:13","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s1-eth1","flow-node-inventory:supported":"","flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false}}]} 
 </msg>
<msg time="2026-04-08T00:51:54.961193" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:51:54.955435" elapsed="0.005786"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:54.953391" elapsed="0.007877"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:54.961476" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:54.961300" elapsed="0.000240"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:54.953372" elapsed="0.008189"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:54.964994" level="INFO">{"opendaylight-inventory:node-connector":[{"id":"openflow:1:1","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:maximum-speed":0,"flow-node-inventory:reason":"update","flow-node-inventory:configuration":"","flow-node-inventory:port-number":1,"flow-node-inventory:hardware-address":"22:6b:5b:43:c9:13","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s1-eth1","flow-node-inventory:supported":"","flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false}}]}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:54.962655" elapsed="0.002389"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:54.962428" elapsed="0.002649"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:54.962409" elapsed="0.002693"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:54.967952" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:54.965389" elapsed="0.002629"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:54.965170" elapsed="0.002896"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:54.965140" elapsed="0.002961"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:54.968997" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:54.968444" elapsed="0.000592"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:54.969494" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:54.969137" elapsed="0.000439"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:54.970317" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:54.969862" elapsed="0.000493"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:54.969610" elapsed="0.000794"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:54.969110" elapsed="0.001325"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:54.971199" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:54.970658" elapsed="0.000580"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:54.971669" elapsed="0.000029"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:54.971339" elapsed="0.000409"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:54.972448" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:54.972002" elapsed="0.000483"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:54.971783" elapsed="0.000753"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:54.971313" elapsed="0.001253"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:51:54.972782" elapsed="0.000512"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:51:54.973961" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:54.973523" elapsed="0.000475"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:51:54.974233" elapsed="0.003138"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:51:54.961968" elapsed="0.015491"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-08T00:51:54.977802" elapsed="0.000053"/>
</return>
<status status="PASS" start="2026-04-08T00:51:54.977557" elapsed="0.000350"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:54.977531" elapsed="0.000411"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:54.978153" elapsed="0.000061"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-08T00:51:54.978284" elapsed="0.000021"/>
</return>
<msg time="2026-04-08T00:51:54.980598" level="INFO">${response_text} = {"opendaylight-inventory:node-connector":[{"id":"openflow:1:1","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed"...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${access}</arg>
<arg>session=${session}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:51:54.946703" elapsed="0.033924"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:51:54.980679" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:51:54.980837" level="INFO">${data} = {"opendaylight-inventory:node-connector":[{"id":"openflow:1:1","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed"...</msg>
<var>${data}</var>
<arg>uri=${uri}</arg>
<arg>member_index=${index}</arg>
<doc>Send a GET with the supplied uri to member ${member_index}.</doc>
<status status="PASS" start="2026-04-08T00:51:54.944922" elapsed="0.035943"/>
</kw>
<kw name="Check Item Occurrence" owner="Utils">
<for flavor="IN">
<iter>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T00:51:54.982140" level="INFO">Item found from container 0 times.</msg>
<arg>${string}</arg>
<arg>${item}</arg>
<arg>${dictionary_item_occurrence}[${item}]</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="PASS" start="2026-04-08T00:51:54.981759" elapsed="0.000468"/>
</kw>
<var name="${item}">"link-down":true</var>
<status status="PASS" start="2026-04-08T00:51:54.981587" elapsed="0.000680"/>
</iter>
<var>${item}</var>
<value>@{dictionary_item_occurrence}</value>
<status status="PASS" start="2026-04-08T00:51:54.981444" elapsed="0.000855"/>
</for>
<arg>${data}</arg>
<arg>${dictionary}</arg>
<doc>Check string for occurrences of items expressed in a list of dictionaries {item=occurrences}. 0 occurences means item is not present.</doc>
<status status="PASS" start="2026-04-08T00:51:54.981098" elapsed="0.001255"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T00:51:54.940879" elapsed="0.041508"/>
</iter>
<iter>
<kw name="Get_From_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:54.989530" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:54.989231" elapsed="0.000326"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:51:54.989602" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:51:54.989780" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:51:54.988875" elapsed="0.000976"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:54.996192" level="INFO">/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:54.995928" elapsed="0.000310"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:54.996637" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:54.996390" elapsed="0.000292"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:51:55.007704" level="INFO">GET Request : url=http://10.30.170.131:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node012m0dyuink19r12kj250j53usg1.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:51:55.007853" level="INFO">GET Response : url=http://10.30.170.131:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '609'} 
 body={"opendaylight-inventory:node-connector":[{"id":"openflow:1:1","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:maximum-speed":0,"flow-node-inventory:reason":"update","flow-node-inventory:configuration":"","flow-node-inventory:port-number":1,"flow-node-inventory:hardware-address":"22:6b:5b:43:c9:13","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s1-eth1","flow-node-inventory:supported":"","flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false}}]} 
 </msg>
<msg time="2026-04-08T00:51:55.007982" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:51:54.998709" elapsed="0.009301"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:54.996749" elapsed="0.011311"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:55.008296" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:55.008093" elapsed="0.000270"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:54.996730" elapsed="0.011655"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:55.011843" level="INFO">{"opendaylight-inventory:node-connector":[{"id":"openflow:1:1","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:maximum-speed":0,"flow-node-inventory:reason":"update","flow-node-inventory:configuration":"","flow-node-inventory:port-number":1,"flow-node-inventory:hardware-address":"22:6b:5b:43:c9:13","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s1-eth1","flow-node-inventory:supported":"","flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false}}]}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:55.009460" elapsed="0.002435"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:55.009232" elapsed="0.002699"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:55.009212" elapsed="0.002744"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:55.014451" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:55.012249" elapsed="0.002249"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:55.012012" elapsed="0.002520"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:55.011995" elapsed="0.002561"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:55.015121" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:55.014730" elapsed="0.000418"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:55.015471" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:55.015236" elapsed="0.000293"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:55.016012" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:55.015711" elapsed="0.000327"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:55.015553" elapsed="0.000521"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:55.015218" elapsed="0.000877"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:55.016631" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:55.016271" elapsed="0.000387"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:55.016958" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:55.016727" elapsed="0.000286"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:55.017509" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:55.017212" elapsed="0.000324"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:55.017037" elapsed="0.000534"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:55.016709" elapsed="0.000884"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:51:55.017775" elapsed="0.000345"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:51:55.018643" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:55.018355" elapsed="0.000315"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:51:55.018829" elapsed="0.002385"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:51:55.008765" elapsed="0.012517"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-08T00:51:55.021464" elapsed="0.000034"/>
</return>
<status status="PASS" start="2026-04-08T00:51:55.021355" elapsed="0.000177"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:55.021335" elapsed="0.000222"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:55.021718" elapsed="0.000022"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-08T00:51:55.021790" elapsed="0.000015"/>
</return>
<msg time="2026-04-08T00:51:55.024030" level="INFO">${response_text} = {"opendaylight-inventory:node-connector":[{"id":"openflow:1:1","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed"...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${access}</arg>
<arg>session=${session}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:51:54.990205" elapsed="0.033855"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:51:55.024113" elapsed="0.000027"/>
</return>
<msg time="2026-04-08T00:51:55.024283" level="INFO">${data} = {"opendaylight-inventory:node-connector":[{"id":"openflow:1:1","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed"...</msg>
<var>${data}</var>
<arg>uri=${uri}</arg>
<arg>member_index=${index}</arg>
<doc>Send a GET with the supplied uri to member ${member_index}.</doc>
<status status="PASS" start="2026-04-08T00:51:54.988382" elapsed="0.035928"/>
</kw>
<kw name="Check Item Occurrence" owner="Utils">
<for flavor="IN">
<iter>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T00:51:55.025547" level="INFO">Item found from container 0 times.</msg>
<arg>${string}</arg>
<arg>${item}</arg>
<arg>${dictionary_item_occurrence}[${item}]</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="PASS" start="2026-04-08T00:51:55.025142" elapsed="0.000473"/>
</kw>
<var name="${item}">"link-down":true</var>
<status status="PASS" start="2026-04-08T00:51:55.024983" elapsed="0.000692"/>
</iter>
<var>${item}</var>
<value>@{dictionary_item_occurrence}</value>
<status status="PASS" start="2026-04-08T00:51:55.024844" elapsed="0.000868"/>
</for>
<arg>${data}</arg>
<arg>${dictionary}</arg>
<doc>Check string for occurrences of items expressed in a list of dictionaries {item=occurrences}. 0 occurences means item is not present.</doc>
<status status="PASS" start="2026-04-08T00:51:55.024567" elapsed="0.001200"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T00:51:54.982476" elapsed="0.043326"/>
</iter>
<iter>
<kw name="Get_From_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:55.031108" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:55.030809" elapsed="0.000326"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:51:55.031197" elapsed="0.000031"/>
</return>
<msg time="2026-04-08T00:51:55.031349" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:51:55.030469" elapsed="0.000905"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:55.037777" level="INFO">/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:55.037499" elapsed="0.000325"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:55.038231" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:55.037975" elapsed="0.000300"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:51:55.050495" level="INFO">GET Request : url=http://10.30.171.110:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0u16rl3earouwvehy59feej101.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:51:55.050674" level="INFO">GET Response : url=http://10.30.171.110:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '609'} 
 body={"opendaylight-inventory:node-connector":[{"id":"openflow:1:1","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:maximum-speed":0,"flow-node-inventory:reason":"update","flow-node-inventory:configuration":"","flow-node-inventory:port-number":1,"flow-node-inventory:hardware-address":"22:6b:5b:43:c9:13","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s1-eth1","flow-node-inventory:supported":"","flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false}}]} 
 </msg>
<msg time="2026-04-08T00:51:55.050811" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:51:55.040409" elapsed="0.010438"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:55.038343" elapsed="0.012632"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:55.051249" elapsed="0.000032"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:55.051013" elapsed="0.000328"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:55.038324" elapsed="0.013047"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:55.056225" level="INFO">{"opendaylight-inventory:node-connector":[{"id":"openflow:1:1","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:maximum-speed":0,"flow-node-inventory:reason":"update","flow-node-inventory:configuration":"","flow-node-inventory:port-number":1,"flow-node-inventory:hardware-address":"22:6b:5b:43:c9:13","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s1-eth1","flow-node-inventory:supported":"","flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false}}]}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:55.052768" elapsed="0.003530"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:55.052465" elapsed="0.003882"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:55.052439" elapsed="0.003943"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:55.059833" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:55.056768" elapsed="0.003129"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:55.056461" elapsed="0.003484"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:55.056437" elapsed="0.003542"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:55.060792" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:55.060229" elapsed="0.000601"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:55.061278" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:55.060929" elapsed="0.000431"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:55.062062" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:55.061615" elapsed="0.000484"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:55.061392" elapsed="0.000758"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:55.060904" elapsed="0.001299"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:55.062926" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:55.062424" elapsed="0.000540"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:55.063410" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:55.063062" elapsed="0.000428"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:55.064155" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:55.063746" elapsed="0.000466"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:55.063522" elapsed="0.000740"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:55.063036" elapsed="0.001257"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:51:55.064501" elapsed="0.000480"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:51:55.065610" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:55.065228" elapsed="0.000436"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:51:55.065879" elapsed="0.003060"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:51:55.051855" elapsed="0.017170"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-08T00:51:55.069292" elapsed="0.000038"/>
</return>
<status status="PASS" start="2026-04-08T00:51:55.069123" elapsed="0.000253"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:55.069097" elapsed="0.000312"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:55.069611" elapsed="0.000068"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-08T00:51:55.069751" elapsed="0.000021"/>
</return>
<msg time="2026-04-08T00:51:55.072219" level="INFO">${response_text} = {"opendaylight-inventory:node-connector":[{"id":"openflow:1:1","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed"...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${access}</arg>
<arg>session=${session}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:51:55.031709" elapsed="0.040539"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:51:55.072335" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:51:55.072490" level="INFO">${data} = {"opendaylight-inventory:node-connector":[{"id":"openflow:1:1","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed"...</msg>
<var>${data}</var>
<arg>uri=${uri}</arg>
<arg>member_index=${index}</arg>
<doc>Send a GET with the supplied uri to member ${member_index}.</doc>
<status status="PASS" start="2026-04-08T00:51:55.029962" elapsed="0.042554"/>
</kw>
<kw name="Check Item Occurrence" owner="Utils">
<for flavor="IN">
<iter>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T00:51:55.073714" level="INFO">Item found from container 0 times.</msg>
<arg>${string}</arg>
<arg>${item}</arg>
<arg>${dictionary_item_occurrence}[${item}]</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="PASS" start="2026-04-08T00:51:55.073313" elapsed="0.000474"/>
</kw>
<var name="${item}">"link-down":true</var>
<status status="PASS" start="2026-04-08T00:51:55.073143" elapsed="0.000685"/>
</iter>
<var>${item}</var>
<value>@{dictionary_item_occurrence}</value>
<status status="PASS" start="2026-04-08T00:51:55.073006" elapsed="0.000853"/>
</for>
<arg>${data}</arg>
<arg>${dictionary}</arg>
<doc>Check string for occurrences of items expressed in a list of dictionaries {item=occurrences}. 0 occurences means item is not present.</doc>
<status status="PASS" start="2026-04-08T00:51:55.072744" elapsed="0.001168"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T00:51:55.025894" elapsed="0.048053"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-08T00:51:54.940745" elapsed="0.133230"/>
</for>
<arg>uri=${operational_port_1}</arg>
<arg>dictionary=${dictionary}</arg>
<arg>member_index_list=${controller_index_list}</arg>
<doc>Send a GET with the supplied uri to all or some members defined in ${member_index_list}.
Then check received for occurrences of items expressed in a dictionary {'"link-down":true': '0'}.</doc>
<status status="PASS" start="2026-04-08T00:51:54.938613" elapsed="0.135414"/>
</kw>
<arg>5s</arg>
<arg>1s</arg>
<arg>ClusterManagement.Check_Item_Occurrence_Member_List_Or_All</arg>
<arg>uri=${operational_port_1}</arg>
<arg>dictionary=${dictionary}</arg>
<arg>member_index_list=${controller_index_list}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-08T00:51:54.934114" elapsed="0.139969"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-08T00:51:55.074634" level="INFO">${dictionary} = {'openflow:1': '21', 'openflow:2': '19', 'openflow:3': '19'}</msg>
<var>${dictionary}</var>
<arg>openflow:1=21</arg>
<arg>openflow:2=19</arg>
<arg>openflow:3=19</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-08T00:51:55.074293" elapsed="0.000367"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Check_Item_Occurrence_Member_List_Or_All" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:51:55.080766" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:51:55.080391" elapsed="0.000402"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:51:55.081267" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:51:55.080950" elapsed="0.000343"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:51:55.081337" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:51:55.081488" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:51:55.080008" elapsed="0.001505"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_From_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:55.087082" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:55.086782" elapsed="0.000327"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:51:55.087168" elapsed="0.000031"/>
</return>
<msg time="2026-04-08T00:51:55.087326" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:51:55.086372" elapsed="0.000979"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:55.093700" level="INFO">/rests/data/network-topology:network-topology?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:55.093428" elapsed="0.000321"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:55.094143" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:55.093902" elapsed="0.000302"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:51:55.102288" level="INFO">GET Request : url=http://10.30.170.48:8181/rests/data/network-topology:network-topology?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01ju7g9ih47awu1dako8be5k84o113.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:51:55.102522" level="INFO">GET Response : url=http://10.30.170.48:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '3149'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"},{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:3']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:1:1","dest-node":"openflow:1"}},{"link-id":"openflow:3:3","source":{"source-node":"openflow:3","source-tp":"openflow:3:3"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:1:1","source":{"source-node":"openflow:1","source-tp":"openflow:1:1"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:3:3","dest-node":"openflow:3"}}]}]}} 
 </msg>
<msg time="2026-04-08T00:51:55.102701" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:51:55.096195" elapsed="0.006534"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:55.094272" elapsed="0.008524"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:55.103064" elapsed="0.000032"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:55.102836" elapsed="0.000341"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:55.094253" elapsed="0.008957"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:55.108068" level="INFO">{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"},{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:3']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:1:1","dest-node":"openflow:1"}},{"link-id":"openflow:3:3","source":{"source-node":"openflow:3","source-tp":"openflow:3:3"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:1:1","source":{"source-node":"openflow:1","source-tp":"openflow:1:1"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:3:3","dest-node":"openflow:3"}}]}]}}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:55.104663" elapsed="0.003522"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:55.104353" elapsed="0.003882"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:55.104325" elapsed="0.003945"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:55.111687" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:55.108656" elapsed="0.003097"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:55.108348" elapsed="0.003452"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:55.108325" elapsed="0.003509"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:55.112621" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:55.112067" elapsed="0.000592"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:55.113087" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:55.112757" elapsed="0.000431"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:55.113919" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:55.113450" elapsed="0.000508"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:55.113222" elapsed="0.000786"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:55.112732" elapsed="0.001306"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:55.114759" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:55.114279" elapsed="0.000506"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:55.115085" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:55.114854" elapsed="0.000287"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:55.115637" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:55.115341" elapsed="0.000323"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:55.115180" elapsed="0.000519"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:55.114837" elapsed="0.000884"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:51:55.115872" elapsed="0.000361"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:51:55.116729" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:55.116436" elapsed="0.000319"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:51:55.116910" elapsed="0.002374"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:51:55.103718" elapsed="0.015631"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-08T00:51:55.119528" elapsed="0.000033"/>
</return>
<status status="PASS" start="2026-04-08T00:51:55.119420" elapsed="0.000175"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:55.119401" 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-04-08T00:51:55.119766" elapsed="0.000022"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-08T00:51:55.119836" elapsed="0.000014"/>
</return>
<msg time="2026-04-08T00:51:55.122127" level="INFO">${response_text} = {"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='o...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${access}</arg>
<arg>session=${session}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:51:55.087673" elapsed="0.034497"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:51:55.122251" elapsed="0.000039"/>
</return>
<msg time="2026-04-08T00:51:55.122440" level="INFO">${data} = {"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='o...</msg>
<var>${data}</var>
<arg>uri=${uri}</arg>
<arg>member_index=${index}</arg>
<doc>Send a GET with the supplied uri to member ${member_index}.</doc>
<status status="PASS" start="2026-04-08T00:51:55.085873" elapsed="0.036596"/>
</kw>
<kw name="Check Item Occurrence" owner="Utils">
<for flavor="IN">
<iter>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T00:51:55.123662" level="INFO">Item found from container 21 times.</msg>
<arg>${string}</arg>
<arg>${item}</arg>
<arg>${dictionary_item_occurrence}[${item}]</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="PASS" start="2026-04-08T00:51:55.123281" elapsed="0.000462"/>
</kw>
<var name="${item}">openflow:1</var>
<status status="PASS" start="2026-04-08T00:51:55.123107" elapsed="0.000676"/>
</iter>
<iter>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T00:51:55.124398" level="INFO">Item found from container 19 times.</msg>
<arg>${string}</arg>
<arg>${item}</arg>
<arg>${dictionary_item_occurrence}[${item}]</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="PASS" start="2026-04-08T00:51:55.124017" elapsed="0.000460"/>
</kw>
<var name="${item}">openflow:2</var>
<status status="PASS" start="2026-04-08T00:51:55.123865" elapsed="0.000651"/>
</iter>
<iter>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T00:51:55.125107" level="INFO">Item found from container 19 times.</msg>
<arg>${string}</arg>
<arg>${item}</arg>
<arg>${dictionary_item_occurrence}[${item}]</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="PASS" start="2026-04-08T00:51:55.124745" elapsed="0.000454"/>
</kw>
<var name="${item}">openflow:3</var>
<status status="PASS" start="2026-04-08T00:51:55.124594" elapsed="0.000645"/>
</iter>
<var>${item}</var>
<value>@{dictionary_item_occurrence}</value>
<status status="PASS" start="2026-04-08T00:51:55.122969" elapsed="0.002299"/>
</for>
<arg>${data}</arg>
<arg>${dictionary}</arg>
<doc>Check string for occurrences of items expressed in a list of dictionaries {item=occurrences}. 0 occurences means item is not present.</doc>
<status status="PASS" start="2026-04-08T00:51:55.122705" elapsed="0.002617"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T00:51:55.081715" elapsed="0.043642"/>
</iter>
<iter>
<kw name="Get_From_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:55.131147" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:55.130826" elapsed="0.000364"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:51:55.131238" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:51:55.131387" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:51:55.130475" elapsed="0.000937"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:55.137838" level="INFO">/rests/data/network-topology:network-topology?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:55.137502" elapsed="0.000391"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:55.138328" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:55.138056" elapsed="0.000316"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:51:55.151449" level="INFO">GET Request : url=http://10.30.170.131:8181/rests/data/network-topology:network-topology?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node012m0dyuink19r12kj250j53usg1.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:51:55.151784" level="INFO">GET Response : url=http://10.30.170.131:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '3149'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"},{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:3']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:1:1","dest-node":"openflow:1"}},{"link-id":"openflow:3:3","source":{"source-node":"openflow:3","source-tp":"openflow:3:3"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:1:1","source":{"source-node":"openflow:1","source-tp":"openflow:1:1"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:3:3","dest-node":"openflow:3"}}]}]}} 
 </msg>
<msg time="2026-04-08T00:51:55.152133" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:51:55.140389" elapsed="0.011837"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:55.138443" elapsed="0.013880"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:55.152726" elapsed="0.000049"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:55.152382" elapsed="0.000489"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:55.138423" elapsed="0.014496"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:55.160954" level="INFO">{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"},{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:3']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:1:1","dest-node":"openflow:1"}},{"link-id":"openflow:3:3","source":{"source-node":"openflow:3","source-tp":"openflow:3:3"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:1:1","source":{"source-node":"openflow:1","source-tp":"openflow:1:1"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:3:3","dest-node":"openflow:3"}}]}]}}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:55.155226" elapsed="0.005880"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:55.154708" elapsed="0.006509"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:55.154665" elapsed="0.006611"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:55.164587" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:55.162031" elapsed="0.002602"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:55.161402" elapsed="0.003265"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:55.161365" elapsed="0.003328"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:55.165404" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:55.164859" elapsed="0.000573"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:55.165766" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:55.165504" elapsed="0.000347"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:55.166374" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:55.166042" elapsed="0.000358"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:55.165876" elapsed="0.000560"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:55.165486" elapsed="0.000971"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:55.166981" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:55.166616" elapsed="0.000391"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:55.167323" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:55.167076" elapsed="0.000304"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:55.167852" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:55.167560" elapsed="0.000318"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:55.167403" elapsed="0.000510"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:55.167058" elapsed="0.000876"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:51:55.168085" elapsed="0.000363"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:51:55.168952" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:55.168656" elapsed="0.000322"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:51:55.169129" elapsed="0.002254"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:51:55.153745" elapsed="0.017703"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-08T00:51:55.171624" elapsed="0.000034"/>
</return>
<status status="PASS" start="2026-04-08T00:51:55.171517" elapsed="0.000174"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:55.171499" elapsed="0.000216"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:55.171864" elapsed="0.000021"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-08T00:51:55.171933" elapsed="0.000015"/>
</return>
<msg time="2026-04-08T00:51:55.174229" level="INFO">${response_text} = {"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='o...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${access}</arg>
<arg>session=${session}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:51:55.131738" elapsed="0.042519"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:51:55.174309" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:51:55.174458" level="INFO">${data} = {"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='o...</msg>
<var>${data}</var>
<arg>uri=${uri}</arg>
<arg>member_index=${index}</arg>
<doc>Send a GET with the supplied uri to member ${member_index}.</doc>
<status status="PASS" start="2026-04-08T00:51:55.129959" elapsed="0.044526"/>
</kw>
<kw name="Check Item Occurrence" owner="Utils">
<for flavor="IN">
<iter>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T00:51:55.175681" level="INFO">Item found from container 21 times.</msg>
<arg>${string}</arg>
<arg>${item}</arg>
<arg>${dictionary_item_occurrence}[${item}]</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="PASS" start="2026-04-08T00:51:55.175298" elapsed="0.000464"/>
</kw>
<var name="${item}">openflow:1</var>
<status status="PASS" start="2026-04-08T00:51:55.175127" elapsed="0.000675"/>
</iter>
<iter>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T00:51:55.176411" level="INFO">Item found from container 19 times.</msg>
<arg>${string}</arg>
<arg>${item}</arg>
<arg>${dictionary_item_occurrence}[${item}]</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="PASS" start="2026-04-08T00:51:55.176035" elapsed="0.000453"/>
</kw>
<var name="${item}">openflow:2</var>
<status status="PASS" start="2026-04-08T00:51:55.175883" elapsed="0.000644"/>
</iter>
<iter>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T00:51:55.177111" level="INFO">Item found from container 19 times.</msg>
<arg>${string}</arg>
<arg>${item}</arg>
<arg>${dictionary_item_occurrence}[${item}]</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="PASS" start="2026-04-08T00:51:55.176755" elapsed="0.000448"/>
</kw>
<var name="${item}">openflow:3</var>
<status status="PASS" start="2026-04-08T00:51:55.176604" elapsed="0.000639"/>
</iter>
<var>${item}</var>
<value>@{dictionary_item_occurrence}</value>
<status status="PASS" start="2026-04-08T00:51:55.174991" elapsed="0.002280"/>
</for>
<arg>${data}</arg>
<arg>${dictionary}</arg>
<doc>Check string for occurrences of items expressed in a list of dictionaries {item=occurrences}. 0 occurences means item is not present.</doc>
<status status="PASS" start="2026-04-08T00:51:55.174722" elapsed="0.002603"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T00:51:55.125445" elapsed="0.051914"/>
</iter>
<iter>
<kw name="Get_From_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:55.182615" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:55.182319" elapsed="0.000322"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:51:55.182687" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:51:55.182832" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:51:55.181964" elapsed="0.000892"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:55.189213" level="INFO">/rests/data/network-topology:network-topology?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:55.188953" elapsed="0.000306"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:55.189692" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:55.189412" elapsed="0.000324"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:51:55.202318" level="INFO">GET Request : url=http://10.30.171.110:8181/rests/data/network-topology:network-topology?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0u16rl3earouwvehy59feej101.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:51:55.202538" level="INFO">GET Response : url=http://10.30.171.110:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '3149'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"},{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:3']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:1:1","dest-node":"openflow:1"}},{"link-id":"openflow:3:3","source":{"source-node":"openflow:3","source-tp":"openflow:3:3"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:1:1","source":{"source-node":"openflow:1","source-tp":"openflow:1:1"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:3:3","dest-node":"openflow:3"}}]}]}} 
 </msg>
<msg time="2026-04-08T00:51:55.202698" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:51:55.191736" elapsed="0.010991"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:55.189805" elapsed="0.012965"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:55.202946" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:55.202796" elapsed="0.000213"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:55.189785" elapsed="0.013245"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:55.206411" level="INFO">{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"},{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:3']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:1:1","dest-node":"openflow:1"}},{"link-id":"openflow:3:3","source":{"source-node":"openflow:3","source-tp":"openflow:3:3"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:1:1","source":{"source-node":"openflow:1","source-tp":"openflow:1:1"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:3:3","dest-node":"openflow:3"}}]}]}}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:55.204026" elapsed="0.002454"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:55.203809" elapsed="0.002706"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:55.203789" elapsed="0.002750"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:55.208971" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:55.206819" elapsed="0.002198"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:55.206594" elapsed="0.002457"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:55.206578" elapsed="0.002498"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:55.209650" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:55.209251" elapsed="0.000427"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:55.209988" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:55.209751" elapsed="0.000294"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:55.210540" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:55.210244" elapsed="0.000322"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:55.210068" elapsed="0.000534"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:55.209731" elapsed="0.000892"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:55.211184" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:55.210810" elapsed="0.000401"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:55.211512" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:55.211281" elapsed="0.000287"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:55.212041" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:55.211749" elapsed="0.000319"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:55.211591" elapsed="0.000512"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:55.211263" elapsed="0.000861"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:51:55.212285" elapsed="0.000344"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:51:55.213095" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:55.212825" elapsed="0.000296"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:51:55.213290" elapsed="0.002178"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:51:55.203391" elapsed="0.012140"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-08T00:51:55.215705" elapsed="0.000028"/>
</return>
<status status="PASS" start="2026-04-08T00:51:55.215601" elapsed="0.000169"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:55.215583" elapsed="0.000210"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:55.215939" elapsed="0.000020"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-08T00:51:55.216007" elapsed="0.000014"/>
</return>
<msg time="2026-04-08T00:51:55.218294" level="INFO">${response_text} = {"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='o...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${access}</arg>
<arg>session=${session}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:51:55.183194" elapsed="0.035129"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:51:55.218375" elapsed="0.000027"/>
</return>
<msg time="2026-04-08T00:51:55.218523" level="INFO">${data} = {"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='o...</msg>
<var>${data}</var>
<arg>uri=${uri}</arg>
<arg>member_index=${index}</arg>
<doc>Send a GET with the supplied uri to member ${member_index}.</doc>
<status status="PASS" start="2026-04-08T00:51:55.181452" elapsed="0.037097"/>
</kw>
<kw name="Check Item Occurrence" owner="Utils">
<for flavor="IN">
<iter>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T00:51:55.219700" level="INFO">Item found from container 21 times.</msg>
<arg>${string}</arg>
<arg>${item}</arg>
<arg>${dictionary_item_occurrence}[${item}]</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="PASS" start="2026-04-08T00:51:55.219332" elapsed="0.000447"/>
</kw>
<var name="${item}">openflow:1</var>
<status status="PASS" start="2026-04-08T00:51:55.219178" elapsed="0.000639"/>
</iter>
<iter>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T00:51:55.220426" level="INFO">Item found from container 19 times.</msg>
<arg>${string}</arg>
<arg>${item}</arg>
<arg>${dictionary_item_occurrence}[${item}]</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="PASS" start="2026-04-08T00:51:55.220047" elapsed="0.000456"/>
</kw>
<var name="${item}">openflow:2</var>
<status status="PASS" start="2026-04-08T00:51:55.219897" elapsed="0.000644"/>
</iter>
<iter>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T00:51:55.221128" level="INFO">Item found from container 19 times.</msg>
<arg>${string}</arg>
<arg>${item}</arg>
<arg>${dictionary_item_occurrence}[${item}]</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="PASS" start="2026-04-08T00:51:55.220770" elapsed="0.000452"/>
</kw>
<var name="${item}">openflow:3</var>
<status status="PASS" start="2026-04-08T00:51:55.220619" elapsed="0.000642"/>
</iter>
<var>${item}</var>
<value>@{dictionary_item_occurrence}</value>
<status status="PASS" start="2026-04-08T00:51:55.219032" elapsed="0.002257"/>
</for>
<arg>${data}</arg>
<arg>${dictionary}</arg>
<doc>Check string for occurrences of items expressed in a list of dictionaries {item=occurrences}. 0 occurences means item is not present.</doc>
<status status="PASS" start="2026-04-08T00:51:55.218776" elapsed="0.002565"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T00:51:55.177446" elapsed="0.043928"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-08T00:51:55.081562" elapsed="0.139840"/>
</for>
<arg>uri=${RFC8040_OPERATIONAL_TOPO_API}</arg>
<arg>dictionary=${dictionary}</arg>
<arg>member_index_list=${controller_index_list}</arg>
<doc>Send a GET with the supplied uri to all or some members defined in ${member_index_list}.
Then check received for occurrences of items expressed in a dictionary {'openflow:1': '21', 'openflow:2': '19', 'openflow:3': '19'}.</doc>
<status status="PASS" start="2026-04-08T00:51:55.079445" elapsed="0.142009"/>
</kw>
<arg>10s</arg>
<arg>1s</arg>
<arg>ClusterManagement.Check_Item_Occurrence_Member_List_Or_All</arg>
<arg>uri=${RFC8040_OPERATIONAL_TOPO_API}</arg>
<arg>dictionary=${dictionary}</arg>
<arg>member_index_list=${controller_index_list}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-08T00:51:55.074850" elapsed="0.146660"/>
</kw>
<doc>Take the link up and verify port status in all instances in ${controller_index_list}.</doc>
<status status="PASS" start="2026-04-08T00:51:54.916413" elapsed="0.305195"/>
</kw>
<doc>Take the link up and verify port status in all instances.</doc>
<status status="PASS" start="2026-04-08T00:51:54.911783" elapsed="0.309948"/>
</test>
<test id="s1-s2-t18" name="Stop Owner Instance" line="104">
<kw name="Stop_Single_Member" owner="ClusterManagement">
<msg time="2026-04-08T00:51:55.226446" level="FAIL">Variable '${original_owner}' not found.</msg>
<arg>${original_owner}</arg>
<doc>Convenience keyword that stops the specified member of the cluster.
The KW will return a list of available members: ${updated index_list}=${original_index_list}-${member}</doc>
<status status="FAIL" start="2026-04-08T00:51:55.222452" elapsed="0.004034">Variable '${original_owner}' not found.</status>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<arg>${new_cluster_list}</arg>
<arg>${original_successor_list}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:55.226661" elapsed="0.000022"/>
</kw>
<doc>Stop Owner Instance and verify it is dead</doc>
<status status="FAIL" start="2026-04-08T00:51:55.221934" elapsed="0.004881">Variable '${original_owner}' not found.</status>
</test>
<test id="s1-s2-t19" name="Check Shards Status After Stop" line="109">
<kw name="Check OpenFlow Shards Status After Cluster Event" owner="ClusterOpenFlow">
<msg time="2026-04-08T00:51:55.231400" level="FAIL">Variable '${new_cluster_list}' not found.</msg>
<arg>${new_cluster_list}</arg>
<doc>Check Shards Status after some cluster event.</doc>
<status status="FAIL" start="2026-04-08T00:51:55.227510" elapsed="0.003961">Variable '${new_cluster_list}' not found.</status>
</kw>
<doc>Create original cluster list and check Status for all shards in OpenFlow application.</doc>
<status status="FAIL" start="2026-04-08T00:51:55.226990" elapsed="0.004613">Variable '${new_cluster_list}' not found.</status>
</test>
<test id="s1-s2-t20" name="Check Entity Owner Status And Find Owner and Successor After Stop" line="113">
<kw name="Get OpenFlow Entity Owner Status For One Device" owner="ClusterOpenFlow">
<msg time="2026-04-08T00:51:55.243561" level="FAIL">Variable '${original_successor}' not found.</msg>
<var>${new_owner}</var>
<var>${new_successor_list}</var>
<arg>openflow:1</arg>
<arg>${original_successor}</arg>
<arg>${new_cluster_list}</arg>
<arg>after_stop=True</arg>
<doc>Check Entity Owner Status and identify owner and successors for the device ${device}. Request is sent to controller ${controller_index}.</doc>
<status status="FAIL" start="2026-04-08T00:51:55.239629" elapsed="0.003970">Variable '${original_successor}' not found.</status>
</kw>
<kw name="Get From List" owner="Collections">
<var>${new_successor}</var>
<arg>${new_successor_list}</arg>
<arg>0</arg>
<doc>Returns the value specified with an ``index`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:55.243780" elapsed="0.000021"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<arg>${new_owner}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:55.243958" elapsed="0.000020"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<arg>${new_successor}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:55.244125" elapsed="0.000019"/>
</kw>
<doc>Check Entity Owner Status and identify owner and successor.</doc>
<status status="FAIL" start="2026-04-08T00:51:55.231784" elapsed="0.012494">Variable '${original_successor}' not found.</status>
</test>
<test id="s1-s2-t21" name="Check Network Operational Information After Stop" line="124">
<kw name="Check OpenFlow Network Operational Information For Sample Topology" owner="ClusterOpenFlow">
<msg time="2026-04-08T00:51:55.253165" level="FAIL">Variable '${new_cluster_list}' not found.</msg>
<arg>${new_cluster_list}</arg>
<doc>Check devices in tree,2 are in operational inventory and topology in all instances in ${controller_index_list}.
Inventory should show 1x node_id per device 1x node_id per connector. Topology should show 2x node_id per device + 3x node_id per connector
+ 5x node_id per link termination. TODO: A Keyword that can calculate this based on mininet topology.</doc>
<status status="FAIL" start="2026-04-08T00:51:55.249374" elapsed="0.003830">Variable '${new_cluster_list}' not found.</status>
</kw>
<doc>Check devices in operational inventory and topology in all cluster instances.</doc>
<status status="FAIL" start="2026-04-08T00:51:55.244754" elapsed="0.008580">Variable '${new_cluster_list}' not found.</status>
</test>
<test id="s1-s2-t22" name="Add Configuration In Owner and Verify After Stop" line="128">
<kw name="Add Sample Flow And Verify" owner="ClusterOpenFlow">
<msg time="2026-04-08T00:51:55.265734" level="FAIL">Variable '${new_owner}' not found.</msg>
<arg>${new_owner}</arg>
<arg>${new_cluster_list}</arg>
<doc>Add sample flow in ${controller_index} and verify it gets applied in all instances in ${controller_index_list}.</doc>
<status status="FAIL" start="2026-04-08T00:51:55.262206" elapsed="0.003567">Variable '${new_owner}' not found.</status>
</kw>
<doc>Add Flow in Owner and verify it gets applied from all instances.</doc>
<status status="FAIL" start="2026-04-08T00:51:55.253802" elapsed="0.012106">Variable '${new_owner}' not found.</status>
</test>
<test id="s1-s2-t23" name="Modify Configuration In Owner and Verify After Stop" line="132">
<kw name="Modify Sample Flow And Verify" owner="ClusterOpenFlow">
<msg time="2026-04-08T00:51:55.278498" level="FAIL">Variable '${new_owner}' not found.</msg>
<arg>${new_owner}</arg>
<arg>${new_cluster_list}</arg>
<doc>Modify sample flow in ${controller_index} and verify it gets applied in all instances in ${controller_index_list}.</doc>
<status status="FAIL" start="2026-04-08T00:51:55.274912" elapsed="0.003625">Variable '${new_owner}' not found.</status>
</kw>
<doc>Modify Flow in Owner and verify it gets applied from all instances.</doc>
<status status="FAIL" start="2026-04-08T00:51:55.266340" elapsed="0.012328">Variable '${new_owner}' not found.</status>
</test>
<test id="s1-s2-t24" name="Delete Configuration In Owner and Verify After Stop" line="136">
<kw name="Delete Sample Flow And Verify" owner="ClusterOpenFlow">
<msg time="2026-04-08T00:51:55.282954" level="FAIL">Variable '${new_owner}' not found.</msg>
<arg>${new_owner}</arg>
<arg>${new_cluster_list}</arg>
<doc>Delete sample flow in Owner and verify it gets removed from all instances.</doc>
<status status="FAIL" start="2026-04-08T00:51:55.279384" elapsed="0.003608">Variable '${new_owner}' not found.</status>
</kw>
<doc>Delete Flow in Owner and verify it gets applied from all instances.</doc>
<status status="FAIL" start="2026-04-08T00:51:55.278841" elapsed="0.004280">Variable '${new_owner}' not found.</status>
</test>
<test id="s1-s2-t25" name="Add Configuration In Successor and Verify After Stop" line="140">
<kw name="Add Sample Flow And Verify" owner="ClusterOpenFlow">
<msg time="2026-04-08T00:51:55.295214" level="FAIL">Variable '${new_successor}' not found.</msg>
<arg>${new_successor}</arg>
<arg>${new_cluster_list}</arg>
<doc>Add sample flow in ${controller_index} and verify it gets applied in all instances in ${controller_index_list}.</doc>
<status status="FAIL" start="2026-04-08T00:51:55.291381" elapsed="0.003871">Variable '${new_successor}' not found.</status>
</kw>
<doc>Add Flow in Successor and verify it gets applied from all instances.</doc>
<status status="FAIL" start="2026-04-08T00:51:55.283310" elapsed="0.012072">Variable '${new_successor}' not found.</status>
</test>
<test id="s1-s2-t26" name="Modify Configuration In Successor and Verify After Stop" line="144">
<kw name="Modify Sample Flow And Verify" owner="ClusterOpenFlow">
<msg time="2026-04-08T00:51:55.307723" level="FAIL">Variable '${new_successor}' not found.</msg>
<arg>${new_successor}</arg>
<arg>${new_cluster_list}</arg>
<doc>Modify sample flow in ${controller_index} and verify it gets applied in all instances in ${controller_index_list}.</doc>
<status status="FAIL" start="2026-04-08T00:51:55.303942" elapsed="0.003819">Variable '${new_successor}' not found.</status>
</kw>
<doc>Modify Flow in Successor and verify it gets applied from all instances.</doc>
<status status="FAIL" start="2026-04-08T00:51:55.295709" elapsed="0.012179">Variable '${new_successor}' not found.</status>
</test>
<test id="s1-s2-t27" name="Delete Configuration In Successor and Verify After Stop" line="148">
<kw name="Delete Sample Flow And Verify" owner="ClusterOpenFlow">
<msg time="2026-04-08T00:51:55.312532" level="FAIL">Variable '${new_successor}' not found.</msg>
<arg>${new_successor}</arg>
<arg>${new_cluster_list}</arg>
<doc>Delete sample flow in Owner and verify it gets removed from all instances.</doc>
<status status="FAIL" start="2026-04-08T00:51:55.308757" elapsed="0.003812">Variable '${new_successor}' not found.</status>
</kw>
<doc>Delete Flow in Successor and verify it gets applied from all instances.</doc>
<status status="FAIL" start="2026-04-08T00:51:55.308181" elapsed="0.004517">Variable '${new_successor}' not found.</status>
</test>
<test id="s1-s2-t28" name="Send RPC Add to Owner and Verify After Stop" line="152">
<kw name="Send RPC Add Sample Flow And Verify" owner="ClusterOpenFlow">
<msg time="2026-04-08T00:51:55.324775" level="FAIL">Variable '${new_owner}' not found.</msg>
<arg>${new_owner}</arg>
<arg>${new_cluster_list}</arg>
<doc>Add sample flow in ${controller_index} and verify it gets applied from all instances in ${controller_index_list}.</doc>
<status status="FAIL" start="2026-04-08T00:51:55.321237" elapsed="0.003576">Variable '${new_owner}' not found.</status>
</kw>
<doc>Add Flow in Owner and verify it gets applied from all instances.</doc>
<status status="FAIL" start="2026-04-08T00:51:55.312953" elapsed="0.012027">Variable '${new_owner}' not found.</status>
</test>
<test id="s1-s2-t29" name="Send RPC Delete to Owner and Verify After Stop" line="156">
<kw name="Send RPC Delete Sample Flow And Verify" owner="ClusterOpenFlow">
<msg time="2026-04-08T00:51:55.336787" level="FAIL">Variable '${new_owner}' not found.</msg>
<arg>${new_owner}</arg>
<arg>${new_cluster_list}</arg>
<doc>Delete sample flow in ${controller_index} and verify it gets removed from all instances in ${controller_index_list}.</doc>
<status status="FAIL" start="2026-04-08T00:51:55.333260" elapsed="0.003564">Variable '${new_owner}' not found.</status>
</kw>
<doc>Delete Flow in Owner and verify it gets removed from all instances.</doc>
<status status="FAIL" start="2026-04-08T00:51:55.325254" elapsed="0.011698">Variable '${new_owner}' not found.</status>
</test>
<test id="s1-s2-t30" name="Send RPC Add to Successor and Verify After Stop" line="160">
<kw name="Send RPC Add Sample Flow And Verify" owner="ClusterOpenFlow">
<msg time="2026-04-08T00:51:55.349078" level="FAIL">Variable '${new_successor}' not found.</msg>
<arg>${new_successor}</arg>
<arg>${new_cluster_list}</arg>
<doc>Add sample flow in ${controller_index} and verify it gets applied from all instances in ${controller_index_list}.</doc>
<status status="FAIL" start="2026-04-08T00:51:55.345315" elapsed="0.003801">Variable '${new_successor}' not found.</status>
</kw>
<doc>Add Flow in Successor and verify it gets applied from all instances.</doc>
<status status="FAIL" start="2026-04-08T00:51:55.337227" elapsed="0.012033">Variable '${new_successor}' not found.</status>
</test>
<test id="s1-s2-t31" name="Send RPC Delete to Successor and Verify After Stop" line="164">
<kw name="Send RPC Delete Sample Flow And Verify" owner="ClusterOpenFlow">
<msg time="2026-04-08T00:51:55.361560" level="FAIL">Variable '${new_successor}' not found.</msg>
<arg>${new_successor}</arg>
<arg>${new_cluster_list}</arg>
<doc>Delete sample flow in ${controller_index} and verify it gets removed from all instances in ${controller_index_list}.</doc>
<status status="FAIL" start="2026-04-08T00:51:55.357764" elapsed="0.003834">Variable '${new_successor}' not found.</status>
</kw>
<doc>Delete Flow in Successor and verify it gets removed from all instances.</doc>
<status status="FAIL" start="2026-04-08T00:51:55.349715" elapsed="0.012010">Variable '${new_successor}' not found.</status>
</test>
<test id="s1-s2-t32" name="Modify Network and Verify After Stop" line="168">
<kw name="Take OpenFlow Device Link Down and Verify" owner="ClusterOpenFlow">
<msg time="2026-04-08T00:51:55.369956" level="FAIL">Variable '${new_cluster_list}' not found.</msg>
<arg>${new_cluster_list}</arg>
<doc>Take a link down and verify port status in all instances in ${controller_index_list}.</doc>
<status status="FAIL" start="2026-04-08T00:51:55.366182" elapsed="0.003811">Variable '${new_cluster_list}' not found.</status>
</kw>
<doc>Take a link down and verify port status in all instances.</doc>
<status status="FAIL" start="2026-04-08T00:51:55.361983" elapsed="0.008135">Variable '${new_cluster_list}' not found.</status>
</test>
<test id="s1-s2-t33" name="Restore Network and Verify After Stop" line="172">
<kw name="Take OpenFlow Device Link Up and Verify" owner="ClusterOpenFlow">
<msg time="2026-04-08T00:51:55.378777" level="FAIL">Variable '${new_cluster_list}' not found.</msg>
<arg>${new_cluster_list}</arg>
<doc>Take the link up and verify port status in all instances in ${controller_index_list}.</doc>
<status status="FAIL" start="2026-04-08T00:51:55.374934" elapsed="0.003883">Variable '${new_cluster_list}' not found.</status>
</kw>
<doc>Take the link up and verify port status in all instances.</doc>
<status status="FAIL" start="2026-04-08T00:51:55.370392" elapsed="0.008558">Variable '${new_cluster_list}' not found.</status>
</test>
<test id="s1-s2-t34" name="Start Old Owner Instance" line="176">
<kw name="Start_Single_Member" owner="ClusterManagement">
<msg time="2026-04-08T00:51:55.383565" level="FAIL">Variable '${original_owner}' not found.</msg>
<arg>${original_owner}</arg>
<doc>Convenience keyword that starts the specified member of the cluster.</doc>
<status status="FAIL" start="2026-04-08T00:51:55.379757" elapsed="0.003846">Variable '${original_owner}' not found.</status>
</kw>
<doc>Start old Owner Instance and verify it is up</doc>
<status status="FAIL" start="2026-04-08T00:51:55.379238" elapsed="0.004490">Variable '${original_owner}' not found.</status>
</test>
<test id="s1-s2-t35" name="Check Shards Status After Start" line="180">
<kw name="Check OpenFlow Shards Status After Cluster Event" owner="ClusterOpenFlow">
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<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-04-08T00:51:55.405582" elapsed="0.000244"/>
</kw>
<msg time="2026-04-08T00:51:55.405880" 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>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:51:55.404902" elapsed="0.001033"/>
</kw>
<arg>phosphorus</arg>
<arg>${kw_name}</arg>
<arg>@{varargs}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Compare ${lower_bound} to vanadium and in case vanadium is at least ${lower_bound},
run Collections.Remove Values From List [['inventory', 'topology', 'default'], 'entity-ownership'] {} and return its value.</doc>
<status status="PASS" start="2026-04-08T00:51:55.404440" elapsed="0.001574"/>
</kw>
<msg time="2026-04-08T00:51:55.406058" 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-04-08T00:51:55.396224" elapsed="0.009877"/>
</kw>
<arg>Collections.Remove Values From List</arg>
<arg>${SHARD_OPER_LIST}</arg>
<arg>entity-ownership</arg>
<doc>Compare phosphorus to vanadium and in case vanadium is at least phosphorus,
run ${kw_name} @{varargs} &amp;{kwargs} and return its value.</doc>
<status status="PASS" start="2026-04-08T00:51:55.395818" elapsed="0.010369"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:55.406618" 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-04-08T00:51:55.406367" elapsed="0.000295"/>
</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-04-08T00:51:55.411925" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:51:55.411532" elapsed="0.000420"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:51:55.412438" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:51:55.412115" elapsed="0.000398"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:51:55.412565" elapsed="0.000034"/>
</return>
<msg time="2026-04-08T00:51:55.412731" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:51:55.411144" elapsed="0.001611"/>
</kw>
<kw name="Sort List" owner="Collections">
<arg>${index_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="PASS" start="2026-04-08T00:51:55.412906" elapsed="0.000156"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:51:55.413607" level="INFO">${ds_type} = operational</msg>
<var>${ds_type}</var>
<arg>'${shard_type}' != 'config'</arg>
<arg>operational</arg>
<arg>config</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:51:55.413241" elapsed="0.000392"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:51:55.414028" level="INFO">${leader_list} = []</msg>
<var>${leader_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:51:55.413791" elapsed="0.000263"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:51:55.414453" level="INFO">${follower_list} = []</msg>
<var>${follower_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:51:55.414215" elapsed="0.000263"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_Raft_State_Of_Shard_At_Member" owner="ClusterManagement">
<kw name="Get_Raft_Property_From_Shard_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:55.417800" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:55.416919" elapsed="0.000976"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:51:55.417975" elapsed="0.000031"/>
</return>
<msg time="2026-04-08T00:51:55.418260" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:51:55.416393" elapsed="0.001894"/>
</kw>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Get_As_Json_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:55.467250" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:55.466856" elapsed="0.000424"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:51:55.468058" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:51:55.467773" elapsed="0.000369">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-08T00:51:55.468251" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:51:55.467442" elapsed="0.000833"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:51:55.468817" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:51:55.468438" elapsed="0.000405"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T00:51:55.469138" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-08T00:51:55.469321" level="INFO">${template} = /rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T00:51:55.469000" elapsed="0.000347"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:55.469767" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:55.469518" elapsed="0.000294"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:55.470757" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:55.470505" elapsed="0.000299"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-08T00:51:55.471245" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-08T00:51:55.470962" elapsed="0.000309"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:55.471589" elapsed="0.000022"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:55.471788" elapsed="0.000024"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:55.471959" elapsed="0.000021"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-08T00:51:55.471455" elapsed="0.000560"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-08T00:51:55.471318" elapsed="0.000781"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-08T00:51:55.472149" elapsed="0.000045"/>
</return>
<msg time="2026-04-08T00:51:55.472326" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-08T00:51:55.470188" elapsed="0.002163"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:55.469883" elapsed="0.002499"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:55.472552" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:55.472407" elapsed="0.000199"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:55.469862" elapsed="0.002765"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:55.473221" level="INFO">${final_text} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:55.472766" elapsed="0.000483"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T00:51:55.473296" 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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="PASS" start="2026-04-08T00:51:55.466252" elapsed="0.007167"/>
</kw>
<msg time="2026-04-08T00:51:55.473530" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:51:55.454428" elapsed="0.019154"/>
</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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:55.485236" elapsed="0.000029"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:55.496739" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:55.508428" elapsed="0.000027"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:55.508618" elapsed="0.000022"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:55.508791" elapsed="0.000022"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:55.509169" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:55.509011" elapsed="0.000216"/>
</branch>
<status status="NOT RUN" start="2026-04-08T00:51:55.508997" elapsed="0.000253"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:55.509386" elapsed="0.000050"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:55.509585" elapsed="0.000021"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:55.509749" elapsed="0.000020"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-08T00:51:55.508968" elapsed="0.000833"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-08T00:51:55.508867" elapsed="0.000960"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:55.509971" elapsed="0.000020"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-08T00:51:55.510044" elapsed="0.000015"/>
</return>
<msg time="2026-04-08T00:51:55.510219" level="INFO">${uri} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-08T00:51:55.450428" elapsed="0.059818"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:51:55.511483" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:51:55.511239" elapsed="0.000307">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-08T00:51:55.511637" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:51:55.510882" elapsed="0.000780"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:55.511974" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:55.511732" elapsed="0.000298"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:55.512529" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:55.512239" elapsed="0.000315"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:55.512053" elapsed="0.000536"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:55.511714" elapsed="0.000896"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:51:55.514798" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:51:55.512757" elapsed="0.002068"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-08T00:51:55.514875" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:51:55.515025" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:51:55.510564" elapsed="0.004486"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:51:55.516268" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:51:55.516011" elapsed="0.000321">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-08T00:51:55.516424" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:51:55.515680" elapsed="0.000768"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-08T00:51:55.516652" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-08T00:51:55.516519" elapsed="0.000192"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:55.516500" elapsed="0.000235"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:55.516879" elapsed="0.000021"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:55.517047" elapsed="0.000020"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-08T00:51:55.517111" elapsed="0.000015"/>
</return>
<msg time="2026-04-08T00:51:55.519046" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:51:55.515362" elapsed="0.003711"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:55.520452" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:55.520205" elapsed="0.000293"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:55.520888" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:55.520647" elapsed="0.000284"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:51:55.531351" level="INFO">GET Request : url=http://10.30.170.48:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 path_url=/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01ju7g9ih47awu1dako8be5k84o113.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:51:55.532151" level="INFO">GET Response : url=http://10.30.170.48:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Transfer-Encoding': 'chunked'} 
 body={"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","hidden-symmetric-keys","encrypted-private-keys","asymmetrically-encrypted-value-format","cms-encrypted-data-format","cleartext-private-keys","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["ssh-client-keepalives","client-ident-hostbased","client-ident-publickey","client-ident-password"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-ex... (set the log level to DEBUG or TRACE to see the full content) 
 </msg>
<msg time="2026-04-08T00:51:55.532531" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:51:55.523028" elapsed="0.009542"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:55.520997" elapsed="0.011635"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:55.532894" elapsed="0.000033"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:55.532673" elapsed="0.000313"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:55.520978" elapsed="0.012039"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:55.538085" level="INFO">{"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","hidden-symmetric-keys","encrypted-private-keys","asymmetrically-encrypted-value-format","cms-encrypted-data-format","cleartext-private-keys","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["ssh-client-keepalives","client-ident-hostbased","client-ident-publickey","client-ident-password"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-experimenter-types?revision=2015-10-20","namespace":"urn:opendaylight:openflowplugin:experimenter:types","conformance-type":"import"},{"name":"ietf-ip_2018-02-22","revision":"2018-02-22","schema":"/rests/modules/ietf-ip?revision=2018-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-ip","conformance-type":"import","feature":["ipv6-privacy-autoconf","ipv4-non-contiguous-netmasks"]},{"name":"ietf-tcp-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-client","conformance-type":"import","feature":["local-binding-supported","tcp-client-keepalives"]},{"name":"node-config_2014-10-15","revision":"2014-10-15","schema":"/rests/modules/node-config?revision=2014-10-15","namespace":"urn:opendaylight:module:config","conformance-type":"import"},{"name":"ietf-restconf_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf","conformance-type":"import"},{"name":"ietf-datastores_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-datastores?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-datastores","conformance-type":"import"},{"name":"ietf-yang-patch_2017-02-22","revision":"2017-02-22","schema":"/rests/modules/ietf-yang-patch?revision=2017-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-patch","conformance-type":"import"},{"name":"sal-group_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-group?revision=2013-09-18","namespace":"urn:opendaylight:group:service","conformance-type":"import"},{"name":"odl-codegen-extensions_2024-06-27","revision":"2024-06-27","schema":"/rests/modules/odl-codegen-extensions?revision=2024-06-27","namespace":"urn:opendaylight:yang:extension:codegen","conformance-type":"import"},{"name":"sal-meter_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-meter?revision=2013-09-18","namespace":"urn:opendaylight:meter:service","conformance-type":"import"},{"name":"ietf-interfaces_2018-02-20","revision":"2018-02-20","schema":"/rests/modules/ietf-interfaces?revision=2018-02-20","namespace":"urn:ietf:params:xml:ns:yang:ietf-interfaces","conformance-type":"import","feature":["pre-provisioning","if-mib","arbitrary-names"]},{"name":"opendaylight-l2-types_2013-08-27","revision":"2013-08-27","schema":"/rests/modules/opendaylight-l2-types?revision=2013-08-27","namespace":"urn:opendaylight:l2:types","conformance-type":"import"},{"name":"opendaylight-flow-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-flow-types?revision=2013-10-26","namespace":"urn:opendaylight:flow:types","conformance-type":"import"},{"name":"lldp-speaker-config_2016-05-12","revision":"2016-05-12","schema":"/rests/modules/lldp-speaker-config?revision=2016-05-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker:config","conformance-type":"import"},{"name":"aaa-cert_2015-11-26","revision":"2015-11-26","schema":"/rests/modules/aaa-cert?revision=2015-11-26","namespace":"urn:opendaylight:yang:aaa:cert","conformance-type":"import"},{"name":"openflow-action_2015-02-03","revision":"2015-02-03","schema":"/rests/modules/openflow-action?revision=2015-02-03","namespace":"urn:opendaylight:openflow:common:action","conformance-type":"import"},{"name":"openflow-approved-extensions_2016-08-02","revision":"2016-08-02","schema":"/rests/modules/openflow-approved-extensions?revision=2016-08-02","namespace":"urn:opendaylight:openflow:approved:extensions","conformance-type":"import"},{"name":"nc-notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/nc-notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netmod:notification","conformance-type":"import"},{"name":"ietf-netconf-nmda_2019-01-07","revision":"2019-01-07","schema":"/rests/modules/ietf-netconf-nmda?revision=2019-01-07","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-nmda","conformance-type":"import","feature":["with-defaults","origin"]},{"name":"ietf-tcp-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-common","conformance-type":"import","feature":["keepalives-supported"]},{"name":"network-topology_2013-10-21","revision":"2013-10-21","schema":"/rests/modules/network-topology?revision=2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:network-topology","conformance-type":"import"},{"name":"aaa-encrypt-service-config_2024-02-02","revision":"2024-02-02","schema":"/rests/modules/aaa-encrypt-service-config?revision=2024-02-02","namespace":"config:aaa:authn:encrypt:service:config","conformance-type":"import"},{"name":"openflow-instruction_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-instruction?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:instruction","conformance-type":"import"},{"name":"ietf-tls-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-client","conformance-type":"import","feature":["client-ident-x509-cert","server-auth-x509-cert"]},{"name":"opendaylight-group-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-group-statistics?revision=2013-11-11","namespace":"urn:opendaylight:group:statistics","conformance-type":"import"},{"name":"cluster-admin_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/cluster-admin?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:cluster:admin","conformance-type":"import"},{"name":"opendaylight-flow-statistics_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-flow-statistics?revision=2013-08-19","namespace":"urn:opendaylight:flow:statistics","conformance-type":"import"},{"name":"opendaylight-table-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-table-types?revision=2013-10-26","namespace":"urn:opendaylight:table:types","conformance-type":"import"},{"name":"forwarding-rules-manager-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/forwarding-rules-manager-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:forwardingrules-manager:config","conformance-type":"import"},{"name":"odl-srm-types_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-types?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:types","conformance-type":"import"},{"name":"ietf-x509-cert-to-name_2014-12-10","revision":"2014-12-10","schema":"/rests/modules/ietf-x509-cert-to-name?revision=2014-12-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-x509-cert-to-name","conformance-type":"import"},{"name":"flow-node-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-node-inventory?revision=2013-08-19","namespace":"urn:opendaylight:flow:inventory","conformance-type":"import"},{"name":"flow-errors_2013-11-16","revision":"2013-11-16","schema":"/rests/modules/flow-errors?revision=2013-11-16","namespace":"urn:opendaylight:flow:errors","conformance-type":"import"},{"name":"ietf-netconf_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:netconf:base:1.0","conformance-type":"import","feature":["xpath","url","rollback-on-error","validate","startup","candidate","confirmed-commit","writable-running"]},{"name":"iana-ssh-public-key-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-public-key-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-public-key-algs","conformance-type":"import"},{"name":"aaa-cert-mdsal_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/aaa-cert-mdsal?revision=2016-03-21","namespace":"urn:opendaylight:yang:aaa:cert:mdsal","conformance-type":"import"},{"name":"odl-device-notification_2024-02-18","revision":"2024-02-18","schema":"/rests/modules/odl-device-notification?revision=2024-02-18","namespace":"urn:opendaylight:device:notification","conformance-type":"import"},{"name":"ietf-origin_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-origin?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-origin","conformance-type":"import"},{"name":"openflow-augments_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-augments?revision=2015-02-25","namespace":"urn:opendaylight:openflow:augments","conformance-type":"import"},{"name":"iana-ssh-encryption-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-encryption-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-encryption-algs","conformance-type":"import"},{"name":"ietf-truststore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-truststore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-truststore","conformance-type":"import","feature":["inline-definitions-supported"]},{"name":"distributed-datastore-provider_2025-01-30","revision":"2025-01-30","schema":"/rests/modules/distributed-datastore-provider?revision=2025-01-30","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:distributed-datastore-provider","conformance-type":"import"},{"name":"opendaylight-group-types_2013-10-18","revision":"2013-10-18","schema":"/rests/modules/opendaylight-group-types?revision=2013-10-18","namespace":"urn:opendaylight:group:types","conformance-type":"import"},{"name":"sal-remote-augment_2023-11-03","revision":"2023-11-03","schema":"/rests/modules/sal-remote-augment?revision=2023-11-03","namespace":"urn:sal:restconf:event:subscription","conformance-type":"import"},{"name":"opendaylight-ipv6-arbitrary-bitmask-fields_2016-02-24","revision":"2016-02-24","schema":"/rests/modules/opendaylight-ipv6-arbitrary-bitmask-fields?revision=2016-02-24","namespace":"urn:opendaylight:opendaylight-ipv6-arbitrary-bitmask-fields","conformance-type":"import"},{"name":"sal-flows-batch_2016-03-14","revision":"2016-03-14","schema":"/rests/modules/sal-flows-batch?revision=2016-03-14","namespace":"urn:opendaylight:flows:service","conformance-type":"import"},{"name":"ietf-tls-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-common","conformance-type":"import","feature":["tls12","hello-params","tls13"]},{"name":"openflow-types_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-types?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:types","conformance-type":"import"},{"name":"ietf-netconf-with-defaults_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf-with-defaults?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults","conformance-type":"import"},{"name":"odl-srm-ops_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-ops?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:ops","conformance-type":"import"},{"name":"odl-general-entity_2015-09-30","revision":"2015-09-30","schema":"/rests/modules/odl-general-entity?revision=2015-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:mdsal:core:general-entity","conformance-type":"import"},{"name":"iana-ssh-key-exchange-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-key-exchange-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-key-exchange-algs","conformance-type":"import"},{"name":"node-ssl-connection-error_2019-07-23","revision":"2019-07-23","schema":"/rests/modules/node-ssl-connection-error?revision=2019-07-23","namespace":"urn:opendaylight:node-ssl-connection-error:service","conformance-type":"import"},{"name":"openflow-protocol_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-protocol?revision=2013-07-31","namespace":"urn:opendaylight:openflow:protocol","conformance-type":"import"},{"name":"ietf-udp-server_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-server?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-server","conformance-type":"import"},{"name":"ietf-keystore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-keystore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-keystore","conformance-type":"import","feature":["asymmetric-keys","inline-definitions-supported"]},{"name":"aaa_2016-12-14","revision":"2016-12-14","schema":"/rests/modules/aaa?revision=2016-12-14","namespace":"urn:opendaylight:params:xml:ns:yang:aaa","conformance-type":"import"},{"name":"aaa-cert-rpc_2015-12-15","revision":"2015-12-15","schema":"/rests/modules/aaa-cert-rpc?revision=2015-12-15","namespace":"urn:opendaylight:yang:aaa:cert:rpc","conformance-type":"import"},{"name":"system-notifications_2013-09-27","revision":"2013-09-27","schema":"/rests/modules/system-notifications?revision=2013-09-27","namespace":"urn:opendaylight:openflow:system","conformance-type":"import"},{"name":"sal-flat-batch_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/sal-flat-batch?revision=2016-03-21","namespace":"urn:opendaylight:flat-batch:service","conformance-type":"import"},{"name":"notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netconf:notification:1.0","conformance-type":"import"},{"name":"sal-remote_2014-01-14","revision":"2014-01-14","schema":"/rests/modules/sal-remote?revision=2014-01-14","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:remote","conformance-type":"import"},{"name":"yang-ext_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/yang-ext?revision=2013-07-09","namespace":"urn:opendaylight:yang:extension:yang-ext","conformance-type":"import"},{"name":"opendaylight-multipart-types_2017-01-12","revision":"2017-01-12","schema":"/rests/modules/opendaylight-multipart-types?revision=2017-01-12","namespace":"urn:opendaylight:multipart:types","conformance-type":"import"},{"name":"opendaylight-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-inventory?revision=2013-08-19","namespace":"urn:opendaylight:inventory","conformance-type":"import"},{"name":"sal-queue_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-queue?revision=2015-03-05","namespace":"urn:opendaylight:queue:service","conformance-type":"import"},{"name":"sal-groups-batch_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/sal-groups-batch?revision=2016-03-15","namespace":"urn:opendaylight:groups:service","conformance-type":"import"},{"name":"arbitrator-reconcile_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/arbitrator-reconcile?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:arbitrator-reconcile:service","conformance-type":"import"},{"name":"ietf-yang-metadata_2016-08-05","revision":"2016-08-05","schema":"/rests/modules/ietf-yang-metadata?revision=2016-08-05","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-metadata","conformance-type":"import"},{"name":"opendaylight-arbitrary-bitmask-fields_2016-01-30","revision":"2016-01-30","schema":"/rests/modules/opendaylight-arbitrary-bitmask-fields?revision=2016-01-30","namespace":"urn:opendaylight:arbitrary:bitmask:fields","conformance-type":"import"},{"name":"ietf-udp-client_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-client?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-client","conformance-type":"import","feature":["local-binding"]},{"name":"opendaylight-meter-types_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/opendaylight-meter-types?revision=2013-09-18","namespace":"urn:opendaylight:meter:types","conformance-type":"import"},{"name":"opendaylight-action-types_2013-11-12","revision":"2013-11-12","schema":"/rests/modules/opendaylight-action-types?revision=2013-11-12","namespace":"urn:opendaylight:action:types","conformance-type":"import"},{"name":"sal-role_2015-07-27","revision":"2015-07-27","schema":"/rests/modules/sal-role?revision=2015-07-27","namespace":"urn:opendaylight:role:service","conformance-type":"import"},{"name":"openflow-provider-config_2016-05-10","revision":"2016-05-10","schema":"/rests/modules/openflow-provider-config?revision=2016-05-10","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:provider:config","conformance-type":"import"},{"name":"odl-serviceutils-upgrade_2018-07-02","revision":"2018-07-02","schema":"/rests/modules/odl-serviceutils-upgrade?revision=2018-07-02","namespace":"urn:opendaylight:serviceutils:upgrade","conformance-type":"import"},{"name":"opendaylight-match-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-match-types?revision=2013-10-26","namespace":"urn:opendaylight:model:match:types","conformance-type":"import"},{"name":"ietf-restconf-server_2024-08-14","revision":"2024-08-14","schema":"/rests/modules/ietf-restconf-server?revision=2024-08-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-server","conformance-type":"import","feature":["http-listen","https-listen"]},{"name":"reconciliation-result-state_2017-07-13","revision":"2017-07-13","schema":"/rests/modules/reconciliation-result-state?revision=2017-07-13","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:rf:state","conformance-type":"import"},{"name":"onf-extensions_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/onf-extensions?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf","conformance-type":"import"},{"name":"sal-table_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/sal-table?revision=2013-10-26","namespace":"urn:opendaylight:table:service","conformance-type":"import"},{"name":"iana-http-versions_2026-02-04","revision":"2026-02-04","schema":"/rests/modules/iana-http-versions?revision=2026-02-04","namespace":"urn:ietf:params:xml:ns:yang:iana-http-versions","conformance-type":"import"},{"name":"opendaylight-direct-statistics_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/opendaylight-direct-statistics?revision=2016-05-11","namespace":"urn:opendaylight:direct:statistics","conformance-type":"import"},{"name":"opendaylight-port-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-port-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:port","conformance-type":"import"},{"name":"sal-async-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/sal-async-config?revision=2017-06-19","namespace":"urn:opendaylight:async-config:service","conformance-type":"import"},{"name":"aaa-password-service-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-password-service-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:password:service:config","conformance-type":"import"},{"name":"ietf-yang-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-yang-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-types","conformance-type":"import"},{"name":"opendaylight-queue-statistics_2013-12-16","revision":"2013-12-16","schema":"/rests/modules/opendaylight-queue-statistics?revision=2013-12-16","namespace":"urn:opendaylight:queue:statistics","conformance-type":"import"},{"name":"sal-bundle_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/sal-bundle?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf:bundle:service","conformance-type":"import"},{"name":"ietf-restconf-subscribed-notifications_2019-11-17","revision":"2019-11-17","schema":"/rests/modules/ietf-restconf-subscribed-notifications?revision=2019-11-17","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-subscribed-notifications","conformance-type":"import"},{"name":"sal-meters-batch_2016-03-16","revision":"2016-03-16","schema":"/rests/modules/sal-meters-batch?revision=2016-03-16","namespace":"urn:opendaylight:meters:service","conformance-type":"import"},{"name":"odl-entity-owners","revision":"","schema":"/rests/modules/odl-entity-owners","namespace":"urn:opendaylight:params:xml:ns:yang:controller:entity-owners","conformance-type":"import"},{"name":"sal-experimenter-mp-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-mp-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-mp-message:service","conformance-type":"import"},{"name":"packet-processing_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/packet-processing?revision=2013-07-09","namespace":"urn:opendaylight:packet:service","conformance-type":"import"},{"name":"openflow-configuration_2014-06-30","revision":"2014-06-30","schema":"/rests/modules/openflow-configuration?revision=2014-06-30","namespace":"urn:opendaylight:openflow:config","conformance-type":"import"},{"name":"odl-srm-rpcs_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-rpcs?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:rpc","conformance-type":"import"},{"name":"ietf-netconf-acm_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-netconf-acm?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-acm","conformance-type":"import"},{"name":"iana-crypt-hash_2014-08-06","revision":"2014-08-06","schema":"/rests/modules/iana-crypt-hash?revision=2014-08-06","namespace":"urn:ietf:params:xml:ns:yang:iana-crypt-hash","conformance-type":"import","feature":["crypt-hash-sha-512","crypt-hash-sha-256","crypt-hash-md5"]},{"name":"openflow-extensible-match_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-extensible-match?revision=2015-02-25","namespace":"urn:opendaylight:openflow:oxm","conformance-type":"import"}],"module-set-id":"2"}}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:55.534506" elapsed="0.004053"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:55.534193" elapsed="0.004417"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:55.534144" elapsed="0.004502"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:55.542061" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:55.539043" elapsed="0.003064"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:55.538728" elapsed="0.003414"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:55.538703" elapsed="0.003481"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:55.542748" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:55.542356" elapsed="0.000419"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:55.543086" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:55.542847" elapsed="0.000298"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:55.543657" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:55.543352" elapsed="0.000332"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:55.543186" elapsed="0.000532"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:55.542828" elapsed="0.000912"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:55.544276" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:55.543900" elapsed="0.000402"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:55.544607" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:55.544374" elapsed="0.000290"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:55.545140" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:55.544847" elapsed="0.000334"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:55.544687" elapsed="0.000530"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:55.544354" elapsed="0.000885"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:51:55.545433" elapsed="0.000357"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:51:55.546269" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:55.545957" elapsed="0.000338"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:51:55.546450" elapsed="0.002246"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:51:55.533573" elapsed="0.015191"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:51:55.548946" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:51:55.548838" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:55.548818" elapsed="0.000196"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:51:55.557461" level="INFO">${text_normalized} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:51:55.549175" elapsed="0.008318"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:51:55.557548" elapsed="0.000035"/>
</return>
<msg time="2026-04-08T00:51:55.557712" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:51:55.519388" elapsed="0.038350"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:51:55.557800" elapsed="0.000027"/>
</return>
<msg time="2026-04-08T00:51:55.558134" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="PASS" start="2026-04-08T00:51:55.429401" elapsed="0.128795"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Json_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:55.558672" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:55.558327" elapsed="0.000479"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:55.558295" elapsed="0.000555"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:51:55.558910" elapsed="0.000071"/>
</return>
<arg>session=${session}</arg>
<arg>folder=${RESTCONF_MODULES_DIR}</arg>
<arg>verify=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Add arguments sensible for JSON data, return Get_Templated response text.
Optionally, verification against JSON data (may be iterated) is called.
Only subset of JSON data is verified and returned if JMES path is specified in
file ${folder}/jmespath.expr.</doc>
<status status="PASS" start="2026-04-08T00:51:55.423795" elapsed="0.135399"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:55.418363" elapsed="0.140949"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:55.418343" elapsed="0.140997"/>
</if>
<kw name="Resolve_Shard_Type_Class" owner="ClusterManagement">
<if>
<branch type="IF" condition="'${shard_type}' == 'config'">
<return>
<value>DistributedConfigDatastore</value>
<status status="NOT RUN" start="2026-04-08T00:51:55.560260" elapsed="0.000046"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:51:55.560015" elapsed="0.000338"/>
</branch>
<branch type="ELSE IF" condition="'${shard_type}' == 'operational'">
<return>
<value>DistributedOperationalDatastore</value>
<status status="PASS" start="2026-04-08T00:51:55.560632" elapsed="0.000090"/>
</return>
<status status="PASS" start="2026-04-08T00:51:55.560409" elapsed="0.000362"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:55.559981" elapsed="0.000850"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized shard type: ${shard_type}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:55.561062" elapsed="0.000066"/>
</kw>
<msg time="2026-04-08T00:51:55.561284" level="INFO">${type_class} = DistributedOperationalDatastore</msg>
<var>${type_class}</var>
<arg>shard_type=${shard_type}</arg>
<doc>Simple lookup for class name corresponding to desired type.</doc>
<status status="PASS" start="2026-04-08T00:51:55.559609" elapsed="0.001701"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:55.562133" level="INFO">${cluster_index} = 1</msg>
<var>${cluster_index}</var>
<arg>${member_index}+${NODE_ROLE_INDEX_START}-1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:55.561496" elapsed="0.000679"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:55.563327" level="INFO">${uri} = jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-inventory-operational,type=DistributedOperationalDatastore</msg>
<var>${uri}</var>
<arg>${JOLOKIA_READ_URI}:Category=Shards,name=member-${cluster_index}-shard-${shard_name}-${shard_type},type=${type_class}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:55.562335" elapsed="0.001020"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:55.570421" level="INFO">jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-inventory-operational,type=DistributedOperationalDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:55.570114" elapsed="0.000392"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:55.571035" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:55.570752" elapsed="0.000366"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:51:55.583999" level="INFO">GET Request : url=http://10.30.170.48:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-inventory-operational,type=DistributedOperationalDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-inventory-operational,type=DistributedOperationalDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:51:55.584136" level="INFO">GET Response : url=http://10.30.170.48:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-inventory-operational,type=DistributedOperationalDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Wed, 08 Apr 2026 00:51:55 GMT', 'Expires': 'Tue, 07 Apr 2026 23:51:55 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-1-shard-inventory-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"ReadWriteTransactionCount":601,"SnapshotIndex":1245,"InMemoryJournalLogSize":5,"ReplicatedToAllIndex":1245,"Leader":"member-1-shard-inventory-operational","LastIndex":1250,"RaftState":"Leader","LastApplied":1246,"LastCommittedTransactionTime":"2026-04-08 00:51:55.569","PeerAddresses":"member-3-shard-inventory-operational: pekko:\/\/opendaylight-cluster-data@10.30.171.110:2550\/user\/shardmanager-operational\/member-3-shard-inventory-operational, member-2-shard-inventory-operational: pekko:\/\/opendaylight-cluster-data@10.30.170.131:2550\/user\/shardmanager-operational\/member-2-shard-inventory-operational","LastLogIndex":1250,"LastLeadershipChangeTime":"2026-04-08 00:46:45.929","FollowerInitialSyncStatus":false,"FollowerInfo":[{"timeSinceLastActivity":"00:00:00.003","active":true,"matchIndex":1245,"voting":true,"id":"member-3-shard-inventory-operational","nextIndex":1246},{"timeSinceLastActivity":"00:00:00.004","active":true,"matchIndex":1246,"voting":true,"id":"member-2-shard-inventory-operational","nextIndex":1247}],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"1.985 ms","CurrentTerm":2,"LastTerm":2,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":2,"VotedFor":"member-1-shard-inventory-operational","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":468,"TxCohortCacheSize":0,"PeerVotingStates":"member-3-shard-inventory-operational: true, member-2-shard-inventory-operational: true","LastLogTerm":2,"StatRetrievalError":null,"CommitIndex":1246,"SnapshotTerm":2,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":20,"ShardName":"member-1-shard-inventory-operational","LeadershipChangeCount":1,"InMemoryJournalDataSize":1626332},"timestamp":1775609515,"status":200} 
 </msg>
<msg time="2026-04-08T00:51:55.584417" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:51:55.573314" elapsed="0.011163"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:55.571379" elapsed="0.013197"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:55.585077" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:55.584709" elapsed="0.000635"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:55.571331" elapsed="0.014169"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:55.593543" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-1-shard-inventory-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"ReadWriteTransactionCount":601,"SnapshotIndex":1245,"InMemoryJournalLogSize":5,"ReplicatedToAllIndex":1245,"Leader":"member-1-shard-inventory-operational","LastIndex":1250,"RaftState":"Leader","LastApplied":1246,"LastCommittedTransactionTime":"2026-04-08 00:51:55.569","PeerAddresses":"member-3-shard-inventory-operational: pekko:\/\/opendaylight-cluster-data@10.30.171.110:2550\/user\/shardmanager-operational\/member-3-shard-inventory-operational, member-2-shard-inventory-operational: pekko:\/\/opendaylight-cluster-data@10.30.170.131:2550\/user\/shardmanager-operational\/member-2-shard-inventory-operational","LastLogIndex":1250,"LastLeadershipChangeTime":"2026-04-08 00:46:45.929","FollowerInitialSyncStatus":false,"FollowerInfo":[{"timeSinceLastActivity":"00:00:00.003","active":true,"matchIndex":1245,"voting":true,"id":"member-3-shard-inventory-operational","nextIndex":1246},{"timeSinceLastActivity":"00:00:00.004","active":true,"matchIndex":1246,"voting":true,"id":"member-2-shard-inventory-operational","nextIndex":1247}],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"1.985 ms","CurrentTerm":2,"LastTerm":2,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":2,"VotedFor":"member-1-shard-inventory-operational","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":468,"TxCohortCacheSize":0,"PeerVotingStates":"member-3-shard-inventory-operational: true, member-2-shard-inventory-operational: true","LastLogTerm":2,"StatRetrievalError":null,"CommitIndex":1246,"SnapshotTerm":2,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":20,"ShardName":"member-1-shard-inventory-operational","LeadershipChangeCount":1,"InMemoryJournalDataSize":1626332},"timestamp":1775609515,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:55.587998" elapsed="0.005684"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:55.587475" elapsed="0.006298"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:55.587431" elapsed="0.006386"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:55.596276" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:55.594104" elapsed="0.002217"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:55.593882" elapsed="0.002474"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:55.593865" elapsed="0.002515"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:55.596932" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:55.596548" elapsed="0.000413"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:55.597287" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:55.597034" elapsed="0.000313"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:55.597862" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:55.597557" elapsed="0.000332"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:55.597387" elapsed="0.000537"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:55.597014" elapsed="0.000932"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:55.598485" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:55.598102" elapsed="0.000411"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:55.598815" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:55.598584" elapsed="0.000287"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:55.599362" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:55.599053" elapsed="0.000335"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:55.598895" elapsed="0.000528"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:55.598565" elapsed="0.000879"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:51:55.599594" elapsed="0.000339"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:51:55.600404" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:55.600097" elapsed="0.000333"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:51:55.600580" elapsed="0.002218"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:51:55.586471" elapsed="0.016392"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:51:55.603130" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:51:55.603017" elapsed="0.000182"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:55.602971" elapsed="0.000267"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:51:55.606401" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-1-shard-inventory-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestam...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:51:55.603475" elapsed="0.002979"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:51:55.606646" elapsed="0.000071"/>
</return>
<msg time="2026-04-08T00:51:55.607012" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-1-shard-inventory-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestam...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:51:55.565063" elapsed="0.042041"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:51:55.607228" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:51:55.607501" level="INFO">${data_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-1-shard-inventory-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestam...</msg>
<var>${data_text}</var>
<arg>uri=${uri}</arg>
<arg>session=${session}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-08T00:51:55.563573" elapsed="0.043956"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:55.609651" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-1-shard-inventory-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1775609...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:55.608591" elapsed="0.001154"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-08T00:51:55.609828" elapsed="0.000031"/>
</return>
<msg time="2026-04-08T00:51:55.610121" level="INFO">${data_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-1-shard-inventory-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1775609...</msg>
<var>${data_object}</var>
<arg>${data_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-08T00:51:55.607758" elapsed="0.002391"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:51:55.610638" level="INFO">${value} = {'AbortTransactionsCount': 0, 'CommitIndex': 1246, 'CommittedTransactionsCount': 468, 'CurrentTerm': 2, 'FailedReadTransactionsCount': 0, 'FailedTransactionsCount': 0, 'FollowerInfo': [{'active': True...</msg>
<var>${value}</var>
<arg>${data_object}</arg>
<arg>value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:51:55.610326" elapsed="0.000340"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:51:55.611219" level="INFO">${raft_property} = Leader</msg>
<var>${raft_property}</var>
<arg>${value}</arg>
<arg>${property}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:51:55.610824" elapsed="0.000421"/>
</kw>
<return>
<value>${raft_property}</value>
<status status="PASS" start="2026-04-08T00:51:55.611293" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:51:55.611449" level="INFO">${raft_state} = Leader</msg>
<var>${raft_state}</var>
<arg>RaftState</arg>
<arg>${shard_name}</arg>
<arg>${shard_type}</arg>
<arg>${member_index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft property.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T00:51:55.415686" elapsed="0.195788"/>
</kw>
<return>
<value>${raft_state}</value>
<status status="PASS" start="2026-04-08T00:51:55.611532" elapsed="0.000026"/>
</return>
<msg time="2026-04-08T00:51:55.611682" level="INFO">${raft_state} = Leader</msg>
<var>${raft_state}</var>
<arg>shard_name=${shard_name}</arg>
<arg>shard_type=${ds_type}</arg>
<arg>member_index=${index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft status.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T00:51:55.414889" elapsed="0.196817"/>
</kw>
<if>
<branch type="IF" condition="'Follower' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${follower_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:55.612004" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:55.611787" elapsed="0.000273"/>
</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="PASS" start="2026-04-08T00:51:55.612317" elapsed="0.000194"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:55.612084" elapsed="0.000466"/>
</branch>
<branch type="ELSE IF" condition="${validate}">
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized Raft state: ${raft_state}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:55.612718" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:55.612573" elapsed="0.000196"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:55.611769" elapsed="0.001022"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T00:51:55.414721" elapsed="0.198094"/>
</iter>
<iter>
<kw name="Get_Raft_State_Of_Shard_At_Member" owner="ClusterManagement">
<kw name="Get_Raft_Property_From_Shard_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:55.616058" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:55.615216" elapsed="0.000930"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:51:55.616335" elapsed="0.000031"/>
</return>
<msg time="2026-04-08T00:51:55.616598" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:51:55.614681" elapsed="0.001943"/>
</kw>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Get_As_Json_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:55.665978" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:55.665592" elapsed="0.000485"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:51:55.666884" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:51:55.666604" elapsed="0.000357">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-08T00:51:55.667055" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:51:55.666264" elapsed="0.000816"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:51:55.667648" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:51:55.667261" elapsed="0.000413"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T00:51:55.667976" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-08T00:51:55.668213" level="INFO">${template} = /rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T00:51:55.667835" elapsed="0.000405"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:55.668646" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:55.668397" elapsed="0.000294"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:55.669680" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:55.669424" elapsed="0.000301"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-08T00:51:55.670173" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-08T00:51:55.669883" elapsed="0.000317"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:55.670536" elapsed="0.000022"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:55.670738" elapsed="0.000023"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:55.670909" elapsed="0.000021"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-08T00:51:55.670401" elapsed="0.000566"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-08T00:51:55.670255" elapsed="0.000742"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-08T00:51:55.671043" elapsed="0.000031"/>
</return>
<msg time="2026-04-08T00:51:55.671222" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-08T00:51:55.669061" elapsed="0.002187"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:55.668766" elapsed="0.002514"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:55.671449" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:55.671305" elapsed="0.000200"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:55.668744" elapsed="0.002782"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:55.672096" level="INFO">${final_text} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:55.671665" elapsed="0.000458"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T00:51:55.672187" 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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="PASS" start="2026-04-08T00:51:55.664938" elapsed="0.007374"/>
</kw>
<msg time="2026-04-08T00:51:55.672365" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:51:55.653077" elapsed="0.019340"/>
</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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:55.684131" elapsed="0.000047"/>
</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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:55.695843" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:55.707516" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:55.707715" elapsed="0.000025"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:55.707893" elapsed="0.000022"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:55.708275" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:55.708114" elapsed="0.000218"/>
</branch>
<status status="NOT RUN" start="2026-04-08T00:51:55.708099" elapsed="0.000258"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:55.708497" elapsed="0.000021"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:55.708664" elapsed="0.000021"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:55.708835" elapsed="0.000021"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-08T00:51:55.708070" elapsed="0.000819"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-08T00:51:55.707969" elapsed="0.000946"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:55.709061" elapsed="0.000021"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-08T00:51:55.709136" elapsed="0.000016"/>
</return>
<msg time="2026-04-08T00:51:55.709270" level="INFO">${uri} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-08T00:51:55.649036" elapsed="0.060260"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:51:55.710607" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:51:55.710297" elapsed="0.000375">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-08T00:51:55.710767" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:51:55.709944" elapsed="0.000847"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:55.711105" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:55.710862" elapsed="0.000315"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:55.711665" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:55.711378" elapsed="0.000313"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:55.711202" elapsed="0.000523"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:55.710843" elapsed="0.000904"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:51:55.714119" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:51:55.711895" elapsed="0.002250"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-08T00:51:55.714210" elapsed="0.000031"/>
</return>
<msg time="2026-04-08T00:51:55.714365" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:51:55.709624" elapsed="0.004766"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:51:55.715645" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:51:55.715408" elapsed="0.000300">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-08T00:51:55.715801" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:51:55.715054" elapsed="0.000772"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-08T00:51:55.716031" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-08T00:51:55.715898" elapsed="0.000191"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:55.715879" elapsed="0.000234"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:55.716271" elapsed="0.000024"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:55.716442" elapsed="0.000021"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-08T00:51:55.716507" elapsed="0.000015"/>
</return>
<msg time="2026-04-08T00:51:55.718460" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:51:55.714731" elapsed="0.003756"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:55.719866" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:55.719616" elapsed="0.000295"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:55.720321" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:55.720063" elapsed="0.000300"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:51:55.738277" level="INFO">GET Request : url=http://10.30.170.131:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 path_url=/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node012m0dyuink19r12kj250j53usg1.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:51:55.739214" level="INFO">GET Response : url=http://10.30.170.131:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Transfer-Encoding': 'chunked'} 
 body={"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","hidden-symmetric-keys","encrypted-private-keys","asymmetrically-encrypted-value-format","cms-encrypted-data-format","cleartext-private-keys","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["ssh-client-keepalives","client-ident-hostbased","client-ident-publickey","client-ident-password"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-ex... (set the log level to DEBUG or TRACE to see the full content) 
 </msg>
<msg time="2026-04-08T00:51:55.739660" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:51:55.722384" elapsed="0.017337"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:55.720430" elapsed="0.019389"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:55.740249" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:55.739877" elapsed="0.000520"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:55.720412" elapsed="0.020032"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:55.748433" level="INFO">{"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","hidden-symmetric-keys","encrypted-private-keys","asymmetrically-encrypted-value-format","cms-encrypted-data-format","cleartext-private-keys","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["ssh-client-keepalives","client-ident-hostbased","client-ident-publickey","client-ident-password"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-experimenter-types?revision=2015-10-20","namespace":"urn:opendaylight:openflowplugin:experimenter:types","conformance-type":"import"},{"name":"ietf-ip_2018-02-22","revision":"2018-02-22","schema":"/rests/modules/ietf-ip?revision=2018-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-ip","conformance-type":"import","feature":["ipv6-privacy-autoconf","ipv4-non-contiguous-netmasks"]},{"name":"ietf-tcp-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-client","conformance-type":"import","feature":["local-binding-supported","tcp-client-keepalives"]},{"name":"node-config_2014-10-15","revision":"2014-10-15","schema":"/rests/modules/node-config?revision=2014-10-15","namespace":"urn:opendaylight:module:config","conformance-type":"import"},{"name":"ietf-restconf_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf","conformance-type":"import"},{"name":"ietf-datastores_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-datastores?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-datastores","conformance-type":"import"},{"name":"ietf-yang-patch_2017-02-22","revision":"2017-02-22","schema":"/rests/modules/ietf-yang-patch?revision=2017-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-patch","conformance-type":"import"},{"name":"sal-group_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-group?revision=2013-09-18","namespace":"urn:opendaylight:group:service","conformance-type":"import"},{"name":"odl-codegen-extensions_2024-06-27","revision":"2024-06-27","schema":"/rests/modules/odl-codegen-extensions?revision=2024-06-27","namespace":"urn:opendaylight:yang:extension:codegen","conformance-type":"import"},{"name":"sal-meter_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-meter?revision=2013-09-18","namespace":"urn:opendaylight:meter:service","conformance-type":"import"},{"name":"ietf-interfaces_2018-02-20","revision":"2018-02-20","schema":"/rests/modules/ietf-interfaces?revision=2018-02-20","namespace":"urn:ietf:params:xml:ns:yang:ietf-interfaces","conformance-type":"import","feature":["pre-provisioning","if-mib","arbitrary-names"]},{"name":"opendaylight-l2-types_2013-08-27","revision":"2013-08-27","schema":"/rests/modules/opendaylight-l2-types?revision=2013-08-27","namespace":"urn:opendaylight:l2:types","conformance-type":"import"},{"name":"opendaylight-flow-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-flow-types?revision=2013-10-26","namespace":"urn:opendaylight:flow:types","conformance-type":"import"},{"name":"lldp-speaker-config_2016-05-12","revision":"2016-05-12","schema":"/rests/modules/lldp-speaker-config?revision=2016-05-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker:config","conformance-type":"import"},{"name":"aaa-cert_2015-11-26","revision":"2015-11-26","schema":"/rests/modules/aaa-cert?revision=2015-11-26","namespace":"urn:opendaylight:yang:aaa:cert","conformance-type":"import"},{"name":"openflow-action_2015-02-03","revision":"2015-02-03","schema":"/rests/modules/openflow-action?revision=2015-02-03","namespace":"urn:opendaylight:openflow:common:action","conformance-type":"import"},{"name":"openflow-approved-extensions_2016-08-02","revision":"2016-08-02","schema":"/rests/modules/openflow-approved-extensions?revision=2016-08-02","namespace":"urn:opendaylight:openflow:approved:extensions","conformance-type":"import"},{"name":"nc-notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/nc-notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netmod:notification","conformance-type":"import"},{"name":"ietf-netconf-nmda_2019-01-07","revision":"2019-01-07","schema":"/rests/modules/ietf-netconf-nmda?revision=2019-01-07","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-nmda","conformance-type":"import","feature":["with-defaults","origin"]},{"name":"ietf-tcp-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-common","conformance-type":"import","feature":["keepalives-supported"]},{"name":"network-topology_2013-10-21","revision":"2013-10-21","schema":"/rests/modules/network-topology?revision=2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:network-topology","conformance-type":"import"},{"name":"aaa-encrypt-service-config_2024-02-02","revision":"2024-02-02","schema":"/rests/modules/aaa-encrypt-service-config?revision=2024-02-02","namespace":"config:aaa:authn:encrypt:service:config","conformance-type":"import"},{"name":"openflow-instruction_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-instruction?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:instruction","conformance-type":"import"},{"name":"ietf-tls-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-client","conformance-type":"import","feature":["client-ident-x509-cert","server-auth-x509-cert"]},{"name":"opendaylight-group-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-group-statistics?revision=2013-11-11","namespace":"urn:opendaylight:group:statistics","conformance-type":"import"},{"name":"cluster-admin_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/cluster-admin?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:cluster:admin","conformance-type":"import"},{"name":"opendaylight-flow-statistics_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-flow-statistics?revision=2013-08-19","namespace":"urn:opendaylight:flow:statistics","conformance-type":"import"},{"name":"opendaylight-table-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-table-types?revision=2013-10-26","namespace":"urn:opendaylight:table:types","conformance-type":"import"},{"name":"forwarding-rules-manager-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/forwarding-rules-manager-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:forwardingrules-manager:config","conformance-type":"import"},{"name":"odl-srm-types_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-types?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:types","conformance-type":"import"},{"name":"ietf-x509-cert-to-name_2014-12-10","revision":"2014-12-10","schema":"/rests/modules/ietf-x509-cert-to-name?revision=2014-12-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-x509-cert-to-name","conformance-type":"import"},{"name":"flow-node-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-node-inventory?revision=2013-08-19","namespace":"urn:opendaylight:flow:inventory","conformance-type":"import"},{"name":"flow-errors_2013-11-16","revision":"2013-11-16","schema":"/rests/modules/flow-errors?revision=2013-11-16","namespace":"urn:opendaylight:flow:errors","conformance-type":"import"},{"name":"ietf-netconf_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:netconf:base:1.0","conformance-type":"import","feature":["xpath","url","rollback-on-error","validate","startup","candidate","confirmed-commit","writable-running"]},{"name":"iana-ssh-public-key-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-public-key-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-public-key-algs","conformance-type":"import"},{"name":"aaa-cert-mdsal_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/aaa-cert-mdsal?revision=2016-03-21","namespace":"urn:opendaylight:yang:aaa:cert:mdsal","conformance-type":"import"},{"name":"odl-device-notification_2024-02-18","revision":"2024-02-18","schema":"/rests/modules/odl-device-notification?revision=2024-02-18","namespace":"urn:opendaylight:device:notification","conformance-type":"import"},{"name":"ietf-origin_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-origin?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-origin","conformance-type":"import"},{"name":"openflow-augments_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-augments?revision=2015-02-25","namespace":"urn:opendaylight:openflow:augments","conformance-type":"import"},{"name":"iana-ssh-encryption-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-encryption-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-encryption-algs","conformance-type":"import"},{"name":"ietf-truststore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-truststore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-truststore","conformance-type":"import","feature":["inline-definitions-supported"]},{"name":"distributed-datastore-provider_2025-01-30","revision":"2025-01-30","schema":"/rests/modules/distributed-datastore-provider?revision=2025-01-30","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:distributed-datastore-provider","conformance-type":"import"},{"name":"opendaylight-group-types_2013-10-18","revision":"2013-10-18","schema":"/rests/modules/opendaylight-group-types?revision=2013-10-18","namespace":"urn:opendaylight:group:types","conformance-type":"import"},{"name":"sal-remote-augment_2023-11-03","revision":"2023-11-03","schema":"/rests/modules/sal-remote-augment?revision=2023-11-03","namespace":"urn:sal:restconf:event:subscription","conformance-type":"import"},{"name":"opendaylight-ipv6-arbitrary-bitmask-fields_2016-02-24","revision":"2016-02-24","schema":"/rests/modules/opendaylight-ipv6-arbitrary-bitmask-fields?revision=2016-02-24","namespace":"urn:opendaylight:opendaylight-ipv6-arbitrary-bitmask-fields","conformance-type":"import"},{"name":"sal-flows-batch_2016-03-14","revision":"2016-03-14","schema":"/rests/modules/sal-flows-batch?revision=2016-03-14","namespace":"urn:opendaylight:flows:service","conformance-type":"import"},{"name":"ietf-tls-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-common","conformance-type":"import","feature":["tls12","hello-params","tls13"]},{"name":"openflow-types_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-types?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:types","conformance-type":"import"},{"name":"ietf-netconf-with-defaults_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf-with-defaults?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults","conformance-type":"import"},{"name":"odl-srm-ops_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-ops?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:ops","conformance-type":"import"},{"name":"odl-general-entity_2015-09-30","revision":"2015-09-30","schema":"/rests/modules/odl-general-entity?revision=2015-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:mdsal:core:general-entity","conformance-type":"import"},{"name":"iana-ssh-key-exchange-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-key-exchange-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-key-exchange-algs","conformance-type":"import"},{"name":"node-ssl-connection-error_2019-07-23","revision":"2019-07-23","schema":"/rests/modules/node-ssl-connection-error?revision=2019-07-23","namespace":"urn:opendaylight:node-ssl-connection-error:service","conformance-type":"import"},{"name":"openflow-protocol_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-protocol?revision=2013-07-31","namespace":"urn:opendaylight:openflow:protocol","conformance-type":"import"},{"name":"ietf-udp-server_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-server?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-server","conformance-type":"import"},{"name":"ietf-keystore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-keystore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-keystore","conformance-type":"import","feature":["asymmetric-keys","inline-definitions-supported"]},{"name":"aaa_2016-12-14","revision":"2016-12-14","schema":"/rests/modules/aaa?revision=2016-12-14","namespace":"urn:opendaylight:params:xml:ns:yang:aaa","conformance-type":"import"},{"name":"aaa-cert-rpc_2015-12-15","revision":"2015-12-15","schema":"/rests/modules/aaa-cert-rpc?revision=2015-12-15","namespace":"urn:opendaylight:yang:aaa:cert:rpc","conformance-type":"import"},{"name":"system-notifications_2013-09-27","revision":"2013-09-27","schema":"/rests/modules/system-notifications?revision=2013-09-27","namespace":"urn:opendaylight:openflow:system","conformance-type":"import"},{"name":"sal-flat-batch_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/sal-flat-batch?revision=2016-03-21","namespace":"urn:opendaylight:flat-batch:service","conformance-type":"import"},{"name":"notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netconf:notification:1.0","conformance-type":"import"},{"name":"sal-remote_2014-01-14","revision":"2014-01-14","schema":"/rests/modules/sal-remote?revision=2014-01-14","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:remote","conformance-type":"import"},{"name":"yang-ext_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/yang-ext?revision=2013-07-09","namespace":"urn:opendaylight:yang:extension:yang-ext","conformance-type":"import"},{"name":"opendaylight-multipart-types_2017-01-12","revision":"2017-01-12","schema":"/rests/modules/opendaylight-multipart-types?revision=2017-01-12","namespace":"urn:opendaylight:multipart:types","conformance-type":"import"},{"name":"opendaylight-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-inventory?revision=2013-08-19","namespace":"urn:opendaylight:inventory","conformance-type":"import"},{"name":"sal-queue_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-queue?revision=2015-03-05","namespace":"urn:opendaylight:queue:service","conformance-type":"import"},{"name":"sal-groups-batch_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/sal-groups-batch?revision=2016-03-15","namespace":"urn:opendaylight:groups:service","conformance-type":"import"},{"name":"arbitrator-reconcile_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/arbitrator-reconcile?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:arbitrator-reconcile:service","conformance-type":"import"},{"name":"ietf-yang-metadata_2016-08-05","revision":"2016-08-05","schema":"/rests/modules/ietf-yang-metadata?revision=2016-08-05","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-metadata","conformance-type":"import"},{"name":"opendaylight-arbitrary-bitmask-fields_2016-01-30","revision":"2016-01-30","schema":"/rests/modules/opendaylight-arbitrary-bitmask-fields?revision=2016-01-30","namespace":"urn:opendaylight:arbitrary:bitmask:fields","conformance-type":"import"},{"name":"ietf-udp-client_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-client?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-client","conformance-type":"import","feature":["local-binding"]},{"name":"opendaylight-meter-types_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/opendaylight-meter-types?revision=2013-09-18","namespace":"urn:opendaylight:meter:types","conformance-type":"import"},{"name":"opendaylight-action-types_2013-11-12","revision":"2013-11-12","schema":"/rests/modules/opendaylight-action-types?revision=2013-11-12","namespace":"urn:opendaylight:action:types","conformance-type":"import"},{"name":"sal-role_2015-07-27","revision":"2015-07-27","schema":"/rests/modules/sal-role?revision=2015-07-27","namespace":"urn:opendaylight:role:service","conformance-type":"import"},{"name":"openflow-provider-config_2016-05-10","revision":"2016-05-10","schema":"/rests/modules/openflow-provider-config?revision=2016-05-10","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:provider:config","conformance-type":"import"},{"name":"odl-serviceutils-upgrade_2018-07-02","revision":"2018-07-02","schema":"/rests/modules/odl-serviceutils-upgrade?revision=2018-07-02","namespace":"urn:opendaylight:serviceutils:upgrade","conformance-type":"import"},{"name":"opendaylight-match-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-match-types?revision=2013-10-26","namespace":"urn:opendaylight:model:match:types","conformance-type":"import"},{"name":"ietf-restconf-server_2024-08-14","revision":"2024-08-14","schema":"/rests/modules/ietf-restconf-server?revision=2024-08-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-server","conformance-type":"import","feature":["http-listen","https-listen"]},{"name":"reconciliation-result-state_2017-07-13","revision":"2017-07-13","schema":"/rests/modules/reconciliation-result-state?revision=2017-07-13","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:rf:state","conformance-type":"import"},{"name":"onf-extensions_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/onf-extensions?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf","conformance-type":"import"},{"name":"sal-table_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/sal-table?revision=2013-10-26","namespace":"urn:opendaylight:table:service","conformance-type":"import"},{"name":"iana-http-versions_2026-02-04","revision":"2026-02-04","schema":"/rests/modules/iana-http-versions?revision=2026-02-04","namespace":"urn:ietf:params:xml:ns:yang:iana-http-versions","conformance-type":"import"},{"name":"opendaylight-direct-statistics_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/opendaylight-direct-statistics?revision=2016-05-11","namespace":"urn:opendaylight:direct:statistics","conformance-type":"import"},{"name":"opendaylight-port-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-port-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:port","conformance-type":"import"},{"name":"sal-async-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/sal-async-config?revision=2017-06-19","namespace":"urn:opendaylight:async-config:service","conformance-type":"import"},{"name":"aaa-password-service-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-password-service-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:password:service:config","conformance-type":"import"},{"name":"ietf-yang-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-yang-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-types","conformance-type":"import"},{"name":"opendaylight-queue-statistics_2013-12-16","revision":"2013-12-16","schema":"/rests/modules/opendaylight-queue-statistics?revision=2013-12-16","namespace":"urn:opendaylight:queue:statistics","conformance-type":"import"},{"name":"sal-bundle_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/sal-bundle?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf:bundle:service","conformance-type":"import"},{"name":"ietf-restconf-subscribed-notifications_2019-11-17","revision":"2019-11-17","schema":"/rests/modules/ietf-restconf-subscribed-notifications?revision=2019-11-17","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-subscribed-notifications","conformance-type":"import"},{"name":"sal-meters-batch_2016-03-16","revision":"2016-03-16","schema":"/rests/modules/sal-meters-batch?revision=2016-03-16","namespace":"urn:opendaylight:meters:service","conformance-type":"import"},{"name":"odl-entity-owners","revision":"","schema":"/rests/modules/odl-entity-owners","namespace":"urn:opendaylight:params:xml:ns:yang:controller:entity-owners","conformance-type":"import"},{"name":"sal-experimenter-mp-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-mp-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-mp-message:service","conformance-type":"import"},{"name":"packet-processing_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/packet-processing?revision=2013-07-09","namespace":"urn:opendaylight:packet:service","conformance-type":"import"},{"name":"openflow-configuration_2014-06-30","revision":"2014-06-30","schema":"/rests/modules/openflow-configuration?revision=2014-06-30","namespace":"urn:opendaylight:openflow:config","conformance-type":"import"},{"name":"odl-srm-rpcs_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-rpcs?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:rpc","conformance-type":"import"},{"name":"ietf-netconf-acm_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-netconf-acm?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-acm","conformance-type":"import"},{"name":"iana-crypt-hash_2014-08-06","revision":"2014-08-06","schema":"/rests/modules/iana-crypt-hash?revision=2014-08-06","namespace":"urn:ietf:params:xml:ns:yang:iana-crypt-hash","conformance-type":"import","feature":["crypt-hash-sha-512","crypt-hash-sha-256","crypt-hash-md5"]},{"name":"openflow-extensible-match_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-extensible-match?revision=2015-02-25","namespace":"urn:opendaylight:openflow:oxm","conformance-type":"import"}],"module-set-id":"2"}}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:55.742706" elapsed="0.006471"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:55.742215" elapsed="0.007047"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:55.742142" elapsed="0.007220"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:55.751992" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:55.749850" elapsed="0.002187"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:55.749495" elapsed="0.002576"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:55.749455" elapsed="0.002640"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:55.752684" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:55.752284" elapsed="0.000427"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:55.753018" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:55.752781" elapsed="0.000295"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:55.753589" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:55.753277" elapsed="0.000338"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:55.753099" elapsed="0.000551"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:55.752762" elapsed="0.000910"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:55.754214" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:55.753831" elapsed="0.000411"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:55.754545" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:55.754313" elapsed="0.000289"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:55.755081" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:55.754790" elapsed="0.000317"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:55.754626" elapsed="0.000516"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:55.754294" elapsed="0.000886"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:51:55.755352" elapsed="0.000343"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:51:55.756151" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:55.755861" elapsed="0.000332"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:51:55.756348" elapsed="0.002164"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:51:55.741235" elapsed="0.017339"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:51:55.758749" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:51:55.758644" elapsed="0.000150"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:55.758625" elapsed="0.000191"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:51:55.766958" level="INFO">${text_normalized} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:51:55.758959" elapsed="0.008029"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:51:55.767040" elapsed="0.000031"/>
</return>
<msg time="2026-04-08T00:51:55.767213" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:51:55.718796" elapsed="0.048444"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:51:55.767302" elapsed="0.000026"/>
</return>
<msg time="2026-04-08T00:51:55.767638" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="PASS" start="2026-04-08T00:51:55.627664" elapsed="0.140011"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Json_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:55.768178" elapsed="0.000027"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:55.767807" elapsed="0.000528"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:55.767773" elapsed="0.000605"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:51:55.768440" elapsed="0.000071"/>
</return>
<arg>session=${session}</arg>
<arg>folder=${RESTCONF_MODULES_DIR}</arg>
<arg>verify=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Add arguments sensible for JSON data, return Get_Templated response text.
Optionally, verification against JSON data (may be iterated) is called.
Only subset of JSON data is verified and returned if JMES path is specified in
file ${folder}/jmespath.expr.</doc>
<status status="PASS" start="2026-04-08T00:51:55.621033" elapsed="0.147674"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:55.616693" elapsed="0.152126"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:55.616675" elapsed="0.152171"/>
</if>
<kw name="Resolve_Shard_Type_Class" owner="ClusterManagement">
<if>
<branch type="IF" condition="'${shard_type}' == 'config'">
<return>
<value>DistributedConfigDatastore</value>
<status status="NOT RUN" start="2026-04-08T00:51:55.769765" elapsed="0.000048"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:51:55.769543" elapsed="0.000314"/>
</branch>
<branch type="ELSE IF" condition="'${shard_type}' == 'operational'">
<return>
<value>DistributedOperationalDatastore</value>
<status status="PASS" start="2026-04-08T00:51:55.770133" elapsed="0.000088"/>
</return>
<status status="PASS" start="2026-04-08T00:51:55.769915" elapsed="0.000353"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:55.769510" elapsed="0.000817"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized shard type: ${shard_type}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:55.770557" elapsed="0.000066"/>
</kw>
<msg time="2026-04-08T00:51:55.770759" level="INFO">${type_class} = DistributedOperationalDatastore</msg>
<var>${type_class}</var>
<arg>shard_type=${shard_type}</arg>
<doc>Simple lookup for class name corresponding to desired type.</doc>
<status status="PASS" start="2026-04-08T00:51:55.769111" elapsed="0.001676"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:55.771613" level="INFO">${cluster_index} = 2</msg>
<var>${cluster_index}</var>
<arg>${member_index}+${NODE_ROLE_INDEX_START}-1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:55.770959" elapsed="0.000681"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:55.772768" level="INFO">${uri} = jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-inventory-operational,type=DistributedOperationalDatastore</msg>
<var>${uri}</var>
<arg>${JOLOKIA_READ_URI}:Category=Shards,name=member-${cluster_index}-shard-${shard_name}-${shard_type},type=${type_class}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:55.771797" elapsed="0.000999"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:55.779673" level="INFO">jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-inventory-operational,type=DistributedOperationalDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:55.779388" elapsed="0.000370"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:55.780297" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:55.780001" elapsed="0.000379"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:51:55.787799" level="INFO">GET Request : url=http://10.30.170.131:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-inventory-operational,type=DistributedOperationalDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-inventory-operational,type=DistributedOperationalDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:51:55.787859" level="INFO">GET Response : url=http://10.30.170.131:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-inventory-operational,type=DistributedOperationalDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Wed, 08 Apr 2026 00:51:55 GMT', 'Expires': 'Tue, 07 Apr 2026 23:51:55 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-2-shard-inventory-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"ReadWriteTransactionCount":0,"SnapshotIndex":1268,"InMemoryJournalLogSize":1,"ReplicatedToAllIndex":1268,"Leader":"member-1-shard-inventory-operational","LastIndex":1269,"RaftState":"Follower","LastCommittedTransactionTime":"1970-01-01 00:00:00.000","LastApplied":1269,"PeerAddresses":"member-1-shard-inventory-operational: pekko:\/\/opendaylight-cluster-data@10.30.170.48:2550\/user\/shardmanager-operational\/member-1-shard-inventory-operational, member-3-shard-inventory-operational: pekko:\/\/opendaylight-cluster-data@10.30.171.110:2550\/user\/shardmanager-operational\/member-3-shard-inventory-operational","LastLogIndex":1269,"LastLeadershipChangeTime":"2026-04-08 00:46:45.936","FollowerInitialSyncStatus":true,"FollowerInfo":[],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"371.9 μs","CurrentTerm":2,"LastTerm":2,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-inventory-operational","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":0,"TxCohortCacheSize":0,"PeerVotingStates":"member-1-shard-inventory-operational: true, member-3-shard-inventory-operational: true","LastLogTerm":2,"StatRetrievalError":null,"CommitIndex":1269,"SnapshotTerm":2,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-2-shard-inventory-operational","LeadershipChangeCount":1,"InMemoryJournalDataSize":1662090},"timestamp":1775609515,"status":200} 
 </msg>
<msg time="2026-04-08T00:51:55.787962" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:51:55.782546" elapsed="0.005441"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:55.780525" elapsed="0.007504"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:55.788250" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:55.788076" elapsed="0.000239"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:55.780479" elapsed="0.007875"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:55.792065" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-2-shard-inventory-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"ReadWriteTransactionCount":0,"SnapshotIndex":1268,"InMemoryJournalLogSize":1,"ReplicatedToAllIndex":1268,"Leader":"member-1-shard-inventory-operational","LastIndex":1269,"RaftState":"Follower","LastCommittedTransactionTime":"1970-01-01 00:00:00.000","LastApplied":1269,"PeerAddresses":"member-1-shard-inventory-operational: pekko:\/\/opendaylight-cluster-data@10.30.170.48:2550\/user\/shardmanager-operational\/member-1-shard-inventory-operational, member-3-shard-inventory-operational: pekko:\/\/opendaylight-cluster-data@10.30.171.110:2550\/user\/shardmanager-operational\/member-3-shard-inventory-operational","LastLogIndex":1269,"LastLeadershipChangeTime":"2026-04-08 00:46:45.936","FollowerInitialSyncStatus":true,"FollowerInfo":[],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"371.9 μs","CurrentTerm":2,"LastTerm":2,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-inventory-operational","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":0,"TxCohortCacheSize":0,"PeerVotingStates":"member-1-shard-inventory-operational: true, member-3-shard-inventory-operational: true","LastLogTerm":2,"StatRetrievalError":null,"CommitIndex":1269,"SnapshotTerm":2,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-2-shard-inventory-operational","LeadershipChangeCount":1,"InMemoryJournalDataSize":1662090},"timestamp":1775609515,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:55.789634" elapsed="0.002497"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:55.789371" elapsed="0.002811"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:55.789146" elapsed="0.003063"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:55.795071" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:55.792494" elapsed="0.002640"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:55.792270" elapsed="0.002932"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:55.792252" elapsed="0.002985"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:55.796004" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:55.795474" elapsed="0.000567"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:55.796495" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:55.796141" elapsed="0.000435"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:55.797292" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:55.796832" elapsed="0.000499"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:55.796608" elapsed="0.000774"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:55.796115" elapsed="0.001297"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:55.798140" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:55.797632" elapsed="0.000566"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:55.798624" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:55.798299" elapsed="0.000404"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:55.799382" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:55.798954" elapsed="0.000464"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:55.798735" elapsed="0.000732"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:55.798273" elapsed="0.001224"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:51:55.799705" elapsed="0.000512"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:51:55.800837" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:55.800446" elapsed="0.000427"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:51:55.801084" elapsed="0.003022"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:51:55.788745" elapsed="0.015470"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:51:55.804599" elapsed="0.000022"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:51:55.804442" elapsed="0.000220"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:55.804379" elapsed="0.000335"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:51:55.807973" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-2-shard-inventory-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestam...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:51:55.805036" elapsed="0.002990"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:51:55.808109" elapsed="0.000082"/>
</return>
<msg time="2026-04-08T00:51:55.808484" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-2-shard-inventory-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestam...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:51:55.774436" elapsed="0.034174"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:51:55.808715" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:51:55.808987" level="INFO">${data_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-2-shard-inventory-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestam...</msg>
<var>${data_text}</var>
<arg>uri=${uri}</arg>
<arg>session=${session}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-08T00:51:55.773009" elapsed="0.036005"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:55.811229" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-2-shard-inventory-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1775609...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:55.810086" elapsed="0.001238"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-08T00:51:55.811408" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:51:55.811700" level="INFO">${data_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-2-shard-inventory-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1775609...</msg>
<var>${data_object}</var>
<arg>${data_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-08T00:51:55.809272" elapsed="0.002456"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:51:55.812212" level="INFO">${value} = {'AbortTransactionsCount': 0, 'CommitIndex': 1269, 'CommittedTransactionsCount': 0, 'CurrentTerm': 2, 'FailedReadTransactionsCount': 0, 'FailedTransactionsCount': 0, 'FollowerInfo': [], 'FollowerIniti...</msg>
<var>${value}</var>
<arg>${data_object}</arg>
<arg>value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:51:55.811886" elapsed="0.000355"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:51:55.812781" level="INFO">${raft_property} = Follower</msg>
<var>${raft_property}</var>
<arg>${value}</arg>
<arg>${property}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:51:55.812398" elapsed="0.000409"/>
</kw>
<return>
<value>${raft_property}</value>
<status status="PASS" start="2026-04-08T00:51:55.812853" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:51:55.813007" level="INFO">${raft_state} = Follower</msg>
<var>${raft_state}</var>
<arg>RaftState</arg>
<arg>${shard_name}</arg>
<arg>${shard_type}</arg>
<arg>${member_index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft property.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T00:51:55.613987" elapsed="0.199045"/>
</kw>
<return>
<value>${raft_state}</value>
<status status="PASS" start="2026-04-08T00:51:55.813090" elapsed="0.000025"/>
</return>
<msg time="2026-04-08T00:51:55.813253" level="INFO">${raft_state} = Follower</msg>
<var>${raft_state}</var>
<arg>shard_name=${shard_name}</arg>
<arg>shard_type=${ds_type}</arg>
<arg>member_index=${index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft status.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T00:51:55.613145" elapsed="0.200143"/>
</kw>
<if>
<branch type="IF" condition="'Follower' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${follower_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-08T00:51:55.813583" elapsed="0.000192"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:55.813369" elapsed="0.000444"/>
</branch>
<branch type="ELSE IF" condition="'Leader' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${leader_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:55.814090" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:55.813838" elapsed="0.000307"/>
</branch>
<branch type="ELSE IF" condition="${validate}">
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized Raft state: ${raft_state}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:55.814325" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:55.814183" elapsed="0.000194"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:55.813351" elapsed="0.001048"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T00:51:55.612980" elapsed="0.201444"/>
</iter>
<iter>
<kw name="Get_Raft_State_Of_Shard_At_Member" owner="ClusterManagement">
<kw name="Get_Raft_Property_From_Shard_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:55.817810" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:55.816936" elapsed="0.000963"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:51:55.817978" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:51:55.818259" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:51:55.816416" elapsed="0.001868"/>
</kw>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Get_As_Json_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:55.866071" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:55.865694" elapsed="0.000404"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:51:55.866861" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:51:55.866607" elapsed="0.000328">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-08T00:51:55.867069" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:51:55.866274" elapsed="0.000819"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:51:55.867655" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:51:55.867272" elapsed="0.000410"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T00:51:55.867977" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-08T00:51:55.868126" level="INFO">${template} = /rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T00:51:55.867840" elapsed="0.000311"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:55.868563" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:55.868320" elapsed="0.000286"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:55.869562" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:55.869308" elapsed="0.000297"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-08T00:51:55.870026" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-08T00:51:55.869761" elapsed="0.000291"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:55.870391" elapsed="0.000022"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:55.870592" elapsed="0.000024"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:55.870761" elapsed="0.000021"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-08T00:51:55.870258" elapsed="0.000560"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-08T00:51:55.870103" elapsed="0.000744"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-08T00:51:55.870890" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:51:55.871048" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-08T00:51:55.868964" elapsed="0.002109"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:55.868674" elapsed="0.002430"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:55.871289" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:55.871129" elapsed="0.000216"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:55.868655" elapsed="0.002710"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:55.871934" level="INFO">${final_text} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:55.871503" elapsed="0.000458"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T00:51:55.872009" elapsed="0.000028"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="PASS" start="2026-04-08T00:51:55.865057" elapsed="0.007073"/>
</kw>
<msg time="2026-04-08T00:51:55.872199" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:51:55.853360" elapsed="0.018892"/>
</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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:55.884023" 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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:55.895578" elapsed="0.000029"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:55.907050" elapsed="0.000027"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:55.907258" elapsed="0.000023"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:55.907436" elapsed="0.000021"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:55.907800" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:55.907658" elapsed="0.000197"/>
</branch>
<status status="NOT RUN" start="2026-04-08T00:51:55.907643" elapsed="0.000235"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:55.908015" elapsed="0.000020"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:55.908194" elapsed="0.000021"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:55.908360" elapsed="0.000020"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-08T00:51:55.907612" elapsed="0.000801"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-08T00:51:55.907512" elapsed="0.000927"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:55.908581" elapsed="0.000020"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-08T00:51:55.908656" elapsed="0.000015"/>
</return>
<msg time="2026-04-08T00:51:55.908770" level="INFO">${uri} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-08T00:51:55.849389" elapsed="0.059407"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:51:55.910065" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:51:55.909823" elapsed="0.000309">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-08T00:51:55.910243" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:51:55.909475" elapsed="0.000794"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:55.910582" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:55.910340" elapsed="0.000298"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:55.911123" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:55.910836" elapsed="0.000313"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:55.910661" elapsed="0.000540"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:55.910322" elapsed="0.000901"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:51:55.913413" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:51:55.911372" elapsed="0.002068"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-08T00:51:55.913490" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:51:55.913641" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:51:55.909109" elapsed="0.004557"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:51:55.914863" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:51:55.914630" elapsed="0.000296">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-08T00:51:55.915052" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:51:55.914298" elapsed="0.000780"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-08T00:51:55.915300" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-08T00:51:55.915149" elapsed="0.000210"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:55.915130" elapsed="0.000252"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:55.915525" elapsed="0.000021"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:55.915693" elapsed="0.000020"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-08T00:51:55.915762" elapsed="0.000014"/>
</return>
<msg time="2026-04-08T00:51:55.919075" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:51:55.913960" elapsed="0.005143"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:55.920496" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:55.920245" elapsed="0.000297"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:55.921041" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:55.920692" elapsed="0.000394"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:51:55.938510" level="INFO">GET Request : url=http://10.30.171.110:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 path_url=/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0u16rl3earouwvehy59feej101.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:51:55.939092" level="INFO">GET Response : url=http://10.30.171.110:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Transfer-Encoding': 'chunked'} 
 body={"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","hidden-symmetric-keys","encrypted-private-keys","asymmetrically-encrypted-value-format","cms-encrypted-data-format","cleartext-private-keys","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["ssh-client-keepalives","client-ident-hostbased","client-ident-publickey","client-ident-password"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-ex... (set the log level to DEBUG or TRACE to see the full content) 
 </msg>
<msg time="2026-04-08T00:51:55.939411" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:51:55.923112" elapsed="0.016337"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:55.921167" elapsed="0.018342"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:55.939761" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:55.939547" elapsed="0.000303"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:55.921135" elapsed="0.018744"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:55.946903" level="INFO">{"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","hidden-symmetric-keys","encrypted-private-keys","asymmetrically-encrypted-value-format","cms-encrypted-data-format","cleartext-private-keys","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["ssh-client-keepalives","client-ident-hostbased","client-ident-publickey","client-ident-password"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-experimenter-types?revision=2015-10-20","namespace":"urn:opendaylight:openflowplugin:experimenter:types","conformance-type":"import"},{"name":"ietf-ip_2018-02-22","revision":"2018-02-22","schema":"/rests/modules/ietf-ip?revision=2018-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-ip","conformance-type":"import","feature":["ipv6-privacy-autoconf","ipv4-non-contiguous-netmasks"]},{"name":"ietf-tcp-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-client","conformance-type":"import","feature":["local-binding-supported","tcp-client-keepalives"]},{"name":"node-config_2014-10-15","revision":"2014-10-15","schema":"/rests/modules/node-config?revision=2014-10-15","namespace":"urn:opendaylight:module:config","conformance-type":"import"},{"name":"ietf-restconf_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf","conformance-type":"import"},{"name":"ietf-datastores_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-datastores?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-datastores","conformance-type":"import"},{"name":"ietf-yang-patch_2017-02-22","revision":"2017-02-22","schema":"/rests/modules/ietf-yang-patch?revision=2017-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-patch","conformance-type":"import"},{"name":"sal-group_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-group?revision=2013-09-18","namespace":"urn:opendaylight:group:service","conformance-type":"import"},{"name":"odl-codegen-extensions_2024-06-27","revision":"2024-06-27","schema":"/rests/modules/odl-codegen-extensions?revision=2024-06-27","namespace":"urn:opendaylight:yang:extension:codegen","conformance-type":"import"},{"name":"sal-meter_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-meter?revision=2013-09-18","namespace":"urn:opendaylight:meter:service","conformance-type":"import"},{"name":"ietf-interfaces_2018-02-20","revision":"2018-02-20","schema":"/rests/modules/ietf-interfaces?revision=2018-02-20","namespace":"urn:ietf:params:xml:ns:yang:ietf-interfaces","conformance-type":"import","feature":["pre-provisioning","if-mib","arbitrary-names"]},{"name":"opendaylight-l2-types_2013-08-27","revision":"2013-08-27","schema":"/rests/modules/opendaylight-l2-types?revision=2013-08-27","namespace":"urn:opendaylight:l2:types","conformance-type":"import"},{"name":"opendaylight-flow-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-flow-types?revision=2013-10-26","namespace":"urn:opendaylight:flow:types","conformance-type":"import"},{"name":"lldp-speaker-config_2016-05-12","revision":"2016-05-12","schema":"/rests/modules/lldp-speaker-config?revision=2016-05-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker:config","conformance-type":"import"},{"name":"aaa-cert_2015-11-26","revision":"2015-11-26","schema":"/rests/modules/aaa-cert?revision=2015-11-26","namespace":"urn:opendaylight:yang:aaa:cert","conformance-type":"import"},{"name":"openflow-action_2015-02-03","revision":"2015-02-03","schema":"/rests/modules/openflow-action?revision=2015-02-03","namespace":"urn:opendaylight:openflow:common:action","conformance-type":"import"},{"name":"openflow-approved-extensions_2016-08-02","revision":"2016-08-02","schema":"/rests/modules/openflow-approved-extensions?revision=2016-08-02","namespace":"urn:opendaylight:openflow:approved:extensions","conformance-type":"import"},{"name":"nc-notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/nc-notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netmod:notification","conformance-type":"import"},{"name":"ietf-netconf-nmda_2019-01-07","revision":"2019-01-07","schema":"/rests/modules/ietf-netconf-nmda?revision=2019-01-07","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-nmda","conformance-type":"import","feature":["with-defaults","origin"]},{"name":"ietf-tcp-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-common","conformance-type":"import","feature":["keepalives-supported"]},{"name":"network-topology_2013-10-21","revision":"2013-10-21","schema":"/rests/modules/network-topology?revision=2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:network-topology","conformance-type":"import"},{"name":"aaa-encrypt-service-config_2024-02-02","revision":"2024-02-02","schema":"/rests/modules/aaa-encrypt-service-config?revision=2024-02-02","namespace":"config:aaa:authn:encrypt:service:config","conformance-type":"import"},{"name":"openflow-instruction_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-instruction?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:instruction","conformance-type":"import"},{"name":"ietf-tls-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-client","conformance-type":"import","feature":["client-ident-x509-cert","server-auth-x509-cert"]},{"name":"opendaylight-group-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-group-statistics?revision=2013-11-11","namespace":"urn:opendaylight:group:statistics","conformance-type":"import"},{"name":"cluster-admin_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/cluster-admin?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:cluster:admin","conformance-type":"import"},{"name":"opendaylight-flow-statistics_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-flow-statistics?revision=2013-08-19","namespace":"urn:opendaylight:flow:statistics","conformance-type":"import"},{"name":"opendaylight-table-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-table-types?revision=2013-10-26","namespace":"urn:opendaylight:table:types","conformance-type":"import"},{"name":"forwarding-rules-manager-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/forwarding-rules-manager-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:forwardingrules-manager:config","conformance-type":"import"},{"name":"odl-srm-types_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-types?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:types","conformance-type":"import"},{"name":"ietf-x509-cert-to-name_2014-12-10","revision":"2014-12-10","schema":"/rests/modules/ietf-x509-cert-to-name?revision=2014-12-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-x509-cert-to-name","conformance-type":"import"},{"name":"flow-node-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-node-inventory?revision=2013-08-19","namespace":"urn:opendaylight:flow:inventory","conformance-type":"import"},{"name":"flow-errors_2013-11-16","revision":"2013-11-16","schema":"/rests/modules/flow-errors?revision=2013-11-16","namespace":"urn:opendaylight:flow:errors","conformance-type":"import"},{"name":"ietf-netconf_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:netconf:base:1.0","conformance-type":"import","feature":["xpath","url","rollback-on-error","validate","startup","candidate","confirmed-commit","writable-running"]},{"name":"iana-ssh-public-key-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-public-key-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-public-key-algs","conformance-type":"import"},{"name":"aaa-cert-mdsal_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/aaa-cert-mdsal?revision=2016-03-21","namespace":"urn:opendaylight:yang:aaa:cert:mdsal","conformance-type":"import"},{"name":"odl-device-notification_2024-02-18","revision":"2024-02-18","schema":"/rests/modules/odl-device-notification?revision=2024-02-18","namespace":"urn:opendaylight:device:notification","conformance-type":"import"},{"name":"ietf-origin_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-origin?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-origin","conformance-type":"import"},{"name":"openflow-augments_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-augments?revision=2015-02-25","namespace":"urn:opendaylight:openflow:augments","conformance-type":"import"},{"name":"iana-ssh-encryption-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-encryption-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-encryption-algs","conformance-type":"import"},{"name":"ietf-truststore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-truststore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-truststore","conformance-type":"import","feature":["inline-definitions-supported"]},{"name":"distributed-datastore-provider_2025-01-30","revision":"2025-01-30","schema":"/rests/modules/distributed-datastore-provider?revision=2025-01-30","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:distributed-datastore-provider","conformance-type":"import"},{"name":"opendaylight-group-types_2013-10-18","revision":"2013-10-18","schema":"/rests/modules/opendaylight-group-types?revision=2013-10-18","namespace":"urn:opendaylight:group:types","conformance-type":"import"},{"name":"sal-remote-augment_2023-11-03","revision":"2023-11-03","schema":"/rests/modules/sal-remote-augment?revision=2023-11-03","namespace":"urn:sal:restconf:event:subscription","conformance-type":"import"},{"name":"opendaylight-ipv6-arbitrary-bitmask-fields_2016-02-24","revision":"2016-02-24","schema":"/rests/modules/opendaylight-ipv6-arbitrary-bitmask-fields?revision=2016-02-24","namespace":"urn:opendaylight:opendaylight-ipv6-arbitrary-bitmask-fields","conformance-type":"import"},{"name":"sal-flows-batch_2016-03-14","revision":"2016-03-14","schema":"/rests/modules/sal-flows-batch?revision=2016-03-14","namespace":"urn:opendaylight:flows:service","conformance-type":"import"},{"name":"ietf-tls-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-common","conformance-type":"import","feature":["tls12","hello-params","tls13"]},{"name":"openflow-types_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-types?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:types","conformance-type":"import"},{"name":"ietf-netconf-with-defaults_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf-with-defaults?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults","conformance-type":"import"},{"name":"odl-srm-ops_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-ops?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:ops","conformance-type":"import"},{"name":"odl-general-entity_2015-09-30","revision":"2015-09-30","schema":"/rests/modules/odl-general-entity?revision=2015-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:mdsal:core:general-entity","conformance-type":"import"},{"name":"iana-ssh-key-exchange-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-key-exchange-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-key-exchange-algs","conformance-type":"import"},{"name":"node-ssl-connection-error_2019-07-23","revision":"2019-07-23","schema":"/rests/modules/node-ssl-connection-error?revision=2019-07-23","namespace":"urn:opendaylight:node-ssl-connection-error:service","conformance-type":"import"},{"name":"openflow-protocol_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-protocol?revision=2013-07-31","namespace":"urn:opendaylight:openflow:protocol","conformance-type":"import"},{"name":"ietf-udp-server_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-server?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-server","conformance-type":"import"},{"name":"ietf-keystore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-keystore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-keystore","conformance-type":"import","feature":["asymmetric-keys","inline-definitions-supported"]},{"name":"aaa_2016-12-14","revision":"2016-12-14","schema":"/rests/modules/aaa?revision=2016-12-14","namespace":"urn:opendaylight:params:xml:ns:yang:aaa","conformance-type":"import"},{"name":"aaa-cert-rpc_2015-12-15","revision":"2015-12-15","schema":"/rests/modules/aaa-cert-rpc?revision=2015-12-15","namespace":"urn:opendaylight:yang:aaa:cert:rpc","conformance-type":"import"},{"name":"system-notifications_2013-09-27","revision":"2013-09-27","schema":"/rests/modules/system-notifications?revision=2013-09-27","namespace":"urn:opendaylight:openflow:system","conformance-type":"import"},{"name":"sal-flat-batch_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/sal-flat-batch?revision=2016-03-21","namespace":"urn:opendaylight:flat-batch:service","conformance-type":"import"},{"name":"notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netconf:notification:1.0","conformance-type":"import"},{"name":"sal-remote_2014-01-14","revision":"2014-01-14","schema":"/rests/modules/sal-remote?revision=2014-01-14","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:remote","conformance-type":"import"},{"name":"yang-ext_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/yang-ext?revision=2013-07-09","namespace":"urn:opendaylight:yang:extension:yang-ext","conformance-type":"import"},{"name":"opendaylight-multipart-types_2017-01-12","revision":"2017-01-12","schema":"/rests/modules/opendaylight-multipart-types?revision=2017-01-12","namespace":"urn:opendaylight:multipart:types","conformance-type":"import"},{"name":"opendaylight-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-inventory?revision=2013-08-19","namespace":"urn:opendaylight:inventory","conformance-type":"import"},{"name":"sal-queue_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-queue?revision=2015-03-05","namespace":"urn:opendaylight:queue:service","conformance-type":"import"},{"name":"sal-groups-batch_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/sal-groups-batch?revision=2016-03-15","namespace":"urn:opendaylight:groups:service","conformance-type":"import"},{"name":"arbitrator-reconcile_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/arbitrator-reconcile?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:arbitrator-reconcile:service","conformance-type":"import"},{"name":"ietf-yang-metadata_2016-08-05","revision":"2016-08-05","schema":"/rests/modules/ietf-yang-metadata?revision=2016-08-05","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-metadata","conformance-type":"import"},{"name":"opendaylight-arbitrary-bitmask-fields_2016-01-30","revision":"2016-01-30","schema":"/rests/modules/opendaylight-arbitrary-bitmask-fields?revision=2016-01-30","namespace":"urn:opendaylight:arbitrary:bitmask:fields","conformance-type":"import"},{"name":"ietf-udp-client_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-client?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-client","conformance-type":"import","feature":["local-binding"]},{"name":"opendaylight-meter-types_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/opendaylight-meter-types?revision=2013-09-18","namespace":"urn:opendaylight:meter:types","conformance-type":"import"},{"name":"opendaylight-action-types_2013-11-12","revision":"2013-11-12","schema":"/rests/modules/opendaylight-action-types?revision=2013-11-12","namespace":"urn:opendaylight:action:types","conformance-type":"import"},{"name":"sal-role_2015-07-27","revision":"2015-07-27","schema":"/rests/modules/sal-role?revision=2015-07-27","namespace":"urn:opendaylight:role:service","conformance-type":"import"},{"name":"openflow-provider-config_2016-05-10","revision":"2016-05-10","schema":"/rests/modules/openflow-provider-config?revision=2016-05-10","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:provider:config","conformance-type":"import"},{"name":"odl-serviceutils-upgrade_2018-07-02","revision":"2018-07-02","schema":"/rests/modules/odl-serviceutils-upgrade?revision=2018-07-02","namespace":"urn:opendaylight:serviceutils:upgrade","conformance-type":"import"},{"name":"opendaylight-match-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-match-types?revision=2013-10-26","namespace":"urn:opendaylight:model:match:types","conformance-type":"import"},{"name":"ietf-restconf-server_2024-08-14","revision":"2024-08-14","schema":"/rests/modules/ietf-restconf-server?revision=2024-08-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-server","conformance-type":"import","feature":["http-listen","https-listen"]},{"name":"reconciliation-result-state_2017-07-13","revision":"2017-07-13","schema":"/rests/modules/reconciliation-result-state?revision=2017-07-13","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:rf:state","conformance-type":"import"},{"name":"onf-extensions_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/onf-extensions?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf","conformance-type":"import"},{"name":"sal-table_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/sal-table?revision=2013-10-26","namespace":"urn:opendaylight:table:service","conformance-type":"import"},{"name":"iana-http-versions_2026-02-04","revision":"2026-02-04","schema":"/rests/modules/iana-http-versions?revision=2026-02-04","namespace":"urn:ietf:params:xml:ns:yang:iana-http-versions","conformance-type":"import"},{"name":"opendaylight-direct-statistics_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/opendaylight-direct-statistics?revision=2016-05-11","namespace":"urn:opendaylight:direct:statistics","conformance-type":"import"},{"name":"opendaylight-port-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-port-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:port","conformance-type":"import"},{"name":"sal-async-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/sal-async-config?revision=2017-06-19","namespace":"urn:opendaylight:async-config:service","conformance-type":"import"},{"name":"aaa-password-service-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-password-service-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:password:service:config","conformance-type":"import"},{"name":"ietf-yang-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-yang-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-types","conformance-type":"import"},{"name":"opendaylight-queue-statistics_2013-12-16","revision":"2013-12-16","schema":"/rests/modules/opendaylight-queue-statistics?revision=2013-12-16","namespace":"urn:opendaylight:queue:statistics","conformance-type":"import"},{"name":"sal-bundle_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/sal-bundle?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf:bundle:service","conformance-type":"import"},{"name":"ietf-restconf-subscribed-notifications_2019-11-17","revision":"2019-11-17","schema":"/rests/modules/ietf-restconf-subscribed-notifications?revision=2019-11-17","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-subscribed-notifications","conformance-type":"import"},{"name":"sal-meters-batch_2016-03-16","revision":"2016-03-16","schema":"/rests/modules/sal-meters-batch?revision=2016-03-16","namespace":"urn:opendaylight:meters:service","conformance-type":"import"},{"name":"odl-entity-owners","revision":"","schema":"/rests/modules/odl-entity-owners","namespace":"urn:opendaylight:params:xml:ns:yang:controller:entity-owners","conformance-type":"import"},{"name":"sal-experimenter-mp-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-mp-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-mp-message:service","conformance-type":"import"},{"name":"packet-processing_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/packet-processing?revision=2013-07-09","namespace":"urn:opendaylight:packet:service","conformance-type":"import"},{"name":"openflow-configuration_2014-06-30","revision":"2014-06-30","schema":"/rests/modules/openflow-configuration?revision=2014-06-30","namespace":"urn:opendaylight:openflow:config","conformance-type":"import"},{"name":"odl-srm-rpcs_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-rpcs?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:rpc","conformance-type":"import"},{"name":"ietf-netconf-acm_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-netconf-acm?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-acm","conformance-type":"import"},{"name":"iana-crypt-hash_2014-08-06","revision":"2014-08-06","schema":"/rests/modules/iana-crypt-hash?revision=2014-08-06","namespace":"urn:ietf:params:xml:ns:yang:iana-crypt-hash","conformance-type":"import","feature":["crypt-hash-sha-512","crypt-hash-sha-256","crypt-hash-md5"]},{"name":"openflow-extensible-match_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-extensible-match?revision=2015-02-25","namespace":"urn:opendaylight:openflow:oxm","conformance-type":"import"}],"module-set-id":"2"}}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:55.941361" elapsed="0.006287"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:55.940974" elapsed="0.006754"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:55.940946" elapsed="0.006838"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:55.953407" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:55.948437" elapsed="0.005073"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:55.947911" elapsed="0.005676"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:55.947872" elapsed="0.005769"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:55.954278" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:55.953864" elapsed="0.000442"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:55.954613" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:55.954376" elapsed="0.000294"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:55.955151" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:55.954854" elapsed="0.000339"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:55.954693" elapsed="0.000537"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:55.954358" elapsed="0.000893"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:55.955770" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:55.955411" elapsed="0.000386"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:55.956099" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:55.955867" elapsed="0.000302"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:55.956646" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:55.956356" elapsed="0.000316"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:55.956195" elapsed="0.000512"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:55.955849" elapsed="0.000882"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:51:55.956881" elapsed="0.000370"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:51:55.957702" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:55.957415" elapsed="0.000312"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:51:55.957878" elapsed="0.002156"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:51:55.940381" elapsed="0.019715"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:51:55.960288" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:51:55.960180" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:55.960147" elapsed="0.000207"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:51:56.009270" level="INFO">${text_normalized} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:51:55.960497" elapsed="0.048826"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:51:56.009403" elapsed="0.000062"/>
</return>
<msg time="2026-04-08T00:51:56.009625" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:51:55.919420" elapsed="0.090234"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:51:56.009719" elapsed="0.000027"/>
</return>
<msg time="2026-04-08T00:51:56.010068" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="PASS" start="2026-04-08T00:51:55.828270" elapsed="0.181836"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Json_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:56.010701" elapsed="0.000032"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:56.010278" elapsed="0.000582"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:56.010242" elapsed="0.000661"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:51:56.011049" elapsed="0.000076"/>
</return>
<arg>session=${session}</arg>
<arg>folder=${RESTCONF_MODULES_DIR}</arg>
<arg>verify=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Add arguments sensible for JSON data, return Get_Templated response text.
Optionally, verification against JSON data (may be iterated) is called.
Only subset of JSON data is verified and returned if JMES path is specified in
file ${folder}/jmespath.expr.</doc>
<status status="PASS" start="2026-04-08T00:51:55.822670" elapsed="0.188671"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:55.818353" elapsed="0.193097"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:55.818335" elapsed="0.193142"/>
</if>
<kw name="Resolve_Shard_Type_Class" owner="ClusterManagement">
<if>
<branch type="IF" condition="'${shard_type}' == 'config'">
<return>
<value>DistributedConfigDatastore</value>
<status status="NOT RUN" start="2026-04-08T00:51:56.012430" elapsed="0.000048"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:51:56.012198" elapsed="0.000325"/>
</branch>
<branch type="ELSE IF" condition="'${shard_type}' == 'operational'">
<return>
<value>DistributedOperationalDatastore</value>
<status status="PASS" start="2026-04-08T00:51:56.012802" elapsed="0.000070"/>
</return>
<status status="PASS" start="2026-04-08T00:51:56.012582" elapsed="0.000337"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:56.012148" elapsed="0.000830"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized shard type: ${shard_type}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:56.013255" elapsed="0.000068"/>
</kw>
<msg time="2026-04-08T00:51:56.013462" level="INFO">${type_class} = DistributedOperationalDatastore</msg>
<var>${type_class}</var>
<arg>shard_type=${shard_type}</arg>
<doc>Simple lookup for class name corresponding to desired type.</doc>
<status status="PASS" start="2026-04-08T00:51:56.011749" elapsed="0.001740"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:56.014378" level="INFO">${cluster_index} = 3</msg>
<var>${cluster_index}</var>
<arg>${member_index}+${NODE_ROLE_INDEX_START}-1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:56.013670" elapsed="0.000736"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:56.015533" level="INFO">${uri} = jolokia/read/org.opendaylight.controller:Category=Shards,name=member-3-shard-inventory-operational,type=DistributedOperationalDatastore</msg>
<var>${uri}</var>
<arg>${JOLOKIA_READ_URI}:Category=Shards,name=member-${cluster_index}-shard-${shard_name}-${shard_type},type=${type_class}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:56.014563" elapsed="0.000999"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:56.022558" level="INFO">jolokia/read/org.opendaylight.controller:Category=Shards,name=member-3-shard-inventory-operational,type=DistributedOperationalDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:56.022262" elapsed="0.000381"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:56.023284" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:56.022889" elapsed="0.000480"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:51:56.031372" level="INFO">GET Request : url=http://10.30.171.110:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-3-shard-inventory-operational,type=DistributedOperationalDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-3-shard-inventory-operational,type=DistributedOperationalDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:51:56.031458" level="INFO">GET Response : url=http://10.30.171.110:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-3-shard-inventory-operational,type=DistributedOperationalDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Wed, 08 Apr 2026 00:51:56 GMT', 'Expires': 'Tue, 07 Apr 2026 23:51:56 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-3-shard-inventory-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"ReadWriteTransactionCount":0,"SnapshotIndex":1264,"InMemoryJournalLogSize":5,"ReplicatedToAllIndex":1264,"Leader":"member-1-shard-inventory-operational","LastIndex":1269,"RaftState":"Follower","LastApplied":1269,"LastCommittedTransactionTime":"1970-01-01 00:00:00.000","PeerAddresses":"member-1-shard-inventory-operational: pekko:\/\/opendaylight-cluster-data@10.30.170.48:2550\/user\/shardmanager-operational\/member-1-shard-inventory-operational, member-2-shard-inventory-operational: pekko:\/\/opendaylight-cluster-data@10.30.170.131:2550\/user\/shardmanager-operational\/member-2-shard-inventory-operational","LastLogIndex":1269,"LastLeadershipChangeTime":"2026-04-08 00:46:45.934","FollowerInitialSyncStatus":true,"FollowerInfo":[],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"284.7 μs","CurrentTerm":2,"LastTerm":2,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-inventory-operational","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":0,"TxCohortCacheSize":0,"PeerVotingStates":"member-1-shard-inventory-operational: true, member-2-shard-inventory-operational: true","LastLogTerm":2,"StatRetrievalError":null,"CommitIndex":1269,"SnapshotTerm":2,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-3-shard-inventory-operational","LeadershipChangeCount":1,"InMemoryJournalDataSize":1662090},"timestamp":1775609516,"status":200} 
 </msg>
<msg time="2026-04-08T00:51:56.031605" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:51:56.025471" elapsed="0.006170"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:56.023513" elapsed="0.008189"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:56.031992" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:56.031770" elapsed="0.000312"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:56.023468" elapsed="0.008668"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:56.037460" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-3-shard-inventory-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"ReadWriteTransactionCount":0,"SnapshotIndex":1264,"InMemoryJournalLogSize":5,"ReplicatedToAllIndex":1264,"Leader":"member-1-shard-inventory-operational","LastIndex":1269,"RaftState":"Follower","LastApplied":1269,"LastCommittedTransactionTime":"1970-01-01 00:00:00.000","PeerAddresses":"member-1-shard-inventory-operational: pekko:\/\/opendaylight-cluster-data@10.30.170.48:2550\/user\/shardmanager-operational\/member-1-shard-inventory-operational, member-2-shard-inventory-operational: pekko:\/\/opendaylight-cluster-data@10.30.170.131:2550\/user\/shardmanager-operational\/member-2-shard-inventory-operational","LastLogIndex":1269,"LastLeadershipChangeTime":"2026-04-08 00:46:45.934","FollowerInitialSyncStatus":true,"FollowerInfo":[],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"284.7 μs","CurrentTerm":2,"LastTerm":2,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-inventory-operational","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":0,"TxCohortCacheSize":0,"PeerVotingStates":"member-1-shard-inventory-operational: true, member-2-shard-inventory-operational: true","LastLogTerm":2,"StatRetrievalError":null,"CommitIndex":1269,"SnapshotTerm":2,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-3-shard-inventory-operational","LeadershipChangeCount":1,"InMemoryJournalDataSize":1662090},"timestamp":1775609516,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:56.034048" elapsed="0.003496"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:56.033537" elapsed="0.004056"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:56.033510" elapsed="0.004118"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:56.041052" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:56.038016" elapsed="0.003100"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:56.037708" elapsed="0.003506"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:56.037684" elapsed="0.003569"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:56.041954" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:56.041491" elapsed="0.000490"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:56.042306" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:56.042053" elapsed="0.000312"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:56.042847" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:56.042550" elapsed="0.000323"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:56.042388" elapsed="0.000521"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:56.042034" elapsed="0.000896"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:56.043463" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:56.043087" elapsed="0.000403"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:56.043790" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:56.043559" elapsed="0.000288"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:56.044335" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:56.044028" elapsed="0.000332"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:56.043870" elapsed="0.000526"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:56.043541" elapsed="0.000876"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:51:56.044567" elapsed="0.000349"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:51:56.045395" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:56.045078" elapsed="0.000344"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:51:56.045574" elapsed="0.002166"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:51:56.032727" elapsed="0.015076"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:51:56.048074" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:51:56.047960" elapsed="0.000161"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:56.047914" elapsed="0.000265"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:51:56.051201" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-3-shard-inventory-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestam...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:51:56.048420" elapsed="0.002835"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:51:56.051337" elapsed="0.000066"/>
</return>
<msg time="2026-04-08T00:51:56.051697" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-3-shard-inventory-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestam...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:51:56.017136" elapsed="0.034690"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:51:56.051931" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:51:56.052215" level="INFO">${data_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-3-shard-inventory-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestam...</msg>
<var>${data_text}</var>
<arg>uri=${uri}</arg>
<arg>session=${session}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-08T00:51:56.015777" elapsed="0.036466"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:56.054362" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-3-shard-inventory-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1775609...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:56.053323" elapsed="0.001133"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-08T00:51:56.054540" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:51:56.054836" level="INFO">${data_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-3-shard-inventory-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1775609...</msg>
<var>${data_object}</var>
<arg>${data_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-08T00:51:56.052468" elapsed="0.002396"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:51:56.055350" level="INFO">${value} = {'AbortTransactionsCount': 0, 'CommitIndex': 1269, 'CommittedTransactionsCount': 0, 'CurrentTerm': 2, 'FailedReadTransactionsCount': 0, 'FailedTransactionsCount': 0, 'FollowerInfo': [], 'FollowerIniti...</msg>
<var>${value}</var>
<arg>${data_object}</arg>
<arg>value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:51:56.055022" elapsed="0.000357"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:51:56.055913" level="INFO">${raft_property} = Follower</msg>
<var>${raft_property}</var>
<arg>${value}</arg>
<arg>${property}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:51:56.055536" elapsed="0.000403"/>
</kw>
<return>
<value>${raft_property}</value>
<status status="PASS" start="2026-04-08T00:51:56.055987" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:51:56.056141" level="INFO">${raft_state} = Follower</msg>
<var>${raft_state}</var>
<arg>RaftState</arg>
<arg>${shard_name}</arg>
<arg>${shard_type}</arg>
<arg>${member_index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft property.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T00:51:55.815606" elapsed="0.240576"/>
</kw>
<return>
<value>${raft_state}</value>
<status status="PASS" start="2026-04-08T00:51:56.056243" elapsed="0.000026"/>
</return>
<msg time="2026-04-08T00:51:56.056392" level="INFO">${raft_state} = Follower</msg>
<var>${raft_state}</var>
<arg>shard_name=${shard_name}</arg>
<arg>shard_type=${ds_type}</arg>
<arg>member_index=${index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft status.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T00:51:55.814761" elapsed="0.241656"/>
</kw>
<if>
<branch type="IF" condition="'Follower' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${follower_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-08T00:51:56.056711" elapsed="0.000195"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:56.056497" elapsed="0.000448"/>
</branch>
<branch type="ELSE IF" condition="'Leader' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${leader_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:56.057112" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:56.056969" elapsed="0.000237"/>
</branch>
<branch type="ELSE IF" condition="${validate}">
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized Raft state: ${raft_state}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:56.057371" elapsed="0.000019"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:56.057230" elapsed="0.000192"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:56.056480" elapsed="0.000964"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T00:51:55.814590" elapsed="0.242879"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-08T00:51:55.414523" elapsed="0.642981"/>
</for>
<return>
<value>${leader_list}</value>
<value>${follower_list}</value>
<status status="PASS" start="2026-04-08T00:51:56.057545" elapsed="0.000025"/>
</return>
<msg time="2026-04-08T00:51:56.057749" level="INFO">${leader_list} = [1]</msg>
<msg time="2026-04-08T00:51:56.057795" level="INFO">${follower_list} = [2, 3]</msg>
<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="PASS" start="2026-04-08T00:51:55.410435" elapsed="0.647384"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T00:51:56.058274" level="INFO">Length is 1.</msg>
<msg time="2026-04-08T00:51:56.058349" level="INFO">${leader_count} = 1</msg>
<var>${leader_count}</var>
<arg>${leader_list}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T00:51:56.057990" elapsed="0.000382"/>
</kw>
<if>
<branch type="IF" condition="${leader_count} &lt; 1">
<kw name="Fail" owner="BuiltIn">
<arg>No leader found.</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:56.058650" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:56.058441" elapsed="0.000262"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:56.058423" elapsed="0.000302"/>
</if>
<kw name="Length Should Be" owner="BuiltIn">
<msg time="2026-04-08T00:51:56.060810" level="INFO">Length is 1.</msg>
<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="PASS" start="2026-04-08T00:51:56.058857" elapsed="0.001999"/>
</kw>
<kw name="Get From List" owner="Collections">
<msg time="2026-04-08T00:51:56.061403" level="INFO">${leader} = 1</msg>
<var>${leader}</var>
<arg>${leader_list}</arg>
<arg>0</arg>
<doc>Returns the value specified with an ``index`` from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:51:56.061055" elapsed="0.000375"/>
</kw>
<return>
<value>${leader}</value>
<value>${follower_list}</value>
<status status="PASS" start="2026-04-08T00:51:56.061479" elapsed="0.000028"/>
</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="PASS" start="2026-04-08T00:51:55.407688" elapsed="0.653946"/>
</kw>
<var name="${shard_name}">inventory</var>
<status status="PASS" start="2026-04-08T00:51:55.407456" elapsed="0.654225"/>
</iter>
<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-04-08T00:51:56.066064" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:51:56.065681" elapsed="0.000409"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:51:56.066569" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:51:56.066265" elapsed="0.000330"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:51:56.066639" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:51:56.066797" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:51:56.065306" elapsed="0.001515"/>
</kw>
<kw name="Sort List" owner="Collections">
<arg>${index_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="PASS" start="2026-04-08T00:51:56.066972" elapsed="0.000152"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:51:56.067628" level="INFO">${ds_type} = operational</msg>
<var>${ds_type}</var>
<arg>'${shard_type}' != 'config'</arg>
<arg>operational</arg>
<arg>config</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:51:56.067297" elapsed="0.000358"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:51:56.068045" level="INFO">${leader_list} = []</msg>
<var>${leader_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:51:56.067811" elapsed="0.000260"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:51:56.068465" level="INFO">${follower_list} = []</msg>
<var>${follower_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:51:56.068231" elapsed="0.000260"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_Raft_State_Of_Shard_At_Member" owner="ClusterManagement">
<kw name="Get_Raft_Property_From_Shard_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:56.071753" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:56.070909" elapsed="0.000933"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:51:56.071921" elapsed="0.000031"/>
</return>
<msg time="2026-04-08T00:51:56.072200" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:51:56.070388" elapsed="0.001840"/>
</kw>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Get_As_Json_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:56.120552" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:56.120174" elapsed="0.000407"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:51:56.121394" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:51:56.121081" elapsed="0.000389">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-08T00:51:56.121562" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:51:56.120751" elapsed="0.000836"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:51:56.122132" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:51:56.121751" elapsed="0.000423"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T00:51:56.122472" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-08T00:51:56.122630" level="INFO">${template} = /rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T00:51:56.122336" elapsed="0.000320"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:56.123103" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:56.122855" elapsed="0.000293"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:56.124099" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:56.123846" elapsed="0.000297"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-08T00:51:56.124586" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-08T00:51:56.124318" elapsed="0.000295"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:56.124928" elapsed="0.000022"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:56.125174" elapsed="0.000026"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:56.125351" elapsed="0.000021"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-08T00:51:56.124797" elapsed="0.000612"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-08T00:51:56.124661" elapsed="0.000778"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-08T00:51:56.125483" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:51:56.125642" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-08T00:51:56.123527" elapsed="0.002140"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:56.123237" elapsed="0.002463"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:56.125871" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:56.125724" elapsed="0.000203"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:56.123217" elapsed="0.002731"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:56.126603" level="INFO">${final_text} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:56.126089" elapsed="0.000542"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T00:51:56.126681" 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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="PASS" start="2026-04-08T00:51:56.119551" elapsed="0.007259"/>
</kw>
<msg time="2026-04-08T00:51:56.126864" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:51:56.107745" elapsed="0.019173"/>
</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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:56.138851" elapsed="0.000030"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:56.150443" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:56.162010" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:56.162220" elapsed="0.000023"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:56.162399" elapsed="0.000021"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:56.162809" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:56.162623" elapsed="0.000243"/>
</branch>
<status status="NOT RUN" start="2026-04-08T00:51:56.162608" elapsed="0.000282"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:56.163031" elapsed="0.000021"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:56.163215" elapsed="0.000022"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:56.163384" elapsed="0.000020"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-08T00:51:56.162578" elapsed="0.000859"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-08T00:51:56.162475" elapsed="0.000988"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:56.163614" elapsed="0.000021"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-08T00:51:56.163689" elapsed="0.000016"/>
</return>
<msg time="2026-04-08T00:51:56.163807" level="INFO">${uri} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-08T00:51:56.103566" elapsed="0.060267"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:51:56.165115" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:51:56.164848" elapsed="0.000353">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-08T00:51:56.165293" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:51:56.164497" elapsed="0.000821"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:56.165639" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:56.165390" elapsed="0.000305"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:56.166201" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:56.165892" elapsed="0.000336"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:56.165718" elapsed="0.000545"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:56.165371" elapsed="0.000913"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:51:56.168478" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:51:56.166433" elapsed="0.002072"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-08T00:51:56.168556" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:51:56.168709" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:51:56.164154" elapsed="0.004580"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:51:56.169969" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:51:56.169735" elapsed="0.000297">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-08T00:51:56.170122" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:51:56.169401" elapsed="0.000746"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-08T00:51:56.170371" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-08T00:51:56.170235" elapsed="0.000194"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:56.170215" elapsed="0.000237"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:56.170597" elapsed="0.000021"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:56.170766" elapsed="0.000020"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-08T00:51:56.170830" elapsed="0.000014"/>
</return>
<msg time="2026-04-08T00:51:56.172749" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:51:56.169033" elapsed="0.003777"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:56.174227" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:56.173961" elapsed="0.000313"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:56.174663" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:56.174423" elapsed="0.000283"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:51:56.185993" level="INFO">GET Request : url=http://10.30.170.48:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 path_url=/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01ju7g9ih47awu1dako8be5k84o113.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:51:56.186445" level="INFO">GET Response : url=http://10.30.170.48:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Transfer-Encoding': 'chunked'} 
 body={"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","hidden-symmetric-keys","encrypted-private-keys","asymmetrically-encrypted-value-format","cms-encrypted-data-format","cleartext-private-keys","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["ssh-client-keepalives","client-ident-hostbased","client-ident-publickey","client-ident-password"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-ex... (set the log level to DEBUG or TRACE to see the full content) 
 </msg>
<msg time="2026-04-08T00:51:56.186649" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:51:56.176687" elapsed="0.009990"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:56.174772" elapsed="0.011949"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:56.186900" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:56.186748" elapsed="0.000216"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:56.174753" elapsed="0.012233"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:56.190992" level="INFO">{"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","hidden-symmetric-keys","encrypted-private-keys","asymmetrically-encrypted-value-format","cms-encrypted-data-format","cleartext-private-keys","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["ssh-client-keepalives","client-ident-hostbased","client-ident-publickey","client-ident-password"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-experimenter-types?revision=2015-10-20","namespace":"urn:opendaylight:openflowplugin:experimenter:types","conformance-type":"import"},{"name":"ietf-ip_2018-02-22","revision":"2018-02-22","schema":"/rests/modules/ietf-ip?revision=2018-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-ip","conformance-type":"import","feature":["ipv6-privacy-autoconf","ipv4-non-contiguous-netmasks"]},{"name":"ietf-tcp-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-client","conformance-type":"import","feature":["local-binding-supported","tcp-client-keepalives"]},{"name":"node-config_2014-10-15","revision":"2014-10-15","schema":"/rests/modules/node-config?revision=2014-10-15","namespace":"urn:opendaylight:module:config","conformance-type":"import"},{"name":"ietf-restconf_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf","conformance-type":"import"},{"name":"ietf-datastores_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-datastores?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-datastores","conformance-type":"import"},{"name":"ietf-yang-patch_2017-02-22","revision":"2017-02-22","schema":"/rests/modules/ietf-yang-patch?revision=2017-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-patch","conformance-type":"import"},{"name":"sal-group_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-group?revision=2013-09-18","namespace":"urn:opendaylight:group:service","conformance-type":"import"},{"name":"odl-codegen-extensions_2024-06-27","revision":"2024-06-27","schema":"/rests/modules/odl-codegen-extensions?revision=2024-06-27","namespace":"urn:opendaylight:yang:extension:codegen","conformance-type":"import"},{"name":"sal-meter_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-meter?revision=2013-09-18","namespace":"urn:opendaylight:meter:service","conformance-type":"import"},{"name":"ietf-interfaces_2018-02-20","revision":"2018-02-20","schema":"/rests/modules/ietf-interfaces?revision=2018-02-20","namespace":"urn:ietf:params:xml:ns:yang:ietf-interfaces","conformance-type":"import","feature":["pre-provisioning","if-mib","arbitrary-names"]},{"name":"opendaylight-l2-types_2013-08-27","revision":"2013-08-27","schema":"/rests/modules/opendaylight-l2-types?revision=2013-08-27","namespace":"urn:opendaylight:l2:types","conformance-type":"import"},{"name":"opendaylight-flow-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-flow-types?revision=2013-10-26","namespace":"urn:opendaylight:flow:types","conformance-type":"import"},{"name":"lldp-speaker-config_2016-05-12","revision":"2016-05-12","schema":"/rests/modules/lldp-speaker-config?revision=2016-05-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker:config","conformance-type":"import"},{"name":"aaa-cert_2015-11-26","revision":"2015-11-26","schema":"/rests/modules/aaa-cert?revision=2015-11-26","namespace":"urn:opendaylight:yang:aaa:cert","conformance-type":"import"},{"name":"openflow-action_2015-02-03","revision":"2015-02-03","schema":"/rests/modules/openflow-action?revision=2015-02-03","namespace":"urn:opendaylight:openflow:common:action","conformance-type":"import"},{"name":"openflow-approved-extensions_2016-08-02","revision":"2016-08-02","schema":"/rests/modules/openflow-approved-extensions?revision=2016-08-02","namespace":"urn:opendaylight:openflow:approved:extensions","conformance-type":"import"},{"name":"nc-notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/nc-notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netmod:notification","conformance-type":"import"},{"name":"ietf-netconf-nmda_2019-01-07","revision":"2019-01-07","schema":"/rests/modules/ietf-netconf-nmda?revision=2019-01-07","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-nmda","conformance-type":"import","feature":["with-defaults","origin"]},{"name":"ietf-tcp-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-common","conformance-type":"import","feature":["keepalives-supported"]},{"name":"network-topology_2013-10-21","revision":"2013-10-21","schema":"/rests/modules/network-topology?revision=2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:network-topology","conformance-type":"import"},{"name":"aaa-encrypt-service-config_2024-02-02","revision":"2024-02-02","schema":"/rests/modules/aaa-encrypt-service-config?revision=2024-02-02","namespace":"config:aaa:authn:encrypt:service:config","conformance-type":"import"},{"name":"openflow-instruction_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-instruction?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:instruction","conformance-type":"import"},{"name":"ietf-tls-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-client","conformance-type":"import","feature":["client-ident-x509-cert","server-auth-x509-cert"]},{"name":"opendaylight-group-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-group-statistics?revision=2013-11-11","namespace":"urn:opendaylight:group:statistics","conformance-type":"import"},{"name":"cluster-admin_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/cluster-admin?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:cluster:admin","conformance-type":"import"},{"name":"opendaylight-flow-statistics_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-flow-statistics?revision=2013-08-19","namespace":"urn:opendaylight:flow:statistics","conformance-type":"import"},{"name":"opendaylight-table-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-table-types?revision=2013-10-26","namespace":"urn:opendaylight:table:types","conformance-type":"import"},{"name":"forwarding-rules-manager-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/forwarding-rules-manager-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:forwardingrules-manager:config","conformance-type":"import"},{"name":"odl-srm-types_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-types?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:types","conformance-type":"import"},{"name":"ietf-x509-cert-to-name_2014-12-10","revision":"2014-12-10","schema":"/rests/modules/ietf-x509-cert-to-name?revision=2014-12-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-x509-cert-to-name","conformance-type":"import"},{"name":"flow-node-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-node-inventory?revision=2013-08-19","namespace":"urn:opendaylight:flow:inventory","conformance-type":"import"},{"name":"flow-errors_2013-11-16","revision":"2013-11-16","schema":"/rests/modules/flow-errors?revision=2013-11-16","namespace":"urn:opendaylight:flow:errors","conformance-type":"import"},{"name":"ietf-netconf_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:netconf:base:1.0","conformance-type":"import","feature":["xpath","url","rollback-on-error","validate","startup","candidate","confirmed-commit","writable-running"]},{"name":"iana-ssh-public-key-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-public-key-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-public-key-algs","conformance-type":"import"},{"name":"aaa-cert-mdsal_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/aaa-cert-mdsal?revision=2016-03-21","namespace":"urn:opendaylight:yang:aaa:cert:mdsal","conformance-type":"import"},{"name":"odl-device-notification_2024-02-18","revision":"2024-02-18","schema":"/rests/modules/odl-device-notification?revision=2024-02-18","namespace":"urn:opendaylight:device:notification","conformance-type":"import"},{"name":"ietf-origin_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-origin?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-origin","conformance-type":"import"},{"name":"openflow-augments_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-augments?revision=2015-02-25","namespace":"urn:opendaylight:openflow:augments","conformance-type":"import"},{"name":"iana-ssh-encryption-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-encryption-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-encryption-algs","conformance-type":"import"},{"name":"ietf-truststore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-truststore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-truststore","conformance-type":"import","feature":["inline-definitions-supported"]},{"name":"distributed-datastore-provider_2025-01-30","revision":"2025-01-30","schema":"/rests/modules/distributed-datastore-provider?revision=2025-01-30","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:distributed-datastore-provider","conformance-type":"import"},{"name":"opendaylight-group-types_2013-10-18","revision":"2013-10-18","schema":"/rests/modules/opendaylight-group-types?revision=2013-10-18","namespace":"urn:opendaylight:group:types","conformance-type":"import"},{"name":"sal-remote-augment_2023-11-03","revision":"2023-11-03","schema":"/rests/modules/sal-remote-augment?revision=2023-11-03","namespace":"urn:sal:restconf:event:subscription","conformance-type":"import"},{"name":"opendaylight-ipv6-arbitrary-bitmask-fields_2016-02-24","revision":"2016-02-24","schema":"/rests/modules/opendaylight-ipv6-arbitrary-bitmask-fields?revision=2016-02-24","namespace":"urn:opendaylight:opendaylight-ipv6-arbitrary-bitmask-fields","conformance-type":"import"},{"name":"sal-flows-batch_2016-03-14","revision":"2016-03-14","schema":"/rests/modules/sal-flows-batch?revision=2016-03-14","namespace":"urn:opendaylight:flows:service","conformance-type":"import"},{"name":"ietf-tls-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-common","conformance-type":"import","feature":["tls12","hello-params","tls13"]},{"name":"openflow-types_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-types?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:types","conformance-type":"import"},{"name":"ietf-netconf-with-defaults_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf-with-defaults?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults","conformance-type":"import"},{"name":"odl-srm-ops_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-ops?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:ops","conformance-type":"import"},{"name":"odl-general-entity_2015-09-30","revision":"2015-09-30","schema":"/rests/modules/odl-general-entity?revision=2015-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:mdsal:core:general-entity","conformance-type":"import"},{"name":"iana-ssh-key-exchange-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-key-exchange-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-key-exchange-algs","conformance-type":"import"},{"name":"node-ssl-connection-error_2019-07-23","revision":"2019-07-23","schema":"/rests/modules/node-ssl-connection-error?revision=2019-07-23","namespace":"urn:opendaylight:node-ssl-connection-error:service","conformance-type":"import"},{"name":"openflow-protocol_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-protocol?revision=2013-07-31","namespace":"urn:opendaylight:openflow:protocol","conformance-type":"import"},{"name":"ietf-udp-server_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-server?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-server","conformance-type":"import"},{"name":"ietf-keystore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-keystore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-keystore","conformance-type":"import","feature":["asymmetric-keys","inline-definitions-supported"]},{"name":"aaa_2016-12-14","revision":"2016-12-14","schema":"/rests/modules/aaa?revision=2016-12-14","namespace":"urn:opendaylight:params:xml:ns:yang:aaa","conformance-type":"import"},{"name":"aaa-cert-rpc_2015-12-15","revision":"2015-12-15","schema":"/rests/modules/aaa-cert-rpc?revision=2015-12-15","namespace":"urn:opendaylight:yang:aaa:cert:rpc","conformance-type":"import"},{"name":"system-notifications_2013-09-27","revision":"2013-09-27","schema":"/rests/modules/system-notifications?revision=2013-09-27","namespace":"urn:opendaylight:openflow:system","conformance-type":"import"},{"name":"sal-flat-batch_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/sal-flat-batch?revision=2016-03-21","namespace":"urn:opendaylight:flat-batch:service","conformance-type":"import"},{"name":"notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netconf:notification:1.0","conformance-type":"import"},{"name":"sal-remote_2014-01-14","revision":"2014-01-14","schema":"/rests/modules/sal-remote?revision=2014-01-14","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:remote","conformance-type":"import"},{"name":"yang-ext_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/yang-ext?revision=2013-07-09","namespace":"urn:opendaylight:yang:extension:yang-ext","conformance-type":"import"},{"name":"opendaylight-multipart-types_2017-01-12","revision":"2017-01-12","schema":"/rests/modules/opendaylight-multipart-types?revision=2017-01-12","namespace":"urn:opendaylight:multipart:types","conformance-type":"import"},{"name":"opendaylight-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-inventory?revision=2013-08-19","namespace":"urn:opendaylight:inventory","conformance-type":"import"},{"name":"sal-queue_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-queue?revision=2015-03-05","namespace":"urn:opendaylight:queue:service","conformance-type":"import"},{"name":"sal-groups-batch_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/sal-groups-batch?revision=2016-03-15","namespace":"urn:opendaylight:groups:service","conformance-type":"import"},{"name":"arbitrator-reconcile_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/arbitrator-reconcile?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:arbitrator-reconcile:service","conformance-type":"import"},{"name":"ietf-yang-metadata_2016-08-05","revision":"2016-08-05","schema":"/rests/modules/ietf-yang-metadata?revision=2016-08-05","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-metadata","conformance-type":"import"},{"name":"opendaylight-arbitrary-bitmask-fields_2016-01-30","revision":"2016-01-30","schema":"/rests/modules/opendaylight-arbitrary-bitmask-fields?revision=2016-01-30","namespace":"urn:opendaylight:arbitrary:bitmask:fields","conformance-type":"import"},{"name":"ietf-udp-client_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-client?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-client","conformance-type":"import","feature":["local-binding"]},{"name":"opendaylight-meter-types_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/opendaylight-meter-types?revision=2013-09-18","namespace":"urn:opendaylight:meter:types","conformance-type":"import"},{"name":"opendaylight-action-types_2013-11-12","revision":"2013-11-12","schema":"/rests/modules/opendaylight-action-types?revision=2013-11-12","namespace":"urn:opendaylight:action:types","conformance-type":"import"},{"name":"sal-role_2015-07-27","revision":"2015-07-27","schema":"/rests/modules/sal-role?revision=2015-07-27","namespace":"urn:opendaylight:role:service","conformance-type":"import"},{"name":"openflow-provider-config_2016-05-10","revision":"2016-05-10","schema":"/rests/modules/openflow-provider-config?revision=2016-05-10","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:provider:config","conformance-type":"import"},{"name":"odl-serviceutils-upgrade_2018-07-02","revision":"2018-07-02","schema":"/rests/modules/odl-serviceutils-upgrade?revision=2018-07-02","namespace":"urn:opendaylight:serviceutils:upgrade","conformance-type":"import"},{"name":"opendaylight-match-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-match-types?revision=2013-10-26","namespace":"urn:opendaylight:model:match:types","conformance-type":"import"},{"name":"ietf-restconf-server_2024-08-14","revision":"2024-08-14","schema":"/rests/modules/ietf-restconf-server?revision=2024-08-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-server","conformance-type":"import","feature":["http-listen","https-listen"]},{"name":"reconciliation-result-state_2017-07-13","revision":"2017-07-13","schema":"/rests/modules/reconciliation-result-state?revision=2017-07-13","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:rf:state","conformance-type":"import"},{"name":"onf-extensions_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/onf-extensions?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf","conformance-type":"import"},{"name":"sal-table_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/sal-table?revision=2013-10-26","namespace":"urn:opendaylight:table:service","conformance-type":"import"},{"name":"iana-http-versions_2026-02-04","revision":"2026-02-04","schema":"/rests/modules/iana-http-versions?revision=2026-02-04","namespace":"urn:ietf:params:xml:ns:yang:iana-http-versions","conformance-type":"import"},{"name":"opendaylight-direct-statistics_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/opendaylight-direct-statistics?revision=2016-05-11","namespace":"urn:opendaylight:direct:statistics","conformance-type":"import"},{"name":"opendaylight-port-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-port-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:port","conformance-type":"import"},{"name":"sal-async-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/sal-async-config?revision=2017-06-19","namespace":"urn:opendaylight:async-config:service","conformance-type":"import"},{"name":"aaa-password-service-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-password-service-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:password:service:config","conformance-type":"import"},{"name":"ietf-yang-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-yang-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-types","conformance-type":"import"},{"name":"opendaylight-queue-statistics_2013-12-16","revision":"2013-12-16","schema":"/rests/modules/opendaylight-queue-statistics?revision=2013-12-16","namespace":"urn:opendaylight:queue:statistics","conformance-type":"import"},{"name":"sal-bundle_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/sal-bundle?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf:bundle:service","conformance-type":"import"},{"name":"ietf-restconf-subscribed-notifications_2019-11-17","revision":"2019-11-17","schema":"/rests/modules/ietf-restconf-subscribed-notifications?revision=2019-11-17","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-subscribed-notifications","conformance-type":"import"},{"name":"sal-meters-batch_2016-03-16","revision":"2016-03-16","schema":"/rests/modules/sal-meters-batch?revision=2016-03-16","namespace":"urn:opendaylight:meters:service","conformance-type":"import"},{"name":"odl-entity-owners","revision":"","schema":"/rests/modules/odl-entity-owners","namespace":"urn:opendaylight:params:xml:ns:yang:controller:entity-owners","conformance-type":"import"},{"name":"sal-experimenter-mp-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-mp-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-mp-message:service","conformance-type":"import"},{"name":"packet-processing_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/packet-processing?revision=2013-07-09","namespace":"urn:opendaylight:packet:service","conformance-type":"import"},{"name":"openflow-configuration_2014-06-30","revision":"2014-06-30","schema":"/rests/modules/openflow-configuration?revision=2014-06-30","namespace":"urn:opendaylight:openflow:config","conformance-type":"import"},{"name":"odl-srm-rpcs_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-rpcs?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:rpc","conformance-type":"import"},{"name":"ietf-netconf-acm_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-netconf-acm?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-acm","conformance-type":"import"},{"name":"iana-crypt-hash_2014-08-06","revision":"2014-08-06","schema":"/rests/modules/iana-crypt-hash?revision=2014-08-06","namespace":"urn:ietf:params:xml:ns:yang:iana-crypt-hash","conformance-type":"import","feature":["crypt-hash-sha-512","crypt-hash-sha-256","crypt-hash-md5"]},{"name":"openflow-extensible-match_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-extensible-match?revision=2015-02-25","namespace":"urn:opendaylight:openflow:oxm","conformance-type":"import"}],"module-set-id":"2"}}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:56.188007" elapsed="0.003461"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:56.187787" elapsed="0.003732"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:56.187768" elapsed="0.003785"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:56.195004" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:56.191939" elapsed="0.003129"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:56.191631" elapsed="0.003484"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:56.191608" elapsed="0.003541"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:56.195973" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:56.195401" elapsed="0.000609"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:56.196456" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:56.196107" elapsed="0.000430"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:56.197282" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:56.196816" elapsed="0.000502"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:56.196569" elapsed="0.000799"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:56.196082" elapsed="0.001316"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:56.198116" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:56.197618" elapsed="0.000554"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:56.198601" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:56.198275" elapsed="0.000406"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:56.199362" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:56.198933" elapsed="0.000465"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:56.198713" elapsed="0.000734"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:56.198248" elapsed="0.001229"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:51:56.199683" elapsed="0.000501"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:51:56.200805" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:56.200416" elapsed="0.000425"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:51:56.201052" elapsed="0.002533"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:51:56.187358" elapsed="0.016291"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:51:56.203826" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:51:56.203719" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:56.203700" elapsed="0.000192"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:51:56.212437" level="INFO">${text_normalized} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:51:56.204035" elapsed="0.008435"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:51:56.212526" elapsed="0.000039"/>
</return>
<msg time="2026-04-08T00:51:56.212701" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:51:56.173135" elapsed="0.039593"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:51:56.212792" elapsed="0.000027"/>
</return>
<msg time="2026-04-08T00:51:56.213188" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="PASS" start="2026-04-08T00:51:56.082320" elapsed="0.130909"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Json_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:56.213731" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:56.213362" elapsed="0.000496"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:56.213330" elapsed="0.000570"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:51:56.213960" elapsed="0.000070"/>
</return>
<arg>session=${session}</arg>
<arg>folder=${RESTCONF_MODULES_DIR}</arg>
<arg>verify=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Add arguments sensible for JSON data, return Get_Templated response text.
Optionally, verification against JSON data (may be iterated) is called.
Only subset of JSON data is verified and returned if JMES path is specified in
file ${folder}/jmespath.expr.</doc>
<status status="PASS" start="2026-04-08T00:51:56.076682" elapsed="0.137561"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:56.072298" elapsed="0.142056"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:56.072280" elapsed="0.142102"/>
</if>
<kw name="Resolve_Shard_Type_Class" owner="ClusterManagement">
<if>
<branch type="IF" condition="'${shard_type}' == 'config'">
<return>
<value>DistributedConfigDatastore</value>
<status status="NOT RUN" start="2026-04-08T00:51:56.215306" elapsed="0.000047"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:51:56.215062" elapsed="0.000335"/>
</branch>
<branch type="ELSE IF" condition="'${shard_type}' == 'operational'">
<return>
<value>DistributedOperationalDatastore</value>
<status status="PASS" start="2026-04-08T00:51:56.215673" elapsed="0.000086"/>
</return>
<status status="PASS" start="2026-04-08T00:51:56.215453" elapsed="0.000364"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:56.215030" elapsed="0.000863"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized shard type: ${shard_type}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:56.216134" elapsed="0.000083"/>
</kw>
<msg time="2026-04-08T00:51:56.216356" level="INFO">${type_class} = DistributedOperationalDatastore</msg>
<var>${type_class}</var>
<arg>shard_type=${shard_type}</arg>
<doc>Simple lookup for class name corresponding to desired type.</doc>
<status status="PASS" start="2026-04-08T00:51:56.214652" elapsed="0.001730"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:56.217273" level="INFO">${cluster_index} = 1</msg>
<var>${cluster_index}</var>
<arg>${member_index}+${NODE_ROLE_INDEX_START}-1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:56.216555" elapsed="0.000746"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:56.218449" level="INFO">${uri} = jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-topology-operational,type=DistributedOperationalDatastore</msg>
<var>${uri}</var>
<arg>${JOLOKIA_READ_URI}:Category=Shards,name=member-${cluster_index}-shard-${shard_name}-${shard_type},type=${type_class}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:56.217460" elapsed="0.001017"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:56.225538" level="INFO">jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-topology-operational,type=DistributedOperationalDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:56.225248" elapsed="0.000374"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:56.226144" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:56.225864" elapsed="0.000472"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:51:56.234204" level="INFO">GET Request : url=http://10.30.170.48:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-topology-operational,type=DistributedOperationalDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-topology-operational,type=DistributedOperationalDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:51:56.234271" level="INFO">GET Response : url=http://10.30.170.48:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-topology-operational,type=DistributedOperationalDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Wed, 08 Apr 2026 00:51:56 GMT', 'Expires': 'Tue, 07 Apr 2026 23:51:56 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-1-shard-topology-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"ReadWriteTransactionCount":66,"SnapshotIndex":172,"InMemoryJournalLogSize":1,"ReplicatedToAllIndex":172,"Leader":"member-1-shard-topology-operational","LastIndex":173,"RaftState":"Leader","LastApplied":173,"LastCommittedTransactionTime":"2026-04-08 00:51:54.948","PeerAddresses":"member-2-shard-topology-operational: pekko:\/\/opendaylight-cluster-data@10.30.170.131:2550\/user\/shardmanager-operational\/member-2-shard-topology-operational, member-3-shard-topology-operational: pekko:\/\/opendaylight-cluster-data@10.30.171.110:2550\/user\/shardmanager-operational\/member-3-shard-topology-operational","LastLogIndex":173,"LastLeadershipChangeTime":"2026-04-08 00:46:45.974","FollowerInitialSyncStatus":false,"FollowerInfo":[{"timeSinceLastActivity":"00:00:00.463","active":true,"matchIndex":173,"voting":true,"id":"member-2-shard-topology-operational","nextIndex":174},{"timeSinceLastActivity":"00:00:00.463","active":true,"matchIndex":173,"voting":true,"id":"member-3-shard-topology-operational","nextIndex":174}],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"445.9 μs","CurrentTerm":2,"LastTerm":2,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-topology-operational","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":56,"TxCohortCacheSize":0,"PeerVotingStates":"member-2-shard-topology-operational: true, member-3-shard-topology-operational: true","LastLogTerm":2,"StatRetrievalError":null,"CommitIndex":173,"SnapshotTerm":2,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":20,"ShardName":"member-1-shard-topology-operational","LeadershipChangeCount":1,"InMemoryJournalDataSize":32666},"timestamp":1775609516,"status":200} 
 </msg>
<msg time="2026-04-08T00:51:56.234379" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:51:56.228400" elapsed="0.006004"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:56.226481" elapsed="0.007967"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:56.234647" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:56.234495" elapsed="0.000250"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:56.226436" elapsed="0.008351"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:56.238448" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-1-shard-topology-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"ReadWriteTransactionCount":66,"SnapshotIndex":172,"InMemoryJournalLogSize":1,"ReplicatedToAllIndex":172,"Leader":"member-1-shard-topology-operational","LastIndex":173,"RaftState":"Leader","LastApplied":173,"LastCommittedTransactionTime":"2026-04-08 00:51:54.948","PeerAddresses":"member-2-shard-topology-operational: pekko:\/\/opendaylight-cluster-data@10.30.170.131:2550\/user\/shardmanager-operational\/member-2-shard-topology-operational, member-3-shard-topology-operational: pekko:\/\/opendaylight-cluster-data@10.30.171.110:2550\/user\/shardmanager-operational\/member-3-shard-topology-operational","LastLogIndex":173,"LastLeadershipChangeTime":"2026-04-08 00:46:45.974","FollowerInitialSyncStatus":false,"FollowerInfo":[{"timeSinceLastActivity":"00:00:00.463","active":true,"matchIndex":173,"voting":true,"id":"member-2-shard-topology-operational","nextIndex":174},{"timeSinceLastActivity":"00:00:00.463","active":true,"matchIndex":173,"voting":true,"id":"member-3-shard-topology-operational","nextIndex":174}],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"445.9 μs","CurrentTerm":2,"LastTerm":2,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-topology-operational","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":56,"TxCohortCacheSize":0,"PeerVotingStates":"member-2-shard-topology-operational: true, member-3-shard-topology-operational: true","LastLogTerm":2,"StatRetrievalError":null,"CommitIndex":173,"SnapshotTerm":2,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":20,"ShardName":"member-1-shard-topology-operational","LeadershipChangeCount":1,"InMemoryJournalDataSize":32666},"timestamp":1775609516,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:56.235842" elapsed="0.002694"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:56.235624" elapsed="0.002961"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:56.235605" elapsed="0.003015"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:56.242044" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:56.239003" elapsed="0.003104"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:56.238699" elapsed="0.003473"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:56.238675" elapsed="0.003533"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:56.242954" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:56.242432" elapsed="0.000560"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:56.243455" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:56.243091" elapsed="0.000445"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:56.244229" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:56.243794" elapsed="0.000473"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:56.243569" elapsed="0.000747"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:56.243065" elapsed="0.001282"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:56.245221" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:56.244627" elapsed="0.000633"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:56.245682" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:56.245359" elapsed="0.000413"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:56.246473" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:56.246042" elapsed="0.000467"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:56.245813" elapsed="0.000744"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:56.245333" elapsed="0.001254"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:51:56.246798" elapsed="0.000496"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:51:56.247963" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:56.247570" elapsed="0.000429"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:51:56.248231" elapsed="0.002599"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:51:56.235207" elapsed="0.015686"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:51:56.251181" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:51:56.251051" elapsed="0.000176"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:56.251004" elapsed="0.000263"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:51:56.254362" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-1-shard-topology-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:51:56.251504" elapsed="0.002910"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:51:56.254530" elapsed="0.000065"/>
</return>
<msg time="2026-04-08T00:51:56.254886" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-1-shard-topology-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:51:56.220169" elapsed="0.034806"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:51:56.255076" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:51:56.255358" level="INFO">${data_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-1-shard-topology-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp...</msg>
<var>${data_text}</var>
<arg>uri=${uri}</arg>
<arg>session=${session}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-08T00:51:56.218694" elapsed="0.036691"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:56.257490" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-1-shard-topology-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 17756095...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:56.256423" elapsed="0.001161"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-08T00:51:56.257667" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:51:56.257960" level="INFO">${data_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-1-shard-topology-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 17756095...</msg>
<var>${data_object}</var>
<arg>${data_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-08T00:51:56.255607" elapsed="0.002381"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:51:56.258476" level="INFO">${value} = {'AbortTransactionsCount': 0, 'CommitIndex': 173, 'CommittedTransactionsCount': 56, 'CurrentTerm': 2, 'FailedReadTransactionsCount': 0, 'FailedTransactionsCount': 0, 'FollowerInfo': [{'active': True, ...</msg>
<var>${value}</var>
<arg>${data_object}</arg>
<arg>value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:51:56.258145" elapsed="0.000359"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:51:56.259082" level="INFO">${raft_property} = Leader</msg>
<var>${raft_property}</var>
<arg>${value}</arg>
<arg>${property}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:51:56.258660" elapsed="0.000448"/>
</kw>
<return>
<value>${raft_property}</value>
<status status="PASS" start="2026-04-08T00:51:56.259169" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:51:56.259325" level="INFO">${raft_state} = Leader</msg>
<var>${raft_state}</var>
<arg>RaftState</arg>
<arg>${shard_name}</arg>
<arg>${shard_type}</arg>
<arg>${member_index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft property.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T00:51:56.069687" elapsed="0.189662"/>
</kw>
<return>
<value>${raft_state}</value>
<status status="PASS" start="2026-04-08T00:51:56.259406" elapsed="0.000025"/>
</return>
<msg time="2026-04-08T00:51:56.259552" level="INFO">${raft_state} = Leader</msg>
<var>${raft_state}</var>
<arg>shard_name=${shard_name}</arg>
<arg>shard_type=${ds_type}</arg>
<arg>member_index=${index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft status.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T00:51:56.068902" elapsed="0.190674"/>
</kw>
<if>
<branch type="IF" condition="'Follower' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${follower_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:56.259904" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:56.259656" 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="PASS" start="2026-04-08T00:51:56.260213" elapsed="0.000192"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:56.259983" elapsed="0.000462"/>
</branch>
<branch type="ELSE IF" condition="${validate}">
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized Raft state: ${raft_state}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:56.260613" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:56.260469" elapsed="0.000196"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:56.259638" elapsed="0.001050"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T00:51:56.068739" elapsed="0.191972"/>
</iter>
<iter>
<kw name="Get_Raft_State_Of_Shard_At_Member" owner="ClusterManagement">
<kw name="Get_Raft_Property_From_Shard_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:56.263887" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:56.263039" elapsed="0.000937"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:51:56.264056" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:51:56.264430" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:51:56.262514" elapsed="0.001942"/>
</kw>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Get_As_Json_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:56.312365" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:56.311977" elapsed="0.000463"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:51:56.313322" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:51:56.312943" elapsed="0.000459">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-08T00:51:56.313496" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:51:56.312607" elapsed="0.000914"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:51:56.314066" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:51:56.313685" elapsed="0.000407"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T00:51:56.314408" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-08T00:51:56.314558" level="INFO">${template} = /rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T00:51:56.314269" elapsed="0.000315"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:56.314975" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:56.314736" elapsed="0.000283"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:56.316006" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:56.315716" elapsed="0.000334"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-08T00:51:56.316499" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-08T00:51:56.316230" elapsed="0.000295"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:56.316880" elapsed="0.000022"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:56.317109" elapsed="0.000029"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:56.317305" elapsed="0.000021"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-08T00:51:56.316718" elapsed="0.000644"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-08T00:51:56.316576" elapsed="0.000815"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-08T00:51:56.317434" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:51:56.317590" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-08T00:51:56.315393" elapsed="0.002221"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:56.315087" elapsed="0.002558"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:56.317814" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:56.317669" elapsed="0.000201"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:56.315067" elapsed="0.002823"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:56.318478" level="INFO">${final_text} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:56.318030" elapsed="0.000475"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T00:51:56.318552" elapsed="0.000028"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="PASS" start="2026-04-08T00:51:56.311376" elapsed="0.007298"/>
</kw>
<msg time="2026-04-08T00:51:56.318727" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:51:56.299537" elapsed="0.019241"/>
</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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:56.330520" 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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:56.342229" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:56.359380" elapsed="0.000067"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:56.359865" elapsed="0.000058"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:56.360307" elapsed="0.000049"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:56.361210" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:56.360799" elapsed="0.000542"/>
</branch>
<status status="NOT RUN" start="2026-04-08T00:51:56.360768" elapsed="0.000627"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:56.361703" elapsed="0.000048"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:56.361958" elapsed="0.000027"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:56.362343" elapsed="0.000030"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-08T00:51:56.360704" elapsed="0.001713"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-08T00:51:56.360478" elapsed="0.001975"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:56.362654" elapsed="0.000029"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-08T00:51:56.362757" elapsed="0.000021"/>
</return>
<msg time="2026-04-08T00:51:56.362921" level="INFO">${uri} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-08T00:51:56.295560" elapsed="0.067396"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:51:56.364715" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:51:56.364381" elapsed="0.000425">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-08T00:51:56.364932" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:51:56.363881" elapsed="0.001085"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:56.365490" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:56.365112" elapsed="0.000458"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:56.366149" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:56.365836" elapsed="0.000356"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:56.365603" elapsed="0.000624"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:56.365083" elapsed="0.001166"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:51:56.368459" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:51:56.366399" elapsed="0.002086"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-08T00:51:56.368534" elapsed="0.000031"/>
</return>
<msg time="2026-04-08T00:51:56.368687" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:51:56.363425" elapsed="0.005286"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:51:56.370038" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:51:56.369778" elapsed="0.000325">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-08T00:51:56.370212" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:51:56.369426" elapsed="0.000812"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-08T00:51:56.370445" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-08T00:51:56.370311" elapsed="0.000192"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:56.370291" elapsed="0.000235"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:56.370673" elapsed="0.000022"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:56.370846" elapsed="0.000021"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-08T00:51:56.370911" elapsed="0.000014"/>
</return>
<msg time="2026-04-08T00:51:56.372855" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:51:56.369073" elapsed="0.003810"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:56.374313" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:56.374046" elapsed="0.000313"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:56.374749" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:56.374508" elapsed="0.000284"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:51:56.396025" level="INFO">GET Request : url=http://10.30.170.131:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 path_url=/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node012m0dyuink19r12kj250j53usg1.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:51:56.396658" level="INFO">GET Response : url=http://10.30.170.131:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Transfer-Encoding': 'chunked'} 
 body={"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","hidden-symmetric-keys","encrypted-private-keys","asymmetrically-encrypted-value-format","cms-encrypted-data-format","cleartext-private-keys","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["ssh-client-keepalives","client-ident-hostbased","client-ident-publickey","client-ident-password"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-ex... (set the log level to DEBUG or TRACE to see the full content) 
 </msg>
<msg time="2026-04-08T00:51:56.397025" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:51:56.376784" elapsed="0.020282"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:56.374859" elapsed="0.022270"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:56.397411" elapsed="0.000032"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:56.397191" elapsed="0.000312"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:56.374840" elapsed="0.022693"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:56.406057" level="INFO">{"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","hidden-symmetric-keys","encrypted-private-keys","asymmetrically-encrypted-value-format","cms-encrypted-data-format","cleartext-private-keys","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["ssh-client-keepalives","client-ident-hostbased","client-ident-publickey","client-ident-password"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-experimenter-types?revision=2015-10-20","namespace":"urn:opendaylight:openflowplugin:experimenter:types","conformance-type":"import"},{"name":"ietf-ip_2018-02-22","revision":"2018-02-22","schema":"/rests/modules/ietf-ip?revision=2018-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-ip","conformance-type":"import","feature":["ipv6-privacy-autoconf","ipv4-non-contiguous-netmasks"]},{"name":"ietf-tcp-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-client","conformance-type":"import","feature":["local-binding-supported","tcp-client-keepalives"]},{"name":"node-config_2014-10-15","revision":"2014-10-15","schema":"/rests/modules/node-config?revision=2014-10-15","namespace":"urn:opendaylight:module:config","conformance-type":"import"},{"name":"ietf-restconf_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf","conformance-type":"import"},{"name":"ietf-datastores_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-datastores?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-datastores","conformance-type":"import"},{"name":"ietf-yang-patch_2017-02-22","revision":"2017-02-22","schema":"/rests/modules/ietf-yang-patch?revision=2017-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-patch","conformance-type":"import"},{"name":"sal-group_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-group?revision=2013-09-18","namespace":"urn:opendaylight:group:service","conformance-type":"import"},{"name":"odl-codegen-extensions_2024-06-27","revision":"2024-06-27","schema":"/rests/modules/odl-codegen-extensions?revision=2024-06-27","namespace":"urn:opendaylight:yang:extension:codegen","conformance-type":"import"},{"name":"sal-meter_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-meter?revision=2013-09-18","namespace":"urn:opendaylight:meter:service","conformance-type":"import"},{"name":"ietf-interfaces_2018-02-20","revision":"2018-02-20","schema":"/rests/modules/ietf-interfaces?revision=2018-02-20","namespace":"urn:ietf:params:xml:ns:yang:ietf-interfaces","conformance-type":"import","feature":["pre-provisioning","if-mib","arbitrary-names"]},{"name":"opendaylight-l2-types_2013-08-27","revision":"2013-08-27","schema":"/rests/modules/opendaylight-l2-types?revision=2013-08-27","namespace":"urn:opendaylight:l2:types","conformance-type":"import"},{"name":"opendaylight-flow-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-flow-types?revision=2013-10-26","namespace":"urn:opendaylight:flow:types","conformance-type":"import"},{"name":"lldp-speaker-config_2016-05-12","revision":"2016-05-12","schema":"/rests/modules/lldp-speaker-config?revision=2016-05-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker:config","conformance-type":"import"},{"name":"aaa-cert_2015-11-26","revision":"2015-11-26","schema":"/rests/modules/aaa-cert?revision=2015-11-26","namespace":"urn:opendaylight:yang:aaa:cert","conformance-type":"import"},{"name":"openflow-action_2015-02-03","revision":"2015-02-03","schema":"/rests/modules/openflow-action?revision=2015-02-03","namespace":"urn:opendaylight:openflow:common:action","conformance-type":"import"},{"name":"openflow-approved-extensions_2016-08-02","revision":"2016-08-02","schema":"/rests/modules/openflow-approved-extensions?revision=2016-08-02","namespace":"urn:opendaylight:openflow:approved:extensions","conformance-type":"import"},{"name":"nc-notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/nc-notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netmod:notification","conformance-type":"import"},{"name":"ietf-netconf-nmda_2019-01-07","revision":"2019-01-07","schema":"/rests/modules/ietf-netconf-nmda?revision=2019-01-07","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-nmda","conformance-type":"import","feature":["with-defaults","origin"]},{"name":"ietf-tcp-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-common","conformance-type":"import","feature":["keepalives-supported"]},{"name":"network-topology_2013-10-21","revision":"2013-10-21","schema":"/rests/modules/network-topology?revision=2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:network-topology","conformance-type":"import"},{"name":"aaa-encrypt-service-config_2024-02-02","revision":"2024-02-02","schema":"/rests/modules/aaa-encrypt-service-config?revision=2024-02-02","namespace":"config:aaa:authn:encrypt:service:config","conformance-type":"import"},{"name":"openflow-instruction_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-instruction?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:instruction","conformance-type":"import"},{"name":"ietf-tls-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-client","conformance-type":"import","feature":["client-ident-x509-cert","server-auth-x509-cert"]},{"name":"opendaylight-group-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-group-statistics?revision=2013-11-11","namespace":"urn:opendaylight:group:statistics","conformance-type":"import"},{"name":"cluster-admin_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/cluster-admin?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:cluster:admin","conformance-type":"import"},{"name":"opendaylight-flow-statistics_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-flow-statistics?revision=2013-08-19","namespace":"urn:opendaylight:flow:statistics","conformance-type":"import"},{"name":"opendaylight-table-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-table-types?revision=2013-10-26","namespace":"urn:opendaylight:table:types","conformance-type":"import"},{"name":"forwarding-rules-manager-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/forwarding-rules-manager-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:forwardingrules-manager:config","conformance-type":"import"},{"name":"odl-srm-types_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-types?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:types","conformance-type":"import"},{"name":"ietf-x509-cert-to-name_2014-12-10","revision":"2014-12-10","schema":"/rests/modules/ietf-x509-cert-to-name?revision=2014-12-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-x509-cert-to-name","conformance-type":"import"},{"name":"flow-node-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-node-inventory?revision=2013-08-19","namespace":"urn:opendaylight:flow:inventory","conformance-type":"import"},{"name":"flow-errors_2013-11-16","revision":"2013-11-16","schema":"/rests/modules/flow-errors?revision=2013-11-16","namespace":"urn:opendaylight:flow:errors","conformance-type":"import"},{"name":"ietf-netconf_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:netconf:base:1.0","conformance-type":"import","feature":["xpath","url","rollback-on-error","validate","startup","candidate","confirmed-commit","writable-running"]},{"name":"iana-ssh-public-key-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-public-key-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-public-key-algs","conformance-type":"import"},{"name":"aaa-cert-mdsal_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/aaa-cert-mdsal?revision=2016-03-21","namespace":"urn:opendaylight:yang:aaa:cert:mdsal","conformance-type":"import"},{"name":"odl-device-notification_2024-02-18","revision":"2024-02-18","schema":"/rests/modules/odl-device-notification?revision=2024-02-18","namespace":"urn:opendaylight:device:notification","conformance-type":"import"},{"name":"ietf-origin_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-origin?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-origin","conformance-type":"import"},{"name":"openflow-augments_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-augments?revision=2015-02-25","namespace":"urn:opendaylight:openflow:augments","conformance-type":"import"},{"name":"iana-ssh-encryption-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-encryption-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-encryption-algs","conformance-type":"import"},{"name":"ietf-truststore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-truststore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-truststore","conformance-type":"import","feature":["inline-definitions-supported"]},{"name":"distributed-datastore-provider_2025-01-30","revision":"2025-01-30","schema":"/rests/modules/distributed-datastore-provider?revision=2025-01-30","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:distributed-datastore-provider","conformance-type":"import"},{"name":"opendaylight-group-types_2013-10-18","revision":"2013-10-18","schema":"/rests/modules/opendaylight-group-types?revision=2013-10-18","namespace":"urn:opendaylight:group:types","conformance-type":"import"},{"name":"sal-remote-augment_2023-11-03","revision":"2023-11-03","schema":"/rests/modules/sal-remote-augment?revision=2023-11-03","namespace":"urn:sal:restconf:event:subscription","conformance-type":"import"},{"name":"opendaylight-ipv6-arbitrary-bitmask-fields_2016-02-24","revision":"2016-02-24","schema":"/rests/modules/opendaylight-ipv6-arbitrary-bitmask-fields?revision=2016-02-24","namespace":"urn:opendaylight:opendaylight-ipv6-arbitrary-bitmask-fields","conformance-type":"import"},{"name":"sal-flows-batch_2016-03-14","revision":"2016-03-14","schema":"/rests/modules/sal-flows-batch?revision=2016-03-14","namespace":"urn:opendaylight:flows:service","conformance-type":"import"},{"name":"ietf-tls-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-common","conformance-type":"import","feature":["tls12","hello-params","tls13"]},{"name":"openflow-types_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-types?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:types","conformance-type":"import"},{"name":"ietf-netconf-with-defaults_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf-with-defaults?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults","conformance-type":"import"},{"name":"odl-srm-ops_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-ops?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:ops","conformance-type":"import"},{"name":"odl-general-entity_2015-09-30","revision":"2015-09-30","schema":"/rests/modules/odl-general-entity?revision=2015-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:mdsal:core:general-entity","conformance-type":"import"},{"name":"iana-ssh-key-exchange-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-key-exchange-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-key-exchange-algs","conformance-type":"import"},{"name":"node-ssl-connection-error_2019-07-23","revision":"2019-07-23","schema":"/rests/modules/node-ssl-connection-error?revision=2019-07-23","namespace":"urn:opendaylight:node-ssl-connection-error:service","conformance-type":"import"},{"name":"openflow-protocol_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-protocol?revision=2013-07-31","namespace":"urn:opendaylight:openflow:protocol","conformance-type":"import"},{"name":"ietf-udp-server_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-server?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-server","conformance-type":"import"},{"name":"ietf-keystore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-keystore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-keystore","conformance-type":"import","feature":["asymmetric-keys","inline-definitions-supported"]},{"name":"aaa_2016-12-14","revision":"2016-12-14","schema":"/rests/modules/aaa?revision=2016-12-14","namespace":"urn:opendaylight:params:xml:ns:yang:aaa","conformance-type":"import"},{"name":"aaa-cert-rpc_2015-12-15","revision":"2015-12-15","schema":"/rests/modules/aaa-cert-rpc?revision=2015-12-15","namespace":"urn:opendaylight:yang:aaa:cert:rpc","conformance-type":"import"},{"name":"system-notifications_2013-09-27","revision":"2013-09-27","schema":"/rests/modules/system-notifications?revision=2013-09-27","namespace":"urn:opendaylight:openflow:system","conformance-type":"import"},{"name":"sal-flat-batch_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/sal-flat-batch?revision=2016-03-21","namespace":"urn:opendaylight:flat-batch:service","conformance-type":"import"},{"name":"notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netconf:notification:1.0","conformance-type":"import"},{"name":"sal-remote_2014-01-14","revision":"2014-01-14","schema":"/rests/modules/sal-remote?revision=2014-01-14","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:remote","conformance-type":"import"},{"name":"yang-ext_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/yang-ext?revision=2013-07-09","namespace":"urn:opendaylight:yang:extension:yang-ext","conformance-type":"import"},{"name":"opendaylight-multipart-types_2017-01-12","revision":"2017-01-12","schema":"/rests/modules/opendaylight-multipart-types?revision=2017-01-12","namespace":"urn:opendaylight:multipart:types","conformance-type":"import"},{"name":"opendaylight-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-inventory?revision=2013-08-19","namespace":"urn:opendaylight:inventory","conformance-type":"import"},{"name":"sal-queue_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-queue?revision=2015-03-05","namespace":"urn:opendaylight:queue:service","conformance-type":"import"},{"name":"sal-groups-batch_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/sal-groups-batch?revision=2016-03-15","namespace":"urn:opendaylight:groups:service","conformance-type":"import"},{"name":"arbitrator-reconcile_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/arbitrator-reconcile?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:arbitrator-reconcile:service","conformance-type":"import"},{"name":"ietf-yang-metadata_2016-08-05","revision":"2016-08-05","schema":"/rests/modules/ietf-yang-metadata?revision=2016-08-05","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-metadata","conformance-type":"import"},{"name":"opendaylight-arbitrary-bitmask-fields_2016-01-30","revision":"2016-01-30","schema":"/rests/modules/opendaylight-arbitrary-bitmask-fields?revision=2016-01-30","namespace":"urn:opendaylight:arbitrary:bitmask:fields","conformance-type":"import"},{"name":"ietf-udp-client_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-client?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-client","conformance-type":"import","feature":["local-binding"]},{"name":"opendaylight-meter-types_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/opendaylight-meter-types?revision=2013-09-18","namespace":"urn:opendaylight:meter:types","conformance-type":"import"},{"name":"opendaylight-action-types_2013-11-12","revision":"2013-11-12","schema":"/rests/modules/opendaylight-action-types?revision=2013-11-12","namespace":"urn:opendaylight:action:types","conformance-type":"import"},{"name":"sal-role_2015-07-27","revision":"2015-07-27","schema":"/rests/modules/sal-role?revision=2015-07-27","namespace":"urn:opendaylight:role:service","conformance-type":"import"},{"name":"openflow-provider-config_2016-05-10","revision":"2016-05-10","schema":"/rests/modules/openflow-provider-config?revision=2016-05-10","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:provider:config","conformance-type":"import"},{"name":"odl-serviceutils-upgrade_2018-07-02","revision":"2018-07-02","schema":"/rests/modules/odl-serviceutils-upgrade?revision=2018-07-02","namespace":"urn:opendaylight:serviceutils:upgrade","conformance-type":"import"},{"name":"opendaylight-match-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-match-types?revision=2013-10-26","namespace":"urn:opendaylight:model:match:types","conformance-type":"import"},{"name":"ietf-restconf-server_2024-08-14","revision":"2024-08-14","schema":"/rests/modules/ietf-restconf-server?revision=2024-08-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-server","conformance-type":"import","feature":["http-listen","https-listen"]},{"name":"reconciliation-result-state_2017-07-13","revision":"2017-07-13","schema":"/rests/modules/reconciliation-result-state?revision=2017-07-13","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:rf:state","conformance-type":"import"},{"name":"onf-extensions_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/onf-extensions?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf","conformance-type":"import"},{"name":"sal-table_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/sal-table?revision=2013-10-26","namespace":"urn:opendaylight:table:service","conformance-type":"import"},{"name":"iana-http-versions_2026-02-04","revision":"2026-02-04","schema":"/rests/modules/iana-http-versions?revision=2026-02-04","namespace":"urn:ietf:params:xml:ns:yang:iana-http-versions","conformance-type":"import"},{"name":"opendaylight-direct-statistics_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/opendaylight-direct-statistics?revision=2016-05-11","namespace":"urn:opendaylight:direct:statistics","conformance-type":"import"},{"name":"opendaylight-port-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-port-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:port","conformance-type":"import"},{"name":"sal-async-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/sal-async-config?revision=2017-06-19","namespace":"urn:opendaylight:async-config:service","conformance-type":"import"},{"name":"aaa-password-service-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-password-service-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:password:service:config","conformance-type":"import"},{"name":"ietf-yang-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-yang-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-types","conformance-type":"import"},{"name":"opendaylight-queue-statistics_2013-12-16","revision":"2013-12-16","schema":"/rests/modules/opendaylight-queue-statistics?revision=2013-12-16","namespace":"urn:opendaylight:queue:statistics","conformance-type":"import"},{"name":"sal-bundle_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/sal-bundle?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf:bundle:service","conformance-type":"import"},{"name":"ietf-restconf-subscribed-notifications_2019-11-17","revision":"2019-11-17","schema":"/rests/modules/ietf-restconf-subscribed-notifications?revision=2019-11-17","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-subscribed-notifications","conformance-type":"import"},{"name":"sal-meters-batch_2016-03-16","revision":"2016-03-16","schema":"/rests/modules/sal-meters-batch?revision=2016-03-16","namespace":"urn:opendaylight:meters:service","conformance-type":"import"},{"name":"odl-entity-owners","revision":"","schema":"/rests/modules/odl-entity-owners","namespace":"urn:opendaylight:params:xml:ns:yang:controller:entity-owners","conformance-type":"import"},{"name":"sal-experimenter-mp-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-mp-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-mp-message:service","conformance-type":"import"},{"name":"packet-processing_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/packet-processing?revision=2013-07-09","namespace":"urn:opendaylight:packet:service","conformance-type":"import"},{"name":"openflow-configuration_2014-06-30","revision":"2014-06-30","schema":"/rests/modules/openflow-configuration?revision=2014-06-30","namespace":"urn:opendaylight:openflow:config","conformance-type":"import"},{"name":"odl-srm-rpcs_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-rpcs?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:rpc","conformance-type":"import"},{"name":"ietf-netconf-acm_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-netconf-acm?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-acm","conformance-type":"import"},{"name":"iana-crypt-hash_2014-08-06","revision":"2014-08-06","schema":"/rests/modules/iana-crypt-hash?revision=2014-08-06","namespace":"urn:ietf:params:xml:ns:yang:iana-crypt-hash","conformance-type":"import","feature":["crypt-hash-sha-512","crypt-hash-sha-256","crypt-hash-md5"]},{"name":"openflow-extensible-match_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-extensible-match?revision=2015-02-25","namespace":"urn:opendaylight:openflow:oxm","conformance-type":"import"}],"module-set-id":"2"}}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:56.400024" elapsed="0.006407"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:56.399366" elapsed="0.007103"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:56.399314" elapsed="0.007181"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:56.408953" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:56.406796" elapsed="0.002217"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:56.406553" elapsed="0.002496"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:56.406535" elapsed="0.002538"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:56.409647" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:56.409254" elapsed="0.000420"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:56.409983" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:56.409746" elapsed="0.000295"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:56.410541" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:56.410240" elapsed="0.000327"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:56.410065" elapsed="0.000538"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:56.409727" elapsed="0.000897"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:56.411185" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:56.410800" elapsed="0.000413"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:56.411521" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:56.411284" elapsed="0.000294"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:56.412058" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:56.411765" elapsed="0.000318"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:56.411602" elapsed="0.000517"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:56.411265" elapsed="0.000875"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:51:56.412306" elapsed="0.000344"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:51:56.413118" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:56.412814" elapsed="0.000331"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:51:56.413461" elapsed="0.002236"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:51:56.398292" elapsed="0.017474"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:51:56.415950" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:51:56.415840" elapsed="0.000158"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:56.415819" elapsed="0.000201"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:51:56.424462" level="INFO">${text_normalized} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:51:56.416211" elapsed="0.008282"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:51:56.424544" elapsed="0.000034"/>
</return>
<msg time="2026-04-08T00:51:56.424708" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:51:56.373241" elapsed="0.051493"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:51:56.424797" elapsed="0.000027"/>
</return>
<msg time="2026-04-08T00:51:56.425187" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="PASS" start="2026-04-08T00:51:56.274454" elapsed="0.150774"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Json_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:56.425714" elapsed="0.000027"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:56.425359" elapsed="0.000478"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:56.425326" elapsed="0.000553"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:51:56.425941" elapsed="0.000072"/>
</return>
<arg>session=${session}</arg>
<arg>folder=${RESTCONF_MODULES_DIR}</arg>
<arg>verify=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Add arguments sensible for JSON data, return Get_Templated response text.
Optionally, verification against JSON data (may be iterated) is called.
Only subset of JSON data is verified and returned if JMES path is specified in
file ${folder}/jmespath.expr.</doc>
<status status="PASS" start="2026-04-08T00:51:56.268801" elapsed="0.157447"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:56.264678" elapsed="0.161688"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:56.264508" elapsed="0.161886"/>
</if>
<kw name="Resolve_Shard_Type_Class" owner="ClusterManagement">
<if>
<branch type="IF" condition="'${shard_type}' == 'config'">
<return>
<value>DistributedConfigDatastore</value>
<status status="NOT RUN" start="2026-04-08T00:51:56.427352" elapsed="0.000049"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:51:56.427101" elapsed="0.000345"/>
</branch>
<branch type="ELSE IF" condition="'${shard_type}' == 'operational'">
<return>
<value>DistributedOperationalDatastore</value>
<status status="PASS" start="2026-04-08T00:51:56.427734" elapsed="0.000071"/>
</return>
<status status="PASS" start="2026-04-08T00:51:56.427504" elapsed="0.000350"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:56.427068" elapsed="0.000849"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized shard type: ${shard_type}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:56.428169" elapsed="0.000071"/>
</kw>
<msg time="2026-04-08T00:51:56.428382" level="INFO">${type_class} = DistributedOperationalDatastore</msg>
<var>${type_class}</var>
<arg>shard_type=${shard_type}</arg>
<doc>Simple lookup for class name corresponding to desired type.</doc>
<status status="PASS" start="2026-04-08T00:51:56.426683" elapsed="0.001725"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:56.429304" level="INFO">${cluster_index} = 2</msg>
<var>${cluster_index}</var>
<arg>${member_index}+${NODE_ROLE_INDEX_START}-1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:56.428582" elapsed="0.000750"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:56.430568" level="INFO">${uri} = jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-topology-operational,type=DistributedOperationalDatastore</msg>
<var>${uri}</var>
<arg>${JOLOKIA_READ_URI}:Category=Shards,name=member-${cluster_index}-shard-${shard_name}-${shard_type},type=${type_class}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:56.429491" elapsed="0.001106"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:56.437696" level="INFO">jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-topology-operational,type=DistributedOperationalDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:56.437404" elapsed="0.000376"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:56.438485" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:56.438025" elapsed="0.000544"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:51:56.447019" level="INFO">GET Request : url=http://10.30.170.131:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-topology-operational,type=DistributedOperationalDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-topology-operational,type=DistributedOperationalDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:51:56.447095" level="INFO">GET Response : url=http://10.30.170.131:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-topology-operational,type=DistributedOperationalDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Wed, 08 Apr 2026 00:51:56 GMT', 'Expires': 'Tue, 07 Apr 2026 23:51:56 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-2-shard-topology-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"ReadWriteTransactionCount":0,"SnapshotIndex":172,"InMemoryJournalLogSize":1,"ReplicatedToAllIndex":172,"Leader":"member-1-shard-topology-operational","LastIndex":173,"RaftState":"Follower","LastCommittedTransactionTime":"1970-01-01 00:00:00.000","LastApplied":173,"PeerAddresses":"member-1-shard-topology-operational: pekko:\/\/opendaylight-cluster-data@10.30.170.48:2550\/user\/shardmanager-operational\/member-1-shard-topology-operational, member-3-shard-topology-operational: pekko:\/\/opendaylight-cluster-data@10.30.171.110:2550\/user\/shardmanager-operational\/member-3-shard-topology-operational","LastLogIndex":173,"LastLeadershipChangeTime":"2026-04-08 00:46:45.981","FollowerInitialSyncStatus":true,"FollowerInfo":[],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"338.9 μs","CurrentTerm":2,"LastTerm":2,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-topology-operational","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":0,"TxCohortCacheSize":0,"PeerVotingStates":"member-1-shard-topology-operational: true, member-3-shard-topology-operational: true","LastLogTerm":2,"StatRetrievalError":null,"CommitIndex":173,"SnapshotTerm":2,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-2-shard-topology-operational","LeadershipChangeCount":1,"InMemoryJournalDataSize":32666},"timestamp":1775609516,"status":200} 
 </msg>
<msg time="2026-04-08T00:51:56.447245" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:51:56.440669" elapsed="0.006610"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:56.438716" elapsed="0.008617"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:56.447601" elapsed="0.000029"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:56.447392" elapsed="0.000292"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:56.438669" elapsed="0.009066"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:56.453939" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-2-shard-topology-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"ReadWriteTransactionCount":0,"SnapshotIndex":172,"InMemoryJournalLogSize":1,"ReplicatedToAllIndex":172,"Leader":"member-1-shard-topology-operational","LastIndex":173,"RaftState":"Follower","LastCommittedTransactionTime":"1970-01-01 00:00:00.000","LastApplied":173,"PeerAddresses":"member-1-shard-topology-operational: pekko:\/\/opendaylight-cluster-data@10.30.170.48:2550\/user\/shardmanager-operational\/member-1-shard-topology-operational, member-3-shard-topology-operational: pekko:\/\/opendaylight-cluster-data@10.30.171.110:2550\/user\/shardmanager-operational\/member-3-shard-topology-operational","LastLogIndex":173,"LastLeadershipChangeTime":"2026-04-08 00:46:45.981","FollowerInitialSyncStatus":true,"FollowerInfo":[],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"338.9 μs","CurrentTerm":2,"LastTerm":2,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-topology-operational","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":0,"TxCohortCacheSize":0,"PeerVotingStates":"member-1-shard-topology-operational: true, member-3-shard-topology-operational: true","LastLogTerm":2,"StatRetrievalError":null,"CommitIndex":173,"SnapshotTerm":2,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-2-shard-topology-operational","LeadershipChangeCount":1,"InMemoryJournalDataSize":32666},"timestamp":1775609516,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:56.448943" elapsed="0.005083"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:56.448676" elapsed="0.005402"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:56.448655" elapsed="0.005458"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:56.457770" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:56.454541" elapsed="0.003295"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:56.454221" elapsed="0.003665"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:56.454194" elapsed="0.003726"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:56.458718" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:56.458173" elapsed="0.000584"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:56.459219" elapsed="0.000032"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:56.458864" elapsed="0.000439"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:56.459984" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:56.459562" elapsed="0.000459"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:56.459336" elapsed="0.000736"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:56.458838" elapsed="0.001264"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:56.460889" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:56.460374" elapsed="0.000553"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:56.461445" elapsed="0.000043"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:56.461067" elapsed="0.000476"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:56.462222" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:56.461794" elapsed="0.000453"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:56.461576" elapsed="0.000708"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:56.461040" elapsed="0.001265"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:51:56.462459" elapsed="0.000349"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:51:56.463278" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:56.462973" elapsed="0.000332"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:51:56.463461" elapsed="0.002224"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:51:56.448212" elapsed="0.017541"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:51:56.466033" elapsed="0.000021"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:51:56.465912" elapsed="0.000174"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:56.465865" elapsed="0.000261"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:51:56.469126" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-2-shard-topology-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:51:56.466390" elapsed="0.002804"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:51:56.469280" elapsed="0.000067"/>
</return>
<msg time="2026-04-08T00:51:56.469646" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-2-shard-topology-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:51:56.432294" elapsed="0.037477"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:51:56.469878" elapsed="0.000035"/>
</return>
<msg time="2026-04-08T00:51:56.470183" level="INFO">${data_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-2-shard-topology-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp...</msg>
<var>${data_text}</var>
<arg>uri=${uri}</arg>
<arg>session=${session}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-08T00:51:56.430819" elapsed="0.039393"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:56.472380" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-2-shard-topology-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 17756095...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:56.471297" elapsed="0.001178"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-08T00:51:56.472562" elapsed="0.000031"/>
</return>
<msg time="2026-04-08T00:51:56.472862" level="INFO">${data_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-2-shard-topology-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 17756095...</msg>
<var>${data_object}</var>
<arg>${data_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-08T00:51:56.470436" elapsed="0.002455"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:51:56.473447" level="INFO">${value} = {'AbortTransactionsCount': 0, 'CommitIndex': 173, 'CommittedTransactionsCount': 0, 'CurrentTerm': 2, 'FailedReadTransactionsCount': 0, 'FailedTransactionsCount': 0, 'FollowerInfo': [], 'FollowerInitia...</msg>
<var>${value}</var>
<arg>${data_object}</arg>
<arg>value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:51:56.473091" elapsed="0.000385"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:51:56.474024" level="INFO">${raft_property} = Follower</msg>
<var>${raft_property}</var>
<arg>${value}</arg>
<arg>${property}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:51:56.473637" elapsed="0.000414"/>
</kw>
<return>
<value>${raft_property}</value>
<status status="PASS" start="2026-04-08T00:51:56.474098" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:51:56.474270" level="INFO">${raft_state} = Follower</msg>
<var>${raft_state}</var>
<arg>RaftState</arg>
<arg>${shard_name}</arg>
<arg>${shard_type}</arg>
<arg>${member_index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft property.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T00:51:56.261825" elapsed="0.212470"/>
</kw>
<return>
<value>${raft_state}</value>
<status status="PASS" start="2026-04-08T00:51:56.474354" elapsed="0.000026"/>
</return>
<msg time="2026-04-08T00:51:56.474501" level="INFO">${raft_state} = Follower</msg>
<var>${raft_state}</var>
<arg>shard_name=${shard_name}</arg>
<arg>shard_type=${ds_type}</arg>
<arg>member_index=${index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft status.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T00:51:56.261037" elapsed="0.213488"/>
</kw>
<if>
<branch type="IF" condition="'Follower' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${follower_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-08T00:51:56.474821" elapsed="0.000195"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:56.474606" elapsed="0.000450"/>
</branch>
<branch type="ELSE IF" condition="'Leader' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${leader_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:56.475251" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:56.475080" elapsed="0.000230"/>
</branch>
<branch type="ELSE IF" condition="${validate}">
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized Raft state: ${raft_state}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:56.475472" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:56.475332" elapsed="0.000192"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:56.474588" elapsed="0.000958"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T00:51:56.260872" elapsed="0.214698"/>
</iter>
<iter>
<kw name="Get_Raft_State_Of_Shard_At_Member" owner="ClusterManagement">
<kw name="Get_Raft_Property_From_Shard_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:56.479485" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:56.478282" elapsed="0.001315"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:51:56.479700" elapsed="0.000037"/>
</return>
<msg time="2026-04-08T00:51:56.480029" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:51:56.477584" elapsed="0.002477"/>
</kw>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Get_As_Json_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:56.531534" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:56.531105" elapsed="0.000460"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:51:56.532432" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:51:56.532136" elapsed="0.000386">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-08T00:51:56.532661" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:51:56.531756" elapsed="0.000931"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:51:56.533299" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:51:56.532857" elapsed="0.000470"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T00:51:56.533633" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-08T00:51:56.533784" level="INFO">${template} = /rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T00:51:56.533491" elapsed="0.000319"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:56.534261" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:56.533988" elapsed="0.000318"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:56.535268" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:56.534993" elapsed="0.000319"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-08T00:51:56.535745" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-08T00:51:56.535472" elapsed="0.000302"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:56.536102" elapsed="0.000022"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:56.536322" elapsed="0.000025"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:56.536496" elapsed="0.000021"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-08T00:51:56.535969" elapsed="0.000585"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-08T00:51:56.535828" elapsed="0.000756"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-08T00:51:56.536628" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:51:56.536819" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-08T00:51:56.534668" elapsed="0.002181"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:56.534378" elapsed="0.002505"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:56.537101" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:56.536908" elapsed="0.000282"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:56.534358" elapsed="0.002861"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:56.537953" level="INFO">${final_text} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:56.537411" elapsed="0.000577"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T00:51:56.538049" elapsed="0.000035"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="PASS" start="2026-04-08T00:51:56.530399" elapsed="0.007802"/>
</kw>
<msg time="2026-04-08T00:51:56.538271" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:51:56.517465" elapsed="0.020866"/>
</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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:56.551027" elapsed="0.000030"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:56.563296" elapsed="0.000029"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:56.575093" elapsed="0.000029"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:56.575307" elapsed="0.000023"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:56.575486" elapsed="0.000021"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:56.575854" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:56.575710" elapsed="0.000201"/>
</branch>
<status status="NOT RUN" start="2026-04-08T00:51:56.575695" elapsed="0.000239"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:56.576074" elapsed="0.000021"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:56.576258" elapsed="0.000021"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:56.576425" elapsed="0.000021"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-08T00:51:56.575664" elapsed="0.000815"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-08T00:51:56.575562" elapsed="0.000943"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:56.576648" elapsed="0.000021"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-08T00:51:56.576725" elapsed="0.000015"/>
</return>
<msg time="2026-04-08T00:51:56.576842" level="INFO">${uri} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-08T00:51:56.513313" elapsed="0.063555"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:51:56.578150" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:51:56.577910" elapsed="0.000321">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-08T00:51:56.578325" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:51:56.577567" elapsed="0.000782"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:56.578714" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:56.578422" elapsed="0.000360"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:56.579286" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:56.578974" elapsed="0.000338"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:56.578806" elapsed="0.000542"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:56.578403" elapsed="0.000967"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:51:56.581632" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:51:56.579520" elapsed="0.002139"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-08T00:51:56.581710" elapsed="0.000031"/>
</return>
<msg time="2026-04-08T00:51:56.581872" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:51:56.577241" elapsed="0.004655"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:51:56.583139" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:51:56.582898" elapsed="0.000327">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-08T00:51:56.583356" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:51:56.582540" elapsed="0.000841"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-08T00:51:56.583591" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-08T00:51:56.583454" elapsed="0.000197"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:56.583435" elapsed="0.000239"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:56.583829" elapsed="0.000029"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:56.584030" elapsed="0.000023"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-08T00:51:56.584099" elapsed="0.000017"/>
</return>
<msg time="2026-04-08T00:51:56.586101" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:51:56.582213" elapsed="0.003916"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:56.587514" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:56.587265" elapsed="0.000293"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:56.587949" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:56.587710" elapsed="0.000281"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:51:56.604370" level="INFO">GET Request : url=http://10.30.171.110:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 path_url=/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0u16rl3earouwvehy59feej101.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:51:56.605371" level="INFO">GET Response : url=http://10.30.171.110:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Transfer-Encoding': 'chunked'} 
 body={"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","hidden-symmetric-keys","encrypted-private-keys","asymmetrically-encrypted-value-format","cms-encrypted-data-format","cleartext-private-keys","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["ssh-client-keepalives","client-ident-hostbased","client-ident-publickey","client-ident-password"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-ex... (set the log level to DEBUG or TRACE to see the full content) 
 </msg>
<msg time="2026-04-08T00:51:56.605814" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:51:56.589996" elapsed="0.015879"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:56.588059" elapsed="0.017912"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:56.606403" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:56.606030" elapsed="0.000523"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:56.588040" elapsed="0.018561"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:56.614218" level="INFO">{"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","hidden-symmetric-keys","encrypted-private-keys","asymmetrically-encrypted-value-format","cms-encrypted-data-format","cleartext-private-keys","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["ssh-client-keepalives","client-ident-hostbased","client-ident-publickey","client-ident-password"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-experimenter-types?revision=2015-10-20","namespace":"urn:opendaylight:openflowplugin:experimenter:types","conformance-type":"import"},{"name":"ietf-ip_2018-02-22","revision":"2018-02-22","schema":"/rests/modules/ietf-ip?revision=2018-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-ip","conformance-type":"import","feature":["ipv6-privacy-autoconf","ipv4-non-contiguous-netmasks"]},{"name":"ietf-tcp-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-client","conformance-type":"import","feature":["local-binding-supported","tcp-client-keepalives"]},{"name":"node-config_2014-10-15","revision":"2014-10-15","schema":"/rests/modules/node-config?revision=2014-10-15","namespace":"urn:opendaylight:module:config","conformance-type":"import"},{"name":"ietf-restconf_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf","conformance-type":"import"},{"name":"ietf-datastores_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-datastores?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-datastores","conformance-type":"import"},{"name":"ietf-yang-patch_2017-02-22","revision":"2017-02-22","schema":"/rests/modules/ietf-yang-patch?revision=2017-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-patch","conformance-type":"import"},{"name":"sal-group_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-group?revision=2013-09-18","namespace":"urn:opendaylight:group:service","conformance-type":"import"},{"name":"odl-codegen-extensions_2024-06-27","revision":"2024-06-27","schema":"/rests/modules/odl-codegen-extensions?revision=2024-06-27","namespace":"urn:opendaylight:yang:extension:codegen","conformance-type":"import"},{"name":"sal-meter_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-meter?revision=2013-09-18","namespace":"urn:opendaylight:meter:service","conformance-type":"import"},{"name":"ietf-interfaces_2018-02-20","revision":"2018-02-20","schema":"/rests/modules/ietf-interfaces?revision=2018-02-20","namespace":"urn:ietf:params:xml:ns:yang:ietf-interfaces","conformance-type":"import","feature":["pre-provisioning","if-mib","arbitrary-names"]},{"name":"opendaylight-l2-types_2013-08-27","revision":"2013-08-27","schema":"/rests/modules/opendaylight-l2-types?revision=2013-08-27","namespace":"urn:opendaylight:l2:types","conformance-type":"import"},{"name":"opendaylight-flow-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-flow-types?revision=2013-10-26","namespace":"urn:opendaylight:flow:types","conformance-type":"import"},{"name":"lldp-speaker-config_2016-05-12","revision":"2016-05-12","schema":"/rests/modules/lldp-speaker-config?revision=2016-05-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker:config","conformance-type":"import"},{"name":"aaa-cert_2015-11-26","revision":"2015-11-26","schema":"/rests/modules/aaa-cert?revision=2015-11-26","namespace":"urn:opendaylight:yang:aaa:cert","conformance-type":"import"},{"name":"openflow-action_2015-02-03","revision":"2015-02-03","schema":"/rests/modules/openflow-action?revision=2015-02-03","namespace":"urn:opendaylight:openflow:common:action","conformance-type":"import"},{"name":"openflow-approved-extensions_2016-08-02","revision":"2016-08-02","schema":"/rests/modules/openflow-approved-extensions?revision=2016-08-02","namespace":"urn:opendaylight:openflow:approved:extensions","conformance-type":"import"},{"name":"nc-notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/nc-notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netmod:notification","conformance-type":"import"},{"name":"ietf-netconf-nmda_2019-01-07","revision":"2019-01-07","schema":"/rests/modules/ietf-netconf-nmda?revision=2019-01-07","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-nmda","conformance-type":"import","feature":["with-defaults","origin"]},{"name":"ietf-tcp-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-common","conformance-type":"import","feature":["keepalives-supported"]},{"name":"network-topology_2013-10-21","revision":"2013-10-21","schema":"/rests/modules/network-topology?revision=2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:network-topology","conformance-type":"import"},{"name":"aaa-encrypt-service-config_2024-02-02","revision":"2024-02-02","schema":"/rests/modules/aaa-encrypt-service-config?revision=2024-02-02","namespace":"config:aaa:authn:encrypt:service:config","conformance-type":"import"},{"name":"openflow-instruction_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-instruction?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:instruction","conformance-type":"import"},{"name":"ietf-tls-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-client","conformance-type":"import","feature":["client-ident-x509-cert","server-auth-x509-cert"]},{"name":"opendaylight-group-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-group-statistics?revision=2013-11-11","namespace":"urn:opendaylight:group:statistics","conformance-type":"import"},{"name":"cluster-admin_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/cluster-admin?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:cluster:admin","conformance-type":"import"},{"name":"opendaylight-flow-statistics_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-flow-statistics?revision=2013-08-19","namespace":"urn:opendaylight:flow:statistics","conformance-type":"import"},{"name":"opendaylight-table-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-table-types?revision=2013-10-26","namespace":"urn:opendaylight:table:types","conformance-type":"import"},{"name":"forwarding-rules-manager-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/forwarding-rules-manager-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:forwardingrules-manager:config","conformance-type":"import"},{"name":"odl-srm-types_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-types?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:types","conformance-type":"import"},{"name":"ietf-x509-cert-to-name_2014-12-10","revision":"2014-12-10","schema":"/rests/modules/ietf-x509-cert-to-name?revision=2014-12-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-x509-cert-to-name","conformance-type":"import"},{"name":"flow-node-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-node-inventory?revision=2013-08-19","namespace":"urn:opendaylight:flow:inventory","conformance-type":"import"},{"name":"flow-errors_2013-11-16","revision":"2013-11-16","schema":"/rests/modules/flow-errors?revision=2013-11-16","namespace":"urn:opendaylight:flow:errors","conformance-type":"import"},{"name":"ietf-netconf_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:netconf:base:1.0","conformance-type":"import","feature":["xpath","url","rollback-on-error","validate","startup","candidate","confirmed-commit","writable-running"]},{"name":"iana-ssh-public-key-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-public-key-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-public-key-algs","conformance-type":"import"},{"name":"aaa-cert-mdsal_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/aaa-cert-mdsal?revision=2016-03-21","namespace":"urn:opendaylight:yang:aaa:cert:mdsal","conformance-type":"import"},{"name":"odl-device-notification_2024-02-18","revision":"2024-02-18","schema":"/rests/modules/odl-device-notification?revision=2024-02-18","namespace":"urn:opendaylight:device:notification","conformance-type":"import"},{"name":"ietf-origin_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-origin?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-origin","conformance-type":"import"},{"name":"openflow-augments_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-augments?revision=2015-02-25","namespace":"urn:opendaylight:openflow:augments","conformance-type":"import"},{"name":"iana-ssh-encryption-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-encryption-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-encryption-algs","conformance-type":"import"},{"name":"ietf-truststore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-truststore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-truststore","conformance-type":"import","feature":["inline-definitions-supported"]},{"name":"distributed-datastore-provider_2025-01-30","revision":"2025-01-30","schema":"/rests/modules/distributed-datastore-provider?revision=2025-01-30","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:distributed-datastore-provider","conformance-type":"import"},{"name":"opendaylight-group-types_2013-10-18","revision":"2013-10-18","schema":"/rests/modules/opendaylight-group-types?revision=2013-10-18","namespace":"urn:opendaylight:group:types","conformance-type":"import"},{"name":"sal-remote-augment_2023-11-03","revision":"2023-11-03","schema":"/rests/modules/sal-remote-augment?revision=2023-11-03","namespace":"urn:sal:restconf:event:subscription","conformance-type":"import"},{"name":"opendaylight-ipv6-arbitrary-bitmask-fields_2016-02-24","revision":"2016-02-24","schema":"/rests/modules/opendaylight-ipv6-arbitrary-bitmask-fields?revision=2016-02-24","namespace":"urn:opendaylight:opendaylight-ipv6-arbitrary-bitmask-fields","conformance-type":"import"},{"name":"sal-flows-batch_2016-03-14","revision":"2016-03-14","schema":"/rests/modules/sal-flows-batch?revision=2016-03-14","namespace":"urn:opendaylight:flows:service","conformance-type":"import"},{"name":"ietf-tls-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-common","conformance-type":"import","feature":["tls12","hello-params","tls13"]},{"name":"openflow-types_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-types?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:types","conformance-type":"import"},{"name":"ietf-netconf-with-defaults_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf-with-defaults?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults","conformance-type":"import"},{"name":"odl-srm-ops_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-ops?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:ops","conformance-type":"import"},{"name":"odl-general-entity_2015-09-30","revision":"2015-09-30","schema":"/rests/modules/odl-general-entity?revision=2015-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:mdsal:core:general-entity","conformance-type":"import"},{"name":"iana-ssh-key-exchange-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-key-exchange-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-key-exchange-algs","conformance-type":"import"},{"name":"node-ssl-connection-error_2019-07-23","revision":"2019-07-23","schema":"/rests/modules/node-ssl-connection-error?revision=2019-07-23","namespace":"urn:opendaylight:node-ssl-connection-error:service","conformance-type":"import"},{"name":"openflow-protocol_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-protocol?revision=2013-07-31","namespace":"urn:opendaylight:openflow:protocol","conformance-type":"import"},{"name":"ietf-udp-server_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-server?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-server","conformance-type":"import"},{"name":"ietf-keystore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-keystore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-keystore","conformance-type":"import","feature":["asymmetric-keys","inline-definitions-supported"]},{"name":"aaa_2016-12-14","revision":"2016-12-14","schema":"/rests/modules/aaa?revision=2016-12-14","namespace":"urn:opendaylight:params:xml:ns:yang:aaa","conformance-type":"import"},{"name":"aaa-cert-rpc_2015-12-15","revision":"2015-12-15","schema":"/rests/modules/aaa-cert-rpc?revision=2015-12-15","namespace":"urn:opendaylight:yang:aaa:cert:rpc","conformance-type":"import"},{"name":"system-notifications_2013-09-27","revision":"2013-09-27","schema":"/rests/modules/system-notifications?revision=2013-09-27","namespace":"urn:opendaylight:openflow:system","conformance-type":"import"},{"name":"sal-flat-batch_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/sal-flat-batch?revision=2016-03-21","namespace":"urn:opendaylight:flat-batch:service","conformance-type":"import"},{"name":"notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netconf:notification:1.0","conformance-type":"import"},{"name":"sal-remote_2014-01-14","revision":"2014-01-14","schema":"/rests/modules/sal-remote?revision=2014-01-14","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:remote","conformance-type":"import"},{"name":"yang-ext_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/yang-ext?revision=2013-07-09","namespace":"urn:opendaylight:yang:extension:yang-ext","conformance-type":"import"},{"name":"opendaylight-multipart-types_2017-01-12","revision":"2017-01-12","schema":"/rests/modules/opendaylight-multipart-types?revision=2017-01-12","namespace":"urn:opendaylight:multipart:types","conformance-type":"import"},{"name":"opendaylight-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-inventory?revision=2013-08-19","namespace":"urn:opendaylight:inventory","conformance-type":"import"},{"name":"sal-queue_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-queue?revision=2015-03-05","namespace":"urn:opendaylight:queue:service","conformance-type":"import"},{"name":"sal-groups-batch_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/sal-groups-batch?revision=2016-03-15","namespace":"urn:opendaylight:groups:service","conformance-type":"import"},{"name":"arbitrator-reconcile_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/arbitrator-reconcile?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:arbitrator-reconcile:service","conformance-type":"import"},{"name":"ietf-yang-metadata_2016-08-05","revision":"2016-08-05","schema":"/rests/modules/ietf-yang-metadata?revision=2016-08-05","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-metadata","conformance-type":"import"},{"name":"opendaylight-arbitrary-bitmask-fields_2016-01-30","revision":"2016-01-30","schema":"/rests/modules/opendaylight-arbitrary-bitmask-fields?revision=2016-01-30","namespace":"urn:opendaylight:arbitrary:bitmask:fields","conformance-type":"import"},{"name":"ietf-udp-client_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-client?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-client","conformance-type":"import","feature":["local-binding"]},{"name":"opendaylight-meter-types_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/opendaylight-meter-types?revision=2013-09-18","namespace":"urn:opendaylight:meter:types","conformance-type":"import"},{"name":"opendaylight-action-types_2013-11-12","revision":"2013-11-12","schema":"/rests/modules/opendaylight-action-types?revision=2013-11-12","namespace":"urn:opendaylight:action:types","conformance-type":"import"},{"name":"sal-role_2015-07-27","revision":"2015-07-27","schema":"/rests/modules/sal-role?revision=2015-07-27","namespace":"urn:opendaylight:role:service","conformance-type":"import"},{"name":"openflow-provider-config_2016-05-10","revision":"2016-05-10","schema":"/rests/modules/openflow-provider-config?revision=2016-05-10","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:provider:config","conformance-type":"import"},{"name":"odl-serviceutils-upgrade_2018-07-02","revision":"2018-07-02","schema":"/rests/modules/odl-serviceutils-upgrade?revision=2018-07-02","namespace":"urn:opendaylight:serviceutils:upgrade","conformance-type":"import"},{"name":"opendaylight-match-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-match-types?revision=2013-10-26","namespace":"urn:opendaylight:model:match:types","conformance-type":"import"},{"name":"ietf-restconf-server_2024-08-14","revision":"2024-08-14","schema":"/rests/modules/ietf-restconf-server?revision=2024-08-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-server","conformance-type":"import","feature":["http-listen","https-listen"]},{"name":"reconciliation-result-state_2017-07-13","revision":"2017-07-13","schema":"/rests/modules/reconciliation-result-state?revision=2017-07-13","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:rf:state","conformance-type":"import"},{"name":"onf-extensions_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/onf-extensions?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf","conformance-type":"import"},{"name":"sal-table_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/sal-table?revision=2013-10-26","namespace":"urn:opendaylight:table:service","conformance-type":"import"},{"name":"iana-http-versions_2026-02-04","revision":"2026-02-04","schema":"/rests/modules/iana-http-versions?revision=2026-02-04","namespace":"urn:ietf:params:xml:ns:yang:iana-http-versions","conformance-type":"import"},{"name":"opendaylight-direct-statistics_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/opendaylight-direct-statistics?revision=2016-05-11","namespace":"urn:opendaylight:direct:statistics","conformance-type":"import"},{"name":"opendaylight-port-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-port-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:port","conformance-type":"import"},{"name":"sal-async-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/sal-async-config?revision=2017-06-19","namespace":"urn:opendaylight:async-config:service","conformance-type":"import"},{"name":"aaa-password-service-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-password-service-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:password:service:config","conformance-type":"import"},{"name":"ietf-yang-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-yang-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-types","conformance-type":"import"},{"name":"opendaylight-queue-statistics_2013-12-16","revision":"2013-12-16","schema":"/rests/modules/opendaylight-queue-statistics?revision=2013-12-16","namespace":"urn:opendaylight:queue:statistics","conformance-type":"import"},{"name":"sal-bundle_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/sal-bundle?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf:bundle:service","conformance-type":"import"},{"name":"ietf-restconf-subscribed-notifications_2019-11-17","revision":"2019-11-17","schema":"/rests/modules/ietf-restconf-subscribed-notifications?revision=2019-11-17","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-subscribed-notifications","conformance-type":"import"},{"name":"sal-meters-batch_2016-03-16","revision":"2016-03-16","schema":"/rests/modules/sal-meters-batch?revision=2016-03-16","namespace":"urn:opendaylight:meters:service","conformance-type":"import"},{"name":"odl-entity-owners","revision":"","schema":"/rests/modules/odl-entity-owners","namespace":"urn:opendaylight:params:xml:ns:yang:controller:entity-owners","conformance-type":"import"},{"name":"sal-experimenter-mp-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-mp-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-mp-message:service","conformance-type":"import"},{"name":"packet-processing_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/packet-processing?revision=2013-07-09","namespace":"urn:opendaylight:packet:service","conformance-type":"import"},{"name":"openflow-configuration_2014-06-30","revision":"2014-06-30","schema":"/rests/modules/openflow-configuration?revision=2014-06-30","namespace":"urn:opendaylight:openflow:config","conformance-type":"import"},{"name":"odl-srm-rpcs_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-rpcs?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:rpc","conformance-type":"import"},{"name":"ietf-netconf-acm_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-netconf-acm?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-acm","conformance-type":"import"},{"name":"iana-crypt-hash_2014-08-06","revision":"2014-08-06","schema":"/rests/modules/iana-crypt-hash?revision=2014-08-06","namespace":"urn:ietf:params:xml:ns:yang:iana-crypt-hash","conformance-type":"import","feature":["crypt-hash-sha-512","crypt-hash-sha-256","crypt-hash-md5"]},{"name":"openflow-extensible-match_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-extensible-match?revision=2015-02-25","namespace":"urn:opendaylight:openflow:oxm","conformance-type":"import"}],"module-set-id":"2"}}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:56.608871" elapsed="0.005690"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:56.608381" elapsed="0.006216"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:56.608338" elapsed="0.006285"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:56.617064" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:56.614904" elapsed="0.002205"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:56.614681" elapsed="0.002463"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:56.614663" elapsed="0.002522"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:56.617729" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:56.617351" elapsed="0.000405"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:56.618059" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:56.617826" elapsed="0.000290"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:56.618617" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:56.618322" elapsed="0.000320"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:56.618139" elapsed="0.000539"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:56.617808" elapsed="0.000891"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:56.619231" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:56.618861" elapsed="0.000396"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:56.619561" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:56.619327" elapsed="0.000291"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:56.620089" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:56.619800" elapsed="0.000314"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:56.619641" elapsed="0.000509"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:56.619308" elapsed="0.000880"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:51:56.620335" elapsed="0.000342"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:51:56.621133" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:56.620840" elapsed="0.000466"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:51:56.621469" elapsed="0.002213"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:51:56.607404" elapsed="0.016345"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:51:56.623931" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:51:56.623822" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:56.623802" elapsed="0.000196"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:51:56.632321" level="INFO">${text_normalized} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:51:56.624141" elapsed="0.008210"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:51:56.632403" elapsed="0.000034"/>
</return>
<msg time="2026-04-08T00:51:56.632567" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:51:56.586450" elapsed="0.046144"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:51:56.632657" elapsed="0.000027"/>
</return>
<msg time="2026-04-08T00:51:56.633037" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="PASS" start="2026-04-08T00:51:56.490717" elapsed="0.142358"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Json_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:56.633583" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:56.633229" elapsed="0.000483"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:56.633194" elapsed="0.000559"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:51:56.633813" elapsed="0.000071"/>
</return>
<arg>session=${session}</arg>
<arg>folder=${RESTCONF_MODULES_DIR}</arg>
<arg>verify=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Add arguments sensible for JSON data, return Get_Templated response text.
Optionally, verification against JSON data (may be iterated) is called.
Only subset of JSON data is verified and returned if JMES path is specified in
file ${folder}/jmespath.expr.</doc>
<status status="PASS" start="2026-04-08T00:51:56.485078" elapsed="0.148999"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:56.480149" elapsed="0.154057"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:56.480126" elapsed="0.154108"/>
</if>
<kw name="Resolve_Shard_Type_Class" owner="ClusterManagement">
<if>
<branch type="IF" condition="'${shard_type}' == 'config'">
<return>
<value>DistributedConfigDatastore</value>
<status status="NOT RUN" start="2026-04-08T00:51:56.635130" elapsed="0.000065"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:51:56.634906" elapsed="0.000335"/>
</branch>
<branch type="ELSE IF" condition="'${shard_type}' == 'operational'">
<return>
<value>DistributedOperationalDatastore</value>
<status status="PASS" start="2026-04-08T00:51:56.635521" elapsed="0.000071"/>
</return>
<status status="PASS" start="2026-04-08T00:51:56.635298" elapsed="0.000341"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:56.634874" elapsed="0.000824"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized shard type: ${shard_type}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:56.635927" elapsed="0.000067"/>
</kw>
<msg time="2026-04-08T00:51:56.636130" level="INFO">${type_class} = DistributedOperationalDatastore</msg>
<var>${type_class}</var>
<arg>shard_type=${shard_type}</arg>
<doc>Simple lookup for class name corresponding to desired type.</doc>
<status status="PASS" start="2026-04-08T00:51:56.634499" elapsed="0.001672"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:56.637033" level="INFO">${cluster_index} = 3</msg>
<var>${cluster_index}</var>
<arg>${member_index}+${NODE_ROLE_INDEX_START}-1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:56.636348" elapsed="0.000713"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:56.638252" level="INFO">${uri} = jolokia/read/org.opendaylight.controller:Category=Shards,name=member-3-shard-topology-operational,type=DistributedOperationalDatastore</msg>
<var>${uri}</var>
<arg>${JOLOKIA_READ_URI}:Category=Shards,name=member-${cluster_index}-shard-${shard_name}-${shard_type},type=${type_class}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:56.637264" elapsed="0.001017"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:56.645202" level="INFO">jolokia/read/org.opendaylight.controller:Category=Shards,name=member-3-shard-topology-operational,type=DistributedOperationalDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:56.644891" elapsed="0.000397"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:56.645811" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:56.645529" elapsed="0.000364"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:51:56.653642" level="INFO">GET Request : url=http://10.30.171.110:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-3-shard-topology-operational,type=DistributedOperationalDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-3-shard-topology-operational,type=DistributedOperationalDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:51:56.653703" level="INFO">GET Response : url=http://10.30.171.110:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-3-shard-topology-operational,type=DistributedOperationalDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Wed, 08 Apr 2026 00:51:56 GMT', 'Expires': 'Tue, 07 Apr 2026 23:51:56 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-3-shard-topology-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"ReadWriteTransactionCount":0,"SnapshotIndex":172,"InMemoryJournalLogSize":1,"ReplicatedToAllIndex":172,"Leader":"member-1-shard-topology-operational","LastIndex":173,"RaftState":"Follower","LastApplied":173,"LastCommittedTransactionTime":"1970-01-01 00:00:00.000","PeerAddresses":"member-1-shard-topology-operational: pekko:\/\/opendaylight-cluster-data@10.30.170.48:2550\/user\/shardmanager-operational\/member-1-shard-topology-operational, member-2-shard-topology-operational: pekko:\/\/opendaylight-cluster-data@10.30.170.131:2550\/user\/shardmanager-operational\/member-2-shard-topology-operational","LastLogIndex":173,"LastLeadershipChangeTime":"2026-04-08 00:46:45.978","FollowerInitialSyncStatus":true,"FollowerInfo":[],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"272.4 μs","CurrentTerm":2,"LastTerm":2,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-topology-operational","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":0,"TxCohortCacheSize":0,"PeerVotingStates":"member-1-shard-topology-operational: true, member-2-shard-topology-operational: true","LastLogTerm":2,"StatRetrievalError":null,"CommitIndex":173,"SnapshotTerm":2,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-3-shard-topology-operational","LeadershipChangeCount":1,"InMemoryJournalDataSize":32666},"timestamp":1775609516,"status":200} 
 </msg>
<msg time="2026-04-08T00:51:56.653841" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:51:56.648084" elapsed="0.005793"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:56.646038" elapsed="0.007900"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:56.654307" elapsed="0.000034"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:56.654002" elapsed="0.000399"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:56.645992" elapsed="0.008463"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:56.659316" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-3-shard-topology-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"ReadWriteTransactionCount":0,"SnapshotIndex":172,"InMemoryJournalLogSize":1,"ReplicatedToAllIndex":172,"Leader":"member-1-shard-topology-operational","LastIndex":173,"RaftState":"Follower","LastApplied":173,"LastCommittedTransactionTime":"1970-01-01 00:00:00.000","PeerAddresses":"member-1-shard-topology-operational: pekko:\/\/opendaylight-cluster-data@10.30.170.48:2550\/user\/shardmanager-operational\/member-1-shard-topology-operational, member-2-shard-topology-operational: pekko:\/\/opendaylight-cluster-data@10.30.170.131:2550\/user\/shardmanager-operational\/member-2-shard-topology-operational","LastLogIndex":173,"LastLeadershipChangeTime":"2026-04-08 00:46:45.978","FollowerInitialSyncStatus":true,"FollowerInfo":[],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"272.4 μs","CurrentTerm":2,"LastTerm":2,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-topology-operational","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":0,"TxCohortCacheSize":0,"PeerVotingStates":"member-1-shard-topology-operational: true, member-2-shard-topology-operational: true","LastLogTerm":2,"StatRetrievalError":null,"CommitIndex":173,"SnapshotTerm":2,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-3-shard-topology-operational","LeadershipChangeCount":1,"InMemoryJournalDataSize":32666},"timestamp":1775609516,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:56.655975" elapsed="0.003428"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:56.655618" elapsed="0.003835"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:56.655592" elapsed="0.003897"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:56.662906" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:56.659881" elapsed="0.003091"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:56.659569" elapsed="0.003451"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:56.659545" elapsed="0.003509"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:56.663845" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:56.663314" elapsed="0.000569"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:56.664336" elapsed="0.000032"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:56.663984" elapsed="0.000435"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:56.665126" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:56.664674" elapsed="0.000509"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:56.664451" elapsed="0.000785"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:56.663958" elapsed="0.001308"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:56.666059" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:56.665484" elapsed="0.000602"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:56.666417" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:56.666177" elapsed="0.000297"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:56.666950" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:56.666658" elapsed="0.000318"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:56.666497" elapsed="0.000514"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:56.666139" elapsed="0.000893"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:51:56.667199" elapsed="0.000346"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:51:56.667982" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:56.667708" elapsed="0.000299"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:51:56.668174" elapsed="0.002159"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:51:56.655012" elapsed="0.015383"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:51:56.670660" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:51:56.670551" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:56.670505" elapsed="0.000238"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:51:56.673710" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-3-shard-topology-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:51:56.670974" elapsed="0.002790"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:51:56.673847" elapsed="0.000063"/>
</return>
<msg time="2026-04-08T00:51:56.674218" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-3-shard-topology-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:51:56.639865" elapsed="0.034476"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:51:56.674447" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:51:56.674718" level="INFO">${data_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-3-shard-topology-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp...</msg>
<var>${data_text}</var>
<arg>uri=${uri}</arg>
<arg>session=${session}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-08T00:51:56.638496" elapsed="0.036249"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:56.676883" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-3-shard-topology-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 17756095...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:56.675790" elapsed="0.001193"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-08T00:51:56.677069" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:51:56.677385" level="INFO">${data_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-3-shard-topology-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 17756095...</msg>
<var>${data_object}</var>
<arg>${data_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-08T00:51:56.674967" elapsed="0.002446"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:51:56.677882" level="INFO">${value} = {'AbortTransactionsCount': 0, 'CommitIndex': 173, 'CommittedTransactionsCount': 0, 'CurrentTerm': 2, 'FailedReadTransactionsCount': 0, 'FailedTransactionsCount': 0, 'FollowerInfo': [], 'FollowerInitia...</msg>
<var>${value}</var>
<arg>${data_object}</arg>
<arg>value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:51:56.677573" elapsed="0.000337"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:51:56.678465" level="INFO">${raft_property} = Follower</msg>
<var>${raft_property}</var>
<arg>${value}</arg>
<arg>${property}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:51:56.678067" elapsed="0.000425"/>
</kw>
<return>
<value>${raft_property}</value>
<status status="PASS" start="2026-04-08T00:51:56.678539" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:51:56.678693" level="INFO">${raft_state} = Follower</msg>
<var>${raft_state}</var>
<arg>RaftState</arg>
<arg>${shard_name}</arg>
<arg>${shard_type}</arg>
<arg>${member_index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft property.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T00:51:56.476725" elapsed="0.201993"/>
</kw>
<return>
<value>${raft_state}</value>
<status status="PASS" start="2026-04-08T00:51:56.678776" elapsed="0.000027"/>
</return>
<msg time="2026-04-08T00:51:56.678930" level="INFO">${raft_state} = Follower</msg>
<var>${raft_state}</var>
<arg>shard_name=${shard_name}</arg>
<arg>shard_type=${ds_type}</arg>
<arg>member_index=${index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft status.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T00:51:56.475899" elapsed="0.203055"/>
</kw>
<if>
<branch type="IF" condition="'Follower' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${follower_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-08T00:51:56.679264" elapsed="0.000192"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:56.679033" elapsed="0.000461"/>
</branch>
<branch type="ELSE IF" condition="'Leader' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${leader_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:56.679661" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:56.679518" elapsed="0.000197"/>
</branch>
<branch type="ELSE IF" condition="${validate}">
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized Raft state: ${raft_state}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:56.679875" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:56.679738" elapsed="0.000188"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:56.679016" elapsed="0.000932"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T00:51:56.475733" elapsed="0.204239"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-08T00:51:56.068539" elapsed="0.611467"/>
</for>
<return>
<value>${leader_list}</value>
<value>${follower_list}</value>
<status status="PASS" start="2026-04-08T00:51:56.680048" elapsed="0.000026"/>
</return>
<msg time="2026-04-08T00:51:56.680263" level="INFO">${leader_list} = [1]</msg>
<msg time="2026-04-08T00:51:56.680309" level="INFO">${follower_list} = [2, 3]</msg>
<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="PASS" start="2026-04-08T00:51:56.064502" elapsed="0.615830"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T00:51:56.680769" level="INFO">Length is 1.</msg>
<msg time="2026-04-08T00:51:56.680855" level="INFO">${leader_count} = 1</msg>
<var>${leader_count}</var>
<arg>${leader_list}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T00:51:56.680504" elapsed="0.000376"/>
</kw>
<if>
<branch type="IF" condition="${leader_count} &lt; 1">
<kw name="Fail" owner="BuiltIn">
<arg>No leader found.</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:56.681256" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:56.680948" elapsed="0.000364"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:56.680930" elapsed="0.000405"/>
</if>
<kw name="Length Should Be" owner="BuiltIn">
<msg time="2026-04-08T00:51:56.683378" level="INFO">Length is 1.</msg>
<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="PASS" start="2026-04-08T00:51:56.681467" elapsed="0.001957"/>
</kw>
<kw name="Get From List" owner="Collections">
<msg time="2026-04-08T00:51:56.683808" level="INFO">${leader} = 1</msg>
<var>${leader}</var>
<arg>${leader_list}</arg>
<arg>0</arg>
<doc>Returns the value specified with an ``index`` from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:51:56.683623" elapsed="0.000211"/>
</kw>
<return>
<value>${leader}</value>
<value>${follower_list}</value>
<status status="PASS" start="2026-04-08T00:51:56.683881" elapsed="0.000028"/>
</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="PASS" start="2026-04-08T00:51:56.061989" elapsed="0.622044"/>
</kw>
<var name="${shard_name}">topology</var>
<status status="PASS" start="2026-04-08T00:51:56.061768" elapsed="0.622312"/>
</iter>
<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-04-08T00:51:56.688440" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:51:56.688040" elapsed="0.000427"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:51:56.688963" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:51:56.688625" elapsed="0.000364"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:51:56.689034" elapsed="0.000027"/>
</return>
<msg time="2026-04-08T00:51:56.689202" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:51:56.687672" elapsed="0.001556"/>
</kw>
<kw name="Sort List" owner="Collections">
<arg>${index_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="PASS" start="2026-04-08T00:51:56.689380" elapsed="0.000152"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:51:56.690023" level="INFO">${ds_type} = operational</msg>
<var>${ds_type}</var>
<arg>'${shard_type}' != 'config'</arg>
<arg>operational</arg>
<arg>config</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:51:56.689688" elapsed="0.000360"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:51:56.690456" level="INFO">${leader_list} = []</msg>
<var>${leader_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:51:56.690220" elapsed="0.000261"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:51:56.690855" level="INFO">${follower_list} = []</msg>
<var>${follower_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:51:56.690626" elapsed="0.000254"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_Raft_State_Of_Shard_At_Member" owner="ClusterManagement">
<kw name="Get_Raft_Property_From_Shard_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:56.694198" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:56.693348" elapsed="0.000944"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:51:56.694372" elapsed="0.000031"/>
</return>
<msg time="2026-04-08T00:51:56.694639" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:51:56.692783" elapsed="0.001882"/>
</kw>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Get_As_Json_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:56.742461" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:56.742073" elapsed="0.000416"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:51:56.743244" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:51:56.742980" elapsed="0.000339">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-08T00:51:56.743411" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:51:56.742648" elapsed="0.000788"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:51:56.743975" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:51:56.743597" elapsed="0.000405"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T00:51:56.744310" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-08T00:51:56.744458" level="INFO">${template} = /rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T00:51:56.744173" elapsed="0.000311"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:56.744949" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:56.744673" elapsed="0.000322"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:56.745939" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:56.745686" elapsed="0.000297"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-08T00:51:56.746425" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-08T00:51:56.746141" elapsed="0.000310"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:56.746761" elapsed="0.000022"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:56.746962" elapsed="0.000023"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:56.747134" elapsed="0.000035"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-08T00:51:56.746630" elapsed="0.000577"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-08T00:51:56.746497" elapsed="0.000740"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-08T00:51:56.747279" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:51:56.747436" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-08T00:51:56.745369" elapsed="0.002092"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:56.745064" elapsed="0.002429"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:56.747662" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:56.747516" elapsed="0.000201"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:56.745044" elapsed="0.002693"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:56.748319" level="INFO">${final_text} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:56.747877" elapsed="0.000469"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T00:51:56.748393" 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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="PASS" start="2026-04-08T00:51:56.741467" elapsed="0.007048"/>
</kw>
<msg time="2026-04-08T00:51:56.748567" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:51:56.729612" elapsed="0.019007"/>
</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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:56.760665" elapsed="0.000029"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:56.772362" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:56.783746" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:56.783937" elapsed="0.000021"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:56.784110" elapsed="0.000021"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:56.784489" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:56.784342" elapsed="0.000237"/>
</branch>
<status status="NOT RUN" start="2026-04-08T00:51:56.784328" elapsed="0.000275"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:56.784744" elapsed="0.000021"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:56.784935" elapsed="0.000021"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:56.785102" elapsed="0.000020"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-08T00:51:56.784298" elapsed="0.000871"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-08T00:51:56.784197" elapsed="0.001000"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:56.785341" elapsed="0.000021"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-08T00:51:56.785416" elapsed="0.000015"/>
</return>
<msg time="2026-04-08T00:51:56.785529" level="INFO">${uri} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-08T00:51:56.725657" elapsed="0.059898"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:51:56.786778" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:51:56.786540" elapsed="0.000303">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-08T00:51:56.786934" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:51:56.786202" elapsed="0.000756"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:56.787285" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:56.787030" elapsed="0.000312"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:56.787818" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:56.787527" elapsed="0.000319"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:56.787366" elapsed="0.000514"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:56.787012" elapsed="0.000890"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:51:56.790108" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:51:56.788047" elapsed="0.002087"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-08T00:51:56.790198" elapsed="0.000031"/>
</return>
<msg time="2026-04-08T00:51:56.790352" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:51:56.785866" elapsed="0.004511"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:51:56.791564" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:51:56.791332" elapsed="0.000294">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-08T00:51:56.791717" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:51:56.790986" elapsed="0.000754"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-08T00:51:56.791946" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-08T00:51:56.791811" elapsed="0.000192"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:56.791792" elapsed="0.000234"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:56.792182" elapsed="0.000023"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:56.792352" elapsed="0.000020"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-08T00:51:56.792416" elapsed="0.000015"/>
</return>
<msg time="2026-04-08T00:51:56.794335" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:51:56.790669" elapsed="0.003692"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:56.795747" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:56.795502" elapsed="0.000290"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:56.796193" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:56.795940" elapsed="0.000297"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:51:56.809777" level="INFO">GET Request : url=http://10.30.170.48:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 path_url=/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01ju7g9ih47awu1dako8be5k84o113.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:51:56.810702" level="INFO">GET Response : url=http://10.30.170.48:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Transfer-Encoding': 'chunked'} 
 body={"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","hidden-symmetric-keys","encrypted-private-keys","asymmetrically-encrypted-value-format","cms-encrypted-data-format","cleartext-private-keys","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["ssh-client-keepalives","client-ident-hostbased","client-ident-publickey","client-ident-password"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-ex... (set the log level to DEBUG or TRACE to see the full content) 
 </msg>
<msg time="2026-04-08T00:51:56.811136" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:51:56.798228" elapsed="0.012998"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:56.796303" elapsed="0.015020"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:56.811718" elapsed="0.000049"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:56.811382" elapsed="0.000478"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:56.796285" elapsed="0.015621"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:56.819910" level="INFO">{"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","hidden-symmetric-keys","encrypted-private-keys","asymmetrically-encrypted-value-format","cms-encrypted-data-format","cleartext-private-keys","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["ssh-client-keepalives","client-ident-hostbased","client-ident-publickey","client-ident-password"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-experimenter-types?revision=2015-10-20","namespace":"urn:opendaylight:openflowplugin:experimenter:types","conformance-type":"import"},{"name":"ietf-ip_2018-02-22","revision":"2018-02-22","schema":"/rests/modules/ietf-ip?revision=2018-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-ip","conformance-type":"import","feature":["ipv6-privacy-autoconf","ipv4-non-contiguous-netmasks"]},{"name":"ietf-tcp-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-client","conformance-type":"import","feature":["local-binding-supported","tcp-client-keepalives"]},{"name":"node-config_2014-10-15","revision":"2014-10-15","schema":"/rests/modules/node-config?revision=2014-10-15","namespace":"urn:opendaylight:module:config","conformance-type":"import"},{"name":"ietf-restconf_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf","conformance-type":"import"},{"name":"ietf-datastores_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-datastores?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-datastores","conformance-type":"import"},{"name":"ietf-yang-patch_2017-02-22","revision":"2017-02-22","schema":"/rests/modules/ietf-yang-patch?revision=2017-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-patch","conformance-type":"import"},{"name":"sal-group_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-group?revision=2013-09-18","namespace":"urn:opendaylight:group:service","conformance-type":"import"},{"name":"odl-codegen-extensions_2024-06-27","revision":"2024-06-27","schema":"/rests/modules/odl-codegen-extensions?revision=2024-06-27","namespace":"urn:opendaylight:yang:extension:codegen","conformance-type":"import"},{"name":"sal-meter_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-meter?revision=2013-09-18","namespace":"urn:opendaylight:meter:service","conformance-type":"import"},{"name":"ietf-interfaces_2018-02-20","revision":"2018-02-20","schema":"/rests/modules/ietf-interfaces?revision=2018-02-20","namespace":"urn:ietf:params:xml:ns:yang:ietf-interfaces","conformance-type":"import","feature":["pre-provisioning","if-mib","arbitrary-names"]},{"name":"opendaylight-l2-types_2013-08-27","revision":"2013-08-27","schema":"/rests/modules/opendaylight-l2-types?revision=2013-08-27","namespace":"urn:opendaylight:l2:types","conformance-type":"import"},{"name":"opendaylight-flow-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-flow-types?revision=2013-10-26","namespace":"urn:opendaylight:flow:types","conformance-type":"import"},{"name":"lldp-speaker-config_2016-05-12","revision":"2016-05-12","schema":"/rests/modules/lldp-speaker-config?revision=2016-05-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker:config","conformance-type":"import"},{"name":"aaa-cert_2015-11-26","revision":"2015-11-26","schema":"/rests/modules/aaa-cert?revision=2015-11-26","namespace":"urn:opendaylight:yang:aaa:cert","conformance-type":"import"},{"name":"openflow-action_2015-02-03","revision":"2015-02-03","schema":"/rests/modules/openflow-action?revision=2015-02-03","namespace":"urn:opendaylight:openflow:common:action","conformance-type":"import"},{"name":"openflow-approved-extensions_2016-08-02","revision":"2016-08-02","schema":"/rests/modules/openflow-approved-extensions?revision=2016-08-02","namespace":"urn:opendaylight:openflow:approved:extensions","conformance-type":"import"},{"name":"nc-notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/nc-notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netmod:notification","conformance-type":"import"},{"name":"ietf-netconf-nmda_2019-01-07","revision":"2019-01-07","schema":"/rests/modules/ietf-netconf-nmda?revision=2019-01-07","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-nmda","conformance-type":"import","feature":["with-defaults","origin"]},{"name":"ietf-tcp-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-common","conformance-type":"import","feature":["keepalives-supported"]},{"name":"network-topology_2013-10-21","revision":"2013-10-21","schema":"/rests/modules/network-topology?revision=2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:network-topology","conformance-type":"import"},{"name":"aaa-encrypt-service-config_2024-02-02","revision":"2024-02-02","schema":"/rests/modules/aaa-encrypt-service-config?revision=2024-02-02","namespace":"config:aaa:authn:encrypt:service:config","conformance-type":"import"},{"name":"openflow-instruction_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-instruction?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:instruction","conformance-type":"import"},{"name":"ietf-tls-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-client","conformance-type":"import","feature":["client-ident-x509-cert","server-auth-x509-cert"]},{"name":"opendaylight-group-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-group-statistics?revision=2013-11-11","namespace":"urn:opendaylight:group:statistics","conformance-type":"import"},{"name":"cluster-admin_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/cluster-admin?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:cluster:admin","conformance-type":"import"},{"name":"opendaylight-flow-statistics_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-flow-statistics?revision=2013-08-19","namespace":"urn:opendaylight:flow:statistics","conformance-type":"import"},{"name":"opendaylight-table-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-table-types?revision=2013-10-26","namespace":"urn:opendaylight:table:types","conformance-type":"import"},{"name":"forwarding-rules-manager-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/forwarding-rules-manager-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:forwardingrules-manager:config","conformance-type":"import"},{"name":"odl-srm-types_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-types?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:types","conformance-type":"import"},{"name":"ietf-x509-cert-to-name_2014-12-10","revision":"2014-12-10","schema":"/rests/modules/ietf-x509-cert-to-name?revision=2014-12-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-x509-cert-to-name","conformance-type":"import"},{"name":"flow-node-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-node-inventory?revision=2013-08-19","namespace":"urn:opendaylight:flow:inventory","conformance-type":"import"},{"name":"flow-errors_2013-11-16","revision":"2013-11-16","schema":"/rests/modules/flow-errors?revision=2013-11-16","namespace":"urn:opendaylight:flow:errors","conformance-type":"import"},{"name":"ietf-netconf_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:netconf:base:1.0","conformance-type":"import","feature":["xpath","url","rollback-on-error","validate","startup","candidate","confirmed-commit","writable-running"]},{"name":"iana-ssh-public-key-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-public-key-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-public-key-algs","conformance-type":"import"},{"name":"aaa-cert-mdsal_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/aaa-cert-mdsal?revision=2016-03-21","namespace":"urn:opendaylight:yang:aaa:cert:mdsal","conformance-type":"import"},{"name":"odl-device-notification_2024-02-18","revision":"2024-02-18","schema":"/rests/modules/odl-device-notification?revision=2024-02-18","namespace":"urn:opendaylight:device:notification","conformance-type":"import"},{"name":"ietf-origin_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-origin?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-origin","conformance-type":"import"},{"name":"openflow-augments_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-augments?revision=2015-02-25","namespace":"urn:opendaylight:openflow:augments","conformance-type":"import"},{"name":"iana-ssh-encryption-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-encryption-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-encryption-algs","conformance-type":"import"},{"name":"ietf-truststore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-truststore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-truststore","conformance-type":"import","feature":["inline-definitions-supported"]},{"name":"distributed-datastore-provider_2025-01-30","revision":"2025-01-30","schema":"/rests/modules/distributed-datastore-provider?revision=2025-01-30","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:distributed-datastore-provider","conformance-type":"import"},{"name":"opendaylight-group-types_2013-10-18","revision":"2013-10-18","schema":"/rests/modules/opendaylight-group-types?revision=2013-10-18","namespace":"urn:opendaylight:group:types","conformance-type":"import"},{"name":"sal-remote-augment_2023-11-03","revision":"2023-11-03","schema":"/rests/modules/sal-remote-augment?revision=2023-11-03","namespace":"urn:sal:restconf:event:subscription","conformance-type":"import"},{"name":"opendaylight-ipv6-arbitrary-bitmask-fields_2016-02-24","revision":"2016-02-24","schema":"/rests/modules/opendaylight-ipv6-arbitrary-bitmask-fields?revision=2016-02-24","namespace":"urn:opendaylight:opendaylight-ipv6-arbitrary-bitmask-fields","conformance-type":"import"},{"name":"sal-flows-batch_2016-03-14","revision":"2016-03-14","schema":"/rests/modules/sal-flows-batch?revision=2016-03-14","namespace":"urn:opendaylight:flows:service","conformance-type":"import"},{"name":"ietf-tls-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-common","conformance-type":"import","feature":["tls12","hello-params","tls13"]},{"name":"openflow-types_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-types?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:types","conformance-type":"import"},{"name":"ietf-netconf-with-defaults_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf-with-defaults?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults","conformance-type":"import"},{"name":"odl-srm-ops_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-ops?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:ops","conformance-type":"import"},{"name":"odl-general-entity_2015-09-30","revision":"2015-09-30","schema":"/rests/modules/odl-general-entity?revision=2015-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:mdsal:core:general-entity","conformance-type":"import"},{"name":"iana-ssh-key-exchange-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-key-exchange-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-key-exchange-algs","conformance-type":"import"},{"name":"node-ssl-connection-error_2019-07-23","revision":"2019-07-23","schema":"/rests/modules/node-ssl-connection-error?revision=2019-07-23","namespace":"urn:opendaylight:node-ssl-connection-error:service","conformance-type":"import"},{"name":"openflow-protocol_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-protocol?revision=2013-07-31","namespace":"urn:opendaylight:openflow:protocol","conformance-type":"import"},{"name":"ietf-udp-server_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-server?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-server","conformance-type":"import"},{"name":"ietf-keystore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-keystore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-keystore","conformance-type":"import","feature":["asymmetric-keys","inline-definitions-supported"]},{"name":"aaa_2016-12-14","revision":"2016-12-14","schema":"/rests/modules/aaa?revision=2016-12-14","namespace":"urn:opendaylight:params:xml:ns:yang:aaa","conformance-type":"import"},{"name":"aaa-cert-rpc_2015-12-15","revision":"2015-12-15","schema":"/rests/modules/aaa-cert-rpc?revision=2015-12-15","namespace":"urn:opendaylight:yang:aaa:cert:rpc","conformance-type":"import"},{"name":"system-notifications_2013-09-27","revision":"2013-09-27","schema":"/rests/modules/system-notifications?revision=2013-09-27","namespace":"urn:opendaylight:openflow:system","conformance-type":"import"},{"name":"sal-flat-batch_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/sal-flat-batch?revision=2016-03-21","namespace":"urn:opendaylight:flat-batch:service","conformance-type":"import"},{"name":"notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netconf:notification:1.0","conformance-type":"import"},{"name":"sal-remote_2014-01-14","revision":"2014-01-14","schema":"/rests/modules/sal-remote?revision=2014-01-14","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:remote","conformance-type":"import"},{"name":"yang-ext_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/yang-ext?revision=2013-07-09","namespace":"urn:opendaylight:yang:extension:yang-ext","conformance-type":"import"},{"name":"opendaylight-multipart-types_2017-01-12","revision":"2017-01-12","schema":"/rests/modules/opendaylight-multipart-types?revision=2017-01-12","namespace":"urn:opendaylight:multipart:types","conformance-type":"import"},{"name":"opendaylight-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-inventory?revision=2013-08-19","namespace":"urn:opendaylight:inventory","conformance-type":"import"},{"name":"sal-queue_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-queue?revision=2015-03-05","namespace":"urn:opendaylight:queue:service","conformance-type":"import"},{"name":"sal-groups-batch_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/sal-groups-batch?revision=2016-03-15","namespace":"urn:opendaylight:groups:service","conformance-type":"import"},{"name":"arbitrator-reconcile_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/arbitrator-reconcile?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:arbitrator-reconcile:service","conformance-type":"import"},{"name":"ietf-yang-metadata_2016-08-05","revision":"2016-08-05","schema":"/rests/modules/ietf-yang-metadata?revision=2016-08-05","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-metadata","conformance-type":"import"},{"name":"opendaylight-arbitrary-bitmask-fields_2016-01-30","revision":"2016-01-30","schema":"/rests/modules/opendaylight-arbitrary-bitmask-fields?revision=2016-01-30","namespace":"urn:opendaylight:arbitrary:bitmask:fields","conformance-type":"import"},{"name":"ietf-udp-client_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-client?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-client","conformance-type":"import","feature":["local-binding"]},{"name":"opendaylight-meter-types_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/opendaylight-meter-types?revision=2013-09-18","namespace":"urn:opendaylight:meter:types","conformance-type":"import"},{"name":"opendaylight-action-types_2013-11-12","revision":"2013-11-12","schema":"/rests/modules/opendaylight-action-types?revision=2013-11-12","namespace":"urn:opendaylight:action:types","conformance-type":"import"},{"name":"sal-role_2015-07-27","revision":"2015-07-27","schema":"/rests/modules/sal-role?revision=2015-07-27","namespace":"urn:opendaylight:role:service","conformance-type":"import"},{"name":"openflow-provider-config_2016-05-10","revision":"2016-05-10","schema":"/rests/modules/openflow-provider-config?revision=2016-05-10","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:provider:config","conformance-type":"import"},{"name":"odl-serviceutils-upgrade_2018-07-02","revision":"2018-07-02","schema":"/rests/modules/odl-serviceutils-upgrade?revision=2018-07-02","namespace":"urn:opendaylight:serviceutils:upgrade","conformance-type":"import"},{"name":"opendaylight-match-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-match-types?revision=2013-10-26","namespace":"urn:opendaylight:model:match:types","conformance-type":"import"},{"name":"ietf-restconf-server_2024-08-14","revision":"2024-08-14","schema":"/rests/modules/ietf-restconf-server?revision=2024-08-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-server","conformance-type":"import","feature":["http-listen","https-listen"]},{"name":"reconciliation-result-state_2017-07-13","revision":"2017-07-13","schema":"/rests/modules/reconciliation-result-state?revision=2017-07-13","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:rf:state","conformance-type":"import"},{"name":"onf-extensions_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/onf-extensions?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf","conformance-type":"import"},{"name":"sal-table_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/sal-table?revision=2013-10-26","namespace":"urn:opendaylight:table:service","conformance-type":"import"},{"name":"iana-http-versions_2026-02-04","revision":"2026-02-04","schema":"/rests/modules/iana-http-versions?revision=2026-02-04","namespace":"urn:ietf:params:xml:ns:yang:iana-http-versions","conformance-type":"import"},{"name":"opendaylight-direct-statistics_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/opendaylight-direct-statistics?revision=2016-05-11","namespace":"urn:opendaylight:direct:statistics","conformance-type":"import"},{"name":"opendaylight-port-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-port-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:port","conformance-type":"import"},{"name":"sal-async-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/sal-async-config?revision=2017-06-19","namespace":"urn:opendaylight:async-config:service","conformance-type":"import"},{"name":"aaa-password-service-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-password-service-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:password:service:config","conformance-type":"import"},{"name":"ietf-yang-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-yang-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-types","conformance-type":"import"},{"name":"opendaylight-queue-statistics_2013-12-16","revision":"2013-12-16","schema":"/rests/modules/opendaylight-queue-statistics?revision=2013-12-16","namespace":"urn:opendaylight:queue:statistics","conformance-type":"import"},{"name":"sal-bundle_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/sal-bundle?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf:bundle:service","conformance-type":"import"},{"name":"ietf-restconf-subscribed-notifications_2019-11-17","revision":"2019-11-17","schema":"/rests/modules/ietf-restconf-subscribed-notifications?revision=2019-11-17","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-subscribed-notifications","conformance-type":"import"},{"name":"sal-meters-batch_2016-03-16","revision":"2016-03-16","schema":"/rests/modules/sal-meters-batch?revision=2016-03-16","namespace":"urn:opendaylight:meters:service","conformance-type":"import"},{"name":"odl-entity-owners","revision":"","schema":"/rests/modules/odl-entity-owners","namespace":"urn:opendaylight:params:xml:ns:yang:controller:entity-owners","conformance-type":"import"},{"name":"sal-experimenter-mp-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-mp-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-mp-message:service","conformance-type":"import"},{"name":"packet-processing_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/packet-processing?revision=2013-07-09","namespace":"urn:opendaylight:packet:service","conformance-type":"import"},{"name":"openflow-configuration_2014-06-30","revision":"2014-06-30","schema":"/rests/modules/openflow-configuration?revision=2014-06-30","namespace":"urn:opendaylight:openflow:config","conformance-type":"import"},{"name":"odl-srm-rpcs_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-rpcs?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:rpc","conformance-type":"import"},{"name":"ietf-netconf-acm_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-netconf-acm?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-acm","conformance-type":"import"},{"name":"iana-crypt-hash_2014-08-06","revision":"2014-08-06","schema":"/rests/modules/iana-crypt-hash?revision=2014-08-06","namespace":"urn:ietf:params:xml:ns:yang:iana-crypt-hash","conformance-type":"import","feature":["crypt-hash-sha-512","crypt-hash-sha-256","crypt-hash-md5"]},{"name":"openflow-extensible-match_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-extensible-match?revision=2015-02-25","namespace":"urn:opendaylight:openflow:oxm","conformance-type":"import"}],"module-set-id":"2"}}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:56.814200" elapsed="0.006453"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:56.813689" elapsed="0.007043"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:56.813646" elapsed="0.007183"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:56.823817" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:56.821490" elapsed="0.002372"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:56.820960" elapsed="0.002936"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:56.820922" elapsed="0.002997"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:56.824469" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:56.824077" elapsed="0.000418"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:56.824815" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:56.824565" elapsed="0.000308"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:56.825372" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:56.825057" elapsed="0.000341"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:56.824897" elapsed="0.000536"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:56.824547" elapsed="0.000907"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:56.825967" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:56.825610" elapsed="0.000383"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:56.826309" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:56.826062" elapsed="0.000305"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:56.826838" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:56.826550" elapsed="0.000313"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:56.826391" elapsed="0.000507"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:56.826044" elapsed="0.000875"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:51:56.827063" elapsed="0.000358"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:51:56.827856" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:56.827582" elapsed="0.000300"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:51:56.828033" elapsed="0.002338"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:51:56.812672" elapsed="0.017766"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:51:56.830619" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:51:56.830511" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:56.830491" elapsed="0.000195"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:51:56.838804" level="INFO">${text_normalized} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:51:56.830836" elapsed="0.007997"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:51:56.838884" elapsed="0.000033"/>
</return>
<msg time="2026-04-08T00:51:56.839043" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:51:56.794693" elapsed="0.044376"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:51:56.839130" elapsed="0.000044"/>
</return>
<msg time="2026-04-08T00:51:56.839474" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="PASS" start="2026-04-08T00:51:56.704537" elapsed="0.134974"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Json_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:56.839983" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:56.839635" elapsed="0.000493"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:56.839604" elapsed="0.000590"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:51:56.840258" elapsed="0.000071"/>
</return>
<arg>session=${session}</arg>
<arg>folder=${RESTCONF_MODULES_DIR}</arg>
<arg>verify=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Add arguments sensible for JSON data, return Get_Templated response text.
Optionally, verification against JSON data (may be iterated) is called.
Only subset of JSON data is verified and returned if JMES path is specified in
file ${folder}/jmespath.expr.</doc>
<status status="PASS" start="2026-04-08T00:51:56.698961" elapsed="0.141559"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:56.694735" elapsed="0.145895"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:56.694717" elapsed="0.145940"/>
</if>
<kw name="Resolve_Shard_Type_Class" owner="ClusterManagement">
<if>
<branch type="IF" condition="'${shard_type}' == 'config'">
<return>
<value>DistributedConfigDatastore</value>
<status status="NOT RUN" start="2026-04-08T00:51:56.841579" elapsed="0.000048"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:51:56.841354" elapsed="0.000316"/>
</branch>
<branch type="ELSE IF" condition="'${shard_type}' == 'operational'">
<return>
<value>DistributedOperationalDatastore</value>
<status status="PASS" start="2026-04-08T00:51:56.841949" elapsed="0.000070"/>
</return>
<status status="PASS" start="2026-04-08T00:51:56.841729" elapsed="0.000338"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:56.841321" elapsed="0.000807"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized shard type: ${shard_type}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:56.842375" elapsed="0.000065"/>
</kw>
<msg time="2026-04-08T00:51:56.842577" level="INFO">${type_class} = DistributedOperationalDatastore</msg>
<var>${type_class}</var>
<arg>shard_type=${shard_type}</arg>
<doc>Simple lookup for class name corresponding to desired type.</doc>
<status status="PASS" start="2026-04-08T00:51:56.840934" elapsed="0.001669"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:56.843439" level="INFO">${cluster_index} = 1</msg>
<var>${cluster_index}</var>
<arg>${member_index}+${NODE_ROLE_INDEX_START}-1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:56.842775" elapsed="0.000692"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:56.844586" level="INFO">${uri} = jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-default-operational,type=DistributedOperationalDatastore</msg>
<var>${uri}</var>
<arg>${JOLOKIA_READ_URI}:Category=Shards,name=member-${cluster_index}-shard-${shard_name}-${shard_type},type=${type_class}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:56.843624" elapsed="0.000990"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:56.851768" level="INFO">jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-default-operational,type=DistributedOperationalDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:56.851482" elapsed="0.000369"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:56.852385" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:56.852091" elapsed="0.000376"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:51:56.860636" level="INFO">GET Request : url=http://10.30.170.48:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-default-operational,type=DistributedOperationalDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-default-operational,type=DistributedOperationalDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:51:56.860696" level="INFO">GET Response : url=http://10.30.170.48:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-default-operational,type=DistributedOperationalDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Wed, 08 Apr 2026 00:51:56 GMT', 'Expires': 'Tue, 07 Apr 2026 23:51:56 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-1-shard-default-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"ReadWriteTransactionCount":32,"SnapshotIndex":146,"InMemoryJournalLogSize":1,"ReplicatedToAllIndex":146,"Leader":"member-1-shard-default-operational","LastIndex":147,"RaftState":"Leader","LastApplied":147,"LastCommittedTransactionTime":"2026-04-08 00:46:49.710","PeerAddresses":"member-3-shard-default-operational: pekko:\/\/opendaylight-cluster-data@10.30.171.110:2550\/user\/shardmanager-operational\/member-3-shard-default-operational, member-2-shard-default-operational: pekko:\/\/opendaylight-cluster-data@10.30.170.131:2550\/user\/shardmanager-operational\/member-2-shard-default-operational","LastLogIndex":147,"LastLeadershipChangeTime":"2026-04-08 00:46:45.934","FollowerInitialSyncStatus":false,"FollowerInfo":[{"timeSinceLastActivity":"00:00:00.047","active":true,"matchIndex":147,"voting":true,"id":"member-3-shard-default-operational","nextIndex":148},{"timeSinceLastActivity":"00:00:00.047","active":true,"matchIndex":147,"voting":true,"id":"member-2-shard-default-operational","nextIndex":148}],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"596.6 μs","CurrentTerm":2,"LastTerm":2,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-default-operational","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":11,"TxCohortCacheSize":0,"PeerVotingStates":"member-3-shard-default-operational: true, member-2-shard-default-operational: true","LastLogTerm":2,"StatRetrievalError":null,"CommitIndex":147,"SnapshotTerm":2,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":40,"ShardName":"member-1-shard-default-operational","LeadershipChangeCount":1,"InMemoryJournalDataSize":94084},"timestamp":1775609516,"status":200} 
 </msg>
<msg time="2026-04-08T00:51:56.860826" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:51:56.854609" elapsed="0.006244"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:56.852610" elapsed="0.008286"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:56.861098" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:56.860943" elapsed="0.000244"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:56.852565" elapsed="0.008692"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:56.864644" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-1-shard-default-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"ReadWriteTransactionCount":32,"SnapshotIndex":146,"InMemoryJournalLogSize":1,"ReplicatedToAllIndex":146,"Leader":"member-1-shard-default-operational","LastIndex":147,"RaftState":"Leader","LastApplied":147,"LastCommittedTransactionTime":"2026-04-08 00:46:49.710","PeerAddresses":"member-3-shard-default-operational: pekko:\/\/opendaylight-cluster-data@10.30.171.110:2550\/user\/shardmanager-operational\/member-3-shard-default-operational, member-2-shard-default-operational: pekko:\/\/opendaylight-cluster-data@10.30.170.131:2550\/user\/shardmanager-operational\/member-2-shard-default-operational","LastLogIndex":147,"LastLeadershipChangeTime":"2026-04-08 00:46:45.934","FollowerInitialSyncStatus":false,"FollowerInfo":[{"timeSinceLastActivity":"00:00:00.047","active":true,"matchIndex":147,"voting":true,"id":"member-3-shard-default-operational","nextIndex":148},{"timeSinceLastActivity":"00:00:00.047","active":true,"matchIndex":147,"voting":true,"id":"member-2-shard-default-operational","nextIndex":148}],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"596.6 μs","CurrentTerm":2,"LastTerm":2,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-default-operational","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":11,"TxCohortCacheSize":0,"PeerVotingStates":"member-3-shard-default-operational: true, member-2-shard-default-operational: true","LastLogTerm":2,"StatRetrievalError":null,"CommitIndex":147,"SnapshotTerm":2,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":40,"ShardName":"member-1-shard-default-operational","LeadershipChangeCount":1,"InMemoryJournalDataSize":94084},"timestamp":1775609516,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:56.862317" elapsed="0.002389"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:56.862077" elapsed="0.002663"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:56.862058" elapsed="0.002737"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:56.867864" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:56.865082" elapsed="0.002844"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:56.864859" elapsed="0.003115"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:56.864842" elapsed="0.003165"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:56.868780" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:56.868247" elapsed="0.000572"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:56.869269" elapsed="0.000032"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:56.868918" elapsed="0.000434"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:56.870018" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:56.869605" elapsed="0.000449"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:56.869384" elapsed="0.000719"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:56.868892" elapsed="0.001241"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:56.870919" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:56.870382" elapsed="0.000583"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:56.871414" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:56.871068" elapsed="0.000425"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:56.872150" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:56.871744" elapsed="0.000463"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:56.871525" elapsed="0.000734"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:56.871042" elapsed="0.001254"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:51:56.872549" elapsed="0.000540"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:51:56.873713" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:56.873338" elapsed="0.000411"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:51:56.873957" elapsed="0.003095"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:51:56.861659" elapsed="0.015456"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:51:56.877405" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:51:56.877295" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:56.877247" elapsed="0.000240"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:51:56.880498" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-1-shard-default-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp"...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:51:56.877719" elapsed="0.002831"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:51:56.880664" elapsed="0.000064"/>
</return>
<msg time="2026-04-08T00:51:56.881051" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-1-shard-default-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp"...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:51:56.846361" elapsed="0.034781"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:51:56.881262" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:51:56.881530" level="INFO">${data_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-1-shard-default-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp"...</msg>
<var>${data_text}</var>
<arg>uri=${uri}</arg>
<arg>session=${session}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-08T00:51:56.844850" elapsed="0.036707"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:56.883653" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-1-shard-default-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 177560951...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:56.882600" elapsed="0.001147"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-08T00:51:56.883831" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:51:56.884129" level="INFO">${data_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-1-shard-default-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 177560951...</msg>
<var>${data_object}</var>
<arg>${data_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-08T00:51:56.881781" elapsed="0.002391"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:51:56.884644" level="INFO">${value} = {'AbortTransactionsCount': 0, 'CommitIndex': 147, 'CommittedTransactionsCount': 11, 'CurrentTerm': 2, 'FailedReadTransactionsCount': 0, 'FailedTransactionsCount': 0, 'FollowerInfo': [{'active': True, ...</msg>
<var>${value}</var>
<arg>${data_object}</arg>
<arg>value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:51:56.884330" elapsed="0.000343"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:51:56.885254" level="INFO">${raft_property} = Leader</msg>
<var>${raft_property}</var>
<arg>${value}</arg>
<arg>${property}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:51:56.884854" elapsed="0.000426"/>
</kw>
<return>
<value>${raft_property}</value>
<status status="PASS" start="2026-04-08T00:51:56.885328" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:51:56.885482" level="INFO">${raft_state} = Leader</msg>
<var>${raft_state}</var>
<arg>RaftState</arg>
<arg>${shard_name}</arg>
<arg>${shard_type}</arg>
<arg>${member_index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft property.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T00:51:56.692079" elapsed="0.193428"/>
</kw>
<return>
<value>${raft_state}</value>
<status status="PASS" start="2026-04-08T00:51:56.885565" elapsed="0.000026"/>
</return>
<msg time="2026-04-08T00:51:56.885711" level="INFO">${raft_state} = Leader</msg>
<var>${raft_state}</var>
<arg>shard_name=${shard_name}</arg>
<arg>shard_type=${ds_type}</arg>
<arg>member_index=${index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft status.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T00:51:56.691327" elapsed="0.194409"/>
</kw>
<if>
<branch type="IF" condition="'Follower' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${follower_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:56.886032" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:56.885816" elapsed="0.000273"/>
</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="PASS" start="2026-04-08T00:51:56.886353" elapsed="0.000190"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:56.886112" elapsed="0.000470"/>
</branch>
<branch type="ELSE IF" condition="${validate}">
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized Raft state: ${raft_state}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:56.886749" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:56.886606" elapsed="0.000200"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:56.885798" elapsed="0.001036"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T00:51:56.691127" elapsed="0.195731"/>
</iter>
<iter>
<kw name="Get_Raft_State_Of_Shard_At_Member" owner="ClusterManagement">
<kw name="Get_Raft_Property_From_Shard_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:56.891529" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:56.889239" elapsed="0.002383"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:51:56.891705" elapsed="0.000031"/>
</return>
<msg time="2026-04-08T00:51:56.891974" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:51:56.888682" elapsed="0.003319"/>
</kw>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Get_As_Json_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:56.939789" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:56.939414" elapsed="0.000402"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:51:56.940612" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:51:56.940366" elapsed="0.000318">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-08T00:51:56.940805" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:51:56.940016" elapsed="0.000816"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:51:56.941397" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:51:56.940999" elapsed="0.000424"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T00:51:56.941717" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-08T00:51:56.941862" level="INFO">${template} = /rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T00:51:56.941581" elapsed="0.000308"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:56.942300" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:56.942041" elapsed="0.000304"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:56.943295" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:56.943024" elapsed="0.000315"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-08T00:51:56.943765" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-08T00:51:56.943498" elapsed="0.000293"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:56.944107" elapsed="0.000022"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:56.944321" elapsed="0.000024"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:56.944491" elapsed="0.000021"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-08T00:51:56.943977" elapsed="0.000571"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-08T00:51:56.943839" elapsed="0.000739"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-08T00:51:56.944620" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:51:56.944802" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-08T00:51:56.942697" elapsed="0.002131"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:56.942413" elapsed="0.002449"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:56.945033" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:56.944888" elapsed="0.000200"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:56.942394" elapsed="0.002715"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:56.945693" level="INFO">${final_text} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:56.945263" elapsed="0.000458"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T00:51:56.945768" elapsed="0.000028"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="PASS" start="2026-04-08T00:51:56.938790" elapsed="0.007100"/>
</kw>
<msg time="2026-04-08T00:51:56.945944" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:51:56.927036" elapsed="0.018960"/>
</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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:56.957893" elapsed="0.000029"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:56.969500" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:56.981018" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:56.981224" elapsed="0.000023"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:56.981398" elapsed="0.000021"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:56.981828" elapsed="0.000027"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:56.981615" elapsed="0.000276"/>
</branch>
<status status="NOT RUN" start="2026-04-08T00:51:56.981601" elapsed="0.000314"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:56.982054" elapsed="0.000021"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:56.982241" elapsed="0.000021"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:56.982408" elapsed="0.000020"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-08T00:51:56.981572" elapsed="0.000888"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-08T00:51:56.981472" elapsed="0.001014"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:56.982628" elapsed="0.000020"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-08T00:51:56.982701" elapsed="0.000016"/>
</return>
<msg time="2026-04-08T00:51:56.982815" level="INFO">${uri} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-08T00:51:56.923045" elapsed="0.059795"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:51:56.984068" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:51:56.983836" elapsed="0.000295">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-08T00:51:56.984238" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:51:56.983499" elapsed="0.000764"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:56.984575" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:56.984333" elapsed="0.000298"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:56.985128" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:56.984841" elapsed="0.000328"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:56.984655" elapsed="0.000550"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:56.984314" elapsed="0.000913"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:51:56.987421" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:51:56.985376" elapsed="0.002072"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-08T00:51:56.987497" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:51:56.987648" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:51:56.983153" elapsed="0.004520"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:51:56.988945" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:51:56.988681" elapsed="0.000327">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-08T00:51:56.989099" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:51:56.988346" elapsed="0.000778"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-08T00:51:56.989349" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-08T00:51:56.989213" elapsed="0.000195"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:56.989193" elapsed="0.000238"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:56.989576" elapsed="0.000022"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:56.989744" elapsed="0.000020"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-08T00:51:56.989809" elapsed="0.000015"/>
</return>
<msg time="2026-04-08T00:51:56.991735" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:51:56.988010" elapsed="0.003753"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:56.993170" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:56.992907" elapsed="0.000311"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:56.993611" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:56.993370" elapsed="0.000285"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:51:57.010586" level="INFO">GET Request : url=http://10.30.170.131:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 path_url=/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node012m0dyuink19r12kj250j53usg1.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:51:57.011347" level="INFO">GET Response : url=http://10.30.170.131:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Transfer-Encoding': 'chunked'} 
 body={"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","hidden-symmetric-keys","encrypted-private-keys","asymmetrically-encrypted-value-format","cms-encrypted-data-format","cleartext-private-keys","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["ssh-client-keepalives","client-ident-hostbased","client-ident-publickey","client-ident-password"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-ex... (set the log level to DEBUG or TRACE to see the full content) 
 </msg>
<msg time="2026-04-08T00:51:57.011863" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:51:56.995655" elapsed="0.016277"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:56.993723" elapsed="0.018313"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:57.012508" elapsed="0.000054"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:57.012102" elapsed="0.000563"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:56.993704" elapsed="0.019036"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:57.021686" level="INFO">{"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","hidden-symmetric-keys","encrypted-private-keys","asymmetrically-encrypted-value-format","cms-encrypted-data-format","cleartext-private-keys","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["ssh-client-keepalives","client-ident-hostbased","client-ident-publickey","client-ident-password"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-experimenter-types?revision=2015-10-20","namespace":"urn:opendaylight:openflowplugin:experimenter:types","conformance-type":"import"},{"name":"ietf-ip_2018-02-22","revision":"2018-02-22","schema":"/rests/modules/ietf-ip?revision=2018-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-ip","conformance-type":"import","feature":["ipv6-privacy-autoconf","ipv4-non-contiguous-netmasks"]},{"name":"ietf-tcp-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-client","conformance-type":"import","feature":["local-binding-supported","tcp-client-keepalives"]},{"name":"node-config_2014-10-15","revision":"2014-10-15","schema":"/rests/modules/node-config?revision=2014-10-15","namespace":"urn:opendaylight:module:config","conformance-type":"import"},{"name":"ietf-restconf_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf","conformance-type":"import"},{"name":"ietf-datastores_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-datastores?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-datastores","conformance-type":"import"},{"name":"ietf-yang-patch_2017-02-22","revision":"2017-02-22","schema":"/rests/modules/ietf-yang-patch?revision=2017-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-patch","conformance-type":"import"},{"name":"sal-group_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-group?revision=2013-09-18","namespace":"urn:opendaylight:group:service","conformance-type":"import"},{"name":"odl-codegen-extensions_2024-06-27","revision":"2024-06-27","schema":"/rests/modules/odl-codegen-extensions?revision=2024-06-27","namespace":"urn:opendaylight:yang:extension:codegen","conformance-type":"import"},{"name":"sal-meter_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-meter?revision=2013-09-18","namespace":"urn:opendaylight:meter:service","conformance-type":"import"},{"name":"ietf-interfaces_2018-02-20","revision":"2018-02-20","schema":"/rests/modules/ietf-interfaces?revision=2018-02-20","namespace":"urn:ietf:params:xml:ns:yang:ietf-interfaces","conformance-type":"import","feature":["pre-provisioning","if-mib","arbitrary-names"]},{"name":"opendaylight-l2-types_2013-08-27","revision":"2013-08-27","schema":"/rests/modules/opendaylight-l2-types?revision=2013-08-27","namespace":"urn:opendaylight:l2:types","conformance-type":"import"},{"name":"opendaylight-flow-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-flow-types?revision=2013-10-26","namespace":"urn:opendaylight:flow:types","conformance-type":"import"},{"name":"lldp-speaker-config_2016-05-12","revision":"2016-05-12","schema":"/rests/modules/lldp-speaker-config?revision=2016-05-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker:config","conformance-type":"import"},{"name":"aaa-cert_2015-11-26","revision":"2015-11-26","schema":"/rests/modules/aaa-cert?revision=2015-11-26","namespace":"urn:opendaylight:yang:aaa:cert","conformance-type":"import"},{"name":"openflow-action_2015-02-03","revision":"2015-02-03","schema":"/rests/modules/openflow-action?revision=2015-02-03","namespace":"urn:opendaylight:openflow:common:action","conformance-type":"import"},{"name":"openflow-approved-extensions_2016-08-02","revision":"2016-08-02","schema":"/rests/modules/openflow-approved-extensions?revision=2016-08-02","namespace":"urn:opendaylight:openflow:approved:extensions","conformance-type":"import"},{"name":"nc-notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/nc-notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netmod:notification","conformance-type":"import"},{"name":"ietf-netconf-nmda_2019-01-07","revision":"2019-01-07","schema":"/rests/modules/ietf-netconf-nmda?revision=2019-01-07","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-nmda","conformance-type":"import","feature":["with-defaults","origin"]},{"name":"ietf-tcp-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-common","conformance-type":"import","feature":["keepalives-supported"]},{"name":"network-topology_2013-10-21","revision":"2013-10-21","schema":"/rests/modules/network-topology?revision=2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:network-topology","conformance-type":"import"},{"name":"aaa-encrypt-service-config_2024-02-02","revision":"2024-02-02","schema":"/rests/modules/aaa-encrypt-service-config?revision=2024-02-02","namespace":"config:aaa:authn:encrypt:service:config","conformance-type":"import"},{"name":"openflow-instruction_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-instruction?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:instruction","conformance-type":"import"},{"name":"ietf-tls-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-client","conformance-type":"import","feature":["client-ident-x509-cert","server-auth-x509-cert"]},{"name":"opendaylight-group-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-group-statistics?revision=2013-11-11","namespace":"urn:opendaylight:group:statistics","conformance-type":"import"},{"name":"cluster-admin_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/cluster-admin?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:cluster:admin","conformance-type":"import"},{"name":"opendaylight-flow-statistics_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-flow-statistics?revision=2013-08-19","namespace":"urn:opendaylight:flow:statistics","conformance-type":"import"},{"name":"opendaylight-table-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-table-types?revision=2013-10-26","namespace":"urn:opendaylight:table:types","conformance-type":"import"},{"name":"forwarding-rules-manager-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/forwarding-rules-manager-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:forwardingrules-manager:config","conformance-type":"import"},{"name":"odl-srm-types_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-types?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:types","conformance-type":"import"},{"name":"ietf-x509-cert-to-name_2014-12-10","revision":"2014-12-10","schema":"/rests/modules/ietf-x509-cert-to-name?revision=2014-12-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-x509-cert-to-name","conformance-type":"import"},{"name":"flow-node-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-node-inventory?revision=2013-08-19","namespace":"urn:opendaylight:flow:inventory","conformance-type":"import"},{"name":"flow-errors_2013-11-16","revision":"2013-11-16","schema":"/rests/modules/flow-errors?revision=2013-11-16","namespace":"urn:opendaylight:flow:errors","conformance-type":"import"},{"name":"ietf-netconf_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:netconf:base:1.0","conformance-type":"import","feature":["xpath","url","rollback-on-error","validate","startup","candidate","confirmed-commit","writable-running"]},{"name":"iana-ssh-public-key-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-public-key-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-public-key-algs","conformance-type":"import"},{"name":"aaa-cert-mdsal_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/aaa-cert-mdsal?revision=2016-03-21","namespace":"urn:opendaylight:yang:aaa:cert:mdsal","conformance-type":"import"},{"name":"odl-device-notification_2024-02-18","revision":"2024-02-18","schema":"/rests/modules/odl-device-notification?revision=2024-02-18","namespace":"urn:opendaylight:device:notification","conformance-type":"import"},{"name":"ietf-origin_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-origin?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-origin","conformance-type":"import"},{"name":"openflow-augments_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-augments?revision=2015-02-25","namespace":"urn:opendaylight:openflow:augments","conformance-type":"import"},{"name":"iana-ssh-encryption-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-encryption-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-encryption-algs","conformance-type":"import"},{"name":"ietf-truststore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-truststore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-truststore","conformance-type":"import","feature":["inline-definitions-supported"]},{"name":"distributed-datastore-provider_2025-01-30","revision":"2025-01-30","schema":"/rests/modules/distributed-datastore-provider?revision=2025-01-30","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:distributed-datastore-provider","conformance-type":"import"},{"name":"opendaylight-group-types_2013-10-18","revision":"2013-10-18","schema":"/rests/modules/opendaylight-group-types?revision=2013-10-18","namespace":"urn:opendaylight:group:types","conformance-type":"import"},{"name":"sal-remote-augment_2023-11-03","revision":"2023-11-03","schema":"/rests/modules/sal-remote-augment?revision=2023-11-03","namespace":"urn:sal:restconf:event:subscription","conformance-type":"import"},{"name":"opendaylight-ipv6-arbitrary-bitmask-fields_2016-02-24","revision":"2016-02-24","schema":"/rests/modules/opendaylight-ipv6-arbitrary-bitmask-fields?revision=2016-02-24","namespace":"urn:opendaylight:opendaylight-ipv6-arbitrary-bitmask-fields","conformance-type":"import"},{"name":"sal-flows-batch_2016-03-14","revision":"2016-03-14","schema":"/rests/modules/sal-flows-batch?revision=2016-03-14","namespace":"urn:opendaylight:flows:service","conformance-type":"import"},{"name":"ietf-tls-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-common","conformance-type":"import","feature":["tls12","hello-params","tls13"]},{"name":"openflow-types_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-types?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:types","conformance-type":"import"},{"name":"ietf-netconf-with-defaults_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf-with-defaults?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults","conformance-type":"import"},{"name":"odl-srm-ops_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-ops?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:ops","conformance-type":"import"},{"name":"odl-general-entity_2015-09-30","revision":"2015-09-30","schema":"/rests/modules/odl-general-entity?revision=2015-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:mdsal:core:general-entity","conformance-type":"import"},{"name":"iana-ssh-key-exchange-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-key-exchange-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-key-exchange-algs","conformance-type":"import"},{"name":"node-ssl-connection-error_2019-07-23","revision":"2019-07-23","schema":"/rests/modules/node-ssl-connection-error?revision=2019-07-23","namespace":"urn:opendaylight:node-ssl-connection-error:service","conformance-type":"import"},{"name":"openflow-protocol_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-protocol?revision=2013-07-31","namespace":"urn:opendaylight:openflow:protocol","conformance-type":"import"},{"name":"ietf-udp-server_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-server?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-server","conformance-type":"import"},{"name":"ietf-keystore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-keystore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-keystore","conformance-type":"import","feature":["asymmetric-keys","inline-definitions-supported"]},{"name":"aaa_2016-12-14","revision":"2016-12-14","schema":"/rests/modules/aaa?revision=2016-12-14","namespace":"urn:opendaylight:params:xml:ns:yang:aaa","conformance-type":"import"},{"name":"aaa-cert-rpc_2015-12-15","revision":"2015-12-15","schema":"/rests/modules/aaa-cert-rpc?revision=2015-12-15","namespace":"urn:opendaylight:yang:aaa:cert:rpc","conformance-type":"import"},{"name":"system-notifications_2013-09-27","revision":"2013-09-27","schema":"/rests/modules/system-notifications?revision=2013-09-27","namespace":"urn:opendaylight:openflow:system","conformance-type":"import"},{"name":"sal-flat-batch_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/sal-flat-batch?revision=2016-03-21","namespace":"urn:opendaylight:flat-batch:service","conformance-type":"import"},{"name":"notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netconf:notification:1.0","conformance-type":"import"},{"name":"sal-remote_2014-01-14","revision":"2014-01-14","schema":"/rests/modules/sal-remote?revision=2014-01-14","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:remote","conformance-type":"import"},{"name":"yang-ext_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/yang-ext?revision=2013-07-09","namespace":"urn:opendaylight:yang:extension:yang-ext","conformance-type":"import"},{"name":"opendaylight-multipart-types_2017-01-12","revision":"2017-01-12","schema":"/rests/modules/opendaylight-multipart-types?revision=2017-01-12","namespace":"urn:opendaylight:multipart:types","conformance-type":"import"},{"name":"opendaylight-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-inventory?revision=2013-08-19","namespace":"urn:opendaylight:inventory","conformance-type":"import"},{"name":"sal-queue_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-queue?revision=2015-03-05","namespace":"urn:opendaylight:queue:service","conformance-type":"import"},{"name":"sal-groups-batch_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/sal-groups-batch?revision=2016-03-15","namespace":"urn:opendaylight:groups:service","conformance-type":"import"},{"name":"arbitrator-reconcile_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/arbitrator-reconcile?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:arbitrator-reconcile:service","conformance-type":"import"},{"name":"ietf-yang-metadata_2016-08-05","revision":"2016-08-05","schema":"/rests/modules/ietf-yang-metadata?revision=2016-08-05","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-metadata","conformance-type":"import"},{"name":"opendaylight-arbitrary-bitmask-fields_2016-01-30","revision":"2016-01-30","schema":"/rests/modules/opendaylight-arbitrary-bitmask-fields?revision=2016-01-30","namespace":"urn:opendaylight:arbitrary:bitmask:fields","conformance-type":"import"},{"name":"ietf-udp-client_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-client?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-client","conformance-type":"import","feature":["local-binding"]},{"name":"opendaylight-meter-types_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/opendaylight-meter-types?revision=2013-09-18","namespace":"urn:opendaylight:meter:types","conformance-type":"import"},{"name":"opendaylight-action-types_2013-11-12","revision":"2013-11-12","schema":"/rests/modules/opendaylight-action-types?revision=2013-11-12","namespace":"urn:opendaylight:action:types","conformance-type":"import"},{"name":"sal-role_2015-07-27","revision":"2015-07-27","schema":"/rests/modules/sal-role?revision=2015-07-27","namespace":"urn:opendaylight:role:service","conformance-type":"import"},{"name":"openflow-provider-config_2016-05-10","revision":"2016-05-10","schema":"/rests/modules/openflow-provider-config?revision=2016-05-10","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:provider:config","conformance-type":"import"},{"name":"odl-serviceutils-upgrade_2018-07-02","revision":"2018-07-02","schema":"/rests/modules/odl-serviceutils-upgrade?revision=2018-07-02","namespace":"urn:opendaylight:serviceutils:upgrade","conformance-type":"import"},{"name":"opendaylight-match-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-match-types?revision=2013-10-26","namespace":"urn:opendaylight:model:match:types","conformance-type":"import"},{"name":"ietf-restconf-server_2024-08-14","revision":"2024-08-14","schema":"/rests/modules/ietf-restconf-server?revision=2024-08-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-server","conformance-type":"import","feature":["http-listen","https-listen"]},{"name":"reconciliation-result-state_2017-07-13","revision":"2017-07-13","schema":"/rests/modules/reconciliation-result-state?revision=2017-07-13","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:rf:state","conformance-type":"import"},{"name":"onf-extensions_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/onf-extensions?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf","conformance-type":"import"},{"name":"sal-table_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/sal-table?revision=2013-10-26","namespace":"urn:opendaylight:table:service","conformance-type":"import"},{"name":"iana-http-versions_2026-02-04","revision":"2026-02-04","schema":"/rests/modules/iana-http-versions?revision=2026-02-04","namespace":"urn:ietf:params:xml:ns:yang:iana-http-versions","conformance-type":"import"},{"name":"opendaylight-direct-statistics_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/opendaylight-direct-statistics?revision=2016-05-11","namespace":"urn:opendaylight:direct:statistics","conformance-type":"import"},{"name":"opendaylight-port-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-port-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:port","conformance-type":"import"},{"name":"sal-async-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/sal-async-config?revision=2017-06-19","namespace":"urn:opendaylight:async-config:service","conformance-type":"import"},{"name":"aaa-password-service-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-password-service-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:password:service:config","conformance-type":"import"},{"name":"ietf-yang-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-yang-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-types","conformance-type":"import"},{"name":"opendaylight-queue-statistics_2013-12-16","revision":"2013-12-16","schema":"/rests/modules/opendaylight-queue-statistics?revision=2013-12-16","namespace":"urn:opendaylight:queue:statistics","conformance-type":"import"},{"name":"sal-bundle_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/sal-bundle?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf:bundle:service","conformance-type":"import"},{"name":"ietf-restconf-subscribed-notifications_2019-11-17","revision":"2019-11-17","schema":"/rests/modules/ietf-restconf-subscribed-notifications?revision=2019-11-17","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-subscribed-notifications","conformance-type":"import"},{"name":"sal-meters-batch_2016-03-16","revision":"2016-03-16","schema":"/rests/modules/sal-meters-batch?revision=2016-03-16","namespace":"urn:opendaylight:meters:service","conformance-type":"import"},{"name":"odl-entity-owners","revision":"","schema":"/rests/modules/odl-entity-owners","namespace":"urn:opendaylight:params:xml:ns:yang:controller:entity-owners","conformance-type":"import"},{"name":"sal-experimenter-mp-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-mp-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-mp-message:service","conformance-type":"import"},{"name":"packet-processing_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/packet-processing?revision=2013-07-09","namespace":"urn:opendaylight:packet:service","conformance-type":"import"},{"name":"openflow-configuration_2014-06-30","revision":"2014-06-30","schema":"/rests/modules/openflow-configuration?revision=2014-06-30","namespace":"urn:opendaylight:openflow:config","conformance-type":"import"},{"name":"odl-srm-rpcs_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-rpcs?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:rpc","conformance-type":"import"},{"name":"ietf-netconf-acm_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-netconf-acm?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-acm","conformance-type":"import"},{"name":"iana-crypt-hash_2014-08-06","revision":"2014-08-06","schema":"/rests/modules/iana-crypt-hash?revision=2014-08-06","namespace":"urn:ietf:params:xml:ns:yang:iana-crypt-hash","conformance-type":"import","feature":["crypt-hash-sha-512","crypt-hash-sha-256","crypt-hash-md5"]},{"name":"openflow-extensible-match_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-extensible-match?revision=2015-02-25","namespace":"urn:opendaylight:openflow:oxm","conformance-type":"import"}],"module-set-id":"2"}}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:57.015219" elapsed="0.006960"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:57.014661" elapsed="0.007554"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:57.014614" elapsed="0.007626"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:57.024675" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:57.022519" elapsed="0.002218"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:57.022297" elapsed="0.002474"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:57.022280" elapsed="0.002515"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:57.025362" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:57.024965" elapsed="0.000424"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:57.025693" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:57.025459" elapsed="0.000291"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:57.026253" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:57.025932" elapsed="0.000347"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:57.025773" elapsed="0.000542"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:57.025441" elapsed="0.000895"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:57.026871" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:57.026511" elapsed="0.000386"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:57.027339" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:57.027091" elapsed="0.000306"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:57.027878" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:57.027585" elapsed="0.000318"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:57.027421" elapsed="0.000518"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:57.027072" elapsed="0.000888"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:51:57.028106" elapsed="0.000363"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:51:57.028939" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:57.028633" elapsed="0.000332"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:51:57.029117" elapsed="0.002184"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:51:57.013606" elapsed="0.017758"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:51:57.031540" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:51:57.031434" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:57.031415" elapsed="0.000192"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:51:57.040152" level="INFO">${text_normalized} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:51:57.031749" elapsed="0.008448"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:51:57.040254" elapsed="0.000041"/>
</return>
<msg time="2026-04-08T00:51:57.040432" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:51:56.992068" elapsed="0.048390"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:51:57.040521" elapsed="0.000026"/>
</return>
<msg time="2026-04-08T00:51:57.040915" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="PASS" start="2026-04-08T00:51:56.901891" elapsed="0.139061"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Json_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:57.041473" elapsed="0.000027"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:57.041086" elapsed="0.000517"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:57.041052" elapsed="0.000592"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:51:57.041704" elapsed="0.000070"/>
</return>
<arg>session=${session}</arg>
<arg>folder=${RESTCONF_MODULES_DIR}</arg>
<arg>verify=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Add arguments sensible for JSON data, return Get_Templated response text.
Optionally, verification against JSON data (may be iterated) is called.
Only subset of JSON data is verified and returned if JMES path is specified in
file ${folder}/jmespath.expr.</doc>
<status status="PASS" start="2026-04-08T00:51:56.896246" elapsed="0.145721"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:56.892070" elapsed="0.150008"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:56.892052" elapsed="0.150053"/>
</if>
<kw name="Resolve_Shard_Type_Class" owner="ClusterManagement">
<if>
<branch type="IF" condition="'${shard_type}' == 'config'">
<return>
<value>DistributedConfigDatastore</value>
<status status="NOT RUN" start="2026-04-08T00:51:57.043029" elapsed="0.000047"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:51:57.042804" elapsed="0.000318"/>
</branch>
<branch type="ELSE IF" condition="'${shard_type}' == 'operational'">
<return>
<value>DistributedOperationalDatastore</value>
<status status="PASS" start="2026-04-08T00:51:57.043421" elapsed="0.000070"/>
</return>
<status status="PASS" start="2026-04-08T00:51:57.043198" elapsed="0.000340"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:57.042771" elapsed="0.000826"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized shard type: ${shard_type}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:57.043832" elapsed="0.000065"/>
</kw>
<msg time="2026-04-08T00:51:57.044032" level="INFO">${type_class} = DistributedOperationalDatastore</msg>
<var>${type_class}</var>
<arg>shard_type=${shard_type}</arg>
<doc>Simple lookup for class name corresponding to desired type.</doc>
<status status="PASS" start="2026-04-08T00:51:57.042392" elapsed="0.001667"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:57.044925" level="INFO">${cluster_index} = 2</msg>
<var>${cluster_index}</var>
<arg>${member_index}+${NODE_ROLE_INDEX_START}-1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:57.044249" elapsed="0.000705"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:57.046065" level="INFO">${uri} = jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-default-operational,type=DistributedOperationalDatastore</msg>
<var>${uri}</var>
<arg>${JOLOKIA_READ_URI}:Category=Shards,name=member-${cluster_index}-shard-${shard_name}-${shard_type},type=${type_class}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:57.045111" elapsed="0.000982"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:57.053206" level="INFO">jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-default-operational,type=DistributedOperationalDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:57.052901" elapsed="0.000391"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:57.053816" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:57.053535" elapsed="0.000363"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:51:57.062320" level="INFO">GET Request : url=http://10.30.170.131:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-default-operational,type=DistributedOperationalDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-default-operational,type=DistributedOperationalDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:51:57.062382" level="INFO">GET Response : url=http://10.30.170.131:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-default-operational,type=DistributedOperationalDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Wed, 08 Apr 2026 00:51:57 GMT', 'Expires': 'Tue, 07 Apr 2026 23:51:57 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-2-shard-default-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"ReadWriteTransactionCount":0,"SnapshotIndex":146,"InMemoryJournalLogSize":1,"ReplicatedToAllIndex":146,"Leader":"member-1-shard-default-operational","LastIndex":147,"RaftState":"Follower","LastCommittedTransactionTime":"1970-01-01 00:00:00.000","LastApplied":147,"PeerAddresses":"member-1-shard-default-operational: pekko:\/\/opendaylight-cluster-data@10.30.170.48:2550\/user\/shardmanager-operational\/member-1-shard-default-operational, member-3-shard-default-operational: pekko:\/\/opendaylight-cluster-data@10.30.171.110:2550\/user\/shardmanager-operational\/member-3-shard-default-operational","LastLogIndex":147,"LastLeadershipChangeTime":"2026-04-08 00:46:45.939","FollowerInitialSyncStatus":true,"FollowerInfo":[],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"200.5 μs","CurrentTerm":2,"LastTerm":2,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-default-operational","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":0,"TxCohortCacheSize":0,"PeerVotingStates":"member-1-shard-default-operational: true, member-3-shard-default-operational: true","LastLogTerm":2,"StatRetrievalError":null,"CommitIndex":147,"SnapshotTerm":2,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-2-shard-default-operational","LeadershipChangeCount":1,"InMemoryJournalDataSize":94084},"timestamp":1775609517,"status":200} 
 </msg>
<msg time="2026-04-08T00:51:57.062486" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:51:57.056221" elapsed="0.006290"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:57.054043" elapsed="0.008511"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:57.062755" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:57.062601" elapsed="0.000223"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:57.053997" elapsed="0.008864"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:57.066613" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-2-shard-default-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"ReadWriteTransactionCount":0,"SnapshotIndex":146,"InMemoryJournalLogSize":1,"ReplicatedToAllIndex":146,"Leader":"member-1-shard-default-operational","LastIndex":147,"RaftState":"Follower","LastCommittedTransactionTime":"1970-01-01 00:00:00.000","LastApplied":147,"PeerAddresses":"member-1-shard-default-operational: pekko:\/\/opendaylight-cluster-data@10.30.170.48:2550\/user\/shardmanager-operational\/member-1-shard-default-operational, member-3-shard-default-operational: pekko:\/\/opendaylight-cluster-data@10.30.171.110:2550\/user\/shardmanager-operational\/member-3-shard-default-operational","LastLogIndex":147,"LastLeadershipChangeTime":"2026-04-08 00:46:45.939","FollowerInitialSyncStatus":true,"FollowerInfo":[],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"200.5 μs","CurrentTerm":2,"LastTerm":2,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-default-operational","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":0,"TxCohortCacheSize":0,"PeerVotingStates":"member-1-shard-default-operational: true, member-3-shard-default-operational: true","LastLogTerm":2,"StatRetrievalError":null,"CommitIndex":147,"SnapshotTerm":2,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-2-shard-default-operational","LeadershipChangeCount":1,"InMemoryJournalDataSize":94084},"timestamp":1775609517,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:57.063952" elapsed="0.002745"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:57.063697" elapsed="0.003049"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:57.063678" elapsed="0.003105"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:57.070266" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:57.067188" elapsed="0.003143"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:57.066864" elapsed="0.003514"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:57.066840" elapsed="0.003572"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:57.071178" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:57.070633" elapsed="0.000585"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:57.071647" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:57.071319" elapsed="0.000409"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:57.072426" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:57.071985" elapsed="0.000478"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:57.071761" elapsed="0.000754"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:57.071292" elapsed="0.001253"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:57.073310" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:57.072779" elapsed="0.000569"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:57.073770" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:57.073446" elapsed="0.000405"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:57.074541" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:57.074107" elapsed="0.000471"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:57.073884" elapsed="0.000745"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:57.073421" elapsed="0.001237"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:51:57.074866" elapsed="0.000501"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:51:57.075983" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:57.075596" elapsed="0.000423"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:51:57.076255" elapsed="0.002686"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:51:57.063282" elapsed="0.015721"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:51:57.079288" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:51:57.079175" elapsed="0.000158"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:57.079110" elapsed="0.000261"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:51:57.082380" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-2-shard-default-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp"...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:51:57.079605" elapsed="0.002830"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:51:57.082518" elapsed="0.000063"/>
</return>
<msg time="2026-04-08T00:51:57.082880" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-2-shard-default-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp"...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:51:57.047700" elapsed="0.035272"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:51:57.083150" elapsed="0.000046"/>
</return>
<msg time="2026-04-08T00:51:57.083459" level="INFO">${data_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-2-shard-default-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp"...</msg>
<var>${data_text}</var>
<arg>uri=${uri}</arg>
<arg>session=${session}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-08T00:51:57.046347" elapsed="0.037142"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:57.085619" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-2-shard-default-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 177560951...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:57.084553" elapsed="0.001160"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-08T00:51:57.085798" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:51:57.086090" level="INFO">${data_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-2-shard-default-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 177560951...</msg>
<var>${data_object}</var>
<arg>${data_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-08T00:51:57.083720" elapsed="0.002399"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:51:57.086607" level="INFO">${value} = {'AbortTransactionsCount': 0, 'CommitIndex': 147, 'CommittedTransactionsCount': 0, 'CurrentTerm': 2, 'FailedReadTransactionsCount': 0, 'FailedTransactionsCount': 0, 'FollowerInfo': [], 'FollowerInitia...</msg>
<var>${value}</var>
<arg>${data_object}</arg>
<arg>value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:51:57.086294" elapsed="0.000341"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:51:57.087195" level="INFO">${raft_property} = Follower</msg>
<var>${raft_property}</var>
<arg>${value}</arg>
<arg>${property}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:51:57.086792" elapsed="0.000430"/>
</kw>
<return>
<value>${raft_property}</value>
<status status="PASS" start="2026-04-08T00:51:57.087269" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:51:57.087421" level="INFO">${raft_state} = Follower</msg>
<var>${raft_state}</var>
<arg>RaftState</arg>
<arg>${shard_name}</arg>
<arg>${shard_type}</arg>
<arg>${member_index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft property.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T00:51:56.887989" elapsed="0.199457"/>
</kw>
<return>
<value>${raft_state}</value>
<status status="PASS" start="2026-04-08T00:51:57.087504" elapsed="0.000025"/>
</return>
<msg time="2026-04-08T00:51:57.087649" level="INFO">${raft_state} = Follower</msg>
<var>${raft_state}</var>
<arg>shard_name=${shard_name}</arg>
<arg>shard_type=${ds_type}</arg>
<arg>member_index=${index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft status.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T00:51:56.887197" elapsed="0.200476"/>
</kw>
<if>
<branch type="IF" condition="'Follower' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${follower_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-08T00:51:57.087967" elapsed="0.000219"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:57.087753" elapsed="0.000584"/>
</branch>
<branch type="ELSE IF" condition="'Leader' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${leader_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:57.088509" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:57.088364" elapsed="0.000201"/>
</branch>
<branch type="ELSE IF" condition="${validate}">
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized Raft state: ${raft_state}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:57.088745" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:57.088588" elapsed="0.000209"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:57.087736" elapsed="0.001083"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T00:51:56.887015" elapsed="0.201830"/>
</iter>
<iter>
<kw name="Get_Raft_State_Of_Shard_At_Member" owner="ClusterManagement">
<kw name="Get_Raft_Property_From_Shard_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:57.092040" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:57.091190" elapsed="0.000941"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:51:57.092321" elapsed="0.000031"/>
</return>
<msg time="2026-04-08T00:51:57.092586" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:51:57.090647" elapsed="0.001966"/>
</kw>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Get_As_Json_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:57.140585" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:57.140214" elapsed="0.000399"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:51:57.141390" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:51:57.141123" elapsed="0.000344">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-08T00:51:57.141600" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:51:57.140791" elapsed="0.000833"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:51:57.142190" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:51:57.141789" elapsed="0.000429"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T00:51:57.142512" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-08T00:51:57.142659" level="INFO">${template} = /rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T00:51:57.142377" elapsed="0.000307"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:57.143084" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:57.142838" elapsed="0.000290"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:57.144067" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:57.143815" elapsed="0.000295"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-08T00:51:57.144551" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-08T00:51:57.144285" elapsed="0.000292"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:57.144923" elapsed="0.000022"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:57.145122" elapsed="0.000024"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:57.145311" elapsed="0.000021"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-08T00:51:57.144791" elapsed="0.000577"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-08T00:51:57.144648" elapsed="0.000750"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-08T00:51:57.145441" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:51:57.145596" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-08T00:51:57.143498" elapsed="0.002123"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:57.143214" elapsed="0.002439"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:57.145821" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:57.145677" elapsed="0.000199"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:57.143193" elapsed="0.002703"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:57.146477" level="INFO">${final_text} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:57.146035" elapsed="0.000469"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T00:51:57.146552" 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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="PASS" start="2026-04-08T00:51:57.139585" elapsed="0.007089"/>
</kw>
<msg time="2026-04-08T00:51:57.146727" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:51:57.127801" elapsed="0.018978"/>
</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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:57.158590" elapsed="0.000029"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:57.170472" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:57.182002" elapsed="0.000027"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:57.182209" elapsed="0.000023"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:57.182385" elapsed="0.000021"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:57.182744" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:57.182603" elapsed="0.000197"/>
</branch>
<status status="NOT RUN" start="2026-04-08T00:51:57.182588" elapsed="0.000234"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:57.182961" elapsed="0.000020"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:57.183127" elapsed="0.000020"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:57.183308" elapsed="0.000021"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-08T00:51:57.182558" elapsed="0.000804"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-08T00:51:57.182459" elapsed="0.000929"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:57.183532" elapsed="0.000021"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-08T00:51:57.183608" elapsed="0.000015"/>
</return>
<msg time="2026-04-08T00:51:57.183722" level="INFO">${uri} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-08T00:51:57.123787" elapsed="0.059960"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:51:57.184986" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:51:57.184752" elapsed="0.000296">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-08T00:51:57.185138" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:51:57.184404" elapsed="0.000776"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:57.185495" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:57.185255" elapsed="0.000296"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:57.186022" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:57.185736" elapsed="0.000312"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:57.185574" elapsed="0.000509"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:57.185236" elapsed="0.000868"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:51:57.188301" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:51:57.186266" elapsed="0.002062"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-08T00:51:57.188378" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:51:57.188530" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:51:57.184067" elapsed="0.004487"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:51:57.189789" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:51:57.189547" elapsed="0.000305">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-08T00:51:57.189994" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:51:57.189216" elapsed="0.000804"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-08T00:51:57.190245" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-08T00:51:57.190093" elapsed="0.000211"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:57.190073" elapsed="0.000254"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:57.190471" elapsed="0.000021"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:57.190648" elapsed="0.000020"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-08T00:51:57.190712" elapsed="0.000016"/>
</return>
<msg time="2026-04-08T00:51:57.192648" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:51:57.188881" elapsed="0.003795"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:57.194031" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:57.193785" elapsed="0.000292"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:57.194485" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:57.194243" elapsed="0.000285"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:51:57.211051" level="INFO">GET Request : url=http://10.30.171.110:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 path_url=/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0u16rl3earouwvehy59feej101.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:51:57.212005" level="INFO">GET Response : url=http://10.30.171.110:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Transfer-Encoding': 'chunked'} 
 body={"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","hidden-symmetric-keys","encrypted-private-keys","asymmetrically-encrypted-value-format","cms-encrypted-data-format","cleartext-private-keys","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["ssh-client-keepalives","client-ident-hostbased","client-ident-publickey","client-ident-password"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-ex... (set the log level to DEBUG or TRACE to see the full content) 
 </msg>
<msg time="2026-04-08T00:51:57.212479" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:51:57.196693" elapsed="0.015847"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:57.194595" elapsed="0.018068"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:57.213067" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:57.212723" elapsed="0.000522"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:57.194576" elapsed="0.018718"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:57.221695" level="INFO">{"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","hidden-symmetric-keys","encrypted-private-keys","asymmetrically-encrypted-value-format","cms-encrypted-data-format","cleartext-private-keys","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["ssh-client-keepalives","client-ident-hostbased","client-ident-publickey","client-ident-password"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-experimenter-types?revision=2015-10-20","namespace":"urn:opendaylight:openflowplugin:experimenter:types","conformance-type":"import"},{"name":"ietf-ip_2018-02-22","revision":"2018-02-22","schema":"/rests/modules/ietf-ip?revision=2018-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-ip","conformance-type":"import","feature":["ipv6-privacy-autoconf","ipv4-non-contiguous-netmasks"]},{"name":"ietf-tcp-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-client","conformance-type":"import","feature":["local-binding-supported","tcp-client-keepalives"]},{"name":"node-config_2014-10-15","revision":"2014-10-15","schema":"/rests/modules/node-config?revision=2014-10-15","namespace":"urn:opendaylight:module:config","conformance-type":"import"},{"name":"ietf-restconf_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf","conformance-type":"import"},{"name":"ietf-datastores_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-datastores?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-datastores","conformance-type":"import"},{"name":"ietf-yang-patch_2017-02-22","revision":"2017-02-22","schema":"/rests/modules/ietf-yang-patch?revision=2017-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-patch","conformance-type":"import"},{"name":"sal-group_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-group?revision=2013-09-18","namespace":"urn:opendaylight:group:service","conformance-type":"import"},{"name":"odl-codegen-extensions_2024-06-27","revision":"2024-06-27","schema":"/rests/modules/odl-codegen-extensions?revision=2024-06-27","namespace":"urn:opendaylight:yang:extension:codegen","conformance-type":"import"},{"name":"sal-meter_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-meter?revision=2013-09-18","namespace":"urn:opendaylight:meter:service","conformance-type":"import"},{"name":"ietf-interfaces_2018-02-20","revision":"2018-02-20","schema":"/rests/modules/ietf-interfaces?revision=2018-02-20","namespace":"urn:ietf:params:xml:ns:yang:ietf-interfaces","conformance-type":"import","feature":["pre-provisioning","if-mib","arbitrary-names"]},{"name":"opendaylight-l2-types_2013-08-27","revision":"2013-08-27","schema":"/rests/modules/opendaylight-l2-types?revision=2013-08-27","namespace":"urn:opendaylight:l2:types","conformance-type":"import"},{"name":"opendaylight-flow-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-flow-types?revision=2013-10-26","namespace":"urn:opendaylight:flow:types","conformance-type":"import"},{"name":"lldp-speaker-config_2016-05-12","revision":"2016-05-12","schema":"/rests/modules/lldp-speaker-config?revision=2016-05-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker:config","conformance-type":"import"},{"name":"aaa-cert_2015-11-26","revision":"2015-11-26","schema":"/rests/modules/aaa-cert?revision=2015-11-26","namespace":"urn:opendaylight:yang:aaa:cert","conformance-type":"import"},{"name":"openflow-action_2015-02-03","revision":"2015-02-03","schema":"/rests/modules/openflow-action?revision=2015-02-03","namespace":"urn:opendaylight:openflow:common:action","conformance-type":"import"},{"name":"openflow-approved-extensions_2016-08-02","revision":"2016-08-02","schema":"/rests/modules/openflow-approved-extensions?revision=2016-08-02","namespace":"urn:opendaylight:openflow:approved:extensions","conformance-type":"import"},{"name":"nc-notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/nc-notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netmod:notification","conformance-type":"import"},{"name":"ietf-netconf-nmda_2019-01-07","revision":"2019-01-07","schema":"/rests/modules/ietf-netconf-nmda?revision=2019-01-07","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-nmda","conformance-type":"import","feature":["with-defaults","origin"]},{"name":"ietf-tcp-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-common","conformance-type":"import","feature":["keepalives-supported"]},{"name":"network-topology_2013-10-21","revision":"2013-10-21","schema":"/rests/modules/network-topology?revision=2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:network-topology","conformance-type":"import"},{"name":"aaa-encrypt-service-config_2024-02-02","revision":"2024-02-02","schema":"/rests/modules/aaa-encrypt-service-config?revision=2024-02-02","namespace":"config:aaa:authn:encrypt:service:config","conformance-type":"import"},{"name":"openflow-instruction_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-instruction?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:instruction","conformance-type":"import"},{"name":"ietf-tls-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-client","conformance-type":"import","feature":["client-ident-x509-cert","server-auth-x509-cert"]},{"name":"opendaylight-group-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-group-statistics?revision=2013-11-11","namespace":"urn:opendaylight:group:statistics","conformance-type":"import"},{"name":"cluster-admin_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/cluster-admin?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:cluster:admin","conformance-type":"import"},{"name":"opendaylight-flow-statistics_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-flow-statistics?revision=2013-08-19","namespace":"urn:opendaylight:flow:statistics","conformance-type":"import"},{"name":"opendaylight-table-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-table-types?revision=2013-10-26","namespace":"urn:opendaylight:table:types","conformance-type":"import"},{"name":"forwarding-rules-manager-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/forwarding-rules-manager-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:forwardingrules-manager:config","conformance-type":"import"},{"name":"odl-srm-types_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-types?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:types","conformance-type":"import"},{"name":"ietf-x509-cert-to-name_2014-12-10","revision":"2014-12-10","schema":"/rests/modules/ietf-x509-cert-to-name?revision=2014-12-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-x509-cert-to-name","conformance-type":"import"},{"name":"flow-node-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-node-inventory?revision=2013-08-19","namespace":"urn:opendaylight:flow:inventory","conformance-type":"import"},{"name":"flow-errors_2013-11-16","revision":"2013-11-16","schema":"/rests/modules/flow-errors?revision=2013-11-16","namespace":"urn:opendaylight:flow:errors","conformance-type":"import"},{"name":"ietf-netconf_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:netconf:base:1.0","conformance-type":"import","feature":["xpath","url","rollback-on-error","validate","startup","candidate","confirmed-commit","writable-running"]},{"name":"iana-ssh-public-key-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-public-key-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-public-key-algs","conformance-type":"import"},{"name":"aaa-cert-mdsal_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/aaa-cert-mdsal?revision=2016-03-21","namespace":"urn:opendaylight:yang:aaa:cert:mdsal","conformance-type":"import"},{"name":"odl-device-notification_2024-02-18","revision":"2024-02-18","schema":"/rests/modules/odl-device-notification?revision=2024-02-18","namespace":"urn:opendaylight:device:notification","conformance-type":"import"},{"name":"ietf-origin_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-origin?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-origin","conformance-type":"import"},{"name":"openflow-augments_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-augments?revision=2015-02-25","namespace":"urn:opendaylight:openflow:augments","conformance-type":"import"},{"name":"iana-ssh-encryption-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-encryption-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-encryption-algs","conformance-type":"import"},{"name":"ietf-truststore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-truststore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-truststore","conformance-type":"import","feature":["inline-definitions-supported"]},{"name":"distributed-datastore-provider_2025-01-30","revision":"2025-01-30","schema":"/rests/modules/distributed-datastore-provider?revision=2025-01-30","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:distributed-datastore-provider","conformance-type":"import"},{"name":"opendaylight-group-types_2013-10-18","revision":"2013-10-18","schema":"/rests/modules/opendaylight-group-types?revision=2013-10-18","namespace":"urn:opendaylight:group:types","conformance-type":"import"},{"name":"sal-remote-augment_2023-11-03","revision":"2023-11-03","schema":"/rests/modules/sal-remote-augment?revision=2023-11-03","namespace":"urn:sal:restconf:event:subscription","conformance-type":"import"},{"name":"opendaylight-ipv6-arbitrary-bitmask-fields_2016-02-24","revision":"2016-02-24","schema":"/rests/modules/opendaylight-ipv6-arbitrary-bitmask-fields?revision=2016-02-24","namespace":"urn:opendaylight:opendaylight-ipv6-arbitrary-bitmask-fields","conformance-type":"import"},{"name":"sal-flows-batch_2016-03-14","revision":"2016-03-14","schema":"/rests/modules/sal-flows-batch?revision=2016-03-14","namespace":"urn:opendaylight:flows:service","conformance-type":"import"},{"name":"ietf-tls-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-common","conformance-type":"import","feature":["tls12","hello-params","tls13"]},{"name":"openflow-types_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-types?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:types","conformance-type":"import"},{"name":"ietf-netconf-with-defaults_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf-with-defaults?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults","conformance-type":"import"},{"name":"odl-srm-ops_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-ops?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:ops","conformance-type":"import"},{"name":"odl-general-entity_2015-09-30","revision":"2015-09-30","schema":"/rests/modules/odl-general-entity?revision=2015-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:mdsal:core:general-entity","conformance-type":"import"},{"name":"iana-ssh-key-exchange-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-key-exchange-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-key-exchange-algs","conformance-type":"import"},{"name":"node-ssl-connection-error_2019-07-23","revision":"2019-07-23","schema":"/rests/modules/node-ssl-connection-error?revision=2019-07-23","namespace":"urn:opendaylight:node-ssl-connection-error:service","conformance-type":"import"},{"name":"openflow-protocol_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-protocol?revision=2013-07-31","namespace":"urn:opendaylight:openflow:protocol","conformance-type":"import"},{"name":"ietf-udp-server_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-server?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-server","conformance-type":"import"},{"name":"ietf-keystore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-keystore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-keystore","conformance-type":"import","feature":["asymmetric-keys","inline-definitions-supported"]},{"name":"aaa_2016-12-14","revision":"2016-12-14","schema":"/rests/modules/aaa?revision=2016-12-14","namespace":"urn:opendaylight:params:xml:ns:yang:aaa","conformance-type":"import"},{"name":"aaa-cert-rpc_2015-12-15","revision":"2015-12-15","schema":"/rests/modules/aaa-cert-rpc?revision=2015-12-15","namespace":"urn:opendaylight:yang:aaa:cert:rpc","conformance-type":"import"},{"name":"system-notifications_2013-09-27","revision":"2013-09-27","schema":"/rests/modules/system-notifications?revision=2013-09-27","namespace":"urn:opendaylight:openflow:system","conformance-type":"import"},{"name":"sal-flat-batch_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/sal-flat-batch?revision=2016-03-21","namespace":"urn:opendaylight:flat-batch:service","conformance-type":"import"},{"name":"notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netconf:notification:1.0","conformance-type":"import"},{"name":"sal-remote_2014-01-14","revision":"2014-01-14","schema":"/rests/modules/sal-remote?revision=2014-01-14","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:remote","conformance-type":"import"},{"name":"yang-ext_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/yang-ext?revision=2013-07-09","namespace":"urn:opendaylight:yang:extension:yang-ext","conformance-type":"import"},{"name":"opendaylight-multipart-types_2017-01-12","revision":"2017-01-12","schema":"/rests/modules/opendaylight-multipart-types?revision=2017-01-12","namespace":"urn:opendaylight:multipart:types","conformance-type":"import"},{"name":"opendaylight-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-inventory?revision=2013-08-19","namespace":"urn:opendaylight:inventory","conformance-type":"import"},{"name":"sal-queue_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-queue?revision=2015-03-05","namespace":"urn:opendaylight:queue:service","conformance-type":"import"},{"name":"sal-groups-batch_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/sal-groups-batch?revision=2016-03-15","namespace":"urn:opendaylight:groups:service","conformance-type":"import"},{"name":"arbitrator-reconcile_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/arbitrator-reconcile?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:arbitrator-reconcile:service","conformance-type":"import"},{"name":"ietf-yang-metadata_2016-08-05","revision":"2016-08-05","schema":"/rests/modules/ietf-yang-metadata?revision=2016-08-05","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-metadata","conformance-type":"import"},{"name":"opendaylight-arbitrary-bitmask-fields_2016-01-30","revision":"2016-01-30","schema":"/rests/modules/opendaylight-arbitrary-bitmask-fields?revision=2016-01-30","namespace":"urn:opendaylight:arbitrary:bitmask:fields","conformance-type":"import"},{"name":"ietf-udp-client_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-client?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-client","conformance-type":"import","feature":["local-binding"]},{"name":"opendaylight-meter-types_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/opendaylight-meter-types?revision=2013-09-18","namespace":"urn:opendaylight:meter:types","conformance-type":"import"},{"name":"opendaylight-action-types_2013-11-12","revision":"2013-11-12","schema":"/rests/modules/opendaylight-action-types?revision=2013-11-12","namespace":"urn:opendaylight:action:types","conformance-type":"import"},{"name":"sal-role_2015-07-27","revision":"2015-07-27","schema":"/rests/modules/sal-role?revision=2015-07-27","namespace":"urn:opendaylight:role:service","conformance-type":"import"},{"name":"openflow-provider-config_2016-05-10","revision":"2016-05-10","schema":"/rests/modules/openflow-provider-config?revision=2016-05-10","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:provider:config","conformance-type":"import"},{"name":"odl-serviceutils-upgrade_2018-07-02","revision":"2018-07-02","schema":"/rests/modules/odl-serviceutils-upgrade?revision=2018-07-02","namespace":"urn:opendaylight:serviceutils:upgrade","conformance-type":"import"},{"name":"opendaylight-match-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-match-types?revision=2013-10-26","namespace":"urn:opendaylight:model:match:types","conformance-type":"import"},{"name":"ietf-restconf-server_2024-08-14","revision":"2024-08-14","schema":"/rests/modules/ietf-restconf-server?revision=2024-08-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-server","conformance-type":"import","feature":["http-listen","https-listen"]},{"name":"reconciliation-result-state_2017-07-13","revision":"2017-07-13","schema":"/rests/modules/reconciliation-result-state?revision=2017-07-13","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:rf:state","conformance-type":"import"},{"name":"onf-extensions_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/onf-extensions?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf","conformance-type":"import"},{"name":"sal-table_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/sal-table?revision=2013-10-26","namespace":"urn:opendaylight:table:service","conformance-type":"import"},{"name":"iana-http-versions_2026-02-04","revision":"2026-02-04","schema":"/rests/modules/iana-http-versions?revision=2026-02-04","namespace":"urn:ietf:params:xml:ns:yang:iana-http-versions","conformance-type":"import"},{"name":"opendaylight-direct-statistics_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/opendaylight-direct-statistics?revision=2016-05-11","namespace":"urn:opendaylight:direct:statistics","conformance-type":"import"},{"name":"opendaylight-port-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-port-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:port","conformance-type":"import"},{"name":"sal-async-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/sal-async-config?revision=2017-06-19","namespace":"urn:opendaylight:async-config:service","conformance-type":"import"},{"name":"aaa-password-service-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-password-service-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:password:service:config","conformance-type":"import"},{"name":"ietf-yang-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-yang-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-types","conformance-type":"import"},{"name":"opendaylight-queue-statistics_2013-12-16","revision":"2013-12-16","schema":"/rests/modules/opendaylight-queue-statistics?revision=2013-12-16","namespace":"urn:opendaylight:queue:statistics","conformance-type":"import"},{"name":"sal-bundle_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/sal-bundle?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf:bundle:service","conformance-type":"import"},{"name":"ietf-restconf-subscribed-notifications_2019-11-17","revision":"2019-11-17","schema":"/rests/modules/ietf-restconf-subscribed-notifications?revision=2019-11-17","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-subscribed-notifications","conformance-type":"import"},{"name":"sal-meters-batch_2016-03-16","revision":"2016-03-16","schema":"/rests/modules/sal-meters-batch?revision=2016-03-16","namespace":"urn:opendaylight:meters:service","conformance-type":"import"},{"name":"odl-entity-owners","revision":"","schema":"/rests/modules/odl-entity-owners","namespace":"urn:opendaylight:params:xml:ns:yang:controller:entity-owners","conformance-type":"import"},{"name":"sal-experimenter-mp-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-mp-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-mp-message:service","conformance-type":"import"},{"name":"packet-processing_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/packet-processing?revision=2013-07-09","namespace":"urn:opendaylight:packet:service","conformance-type":"import"},{"name":"openflow-configuration_2014-06-30","revision":"2014-06-30","schema":"/rests/modules/openflow-configuration?revision=2014-06-30","namespace":"urn:opendaylight:openflow:config","conformance-type":"import"},{"name":"odl-srm-rpcs_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-rpcs?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:rpc","conformance-type":"import"},{"name":"ietf-netconf-acm_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-netconf-acm?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-acm","conformance-type":"import"},{"name":"iana-crypt-hash_2014-08-06","revision":"2014-08-06","schema":"/rests/modules/iana-crypt-hash?revision=2014-08-06","namespace":"urn:ietf:params:xml:ns:yang:iana-crypt-hash","conformance-type":"import","feature":["crypt-hash-sha-512","crypt-hash-sha-256","crypt-hash-md5"]},{"name":"openflow-extensible-match_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-extensible-match?revision=2015-02-25","namespace":"urn:opendaylight:openflow:oxm","conformance-type":"import"}],"module-set-id":"2"}}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:57.215630" elapsed="0.006564"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:57.215112" elapsed="0.007118"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:57.215067" elapsed="0.007188"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:57.224671" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:57.222535" elapsed="0.002187"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:57.222312" elapsed="0.002444"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:57.222295" elapsed="0.002485"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:57.225339" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:57.224947" elapsed="0.000419"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:57.225668" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:57.225436" elapsed="0.000289"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:57.226218" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:57.225905" elapsed="0.000339"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:57.225748" elapsed="0.000531"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:57.225418" elapsed="0.000882"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:57.226809" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:57.226456" elapsed="0.000379"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:57.227132" elapsed="0.000035"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:57.226904" elapsed="0.000301"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:57.227676" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:57.227386" elapsed="0.000316"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:57.227228" elapsed="0.000509"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:57.226886" elapsed="0.000872"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:51:57.227902" elapsed="0.000366"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:51:57.228718" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:57.228440" elapsed="0.000304"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:51:57.228895" elapsed="0.002150"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:51:57.214098" elapsed="0.017010"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:51:57.231298" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:51:57.231192" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:57.231172" elapsed="0.000193"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:51:57.239474" level="INFO">${text_normalized} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:51:57.231507" elapsed="0.007997"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:51:57.239555" elapsed="0.000031"/>
</return>
<msg time="2026-04-08T00:51:57.239713" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:51:57.192975" elapsed="0.046764"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:51:57.239800" elapsed="0.000027"/>
</return>
<msg time="2026-04-08T00:51:57.240138" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="PASS" start="2026-04-08T00:51:57.102634" elapsed="0.137562"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Json_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:57.240655" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:57.240323" elapsed="0.000453"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:57.240292" elapsed="0.000527"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:51:57.240880" elapsed="0.000069"/>
</return>
<arg>session=${session}</arg>
<arg>folder=${RESTCONF_MODULES_DIR}</arg>
<arg>verify=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Add arguments sensible for JSON data, return Get_Templated response text.
Optionally, verification against JSON data (may be iterated) is called.
Only subset of JSON data is verified and returned if JMES path is specified in
file ${folder}/jmespath.expr.</doc>
<status status="PASS" start="2026-04-08T00:51:57.097040" elapsed="0.144098"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:57.092695" elapsed="0.148569"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:57.092676" elapsed="0.148615"/>
</if>
<kw name="Resolve_Shard_Type_Class" owner="ClusterManagement">
<if>
<branch type="IF" condition="'${shard_type}' == 'config'">
<return>
<value>DistributedConfigDatastore</value>
<status status="NOT RUN" start="2026-04-08T00:51:57.242178" elapsed="0.000048"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:51:57.241943" elapsed="0.000327"/>
</branch>
<branch type="ELSE IF" condition="'${shard_type}' == 'operational'">
<return>
<value>DistributedOperationalDatastore</value>
<status status="PASS" start="2026-04-08T00:51:57.242541" elapsed="0.000069"/>
</return>
<status status="PASS" start="2026-04-08T00:51:57.242326" elapsed="0.000330"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:57.241910" elapsed="0.000804"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized shard type: ${shard_type}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:57.242937" elapsed="0.000065"/>
</kw>
<msg time="2026-04-08T00:51:57.243136" level="INFO">${type_class} = DistributedOperationalDatastore</msg>
<var>${type_class}</var>
<arg>shard_type=${shard_type}</arg>
<doc>Simple lookup for class name corresponding to desired type.</doc>
<status status="PASS" start="2026-04-08T00:51:57.241551" elapsed="0.001626"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:57.244003" level="INFO">${cluster_index} = 3</msg>
<var>${cluster_index}</var>
<arg>${member_index}+${NODE_ROLE_INDEX_START}-1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:57.243347" elapsed="0.000684"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:57.245150" level="INFO">${uri} = jolokia/read/org.opendaylight.controller:Category=Shards,name=member-3-shard-default-operational,type=DistributedOperationalDatastore</msg>
<var>${uri}</var>
<arg>${JOLOKIA_READ_URI}:Category=Shards,name=member-${cluster_index}-shard-${shard_name}-${shard_type},type=${type_class}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:57.244215" elapsed="0.001183"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:57.252350" level="INFO">jolokia/read/org.opendaylight.controller:Category=Shards,name=member-3-shard-default-operational,type=DistributedOperationalDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:57.252029" elapsed="0.000407"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:57.252956" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:57.252677" elapsed="0.000359"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:51:57.261331" level="INFO">GET Request : url=http://10.30.171.110:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-3-shard-default-operational,type=DistributedOperationalDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-3-shard-default-operational,type=DistributedOperationalDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:51:57.261394" level="INFO">GET Response : url=http://10.30.171.110:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-3-shard-default-operational,type=DistributedOperationalDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Wed, 08 Apr 2026 00:51:57 GMT', 'Expires': 'Tue, 07 Apr 2026 23:51:57 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-3-shard-default-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"ReadWriteTransactionCount":0,"SnapshotIndex":146,"InMemoryJournalLogSize":1,"ReplicatedToAllIndex":146,"Leader":"member-1-shard-default-operational","LastIndex":147,"RaftState":"Follower","LastApplied":147,"LastCommittedTransactionTime":"1970-01-01 00:00:00.000","PeerAddresses":"member-1-shard-default-operational: pekko:\/\/opendaylight-cluster-data@10.30.170.48:2550\/user\/shardmanager-operational\/member-1-shard-default-operational, member-2-shard-default-operational: pekko:\/\/opendaylight-cluster-data@10.30.170.131:2550\/user\/shardmanager-operational\/member-2-shard-default-operational","LastLogIndex":147,"LastLeadershipChangeTime":"2026-04-08 00:46:45.941","FollowerInitialSyncStatus":true,"FollowerInfo":[],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"363.9 μs","CurrentTerm":2,"LastTerm":2,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-default-operational","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":0,"TxCohortCacheSize":0,"PeerVotingStates":"member-1-shard-default-operational: true, member-2-shard-default-operational: true","LastLogTerm":2,"StatRetrievalError":null,"CommitIndex":147,"SnapshotTerm":2,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-3-shard-default-operational","LeadershipChangeCount":1,"InMemoryJournalDataSize":94084},"timestamp":1775609517,"status":200} 
 </msg>
<msg time="2026-04-08T00:51:57.261563" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:51:57.255202" elapsed="0.006387"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:57.253284" elapsed="0.008348"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:57.261832" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:57.261679" elapsed="0.000217"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:57.253136" elapsed="0.008797"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:57.265523" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-3-shard-default-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"ReadWriteTransactionCount":0,"SnapshotIndex":146,"InMemoryJournalLogSize":1,"ReplicatedToAllIndex":146,"Leader":"member-1-shard-default-operational","LastIndex":147,"RaftState":"Follower","LastApplied":147,"LastCommittedTransactionTime":"1970-01-01 00:00:00.000","PeerAddresses":"member-1-shard-default-operational: pekko:\/\/opendaylight-cluster-data@10.30.170.48:2550\/user\/shardmanager-operational\/member-1-shard-default-operational, member-2-shard-default-operational: pekko:\/\/opendaylight-cluster-data@10.30.170.131:2550\/user\/shardmanager-operational\/member-2-shard-default-operational","LastLogIndex":147,"LastLeadershipChangeTime":"2026-04-08 00:46:45.941","FollowerInitialSyncStatus":true,"FollowerInfo":[],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"363.9 μs","CurrentTerm":2,"LastTerm":2,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-default-operational","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":0,"TxCohortCacheSize":0,"PeerVotingStates":"member-1-shard-default-operational: true, member-2-shard-default-operational: true","LastLogTerm":2,"StatRetrievalError":null,"CommitIndex":147,"SnapshotTerm":2,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-3-shard-default-operational","LeadershipChangeCount":1,"InMemoryJournalDataSize":94084},"timestamp":1775609517,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:57.263111" elapsed="0.002473"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:57.262763" elapsed="0.002856"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:57.262744" elapsed="0.002899"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:57.268253" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:57.265926" elapsed="0.002390"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:57.265700" elapsed="0.002665"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:57.265683" elapsed="0.002716"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:57.269196" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:57.268637" elapsed="0.000598"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:57.269668" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:57.269336" elapsed="0.000414"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:57.270458" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:57.270007" elapsed="0.000487"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:57.269783" elapsed="0.000762"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:57.269309" elapsed="0.001266"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:57.271356" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:57.270813" elapsed="0.000580"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:57.271814" elapsed="0.000142"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:57.271491" elapsed="0.000521"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:57.272711" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:57.272296" elapsed="0.000451"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:57.272045" elapsed="0.000757"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:57.271466" elapsed="0.001366"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:51:57.273038" elapsed="0.000506"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:51:57.274179" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:57.273773" elapsed="0.000444"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:51:57.274431" elapsed="0.003072"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:51:57.262348" elapsed="0.015241"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:51:57.277958" elapsed="0.000022"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:51:57.277805" elapsed="0.000217"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:57.277741" elapsed="0.000334"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:51:57.281266" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-3-shard-default-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp"...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:51:57.278457" elapsed="0.002862"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:51:57.281402" elapsed="0.000067"/>
</return>
<msg time="2026-04-08T00:51:57.281764" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-3-shard-default-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp"...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:51:57.247030" elapsed="0.034830"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:51:57.281995" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:51:57.282291" level="INFO">${data_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-3-shard-default-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp"...</msg>
<var>${data_text}</var>
<arg>uri=${uri}</arg>
<arg>session=${session}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-08T00:51:57.245623" elapsed="0.036696"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:57.284418" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-3-shard-default-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 177560951...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:57.283375" elapsed="0.001137"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-08T00:51:57.284596" elapsed="0.000031"/>
</return>
<msg time="2026-04-08T00:51:57.284889" level="INFO">${data_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-3-shard-default-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 177560951...</msg>
<var>${data_object}</var>
<arg>${data_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-08T00:51:57.282544" elapsed="0.002373"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:51:57.285401" level="INFO">${value} = {'AbortTransactionsCount': 0, 'CommitIndex': 147, 'CommittedTransactionsCount': 0, 'CurrentTerm': 2, 'FailedReadTransactionsCount': 0, 'FailedTransactionsCount': 0, 'FollowerInfo': [], 'FollowerInitia...</msg>
<var>${value}</var>
<arg>${data_object}</arg>
<arg>value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:51:57.285074" elapsed="0.000355"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:51:57.285972" level="INFO">${raft_property} = Follower</msg>
<var>${raft_property}</var>
<arg>${value}</arg>
<arg>${property}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:51:57.285586" elapsed="0.000412"/>
</kw>
<return>
<value>${raft_property}</value>
<status status="PASS" start="2026-04-08T00:51:57.286056" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:51:57.286243" level="INFO">${raft_state} = Follower</msg>
<var>${raft_state}</var>
<arg>RaftState</arg>
<arg>${shard_name}</arg>
<arg>${shard_type}</arg>
<arg>${member_index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft property.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T00:51:57.089952" elapsed="0.196317"/>
</kw>
<return>
<value>${raft_state}</value>
<status status="PASS" start="2026-04-08T00:51:57.286327" elapsed="0.000027"/>
</return>
<msg time="2026-04-08T00:51:57.286481" level="INFO">${raft_state} = Follower</msg>
<var>${raft_state}</var>
<arg>shard_name=${shard_name}</arg>
<arg>shard_type=${ds_type}</arg>
<arg>member_index=${index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft status.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T00:51:57.089197" elapsed="0.197308"/>
</kw>
<if>
<branch type="IF" condition="'Follower' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${follower_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-08T00:51:57.286801" elapsed="0.000192"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:57.286586" elapsed="0.000444"/>
</branch>
<branch type="ELSE IF" condition="'Leader' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${leader_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:57.287221" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:57.287054" elapsed="0.000224"/>
</branch>
<branch type="ELSE IF" condition="${validate}">
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized Raft state: ${raft_state}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:57.287439" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:57.287301" elapsed="0.000189"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:57.286568" elapsed="0.000944"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T00:51:57.089013" elapsed="0.198523"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-08T00:51:56.690927" elapsed="0.596643"/>
</for>
<return>
<value>${leader_list}</value>
<value>${follower_list}</value>
<status status="PASS" start="2026-04-08T00:51:57.287613" elapsed="0.000026"/>
</return>
<msg time="2026-04-08T00:51:57.287813" level="INFO">${leader_list} = [1]</msg>
<msg time="2026-04-08T00:51:57.287860" level="INFO">${follower_list} = [2, 3]</msg>
<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="PASS" start="2026-04-08T00:51:56.686953" elapsed="0.600934"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T00:51:57.288347" level="INFO">Length is 1.</msg>
<msg time="2026-04-08T00:51:57.288423" level="INFO">${leader_count} = 1</msg>
<var>${leader_count}</var>
<arg>${leader_list}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T00:51:57.288062" elapsed="0.000384"/>
</kw>
<if>
<branch type="IF" condition="${leader_count} &lt; 1">
<kw name="Fail" owner="BuiltIn">
<arg>No leader found.</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:57.288724" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:57.288514" elapsed="0.000263"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:57.288496" elapsed="0.000303"/>
</if>
<kw name="Length Should Be" owner="BuiltIn">
<msg time="2026-04-08T00:51:57.290865" level="INFO">Length is 1.</msg>
<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="PASS" start="2026-04-08T00:51:57.288930" elapsed="0.001981"/>
</kw>
<kw name="Get From List" owner="Collections">
<msg time="2026-04-08T00:51:57.291409" level="INFO">${leader} = 1</msg>
<var>${leader}</var>
<arg>${leader_list}</arg>
<arg>0</arg>
<doc>Returns the value specified with an ``index`` from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:51:57.291109" elapsed="0.000326"/>
</kw>
<return>
<value>${leader}</value>
<value>${follower_list}</value>
<status status="PASS" start="2026-04-08T00:51:57.291482" elapsed="0.000028"/>
</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="PASS" start="2026-04-08T00:51:56.684404" elapsed="0.607231"/>
</kw>
<var name="${shard_name}">default</var>
<status status="PASS" start="2026-04-08T00:51:56.684183" elapsed="0.607498"/>
</iter>
<var>${shard_name}</var>
<value>@{shard_name_list}</value>
<status status="PASS" start="2026-04-08T00:51:55.407301" elapsed="1.884412"/>
</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="PASS" start="2026-04-08T00:51:55.406891" elapsed="1.884877"/>
</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-04-08T00:51:57.296781" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:51:57.296395" elapsed="0.000413"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:51:57.297286" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:51:57.296966" elapsed="0.000346"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:51:57.297357" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:51:57.297520" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:51:57.296006" elapsed="0.001540"/>
</kw>
<kw name="Sort List" owner="Collections">
<arg>${index_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="PASS" start="2026-04-08T00:51:57.297698" elapsed="0.000152"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:51:57.298368" level="INFO">${ds_type} = config</msg>
<var>${ds_type}</var>
<arg>'${shard_type}' != 'config'</arg>
<arg>operational</arg>
<arg>config</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:51:57.298007" elapsed="0.000388"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:51:57.298792" level="INFO">${leader_list} = []</msg>
<var>${leader_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:51:57.298551" elapsed="0.000267"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:51:57.299216" level="INFO">${follower_list} = []</msg>
<var>${follower_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:51:57.298965" elapsed="0.000277"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_Raft_State_Of_Shard_At_Member" owner="ClusterManagement">
<kw name="Get_Raft_Property_From_Shard_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:57.302641" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:57.301776" elapsed="0.000956"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:51:57.302814" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:51:57.303079" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:51:57.301235" elapsed="0.001871"/>
</kw>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Get_As_Json_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:57.350735" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:57.350364" elapsed="0.000399"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:51:57.351525" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:51:57.351278" elapsed="0.000320">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-08T00:51:57.351691" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:51:57.350924" elapsed="0.000791"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:51:57.352282" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:51:57.351876" elapsed="0.000433"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T00:51:57.352604" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-08T00:51:57.352787" level="INFO">${template} = /rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T00:51:57.352469" elapsed="0.000344"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:57.353232" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:57.352968" elapsed="0.000310"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:57.354226" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:57.353956" elapsed="0.000315"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-08T00:51:57.354697" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-08T00:51:57.354430" elapsed="0.000293"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:57.355034" elapsed="0.000022"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:57.355283" elapsed="0.000025"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:57.355457" elapsed="0.000021"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-08T00:51:57.354903" elapsed="0.000612"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-08T00:51:57.354770" elapsed="0.000775"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-08T00:51:57.355587" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:51:57.355746" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-08T00:51:57.353633" elapsed="0.002138"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:57.353347" elapsed="0.002456"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:57.355973" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:57.355828" elapsed="0.000200"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:57.353328" elapsed="0.002721"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:57.356632" level="INFO">${final_text} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:57.356205" elapsed="0.000455"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T00:51:57.356707" 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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="PASS" start="2026-04-08T00:51:57.349744" elapsed="0.007086"/>
</kw>
<msg time="2026-04-08T00:51:57.356884" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:51:57.338015" elapsed="0.018921"/>
</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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:57.370058" 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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:57.381718" 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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:57.393376" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:57.393611" elapsed="0.000022"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:57.393786" elapsed="0.000021"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:57.394172" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:57.394006" elapsed="0.000224"/>
</branch>
<status status="NOT RUN" start="2026-04-08T00:51:57.393991" elapsed="0.000263"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:57.394393" elapsed="0.000021"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:57.394558" elapsed="0.000020"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:57.394721" elapsed="0.000020"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-08T00:51:57.393962" elapsed="0.000812"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-08T00:51:57.393862" elapsed="0.000937"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:57.394947" elapsed="0.000020"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-08T00:51:57.395021" elapsed="0.000016"/>
</return>
<msg time="2026-04-08T00:51:57.395137" level="INFO">${uri} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-08T00:51:57.334037" elapsed="0.061139"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:51:57.396398" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:51:57.396146" elapsed="0.000316">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-08T00:51:57.396551" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:51:57.395812" elapsed="0.000764"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:57.396887" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:57.396646" elapsed="0.000297"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:57.397457" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:57.397130" elapsed="0.000353"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:57.396967" elapsed="0.000551"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:57.396628" elapsed="0.000912"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:51:57.399720" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:51:57.397688" elapsed="0.002059"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-08T00:51:57.399796" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:51:57.399948" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:51:57.395491" elapsed="0.004482"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:51:57.401217" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:51:57.400941" elapsed="0.000340">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-08T00:51:57.401371" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:51:57.400609" elapsed="0.000786"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-08T00:51:57.401601" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-08T00:51:57.401467" elapsed="0.000192"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:57.401448" elapsed="0.000233"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:57.401829" elapsed="0.000021"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:57.402044" elapsed="0.000021"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-08T00:51:57.402111" elapsed="0.000015"/>
</return>
<msg time="2026-04-08T00:51:57.404076" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:51:57.400291" elapsed="0.003813"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:57.405543" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:57.405295" elapsed="0.000293"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:57.405980" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:57.405738" elapsed="0.000284"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:51:57.417019" level="INFO">GET Request : url=http://10.30.170.48:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 path_url=/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01ju7g9ih47awu1dako8be5k84o113.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:51:57.417483" level="INFO">GET Response : url=http://10.30.170.48:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Transfer-Encoding': 'chunked'} 
 body={"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","hidden-symmetric-keys","encrypted-private-keys","asymmetrically-encrypted-value-format","cms-encrypted-data-format","cleartext-private-keys","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["ssh-client-keepalives","client-ident-hostbased","client-ident-publickey","client-ident-password"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-ex... (set the log level to DEBUG or TRACE to see the full content) 
 </msg>
<msg time="2026-04-08T00:51:57.417689" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:51:57.408138" elapsed="0.009578"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:57.406089" elapsed="0.011671"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:57.417942" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:57.417786" elapsed="0.000220"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:57.406070" elapsed="0.011958"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:57.421993" level="INFO">{"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","hidden-symmetric-keys","encrypted-private-keys","asymmetrically-encrypted-value-format","cms-encrypted-data-format","cleartext-private-keys","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["ssh-client-keepalives","client-ident-hostbased","client-ident-publickey","client-ident-password"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-experimenter-types?revision=2015-10-20","namespace":"urn:opendaylight:openflowplugin:experimenter:types","conformance-type":"import"},{"name":"ietf-ip_2018-02-22","revision":"2018-02-22","schema":"/rests/modules/ietf-ip?revision=2018-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-ip","conformance-type":"import","feature":["ipv6-privacy-autoconf","ipv4-non-contiguous-netmasks"]},{"name":"ietf-tcp-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-client","conformance-type":"import","feature":["local-binding-supported","tcp-client-keepalives"]},{"name":"node-config_2014-10-15","revision":"2014-10-15","schema":"/rests/modules/node-config?revision=2014-10-15","namespace":"urn:opendaylight:module:config","conformance-type":"import"},{"name":"ietf-restconf_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf","conformance-type":"import"},{"name":"ietf-datastores_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-datastores?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-datastores","conformance-type":"import"},{"name":"ietf-yang-patch_2017-02-22","revision":"2017-02-22","schema":"/rests/modules/ietf-yang-patch?revision=2017-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-patch","conformance-type":"import"},{"name":"sal-group_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-group?revision=2013-09-18","namespace":"urn:opendaylight:group:service","conformance-type":"import"},{"name":"odl-codegen-extensions_2024-06-27","revision":"2024-06-27","schema":"/rests/modules/odl-codegen-extensions?revision=2024-06-27","namespace":"urn:opendaylight:yang:extension:codegen","conformance-type":"import"},{"name":"sal-meter_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-meter?revision=2013-09-18","namespace":"urn:opendaylight:meter:service","conformance-type":"import"},{"name":"ietf-interfaces_2018-02-20","revision":"2018-02-20","schema":"/rests/modules/ietf-interfaces?revision=2018-02-20","namespace":"urn:ietf:params:xml:ns:yang:ietf-interfaces","conformance-type":"import","feature":["pre-provisioning","if-mib","arbitrary-names"]},{"name":"opendaylight-l2-types_2013-08-27","revision":"2013-08-27","schema":"/rests/modules/opendaylight-l2-types?revision=2013-08-27","namespace":"urn:opendaylight:l2:types","conformance-type":"import"},{"name":"opendaylight-flow-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-flow-types?revision=2013-10-26","namespace":"urn:opendaylight:flow:types","conformance-type":"import"},{"name":"lldp-speaker-config_2016-05-12","revision":"2016-05-12","schema":"/rests/modules/lldp-speaker-config?revision=2016-05-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker:config","conformance-type":"import"},{"name":"aaa-cert_2015-11-26","revision":"2015-11-26","schema":"/rests/modules/aaa-cert?revision=2015-11-26","namespace":"urn:opendaylight:yang:aaa:cert","conformance-type":"import"},{"name":"openflow-action_2015-02-03","revision":"2015-02-03","schema":"/rests/modules/openflow-action?revision=2015-02-03","namespace":"urn:opendaylight:openflow:common:action","conformance-type":"import"},{"name":"openflow-approved-extensions_2016-08-02","revision":"2016-08-02","schema":"/rests/modules/openflow-approved-extensions?revision=2016-08-02","namespace":"urn:opendaylight:openflow:approved:extensions","conformance-type":"import"},{"name":"nc-notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/nc-notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netmod:notification","conformance-type":"import"},{"name":"ietf-netconf-nmda_2019-01-07","revision":"2019-01-07","schema":"/rests/modules/ietf-netconf-nmda?revision=2019-01-07","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-nmda","conformance-type":"import","feature":["with-defaults","origin"]},{"name":"ietf-tcp-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-common","conformance-type":"import","feature":["keepalives-supported"]},{"name":"network-topology_2013-10-21","revision":"2013-10-21","schema":"/rests/modules/network-topology?revision=2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:network-topology","conformance-type":"import"},{"name":"aaa-encrypt-service-config_2024-02-02","revision":"2024-02-02","schema":"/rests/modules/aaa-encrypt-service-config?revision=2024-02-02","namespace":"config:aaa:authn:encrypt:service:config","conformance-type":"import"},{"name":"openflow-instruction_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-instruction?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:instruction","conformance-type":"import"},{"name":"ietf-tls-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-client","conformance-type":"import","feature":["client-ident-x509-cert","server-auth-x509-cert"]},{"name":"opendaylight-group-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-group-statistics?revision=2013-11-11","namespace":"urn:opendaylight:group:statistics","conformance-type":"import"},{"name":"cluster-admin_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/cluster-admin?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:cluster:admin","conformance-type":"import"},{"name":"opendaylight-flow-statistics_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-flow-statistics?revision=2013-08-19","namespace":"urn:opendaylight:flow:statistics","conformance-type":"import"},{"name":"opendaylight-table-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-table-types?revision=2013-10-26","namespace":"urn:opendaylight:table:types","conformance-type":"import"},{"name":"forwarding-rules-manager-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/forwarding-rules-manager-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:forwardingrules-manager:config","conformance-type":"import"},{"name":"odl-srm-types_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-types?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:types","conformance-type":"import"},{"name":"ietf-x509-cert-to-name_2014-12-10","revision":"2014-12-10","schema":"/rests/modules/ietf-x509-cert-to-name?revision=2014-12-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-x509-cert-to-name","conformance-type":"import"},{"name":"flow-node-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-node-inventory?revision=2013-08-19","namespace":"urn:opendaylight:flow:inventory","conformance-type":"import"},{"name":"flow-errors_2013-11-16","revision":"2013-11-16","schema":"/rests/modules/flow-errors?revision=2013-11-16","namespace":"urn:opendaylight:flow:errors","conformance-type":"import"},{"name":"ietf-netconf_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:netconf:base:1.0","conformance-type":"import","feature":["xpath","url","rollback-on-error","validate","startup","candidate","confirmed-commit","writable-running"]},{"name":"iana-ssh-public-key-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-public-key-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-public-key-algs","conformance-type":"import"},{"name":"aaa-cert-mdsal_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/aaa-cert-mdsal?revision=2016-03-21","namespace":"urn:opendaylight:yang:aaa:cert:mdsal","conformance-type":"import"},{"name":"odl-device-notification_2024-02-18","revision":"2024-02-18","schema":"/rests/modules/odl-device-notification?revision=2024-02-18","namespace":"urn:opendaylight:device:notification","conformance-type":"import"},{"name":"ietf-origin_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-origin?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-origin","conformance-type":"import"},{"name":"openflow-augments_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-augments?revision=2015-02-25","namespace":"urn:opendaylight:openflow:augments","conformance-type":"import"},{"name":"iana-ssh-encryption-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-encryption-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-encryption-algs","conformance-type":"import"},{"name":"ietf-truststore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-truststore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-truststore","conformance-type":"import","feature":["inline-definitions-supported"]},{"name":"distributed-datastore-provider_2025-01-30","revision":"2025-01-30","schema":"/rests/modules/distributed-datastore-provider?revision=2025-01-30","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:distributed-datastore-provider","conformance-type":"import"},{"name":"opendaylight-group-types_2013-10-18","revision":"2013-10-18","schema":"/rests/modules/opendaylight-group-types?revision=2013-10-18","namespace":"urn:opendaylight:group:types","conformance-type":"import"},{"name":"sal-remote-augment_2023-11-03","revision":"2023-11-03","schema":"/rests/modules/sal-remote-augment?revision=2023-11-03","namespace":"urn:sal:restconf:event:subscription","conformance-type":"import"},{"name":"opendaylight-ipv6-arbitrary-bitmask-fields_2016-02-24","revision":"2016-02-24","schema":"/rests/modules/opendaylight-ipv6-arbitrary-bitmask-fields?revision=2016-02-24","namespace":"urn:opendaylight:opendaylight-ipv6-arbitrary-bitmask-fields","conformance-type":"import"},{"name":"sal-flows-batch_2016-03-14","revision":"2016-03-14","schema":"/rests/modules/sal-flows-batch?revision=2016-03-14","namespace":"urn:opendaylight:flows:service","conformance-type":"import"},{"name":"ietf-tls-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-common","conformance-type":"import","feature":["tls12","hello-params","tls13"]},{"name":"openflow-types_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-types?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:types","conformance-type":"import"},{"name":"ietf-netconf-with-defaults_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf-with-defaults?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults","conformance-type":"import"},{"name":"odl-srm-ops_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-ops?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:ops","conformance-type":"import"},{"name":"odl-general-entity_2015-09-30","revision":"2015-09-30","schema":"/rests/modules/odl-general-entity?revision=2015-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:mdsal:core:general-entity","conformance-type":"import"},{"name":"iana-ssh-key-exchange-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-key-exchange-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-key-exchange-algs","conformance-type":"import"},{"name":"node-ssl-connection-error_2019-07-23","revision":"2019-07-23","schema":"/rests/modules/node-ssl-connection-error?revision=2019-07-23","namespace":"urn:opendaylight:node-ssl-connection-error:service","conformance-type":"import"},{"name":"openflow-protocol_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-protocol?revision=2013-07-31","namespace":"urn:opendaylight:openflow:protocol","conformance-type":"import"},{"name":"ietf-udp-server_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-server?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-server","conformance-type":"import"},{"name":"ietf-keystore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-keystore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-keystore","conformance-type":"import","feature":["asymmetric-keys","inline-definitions-supported"]},{"name":"aaa_2016-12-14","revision":"2016-12-14","schema":"/rests/modules/aaa?revision=2016-12-14","namespace":"urn:opendaylight:params:xml:ns:yang:aaa","conformance-type":"import"},{"name":"aaa-cert-rpc_2015-12-15","revision":"2015-12-15","schema":"/rests/modules/aaa-cert-rpc?revision=2015-12-15","namespace":"urn:opendaylight:yang:aaa:cert:rpc","conformance-type":"import"},{"name":"system-notifications_2013-09-27","revision":"2013-09-27","schema":"/rests/modules/system-notifications?revision=2013-09-27","namespace":"urn:opendaylight:openflow:system","conformance-type":"import"},{"name":"sal-flat-batch_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/sal-flat-batch?revision=2016-03-21","namespace":"urn:opendaylight:flat-batch:service","conformance-type":"import"},{"name":"notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netconf:notification:1.0","conformance-type":"import"},{"name":"sal-remote_2014-01-14","revision":"2014-01-14","schema":"/rests/modules/sal-remote?revision=2014-01-14","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:remote","conformance-type":"import"},{"name":"yang-ext_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/yang-ext?revision=2013-07-09","namespace":"urn:opendaylight:yang:extension:yang-ext","conformance-type":"import"},{"name":"opendaylight-multipart-types_2017-01-12","revision":"2017-01-12","schema":"/rests/modules/opendaylight-multipart-types?revision=2017-01-12","namespace":"urn:opendaylight:multipart:types","conformance-type":"import"},{"name":"opendaylight-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-inventory?revision=2013-08-19","namespace":"urn:opendaylight:inventory","conformance-type":"import"},{"name":"sal-queue_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-queue?revision=2015-03-05","namespace":"urn:opendaylight:queue:service","conformance-type":"import"},{"name":"sal-groups-batch_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/sal-groups-batch?revision=2016-03-15","namespace":"urn:opendaylight:groups:service","conformance-type":"import"},{"name":"arbitrator-reconcile_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/arbitrator-reconcile?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:arbitrator-reconcile:service","conformance-type":"import"},{"name":"ietf-yang-metadata_2016-08-05","revision":"2016-08-05","schema":"/rests/modules/ietf-yang-metadata?revision=2016-08-05","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-metadata","conformance-type":"import"},{"name":"opendaylight-arbitrary-bitmask-fields_2016-01-30","revision":"2016-01-30","schema":"/rests/modules/opendaylight-arbitrary-bitmask-fields?revision=2016-01-30","namespace":"urn:opendaylight:arbitrary:bitmask:fields","conformance-type":"import"},{"name":"ietf-udp-client_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-client?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-client","conformance-type":"import","feature":["local-binding"]},{"name":"opendaylight-meter-types_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/opendaylight-meter-types?revision=2013-09-18","namespace":"urn:opendaylight:meter:types","conformance-type":"import"},{"name":"opendaylight-action-types_2013-11-12","revision":"2013-11-12","schema":"/rests/modules/opendaylight-action-types?revision=2013-11-12","namespace":"urn:opendaylight:action:types","conformance-type":"import"},{"name":"sal-role_2015-07-27","revision":"2015-07-27","schema":"/rests/modules/sal-role?revision=2015-07-27","namespace":"urn:opendaylight:role:service","conformance-type":"import"},{"name":"openflow-provider-config_2016-05-10","revision":"2016-05-10","schema":"/rests/modules/openflow-provider-config?revision=2016-05-10","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:provider:config","conformance-type":"import"},{"name":"odl-serviceutils-upgrade_2018-07-02","revision":"2018-07-02","schema":"/rests/modules/odl-serviceutils-upgrade?revision=2018-07-02","namespace":"urn:opendaylight:serviceutils:upgrade","conformance-type":"import"},{"name":"opendaylight-match-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-match-types?revision=2013-10-26","namespace":"urn:opendaylight:model:match:types","conformance-type":"import"},{"name":"ietf-restconf-server_2024-08-14","revision":"2024-08-14","schema":"/rests/modules/ietf-restconf-server?revision=2024-08-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-server","conformance-type":"import","feature":["http-listen","https-listen"]},{"name":"reconciliation-result-state_2017-07-13","revision":"2017-07-13","schema":"/rests/modules/reconciliation-result-state?revision=2017-07-13","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:rf:state","conformance-type":"import"},{"name":"onf-extensions_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/onf-extensions?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf","conformance-type":"import"},{"name":"sal-table_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/sal-table?revision=2013-10-26","namespace":"urn:opendaylight:table:service","conformance-type":"import"},{"name":"iana-http-versions_2026-02-04","revision":"2026-02-04","schema":"/rests/modules/iana-http-versions?revision=2026-02-04","namespace":"urn:ietf:params:xml:ns:yang:iana-http-versions","conformance-type":"import"},{"name":"opendaylight-direct-statistics_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/opendaylight-direct-statistics?revision=2016-05-11","namespace":"urn:opendaylight:direct:statistics","conformance-type":"import"},{"name":"opendaylight-port-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-port-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:port","conformance-type":"import"},{"name":"sal-async-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/sal-async-config?revision=2017-06-19","namespace":"urn:opendaylight:async-config:service","conformance-type":"import"},{"name":"aaa-password-service-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-password-service-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:password:service:config","conformance-type":"import"},{"name":"ietf-yang-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-yang-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-types","conformance-type":"import"},{"name":"opendaylight-queue-statistics_2013-12-16","revision":"2013-12-16","schema":"/rests/modules/opendaylight-queue-statistics?revision=2013-12-16","namespace":"urn:opendaylight:queue:statistics","conformance-type":"import"},{"name":"sal-bundle_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/sal-bundle?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf:bundle:service","conformance-type":"import"},{"name":"ietf-restconf-subscribed-notifications_2019-11-17","revision":"2019-11-17","schema":"/rests/modules/ietf-restconf-subscribed-notifications?revision=2019-11-17","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-subscribed-notifications","conformance-type":"import"},{"name":"sal-meters-batch_2016-03-16","revision":"2016-03-16","schema":"/rests/modules/sal-meters-batch?revision=2016-03-16","namespace":"urn:opendaylight:meters:service","conformance-type":"import"},{"name":"odl-entity-owners","revision":"","schema":"/rests/modules/odl-entity-owners","namespace":"urn:opendaylight:params:xml:ns:yang:controller:entity-owners","conformance-type":"import"},{"name":"sal-experimenter-mp-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-mp-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-mp-message:service","conformance-type":"import"},{"name":"packet-processing_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/packet-processing?revision=2013-07-09","namespace":"urn:opendaylight:packet:service","conformance-type":"import"},{"name":"openflow-configuration_2014-06-30","revision":"2014-06-30","schema":"/rests/modules/openflow-configuration?revision=2014-06-30","namespace":"urn:opendaylight:openflow:config","conformance-type":"import"},{"name":"odl-srm-rpcs_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-rpcs?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:rpc","conformance-type":"import"},{"name":"ietf-netconf-acm_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-netconf-acm?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-acm","conformance-type":"import"},{"name":"iana-crypt-hash_2014-08-06","revision":"2014-08-06","schema":"/rests/modules/iana-crypt-hash?revision=2014-08-06","namespace":"urn:ietf:params:xml:ns:yang:iana-crypt-hash","conformance-type":"import","feature":["crypt-hash-sha-512","crypt-hash-sha-256","crypt-hash-md5"]},{"name":"openflow-extensible-match_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-extensible-match?revision=2015-02-25","namespace":"urn:opendaylight:openflow:oxm","conformance-type":"import"}],"module-set-id":"2"}}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:57.419031" elapsed="0.003432"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:57.418810" elapsed="0.003703"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:57.418790" elapsed="0.003759"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:57.426013" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:57.422981" elapsed="0.003097"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:57.422629" elapsed="0.003497"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:57.422605" elapsed="0.003574"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:57.426932" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:57.426409" elapsed="0.000562"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:57.427423" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:57.427069" elapsed="0.000435"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:57.428231" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:57.427762" elapsed="0.000506"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:57.427538" elapsed="0.000780"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:57.427043" elapsed="0.001306"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:57.429082" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:57.428574" elapsed="0.000546"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:57.429567" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:57.429241" elapsed="0.000407"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:57.430342" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:57.429906" elapsed="0.000474"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:57.429681" elapsed="0.000748"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:57.429214" elapsed="0.001246"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:51:57.430668" elapsed="0.000482"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:51:57.431786" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:57.431402" elapsed="0.000421"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:51:57.432076" elapsed="0.002471"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:51:57.418387" elapsed="0.016223"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:51:57.434784" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:51:57.434680" elapsed="0.000149"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:57.434660" elapsed="0.000190"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:51:57.442993" level="INFO">${text_normalized} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:51:57.434992" elapsed="0.008031"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:51:57.443075" elapsed="0.000031"/>
</return>
<msg time="2026-04-08T00:51:57.443249" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:51:57.404441" elapsed="0.038835"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:51:57.443358" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:51:57.443672" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="PASS" start="2026-04-08T00:51:57.312952" elapsed="0.130757"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Json_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:57.444193" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:57.443833" elapsed="0.000484"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:57.443802" elapsed="0.000557"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:51:57.444418" elapsed="0.000069"/>
</return>
<arg>session=${session}</arg>
<arg>folder=${RESTCONF_MODULES_DIR}</arg>
<arg>verify=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Add arguments sensible for JSON data, return Get_Templated response text.
Optionally, verification against JSON data (may be iterated) is called.
Only subset of JSON data is verified and returned if JMES path is specified in
file ${folder}/jmespath.expr.</doc>
<status status="PASS" start="2026-04-08T00:51:57.307402" elapsed="0.137273"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:57.303192" elapsed="0.141590"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:57.303172" elapsed="0.141637"/>
</if>
<kw name="Resolve_Shard_Type_Class" owner="ClusterManagement">
<if>
<branch type="IF" condition="'${shard_type}' == 'config'">
<return>
<value>DistributedConfigDatastore</value>
<status status="PASS" start="2026-04-08T00:51:57.445696" elapsed="0.000069"/>
</return>
<status status="PASS" start="2026-04-08T00:51:57.445478" elapsed="0.000335"/>
</branch>
<branch type="ELSE IF" condition="'${shard_type}' == 'operational'">
<return>
<value>DistributedOperationalDatastore</value>
<status status="NOT RUN" start="2026-04-08T00:51:57.445955" elapsed="0.000045"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:51:57.445871" elapsed="0.000169"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:57.445446" elapsed="0.000651"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized shard type: ${shard_type}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:57.446342" elapsed="0.000066"/>
</kw>
<msg time="2026-04-08T00:51:57.446544" level="INFO">${type_class} = DistributedConfigDatastore</msg>
<var>${type_class}</var>
<arg>shard_type=${shard_type}</arg>
<doc>Simple lookup for class name corresponding to desired type.</doc>
<status status="PASS" start="2026-04-08T00:51:57.445066" elapsed="0.001504"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:57.447398" level="INFO">${cluster_index} = 1</msg>
<var>${cluster_index}</var>
<arg>${member_index}+${NODE_ROLE_INDEX_START}-1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:57.446740" elapsed="0.000685"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:57.448568" level="INFO">${uri} = jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-inventory-config,type=DistributedConfigDatastore</msg>
<var>${uri}</var>
<arg>${JOLOKIA_READ_URI}:Category=Shards,name=member-${cluster_index}-shard-${shard_name}-${shard_type},type=${type_class}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:57.447584" elapsed="0.001013"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:57.455769" level="INFO">jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-inventory-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:57.455453" elapsed="0.000404"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:57.456409" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:57.456102" elapsed="0.000390"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:51:57.464049" level="INFO">GET Request : url=http://10.30.170.48:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-inventory-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-inventory-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:51:57.464133" level="INFO">GET Response : url=http://10.30.170.48:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-inventory-config,type=DistributedConfigDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Wed, 08 Apr 2026 00:51:57 GMT', 'Expires': 'Tue, 07 Apr 2026 23:51:57 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-1-shard-inventory-config,type=DistributedConfigDatastore","type":"read"},"value":{"ReadWriteTransactionCount":12,"SnapshotIndex":22,"InMemoryJournalLogSize":1,"ReplicatedToAllIndex":22,"Leader":"member-1-shard-inventory-config","LastIndex":23,"RaftState":"Leader","LastApplied":23,"LastCommittedTransactionTime":"1970-01-01 00:00:00.000","PeerAddresses":"member-2-shard-inventory-config: pekko:\/\/opendaylight-cluster-data@10.30.170.131:2550\/user\/shardmanager-config\/member-2-shard-inventory-config, member-3-shard-inventory-config: pekko:\/\/opendaylight-cluster-data@10.30.171.110:2550\/user\/shardmanager-config\/member-3-shard-inventory-config","LastLogIndex":23,"LastLeadershipChangeTime":"2026-04-08 00:46:45.964","FollowerInitialSyncStatus":false,"FollowerInfo":[{"timeSinceLastActivity":"00:00:00.138","active":true,"matchIndex":23,"voting":true,"id":"member-2-shard-inventory-config","nextIndex":24},{"timeSinceLastActivity":"00:00:00.138","active":true,"matchIndex":23,"voting":true,"id":"member-3-shard-inventory-config","nextIndex":24}],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"342.7 μs","CurrentTerm":2,"LastTerm":2,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-inventory-config","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":0,"TxCohortCacheSize":0,"PeerVotingStates":"member-2-shard-inventory-config: true, member-3-shard-inventory-config: true","LastLogTerm":2,"StatRetrievalError":null,"CommitIndex":23,"SnapshotTerm":2,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-1-shard-inventory-config","LeadershipChangeCount":1,"InMemoryJournalDataSize":888},"timestamp":1775609517,"status":200} 
 </msg>
<msg time="2026-04-08T00:51:57.464306" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:51:57.458749" elapsed="0.005593"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:57.456641" elapsed="0.007760"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:57.464680" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:57.464467" elapsed="0.000304"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:57.456595" elapsed="0.008238"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:57.469995" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-1-shard-inventory-config,type=DistributedConfigDatastore","type":"read"},"value":{"ReadWriteTransactionCount":12,"SnapshotIndex":22,"InMemoryJournalLogSize":1,"ReplicatedToAllIndex":22,"Leader":"member-1-shard-inventory-config","LastIndex":23,"RaftState":"Leader","LastApplied":23,"LastCommittedTransactionTime":"1970-01-01 00:00:00.000","PeerAddresses":"member-2-shard-inventory-config: pekko:\/\/opendaylight-cluster-data@10.30.170.131:2550\/user\/shardmanager-config\/member-2-shard-inventory-config, member-3-shard-inventory-config: pekko:\/\/opendaylight-cluster-data@10.30.171.110:2550\/user\/shardmanager-config\/member-3-shard-inventory-config","LastLogIndex":23,"LastLeadershipChangeTime":"2026-04-08 00:46:45.964","FollowerInitialSyncStatus":false,"FollowerInfo":[{"timeSinceLastActivity":"00:00:00.138","active":true,"matchIndex":23,"voting":true,"id":"member-2-shard-inventory-config","nextIndex":24},{"timeSinceLastActivity":"00:00:00.138","active":true,"matchIndex":23,"voting":true,"id":"member-3-shard-inventory-config","nextIndex":24}],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"342.7 μs","CurrentTerm":2,"LastTerm":2,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-inventory-config","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":0,"TxCohortCacheSize":0,"PeerVotingStates":"member-2-shard-inventory-config: true, member-3-shard-inventory-config: true","LastLogTerm":2,"StatRetrievalError":null,"CommitIndex":23,"SnapshotTerm":2,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-1-shard-inventory-config","LeadershipChangeCount":1,"InMemoryJournalDataSize":888},"timestamp":1775609517,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:57.466575" elapsed="0.003507"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:57.466247" elapsed="0.003884"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:57.466219" elapsed="0.004004"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:57.473794" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:57.470623" elapsed="0.003234"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:57.470310" elapsed="0.003595"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:57.470286" elapsed="0.003653"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:57.474791" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:57.474236" elapsed="0.000602"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:57.475227" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:57.474959" elapsed="0.000328"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:57.475770" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:57.475470" elapsed="0.000327"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:57.475310" elapsed="0.000522"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:57.474930" elapsed="0.000924"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:57.476386" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:57.476011" elapsed="0.000402"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:57.476715" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:57.476482" elapsed="0.000290"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:57.477267" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:57.476954" elapsed="0.000340"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:57.476795" elapsed="0.000535"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:57.476464" elapsed="0.000887"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:51:57.477502" elapsed="0.000345"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:51:57.478344" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:57.478021" elapsed="0.000350"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:51:57.478526" elapsed="0.002168"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:51:57.465625" elapsed="0.015131"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:51:57.481027" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:51:57.480914" elapsed="0.000158"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:57.480867" elapsed="0.000243"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:51:57.484407" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-1-shard-inventory-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 177560...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:51:57.481366" elapsed="0.003095"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:51:57.484546" elapsed="0.000068"/>
</return>
<msg time="2026-04-08T00:51:57.484944" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-1-shard-inventory-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 177560...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:51:57.450203" elapsed="0.034834"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:51:57.485141" elapsed="0.000044"/>
</return>
<msg time="2026-04-08T00:51:57.485427" level="INFO">${data_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-1-shard-inventory-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 177560...</msg>
<var>${data_text}</var>
<arg>uri=${uri}</arg>
<arg>session=${session}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-08T00:51:57.448812" elapsed="0.036643"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:57.487625" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-1-shard-inventory-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1775609517, 'valu...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:57.486564" elapsed="0.001156"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-08T00:51:57.487804" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:51:57.488101" level="INFO">${data_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-1-shard-inventory-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1775609517, 'valu...</msg>
<var>${data_object}</var>
<arg>${data_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-08T00:51:57.485707" elapsed="0.002423"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:51:57.488620" level="INFO">${value} = {'AbortTransactionsCount': 0, 'CommitIndex': 23, 'CommittedTransactionsCount': 0, 'CurrentTerm': 2, 'FailedReadTransactionsCount': 0, 'FailedTransactionsCount': 0, 'FollowerInfo': [{'active': True, 'i...</msg>
<var>${value}</var>
<arg>${data_object}</arg>
<arg>value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:51:57.488306" elapsed="0.000341"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:51:57.489203" level="INFO">${raft_property} = Leader</msg>
<var>${raft_property}</var>
<arg>${value}</arg>
<arg>${property}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:51:57.488806" elapsed="0.000425"/>
</kw>
<return>
<value>${raft_property}</value>
<status status="PASS" start="2026-04-08T00:51:57.489279" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:51:57.489446" level="INFO">${raft_state} = Leader</msg>
<var>${raft_state}</var>
<arg>RaftState</arg>
<arg>${shard_name}</arg>
<arg>${shard_type}</arg>
<arg>${member_index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft property.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T00:51:57.300421" elapsed="0.189050"/>
</kw>
<return>
<value>${raft_state}</value>
<status status="PASS" start="2026-04-08T00:51:57.489528" elapsed="0.000027"/>
</return>
<msg time="2026-04-08T00:51:57.489678" level="INFO">${raft_state} = Leader</msg>
<var>${raft_state}</var>
<arg>shard_name=${shard_name}</arg>
<arg>shard_type=${ds_type}</arg>
<arg>member_index=${index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft status.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T00:51:57.299654" elapsed="0.190048"/>
</kw>
<if>
<branch type="IF" condition="'Follower' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${follower_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:57.489996" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:57.489780" elapsed="0.000272"/>
</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="PASS" start="2026-04-08T00:51:57.490320" elapsed="0.000190"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:57.490079" elapsed="0.000470"/>
</branch>
<branch type="ELSE IF" condition="${validate}">
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized Raft state: ${raft_state}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:57.490718" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:57.490573" elapsed="0.000197"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:57.489763" elapsed="0.001030"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T00:51:57.299490" elapsed="0.191327"/>
</iter>
<iter>
<kw name="Get_Raft_State_Of_Shard_At_Member" owner="ClusterManagement">
<kw name="Get_Raft_Property_From_Shard_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:57.494010" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:57.493125" elapsed="0.000974"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:51:57.494290" elapsed="0.000032"/>
</return>
<msg time="2026-04-08T00:51:57.494559" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:51:57.492602" elapsed="0.001983"/>
</kw>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Get_As_Json_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:57.544765" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:57.544382" elapsed="0.000414"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:51:57.545646" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:51:57.545376" elapsed="0.000349">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-08T00:51:57.545819" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:51:57.544965" elapsed="0.000878"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:51:57.546407" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:51:57.546007" elapsed="0.000426"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T00:51:57.546732" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-08T00:51:57.546890" level="INFO">${template} = /rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T00:51:57.546592" elapsed="0.000324"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:57.547369" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:57.547093" elapsed="0.000321"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:57.548382" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:57.548106" elapsed="0.000322"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-08T00:51:57.548856" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-08T00:51:57.548587" elapsed="0.000296"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:57.549224" elapsed="0.000023"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:57.549429" elapsed="0.000024"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:57.549603" elapsed="0.000021"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-08T00:51:57.549076" elapsed="0.000583"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-08T00:51:57.548935" elapsed="0.000754"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-08T00:51:57.549735" elapsed="0.000031"/>
</return>
<msg time="2026-04-08T00:51:57.549923" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-08T00:51:57.547785" elapsed="0.002164"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:57.547490" elapsed="0.002491"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:57.550151" elapsed="0.000035"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:57.550006" elapsed="0.000214"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:57.547467" elapsed="0.002773"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:57.550837" level="INFO">${final_text} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:57.550381" elapsed="0.000485"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T00:51:57.550914" 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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="PASS" start="2026-04-08T00:51:57.543758" elapsed="0.007280"/>
</kw>
<msg time="2026-04-08T00:51:57.551092" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:51:57.531870" elapsed="0.019300"/>
</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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:57.562924" elapsed="0.000029"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:57.574540" 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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:57.586226" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:57.586418" elapsed="0.000021"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:57.586592" elapsed="0.000020"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:57.586948" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:57.586808" elapsed="0.000195"/>
</branch>
<status status="NOT RUN" start="2026-04-08T00:51:57.586794" elapsed="0.000233"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:57.587181" elapsed="0.000023"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:57.587351" elapsed="0.000020"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:57.587514" elapsed="0.000020"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-08T00:51:57.586765" elapsed="0.000801"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-08T00:51:57.586666" elapsed="0.000926"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:57.587735" elapsed="0.000020"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-08T00:51:57.587809" elapsed="0.000015"/>
</return>
<msg time="2026-04-08T00:51:57.587921" level="INFO">${uri} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-08T00:51:57.527789" elapsed="0.060253"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:51:57.589305" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:51:57.589045" elapsed="0.000324">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-08T00:51:57.589459" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:51:57.588712" elapsed="0.000772"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:57.589795" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:57.589554" elapsed="0.000297"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:57.590354" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:57.590047" elapsed="0.000334"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:57.589875" elapsed="0.000540"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:57.589536" elapsed="0.000900"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:51:57.592621" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:51:57.590583" elapsed="0.002065"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-08T00:51:57.592699" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:51:57.592851" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:51:57.588391" elapsed="0.004485"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:51:57.594175" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:51:57.593907" elapsed="0.000332">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-08T00:51:57.594331" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:51:57.593575" elapsed="0.000780"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-08T00:51:57.594560" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-08T00:51:57.594426" elapsed="0.000193"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:57.594407" elapsed="0.000235"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:57.594785" elapsed="0.000021"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:57.594952" elapsed="0.000021"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-08T00:51:57.595017" elapsed="0.000015"/>
</return>
<msg time="2026-04-08T00:51:57.596984" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:51:57.593217" elapsed="0.003795"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:57.598400" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:57.598138" elapsed="0.000307"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:57.598834" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:57.598595" elapsed="0.000282"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:51:57.615065" level="INFO">GET Request : url=http://10.30.170.131:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 path_url=/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node012m0dyuink19r12kj250j53usg1.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:51:57.615514" level="INFO">GET Response : url=http://10.30.170.131:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Transfer-Encoding': 'chunked'} 
 body={"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","hidden-symmetric-keys","encrypted-private-keys","asymmetrically-encrypted-value-format","cms-encrypted-data-format","cleartext-private-keys","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["ssh-client-keepalives","client-ident-hostbased","client-ident-publickey","client-ident-password"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-ex... (set the log level to DEBUG or TRACE to see the full content) 
 </msg>
<msg time="2026-04-08T00:51:57.615716" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:51:57.600917" elapsed="0.014826"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:57.598943" elapsed="0.016843"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:57.615964" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:57.615812" elapsed="0.000229"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:57.598925" elapsed="0.017138"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:57.619686" level="INFO">{"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","hidden-symmetric-keys","encrypted-private-keys","asymmetrically-encrypted-value-format","cms-encrypted-data-format","cleartext-private-keys","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["ssh-client-keepalives","client-ident-hostbased","client-ident-publickey","client-ident-password"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-experimenter-types?revision=2015-10-20","namespace":"urn:opendaylight:openflowplugin:experimenter:types","conformance-type":"import"},{"name":"ietf-ip_2018-02-22","revision":"2018-02-22","schema":"/rests/modules/ietf-ip?revision=2018-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-ip","conformance-type":"import","feature":["ipv6-privacy-autoconf","ipv4-non-contiguous-netmasks"]},{"name":"ietf-tcp-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-client","conformance-type":"import","feature":["local-binding-supported","tcp-client-keepalives"]},{"name":"node-config_2014-10-15","revision":"2014-10-15","schema":"/rests/modules/node-config?revision=2014-10-15","namespace":"urn:opendaylight:module:config","conformance-type":"import"},{"name":"ietf-restconf_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf","conformance-type":"import"},{"name":"ietf-datastores_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-datastores?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-datastores","conformance-type":"import"},{"name":"ietf-yang-patch_2017-02-22","revision":"2017-02-22","schema":"/rests/modules/ietf-yang-patch?revision=2017-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-patch","conformance-type":"import"},{"name":"sal-group_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-group?revision=2013-09-18","namespace":"urn:opendaylight:group:service","conformance-type":"import"},{"name":"odl-codegen-extensions_2024-06-27","revision":"2024-06-27","schema":"/rests/modules/odl-codegen-extensions?revision=2024-06-27","namespace":"urn:opendaylight:yang:extension:codegen","conformance-type":"import"},{"name":"sal-meter_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-meter?revision=2013-09-18","namespace":"urn:opendaylight:meter:service","conformance-type":"import"},{"name":"ietf-interfaces_2018-02-20","revision":"2018-02-20","schema":"/rests/modules/ietf-interfaces?revision=2018-02-20","namespace":"urn:ietf:params:xml:ns:yang:ietf-interfaces","conformance-type":"import","feature":["pre-provisioning","if-mib","arbitrary-names"]},{"name":"opendaylight-l2-types_2013-08-27","revision":"2013-08-27","schema":"/rests/modules/opendaylight-l2-types?revision=2013-08-27","namespace":"urn:opendaylight:l2:types","conformance-type":"import"},{"name":"opendaylight-flow-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-flow-types?revision=2013-10-26","namespace":"urn:opendaylight:flow:types","conformance-type":"import"},{"name":"lldp-speaker-config_2016-05-12","revision":"2016-05-12","schema":"/rests/modules/lldp-speaker-config?revision=2016-05-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker:config","conformance-type":"import"},{"name":"aaa-cert_2015-11-26","revision":"2015-11-26","schema":"/rests/modules/aaa-cert?revision=2015-11-26","namespace":"urn:opendaylight:yang:aaa:cert","conformance-type":"import"},{"name":"openflow-action_2015-02-03","revision":"2015-02-03","schema":"/rests/modules/openflow-action?revision=2015-02-03","namespace":"urn:opendaylight:openflow:common:action","conformance-type":"import"},{"name":"openflow-approved-extensions_2016-08-02","revision":"2016-08-02","schema":"/rests/modules/openflow-approved-extensions?revision=2016-08-02","namespace":"urn:opendaylight:openflow:approved:extensions","conformance-type":"import"},{"name":"nc-notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/nc-notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netmod:notification","conformance-type":"import"},{"name":"ietf-netconf-nmda_2019-01-07","revision":"2019-01-07","schema":"/rests/modules/ietf-netconf-nmda?revision=2019-01-07","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-nmda","conformance-type":"import","feature":["with-defaults","origin"]},{"name":"ietf-tcp-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-common","conformance-type":"import","feature":["keepalives-supported"]},{"name":"network-topology_2013-10-21","revision":"2013-10-21","schema":"/rests/modules/network-topology?revision=2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:network-topology","conformance-type":"import"},{"name":"aaa-encrypt-service-config_2024-02-02","revision":"2024-02-02","schema":"/rests/modules/aaa-encrypt-service-config?revision=2024-02-02","namespace":"config:aaa:authn:encrypt:service:config","conformance-type":"import"},{"name":"openflow-instruction_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-instruction?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:instruction","conformance-type":"import"},{"name":"ietf-tls-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-client","conformance-type":"import","feature":["client-ident-x509-cert","server-auth-x509-cert"]},{"name":"opendaylight-group-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-group-statistics?revision=2013-11-11","namespace":"urn:opendaylight:group:statistics","conformance-type":"import"},{"name":"cluster-admin_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/cluster-admin?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:cluster:admin","conformance-type":"import"},{"name":"opendaylight-flow-statistics_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-flow-statistics?revision=2013-08-19","namespace":"urn:opendaylight:flow:statistics","conformance-type":"import"},{"name":"opendaylight-table-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-table-types?revision=2013-10-26","namespace":"urn:opendaylight:table:types","conformance-type":"import"},{"name":"forwarding-rules-manager-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/forwarding-rules-manager-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:forwardingrules-manager:config","conformance-type":"import"},{"name":"odl-srm-types_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-types?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:types","conformance-type":"import"},{"name":"ietf-x509-cert-to-name_2014-12-10","revision":"2014-12-10","schema":"/rests/modules/ietf-x509-cert-to-name?revision=2014-12-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-x509-cert-to-name","conformance-type":"import"},{"name":"flow-node-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-node-inventory?revision=2013-08-19","namespace":"urn:opendaylight:flow:inventory","conformance-type":"import"},{"name":"flow-errors_2013-11-16","revision":"2013-11-16","schema":"/rests/modules/flow-errors?revision=2013-11-16","namespace":"urn:opendaylight:flow:errors","conformance-type":"import"},{"name":"ietf-netconf_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:netconf:base:1.0","conformance-type":"import","feature":["xpath","url","rollback-on-error","validate","startup","candidate","confirmed-commit","writable-running"]},{"name":"iana-ssh-public-key-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-public-key-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-public-key-algs","conformance-type":"import"},{"name":"aaa-cert-mdsal_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/aaa-cert-mdsal?revision=2016-03-21","namespace":"urn:opendaylight:yang:aaa:cert:mdsal","conformance-type":"import"},{"name":"odl-device-notification_2024-02-18","revision":"2024-02-18","schema":"/rests/modules/odl-device-notification?revision=2024-02-18","namespace":"urn:opendaylight:device:notification","conformance-type":"import"},{"name":"ietf-origin_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-origin?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-origin","conformance-type":"import"},{"name":"openflow-augments_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-augments?revision=2015-02-25","namespace":"urn:opendaylight:openflow:augments","conformance-type":"import"},{"name":"iana-ssh-encryption-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-encryption-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-encryption-algs","conformance-type":"import"},{"name":"ietf-truststore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-truststore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-truststore","conformance-type":"import","feature":["inline-definitions-supported"]},{"name":"distributed-datastore-provider_2025-01-30","revision":"2025-01-30","schema":"/rests/modules/distributed-datastore-provider?revision=2025-01-30","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:distributed-datastore-provider","conformance-type":"import"},{"name":"opendaylight-group-types_2013-10-18","revision":"2013-10-18","schema":"/rests/modules/opendaylight-group-types?revision=2013-10-18","namespace":"urn:opendaylight:group:types","conformance-type":"import"},{"name":"sal-remote-augment_2023-11-03","revision":"2023-11-03","schema":"/rests/modules/sal-remote-augment?revision=2023-11-03","namespace":"urn:sal:restconf:event:subscription","conformance-type":"import"},{"name":"opendaylight-ipv6-arbitrary-bitmask-fields_2016-02-24","revision":"2016-02-24","schema":"/rests/modules/opendaylight-ipv6-arbitrary-bitmask-fields?revision=2016-02-24","namespace":"urn:opendaylight:opendaylight-ipv6-arbitrary-bitmask-fields","conformance-type":"import"},{"name":"sal-flows-batch_2016-03-14","revision":"2016-03-14","schema":"/rests/modules/sal-flows-batch?revision=2016-03-14","namespace":"urn:opendaylight:flows:service","conformance-type":"import"},{"name":"ietf-tls-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-common","conformance-type":"import","feature":["tls12","hello-params","tls13"]},{"name":"openflow-types_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-types?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:types","conformance-type":"import"},{"name":"ietf-netconf-with-defaults_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf-with-defaults?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults","conformance-type":"import"},{"name":"odl-srm-ops_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-ops?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:ops","conformance-type":"import"},{"name":"odl-general-entity_2015-09-30","revision":"2015-09-30","schema":"/rests/modules/odl-general-entity?revision=2015-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:mdsal:core:general-entity","conformance-type":"import"},{"name":"iana-ssh-key-exchange-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-key-exchange-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-key-exchange-algs","conformance-type":"import"},{"name":"node-ssl-connection-error_2019-07-23","revision":"2019-07-23","schema":"/rests/modules/node-ssl-connection-error?revision=2019-07-23","namespace":"urn:opendaylight:node-ssl-connection-error:service","conformance-type":"import"},{"name":"openflow-protocol_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-protocol?revision=2013-07-31","namespace":"urn:opendaylight:openflow:protocol","conformance-type":"import"},{"name":"ietf-udp-server_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-server?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-server","conformance-type":"import"},{"name":"ietf-keystore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-keystore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-keystore","conformance-type":"import","feature":["asymmetric-keys","inline-definitions-supported"]},{"name":"aaa_2016-12-14","revision":"2016-12-14","schema":"/rests/modules/aaa?revision=2016-12-14","namespace":"urn:opendaylight:params:xml:ns:yang:aaa","conformance-type":"import"},{"name":"aaa-cert-rpc_2015-12-15","revision":"2015-12-15","schema":"/rests/modules/aaa-cert-rpc?revision=2015-12-15","namespace":"urn:opendaylight:yang:aaa:cert:rpc","conformance-type":"import"},{"name":"system-notifications_2013-09-27","revision":"2013-09-27","schema":"/rests/modules/system-notifications?revision=2013-09-27","namespace":"urn:opendaylight:openflow:system","conformance-type":"import"},{"name":"sal-flat-batch_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/sal-flat-batch?revision=2016-03-21","namespace":"urn:opendaylight:flat-batch:service","conformance-type":"import"},{"name":"notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netconf:notification:1.0","conformance-type":"import"},{"name":"sal-remote_2014-01-14","revision":"2014-01-14","schema":"/rests/modules/sal-remote?revision=2014-01-14","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:remote","conformance-type":"import"},{"name":"yang-ext_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/yang-ext?revision=2013-07-09","namespace":"urn:opendaylight:yang:extension:yang-ext","conformance-type":"import"},{"name":"opendaylight-multipart-types_2017-01-12","revision":"2017-01-12","schema":"/rests/modules/opendaylight-multipart-types?revision=2017-01-12","namespace":"urn:opendaylight:multipart:types","conformance-type":"import"},{"name":"opendaylight-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-inventory?revision=2013-08-19","namespace":"urn:opendaylight:inventory","conformance-type":"import"},{"name":"sal-queue_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-queue?revision=2015-03-05","namespace":"urn:opendaylight:queue:service","conformance-type":"import"},{"name":"sal-groups-batch_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/sal-groups-batch?revision=2016-03-15","namespace":"urn:opendaylight:groups:service","conformance-type":"import"},{"name":"arbitrator-reconcile_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/arbitrator-reconcile?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:arbitrator-reconcile:service","conformance-type":"import"},{"name":"ietf-yang-metadata_2016-08-05","revision":"2016-08-05","schema":"/rests/modules/ietf-yang-metadata?revision=2016-08-05","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-metadata","conformance-type":"import"},{"name":"opendaylight-arbitrary-bitmask-fields_2016-01-30","revision":"2016-01-30","schema":"/rests/modules/opendaylight-arbitrary-bitmask-fields?revision=2016-01-30","namespace":"urn:opendaylight:arbitrary:bitmask:fields","conformance-type":"import"},{"name":"ietf-udp-client_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-client?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-client","conformance-type":"import","feature":["local-binding"]},{"name":"opendaylight-meter-types_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/opendaylight-meter-types?revision=2013-09-18","namespace":"urn:opendaylight:meter:types","conformance-type":"import"},{"name":"opendaylight-action-types_2013-11-12","revision":"2013-11-12","schema":"/rests/modules/opendaylight-action-types?revision=2013-11-12","namespace":"urn:opendaylight:action:types","conformance-type":"import"},{"name":"sal-role_2015-07-27","revision":"2015-07-27","schema":"/rests/modules/sal-role?revision=2015-07-27","namespace":"urn:opendaylight:role:service","conformance-type":"import"},{"name":"openflow-provider-config_2016-05-10","revision":"2016-05-10","schema":"/rests/modules/openflow-provider-config?revision=2016-05-10","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:provider:config","conformance-type":"import"},{"name":"odl-serviceutils-upgrade_2018-07-02","revision":"2018-07-02","schema":"/rests/modules/odl-serviceutils-upgrade?revision=2018-07-02","namespace":"urn:opendaylight:serviceutils:upgrade","conformance-type":"import"},{"name":"opendaylight-match-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-match-types?revision=2013-10-26","namespace":"urn:opendaylight:model:match:types","conformance-type":"import"},{"name":"ietf-restconf-server_2024-08-14","revision":"2024-08-14","schema":"/rests/modules/ietf-restconf-server?revision=2024-08-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-server","conformance-type":"import","feature":["http-listen","https-listen"]},{"name":"reconciliation-result-state_2017-07-13","revision":"2017-07-13","schema":"/rests/modules/reconciliation-result-state?revision=2017-07-13","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:rf:state","conformance-type":"import"},{"name":"onf-extensions_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/onf-extensions?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf","conformance-type":"import"},{"name":"sal-table_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/sal-table?revision=2013-10-26","namespace":"urn:opendaylight:table:service","conformance-type":"import"},{"name":"iana-http-versions_2026-02-04","revision":"2026-02-04","schema":"/rests/modules/iana-http-versions?revision=2026-02-04","namespace":"urn:ietf:params:xml:ns:yang:iana-http-versions","conformance-type":"import"},{"name":"opendaylight-direct-statistics_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/opendaylight-direct-statistics?revision=2016-05-11","namespace":"urn:opendaylight:direct:statistics","conformance-type":"import"},{"name":"opendaylight-port-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-port-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:port","conformance-type":"import"},{"name":"sal-async-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/sal-async-config?revision=2017-06-19","namespace":"urn:opendaylight:async-config:service","conformance-type":"import"},{"name":"aaa-password-service-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-password-service-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:password:service:config","conformance-type":"import"},{"name":"ietf-yang-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-yang-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-types","conformance-type":"import"},{"name":"opendaylight-queue-statistics_2013-12-16","revision":"2013-12-16","schema":"/rests/modules/opendaylight-queue-statistics?revision=2013-12-16","namespace":"urn:opendaylight:queue:statistics","conformance-type":"import"},{"name":"sal-bundle_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/sal-bundle?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf:bundle:service","conformance-type":"import"},{"name":"ietf-restconf-subscribed-notifications_2019-11-17","revision":"2019-11-17","schema":"/rests/modules/ietf-restconf-subscribed-notifications?revision=2019-11-17","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-subscribed-notifications","conformance-type":"import"},{"name":"sal-meters-batch_2016-03-16","revision":"2016-03-16","schema":"/rests/modules/sal-meters-batch?revision=2016-03-16","namespace":"urn:opendaylight:meters:service","conformance-type":"import"},{"name":"odl-entity-owners","revision":"","schema":"/rests/modules/odl-entity-owners","namespace":"urn:opendaylight:params:xml:ns:yang:controller:entity-owners","conformance-type":"import"},{"name":"sal-experimenter-mp-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-mp-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-mp-message:service","conformance-type":"import"},{"name":"packet-processing_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/packet-processing?revision=2013-07-09","namespace":"urn:opendaylight:packet:service","conformance-type":"import"},{"name":"openflow-configuration_2014-06-30","revision":"2014-06-30","schema":"/rests/modules/openflow-configuration?revision=2014-06-30","namespace":"urn:opendaylight:openflow:config","conformance-type":"import"},{"name":"odl-srm-rpcs_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-rpcs?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:rpc","conformance-type":"import"},{"name":"ietf-netconf-acm_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-netconf-acm?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-acm","conformance-type":"import"},{"name":"iana-crypt-hash_2014-08-06","revision":"2014-08-06","schema":"/rests/modules/iana-crypt-hash?revision=2014-08-06","namespace":"urn:ietf:params:xml:ns:yang:iana-crypt-hash","conformance-type":"import","feature":["crypt-hash-sha-512","crypt-hash-sha-256","crypt-hash-md5"]},{"name":"openflow-extensible-match_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-extensible-match?revision=2015-02-25","namespace":"urn:opendaylight:openflow:oxm","conformance-type":"import"}],"module-set-id":"2"}}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:57.617076" elapsed="0.002946"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:57.616857" elapsed="0.003200"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:57.616838" elapsed="0.003244"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:57.622537" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:57.620389" elapsed="0.002194"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:57.620152" elapsed="0.002465"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:57.620121" elapsed="0.002520"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:57.623200" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:57.622802" elapsed="0.000426"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:57.623534" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:57.623299" elapsed="0.000293"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:57.624114" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:57.623813" elapsed="0.000352"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:57.623615" elapsed="0.000589"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:57.623280" elapsed="0.000945"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:57.624744" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:57.624383" elapsed="0.000387"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:57.625073" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:57.624841" elapsed="0.000290"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:57.625628" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:57.625332" elapsed="0.000322"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:57.625168" elapsed="0.000522"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:57.624822" elapsed="0.000890"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:51:57.625859" elapsed="0.000361"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:51:57.626670" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:57.626386" elapsed="0.000311"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:51:57.626850" elapsed="0.002227"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:51:57.616438" elapsed="0.012703"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:51:57.629350" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:51:57.629229" elapsed="0.000167"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:57.629209" elapsed="0.000209"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:51:57.637930" level="INFO">${text_normalized} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:51:57.629569" elapsed="0.008392"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:51:57.638015" elapsed="0.000034"/>
</return>
<msg time="2026-04-08T00:51:57.638197" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:51:57.597346" elapsed="0.040880"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:51:57.638288" elapsed="0.000027"/>
</return>
<msg time="2026-04-08T00:51:57.638621" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="PASS" start="2026-04-08T00:51:57.504636" elapsed="0.134021"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Json_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:57.639173" elapsed="0.000028"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:57.638784" elapsed="0.000520"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:57.638752" elapsed="0.000596"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:51:57.639409" elapsed="0.000072"/>
</return>
<arg>session=${session}</arg>
<arg>folder=${RESTCONF_MODULES_DIR}</arg>
<arg>verify=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Add arguments sensible for JSON data, return Get_Templated response text.
Optionally, verification against JSON data (may be iterated) is called.
Only subset of JSON data is verified and returned if JMES path is specified in
file ${folder}/jmespath.expr.</doc>
<status status="PASS" start="2026-04-08T00:51:57.498986" elapsed="0.140689"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:57.494653" elapsed="0.145132"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:57.494635" elapsed="0.145177"/>
</if>
<kw name="Resolve_Shard_Type_Class" owner="ClusterManagement">
<if>
<branch type="IF" condition="'${shard_type}' == 'config'">
<return>
<value>DistributedConfigDatastore</value>
<status status="PASS" start="2026-04-08T00:51:57.640729" elapsed="0.000070"/>
</return>
<status status="PASS" start="2026-04-08T00:51:57.640510" elapsed="0.000337"/>
</branch>
<branch type="ELSE IF" condition="'${shard_type}' == 'operational'">
<return>
<value>DistributedOperationalDatastore</value>
<status status="NOT RUN" start="2026-04-08T00:51:57.640992" elapsed="0.000045"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:51:57.640908" elapsed="0.000169"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:57.640479" elapsed="0.000656"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized shard type: ${shard_type}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:57.641381" elapsed="0.000071"/>
</kw>
<msg time="2026-04-08T00:51:57.641587" level="INFO">${type_class} = DistributedConfigDatastore</msg>
<var>${type_class}</var>
<arg>shard_type=${shard_type}</arg>
<doc>Simple lookup for class name corresponding to desired type.</doc>
<status status="PASS" start="2026-04-08T00:51:57.640085" elapsed="0.001528"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:57.642448" level="INFO">${cluster_index} = 2</msg>
<var>${cluster_index}</var>
<arg>${member_index}+${NODE_ROLE_INDEX_START}-1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:57.641785" elapsed="0.000691"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:57.643629" level="INFO">${uri} = jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-inventory-config,type=DistributedConfigDatastore</msg>
<var>${uri}</var>
<arg>${JOLOKIA_READ_URI}:Category=Shards,name=member-${cluster_index}-shard-${shard_name}-${shard_type},type=${type_class}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:57.642632" elapsed="0.001025"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:57.650570" level="INFO">jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-inventory-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:57.650273" elapsed="0.000380"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:57.651206" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:57.650901" elapsed="0.000387"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:51:57.658957" level="INFO">GET Request : url=http://10.30.170.131:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-inventory-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-inventory-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:51:57.659018" level="INFO">GET Response : url=http://10.30.170.131:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-inventory-config,type=DistributedConfigDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Wed, 08 Apr 2026 00:51:57 GMT', 'Expires': 'Tue, 07 Apr 2026 23:51:57 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-2-shard-inventory-config,type=DistributedConfigDatastore","type":"read"},"value":{"ReadWriteTransactionCount":0,"SnapshotIndex":22,"InMemoryJournalLogSize":1,"ReplicatedToAllIndex":22,"Leader":"member-1-shard-inventory-config","LastIndex":23,"RaftState":"Follower","LastCommittedTransactionTime":"1970-01-01 00:00:00.000","LastApplied":23,"PeerAddresses":"member-1-shard-inventory-config: pekko:\/\/opendaylight-cluster-data@10.30.170.48:2550\/user\/shardmanager-config\/member-1-shard-inventory-config, member-3-shard-inventory-config: pekko:\/\/opendaylight-cluster-data@10.30.171.110:2550\/user\/shardmanager-config\/member-3-shard-inventory-config","LastLogIndex":23,"LastLeadershipChangeTime":"2026-04-08 00:46:45.970","FollowerInitialSyncStatus":true,"FollowerInfo":[],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"234.0 μs","CurrentTerm":2,"LastTerm":2,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-inventory-config","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":0,"TxCohortCacheSize":0,"PeerVotingStates":"member-1-shard-inventory-config: true, member-3-shard-inventory-config: true","LastLogTerm":2,"StatRetrievalError":null,"CommitIndex":23,"SnapshotTerm":2,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-2-shard-inventory-config","LeadershipChangeCount":1,"InMemoryJournalDataSize":888},"timestamp":1775609517,"status":200} 
 </msg>
<msg time="2026-04-08T00:51:57.659121" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:51:57.653447" elapsed="0.005700"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:57.651431" elapsed="0.007780"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:57.659412" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:57.659257" elapsed="0.000219"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:57.651385" elapsed="0.008129"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:57.663065" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-2-shard-inventory-config,type=DistributedConfigDatastore","type":"read"},"value":{"ReadWriteTransactionCount":0,"SnapshotIndex":22,"InMemoryJournalLogSize":1,"ReplicatedToAllIndex":22,"Leader":"member-1-shard-inventory-config","LastIndex":23,"RaftState":"Follower","LastCommittedTransactionTime":"1970-01-01 00:00:00.000","LastApplied":23,"PeerAddresses":"member-1-shard-inventory-config: pekko:\/\/opendaylight-cluster-data@10.30.170.48:2550\/user\/shardmanager-config\/member-1-shard-inventory-config, member-3-shard-inventory-config: pekko:\/\/opendaylight-cluster-data@10.30.171.110:2550\/user\/shardmanager-config\/member-3-shard-inventory-config","LastLogIndex":23,"LastLeadershipChangeTime":"2026-04-08 00:46:45.970","FollowerInitialSyncStatus":true,"FollowerInfo":[],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"234.0 μs","CurrentTerm":2,"LastTerm":2,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-inventory-config","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":0,"TxCohortCacheSize":0,"PeerVotingStates":"member-1-shard-inventory-config: true, member-3-shard-inventory-config: true","LastLogTerm":2,"StatRetrievalError":null,"CommitIndex":23,"SnapshotTerm":2,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-2-shard-inventory-config","LeadershipChangeCount":1,"InMemoryJournalDataSize":888},"timestamp":1775609517,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:57.660556" elapsed="0.002636"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:57.660341" elapsed="0.002889"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:57.660322" elapsed="0.002933"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:57.665700" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:57.663546" elapsed="0.002199"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:57.663316" elapsed="0.002463"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:57.663297" elapsed="0.002506"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:57.666436" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:57.666006" elapsed="0.000457"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:57.666774" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:57.666534" elapsed="0.000298"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:57.667329" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:57.667018" elapsed="0.000337"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:57.666855" elapsed="0.000535"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:57.666515" elapsed="0.000897"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:57.667925" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:57.667569" elapsed="0.000382"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:57.668268" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:57.668021" elapsed="0.000306"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:57.668800" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:57.668508" elapsed="0.000317"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:57.668350" elapsed="0.000510"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:57.668002" elapsed="0.000879"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:51:57.669033" elapsed="0.000375"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:51:57.669878" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:57.669571" elapsed="0.000332"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:51:57.670060" elapsed="0.002187"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:51:57.659910" elapsed="0.012401"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:51:57.672583" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:51:57.672472" elapsed="0.000157"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:57.672426" elapsed="0.000240"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:51:57.675713" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-2-shard-inventory-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 177560...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:51:57.672903" elapsed="0.002863"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:51:57.675847" elapsed="0.000067"/>
</return>
<msg time="2026-04-08T00:51:57.676222" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-2-shard-inventory-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 177560...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:51:57.645276" elapsed="0.031038"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:51:57.676530" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:51:57.676804" level="INFO">${data_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-2-shard-inventory-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 177560...</msg>
<var>${data_text}</var>
<arg>uri=${uri}</arg>
<arg>session=${session}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-08T00:51:57.643872" elapsed="0.032961"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:57.678977" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-2-shard-inventory-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1775609517, 'valu...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:57.677906" elapsed="0.001165"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-08T00:51:57.679172" elapsed="0.000031"/>
</return>
<msg time="2026-04-08T00:51:57.679466" level="INFO">${data_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-2-shard-inventory-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1775609517, 'valu...</msg>
<var>${data_object}</var>
<arg>${data_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-08T00:51:57.677061" elapsed="0.002434"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:51:57.679960" level="INFO">${value} = {'AbortTransactionsCount': 0, 'CommitIndex': 23, 'CommittedTransactionsCount': 0, 'CurrentTerm': 2, 'FailedReadTransactionsCount': 0, 'FailedTransactionsCount': 0, 'FollowerInfo': [], 'FollowerInitial...</msg>
<var>${value}</var>
<arg>${data_object}</arg>
<arg>value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:51:57.679652" elapsed="0.000337"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:51:57.680537" level="INFO">${raft_property} = Follower</msg>
<var>${raft_property}</var>
<arg>${value}</arg>
<arg>${property}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:51:57.680144" elapsed="0.000420"/>
</kw>
<return>
<value>${raft_property}</value>
<status status="PASS" start="2026-04-08T00:51:57.680611" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:51:57.680768" level="INFO">${raft_state} = Follower</msg>
<var>${raft_state}</var>
<arg>RaftState</arg>
<arg>${shard_name}</arg>
<arg>${shard_type}</arg>
<arg>${member_index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft property.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T00:51:57.491908" elapsed="0.188885"/>
</kw>
<return>
<value>${raft_state}</value>
<status status="PASS" start="2026-04-08T00:51:57.680851" elapsed="0.000025"/>
</return>
<msg time="2026-04-08T00:51:57.681000" level="INFO">${raft_state} = Follower</msg>
<var>${raft_state}</var>
<arg>shard_name=${shard_name}</arg>
<arg>shard_type=${ds_type}</arg>
<arg>member_index=${index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft status.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T00:51:57.491141" elapsed="0.189883"/>
</kw>
<if>
<branch type="IF" condition="'Follower' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${follower_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-08T00:51:57.681344" elapsed="0.000200"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:57.681104" elapsed="0.000478"/>
</branch>
<branch type="ELSE IF" condition="'Leader' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${leader_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:57.681749" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:57.681606" elapsed="0.000197"/>
</branch>
<branch type="ELSE IF" condition="${validate}">
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized Raft state: ${raft_state}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:57.681965" elapsed="0.000027"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:57.681826" elapsed="0.000197"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:57.681087" elapsed="0.000957"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T00:51:57.490978" elapsed="0.191090"/>
</iter>
<iter>
<kw name="Get_Raft_State_Of_Shard_At_Member" owner="ClusterManagement">
<kw name="Get_Raft_Property_From_Shard_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:57.685392" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:57.684521" elapsed="0.000961"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:51:57.685562" elapsed="0.000031"/>
</return>
<msg time="2026-04-08T00:51:57.685823" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:51:57.683982" elapsed="0.001868"/>
</kw>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Get_As_Json_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:57.734134" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:57.733744" elapsed="0.000438"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:51:57.734948" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:51:57.734688" elapsed="0.000359">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-08T00:51:57.735235" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:51:57.734352" elapsed="0.000909"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:51:57.735816" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:51:57.735428" elapsed="0.000415"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T00:51:57.736143" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-08T00:51:57.736314" level="INFO">${template} = /rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T00:51:57.736001" elapsed="0.000339"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:57.736738" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:57.736495" elapsed="0.000288"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:57.737738" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:57.737485" elapsed="0.000297"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-08T00:51:57.738229" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-08T00:51:57.737940" elapsed="0.000314"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:57.738582" elapsed="0.000022"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:57.738782" elapsed="0.000023"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:57.738970" elapsed="0.000021"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-08T00:51:57.738449" elapsed="0.000578"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-08T00:51:57.738308" elapsed="0.000749"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-08T00:51:57.739102" elapsed="0.000046"/>
</return>
<msg time="2026-04-08T00:51:57.739294" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-08T00:51:57.737149" elapsed="0.002170"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:57.736857" elapsed="0.002493"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:57.739518" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:57.739375" elapsed="0.000198"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:57.736835" elapsed="0.002758"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:57.740181" level="INFO">${final_text} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:57.739733" elapsed="0.000476"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T00:51:57.740258" 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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="PASS" start="2026-04-08T00:51:57.733105" elapsed="0.007276"/>
</kw>
<msg time="2026-04-08T00:51:57.740434" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:51:57.721327" elapsed="0.019161"/>
</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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:57.752235" 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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:57.763760" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:57.775495" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:57.775690" elapsed="0.000022"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:57.775865" elapsed="0.000021"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:57.776239" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:57.776082" elapsed="0.000214"/>
</branch>
<status status="NOT RUN" start="2026-04-08T00:51:57.776067" elapsed="0.000252"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:57.776456" elapsed="0.000021"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:57.776690" elapsed="0.000022"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:57.776863" elapsed="0.000020"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-08T00:51:57.776038" elapsed="0.000879"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-08T00:51:57.775939" elapsed="0.001003"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:57.777087" elapsed="0.000020"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-08T00:51:57.777181" elapsed="0.000017"/>
</return>
<msg time="2026-04-08T00:51:57.777299" level="INFO">${uri} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-08T00:51:57.717250" elapsed="0.060075"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:51:57.778633" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:51:57.778319" elapsed="0.000379">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-08T00:51:57.778789" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:51:57.777965" elapsed="0.000849"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:57.779127" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:57.778885" elapsed="0.000314"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:57.779691" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:57.779402" elapsed="0.000314"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:57.779224" elapsed="0.000527"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:57.778866" elapsed="0.000907"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:51:57.781994" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:51:57.779926" elapsed="0.002094"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-08T00:51:57.782071" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:51:57.782238" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:51:57.777643" elapsed="0.004620"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:51:57.783469" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:51:57.783232" elapsed="0.000299">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-08T00:51:57.783659" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:51:57.782880" elapsed="0.000804"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-08T00:51:57.783891" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-08T00:51:57.783756" elapsed="0.000192"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:57.783737" elapsed="0.000235"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:57.784116" elapsed="0.000022"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:57.784304" elapsed="0.000022"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-08T00:51:57.784371" elapsed="0.000015"/>
</return>
<msg time="2026-04-08T00:51:57.786307" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:51:57.782557" elapsed="0.003776"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:57.787689" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:57.787445" elapsed="0.000289"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:57.788121" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:57.787884" elapsed="0.000295"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:51:57.805534" level="INFO">GET Request : url=http://10.30.171.110:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 path_url=/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0u16rl3earouwvehy59feej101.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:51:57.806127" level="INFO">GET Response : url=http://10.30.171.110:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Transfer-Encoding': 'chunked'} 
 body={"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","hidden-symmetric-keys","encrypted-private-keys","asymmetrically-encrypted-value-format","cms-encrypted-data-format","cleartext-private-keys","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["ssh-client-keepalives","client-ident-hostbased","client-ident-publickey","client-ident-password"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-ex... (set the log level to DEBUG or TRACE to see the full content) 
 </msg>
<msg time="2026-04-08T00:51:57.806609" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:51:57.790195" elapsed="0.016474"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:57.788247" elapsed="0.018519"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:57.807192" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:57.806824" elapsed="0.000518"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:57.788229" elapsed="0.019161"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:57.815684" level="INFO">{"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","hidden-symmetric-keys","encrypted-private-keys","asymmetrically-encrypted-value-format","cms-encrypted-data-format","cleartext-private-keys","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["ssh-client-keepalives","client-ident-hostbased","client-ident-publickey","client-ident-password"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-experimenter-types?revision=2015-10-20","namespace":"urn:opendaylight:openflowplugin:experimenter:types","conformance-type":"import"},{"name":"ietf-ip_2018-02-22","revision":"2018-02-22","schema":"/rests/modules/ietf-ip?revision=2018-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-ip","conformance-type":"import","feature":["ipv6-privacy-autoconf","ipv4-non-contiguous-netmasks"]},{"name":"ietf-tcp-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-client","conformance-type":"import","feature":["local-binding-supported","tcp-client-keepalives"]},{"name":"node-config_2014-10-15","revision":"2014-10-15","schema":"/rests/modules/node-config?revision=2014-10-15","namespace":"urn:opendaylight:module:config","conformance-type":"import"},{"name":"ietf-restconf_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf","conformance-type":"import"},{"name":"ietf-datastores_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-datastores?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-datastores","conformance-type":"import"},{"name":"ietf-yang-patch_2017-02-22","revision":"2017-02-22","schema":"/rests/modules/ietf-yang-patch?revision=2017-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-patch","conformance-type":"import"},{"name":"sal-group_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-group?revision=2013-09-18","namespace":"urn:opendaylight:group:service","conformance-type":"import"},{"name":"odl-codegen-extensions_2024-06-27","revision":"2024-06-27","schema":"/rests/modules/odl-codegen-extensions?revision=2024-06-27","namespace":"urn:opendaylight:yang:extension:codegen","conformance-type":"import"},{"name":"sal-meter_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-meter?revision=2013-09-18","namespace":"urn:opendaylight:meter:service","conformance-type":"import"},{"name":"ietf-interfaces_2018-02-20","revision":"2018-02-20","schema":"/rests/modules/ietf-interfaces?revision=2018-02-20","namespace":"urn:ietf:params:xml:ns:yang:ietf-interfaces","conformance-type":"import","feature":["pre-provisioning","if-mib","arbitrary-names"]},{"name":"opendaylight-l2-types_2013-08-27","revision":"2013-08-27","schema":"/rests/modules/opendaylight-l2-types?revision=2013-08-27","namespace":"urn:opendaylight:l2:types","conformance-type":"import"},{"name":"opendaylight-flow-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-flow-types?revision=2013-10-26","namespace":"urn:opendaylight:flow:types","conformance-type":"import"},{"name":"lldp-speaker-config_2016-05-12","revision":"2016-05-12","schema":"/rests/modules/lldp-speaker-config?revision=2016-05-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker:config","conformance-type":"import"},{"name":"aaa-cert_2015-11-26","revision":"2015-11-26","schema":"/rests/modules/aaa-cert?revision=2015-11-26","namespace":"urn:opendaylight:yang:aaa:cert","conformance-type":"import"},{"name":"openflow-action_2015-02-03","revision":"2015-02-03","schema":"/rests/modules/openflow-action?revision=2015-02-03","namespace":"urn:opendaylight:openflow:common:action","conformance-type":"import"},{"name":"openflow-approved-extensions_2016-08-02","revision":"2016-08-02","schema":"/rests/modules/openflow-approved-extensions?revision=2016-08-02","namespace":"urn:opendaylight:openflow:approved:extensions","conformance-type":"import"},{"name":"nc-notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/nc-notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netmod:notification","conformance-type":"import"},{"name":"ietf-netconf-nmda_2019-01-07","revision":"2019-01-07","schema":"/rests/modules/ietf-netconf-nmda?revision=2019-01-07","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-nmda","conformance-type":"import","feature":["with-defaults","origin"]},{"name":"ietf-tcp-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-common","conformance-type":"import","feature":["keepalives-supported"]},{"name":"network-topology_2013-10-21","revision":"2013-10-21","schema":"/rests/modules/network-topology?revision=2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:network-topology","conformance-type":"import"},{"name":"aaa-encrypt-service-config_2024-02-02","revision":"2024-02-02","schema":"/rests/modules/aaa-encrypt-service-config?revision=2024-02-02","namespace":"config:aaa:authn:encrypt:service:config","conformance-type":"import"},{"name":"openflow-instruction_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-instruction?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:instruction","conformance-type":"import"},{"name":"ietf-tls-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-client","conformance-type":"import","feature":["client-ident-x509-cert","server-auth-x509-cert"]},{"name":"opendaylight-group-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-group-statistics?revision=2013-11-11","namespace":"urn:opendaylight:group:statistics","conformance-type":"import"},{"name":"cluster-admin_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/cluster-admin?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:cluster:admin","conformance-type":"import"},{"name":"opendaylight-flow-statistics_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-flow-statistics?revision=2013-08-19","namespace":"urn:opendaylight:flow:statistics","conformance-type":"import"},{"name":"opendaylight-table-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-table-types?revision=2013-10-26","namespace":"urn:opendaylight:table:types","conformance-type":"import"},{"name":"forwarding-rules-manager-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/forwarding-rules-manager-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:forwardingrules-manager:config","conformance-type":"import"},{"name":"odl-srm-types_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-types?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:types","conformance-type":"import"},{"name":"ietf-x509-cert-to-name_2014-12-10","revision":"2014-12-10","schema":"/rests/modules/ietf-x509-cert-to-name?revision=2014-12-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-x509-cert-to-name","conformance-type":"import"},{"name":"flow-node-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-node-inventory?revision=2013-08-19","namespace":"urn:opendaylight:flow:inventory","conformance-type":"import"},{"name":"flow-errors_2013-11-16","revision":"2013-11-16","schema":"/rests/modules/flow-errors?revision=2013-11-16","namespace":"urn:opendaylight:flow:errors","conformance-type":"import"},{"name":"ietf-netconf_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:netconf:base:1.0","conformance-type":"import","feature":["xpath","url","rollback-on-error","validate","startup","candidate","confirmed-commit","writable-running"]},{"name":"iana-ssh-public-key-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-public-key-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-public-key-algs","conformance-type":"import"},{"name":"aaa-cert-mdsal_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/aaa-cert-mdsal?revision=2016-03-21","namespace":"urn:opendaylight:yang:aaa:cert:mdsal","conformance-type":"import"},{"name":"odl-device-notification_2024-02-18","revision":"2024-02-18","schema":"/rests/modules/odl-device-notification?revision=2024-02-18","namespace":"urn:opendaylight:device:notification","conformance-type":"import"},{"name":"ietf-origin_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-origin?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-origin","conformance-type":"import"},{"name":"openflow-augments_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-augments?revision=2015-02-25","namespace":"urn:opendaylight:openflow:augments","conformance-type":"import"},{"name":"iana-ssh-encryption-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-encryption-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-encryption-algs","conformance-type":"import"},{"name":"ietf-truststore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-truststore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-truststore","conformance-type":"import","feature":["inline-definitions-supported"]},{"name":"distributed-datastore-provider_2025-01-30","revision":"2025-01-30","schema":"/rests/modules/distributed-datastore-provider?revision=2025-01-30","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:distributed-datastore-provider","conformance-type":"import"},{"name":"opendaylight-group-types_2013-10-18","revision":"2013-10-18","schema":"/rests/modules/opendaylight-group-types?revision=2013-10-18","namespace":"urn:opendaylight:group:types","conformance-type":"import"},{"name":"sal-remote-augment_2023-11-03","revision":"2023-11-03","schema":"/rests/modules/sal-remote-augment?revision=2023-11-03","namespace":"urn:sal:restconf:event:subscription","conformance-type":"import"},{"name":"opendaylight-ipv6-arbitrary-bitmask-fields_2016-02-24","revision":"2016-02-24","schema":"/rests/modules/opendaylight-ipv6-arbitrary-bitmask-fields?revision=2016-02-24","namespace":"urn:opendaylight:opendaylight-ipv6-arbitrary-bitmask-fields","conformance-type":"import"},{"name":"sal-flows-batch_2016-03-14","revision":"2016-03-14","schema":"/rests/modules/sal-flows-batch?revision=2016-03-14","namespace":"urn:opendaylight:flows:service","conformance-type":"import"},{"name":"ietf-tls-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-common","conformance-type":"import","feature":["tls12","hello-params","tls13"]},{"name":"openflow-types_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-types?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:types","conformance-type":"import"},{"name":"ietf-netconf-with-defaults_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf-with-defaults?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults","conformance-type":"import"},{"name":"odl-srm-ops_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-ops?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:ops","conformance-type":"import"},{"name":"odl-general-entity_2015-09-30","revision":"2015-09-30","schema":"/rests/modules/odl-general-entity?revision=2015-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:mdsal:core:general-entity","conformance-type":"import"},{"name":"iana-ssh-key-exchange-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-key-exchange-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-key-exchange-algs","conformance-type":"import"},{"name":"node-ssl-connection-error_2019-07-23","revision":"2019-07-23","schema":"/rests/modules/node-ssl-connection-error?revision=2019-07-23","namespace":"urn:opendaylight:node-ssl-connection-error:service","conformance-type":"import"},{"name":"openflow-protocol_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-protocol?revision=2013-07-31","namespace":"urn:opendaylight:openflow:protocol","conformance-type":"import"},{"name":"ietf-udp-server_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-server?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-server","conformance-type":"import"},{"name":"ietf-keystore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-keystore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-keystore","conformance-type":"import","feature":["asymmetric-keys","inline-definitions-supported"]},{"name":"aaa_2016-12-14","revision":"2016-12-14","schema":"/rests/modules/aaa?revision=2016-12-14","namespace":"urn:opendaylight:params:xml:ns:yang:aaa","conformance-type":"import"},{"name":"aaa-cert-rpc_2015-12-15","revision":"2015-12-15","schema":"/rests/modules/aaa-cert-rpc?revision=2015-12-15","namespace":"urn:opendaylight:yang:aaa:cert:rpc","conformance-type":"import"},{"name":"system-notifications_2013-09-27","revision":"2013-09-27","schema":"/rests/modules/system-notifications?revision=2013-09-27","namespace":"urn:opendaylight:openflow:system","conformance-type":"import"},{"name":"sal-flat-batch_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/sal-flat-batch?revision=2016-03-21","namespace":"urn:opendaylight:flat-batch:service","conformance-type":"import"},{"name":"notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netconf:notification:1.0","conformance-type":"import"},{"name":"sal-remote_2014-01-14","revision":"2014-01-14","schema":"/rests/modules/sal-remote?revision=2014-01-14","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:remote","conformance-type":"import"},{"name":"yang-ext_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/yang-ext?revision=2013-07-09","namespace":"urn:opendaylight:yang:extension:yang-ext","conformance-type":"import"},{"name":"opendaylight-multipart-types_2017-01-12","revision":"2017-01-12","schema":"/rests/modules/opendaylight-multipart-types?revision=2017-01-12","namespace":"urn:opendaylight:multipart:types","conformance-type":"import"},{"name":"opendaylight-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-inventory?revision=2013-08-19","namespace":"urn:opendaylight:inventory","conformance-type":"import"},{"name":"sal-queue_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-queue?revision=2015-03-05","namespace":"urn:opendaylight:queue:service","conformance-type":"import"},{"name":"sal-groups-batch_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/sal-groups-batch?revision=2016-03-15","namespace":"urn:opendaylight:groups:service","conformance-type":"import"},{"name":"arbitrator-reconcile_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/arbitrator-reconcile?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:arbitrator-reconcile:service","conformance-type":"import"},{"name":"ietf-yang-metadata_2016-08-05","revision":"2016-08-05","schema":"/rests/modules/ietf-yang-metadata?revision=2016-08-05","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-metadata","conformance-type":"import"},{"name":"opendaylight-arbitrary-bitmask-fields_2016-01-30","revision":"2016-01-30","schema":"/rests/modules/opendaylight-arbitrary-bitmask-fields?revision=2016-01-30","namespace":"urn:opendaylight:arbitrary:bitmask:fields","conformance-type":"import"},{"name":"ietf-udp-client_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-client?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-client","conformance-type":"import","feature":["local-binding"]},{"name":"opendaylight-meter-types_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/opendaylight-meter-types?revision=2013-09-18","namespace":"urn:opendaylight:meter:types","conformance-type":"import"},{"name":"opendaylight-action-types_2013-11-12","revision":"2013-11-12","schema":"/rests/modules/opendaylight-action-types?revision=2013-11-12","namespace":"urn:opendaylight:action:types","conformance-type":"import"},{"name":"sal-role_2015-07-27","revision":"2015-07-27","schema":"/rests/modules/sal-role?revision=2015-07-27","namespace":"urn:opendaylight:role:service","conformance-type":"import"},{"name":"openflow-provider-config_2016-05-10","revision":"2016-05-10","schema":"/rests/modules/openflow-provider-config?revision=2016-05-10","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:provider:config","conformance-type":"import"},{"name":"odl-serviceutils-upgrade_2018-07-02","revision":"2018-07-02","schema":"/rests/modules/odl-serviceutils-upgrade?revision=2018-07-02","namespace":"urn:opendaylight:serviceutils:upgrade","conformance-type":"import"},{"name":"opendaylight-match-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-match-types?revision=2013-10-26","namespace":"urn:opendaylight:model:match:types","conformance-type":"import"},{"name":"ietf-restconf-server_2024-08-14","revision":"2024-08-14","schema":"/rests/modules/ietf-restconf-server?revision=2024-08-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-server","conformance-type":"import","feature":["http-listen","https-listen"]},{"name":"reconciliation-result-state_2017-07-13","revision":"2017-07-13","schema":"/rests/modules/reconciliation-result-state?revision=2017-07-13","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:rf:state","conformance-type":"import"},{"name":"onf-extensions_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/onf-extensions?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf","conformance-type":"import"},{"name":"sal-table_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/sal-table?revision=2013-10-26","namespace":"urn:opendaylight:table:service","conformance-type":"import"},{"name":"iana-http-versions_2026-02-04","revision":"2026-02-04","schema":"/rests/modules/iana-http-versions?revision=2026-02-04","namespace":"urn:ietf:params:xml:ns:yang:iana-http-versions","conformance-type":"import"},{"name":"opendaylight-direct-statistics_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/opendaylight-direct-statistics?revision=2016-05-11","namespace":"urn:opendaylight:direct:statistics","conformance-type":"import"},{"name":"opendaylight-port-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-port-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:port","conformance-type":"import"},{"name":"sal-async-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/sal-async-config?revision=2017-06-19","namespace":"urn:opendaylight:async-config:service","conformance-type":"import"},{"name":"aaa-password-service-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-password-service-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:password:service:config","conformance-type":"import"},{"name":"ietf-yang-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-yang-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-types","conformance-type":"import"},{"name":"opendaylight-queue-statistics_2013-12-16","revision":"2013-12-16","schema":"/rests/modules/opendaylight-queue-statistics?revision=2013-12-16","namespace":"urn:opendaylight:queue:statistics","conformance-type":"import"},{"name":"sal-bundle_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/sal-bundle?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf:bundle:service","conformance-type":"import"},{"name":"ietf-restconf-subscribed-notifications_2019-11-17","revision":"2019-11-17","schema":"/rests/modules/ietf-restconf-subscribed-notifications?revision=2019-11-17","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-subscribed-notifications","conformance-type":"import"},{"name":"sal-meters-batch_2016-03-16","revision":"2016-03-16","schema":"/rests/modules/sal-meters-batch?revision=2016-03-16","namespace":"urn:opendaylight:meters:service","conformance-type":"import"},{"name":"odl-entity-owners","revision":"","schema":"/rests/modules/odl-entity-owners","namespace":"urn:opendaylight:params:xml:ns:yang:controller:entity-owners","conformance-type":"import"},{"name":"sal-experimenter-mp-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-mp-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-mp-message:service","conformance-type":"import"},{"name":"packet-processing_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/packet-processing?revision=2013-07-09","namespace":"urn:opendaylight:packet:service","conformance-type":"import"},{"name":"openflow-configuration_2014-06-30","revision":"2014-06-30","schema":"/rests/modules/openflow-configuration?revision=2014-06-30","namespace":"urn:opendaylight:openflow:config","conformance-type":"import"},{"name":"odl-srm-rpcs_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-rpcs?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:rpc","conformance-type":"import"},{"name":"ietf-netconf-acm_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-netconf-acm?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-acm","conformance-type":"import"},{"name":"iana-crypt-hash_2014-08-06","revision":"2014-08-06","schema":"/rests/modules/iana-crypt-hash?revision=2014-08-06","namespace":"urn:ietf:params:xml:ns:yang:iana-crypt-hash","conformance-type":"import","feature":["crypt-hash-sha-512","crypt-hash-sha-256","crypt-hash-md5"]},{"name":"openflow-extensible-match_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-extensible-match?revision=2015-02-25","namespace":"urn:opendaylight:openflow:oxm","conformance-type":"import"}],"module-set-id":"2"}}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:57.809685" elapsed="0.006531"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:57.809196" elapsed="0.007057"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:57.809124" elapsed="0.007154"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:57.818699" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:57.816557" elapsed="0.002187"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:57.816335" elapsed="0.002443"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:57.816318" elapsed="0.002484"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:57.819360" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:57.818963" elapsed="0.000433"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:57.819703" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:57.819467" elapsed="0.000293"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:57.820263" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:57.819942" elapsed="0.000347"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:57.819783" elapsed="0.000542"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:57.819448" elapsed="0.000898"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:57.820872" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:57.820510" elapsed="0.000388"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:57.821212" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:57.820967" elapsed="0.000303"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:57.821743" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:57.821451" elapsed="0.000317"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:57.821294" elapsed="0.000510"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:57.820948" elapsed="0.000877"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:51:57.821970" elapsed="0.000356"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:51:57.822775" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:57.822490" elapsed="0.000311"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:51:57.822953" elapsed="0.002278"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:51:57.808227" elapsed="0.017068"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:51:57.825469" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:51:57.825364" elapsed="0.000148"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:57.825345" elapsed="0.000188"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:51:57.834892" level="INFO">${text_normalized} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:51:57.825676" elapsed="0.009246"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:51:57.834977" elapsed="0.000031"/>
</return>
<msg time="2026-04-08T00:51:57.835151" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:51:57.786633" elapsed="0.048558"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:51:57.835254" elapsed="0.000027"/>
</return>
<msg time="2026-04-08T00:51:57.835582" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="PASS" start="2026-04-08T00:51:57.696250" elapsed="0.139368"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Json_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:57.836081" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:57.835744" elapsed="0.000480"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:57.835712" elapsed="0.000555"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:51:57.836328" elapsed="0.000071"/>
</return>
<arg>session=${session}</arg>
<arg>folder=${RESTCONF_MODULES_DIR}</arg>
<arg>verify=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Add arguments sensible for JSON data, return Get_Templated response text.
Optionally, verification against JSON data (may be iterated) is called.
Only subset of JSON data is verified and returned if JMES path is specified in
file ${folder}/jmespath.expr.</doc>
<status status="PASS" start="2026-04-08T00:51:57.690311" elapsed="0.146278"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:57.685919" elapsed="0.150783"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:57.685901" elapsed="0.150827"/>
</if>
<kw name="Resolve_Shard_Type_Class" owner="ClusterManagement">
<if>
<branch type="IF" condition="'${shard_type}' == 'config'">
<return>
<value>DistributedConfigDatastore</value>
<status status="PASS" start="2026-04-08T00:51:57.837634" elapsed="0.000071"/>
</return>
<status status="PASS" start="2026-04-08T00:51:57.837411" elapsed="0.000343"/>
</branch>
<branch type="ELSE IF" condition="'${shard_type}' == 'operational'">
<return>
<value>DistributedOperationalDatastore</value>
<status status="NOT RUN" start="2026-04-08T00:51:57.837900" elapsed="0.000045"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:51:57.837813" elapsed="0.000174"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:57.837377" elapsed="0.000670"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized shard type: ${shard_type}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:57.838295" elapsed="0.000066"/>
</kw>
<msg time="2026-04-08T00:51:57.838498" level="INFO">${type_class} = DistributedConfigDatastore</msg>
<var>${type_class}</var>
<arg>shard_type=${shard_type}</arg>
<doc>Simple lookup for class name corresponding to desired type.</doc>
<status status="PASS" start="2026-04-08T00:51:57.836992" elapsed="0.001532"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:57.839390" level="INFO">${cluster_index} = 3</msg>
<var>${cluster_index}</var>
<arg>${member_index}+${NODE_ROLE_INDEX_START}-1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:57.838713" elapsed="0.000705"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:57.840548" level="INFO">${uri} = jolokia/read/org.opendaylight.controller:Category=Shards,name=member-3-shard-inventory-config,type=DistributedConfigDatastore</msg>
<var>${uri}</var>
<arg>${JOLOKIA_READ_URI}:Category=Shards,name=member-${cluster_index}-shard-${shard_name}-${shard_type},type=${type_class}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:57.839576" elapsed="0.001000"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:57.847533" level="INFO">jolokia/read/org.opendaylight.controller:Category=Shards,name=member-3-shard-inventory-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:57.847248" elapsed="0.000369"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:57.848141" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:57.847859" elapsed="0.000381"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:51:57.855575" level="INFO">GET Request : url=http://10.30.171.110:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-3-shard-inventory-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-3-shard-inventory-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:51:57.855634" level="INFO">GET Response : url=http://10.30.171.110:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-3-shard-inventory-config,type=DistributedConfigDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Wed, 08 Apr 2026 00:51:57 GMT', 'Expires': 'Tue, 07 Apr 2026 23:51:57 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-3-shard-inventory-config,type=DistributedConfigDatastore","type":"read"},"value":{"ReadWriteTransactionCount":0,"SnapshotIndex":22,"InMemoryJournalLogSize":1,"ReplicatedToAllIndex":22,"Leader":"member-1-shard-inventory-config","LastIndex":23,"RaftState":"Follower","LastApplied":23,"LastCommittedTransactionTime":"1970-01-01 00:00:00.000","PeerAddresses":"member-1-shard-inventory-config: pekko:\/\/opendaylight-cluster-data@10.30.170.48:2550\/user\/shardmanager-config\/member-1-shard-inventory-config, member-2-shard-inventory-config: pekko:\/\/opendaylight-cluster-data@10.30.170.131:2550\/user\/shardmanager-config\/member-2-shard-inventory-config","LastLogIndex":23,"LastLeadershipChangeTime":"2026-04-08 00:46:45.969","FollowerInitialSyncStatus":true,"FollowerInfo":[],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"209.5 μs","CurrentTerm":2,"LastTerm":2,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-inventory-config","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":0,"TxCohortCacheSize":0,"PeerVotingStates":"member-1-shard-inventory-config: true, member-2-shard-inventory-config: true","LastLogTerm":2,"StatRetrievalError":null,"CommitIndex":23,"SnapshotTerm":2,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-3-shard-inventory-config","LeadershipChangeCount":1,"InMemoryJournalDataSize":888},"timestamp":1775609517,"status":200} 
 </msg>
<msg time="2026-04-08T00:51:57.855738" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:51:57.850498" elapsed="0.005265"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:57.848387" elapsed="0.007423"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:57.856010" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:57.855856" elapsed="0.000218"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:57.848340" elapsed="0.007771"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:57.859604" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-3-shard-inventory-config,type=DistributedConfigDatastore","type":"read"},"value":{"ReadWriteTransactionCount":0,"SnapshotIndex":22,"InMemoryJournalLogSize":1,"ReplicatedToAllIndex":22,"Leader":"member-1-shard-inventory-config","LastIndex":23,"RaftState":"Follower","LastApplied":23,"LastCommittedTransactionTime":"1970-01-01 00:00:00.000","PeerAddresses":"member-1-shard-inventory-config: pekko:\/\/opendaylight-cluster-data@10.30.170.48:2550\/user\/shardmanager-config\/member-1-shard-inventory-config, member-2-shard-inventory-config: pekko:\/\/opendaylight-cluster-data@10.30.170.131:2550\/user\/shardmanager-config\/member-2-shard-inventory-config","LastLogIndex":23,"LastLeadershipChangeTime":"2026-04-08 00:46:45.969","FollowerInitialSyncStatus":true,"FollowerInfo":[],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"209.5 μs","CurrentTerm":2,"LastTerm":2,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-inventory-config","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":0,"TxCohortCacheSize":0,"PeerVotingStates":"member-1-shard-inventory-config: true, member-2-shard-inventory-config: true","LastLogTerm":2,"StatRetrievalError":null,"CommitIndex":23,"SnapshotTerm":2,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-3-shard-inventory-config","LeadershipChangeCount":1,"InMemoryJournalDataSize":888},"timestamp":1775609517,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:57.857230" elapsed="0.002468"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:57.856953" elapsed="0.002781"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:57.856933" elapsed="0.002826"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:57.862472" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:57.860038" elapsed="0.002499"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:57.859817" elapsed="0.002768"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:57.859799" elapsed="0.002820"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:57.863392" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:57.862848" elapsed="0.000582"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:57.863857" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:57.863530" elapsed="0.000407"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:57.864633" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:57.864214" elapsed="0.000455"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:57.863970" elapsed="0.000750"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:57.863503" elapsed="0.001248"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:57.865523" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:57.864973" elapsed="0.000588"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:57.865996" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:57.865664" elapsed="0.000411"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:57.866775" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:57.866364" elapsed="0.000448"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:57.866108" elapsed="0.000753"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:57.865638" elapsed="0.001253"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:51:57.867096" elapsed="0.000500"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:51:57.868253" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:57.867838" elapsed="0.000451"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:51:57.868502" elapsed="0.003083"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:51:57.856526" elapsed="0.015152"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:51:57.872059" elapsed="0.000021"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:51:57.871901" elapsed="0.000222"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:57.871836" elapsed="0.000370"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:51:57.875703" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-3-shard-inventory-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 177560...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:51:57.872545" elapsed="0.003212"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:51:57.875840" elapsed="0.000067"/>
</return>
<msg time="2026-04-08T00:51:57.876217" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-3-shard-inventory-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 177560...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:51:57.842210" elapsed="0.034097"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:51:57.876450" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:51:57.876721" level="INFO">${data_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-3-shard-inventory-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 177560...</msg>
<var>${data_text}</var>
<arg>uri=${uri}</arg>
<arg>session=${session}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-08T00:51:57.840790" elapsed="0.035959"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:57.878957" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-3-shard-inventory-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1775609517, 'valu...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:57.877840" elapsed="0.001212"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-08T00:51:57.879135" elapsed="0.000044"/>
</return>
<msg time="2026-04-08T00:51:57.879443" level="INFO">${data_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-3-shard-inventory-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1775609517, 'valu...</msg>
<var>${data_object}</var>
<arg>${data_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-08T00:51:57.876989" elapsed="0.002483"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:51:57.879938" level="INFO">${value} = {'AbortTransactionsCount': 0, 'CommitIndex': 23, 'CommittedTransactionsCount': 0, 'CurrentTerm': 2, 'FailedReadTransactionsCount': 0, 'FailedTransactionsCount': 0, 'FollowerInfo': [], 'FollowerInitial...</msg>
<var>${value}</var>
<arg>${data_object}</arg>
<arg>value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:51:57.879630" elapsed="0.000336"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:51:57.880517" level="INFO">${raft_property} = Follower</msg>
<var>${raft_property}</var>
<arg>${value}</arg>
<arg>${property}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:51:57.880123" elapsed="0.000420"/>
</kw>
<return>
<value>${raft_property}</value>
<status status="PASS" start="2026-04-08T00:51:57.880590" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:51:57.880743" level="INFO">${raft_state} = Follower</msg>
<var>${raft_state}</var>
<arg>RaftState</arg>
<arg>${shard_name}</arg>
<arg>${shard_type}</arg>
<arg>${member_index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft property.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T00:51:57.683299" elapsed="0.197470"/>
</kw>
<return>
<value>${raft_state}</value>
<status status="PASS" start="2026-04-08T00:51:57.880838" elapsed="0.000027"/>
</return>
<msg time="2026-04-08T00:51:57.880986" level="INFO">${raft_state} = Follower</msg>
<var>${raft_state}</var>
<arg>shard_name=${shard_name}</arg>
<arg>shard_type=${ds_type}</arg>
<arg>member_index=${index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft status.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T00:51:57.682455" elapsed="0.198556"/>
</kw>
<if>
<branch type="IF" condition="'Follower' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${follower_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-08T00:51:57.881343" elapsed="0.000194"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:57.881091" elapsed="0.000485"/>
</branch>
<branch type="ELSE IF" condition="'Leader' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${leader_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:57.881743" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:57.881600" elapsed="0.000197"/>
</branch>
<branch type="ELSE IF" condition="${validate}">
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized Raft state: ${raft_state}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:57.881958" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:57.881819" elapsed="0.000190"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:57.881073" elapsed="0.000958"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T00:51:57.682288" elapsed="0.199765"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-08T00:51:57.299289" elapsed="0.582797"/>
</for>
<return>
<value>${leader_list}</value>
<value>${follower_list}</value>
<status status="PASS" start="2026-04-08T00:51:57.882128" elapsed="0.000026"/>
</return>
<msg time="2026-04-08T00:51:57.882345" level="INFO">${leader_list} = [1]</msg>
<msg time="2026-04-08T00:51:57.882391" level="INFO">${follower_list} = [2, 3]</msg>
<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="PASS" start="2026-04-08T00:51:57.295297" elapsed="0.587118"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T00:51:57.882854" level="INFO">Length is 1.</msg>
<msg time="2026-04-08T00:51:57.882929" level="INFO">${leader_count} = 1</msg>
<var>${leader_count}</var>
<arg>${leader_list}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T00:51:57.882586" elapsed="0.000366"/>
</kw>
<if>
<branch type="IF" condition="${leader_count} &lt; 1">
<kw name="Fail" owner="BuiltIn">
<arg>No leader found.</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:57.883247" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:57.883020" elapsed="0.000282"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:57.883002" elapsed="0.000323"/>
</if>
<kw name="Length Should Be" owner="BuiltIn">
<msg time="2026-04-08T00:51:57.885485" level="INFO">Length is 1.</msg>
<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="PASS" start="2026-04-08T00:51:57.883459" elapsed="0.002074"/>
</kw>
<kw name="Get From List" owner="Collections">
<msg time="2026-04-08T00:51:57.885915" level="INFO">${leader} = 1</msg>
<var>${leader}</var>
<arg>${leader_list}</arg>
<arg>0</arg>
<doc>Returns the value specified with an ``index`` from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:51:57.885729" elapsed="0.000212"/>
</kw>
<return>
<value>${leader}</value>
<value>${follower_list}</value>
<status status="PASS" start="2026-04-08T00:51:57.885988" elapsed="0.000028"/>
</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="PASS" start="2026-04-08T00:51:57.292747" elapsed="0.593394"/>
</kw>
<var name="${shard_name}">inventory</var>
<status status="PASS" start="2026-04-08T00:51:57.292530" elapsed="0.593673"/>
</iter>
<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-04-08T00:51:57.890806" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:51:57.890420" elapsed="0.000413"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:51:57.891316" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:51:57.890993" elapsed="0.000349"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:51:57.891387" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:51:57.891541" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:51:57.890027" elapsed="0.001539"/>
</kw>
<kw name="Sort List" owner="Collections">
<arg>${index_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="PASS" start="2026-04-08T00:51:57.891720" elapsed="0.000153"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:51:57.892403" level="INFO">${ds_type} = config</msg>
<var>${ds_type}</var>
<arg>'${shard_type}' != 'config'</arg>
<arg>operational</arg>
<arg>config</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:51:57.892032" elapsed="0.000398"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:51:57.892824" level="INFO">${leader_list} = []</msg>
<var>${leader_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:51:57.892587" elapsed="0.000262"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:51:57.893252" level="INFO">${follower_list} = []</msg>
<var>${follower_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:51:57.892996" elapsed="0.000282"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_Raft_State_Of_Shard_At_Member" owner="ClusterManagement">
<kw name="Get_Raft_Property_From_Shard_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:57.896594" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:57.895707" elapsed="0.000979"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:51:57.896768" elapsed="0.000031"/>
</return>
<msg time="2026-04-08T00:51:57.897036" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:51:57.895178" 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-04-08T00:51:57.945323" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:57.944928" elapsed="0.000424"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:51:57.946130" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:51:57.945850" elapsed="0.000376">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-08T00:51:57.946321" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:51:57.945514" elapsed="0.000832"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:51:57.946891" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:51:57.946509" elapsed="0.000409"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T00:51:57.947230" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-08T00:51:57.947384" level="INFO">${template} = /rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T00:51:57.947077" elapsed="0.000332"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:57.947812" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:57.947565" elapsed="0.000335"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:57.948862" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:57.948605" elapsed="0.000303"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-08T00:51:57.949358" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-08T00:51:57.949068" elapsed="0.000317"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:57.949705" elapsed="0.000022"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:57.949961" elapsed="0.000025"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:57.950152" elapsed="0.000034"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-08T00:51:57.949569" elapsed="0.000654"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-08T00:51:57.949433" elapsed="0.000819"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-08T00:51:57.950296" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:51:57.950457" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-08T00:51:57.948281" elapsed="0.002202"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:57.947971" elapsed="0.002544"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:57.950702" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:57.950540" elapsed="0.000218"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:57.947951" elapsed="0.002828"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:57.951368" level="INFO">${final_text} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:57.950918" elapsed="0.000478"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T00:51:57.951444" elapsed="0.000028"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="PASS" start="2026-04-08T00:51:57.944318" elapsed="0.007249"/>
</kw>
<msg time="2026-04-08T00:51:57.951618" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:51:57.932503" elapsed="0.019168"/>
</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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:57.963471" 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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:57.975229" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:57.986824" elapsed="0.000027"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:57.987015" elapsed="0.000022"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:57.987202" elapsed="0.000022"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:57.987561" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:57.987420" elapsed="0.000295"/>
</branch>
<status status="NOT RUN" start="2026-04-08T00:51:57.987405" elapsed="0.000344"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:57.987896" elapsed="0.000021"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:57.988064" elapsed="0.000020"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:57.988269" elapsed="0.000023"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-08T00:51:57.987377" elapsed="0.000949"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-08T00:51:57.987278" elapsed="0.001073"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:57.988498" elapsed="0.000021"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-08T00:51:57.988573" elapsed="0.000016"/>
</return>
<msg time="2026-04-08T00:51:57.988688" level="INFO">${uri} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-08T00:51:57.928379" elapsed="0.060334"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:51:57.989946" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:51:57.989713" elapsed="0.000296">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-08T00:51:57.990099" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:51:57.989379" elapsed="0.000745"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:57.990462" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:57.990213" elapsed="0.000305"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:57.991007" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:57.990711" elapsed="0.000322"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:57.990542" elapsed="0.000526"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:57.990194" elapsed="0.000896"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:51:57.993320" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:51:57.991254" elapsed="0.002092"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-08T00:51:57.993398" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:51:57.993551" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:51:57.989029" elapsed="0.004547"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:51:57.994767" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:51:57.994534" elapsed="0.000296">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-08T00:51:57.994923" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:51:57.994202" elapsed="0.000746"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-08T00:51:57.995167" elapsed="0.000029"/>
</return>
<status status="PASS" start="2026-04-08T00:51:57.995020" elapsed="0.000210"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:57.995000" elapsed="0.000253"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:57.995396" elapsed="0.000022"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:57.995594" elapsed="0.000024"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-08T00:51:57.995664" elapsed="0.000016"/>
</return>
<msg time="2026-04-08T00:51:57.997655" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:51:57.993870" elapsed="0.003813"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:57.999102" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:57.998853" elapsed="0.000295"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:57.999560" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:57.999317" elapsed="0.000286"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:51:58.010066" level="INFO">GET Request : url=http://10.30.170.48:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 path_url=/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01ju7g9ih47awu1dako8be5k84o113.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:51:58.010676" level="INFO">GET Response : url=http://10.30.170.48:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Transfer-Encoding': 'chunked'} 
 body={"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","hidden-symmetric-keys","encrypted-private-keys","asymmetrically-encrypted-value-format","cms-encrypted-data-format","cleartext-private-keys","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["ssh-client-keepalives","client-ident-hostbased","client-ident-publickey","client-ident-password"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-ex... (set the log level to DEBUG or TRACE to see the full content) 
 </msg>
<msg time="2026-04-08T00:51:58.010951" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:51:58.001641" elapsed="0.009346"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:57.999669" elapsed="0.011379"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:58.011344" elapsed="0.000033"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:58.011085" elapsed="0.000366"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:57.999651" elapsed="0.011832"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:58.016533" level="INFO">{"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","hidden-symmetric-keys","encrypted-private-keys","asymmetrically-encrypted-value-format","cms-encrypted-data-format","cleartext-private-keys","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["ssh-client-keepalives","client-ident-hostbased","client-ident-publickey","client-ident-password"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-experimenter-types?revision=2015-10-20","namespace":"urn:opendaylight:openflowplugin:experimenter:types","conformance-type":"import"},{"name":"ietf-ip_2018-02-22","revision":"2018-02-22","schema":"/rests/modules/ietf-ip?revision=2018-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-ip","conformance-type":"import","feature":["ipv6-privacy-autoconf","ipv4-non-contiguous-netmasks"]},{"name":"ietf-tcp-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-client","conformance-type":"import","feature":["local-binding-supported","tcp-client-keepalives"]},{"name":"node-config_2014-10-15","revision":"2014-10-15","schema":"/rests/modules/node-config?revision=2014-10-15","namespace":"urn:opendaylight:module:config","conformance-type":"import"},{"name":"ietf-restconf_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf","conformance-type":"import"},{"name":"ietf-datastores_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-datastores?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-datastores","conformance-type":"import"},{"name":"ietf-yang-patch_2017-02-22","revision":"2017-02-22","schema":"/rests/modules/ietf-yang-patch?revision=2017-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-patch","conformance-type":"import"},{"name":"sal-group_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-group?revision=2013-09-18","namespace":"urn:opendaylight:group:service","conformance-type":"import"},{"name":"odl-codegen-extensions_2024-06-27","revision":"2024-06-27","schema":"/rests/modules/odl-codegen-extensions?revision=2024-06-27","namespace":"urn:opendaylight:yang:extension:codegen","conformance-type":"import"},{"name":"sal-meter_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-meter?revision=2013-09-18","namespace":"urn:opendaylight:meter:service","conformance-type":"import"},{"name":"ietf-interfaces_2018-02-20","revision":"2018-02-20","schema":"/rests/modules/ietf-interfaces?revision=2018-02-20","namespace":"urn:ietf:params:xml:ns:yang:ietf-interfaces","conformance-type":"import","feature":["pre-provisioning","if-mib","arbitrary-names"]},{"name":"opendaylight-l2-types_2013-08-27","revision":"2013-08-27","schema":"/rests/modules/opendaylight-l2-types?revision=2013-08-27","namespace":"urn:opendaylight:l2:types","conformance-type":"import"},{"name":"opendaylight-flow-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-flow-types?revision=2013-10-26","namespace":"urn:opendaylight:flow:types","conformance-type":"import"},{"name":"lldp-speaker-config_2016-05-12","revision":"2016-05-12","schema":"/rests/modules/lldp-speaker-config?revision=2016-05-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker:config","conformance-type":"import"},{"name":"aaa-cert_2015-11-26","revision":"2015-11-26","schema":"/rests/modules/aaa-cert?revision=2015-11-26","namespace":"urn:opendaylight:yang:aaa:cert","conformance-type":"import"},{"name":"openflow-action_2015-02-03","revision":"2015-02-03","schema":"/rests/modules/openflow-action?revision=2015-02-03","namespace":"urn:opendaylight:openflow:common:action","conformance-type":"import"},{"name":"openflow-approved-extensions_2016-08-02","revision":"2016-08-02","schema":"/rests/modules/openflow-approved-extensions?revision=2016-08-02","namespace":"urn:opendaylight:openflow:approved:extensions","conformance-type":"import"},{"name":"nc-notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/nc-notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netmod:notification","conformance-type":"import"},{"name":"ietf-netconf-nmda_2019-01-07","revision":"2019-01-07","schema":"/rests/modules/ietf-netconf-nmda?revision=2019-01-07","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-nmda","conformance-type":"import","feature":["with-defaults","origin"]},{"name":"ietf-tcp-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-common","conformance-type":"import","feature":["keepalives-supported"]},{"name":"network-topology_2013-10-21","revision":"2013-10-21","schema":"/rests/modules/network-topology?revision=2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:network-topology","conformance-type":"import"},{"name":"aaa-encrypt-service-config_2024-02-02","revision":"2024-02-02","schema":"/rests/modules/aaa-encrypt-service-config?revision=2024-02-02","namespace":"config:aaa:authn:encrypt:service:config","conformance-type":"import"},{"name":"openflow-instruction_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-instruction?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:instruction","conformance-type":"import"},{"name":"ietf-tls-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-client","conformance-type":"import","feature":["client-ident-x509-cert","server-auth-x509-cert"]},{"name":"opendaylight-group-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-group-statistics?revision=2013-11-11","namespace":"urn:opendaylight:group:statistics","conformance-type":"import"},{"name":"cluster-admin_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/cluster-admin?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:cluster:admin","conformance-type":"import"},{"name":"opendaylight-flow-statistics_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-flow-statistics?revision=2013-08-19","namespace":"urn:opendaylight:flow:statistics","conformance-type":"import"},{"name":"opendaylight-table-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-table-types?revision=2013-10-26","namespace":"urn:opendaylight:table:types","conformance-type":"import"},{"name":"forwarding-rules-manager-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/forwarding-rules-manager-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:forwardingrules-manager:config","conformance-type":"import"},{"name":"odl-srm-types_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-types?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:types","conformance-type":"import"},{"name":"ietf-x509-cert-to-name_2014-12-10","revision":"2014-12-10","schema":"/rests/modules/ietf-x509-cert-to-name?revision=2014-12-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-x509-cert-to-name","conformance-type":"import"},{"name":"flow-node-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-node-inventory?revision=2013-08-19","namespace":"urn:opendaylight:flow:inventory","conformance-type":"import"},{"name":"flow-errors_2013-11-16","revision":"2013-11-16","schema":"/rests/modules/flow-errors?revision=2013-11-16","namespace":"urn:opendaylight:flow:errors","conformance-type":"import"},{"name":"ietf-netconf_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:netconf:base:1.0","conformance-type":"import","feature":["xpath","url","rollback-on-error","validate","startup","candidate","confirmed-commit","writable-running"]},{"name":"iana-ssh-public-key-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-public-key-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-public-key-algs","conformance-type":"import"},{"name":"aaa-cert-mdsal_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/aaa-cert-mdsal?revision=2016-03-21","namespace":"urn:opendaylight:yang:aaa:cert:mdsal","conformance-type":"import"},{"name":"odl-device-notification_2024-02-18","revision":"2024-02-18","schema":"/rests/modules/odl-device-notification?revision=2024-02-18","namespace":"urn:opendaylight:device:notification","conformance-type":"import"},{"name":"ietf-origin_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-origin?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-origin","conformance-type":"import"},{"name":"openflow-augments_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-augments?revision=2015-02-25","namespace":"urn:opendaylight:openflow:augments","conformance-type":"import"},{"name":"iana-ssh-encryption-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-encryption-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-encryption-algs","conformance-type":"import"},{"name":"ietf-truststore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-truststore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-truststore","conformance-type":"import","feature":["inline-definitions-supported"]},{"name":"distributed-datastore-provider_2025-01-30","revision":"2025-01-30","schema":"/rests/modules/distributed-datastore-provider?revision=2025-01-30","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:distributed-datastore-provider","conformance-type":"import"},{"name":"opendaylight-group-types_2013-10-18","revision":"2013-10-18","schema":"/rests/modules/opendaylight-group-types?revision=2013-10-18","namespace":"urn:opendaylight:group:types","conformance-type":"import"},{"name":"sal-remote-augment_2023-11-03","revision":"2023-11-03","schema":"/rests/modules/sal-remote-augment?revision=2023-11-03","namespace":"urn:sal:restconf:event:subscription","conformance-type":"import"},{"name":"opendaylight-ipv6-arbitrary-bitmask-fields_2016-02-24","revision":"2016-02-24","schema":"/rests/modules/opendaylight-ipv6-arbitrary-bitmask-fields?revision=2016-02-24","namespace":"urn:opendaylight:opendaylight-ipv6-arbitrary-bitmask-fields","conformance-type":"import"},{"name":"sal-flows-batch_2016-03-14","revision":"2016-03-14","schema":"/rests/modules/sal-flows-batch?revision=2016-03-14","namespace":"urn:opendaylight:flows:service","conformance-type":"import"},{"name":"ietf-tls-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-common","conformance-type":"import","feature":["tls12","hello-params","tls13"]},{"name":"openflow-types_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-types?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:types","conformance-type":"import"},{"name":"ietf-netconf-with-defaults_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf-with-defaults?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults","conformance-type":"import"},{"name":"odl-srm-ops_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-ops?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:ops","conformance-type":"import"},{"name":"odl-general-entity_2015-09-30","revision":"2015-09-30","schema":"/rests/modules/odl-general-entity?revision=2015-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:mdsal:core:general-entity","conformance-type":"import"},{"name":"iana-ssh-key-exchange-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-key-exchange-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-key-exchange-algs","conformance-type":"import"},{"name":"node-ssl-connection-error_2019-07-23","revision":"2019-07-23","schema":"/rests/modules/node-ssl-connection-error?revision=2019-07-23","namespace":"urn:opendaylight:node-ssl-connection-error:service","conformance-type":"import"},{"name":"openflow-protocol_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-protocol?revision=2013-07-31","namespace":"urn:opendaylight:openflow:protocol","conformance-type":"import"},{"name":"ietf-udp-server_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-server?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-server","conformance-type":"import"},{"name":"ietf-keystore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-keystore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-keystore","conformance-type":"import","feature":["asymmetric-keys","inline-definitions-supported"]},{"name":"aaa_2016-12-14","revision":"2016-12-14","schema":"/rests/modules/aaa?revision=2016-12-14","namespace":"urn:opendaylight:params:xml:ns:yang:aaa","conformance-type":"import"},{"name":"aaa-cert-rpc_2015-12-15","revision":"2015-12-15","schema":"/rests/modules/aaa-cert-rpc?revision=2015-12-15","namespace":"urn:opendaylight:yang:aaa:cert:rpc","conformance-type":"import"},{"name":"system-notifications_2013-09-27","revision":"2013-09-27","schema":"/rests/modules/system-notifications?revision=2013-09-27","namespace":"urn:opendaylight:openflow:system","conformance-type":"import"},{"name":"sal-flat-batch_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/sal-flat-batch?revision=2016-03-21","namespace":"urn:opendaylight:flat-batch:service","conformance-type":"import"},{"name":"notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netconf:notification:1.0","conformance-type":"import"},{"name":"sal-remote_2014-01-14","revision":"2014-01-14","schema":"/rests/modules/sal-remote?revision=2014-01-14","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:remote","conformance-type":"import"},{"name":"yang-ext_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/yang-ext?revision=2013-07-09","namespace":"urn:opendaylight:yang:extension:yang-ext","conformance-type":"import"},{"name":"opendaylight-multipart-types_2017-01-12","revision":"2017-01-12","schema":"/rests/modules/opendaylight-multipart-types?revision=2017-01-12","namespace":"urn:opendaylight:multipart:types","conformance-type":"import"},{"name":"opendaylight-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-inventory?revision=2013-08-19","namespace":"urn:opendaylight:inventory","conformance-type":"import"},{"name":"sal-queue_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-queue?revision=2015-03-05","namespace":"urn:opendaylight:queue:service","conformance-type":"import"},{"name":"sal-groups-batch_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/sal-groups-batch?revision=2016-03-15","namespace":"urn:opendaylight:groups:service","conformance-type":"import"},{"name":"arbitrator-reconcile_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/arbitrator-reconcile?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:arbitrator-reconcile:service","conformance-type":"import"},{"name":"ietf-yang-metadata_2016-08-05","revision":"2016-08-05","schema":"/rests/modules/ietf-yang-metadata?revision=2016-08-05","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-metadata","conformance-type":"import"},{"name":"opendaylight-arbitrary-bitmask-fields_2016-01-30","revision":"2016-01-30","schema":"/rests/modules/opendaylight-arbitrary-bitmask-fields?revision=2016-01-30","namespace":"urn:opendaylight:arbitrary:bitmask:fields","conformance-type":"import"},{"name":"ietf-udp-client_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-client?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-client","conformance-type":"import","feature":["local-binding"]},{"name":"opendaylight-meter-types_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/opendaylight-meter-types?revision=2013-09-18","namespace":"urn:opendaylight:meter:types","conformance-type":"import"},{"name":"opendaylight-action-types_2013-11-12","revision":"2013-11-12","schema":"/rests/modules/opendaylight-action-types?revision=2013-11-12","namespace":"urn:opendaylight:action:types","conformance-type":"import"},{"name":"sal-role_2015-07-27","revision":"2015-07-27","schema":"/rests/modules/sal-role?revision=2015-07-27","namespace":"urn:opendaylight:role:service","conformance-type":"import"},{"name":"openflow-provider-config_2016-05-10","revision":"2016-05-10","schema":"/rests/modules/openflow-provider-config?revision=2016-05-10","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:provider:config","conformance-type":"import"},{"name":"odl-serviceutils-upgrade_2018-07-02","revision":"2018-07-02","schema":"/rests/modules/odl-serviceutils-upgrade?revision=2018-07-02","namespace":"urn:opendaylight:serviceutils:upgrade","conformance-type":"import"},{"name":"opendaylight-match-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-match-types?revision=2013-10-26","namespace":"urn:opendaylight:model:match:types","conformance-type":"import"},{"name":"ietf-restconf-server_2024-08-14","revision":"2024-08-14","schema":"/rests/modules/ietf-restconf-server?revision=2024-08-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-server","conformance-type":"import","feature":["http-listen","https-listen"]},{"name":"reconciliation-result-state_2017-07-13","revision":"2017-07-13","schema":"/rests/modules/reconciliation-result-state?revision=2017-07-13","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:rf:state","conformance-type":"import"},{"name":"onf-extensions_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/onf-extensions?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf","conformance-type":"import"},{"name":"sal-table_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/sal-table?revision=2013-10-26","namespace":"urn:opendaylight:table:service","conformance-type":"import"},{"name":"iana-http-versions_2026-02-04","revision":"2026-02-04","schema":"/rests/modules/iana-http-versions?revision=2026-02-04","namespace":"urn:ietf:params:xml:ns:yang:iana-http-versions","conformance-type":"import"},{"name":"opendaylight-direct-statistics_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/opendaylight-direct-statistics?revision=2016-05-11","namespace":"urn:opendaylight:direct:statistics","conformance-type":"import"},{"name":"opendaylight-port-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-port-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:port","conformance-type":"import"},{"name":"sal-async-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/sal-async-config?revision=2017-06-19","namespace":"urn:opendaylight:async-config:service","conformance-type":"import"},{"name":"aaa-password-service-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-password-service-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:password:service:config","conformance-type":"import"},{"name":"ietf-yang-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-yang-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-types","conformance-type":"import"},{"name":"opendaylight-queue-statistics_2013-12-16","revision":"2013-12-16","schema":"/rests/modules/opendaylight-queue-statistics?revision=2013-12-16","namespace":"urn:opendaylight:queue:statistics","conformance-type":"import"},{"name":"sal-bundle_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/sal-bundle?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf:bundle:service","conformance-type":"import"},{"name":"ietf-restconf-subscribed-notifications_2019-11-17","revision":"2019-11-17","schema":"/rests/modules/ietf-restconf-subscribed-notifications?revision=2019-11-17","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-subscribed-notifications","conformance-type":"import"},{"name":"sal-meters-batch_2016-03-16","revision":"2016-03-16","schema":"/rests/modules/sal-meters-batch?revision=2016-03-16","namespace":"urn:opendaylight:meters:service","conformance-type":"import"},{"name":"odl-entity-owners","revision":"","schema":"/rests/modules/odl-entity-owners","namespace":"urn:opendaylight:params:xml:ns:yang:controller:entity-owners","conformance-type":"import"},{"name":"sal-experimenter-mp-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-mp-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-mp-message:service","conformance-type":"import"},{"name":"packet-processing_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/packet-processing?revision=2013-07-09","namespace":"urn:opendaylight:packet:service","conformance-type":"import"},{"name":"openflow-configuration_2014-06-30","revision":"2014-06-30","schema":"/rests/modules/openflow-configuration?revision=2014-06-30","namespace":"urn:opendaylight:openflow:config","conformance-type":"import"},{"name":"odl-srm-rpcs_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-rpcs?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:rpc","conformance-type":"import"},{"name":"ietf-netconf-acm_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-netconf-acm?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-acm","conformance-type":"import"},{"name":"iana-crypt-hash_2014-08-06","revision":"2014-08-06","schema":"/rests/modules/iana-crypt-hash?revision=2014-08-06","namespace":"urn:ietf:params:xml:ns:yang:iana-crypt-hash","conformance-type":"import","feature":["crypt-hash-sha-512","crypt-hash-sha-256","crypt-hash-md5"]},{"name":"openflow-extensible-match_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-extensible-match?revision=2015-02-25","namespace":"urn:opendaylight:openflow:oxm","conformance-type":"import"}],"module-set-id":"2"}}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:58.012928" elapsed="0.004056"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:58.012613" elapsed="0.004421"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:58.012584" elapsed="0.004485"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:58.020361" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:58.017483" elapsed="0.002924"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:58.017148" elapsed="0.003293"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:58.017123" elapsed="0.003342"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:58.021012" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:58.020626" elapsed="0.000413"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:58.021365" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:58.021110" elapsed="0.000313"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:58.021906" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:58.021606" elapsed="0.000326"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:58.021447" elapsed="0.000521"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:58.021092" elapsed="0.000897"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:58.022530" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:58.022145" elapsed="0.000411"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:58.022874" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:58.022627" elapsed="0.000313"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:58.023444" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:58.023123" elapsed="0.000347"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:58.022964" elapsed="0.000540"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:58.022608" elapsed="0.000918"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:51:58.023672" elapsed="0.000338"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:51:58.024469" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:58.024186" elapsed="0.000308"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:51:58.024644" elapsed="0.002197"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:51:58.011983" elapsed="0.014920"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:51:58.027075" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:51:58.026972" elapsed="0.000148"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:58.026953" elapsed="0.000215"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:51:58.035440" level="INFO">${text_normalized} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:51:58.027316" elapsed="0.008154"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:51:58.035522" elapsed="0.000031"/>
</return>
<msg time="2026-04-08T00:51:58.035684" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:51:57.998023" elapsed="0.037687"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:51:58.035773" elapsed="0.000027"/>
</return>
<msg time="2026-04-08T00:51:58.036091" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="PASS" start="2026-04-08T00:51:57.907123" elapsed="0.129004"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Json_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:58.036618" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:58.036279" elapsed="0.000459"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:58.036247" elapsed="0.000533"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:51:58.036841" elapsed="0.000076"/>
</return>
<arg>session=${session}</arg>
<arg>folder=${RESTCONF_MODULES_DIR}</arg>
<arg>verify=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Add arguments sensible for JSON data, return Get_Templated response text.
Optionally, verification against JSON data (may be iterated) is called.
Only subset of JSON data is verified and returned if JMES path is specified in
file ${folder}/jmespath.expr.</doc>
<status status="PASS" start="2026-04-08T00:51:57.901528" elapsed="0.135581"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:57.897133" elapsed="0.140106"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:57.897116" elapsed="0.140151"/>
</if>
<kw name="Resolve_Shard_Type_Class" owner="ClusterManagement">
<if>
<branch type="IF" condition="'${shard_type}' == 'config'">
<return>
<value>DistributedConfigDatastore</value>
<status status="PASS" start="2026-04-08T00:51:58.038205" elapsed="0.000073"/>
</return>
<status status="PASS" start="2026-04-08T00:51:58.037934" elapsed="0.000393"/>
</branch>
<branch type="ELSE IF" condition="'${shard_type}' == 'operational'">
<return>
<value>DistributedOperationalDatastore</value>
<status status="NOT RUN" start="2026-04-08T00:51:58.038473" elapsed="0.000046"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:51:58.038386" elapsed="0.000175"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:58.037901" elapsed="0.000718"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized shard type: ${shard_type}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:58.038854" elapsed="0.000068"/>
</kw>
<msg time="2026-04-08T00:51:58.039061" level="INFO">${type_class} = DistributedConfigDatastore</msg>
<var>${type_class}</var>
<arg>shard_type=${shard_type}</arg>
<doc>Simple lookup for class name corresponding to desired type.</doc>
<status status="PASS" start="2026-04-08T00:51:58.037531" elapsed="0.001556"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:58.039908" level="INFO">${cluster_index} = 1</msg>
<var>${cluster_index}</var>
<arg>${member_index}+${NODE_ROLE_INDEX_START}-1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:58.039274" elapsed="0.000661"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:58.041054" level="INFO">${uri} = jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-topology-config,type=DistributedConfigDatastore</msg>
<var>${uri}</var>
<arg>${JOLOKIA_READ_URI}:Category=Shards,name=member-${cluster_index}-shard-${shard_name}-${shard_type},type=${type_class}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:58.040091" elapsed="0.000990"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:58.048070" level="INFO">jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-topology-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:58.047787" elapsed="0.000366"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:58.048688" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:58.048411" elapsed="0.000359"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:51:58.057736" level="INFO">GET Request : url=http://10.30.170.48:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-topology-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-topology-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:51:58.057798" level="INFO">GET Response : url=http://10.30.170.48:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-topology-config,type=DistributedConfigDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Wed, 08 Apr 2026 00:51:58 GMT', 'Expires': 'Tue, 07 Apr 2026 23:51:58 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-1-shard-topology-config,type=DistributedConfigDatastore","type":"read"},"value":{"ReadWriteTransactionCount":0,"SnapshotIndex":-1,"InMemoryJournalLogSize":0,"ReplicatedToAllIndex":-1,"Leader":"member-1-shard-topology-config","LastIndex":-1,"RaftState":"Leader","LastApplied":-1,"LastCommittedTransactionTime":"1970-01-01 00:00:00.000","PeerAddresses":"member-2-shard-topology-config: pekko:\/\/opendaylight-cluster-data@10.30.170.131:2550\/user\/shardmanager-config\/member-2-shard-topology-config, member-3-shard-topology-config: pekko:\/\/opendaylight-cluster-data@10.30.171.110:2550\/user\/shardmanager-config\/member-3-shard-topology-config","LastLogIndex":-1,"LastLeadershipChangeTime":"2026-04-08 00:46:45.979","FollowerInitialSyncStatus":false,"FollowerInfo":[{"timeSinceLastActivity":"00:00:00.212","active":true,"matchIndex":-1,"voting":true,"id":"member-2-shard-topology-config","nextIndex":0},{"timeSinceLastActivity":"00:00:00.212","active":true,"matchIndex":-1,"voting":true,"id":"member-3-shard-topology-config","nextIndex":0}],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"556.0 μs","CurrentTerm":2,"LastTerm":-1,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-topology-config","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":0,"TxCohortCacheSize":0,"PeerVotingStates":"member-2-shard-topology-config: true, member-3-shard-topology-config: true","LastLogTerm":-1,"StatRetrievalError":null,"CommitIndex":-1,"SnapshotTerm":-1,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-1-shard-topology-config","LeadershipChangeCount":1,"InMemoryJournalDataSize":0},"timestamp":1775609518,"status":200} 
 </msg>
<msg time="2026-04-08T00:51:58.057905" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:51:58.050936" elapsed="0.006994"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:58.048914" elapsed="0.009058"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:58.058199" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:58.058022" elapsed="0.000241"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:58.048868" elapsed="0.009434"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:58.061758" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-1-shard-topology-config,type=DistributedConfigDatastore","type":"read"},"value":{"ReadWriteTransactionCount":0,"SnapshotIndex":-1,"InMemoryJournalLogSize":0,"ReplicatedToAllIndex":-1,"Leader":"member-1-shard-topology-config","LastIndex":-1,"RaftState":"Leader","LastApplied":-1,"LastCommittedTransactionTime":"1970-01-01 00:00:00.000","PeerAddresses":"member-2-shard-topology-config: pekko:\/\/opendaylight-cluster-data@10.30.170.131:2550\/user\/shardmanager-config\/member-2-shard-topology-config, member-3-shard-topology-config: pekko:\/\/opendaylight-cluster-data@10.30.171.110:2550\/user\/shardmanager-config\/member-3-shard-topology-config","LastLogIndex":-1,"LastLeadershipChangeTime":"2026-04-08 00:46:45.979","FollowerInitialSyncStatus":false,"FollowerInfo":[{"timeSinceLastActivity":"00:00:00.212","active":true,"matchIndex":-1,"voting":true,"id":"member-2-shard-topology-config","nextIndex":0},{"timeSinceLastActivity":"00:00:00.212","active":true,"matchIndex":-1,"voting":true,"id":"member-3-shard-topology-config","nextIndex":0}],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"556.0 μs","CurrentTerm":2,"LastTerm":-1,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-topology-config","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":0,"TxCohortCacheSize":0,"PeerVotingStates":"member-2-shard-topology-config: true, member-3-shard-topology-config: true","LastLogTerm":-1,"StatRetrievalError":null,"CommitIndex":-1,"SnapshotTerm":-1,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-1-shard-topology-config","LeadershipChangeCount":1,"InMemoryJournalDataSize":0},"timestamp":1775609518,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:58.059389" elapsed="0.002431"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:58.059148" elapsed="0.002714"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:58.059129" elapsed="0.002772"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:58.065398" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:58.062311" elapsed="0.003151"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:58.061981" elapsed="0.003530"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:58.061957" elapsed="0.003587"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:58.066306" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:58.065769" elapsed="0.000574"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:58.066769" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:58.066442" elapsed="0.000406"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:58.067542" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:58.067100" elapsed="0.000478"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:58.066881" elapsed="0.000746"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:58.066416" elapsed="0.001240"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:58.068393" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:58.067876" elapsed="0.000556"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:58.068865" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:58.068529" elapsed="0.000416"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:58.069651" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:58.069243" elapsed="0.000444"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:58.068977" elapsed="0.000758"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:58.068503" elapsed="0.001262"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:51:58.069969" elapsed="0.000498"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:51:58.071065" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:58.070693" elapsed="0.000408"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:51:58.071334" elapsed="0.002890"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:51:58.058730" elapsed="0.015557"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:51:58.074548" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:51:58.074439" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:58.074394" elapsed="0.000236"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:51:58.077653" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-1-shard-topology-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1775609...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:51:58.074861" elapsed="0.002846"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:51:58.077791" elapsed="0.000066"/>
</return>
<msg time="2026-04-08T00:51:58.078272" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-1-shard-topology-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1775609...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:51:58.042732" elapsed="0.035633"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:51:58.078470" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:51:58.078739" level="INFO">${data_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-1-shard-topology-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1775609...</msg>
<var>${data_text}</var>
<arg>uri=${uri}</arg>
<arg>session=${session}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-08T00:51:58.041328" elapsed="0.037439"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:58.080921" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-1-shard-topology-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1775609518, 'value...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:58.079841" elapsed="0.001173"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-08T00:51:58.081098" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:51:58.081414" level="INFO">${data_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-1-shard-topology-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1775609518, 'value...</msg>
<var>${data_object}</var>
<arg>${data_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-08T00:51:58.079002" elapsed="0.002440"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:51:58.081913" level="INFO">${value} = {'AbortTransactionsCount': 0, 'CommitIndex': -1, 'CommittedTransactionsCount': 0, 'CurrentTerm': 2, 'FailedReadTransactionsCount': 0, 'FailedTransactionsCount': 0, 'FollowerInfo': [{'active': True, 'i...</msg>
<var>${value}</var>
<arg>${data_object}</arg>
<arg>value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:51:58.081600" elapsed="0.000341"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:51:58.082492" level="INFO">${raft_property} = Leader</msg>
<var>${raft_property}</var>
<arg>${value}</arg>
<arg>${property}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:51:58.082096" elapsed="0.000422"/>
</kw>
<return>
<value>${raft_property}</value>
<status status="PASS" start="2026-04-08T00:51:58.082565" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:51:58.082720" level="INFO">${raft_state} = Leader</msg>
<var>${raft_state}</var>
<arg>RaftState</arg>
<arg>${shard_name}</arg>
<arg>${shard_type}</arg>
<arg>${member_index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft property.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T00:51:57.894466" elapsed="0.188280"/>
</kw>
<return>
<value>${raft_state}</value>
<status status="PASS" start="2026-04-08T00:51:58.082806" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:51:58.082958" level="INFO">${raft_state} = Leader</msg>
<var>${raft_state}</var>
<arg>shard_name=${shard_name}</arg>
<arg>shard_type=${ds_type}</arg>
<arg>member_index=${index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft status.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T00:51:57.893696" elapsed="0.189287"/>
</kw>
<if>
<branch type="IF" condition="'Follower' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${follower_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:58.083315" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:58.083065" elapsed="0.000307"/>
</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="PASS" start="2026-04-08T00:51:58.083602" elapsed="0.000191"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:58.083396" elapsed="0.000435"/>
</branch>
<branch type="ELSE IF" condition="${validate}">
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized Raft state: ${raft_state}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:58.083999" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:58.083855" elapsed="0.000196"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:58.083047" elapsed="0.001027"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T00:51:57.893531" elapsed="0.190566"/>
</iter>
<iter>
<kw name="Get_Raft_State_Of_Shard_At_Member" owner="ClusterManagement">
<kw name="Get_Raft_Property_From_Shard_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:58.087330" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:58.086454" elapsed="0.000966"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:51:58.087501" elapsed="0.000031"/>
</return>
<msg time="2026-04-08T00:51:58.087864" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:51:58.085913" elapsed="0.001979"/>
</kw>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Get_As_Json_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:58.136178" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:58.135784" elapsed="0.000424"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:51:58.137082" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:51:58.136766" elapsed="0.000410">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-08T00:51:58.137274" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:51:58.136373" elapsed="0.000927"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:51:58.137905" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:51:58.137466" elapsed="0.000467"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T00:51:58.138262" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-08T00:51:58.138410" level="INFO">${template} = /rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T00:51:58.138095" elapsed="0.000341"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:58.138837" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:58.138591" elapsed="0.000291"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:58.139842" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:58.139586" elapsed="0.000302"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-08T00:51:58.140338" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-08T00:51:58.140052" elapsed="0.000313"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:58.140684" elapsed="0.000022"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:58.140885" elapsed="0.000024"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:58.141058" elapsed="0.000021"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-08T00:51:58.140552" elapsed="0.000563"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-08T00:51:58.140414" elapsed="0.000731"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-08T00:51:58.141204" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:51:58.141364" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-08T00:51:58.139260" elapsed="0.002129"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:58.138951" elapsed="0.002470"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:58.141590" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:58.141446" elapsed="0.000198"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:58.138931" elapsed="0.002733"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:58.142283" level="INFO">${final_text} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:58.141826" elapsed="0.000486"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T00:51:58.142359" 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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="PASS" start="2026-04-08T00:51:58.135164" elapsed="0.007319"/>
</kw>
<msg time="2026-04-08T00:51:58.142536" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:51:58.123443" elapsed="0.019146"/>
</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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:58.154304" 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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:58.165791" 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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:58.177309" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:58.177502" elapsed="0.000021"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:58.177673" elapsed="0.000020"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:58.178027" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:58.177887" elapsed="0.000194"/>
</branch>
<status status="NOT RUN" start="2026-04-08T00:51:58.177872" elapsed="0.000233"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:58.178256" elapsed="0.000022"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:58.178423" elapsed="0.000020"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:58.178586" elapsed="0.000020"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-08T00:51:58.177843" elapsed="0.000796"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-08T00:51:58.177746" elapsed="0.000918"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:58.178808" elapsed="0.000020"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-08T00:51:58.178882" elapsed="0.000015"/>
</return>
<msg time="2026-04-08T00:51:58.178994" level="INFO">${uri} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-08T00:51:58.119483" elapsed="0.059536"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:51:58.180296" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:51:58.180017" elapsed="0.000341">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-08T00:51:58.180448" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:51:58.179676" elapsed="0.000797"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:58.180788" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:58.180543" elapsed="0.000302"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:58.181344" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:58.181037" elapsed="0.000333"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:58.180869" elapsed="0.000535"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:58.180524" elapsed="0.000901"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:51:58.183583" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:51:58.181572" elapsed="0.002037"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-08T00:51:58.183659" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:51:58.183810" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:51:58.179353" elapsed="0.004481"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:51:58.185097" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:51:58.184866" elapsed="0.000312">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-08T00:51:58.185273" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:51:58.184532" elapsed="0.000765"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-08T00:51:58.185502" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-08T00:51:58.185368" elapsed="0.000193"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:58.185350" elapsed="0.000235"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:58.185729" elapsed="0.000021"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:58.185897" elapsed="0.000020"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-08T00:51:58.185961" elapsed="0.000015"/>
</return>
<msg time="2026-04-08T00:51:58.187878" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:51:58.184172" elapsed="0.003734"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:58.189292" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:58.189030" elapsed="0.000307"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:58.189722" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:58.189486" elapsed="0.000279"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:51:58.206859" level="INFO">GET Request : url=http://10.30.170.131:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 path_url=/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node012m0dyuink19r12kj250j53usg1.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:51:58.207845" level="INFO">GET Response : url=http://10.30.170.131:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Transfer-Encoding': 'chunked'} 
 body={"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","hidden-symmetric-keys","encrypted-private-keys","asymmetrically-encrypted-value-format","cms-encrypted-data-format","cleartext-private-keys","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["ssh-client-keepalives","client-ident-hostbased","client-ident-publickey","client-ident-password"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-ex... (set the log level to DEBUG or TRACE to see the full content) 
 </msg>
<msg time="2026-04-08T00:51:58.208317" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:51:58.191757" elapsed="0.016621"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:58.189831" elapsed="0.018642"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:58.208872" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:58.208532" elapsed="0.000488"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:58.189812" elapsed="0.019256"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:58.216559" level="INFO">{"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","hidden-symmetric-keys","encrypted-private-keys","asymmetrically-encrypted-value-format","cms-encrypted-data-format","cleartext-private-keys","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["ssh-client-keepalives","client-ident-hostbased","client-ident-publickey","client-ident-password"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-experimenter-types?revision=2015-10-20","namespace":"urn:opendaylight:openflowplugin:experimenter:types","conformance-type":"import"},{"name":"ietf-ip_2018-02-22","revision":"2018-02-22","schema":"/rests/modules/ietf-ip?revision=2018-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-ip","conformance-type":"import","feature":["ipv6-privacy-autoconf","ipv4-non-contiguous-netmasks"]},{"name":"ietf-tcp-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-client","conformance-type":"import","feature":["local-binding-supported","tcp-client-keepalives"]},{"name":"node-config_2014-10-15","revision":"2014-10-15","schema":"/rests/modules/node-config?revision=2014-10-15","namespace":"urn:opendaylight:module:config","conformance-type":"import"},{"name":"ietf-restconf_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf","conformance-type":"import"},{"name":"ietf-datastores_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-datastores?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-datastores","conformance-type":"import"},{"name":"ietf-yang-patch_2017-02-22","revision":"2017-02-22","schema":"/rests/modules/ietf-yang-patch?revision=2017-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-patch","conformance-type":"import"},{"name":"sal-group_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-group?revision=2013-09-18","namespace":"urn:opendaylight:group:service","conformance-type":"import"},{"name":"odl-codegen-extensions_2024-06-27","revision":"2024-06-27","schema":"/rests/modules/odl-codegen-extensions?revision=2024-06-27","namespace":"urn:opendaylight:yang:extension:codegen","conformance-type":"import"},{"name":"sal-meter_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-meter?revision=2013-09-18","namespace":"urn:opendaylight:meter:service","conformance-type":"import"},{"name":"ietf-interfaces_2018-02-20","revision":"2018-02-20","schema":"/rests/modules/ietf-interfaces?revision=2018-02-20","namespace":"urn:ietf:params:xml:ns:yang:ietf-interfaces","conformance-type":"import","feature":["pre-provisioning","if-mib","arbitrary-names"]},{"name":"opendaylight-l2-types_2013-08-27","revision":"2013-08-27","schema":"/rests/modules/opendaylight-l2-types?revision=2013-08-27","namespace":"urn:opendaylight:l2:types","conformance-type":"import"},{"name":"opendaylight-flow-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-flow-types?revision=2013-10-26","namespace":"urn:opendaylight:flow:types","conformance-type":"import"},{"name":"lldp-speaker-config_2016-05-12","revision":"2016-05-12","schema":"/rests/modules/lldp-speaker-config?revision=2016-05-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker:config","conformance-type":"import"},{"name":"aaa-cert_2015-11-26","revision":"2015-11-26","schema":"/rests/modules/aaa-cert?revision=2015-11-26","namespace":"urn:opendaylight:yang:aaa:cert","conformance-type":"import"},{"name":"openflow-action_2015-02-03","revision":"2015-02-03","schema":"/rests/modules/openflow-action?revision=2015-02-03","namespace":"urn:opendaylight:openflow:common:action","conformance-type":"import"},{"name":"openflow-approved-extensions_2016-08-02","revision":"2016-08-02","schema":"/rests/modules/openflow-approved-extensions?revision=2016-08-02","namespace":"urn:opendaylight:openflow:approved:extensions","conformance-type":"import"},{"name":"nc-notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/nc-notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netmod:notification","conformance-type":"import"},{"name":"ietf-netconf-nmda_2019-01-07","revision":"2019-01-07","schema":"/rests/modules/ietf-netconf-nmda?revision=2019-01-07","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-nmda","conformance-type":"import","feature":["with-defaults","origin"]},{"name":"ietf-tcp-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-common","conformance-type":"import","feature":["keepalives-supported"]},{"name":"network-topology_2013-10-21","revision":"2013-10-21","schema":"/rests/modules/network-topology?revision=2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:network-topology","conformance-type":"import"},{"name":"aaa-encrypt-service-config_2024-02-02","revision":"2024-02-02","schema":"/rests/modules/aaa-encrypt-service-config?revision=2024-02-02","namespace":"config:aaa:authn:encrypt:service:config","conformance-type":"import"},{"name":"openflow-instruction_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-instruction?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:instruction","conformance-type":"import"},{"name":"ietf-tls-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-client","conformance-type":"import","feature":["client-ident-x509-cert","server-auth-x509-cert"]},{"name":"opendaylight-group-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-group-statistics?revision=2013-11-11","namespace":"urn:opendaylight:group:statistics","conformance-type":"import"},{"name":"cluster-admin_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/cluster-admin?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:cluster:admin","conformance-type":"import"},{"name":"opendaylight-flow-statistics_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-flow-statistics?revision=2013-08-19","namespace":"urn:opendaylight:flow:statistics","conformance-type":"import"},{"name":"opendaylight-table-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-table-types?revision=2013-10-26","namespace":"urn:opendaylight:table:types","conformance-type":"import"},{"name":"forwarding-rules-manager-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/forwarding-rules-manager-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:forwardingrules-manager:config","conformance-type":"import"},{"name":"odl-srm-types_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-types?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:types","conformance-type":"import"},{"name":"ietf-x509-cert-to-name_2014-12-10","revision":"2014-12-10","schema":"/rests/modules/ietf-x509-cert-to-name?revision=2014-12-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-x509-cert-to-name","conformance-type":"import"},{"name":"flow-node-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-node-inventory?revision=2013-08-19","namespace":"urn:opendaylight:flow:inventory","conformance-type":"import"},{"name":"flow-errors_2013-11-16","revision":"2013-11-16","schema":"/rests/modules/flow-errors?revision=2013-11-16","namespace":"urn:opendaylight:flow:errors","conformance-type":"import"},{"name":"ietf-netconf_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:netconf:base:1.0","conformance-type":"import","feature":["xpath","url","rollback-on-error","validate","startup","candidate","confirmed-commit","writable-running"]},{"name":"iana-ssh-public-key-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-public-key-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-public-key-algs","conformance-type":"import"},{"name":"aaa-cert-mdsal_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/aaa-cert-mdsal?revision=2016-03-21","namespace":"urn:opendaylight:yang:aaa:cert:mdsal","conformance-type":"import"},{"name":"odl-device-notification_2024-02-18","revision":"2024-02-18","schema":"/rests/modules/odl-device-notification?revision=2024-02-18","namespace":"urn:opendaylight:device:notification","conformance-type":"import"},{"name":"ietf-origin_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-origin?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-origin","conformance-type":"import"},{"name":"openflow-augments_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-augments?revision=2015-02-25","namespace":"urn:opendaylight:openflow:augments","conformance-type":"import"},{"name":"iana-ssh-encryption-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-encryption-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-encryption-algs","conformance-type":"import"},{"name":"ietf-truststore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-truststore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-truststore","conformance-type":"import","feature":["inline-definitions-supported"]},{"name":"distributed-datastore-provider_2025-01-30","revision":"2025-01-30","schema":"/rests/modules/distributed-datastore-provider?revision=2025-01-30","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:distributed-datastore-provider","conformance-type":"import"},{"name":"opendaylight-group-types_2013-10-18","revision":"2013-10-18","schema":"/rests/modules/opendaylight-group-types?revision=2013-10-18","namespace":"urn:opendaylight:group:types","conformance-type":"import"},{"name":"sal-remote-augment_2023-11-03","revision":"2023-11-03","schema":"/rests/modules/sal-remote-augment?revision=2023-11-03","namespace":"urn:sal:restconf:event:subscription","conformance-type":"import"},{"name":"opendaylight-ipv6-arbitrary-bitmask-fields_2016-02-24","revision":"2016-02-24","schema":"/rests/modules/opendaylight-ipv6-arbitrary-bitmask-fields?revision=2016-02-24","namespace":"urn:opendaylight:opendaylight-ipv6-arbitrary-bitmask-fields","conformance-type":"import"},{"name":"sal-flows-batch_2016-03-14","revision":"2016-03-14","schema":"/rests/modules/sal-flows-batch?revision=2016-03-14","namespace":"urn:opendaylight:flows:service","conformance-type":"import"},{"name":"ietf-tls-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-common","conformance-type":"import","feature":["tls12","hello-params","tls13"]},{"name":"openflow-types_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-types?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:types","conformance-type":"import"},{"name":"ietf-netconf-with-defaults_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf-with-defaults?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults","conformance-type":"import"},{"name":"odl-srm-ops_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-ops?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:ops","conformance-type":"import"},{"name":"odl-general-entity_2015-09-30","revision":"2015-09-30","schema":"/rests/modules/odl-general-entity?revision=2015-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:mdsal:core:general-entity","conformance-type":"import"},{"name":"iana-ssh-key-exchange-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-key-exchange-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-key-exchange-algs","conformance-type":"import"},{"name":"node-ssl-connection-error_2019-07-23","revision":"2019-07-23","schema":"/rests/modules/node-ssl-connection-error?revision=2019-07-23","namespace":"urn:opendaylight:node-ssl-connection-error:service","conformance-type":"import"},{"name":"openflow-protocol_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-protocol?revision=2013-07-31","namespace":"urn:opendaylight:openflow:protocol","conformance-type":"import"},{"name":"ietf-udp-server_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-server?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-server","conformance-type":"import"},{"name":"ietf-keystore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-keystore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-keystore","conformance-type":"import","feature":["asymmetric-keys","inline-definitions-supported"]},{"name":"aaa_2016-12-14","revision":"2016-12-14","schema":"/rests/modules/aaa?revision=2016-12-14","namespace":"urn:opendaylight:params:xml:ns:yang:aaa","conformance-type":"import"},{"name":"aaa-cert-rpc_2015-12-15","revision":"2015-12-15","schema":"/rests/modules/aaa-cert-rpc?revision=2015-12-15","namespace":"urn:opendaylight:yang:aaa:cert:rpc","conformance-type":"import"},{"name":"system-notifications_2013-09-27","revision":"2013-09-27","schema":"/rests/modules/system-notifications?revision=2013-09-27","namespace":"urn:opendaylight:openflow:system","conformance-type":"import"},{"name":"sal-flat-batch_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/sal-flat-batch?revision=2016-03-21","namespace":"urn:opendaylight:flat-batch:service","conformance-type":"import"},{"name":"notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netconf:notification:1.0","conformance-type":"import"},{"name":"sal-remote_2014-01-14","revision":"2014-01-14","schema":"/rests/modules/sal-remote?revision=2014-01-14","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:remote","conformance-type":"import"},{"name":"yang-ext_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/yang-ext?revision=2013-07-09","namespace":"urn:opendaylight:yang:extension:yang-ext","conformance-type":"import"},{"name":"opendaylight-multipart-types_2017-01-12","revision":"2017-01-12","schema":"/rests/modules/opendaylight-multipart-types?revision=2017-01-12","namespace":"urn:opendaylight:multipart:types","conformance-type":"import"},{"name":"opendaylight-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-inventory?revision=2013-08-19","namespace":"urn:opendaylight:inventory","conformance-type":"import"},{"name":"sal-queue_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-queue?revision=2015-03-05","namespace":"urn:opendaylight:queue:service","conformance-type":"import"},{"name":"sal-groups-batch_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/sal-groups-batch?revision=2016-03-15","namespace":"urn:opendaylight:groups:service","conformance-type":"import"},{"name":"arbitrator-reconcile_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/arbitrator-reconcile?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:arbitrator-reconcile:service","conformance-type":"import"},{"name":"ietf-yang-metadata_2016-08-05","revision":"2016-08-05","schema":"/rests/modules/ietf-yang-metadata?revision=2016-08-05","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-metadata","conformance-type":"import"},{"name":"opendaylight-arbitrary-bitmask-fields_2016-01-30","revision":"2016-01-30","schema":"/rests/modules/opendaylight-arbitrary-bitmask-fields?revision=2016-01-30","namespace":"urn:opendaylight:arbitrary:bitmask:fields","conformance-type":"import"},{"name":"ietf-udp-client_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-client?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-client","conformance-type":"import","feature":["local-binding"]},{"name":"opendaylight-meter-types_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/opendaylight-meter-types?revision=2013-09-18","namespace":"urn:opendaylight:meter:types","conformance-type":"import"},{"name":"opendaylight-action-types_2013-11-12","revision":"2013-11-12","schema":"/rests/modules/opendaylight-action-types?revision=2013-11-12","namespace":"urn:opendaylight:action:types","conformance-type":"import"},{"name":"sal-role_2015-07-27","revision":"2015-07-27","schema":"/rests/modules/sal-role?revision=2015-07-27","namespace":"urn:opendaylight:role:service","conformance-type":"import"},{"name":"openflow-provider-config_2016-05-10","revision":"2016-05-10","schema":"/rests/modules/openflow-provider-config?revision=2016-05-10","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:provider:config","conformance-type":"import"},{"name":"odl-serviceutils-upgrade_2018-07-02","revision":"2018-07-02","schema":"/rests/modules/odl-serviceutils-upgrade?revision=2018-07-02","namespace":"urn:opendaylight:serviceutils:upgrade","conformance-type":"import"},{"name":"opendaylight-match-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-match-types?revision=2013-10-26","namespace":"urn:opendaylight:model:match:types","conformance-type":"import"},{"name":"ietf-restconf-server_2024-08-14","revision":"2024-08-14","schema":"/rests/modules/ietf-restconf-server?revision=2024-08-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-server","conformance-type":"import","feature":["http-listen","https-listen"]},{"name":"reconciliation-result-state_2017-07-13","revision":"2017-07-13","schema":"/rests/modules/reconciliation-result-state?revision=2017-07-13","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:rf:state","conformance-type":"import"},{"name":"onf-extensions_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/onf-extensions?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf","conformance-type":"import"},{"name":"sal-table_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/sal-table?revision=2013-10-26","namespace":"urn:opendaylight:table:service","conformance-type":"import"},{"name":"iana-http-versions_2026-02-04","revision":"2026-02-04","schema":"/rests/modules/iana-http-versions?revision=2026-02-04","namespace":"urn:ietf:params:xml:ns:yang:iana-http-versions","conformance-type":"import"},{"name":"opendaylight-direct-statistics_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/opendaylight-direct-statistics?revision=2016-05-11","namespace":"urn:opendaylight:direct:statistics","conformance-type":"import"},{"name":"opendaylight-port-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-port-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:port","conformance-type":"import"},{"name":"sal-async-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/sal-async-config?revision=2017-06-19","namespace":"urn:opendaylight:async-config:service","conformance-type":"import"},{"name":"aaa-password-service-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-password-service-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:password:service:config","conformance-type":"import"},{"name":"ietf-yang-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-yang-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-types","conformance-type":"import"},{"name":"opendaylight-queue-statistics_2013-12-16","revision":"2013-12-16","schema":"/rests/modules/opendaylight-queue-statistics?revision=2013-12-16","namespace":"urn:opendaylight:queue:statistics","conformance-type":"import"},{"name":"sal-bundle_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/sal-bundle?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf:bundle:service","conformance-type":"import"},{"name":"ietf-restconf-subscribed-notifications_2019-11-17","revision":"2019-11-17","schema":"/rests/modules/ietf-restconf-subscribed-notifications?revision=2019-11-17","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-subscribed-notifications","conformance-type":"import"},{"name":"sal-meters-batch_2016-03-16","revision":"2016-03-16","schema":"/rests/modules/sal-meters-batch?revision=2016-03-16","namespace":"urn:opendaylight:meters:service","conformance-type":"import"},{"name":"odl-entity-owners","revision":"","schema":"/rests/modules/odl-entity-owners","namespace":"urn:opendaylight:params:xml:ns:yang:controller:entity-owners","conformance-type":"import"},{"name":"sal-experimenter-mp-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-mp-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-mp-message:service","conformance-type":"import"},{"name":"packet-processing_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/packet-processing?revision=2013-07-09","namespace":"urn:opendaylight:packet:service","conformance-type":"import"},{"name":"openflow-configuration_2014-06-30","revision":"2014-06-30","schema":"/rests/modules/openflow-configuration?revision=2014-06-30","namespace":"urn:opendaylight:openflow:config","conformance-type":"import"},{"name":"odl-srm-rpcs_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-rpcs?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:rpc","conformance-type":"import"},{"name":"ietf-netconf-acm_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-netconf-acm?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-acm","conformance-type":"import"},{"name":"iana-crypt-hash_2014-08-06","revision":"2014-08-06","schema":"/rests/modules/iana-crypt-hash?revision=2014-08-06","namespace":"urn:ietf:params:xml:ns:yang:iana-crypt-hash","conformance-type":"import","feature":["crypt-hash-sha-512","crypt-hash-sha-256","crypt-hash-md5"]},{"name":"openflow-extensible-match_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-extensible-match?revision=2015-02-25","namespace":"urn:opendaylight:openflow:oxm","conformance-type":"import"}],"module-set-id":"2"}}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:58.211533" elapsed="0.005352"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:58.210948" elapsed="0.005973"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:58.210904" elapsed="0.006042"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:58.219406" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:58.217240" elapsed="0.002212"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:58.217003" elapsed="0.002483"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:58.216986" elapsed="0.002524"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:58.220049" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:58.219671" elapsed="0.000405"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:58.220400" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:58.220146" elapsed="0.000312"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:58.220945" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:58.220641" elapsed="0.000330"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:58.220482" elapsed="0.000525"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:58.220128" elapsed="0.000900"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:58.221563" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:58.221202" elapsed="0.000388"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:58.221893" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:58.221660" elapsed="0.000290"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:58.222445" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:58.222134" elapsed="0.000337"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:58.221974" elapsed="0.000542"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:58.221642" elapsed="0.000897"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:51:58.222689" elapsed="0.000346"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:51:58.223505" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:58.223225" elapsed="0.000306"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:51:58.223685" elapsed="0.002149"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:51:58.209970" elapsed="0.015926"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:51:58.226070" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:51:58.225966" elapsed="0.000148"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:58.225947" elapsed="0.000189"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:51:58.234271" level="INFO">${text_normalized} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:51:58.226295" elapsed="0.008007"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:51:58.234353" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:51:58.234510" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:51:58.188234" elapsed="0.046303"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:51:58.234599" elapsed="0.000026"/>
</return>
<msg time="2026-04-08T00:51:58.234914" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="PASS" start="2026-04-08T00:51:58.098092" elapsed="0.136859"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Json_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:58.235434" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:58.235077" elapsed="0.000473"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:58.235045" elapsed="0.000546"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:51:58.235651" elapsed="0.000070"/>
</return>
<arg>session=${session}</arg>
<arg>folder=${RESTCONF_MODULES_DIR}</arg>
<arg>verify=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Add arguments sensible for JSON data, return Get_Templated response text.
Optionally, verification against JSON data (may be iterated) is called.
Only subset of JSON data is verified and returned if JMES path is specified in
file ${folder}/jmespath.expr.</doc>
<status status="PASS" start="2026-04-08T00:51:58.092381" elapsed="0.143531"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:58.087962" elapsed="0.148059"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:58.087943" elapsed="0.148104"/>
</if>
<kw name="Resolve_Shard_Type_Class" owner="ClusterManagement">
<if>
<branch type="IF" condition="'${shard_type}' == 'config'">
<return>
<value>DistributedConfigDatastore</value>
<status status="PASS" start="2026-04-08T00:51:58.236944" elapsed="0.000070"/>
</return>
<status status="PASS" start="2026-04-08T00:51:58.236721" elapsed="0.000342"/>
</branch>
<branch type="ELSE IF" condition="'${shard_type}' == 'operational'">
<return>
<value>DistributedOperationalDatastore</value>
<status status="NOT RUN" start="2026-04-08T00:51:58.237257" elapsed="0.000048"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:51:58.237121" elapsed="0.000227"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:58.236689" elapsed="0.000718"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized shard type: ${shard_type}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:58.237636" elapsed="0.000066"/>
</kw>
<msg time="2026-04-08T00:51:58.237840" level="INFO">${type_class} = DistributedConfigDatastore</msg>
<var>${type_class}</var>
<arg>shard_type=${shard_type}</arg>
<doc>Simple lookup for class name corresponding to desired type.</doc>
<status status="PASS" start="2026-04-08T00:51:58.236325" elapsed="0.001541"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:58.238758" level="INFO">${cluster_index} = 2</msg>
<var>${cluster_index}</var>
<arg>${member_index}+${NODE_ROLE_INDEX_START}-1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:58.238060" elapsed="0.000726"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:58.239918" level="INFO">${uri} = jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-topology-config,type=DistributedConfigDatastore</msg>
<var>${uri}</var>
<arg>${JOLOKIA_READ_URI}:Category=Shards,name=member-${cluster_index}-shard-${shard_name}-${shard_type},type=${type_class}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:58.238944" elapsed="0.001002"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:58.247060" level="INFO">jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-topology-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:58.246772" elapsed="0.000379"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:58.247725" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:58.247410" elapsed="0.000398"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:51:58.254950" level="INFO">GET Request : url=http://10.30.170.131:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-topology-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-topology-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:51:58.255009" level="INFO">GET Response : url=http://10.30.170.131:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-topology-config,type=DistributedConfigDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Wed, 08 Apr 2026 00:51:58 GMT', 'Expires': 'Tue, 07 Apr 2026 23:51:58 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-2-shard-topology-config,type=DistributedConfigDatastore","type":"read"},"value":{"ReadWriteTransactionCount":0,"SnapshotIndex":-1,"InMemoryJournalLogSize":0,"ReplicatedToAllIndex":-1,"Leader":"member-1-shard-topology-config","LastIndex":-1,"RaftState":"Follower","LastCommittedTransactionTime":"1970-01-01 00:00:00.000","LastApplied":-1,"PeerAddresses":"member-1-shard-topology-config: pekko:\/\/opendaylight-cluster-data@10.30.170.48:2550\/user\/shardmanager-config\/member-1-shard-topology-config, member-3-shard-topology-config: pekko:\/\/opendaylight-cluster-data@10.30.171.110:2550\/user\/shardmanager-config\/member-3-shard-topology-config","LastLogIndex":-1,"LastLeadershipChangeTime":"2026-04-08 00:46:45.985","FollowerInitialSyncStatus":true,"FollowerInfo":[],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"244.4 μs","CurrentTerm":2,"LastTerm":-1,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-topology-config","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":0,"TxCohortCacheSize":0,"PeerVotingStates":"member-1-shard-topology-config: true, member-3-shard-topology-config: true","LastLogTerm":-1,"StatRetrievalError":null,"CommitIndex":-1,"SnapshotTerm":-1,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-2-shard-topology-config","LeadershipChangeCount":1,"InMemoryJournalDataSize":0},"timestamp":1775609518,"status":200} 
 </msg>
<msg time="2026-04-08T00:51:58.255111" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:51:58.249988" elapsed="0.005149"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:58.247955" elapsed="0.007240"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:58.255396" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:58.255242" elapsed="0.000218"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:58.247909" elapsed="0.007588"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:58.260118" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-2-shard-topology-config,type=DistributedConfigDatastore","type":"read"},"value":{"ReadWriteTransactionCount":0,"SnapshotIndex":-1,"InMemoryJournalLogSize":0,"ReplicatedToAllIndex":-1,"Leader":"member-1-shard-topology-config","LastIndex":-1,"RaftState":"Follower","LastCommittedTransactionTime":"1970-01-01 00:00:00.000","LastApplied":-1,"PeerAddresses":"member-1-shard-topology-config: pekko:\/\/opendaylight-cluster-data@10.30.170.48:2550\/user\/shardmanager-config\/member-1-shard-topology-config, member-3-shard-topology-config: pekko:\/\/opendaylight-cluster-data@10.30.171.110:2550\/user\/shardmanager-config\/member-3-shard-topology-config","LastLogIndex":-1,"LastLeadershipChangeTime":"2026-04-08 00:46:45.985","FollowerInitialSyncStatus":true,"FollowerInfo":[],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"244.4 μs","CurrentTerm":2,"LastTerm":-1,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-topology-config","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":0,"TxCohortCacheSize":0,"PeerVotingStates":"member-1-shard-topology-config: true, member-3-shard-topology-config: true","LastLogTerm":-1,"StatRetrievalError":null,"CommitIndex":-1,"SnapshotTerm":-1,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-2-shard-topology-config","LeadershipChangeCount":1,"InMemoryJournalDataSize":0},"timestamp":1775609518,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:58.256548" elapsed="0.003681"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:58.256332" elapsed="0.003933"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:58.256313" elapsed="0.003977"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:58.263127" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:58.260567" elapsed="0.002644"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:58.260346" elapsed="0.002914"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:58.260329" elapsed="0.002964"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:58.264038" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:58.263516" elapsed="0.000560"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:58.264528" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:58.264195" elapsed="0.000416"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:58.265340" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:58.264868" elapsed="0.000509"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:58.264644" elapsed="0.000783"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:58.264149" elapsed="0.001308"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:58.266208" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:58.265677" elapsed="0.000570"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:58.266676" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:58.266345" elapsed="0.000411"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:58.267449" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:58.267010" elapsed="0.000476"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:58.266788" elapsed="0.000749"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:58.266319" elapsed="0.001248"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:51:58.267773" elapsed="0.000501"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:51:58.268899" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:58.268503" elapsed="0.000434"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:51:58.269186" elapsed="0.003021"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:51:58.255896" elapsed="0.016399"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:51:58.272692" elapsed="0.000023"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:51:58.272511" elapsed="0.000248"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:58.272448" elapsed="0.000365"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:51:58.276060" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-2-shard-topology-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1775609...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:51:58.273176" elapsed="0.002937"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:51:58.276211" elapsed="0.000064"/>
</return>
<msg time="2026-04-08T00:51:58.276710" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-2-shard-topology-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1775609...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:51:58.241541" elapsed="0.035260"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:51:58.276903" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:51:58.277196" level="INFO">${data_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-2-shard-topology-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1775609...</msg>
<var>${data_text}</var>
<arg>uri=${uri}</arg>
<arg>session=${session}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-08T00:51:58.240174" elapsed="0.037051"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:58.279315" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-2-shard-topology-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1775609518, 'value...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:58.278286" elapsed="0.001122"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-08T00:51:58.279526" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:51:58.279818" level="INFO">${data_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-2-shard-topology-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1775609518, 'value...</msg>
<var>${data_object}</var>
<arg>${data_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-08T00:51:58.277455" elapsed="0.002392"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:51:58.280334" level="INFO">${value} = {'AbortTransactionsCount': 0, 'CommitIndex': -1, 'CommittedTransactionsCount': 0, 'CurrentTerm': 2, 'FailedReadTransactionsCount': 0, 'FailedTransactionsCount': 0, 'FollowerInfo': [], 'FollowerInitial...</msg>
<var>${value}</var>
<arg>${data_object}</arg>
<arg>value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:51:58.280005" elapsed="0.000378"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:51:58.280930" level="INFO">${raft_property} = Follower</msg>
<var>${raft_property}</var>
<arg>${value}</arg>
<arg>${property}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:51:58.280544" elapsed="0.000412"/>
</kw>
<return>
<value>${raft_property}</value>
<status status="PASS" start="2026-04-08T00:51:58.281003" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:51:58.281179" level="INFO">${raft_state} = Follower</msg>
<var>${raft_state}</var>
<arg>RaftState</arg>
<arg>${shard_name}</arg>
<arg>${shard_type}</arg>
<arg>${member_index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft property.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T00:51:58.085236" elapsed="0.195970"/>
</kw>
<return>
<value>${raft_state}</value>
<status status="PASS" start="2026-04-08T00:51:58.281272" elapsed="0.000026"/>
</return>
<msg time="2026-04-08T00:51:58.281417" level="INFO">${raft_state} = Follower</msg>
<var>${raft_state}</var>
<arg>shard_name=${shard_name}</arg>
<arg>shard_type=${ds_type}</arg>
<arg>member_index=${index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft status.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T00:51:58.084468" elapsed="0.196973"/>
</kw>
<if>
<branch type="IF" condition="'Follower' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${follower_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-08T00:51:58.281731" elapsed="0.000190"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:58.281519" elapsed="0.000441"/>
</branch>
<branch type="ELSE IF" condition="'Leader' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${leader_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:58.282127" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:58.281984" 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 with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:58.282366" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:58.282226" elapsed="0.000192"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:58.281502" elapsed="0.000938"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T00:51:58.084301" elapsed="0.198162"/>
</iter>
<iter>
<kw name="Get_Raft_State_Of_Shard_At_Member" owner="ClusterManagement">
<kw name="Get_Raft_Property_From_Shard_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:58.285656" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:58.284787" elapsed="0.000960"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:51:58.285858" elapsed="0.000035"/>
</return>
<msg time="2026-04-08T00:51:58.286138" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:51:58.284259" elapsed="0.002030"/>
</kw>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Get_As_Json_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:58.334781" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:58.334403" elapsed="0.000406"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:51:58.335590" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:51:58.335336" elapsed="0.000329">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-08T00:51:58.335759" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:51:58.334972" elapsed="0.000811"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:51:58.336347" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:51:58.335948" elapsed="0.000426"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T00:51:58.336674" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-08T00:51:58.336826" level="INFO">${template} = /rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T00:51:58.336534" elapsed="0.000356"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:58.337313" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:58.337047" elapsed="0.000310"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:58.338477" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:58.338034" elapsed="0.000487"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-08T00:51:58.338952" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-08T00:51:58.338680" elapsed="0.000297"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:58.339314" elapsed="0.000022"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:58.339515" elapsed="0.000024"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:58.339687" elapsed="0.000021"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-08T00:51:58.339180" elapsed="0.000564"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-08T00:51:58.339027" elapsed="0.000747"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-08T00:51:58.339817" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:51:58.339972" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-08T00:51:58.337713" elapsed="0.002284"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:58.337426" elapsed="0.002602"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:58.340212" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:58.340052" elapsed="0.000217"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:58.337406" elapsed="0.002884"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:58.340861" level="INFO">${final_text} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:58.340429" elapsed="0.000463"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T00:51:58.340941" elapsed="0.000028"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="PASS" start="2026-04-08T00:51:58.333766" elapsed="0.007297"/>
</kw>
<msg time="2026-04-08T00:51:58.341116" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:51:58.321892" elapsed="0.019291"/>
</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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:58.353091" 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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:58.364760" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:58.376382" elapsed="0.000027"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:58.376576" elapsed="0.000021"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:58.376749" elapsed="0.000021"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:58.377207" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:58.377039" elapsed="0.000225"/>
</branch>
<status status="NOT RUN" start="2026-04-08T00:51:58.377024" elapsed="0.000264"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:58.377426" elapsed="0.000021"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:58.377594" elapsed="0.000020"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:58.377758" elapsed="0.000020"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-08T00:51:58.376994" elapsed="0.000817"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-08T00:51:58.376890" elapsed="0.000947"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:58.377980" elapsed="0.000020"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-08T00:51:58.378055" elapsed="0.000015"/>
</return>
<msg time="2026-04-08T00:51:58.378188" level="INFO">${uri} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-08T00:51:58.317781" elapsed="0.060434"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:51:58.379482" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:51:58.379233" elapsed="0.000317">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-08T00:51:58.379641" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:51:58.378863" elapsed="0.000803"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:58.379980" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:58.379738" elapsed="0.000299"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:58.380542" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:58.380252" elapsed="0.000316"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:58.380060" elapsed="0.000543"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:58.379719" elapsed="0.000905"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:51:58.382896" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:51:58.380784" elapsed="0.002138"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-08T00:51:58.382973" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:51:58.383124" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:51:58.378535" elapsed="0.004614"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:51:58.384383" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:51:58.384132" elapsed="0.000314">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-08T00:51:58.384571" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:51:58.383796" elapsed="0.000800"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-08T00:51:58.384810" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-08T00:51:58.384671" elapsed="0.000198"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:58.384653" elapsed="0.000240"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:58.385037" elapsed="0.000021"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:58.385232" elapsed="0.000021"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-08T00:51:58.385299" elapsed="0.000014"/>
</return>
<msg time="2026-04-08T00:51:58.387282" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:51:58.383476" elapsed="0.003834"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:58.388757" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:58.388502" elapsed="0.000302"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:58.389237" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:58.388966" elapsed="0.000316"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:51:58.404733" level="INFO">GET Request : url=http://10.30.171.110:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 path_url=/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0u16rl3earouwvehy59feej101.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:51:58.405332" level="INFO">GET Response : url=http://10.30.171.110:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Transfer-Encoding': 'chunked'} 
 body={"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","hidden-symmetric-keys","encrypted-private-keys","asymmetrically-encrypted-value-format","cms-encrypted-data-format","cleartext-private-keys","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["ssh-client-keepalives","client-ident-hostbased","client-ident-publickey","client-ident-password"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-ex... (set the log level to DEBUG or TRACE to see the full content) 
 </msg>
<msg time="2026-04-08T00:51:58.405606" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:51:58.391291" elapsed="0.014353"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:58.389351" elapsed="0.016352"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:58.405958" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:58.405741" elapsed="0.000308"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:58.389332" elapsed="0.016747"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:58.411138" level="INFO">{"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","hidden-symmetric-keys","encrypted-private-keys","asymmetrically-encrypted-value-format","cms-encrypted-data-format","cleartext-private-keys","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["ssh-client-keepalives","client-ident-hostbased","client-ident-publickey","client-ident-password"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-experimenter-types?revision=2015-10-20","namespace":"urn:opendaylight:openflowplugin:experimenter:types","conformance-type":"import"},{"name":"ietf-ip_2018-02-22","revision":"2018-02-22","schema":"/rests/modules/ietf-ip?revision=2018-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-ip","conformance-type":"import","feature":["ipv6-privacy-autoconf","ipv4-non-contiguous-netmasks"]},{"name":"ietf-tcp-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-client","conformance-type":"import","feature":["local-binding-supported","tcp-client-keepalives"]},{"name":"node-config_2014-10-15","revision":"2014-10-15","schema":"/rests/modules/node-config?revision=2014-10-15","namespace":"urn:opendaylight:module:config","conformance-type":"import"},{"name":"ietf-restconf_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf","conformance-type":"import"},{"name":"ietf-datastores_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-datastores?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-datastores","conformance-type":"import"},{"name":"ietf-yang-patch_2017-02-22","revision":"2017-02-22","schema":"/rests/modules/ietf-yang-patch?revision=2017-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-patch","conformance-type":"import"},{"name":"sal-group_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-group?revision=2013-09-18","namespace":"urn:opendaylight:group:service","conformance-type":"import"},{"name":"odl-codegen-extensions_2024-06-27","revision":"2024-06-27","schema":"/rests/modules/odl-codegen-extensions?revision=2024-06-27","namespace":"urn:opendaylight:yang:extension:codegen","conformance-type":"import"},{"name":"sal-meter_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-meter?revision=2013-09-18","namespace":"urn:opendaylight:meter:service","conformance-type":"import"},{"name":"ietf-interfaces_2018-02-20","revision":"2018-02-20","schema":"/rests/modules/ietf-interfaces?revision=2018-02-20","namespace":"urn:ietf:params:xml:ns:yang:ietf-interfaces","conformance-type":"import","feature":["pre-provisioning","if-mib","arbitrary-names"]},{"name":"opendaylight-l2-types_2013-08-27","revision":"2013-08-27","schema":"/rests/modules/opendaylight-l2-types?revision=2013-08-27","namespace":"urn:opendaylight:l2:types","conformance-type":"import"},{"name":"opendaylight-flow-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-flow-types?revision=2013-10-26","namespace":"urn:opendaylight:flow:types","conformance-type":"import"},{"name":"lldp-speaker-config_2016-05-12","revision":"2016-05-12","schema":"/rests/modules/lldp-speaker-config?revision=2016-05-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker:config","conformance-type":"import"},{"name":"aaa-cert_2015-11-26","revision":"2015-11-26","schema":"/rests/modules/aaa-cert?revision=2015-11-26","namespace":"urn:opendaylight:yang:aaa:cert","conformance-type":"import"},{"name":"openflow-action_2015-02-03","revision":"2015-02-03","schema":"/rests/modules/openflow-action?revision=2015-02-03","namespace":"urn:opendaylight:openflow:common:action","conformance-type":"import"},{"name":"openflow-approved-extensions_2016-08-02","revision":"2016-08-02","schema":"/rests/modules/openflow-approved-extensions?revision=2016-08-02","namespace":"urn:opendaylight:openflow:approved:extensions","conformance-type":"import"},{"name":"nc-notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/nc-notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netmod:notification","conformance-type":"import"},{"name":"ietf-netconf-nmda_2019-01-07","revision":"2019-01-07","schema":"/rests/modules/ietf-netconf-nmda?revision=2019-01-07","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-nmda","conformance-type":"import","feature":["with-defaults","origin"]},{"name":"ietf-tcp-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-common","conformance-type":"import","feature":["keepalives-supported"]},{"name":"network-topology_2013-10-21","revision":"2013-10-21","schema":"/rests/modules/network-topology?revision=2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:network-topology","conformance-type":"import"},{"name":"aaa-encrypt-service-config_2024-02-02","revision":"2024-02-02","schema":"/rests/modules/aaa-encrypt-service-config?revision=2024-02-02","namespace":"config:aaa:authn:encrypt:service:config","conformance-type":"import"},{"name":"openflow-instruction_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-instruction?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:instruction","conformance-type":"import"},{"name":"ietf-tls-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-client","conformance-type":"import","feature":["client-ident-x509-cert","server-auth-x509-cert"]},{"name":"opendaylight-group-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-group-statistics?revision=2013-11-11","namespace":"urn:opendaylight:group:statistics","conformance-type":"import"},{"name":"cluster-admin_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/cluster-admin?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:cluster:admin","conformance-type":"import"},{"name":"opendaylight-flow-statistics_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-flow-statistics?revision=2013-08-19","namespace":"urn:opendaylight:flow:statistics","conformance-type":"import"},{"name":"opendaylight-table-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-table-types?revision=2013-10-26","namespace":"urn:opendaylight:table:types","conformance-type":"import"},{"name":"forwarding-rules-manager-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/forwarding-rules-manager-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:forwardingrules-manager:config","conformance-type":"import"},{"name":"odl-srm-types_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-types?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:types","conformance-type":"import"},{"name":"ietf-x509-cert-to-name_2014-12-10","revision":"2014-12-10","schema":"/rests/modules/ietf-x509-cert-to-name?revision=2014-12-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-x509-cert-to-name","conformance-type":"import"},{"name":"flow-node-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-node-inventory?revision=2013-08-19","namespace":"urn:opendaylight:flow:inventory","conformance-type":"import"},{"name":"flow-errors_2013-11-16","revision":"2013-11-16","schema":"/rests/modules/flow-errors?revision=2013-11-16","namespace":"urn:opendaylight:flow:errors","conformance-type":"import"},{"name":"ietf-netconf_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:netconf:base:1.0","conformance-type":"import","feature":["xpath","url","rollback-on-error","validate","startup","candidate","confirmed-commit","writable-running"]},{"name":"iana-ssh-public-key-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-public-key-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-public-key-algs","conformance-type":"import"},{"name":"aaa-cert-mdsal_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/aaa-cert-mdsal?revision=2016-03-21","namespace":"urn:opendaylight:yang:aaa:cert:mdsal","conformance-type":"import"},{"name":"odl-device-notification_2024-02-18","revision":"2024-02-18","schema":"/rests/modules/odl-device-notification?revision=2024-02-18","namespace":"urn:opendaylight:device:notification","conformance-type":"import"},{"name":"ietf-origin_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-origin?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-origin","conformance-type":"import"},{"name":"openflow-augments_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-augments?revision=2015-02-25","namespace":"urn:opendaylight:openflow:augments","conformance-type":"import"},{"name":"iana-ssh-encryption-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-encryption-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-encryption-algs","conformance-type":"import"},{"name":"ietf-truststore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-truststore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-truststore","conformance-type":"import","feature":["inline-definitions-supported"]},{"name":"distributed-datastore-provider_2025-01-30","revision":"2025-01-30","schema":"/rests/modules/distributed-datastore-provider?revision=2025-01-30","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:distributed-datastore-provider","conformance-type":"import"},{"name":"opendaylight-group-types_2013-10-18","revision":"2013-10-18","schema":"/rests/modules/opendaylight-group-types?revision=2013-10-18","namespace":"urn:opendaylight:group:types","conformance-type":"import"},{"name":"sal-remote-augment_2023-11-03","revision":"2023-11-03","schema":"/rests/modules/sal-remote-augment?revision=2023-11-03","namespace":"urn:sal:restconf:event:subscription","conformance-type":"import"},{"name":"opendaylight-ipv6-arbitrary-bitmask-fields_2016-02-24","revision":"2016-02-24","schema":"/rests/modules/opendaylight-ipv6-arbitrary-bitmask-fields?revision=2016-02-24","namespace":"urn:opendaylight:opendaylight-ipv6-arbitrary-bitmask-fields","conformance-type":"import"},{"name":"sal-flows-batch_2016-03-14","revision":"2016-03-14","schema":"/rests/modules/sal-flows-batch?revision=2016-03-14","namespace":"urn:opendaylight:flows:service","conformance-type":"import"},{"name":"ietf-tls-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-common","conformance-type":"import","feature":["tls12","hello-params","tls13"]},{"name":"openflow-types_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-types?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:types","conformance-type":"import"},{"name":"ietf-netconf-with-defaults_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf-with-defaults?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults","conformance-type":"import"},{"name":"odl-srm-ops_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-ops?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:ops","conformance-type":"import"},{"name":"odl-general-entity_2015-09-30","revision":"2015-09-30","schema":"/rests/modules/odl-general-entity?revision=2015-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:mdsal:core:general-entity","conformance-type":"import"},{"name":"iana-ssh-key-exchange-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-key-exchange-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-key-exchange-algs","conformance-type":"import"},{"name":"node-ssl-connection-error_2019-07-23","revision":"2019-07-23","schema":"/rests/modules/node-ssl-connection-error?revision=2019-07-23","namespace":"urn:opendaylight:node-ssl-connection-error:service","conformance-type":"import"},{"name":"openflow-protocol_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-protocol?revision=2013-07-31","namespace":"urn:opendaylight:openflow:protocol","conformance-type":"import"},{"name":"ietf-udp-server_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-server?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-server","conformance-type":"import"},{"name":"ietf-keystore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-keystore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-keystore","conformance-type":"import","feature":["asymmetric-keys","inline-definitions-supported"]},{"name":"aaa_2016-12-14","revision":"2016-12-14","schema":"/rests/modules/aaa?revision=2016-12-14","namespace":"urn:opendaylight:params:xml:ns:yang:aaa","conformance-type":"import"},{"name":"aaa-cert-rpc_2015-12-15","revision":"2015-12-15","schema":"/rests/modules/aaa-cert-rpc?revision=2015-12-15","namespace":"urn:opendaylight:yang:aaa:cert:rpc","conformance-type":"import"},{"name":"system-notifications_2013-09-27","revision":"2013-09-27","schema":"/rests/modules/system-notifications?revision=2013-09-27","namespace":"urn:opendaylight:openflow:system","conformance-type":"import"},{"name":"sal-flat-batch_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/sal-flat-batch?revision=2016-03-21","namespace":"urn:opendaylight:flat-batch:service","conformance-type":"import"},{"name":"notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netconf:notification:1.0","conformance-type":"import"},{"name":"sal-remote_2014-01-14","revision":"2014-01-14","schema":"/rests/modules/sal-remote?revision=2014-01-14","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:remote","conformance-type":"import"},{"name":"yang-ext_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/yang-ext?revision=2013-07-09","namespace":"urn:opendaylight:yang:extension:yang-ext","conformance-type":"import"},{"name":"opendaylight-multipart-types_2017-01-12","revision":"2017-01-12","schema":"/rests/modules/opendaylight-multipart-types?revision=2017-01-12","namespace":"urn:opendaylight:multipart:types","conformance-type":"import"},{"name":"opendaylight-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-inventory?revision=2013-08-19","namespace":"urn:opendaylight:inventory","conformance-type":"import"},{"name":"sal-queue_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-queue?revision=2015-03-05","namespace":"urn:opendaylight:queue:service","conformance-type":"import"},{"name":"sal-groups-batch_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/sal-groups-batch?revision=2016-03-15","namespace":"urn:opendaylight:groups:service","conformance-type":"import"},{"name":"arbitrator-reconcile_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/arbitrator-reconcile?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:arbitrator-reconcile:service","conformance-type":"import"},{"name":"ietf-yang-metadata_2016-08-05","revision":"2016-08-05","schema":"/rests/modules/ietf-yang-metadata?revision=2016-08-05","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-metadata","conformance-type":"import"},{"name":"opendaylight-arbitrary-bitmask-fields_2016-01-30","revision":"2016-01-30","schema":"/rests/modules/opendaylight-arbitrary-bitmask-fields?revision=2016-01-30","namespace":"urn:opendaylight:arbitrary:bitmask:fields","conformance-type":"import"},{"name":"ietf-udp-client_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-client?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-client","conformance-type":"import","feature":["local-binding"]},{"name":"opendaylight-meter-types_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/opendaylight-meter-types?revision=2013-09-18","namespace":"urn:opendaylight:meter:types","conformance-type":"import"},{"name":"opendaylight-action-types_2013-11-12","revision":"2013-11-12","schema":"/rests/modules/opendaylight-action-types?revision=2013-11-12","namespace":"urn:opendaylight:action:types","conformance-type":"import"},{"name":"sal-role_2015-07-27","revision":"2015-07-27","schema":"/rests/modules/sal-role?revision=2015-07-27","namespace":"urn:opendaylight:role:service","conformance-type":"import"},{"name":"openflow-provider-config_2016-05-10","revision":"2016-05-10","schema":"/rests/modules/openflow-provider-config?revision=2016-05-10","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:provider:config","conformance-type":"import"},{"name":"odl-serviceutils-upgrade_2018-07-02","revision":"2018-07-02","schema":"/rests/modules/odl-serviceutils-upgrade?revision=2018-07-02","namespace":"urn:opendaylight:serviceutils:upgrade","conformance-type":"import"},{"name":"opendaylight-match-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-match-types?revision=2013-10-26","namespace":"urn:opendaylight:model:match:types","conformance-type":"import"},{"name":"ietf-restconf-server_2024-08-14","revision":"2024-08-14","schema":"/rests/modules/ietf-restconf-server?revision=2024-08-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-server","conformance-type":"import","feature":["http-listen","https-listen"]},{"name":"reconciliation-result-state_2017-07-13","revision":"2017-07-13","schema":"/rests/modules/reconciliation-result-state?revision=2017-07-13","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:rf:state","conformance-type":"import"},{"name":"onf-extensions_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/onf-extensions?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf","conformance-type":"import"},{"name":"sal-table_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/sal-table?revision=2013-10-26","namespace":"urn:opendaylight:table:service","conformance-type":"import"},{"name":"iana-http-versions_2026-02-04","revision":"2026-02-04","schema":"/rests/modules/iana-http-versions?revision=2026-02-04","namespace":"urn:ietf:params:xml:ns:yang:iana-http-versions","conformance-type":"import"},{"name":"opendaylight-direct-statistics_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/opendaylight-direct-statistics?revision=2016-05-11","namespace":"urn:opendaylight:direct:statistics","conformance-type":"import"},{"name":"opendaylight-port-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-port-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:port","conformance-type":"import"},{"name":"sal-async-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/sal-async-config?revision=2017-06-19","namespace":"urn:opendaylight:async-config:service","conformance-type":"import"},{"name":"aaa-password-service-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-password-service-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:password:service:config","conformance-type":"import"},{"name":"ietf-yang-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-yang-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-types","conformance-type":"import"},{"name":"opendaylight-queue-statistics_2013-12-16","revision":"2013-12-16","schema":"/rests/modules/opendaylight-queue-statistics?revision=2013-12-16","namespace":"urn:opendaylight:queue:statistics","conformance-type":"import"},{"name":"sal-bundle_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/sal-bundle?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf:bundle:service","conformance-type":"import"},{"name":"ietf-restconf-subscribed-notifications_2019-11-17","revision":"2019-11-17","schema":"/rests/modules/ietf-restconf-subscribed-notifications?revision=2019-11-17","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-subscribed-notifications","conformance-type":"import"},{"name":"sal-meters-batch_2016-03-16","revision":"2016-03-16","schema":"/rests/modules/sal-meters-batch?revision=2016-03-16","namespace":"urn:opendaylight:meters:service","conformance-type":"import"},{"name":"odl-entity-owners","revision":"","schema":"/rests/modules/odl-entity-owners","namespace":"urn:opendaylight:params:xml:ns:yang:controller:entity-owners","conformance-type":"import"},{"name":"sal-experimenter-mp-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-mp-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-mp-message:service","conformance-type":"import"},{"name":"packet-processing_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/packet-processing?revision=2013-07-09","namespace":"urn:opendaylight:packet:service","conformance-type":"import"},{"name":"openflow-configuration_2014-06-30","revision":"2014-06-30","schema":"/rests/modules/openflow-configuration?revision=2014-06-30","namespace":"urn:opendaylight:openflow:config","conformance-type":"import"},{"name":"odl-srm-rpcs_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-rpcs?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:rpc","conformance-type":"import"},{"name":"ietf-netconf-acm_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-netconf-acm?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-acm","conformance-type":"import"},{"name":"iana-crypt-hash_2014-08-06","revision":"2014-08-06","schema":"/rests/modules/iana-crypt-hash?revision=2014-08-06","namespace":"urn:ietf:params:xml:ns:yang:iana-crypt-hash","conformance-type":"import","feature":["crypt-hash-sha-512","crypt-hash-sha-256","crypt-hash-md5"]},{"name":"openflow-extensible-match_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-extensible-match?revision=2015-02-25","namespace":"urn:opendaylight:openflow:oxm","conformance-type":"import"}],"module-set-id":"2"}}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:58.407503" elapsed="0.004117"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:58.407192" elapsed="0.004478"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:58.407145" elapsed="0.004560"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:58.415176" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:58.412170" elapsed="0.003073"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:58.411790" elapsed="0.003502"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:58.411762" elapsed="0.003564"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:58.416101" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:58.415564" elapsed="0.000575"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:58.416609" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:58.416272" elapsed="0.000417"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:58.417384" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:58.416944" elapsed="0.000476"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:58.416722" elapsed="0.000748"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:58.416245" elapsed="0.001255"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:58.418245" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:58.417721" elapsed="0.000562"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:58.418707" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:58.418381" elapsed="0.000407"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:58.419527" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:58.419050" elapsed="0.000513"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:58.418825" elapsed="0.000789"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:58.418355" elapsed="0.001289"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:51:58.419846" elapsed="0.000363"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:51:58.420662" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:58.420376" elapsed="0.000313"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:51:58.420842" elapsed="0.002169"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:51:58.406586" elapsed="0.016488"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:51:58.423286" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:51:58.423175" elapsed="0.000156"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:58.423145" elapsed="0.000208"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:51:58.431615" level="INFO">${text_normalized} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:51:58.423497" elapsed="0.008149"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:51:58.431699" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:51:58.431860" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:51:58.387616" elapsed="0.044271"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:51:58.431950" elapsed="0.000027"/>
</return>
<msg time="2026-04-08T00:51:58.432299" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="PASS" start="2026-04-08T00:51:58.296475" elapsed="0.135862"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Json_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:58.432807" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:58.432465" elapsed="0.000460"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:58.432433" elapsed="0.000533"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:51:58.433027" elapsed="0.000070"/>
</return>
<arg>session=${session}</arg>
<arg>folder=${RESTCONF_MODULES_DIR}</arg>
<arg>verify=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Add arguments sensible for JSON data, return Get_Templated response text.
Optionally, verification against JSON data (may be iterated) is called.
Only subset of JSON data is verified and returned if JMES path is specified in
file ${folder}/jmespath.expr.</doc>
<status status="PASS" start="2026-04-08T00:51:58.290752" elapsed="0.142555"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:58.286367" elapsed="0.147051"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:58.286348" elapsed="0.147097"/>
</if>
<kw name="Resolve_Shard_Type_Class" owner="ClusterManagement">
<if>
<branch type="IF" condition="'${shard_type}' == 'config'">
<return>
<value>DistributedConfigDatastore</value>
<status status="PASS" start="2026-04-08T00:51:58.434349" elapsed="0.000069"/>
</return>
<status status="PASS" start="2026-04-08T00:51:58.434106" elapsed="0.000362"/>
</branch>
<branch type="ELSE IF" condition="'${shard_type}' == 'operational'">
<return>
<value>DistributedOperationalDatastore</value>
<status status="NOT RUN" start="2026-04-08T00:51:58.434614" elapsed="0.000055"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:51:58.434528" elapsed="0.000184"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:58.434073" elapsed="0.000697"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized shard type: ${shard_type}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:58.435006" elapsed="0.000066"/>
</kw>
<msg time="2026-04-08T00:51:58.435235" level="INFO">${type_class} = DistributedConfigDatastore</msg>
<var>${type_class}</var>
<arg>shard_type=${shard_type}</arg>
<doc>Simple lookup for class name corresponding to desired type.</doc>
<status status="PASS" start="2026-04-08T00:51:58.433705" elapsed="0.001557"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:58.436073" level="INFO">${cluster_index} = 3</msg>
<var>${cluster_index}</var>
<arg>${member_index}+${NODE_ROLE_INDEX_START}-1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:58.435430" elapsed="0.000671"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:58.437285" level="INFO">${uri} = jolokia/read/org.opendaylight.controller:Category=Shards,name=member-3-shard-topology-config,type=DistributedConfigDatastore</msg>
<var>${uri}</var>
<arg>${JOLOKIA_READ_URI}:Category=Shards,name=member-${cluster_index}-shard-${shard_name}-${shard_type},type=${type_class}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:58.436281" elapsed="0.001033"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:58.444243" level="INFO">jolokia/read/org.opendaylight.controller:Category=Shards,name=member-3-shard-topology-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:58.443942" elapsed="0.000396"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:58.444869" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:58.444582" elapsed="0.000370"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:51:58.452145" level="INFO">GET Request : url=http://10.30.171.110:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-3-shard-topology-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-3-shard-topology-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:51:58.452247" level="INFO">GET Response : url=http://10.30.171.110:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-3-shard-topology-config,type=DistributedConfigDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Wed, 08 Apr 2026 00:51:58 GMT', 'Expires': 'Tue, 07 Apr 2026 23:51:58 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-3-shard-topology-config,type=DistributedConfigDatastore","type":"read"},"value":{"ReadWriteTransactionCount":0,"SnapshotIndex":-1,"InMemoryJournalLogSize":0,"ReplicatedToAllIndex":-1,"Leader":"member-1-shard-topology-config","LastIndex":-1,"RaftState":"Follower","LastApplied":-1,"LastCommittedTransactionTime":"1970-01-01 00:00:00.000","PeerAddresses":"member-2-shard-topology-config: pekko:\/\/opendaylight-cluster-data@10.30.170.131:2550\/user\/shardmanager-config\/member-2-shard-topology-config, member-1-shard-topology-config: pekko:\/\/opendaylight-cluster-data@10.30.170.48:2550\/user\/shardmanager-config\/member-1-shard-topology-config","LastLogIndex":-1,"LastLeadershipChangeTime":"2026-04-08 00:46:45.985","FollowerInitialSyncStatus":true,"FollowerInfo":[],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"153.4 μs","CurrentTerm":2,"LastTerm":-1,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-topology-config","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":0,"TxCohortCacheSize":0,"PeerVotingStates":"member-2-shard-topology-config: true, member-1-shard-topology-config: true","LastLogTerm":-1,"StatRetrievalError":null,"CommitIndex":-1,"SnapshotTerm":-1,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-3-shard-topology-config","LeadershipChangeCount":1,"InMemoryJournalDataSize":0},"timestamp":1775609518,"status":200} 
 </msg>
<msg time="2026-04-08T00:51:58.452392" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:51:58.447110" elapsed="0.005318"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:58.445099" elapsed="0.007389"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:58.452765" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:58.452552" elapsed="0.000304"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:58.445052" elapsed="0.007859"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:58.457824" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-3-shard-topology-config,type=DistributedConfigDatastore","type":"read"},"value":{"ReadWriteTransactionCount":0,"SnapshotIndex":-1,"InMemoryJournalLogSize":0,"ReplicatedToAllIndex":-1,"Leader":"member-1-shard-topology-config","LastIndex":-1,"RaftState":"Follower","LastApplied":-1,"LastCommittedTransactionTime":"1970-01-01 00:00:00.000","PeerAddresses":"member-2-shard-topology-config: pekko:\/\/opendaylight-cluster-data@10.30.170.131:2550\/user\/shardmanager-config\/member-2-shard-topology-config, member-1-shard-topology-config: pekko:\/\/opendaylight-cluster-data@10.30.170.48:2550\/user\/shardmanager-config\/member-1-shard-topology-config","LastLogIndex":-1,"LastLeadershipChangeTime":"2026-04-08 00:46:45.985","FollowerInitialSyncStatus":true,"FollowerInfo":[],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"153.4 μs","CurrentTerm":2,"LastTerm":-1,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-topology-config","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":0,"TxCohortCacheSize":0,"PeerVotingStates":"member-2-shard-topology-config: true, member-1-shard-topology-config: true","LastLogTerm":-1,"StatRetrievalError":null,"CommitIndex":-1,"SnapshotTerm":-1,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-3-shard-topology-config","LeadershipChangeCount":1,"InMemoryJournalDataSize":0},"timestamp":1775609518,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:58.454506" elapsed="0.003446"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:58.454198" elapsed="0.003805"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:58.454170" elapsed="0.003868"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:58.461473" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:58.458472" elapsed="0.003064"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:58.458117" elapsed="0.003467"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:58.458093" elapsed="0.003525"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:58.462268" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:58.461865" elapsed="0.000430"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:58.462601" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:58.462366" elapsed="0.000292"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:58.463134" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:58.462840" elapsed="0.000335"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:58.462681" elapsed="0.000531"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:58.462348" elapsed="0.000886"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:58.463751" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:58.463393" elapsed="0.000385"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:58.464085" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:58.463853" elapsed="0.000288"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:58.464633" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:58.464342" elapsed="0.000317"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:58.464180" elapsed="0.000514"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:58.463834" elapsed="0.000881"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:51:58.464862" elapsed="0.000356"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:51:58.465660" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:58.465383" elapsed="0.000302"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:51:58.465836" elapsed="0.002168"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:51:58.453557" elapsed="0.014509"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:51:58.468364" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:51:58.468240" elapsed="0.000169"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:58.468193" elapsed="0.000255"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:51:58.471391" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-3-shard-topology-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1775609...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:51:58.468678" elapsed="0.002765"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:51:58.471525" elapsed="0.000061"/>
</return>
<msg time="2026-04-08T00:51:58.471878" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-3-shard-topology-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1775609...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:51:58.438929" elapsed="0.033038"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:51:58.472067" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:51:58.472356" level="INFO">${data_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-3-shard-topology-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1775609...</msg>
<var>${data_text}</var>
<arg>uri=${uri}</arg>
<arg>session=${session}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-08T00:51:58.437530" elapsed="0.034854"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:58.474477" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-3-shard-topology-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1775609518, 'value...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:58.473444" elapsed="0.001126"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-08T00:51:58.474687" elapsed="0.000031"/>
</return>
<msg time="2026-04-08T00:51:58.474981" level="INFO">${data_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-3-shard-topology-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1775609518, 'value...</msg>
<var>${data_object}</var>
<arg>${data_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-08T00:51:58.472609" elapsed="0.002400"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:51:58.475493" level="INFO">${value} = {'AbortTransactionsCount': 0, 'CommitIndex': -1, 'CommittedTransactionsCount': 0, 'CurrentTerm': 2, 'FailedReadTransactionsCount': 0, 'FailedTransactionsCount': 0, 'FollowerInfo': [], 'FollowerInitial...</msg>
<var>${value}</var>
<arg>${data_object}</arg>
<arg>value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:51:58.475182" elapsed="0.000339"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:51:58.476057" level="INFO">${raft_property} = Follower</msg>
<var>${raft_property}</var>
<arg>${value}</arg>
<arg>${property}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:51:58.475680" elapsed="0.000403"/>
</kw>
<return>
<value>${raft_property}</value>
<status status="PASS" start="2026-04-08T00:51:58.476130" elapsed="0.000043"/>
</return>
<msg time="2026-04-08T00:51:58.476301" level="INFO">${raft_state} = Follower</msg>
<var>${raft_state}</var>
<arg>RaftState</arg>
<arg>${shard_name}</arg>
<arg>${shard_type}</arg>
<arg>${member_index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft property.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T00:51:58.283545" elapsed="0.192781"/>
</kw>
<return>
<value>${raft_state}</value>
<status status="PASS" start="2026-04-08T00:51:58.476382" elapsed="0.000025"/>
</return>
<msg time="2026-04-08T00:51:58.476527" level="INFO">${raft_state} = Follower</msg>
<var>${raft_state}</var>
<arg>shard_name=${shard_name}</arg>
<arg>shard_type=${ds_type}</arg>
<arg>member_index=${index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft status.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T00:51:58.282781" elapsed="0.193770"/>
</kw>
<if>
<branch type="IF" condition="'Follower' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${follower_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-08T00:51:58.476842" elapsed="0.000192"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:58.476629" elapsed="0.000454"/>
</branch>
<branch type="ELSE IF" condition="'Leader' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${leader_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:58.477303" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:58.477109" elapsed="0.000250"/>
</branch>
<branch type="ELSE IF" condition="${validate}">
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized Raft state: ${raft_state}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:58.477523" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:58.477382" elapsed="0.000191"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:58.476611" elapsed="0.000985"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T00:51:58.282618" elapsed="0.195001"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-08T00:51:57.893328" elapsed="0.584322"/>
</for>
<return>
<value>${leader_list}</value>
<value>${follower_list}</value>
<status status="PASS" start="2026-04-08T00:51:58.477690" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:51:58.477895" level="INFO">${leader_list} = [1]</msg>
<msg time="2026-04-08T00:51:58.477943" level="INFO">${follower_list} = [2, 3]</msg>
<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="PASS" start="2026-04-08T00:51:57.889310" elapsed="0.588656"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T00:51:58.478421" level="INFO">Length is 1.</msg>
<msg time="2026-04-08T00:51:58.478497" level="INFO">${leader_count} = 1</msg>
<var>${leader_count}</var>
<arg>${leader_list}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T00:51:58.478137" elapsed="0.000383"/>
</kw>
<if>
<branch type="IF" condition="${leader_count} &lt; 1">
<kw name="Fail" owner="BuiltIn">
<arg>No leader found.</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:58.478800" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:58.478589" elapsed="0.000264"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:58.478571" elapsed="0.000304"/>
</if>
<kw name="Length Should Be" owner="BuiltIn">
<msg time="2026-04-08T00:51:58.480941" level="INFO">Length is 1.</msg>
<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="PASS" start="2026-04-08T00:51:58.479011" elapsed="0.001986"/>
</kw>
<kw name="Get From List" owner="Collections">
<msg time="2026-04-08T00:51:58.481477" level="INFO">${leader} = 1</msg>
<var>${leader}</var>
<arg>${leader_list}</arg>
<arg>0</arg>
<doc>Returns the value specified with an ``index`` from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:51:58.481281" elapsed="0.000221"/>
</kw>
<return>
<value>${leader}</value>
<value>${follower_list}</value>
<status status="PASS" start="2026-04-08T00:51:58.481548" elapsed="0.000028"/>
</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="PASS" start="2026-04-08T00:51:57.886515" elapsed="0.595186"/>
</kw>
<var name="${shard_name}">topology</var>
<status status="PASS" start="2026-04-08T00:51:57.886292" elapsed="0.595456"/>
</iter>
<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-04-08T00:51:58.486095" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:51:58.485714" elapsed="0.000407"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:51:58.486642" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:51:58.486334" elapsed="0.000335"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:51:58.486713" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:51:58.486867" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:51:58.485340" elapsed="0.001551"/>
</kw>
<kw name="Sort List" owner="Collections">
<arg>${index_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="PASS" start="2026-04-08T00:51:58.487041" elapsed="0.000168"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:51:58.487698" level="INFO">${ds_type} = config</msg>
<var>${ds_type}</var>
<arg>'${shard_type}' != 'config'</arg>
<arg>operational</arg>
<arg>config</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:51:58.487368" elapsed="0.000356"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:51:58.488116" level="INFO">${leader_list} = []</msg>
<var>${leader_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:51:58.487880" elapsed="0.000262"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:51:58.488539" level="INFO">${follower_list} = []</msg>
<var>${follower_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:51:58.488305" elapsed="0.000259"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_Raft_State_Of_Shard_At_Member" owner="ClusterManagement">
<kw name="Get_Raft_Property_From_Shard_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:58.491947" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:58.491110" elapsed="0.000925"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:51:58.492114" elapsed="0.000031"/>
</return>
<msg time="2026-04-08T00:51:58.492393" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:51:58.490593" elapsed="0.001826"/>
</kw>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Get_As_Json_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:58.540592" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:58.540213" elapsed="0.000408"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:51:58.541390" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:51:58.541118" elapsed="0.000349">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-08T00:51:58.541560" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:51:58.540786" elapsed="0.000798"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:51:58.542127" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:51:58.541748" elapsed="0.000419"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T00:51:58.542469" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-08T00:51:58.542640" level="INFO">${template} = /rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T00:51:58.542330" elapsed="0.000337"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:58.543070" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:58.542825" elapsed="0.000289"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:58.544074" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:58.543822" elapsed="0.000296"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-08T00:51:58.544558" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-08T00:51:58.544292" elapsed="0.000291"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:58.544900" elapsed="0.000022"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:58.545100" elapsed="0.000023"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:58.545287" elapsed="0.000022"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-08T00:51:58.544768" elapsed="0.000618"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-08T00:51:58.544633" elapsed="0.000784"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-08T00:51:58.545463" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:51:58.545623" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-08T00:51:58.543504" elapsed="0.002144"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:58.543215" elapsed="0.002465"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:58.545850" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:58.545704" elapsed="0.000206"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:58.543194" elapsed="0.002737"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:58.546542" level="INFO">${final_text} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:58.546071" elapsed="0.000499"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T00:51:58.546618" 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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="PASS" start="2026-04-08T00:51:58.539590" elapsed="0.007157"/>
</kw>
<msg time="2026-04-08T00:51:58.546800" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:51:58.527759" elapsed="0.019092"/>
</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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:58.558805" elapsed="0.000029"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:58.570322" 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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:58.581809" elapsed="0.000027"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:58.582001" elapsed="0.000022"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:58.582189" elapsed="0.000022"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:58.582551" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:58.582408" elapsed="0.000197"/>
</branch>
<status status="NOT RUN" start="2026-04-08T00:51:58.582394" elapsed="0.000235"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:58.582765" elapsed="0.000021"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:58.582930" elapsed="0.000020"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:58.583092" elapsed="0.000021"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-08T00:51:58.582365" elapsed="0.000780"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-08T00:51:58.582266" elapsed="0.000920"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:58.583331" elapsed="0.000021"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-08T00:51:58.583443" elapsed="0.000017"/>
</return>
<msg time="2026-04-08T00:51:58.583562" level="INFO">${uri} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-08T00:51:58.523779" elapsed="0.059808"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:51:58.584830" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:51:58.584589" elapsed="0.000308">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-08T00:51:58.584988" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:51:58.584247" elapsed="0.000766"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:58.585384" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:58.585110" elapsed="0.000330"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:58.585930" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:58.585639" elapsed="0.000317"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:58.585464" elapsed="0.000525"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:58.585089" elapsed="0.000921"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:51:58.588226" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:51:58.586172" elapsed="0.002081"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-08T00:51:58.588303" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:51:58.588454" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:51:58.583908" elapsed="0.004571"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:51:58.589709" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:51:58.589474" elapsed="0.000297">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-08T00:51:58.589864" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:51:58.589113" elapsed="0.000776"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-08T00:51:58.590098" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-08T00:51:58.589964" elapsed="0.000208"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:58.589945" elapsed="0.000253"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:58.590343" elapsed="0.000022"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:58.590511" elapsed="0.000021"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-08T00:51:58.590577" elapsed="0.000015"/>
</return>
<msg time="2026-04-08T00:51:58.592487" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:51:58.588774" elapsed="0.003739"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:58.593906" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:58.593659" elapsed="0.000293"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:58.594360" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:58.594101" elapsed="0.000302"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:51:58.610237" level="INFO">GET Request : url=http://10.30.170.48:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 path_url=/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01ju7g9ih47awu1dako8be5k84o113.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:51:58.611211" level="INFO">GET Response : url=http://10.30.170.48:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Transfer-Encoding': 'chunked'} 
 body={"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","hidden-symmetric-keys","encrypted-private-keys","asymmetrically-encrypted-value-format","cms-encrypted-data-format","cleartext-private-keys","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["ssh-client-keepalives","client-ident-hostbased","client-ident-publickey","client-ident-password"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-ex... (set the log level to DEBUG or TRACE to see the full content) 
 </msg>
<msg time="2026-04-08T00:51:58.611678" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:51:58.596388" elapsed="0.015351"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:58.594469" elapsed="0.017364"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:58.612316" elapsed="0.000054"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:58.611892" elapsed="0.000573"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:58.594450" elapsed="0.018063"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:58.620706" level="INFO">{"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","hidden-symmetric-keys","encrypted-private-keys","asymmetrically-encrypted-value-format","cms-encrypted-data-format","cleartext-private-keys","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["ssh-client-keepalives","client-ident-hostbased","client-ident-publickey","client-ident-password"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-experimenter-types?revision=2015-10-20","namespace":"urn:opendaylight:openflowplugin:experimenter:types","conformance-type":"import"},{"name":"ietf-ip_2018-02-22","revision":"2018-02-22","schema":"/rests/modules/ietf-ip?revision=2018-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-ip","conformance-type":"import","feature":["ipv6-privacy-autoconf","ipv4-non-contiguous-netmasks"]},{"name":"ietf-tcp-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-client","conformance-type":"import","feature":["local-binding-supported","tcp-client-keepalives"]},{"name":"node-config_2014-10-15","revision":"2014-10-15","schema":"/rests/modules/node-config?revision=2014-10-15","namespace":"urn:opendaylight:module:config","conformance-type":"import"},{"name":"ietf-restconf_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf","conformance-type":"import"},{"name":"ietf-datastores_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-datastores?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-datastores","conformance-type":"import"},{"name":"ietf-yang-patch_2017-02-22","revision":"2017-02-22","schema":"/rests/modules/ietf-yang-patch?revision=2017-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-patch","conformance-type":"import"},{"name":"sal-group_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-group?revision=2013-09-18","namespace":"urn:opendaylight:group:service","conformance-type":"import"},{"name":"odl-codegen-extensions_2024-06-27","revision":"2024-06-27","schema":"/rests/modules/odl-codegen-extensions?revision=2024-06-27","namespace":"urn:opendaylight:yang:extension:codegen","conformance-type":"import"},{"name":"sal-meter_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-meter?revision=2013-09-18","namespace":"urn:opendaylight:meter:service","conformance-type":"import"},{"name":"ietf-interfaces_2018-02-20","revision":"2018-02-20","schema":"/rests/modules/ietf-interfaces?revision=2018-02-20","namespace":"urn:ietf:params:xml:ns:yang:ietf-interfaces","conformance-type":"import","feature":["pre-provisioning","if-mib","arbitrary-names"]},{"name":"opendaylight-l2-types_2013-08-27","revision":"2013-08-27","schema":"/rests/modules/opendaylight-l2-types?revision=2013-08-27","namespace":"urn:opendaylight:l2:types","conformance-type":"import"},{"name":"opendaylight-flow-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-flow-types?revision=2013-10-26","namespace":"urn:opendaylight:flow:types","conformance-type":"import"},{"name":"lldp-speaker-config_2016-05-12","revision":"2016-05-12","schema":"/rests/modules/lldp-speaker-config?revision=2016-05-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker:config","conformance-type":"import"},{"name":"aaa-cert_2015-11-26","revision":"2015-11-26","schema":"/rests/modules/aaa-cert?revision=2015-11-26","namespace":"urn:opendaylight:yang:aaa:cert","conformance-type":"import"},{"name":"openflow-action_2015-02-03","revision":"2015-02-03","schema":"/rests/modules/openflow-action?revision=2015-02-03","namespace":"urn:opendaylight:openflow:common:action","conformance-type":"import"},{"name":"openflow-approved-extensions_2016-08-02","revision":"2016-08-02","schema":"/rests/modules/openflow-approved-extensions?revision=2016-08-02","namespace":"urn:opendaylight:openflow:approved:extensions","conformance-type":"import"},{"name":"nc-notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/nc-notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netmod:notification","conformance-type":"import"},{"name":"ietf-netconf-nmda_2019-01-07","revision":"2019-01-07","schema":"/rests/modules/ietf-netconf-nmda?revision=2019-01-07","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-nmda","conformance-type":"import","feature":["with-defaults","origin"]},{"name":"ietf-tcp-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-common","conformance-type":"import","feature":["keepalives-supported"]},{"name":"network-topology_2013-10-21","revision":"2013-10-21","schema":"/rests/modules/network-topology?revision=2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:network-topology","conformance-type":"import"},{"name":"aaa-encrypt-service-config_2024-02-02","revision":"2024-02-02","schema":"/rests/modules/aaa-encrypt-service-config?revision=2024-02-02","namespace":"config:aaa:authn:encrypt:service:config","conformance-type":"import"},{"name":"openflow-instruction_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-instruction?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:instruction","conformance-type":"import"},{"name":"ietf-tls-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-client","conformance-type":"import","feature":["client-ident-x509-cert","server-auth-x509-cert"]},{"name":"opendaylight-group-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-group-statistics?revision=2013-11-11","namespace":"urn:opendaylight:group:statistics","conformance-type":"import"},{"name":"cluster-admin_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/cluster-admin?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:cluster:admin","conformance-type":"import"},{"name":"opendaylight-flow-statistics_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-flow-statistics?revision=2013-08-19","namespace":"urn:opendaylight:flow:statistics","conformance-type":"import"},{"name":"opendaylight-table-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-table-types?revision=2013-10-26","namespace":"urn:opendaylight:table:types","conformance-type":"import"},{"name":"forwarding-rules-manager-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/forwarding-rules-manager-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:forwardingrules-manager:config","conformance-type":"import"},{"name":"odl-srm-types_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-types?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:types","conformance-type":"import"},{"name":"ietf-x509-cert-to-name_2014-12-10","revision":"2014-12-10","schema":"/rests/modules/ietf-x509-cert-to-name?revision=2014-12-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-x509-cert-to-name","conformance-type":"import"},{"name":"flow-node-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-node-inventory?revision=2013-08-19","namespace":"urn:opendaylight:flow:inventory","conformance-type":"import"},{"name":"flow-errors_2013-11-16","revision":"2013-11-16","schema":"/rests/modules/flow-errors?revision=2013-11-16","namespace":"urn:opendaylight:flow:errors","conformance-type":"import"},{"name":"ietf-netconf_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:netconf:base:1.0","conformance-type":"import","feature":["xpath","url","rollback-on-error","validate","startup","candidate","confirmed-commit","writable-running"]},{"name":"iana-ssh-public-key-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-public-key-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-public-key-algs","conformance-type":"import"},{"name":"aaa-cert-mdsal_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/aaa-cert-mdsal?revision=2016-03-21","namespace":"urn:opendaylight:yang:aaa:cert:mdsal","conformance-type":"import"},{"name":"odl-device-notification_2024-02-18","revision":"2024-02-18","schema":"/rests/modules/odl-device-notification?revision=2024-02-18","namespace":"urn:opendaylight:device:notification","conformance-type":"import"},{"name":"ietf-origin_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-origin?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-origin","conformance-type":"import"},{"name":"openflow-augments_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-augments?revision=2015-02-25","namespace":"urn:opendaylight:openflow:augments","conformance-type":"import"},{"name":"iana-ssh-encryption-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-encryption-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-encryption-algs","conformance-type":"import"},{"name":"ietf-truststore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-truststore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-truststore","conformance-type":"import","feature":["inline-definitions-supported"]},{"name":"distributed-datastore-provider_2025-01-30","revision":"2025-01-30","schema":"/rests/modules/distributed-datastore-provider?revision=2025-01-30","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:distributed-datastore-provider","conformance-type":"import"},{"name":"opendaylight-group-types_2013-10-18","revision":"2013-10-18","schema":"/rests/modules/opendaylight-group-types?revision=2013-10-18","namespace":"urn:opendaylight:group:types","conformance-type":"import"},{"name":"sal-remote-augment_2023-11-03","revision":"2023-11-03","schema":"/rests/modules/sal-remote-augment?revision=2023-11-03","namespace":"urn:sal:restconf:event:subscription","conformance-type":"import"},{"name":"opendaylight-ipv6-arbitrary-bitmask-fields_2016-02-24","revision":"2016-02-24","schema":"/rests/modules/opendaylight-ipv6-arbitrary-bitmask-fields?revision=2016-02-24","namespace":"urn:opendaylight:opendaylight-ipv6-arbitrary-bitmask-fields","conformance-type":"import"},{"name":"sal-flows-batch_2016-03-14","revision":"2016-03-14","schema":"/rests/modules/sal-flows-batch?revision=2016-03-14","namespace":"urn:opendaylight:flows:service","conformance-type":"import"},{"name":"ietf-tls-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-common","conformance-type":"import","feature":["tls12","hello-params","tls13"]},{"name":"openflow-types_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-types?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:types","conformance-type":"import"},{"name":"ietf-netconf-with-defaults_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf-with-defaults?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults","conformance-type":"import"},{"name":"odl-srm-ops_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-ops?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:ops","conformance-type":"import"},{"name":"odl-general-entity_2015-09-30","revision":"2015-09-30","schema":"/rests/modules/odl-general-entity?revision=2015-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:mdsal:core:general-entity","conformance-type":"import"},{"name":"iana-ssh-key-exchange-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-key-exchange-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-key-exchange-algs","conformance-type":"import"},{"name":"node-ssl-connection-error_2019-07-23","revision":"2019-07-23","schema":"/rests/modules/node-ssl-connection-error?revision=2019-07-23","namespace":"urn:opendaylight:node-ssl-connection-error:service","conformance-type":"import"},{"name":"openflow-protocol_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-protocol?revision=2013-07-31","namespace":"urn:opendaylight:openflow:protocol","conformance-type":"import"},{"name":"ietf-udp-server_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-server?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-server","conformance-type":"import"},{"name":"ietf-keystore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-keystore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-keystore","conformance-type":"import","feature":["asymmetric-keys","inline-definitions-supported"]},{"name":"aaa_2016-12-14","revision":"2016-12-14","schema":"/rests/modules/aaa?revision=2016-12-14","namespace":"urn:opendaylight:params:xml:ns:yang:aaa","conformance-type":"import"},{"name":"aaa-cert-rpc_2015-12-15","revision":"2015-12-15","schema":"/rests/modules/aaa-cert-rpc?revision=2015-12-15","namespace":"urn:opendaylight:yang:aaa:cert:rpc","conformance-type":"import"},{"name":"system-notifications_2013-09-27","revision":"2013-09-27","schema":"/rests/modules/system-notifications?revision=2013-09-27","namespace":"urn:opendaylight:openflow:system","conformance-type":"import"},{"name":"sal-flat-batch_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/sal-flat-batch?revision=2016-03-21","namespace":"urn:opendaylight:flat-batch:service","conformance-type":"import"},{"name":"notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netconf:notification:1.0","conformance-type":"import"},{"name":"sal-remote_2014-01-14","revision":"2014-01-14","schema":"/rests/modules/sal-remote?revision=2014-01-14","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:remote","conformance-type":"import"},{"name":"yang-ext_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/yang-ext?revision=2013-07-09","namespace":"urn:opendaylight:yang:extension:yang-ext","conformance-type":"import"},{"name":"opendaylight-multipart-types_2017-01-12","revision":"2017-01-12","schema":"/rests/modules/opendaylight-multipart-types?revision=2017-01-12","namespace":"urn:opendaylight:multipart:types","conformance-type":"import"},{"name":"opendaylight-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-inventory?revision=2013-08-19","namespace":"urn:opendaylight:inventory","conformance-type":"import"},{"name":"sal-queue_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-queue?revision=2015-03-05","namespace":"urn:opendaylight:queue:service","conformance-type":"import"},{"name":"sal-groups-batch_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/sal-groups-batch?revision=2016-03-15","namespace":"urn:opendaylight:groups:service","conformance-type":"import"},{"name":"arbitrator-reconcile_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/arbitrator-reconcile?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:arbitrator-reconcile:service","conformance-type":"import"},{"name":"ietf-yang-metadata_2016-08-05","revision":"2016-08-05","schema":"/rests/modules/ietf-yang-metadata?revision=2016-08-05","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-metadata","conformance-type":"import"},{"name":"opendaylight-arbitrary-bitmask-fields_2016-01-30","revision":"2016-01-30","schema":"/rests/modules/opendaylight-arbitrary-bitmask-fields?revision=2016-01-30","namespace":"urn:opendaylight:arbitrary:bitmask:fields","conformance-type":"import"},{"name":"ietf-udp-client_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-client?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-client","conformance-type":"import","feature":["local-binding"]},{"name":"opendaylight-meter-types_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/opendaylight-meter-types?revision=2013-09-18","namespace":"urn:opendaylight:meter:types","conformance-type":"import"},{"name":"opendaylight-action-types_2013-11-12","revision":"2013-11-12","schema":"/rests/modules/opendaylight-action-types?revision=2013-11-12","namespace":"urn:opendaylight:action:types","conformance-type":"import"},{"name":"sal-role_2015-07-27","revision":"2015-07-27","schema":"/rests/modules/sal-role?revision=2015-07-27","namespace":"urn:opendaylight:role:service","conformance-type":"import"},{"name":"openflow-provider-config_2016-05-10","revision":"2016-05-10","schema":"/rests/modules/openflow-provider-config?revision=2016-05-10","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:provider:config","conformance-type":"import"},{"name":"odl-serviceutils-upgrade_2018-07-02","revision":"2018-07-02","schema":"/rests/modules/odl-serviceutils-upgrade?revision=2018-07-02","namespace":"urn:opendaylight:serviceutils:upgrade","conformance-type":"import"},{"name":"opendaylight-match-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-match-types?revision=2013-10-26","namespace":"urn:opendaylight:model:match:types","conformance-type":"import"},{"name":"ietf-restconf-server_2024-08-14","revision":"2024-08-14","schema":"/rests/modules/ietf-restconf-server?revision=2024-08-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-server","conformance-type":"import","feature":["http-listen","https-listen"]},{"name":"reconciliation-result-state_2017-07-13","revision":"2017-07-13","schema":"/rests/modules/reconciliation-result-state?revision=2017-07-13","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:rf:state","conformance-type":"import"},{"name":"onf-extensions_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/onf-extensions?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf","conformance-type":"import"},{"name":"sal-table_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/sal-table?revision=2013-10-26","namespace":"urn:opendaylight:table:service","conformance-type":"import"},{"name":"iana-http-versions_2026-02-04","revision":"2026-02-04","schema":"/rests/modules/iana-http-versions?revision=2026-02-04","namespace":"urn:ietf:params:xml:ns:yang:iana-http-versions","conformance-type":"import"},{"name":"opendaylight-direct-statistics_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/opendaylight-direct-statistics?revision=2016-05-11","namespace":"urn:opendaylight:direct:statistics","conformance-type":"import"},{"name":"opendaylight-port-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-port-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:port","conformance-type":"import"},{"name":"sal-async-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/sal-async-config?revision=2017-06-19","namespace":"urn:opendaylight:async-config:service","conformance-type":"import"},{"name":"aaa-password-service-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-password-service-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:password:service:config","conformance-type":"import"},{"name":"ietf-yang-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-yang-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-types","conformance-type":"import"},{"name":"opendaylight-queue-statistics_2013-12-16","revision":"2013-12-16","schema":"/rests/modules/opendaylight-queue-statistics?revision=2013-12-16","namespace":"urn:opendaylight:queue:statistics","conformance-type":"import"},{"name":"sal-bundle_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/sal-bundle?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf:bundle:service","conformance-type":"import"},{"name":"ietf-restconf-subscribed-notifications_2019-11-17","revision":"2019-11-17","schema":"/rests/modules/ietf-restconf-subscribed-notifications?revision=2019-11-17","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-subscribed-notifications","conformance-type":"import"},{"name":"sal-meters-batch_2016-03-16","revision":"2016-03-16","schema":"/rests/modules/sal-meters-batch?revision=2016-03-16","namespace":"urn:opendaylight:meters:service","conformance-type":"import"},{"name":"odl-entity-owners","revision":"","schema":"/rests/modules/odl-entity-owners","namespace":"urn:opendaylight:params:xml:ns:yang:controller:entity-owners","conformance-type":"import"},{"name":"sal-experimenter-mp-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-mp-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-mp-message:service","conformance-type":"import"},{"name":"packet-processing_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/packet-processing?revision=2013-07-09","namespace":"urn:opendaylight:packet:service","conformance-type":"import"},{"name":"openflow-configuration_2014-06-30","revision":"2014-06-30","schema":"/rests/modules/openflow-configuration?revision=2014-06-30","namespace":"urn:opendaylight:openflow:config","conformance-type":"import"},{"name":"odl-srm-rpcs_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-rpcs?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:rpc","conformance-type":"import"},{"name":"ietf-netconf-acm_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-netconf-acm?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-acm","conformance-type":"import"},{"name":"iana-crypt-hash_2014-08-06","revision":"2014-08-06","schema":"/rests/modules/iana-crypt-hash?revision=2014-08-06","namespace":"urn:ietf:params:xml:ns:yang:iana-crypt-hash","conformance-type":"import","feature":["crypt-hash-sha-512","crypt-hash-sha-256","crypt-hash-md5"]},{"name":"openflow-extensible-match_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-extensible-match?revision=2015-02-25","namespace":"urn:opendaylight:openflow:oxm","conformance-type":"import"}],"module-set-id":"2"}}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:58.614826" elapsed="0.006397"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:58.614335" elapsed="0.006924"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:58.614278" elapsed="0.007006"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:58.623699" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:58.621560" elapsed="0.002185"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:58.621340" elapsed="0.002439"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:58.621323" elapsed="0.002480"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:58.624376" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:58.623964" elapsed="0.000439"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:58.624705" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:58.624472" elapsed="0.000290"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:58.625263" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:58.624949" elapsed="0.000340"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:58.624785" elapsed="0.000539"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:58.624454" elapsed="0.000891"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:58.625858" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:58.625500" elapsed="0.000385"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:58.626198" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:58.625953" elapsed="0.000303"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:58.626731" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:58.626438" elapsed="0.000319"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:58.626280" elapsed="0.000512"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:58.625936" elapsed="0.000877"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:51:58.626958" elapsed="0.000356"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:51:58.627772" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:58.627486" elapsed="0.000313"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:51:58.627957" elapsed="0.002161"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:51:58.613335" elapsed="0.016860"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:51:58.630369" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:51:58.630264" elapsed="0.000149"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:58.630246" elapsed="0.000189"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:51:58.638589" level="INFO">${text_normalized} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:51:58.630575" elapsed="0.008045"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:51:58.638673" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:51:58.638831" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:51:58.592827" elapsed="0.046030"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:51:58.638919" elapsed="0.000026"/>
</return>
<msg time="2026-04-08T00:51:58.639292" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="PASS" start="2026-04-08T00:51:58.502510" elapsed="0.136821"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Json_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:58.639798" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:58.639459" elapsed="0.000456"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:58.639427" elapsed="0.000530"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:51:58.640017" elapsed="0.000070"/>
</return>
<arg>session=${session}</arg>
<arg>folder=${RESTCONF_MODULES_DIR}</arg>
<arg>verify=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Add arguments sensible for JSON data, return Get_Templated response text.
Optionally, verification against JSON data (may be iterated) is called.
Only subset of JSON data is verified and returned if JMES path is specified in
file ${folder}/jmespath.expr.</doc>
<status status="PASS" start="2026-04-08T00:51:58.496812" elapsed="0.143487"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:58.492498" elapsed="0.147914"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:58.492470" elapsed="0.147968"/>
</if>
<kw name="Resolve_Shard_Type_Class" owner="ClusterManagement">
<if>
<branch type="IF" condition="'${shard_type}' == 'config'">
<return>
<value>DistributedConfigDatastore</value>
<status status="PASS" start="2026-04-08T00:51:58.641338" elapsed="0.000072"/>
</return>
<status status="PASS" start="2026-04-08T00:51:58.641095" elapsed="0.000363"/>
</branch>
<branch type="ELSE IF" condition="'${shard_type}' == 'operational'">
<return>
<value>DistributedOperationalDatastore</value>
<status status="NOT RUN" start="2026-04-08T00:51:58.641605" elapsed="0.000045"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:51:58.641518" elapsed="0.000173"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:58.641062" elapsed="0.000687"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized shard type: ${shard_type}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:58.641976" elapsed="0.000067"/>
</kw>
<msg time="2026-04-08T00:51:58.642196" level="INFO">${type_class} = DistributedConfigDatastore</msg>
<var>${type_class}</var>
<arg>shard_type=${shard_type}</arg>
<doc>Simple lookup for class name corresponding to desired type.</doc>
<status status="PASS" start="2026-04-08T00:51:58.640695" elapsed="0.001528"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:58.643052" level="INFO">${cluster_index} = 1</msg>
<var>${cluster_index}</var>
<arg>${member_index}+${NODE_ROLE_INDEX_START}-1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:58.642393" elapsed="0.000690"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:58.644250" level="INFO">${uri} = jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-default-config,type=DistributedConfigDatastore</msg>
<var>${uri}</var>
<arg>${JOLOKIA_READ_URI}:Category=Shards,name=member-${cluster_index}-shard-${shard_name}-${shard_type},type=${type_class}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:58.643268" elapsed="0.001011"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:58.651188" level="INFO">jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-default-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:58.650875" elapsed="0.000400"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:58.651797" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:58.651518" elapsed="0.000362"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:51:58.659491" level="INFO">GET Request : url=http://10.30.170.48:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-default-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-default-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:51:58.659549" level="INFO">GET Response : url=http://10.30.170.48:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-default-config,type=DistributedConfigDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Wed, 08 Apr 2026 00:51:58 GMT', 'Expires': 'Tue, 07 Apr 2026 23:51:58 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-1-shard-default-config,type=DistributedConfigDatastore","type":"read"},"value":{"ReadWriteTransactionCount":21,"SnapshotIndex":73,"InMemoryJournalLogSize":1,"ReplicatedToAllIndex":73,"Leader":"member-1-shard-default-config","LastIndex":74,"RaftState":"Leader","LastApplied":74,"LastCommittedTransactionTime":"2026-04-08 00:46:46.951","PeerAddresses":"member-3-shard-default-config: pekko:\/\/opendaylight-cluster-data@10.30.171.110:2550\/user\/shardmanager-config\/member-3-shard-default-config, member-2-shard-default-config: pekko:\/\/opendaylight-cluster-data@10.30.170.131:2550\/user\/shardmanager-config\/member-2-shard-default-config","LastLogIndex":74,"LastLeadershipChangeTime":"2026-04-08 00:46:45.929","FollowerInitialSyncStatus":false,"FollowerInfo":[{"timeSinceLastActivity":"00:00:00.293","active":true,"matchIndex":74,"voting":true,"id":"member-3-shard-default-config","nextIndex":75},{"timeSinceLastActivity":"00:00:00.294","active":true,"matchIndex":74,"voting":true,"id":"member-2-shard-default-config","nextIndex":75}],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"325.2 μs","CurrentTerm":2,"LastTerm":2,"FailedTransactionsCount":3,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-default-config","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":7,"TxCohortCacheSize":0,"PeerVotingStates":"member-3-shard-default-config: true, member-2-shard-default-config: true","LastLogTerm":2,"StatRetrievalError":null,"CommitIndex":74,"SnapshotTerm":2,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":18,"ShardName":"member-1-shard-default-config","LeadershipChangeCount":1,"InMemoryJournalDataSize":10675},"timestamp":1775609518,"status":200} 
 </msg>
<msg time="2026-04-08T00:51:58.659653" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:51:58.654067" elapsed="0.005611"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:58.652025" elapsed="0.007695"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:58.659927" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:58.659767" elapsed="0.000223"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:58.651979" elapsed="0.008048"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:58.663542" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-1-shard-default-config,type=DistributedConfigDatastore","type":"read"},"value":{"ReadWriteTransactionCount":21,"SnapshotIndex":73,"InMemoryJournalLogSize":1,"ReplicatedToAllIndex":73,"Leader":"member-1-shard-default-config","LastIndex":74,"RaftState":"Leader","LastApplied":74,"LastCommittedTransactionTime":"2026-04-08 00:46:46.951","PeerAddresses":"member-3-shard-default-config: pekko:\/\/opendaylight-cluster-data@10.30.171.110:2550\/user\/shardmanager-config\/member-3-shard-default-config, member-2-shard-default-config: pekko:\/\/opendaylight-cluster-data@10.30.170.131:2550\/user\/shardmanager-config\/member-2-shard-default-config","LastLogIndex":74,"LastLeadershipChangeTime":"2026-04-08 00:46:45.929","FollowerInitialSyncStatus":false,"FollowerInfo":[{"timeSinceLastActivity":"00:00:00.293","active":true,"matchIndex":74,"voting":true,"id":"member-3-shard-default-config","nextIndex":75},{"timeSinceLastActivity":"00:00:00.294","active":true,"matchIndex":74,"voting":true,"id":"member-2-shard-default-config","nextIndex":75}],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"325.2 μs","CurrentTerm":2,"LastTerm":2,"FailedTransactionsCount":3,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-default-config","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":7,"TxCohortCacheSize":0,"PeerVotingStates":"member-3-shard-default-config: true, member-2-shard-default-config: true","LastLogTerm":2,"StatRetrievalError":null,"CommitIndex":74,"SnapshotTerm":2,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":18,"ShardName":"member-1-shard-default-config","LeadershipChangeCount":1,"InMemoryJournalDataSize":10675},"timestamp":1775609518,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:58.661117" elapsed="0.002486"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:58.660901" elapsed="0.002736"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:58.660882" elapsed="0.002780"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:58.666100" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:58.663938" elapsed="0.002239"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:58.663719" elapsed="0.002494"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:58.663702" elapsed="0.002535"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:58.666762" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:58.666396" elapsed="0.000393"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:58.667216" elapsed="0.000032"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:58.666860" elapsed="0.000437"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:58.668008" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:58.667552" elapsed="0.000493"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:58.667330" elapsed="0.000764"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:58.666842" elapsed="0.001281"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:58.668859" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:58.668360" elapsed="0.000536"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:58.669335" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:58.668992" elapsed="0.000424"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:58.670093" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:58.669670" elapsed="0.000477"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:58.669449" elapsed="0.000766"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:58.668967" elapsed="0.001278"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:51:58.670460" elapsed="0.000482"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:51:58.671565" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:58.671189" elapsed="0.000412"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:51:58.671812" elapsed="0.003021"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:51:58.660485" elapsed="0.014434"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:51:58.675316" elapsed="0.000020"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:51:58.675132" elapsed="0.000246"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:58.675069" elapsed="0.000363"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:51:58.679236" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-1-shard-default-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 17756095...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:51:58.675754" elapsed="0.003536"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:51:58.679372" elapsed="0.000066"/>
</return>
<msg time="2026-04-08T00:51:58.679762" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-1-shard-default-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 17756095...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:51:58.645885" elapsed="0.033967"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:51:58.679954" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:51:58.680247" level="INFO">${data_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-1-shard-default-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 17756095...</msg>
<var>${data_text}</var>
<arg>uri=${uri}</arg>
<arg>session=${session}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-08T00:51:58.644494" elapsed="0.035780"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:58.682436" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-1-shard-default-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1775609518, 'value'...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:58.681331" elapsed="0.001197"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-08T00:51:58.682611" elapsed="0.000031"/>
</return>
<msg time="2026-04-08T00:51:58.682906" level="INFO">${data_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-1-shard-default-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1775609518, 'value'...</msg>
<var>${data_object}</var>
<arg>${data_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-08T00:51:58.680506" elapsed="0.002428"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:51:58.683423" level="INFO">${value} = {'AbortTransactionsCount': 0, 'CommitIndex': 74, 'CommittedTransactionsCount': 7, 'CurrentTerm': 2, 'FailedReadTransactionsCount': 0, 'FailedTransactionsCount': 3, 'FollowerInfo': [{'active': True, 'i...</msg>
<var>${value}</var>
<arg>${data_object}</arg>
<arg>value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:51:58.683091" elapsed="0.000359"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:51:58.683983" level="INFO">${raft_property} = Leader</msg>
<var>${raft_property}</var>
<arg>${value}</arg>
<arg>${property}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:51:58.683607" elapsed="0.000402"/>
</kw>
<return>
<value>${raft_property}</value>
<status status="PASS" start="2026-04-08T00:51:58.684056" elapsed="0.000046"/>
</return>
<msg time="2026-04-08T00:51:58.684257" level="INFO">${raft_state} = Leader</msg>
<var>${raft_state}</var>
<arg>RaftState</arg>
<arg>${shard_name}</arg>
<arg>${shard_type}</arg>
<arg>${member_index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft property.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T00:51:58.489760" elapsed="0.194523"/>
</kw>
<return>
<value>${raft_state}</value>
<status status="PASS" start="2026-04-08T00:51:58.684341" elapsed="0.000026"/>
</return>
<msg time="2026-04-08T00:51:58.684513" level="INFO">${raft_state} = Leader</msg>
<var>${raft_state}</var>
<arg>shard_name=${shard_name}</arg>
<arg>shard_type=${ds_type}</arg>
<arg>member_index=${index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft status.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T00:51:58.488986" elapsed="0.195554"/>
</kw>
<if>
<branch type="IF" condition="'Follower' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${follower_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:58.684835" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:58.684620" elapsed="0.000272"/>
</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="PASS" start="2026-04-08T00:51:58.685122" elapsed="0.000224"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:58.684916" elapsed="0.000468"/>
</branch>
<branch type="ELSE IF" condition="${validate}">
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized Raft state: ${raft_state}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:58.685552" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:58.685408" elapsed="0.000196"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:58.684602" elapsed="0.001024"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T00:51:58.488825" elapsed="0.196825"/>
</iter>
<iter>
<kw name="Get_Raft_State_Of_Shard_At_Member" owner="ClusterManagement">
<kw name="Get_Raft_Property_From_Shard_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:58.690242" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:58.687962" elapsed="0.002371"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:51:58.690413" elapsed="0.000031"/>
</return>
<msg time="2026-04-08T00:51:58.690679" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:51:58.687429" elapsed="0.003277"/>
</kw>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Get_As_Json_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:58.738813" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:58.738434" elapsed="0.000408"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:51:58.739702" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:51:58.739435" elapsed="0.000341">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-08T00:51:58.739869" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:51:58.739002" elapsed="0.000892"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:51:58.740469" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:51:58.740058" elapsed="0.000438"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T00:51:58.740795" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-08T00:51:58.740958" level="INFO">${template} = /rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T00:51:58.740656" elapsed="0.000329"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:58.741405" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:58.741141" elapsed="0.000311"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:58.742416" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:58.742137" elapsed="0.000324"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-08T00:51:58.742890" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-08T00:51:58.742619" elapsed="0.000298"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:58.743275" elapsed="0.000024"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:58.743485" elapsed="0.000025"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:58.743660" elapsed="0.000022"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-08T00:51:58.743108" elapsed="0.000610"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-08T00:51:58.742966" elapsed="0.000782"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-08T00:51:58.743793" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:51:58.743955" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-08T00:51:58.741816" elapsed="0.002165"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:58.741525" elapsed="0.002489"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:58.744201" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:58.744039" elapsed="0.000219"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:58.741505" elapsed="0.002774"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:58.744857" level="INFO">${final_text} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:58.744421" elapsed="0.000467"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T00:51:58.744938" 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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="PASS" start="2026-04-08T00:51:58.737810" elapsed="0.007251"/>
</kw>
<msg time="2026-04-08T00:51:58.745115" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:51:58.726014" elapsed="0.019168"/>
</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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:58.757071" 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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:58.768809" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:58.780426" elapsed="0.000027"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:58.780622" elapsed="0.000021"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:58.780796" elapsed="0.000021"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:58.781177" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:58.781017" elapsed="0.000218"/>
</branch>
<status status="NOT RUN" start="2026-04-08T00:51:58.781002" elapsed="0.000256"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:58.781399" elapsed="0.000021"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:58.781567" elapsed="0.000020"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:58.781733" elapsed="0.000033"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-08T00:51:58.780971" elapsed="0.000829"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-08T00:51:58.780871" elapsed="0.000955"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:58.781972" elapsed="0.000021"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-08T00:51:58.782048" elapsed="0.000016"/>
</return>
<msg time="2026-04-08T00:51:58.782196" level="INFO">${uri} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-08T00:51:58.721975" elapsed="0.060249"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:51:58.783493" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:51:58.783242" elapsed="0.000321">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-08T00:51:58.783654" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:51:58.782883" elapsed="0.000796"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:58.783999" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:58.783749" elapsed="0.000306"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:58.784566" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:58.784273" elapsed="0.000319"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:58.784079" elapsed="0.000546"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:58.783730" elapsed="0.000917"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:51:58.786886" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:51:58.784797" elapsed="0.002116"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-08T00:51:58.786963" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:51:58.787115" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:51:58.782543" elapsed="0.004597"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:51:58.788400" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:51:58.788146" elapsed="0.000318">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-08T00:51:58.788555" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:51:58.787812" elapsed="0.000768"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-08T00:51:58.788785" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-08T00:51:58.788650" elapsed="0.000194"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:58.788632" elapsed="0.000236"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:58.789013" elapsed="0.000022"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:58.789201" elapsed="0.000022"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-08T00:51:58.789268" elapsed="0.000016"/>
</return>
<msg time="2026-04-08T00:51:58.791227" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:51:58.787452" elapsed="0.003803"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:58.792639" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:58.792389" elapsed="0.000296"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:58.793076" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:58.792836" elapsed="0.000283"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:51:58.810728" level="INFO">GET Request : url=http://10.30.170.131:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 path_url=/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node012m0dyuink19r12kj250j53usg1.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:51:58.811697" level="INFO">GET Response : url=http://10.30.170.131:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Transfer-Encoding': 'chunked'} 
 body={"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","hidden-symmetric-keys","encrypted-private-keys","asymmetrically-encrypted-value-format","cms-encrypted-data-format","cleartext-private-keys","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["ssh-client-keepalives","client-ident-hostbased","client-ident-publickey","client-ident-password"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-ex... (set the log level to DEBUG or TRACE to see the full content) 
 </msg>
<msg time="2026-04-08T00:51:58.812203" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:51:58.795150" elapsed="0.017118"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:58.793203" elapsed="0.019163"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:58.812826" elapsed="0.000054"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:58.812426" elapsed="0.000552"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:58.793182" elapsed="0.019844"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:58.821119" level="INFO">{"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","hidden-symmetric-keys","encrypted-private-keys","asymmetrically-encrypted-value-format","cms-encrypted-data-format","cleartext-private-keys","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["ssh-client-keepalives","client-ident-hostbased","client-ident-publickey","client-ident-password"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-experimenter-types?revision=2015-10-20","namespace":"urn:opendaylight:openflowplugin:experimenter:types","conformance-type":"import"},{"name":"ietf-ip_2018-02-22","revision":"2018-02-22","schema":"/rests/modules/ietf-ip?revision=2018-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-ip","conformance-type":"import","feature":["ipv6-privacy-autoconf","ipv4-non-contiguous-netmasks"]},{"name":"ietf-tcp-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-client","conformance-type":"import","feature":["local-binding-supported","tcp-client-keepalives"]},{"name":"node-config_2014-10-15","revision":"2014-10-15","schema":"/rests/modules/node-config?revision=2014-10-15","namespace":"urn:opendaylight:module:config","conformance-type":"import"},{"name":"ietf-restconf_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf","conformance-type":"import"},{"name":"ietf-datastores_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-datastores?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-datastores","conformance-type":"import"},{"name":"ietf-yang-patch_2017-02-22","revision":"2017-02-22","schema":"/rests/modules/ietf-yang-patch?revision=2017-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-patch","conformance-type":"import"},{"name":"sal-group_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-group?revision=2013-09-18","namespace":"urn:opendaylight:group:service","conformance-type":"import"},{"name":"odl-codegen-extensions_2024-06-27","revision":"2024-06-27","schema":"/rests/modules/odl-codegen-extensions?revision=2024-06-27","namespace":"urn:opendaylight:yang:extension:codegen","conformance-type":"import"},{"name":"sal-meter_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-meter?revision=2013-09-18","namespace":"urn:opendaylight:meter:service","conformance-type":"import"},{"name":"ietf-interfaces_2018-02-20","revision":"2018-02-20","schema":"/rests/modules/ietf-interfaces?revision=2018-02-20","namespace":"urn:ietf:params:xml:ns:yang:ietf-interfaces","conformance-type":"import","feature":["pre-provisioning","if-mib","arbitrary-names"]},{"name":"opendaylight-l2-types_2013-08-27","revision":"2013-08-27","schema":"/rests/modules/opendaylight-l2-types?revision=2013-08-27","namespace":"urn:opendaylight:l2:types","conformance-type":"import"},{"name":"opendaylight-flow-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-flow-types?revision=2013-10-26","namespace":"urn:opendaylight:flow:types","conformance-type":"import"},{"name":"lldp-speaker-config_2016-05-12","revision":"2016-05-12","schema":"/rests/modules/lldp-speaker-config?revision=2016-05-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker:config","conformance-type":"import"},{"name":"aaa-cert_2015-11-26","revision":"2015-11-26","schema":"/rests/modules/aaa-cert?revision=2015-11-26","namespace":"urn:opendaylight:yang:aaa:cert","conformance-type":"import"},{"name":"openflow-action_2015-02-03","revision":"2015-02-03","schema":"/rests/modules/openflow-action?revision=2015-02-03","namespace":"urn:opendaylight:openflow:common:action","conformance-type":"import"},{"name":"openflow-approved-extensions_2016-08-02","revision":"2016-08-02","schema":"/rests/modules/openflow-approved-extensions?revision=2016-08-02","namespace":"urn:opendaylight:openflow:approved:extensions","conformance-type":"import"},{"name":"nc-notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/nc-notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netmod:notification","conformance-type":"import"},{"name":"ietf-netconf-nmda_2019-01-07","revision":"2019-01-07","schema":"/rests/modules/ietf-netconf-nmda?revision=2019-01-07","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-nmda","conformance-type":"import","feature":["with-defaults","origin"]},{"name":"ietf-tcp-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-common","conformance-type":"import","feature":["keepalives-supported"]},{"name":"network-topology_2013-10-21","revision":"2013-10-21","schema":"/rests/modules/network-topology?revision=2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:network-topology","conformance-type":"import"},{"name":"aaa-encrypt-service-config_2024-02-02","revision":"2024-02-02","schema":"/rests/modules/aaa-encrypt-service-config?revision=2024-02-02","namespace":"config:aaa:authn:encrypt:service:config","conformance-type":"import"},{"name":"openflow-instruction_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-instruction?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:instruction","conformance-type":"import"},{"name":"ietf-tls-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-client","conformance-type":"import","feature":["client-ident-x509-cert","server-auth-x509-cert"]},{"name":"opendaylight-group-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-group-statistics?revision=2013-11-11","namespace":"urn:opendaylight:group:statistics","conformance-type":"import"},{"name":"cluster-admin_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/cluster-admin?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:cluster:admin","conformance-type":"import"},{"name":"opendaylight-flow-statistics_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-flow-statistics?revision=2013-08-19","namespace":"urn:opendaylight:flow:statistics","conformance-type":"import"},{"name":"opendaylight-table-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-table-types?revision=2013-10-26","namespace":"urn:opendaylight:table:types","conformance-type":"import"},{"name":"forwarding-rules-manager-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/forwarding-rules-manager-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:forwardingrules-manager:config","conformance-type":"import"},{"name":"odl-srm-types_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-types?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:types","conformance-type":"import"},{"name":"ietf-x509-cert-to-name_2014-12-10","revision":"2014-12-10","schema":"/rests/modules/ietf-x509-cert-to-name?revision=2014-12-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-x509-cert-to-name","conformance-type":"import"},{"name":"flow-node-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-node-inventory?revision=2013-08-19","namespace":"urn:opendaylight:flow:inventory","conformance-type":"import"},{"name":"flow-errors_2013-11-16","revision":"2013-11-16","schema":"/rests/modules/flow-errors?revision=2013-11-16","namespace":"urn:opendaylight:flow:errors","conformance-type":"import"},{"name":"ietf-netconf_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:netconf:base:1.0","conformance-type":"import","feature":["xpath","url","rollback-on-error","validate","startup","candidate","confirmed-commit","writable-running"]},{"name":"iana-ssh-public-key-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-public-key-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-public-key-algs","conformance-type":"import"},{"name":"aaa-cert-mdsal_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/aaa-cert-mdsal?revision=2016-03-21","namespace":"urn:opendaylight:yang:aaa:cert:mdsal","conformance-type":"import"},{"name":"odl-device-notification_2024-02-18","revision":"2024-02-18","schema":"/rests/modules/odl-device-notification?revision=2024-02-18","namespace":"urn:opendaylight:device:notification","conformance-type":"import"},{"name":"ietf-origin_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-origin?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-origin","conformance-type":"import"},{"name":"openflow-augments_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-augments?revision=2015-02-25","namespace":"urn:opendaylight:openflow:augments","conformance-type":"import"},{"name":"iana-ssh-encryption-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-encryption-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-encryption-algs","conformance-type":"import"},{"name":"ietf-truststore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-truststore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-truststore","conformance-type":"import","feature":["inline-definitions-supported"]},{"name":"distributed-datastore-provider_2025-01-30","revision":"2025-01-30","schema":"/rests/modules/distributed-datastore-provider?revision=2025-01-30","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:distributed-datastore-provider","conformance-type":"import"},{"name":"opendaylight-group-types_2013-10-18","revision":"2013-10-18","schema":"/rests/modules/opendaylight-group-types?revision=2013-10-18","namespace":"urn:opendaylight:group:types","conformance-type":"import"},{"name":"sal-remote-augment_2023-11-03","revision":"2023-11-03","schema":"/rests/modules/sal-remote-augment?revision=2023-11-03","namespace":"urn:sal:restconf:event:subscription","conformance-type":"import"},{"name":"opendaylight-ipv6-arbitrary-bitmask-fields_2016-02-24","revision":"2016-02-24","schema":"/rests/modules/opendaylight-ipv6-arbitrary-bitmask-fields?revision=2016-02-24","namespace":"urn:opendaylight:opendaylight-ipv6-arbitrary-bitmask-fields","conformance-type":"import"},{"name":"sal-flows-batch_2016-03-14","revision":"2016-03-14","schema":"/rests/modules/sal-flows-batch?revision=2016-03-14","namespace":"urn:opendaylight:flows:service","conformance-type":"import"},{"name":"ietf-tls-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-common","conformance-type":"import","feature":["tls12","hello-params","tls13"]},{"name":"openflow-types_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-types?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:types","conformance-type":"import"},{"name":"ietf-netconf-with-defaults_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf-with-defaults?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults","conformance-type":"import"},{"name":"odl-srm-ops_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-ops?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:ops","conformance-type":"import"},{"name":"odl-general-entity_2015-09-30","revision":"2015-09-30","schema":"/rests/modules/odl-general-entity?revision=2015-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:mdsal:core:general-entity","conformance-type":"import"},{"name":"iana-ssh-key-exchange-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-key-exchange-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-key-exchange-algs","conformance-type":"import"},{"name":"node-ssl-connection-error_2019-07-23","revision":"2019-07-23","schema":"/rests/modules/node-ssl-connection-error?revision=2019-07-23","namespace":"urn:opendaylight:node-ssl-connection-error:service","conformance-type":"import"},{"name":"openflow-protocol_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-protocol?revision=2013-07-31","namespace":"urn:opendaylight:openflow:protocol","conformance-type":"import"},{"name":"ietf-udp-server_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-server?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-server","conformance-type":"import"},{"name":"ietf-keystore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-keystore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-keystore","conformance-type":"import","feature":["asymmetric-keys","inline-definitions-supported"]},{"name":"aaa_2016-12-14","revision":"2016-12-14","schema":"/rests/modules/aaa?revision=2016-12-14","namespace":"urn:opendaylight:params:xml:ns:yang:aaa","conformance-type":"import"},{"name":"aaa-cert-rpc_2015-12-15","revision":"2015-12-15","schema":"/rests/modules/aaa-cert-rpc?revision=2015-12-15","namespace":"urn:opendaylight:yang:aaa:cert:rpc","conformance-type":"import"},{"name":"system-notifications_2013-09-27","revision":"2013-09-27","schema":"/rests/modules/system-notifications?revision=2013-09-27","namespace":"urn:opendaylight:openflow:system","conformance-type":"import"},{"name":"sal-flat-batch_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/sal-flat-batch?revision=2016-03-21","namespace":"urn:opendaylight:flat-batch:service","conformance-type":"import"},{"name":"notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netconf:notification:1.0","conformance-type":"import"},{"name":"sal-remote_2014-01-14","revision":"2014-01-14","schema":"/rests/modules/sal-remote?revision=2014-01-14","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:remote","conformance-type":"import"},{"name":"yang-ext_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/yang-ext?revision=2013-07-09","namespace":"urn:opendaylight:yang:extension:yang-ext","conformance-type":"import"},{"name":"opendaylight-multipart-types_2017-01-12","revision":"2017-01-12","schema":"/rests/modules/opendaylight-multipart-types?revision=2017-01-12","namespace":"urn:opendaylight:multipart:types","conformance-type":"import"},{"name":"opendaylight-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-inventory?revision=2013-08-19","namespace":"urn:opendaylight:inventory","conformance-type":"import"},{"name":"sal-queue_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-queue?revision=2015-03-05","namespace":"urn:opendaylight:queue:service","conformance-type":"import"},{"name":"sal-groups-batch_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/sal-groups-batch?revision=2016-03-15","namespace":"urn:opendaylight:groups:service","conformance-type":"import"},{"name":"arbitrator-reconcile_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/arbitrator-reconcile?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:arbitrator-reconcile:service","conformance-type":"import"},{"name":"ietf-yang-metadata_2016-08-05","revision":"2016-08-05","schema":"/rests/modules/ietf-yang-metadata?revision=2016-08-05","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-metadata","conformance-type":"import"},{"name":"opendaylight-arbitrary-bitmask-fields_2016-01-30","revision":"2016-01-30","schema":"/rests/modules/opendaylight-arbitrary-bitmask-fields?revision=2016-01-30","namespace":"urn:opendaylight:arbitrary:bitmask:fields","conformance-type":"import"},{"name":"ietf-udp-client_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-client?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-client","conformance-type":"import","feature":["local-binding"]},{"name":"opendaylight-meter-types_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/opendaylight-meter-types?revision=2013-09-18","namespace":"urn:opendaylight:meter:types","conformance-type":"import"},{"name":"opendaylight-action-types_2013-11-12","revision":"2013-11-12","schema":"/rests/modules/opendaylight-action-types?revision=2013-11-12","namespace":"urn:opendaylight:action:types","conformance-type":"import"},{"name":"sal-role_2015-07-27","revision":"2015-07-27","schema":"/rests/modules/sal-role?revision=2015-07-27","namespace":"urn:opendaylight:role:service","conformance-type":"import"},{"name":"openflow-provider-config_2016-05-10","revision":"2016-05-10","schema":"/rests/modules/openflow-provider-config?revision=2016-05-10","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:provider:config","conformance-type":"import"},{"name":"odl-serviceutils-upgrade_2018-07-02","revision":"2018-07-02","schema":"/rests/modules/odl-serviceutils-upgrade?revision=2018-07-02","namespace":"urn:opendaylight:serviceutils:upgrade","conformance-type":"import"},{"name":"opendaylight-match-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-match-types?revision=2013-10-26","namespace":"urn:opendaylight:model:match:types","conformance-type":"import"},{"name":"ietf-restconf-server_2024-08-14","revision":"2024-08-14","schema":"/rests/modules/ietf-restconf-server?revision=2024-08-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-server","conformance-type":"import","feature":["http-listen","https-listen"]},{"name":"reconciliation-result-state_2017-07-13","revision":"2017-07-13","schema":"/rests/modules/reconciliation-result-state?revision=2017-07-13","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:rf:state","conformance-type":"import"},{"name":"onf-extensions_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/onf-extensions?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf","conformance-type":"import"},{"name":"sal-table_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/sal-table?revision=2013-10-26","namespace":"urn:opendaylight:table:service","conformance-type":"import"},{"name":"iana-http-versions_2026-02-04","revision":"2026-02-04","schema":"/rests/modules/iana-http-versions?revision=2026-02-04","namespace":"urn:ietf:params:xml:ns:yang:iana-http-versions","conformance-type":"import"},{"name":"opendaylight-direct-statistics_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/opendaylight-direct-statistics?revision=2016-05-11","namespace":"urn:opendaylight:direct:statistics","conformance-type":"import"},{"name":"opendaylight-port-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-port-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:port","conformance-type":"import"},{"name":"sal-async-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/sal-async-config?revision=2017-06-19","namespace":"urn:opendaylight:async-config:service","conformance-type":"import"},{"name":"aaa-password-service-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-password-service-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:password:service:config","conformance-type":"import"},{"name":"ietf-yang-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-yang-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-types","conformance-type":"import"},{"name":"opendaylight-queue-statistics_2013-12-16","revision":"2013-12-16","schema":"/rests/modules/opendaylight-queue-statistics?revision=2013-12-16","namespace":"urn:opendaylight:queue:statistics","conformance-type":"import"},{"name":"sal-bundle_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/sal-bundle?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf:bundle:service","conformance-type":"import"},{"name":"ietf-restconf-subscribed-notifications_2019-11-17","revision":"2019-11-17","schema":"/rests/modules/ietf-restconf-subscribed-notifications?revision=2019-11-17","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-subscribed-notifications","conformance-type":"import"},{"name":"sal-meters-batch_2016-03-16","revision":"2016-03-16","schema":"/rests/modules/sal-meters-batch?revision=2016-03-16","namespace":"urn:opendaylight:meters:service","conformance-type":"import"},{"name":"odl-entity-owners","revision":"","schema":"/rests/modules/odl-entity-owners","namespace":"urn:opendaylight:params:xml:ns:yang:controller:entity-owners","conformance-type":"import"},{"name":"sal-experimenter-mp-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-mp-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-mp-message:service","conformance-type":"import"},{"name":"packet-processing_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/packet-processing?revision=2013-07-09","namespace":"urn:opendaylight:packet:service","conformance-type":"import"},{"name":"openflow-configuration_2014-06-30","revision":"2014-06-30","schema":"/rests/modules/openflow-configuration?revision=2014-06-30","namespace":"urn:opendaylight:openflow:config","conformance-type":"import"},{"name":"odl-srm-rpcs_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-rpcs?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:rpc","conformance-type":"import"},{"name":"ietf-netconf-acm_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-netconf-acm?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-acm","conformance-type":"import"},{"name":"iana-crypt-hash_2014-08-06","revision":"2014-08-06","schema":"/rests/modules/iana-crypt-hash?revision=2014-08-06","namespace":"urn:ietf:params:xml:ns:yang:iana-crypt-hash","conformance-type":"import","feature":["crypt-hash-sha-512","crypt-hash-sha-256","crypt-hash-md5"]},{"name":"openflow-extensible-match_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-extensible-match?revision=2015-02-25","namespace":"urn:opendaylight:openflow:oxm","conformance-type":"import"}],"module-set-id":"2"}}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:58.815377" elapsed="0.006085"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:58.814845" elapsed="0.006654"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:58.814801" elapsed="0.006723"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:58.823968" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:58.821807" elapsed="0.002208"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:58.821581" elapsed="0.002468"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:58.821564" elapsed="0.002509"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:58.824642" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:58.824256" elapsed="0.000413"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:58.824979" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:58.824740" elapsed="0.000298"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:58.825540" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:58.825237" elapsed="0.000329"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:58.825061" elapsed="0.000541"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:58.824721" elapsed="0.000902"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:58.826140" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:58.825781" elapsed="0.000401"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:58.826488" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:58.826254" elapsed="0.000292"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:58.827026" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:58.826730" elapsed="0.000322"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:58.826569" elapsed="0.000518"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:58.826235" elapsed="0.000873"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:51:58.827272" elapsed="0.000349"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:51:58.828084" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:58.827785" elapsed="0.000325"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:51:58.828286" elapsed="0.002187"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:51:58.813851" elapsed="0.016684"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:51:58.830710" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:51:58.830605" elapsed="0.000150"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:58.830587" elapsed="0.000190"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:51:58.838990" level="INFO">${text_normalized} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:51:58.830921" elapsed="0.008100"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:51:58.839073" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:51:58.839248" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:51:58.791559" elapsed="0.047716"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:51:58.839338" elapsed="0.000027"/>
</return>
<msg time="2026-04-08T00:51:58.839678" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="PASS" start="2026-04-08T00:51:58.700534" elapsed="0.139181"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Json_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:58.840212" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:58.839841" elapsed="0.000491"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:58.839809" elapsed="0.000564"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:51:58.840432" elapsed="0.000072"/>
</return>
<arg>session=${session}</arg>
<arg>folder=${RESTCONF_MODULES_DIR}</arg>
<arg>verify=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Add arguments sensible for JSON data, return Get_Templated response text.
Optionally, verification against JSON data (may be iterated) is called.
Only subset of JSON data is verified and returned if JMES path is specified in
file ${folder}/jmespath.expr.</doc>
<status status="PASS" start="2026-04-08T00:51:58.694948" elapsed="0.145747"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:58.690775" elapsed="0.150028"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:58.690756" elapsed="0.150075"/>
</if>
<kw name="Resolve_Shard_Type_Class" owner="ClusterManagement">
<if>
<branch type="IF" condition="'${shard_type}' == 'config'">
<return>
<value>DistributedConfigDatastore</value>
<status status="PASS" start="2026-04-08T00:51:58.841727" elapsed="0.000071"/>
</return>
<status status="PASS" start="2026-04-08T00:51:58.841506" elapsed="0.000341"/>
</branch>
<branch type="ELSE IF" condition="'${shard_type}' == 'operational'">
<return>
<value>DistributedOperationalDatastore</value>
<status status="NOT RUN" start="2026-04-08T00:51:58.841992" elapsed="0.000047"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:51:58.841906" elapsed="0.000174"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:58.841474" elapsed="0.000665"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized shard type: ${shard_type}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:58.842383" elapsed="0.000066"/>
</kw>
<msg time="2026-04-08T00:51:58.842585" level="INFO">${type_class} = DistributedConfigDatastore</msg>
<var>${type_class}</var>
<arg>shard_type=${shard_type}</arg>
<doc>Simple lookup for class name corresponding to desired type.</doc>
<status status="PASS" start="2026-04-08T00:51:58.841091" elapsed="0.001520"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:58.843461" level="INFO">${cluster_index} = 2</msg>
<var>${cluster_index}</var>
<arg>${member_index}+${NODE_ROLE_INDEX_START}-1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:58.842781" elapsed="0.000709"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:58.844634" level="INFO">${uri} = jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-default-config,type=DistributedConfigDatastore</msg>
<var>${uri}</var>
<arg>${JOLOKIA_READ_URI}:Category=Shards,name=member-${cluster_index}-shard-${shard_name}-${shard_type},type=${type_class}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:58.843646" elapsed="0.001016"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:58.851697" level="INFO">jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-default-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:58.851407" elapsed="0.000376"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:58.852328" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:58.852028" elapsed="0.000388"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:51:58.859888" level="INFO">GET Request : url=http://10.30.170.131:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-default-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-default-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:51:58.859945" level="INFO">GET Response : url=http://10.30.170.131:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-default-config,type=DistributedConfigDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Wed, 08 Apr 2026 00:51:58 GMT', 'Expires': 'Tue, 07 Apr 2026 23:51:58 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-2-shard-default-config,type=DistributedConfigDatastore","type":"read"},"value":{"ReadWriteTransactionCount":0,"SnapshotIndex":73,"InMemoryJournalLogSize":1,"ReplicatedToAllIndex":73,"Leader":"member-1-shard-default-config","LastIndex":74,"RaftState":"Follower","LastCommittedTransactionTime":"1970-01-01 00:00:00.000","LastApplied":74,"PeerAddresses":"member-1-shard-default-config: pekko:\/\/opendaylight-cluster-data@10.30.170.48:2550\/user\/shardmanager-config\/member-1-shard-default-config, member-3-shard-default-config: pekko:\/\/opendaylight-cluster-data@10.30.171.110:2550\/user\/shardmanager-config\/member-3-shard-default-config","LastLogIndex":74,"LastLeadershipChangeTime":"2026-04-08 00:46:45.946","FollowerInitialSyncStatus":true,"FollowerInfo":[],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"238.6 μs","CurrentTerm":2,"LastTerm":2,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-default-config","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":0,"TxCohortCacheSize":0,"PeerVotingStates":"member-1-shard-default-config: true, member-3-shard-default-config: true","LastLogTerm":2,"StatRetrievalError":null,"CommitIndex":74,"SnapshotTerm":2,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-2-shard-default-config","LeadershipChangeCount":1,"InMemoryJournalDataSize":10675},"timestamp":1775609518,"status":200} 
 </msg>
<msg time="2026-04-08T00:51:58.860047" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:51:58.854590" elapsed="0.005482"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:58.852562" elapsed="0.007553"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:58.860332" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:58.860177" elapsed="0.000218"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:58.852516" elapsed="0.007918"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:58.863926" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-2-shard-default-config,type=DistributedConfigDatastore","type":"read"},"value":{"ReadWriteTransactionCount":0,"SnapshotIndex":73,"InMemoryJournalLogSize":1,"ReplicatedToAllIndex":73,"Leader":"member-1-shard-default-config","LastIndex":74,"RaftState":"Follower","LastCommittedTransactionTime":"1970-01-01 00:00:00.000","LastApplied":74,"PeerAddresses":"member-1-shard-default-config: pekko:\/\/opendaylight-cluster-data@10.30.170.48:2550\/user\/shardmanager-config\/member-1-shard-default-config, member-3-shard-default-config: pekko:\/\/opendaylight-cluster-data@10.30.171.110:2550\/user\/shardmanager-config\/member-3-shard-default-config","LastLogIndex":74,"LastLeadershipChangeTime":"2026-04-08 00:46:45.946","FollowerInitialSyncStatus":true,"FollowerInfo":[],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"238.6 μs","CurrentTerm":2,"LastTerm":2,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-default-config","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":0,"TxCohortCacheSize":0,"PeerVotingStates":"member-1-shard-default-config: true, member-3-shard-default-config: true","LastLogTerm":2,"StatRetrievalError":null,"CommitIndex":74,"SnapshotTerm":2,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-2-shard-default-config","LeadershipChangeCount":1,"InMemoryJournalDataSize":10675},"timestamp":1775609518,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:58.861511" elapsed="0.002516"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:58.861294" elapsed="0.002770"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:58.861275" elapsed="0.002813"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:58.866540" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:58.864386" elapsed="0.002221"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:58.864145" elapsed="0.002499"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:58.864128" elapsed="0.002540"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:58.867430" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:58.866841" elapsed="0.000627"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:58.867898" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:58.867567" elapsed="0.000411"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:58.868669" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:58.868253" elapsed="0.000453"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:58.868010" elapsed="0.000746"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:58.867541" elapsed="0.001244"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:58.869612" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:58.869006" elapsed="0.000643"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:58.870071" elapsed="0.000029"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:58.869748" elapsed="0.000402"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:58.870871" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:58.870439" elapsed="0.000477"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:58.870205" elapsed="0.000773"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:58.869722" elapsed="0.001289"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:51:58.871250" elapsed="0.000480"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:51:58.872356" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:58.871957" elapsed="0.000436"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:51:58.872603" elapsed="0.003028"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:51:58.860831" elapsed="0.014887"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:51:58.876087" elapsed="0.000020"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:51:58.875934" elapsed="0.000216"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:58.875870" elapsed="0.000364"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:51:58.879989" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-2-shard-default-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 17756095...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:51:58.876563" elapsed="0.003479"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:51:58.880123" elapsed="0.000079"/>
</return>
<msg time="2026-04-08T00:51:58.880500" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-2-shard-default-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 17756095...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:51:58.846272" elapsed="0.034321"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:51:58.880695" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:51:58.880967" level="INFO">${data_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-2-shard-default-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 17756095...</msg>
<var>${data_text}</var>
<arg>uri=${uri}</arg>
<arg>session=${session}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-08T00:51:58.844878" elapsed="0.036117"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:58.883290" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-2-shard-default-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1775609518, 'value'...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:58.882054" elapsed="0.001336"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-08T00:51:58.883509" elapsed="0.000032"/>
</return>
<msg time="2026-04-08T00:51:58.883809" level="INFO">${data_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-2-shard-default-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1775609518, 'value'...</msg>
<var>${data_object}</var>
<arg>${data_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-08T00:51:58.881238" elapsed="0.002602"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:51:58.884326" level="INFO">${value} = {'AbortTransactionsCount': 0, 'CommitIndex': 74, 'CommittedTransactionsCount': 0, 'CurrentTerm': 2, 'FailedReadTransactionsCount': 0, 'FailedTransactionsCount': 0, 'FollowerInfo': [], 'FollowerInitial...</msg>
<var>${value}</var>
<arg>${data_object}</arg>
<arg>value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:51:58.883997" elapsed="0.000357"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:51:58.884897" level="INFO">${raft_property} = Follower</msg>
<var>${raft_property}</var>
<arg>${value}</arg>
<arg>${property}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:51:58.884511" elapsed="0.000413"/>
</kw>
<return>
<value>${raft_property}</value>
<status status="PASS" start="2026-04-08T00:51:58.884971" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:51:58.885125" level="INFO">${raft_state} = Follower</msg>
<var>${raft_state}</var>
<arg>RaftState</arg>
<arg>${shard_name}</arg>
<arg>${shard_type}</arg>
<arg>${member_index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft property.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T00:51:58.686734" elapsed="0.198416"/>
</kw>
<return>
<value>${raft_state}</value>
<status status="PASS" start="2026-04-08T00:51:58.885236" elapsed="0.000027"/>
</return>
<msg time="2026-04-08T00:51:58.885384" level="INFO">${raft_state} = Follower</msg>
<var>${raft_state}</var>
<arg>shard_name=${shard_name}</arg>
<arg>shard_type=${ds_type}</arg>
<arg>member_index=${index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft status.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T00:51:58.685970" elapsed="0.199439"/>
</kw>
<if>
<branch type="IF" condition="'Follower' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${follower_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-08T00:51:58.885703" elapsed="0.000203"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:58.885489" elapsed="0.000457"/>
</branch>
<branch type="ELSE IF" condition="'Leader' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${leader_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:58.886114" elapsed="0.000034"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:58.885970" elapsed="0.000225"/>
</branch>
<branch type="ELSE IF" condition="${validate}">
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized Raft state: ${raft_state}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:58.886361" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:58.886220" elapsed="0.000193"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:58.885471" elapsed="0.000965"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T00:51:58.685803" elapsed="0.200656"/>
</iter>
<iter>
<kw name="Get_Raft_State_Of_Shard_At_Member" owner="ClusterManagement">
<kw name="Get_Raft_Property_From_Shard_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:58.889779" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:58.888828" elapsed="0.001042"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:51:58.889951" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:51:58.890243" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:51:58.888299" elapsed="0.001975"/>
</kw>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Get_As_Json_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:58.938466" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:58.938068" elapsed="0.000427"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:51:58.939251" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:51:58.938989" elapsed="0.000336">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-08T00:51:58.939418" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:51:58.938658" elapsed="0.000784"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:51:58.940000" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:51:58.939605" elapsed="0.000422"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T00:51:58.940350" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-08T00:51:58.940501" level="INFO">${template} = /rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T00:51:58.940210" elapsed="0.000358"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:58.940978" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:58.940726" elapsed="0.000297"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:58.941987" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:58.941728" elapsed="0.000304"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-08T00:51:58.942474" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-08T00:51:58.942206" elapsed="0.000294"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:58.942826" elapsed="0.000021"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:58.943027" elapsed="0.000023"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:58.943214" elapsed="0.000022"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-08T00:51:58.942693" elapsed="0.000581"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-08T00:51:58.942553" elapsed="0.000750"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-08T00:51:58.943346" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:51:58.943506" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-08T00:51:58.941409" elapsed="0.002123"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:58.941095" elapsed="0.002469"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:58.943744" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:58.943589" elapsed="0.000213"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:58.941075" elapsed="0.002747"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:58.944423" level="INFO">${final_text} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:58.943965" elapsed="0.000486"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T00:51:58.944500" 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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="PASS" start="2026-04-08T00:51:58.937457" elapsed="0.007166"/>
</kw>
<msg time="2026-04-08T00:51:58.944677" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:51:58.925680" elapsed="0.019050"/>
</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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:58.956659" elapsed="0.000032"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:58.968187" elapsed="0.000029"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:58.979721" elapsed="0.000027"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:58.979915" elapsed="0.000021"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:58.980089" elapsed="0.000021"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:58.980511" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:58.980366" elapsed="0.000201"/>
</branch>
<status status="NOT RUN" start="2026-04-08T00:51:58.980351" elapsed="0.000240"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:58.980729" elapsed="0.000021"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:58.980895" elapsed="0.000021"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:58.981061" elapsed="0.000020"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-08T00:51:58.980321" elapsed="0.000793"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-08T00:51:58.980217" elapsed="0.000923"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:58.981301" elapsed="0.000021"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-08T00:51:58.981376" elapsed="0.000016"/>
</return>
<msg time="2026-04-08T00:51:58.981492" level="INFO">${uri} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-08T00:51:58.921660" elapsed="0.059859"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:51:58.982776" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:51:58.982534" elapsed="0.000309">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-08T00:51:58.982940" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:51:58.982180" elapsed="0.000785"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:58.983297" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:58.983036" elapsed="0.000319"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:58.983841" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:58.983553" elapsed="0.000314"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:58.983379" elapsed="0.000522"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:58.983017" elapsed="0.000905"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:51:58.986092" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:51:58.984067" elapsed="0.002051"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-08T00:51:58.986188" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:51:58.986341" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:51:58.981840" elapsed="0.004526"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:51:58.987563" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:51:58.987330" elapsed="0.000295">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-08T00:51:58.987716" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:51:58.986982" elapsed="0.000758"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-08T00:51:58.987944" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-08T00:51:58.987811" elapsed="0.000190"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:58.987793" elapsed="0.000232"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:58.988181" elapsed="0.000023"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:58.988353" elapsed="0.000020"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-08T00:51:58.988417" elapsed="0.000014"/>
</return>
<msg time="2026-04-08T00:51:58.990391" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:51:58.986658" elapsed="0.003759"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:58.991784" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:58.991539" elapsed="0.000290"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:58.992234" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:58.991979" elapsed="0.000298"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:51:59.008493" level="INFO">GET Request : url=http://10.30.171.110:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 path_url=/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0u16rl3earouwvehy59feej101.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:51:59.009256" level="INFO">GET Response : url=http://10.30.171.110:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Transfer-Encoding': 'chunked'} 
 body={"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","hidden-symmetric-keys","encrypted-private-keys","asymmetrically-encrypted-value-format","cms-encrypted-data-format","cleartext-private-keys","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["ssh-client-keepalives","client-ident-hostbased","client-ident-publickey","client-ident-password"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-ex... (set the log level to DEBUG or TRACE to see the full content) 
 </msg>
<msg time="2026-04-08T00:51:59.009723" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:51:58.994281" elapsed="0.015501"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:58.992343" elapsed="0.017536"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:59.010314" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:59.009941" elapsed="0.000521"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:58.992325" elapsed="0.018184"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:59.018345" level="INFO">{"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","hidden-symmetric-keys","encrypted-private-keys","asymmetrically-encrypted-value-format","cms-encrypted-data-format","cleartext-private-keys","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["ssh-client-keepalives","client-ident-hostbased","client-ident-publickey","client-ident-password"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-experimenter-types?revision=2015-10-20","namespace":"urn:opendaylight:openflowplugin:experimenter:types","conformance-type":"import"},{"name":"ietf-ip_2018-02-22","revision":"2018-02-22","schema":"/rests/modules/ietf-ip?revision=2018-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-ip","conformance-type":"import","feature":["ipv6-privacy-autoconf","ipv4-non-contiguous-netmasks"]},{"name":"ietf-tcp-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-client","conformance-type":"import","feature":["local-binding-supported","tcp-client-keepalives"]},{"name":"node-config_2014-10-15","revision":"2014-10-15","schema":"/rests/modules/node-config?revision=2014-10-15","namespace":"urn:opendaylight:module:config","conformance-type":"import"},{"name":"ietf-restconf_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf","conformance-type":"import"},{"name":"ietf-datastores_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-datastores?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-datastores","conformance-type":"import"},{"name":"ietf-yang-patch_2017-02-22","revision":"2017-02-22","schema":"/rests/modules/ietf-yang-patch?revision=2017-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-patch","conformance-type":"import"},{"name":"sal-group_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-group?revision=2013-09-18","namespace":"urn:opendaylight:group:service","conformance-type":"import"},{"name":"odl-codegen-extensions_2024-06-27","revision":"2024-06-27","schema":"/rests/modules/odl-codegen-extensions?revision=2024-06-27","namespace":"urn:opendaylight:yang:extension:codegen","conformance-type":"import"},{"name":"sal-meter_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-meter?revision=2013-09-18","namespace":"urn:opendaylight:meter:service","conformance-type":"import"},{"name":"ietf-interfaces_2018-02-20","revision":"2018-02-20","schema":"/rests/modules/ietf-interfaces?revision=2018-02-20","namespace":"urn:ietf:params:xml:ns:yang:ietf-interfaces","conformance-type":"import","feature":["pre-provisioning","if-mib","arbitrary-names"]},{"name":"opendaylight-l2-types_2013-08-27","revision":"2013-08-27","schema":"/rests/modules/opendaylight-l2-types?revision=2013-08-27","namespace":"urn:opendaylight:l2:types","conformance-type":"import"},{"name":"opendaylight-flow-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-flow-types?revision=2013-10-26","namespace":"urn:opendaylight:flow:types","conformance-type":"import"},{"name":"lldp-speaker-config_2016-05-12","revision":"2016-05-12","schema":"/rests/modules/lldp-speaker-config?revision=2016-05-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker:config","conformance-type":"import"},{"name":"aaa-cert_2015-11-26","revision":"2015-11-26","schema":"/rests/modules/aaa-cert?revision=2015-11-26","namespace":"urn:opendaylight:yang:aaa:cert","conformance-type":"import"},{"name":"openflow-action_2015-02-03","revision":"2015-02-03","schema":"/rests/modules/openflow-action?revision=2015-02-03","namespace":"urn:opendaylight:openflow:common:action","conformance-type":"import"},{"name":"openflow-approved-extensions_2016-08-02","revision":"2016-08-02","schema":"/rests/modules/openflow-approved-extensions?revision=2016-08-02","namespace":"urn:opendaylight:openflow:approved:extensions","conformance-type":"import"},{"name":"nc-notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/nc-notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netmod:notification","conformance-type":"import"},{"name":"ietf-netconf-nmda_2019-01-07","revision":"2019-01-07","schema":"/rests/modules/ietf-netconf-nmda?revision=2019-01-07","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-nmda","conformance-type":"import","feature":["with-defaults","origin"]},{"name":"ietf-tcp-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-common","conformance-type":"import","feature":["keepalives-supported"]},{"name":"network-topology_2013-10-21","revision":"2013-10-21","schema":"/rests/modules/network-topology?revision=2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:network-topology","conformance-type":"import"},{"name":"aaa-encrypt-service-config_2024-02-02","revision":"2024-02-02","schema":"/rests/modules/aaa-encrypt-service-config?revision=2024-02-02","namespace":"config:aaa:authn:encrypt:service:config","conformance-type":"import"},{"name":"openflow-instruction_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-instruction?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:instruction","conformance-type":"import"},{"name":"ietf-tls-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-client","conformance-type":"import","feature":["client-ident-x509-cert","server-auth-x509-cert"]},{"name":"opendaylight-group-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-group-statistics?revision=2013-11-11","namespace":"urn:opendaylight:group:statistics","conformance-type":"import"},{"name":"cluster-admin_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/cluster-admin?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:cluster:admin","conformance-type":"import"},{"name":"opendaylight-flow-statistics_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-flow-statistics?revision=2013-08-19","namespace":"urn:opendaylight:flow:statistics","conformance-type":"import"},{"name":"opendaylight-table-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-table-types?revision=2013-10-26","namespace":"urn:opendaylight:table:types","conformance-type":"import"},{"name":"forwarding-rules-manager-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/forwarding-rules-manager-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:forwardingrules-manager:config","conformance-type":"import"},{"name":"odl-srm-types_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-types?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:types","conformance-type":"import"},{"name":"ietf-x509-cert-to-name_2014-12-10","revision":"2014-12-10","schema":"/rests/modules/ietf-x509-cert-to-name?revision=2014-12-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-x509-cert-to-name","conformance-type":"import"},{"name":"flow-node-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-node-inventory?revision=2013-08-19","namespace":"urn:opendaylight:flow:inventory","conformance-type":"import"},{"name":"flow-errors_2013-11-16","revision":"2013-11-16","schema":"/rests/modules/flow-errors?revision=2013-11-16","namespace":"urn:opendaylight:flow:errors","conformance-type":"import"},{"name":"ietf-netconf_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:netconf:base:1.0","conformance-type":"import","feature":["xpath","url","rollback-on-error","validate","startup","candidate","confirmed-commit","writable-running"]},{"name":"iana-ssh-public-key-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-public-key-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-public-key-algs","conformance-type":"import"},{"name":"aaa-cert-mdsal_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/aaa-cert-mdsal?revision=2016-03-21","namespace":"urn:opendaylight:yang:aaa:cert:mdsal","conformance-type":"import"},{"name":"odl-device-notification_2024-02-18","revision":"2024-02-18","schema":"/rests/modules/odl-device-notification?revision=2024-02-18","namespace":"urn:opendaylight:device:notification","conformance-type":"import"},{"name":"ietf-origin_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-origin?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-origin","conformance-type":"import"},{"name":"openflow-augments_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-augments?revision=2015-02-25","namespace":"urn:opendaylight:openflow:augments","conformance-type":"import"},{"name":"iana-ssh-encryption-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-encryption-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-encryption-algs","conformance-type":"import"},{"name":"ietf-truststore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-truststore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-truststore","conformance-type":"import","feature":["inline-definitions-supported"]},{"name":"distributed-datastore-provider_2025-01-30","revision":"2025-01-30","schema":"/rests/modules/distributed-datastore-provider?revision=2025-01-30","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:distributed-datastore-provider","conformance-type":"import"},{"name":"opendaylight-group-types_2013-10-18","revision":"2013-10-18","schema":"/rests/modules/opendaylight-group-types?revision=2013-10-18","namespace":"urn:opendaylight:group:types","conformance-type":"import"},{"name":"sal-remote-augment_2023-11-03","revision":"2023-11-03","schema":"/rests/modules/sal-remote-augment?revision=2023-11-03","namespace":"urn:sal:restconf:event:subscription","conformance-type":"import"},{"name":"opendaylight-ipv6-arbitrary-bitmask-fields_2016-02-24","revision":"2016-02-24","schema":"/rests/modules/opendaylight-ipv6-arbitrary-bitmask-fields?revision=2016-02-24","namespace":"urn:opendaylight:opendaylight-ipv6-arbitrary-bitmask-fields","conformance-type":"import"},{"name":"sal-flows-batch_2016-03-14","revision":"2016-03-14","schema":"/rests/modules/sal-flows-batch?revision=2016-03-14","namespace":"urn:opendaylight:flows:service","conformance-type":"import"},{"name":"ietf-tls-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-common","conformance-type":"import","feature":["tls12","hello-params","tls13"]},{"name":"openflow-types_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-types?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:types","conformance-type":"import"},{"name":"ietf-netconf-with-defaults_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf-with-defaults?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults","conformance-type":"import"},{"name":"odl-srm-ops_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-ops?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:ops","conformance-type":"import"},{"name":"odl-general-entity_2015-09-30","revision":"2015-09-30","schema":"/rests/modules/odl-general-entity?revision=2015-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:mdsal:core:general-entity","conformance-type":"import"},{"name":"iana-ssh-key-exchange-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-key-exchange-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-key-exchange-algs","conformance-type":"import"},{"name":"node-ssl-connection-error_2019-07-23","revision":"2019-07-23","schema":"/rests/modules/node-ssl-connection-error?revision=2019-07-23","namespace":"urn:opendaylight:node-ssl-connection-error:service","conformance-type":"import"},{"name":"openflow-protocol_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-protocol?revision=2013-07-31","namespace":"urn:opendaylight:openflow:protocol","conformance-type":"import"},{"name":"ietf-udp-server_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-server?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-server","conformance-type":"import"},{"name":"ietf-keystore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-keystore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-keystore","conformance-type":"import","feature":["asymmetric-keys","inline-definitions-supported"]},{"name":"aaa_2016-12-14","revision":"2016-12-14","schema":"/rests/modules/aaa?revision=2016-12-14","namespace":"urn:opendaylight:params:xml:ns:yang:aaa","conformance-type":"import"},{"name":"aaa-cert-rpc_2015-12-15","revision":"2015-12-15","schema":"/rests/modules/aaa-cert-rpc?revision=2015-12-15","namespace":"urn:opendaylight:yang:aaa:cert:rpc","conformance-type":"import"},{"name":"system-notifications_2013-09-27","revision":"2013-09-27","schema":"/rests/modules/system-notifications?revision=2013-09-27","namespace":"urn:opendaylight:openflow:system","conformance-type":"import"},{"name":"sal-flat-batch_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/sal-flat-batch?revision=2016-03-21","namespace":"urn:opendaylight:flat-batch:service","conformance-type":"import"},{"name":"notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netconf:notification:1.0","conformance-type":"import"},{"name":"sal-remote_2014-01-14","revision":"2014-01-14","schema":"/rests/modules/sal-remote?revision=2014-01-14","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:remote","conformance-type":"import"},{"name":"yang-ext_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/yang-ext?revision=2013-07-09","namespace":"urn:opendaylight:yang:extension:yang-ext","conformance-type":"import"},{"name":"opendaylight-multipart-types_2017-01-12","revision":"2017-01-12","schema":"/rests/modules/opendaylight-multipart-types?revision=2017-01-12","namespace":"urn:opendaylight:multipart:types","conformance-type":"import"},{"name":"opendaylight-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-inventory?revision=2013-08-19","namespace":"urn:opendaylight:inventory","conformance-type":"import"},{"name":"sal-queue_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-queue?revision=2015-03-05","namespace":"urn:opendaylight:queue:service","conformance-type":"import"},{"name":"sal-groups-batch_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/sal-groups-batch?revision=2016-03-15","namespace":"urn:opendaylight:groups:service","conformance-type":"import"},{"name":"arbitrator-reconcile_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/arbitrator-reconcile?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:arbitrator-reconcile:service","conformance-type":"import"},{"name":"ietf-yang-metadata_2016-08-05","revision":"2016-08-05","schema":"/rests/modules/ietf-yang-metadata?revision=2016-08-05","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-metadata","conformance-type":"import"},{"name":"opendaylight-arbitrary-bitmask-fields_2016-01-30","revision":"2016-01-30","schema":"/rests/modules/opendaylight-arbitrary-bitmask-fields?revision=2016-01-30","namespace":"urn:opendaylight:arbitrary:bitmask:fields","conformance-type":"import"},{"name":"ietf-udp-client_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-client?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-client","conformance-type":"import","feature":["local-binding"]},{"name":"opendaylight-meter-types_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/opendaylight-meter-types?revision=2013-09-18","namespace":"urn:opendaylight:meter:types","conformance-type":"import"},{"name":"opendaylight-action-types_2013-11-12","revision":"2013-11-12","schema":"/rests/modules/opendaylight-action-types?revision=2013-11-12","namespace":"urn:opendaylight:action:types","conformance-type":"import"},{"name":"sal-role_2015-07-27","revision":"2015-07-27","schema":"/rests/modules/sal-role?revision=2015-07-27","namespace":"urn:opendaylight:role:service","conformance-type":"import"},{"name":"openflow-provider-config_2016-05-10","revision":"2016-05-10","schema":"/rests/modules/openflow-provider-config?revision=2016-05-10","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:provider:config","conformance-type":"import"},{"name":"odl-serviceutils-upgrade_2018-07-02","revision":"2018-07-02","schema":"/rests/modules/odl-serviceutils-upgrade?revision=2018-07-02","namespace":"urn:opendaylight:serviceutils:upgrade","conformance-type":"import"},{"name":"opendaylight-match-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-match-types?revision=2013-10-26","namespace":"urn:opendaylight:model:match:types","conformance-type":"import"},{"name":"ietf-restconf-server_2024-08-14","revision":"2024-08-14","schema":"/rests/modules/ietf-restconf-server?revision=2024-08-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-server","conformance-type":"import","feature":["http-listen","https-listen"]},{"name":"reconciliation-result-state_2017-07-13","revision":"2017-07-13","schema":"/rests/modules/reconciliation-result-state?revision=2017-07-13","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:rf:state","conformance-type":"import"},{"name":"onf-extensions_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/onf-extensions?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf","conformance-type":"import"},{"name":"sal-table_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/sal-table?revision=2013-10-26","namespace":"urn:opendaylight:table:service","conformance-type":"import"},{"name":"iana-http-versions_2026-02-04","revision":"2026-02-04","schema":"/rests/modules/iana-http-versions?revision=2026-02-04","namespace":"urn:ietf:params:xml:ns:yang:iana-http-versions","conformance-type":"import"},{"name":"opendaylight-direct-statistics_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/opendaylight-direct-statistics?revision=2016-05-11","namespace":"urn:opendaylight:direct:statistics","conformance-type":"import"},{"name":"opendaylight-port-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-port-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:port","conformance-type":"import"},{"name":"sal-async-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/sal-async-config?revision=2017-06-19","namespace":"urn:opendaylight:async-config:service","conformance-type":"import"},{"name":"aaa-password-service-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-password-service-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:password:service:config","conformance-type":"import"},{"name":"ietf-yang-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-yang-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-types","conformance-type":"import"},{"name":"opendaylight-queue-statistics_2013-12-16","revision":"2013-12-16","schema":"/rests/modules/opendaylight-queue-statistics?revision=2013-12-16","namespace":"urn:opendaylight:queue:statistics","conformance-type":"import"},{"name":"sal-bundle_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/sal-bundle?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf:bundle:service","conformance-type":"import"},{"name":"ietf-restconf-subscribed-notifications_2019-11-17","revision":"2019-11-17","schema":"/rests/modules/ietf-restconf-subscribed-notifications?revision=2019-11-17","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-subscribed-notifications","conformance-type":"import"},{"name":"sal-meters-batch_2016-03-16","revision":"2016-03-16","schema":"/rests/modules/sal-meters-batch?revision=2016-03-16","namespace":"urn:opendaylight:meters:service","conformance-type":"import"},{"name":"odl-entity-owners","revision":"","schema":"/rests/modules/odl-entity-owners","namespace":"urn:opendaylight:params:xml:ns:yang:controller:entity-owners","conformance-type":"import"},{"name":"sal-experimenter-mp-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-mp-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-mp-message:service","conformance-type":"import"},{"name":"packet-processing_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/packet-processing?revision=2013-07-09","namespace":"urn:opendaylight:packet:service","conformance-type":"import"},{"name":"openflow-configuration_2014-06-30","revision":"2014-06-30","schema":"/rests/modules/openflow-configuration?revision=2014-06-30","namespace":"urn:opendaylight:openflow:config","conformance-type":"import"},{"name":"odl-srm-rpcs_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-rpcs?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:rpc","conformance-type":"import"},{"name":"ietf-netconf-acm_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-netconf-acm?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-acm","conformance-type":"import"},{"name":"iana-crypt-hash_2014-08-06","revision":"2014-08-06","schema":"/rests/modules/iana-crypt-hash?revision=2014-08-06","namespace":"urn:ietf:params:xml:ns:yang:iana-crypt-hash","conformance-type":"import","feature":["crypt-hash-sha-512","crypt-hash-sha-256","crypt-hash-md5"]},{"name":"openflow-extensible-match_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-extensible-match?revision=2015-02-25","namespace":"urn:opendaylight:openflow:oxm","conformance-type":"import"}],"module-set-id":"2"}}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:59.012759" elapsed="0.005981"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:59.012270" elapsed="0.006506"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:59.012225" elapsed="0.006576"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:59.021254" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:59.019082" elapsed="0.002217"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:59.018858" elapsed="0.002475"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:59.018841" elapsed="0.002516"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:59.021900" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:59.021519" elapsed="0.000408"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:59.022247" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:59.021997" elapsed="0.000309"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:59.022789" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:59.022490" elapsed="0.000325"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:59.022330" elapsed="0.000520"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:59.021979" elapsed="0.000895"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:59.023412" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:59.023033" elapsed="0.000406"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:59.023739" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:59.023509" elapsed="0.000287"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:59.024287" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:59.023978" elapsed="0.000335"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:59.023819" elapsed="0.000529"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:59.023490" elapsed="0.000880"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:51:59.024517" elapsed="0.000351"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:51:59.025345" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:59.025031" elapsed="0.000339"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:51:59.025522" elapsed="0.002183"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:51:59.011298" elapsed="0.016469"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:51:59.027943" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:51:59.027838" elapsed="0.000149"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:59.027819" elapsed="0.000190"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:51:59.036174" level="INFO">${text_normalized} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:51:59.028152" elapsed="0.008054"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:51:59.036258" elapsed="0.000038"/>
</return>
<msg time="2026-04-08T00:51:59.036426" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:51:58.990720" elapsed="0.045734"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:51:59.036516" elapsed="0.000026"/>
</return>
<msg time="2026-04-08T00:51:59.036843" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="PASS" start="2026-04-08T00:51:58.900283" elapsed="0.136597"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Json_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:59.037375" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:59.037011" elapsed="0.000480"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:59.036980" elapsed="0.000552"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:51:59.037593" elapsed="0.000070"/>
</return>
<arg>session=${session}</arg>
<arg>folder=${RESTCONF_MODULES_DIR}</arg>
<arg>verify=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Add arguments sensible for JSON data, return Get_Templated response text.
Optionally, verification against JSON data (may be iterated) is called.
Only subset of JSON data is verified and returned if JMES path is specified in
file ${folder}/jmespath.expr.</doc>
<status status="PASS" start="2026-04-08T00:51:58.894679" elapsed="0.143174"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:58.890348" elapsed="0.147615"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:58.890329" elapsed="0.147662"/>
</if>
<kw name="Resolve_Shard_Type_Class" owner="ClusterManagement">
<if>
<branch type="IF" condition="'${shard_type}' == 'config'">
<return>
<value>DistributedConfigDatastore</value>
<status status="PASS" start="2026-04-08T00:51:59.038899" elapsed="0.000070"/>
</return>
<status status="PASS" start="2026-04-08T00:51:59.038672" elapsed="0.000345"/>
</branch>
<branch type="ELSE IF" condition="'${shard_type}' == 'operational'">
<return>
<value>DistributedOperationalDatastore</value>
<status status="NOT RUN" start="2026-04-08T00:51:59.039177" elapsed="0.000048"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:51:59.039077" elapsed="0.000190"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:59.038640" elapsed="0.000685"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized shard type: ${shard_type}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:59.039553" elapsed="0.000066"/>
</kw>
<msg time="2026-04-08T00:51:59.039757" level="INFO">${type_class} = DistributedConfigDatastore</msg>
<var>${type_class}</var>
<arg>shard_type=${shard_type}</arg>
<doc>Simple lookup for class name corresponding to desired type.</doc>
<status status="PASS" start="2026-04-08T00:51:59.038271" elapsed="0.001512"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:59.040626" level="INFO">${cluster_index} = 3</msg>
<var>${cluster_index}</var>
<arg>${member_index}+${NODE_ROLE_INDEX_START}-1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:59.039953" elapsed="0.000700"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:59.041777" level="INFO">${uri} = jolokia/read/org.opendaylight.controller:Category=Shards,name=member-3-shard-default-config,type=DistributedConfigDatastore</msg>
<var>${uri}</var>
<arg>${JOLOKIA_READ_URI}:Category=Shards,name=member-${cluster_index}-shard-${shard_name}-${shard_type},type=${type_class}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:59.040813" elapsed="0.000992"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:59.048691" level="INFO">jolokia/read/org.opendaylight.controller:Category=Shards,name=member-3-shard-default-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:59.048400" elapsed="0.000376"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:59.049315" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:59.049018" elapsed="0.000381"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:51:59.056853" level="INFO">GET Request : url=http://10.30.171.110:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-3-shard-default-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-3-shard-default-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:51:59.056912" level="INFO">GET Response : url=http://10.30.171.110:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-3-shard-default-config,type=DistributedConfigDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Wed, 08 Apr 2026 00:51:59 GMT', 'Expires': 'Tue, 07 Apr 2026 23:51:59 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-3-shard-default-config,type=DistributedConfigDatastore","type":"read"},"value":{"ReadWriteTransactionCount":0,"SnapshotIndex":73,"InMemoryJournalLogSize":1,"ReplicatedToAllIndex":73,"Leader":"member-1-shard-default-config","LastIndex":74,"RaftState":"Follower","LastApplied":74,"LastCommittedTransactionTime":"1970-01-01 00:00:00.000","PeerAddresses":"member-1-shard-default-config: pekko:\/\/opendaylight-cluster-data@10.30.170.48:2550\/user\/shardmanager-config\/member-1-shard-default-config, member-2-shard-default-config: pekko:\/\/opendaylight-cluster-data@10.30.170.131:2550\/user\/shardmanager-config\/member-2-shard-default-config","LastLogIndex":74,"LastLeadershipChangeTime":"2026-04-08 00:46:45.933","FollowerInitialSyncStatus":true,"FollowerInfo":[],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"290.6 μs","CurrentTerm":2,"LastTerm":2,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-default-config","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":0,"TxCohortCacheSize":0,"PeerVotingStates":"member-1-shard-default-config: true, member-2-shard-default-config: true","LastLogTerm":2,"StatRetrievalError":null,"CommitIndex":74,"SnapshotTerm":2,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-3-shard-default-config","LeadershipChangeCount":1,"InMemoryJournalDataSize":10675},"timestamp":1775609519,"status":200} 
 </msg>
<msg time="2026-04-08T00:51:59.057014" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:51:59.051533" elapsed="0.005506"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:59.049544" elapsed="0.007538"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:59.057348" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:59.057129" elapsed="0.000284"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:59.049499" elapsed="0.007953"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:59.060860" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-3-shard-default-config,type=DistributedConfigDatastore","type":"read"},"value":{"ReadWriteTransactionCount":0,"SnapshotIndex":73,"InMemoryJournalLogSize":1,"ReplicatedToAllIndex":73,"Leader":"member-1-shard-default-config","LastIndex":74,"RaftState":"Follower","LastApplied":74,"LastCommittedTransactionTime":"1970-01-01 00:00:00.000","PeerAddresses":"member-1-shard-default-config: pekko:\/\/opendaylight-cluster-data@10.30.170.48:2550\/user\/shardmanager-config\/member-1-shard-default-config, member-2-shard-default-config: pekko:\/\/opendaylight-cluster-data@10.30.170.131:2550\/user\/shardmanager-config\/member-2-shard-default-config","LastLogIndex":74,"LastLeadershipChangeTime":"2026-04-08 00:46:45.933","FollowerInitialSyncStatus":true,"FollowerInfo":[],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"290.6 μs","CurrentTerm":2,"LastTerm":2,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-default-config","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":0,"TxCohortCacheSize":0,"PeerVotingStates":"member-1-shard-default-config: true, member-2-shard-default-config: true","LastLogTerm":2,"StatRetrievalError":null,"CommitIndex":74,"SnapshotTerm":2,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-3-shard-default-config","LeadershipChangeCount":1,"InMemoryJournalDataSize":10675},"timestamp":1775609519,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:59.058498" elapsed="0.002466"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:59.058282" elapsed="0.002718"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:59.058264" elapsed="0.002761"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:59.063492" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:59.061322" elapsed="0.002216"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:59.061081" elapsed="0.002491"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:59.061064" elapsed="0.002532"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:59.064321" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:59.063757" elapsed="0.000602"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:59.064786" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:59.064457" elapsed="0.000409"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:59.065558" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:59.065120" elapsed="0.000474"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:59.064898" elapsed="0.000746"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:59.064431" elapsed="0.001242"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:59.066548" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:59.065894" elapsed="0.000691"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:59.067012" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:59.066683" elapsed="0.000408"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:59.067808" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:59.067397" elapsed="0.000448"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:59.067123" elapsed="0.000771"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:59.066657" elapsed="0.001267"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:51:59.068127" elapsed="0.000500"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:51:59.069257" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:59.068859" elapsed="0.000434"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:51:59.069505" elapsed="0.003027"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:51:59.057847" elapsed="0.014772"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:51:59.072981" elapsed="0.000020"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:51:59.072830" elapsed="0.000212"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:59.072767" elapsed="0.000328"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:51:59.076921" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-3-shard-default-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 17756095...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:51:59.073448" elapsed="0.003527"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:51:59.077056" elapsed="0.000062"/>
</return>
<msg time="2026-04-08T00:51:59.077432" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-3-shard-default-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 17756095...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:51:59.043408" elapsed="0.034114"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:51:59.077624" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:51:59.077890" level="INFO">${data_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-3-shard-default-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 17756095...</msg>
<var>${data_text}</var>
<arg>uri=${uri}</arg>
<arg>session=${session}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-08T00:51:59.042020" elapsed="0.035897"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:51:59.080136" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-3-shard-default-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1775609519, 'value'...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:51:59.078973" elapsed="0.001275"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-08T00:51:59.080364" elapsed="0.000032"/>
</return>
<msg time="2026-04-08T00:51:59.080660" level="INFO">${data_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-3-shard-default-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1775609519, 'value'...</msg>
<var>${data_object}</var>
<arg>${data_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-08T00:51:59.078135" elapsed="0.002553"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:51:59.081169" level="INFO">${value} = {'AbortTransactionsCount': 0, 'CommitIndex': 74, 'CommittedTransactionsCount': 0, 'CurrentTerm': 2, 'FailedReadTransactionsCount': 0, 'FailedTransactionsCount': 0, 'FollowerInfo': [], 'FollowerInitial...</msg>
<var>${value}</var>
<arg>${data_object}</arg>
<arg>value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:51:59.080845" elapsed="0.000354"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:51:59.081737" level="INFO">${raft_property} = Follower</msg>
<var>${raft_property}</var>
<arg>${value}</arg>
<arg>${property}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:51:59.081356" elapsed="0.000407"/>
</kw>
<return>
<value>${raft_property}</value>
<status status="PASS" start="2026-04-08T00:51:59.081809" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:51:59.081962" level="INFO">${raft_state} = Follower</msg>
<var>${raft_state}</var>
<arg>RaftState</arg>
<arg>${shard_name}</arg>
<arg>${shard_type}</arg>
<arg>${member_index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft property.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T00:51:58.887559" elapsed="0.194427"/>
</kw>
<return>
<value>${raft_state}</value>
<status status="PASS" start="2026-04-08T00:51:59.082043" elapsed="0.000025"/>
</return>
<msg time="2026-04-08T00:51:59.082216" level="INFO">${raft_state} = Follower</msg>
<var>${raft_state}</var>
<arg>shard_name=${shard_name}</arg>
<arg>shard_type=${ds_type}</arg>
<arg>member_index=${index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft status.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T00:51:58.886783" elapsed="0.195459"/>
</kw>
<if>
<branch type="IF" condition="'Follower' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${follower_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-08T00:51:59.082536" elapsed="0.000205"/>
</kw>
<status status="PASS" start="2026-04-08T00:51:59.082323" elapsed="0.000457"/>
</branch>
<branch type="ELSE IF" condition="'Leader' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${leader_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:59.082956" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:59.082804" elapsed="0.000207"/>
</branch>
<branch type="ELSE IF" condition="${validate}">
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized Raft state: ${raft_state}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:59.083207" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:59.083035" elapsed="0.000225"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:59.082305" elapsed="0.000978"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T00:51:58.886619" elapsed="0.196688"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-08T00:51:58.488613" elapsed="0.594726"/>
</for>
<return>
<value>${leader_list}</value>
<value>${follower_list}</value>
<status status="PASS" start="2026-04-08T00:51:59.083380" elapsed="0.000026"/>
</return>
<msg time="2026-04-08T00:51:59.083579" level="INFO">${leader_list} = [1]</msg>
<msg time="2026-04-08T00:51:59.083625" level="INFO">${follower_list} = [2, 3]</msg>
<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="PASS" start="2026-04-08T00:51:58.484537" elapsed="0.599112"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T00:51:59.084085" level="INFO">Length is 1.</msg>
<msg time="2026-04-08T00:51:59.084178" level="INFO">${leader_count} = 1</msg>
<var>${leader_count}</var>
<arg>${leader_list}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T00:51:59.083820" elapsed="0.000383"/>
</kw>
<if>
<branch type="IF" condition="${leader_count} &lt; 1">
<kw name="Fail" owner="BuiltIn">
<arg>No leader found.</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:59.084484" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:51:59.084273" elapsed="0.000263"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:59.084255" elapsed="0.000303"/>
</if>
<kw name="Length Should Be" owner="BuiltIn">
<msg time="2026-04-08T00:51:59.086697" level="INFO">Length is 1.</msg>
<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="PASS" start="2026-04-08T00:51:59.084691" elapsed="0.002053"/>
</kw>
<kw name="Get From List" owner="Collections">
<msg time="2026-04-08T00:51:59.087094" level="INFO">${leader} = 1</msg>
<var>${leader}</var>
<arg>${leader_list}</arg>
<arg>0</arg>
<doc>Returns the value specified with an ``index`` from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:51:59.086905" elapsed="0.000214"/>
</kw>
<return>
<value>${leader}</value>
<value>${follower_list}</value>
<status status="PASS" start="2026-04-08T00:51:59.087189" elapsed="0.000030"/>
</return>
<arg>shard_name=${shard_name}</arg>
<arg>shard_type=${shard_type}</arg>
<arg>validate=True</arg>
<arg>member_index_list=${member_index_list}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<doc>Get role lists, validate there is one leader, return the leader and list of followers.
Optionally, issue GET to a simple restconf URL to make sure subsequent operations will not encounter 503.</doc>
<status status="PASS" start="2026-04-08T00:51:58.482050" elapsed="0.605295"/>
</kw>
<var name="${shard_name}">default</var>
<status status="PASS" start="2026-04-08T00:51:58.481833" elapsed="0.605558"/>
</iter>
<var>${shard_name}</var>
<value>@{shard_name_list}</value>
<status status="PASS" start="2026-04-08T00:51:57.292398" elapsed="1.795024"/>
</for>
<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="PASS" start="2026-04-08T00:51:57.291998" elapsed="1.795478"/>
</kw>
<arg>${controller_index_list}</arg>
<doc>Check Status for all shards in OpenFlow application.</doc>
<status status="PASS" start="2026-04-08T00:51:55.387312" elapsed="3.700260"/>
</kw>
<arg>90s</arg>
<arg>1s</arg>
<arg>ClusterOpenFlow.Check OpenFlow Shards Status</arg>
<arg>${controller_index_list}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-08T00:51:55.386675" elapsed="3.700944"/>
</kw>
<doc>Check Shards Status after some cluster event.</doc>
<status status="PASS" start="2026-04-08T00:51:55.384544" elapsed="3.703136"/>
</kw>
<doc>Create original cluster list and check Status for all shards in OpenFlow application.</doc>
<status status="PASS" start="2026-04-08T00:51:55.383986" elapsed="3.703807"/>
</test>
<test id="s1-s2-t36" name="Check Entity Owner Status After Start" line="184">
<kw name="Get OpenFlow Entity Owner Status For One Device" owner="ClusterOpenFlow">
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:51:59.122556" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:51:59.122146" elapsed="0.000438"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:51:59.123049" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:51:59.122745" elapsed="0.000330"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:51:59.123119" elapsed="0.000031"/>
</return>
<msg time="2026-04-08T00:51:59.123294" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:51:59.121771" elapsed="0.001549"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T00:51:59.128005" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T00:51:59.127821" elapsed="0.000211"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:51:59.128194" elapsed="0.000188"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:51:59.128739" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:51:59.128532" elapsed="0.000232"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:59.129220" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:59.128944" elapsed="0.000317"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:51:59.129412" elapsed="0.000182"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:51:59.129955" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:51:59.129745" elapsed="0.000235"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:59.130406" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:59.130147" elapsed="0.000299"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:59.130937" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:59.130595" elapsed="0.000367"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:51:59.131381" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:51:59.131128" elapsed="0.000296"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:51:59.131850" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:51:59.131572" elapsed="0.000303"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:51:59.138428" elapsed="0.000216"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:51:59.147189" elapsed="0.000213"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:51:59.147923" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:51:59.147558" elapsed="0.000392"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:51:59.149096" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:51:59.148560" elapsed="0.000575"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:51:59.149284" elapsed="0.000031"/>
</return>
<msg time="2026-04-08T00:51:59.149439" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:51:59.148134" elapsed="0.001330"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:51:59.150063" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:51:59.149623" elapsed="0.000467"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:51:59.150738" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:51:59.150307" elapsed="0.000457"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:51:59.151272" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:51:59.161668" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:51:59.150926" elapsed="0.015341">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:59.166701" elapsed="0.000054"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:59.167095" elapsed="0.000047"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:59.167535" elapsed="0.000048"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:59.167912" elapsed="0.000047"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:59.168332" elapsed="0.000047"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:59.168704" elapsed="0.000046"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:59.169334" elapsed="0.000048"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:59.169847" elapsed="0.000047"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:59.170318" elapsed="0.000049"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:51:59.169016" elapsed="0.001490"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:51:59.168858" elapsed="0.001710"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:59.170887" elapsed="0.000046"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:51:59.171021" elapsed="0.000036"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:51:59.146679" elapsed="0.024640">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:51:59.171671" elapsed="0.000041"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T00:51:59.136175" elapsed="0.035759">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:59.172182" elapsed="0.000022"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:59.177960" elapsed="0.000031"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:59.178184" elapsed="0.000022"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T00:51:59.178252" elapsed="0.000016"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T00:51:59.127286" elapsed="0.051133">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:51:59.178547" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:51:59.178593" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:51:59.126709" elapsed="0.051908"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T00:51:59.178835" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:51:59.178711" elapsed="0.000166"/>
</branch>
<status status="PASS" start="2026-04-08T00:51:59.178690" elapsed="0.000209"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:51:59.180332" elapsed="0.000212"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:51:59.181013" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:51:59.180696" elapsed="0.000343"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:51:59.181847" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:51:59.181578" elapsed="0.000295"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:51:59.181921" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:51:59.182071" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:51:59.181239" elapsed="0.000857"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:51:59.182641" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:51:59.182270" elapsed="0.000398"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:51:59.183225" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:51:59.182825" elapsed="0.000427"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:51:59.183631" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:51:59.191219" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:51:59.183413" elapsed="0.009539">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:59.193136" elapsed="0.000038"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:59.193328" elapsed="0.000021"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:59.193493" elapsed="0.000020"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:59.193658" elapsed="0.000020"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:59.193825" elapsed="0.000021"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:59.193989" elapsed="0.000020"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:59.194263" elapsed="0.000022"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:59.194434" elapsed="0.000020"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:59.194594" elapsed="0.000020"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:51:59.194122" elapsed="0.000549"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:51:59.194055" elapsed="0.000644"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:59.194841" elapsed="0.000020"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:51:59.194908" elapsed="0.000023"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:51:59.179752" elapsed="0.015327">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:51:59.195334" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:51:59.195395" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:51:59.179051" elapsed="0.016377"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T00:51:59.196312" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T00:51:59.195844" elapsed="0.000553">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T00:51:59.195545" elapsed="0.000938">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T00:51:59.195519" elapsed="0.001009">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T00:51:59.196592" elapsed="0.000021"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:51:59.126141" elapsed="0.070587">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:59.196976" elapsed="0.000030"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:59.197232" elapsed="0.000030"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T00:51:59.197321" elapsed="0.000020"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T00:51:59.123615" elapsed="0.073844">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:59.197692" elapsed="0.000029"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:59.197938" elapsed="0.000029"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:59.198193" elapsed="0.000030"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:59.198420" elapsed="0.000028"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:59.198663" elapsed="0.000028"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:51:59.198889" elapsed="0.000028"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T00:51:59.198973" elapsed="0.000020"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T00:51:59.121078" elapsed="0.078030">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:52:00.232152" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:52:00.231667" elapsed="0.000536"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:52:00.232695" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:52:00.232379" elapsed="0.000342"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:52:00.232769" elapsed="0.000044"/>
</return>
<msg time="2026-04-08T00:52:00.232947" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:52:00.231271" elapsed="0.001778"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T00:52:00.237848" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T00:52:00.237655" elapsed="0.000220"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:52:00.238028" elapsed="0.000212"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:52:00.238605" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:52:00.238395" elapsed="0.000235"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:00.239080" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:00.238824" elapsed="0.000297"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:52:00.239287" elapsed="0.000182"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:52:00.239825" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:52:00.239619" elapsed="0.000232"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:00.240278" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:00.240018" elapsed="0.000301"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:00.240807" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:00.240469" elapsed="0.000364"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:00.241269" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:00.240996" elapsed="0.000317"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:00.241742" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:00.241463" elapsed="0.000305"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:52:00.248302" elapsed="0.000214"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:52:00.257027" elapsed="0.000237"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:52:00.257809" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:52:00.257422" elapsed="0.000414"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:52:00.258982" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:52:00.258442" elapsed="0.000582"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:52:00.259177" elapsed="0.000035"/>
</return>
<msg time="2026-04-08T00:52:00.259338" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:52:00.258022" elapsed="0.001342"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:52:00.259979" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:52:00.259526" elapsed="0.000479"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:52:00.260629" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:52:00.260181" elapsed="0.000475"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:52:00.261182" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:52:00.270887" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:52:00.260820" elapsed="0.012643">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:00.273726" elapsed="0.000033"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:00.273968" elapsed="0.000029"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:00.274345" elapsed="0.000033"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:00.274585" elapsed="0.000030"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:00.274824" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:00.275053" elapsed="0.000029"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:00.275469" elapsed="0.000029"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:00.275787" elapsed="0.000029"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:00.276085" elapsed="0.000032"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:52:00.275285" elapsed="0.000955"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:52:00.275176" elapsed="0.001108"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:00.276484" elapsed="0.000029"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:52:00.276569" elapsed="0.000022"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:52:00.256515" elapsed="0.020217">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:52:00.276831" elapsed="0.000022"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T00:52:00.246055" elapsed="0.030918">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:00.277238" elapsed="0.000031"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:00.283341" elapsed="0.000038"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:00.283612" elapsed="0.000029"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T00:52:00.283703" elapsed="0.000021"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T00:52:00.237092" elapsed="0.046770">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:52:00.284023" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:52:00.284085" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:52:00.236528" elapsed="0.047589"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T00:52:00.284443" elapsed="0.000020"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:52:00.284279" elapsed="0.000224"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:00.284250" elapsed="0.000285"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:52:00.286411" elapsed="0.000296"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:52:00.287378" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:52:00.286919" elapsed="0.000495"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:52:00.288656" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:52:00.288275" elapsed="0.000418"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:52:00.288760" elapsed="0.000041"/>
</return>
<msg time="2026-04-08T00:52:00.289001" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:52:00.287763" elapsed="0.001279"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:52:00.289601" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:52:00.289226" elapsed="0.000402"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:52:00.290131" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:52:00.289784" elapsed="0.000387"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:52:00.290545" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:52:00.299764" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:52:00.290336" elapsed="0.011175">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:00.301694" elapsed="0.000022"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:00.301864" elapsed="0.000021"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:00.302027" elapsed="0.000020"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:00.302208" elapsed="0.000021"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:00.302378" elapsed="0.000020"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:00.302539" elapsed="0.000020"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:00.302799" elapsed="0.000020"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:00.302969" elapsed="0.000020"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:00.303128" elapsed="0.000020"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:52:00.302672" elapsed="0.000524"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:52:00.302604" elapsed="0.000621"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:00.303389" elapsed="0.000020"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:52:00.303447" elapsed="0.000016"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:52:00.285623" elapsed="0.017933">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:52:00.303668" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:52:00.303713" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:52:00.284748" elapsed="0.018988"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T00:52:00.304598" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T00:52:00.304133" elapsed="0.000550">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T00:52:00.303819" elapsed="0.000949">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T00:52:00.303800" elapsed="0.001011">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T00:52:00.304875" elapsed="0.000021"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:52:00.235783" elapsed="0.069278">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:00.305336" elapsed="0.000030"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:00.305568" elapsed="0.000028"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T00:52:00.305654" elapsed="0.000020"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T00:52:00.233385" elapsed="0.072406">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:00.306025" elapsed="0.000029"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:00.306293" elapsed="0.000030"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:00.306533" elapsed="0.000028"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:00.306758" elapsed="0.000027"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:00.306988" elapsed="0.000027"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:00.307246" elapsed="0.000029"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T00:52:00.307335" elapsed="0.000020"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T00:52:00.230355" elapsed="0.077116">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:52:01.338893" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:52:01.338410" elapsed="0.000517"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:52:01.339435" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:52:01.339098" elapsed="0.000367"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:52:01.339518" elapsed="0.000041"/>
</return>
<msg time="2026-04-08T00:52:01.339693" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:52:01.337820" elapsed="0.001899"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T00:52:01.344554" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T00:52:01.344366" elapsed="0.000214"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:52:01.344732" elapsed="0.000253"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:52:01.345368" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:52:01.345139" elapsed="0.000254"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:01.345926" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:01.345580" elapsed="0.000388"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:52:01.346114" elapsed="0.000205"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:52:01.346708" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:52:01.346495" elapsed="0.000238"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:01.347174" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:01.346904" elapsed="0.000314"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:01.347711" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:01.347371" elapsed="0.000366"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:01.348136" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:01.347901" elapsed="0.000295"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:01.348711" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:01.348427" elapsed="0.000310"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:52:01.355418" elapsed="0.000215"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:52:01.364274" elapsed="0.000213"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:52:01.365020" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:52:01.364643" elapsed="0.000403"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:52:01.366234" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:52:01.365650" elapsed="0.000626"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:52:01.366410" elapsed="0.000033"/>
</return>
<msg time="2026-04-08T00:52:01.366567" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:52:01.365255" elapsed="0.001337"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:52:01.367210" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:52:01.366751" elapsed="0.000486"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:52:01.367823" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:52:01.367396" elapsed="0.000454"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:52:01.368485" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:52:01.376968" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:52:01.368041" elapsed="0.010791">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:01.379031" elapsed="0.000025"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:01.379230" elapsed="0.000024"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:01.379403" elapsed="0.000020"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:01.379571" elapsed="0.000021"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:01.379741" elapsed="0.000021"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:01.379940" elapsed="0.000023"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:01.380255" elapsed="0.000022"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:01.380487" elapsed="0.000021"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:01.380682" elapsed="0.000021"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:52:01.380103" elapsed="0.000709"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:52:01.380017" elapsed="0.000828"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:01.380998" elapsed="0.000024"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:52:01.381076" elapsed="0.000025"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:52:01.363762" elapsed="0.017513">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:52:01.381362" elapsed="0.000018"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T00:52:01.353218" elapsed="0.028252">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:01.381680" elapsed="0.000022"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:01.387881" elapsed="0.000041"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:01.388188" elapsed="0.000033"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T00:52:01.388288" elapsed="0.000022"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T00:52:01.343791" elapsed="0.044650">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:52:01.388603" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:52:01.388664" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:52:01.343110" elapsed="0.045586"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T00:52:01.389045" elapsed="0.000020"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:52:01.388875" elapsed="0.000232"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:01.388842" elapsed="0.000296"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:52:01.391119" elapsed="0.000316"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:52:01.392138" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:52:01.391649" elapsed="0.000550"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:52:01.393432" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:52:01.392997" elapsed="0.000472"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:52:01.393535" elapsed="0.000042"/>
</return>
<msg time="2026-04-08T00:52:01.393744" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:52:01.392463" elapsed="0.001316"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:52:01.394381" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:52:01.393986" elapsed="0.000422"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:52:01.394909" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:52:01.394564" elapsed="0.000370"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:52:01.395411" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:52:01.402432" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:52:01.395147" elapsed="0.009582">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:01.405005" elapsed="0.000033"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:01.405283" elapsed="0.000031"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:01.405517" elapsed="0.000028"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:01.405746" elapsed="0.000028"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:01.406021" elapsed="0.000030"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:01.406272" elapsed="0.000030"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:01.406635" elapsed="0.000028"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:01.406871" elapsed="0.000031"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:01.407099" elapsed="0.000028"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:52:01.406457" elapsed="0.000734"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:52:01.406365" elapsed="0.000863"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:01.407423" elapsed="0.000028"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:52:01.407503" elapsed="0.000021"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:52:01.390350" elapsed="0.017302">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:52:01.407806" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:52:01.407867" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:52:01.389458" elapsed="0.018441"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T00:52:01.408775" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T00:52:01.408333" elapsed="0.000539">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T00:52:01.408013" elapsed="0.000946">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T00:52:01.407988" elapsed="0.001014">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T00:52:01.409065" elapsed="0.000022"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:52:01.342557" elapsed="0.066678">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:01.409485" elapsed="0.000029"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:01.409717" elapsed="0.000046"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T00:52:01.409845" elapsed="0.000024"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T00:52:01.340024" elapsed="0.069968">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:01.410308" elapsed="0.000031"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:01.410561" elapsed="0.000027"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:01.410796" elapsed="0.000027"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:01.411094" elapsed="0.000034"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:01.411364" elapsed="0.000028"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:01.411593" elapsed="0.000027"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T00:52:01.411677" elapsed="0.000020"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T00:52:01.337045" elapsed="0.074773">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:52:02.440577" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:52:02.440011" elapsed="0.000598"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:52:02.441141" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:52:02.440780" elapsed="0.000408"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:52:02.441239" elapsed="0.000041"/>
</return>
<msg time="2026-04-08T00:52:02.441414" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:52:02.439624" elapsed="0.001816"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T00:52:02.446412" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T00:52:02.446221" elapsed="0.000218"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:52:02.446590" elapsed="0.000190"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:52:02.447143" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:52:02.446935" elapsed="0.000250"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:02.447624" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:02.447369" elapsed="0.000296"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:52:02.447810" elapsed="0.000192"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:52:02.448383" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:52:02.448176" elapsed="0.000232"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:02.448813" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:02.448572" elapsed="0.000281"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:02.449355" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:02.449003" elapsed="0.000377"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:02.449784" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:02.449548" elapsed="0.000279"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:02.450277" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:02.449979" elapsed="0.000325"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:52:02.457043" elapsed="0.000314"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:52:02.465976" elapsed="0.000237"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:52:02.466755" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:52:02.466369" elapsed="0.000413"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:52:02.468000" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:52:02.467434" elapsed="0.000607"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:52:02.468204" elapsed="0.000032"/>
</return>
<msg time="2026-04-08T00:52:02.468362" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:52:02.466992" elapsed="0.001395"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:52:02.468989" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:52:02.468549" elapsed="0.000467"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:52:02.469617" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:52:02.469190" elapsed="0.000454"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:52:02.470135" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:52:02.483037" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:52:02.469806" elapsed="0.016019">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:02.486140" elapsed="0.000052"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:02.486407" elapsed="0.000029"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:02.486637" elapsed="0.000029"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:02.486868" elapsed="0.000033"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:02.487197" elapsed="0.000032"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:02.487430" elapsed="0.000029"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:02.487805" elapsed="0.000029"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:02.488127" elapsed="0.000063"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:02.488437" elapsed="0.000030"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:52:02.487625" elapsed="0.000927"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:52:02.487526" elapsed="0.001066"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:02.488791" elapsed="0.000029"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:52:02.488874" elapsed="0.000022"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:52:02.465484" elapsed="0.023551">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:52:02.489134" elapsed="0.000021"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T00:52:02.454727" elapsed="0.034573">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:02.489594" elapsed="0.000030"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:02.495854" elapsed="0.000043"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:02.496186" elapsed="0.000032"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T00:52:02.496282" elapsed="0.000024"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T00:52:02.445341" elapsed="0.051094">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:52:02.496591" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:52:02.496652" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:52:02.444750" elapsed="0.051935"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T00:52:02.496972" elapsed="0.000021"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:52:02.496808" elapsed="0.000226"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:02.496780" elapsed="0.000285"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:52:02.498943" elapsed="0.000342"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:52:02.499929" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:52:02.499502" elapsed="0.000458"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:52:02.500757" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:52:02.500493" elapsed="0.000291"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:52:02.500830" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:52:02.500981" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:52:02.500140" elapsed="0.000866"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:52:02.501559" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:52:02.501178" elapsed="0.000408"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:52:02.502082" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:52:02.501741" elapsed="0.000367"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:52:02.502479" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:52:02.510235" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:52:02.502282" elapsed="0.010101">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:02.512639" elapsed="0.000032"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:02.512879" elapsed="0.000032"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:02.513179" elapsed="0.000030"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:02.513410" elapsed="0.000027"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:02.513642" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:02.513865" elapsed="0.000028"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:02.514292" elapsed="0.000030"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:02.514552" elapsed="0.000031"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:02.514785" elapsed="0.000028"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:52:02.514094" elapsed="0.000764"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:52:02.514003" elapsed="0.000892"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:02.515091" elapsed="0.000028"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:52:02.515202" elapsed="0.000024"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:52:02.498123" elapsed="0.017232">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:52:02.515512" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:52:02.515572" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:52:02.497305" elapsed="0.018299"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T00:52:02.516476" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T00:52:02.516012" elapsed="0.000549">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T00:52:02.515717" elapsed="0.000930">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T00:52:02.515692" elapsed="0.000998">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T00:52:02.516753" elapsed="0.000021"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:52:02.444199" elapsed="0.072689">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:02.517130" elapsed="0.000049"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:02.517384" elapsed="0.000028"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T00:52:02.517468" elapsed="0.000021"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T00:52:02.441738" elapsed="0.075866">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:02.517835" elapsed="0.000030"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:02.518081" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:02.518337" elapsed="0.000029"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:02.518602" elapsed="0.000029"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:02.518835" elapsed="0.000027"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:02.519095" elapsed="0.000024"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T00:52:02.519221" elapsed="0.000016"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T00:52:02.438848" elapsed="0.080474">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:52:03.550215" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:52:03.549761" elapsed="0.000486"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:52:03.550719" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:52:03.550414" elapsed="0.000331"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:52:03.550791" elapsed="0.000036"/>
</return>
<msg time="2026-04-08T00:52:03.550965" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:52:03.549381" elapsed="0.001610"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T00:52:03.555662" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T00:52:03.555476" elapsed="0.000213"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:52:03.555840" elapsed="0.000188"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:52:03.556419" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:52:03.556192" elapsed="0.000257"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:03.556906" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:03.556651" elapsed="0.000296"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:52:03.557105" elapsed="0.000211"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:52:03.557669" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:52:03.557467" elapsed="0.000227"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:03.558100" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:03.557859" elapsed="0.000282"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:03.558707" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:03.558308" elapsed="0.000424"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:03.559128" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:03.558896" elapsed="0.000294"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:03.559620" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:03.559340" elapsed="0.000305"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:52:03.566208" elapsed="0.000218"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:52:03.574943" elapsed="0.000228"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:52:03.575736" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:52:03.575329" elapsed="0.000434"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:52:03.576924" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:52:03.576372" elapsed="0.000592"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:52:03.577098" elapsed="0.000033"/>
</return>
<msg time="2026-04-08T00:52:03.577280" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:52:03.575949" elapsed="0.001356"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:52:03.577905" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:52:03.577465" elapsed="0.000519"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:52:03.578588" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:52:03.578145" elapsed="0.000469"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:52:03.579102" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:52:03.591646" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:52:03.578775" elapsed="0.016760">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:03.595966" elapsed="0.000052"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:03.596408" elapsed="0.000051"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:03.596787" elapsed="0.000046"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:03.597155" elapsed="0.000076"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:03.597570" elapsed="0.000046"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:03.597936" elapsed="0.000045"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:03.598561" elapsed="0.000046"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:03.600090" elapsed="0.000220"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:03.600767" elapsed="0.000050"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:52:03.598272" elapsed="0.002685"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:52:03.598085" elapsed="0.002945"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:03.601277" elapsed="0.000030"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:52:03.601364" elapsed="0.000023"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:52:03.574439" elapsed="0.027086">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:52:03.601623" elapsed="0.000021"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T00:52:03.563975" elapsed="0.037786">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:03.602004" elapsed="0.000030"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:03.609826" elapsed="0.000039"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:03.610101" elapsed="0.000030"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T00:52:03.610215" elapsed="0.000022"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T00:52:03.554920" elapsed="0.055534">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:52:03.610614" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:52:03.610677" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:52:03.554365" elapsed="0.056346"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T00:52:03.610998" elapsed="0.000019"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:52:03.610840" elapsed="0.000218"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:03.610811" elapsed="0.000278"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:52:03.612973" elapsed="0.000318"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:52:03.613938" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:52:03.613506" elapsed="0.000469"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:52:03.615093" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:52:03.614722" elapsed="0.000409"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:52:03.615218" elapsed="0.000042"/>
</return>
<msg time="2026-04-08T00:52:03.615430" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:52:03.614249" elapsed="0.001217"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:52:03.616277" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:52:03.615690" elapsed="0.000624"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:52:03.617036" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:52:03.616533" elapsed="0.000549"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:52:03.617487" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:52:03.624364" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:52:03.617286" elapsed="0.008779">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:03.626269" elapsed="0.000024"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:03.626442" elapsed="0.000020"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:03.626605" elapsed="0.000020"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:03.626768" elapsed="0.000020"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:03.626934" elapsed="0.000019"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:03.627098" elapsed="0.000020"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:03.627370" elapsed="0.000020"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:03.627538" elapsed="0.000020"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:03.627722" elapsed="0.000020"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:52:03.627244" elapsed="0.000531"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:52:03.627177" elapsed="0.000623"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:03.627941" elapsed="0.000024"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:52:03.628012" elapsed="0.000020"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:52:03.612210" elapsed="0.016005">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:52:03.628427" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:52:03.628489" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:52:03.611322" elapsed="0.017199"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T00:52:03.629444" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T00:52:03.628932" elapsed="0.000601">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T00:52:03.628637" elapsed="0.000984">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T00:52:03.628611" elapsed="0.001052">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T00:52:03.629726" elapsed="0.000022"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:52:03.553805" elapsed="0.076055">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:03.630109" elapsed="0.000028"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:03.630362" elapsed="0.000028"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T00:52:03.630447" elapsed="0.000021"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T00:52:03.551308" elapsed="0.079273">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:03.630809" elapsed="0.000029"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:03.631051" elapsed="0.000027"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:03.631302" elapsed="0.000028"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:03.631551" elapsed="0.000030"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:03.631784" elapsed="0.000028"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:03.632009" elapsed="0.000027"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T00:52:03.632092" elapsed="0.000019"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T00:52:03.548625" elapsed="0.083624">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:52:04.662925" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:52:04.662431" elapsed="0.000527"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:52:04.663530" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:52:04.663127" elapsed="0.000431"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:52:04.663605" elapsed="0.000040"/>
</return>
<msg time="2026-04-08T00:52:04.663776" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:52:04.662029" elapsed="0.001773"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T00:52:04.668596" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T00:52:04.668221" elapsed="0.000402"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:52:04.668778" elapsed="0.000192"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:52:04.669380" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:52:04.669135" elapsed="0.000270"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:04.669844" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:04.669591" elapsed="0.000295"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:52:04.670031" elapsed="0.000197"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:52:04.670584" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:52:04.670379" elapsed="0.000231"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:04.671017" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:04.670776" elapsed="0.000281"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:04.671560" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:04.671222" elapsed="0.000363"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:04.671988" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:04.671748" elapsed="0.000288"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:04.672479" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:04.672198" elapsed="0.000306"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:52:04.679034" elapsed="0.000231"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:52:04.688343" elapsed="0.000249"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:52:04.689331" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:52:04.688818" elapsed="0.000550"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:52:04.690876" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:52:04.690080" elapsed="0.000841"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:52:04.691075" elapsed="0.000042"/>
</return>
<msg time="2026-04-08T00:52:04.691278" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:52:04.689592" elapsed="0.001714"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:52:04.692002" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:52:04.691497" elapsed="0.000537"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:52:04.692780" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:52:04.692246" elapsed="0.000568"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:52:04.693402" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:52:04.703397" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:52:04.693003" elapsed="0.012214">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:04.705410" elapsed="0.000078"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:04.705644" elapsed="0.000022"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:04.705813" elapsed="0.000021"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:04.705982" elapsed="0.000024"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:04.706194" elapsed="0.000023"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:04.706366" elapsed="0.000020"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:04.706646" elapsed="0.000021"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:04.706876" elapsed="0.000021"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:04.707070" elapsed="0.000020"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:52:04.706515" elapsed="0.000637"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:52:04.706440" elapsed="0.000758"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:04.707344" elapsed="0.000021"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:52:04.707406" elapsed="0.000016"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:52:04.687667" elapsed="0.019858">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:52:04.707598" elapsed="0.000015"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T00:52:04.676798" elapsed="0.030902">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:04.707877" elapsed="0.000022"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:04.712199" elapsed="0.000028"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:04.712415" elapsed="0.000022"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T00:52:04.712482" elapsed="0.000015"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T00:52:04.667665" elapsed="0.044924">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:52:04.712703" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:52:04.712747" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:52:04.667089" elapsed="0.045682"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T00:52:04.712980" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:52:04.712863" elapsed="0.000160"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:04.712843" elapsed="0.000202"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:52:04.714473" elapsed="0.000211"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:52:04.715146" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:52:04.714838" elapsed="0.000356"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:52:04.716194" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:52:04.715719" elapsed="0.000524"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:52:04.716293" elapsed="0.000031"/>
</return>
<msg time="2026-04-08T00:52:04.716447" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:52:04.715378" elapsed="0.001094"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:52:04.717009" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:52:04.716634" elapsed="0.000402"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:52:04.717562" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:52:04.717212" elapsed="0.000377"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:52:04.717955" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:52:04.728952" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:52:04.717751" elapsed="0.012916">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:04.730851" elapsed="0.000023"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:04.731026" elapsed="0.000020"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:04.731208" elapsed="0.000022"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:04.731375" elapsed="0.000020"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:04.731544" elapsed="0.000020"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:04.731706" elapsed="0.000033"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:04.731995" elapsed="0.000025"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:04.732211" elapsed="0.000023"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:04.732378" elapsed="0.000021"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:52:04.731853" elapsed="0.000578"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:52:04.731786" elapsed="0.000671"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:04.732597" elapsed="0.000020"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:52:04.732654" elapsed="0.000015"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:52:04.713904" elapsed="0.018857">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:52:04.732874" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:52:04.732919" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:52:04.713227" elapsed="0.019715"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T00:52:04.733584" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T00:52:04.733263" elapsed="0.000382">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T00:52:04.733025" elapsed="0.000720">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T00:52:04.733006" elapsed="0.000772">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T00:52:04.733824" elapsed="0.000016"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:52:04.666536" elapsed="0.067386">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:04.734100" elapsed="0.000022"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:04.734290" elapsed="0.000021"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T00:52:04.734354" elapsed="0.000015"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T00:52:04.664099" elapsed="0.070353">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:04.734620" elapsed="0.000021"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:04.734799" elapsed="0.000020"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:04.734967" elapsed="0.000020"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:04.735128" elapsed="0.000020"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:04.735310" elapsed="0.000021"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:04.735475" elapsed="0.000020"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T00:52:04.735536" elapsed="0.000014"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T00:52:04.661259" elapsed="0.074375">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:52:05.766431" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:52:05.765946" elapsed="0.000517"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:52:05.767032" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:52:05.766634" elapsed="0.000429"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:52:05.767113" elapsed="0.000063"/>
</return>
<msg time="2026-04-08T00:52:05.767312" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:52:05.765556" elapsed="0.001782"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T00:52:05.772246" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T00:52:05.772024" elapsed="0.000249"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:52:05.772424" elapsed="0.000193"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:52:05.773204" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:52:05.772966" elapsed="0.000266"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:05.773680" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:05.773419" elapsed="0.000304"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:52:05.773870" elapsed="0.000182"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:52:05.774433" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:52:05.774223" elapsed="0.000236"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:05.774873" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:05.774629" elapsed="0.000286"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:05.775432" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:05.775067" elapsed="0.000392"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:05.775887" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:05.775627" elapsed="0.000307"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:05.776399" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:05.776085" elapsed="0.000340"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:52:05.782759" elapsed="0.000215"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:52:05.791498" elapsed="0.000229"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:52:05.792308" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:52:05.791883" elapsed="0.000453"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:52:05.793491" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:52:05.792925" elapsed="0.000609"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:52:05.793668" elapsed="0.000032"/>
</return>
<msg time="2026-04-08T00:52:05.793823" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:52:05.792525" elapsed="0.001324"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:52:05.794465" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:52:05.794011" elapsed="0.000481"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:52:05.795139" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:52:05.794650" elapsed="0.000532"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:52:05.795694" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:52:05.805855" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:52:05.795347" elapsed="0.012314">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:05.807854" elapsed="0.000024"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:05.808032" elapsed="0.000047"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:05.808448" elapsed="0.000047"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:05.808818" elapsed="0.000046"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:05.809241" elapsed="0.000047"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:05.809608" elapsed="0.000046"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:05.810229" elapsed="0.000048"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:05.810820" elapsed="0.000049"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:05.811297" elapsed="0.000071"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:52:05.809913" elapsed="0.001601"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:52:05.809757" elapsed="0.001821"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:05.811901" elapsed="0.000047"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:52:05.812035" elapsed="0.000036"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:52:05.790989" elapsed="0.021336">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:52:05.812487" elapsed="0.000036"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T00:52:05.780566" elapsed="0.032148">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:05.813106" elapsed="0.000097"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:05.821251" elapsed="0.000027"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:05.821445" elapsed="0.000021"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T00:52:05.821511" elapsed="0.000016"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T00:52:05.771476" elapsed="0.050142">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:52:05.821731" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:52:05.821776" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:52:05.770906" elapsed="0.050894"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T00:52:05.822005" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:52:05.821891" elapsed="0.000157"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:05.821871" elapsed="0.000198"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:52:05.823403" elapsed="0.000214"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:52:05.824074" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:52:05.823770" elapsed="0.000333"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:52:05.824900" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:52:05.824638" elapsed="0.000288"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:52:05.824973" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:52:05.825120" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:52:05.824301" elapsed="0.000843"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:52:05.825682" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:52:05.825319" elapsed="0.000389"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:52:05.826262" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:52:05.825900" elapsed="0.000389"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:52:05.826645" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:52:05.834672" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:52:05.826449" elapsed="0.009950">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:05.836583" elapsed="0.000023"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:05.836754" elapsed="0.000020"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:05.836916" elapsed="0.000019"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:05.837077" elapsed="0.000022"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:05.837266" elapsed="0.000021"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:05.837428" elapsed="0.000020"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:05.837840" elapsed="0.000020"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:05.838011" elapsed="0.000020"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:05.838185" elapsed="0.000021"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:52:05.837708" elapsed="0.000531"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:52:05.837492" elapsed="0.000774"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:05.838406" elapsed="0.000020"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:52:05.838464" elapsed="0.000016"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:52:05.822830" elapsed="0.015742">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:52:05.838684" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:52:05.838728" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:52:05.822232" elapsed="0.016519"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T00:52:05.839418" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T00:52:05.839071" elapsed="0.000408">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T00:52:05.838833" elapsed="0.000708">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T00:52:05.838815" elapsed="0.000757">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T00:52:05.839617" elapsed="0.000015"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:52:05.770359" elapsed="0.069354">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:05.839890" elapsed="0.000021"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:05.840054" elapsed="0.000020"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T00:52:05.840218" elapsed="0.000024"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T00:52:05.767635" elapsed="0.072726">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:05.840597" elapsed="0.000029"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:05.840845" elapsed="0.000027"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:05.841079" elapsed="0.000028"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:05.841325" elapsed="0.000028"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:05.841555" elapsed="0.000027"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:05.841779" elapsed="0.000028"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T00:52:05.841864" elapsed="0.000020"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T00:52:05.764779" elapsed="0.077220">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:52:06.873449" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:52:06.872929" elapsed="0.000553"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:52:06.874072" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:52:06.873661" elapsed="0.000438"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:52:06.874150" elapsed="0.000064"/>
</return>
<msg time="2026-04-08T00:52:06.874350" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:52:06.872542" elapsed="0.001833"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T00:52:06.878957" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T00:52:06.878765" elapsed="0.000218"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:52:06.879133" elapsed="0.000210"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:52:06.879781" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:52:06.879502" elapsed="0.000305"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:06.880281" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:06.879998" elapsed="0.000325"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:52:06.880470" elapsed="0.000183"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:52:06.881014" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:52:06.880805" elapsed="0.000247"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:06.881687" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:06.881257" elapsed="0.000472"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:06.882250" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:06.881883" elapsed="0.000394"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:06.882761" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:06.882519" elapsed="0.000287"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:06.883277" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:06.882957" elapsed="0.000346"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:52:06.889846" elapsed="0.000214"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:52:06.898547" elapsed="0.000211"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:52:06.899322" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:52:06.898914" elapsed="0.000435"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:52:06.900498" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:52:06.899936" elapsed="0.000603"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:52:06.900674" elapsed="0.000032"/>
</return>
<msg time="2026-04-08T00:52:06.900847" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:52:06.899541" elapsed="0.001334"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:52:06.901556" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:52:06.901035" elapsed="0.000548"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:52:06.902187" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:52:06.901742" elapsed="0.000473"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:52:06.902716" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:52:06.914741" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:52:06.902378" elapsed="0.016278">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:06.919071" elapsed="0.000052"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:06.919495" elapsed="0.000047"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:06.919867" elapsed="0.000045"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:06.920274" elapsed="0.000049"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:06.920674" elapsed="0.000046"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:06.921036" elapsed="0.000045"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:06.921659" elapsed="0.000045"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:06.922212" elapsed="0.000050"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:06.922652" elapsed="0.000047"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:52:06.921374" elapsed="0.001491"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:52:06.921214" elapsed="0.001718"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:06.923289" elapsed="0.000048"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:52:06.923426" elapsed="0.000035"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:52:06.898041" elapsed="0.025642">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:52:06.923938" elapsed="0.000038"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T00:52:06.887582" elapsed="0.036626">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:06.924657" elapsed="0.000049"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:06.929207" elapsed="0.000026"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:06.929402" elapsed="0.000021"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T00:52:06.929468" elapsed="0.000015"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T00:52:06.878225" elapsed="0.051349">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:52:06.929686" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:52:06.929731" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:52:06.877652" elapsed="0.052103"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T00:52:06.929957" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:52:06.929844" elapsed="0.000156"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:06.929823" elapsed="0.000199"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:52:06.931351" elapsed="0.000208"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:52:06.932009" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:52:06.931709" elapsed="0.000325"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:52:06.932849" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:52:06.932585" elapsed="0.000290"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:52:06.932921" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:52:06.933067" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:52:06.932236" elapsed="0.000856"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:52:06.933628" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:52:06.933264" elapsed="0.000390"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:52:06.934170" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:52:06.933808" elapsed="0.000389"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:52:06.934551" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:52:06.945464" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:52:06.934356" elapsed="0.014158">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:06.948926" elapsed="0.000050"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:06.949363" elapsed="0.000049"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:06.949818" elapsed="0.000047"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:06.950221" elapsed="0.000049"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:06.950604" elapsed="0.000045"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:06.950967" elapsed="0.000045"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:06.951569" elapsed="0.000045"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:06.951945" elapsed="0.000044"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:06.952371" elapsed="0.000047"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:52:06.951286" elapsed="0.001206"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:52:06.951110" elapsed="0.001439"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:06.952857" elapsed="0.000044"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:52:06.952986" elapsed="0.000033"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:52:06.930787" elapsed="0.022470">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:52:06.953510" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:52:06.953607" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:52:06.930186" elapsed="0.023474"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T00:52:06.955061" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T00:52:06.954352" elapsed="0.000875">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T00:52:06.953843" elapsed="0.001524">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T00:52:06.953801" elapsed="0.001635">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T00:52:06.955537" elapsed="0.000036"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:52:06.877062" elapsed="0.078691">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:06.956236" elapsed="0.000052"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:06.956617" elapsed="0.000044"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T00:52:06.956754" elapsed="0.000032"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T00:52:06.874671" elapsed="0.082297">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:06.957214" elapsed="0.000021"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:06.957391" elapsed="0.000020"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:06.957558" elapsed="0.000019"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:06.957753" elapsed="0.000020"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:06.957916" elapsed="0.000020"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:06.958077" elapsed="0.000020"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T00:52:06.958138" elapsed="0.000014"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T00:52:06.871728" elapsed="0.086524">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:52:07.993308" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:52:07.992819" elapsed="0.000523"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:52:07.993829" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:52:07.993512" elapsed="0.000343"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:52:07.993902" elapsed="0.000040"/>
</return>
<msg time="2026-04-08T00:52:07.994072" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:52:07.992431" elapsed="0.001667"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T00:52:07.998709" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T00:52:07.998521" elapsed="0.000214"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:52:07.998886" elapsed="0.000212"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:52:07.999488" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:52:07.999276" elapsed="0.000237"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:08.000011" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:07.999700" elapsed="0.000366"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:52:08.000258" elapsed="0.000191"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:52:08.000816" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:52:08.000609" elapsed="0.000232"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:08.001284" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:08.001014" elapsed="0.000311"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:08.001815" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:08.001475" elapsed="0.000366"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:08.002254" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:08.002004" elapsed="0.000293"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:08.002723" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:08.002444" elapsed="0.000304"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:52:08.009313" elapsed="0.000214"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:52:08.018020" elapsed="0.000227"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:52:08.018806" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:52:08.018405" elapsed="0.000428"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:52:08.020137" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:52:08.019520" elapsed="0.000695"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:52:08.020361" elapsed="0.000033"/>
</return>
<msg time="2026-04-08T00:52:08.020522" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:52:08.019085" elapsed="0.001463"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:52:08.021183" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:52:08.020712" elapsed="0.000500"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:52:08.021802" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:52:08.021372" elapsed="0.000457"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:52:08.022347" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:52:08.034574" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:52:08.021992" elapsed="0.015065">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:08.037354" elapsed="0.000033"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:08.037598" elapsed="0.000029"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:08.037830" elapsed="0.000028"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:08.038060" elapsed="0.000035"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:08.038398" elapsed="0.000030"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:08.038628" elapsed="0.000029"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:08.039005" elapsed="0.000028"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:08.039341" elapsed="0.000029"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:08.039611" elapsed="0.000063"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:52:08.038828" elapsed="0.000948"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:52:08.038727" elapsed="0.001090"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:08.040019" elapsed="0.000030"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:52:08.040113" elapsed="0.000030"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:52:08.017528" elapsed="0.022816">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:52:08.040444" elapsed="0.000022"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T00:52:08.006998" elapsed="0.033585">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:08.040829" elapsed="0.000029"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:08.046848" elapsed="0.000038"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:08.047193" elapsed="0.000031"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T00:52:08.047287" elapsed="0.000021"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T00:52:07.997966" elapsed="0.049469">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:52:08.047623" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:52:08.047686" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:52:07.997410" elapsed="0.050309"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T00:52:08.048007" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:52:08.047845" elapsed="0.000221"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:08.047816" elapsed="0.000287"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:52:08.049994" elapsed="0.000356"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:52:08.051030" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:52:08.050568" elapsed="0.000499"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:52:08.052312" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:52:08.051854" elapsed="0.000486"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:52:08.052387" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:52:08.052536" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:52:08.051347" elapsed="0.001214"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:52:08.053085" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:52:08.052719" elapsed="0.000394"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:52:08.053628" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:52:08.053285" elapsed="0.000369"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:52:08.054016" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:52:08.064823" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:52:08.053812" elapsed="0.013439">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:08.067533" elapsed="0.000032"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:08.067777" elapsed="0.000028"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:08.068036" elapsed="0.000031"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:08.068293" elapsed="0.000030"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:08.068533" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:08.068756" elapsed="0.000027"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:08.069115" elapsed="0.000030"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:08.069375" elapsed="0.000028"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:08.069650" elapsed="0.000030"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:52:08.068937" elapsed="0.000790"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:52:08.068845" elapsed="0.000918"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:08.069955" elapsed="0.000028"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:52:08.070037" elapsed="0.000020"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:52:08.049233" elapsed="0.020975">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:52:08.070376" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:52:08.070453" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:52:08.048363" elapsed="0.022125"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T00:52:08.071416" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T00:52:08.070906" elapsed="0.000602">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T00:52:08.070606" elapsed="0.000988">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T00:52:08.070579" elapsed="0.001059">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T00:52:08.071701" elapsed="0.000022"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:52:07.996846" elapsed="0.074990">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:08.072084" elapsed="0.000030"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:08.072340" elapsed="0.000029"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T00:52:08.072428" elapsed="0.000019"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T00:52:07.994414" elapsed="0.078149">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:08.072795" elapsed="0.000028"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:08.073042" elapsed="0.000029"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:08.073298" elapsed="0.000029"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:08.073524" elapsed="0.000028"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:08.073752" elapsed="0.000027"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:08.073976" elapsed="0.000027"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T00:52:08.074059" elapsed="0.000020"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T00:52:07.991453" elapsed="0.082759">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:52:09.106748" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:52:09.106227" elapsed="0.000554"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:52:09.107299" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:52:09.106957" elapsed="0.000369"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:52:09.107375" elapsed="0.000043"/>
</return>
<msg time="2026-04-08T00:52:09.107552" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:52:09.105689" elapsed="0.001891"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T00:52:09.112409" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T00:52:09.112209" elapsed="0.000227"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:52:09.112592" elapsed="0.000198"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:52:09.113204" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:52:09.112946" elapsed="0.000285"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:09.113695" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:09.113422" elapsed="0.000317"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:52:09.113910" elapsed="0.000204"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:52:09.114501" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:52:09.114289" elapsed="0.000237"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:09.114950" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:09.114698" elapsed="0.000305"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:09.115559" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:09.115174" elapsed="0.000411"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:09.115993" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:09.115754" elapsed="0.000284"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:09.116514" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:09.116221" elapsed="0.000319"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:52:09.123261" elapsed="0.000221"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:52:09.132306" elapsed="0.000217"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:52:09.133184" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:52:09.132684" elapsed="0.000529"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:52:09.134387" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:52:09.133817" elapsed="0.000615"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:52:09.134570" elapsed="0.000033"/>
</return>
<msg time="2026-04-08T00:52:09.134730" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:52:09.133408" elapsed="0.001348"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:52:09.135415" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:52:09.134920" elapsed="0.000523"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:52:09.136039" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:52:09.135605" elapsed="0.000462"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:52:09.136726" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:52:09.146864" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:52:09.136289" elapsed="0.013109">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:09.149668" elapsed="0.000034"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:09.149915" elapsed="0.000029"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:09.150148" elapsed="0.000056"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:09.150415" elapsed="0.000030"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:09.150659" elapsed="0.000029"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:09.150889" elapsed="0.000029"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:09.151298" elapsed="0.000029"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:09.151617" elapsed="0.000028"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:09.151887" elapsed="0.000030"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:52:09.151092" elapsed="0.000908"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:52:09.150989" elapsed="0.001051"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:09.152293" elapsed="0.000039"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:52:09.152400" elapsed="0.000023"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:52:09.131778" elapsed="0.020804">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:52:09.152725" elapsed="0.000023"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T00:52:09.120942" elapsed="0.031930">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:09.153148" elapsed="0.000053"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:09.159766" elapsed="0.000041"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:09.160048" elapsed="0.000029"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T00:52:09.160141" elapsed="0.000043"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T00:52:09.111626" elapsed="0.048691">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:52:09.160482" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:52:09.160562" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:52:09.111043" elapsed="0.049556"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T00:52:09.160951" elapsed="0.000019"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:52:09.160786" elapsed="0.000225"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:09.160755" elapsed="0.000286"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:52:09.163023" elapsed="0.000331"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:52:09.164016" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:52:09.163574" elapsed="0.000478"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:52:09.165512" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:52:09.164892" elapsed="0.000649"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:52:09.165592" elapsed="0.000031"/>
</return>
<msg time="2026-04-08T00:52:09.165747" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:52:09.164335" elapsed="0.001437"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:52:09.166334" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:52:09.165934" elapsed="0.000429"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:52:09.166876" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:52:09.166522" elapsed="0.000380"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:52:09.167296" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:52:09.176187" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:52:09.167065" elapsed="0.011214">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:09.178548" elapsed="0.000032"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:09.178789" elapsed="0.000029"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:09.179019" elapsed="0.000028"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:09.179272" elapsed="0.000030"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:09.179517" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:09.179745" elapsed="0.000030"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:09.180112" elapsed="0.000028"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:09.180393" elapsed="0.000030"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:09.180627" elapsed="0.000028"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:52:09.179933" elapsed="0.000769"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:52:09.179839" elapsed="0.000900"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:09.180934" elapsed="0.000028"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:52:09.181017" elapsed="0.000021"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:52:09.162238" elapsed="0.018955">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:52:09.181359" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:52:09.181421" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:52:09.161275" elapsed="0.020179"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T00:52:09.182418" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T00:52:09.181941" elapsed="0.000564">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T00:52:09.181634" elapsed="0.000958">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T00:52:09.181606" elapsed="0.001030">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T00:52:09.182700" elapsed="0.000022"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:52:09.110489" elapsed="0.072351">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:09.183090" elapsed="0.000029"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:09.183347" elapsed="0.000029"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T00:52:09.183435" elapsed="0.000020"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T00:52:09.107885" elapsed="0.075689">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:09.183811" elapsed="0.000029"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:09.184060" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:09.184347" elapsed="0.000035"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:09.184588" elapsed="0.000028"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:09.184825" elapsed="0.000027"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:09.185084" elapsed="0.000032"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T00:52:09.185187" elapsed="0.000016"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T00:52:09.104757" elapsed="0.080533">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:52:10.216406" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:52:10.215888" elapsed="0.000551"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:52:10.216927" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:52:10.216612" elapsed="0.000341"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:52:10.217002" elapsed="0.000044"/>
</return>
<msg time="2026-04-08T00:52:10.217196" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:52:10.215490" elapsed="0.001732"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T00:52:10.222241" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T00:52:10.222034" elapsed="0.000235"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:52:10.222422" elapsed="0.000194"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:52:10.222979" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:52:10.222768" elapsed="0.000237"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:10.223477" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:10.223206" elapsed="0.000314"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:52:10.223670" elapsed="0.000183"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:52:10.224244" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:52:10.224006" elapsed="0.000264"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:10.224680" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:10.224437" elapsed="0.000284"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:10.225229" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:10.224872" elapsed="0.000382"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:10.225651" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:10.225418" elapsed="0.000276"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:10.226122" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:10.225842" elapsed="0.000305"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:52:10.232723" elapsed="0.000217"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:52:10.241577" elapsed="0.000216"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:52:10.242367" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:52:10.241951" elapsed="0.000443"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:52:10.243586" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:52:10.242982" elapsed="0.000646"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:52:10.243763" elapsed="0.000033"/>
</return>
<msg time="2026-04-08T00:52:10.243920" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:52:10.242583" elapsed="0.001362"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:52:10.244572" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:52:10.244105" elapsed="0.000495"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:52:10.245208" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:52:10.244760" elapsed="0.000475"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:52:10.245738" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:52:10.255364" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:52:10.245396" elapsed="0.011824">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:10.257412" elapsed="0.000024"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:10.257587" elapsed="0.000021"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:10.257754" elapsed="0.000021"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:10.257921" elapsed="0.000020"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:10.258145" elapsed="0.000036"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:10.258334" elapsed="0.000021"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:10.258615" elapsed="0.000021"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:10.258843" elapsed="0.000021"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:10.259037" elapsed="0.000043"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:52:10.258483" elapsed="0.000663"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:52:10.258406" elapsed="0.000792"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:10.259352" elapsed="0.000021"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:52:10.259411" elapsed="0.000016"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:52:10.241063" elapsed="0.018472">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:52:10.259609" elapsed="0.000016"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T00:52:10.230406" elapsed="0.029302">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:10.259883" elapsed="0.000021"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:10.265586" elapsed="0.000036"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:10.265851" elapsed="0.000030"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T00:52:10.265942" elapsed="0.000021"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T00:52:10.221490" elapsed="0.044598">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:52:10.266271" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:52:10.266334" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:52:10.220909" elapsed="0.045457"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T00:52:10.266648" elapsed="0.000019"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:52:10.266489" elapsed="0.000219"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:10.266461" elapsed="0.000279"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:52:10.268604" elapsed="0.000290"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:52:10.269553" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:52:10.269106" elapsed="0.000483"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:52:10.270699" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:52:10.270328" elapsed="0.000408"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:52:10.270853" elapsed="0.000044"/>
</return>
<msg time="2026-04-08T00:52:10.271099" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:52:10.269841" elapsed="0.001300"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:52:10.271721" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:52:10.271351" elapsed="0.000396"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:52:10.272264" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:52:10.271903" elapsed="0.000387"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:52:10.272649" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:52:10.279680" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:52:10.272451" elapsed="0.008930">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:10.281566" elapsed="0.000022"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:10.281736" elapsed="0.000020"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:10.281900" elapsed="0.000020"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:10.282064" elapsed="0.000019"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:10.282250" elapsed="0.000021"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:10.282413" elapsed="0.000020"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:10.282676" elapsed="0.000019"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:10.282845" elapsed="0.000054"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:10.283058" elapsed="0.000021"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:52:10.282542" elapsed="0.000570"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:52:10.282476" elapsed="0.000662"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:10.283362" elapsed="0.000029"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:52:10.283445" elapsed="0.000021"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:52:10.267820" elapsed="0.015773">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:52:10.283750" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:52:10.283811" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:52:10.266947" elapsed="0.016896"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T00:52:10.285050" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T00:52:10.284284" elapsed="0.000855">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T00:52:10.283956" elapsed="0.001308">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T00:52:10.283930" elapsed="0.001379">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T00:52:10.285372" elapsed="0.000022"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:52:10.220356" elapsed="0.065153">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:10.285809" elapsed="0.000031"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:10.286043" elapsed="0.000028"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T00:52:10.286129" elapsed="0.000019"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T00:52:10.217525" elapsed="0.068766">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:10.286525" elapsed="0.000028"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:10.286770" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:10.287026" elapsed="0.000028"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:10.287275" elapsed="0.000028"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:10.287506" elapsed="0.000027"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:10.287732" elapsed="0.000027"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T00:52:10.287815" elapsed="0.000020"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T00:52:10.214631" elapsed="0.073320">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:52:11.327089" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:52:11.326577" elapsed="0.000547"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:52:11.327640" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:52:11.327323" elapsed="0.000343"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:52:11.327719" elapsed="0.000044"/>
</return>
<msg time="2026-04-08T00:52:11.327896" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:52:11.326143" elapsed="0.001778"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T00:52:11.332541" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T00:52:11.332346" elapsed="0.000222"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:52:11.332718" elapsed="0.000193"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:52:11.333287" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:52:11.333062" elapsed="0.000251"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:11.333760" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:11.333503" elapsed="0.000298"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:52:11.333945" elapsed="0.000180"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:52:11.334498" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:52:11.334290" elapsed="0.000233"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:11.335050" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:11.334778" elapsed="0.000315"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:11.335619" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:11.335267" elapsed="0.000377"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:11.336048" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:11.335811" elapsed="0.000281"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:11.336541" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:11.336257" elapsed="0.000310"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:52:11.343122" elapsed="0.000233"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:52:11.351947" elapsed="0.000225"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:52:11.352713" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:52:11.352330" elapsed="0.000409"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:52:11.353891" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:52:11.353352" elapsed="0.000580"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:52:11.354066" elapsed="0.000032"/>
</return>
<msg time="2026-04-08T00:52:11.354242" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:52:11.352925" elapsed="0.001342"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:52:11.354897" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:52:11.354426" elapsed="0.000500"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:52:11.355557" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:52:11.355101" elapsed="0.000483"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:52:11.356107" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:52:11.369343" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:52:11.355745" elapsed="0.016111">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:11.372120" elapsed="0.000051"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:11.372387" elapsed="0.000030"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:11.372619" elapsed="0.000029"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:11.372851" elapsed="0.000028"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:11.373086" elapsed="0.000029"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:11.373344" elapsed="0.000029"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:11.373726" elapsed="0.000029"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:11.374043" elapsed="0.000029"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:11.374350" elapsed="0.000029"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:52:11.373546" elapsed="0.000919"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:52:11.373444" elapsed="0.001061"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:11.374730" elapsed="0.000041"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:52:11.374829" elapsed="0.000021"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:52:11.351453" elapsed="0.023539">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:52:11.375147" elapsed="0.000044"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T00:52:11.340889" elapsed="0.034432">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:11.375568" elapsed="0.000030"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:11.381555" elapsed="0.000038"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:11.381825" elapsed="0.000029"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T00:52:11.381915" elapsed="0.000022"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T00:52:11.331786" elapsed="0.050276">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:52:11.382242" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:52:11.382308" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:52:11.331225" elapsed="0.051116"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T00:52:11.382644" elapsed="0.000020"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:52:11.382469" elapsed="0.000237"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:11.382439" elapsed="0.000299"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:52:11.384600" elapsed="0.000290"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:52:11.385553" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:52:11.385102" elapsed="0.000487"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:52:11.386735" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:52:11.386329" elapsed="0.000450"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:52:11.386846" elapsed="0.000042"/>
</return>
<msg time="2026-04-08T00:52:11.387053" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:52:11.385844" elapsed="0.001242"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:52:11.387676" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:52:11.387310" elapsed="0.000392"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:52:11.388223" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:52:11.387856" elapsed="0.000394"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:52:11.388607" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:52:11.396939" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:52:11.388409" elapsed="0.010927">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:11.399692" elapsed="0.000037"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:11.399942" elapsed="0.000028"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:11.400210" elapsed="0.000030"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:11.400452" elapsed="0.000028"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:11.400687" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:11.400912" elapsed="0.000029"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:11.401319" elapsed="0.000029"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:11.401557" elapsed="0.000028"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:11.401781" elapsed="0.000027"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:52:11.401115" elapsed="0.000738"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:52:11.401009" elapsed="0.000882"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:11.402086" elapsed="0.000028"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:52:11.402188" elapsed="0.000025"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:52:11.383822" elapsed="0.018536">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:52:11.402551" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:52:11.402619" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:52:11.382949" elapsed="0.019750"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T00:52:11.403655" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T00:52:11.403145" elapsed="0.000595">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T00:52:11.402829" elapsed="0.000995">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T00:52:11.402801" elapsed="0.001067">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T00:52:11.403931" elapsed="0.000021"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:52:11.330640" elapsed="0.073435">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:11.404345" elapsed="0.000030"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:11.404579" elapsed="0.000027"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T00:52:11.404664" elapsed="0.000020"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T00:52:11.328236" elapsed="0.076564">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:11.405034" elapsed="0.000029"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:11.405368" elapsed="0.000030"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:11.405607" elapsed="0.000028"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:11.405832" elapsed="0.000027"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:11.406063" elapsed="0.000027"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:11.406310" elapsed="0.000029"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T00:52:11.406398" elapsed="0.000021"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T00:52:11.325215" elapsed="0.081352">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:52:12.439427" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:52:12.438938" elapsed="0.000521"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:52:12.439953" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:52:12.439629" elapsed="0.000351"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:52:12.440027" elapsed="0.000040"/>
</return>
<msg time="2026-04-08T00:52:12.440215" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:52:12.438544" elapsed="0.001697"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T00:52:12.444802" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T00:52:12.444615" elapsed="0.000214"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:52:12.444978" elapsed="0.000206"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:52:12.445547" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:52:12.445338" elapsed="0.000234"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:12.446011" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:12.445758" elapsed="0.000294"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:52:12.446213" elapsed="0.000186"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:52:12.446755" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:52:12.446550" elapsed="0.000231"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:12.447206" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:12.446948" elapsed="0.000299"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:12.447748" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:12.447397" elapsed="0.000377"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:12.448194" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:12.447941" elapsed="0.000296"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:12.448675" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:12.448391" elapsed="0.000309"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:52:12.455259" elapsed="0.000213"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:52:12.463918" elapsed="0.000299"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:52:12.464768" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:52:12.464380" elapsed="0.000415"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:52:12.465950" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:52:12.465405" elapsed="0.000588"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:52:12.466128" elapsed="0.000047"/>
</return>
<msg time="2026-04-08T00:52:12.466302" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:52:12.464981" elapsed="0.001347"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:52:12.466929" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:52:12.466486" elapsed="0.000470"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:52:12.467595" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:52:12.467114" elapsed="0.000513"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:52:12.468135" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:52:12.479211" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:52:12.467795" elapsed="0.015288">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:12.483571" elapsed="0.000057"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:12.483968" elapsed="0.000047"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:12.484383" elapsed="0.000048"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:12.484755" elapsed="0.000045"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:12.485137" elapsed="0.000075"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:12.485534" elapsed="0.000046"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:12.486128" elapsed="0.000075"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:12.486671" elapsed="0.000047"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:12.487103" elapsed="0.000048"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:52:12.485839" elapsed="0.001487"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:52:12.485686" elapsed="0.001704"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:12.487761" elapsed="0.000048"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:52:12.487895" elapsed="0.000034"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:52:12.463411" elapsed="0.024736">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:52:12.488307" elapsed="0.000022"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T00:52:12.452979" elapsed="0.035467">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:12.488738" elapsed="0.000031"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:12.494729" elapsed="0.000037"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:12.494997" elapsed="0.000029"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T00:52:12.495088" elapsed="0.000021"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T00:52:12.444057" elapsed="0.051199">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:52:12.495437" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:52:12.495499" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:52:12.443474" elapsed="0.052058"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T00:52:12.495813" elapsed="0.000019"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:52:12.495655" elapsed="0.000217"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:12.495627" elapsed="0.000276"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:52:12.497773" elapsed="0.000289"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:52:12.498724" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:52:12.498296" elapsed="0.000465"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:52:12.499915" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:52:12.499540" elapsed="0.000411"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:52:12.500017" elapsed="0.000042"/>
</return>
<msg time="2026-04-08T00:52:12.500310" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:52:12.499010" elapsed="0.001351"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:52:12.500914" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:52:12.500546" elapsed="0.000394"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:52:12.501454" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:52:12.501095" elapsed="0.000385"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:52:12.501830" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:52:12.509127" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:52:12.501637" elapsed="0.009875">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:12.511765" elapsed="0.000031"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:12.512005" elapsed="0.000028"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:12.512252" elapsed="0.000030"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:12.512482" elapsed="0.000029"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:12.512718" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:12.512943" elapsed="0.000028"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:12.513318" elapsed="0.000073"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:12.513607" elapsed="0.000028"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:12.513830" elapsed="0.000028"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:52:12.513122" elapsed="0.000815"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:52:12.513031" elapsed="0.000948"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:12.514194" elapsed="0.000029"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:52:12.514278" elapsed="0.000021"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:52:12.497001" elapsed="0.017424">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:52:12.514582" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:52:12.514643" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:52:12.496111" elapsed="0.018565"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T00:52:12.515571" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T00:52:12.515087" elapsed="0.000569">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T00:52:12.514790" elapsed="0.000952">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T00:52:12.514764" elapsed="0.001021">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T00:52:12.515848" elapsed="0.000021"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:52:12.442914" elapsed="0.073072">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:12.516256" elapsed="0.000037"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:12.516495" elapsed="0.000028"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T00:52:12.516580" elapsed="0.000020"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T00:52:12.440536" elapsed="0.076178">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:12.516945" elapsed="0.000028"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:12.517209" elapsed="0.000030"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:12.517447" elapsed="0.000028"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:12.517671" elapsed="0.000028"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:12.517900" elapsed="0.000028"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:12.518125" elapsed="0.000027"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T00:52:12.518231" elapsed="0.000022"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T00:52:12.437731" elapsed="0.080637">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:52:13.550092" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:52:13.549626" elapsed="0.000499"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:52:13.550625" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:52:13.550311" elapsed="0.000341"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:52:13.550699" elapsed="0.000039"/>
</return>
<msg time="2026-04-08T00:52:13.550870" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:52:13.549229" elapsed="0.001667"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T00:52:13.555534" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T00:52:13.555346" elapsed="0.000214"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:52:13.555710" elapsed="0.000192"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:52:13.556282" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:52:13.556054" elapsed="0.000254"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:13.556745" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:13.556493" elapsed="0.000294"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:52:13.556932" elapsed="0.000181"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:52:13.557495" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:52:13.557279" elapsed="0.000241"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:13.557928" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:13.557685" elapsed="0.000284"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:13.558481" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:13.558119" elapsed="0.000389"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:13.558904" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:13.558671" elapsed="0.000277"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:13.559394" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:13.559095" elapsed="0.000326"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:52:13.567529" elapsed="0.000216"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:52:13.576369" elapsed="0.000210"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:52:13.577132" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:52:13.576735" elapsed="0.000469"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:52:13.578367" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:52:13.577801" elapsed="0.000608"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:52:13.578547" elapsed="0.000033"/>
</return>
<msg time="2026-04-08T00:52:13.578704" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:52:13.577402" elapsed="0.001326"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:52:13.579345" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:52:13.578887" elapsed="0.000485"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:52:13.580017" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:52:13.579588" elapsed="0.000456"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:52:13.580563" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:52:13.593086" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:52:13.580221" elapsed="0.015308">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:13.595790" elapsed="0.000033"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:13.596034" elapsed="0.000030"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:13.596291" elapsed="0.000033"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:13.596530" elapsed="0.000029"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:13.596769" elapsed="0.000029"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:13.596998" elapsed="0.000029"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:13.597425" elapsed="0.000036"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:13.597752" elapsed="0.000029"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:13.598022" elapsed="0.000029"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:52:13.597241" elapsed="0.000894"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:52:13.597119" elapsed="0.001087"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:13.598408" elapsed="0.000029"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:52:13.598491" elapsed="0.000022"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:52:13.575861" elapsed="0.022792">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:52:13.598751" elapsed="0.000021"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T00:52:13.565338" elapsed="0.033550">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:13.599128" elapsed="0.000049"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:13.604926" elapsed="0.000037"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:13.605221" elapsed="0.000030"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T00:52:13.605316" elapsed="0.000021"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T00:52:13.554791" elapsed="0.050669">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:52:13.605667" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:52:13.605728" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:52:13.554236" elapsed="0.051524"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T00:52:13.606040" elapsed="0.000019"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:52:13.605881" elapsed="0.000218"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:13.605854" elapsed="0.000278"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:52:13.608054" elapsed="0.000320"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:52:13.609035" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:52:13.608587" elapsed="0.000486"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:52:13.610103" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:52:13.609671" elapsed="0.000459"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:52:13.610194" elapsed="0.000031"/>
</return>
<msg time="2026-04-08T00:52:13.610344" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:52:13.609336" elapsed="0.001033"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:52:13.610899" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:52:13.610528" elapsed="0.000397"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:52:13.611443" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:52:13.611080" elapsed="0.000389"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:52:13.611828" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:52:13.620628" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:52:13.611630" elapsed="0.011147">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:13.623036" elapsed="0.000032"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:13.623297" elapsed="0.000030"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:13.623528" elapsed="0.000028"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:13.623756" elapsed="0.000028"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:13.623991" elapsed="0.000027"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:13.624236" elapsed="0.000030"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:13.624603" elapsed="0.000028"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:13.624838" elapsed="0.000027"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:13.625073" elapsed="0.000028"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:52:13.624424" elapsed="0.000722"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:52:13.624333" elapsed="0.000871"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:13.625398" elapsed="0.000029"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:52:13.625480" elapsed="0.000021"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:52:13.607297" elapsed="0.018332">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:52:13.625876" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:52:13.625937" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:52:13.606433" elapsed="0.019537"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T00:52:13.626852" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T00:52:13.626411" elapsed="0.000526">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T00:52:13.626087" elapsed="0.000937">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T00:52:13.626060" elapsed="0.001009">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T00:52:13.627132" elapsed="0.000021"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:52:13.553673" elapsed="0.073620">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:13.627538" elapsed="0.000030"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:13.627769" elapsed="0.000028"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T00:52:13.627854" elapsed="0.000020"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T00:52:13.551228" elapsed="0.076759">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:13.628237" elapsed="0.000031"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:13.628486" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:13.628718" elapsed="0.000027"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:13.628972" elapsed="0.000030"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:13.629228" elapsed="0.000029"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:13.629411" elapsed="0.000019"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T00:52:13.629470" elapsed="0.000015"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T00:52:13.548446" elapsed="0.081121">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:52:14.660827" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:52:14.660318" elapsed="0.000542"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:52:14.661365" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:52:14.661034" elapsed="0.000357"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:52:14.661439" elapsed="0.000043"/>
</return>
<msg time="2026-04-08T00:52:14.661617" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:52:14.659882" elapsed="0.001838"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T00:52:14.666610" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T00:52:14.666421" elapsed="0.000216"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:52:14.666790" elapsed="0.000191"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:52:14.667362" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:52:14.667137" elapsed="0.000251"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:14.667841" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:14.667573" elapsed="0.000310"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:52:14.668030" elapsed="0.000199"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:52:14.668587" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:52:14.668380" elapsed="0.000233"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:14.669091" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:14.668845" elapsed="0.000288"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:14.669652" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:14.669307" elapsed="0.000371"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:14.670085" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:14.669848" elapsed="0.000282"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:14.670652" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:14.670334" elapsed="0.000344"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:52:14.677068" elapsed="0.000231"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:52:14.685831" elapsed="0.000212"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:52:14.686605" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:52:14.686215" elapsed="0.000417"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:52:14.687845" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:52:14.687239" elapsed="0.000647"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:52:14.688022" elapsed="0.000032"/>
</return>
<msg time="2026-04-08T00:52:14.688196" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:52:14.686819" elapsed="0.001403"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:52:14.688832" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:52:14.688384" elapsed="0.000475"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:52:14.689470" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:52:14.689017" elapsed="0.000480"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:52:14.690001" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:52:14.699528" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:52:14.689666" elapsed="0.012548">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:14.702489" elapsed="0.000034"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:14.702735" elapsed="0.000030"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:14.703037" elapsed="0.000030"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:14.703297" elapsed="0.000031"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:14.703558" elapsed="0.000036"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:14.703812" elapsed="0.000029"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:14.704220" elapsed="0.000030"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:14.704553" elapsed="0.000030"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:14.704824" elapsed="0.000030"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:52:14.704015" elapsed="0.000922"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:52:14.703910" elapsed="0.001070"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:14.705213" elapsed="0.000031"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:52:14.705300" elapsed="0.000022"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:52:14.685339" elapsed="0.020126">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:52:14.705560" elapsed="0.000021"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T00:52:14.674848" elapsed="0.030852">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:14.705945" elapsed="0.000028"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:14.711814" elapsed="0.000037"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:14.712081" elapsed="0.000028"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T00:52:14.712189" elapsed="0.000023"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T00:52:14.665855" elapsed="0.046484">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:52:14.712496" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:52:14.712556" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:52:14.665295" elapsed="0.047294"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T00:52:14.712874" elapsed="0.000019"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:52:14.712714" elapsed="0.000219"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:14.712685" elapsed="0.000280"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:52:14.714826" elapsed="0.000292"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:52:14.715799" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:52:14.715352" elapsed="0.000483"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:52:14.717005" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:52:14.716638" elapsed="0.000403"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:52:14.717106" elapsed="0.000042"/>
</return>
<msg time="2026-04-08T00:52:14.717338" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:52:14.716141" elapsed="0.001231"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:52:14.718128" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:52:14.717595" elapsed="0.000593"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:52:14.718903" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:52:14.718415" elapsed="0.000525"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:52:14.719510" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:52:14.728457" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:52:14.719183" elapsed="0.012177">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:14.731815" elapsed="0.000052"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:14.732265" elapsed="0.000053"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:14.732646" elapsed="0.000047"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:14.733018" elapsed="0.000044"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:14.733439" elapsed="0.000048"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:14.733808" elapsed="0.000044"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:14.734432" elapsed="0.000047"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:14.734814" elapsed="0.000044"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:14.735196" elapsed="0.000048"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:52:14.734110" elapsed="0.001209"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:52:14.733954" elapsed="0.001424"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:14.735731" elapsed="0.000045"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:52:14.735862" elapsed="0.000035"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:52:14.714041" elapsed="0.022067">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:52:14.736404" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:52:14.736531" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:52:14.713195" elapsed="0.023393"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T00:52:14.738576" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T00:52:14.737298" elapsed="0.001415">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T00:52:14.736785" elapsed="0.002066">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T00:52:14.736740" elapsed="0.002180">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T00:52:14.739021" elapsed="0.000034"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:52:14.664721" elapsed="0.074643">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:14.740134" elapsed="0.000162"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:14.740625" elapsed="0.000026"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T00:52:14.740707" elapsed="0.000019"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T00:52:14.662020" elapsed="0.078797">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:14.740991" elapsed="0.000021"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:14.741188" elapsed="0.000022"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:14.741366" elapsed="0.000020"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:14.741526" elapsed="0.000020"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:14.741814" elapsed="0.000022"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:14.741984" elapsed="0.000021"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T00:52:14.742047" elapsed="0.000016"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T00:52:14.659039" elapsed="0.083110">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:52:15.772249" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:52:15.771768" elapsed="0.000512"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:52:15.772765" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:52:15.772452" elapsed="0.000340"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:52:15.772839" elapsed="0.000039"/>
</return>
<msg time="2026-04-08T00:52:15.773008" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:52:15.771378" elapsed="0.001657"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T00:52:15.777718" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T00:52:15.777529" elapsed="0.000215"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:52:15.777896" elapsed="0.000191"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:52:15.778476" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:52:15.778257" elapsed="0.000244"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:15.779041" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:15.778688" elapsed="0.000395"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:52:15.779251" elapsed="0.000184"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:52:15.779796" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:52:15.779588" elapsed="0.000235"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:15.780254" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:15.779992" elapsed="0.000304"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:15.780793" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:15.780449" elapsed="0.000370"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:15.781240" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:15.780987" elapsed="0.000297"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:15.781719" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:15.781433" elapsed="0.000312"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:52:15.788281" elapsed="0.000217"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:52:15.796949" elapsed="0.000232"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:52:15.797726" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:52:15.797340" elapsed="0.000413"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:52:15.798945" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:52:15.798374" elapsed="0.000613"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:52:15.799122" elapsed="0.000048"/>
</return>
<msg time="2026-04-08T00:52:15.799297" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:52:15.797941" elapsed="0.001382"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:52:15.799924" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:52:15.799482" elapsed="0.000470"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:52:15.800574" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:52:15.800110" elapsed="0.000491"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:52:15.801094" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:52:15.811041" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:52:15.800764" elapsed="0.012765">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:15.813791" elapsed="0.000033"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:15.814034" elapsed="0.000029"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:15.814288" elapsed="0.000030"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:15.814521" elapsed="0.000029"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:15.814774" elapsed="0.000029"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:15.815007" elapsed="0.000029"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:15.815402" elapsed="0.000029"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:15.815715" elapsed="0.000029"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:15.815983" elapsed="0.000029"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:52:15.815220" elapsed="0.000923"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:52:15.815101" elapsed="0.001106"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:15.816413" elapsed="0.000029"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:52:15.816498" elapsed="0.000022"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:52:15.796455" elapsed="0.020204">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:52:15.816758" elapsed="0.000022"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T00:52:15.786037" elapsed="0.030861">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:15.817139" elapsed="0.000060"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:15.823366" elapsed="0.000038"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:15.823640" elapsed="0.000029"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T00:52:15.823732" elapsed="0.000022"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T00:52:15.776977" elapsed="0.046902">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:52:15.824036" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:52:15.824097" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:52:15.776423" elapsed="0.047707"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T00:52:15.824433" elapsed="0.000020"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:52:15.824275" elapsed="0.000217"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:15.824246" elapsed="0.000277"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:52:15.826350" elapsed="0.000307"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:52:15.827317" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:52:15.826870" elapsed="0.000484"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:52:15.828467" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:52:15.828078" elapsed="0.000426"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:52:15.828569" elapsed="0.000041"/>
</return>
<msg time="2026-04-08T00:52:15.828773" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:52:15.827607" elapsed="0.001201"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:52:15.829561" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:52:15.829025" elapsed="0.000572"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:52:15.830312" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:52:15.829813" elapsed="0.000535"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:52:15.830931" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:52:15.839409" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:52:15.830647" elapsed="0.010433">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:15.841279" elapsed="0.000022"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:15.841449" elapsed="0.000020"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:15.841612" elapsed="0.000020"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:15.841775" elapsed="0.000020"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:15.841942" elapsed="0.000020"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:15.842101" elapsed="0.000020"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:15.842371" elapsed="0.000020"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:15.842539" elapsed="0.000020"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:15.842728" elapsed="0.000020"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:52:15.842245" elapsed="0.000535"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:52:15.842179" elapsed="0.000627"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:15.842942" elapsed="0.000020"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:52:15.843000" elapsed="0.000015"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:52:15.825576" elapsed="0.017531">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:52:15.843237" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:52:15.843281" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:52:15.824731" elapsed="0.018574"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T00:52:15.844177" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T00:52:15.843723" elapsed="0.000542">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T00:52:15.843399" elapsed="0.000953">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T00:52:15.843376" elapsed="0.001018">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T00:52:15.844456" elapsed="0.000022"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:52:15.775844" elapsed="0.068747">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:15.844835" elapsed="0.000030"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:15.845063" elapsed="0.000027"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T00:52:15.845148" elapsed="0.000045"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T00:52:15.773349" elapsed="0.071962">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:15.845594" elapsed="0.000030"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:15.845843" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:15.846078" elapsed="0.000027"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:15.846324" elapsed="0.000029"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:15.846569" elapsed="0.000030"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:15.846798" elapsed="0.000027"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T00:52:15.846882" elapsed="0.000020"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T00:52:15.770562" elapsed="0.076455">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:52:16.881398" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:52:16.880913" elapsed="0.000517"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:52:16.881918" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:52:16.881602" elapsed="0.000343"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:52:16.881992" elapsed="0.000040"/>
</return>
<msg time="2026-04-08T00:52:16.882181" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:52:16.880527" elapsed="0.001681"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T00:52:16.886898" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T00:52:16.886710" elapsed="0.000215"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:52:16.887074" elapsed="0.000209"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:52:16.887695" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:52:16.887460" elapsed="0.000260"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:16.888170" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:16.887905" elapsed="0.000308"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:52:16.888358" elapsed="0.000179"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:52:16.888888" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:52:16.888686" elapsed="0.000227"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:16.889336" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:16.889076" elapsed="0.000299"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:16.889864" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:16.889529" elapsed="0.000360"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:16.890299" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:16.890051" elapsed="0.000290"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:16.890798" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:16.890491" elapsed="0.000334"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:52:16.897250" elapsed="0.000285"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:52:16.906003" elapsed="0.000228"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:52:16.906794" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:52:16.906386" elapsed="0.000434"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:52:16.907964" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:52:16.907430" elapsed="0.000575"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:52:16.908139" elapsed="0.000048"/>
</return>
<msg time="2026-04-08T00:52:16.908313" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:52:16.907007" elapsed="0.001331"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:52:16.908938" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:52:16.908502" elapsed="0.000463"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:52:16.909560" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:52:16.909121" elapsed="0.000465"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:52:16.910076" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:52:16.919009" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:52:16.909746" elapsed="0.012921">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:16.923083" elapsed="0.000053"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:16.923506" elapsed="0.000047"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:16.923873" elapsed="0.000045"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:16.924280" elapsed="0.000049"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:16.924662" elapsed="0.000045"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:16.925024" elapsed="0.000045"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:16.925641" elapsed="0.000046"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:16.926148" elapsed="0.000089"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:16.926644" elapsed="0.000048"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:52:16.925354" elapsed="0.001474"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:52:16.925196" elapsed="0.001696"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:16.927241" elapsed="0.000050"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:52:16.927378" elapsed="0.000035"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:52:16.905507" elapsed="0.022122">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:52:16.927786" elapsed="0.000035"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T00:52:16.895043" elapsed="0.032966">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:16.928513" elapsed="0.000050"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:16.934438" elapsed="0.000027"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:16.934637" elapsed="0.000022"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T00:52:16.934704" elapsed="0.000016"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T00:52:16.886130" elapsed="0.048681">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:52:16.934924" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:52:16.934969" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:52:16.885577" elapsed="0.049417"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T00:52:16.935214" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:52:16.935083" elapsed="0.000174"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:16.935062" elapsed="0.000217"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:52:16.936587" elapsed="0.000210"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:52:16.937271" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:52:16.936949" elapsed="0.000349"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:52:16.938081" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:52:16.937817" elapsed="0.000291"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:52:16.938154" elapsed="0.000044"/>
</return>
<msg time="2026-04-08T00:52:16.938318" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:52:16.937479" elapsed="0.000864"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:52:16.938900" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:52:16.938528" elapsed="0.000398"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:52:16.939441" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:52:16.939081" elapsed="0.000386"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:52:16.939821" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:52:16.946651" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:52:16.939625" elapsed="0.008725">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:16.948534" elapsed="0.000022"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:16.948705" elapsed="0.000020"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:16.948868" elapsed="0.000020"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:16.949030" elapsed="0.000019"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:16.949213" elapsed="0.000021"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:16.949378" elapsed="0.000023"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:16.949675" elapsed="0.000020"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:16.949844" elapsed="0.000019"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:16.950002" elapsed="0.000020"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:52:16.949548" elapsed="0.000506"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:52:16.949481" elapsed="0.000599"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:16.950232" elapsed="0.000021"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:52:16.950292" elapsed="0.000016"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:52:16.936028" elapsed="0.014400">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:52:16.950543" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:52:16.950587" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:52:16.935429" elapsed="0.015182"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T00:52:16.951234" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T00:52:16.950905" elapsed="0.000391">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T00:52:16.950692" elapsed="0.000664">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T00:52:16.950674" elapsed="0.000716">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T00:52:16.951459" elapsed="0.000022"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:52:16.885018" elapsed="0.066577">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:16.951839" elapsed="0.000029"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:16.952066" elapsed="0.000028"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T00:52:16.952150" elapsed="0.000045"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T00:52:16.882513" elapsed="0.069800">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:16.952548" elapsed="0.000030"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:16.952793" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:16.953024" elapsed="0.000027"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:16.953263" elapsed="0.000029"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:16.953492" elapsed="0.000027"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:16.953716" elapsed="0.000027"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T00:52:16.953844" elapsed="0.000022"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T00:52:16.879744" elapsed="0.074240">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:52:17.985176" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:52:17.984679" elapsed="0.000532"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:52:17.985739" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:52:17.985389" elapsed="0.000377"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:52:17.985816" elapsed="0.000044"/>
</return>
<msg time="2026-04-08T00:52:17.986017" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:52:17.984286" elapsed="0.001757"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T00:52:17.991056" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T00:52:17.990830" elapsed="0.000253"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:52:17.991252" elapsed="0.000227"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:52:17.991947" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:52:17.991676" elapsed="0.000306"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:17.992467" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:17.992205" elapsed="0.000303"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:52:17.992655" elapsed="0.000189"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:52:17.993235" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:52:17.993008" elapsed="0.000253"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:17.993672" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:17.993429" elapsed="0.000284"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:17.994270" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:17.993864" elapsed="0.000441"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:17.994717" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:17.994477" elapsed="0.000286"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:17.995246" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:17.994939" elapsed="0.000333"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:52:18.001843" elapsed="0.000239"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:52:18.010755" elapsed="0.000227"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:52:18.011591" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:52:18.011141" elapsed="0.000486"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:52:18.012931" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:52:18.012363" elapsed="0.000610"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:52:18.013108" elapsed="0.000036"/>
</return>
<msg time="2026-04-08T00:52:18.013292" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:52:18.011860" elapsed="0.001457"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:52:18.014053" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:52:18.013507" elapsed="0.000645"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:52:18.014950" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:52:18.014388" elapsed="0.000596"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:52:18.015569" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:52:18.025876" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:52:18.015218" elapsed="0.012778">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:18.028451" elapsed="0.000053"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:18.028874" elapsed="0.000054"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:18.029313" elapsed="0.000049"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:18.029727" elapsed="0.000049"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:18.030252" elapsed="0.000070"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:18.030820" elapsed="0.000070"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:18.031732" elapsed="0.000067"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:18.032401" elapsed="0.000063"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:18.032886" elapsed="0.000047"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:52:18.031288" elapsed="0.001782"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:52:18.031033" elapsed="0.002100"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:18.033546" elapsed="0.000051"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:52:18.033688" elapsed="0.000035"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:52:18.010250" elapsed="0.023697">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:52:18.034106" elapsed="0.000034"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T00:52:17.999557" elapsed="0.034865">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:18.034889" elapsed="0.000052"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:18.043528" elapsed="0.000031"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:18.043732" elapsed="0.000023"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T00:52:18.043800" elapsed="0.000016"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T00:52:17.990289" elapsed="0.053699">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:52:18.044115" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:52:18.044177" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:52:17.989657" elapsed="0.054547"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T00:52:18.044421" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:52:18.044298" elapsed="0.000167"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:18.044275" elapsed="0.000211"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:52:18.045867" elapsed="0.000231"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:52:18.046616" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:52:18.046281" elapsed="0.000362"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:52:18.047485" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:52:18.047213" elapsed="0.000299"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:52:18.047560" elapsed="0.000033"/>
</return>
<msg time="2026-04-08T00:52:18.047714" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:52:18.046852" elapsed="0.000886"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:52:18.048411" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:52:18.047926" elapsed="0.000518"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:52:18.048958" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:52:18.048606" elapsed="0.000379"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:52:18.049398" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:52:18.059420" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:52:18.049149" elapsed="0.012459">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:18.061797" elapsed="0.000024"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:18.061996" elapsed="0.000024"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:18.062187" elapsed="0.000022"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:18.062362" elapsed="0.000021"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:18.062541" elapsed="0.000020"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:18.062768" elapsed="0.000025"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:18.063107" elapsed="0.000029"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:18.063362" elapsed="0.000029"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:18.063682" elapsed="0.000040"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:52:18.062943" elapsed="0.000842"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:52:18.062853" elapsed="0.000981"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:18.064115" elapsed="0.000059"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:52:18.064240" elapsed="0.000025"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:52:18.045287" elapsed="0.019116">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:52:18.064839" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:52:18.064907" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:52:18.044637" elapsed="0.020305"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T00:52:18.065892" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T00:52:18.065425" elapsed="0.000557">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T00:52:18.065073" elapsed="0.001000">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T00:52:18.065043" elapsed="0.001076">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T00:52:18.066205" elapsed="0.000025"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:52:17.989097" elapsed="0.077254">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:18.066610" elapsed="0.000055"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:18.066904" elapsed="0.000031"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T00:52:18.066994" elapsed="0.000022"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T00:52:17.986363" elapsed="0.080772">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:18.067396" elapsed="0.000029"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:18.067647" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:18.067883" elapsed="0.000029"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:18.068108" elapsed="0.000028"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:18.068361" elapsed="0.000028"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:18.068591" elapsed="0.000028"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T00:52:18.068677" elapsed="0.000020"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T00:52:17.983474" elapsed="0.085341">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:52:19.143250" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:52:19.142738" elapsed="0.000546"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:52:19.143873" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:52:19.143456" elapsed="0.000443"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:52:19.143947" elapsed="0.000040"/>
</return>
<msg time="2026-04-08T00:52:19.144117" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:52:19.142339" elapsed="0.001803"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T00:52:19.148738" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T00:52:19.148548" elapsed="0.000217"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:52:19.148917" elapsed="0.000193"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:52:19.149489" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:52:19.149278" elapsed="0.000237"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:19.149949" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:19.149696" elapsed="0.000295"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:52:19.150137" elapsed="0.000198"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:52:19.150694" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:52:19.150487" elapsed="0.000233"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:19.151136" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:19.150890" elapsed="0.000304"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:19.151703" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:19.151346" elapsed="0.000383"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:19.152134" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:19.151897" elapsed="0.000298"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:19.152651" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:19.152347" elapsed="0.000330"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:52:19.159123" elapsed="0.000230"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:52:19.167927" elapsed="0.000213"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:52:19.168699" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:52:19.168313" elapsed="0.000413"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:52:19.169889" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:52:19.169341" elapsed="0.000590"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:52:19.170067" elapsed="0.000032"/>
</return>
<msg time="2026-04-08T00:52:19.170243" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:52:19.168914" elapsed="0.001355"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:52:19.170876" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:52:19.170430" elapsed="0.000474"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:52:19.171529" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:52:19.171064" elapsed="0.000493"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:52:19.172318" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:52:19.182843" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:52:19.171721" elapsed="0.013636">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:19.185619" elapsed="0.000083"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:19.185921" elapsed="0.000030"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:19.186176" elapsed="0.000031"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:19.186413" elapsed="0.000029"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:19.186653" elapsed="0.000029"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:19.186884" elapsed="0.000029"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:19.187284" elapsed="0.000029"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:19.187639" elapsed="0.000029"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:19.187909" elapsed="0.000030"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:52:19.187081" elapsed="0.000944"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:52:19.186980" elapsed="0.001084"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:19.188300" elapsed="0.000030"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:52:19.188385" elapsed="0.000023"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:52:19.167429" elapsed="0.021118">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:52:19.188645" elapsed="0.000022"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T00:52:19.156916" elapsed="0.031870">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:19.189032" elapsed="0.000030"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:19.195135" elapsed="0.000052"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:19.195436" elapsed="0.000029"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T00:52:19.195527" elapsed="0.000021"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T00:52:19.147989" elapsed="0.047686">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:52:19.195835" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:52:19.195899" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:52:19.147420" elapsed="0.048512"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T00:52:19.196241" elapsed="0.000019"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:52:19.196058" elapsed="0.000244"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:19.196030" elapsed="0.000303"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:52:19.198253" elapsed="0.000297"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:52:19.199214" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:52:19.198765" elapsed="0.000486"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:52:19.200406" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:52:19.200007" elapsed="0.000445"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:52:19.200533" elapsed="0.000050"/>
</return>
<msg time="2026-04-08T00:52:19.200721" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:52:19.199538" elapsed="0.001208"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:52:19.201291" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:52:19.200904" elapsed="0.000413"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:52:19.201818" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:52:19.201473" elapsed="0.000371"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:52:19.202224" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:52:19.210512" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:52:19.202004" elapsed="0.010589">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:19.212849" elapsed="0.000032"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:19.213088" elapsed="0.000028"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:19.213342" elapsed="0.000029"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:19.213574" elapsed="0.000028"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:19.213807" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:19.214030" elapsed="0.000028"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:19.214414" elapsed="0.000030"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:19.214652" elapsed="0.000028"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:19.214873" elapsed="0.000028"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:52:19.214234" elapsed="0.000711"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:52:19.214120" elapsed="0.000861"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:19.215191" elapsed="0.000030"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:52:19.215292" elapsed="0.000023"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:52:19.197467" elapsed="0.017978">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:52:19.215604" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:52:19.215665" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:52:19.196543" elapsed="0.019154"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T00:52:19.216571" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T00:52:19.216110" elapsed="0.000545">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T00:52:19.215812" elapsed="0.000989">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T00:52:19.215786" elapsed="0.001062">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T00:52:19.216911" elapsed="0.000021"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:52:19.146858" elapsed="0.070187">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:19.217313" elapsed="0.000031"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:19.217548" elapsed="0.000028"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T00:52:19.217633" elapsed="0.000021"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T00:52:19.144458" elapsed="0.073311">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:19.218001" elapsed="0.000028"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:19.218269" elapsed="0.000029"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:19.218507" elapsed="0.000027"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:19.218801" elapsed="0.000030"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:19.219036" elapsed="0.000027"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:19.219319" elapsed="0.000030"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T00:52:19.219407" elapsed="0.000020"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T00:52:19.141482" elapsed="0.078062">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:52:20.252045" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:52:20.251545" elapsed="0.000534"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:52:20.252591" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:52:20.252266" elapsed="0.000352"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:52:20.252666" elapsed="0.000042"/>
</return>
<msg time="2026-04-08T00:52:20.252841" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:52:20.251134" elapsed="0.001732"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T00:52:20.257483" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T00:52:20.257291" elapsed="0.000219"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:52:20.257661" elapsed="0.000190"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:52:20.258308" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:52:20.258077" elapsed="0.000257"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:20.258776" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:20.258521" elapsed="0.000297"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:52:20.258964" elapsed="0.000182"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:52:20.259523" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:52:20.259314" elapsed="0.000234"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:20.259963" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:20.259719" elapsed="0.000286"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:20.260514" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:20.260171" elapsed="0.000370"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:20.260972" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:20.260734" elapsed="0.000281"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:20.261465" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:20.261179" elapsed="0.000313"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:52:20.267978" elapsed="0.000229"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:52:20.276783" elapsed="0.000213"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:52:20.277554" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:52:20.277152" elapsed="0.000429"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:52:20.278730" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:52:20.278187" elapsed="0.000585"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:52:20.278910" elapsed="0.000221"/>
</return>
<msg time="2026-04-08T00:52:20.279283" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:52:20.277766" elapsed="0.001543"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:52:20.279919" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:52:20.279473" elapsed="0.000473"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:52:20.280574" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:52:20.280106" elapsed="0.000495"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:52:20.281100" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:52:20.293003" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:52:20.280763" elapsed="0.016237">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:20.297450" elapsed="0.000053"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:20.297837" elapsed="0.000046"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:20.298245" elapsed="0.000048"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:20.298617" elapsed="0.000044"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:20.298990" elapsed="0.000045"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:20.299378" elapsed="0.000047"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:20.299977" elapsed="0.000045"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:20.300737" elapsed="0.000063"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:20.301267" elapsed="0.000052"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:52:20.299691" elapsed="0.001771"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:52:20.299532" elapsed="0.002005"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:20.301764" elapsed="0.000021"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:52:20.301824" elapsed="0.000015"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:52:20.276270" elapsed="0.025676">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:52:20.302017" elapsed="0.000015"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T00:52:20.265773" elapsed="0.036343">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:20.302308" elapsed="0.000022"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:20.306633" elapsed="0.000027"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:20.306827" elapsed="0.000021"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T00:52:20.306893" elapsed="0.000015"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T00:52:20.256730" elapsed="0.050268">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:52:20.307112" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:52:20.307174" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:52:20.256137" elapsed="0.051063"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T00:52:20.307410" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:52:20.307293" elapsed="0.000159"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:20.307272" elapsed="0.000203"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:52:20.308792" elapsed="0.000209"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:52:20.309482" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:52:20.309173" elapsed="0.000335"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:52:20.310310" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:52:20.310030" elapsed="0.000306"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:52:20.310383" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:52:20.310530" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:52:20.309693" elapsed="0.000861"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:52:20.311076" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:52:20.310711" elapsed="0.000391"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:52:20.311659" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:52:20.311313" elapsed="0.000372"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:52:20.312042" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:52:20.321428" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:52:20.311845" elapsed="0.011267">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:20.323317" elapsed="0.000023"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:20.323487" elapsed="0.000020"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:20.323649" elapsed="0.000020"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:20.323811" elapsed="0.000020"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:20.323979" elapsed="0.000020"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:20.324138" elapsed="0.000036"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:20.324423" elapsed="0.000021"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:20.324599" elapsed="0.000020"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:20.324759" elapsed="0.000020"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:52:20.324284" elapsed="0.000527"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:52:20.324219" elapsed="0.000618"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:20.324973" elapsed="0.000020"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:52:20.325031" elapsed="0.000015"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:52:20.308238" elapsed="0.016899">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:52:20.325266" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:52:20.325311" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:52:20.307625" elapsed="0.017709"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T00:52:20.325946" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T00:52:20.325629" elapsed="0.000379">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T00:52:20.325416" elapsed="0.000655">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T00:52:20.325397" elapsed="0.000704">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T00:52:20.326147" elapsed="0.000032"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:52:20.255587" elapsed="0.070677">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:20.326442" elapsed="0.000021"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:20.326607" elapsed="0.000020"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T00:52:20.326711" elapsed="0.000017"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T00:52:20.253177" elapsed="0.073636">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:20.326982" elapsed="0.000021"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:20.327179" elapsed="0.000023"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:20.327352" elapsed="0.000020"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:20.327519" elapsed="0.000020"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:20.327683" elapsed="0.000020"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:20.327845" elapsed="0.000019"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T00:52:20.327906" elapsed="0.000015"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T00:52:20.250331" elapsed="0.077672">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:52:21.359218" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:52:21.358724" elapsed="0.000529"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:52:21.359737" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:52:21.359425" elapsed="0.000338"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:52:21.359811" elapsed="0.000040"/>
</return>
<msg time="2026-04-08T00:52:21.359982" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:52:21.358333" elapsed="0.001675"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T00:52:21.364590" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T00:52:21.364402" elapsed="0.000214"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:52:21.364765" elapsed="0.000191"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:52:21.365330" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:52:21.365106" elapsed="0.000249"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:21.365794" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:21.365541" elapsed="0.000293"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:52:21.365978" elapsed="0.000208"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:52:21.366552" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:52:21.366340" elapsed="0.000237"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:21.366985" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:21.366744" elapsed="0.000281"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:21.367529" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:21.367190" elapsed="0.000366"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:21.368035" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:21.367796" elapsed="0.000284"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:21.368534" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:21.368247" elapsed="0.000313"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:52:21.375751" elapsed="0.000219"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:52:21.384631" elapsed="0.000212"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:52:21.385410" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:52:21.385001" elapsed="0.000435"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:52:21.386865" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:52:21.386086" elapsed="0.000822"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:52:21.387046" elapsed="0.000036"/>
</return>
<msg time="2026-04-08T00:52:21.387235" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:52:21.385623" elapsed="0.001637"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:52:21.387877" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:52:21.387423" elapsed="0.000481"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:52:21.388509" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:52:21.388062" elapsed="0.000474"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:52:21.389032" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:52:21.398187" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:52:21.388699" elapsed="0.013140">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:21.402353" elapsed="0.000055"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:21.402658" elapsed="0.000030"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:21.402891" elapsed="0.000029"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:21.403122" elapsed="0.000029"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:21.403381" elapsed="0.000029"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:21.403608" elapsed="0.000028"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:21.403983" elapsed="0.000029"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:21.404329" elapsed="0.000030"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:21.404600" elapsed="0.000029"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:52:21.403803" elapsed="0.000910"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:52:21.403702" elapsed="0.001052"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:21.404951" elapsed="0.000028"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:52:21.405033" elapsed="0.000022"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:52:21.384121" elapsed="0.021093">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:52:21.405379" elapsed="0.000024"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T00:52:21.373299" elapsed="0.032225">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:21.405766" elapsed="0.000030"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:21.411814" elapsed="0.000038"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:21.412086" elapsed="0.000030"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T00:52:21.412199" elapsed="0.000023"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T00:52:21.363851" elapsed="0.048498">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:52:21.412505" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:52:21.412565" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:52:21.363291" elapsed="0.049307"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T00:52:21.412881" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:52:21.412722" elapsed="0.000217"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:21.412694" elapsed="0.000275"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:52:21.414805" elapsed="0.000212"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:52:21.415494" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:52:21.415186" elapsed="0.000334"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:52:21.416329" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:52:21.416043" elapsed="0.000312"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:52:21.416402" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:52:21.416549" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:52:21.415701" elapsed="0.000873"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:52:21.417097" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:52:21.416730" elapsed="0.000393"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:52:21.417640" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:52:21.417294" elapsed="0.000372"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:52:21.418031" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:52:21.431777" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:52:21.417823" elapsed="0.016852">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:21.435081" elapsed="0.000051"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:21.435502" elapsed="0.000047"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:21.436064" elapsed="0.000048"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:21.436473" elapsed="0.000048"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:21.436852" elapsed="0.000045"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:21.437250" elapsed="0.000049"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:21.437861" elapsed="0.000049"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:21.438277" elapsed="0.000047"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:21.438642" elapsed="0.000044"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:52:21.437545" elapsed="0.001214"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:52:21.437396" elapsed="0.001421"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:21.439123" elapsed="0.000073"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:52:21.439285" elapsed="0.000035"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:52:21.414106" elapsed="0.025419">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:52:21.439775" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:52:21.439873" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:52:21.413211" elapsed="0.026714"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T00:52:21.441348" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T00:52:21.440617" elapsed="0.000866">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T00:52:21.440109" elapsed="0.001509">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T00:52:21.440068" elapsed="0.001618">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T00:52:21.441785" elapsed="0.000076"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:52:21.362730" elapsed="0.079325">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:21.442479" elapsed="0.000044"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:21.442671" elapsed="0.000020"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T00:52:21.442732" elapsed="0.000014"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T00:52:21.360320" elapsed="0.082509">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:21.442996" elapsed="0.000021"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:21.443185" elapsed="0.000022"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:21.443356" elapsed="0.000020"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:21.443557" elapsed="0.000020"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:21.443725" elapsed="0.000020"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:21.443888" elapsed="0.000020"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T00:52:21.443948" elapsed="0.000015"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T00:52:21.357533" elapsed="0.086514">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:52:22.479468" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:52:22.478943" elapsed="0.000561"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:52:22.480014" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:52:22.479692" elapsed="0.000349"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:52:22.480089" elapsed="0.000041"/>
</return>
<msg time="2026-04-08T00:52:22.480282" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:52:22.478546" elapsed="0.001763"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T00:52:22.485076" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T00:52:22.484883" elapsed="0.000220"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:52:22.485270" elapsed="0.000227"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:52:22.485919" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:52:22.485672" elapsed="0.000275"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:22.486422" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:22.486138" elapsed="0.000326"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:52:22.486610" elapsed="0.000182"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:52:22.487152" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:52:22.486944" elapsed="0.000252"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:22.487615" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:22.487365" elapsed="0.000321"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:22.488215" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:22.487850" elapsed="0.000391"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:22.488679" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:22.488407" elapsed="0.000330"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:22.489220" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:22.488910" elapsed="0.000337"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:52:22.495826" elapsed="0.000219"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:52:22.504951" elapsed="0.000233"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:52:22.505845" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:52:22.505363" elapsed="0.000517"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:52:22.507219" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:52:22.506636" elapsed="0.000627"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:52:22.507403" elapsed="0.000032"/>
</return>
<msg time="2026-04-08T00:52:22.507568" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:52:22.506213" elapsed="0.001381"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:52:22.508307" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:52:22.507816" elapsed="0.000519"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:52:22.508932" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:52:22.508496" elapsed="0.000468"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:52:22.509486" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:52:22.523094" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:52:22.509128" elapsed="0.016495">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:22.525884" elapsed="0.000032"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:22.526123" elapsed="0.000029"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:22.526379" elapsed="0.000029"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:22.526607" elapsed="0.000029"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:22.526842" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:22.527066" elapsed="0.000028"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:22.527465" elapsed="0.000029"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:22.527878" elapsed="0.000035"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:22.528199" elapsed="0.000032"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:52:22.527282" elapsed="0.001035"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:52:22.527178" elapsed="0.001180"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:22.528554" elapsed="0.000029"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:52:22.528636" elapsed="0.000022"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:52:22.504453" elapsed="0.024343">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:52:22.528894" elapsed="0.000022"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T00:52:22.493510" elapsed="0.035522">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:22.529298" elapsed="0.000031"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:22.535399" elapsed="0.000047"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:22.535847" elapsed="0.000043"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T00:52:22.535976" elapsed="0.000030"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T00:52:22.484343" elapsed="0.051860">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:52:22.536419" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:52:22.536507" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:52:22.483761" elapsed="0.052792"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T00:52:22.536916" elapsed="0.000025"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:52:22.536714" elapsed="0.000279"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:22.536675" elapsed="0.000358"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:52:22.539476" elapsed="0.000410"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:52:22.540768" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:52:22.540192" elapsed="0.000604"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:52:22.541770" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:52:22.541426" elapsed="0.000380"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:52:22.541872" elapsed="0.000042"/>
</return>
<msg time="2026-04-08T00:52:22.542048" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:52:22.540985" elapsed="0.001088"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:52:22.542641" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:52:22.542262" elapsed="0.000405"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:52:22.543308" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:52:22.542823" elapsed="0.000512"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:52:22.543728" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:52:22.553235" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:52:22.543499" elapsed="0.012208">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:22.555977" elapsed="0.000035"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:22.556267" elapsed="0.000033"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:22.556505" elapsed="0.000028"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:22.556736" elapsed="0.000028"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:22.556970" elapsed="0.000029"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:22.557213" elapsed="0.000030"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:22.557607" elapsed="0.000038"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:22.557876" elapsed="0.000030"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:22.558208" elapsed="0.000033"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:52:22.557399" elapsed="0.000891"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:52:22.557305" elapsed="0.001024"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:22.558526" elapsed="0.000029"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:52:22.558610" elapsed="0.000023"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:52:22.538490" elapsed="0.020273">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:52:22.558924" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:52:22.558985" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:52:22.537342" elapsed="0.021675"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T00:52:22.559933" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T00:52:22.559463" elapsed="0.000556">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T00:52:22.559138" elapsed="0.000978">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T00:52:22.559111" elapsed="0.001092">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T00:52:22.560277" elapsed="0.000023"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:52:22.483179" elapsed="0.077237">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:22.560666" elapsed="0.000030"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:22.560898" elapsed="0.000030"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T00:52:22.560986" elapsed="0.000020"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T00:52:22.480637" elapsed="0.080486">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:22.561384" elapsed="0.000030"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:22.561635" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:22.561869" elapsed="0.000029"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:22.562093" elapsed="0.000027"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:22.562346" elapsed="0.000033"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:22.562610" elapsed="0.000031"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T00:52:22.562700" elapsed="0.000020"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T00:52:22.477716" elapsed="0.085121">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:52:23.595885" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:52:23.595388" elapsed="0.000530"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:52:23.596425" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:52:23.596088" elapsed="0.000363"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:52:23.596498" elapsed="0.000045"/>
</return>
<msg time="2026-04-08T00:52:23.596673" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:52:23.594984" elapsed="0.001716"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T00:52:23.601333" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T00:52:23.601130" elapsed="0.000229"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:52:23.601687" elapsed="0.000194"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:52:23.602273" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:52:23.602035" elapsed="0.000264"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:23.602737" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:23.602483" elapsed="0.000295"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:52:23.602924" elapsed="0.000178"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:52:23.603475" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:52:23.603268" elapsed="0.000233"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:23.603912" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:23.603669" elapsed="0.000284"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:23.604458" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:23.604104" elapsed="0.000379"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:23.604877" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:23.604645" elapsed="0.000275"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:23.605365" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:23.605068" elapsed="0.000323"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:52:23.611836" elapsed="0.000214"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:52:23.620620" elapsed="0.000212"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:52:23.621399" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:52:23.620988" elapsed="0.000438"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:52:23.622616" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:52:23.622045" elapsed="0.000611"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:52:23.622794" elapsed="0.000040"/>
</return>
<msg time="2026-04-08T00:52:23.622957" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:52:23.621640" elapsed="0.001349"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:52:23.623617" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:52:23.623149" elapsed="0.000495"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:52:23.624274" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:52:23.623802" elapsed="0.000499"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:52:23.624802" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:52:23.635480" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:52:23.624467" elapsed="0.013663">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:23.638416" elapsed="0.000034"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:23.638663" elapsed="0.000030"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:23.638898" elapsed="0.000031"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:23.639136" elapsed="0.000050"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:23.639404" elapsed="0.000030"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:23.639637" elapsed="0.000029"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:23.640067" elapsed="0.000042"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:23.640591" elapsed="0.000039"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:23.640884" elapsed="0.000030"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:52:23.639832" elapsed="0.001165"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:52:23.639732" elapsed="0.001305"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:23.641274" elapsed="0.000030"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:52:23.641360" elapsed="0.000022"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:52:23.620116" elapsed="0.021410">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:52:23.641667" elapsed="0.000023"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T00:52:23.609644" elapsed="0.032167">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:23.642055" elapsed="0.000029"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:23.647926" elapsed="0.000037"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:23.648231" elapsed="0.000033"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T00:52:23.648331" elapsed="0.000022"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T00:52:23.600593" elapsed="0.047887">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:52:23.648641" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:52:23.648703" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:52:23.600018" elapsed="0.048718"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T00:52:23.649082" elapsed="0.000019"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:52:23.648922" elapsed="0.000219"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:23.648893" elapsed="0.000300"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:52:23.651038" elapsed="0.000314"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:52:23.651985" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:52:23.651565" elapsed="0.000455"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:52:23.653358" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:52:23.652878" elapsed="0.000507"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:52:23.653435" elapsed="0.000031"/>
</return>
<msg time="2026-04-08T00:52:23.653602" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:52:23.652293" elapsed="0.001334"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:52:23.654180" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:52:23.653793" elapsed="0.000415"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:52:23.654722" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:52:23.654366" elapsed="0.000382"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:52:23.655111" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:52:23.666046" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:52:23.654911" elapsed="0.014316">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:23.669661" elapsed="0.000052"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:23.670042" elapsed="0.000046"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:23.670498" elapsed="0.000053"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:23.670883" elapsed="0.000047"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:23.671302" elapsed="0.000047"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:23.671666" elapsed="0.000044"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:23.672264" elapsed="0.000047"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:23.672642" elapsed="0.000045"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:23.672995" elapsed="0.000044"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:52:23.671951" elapsed="0.001159"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:52:23.671805" elapsed="0.001390"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:23.673520" elapsed="0.000055"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:52:23.673666" elapsed="0.000035"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:52:23.650283" elapsed="0.023619">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:52:23.674152" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:52:23.674284" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:52:23.649405" elapsed="0.024931"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T00:52:23.675833" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T00:52:23.675088" elapsed="0.000877">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T00:52:23.674608" elapsed="0.001494">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T00:52:23.674564" elapsed="0.001637">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T00:52:23.676309" elapsed="0.000034"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:52:23.599454" elapsed="0.077070">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:23.676946" elapsed="0.000047"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:23.677344" elapsed="0.000047"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T00:52:23.677532" elapsed="0.000036"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T00:52:23.597004" elapsed="0.080774">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:23.677995" elapsed="0.000020"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:23.678186" elapsed="0.000021"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:23.678355" elapsed="0.000019"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:23.678512" elapsed="0.000019"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:23.678673" elapsed="0.000019"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:23.678831" elapsed="0.000019"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T00:52:23.678890" elapsed="0.000014"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T00:52:23.594183" elapsed="0.084803">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:52:24.710502" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:52:24.709973" elapsed="0.000564"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:52:24.711028" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:52:24.710710" elapsed="0.000344"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:52:24.711101" elapsed="0.000047"/>
</return>
<msg time="2026-04-08T00:52:24.711293" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:52:24.709574" elapsed="0.001745"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T00:52:24.716337" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T00:52:24.716120" elapsed="0.000243"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:52:24.716513" elapsed="0.000192"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:52:24.717064" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:52:24.716856" elapsed="0.000234"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:24.717678" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:24.717291" elapsed="0.000430"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:52:24.717868" elapsed="0.000181"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:52:24.718434" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:52:24.718226" elapsed="0.000234"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:24.718872" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:24.718629" elapsed="0.000284"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:24.719425" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:24.719063" elapsed="0.000388"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:24.719872" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:24.719617" elapsed="0.000299"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:24.720374" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:24.720065" elapsed="0.000335"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:52:24.726843" elapsed="0.000215"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:52:24.735545" elapsed="0.000222"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:52:24.736340" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:52:24.735925" elapsed="0.000442"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:52:24.737516" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:52:24.736945" elapsed="0.000612"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:52:24.737686" elapsed="0.000032"/>
</return>
<msg time="2026-04-08T00:52:24.737841" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:52:24.736552" elapsed="0.001314"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:52:24.738482" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:52:24.738026" elapsed="0.000483"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:52:24.739089" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:52:24.738667" elapsed="0.000449"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:52:24.739625" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:52:24.752307" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:52:24.739292" elapsed="0.017063">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:24.756774" elapsed="0.000053"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:24.757203" elapsed="0.000050"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:24.757588" elapsed="0.000047"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:24.757964" elapsed="0.000047"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:24.758592" elapsed="0.000051"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:24.758974" elapsed="0.000046"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:24.759538" elapsed="0.000029"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:24.759879" elapsed="0.000030"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:24.760151" elapsed="0.000058"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:52:24.759342" elapsed="0.000955"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:52:24.759126" elapsed="0.001210"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:24.760535" elapsed="0.000029"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:52:24.760619" elapsed="0.000022"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:52:24.735042" elapsed="0.025736">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:52:24.760876" elapsed="0.000022"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T00:52:24.724604" elapsed="0.036410">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:24.761281" elapsed="0.000030"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:24.767202" elapsed="0.000038"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:24.767470" elapsed="0.000029"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T00:52:24.767561" elapsed="0.000021"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T00:52:24.715558" elapsed="0.052185">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:52:24.767915" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:52:24.767978" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:52:24.714984" elapsed="0.053027"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T00:52:24.768313" elapsed="0.000019"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:52:24.768134" elapsed="0.000241"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:24.768106" elapsed="0.000300"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:52:24.769846" elapsed="0.000210"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:52:24.770530" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:52:24.770223" elapsed="0.000333"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:52:24.771365" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:52:24.771081" elapsed="0.000312"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:52:24.771475" elapsed="0.000031"/>
</return>
<msg time="2026-04-08T00:52:24.771628" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:52:24.770744" elapsed="0.000909"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:52:24.772218" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:52:24.771829" elapsed="0.000416"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:52:24.772750" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:52:24.772402" elapsed="0.000374"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:52:24.773134" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:52:24.783037" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:52:24.772937" elapsed="0.012305">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:24.785496" elapsed="0.000031"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:24.785732" elapsed="0.000028"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:24.785957" elapsed="0.000028"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:24.786203" elapsed="0.000029"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:24.786438" elapsed="0.000027"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:24.786665" elapsed="0.000028"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:24.787016" elapsed="0.000028"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:24.787270" elapsed="0.000029"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:24.787493" elapsed="0.000028"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:52:24.786841" elapsed="0.000725"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:52:24.786751" elapsed="0.000850"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:24.787805" elapsed="0.000029"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:52:24.787888" elapsed="0.000021"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:52:24.769300" elapsed="0.018735">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:52:24.788215" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:52:24.788279" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:52:24.768623" elapsed="0.019689"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T00:52:24.789500" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T00:52:24.789035" elapsed="0.000550">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T00:52:24.788724" elapsed="0.000969">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T00:52:24.788400" elapsed="0.001347">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T00:52:24.789825" elapsed="0.000027"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:52:24.714436" elapsed="0.075533">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:24.790295" elapsed="0.000032"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:24.790531" elapsed="0.000028"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T00:52:24.790618" elapsed="0.000020"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T00:52:24.711618" elapsed="0.079136">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:24.790987" elapsed="0.000029"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:24.791258" elapsed="0.000029"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:24.791497" elapsed="0.000027"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:24.791750" elapsed="0.000029"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:24.791982" elapsed="0.000028"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:24.792229" elapsed="0.000029"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T00:52:24.792317" elapsed="0.000020"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T00:52:24.708497" elapsed="0.083954">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:52:25.826640" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:52:25.826078" elapsed="0.000594"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:52:25.827179" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:52:25.826842" elapsed="0.000365"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:52:25.827256" elapsed="0.000041"/>
</return>
<msg time="2026-04-08T00:52:25.827428" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:52:25.825688" elapsed="0.001766"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T00:52:25.832021" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T00:52:25.831834" elapsed="0.000214"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:52:25.832220" elapsed="0.000244"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:52:25.832827" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:52:25.832618" elapsed="0.000234"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:25.833320" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:25.833039" elapsed="0.000322"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:52:25.833505" elapsed="0.000179"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:52:25.834042" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:52:25.833838" elapsed="0.000229"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:25.834589" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:25.834343" elapsed="0.000287"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:25.835122" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:25.834780" elapsed="0.000368"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:25.835565" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:25.835331" elapsed="0.000277"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:25.836035" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:25.835756" elapsed="0.000305"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:52:25.842568" elapsed="0.000216"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:52:25.851296" elapsed="0.000214"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:52:25.852091" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:52:25.851703" elapsed="0.000414"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:52:25.853285" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:52:25.852732" elapsed="0.000594"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:52:25.853463" elapsed="0.000032"/>
</return>
<msg time="2026-04-08T00:52:25.853619" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:52:25.852332" elapsed="0.001311"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:52:25.854279" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:52:25.853801" elapsed="0.000506"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:52:25.854888" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:52:25.854464" elapsed="0.000450"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:52:25.855422" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:52:25.867806" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:52:25.855075" elapsed="0.015230">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:25.870563" elapsed="0.000031"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:25.870801" elapsed="0.000029"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:25.871029" elapsed="0.000029"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:25.871282" elapsed="0.000030"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:25.871522" elapsed="0.000029"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:25.871749" elapsed="0.000028"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:25.872119" elapsed="0.000028"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:25.872451" elapsed="0.000029"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:25.872722" elapsed="0.000029"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:52:25.871940" elapsed="0.000894"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:52:25.871841" elapsed="0.001033"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:25.873070" elapsed="0.000029"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:52:25.873152" elapsed="0.000056"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:52:25.850787" elapsed="0.022565">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:52:25.873501" elapsed="0.000023"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T00:52:25.840354" elapsed="0.033289">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:25.873889" elapsed="0.000030"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:25.879925" elapsed="0.000037"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:25.880213" elapsed="0.000031"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T00:52:25.880308" elapsed="0.000022"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T00:52:25.831295" elapsed="0.049163">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:52:25.880614" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:52:25.880677" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:52:25.830727" elapsed="0.049984"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T00:52:25.880990" elapsed="0.000019"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:52:25.880833" elapsed="0.000217"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:25.880805" elapsed="0.000276"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:52:25.882952" elapsed="0.000316"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:52:25.883907" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:52:25.883482" elapsed="0.000461"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:52:25.885061" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:52:25.884692" elapsed="0.000405"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:52:25.885184" elapsed="0.000043"/>
</return>
<msg time="2026-04-08T00:52:25.885395" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:52:25.884218" elapsed="0.001212"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:52:25.886217" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:52:25.885653" elapsed="0.000603"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:52:25.886954" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:52:25.886474" elapsed="0.000506"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:52:25.887353" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:52:25.897375" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:52:25.887140" elapsed="0.014073">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:25.901711" elapsed="0.000054"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:25.902123" elapsed="0.000081"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:25.902534" elapsed="0.000045"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:25.902896" elapsed="0.000044"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:25.903298" elapsed="0.000046"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:25.903661" elapsed="0.000045"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:25.904257" elapsed="0.000048"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:25.904638" elapsed="0.000045"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:25.904994" elapsed="0.000044"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:52:25.903945" elapsed="0.001164"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:52:25.903800" elapsed="0.001395"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:25.905510" elapsed="0.000044"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:52:25.905639" elapsed="0.000033"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:52:25.882192" elapsed="0.023687">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:52:25.906211" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:52:25.906315" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:52:25.881310" elapsed="0.025058"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T00:52:25.907276" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T00:52:25.906940" elapsed="0.000398">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T00:52:25.906555" elapsed="0.000843">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T00:52:25.906512" elapsed="0.000917">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T00:52:25.907474" elapsed="0.000015"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:52:25.830174" elapsed="0.077396">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:25.907744" elapsed="0.000020"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:25.907907" elapsed="0.000020"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T00:52:25.907967" elapsed="0.000014"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T00:52:25.827753" elapsed="0.080310">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:25.908245" elapsed="0.000022"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:25.908459" elapsed="0.000021"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:25.908628" elapsed="0.000019"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:25.908790" elapsed="0.000020"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:25.908954" elapsed="0.000019"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:25.909114" elapsed="0.000020"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T00:52:25.909189" elapsed="0.000016"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T00:52:25.824895" elapsed="0.084393">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:52:26.940651" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:52:26.940116" elapsed="0.000569"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:52:26.941240" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:52:26.940883" elapsed="0.000384"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:52:26.941316" elapsed="0.000044"/>
</return>
<msg time="2026-04-08T00:52:26.941490" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:52:26.939729" elapsed="0.001786"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T00:52:26.946088" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T00:52:26.945898" elapsed="0.000217"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:52:26.946282" elapsed="0.000236"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:52:26.946886" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:52:26.946675" elapsed="0.000236"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:26.947368" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:26.947096" elapsed="0.000314"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:52:26.947553" elapsed="0.000177"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:52:26.948080" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:52:26.947878" elapsed="0.000227"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:26.948524" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:26.948285" elapsed="0.000280"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:26.949058" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:26.948725" elapsed="0.000358"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:26.949497" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:26.949264" elapsed="0.000276"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:26.949962" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:26.949686" elapsed="0.000302"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:52:26.956473" elapsed="0.000254"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:52:26.965213" elapsed="0.000320"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:52:26.966083" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:52:26.965693" elapsed="0.000417"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:52:26.967329" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:52:26.966758" elapsed="0.000612"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:52:26.967509" elapsed="0.000033"/>
</return>
<msg time="2026-04-08T00:52:26.967667" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:52:26.966326" elapsed="0.001367"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:52:26.968315" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:52:26.967854" elapsed="0.000488"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:52:26.968958" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:52:26.968502" elapsed="0.000484"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:52:26.969506" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:52:26.981859" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:52:26.969151" elapsed="0.015186">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:26.984644" elapsed="0.000034"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:26.984892" elapsed="0.000029"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:26.985126" elapsed="0.000028"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:26.985383" elapsed="0.000028"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:26.985620" elapsed="0.000029"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:26.985852" elapsed="0.000029"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:26.986255" elapsed="0.000030"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:26.986573" elapsed="0.000029"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:26.986879" elapsed="0.000033"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:52:26.986053" elapsed="0.000950"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:52:26.985950" elapsed="0.001093"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:26.987283" elapsed="0.000031"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:52:26.987370" elapsed="0.000022"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:52:26.964703" elapsed="0.022835">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:52:26.987636" elapsed="0.000021"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T00:52:26.954265" elapsed="0.033508">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:26.988075" elapsed="0.000030"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:26.994147" elapsed="0.000053"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:26.994437" elapsed="0.000029"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T00:52:26.994530" elapsed="0.000022"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T00:52:26.945363" elapsed="0.049315">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:52:26.994837" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:52:26.994898" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:52:26.944793" elapsed="0.050137"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T00:52:26.995236" elapsed="0.000020"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:52:26.995054" elapsed="0.000244"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:26.995025" elapsed="0.000305"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:52:26.997231" elapsed="0.000295"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:52:26.998193" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:52:26.997741" elapsed="0.000490"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:52:26.999340" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:52:26.998950" elapsed="0.000426"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:52:26.999442" elapsed="0.000041"/>
</return>
<msg time="2026-04-08T00:52:26.999645" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:52:26.998482" elapsed="0.001197"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:52:27.000437" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:52:26.999898" elapsed="0.000576"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:52:27.001232" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:52:27.000729" elapsed="0.000540"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:52:27.001798" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:52:27.012148" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:52:27.001492" elapsed="0.013902">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:27.015800" elapsed="0.000050"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:27.016214" elapsed="0.000048"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:27.016611" elapsed="0.000047"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:27.016983" elapsed="0.000045"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:27.017461" elapsed="0.000052"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:27.017842" elapsed="0.000045"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:27.018451" elapsed="0.000123"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:27.018927" elapsed="0.000045"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:27.019320" elapsed="0.000047"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:52:27.018128" elapsed="0.001314"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:52:27.017982" elapsed="0.001518"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:27.019812" elapsed="0.000044"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:52:27.019943" elapsed="0.000034"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:52:26.996399" elapsed="0.023809">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:52:27.020466" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:52:27.020614" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:52:26.995539" elapsed="0.025129"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T00:52:27.021444" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T00:52:27.021105" elapsed="0.000399">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T00:52:27.020874" elapsed="0.000692">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T00:52:27.020835" elapsed="0.000762">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T00:52:27.021643" elapsed="0.000016"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:52:26.944224" elapsed="0.077516">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:27.021918" elapsed="0.000021"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:27.022084" elapsed="0.000020"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T00:52:27.022145" elapsed="0.000030"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T00:52:26.941810" elapsed="0.080451">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:27.022433" elapsed="0.000020"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:27.022610" elapsed="0.000021"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:27.022783" elapsed="0.000020"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:27.022943" elapsed="0.000019"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:27.023110" elapsed="0.000019"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:27.023289" elapsed="0.000020"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T00:52:27.023351" elapsed="0.000015"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T00:52:26.938881" elapsed="0.084570">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:52:28.056246" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:52:28.055758" elapsed="0.000521"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:52:28.056771" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:52:28.056452" elapsed="0.000346"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:52:28.056846" elapsed="0.000040"/>
</return>
<msg time="2026-04-08T00:52:28.057017" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:52:28.055360" elapsed="0.001683"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T00:52:28.061785" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T00:52:28.061496" elapsed="0.000318"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:52:28.061967" elapsed="0.000209"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:52:28.062599" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:52:28.062333" elapsed="0.000294"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:28.063081" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:28.062820" elapsed="0.000304"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:52:28.063322" elapsed="0.000190"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:52:28.063869" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:52:28.063664" elapsed="0.000231"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:28.064326" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:28.064063" elapsed="0.000305"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:28.064855" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:28.064517" elapsed="0.000363"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:28.065300" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:28.065043" elapsed="0.000300"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:28.065770" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:28.065491" elapsed="0.000305"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:52:28.074355" elapsed="0.000221"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:52:28.083260" elapsed="0.000220"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:52:28.084045" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:52:28.083641" elapsed="0.000432"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:52:28.085305" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:52:28.084734" elapsed="0.000614"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:52:28.085488" elapsed="0.000037"/>
</return>
<msg time="2026-04-08T00:52:28.085653" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:52:28.084327" elapsed="0.001351"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:52:28.086313" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:52:28.085839" elapsed="0.000501"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:52:28.086997" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:52:28.086562" elapsed="0.000462"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:52:28.087619" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:52:28.100742" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:52:28.087219" elapsed="0.017457">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:28.105099" elapsed="0.000054"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:28.105522" elapsed="0.000047"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:28.105887" elapsed="0.000045"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:28.106293" elapsed="0.000048"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:28.106673" elapsed="0.000045"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:28.107034" elapsed="0.000045"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:28.107744" elapsed="0.000053"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:28.108110" elapsed="0.000029"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:28.108484" elapsed="0.000046"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:52:28.107443" elapsed="0.001187"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:52:28.107265" elapsed="0.001408"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:28.108880" elapsed="0.000031"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:52:28.108967" elapsed="0.000023"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:52:28.082715" elapsed="0.026420">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:52:28.109261" elapsed="0.000023"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T00:52:28.071973" elapsed="0.037433">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:28.109656" elapsed="0.000030"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:28.115584" elapsed="0.000038"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:28.115853" elapsed="0.000028"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T00:52:28.115944" elapsed="0.000021"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T00:52:28.060939" elapsed="0.055150">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:52:28.116329" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:52:28.116392" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:52:28.060377" elapsed="0.056048"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T00:52:28.116715" elapsed="0.000019"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:52:28.116551" elapsed="0.000224"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:28.116523" elapsed="0.000284"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:52:28.118765" elapsed="0.000305"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:52:28.119798" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:52:28.119342" elapsed="0.000496"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:52:28.120864" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:52:28.120402" elapsed="0.000489"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:52:28.120941" elapsed="0.000031"/>
</return>
<msg time="2026-04-08T00:52:28.121093" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:52:28.120043" elapsed="0.001074"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:52:28.121673" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:52:28.121296" elapsed="0.000404"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:52:28.122222" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:52:28.121859" elapsed="0.000389"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:52:28.122616" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:52:28.131313" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:52:28.122411" elapsed="0.011173">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:28.133841" elapsed="0.000031"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:28.134080" elapsed="0.000029"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:28.134332" elapsed="0.000028"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:28.134561" elapsed="0.000028"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:28.134796" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:28.135019" elapsed="0.000027"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:28.135418" elapsed="0.000028"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:28.135655" elapsed="0.000027"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:28.135877" elapsed="0.000027"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:52:28.135232" elapsed="0.000716"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:52:28.135106" elapsed="0.000879"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:28.136196" elapsed="0.000030"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:52:28.136281" elapsed="0.000022"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:52:28.117916" elapsed="0.018515">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:52:28.136646" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:52:28.136709" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:52:28.117015" elapsed="0.019728"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T00:52:28.137684" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T00:52:28.137189" elapsed="0.000596">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T00:52:28.136861" elapsed="0.001030">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T00:52:28.136834" elapsed="0.001103">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T00:52:28.138001" elapsed="0.000022"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:52:28.059811" elapsed="0.078327">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:28.138413" elapsed="0.000030"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:28.138656" elapsed="0.000052"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T00:52:28.138803" elapsed="0.000026"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T00:52:28.057358" elapsed="0.081598">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:28.139253" elapsed="0.000033"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:28.139513" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:28.139762" elapsed="0.000034"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:28.139993" elapsed="0.000019"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:28.140171" elapsed="0.000021"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:28.140337" elapsed="0.000020"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T00:52:28.140398" elapsed="0.000014"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T00:52:28.054526" elapsed="0.085970">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:52:29.174667" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:52:29.174170" elapsed="0.000529"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:52:29.175205" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:52:29.174872" elapsed="0.000361"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:52:29.175282" elapsed="0.000040"/>
</return>
<msg time="2026-04-08T00:52:29.175453" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:52:29.173753" elapsed="0.001827"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T00:52:29.180469" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T00:52:29.180280" elapsed="0.000216"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:52:29.180647" elapsed="0.000195"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:52:29.181219" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:52:29.180994" elapsed="0.000252"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:29.181870" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:29.181607" elapsed="0.000304"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:52:29.182059" elapsed="0.000207"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:52:29.182626" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:52:29.182418" elapsed="0.000233"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:29.183061" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:29.182818" elapsed="0.000283"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:29.183613" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:29.183271" elapsed="0.000368"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:29.184047" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:29.183809" elapsed="0.000282"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:29.184550" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:29.184262" elapsed="0.000313"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:52:29.191015" elapsed="0.000234"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:52:29.199822" elapsed="0.000217"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:52:29.200606" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:52:29.200216" elapsed="0.000417"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:52:29.201790" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:52:29.201248" elapsed="0.000583"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:52:29.201964" elapsed="0.000034"/>
</return>
<msg time="2026-04-08T00:52:29.202152" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:52:29.200825" elapsed="0.001353"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:52:29.202805" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:52:29.202361" elapsed="0.000471"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:52:29.203440" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:52:29.202991" elapsed="0.000476"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:52:29.203966" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:52:29.213380" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:52:29.203631" elapsed="0.011594">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:29.215415" elapsed="0.000023"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:29.215586" elapsed="0.000021"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:29.215803" elapsed="0.000022"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:29.215971" elapsed="0.000020"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:29.216141" elapsed="0.000024"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:29.216321" elapsed="0.000021"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:29.216596" elapsed="0.000020"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:29.216819" elapsed="0.000021"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:29.217010" elapsed="0.000021"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:52:29.216469" elapsed="0.000621"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:52:29.216393" elapsed="0.000728"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:29.217280" elapsed="0.000022"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:52:29.217343" elapsed="0.000016"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:52:29.199325" elapsed="0.018137">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:52:29.217533" elapsed="0.000015"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T00:52:29.188785" elapsed="0.028848">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:29.217805" elapsed="0.000020"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:29.221975" elapsed="0.000027"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:29.222171" elapsed="0.000037"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T00:52:29.222256" elapsed="0.000015"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T00:52:29.179722" elapsed="0.042640">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:52:29.222478" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:52:29.222523" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:52:29.179138" elapsed="0.043409"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T00:52:29.222755" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:52:29.222638" elapsed="0.000187"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:29.222618" elapsed="0.000233"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:52:29.224260" elapsed="0.000213"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:52:29.224937" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:52:29.224626" elapsed="0.000337"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:52:29.225820" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:52:29.225552" elapsed="0.000295"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:52:29.225895" elapsed="0.000031"/>
</return>
<msg time="2026-04-08T00:52:29.226078" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:52:29.225206" elapsed="0.000899"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:52:29.226679" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:52:29.226299" elapsed="0.000407"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:52:29.227280" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:52:29.226863" elapsed="0.000445"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:52:29.227714" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:52:29.236700" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:52:29.227476" elapsed="0.012228">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:29.240025" elapsed="0.000039"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:29.240302" elapsed="0.000030"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:29.240538" elapsed="0.000028"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:29.240769" elapsed="0.000028"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:29.241005" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:29.241258" elapsed="0.000031"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:29.241667" elapsed="0.000030"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:29.241929" elapsed="0.000032"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:29.242168" elapsed="0.000053"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:52:29.241481" elapsed="0.000790"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:52:29.241366" elapsed="0.000944"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:29.242509" elapsed="0.000029"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:52:29.242595" elapsed="0.000024"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:52:29.223686" elapsed="0.019076">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:52:29.242943" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:52:29.243007" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:52:29.223002" elapsed="0.020039"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T00:52:29.244548" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T00:52:29.243544" elapsed="0.001093">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T00:52:29.243186" elapsed="0.001540">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T00:52:29.243143" elapsed="0.001629">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T00:52:29.244838" elapsed="0.000023"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:52:29.178589" elapsed="0.066460">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:29.245329" elapsed="0.000031"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:29.245565" elapsed="0.000028"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T00:52:29.245652" elapsed="0.000022"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T00:52:29.175886" elapsed="0.069907">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:29.246051" elapsed="0.000033"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:29.246333" elapsed="0.000030"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:29.246573" elapsed="0.000028"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:29.246798" elapsed="0.000027"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:29.247027" elapsed="0.000028"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:29.247276" elapsed="0.000030"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T00:52:29.247364" elapsed="0.000021"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T00:52:29.172810" elapsed="0.074695">Could not parse owner and candidates for device openflow:1</status>
</kw>
<msg time="2026-04-08T00:52:29.247655" level="FAIL">Keyword 'ClusterManagement.Verify_Owner_And_Successors_For_Device' failed after retrying for 30 seconds. The last error was: Could not parse owner and candidates for device openflow:1</msg>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>30s</arg>
<arg>1s</arg>
<arg>ClusterManagement.Verify_Owner_And_Successors_For_Device</arg>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="FAIL" start="2026-04-08T00:51:59.097926" elapsed="30.149998">Keyword 'ClusterManagement.Verify_Owner_And_Successors_For_Device' failed after retrying for 30 seconds. The last error was: Could not parse owner and candidates for device openflow:1</status>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T00:52:29.248048" elapsed="0.000024"/>
</return>
<var>${new_owner}</var>
<var>${new_successors_list}</var>
<arg>openflow:1</arg>
<arg>1</arg>
<doc>Check Entity Owner Status and identify owner and successors for the device ${device}. Request is sent to controller ${controller_index}.</doc>
<status status="FAIL" start="2026-04-08T00:51:59.095884" elapsed="30.152333">Keyword 'ClusterManagement.Verify_Owner_And_Successors_For_Device' failed after retrying for 30 seconds. The last error was: Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<arg>${new_owner}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:29.248478" elapsed="0.000031"/>
</kw>
<doc>Check Entity Owner Status and identify owner and successor.</doc>
<status status="FAIL" start="2026-04-08T00:51:59.088092" elapsed="30.160610">Keyword 'ClusterManagement.Verify_Owner_And_Successors_For_Device' failed after retrying for 30 seconds. The last error was: Could not parse owner and candidates for device openflow:1</status>
</test>
<test id="s1-s2-t37" name="Check Network Operational Information After Start" line="191">
<kw name="Check OpenFlow Network Operational Information For Sample Topology" owner="ClusterOpenFlow">
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-08T00:52:29.257361" level="INFO">${dictionary} = {'openflow:1': '4', 'openflow:2': '5', 'openflow:3': '5'}</msg>
<var>${dictionary}</var>
<arg>openflow:1=4</arg>
<arg>openflow:2=5</arg>
<arg>openflow:3=5</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-08T00:52:29.256939" elapsed="0.000450"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Check_Item_Occurrence_Member_List_Or_All" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:52:29.263630" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:52:29.263236" elapsed="0.000422"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:52:29.264125" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:52:29.263816" elapsed="0.000335"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:52:29.264214" elapsed="0.000036"/>
</return>
<msg time="2026-04-08T00:52:29.264464" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:52:29.262846" elapsed="0.001648"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_From_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:29.269868" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:29.269567" elapsed="0.000328"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:52:29.269940" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:52:29.270086" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:52:29.269219" elapsed="0.000893"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:29.276946" level="INFO">/rests/data/opendaylight-inventory:nodes?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:29.276653" elapsed="0.000340"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:29.277407" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:29.277146" elapsed="0.000305"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:52:29.296211" level="INFO">GET Request : url=http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01ju7g9ih47awu1dako8be5k84o113.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:52:29.296679" level="INFO">GET Response : url=http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Transfer-Encoding': 'chunked'} 
 body={"opendaylight-inventory:nodes":{"node":[{"id":"openflow:3","flow-node-inventory:port-number":52804,"flow-node-inventory:table":[{"id":62,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":28,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":2,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":224,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":181,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":147,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":106,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":61,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":27,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":1,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":223,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":182,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":148,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":105,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":60,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":30,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":0,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"47","active-flows":1,"packets-matched":"42"},"flow":[{"id":"#UF$TABLE*0-6","table_id":0,"priority":0,"cookie_mask":"0","idle-timeout":0,"cookie":"10","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"output-action":{"max-length":65535,"output-node-connector":"CONTROLLER"}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"31","byte-count":"2460","duration":{"second":69,"nanosecond":418000000}},"flags":"SEND_FLOW_REM"}]},{"id":226,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":179,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":149,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":104,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":59,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":29,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":225,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":180,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":150,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":103,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":66,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":32,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":220,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":185,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":151,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":102,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":65,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":31,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":253,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":219,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":186,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":152,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":101,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":64,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":34,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":252,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":222,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":183,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":153,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":100,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":63,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":33,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":251,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":221,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":184,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":154,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":99,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":54,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":20,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":250,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":216,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":189,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":155,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":129,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":114,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":53,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":19,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":249,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":215,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":190,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":156,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":130,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":113,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{... (set the log level to DEBUG or TRACE to see the full content) 
 </msg>
<msg time="2026-04-08T00:52:29.296910" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:52:29.279465" elapsed="0.017472"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:29.277522" elapsed="0.019460"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:29.297167" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:29.297009" elapsed="0.000239"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:29.277503" elapsed="0.019767"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:29.303480" level="INFO">{"opendaylight-inventory:nodes":{"node":[{"id":"openflow:3","flow-node-inventory:port-number":52804,"flow-node-inventory:table":[{"id":62,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":28,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":2,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":224,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":181,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":147,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":106,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":61,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":27,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":1,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":223,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":182,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":148,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":105,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":60,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":30,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":0,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"47","active-flows":1,"packets-matched":"42"},"flow":[{"id":"#UF$TABLE*0-6","table_id":0,"priority":0,"cookie_mask":"0","idle-timeout":0,"cookie":"10","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"output-action":{"max-length":65535,"output-node-connector":"CONTROLLER"}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"31","byte-count":"2460","duration":{"second":69,"nanosecond":418000000}},"flags":"SEND_FLOW_REM"}]},{"id":226,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":179,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":149,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":104,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":59,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":29,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":225,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":180,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":150,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":103,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":66,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":32,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":220,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":185,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":151,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":102,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":65,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":31,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":253,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":219,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":186,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":152,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":101,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":64,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":34,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":252,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":222,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":183,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":153,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":100,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":63,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":33,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":251,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":221,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":184,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":154,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":99,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":54,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":20,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":250,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":216,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":189,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":155,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":129,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":114,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":53,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":19,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":249,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":215,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":190,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":156,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":130,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":113,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":52,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":22,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":248,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":218,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":187,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":157,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":112,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":51,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":21,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":247,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":217,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":188,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":158,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":128,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":111,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":58,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":24,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":246,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":212,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":193,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":159,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":110,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":57,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":23,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":245,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":211,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":194,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":160,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":109,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":56,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":26,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":244,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":214,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":191,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":161,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":108,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":55,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":25,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":243,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":213,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":192,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":162,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":107,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":77,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":43,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":17,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":239,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":198,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":164,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":138,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":119,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":89,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":78,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":44,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":18,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":240,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":197,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":163,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":137,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":120,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":90,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":75,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":45,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":15,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":241,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":196,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":166,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":136,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":121,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":87,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":76,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":46,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":16,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":242,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":195,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":165,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":135,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":122,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":88,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":81,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":47,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":13,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":235,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":202,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":168,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":134,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":115,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":85,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":82,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":48,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":14,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":236,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":201,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":167,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":133,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":116,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":86,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":79,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":49,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":11,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":237,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":200,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":170,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":132,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":117,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":83,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":80,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":50,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":12,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":238,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":199,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":169,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":131,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":118,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":84,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":69,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":35,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":9,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":231,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":206,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":172,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":146,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":127,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":97,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":70,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":36,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":10,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":232,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":205,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":171,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":145,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":98,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":67,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":37,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":7,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":233,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":204,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":174,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":144,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":95,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":68,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":38,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":8,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":234,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":203,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":173,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":143,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":96,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":73,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":39,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":5,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":227,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":210,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":176,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":142,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":123,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":93,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":74,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":40,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":6,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":228,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":209,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":175,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":141,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":124,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":94,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":71,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":41,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":3,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":229,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":208,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":178,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":140,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":125,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":91,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":72,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":42,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":4,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":230,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":207,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":177,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":139,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":126,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":92,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}}],"opendaylight-group-statistics:group-features":{"max-groups":[4294967040],"group-types-supported":["opendaylight-group-types:group-all","opendaylight-group-types:group-ff","opendaylight-group-types:group-select","opendaylight-group-types:group-indirect"],"group-capabilities-supported":["opendaylight-group-types:chaining","opendaylight-group-types:select-weight","opendaylight-group-types:select-liveness"],"actions":[67076097]},"flow-node-inventory:manufacturer":"Nicira, Inc.","flow-node-inventory:description":"s3","flow-node-inventory:hardware":"Open vSwitch","flow-node-inventory:switch-features":{"max_tables":254,"capabilities":["flow-node-inventory:flow-feature-capability-table-stats","flow-node-inventory:flow-feature-capability-group-stats","flow-node-inventory:flow-feature-capability-queue-stats","flow-node-inventory:flow-feature-capability-flow-stats","flow-node-inventory:flow-feature-capability-port-stats"],"max_buffers":0},"flow-node-inventory:snapshot-gathering-status-start":{"begin":"2026-04-08T00:52:28.884Z"},"flow-node-inventory:software":"2.17.11","node-connector":[{"id":"openflow:3:3","flow-node-inventory:port-number":3,"flow-node-inventory:hardware-address":"e6:d6:06:da:00:6e","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s3-eth3","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"29","received":"30"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":70,"nanosecond":763000000},"bytes":{"transmitted":"2423","received":"2509"},"receive-crc-error":"0"}},{"id":"openflow:3:2","flow-node-inventory:port-number":2,"flow-node-inventory:hardware-address":"8a:ac:a7:67:88:d5","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s3-eth2","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"34","received":"10"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":70,"nanosecond":763000000},"bytes":{"transmitted":"2861","received":"796"},"receive-crc-error":"0"}},{"id":"openflow:3:1","flow-node-inventory:port-number":1,"flow-node-inventory:hardware-address":"86:1f:d7:a8:33:33","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s3-eth1","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"34","received":"10"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":70,"nanosecond":763000000},"bytes":{"transmitted":"2861","received":"796"},"receive-crc-error":"0"}},{"id":"openflow:3:LOCAL","flow-node-inventory:port-number":4294967294,"flow-node-inventory:hardware-address":"12:15:a2:01:a9:49","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s3","flow-node-inventory:current-feature":"","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":0,"flow-node-inventory:state":{"live":false,"blocked":false,"link-down":true},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"PORT-DOWN","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"0","received":"0"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":70,"nanosecond":750000000},"bytes":{"transmitted":"0","received":"0"},"receive-crc-error":"0"}}],"flow-node-inventory:ip-address":"10.30.170.192","flow-node-inventory:serial-number":"None","flow-node-inventory:snapshot-gathering-status-end":{"succeeded":true,"end":"2026-04-08T00:52:28.901Z"}},{"id":"openflow:1","flow-node-inventory:port-number":52792,"flow-node-inventory:table":[{"id":62,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":28,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":2,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":224,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":181,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":147,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":106,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":61,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":27,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":1,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":223,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":182,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":148,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":105,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":60,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":30,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":0,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"64","active-flows":1,"packets-matched":"64"},"flow":[{"id":"#UF$TABLE*0-4","table_id":0,"priority":0,"cookie_mask":"0","idle-timeout":0,"cookie":"10","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"output-action":{"max-length":65535,"output-node-connector":"CONTROLLER"}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"53","byte-count":"4351","duration":{"second":69,"nanosecond":417000000}},"flags":"SEND_FLOW_REM"}]},{"id":226,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":179,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":149,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":104,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":59,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":29,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":225,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":180,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":150,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":103,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":66,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":32,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":220,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":185,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":151,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":102,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":65,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":31,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":253,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":219,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":186,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":152,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":101,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":64,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":34,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":252,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":222,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":183,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":153,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":100,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":63,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":33,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":251,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":221,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":184,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":154,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":99,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":54,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":20,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":250,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":216,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":189,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":155,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":129,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":114,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":53,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":19,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":249,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":215,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":190,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":156,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":130,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":113,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":52,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":22,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":248,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":218,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":187,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":157,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":112,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":51,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":21,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":247,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":217,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":188,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":158,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":128,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":111,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":58,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":24,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":246,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":212,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":193,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":159,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":110,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":57,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":23,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":245,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":211,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":194,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":160,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":109,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":56,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":26,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":244,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":214,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":191,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":161,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":108,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":55,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":25,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":243,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":213,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":192,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":162,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":107,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":77,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":43,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":17,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":239,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":198,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":164,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":138,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":119,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":89,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":78,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":44,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":18,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":240,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":197,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":163,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":137,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":120,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":90,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":75,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":45,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":15,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":241,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":196,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":166,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":136,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":121,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":87,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":76,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":46,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":16,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":242,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":195,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":165,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":135,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":122,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":88,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":81,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":47,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":13,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":235,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":202,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":168,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":134,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":115,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":85,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":82,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":48,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":14,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":236,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":201,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":167,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":133,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":116,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":86,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":79,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":49,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":11,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":237,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":200,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":170,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":132,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":117,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":83,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":80,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":50,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":12,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":238,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":199,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":169,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":131,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":118,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":84,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":69,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":35,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":9,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":231,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":206,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":172,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":146,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":127,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":97,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":70,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":36,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":10,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":232,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":205,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":171,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":145,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":98,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":67,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":37,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":7,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":233,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":204,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":174,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":144,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":95,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":68,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":38,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":8,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":234,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":203,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":173,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":143,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":96,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":73,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":39,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":5,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":227,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":210,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":176,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":142,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":123,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":93,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":74,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":40,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":6,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":228,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":209,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":175,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":141,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":124,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":94,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":71,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":41,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":3,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":229,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":208,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":178,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":140,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":125,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":91,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":72,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":42,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":4,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":230,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":207,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":177,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":139,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":126,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":92,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}}],"opendaylight-group-statistics:group-features":{"max-groups":[4294967040],"group-types-supported":["opendaylight-group-types:group-all","opendaylight-group-types:group-ff","opendaylight-group-types:group-select","opendaylight-group-types:group-indirect"],"group-capabilities-supported":["opendaylight-group-types:chaining","opendaylight-group-types:select-weight","opendaylight-group-types:select-liveness"],"actions":[67076097]},"flow-node-inventory:manufacturer":"Nicira, Inc.","flow-node-inventory:description":"s1","flow-node-inventory:hardware":"Open vSwitch","flow-node-inventory:switch-features":{"max_tables":254,"capabilities":["flow-node-inventory:flow-feature-capability-table-stats","flow-node-inventory:flow-feature-capability-group-stats","flow-node-inventory:flow-feature-capability-queue-stats","flow-node-inventory:flow-feature-capability-flow-stats","flow-node-inventory:flow-feature-capability-port-stats"],"max_buffers":0},"flow-node-inventory:snapshot-gathering-status-start":{"begin":"2026-04-08T00:52:28.767Z"},"flow-node-inventory:software":"2.17.11","node-connector":[{"id":"openflow:1:1","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:maximum-speed":0,"flow-node-inventory:reason":"update","flow-node-inventory:configuration":"","flow-node-inventory:port-number":1,"flow-node-inventory:hardware-address":"22:6b:5b:43:c9:13","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s1-eth1","flow-node-inventory:supported":"","flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"40","received":"38"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":70,"nanosecond":659000000},"bytes":{"transmitted":"3340","received":"3164"},"receive-crc-error":"0"}},{"id":"openflow:1:LOCAL","flow-node-inventory:port-number":4294967294,"flow-node-inventory:hardware-address":"7e:2a:b5:f7:38:4d","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s1","flow-node-inventory:current-feature":"","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":0,"flow-node-inventory:state":{"live":false,"blocked":false,"link-down":true},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"PORT-DOWN","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"0","received":"0"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":70,"nanosecond":648000000},"bytes":{"transmitted":"0","received":"0"},"receive-crc-error":"0"}},{"id":"openflow:1:2","flow-node-inventory:port-number":2,"flow-node-inventory:hardware-address":"0a:0f:35:ec:0f:11","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s1-eth2","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"30","received":"29"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":70,"nanosecond":659000000},"bytes":{"transmitted":"2509","received":"2423"},"receive-crc-error":"0"}}],"flow-node-inventory:ip-address":"10.30.170.192","flow-node-inventory:serial-number":"None","flow-node-inventory:snapshot-gathering-status-end":{"succeeded":true,"end":"2026-04-08T00:52:28.786Z"}},{"id":"openflow:2","flow-node-inventory:port-number":52796,"flow-node-inventory:table":[{"id":62,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":28,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":2,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":224,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":181,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":147,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":106,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":61,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":27,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":1,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":223,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":182,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":148,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":105,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":60,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":30,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":0,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"56","active-flows":1,"packets-matched":"55"},"flow":[{"id":"#UF$TABLE*0-5","table_id":0,"priority":0,"cookie_mask":"0","idle-timeout":0,"cookie":"10","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"output-action":{"max-length":65535,"output-node-connector":"CONTROLLER"}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"44","byte-count":"3521","duration":{"second":69,"nanosecond":412000000}},"flags":"SEND_FLOW_REM"}]},{"id":226,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":179,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":149,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":104,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":59,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":29,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":225,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":180,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":150,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":103,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":66,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":32,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":220,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":185,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":151,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":102,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":65,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":31,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":253,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":219,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":186,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":152,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":101,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":64,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":34,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":252,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":222,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":183,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":153,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":100,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":63,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":33,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":251,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":221,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":184,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":154,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":99,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":54,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":20,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":250,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":216,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":189,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":155,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":129,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":114,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":53,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":19,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":249,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":215,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":190,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":156,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":130,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":113,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":52,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":22,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":248,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":218,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":187,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":157,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":112,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":51,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":21,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":247,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":217,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":188,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":158,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":128,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":111,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":58,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":24,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":246,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":212,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":193,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":159,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":110,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":57,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":23,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":245,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":211,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":194,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":160,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":109,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":56,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":26,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":244,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":214,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":191,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":161,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":108,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":55,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":25,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":243,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":213,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":192,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":162,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":107,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":77,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":43,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":17,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":239,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":198,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":164,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":138,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":119,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":89,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":78,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":44,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":18,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":240,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":197,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":163,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":137,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":120,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":90,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":75,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":45,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":15,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":241,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":196,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":166,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":136,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":121,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":87,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":76,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":46,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":16,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":242,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":195,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":165,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":135,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":122,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":88,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":81,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":47,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":13,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":235,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":202,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":168,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":134,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":115,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":85,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":82,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":48,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":14,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":236,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":201,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":167,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":133,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":116,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":86,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":79,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":49,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":11,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":237,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":200,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":170,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":132,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":117,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":83,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":80,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":50,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":12,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":238,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":199,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":169,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":131,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":118,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":84,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":69,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":35,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":9,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":231,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":206,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":172,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":146,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":127,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":97,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":70,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":36,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":10,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":232,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":205,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":171,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":145,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":98,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":67,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":37,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":7,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":233,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":204,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":174,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":144,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":95,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":68,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":38,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":8,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":234,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":203,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":173,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":143,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":96,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":73,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":39,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":5,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":227,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":210,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":176,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":142,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":123,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":93,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":74,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":40,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":6,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":228,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":209,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":175,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":141,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":124,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":94,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":71,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":41,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":3,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":229,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":208,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":178,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":140,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":125,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":91,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":72,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":42,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":4,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":230,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":207,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":177,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":139,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":126,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":92,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}}],"opendaylight-group-statistics:group-features":{"max-groups":[4294967040],"group-types-supported":["opendaylight-group-types:group-all","opendaylight-group-types:group-ff","opendaylight-group-types:group-select","opendaylight-group-types:group-indirect"],"group-capabilities-supported":["opendaylight-group-types:chaining","opendaylight-group-types:select-weight","opendaylight-group-types:select-liveness"],"actions":[67076097]},"flow-node-inventory:manufacturer":"Nicira, Inc.","flow-node-inventory:description":"s2","flow-node-inventory:hardware":"Open vSwitch","flow-node-inventory:switch-features":{"max_tables":254,"capabilities":["flow-node-inventory:flow-feature-capability-table-stats","flow-node-inventory:flow-feature-capability-group-stats","flow-node-inventory:flow-feature-capability-queue-stats","flow-node-inventory:flow-feature-capability-flow-stats","flow-node-inventory:flow-feature-capability-port-stats"],"max_buffers":0},"flow-node-inventory:snapshot-gathering-status-start":{"begin":"2026-04-08T00:52:28.771Z"},"flow-node-inventory:software":"2.17.11","node-connector":[{"id":"openflow:2:3","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:maximum-speed":0,"flow-node-inventory:reason":"update","flow-node-inventory:configuration":"","flow-node-inventory:port-number":3,"flow-node-inventory:hardware-address":"72:dd:8c:02:0b:4b","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s2-eth3","flow-node-inventory:supported":"","flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"38","received":"40"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":70,"nanosecond":627000000},"bytes":{"transmitted":"3164","received":"3340"},"receive-crc-error":"0"}},{"id":"openflow:2:LOCAL","flow-node-inventory:port-number":4294967294,"flow-node-inventory:hardware-address":"5a:1e:a3:85:42:48","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s2","flow-node-inventory:current-feature":"","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":0,"flow-node-inventory:state":{"live":false,"blocked":false,"link-down":true},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"PORT-DOWN","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"0","received":"0"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":70,"nanosecond":590000000},"bytes":{"transmitted":"0","received":"0"},"receive-crc-error":"0"}},{"id":"openflow:2:2","flow-node-inventory:port-number":2,"flow-node-inventory:hardware-address":"c6:ba:d5:44:ef:8d","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s2-eth2","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"34","received":"10"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":70,"nanosecond":630000000},"bytes":{"transmitted":"2861","received":"796"},"receive-crc-error":"0"}},{"id":"openflow:2:1","flow-node-inventory:port-number":1,"flow-node-inventory:hardware-address":"b6:66:26:1b:66:76","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s2-eth1","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"33","received":"10"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":70,"nanosecond":621000000},"bytes":{"transmitted":"2791","received":"796"},"receive-crc-error":"0"}}],"flow-node-inventory:ip-address":"10.30.170.192","flow-node-inventory:serial-number":"None","flow-node-inventory:snapshot-gathering-status-end":{"succeeded":true,"end":"2026-04-08T00:52:28.787Z"}}]}}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:29.298360" elapsed="0.006589"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:29.298071" elapsed="0.006933"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:29.298052" elapsed="0.006990"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:29.308627" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:29.305472" elapsed="0.003221"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:29.305126" elapsed="0.003615"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:29.305101" elapsed="0.003674"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:52:29.309596" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:29.309014" elapsed="0.000620"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:29.310173" elapsed="0.000056"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:29.309742" elapsed="0.000543"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:29.310991" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:29.310545" elapsed="0.000472"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:29.310319" elapsed="0.000734"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:29.309710" elapsed="0.001365"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:52:29.311622" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:29.311255" elapsed="0.000395"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:29.311956" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:29.311720" elapsed="0.000293"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:29.312515" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:29.312217" elapsed="0.000324"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:29.312037" elapsed="0.000539"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:29.311702" elapsed="0.000897"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:52:29.312750" elapsed="0.000353"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:52:29.313586" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:29.313286" elapsed="0.000326"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:52:29.313767" elapsed="0.002263"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:52:29.297647" elapsed="0.018449"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-08T00:52:29.316297" elapsed="0.000032"/>
</return>
<status status="PASS" start="2026-04-08T00:52:29.316170" elapsed="0.000194"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:29.316147" elapsed="0.000242"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:29.316537" elapsed="0.000022"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-08T00:52:29.316607" elapsed="0.000014"/>
</return>
<msg time="2026-04-08T00:52:29.319143" level="INFO">${response_text} = {"opendaylight-inventory:nodes":{"node":[{"id":"openflow:3","flow-node-inventory:port-number":52804,"flow-node-inventory:table":[{"id":62,"opendaylight-flow-table-statistics:flow-table-statistics":{"p...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${access}</arg>
<arg>session=${session}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:52:29.270462" elapsed="0.048715"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:52:29.319244" elapsed="0.000031"/>
</return>
<msg time="2026-04-08T00:52:29.319400" level="INFO">${data} = {"opendaylight-inventory:nodes":{"node":[{"id":"openflow:3","flow-node-inventory:port-number":52804,"flow-node-inventory:table":[{"id":62,"opendaylight-flow-table-statistics:flow-table-statistics":{"p...</msg>
<var>${data}</var>
<arg>uri=${uri}</arg>
<arg>member_index=${index}</arg>
<doc>Send a GET with the supplied uri to member ${member_index}.</doc>
<status status="PASS" start="2026-04-08T00:52:29.268711" elapsed="0.050716"/>
</kw>
<kw name="Check Item Occurrence" owner="Utils">
<for flavor="IN">
<iter>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T00:52:29.320668" level="INFO">Item found from container 4 times.</msg>
<arg>${string}</arg>
<arg>${item}</arg>
<arg>${dictionary_item_occurrence}[${item}]</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="PASS" start="2026-04-08T00:52:29.320240" elapsed="0.000869"/>
</kw>
<var name="${item}">openflow:1</var>
<status status="PASS" start="2026-04-08T00:52:29.320063" elapsed="0.001088"/>
</iter>
<iter>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T00:52:29.321829" level="INFO">Item found from container 5 times.</msg>
<arg>${string}</arg>
<arg>${item}</arg>
<arg>${dictionary_item_occurrence}[${item}]</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="PASS" start="2026-04-08T00:52:29.321415" elapsed="0.000722"/>
</kw>
<var name="${item}">openflow:2</var>
<status status="PASS" start="2026-04-08T00:52:29.321261" elapsed="0.000969"/>
</iter>
<iter>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T00:52:29.322915" level="INFO">Item found from container 5 times.</msg>
<arg>${string}</arg>
<arg>${item}</arg>
<arg>${dictionary_item_occurrence}[${item}]</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="PASS" start="2026-04-08T00:52:29.322499" elapsed="0.000744"/>
</kw>
<var name="${item}">openflow:3</var>
<status status="PASS" start="2026-04-08T00:52:29.322319" elapsed="0.000965"/>
</iter>
<var>${item}</var>
<value>@{dictionary_item_occurrence}</value>
<status status="PASS" start="2026-04-08T00:52:29.319926" elapsed="0.003388"/>
</for>
<arg>${data}</arg>
<arg>${dictionary}</arg>
<doc>Check string for occurrences of items expressed in a list of dictionaries {item=occurrences}. 0 occurences means item is not present.</doc>
<status status="PASS" start="2026-04-08T00:52:29.319660" elapsed="0.003710"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T00:52:29.264695" elapsed="0.058711"/>
</iter>
<iter>
<kw name="Get_From_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:29.328948" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:29.328643" elapsed="0.000333"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:52:29.329021" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:52:29.329172" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:52:29.328294" elapsed="0.000917"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:29.335520" level="INFO">/rests/data/opendaylight-inventory:nodes?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:29.335225" elapsed="0.000342"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:29.335961" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:29.335719" elapsed="0.000285"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:52:29.371460" level="INFO">GET Request : url=http://10.30.170.131:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node012m0dyuink19r12kj250j53usg1.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:52:29.371908" level="INFO">GET Response : url=http://10.30.170.131:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Transfer-Encoding': 'chunked'} 
 body={"opendaylight-inventory:nodes":{"node":[{"id":"openflow:3","flow-node-inventory:manufacturer":"Nicira, Inc.","flow-node-inventory:description":"s3","flow-node-inventory:hardware":"Open vSwitch","flow-node-inventory:software":"2.17.11","flow-node-inventory:ip-address":"10.30.170.192","flow-node-inventory:serial-number":"None","flow-node-inventory:port-number":52804,"flow-node-inventory:table":[{"id":62,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":28,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":2,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":224,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":181,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":147,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":106,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":61,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":27,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":1,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":223,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":182,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":148,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":105,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":60,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":30,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":0,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"47","active-flows":1,"packets-matched":"42"},"flow":[{"id":"#UF$TABLE*0-6","table_id":0,"priority":0,"cookie_mask":"0","idle-timeout":0,"cookie":"10","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"output-action":{"max-length":65535,"output-node-connector":"CONTROLLER"}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"31","byte-count":"2460","duration":{"second":69,"nanosecond":418000000}},"flags":"SEND_FLOW_REM"}]},{"id":226,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":179,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":149,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":104,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":59,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":29,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":225,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":180,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":150,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":103,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":66,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":32,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":220,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":185,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":151,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":102,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":65,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":31,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":253,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":219,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":186,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":152,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":101,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":64,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":34,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":252,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":222,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":183,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":153,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":100,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":63,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":33,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":251,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":221,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":184,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":154,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":99,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":54,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":20,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":250,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":216,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":189,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":155,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":129,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":114,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":53,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":19,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":249,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":215,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":190,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":156,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"i... (set the log level to DEBUG or TRACE to see the full content) 
 </msg>
<msg time="2026-04-08T00:52:29.372255" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:52:29.337989" elapsed="0.034331"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:29.336073" elapsed="0.036297"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:29.372556" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:29.372398" elapsed="0.000222"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:29.336054" elapsed="0.036588"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:29.376260" level="INFO">{"opendaylight-inventory:nodes":{"node":[{"id":"openflow:3","flow-node-inventory:manufacturer":"Nicira, Inc.","flow-node-inventory:description":"s3","flow-node-inventory:hardware":"Open vSwitch","flow-node-inventory:software":"2.17.11","flow-node-inventory:ip-address":"10.30.170.192","flow-node-inventory:serial-number":"None","flow-node-inventory:port-number":52804,"flow-node-inventory:table":[{"id":62,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":28,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":2,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":224,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":181,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":147,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":106,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":61,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":27,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":1,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":223,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":182,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":148,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":105,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":60,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":30,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":0,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"47","active-flows":1,"packets-matched":"42"},"flow":[{"id":"#UF$TABLE*0-6","table_id":0,"priority":0,"cookie_mask":"0","idle-timeout":0,"cookie":"10","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"output-action":{"max-length":65535,"output-node-connector":"CONTROLLER"}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"31","byte-count":"2460","duration":{"second":69,"nanosecond":418000000}},"flags":"SEND_FLOW_REM"}]},{"id":226,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":179,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":149,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":104,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":59,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":29,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":225,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":180,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":150,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":103,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":66,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":32,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":220,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":185,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":151,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":102,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":65,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":31,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":253,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":219,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":186,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":152,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":101,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":64,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":34,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":252,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":222,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":183,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":153,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":100,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":63,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":33,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":251,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":221,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":184,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":154,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":99,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":54,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":20,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":250,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":216,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":189,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":155,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":129,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":114,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":53,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":19,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":249,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":215,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":190,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":156,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":130,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":113,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":52,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":22,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":248,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":218,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":187,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":157,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":112,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":51,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":21,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":247,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":217,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":188,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":158,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":128,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":111,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":58,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":24,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":246,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":212,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":193,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":159,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":110,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":57,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":23,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":245,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":211,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":194,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":160,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":109,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":56,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":26,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":244,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":214,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":191,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":161,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":108,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":55,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":25,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":243,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":213,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":192,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":162,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":107,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":77,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":43,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":17,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":239,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":198,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":164,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":138,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":119,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":89,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":78,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":44,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":18,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":240,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":197,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":163,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":137,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":120,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":90,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":75,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":45,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":15,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":241,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":196,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":166,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":136,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":121,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":87,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":76,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":46,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":16,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":242,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":195,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":165,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":135,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":122,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":88,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":81,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":47,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":13,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":235,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":202,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":168,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":134,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":115,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":85,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":82,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":48,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":14,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":236,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":201,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":167,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":133,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":116,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":86,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":79,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":49,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":11,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":237,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":200,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":170,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":132,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":117,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":83,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":80,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":50,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":12,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":238,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":199,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":169,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":131,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":118,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":84,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":69,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":35,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":9,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":231,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":206,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":172,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":146,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":127,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":97,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":70,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":36,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":10,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":232,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":205,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":171,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":145,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":98,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":67,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":37,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":7,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":233,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":204,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":174,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":144,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":95,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":68,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":38,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":8,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":234,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":203,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":173,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":143,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":96,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":73,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":39,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":5,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":227,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":210,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":176,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":142,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":123,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":93,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":74,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":40,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":6,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":228,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":209,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":175,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":141,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":124,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":94,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":71,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":41,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":3,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":229,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":208,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":178,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":140,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":125,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":91,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":72,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":42,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":4,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":230,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":207,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":177,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":139,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":126,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":92,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}}],"opendaylight-group-statistics:group-features":{"max-groups":[4294967040],"group-types-supported":["opendaylight-group-types:group-all","opendaylight-group-types:group-ff","opendaylight-group-types:group-select","opendaylight-group-types:group-indirect"],"group-capabilities-supported":["opendaylight-group-types:chaining","opendaylight-group-types:select-weight","opendaylight-group-types:select-liveness"],"actions":[67076097]},"flow-node-inventory:switch-features":{"max_tables":254,"capabilities":["flow-node-inventory:flow-feature-capability-table-stats","flow-node-inventory:flow-feature-capability-group-stats","flow-node-inventory:flow-feature-capability-queue-stats","flow-node-inventory:flow-feature-capability-flow-stats","flow-node-inventory:flow-feature-capability-port-stats"],"max_buffers":0},"flow-node-inventory:snapshot-gathering-status-start":{"begin":"2026-04-08T00:52:28.884Z"},"node-connector":[{"id":"openflow:3:3","flow-node-inventory:port-number":3,"flow-node-inventory:hardware-address":"e6:d6:06:da:00:6e","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s3-eth3","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"29","received":"30"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":70,"nanosecond":763000000},"bytes":{"transmitted":"2423","received":"2509"},"receive-crc-error":"0"}},{"id":"openflow:3:2","flow-node-inventory:port-number":2,"flow-node-inventory:hardware-address":"8a:ac:a7:67:88:d5","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s3-eth2","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"34","received":"10"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":70,"nanosecond":763000000},"bytes":{"transmitted":"2861","received":"796"},"receive-crc-error":"0"}},{"id":"openflow:3:1","flow-node-inventory:port-number":1,"flow-node-inventory:hardware-address":"86:1f:d7:a8:33:33","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s3-eth1","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"34","received":"10"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":70,"nanosecond":763000000},"bytes":{"transmitted":"2861","received":"796"},"receive-crc-error":"0"}},{"id":"openflow:3:LOCAL","flow-node-inventory:port-number":4294967294,"flow-node-inventory:hardware-address":"12:15:a2:01:a9:49","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s3","flow-node-inventory:current-feature":"","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":0,"flow-node-inventory:state":{"live":false,"blocked":false,"link-down":true},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"PORT-DOWN","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"0","received":"0"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":70,"nanosecond":750000000},"bytes":{"transmitted":"0","received":"0"},"receive-crc-error":"0"}}],"flow-node-inventory:snapshot-gathering-status-end":{"succeeded":true,"end":"2026-04-08T00:52:28.901Z"}},{"id":"openflow:1","flow-node-inventory:manufacturer":"Nicira, Inc.","flow-node-inventory:description":"s1","flow-node-inventory:hardware":"Open vSwitch","flow-node-inventory:software":"2.17.11","flow-node-inventory:ip-address":"10.30.170.192","flow-node-inventory:serial-number":"None","flow-node-inventory:port-number":52792,"flow-node-inventory:table":[{"id":62,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":28,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":2,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":224,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":181,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":147,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":106,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":61,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":27,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":1,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":223,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":182,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":148,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":105,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":60,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":30,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":0,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"64","active-flows":1,"packets-matched":"64"},"flow":[{"id":"#UF$TABLE*0-4","table_id":0,"priority":0,"cookie_mask":"0","idle-timeout":0,"cookie":"10","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"output-action":{"max-length":65535,"output-node-connector":"CONTROLLER"}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"53","byte-count":"4351","duration":{"second":69,"nanosecond":417000000}},"flags":"SEND_FLOW_REM"}]},{"id":226,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":179,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":149,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":104,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":59,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":29,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":225,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":180,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":150,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":103,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":66,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":32,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":220,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":185,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":151,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":102,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":65,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":31,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":253,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":219,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":186,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":152,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":101,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":64,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":34,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":252,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":222,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":183,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":153,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":100,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":63,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":33,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":251,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":221,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":184,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":154,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":99,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":54,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":20,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":250,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":216,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":189,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":155,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":129,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":114,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":53,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":19,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":249,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":215,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":190,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":156,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":130,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":113,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":52,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":22,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":248,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":218,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":187,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":157,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":112,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":51,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":21,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":247,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":217,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":188,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":158,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":128,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":111,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":58,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":24,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":246,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":212,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":193,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":159,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":110,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":57,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":23,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":245,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":211,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":194,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":160,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":109,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":56,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":26,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":244,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":214,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":191,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":161,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":108,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":55,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":25,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":243,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":213,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":192,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":162,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":107,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":77,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":43,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":17,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":239,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":198,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":164,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":138,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":119,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":89,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":78,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":44,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":18,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":240,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":197,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":163,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":137,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":120,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":90,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":75,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":45,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":15,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":241,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":196,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":166,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":136,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":121,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":87,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":76,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":46,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":16,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":242,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":195,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":165,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":135,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":122,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":88,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":81,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":47,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":13,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":235,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":202,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":168,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":134,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":115,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":85,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":82,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":48,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":14,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":236,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":201,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":167,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":133,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":116,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":86,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":79,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":49,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":11,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":237,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":200,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":170,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":132,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":117,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":83,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":80,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":50,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":12,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":238,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":199,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":169,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":131,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":118,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":84,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":69,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":35,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":9,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":231,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":206,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":172,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":146,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":127,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":97,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":70,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":36,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":10,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":232,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":205,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":171,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":145,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":98,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":67,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":37,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":7,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":233,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":204,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":174,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":144,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":95,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":68,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":38,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":8,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":234,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":203,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":173,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":143,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":96,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":73,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":39,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":5,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":227,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":210,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":176,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":142,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":123,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":93,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":74,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":40,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":6,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":228,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":209,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":175,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":141,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":124,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":94,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":71,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":41,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":3,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":229,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":208,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":178,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":140,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":125,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":91,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":72,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":42,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":4,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":230,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":207,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":177,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":139,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":126,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":92,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}}],"opendaylight-group-statistics:group-features":{"max-groups":[4294967040],"group-types-supported":["opendaylight-group-types:group-all","opendaylight-group-types:group-ff","opendaylight-group-types:group-select","opendaylight-group-types:group-indirect"],"group-capabilities-supported":["opendaylight-group-types:chaining","opendaylight-group-types:select-weight","opendaylight-group-types:select-liveness"],"actions":[67076097]},"flow-node-inventory:switch-features":{"max_tables":254,"capabilities":["flow-node-inventory:flow-feature-capability-table-stats","flow-node-inventory:flow-feature-capability-group-stats","flow-node-inventory:flow-feature-capability-queue-stats","flow-node-inventory:flow-feature-capability-flow-stats","flow-node-inventory:flow-feature-capability-port-stats"],"max_buffers":0},"flow-node-inventory:snapshot-gathering-status-start":{"begin":"2026-04-08T00:52:28.767Z"},"node-connector":[{"id":"openflow:1:1","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:maximum-speed":0,"flow-node-inventory:reason":"update","flow-node-inventory:configuration":"","flow-node-inventory:port-number":1,"flow-node-inventory:hardware-address":"22:6b:5b:43:c9:13","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s1-eth1","flow-node-inventory:supported":"","flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"40","received":"38"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":70,"nanosecond":659000000},"bytes":{"transmitted":"3340","received":"3164"},"receive-crc-error":"0"}},{"id":"openflow:1:LOCAL","flow-node-inventory:port-number":4294967294,"flow-node-inventory:hardware-address":"7e:2a:b5:f7:38:4d","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s1","flow-node-inventory:current-feature":"","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":0,"flow-node-inventory:state":{"live":false,"blocked":false,"link-down":true},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"PORT-DOWN","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"0","received":"0"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":70,"nanosecond":648000000},"bytes":{"transmitted":"0","received":"0"},"receive-crc-error":"0"}},{"id":"openflow:1:2","flow-node-inventory:port-number":2,"flow-node-inventory:hardware-address":"0a:0f:35:ec:0f:11","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s1-eth2","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"30","received":"29"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":70,"nanosecond":659000000},"bytes":{"transmitted":"2509","received":"2423"},"receive-crc-error":"0"}}],"flow-node-inventory:snapshot-gathering-status-end":{"succeeded":true,"end":"2026-04-08T00:52:28.786Z"}},{"id":"openflow:2","flow-node-inventory:manufacturer":"Nicira, Inc.","flow-node-inventory:description":"s2","flow-node-inventory:hardware":"Open vSwitch","flow-node-inventory:software":"2.17.11","flow-node-inventory:ip-address":"10.30.170.192","flow-node-inventory:serial-number":"None","flow-node-inventory:port-number":52796,"flow-node-inventory:table":[{"id":62,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":28,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":2,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":224,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":181,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":147,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":106,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":61,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":27,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":1,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":223,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":182,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":148,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":105,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":60,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":30,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":0,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"56","active-flows":1,"packets-matched":"55"},"flow":[{"id":"#UF$TABLE*0-5","table_id":0,"priority":0,"cookie_mask":"0","idle-timeout":0,"cookie":"10","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"output-action":{"max-length":65535,"output-node-connector":"CONTROLLER"}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"44","byte-count":"3521","duration":{"second":69,"nanosecond":412000000}},"flags":"SEND_FLOW_REM"}]},{"id":226,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":179,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":149,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":104,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":59,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":29,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":225,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":180,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":150,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":103,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":66,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":32,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":220,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":185,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":151,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":102,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":65,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":31,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":253,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":219,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":186,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":152,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":101,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":64,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":34,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":252,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":222,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":183,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":153,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":100,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":63,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":33,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":251,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":221,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":184,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":154,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":99,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":54,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":20,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":250,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":216,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":189,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":155,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":129,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":114,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":53,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":19,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":249,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":215,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":190,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":156,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":130,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":113,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":52,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":22,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":248,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":218,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":187,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":157,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":112,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":51,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":21,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":247,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":217,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":188,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":158,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":128,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":111,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":58,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":24,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":246,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":212,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":193,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":159,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":110,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":57,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":23,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":245,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":211,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":194,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":160,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":109,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":56,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":26,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":244,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":214,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":191,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":161,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":108,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":55,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":25,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":243,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":213,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":192,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":162,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":107,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":77,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":43,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":17,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":239,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":198,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":164,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":138,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":119,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":89,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":78,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":44,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":18,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":240,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":197,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":163,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":137,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":120,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":90,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":75,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":45,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":15,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":241,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":196,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":166,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":136,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":121,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":87,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":76,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":46,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":16,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":242,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":195,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":165,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":135,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":122,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":88,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":81,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":47,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":13,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":235,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":202,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":168,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":134,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":115,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":85,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":82,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":48,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":14,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":236,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":201,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":167,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":133,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":116,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":86,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":79,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":49,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":11,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":237,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":200,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":170,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":132,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":117,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":83,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":80,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":50,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":12,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":238,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":199,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":169,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":131,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":118,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":84,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":69,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":35,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":9,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":231,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":206,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":172,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":146,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":127,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":97,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":70,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":36,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":10,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":232,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":205,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":171,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":145,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":98,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":67,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":37,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":7,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":233,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":204,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":174,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":144,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":95,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":68,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":38,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":8,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":234,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":203,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":173,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":143,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":96,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":73,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":39,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":5,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":227,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":210,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":176,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":142,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":123,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":93,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":74,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":40,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":6,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":228,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":209,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":175,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":141,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":124,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":94,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":71,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":41,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":3,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":229,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":208,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":178,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":140,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":125,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":91,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":72,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":42,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":4,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":230,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":207,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":177,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":139,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":126,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":92,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}}],"opendaylight-group-statistics:group-features":{"max-groups":[4294967040],"group-types-supported":["opendaylight-group-types:group-all","opendaylight-group-types:group-ff","opendaylight-group-types:group-select","opendaylight-group-types:group-indirect"],"group-capabilities-supported":["opendaylight-group-types:chaining","opendaylight-group-types:select-weight","opendaylight-group-types:select-liveness"],"actions":[67076097]},"flow-node-inventory:switch-features":{"max_tables":254,"capabilities":["flow-node-inventory:flow-feature-capability-table-stats","flow-node-inventory:flow-feature-capability-group-stats","flow-node-inventory:flow-feature-capability-queue-stats","flow-node-inventory:flow-feature-capability-flow-stats","flow-node-inventory:flow-feature-capability-port-stats"],"max_buffers":0},"flow-node-inventory:snapshot-gathering-status-start":{"begin":"2026-04-08T00:52:28.771Z"},"node-connector":[{"id":"openflow:2:3","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:maximum-speed":0,"flow-node-inventory:reason":"update","flow-node-inventory:configuration":"","flow-node-inventory:port-number":3,"flow-node-inventory:hardware-address":"72:dd:8c:02:0b:4b","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s2-eth3","flow-node-inventory:supported":"","flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"38","received":"40"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":70,"nanosecond":627000000},"bytes":{"transmitted":"3164","received":"3340"},"receive-crc-error":"0"}},{"id":"openflow:2:LOCAL","flow-node-inventory:port-number":4294967294,"flow-node-inventory:hardware-address":"5a:1e:a3:85:42:48","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s2","flow-node-inventory:current-feature":"","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":0,"flow-node-inventory:state":{"live":false,"blocked":false,"link-down":true},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"PORT-DOWN","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"0","received":"0"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":70,"nanosecond":590000000},"bytes":{"transmitted":"0","received":"0"},"receive-crc-error":"0"}},{"id":"openflow:2:2","flow-node-inventory:port-number":2,"flow-node-inventory:hardware-address":"c6:ba:d5:44:ef:8d","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s2-eth2","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"34","received":"10"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":70,"nanosecond":630000000},"bytes":{"transmitted":"2861","received":"796"},"receive-crc-error":"0"}},{"id":"openflow:2:1","flow-node-inventory:port-number":1,"flow-node-inventory:hardware-address":"b6:66:26:1b:66:76","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s2-eth1","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"33","received":"10"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":70,"nanosecond":621000000},"bytes":{"transmitted":"2791","received":"796"},"receive-crc-error":"0"}}],"flow-node-inventory:snapshot-gathering-status-end":{"succeeded":true,"end":"2026-04-08T00:52:28.787Z"}}]}}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:29.373670" elapsed="0.004012"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:29.373450" elapsed="0.004289"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:29.373430" elapsed="0.004345"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:29.381248" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:29.378178" elapsed="0.003135"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:29.377856" elapsed="0.003505"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:29.377831" elapsed="0.003563"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:52:29.382153" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:29.381624" elapsed="0.000591"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:29.382644" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:29.382316" elapsed="0.000408"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:29.383421" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:29.382978" elapsed="0.000479"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:29.382756" elapsed="0.000751"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:29.382291" elapsed="0.001245"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:52:29.384281" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:29.383756" elapsed="0.000563"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:29.384774" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:29.384416" elapsed="0.000440"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:29.385556" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:29.385112" elapsed="0.000480"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:29.384888" elapsed="0.000755"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:29.384391" elapsed="0.001282"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:52:29.385867" elapsed="0.000366"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:52:29.386678" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:29.386398" elapsed="0.000306"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:52:29.386855" elapsed="0.002500"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:52:29.373003" elapsed="0.016415"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-08T00:52:29.389593" elapsed="0.000028"/>
</return>
<status status="PASS" start="2026-04-08T00:52:29.389488" elapsed="0.000167"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:29.389470" elapsed="0.000208"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:29.389822" elapsed="0.000022"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-08T00:52:29.389890" elapsed="0.000015"/>
</return>
<msg time="2026-04-08T00:52:29.392394" level="INFO">${response_text} = {"opendaylight-inventory:nodes":{"node":[{"id":"openflow:3","flow-node-inventory:manufacturer":"Nicira, Inc.","flow-node-inventory:description":"s3","flow-node-inventory:hardware":"Open vSwitch","flow...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${access}</arg>
<arg>session=${session}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:52:29.329541" elapsed="0.062882"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:52:29.392474" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:52:29.392624" level="INFO">${data} = {"opendaylight-inventory:nodes":{"node":[{"id":"openflow:3","flow-node-inventory:manufacturer":"Nicira, Inc.","flow-node-inventory:description":"s3","flow-node-inventory:hardware":"Open vSwitch","flow...</msg>
<var>${data}</var>
<arg>uri=${uri}</arg>
<arg>member_index=${index}</arg>
<doc>Send a GET with the supplied uri to member ${member_index}.</doc>
<status status="PASS" start="2026-04-08T00:52:29.327778" elapsed="0.064873"/>
</kw>
<kw name="Check Item Occurrence" owner="Utils">
<for flavor="IN">
<iter>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T00:52:29.393897" level="INFO">Item found from container 4 times.</msg>
<arg>${string}</arg>
<arg>${item}</arg>
<arg>${dictionary_item_occurrence}[${item}]</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="PASS" start="2026-04-08T00:52:29.393481" elapsed="0.000879"/>
</kw>
<var name="${item}">openflow:1</var>
<status status="PASS" start="2026-04-08T00:52:29.393325" elapsed="0.001076"/>
</iter>
<iter>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T00:52:29.395041" level="INFO">Item found from container 5 times.</msg>
<arg>${string}</arg>
<arg>${item}</arg>
<arg>${dictionary_item_occurrence}[${item}]</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="PASS" start="2026-04-08T00:52:29.394636" elapsed="0.000729"/>
</kw>
<var name="${item}">openflow:2</var>
<status status="PASS" start="2026-04-08T00:52:29.394483" elapsed="0.000962"/>
</iter>
<iter>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T00:52:29.396084" level="INFO">Item found from container 5 times.</msg>
<arg>${string}</arg>
<arg>${item}</arg>
<arg>${dictionary_item_occurrence}[${item}]</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="PASS" start="2026-04-08T00:52:29.395682" elapsed="0.000731"/>
</kw>
<var name="${item}">openflow:3</var>
<status status="PASS" start="2026-04-08T00:52:29.395530" elapsed="0.000923"/>
</iter>
<var>${item}</var>
<value>@{dictionary_item_occurrence}</value>
<status status="PASS" start="2026-04-08T00:52:29.393168" elapsed="0.003314"/>
</for>
<arg>${data}</arg>
<arg>${dictionary}</arg>
<doc>Check string for occurrences of items expressed in a list of dictionaries {item=occurrences}. 0 occurences means item is not present.</doc>
<status status="PASS" start="2026-04-08T00:52:29.392877" elapsed="0.003658"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T00:52:29.323498" elapsed="0.073072"/>
</iter>
<iter>
<kw name="Get_From_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:29.401881" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:29.401578" elapsed="0.000330"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:52:29.401953" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:52:29.402099" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:52:29.401208" elapsed="0.000917"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:29.408329" level="INFO">/rests/data/opendaylight-inventory:nodes?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:29.408060" elapsed="0.000315"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:29.408768" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:29.408528" elapsed="0.000284"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:52:29.450207" level="INFO">GET Request : url=http://10.30.171.110:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0u16rl3earouwvehy59feej101.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:52:29.450809" level="INFO">GET Response : url=http://10.30.171.110:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Transfer-Encoding': 'chunked'} 
 body={"opendaylight-inventory:nodes":{"node":[{"id":"openflow:3","flow-node-inventory:manufacturer":"Nicira, Inc.","flow-node-inventory:description":"s3","flow-node-inventory:hardware":"Open vSwitch","flow-node-inventory:software":"2.17.11","flow-node-inventory:ip-address":"10.30.170.192","flow-node-inventory:serial-number":"None","flow-node-inventory:port-number":52804,"flow-node-inventory:table":[{"id":62,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":28,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":2,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":224,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":181,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":147,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":106,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":61,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":27,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":1,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":223,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":182,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":148,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":105,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":60,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":30,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":0,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"47","active-flows":1,"packets-matched":"42"},"flow":[{"id":"#UF$TABLE*0-6","table_id":0,"priority":0,"cookie_mask":"0","idle-timeout":0,"cookie":"10","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"output-action":{"max-length":65535,"output-node-connector":"CONTROLLER"}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"31","byte-count":"2460","duration":{"second":69,"nanosecond":418000000}},"flags":"SEND_FLOW_REM"}]},{"id":226,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":179,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":149,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":104,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":59,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":29,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":225,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":180,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":150,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":103,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":66,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":32,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":220,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":185,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":151,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":102,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":65,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":31,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":253,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":219,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":186,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":152,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":101,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":64,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":34,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":252,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":222,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":183,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":153,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":100,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":63,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":33,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":251,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":221,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":184,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":154,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":99,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":54,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":20,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":250,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":216,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":189,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":155,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":129,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":114,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":53,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":19,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":249,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":215,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":190,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":156,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"i... (set the log level to DEBUG or TRACE to see the full content) 
 </msg>
<msg time="2026-04-08T00:52:29.451089" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:52:29.410816" elapsed="0.040311"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:29.408879" elapsed="0.042370"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:29.451499" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:29.451288" elapsed="0.000300"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:29.408861" elapsed="0.042756"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:29.456909" level="INFO">{"opendaylight-inventory:nodes":{"node":[{"id":"openflow:3","flow-node-inventory:manufacturer":"Nicira, Inc.","flow-node-inventory:description":"s3","flow-node-inventory:hardware":"Open vSwitch","flow-node-inventory:software":"2.17.11","flow-node-inventory:ip-address":"10.30.170.192","flow-node-inventory:serial-number":"None","flow-node-inventory:port-number":52804,"flow-node-inventory:table":[{"id":62,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":28,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":2,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":224,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":181,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":147,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":106,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":61,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":27,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":1,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":223,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":182,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":148,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":105,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":60,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":30,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":0,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"47","active-flows":1,"packets-matched":"42"},"flow":[{"id":"#UF$TABLE*0-6","table_id":0,"priority":0,"cookie_mask":"0","idle-timeout":0,"cookie":"10","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"output-action":{"max-length":65535,"output-node-connector":"CONTROLLER"}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"31","byte-count":"2460","duration":{"second":69,"nanosecond":418000000}},"flags":"SEND_FLOW_REM"}]},{"id":226,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":179,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":149,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":104,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":59,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":29,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":225,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":180,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":150,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":103,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":66,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":32,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":220,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":185,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":151,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":102,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":65,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":31,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":253,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":219,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":186,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":152,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":101,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":64,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":34,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":252,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":222,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":183,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":153,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":100,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":63,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":33,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":251,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":221,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":184,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":154,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":99,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":54,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":20,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":250,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":216,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":189,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":155,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":129,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":114,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":53,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":19,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":249,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":215,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":190,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":156,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":130,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":113,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":52,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":22,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":248,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":218,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":187,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":157,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":112,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":51,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":21,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":247,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":217,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":188,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":158,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":128,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":111,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":58,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":24,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":246,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":212,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":193,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":159,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":110,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":57,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":23,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":245,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":211,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":194,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":160,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":109,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":56,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":26,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":244,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":214,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":191,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":161,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":108,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":55,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":25,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":243,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":213,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":192,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":162,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":107,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":77,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":43,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":17,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":239,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":198,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":164,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":138,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":119,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":89,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":78,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":44,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":18,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":240,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":197,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":163,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":137,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":120,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":90,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":75,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":45,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":15,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":241,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":196,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":166,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":136,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":121,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":87,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":76,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":46,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":16,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":242,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":195,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":165,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":135,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":122,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":88,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":81,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":47,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":13,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":235,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":202,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":168,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":134,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":115,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":85,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":82,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":48,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":14,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":236,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":201,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":167,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":133,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":116,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":86,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":79,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":49,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":11,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":237,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":200,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":170,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":132,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":117,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":83,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":80,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":50,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":12,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":238,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":199,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":169,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":131,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":118,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":84,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":69,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":35,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":9,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":231,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":206,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":172,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":146,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":127,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":97,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":70,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":36,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":10,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":232,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":205,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":171,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":145,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":98,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":67,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":37,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":7,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":233,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":204,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":174,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":144,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":95,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":68,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":38,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":8,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":234,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":203,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":173,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":143,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":96,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":73,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":39,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":5,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":227,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":210,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":176,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":142,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":123,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":93,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":74,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":40,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":6,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":228,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":209,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":175,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":141,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":124,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":94,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":71,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":41,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":3,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":229,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":208,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":178,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":140,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":125,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":91,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":72,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":42,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":4,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":230,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":207,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":177,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":139,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":126,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":92,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}}],"opendaylight-group-statistics:group-features":{"max-groups":[4294967040],"group-types-supported":["opendaylight-group-types:group-all","opendaylight-group-types:group-ff","opendaylight-group-types:group-select","opendaylight-group-types:group-indirect"],"group-capabilities-supported":["opendaylight-group-types:chaining","opendaylight-group-types:select-weight","opendaylight-group-types:select-liveness"],"actions":[67076097]},"flow-node-inventory:switch-features":{"max_tables":254,"capabilities":["flow-node-inventory:flow-feature-capability-table-stats","flow-node-inventory:flow-feature-capability-group-stats","flow-node-inventory:flow-feature-capability-queue-stats","flow-node-inventory:flow-feature-capability-flow-stats","flow-node-inventory:flow-feature-capability-port-stats"],"max_buffers":0},"flow-node-inventory:snapshot-gathering-status-start":{"begin":"2026-04-08T00:52:28.884Z"},"node-connector":[{"id":"openflow:3:3","flow-node-inventory:port-number":3,"flow-node-inventory:hardware-address":"e6:d6:06:da:00:6e","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s3-eth3","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"29","received":"30"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":70,"nanosecond":763000000},"bytes":{"transmitted":"2423","received":"2509"},"receive-crc-error":"0"}},{"id":"openflow:3:2","flow-node-inventory:port-number":2,"flow-node-inventory:hardware-address":"8a:ac:a7:67:88:d5","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s3-eth2","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"34","received":"10"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":70,"nanosecond":763000000},"bytes":{"transmitted":"2861","received":"796"},"receive-crc-error":"0"}},{"id":"openflow:3:1","flow-node-inventory:port-number":1,"flow-node-inventory:hardware-address":"86:1f:d7:a8:33:33","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s3-eth1","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"34","received":"10"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":70,"nanosecond":763000000},"bytes":{"transmitted":"2861","received":"796"},"receive-crc-error":"0"}},{"id":"openflow:3:LOCAL","flow-node-inventory:port-number":4294967294,"flow-node-inventory:hardware-address":"12:15:a2:01:a9:49","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s3","flow-node-inventory:current-feature":"","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":0,"flow-node-inventory:state":{"live":false,"blocked":false,"link-down":true},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"PORT-DOWN","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"0","received":"0"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":70,"nanosecond":750000000},"bytes":{"transmitted":"0","received":"0"},"receive-crc-error":"0"}}],"flow-node-inventory:snapshot-gathering-status-end":{"succeeded":true,"end":"2026-04-08T00:52:28.901Z"}},{"id":"openflow:1","flow-node-inventory:manufacturer":"Nicira, Inc.","flow-node-inventory:description":"s1","flow-node-inventory:hardware":"Open vSwitch","flow-node-inventory:software":"2.17.11","flow-node-inventory:ip-address":"10.30.170.192","flow-node-inventory:serial-number":"None","flow-node-inventory:port-number":52792,"flow-node-inventory:table":[{"id":62,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":28,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":2,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":224,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":181,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":147,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":106,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":61,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":27,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":1,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":223,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":182,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":148,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":105,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":60,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":30,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":0,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"64","active-flows":1,"packets-matched":"64"},"flow":[{"id":"#UF$TABLE*0-4","table_id":0,"priority":0,"cookie_mask":"0","idle-timeout":0,"cookie":"10","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"output-action":{"max-length":65535,"output-node-connector":"CONTROLLER"}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"53","byte-count":"4351","duration":{"second":69,"nanosecond":417000000}},"flags":"SEND_FLOW_REM"}]},{"id":226,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":179,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":149,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":104,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":59,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":29,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":225,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":180,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":150,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":103,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":66,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":32,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":220,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":185,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":151,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":102,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":65,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":31,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":253,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":219,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":186,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":152,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":101,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":64,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":34,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":252,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":222,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":183,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":153,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":100,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":63,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":33,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":251,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":221,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":184,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":154,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":99,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":54,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":20,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":250,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":216,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":189,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":155,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":129,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":114,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":53,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":19,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":249,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":215,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":190,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":156,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":130,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":113,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":52,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":22,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":248,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":218,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":187,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":157,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":112,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":51,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":21,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":247,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":217,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":188,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":158,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":128,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":111,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":58,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":24,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":246,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":212,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":193,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":159,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":110,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":57,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":23,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":245,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":211,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":194,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":160,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":109,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":56,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":26,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":244,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":214,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":191,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":161,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":108,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":55,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":25,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":243,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":213,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":192,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":162,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":107,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":77,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":43,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":17,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":239,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":198,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":164,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":138,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":119,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":89,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":78,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":44,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":18,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":240,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":197,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":163,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":137,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":120,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":90,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":75,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":45,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":15,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":241,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":196,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":166,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":136,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":121,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":87,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":76,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":46,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":16,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":242,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":195,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":165,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":135,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":122,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":88,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":81,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":47,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":13,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":235,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":202,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":168,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":134,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":115,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":85,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":82,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":48,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":14,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":236,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":201,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":167,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":133,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":116,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":86,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":79,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":49,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":11,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":237,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":200,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":170,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":132,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":117,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":83,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":80,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":50,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":12,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":238,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":199,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":169,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":131,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":118,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":84,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":69,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":35,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":9,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":231,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":206,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":172,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":146,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":127,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":97,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":70,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":36,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":10,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":232,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":205,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":171,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":145,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":98,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":67,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":37,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":7,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":233,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":204,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":174,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":144,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":95,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":68,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":38,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":8,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":234,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":203,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":173,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":143,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":96,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":73,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":39,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":5,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":227,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":210,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":176,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":142,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":123,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":93,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":74,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":40,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":6,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":228,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":209,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":175,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":141,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":124,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":94,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":71,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":41,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":3,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":229,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":208,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":178,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":140,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":125,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":91,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":72,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":42,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":4,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":230,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":207,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":177,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":139,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":126,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":92,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}}],"opendaylight-group-statistics:group-features":{"max-groups":[4294967040],"group-types-supported":["opendaylight-group-types:group-all","opendaylight-group-types:group-ff","opendaylight-group-types:group-select","opendaylight-group-types:group-indirect"],"group-capabilities-supported":["opendaylight-group-types:chaining","opendaylight-group-types:select-weight","opendaylight-group-types:select-liveness"],"actions":[67076097]},"flow-node-inventory:switch-features":{"max_tables":254,"capabilities":["flow-node-inventory:flow-feature-capability-table-stats","flow-node-inventory:flow-feature-capability-group-stats","flow-node-inventory:flow-feature-capability-queue-stats","flow-node-inventory:flow-feature-capability-flow-stats","flow-node-inventory:flow-feature-capability-port-stats"],"max_buffers":0},"flow-node-inventory:snapshot-gathering-status-start":{"begin":"2026-04-08T00:52:28.767Z"},"node-connector":[{"id":"openflow:1:1","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:maximum-speed":0,"flow-node-inventory:reason":"update","flow-node-inventory:configuration":"","flow-node-inventory:port-number":1,"flow-node-inventory:hardware-address":"22:6b:5b:43:c9:13","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s1-eth1","flow-node-inventory:supported":"","flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"40","received":"38"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":70,"nanosecond":659000000},"bytes":{"transmitted":"3340","received":"3164"},"receive-crc-error":"0"}},{"id":"openflow:1:LOCAL","flow-node-inventory:port-number":4294967294,"flow-node-inventory:hardware-address":"7e:2a:b5:f7:38:4d","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s1","flow-node-inventory:current-feature":"","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":0,"flow-node-inventory:state":{"live":false,"blocked":false,"link-down":true},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"PORT-DOWN","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"0","received":"0"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":70,"nanosecond":648000000},"bytes":{"transmitted":"0","received":"0"},"receive-crc-error":"0"}},{"id":"openflow:1:2","flow-node-inventory:port-number":2,"flow-node-inventory:hardware-address":"0a:0f:35:ec:0f:11","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s1-eth2","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"30","received":"29"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":70,"nanosecond":659000000},"bytes":{"transmitted":"2509","received":"2423"},"receive-crc-error":"0"}}],"flow-node-inventory:snapshot-gathering-status-end":{"succeeded":true,"end":"2026-04-08T00:52:28.786Z"}},{"id":"openflow:2","flow-node-inventory:manufacturer":"Nicira, Inc.","flow-node-inventory:description":"s2","flow-node-inventory:hardware":"Open vSwitch","flow-node-inventory:software":"2.17.11","flow-node-inventory:ip-address":"10.30.170.192","flow-node-inventory:serial-number":"None","flow-node-inventory:port-number":52796,"flow-node-inventory:table":[{"id":62,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":28,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":2,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":224,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":181,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":147,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":106,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":61,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":27,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":1,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":223,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":182,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":148,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":105,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":60,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":30,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":0,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"56","active-flows":1,"packets-matched":"55"},"flow":[{"id":"#UF$TABLE*0-5","table_id":0,"priority":0,"cookie_mask":"0","idle-timeout":0,"cookie":"10","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"output-action":{"max-length":65535,"output-node-connector":"CONTROLLER"}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"44","byte-count":"3521","duration":{"second":69,"nanosecond":412000000}},"flags":"SEND_FLOW_REM"}]},{"id":226,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":179,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":149,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":104,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":59,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":29,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":225,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":180,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":150,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":103,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":66,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":32,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":220,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":185,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":151,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":102,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":65,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":31,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":253,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":219,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":186,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":152,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":101,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":64,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":34,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":252,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":222,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":183,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":153,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":100,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":63,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":33,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":251,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":221,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":184,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":154,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":99,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":54,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":20,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":250,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":216,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":189,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":155,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":129,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":114,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":53,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":19,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":249,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":215,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":190,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":156,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":130,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":113,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":52,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":22,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":248,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":218,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":187,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":157,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":112,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":51,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":21,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":247,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":217,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":188,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":158,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":128,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":111,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":58,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":24,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":246,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":212,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":193,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":159,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":110,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":57,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":23,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":245,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":211,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":194,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":160,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":109,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":56,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":26,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":244,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":214,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":191,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":161,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":108,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":55,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":25,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":243,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":213,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":192,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":162,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":107,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":77,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":43,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":17,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":239,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":198,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":164,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":138,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":119,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":89,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":78,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":44,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":18,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":240,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":197,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":163,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":137,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":120,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":90,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":75,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":45,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":15,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":241,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":196,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":166,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":136,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":121,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":87,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":76,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":46,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":16,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":242,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":195,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":165,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":135,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":122,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":88,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":81,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":47,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":13,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":235,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":202,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":168,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":134,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":115,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":85,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":82,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":48,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":14,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":236,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":201,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":167,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":133,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":116,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":86,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":79,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":49,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":11,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":237,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":200,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":170,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":132,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":117,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":83,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":80,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":50,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":12,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":238,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":199,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":169,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":131,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":118,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":84,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":69,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":35,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":9,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":231,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":206,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":172,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":146,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":127,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":97,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":70,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":36,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":10,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":232,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":205,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":171,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":145,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":98,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":67,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":37,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":7,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":233,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":204,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":174,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":144,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":95,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":68,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":38,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":8,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":234,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":203,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":173,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":143,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":96,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":73,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":39,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":5,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":227,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":210,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":176,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":142,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":123,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":93,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":74,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":40,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":6,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":228,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":209,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":175,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":141,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":124,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":94,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":71,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":41,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":3,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":229,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":208,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":178,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":140,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":125,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":91,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":72,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":42,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":4,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":230,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":207,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":177,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":139,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":126,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":92,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}}],"opendaylight-group-statistics:group-features":{"max-groups":[4294967040],"group-types-supported":["opendaylight-group-types:group-all","opendaylight-group-types:group-ff","opendaylight-group-types:group-select","opendaylight-group-types:group-indirect"],"group-capabilities-supported":["opendaylight-group-types:chaining","opendaylight-group-types:select-weight","opendaylight-group-types:select-liveness"],"actions":[67076097]},"flow-node-inventory:switch-features":{"max_tables":254,"capabilities":["flow-node-inventory:flow-feature-capability-table-stats","flow-node-inventory:flow-feature-capability-group-stats","flow-node-inventory:flow-feature-capability-queue-stats","flow-node-inventory:flow-feature-capability-flow-stats","flow-node-inventory:flow-feature-capability-port-stats"],"max_buffers":0},"flow-node-inventory:snapshot-gathering-status-start":{"begin":"2026-04-08T00:52:28.771Z"},"node-connector":[{"id":"openflow:2:3","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:maximum-speed":0,"flow-node-inventory:reason":"update","flow-node-inventory:configuration":"","flow-node-inventory:port-number":3,"flow-node-inventory:hardware-address":"72:dd:8c:02:0b:4b","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s2-eth3","flow-node-inventory:supported":"","flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"38","received":"40"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":70,"nanosecond":627000000},"bytes":{"transmitted":"3164","received":"3340"},"receive-crc-error":"0"}},{"id":"openflow:2:LOCAL","flow-node-inventory:port-number":4294967294,"flow-node-inventory:hardware-address":"5a:1e:a3:85:42:48","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s2","flow-node-inventory:current-feature":"","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":0,"flow-node-inventory:state":{"live":false,"blocked":false,"link-down":true},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"PORT-DOWN","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"0","received":"0"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":70,"nanosecond":590000000},"bytes":{"transmitted":"0","received":"0"},"receive-crc-error":"0"}},{"id":"openflow:2:2","flow-node-inventory:port-number":2,"flow-node-inventory:hardware-address":"c6:ba:d5:44:ef:8d","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s2-eth2","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"34","received":"10"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":70,"nanosecond":630000000},"bytes":{"transmitted":"2861","received":"796"},"receive-crc-error":"0"}},{"id":"openflow:2:1","flow-node-inventory:port-number":1,"flow-node-inventory:hardware-address":"b6:66:26:1b:66:76","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s2-eth1","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"33","received":"10"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":70,"nanosecond":621000000},"bytes":{"transmitted":"2791","received":"796"},"receive-crc-error":"0"}}],"flow-node-inventory:snapshot-gathering-status-end":{"succeeded":true,"end":"2026-04-08T00:52:28.787Z"}}]}}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:29.453037" elapsed="0.005374"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:29.452733" elapsed="0.005730"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:29.452706" elapsed="0.005792"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:29.461502" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:29.458890" elapsed="0.002658"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:29.458579" elapsed="0.003004"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:29.458555" elapsed="0.003052"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:52:29.462138" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:29.461765" elapsed="0.000403"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:29.462491" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:29.462254" elapsed="0.000294"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:29.463029" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:29.462731" elapsed="0.000324"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:29.462572" elapsed="0.000519"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:29.462235" elapsed="0.000877"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:52:29.463667" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:29.463289" elapsed="0.000405"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:29.463996" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:29.463763" elapsed="0.000290"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:29.464544" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:29.464251" elapsed="0.000319"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:29.464076" elapsed="0.000529"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:29.463746" elapsed="0.000880"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:52:29.464773" elapsed="0.000340"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:52:29.465570" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:29.465300" elapsed="0.000296"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:52:29.465747" elapsed="0.002233"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:52:29.452126" elapsed="0.015916"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-08T00:52:29.468234" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-08T00:52:29.468111" elapsed="0.000184"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:29.468092" elapsed="0.000227"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:29.468463" elapsed="0.000022"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-08T00:52:29.468533" elapsed="0.000014"/>
</return>
<msg time="2026-04-08T00:52:29.471012" level="INFO">${response_text} = {"opendaylight-inventory:nodes":{"node":[{"id":"openflow:3","flow-node-inventory:manufacturer":"Nicira, Inc.","flow-node-inventory:description":"s3","flow-node-inventory:hardware":"Open vSwitch","flow...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${access}</arg>
<arg>session=${session}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:52:29.402467" elapsed="0.068573"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:52:29.471091" elapsed="0.000027"/>
</return>
<msg time="2026-04-08T00:52:29.471258" level="INFO">${data} = {"opendaylight-inventory:nodes":{"node":[{"id":"openflow:3","flow-node-inventory:manufacturer":"Nicira, Inc.","flow-node-inventory:description":"s3","flow-node-inventory:hardware":"Open vSwitch","flow...</msg>
<var>${data}</var>
<arg>uri=${uri}</arg>
<arg>member_index=${index}</arg>
<doc>Send a GET with the supplied uri to member ${member_index}.</doc>
<status status="PASS" start="2026-04-08T00:52:29.400700" elapsed="0.070585"/>
</kw>
<kw name="Check Item Occurrence" owner="Utils">
<for flavor="IN">
<iter>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T00:52:29.472510" level="INFO">Item found from container 4 times.</msg>
<arg>${string}</arg>
<arg>${item}</arg>
<arg>${dictionary_item_occurrence}[${item}]</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="PASS" start="2026-04-08T00:52:29.472074" elapsed="0.000878"/>
</kw>
<var name="${item}">openflow:1</var>
<status status="PASS" start="2026-04-08T00:52:29.471903" elapsed="0.001090"/>
</iter>
<iter>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T00:52:29.473650" level="INFO">Item found from container 5 times.</msg>
<arg>${string}</arg>
<arg>${item}</arg>
<arg>${dictionary_item_occurrence}[${item}]</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="PASS" start="2026-04-08T00:52:29.473245" elapsed="0.000711"/>
</kw>
<var name="${item}">openflow:2</var>
<status status="PASS" start="2026-04-08T00:52:29.473074" elapsed="0.000955"/>
</iter>
<iter>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T00:52:29.474686" level="INFO">Item found from container 5 times.</msg>
<arg>${string}</arg>
<arg>${item}</arg>
<arg>${dictionary_item_occurrence}[${item}]</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="PASS" start="2026-04-08T00:52:29.474282" elapsed="0.000709"/>
</kw>
<var name="${item}">openflow:3</var>
<status status="PASS" start="2026-04-08T00:52:29.474113" elapsed="0.000917"/>
</iter>
<var>${item}</var>
<value>@{dictionary_item_occurrence}</value>
<status status="PASS" start="2026-04-08T00:52:29.471770" elapsed="0.003289"/>
</for>
<arg>${data}</arg>
<arg>${dictionary}</arg>
<doc>Check string for occurrences of items expressed in a list of dictionaries {item=occurrences}. 0 occurences means item is not present.</doc>
<status status="PASS" start="2026-04-08T00:52:29.471511" elapsed="0.003601"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T00:52:29.396659" elapsed="0.078487"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-08T00:52:29.264552" elapsed="0.210627"/>
</for>
<arg>uri=${RFC8040_OPERATIONAL_NODES_API}</arg>
<arg>dictionary=${dictionary}</arg>
<arg>member_index_list=${controller_index_list}</arg>
<doc>Send a GET with the supplied uri to all or some members defined in ${member_index_list}.
Then check received for occurrences of items expressed in a dictionary {'openflow:1': '4', 'openflow:2': '5', 'openflow:3': '5'}.</doc>
<status status="PASS" start="2026-04-08T00:52:29.262225" elapsed="0.213024"/>
</kw>
<arg>5s</arg>
<arg>1s</arg>
<arg>ClusterManagement.Check_Item_Occurrence_Member_List_Or_All</arg>
<arg>uri=${RFC8040_OPERATIONAL_NODES_API}</arg>
<arg>dictionary=${dictionary}</arg>
<arg>member_index_list=${controller_index_list}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-08T00:52:29.257581" elapsed="0.217725"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-08T00:52:29.475840" level="INFO">${dictionary} = {'openflow:1': '21', 'openflow:2': '19', 'openflow:3': '19'}</msg>
<var>${dictionary}</var>
<arg>openflow:1=21</arg>
<arg>openflow:2=19</arg>
<arg>openflow:3=19</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-08T00:52:29.475498" elapsed="0.000368"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Check_Item_Occurrence_Member_List_Or_All" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:52:29.481870" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:52:29.481491" elapsed="0.000405"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:52:29.482372" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:52:29.482053" elapsed="0.000345"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:52:29.482443" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:52:29.482595" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:52:29.481104" elapsed="0.001516"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_From_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:29.488153" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:29.487856" elapsed="0.000329"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:52:29.488267" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:52:29.488415" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:52:29.487514" elapsed="0.000927"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:29.494785" level="INFO">/rests/data/network-topology:network-topology?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:29.494539" elapsed="0.000291"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:29.495240" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:29.494980" elapsed="0.000304"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:52:29.506250" level="INFO">GET Request : url=http://10.30.170.48:8181/rests/data/network-topology:network-topology?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01ju7g9ih47awu1dako8be5k84o113.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:52:29.506556" level="INFO">GET Response : url=http://10.30.170.48:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '3149'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"},{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:3']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:1:1","dest-node":"openflow:1"}},{"link-id":"openflow:3:3","source":{"source-node":"openflow:3","source-tp":"openflow:3:3"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:1:1","source":{"source-node":"openflow:1","source-tp":"openflow:1:1"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:3:3","dest-node":"openflow:3"}}]}]}} 
 </msg>
<msg time="2026-04-08T00:52:29.506768" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:52:29.497293" elapsed="0.009512"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:29.495353" elapsed="0.011511"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:29.507111" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:29.506901" elapsed="0.000324"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:29.495334" elapsed="0.011922"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:29.512000" level="INFO">{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"},{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:3']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:1:1","dest-node":"openflow:1"}},{"link-id":"openflow:3:3","source":{"source-node":"openflow:3","source-tp":"openflow:3:3"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:1:1","source":{"source-node":"openflow:1","source-tp":"openflow:1:1"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:3:3","dest-node":"openflow:3"}}]}]}}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:29.508654" elapsed="0.003442"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:29.508347" elapsed="0.003797"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:29.508321" elapsed="0.003864"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:29.515625" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:29.512591" elapsed="0.003097"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:29.512283" elapsed="0.003452"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:29.512259" elapsed="0.003510"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:52:29.516545" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:29.515994" elapsed="0.000588"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:29.517006" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:29.516679" elapsed="0.000406"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:29.517823" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:29.517366" elapsed="0.000494"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:29.517118" elapsed="0.000791"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:29.516654" elapsed="0.001286"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:52:29.518693" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:29.518161" elapsed="0.000569"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:29.519124" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:29.518846" elapsed="0.000339"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:29.519677" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:29.519384" elapsed="0.000319"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:29.519223" elapsed="0.000515"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:29.518815" elapsed="0.000943"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:52:29.519904" elapsed="0.000362"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:52:29.520746" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:29.520468" elapsed="0.000304"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:52:29.520931" elapsed="0.002361"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:52:29.507741" elapsed="0.015614"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-08T00:52:29.523529" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-08T00:52:29.523423" elapsed="0.000165"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:29.523405" elapsed="0.000207"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:29.523758" elapsed="0.000021"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-08T00:52:29.523828" elapsed="0.000014"/>
</return>
<msg time="2026-04-08T00:52:29.526129" level="INFO">${response_text} = {"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='o...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${access}</arg>
<arg>session=${session}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:52:29.488789" elapsed="0.037369"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:52:29.526225" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:52:29.526377" level="INFO">${data} = {"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='o...</msg>
<var>${data}</var>
<arg>uri=${uri}</arg>
<arg>member_index=${index}</arg>
<doc>Send a GET with the supplied uri to member ${member_index}.</doc>
<status status="PASS" start="2026-04-08T00:52:29.486992" elapsed="0.039410"/>
</kw>
<kw name="Check Item Occurrence" owner="Utils">
<for flavor="IN">
<iter>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T00:52:29.527565" level="INFO">Item found from container 21 times.</msg>
<arg>${string}</arg>
<arg>${item}</arg>
<arg>${dictionary_item_occurrence}[${item}]</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="PASS" start="2026-04-08T00:52:29.527174" elapsed="0.000471"/>
</kw>
<var name="${item}">openflow:1</var>
<status status="PASS" start="2026-04-08T00:52:29.527016" elapsed="0.000669"/>
</iter>
<iter>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T00:52:29.528295" level="INFO">Item found from container 19 times.</msg>
<arg>${string}</arg>
<arg>${item}</arg>
<arg>${dictionary_item_occurrence}[${item}]</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="PASS" start="2026-04-08T00:52:29.527916" elapsed="0.000457"/>
</kw>
<var name="${item}">openflow:2</var>
<status status="PASS" start="2026-04-08T00:52:29.527764" elapsed="0.000648"/>
</iter>
<iter>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T00:52:29.529000" level="INFO">Item found from container 19 times.</msg>
<arg>${string}</arg>
<arg>${item}</arg>
<arg>${dictionary_item_occurrence}[${item}]</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="PASS" start="2026-04-08T00:52:29.528640" elapsed="0.000436"/>
</kw>
<var name="${item}">openflow:3</var>
<status status="PASS" start="2026-04-08T00:52:29.528489" elapsed="0.000626"/>
</iter>
<var>${item}</var>
<value>@{dictionary_item_occurrence}</value>
<status status="PASS" start="2026-04-08T00:52:29.526886" elapsed="0.002256"/>
</for>
<arg>${data}</arg>
<arg>${dictionary}</arg>
<doc>Check string for occurrences of items expressed in a list of dictionaries {item=occurrences}. 0 occurences means item is not present.</doc>
<status status="PASS" start="2026-04-08T00:52:29.526626" elapsed="0.002587"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T00:52:29.482798" elapsed="0.046450"/>
</iter>
<iter>
<kw name="Get_From_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:29.534510" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:29.534174" elapsed="0.000363"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:52:29.534582" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:52:29.534727" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:52:29.533830" elapsed="0.000922"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:29.540947" level="INFO">/rests/data/network-topology:network-topology?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:29.540702" elapsed="0.000289"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:29.541403" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:29.541142" elapsed="0.000304"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:52:29.555540" level="INFO">GET Request : url=http://10.30.170.131:8181/rests/data/network-topology:network-topology?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node012m0dyuink19r12kj250j53usg1.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:52:29.555764" level="INFO">GET Response : url=http://10.30.170.131:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '3149'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"},{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:3']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:1:1","dest-node":"openflow:1"}},{"link-id":"openflow:3:3","source":{"source-node":"openflow:3","source-tp":"openflow:3:3"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:1:1","source":{"source-node":"openflow:1","source-tp":"openflow:1:1"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:3:3","dest-node":"openflow:3"}}]}]}} 
 </msg>
<msg time="2026-04-08T00:52:29.555986" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:52:29.543463" elapsed="0.012563"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:29.541513" elapsed="0.014578"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:29.556401" elapsed="0.000033"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:29.556132" elapsed="0.000366"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:29.541494" elapsed="0.015035"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:29.561940" level="INFO">{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"},{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:3']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:1:1","dest-node":"openflow:1"}},{"link-id":"openflow:3:3","source":{"source-node":"openflow:3","source-tp":"openflow:3:3"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:1:1","source":{"source-node":"openflow:1","source-tp":"openflow:1:1"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:3:3","dest-node":"openflow:3"}}]}]}}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:29.558032" elapsed="0.004010"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:29.557704" elapsed="0.004389"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:29.557676" elapsed="0.004454"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:29.565161" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:29.562567" elapsed="0.002655"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:29.562239" elapsed="0.003019"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:29.562213" elapsed="0.003069"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:52:29.565843" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:29.565453" elapsed="0.000417"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:29.566180" elapsed="0.000034"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:29.565939" elapsed="0.000313"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:29.566734" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:29.566437" elapsed="0.000323"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:29.566276" elapsed="0.000519"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:29.565921" elapsed="0.000896"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:52:29.567353" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:29.566973" elapsed="0.000407"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:29.567699" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:29.567465" elapsed="0.000290"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:29.568251" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:29.567942" elapsed="0.000335"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:29.567778" elapsed="0.000533"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:29.567447" elapsed="0.000885"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:52:29.568482" elapsed="0.000347"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:52:29.569354" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:29.569044" elapsed="0.000337"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:52:29.569534" elapsed="0.002218"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:52:29.557042" elapsed="0.014777"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-08T00:52:29.571998" elapsed="0.000034"/>
</return>
<status status="PASS" start="2026-04-08T00:52:29.571891" elapsed="0.000176"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:29.571873" 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-04-08T00:52:29.572256" elapsed="0.000023"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-08T00:52:29.572328" elapsed="0.000014"/>
</return>
<msg time="2026-04-08T00:52:29.574687" level="INFO">${response_text} = {"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='o...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${access}</arg>
<arg>session=${session}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:52:29.535072" elapsed="0.039644"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:52:29.574767" elapsed="0.000027"/>
</return>
<msg time="2026-04-08T00:52:29.574921" level="INFO">${data} = {"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='o...</msg>
<var>${data}</var>
<arg>uri=${uri}</arg>
<arg>member_index=${index}</arg>
<doc>Send a GET with the supplied uri to member ${member_index}.</doc>
<status status="PASS" start="2026-04-08T00:52:29.533348" elapsed="0.041599"/>
</kw>
<kw name="Check Item Occurrence" owner="Utils">
<for flavor="IN">
<iter>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T00:52:29.576227" level="INFO">Item found from container 21 times.</msg>
<arg>${string}</arg>
<arg>${item}</arg>
<arg>${dictionary_item_occurrence}[${item}]</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="PASS" start="2026-04-08T00:52:29.575821" elapsed="0.000490"/>
</kw>
<var name="${item}">openflow:1</var>
<status status="PASS" start="2026-04-08T00:52:29.575632" elapsed="0.000719"/>
</iter>
<iter>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T00:52:29.576945" level="INFO">Item found from container 19 times.</msg>
<arg>${string}</arg>
<arg>${item}</arg>
<arg>${dictionary_item_occurrence}[${item}]</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="PASS" start="2026-04-08T00:52:29.576585" elapsed="0.000436"/>
</kw>
<var name="${item}">openflow:2</var>
<status status="PASS" start="2026-04-08T00:52:29.576431" elapsed="0.000629"/>
</iter>
<iter>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T00:52:29.577670" level="INFO">Item found from container 19 times.</msg>
<arg>${string}</arg>
<arg>${item}</arg>
<arg>${dictionary_item_occurrence}[${item}]</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="PASS" start="2026-04-08T00:52:29.577309" elapsed="0.000437"/>
</kw>
<var name="${item}">openflow:3</var>
<status status="PASS" start="2026-04-08T00:52:29.577138" elapsed="0.000651"/>
</iter>
<var>${item}</var>
<value>@{dictionary_item_occurrence}</value>
<status status="PASS" start="2026-04-08T00:52:29.575493" elapsed="0.002325"/>
</for>
<arg>${data}</arg>
<arg>${dictionary}</arg>
<doc>Check string for occurrences of items expressed in a list of dictionaries {item=occurrences}. 0 occurences means item is not present.</doc>
<status status="PASS" start="2026-04-08T00:52:29.575215" elapsed="0.002656"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T00:52:29.529335" elapsed="0.048570"/>
</iter>
<iter>
<kw name="Get_From_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:29.583173" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:29.582874" elapsed="0.000340"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:52:29.583261" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:52:29.583408" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:52:29.582533" elapsed="0.000900"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:29.591735" level="INFO">/rests/data/network-topology:network-topology?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:29.591444" elapsed="0.000342"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:29.592188" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:29.591942" elapsed="0.000305"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:52:29.606106" level="INFO">GET Request : url=http://10.30.171.110:8181/rests/data/network-topology:network-topology?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0u16rl3earouwvehy59feej101.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:52:29.606594" level="INFO">GET Response : url=http://10.30.171.110:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '3149'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"},{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:3']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:1:1","dest-node":"openflow:1"}},{"link-id":"openflow:3:3","source":{"source-node":"openflow:3","source-tp":"openflow:3:3"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:1:1","source":{"source-node":"openflow:1","source-tp":"openflow:1:1"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:3:3","dest-node":"openflow:3"}}]}]}} 
 </msg>
<msg time="2026-04-08T00:52:29.606906" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:52:29.594327" elapsed="0.012620"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:29.592323" elapsed="0.014694"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:29.607350" elapsed="0.000035"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:29.607064" elapsed="0.000384"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:29.592301" elapsed="0.015179"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:29.612818" level="INFO">{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"},{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:3']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:1:1","dest-node":"openflow:1"}},{"link-id":"openflow:3:3","source":{"source-node":"openflow:3","source-tp":"openflow:3:3"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:1:1","source":{"source-node":"openflow:1","source-tp":"openflow:1:1"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:3:3","dest-node":"openflow:3"}}]}]}}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:29.609138" elapsed="0.003788"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:29.608750" elapsed="0.004228"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:29.608720" elapsed="0.004295"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:29.616718" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:29.613468" elapsed="0.003316"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:29.613115" elapsed="0.003720"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:29.613078" elapsed="0.003793"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:52:29.617791" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:29.617135" elapsed="0.000696"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:29.618147" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:29.617908" elapsed="0.000315"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:29.618720" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:29.618414" elapsed="0.000332"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:29.618248" elapsed="0.000534"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:29.617890" elapsed="0.000913"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:52:29.619347" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:29.618963" elapsed="0.000411"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:29.619675" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:29.619444" elapsed="0.000287"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:29.620228" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:29.619914" elapsed="0.000341"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:29.619754" elapsed="0.000537"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:29.619426" elapsed="0.000886"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:52:29.620469" elapsed="0.000352"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:52:29.621367" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:29.621042" elapsed="0.000352"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:52:29.621569" elapsed="0.002215"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:52:29.608049" elapsed="0.015803"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-08T00:52:29.624035" elapsed="0.000037"/>
</return>
<status status="PASS" start="2026-04-08T00:52:29.623925" elapsed="0.000183"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:29.623907" elapsed="0.000225"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:29.624301" elapsed="0.000023"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-08T00:52:29.624374" elapsed="0.000014"/>
</return>
<msg time="2026-04-08T00:52:29.626720" level="INFO">${response_text} = {"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='o...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${access}</arg>
<arg>session=${session}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:52:29.583765" elapsed="0.042984"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:52:29.626803" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:52:29.626957" level="INFO">${data} = {"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='o...</msg>
<var>${data}</var>
<arg>uri=${uri}</arg>
<arg>member_index=${index}</arg>
<doc>Send a GET with the supplied uri to member ${member_index}.</doc>
<status status="PASS" start="2026-04-08T00:52:29.582031" elapsed="0.044953"/>
</kw>
<kw name="Check Item Occurrence" owner="Utils">
<for flavor="IN">
<iter>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T00:52:29.628248" level="INFO">Item found from container 21 times.</msg>
<arg>${string}</arg>
<arg>${item}</arg>
<arg>${dictionary_item_occurrence}[${item}]</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="PASS" start="2026-04-08T00:52:29.627844" elapsed="0.000489"/>
</kw>
<var name="${item}">openflow:1</var>
<status status="PASS" start="2026-04-08T00:52:29.627684" elapsed="0.000688"/>
</iter>
<iter>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T00:52:29.628976" level="INFO">Item found from container 19 times.</msg>
<arg>${string}</arg>
<arg>${item}</arg>
<arg>${dictionary_item_occurrence}[${item}]</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="PASS" start="2026-04-08T00:52:29.628608" elapsed="0.000445"/>
</kw>
<var name="${item}">openflow:2</var>
<status status="PASS" start="2026-04-08T00:52:29.628454" elapsed="0.000638"/>
</iter>
<iter>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T00:52:29.629703" level="INFO">Item found from container 19 times.</msg>
<arg>${string}</arg>
<arg>${item}</arg>
<arg>${dictionary_item_occurrence}[${item}]</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="PASS" start="2026-04-08T00:52:29.629341" elapsed="0.000452"/>
</kw>
<var name="${item}">openflow:3</var>
<status status="PASS" start="2026-04-08T00:52:29.629174" elapsed="0.000657"/>
</iter>
<var>${item}</var>
<value>@{dictionary_item_occurrence}</value>
<status status="PASS" start="2026-04-08T00:52:29.627541" elapsed="0.002319"/>
</for>
<arg>${data}</arg>
<arg>${dictionary}</arg>
<doc>Check string for occurrences of items expressed in a list of dictionaries {item=occurrences}. 0 occurences means item is not present.</doc>
<status status="PASS" start="2026-04-08T00:52:29.627255" elapsed="0.002659"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T00:52:29.577992" elapsed="0.051956"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-08T00:52:29.482668" elapsed="0.147309"/>
</for>
<arg>uri=${RFC8040_OPERATIONAL_TOPO_API}</arg>
<arg>dictionary=${dictionary}</arg>
<arg>member_index_list=${controller_index_list}</arg>
<doc>Send a GET with the supplied uri to all or some members defined in ${member_index_list}.
Then check received for occurrences of items expressed in a dictionary {'openflow:1': '21', 'openflow:2': '19', 'openflow:3': '19'}.</doc>
<status status="PASS" start="2026-04-08T00:52:29.480549" elapsed="0.149480"/>
</kw>
<arg>5s</arg>
<arg>1s</arg>
<arg>ClusterManagement.Check_Item_Occurrence_Member_List_Or_All</arg>
<arg>uri=${RFC8040_OPERATIONAL_TOPO_API}</arg>
<arg>dictionary=${dictionary}</arg>
<arg>member_index_list=${controller_index_list}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-08T00:52:29.476056" elapsed="0.154031"/>
</kw>
<doc>Check devices in tree,2 are in operational inventory and topology in all instances in ${controller_index_list}.
Inventory should show 1x node_id per device 1x node_id per connector. Topology should show 2x node_id per device + 3x node_id per connector
+ 5x node_id per link termination. TODO: A Keyword that can calculate this based on mininet topology.</doc>
<status status="PASS" start="2026-04-08T00:52:29.254706" elapsed="0.375449"/>
</kw>
<doc>Check devices in operational inventory and topology in all cluster instances.</doc>
<status status="PASS" start="2026-04-08T00:52:29.249466" elapsed="0.380826"/>
</test>
<test id="s1-s2-t38" name="Add Configuration In Owner and Verify After Start" line="195">
<kw name="Add Sample Flow And Verify" owner="ClusterOpenFlow">
<msg time="2026-04-08T00:52:29.643090" level="FAIL">Variable '${new_owner}' not found.</msg>
<arg>${new_owner}</arg>
<doc>Add sample flow in ${controller_index} and verify it gets applied in all instances in ${controller_index_list}.</doc>
<status status="FAIL" start="2026-04-08T00:52:29.639497" elapsed="0.003636">Variable '${new_owner}' not found.</status>
</kw>
<doc>Add Flow in Owner and verify it gets applied from all instances.</doc>
<status status="FAIL" start="2026-04-08T00:52:29.630849" elapsed="0.012451">Variable '${new_owner}' not found.</status>
</test>
<test id="s1-s2-t39" name="Modify Configuration In Owner and Verify After Start" line="199">
<kw name="Modify Sample Flow And Verify" owner="ClusterOpenFlow">
<msg time="2026-04-08T00:52:29.655888" level="FAIL">Variable '${new_owner}' not found.</msg>
<arg>${new_owner}</arg>
<doc>Modify sample flow in ${controller_index} and verify it gets applied in all instances in ${controller_index_list}.</doc>
<status status="FAIL" start="2026-04-08T00:52:29.652322" elapsed="0.003611">Variable '${new_owner}' not found.</status>
</kw>
<doc>Modify Flow in Owner and verify it gets applied from all instances.</doc>
<status status="FAIL" start="2026-04-08T00:52:29.643748" elapsed="0.012390">Variable '${new_owner}' not found.</status>
</test>
<test id="s1-s2-t40" name="Delete Configuration In Owner and Verify After Start" line="203">
<kw name="Delete Sample Flow And Verify" owner="ClusterOpenFlow">
<msg time="2026-04-08T00:52:29.661046" level="FAIL">Variable '${new_owner}' not found.</msg>
<arg>${new_owner}</arg>
<doc>Delete sample flow in Owner and verify it gets removed from all instances.</doc>
<status status="FAIL" start="2026-04-08T00:52:29.657421" elapsed="0.003663">Variable '${new_owner}' not found.</status>
</kw>
<doc>Delete Flow in Owner and verify it gets applied from all instances.</doc>
<status status="FAIL" start="2026-04-08T00:52:29.656681" elapsed="0.004552">Variable '${new_owner}' not found.</status>
</test>
<test id="s1-s2-t41" name="Add Configuration In Old Owner and Verify After Start" line="207">
<kw name="Add Sample Flow And Verify" owner="ClusterOpenFlow">
<msg time="2026-04-08T00:52:29.673894" level="FAIL">Variable '${original_owner}' not found.</msg>
<arg>${original_owner}</arg>
<doc>Add sample flow in ${controller_index} and verify it gets applied in all instances in ${controller_index_list}.</doc>
<status status="FAIL" start="2026-04-08T00:52:29.670084" elapsed="0.003852">Variable '${original_owner}' not found.</status>
</kw>
<doc>Add Flow in Owner and verify it gets applied from all instances.</doc>
<status status="FAIL" start="2026-04-08T00:52:29.661759" elapsed="0.012315">Variable '${original_owner}' not found.</status>
</test>
<test id="s1-s2-t42" name="Modify Configuration In Old Owner and Verify After Start" line="211">
<kw name="Modify Sample Flow And Verify" owner="ClusterOpenFlow">
<msg time="2026-04-08T00:52:29.686455" level="FAIL">Variable '${original_owner}' not found.</msg>
<arg>${original_owner}</arg>
<doc>Modify sample flow in ${controller_index} and verify it gets applied in all instances in ${controller_index_list}.</doc>
<status status="FAIL" start="2026-04-08T00:52:29.682652" elapsed="0.003846">Variable '${original_owner}' not found.</status>
</kw>
<doc>Modify Flow in Owner and verify it gets applied from all instances.</doc>
<status status="FAIL" start="2026-04-08T00:52:29.674384" elapsed="0.012260">Variable '${original_owner}' not found.</status>
</test>
<test id="s1-s2-t43" name="Delete Configuration In Old Owner and Verify After Start" line="215">
<kw name="Delete Sample Flow And Verify" owner="ClusterOpenFlow">
<msg time="2026-04-08T00:52:29.691576" level="FAIL">Variable '${original_owner}' not found.</msg>
<arg>${original_owner}</arg>
<doc>Delete sample flow in Owner and verify it gets removed from all instances.</doc>
<status status="FAIL" start="2026-04-08T00:52:29.687451" elapsed="0.004163">Variable '${original_owner}' not found.</status>
</kw>
<doc>Delete Flow in Owner and verify it gets applied from all instances.</doc>
<status status="FAIL" start="2026-04-08T00:52:29.686835" elapsed="0.004907">Variable '${original_owner}' not found.</status>
</test>
<test id="s1-s2-t44" name="Send RPC Add to Owner and Verify After Start" line="219">
<kw name="Send RPC Add Sample Flow And Verify" owner="ClusterOpenFlow">
<msg time="2026-04-08T00:52:29.703707" level="FAIL">Variable '${new_owner}' not found.</msg>
<arg>${new_owner}</arg>
<doc>Add sample flow in ${controller_index} and verify it gets applied from all instances in ${controller_index_list}.</doc>
<status status="FAIL" start="2026-04-08T00:52:29.700042" elapsed="0.003705">Variable '${new_owner}' not found.</status>
</kw>
<doc>Add Flow in Owner and verify it gets applied from all instances.</doc>
<status status="FAIL" start="2026-04-08T00:52:29.691916" elapsed="0.011968">Variable '${new_owner}' not found.</status>
</test>
<test id="s1-s2-t45" name="Send RPC Delete to Owner and Verify After Start" line="223">
<kw name="Send RPC Delete Sample Flow And Verify" owner="ClusterOpenFlow">
<msg time="2026-04-08T00:52:29.715948" level="FAIL">Variable '${new_owner}' not found.</msg>
<arg>${new_owner}</arg>
<doc>Delete sample flow in ${controller_index} and verify it gets removed from all instances in ${controller_index_list}.</doc>
<status status="FAIL" start="2026-04-08T00:52:29.712373" elapsed="0.003625">Variable '${new_owner}' not found.</status>
</kw>
<doc>Delete Flow in Owner and verify it gets removed from all instances.</doc>
<status status="FAIL" start="2026-04-08T00:52:29.704261" elapsed="0.011892">Variable '${new_owner}' not found.</status>
</test>
<test id="s1-s2-t46" name="Send RPC Add to Old Owner and Verify After Start" line="227">
<kw name="Send RPC Add Sample Flow And Verify" owner="ClusterOpenFlow">
<msg time="2026-04-08T00:52:29.728655" level="FAIL">Variable '${original_owner}' not found.</msg>
<arg>${original_owner}</arg>
<doc>Add sample flow in ${controller_index} and verify it gets applied from all instances in ${controller_index_list}.</doc>
<status status="FAIL" start="2026-04-08T00:52:29.724779" elapsed="0.003937">Variable '${original_owner}' not found.</status>
</kw>
<doc>Add Flow in Owner and verify it gets applied from all instances.</doc>
<status status="FAIL" start="2026-04-08T00:52:29.716371" elapsed="0.012531">Variable '${original_owner}' not found.</status>
</test>
<test id="s1-s2-t47" name="Send RPC Delete to Old Owner and Verify After Start" line="231">
<kw name="Send RPC Delete Sample Flow And Verify" owner="ClusterOpenFlow">
<msg time="2026-04-08T00:52:29.741310" level="FAIL">Variable '${original_owner}' not found.</msg>
<arg>${original_owner}</arg>
<doc>Delete sample flow in ${controller_index} and verify it gets removed from all instances in ${controller_index_list}.</doc>
<status status="FAIL" start="2026-04-08T00:52:29.737493" elapsed="0.003868">Variable '${original_owner}' not found.</status>
</kw>
<doc>Delete Flow in Owner and verify it gets removed from all instances.</doc>
<status status="FAIL" start="2026-04-08T00:52:29.729140" elapsed="0.012395">Variable '${original_owner}' not found.</status>
</test>
<test id="s1-s2-t48" name="Modify Network and Verify After Start" line="235">
<kw name="Take OpenFlow Device Link Down and Verify" owner="ClusterOpenFlow">
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-08T00:52:29.749084" level="INFO">${dictionary} = {'"link-down":true': '1'}</msg>
<var>${dictionary}</var>
<arg>"link-down":true=1</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-08T00:52:29.748677" elapsed="0.000436"/>
</kw>
<kw name="Send Mininet Command" owner="MininetKeywords">
<if>
<branch type="IF" condition="&quot;&quot;&quot;${mininet_conn}&quot;&quot;&quot; != &quot;&quot;">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${mininet_conn}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:52:29.756829" elapsed="0.000160"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:29.756573" elapsed="0.000452"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:29.756546" elapsed="0.000508"/>
</if>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T00:52:29.764806" level="INFO">link s1 s2 down</msg>
<arg>${cmd}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T00:52:29.757212" elapsed="0.007657"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-08T00:52:29.826282" level="INFO">mininet&gt;</msg>
<msg time="2026-04-08T00:52:29.826490" level="INFO">${output} = mininet&gt;</msg>
<var>${output}</var>
<arg>mininet&gt;</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-08T00:52:29.765040" elapsed="0.061479"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-08T00:52:29.826603" elapsed="0.000055"/>
</return>
<msg time="2026-04-08T00:52:29.826908" level="INFO">${ouput} = mininet&gt;</msg>
<var>${ouput}</var>
<arg>${mininet_conn_id}</arg>
<arg>link s1 s2 down</arg>
<doc>Sends Command ${cmd} to Mininet session ${mininet_conn} and returns read buffer response.</doc>
<status status="PASS" start="2026-04-08T00:52:29.756258" elapsed="0.070677"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Check_Item_Occurrence_Member_List_Or_All" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:52:29.833710" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:52:29.833111" elapsed="0.000628"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:52:29.834237" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:52:29.833902" elapsed="0.000364"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:52:29.834311" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:52:29.834471" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:52:29.832734" elapsed="0.001763"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_From_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:29.839879" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:29.839577" elapsed="0.000329"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:52:29.839951" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:52:29.840099" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:52:29.839231" elapsed="0.000893"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:29.846628" level="INFO">/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:29.846372" elapsed="0.000303"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:29.847071" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:29.846829" elapsed="0.000286"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:52:29.854412" level="INFO">GET Request : url=http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01ju7g9ih47awu1dako8be5k84o113.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:52:29.854568" level="INFO">GET Response : url=http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '618'} 
 body={"opendaylight-inventory:node-connector":[{"id":"openflow:1:1","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:maximum-speed":0,"flow-node-inventory:reason":"update","flow-node-inventory:configuration":"PORT-DOWN","flow-node-inventory:port-number":1,"flow-node-inventory:hardware-address":"22:6b:5b:43:c9:13","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s1-eth1","flow-node-inventory:supported":"","flow-node-inventory:state":{"live":false,"blocked":false,"link-down":true}}]} 
 </msg>
<msg time="2026-04-08T00:52:29.854667" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:52:29.849128" elapsed="0.005565"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:29.847206" elapsed="0.007530"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:29.854917" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:29.854763" elapsed="0.000219"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:29.847172" elapsed="0.007831"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:29.858378" level="INFO">{"opendaylight-inventory:node-connector":[{"id":"openflow:1:1","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:maximum-speed":0,"flow-node-inventory:reason":"update","flow-node-inventory:configuration":"PORT-DOWN","flow-node-inventory:port-number":1,"flow-node-inventory:hardware-address":"22:6b:5b:43:c9:13","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s1-eth1","flow-node-inventory:supported":"","flow-node-inventory:state":{"live":false,"blocked":false,"link-down":true}}]}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:29.856018" elapsed="0.002412"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:29.855795" elapsed="0.002670"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:29.855776" elapsed="0.002713"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:29.862124" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:29.858768" elapsed="0.003457"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:29.858546" elapsed="0.003748"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:29.858529" elapsed="0.003801"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:52:29.863144" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:29.862582" elapsed="0.000625"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:29.863818" elapsed="0.000032"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:29.863461" elapsed="0.000443"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:29.864668" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:29.864215" elapsed="0.000492"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:29.863940" elapsed="0.000820"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:29.863431" elapsed="0.001362"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:52:29.865591" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:29.865028" elapsed="0.000603"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:29.866076" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:29.865733" elapsed="0.000431"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:29.866909" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:29.866495" elapsed="0.000440"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:29.866217" elapsed="0.000753"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:29.865707" elapsed="0.001285"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:52:29.867142" elapsed="0.000365"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:52:29.867962" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:29.867672" elapsed="0.000315"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:52:29.868141" elapsed="0.002219"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:52:29.855378" elapsed="0.015043"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-08T00:52:29.870613" elapsed="0.000032"/>
</return>
<status status="PASS" start="2026-04-08T00:52:29.870492" elapsed="0.000186"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:29.870474" elapsed="0.000228"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:29.870855" elapsed="0.000021"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-08T00:52:29.870924" elapsed="0.000014"/>
</return>
<msg time="2026-04-08T00:52:29.873112" level="INFO">${response_text} = {"opendaylight-inventory:node-connector":[{"id":"openflow:1:1","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed"...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${access}</arg>
<arg>session=${session}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:52:29.840481" elapsed="0.032660"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:52:29.873210" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:52:29.873362" level="INFO">${data} = {"opendaylight-inventory:node-connector":[{"id":"openflow:1:1","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed"...</msg>
<var>${data}</var>
<arg>uri=${uri}</arg>
<arg>member_index=${index}</arg>
<doc>Send a GET with the supplied uri to member ${member_index}.</doc>
<status status="PASS" start="2026-04-08T00:52:29.838725" elapsed="0.034663"/>
</kw>
<kw name="Check Item Occurrence" owner="Utils">
<for flavor="IN">
<iter>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T00:52:29.874564" level="INFO">Item found from container 1 time.</msg>
<arg>${string}</arg>
<arg>${item}</arg>
<arg>${dictionary_item_occurrence}[${item}]</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="PASS" start="2026-04-08T00:52:29.874169" elapsed="0.000467"/>
</kw>
<var name="${item}">"link-down":true</var>
<status status="PASS" start="2026-04-08T00:52:29.874006" elapsed="0.000673"/>
</iter>
<var>${item}</var>
<value>@{dictionary_item_occurrence}</value>
<status status="PASS" start="2026-04-08T00:52:29.873876" elapsed="0.000864"/>
</for>
<arg>${data}</arg>
<arg>${dictionary}</arg>
<doc>Check string for occurrences of items expressed in a list of dictionaries {item=occurrences}. 0 occurences means item is not present.</doc>
<status status="PASS" start="2026-04-08T00:52:29.873615" elapsed="0.001181"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T00:52:29.834692" elapsed="0.040142"/>
</iter>
<iter>
<kw name="Get_From_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:29.880253" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:29.879938" elapsed="0.000343"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:52:29.880327" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:52:29.880474" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:52:29.879599" elapsed="0.000900"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:29.886771" level="INFO">/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:29.886517" elapsed="0.000306"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:29.887254" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:29.886976" elapsed="0.000323"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:52:29.899670" level="INFO">GET Request : url=http://10.30.170.131:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node012m0dyuink19r12kj250j53usg1.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:52:29.899846" level="INFO">GET Response : url=http://10.30.170.131:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '618'} 
 body={"opendaylight-inventory:node-connector":[{"id":"openflow:1:1","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:maximum-speed":0,"flow-node-inventory:reason":"update","flow-node-inventory:configuration":"PORT-DOWN","flow-node-inventory:port-number":1,"flow-node-inventory:hardware-address":"22:6b:5b:43:c9:13","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s1-eth1","flow-node-inventory:supported":"","flow-node-inventory:state":{"live":false,"blocked":false,"link-down":true}}]} 
 </msg>
<msg time="2026-04-08T00:52:29.900009" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:52:29.889381" elapsed="0.010667"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:29.887372" elapsed="0.012746"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:29.900447" elapsed="0.000035"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:29.900163" elapsed="0.000382"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:29.887351" elapsed="0.013227"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:29.905720" level="INFO">{"opendaylight-inventory:node-connector":[{"id":"openflow:1:1","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:maximum-speed":0,"flow-node-inventory:reason":"update","flow-node-inventory:configuration":"PORT-DOWN","flow-node-inventory:port-number":1,"flow-node-inventory:hardware-address":"22:6b:5b:43:c9:13","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s1-eth1","flow-node-inventory:supported":"","flow-node-inventory:state":{"live":false,"blocked":false,"link-down":true}}]}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:29.902192" elapsed="0.003607"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:29.901832" elapsed="0.004028"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:29.901804" elapsed="0.004094"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:29.909118" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:29.906331" elapsed="0.002837"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:29.905980" elapsed="0.003236"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:29.905956" elapsed="0.003285"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:52:29.909827" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:29.909424" elapsed="0.000431"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:29.910166" elapsed="0.000035"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:29.909924" elapsed="0.000315"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:29.910730" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:29.910427" elapsed="0.000330"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:29.910263" elapsed="0.000529"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:29.909906" elapsed="0.000907"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:52:29.911346" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:29.910969" elapsed="0.000404"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:29.911674" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:29.911442" elapsed="0.000289"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:29.912263" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:29.911919" elapsed="0.000370"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:29.911755" elapsed="0.000569"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:29.911424" elapsed="0.000922"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:52:29.912497" elapsed="0.000348"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:52:29.913398" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:29.913079" elapsed="0.000345"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:52:29.913576" elapsed="0.002404"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:52:29.901130" elapsed="0.014918"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-08T00:52:29.916273" elapsed="0.000035"/>
</return>
<status status="PASS" start="2026-04-08T00:52:29.916120" elapsed="0.000224"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:29.916102" elapsed="0.000266"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:29.916517" elapsed="0.000021"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-08T00:52:29.916587" elapsed="0.000014"/>
</return>
<msg time="2026-04-08T00:52:29.918803" level="INFO">${response_text} = {"opendaylight-inventory:node-connector":[{"id":"openflow:1:1","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed"...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${access}</arg>
<arg>session=${session}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:52:29.880859" elapsed="0.037973"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:52:29.918884" elapsed="0.000027"/>
</return>
<msg time="2026-04-08T00:52:29.919036" level="INFO">${data} = {"opendaylight-inventory:node-connector":[{"id":"openflow:1:1","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed"...</msg>
<var>${data}</var>
<arg>uri=${uri}</arg>
<arg>member_index=${index}</arg>
<doc>Send a GET with the supplied uri to member ${member_index}.</doc>
<status status="PASS" start="2026-04-08T00:52:29.879100" elapsed="0.039962"/>
</kw>
<kw name="Check Item Occurrence" owner="Utils">
<for flavor="IN">
<iter>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T00:52:29.920329" level="INFO">Item found from container 1 time.</msg>
<arg>${string}</arg>
<arg>${item}</arg>
<arg>${dictionary_item_occurrence}[${item}]</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="PASS" start="2026-04-08T00:52:29.919920" elapsed="0.000494"/>
</kw>
<var name="${item}">"link-down":true</var>
<status status="PASS" start="2026-04-08T00:52:29.919760" elapsed="0.000699"/>
</iter>
<var>${item}</var>
<value>@{dictionary_item_occurrence}</value>
<status status="PASS" start="2026-04-08T00:52:29.919619" elapsed="0.000870"/>
</for>
<arg>${data}</arg>
<arg>${dictionary}</arg>
<doc>Check string for occurrences of items expressed in a list of dictionaries {item=occurrences}. 0 occurences means item is not present.</doc>
<status status="PASS" start="2026-04-08T00:52:29.919333" elapsed="0.001211"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T00:52:29.874921" elapsed="0.045657"/>
</iter>
<iter>
<kw name="Get_From_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:29.925890" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:29.925594" elapsed="0.000323"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:52:29.925962" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:52:29.926109" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:52:29.925252" elapsed="0.000882"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:29.932425" level="INFO">/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:29.932102" elapsed="0.000369"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:29.932893" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:29.932624" elapsed="0.000313"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:52:29.947704" level="INFO">GET Request : url=http://10.30.171.110:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0u16rl3earouwvehy59feej101.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:52:29.947887" level="INFO">GET Response : url=http://10.30.171.110:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '618'} 
 body={"opendaylight-inventory:node-connector":[{"id":"openflow:1:1","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:maximum-speed":0,"flow-node-inventory:reason":"update","flow-node-inventory:configuration":"PORT-DOWN","flow-node-inventory:port-number":1,"flow-node-inventory:hardware-address":"22:6b:5b:43:c9:13","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s1-eth1","flow-node-inventory:supported":"","flow-node-inventory:state":{"live":false,"blocked":false,"link-down":true}}]} 
 </msg>
<msg time="2026-04-08T00:52:29.948027" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:52:29.934931" elapsed="0.013133"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:29.933004" elapsed="0.015122"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:29.948497" elapsed="0.000033"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:29.948268" elapsed="0.000326"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:29.932986" elapsed="0.015640"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:29.953830" level="INFO">{"opendaylight-inventory:node-connector":[{"id":"openflow:1:1","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:maximum-speed":0,"flow-node-inventory:reason":"update","flow-node-inventory:configuration":"PORT-DOWN","flow-node-inventory:port-number":1,"flow-node-inventory:hardware-address":"22:6b:5b:43:c9:13","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s1-eth1","flow-node-inventory:supported":"","flow-node-inventory:state":{"live":false,"blocked":false,"link-down":true}}]}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:29.950163" elapsed="0.003742"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:29.949834" elapsed="0.004122"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:29.949806" elapsed="0.004186"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:29.957732" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:29.954424" elapsed="0.003375"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:29.954074" elapsed="0.003775"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:29.954049" elapsed="0.003827"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:52:29.958443" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:29.958040" elapsed="0.000430"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:29.958774" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:29.958539" elapsed="0.000292"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:29.959334" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:29.959016" elapsed="0.000344"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:29.958855" elapsed="0.000541"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:29.958521" elapsed="0.000896"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:52:29.959935" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:29.959573" elapsed="0.000388"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:29.960279" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:29.960030" elapsed="0.000305"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:29.960809" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:29.960517" elapsed="0.000318"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:29.960359" elapsed="0.000510"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:29.960012" elapsed="0.000878"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:52:29.961040" elapsed="0.000362"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:52:29.961864" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:29.961564" elapsed="0.000325"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:52:29.962041" elapsed="0.002228"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:52:29.949144" elapsed="0.015186"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-08T00:52:29.964503" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-08T00:52:29.964398" elapsed="0.000164"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:29.964380" elapsed="0.000206"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:29.964730" elapsed="0.000021"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-08T00:52:29.964798" elapsed="0.000015"/>
</return>
<msg time="2026-04-08T00:52:29.967004" level="INFO">${response_text} = {"opendaylight-inventory:node-connector":[{"id":"openflow:1:1","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed"...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${access}</arg>
<arg>session=${session}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:52:29.926484" elapsed="0.040548"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:52:29.967083" elapsed="0.000027"/>
</return>
<msg time="2026-04-08T00:52:29.967250" level="INFO">${data} = {"opendaylight-inventory:node-connector":[{"id":"openflow:1:1","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed"...</msg>
<var>${data}</var>
<arg>uri=${uri}</arg>
<arg>member_index=${index}</arg>
<doc>Send a GET with the supplied uri to member ${member_index}.</doc>
<status status="PASS" start="2026-04-08T00:52:29.924742" elapsed="0.042577"/>
</kw>
<kw name="Check Item Occurrence" owner="Utils">
<for flavor="IN">
<iter>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T00:52:29.968491" level="INFO">Item found from container 1 time.</msg>
<arg>${string}</arg>
<arg>${item}</arg>
<arg>${dictionary_item_occurrence}[${item}]</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="PASS" start="2026-04-08T00:52:29.968094" elapsed="0.000463"/>
</kw>
<var name="${item}">"link-down":true</var>
<status status="PASS" start="2026-04-08T00:52:29.967939" elapsed="0.000657"/>
</iter>
<var>${item}</var>
<value>@{dictionary_item_occurrence}</value>
<status status="PASS" start="2026-04-08T00:52:29.967808" elapsed="0.000937"/>
</for>
<arg>${data}</arg>
<arg>${dictionary}</arg>
<doc>Check string for occurrences of items expressed in a list of dictionaries {item=occurrences}. 0 occurences means item is not present.</doc>
<status status="PASS" start="2026-04-08T00:52:29.967550" elapsed="0.001251"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T00:52:29.920667" elapsed="0.048168"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-08T00:52:29.834553" elapsed="0.134311"/>
</for>
<arg>uri=${operational_port_1}</arg>
<arg>dictionary=${dictionary}</arg>
<arg>member_index_list=${controller_index_list}</arg>
<doc>Send a GET with the supplied uri to all or some members defined in ${member_index_list}.
Then check received for occurrences of items expressed in a dictionary {'"link-down":true': '1'}.</doc>
<status status="PASS" start="2026-04-08T00:52:29.832136" elapsed="0.136779"/>
</kw>
<arg>5s</arg>
<arg>1s</arg>
<arg>ClusterManagement.Check_Item_Occurrence_Member_List_Or_All</arg>
<arg>uri=${operational_port_1}</arg>
<arg>dictionary=${dictionary}</arg>
<arg>member_index_list=${controller_index_list}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-08T00:52:29.827234" elapsed="0.141736"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-08T00:52:29.969532" level="INFO">${dictionary} = {'openflow:1': '16', 'openflow:2': '14', 'openflow:3': '19'}</msg>
<var>${dictionary}</var>
<arg>openflow:1=16</arg>
<arg>openflow:2=14</arg>
<arg>openflow:3=19</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-08T00:52:29.969186" elapsed="0.000372"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Check_Item_Occurrence_Member_List_Or_All" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:52:29.975554" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:52:29.975160" elapsed="0.000421"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:52:29.976039" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:52:29.975739" elapsed="0.000326"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:52:29.976108" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:52:29.976280" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:52:29.974786" elapsed="0.001520"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_From_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:29.981765" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:29.981467" elapsed="0.000325"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:52:29.981837" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:52:29.981982" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:52:29.981109" elapsed="0.000898"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:29.988261" level="INFO">/rests/data/network-topology:network-topology?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:29.987996" elapsed="0.000311"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:29.988701" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:29.988460" elapsed="0.000284"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:52:29.996472" level="INFO">GET Request : url=http://10.30.170.48:8181/rests/data/network-topology:network-topology?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01ju7g9ih47awu1dako8be5k84o113.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:52:29.996680" level="INFO">GET Response : url=http://10.30.170.48:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '2833'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"},{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:3']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:3:3","source":{"source-node":"openflow:3","source-tp":"openflow:3:3"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:3:3","dest-node":"openflow:3"}}]}]}} 
 </msg>
<msg time="2026-04-08T00:52:29.996833" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:52:29.990760" elapsed="0.006099"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:29.988811" elapsed="0.008091"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:29.997080" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:29.996928" elapsed="0.000215"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:29.988792" elapsed="0.008377"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:30.000964" level="INFO">{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"},{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:3']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:3:3","source":{"source-node":"openflow:3","source-tp":"openflow:3:3"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:3:3","dest-node":"openflow:3"}}]}]}}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:29.998166" elapsed="0.002896"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:29.997943" elapsed="0.003170"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:29.997924" elapsed="0.003225"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:30.004860" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:30.001587" elapsed="0.003340"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:30.001259" elapsed="0.003718"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:30.001234" elapsed="0.003779"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:52:30.005817" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:30.005273" elapsed="0.000583"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:30.006332" elapsed="0.000032"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:30.005960" elapsed="0.000458"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:30.007136" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:30.006692" elapsed="0.000532"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:30.006453" elapsed="0.000827"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:30.005934" elapsed="0.001377"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:52:30.008004" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:30.007546" elapsed="0.000485"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:30.008351" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:30.008100" elapsed="0.000308"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:30.008879" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:30.008588" elapsed="0.000317"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:30.008431" elapsed="0.000508"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:30.008082" elapsed="0.000878"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:52:30.009107" elapsed="0.000362"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:52:30.009907" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:30.009632" elapsed="0.000340"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:52:30.010129" elapsed="0.002352"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:52:29.997523" elapsed="0.015022"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-08T00:52:30.012721" elapsed="0.000028"/>
</return>
<status status="PASS" start="2026-04-08T00:52:30.012615" elapsed="0.000167"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:30.012597" elapsed="0.000209"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:30.013080" elapsed="0.000025"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-08T00:52:30.013174" elapsed="0.000017"/>
</return>
<msg time="2026-04-08T00:52:30.015466" level="INFO">${response_text} = {"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='o...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${access}</arg>
<arg>session=${session}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:52:29.982344" elapsed="0.033153"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:52:30.015551" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:52:30.015707" level="INFO">${data} = {"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='o...</msg>
<var>${data}</var>
<arg>uri=${uri}</arg>
<arg>member_index=${index}</arg>
<doc>Send a GET with the supplied uri to member ${member_index}.</doc>
<status status="PASS" start="2026-04-08T00:52:29.980630" elapsed="0.035104"/>
</kw>
<kw name="Check Item Occurrence" owner="Utils">
<for flavor="IN">
<iter>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T00:52:30.016960" level="INFO">Item found from container 16 times.</msg>
<arg>${string}</arg>
<arg>${item}</arg>
<arg>${dictionary_item_occurrence}[${item}]</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="PASS" start="2026-04-08T00:52:30.016558" elapsed="0.000485"/>
</kw>
<var name="${item}">openflow:1</var>
<status status="PASS" start="2026-04-08T00:52:30.016394" elapsed="0.000690"/>
</iter>
<iter>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T00:52:30.017703" level="INFO">Item found from container 14 times.</msg>
<arg>${string}</arg>
<arg>${item}</arg>
<arg>${dictionary_item_occurrence}[${item}]</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="PASS" start="2026-04-08T00:52:30.017337" elapsed="0.000444"/>
</kw>
<var name="${item}">openflow:2</var>
<status status="PASS" start="2026-04-08T00:52:30.017169" elapsed="0.000652"/>
</iter>
<iter>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T00:52:30.018432" level="INFO">Item found from container 19 times.</msg>
<arg>${string}</arg>
<arg>${item}</arg>
<arg>${dictionary_item_occurrence}[${item}]</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="PASS" start="2026-04-08T00:52:30.018051" elapsed="0.000460"/>
</kw>
<var name="${item}">openflow:3</var>
<status status="PASS" start="2026-04-08T00:52:30.017900" elapsed="0.000652"/>
</iter>
<var>${item}</var>
<value>@{dictionary_item_occurrence}</value>
<status status="PASS" start="2026-04-08T00:52:30.016258" elapsed="0.002322"/>
</for>
<arg>${data}</arg>
<arg>${dictionary}</arg>
<doc>Check string for occurrences of items expressed in a list of dictionaries {item=occurrences}. 0 occurences means item is not present.</doc>
<status status="PASS" start="2026-04-08T00:52:30.015969" elapsed="0.002666"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T00:52:29.976487" elapsed="0.042184"/>
</iter>
<iter>
<kw name="Get_From_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:30.024043" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:30.023723" elapsed="0.000349"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:52:30.024123" elapsed="0.000038"/>
</return>
<msg time="2026-04-08T00:52:30.024303" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:52:30.023332" elapsed="0.000995"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:30.030591" level="INFO">/rests/data/network-topology:network-topology?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:30.030309" elapsed="0.000331"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:30.031033" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:30.030794" elapsed="0.000283"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:52:30.043349" level="INFO">GET Request : url=http://10.30.170.131:8181/rests/data/network-topology:network-topology?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node012m0dyuink19r12kj250j53usg1.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:52:30.043757" level="INFO">GET Response : url=http://10.30.170.131:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '2833'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"},{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:3']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:3:3","source":{"source-node":"openflow:3","source-tp":"openflow:3:3"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:3:3","dest-node":"openflow:3"}}]}]}} 
 </msg>
<msg time="2026-04-08T00:52:30.044043" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:52:30.033129" elapsed="0.010955"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:30.031164" elapsed="0.012995"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:30.044507" elapsed="0.000035"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:30.044224" elapsed="0.000383"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:30.031136" elapsed="0.013504"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:30.050131" level="INFO">{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"},{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:3']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:3:3","source":{"source-node":"openflow:3","source-tp":"openflow:3:3"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:3:3","dest-node":"openflow:3"}}]}]}}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:30.046243" elapsed="0.004010"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:30.045883" elapsed="0.004423"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:30.045854" elapsed="0.004490"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:30.054313" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:30.050753" elapsed="0.003628"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:30.050426" elapsed="0.004005"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:30.050402" elapsed="0.004067"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:52:30.055336" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:30.054729" elapsed="0.000647"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:30.055839" elapsed="0.000034"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:30.055483" elapsed="0.000444"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:30.056675" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:30.056225" elapsed="0.000490"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:30.055963" elapsed="0.000895"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:30.055455" elapsed="0.001445"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:52:30.057717" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:30.057147" elapsed="0.000609"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:30.058095" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:30.057858" elapsed="0.000293"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:30.058646" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:30.058353" elapsed="0.000319"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:30.058179" elapsed="0.000528"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:30.057833" elapsed="0.000895"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:52:30.058880" elapsed="0.000362"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:52:30.059699" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:30.059406" elapsed="0.000379"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:52:30.059943" elapsed="0.002232"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:52:30.045229" elapsed="0.017023"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-08T00:52:30.062431" elapsed="0.000034"/>
</return>
<status status="PASS" start="2026-04-08T00:52:30.062322" elapsed="0.000177"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:30.062303" 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-04-08T00:52:30.062669" elapsed="0.000022"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-08T00:52:30.062739" elapsed="0.000014"/>
</return>
<msg time="2026-04-08T00:52:30.064997" level="INFO">${response_text} = {"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='o...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${access}</arg>
<arg>session=${session}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:52:30.024669" elapsed="0.040368"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:52:30.065089" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:52:30.065258" level="INFO">${data} = {"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='o...</msg>
<var>${data}</var>
<arg>uri=${uri}</arg>
<arg>member_index=${index}</arg>
<doc>Send a GET with the supplied uri to member ${member_index}.</doc>
<status status="PASS" start="2026-04-08T00:52:30.022801" elapsed="0.042483"/>
</kw>
<kw name="Check Item Occurrence" owner="Utils">
<for flavor="IN">
<iter>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T00:52:30.066465" level="INFO">Item found from container 16 times.</msg>
<arg>${string}</arg>
<arg>${item}</arg>
<arg>${dictionary_item_occurrence}[${item}]</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="PASS" start="2026-04-08T00:52:30.066066" elapsed="0.000479"/>
</kw>
<var name="${item}">openflow:1</var>
<status status="PASS" start="2026-04-08T00:52:30.065913" elapsed="0.000672"/>
</iter>
<iter>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T00:52:30.067181" level="INFO">Item found from container 14 times.</msg>
<arg>${string}</arg>
<arg>${item}</arg>
<arg>${dictionary_item_occurrence}[${item}]</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="PASS" start="2026-04-08T00:52:30.066819" elapsed="0.000452"/>
</kw>
<var name="${item}">openflow:2</var>
<status status="PASS" start="2026-04-08T00:52:30.066665" elapsed="0.000645"/>
</iter>
<iter>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T00:52:30.067895" level="INFO">Item found from container 19 times.</msg>
<arg>${string}</arg>
<arg>${item}</arg>
<arg>${dictionary_item_occurrence}[${item}]</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="PASS" start="2026-04-08T00:52:30.067537" elapsed="0.000432"/>
</kw>
<var name="${item}">openflow:3</var>
<status status="PASS" start="2026-04-08T00:52:30.067387" elapsed="0.000621"/>
</iter>
<var>${item}</var>
<value>@{dictionary_item_occurrence}</value>
<status status="PASS" start="2026-04-08T00:52:30.065777" elapsed="0.002259"/>
</for>
<arg>${data}</arg>
<arg>${dictionary}</arg>
<doc>Check string for occurrences of items expressed in a list of dictionaries {item=occurrences}. 0 occurences means item is not present.</doc>
<status status="PASS" start="2026-04-08T00:52:30.065515" elapsed="0.002573"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T00:52:30.018758" elapsed="0.049364"/>
</iter>
<iter>
<kw name="Get_From_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:30.073416" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:30.073077" elapsed="0.000366"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:52:30.073489" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:52:30.073636" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:52:30.072729" elapsed="0.000933"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:30.080249" level="INFO">/rests/data/network-topology:network-topology?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:30.079976" elapsed="0.000320"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:30.080691" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:30.080449" elapsed="0.000287"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:52:30.094408" level="INFO">GET Request : url=http://10.30.171.110:8181/rests/data/network-topology:network-topology?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0u16rl3earouwvehy59feej101.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:52:30.094612" level="INFO">GET Response : url=http://10.30.171.110:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '2833'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"},{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:3']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:3:3","source":{"source-node":"openflow:3","source-tp":"openflow:3:3"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:3:3","dest-node":"openflow:3"}}]}]}} 
 </msg>
<msg time="2026-04-08T00:52:30.094761" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:52:30.082745" elapsed="0.012043"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:30.080804" elapsed="0.014039"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:30.095278" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:30.094906" elapsed="0.000517"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:30.080785" elapsed="0.014686"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:30.103039" level="INFO">{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"},{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:3']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:3:3","source":{"source-node":"openflow:3","source-tp":"openflow:3:3"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:3:3","dest-node":"openflow:3"}}]}]}}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:30.097720" elapsed="0.005385"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:30.097228" elapsed="0.005912"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:30.097153" elapsed="0.006016"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:30.105625" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:30.103462" elapsed="0.002208"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:30.103240" elapsed="0.002464"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:30.103223" elapsed="0.002505"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:52:30.106274" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:30.105888" elapsed="0.000413"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:30.106628" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:30.106392" elapsed="0.000293"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:30.107168" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:30.106867" elapsed="0.000340"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:30.106708" elapsed="0.000537"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:30.106373" elapsed="0.000893"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:52:30.107777" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:30.107422" elapsed="0.000382"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:30.108109" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:30.107879" elapsed="0.000289"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:30.108656" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:30.108364" elapsed="0.000318"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:30.108205" elapsed="0.000512"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:30.107861" elapsed="0.000877"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:52:30.108883" elapsed="0.000359"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:52:30.109671" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:30.109405" elapsed="0.000321"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:52:30.109882" elapsed="0.002225"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:52:30.096262" elapsed="0.015911"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-08T00:52:30.112363" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-08T00:52:30.112257" elapsed="0.000165"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:30.112238" elapsed="0.000207"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:30.112590" elapsed="0.000021"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-08T00:52:30.112659" elapsed="0.000014"/>
</return>
<msg time="2026-04-08T00:52:30.114925" level="INFO">${response_text} = {"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='o...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${access}</arg>
<arg>session=${session}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:52:30.073989" elapsed="0.040965"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:52:30.115005" elapsed="0.000026"/>
</return>
<msg time="2026-04-08T00:52:30.115152" level="INFO">${data} = {"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='o...</msg>
<var>${data}</var>
<arg>uri=${uri}</arg>
<arg>member_index=${index}</arg>
<doc>Send a GET with the supplied uri to member ${member_index}.</doc>
<status status="PASS" start="2026-04-08T00:52:30.072245" elapsed="0.042936"/>
</kw>
<kw name="Check Item Occurrence" owner="Utils">
<for flavor="IN">
<iter>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T00:52:30.116347" level="INFO">Item found from container 16 times.</msg>
<arg>${string}</arg>
<arg>${item}</arg>
<arg>${dictionary_item_occurrence}[${item}]</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="PASS" start="2026-04-08T00:52:30.115961" elapsed="0.000464"/>
</kw>
<var name="${item}">openflow:1</var>
<status status="PASS" start="2026-04-08T00:52:30.115809" elapsed="0.000656"/>
</iter>
<iter>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T00:52:30.117061" level="INFO">Item found from container 14 times.</msg>
<arg>${string}</arg>
<arg>${item}</arg>
<arg>${dictionary_item_occurrence}[${item}]</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="PASS" start="2026-04-08T00:52:30.116696" elapsed="0.000439"/>
</kw>
<var name="${item}">openflow:2</var>
<status status="PASS" start="2026-04-08T00:52:30.116544" elapsed="0.000634"/>
</iter>
<iter>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T00:52:30.117782" level="INFO">Item found from container 19 times.</msg>
<arg>${string}</arg>
<arg>${item}</arg>
<arg>${dictionary_item_occurrence}[${item}]</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="PASS" start="2026-04-08T00:52:30.117423" elapsed="0.000434"/>
</kw>
<var name="${item}">openflow:3</var>
<status status="PASS" start="2026-04-08T00:52:30.117271" elapsed="0.000625"/>
</iter>
<var>${item}</var>
<value>@{dictionary_item_occurrence}</value>
<status status="PASS" start="2026-04-08T00:52:30.115680" elapsed="0.002244"/>
</for>
<arg>${data}</arg>
<arg>${dictionary}</arg>
<doc>Check string for occurrences of items expressed in a list of dictionaries {item=occurrences}. 0 occurences means item is not present.</doc>
<status status="PASS" start="2026-04-08T00:52:30.115419" elapsed="0.002557"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T00:52:30.068228" elapsed="0.049783"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-08T00:52:29.976356" elapsed="0.141683"/>
</for>
<arg>uri=${RFC8040_OPERATIONAL_TOPO_API}</arg>
<arg>dictionary=${dictionary}</arg>
<arg>member_index_list=${controller_index_list}</arg>
<doc>Send a GET with the supplied uri to all or some members defined in ${member_index_list}.
Then check received for occurrences of items expressed in a dictionary {'openflow:1': '16', 'openflow:2': '14', 'openflow:3': '19'}.</doc>
<status status="PASS" start="2026-04-08T00:52:29.974231" elapsed="0.143858"/>
</kw>
<arg>20s</arg>
<arg>2s</arg>
<arg>ClusterManagement.Check_Item_Occurrence_Member_List_Or_All</arg>
<arg>uri=${RFC8040_OPERATIONAL_TOPO_API}</arg>
<arg>dictionary=${dictionary}</arg>
<arg>member_index_list=${controller_index_list}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-08T00:52:29.969749" elapsed="0.148393"/>
</kw>
<doc>Take a link down and verify port status in all instances in ${controller_index_list}.</doc>
<status status="PASS" start="2026-04-08T00:52:29.746589" elapsed="0.371639"/>
</kw>
<doc>Take a link down and verify port status in all instances.</doc>
<status status="PASS" start="2026-04-08T00:52:29.741924" elapsed="0.376556"/>
</test>
<test id="s1-s2-t49" name="Restore Network and Verify After Start" line="239">
<kw name="Take OpenFlow Device Link Up and Verify" owner="ClusterOpenFlow">
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-08T00:52:30.127129" level="INFO">${dictionary} = {'"link-down":true': '0'}</msg>
<var>${dictionary}</var>
<arg>"link-down":true=0</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-08T00:52:30.126757" elapsed="0.000400"/>
</kw>
<kw name="Send Mininet Command" owner="MininetKeywords">
<if>
<branch type="IF" condition="&quot;&quot;&quot;${mininet_conn}&quot;&quot;&quot; != &quot;&quot;">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${mininet_conn}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:52:30.134634" elapsed="0.000145"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:30.134413" elapsed="0.000403"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:30.134394" elapsed="0.000447"/>
</if>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T00:52:30.137459" level="INFO">link s1 s2 up</msg>
<arg>${cmd}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T00:52:30.134979" elapsed="0.002537"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-08T00:52:30.142407" level="INFO">mininet&gt;</msg>
<msg time="2026-04-08T00:52:30.142495" level="INFO">${output} = mininet&gt;</msg>
<var>${output}</var>
<arg>mininet&gt;</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-08T00:52:30.137673" elapsed="0.004847"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-08T00:52:30.142605" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:52:30.142755" level="INFO">${ouput} = mininet&gt;</msg>
<var>${ouput}</var>
<arg>${mininet_conn_id}</arg>
<arg>link s1 s2 up</arg>
<doc>Sends Command ${cmd} to Mininet session ${mininet_conn} and returns read buffer response.</doc>
<status status="PASS" start="2026-04-08T00:52:30.134108" elapsed="0.008672"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Check_Item_Occurrence_Member_List_Or_All" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:52:30.148832" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:52:30.148454" elapsed="0.000404"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:52:30.149334" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:52:30.149016" elapsed="0.000344"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:52:30.149404" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:52:30.149556" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:52:30.148067" elapsed="0.001513"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_From_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:30.154979" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:30.154685" elapsed="0.000320"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:52:30.155050" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:52:30.155212" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:52:30.154342" elapsed="0.000896"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:30.161570" level="INFO">/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:30.161323" elapsed="0.000292"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:30.162006" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:30.161766" elapsed="0.000283"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:52:30.169084" level="INFO">GET Request : url=http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01ju7g9ih47awu1dako8be5k84o113.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:52:30.169297" level="INFO">GET Response : url=http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '609'} 
 body={"opendaylight-inventory:node-connector":[{"id":"openflow:1:1","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:maximum-speed":0,"flow-node-inventory:reason":"update","flow-node-inventory:configuration":"","flow-node-inventory:port-number":1,"flow-node-inventory:hardware-address":"22:6b:5b:43:c9:13","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s1-eth1","flow-node-inventory:supported":"","flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false}}]} 
 </msg>
<msg time="2026-04-08T00:52:30.169445" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:52:30.164032" elapsed="0.005449"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:30.162115" elapsed="0.007424"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:30.169783" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:30.169575" elapsed="0.000296"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:30.162097" elapsed="0.007803"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:30.174491" level="INFO">{"opendaylight-inventory:node-connector":[{"id":"openflow:1:1","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:maximum-speed":0,"flow-node-inventory:reason":"update","flow-node-inventory:configuration":"","flow-node-inventory:port-number":1,"flow-node-inventory:hardware-address":"22:6b:5b:43:c9:13","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s1-eth1","flow-node-inventory:supported":"","flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false}}]}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:30.171287" elapsed="0.003273"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:30.170965" elapsed="0.003643"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:30.170939" elapsed="0.003703"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:30.178114" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:30.175022" elapsed="0.003141"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:30.174718" elapsed="0.003493"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:30.174696" elapsed="0.003540"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:52:30.178809" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:30.178437" elapsed="0.000399"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:30.179140" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:30.178905" elapsed="0.000310"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:30.179697" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:30.179400" elapsed="0.000323"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:30.179239" elapsed="0.000518"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:30.178888" elapsed="0.000891"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:52:30.180315" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:30.179935" elapsed="0.000408"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:30.180647" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:30.180413" elapsed="0.000290"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:30.181370" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:30.180923" elapsed="0.000473"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:30.180746" elapsed="0.000686"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:30.180395" elapsed="0.001058"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:52:30.181601" elapsed="0.000342"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:52:30.182401" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:30.182104" elapsed="0.000323"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:52:30.182579" elapsed="0.002168"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:52:30.170391" elapsed="0.014418"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-08T00:52:30.185034" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-08T00:52:30.184922" elapsed="0.000172"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:30.184902" elapsed="0.000215"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:30.185281" elapsed="0.000023"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-08T00:52:30.185352" elapsed="0.000015"/>
</return>
<msg time="2026-04-08T00:52:30.187532" level="INFO">${response_text} = {"opendaylight-inventory:node-connector":[{"id":"openflow:1:1","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed"...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${access}</arg>
<arg>session=${session}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:52:30.155555" elapsed="0.032006"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:52:30.187611" elapsed="0.000027"/>
</return>
<msg time="2026-04-08T00:52:30.187759" level="INFO">${data} = {"opendaylight-inventory:node-connector":[{"id":"openflow:1:1","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed"...</msg>
<var>${data}</var>
<arg>uri=${uri}</arg>
<arg>member_index=${index}</arg>
<doc>Send a GET with the supplied uri to member ${member_index}.</doc>
<status status="PASS" start="2026-04-08T00:52:30.153741" elapsed="0.034044"/>
</kw>
<kw name="Check Item Occurrence" owner="Utils">
<for flavor="IN">
<iter>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T00:52:30.188930" level="INFO">Item found from container 0 times.</msg>
<arg>${string}</arg>
<arg>${item}</arg>
<arg>${dictionary_item_occurrence}[${item}]</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="PASS" start="2026-04-08T00:52:30.188562" elapsed="0.000449"/>
</kw>
<var name="${item}">"link-down":true</var>
<status status="PASS" start="2026-04-08T00:52:30.188411" elapsed="0.000641"/>
</iter>
<var>${item}</var>
<value>@{dictionary_item_occurrence}</value>
<status status="PASS" start="2026-04-08T00:52:30.188283" elapsed="0.000798"/>
</for>
<arg>${data}</arg>
<arg>${dictionary}</arg>
<doc>Check string for occurrences of items expressed in a list of dictionaries {item=occurrences}. 0 occurences means item is not present.</doc>
<status status="PASS" start="2026-04-08T00:52:30.188007" elapsed="0.001127"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T00:52:30.149761" elapsed="0.039406"/>
</iter>
<iter>
<kw name="Get_From_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:30.194621" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:30.194326" elapsed="0.000322"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:52:30.194693" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:52:30.194837" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:52:30.193971" elapsed="0.000934"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:30.201231" level="INFO">/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:30.200964" elapsed="0.000313"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:30.201710" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:30.201462" elapsed="0.000291"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:52:30.213016" level="INFO">GET Request : url=http://10.30.170.131:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node012m0dyuink19r12kj250j53usg1.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:52:30.213137" level="INFO">GET Response : url=http://10.30.170.131:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '609'} 
 body={"opendaylight-inventory:node-connector":[{"id":"openflow:1:1","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:maximum-speed":0,"flow-node-inventory:reason":"update","flow-node-inventory:configuration":"","flow-node-inventory:port-number":1,"flow-node-inventory:hardware-address":"22:6b:5b:43:c9:13","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s1-eth1","flow-node-inventory:supported":"","flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false}}]} 
 </msg>
<msg time="2026-04-08T00:52:30.213259" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:52:30.203728" elapsed="0.009559"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:30.201820" elapsed="0.011509"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:30.213506" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:30.213355" elapsed="0.000215"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:30.201802" elapsed="0.011788"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:30.218211" level="INFO">{"opendaylight-inventory:node-connector":[{"id":"openflow:1:1","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:maximum-speed":0,"flow-node-inventory:reason":"update","flow-node-inventory:configuration":"","flow-node-inventory:port-number":1,"flow-node-inventory:hardware-address":"22:6b:5b:43:c9:13","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s1-eth1","flow-node-inventory:supported":"","flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false}}]}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:30.214986" elapsed="0.003298"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:30.214683" elapsed="0.003648"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:30.214657" elapsed="0.003708"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:30.221778" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:30.218751" elapsed="0.003090"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:30.218443" elapsed="0.003445"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:30.218420" elapsed="0.003503"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:52:30.222719" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:30.222180" elapsed="0.000578"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:30.223158" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:30.222879" elapsed="0.000351"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:30.223712" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:30.223414" elapsed="0.000324"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:30.223254" elapsed="0.000519"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:30.222847" elapsed="0.000947"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:52:30.224329" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:30.223950" elapsed="0.000405"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:30.224758" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:30.224425" elapsed="0.000396"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:30.225326" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:30.225004" elapsed="0.000348"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:30.224845" elapsed="0.000542"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:30.224407" elapsed="0.001001"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:52:30.225557" elapsed="0.000341"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:52:30.226401" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:30.226098" elapsed="0.000330"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:52:30.226579" elapsed="0.002315"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:52:30.214076" elapsed="0.014881"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-08T00:52:30.229131" elapsed="0.000030"/>
</return>
<status status="PASS" start="2026-04-08T00:52:30.229026" elapsed="0.000183"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:30.229008" elapsed="0.000226"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:30.229379" elapsed="0.000021"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-08T00:52:30.229448" elapsed="0.000015"/>
</return>
<msg time="2026-04-08T00:52:30.231684" level="INFO">${response_text} = {"opendaylight-inventory:node-connector":[{"id":"openflow:1:1","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed"...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${access}</arg>
<arg>session=${session}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:52:30.195243" elapsed="0.036471"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:52:30.231765" elapsed="0.000027"/>
</return>
<msg time="2026-04-08T00:52:30.231913" level="INFO">${data} = {"opendaylight-inventory:node-connector":[{"id":"openflow:1:1","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed"...</msg>
<var>${data}</var>
<arg>uri=${uri}</arg>
<arg>member_index=${index}</arg>
<doc>Send a GET with the supplied uri to member ${member_index}.</doc>
<status status="PASS" start="2026-04-08T00:52:30.193492" elapsed="0.038448"/>
</kw>
<kw name="Check Item Occurrence" owner="Utils">
<for flavor="IN">
<iter>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T00:52:30.233087" level="INFO">Item found from container 0 times.</msg>
<arg>${string}</arg>
<arg>${item}</arg>
<arg>${dictionary_item_occurrence}[${item}]</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="PASS" start="2026-04-08T00:52:30.232718" elapsed="0.000438"/>
</kw>
<var name="${item}">"link-down":true</var>
<status status="PASS" start="2026-04-08T00:52:30.232566" elapsed="0.000645"/>
</iter>
<var>${item}</var>
<value>@{dictionary_item_occurrence}</value>
<status status="PASS" start="2026-04-08T00:52:30.232437" elapsed="0.000803"/>
</for>
<arg>${data}</arg>
<arg>${dictionary}</arg>
<doc>Check string for occurrences of items expressed in a list of dictionaries {item=occurrences}. 0 occurences means item is not present.</doc>
<status status="PASS" start="2026-04-08T00:52:30.232166" elapsed="0.001127"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T00:52:30.189270" elapsed="0.044057"/>
</iter>
<iter>
<kw name="Get_From_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:30.238552" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:30.238253" elapsed="0.000328"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:52:30.238651" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:52:30.238799" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:52:30.237896" elapsed="0.000928"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:30.244996" level="INFO">/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:30.244751" elapsed="0.000291"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:30.245450" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:30.245209" elapsed="0.000284"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:52:30.257556" level="INFO">GET Request : url=http://10.30.171.110:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0u16rl3earouwvehy59feej101.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:52:30.257677" level="INFO">GET Response : url=http://10.30.171.110:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '609'} 
 body={"opendaylight-inventory:node-connector":[{"id":"openflow:1:1","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:maximum-speed":0,"flow-node-inventory:reason":"update","flow-node-inventory:configuration":"","flow-node-inventory:port-number":1,"flow-node-inventory:hardware-address":"22:6b:5b:43:c9:13","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s1-eth1","flow-node-inventory:supported":"","flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false}}]} 
 </msg>
<msg time="2026-04-08T00:52:30.257772" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:52:30.247529" elapsed="0.010272"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:30.245558" elapsed="0.012373"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:30.258391" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:30.258002" elapsed="0.000536"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:30.245541" elapsed="0.013044"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:30.266449" level="INFO">{"opendaylight-inventory:node-connector":[{"id":"openflow:1:1","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:maximum-speed":0,"flow-node-inventory:reason":"update","flow-node-inventory:configuration":"","flow-node-inventory:port-number":1,"flow-node-inventory:hardware-address":"22:6b:5b:43:c9:13","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s1-eth1","flow-node-inventory:supported":"","flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false}}]}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:30.260864" elapsed="0.005700"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:30.260380" elapsed="0.006261"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:30.260339" elapsed="0.006357"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:30.269891" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:30.267354" elapsed="0.002583"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:30.266821" elapsed="0.003150"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:30.266784" elapsed="0.003212"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:52:30.270544" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:30.270160" elapsed="0.000411"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:30.270873" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:30.270640" elapsed="0.000290"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:30.271428" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:30.271111" elapsed="0.000342"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:30.270953" elapsed="0.000535"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:30.270622" elapsed="0.000887"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:52:30.272048" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:30.271684" elapsed="0.000390"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:30.272393" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:30.272142" elapsed="0.000308"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:30.272925" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:30.272631" elapsed="0.000319"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:30.272473" elapsed="0.000512"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:30.272124" elapsed="0.000882"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:52:30.273151" elapsed="0.000362"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:52:30.273941" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:30.273674" elapsed="0.000292"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:52:30.274116" elapsed="0.002243"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:52:30.259413" elapsed="0.017006"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-08T00:52:30.276592" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-08T00:52:30.276488" elapsed="0.000162"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:30.276469" elapsed="0.000204"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:30.276816" elapsed="0.000021"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-08T00:52:30.276885" elapsed="0.000014"/>
</return>
<msg time="2026-04-08T00:52:30.279077" level="INFO">${response_text} = {"opendaylight-inventory:node-connector":[{"id":"openflow:1:1","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed"...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${access}</arg>
<arg>session=${session}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:52:30.239138" elapsed="0.039967"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:52:30.279210" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:52:30.279367" level="INFO">${data} = {"opendaylight-inventory:node-connector":[{"id":"openflow:1:1","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed"...</msg>
<var>${data}</var>
<arg>uri=${uri}</arg>
<arg>member_index=${index}</arg>
<doc>Send a GET with the supplied uri to member ${member_index}.</doc>
<status status="PASS" start="2026-04-08T00:52:30.237418" elapsed="0.041975"/>
</kw>
<kw name="Check Item Occurrence" owner="Utils">
<for flavor="IN">
<iter>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T00:52:30.280581" level="INFO">Item found from container 0 times.</msg>
<arg>${string}</arg>
<arg>${item}</arg>
<arg>${dictionary_item_occurrence}[${item}]</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="PASS" start="2026-04-08T00:52:30.280211" elapsed="0.000435"/>
</kw>
<var name="${item}">"link-down":true</var>
<status status="PASS" start="2026-04-08T00:52:30.280038" elapsed="0.000648"/>
</iter>
<var>${item}</var>
<value>@{dictionary_item_occurrence}</value>
<status status="PASS" start="2026-04-08T00:52:30.279877" elapsed="0.000838"/>
</for>
<arg>${data}</arg>
<arg>${dictionary}</arg>
<doc>Check string for occurrences of items expressed in a list of dictionaries {item=occurrences}. 0 occurences means item is not present.</doc>
<status status="PASS" start="2026-04-08T00:52:30.279617" elapsed="0.001151"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T00:52:30.233414" elapsed="0.047389"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-08T00:52:30.149630" elapsed="0.131204"/>
</for>
<arg>uri=${operational_port_1}</arg>
<arg>dictionary=${dictionary}</arg>
<arg>member_index_list=${controller_index_list}</arg>
<doc>Send a GET with the supplied uri to all or some members defined in ${member_index_list}.
Then check received for occurrences of items expressed in a dictionary {'"link-down":true': '0'}.</doc>
<status status="PASS" start="2026-04-08T00:52:30.147488" elapsed="0.133395"/>
</kw>
<arg>5s</arg>
<arg>1s</arg>
<arg>ClusterManagement.Check_Item_Occurrence_Member_List_Or_All</arg>
<arg>uri=${operational_port_1}</arg>
<arg>dictionary=${dictionary}</arg>
<arg>member_index_list=${controller_index_list}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-08T00:52:30.142971" elapsed="0.137963"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-08T00:52:30.281478" level="INFO">${dictionary} = {'openflow:1': '21', 'openflow:2': '19', 'openflow:3': '19'}</msg>
<var>${dictionary}</var>
<arg>openflow:1=21</arg>
<arg>openflow:2=19</arg>
<arg>openflow:3=19</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-08T00:52:30.281127" elapsed="0.000377"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Check_Item_Occurrence_Member_List_Or_All" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:52:30.287497" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:52:30.287099" elapsed="0.000425"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:52:30.288075" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:52:30.287770" elapsed="0.000332"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:52:30.288146" elapsed="0.000080"/>
</return>
<msg time="2026-04-08T00:52:30.288367" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:52:30.286730" elapsed="0.001662"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_From_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:30.294095" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:30.293791" elapsed="0.000332"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:52:30.294173" elapsed="0.000043"/>
</return>
<msg time="2026-04-08T00:52:30.294339" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:52:30.293448" elapsed="0.000916"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:30.300571" level="INFO">/rests/data/network-topology:network-topology?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:30.300322" elapsed="0.000326"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:30.301041" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:30.300800" elapsed="0.000284"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:52:30.309389" level="INFO">GET Request : url=http://10.30.170.48:8181/rests/data/network-topology:network-topology?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01ju7g9ih47awu1dako8be5k84o113.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:52:30.309605" level="INFO">GET Response : url=http://10.30.170.48:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '3149'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"},{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:3']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:1:1","dest-node":"openflow:1"}},{"link-id":"openflow:3:3","source":{"source-node":"openflow:3","source-tp":"openflow:3:3"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:1:1","source":{"source-node":"openflow:1","source-tp":"openflow:1:1"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:3:3","dest-node":"openflow:3"}}]}]}} 
 </msg>
<msg time="2026-04-08T00:52:30.309759" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:52:30.303069" elapsed="0.006723"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:30.301151" elapsed="0.008692"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:30.310116" elapsed="0.000029"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:30.309885" elapsed="0.000345"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:30.301132" elapsed="0.009129"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:30.315017" level="INFO">{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"},{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:3']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:1:1","dest-node":"openflow:1"}},{"link-id":"openflow:3:3","source":{"source-node":"openflow:3","source-tp":"openflow:3:3"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:1:1","source":{"source-node":"openflow:1","source-tp":"openflow:1:1"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:3:3","dest-node":"openflow:3"}}]}]}}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:30.311644" elapsed="0.003469"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:30.311341" elapsed="0.003825"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:30.311314" elapsed="0.003905"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:30.318505" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:30.315605" elapsed="0.002945"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:30.315299" elapsed="0.003285"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:30.315276" elapsed="0.003332"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:52:30.319142" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:30.318768" elapsed="0.000405"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:30.319497" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:30.319260" elapsed="0.000294"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:30.320034" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:30.319735" elapsed="0.000325"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:30.319577" elapsed="0.000518"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:30.319241" elapsed="0.000875"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:52:30.320652" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:30.320291" elapsed="0.000388"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:30.320981" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:30.320748" elapsed="0.000289"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:30.321549" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:30.321238" elapsed="0.000337"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:30.321060" elapsed="0.000549"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:30.320730" elapsed="0.000901"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:52:30.321778" elapsed="0.000340"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:52:30.322605" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:30.322332" elapsed="0.000299"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:52:30.322782" elapsed="0.002318"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:52:30.310737" elapsed="0.014430"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-08T00:52:30.325357" elapsed="0.000055"/>
</return>
<status status="PASS" start="2026-04-08T00:52:30.325252" elapsed="0.000195"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:30.325233" elapsed="0.000238"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:30.325617" elapsed="0.000021"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-08T00:52:30.325686" elapsed="0.000014"/>
</return>
<msg time="2026-04-08T00:52:30.327965" level="INFO">${response_text} = {"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='o...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${access}</arg>
<arg>session=${session}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:52:30.294684" elapsed="0.033309"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:52:30.328044" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:52:30.328210" level="INFO">${data} = {"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='o...</msg>
<var>${data}</var>
<arg>uri=${uri}</arg>
<arg>member_index=${index}</arg>
<doc>Send a GET with the supplied uri to member ${member_index}.</doc>
<status status="PASS" start="2026-04-08T00:52:30.292812" elapsed="0.035425"/>
</kw>
<kw name="Check Item Occurrence" owner="Utils">
<for flavor="IN">
<iter>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T00:52:30.329389" level="INFO">Item found from container 21 times.</msg>
<arg>${string}</arg>
<arg>${item}</arg>
<arg>${dictionary_item_occurrence}[${item}]</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="PASS" start="2026-04-08T00:52:30.328998" elapsed="0.000472"/>
</kw>
<var name="${item}">openflow:1</var>
<status status="PASS" start="2026-04-08T00:52:30.328846" elapsed="0.000680"/>
</iter>
<iter>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T00:52:30.330137" level="INFO">Item found from container 19 times.</msg>
<arg>${string}</arg>
<arg>${item}</arg>
<arg>${dictionary_item_occurrence}[${item}]</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="PASS" start="2026-04-08T00:52:30.329773" elapsed="0.000538"/>
</kw>
<var name="${item}">openflow:2</var>
<status status="PASS" start="2026-04-08T00:52:30.329619" elapsed="0.000733"/>
</iter>
<iter>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T00:52:30.330947" level="INFO">Item found from container 19 times.</msg>
<arg>${string}</arg>
<arg>${item}</arg>
<arg>${dictionary_item_occurrence}[${item}]</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="PASS" start="2026-04-08T00:52:30.330586" elapsed="0.000438"/>
</kw>
<var name="${item}">openflow:3</var>
<status status="PASS" start="2026-04-08T00:52:30.330433" elapsed="0.000630"/>
</iter>
<var>${item}</var>
<value>@{dictionary_item_occurrence}</value>
<status status="PASS" start="2026-04-08T00:52:30.328718" elapsed="0.002373"/>
</for>
<arg>${data}</arg>
<arg>${dictionary}</arg>
<doc>Check string for occurrences of items expressed in a list of dictionaries {item=occurrences}. 0 occurences means item is not present.</doc>
<status status="PASS" start="2026-04-08T00:52:30.328459" elapsed="0.002685"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T00:52:30.288576" elapsed="0.042626"/>
</iter>
<iter>
<kw name="Get_From_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:30.336466" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:30.336156" elapsed="0.000336"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:52:30.336537" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:52:30.336682" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:52:30.335816" elapsed="0.000890"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:30.342934" level="INFO">/rests/data/network-topology:network-topology?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:30.342689" elapsed="0.000290"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:30.343388" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:30.343129" elapsed="0.000302"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:52:30.359453" level="INFO">GET Request : url=http://10.30.170.131:8181/rests/data/network-topology:network-topology?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node012m0dyuink19r12kj250j53usg1.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:52:30.359667" level="INFO">GET Response : url=http://10.30.170.131:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '3149'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"},{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:3']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:1:1","dest-node":"openflow:1"}},{"link-id":"openflow:3:3","source":{"source-node":"openflow:3","source-tp":"openflow:3:3"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:1:1","source":{"source-node":"openflow:1","source-tp":"openflow:1:1"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:3:3","dest-node":"openflow:3"}}]}]}} 
 </msg>
<msg time="2026-04-08T00:52:30.359822" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:52:30.345430" elapsed="0.014419"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:30.343498" elapsed="0.016394"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:30.360067" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:30.359918" elapsed="0.000212"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:30.343480" elapsed="0.016672"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:30.364202" level="INFO">{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"},{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:3']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:1:1","dest-node":"openflow:1"}},{"link-id":"openflow:3:3","source":{"source-node":"openflow:3","source-tp":"openflow:3:3"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:1:1","source":{"source-node":"openflow:1","source-tp":"openflow:1:1"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:3:3","dest-node":"openflow:3"}}]}]}}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:30.361156" elapsed="0.003145"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:30.360937" elapsed="0.003414"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:30.360918" elapsed="0.003468"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:30.367840" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:30.364772" elapsed="0.003145"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:30.364462" elapsed="0.003513"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:30.364439" elapsed="0.003579"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:52:30.368784" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:30.368266" elapsed="0.000555"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:30.369269" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:30.368919" elapsed="0.000432"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:30.370032" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:30.369605" elapsed="0.000464"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:30.369384" elapsed="0.000734"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:30.368894" elapsed="0.001254"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:52:30.370935" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:30.370391" elapsed="0.000582"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:30.371422" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:30.371071" elapsed="0.000431"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:30.372080" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:30.371756" elapsed="0.000350"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:30.371534" elapsed="0.000606"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:30.371045" elapsed="0.001120"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:52:30.372327" elapsed="0.000342"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:52:30.373148" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:30.372878" elapsed="0.000300"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:52:30.373345" elapsed="0.002198"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:52:30.360520" elapsed="0.015086"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-08T00:52:30.375779" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-08T00:52:30.375674" elapsed="0.000166"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:30.375656" elapsed="0.000211"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:30.376009" elapsed="0.000021"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-08T00:52:30.376078" elapsed="0.000015"/>
</return>
<msg time="2026-04-08T00:52:30.378372" level="INFO">${response_text} = {"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='o...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${access}</arg>
<arg>session=${session}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:52:30.337024" elapsed="0.041376"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:52:30.378451" elapsed="0.000027"/>
</return>
<msg time="2026-04-08T00:52:30.378601" level="INFO">${data} = {"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='o...</msg>
<var>${data}</var>
<arg>uri=${uri}</arg>
<arg>member_index=${index}</arg>
<doc>Send a GET with the supplied uri to member ${member_index}.</doc>
<status status="PASS" start="2026-04-08T00:52:30.335339" elapsed="0.043288"/>
</kw>
<kw name="Check Item Occurrence" owner="Utils">
<for flavor="IN">
<iter>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T00:52:30.379825" level="INFO">Item found from container 21 times.</msg>
<arg>${string}</arg>
<arg>${item}</arg>
<arg>${dictionary_item_occurrence}[${item}]</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="PASS" start="2026-04-08T00:52:30.379458" elapsed="0.000446"/>
</kw>
<var name="${item}">openflow:1</var>
<status status="PASS" start="2026-04-08T00:52:30.379302" elapsed="0.000642"/>
</iter>
<iter>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T00:52:30.380555" level="INFO">Item found from container 19 times.</msg>
<arg>${string}</arg>
<arg>${item}</arg>
<arg>${dictionary_item_occurrence}[${item}]</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="PASS" start="2026-04-08T00:52:30.380179" elapsed="0.000452"/>
</kw>
<var name="${item}">openflow:2</var>
<status status="PASS" start="2026-04-08T00:52:30.380023" elapsed="0.000646"/>
</iter>
<iter>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T00:52:30.381277" level="INFO">Item found from container 19 times.</msg>
<arg>${string}</arg>
<arg>${item}</arg>
<arg>${dictionary_item_occurrence}[${item}]</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="PASS" start="2026-04-08T00:52:30.380899" elapsed="0.000454"/>
</kw>
<var name="${item}">openflow:3</var>
<status status="PASS" start="2026-04-08T00:52:30.380747" elapsed="0.000645"/>
</iter>
<var>${item}</var>
<value>@{dictionary_item_occurrence}</value>
<status status="PASS" start="2026-04-08T00:52:30.379141" elapsed="0.002280"/>
</for>
<arg>${data}</arg>
<arg>${dictionary}</arg>
<doc>Check string for occurrences of items expressed in a list of dictionaries {item=occurrences}. 0 occurences means item is not present.</doc>
<status status="PASS" start="2026-04-08T00:52:30.378849" elapsed="0.002624"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T00:52:30.331293" elapsed="0.050213"/>
</iter>
<iter>
<kw name="Get_From_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:30.386742" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:30.386445" elapsed="0.000323"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:52:30.386814" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:52:30.386960" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:52:30.386087" elapsed="0.000897"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:30.393754" level="INFO">/rests/data/network-topology:network-topology?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:30.393491" elapsed="0.000309"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:30.394220" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:30.393954" elapsed="0.000467"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:52:30.407358" level="INFO">GET Request : url=http://10.30.171.110:8181/rests/data/network-topology:network-topology?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0u16rl3earouwvehy59feej101.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:52:30.407570" level="INFO">GET Response : url=http://10.30.171.110:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '3149'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"},{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:3']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:1:1","dest-node":"openflow:1"}},{"link-id":"openflow:3:3","source":{"source-node":"openflow:3","source-tp":"openflow:3:3"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:1:1","source":{"source-node":"openflow:1","source-tp":"openflow:1:1"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:3:3","dest-node":"openflow:3"}}]}]}} 
 </msg>
<msg time="2026-04-08T00:52:30.407735" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:52:30.396478" elapsed="0.011284"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:30.394492" elapsed="0.013313"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:30.408224" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:30.407832" elapsed="0.000542"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:30.394472" elapsed="0.013950"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:30.416076" level="INFO">{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"},{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:3']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:1:1","dest-node":"openflow:1"}},{"link-id":"openflow:3:3","source":{"source-node":"openflow:3","source-tp":"openflow:3:3"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:1:1","source":{"source-node":"openflow:1","source-tp":"openflow:1:1"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:3:3","dest-node":"openflow:3"}}]}]}}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:30.410682" elapsed="0.005584"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:30.410164" elapsed="0.006237"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:30.410116" elapsed="0.006344"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:30.419203" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:30.417026" elapsed="0.002225"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:30.416586" elapsed="0.002699"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:30.416549" elapsed="0.002760"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:52:30.419852" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:30.419469" elapsed="0.000410"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:30.420197" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:30.419949" elapsed="0.000307"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:30.420756" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:30.420454" elapsed="0.000328"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:30.420279" elapsed="0.000538"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:30.419931" elapsed="0.000908"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:52:30.421374" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:30.420996" elapsed="0.000406"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:30.421703" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:30.421471" elapsed="0.000288"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:30.422251" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:30.421939" elapsed="0.000338"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:30.421782" elapsed="0.000530"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:30.421453" elapsed="0.000880"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:52:30.422481" elapsed="0.000349"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:52:30.423317" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:30.423026" elapsed="0.000318"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:52:30.423497" elapsed="0.002213"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:52:30.409224" elapsed="0.016548"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-08T00:52:30.425951" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-08T00:52:30.425842" elapsed="0.000169"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:30.425823" 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-04-08T00:52:30.426183" elapsed="0.000035"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-08T00:52:30.426267" elapsed="0.000014"/>
</return>
<msg time="2026-04-08T00:52:30.428537" level="INFO">${response_text} = {"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='o...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${access}</arg>
<arg>session=${session}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:52:30.387321" elapsed="0.041245"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:52:30.428616" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:52:30.428797" level="INFO">${data} = {"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='o...</msg>
<var>${data}</var>
<arg>uri=${uri}</arg>
<arg>member_index=${index}</arg>
<doc>Send a GET with the supplied uri to member ${member_index}.</doc>
<status status="PASS" start="2026-04-08T00:52:30.385602" elapsed="0.043223"/>
</kw>
<kw name="Check Item Occurrence" owner="Utils">
<for flavor="IN">
<iter>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T00:52:30.429978" level="INFO">Item found from container 21 times.</msg>
<arg>${string}</arg>
<arg>${item}</arg>
<arg>${dictionary_item_occurrence}[${item}]</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="PASS" start="2026-04-08T00:52:30.429608" elapsed="0.000450"/>
</kw>
<var name="${item}">openflow:1</var>
<status status="PASS" start="2026-04-08T00:52:30.429456" elapsed="0.000641"/>
</iter>
<iter>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T00:52:30.430725" level="INFO">Item found from container 19 times.</msg>
<arg>${string}</arg>
<arg>${item}</arg>
<arg>${dictionary_item_occurrence}[${item}]</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="PASS" start="2026-04-08T00:52:30.430347" elapsed="0.000454"/>
</kw>
<var name="${item}">openflow:2</var>
<status status="PASS" start="2026-04-08T00:52:30.430180" elapsed="0.000659"/>
</iter>
<iter>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T00:52:30.431466" level="INFO">Item found from container 19 times.</msg>
<arg>${string}</arg>
<arg>${item}</arg>
<arg>${dictionary_item_occurrence}[${item}]</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="PASS" start="2026-04-08T00:52:30.431069" elapsed="0.000473"/>
</kw>
<var name="${item}">openflow:3</var>
<status status="PASS" start="2026-04-08T00:52:30.430917" elapsed="0.000663"/>
</iter>
<var>${item}</var>
<value>@{dictionary_item_occurrence}</value>
<status status="PASS" start="2026-04-08T00:52:30.429326" elapsed="0.002282"/>
</for>
<arg>${data}</arg>
<arg>${dictionary}</arg>
<doc>Check string for occurrences of items expressed in a list of dictionaries {item=occurrences}. 0 occurences means item is not present.</doc>
<status status="PASS" start="2026-04-08T00:52:30.429049" elapsed="0.002613"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T00:52:30.381592" elapsed="0.050103"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-08T00:52:30.288442" elapsed="0.143280"/>
</for>
<arg>uri=${RFC8040_OPERATIONAL_TOPO_API}</arg>
<arg>dictionary=${dictionary}</arg>
<arg>member_index_list=${controller_index_list}</arg>
<doc>Send a GET with the supplied uri to all or some members defined in ${member_index_list}.
Then check received for occurrences of items expressed in a dictionary {'openflow:1': '21', 'openflow:2': '19', 'openflow:3': '19'}.</doc>
<status status="PASS" start="2026-04-08T00:52:30.286167" elapsed="0.145604"/>
</kw>
<arg>10s</arg>
<arg>1s</arg>
<arg>ClusterManagement.Check_Item_Occurrence_Member_List_Or_All</arg>
<arg>uri=${RFC8040_OPERATIONAL_TOPO_API}</arg>
<arg>dictionary=${dictionary}</arg>
<arg>member_index_list=${controller_index_list}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-08T00:52:30.281692" elapsed="0.150131"/>
</kw>
<doc>Take the link up and verify port status in all instances in ${controller_index_list}.</doc>
<status status="PASS" start="2026-04-08T00:52:30.124773" elapsed="0.307113"/>
</kw>
<doc>Take the link up and verify port status in all instances.</doc>
<status status="PASS" start="2026-04-08T00:52:30.118895" elapsed="0.313093"/>
</test>
<test id="s1-s2-t50" name="Stop Mininet and Exit" line="243">
<kw name="Stop Mininet And Exit" owner="MininetKeywords">
<if>
<branch type="IF" condition="&quot;&quot;&quot;${mininet_conn}&quot;&quot;&quot; != &quot;&quot;">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${mininet_conn}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:52:30.437617" elapsed="0.000142"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:30.437397" elapsed="0.000399"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:30.437379" elapsed="0.000442"/>
</if>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T00:52:30.443293" level="INFO">exit</msg>
<arg>exit</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T00:52:30.437960" elapsed="0.005390"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-08T00:52:30.692149" level="INFO">*** Stopping 0 controllers

*** Stopping 6 links
......
*** Stopping 3 switches
s1 s2 s3 
*** Stopping 4 hosts
h1 h2 h3 h4 
*** Done
completed in 72.697 seconds
[?2004h[jenkins@releng-11369-169-1-mininet-ovs-217-0 ~]&gt;</msg>
<arg>${TOOLS_SYSTEM_PROMPT}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-08T00:52:30.443506" elapsed="0.248805"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:52:30.692663" elapsed="0.000228"/>
</kw>
<arg>${mininet_conn_id}</arg>
<doc>Stops Mininet and exits session ${mininet_conn}</doc>
<status status="PASS" start="2026-04-08T00:52:30.437089" elapsed="0.255871"/>
</kw>
<kw name="Clean Mininet System" owner="Utils">
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:30.695801" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:30.695487" elapsed="0.000373"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:30.695460" elapsed="0.000427"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:52:30.696214" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T00:52:30.696041" elapsed="0.000314"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:30.696905" level="INFO">Attempting to execute command "sudo mn -c" on remote system "10.30.170.192" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:30.696510" elapsed="0.000443"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:52:30.697553" level="INFO">${conn_id} = 69</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:52:30.697113" elapsed="0.000467"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T00:52:30.698499" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T00:52:30.698578" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T00:52:30.698219" elapsed="0.000382"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:52:30.698760" elapsed="0.000321"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T00:52:30.699943" level="INFO">Logging into '10.30.170.192:22' as 'jenkins'.</msg>
<msg time="2026-04-08T00:52:31.288944" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 00:52:30 UTC 2026

  System load:  0.07               Processes:             112
  Usage of /:   19.5% of 38.58GB   Users logged in:       0
  Memory usage: 5%                 IPv4 address for ens3: 10.30.170.192
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 00:51:23 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-1-mininet-ovs-217-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T00:52:30.699624" elapsed="0.589518"/>
</kw>
<msg time="2026-04-08T00:52:31.289281" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:52:30.699266" elapsed="0.590141"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T00:52:30.697803" elapsed="0.591780"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T00:52:31.290326" level="INFO">Executing command 'sudo mn -c'.</msg>
<msg time="2026-04-08T00:52:32.431600" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-08T00:52:32.432027" level="INFO">${stdout} = </msg>
<msg time="2026-04-08T00:52:32.432136" level="INFO">${stderr} = *** Removing excess controllers/ofprotocols/ofdatapaths/pings/noxes
killall controller ofprotocol ofdatapath ping nox_corelt-nox_core ovs-openflowd ovs-controllerovs-testcontroller udpbwtest mnexec iv...</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T00:52:31.289937" elapsed="1.142313"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:52:32.432759" elapsed="0.000611"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:32.434602" level="INFO">*** Removing excess controllers/ofprotocols/ofdatapaths/pings/noxes
killall controller ofprotocol ofdatapath ping nox_corelt-nox_core ovs-openflowd ovs-controllerovs-testcontroller udpbwtest mnexec ivs ryu-manager 2&gt; /dev/null
killall -9 controller ofprotocol ofdatapath ping nox_corelt-nox_core ovs-openflowd ovs-controllerovs-testcontroller udpbwtest mnexec ivs ryu-manager 2&gt; /dev/null
pkill -9 -f "sudo mnexec"
*** Removing junk from /tmp
rm -f /tmp/vconn* /tmp/vlogs* /tmp/*.out /tmp/*.log
*** Removing old X11 tunnels
*** Removing excess kernel datapaths
ps ax | egrep -o 'dp[0-9]+' | sed 's/dp/nl:/'
***  Removing OVS datapaths
ovs-vsctl --timeout=1 list-br
ovs-vsctl --timeout=1 list-br
*** Removing all links of the pattern foo-ethX
ip link show | egrep -o '([-_.[:alnum:]]+-eth[[:digit:]]+)'
ip link show
*** Killing stale mininet node processes
pkill -9 -f mininet:
*** Shutting down stale tunnels
pkill -9 -f Tunnel=Ethernet
pkill -9 -f .ssh/mn
rm -f ~/.ssh/mn/*
*** Cleanup complete.</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:32.433877" elapsed="0.000846"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:52:32.435393" elapsed="0.000043"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:52:32.434916" elapsed="0.000596"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:32.434863" elapsed="0.000700"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T00:52:32.435940" elapsed="0.000091"/>
</return>
<status status="PASS" start="2026-04-08T00:52:32.435685" elapsed="0.000430"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:32.435651" elapsed="0.000558"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:52:32.436295" elapsed="0.000033"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:52:32.442583" elapsed="0.000716"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:52:32.443471" elapsed="0.000182"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:52:32.443808" elapsed="0.000110"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:52:32.437008" elapsed="0.006967"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T00:52:30.694891" elapsed="1.749179"/>
</kw>
<msg time="2026-04-08T00:52:32.444128" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:52:30.694236" elapsed="1.749966"/>
</kw>
<arg>${system}</arg>
<arg>sudo mn -c</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-08T00:52:30.693662" elapsed="1.750626"/>
</kw>
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:32.446471" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:32.446177" elapsed="0.000351"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:32.446155" elapsed="0.000396"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:52:32.446838" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T00:52:32.446700" elapsed="0.000310"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:32.447627" level="INFO">Attempting to execute command "sudo ps -elf | egrep 'usr/local/bin/mn' | egrep python | awk '{print "sudo kill -9",$4}' | sh" on remote system "10.30.170.192" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:32.447221" elapsed="0.000452"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:52:32.448235" level="INFO">${conn_id} = 71</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:52:32.447830" elapsed="0.000432"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T00:52:32.449161" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T00:52:32.449255" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T00:52:32.448872" elapsed="0.000408"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:52:32.449437" elapsed="0.000322"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T00:52:32.450701" level="INFO">Logging into '10.30.170.192:22' as 'jenkins'.</msg>
<msg time="2026-04-08T00:52:32.778943" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 00:52:30 UTC 2026

  System load:  0.07               Processes:             112
  Usage of /:   19.5% of 38.58GB   Users logged in:       0
  Memory usage: 5%                 IPv4 address for ens3: 10.30.170.192
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 00:52:31 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-1-mininet-ovs-217-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T00:52:32.450380" elapsed="0.328725"/>
</kw>
<msg time="2026-04-08T00:52:32.779209" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:52:32.449926" elapsed="0.329462"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T00:52:32.448480" elapsed="0.331028"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T00:52:32.780030" level="INFO">Executing command 'sudo ps -elf | egrep 'usr/local/bin/mn' | egrep python | awk '{print "sudo kill -9",$4}' | sh'.</msg>
<msg time="2026-04-08T00:52:32.813068" level="INFO">Command exited with return code -1.</msg>
<msg time="2026-04-08T00:52:32.813371" level="INFO">${stdout} = </msg>
<msg time="2026-04-08T00:52:32.813468" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T00:52:32.779767" elapsed="0.033751"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:52:32.813919" elapsed="0.000522"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:32.815569" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:32.814853" elapsed="0.000811"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:52:32.816129" elapsed="0.000043"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:52:32.815835" elapsed="0.000436"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:32.815787" elapsed="0.000537"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T00:52:32.816681" elapsed="0.000068"/>
</return>
<status status="PASS" start="2026-04-08T00:52:32.816443" elapsed="0.000379"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:32.816410" elapsed="0.000464"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:52:32.816949" elapsed="0.000030"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:52:32.822901" elapsed="0.000815"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:52:32.824014" elapsed="0.000177"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:52:32.824340" elapsed="0.000098"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:52:32.817678" elapsed="0.006814"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T00:52:32.445596" elapsed="0.378987"/>
</kw>
<msg time="2026-04-08T00:52:32.824638" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:52:32.445010" elapsed="0.379681"/>
</kw>
<arg>${system}</arg>
<arg>sudo ps -elf | egrep 'usr/local/bin/mn' | egrep python | awk '{print "sudo kill -9",$4}' | sh</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-08T00:52:32.444470" elapsed="0.380301"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:30.693251" elapsed="2.131580"/>
</kw>
<doc>Stop mininet and exit connection.</doc>
<status status="PASS" start="2026-04-08T00:52:30.432551" elapsed="2.392388"/>
</test>
<test id="s1-s2-t51" name="Check No Network Operational Information" line="248">
<kw name="Check No OpenFlow Network Operational Information" owner="ClusterOpenFlow">
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-08T00:52:32.831866" level="INFO">${dictionary} = {'openflow': '0'}</msg>
<var>${dictionary}</var>
<arg>openflow=0</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-08T00:52:32.831517" elapsed="0.000379"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Check_No_Content_Member_List_Or_All" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:52:32.837770" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:52:32.837389" elapsed="0.000408"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:52:32.838274" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:52:32.837954" elapsed="0.000345"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:52:32.838344" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:52:32.838496" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:52:32.837000" elapsed="0.001520"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:32.839536" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:32.839241" elapsed="0.000321"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:52:32.839606" elapsed="0.000027"/>
</return>
<msg time="2026-04-08T00:52:32.839750" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:52:32.838884" elapsed="0.000915"/>
</kw>
<kw name="No Content From URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:52:32.848279" level="INFO">GET Request : url=http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01ju7g9ih47awu1dako8be5k84o113.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:52:32.848421" level="INFO">GET Response : url=http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 status=409, reason=Conflict 
 headers={'Content-Type': 'application/yang-data+json', 'Content-Length': '242'} 
 body={
  "errors": {
    "error": [
      {
        "error-tag": "data-missing",
        "error-message": "Request could not be completed because the relevant data model content does not exist",
        "error-type": "protocol"
      }
    ]
  }
} 
 </msg>
<msg time="2026-04-08T00:52:32.848530" level="INFO">${resp} = &lt;Response [409]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${headers}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:52:32.840641" elapsed="0.007915"/>
</kw>
<if>
<branch type="IF" condition="${resp.status_code} == 404 or ${resp.status_code} == 409">
<return>
<status status="PASS" start="2026-04-08T00:52:32.854441" elapsed="0.000039"/>
</return>
<status status="PASS" start="2026-04-08T00:52:32.848642" elapsed="0.005881"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:32.848621" elapsed="0.005936"/>
</if>
<kw name="Log" owner="BuiltIn">
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:32.854768" elapsed="0.000031"/>
</kw>
<kw name="Fail" owner="BuiltIn">
<arg>The request failed with code ${resp.status_code}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:32.854997" elapsed="0.000028"/>
</kw>
<arg>${session}</arg>
<arg>${uri}</arg>
<doc>Issue a Get On Session and return on error 404 (No content) or will fail and log the content.
Issues a Get On Session for /rests/data/opendaylight-inventory:nodes?content=nonconfig in ClusterManagement__session_1 using headers from
{'Content-Type': 'application/json'}. If the request returns a HTTP error, fails. Otherwise
returns the data obtained by the request.</doc>
<status status="PASS" start="2026-04-08T00:52:32.840239" elapsed="0.014864"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T00:52:32.838719" elapsed="0.016433"/>
</iter>
<iter>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:32.856539" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:32.856018" elapsed="0.000559"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:52:32.856639" elapsed="0.000039"/>
</return>
<msg time="2026-04-08T00:52:32.856843" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>member_index=${index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:52:32.855537" elapsed="0.001341"/>
</kw>
<kw name="No Content From URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:52:32.867704" level="INFO">GET Request : url=http://10.30.170.131:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node012m0dyuink19r12kj250j53usg1.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:52:32.867854" level="INFO">GET Response : url=http://10.30.170.131:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 status=409, reason=Conflict 
 headers={'Content-Type': 'application/yang-data+json', 'Content-Length': '242'} 
 body={
  "errors": {
    "error": [
      {
        "error-tag": "data-missing",
        "error-message": "Request could not be completed because the relevant data model content does not exist",
        "error-type": "protocol"
      }
    ]
  }
} 
 </msg>
<msg time="2026-04-08T00:52:32.867983" level="INFO">${resp} = &lt;Response [409]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${headers}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:52:32.857643" elapsed="0.010376"/>
</kw>
<if>
<branch type="IF" condition="${resp.status_code} == 404 or ${resp.status_code} == 409">
<return>
<status status="PASS" start="2026-04-08T00:52:32.874227" elapsed="0.000040"/>
</return>
<status status="PASS" start="2026-04-08T00:52:32.868132" elapsed="0.006179"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:32.868104" elapsed="0.006242"/>
</if>
<kw name="Log" owner="BuiltIn">
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:32.874556" elapsed="0.000031"/>
</kw>
<kw name="Fail" owner="BuiltIn">
<arg>The request failed with code ${resp.status_code}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:32.874787" elapsed="0.000028"/>
</kw>
<arg>${session}</arg>
<arg>${uri}</arg>
<doc>Issue a Get On Session and return on error 404 (No content) or will fail and log the content.
Issues a Get On Session for /rests/data/opendaylight-inventory:nodes?content=nonconfig in ClusterManagement__session_2 using headers from
{'Content-Type': 'application/json'}. If the request returns a HTTP error, fails. Otherwise
returns the data obtained by the request.</doc>
<status status="PASS" start="2026-04-08T00:52:32.857243" elapsed="0.017652"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T00:52:32.855305" elapsed="0.019639"/>
</iter>
<iter>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:32.876253" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:32.875807" elapsed="0.000484"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:52:32.876353" elapsed="0.000040"/>
</return>
<msg time="2026-04-08T00:52:32.876557" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>member_index=${index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:52:32.875326" elapsed="0.001266"/>
</kw>
<kw name="No Content From URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:52:32.886854" level="INFO">GET Request : url=http://10.30.171.110:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0u16rl3earouwvehy59feej101.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:52:32.887006" level="INFO">GET Response : url=http://10.30.171.110:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 status=409, reason=Conflict 
 headers={'Content-Type': 'application/yang-data+json', 'Content-Length': '242'} 
 body={
  "errors": {
    "error": [
      {
        "error-tag": "data-missing",
        "error-message": "Request could not be completed because the relevant data model content does not exist",
        "error-type": "protocol"
      }
    ]
  }
} 
 </msg>
<msg time="2026-04-08T00:52:32.887098" level="INFO">${resp} = &lt;Response [409]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${headers}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:52:32.877713" elapsed="0.009411"/>
</kw>
<if>
<branch type="IF" condition="${resp.status_code} == 404 or ${resp.status_code} == 409">
<return>
<status status="PASS" start="2026-04-08T00:52:32.893250" elapsed="0.000065"/>
</return>
<status status="PASS" start="2026-04-08T00:52:32.887228" elapsed="0.006155"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:32.887207" elapsed="0.006229"/>
</if>
<kw name="Log" owner="BuiltIn">
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:32.893767" elapsed="0.000048"/>
</kw>
<kw name="Fail" owner="BuiltIn">
<arg>The request failed with code ${resp.status_code}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:32.894132" elapsed="0.000076"/>
</kw>
<arg>${session}</arg>
<arg>${uri}</arg>
<doc>Issue a Get On Session and return on error 404 (No content) or will fail and log the content.
Issues a Get On Session for /rests/data/opendaylight-inventory:nodes?content=nonconfig in ClusterManagement__session_3 using headers from
{'Content-Type': 'application/json'}. If the request returns a HTTP error, fails. Otherwise
returns the data obtained by the request.</doc>
<status status="PASS" start="2026-04-08T00:52:32.877131" elapsed="0.017208"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T00:52:32.875071" elapsed="0.019347"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-08T00:52:32.838576" elapsed="0.055908"/>
</for>
<arg>uri=${RFC8040_OPERATIONAL_NODES_API}</arg>
<arg>member_index_list=${controller_index_list}</arg>
<doc>Send a GET with the supplied uri to all or some members defined in ${member_index_list}.
Then check there is no content.</doc>
<status status="PASS" start="2026-04-08T00:52:32.836497" elapsed="0.058099"/>
</kw>
<arg>5s</arg>
<arg>1s</arg>
<arg>ClusterManagement.Check_No_Content_Member_List_Or_All</arg>
<arg>uri=${RFC8040_OPERATIONAL_NODES_API}</arg>
<arg>member_index_list=${controller_index_list}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-08T00:52:32.832083" elapsed="0.062620"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-08T00:52:32.895837" level="INFO">${dictionary} = {'openflow': '0'}</msg>
<var>${dictionary}</var>
<arg>openflow=0</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-08T00:52:32.895114" elapsed="0.000781"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Check_Item_Occurrence_Member_List_Or_All" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:52:32.903508" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:52:32.903098" elapsed="0.000440"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:52:32.904013" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:52:32.903708" elapsed="0.000331"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:52:32.904085" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:52:32.904259" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:52:32.902725" elapsed="0.001559"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_From_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:32.909731" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:32.909413" elapsed="0.000345"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:52:32.909803" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:52:32.909980" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:52:32.909052" elapsed="0.000957"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:32.916673" level="INFO">/rests/data/network-topology:network-topology?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:32.916408" elapsed="0.000311"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:32.917117" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:32.916875" elapsed="0.000288"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:52:32.925431" level="INFO">GET Request : url=http://10.30.170.48:8181/rests/data/network-topology:network-topology?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01ju7g9ih47awu1dako8be5k84o113.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:52:32.925535" level="INFO">GET Response : url=http://10.30.170.48:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '77'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"}]}} 
 </msg>
<msg time="2026-04-08T00:52:32.925635" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:52:32.919227" elapsed="0.006434"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:32.917247" elapsed="0.008458"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:32.925980" elapsed="0.000033"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:32.925767" elapsed="0.000306"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:32.917228" elapsed="0.008875"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:32.930976" level="INFO">{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"}]}}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:32.927529" elapsed="0.003513"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:32.927218" elapsed="0.003871"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:32.927175" elapsed="0.003950"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:32.934625" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:32.931538" elapsed="0.003151"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:32.931227" elapsed="0.003510"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:32.931201" elapsed="0.003570"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:52:32.935382" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:32.934976" elapsed="0.000433"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:32.935717" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:32.935479" elapsed="0.000295"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:32.936274" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:32.935958" elapsed="0.000343"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:32.935798" elapsed="0.000539"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:32.935460" elapsed="0.000898"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:52:32.936880" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:32.936517" elapsed="0.000390"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:32.937228" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:32.936977" elapsed="0.000309"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:32.937763" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:32.937470" elapsed="0.000319"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:32.937310" elapsed="0.000513"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:32.936959" elapsed="0.000885"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:52:32.937992" elapsed="0.000392"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:52:32.938844" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:32.938555" elapsed="0.000315"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:52:32.939021" elapsed="0.002215"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:52:32.926611" elapsed="0.014687"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-08T00:52:32.941473" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-08T00:52:32.941368" elapsed="0.000164"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:32.941349" elapsed="0.000207"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:32.941701" elapsed="0.000021"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-08T00:52:32.941769" elapsed="0.000015"/>
</return>
<msg time="2026-04-08T00:52:32.943990" level="INFO">${response_text} = {"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"}]}}</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${access}</arg>
<arg>session=${session}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:52:32.910359" elapsed="0.033659"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:52:32.944069" elapsed="0.000027"/>
</return>
<msg time="2026-04-08T00:52:32.944235" level="INFO">${data} = {"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"}]}}</msg>
<var>${data}</var>
<arg>uri=${uri}</arg>
<arg>member_index=${index}</arg>
<doc>Send a GET with the supplied uri to member ${member_index}.</doc>
<status status="PASS" start="2026-04-08T00:52:32.908567" elapsed="0.035694"/>
</kw>
<kw name="Check Item Occurrence" owner="Utils">
<for flavor="IN">
<iter>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T00:52:32.945527" level="INFO">Item found from container 0 times.</msg>
<arg>${string}</arg>
<arg>${item}</arg>
<arg>${dictionary_item_occurrence}[${item}]</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="PASS" start="2026-04-08T00:52:32.945076" elapsed="0.000530"/>
</kw>
<var name="${item}">openflow</var>
<status status="PASS" start="2026-04-08T00:52:32.944921" elapsed="0.000762"/>
</iter>
<var>${item}</var>
<value>@{dictionary_item_occurrence}</value>
<status status="PASS" start="2026-04-08T00:52:32.944790" elapsed="0.000924"/>
</for>
<arg>${data}</arg>
<arg>${dictionary}</arg>
<doc>Check string for occurrences of items expressed in a list of dictionaries {item=occurrences}. 0 occurences means item is not present.</doc>
<status status="PASS" start="2026-04-08T00:52:32.944508" elapsed="0.001259"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T00:52:32.904470" elapsed="0.041332"/>
</iter>
<iter>
<kw name="Get_From_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:32.951193" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:32.950879" elapsed="0.000342"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:52:32.951267" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:52:32.951413" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:52:32.950483" elapsed="0.000954"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:32.957670" level="INFO">/rests/data/network-topology:network-topology?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:32.957423" elapsed="0.000292"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:32.958107" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:32.957867" elapsed="0.000284"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:52:32.968417" level="INFO">GET Request : url=http://10.30.170.131:8181/rests/data/network-topology:network-topology?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node012m0dyuink19r12kj250j53usg1.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:52:32.968520" level="INFO">GET Response : url=http://10.30.170.131:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '77'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"}]}} 
 </msg>
<msg time="2026-04-08T00:52:32.968612" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:52:32.960382" elapsed="0.008255"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:32.958237" elapsed="0.010442"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:32.968856" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:32.968706" elapsed="0.000217"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:32.958218" elapsed="0.010726"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:32.972234" level="INFO">{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"}]}}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:32.969941" elapsed="0.002339"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:32.969722" elapsed="0.002592"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:32.969703" elapsed="0.002636"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:32.974767" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:32.972612" elapsed="0.002200"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:32.972394" elapsed="0.002452"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:32.972377" elapsed="0.002492"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:52:32.975432" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:32.975028" elapsed="0.000431"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:32.975764" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:32.975529" elapsed="0.000292"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:32.976317" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:32.976001" elapsed="0.000342"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:32.975844" elapsed="0.000535"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:32.975511" elapsed="0.000889"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:52:32.976911" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:32.976555" elapsed="0.000382"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:32.977253" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:32.977005" elapsed="0.000305"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:32.977791" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:32.977493" elapsed="0.000324"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:32.977334" elapsed="0.000518"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:32.976987" elapsed="0.000923"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:52:32.978063" elapsed="0.000375"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:52:32.978871" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:32.978601" elapsed="0.000296"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:52:32.979048" elapsed="0.002220"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:52:32.969303" elapsed="0.012028"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-08T00:52:32.981506" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-08T00:52:32.981401" elapsed="0.000164"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:32.981382" elapsed="0.000207"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:32.981733" elapsed="0.000021"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-08T00:52:32.981801" elapsed="0.000014"/>
</return>
<msg time="2026-04-08T00:52:32.983988" level="INFO">${response_text} = {"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"}]}}</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${access}</arg>
<arg>session=${session}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:52:32.951755" elapsed="0.032261"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:52:32.984067" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:52:32.984234" level="INFO">${data} = {"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"}]}}</msg>
<var>${data}</var>
<arg>uri=${uri}</arg>
<arg>member_index=${index}</arg>
<doc>Send a GET with the supplied uri to member ${member_index}.</doc>
<status status="PASS" start="2026-04-08T00:52:32.949980" elapsed="0.034280"/>
</kw>
<kw name="Check Item Occurrence" owner="Utils">
<for flavor="IN">
<iter>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T00:52:32.985410" level="INFO">Item found from container 0 times.</msg>
<arg>${string}</arg>
<arg>${item}</arg>
<arg>${dictionary_item_occurrence}[${item}]</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="PASS" start="2026-04-08T00:52:32.985022" elapsed="0.000453"/>
</kw>
<var name="${item}">openflow</var>
<status status="PASS" start="2026-04-08T00:52:32.984869" elapsed="0.000646"/>
</iter>
<var>${item}</var>
<value>@{dictionary_item_occurrence}</value>
<status status="PASS" start="2026-04-08T00:52:32.984742" elapsed="0.000802"/>
</for>
<arg>${data}</arg>
<arg>${dictionary}</arg>
<doc>Check string for occurrences of items expressed in a list of dictionaries {item=occurrences}. 0 occurences means item is not present.</doc>
<status status="PASS" start="2026-04-08T00:52:32.984484" elapsed="0.001112"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T00:52:32.945890" elapsed="0.039739"/>
</iter>
<iter>
<kw name="Get_From_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:32.990876" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:32.990578" elapsed="0.000325"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:52:32.990948" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:52:32.991094" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:52:32.990238" elapsed="0.000881"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:32.997523" level="INFO">/rests/data/network-topology:network-topology?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:32.997274" elapsed="0.000295"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:32.997963" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:32.997721" elapsed="0.000285"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:52:33.009734" level="INFO">GET Request : url=http://10.30.171.110:8181/rests/data/network-topology:network-topology?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0u16rl3earouwvehy59feej101.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:52:33.009874" level="INFO">GET Response : url=http://10.30.171.110:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '77'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"}]}} 
 </msg>
<msg time="2026-04-08T00:52:33.009984" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:52:33.000003" elapsed="0.010008"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:32.998078" elapsed="0.011982"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:33.010310" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:33.010093" elapsed="0.000284"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:32.998054" elapsed="0.012344"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:33.013934" level="INFO">{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"}]}}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:33.011568" elapsed="0.002413"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:33.011336" elapsed="0.002679"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:33.011315" elapsed="0.002725"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:33.016655" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:33.014336" elapsed="0.002364"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:33.014097" elapsed="0.002637"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:33.014080" elapsed="0.002678"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:52:33.017344" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:33.016932" elapsed="0.000439"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:33.017677" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:33.017442" elapsed="0.000292"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:33.018239" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:33.017918" elapsed="0.000347"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:33.017758" elapsed="0.000543"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:33.017424" elapsed="0.000899"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:52:33.018839" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:33.018480" elapsed="0.000386"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:33.019167" elapsed="0.000035"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:33.018934" elapsed="0.000304"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:33.019715" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:33.019423" elapsed="0.000317"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:33.019262" elapsed="0.000513"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:33.018916" elapsed="0.000880"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:52:33.019947" elapsed="0.000391"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:52:33.020785" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:33.020503" elapsed="0.000307"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:52:33.020963" elapsed="0.002224"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:52:33.010855" elapsed="0.012399"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-08T00:52:33.023440" elapsed="0.000034"/>
</return>
<status status="PASS" start="2026-04-08T00:52:33.023328" elapsed="0.000180"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:33.023309" elapsed="0.000224"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:33.023681" elapsed="0.000021"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-08T00:52:33.023752" elapsed="0.000015"/>
</return>
<msg time="2026-04-08T00:52:33.025932" level="INFO">${response_text} = {"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"}]}}</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${access}</arg>
<arg>session=${session}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:52:32.991453" elapsed="0.034507"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:52:33.026011" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:52:33.026167" level="INFO">${data} = {"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"}]}}</msg>
<var>${data}</var>
<arg>uri=${uri}</arg>
<arg>member_index=${index}</arg>
<doc>Send a GET with the supplied uri to member ${member_index}.</doc>
<status status="PASS" start="2026-04-08T00:52:32.989734" elapsed="0.036473"/>
</kw>
<kw name="Check Item Occurrence" owner="Utils">
<for flavor="IN">
<iter>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T00:52:33.027582" level="INFO">Item found from container 0 times.</msg>
<arg>${string}</arg>
<arg>${item}</arg>
<arg>${dictionary_item_occurrence}[${item}]</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="PASS" start="2026-04-08T00:52:33.027198" elapsed="0.000452"/>
</kw>
<var name="${item}">openflow</var>
<status status="PASS" start="2026-04-08T00:52:33.027013" elapsed="0.000677"/>
</iter>
<var>${item}</var>
<value>@{dictionary_item_occurrence}</value>
<status status="PASS" start="2026-04-08T00:52:33.026723" elapsed="0.000998"/>
</for>
<arg>${data}</arg>
<arg>${dictionary}</arg>
<doc>Check string for occurrences of items expressed in a list of dictionaries {item=occurrences}. 0 occurences means item is not present.</doc>
<status status="PASS" start="2026-04-08T00:52:33.026451" elapsed="0.001322"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T00:52:32.985716" elapsed="0.042190"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-08T00:52:32.904336" elapsed="0.123603"/>
</for>
<arg>uri=${RFC8040_OPERATIONAL_TOPO_API}</arg>
<arg>dictionary=${dictionary}</arg>
<arg>member_index_list=${controller_index_list}</arg>
<doc>Send a GET with the supplied uri to all or some members defined in ${member_index_list}.
Then check received for occurrences of items expressed in a dictionary {'openflow': '0'}.</doc>
<status status="PASS" start="2026-04-08T00:52:32.902130" elapsed="0.125865"/>
</kw>
<arg>20s</arg>
<arg>2s</arg>
<arg>ClusterManagement.Check_Item_Occurrence_Member_List_Or_All</arg>
<arg>uri=${RFC8040_OPERATIONAL_TOPO_API}</arg>
<arg>dictionary=${dictionary}</arg>
<arg>member_index_list=${controller_index_list}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-08T00:52:32.896360" elapsed="0.131694"/>
</kw>
<doc>Check device is not in operational inventory or topology in all cluster instances in ${controller_index_list}.</doc>
<status status="PASS" start="2026-04-08T00:52:32.829544" elapsed="0.198578"/>
</kw>
<doc>Check device is not in operational inventory or topology in all cluster instances.</doc>
<status status="PASS" start="2026-04-08T00:52:32.825265" elapsed="0.202997"/>
</test>
<kw name="Delete All Sessions" owner="RequestsLibrary" type="TEARDOWN">
<msg time="2026-04-08T00:52:33.029087" level="INFO">Deleting All Sessions</msg>
<doc>Removes all the session objects</doc>
<status status="PASS" start="2026-04-08T00:52:33.029003" elapsed="0.000213"/>
</kw>
<doc>Test suite for Cluster HA - Device Owner Stop and Start</doc>
<status status="FAIL" start="2026-04-08T00:51:07.517858" elapsed="85.511393"/>
</suite>
<suite id="s1-s3" name="Cluster HA Data Recovery Leader Follower Failover" source="/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustering/030__Cluster_HA_Data_Recovery_Leader_Follower_Failover.robot">
<kw name="Setup_Utils_For_Setup_And_Teardown" owner="SetupUtils" type="SETUP">
<kw name="Do_Not_Fail_Fast_From_Now_On" owner="FailFast">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:33.109396" level="INFO">${SuiteFastFail} = False</msg>
<arg>${SuiteFastFail}</arg>
<arg>False</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-08T00:52:33.105427" elapsed="0.004019"/>
</kw>
<doc>Set suite to not fail fast.</doc>
<status status="PASS" start="2026-04-08T00:52:33.105202" elapsed="0.004308"/>
</kw>
<kw name="Setup_Karaf_Keywords" owner="KarafKeywords">
<kw name="ClusterManagement_Setup" owner="ClusterManagement">
<kw name="Get Variable Value" owner="BuiltIn">
<msg time="2026-04-08T00:52:33.114108" level="INFO">${already_done} = False</msg>
<var>${already_done}</var>
<arg>\${ClusterManagement__has_setup_run}</arg>
<arg>False</arg>
<doc>Returns variable value or ``default`` if the variable does not exist.</doc>
<status status="PASS" start="2026-04-08T00:52:33.110609" elapsed="0.003528"/>
</kw>
<if>
<branch type="IF" condition="${already_done}">
<return>
<status status="NOT RUN" start="2026-04-08T00:52:33.114360" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:52:33.114233" elapsed="0.000170"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:33.114213" elapsed="0.000212"/>
</if>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:33.114909" level="INFO">${ClusterManagement__has_setup_run} = True</msg>
<arg>\${ClusterManagement__has_setup_run}</arg>
<arg>True</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-08T00:52:33.114575" elapsed="0.000377"/>
</kw>
<kw name="Get Variable Value" owner="BuiltIn">
<msg time="2026-04-08T00:52:33.115437" level="INFO">${cluster_size} = 3</msg>
<var>${cluster_size}</var>
<arg>\${NUM_ODL_SYSTEM}</arg>
<arg>1</arg>
<doc>Returns variable value or ``default`` if the variable does not exist.</doc>
<status status="PASS" start="2026-04-08T00:52:33.115112" elapsed="0.000351"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Convert To Integer" owner="BuiltIn">
<arg>${cluster_size}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:52:33.115963" elapsed="0.000294"/>
</kw>
<msg time="2026-04-08T00:52:33.116354" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:52:33.116400" level="INFO">${possibly_int_of_members} = 3</msg>
<var>${status}</var>
<var>${possibly_int_of_members}</var>
<arg>BuiltIn.Convert_To_Integer</arg>
<arg>${cluster_size}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:52:33.115627" elapsed="0.000796"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:52:33.116990" level="INFO">${int_of_members} = 3</msg>
<var>${int_of_members}</var>
<arg>'${status}' != 'PASS'</arg>
<arg>${1}</arg>
<arg>${possibly_int_of_members}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:52:33.116620" elapsed="0.000396"/>
</kw>
<kw name="ClusterManagement__Compute_Derived_Variables" owner="ClusterManagement">
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:52:33.117996" level="INFO">@{member_index_list} = [ ]</msg>
<var>@{member_index_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:52:33.117720" elapsed="0.000303"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:52:33.118487" level="INFO">@{session_list} = [ ]</msg>
<var>@{session_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:52:33.118173" elapsed="0.000340"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-08T00:52:33.118959" level="INFO">&amp;{index_to_ip_mapping} = { }</msg>
<var>&amp;{index_to_ip_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-08T00:52:33.118672" elapsed="0.000314"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="ClusterManagement__Include_Member_Index" owner="ClusterManagement">
<kw name="Append To List" owner="Collections">
<arg>${member_index_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-08T00:52:33.121994" elapsed="0.000223"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:33.122718" level="INFO">${member_ip} = 10.30.170.48</msg>
<var>${member_ip}</var>
<arg>${ODL_SYSTEM_${index}_IP}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:33.122377" elapsed="0.000368"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${index_to_ip_mapping}</arg>
<arg>${index}</arg>
<arg>${member_ip}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:52:33.122898" elapsed="0.000225"/>
</kw>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:33.123912" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:33.123620" elapsed="0.000319"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:52:33.123984" elapsed="0.000032"/>
</return>
<msg time="2026-04-08T00:52:33.124136" level="INFO">${session_alias} = ClusterManagement__session_1</msg>
<var>${session_alias}</var>
<arg>member_index=${index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:52:33.123330" elapsed="0.000834"/>
</kw>
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:52:33.124929" level="INFO">Creating Session using : alias=ClusterManagement__session_1, url=http://10.30.170.48:8181, headers={},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x76b9f435de10&gt;, timeout=5, proxies=None, verify=False,                     debug=0 </msg>
<arg>${session_alias}</arg>
<arg>http://${member_ip}:${RESTCONFPORT}</arg>
<arg>auth=${AUTH}</arg>
<arg>timeout=${http_timeout}</arg>
<arg>max_retries=${http_retries}</arg>
<doc>Create Session: create a HTTP session to a server</doc>
<status status="PASS" start="2026-04-08T00:52:33.124497" elapsed="0.000570"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${session_list}</arg>
<arg>${session_alias}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-08T00:52:33.125253" elapsed="0.000191"/>
</kw>
<arg>${index}</arg>
<arg>${member_index_list}</arg>
<arg>${session_list}</arg>
<arg>${index_to_ip_mapping}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>http_retries=${http_retries}</arg>
<doc>Add a corresponding item based on index into the last three arguments.
Create the Http session whose alias is added to list.</doc>
<status status="PASS" start="2026-04-08T00:52:33.121366" elapsed="0.004137"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T00:52:33.121166" elapsed="0.004381"/>
</iter>
<iter>
<kw name="ClusterManagement__Include_Member_Index" owner="ClusterManagement">
<kw name="Append To List" owner="Collections">
<arg>${member_index_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-08T00:52:33.126571" elapsed="0.000191"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:33.127279" level="INFO">${member_ip} = 10.30.170.131</msg>
<var>${member_ip}</var>
<arg>${ODL_SYSTEM_${index}_IP}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:33.126938" elapsed="0.000368"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${index_to_ip_mapping}</arg>
<arg>${index}</arg>
<arg>${member_ip}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:52:33.127457" elapsed="0.000218"/>
</kw>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:33.128462" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:33.128153" elapsed="0.000336"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:52:33.128533" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:52:33.128680" level="INFO">${session_alias} = ClusterManagement__session_2</msg>
<var>${session_alias}</var>
<arg>member_index=${index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:52:33.127862" elapsed="0.000844"/>
</kw>
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:52:33.129278" level="INFO">Creating Session using : alias=ClusterManagement__session_2, url=http://10.30.170.131:8181, headers={},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x76b9f422f1d0&gt;, timeout=5, proxies=None, verify=False,                     debug=0 </msg>
<arg>${session_alias}</arg>
<arg>http://${member_ip}:${RESTCONFPORT}</arg>
<arg>auth=${AUTH}</arg>
<arg>timeout=${http_timeout}</arg>
<arg>max_retries=${http_retries}</arg>
<doc>Create Session: create a HTTP session to a server</doc>
<status status="PASS" start="2026-04-08T00:52:33.128856" elapsed="0.000530"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${session_list}</arg>
<arg>${session_alias}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-08T00:52:33.129545" elapsed="0.000186"/>
</kw>
<arg>${index}</arg>
<arg>${member_index_list}</arg>
<arg>${session_list}</arg>
<arg>${index_to_ip_mapping}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>http_retries=${http_retries}</arg>
<doc>Add a corresponding item based on index into the last three arguments.
Create the Http session whose alias is added to list.</doc>
<status status="PASS" start="2026-04-08T00:52:33.125960" elapsed="0.003829"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T00:52:33.125629" elapsed="0.004204"/>
</iter>
<iter>
<kw name="ClusterManagement__Include_Member_Index" owner="ClusterManagement">
<kw name="Append To List" owner="Collections">
<arg>${member_index_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-08T00:52:33.130663" elapsed="0.000194"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:33.131353" level="INFO">${member_ip} = 10.30.171.110</msg>
<var>${member_ip}</var>
<arg>${ODL_SYSTEM_${index}_IP}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:33.131019" elapsed="0.000361"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${index_to_ip_mapping}</arg>
<arg>${index}</arg>
<arg>${member_ip}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:52:33.131530" elapsed="0.000218"/>
</kw>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:33.132680" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:33.132368" elapsed="0.000338"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:52:33.132751" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:52:33.132897" level="INFO">${session_alias} = ClusterManagement__session_3</msg>
<var>${session_alias}</var>
<arg>member_index=${index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:52:33.131937" elapsed="0.000984"/>
</kw>
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:52:33.133500" level="INFO">Creating Session using : alias=ClusterManagement__session_3, url=http://10.30.171.110:8181, headers={},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x76b9f441ce10&gt;, timeout=5, proxies=None, verify=False,                     debug=0 </msg>
<arg>${session_alias}</arg>
<arg>http://${member_ip}:${RESTCONFPORT}</arg>
<arg>auth=${AUTH}</arg>
<arg>timeout=${http_timeout}</arg>
<arg>max_retries=${http_retries}</arg>
<doc>Create Session: create a HTTP session to a server</doc>
<status status="PASS" start="2026-04-08T00:52:33.133072" elapsed="0.000531"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${session_list}</arg>
<arg>${session_alias}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-08T00:52:33.133763" elapsed="0.000186"/>
</kw>
<arg>${index}</arg>
<arg>${member_index_list}</arg>
<arg>${session_list}</arg>
<arg>${index_to_ip_mapping}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>http_retries=${http_retries}</arg>
<doc>Add a corresponding item based on index into the last three arguments.
Create the Http session whose alias is added to list.</doc>
<status status="PASS" start="2026-04-08T00:52:33.130088" elapsed="0.003931"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T00:52:33.129915" elapsed="0.004207"/>
</iter>
<var>${index}</var>
<value>1</value>
<value>${int_of_members+1}</value>
<status status="PASS" start="2026-04-08T00:52:33.119037" elapsed="0.015127"/>
</for>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:33.134809" level="INFO">${ClusterManagement__member_index_list} = [1, 2, 3]</msg>
<arg>\${ClusterManagement__member_index_list}</arg>
<arg>${member_index_list}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-08T00:52:33.134354" elapsed="0.000501"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:33.135445" level="INFO">${ClusterManagement__index_to_ip_mapping} = {1: '10.30.170.48', 2: '10.30.170.131', 3: '10.30.171.110'}</msg>
<arg>\${ClusterManagement__index_to_ip_mapping}</arg>
<arg>${index_to_ip_mapping}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-08T00:52:33.135031" elapsed="0.000457"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:33.136018" level="INFO">${ClusterManagement__session_list} = ['ClusterManagement__session_1', 'ClusterManagement__session_2', 'ClusterManagement__session_3']</msg>
<arg>\${ClusterManagement__session_list}</arg>
<arg>${session_list}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-08T00:52:33.135650" elapsed="0.000410"/>
</kw>
<arg>int_of_members=${int_of_members}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>http_retries=${http_retries}</arg>
<doc>Construct index list, session list and IP mapping, publish them as suite variables.</doc>
<status status="PASS" start="2026-04-08T00:52:33.117277" elapsed="0.018840"/>
</kw>
<arg>http_timeout=${http_timeout}</arg>
<doc>Detect repeated call, or detect number of members and initialize derived suite variables.
Http sessions are created with parameters to not waste time when ODL is no accepting connections properly.</doc>
<status status="PASS" start="2026-04-08T00:52:33.110268" elapsed="0.025908"/>
</kw>
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:52:33.136374" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:52:33.136257" elapsed="0.000161"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:33.136238" elapsed="0.000202"/>
</if>
<kw name="Run_Bash_Command_On_List_Or_All" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:52:33.139685" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:52:33.139232" elapsed="0.000481"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:52:33.140206" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:52:33.139874" elapsed="0.000360"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:52:33.140280" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:52:33.140443" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:52:33.138873" elapsed="0.001596"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:52:33.141459" level="INFO">${member_ip} = 10.30.170.48</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:52:33.141190" elapsed="0.000296"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:52:33.142241" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

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

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T00:52:33.145472" elapsed="0.000284"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:33.146867" level="INFO">Attempting to execute command "iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save" on remote system "10.30.170.48" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:33.145912" elapsed="0.001003"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:52:33.147802" level="INFO">${conn_id} = 73</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:52:33.147119" elapsed="0.000710"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T00:52:33.149164" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T00:52:33.149433" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T00:52:33.148604" elapsed="0.000881"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:52:33.149776" elapsed="0.000642"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T00:52:33.152117" level="INFO">Logging into '10.30.170.48:22' as 'jenkins'.</msg>
<msg time="2026-04-08T00:52:33.734233" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 00:52:33 UTC 2026

  System load:  0.26               Processes:             120
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 8%                 IPv4 address for ens3: 10.30.170.48
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 00:51:08 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-0-builder-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T00:52:33.151719" elapsed="0.582742"/>
</kw>
<msg time="2026-04-08T00:52:33.734574" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:52:33.150754" elapsed="0.584009"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T00:52:33.148053" elapsed="0.586986"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T00:52:33.735631" level="INFO">Executing command 'iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save'.</msg>
<msg time="2026-04-08T00:52:33.748407" level="INFO">Command exited with return code 4.</msg>
<msg time="2026-04-08T00:52:33.748767" level="INFO">${stdout} = </msg>
<msg time="2026-04-08T00:52:33.748871" level="INFO">${stderr} = iptables v1.8.7 (nf_tables): unknown option "--dport"
Try `iptables -h' or 'iptables --help' for more information.
iptables-save v1.8.7 (nf_tables): Could not fetch rule set generation id: Permission ...</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T00:52:33.735308" elapsed="0.013619"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:52:33.749354" elapsed="0.000476"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:33.751511" level="INFO">iptables v1.8.7 (nf_tables): unknown option "--dport"
Try `iptables -h' or 'iptables --help' for more information.
iptables-save v1.8.7 (nf_tables): Could not fetch rule set generation id: Permission denied (you must be root)</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:33.750310" elapsed="0.001308"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:52:33.752221" elapsed="0.000043"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:52:33.751790" elapsed="0.000546"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:33.751740" elapsed="0.000647"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T00:52:33.752806" elapsed="0.000061"/>
</return>
<status status="PASS" start="2026-04-08T00:52:33.752507" elapsed="0.000424"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:33.752472" elapsed="0.000492"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:52:33.753011" elapsed="0.000021"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:52:33.756884" elapsed="0.001139"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:52:33.758403" elapsed="0.000642"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:52:33.759338" elapsed="0.000292"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:52:33.753485" elapsed="0.006267"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T00:52:33.144290" elapsed="0.615595"/>
</kw>
<msg time="2026-04-08T00:52:33.759962" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:52:33.143591" elapsed="0.616443"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-08T00:52:33.143090" elapsed="0.617053"/>
</kw>
<msg time="2026-04-08T00:52:33.760226" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:52:33.142530" elapsed="0.617792"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:52:33.763036" elapsed="0.000327"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:52:33.763587" elapsed="0.000144"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:52:33.763876" elapsed="0.000101"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:52:33.760727" elapsed="0.003301"/>
</kw>
<msg time="2026-04-08T00:52:33.764120" level="INFO">${output} = </msg>
<var>${output}</var>
<arg>Utils.Run_Command_On_Controller</arg>
<arg>${member_ip}</arg>
<arg>${command}</arg>
<doc>Store current connection index, run keyword returning its result, restore connection in teardown.
Note that in order to avoid "got positional argument after named arguments", it is safer to use positional (not named) arguments on call.</doc>
<status status="PASS" start="2026-04-08T00:52:33.141703" elapsed="0.622441"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:33.764606" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:33.764340" elapsed="0.000307"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-08T00:52:33.764689" elapsed="0.000028"/>
</return>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-08T00:52:33.140819" elapsed="0.623991"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T00:52:33.140645" elapsed="0.624202"/>
</iter>
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:52:33.765771" level="INFO">${member_ip} = 10.30.170.131</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:52:33.765501" elapsed="0.000296"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:52:33.766627" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

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

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T00:52:33.770022" elapsed="0.000324"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:33.771504" level="INFO">Attempting to execute command "iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save" on remote system "10.30.170.131" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:33.770500" elapsed="0.001052"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:52:33.772402" level="INFO">${conn_id} = 76</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:52:33.771710" elapsed="0.000719"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T00:52:33.773815" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T00:52:33.774035" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T00:52:33.773222" elapsed="0.000868"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:52:33.774406" elapsed="0.000638"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T00:52:33.776661" level="INFO">Logging into '10.30.170.131:22' as 'jenkins'.</msg>
<msg time="2026-04-08T00:52:34.336899" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 00:52:33 UTC 2026

  System load:  0.19               Processes:             122
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 8%                 IPv4 address for ens3: 10.30.170.131
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 00:51:08 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-0-builder-1 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T00:52:33.776237" elapsed="0.560905"/>
</kw>
<msg time="2026-04-08T00:52:34.337381" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:52:33.775432" elapsed="0.562154"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T00:52:33.772668" elapsed="0.565177"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T00:52:34.338460" level="INFO">Executing command 'iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save'.</msg>
<msg time="2026-04-08T00:52:34.350842" level="INFO">Command exited with return code 4.</msg>
<msg time="2026-04-08T00:52:34.351072" level="INFO">${stdout} = </msg>
<msg time="2026-04-08T00:52:34.351137" level="INFO">${stderr} = iptables v1.8.7 (nf_tables): unknown option "--dport"
Try `iptables -h' or 'iptables --help' for more information.
iptables-save v1.8.7 (nf_tables): Could not fetch rule set generation id: Permission ...</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T00:52:34.338094" elapsed="0.013109"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:52:34.351441" elapsed="0.000316"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:34.352833" level="INFO">iptables v1.8.7 (nf_tables): unknown option "--dport"
Try `iptables -h' or 'iptables --help' for more information.
iptables-save v1.8.7 (nf_tables): Could not fetch rule set generation id: Permission denied (you must be root)</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:34.352039" elapsed="0.000861"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:52:34.353274" elapsed="0.000024"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:52:34.353019" elapsed="0.000328"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:34.352983" elapsed="0.000396"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T00:52:34.353687" elapsed="0.000062"/>
</return>
<status status="PASS" start="2026-04-08T00:52:34.353456" elapsed="0.000365"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:34.353433" elapsed="0.000441"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:52:34.353946" elapsed="0.000032"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:52:34.362023" elapsed="0.000745"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:52:34.362995" elapsed="0.000434"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:52:34.363617" elapsed="0.000190"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:52:34.354702" elapsed="0.009189"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T00:52:33.768825" elapsed="0.595165"/>
</kw>
<msg time="2026-04-08T00:52:34.364043" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:52:33.768129" elapsed="0.595966"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-08T00:52:33.767628" elapsed="0.596560"/>
</kw>
<msg time="2026-04-08T00:52:34.364230" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:52:33.766906" elapsed="0.597369"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:52:34.367023" elapsed="0.000335"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:52:34.367520" elapsed="0.000149"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:52:34.367817" elapsed="0.000102"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:52:34.364731" elapsed="0.003239"/>
</kw>
<msg time="2026-04-08T00:52:34.368061" level="INFO">${output} = </msg>
<var>${output}</var>
<arg>Utils.Run_Command_On_Controller</arg>
<arg>${member_ip}</arg>
<arg>${command}</arg>
<doc>Store current connection index, run keyword returning its result, restore connection in teardown.
Note that in order to avoid "got positional argument after named arguments", it is safer to use positional (not named) arguments on call.</doc>
<status status="PASS" start="2026-04-08T00:52:33.766009" elapsed="0.602077"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:34.368529" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:34.368282" elapsed="0.000313"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-08T00:52:34.368640" elapsed="0.000029"/>
</return>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-08T00:52:33.765123" elapsed="0.603640"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T00:52:33.764944" elapsed="0.603855"/>
</iter>
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:52:34.369788" level="INFO">${member_ip} = 10.30.171.110</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:52:34.369452" elapsed="0.000364"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:52:34.370554" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

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

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T00:52:34.373760" elapsed="0.000277"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:34.375099" level="INFO">Attempting to execute command "iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save" on remote system "10.30.171.110" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:34.374207" elapsed="0.000940"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:52:34.375954" level="INFO">${conn_id} = 79</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:52:34.375323" elapsed="0.000658"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T00:52:34.377327" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T00:52:34.377538" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T00:52:34.376753" elapsed="0.000834"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:52:34.377872" elapsed="0.000635"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T00:52:34.380159" level="INFO">Logging into '10.30.171.110:22' as 'jenkins'.</msg>
<msg time="2026-04-08T00:52:34.961610" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 00:52:34 UTC 2026

  System load:  0.16               Processes:             121
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 8%                 IPv4 address for ens3: 10.30.171.110
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 00:51:09 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T00:52:34.379759" elapsed="0.582081"/>
</kw>
<msg time="2026-04-08T00:52:34.961953" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:52:34.378828" elapsed="0.583313"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T00:52:34.376215" elapsed="0.586225"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T00:52:34.963010" level="INFO">Executing command 'iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save'.</msg>
<msg time="2026-04-08T00:52:34.975074" level="INFO">Command exited with return code 4.</msg>
<msg time="2026-04-08T00:52:34.975493" level="INFO">${stdout} = </msg>
<msg time="2026-04-08T00:52:34.975597" level="INFO">${stderr} = iptables v1.8.7 (nf_tables): unknown option "--dport"
Try `iptables -h' or 'iptables --help' for more information.
iptables-save v1.8.7 (nf_tables): Could not fetch rule set generation id: Permission ...</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T00:52:34.962682" elapsed="0.012970"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:52:34.976034" elapsed="0.000581"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:34.978287" level="INFO">iptables v1.8.7 (nf_tables): unknown option "--dport"
Try `iptables -h' or 'iptables --help' for more information.
iptables-save v1.8.7 (nf_tables): Could not fetch rule set generation id: Permission denied (you must be root)</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:34.977043" elapsed="0.001353"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:52:34.979036" elapsed="0.000037"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:52:34.978684" elapsed="0.000462"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:34.978628" elapsed="0.000609"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T00:52:34.979651" elapsed="0.000062"/>
</return>
<status status="PASS" start="2026-04-08T00:52:34.979363" elapsed="0.000423"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:34.979328" elapsed="0.000513"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:52:34.979915" elapsed="0.000031"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:52:34.984351" elapsed="0.001129"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:52:34.985808" elapsed="0.000675"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:52:34.986754" elapsed="0.000284"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:52:34.980724" elapsed="0.006439"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T00:52:34.372513" elapsed="0.614805"/>
</kw>
<msg time="2026-04-08T00:52:34.987395" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:52:34.371851" elapsed="0.615618"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-08T00:52:34.371372" elapsed="0.616208"/>
</kw>
<msg time="2026-04-08T00:52:34.987638" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:52:34.370837" elapsed="0.616864"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:52:34.990749" elapsed="0.000313"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:52:34.991243" elapsed="0.000144"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:52:34.991533" elapsed="0.000095"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:52:34.988106" elapsed="0.003573"/>
</kw>
<msg time="2026-04-08T00:52:34.991772" level="INFO">${output} = </msg>
<var>${output}</var>
<arg>Utils.Run_Command_On_Controller</arg>
<arg>${member_ip}</arg>
<arg>${command}</arg>
<doc>Store current connection index, run keyword returning its result, restore connection in teardown.
Note that in order to avoid "got positional argument after named arguments", it is safer to use positional (not named) arguments on call.</doc>
<status status="PASS" start="2026-04-08T00:52:34.370033" elapsed="0.621765"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:34.992244" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:34.991980" elapsed="0.000307"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-08T00:52:34.992328" elapsed="0.000029"/>
</return>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-08T00:52:34.369066" elapsed="0.623402"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T00:52:34.368890" elapsed="0.623617"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-08T00:52:33.140519" elapsed="1.852024"/>
</for>
<arg>iptables -I INPUT -p tcp --dport ${KARAF_SHELL_PORT} -j ACCEPT; iptables-save</arg>
<doc>Cycle through indices (or all), run command on each.</doc>
<status status="PASS" start="2026-04-08T00:52:33.136657" elapsed="1.855943"/>
</kw>
<kw name="Comment" owner="BuiltIn">
<arg>First connections to Karaf console may fail, so WUKS is used. TODO: Track as a Bug.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:52:34.992756" elapsed="0.000211"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:52:35.006215" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:52:35.006088" elapsed="0.000173"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:35.006069" elapsed="0.000214"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:52:35.006570" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T00:52:35.006436" elapsed="0.000265"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:35.007120" level="INFO">{}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:35.006852" elapsed="0.000316"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:35.007626" level="INFO">1</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:35.007377" elapsed="0.000293"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:52:35.008434" level="FAIL">Dictionary does not contain key '1'.</msg>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="FAIL" start="2026-04-08T00:52:35.008208" elapsed="0.000334">Dictionary does not contain key '1'.</status>
</kw>
<msg time="2026-04-08T00:52:35.008647" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:52:35.008692" level="INFO">${old_connection_index} = Dictionary does not contain key '1'.</msg>
<var>${status}</var>
<var>${old_connection_index}</var>
<arg>Get From Dictionary</arg>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:52:35.007829" elapsed="0.000886"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='PASS'">
<kw name="Run Keywords" owner="BuiltIn">
<arg>SSHLibrary.Switch_Connection</arg>
<arg>${old_connection_index}</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Executes all the given keywords in a sequence.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:35.009029" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:35.008806" elapsed="0.000297"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:35.008787" elapsed="0.000339"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:52:35.009884" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:52:35.009619" elapsed="0.000290"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:52:35.009957" elapsed="0.000038"/>
</return>
<msg time="2026-04-08T00:52:35.010116" level="INFO">${odl_ip} = 10.30.170.48</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:52:35.009350" elapsed="0.000790"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${odl_ip}</arg>
<arg>port=${KARAF_SHELL_PORT}</arg>
<arg>prompt=${KARAF_PROMPT_LOGIN}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:52:35.010311" elapsed="0.000400"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:52:35.010988" level="INFO">index=82
host=10.30.170.48
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-08T00:52:35.011086" level="INFO">${karaf_connection_object} = index=82
host=10.30.170.48
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_erro...</msg>
<var>${karaf_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T00:52:35.010877" elapsed="0.000235"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<arg>${karaf_connection_object.index}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:52:35.011277" elapsed="0.002126"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-08T00:52:35.013824" level="INFO">Logging into '10.30.170.48:8101' as 'karaf'.</msg>
<msg time="2026-04-08T00:52:35.217798" level="INFO">Read output: [33m                                                                                           
[33m    ________                       ________                .__  .__       .__     __       
[33m    \_____  \ ______   ____   ____ \______ \ _____  ___.__.|  | |__| ____ |  |___/  |_     
[33m     /   |   \\____ \_/ __ \ /    \ |    |  \\__  \&lt;   |  ||  | |  |/ ___\|  |  \   __\    
[33m    /    |    \  |_&gt; &gt;  ___/|   |  \|    `   \/ __ \\___  ||  |_|  / /_/  &gt;   Y  \  |      
[33m    \_______  /   __/ \___  &gt;___|  /_______  (____  / ____||____/__\___  /|___|  /__|      
[33m            \/|__|        \/     \/        \/     \/\/            /_____/      \/          
[33m                                                                                           

Hit '[1m&lt;tab&gt;[0m' for a list of available commands
and '[1m[cmd] --help[0m' for help on a specific command.
Hit '[1m&lt;ctrl-d&gt;[0m' or type '[1msystem:shutdown[0m' or '[1mlogout[0m' to shutdown OpenDaylight.

[?1h=[90m~[0m                                                                                [?2004hopendaylight-user</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="PASS" start="2026-04-08T00:52:35.013567" elapsed="0.204379"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:52:35.221612" elapsed="0.000311"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:52:35.222088" elapsed="0.000177"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:52:35.222412" elapsed="0.000100"/>
</kw>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:52:35.219042" elapsed="0.003523"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T00:52:35.218366" elapsed="0.004246"/>
</kw>
<arg>member_index=${index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for ${member_index},
close the previous connection. In any case create a new connection
to karaf console for ${member_index}, set correct prompt set and login to karaf console.
Store connection index for ${member_index} and restore the previous active connection.</doc>
<status status="PASS" start="2026-04-08T00:52:35.005808" elapsed="0.216854"/>
</kw>
<arg>3s</arg>
<arg>1s</arg>
<arg>Open_Controller_Karaf_Console_On_Background</arg>
<arg>member_index=${index}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-08T00:52:34.993695" elapsed="0.229017"/>
</kw>
<arg>BuiltIn.Wait_Until_Keyword_Succeeds</arg>
<arg>3s</arg>
<arg>1s</arg>
<arg>Open_Controller_Karaf_Console_On_Background</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:52:34.993329" elapsed="0.229436"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T00:52:34.993188" elapsed="0.229682"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:52:35.235615" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:52:35.235494" elapsed="0.000172"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:35.235471" elapsed="0.000218"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:52:35.235975" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T00:52:35.235840" elapsed="0.000269"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:35.236541" level="INFO">{1: 82}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:35.236279" elapsed="0.000307"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:35.236992" level="INFO">2</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:35.236749" elapsed="0.000287"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:52:35.237972" level="FAIL">Dictionary does not contain key '2'.</msg>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="FAIL" start="2026-04-08T00:52:35.237739" elapsed="0.000342">Dictionary does not contain key '2'.</status>
</kw>
<msg time="2026-04-08T00:52:35.238213" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:52:35.238260" level="INFO">${old_connection_index} = Dictionary does not contain key '2'.</msg>
<var>${status}</var>
<var>${old_connection_index}</var>
<arg>Get From Dictionary</arg>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:52:35.237208" elapsed="0.001076"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='PASS'">
<kw name="Run Keywords" owner="BuiltIn">
<arg>SSHLibrary.Switch_Connection</arg>
<arg>${old_connection_index}</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Executes all the given keywords in a sequence.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:35.238580" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:35.238360" elapsed="0.000437"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:35.238342" elapsed="0.000483"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:52:35.239598" level="INFO">${ip_address} = 10.30.170.131</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:52:35.239333" elapsed="0.000292"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:52:35.239672" elapsed="0.000031"/>
</return>
<msg time="2026-04-08T00:52:35.239824" level="INFO">${odl_ip} = 10.30.170.131</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:52:35.239028" elapsed="0.000821"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${odl_ip}</arg>
<arg>port=${KARAF_SHELL_PORT}</arg>
<arg>prompt=${KARAF_PROMPT_LOGIN}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:52:35.240003" elapsed="0.000423"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:52:35.240706" level="INFO">index=84
host=10.30.170.131
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-08T00:52:35.240832" level="INFO">${karaf_connection_object} = index=84
host=10.30.170.131
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_err...</msg>
<var>${karaf_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T00:52:35.240595" elapsed="0.000264"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<arg>${karaf_connection_object.index}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:52:35.241005" elapsed="0.002088"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-08T00:52:35.243550" level="INFO">Logging into '10.30.170.131:8101' as 'karaf'.</msg>
<msg time="2026-04-08T00:52:35.425650" level="INFO">Read output: [33m                                                                                           
[33m    ________                       ________                .__  .__       .__     __       
[33m    \_____  \ ______   ____   ____ \______ \ _____  ___.__.|  | |__| ____ |  |___/  |_     
[33m     /   |   \\____ \_/ __ \ /    \ |    |  \\__  \&lt;   |  ||  | |  |/ ___\|  |  \   __\    
[33m    /    |    \  |_&gt; &gt;  ___/|   |  \|    `   \/ __ \\___  ||  |_|  / /_/  &gt;   Y  \  |      
[33m    \_______  /   __/ \___  &gt;___|  /_______  (____  / ____||____/__\___  /|___|  /__|      
[33m            \/|__|        \/     \/        \/     \/\/            /_____/      \/          
[33m                                                                                           

Hit '[1m&lt;tab&gt;[0m' for a list of available commands
and '[1m[cmd] --help[0m' for help on a specific command.
Hit '[1m&lt;ctrl-d&gt;[0m' or type '[1msystem:shutdown[0m' or '[1mlogout[0m' to shutdown OpenDaylight.

[?1h=[90m~[0m                                                                                [?2004hopendaylight-user</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="PASS" start="2026-04-08T00:52:35.243290" elapsed="0.182507"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:52:35.429234" elapsed="0.000313"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:52:35.429789" elapsed="0.000167"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:52:35.430149" elapsed="0.000120"/>
</kw>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:52:35.426927" elapsed="0.003397"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T00:52:35.426218" elapsed="0.004153"/>
</kw>
<arg>member_index=${index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for ${member_index},
close the previous connection. In any case create a new connection
to karaf console for ${member_index}, set correct prompt set and login to karaf console.
Store connection index for ${member_index} and restore the previous active connection.</doc>
<status status="PASS" start="2026-04-08T00:52:35.235209" elapsed="0.195217"/>
</kw>
<arg>3s</arg>
<arg>1s</arg>
<arg>Open_Controller_Karaf_Console_On_Background</arg>
<arg>member_index=${index}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-08T00:52:35.223504" elapsed="0.206972"/>
</kw>
<arg>BuiltIn.Wait_Until_Keyword_Succeeds</arg>
<arg>3s</arg>
<arg>1s</arg>
<arg>Open_Controller_Karaf_Console_On_Background</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:52:35.223113" elapsed="0.207417"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T00:52:35.222971" elapsed="0.207602"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:52:35.443480" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:52:35.443232" elapsed="0.000300"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:35.443208" elapsed="0.000347"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:52:35.443889" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T00:52:35.443711" elapsed="0.000317"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:35.444531" level="INFO">{1: 82, 2: 84}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:35.444260" elapsed="0.000316"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:35.444977" level="INFO">3</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:35.444727" elapsed="0.000293"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:52:35.445778" level="FAIL">Dictionary does not contain key '3'.</msg>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="FAIL" start="2026-04-08T00:52:35.445551" elapsed="0.000332">Dictionary does not contain key '3'.</status>
</kw>
<msg time="2026-04-08T00:52:35.445989" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:52:35.446035" level="INFO">${old_connection_index} = Dictionary does not contain key '3'.</msg>
<var>${status}</var>
<var>${old_connection_index}</var>
<arg>Get From Dictionary</arg>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:52:35.445192" elapsed="0.000870"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='PASS'">
<kw name="Run Keywords" owner="BuiltIn">
<arg>SSHLibrary.Switch_Connection</arg>
<arg>${old_connection_index}</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Executes all the given keywords in a sequence.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:35.446377" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:35.446137" elapsed="0.000314"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:35.446119" elapsed="0.000356"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:52:35.447227" level="INFO">${ip_address} = 10.30.171.110</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:52:35.446939" elapsed="0.000315"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:52:35.447300" elapsed="0.000032"/>
</return>
<msg time="2026-04-08T00:52:35.447453" level="INFO">${odl_ip} = 10.30.171.110</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:52:35.446672" elapsed="0.000806"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${odl_ip}</arg>
<arg>port=${KARAF_SHELL_PORT}</arg>
<arg>prompt=${KARAF_PROMPT_LOGIN}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:52:35.447632" elapsed="0.000401"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:52:35.448344" level="INFO">index=86
host=10.30.171.110
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-08T00:52:35.448459" level="INFO">${karaf_connection_object} = index=86
host=10.30.171.110
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_err...</msg>
<var>${karaf_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T00:52:35.448230" elapsed="0.000256"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<arg>${karaf_connection_object.index}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:52:35.448720" elapsed="0.002249"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-08T00:52:35.451411" level="INFO">Logging into '10.30.171.110:8101' as 'karaf'.</msg>
<msg time="2026-04-08T00:52:35.641688" level="INFO">Read output: [33m                                                                                           
[33m    ________                       ________                .__  .__       .__     __       
[33m    \_____  \ ______   ____   ____ \______ \ _____  ___.__.|  | |__| ____ |  |___/  |_     
[33m     /   |   \\____ \_/ __ \ /    \ |    |  \\__  \&lt;   |  ||  | |  |/ ___\|  |  \   __\    
[33m    /    |    \  |_&gt; &gt;  ___/|   |  \|    `   \/ __ \\___  ||  |_|  / /_/  &gt;   Y  \  |      
[33m    \_______  /   __/ \___  &gt;___|  /_______  (____  / ____||____/__\___  /|___|  /__|      
[33m            \/|__|        \/     \/        \/     \/\/            /_____/      \/          
[33m                                                                                           

Hit '[1m&lt;tab&gt;[0m' for a list of available commands
and '[1m[cmd] --help[0m' for help on a specific command.
Hit '[1m&lt;ctrl-d&gt;[0m' or type '[1msystem:shutdown[0m' or '[1mlogout[0m' to shutdown OpenDaylight.

[?1h=[90m~[0m                                                                                [?2004hopendaylight-user</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="PASS" start="2026-04-08T00:52:35.451133" elapsed="0.190833"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:52:35.645414" elapsed="0.000318"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:52:35.645900" elapsed="0.000173"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:52:35.646245" elapsed="0.000104"/>
</kw>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:52:35.643112" elapsed="0.003291"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T00:52:35.642408" elapsed="0.004042"/>
</kw>
<arg>member_index=${index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for ${member_index},
close the previous connection. In any case create a new connection
to karaf console for ${member_index}, set correct prompt set and login to karaf console.
Store connection index for ${member_index} and restore the previous active connection.</doc>
<status status="PASS" start="2026-04-08T00:52:35.442912" elapsed="0.203590"/>
</kw>
<arg>3s</arg>
<arg>1s</arg>
<arg>Open_Controller_Karaf_Console_On_Background</arg>
<arg>member_index=${index}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-08T00:52:35.431208" elapsed="0.215342"/>
</kw>
<arg>BuiltIn.Wait_Until_Keyword_Succeeds</arg>
<arg>3s</arg>
<arg>1s</arg>
<arg>Open_Controller_Karaf_Console_On_Background</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:52:35.430816" elapsed="0.215787"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T00:52:35.430677" elapsed="0.215968"/>
</iter>
<var>${index}</var>
<value>@{ClusterManagement__member_index_list}</value>
<status status="PASS" start="2026-04-08T00:52:34.993022" elapsed="0.653662"/>
</for>
<arg>http_timeout=${http_timeout}</arg>
<doc>Initialize ClusterManagement. Open ssh karaf connections to each ODL.</doc>
<status status="PASS" start="2026-04-08T00:52:33.109794" elapsed="2.536953"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Test_Suite_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:52:35.649549" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:52:35.649426" elapsed="0.000172"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:35.649402" elapsed="0.000218"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:52:35.654133" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:52:35.654027" elapsed="0.000167"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:35.654009" elapsed="0.000208"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:52:35.655183" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:52:35.654773" elapsed="0.000440"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:52:35.655675" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:52:35.655374" elapsed="0.000351"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:52:35.655770" elapsed="0.000037"/>
</return>
<msg time="2026-04-08T00:52:35.655933" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:52:35.654445" elapsed="0.001512"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:52:35.661413" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:52:35.661300" elapsed="0.000161"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:35.661279" elapsed="0.000205"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:52:35.662549" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:52:35.662443" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:35.662425" elapsed="0.000192"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:52:35.663063" level="INFO">${karaf_connection_index} = 82</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:52:35.662762" elapsed="0.000328"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:52:35.663546" level="INFO">${current_connection_index} = None</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:52:35.663341" elapsed="0.000232"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T00:52:35.713771" level="INFO">@root&gt;log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "s "u "i "t "e "[C "/ "w "/ "w "o "r "k "s "p "a "c "e "/ "o "p "e "[78Cn "[A[78Cf</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T00:52:35.664112" elapsed="0.049851"/>
</kw>
<msg time="2026-04-08T00:52:35.714096" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T00:52:35.714144" level="INFO">${message_write} = @root&gt;log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "s "u "i "t "e "[C "/ "w "/ "w "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:52:35.663735" elapsed="0.050473"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T00:52:35.791740" level="INFO">"l "o "w "p "l "u "g "i "n "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "o "n "l "y "- "v "a "n "a "d "i "u "m "/ "t "e "s "t "/ "c "s "i "t "/ "s "u "i "t "e "s "/ "o "p "e "n "f "l "o "w "p "l "u "g "i "n "/ "[78CC "[A[78Cl
 "u "s "t "e "r "i "n "g "/ "0 "3 "0 "_ "_ "C "l "u "s "t "e "r "_ "H "A "_ "D "a "t "a "_ "R "e "c "o "v "e "r "y "_ "L "e "a "d "e "r "_ "F "o "l "l "o "w "e "r "_ "F "a "i "l "o "v "e "r ". "r "o "b "o "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T00:52:35.714822" elapsed="0.077221"/>
</kw>
<msg time="2026-04-08T00:52:35.792244" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T00:52:35.792317" level="INFO">${message_wait} =  "l "o "w "p "l "u "g "i "n "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "o "n "l "y "- "v "a "n ...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:52:35.714424" elapsed="0.077948"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:35.792910" elapsed="0.000035"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:35.792520" elapsed="0.000476"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:35.792480" elapsed="0.000556"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:35.793749" level="INFO"> "l "o "w "p "l "u "g "i "n "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "o "n "l "y "- "v "a "n "a "d "i "u "m "/ "t "e "s "t "/ "c "s "i "t "/ "s "u "i "t "e "s "/ "o "p "e "n "f "l "o "w "p "l "u "g "i "n "/ "[78CC "[A[78Cl
 "u "s "t "e "r "i "n "g "/ "0 "3 "0 "_ "_ "C "l "u "s "t "e "r "_ "H "A "_ "D "a "t "a "_ "R "e "c "o "v "e "r "y "_ "L "e "a "d "e "r "_ "F "o "l "l "o "w "e "r "_ "F "a "i "l "o "v "e "r ". "r "o "b "o "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:35.793298" elapsed="0.000602"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:35.794385" elapsed="0.000034"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:35.794026" elapsed="0.000445"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:35.793979" elapsed="0.000527"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T00:52:35.794559" elapsed="0.000053"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:52:35.796527" elapsed="0.000887"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:52:35.797857" elapsed="0.000738"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:52:35.798985" elapsed="0.000226"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:52:35.795864" elapsed="0.003483"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T00:52:35.795003" elapsed="0.004395"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T00:52:35.662190" elapsed="0.137310"/>
</kw>
<msg time="2026-04-08T00:52:35.799598" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:52:35.799644" level="INFO">${message} =  "l "o "w "p "l "u "g "i "n "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "o "n "l "y "- "v "a "n ...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:52:35.661641" elapsed="0.138041"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T00:52:35.799870" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-08T00:52:35.799761" elapsed="0.000170"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:35.799743" elapsed="0.000212"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:35.800386" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:35.800732" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T00:52:35.800864" elapsed="0.000017"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T00:52:35.660980" elapsed="0.139997"/>
</kw>
<msg time="2026-04-08T00:52:35.801074" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:52:35.801120" level="INFO">${output} =  "l "o "w "p "l "u "g "i "n "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "o "n "l "y "- "v "a "n ...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:52:35.656347" elapsed="0.144815"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:35.801524" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:35.801270" elapsed="0.000308"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:35.801251" elapsed="0.000351"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T00:52:35.656205" elapsed="0.145420"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:52:35.806985" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:52:35.806874" elapsed="0.000157"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:35.806854" elapsed="0.000199"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:52:35.808097" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:52:35.807989" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:35.807971" elapsed="0.000211"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:52:35.808593" level="INFO">${karaf_connection_index} = 84</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:52:35.808329" elapsed="0.000291"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:52:35.808972" level="INFO">${current_connection_index} = None</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:52:35.808777" elapsed="0.000222"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T00:52:35.857219" level="INFO">@root&gt;log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "s "u "i "t "e "[C "/ "w "/ "w "o "r "k "s "p "a "c "e "/ "o "p "e "[78Cn "[A[78Cf</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T00:52:35.809537" elapsed="0.047964"/>
</kw>
<msg time="2026-04-08T00:52:35.857690" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T00:52:35.857740" level="INFO">${message_write} = @root&gt;log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "s "u "i "t "e "[C "/ "w "/ "w "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:52:35.809166" elapsed="0.048613"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T00:52:35.944968" level="INFO">"l "o "w "p "l "u "g "i "n "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "o "n "l "y "- "v "a "n "a "d "i "u "m "/ "t "e "s "t "/ "c "s "i "t "/ "s "u "i "t "e "s "/ "o "p "e "n "f "l "o "w "p "l "u "g "i "n "/ "[78CC "[A[78Cl
 "u "s "t "e "r "i "n "g "/ "0 "3 "0 "_ "_ "C "l "u "s "t "e "r "_ "H "A "_ "D "a "t "a "_ "R "e "c "o "v "e "r "y "_ "L "e "a "d "e "r "_ "F "o "l "l "o "w "e "r "_ "F "a "i "l "o "v "e "r ". "r "o "b "o "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T00:52:35.858600" elapsed="0.086611"/>
</kw>
<msg time="2026-04-08T00:52:35.945326" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T00:52:35.945373" level="INFO">${message_wait} =  "l "o "w "p "l "u "g "i "n "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "o "n "l "y "- "v "a "n ...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:52:35.858066" elapsed="0.087345"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:35.945803" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:35.945524" elapsed="0.000336"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:35.945490" elapsed="0.000400"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:35.946385" level="INFO"> "l "o "w "p "l "u "g "i "n "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "o "n "l "y "- "v "a "n "a "d "i "u "m "/ "t "e "s "t "/ "c "s "i "t "/ "s "u "i "t "e "s "/ "o "p "e "n "f "l "o "w "p "l "u "g "i "n "/ "[78CC "[A[78Cl
 "u "s "t "e "r "i "n "g "/ "0 "3 "0 "_ "_ "C "l "u "s "t "e "r "_ "H "A "_ "D "a "t "a "_ "R "e "c "o "v "e "r "y "_ "L "e "a "d "e "r "_ "F "o "l "l "o "w "e "r "_ "F "a "i "l "o "v "e "r ". "r "o "b "o "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:35.946041" elapsed="0.000449"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:35.946779" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:35.946559" elapsed="0.000274"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:35.946540" elapsed="0.000316"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T00:52:35.946895" elapsed="0.000133"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:52:35.948426" elapsed="0.000591"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:52:35.949333" elapsed="0.000509"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:52:35.950106" elapsed="0.000230"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:52:35.947948" elapsed="0.002526"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T00:52:35.947352" elapsed="0.003172"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T00:52:35.807737" elapsed="0.142890"/>
</kw>
<msg time="2026-04-08T00:52:35.950727" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:52:35.950772" level="INFO">${message} =  "l "o "w "p "l "u "g "i "n "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "o "n "l "y "- "v "a "n ...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:52:35.807223" elapsed="0.143586"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T00:52:35.950996" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-08T00:52:35.950889" elapsed="0.000168"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:35.950870" elapsed="0.000212"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 2,
close the previous connection. In any case create a new connection
to karaf console for 2, set correct prompt set and login to karaf console.
Store connection index for 2 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:35.951524" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:35.951874" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T00:52:35.951945" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T00:52:35.806576" elapsed="0.145480"/>
</kw>
<msg time="2026-04-08T00:52:35.952157" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:52:35.952219" level="INFO">${output} =  "l "o "w "p "l "u "g "i "n "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "o "n "l "y "- "v "a "n ...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:52:35.801896" elapsed="0.150361"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:35.952585" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:35.952337" elapsed="0.000301"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:35.952319" elapsed="0.000370"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T00:52:35.801755" elapsed="0.150960"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:52:35.958270" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:52:35.958132" elapsed="0.000184"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:35.958113" elapsed="0.000225"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:52:35.959404" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:52:35.959297" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:35.959279" elapsed="0.000191"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:52:35.959875" level="INFO">${karaf_connection_index} = 86</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:52:35.959611" elapsed="0.000291"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:52:35.960289" level="INFO">${current_connection_index} = None</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:52:35.960059" elapsed="0.000257"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T00:52:36.005805" level="INFO">@root&gt;log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "s "u "i "t "e "[C "/ "w "/ "w "o "r "k "s "p "a "c "e "/ "o "p "e "[78Cn "[A[78Cf</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T00:52:35.960837" elapsed="0.045099"/>
</kw>
<msg time="2026-04-08T00:52:36.006065" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T00:52:36.006111" level="INFO">${message_write} = @root&gt;log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "s "u "i "t "e "[C "/ "w "/ "w "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:52:35.960474" elapsed="0.045674"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T00:52:36.078200" level="INFO">"l "o "w "p "l "u "g "i "n "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "o "n "l "y "- "v "a "n "a "d "i "u "m "/ "t "e "s "t "/ "c "s "i "t "/ "s "u "i "t "e "s "/ "o "p "e "n "f "l "o "w "p "l "u "g "i "n "/ "[78CC "[A[78Cl
 "u "s "t "e "r "i "n "g "/ "0 "3 "0 "_ "_ "C "l "u "s "t "e "r "_ "H "A "_ "D "a "t "a "_ "R "e "c "o "v "e "r "y "_ "L "e "a "d "e "r "_ "F "o "l "l "o "w "e "r "_ "F "a "i "l "o "v "e "r ". "r "o "b "o "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T00:52:36.006701" elapsed="0.071762"/>
</kw>
<msg time="2026-04-08T00:52:36.078595" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T00:52:36.078642" level="INFO">${message_wait} =  "l "o "w "p "l "u "g "i "n "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "o "n "l "y "- "v "a "n ...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:52:36.006360" elapsed="0.072320"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:36.079078" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:36.078798" elapsed="0.000339"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:36.078767" elapsed="0.000418"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:36.079671" level="INFO"> "l "o "w "p "l "u "g "i "n "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "o "n "l "y "- "v "a "n "a "d "i "u "m "/ "t "e "s "t "/ "c "s "i "t "/ "s "u "i "t "e "s "/ "o "p "e "n "f "l "o "w "p "l "u "g "i "n "/ "[78CC "[A[78Cl
 "u "s "t "e "r "i "n "g "/ "0 "3 "0 "_ "_ "C "l "u "s "t "e "r "_ "H "A "_ "D "a "t "a "_ "R "e "c "o "v "e "r "y "_ "L "e "a "d "e "r "_ "F "o "l "l "o "w "e "r "_ "F "a "i "l "o "v "e "r ". "r "o "b "o "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:36.079335" elapsed="0.000440"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:36.080058" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:36.079842" elapsed="0.000270"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:36.079823" elapsed="0.000312"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T00:52:36.080187" elapsed="0.000037"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:52:36.081506" elapsed="0.000568"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:52:36.082386" elapsed="0.000469"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:52:36.083112" elapsed="0.000211"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:52:36.081057" elapsed="0.002396"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T00:52:36.080494" elapsed="0.003024"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T00:52:35.958994" elapsed="0.124625"/>
</kw>
<msg time="2026-04-08T00:52:36.083715" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:52:36.083759" level="INFO">${message} =  "l "o "w "p "l "u "g "i "n "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "o "n "l "y "- "v "a "n ...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:52:35.958488" elapsed="0.125308"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T00:52:36.083979" elapsed="0.000029"/>
</return>
<status status="PASS" start="2026-04-08T00:52:36.083873" elapsed="0.000170"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:36.083854" elapsed="0.000214"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 3,
close the previous connection. In any case create a new connection
to karaf console for 3, set correct prompt set and login to karaf console.
Store connection index for 3 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:36.084496" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:36.084837" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T00:52:36.084908" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T00:52:35.957831" elapsed="0.127187"/>
</kw>
<msg time="2026-04-08T00:52:36.085115" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:52:36.085164" level="INFO">${output} =  "l "o "w "p "l "u "g "i "n "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "o "n "l "y "- "v "a "n ...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:52:35.952996" elapsed="0.132245"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:36.085575" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:36.085322" elapsed="0.000358"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:36.085304" elapsed="0.000403"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T00:52:35.952854" elapsed="0.132877"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-08T00:52:35.656012" elapsed="0.429754"/>
</for>
<arg>Starting suite ${SUITE_SOURCE}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-08T00:52:35.653738" elapsed="0.432089"/>
</kw>
<doc>Log suite name to karaf log, useful in suite setup.</doc>
<status status="PASS" start="2026-04-08T00:52:35.647363" elapsed="0.438523"/>
</kw>
<arg>KarafKeywords.Log_Test_Suite_Start_To_Controller_Karaf</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:52:35.646903" elapsed="0.439029"/>
</kw>
<doc>Prepare both FailFast and Karaf logging, log that the caller suite has started.
This keyword is to be used in suite setup, and without it the other keywords may not work properly.</doc>
<status status="PASS" start="2026-04-08T00:52:33.104853" elapsed="2.981133"/>
</kw>
<test id="s1-s3-t1" name="Check Shards Status Before Leader Restart" line="18">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-08T00:52:36.089643" elapsed="0.000207"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-08T00:52:36.089380" elapsed="0.000523"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:52:36.090889" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:52:36.090781" elapsed="0.000180"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:36.090763" elapsed="0.000222"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:52:36.095740" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:52:36.095634" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:36.095616" elapsed="0.000191"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:52:36.096814" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:52:36.096432" elapsed="0.000409"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:52:36.097320" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:52:36.097000" elapsed="0.000346"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:52:36.097390" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:52:36.097541" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:52:36.096036" elapsed="0.001530"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:52:36.102655" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:52:36.102548" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:36.102530" elapsed="0.000191"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:52:36.103855" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:52:36.103748" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:36.103730" elapsed="0.000192"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:52:36.104386" level="INFO">${karaf_connection_index} = 82</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:52:36.104063" elapsed="0.000350"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:52:36.104787" level="INFO">${current_connection_index} = None</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:52:36.104571" elapsed="0.000242"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T00:52:36.153954" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T00:52:36.105323" elapsed="0.048737"/>
</kw>
<msg time="2026-04-08T00:52:36.154248" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T00:52:36.154296" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:52:36.104971" elapsed="0.049362"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T00:52:36.228593" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "a "d "e "r "[C "F "o "l "l "o "w "e "r "[C "F "a "i "l "o "v "e "r ". "C "h "e "c "k "[C "S "h "a "r "d "s "[C "S "t "a "t "[78Cu "[A[78Cs
 "[C "B "e "f "o "r "e "[C "L "e "a "d "e "r "[C "R "e "s "t "a "r "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T00:52:36.154854" elapsed="0.073870"/>
</kw>
<msg time="2026-04-08T00:52:36.228953" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T00:52:36.229036" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:52:36.154508" elapsed="0.074567"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:36.229424" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:36.229162" elapsed="0.000319"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:36.229139" elapsed="0.000367"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:36.229956" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "a "d "e "r "[C "F "o "l "l "o "w "e "r "[C "F "a "i "l "o "v "e "r ". "C "h "e "c "k "[C "S "h "a "r "d "s "[C "S "t "a "t "[78Cu "[A[78Cs
 "[C "B "e "f "o "r "e "[C "L "e "a "d "e "r "[C "R "e "s "t "a "r "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:36.229646" elapsed="0.000399"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:36.230359" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:36.230115" elapsed="0.000300"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:36.230096" elapsed="0.000342"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T00:52:36.230472" elapsed="0.000030"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:52:36.231932" elapsed="0.000791"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:52:36.232999" elapsed="0.000485"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:52:36.233744" elapsed="0.000351"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:52:36.231317" elapsed="0.002894"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T00:52:36.230751" elapsed="0.003525"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T00:52:36.103448" elapsed="0.130929"/>
</kw>
<msg time="2026-04-08T00:52:36.234468" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:52:36.234512" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:52:36.102870" elapsed="0.131679"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T00:52:36.234731" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-08T00:52:36.234626" elapsed="0.000163"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:36.234607" elapsed="0.000205"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:36.235221" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:36.235562" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T00:52:36.235633" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T00:52:36.102215" elapsed="0.133523"/>
</kw>
<msg time="2026-04-08T00:52:36.235830" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:52:36.235873" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:52:36.097931" elapsed="0.137979"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:36.236246" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:36.235985" elapsed="0.000316"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:36.235968" elapsed="0.000355"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T00:52:36.097790" elapsed="0.138556"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:52:36.241486" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:52:36.241379" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:36.241360" elapsed="0.000193"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:52:36.242734" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:52:36.242583" elapsed="0.000201"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:36.242565" elapsed="0.000242"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:52:36.243359" level="INFO">${karaf_connection_index} = 84</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:52:36.242951" elapsed="0.000436"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:52:36.243764" level="INFO">${current_connection_index} = None</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:52:36.243547" elapsed="0.000243"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T00:52:36.286619" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T00:52:36.244317" elapsed="0.042402"/>
</kw>
<msg time="2026-04-08T00:52:36.286892" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T00:52:36.286939" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:52:36.243948" elapsed="0.043028"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T00:52:36.371230" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "a "d "e "r "[C "F "o "l "l "o "w "e "r "[C "F "a "i "l "o "v "e "r ". "C "h "e "c "k "[C "S "h "a "r "d "s "[C "S "t "a "t "[78Cu "[A[78Cs
 "[C "B "e "f "o "r "e "[C "L "e "a "d "e "r "[C "R "e "s "t "a "r "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T00:52:36.287554" elapsed="0.083809"/>
</kw>
<msg time="2026-04-08T00:52:36.371529" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T00:52:36.371576" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:52:36.287148" elapsed="0.084467"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:36.371938" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:36.371699" elapsed="0.000294"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:36.371678" elapsed="0.000340"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:36.372495" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "a "d "e "r "[C "F "o "l "l "o "w "e "r "[C "F "a "i "l "o "v "e "r ". "C "h "e "c "k "[C "S "h "a "r "d "s "[C "S "t "a "t "[78Cu "[A[78Cs
 "[C "B "e "f "o "r "e "[C "L "e "a "d "e "r "[C "R "e "s "t "a "r "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:36.372165" elapsed="0.000418"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:36.372865" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:36.372651" elapsed="0.000268"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:36.372633" elapsed="0.000309"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T00:52:36.372976" elapsed="0.000030"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:52:36.374621" elapsed="0.000807"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:52:36.375705" elapsed="0.000455"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:52:36.376444" elapsed="0.000352"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:52:36.373986" elapsed="0.002909"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T00:52:36.373267" elapsed="0.003692"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T00:52:36.242282" elapsed="0.134776"/>
</kw>
<msg time="2026-04-08T00:52:36.377148" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:52:36.377219" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:52:36.241703" elapsed="0.135554"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T00:52:36.377442" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-08T00:52:36.377335" elapsed="0.000166"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:36.377316" elapsed="0.000209"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 2,
close the previous connection. In any case create a new connection
to karaf console for 2, set correct prompt set and login to karaf console.
Store connection index for 2 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:36.377924" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:36.378331" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T00:52:36.378403" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T00:52:36.241010" elapsed="0.137499"/>
</kw>
<msg time="2026-04-08T00:52:36.378601" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:52:36.378644" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:52:36.236609" elapsed="0.142071"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:36.378998" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:36.378753" elapsed="0.000297"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:36.378736" elapsed="0.000337"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T00:52:36.236470" elapsed="0.142626"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:52:36.384263" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:52:36.384137" elapsed="0.000171"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:36.384118" elapsed="0.000212"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:52:36.385567" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:52:36.385460" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:36.385441" elapsed="0.000194"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:52:36.386073" level="INFO">${karaf_connection_index} = 86</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:52:36.385777" elapsed="0.000322"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:52:36.386489" level="INFO">${current_connection_index} = None</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:52:36.386275" elapsed="0.000240"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T00:52:36.429404" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T00:52:36.387002" elapsed="0.042498"/>
</kw>
<msg time="2026-04-08T00:52:36.429673" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T00:52:36.429720" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:52:36.386671" elapsed="0.043085"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T00:52:36.521764" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "a "d "e "r "[C "F "o "l "l "o "w "e "r "[C "F "a "i "l "o "v "e "r ". "C "h "e "c "k "[C "S "h "a "r "d "s "[C "S "t "a "t "[78Cu "[A[78Cs
 "[C "B "e "f "o "r "e "[C "L "e "a "d "e "r "[C "R "e "s "t "a "r "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T00:52:36.430285" elapsed="0.091611"/>
</kw>
<msg time="2026-04-08T00:52:36.522056" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T00:52:36.522102" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:52:36.429925" elapsed="0.092214"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:36.522466" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:36.522243" elapsed="0.000278"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:36.522222" elapsed="0.000323"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:36.522984" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "a "d "e "r "[C "F "o "l "l "o "w "e "r "[C "F "a "i "l "o "v "e "r ". "C "h "e "c "k "[C "S "h "a "r "d "s "[C "S "t "a "t "[78Cu "[A[78Cs
 "[C "B "e "f "o "r "e "[C "L "e "a "d "e "r "[C "R "e "s "t "a "r "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:36.522685" elapsed="0.000384"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:36.523374" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:36.523136" elapsed="0.000292"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:36.523118" elapsed="0.000333"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T00:52:36.523483" elapsed="0.000028"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:52:36.524926" elapsed="0.000802"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:52:36.526000" elapsed="0.000460"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:52:36.526720" elapsed="0.000348"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:52:36.524325" elapsed="0.002864"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T00:52:36.523776" elapsed="0.003480"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T00:52:36.385029" elapsed="0.142326"/>
</kw>
<msg time="2026-04-08T00:52:36.527446" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:52:36.527489" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:52:36.384479" elapsed="0.143045"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T00:52:36.527703" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-08T00:52:36.527599" elapsed="0.000189"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:36.527581" elapsed="0.000233"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 3,
close the previous connection. In any case create a new connection
to karaf console for 3, set correct prompt set and login to karaf console.
Store connection index for 3 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:36.528213" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:36.530113" elapsed="0.000027"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T00:52:36.530204" elapsed="0.000017"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T00:52:36.383792" elapsed="0.146528"/>
</kw>
<msg time="2026-04-08T00:52:36.530412" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:52:36.530455" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:52:36.379400" elapsed="0.151091"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:36.530815" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:36.530566" elapsed="0.000302"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:36.530549" elapsed="0.000342"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T00:52:36.379257" elapsed="0.151656"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-08T00:52:36.097619" elapsed="0.433322"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-08T00:52:36.095273" elapsed="0.435722"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-08T00:52:36.090494" elapsed="0.440554"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:52:36.090057" elapsed="0.441034"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-08T00:52:36.087071" elapsed="0.444070"/>
</kw>
<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-04-08T00:52:36.551164" elapsed="0.000248"/>
</kw>
<msg time="2026-04-08T00:52:36.551459" 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>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:52:36.550542" elapsed="0.000971"/>
</kw>
<arg>phosphorus</arg>
<arg>${kw_name}</arg>
<arg>@{varargs}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Compare ${lower_bound} to vanadium and in case vanadium 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-04-08T00:52:36.550075" elapsed="0.001512"/>
</kw>
<msg time="2026-04-08T00:52:36.551632" 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-04-08T00:52:36.542005" elapsed="0.009670"/>
</kw>
<arg>Collections.Remove Values From List</arg>
<arg>${SHARD_OPER_LIST}</arg>
<arg>entity-ownership</arg>
<doc>Compare phosphorus to vanadium and in case vanadium is at least phosphorus,
run ${kw_name} @{varargs} &amp;{kwargs} and return its value.</doc>
<status status="PASS" start="2026-04-08T00:52:36.541615" elapsed="0.010132"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:36.552228" 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-04-08T00:52:36.551958" elapsed="0.000316"/>
</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-04-08T00:52:36.557351" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:52:36.556932" elapsed="0.000447"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:52:36.557862" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:52:36.557538" elapsed="0.000353"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:52:36.557937" elapsed="0.000037"/>
</return>
<msg time="2026-04-08T00:52:36.558101" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:52:36.556565" elapsed="0.001563"/>
</kw>
<kw name="Sort List" owner="Collections">
<arg>${index_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="PASS" start="2026-04-08T00:52:36.558306" elapsed="0.000162"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:52:36.558973" level="INFO">${ds_type} = operational</msg>
<var>${ds_type}</var>
<arg>'${shard_type}' != 'config'</arg>
<arg>operational</arg>
<arg>config</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:52:36.558630" elapsed="0.000370"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:52:36.559416" level="INFO">${leader_list} = []</msg>
<var>${leader_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:52:36.559161" elapsed="0.000282"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:52:36.559828" level="INFO">${follower_list} = []</msg>
<var>${follower_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:52:36.559591" elapsed="0.000262"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_Raft_State_Of_Shard_At_Member" owner="ClusterManagement">
<kw name="Get_Raft_Property_From_Shard_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:36.562746" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:36.562409" elapsed="0.000364"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:52:36.562819" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:52:36.562967" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:52:36.562037" elapsed="0.000955"/>
</kw>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Get_As_Json_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:36.645194" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:36.644803" elapsed="0.000420"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:52:36.646006" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:52:36.645717" elapsed="0.000371">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-08T00:52:36.646197" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:52:36.645384" elapsed="0.000840"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:52:36.646771" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:52:36.646388" elapsed="0.000411"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T00:52:36.647102" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-08T00:52:36.647299" level="INFO">${template} = /rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T00:52:36.646958" elapsed="0.000367"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:36.647727" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:36.647483" elapsed="0.000289"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:36.648874" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:36.648614" elapsed="0.000305"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-08T00:52:36.649417" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-08T00:52:36.649126" elapsed="0.000317"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:36.649756" elapsed="0.000022"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:36.649956" elapsed="0.000024"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:36.650128" elapsed="0.000021"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-08T00:52:36.649625" elapsed="0.000577"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-08T00:52:36.649491" elapsed="0.000743"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-08T00:52:36.650278" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:52:36.650437" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-08T00:52:36.648133" elapsed="0.002330"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:36.647841" elapsed="0.002654"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:36.650665" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:36.650520" elapsed="0.000201"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:36.647821" elapsed="0.002921"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:52:36.651367" level="INFO">${final_text} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:36.650882" elapsed="0.000513"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T00:52:36.651443" 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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="PASS" start="2026-04-08T00:52:36.644192" elapsed="0.007375"/>
</kw>
<msg time="2026-04-08T00:52:36.651619" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:52:36.631907" elapsed="0.019791"/>
</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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:36.663652" elapsed="0.000041"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:36.675740" elapsed="0.000041"/>
</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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:36.687628" elapsed="0.000040"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:36.688444" elapsed="0.000040"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:36.689207" elapsed="0.000038"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:36.689758" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:36.689612" elapsed="0.000202"/>
</branch>
<status status="NOT RUN" start="2026-04-08T00:52:36.689596" elapsed="0.000241"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:36.689995" elapsed="0.000021"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:36.690234" elapsed="0.000023"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:36.690423" elapsed="0.000022"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-08T00:52:36.689548" elapsed="0.000950"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-08T00:52:36.689327" elapsed="0.001210"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:36.691230" elapsed="0.000036"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-08T00:52:36.691349" elapsed="0.000047"/>
</return>
<msg time="2026-04-08T00:52:36.691569" level="INFO">${uri} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-08T00:52:36.625853" elapsed="0.065822"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:52:36.694508" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:52:36.694261" elapsed="0.000312">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-08T00:52:36.694763" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:52:36.693812" elapsed="0.000995"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:36.695338" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:36.694936" elapsed="0.000469"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:36.696025" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:36.695709" elapsed="0.000345"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:36.695444" elapsed="0.000659"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:36.694887" elapsed="0.001255"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:52:36.699366" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:52:36.696871" elapsed="0.002541"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-08T00:52:36.699487" elapsed="0.000062"/>
</return>
<msg time="2026-04-08T00:52:36.699797" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:52:36.692688" elapsed="0.007253"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:52:36.702626" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:52:36.702386" elapsed="0.000302">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-08T00:52:36.702871" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:52:36.701941" elapsed="0.000975"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-08T00:52:36.703307" elapsed="0.000080"/>
</return>
<status status="PASS" start="2026-04-08T00:52:36.703045" elapsed="0.000408"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:36.702995" elapsed="0.000498"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:36.704233" elapsed="0.000037"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:36.704960" elapsed="0.000035"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-08T00:52:36.705070" elapsed="0.000048"/>
</return>
<msg time="2026-04-08T00:52:36.707164" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:52:36.700744" elapsed="0.006539"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:36.711066" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:36.710682" elapsed="0.000485"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:36.712317" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:36.711895" elapsed="0.000520"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:52:36.731438" level="INFO">GET Request : url=http://10.30.170.48:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 path_url=/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:52:36.732424" level="INFO">GET Response : url=http://10.30.170.48:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 status=200, reason=OK 
 headers={'Set-Cookie': 'JSESSIONID=node01jewze00gqgu8yuon50tdwq65226.node0; Path=/rests; HttpOnly, rememberMe=deleteMe; Path=/rests; Max-Age=0; Expires=Tue, 07-Apr-2026 00:52:36 GMT; SameSite=lax', 'Expires': 'Thu, 01 Jan 1970 00:00:00 GMT', 'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Transfer-Encoding': 'chunked'} 
 body={"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","hidden-symmetric-keys","encrypted-private-keys","asymmetrically-encrypted-value-format","cms-encrypted-data-format","cleartext-private-keys","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["ssh-client-keepalives","client-ident-hostbased","client-ident-publickey","client-ident-password"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-ex... (set the log level to DEBUG or TRACE to see the full content) 
 </msg>
<msg time="2026-04-08T00:52:36.732888" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:52:36.714761" elapsed="0.018189"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:36.712542" elapsed="0.020553"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:36.733799" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:36.733244" elapsed="0.000723"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:36.712490" elapsed="0.021558"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:36.742574" level="INFO">{"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","hidden-symmetric-keys","encrypted-private-keys","asymmetrically-encrypted-value-format","cms-encrypted-data-format","cleartext-private-keys","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["ssh-client-keepalives","client-ident-hostbased","client-ident-publickey","client-ident-password"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-experimenter-types?revision=2015-10-20","namespace":"urn:opendaylight:openflowplugin:experimenter:types","conformance-type":"import"},{"name":"ietf-ip_2018-02-22","revision":"2018-02-22","schema":"/rests/modules/ietf-ip?revision=2018-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-ip","conformance-type":"import","feature":["ipv6-privacy-autoconf","ipv4-non-contiguous-netmasks"]},{"name":"ietf-tcp-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-client","conformance-type":"import","feature":["local-binding-supported","tcp-client-keepalives"]},{"name":"node-config_2014-10-15","revision":"2014-10-15","schema":"/rests/modules/node-config?revision=2014-10-15","namespace":"urn:opendaylight:module:config","conformance-type":"import"},{"name":"ietf-restconf_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf","conformance-type":"import"},{"name":"ietf-datastores_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-datastores?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-datastores","conformance-type":"import"},{"name":"ietf-yang-patch_2017-02-22","revision":"2017-02-22","schema":"/rests/modules/ietf-yang-patch?revision=2017-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-patch","conformance-type":"import"},{"name":"sal-group_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-group?revision=2013-09-18","namespace":"urn:opendaylight:group:service","conformance-type":"import"},{"name":"odl-codegen-extensions_2024-06-27","revision":"2024-06-27","schema":"/rests/modules/odl-codegen-extensions?revision=2024-06-27","namespace":"urn:opendaylight:yang:extension:codegen","conformance-type":"import"},{"name":"sal-meter_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-meter?revision=2013-09-18","namespace":"urn:opendaylight:meter:service","conformance-type":"import"},{"name":"ietf-interfaces_2018-02-20","revision":"2018-02-20","schema":"/rests/modules/ietf-interfaces?revision=2018-02-20","namespace":"urn:ietf:params:xml:ns:yang:ietf-interfaces","conformance-type":"import","feature":["pre-provisioning","if-mib","arbitrary-names"]},{"name":"opendaylight-l2-types_2013-08-27","revision":"2013-08-27","schema":"/rests/modules/opendaylight-l2-types?revision=2013-08-27","namespace":"urn:opendaylight:l2:types","conformance-type":"import"},{"name":"opendaylight-flow-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-flow-types?revision=2013-10-26","namespace":"urn:opendaylight:flow:types","conformance-type":"import"},{"name":"lldp-speaker-config_2016-05-12","revision":"2016-05-12","schema":"/rests/modules/lldp-speaker-config?revision=2016-05-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker:config","conformance-type":"import"},{"name":"aaa-cert_2015-11-26","revision":"2015-11-26","schema":"/rests/modules/aaa-cert?revision=2015-11-26","namespace":"urn:opendaylight:yang:aaa:cert","conformance-type":"import"},{"name":"openflow-action_2015-02-03","revision":"2015-02-03","schema":"/rests/modules/openflow-action?revision=2015-02-03","namespace":"urn:opendaylight:openflow:common:action","conformance-type":"import"},{"name":"openflow-approved-extensions_2016-08-02","revision":"2016-08-02","schema":"/rests/modules/openflow-approved-extensions?revision=2016-08-02","namespace":"urn:opendaylight:openflow:approved:extensions","conformance-type":"import"},{"name":"nc-notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/nc-notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netmod:notification","conformance-type":"import"},{"name":"ietf-netconf-nmda_2019-01-07","revision":"2019-01-07","schema":"/rests/modules/ietf-netconf-nmda?revision=2019-01-07","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-nmda","conformance-type":"import","feature":["with-defaults","origin"]},{"name":"ietf-tcp-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-common","conformance-type":"import","feature":["keepalives-supported"]},{"name":"network-topology_2013-10-21","revision":"2013-10-21","schema":"/rests/modules/network-topology?revision=2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:network-topology","conformance-type":"import"},{"name":"aaa-encrypt-service-config_2024-02-02","revision":"2024-02-02","schema":"/rests/modules/aaa-encrypt-service-config?revision=2024-02-02","namespace":"config:aaa:authn:encrypt:service:config","conformance-type":"import"},{"name":"openflow-instruction_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-instruction?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:instruction","conformance-type":"import"},{"name":"ietf-tls-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-client","conformance-type":"import","feature":["client-ident-x509-cert","server-auth-x509-cert"]},{"name":"opendaylight-group-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-group-statistics?revision=2013-11-11","namespace":"urn:opendaylight:group:statistics","conformance-type":"import"},{"name":"cluster-admin_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/cluster-admin?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:cluster:admin","conformance-type":"import"},{"name":"opendaylight-flow-statistics_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-flow-statistics?revision=2013-08-19","namespace":"urn:opendaylight:flow:statistics","conformance-type":"import"},{"name":"opendaylight-table-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-table-types?revision=2013-10-26","namespace":"urn:opendaylight:table:types","conformance-type":"import"},{"name":"forwarding-rules-manager-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/forwarding-rules-manager-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:forwardingrules-manager:config","conformance-type":"import"},{"name":"odl-srm-types_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-types?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:types","conformance-type":"import"},{"name":"ietf-x509-cert-to-name_2014-12-10","revision":"2014-12-10","schema":"/rests/modules/ietf-x509-cert-to-name?revision=2014-12-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-x509-cert-to-name","conformance-type":"import"},{"name":"flow-node-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-node-inventory?revision=2013-08-19","namespace":"urn:opendaylight:flow:inventory","conformance-type":"import"},{"name":"flow-errors_2013-11-16","revision":"2013-11-16","schema":"/rests/modules/flow-errors?revision=2013-11-16","namespace":"urn:opendaylight:flow:errors","conformance-type":"import"},{"name":"ietf-netconf_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:netconf:base:1.0","conformance-type":"import","feature":["xpath","url","rollback-on-error","validate","startup","candidate","confirmed-commit","writable-running"]},{"name":"iana-ssh-public-key-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-public-key-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-public-key-algs","conformance-type":"import"},{"name":"aaa-cert-mdsal_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/aaa-cert-mdsal?revision=2016-03-21","namespace":"urn:opendaylight:yang:aaa:cert:mdsal","conformance-type":"import"},{"name":"odl-device-notification_2024-02-18","revision":"2024-02-18","schema":"/rests/modules/odl-device-notification?revision=2024-02-18","namespace":"urn:opendaylight:device:notification","conformance-type":"import"},{"name":"ietf-origin_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-origin?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-origin","conformance-type":"import"},{"name":"openflow-augments_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-augments?revision=2015-02-25","namespace":"urn:opendaylight:openflow:augments","conformance-type":"import"},{"name":"iana-ssh-encryption-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-encryption-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-encryption-algs","conformance-type":"import"},{"name":"ietf-truststore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-truststore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-truststore","conformance-type":"import","feature":["inline-definitions-supported"]},{"name":"distributed-datastore-provider_2025-01-30","revision":"2025-01-30","schema":"/rests/modules/distributed-datastore-provider?revision=2025-01-30","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:distributed-datastore-provider","conformance-type":"import"},{"name":"opendaylight-group-types_2013-10-18","revision":"2013-10-18","schema":"/rests/modules/opendaylight-group-types?revision=2013-10-18","namespace":"urn:opendaylight:group:types","conformance-type":"import"},{"name":"sal-remote-augment_2023-11-03","revision":"2023-11-03","schema":"/rests/modules/sal-remote-augment?revision=2023-11-03","namespace":"urn:sal:restconf:event:subscription","conformance-type":"import"},{"name":"opendaylight-ipv6-arbitrary-bitmask-fields_2016-02-24","revision":"2016-02-24","schema":"/rests/modules/opendaylight-ipv6-arbitrary-bitmask-fields?revision=2016-02-24","namespace":"urn:opendaylight:opendaylight-ipv6-arbitrary-bitmask-fields","conformance-type":"import"},{"name":"sal-flows-batch_2016-03-14","revision":"2016-03-14","schema":"/rests/modules/sal-flows-batch?revision=2016-03-14","namespace":"urn:opendaylight:flows:service","conformance-type":"import"},{"name":"ietf-tls-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-common","conformance-type":"import","feature":["tls12","hello-params","tls13"]},{"name":"openflow-types_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-types?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:types","conformance-type":"import"},{"name":"ietf-netconf-with-defaults_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf-with-defaults?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults","conformance-type":"import"},{"name":"odl-srm-ops_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-ops?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:ops","conformance-type":"import"},{"name":"odl-general-entity_2015-09-30","revision":"2015-09-30","schema":"/rests/modules/odl-general-entity?revision=2015-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:mdsal:core:general-entity","conformance-type":"import"},{"name":"iana-ssh-key-exchange-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-key-exchange-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-key-exchange-algs","conformance-type":"import"},{"name":"node-ssl-connection-error_2019-07-23","revision":"2019-07-23","schema":"/rests/modules/node-ssl-connection-error?revision=2019-07-23","namespace":"urn:opendaylight:node-ssl-connection-error:service","conformance-type":"import"},{"name":"openflow-protocol_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-protocol?revision=2013-07-31","namespace":"urn:opendaylight:openflow:protocol","conformance-type":"import"},{"name":"ietf-udp-server_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-server?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-server","conformance-type":"import"},{"name":"ietf-keystore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-keystore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-keystore","conformance-type":"import","feature":["asymmetric-keys","inline-definitions-supported"]},{"name":"aaa_2016-12-14","revision":"2016-12-14","schema":"/rests/modules/aaa?revision=2016-12-14","namespace":"urn:opendaylight:params:xml:ns:yang:aaa","conformance-type":"import"},{"name":"aaa-cert-rpc_2015-12-15","revision":"2015-12-15","schema":"/rests/modules/aaa-cert-rpc?revision=2015-12-15","namespace":"urn:opendaylight:yang:aaa:cert:rpc","conformance-type":"import"},{"name":"system-notifications_2013-09-27","revision":"2013-09-27","schema":"/rests/modules/system-notifications?revision=2013-09-27","namespace":"urn:opendaylight:openflow:system","conformance-type":"import"},{"name":"sal-flat-batch_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/sal-flat-batch?revision=2016-03-21","namespace":"urn:opendaylight:flat-batch:service","conformance-type":"import"},{"name":"notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netconf:notification:1.0","conformance-type":"import"},{"name":"sal-remote_2014-01-14","revision":"2014-01-14","schema":"/rests/modules/sal-remote?revision=2014-01-14","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:remote","conformance-type":"import"},{"name":"yang-ext_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/yang-ext?revision=2013-07-09","namespace":"urn:opendaylight:yang:extension:yang-ext","conformance-type":"import"},{"name":"opendaylight-multipart-types_2017-01-12","revision":"2017-01-12","schema":"/rests/modules/opendaylight-multipart-types?revision=2017-01-12","namespace":"urn:opendaylight:multipart:types","conformance-type":"import"},{"name":"opendaylight-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-inventory?revision=2013-08-19","namespace":"urn:opendaylight:inventory","conformance-type":"import"},{"name":"sal-queue_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-queue?revision=2015-03-05","namespace":"urn:opendaylight:queue:service","conformance-type":"import"},{"name":"sal-groups-batch_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/sal-groups-batch?revision=2016-03-15","namespace":"urn:opendaylight:groups:service","conformance-type":"import"},{"name":"arbitrator-reconcile_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/arbitrator-reconcile?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:arbitrator-reconcile:service","conformance-type":"import"},{"name":"ietf-yang-metadata_2016-08-05","revision":"2016-08-05","schema":"/rests/modules/ietf-yang-metadata?revision=2016-08-05","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-metadata","conformance-type":"import"},{"name":"opendaylight-arbitrary-bitmask-fields_2016-01-30","revision":"2016-01-30","schema":"/rests/modules/opendaylight-arbitrary-bitmask-fields?revision=2016-01-30","namespace":"urn:opendaylight:arbitrary:bitmask:fields","conformance-type":"import"},{"name":"ietf-udp-client_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-client?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-client","conformance-type":"import","feature":["local-binding"]},{"name":"opendaylight-meter-types_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/opendaylight-meter-types?revision=2013-09-18","namespace":"urn:opendaylight:meter:types","conformance-type":"import"},{"name":"opendaylight-action-types_2013-11-12","revision":"2013-11-12","schema":"/rests/modules/opendaylight-action-types?revision=2013-11-12","namespace":"urn:opendaylight:action:types","conformance-type":"import"},{"name":"sal-role_2015-07-27","revision":"2015-07-27","schema":"/rests/modules/sal-role?revision=2015-07-27","namespace":"urn:opendaylight:role:service","conformance-type":"import"},{"name":"openflow-provider-config_2016-05-10","revision":"2016-05-10","schema":"/rests/modules/openflow-provider-config?revision=2016-05-10","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:provider:config","conformance-type":"import"},{"name":"odl-serviceutils-upgrade_2018-07-02","revision":"2018-07-02","schema":"/rests/modules/odl-serviceutils-upgrade?revision=2018-07-02","namespace":"urn:opendaylight:serviceutils:upgrade","conformance-type":"import"},{"name":"opendaylight-match-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-match-types?revision=2013-10-26","namespace":"urn:opendaylight:model:match:types","conformance-type":"import"},{"name":"ietf-restconf-server_2024-08-14","revision":"2024-08-14","schema":"/rests/modules/ietf-restconf-server?revision=2024-08-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-server","conformance-type":"import","feature":["http-listen","https-listen"]},{"name":"reconciliation-result-state_2017-07-13","revision":"2017-07-13","schema":"/rests/modules/reconciliation-result-state?revision=2017-07-13","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:rf:state","conformance-type":"import"},{"name":"onf-extensions_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/onf-extensions?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf","conformance-type":"import"},{"name":"sal-table_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/sal-table?revision=2013-10-26","namespace":"urn:opendaylight:table:service","conformance-type":"import"},{"name":"iana-http-versions_2026-02-04","revision":"2026-02-04","schema":"/rests/modules/iana-http-versions?revision=2026-02-04","namespace":"urn:ietf:params:xml:ns:yang:iana-http-versions","conformance-type":"import"},{"name":"opendaylight-direct-statistics_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/opendaylight-direct-statistics?revision=2016-05-11","namespace":"urn:opendaylight:direct:statistics","conformance-type":"import"},{"name":"opendaylight-port-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-port-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:port","conformance-type":"import"},{"name":"sal-async-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/sal-async-config?revision=2017-06-19","namespace":"urn:opendaylight:async-config:service","conformance-type":"import"},{"name":"aaa-password-service-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-password-service-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:password:service:config","conformance-type":"import"},{"name":"ietf-yang-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-yang-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-types","conformance-type":"import"},{"name":"opendaylight-queue-statistics_2013-12-16","revision":"2013-12-16","schema":"/rests/modules/opendaylight-queue-statistics?revision=2013-12-16","namespace":"urn:opendaylight:queue:statistics","conformance-type":"import"},{"name":"sal-bundle_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/sal-bundle?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf:bundle:service","conformance-type":"import"},{"name":"ietf-restconf-subscribed-notifications_2019-11-17","revision":"2019-11-17","schema":"/rests/modules/ietf-restconf-subscribed-notifications?revision=2019-11-17","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-subscribed-notifications","conformance-type":"import"},{"name":"sal-meters-batch_2016-03-16","revision":"2016-03-16","schema":"/rests/modules/sal-meters-batch?revision=2016-03-16","namespace":"urn:opendaylight:meters:service","conformance-type":"import"},{"name":"odl-entity-owners","revision":"","schema":"/rests/modules/odl-entity-owners","namespace":"urn:opendaylight:params:xml:ns:yang:controller:entity-owners","conformance-type":"import"},{"name":"sal-experimenter-mp-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-mp-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-mp-message:service","conformance-type":"import"},{"name":"packet-processing_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/packet-processing?revision=2013-07-09","namespace":"urn:opendaylight:packet:service","conformance-type":"import"},{"name":"openflow-configuration_2014-06-30","revision":"2014-06-30","schema":"/rests/modules/openflow-configuration?revision=2014-06-30","namespace":"urn:opendaylight:openflow:config","conformance-type":"import"},{"name":"odl-srm-rpcs_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-rpcs?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:rpc","conformance-type":"import"},{"name":"ietf-netconf-acm_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-netconf-acm?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-acm","conformance-type":"import"},{"name":"iana-crypt-hash_2014-08-06","revision":"2014-08-06","schema":"/rests/modules/iana-crypt-hash?revision=2014-08-06","namespace":"urn:ietf:params:xml:ns:yang:iana-crypt-hash","conformance-type":"import","feature":["crypt-hash-sha-512","crypt-hash-sha-256","crypt-hash-md5"]},{"name":"openflow-extensible-match_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-extensible-match?revision=2015-02-25","namespace":"urn:opendaylight:openflow:oxm","conformance-type":"import"}],"module-set-id":"2"}}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:36.737945" elapsed="0.004976"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:36.737450" elapsed="0.005508"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:36.737402" elapsed="0.005581"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:36.745482" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:36.743307" elapsed="0.002221"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:36.743063" elapsed="0.002499"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:36.743045" elapsed="0.002542"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:52:36.746162" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:36.745774" elapsed="0.000469"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:36.746576" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:36.746336" elapsed="0.000298"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:36.747124" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:36.746818" elapsed="0.000332"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:36.746658" elapsed="0.000547"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:36.746316" elapsed="0.000912"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:52:36.747768" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:36.747407" elapsed="0.000387"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:36.748120" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:36.747885" elapsed="0.000310"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:36.748706" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:36.748381" elapsed="0.000351"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:36.748220" elapsed="0.000547"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:36.747866" elapsed="0.000922"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:52:36.748957" elapsed="0.000364"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:52:36.749795" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:36.749504" elapsed="0.000317"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:52:36.749995" elapsed="0.002158"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:52:36.735750" elapsed="0.016541"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:52:36.752632" elapsed="0.000063"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:52:36.752418" elapsed="0.000344"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:36.752369" elapsed="0.000429"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:52:36.761657" level="INFO">${text_normalized} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:52:36.753517" elapsed="0.008189"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:52:36.761782" elapsed="0.000065"/>
</return>
<msg time="2026-04-08T00:52:36.762103" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:52:36.707918" elapsed="0.054309"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:52:36.762683" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:52:36.762862" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="PASS" start="2026-04-08T00:52:36.571055" elapsed="0.191834"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Json_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:36.763299" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:36.762971" elapsed="0.000515"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:36.762954" elapsed="0.000560"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:52:36.763549" elapsed="0.000027"/>
</return>
<arg>session=${session}</arg>
<arg>folder=${RESTCONF_MODULES_DIR}</arg>
<arg>verify=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Add arguments sensible for JSON data, return Get_Templated response text.
Optionally, verification against JSON data (may be iterated) is called.
Only subset of JSON data is verified and returned if JMES path is specified in
file ${folder}/jmespath.expr.</doc>
<status status="PASS" start="2026-04-08T00:52:36.566954" elapsed="0.196721"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:36.563061" elapsed="0.200658"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:36.563042" elapsed="0.200701"/>
</if>
<kw name="Resolve_Shard_Type_Class" owner="ClusterManagement">
<if>
<branch type="IF" condition="'${shard_type}' == 'config'">
<return>
<value>DistributedConfigDatastore</value>
<status status="NOT RUN" start="2026-04-08T00:52:36.764359" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:52:36.764250" elapsed="0.000154"/>
</branch>
<branch type="ELSE IF" condition="'${shard_type}' == 'operational'">
<return>
<value>DistributedOperationalDatastore</value>
<status status="PASS" start="2026-04-08T00:52:36.764528" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-08T00:52:36.764426" elapsed="0.000159"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:36.764232" elapsed="0.000378"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized shard type: ${shard_type}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:36.764755" elapsed="0.000022"/>
</kw>
<msg time="2026-04-08T00:52:36.764912" level="INFO">${type_class} = DistributedOperationalDatastore</msg>
<var>${type_class}</var>
<arg>shard_type=${shard_type}</arg>
<doc>Simple lookup for class name corresponding to desired type.</doc>
<status status="PASS" start="2026-04-08T00:52:36.763967" elapsed="0.000971"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:52:36.765496" level="INFO">${cluster_index} = 1</msg>
<var>${cluster_index}</var>
<arg>${member_index}+${NODE_ROLE_INDEX_START}-1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:36.765107" elapsed="0.000416"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:36.766219" level="INFO">${uri} = jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-inventory-operational,type=DistributedOperationalDatastore</msg>
<var>${uri}</var>
<arg>${JOLOKIA_READ_URI}:Category=Shards,name=member-${cluster_index}-shard-${shard_name}-${shard_type},type=${type_class}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:36.765710" elapsed="0.000538"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:36.772057" level="INFO">jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-inventory-operational,type=DistributedOperationalDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:36.771603" elapsed="0.000505"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:36.772923" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:36.772477" elapsed="0.000523"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:52:36.791717" level="INFO">GET Request : url=http://10.30.170.48:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-inventory-operational,type=DistributedOperationalDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-inventory-operational,type=DistributedOperationalDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:52:36.791907" level="INFO">GET Response : url=http://10.30.170.48:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-inventory-operational,type=DistributedOperationalDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Wed, 08 Apr 2026 00:52:36 GMT', 'Expires': 'Tue, 07 Apr 2026 23:52:36 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-1-shard-inventory-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"ReadWriteTransactionCount":801,"SnapshotIndex":1674,"InMemoryJournalLogSize":1,"ReplicatedToAllIndex":1674,"Leader":"member-1-shard-inventory-operational","LastIndex":1675,"RaftState":"Leader","LastApplied":1675,"LastCommittedTransactionTime":"2026-04-08 00:52:31.311","PeerAddresses":"member-3-shard-inventory-operational: pekko:\/\/opendaylight-cluster-data@10.30.171.110:2550\/user\/shardmanager-operational\/member-3-shard-inventory-operational, member-2-shard-inventory-operational: pekko:\/\/opendaylight-cluster-data@10.30.170.131:2550\/user\/shardmanager-operational\/member-2-shard-inventory-operational","LastLogIndex":1675,"LastLeadershipChangeTime":"2026-04-08 00:46:45.929","FollowerInitialSyncStatus":false,"FollowerInfo":[{"timeSinceLastActivity":"00:00:00.477","active":true,"matchIndex":1675,"voting":true,"id":"member-3-shard-inventory-operational","nextIndex":1676},{"timeSinceLastActivity":"00:00:00.477","active":true,"matchIndex":1675,"voting":true,"id":"member-2-shard-inventory-operational","nextIndex":1676}],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"659.6 μs","CurrentTerm":2,"LastTerm":2,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-inventory-operational","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":632,"TxCohortCacheSize":0,"PeerVotingStates":"member-3-shard-inventory-operational: true, member-2-shard-inventory-operational: true","LastLogTerm":2,"StatRetrievalError":null,"CommitIndex":1675,"SnapshotTerm":2,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":28,"ShardName":"member-1-shard-inventory-operational","LeadershipChangeCount":1,"InMemoryJournalDataSize":2149750},"timestamp":1775609556,"status":200} 
 </msg>
<msg time="2026-04-08T00:52:36.792209" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:52:36.783825" elapsed="0.008538"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:36.773072" elapsed="0.019650"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:36.792983" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:36.792765" elapsed="0.000756"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:36.773052" elapsed="0.020508"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:36.799455" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-1-shard-inventory-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"ReadWriteTransactionCount":801,"SnapshotIndex":1674,"InMemoryJournalLogSize":1,"ReplicatedToAllIndex":1674,"Leader":"member-1-shard-inventory-operational","LastIndex":1675,"RaftState":"Leader","LastApplied":1675,"LastCommittedTransactionTime":"2026-04-08 00:52:31.311","PeerAddresses":"member-3-shard-inventory-operational: pekko:\/\/opendaylight-cluster-data@10.30.171.110:2550\/user\/shardmanager-operational\/member-3-shard-inventory-operational, member-2-shard-inventory-operational: pekko:\/\/opendaylight-cluster-data@10.30.170.131:2550\/user\/shardmanager-operational\/member-2-shard-inventory-operational","LastLogIndex":1675,"LastLeadershipChangeTime":"2026-04-08 00:46:45.929","FollowerInitialSyncStatus":false,"FollowerInfo":[{"timeSinceLastActivity":"00:00:00.477","active":true,"matchIndex":1675,"voting":true,"id":"member-3-shard-inventory-operational","nextIndex":1676},{"timeSinceLastActivity":"00:00:00.477","active":true,"matchIndex":1675,"voting":true,"id":"member-2-shard-inventory-operational","nextIndex":1676}],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"659.6 μs","CurrentTerm":2,"LastTerm":2,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-inventory-operational","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":632,"TxCohortCacheSize":0,"PeerVotingStates":"member-3-shard-inventory-operational: true, member-2-shard-inventory-operational: true","LastLogTerm":2,"StatRetrievalError":null,"CommitIndex":1675,"SnapshotTerm":2,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":28,"ShardName":"member-1-shard-inventory-operational","LeadershipChangeCount":1,"InMemoryJournalDataSize":2149750},"timestamp":1775609556,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:36.796526" elapsed="0.003045"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:36.795325" elapsed="0.004295"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:36.795298" elapsed="0.004360"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:36.802880" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:36.800592" elapsed="0.002385"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:36.799740" elapsed="0.003284"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:36.799722" elapsed="0.003339"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:52:36.804532" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:36.803688" elapsed="0.000905"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:36.805232" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:36.804757" elapsed="0.000562"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:36.806220" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:36.805709" elapsed="0.000557"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:36.805356" elapsed="0.000959"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:36.804737" elapsed="0.001612"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:52:36.807707" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:36.806953" elapsed="0.000816"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:36.808478" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:36.807932" elapsed="0.000632"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:36.809434" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:36.808927" elapsed="0.000552"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:36.808602" elapsed="0.000941"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:36.807912" elapsed="0.001666"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:52:36.809799" elapsed="0.000637"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:52:36.811251" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:36.810740" elapsed="0.000572"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:52:36.811594" elapsed="0.002390"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:52:36.794339" elapsed="0.019803"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:52:36.814362" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:52:36.814235" elapsed="0.000173"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:36.814215" elapsed="0.000215"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:52:36.818094" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-1-shard-inventory-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestam...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:52:36.814575" elapsed="0.003549"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:52:36.818224" elapsed="0.000036"/>
</return>
<msg time="2026-04-08T00:52:36.818389" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-1-shard-inventory-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestam...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:52:36.767266" elapsed="0.051150"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:52:36.818473" elapsed="0.000026"/>
</return>
<msg time="2026-04-08T00:52:36.818619" level="INFO">${data_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-1-shard-inventory-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestam...</msg>
<var>${data_text}</var>
<arg>uri=${uri}</arg>
<arg>session=${session}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-08T00:52:36.766466" elapsed="0.052179"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:52:36.819715" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-1-shard-inventory-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1775609...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:36.819225" elapsed="0.000519"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-08T00:52:36.819793" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:52:36.819970" level="INFO">${data_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-1-shard-inventory-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1775609...</msg>
<var>${data_object}</var>
<arg>${data_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-08T00:52:36.818865" elapsed="0.001132"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:52:36.820409" level="INFO">${value} = {'AbortTransactionsCount': 0, 'CommitIndex': 1675, 'CommittedTransactionsCount': 632, 'CurrentTerm': 2, 'FailedReadTransactionsCount': 0, 'FailedTransactionsCount': 0, 'FollowerInfo': [{'active': True...</msg>
<var>${value}</var>
<arg>${data_object}</arg>
<arg>value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:52:36.820152" elapsed="0.000285"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:52:36.820792" level="INFO">${raft_property} = Leader</msg>
<var>${raft_property}</var>
<arg>${value}</arg>
<arg>${property}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:52:36.820593" elapsed="0.000224"/>
</kw>
<return>
<value>${raft_property}</value>
<status status="PASS" start="2026-04-08T00:52:36.820864" elapsed="0.000027"/>
</return>
<msg time="2026-04-08T00:52:36.821013" level="INFO">${raft_state} = Leader</msg>
<var>${raft_state}</var>
<arg>RaftState</arg>
<arg>${shard_name}</arg>
<arg>${shard_type}</arg>
<arg>${member_index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft property.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T00:52:36.561233" elapsed="0.259805"/>
</kw>
<return>
<value>${raft_state}</value>
<status status="PASS" start="2026-04-08T00:52:36.821094" elapsed="0.000025"/>
</return>
<msg time="2026-04-08T00:52:36.821342" level="INFO">${raft_state} = Leader</msg>
<var>${raft_state}</var>
<arg>shard_name=${shard_name}</arg>
<arg>shard_type=${ds_type}</arg>
<arg>member_index=${index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft status.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T00:52:36.560476" elapsed="0.260891"/>
</kw>
<if>
<branch type="IF" condition="'Follower' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${follower_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:36.821663" elapsed="0.000049"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:36.821448" 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="PASS" start="2026-04-08T00:52:36.821978" elapsed="0.000205"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:36.821771" elapsed="0.000453"/>
</branch>
<branch type="ELSE IF" condition="${validate}">
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized Raft state: ${raft_state}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:36.822392" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:36.822248" elapsed="0.000195"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:36.821430" elapsed="0.001035"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T00:52:36.560099" elapsed="0.262390"/>
</iter>
<iter>
<kw name="Get_Raft_State_Of_Shard_At_Member" owner="ClusterManagement">
<kw name="Get_Raft_Property_From_Shard_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:36.825026" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:36.824702" elapsed="0.000351"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:52:36.825099" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:52:36.825266" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:52:36.824363" elapsed="0.000928"/>
</kw>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Get_As_Json_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:36.907203" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:36.906802" elapsed="0.000465"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:52:36.908008" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:52:36.907768" elapsed="0.000315">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-08T00:52:36.908193" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:52:36.907434" elapsed="0.000786"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:52:36.908763" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:52:36.908383" elapsed="0.000407"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T00:52:36.909080" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-08T00:52:36.909247" level="INFO">${template} = /rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T00:52:36.908947" elapsed="0.000326"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:36.909665" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:36.909425" elapsed="0.000283"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:36.910788" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:36.910535" elapsed="0.000298"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-08T00:52:36.911316" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-08T00:52:36.911023" elapsed="0.000320"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:36.911663" elapsed="0.000022"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:36.911863" elapsed="0.000024"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:36.912034" elapsed="0.000020"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-08T00:52:36.911532" elapsed="0.000558"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-08T00:52:36.911396" elapsed="0.000723"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-08T00:52:36.912166" elapsed="0.000041"/>
</return>
<msg time="2026-04-08T00:52:36.912339" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-08T00:52:36.910060" elapsed="0.002304"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:36.909775" elapsed="0.002620"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:36.912564" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:36.912420" elapsed="0.000198"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:36.909756" elapsed="0.002882"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:52:36.913219" level="INFO">${final_text} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:36.912777" elapsed="0.000470"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T00:52:36.913294" elapsed="0.000028"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="PASS" start="2026-04-08T00:52:36.906198" elapsed="0.007217"/>
</kw>
<msg time="2026-04-08T00:52:36.913467" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:52:36.894042" elapsed="0.019504"/>
</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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:36.925320" elapsed="0.000041"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:36.937321" elapsed="0.000040"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:36.949268" elapsed="0.000041"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:36.950018" elapsed="0.000037"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:36.950779" elapsed="0.000037"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:36.951352" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:36.951205" elapsed="0.000204"/>
</branch>
<status status="NOT RUN" start="2026-04-08T00:52:36.951187" elapsed="0.000245"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:36.951614" elapsed="0.000023"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:36.951803" elapsed="0.000022"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:36.951985" elapsed="0.000021"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-08T00:52:36.951120" elapsed="0.000944"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-08T00:52:36.950898" elapsed="0.001207"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:36.952816" elapsed="0.000035"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-08T00:52:36.952933" elapsed="0.000047"/>
</return>
<msg time="2026-04-08T00:52:36.953160" level="INFO">${uri} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-08T00:52:36.888096" elapsed="0.065232"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:52:36.956161" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:52:36.955920" elapsed="0.000323">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-08T00:52:36.956430" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:52:36.955473" elapsed="0.001001"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:36.956978" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:36.956604" elapsed="0.000441"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:36.957652" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:36.957359" elapsed="0.000319"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:36.957083" elapsed="0.000639"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:36.956553" elapsed="0.001208"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:52:36.960994" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:52:36.958504" elapsed="0.002537"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-08T00:52:36.961117" elapsed="0.000079"/>
</return>
<msg time="2026-04-08T00:52:36.961449" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:52:36.954318" elapsed="0.007238"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:52:36.964378" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:52:36.964121" elapsed="0.000321">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-08T00:52:36.964630" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:52:36.963643" elapsed="0.001032"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-08T00:52:36.965055" elapsed="0.000079"/>
</return>
<status status="PASS" start="2026-04-08T00:52:36.964805" elapsed="0.000415"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:36.964754" elapsed="0.000506"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:36.965973" elapsed="0.000037"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:36.966821" elapsed="0.000037"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-08T00:52:36.966930" elapsed="0.000047"/>
</return>
<msg time="2026-04-08T00:52:36.968933" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:52:36.962408" elapsed="0.006639"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:36.972863" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:36.972477" elapsed="0.000485"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:36.974072" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:36.973674" elapsed="0.000627"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:52:36.993799" level="INFO">GET Request : url=http://10.30.170.131:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 path_url=/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:52:36.994752" level="INFO">GET Response : url=http://10.30.170.131:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 status=200, reason=OK 
 headers={'Set-Cookie': 'JSESSIONID=node01eq5fxmndxspk37g8qgkyja672.node0; Path=/rests; HttpOnly, rememberMe=deleteMe; Path=/rests; Max-Age=0; Expires=Tue, 07-Apr-2026 00:52:36 GMT; SameSite=lax', 'Expires': 'Thu, 01 Jan 1970 00:00:00 GMT', 'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Transfer-Encoding': 'chunked'} 
 body={"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","hidden-symmetric-keys","encrypted-private-keys","asymmetrically-encrypted-value-format","cms-encrypted-data-format","cleartext-private-keys","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["ssh-client-keepalives","client-ident-hostbased","client-ident-publickey","client-ident-password"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-ex... (set the log level to DEBUG or TRACE to see the full content) 
 </msg>
<msg time="2026-04-08T00:52:36.995238" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:52:36.976544" elapsed="0.018755"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:36.974439" elapsed="0.020985"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:36.996068" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:36.995521" elapsed="0.000779"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:36.974386" elapsed="0.022003"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:37.005758" level="INFO">{"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","hidden-symmetric-keys","encrypted-private-keys","asymmetrically-encrypted-value-format","cms-encrypted-data-format","cleartext-private-keys","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["ssh-client-keepalives","client-ident-hostbased","client-ident-publickey","client-ident-password"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-experimenter-types?revision=2015-10-20","namespace":"urn:opendaylight:openflowplugin:experimenter:types","conformance-type":"import"},{"name":"ietf-ip_2018-02-22","revision":"2018-02-22","schema":"/rests/modules/ietf-ip?revision=2018-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-ip","conformance-type":"import","feature":["ipv6-privacy-autoconf","ipv4-non-contiguous-netmasks"]},{"name":"ietf-tcp-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-client","conformance-type":"import","feature":["local-binding-supported","tcp-client-keepalives"]},{"name":"node-config_2014-10-15","revision":"2014-10-15","schema":"/rests/modules/node-config?revision=2014-10-15","namespace":"urn:opendaylight:module:config","conformance-type":"import"},{"name":"ietf-restconf_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf","conformance-type":"import"},{"name":"ietf-datastores_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-datastores?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-datastores","conformance-type":"import"},{"name":"ietf-yang-patch_2017-02-22","revision":"2017-02-22","schema":"/rests/modules/ietf-yang-patch?revision=2017-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-patch","conformance-type":"import"},{"name":"sal-group_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-group?revision=2013-09-18","namespace":"urn:opendaylight:group:service","conformance-type":"import"},{"name":"odl-codegen-extensions_2024-06-27","revision":"2024-06-27","schema":"/rests/modules/odl-codegen-extensions?revision=2024-06-27","namespace":"urn:opendaylight:yang:extension:codegen","conformance-type":"import"},{"name":"sal-meter_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-meter?revision=2013-09-18","namespace":"urn:opendaylight:meter:service","conformance-type":"import"},{"name":"ietf-interfaces_2018-02-20","revision":"2018-02-20","schema":"/rests/modules/ietf-interfaces?revision=2018-02-20","namespace":"urn:ietf:params:xml:ns:yang:ietf-interfaces","conformance-type":"import","feature":["pre-provisioning","if-mib","arbitrary-names"]},{"name":"opendaylight-l2-types_2013-08-27","revision":"2013-08-27","schema":"/rests/modules/opendaylight-l2-types?revision=2013-08-27","namespace":"urn:opendaylight:l2:types","conformance-type":"import"},{"name":"opendaylight-flow-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-flow-types?revision=2013-10-26","namespace":"urn:opendaylight:flow:types","conformance-type":"import"},{"name":"lldp-speaker-config_2016-05-12","revision":"2016-05-12","schema":"/rests/modules/lldp-speaker-config?revision=2016-05-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker:config","conformance-type":"import"},{"name":"aaa-cert_2015-11-26","revision":"2015-11-26","schema":"/rests/modules/aaa-cert?revision=2015-11-26","namespace":"urn:opendaylight:yang:aaa:cert","conformance-type":"import"},{"name":"openflow-action_2015-02-03","revision":"2015-02-03","schema":"/rests/modules/openflow-action?revision=2015-02-03","namespace":"urn:opendaylight:openflow:common:action","conformance-type":"import"},{"name":"openflow-approved-extensions_2016-08-02","revision":"2016-08-02","schema":"/rests/modules/openflow-approved-extensions?revision=2016-08-02","namespace":"urn:opendaylight:openflow:approved:extensions","conformance-type":"import"},{"name":"nc-notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/nc-notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netmod:notification","conformance-type":"import"},{"name":"ietf-netconf-nmda_2019-01-07","revision":"2019-01-07","schema":"/rests/modules/ietf-netconf-nmda?revision=2019-01-07","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-nmda","conformance-type":"import","feature":["with-defaults","origin"]},{"name":"ietf-tcp-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-common","conformance-type":"import","feature":["keepalives-supported"]},{"name":"network-topology_2013-10-21","revision":"2013-10-21","schema":"/rests/modules/network-topology?revision=2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:network-topology","conformance-type":"import"},{"name":"aaa-encrypt-service-config_2024-02-02","revision":"2024-02-02","schema":"/rests/modules/aaa-encrypt-service-config?revision=2024-02-02","namespace":"config:aaa:authn:encrypt:service:config","conformance-type":"import"},{"name":"openflow-instruction_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-instruction?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:instruction","conformance-type":"import"},{"name":"ietf-tls-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-client","conformance-type":"import","feature":["client-ident-x509-cert","server-auth-x509-cert"]},{"name":"opendaylight-group-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-group-statistics?revision=2013-11-11","namespace":"urn:opendaylight:group:statistics","conformance-type":"import"},{"name":"cluster-admin_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/cluster-admin?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:cluster:admin","conformance-type":"import"},{"name":"opendaylight-flow-statistics_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-flow-statistics?revision=2013-08-19","namespace":"urn:opendaylight:flow:statistics","conformance-type":"import"},{"name":"opendaylight-table-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-table-types?revision=2013-10-26","namespace":"urn:opendaylight:table:types","conformance-type":"import"},{"name":"forwarding-rules-manager-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/forwarding-rules-manager-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:forwardingrules-manager:config","conformance-type":"import"},{"name":"odl-srm-types_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-types?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:types","conformance-type":"import"},{"name":"ietf-x509-cert-to-name_2014-12-10","revision":"2014-12-10","schema":"/rests/modules/ietf-x509-cert-to-name?revision=2014-12-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-x509-cert-to-name","conformance-type":"import"},{"name":"flow-node-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-node-inventory?revision=2013-08-19","namespace":"urn:opendaylight:flow:inventory","conformance-type":"import"},{"name":"flow-errors_2013-11-16","revision":"2013-11-16","schema":"/rests/modules/flow-errors?revision=2013-11-16","namespace":"urn:opendaylight:flow:errors","conformance-type":"import"},{"name":"ietf-netconf_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:netconf:base:1.0","conformance-type":"import","feature":["xpath","url","rollback-on-error","validate","startup","candidate","confirmed-commit","writable-running"]},{"name":"iana-ssh-public-key-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-public-key-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-public-key-algs","conformance-type":"import"},{"name":"aaa-cert-mdsal_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/aaa-cert-mdsal?revision=2016-03-21","namespace":"urn:opendaylight:yang:aaa:cert:mdsal","conformance-type":"import"},{"name":"odl-device-notification_2024-02-18","revision":"2024-02-18","schema":"/rests/modules/odl-device-notification?revision=2024-02-18","namespace":"urn:opendaylight:device:notification","conformance-type":"import"},{"name":"ietf-origin_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-origin?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-origin","conformance-type":"import"},{"name":"openflow-augments_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-augments?revision=2015-02-25","namespace":"urn:opendaylight:openflow:augments","conformance-type":"import"},{"name":"iana-ssh-encryption-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-encryption-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-encryption-algs","conformance-type":"import"},{"name":"ietf-truststore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-truststore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-truststore","conformance-type":"import","feature":["inline-definitions-supported"]},{"name":"distributed-datastore-provider_2025-01-30","revision":"2025-01-30","schema":"/rests/modules/distributed-datastore-provider?revision=2025-01-30","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:distributed-datastore-provider","conformance-type":"import"},{"name":"opendaylight-group-types_2013-10-18","revision":"2013-10-18","schema":"/rests/modules/opendaylight-group-types?revision=2013-10-18","namespace":"urn:opendaylight:group:types","conformance-type":"import"},{"name":"sal-remote-augment_2023-11-03","revision":"2023-11-03","schema":"/rests/modules/sal-remote-augment?revision=2023-11-03","namespace":"urn:sal:restconf:event:subscription","conformance-type":"import"},{"name":"opendaylight-ipv6-arbitrary-bitmask-fields_2016-02-24","revision":"2016-02-24","schema":"/rests/modules/opendaylight-ipv6-arbitrary-bitmask-fields?revision=2016-02-24","namespace":"urn:opendaylight:opendaylight-ipv6-arbitrary-bitmask-fields","conformance-type":"import"},{"name":"sal-flows-batch_2016-03-14","revision":"2016-03-14","schema":"/rests/modules/sal-flows-batch?revision=2016-03-14","namespace":"urn:opendaylight:flows:service","conformance-type":"import"},{"name":"ietf-tls-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-common","conformance-type":"import","feature":["tls12","hello-params","tls13"]},{"name":"openflow-types_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-types?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:types","conformance-type":"import"},{"name":"ietf-netconf-with-defaults_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf-with-defaults?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults","conformance-type":"import"},{"name":"odl-srm-ops_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-ops?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:ops","conformance-type":"import"},{"name":"odl-general-entity_2015-09-30","revision":"2015-09-30","schema":"/rests/modules/odl-general-entity?revision=2015-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:mdsal:core:general-entity","conformance-type":"import"},{"name":"iana-ssh-key-exchange-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-key-exchange-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-key-exchange-algs","conformance-type":"import"},{"name":"node-ssl-connection-error_2019-07-23","revision":"2019-07-23","schema":"/rests/modules/node-ssl-connection-error?revision=2019-07-23","namespace":"urn:opendaylight:node-ssl-connection-error:service","conformance-type":"import"},{"name":"openflow-protocol_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-protocol?revision=2013-07-31","namespace":"urn:opendaylight:openflow:protocol","conformance-type":"import"},{"name":"ietf-udp-server_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-server?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-server","conformance-type":"import"},{"name":"ietf-keystore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-keystore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-keystore","conformance-type":"import","feature":["asymmetric-keys","inline-definitions-supported"]},{"name":"aaa_2016-12-14","revision":"2016-12-14","schema":"/rests/modules/aaa?revision=2016-12-14","namespace":"urn:opendaylight:params:xml:ns:yang:aaa","conformance-type":"import"},{"name":"aaa-cert-rpc_2015-12-15","revision":"2015-12-15","schema":"/rests/modules/aaa-cert-rpc?revision=2015-12-15","namespace":"urn:opendaylight:yang:aaa:cert:rpc","conformance-type":"import"},{"name":"system-notifications_2013-09-27","revision":"2013-09-27","schema":"/rests/modules/system-notifications?revision=2013-09-27","namespace":"urn:opendaylight:openflow:system","conformance-type":"import"},{"name":"sal-flat-batch_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/sal-flat-batch?revision=2016-03-21","namespace":"urn:opendaylight:flat-batch:service","conformance-type":"import"},{"name":"notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netconf:notification:1.0","conformance-type":"import"},{"name":"sal-remote_2014-01-14","revision":"2014-01-14","schema":"/rests/modules/sal-remote?revision=2014-01-14","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:remote","conformance-type":"import"},{"name":"yang-ext_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/yang-ext?revision=2013-07-09","namespace":"urn:opendaylight:yang:extension:yang-ext","conformance-type":"import"},{"name":"opendaylight-multipart-types_2017-01-12","revision":"2017-01-12","schema":"/rests/modules/opendaylight-multipart-types?revision=2017-01-12","namespace":"urn:opendaylight:multipart:types","conformance-type":"import"},{"name":"opendaylight-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-inventory?revision=2013-08-19","namespace":"urn:opendaylight:inventory","conformance-type":"import"},{"name":"sal-queue_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-queue?revision=2015-03-05","namespace":"urn:opendaylight:queue:service","conformance-type":"import"},{"name":"sal-groups-batch_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/sal-groups-batch?revision=2016-03-15","namespace":"urn:opendaylight:groups:service","conformance-type":"import"},{"name":"arbitrator-reconcile_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/arbitrator-reconcile?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:arbitrator-reconcile:service","conformance-type":"import"},{"name":"ietf-yang-metadata_2016-08-05","revision":"2016-08-05","schema":"/rests/modules/ietf-yang-metadata?revision=2016-08-05","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-metadata","conformance-type":"import"},{"name":"opendaylight-arbitrary-bitmask-fields_2016-01-30","revision":"2016-01-30","schema":"/rests/modules/opendaylight-arbitrary-bitmask-fields?revision=2016-01-30","namespace":"urn:opendaylight:arbitrary:bitmask:fields","conformance-type":"import"},{"name":"ietf-udp-client_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-client?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-client","conformance-type":"import","feature":["local-binding"]},{"name":"opendaylight-meter-types_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/opendaylight-meter-types?revision=2013-09-18","namespace":"urn:opendaylight:meter:types","conformance-type":"import"},{"name":"opendaylight-action-types_2013-11-12","revision":"2013-11-12","schema":"/rests/modules/opendaylight-action-types?revision=2013-11-12","namespace":"urn:opendaylight:action:types","conformance-type":"import"},{"name":"sal-role_2015-07-27","revision":"2015-07-27","schema":"/rests/modules/sal-role?revision=2015-07-27","namespace":"urn:opendaylight:role:service","conformance-type":"import"},{"name":"openflow-provider-config_2016-05-10","revision":"2016-05-10","schema":"/rests/modules/openflow-provider-config?revision=2016-05-10","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:provider:config","conformance-type":"import"},{"name":"odl-serviceutils-upgrade_2018-07-02","revision":"2018-07-02","schema":"/rests/modules/odl-serviceutils-upgrade?revision=2018-07-02","namespace":"urn:opendaylight:serviceutils:upgrade","conformance-type":"import"},{"name":"opendaylight-match-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-match-types?revision=2013-10-26","namespace":"urn:opendaylight:model:match:types","conformance-type":"import"},{"name":"ietf-restconf-server_2024-08-14","revision":"2024-08-14","schema":"/rests/modules/ietf-restconf-server?revision=2024-08-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-server","conformance-type":"import","feature":["http-listen","https-listen"]},{"name":"reconciliation-result-state_2017-07-13","revision":"2017-07-13","schema":"/rests/modules/reconciliation-result-state?revision=2017-07-13","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:rf:state","conformance-type":"import"},{"name":"onf-extensions_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/onf-extensions?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf","conformance-type":"import"},{"name":"sal-table_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/sal-table?revision=2013-10-26","namespace":"urn:opendaylight:table:service","conformance-type":"import"},{"name":"iana-http-versions_2026-02-04","revision":"2026-02-04","schema":"/rests/modules/iana-http-versions?revision=2026-02-04","namespace":"urn:ietf:params:xml:ns:yang:iana-http-versions","conformance-type":"import"},{"name":"opendaylight-direct-statistics_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/opendaylight-direct-statistics?revision=2016-05-11","namespace":"urn:opendaylight:direct:statistics","conformance-type":"import"},{"name":"opendaylight-port-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-port-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:port","conformance-type":"import"},{"name":"sal-async-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/sal-async-config?revision=2017-06-19","namespace":"urn:opendaylight:async-config:service","conformance-type":"import"},{"name":"aaa-password-service-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-password-service-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:password:service:config","conformance-type":"import"},{"name":"ietf-yang-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-yang-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-types","conformance-type":"import"},{"name":"opendaylight-queue-statistics_2013-12-16","revision":"2013-12-16","schema":"/rests/modules/opendaylight-queue-statistics?revision=2013-12-16","namespace":"urn:opendaylight:queue:statistics","conformance-type":"import"},{"name":"sal-bundle_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/sal-bundle?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf:bundle:service","conformance-type":"import"},{"name":"ietf-restconf-subscribed-notifications_2019-11-17","revision":"2019-11-17","schema":"/rests/modules/ietf-restconf-subscribed-notifications?revision=2019-11-17","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-subscribed-notifications","conformance-type":"import"},{"name":"sal-meters-batch_2016-03-16","revision":"2016-03-16","schema":"/rests/modules/sal-meters-batch?revision=2016-03-16","namespace":"urn:opendaylight:meters:service","conformance-type":"import"},{"name":"odl-entity-owners","revision":"","schema":"/rests/modules/odl-entity-owners","namespace":"urn:opendaylight:params:xml:ns:yang:controller:entity-owners","conformance-type":"import"},{"name":"sal-experimenter-mp-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-mp-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-mp-message:service","conformance-type":"import"},{"name":"packet-processing_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/packet-processing?revision=2013-07-09","namespace":"urn:opendaylight:packet:service","conformance-type":"import"},{"name":"openflow-configuration_2014-06-30","revision":"2014-06-30","schema":"/rests/modules/openflow-configuration?revision=2014-06-30","namespace":"urn:opendaylight:openflow:config","conformance-type":"import"},{"name":"odl-srm-rpcs_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-rpcs?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:rpc","conformance-type":"import"},{"name":"ietf-netconf-acm_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-netconf-acm?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-acm","conformance-type":"import"},{"name":"iana-crypt-hash_2014-08-06","revision":"2014-08-06","schema":"/rests/modules/iana-crypt-hash?revision=2014-08-06","namespace":"urn:ietf:params:xml:ns:yang:iana-crypt-hash","conformance-type":"import","feature":["crypt-hash-sha-512","crypt-hash-sha-256","crypt-hash-md5"]},{"name":"openflow-extensible-match_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-extensible-match?revision=2015-02-25","namespace":"urn:opendaylight:openflow:oxm","conformance-type":"import"}],"module-set-id":"2"}}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:37.000295" elapsed="0.005783"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:36.999738" elapsed="0.006376"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:36.999690" elapsed="0.006449"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:37.008639" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:37.006457" elapsed="0.002228"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:37.006235" elapsed="0.002484"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:37.006216" elapsed="0.002527"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:52:37.009343" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:37.008933" elapsed="0.000437"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:37.009696" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:37.009461" elapsed="0.000292"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:37.010258" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:37.009934" elapsed="0.000350"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:37.009776" elapsed="0.000543"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:37.009442" elapsed="0.000898"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:52:37.010875" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:37.010516" elapsed="0.000385"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:37.011241" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:37.010991" elapsed="0.000308"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:37.011780" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:37.011482" elapsed="0.000323"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:37.011322" elapsed="0.000518"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:37.010972" elapsed="0.000889"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:52:37.012030" elapsed="0.000366"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:52:37.012899" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:37.012610" elapsed="0.000314"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:52:37.013097" elapsed="0.002177"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:52:36.998059" elapsed="0.017338"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:52:37.015738" elapsed="0.000046"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:52:37.015524" elapsed="0.000323"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:37.015474" elapsed="0.000408"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:52:37.024656" level="INFO">${text_normalized} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:52:37.016615" elapsed="0.008104"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:52:37.024796" elapsed="0.000067"/>
</return>
<msg time="2026-04-08T00:52:37.025117" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:52:36.969696" elapsed="0.055617"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:52:37.025773" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:52:37.025950" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="PASS" start="2026-04-08T00:52:36.833270" elapsed="0.192707"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Json_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:37.026318" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:37.026060" elapsed="0.000444"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:37.026043" elapsed="0.000487"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:52:37.026564" elapsed="0.000027"/>
</return>
<arg>session=${session}</arg>
<arg>folder=${RESTCONF_MODULES_DIR}</arg>
<arg>verify=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Add arguments sensible for JSON data, return Get_Templated response text.
Optionally, verification against JSON data (may be iterated) is called.
Only subset of JSON data is verified and returned if JMES path is specified in
file ${folder}/jmespath.expr.</doc>
<status status="PASS" start="2026-04-08T00:52:36.829188" elapsed="0.197501"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:36.825359" elapsed="0.201374"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:36.825342" elapsed="0.201416"/>
</if>
<kw name="Resolve_Shard_Type_Class" owner="ClusterManagement">
<if>
<branch type="IF" condition="'${shard_type}' == 'config'">
<return>
<value>DistributedConfigDatastore</value>
<status status="NOT RUN" start="2026-04-08T00:52:37.027376" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:52:37.027267" elapsed="0.000154"/>
</branch>
<branch type="ELSE IF" condition="'${shard_type}' == 'operational'">
<return>
<value>DistributedOperationalDatastore</value>
<status status="PASS" start="2026-04-08T00:52:37.027544" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-08T00:52:37.027443" elapsed="0.000157"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:37.027249" elapsed="0.000375"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized shard type: ${shard_type}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:37.027768" elapsed="0.000022"/>
</kw>
<msg time="2026-04-08T00:52:37.027886" level="INFO">${type_class} = DistributedOperationalDatastore</msg>
<var>${type_class}</var>
<arg>shard_type=${shard_type}</arg>
<doc>Simple lookup for class name corresponding to desired type.</doc>
<status status="PASS" start="2026-04-08T00:52:37.026984" elapsed="0.000928"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:52:37.028469" level="INFO">${cluster_index} = 2</msg>
<var>${cluster_index}</var>
<arg>${member_index}+${NODE_ROLE_INDEX_START}-1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:37.028080" elapsed="0.000416"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:37.029142" level="INFO">${uri} = jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-inventory-operational,type=DistributedOperationalDatastore</msg>
<var>${uri}</var>
<arg>${JOLOKIA_READ_URI}:Category=Shards,name=member-${cluster_index}-shard-${shard_name}-${shard_type},type=${type_class}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:37.028649" elapsed="0.000545"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:37.034834" level="INFO">jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-inventory-operational,type=DistributedOperationalDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:37.034396" elapsed="0.000484"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:37.035487" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:37.035034" elapsed="0.000497"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:52:37.054234" level="INFO">GET Request : url=http://10.30.170.131:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-inventory-operational,type=DistributedOperationalDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-inventory-operational,type=DistributedOperationalDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:52:37.054426" level="INFO">GET Response : url=http://10.30.170.131:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-inventory-operational,type=DistributedOperationalDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Wed, 08 Apr 2026 00:52:37 GMT', 'Expires': 'Tue, 07 Apr 2026 23:52:37 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-2-shard-inventory-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"ReadWriteTransactionCount":0,"SnapshotIndex":1674,"InMemoryJournalLogSize":1,"ReplicatedToAllIndex":1674,"Leader":"member-1-shard-inventory-operational","LastIndex":1675,"RaftState":"Follower","LastCommittedTransactionTime":"1970-01-01 00:00:00.000","LastApplied":1675,"PeerAddresses":"member-1-shard-inventory-operational: pekko:\/\/opendaylight-cluster-data@10.30.170.48:2550\/user\/shardmanager-operational\/member-1-shard-inventory-operational, member-3-shard-inventory-operational: pekko:\/\/opendaylight-cluster-data@10.30.171.110:2550\/user\/shardmanager-operational\/member-3-shard-inventory-operational","LastLogIndex":1675,"LastLeadershipChangeTime":"2026-04-08 00:46:45.936","FollowerInitialSyncStatus":true,"FollowerInfo":[],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"317.1 μs","CurrentTerm":2,"LastTerm":2,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-inventory-operational","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":0,"TxCohortCacheSize":0,"PeerVotingStates":"member-1-shard-inventory-operational: true, member-3-shard-inventory-operational: true","LastLogTerm":2,"StatRetrievalError":null,"CommitIndex":1675,"SnapshotTerm":2,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-2-shard-inventory-operational","LeadershipChangeCount":1,"InMemoryJournalDataSize":2149750},"timestamp":1775609557,"status":200} 
 </msg>
<msg time="2026-04-08T00:52:37.054692" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:52:37.046391" elapsed="0.008450"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:37.035600" elapsed="0.019627"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:37.055486" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:37.055271" elapsed="0.000660"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:37.035581" elapsed="0.020385"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:37.063043" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-2-shard-inventory-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"ReadWriteTransactionCount":0,"SnapshotIndex":1674,"InMemoryJournalLogSize":1,"ReplicatedToAllIndex":1674,"Leader":"member-1-shard-inventory-operational","LastIndex":1675,"RaftState":"Follower","LastCommittedTransactionTime":"1970-01-01 00:00:00.000","LastApplied":1675,"PeerAddresses":"member-1-shard-inventory-operational: pekko:\/\/opendaylight-cluster-data@10.30.170.48:2550\/user\/shardmanager-operational\/member-1-shard-inventory-operational, member-3-shard-inventory-operational: pekko:\/\/opendaylight-cluster-data@10.30.171.110:2550\/user\/shardmanager-operational\/member-3-shard-inventory-operational","LastLogIndex":1675,"LastLeadershipChangeTime":"2026-04-08 00:46:45.936","FollowerInitialSyncStatus":true,"FollowerInfo":[],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"317.1 μs","CurrentTerm":2,"LastTerm":2,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-inventory-operational","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":0,"TxCohortCacheSize":0,"PeerVotingStates":"member-1-shard-inventory-operational: true, member-3-shard-inventory-operational: true","LastLogTerm":2,"StatRetrievalError":null,"CommitIndex":1675,"SnapshotTerm":2,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-2-shard-inventory-operational","LeadershipChangeCount":1,"InMemoryJournalDataSize":2149750},"timestamp":1775609557,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:37.060036" elapsed="0.003124"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:37.058772" elapsed="0.004452"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:37.058745" elapsed="0.004519"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:37.066605" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:37.064226" elapsed="0.002476"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:37.063349" elapsed="0.003402"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:37.063331" elapsed="0.003458"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:52:37.068188" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:37.067425" elapsed="0.000828"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:37.068890" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:37.068420" elapsed="0.000558"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:37.069948" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:37.069444" elapsed="0.000550"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:37.069015" elapsed="0.001029"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:37.068400" elapsed="0.001679"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:52:37.071473" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:37.070714" elapsed="0.000822"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:37.072183" elapsed="0.000038"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:37.071702" elapsed="0.000570"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:37.073137" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:37.072639" elapsed="0.000627"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:37.072311" elapsed="0.001008"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:37.071683" elapsed="0.001671"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:52:37.073591" elapsed="0.000635"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:52:37.075013" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:37.074532" elapsed="0.000541"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:52:37.075376" elapsed="0.002426"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:52:37.056643" elapsed="0.021317"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:52:37.078167" elapsed="0.000029"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:52:37.078037" elapsed="0.000190"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:37.078016" elapsed="0.000233"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:52:37.081833" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-2-shard-inventory-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestam...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:52:37.078394" elapsed="0.003469"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:52:37.081915" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:52:37.082071" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-2-shard-inventory-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestam...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:52:37.030127" elapsed="0.052009"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:52:37.082214" elapsed="0.000027"/>
</return>
<msg time="2026-04-08T00:52:37.082364" level="INFO">${data_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-2-shard-inventory-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestam...</msg>
<var>${data_text}</var>
<arg>uri=${uri}</arg>
<arg>session=${session}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-08T00:52:37.029409" elapsed="0.052981"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:52:37.083637" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-2-shard-inventory-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1775609...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:37.082947" elapsed="0.000724"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-08T00:52:37.083721" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:52:37.083897" level="INFO">${data_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-2-shard-inventory-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1775609...</msg>
<var>${data_object}</var>
<arg>${data_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-08T00:52:37.082609" elapsed="0.001315"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:52:37.084312" level="INFO">${value} = {'AbortTransactionsCount': 0, 'CommitIndex': 1675, 'CommittedTransactionsCount': 0, 'CurrentTerm': 2, 'FailedReadTransactionsCount': 0, 'FailedTransactionsCount': 0, 'FollowerInfo': [], 'FollowerIniti...</msg>
<var>${value}</var>
<arg>${data_object}</arg>
<arg>value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:52:37.084079" elapsed="0.000262"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:52:37.084695" level="INFO">${raft_property} = Follower</msg>
<var>${raft_property}</var>
<arg>${value}</arg>
<arg>${property}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:52:37.084496" elapsed="0.000224"/>
</kw>
<return>
<value>${raft_property}</value>
<status status="PASS" start="2026-04-08T00:52:37.084767" elapsed="0.000027"/>
</return>
<msg time="2026-04-08T00:52:37.084915" level="INFO">${raft_state} = Follower</msg>
<var>${raft_state}</var>
<arg>RaftState</arg>
<arg>${shard_name}</arg>
<arg>${shard_type}</arg>
<arg>${member_index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft property.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T00:52:36.823727" elapsed="0.261213"/>
</kw>
<return>
<value>${raft_state}</value>
<status status="PASS" start="2026-04-08T00:52:37.084997" elapsed="0.000025"/>
</return>
<msg time="2026-04-08T00:52:37.085148" level="INFO">${raft_state} = Follower</msg>
<var>${raft_state}</var>
<arg>shard_name=${shard_name}</arg>
<arg>shard_type=${ds_type}</arg>
<arg>member_index=${index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft status.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T00:52:36.822821" elapsed="0.262372"/>
</kw>
<if>
<branch type="IF" condition="'Follower' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${follower_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-08T00:52:37.085490" elapsed="0.000220"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:37.085276" elapsed="0.000473"/>
</branch>
<branch type="ELSE IF" condition="'Leader' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${leader_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:37.085915" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:37.085773" elapsed="0.000195"/>
</branch>
<branch type="ELSE IF" condition="${validate}">
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized Raft state: ${raft_state}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:37.086133" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:37.085990" elapsed="0.000211"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:37.085258" elapsed="0.000966"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T00:52:36.822655" elapsed="0.263594"/>
</iter>
<iter>
<kw name="Get_Raft_State_Of_Shard_At_Member" owner="ClusterManagement">
<kw name="Get_Raft_Property_From_Shard_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:37.088817" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:37.088494" elapsed="0.000351"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:52:37.088890" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:52:37.089036" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:52:37.088138" elapsed="0.000923"/>
</kw>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Get_As_Json_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:37.171753" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:37.171384" elapsed="0.000397"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:52:37.172524" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:52:37.172288" elapsed="0.000311">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-08T00:52:37.172731" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:52:37.171941" elapsed="0.000814"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:52:37.173323" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:52:37.172918" elapsed="0.000432"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T00:52:37.173646" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-08T00:52:37.173781" level="INFO">${template} = /rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T00:52:37.173510" elapsed="0.000297"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:37.174220" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:37.173961" elapsed="0.000304"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:37.176657" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:37.176396" elapsed="0.000306"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-08T00:52:37.177193" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-08T00:52:37.176862" elapsed="0.000358"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:37.177545" elapsed="0.000021"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:37.177745" elapsed="0.000024"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:37.177916" elapsed="0.000020"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-08T00:52:37.177412" elapsed="0.000560"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-08T00:52:37.177272" elapsed="0.000729"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-08T00:52:37.178046" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:52:37.178222" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-08T00:52:37.174618" elapsed="0.003630"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:37.174334" elapsed="0.003946"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:37.178479" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:37.178305" elapsed="0.000232"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:37.174315" elapsed="0.004243"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:52:37.179147" level="INFO">${final_text} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:37.178698" elapsed="0.000497"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T00:52:37.179246" elapsed="0.000030"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="PASS" start="2026-04-08T00:52:37.170759" elapsed="0.008611"/>
</kw>
<msg time="2026-04-08T00:52:37.179423" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:52:37.158713" elapsed="0.020789"/>
</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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:37.191696" elapsed="0.000047"/>
</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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:37.204247" elapsed="0.000041"/>
</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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:37.216243" elapsed="0.000042"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:37.217012" elapsed="0.000037"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:37.217791" elapsed="0.000038"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:37.218385" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:37.218237" elapsed="0.000205"/>
</branch>
<status status="NOT RUN" start="2026-04-08T00:52:37.218218" elapsed="0.000248"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:37.218626" elapsed="0.000021"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:37.218813" elapsed="0.000021"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:37.218997" elapsed="0.000021"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-08T00:52:37.218143" elapsed="0.000929"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-08T00:52:37.217915" elapsed="0.001197"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:37.219843" elapsed="0.000035"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-08T00:52:37.219962" elapsed="0.000049"/>
</return>
<msg time="2026-04-08T00:52:37.220213" level="INFO">${uri} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-08T00:52:37.152632" elapsed="0.067692"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:52:37.223242" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:52:37.222957" elapsed="0.000358">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-08T00:52:37.223535" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:52:37.222504" elapsed="0.001076"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:37.224097" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:37.223710" elapsed="0.000469"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:37.224789" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:37.224491" elapsed="0.000324"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:37.224221" elapsed="0.000640"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:37.223660" elapsed="0.001239"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:52:37.228165" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:52:37.225646" elapsed="0.002579"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-08T00:52:37.228303" elapsed="0.000064"/>
</return>
<msg time="2026-04-08T00:52:37.228621" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:52:37.221326" elapsed="0.007402"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:52:37.231521" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:52:37.231248" elapsed="0.000338">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-08T00:52:37.231816" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:52:37.230795" elapsed="0.001066"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-08T00:52:37.232262" elapsed="0.000079"/>
</return>
<status status="PASS" start="2026-04-08T00:52:37.231993" elapsed="0.000417"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:37.231942" elapsed="0.000507"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:37.233190" elapsed="0.000037"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:37.233929" elapsed="0.000037"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-08T00:52:37.234041" elapsed="0.000052"/>
</return>
<msg time="2026-04-08T00:52:37.236181" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:52:37.229550" elapsed="0.006740"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:37.240053" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:37.239669" elapsed="0.000483"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:37.241248" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:37.240850" elapsed="0.000494"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:52:37.260882" level="INFO">GET Request : url=http://10.30.171.110:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 path_url=/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:52:37.261862" level="INFO">GET Response : url=http://10.30.171.110:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 status=200, reason=OK 
 headers={'Set-Cookie': 'JSESSIONID=node0336bvzrfnrhc3cqywxyctca52.node0; Path=/rests; HttpOnly, rememberMe=deleteMe; Path=/rests; Max-Age=0; Expires=Tue, 07-Apr-2026 00:52:37 GMT; SameSite=lax', 'Expires': 'Thu, 01 Jan 1970 00:00:00 GMT', 'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Transfer-Encoding': 'chunked'} 
 body={"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","hidden-symmetric-keys","encrypted-private-keys","asymmetrically-encrypted-value-format","cms-encrypted-data-format","cleartext-private-keys","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["ssh-client-keepalives","client-ident-hostbased","client-ident-publickey","client-ident-password"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-ex... (set the log level to DEBUG or TRACE to see the full content) 
 </msg>
<msg time="2026-04-08T00:52:37.262367" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:52:37.243699" elapsed="0.018729"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:37.241472" elapsed="0.021080"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:37.263253" elapsed="0.000055"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:37.262651" elapsed="0.000774"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:37.241421" elapsed="0.022086"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:37.270367" level="INFO">{"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","hidden-symmetric-keys","encrypted-private-keys","asymmetrically-encrypted-value-format","cms-encrypted-data-format","cleartext-private-keys","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["ssh-client-keepalives","client-ident-hostbased","client-ident-publickey","client-ident-password"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-experimenter-types?revision=2015-10-20","namespace":"urn:opendaylight:openflowplugin:experimenter:types","conformance-type":"import"},{"name":"ietf-ip_2018-02-22","revision":"2018-02-22","schema":"/rests/modules/ietf-ip?revision=2018-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-ip","conformance-type":"import","feature":["ipv6-privacy-autoconf","ipv4-non-contiguous-netmasks"]},{"name":"ietf-tcp-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-client","conformance-type":"import","feature":["local-binding-supported","tcp-client-keepalives"]},{"name":"node-config_2014-10-15","revision":"2014-10-15","schema":"/rests/modules/node-config?revision=2014-10-15","namespace":"urn:opendaylight:module:config","conformance-type":"import"},{"name":"ietf-restconf_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf","conformance-type":"import"},{"name":"ietf-datastores_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-datastores?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-datastores","conformance-type":"import"},{"name":"ietf-yang-patch_2017-02-22","revision":"2017-02-22","schema":"/rests/modules/ietf-yang-patch?revision=2017-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-patch","conformance-type":"import"},{"name":"sal-group_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-group?revision=2013-09-18","namespace":"urn:opendaylight:group:service","conformance-type":"import"},{"name":"odl-codegen-extensions_2024-06-27","revision":"2024-06-27","schema":"/rests/modules/odl-codegen-extensions?revision=2024-06-27","namespace":"urn:opendaylight:yang:extension:codegen","conformance-type":"import"},{"name":"sal-meter_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-meter?revision=2013-09-18","namespace":"urn:opendaylight:meter:service","conformance-type":"import"},{"name":"ietf-interfaces_2018-02-20","revision":"2018-02-20","schema":"/rests/modules/ietf-interfaces?revision=2018-02-20","namespace":"urn:ietf:params:xml:ns:yang:ietf-interfaces","conformance-type":"import","feature":["pre-provisioning","if-mib","arbitrary-names"]},{"name":"opendaylight-l2-types_2013-08-27","revision":"2013-08-27","schema":"/rests/modules/opendaylight-l2-types?revision=2013-08-27","namespace":"urn:opendaylight:l2:types","conformance-type":"import"},{"name":"opendaylight-flow-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-flow-types?revision=2013-10-26","namespace":"urn:opendaylight:flow:types","conformance-type":"import"},{"name":"lldp-speaker-config_2016-05-12","revision":"2016-05-12","schema":"/rests/modules/lldp-speaker-config?revision=2016-05-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker:config","conformance-type":"import"},{"name":"aaa-cert_2015-11-26","revision":"2015-11-26","schema":"/rests/modules/aaa-cert?revision=2015-11-26","namespace":"urn:opendaylight:yang:aaa:cert","conformance-type":"import"},{"name":"openflow-action_2015-02-03","revision":"2015-02-03","schema":"/rests/modules/openflow-action?revision=2015-02-03","namespace":"urn:opendaylight:openflow:common:action","conformance-type":"import"},{"name":"openflow-approved-extensions_2016-08-02","revision":"2016-08-02","schema":"/rests/modules/openflow-approved-extensions?revision=2016-08-02","namespace":"urn:opendaylight:openflow:approved:extensions","conformance-type":"import"},{"name":"nc-notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/nc-notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netmod:notification","conformance-type":"import"},{"name":"ietf-netconf-nmda_2019-01-07","revision":"2019-01-07","schema":"/rests/modules/ietf-netconf-nmda?revision=2019-01-07","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-nmda","conformance-type":"import","feature":["with-defaults","origin"]},{"name":"ietf-tcp-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-common","conformance-type":"import","feature":["keepalives-supported"]},{"name":"network-topology_2013-10-21","revision":"2013-10-21","schema":"/rests/modules/network-topology?revision=2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:network-topology","conformance-type":"import"},{"name":"aaa-encrypt-service-config_2024-02-02","revision":"2024-02-02","schema":"/rests/modules/aaa-encrypt-service-config?revision=2024-02-02","namespace":"config:aaa:authn:encrypt:service:config","conformance-type":"import"},{"name":"openflow-instruction_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-instruction?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:instruction","conformance-type":"import"},{"name":"ietf-tls-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-client","conformance-type":"import","feature":["client-ident-x509-cert","server-auth-x509-cert"]},{"name":"opendaylight-group-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-group-statistics?revision=2013-11-11","namespace":"urn:opendaylight:group:statistics","conformance-type":"import"},{"name":"cluster-admin_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/cluster-admin?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:cluster:admin","conformance-type":"import"},{"name":"opendaylight-flow-statistics_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-flow-statistics?revision=2013-08-19","namespace":"urn:opendaylight:flow:statistics","conformance-type":"import"},{"name":"opendaylight-table-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-table-types?revision=2013-10-26","namespace":"urn:opendaylight:table:types","conformance-type":"import"},{"name":"forwarding-rules-manager-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/forwarding-rules-manager-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:forwardingrules-manager:config","conformance-type":"import"},{"name":"odl-srm-types_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-types?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:types","conformance-type":"import"},{"name":"ietf-x509-cert-to-name_2014-12-10","revision":"2014-12-10","schema":"/rests/modules/ietf-x509-cert-to-name?revision=2014-12-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-x509-cert-to-name","conformance-type":"import"},{"name":"flow-node-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-node-inventory?revision=2013-08-19","namespace":"urn:opendaylight:flow:inventory","conformance-type":"import"},{"name":"flow-errors_2013-11-16","revision":"2013-11-16","schema":"/rests/modules/flow-errors?revision=2013-11-16","namespace":"urn:opendaylight:flow:errors","conformance-type":"import"},{"name":"ietf-netconf_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:netconf:base:1.0","conformance-type":"import","feature":["xpath","url","rollback-on-error","validate","startup","candidate","confirmed-commit","writable-running"]},{"name":"iana-ssh-public-key-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-public-key-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-public-key-algs","conformance-type":"import"},{"name":"aaa-cert-mdsal_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/aaa-cert-mdsal?revision=2016-03-21","namespace":"urn:opendaylight:yang:aaa:cert:mdsal","conformance-type":"import"},{"name":"odl-device-notification_2024-02-18","revision":"2024-02-18","schema":"/rests/modules/odl-device-notification?revision=2024-02-18","namespace":"urn:opendaylight:device:notification","conformance-type":"import"},{"name":"ietf-origin_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-origin?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-origin","conformance-type":"import"},{"name":"openflow-augments_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-augments?revision=2015-02-25","namespace":"urn:opendaylight:openflow:augments","conformance-type":"import"},{"name":"iana-ssh-encryption-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-encryption-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-encryption-algs","conformance-type":"import"},{"name":"ietf-truststore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-truststore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-truststore","conformance-type":"import","feature":["inline-definitions-supported"]},{"name":"distributed-datastore-provider_2025-01-30","revision":"2025-01-30","schema":"/rests/modules/distributed-datastore-provider?revision=2025-01-30","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:distributed-datastore-provider","conformance-type":"import"},{"name":"opendaylight-group-types_2013-10-18","revision":"2013-10-18","schema":"/rests/modules/opendaylight-group-types?revision=2013-10-18","namespace":"urn:opendaylight:group:types","conformance-type":"import"},{"name":"sal-remote-augment_2023-11-03","revision":"2023-11-03","schema":"/rests/modules/sal-remote-augment?revision=2023-11-03","namespace":"urn:sal:restconf:event:subscription","conformance-type":"import"},{"name":"opendaylight-ipv6-arbitrary-bitmask-fields_2016-02-24","revision":"2016-02-24","schema":"/rests/modules/opendaylight-ipv6-arbitrary-bitmask-fields?revision=2016-02-24","namespace":"urn:opendaylight:opendaylight-ipv6-arbitrary-bitmask-fields","conformance-type":"import"},{"name":"sal-flows-batch_2016-03-14","revision":"2016-03-14","schema":"/rests/modules/sal-flows-batch?revision=2016-03-14","namespace":"urn:opendaylight:flows:service","conformance-type":"import"},{"name":"ietf-tls-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-common","conformance-type":"import","feature":["tls12","hello-params","tls13"]},{"name":"openflow-types_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-types?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:types","conformance-type":"import"},{"name":"ietf-netconf-with-defaults_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf-with-defaults?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults","conformance-type":"import"},{"name":"odl-srm-ops_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-ops?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:ops","conformance-type":"import"},{"name":"odl-general-entity_2015-09-30","revision":"2015-09-30","schema":"/rests/modules/odl-general-entity?revision=2015-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:mdsal:core:general-entity","conformance-type":"import"},{"name":"iana-ssh-key-exchange-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-key-exchange-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-key-exchange-algs","conformance-type":"import"},{"name":"node-ssl-connection-error_2019-07-23","revision":"2019-07-23","schema":"/rests/modules/node-ssl-connection-error?revision=2019-07-23","namespace":"urn:opendaylight:node-ssl-connection-error:service","conformance-type":"import"},{"name":"openflow-protocol_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-protocol?revision=2013-07-31","namespace":"urn:opendaylight:openflow:protocol","conformance-type":"import"},{"name":"ietf-udp-server_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-server?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-server","conformance-type":"import"},{"name":"ietf-keystore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-keystore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-keystore","conformance-type":"import","feature":["asymmetric-keys","inline-definitions-supported"]},{"name":"aaa_2016-12-14","revision":"2016-12-14","schema":"/rests/modules/aaa?revision=2016-12-14","namespace":"urn:opendaylight:params:xml:ns:yang:aaa","conformance-type":"import"},{"name":"aaa-cert-rpc_2015-12-15","revision":"2015-12-15","schema":"/rests/modules/aaa-cert-rpc?revision=2015-12-15","namespace":"urn:opendaylight:yang:aaa:cert:rpc","conformance-type":"import"},{"name":"system-notifications_2013-09-27","revision":"2013-09-27","schema":"/rests/modules/system-notifications?revision=2013-09-27","namespace":"urn:opendaylight:openflow:system","conformance-type":"import"},{"name":"sal-flat-batch_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/sal-flat-batch?revision=2016-03-21","namespace":"urn:opendaylight:flat-batch:service","conformance-type":"import"},{"name":"notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netconf:notification:1.0","conformance-type":"import"},{"name":"sal-remote_2014-01-14","revision":"2014-01-14","schema":"/rests/modules/sal-remote?revision=2014-01-14","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:remote","conformance-type":"import"},{"name":"yang-ext_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/yang-ext?revision=2013-07-09","namespace":"urn:opendaylight:yang:extension:yang-ext","conformance-type":"import"},{"name":"opendaylight-multipart-types_2017-01-12","revision":"2017-01-12","schema":"/rests/modules/opendaylight-multipart-types?revision=2017-01-12","namespace":"urn:opendaylight:multipart:types","conformance-type":"import"},{"name":"opendaylight-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-inventory?revision=2013-08-19","namespace":"urn:opendaylight:inventory","conformance-type":"import"},{"name":"sal-queue_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-queue?revision=2015-03-05","namespace":"urn:opendaylight:queue:service","conformance-type":"import"},{"name":"sal-groups-batch_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/sal-groups-batch?revision=2016-03-15","namespace":"urn:opendaylight:groups:service","conformance-type":"import"},{"name":"arbitrator-reconcile_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/arbitrator-reconcile?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:arbitrator-reconcile:service","conformance-type":"import"},{"name":"ietf-yang-metadata_2016-08-05","revision":"2016-08-05","schema":"/rests/modules/ietf-yang-metadata?revision=2016-08-05","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-metadata","conformance-type":"import"},{"name":"opendaylight-arbitrary-bitmask-fields_2016-01-30","revision":"2016-01-30","schema":"/rests/modules/opendaylight-arbitrary-bitmask-fields?revision=2016-01-30","namespace":"urn:opendaylight:arbitrary:bitmask:fields","conformance-type":"import"},{"name":"ietf-udp-client_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-client?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-client","conformance-type":"import","feature":["local-binding"]},{"name":"opendaylight-meter-types_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/opendaylight-meter-types?revision=2013-09-18","namespace":"urn:opendaylight:meter:types","conformance-type":"import"},{"name":"opendaylight-action-types_2013-11-12","revision":"2013-11-12","schema":"/rests/modules/opendaylight-action-types?revision=2013-11-12","namespace":"urn:opendaylight:action:types","conformance-type":"import"},{"name":"sal-role_2015-07-27","revision":"2015-07-27","schema":"/rests/modules/sal-role?revision=2015-07-27","namespace":"urn:opendaylight:role:service","conformance-type":"import"},{"name":"openflow-provider-config_2016-05-10","revision":"2016-05-10","schema":"/rests/modules/openflow-provider-config?revision=2016-05-10","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:provider:config","conformance-type":"import"},{"name":"odl-serviceutils-upgrade_2018-07-02","revision":"2018-07-02","schema":"/rests/modules/odl-serviceutils-upgrade?revision=2018-07-02","namespace":"urn:opendaylight:serviceutils:upgrade","conformance-type":"import"},{"name":"opendaylight-match-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-match-types?revision=2013-10-26","namespace":"urn:opendaylight:model:match:types","conformance-type":"import"},{"name":"ietf-restconf-server_2024-08-14","revision":"2024-08-14","schema":"/rests/modules/ietf-restconf-server?revision=2024-08-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-server","conformance-type":"import","feature":["http-listen","https-listen"]},{"name":"reconciliation-result-state_2017-07-13","revision":"2017-07-13","schema":"/rests/modules/reconciliation-result-state?revision=2017-07-13","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:rf:state","conformance-type":"import"},{"name":"onf-extensions_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/onf-extensions?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf","conformance-type":"import"},{"name":"sal-table_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/sal-table?revision=2013-10-26","namespace":"urn:opendaylight:table:service","conformance-type":"import"},{"name":"iana-http-versions_2026-02-04","revision":"2026-02-04","schema":"/rests/modules/iana-http-versions?revision=2026-02-04","namespace":"urn:ietf:params:xml:ns:yang:iana-http-versions","conformance-type":"import"},{"name":"opendaylight-direct-statistics_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/opendaylight-direct-statistics?revision=2016-05-11","namespace":"urn:opendaylight:direct:statistics","conformance-type":"import"},{"name":"opendaylight-port-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-port-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:port","conformance-type":"import"},{"name":"sal-async-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/sal-async-config?revision=2017-06-19","namespace":"urn:opendaylight:async-config:service","conformance-type":"import"},{"name":"aaa-password-service-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-password-service-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:password:service:config","conformance-type":"import"},{"name":"ietf-yang-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-yang-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-types","conformance-type":"import"},{"name":"opendaylight-queue-statistics_2013-12-16","revision":"2013-12-16","schema":"/rests/modules/opendaylight-queue-statistics?revision=2013-12-16","namespace":"urn:opendaylight:queue:statistics","conformance-type":"import"},{"name":"sal-bundle_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/sal-bundle?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf:bundle:service","conformance-type":"import"},{"name":"ietf-restconf-subscribed-notifications_2019-11-17","revision":"2019-11-17","schema":"/rests/modules/ietf-restconf-subscribed-notifications?revision=2019-11-17","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-subscribed-notifications","conformance-type":"import"},{"name":"sal-meters-batch_2016-03-16","revision":"2016-03-16","schema":"/rests/modules/sal-meters-batch?revision=2016-03-16","namespace":"urn:opendaylight:meters:service","conformance-type":"import"},{"name":"odl-entity-owners","revision":"","schema":"/rests/modules/odl-entity-owners","namespace":"urn:opendaylight:params:xml:ns:yang:controller:entity-owners","conformance-type":"import"},{"name":"sal-experimenter-mp-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-mp-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-mp-message:service","conformance-type":"import"},{"name":"packet-processing_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/packet-processing?revision=2013-07-09","namespace":"urn:opendaylight:packet:service","conformance-type":"import"},{"name":"openflow-configuration_2014-06-30","revision":"2014-06-30","schema":"/rests/modules/openflow-configuration?revision=2014-06-30","namespace":"urn:opendaylight:openflow:config","conformance-type":"import"},{"name":"odl-srm-rpcs_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-rpcs?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:rpc","conformance-type":"import"},{"name":"ietf-netconf-acm_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-netconf-acm?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-acm","conformance-type":"import"},{"name":"iana-crypt-hash_2014-08-06","revision":"2014-08-06","schema":"/rests/modules/iana-crypt-hash?revision=2014-08-06","namespace":"urn:ietf:params:xml:ns:yang:iana-crypt-hash","conformance-type":"import","feature":["crypt-hash-sha-512","crypt-hash-sha-256","crypt-hash-md5"]},{"name":"openflow-extensible-match_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-extensible-match?revision=2015-02-25","namespace":"urn:opendaylight:openflow:oxm","conformance-type":"import"}],"module-set-id":"2"}}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:37.266523" elapsed="0.004288"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:37.266208" elapsed="0.004653"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:37.266162" elapsed="0.004733"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:37.274126" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:37.271352" elapsed="0.002836"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:37.271010" elapsed="0.003215"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:37.270982" elapsed="0.003267"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:52:37.274815" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:37.274433" elapsed="0.000409"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:37.275188" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:37.274934" elapsed="0.000313"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:37.275737" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:37.275431" elapsed="0.000333"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:37.275271" elapsed="0.000529"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:37.274914" elapsed="0.000907"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:52:37.276414" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:37.276002" elapsed="0.000439"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:37.276767" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:37.276532" elapsed="0.000292"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:37.277331" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:37.277007" elapsed="0.000350"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:37.276848" elapsed="0.000545"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:37.276512" elapsed="0.000902"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:52:37.277583" elapsed="0.000349"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:52:37.278425" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:37.278117" elapsed="0.000334"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:52:37.278623" elapsed="0.002188"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:52:37.265186" elapsed="0.015747"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:52:37.281298" elapsed="0.000048"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:52:37.281062" elapsed="0.000347"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:37.281012" elapsed="0.000434"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:52:37.290399" level="INFO">${text_normalized} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:52:37.282160" elapsed="0.008288"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:52:37.290525" elapsed="0.000064"/>
</return>
<msg time="2026-04-08T00:52:37.290843" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:52:37.236920" elapsed="0.054030"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:52:37.291428" elapsed="0.000031"/>
</return>
<msg time="2026-04-08T00:52:37.291606" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="PASS" start="2026-04-08T00:52:37.097609" elapsed="0.194024"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Json_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:37.291953" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:37.291717" elapsed="0.000447"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:37.291699" elapsed="0.000506"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:52:37.292251" elapsed="0.000028"/>
</return>
<arg>session=${session}</arg>
<arg>folder=${RESTCONF_MODULES_DIR}</arg>
<arg>verify=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Add arguments sensible for JSON data, return Get_Templated response text.
Optionally, verification against JSON data (may be iterated) is called.
Only subset of JSON data is verified and returned if JMES path is specified in
file ${folder}/jmespath.expr.</doc>
<status status="PASS" start="2026-04-08T00:52:37.093079" elapsed="0.199300"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:37.089128" elapsed="0.203295"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:37.089110" elapsed="0.203337"/>
</if>
<kw name="Resolve_Shard_Type_Class" owner="ClusterManagement">
<if>
<branch type="IF" condition="'${shard_type}' == 'config'">
<return>
<value>DistributedConfigDatastore</value>
<status status="NOT RUN" start="2026-04-08T00:52:37.293042" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:52:37.292934" elapsed="0.000152"/>
</branch>
<branch type="ELSE IF" condition="'${shard_type}' == 'operational'">
<return>
<value>DistributedOperationalDatastore</value>
<status status="PASS" start="2026-04-08T00:52:37.293231" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-08T00:52:37.293109" elapsed="0.000179"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:37.292916" elapsed="0.000395"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized shard type: ${shard_type}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:37.293455" elapsed="0.000021"/>
</kw>
<msg time="2026-04-08T00:52:37.293574" level="INFO">${type_class} = DistributedOperationalDatastore</msg>
<var>${type_class}</var>
<arg>shard_type=${shard_type}</arg>
<doc>Simple lookup for class name corresponding to desired type.</doc>
<status status="PASS" start="2026-04-08T00:52:37.292671" elapsed="0.000928"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:52:37.294133" level="INFO">${cluster_index} = 3</msg>
<var>${cluster_index}</var>
<arg>${member_index}+${NODE_ROLE_INDEX_START}-1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:37.293765" elapsed="0.000398"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:37.294814" level="INFO">${uri} = jolokia/read/org.opendaylight.controller:Category=Shards,name=member-3-shard-inventory-operational,type=DistributedOperationalDatastore</msg>
<var>${uri}</var>
<arg>${JOLOKIA_READ_URI}:Category=Shards,name=member-${cluster_index}-shard-${shard_name}-${shard_type},type=${type_class}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:37.294338" elapsed="0.000503"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:37.300781" level="INFO">jolokia/read/org.opendaylight.controller:Category=Shards,name=member-3-shard-inventory-operational,type=DistributedOperationalDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:37.300317" elapsed="0.000512"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:37.301448" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:37.300987" elapsed="0.000507"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:52:37.319014" level="INFO">GET Request : url=http://10.30.171.110:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-3-shard-inventory-operational,type=DistributedOperationalDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-3-shard-inventory-operational,type=DistributedOperationalDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:52:37.319158" level="INFO">GET Response : url=http://10.30.171.110:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-3-shard-inventory-operational,type=DistributedOperationalDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Wed, 08 Apr 2026 00:52:37 GMT', 'Expires': 'Tue, 07 Apr 2026 23:52:37 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-3-shard-inventory-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"ReadWriteTransactionCount":0,"SnapshotIndex":1674,"InMemoryJournalLogSize":1,"ReplicatedToAllIndex":1674,"Leader":"member-1-shard-inventory-operational","LastIndex":1675,"RaftState":"Follower","LastApplied":1675,"LastCommittedTransactionTime":"1970-01-01 00:00:00.000","PeerAddresses":"member-1-shard-inventory-operational: pekko:\/\/opendaylight-cluster-data@10.30.170.48:2550\/user\/shardmanager-operational\/member-1-shard-inventory-operational, member-2-shard-inventory-operational: pekko:\/\/opendaylight-cluster-data@10.30.170.131:2550\/user\/shardmanager-operational\/member-2-shard-inventory-operational","LastLogIndex":1675,"LastLeadershipChangeTime":"2026-04-08 00:46:45.934","FollowerInitialSyncStatus":true,"FollowerInfo":[],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"455.7 μs","CurrentTerm":2,"LastTerm":2,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-inventory-operational","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":0,"TxCohortCacheSize":0,"PeerVotingStates":"member-1-shard-inventory-operational: true, member-2-shard-inventory-operational: true","LastLogTerm":2,"StatRetrievalError":null,"CommitIndex":1675,"SnapshotTerm":2,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-3-shard-inventory-operational","LeadershipChangeCount":1,"InMemoryJournalDataSize":2149750},"timestamp":1775609557,"status":200} 
 </msg>
<msg time="2026-04-08T00:52:37.319368" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:52:37.312384" elapsed="0.007091"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:37.301564" elapsed="0.018169"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:37.319917" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:37.319763" elapsed="0.000490"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:37.301545" elapsed="0.018734"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:37.326430" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-3-shard-inventory-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"ReadWriteTransactionCount":0,"SnapshotIndex":1674,"InMemoryJournalLogSize":1,"ReplicatedToAllIndex":1674,"Leader":"member-1-shard-inventory-operational","LastIndex":1675,"RaftState":"Follower","LastApplied":1675,"LastCommittedTransactionTime":"1970-01-01 00:00:00.000","PeerAddresses":"member-1-shard-inventory-operational: pekko:\/\/opendaylight-cluster-data@10.30.170.48:2550\/user\/shardmanager-operational\/member-1-shard-inventory-operational, member-2-shard-inventory-operational: pekko:\/\/opendaylight-cluster-data@10.30.170.131:2550\/user\/shardmanager-operational\/member-2-shard-inventory-operational","LastLogIndex":1675,"LastLeadershipChangeTime":"2026-04-08 00:46:45.934","FollowerInitialSyncStatus":true,"FollowerInfo":[],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"455.7 μs","CurrentTerm":2,"LastTerm":2,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-inventory-operational","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":0,"TxCohortCacheSize":0,"PeerVotingStates":"member-1-shard-inventory-operational: true, member-2-shard-inventory-operational: true","LastLogTerm":2,"StatRetrievalError":null,"CommitIndex":1675,"SnapshotTerm":2,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-3-shard-inventory-operational","LeadershipChangeCount":1,"InMemoryJournalDataSize":2149750},"timestamp":1775609557,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:37.323099" elapsed="0.003490"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:37.321715" elapsed="0.004943"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:37.321688" elapsed="0.005024"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:37.330774" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:37.328034" elapsed="0.002839"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:37.326828" elapsed="0.004094"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:37.326803" elapsed="0.004157"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:52:37.332365" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:37.331599" elapsed="0.000827"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:37.333077" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:37.332594" elapsed="0.000586"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:37.334056" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:37.333553" elapsed="0.000550"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:37.333221" elapsed="0.000932"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:37.332574" elapsed="0.001696"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:52:37.335631" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:37.334883" elapsed="0.000807"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:37.336330" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:37.335854" elapsed="0.000563"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:37.337321" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:37.336779" elapsed="0.000589"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:37.336454" elapsed="0.000964"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:37.335834" elapsed="0.001618"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:52:37.337672" elapsed="0.000685"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:52:37.339142" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:37.338661" elapsed="0.000559"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:52:37.339501" elapsed="0.002318"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:52:37.320784" elapsed="0.021199"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:52:37.342316" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:52:37.342056" elapsed="0.000307"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:37.342037" elapsed="0.000348"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:52:37.345848" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-3-shard-inventory-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestam...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:52:37.342530" elapsed="0.003348"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:52:37.345929" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:52:37.346085" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-3-shard-inventory-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestam...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:52:37.295801" elapsed="0.050343"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:52:37.346350" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:52:37.346504" level="INFO">${data_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-3-shard-inventory-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestam...</msg>
<var>${data_text}</var>
<arg>uri=${uri}</arg>
<arg>session=${session}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-08T00:52:37.295053" elapsed="0.051477"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:52:37.347586" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-3-shard-inventory-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1775609...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:37.347096" elapsed="0.000520"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-08T00:52:37.347664" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:52:37.347838" level="INFO">${data_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-3-shard-inventory-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1775609...</msg>
<var>${data_object}</var>
<arg>${data_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-08T00:52:37.346751" elapsed="0.001114"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:52:37.348237" level="INFO">${value} = {'AbortTransactionsCount': 0, 'CommitIndex': 1675, 'CommittedTransactionsCount': 0, 'CurrentTerm': 2, 'FailedReadTransactionsCount': 0, 'FailedTransactionsCount': 0, 'FollowerInfo': [], 'FollowerIniti...</msg>
<var>${value}</var>
<arg>${data_object}</arg>
<arg>value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:52:37.348019" elapsed="0.000246"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:52:37.348618" level="INFO">${raft_property} = Follower</msg>
<var>${raft_property}</var>
<arg>${value}</arg>
<arg>${property}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:52:37.348419" elapsed="0.000224"/>
</kw>
<return>
<value>${raft_property}</value>
<status status="PASS" start="2026-04-08T00:52:37.348690" elapsed="0.000027"/>
</return>
<msg time="2026-04-08T00:52:37.348838" level="INFO">${raft_state} = Follower</msg>
<var>${raft_state}</var>
<arg>RaftState</arg>
<arg>${shard_name}</arg>
<arg>${shard_type}</arg>
<arg>${member_index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft property.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T00:52:37.087534" elapsed="0.261328"/>
</kw>
<return>
<value>${raft_state}</value>
<status status="PASS" start="2026-04-08T00:52:37.348918" elapsed="0.000025"/>
</return>
<msg time="2026-04-08T00:52:37.349081" level="INFO">${raft_state} = Follower</msg>
<var>${raft_state}</var>
<arg>shard_name=${shard_name}</arg>
<arg>shard_type=${ds_type}</arg>
<arg>member_index=${index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft status.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T00:52:37.086579" elapsed="0.262527"/>
</kw>
<if>
<branch type="IF" condition="'Follower' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${follower_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-08T00:52:37.349418" elapsed="0.000188"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:37.349203" elapsed="0.000441"/>
</branch>
<branch type="ELSE IF" condition="'Leader' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${leader_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:37.349810" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:37.349668" elapsed="0.000195"/>
</branch>
<branch type="ELSE IF" condition="${validate}">
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized Raft state: ${raft_state}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:37.350029" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:37.349885" elapsed="0.000194"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:37.349184" elapsed="0.000917"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T00:52:37.086414" elapsed="0.263710"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-08T00:52:36.559899" elapsed="0.790259"/>
</for>
<return>
<value>${leader_list}</value>
<value>${follower_list}</value>
<status status="PASS" start="2026-04-08T00:52:37.350278" elapsed="0.000027"/>
</return>
<msg time="2026-04-08T00:52:37.350477" level="INFO">${leader_list} = [1]</msg>
<msg time="2026-04-08T00:52:37.350524" level="INFO">${follower_list} = [2, 3]</msg>
<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="PASS" start="2026-04-08T00:52:36.555822" elapsed="0.794725"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T00:52:37.350979" level="INFO">Length is 1.</msg>
<msg time="2026-04-08T00:52:37.351054" level="INFO">${leader_count} = 1</msg>
<var>${leader_count}</var>
<arg>${leader_list}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T00:52:37.350718" elapsed="0.000360"/>
</kw>
<if>
<branch type="IF" condition="${leader_count} &lt; 1">
<kw name="Fail" owner="BuiltIn">
<arg>No leader found.</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:37.351560" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:37.351337" elapsed="0.000277"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:37.351128" elapsed="0.000510"/>
</if>
<kw name="Length Should Be" owner="BuiltIn">
<msg time="2026-04-08T00:52:37.353856" level="INFO">Length is 1.</msg>
<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="PASS" start="2026-04-08T00:52:37.351775" elapsed="0.002130"/>
</kw>
<kw name="Get From List" owner="Collections">
<msg time="2026-04-08T00:52:37.354362" level="INFO">${leader} = 1</msg>
<var>${leader}</var>
<arg>${leader_list}</arg>
<arg>0</arg>
<doc>Returns the value specified with an ``index`` from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:52:37.354103" elapsed="0.000285"/>
</kw>
<return>
<value>${leader}</value>
<value>${follower_list}</value>
<status status="PASS" start="2026-04-08T00:52:37.354435" elapsed="0.000029"/>
</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="PASS" start="2026-04-08T00:52:36.553251" elapsed="0.801338"/>
</kw>
<var name="${shard_name}">inventory</var>
<status status="PASS" start="2026-04-08T00:52:36.553014" elapsed="0.801623"/>
</iter>
<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-04-08T00:52:37.358925" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:52:37.358544" elapsed="0.000408"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:52:37.359431" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:52:37.359109" elapsed="0.000349"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:52:37.359501" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:52:37.359669" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:52:37.358160" elapsed="0.001535"/>
</kw>
<kw name="Sort List" owner="Collections">
<arg>${index_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="PASS" start="2026-04-08T00:52:37.359849" elapsed="0.000152"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:52:37.360512" level="INFO">${ds_type} = operational</msg>
<var>${ds_type}</var>
<arg>'${shard_type}' != 'config'</arg>
<arg>operational</arg>
<arg>config</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:52:37.360178" elapsed="0.000360"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:52:37.360929" level="INFO">${leader_list} = []</msg>
<var>${leader_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:52:37.360693" elapsed="0.000261"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:52:37.361409" level="INFO">${follower_list} = []</msg>
<var>${follower_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:52:37.361098" elapsed="0.000338"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_Raft_State_Of_Shard_At_Member" owner="ClusterManagement">
<kw name="Get_Raft_Property_From_Shard_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:37.363841" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:37.363517" elapsed="0.000351"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:52:37.363914" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:52:37.364061" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:52:37.363161" elapsed="0.000924"/>
</kw>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Get_As_Json_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:37.446886" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:37.446508" elapsed="0.000409"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:52:37.447682" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:52:37.447433" elapsed="0.000325">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-08T00:52:37.447851" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:52:37.447081" elapsed="0.000794"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:52:37.448434" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:52:37.448038" elapsed="0.000423"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T00:52:37.448757" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-08T00:52:37.448913" level="INFO">${template} = /rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T00:52:37.448619" elapsed="0.000319"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:37.449408" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:37.449141" elapsed="0.000311"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:37.450447" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:37.450142" elapsed="0.000349"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-08T00:52:37.450922" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-08T00:52:37.450650" elapsed="0.000298"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:37.451287" elapsed="0.000022"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:37.451490" elapsed="0.000023"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:37.451660" elapsed="0.000020"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-08T00:52:37.451137" elapsed="0.000578"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-08T00:52:37.450997" elapsed="0.000748"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-08T00:52:37.451789" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:52:37.451948" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-08T00:52:37.449824" elapsed="0.002149"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:37.449528" elapsed="0.002477"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:37.452189" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:37.452029" elapsed="0.000365"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:37.449506" elapsed="0.002910"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:52:37.452989" level="INFO">${final_text} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:37.452557" elapsed="0.000460"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T00:52:37.453065" 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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="PASS" start="2026-04-08T00:52:37.445874" elapsed="0.007338"/>
</kw>
<msg time="2026-04-08T00:52:37.453266" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:52:37.433739" elapsed="0.019607"/>
</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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:37.465496" elapsed="0.000042"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:37.477421" elapsed="0.000041"/>
</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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:37.489258" elapsed="0.000040"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:37.489993" elapsed="0.000036"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:37.490743" elapsed="0.000037"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:37.491375" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:37.491196" elapsed="0.000238"/>
</branch>
<status status="NOT RUN" start="2026-04-08T00:52:37.491179" elapsed="0.000278"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:37.491616" elapsed="0.000021"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:37.491799" elapsed="0.000021"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:37.491981" elapsed="0.000021"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-08T00:52:37.491115" elapsed="0.000941"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-08T00:52:37.490896" elapsed="0.001199"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:37.492791" elapsed="0.000035"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-08T00:52:37.492907" elapsed="0.000046"/>
</return>
<msg time="2026-04-08T00:52:37.493123" level="INFO">${uri} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-08T00:52:37.427700" elapsed="0.065545"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:52:37.496062" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:52:37.495822" elapsed="0.000304">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-08T00:52:37.496327" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:52:37.495390" elapsed="0.000980"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:37.496869" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:37.496500" elapsed="0.000434"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:37.497545" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:37.497254" elapsed="0.000317"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:37.496973" elapsed="0.000643"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:37.496449" elapsed="0.001206"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:52:37.500757" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:52:37.498384" elapsed="0.002418"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-08T00:52:37.500878" elapsed="0.000063"/>
</return>
<msg time="2026-04-08T00:52:37.501210" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:52:37.494229" elapsed="0.007088"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:52:37.504054" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:52:37.503801" elapsed="0.000317">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-08T00:52:37.504323" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:52:37.503376" elapsed="0.000991"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-08T00:52:37.504742" elapsed="0.000079"/>
</return>
<status status="PASS" start="2026-04-08T00:52:37.504497" elapsed="0.000390"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:37.504446" elapsed="0.000480"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:37.505660" elapsed="0.000036"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:37.506417" elapsed="0.000035"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-08T00:52:37.506524" elapsed="0.000048"/>
</return>
<msg time="2026-04-08T00:52:37.508930" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:52:37.502102" elapsed="0.006970"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:37.512920" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:37.512537" elapsed="0.000481"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:37.514160" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:37.513783" elapsed="0.000491"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:52:37.525432" level="INFO">GET Request : url=http://10.30.170.48:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 path_url=/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01jewze00gqgu8yuon50tdwq65226.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:52:37.526221" level="INFO">GET Response : url=http://10.30.170.48:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Transfer-Encoding': 'chunked'} 
 body={"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","hidden-symmetric-keys","encrypted-private-keys","asymmetrically-encrypted-value-format","cms-encrypted-data-format","cleartext-private-keys","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["ssh-client-keepalives","client-ident-hostbased","client-ident-publickey","client-ident-password"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-ex... (set the log level to DEBUG or TRACE to see the full content) 
 </msg>
<msg time="2026-04-08T00:52:37.526510" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:52:37.516584" elapsed="0.009964"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:37.514400" elapsed="0.012226"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:37.527026" elapsed="0.000032"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:37.526687" elapsed="0.000442"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:37.514349" elapsed="0.012872"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:37.533210" level="INFO">{"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","hidden-symmetric-keys","encrypted-private-keys","asymmetrically-encrypted-value-format","cms-encrypted-data-format","cleartext-private-keys","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["ssh-client-keepalives","client-ident-hostbased","client-ident-publickey","client-ident-password"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-experimenter-types?revision=2015-10-20","namespace":"urn:opendaylight:openflowplugin:experimenter:types","conformance-type":"import"},{"name":"ietf-ip_2018-02-22","revision":"2018-02-22","schema":"/rests/modules/ietf-ip?revision=2018-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-ip","conformance-type":"import","feature":["ipv6-privacy-autoconf","ipv4-non-contiguous-netmasks"]},{"name":"ietf-tcp-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-client","conformance-type":"import","feature":["local-binding-supported","tcp-client-keepalives"]},{"name":"node-config_2014-10-15","revision":"2014-10-15","schema":"/rests/modules/node-config?revision=2014-10-15","namespace":"urn:opendaylight:module:config","conformance-type":"import"},{"name":"ietf-restconf_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf","conformance-type":"import"},{"name":"ietf-datastores_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-datastores?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-datastores","conformance-type":"import"},{"name":"ietf-yang-patch_2017-02-22","revision":"2017-02-22","schema":"/rests/modules/ietf-yang-patch?revision=2017-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-patch","conformance-type":"import"},{"name":"sal-group_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-group?revision=2013-09-18","namespace":"urn:opendaylight:group:service","conformance-type":"import"},{"name":"odl-codegen-extensions_2024-06-27","revision":"2024-06-27","schema":"/rests/modules/odl-codegen-extensions?revision=2024-06-27","namespace":"urn:opendaylight:yang:extension:codegen","conformance-type":"import"},{"name":"sal-meter_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-meter?revision=2013-09-18","namespace":"urn:opendaylight:meter:service","conformance-type":"import"},{"name":"ietf-interfaces_2018-02-20","revision":"2018-02-20","schema":"/rests/modules/ietf-interfaces?revision=2018-02-20","namespace":"urn:ietf:params:xml:ns:yang:ietf-interfaces","conformance-type":"import","feature":["pre-provisioning","if-mib","arbitrary-names"]},{"name":"opendaylight-l2-types_2013-08-27","revision":"2013-08-27","schema":"/rests/modules/opendaylight-l2-types?revision=2013-08-27","namespace":"urn:opendaylight:l2:types","conformance-type":"import"},{"name":"opendaylight-flow-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-flow-types?revision=2013-10-26","namespace":"urn:opendaylight:flow:types","conformance-type":"import"},{"name":"lldp-speaker-config_2016-05-12","revision":"2016-05-12","schema":"/rests/modules/lldp-speaker-config?revision=2016-05-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker:config","conformance-type":"import"},{"name":"aaa-cert_2015-11-26","revision":"2015-11-26","schema":"/rests/modules/aaa-cert?revision=2015-11-26","namespace":"urn:opendaylight:yang:aaa:cert","conformance-type":"import"},{"name":"openflow-action_2015-02-03","revision":"2015-02-03","schema":"/rests/modules/openflow-action?revision=2015-02-03","namespace":"urn:opendaylight:openflow:common:action","conformance-type":"import"},{"name":"openflow-approved-extensions_2016-08-02","revision":"2016-08-02","schema":"/rests/modules/openflow-approved-extensions?revision=2016-08-02","namespace":"urn:opendaylight:openflow:approved:extensions","conformance-type":"import"},{"name":"nc-notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/nc-notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netmod:notification","conformance-type":"import"},{"name":"ietf-netconf-nmda_2019-01-07","revision":"2019-01-07","schema":"/rests/modules/ietf-netconf-nmda?revision=2019-01-07","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-nmda","conformance-type":"import","feature":["with-defaults","origin"]},{"name":"ietf-tcp-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-common","conformance-type":"import","feature":["keepalives-supported"]},{"name":"network-topology_2013-10-21","revision":"2013-10-21","schema":"/rests/modules/network-topology?revision=2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:network-topology","conformance-type":"import"},{"name":"aaa-encrypt-service-config_2024-02-02","revision":"2024-02-02","schema":"/rests/modules/aaa-encrypt-service-config?revision=2024-02-02","namespace":"config:aaa:authn:encrypt:service:config","conformance-type":"import"},{"name":"openflow-instruction_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-instruction?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:instruction","conformance-type":"import"},{"name":"ietf-tls-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-client","conformance-type":"import","feature":["client-ident-x509-cert","server-auth-x509-cert"]},{"name":"opendaylight-group-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-group-statistics?revision=2013-11-11","namespace":"urn:opendaylight:group:statistics","conformance-type":"import"},{"name":"cluster-admin_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/cluster-admin?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:cluster:admin","conformance-type":"import"},{"name":"opendaylight-flow-statistics_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-flow-statistics?revision=2013-08-19","namespace":"urn:opendaylight:flow:statistics","conformance-type":"import"},{"name":"opendaylight-table-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-table-types?revision=2013-10-26","namespace":"urn:opendaylight:table:types","conformance-type":"import"},{"name":"forwarding-rules-manager-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/forwarding-rules-manager-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:forwardingrules-manager:config","conformance-type":"import"},{"name":"odl-srm-types_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-types?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:types","conformance-type":"import"},{"name":"ietf-x509-cert-to-name_2014-12-10","revision":"2014-12-10","schema":"/rests/modules/ietf-x509-cert-to-name?revision=2014-12-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-x509-cert-to-name","conformance-type":"import"},{"name":"flow-node-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-node-inventory?revision=2013-08-19","namespace":"urn:opendaylight:flow:inventory","conformance-type":"import"},{"name":"flow-errors_2013-11-16","revision":"2013-11-16","schema":"/rests/modules/flow-errors?revision=2013-11-16","namespace":"urn:opendaylight:flow:errors","conformance-type":"import"},{"name":"ietf-netconf_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:netconf:base:1.0","conformance-type":"import","feature":["xpath","url","rollback-on-error","validate","startup","candidate","confirmed-commit","writable-running"]},{"name":"iana-ssh-public-key-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-public-key-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-public-key-algs","conformance-type":"import"},{"name":"aaa-cert-mdsal_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/aaa-cert-mdsal?revision=2016-03-21","namespace":"urn:opendaylight:yang:aaa:cert:mdsal","conformance-type":"import"},{"name":"odl-device-notification_2024-02-18","revision":"2024-02-18","schema":"/rests/modules/odl-device-notification?revision=2024-02-18","namespace":"urn:opendaylight:device:notification","conformance-type":"import"},{"name":"ietf-origin_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-origin?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-origin","conformance-type":"import"},{"name":"openflow-augments_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-augments?revision=2015-02-25","namespace":"urn:opendaylight:openflow:augments","conformance-type":"import"},{"name":"iana-ssh-encryption-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-encryption-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-encryption-algs","conformance-type":"import"},{"name":"ietf-truststore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-truststore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-truststore","conformance-type":"import","feature":["inline-definitions-supported"]},{"name":"distributed-datastore-provider_2025-01-30","revision":"2025-01-30","schema":"/rests/modules/distributed-datastore-provider?revision=2025-01-30","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:distributed-datastore-provider","conformance-type":"import"},{"name":"opendaylight-group-types_2013-10-18","revision":"2013-10-18","schema":"/rests/modules/opendaylight-group-types?revision=2013-10-18","namespace":"urn:opendaylight:group:types","conformance-type":"import"},{"name":"sal-remote-augment_2023-11-03","revision":"2023-11-03","schema":"/rests/modules/sal-remote-augment?revision=2023-11-03","namespace":"urn:sal:restconf:event:subscription","conformance-type":"import"},{"name":"opendaylight-ipv6-arbitrary-bitmask-fields_2016-02-24","revision":"2016-02-24","schema":"/rests/modules/opendaylight-ipv6-arbitrary-bitmask-fields?revision=2016-02-24","namespace":"urn:opendaylight:opendaylight-ipv6-arbitrary-bitmask-fields","conformance-type":"import"},{"name":"sal-flows-batch_2016-03-14","revision":"2016-03-14","schema":"/rests/modules/sal-flows-batch?revision=2016-03-14","namespace":"urn:opendaylight:flows:service","conformance-type":"import"},{"name":"ietf-tls-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-common","conformance-type":"import","feature":["tls12","hello-params","tls13"]},{"name":"openflow-types_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-types?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:types","conformance-type":"import"},{"name":"ietf-netconf-with-defaults_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf-with-defaults?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults","conformance-type":"import"},{"name":"odl-srm-ops_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-ops?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:ops","conformance-type":"import"},{"name":"odl-general-entity_2015-09-30","revision":"2015-09-30","schema":"/rests/modules/odl-general-entity?revision=2015-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:mdsal:core:general-entity","conformance-type":"import"},{"name":"iana-ssh-key-exchange-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-key-exchange-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-key-exchange-algs","conformance-type":"import"},{"name":"node-ssl-connection-error_2019-07-23","revision":"2019-07-23","schema":"/rests/modules/node-ssl-connection-error?revision=2019-07-23","namespace":"urn:opendaylight:node-ssl-connection-error:service","conformance-type":"import"},{"name":"openflow-protocol_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-protocol?revision=2013-07-31","namespace":"urn:opendaylight:openflow:protocol","conformance-type":"import"},{"name":"ietf-udp-server_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-server?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-server","conformance-type":"import"},{"name":"ietf-keystore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-keystore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-keystore","conformance-type":"import","feature":["asymmetric-keys","inline-definitions-supported"]},{"name":"aaa_2016-12-14","revision":"2016-12-14","schema":"/rests/modules/aaa?revision=2016-12-14","namespace":"urn:opendaylight:params:xml:ns:yang:aaa","conformance-type":"import"},{"name":"aaa-cert-rpc_2015-12-15","revision":"2015-12-15","schema":"/rests/modules/aaa-cert-rpc?revision=2015-12-15","namespace":"urn:opendaylight:yang:aaa:cert:rpc","conformance-type":"import"},{"name":"system-notifications_2013-09-27","revision":"2013-09-27","schema":"/rests/modules/system-notifications?revision=2013-09-27","namespace":"urn:opendaylight:openflow:system","conformance-type":"import"},{"name":"sal-flat-batch_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/sal-flat-batch?revision=2016-03-21","namespace":"urn:opendaylight:flat-batch:service","conformance-type":"import"},{"name":"notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netconf:notification:1.0","conformance-type":"import"},{"name":"sal-remote_2014-01-14","revision":"2014-01-14","schema":"/rests/modules/sal-remote?revision=2014-01-14","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:remote","conformance-type":"import"},{"name":"yang-ext_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/yang-ext?revision=2013-07-09","namespace":"urn:opendaylight:yang:extension:yang-ext","conformance-type":"import"},{"name":"opendaylight-multipart-types_2017-01-12","revision":"2017-01-12","schema":"/rests/modules/opendaylight-multipart-types?revision=2017-01-12","namespace":"urn:opendaylight:multipart:types","conformance-type":"import"},{"name":"opendaylight-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-inventory?revision=2013-08-19","namespace":"urn:opendaylight:inventory","conformance-type":"import"},{"name":"sal-queue_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-queue?revision=2015-03-05","namespace":"urn:opendaylight:queue:service","conformance-type":"import"},{"name":"sal-groups-batch_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/sal-groups-batch?revision=2016-03-15","namespace":"urn:opendaylight:groups:service","conformance-type":"import"},{"name":"arbitrator-reconcile_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/arbitrator-reconcile?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:arbitrator-reconcile:service","conformance-type":"import"},{"name":"ietf-yang-metadata_2016-08-05","revision":"2016-08-05","schema":"/rests/modules/ietf-yang-metadata?revision=2016-08-05","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-metadata","conformance-type":"import"},{"name":"opendaylight-arbitrary-bitmask-fields_2016-01-30","revision":"2016-01-30","schema":"/rests/modules/opendaylight-arbitrary-bitmask-fields?revision=2016-01-30","namespace":"urn:opendaylight:arbitrary:bitmask:fields","conformance-type":"import"},{"name":"ietf-udp-client_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-client?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-client","conformance-type":"import","feature":["local-binding"]},{"name":"opendaylight-meter-types_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/opendaylight-meter-types?revision=2013-09-18","namespace":"urn:opendaylight:meter:types","conformance-type":"import"},{"name":"opendaylight-action-types_2013-11-12","revision":"2013-11-12","schema":"/rests/modules/opendaylight-action-types?revision=2013-11-12","namespace":"urn:opendaylight:action:types","conformance-type":"import"},{"name":"sal-role_2015-07-27","revision":"2015-07-27","schema":"/rests/modules/sal-role?revision=2015-07-27","namespace":"urn:opendaylight:role:service","conformance-type":"import"},{"name":"openflow-provider-config_2016-05-10","revision":"2016-05-10","schema":"/rests/modules/openflow-provider-config?revision=2016-05-10","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:provider:config","conformance-type":"import"},{"name":"odl-serviceutils-upgrade_2018-07-02","revision":"2018-07-02","schema":"/rests/modules/odl-serviceutils-upgrade?revision=2018-07-02","namespace":"urn:opendaylight:serviceutils:upgrade","conformance-type":"import"},{"name":"opendaylight-match-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-match-types?revision=2013-10-26","namespace":"urn:opendaylight:model:match:types","conformance-type":"import"},{"name":"ietf-restconf-server_2024-08-14","revision":"2024-08-14","schema":"/rests/modules/ietf-restconf-server?revision=2024-08-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-server","conformance-type":"import","feature":["http-listen","https-listen"]},{"name":"reconciliation-result-state_2017-07-13","revision":"2017-07-13","schema":"/rests/modules/reconciliation-result-state?revision=2017-07-13","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:rf:state","conformance-type":"import"},{"name":"onf-extensions_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/onf-extensions?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf","conformance-type":"import"},{"name":"sal-table_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/sal-table?revision=2013-10-26","namespace":"urn:opendaylight:table:service","conformance-type":"import"},{"name":"iana-http-versions_2026-02-04","revision":"2026-02-04","schema":"/rests/modules/iana-http-versions?revision=2026-02-04","namespace":"urn:ietf:params:xml:ns:yang:iana-http-versions","conformance-type":"import"},{"name":"opendaylight-direct-statistics_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/opendaylight-direct-statistics?revision=2016-05-11","namespace":"urn:opendaylight:direct:statistics","conformance-type":"import"},{"name":"opendaylight-port-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-port-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:port","conformance-type":"import"},{"name":"sal-async-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/sal-async-config?revision=2017-06-19","namespace":"urn:opendaylight:async-config:service","conformance-type":"import"},{"name":"aaa-password-service-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-password-service-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:password:service:config","conformance-type":"import"},{"name":"ietf-yang-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-yang-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-types","conformance-type":"import"},{"name":"opendaylight-queue-statistics_2013-12-16","revision":"2013-12-16","schema":"/rests/modules/opendaylight-queue-statistics?revision=2013-12-16","namespace":"urn:opendaylight:queue:statistics","conformance-type":"import"},{"name":"sal-bundle_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/sal-bundle?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf:bundle:service","conformance-type":"import"},{"name":"ietf-restconf-subscribed-notifications_2019-11-17","revision":"2019-11-17","schema":"/rests/modules/ietf-restconf-subscribed-notifications?revision=2019-11-17","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-subscribed-notifications","conformance-type":"import"},{"name":"sal-meters-batch_2016-03-16","revision":"2016-03-16","schema":"/rests/modules/sal-meters-batch?revision=2016-03-16","namespace":"urn:opendaylight:meters:service","conformance-type":"import"},{"name":"odl-entity-owners","revision":"","schema":"/rests/modules/odl-entity-owners","namespace":"urn:opendaylight:params:xml:ns:yang:controller:entity-owners","conformance-type":"import"},{"name":"sal-experimenter-mp-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-mp-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-mp-message:service","conformance-type":"import"},{"name":"packet-processing_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/packet-processing?revision=2013-07-09","namespace":"urn:opendaylight:packet:service","conformance-type":"import"},{"name":"openflow-configuration_2014-06-30","revision":"2014-06-30","schema":"/rests/modules/openflow-configuration?revision=2014-06-30","namespace":"urn:opendaylight:openflow:config","conformance-type":"import"},{"name":"odl-srm-rpcs_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-rpcs?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:rpc","conformance-type":"import"},{"name":"ietf-netconf-acm_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-netconf-acm?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-acm","conformance-type":"import"},{"name":"iana-crypt-hash_2014-08-06","revision":"2014-08-06","schema":"/rests/modules/iana-crypt-hash?revision=2014-08-06","namespace":"urn:ietf:params:xml:ns:yang:iana-crypt-hash","conformance-type":"import","feature":["crypt-hash-sha-512","crypt-hash-sha-256","crypt-hash-md5"]},{"name":"openflow-extensible-match_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-extensible-match?revision=2015-02-25","namespace":"urn:opendaylight:openflow:oxm","conformance-type":"import"}],"module-set-id":"2"}}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:37.529604" elapsed="0.004049"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:37.529296" elapsed="0.004408"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:37.529265" elapsed="0.004473"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:37.537289" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:37.534161" elapsed="0.003192"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:37.533848" elapsed="0.003552"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:37.533823" elapsed="0.003611"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:52:37.538230" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:37.537683" elapsed="0.000585"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:37.538721" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:37.538394" elapsed="0.000406"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:37.539549" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:37.539058" elapsed="0.000529"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:37.538832" elapsed="0.000804"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:37.538367" elapsed="0.001299"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:52:37.540410" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:37.539912" elapsed="0.000524"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:37.540756" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:37.540525" elapsed="0.000288"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:37.541313" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:37.540991" elapsed="0.000348"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:37.540836" elapsed="0.000538"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:37.540506" elapsed="0.000890"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:52:37.541562" elapsed="0.000346"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:52:37.542408" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:37.542095" elapsed="0.000340"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:52:37.542606" elapsed="0.002181"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:52:37.528283" elapsed="0.016625"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:52:37.545268" elapsed="0.000046"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:52:37.545036" elapsed="0.000341"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:37.544986" elapsed="0.000427"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:52:37.554429" level="INFO">${text_normalized} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:52:37.546112" elapsed="0.008367"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:52:37.554556" elapsed="0.000063"/>
</return>
<msg time="2026-04-08T00:52:37.554875" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:52:37.509738" elapsed="0.045245"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:52:37.555465" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:52:37.555679" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="PASS" start="2026-04-08T00:52:37.372243" elapsed="0.183466"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Json_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:37.556031" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:37.555794" elapsed="0.000440"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:37.555776" elapsed="0.000486"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:52:37.556296" elapsed="0.000027"/>
</return>
<arg>session=${session}</arg>
<arg>folder=${RESTCONF_MODULES_DIR}</arg>
<arg>verify=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Add arguments sensible for JSON data, return Get_Templated response text.
Optionally, verification against JSON data (may be iterated) is called.
Only subset of JSON data is verified and returned if JMES path is specified in
file ${folder}/jmespath.expr.</doc>
<status status="PASS" start="2026-04-08T00:52:37.368190" elapsed="0.188233"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:37.364153" elapsed="0.192314"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:37.364136" elapsed="0.192356"/>
</if>
<kw name="Resolve_Shard_Type_Class" owner="ClusterManagement">
<if>
<branch type="IF" condition="'${shard_type}' == 'config'">
<return>
<value>DistributedConfigDatastore</value>
<status status="NOT RUN" start="2026-04-08T00:52:37.557090" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:52:37.556982" elapsed="0.000153"/>
</branch>
<branch type="ELSE IF" condition="'${shard_type}' == 'operational'">
<return>
<value>DistributedOperationalDatastore</value>
<status status="PASS" start="2026-04-08T00:52:37.557280" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-08T00:52:37.557161" elapsed="0.000177"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:37.556964" elapsed="0.000398"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized shard type: ${shard_type}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:37.557506" elapsed="0.000021"/>
</kw>
<msg time="2026-04-08T00:52:37.557624" level="INFO">${type_class} = DistributedOperationalDatastore</msg>
<var>${type_class}</var>
<arg>shard_type=${shard_type}</arg>
<doc>Simple lookup for class name corresponding to desired type.</doc>
<status status="PASS" start="2026-04-08T00:52:37.556718" elapsed="0.000931"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:52:37.558214" level="INFO">${cluster_index} = 1</msg>
<var>${cluster_index}</var>
<arg>${member_index}+${NODE_ROLE_INDEX_START}-1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:37.557816" elapsed="0.000427"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:37.558858" level="INFO">${uri} = jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-topology-operational,type=DistributedOperationalDatastore</msg>
<var>${uri}</var>
<arg>${JOLOKIA_READ_URI}:Category=Shards,name=member-${cluster_index}-shard-${shard_name}-${shard_type},type=${type_class}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:37.558397" elapsed="0.000488"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:37.564508" level="INFO">jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-topology-operational,type=DistributedOperationalDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:37.563950" elapsed="0.000612"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:37.565158" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:37.564718" elapsed="0.000571"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:52:37.582569" level="INFO">GET Request : url=http://10.30.170.48:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-topology-operational,type=DistributedOperationalDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-topology-operational,type=DistributedOperationalDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:52:37.582702" level="INFO">GET Response : url=http://10.30.170.48:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-topology-operational,type=DistributedOperationalDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Wed, 08 Apr 2026 00:52:37 GMT', 'Expires': 'Tue, 07 Apr 2026 23:52:37 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-1-shard-topology-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"ReadWriteTransactionCount":99,"SnapshotIndex":254,"InMemoryJournalLogSize":1,"ReplicatedToAllIndex":254,"Leader":"member-1-shard-topology-operational","LastIndex":255,"RaftState":"Leader","LastApplied":255,"LastCommittedTransactionTime":"2026-04-08 00:52:31.227","PeerAddresses":"member-2-shard-topology-operational: pekko:\/\/opendaylight-cluster-data@10.30.170.131:2550\/user\/shardmanager-operational\/member-2-shard-topology-operational, member-3-shard-topology-operational: pekko:\/\/opendaylight-cluster-data@10.30.171.110:2550\/user\/shardmanager-operational\/member-3-shard-topology-operational","LastLogIndex":255,"LastLeadershipChangeTime":"2026-04-08 00:46:45.974","FollowerInitialSyncStatus":false,"FollowerInfo":[{"timeSinceLastActivity":"00:00:00.228","active":true,"matchIndex":255,"voting":true,"id":"member-2-shard-topology-operational","nextIndex":256},{"timeSinceLastActivity":"00:00:00.228","active":true,"matchIndex":255,"voting":true,"id":"member-3-shard-topology-operational","nextIndex":256}],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"383.6 μs","CurrentTerm":2,"LastTerm":2,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-topology-operational","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":85,"TxCohortCacheSize":0,"PeerVotingStates":"member-2-shard-topology-operational: true, member-3-shard-topology-operational: true","LastLogTerm":2,"StatRetrievalError":null,"CommitIndex":255,"SnapshotTerm":2,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":28,"ShardName":"member-1-shard-topology-operational","LeadershipChangeCount":1,"InMemoryJournalDataSize":47783},"timestamp":1775609557,"status":200} 
 </msg>
<msg time="2026-04-08T00:52:37.582893" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:52:37.576219" elapsed="0.006782"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:37.565358" elapsed="0.017926"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:37.583467" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:37.583314" elapsed="0.000503"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:37.565339" elapsed="0.018505"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:37.588547" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-1-shard-topology-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"ReadWriteTransactionCount":99,"SnapshotIndex":254,"InMemoryJournalLogSize":1,"ReplicatedToAllIndex":254,"Leader":"member-1-shard-topology-operational","LastIndex":255,"RaftState":"Leader","LastApplied":255,"LastCommittedTransactionTime":"2026-04-08 00:52:31.227","PeerAddresses":"member-2-shard-topology-operational: pekko:\/\/opendaylight-cluster-data@10.30.170.131:2550\/user\/shardmanager-operational\/member-2-shard-topology-operational, member-3-shard-topology-operational: pekko:\/\/opendaylight-cluster-data@10.30.171.110:2550\/user\/shardmanager-operational\/member-3-shard-topology-operational","LastLogIndex":255,"LastLeadershipChangeTime":"2026-04-08 00:46:45.974","FollowerInitialSyncStatus":false,"FollowerInfo":[{"timeSinceLastActivity":"00:00:00.228","active":true,"matchIndex":255,"voting":true,"id":"member-2-shard-topology-operational","nextIndex":256},{"timeSinceLastActivity":"00:00:00.228","active":true,"matchIndex":255,"voting":true,"id":"member-3-shard-topology-operational","nextIndex":256}],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"383.6 μs","CurrentTerm":2,"LastTerm":2,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-topology-operational","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":85,"TxCohortCacheSize":0,"PeerVotingStates":"member-2-shard-topology-operational: true, member-3-shard-topology-operational: true","LastLogTerm":2,"StatRetrievalError":null,"CommitIndex":255,"SnapshotTerm":2,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":28,"ShardName":"member-1-shard-topology-operational","LeadershipChangeCount":1,"InMemoryJournalDataSize":47783},"timestamp":1775609557,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:37.586029" elapsed="0.002633"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:37.585044" elapsed="0.003667"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:37.585025" elapsed="0.003725"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:37.593392" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:37.590012" elapsed="0.003520"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:37.588832" elapsed="0.004769"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:37.588814" elapsed="0.004841"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:52:37.595593" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:37.594529" elapsed="0.001152"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:37.596619" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:37.595912" elapsed="0.000832"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:37.597865" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:37.597363" elapsed="0.000549"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:37.596796" elapsed="0.001170"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:37.595884" elapsed="0.002122"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:52:37.599457" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:37.598700" elapsed="0.000817"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:37.600142" elapsed="0.000176"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:37.599681" elapsed="0.000692"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:37.601253" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:37.600739" elapsed="0.000560"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:37.600411" elapsed="0.000937"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:37.599661" elapsed="0.001721"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:52:37.601607" elapsed="0.000638"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:52:37.603044" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:37.602548" elapsed="0.000555"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:52:37.603405" elapsed="0.002562"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:52:37.584356" elapsed="0.021778"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:52:37.606433" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:52:37.606296" elapsed="0.000184"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:37.606268" elapsed="0.000234"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:52:37.610085" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-1-shard-topology-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:52:37.606648" elapsed="0.003466"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:52:37.610229" elapsed="0.000036"/>
</return>
<msg time="2026-04-08T00:52:37.610404" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-1-shard-topology-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:52:37.559862" elapsed="0.050568"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:52:37.610488" elapsed="0.000027"/>
</return>
<msg time="2026-04-08T00:52:37.610637" level="INFO">${data_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-1-shard-topology-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp...</msg>
<var>${data_text}</var>
<arg>uri=${uri}</arg>
<arg>session=${session}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-08T00:52:37.559100" elapsed="0.051563"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:52:37.611762" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-1-shard-topology-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 17756095...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:37.611276" elapsed="0.000515"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-08T00:52:37.611840" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:52:37.612017" level="INFO">${data_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-1-shard-topology-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 17756095...</msg>
<var>${data_object}</var>
<arg>${data_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-08T00:52:37.610893" elapsed="0.001152"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:52:37.612455" level="INFO">${value} = {'AbortTransactionsCount': 0, 'CommitIndex': 255, 'CommittedTransactionsCount': 85, 'CurrentTerm': 2, 'FailedReadTransactionsCount': 0, 'FailedTransactionsCount': 0, 'FollowerInfo': [{'active': True, ...</msg>
<var>${value}</var>
<arg>${data_object}</arg>
<arg>value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:52:37.612218" elapsed="0.000264"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:52:37.612834" level="INFO">${raft_property} = Leader</msg>
<var>${raft_property}</var>
<arg>${value}</arg>
<arg>${property}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:52:37.612635" elapsed="0.000224"/>
</kw>
<return>
<value>${raft_property}</value>
<status status="PASS" start="2026-04-08T00:52:37.612905" elapsed="0.000027"/>
</return>
<msg time="2026-04-08T00:52:37.613055" level="INFO">${raft_state} = Leader</msg>
<var>${raft_state}</var>
<arg>RaftState</arg>
<arg>${shard_name}</arg>
<arg>${shard_type}</arg>
<arg>${member_index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft property.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T00:52:37.362563" elapsed="0.250517"/>
</kw>
<return>
<value>${raft_state}</value>
<status status="PASS" start="2026-04-08T00:52:37.613136" elapsed="0.000041"/>
</return>
<msg time="2026-04-08T00:52:37.613304" level="INFO">${raft_state} = Leader</msg>
<var>${raft_state}</var>
<arg>shard_name=${shard_name}</arg>
<arg>shard_type=${ds_type}</arg>
<arg>member_index=${index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft status.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T00:52:37.361842" elapsed="0.251487"/>
</kw>
<if>
<branch type="IF" condition="'Follower' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${follower_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:37.613622" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:37.613408" elapsed="0.000381"/>
</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="PASS" start="2026-04-08T00:52:37.614027" elapsed="0.000209"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:37.613817" elapsed="0.000465"/>
</branch>
<branch type="ELSE IF" condition="${validate}">
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized Raft state: ${raft_state}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:37.614452" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:37.614306" elapsed="0.000197"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:37.613390" elapsed="0.001135"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T00:52:37.361680" elapsed="0.252869"/>
</iter>
<iter>
<kw name="Get_Raft_State_Of_Shard_At_Member" owner="ClusterManagement">
<kw name="Get_Raft_Property_From_Shard_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:37.616927" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:37.616603" elapsed="0.000352"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:52:37.617000" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:52:37.617146" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:52:37.616240" elapsed="0.000948"/>
</kw>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Get_As_Json_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:37.699133" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:37.698761" elapsed="0.000450"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:52:37.699952" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:52:37.699710" elapsed="0.000318">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-08T00:52:37.700120" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:52:37.699377" elapsed="0.000767"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:52:37.700709" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:52:37.700326" elapsed="0.000410"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T00:52:37.701033" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-08T00:52:37.701202" level="INFO">${template} = /rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T00:52:37.700895" elapsed="0.000334"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:37.701661" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:37.701383" elapsed="0.000323"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:37.702653" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:37.702400" elapsed="0.000297"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-08T00:52:37.703127" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-08T00:52:37.702855" elapsed="0.000301"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:37.703492" elapsed="0.000022"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:37.703692" elapsed="0.000024"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:37.703862" elapsed="0.000021"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-08T00:52:37.703361" elapsed="0.000557"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-08T00:52:37.703220" elapsed="0.000727"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-08T00:52:37.703990" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:52:37.704145" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-08T00:52:37.702062" elapsed="0.002124"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:37.701775" elapsed="0.002444"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:37.704389" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:37.704243" elapsed="0.000201"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:37.701755" elapsed="0.002709"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:52:37.705030" level="INFO">${final_text} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:37.704603" elapsed="0.000454"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T00:52:37.705104" 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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="PASS" start="2026-04-08T00:52:37.698134" elapsed="0.007111"/>
</kw>
<msg time="2026-04-08T00:52:37.705299" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:52:37.685961" elapsed="0.019417"/>
</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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:37.717442" elapsed="0.000042"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:37.729563" elapsed="0.000041"/>
</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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:37.741483" elapsed="0.000041"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:37.742342" elapsed="0.000036"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:37.743070" elapsed="0.000035"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:37.743632" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:37.743488" elapsed="0.000201"/>
</branch>
<status status="NOT RUN" start="2026-04-08T00:52:37.743472" elapsed="0.000240"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:37.743868" elapsed="0.000022"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:37.744050" elapsed="0.000021"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:37.744248" elapsed="0.000022"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-08T00:52:37.743424" elapsed="0.000900"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-08T00:52:37.743204" elapsed="0.001159"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:37.745040" elapsed="0.000035"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-08T00:52:37.745160" elapsed="0.000059"/>
</return>
<msg time="2026-04-08T00:52:37.745391" level="INFO">${uri} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-08T00:52:37.680061" elapsed="0.065436"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:52:37.748309" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:52:37.748047" elapsed="0.000327">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-08T00:52:37.748558" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:52:37.747614" elapsed="0.000988"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:37.749107" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:37.748733" elapsed="0.000458"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:37.749783" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:37.749489" elapsed="0.000319"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:37.749232" elapsed="0.000621"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:37.748682" elapsed="0.001209"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:52:37.752963" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:52:37.750639" elapsed="0.002370"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-08T00:52:37.753084" elapsed="0.000061"/>
</return>
<msg time="2026-04-08T00:52:37.753411" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:52:37.746489" elapsed="0.007027"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:52:37.756146" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:52:37.755906" elapsed="0.000352">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-08T00:52:37.756444" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:52:37.755478" elapsed="0.001008"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-08T00:52:37.756857" elapsed="0.000077"/>
</return>
<status status="PASS" start="2026-04-08T00:52:37.756615" elapsed="0.000385"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:37.756565" elapsed="0.000473"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:37.757841" elapsed="0.000037"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:37.758614" elapsed="0.000036"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-08T00:52:37.758722" elapsed="0.000047"/>
</return>
<msg time="2026-04-08T00:52:37.762146" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:52:37.754369" elapsed="0.007900"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:37.766043" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:37.765662" elapsed="0.000479"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:37.767381" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:37.766868" elapsed="0.000611"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:52:37.783433" level="INFO">GET Request : url=http://10.30.170.131:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 path_url=/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01eq5fxmndxspk37g8qgkyja672.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:52:37.784012" level="INFO">GET Response : url=http://10.30.170.131:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Transfer-Encoding': 'chunked'} 
 body={"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","hidden-symmetric-keys","encrypted-private-keys","asymmetrically-encrypted-value-format","cms-encrypted-data-format","cleartext-private-keys","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["ssh-client-keepalives","client-ident-hostbased","client-ident-publickey","client-ident-password"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-ex... (set the log level to DEBUG or TRACE to see the full content) 
 </msg>
<msg time="2026-04-08T00:52:37.784332" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:52:37.769660" elapsed="0.014709"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:37.767604" elapsed="0.016842"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:37.784851" elapsed="0.000034"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:37.784507" elapsed="0.000449"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:37.767554" elapsed="0.017452"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:37.793602" level="INFO">{"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","hidden-symmetric-keys","encrypted-private-keys","asymmetrically-encrypted-value-format","cms-encrypted-data-format","cleartext-private-keys","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["ssh-client-keepalives","client-ident-hostbased","client-ident-publickey","client-ident-password"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-experimenter-types?revision=2015-10-20","namespace":"urn:opendaylight:openflowplugin:experimenter:types","conformance-type":"import"},{"name":"ietf-ip_2018-02-22","revision":"2018-02-22","schema":"/rests/modules/ietf-ip?revision=2018-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-ip","conformance-type":"import","feature":["ipv6-privacy-autoconf","ipv4-non-contiguous-netmasks"]},{"name":"ietf-tcp-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-client","conformance-type":"import","feature":["local-binding-supported","tcp-client-keepalives"]},{"name":"node-config_2014-10-15","revision":"2014-10-15","schema":"/rests/modules/node-config?revision=2014-10-15","namespace":"urn:opendaylight:module:config","conformance-type":"import"},{"name":"ietf-restconf_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf","conformance-type":"import"},{"name":"ietf-datastores_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-datastores?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-datastores","conformance-type":"import"},{"name":"ietf-yang-patch_2017-02-22","revision":"2017-02-22","schema":"/rests/modules/ietf-yang-patch?revision=2017-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-patch","conformance-type":"import"},{"name":"sal-group_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-group?revision=2013-09-18","namespace":"urn:opendaylight:group:service","conformance-type":"import"},{"name":"odl-codegen-extensions_2024-06-27","revision":"2024-06-27","schema":"/rests/modules/odl-codegen-extensions?revision=2024-06-27","namespace":"urn:opendaylight:yang:extension:codegen","conformance-type":"import"},{"name":"sal-meter_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-meter?revision=2013-09-18","namespace":"urn:opendaylight:meter:service","conformance-type":"import"},{"name":"ietf-interfaces_2018-02-20","revision":"2018-02-20","schema":"/rests/modules/ietf-interfaces?revision=2018-02-20","namespace":"urn:ietf:params:xml:ns:yang:ietf-interfaces","conformance-type":"import","feature":["pre-provisioning","if-mib","arbitrary-names"]},{"name":"opendaylight-l2-types_2013-08-27","revision":"2013-08-27","schema":"/rests/modules/opendaylight-l2-types?revision=2013-08-27","namespace":"urn:opendaylight:l2:types","conformance-type":"import"},{"name":"opendaylight-flow-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-flow-types?revision=2013-10-26","namespace":"urn:opendaylight:flow:types","conformance-type":"import"},{"name":"lldp-speaker-config_2016-05-12","revision":"2016-05-12","schema":"/rests/modules/lldp-speaker-config?revision=2016-05-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker:config","conformance-type":"import"},{"name":"aaa-cert_2015-11-26","revision":"2015-11-26","schema":"/rests/modules/aaa-cert?revision=2015-11-26","namespace":"urn:opendaylight:yang:aaa:cert","conformance-type":"import"},{"name":"openflow-action_2015-02-03","revision":"2015-02-03","schema":"/rests/modules/openflow-action?revision=2015-02-03","namespace":"urn:opendaylight:openflow:common:action","conformance-type":"import"},{"name":"openflow-approved-extensions_2016-08-02","revision":"2016-08-02","schema":"/rests/modules/openflow-approved-extensions?revision=2016-08-02","namespace":"urn:opendaylight:openflow:approved:extensions","conformance-type":"import"},{"name":"nc-notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/nc-notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netmod:notification","conformance-type":"import"},{"name":"ietf-netconf-nmda_2019-01-07","revision":"2019-01-07","schema":"/rests/modules/ietf-netconf-nmda?revision=2019-01-07","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-nmda","conformance-type":"import","feature":["with-defaults","origin"]},{"name":"ietf-tcp-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-common","conformance-type":"import","feature":["keepalives-supported"]},{"name":"network-topology_2013-10-21","revision":"2013-10-21","schema":"/rests/modules/network-topology?revision=2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:network-topology","conformance-type":"import"},{"name":"aaa-encrypt-service-config_2024-02-02","revision":"2024-02-02","schema":"/rests/modules/aaa-encrypt-service-config?revision=2024-02-02","namespace":"config:aaa:authn:encrypt:service:config","conformance-type":"import"},{"name":"openflow-instruction_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-instruction?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:instruction","conformance-type":"import"},{"name":"ietf-tls-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-client","conformance-type":"import","feature":["client-ident-x509-cert","server-auth-x509-cert"]},{"name":"opendaylight-group-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-group-statistics?revision=2013-11-11","namespace":"urn:opendaylight:group:statistics","conformance-type":"import"},{"name":"cluster-admin_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/cluster-admin?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:cluster:admin","conformance-type":"import"},{"name":"opendaylight-flow-statistics_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-flow-statistics?revision=2013-08-19","namespace":"urn:opendaylight:flow:statistics","conformance-type":"import"},{"name":"opendaylight-table-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-table-types?revision=2013-10-26","namespace":"urn:opendaylight:table:types","conformance-type":"import"},{"name":"forwarding-rules-manager-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/forwarding-rules-manager-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:forwardingrules-manager:config","conformance-type":"import"},{"name":"odl-srm-types_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-types?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:types","conformance-type":"import"},{"name":"ietf-x509-cert-to-name_2014-12-10","revision":"2014-12-10","schema":"/rests/modules/ietf-x509-cert-to-name?revision=2014-12-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-x509-cert-to-name","conformance-type":"import"},{"name":"flow-node-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-node-inventory?revision=2013-08-19","namespace":"urn:opendaylight:flow:inventory","conformance-type":"import"},{"name":"flow-errors_2013-11-16","revision":"2013-11-16","schema":"/rests/modules/flow-errors?revision=2013-11-16","namespace":"urn:opendaylight:flow:errors","conformance-type":"import"},{"name":"ietf-netconf_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:netconf:base:1.0","conformance-type":"import","feature":["xpath","url","rollback-on-error","validate","startup","candidate","confirmed-commit","writable-running"]},{"name":"iana-ssh-public-key-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-public-key-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-public-key-algs","conformance-type":"import"},{"name":"aaa-cert-mdsal_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/aaa-cert-mdsal?revision=2016-03-21","namespace":"urn:opendaylight:yang:aaa:cert:mdsal","conformance-type":"import"},{"name":"odl-device-notification_2024-02-18","revision":"2024-02-18","schema":"/rests/modules/odl-device-notification?revision=2024-02-18","namespace":"urn:opendaylight:device:notification","conformance-type":"import"},{"name":"ietf-origin_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-origin?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-origin","conformance-type":"import"},{"name":"openflow-augments_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-augments?revision=2015-02-25","namespace":"urn:opendaylight:openflow:augments","conformance-type":"import"},{"name":"iana-ssh-encryption-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-encryption-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-encryption-algs","conformance-type":"import"},{"name":"ietf-truststore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-truststore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-truststore","conformance-type":"import","feature":["inline-definitions-supported"]},{"name":"distributed-datastore-provider_2025-01-30","revision":"2025-01-30","schema":"/rests/modules/distributed-datastore-provider?revision=2025-01-30","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:distributed-datastore-provider","conformance-type":"import"},{"name":"opendaylight-group-types_2013-10-18","revision":"2013-10-18","schema":"/rests/modules/opendaylight-group-types?revision=2013-10-18","namespace":"urn:opendaylight:group:types","conformance-type":"import"},{"name":"sal-remote-augment_2023-11-03","revision":"2023-11-03","schema":"/rests/modules/sal-remote-augment?revision=2023-11-03","namespace":"urn:sal:restconf:event:subscription","conformance-type":"import"},{"name":"opendaylight-ipv6-arbitrary-bitmask-fields_2016-02-24","revision":"2016-02-24","schema":"/rests/modules/opendaylight-ipv6-arbitrary-bitmask-fields?revision=2016-02-24","namespace":"urn:opendaylight:opendaylight-ipv6-arbitrary-bitmask-fields","conformance-type":"import"},{"name":"sal-flows-batch_2016-03-14","revision":"2016-03-14","schema":"/rests/modules/sal-flows-batch?revision=2016-03-14","namespace":"urn:opendaylight:flows:service","conformance-type":"import"},{"name":"ietf-tls-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-common","conformance-type":"import","feature":["tls12","hello-params","tls13"]},{"name":"openflow-types_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-types?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:types","conformance-type":"import"},{"name":"ietf-netconf-with-defaults_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf-with-defaults?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults","conformance-type":"import"},{"name":"odl-srm-ops_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-ops?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:ops","conformance-type":"import"},{"name":"odl-general-entity_2015-09-30","revision":"2015-09-30","schema":"/rests/modules/odl-general-entity?revision=2015-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:mdsal:core:general-entity","conformance-type":"import"},{"name":"iana-ssh-key-exchange-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-key-exchange-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-key-exchange-algs","conformance-type":"import"},{"name":"node-ssl-connection-error_2019-07-23","revision":"2019-07-23","schema":"/rests/modules/node-ssl-connection-error?revision=2019-07-23","namespace":"urn:opendaylight:node-ssl-connection-error:service","conformance-type":"import"},{"name":"openflow-protocol_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-protocol?revision=2013-07-31","namespace":"urn:opendaylight:openflow:protocol","conformance-type":"import"},{"name":"ietf-udp-server_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-server?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-server","conformance-type":"import"},{"name":"ietf-keystore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-keystore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-keystore","conformance-type":"import","feature":["asymmetric-keys","inline-definitions-supported"]},{"name":"aaa_2016-12-14","revision":"2016-12-14","schema":"/rests/modules/aaa?revision=2016-12-14","namespace":"urn:opendaylight:params:xml:ns:yang:aaa","conformance-type":"import"},{"name":"aaa-cert-rpc_2015-12-15","revision":"2015-12-15","schema":"/rests/modules/aaa-cert-rpc?revision=2015-12-15","namespace":"urn:opendaylight:yang:aaa:cert:rpc","conformance-type":"import"},{"name":"system-notifications_2013-09-27","revision":"2013-09-27","schema":"/rests/modules/system-notifications?revision=2013-09-27","namespace":"urn:opendaylight:openflow:system","conformance-type":"import"},{"name":"sal-flat-batch_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/sal-flat-batch?revision=2016-03-21","namespace":"urn:opendaylight:flat-batch:service","conformance-type":"import"},{"name":"notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netconf:notification:1.0","conformance-type":"import"},{"name":"sal-remote_2014-01-14","revision":"2014-01-14","schema":"/rests/modules/sal-remote?revision=2014-01-14","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:remote","conformance-type":"import"},{"name":"yang-ext_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/yang-ext?revision=2013-07-09","namespace":"urn:opendaylight:yang:extension:yang-ext","conformance-type":"import"},{"name":"opendaylight-multipart-types_2017-01-12","revision":"2017-01-12","schema":"/rests/modules/opendaylight-multipart-types?revision=2017-01-12","namespace":"urn:opendaylight:multipart:types","conformance-type":"import"},{"name":"opendaylight-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-inventory?revision=2013-08-19","namespace":"urn:opendaylight:inventory","conformance-type":"import"},{"name":"sal-queue_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-queue?revision=2015-03-05","namespace":"urn:opendaylight:queue:service","conformance-type":"import"},{"name":"sal-groups-batch_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/sal-groups-batch?revision=2016-03-15","namespace":"urn:opendaylight:groups:service","conformance-type":"import"},{"name":"arbitrator-reconcile_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/arbitrator-reconcile?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:arbitrator-reconcile:service","conformance-type":"import"},{"name":"ietf-yang-metadata_2016-08-05","revision":"2016-08-05","schema":"/rests/modules/ietf-yang-metadata?revision=2016-08-05","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-metadata","conformance-type":"import"},{"name":"opendaylight-arbitrary-bitmask-fields_2016-01-30","revision":"2016-01-30","schema":"/rests/modules/opendaylight-arbitrary-bitmask-fields?revision=2016-01-30","namespace":"urn:opendaylight:arbitrary:bitmask:fields","conformance-type":"import"},{"name":"ietf-udp-client_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-client?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-client","conformance-type":"import","feature":["local-binding"]},{"name":"opendaylight-meter-types_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/opendaylight-meter-types?revision=2013-09-18","namespace":"urn:opendaylight:meter:types","conformance-type":"import"},{"name":"opendaylight-action-types_2013-11-12","revision":"2013-11-12","schema":"/rests/modules/opendaylight-action-types?revision=2013-11-12","namespace":"urn:opendaylight:action:types","conformance-type":"import"},{"name":"sal-role_2015-07-27","revision":"2015-07-27","schema":"/rests/modules/sal-role?revision=2015-07-27","namespace":"urn:opendaylight:role:service","conformance-type":"import"},{"name":"openflow-provider-config_2016-05-10","revision":"2016-05-10","schema":"/rests/modules/openflow-provider-config?revision=2016-05-10","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:provider:config","conformance-type":"import"},{"name":"odl-serviceutils-upgrade_2018-07-02","revision":"2018-07-02","schema":"/rests/modules/odl-serviceutils-upgrade?revision=2018-07-02","namespace":"urn:opendaylight:serviceutils:upgrade","conformance-type":"import"},{"name":"opendaylight-match-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-match-types?revision=2013-10-26","namespace":"urn:opendaylight:model:match:types","conformance-type":"import"},{"name":"ietf-restconf-server_2024-08-14","revision":"2024-08-14","schema":"/rests/modules/ietf-restconf-server?revision=2024-08-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-server","conformance-type":"import","feature":["http-listen","https-listen"]},{"name":"reconciliation-result-state_2017-07-13","revision":"2017-07-13","schema":"/rests/modules/reconciliation-result-state?revision=2017-07-13","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:rf:state","conformance-type":"import"},{"name":"onf-extensions_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/onf-extensions?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf","conformance-type":"import"},{"name":"sal-table_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/sal-table?revision=2013-10-26","namespace":"urn:opendaylight:table:service","conformance-type":"import"},{"name":"iana-http-versions_2026-02-04","revision":"2026-02-04","schema":"/rests/modules/iana-http-versions?revision=2026-02-04","namespace":"urn:ietf:params:xml:ns:yang:iana-http-versions","conformance-type":"import"},{"name":"opendaylight-direct-statistics_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/opendaylight-direct-statistics?revision=2016-05-11","namespace":"urn:opendaylight:direct:statistics","conformance-type":"import"},{"name":"opendaylight-port-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-port-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:port","conformance-type":"import"},{"name":"sal-async-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/sal-async-config?revision=2017-06-19","namespace":"urn:opendaylight:async-config:service","conformance-type":"import"},{"name":"aaa-password-service-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-password-service-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:password:service:config","conformance-type":"import"},{"name":"ietf-yang-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-yang-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-types","conformance-type":"import"},{"name":"opendaylight-queue-statistics_2013-12-16","revision":"2013-12-16","schema":"/rests/modules/opendaylight-queue-statistics?revision=2013-12-16","namespace":"urn:opendaylight:queue:statistics","conformance-type":"import"},{"name":"sal-bundle_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/sal-bundle?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf:bundle:service","conformance-type":"import"},{"name":"ietf-restconf-subscribed-notifications_2019-11-17","revision":"2019-11-17","schema":"/rests/modules/ietf-restconf-subscribed-notifications?revision=2019-11-17","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-subscribed-notifications","conformance-type":"import"},{"name":"sal-meters-batch_2016-03-16","revision":"2016-03-16","schema":"/rests/modules/sal-meters-batch?revision=2016-03-16","namespace":"urn:opendaylight:meters:service","conformance-type":"import"},{"name":"odl-entity-owners","revision":"","schema":"/rests/modules/odl-entity-owners","namespace":"urn:opendaylight:params:xml:ns:yang:controller:entity-owners","conformance-type":"import"},{"name":"sal-experimenter-mp-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-mp-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-mp-message:service","conformance-type":"import"},{"name":"packet-processing_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/packet-processing?revision=2013-07-09","namespace":"urn:opendaylight:packet:service","conformance-type":"import"},{"name":"openflow-configuration_2014-06-30","revision":"2014-06-30","schema":"/rests/modules/openflow-configuration?revision=2014-06-30","namespace":"urn:opendaylight:openflow:config","conformance-type":"import"},{"name":"odl-srm-rpcs_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-rpcs?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:rpc","conformance-type":"import"},{"name":"ietf-netconf-acm_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-netconf-acm?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-acm","conformance-type":"import"},{"name":"iana-crypt-hash_2014-08-06","revision":"2014-08-06","schema":"/rests/modules/iana-crypt-hash?revision=2014-08-06","namespace":"urn:ietf:params:xml:ns:yang:iana-crypt-hash","conformance-type":"import","feature":["crypt-hash-sha-512","crypt-hash-sha-256","crypt-hash-md5"]},{"name":"openflow-extensible-match_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-extensible-match?revision=2015-02-25","namespace":"urn:opendaylight:openflow:oxm","conformance-type":"import"}],"module-set-id":"2"}}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:37.787706" elapsed="0.006634"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:37.787155" elapsed="0.007265"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:37.787099" elapsed="0.007376"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:37.797394" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:37.795247" elapsed="0.002192"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:37.794652" elapsed="0.002821"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:37.794612" elapsed="0.002885"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:52:37.798054" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:37.797678" elapsed="0.000402"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:37.798432" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:37.798192" elapsed="0.000298"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:37.798991" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:37.798673" elapsed="0.000344"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:37.798513" elapsed="0.000539"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:37.798160" elapsed="0.000914"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:52:37.799630" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:37.799271" elapsed="0.000385"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:37.799978" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:37.799746" elapsed="0.000289"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:37.800543" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:37.800245" elapsed="0.000323"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:37.800058" elapsed="0.000545"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:37.799726" elapsed="0.000898"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:52:37.800791" elapsed="0.000346"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:52:37.801626" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:37.801345" elapsed="0.000307"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:52:37.801824" elapsed="0.002175"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:52:37.786051" elapsed="0.018075"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:52:37.804485" elapsed="0.000047"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:52:37.804270" elapsed="0.000324"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:37.804220" elapsed="0.000410"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:52:37.813695" level="INFO">${text_normalized} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:52:37.805352" elapsed="0.008394"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:52:37.813828" elapsed="0.000070"/>
</return>
<msg time="2026-04-08T00:52:37.814162" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:52:37.762914" elapsed="0.051371"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:52:37.814746" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:52:37.814923" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="PASS" start="2026-04-08T00:52:37.625452" elapsed="0.189497"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Json_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:37.815345" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:37.815054" elapsed="0.000484"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:37.815035" elapsed="0.000530"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:52:37.815599" elapsed="0.000027"/>
</return>
<arg>session=${session}</arg>
<arg>folder=${RESTCONF_MODULES_DIR}</arg>
<arg>verify=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Add arguments sensible for JSON data, return Get_Templated response text.
Optionally, verification against JSON data (may be iterated) is called.
Only subset of JSON data is verified and returned if JMES path is specified in
file ${folder}/jmespath.expr.</doc>
<status status="PASS" start="2026-04-08T00:52:37.621319" elapsed="0.194406"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:37.617256" elapsed="0.198512"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:37.617239" elapsed="0.198553"/>
</if>
<kw name="Resolve_Shard_Type_Class" owner="ClusterManagement">
<if>
<branch type="IF" condition="'${shard_type}' == 'config'">
<return>
<value>DistributedConfigDatastore</value>
<status status="NOT RUN" start="2026-04-08T00:52:37.816418" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:52:37.816310" elapsed="0.000153"/>
</branch>
<branch type="ELSE IF" condition="'${shard_type}' == 'operational'">
<return>
<value>DistributedOperationalDatastore</value>
<status status="PASS" start="2026-04-08T00:52:37.816587" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-08T00:52:37.816485" elapsed="0.000159"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:37.816292" elapsed="0.000375"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized shard type: ${shard_type}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:37.816814" elapsed="0.000022"/>
</kw>
<msg time="2026-04-08T00:52:37.816932" level="INFO">${type_class} = DistributedOperationalDatastore</msg>
<var>${type_class}</var>
<arg>shard_type=${shard_type}</arg>
<doc>Simple lookup for class name corresponding to desired type.</doc>
<status status="PASS" start="2026-04-08T00:52:37.816018" elapsed="0.000939"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:52:37.817519" level="INFO">${cluster_index} = 2</msg>
<var>${cluster_index}</var>
<arg>${member_index}+${NODE_ROLE_INDEX_START}-1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:37.817125" elapsed="0.000421"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:37.818162" level="INFO">${uri} = jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-topology-operational,type=DistributedOperationalDatastore</msg>
<var>${uri}</var>
<arg>${JOLOKIA_READ_URI}:Category=Shards,name=member-${cluster_index}-shard-${shard_name}-${shard_type},type=${type_class}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:37.817700" elapsed="0.000503"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:37.823785" level="INFO">jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-topology-operational,type=DistributedOperationalDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:37.823338" elapsed="0.000494"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:37.824571" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:37.823986" elapsed="0.000632"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:52:37.842657" level="INFO">GET Request : url=http://10.30.170.131:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-topology-operational,type=DistributedOperationalDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-topology-operational,type=DistributedOperationalDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:52:37.842792" level="INFO">GET Response : url=http://10.30.170.131:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-topology-operational,type=DistributedOperationalDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Wed, 08 Apr 2026 00:52:37 GMT', 'Expires': 'Tue, 07 Apr 2026 23:52:37 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-2-shard-topology-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"ReadWriteTransactionCount":0,"SnapshotIndex":254,"InMemoryJournalLogSize":1,"ReplicatedToAllIndex":254,"Leader":"member-1-shard-topology-operational","LastIndex":255,"RaftState":"Follower","LastCommittedTransactionTime":"1970-01-01 00:00:00.000","LastApplied":255,"PeerAddresses":"member-1-shard-topology-operational: pekko:\/\/opendaylight-cluster-data@10.30.170.48:2550\/user\/shardmanager-operational\/member-1-shard-topology-operational, member-3-shard-topology-operational: pekko:\/\/opendaylight-cluster-data@10.30.171.110:2550\/user\/shardmanager-operational\/member-3-shard-topology-operational","LastLogIndex":255,"LastLeadershipChangeTime":"2026-04-08 00:46:45.981","FollowerInitialSyncStatus":true,"FollowerInfo":[],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"290.1 μs","CurrentTerm":2,"LastTerm":2,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-topology-operational","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":0,"TxCohortCacheSize":0,"PeerVotingStates":"member-1-shard-topology-operational: true, member-3-shard-topology-operational: true","LastLogTerm":2,"StatRetrievalError":null,"CommitIndex":255,"SnapshotTerm":2,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-2-shard-topology-operational","LeadershipChangeCount":1,"InMemoryJournalDataSize":47783},"timestamp":1775609557,"status":200} 
 </msg>
<msg time="2026-04-08T00:52:37.842983" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:52:37.835542" elapsed="0.007552"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:37.824687" elapsed="0.018705"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:37.843577" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:37.843425" elapsed="0.000465"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:37.824669" elapsed="0.019246"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:37.850641" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-2-shard-topology-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"ReadWriteTransactionCount":0,"SnapshotIndex":254,"InMemoryJournalLogSize":1,"ReplicatedToAllIndex":254,"Leader":"member-1-shard-topology-operational","LastIndex":255,"RaftState":"Follower","LastCommittedTransactionTime":"1970-01-01 00:00:00.000","LastApplied":255,"PeerAddresses":"member-1-shard-topology-operational: pekko:\/\/opendaylight-cluster-data@10.30.170.48:2550\/user\/shardmanager-operational\/member-1-shard-topology-operational, member-3-shard-topology-operational: pekko:\/\/opendaylight-cluster-data@10.30.171.110:2550\/user\/shardmanager-operational\/member-3-shard-topology-operational","LastLogIndex":255,"LastLeadershipChangeTime":"2026-04-08 00:46:45.981","FollowerInitialSyncStatus":true,"FollowerInfo":[],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"290.1 μs","CurrentTerm":2,"LastTerm":2,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-topology-operational","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":0,"TxCohortCacheSize":0,"PeerVotingStates":"member-1-shard-topology-operational: true, member-3-shard-topology-operational: true","LastLogTerm":2,"StatRetrievalError":null,"CommitIndex":255,"SnapshotTerm":2,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-2-shard-topology-operational","LeadershipChangeCount":1,"InMemoryJournalDataSize":47783},"timestamp":1775609557,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:37.847071" elapsed="0.003728"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:37.845850" elapsed="0.005018"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:37.845824" elapsed="0.005097"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:37.854631" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:37.852305" elapsed="0.002425"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:37.851037" elapsed="0.003742"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:37.851011" elapsed="0.003805"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:52:37.856304" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:37.855449" elapsed="0.000917"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:37.856991" elapsed="0.000035"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:37.856532" elapsed="0.000545"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:37.857951" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:37.857457" elapsed="0.000538"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:37.857113" elapsed="0.000932"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:37.856512" elapsed="0.001572"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:52:37.859453" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:37.858707" elapsed="0.000808"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:37.860249" elapsed="0.000039"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:37.859714" elapsed="0.000625"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:37.861207" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:37.860700" elapsed="0.000554"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:37.860375" elapsed="0.000929"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:37.859694" elapsed="0.001644"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:52:37.861555" elapsed="0.000613"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:52:37.863046" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:37.862559" elapsed="0.000546"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:52:37.863408" elapsed="0.002318"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:52:37.844887" elapsed="0.020996"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:52:37.866080" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:52:37.865955" elapsed="0.000170"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:37.865936" elapsed="0.000210"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:52:37.869739" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-2-shard-topology-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:52:37.866443" elapsed="0.003326"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:52:37.869821" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:52:37.869976" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-2-shard-topology-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:52:37.819163" elapsed="0.050871"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:52:37.870095" elapsed="0.000027"/>
</return>
<msg time="2026-04-08T00:52:37.870321" level="INFO">${data_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-2-shard-topology-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp...</msg>
<var>${data_text}</var>
<arg>uri=${uri}</arg>
<arg>session=${session}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-08T00:52:37.818414" elapsed="0.051934"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:52:37.871398" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-2-shard-topology-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 17756095...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:37.870905" elapsed="0.000523"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-08T00:52:37.871477" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:52:37.871650" level="INFO">${data_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-2-shard-topology-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 17756095...</msg>
<var>${data_object}</var>
<arg>${data_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-08T00:52:37.870566" elapsed="0.001112"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:52:37.872054" level="INFO">${value} = {'AbortTransactionsCount': 0, 'CommitIndex': 255, 'CommittedTransactionsCount': 0, 'CurrentTerm': 2, 'FailedReadTransactionsCount': 0, 'FailedTransactionsCount': 0, 'FollowerInfo': [], 'FollowerInitia...</msg>
<var>${value}</var>
<arg>${data_object}</arg>
<arg>value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:52:37.871852" elapsed="0.000229"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:52:37.872455" level="INFO">${raft_property} = Follower</msg>
<var>${raft_property}</var>
<arg>${value}</arg>
<arg>${property}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:52:37.872253" elapsed="0.000228"/>
</kw>
<return>
<value>${raft_property}</value>
<status status="PASS" start="2026-04-08T00:52:37.872528" elapsed="0.000027"/>
</return>
<msg time="2026-04-08T00:52:37.872677" level="INFO">${raft_state} = Follower</msg>
<var>${raft_state}</var>
<arg>RaftState</arg>
<arg>${shard_name}</arg>
<arg>${shard_type}</arg>
<arg>${member_index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft property.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T00:52:37.615622" elapsed="0.257079"/>
</kw>
<return>
<value>${raft_state}</value>
<status status="PASS" start="2026-04-08T00:52:37.872758" elapsed="0.000025"/>
</return>
<msg time="2026-04-08T00:52:37.872902" level="INFO">${raft_state} = Follower</msg>
<var>${raft_state}</var>
<arg>shard_name=${shard_name}</arg>
<arg>shard_type=${ds_type}</arg>
<arg>member_index=${index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft status.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T00:52:37.614884" elapsed="0.258042"/>
</kw>
<if>
<branch type="IF" condition="'Follower' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${follower_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-08T00:52:37.873237" elapsed="0.000192"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:37.873006" elapsed="0.000461"/>
</branch>
<branch type="ELSE IF" condition="'Leader' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${leader_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:37.873635" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:37.873492" elapsed="0.000197"/>
</branch>
<branch type="ELSE IF" condition="${validate}">
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized Raft state: ${raft_state}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:37.873849" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:37.873711" elapsed="0.000188"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:37.872988" elapsed="0.000933"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T00:52:37.614718" elapsed="0.259226"/>
</iter>
<iter>
<kw name="Get_Raft_State_Of_Shard_At_Member" owner="ClusterManagement">
<kw name="Get_Raft_Property_From_Shard_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:37.876404" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:37.876056" elapsed="0.000376"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:52:37.876478" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:52:37.876625" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:52:37.875685" elapsed="0.000966"/>
</kw>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Get_As_Json_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:37.959003" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:37.958629" elapsed="0.000402"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:52:37.959783" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:52:37.959544" elapsed="0.000315">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-08T00:52:37.959990" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:52:37.959210" elapsed="0.000805"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:52:37.960583" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:52:37.960197" elapsed="0.000414"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T00:52:37.960924" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-08T00:52:37.961069" level="INFO">${template} = /rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T00:52:37.960770" elapsed="0.000325"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:37.961510" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:37.961267" elapsed="0.000286"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:37.962494" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:37.962241" elapsed="0.000297"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-08T00:52:37.962967" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-08T00:52:37.962698" elapsed="0.000294"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:37.963333" elapsed="0.000022"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:37.963534" elapsed="0.000024"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:37.963704" elapsed="0.000020"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-08T00:52:37.963200" elapsed="0.000560"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-08T00:52:37.963044" elapsed="0.000745"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-08T00:52:37.963833" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:52:37.963989" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-08T00:52:37.961907" elapsed="0.002107"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:37.961621" elapsed="0.002424"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:37.964230" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:37.964069" elapsed="0.000218"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:37.961602" elapsed="0.002706"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:52:37.964876" level="INFO">${final_text} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:37.964447" elapsed="0.000456"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T00:52:37.964986" elapsed="0.000030"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="PASS" start="2026-04-08T00:52:37.958008" elapsed="0.007102"/>
</kw>
<msg time="2026-04-08T00:52:37.965163" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:52:37.945754" elapsed="0.019509"/>
</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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:37.977329" elapsed="0.000041"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:37.989349" elapsed="0.000040"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:38.001443" elapsed="0.000041"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:38.002211" elapsed="0.000037"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:38.002936" elapsed="0.000036"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:38.003507" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:38.003362" elapsed="0.000202"/>
</branch>
<status status="NOT RUN" start="2026-04-08T00:52:38.003345" elapsed="0.000242"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:38.003743" elapsed="0.000022"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:38.003928" elapsed="0.000021"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:38.004113" elapsed="0.000021"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-08T00:52:38.003296" elapsed="0.000908"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-08T00:52:38.003054" elapsed="0.001191"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:38.004923" elapsed="0.000035"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-08T00:52:38.005041" elapsed="0.000046"/>
</return>
<msg time="2026-04-08T00:52:38.005276" level="INFO">${uri} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-08T00:52:37.939600" elapsed="0.065783"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:52:38.008216" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:52:38.007959" elapsed="0.000322">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-08T00:52:38.008464" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:52:38.007528" elapsed="0.000979"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:38.009006" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:38.008636" elapsed="0.000436"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:38.009693" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:38.009386" elapsed="0.000334"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:38.009111" elapsed="0.000656"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:38.008586" elapsed="0.001220"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:52:38.012849" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:52:38.010535" elapsed="0.002358"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-08T00:52:38.012970" elapsed="0.000061"/>
</return>
<msg time="2026-04-08T00:52:38.013304" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:52:38.006396" elapsed="0.007013"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:52:38.016215" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:52:38.015945" elapsed="0.000338">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-08T00:52:38.016513" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:52:38.015507" elapsed="0.001050"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-08T00:52:38.016942" elapsed="0.000080"/>
</return>
<status status="PASS" start="2026-04-08T00:52:38.016691" elapsed="0.000398"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:38.016640" elapsed="0.000487"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:38.017867" elapsed="0.000036"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:38.018714" elapsed="0.000036"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-08T00:52:38.018823" elapsed="0.000047"/>
</return>
<msg time="2026-04-08T00:52:38.020968" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:52:38.014413" elapsed="0.006661"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:38.024853" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:38.024466" elapsed="0.000484"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:38.026045" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:38.025653" elapsed="0.000488"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:52:38.042524" level="INFO">GET Request : url=http://10.30.171.110:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 path_url=/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0336bvzrfnrhc3cqywxyctca52.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:52:38.043473" level="INFO">GET Response : url=http://10.30.171.110:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Transfer-Encoding': 'chunked'} 
 body={"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","hidden-symmetric-keys","encrypted-private-keys","asymmetrically-encrypted-value-format","cms-encrypted-data-format","cleartext-private-keys","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["ssh-client-keepalives","client-ident-hostbased","client-ident-publickey","client-ident-password"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-ex... (set the log level to DEBUG or TRACE to see the full content) 
 </msg>
<msg time="2026-04-08T00:52:38.043919" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:52:38.028472" elapsed="0.015507"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:38.026427" elapsed="0.017687"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:38.044831" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:38.044283" elapsed="0.000716"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:38.026376" elapsed="0.018716"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:38.052352" level="INFO">{"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","hidden-symmetric-keys","encrypted-private-keys","asymmetrically-encrypted-value-format","cms-encrypted-data-format","cleartext-private-keys","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["ssh-client-keepalives","client-ident-hostbased","client-ident-publickey","client-ident-password"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-experimenter-types?revision=2015-10-20","namespace":"urn:opendaylight:openflowplugin:experimenter:types","conformance-type":"import"},{"name":"ietf-ip_2018-02-22","revision":"2018-02-22","schema":"/rests/modules/ietf-ip?revision=2018-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-ip","conformance-type":"import","feature":["ipv6-privacy-autoconf","ipv4-non-contiguous-netmasks"]},{"name":"ietf-tcp-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-client","conformance-type":"import","feature":["local-binding-supported","tcp-client-keepalives"]},{"name":"node-config_2014-10-15","revision":"2014-10-15","schema":"/rests/modules/node-config?revision=2014-10-15","namespace":"urn:opendaylight:module:config","conformance-type":"import"},{"name":"ietf-restconf_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf","conformance-type":"import"},{"name":"ietf-datastores_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-datastores?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-datastores","conformance-type":"import"},{"name":"ietf-yang-patch_2017-02-22","revision":"2017-02-22","schema":"/rests/modules/ietf-yang-patch?revision=2017-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-patch","conformance-type":"import"},{"name":"sal-group_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-group?revision=2013-09-18","namespace":"urn:opendaylight:group:service","conformance-type":"import"},{"name":"odl-codegen-extensions_2024-06-27","revision":"2024-06-27","schema":"/rests/modules/odl-codegen-extensions?revision=2024-06-27","namespace":"urn:opendaylight:yang:extension:codegen","conformance-type":"import"},{"name":"sal-meter_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-meter?revision=2013-09-18","namespace":"urn:opendaylight:meter:service","conformance-type":"import"},{"name":"ietf-interfaces_2018-02-20","revision":"2018-02-20","schema":"/rests/modules/ietf-interfaces?revision=2018-02-20","namespace":"urn:ietf:params:xml:ns:yang:ietf-interfaces","conformance-type":"import","feature":["pre-provisioning","if-mib","arbitrary-names"]},{"name":"opendaylight-l2-types_2013-08-27","revision":"2013-08-27","schema":"/rests/modules/opendaylight-l2-types?revision=2013-08-27","namespace":"urn:opendaylight:l2:types","conformance-type":"import"},{"name":"opendaylight-flow-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-flow-types?revision=2013-10-26","namespace":"urn:opendaylight:flow:types","conformance-type":"import"},{"name":"lldp-speaker-config_2016-05-12","revision":"2016-05-12","schema":"/rests/modules/lldp-speaker-config?revision=2016-05-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker:config","conformance-type":"import"},{"name":"aaa-cert_2015-11-26","revision":"2015-11-26","schema":"/rests/modules/aaa-cert?revision=2015-11-26","namespace":"urn:opendaylight:yang:aaa:cert","conformance-type":"import"},{"name":"openflow-action_2015-02-03","revision":"2015-02-03","schema":"/rests/modules/openflow-action?revision=2015-02-03","namespace":"urn:opendaylight:openflow:common:action","conformance-type":"import"},{"name":"openflow-approved-extensions_2016-08-02","revision":"2016-08-02","schema":"/rests/modules/openflow-approved-extensions?revision=2016-08-02","namespace":"urn:opendaylight:openflow:approved:extensions","conformance-type":"import"},{"name":"nc-notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/nc-notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netmod:notification","conformance-type":"import"},{"name":"ietf-netconf-nmda_2019-01-07","revision":"2019-01-07","schema":"/rests/modules/ietf-netconf-nmda?revision=2019-01-07","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-nmda","conformance-type":"import","feature":["with-defaults","origin"]},{"name":"ietf-tcp-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-common","conformance-type":"import","feature":["keepalives-supported"]},{"name":"network-topology_2013-10-21","revision":"2013-10-21","schema":"/rests/modules/network-topology?revision=2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:network-topology","conformance-type":"import"},{"name":"aaa-encrypt-service-config_2024-02-02","revision":"2024-02-02","schema":"/rests/modules/aaa-encrypt-service-config?revision=2024-02-02","namespace":"config:aaa:authn:encrypt:service:config","conformance-type":"import"},{"name":"openflow-instruction_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-instruction?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:instruction","conformance-type":"import"},{"name":"ietf-tls-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-client","conformance-type":"import","feature":["client-ident-x509-cert","server-auth-x509-cert"]},{"name":"opendaylight-group-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-group-statistics?revision=2013-11-11","namespace":"urn:opendaylight:group:statistics","conformance-type":"import"},{"name":"cluster-admin_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/cluster-admin?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:cluster:admin","conformance-type":"import"},{"name":"opendaylight-flow-statistics_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-flow-statistics?revision=2013-08-19","namespace":"urn:opendaylight:flow:statistics","conformance-type":"import"},{"name":"opendaylight-table-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-table-types?revision=2013-10-26","namespace":"urn:opendaylight:table:types","conformance-type":"import"},{"name":"forwarding-rules-manager-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/forwarding-rules-manager-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:forwardingrules-manager:config","conformance-type":"import"},{"name":"odl-srm-types_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-types?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:types","conformance-type":"import"},{"name":"ietf-x509-cert-to-name_2014-12-10","revision":"2014-12-10","schema":"/rests/modules/ietf-x509-cert-to-name?revision=2014-12-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-x509-cert-to-name","conformance-type":"import"},{"name":"flow-node-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-node-inventory?revision=2013-08-19","namespace":"urn:opendaylight:flow:inventory","conformance-type":"import"},{"name":"flow-errors_2013-11-16","revision":"2013-11-16","schema":"/rests/modules/flow-errors?revision=2013-11-16","namespace":"urn:opendaylight:flow:errors","conformance-type":"import"},{"name":"ietf-netconf_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:netconf:base:1.0","conformance-type":"import","feature":["xpath","url","rollback-on-error","validate","startup","candidate","confirmed-commit","writable-running"]},{"name":"iana-ssh-public-key-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-public-key-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-public-key-algs","conformance-type":"import"},{"name":"aaa-cert-mdsal_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/aaa-cert-mdsal?revision=2016-03-21","namespace":"urn:opendaylight:yang:aaa:cert:mdsal","conformance-type":"import"},{"name":"odl-device-notification_2024-02-18","revision":"2024-02-18","schema":"/rests/modules/odl-device-notification?revision=2024-02-18","namespace":"urn:opendaylight:device:notification","conformance-type":"import"},{"name":"ietf-origin_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-origin?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-origin","conformance-type":"import"},{"name":"openflow-augments_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-augments?revision=2015-02-25","namespace":"urn:opendaylight:openflow:augments","conformance-type":"import"},{"name":"iana-ssh-encryption-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-encryption-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-encryption-algs","conformance-type":"import"},{"name":"ietf-truststore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-truststore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-truststore","conformance-type":"import","feature":["inline-definitions-supported"]},{"name":"distributed-datastore-provider_2025-01-30","revision":"2025-01-30","schema":"/rests/modules/distributed-datastore-provider?revision=2025-01-30","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:distributed-datastore-provider","conformance-type":"import"},{"name":"opendaylight-group-types_2013-10-18","revision":"2013-10-18","schema":"/rests/modules/opendaylight-group-types?revision=2013-10-18","namespace":"urn:opendaylight:group:types","conformance-type":"import"},{"name":"sal-remote-augment_2023-11-03","revision":"2023-11-03","schema":"/rests/modules/sal-remote-augment?revision=2023-11-03","namespace":"urn:sal:restconf:event:subscription","conformance-type":"import"},{"name":"opendaylight-ipv6-arbitrary-bitmask-fields_2016-02-24","revision":"2016-02-24","schema":"/rests/modules/opendaylight-ipv6-arbitrary-bitmask-fields?revision=2016-02-24","namespace":"urn:opendaylight:opendaylight-ipv6-arbitrary-bitmask-fields","conformance-type":"import"},{"name":"sal-flows-batch_2016-03-14","revision":"2016-03-14","schema":"/rests/modules/sal-flows-batch?revision=2016-03-14","namespace":"urn:opendaylight:flows:service","conformance-type":"import"},{"name":"ietf-tls-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-common","conformance-type":"import","feature":["tls12","hello-params","tls13"]},{"name":"openflow-types_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-types?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:types","conformance-type":"import"},{"name":"ietf-netconf-with-defaults_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf-with-defaults?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults","conformance-type":"import"},{"name":"odl-srm-ops_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-ops?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:ops","conformance-type":"import"},{"name":"odl-general-entity_2015-09-30","revision":"2015-09-30","schema":"/rests/modules/odl-general-entity?revision=2015-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:mdsal:core:general-entity","conformance-type":"import"},{"name":"iana-ssh-key-exchange-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-key-exchange-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-key-exchange-algs","conformance-type":"import"},{"name":"node-ssl-connection-error_2019-07-23","revision":"2019-07-23","schema":"/rests/modules/node-ssl-connection-error?revision=2019-07-23","namespace":"urn:opendaylight:node-ssl-connection-error:service","conformance-type":"import"},{"name":"openflow-protocol_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-protocol?revision=2013-07-31","namespace":"urn:opendaylight:openflow:protocol","conformance-type":"import"},{"name":"ietf-udp-server_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-server?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-server","conformance-type":"import"},{"name":"ietf-keystore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-keystore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-keystore","conformance-type":"import","feature":["asymmetric-keys","inline-definitions-supported"]},{"name":"aaa_2016-12-14","revision":"2016-12-14","schema":"/rests/modules/aaa?revision=2016-12-14","namespace":"urn:opendaylight:params:xml:ns:yang:aaa","conformance-type":"import"},{"name":"aaa-cert-rpc_2015-12-15","revision":"2015-12-15","schema":"/rests/modules/aaa-cert-rpc?revision=2015-12-15","namespace":"urn:opendaylight:yang:aaa:cert:rpc","conformance-type":"import"},{"name":"system-notifications_2013-09-27","revision":"2013-09-27","schema":"/rests/modules/system-notifications?revision=2013-09-27","namespace":"urn:opendaylight:openflow:system","conformance-type":"import"},{"name":"sal-flat-batch_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/sal-flat-batch?revision=2016-03-21","namespace":"urn:opendaylight:flat-batch:service","conformance-type":"import"},{"name":"notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netconf:notification:1.0","conformance-type":"import"},{"name":"sal-remote_2014-01-14","revision":"2014-01-14","schema":"/rests/modules/sal-remote?revision=2014-01-14","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:remote","conformance-type":"import"},{"name":"yang-ext_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/yang-ext?revision=2013-07-09","namespace":"urn:opendaylight:yang:extension:yang-ext","conformance-type":"import"},{"name":"opendaylight-multipart-types_2017-01-12","revision":"2017-01-12","schema":"/rests/modules/opendaylight-multipart-types?revision=2017-01-12","namespace":"urn:opendaylight:multipart:types","conformance-type":"import"},{"name":"opendaylight-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-inventory?revision=2013-08-19","namespace":"urn:opendaylight:inventory","conformance-type":"import"},{"name":"sal-queue_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-queue?revision=2015-03-05","namespace":"urn:opendaylight:queue:service","conformance-type":"import"},{"name":"sal-groups-batch_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/sal-groups-batch?revision=2016-03-15","namespace":"urn:opendaylight:groups:service","conformance-type":"import"},{"name":"arbitrator-reconcile_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/arbitrator-reconcile?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:arbitrator-reconcile:service","conformance-type":"import"},{"name":"ietf-yang-metadata_2016-08-05","revision":"2016-08-05","schema":"/rests/modules/ietf-yang-metadata?revision=2016-08-05","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-metadata","conformance-type":"import"},{"name":"opendaylight-arbitrary-bitmask-fields_2016-01-30","revision":"2016-01-30","schema":"/rests/modules/opendaylight-arbitrary-bitmask-fields?revision=2016-01-30","namespace":"urn:opendaylight:arbitrary:bitmask:fields","conformance-type":"import"},{"name":"ietf-udp-client_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-client?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-client","conformance-type":"import","feature":["local-binding"]},{"name":"opendaylight-meter-types_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/opendaylight-meter-types?revision=2013-09-18","namespace":"urn:opendaylight:meter:types","conformance-type":"import"},{"name":"opendaylight-action-types_2013-11-12","revision":"2013-11-12","schema":"/rests/modules/opendaylight-action-types?revision=2013-11-12","namespace":"urn:opendaylight:action:types","conformance-type":"import"},{"name":"sal-role_2015-07-27","revision":"2015-07-27","schema":"/rests/modules/sal-role?revision=2015-07-27","namespace":"urn:opendaylight:role:service","conformance-type":"import"},{"name":"openflow-provider-config_2016-05-10","revision":"2016-05-10","schema":"/rests/modules/openflow-provider-config?revision=2016-05-10","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:provider:config","conformance-type":"import"},{"name":"odl-serviceutils-upgrade_2018-07-02","revision":"2018-07-02","schema":"/rests/modules/odl-serviceutils-upgrade?revision=2018-07-02","namespace":"urn:opendaylight:serviceutils:upgrade","conformance-type":"import"},{"name":"opendaylight-match-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-match-types?revision=2013-10-26","namespace":"urn:opendaylight:model:match:types","conformance-type":"import"},{"name":"ietf-restconf-server_2024-08-14","revision":"2024-08-14","schema":"/rests/modules/ietf-restconf-server?revision=2024-08-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-server","conformance-type":"import","feature":["http-listen","https-listen"]},{"name":"reconciliation-result-state_2017-07-13","revision":"2017-07-13","schema":"/rests/modules/reconciliation-result-state?revision=2017-07-13","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:rf:state","conformance-type":"import"},{"name":"onf-extensions_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/onf-extensions?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf","conformance-type":"import"},{"name":"sal-table_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/sal-table?revision=2013-10-26","namespace":"urn:opendaylight:table:service","conformance-type":"import"},{"name":"iana-http-versions_2026-02-04","revision":"2026-02-04","schema":"/rests/modules/iana-http-versions?revision=2026-02-04","namespace":"urn:ietf:params:xml:ns:yang:iana-http-versions","conformance-type":"import"},{"name":"opendaylight-direct-statistics_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/opendaylight-direct-statistics?revision=2016-05-11","namespace":"urn:opendaylight:direct:statistics","conformance-type":"import"},{"name":"opendaylight-port-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-port-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:port","conformance-type":"import"},{"name":"sal-async-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/sal-async-config?revision=2017-06-19","namespace":"urn:opendaylight:async-config:service","conformance-type":"import"},{"name":"aaa-password-service-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-password-service-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:password:service:config","conformance-type":"import"},{"name":"ietf-yang-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-yang-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-types","conformance-type":"import"},{"name":"opendaylight-queue-statistics_2013-12-16","revision":"2013-12-16","schema":"/rests/modules/opendaylight-queue-statistics?revision=2013-12-16","namespace":"urn:opendaylight:queue:statistics","conformance-type":"import"},{"name":"sal-bundle_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/sal-bundle?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf:bundle:service","conformance-type":"import"},{"name":"ietf-restconf-subscribed-notifications_2019-11-17","revision":"2019-11-17","schema":"/rests/modules/ietf-restconf-subscribed-notifications?revision=2019-11-17","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-subscribed-notifications","conformance-type":"import"},{"name":"sal-meters-batch_2016-03-16","revision":"2016-03-16","schema":"/rests/modules/sal-meters-batch?revision=2016-03-16","namespace":"urn:opendaylight:meters:service","conformance-type":"import"},{"name":"odl-entity-owners","revision":"","schema":"/rests/modules/odl-entity-owners","namespace":"urn:opendaylight:params:xml:ns:yang:controller:entity-owners","conformance-type":"import"},{"name":"sal-experimenter-mp-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-mp-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-mp-message:service","conformance-type":"import"},{"name":"packet-processing_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/packet-processing?revision=2013-07-09","namespace":"urn:opendaylight:packet:service","conformance-type":"import"},{"name":"openflow-configuration_2014-06-30","revision":"2014-06-30","schema":"/rests/modules/openflow-configuration?revision=2014-06-30","namespace":"urn:opendaylight:openflow:config","conformance-type":"import"},{"name":"odl-srm-rpcs_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-rpcs?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:rpc","conformance-type":"import"},{"name":"ietf-netconf-acm_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-netconf-acm?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-acm","conformance-type":"import"},{"name":"iana-crypt-hash_2014-08-06","revision":"2014-08-06","schema":"/rests/modules/iana-crypt-hash?revision=2014-08-06","namespace":"urn:ietf:params:xml:ns:yang:iana-crypt-hash","conformance-type":"import","feature":["crypt-hash-sha-512","crypt-hash-sha-256","crypt-hash-md5"]},{"name":"openflow-extensible-match_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-extensible-match?revision=2015-02-25","namespace":"urn:opendaylight:openflow:oxm","conformance-type":"import"}],"module-set-id":"2"}}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:38.048313" elapsed="0.004482"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:38.047982" elapsed="0.004863"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:38.047952" elapsed="0.004927"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:38.056034" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:38.053345" elapsed="0.002736"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:38.052991" elapsed="0.003124"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:38.052966" elapsed="0.003172"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:52:38.056728" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:38.056344" elapsed="0.000411"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:38.057087" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:38.056846" elapsed="0.000298"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:38.057651" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:38.057346" elapsed="0.000330"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:38.057184" elapsed="0.000528"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:38.056827" elapsed="0.000906"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:52:38.058295" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:38.057909" elapsed="0.000412"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:38.058644" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:38.058412" elapsed="0.000288"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:38.059193" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:38.058879" elapsed="0.000341"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:38.058723" elapsed="0.000532"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:38.058393" elapsed="0.000883"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:52:38.059445" elapsed="0.000351"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:52:38.060291" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:38.059980" elapsed="0.000337"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:52:38.060490" elapsed="0.002224"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:52:38.046892" elapsed="0.015945"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:52:38.063206" elapsed="0.000048"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:52:38.062966" elapsed="0.000352"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:38.062916" elapsed="0.000438"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:52:38.072356" level="INFO">${text_normalized} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:52:38.064062" elapsed="0.008345"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:52:38.072486" elapsed="0.000063"/>
</return>
<msg time="2026-04-08T00:52:38.072810" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:52:38.021757" elapsed="0.051161"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:52:38.073405" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:52:38.073584" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="PASS" start="2026-04-08T00:52:37.884903" elapsed="0.188708"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Json_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:38.073937" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:38.073697" elapsed="0.000429"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:38.073679" elapsed="0.000475"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:52:38.074207" elapsed="0.000028"/>
</return>
<arg>session=${session}</arg>
<arg>folder=${RESTCONF_MODULES_DIR}</arg>
<arg>verify=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Add arguments sensible for JSON data, return Get_Templated response text.
Optionally, verification against JSON data (may be iterated) is called.
Only subset of JSON data is verified and returned if JMES path is specified in
file ${folder}/jmespath.expr.</doc>
<status status="PASS" start="2026-04-08T00:52:37.880849" elapsed="0.193488"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:37.876717" elapsed="0.197677"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:37.876700" elapsed="0.197718"/>
</if>
<kw name="Resolve_Shard_Type_Class" owner="ClusterManagement">
<if>
<branch type="IF" condition="'${shard_type}' == 'config'">
<return>
<value>DistributedConfigDatastore</value>
<status status="NOT RUN" start="2026-04-08T00:52:38.075022" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:52:38.074913" elapsed="0.000154"/>
</branch>
<branch type="ELSE IF" condition="'${shard_type}' == 'operational'">
<return>
<value>DistributedOperationalDatastore</value>
<status status="PASS" start="2026-04-08T00:52:38.075208" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-08T00:52:38.075089" elapsed="0.000177"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:38.074895" elapsed="0.000395"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized shard type: ${shard_type}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:38.075434" elapsed="0.000021"/>
</kw>
<msg time="2026-04-08T00:52:38.075551" level="INFO">${type_class} = DistributedOperationalDatastore</msg>
<var>${type_class}</var>
<arg>shard_type=${shard_type}</arg>
<doc>Simple lookup for class name corresponding to desired type.</doc>
<status status="PASS" start="2026-04-08T00:52:38.074645" elapsed="0.000932"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:52:38.076111" level="INFO">${cluster_index} = 3</msg>
<var>${cluster_index}</var>
<arg>${member_index}+${NODE_ROLE_INDEX_START}-1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:38.075742" elapsed="0.000395"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:38.076781" level="INFO">${uri} = jolokia/read/org.opendaylight.controller:Category=Shards,name=member-3-shard-topology-operational,type=DistributedOperationalDatastore</msg>
<var>${uri}</var>
<arg>${JOLOKIA_READ_URI}:Category=Shards,name=member-${cluster_index}-shard-${shard_name}-${shard_type},type=${type_class}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:38.076318" elapsed="0.000490"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:38.082348" level="INFO">jolokia/read/org.opendaylight.controller:Category=Shards,name=member-3-shard-topology-operational,type=DistributedOperationalDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:38.081885" elapsed="0.000510"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:38.083011" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:38.082573" elapsed="0.000483"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:52:38.100538" level="INFO">GET Request : url=http://10.30.171.110:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-3-shard-topology-operational,type=DistributedOperationalDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-3-shard-topology-operational,type=DistributedOperationalDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:52:38.100673" level="INFO">GET Response : url=http://10.30.171.110:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-3-shard-topology-operational,type=DistributedOperationalDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Wed, 08 Apr 2026 00:52:38 GMT', 'Expires': 'Tue, 07 Apr 2026 23:52:38 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-3-shard-topology-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"ReadWriteTransactionCount":0,"SnapshotIndex":254,"InMemoryJournalLogSize":1,"ReplicatedToAllIndex":254,"Leader":"member-1-shard-topology-operational","LastIndex":255,"RaftState":"Follower","LastApplied":255,"LastCommittedTransactionTime":"1970-01-01 00:00:00.000","PeerAddresses":"member-1-shard-topology-operational: pekko:\/\/opendaylight-cluster-data@10.30.170.48:2550\/user\/shardmanager-operational\/member-1-shard-topology-operational, member-2-shard-topology-operational: pekko:\/\/opendaylight-cluster-data@10.30.170.131:2550\/user\/shardmanager-operational\/member-2-shard-topology-operational","LastLogIndex":255,"LastLeadershipChangeTime":"2026-04-08 00:46:45.978","FollowerInitialSyncStatus":true,"FollowerInfo":[],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"273.7 μs","CurrentTerm":2,"LastTerm":2,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-topology-operational","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":0,"TxCohortCacheSize":0,"PeerVotingStates":"member-1-shard-topology-operational: true, member-2-shard-topology-operational: true","LastLogTerm":2,"StatRetrievalError":null,"CommitIndex":255,"SnapshotTerm":2,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-3-shard-topology-operational","LeadershipChangeCount":1,"InMemoryJournalDataSize":47783},"timestamp":1775609558,"status":200} 
 </msg>
<msg time="2026-04-08T00:52:38.100863" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:52:38.093914" elapsed="0.007056"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:38.083123" elapsed="0.018130"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:38.101437" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:38.101282" elapsed="0.000467"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:38.083104" elapsed="0.018671"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:38.107885" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-3-shard-topology-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"ReadWriteTransactionCount":0,"SnapshotIndex":254,"InMemoryJournalLogSize":1,"ReplicatedToAllIndex":254,"Leader":"member-1-shard-topology-operational","LastIndex":255,"RaftState":"Follower","LastApplied":255,"LastCommittedTransactionTime":"1970-01-01 00:00:00.000","PeerAddresses":"member-1-shard-topology-operational: pekko:\/\/opendaylight-cluster-data@10.30.170.48:2550\/user\/shardmanager-operational\/member-1-shard-topology-operational, member-2-shard-topology-operational: pekko:\/\/opendaylight-cluster-data@10.30.170.131:2550\/user\/shardmanager-operational\/member-2-shard-topology-operational","LastLogIndex":255,"LastLeadershipChangeTime":"2026-04-08 00:46:45.978","FollowerInitialSyncStatus":true,"FollowerInfo":[],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"273.7 μs","CurrentTerm":2,"LastTerm":2,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-topology-operational","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":0,"TxCohortCacheSize":0,"PeerVotingStates":"member-1-shard-topology-operational: true, member-2-shard-topology-operational: true","LastLogTerm":2,"StatRetrievalError":null,"CommitIndex":255,"SnapshotTerm":2,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-3-shard-topology-operational","LeadershipChangeCount":1,"InMemoryJournalDataSize":47783},"timestamp":1775609558,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:38.104370" elapsed="0.003671"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:38.103114" elapsed="0.004994"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:38.103088" elapsed="0.005094"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:38.112305" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:38.109485" elapsed="0.002918"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:38.108305" elapsed="0.004145"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:38.108279" elapsed="0.004208"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:52:38.113846" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:38.113089" elapsed="0.000818"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:38.114627" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:38.114076" elapsed="0.000637"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:38.115612" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:38.115094" elapsed="0.000563"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:38.114750" elapsed="0.000958"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:38.114053" elapsed="0.001690"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:52:38.117096" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:38.116366" elapsed="0.000794"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:38.117818" elapsed="0.000035"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:38.117355" elapsed="0.000548"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:38.118838" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:38.118348" elapsed="0.000566"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:38.117940" elapsed="0.001027"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:38.117335" elapsed="0.001667"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:52:38.119237" elapsed="0.000611"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:52:38.120651" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:38.120154" elapsed="0.000556"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:52:38.120991" elapsed="0.002390"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:52:38.102373" elapsed="0.021165"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:52:38.123736" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:52:38.123610" elapsed="0.000171"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:38.123591" elapsed="0.000211"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:52:38.127419" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-3-shard-topology-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:52:38.123945" elapsed="0.003504"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:52:38.127500" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:52:38.127656" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-3-shard-topology-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:52:38.077764" elapsed="0.049949"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:52:38.127774" elapsed="0.000027"/>
</return>
<msg time="2026-04-08T00:52:38.127922" level="INFO">${data_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-3-shard-topology-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp...</msg>
<var>${data_text}</var>
<arg>uri=${uri}</arg>
<arg>session=${session}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-08T00:52:38.077018" elapsed="0.050930"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:52:38.128990" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-3-shard-topology-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 17756095...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:38.128521" elapsed="0.000498"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-08T00:52:38.129068" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:52:38.129260" level="INFO">${data_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-3-shard-topology-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 17756095...</msg>
<var>${data_object}</var>
<arg>${data_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-08T00:52:38.128182" elapsed="0.001105"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:52:38.129641" level="INFO">${value} = {'AbortTransactionsCount': 0, 'CommitIndex': 255, 'CommittedTransactionsCount': 0, 'CurrentTerm': 2, 'FailedReadTransactionsCount': 0, 'FailedTransactionsCount': 0, 'FollowerInfo': [], 'FollowerInitia...</msg>
<var>${value}</var>
<arg>${data_object}</arg>
<arg>value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:52:38.129441" elapsed="0.000227"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:52:38.130022" level="INFO">${raft_property} = Follower</msg>
<var>${raft_property}</var>
<arg>${value}</arg>
<arg>${property}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:52:38.129822" elapsed="0.000226"/>
</kw>
<return>
<value>${raft_property}</value>
<status status="PASS" start="2026-04-08T00:52:38.130094" elapsed="0.000027"/>
</return>
<msg time="2026-04-08T00:52:38.130345" level="INFO">${raft_state} = Follower</msg>
<var>${raft_state}</var>
<arg>RaftState</arg>
<arg>${shard_name}</arg>
<arg>${shard_type}</arg>
<arg>${member_index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft property.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T00:52:37.875070" elapsed="0.255302"/>
</kw>
<return>
<value>${raft_state}</value>
<status status="PASS" start="2026-04-08T00:52:38.130430" elapsed="0.000026"/>
</return>
<msg time="2026-04-08T00:52:38.130577" level="INFO">${raft_state} = Follower</msg>
<var>${raft_state}</var>
<arg>shard_name=${shard_name}</arg>
<arg>shard_type=${ds_type}</arg>
<arg>member_index=${index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft status.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T00:52:37.874359" elapsed="0.256243"/>
</kw>
<if>
<branch type="IF" condition="'Follower' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${follower_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-08T00:52:38.130894" elapsed="0.000206"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:38.130681" elapsed="0.000461"/>
</branch>
<branch type="ELSE IF" condition="'Leader' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${leader_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:38.131327" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:38.131180" elapsed="0.000200"/>
</branch>
<branch type="ELSE IF" condition="${validate}">
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized Raft state: ${raft_state}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:38.131541" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:38.131403" elapsed="0.000188"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:38.130663" elapsed="0.000950"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T00:52:37.874114" elapsed="0.257522"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-08T00:52:37.361482" elapsed="0.770187"/>
</for>
<return>
<value>${leader_list}</value>
<value>${follower_list}</value>
<status status="PASS" start="2026-04-08T00:52:38.131711" elapsed="0.000026"/>
</return>
<msg time="2026-04-08T00:52:38.131909" level="INFO">${leader_list} = [1]</msg>
<msg time="2026-04-08T00:52:38.131955" level="INFO">${follower_list} = [2, 3]</msg>
<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="PASS" start="2026-04-08T00:52:37.357456" elapsed="0.774522"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T00:52:38.132435" level="INFO">Length is 1.</msg>
<msg time="2026-04-08T00:52:38.132509" level="INFO">${leader_count} = 1</msg>
<var>${leader_count}</var>
<arg>${leader_list}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T00:52:38.132150" elapsed="0.000383"/>
</kw>
<if>
<branch type="IF" condition="${leader_count} &lt; 1">
<kw name="Fail" owner="BuiltIn">
<arg>No leader found.</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:38.132811" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:38.132600" elapsed="0.000263"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:38.132583" elapsed="0.000303"/>
</if>
<kw name="Length Should Be" owner="BuiltIn">
<msg time="2026-04-08T00:52:38.134953" level="INFO">Length is 1.</msg>
<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="PASS" start="2026-04-08T00:52:38.133021" elapsed="0.001977"/>
</kw>
<kw name="Get From List" owner="Collections">
<msg time="2026-04-08T00:52:38.135440" level="INFO">${leader} = 1</msg>
<var>${leader}</var>
<arg>${leader_list}</arg>
<arg>0</arg>
<doc>Returns the value specified with an ``index`` from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:52:38.135251" elapsed="0.000215"/>
</kw>
<return>
<value>${leader}</value>
<value>${follower_list}</value>
<status status="PASS" start="2026-04-08T00:52:38.135638" 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="PASS" start="2026-04-08T00:52:37.354938" elapsed="0.780861"/>
</kw>
<var name="${shard_name}">topology</var>
<status status="PASS" start="2026-04-08T00:52:37.354721" elapsed="0.781125"/>
</iter>
<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-04-08T00:52:38.140202" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:52:38.139788" elapsed="0.000442"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:52:38.140686" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:52:38.140387" elapsed="0.000325"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:52:38.140755" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:52:38.140905" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:52:38.139421" elapsed="0.001508"/>
</kw>
<kw name="Sort List" owner="Collections">
<arg>${index_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="PASS" start="2026-04-08T00:52:38.141081" elapsed="0.000172"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:52:38.141739" level="INFO">${ds_type} = operational</msg>
<var>${ds_type}</var>
<arg>'${shard_type}' != 'config'</arg>
<arg>operational</arg>
<arg>config</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:52:38.141412" elapsed="0.000352"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:52:38.142161" level="INFO">${leader_list} = []</msg>
<var>${leader_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:52:38.141918" elapsed="0.000283"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:52:38.142581" level="INFO">${follower_list} = []</msg>
<var>${follower_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:52:38.142347" elapsed="0.000259"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_Raft_State_Of_Shard_At_Member" owner="ClusterManagement">
<kw name="Get_Raft_Property_From_Shard_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:38.145032" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:38.144709" elapsed="0.000351"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:52:38.145105" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:52:38.145278" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:52:38.144371" elapsed="0.000932"/>
</kw>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Get_As_Json_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:38.227452" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:38.227048" elapsed="0.000433"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:52:38.228266" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:52:38.227974" elapsed="0.000368">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-08T00:52:38.228435" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:52:38.227644" elapsed="0.000815"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:52:38.229002" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:52:38.228621" elapsed="0.000408"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T00:52:38.229342" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-08T00:52:38.229492" level="INFO">${template} = /rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T00:52:38.229205" elapsed="0.000313"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:38.229964" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:38.229716" elapsed="0.000292"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:38.230973" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:38.230719" elapsed="0.000298"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-08T00:52:38.231461" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-08T00:52:38.231191" elapsed="0.000297"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:38.231806" elapsed="0.000022"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:38.232007" elapsed="0.000024"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:38.232217" elapsed="0.000023"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-08T00:52:38.231675" elapsed="0.000602"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-08T00:52:38.231538" elapsed="0.000768"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-08T00:52:38.232350" elapsed="0.000031"/>
</return>
<msg time="2026-04-08T00:52:38.232509" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-08T00:52:38.230402" elapsed="0.002133"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:38.230081" elapsed="0.002485"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:38.232735" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:38.232590" elapsed="0.000199"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:38.230060" elapsed="0.002750"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:52:38.233402" level="INFO">${final_text} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:38.232950" elapsed="0.000480"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T00:52:38.233477" 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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="PASS" start="2026-04-08T00:52:38.226418" elapsed="0.007181"/>
</kw>
<msg time="2026-04-08T00:52:38.233651" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:52:38.214256" elapsed="0.019480"/>
</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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:38.245865" elapsed="0.000041"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:38.257858" elapsed="0.000041"/>
</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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:38.269878" elapsed="0.000041"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:38.270666" elapsed="0.000037"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:38.271749" elapsed="0.000090"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:38.273087" elapsed="0.000141"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:38.272754" elapsed="0.000561"/>
</branch>
<status status="NOT RUN" start="2026-04-08T00:52:38.272716" elapsed="0.000653"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:38.273727" elapsed="0.000048"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:38.274141" elapsed="0.000078"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:38.274582" elapsed="0.000047"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-08T00:52:38.272575" elapsed="0.002172"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-08T00:52:38.272033" elapsed="0.002801"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:38.276479" elapsed="0.000078"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-08T00:52:38.276761" elapsed="0.000109"/>
</return>
<msg time="2026-04-08T00:52:38.277291" level="INFO">${uri} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-08T00:52:38.208283" elapsed="0.069254"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:52:38.282392" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:52:38.282131" elapsed="0.000326">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-08T00:52:38.282648" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:52:38.281689" elapsed="0.001004"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:38.283286" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:38.282827" elapsed="0.000527"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:38.283959" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:38.283660" elapsed="0.000326"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:38.283393" elapsed="0.000638"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:38.282775" elapsed="0.001295"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:52:38.287101" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:52:38.284824" elapsed="0.002325"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-08T00:52:38.287308" elapsed="0.000064"/>
</return>
<msg time="2026-04-08T00:52:38.287624" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:52:38.279955" elapsed="0.007776"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:52:38.290373" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:52:38.290113" elapsed="0.000324">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-08T00:52:38.290624" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:52:38.289679" elapsed="0.000989"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-08T00:52:38.291050" elapsed="0.000079"/>
</return>
<status status="PASS" start="2026-04-08T00:52:38.290800" elapsed="0.000507"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:38.290749" elapsed="0.000599"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:38.292045" elapsed="0.000036"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:38.292783" elapsed="0.000036"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-08T00:52:38.292904" elapsed="0.000049"/>
</return>
<msg time="2026-04-08T00:52:38.295098" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:52:38.288549" elapsed="0.006673"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:38.299108" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:38.298728" elapsed="0.000495"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:38.300294" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:38.299897" elapsed="0.000491"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:52:38.310781" level="INFO">GET Request : url=http://10.30.170.48:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 path_url=/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01jewze00gqgu8yuon50tdwq65226.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:52:38.311226" level="INFO">GET Response : url=http://10.30.170.48:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Transfer-Encoding': 'chunked'} 
 body={"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","hidden-symmetric-keys","encrypted-private-keys","asymmetrically-encrypted-value-format","cms-encrypted-data-format","cleartext-private-keys","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["ssh-client-keepalives","client-ident-hostbased","client-ident-publickey","client-ident-password"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-ex... (set the log level to DEBUG or TRACE to see the full content) 
 </msg>
<msg time="2026-04-08T00:52:38.311423" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:52:38.302743" elapsed="0.008706"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:38.300564" elapsed="0.010941"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:38.311797" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:38.311549" elapsed="0.000323"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:38.300507" elapsed="0.011402"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:38.317331" level="INFO">{"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","hidden-symmetric-keys","encrypted-private-keys","asymmetrically-encrypted-value-format","cms-encrypted-data-format","cleartext-private-keys","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["ssh-client-keepalives","client-ident-hostbased","client-ident-publickey","client-ident-password"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-experimenter-types?revision=2015-10-20","namespace":"urn:opendaylight:openflowplugin:experimenter:types","conformance-type":"import"},{"name":"ietf-ip_2018-02-22","revision":"2018-02-22","schema":"/rests/modules/ietf-ip?revision=2018-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-ip","conformance-type":"import","feature":["ipv6-privacy-autoconf","ipv4-non-contiguous-netmasks"]},{"name":"ietf-tcp-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-client","conformance-type":"import","feature":["local-binding-supported","tcp-client-keepalives"]},{"name":"node-config_2014-10-15","revision":"2014-10-15","schema":"/rests/modules/node-config?revision=2014-10-15","namespace":"urn:opendaylight:module:config","conformance-type":"import"},{"name":"ietf-restconf_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf","conformance-type":"import"},{"name":"ietf-datastores_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-datastores?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-datastores","conformance-type":"import"},{"name":"ietf-yang-patch_2017-02-22","revision":"2017-02-22","schema":"/rests/modules/ietf-yang-patch?revision=2017-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-patch","conformance-type":"import"},{"name":"sal-group_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-group?revision=2013-09-18","namespace":"urn:opendaylight:group:service","conformance-type":"import"},{"name":"odl-codegen-extensions_2024-06-27","revision":"2024-06-27","schema":"/rests/modules/odl-codegen-extensions?revision=2024-06-27","namespace":"urn:opendaylight:yang:extension:codegen","conformance-type":"import"},{"name":"sal-meter_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-meter?revision=2013-09-18","namespace":"urn:opendaylight:meter:service","conformance-type":"import"},{"name":"ietf-interfaces_2018-02-20","revision":"2018-02-20","schema":"/rests/modules/ietf-interfaces?revision=2018-02-20","namespace":"urn:ietf:params:xml:ns:yang:ietf-interfaces","conformance-type":"import","feature":["pre-provisioning","if-mib","arbitrary-names"]},{"name":"opendaylight-l2-types_2013-08-27","revision":"2013-08-27","schema":"/rests/modules/opendaylight-l2-types?revision=2013-08-27","namespace":"urn:opendaylight:l2:types","conformance-type":"import"},{"name":"opendaylight-flow-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-flow-types?revision=2013-10-26","namespace":"urn:opendaylight:flow:types","conformance-type":"import"},{"name":"lldp-speaker-config_2016-05-12","revision":"2016-05-12","schema":"/rests/modules/lldp-speaker-config?revision=2016-05-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker:config","conformance-type":"import"},{"name":"aaa-cert_2015-11-26","revision":"2015-11-26","schema":"/rests/modules/aaa-cert?revision=2015-11-26","namespace":"urn:opendaylight:yang:aaa:cert","conformance-type":"import"},{"name":"openflow-action_2015-02-03","revision":"2015-02-03","schema":"/rests/modules/openflow-action?revision=2015-02-03","namespace":"urn:opendaylight:openflow:common:action","conformance-type":"import"},{"name":"openflow-approved-extensions_2016-08-02","revision":"2016-08-02","schema":"/rests/modules/openflow-approved-extensions?revision=2016-08-02","namespace":"urn:opendaylight:openflow:approved:extensions","conformance-type":"import"},{"name":"nc-notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/nc-notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netmod:notification","conformance-type":"import"},{"name":"ietf-netconf-nmda_2019-01-07","revision":"2019-01-07","schema":"/rests/modules/ietf-netconf-nmda?revision=2019-01-07","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-nmda","conformance-type":"import","feature":["with-defaults","origin"]},{"name":"ietf-tcp-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-common","conformance-type":"import","feature":["keepalives-supported"]},{"name":"network-topology_2013-10-21","revision":"2013-10-21","schema":"/rests/modules/network-topology?revision=2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:network-topology","conformance-type":"import"},{"name":"aaa-encrypt-service-config_2024-02-02","revision":"2024-02-02","schema":"/rests/modules/aaa-encrypt-service-config?revision=2024-02-02","namespace":"config:aaa:authn:encrypt:service:config","conformance-type":"import"},{"name":"openflow-instruction_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-instruction?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:instruction","conformance-type":"import"},{"name":"ietf-tls-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-client","conformance-type":"import","feature":["client-ident-x509-cert","server-auth-x509-cert"]},{"name":"opendaylight-group-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-group-statistics?revision=2013-11-11","namespace":"urn:opendaylight:group:statistics","conformance-type":"import"},{"name":"cluster-admin_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/cluster-admin?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:cluster:admin","conformance-type":"import"},{"name":"opendaylight-flow-statistics_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-flow-statistics?revision=2013-08-19","namespace":"urn:opendaylight:flow:statistics","conformance-type":"import"},{"name":"opendaylight-table-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-table-types?revision=2013-10-26","namespace":"urn:opendaylight:table:types","conformance-type":"import"},{"name":"forwarding-rules-manager-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/forwarding-rules-manager-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:forwardingrules-manager:config","conformance-type":"import"},{"name":"odl-srm-types_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-types?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:types","conformance-type":"import"},{"name":"ietf-x509-cert-to-name_2014-12-10","revision":"2014-12-10","schema":"/rests/modules/ietf-x509-cert-to-name?revision=2014-12-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-x509-cert-to-name","conformance-type":"import"},{"name":"flow-node-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-node-inventory?revision=2013-08-19","namespace":"urn:opendaylight:flow:inventory","conformance-type":"import"},{"name":"flow-errors_2013-11-16","revision":"2013-11-16","schema":"/rests/modules/flow-errors?revision=2013-11-16","namespace":"urn:opendaylight:flow:errors","conformance-type":"import"},{"name":"ietf-netconf_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:netconf:base:1.0","conformance-type":"import","feature":["xpath","url","rollback-on-error","validate","startup","candidate","confirmed-commit","writable-running"]},{"name":"iana-ssh-public-key-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-public-key-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-public-key-algs","conformance-type":"import"},{"name":"aaa-cert-mdsal_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/aaa-cert-mdsal?revision=2016-03-21","namespace":"urn:opendaylight:yang:aaa:cert:mdsal","conformance-type":"import"},{"name":"odl-device-notification_2024-02-18","revision":"2024-02-18","schema":"/rests/modules/odl-device-notification?revision=2024-02-18","namespace":"urn:opendaylight:device:notification","conformance-type":"import"},{"name":"ietf-origin_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-origin?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-origin","conformance-type":"import"},{"name":"openflow-augments_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-augments?revision=2015-02-25","namespace":"urn:opendaylight:openflow:augments","conformance-type":"import"},{"name":"iana-ssh-encryption-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-encryption-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-encryption-algs","conformance-type":"import"},{"name":"ietf-truststore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-truststore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-truststore","conformance-type":"import","feature":["inline-definitions-supported"]},{"name":"distributed-datastore-provider_2025-01-30","revision":"2025-01-30","schema":"/rests/modules/distributed-datastore-provider?revision=2025-01-30","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:distributed-datastore-provider","conformance-type":"import"},{"name":"opendaylight-group-types_2013-10-18","revision":"2013-10-18","schema":"/rests/modules/opendaylight-group-types?revision=2013-10-18","namespace":"urn:opendaylight:group:types","conformance-type":"import"},{"name":"sal-remote-augment_2023-11-03","revision":"2023-11-03","schema":"/rests/modules/sal-remote-augment?revision=2023-11-03","namespace":"urn:sal:restconf:event:subscription","conformance-type":"import"},{"name":"opendaylight-ipv6-arbitrary-bitmask-fields_2016-02-24","revision":"2016-02-24","schema":"/rests/modules/opendaylight-ipv6-arbitrary-bitmask-fields?revision=2016-02-24","namespace":"urn:opendaylight:opendaylight-ipv6-arbitrary-bitmask-fields","conformance-type":"import"},{"name":"sal-flows-batch_2016-03-14","revision":"2016-03-14","schema":"/rests/modules/sal-flows-batch?revision=2016-03-14","namespace":"urn:opendaylight:flows:service","conformance-type":"import"},{"name":"ietf-tls-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-common","conformance-type":"import","feature":["tls12","hello-params","tls13"]},{"name":"openflow-types_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-types?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:types","conformance-type":"import"},{"name":"ietf-netconf-with-defaults_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf-with-defaults?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults","conformance-type":"import"},{"name":"odl-srm-ops_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-ops?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:ops","conformance-type":"import"},{"name":"odl-general-entity_2015-09-30","revision":"2015-09-30","schema":"/rests/modules/odl-general-entity?revision=2015-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:mdsal:core:general-entity","conformance-type":"import"},{"name":"iana-ssh-key-exchange-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-key-exchange-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-key-exchange-algs","conformance-type":"import"},{"name":"node-ssl-connection-error_2019-07-23","revision":"2019-07-23","schema":"/rests/modules/node-ssl-connection-error?revision=2019-07-23","namespace":"urn:opendaylight:node-ssl-connection-error:service","conformance-type":"import"},{"name":"openflow-protocol_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-protocol?revision=2013-07-31","namespace":"urn:opendaylight:openflow:protocol","conformance-type":"import"},{"name":"ietf-udp-server_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-server?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-server","conformance-type":"import"},{"name":"ietf-keystore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-keystore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-keystore","conformance-type":"import","feature":["asymmetric-keys","inline-definitions-supported"]},{"name":"aaa_2016-12-14","revision":"2016-12-14","schema":"/rests/modules/aaa?revision=2016-12-14","namespace":"urn:opendaylight:params:xml:ns:yang:aaa","conformance-type":"import"},{"name":"aaa-cert-rpc_2015-12-15","revision":"2015-12-15","schema":"/rests/modules/aaa-cert-rpc?revision=2015-12-15","namespace":"urn:opendaylight:yang:aaa:cert:rpc","conformance-type":"import"},{"name":"system-notifications_2013-09-27","revision":"2013-09-27","schema":"/rests/modules/system-notifications?revision=2013-09-27","namespace":"urn:opendaylight:openflow:system","conformance-type":"import"},{"name":"sal-flat-batch_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/sal-flat-batch?revision=2016-03-21","namespace":"urn:opendaylight:flat-batch:service","conformance-type":"import"},{"name":"notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netconf:notification:1.0","conformance-type":"import"},{"name":"sal-remote_2014-01-14","revision":"2014-01-14","schema":"/rests/modules/sal-remote?revision=2014-01-14","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:remote","conformance-type":"import"},{"name":"yang-ext_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/yang-ext?revision=2013-07-09","namespace":"urn:opendaylight:yang:extension:yang-ext","conformance-type":"import"},{"name":"opendaylight-multipart-types_2017-01-12","revision":"2017-01-12","schema":"/rests/modules/opendaylight-multipart-types?revision=2017-01-12","namespace":"urn:opendaylight:multipart:types","conformance-type":"import"},{"name":"opendaylight-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-inventory?revision=2013-08-19","namespace":"urn:opendaylight:inventory","conformance-type":"import"},{"name":"sal-queue_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-queue?revision=2015-03-05","namespace":"urn:opendaylight:queue:service","conformance-type":"import"},{"name":"sal-groups-batch_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/sal-groups-batch?revision=2016-03-15","namespace":"urn:opendaylight:groups:service","conformance-type":"import"},{"name":"arbitrator-reconcile_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/arbitrator-reconcile?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:arbitrator-reconcile:service","conformance-type":"import"},{"name":"ietf-yang-metadata_2016-08-05","revision":"2016-08-05","schema":"/rests/modules/ietf-yang-metadata?revision=2016-08-05","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-metadata","conformance-type":"import"},{"name":"opendaylight-arbitrary-bitmask-fields_2016-01-30","revision":"2016-01-30","schema":"/rests/modules/opendaylight-arbitrary-bitmask-fields?revision=2016-01-30","namespace":"urn:opendaylight:arbitrary:bitmask:fields","conformance-type":"import"},{"name":"ietf-udp-client_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-client?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-client","conformance-type":"import","feature":["local-binding"]},{"name":"opendaylight-meter-types_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/opendaylight-meter-types?revision=2013-09-18","namespace":"urn:opendaylight:meter:types","conformance-type":"import"},{"name":"opendaylight-action-types_2013-11-12","revision":"2013-11-12","schema":"/rests/modules/opendaylight-action-types?revision=2013-11-12","namespace":"urn:opendaylight:action:types","conformance-type":"import"},{"name":"sal-role_2015-07-27","revision":"2015-07-27","schema":"/rests/modules/sal-role?revision=2015-07-27","namespace":"urn:opendaylight:role:service","conformance-type":"import"},{"name":"openflow-provider-config_2016-05-10","revision":"2016-05-10","schema":"/rests/modules/openflow-provider-config?revision=2016-05-10","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:provider:config","conformance-type":"import"},{"name":"odl-serviceutils-upgrade_2018-07-02","revision":"2018-07-02","schema":"/rests/modules/odl-serviceutils-upgrade?revision=2018-07-02","namespace":"urn:opendaylight:serviceutils:upgrade","conformance-type":"import"},{"name":"opendaylight-match-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-match-types?revision=2013-10-26","namespace":"urn:opendaylight:model:match:types","conformance-type":"import"},{"name":"ietf-restconf-server_2024-08-14","revision":"2024-08-14","schema":"/rests/modules/ietf-restconf-server?revision=2024-08-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-server","conformance-type":"import","feature":["http-listen","https-listen"]},{"name":"reconciliation-result-state_2017-07-13","revision":"2017-07-13","schema":"/rests/modules/reconciliation-result-state?revision=2017-07-13","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:rf:state","conformance-type":"import"},{"name":"onf-extensions_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/onf-extensions?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf","conformance-type":"import"},{"name":"sal-table_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/sal-table?revision=2013-10-26","namespace":"urn:opendaylight:table:service","conformance-type":"import"},{"name":"iana-http-versions_2026-02-04","revision":"2026-02-04","schema":"/rests/modules/iana-http-versions?revision=2026-02-04","namespace":"urn:ietf:params:xml:ns:yang:iana-http-versions","conformance-type":"import"},{"name":"opendaylight-direct-statistics_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/opendaylight-direct-statistics?revision=2016-05-11","namespace":"urn:opendaylight:direct:statistics","conformance-type":"import"},{"name":"opendaylight-port-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-port-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:port","conformance-type":"import"},{"name":"sal-async-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/sal-async-config?revision=2017-06-19","namespace":"urn:opendaylight:async-config:service","conformance-type":"import"},{"name":"aaa-password-service-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-password-service-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:password:service:config","conformance-type":"import"},{"name":"ietf-yang-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-yang-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-types","conformance-type":"import"},{"name":"opendaylight-queue-statistics_2013-12-16","revision":"2013-12-16","schema":"/rests/modules/opendaylight-queue-statistics?revision=2013-12-16","namespace":"urn:opendaylight:queue:statistics","conformance-type":"import"},{"name":"sal-bundle_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/sal-bundle?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf:bundle:service","conformance-type":"import"},{"name":"ietf-restconf-subscribed-notifications_2019-11-17","revision":"2019-11-17","schema":"/rests/modules/ietf-restconf-subscribed-notifications?revision=2019-11-17","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-subscribed-notifications","conformance-type":"import"},{"name":"sal-meters-batch_2016-03-16","revision":"2016-03-16","schema":"/rests/modules/sal-meters-batch?revision=2016-03-16","namespace":"urn:opendaylight:meters:service","conformance-type":"import"},{"name":"odl-entity-owners","revision":"","schema":"/rests/modules/odl-entity-owners","namespace":"urn:opendaylight:params:xml:ns:yang:controller:entity-owners","conformance-type":"import"},{"name":"sal-experimenter-mp-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-mp-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-mp-message:service","conformance-type":"import"},{"name":"packet-processing_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/packet-processing?revision=2013-07-09","namespace":"urn:opendaylight:packet:service","conformance-type":"import"},{"name":"openflow-configuration_2014-06-30","revision":"2014-06-30","schema":"/rests/modules/openflow-configuration?revision=2014-06-30","namespace":"urn:opendaylight:openflow:config","conformance-type":"import"},{"name":"odl-srm-rpcs_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-rpcs?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:rpc","conformance-type":"import"},{"name":"ietf-netconf-acm_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-netconf-acm?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-acm","conformance-type":"import"},{"name":"iana-crypt-hash_2014-08-06","revision":"2014-08-06","schema":"/rests/modules/iana-crypt-hash?revision=2014-08-06","namespace":"urn:ietf:params:xml:ns:yang:iana-crypt-hash","conformance-type":"import","feature":["crypt-hash-sha-512","crypt-hash-sha-256","crypt-hash-md5"]},{"name":"openflow-extensible-match_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-extensible-match?revision=2015-02-25","namespace":"urn:opendaylight:openflow:oxm","conformance-type":"import"}],"module-set-id":"2"}}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:38.313655" elapsed="0.004149"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:38.313432" elapsed="0.004423"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:38.313410" elapsed="0.004481"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:38.321874" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:38.318361" elapsed="0.003580"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:38.318009" elapsed="0.003981"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:38.317982" elapsed="0.004039"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:52:38.322603" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:38.322219" elapsed="0.000411"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:38.322957" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:38.322720" elapsed="0.000294"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:38.323527" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:38.323220" elapsed="0.000333"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:38.323038" elapsed="0.000550"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:38.322701" elapsed="0.000909"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:52:38.324145" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:38.323788" elapsed="0.000410"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:38.324523" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:38.324291" elapsed="0.000288"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:38.325054" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:38.324758" elapsed="0.000321"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:38.324602" elapsed="0.000511"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:38.324272" elapsed="0.000862"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:52:38.325333" elapsed="0.000350"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:52:38.326148" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:38.325864" elapsed="0.000328"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:52:38.326364" elapsed="0.002147"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:52:38.312662" elapsed="0.015971"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:52:38.328976" elapsed="0.000047"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:52:38.328761" elapsed="0.000326"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:38.328711" elapsed="0.000413"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:52:38.339362" level="INFO">${text_normalized} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:52:38.329882" elapsed="0.009530"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:52:38.339489" elapsed="0.000065"/>
</return>
<msg time="2026-04-08T00:52:38.339809" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:52:38.295918" elapsed="0.043997"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:52:38.340390" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:52:38.340567" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="PASS" start="2026-04-08T00:52:38.153498" elapsed="0.187096"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Json_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:38.340914" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:38.340678" elapsed="0.000443"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:38.340660" elapsed="0.000489"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:52:38.341213" elapsed="0.000028"/>
</return>
<arg>session=${session}</arg>
<arg>folder=${RESTCONF_MODULES_DIR}</arg>
<arg>verify=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Add arguments sensible for JSON data, return Get_Templated response text.
Optionally, verification against JSON data (may be iterated) is called.
Only subset of JSON data is verified and returned if JMES path is specified in
file ${folder}/jmespath.expr.</doc>
<status status="PASS" start="2026-04-08T00:52:38.149437" elapsed="0.191905"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:38.145470" elapsed="0.195916"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:38.145450" elapsed="0.195959"/>
</if>
<kw name="Resolve_Shard_Type_Class" owner="ClusterManagement">
<if>
<branch type="IF" condition="'${shard_type}' == 'config'">
<return>
<value>DistributedConfigDatastore</value>
<status status="NOT RUN" start="2026-04-08T00:52:38.342025" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:52:38.341918" elapsed="0.000152"/>
</branch>
<branch type="ELSE IF" condition="'${shard_type}' == 'operational'">
<return>
<value>DistributedOperationalDatastore</value>
<status status="PASS" start="2026-04-08T00:52:38.342212" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-08T00:52:38.342092" elapsed="0.000178"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:38.341900" elapsed="0.000393"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized shard type: ${shard_type}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:38.342436" elapsed="0.000021"/>
</kw>
<msg time="2026-04-08T00:52:38.342555" level="INFO">${type_class} = DistributedOperationalDatastore</msg>
<var>${type_class}</var>
<arg>shard_type=${shard_type}</arg>
<doc>Simple lookup for class name corresponding to desired type.</doc>
<status status="PASS" start="2026-04-08T00:52:38.341652" elapsed="0.000928"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:52:38.343118" level="INFO">${cluster_index} = 1</msg>
<var>${cluster_index}</var>
<arg>${member_index}+${NODE_ROLE_INDEX_START}-1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:38.342747" elapsed="0.000397"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:38.343777" level="INFO">${uri} = jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-default-operational,type=DistributedOperationalDatastore</msg>
<var>${uri}</var>
<arg>${JOLOKIA_READ_URI}:Category=Shards,name=member-${cluster_index}-shard-${shard_name}-${shard_type},type=${type_class}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:38.343316" elapsed="0.000488"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:38.349527" level="INFO">jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-default-operational,type=DistributedOperationalDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:38.349045" elapsed="0.000530"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:38.350188" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:38.349730" elapsed="0.000505"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:52:38.367127" level="INFO">GET Request : url=http://10.30.170.48:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-default-operational,type=DistributedOperationalDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-default-operational,type=DistributedOperationalDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:52:38.367290" level="INFO">GET Response : url=http://10.30.170.48:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-default-operational,type=DistributedOperationalDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Wed, 08 Apr 2026 00:52:38 GMT', 'Expires': 'Tue, 07 Apr 2026 23:52:38 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-1-shard-default-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"ReadWriteTransactionCount":38,"SnapshotIndex":178,"InMemoryJournalLogSize":3,"ReplicatedToAllIndex":178,"Leader":"member-1-shard-default-operational","LastIndex":181,"RaftState":"Leader","LastApplied":179,"LastCommittedTransactionTime":"2026-04-08 00:46:49.710","PeerAddresses":"member-3-shard-default-operational: pekko:\/\/opendaylight-cluster-data@10.30.171.110:2550\/user\/shardmanager-operational\/member-3-shard-default-operational, member-2-shard-default-operational: pekko:\/\/opendaylight-cluster-data@10.30.170.131:2550\/user\/shardmanager-operational\/member-2-shard-default-operational","LastLogIndex":181,"LastLeadershipChangeTime":"2026-04-08 00:46:45.934","FollowerInitialSyncStatus":false,"FollowerInfo":[{"timeSinceLastActivity":"00:00:00.487","active":true,"matchIndex":179,"voting":true,"id":"member-3-shard-default-operational","nextIndex":180},{"timeSinceLastActivity":"00:00:00.486","active":true,"matchIndex":179,"voting":true,"id":"member-2-shard-default-operational","nextIndex":180}],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"282.2 μs","CurrentTerm":2,"LastTerm":2,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-default-operational","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":11,"TxCohortCacheSize":0,"PeerVotingStates":"member-3-shard-default-operational: true, member-2-shard-default-operational: true","LastLogTerm":2,"StatRetrievalError":null,"CommitIndex":179,"SnapshotTerm":2,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":52,"ShardName":"member-1-shard-default-operational","LeadershipChangeCount":1,"InMemoryJournalDataSize":95478},"timestamp":1775609558,"status":200} 
 </msg>
<msg time="2026-04-08T00:52:38.367485" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:52:38.361106" elapsed="0.006487"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:38.350304" elapsed="0.017548"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:38.368036" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:38.367882" elapsed="0.000736"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:38.350285" elapsed="0.018390"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:38.375009" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-1-shard-default-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"ReadWriteTransactionCount":38,"SnapshotIndex":178,"InMemoryJournalLogSize":3,"ReplicatedToAllIndex":178,"Leader":"member-1-shard-default-operational","LastIndex":181,"RaftState":"Leader","LastApplied":179,"LastCommittedTransactionTime":"2026-04-08 00:46:49.710","PeerAddresses":"member-3-shard-default-operational: pekko:\/\/opendaylight-cluster-data@10.30.171.110:2550\/user\/shardmanager-operational\/member-3-shard-default-operational, member-2-shard-default-operational: pekko:\/\/opendaylight-cluster-data@10.30.170.131:2550\/user\/shardmanager-operational\/member-2-shard-default-operational","LastLogIndex":181,"LastLeadershipChangeTime":"2026-04-08 00:46:45.934","FollowerInitialSyncStatus":false,"FollowerInfo":[{"timeSinceLastActivity":"00:00:00.487","active":true,"matchIndex":179,"voting":true,"id":"member-3-shard-default-operational","nextIndex":180},{"timeSinceLastActivity":"00:00:00.486","active":true,"matchIndex":179,"voting":true,"id":"member-2-shard-default-operational","nextIndex":180}],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"282.2 μs","CurrentTerm":2,"LastTerm":2,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-default-operational","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":11,"TxCohortCacheSize":0,"PeerVotingStates":"member-3-shard-default-operational: true, member-2-shard-default-operational: true","LastLogTerm":2,"StatRetrievalError":null,"CommitIndex":179,"SnapshotTerm":2,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":52,"ShardName":"member-1-shard-default-operational","LeadershipChangeCount":1,"InMemoryJournalDataSize":95478},"timestamp":1775609558,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:38.371119" elapsed="0.004086"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:38.369907" elapsed="0.005374"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:38.369888" elapsed="0.005451"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:38.379611" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:38.376882" elapsed="0.002827"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:38.375462" elapsed="0.004297"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:38.375435" elapsed="0.004362"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:52:38.381293" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:38.380523" elapsed="0.000832"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:38.382007" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:38.381523" elapsed="0.000574"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:38.382988" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:38.382485" elapsed="0.000549"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:38.382136" elapsed="0.000948"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:38.381503" elapsed="0.001618"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:52:38.384558" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:38.383757" elapsed="0.000862"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:38.385270" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:38.384787" elapsed="0.000569"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:38.386277" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:38.385723" elapsed="0.000601"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:38.385393" elapsed="0.000980"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:38.384766" elapsed="0.001643"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:52:38.386629" elapsed="0.000643"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:52:38.388060" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:38.387579" elapsed="0.000542"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:52:38.388477" elapsed="0.002324"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:52:38.369178" elapsed="0.021781"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:52:38.391178" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:52:38.391033" elapsed="0.000193"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:38.391013" elapsed="0.000234"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:52:38.394932" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-1-shard-default-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp"...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:52:38.391394" elapsed="0.003569"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:52:38.395047" elapsed="0.000032"/>
</return>
<msg time="2026-04-08T00:52:38.395228" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-1-shard-default-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp"...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:52:38.344754" elapsed="0.050502"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:52:38.395314" elapsed="0.000027"/>
</return>
<msg time="2026-04-08T00:52:38.395461" level="INFO">${data_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-1-shard-default-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp"...</msg>
<var>${data_text}</var>
<arg>uri=${uri}</arg>
<arg>session=${session}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-08T00:52:38.344013" elapsed="0.051474"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:52:38.396659" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-1-shard-default-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 177560955...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:38.396043" elapsed="0.000646"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-08T00:52:38.396738" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:52:38.396914" level="INFO">${data_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-1-shard-default-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 177560955...</msg>
<var>${data_object}</var>
<arg>${data_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-08T00:52:38.395705" elapsed="0.001236"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:52:38.397320" level="INFO">${value} = {'AbortTransactionsCount': 0, 'CommitIndex': 179, 'CommittedTransactionsCount': 11, 'CurrentTerm': 2, 'FailedReadTransactionsCount': 0, 'FailedTransactionsCount': 0, 'FollowerInfo': [{'active': True, ...</msg>
<var>${value}</var>
<arg>${data_object}</arg>
<arg>value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:52:38.397095" elapsed="0.000253"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:52:38.397700" level="INFO">${raft_property} = Leader</msg>
<var>${raft_property}</var>
<arg>${value}</arg>
<arg>${property}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:52:38.397502" elapsed="0.000223"/>
</kw>
<return>
<value>${raft_property}</value>
<status status="PASS" start="2026-04-08T00:52:38.397771" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:52:38.397918" level="INFO">${raft_state} = Leader</msg>
<var>${raft_state}</var>
<arg>RaftState</arg>
<arg>${shard_name}</arg>
<arg>${shard_type}</arg>
<arg>${member_index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft property.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T00:52:38.143759" elapsed="0.254184"/>
</kw>
<return>
<value>${raft_state}</value>
<status status="PASS" start="2026-04-08T00:52:38.397998" elapsed="0.000025"/>
</return>
<msg time="2026-04-08T00:52:38.398159" level="INFO">${raft_state} = Leader</msg>
<var>${raft_state}</var>
<arg>shard_name=${shard_name}</arg>
<arg>shard_type=${ds_type}</arg>
<arg>member_index=${index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft status.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T00:52:38.143015" elapsed="0.255183"/>
</kw>
<if>
<branch type="IF" condition="'Follower' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${follower_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:38.398491" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:38.398278" elapsed="0.000269"/>
</branch>
<branch type="ELSE IF" condition="'Leader' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${leader_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-08T00:52:38.398773" elapsed="0.000189"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:38.398570" elapsed="0.000429"/>
</branch>
<branch type="ELSE IF" condition="${validate}">
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized Raft state: ${raft_state}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:38.399218" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:38.399024" elapsed="0.000249"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:38.398261" elapsed="0.001034"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T00:52:38.142853" elapsed="0.256466"/>
</iter>
<iter>
<kw name="Get_Raft_State_Of_Shard_At_Member" owner="ClusterManagement">
<kw name="Get_Raft_Property_From_Shard_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:38.401665" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:38.401340" elapsed="0.000352"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:52:38.401737" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:52:38.401883" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:52:38.400970" elapsed="0.000938"/>
</kw>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Get_As_Json_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:38.492714" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:38.492297" elapsed="0.000453"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:52:38.493716" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:52:38.493410" elapsed="0.000391">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-08T00:52:38.493896" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:52:38.493047" elapsed="0.000873"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:52:38.494541" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:52:38.494086" elapsed="0.000484"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T00:52:38.494879" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-08T00:52:38.495062" level="INFO">${template} = /rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T00:52:38.494733" elapsed="0.000356"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:38.495532" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:38.495279" elapsed="0.000298"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:38.496581" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:38.496325" elapsed="0.000305"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-08T00:52:38.497063" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-08T00:52:38.496792" elapsed="0.000297"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:38.497450" elapsed="0.000022"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:38.497652" elapsed="0.000025"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:38.497827" elapsed="0.000021"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-08T00:52:38.497314" elapsed="0.000570"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-08T00:52:38.497144" elapsed="0.000772"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-08T00:52:38.497965" elapsed="0.000034"/>
</return>
<msg time="2026-04-08T00:52:38.498132" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-08T00:52:38.495983" elapsed="0.002179"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:38.495661" elapsed="0.002548"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:38.498383" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:38.498235" elapsed="0.000203"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:38.495635" elapsed="0.002825"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:52:38.499051" level="INFO">${final_text} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:38.498604" elapsed="0.000474"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T00:52:38.499126" 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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="PASS" start="2026-04-08T00:52:38.491655" elapsed="0.007635"/>
</kw>
<msg time="2026-04-08T00:52:38.499346" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:52:38.479144" elapsed="0.020285"/>
</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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:38.511680" elapsed="0.000042"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:38.523623" elapsed="0.000041"/>
</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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:38.536342" elapsed="0.000053"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:38.537195" elapsed="0.000042"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:38.537989" elapsed="0.000039"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:38.538634" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:38.538481" elapsed="0.000214"/>
</branch>
<status status="NOT RUN" start="2026-04-08T00:52:38.538463" elapsed="0.000256"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:38.538881" elapsed="0.000022"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:38.539072" elapsed="0.000021"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:38.539276" elapsed="0.000022"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-08T00:52:38.538406" elapsed="0.000948"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-08T00:52:38.538119" elapsed="0.001278"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:38.540140" elapsed="0.000053"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-08T00:52:38.540281" elapsed="0.000050"/>
</return>
<msg time="2026-04-08T00:52:38.540518" level="INFO">${uri} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-08T00:52:38.472765" elapsed="0.067866"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:52:38.543781" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:52:38.543418" elapsed="0.000459">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-08T00:52:38.544106" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:52:38.542879" elapsed="0.001274"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:38.544759" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:38.544315" elapsed="0.000527"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:38.545546" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:38.545189" elapsed="0.000391"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:38.544886" elapsed="0.000753"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:38.544262" elapsed="0.001427"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:52:38.549018" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:52:38.546591" elapsed="0.002477"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-08T00:52:38.549147" elapsed="0.000249"/>
</return>
<msg time="2026-04-08T00:52:38.549661" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:52:38.541680" elapsed="0.008089"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:52:38.552911" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:52:38.552566" elapsed="0.000424">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-08T00:52:38.553232" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:52:38.552052" elapsed="0.001242"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-08T00:52:38.553719" elapsed="0.000081"/>
</return>
<status status="PASS" start="2026-04-08T00:52:38.553447" elapsed="0.000430"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:38.553394" elapsed="0.000526"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:38.554759" elapsed="0.000039"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:38.555519" elapsed="0.000038"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-08T00:52:38.555632" elapsed="0.000049"/>
</return>
<msg time="2026-04-08T00:52:38.558062" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:52:38.550837" elapsed="0.007434"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:38.562317" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:38.561767" elapsed="0.000657"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:38.563528" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:38.563120" elapsed="0.000509"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:52:38.580123" level="INFO">GET Request : url=http://10.30.170.131:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 path_url=/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01eq5fxmndxspk37g8qgkyja672.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:52:38.580809" level="INFO">GET Response : url=http://10.30.170.131:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Transfer-Encoding': 'chunked'} 
 body={"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","hidden-symmetric-keys","encrypted-private-keys","asymmetrically-encrypted-value-format","cms-encrypted-data-format","cleartext-private-keys","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["ssh-client-keepalives","client-ident-hostbased","client-ident-publickey","client-ident-password"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-ex... (set the log level to DEBUG or TRACE to see the full content) 
 </msg>
<msg time="2026-04-08T00:52:38.581166" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:52:38.565869" elapsed="0.015389"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:38.563761" elapsed="0.017624"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:38.582057" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:38.581486" elapsed="0.000790"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:38.563708" elapsed="0.018655"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:38.590900" level="INFO">{"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","hidden-symmetric-keys","encrypted-private-keys","asymmetrically-encrypted-value-format","cms-encrypted-data-format","cleartext-private-keys","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["ssh-client-keepalives","client-ident-hostbased","client-ident-publickey","client-ident-password"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-experimenter-types?revision=2015-10-20","namespace":"urn:opendaylight:openflowplugin:experimenter:types","conformance-type":"import"},{"name":"ietf-ip_2018-02-22","revision":"2018-02-22","schema":"/rests/modules/ietf-ip?revision=2018-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-ip","conformance-type":"import","feature":["ipv6-privacy-autoconf","ipv4-non-contiguous-netmasks"]},{"name":"ietf-tcp-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-client","conformance-type":"import","feature":["local-binding-supported","tcp-client-keepalives"]},{"name":"node-config_2014-10-15","revision":"2014-10-15","schema":"/rests/modules/node-config?revision=2014-10-15","namespace":"urn:opendaylight:module:config","conformance-type":"import"},{"name":"ietf-restconf_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf","conformance-type":"import"},{"name":"ietf-datastores_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-datastores?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-datastores","conformance-type":"import"},{"name":"ietf-yang-patch_2017-02-22","revision":"2017-02-22","schema":"/rests/modules/ietf-yang-patch?revision=2017-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-patch","conformance-type":"import"},{"name":"sal-group_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-group?revision=2013-09-18","namespace":"urn:opendaylight:group:service","conformance-type":"import"},{"name":"odl-codegen-extensions_2024-06-27","revision":"2024-06-27","schema":"/rests/modules/odl-codegen-extensions?revision=2024-06-27","namespace":"urn:opendaylight:yang:extension:codegen","conformance-type":"import"},{"name":"sal-meter_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-meter?revision=2013-09-18","namespace":"urn:opendaylight:meter:service","conformance-type":"import"},{"name":"ietf-interfaces_2018-02-20","revision":"2018-02-20","schema":"/rests/modules/ietf-interfaces?revision=2018-02-20","namespace":"urn:ietf:params:xml:ns:yang:ietf-interfaces","conformance-type":"import","feature":["pre-provisioning","if-mib","arbitrary-names"]},{"name":"opendaylight-l2-types_2013-08-27","revision":"2013-08-27","schema":"/rests/modules/opendaylight-l2-types?revision=2013-08-27","namespace":"urn:opendaylight:l2:types","conformance-type":"import"},{"name":"opendaylight-flow-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-flow-types?revision=2013-10-26","namespace":"urn:opendaylight:flow:types","conformance-type":"import"},{"name":"lldp-speaker-config_2016-05-12","revision":"2016-05-12","schema":"/rests/modules/lldp-speaker-config?revision=2016-05-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker:config","conformance-type":"import"},{"name":"aaa-cert_2015-11-26","revision":"2015-11-26","schema":"/rests/modules/aaa-cert?revision=2015-11-26","namespace":"urn:opendaylight:yang:aaa:cert","conformance-type":"import"},{"name":"openflow-action_2015-02-03","revision":"2015-02-03","schema":"/rests/modules/openflow-action?revision=2015-02-03","namespace":"urn:opendaylight:openflow:common:action","conformance-type":"import"},{"name":"openflow-approved-extensions_2016-08-02","revision":"2016-08-02","schema":"/rests/modules/openflow-approved-extensions?revision=2016-08-02","namespace":"urn:opendaylight:openflow:approved:extensions","conformance-type":"import"},{"name":"nc-notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/nc-notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netmod:notification","conformance-type":"import"},{"name":"ietf-netconf-nmda_2019-01-07","revision":"2019-01-07","schema":"/rests/modules/ietf-netconf-nmda?revision=2019-01-07","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-nmda","conformance-type":"import","feature":["with-defaults","origin"]},{"name":"ietf-tcp-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-common","conformance-type":"import","feature":["keepalives-supported"]},{"name":"network-topology_2013-10-21","revision":"2013-10-21","schema":"/rests/modules/network-topology?revision=2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:network-topology","conformance-type":"import"},{"name":"aaa-encrypt-service-config_2024-02-02","revision":"2024-02-02","schema":"/rests/modules/aaa-encrypt-service-config?revision=2024-02-02","namespace":"config:aaa:authn:encrypt:service:config","conformance-type":"import"},{"name":"openflow-instruction_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-instruction?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:instruction","conformance-type":"import"},{"name":"ietf-tls-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-client","conformance-type":"import","feature":["client-ident-x509-cert","server-auth-x509-cert"]},{"name":"opendaylight-group-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-group-statistics?revision=2013-11-11","namespace":"urn:opendaylight:group:statistics","conformance-type":"import"},{"name":"cluster-admin_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/cluster-admin?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:cluster:admin","conformance-type":"import"},{"name":"opendaylight-flow-statistics_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-flow-statistics?revision=2013-08-19","namespace":"urn:opendaylight:flow:statistics","conformance-type":"import"},{"name":"opendaylight-table-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-table-types?revision=2013-10-26","namespace":"urn:opendaylight:table:types","conformance-type":"import"},{"name":"forwarding-rules-manager-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/forwarding-rules-manager-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:forwardingrules-manager:config","conformance-type":"import"},{"name":"odl-srm-types_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-types?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:types","conformance-type":"import"},{"name":"ietf-x509-cert-to-name_2014-12-10","revision":"2014-12-10","schema":"/rests/modules/ietf-x509-cert-to-name?revision=2014-12-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-x509-cert-to-name","conformance-type":"import"},{"name":"flow-node-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-node-inventory?revision=2013-08-19","namespace":"urn:opendaylight:flow:inventory","conformance-type":"import"},{"name":"flow-errors_2013-11-16","revision":"2013-11-16","schema":"/rests/modules/flow-errors?revision=2013-11-16","namespace":"urn:opendaylight:flow:errors","conformance-type":"import"},{"name":"ietf-netconf_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:netconf:base:1.0","conformance-type":"import","feature":["xpath","url","rollback-on-error","validate","startup","candidate","confirmed-commit","writable-running"]},{"name":"iana-ssh-public-key-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-public-key-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-public-key-algs","conformance-type":"import"},{"name":"aaa-cert-mdsal_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/aaa-cert-mdsal?revision=2016-03-21","namespace":"urn:opendaylight:yang:aaa:cert:mdsal","conformance-type":"import"},{"name":"odl-device-notification_2024-02-18","revision":"2024-02-18","schema":"/rests/modules/odl-device-notification?revision=2024-02-18","namespace":"urn:opendaylight:device:notification","conformance-type":"import"},{"name":"ietf-origin_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-origin?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-origin","conformance-type":"import"},{"name":"openflow-augments_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-augments?revision=2015-02-25","namespace":"urn:opendaylight:openflow:augments","conformance-type":"import"},{"name":"iana-ssh-encryption-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-encryption-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-encryption-algs","conformance-type":"import"},{"name":"ietf-truststore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-truststore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-truststore","conformance-type":"import","feature":["inline-definitions-supported"]},{"name":"distributed-datastore-provider_2025-01-30","revision":"2025-01-30","schema":"/rests/modules/distributed-datastore-provider?revision=2025-01-30","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:distributed-datastore-provider","conformance-type":"import"},{"name":"opendaylight-group-types_2013-10-18","revision":"2013-10-18","schema":"/rests/modules/opendaylight-group-types?revision=2013-10-18","namespace":"urn:opendaylight:group:types","conformance-type":"import"},{"name":"sal-remote-augment_2023-11-03","revision":"2023-11-03","schema":"/rests/modules/sal-remote-augment?revision=2023-11-03","namespace":"urn:sal:restconf:event:subscription","conformance-type":"import"},{"name":"opendaylight-ipv6-arbitrary-bitmask-fields_2016-02-24","revision":"2016-02-24","schema":"/rests/modules/opendaylight-ipv6-arbitrary-bitmask-fields?revision=2016-02-24","namespace":"urn:opendaylight:opendaylight-ipv6-arbitrary-bitmask-fields","conformance-type":"import"},{"name":"sal-flows-batch_2016-03-14","revision":"2016-03-14","schema":"/rests/modules/sal-flows-batch?revision=2016-03-14","namespace":"urn:opendaylight:flows:service","conformance-type":"import"},{"name":"ietf-tls-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-common","conformance-type":"import","feature":["tls12","hello-params","tls13"]},{"name":"openflow-types_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-types?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:types","conformance-type":"import"},{"name":"ietf-netconf-with-defaults_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf-with-defaults?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults","conformance-type":"import"},{"name":"odl-srm-ops_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-ops?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:ops","conformance-type":"import"},{"name":"odl-general-entity_2015-09-30","revision":"2015-09-30","schema":"/rests/modules/odl-general-entity?revision=2015-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:mdsal:core:general-entity","conformance-type":"import"},{"name":"iana-ssh-key-exchange-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-key-exchange-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-key-exchange-algs","conformance-type":"import"},{"name":"node-ssl-connection-error_2019-07-23","revision":"2019-07-23","schema":"/rests/modules/node-ssl-connection-error?revision=2019-07-23","namespace":"urn:opendaylight:node-ssl-connection-error:service","conformance-type":"import"},{"name":"openflow-protocol_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-protocol?revision=2013-07-31","namespace":"urn:opendaylight:openflow:protocol","conformance-type":"import"},{"name":"ietf-udp-server_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-server?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-server","conformance-type":"import"},{"name":"ietf-keystore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-keystore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-keystore","conformance-type":"import","feature":["asymmetric-keys","inline-definitions-supported"]},{"name":"aaa_2016-12-14","revision":"2016-12-14","schema":"/rests/modules/aaa?revision=2016-12-14","namespace":"urn:opendaylight:params:xml:ns:yang:aaa","conformance-type":"import"},{"name":"aaa-cert-rpc_2015-12-15","revision":"2015-12-15","schema":"/rests/modules/aaa-cert-rpc?revision=2015-12-15","namespace":"urn:opendaylight:yang:aaa:cert:rpc","conformance-type":"import"},{"name":"system-notifications_2013-09-27","revision":"2013-09-27","schema":"/rests/modules/system-notifications?revision=2013-09-27","namespace":"urn:opendaylight:openflow:system","conformance-type":"import"},{"name":"sal-flat-batch_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/sal-flat-batch?revision=2016-03-21","namespace":"urn:opendaylight:flat-batch:service","conformance-type":"import"},{"name":"notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netconf:notification:1.0","conformance-type":"import"},{"name":"sal-remote_2014-01-14","revision":"2014-01-14","schema":"/rests/modules/sal-remote?revision=2014-01-14","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:remote","conformance-type":"import"},{"name":"yang-ext_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/yang-ext?revision=2013-07-09","namespace":"urn:opendaylight:yang:extension:yang-ext","conformance-type":"import"},{"name":"opendaylight-multipart-types_2017-01-12","revision":"2017-01-12","schema":"/rests/modules/opendaylight-multipart-types?revision=2017-01-12","namespace":"urn:opendaylight:multipart:types","conformance-type":"import"},{"name":"opendaylight-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-inventory?revision=2013-08-19","namespace":"urn:opendaylight:inventory","conformance-type":"import"},{"name":"sal-queue_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-queue?revision=2015-03-05","namespace":"urn:opendaylight:queue:service","conformance-type":"import"},{"name":"sal-groups-batch_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/sal-groups-batch?revision=2016-03-15","namespace":"urn:opendaylight:groups:service","conformance-type":"import"},{"name":"arbitrator-reconcile_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/arbitrator-reconcile?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:arbitrator-reconcile:service","conformance-type":"import"},{"name":"ietf-yang-metadata_2016-08-05","revision":"2016-08-05","schema":"/rests/modules/ietf-yang-metadata?revision=2016-08-05","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-metadata","conformance-type":"import"},{"name":"opendaylight-arbitrary-bitmask-fields_2016-01-30","revision":"2016-01-30","schema":"/rests/modules/opendaylight-arbitrary-bitmask-fields?revision=2016-01-30","namespace":"urn:opendaylight:arbitrary:bitmask:fields","conformance-type":"import"},{"name":"ietf-udp-client_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-client?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-client","conformance-type":"import","feature":["local-binding"]},{"name":"opendaylight-meter-types_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/opendaylight-meter-types?revision=2013-09-18","namespace":"urn:opendaylight:meter:types","conformance-type":"import"},{"name":"opendaylight-action-types_2013-11-12","revision":"2013-11-12","schema":"/rests/modules/opendaylight-action-types?revision=2013-11-12","namespace":"urn:opendaylight:action:types","conformance-type":"import"},{"name":"sal-role_2015-07-27","revision":"2015-07-27","schema":"/rests/modules/sal-role?revision=2015-07-27","namespace":"urn:opendaylight:role:service","conformance-type":"import"},{"name":"openflow-provider-config_2016-05-10","revision":"2016-05-10","schema":"/rests/modules/openflow-provider-config?revision=2016-05-10","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:provider:config","conformance-type":"import"},{"name":"odl-serviceutils-upgrade_2018-07-02","revision":"2018-07-02","schema":"/rests/modules/odl-serviceutils-upgrade?revision=2018-07-02","namespace":"urn:opendaylight:serviceutils:upgrade","conformance-type":"import"},{"name":"opendaylight-match-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-match-types?revision=2013-10-26","namespace":"urn:opendaylight:model:match:types","conformance-type":"import"},{"name":"ietf-restconf-server_2024-08-14","revision":"2024-08-14","schema":"/rests/modules/ietf-restconf-server?revision=2024-08-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-server","conformance-type":"import","feature":["http-listen","https-listen"]},{"name":"reconciliation-result-state_2017-07-13","revision":"2017-07-13","schema":"/rests/modules/reconciliation-result-state?revision=2017-07-13","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:rf:state","conformance-type":"import"},{"name":"onf-extensions_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/onf-extensions?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf","conformance-type":"import"},{"name":"sal-table_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/sal-table?revision=2013-10-26","namespace":"urn:opendaylight:table:service","conformance-type":"import"},{"name":"iana-http-versions_2026-02-04","revision":"2026-02-04","schema":"/rests/modules/iana-http-versions?revision=2026-02-04","namespace":"urn:ietf:params:xml:ns:yang:iana-http-versions","conformance-type":"import"},{"name":"opendaylight-direct-statistics_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/opendaylight-direct-statistics?revision=2016-05-11","namespace":"urn:opendaylight:direct:statistics","conformance-type":"import"},{"name":"opendaylight-port-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-port-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:port","conformance-type":"import"},{"name":"sal-async-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/sal-async-config?revision=2017-06-19","namespace":"urn:opendaylight:async-config:service","conformance-type":"import"},{"name":"aaa-password-service-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-password-service-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:password:service:config","conformance-type":"import"},{"name":"ietf-yang-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-yang-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-types","conformance-type":"import"},{"name":"opendaylight-queue-statistics_2013-12-16","revision":"2013-12-16","schema":"/rests/modules/opendaylight-queue-statistics?revision=2013-12-16","namespace":"urn:opendaylight:queue:statistics","conformance-type":"import"},{"name":"sal-bundle_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/sal-bundle?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf:bundle:service","conformance-type":"import"},{"name":"ietf-restconf-subscribed-notifications_2019-11-17","revision":"2019-11-17","schema":"/rests/modules/ietf-restconf-subscribed-notifications?revision=2019-11-17","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-subscribed-notifications","conformance-type":"import"},{"name":"sal-meters-batch_2016-03-16","revision":"2016-03-16","schema":"/rests/modules/sal-meters-batch?revision=2016-03-16","namespace":"urn:opendaylight:meters:service","conformance-type":"import"},{"name":"odl-entity-owners","revision":"","schema":"/rests/modules/odl-entity-owners","namespace":"urn:opendaylight:params:xml:ns:yang:controller:entity-owners","conformance-type":"import"},{"name":"sal-experimenter-mp-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-mp-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-mp-message:service","conformance-type":"import"},{"name":"packet-processing_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/packet-processing?revision=2013-07-09","namespace":"urn:opendaylight:packet:service","conformance-type":"import"},{"name":"openflow-configuration_2014-06-30","revision":"2014-06-30","schema":"/rests/modules/openflow-configuration?revision=2014-06-30","namespace":"urn:opendaylight:openflow:config","conformance-type":"import"},{"name":"odl-srm-rpcs_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-rpcs?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:rpc","conformance-type":"import"},{"name":"ietf-netconf-acm_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-netconf-acm?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-acm","conformance-type":"import"},{"name":"iana-crypt-hash_2014-08-06","revision":"2014-08-06","schema":"/rests/modules/iana-crypt-hash?revision=2014-08-06","namespace":"urn:ietf:params:xml:ns:yang:iana-crypt-hash","conformance-type":"import","feature":["crypt-hash-sha-512","crypt-hash-sha-256","crypt-hash-md5"]},{"name":"openflow-extensible-match_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-extensible-match?revision=2015-02-25","namespace":"urn:opendaylight:openflow:oxm","conformance-type":"import"}],"module-set-id":"2"}}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:38.587012" elapsed="0.004290"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:38.586411" elapsed="0.004930"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:38.586342" elapsed="0.005024"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:38.593870" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:38.591677" elapsed="0.002240"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:38.591450" elapsed="0.002529"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:38.591431" elapsed="0.002573"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:52:38.594689" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:38.594217" elapsed="0.000500"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:38.595058" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:38.594810" elapsed="0.000305"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:38.595653" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:38.595346" elapsed="0.000333"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:38.595139" elapsed="0.000576"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:38.594791" elapsed="0.000945"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:52:38.596299" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:38.595915" elapsed="0.000434"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:38.596681" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:38.596443" elapsed="0.000295"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:38.597240" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:38.596919" elapsed="0.000348"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:38.596761" elapsed="0.000542"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:38.596423" elapsed="0.000902"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:52:38.597498" elapsed="0.000352"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:52:38.598364" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:38.598037" elapsed="0.000353"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:52:38.598565" elapsed="0.003163"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:52:38.584387" elapsed="0.017466"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:52:38.602223" elapsed="0.000048"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:52:38.601984" elapsed="0.000351"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:38.601931" elapsed="0.000441"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:52:38.611539" level="INFO">${text_normalized} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:52:38.603112" elapsed="0.008476"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:52:38.611667" elapsed="0.000069"/>
</return>
<msg time="2026-04-08T00:52:38.611999" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:52:38.558952" elapsed="0.053157"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:52:38.612700" elapsed="0.000031"/>
</return>
<msg time="2026-04-08T00:52:38.612885" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="PASS" start="2026-04-08T00:52:38.410273" elapsed="0.202640"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Json_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:38.613266" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:38.612999" elapsed="0.000474"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:38.612981" elapsed="0.000520"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:52:38.613535" elapsed="0.000027"/>
</return>
<arg>session=${session}</arg>
<arg>folder=${RESTCONF_MODULES_DIR}</arg>
<arg>verify=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Add arguments sensible for JSON data, return Get_Templated response text.
Optionally, verification against JSON data (may be iterated) is called.
Only subset of JSON data is verified and returned if JMES path is specified in
file ${folder}/jmespath.expr.</doc>
<status status="PASS" start="2026-04-08T00:52:38.406213" elapsed="0.207451"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:38.401974" elapsed="0.211735"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:38.401957" elapsed="0.211776"/>
</if>
<kw name="Resolve_Shard_Type_Class" owner="ClusterManagement">
<if>
<branch type="IF" condition="'${shard_type}' == 'config'">
<return>
<value>DistributedConfigDatastore</value>
<status status="NOT RUN" start="2026-04-08T00:52:38.614401" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:52:38.614290" elapsed="0.000157"/>
</branch>
<branch type="ELSE IF" condition="'${shard_type}' == 'operational'">
<return>
<value>DistributedOperationalDatastore</value>
<status status="PASS" start="2026-04-08T00:52:38.614573" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-08T00:52:38.614470" elapsed="0.000161"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:38.614271" elapsed="0.000383"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized shard type: ${shard_type}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:38.614804" elapsed="0.000022"/>
</kw>
<msg time="2026-04-08T00:52:38.614926" level="INFO">${type_class} = DistributedOperationalDatastore</msg>
<var>${type_class}</var>
<arg>shard_type=${shard_type}</arg>
<doc>Simple lookup for class name corresponding to desired type.</doc>
<status status="PASS" start="2026-04-08T00:52:38.613968" elapsed="0.000991"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:52:38.615639" level="INFO">${cluster_index} = 2</msg>
<var>${cluster_index}</var>
<arg>${member_index}+${NODE_ROLE_INDEX_START}-1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:38.615160" elapsed="0.000514"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:38.616485" level="INFO">${uri} = jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-default-operational,type=DistributedOperationalDatastore</msg>
<var>${uri}</var>
<arg>${JOLOKIA_READ_URI}:Category=Shards,name=member-${cluster_index}-shard-${shard_name}-${shard_type},type=${type_class}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:38.615876" elapsed="0.000741"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:38.623114" level="INFO">jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-default-operational,type=DistributedOperationalDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:38.622646" elapsed="0.000520"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:38.623797" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:38.623339" elapsed="0.000505"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:52:38.643844" level="INFO">GET Request : url=http://10.30.170.131:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-default-operational,type=DistributedOperationalDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-default-operational,type=DistributedOperationalDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:52:38.643990" level="INFO">GET Response : url=http://10.30.170.131:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-default-operational,type=DistributedOperationalDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Wed, 08 Apr 2026 00:52:38 GMT', 'Expires': 'Tue, 07 Apr 2026 23:52:38 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-2-shard-default-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"ReadWriteTransactionCount":0,"SnapshotIndex":182,"InMemoryJournalLogSize":1,"ReplicatedToAllIndex":182,"Leader":"member-1-shard-default-operational","LastIndex":183,"RaftState":"Follower","LastCommittedTransactionTime":"1970-01-01 00:00:00.000","LastApplied":183,"PeerAddresses":"member-1-shard-default-operational: pekko:\/\/opendaylight-cluster-data@10.30.170.48:2550\/user\/shardmanager-operational\/member-1-shard-default-operational, member-3-shard-default-operational: pekko:\/\/opendaylight-cluster-data@10.30.171.110:2550\/user\/shardmanager-operational\/member-3-shard-default-operational","LastLogIndex":183,"LastLeadershipChangeTime":"2026-04-08 00:46:45.939","FollowerInitialSyncStatus":true,"FollowerInfo":[],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"448.2 μs","CurrentTerm":2,"LastTerm":2,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-default-operational","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":0,"TxCohortCacheSize":0,"PeerVotingStates":"member-1-shard-default-operational: true, member-3-shard-default-operational: true","LastLogTerm":2,"StatRetrievalError":null,"CommitIndex":183,"SnapshotTerm":2,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-2-shard-default-operational","LeadershipChangeCount":1,"InMemoryJournalDataSize":95560},"timestamp":1775609558,"status":200} 
 </msg>
<msg time="2026-04-08T00:52:38.644270" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:52:38.635043" elapsed="0.009360"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:38.623915" elapsed="0.020858"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:38.645072" elapsed="0.000029"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:38.644818" elapsed="0.000859"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:38.623895" elapsed="0.021811"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:38.652530" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-2-shard-default-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"ReadWriteTransactionCount":0,"SnapshotIndex":182,"InMemoryJournalLogSize":1,"ReplicatedToAllIndex":182,"Leader":"member-1-shard-default-operational","LastIndex":183,"RaftState":"Follower","LastCommittedTransactionTime":"1970-01-01 00:00:00.000","LastApplied":183,"PeerAddresses":"member-1-shard-default-operational: pekko:\/\/opendaylight-cluster-data@10.30.170.48:2550\/user\/shardmanager-operational\/member-1-shard-default-operational, member-3-shard-default-operational: pekko:\/\/opendaylight-cluster-data@10.30.171.110:2550\/user\/shardmanager-operational\/member-3-shard-default-operational","LastLogIndex":183,"LastLeadershipChangeTime":"2026-04-08 00:46:45.939","FollowerInitialSyncStatus":true,"FollowerInfo":[],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"448.2 μs","CurrentTerm":2,"LastTerm":2,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-default-operational","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":0,"TxCohortCacheSize":0,"PeerVotingStates":"member-1-shard-default-operational: true, member-3-shard-default-operational: true","LastLogTerm":2,"StatRetrievalError":null,"CommitIndex":183,"SnapshotTerm":2,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-2-shard-default-operational","LeadershipChangeCount":1,"InMemoryJournalDataSize":95560},"timestamp":1775609558,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:38.648886" elapsed="0.003824"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:38.647520" elapsed="0.005262"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:38.647484" elapsed="0.005354"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:38.656574" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:38.654254" elapsed="0.002434"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:38.652992" elapsed="0.003746"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:38.652930" elapsed="0.003847"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:52:38.658408" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:38.657578" elapsed="0.000894"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:38.659123" elapsed="0.000042"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:38.658644" elapsed="0.000588"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:38.660190" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:38.659611" elapsed="0.000630"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:38.659271" elapsed="0.001022"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:38.658623" elapsed="0.001707"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:52:38.661975" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:38.661016" elapsed="0.001042"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:38.662788" elapsed="0.000038"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:38.662292" elapsed="0.000587"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:38.663955" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:38.663426" elapsed="0.000576"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:38.662917" elapsed="0.001137"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:38.662264" elapsed="0.001826"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:52:38.664344" elapsed="0.000642"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:52:38.665901" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:38.665387" elapsed="0.000577"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:52:38.666271" elapsed="0.002662"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:52:38.646338" elapsed="0.022764"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:52:38.669493" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:52:38.669357" elapsed="0.000185"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:38.669334" elapsed="0.000230"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:52:38.673403" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-2-shard-default-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp"...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:52:38.669712" elapsed="0.003722"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:52:38.673488" elapsed="0.000037"/>
</return>
<msg time="2026-04-08T00:52:38.673653" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-2-shard-default-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp"...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:52:38.617846" elapsed="0.055834"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:52:38.673826" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:52:38.673982" level="INFO">${data_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-2-shard-default-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp"...</msg>
<var>${data_text}</var>
<arg>uri=${uri}</arg>
<arg>session=${session}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-08T00:52:38.616900" elapsed="0.057107"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:52:38.675084" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-2-shard-default-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 177560955...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:38.674604" elapsed="0.000510"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-08T00:52:38.675166" elapsed="0.000044"/>
</return>
<msg time="2026-04-08T00:52:38.675361" level="INFO">${data_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-2-shard-default-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 177560955...</msg>
<var>${data_object}</var>
<arg>${data_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-08T00:52:38.674257" elapsed="0.001130"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:52:38.675746" level="INFO">${value} = {'AbortTransactionsCount': 0, 'CommitIndex': 183, 'CommittedTransactionsCount': 0, 'CurrentTerm': 2, 'FailedReadTransactionsCount': 0, 'FailedTransactionsCount': 0, 'FollowerInfo': [], 'FollowerInitia...</msg>
<var>${value}</var>
<arg>${data_object}</arg>
<arg>value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:52:38.675545" elapsed="0.000228"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:52:38.676147" level="INFO">${raft_property} = Follower</msg>
<var>${raft_property}</var>
<arg>${value}</arg>
<arg>${property}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:52:38.675928" elapsed="0.000264"/>
</kw>
<return>
<value>${raft_property}</value>
<status status="PASS" start="2026-04-08T00:52:38.676243" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:52:38.676399" level="INFO">${raft_state} = Follower</msg>
<var>${raft_state}</var>
<arg>RaftState</arg>
<arg>${shard_name}</arg>
<arg>${shard_type}</arg>
<arg>${member_index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft property.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T00:52:38.400376" elapsed="0.276048"/>
</kw>
<return>
<value>${raft_state}</value>
<status status="PASS" start="2026-04-08T00:52:38.676484" elapsed="0.000026"/>
</return>
<msg time="2026-04-08T00:52:38.676635" level="INFO">${raft_state} = Follower</msg>
<var>${raft_state}</var>
<arg>shard_name=${shard_name}</arg>
<arg>shard_type=${ds_type}</arg>
<arg>member_index=${index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft status.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T00:52:38.399640" elapsed="0.277020"/>
</kw>
<if>
<branch type="IF" condition="'Follower' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${follower_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-08T00:52:38.676975" elapsed="0.000366"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:38.676744" elapsed="0.000647"/>
</branch>
<branch type="ELSE IF" condition="'Leader' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${leader_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:38.677567" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:38.677417" elapsed="0.000205"/>
</branch>
<branch type="ELSE IF" condition="${validate}">
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized Raft state: ${raft_state}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:38.677784" elapsed="0.000019"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:38.677645" elapsed="0.000188"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:38.676726" elapsed="0.001129"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T00:52:38.399474" elapsed="0.278405"/>
</iter>
<iter>
<kw name="Get_Raft_State_Of_Shard_At_Member" owner="ClusterManagement">
<kw name="Get_Raft_Property_From_Shard_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:38.680315" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:38.679974" elapsed="0.000369"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:52:38.680389" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:52:38.680535" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:52:38.679636" elapsed="0.000925"/>
</kw>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Get_As_Json_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:38.763543" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:38.763109" elapsed="0.000468"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:52:38.764376" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:52:38.764082" elapsed="0.000379">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-08T00:52:38.764643" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:52:38.763750" elapsed="0.000918"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:52:38.765252" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:52:38.764835" elapsed="0.000444"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T00:52:38.765583" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-08T00:52:38.765753" level="INFO">${template} = /rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T00:52:38.765439" elapsed="0.000339"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:38.766200" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:38.765933" elapsed="0.000314"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:38.767236" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:38.766966" elapsed="0.000314"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-08T00:52:38.767708" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-08T00:52:38.767438" elapsed="0.000295"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:38.768073" elapsed="0.000022"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:38.768293" elapsed="0.000025"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:38.768469" elapsed="0.000020"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-08T00:52:38.767933" elapsed="0.000593"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-08T00:52:38.767789" elapsed="0.000768"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-08T00:52:38.768606" elapsed="0.000034"/>
</return>
<msg time="2026-04-08T00:52:38.768775" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-08T00:52:38.766647" elapsed="0.002153"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:38.766338" elapsed="0.002493"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:38.769001" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:38.768857" elapsed="0.000200"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:38.766314" elapsed="0.002764"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:52:38.769677" level="INFO">${final_text} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:38.769237" elapsed="0.000467"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T00:52:38.769752" elapsed="0.000028"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="PASS" start="2026-04-08T00:52:38.762500" elapsed="0.007372"/>
</kw>
<msg time="2026-04-08T00:52:38.769926" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:52:38.750442" elapsed="0.019565"/>
</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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:38.782388" elapsed="0.000047"/>
</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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:38.794367" elapsed="0.000042"/>
</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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:38.806308" elapsed="0.000040"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:38.807072" elapsed="0.000037"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:38.807836" elapsed="0.000036"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:38.808414" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:38.808267" elapsed="0.000204"/>
</branch>
<status status="NOT RUN" start="2026-04-08T00:52:38.808250" elapsed="0.000244"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:38.808648" elapsed="0.000022"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:38.808831" elapsed="0.000021"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:38.809012" elapsed="0.000021"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-08T00:52:38.808197" elapsed="0.000894"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-08T00:52:38.807956" elapsed="0.001175"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:38.809837" elapsed="0.000035"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-08T00:52:38.809954" elapsed="0.000047"/>
</return>
<msg time="2026-04-08T00:52:38.810195" level="INFO">${uri} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-08T00:52:38.744014" elapsed="0.066291"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:52:38.813209" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:52:38.812931" elapsed="0.000347">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-08T00:52:38.813462" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:52:38.812483" elapsed="0.001022"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:38.814010" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:38.813635" elapsed="0.000441"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:38.814702" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:38.814409" elapsed="0.000318"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:38.814114" elapsed="0.000659"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:38.813585" elapsed="0.001240"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:52:38.817868" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:52:38.815553" elapsed="0.002360"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-08T00:52:38.817989" elapsed="0.000064"/>
</return>
<msg time="2026-04-08T00:52:38.818318" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:52:38.811327" elapsed="0.007096"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:52:38.821160" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:52:38.820915" elapsed="0.000323">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-08T00:52:38.821457" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:52:38.820486" elapsed="0.001015"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-08T00:52:38.821874" elapsed="0.000077"/>
</return>
<status status="PASS" start="2026-04-08T00:52:38.821631" elapsed="0.000402"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:38.821581" elapsed="0.000509"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:38.822830" elapsed="0.000035"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:38.823590" elapsed="0.000036"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-08T00:52:38.823698" elapsed="0.000046"/>
</return>
<msg time="2026-04-08T00:52:38.825888" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:52:38.819265" elapsed="0.006728"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:38.829943" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:38.829555" elapsed="0.000486"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:38.831153" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:38.830750" elapsed="0.000520"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:52:38.849898" level="INFO">GET Request : url=http://10.30.171.110:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 path_url=/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0336bvzrfnrhc3cqywxyctca52.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:52:38.850885" level="INFO">GET Response : url=http://10.30.171.110:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Transfer-Encoding': 'chunked'} 
 body={"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","hidden-symmetric-keys","encrypted-private-keys","asymmetrically-encrypted-value-format","cms-encrypted-data-format","cleartext-private-keys","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["ssh-client-keepalives","client-ident-hostbased","client-ident-publickey","client-ident-password"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-ex... (set the log level to DEBUG or TRACE to see the full content) 
 </msg>
<msg time="2026-04-08T00:52:38.851468" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:52:38.833717" elapsed="0.017814"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:38.831398" elapsed="0.020275"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:38.852307" elapsed="0.000038"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:38.851784" elapsed="0.000635"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:38.831346" elapsed="0.021123"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:38.858716" level="INFO">{"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","hidden-symmetric-keys","encrypted-private-keys","asymmetrically-encrypted-value-format","cms-encrypted-data-format","cleartext-private-keys","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["ssh-client-keepalives","client-ident-hostbased","client-ident-publickey","client-ident-password"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-experimenter-types?revision=2015-10-20","namespace":"urn:opendaylight:openflowplugin:experimenter:types","conformance-type":"import"},{"name":"ietf-ip_2018-02-22","revision":"2018-02-22","schema":"/rests/modules/ietf-ip?revision=2018-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-ip","conformance-type":"import","feature":["ipv6-privacy-autoconf","ipv4-non-contiguous-netmasks"]},{"name":"ietf-tcp-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-client","conformance-type":"import","feature":["local-binding-supported","tcp-client-keepalives"]},{"name":"node-config_2014-10-15","revision":"2014-10-15","schema":"/rests/modules/node-config?revision=2014-10-15","namespace":"urn:opendaylight:module:config","conformance-type":"import"},{"name":"ietf-restconf_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf","conformance-type":"import"},{"name":"ietf-datastores_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-datastores?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-datastores","conformance-type":"import"},{"name":"ietf-yang-patch_2017-02-22","revision":"2017-02-22","schema":"/rests/modules/ietf-yang-patch?revision=2017-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-patch","conformance-type":"import"},{"name":"sal-group_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-group?revision=2013-09-18","namespace":"urn:opendaylight:group:service","conformance-type":"import"},{"name":"odl-codegen-extensions_2024-06-27","revision":"2024-06-27","schema":"/rests/modules/odl-codegen-extensions?revision=2024-06-27","namespace":"urn:opendaylight:yang:extension:codegen","conformance-type":"import"},{"name":"sal-meter_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-meter?revision=2013-09-18","namespace":"urn:opendaylight:meter:service","conformance-type":"import"},{"name":"ietf-interfaces_2018-02-20","revision":"2018-02-20","schema":"/rests/modules/ietf-interfaces?revision=2018-02-20","namespace":"urn:ietf:params:xml:ns:yang:ietf-interfaces","conformance-type":"import","feature":["pre-provisioning","if-mib","arbitrary-names"]},{"name":"opendaylight-l2-types_2013-08-27","revision":"2013-08-27","schema":"/rests/modules/opendaylight-l2-types?revision=2013-08-27","namespace":"urn:opendaylight:l2:types","conformance-type":"import"},{"name":"opendaylight-flow-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-flow-types?revision=2013-10-26","namespace":"urn:opendaylight:flow:types","conformance-type":"import"},{"name":"lldp-speaker-config_2016-05-12","revision":"2016-05-12","schema":"/rests/modules/lldp-speaker-config?revision=2016-05-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker:config","conformance-type":"import"},{"name":"aaa-cert_2015-11-26","revision":"2015-11-26","schema":"/rests/modules/aaa-cert?revision=2015-11-26","namespace":"urn:opendaylight:yang:aaa:cert","conformance-type":"import"},{"name":"openflow-action_2015-02-03","revision":"2015-02-03","schema":"/rests/modules/openflow-action?revision=2015-02-03","namespace":"urn:opendaylight:openflow:common:action","conformance-type":"import"},{"name":"openflow-approved-extensions_2016-08-02","revision":"2016-08-02","schema":"/rests/modules/openflow-approved-extensions?revision=2016-08-02","namespace":"urn:opendaylight:openflow:approved:extensions","conformance-type":"import"},{"name":"nc-notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/nc-notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netmod:notification","conformance-type":"import"},{"name":"ietf-netconf-nmda_2019-01-07","revision":"2019-01-07","schema":"/rests/modules/ietf-netconf-nmda?revision=2019-01-07","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-nmda","conformance-type":"import","feature":["with-defaults","origin"]},{"name":"ietf-tcp-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-common","conformance-type":"import","feature":["keepalives-supported"]},{"name":"network-topology_2013-10-21","revision":"2013-10-21","schema":"/rests/modules/network-topology?revision=2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:network-topology","conformance-type":"import"},{"name":"aaa-encrypt-service-config_2024-02-02","revision":"2024-02-02","schema":"/rests/modules/aaa-encrypt-service-config?revision=2024-02-02","namespace":"config:aaa:authn:encrypt:service:config","conformance-type":"import"},{"name":"openflow-instruction_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-instruction?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:instruction","conformance-type":"import"},{"name":"ietf-tls-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-client","conformance-type":"import","feature":["client-ident-x509-cert","server-auth-x509-cert"]},{"name":"opendaylight-group-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-group-statistics?revision=2013-11-11","namespace":"urn:opendaylight:group:statistics","conformance-type":"import"},{"name":"cluster-admin_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/cluster-admin?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:cluster:admin","conformance-type":"import"},{"name":"opendaylight-flow-statistics_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-flow-statistics?revision=2013-08-19","namespace":"urn:opendaylight:flow:statistics","conformance-type":"import"},{"name":"opendaylight-table-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-table-types?revision=2013-10-26","namespace":"urn:opendaylight:table:types","conformance-type":"import"},{"name":"forwarding-rules-manager-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/forwarding-rules-manager-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:forwardingrules-manager:config","conformance-type":"import"},{"name":"odl-srm-types_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-types?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:types","conformance-type":"import"},{"name":"ietf-x509-cert-to-name_2014-12-10","revision":"2014-12-10","schema":"/rests/modules/ietf-x509-cert-to-name?revision=2014-12-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-x509-cert-to-name","conformance-type":"import"},{"name":"flow-node-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-node-inventory?revision=2013-08-19","namespace":"urn:opendaylight:flow:inventory","conformance-type":"import"},{"name":"flow-errors_2013-11-16","revision":"2013-11-16","schema":"/rests/modules/flow-errors?revision=2013-11-16","namespace":"urn:opendaylight:flow:errors","conformance-type":"import"},{"name":"ietf-netconf_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:netconf:base:1.0","conformance-type":"import","feature":["xpath","url","rollback-on-error","validate","startup","candidate","confirmed-commit","writable-running"]},{"name":"iana-ssh-public-key-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-public-key-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-public-key-algs","conformance-type":"import"},{"name":"aaa-cert-mdsal_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/aaa-cert-mdsal?revision=2016-03-21","namespace":"urn:opendaylight:yang:aaa:cert:mdsal","conformance-type":"import"},{"name":"odl-device-notification_2024-02-18","revision":"2024-02-18","schema":"/rests/modules/odl-device-notification?revision=2024-02-18","namespace":"urn:opendaylight:device:notification","conformance-type":"import"},{"name":"ietf-origin_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-origin?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-origin","conformance-type":"import"},{"name":"openflow-augments_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-augments?revision=2015-02-25","namespace":"urn:opendaylight:openflow:augments","conformance-type":"import"},{"name":"iana-ssh-encryption-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-encryption-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-encryption-algs","conformance-type":"import"},{"name":"ietf-truststore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-truststore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-truststore","conformance-type":"import","feature":["inline-definitions-supported"]},{"name":"distributed-datastore-provider_2025-01-30","revision":"2025-01-30","schema":"/rests/modules/distributed-datastore-provider?revision=2025-01-30","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:distributed-datastore-provider","conformance-type":"import"},{"name":"opendaylight-group-types_2013-10-18","revision":"2013-10-18","schema":"/rests/modules/opendaylight-group-types?revision=2013-10-18","namespace":"urn:opendaylight:group:types","conformance-type":"import"},{"name":"sal-remote-augment_2023-11-03","revision":"2023-11-03","schema":"/rests/modules/sal-remote-augment?revision=2023-11-03","namespace":"urn:sal:restconf:event:subscription","conformance-type":"import"},{"name":"opendaylight-ipv6-arbitrary-bitmask-fields_2016-02-24","revision":"2016-02-24","schema":"/rests/modules/opendaylight-ipv6-arbitrary-bitmask-fields?revision=2016-02-24","namespace":"urn:opendaylight:opendaylight-ipv6-arbitrary-bitmask-fields","conformance-type":"import"},{"name":"sal-flows-batch_2016-03-14","revision":"2016-03-14","schema":"/rests/modules/sal-flows-batch?revision=2016-03-14","namespace":"urn:opendaylight:flows:service","conformance-type":"import"},{"name":"ietf-tls-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-common","conformance-type":"import","feature":["tls12","hello-params","tls13"]},{"name":"openflow-types_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-types?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:types","conformance-type":"import"},{"name":"ietf-netconf-with-defaults_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf-with-defaults?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults","conformance-type":"import"},{"name":"odl-srm-ops_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-ops?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:ops","conformance-type":"import"},{"name":"odl-general-entity_2015-09-30","revision":"2015-09-30","schema":"/rests/modules/odl-general-entity?revision=2015-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:mdsal:core:general-entity","conformance-type":"import"},{"name":"iana-ssh-key-exchange-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-key-exchange-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-key-exchange-algs","conformance-type":"import"},{"name":"node-ssl-connection-error_2019-07-23","revision":"2019-07-23","schema":"/rests/modules/node-ssl-connection-error?revision=2019-07-23","namespace":"urn:opendaylight:node-ssl-connection-error:service","conformance-type":"import"},{"name":"openflow-protocol_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-protocol?revision=2013-07-31","namespace":"urn:opendaylight:openflow:protocol","conformance-type":"import"},{"name":"ietf-udp-server_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-server?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-server","conformance-type":"import"},{"name":"ietf-keystore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-keystore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-keystore","conformance-type":"import","feature":["asymmetric-keys","inline-definitions-supported"]},{"name":"aaa_2016-12-14","revision":"2016-12-14","schema":"/rests/modules/aaa?revision=2016-12-14","namespace":"urn:opendaylight:params:xml:ns:yang:aaa","conformance-type":"import"},{"name":"aaa-cert-rpc_2015-12-15","revision":"2015-12-15","schema":"/rests/modules/aaa-cert-rpc?revision=2015-12-15","namespace":"urn:opendaylight:yang:aaa:cert:rpc","conformance-type":"import"},{"name":"system-notifications_2013-09-27","revision":"2013-09-27","schema":"/rests/modules/system-notifications?revision=2013-09-27","namespace":"urn:opendaylight:openflow:system","conformance-type":"import"},{"name":"sal-flat-batch_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/sal-flat-batch?revision=2016-03-21","namespace":"urn:opendaylight:flat-batch:service","conformance-type":"import"},{"name":"notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netconf:notification:1.0","conformance-type":"import"},{"name":"sal-remote_2014-01-14","revision":"2014-01-14","schema":"/rests/modules/sal-remote?revision=2014-01-14","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:remote","conformance-type":"import"},{"name":"yang-ext_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/yang-ext?revision=2013-07-09","namespace":"urn:opendaylight:yang:extension:yang-ext","conformance-type":"import"},{"name":"opendaylight-multipart-types_2017-01-12","revision":"2017-01-12","schema":"/rests/modules/opendaylight-multipart-types?revision=2017-01-12","namespace":"urn:opendaylight:multipart:types","conformance-type":"import"},{"name":"opendaylight-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-inventory?revision=2013-08-19","namespace":"urn:opendaylight:inventory","conformance-type":"import"},{"name":"sal-queue_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-queue?revision=2015-03-05","namespace":"urn:opendaylight:queue:service","conformance-type":"import"},{"name":"sal-groups-batch_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/sal-groups-batch?revision=2016-03-15","namespace":"urn:opendaylight:groups:service","conformance-type":"import"},{"name":"arbitrator-reconcile_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/arbitrator-reconcile?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:arbitrator-reconcile:service","conformance-type":"import"},{"name":"ietf-yang-metadata_2016-08-05","revision":"2016-08-05","schema":"/rests/modules/ietf-yang-metadata?revision=2016-08-05","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-metadata","conformance-type":"import"},{"name":"opendaylight-arbitrary-bitmask-fields_2016-01-30","revision":"2016-01-30","schema":"/rests/modules/opendaylight-arbitrary-bitmask-fields?revision=2016-01-30","namespace":"urn:opendaylight:arbitrary:bitmask:fields","conformance-type":"import"},{"name":"ietf-udp-client_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-client?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-client","conformance-type":"import","feature":["local-binding"]},{"name":"opendaylight-meter-types_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/opendaylight-meter-types?revision=2013-09-18","namespace":"urn:opendaylight:meter:types","conformance-type":"import"},{"name":"opendaylight-action-types_2013-11-12","revision":"2013-11-12","schema":"/rests/modules/opendaylight-action-types?revision=2013-11-12","namespace":"urn:opendaylight:action:types","conformance-type":"import"},{"name":"sal-role_2015-07-27","revision":"2015-07-27","schema":"/rests/modules/sal-role?revision=2015-07-27","namespace":"urn:opendaylight:role:service","conformance-type":"import"},{"name":"openflow-provider-config_2016-05-10","revision":"2016-05-10","schema":"/rests/modules/openflow-provider-config?revision=2016-05-10","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:provider:config","conformance-type":"import"},{"name":"odl-serviceutils-upgrade_2018-07-02","revision":"2018-07-02","schema":"/rests/modules/odl-serviceutils-upgrade?revision=2018-07-02","namespace":"urn:opendaylight:serviceutils:upgrade","conformance-type":"import"},{"name":"opendaylight-match-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-match-types?revision=2013-10-26","namespace":"urn:opendaylight:model:match:types","conformance-type":"import"},{"name":"ietf-restconf-server_2024-08-14","revision":"2024-08-14","schema":"/rests/modules/ietf-restconf-server?revision=2024-08-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-server","conformance-type":"import","feature":["http-listen","https-listen"]},{"name":"reconciliation-result-state_2017-07-13","revision":"2017-07-13","schema":"/rests/modules/reconciliation-result-state?revision=2017-07-13","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:rf:state","conformance-type":"import"},{"name":"onf-extensions_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/onf-extensions?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf","conformance-type":"import"},{"name":"sal-table_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/sal-table?revision=2013-10-26","namespace":"urn:opendaylight:table:service","conformance-type":"import"},{"name":"iana-http-versions_2026-02-04","revision":"2026-02-04","schema":"/rests/modules/iana-http-versions?revision=2026-02-04","namespace":"urn:ietf:params:xml:ns:yang:iana-http-versions","conformance-type":"import"},{"name":"opendaylight-direct-statistics_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/opendaylight-direct-statistics?revision=2016-05-11","namespace":"urn:opendaylight:direct:statistics","conformance-type":"import"},{"name":"opendaylight-port-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-port-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:port","conformance-type":"import"},{"name":"sal-async-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/sal-async-config?revision=2017-06-19","namespace":"urn:opendaylight:async-config:service","conformance-type":"import"},{"name":"aaa-password-service-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-password-service-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:password:service:config","conformance-type":"import"},{"name":"ietf-yang-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-yang-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-types","conformance-type":"import"},{"name":"opendaylight-queue-statistics_2013-12-16","revision":"2013-12-16","schema":"/rests/modules/opendaylight-queue-statistics?revision=2013-12-16","namespace":"urn:opendaylight:queue:statistics","conformance-type":"import"},{"name":"sal-bundle_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/sal-bundle?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf:bundle:service","conformance-type":"import"},{"name":"ietf-restconf-subscribed-notifications_2019-11-17","revision":"2019-11-17","schema":"/rests/modules/ietf-restconf-subscribed-notifications?revision=2019-11-17","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-subscribed-notifications","conformance-type":"import"},{"name":"sal-meters-batch_2016-03-16","revision":"2016-03-16","schema":"/rests/modules/sal-meters-batch?revision=2016-03-16","namespace":"urn:opendaylight:meters:service","conformance-type":"import"},{"name":"odl-entity-owners","revision":"","schema":"/rests/modules/odl-entity-owners","namespace":"urn:opendaylight:params:xml:ns:yang:controller:entity-owners","conformance-type":"import"},{"name":"sal-experimenter-mp-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-mp-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-mp-message:service","conformance-type":"import"},{"name":"packet-processing_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/packet-processing?revision=2013-07-09","namespace":"urn:opendaylight:packet:service","conformance-type":"import"},{"name":"openflow-configuration_2014-06-30","revision":"2014-06-30","schema":"/rests/modules/openflow-configuration?revision=2014-06-30","namespace":"urn:opendaylight:openflow:config","conformance-type":"import"},{"name":"odl-srm-rpcs_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-rpcs?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:rpc","conformance-type":"import"},{"name":"ietf-netconf-acm_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-netconf-acm?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-acm","conformance-type":"import"},{"name":"iana-crypt-hash_2014-08-06","revision":"2014-08-06","schema":"/rests/modules/iana-crypt-hash?revision=2014-08-06","namespace":"urn:ietf:params:xml:ns:yang:iana-crypt-hash","conformance-type":"import","feature":["crypt-hash-sha-512","crypt-hash-sha-256","crypt-hash-md5"]},{"name":"openflow-extensible-match_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-extensible-match?revision=2015-02-25","namespace":"urn:opendaylight:openflow:oxm","conformance-type":"import"}],"module-set-id":"2"}}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:38.855057" elapsed="0.004138"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:38.854735" elapsed="0.004511"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:38.854701" elapsed="0.004580"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:38.862047" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:38.859734" elapsed="0.002359"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:38.859422" elapsed="0.002705"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:38.859396" elapsed="0.002755"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:52:38.862783" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:38.862375" elapsed="0.000434"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:38.863146" elapsed="0.000039"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:38.862900" elapsed="0.000322"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:38.863732" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:38.863425" elapsed="0.000332"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:38.863246" elapsed="0.000547"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:38.862880" elapsed="0.000935"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:52:38.864376" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:38.863992" elapsed="0.000410"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:38.864724" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:38.864492" elapsed="0.000288"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:38.865290" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:38.864959" elapsed="0.000357"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:38.864803" elapsed="0.000547"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:38.864473" elapsed="0.000898"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:52:38.865543" elapsed="0.000353"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:52:38.866412" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:38.866085" elapsed="0.000353"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:52:38.866609" elapsed="0.002182"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:52:38.853659" elapsed="0.015255"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:52:38.869295" elapsed="0.000048"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:52:38.869044" elapsed="0.000364"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:38.868991" elapsed="0.000453"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:52:38.878491" level="INFO">${text_normalized} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:52:38.870161" elapsed="0.008382"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:52:38.878621" elapsed="0.000071"/>
</return>
<msg time="2026-04-08T00:52:38.878954" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:52:38.826643" elapsed="0.052463"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:52:38.879613" elapsed="0.000031"/>
</return>
<msg time="2026-04-08T00:52:38.879796" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="PASS" start="2026-04-08T00:52:38.688728" elapsed="0.191095"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Json_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:38.880152" elapsed="0.000056"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:38.879908" elapsed="0.000506"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:38.879889" elapsed="0.000553"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:52:38.880476" elapsed="0.000026"/>
</return>
<arg>session=${session}</arg>
<arg>folder=${RESTCONF_MODULES_DIR}</arg>
<arg>verify=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Add arguments sensible for JSON data, return Get_Templated response text.
Optionally, verification against JSON data (may be iterated) is called.
Only subset of JSON data is verified and returned if JMES path is specified in
file ${folder}/jmespath.expr.</doc>
<status status="PASS" start="2026-04-08T00:52:38.684672" elapsed="0.195932"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:38.680627" elapsed="0.200020"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:38.680610" elapsed="0.200061"/>
</if>
<kw name="Resolve_Shard_Type_Class" owner="ClusterManagement">
<if>
<branch type="IF" condition="'${shard_type}' == 'config'">
<return>
<value>DistributedConfigDatastore</value>
<status status="NOT RUN" start="2026-04-08T00:52:38.881298" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:52:38.881187" elapsed="0.000156"/>
</branch>
<branch type="ELSE IF" condition="'${shard_type}' == 'operational'">
<return>
<value>DistributedOperationalDatastore</value>
<status status="PASS" start="2026-04-08T00:52:38.881467" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-08T00:52:38.881365" elapsed="0.000159"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:38.881151" elapsed="0.000396"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized shard type: ${shard_type}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:38.881693" elapsed="0.000021"/>
</kw>
<msg time="2026-04-08T00:52:38.881810" level="INFO">${type_class} = DistributedOperationalDatastore</msg>
<var>${type_class}</var>
<arg>shard_type=${shard_type}</arg>
<doc>Simple lookup for class name corresponding to desired type.</doc>
<status status="PASS" start="2026-04-08T00:52:38.880899" elapsed="0.000936"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:52:38.882396" level="INFO">${cluster_index} = 3</msg>
<var>${cluster_index}</var>
<arg>${member_index}+${NODE_ROLE_INDEX_START}-1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:38.881999" elapsed="0.000423"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:38.883038" level="INFO">${uri} = jolokia/read/org.opendaylight.controller:Category=Shards,name=member-3-shard-default-operational,type=DistributedOperationalDatastore</msg>
<var>${uri}</var>
<arg>${JOLOKIA_READ_URI}:Category=Shards,name=member-${cluster_index}-shard-${shard_name}-${shard_type},type=${type_class}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:38.882575" elapsed="0.000490"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:38.888605" level="INFO">jolokia/read/org.opendaylight.controller:Category=Shards,name=member-3-shard-default-operational,type=DistributedOperationalDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:38.888150" elapsed="0.000501"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:38.889263" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:38.888803" elapsed="0.000504"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:52:38.906826" level="INFO">GET Request : url=http://10.30.171.110:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-3-shard-default-operational,type=DistributedOperationalDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-3-shard-default-operational,type=DistributedOperationalDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:52:38.906961" level="INFO">GET Response : url=http://10.30.171.110:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-3-shard-default-operational,type=DistributedOperationalDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Wed, 08 Apr 2026 00:52:38 GMT', 'Expires': 'Tue, 07 Apr 2026 23:52:38 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-3-shard-default-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"ReadWriteTransactionCount":0,"SnapshotIndex":182,"InMemoryJournalLogSize":1,"ReplicatedToAllIndex":182,"Leader":"member-1-shard-default-operational","LastIndex":183,"RaftState":"Follower","LastApplied":183,"LastCommittedTransactionTime":"1970-01-01 00:00:00.000","PeerAddresses":"member-1-shard-default-operational: pekko:\/\/opendaylight-cluster-data@10.30.170.48:2550\/user\/shardmanager-operational\/member-1-shard-default-operational, member-2-shard-default-operational: pekko:\/\/opendaylight-cluster-data@10.30.170.131:2550\/user\/shardmanager-operational\/member-2-shard-default-operational","LastLogIndex":183,"LastLeadershipChangeTime":"2026-04-08 00:46:45.941","FollowerInitialSyncStatus":true,"FollowerInfo":[],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"252.4 μs","CurrentTerm":2,"LastTerm":2,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-default-operational","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":0,"TxCohortCacheSize":0,"PeerVotingStates":"member-1-shard-default-operational: true, member-2-shard-default-operational: true","LastLogTerm":2,"StatRetrievalError":null,"CommitIndex":183,"SnapshotTerm":2,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-3-shard-default-operational","LeadershipChangeCount":1,"InMemoryJournalDataSize":95560},"timestamp":1775609558,"status":200} 
 </msg>
<msg time="2026-04-08T00:52:38.907152" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:52:38.900268" elapsed="0.007011"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:38.889374" elapsed="0.018160"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:38.907716" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:38.907564" elapsed="0.000513"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:38.889356" elapsed="0.018747"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:38.914622" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-3-shard-default-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"ReadWriteTransactionCount":0,"SnapshotIndex":182,"InMemoryJournalLogSize":1,"ReplicatedToAllIndex":182,"Leader":"member-1-shard-default-operational","LastIndex":183,"RaftState":"Follower","LastApplied":183,"LastCommittedTransactionTime":"1970-01-01 00:00:00.000","PeerAddresses":"member-1-shard-default-operational: pekko:\/\/opendaylight-cluster-data@10.30.170.48:2550\/user\/shardmanager-operational\/member-1-shard-default-operational, member-2-shard-default-operational: pekko:\/\/opendaylight-cluster-data@10.30.170.131:2550\/user\/shardmanager-operational\/member-2-shard-default-operational","LastLogIndex":183,"LastLeadershipChangeTime":"2026-04-08 00:46:45.941","FollowerInitialSyncStatus":true,"FollowerInfo":[],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"252.4 μs","CurrentTerm":2,"LastTerm":2,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-default-operational","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":0,"TxCohortCacheSize":0,"PeerVotingStates":"member-1-shard-default-operational: true, member-2-shard-default-operational: true","LastLogTerm":2,"StatRetrievalError":null,"CommitIndex":183,"SnapshotTerm":2,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-3-shard-default-operational","LeadershipChangeCount":1,"InMemoryJournalDataSize":95560},"timestamp":1775609558,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:38.910946" elapsed="0.003839"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:38.909676" elapsed="0.005179"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:38.909649" elapsed="0.005262"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:38.918843" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:38.916297" elapsed="0.002646"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:38.915029" elapsed="0.003962"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:38.915003" elapsed="0.004027"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:52:38.920460" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:38.919663" elapsed="0.000860"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:38.921161" elapsed="0.000109"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:38.920689" elapsed="0.000632"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:38.922207" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:38.921689" elapsed="0.000566"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:38.921358" elapsed="0.000947"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:38.920669" elapsed="0.001671"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:52:38.923710" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:38.922948" elapsed="0.000823"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:38.924447" elapsed="0.000035"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:38.923938" elapsed="0.000594"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:38.925481" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:38.924899" elapsed="0.000629"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:38.924571" elapsed="0.001006"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:38.923919" elapsed="0.001692"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:52:38.925834" elapsed="0.000638"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:52:38.927287" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:38.926775" elapsed="0.000574"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:52:38.927656" elapsed="0.002397"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:52:38.908593" elapsed="0.021635"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:52:38.930427" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:52:38.930302" elapsed="0.000171"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:38.930282" elapsed="0.000212"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:52:38.934338" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-3-shard-default-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp"...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:52:38.930638" elapsed="0.003730"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:52:38.934420" elapsed="0.000033"/>
</return>
<msg time="2026-04-08T00:52:38.934582" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-3-shard-default-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp"...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:52:38.884049" elapsed="0.050559"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:52:38.934710" elapsed="0.000027"/>
</return>
<msg time="2026-04-08T00:52:38.934860" level="INFO">${data_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-3-shard-default-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp"...</msg>
<var>${data_text}</var>
<arg>uri=${uri}</arg>
<arg>session=${session}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-08T00:52:38.883293" elapsed="0.051593"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:52:38.935956" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-3-shard-default-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 177560955...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:38.935484" elapsed="0.000502"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-08T00:52:38.936035" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:52:38.936250" level="INFO">${data_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-3-shard-default-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 177560955...</msg>
<var>${data_object}</var>
<arg>${data_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-08T00:52:38.935119" elapsed="0.001160"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:52:38.936636" level="INFO">${value} = {'AbortTransactionsCount': 0, 'CommitIndex': 183, 'CommittedTransactionsCount': 0, 'CurrentTerm': 2, 'FailedReadTransactionsCount': 0, 'FailedTransactionsCount': 0, 'FollowerInfo': [], 'FollowerInitia...</msg>
<var>${value}</var>
<arg>${data_object}</arg>
<arg>value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:52:38.936436" elapsed="0.000226"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:52:38.937013" level="INFO">${raft_property} = Follower</msg>
<var>${raft_property}</var>
<arg>${value}</arg>
<arg>${property}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:52:38.936815" elapsed="0.000223"/>
</kw>
<return>
<value>${raft_property}</value>
<status status="PASS" start="2026-04-08T00:52:38.937083" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:52:38.937335" level="INFO">${raft_state} = Follower</msg>
<var>${raft_state}</var>
<arg>RaftState</arg>
<arg>${shard_name}</arg>
<arg>${shard_type}</arg>
<arg>${member_index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft property.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T00:52:38.678966" elapsed="0.258394"/>
</kw>
<return>
<value>${raft_state}</value>
<status status="PASS" start="2026-04-08T00:52:38.937419" elapsed="0.000026"/>
</return>
<msg time="2026-04-08T00:52:38.937568" level="INFO">${raft_state} = Follower</msg>
<var>${raft_state}</var>
<arg>shard_name=${shard_name}</arg>
<arg>shard_type=${ds_type}</arg>
<arg>member_index=${index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft status.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T00:52:38.678240" elapsed="0.259352"/>
</kw>
<if>
<branch type="IF" condition="'Follower' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${follower_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-08T00:52:38.937889" elapsed="0.000191"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:38.937672" elapsed="0.000445"/>
</branch>
<branch type="ELSE IF" condition="'Leader' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${leader_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:38.938301" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:38.938141" 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 with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:38.938517" elapsed="0.000019"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:38.938378" elapsed="0.000188"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:38.937654" elapsed="0.000934"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T00:52:38.678053" elapsed="0.260559"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-08T00:52:38.142655" elapsed="0.795995"/>
</for>
<return>
<value>${leader_list}</value>
<value>${follower_list}</value>
<status status="PASS" start="2026-04-08T00:52:38.938693" elapsed="0.000027"/>
</return>
<msg time="2026-04-08T00:52:38.938896" level="INFO">${leader_list} = [1]</msg>
<msg time="2026-04-08T00:52:38.938942" level="INFO">${follower_list} = [2, 3]</msg>
<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="PASS" start="2026-04-08T00:52:38.138687" elapsed="0.800278"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T00:52:38.939429" level="INFO">Length is 1.</msg>
<msg time="2026-04-08T00:52:38.939504" level="INFO">${leader_count} = 1</msg>
<var>${leader_count}</var>
<arg>${leader_list}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T00:52:38.939144" elapsed="0.000383"/>
</kw>
<if>
<branch type="IF" condition="${leader_count} &lt; 1">
<kw name="Fail" owner="BuiltIn">
<arg>No leader found.</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:38.939843" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:38.939595" elapsed="0.000305"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:38.939578" elapsed="0.000345"/>
</if>
<kw name="Length Should Be" owner="BuiltIn">
<msg time="2026-04-08T00:52:38.943580" level="INFO">Length is 1.</msg>
<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="PASS" start="2026-04-08T00:52:38.940059" elapsed="0.003568"/>
</kw>
<kw name="Get From List" owner="Collections">
<msg time="2026-04-08T00:52:38.944013" level="INFO">${leader} = 1</msg>
<var>${leader}</var>
<arg>${leader_list}</arg>
<arg>0</arg>
<doc>Returns the value specified with an ``index`` from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:52:38.943827" elapsed="0.000211"/>
</kw>
<return>
<value>${leader}</value>
<value>${follower_list}</value>
<status status="PASS" start="2026-04-08T00:52:38.944083" elapsed="0.000029"/>
</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="PASS" start="2026-04-08T00:52:38.136159" elapsed="0.808096"/>
</kw>
<var name="${shard_name}">default</var>
<status status="PASS" start="2026-04-08T00:52:38.135935" elapsed="0.808380"/>
</iter>
<var>${shard_name}</var>
<value>@{shard_name_list}</value>
<status status="PASS" start="2026-04-08T00:52:36.552884" elapsed="2.391463"/>
</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="PASS" start="2026-04-08T00:52:36.552502" elapsed="2.391901"/>
</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-04-08T00:52:38.949481" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:52:38.949069" elapsed="0.000439"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:52:38.949968" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:52:38.949666" elapsed="0.000328"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:52:38.950037" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:52:38.950214" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:52:38.948700" elapsed="0.001540"/>
</kw>
<kw name="Sort List" owner="Collections">
<arg>${index_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="PASS" start="2026-04-08T00:52:38.950394" elapsed="0.000153"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:52:38.951034" level="INFO">${ds_type} = config</msg>
<var>${ds_type}</var>
<arg>'${shard_type}' != 'config'</arg>
<arg>operational</arg>
<arg>config</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:52:38.950705" elapsed="0.000354"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:52:38.951484" level="INFO">${leader_list} = []</msg>
<var>${leader_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:52:38.951247" elapsed="0.000262"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:52:38.951889" level="INFO">${follower_list} = []</msg>
<var>${follower_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:52:38.951657" elapsed="0.000257"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_Raft_State_Of_Shard_At_Member" owner="ClusterManagement">
<kw name="Get_Raft_Property_From_Shard_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:38.954335" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:38.953996" elapsed="0.000365"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:52:38.954406" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:52:38.954552" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:52:38.953660" elapsed="0.000916"/>
</kw>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Get_As_Json_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:39.091364" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:39.090940" elapsed="0.000460"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:52:39.092204" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:52:39.091916" elapsed="0.000376">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-08T00:52:39.092389" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:52:39.091578" elapsed="0.000835"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:52:39.092970" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:52:39.092581" elapsed="0.000416"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T00:52:39.093325" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-08T00:52:39.093558" level="INFO">${template} = /rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T00:52:39.093179" elapsed="0.000405"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:39.094016" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:39.093741" elapsed="0.000322"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:39.095036" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:39.094783" elapsed="0.000296"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-08T00:52:39.095522" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-08T00:52:39.095254" elapsed="0.000293"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:39.095879" elapsed="0.000021"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:39.096077" elapsed="0.000024"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:39.096270" elapsed="0.000022"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-08T00:52:39.095745" elapsed="0.000583"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-08T00:52:39.095601" elapsed="0.000758"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-08T00:52:39.096408" elapsed="0.000034"/>
</return>
<msg time="2026-04-08T00:52:39.096614" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-08T00:52:39.094462" elapsed="0.002179"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:39.094146" elapsed="0.002528"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:39.096847" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:39.096700" elapsed="0.000201"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:39.094119" elapsed="0.002802"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:52:39.097665" level="INFO">${final_text} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:39.097061" elapsed="0.000633"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T00:52:39.097745" 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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="PASS" start="2026-04-08T00:52:39.090319" elapsed="0.007550"/>
</kw>
<msg time="2026-04-08T00:52:39.097923" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:52:39.077902" elapsed="0.020102"/>
</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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:39.110053" elapsed="0.000047"/>
</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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:39.122272" elapsed="0.000055"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:39.134091" elapsed="0.000040"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:39.134962" elapsed="0.000037"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:39.135735" elapsed="0.000037"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:39.136339" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:39.136186" elapsed="0.000209"/>
</branch>
<status status="NOT RUN" start="2026-04-08T00:52:39.136151" elapsed="0.000268"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:39.136577" elapsed="0.000021"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:39.136762" elapsed="0.000021"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:39.136943" elapsed="0.000021"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-08T00:52:39.136096" elapsed="0.000922"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-08T00:52:39.135860" elapsed="0.001202"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:39.137778" elapsed="0.000036"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-08T00:52:39.137897" elapsed="0.000048"/>
</return>
<msg time="2026-04-08T00:52:39.138135" level="INFO">${uri} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-08T00:52:39.071997" elapsed="0.066266"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:52:39.141227" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:52:39.140918" elapsed="0.000382">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-08T00:52:39.141490" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:52:39.140446" elapsed="0.001091"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:39.142055" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:39.141667" elapsed="0.000456"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:39.142788" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:39.142460" elapsed="0.000356"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:39.142178" elapsed="0.000686"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:39.141616" elapsed="0.001286"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:52:39.145997" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:52:39.143733" elapsed="0.002311"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-08T00:52:39.146120" elapsed="0.000080"/>
</return>
<msg time="2026-04-08T00:52:39.146668" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:52:39.139306" elapsed="0.007472"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:52:39.149527" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:52:39.149286" elapsed="0.000305">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-08T00:52:39.149778" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:52:39.148843" elapsed="0.000979"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-08T00:52:39.150225" elapsed="0.000082"/>
</return>
<status status="PASS" start="2026-04-08T00:52:39.149953" elapsed="0.000421"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:39.149900" elapsed="0.000514"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:39.151152" elapsed="0.000119"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:39.152003" elapsed="0.000036"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-08T00:52:39.152111" elapsed="0.000051"/>
</return>
<msg time="2026-04-08T00:52:39.154286" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:52:39.147745" elapsed="0.006651"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:39.158254" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:39.157848" elapsed="0.000507"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:39.159626" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:39.159086" elapsed="0.000636"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:52:39.170366" level="INFO">GET Request : url=http://10.30.170.48:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 path_url=/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01jewze00gqgu8yuon50tdwq65226.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:52:39.170982" level="INFO">GET Response : url=http://10.30.170.48:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Transfer-Encoding': 'chunked'} 
 body={"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","hidden-symmetric-keys","encrypted-private-keys","asymmetrically-encrypted-value-format","cms-encrypted-data-format","cleartext-private-keys","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["ssh-client-keepalives","client-ident-hostbased","client-ident-publickey","client-ident-password"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-ex... (set the log level to DEBUG or TRACE to see the full content) 
 </msg>
<msg time="2026-04-08T00:52:39.171336" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:52:39.161907" elapsed="0.009467"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:39.159849" elapsed="0.011604"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:39.171859" elapsed="0.000033"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:39.171515" elapsed="0.000448"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:39.159797" elapsed="0.012216"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:39.178016" level="INFO">{"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","hidden-symmetric-keys","encrypted-private-keys","asymmetrically-encrypted-value-format","cms-encrypted-data-format","cleartext-private-keys","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["ssh-client-keepalives","client-ident-hostbased","client-ident-publickey","client-ident-password"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-experimenter-types?revision=2015-10-20","namespace":"urn:opendaylight:openflowplugin:experimenter:types","conformance-type":"import"},{"name":"ietf-ip_2018-02-22","revision":"2018-02-22","schema":"/rests/modules/ietf-ip?revision=2018-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-ip","conformance-type":"import","feature":["ipv6-privacy-autoconf","ipv4-non-contiguous-netmasks"]},{"name":"ietf-tcp-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-client","conformance-type":"import","feature":["local-binding-supported","tcp-client-keepalives"]},{"name":"node-config_2014-10-15","revision":"2014-10-15","schema":"/rests/modules/node-config?revision=2014-10-15","namespace":"urn:opendaylight:module:config","conformance-type":"import"},{"name":"ietf-restconf_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf","conformance-type":"import"},{"name":"ietf-datastores_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-datastores?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-datastores","conformance-type":"import"},{"name":"ietf-yang-patch_2017-02-22","revision":"2017-02-22","schema":"/rests/modules/ietf-yang-patch?revision=2017-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-patch","conformance-type":"import"},{"name":"sal-group_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-group?revision=2013-09-18","namespace":"urn:opendaylight:group:service","conformance-type":"import"},{"name":"odl-codegen-extensions_2024-06-27","revision":"2024-06-27","schema":"/rests/modules/odl-codegen-extensions?revision=2024-06-27","namespace":"urn:opendaylight:yang:extension:codegen","conformance-type":"import"},{"name":"sal-meter_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-meter?revision=2013-09-18","namespace":"urn:opendaylight:meter:service","conformance-type":"import"},{"name":"ietf-interfaces_2018-02-20","revision":"2018-02-20","schema":"/rests/modules/ietf-interfaces?revision=2018-02-20","namespace":"urn:ietf:params:xml:ns:yang:ietf-interfaces","conformance-type":"import","feature":["pre-provisioning","if-mib","arbitrary-names"]},{"name":"opendaylight-l2-types_2013-08-27","revision":"2013-08-27","schema":"/rests/modules/opendaylight-l2-types?revision=2013-08-27","namespace":"urn:opendaylight:l2:types","conformance-type":"import"},{"name":"opendaylight-flow-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-flow-types?revision=2013-10-26","namespace":"urn:opendaylight:flow:types","conformance-type":"import"},{"name":"lldp-speaker-config_2016-05-12","revision":"2016-05-12","schema":"/rests/modules/lldp-speaker-config?revision=2016-05-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker:config","conformance-type":"import"},{"name":"aaa-cert_2015-11-26","revision":"2015-11-26","schema":"/rests/modules/aaa-cert?revision=2015-11-26","namespace":"urn:opendaylight:yang:aaa:cert","conformance-type":"import"},{"name":"openflow-action_2015-02-03","revision":"2015-02-03","schema":"/rests/modules/openflow-action?revision=2015-02-03","namespace":"urn:opendaylight:openflow:common:action","conformance-type":"import"},{"name":"openflow-approved-extensions_2016-08-02","revision":"2016-08-02","schema":"/rests/modules/openflow-approved-extensions?revision=2016-08-02","namespace":"urn:opendaylight:openflow:approved:extensions","conformance-type":"import"},{"name":"nc-notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/nc-notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netmod:notification","conformance-type":"import"},{"name":"ietf-netconf-nmda_2019-01-07","revision":"2019-01-07","schema":"/rests/modules/ietf-netconf-nmda?revision=2019-01-07","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-nmda","conformance-type":"import","feature":["with-defaults","origin"]},{"name":"ietf-tcp-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-common","conformance-type":"import","feature":["keepalives-supported"]},{"name":"network-topology_2013-10-21","revision":"2013-10-21","schema":"/rests/modules/network-topology?revision=2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:network-topology","conformance-type":"import"},{"name":"aaa-encrypt-service-config_2024-02-02","revision":"2024-02-02","schema":"/rests/modules/aaa-encrypt-service-config?revision=2024-02-02","namespace":"config:aaa:authn:encrypt:service:config","conformance-type":"import"},{"name":"openflow-instruction_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-instruction?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:instruction","conformance-type":"import"},{"name":"ietf-tls-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-client","conformance-type":"import","feature":["client-ident-x509-cert","server-auth-x509-cert"]},{"name":"opendaylight-group-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-group-statistics?revision=2013-11-11","namespace":"urn:opendaylight:group:statistics","conformance-type":"import"},{"name":"cluster-admin_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/cluster-admin?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:cluster:admin","conformance-type":"import"},{"name":"opendaylight-flow-statistics_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-flow-statistics?revision=2013-08-19","namespace":"urn:opendaylight:flow:statistics","conformance-type":"import"},{"name":"opendaylight-table-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-table-types?revision=2013-10-26","namespace":"urn:opendaylight:table:types","conformance-type":"import"},{"name":"forwarding-rules-manager-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/forwarding-rules-manager-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:forwardingrules-manager:config","conformance-type":"import"},{"name":"odl-srm-types_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-types?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:types","conformance-type":"import"},{"name":"ietf-x509-cert-to-name_2014-12-10","revision":"2014-12-10","schema":"/rests/modules/ietf-x509-cert-to-name?revision=2014-12-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-x509-cert-to-name","conformance-type":"import"},{"name":"flow-node-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-node-inventory?revision=2013-08-19","namespace":"urn:opendaylight:flow:inventory","conformance-type":"import"},{"name":"flow-errors_2013-11-16","revision":"2013-11-16","schema":"/rests/modules/flow-errors?revision=2013-11-16","namespace":"urn:opendaylight:flow:errors","conformance-type":"import"},{"name":"ietf-netconf_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:netconf:base:1.0","conformance-type":"import","feature":["xpath","url","rollback-on-error","validate","startup","candidate","confirmed-commit","writable-running"]},{"name":"iana-ssh-public-key-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-public-key-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-public-key-algs","conformance-type":"import"},{"name":"aaa-cert-mdsal_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/aaa-cert-mdsal?revision=2016-03-21","namespace":"urn:opendaylight:yang:aaa:cert:mdsal","conformance-type":"import"},{"name":"odl-device-notification_2024-02-18","revision":"2024-02-18","schema":"/rests/modules/odl-device-notification?revision=2024-02-18","namespace":"urn:opendaylight:device:notification","conformance-type":"import"},{"name":"ietf-origin_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-origin?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-origin","conformance-type":"import"},{"name":"openflow-augments_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-augments?revision=2015-02-25","namespace":"urn:opendaylight:openflow:augments","conformance-type":"import"},{"name":"iana-ssh-encryption-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-encryption-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-encryption-algs","conformance-type":"import"},{"name":"ietf-truststore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-truststore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-truststore","conformance-type":"import","feature":["inline-definitions-supported"]},{"name":"distributed-datastore-provider_2025-01-30","revision":"2025-01-30","schema":"/rests/modules/distributed-datastore-provider?revision=2025-01-30","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:distributed-datastore-provider","conformance-type":"import"},{"name":"opendaylight-group-types_2013-10-18","revision":"2013-10-18","schema":"/rests/modules/opendaylight-group-types?revision=2013-10-18","namespace":"urn:opendaylight:group:types","conformance-type":"import"},{"name":"sal-remote-augment_2023-11-03","revision":"2023-11-03","schema":"/rests/modules/sal-remote-augment?revision=2023-11-03","namespace":"urn:sal:restconf:event:subscription","conformance-type":"import"},{"name":"opendaylight-ipv6-arbitrary-bitmask-fields_2016-02-24","revision":"2016-02-24","schema":"/rests/modules/opendaylight-ipv6-arbitrary-bitmask-fields?revision=2016-02-24","namespace":"urn:opendaylight:opendaylight-ipv6-arbitrary-bitmask-fields","conformance-type":"import"},{"name":"sal-flows-batch_2016-03-14","revision":"2016-03-14","schema":"/rests/modules/sal-flows-batch?revision=2016-03-14","namespace":"urn:opendaylight:flows:service","conformance-type":"import"},{"name":"ietf-tls-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-common","conformance-type":"import","feature":["tls12","hello-params","tls13"]},{"name":"openflow-types_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-types?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:types","conformance-type":"import"},{"name":"ietf-netconf-with-defaults_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf-with-defaults?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults","conformance-type":"import"},{"name":"odl-srm-ops_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-ops?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:ops","conformance-type":"import"},{"name":"odl-general-entity_2015-09-30","revision":"2015-09-30","schema":"/rests/modules/odl-general-entity?revision=2015-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:mdsal:core:general-entity","conformance-type":"import"},{"name":"iana-ssh-key-exchange-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-key-exchange-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-key-exchange-algs","conformance-type":"import"},{"name":"node-ssl-connection-error_2019-07-23","revision":"2019-07-23","schema":"/rests/modules/node-ssl-connection-error?revision=2019-07-23","namespace":"urn:opendaylight:node-ssl-connection-error:service","conformance-type":"import"},{"name":"openflow-protocol_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-protocol?revision=2013-07-31","namespace":"urn:opendaylight:openflow:protocol","conformance-type":"import"},{"name":"ietf-udp-server_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-server?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-server","conformance-type":"import"},{"name":"ietf-keystore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-keystore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-keystore","conformance-type":"import","feature":["asymmetric-keys","inline-definitions-supported"]},{"name":"aaa_2016-12-14","revision":"2016-12-14","schema":"/rests/modules/aaa?revision=2016-12-14","namespace":"urn:opendaylight:params:xml:ns:yang:aaa","conformance-type":"import"},{"name":"aaa-cert-rpc_2015-12-15","revision":"2015-12-15","schema":"/rests/modules/aaa-cert-rpc?revision=2015-12-15","namespace":"urn:opendaylight:yang:aaa:cert:rpc","conformance-type":"import"},{"name":"system-notifications_2013-09-27","revision":"2013-09-27","schema":"/rests/modules/system-notifications?revision=2013-09-27","namespace":"urn:opendaylight:openflow:system","conformance-type":"import"},{"name":"sal-flat-batch_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/sal-flat-batch?revision=2016-03-21","namespace":"urn:opendaylight:flat-batch:service","conformance-type":"import"},{"name":"notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netconf:notification:1.0","conformance-type":"import"},{"name":"sal-remote_2014-01-14","revision":"2014-01-14","schema":"/rests/modules/sal-remote?revision=2014-01-14","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:remote","conformance-type":"import"},{"name":"yang-ext_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/yang-ext?revision=2013-07-09","namespace":"urn:opendaylight:yang:extension:yang-ext","conformance-type":"import"},{"name":"opendaylight-multipart-types_2017-01-12","revision":"2017-01-12","schema":"/rests/modules/opendaylight-multipart-types?revision=2017-01-12","namespace":"urn:opendaylight:multipart:types","conformance-type":"import"},{"name":"opendaylight-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-inventory?revision=2013-08-19","namespace":"urn:opendaylight:inventory","conformance-type":"import"},{"name":"sal-queue_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-queue?revision=2015-03-05","namespace":"urn:opendaylight:queue:service","conformance-type":"import"},{"name":"sal-groups-batch_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/sal-groups-batch?revision=2016-03-15","namespace":"urn:opendaylight:groups:service","conformance-type":"import"},{"name":"arbitrator-reconcile_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/arbitrator-reconcile?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:arbitrator-reconcile:service","conformance-type":"import"},{"name":"ietf-yang-metadata_2016-08-05","revision":"2016-08-05","schema":"/rests/modules/ietf-yang-metadata?revision=2016-08-05","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-metadata","conformance-type":"import"},{"name":"opendaylight-arbitrary-bitmask-fields_2016-01-30","revision":"2016-01-30","schema":"/rests/modules/opendaylight-arbitrary-bitmask-fields?revision=2016-01-30","namespace":"urn:opendaylight:arbitrary:bitmask:fields","conformance-type":"import"},{"name":"ietf-udp-client_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-client?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-client","conformance-type":"import","feature":["local-binding"]},{"name":"opendaylight-meter-types_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/opendaylight-meter-types?revision=2013-09-18","namespace":"urn:opendaylight:meter:types","conformance-type":"import"},{"name":"opendaylight-action-types_2013-11-12","revision":"2013-11-12","schema":"/rests/modules/opendaylight-action-types?revision=2013-11-12","namespace":"urn:opendaylight:action:types","conformance-type":"import"},{"name":"sal-role_2015-07-27","revision":"2015-07-27","schema":"/rests/modules/sal-role?revision=2015-07-27","namespace":"urn:opendaylight:role:service","conformance-type":"import"},{"name":"openflow-provider-config_2016-05-10","revision":"2016-05-10","schema":"/rests/modules/openflow-provider-config?revision=2016-05-10","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:provider:config","conformance-type":"import"},{"name":"odl-serviceutils-upgrade_2018-07-02","revision":"2018-07-02","schema":"/rests/modules/odl-serviceutils-upgrade?revision=2018-07-02","namespace":"urn:opendaylight:serviceutils:upgrade","conformance-type":"import"},{"name":"opendaylight-match-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-match-types?revision=2013-10-26","namespace":"urn:opendaylight:model:match:types","conformance-type":"import"},{"name":"ietf-restconf-server_2024-08-14","revision":"2024-08-14","schema":"/rests/modules/ietf-restconf-server?revision=2024-08-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-server","conformance-type":"import","feature":["http-listen","https-listen"]},{"name":"reconciliation-result-state_2017-07-13","revision":"2017-07-13","schema":"/rests/modules/reconciliation-result-state?revision=2017-07-13","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:rf:state","conformance-type":"import"},{"name":"onf-extensions_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/onf-extensions?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf","conformance-type":"import"},{"name":"sal-table_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/sal-table?revision=2013-10-26","namespace":"urn:opendaylight:table:service","conformance-type":"import"},{"name":"iana-http-versions_2026-02-04","revision":"2026-02-04","schema":"/rests/modules/iana-http-versions?revision=2026-02-04","namespace":"urn:ietf:params:xml:ns:yang:iana-http-versions","conformance-type":"import"},{"name":"opendaylight-direct-statistics_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/opendaylight-direct-statistics?revision=2016-05-11","namespace":"urn:opendaylight:direct:statistics","conformance-type":"import"},{"name":"opendaylight-port-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-port-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:port","conformance-type":"import"},{"name":"sal-async-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/sal-async-config?revision=2017-06-19","namespace":"urn:opendaylight:async-config:service","conformance-type":"import"},{"name":"aaa-password-service-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-password-service-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:password:service:config","conformance-type":"import"},{"name":"ietf-yang-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-yang-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-types","conformance-type":"import"},{"name":"opendaylight-queue-statistics_2013-12-16","revision":"2013-12-16","schema":"/rests/modules/opendaylight-queue-statistics?revision=2013-12-16","namespace":"urn:opendaylight:queue:statistics","conformance-type":"import"},{"name":"sal-bundle_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/sal-bundle?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf:bundle:service","conformance-type":"import"},{"name":"ietf-restconf-subscribed-notifications_2019-11-17","revision":"2019-11-17","schema":"/rests/modules/ietf-restconf-subscribed-notifications?revision=2019-11-17","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-subscribed-notifications","conformance-type":"import"},{"name":"sal-meters-batch_2016-03-16","revision":"2016-03-16","schema":"/rests/modules/sal-meters-batch?revision=2016-03-16","namespace":"urn:opendaylight:meters:service","conformance-type":"import"},{"name":"odl-entity-owners","revision":"","schema":"/rests/modules/odl-entity-owners","namespace":"urn:opendaylight:params:xml:ns:yang:controller:entity-owners","conformance-type":"import"},{"name":"sal-experimenter-mp-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-mp-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-mp-message:service","conformance-type":"import"},{"name":"packet-processing_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/packet-processing?revision=2013-07-09","namespace":"urn:opendaylight:packet:service","conformance-type":"import"},{"name":"openflow-configuration_2014-06-30","revision":"2014-06-30","schema":"/rests/modules/openflow-configuration?revision=2014-06-30","namespace":"urn:opendaylight:openflow:config","conformance-type":"import"},{"name":"odl-srm-rpcs_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-rpcs?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:rpc","conformance-type":"import"},{"name":"ietf-netconf-acm_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-netconf-acm?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-acm","conformance-type":"import"},{"name":"iana-crypt-hash_2014-08-06","revision":"2014-08-06","schema":"/rests/modules/iana-crypt-hash?revision=2014-08-06","namespace":"urn:ietf:params:xml:ns:yang:iana-crypt-hash","conformance-type":"import","feature":["crypt-hash-sha-512","crypt-hash-sha-256","crypt-hash-md5"]},{"name":"openflow-extensible-match_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-extensible-match?revision=2015-02-25","namespace":"urn:opendaylight:openflow:oxm","conformance-type":"import"}],"module-set-id":"2"}}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:39.174419" elapsed="0.004064"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:39.174080" elapsed="0.004453"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:39.174049" elapsed="0.004519"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:39.182105" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:39.179013" elapsed="0.003180"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:39.178682" elapsed="0.003561"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:39.178655" elapsed="0.003623"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:52:39.183128" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:39.182543" elapsed="0.000645"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:39.183654" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:39.183321" elapsed="0.000413"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:39.184407" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:39.183990" elapsed="0.000442"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:39.183767" elapsed="0.000700"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:39.183292" elapsed="0.001196"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:52:39.185026" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:39.184668" elapsed="0.000385"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:39.185399" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:39.185148" elapsed="0.000309"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:39.185937" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:39.185639" elapsed="0.000323"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:39.185480" elapsed="0.000516"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:39.185129" elapsed="0.000888"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:52:39.186214" elapsed="0.000383"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:52:39.187109" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:39.186787" elapsed="0.000348"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:52:39.187327" elapsed="0.002239"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:52:39.173065" elapsed="0.016664"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:52:39.190123" elapsed="0.000125"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:52:39.189891" elapsed="0.000429"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:39.189835" elapsed="0.000522"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:52:39.199697" level="INFO">${text_normalized} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:52:39.191161" elapsed="0.008587"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:52:39.199830" elapsed="0.000072"/>
</return>
<msg time="2026-04-08T00:52:39.200205" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:52:39.155067" elapsed="0.045246"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:52:39.200784" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:52:39.200969" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="PASS" start="2026-04-08T00:52:39.016595" elapsed="0.184402"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Json_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:39.201389" elapsed="0.000027"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:39.201086" elapsed="0.000521"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:39.201067" elapsed="0.000568"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:52:39.201670" elapsed="0.000027"/>
</return>
<arg>session=${session}</arg>
<arg>folder=${RESTCONF_MODULES_DIR}</arg>
<arg>verify=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Add arguments sensible for JSON data, return Get_Templated response text.
Optionally, verification against JSON data (may be iterated) is called.
Only subset of JSON data is verified and returned if JMES path is specified in
file ${folder}/jmespath.expr.</doc>
<status status="PASS" start="2026-04-08T00:52:39.012283" elapsed="0.189518"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:38.954643" elapsed="0.247204"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:38.954625" elapsed="0.247247"/>
</if>
<kw name="Resolve_Shard_Type_Class" owner="ClusterManagement">
<if>
<branch type="IF" condition="'${shard_type}' == 'config'">
<return>
<value>DistributedConfigDatastore</value>
<status status="PASS" start="2026-04-08T00:52:39.202525" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-08T00:52:39.202416" elapsed="0.000169"/>
</branch>
<branch type="ELSE IF" condition="'${shard_type}' == 'operational'">
<return>
<value>DistributedOperationalDatastore</value>
<status status="NOT RUN" start="2026-04-08T00:52:39.202646" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:52:39.202608" elapsed="0.000077"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:39.202398" elapsed="0.000309"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized shard type: ${shard_type}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:39.202859" elapsed="0.000021"/>
</kw>
<msg time="2026-04-08T00:52:39.202977" level="INFO">${type_class} = DistributedConfigDatastore</msg>
<var>${type_class}</var>
<arg>shard_type=${shard_type}</arg>
<doc>Simple lookup for class name corresponding to desired type.</doc>
<status status="PASS" start="2026-04-08T00:52:39.202110" elapsed="0.000893"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:52:39.203635" level="INFO">${cluster_index} = 1</msg>
<var>${cluster_index}</var>
<arg>${member_index}+${NODE_ROLE_INDEX_START}-1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:39.203228" elapsed="0.000434"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:39.204309" level="INFO">${uri} = jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-inventory-config,type=DistributedConfigDatastore</msg>
<var>${uri}</var>
<arg>${JOLOKIA_READ_URI}:Category=Shards,name=member-${cluster_index}-shard-${shard_name}-${shard_type},type=${type_class}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:39.203817" elapsed="0.000520"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:39.209920" level="INFO">jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-inventory-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:39.209469" elapsed="0.000498"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:39.210577" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:39.210125" elapsed="0.000496"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:52:39.228894" level="INFO">GET Request : url=http://10.30.170.48:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-inventory-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-inventory-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:52:39.229101" level="INFO">GET Response : url=http://10.30.170.48:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-inventory-config,type=DistributedConfigDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Wed, 08 Apr 2026 00:52:39 GMT', 'Expires': 'Tue, 07 Apr 2026 23:52:39 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-1-shard-inventory-config,type=DistributedConfigDatastore","type":"read"},"value":{"ReadWriteTransactionCount":12,"SnapshotIndex":22,"InMemoryJournalLogSize":1,"ReplicatedToAllIndex":22,"Leader":"member-1-shard-inventory-config","LastIndex":23,"RaftState":"Leader","LastApplied":23,"LastCommittedTransactionTime":"1970-01-01 00:00:00.000","PeerAddresses":"member-2-shard-inventory-config: pekko:\/\/opendaylight-cluster-data@10.30.170.131:2550\/user\/shardmanager-config\/member-2-shard-inventory-config, member-3-shard-inventory-config: pekko:\/\/opendaylight-cluster-data@10.30.171.110:2550\/user\/shardmanager-config\/member-3-shard-inventory-config","LastLogIndex":23,"LastLeadershipChangeTime":"2026-04-08 00:46:45.964","FollowerInitialSyncStatus":false,"FollowerInfo":[{"timeSinceLastActivity":"00:00:00.313","active":true,"matchIndex":23,"voting":true,"id":"member-2-shard-inventory-config","nextIndex":24},{"timeSinceLastActivity":"00:00:00.314","active":true,"matchIndex":23,"voting":true,"id":"member-3-shard-inventory-config","nextIndex":24}],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"319.4 μs","CurrentTerm":2,"LastTerm":2,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-inventory-config","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":0,"TxCohortCacheSize":0,"PeerVotingStates":"member-2-shard-inventory-config: true, member-3-shard-inventory-config: true","LastLogTerm":2,"StatRetrievalError":null,"CommitIndex":23,"SnapshotTerm":2,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-1-shard-inventory-config","LeadershipChangeCount":1,"InMemoryJournalDataSize":888},"timestamp":1775609559,"status":200} 
 </msg>
<msg time="2026-04-08T00:52:39.229412" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:52:39.221879" elapsed="0.007686"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:39.210690" elapsed="0.019243"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:39.230231" elapsed="0.000034"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:39.229979" elapsed="0.000707"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:39.210671" elapsed="0.020052"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:39.237972" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-1-shard-inventory-config,type=DistributedConfigDatastore","type":"read"},"value":{"ReadWriteTransactionCount":12,"SnapshotIndex":22,"InMemoryJournalLogSize":1,"ReplicatedToAllIndex":22,"Leader":"member-1-shard-inventory-config","LastIndex":23,"RaftState":"Leader","LastApplied":23,"LastCommittedTransactionTime":"1970-01-01 00:00:00.000","PeerAddresses":"member-2-shard-inventory-config: pekko:\/\/opendaylight-cluster-data@10.30.170.131:2550\/user\/shardmanager-config\/member-2-shard-inventory-config, member-3-shard-inventory-config: pekko:\/\/opendaylight-cluster-data@10.30.171.110:2550\/user\/shardmanager-config\/member-3-shard-inventory-config","LastLogIndex":23,"LastLeadershipChangeTime":"2026-04-08 00:46:45.964","FollowerInitialSyncStatus":false,"FollowerInfo":[{"timeSinceLastActivity":"00:00:00.313","active":true,"matchIndex":23,"voting":true,"id":"member-2-shard-inventory-config","nextIndex":24},{"timeSinceLastActivity":"00:00:00.314","active":true,"matchIndex":23,"voting":true,"id":"member-3-shard-inventory-config","nextIndex":24}],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"319.4 μs","CurrentTerm":2,"LastTerm":2,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-inventory-config","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":0,"TxCohortCacheSize":0,"PeerVotingStates":"member-2-shard-inventory-config: true, member-3-shard-inventory-config: true","LastLogTerm":2,"StatRetrievalError":null,"CommitIndex":23,"SnapshotTerm":2,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-1-shard-inventory-config","LeadershipChangeCount":1,"InMemoryJournalDataSize":888},"timestamp":1775609559,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:39.234038" elapsed="0.004097"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:39.232761" elapsed="0.005467"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:39.232732" elapsed="0.005553"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:39.242286" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:39.239643" elapsed="0.002743"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:39.238403" elapsed="0.004032"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:39.238377" elapsed="0.004097"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:52:39.243949" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:39.243108" elapsed="0.000903"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:39.244669" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:39.244197" elapsed="0.000561"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:39.245649" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:39.245124" elapsed="0.000570"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:39.244795" elapsed="0.000950"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:39.244163" elapsed="0.001617"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:52:39.247238" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:39.246413" elapsed="0.000887"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:39.247962" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:39.247470" elapsed="0.000579"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:39.248935" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:39.248437" elapsed="0.000545"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:39.248088" elapsed="0.000944"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:39.247449" elapsed="0.001617"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:52:39.249373" elapsed="0.000621"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:52:39.250823" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:39.250318" elapsed="0.000565"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:52:39.251181" elapsed="0.002558"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:52:39.231651" elapsed="0.022252"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:52:39.254114" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:52:39.253979" elapsed="0.000198"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:39.253959" elapsed="0.000242"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:52:39.257946" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-1-shard-inventory-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 177560...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:52:39.254349" elapsed="0.003627"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:52:39.258028" elapsed="0.000035"/>
</return>
<msg time="2026-04-08T00:52:39.258248" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-1-shard-inventory-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 177560...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:52:39.205296" elapsed="0.052980"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:52:39.258335" elapsed="0.000027"/>
</return>
<msg time="2026-04-08T00:52:39.258484" level="INFO">${data_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-1-shard-inventory-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 177560...</msg>
<var>${data_text}</var>
<arg>uri=${uri}</arg>
<arg>session=${session}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-08T00:52:39.204549" elapsed="0.053961"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:52:39.259591" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-1-shard-inventory-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1775609559, 'valu...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:39.259076" elapsed="0.000545"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-08T00:52:39.259694" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:52:39.259875" level="INFO">${data_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-1-shard-inventory-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1775609559, 'valu...</msg>
<var>${data_object}</var>
<arg>${data_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-08T00:52:39.258735" elapsed="0.001167"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:52:39.260287" level="INFO">${value} = {'AbortTransactionsCount': 0, 'CommitIndex': 23, 'CommittedTransactionsCount': 0, 'CurrentTerm': 2, 'FailedReadTransactionsCount': 0, 'FailedTransactionsCount': 0, 'FollowerInfo': [{'active': True, 'i...</msg>
<var>${value}</var>
<arg>${data_object}</arg>
<arg>value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:52:39.260059" elapsed="0.000256"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:52:39.260671" level="INFO">${raft_property} = Leader</msg>
<var>${raft_property}</var>
<arg>${value}</arg>
<arg>${property}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:52:39.260468" elapsed="0.000228"/>
</kw>
<return>
<value>${raft_property}</value>
<status status="PASS" start="2026-04-08T00:52:39.260742" elapsed="0.000027"/>
</return>
<msg time="2026-04-08T00:52:39.260893" level="INFO">${raft_state} = Leader</msg>
<var>${raft_state}</var>
<arg>RaftState</arg>
<arg>${shard_name}</arg>
<arg>${shard_type}</arg>
<arg>${member_index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft property.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T00:52:38.953048" elapsed="0.307870"/>
</kw>
<return>
<value>${raft_state}</value>
<status status="PASS" start="2026-04-08T00:52:39.260976" elapsed="0.000025"/>
</return>
<msg time="2026-04-08T00:52:39.261127" level="INFO">${raft_state} = Leader</msg>
<var>${raft_state}</var>
<arg>shard_name=${shard_name}</arg>
<arg>shard_type=${ds_type}</arg>
<arg>member_index=${index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft status.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T00:52:38.952334" elapsed="0.308817"/>
</kw>
<if>
<branch type="IF" condition="'Follower' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${follower_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:39.261544" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:39.261324" elapsed="0.000276"/>
</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="PASS" start="2026-04-08T00:52:39.261860" elapsed="0.000193"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:39.261623" elapsed="0.000467"/>
</branch>
<branch type="ELSE IF" condition="${validate}">
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized Raft state: ${raft_state}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:39.262322" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:39.262114" elapsed="0.000262"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:39.261304" elapsed="0.001095"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T00:52:38.952153" elapsed="0.310270"/>
</iter>
<iter>
<kw name="Get_Raft_State_Of_Shard_At_Member" owner="ClusterManagement">
<kw name="Get_Raft_Property_From_Shard_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:39.264789" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:39.264465" elapsed="0.000351"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:52:39.264860" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:52:39.265006" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:52:39.264109" elapsed="0.000922"/>
</kw>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Get_As_Json_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:39.347409" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:39.347006" elapsed="0.000433"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:52:39.348263" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:52:39.347993" elapsed="0.000349">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-08T00:52:39.348436" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:52:39.347605" elapsed="0.000856"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:52:39.349030" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:52:39.348643" elapsed="0.000415"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T00:52:39.349425" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-08T00:52:39.349582" level="INFO">${template} = /rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T00:52:39.349276" elapsed="0.000331"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:39.350003" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:39.349760" elapsed="0.000288"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:39.351030" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:39.350779" elapsed="0.000296"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-08T00:52:39.351518" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-08T00:52:39.351248" elapsed="0.000297"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:39.351869" elapsed="0.000022"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:39.352068" elapsed="0.000023"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:39.352258" elapsed="0.000022"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-08T00:52:39.351738" elapsed="0.000577"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-08T00:52:39.351596" elapsed="0.000749"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-08T00:52:39.352392" elapsed="0.000031"/>
</return>
<msg time="2026-04-08T00:52:39.352553" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-08T00:52:39.350458" elapsed="0.002120"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:39.350122" elapsed="0.002522"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:39.352816" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:39.352671" elapsed="0.000199"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:39.350100" elapsed="0.002791"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:52:39.353476" level="INFO">${final_text} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:39.353029" elapsed="0.000475"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T00:52:39.353552" elapsed="0.000028"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="PASS" start="2026-04-08T00:52:39.346357" elapsed="0.007315"/>
</kw>
<msg time="2026-04-08T00:52:39.353725" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:52:39.334217" elapsed="0.019590"/>
</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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:39.365942" elapsed="0.000042"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:39.377823" elapsed="0.000041"/>
</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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:39.389729" elapsed="0.000041"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:39.390514" elapsed="0.000038"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:39.391276" elapsed="0.000036"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:39.391833" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:39.391686" elapsed="0.000203"/>
</branch>
<status status="NOT RUN" start="2026-04-08T00:52:39.391670" elapsed="0.000243"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:39.392070" elapsed="0.000022"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:39.392303" elapsed="0.000024"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:39.392496" elapsed="0.000021"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-08T00:52:39.391620" elapsed="0.000951"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-08T00:52:39.391396" elapsed="0.001215"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:39.393345" elapsed="0.000035"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-08T00:52:39.393463" elapsed="0.000049"/>
</return>
<msg time="2026-04-08T00:52:39.393691" level="INFO">${uri} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-08T00:52:39.328287" elapsed="0.065512"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:52:39.396647" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:52:39.396393" elapsed="0.000322">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-08T00:52:39.396903" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:52:39.395922" elapsed="0.001026"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:39.397549" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:39.397135" elapsed="0.000481"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:39.398238" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:39.397925" elapsed="0.000339"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:39.397655" elapsed="0.000654"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:39.397081" elapsed="0.001268"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:52:39.401600" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:52:39.399066" elapsed="0.002580"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-08T00:52:39.401721" elapsed="0.000063"/>
</return>
<msg time="2026-04-08T00:52:39.402030" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:52:39.394793" elapsed="0.007341"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:52:39.404796" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:52:39.404555" elapsed="0.000305">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-08T00:52:39.405044" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:52:39.404076" elapsed="0.001011"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-08T00:52:39.405562" elapsed="0.000077"/>
</return>
<status status="PASS" start="2026-04-08T00:52:39.405316" elapsed="0.000390"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:39.405264" elapsed="0.000480"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:39.406459" elapsed="0.000037"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:39.407206" elapsed="0.000036"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-08T00:52:39.407314" elapsed="0.000048"/>
</return>
<msg time="2026-04-08T00:52:39.409581" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:52:39.402937" elapsed="0.006751"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:39.413416" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:39.412985" elapsed="0.000528"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:39.414583" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:39.414208" elapsed="0.000470"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:52:39.435194" level="INFO">GET Request : url=http://10.30.170.131:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 path_url=/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01eq5fxmndxspk37g8qgkyja672.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:52:39.436117" level="INFO">GET Response : url=http://10.30.170.131:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Transfer-Encoding': 'chunked'} 
 body={"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","hidden-symmetric-keys","encrypted-private-keys","asymmetrically-encrypted-value-format","cms-encrypted-data-format","cleartext-private-keys","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["ssh-client-keepalives","client-ident-hostbased","client-ident-publickey","client-ident-password"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-ex... (set the log level to DEBUG or TRACE to see the full content) 
 </msg>
<msg time="2026-04-08T00:52:39.436607" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:52:39.416846" elapsed="0.019820"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:39.414803" elapsed="0.021993"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:39.437527" elapsed="0.000056"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:39.436896" elapsed="0.000804"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:39.414753" elapsed="0.023028"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:39.444604" level="INFO">{"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","hidden-symmetric-keys","encrypted-private-keys","asymmetrically-encrypted-value-format","cms-encrypted-data-format","cleartext-private-keys","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["ssh-client-keepalives","client-ident-hostbased","client-ident-publickey","client-ident-password"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-experimenter-types?revision=2015-10-20","namespace":"urn:opendaylight:openflowplugin:experimenter:types","conformance-type":"import"},{"name":"ietf-ip_2018-02-22","revision":"2018-02-22","schema":"/rests/modules/ietf-ip?revision=2018-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-ip","conformance-type":"import","feature":["ipv6-privacy-autoconf","ipv4-non-contiguous-netmasks"]},{"name":"ietf-tcp-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-client","conformance-type":"import","feature":["local-binding-supported","tcp-client-keepalives"]},{"name":"node-config_2014-10-15","revision":"2014-10-15","schema":"/rests/modules/node-config?revision=2014-10-15","namespace":"urn:opendaylight:module:config","conformance-type":"import"},{"name":"ietf-restconf_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf","conformance-type":"import"},{"name":"ietf-datastores_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-datastores?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-datastores","conformance-type":"import"},{"name":"ietf-yang-patch_2017-02-22","revision":"2017-02-22","schema":"/rests/modules/ietf-yang-patch?revision=2017-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-patch","conformance-type":"import"},{"name":"sal-group_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-group?revision=2013-09-18","namespace":"urn:opendaylight:group:service","conformance-type":"import"},{"name":"odl-codegen-extensions_2024-06-27","revision":"2024-06-27","schema":"/rests/modules/odl-codegen-extensions?revision=2024-06-27","namespace":"urn:opendaylight:yang:extension:codegen","conformance-type":"import"},{"name":"sal-meter_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-meter?revision=2013-09-18","namespace":"urn:opendaylight:meter:service","conformance-type":"import"},{"name":"ietf-interfaces_2018-02-20","revision":"2018-02-20","schema":"/rests/modules/ietf-interfaces?revision=2018-02-20","namespace":"urn:ietf:params:xml:ns:yang:ietf-interfaces","conformance-type":"import","feature":["pre-provisioning","if-mib","arbitrary-names"]},{"name":"opendaylight-l2-types_2013-08-27","revision":"2013-08-27","schema":"/rests/modules/opendaylight-l2-types?revision=2013-08-27","namespace":"urn:opendaylight:l2:types","conformance-type":"import"},{"name":"opendaylight-flow-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-flow-types?revision=2013-10-26","namespace":"urn:opendaylight:flow:types","conformance-type":"import"},{"name":"lldp-speaker-config_2016-05-12","revision":"2016-05-12","schema":"/rests/modules/lldp-speaker-config?revision=2016-05-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker:config","conformance-type":"import"},{"name":"aaa-cert_2015-11-26","revision":"2015-11-26","schema":"/rests/modules/aaa-cert?revision=2015-11-26","namespace":"urn:opendaylight:yang:aaa:cert","conformance-type":"import"},{"name":"openflow-action_2015-02-03","revision":"2015-02-03","schema":"/rests/modules/openflow-action?revision=2015-02-03","namespace":"urn:opendaylight:openflow:common:action","conformance-type":"import"},{"name":"openflow-approved-extensions_2016-08-02","revision":"2016-08-02","schema":"/rests/modules/openflow-approved-extensions?revision=2016-08-02","namespace":"urn:opendaylight:openflow:approved:extensions","conformance-type":"import"},{"name":"nc-notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/nc-notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netmod:notification","conformance-type":"import"},{"name":"ietf-netconf-nmda_2019-01-07","revision":"2019-01-07","schema":"/rests/modules/ietf-netconf-nmda?revision=2019-01-07","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-nmda","conformance-type":"import","feature":["with-defaults","origin"]},{"name":"ietf-tcp-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-common","conformance-type":"import","feature":["keepalives-supported"]},{"name":"network-topology_2013-10-21","revision":"2013-10-21","schema":"/rests/modules/network-topology?revision=2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:network-topology","conformance-type":"import"},{"name":"aaa-encrypt-service-config_2024-02-02","revision":"2024-02-02","schema":"/rests/modules/aaa-encrypt-service-config?revision=2024-02-02","namespace":"config:aaa:authn:encrypt:service:config","conformance-type":"import"},{"name":"openflow-instruction_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-instruction?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:instruction","conformance-type":"import"},{"name":"ietf-tls-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-client","conformance-type":"import","feature":["client-ident-x509-cert","server-auth-x509-cert"]},{"name":"opendaylight-group-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-group-statistics?revision=2013-11-11","namespace":"urn:opendaylight:group:statistics","conformance-type":"import"},{"name":"cluster-admin_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/cluster-admin?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:cluster:admin","conformance-type":"import"},{"name":"opendaylight-flow-statistics_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-flow-statistics?revision=2013-08-19","namespace":"urn:opendaylight:flow:statistics","conformance-type":"import"},{"name":"opendaylight-table-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-table-types?revision=2013-10-26","namespace":"urn:opendaylight:table:types","conformance-type":"import"},{"name":"forwarding-rules-manager-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/forwarding-rules-manager-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:forwardingrules-manager:config","conformance-type":"import"},{"name":"odl-srm-types_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-types?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:types","conformance-type":"import"},{"name":"ietf-x509-cert-to-name_2014-12-10","revision":"2014-12-10","schema":"/rests/modules/ietf-x509-cert-to-name?revision=2014-12-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-x509-cert-to-name","conformance-type":"import"},{"name":"flow-node-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-node-inventory?revision=2013-08-19","namespace":"urn:opendaylight:flow:inventory","conformance-type":"import"},{"name":"flow-errors_2013-11-16","revision":"2013-11-16","schema":"/rests/modules/flow-errors?revision=2013-11-16","namespace":"urn:opendaylight:flow:errors","conformance-type":"import"},{"name":"ietf-netconf_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:netconf:base:1.0","conformance-type":"import","feature":["xpath","url","rollback-on-error","validate","startup","candidate","confirmed-commit","writable-running"]},{"name":"iana-ssh-public-key-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-public-key-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-public-key-algs","conformance-type":"import"},{"name":"aaa-cert-mdsal_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/aaa-cert-mdsal?revision=2016-03-21","namespace":"urn:opendaylight:yang:aaa:cert:mdsal","conformance-type":"import"},{"name":"odl-device-notification_2024-02-18","revision":"2024-02-18","schema":"/rests/modules/odl-device-notification?revision=2024-02-18","namespace":"urn:opendaylight:device:notification","conformance-type":"import"},{"name":"ietf-origin_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-origin?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-origin","conformance-type":"import"},{"name":"openflow-augments_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-augments?revision=2015-02-25","namespace":"urn:opendaylight:openflow:augments","conformance-type":"import"},{"name":"iana-ssh-encryption-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-encryption-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-encryption-algs","conformance-type":"import"},{"name":"ietf-truststore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-truststore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-truststore","conformance-type":"import","feature":["inline-definitions-supported"]},{"name":"distributed-datastore-provider_2025-01-30","revision":"2025-01-30","schema":"/rests/modules/distributed-datastore-provider?revision=2025-01-30","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:distributed-datastore-provider","conformance-type":"import"},{"name":"opendaylight-group-types_2013-10-18","revision":"2013-10-18","schema":"/rests/modules/opendaylight-group-types?revision=2013-10-18","namespace":"urn:opendaylight:group:types","conformance-type":"import"},{"name":"sal-remote-augment_2023-11-03","revision":"2023-11-03","schema":"/rests/modules/sal-remote-augment?revision=2023-11-03","namespace":"urn:sal:restconf:event:subscription","conformance-type":"import"},{"name":"opendaylight-ipv6-arbitrary-bitmask-fields_2016-02-24","revision":"2016-02-24","schema":"/rests/modules/opendaylight-ipv6-arbitrary-bitmask-fields?revision=2016-02-24","namespace":"urn:opendaylight:opendaylight-ipv6-arbitrary-bitmask-fields","conformance-type":"import"},{"name":"sal-flows-batch_2016-03-14","revision":"2016-03-14","schema":"/rests/modules/sal-flows-batch?revision=2016-03-14","namespace":"urn:opendaylight:flows:service","conformance-type":"import"},{"name":"ietf-tls-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-common","conformance-type":"import","feature":["tls12","hello-params","tls13"]},{"name":"openflow-types_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-types?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:types","conformance-type":"import"},{"name":"ietf-netconf-with-defaults_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf-with-defaults?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults","conformance-type":"import"},{"name":"odl-srm-ops_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-ops?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:ops","conformance-type":"import"},{"name":"odl-general-entity_2015-09-30","revision":"2015-09-30","schema":"/rests/modules/odl-general-entity?revision=2015-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:mdsal:core:general-entity","conformance-type":"import"},{"name":"iana-ssh-key-exchange-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-key-exchange-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-key-exchange-algs","conformance-type":"import"},{"name":"node-ssl-connection-error_2019-07-23","revision":"2019-07-23","schema":"/rests/modules/node-ssl-connection-error?revision=2019-07-23","namespace":"urn:opendaylight:node-ssl-connection-error:service","conformance-type":"import"},{"name":"openflow-protocol_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-protocol?revision=2013-07-31","namespace":"urn:opendaylight:openflow:protocol","conformance-type":"import"},{"name":"ietf-udp-server_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-server?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-server","conformance-type":"import"},{"name":"ietf-keystore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-keystore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-keystore","conformance-type":"import","feature":["asymmetric-keys","inline-definitions-supported"]},{"name":"aaa_2016-12-14","revision":"2016-12-14","schema":"/rests/modules/aaa?revision=2016-12-14","namespace":"urn:opendaylight:params:xml:ns:yang:aaa","conformance-type":"import"},{"name":"aaa-cert-rpc_2015-12-15","revision":"2015-12-15","schema":"/rests/modules/aaa-cert-rpc?revision=2015-12-15","namespace":"urn:opendaylight:yang:aaa:cert:rpc","conformance-type":"import"},{"name":"system-notifications_2013-09-27","revision":"2013-09-27","schema":"/rests/modules/system-notifications?revision=2013-09-27","namespace":"urn:opendaylight:openflow:system","conformance-type":"import"},{"name":"sal-flat-batch_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/sal-flat-batch?revision=2016-03-21","namespace":"urn:opendaylight:flat-batch:service","conformance-type":"import"},{"name":"notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netconf:notification:1.0","conformance-type":"import"},{"name":"sal-remote_2014-01-14","revision":"2014-01-14","schema":"/rests/modules/sal-remote?revision=2014-01-14","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:remote","conformance-type":"import"},{"name":"yang-ext_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/yang-ext?revision=2013-07-09","namespace":"urn:opendaylight:yang:extension:yang-ext","conformance-type":"import"},{"name":"opendaylight-multipart-types_2017-01-12","revision":"2017-01-12","schema":"/rests/modules/opendaylight-multipart-types?revision=2017-01-12","namespace":"urn:opendaylight:multipart:types","conformance-type":"import"},{"name":"opendaylight-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-inventory?revision=2013-08-19","namespace":"urn:opendaylight:inventory","conformance-type":"import"},{"name":"sal-queue_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-queue?revision=2015-03-05","namespace":"urn:opendaylight:queue:service","conformance-type":"import"},{"name":"sal-groups-batch_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/sal-groups-batch?revision=2016-03-15","namespace":"urn:opendaylight:groups:service","conformance-type":"import"},{"name":"arbitrator-reconcile_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/arbitrator-reconcile?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:arbitrator-reconcile:service","conformance-type":"import"},{"name":"ietf-yang-metadata_2016-08-05","revision":"2016-08-05","schema":"/rests/modules/ietf-yang-metadata?revision=2016-08-05","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-metadata","conformance-type":"import"},{"name":"opendaylight-arbitrary-bitmask-fields_2016-01-30","revision":"2016-01-30","schema":"/rests/modules/opendaylight-arbitrary-bitmask-fields?revision=2016-01-30","namespace":"urn:opendaylight:arbitrary:bitmask:fields","conformance-type":"import"},{"name":"ietf-udp-client_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-client?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-client","conformance-type":"import","feature":["local-binding"]},{"name":"opendaylight-meter-types_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/opendaylight-meter-types?revision=2013-09-18","namespace":"urn:opendaylight:meter:types","conformance-type":"import"},{"name":"opendaylight-action-types_2013-11-12","revision":"2013-11-12","schema":"/rests/modules/opendaylight-action-types?revision=2013-11-12","namespace":"urn:opendaylight:action:types","conformance-type":"import"},{"name":"sal-role_2015-07-27","revision":"2015-07-27","schema":"/rests/modules/sal-role?revision=2015-07-27","namespace":"urn:opendaylight:role:service","conformance-type":"import"},{"name":"openflow-provider-config_2016-05-10","revision":"2016-05-10","schema":"/rests/modules/openflow-provider-config?revision=2016-05-10","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:provider:config","conformance-type":"import"},{"name":"odl-serviceutils-upgrade_2018-07-02","revision":"2018-07-02","schema":"/rests/modules/odl-serviceutils-upgrade?revision=2018-07-02","namespace":"urn:opendaylight:serviceutils:upgrade","conformance-type":"import"},{"name":"opendaylight-match-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-match-types?revision=2013-10-26","namespace":"urn:opendaylight:model:match:types","conformance-type":"import"},{"name":"ietf-restconf-server_2024-08-14","revision":"2024-08-14","schema":"/rests/modules/ietf-restconf-server?revision=2024-08-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-server","conformance-type":"import","feature":["http-listen","https-listen"]},{"name":"reconciliation-result-state_2017-07-13","revision":"2017-07-13","schema":"/rests/modules/reconciliation-result-state?revision=2017-07-13","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:rf:state","conformance-type":"import"},{"name":"onf-extensions_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/onf-extensions?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf","conformance-type":"import"},{"name":"sal-table_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/sal-table?revision=2013-10-26","namespace":"urn:opendaylight:table:service","conformance-type":"import"},{"name":"iana-http-versions_2026-02-04","revision":"2026-02-04","schema":"/rests/modules/iana-http-versions?revision=2026-02-04","namespace":"urn:ietf:params:xml:ns:yang:iana-http-versions","conformance-type":"import"},{"name":"opendaylight-direct-statistics_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/opendaylight-direct-statistics?revision=2016-05-11","namespace":"urn:opendaylight:direct:statistics","conformance-type":"import"},{"name":"opendaylight-port-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-port-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:port","conformance-type":"import"},{"name":"sal-async-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/sal-async-config?revision=2017-06-19","namespace":"urn:opendaylight:async-config:service","conformance-type":"import"},{"name":"aaa-password-service-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-password-service-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:password:service:config","conformance-type":"import"},{"name":"ietf-yang-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-yang-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-types","conformance-type":"import"},{"name":"opendaylight-queue-statistics_2013-12-16","revision":"2013-12-16","schema":"/rests/modules/opendaylight-queue-statistics?revision=2013-12-16","namespace":"urn:opendaylight:queue:statistics","conformance-type":"import"},{"name":"sal-bundle_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/sal-bundle?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf:bundle:service","conformance-type":"import"},{"name":"ietf-restconf-subscribed-notifications_2019-11-17","revision":"2019-11-17","schema":"/rests/modules/ietf-restconf-subscribed-notifications?revision=2019-11-17","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-subscribed-notifications","conformance-type":"import"},{"name":"sal-meters-batch_2016-03-16","revision":"2016-03-16","schema":"/rests/modules/sal-meters-batch?revision=2016-03-16","namespace":"urn:opendaylight:meters:service","conformance-type":"import"},{"name":"odl-entity-owners","revision":"","schema":"/rests/modules/odl-entity-owners","namespace":"urn:opendaylight:params:xml:ns:yang:controller:entity-owners","conformance-type":"import"},{"name":"sal-experimenter-mp-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-mp-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-mp-message:service","conformance-type":"import"},{"name":"packet-processing_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/packet-processing?revision=2013-07-09","namespace":"urn:opendaylight:packet:service","conformance-type":"import"},{"name":"openflow-configuration_2014-06-30","revision":"2014-06-30","schema":"/rests/modules/openflow-configuration?revision=2014-06-30","namespace":"urn:opendaylight:openflow:config","conformance-type":"import"},{"name":"odl-srm-rpcs_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-rpcs?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:rpc","conformance-type":"import"},{"name":"ietf-netconf-acm_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-netconf-acm?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-acm","conformance-type":"import"},{"name":"iana-crypt-hash_2014-08-06","revision":"2014-08-06","schema":"/rests/modules/iana-crypt-hash?revision=2014-08-06","namespace":"urn:ietf:params:xml:ns:yang:iana-crypt-hash","conformance-type":"import","feature":["crypt-hash-sha-512","crypt-hash-sha-256","crypt-hash-md5"]},{"name":"openflow-extensible-match_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-extensible-match?revision=2015-02-25","namespace":"urn:opendaylight:openflow:oxm","conformance-type":"import"}],"module-set-id":"2"}}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:39.441698" elapsed="0.003227"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:39.441107" elapsed="0.003854"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:39.441061" elapsed="0.003924"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:39.447530" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:39.445305" elapsed="0.002270"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:39.445066" elapsed="0.002543"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:39.445047" elapsed="0.002586"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:52:39.448236" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:39.447827" elapsed="0.000436"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:39.448589" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:39.448354" elapsed="0.000292"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:39.449132" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:39.448831" elapsed="0.000329"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:39.448670" elapsed="0.000540"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:39.448334" elapsed="0.000898"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:52:39.449815" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:39.449410" elapsed="0.000431"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:39.450239" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:39.449934" elapsed="0.000367"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:39.450784" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:39.450483" elapsed="0.000327"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:39.450324" elapsed="0.000521"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:39.449914" elapsed="0.000952"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:52:39.451036" elapsed="0.000371"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:52:39.451889" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:39.451590" elapsed="0.000325"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:52:39.452085" elapsed="0.002225"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:52:39.439480" elapsed="0.014956"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:52:39.454786" elapsed="0.000048"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:52:39.454566" elapsed="0.000333"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:39.454516" elapsed="0.000419"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:52:39.464112" level="INFO">${text_normalized} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:52:39.455663" elapsed="0.008513"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:52:39.464257" elapsed="0.000069"/>
</return>
<msg time="2026-04-08T00:52:39.464584" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:52:39.410337" elapsed="0.054355"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:52:39.465178" elapsed="0.000031"/>
</return>
<msg time="2026-04-08T00:52:39.465360" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="PASS" start="2026-04-08T00:52:39.273189" elapsed="0.192199"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Json_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:39.465713" elapsed="0.000055"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:39.465473" elapsed="0.000465"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:39.465456" elapsed="0.000510"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:52:39.466001" elapsed="0.000026"/>
</return>
<arg>session=${session}</arg>
<arg>folder=${RESTCONF_MODULES_DIR}</arg>
<arg>verify=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Add arguments sensible for JSON data, return Get_Templated response text.
Optionally, verification against JSON data (may be iterated) is called.
Only subset of JSON data is verified and returned if JMES path is specified in
file ${folder}/jmespath.expr.</doc>
<status status="PASS" start="2026-04-08T00:52:39.269106" elapsed="0.197023"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:39.265274" elapsed="0.200970"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:39.265080" elapsed="0.201192"/>
</if>
<kw name="Resolve_Shard_Type_Class" owner="ClusterManagement">
<if>
<branch type="IF" condition="'${shard_type}' == 'config'">
<return>
<value>DistributedConfigDatastore</value>
<status status="PASS" start="2026-04-08T00:52:39.466877" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-08T00:52:39.466771" elapsed="0.000165"/>
</branch>
<branch type="ELSE IF" condition="'${shard_type}' == 'operational'">
<return>
<value>DistributedOperationalDatastore</value>
<status status="NOT RUN" start="2026-04-08T00:52:39.466995" elapsed="0.000012"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:52:39.466959" elapsed="0.000074"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:39.466753" elapsed="0.000301"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized shard type: ${shard_type}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:39.467217" elapsed="0.000022"/>
</kw>
<msg time="2026-04-08T00:52:39.467336" level="INFO">${type_class} = DistributedConfigDatastore</msg>
<var>${type_class}</var>
<arg>shard_type=${shard_type}</arg>
<doc>Simple lookup for class name corresponding to desired type.</doc>
<status status="PASS" start="2026-04-08T00:52:39.466504" elapsed="0.000857"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:52:39.467894" level="INFO">${cluster_index} = 2</msg>
<var>${cluster_index}</var>
<arg>${member_index}+${NODE_ROLE_INDEX_START}-1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:39.467525" elapsed="0.000395"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:39.468556" level="INFO">${uri} = jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-inventory-config,type=DistributedConfigDatastore</msg>
<var>${uri}</var>
<arg>${JOLOKIA_READ_URI}:Category=Shards,name=member-${cluster_index}-shard-${shard_name}-${shard_type},type=${type_class}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:39.468074" elapsed="0.000509"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:39.474178" level="INFO">jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-inventory-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:39.473685" elapsed="0.000543"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:39.474818" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:39.474383" elapsed="0.000479"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:52:39.493199" level="INFO">GET Request : url=http://10.30.170.131:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-inventory-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-inventory-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:52:39.493393" level="INFO">GET Response : url=http://10.30.170.131:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-inventory-config,type=DistributedConfigDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Wed, 08 Apr 2026 00:52:39 GMT', 'Expires': 'Tue, 07 Apr 2026 23:52:39 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-2-shard-inventory-config,type=DistributedConfigDatastore","type":"read"},"value":{"ReadWriteTransactionCount":0,"SnapshotIndex":22,"InMemoryJournalLogSize":1,"ReplicatedToAllIndex":22,"Leader":"member-1-shard-inventory-config","LastIndex":23,"RaftState":"Follower","LastCommittedTransactionTime":"1970-01-01 00:00:00.000","LastApplied":23,"PeerAddresses":"member-1-shard-inventory-config: pekko:\/\/opendaylight-cluster-data@10.30.170.48:2550\/user\/shardmanager-config\/member-1-shard-inventory-config, member-3-shard-inventory-config: pekko:\/\/opendaylight-cluster-data@10.30.171.110:2550\/user\/shardmanager-config\/member-3-shard-inventory-config","LastLogIndex":23,"LastLeadershipChangeTime":"2026-04-08 00:46:45.970","FollowerInitialSyncStatus":true,"FollowerInfo":[],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"291.6 μs","CurrentTerm":2,"LastTerm":2,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-inventory-config","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":0,"TxCohortCacheSize":0,"PeerVotingStates":"member-1-shard-inventory-config: true, member-3-shard-inventory-config: true","LastLogTerm":2,"StatRetrievalError":null,"CommitIndex":23,"SnapshotTerm":2,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-2-shard-inventory-config","LeadershipChangeCount":1,"InMemoryJournalDataSize":888},"timestamp":1775609559,"status":200} 
 </msg>
<msg time="2026-04-08T00:52:39.493663" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:52:39.486014" elapsed="0.007799"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:39.474930" elapsed="0.019286"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:39.494479" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:39.494261" elapsed="0.000659"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:39.474911" elapsed="0.020046"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:39.501774" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-2-shard-inventory-config,type=DistributedConfigDatastore","type":"read"},"value":{"ReadWriteTransactionCount":0,"SnapshotIndex":22,"InMemoryJournalLogSize":1,"ReplicatedToAllIndex":22,"Leader":"member-1-shard-inventory-config","LastIndex":23,"RaftState":"Follower","LastCommittedTransactionTime":"1970-01-01 00:00:00.000","LastApplied":23,"PeerAddresses":"member-1-shard-inventory-config: pekko:\/\/opendaylight-cluster-data@10.30.170.48:2550\/user\/shardmanager-config\/member-1-shard-inventory-config, member-3-shard-inventory-config: pekko:\/\/opendaylight-cluster-data@10.30.171.110:2550\/user\/shardmanager-config\/member-3-shard-inventory-config","LastLogIndex":23,"LastLeadershipChangeTime":"2026-04-08 00:46:45.970","FollowerInitialSyncStatus":true,"FollowerInfo":[],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"291.6 μs","CurrentTerm":2,"LastTerm":2,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-inventory-config","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":0,"TxCohortCacheSize":0,"PeerVotingStates":"member-1-shard-inventory-config: true, member-3-shard-inventory-config: true","LastLogTerm":2,"StatRetrievalError":null,"CommitIndex":23,"SnapshotTerm":2,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-2-shard-inventory-config","LeadershipChangeCount":1,"InMemoryJournalDataSize":888},"timestamp":1775609559,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:39.498098" elapsed="0.003890"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:39.496812" elapsed="0.005250"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:39.496785" elapsed="0.005365"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:39.506822" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:39.503500" elapsed="0.003460"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:39.502294" elapsed="0.004734"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:39.502268" elapsed="0.004825"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:52:39.508567" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:39.507786" elapsed="0.000843"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:39.509280" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:39.508795" elapsed="0.000573"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:39.510277" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:39.509737" elapsed="0.000587"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:39.509406" elapsed="0.000968"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:39.508774" elapsed="0.001636"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:52:39.511853" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:39.511022" elapsed="0.000891"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:39.512561" elapsed="0.000035"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:39.512079" elapsed="0.000568"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:39.513526" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:39.513010" elapsed="0.000563"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:39.512685" elapsed="0.000938"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:39.512059" elapsed="0.001599"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:52:39.513881" elapsed="0.000668"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:52:39.515375" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:39.514855" elapsed="0.000581"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:52:39.515720" elapsed="0.002475"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:52:39.495647" elapsed="0.022723"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:52:39.518572" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:52:39.518444" elapsed="0.000175"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:39.518424" elapsed="0.000216"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:52:39.522329" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-2-shard-inventory-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 177560...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:52:39.518814" elapsed="0.003548"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:52:39.522413" elapsed="0.000035"/>
</return>
<msg time="2026-04-08T00:52:39.522576" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-2-shard-inventory-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 177560...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:52:39.469537" elapsed="0.053067"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:52:39.522749" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:52:39.522903" level="INFO">${data_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-2-shard-inventory-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 177560...</msg>
<var>${data_text}</var>
<arg>uri=${uri}</arg>
<arg>session=${session}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-08T00:52:39.468796" elapsed="0.054134"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:52:39.523983" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-2-shard-inventory-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1775609559, 'valu...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:39.523510" elapsed="0.000502"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-08T00:52:39.524061" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:52:39.524254" level="INFO">${data_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-2-shard-inventory-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1775609559, 'valu...</msg>
<var>${data_object}</var>
<arg>${data_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-08T00:52:39.523151" elapsed="0.001130"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:52:39.524637" level="INFO">${value} = {'AbortTransactionsCount': 0, 'CommitIndex': 23, 'CommittedTransactionsCount': 0, 'CurrentTerm': 2, 'FailedReadTransactionsCount': 0, 'FailedTransactionsCount': 0, 'FollowerInfo': [], 'FollowerInitial...</msg>
<var>${value}</var>
<arg>${data_object}</arg>
<arg>value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:52:39.524436" elapsed="0.000228"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:52:39.525017" level="INFO">${raft_property} = Follower</msg>
<var>${raft_property}</var>
<arg>${value}</arg>
<arg>${property}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:52:39.524818" elapsed="0.000224"/>
</kw>
<return>
<value>${raft_property}</value>
<status status="PASS" start="2026-04-08T00:52:39.525087" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:52:39.525314" level="INFO">${raft_state} = Follower</msg>
<var>${raft_state}</var>
<arg>RaftState</arg>
<arg>${shard_name}</arg>
<arg>${shard_type}</arg>
<arg>${member_index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft property.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T00:52:39.263485" elapsed="0.261855"/>
</kw>
<return>
<value>${raft_state}</value>
<status status="PASS" start="2026-04-08T00:52:39.525398" elapsed="0.000026"/>
</return>
<msg time="2026-04-08T00:52:39.525545" level="INFO">${raft_state} = Follower</msg>
<var>${raft_state}</var>
<arg>shard_name=${shard_name}</arg>
<arg>shard_type=${ds_type}</arg>
<arg>member_index=${index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft status.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T00:52:39.262761" elapsed="0.262808"/>
</kw>
<if>
<branch type="IF" condition="'Follower' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${follower_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-08T00:52:39.525864" elapsed="0.000189"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:39.525650" elapsed="0.000442"/>
</branch>
<branch type="ELSE IF" condition="'Leader' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${leader_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:39.526275" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:39.526115" elapsed="0.000229"/>
</branch>
<branch type="ELSE IF" condition="${validate}">
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized Raft state: ${raft_state}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:39.526508" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:39.526368" elapsed="0.000190"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:39.525632" elapsed="0.000948"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T00:52:39.262593" elapsed="0.264010"/>
</iter>
<iter>
<kw name="Get_Raft_State_Of_Shard_At_Member" owner="ClusterManagement">
<kw name="Get_Raft_Property_From_Shard_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:39.529138" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:39.528817" elapsed="0.000406"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:52:39.529272" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:52:39.529419" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:52:39.528479" elapsed="0.000965"/>
</kw>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Get_As_Json_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:39.612207" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:39.611809" elapsed="0.000431"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:52:39.612991" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:52:39.612736" elapsed="0.000334">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-08T00:52:39.613229" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:52:39.612405" elapsed="0.000850"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:52:39.613802" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:52:39.613418" elapsed="0.000411"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T00:52:39.614127" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-08T00:52:39.614301" level="INFO">${template} = /rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T00:52:39.613987" elapsed="0.000340"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:39.614722" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:39.614481" elapsed="0.000284"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:39.615737" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:39.615485" elapsed="0.000296"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-08T00:52:39.616226" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-08T00:52:39.615937" elapsed="0.000315"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:39.616578" elapsed="0.000022"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:39.616778" elapsed="0.000023"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:39.616949" elapsed="0.000021"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-08T00:52:39.616445" elapsed="0.000599"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-08T00:52:39.616305" elapsed="0.000773"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-08T00:52:39.617123" elapsed="0.000035"/>
</return>
<msg time="2026-04-08T00:52:39.617303" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-08T00:52:39.615129" elapsed="0.002199"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:39.614838" elapsed="0.002522"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:39.617530" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:39.617384" elapsed="0.000201"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:39.614817" elapsed="0.002788"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:52:39.618232" level="INFO">${final_text} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:39.617744" elapsed="0.000516"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T00:52:39.618308" 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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="PASS" start="2026-04-08T00:52:39.611151" elapsed="0.007278"/>
</kw>
<msg time="2026-04-08T00:52:39.618482" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:52:39.598707" elapsed="0.019856"/>
</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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:39.630948" elapsed="0.000042"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:39.643145" elapsed="0.000062"/>
</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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:39.655288" elapsed="0.000041"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:39.656070" elapsed="0.000036"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:39.656834" elapsed="0.000036"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:39.657431" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:39.657272" elapsed="0.000219"/>
</branch>
<status status="NOT RUN" start="2026-04-08T00:52:39.657254" elapsed="0.000260"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:39.657674" elapsed="0.000022"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:39.657860" elapsed="0.000021"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:39.658046" elapsed="0.000021"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-08T00:52:39.657201" elapsed="0.000921"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-08T00:52:39.656954" elapsed="0.001226"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:39.658879" elapsed="0.000036"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-08T00:52:39.658999" elapsed="0.000048"/>
</return>
<msg time="2026-04-08T00:52:39.659247" level="INFO">${uri} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-08T00:52:39.592574" elapsed="0.066783"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:52:39.662329" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:52:39.662045" elapsed="0.000389">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-08T00:52:39.662626" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:52:39.661593" elapsed="0.001076"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:39.663199" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:39.662801" elapsed="0.000469"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:39.663899" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:39.663580" elapsed="0.000346"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:39.663308" elapsed="0.000665"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:39.662750" elapsed="0.001261"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:52:39.667149" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:52:39.664756" elapsed="0.002455"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-08T00:52:39.667291" elapsed="0.000064"/>
</return>
<msg time="2026-04-08T00:52:39.667606" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:52:39.660426" elapsed="0.007286"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:52:39.670507" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:52:39.670253" elapsed="0.000317">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-08T00:52:39.670802" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:52:39.669804" elapsed="0.001043"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-08T00:52:39.671250" elapsed="0.000080"/>
</return>
<status status="PASS" start="2026-04-08T00:52:39.670979" elapsed="0.000418"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:39.670927" elapsed="0.000510"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:39.672193" elapsed="0.000038"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:39.672931" elapsed="0.000036"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-08T00:52:39.673039" elapsed="0.000048"/>
</return>
<msg time="2026-04-08T00:52:39.676692" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:52:39.668565" elapsed="0.008236"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:39.680797" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:39.680407" elapsed="0.000490"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:39.681985" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:39.681603" elapsed="0.000479"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:52:39.698630" level="INFO">GET Request : url=http://10.30.171.110:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 path_url=/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0336bvzrfnrhc3cqywxyctca52.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:52:39.699583" level="INFO">GET Response : url=http://10.30.171.110:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Transfer-Encoding': 'chunked'} 
 body={"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","hidden-symmetric-keys","encrypted-private-keys","asymmetrically-encrypted-value-format","cms-encrypted-data-format","cleartext-private-keys","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["ssh-client-keepalives","client-ident-hostbased","client-ident-publickey","client-ident-password"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-ex... (set the log level to DEBUG or TRACE to see the full content) 
 </msg>
<msg time="2026-04-08T00:52:39.700057" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:52:39.684359" elapsed="0.015845"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:39.682270" elapsed="0.018064"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:39.700991" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:39.700434" elapsed="0.000775"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:39.682214" elapsed="0.019086"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:39.709985" level="INFO">{"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","hidden-symmetric-keys","encrypted-private-keys","asymmetrically-encrypted-value-format","cms-encrypted-data-format","cleartext-private-keys","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["ssh-client-keepalives","client-ident-hostbased","client-ident-publickey","client-ident-password"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-experimenter-types?revision=2015-10-20","namespace":"urn:opendaylight:openflowplugin:experimenter:types","conformance-type":"import"},{"name":"ietf-ip_2018-02-22","revision":"2018-02-22","schema":"/rests/modules/ietf-ip?revision=2018-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-ip","conformance-type":"import","feature":["ipv6-privacy-autoconf","ipv4-non-contiguous-netmasks"]},{"name":"ietf-tcp-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-client","conformance-type":"import","feature":["local-binding-supported","tcp-client-keepalives"]},{"name":"node-config_2014-10-15","revision":"2014-10-15","schema":"/rests/modules/node-config?revision=2014-10-15","namespace":"urn:opendaylight:module:config","conformance-type":"import"},{"name":"ietf-restconf_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf","conformance-type":"import"},{"name":"ietf-datastores_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-datastores?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-datastores","conformance-type":"import"},{"name":"ietf-yang-patch_2017-02-22","revision":"2017-02-22","schema":"/rests/modules/ietf-yang-patch?revision=2017-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-patch","conformance-type":"import"},{"name":"sal-group_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-group?revision=2013-09-18","namespace":"urn:opendaylight:group:service","conformance-type":"import"},{"name":"odl-codegen-extensions_2024-06-27","revision":"2024-06-27","schema":"/rests/modules/odl-codegen-extensions?revision=2024-06-27","namespace":"urn:opendaylight:yang:extension:codegen","conformance-type":"import"},{"name":"sal-meter_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-meter?revision=2013-09-18","namespace":"urn:opendaylight:meter:service","conformance-type":"import"},{"name":"ietf-interfaces_2018-02-20","revision":"2018-02-20","schema":"/rests/modules/ietf-interfaces?revision=2018-02-20","namespace":"urn:ietf:params:xml:ns:yang:ietf-interfaces","conformance-type":"import","feature":["pre-provisioning","if-mib","arbitrary-names"]},{"name":"opendaylight-l2-types_2013-08-27","revision":"2013-08-27","schema":"/rests/modules/opendaylight-l2-types?revision=2013-08-27","namespace":"urn:opendaylight:l2:types","conformance-type":"import"},{"name":"opendaylight-flow-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-flow-types?revision=2013-10-26","namespace":"urn:opendaylight:flow:types","conformance-type":"import"},{"name":"lldp-speaker-config_2016-05-12","revision":"2016-05-12","schema":"/rests/modules/lldp-speaker-config?revision=2016-05-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker:config","conformance-type":"import"},{"name":"aaa-cert_2015-11-26","revision":"2015-11-26","schema":"/rests/modules/aaa-cert?revision=2015-11-26","namespace":"urn:opendaylight:yang:aaa:cert","conformance-type":"import"},{"name":"openflow-action_2015-02-03","revision":"2015-02-03","schema":"/rests/modules/openflow-action?revision=2015-02-03","namespace":"urn:opendaylight:openflow:common:action","conformance-type":"import"},{"name":"openflow-approved-extensions_2016-08-02","revision":"2016-08-02","schema":"/rests/modules/openflow-approved-extensions?revision=2016-08-02","namespace":"urn:opendaylight:openflow:approved:extensions","conformance-type":"import"},{"name":"nc-notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/nc-notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netmod:notification","conformance-type":"import"},{"name":"ietf-netconf-nmda_2019-01-07","revision":"2019-01-07","schema":"/rests/modules/ietf-netconf-nmda?revision=2019-01-07","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-nmda","conformance-type":"import","feature":["with-defaults","origin"]},{"name":"ietf-tcp-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-common","conformance-type":"import","feature":["keepalives-supported"]},{"name":"network-topology_2013-10-21","revision":"2013-10-21","schema":"/rests/modules/network-topology?revision=2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:network-topology","conformance-type":"import"},{"name":"aaa-encrypt-service-config_2024-02-02","revision":"2024-02-02","schema":"/rests/modules/aaa-encrypt-service-config?revision=2024-02-02","namespace":"config:aaa:authn:encrypt:service:config","conformance-type":"import"},{"name":"openflow-instruction_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-instruction?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:instruction","conformance-type":"import"},{"name":"ietf-tls-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-client","conformance-type":"import","feature":["client-ident-x509-cert","server-auth-x509-cert"]},{"name":"opendaylight-group-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-group-statistics?revision=2013-11-11","namespace":"urn:opendaylight:group:statistics","conformance-type":"import"},{"name":"cluster-admin_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/cluster-admin?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:cluster:admin","conformance-type":"import"},{"name":"opendaylight-flow-statistics_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-flow-statistics?revision=2013-08-19","namespace":"urn:opendaylight:flow:statistics","conformance-type":"import"},{"name":"opendaylight-table-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-table-types?revision=2013-10-26","namespace":"urn:opendaylight:table:types","conformance-type":"import"},{"name":"forwarding-rules-manager-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/forwarding-rules-manager-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:forwardingrules-manager:config","conformance-type":"import"},{"name":"odl-srm-types_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-types?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:types","conformance-type":"import"},{"name":"ietf-x509-cert-to-name_2014-12-10","revision":"2014-12-10","schema":"/rests/modules/ietf-x509-cert-to-name?revision=2014-12-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-x509-cert-to-name","conformance-type":"import"},{"name":"flow-node-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-node-inventory?revision=2013-08-19","namespace":"urn:opendaylight:flow:inventory","conformance-type":"import"},{"name":"flow-errors_2013-11-16","revision":"2013-11-16","schema":"/rests/modules/flow-errors?revision=2013-11-16","namespace":"urn:opendaylight:flow:errors","conformance-type":"import"},{"name":"ietf-netconf_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:netconf:base:1.0","conformance-type":"import","feature":["xpath","url","rollback-on-error","validate","startup","candidate","confirmed-commit","writable-running"]},{"name":"iana-ssh-public-key-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-public-key-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-public-key-algs","conformance-type":"import"},{"name":"aaa-cert-mdsal_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/aaa-cert-mdsal?revision=2016-03-21","namespace":"urn:opendaylight:yang:aaa:cert:mdsal","conformance-type":"import"},{"name":"odl-device-notification_2024-02-18","revision":"2024-02-18","schema":"/rests/modules/odl-device-notification?revision=2024-02-18","namespace":"urn:opendaylight:device:notification","conformance-type":"import"},{"name":"ietf-origin_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-origin?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-origin","conformance-type":"import"},{"name":"openflow-augments_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-augments?revision=2015-02-25","namespace":"urn:opendaylight:openflow:augments","conformance-type":"import"},{"name":"iana-ssh-encryption-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-encryption-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-encryption-algs","conformance-type":"import"},{"name":"ietf-truststore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-truststore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-truststore","conformance-type":"import","feature":["inline-definitions-supported"]},{"name":"distributed-datastore-provider_2025-01-30","revision":"2025-01-30","schema":"/rests/modules/distributed-datastore-provider?revision=2025-01-30","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:distributed-datastore-provider","conformance-type":"import"},{"name":"opendaylight-group-types_2013-10-18","revision":"2013-10-18","schema":"/rests/modules/opendaylight-group-types?revision=2013-10-18","namespace":"urn:opendaylight:group:types","conformance-type":"import"},{"name":"sal-remote-augment_2023-11-03","revision":"2023-11-03","schema":"/rests/modules/sal-remote-augment?revision=2023-11-03","namespace":"urn:sal:restconf:event:subscription","conformance-type":"import"},{"name":"opendaylight-ipv6-arbitrary-bitmask-fields_2016-02-24","revision":"2016-02-24","schema":"/rests/modules/opendaylight-ipv6-arbitrary-bitmask-fields?revision=2016-02-24","namespace":"urn:opendaylight:opendaylight-ipv6-arbitrary-bitmask-fields","conformance-type":"import"},{"name":"sal-flows-batch_2016-03-14","revision":"2016-03-14","schema":"/rests/modules/sal-flows-batch?revision=2016-03-14","namespace":"urn:opendaylight:flows:service","conformance-type":"import"},{"name":"ietf-tls-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-common","conformance-type":"import","feature":["tls12","hello-params","tls13"]},{"name":"openflow-types_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-types?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:types","conformance-type":"import"},{"name":"ietf-netconf-with-defaults_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf-with-defaults?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults","conformance-type":"import"},{"name":"odl-srm-ops_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-ops?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:ops","conformance-type":"import"},{"name":"odl-general-entity_2015-09-30","revision":"2015-09-30","schema":"/rests/modules/odl-general-entity?revision=2015-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:mdsal:core:general-entity","conformance-type":"import"},{"name":"iana-ssh-key-exchange-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-key-exchange-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-key-exchange-algs","conformance-type":"import"},{"name":"node-ssl-connection-error_2019-07-23","revision":"2019-07-23","schema":"/rests/modules/node-ssl-connection-error?revision=2019-07-23","namespace":"urn:opendaylight:node-ssl-connection-error:service","conformance-type":"import"},{"name":"openflow-protocol_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-protocol?revision=2013-07-31","namespace":"urn:opendaylight:openflow:protocol","conformance-type":"import"},{"name":"ietf-udp-server_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-server?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-server","conformance-type":"import"},{"name":"ietf-keystore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-keystore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-keystore","conformance-type":"import","feature":["asymmetric-keys","inline-definitions-supported"]},{"name":"aaa_2016-12-14","revision":"2016-12-14","schema":"/rests/modules/aaa?revision=2016-12-14","namespace":"urn:opendaylight:params:xml:ns:yang:aaa","conformance-type":"import"},{"name":"aaa-cert-rpc_2015-12-15","revision":"2015-12-15","schema":"/rests/modules/aaa-cert-rpc?revision=2015-12-15","namespace":"urn:opendaylight:yang:aaa:cert:rpc","conformance-type":"import"},{"name":"system-notifications_2013-09-27","revision":"2013-09-27","schema":"/rests/modules/system-notifications?revision=2013-09-27","namespace":"urn:opendaylight:openflow:system","conformance-type":"import"},{"name":"sal-flat-batch_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/sal-flat-batch?revision=2016-03-21","namespace":"urn:opendaylight:flat-batch:service","conformance-type":"import"},{"name":"notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netconf:notification:1.0","conformance-type":"import"},{"name":"sal-remote_2014-01-14","revision":"2014-01-14","schema":"/rests/modules/sal-remote?revision=2014-01-14","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:remote","conformance-type":"import"},{"name":"yang-ext_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/yang-ext?revision=2013-07-09","namespace":"urn:opendaylight:yang:extension:yang-ext","conformance-type":"import"},{"name":"opendaylight-multipart-types_2017-01-12","revision":"2017-01-12","schema":"/rests/modules/opendaylight-multipart-types?revision=2017-01-12","namespace":"urn:opendaylight:multipart:types","conformance-type":"import"},{"name":"opendaylight-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-inventory?revision=2013-08-19","namespace":"urn:opendaylight:inventory","conformance-type":"import"},{"name":"sal-queue_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-queue?revision=2015-03-05","namespace":"urn:opendaylight:queue:service","conformance-type":"import"},{"name":"sal-groups-batch_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/sal-groups-batch?revision=2016-03-15","namespace":"urn:opendaylight:groups:service","conformance-type":"import"},{"name":"arbitrator-reconcile_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/arbitrator-reconcile?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:arbitrator-reconcile:service","conformance-type":"import"},{"name":"ietf-yang-metadata_2016-08-05","revision":"2016-08-05","schema":"/rests/modules/ietf-yang-metadata?revision=2016-08-05","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-metadata","conformance-type":"import"},{"name":"opendaylight-arbitrary-bitmask-fields_2016-01-30","revision":"2016-01-30","schema":"/rests/modules/opendaylight-arbitrary-bitmask-fields?revision=2016-01-30","namespace":"urn:opendaylight:arbitrary:bitmask:fields","conformance-type":"import"},{"name":"ietf-udp-client_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-client?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-client","conformance-type":"import","feature":["local-binding"]},{"name":"opendaylight-meter-types_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/opendaylight-meter-types?revision=2013-09-18","namespace":"urn:opendaylight:meter:types","conformance-type":"import"},{"name":"opendaylight-action-types_2013-11-12","revision":"2013-11-12","schema":"/rests/modules/opendaylight-action-types?revision=2013-11-12","namespace":"urn:opendaylight:action:types","conformance-type":"import"},{"name":"sal-role_2015-07-27","revision":"2015-07-27","schema":"/rests/modules/sal-role?revision=2015-07-27","namespace":"urn:opendaylight:role:service","conformance-type":"import"},{"name":"openflow-provider-config_2016-05-10","revision":"2016-05-10","schema":"/rests/modules/openflow-provider-config?revision=2016-05-10","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:provider:config","conformance-type":"import"},{"name":"odl-serviceutils-upgrade_2018-07-02","revision":"2018-07-02","schema":"/rests/modules/odl-serviceutils-upgrade?revision=2018-07-02","namespace":"urn:opendaylight:serviceutils:upgrade","conformance-type":"import"},{"name":"opendaylight-match-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-match-types?revision=2013-10-26","namespace":"urn:opendaylight:model:match:types","conformance-type":"import"},{"name":"ietf-restconf-server_2024-08-14","revision":"2024-08-14","schema":"/rests/modules/ietf-restconf-server?revision=2024-08-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-server","conformance-type":"import","feature":["http-listen","https-listen"]},{"name":"reconciliation-result-state_2017-07-13","revision":"2017-07-13","schema":"/rests/modules/reconciliation-result-state?revision=2017-07-13","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:rf:state","conformance-type":"import"},{"name":"onf-extensions_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/onf-extensions?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf","conformance-type":"import"},{"name":"sal-table_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/sal-table?revision=2013-10-26","namespace":"urn:opendaylight:table:service","conformance-type":"import"},{"name":"iana-http-versions_2026-02-04","revision":"2026-02-04","schema":"/rests/modules/iana-http-versions?revision=2026-02-04","namespace":"urn:ietf:params:xml:ns:yang:iana-http-versions","conformance-type":"import"},{"name":"opendaylight-direct-statistics_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/opendaylight-direct-statistics?revision=2016-05-11","namespace":"urn:opendaylight:direct:statistics","conformance-type":"import"},{"name":"opendaylight-port-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-port-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:port","conformance-type":"import"},{"name":"sal-async-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/sal-async-config?revision=2017-06-19","namespace":"urn:opendaylight:async-config:service","conformance-type":"import"},{"name":"aaa-password-service-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-password-service-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:password:service:config","conformance-type":"import"},{"name":"ietf-yang-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-yang-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-types","conformance-type":"import"},{"name":"opendaylight-queue-statistics_2013-12-16","revision":"2013-12-16","schema":"/rests/modules/opendaylight-queue-statistics?revision=2013-12-16","namespace":"urn:opendaylight:queue:statistics","conformance-type":"import"},{"name":"sal-bundle_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/sal-bundle?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf:bundle:service","conformance-type":"import"},{"name":"ietf-restconf-subscribed-notifications_2019-11-17","revision":"2019-11-17","schema":"/rests/modules/ietf-restconf-subscribed-notifications?revision=2019-11-17","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-subscribed-notifications","conformance-type":"import"},{"name":"sal-meters-batch_2016-03-16","revision":"2016-03-16","schema":"/rests/modules/sal-meters-batch?revision=2016-03-16","namespace":"urn:opendaylight:meters:service","conformance-type":"import"},{"name":"odl-entity-owners","revision":"","schema":"/rests/modules/odl-entity-owners","namespace":"urn:opendaylight:params:xml:ns:yang:controller:entity-owners","conformance-type":"import"},{"name":"sal-experimenter-mp-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-mp-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-mp-message:service","conformance-type":"import"},{"name":"packet-processing_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/packet-processing?revision=2013-07-09","namespace":"urn:opendaylight:packet:service","conformance-type":"import"},{"name":"openflow-configuration_2014-06-30","revision":"2014-06-30","schema":"/rests/modules/openflow-configuration?revision=2014-06-30","namespace":"urn:opendaylight:openflow:config","conformance-type":"import"},{"name":"odl-srm-rpcs_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-rpcs?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:rpc","conformance-type":"import"},{"name":"ietf-netconf-acm_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-netconf-acm?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-acm","conformance-type":"import"},{"name":"iana-crypt-hash_2014-08-06","revision":"2014-08-06","schema":"/rests/modules/iana-crypt-hash?revision=2014-08-06","namespace":"urn:ietf:params:xml:ns:yang:iana-crypt-hash","conformance-type":"import","feature":["crypt-hash-sha-512","crypt-hash-sha-256","crypt-hash-md5"]},{"name":"openflow-extensible-match_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-extensible-match?revision=2015-02-25","namespace":"urn:opendaylight:openflow:oxm","conformance-type":"import"}],"module-set-id":"2"}}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:39.705160" elapsed="0.005200"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:39.704652" elapsed="0.005743"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:39.704604" elapsed="0.005817"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:39.712905" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:39.710729" elapsed="0.002222"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:39.710502" elapsed="0.002483"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:39.710484" elapsed="0.002526"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:52:39.713615" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:39.713221" elapsed="0.000422"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:39.713976" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:39.713736" elapsed="0.000298"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:39.714574" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:39.714265" elapsed="0.000335"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:39.714057" elapsed="0.000579"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:39.713716" elapsed="0.000942"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:52:39.715224" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:39.714839" elapsed="0.000412"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:39.715577" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:39.715342" elapsed="0.000293"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:39.716113" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:39.715817" elapsed="0.000322"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:39.715658" elapsed="0.000534"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:39.715323" elapsed="0.000891"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:52:39.716419" elapsed="0.000352"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:52:39.717274" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:39.716956" elapsed="0.000344"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:52:39.717474" elapsed="0.002176"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:52:39.702964" elapsed="0.016815"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:52:39.720133" elapsed="0.000067"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:52:39.719912" elapsed="0.000515"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:39.719859" elapsed="0.000604"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:52:39.729571" level="INFO">${text_normalized} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:52:39.721199" elapsed="0.008423"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:52:39.729702" elapsed="0.000070"/>
</return>
<msg time="2026-04-08T00:52:39.730036" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:52:39.677551" elapsed="0.052595"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:52:39.730705" elapsed="0.000031"/>
</return>
<msg time="2026-04-08T00:52:39.730884" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="PASS" start="2026-04-08T00:52:39.537671" elapsed="0.193241"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Json_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:39.731262" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:39.730997" elapsed="0.000462"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:39.730979" elapsed="0.000508"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:52:39.731521" elapsed="0.000027"/>
</return>
<arg>session=${session}</arg>
<arg>folder=${RESTCONF_MODULES_DIR}</arg>
<arg>verify=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Add arguments sensible for JSON data, return Get_Templated response text.
Optionally, verification against JSON data (may be iterated) is called.
Only subset of JSON data is verified and returned if JMES path is specified in
file ${folder}/jmespath.expr.</doc>
<status status="PASS" start="2026-04-08T00:52:39.533486" elapsed="0.198162"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:39.529664" elapsed="0.202028"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:39.529494" elapsed="0.202222"/>
</if>
<kw name="Resolve_Shard_Type_Class" owner="ClusterManagement">
<if>
<branch type="IF" condition="'${shard_type}' == 'config'">
<return>
<value>DistributedConfigDatastore</value>
<status status="PASS" start="2026-04-08T00:52:39.732354" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-08T00:52:39.732242" elapsed="0.000218"/>
</branch>
<branch type="ELSE IF" condition="'${shard_type}' == 'operational'">
<return>
<value>DistributedOperationalDatastore</value>
<status status="NOT RUN" start="2026-04-08T00:52:39.732529" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:52:39.732489" elapsed="0.000079"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:39.732223" elapsed="0.000367"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized shard type: ${shard_type}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:39.732737" elapsed="0.000022"/>
</kw>
<msg time="2026-04-08T00:52:39.732855" level="INFO">${type_class} = DistributedConfigDatastore</msg>
<var>${type_class}</var>
<arg>shard_type=${shard_type}</arg>
<doc>Simple lookup for class name corresponding to desired type.</doc>
<status status="PASS" start="2026-04-08T00:52:39.731942" elapsed="0.000939"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:52:39.733454" level="INFO">${cluster_index} = 3</msg>
<var>${cluster_index}</var>
<arg>${member_index}+${NODE_ROLE_INDEX_START}-1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:39.733047" elapsed="0.000434"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:39.734095" level="INFO">${uri} = jolokia/read/org.opendaylight.controller:Category=Shards,name=member-3-shard-inventory-config,type=DistributedConfigDatastore</msg>
<var>${uri}</var>
<arg>${JOLOKIA_READ_URI}:Category=Shards,name=member-${cluster_index}-shard-${shard_name}-${shard_type},type=${type_class}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:39.733635" elapsed="0.000488"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:39.739915" level="INFO">jolokia/read/org.opendaylight.controller:Category=Shards,name=member-3-shard-inventory-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:39.739474" elapsed="0.000488"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:39.740609" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:39.740122" elapsed="0.000533"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:52:39.757792" level="INFO">GET Request : url=http://10.30.171.110:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-3-shard-inventory-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-3-shard-inventory-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:52:39.758136" level="INFO">GET Response : url=http://10.30.171.110:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-3-shard-inventory-config,type=DistributedConfigDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Wed, 08 Apr 2026 00:52:39 GMT', 'Expires': 'Tue, 07 Apr 2026 23:52:39 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-3-shard-inventory-config,type=DistributedConfigDatastore","type":"read"},"value":{"ReadWriteTransactionCount":0,"SnapshotIndex":22,"InMemoryJournalLogSize":1,"ReplicatedToAllIndex":22,"Leader":"member-1-shard-inventory-config","LastIndex":23,"RaftState":"Follower","LastApplied":23,"LastCommittedTransactionTime":"1970-01-01 00:00:00.000","PeerAddresses":"member-1-shard-inventory-config: pekko:\/\/opendaylight-cluster-data@10.30.170.48:2550\/user\/shardmanager-config\/member-1-shard-inventory-config, member-2-shard-inventory-config: pekko:\/\/opendaylight-cluster-data@10.30.170.131:2550\/user\/shardmanager-config\/member-2-shard-inventory-config","LastLogIndex":23,"LastLeadershipChangeTime":"2026-04-08 00:46:45.969","FollowerInitialSyncStatus":true,"FollowerInfo":[],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"222.9 μs","CurrentTerm":2,"LastTerm":2,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-inventory-config","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":0,"TxCohortCacheSize":0,"PeerVotingStates":"member-1-shard-inventory-config: true, member-2-shard-inventory-config: true","LastLogTerm":2,"StatRetrievalError":null,"CommitIndex":23,"SnapshotTerm":2,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-3-shard-inventory-config","LeadershipChangeCount":1,"InMemoryJournalDataSize":888},"timestamp":1775609559,"status":200} 
 </msg>
<msg time="2026-04-08T00:52:39.759092" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:52:39.751525" elapsed="0.007866"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:39.740723" elapsed="0.019290"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:39.760499" elapsed="0.000056"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:39.760086" elapsed="0.001161"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:39.740704" elapsed="0.020581"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:39.767857" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-3-shard-inventory-config,type=DistributedConfigDatastore","type":"read"},"value":{"ReadWriteTransactionCount":0,"SnapshotIndex":22,"InMemoryJournalLogSize":1,"ReplicatedToAllIndex":22,"Leader":"member-1-shard-inventory-config","LastIndex":23,"RaftState":"Follower","LastApplied":23,"LastCommittedTransactionTime":"1970-01-01 00:00:00.000","PeerAddresses":"member-1-shard-inventory-config: pekko:\/\/opendaylight-cluster-data@10.30.170.48:2550\/user\/shardmanager-config\/member-1-shard-inventory-config, member-2-shard-inventory-config: pekko:\/\/opendaylight-cluster-data@10.30.170.131:2550\/user\/shardmanager-config\/member-2-shard-inventory-config","LastLogIndex":23,"LastLeadershipChangeTime":"2026-04-08 00:46:45.969","FollowerInitialSyncStatus":true,"FollowerInfo":[],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"222.9 μs","CurrentTerm":2,"LastTerm":2,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-inventory-config","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":0,"TxCohortCacheSize":0,"PeerVotingStates":"member-1-shard-inventory-config: true, member-2-shard-inventory-config: true","LastLogTerm":2,"StatRetrievalError":null,"CommitIndex":23,"SnapshotTerm":2,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-3-shard-inventory-config","LeadershipChangeCount":1,"InMemoryJournalDataSize":888},"timestamp":1775609559,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:39.764303" elapsed="0.003767"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:39.763079" elapsed="0.005065"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:39.763051" elapsed="0.005176"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:39.771898" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:39.769532" elapsed="0.002466"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:39.768350" elapsed="0.003697"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:39.768321" elapsed="0.003770"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:52:39.773577" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:39.772726" elapsed="0.000915"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:39.774381" elapsed="0.000038"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:39.773812" elapsed="0.000660"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:39.775388" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:39.774847" elapsed="0.000591"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:39.774511" elapsed="0.000978"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:39.773790" elapsed="0.001736"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:52:39.776972" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:39.776146" elapsed="0.000888"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:39.777698" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:39.777222" elapsed="0.000564"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:39.778751" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:39.778164" elapsed="0.000634"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:39.777825" elapsed="0.001024"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:39.777201" elapsed="0.001685"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:52:39.779108" elapsed="0.000647"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:52:39.780577" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:39.780062" elapsed="0.000577"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:52:39.780961" elapsed="0.002526"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:52:39.761948" elapsed="0.021702"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:52:39.783852" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:52:39.783724" elapsed="0.000173"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:39.783704" elapsed="0.000215"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:52:39.787688" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-3-shard-inventory-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 177560...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:52:39.784064" elapsed="0.003654"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:52:39.787769" elapsed="0.000034"/>
</return>
<msg time="2026-04-08T00:52:39.787931" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-3-shard-inventory-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 177560...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:52:39.735316" elapsed="0.052641"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:52:39.788052" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:52:39.788223" level="INFO">${data_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-3-shard-inventory-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 177560...</msg>
<var>${data_text}</var>
<arg>uri=${uri}</arg>
<arg>session=${session}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-08T00:52:39.734361" elapsed="0.053888"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:52:39.789343" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-3-shard-inventory-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1775609559, 'valu...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:39.788823" elapsed="0.000549"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-08T00:52:39.789422" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:52:39.789596" level="INFO">${data_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-3-shard-inventory-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1775609559, 'valu...</msg>
<var>${data_object}</var>
<arg>${data_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-08T00:52:39.788475" elapsed="0.001148"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:52:39.789980" level="INFO">${value} = {'AbortTransactionsCount': 0, 'CommitIndex': 23, 'CommittedTransactionsCount': 0, 'CurrentTerm': 2, 'FailedReadTransactionsCount': 0, 'FailedTransactionsCount': 0, 'FollowerInfo': [], 'FollowerInitial...</msg>
<var>${value}</var>
<arg>${data_object}</arg>
<arg>value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:52:39.789779" elapsed="0.000228"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:52:39.790466" level="INFO">${raft_property} = Follower</msg>
<var>${raft_property}</var>
<arg>${value}</arg>
<arg>${property}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:52:39.790163" elapsed="0.000328"/>
</kw>
<return>
<value>${raft_property}</value>
<status status="PASS" start="2026-04-08T00:52:39.790538" elapsed="0.000027"/>
</return>
<msg time="2026-04-08T00:52:39.790687" level="INFO">${raft_state} = Follower</msg>
<var>${raft_state}</var>
<arg>RaftState</arg>
<arg>${shard_name}</arg>
<arg>${shard_type}</arg>
<arg>${member_index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft property.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T00:52:39.527663" elapsed="0.263047"/>
</kw>
<return>
<value>${raft_state}</value>
<status status="PASS" start="2026-04-08T00:52:39.790768" elapsed="0.000025"/>
</return>
<msg time="2026-04-08T00:52:39.790912" level="INFO">${raft_state} = Follower</msg>
<var>${raft_state}</var>
<arg>shard_name=${shard_name}</arg>
<arg>shard_type=${ds_type}</arg>
<arg>member_index=${index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft status.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T00:52:39.526935" elapsed="0.264001"/>
</kw>
<if>
<branch type="IF" condition="'Follower' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${follower_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-08T00:52:39.791248" elapsed="0.000192"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:39.791015" elapsed="0.000463"/>
</branch>
<branch type="ELSE IF" condition="'Leader' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${leader_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:39.791646" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:39.791503" elapsed="0.000196"/>
</branch>
<branch type="ELSE IF" condition="${validate}">
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized Raft state: ${raft_state}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:39.791864" elapsed="0.000019"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:39.791723" elapsed="0.000190"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:39.790998" elapsed="0.000938"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T00:52:39.526769" elapsed="0.265191"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-08T00:52:38.951959" elapsed="0.840037"/>
</for>
<return>
<value>${leader_list}</value>
<value>${follower_list}</value>
<status status="PASS" start="2026-04-08T00:52:39.792039" elapsed="0.000026"/>
</return>
<msg time="2026-04-08T00:52:39.792256" level="INFO">${leader_list} = [1]</msg>
<msg time="2026-04-08T00:52:39.792301" level="INFO">${follower_list} = [2, 3]</msg>
<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="PASS" start="2026-04-08T00:52:38.947947" elapsed="0.844378"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T00:52:39.792768" level="INFO">Length is 1.</msg>
<msg time="2026-04-08T00:52:39.792842" level="INFO">${leader_count} = 1</msg>
<var>${leader_count}</var>
<arg>${leader_list}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T00:52:39.792500" elapsed="0.000365"/>
</kw>
<if>
<branch type="IF" condition="${leader_count} &lt; 1">
<kw name="Fail" owner="BuiltIn">
<arg>No leader found.</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:39.793187" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:39.792932" elapsed="0.000311"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:39.792915" elapsed="0.000351"/>
</if>
<kw name="Length Should Be" owner="BuiltIn">
<msg time="2026-04-08T00:52:39.795244" level="INFO">Length is 1.</msg>
<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="PASS" start="2026-04-08T00:52:39.793400" elapsed="0.001890"/>
</kw>
<kw name="Get From List" owner="Collections">
<msg time="2026-04-08T00:52:39.795673" level="INFO">${leader} = 1</msg>
<var>${leader}</var>
<arg>${leader_list}</arg>
<arg>0</arg>
<doc>Returns the value specified with an ``index`` from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:52:39.795489" elapsed="0.000210"/>
</kw>
<return>
<value>${leader}</value>
<value>${follower_list}</value>
<status status="PASS" start="2026-04-08T00:52:39.795746" elapsed="0.000029"/>
</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="PASS" start="2026-04-08T00:52:38.945438" elapsed="0.850462"/>
</kw>
<var name="${shard_name}">inventory</var>
<status status="PASS" start="2026-04-08T00:52:38.945165" elapsed="0.850783"/>
</iter>
<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-04-08T00:52:39.800559" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:52:39.800150" elapsed="0.000436"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:52:39.801045" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:52:39.800744" elapsed="0.000326"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:52:39.801195" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:52:39.801352" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:52:39.799776" elapsed="0.001601"/>
</kw>
<kw name="Sort List" owner="Collections">
<arg>${index_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="PASS" start="2026-04-08T00:52:39.801528" elapsed="0.000151"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:52:39.802181" level="INFO">${ds_type} = config</msg>
<var>${ds_type}</var>
<arg>'${shard_type}' != 'config'</arg>
<arg>operational</arg>
<arg>config</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:52:39.801836" elapsed="0.000373"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:52:39.802603" level="INFO">${leader_list} = []</msg>
<var>${leader_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:52:39.802366" elapsed="0.000262"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:52:39.803008" level="INFO">${follower_list} = []</msg>
<var>${follower_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:52:39.802773" elapsed="0.000260"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_Raft_State_Of_Shard_At_Member" owner="ClusterManagement">
<kw name="Get_Raft_Property_From_Shard_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:39.805498" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:39.805158" elapsed="0.000368"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:52:39.805573" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:52:39.805722" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:52:39.804800" elapsed="0.000947"/>
</kw>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Get_As_Json_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:39.888340" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:39.887929" elapsed="0.000444"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:52:39.889136" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:52:39.888876" elapsed="0.000358">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-08T00:52:39.889328" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:52:39.888543" elapsed="0.000810"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:52:39.889900" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:52:39.889519" elapsed="0.000408"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T00:52:39.890280" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-08T00:52:39.890439" level="INFO">${template} = /rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T00:52:39.890121" elapsed="0.000343"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:39.890864" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:39.890619" elapsed="0.000346"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:39.891944" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:39.891688" elapsed="0.000300"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-08T00:52:39.892444" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-08T00:52:39.892155" elapsed="0.000315"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:39.892799" elapsed="0.000022"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:39.892999" elapsed="0.000024"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:39.893192" elapsed="0.000023"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-08T00:52:39.892666" elapsed="0.000586"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-08T00:52:39.892523" elapsed="0.000761"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-08T00:52:39.893331" elapsed="0.000033"/>
</return>
<msg time="2026-04-08T00:52:39.893496" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-08T00:52:39.891367" elapsed="0.002155"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:39.891045" elapsed="0.002509"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:39.893724" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:39.893578" elapsed="0.000201"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:39.891021" elapsed="0.002778"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:52:39.894437" level="INFO">${final_text} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:39.893939" elapsed="0.000526"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T00:52:39.894513" 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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="PASS" start="2026-04-08T00:52:39.887313" elapsed="0.007324"/>
</kw>
<msg time="2026-04-08T00:52:39.894689" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:52:39.874857" elapsed="0.019915"/>
</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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:39.906894" elapsed="0.000042"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:39.918828" elapsed="0.000041"/>
</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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:39.930735" elapsed="0.000043"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:39.931516" elapsed="0.000037"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:39.932276" elapsed="0.000036"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:39.932833" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:39.932687" elapsed="0.000239"/>
</branch>
<status status="NOT RUN" start="2026-04-08T00:52:39.932671" elapsed="0.000281"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:39.933114" elapsed="0.000022"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:39.933319" elapsed="0.000022"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:39.933504" elapsed="0.000022"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-08T00:52:39.932621" elapsed="0.000959"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-08T00:52:39.932396" elapsed="0.001225"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:39.934336" elapsed="0.000036"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-08T00:52:39.934473" elapsed="0.000049"/>
</return>
<msg time="2026-04-08T00:52:39.934702" level="INFO">${uri} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-08T00:52:39.868911" elapsed="0.065900"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:52:39.937652" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:52:39.937398" elapsed="0.000322">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-08T00:52:39.937909" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:52:39.936934" elapsed="0.001021"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:39.938531" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:39.938088" elapsed="0.000513"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:39.939224" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:39.938913" elapsed="0.000337"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:39.938640" elapsed="0.000658"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:39.938036" elapsed="0.001300"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:52:39.942461" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:52:39.940101" elapsed="0.002428"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-08T00:52:39.942608" elapsed="0.000063"/>
</return>
<msg time="2026-04-08T00:52:39.942920" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:52:39.935804" elapsed="0.007220"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:52:39.945916" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:52:39.945629" elapsed="0.000352">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-08T00:52:39.946274" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:52:39.945085" elapsed="0.001236"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-08T00:52:39.946738" elapsed="0.000078"/>
</return>
<status status="PASS" start="2026-04-08T00:52:39.946452" elapsed="0.000433"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:39.946401" elapsed="0.000522"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:39.947652" elapsed="0.000037"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:39.948405" elapsed="0.000071"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-08T00:52:39.948555" elapsed="0.000050"/>
</return>
<msg time="2026-04-08T00:52:39.951051" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:52:39.943825" elapsed="0.007337"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:39.955025" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:39.954604" elapsed="0.000525"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:39.956238" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:39.955837" elapsed="0.000498"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:52:39.966854" level="INFO">GET Request : url=http://10.30.170.48:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 path_url=/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01jewze00gqgu8yuon50tdwq65226.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:52:39.967499" level="INFO">GET Response : url=http://10.30.170.48:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Transfer-Encoding': 'chunked'} 
 body={"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","hidden-symmetric-keys","encrypted-private-keys","asymmetrically-encrypted-value-format","cms-encrypted-data-format","cleartext-private-keys","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["ssh-client-keepalives","client-ident-hostbased","client-ident-publickey","client-ident-password"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-ex... (set the log level to DEBUG or TRACE to see the full content) 
 </msg>
<msg time="2026-04-08T00:52:39.967774" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:52:39.958643" elapsed="0.009168"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:39.956463" elapsed="0.011426"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:39.968337" elapsed="0.000034"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:39.967952" elapsed="0.000491"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:39.956411" elapsed="0.012083"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:39.974529" level="INFO">{"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","hidden-symmetric-keys","encrypted-private-keys","asymmetrically-encrypted-value-format","cms-encrypted-data-format","cleartext-private-keys","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["ssh-client-keepalives","client-ident-hostbased","client-ident-publickey","client-ident-password"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-experimenter-types?revision=2015-10-20","namespace":"urn:opendaylight:openflowplugin:experimenter:types","conformance-type":"import"},{"name":"ietf-ip_2018-02-22","revision":"2018-02-22","schema":"/rests/modules/ietf-ip?revision=2018-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-ip","conformance-type":"import","feature":["ipv6-privacy-autoconf","ipv4-non-contiguous-netmasks"]},{"name":"ietf-tcp-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-client","conformance-type":"import","feature":["local-binding-supported","tcp-client-keepalives"]},{"name":"node-config_2014-10-15","revision":"2014-10-15","schema":"/rests/modules/node-config?revision=2014-10-15","namespace":"urn:opendaylight:module:config","conformance-type":"import"},{"name":"ietf-restconf_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf","conformance-type":"import"},{"name":"ietf-datastores_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-datastores?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-datastores","conformance-type":"import"},{"name":"ietf-yang-patch_2017-02-22","revision":"2017-02-22","schema":"/rests/modules/ietf-yang-patch?revision=2017-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-patch","conformance-type":"import"},{"name":"sal-group_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-group?revision=2013-09-18","namespace":"urn:opendaylight:group:service","conformance-type":"import"},{"name":"odl-codegen-extensions_2024-06-27","revision":"2024-06-27","schema":"/rests/modules/odl-codegen-extensions?revision=2024-06-27","namespace":"urn:opendaylight:yang:extension:codegen","conformance-type":"import"},{"name":"sal-meter_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-meter?revision=2013-09-18","namespace":"urn:opendaylight:meter:service","conformance-type":"import"},{"name":"ietf-interfaces_2018-02-20","revision":"2018-02-20","schema":"/rests/modules/ietf-interfaces?revision=2018-02-20","namespace":"urn:ietf:params:xml:ns:yang:ietf-interfaces","conformance-type":"import","feature":["pre-provisioning","if-mib","arbitrary-names"]},{"name":"opendaylight-l2-types_2013-08-27","revision":"2013-08-27","schema":"/rests/modules/opendaylight-l2-types?revision=2013-08-27","namespace":"urn:opendaylight:l2:types","conformance-type":"import"},{"name":"opendaylight-flow-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-flow-types?revision=2013-10-26","namespace":"urn:opendaylight:flow:types","conformance-type":"import"},{"name":"lldp-speaker-config_2016-05-12","revision":"2016-05-12","schema":"/rests/modules/lldp-speaker-config?revision=2016-05-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker:config","conformance-type":"import"},{"name":"aaa-cert_2015-11-26","revision":"2015-11-26","schema":"/rests/modules/aaa-cert?revision=2015-11-26","namespace":"urn:opendaylight:yang:aaa:cert","conformance-type":"import"},{"name":"openflow-action_2015-02-03","revision":"2015-02-03","schema":"/rests/modules/openflow-action?revision=2015-02-03","namespace":"urn:opendaylight:openflow:common:action","conformance-type":"import"},{"name":"openflow-approved-extensions_2016-08-02","revision":"2016-08-02","schema":"/rests/modules/openflow-approved-extensions?revision=2016-08-02","namespace":"urn:opendaylight:openflow:approved:extensions","conformance-type":"import"},{"name":"nc-notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/nc-notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netmod:notification","conformance-type":"import"},{"name":"ietf-netconf-nmda_2019-01-07","revision":"2019-01-07","schema":"/rests/modules/ietf-netconf-nmda?revision=2019-01-07","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-nmda","conformance-type":"import","feature":["with-defaults","origin"]},{"name":"ietf-tcp-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-common","conformance-type":"import","feature":["keepalives-supported"]},{"name":"network-topology_2013-10-21","revision":"2013-10-21","schema":"/rests/modules/network-topology?revision=2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:network-topology","conformance-type":"import"},{"name":"aaa-encrypt-service-config_2024-02-02","revision":"2024-02-02","schema":"/rests/modules/aaa-encrypt-service-config?revision=2024-02-02","namespace":"config:aaa:authn:encrypt:service:config","conformance-type":"import"},{"name":"openflow-instruction_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-instruction?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:instruction","conformance-type":"import"},{"name":"ietf-tls-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-client","conformance-type":"import","feature":["client-ident-x509-cert","server-auth-x509-cert"]},{"name":"opendaylight-group-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-group-statistics?revision=2013-11-11","namespace":"urn:opendaylight:group:statistics","conformance-type":"import"},{"name":"cluster-admin_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/cluster-admin?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:cluster:admin","conformance-type":"import"},{"name":"opendaylight-flow-statistics_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-flow-statistics?revision=2013-08-19","namespace":"urn:opendaylight:flow:statistics","conformance-type":"import"},{"name":"opendaylight-table-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-table-types?revision=2013-10-26","namespace":"urn:opendaylight:table:types","conformance-type":"import"},{"name":"forwarding-rules-manager-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/forwarding-rules-manager-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:forwardingrules-manager:config","conformance-type":"import"},{"name":"odl-srm-types_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-types?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:types","conformance-type":"import"},{"name":"ietf-x509-cert-to-name_2014-12-10","revision":"2014-12-10","schema":"/rests/modules/ietf-x509-cert-to-name?revision=2014-12-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-x509-cert-to-name","conformance-type":"import"},{"name":"flow-node-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-node-inventory?revision=2013-08-19","namespace":"urn:opendaylight:flow:inventory","conformance-type":"import"},{"name":"flow-errors_2013-11-16","revision":"2013-11-16","schema":"/rests/modules/flow-errors?revision=2013-11-16","namespace":"urn:opendaylight:flow:errors","conformance-type":"import"},{"name":"ietf-netconf_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:netconf:base:1.0","conformance-type":"import","feature":["xpath","url","rollback-on-error","validate","startup","candidate","confirmed-commit","writable-running"]},{"name":"iana-ssh-public-key-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-public-key-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-public-key-algs","conformance-type":"import"},{"name":"aaa-cert-mdsal_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/aaa-cert-mdsal?revision=2016-03-21","namespace":"urn:opendaylight:yang:aaa:cert:mdsal","conformance-type":"import"},{"name":"odl-device-notification_2024-02-18","revision":"2024-02-18","schema":"/rests/modules/odl-device-notification?revision=2024-02-18","namespace":"urn:opendaylight:device:notification","conformance-type":"import"},{"name":"ietf-origin_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-origin?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-origin","conformance-type":"import"},{"name":"openflow-augments_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-augments?revision=2015-02-25","namespace":"urn:opendaylight:openflow:augments","conformance-type":"import"},{"name":"iana-ssh-encryption-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-encryption-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-encryption-algs","conformance-type":"import"},{"name":"ietf-truststore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-truststore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-truststore","conformance-type":"import","feature":["inline-definitions-supported"]},{"name":"distributed-datastore-provider_2025-01-30","revision":"2025-01-30","schema":"/rests/modules/distributed-datastore-provider?revision=2025-01-30","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:distributed-datastore-provider","conformance-type":"import"},{"name":"opendaylight-group-types_2013-10-18","revision":"2013-10-18","schema":"/rests/modules/opendaylight-group-types?revision=2013-10-18","namespace":"urn:opendaylight:group:types","conformance-type":"import"},{"name":"sal-remote-augment_2023-11-03","revision":"2023-11-03","schema":"/rests/modules/sal-remote-augment?revision=2023-11-03","namespace":"urn:sal:restconf:event:subscription","conformance-type":"import"},{"name":"opendaylight-ipv6-arbitrary-bitmask-fields_2016-02-24","revision":"2016-02-24","schema":"/rests/modules/opendaylight-ipv6-arbitrary-bitmask-fields?revision=2016-02-24","namespace":"urn:opendaylight:opendaylight-ipv6-arbitrary-bitmask-fields","conformance-type":"import"},{"name":"sal-flows-batch_2016-03-14","revision":"2016-03-14","schema":"/rests/modules/sal-flows-batch?revision=2016-03-14","namespace":"urn:opendaylight:flows:service","conformance-type":"import"},{"name":"ietf-tls-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-common","conformance-type":"import","feature":["tls12","hello-params","tls13"]},{"name":"openflow-types_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-types?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:types","conformance-type":"import"},{"name":"ietf-netconf-with-defaults_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf-with-defaults?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults","conformance-type":"import"},{"name":"odl-srm-ops_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-ops?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:ops","conformance-type":"import"},{"name":"odl-general-entity_2015-09-30","revision":"2015-09-30","schema":"/rests/modules/odl-general-entity?revision=2015-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:mdsal:core:general-entity","conformance-type":"import"},{"name":"iana-ssh-key-exchange-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-key-exchange-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-key-exchange-algs","conformance-type":"import"},{"name":"node-ssl-connection-error_2019-07-23","revision":"2019-07-23","schema":"/rests/modules/node-ssl-connection-error?revision=2019-07-23","namespace":"urn:opendaylight:node-ssl-connection-error:service","conformance-type":"import"},{"name":"openflow-protocol_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-protocol?revision=2013-07-31","namespace":"urn:opendaylight:openflow:protocol","conformance-type":"import"},{"name":"ietf-udp-server_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-server?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-server","conformance-type":"import"},{"name":"ietf-keystore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-keystore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-keystore","conformance-type":"import","feature":["asymmetric-keys","inline-definitions-supported"]},{"name":"aaa_2016-12-14","revision":"2016-12-14","schema":"/rests/modules/aaa?revision=2016-12-14","namespace":"urn:opendaylight:params:xml:ns:yang:aaa","conformance-type":"import"},{"name":"aaa-cert-rpc_2015-12-15","revision":"2015-12-15","schema":"/rests/modules/aaa-cert-rpc?revision=2015-12-15","namespace":"urn:opendaylight:yang:aaa:cert:rpc","conformance-type":"import"},{"name":"system-notifications_2013-09-27","revision":"2013-09-27","schema":"/rests/modules/system-notifications?revision=2013-09-27","namespace":"urn:opendaylight:openflow:system","conformance-type":"import"},{"name":"sal-flat-batch_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/sal-flat-batch?revision=2016-03-21","namespace":"urn:opendaylight:flat-batch:service","conformance-type":"import"},{"name":"notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netconf:notification:1.0","conformance-type":"import"},{"name":"sal-remote_2014-01-14","revision":"2014-01-14","schema":"/rests/modules/sal-remote?revision=2014-01-14","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:remote","conformance-type":"import"},{"name":"yang-ext_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/yang-ext?revision=2013-07-09","namespace":"urn:opendaylight:yang:extension:yang-ext","conformance-type":"import"},{"name":"opendaylight-multipart-types_2017-01-12","revision":"2017-01-12","schema":"/rests/modules/opendaylight-multipart-types?revision=2017-01-12","namespace":"urn:opendaylight:multipart:types","conformance-type":"import"},{"name":"opendaylight-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-inventory?revision=2013-08-19","namespace":"urn:opendaylight:inventory","conformance-type":"import"},{"name":"sal-queue_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-queue?revision=2015-03-05","namespace":"urn:opendaylight:queue:service","conformance-type":"import"},{"name":"sal-groups-batch_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/sal-groups-batch?revision=2016-03-15","namespace":"urn:opendaylight:groups:service","conformance-type":"import"},{"name":"arbitrator-reconcile_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/arbitrator-reconcile?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:arbitrator-reconcile:service","conformance-type":"import"},{"name":"ietf-yang-metadata_2016-08-05","revision":"2016-08-05","schema":"/rests/modules/ietf-yang-metadata?revision=2016-08-05","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-metadata","conformance-type":"import"},{"name":"opendaylight-arbitrary-bitmask-fields_2016-01-30","revision":"2016-01-30","schema":"/rests/modules/opendaylight-arbitrary-bitmask-fields?revision=2016-01-30","namespace":"urn:opendaylight:arbitrary:bitmask:fields","conformance-type":"import"},{"name":"ietf-udp-client_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-client?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-client","conformance-type":"import","feature":["local-binding"]},{"name":"opendaylight-meter-types_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/opendaylight-meter-types?revision=2013-09-18","namespace":"urn:opendaylight:meter:types","conformance-type":"import"},{"name":"opendaylight-action-types_2013-11-12","revision":"2013-11-12","schema":"/rests/modules/opendaylight-action-types?revision=2013-11-12","namespace":"urn:opendaylight:action:types","conformance-type":"import"},{"name":"sal-role_2015-07-27","revision":"2015-07-27","schema":"/rests/modules/sal-role?revision=2015-07-27","namespace":"urn:opendaylight:role:service","conformance-type":"import"},{"name":"openflow-provider-config_2016-05-10","revision":"2016-05-10","schema":"/rests/modules/openflow-provider-config?revision=2016-05-10","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:provider:config","conformance-type":"import"},{"name":"odl-serviceutils-upgrade_2018-07-02","revision":"2018-07-02","schema":"/rests/modules/odl-serviceutils-upgrade?revision=2018-07-02","namespace":"urn:opendaylight:serviceutils:upgrade","conformance-type":"import"},{"name":"opendaylight-match-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-match-types?revision=2013-10-26","namespace":"urn:opendaylight:model:match:types","conformance-type":"import"},{"name":"ietf-restconf-server_2024-08-14","revision":"2024-08-14","schema":"/rests/modules/ietf-restconf-server?revision=2024-08-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-server","conformance-type":"import","feature":["http-listen","https-listen"]},{"name":"reconciliation-result-state_2017-07-13","revision":"2017-07-13","schema":"/rests/modules/reconciliation-result-state?revision=2017-07-13","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:rf:state","conformance-type":"import"},{"name":"onf-extensions_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/onf-extensions?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf","conformance-type":"import"},{"name":"sal-table_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/sal-table?revision=2013-10-26","namespace":"urn:opendaylight:table:service","conformance-type":"import"},{"name":"iana-http-versions_2026-02-04","revision":"2026-02-04","schema":"/rests/modules/iana-http-versions?revision=2026-02-04","namespace":"urn:ietf:params:xml:ns:yang:iana-http-versions","conformance-type":"import"},{"name":"opendaylight-direct-statistics_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/opendaylight-direct-statistics?revision=2016-05-11","namespace":"urn:opendaylight:direct:statistics","conformance-type":"import"},{"name":"opendaylight-port-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-port-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:port","conformance-type":"import"},{"name":"sal-async-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/sal-async-config?revision=2017-06-19","namespace":"urn:opendaylight:async-config:service","conformance-type":"import"},{"name":"aaa-password-service-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-password-service-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:password:service:config","conformance-type":"import"},{"name":"ietf-yang-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-yang-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-types","conformance-type":"import"},{"name":"opendaylight-queue-statistics_2013-12-16","revision":"2013-12-16","schema":"/rests/modules/opendaylight-queue-statistics?revision=2013-12-16","namespace":"urn:opendaylight:queue:statistics","conformance-type":"import"},{"name":"sal-bundle_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/sal-bundle?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf:bundle:service","conformance-type":"import"},{"name":"ietf-restconf-subscribed-notifications_2019-11-17","revision":"2019-11-17","schema":"/rests/modules/ietf-restconf-subscribed-notifications?revision=2019-11-17","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-subscribed-notifications","conformance-type":"import"},{"name":"sal-meters-batch_2016-03-16","revision":"2016-03-16","schema":"/rests/modules/sal-meters-batch?revision=2016-03-16","namespace":"urn:opendaylight:meters:service","conformance-type":"import"},{"name":"odl-entity-owners","revision":"","schema":"/rests/modules/odl-entity-owners","namespace":"urn:opendaylight:params:xml:ns:yang:controller:entity-owners","conformance-type":"import"},{"name":"sal-experimenter-mp-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-mp-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-mp-message:service","conformance-type":"import"},{"name":"packet-processing_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/packet-processing?revision=2013-07-09","namespace":"urn:opendaylight:packet:service","conformance-type":"import"},{"name":"openflow-configuration_2014-06-30","revision":"2014-06-30","schema":"/rests/modules/openflow-configuration?revision=2014-06-30","namespace":"urn:opendaylight:openflow:config","conformance-type":"import"},{"name":"odl-srm-rpcs_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-rpcs?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:rpc","conformance-type":"import"},{"name":"ietf-netconf-acm_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-netconf-acm?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-acm","conformance-type":"import"},{"name":"iana-crypt-hash_2014-08-06","revision":"2014-08-06","schema":"/rests/modules/iana-crypt-hash?revision=2014-08-06","namespace":"urn:ietf:params:xml:ns:yang:iana-crypt-hash","conformance-type":"import","feature":["crypt-hash-sha-512","crypt-hash-sha-256","crypt-hash-md5"]},{"name":"openflow-extensible-match_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-extensible-match?revision=2015-02-25","namespace":"urn:opendaylight:openflow:oxm","conformance-type":"import"}],"module-set-id":"2"}}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:39.970925" elapsed="0.004079"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:39.970578" elapsed="0.004476"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:39.970548" elapsed="0.004543"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:39.978608" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:39.975542" elapsed="0.003129"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:39.975228" elapsed="0.003490"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:39.975201" elapsed="0.003551"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:52:39.979588" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:39.979028" elapsed="0.000597"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:39.980085" elapsed="0.000033"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:39.979752" elapsed="0.000439"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:39.980922" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:39.980450" elapsed="0.000512"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:39.980226" elapsed="0.000788"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:39.979725" elapsed="0.001320"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:52:39.981848" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:39.981339" elapsed="0.000546"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:39.982364" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:39.982013" elapsed="0.000432"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:39.983191" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:39.982698" elapsed="0.000531"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:39.982477" elapsed="0.000802"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:39.981985" elapsed="0.001324"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:52:39.983560" elapsed="0.000505"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:52:39.984639" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:39.984338" elapsed="0.000327"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:52:39.984838" elapsed="0.002404"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:52:39.969557" elapsed="0.017811"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:52:39.987720" elapsed="0.000048"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:52:39.987498" elapsed="0.000334"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:39.987446" elapsed="0.000422"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:52:39.996962" level="INFO">${text_normalized} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:52:39.988602" elapsed="0.008411"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:52:39.997092" elapsed="0.000069"/>
</return>
<msg time="2026-04-08T00:52:39.997506" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:52:39.951863" elapsed="0.045753"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:52:39.998082" elapsed="0.000031"/>
</return>
<msg time="2026-04-08T00:52:39.998280" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="PASS" start="2026-04-08T00:52:39.813849" elapsed="0.184459"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Json_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:39.998685" elapsed="0.000027"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:39.998395" elapsed="0.000488"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:39.998377" elapsed="0.000534"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:52:39.998946" elapsed="0.000027"/>
</return>
<arg>session=${session}</arg>
<arg>folder=${RESTCONF_MODULES_DIR}</arg>
<arg>verify=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Add arguments sensible for JSON data, return Get_Templated response text.
Optionally, verification against JSON data (may be iterated) is called.
Only subset of JSON data is verified and returned if JMES path is specified in
file ${folder}/jmespath.expr.</doc>
<status status="PASS" start="2026-04-08T00:52:39.809785" elapsed="0.189315"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:39.805814" elapsed="0.193333"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:39.805797" elapsed="0.193391"/>
</if>
<kw name="Resolve_Shard_Type_Class" owner="ClusterManagement">
<if>
<branch type="IF" condition="'${shard_type}' == 'config'">
<return>
<value>DistributedConfigDatastore</value>
<status status="PASS" start="2026-04-08T00:52:39.999806" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-08T00:52:39.999696" elapsed="0.000169"/>
</branch>
<branch type="ELSE IF" condition="'${shard_type}' == 'operational'">
<return>
<value>DistributedOperationalDatastore</value>
<status status="NOT RUN" start="2026-04-08T00:52:39.999926" elapsed="0.000012"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:52:39.999888" elapsed="0.000077"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:39.999678" elapsed="0.000309"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized shard type: ${shard_type}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:40.000136" elapsed="0.000025"/>
</kw>
<msg time="2026-04-08T00:52:40.000287" level="INFO">${type_class} = DistributedConfigDatastore</msg>
<var>${type_class}</var>
<arg>shard_type=${shard_type}</arg>
<doc>Simple lookup for class name corresponding to desired type.</doc>
<status status="PASS" start="2026-04-08T00:52:39.999418" elapsed="0.000895"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:52:40.000861" level="INFO">${cluster_index} = 1</msg>
<var>${cluster_index}</var>
<arg>${member_index}+${NODE_ROLE_INDEX_START}-1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:40.000483" elapsed="0.000406"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:40.001526" level="INFO">${uri} = jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-topology-config,type=DistributedConfigDatastore</msg>
<var>${uri}</var>
<arg>${JOLOKIA_READ_URI}:Category=Shards,name=member-${cluster_index}-shard-${shard_name}-${shard_type},type=${type_class}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:40.001044" elapsed="0.000510"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:40.007014" level="INFO">jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-topology-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:40.006572" elapsed="0.000489"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:40.007699" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:40.007260" elapsed="0.000484"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:52:40.025567" level="INFO">GET Request : url=http://10.30.170.48:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-topology-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-topology-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:52:40.025756" level="INFO">GET Response : url=http://10.30.170.48:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-topology-config,type=DistributedConfigDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Wed, 08 Apr 2026 00:52:40 GMT', 'Expires': 'Tue, 07 Apr 2026 23:52:40 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-1-shard-topology-config,type=DistributedConfigDatastore","type":"read"},"value":{"ReadWriteTransactionCount":0,"SnapshotIndex":-1,"InMemoryJournalLogSize":0,"ReplicatedToAllIndex":-1,"Leader":"member-1-shard-topology-config","LastIndex":-1,"RaftState":"Leader","LastApplied":-1,"LastCommittedTransactionTime":"1970-01-01 00:00:00.000","PeerAddresses":"member-2-shard-topology-config: pekko:\/\/opendaylight-cluster-data@10.30.170.131:2550\/user\/shardmanager-config\/member-2-shard-topology-config, member-3-shard-topology-config: pekko:\/\/opendaylight-cluster-data@10.30.171.110:2550\/user\/shardmanager-config\/member-3-shard-topology-config","LastLogIndex":-1,"LastLeadershipChangeTime":"2026-04-08 00:46:45.979","FollowerInitialSyncStatus":false,"FollowerInfo":[{"timeSinceLastActivity":"00:00:00.070","active":true,"matchIndex":-1,"voting":true,"id":"member-2-shard-topology-config","nextIndex":0},{"timeSinceLastActivity":"00:00:00.070","active":true,"matchIndex":-1,"voting":true,"id":"member-3-shard-topology-config","nextIndex":0}],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"506.3 μs","CurrentTerm":2,"LastTerm":-1,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-topology-config","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":0,"TxCohortCacheSize":0,"PeerVotingStates":"member-2-shard-topology-config: true, member-3-shard-topology-config: true","LastLogTerm":-1,"StatRetrievalError":null,"CommitIndex":-1,"SnapshotTerm":-1,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-1-shard-topology-config","LeadershipChangeCount":1,"InMemoryJournalDataSize":0},"timestamp":1775609560,"status":200} 
 </msg>
<msg time="2026-04-08T00:52:40.026024" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:52:40.018293" elapsed="0.007900"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:40.007812" elapsed="0.018738"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:40.026809" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:40.026592" elapsed="0.000688"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:40.007793" elapsed="0.019525"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:40.034073" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-1-shard-topology-config,type=DistributedConfigDatastore","type":"read"},"value":{"ReadWriteTransactionCount":0,"SnapshotIndex":-1,"InMemoryJournalLogSize":0,"ReplicatedToAllIndex":-1,"Leader":"member-1-shard-topology-config","LastIndex":-1,"RaftState":"Leader","LastApplied":-1,"LastCommittedTransactionTime":"1970-01-01 00:00:00.000","PeerAddresses":"member-2-shard-topology-config: pekko:\/\/opendaylight-cluster-data@10.30.170.131:2550\/user\/shardmanager-config\/member-2-shard-topology-config, member-3-shard-topology-config: pekko:\/\/opendaylight-cluster-data@10.30.171.110:2550\/user\/shardmanager-config\/member-3-shard-topology-config","LastLogIndex":-1,"LastLeadershipChangeTime":"2026-04-08 00:46:45.979","FollowerInitialSyncStatus":false,"FollowerInfo":[{"timeSinceLastActivity":"00:00:00.070","active":true,"matchIndex":-1,"voting":true,"id":"member-2-shard-topology-config","nextIndex":0},{"timeSinceLastActivity":"00:00:00.070","active":true,"matchIndex":-1,"voting":true,"id":"member-3-shard-topology-config","nextIndex":0}],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"506.3 μs","CurrentTerm":2,"LastTerm":-1,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-topology-config","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":0,"TxCohortCacheSize":0,"PeerVotingStates":"member-2-shard-topology-config: true, member-3-shard-topology-config: true","LastLogTerm":-1,"StatRetrievalError":null,"CommitIndex":-1,"SnapshotTerm":-1,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-1-shard-topology-config","LeadershipChangeCount":1,"InMemoryJournalDataSize":0},"timestamp":1775609560,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:40.030451" elapsed="0.003815"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:40.029270" elapsed="0.005065"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:40.029242" elapsed="0.005147"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:40.039009" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:40.035704" elapsed="0.003439"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:40.034504" elapsed="0.004731"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:40.034478" elapsed="0.004811"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:52:40.041023" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:40.040260" elapsed="0.000824"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:40.041734" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:40.041269" elapsed="0.000553"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:40.042711" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:40.042210" elapsed="0.000545"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:40.041860" elapsed="0.000945"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:40.041248" elapsed="0.001592"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:52:40.044305" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:40.043557" elapsed="0.000809"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:40.045031" elapsed="0.000035"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:40.044566" elapsed="0.000550"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:40.046009" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:40.045513" elapsed="0.000544"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:40.045157" elapsed="0.000949"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:40.044544" elapsed="0.001597"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:52:40.046399" elapsed="0.000625"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:52:40.047886" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:40.047352" elapsed="0.000596"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:52:40.048395" elapsed="0.002449"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:52:40.028048" elapsed="0.022955"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:52:40.051224" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:52:40.051077" elapsed="0.000195"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:40.051057" elapsed="0.000236"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:52:40.055271" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-1-shard-topology-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1775609...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:52:40.051675" elapsed="0.003627"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:52:40.055354" elapsed="0.000033"/>
</return>
<msg time="2026-04-08T00:52:40.055559" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-1-shard-topology-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1775609...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:52:40.002502" elapsed="0.053084"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:52:40.055674" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:52:40.055828" level="INFO">${data_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-1-shard-topology-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1775609...</msg>
<var>${data_text}</var>
<arg>uri=${uri}</arg>
<arg>session=${session}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-08T00:52:40.001765" elapsed="0.054089"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:52:40.056952" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-1-shard-topology-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1775609560, 'value...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:40.056456" elapsed="0.000525"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-08T00:52:40.057031" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:52:40.057228" level="INFO">${data_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-1-shard-topology-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1775609560, 'value...</msg>
<var>${data_object}</var>
<arg>${data_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-08T00:52:40.056087" elapsed="0.001169"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:52:40.057619" level="INFO">${value} = {'AbortTransactionsCount': 0, 'CommitIndex': -1, 'CommittedTransactionsCount': 0, 'CurrentTerm': 2, 'FailedReadTransactionsCount': 0, 'FailedTransactionsCount': 0, 'FollowerInfo': [{'active': True, 'i...</msg>
<var>${value}</var>
<arg>${data_object}</arg>
<arg>value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:52:40.057413" elapsed="0.000233"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:52:40.057999" level="INFO">${raft_property} = Leader</msg>
<var>${raft_property}</var>
<arg>${value}</arg>
<arg>${property}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:52:40.057800" elapsed="0.000223"/>
</kw>
<return>
<value>${raft_property}</value>
<status status="PASS" start="2026-04-08T00:52:40.058070" elapsed="0.000027"/>
</return>
<msg time="2026-04-08T00:52:40.058270" level="INFO">${raft_state} = Leader</msg>
<var>${raft_state}</var>
<arg>RaftState</arg>
<arg>${shard_name}</arg>
<arg>${shard_type}</arg>
<arg>${member_index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft property.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T00:52:39.804199" elapsed="0.254097"/>
</kw>
<return>
<value>${raft_state}</value>
<status status="PASS" start="2026-04-08T00:52:40.058353" elapsed="0.000026"/>
</return>
<msg time="2026-04-08T00:52:40.058502" level="INFO">${raft_state} = Leader</msg>
<var>${raft_state}</var>
<arg>shard_name=${shard_name}</arg>
<arg>shard_type=${ds_type}</arg>
<arg>member_index=${index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft status.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T00:52:39.803470" elapsed="0.255056"/>
</kw>
<if>
<branch type="IF" condition="'Follower' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${follower_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:40.058824" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:40.058608" elapsed="0.000272"/>
</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="PASS" start="2026-04-08T00:52:40.059113" elapsed="0.000210"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:40.058904" elapsed="0.000456"/>
</branch>
<branch type="ELSE IF" condition="${validate}">
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized Raft state: ${raft_state}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:40.059527" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:40.059384" elapsed="0.000194"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:40.058590" elapsed="0.001011"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T00:52:39.803304" elapsed="0.256321"/>
</iter>
<iter>
<kw name="Get_Raft_State_Of_Shard_At_Member" owner="ClusterManagement">
<kw name="Get_Raft_Property_From_Shard_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:40.061989" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:40.061664" elapsed="0.000352"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:52:40.062061" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:52:40.062227" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:52:40.061323" elapsed="0.000929"/>
</kw>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Get_As_Json_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:40.144760" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:40.144298" elapsed="0.000541"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:52:40.145732" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:52:40.145472" elapsed="0.000336">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-08T00:52:40.145902" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:52:40.145026" elapsed="0.000901"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:52:40.146495" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:52:40.146090" elapsed="0.000431"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T00:52:40.146820" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-08T00:52:40.146977" level="INFO">${template} = /rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T00:52:40.146678" elapsed="0.000323"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:40.147427" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:40.147156" elapsed="0.000315"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:40.148467" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:40.148213" elapsed="0.000298"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-08T00:52:40.149011" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-08T00:52:40.148686" elapsed="0.000352"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:40.149391" elapsed="0.000021"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:40.149591" elapsed="0.000024"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:40.149763" elapsed="0.000020"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-08T00:52:40.149255" elapsed="0.000563"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-08T00:52:40.149093" elapsed="0.000757"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-08T00:52:40.149898" elapsed="0.000032"/>
</return>
<msg time="2026-04-08T00:52:40.150060" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-08T00:52:40.147878" elapsed="0.002207"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:40.147554" elapsed="0.002564"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:40.150305" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:40.150143" elapsed="0.000217"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:40.147528" elapsed="0.002853"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:52:40.150957" level="INFO">${final_text} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:40.150521" elapsed="0.000464"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T00:52:40.151032" elapsed="0.000028"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="PASS" start="2026-04-08T00:52:40.143638" elapsed="0.007522"/>
</kw>
<msg time="2026-04-08T00:52:40.151229" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:52:40.131469" elapsed="0.019846"/>
</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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:40.163651" elapsed="0.000043"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:40.175660" elapsed="0.000042"/>
</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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:40.188697" elapsed="0.000058"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:40.189797" elapsed="0.000052"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:40.190859" elapsed="0.000050"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:40.191657" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:40.191454" elapsed="0.000284"/>
</branch>
<status status="NOT RUN" start="2026-04-08T00:52:40.191432" elapsed="0.000339"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:40.191989" elapsed="0.000029"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:40.192267" elapsed="0.000030"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:40.192523" elapsed="0.000029"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-08T00:52:40.191363" elapsed="0.001264"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-08T00:52:40.191025" elapsed="0.001656"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:40.193714" elapsed="0.000051"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-08T00:52:40.193882" elapsed="0.000068"/>
</return>
<msg time="2026-04-08T00:52:40.194243" level="INFO">${uri} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-08T00:52:40.125209" elapsed="0.069186"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:52:40.197474" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:52:40.197215" elapsed="0.000328">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-08T00:52:40.197731" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:52:40.196719" elapsed="0.001058"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:40.198394" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:40.197906" elapsed="0.000555"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:40.199116" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:40.198773" elapsed="0.000371"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:40.198501" elapsed="0.000705"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:40.197856" elapsed="0.001389"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:52:40.202361" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:52:40.199946" elapsed="0.002461"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-08T00:52:40.202482" elapsed="0.000063"/>
</return>
<msg time="2026-04-08T00:52:40.202935" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:52:40.195602" elapsed="0.007441"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:52:40.205803" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:52:40.205562" elapsed="0.000304">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-08T00:52:40.206054" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:52:40.205114" elapsed="0.000984"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-08T00:52:40.206495" elapsed="0.000079"/>
</return>
<status status="PASS" start="2026-04-08T00:52:40.206244" elapsed="0.000399"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:40.206192" elapsed="0.000489"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:40.207412" elapsed="0.000037"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:40.208147" elapsed="0.000112"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-08T00:52:40.208335" elapsed="0.000047"/>
</return>
<msg time="2026-04-08T00:52:40.210481" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:52:40.203865" elapsed="0.006727"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:40.214608" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:40.214128" elapsed="0.000587"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:40.215831" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:40.215438" elapsed="0.000493"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:52:40.232433" level="INFO">GET Request : url=http://10.30.170.131:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 path_url=/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01eq5fxmndxspk37g8qgkyja672.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:52:40.233020" level="INFO">GET Response : url=http://10.30.170.131:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Transfer-Encoding': 'chunked'} 
 body={"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","hidden-symmetric-keys","encrypted-private-keys","asymmetrically-encrypted-value-format","cms-encrypted-data-format","cleartext-private-keys","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["ssh-client-keepalives","client-ident-hostbased","client-ident-publickey","client-ident-password"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-ex... (set the log level to DEBUG or TRACE to see the full content) 
 </msg>
<msg time="2026-04-08T00:52:40.233425" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:52:40.218349" elapsed="0.015123"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:40.216063" elapsed="0.017489"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:40.233959" elapsed="0.000033"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:40.233615" elapsed="0.000453"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:40.216009" elapsed="0.018135"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:40.242956" level="INFO">{"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","hidden-symmetric-keys","encrypted-private-keys","asymmetrically-encrypted-value-format","cms-encrypted-data-format","cleartext-private-keys","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["ssh-client-keepalives","client-ident-hostbased","client-ident-publickey","client-ident-password"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-experimenter-types?revision=2015-10-20","namespace":"urn:opendaylight:openflowplugin:experimenter:types","conformance-type":"import"},{"name":"ietf-ip_2018-02-22","revision":"2018-02-22","schema":"/rests/modules/ietf-ip?revision=2018-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-ip","conformance-type":"import","feature":["ipv6-privacy-autoconf","ipv4-non-contiguous-netmasks"]},{"name":"ietf-tcp-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-client","conformance-type":"import","feature":["local-binding-supported","tcp-client-keepalives"]},{"name":"node-config_2014-10-15","revision":"2014-10-15","schema":"/rests/modules/node-config?revision=2014-10-15","namespace":"urn:opendaylight:module:config","conformance-type":"import"},{"name":"ietf-restconf_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf","conformance-type":"import"},{"name":"ietf-datastores_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-datastores?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-datastores","conformance-type":"import"},{"name":"ietf-yang-patch_2017-02-22","revision":"2017-02-22","schema":"/rests/modules/ietf-yang-patch?revision=2017-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-patch","conformance-type":"import"},{"name":"sal-group_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-group?revision=2013-09-18","namespace":"urn:opendaylight:group:service","conformance-type":"import"},{"name":"odl-codegen-extensions_2024-06-27","revision":"2024-06-27","schema":"/rests/modules/odl-codegen-extensions?revision=2024-06-27","namespace":"urn:opendaylight:yang:extension:codegen","conformance-type":"import"},{"name":"sal-meter_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-meter?revision=2013-09-18","namespace":"urn:opendaylight:meter:service","conformance-type":"import"},{"name":"ietf-interfaces_2018-02-20","revision":"2018-02-20","schema":"/rests/modules/ietf-interfaces?revision=2018-02-20","namespace":"urn:ietf:params:xml:ns:yang:ietf-interfaces","conformance-type":"import","feature":["pre-provisioning","if-mib","arbitrary-names"]},{"name":"opendaylight-l2-types_2013-08-27","revision":"2013-08-27","schema":"/rests/modules/opendaylight-l2-types?revision=2013-08-27","namespace":"urn:opendaylight:l2:types","conformance-type":"import"},{"name":"opendaylight-flow-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-flow-types?revision=2013-10-26","namespace":"urn:opendaylight:flow:types","conformance-type":"import"},{"name":"lldp-speaker-config_2016-05-12","revision":"2016-05-12","schema":"/rests/modules/lldp-speaker-config?revision=2016-05-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker:config","conformance-type":"import"},{"name":"aaa-cert_2015-11-26","revision":"2015-11-26","schema":"/rests/modules/aaa-cert?revision=2015-11-26","namespace":"urn:opendaylight:yang:aaa:cert","conformance-type":"import"},{"name":"openflow-action_2015-02-03","revision":"2015-02-03","schema":"/rests/modules/openflow-action?revision=2015-02-03","namespace":"urn:opendaylight:openflow:common:action","conformance-type":"import"},{"name":"openflow-approved-extensions_2016-08-02","revision":"2016-08-02","schema":"/rests/modules/openflow-approved-extensions?revision=2016-08-02","namespace":"urn:opendaylight:openflow:approved:extensions","conformance-type":"import"},{"name":"nc-notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/nc-notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netmod:notification","conformance-type":"import"},{"name":"ietf-netconf-nmda_2019-01-07","revision":"2019-01-07","schema":"/rests/modules/ietf-netconf-nmda?revision=2019-01-07","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-nmda","conformance-type":"import","feature":["with-defaults","origin"]},{"name":"ietf-tcp-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-common","conformance-type":"import","feature":["keepalives-supported"]},{"name":"network-topology_2013-10-21","revision":"2013-10-21","schema":"/rests/modules/network-topology?revision=2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:network-topology","conformance-type":"import"},{"name":"aaa-encrypt-service-config_2024-02-02","revision":"2024-02-02","schema":"/rests/modules/aaa-encrypt-service-config?revision=2024-02-02","namespace":"config:aaa:authn:encrypt:service:config","conformance-type":"import"},{"name":"openflow-instruction_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-instruction?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:instruction","conformance-type":"import"},{"name":"ietf-tls-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-client","conformance-type":"import","feature":["client-ident-x509-cert","server-auth-x509-cert"]},{"name":"opendaylight-group-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-group-statistics?revision=2013-11-11","namespace":"urn:opendaylight:group:statistics","conformance-type":"import"},{"name":"cluster-admin_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/cluster-admin?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:cluster:admin","conformance-type":"import"},{"name":"opendaylight-flow-statistics_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-flow-statistics?revision=2013-08-19","namespace":"urn:opendaylight:flow:statistics","conformance-type":"import"},{"name":"opendaylight-table-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-table-types?revision=2013-10-26","namespace":"urn:opendaylight:table:types","conformance-type":"import"},{"name":"forwarding-rules-manager-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/forwarding-rules-manager-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:forwardingrules-manager:config","conformance-type":"import"},{"name":"odl-srm-types_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-types?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:types","conformance-type":"import"},{"name":"ietf-x509-cert-to-name_2014-12-10","revision":"2014-12-10","schema":"/rests/modules/ietf-x509-cert-to-name?revision=2014-12-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-x509-cert-to-name","conformance-type":"import"},{"name":"flow-node-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-node-inventory?revision=2013-08-19","namespace":"urn:opendaylight:flow:inventory","conformance-type":"import"},{"name":"flow-errors_2013-11-16","revision":"2013-11-16","schema":"/rests/modules/flow-errors?revision=2013-11-16","namespace":"urn:opendaylight:flow:errors","conformance-type":"import"},{"name":"ietf-netconf_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:netconf:base:1.0","conformance-type":"import","feature":["xpath","url","rollback-on-error","validate","startup","candidate","confirmed-commit","writable-running"]},{"name":"iana-ssh-public-key-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-public-key-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-public-key-algs","conformance-type":"import"},{"name":"aaa-cert-mdsal_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/aaa-cert-mdsal?revision=2016-03-21","namespace":"urn:opendaylight:yang:aaa:cert:mdsal","conformance-type":"import"},{"name":"odl-device-notification_2024-02-18","revision":"2024-02-18","schema":"/rests/modules/odl-device-notification?revision=2024-02-18","namespace":"urn:opendaylight:device:notification","conformance-type":"import"},{"name":"ietf-origin_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-origin?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-origin","conformance-type":"import"},{"name":"openflow-augments_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-augments?revision=2015-02-25","namespace":"urn:opendaylight:openflow:augments","conformance-type":"import"},{"name":"iana-ssh-encryption-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-encryption-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-encryption-algs","conformance-type":"import"},{"name":"ietf-truststore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-truststore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-truststore","conformance-type":"import","feature":["inline-definitions-supported"]},{"name":"distributed-datastore-provider_2025-01-30","revision":"2025-01-30","schema":"/rests/modules/distributed-datastore-provider?revision=2025-01-30","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:distributed-datastore-provider","conformance-type":"import"},{"name":"opendaylight-group-types_2013-10-18","revision":"2013-10-18","schema":"/rests/modules/opendaylight-group-types?revision=2013-10-18","namespace":"urn:opendaylight:group:types","conformance-type":"import"},{"name":"sal-remote-augment_2023-11-03","revision":"2023-11-03","schema":"/rests/modules/sal-remote-augment?revision=2023-11-03","namespace":"urn:sal:restconf:event:subscription","conformance-type":"import"},{"name":"opendaylight-ipv6-arbitrary-bitmask-fields_2016-02-24","revision":"2016-02-24","schema":"/rests/modules/opendaylight-ipv6-arbitrary-bitmask-fields?revision=2016-02-24","namespace":"urn:opendaylight:opendaylight-ipv6-arbitrary-bitmask-fields","conformance-type":"import"},{"name":"sal-flows-batch_2016-03-14","revision":"2016-03-14","schema":"/rests/modules/sal-flows-batch?revision=2016-03-14","namespace":"urn:opendaylight:flows:service","conformance-type":"import"},{"name":"ietf-tls-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-common","conformance-type":"import","feature":["tls12","hello-params","tls13"]},{"name":"openflow-types_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-types?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:types","conformance-type":"import"},{"name":"ietf-netconf-with-defaults_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf-with-defaults?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults","conformance-type":"import"},{"name":"odl-srm-ops_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-ops?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:ops","conformance-type":"import"},{"name":"odl-general-entity_2015-09-30","revision":"2015-09-30","schema":"/rests/modules/odl-general-entity?revision=2015-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:mdsal:core:general-entity","conformance-type":"import"},{"name":"iana-ssh-key-exchange-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-key-exchange-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-key-exchange-algs","conformance-type":"import"},{"name":"node-ssl-connection-error_2019-07-23","revision":"2019-07-23","schema":"/rests/modules/node-ssl-connection-error?revision=2019-07-23","namespace":"urn:opendaylight:node-ssl-connection-error:service","conformance-type":"import"},{"name":"openflow-protocol_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-protocol?revision=2013-07-31","namespace":"urn:opendaylight:openflow:protocol","conformance-type":"import"},{"name":"ietf-udp-server_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-server?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-server","conformance-type":"import"},{"name":"ietf-keystore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-keystore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-keystore","conformance-type":"import","feature":["asymmetric-keys","inline-definitions-supported"]},{"name":"aaa_2016-12-14","revision":"2016-12-14","schema":"/rests/modules/aaa?revision=2016-12-14","namespace":"urn:opendaylight:params:xml:ns:yang:aaa","conformance-type":"import"},{"name":"aaa-cert-rpc_2015-12-15","revision":"2015-12-15","schema":"/rests/modules/aaa-cert-rpc?revision=2015-12-15","namespace":"urn:opendaylight:yang:aaa:cert:rpc","conformance-type":"import"},{"name":"system-notifications_2013-09-27","revision":"2013-09-27","schema":"/rests/modules/system-notifications?revision=2013-09-27","namespace":"urn:opendaylight:openflow:system","conformance-type":"import"},{"name":"sal-flat-batch_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/sal-flat-batch?revision=2016-03-21","namespace":"urn:opendaylight:flat-batch:service","conformance-type":"import"},{"name":"notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netconf:notification:1.0","conformance-type":"import"},{"name":"sal-remote_2014-01-14","revision":"2014-01-14","schema":"/rests/modules/sal-remote?revision=2014-01-14","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:remote","conformance-type":"import"},{"name":"yang-ext_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/yang-ext?revision=2013-07-09","namespace":"urn:opendaylight:yang:extension:yang-ext","conformance-type":"import"},{"name":"opendaylight-multipart-types_2017-01-12","revision":"2017-01-12","schema":"/rests/modules/opendaylight-multipart-types?revision=2017-01-12","namespace":"urn:opendaylight:multipart:types","conformance-type":"import"},{"name":"opendaylight-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-inventory?revision=2013-08-19","namespace":"urn:opendaylight:inventory","conformance-type":"import"},{"name":"sal-queue_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-queue?revision=2015-03-05","namespace":"urn:opendaylight:queue:service","conformance-type":"import"},{"name":"sal-groups-batch_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/sal-groups-batch?revision=2016-03-15","namespace":"urn:opendaylight:groups:service","conformance-type":"import"},{"name":"arbitrator-reconcile_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/arbitrator-reconcile?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:arbitrator-reconcile:service","conformance-type":"import"},{"name":"ietf-yang-metadata_2016-08-05","revision":"2016-08-05","schema":"/rests/modules/ietf-yang-metadata?revision=2016-08-05","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-metadata","conformance-type":"import"},{"name":"opendaylight-arbitrary-bitmask-fields_2016-01-30","revision":"2016-01-30","schema":"/rests/modules/opendaylight-arbitrary-bitmask-fields?revision=2016-01-30","namespace":"urn:opendaylight:arbitrary:bitmask:fields","conformance-type":"import"},{"name":"ietf-udp-client_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-client?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-client","conformance-type":"import","feature":["local-binding"]},{"name":"opendaylight-meter-types_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/opendaylight-meter-types?revision=2013-09-18","namespace":"urn:opendaylight:meter:types","conformance-type":"import"},{"name":"opendaylight-action-types_2013-11-12","revision":"2013-11-12","schema":"/rests/modules/opendaylight-action-types?revision=2013-11-12","namespace":"urn:opendaylight:action:types","conformance-type":"import"},{"name":"sal-role_2015-07-27","revision":"2015-07-27","schema":"/rests/modules/sal-role?revision=2015-07-27","namespace":"urn:opendaylight:role:service","conformance-type":"import"},{"name":"openflow-provider-config_2016-05-10","revision":"2016-05-10","schema":"/rests/modules/openflow-provider-config?revision=2016-05-10","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:provider:config","conformance-type":"import"},{"name":"odl-serviceutils-upgrade_2018-07-02","revision":"2018-07-02","schema":"/rests/modules/odl-serviceutils-upgrade?revision=2018-07-02","namespace":"urn:opendaylight:serviceutils:upgrade","conformance-type":"import"},{"name":"opendaylight-match-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-match-types?revision=2013-10-26","namespace":"urn:opendaylight:model:match:types","conformance-type":"import"},{"name":"ietf-restconf-server_2024-08-14","revision":"2024-08-14","schema":"/rests/modules/ietf-restconf-server?revision=2024-08-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-server","conformance-type":"import","feature":["http-listen","https-listen"]},{"name":"reconciliation-result-state_2017-07-13","revision":"2017-07-13","schema":"/rests/modules/reconciliation-result-state?revision=2017-07-13","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:rf:state","conformance-type":"import"},{"name":"onf-extensions_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/onf-extensions?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf","conformance-type":"import"},{"name":"sal-table_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/sal-table?revision=2013-10-26","namespace":"urn:opendaylight:table:service","conformance-type":"import"},{"name":"iana-http-versions_2026-02-04","revision":"2026-02-04","schema":"/rests/modules/iana-http-versions?revision=2026-02-04","namespace":"urn:ietf:params:xml:ns:yang:iana-http-versions","conformance-type":"import"},{"name":"opendaylight-direct-statistics_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/opendaylight-direct-statistics?revision=2016-05-11","namespace":"urn:opendaylight:direct:statistics","conformance-type":"import"},{"name":"opendaylight-port-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-port-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:port","conformance-type":"import"},{"name":"sal-async-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/sal-async-config?revision=2017-06-19","namespace":"urn:opendaylight:async-config:service","conformance-type":"import"},{"name":"aaa-password-service-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-password-service-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:password:service:config","conformance-type":"import"},{"name":"ietf-yang-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-yang-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-types","conformance-type":"import"},{"name":"opendaylight-queue-statistics_2013-12-16","revision":"2013-12-16","schema":"/rests/modules/opendaylight-queue-statistics?revision=2013-12-16","namespace":"urn:opendaylight:queue:statistics","conformance-type":"import"},{"name":"sal-bundle_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/sal-bundle?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf:bundle:service","conformance-type":"import"},{"name":"ietf-restconf-subscribed-notifications_2019-11-17","revision":"2019-11-17","schema":"/rests/modules/ietf-restconf-subscribed-notifications?revision=2019-11-17","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-subscribed-notifications","conformance-type":"import"},{"name":"sal-meters-batch_2016-03-16","revision":"2016-03-16","schema":"/rests/modules/sal-meters-batch?revision=2016-03-16","namespace":"urn:opendaylight:meters:service","conformance-type":"import"},{"name":"odl-entity-owners","revision":"","schema":"/rests/modules/odl-entity-owners","namespace":"urn:opendaylight:params:xml:ns:yang:controller:entity-owners","conformance-type":"import"},{"name":"sal-experimenter-mp-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-mp-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-mp-message:service","conformance-type":"import"},{"name":"packet-processing_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/packet-processing?revision=2013-07-09","namespace":"urn:opendaylight:packet:service","conformance-type":"import"},{"name":"openflow-configuration_2014-06-30","revision":"2014-06-30","schema":"/rests/modules/openflow-configuration?revision=2014-06-30","namespace":"urn:opendaylight:openflow:config","conformance-type":"import"},{"name":"odl-srm-rpcs_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-rpcs?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:rpc","conformance-type":"import"},{"name":"ietf-netconf-acm_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-netconf-acm?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-acm","conformance-type":"import"},{"name":"iana-crypt-hash_2014-08-06","revision":"2014-08-06","schema":"/rests/modules/iana-crypt-hash?revision=2014-08-06","namespace":"urn:ietf:params:xml:ns:yang:iana-crypt-hash","conformance-type":"import","feature":["crypt-hash-sha-512","crypt-hash-sha-256","crypt-hash-md5"]},{"name":"openflow-extensible-match_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-extensible-match?revision=2015-02-25","namespace":"urn:opendaylight:openflow:oxm","conformance-type":"import"}],"module-set-id":"2"}}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:40.238076" elapsed="0.005255"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:40.237583" elapsed="0.005785"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:40.237534" elapsed="0.005858"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:40.245899" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:40.243693" elapsed="0.002251"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:40.243472" elapsed="0.002507"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:40.243454" elapsed="0.002549"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:52:40.246616" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:40.246213" elapsed="0.000430"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:40.246972" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:40.246735" elapsed="0.000294"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:40.247557" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:40.247253" elapsed="0.000330"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:40.247052" elapsed="0.000567"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:40.246715" elapsed="0.000926"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:52:40.248197" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:40.247819" elapsed="0.000405"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:40.248548" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:40.248315" elapsed="0.000290"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:40.249128" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:40.248785" elapsed="0.000369"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:40.248628" elapsed="0.000579"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:40.248295" elapsed="0.000934"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:52:40.249399" elapsed="0.000379"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:52:40.250278" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:40.249964" elapsed="0.000339"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:52:40.250476" elapsed="0.002156"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:52:40.235888" elapsed="0.016866"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:52:40.253114" elapsed="0.000062"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:52:40.252882" elapsed="0.000362"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:40.252831" elapsed="0.000450"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:52:40.263847" level="INFO">${text_normalized} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:52:40.254010" elapsed="0.009888"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:52:40.263977" elapsed="0.000065"/>
</return>
<msg time="2026-04-08T00:52:40.264394" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:52:40.211259" elapsed="0.053243"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:52:40.264971" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:52:40.265149" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="PASS" start="2026-04-08T00:52:40.070478" elapsed="0.194716"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Json_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:40.265527" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:40.265280" elapsed="0.000483"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:40.265262" elapsed="0.000531"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:52:40.265829" elapsed="0.000028"/>
</return>
<arg>session=${session}</arg>
<arg>folder=${RESTCONF_MODULES_DIR}</arg>
<arg>verify=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Add arguments sensible for JSON data, return Get_Templated response text.
Optionally, verification against JSON data (may be iterated) is called.
Only subset of JSON data is verified and returned if JMES path is specified in
file ${folder}/jmespath.expr.</doc>
<status status="PASS" start="2026-04-08T00:52:40.066464" elapsed="0.199494"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:40.062318" elapsed="0.203682"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:40.062301" elapsed="0.203723"/>
</if>
<kw name="Resolve_Shard_Type_Class" owner="ClusterManagement">
<if>
<branch type="IF" condition="'${shard_type}' == 'config'">
<return>
<value>DistributedConfigDatastore</value>
<status status="PASS" start="2026-04-08T00:52:40.266641" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-08T00:52:40.266535" elapsed="0.000166"/>
</branch>
<branch type="ELSE IF" condition="'${shard_type}' == 'operational'">
<return>
<value>DistributedOperationalDatastore</value>
<status status="NOT RUN" start="2026-04-08T00:52:40.266761" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:52:40.266724" elapsed="0.000076"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:40.266517" elapsed="0.000306"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized shard type: ${shard_type}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:40.266967" elapsed="0.000022"/>
</kw>
<msg time="2026-04-08T00:52:40.267088" level="INFO">${type_class} = DistributedConfigDatastore</msg>
<var>${type_class}</var>
<arg>shard_type=${shard_type}</arg>
<doc>Simple lookup for class name corresponding to desired type.</doc>
<status status="PASS" start="2026-04-08T00:52:40.266267" elapsed="0.000850"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:52:40.267672" level="INFO">${cluster_index} = 2</msg>
<var>${cluster_index}</var>
<arg>${member_index}+${NODE_ROLE_INDEX_START}-1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:40.267300" elapsed="0.000399"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:40.268337" level="INFO">${uri} = jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-topology-config,type=DistributedConfigDatastore</msg>
<var>${uri}</var>
<arg>${JOLOKIA_READ_URI}:Category=Shards,name=member-${cluster_index}-shard-${shard_name}-${shard_type},type=${type_class}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:40.267853" elapsed="0.000512"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:40.274047" level="INFO">jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-topology-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:40.273561" elapsed="0.000536"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:40.274769" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:40.274328" elapsed="0.000487"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:52:40.292016" level="INFO">GET Request : url=http://10.30.170.131:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-topology-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-topology-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:52:40.292236" level="INFO">GET Response : url=http://10.30.170.131:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-topology-config,type=DistributedConfigDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Wed, 08 Apr 2026 00:52:40 GMT', 'Expires': 'Tue, 07 Apr 2026 23:52:40 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-2-shard-topology-config,type=DistributedConfigDatastore","type":"read"},"value":{"ReadWriteTransactionCount":0,"SnapshotIndex":-1,"InMemoryJournalLogSize":0,"ReplicatedToAllIndex":-1,"Leader":"member-1-shard-topology-config","LastIndex":-1,"RaftState":"Follower","LastCommittedTransactionTime":"1970-01-01 00:00:00.000","LastApplied":-1,"PeerAddresses":"member-1-shard-topology-config: pekko:\/\/opendaylight-cluster-data@10.30.170.48:2550\/user\/shardmanager-config\/member-1-shard-topology-config, member-3-shard-topology-config: pekko:\/\/opendaylight-cluster-data@10.30.171.110:2550\/user\/shardmanager-config\/member-3-shard-topology-config","LastLogIndex":-1,"LastLeadershipChangeTime":"2026-04-08 00:46:45.985","FollowerInitialSyncStatus":true,"FollowerInfo":[],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"263.8 μs","CurrentTerm":2,"LastTerm":-1,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-topology-config","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":0,"TxCohortCacheSize":0,"PeerVotingStates":"member-1-shard-topology-config: true, member-3-shard-topology-config: true","LastLogTerm":-1,"StatRetrievalError":null,"CommitIndex":-1,"SnapshotTerm":-1,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-2-shard-topology-config","LeadershipChangeCount":1,"InMemoryJournalDataSize":0},"timestamp":1775609560,"status":200} 
 </msg>
<msg time="2026-04-08T00:52:40.292512" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:52:40.285516" elapsed="0.007148"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:40.274885" elapsed="0.018139"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:40.293315" elapsed="0.000032"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:40.293068" elapsed="0.000692"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:40.274865" elapsed="0.018932"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:40.300043" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-2-shard-topology-config,type=DistributedConfigDatastore","type":"read"},"value":{"ReadWriteTransactionCount":0,"SnapshotIndex":-1,"InMemoryJournalLogSize":0,"ReplicatedToAllIndex":-1,"Leader":"member-1-shard-topology-config","LastIndex":-1,"RaftState":"Follower","LastCommittedTransactionTime":"1970-01-01 00:00:00.000","LastApplied":-1,"PeerAddresses":"member-1-shard-topology-config: pekko:\/\/opendaylight-cluster-data@10.30.170.48:2550\/user\/shardmanager-config\/member-1-shard-topology-config, member-3-shard-topology-config: pekko:\/\/opendaylight-cluster-data@10.30.171.110:2550\/user\/shardmanager-config\/member-3-shard-topology-config","LastLogIndex":-1,"LastLeadershipChangeTime":"2026-04-08 00:46:45.985","FollowerInitialSyncStatus":true,"FollowerInfo":[],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"263.8 μs","CurrentTerm":2,"LastTerm":-1,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-topology-config","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":0,"TxCohortCacheSize":0,"PeerVotingStates":"member-1-shard-topology-config: true, member-3-shard-topology-config: true","LastLogTerm":-1,"StatRetrievalError":null,"CommitIndex":-1,"SnapshotTerm":-1,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-2-shard-topology-config","LeadershipChangeCount":1,"InMemoryJournalDataSize":0},"timestamp":1775609560,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:40.296985" elapsed="0.003234"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:40.295789" elapsed="0.004482"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:40.295761" elapsed="0.004550"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:40.303732" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:40.301298" elapsed="0.002532"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:40.300395" elapsed="0.003485"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:40.300376" elapsed="0.003542"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:52:40.305348" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:40.304557" elapsed="0.000853"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:40.306078" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:40.305578" elapsed="0.000676"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:40.307133" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:40.306630" elapsed="0.000566"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:40.306298" elapsed="0.000950"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:40.305558" elapsed="0.001725"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:52:40.308794" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:40.307893" elapsed="0.000961"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:40.309507" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:40.309024" elapsed="0.000570"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:40.310564" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:40.309984" elapsed="0.000627"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:40.309633" elapsed="0.001028"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:40.309003" elapsed="0.001692"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:52:40.310920" elapsed="0.000641"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:52:40.312382" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:40.311866" elapsed="0.000577"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:52:40.312727" elapsed="0.002449"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:52:40.294752" elapsed="0.020588"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:52:40.315540" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:52:40.315413" elapsed="0.000175"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:40.315394" elapsed="0.000216"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:52:40.319248" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-2-shard-topology-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1775609...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:52:40.315755" elapsed="0.003522"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:52:40.319329" elapsed="0.000033"/>
</return>
<msg time="2026-04-08T00:52:40.319493" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-2-shard-topology-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1775609...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:52:40.269347" elapsed="0.050174"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:52:40.319579" elapsed="0.000027"/>
</return>
<msg time="2026-04-08T00:52:40.319729" level="INFO">${data_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-2-shard-topology-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1775609...</msg>
<var>${data_text}</var>
<arg>uri=${uri}</arg>
<arg>session=${session}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-08T00:52:40.268576" elapsed="0.051180"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:52:40.320814" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-2-shard-topology-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1775609560, 'value...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:40.320340" elapsed="0.000504"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-08T00:52:40.320932" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:52:40.321116" level="INFO">${data_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-2-shard-topology-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1775609560, 'value...</msg>
<var>${data_object}</var>
<arg>${data_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-08T00:52:40.319979" elapsed="0.001165"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:52:40.321521" level="INFO">${value} = {'AbortTransactionsCount': 0, 'CommitIndex': -1, 'CommittedTransactionsCount': 0, 'CurrentTerm': 2, 'FailedReadTransactionsCount': 0, 'FailedTransactionsCount': 0, 'FollowerInfo': [], 'FollowerInitial...</msg>
<var>${value}</var>
<arg>${data_object}</arg>
<arg>value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:52:40.321319" elapsed="0.000230"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:52:40.321907" level="INFO">${raft_property} = Follower</msg>
<var>${raft_property}</var>
<arg>${value}</arg>
<arg>${property}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:52:40.321704" elapsed="0.000228"/>
</kw>
<return>
<value>${raft_property}</value>
<status status="PASS" start="2026-04-08T00:52:40.321979" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:52:40.322161" level="INFO">${raft_state} = Follower</msg>
<var>${raft_state}</var>
<arg>RaftState</arg>
<arg>${shard_name}</arg>
<arg>${shard_type}</arg>
<arg>${member_index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft property.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T00:52:40.060709" elapsed="0.261574"/>
</kw>
<return>
<value>${raft_state}</value>
<status status="PASS" start="2026-04-08T00:52:40.322343" elapsed="0.000027"/>
</return>
<msg time="2026-04-08T00:52:40.322492" level="INFO">${raft_state} = Follower</msg>
<var>${raft_state}</var>
<arg>shard_name=${shard_name}</arg>
<arg>shard_type=${ds_type}</arg>
<arg>member_index=${index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft status.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T00:52:40.059976" elapsed="0.262541"/>
</kw>
<if>
<branch type="IF" condition="'Follower' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${follower_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-08T00:52:40.322813" elapsed="0.000188"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:40.322597" elapsed="0.000442"/>
</branch>
<branch type="ELSE IF" condition="'Leader' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${leader_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:40.323222" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:40.323063" elapsed="0.000216"/>
</branch>
<branch type="ELSE IF" condition="${validate}">
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized Raft state: ${raft_state}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:40.323443" elapsed="0.000019"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:40.323302" elapsed="0.000191"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:40.322579" elapsed="0.000937"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T00:52:40.059808" elapsed="0.263731"/>
</iter>
<iter>
<kw name="Get_Raft_State_Of_Shard_At_Member" owner="ClusterManagement">
<kw name="Get_Raft_Property_From_Shard_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:40.325872" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:40.325548" elapsed="0.000351"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:52:40.325944" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:52:40.326091" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:52:40.325208" elapsed="0.000931"/>
</kw>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Get_As_Json_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:40.409081" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:40.408701" elapsed="0.000410"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:52:40.409894" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:52:40.409630" elapsed="0.000339">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-08T00:52:40.410061" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:52:40.409295" elapsed="0.000791"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:52:40.410655" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:52:40.410270" elapsed="0.000412"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T00:52:40.411012" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-08T00:52:40.411232" level="INFO">${template} = /rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T00:52:40.410841" elapsed="0.000538"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:40.411791" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:40.411542" elapsed="0.000295"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:40.412843" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:40.412552" elapsed="0.000336"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-08T00:52:40.413333" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-08T00:52:40.413047" elapsed="0.000312"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:40.413684" elapsed="0.000021"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:40.413884" elapsed="0.000023"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:40.414056" elapsed="0.000021"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-08T00:52:40.413552" elapsed="0.000561"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-08T00:52:40.413412" elapsed="0.000731"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-08T00:52:40.414206" elapsed="0.000031"/>
</return>
<msg time="2026-04-08T00:52:40.414365" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-08T00:52:40.412233" elapsed="0.002157"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:40.411910" elapsed="0.002512"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:40.414589" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:40.414446" elapsed="0.000198"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:40.411889" elapsed="0.002775"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:52:40.415267" level="INFO">${final_text} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:40.414802" elapsed="0.000492"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T00:52:40.415343" 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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="PASS" start="2026-04-08T00:52:40.408068" elapsed="0.007397"/>
</kw>
<msg time="2026-04-08T00:52:40.415519" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:52:40.395736" elapsed="0.019864"/>
</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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:40.427738" elapsed="0.000041"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:40.439669" elapsed="0.000042"/>
</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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:40.451632" elapsed="0.000042"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:40.452415" elapsed="0.000037"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:40.453161" elapsed="0.000052"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:40.453775" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:40.453629" elapsed="0.000203"/>
</branch>
<status status="NOT RUN" start="2026-04-08T00:52:40.453613" elapsed="0.000242"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:40.454013" elapsed="0.000021"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:40.454220" elapsed="0.000022"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:40.454406" elapsed="0.000021"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-08T00:52:40.453563" elapsed="0.000917"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-08T00:52:40.453338" elapsed="0.001182"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:40.455235" elapsed="0.000056"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-08T00:52:40.455380" elapsed="0.000048"/>
</return>
<msg time="2026-04-08T00:52:40.455607" level="INFO">${uri} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-08T00:52:40.389814" elapsed="0.065900"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:52:40.458575" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:52:40.458316" elapsed="0.000328">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-08T00:52:40.458832" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:52:40.457853" elapsed="0.001023"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:40.459457" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:40.459010" elapsed="0.000517"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:40.460131" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:40.459837" elapsed="0.000325"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:40.459566" elapsed="0.000656"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:40.458958" elapsed="0.001303"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:52:40.463360" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:52:40.460984" elapsed="0.002424"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-08T00:52:40.463485" elapsed="0.000063"/>
</return>
<msg time="2026-04-08T00:52:40.463802" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:52:40.456710" elapsed="0.007200"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:52:40.466626" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:52:40.466385" elapsed="0.000305">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-08T00:52:40.466878" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:52:40.465940" elapsed="0.000983"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-08T00:52:40.467324" elapsed="0.000113"/>
</return>
<status status="PASS" start="2026-04-08T00:52:40.467054" elapsed="0.000452"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:40.467003" elapsed="0.000542"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:40.468342" elapsed="0.000036"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:40.469069" elapsed="0.000035"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-08T00:52:40.469306" elapsed="0.000048"/>
</return>
<msg time="2026-04-08T00:52:40.471522" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:52:40.464726" elapsed="0.006905"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:40.475678" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:40.475219" elapsed="0.000563"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:40.476877" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:40.476496" elapsed="0.000480"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:52:40.494193" level="INFO">GET Request : url=http://10.30.171.110:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 path_url=/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0336bvzrfnrhc3cqywxyctca52.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:52:40.494810" level="INFO">GET Response : url=http://10.30.171.110:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Transfer-Encoding': 'chunked'} 
 body={"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","hidden-symmetric-keys","encrypted-private-keys","asymmetrically-encrypted-value-format","cms-encrypted-data-format","cleartext-private-keys","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["ssh-client-keepalives","client-ident-hostbased","client-ident-publickey","client-ident-password"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-ex... (set the log level to DEBUG or TRACE to see the full content) 
 </msg>
<msg time="2026-04-08T00:52:40.495138" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:52:40.479382" elapsed="0.015820"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:40.477110" elapsed="0.018230"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:40.495854" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:40.495422" elapsed="0.000543"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:40.477052" elapsed="0.018964"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:40.502454" level="INFO">{"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","hidden-symmetric-keys","encrypted-private-keys","asymmetrically-encrypted-value-format","cms-encrypted-data-format","cleartext-private-keys","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["ssh-client-keepalives","client-ident-hostbased","client-ident-publickey","client-ident-password"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-experimenter-types?revision=2015-10-20","namespace":"urn:opendaylight:openflowplugin:experimenter:types","conformance-type":"import"},{"name":"ietf-ip_2018-02-22","revision":"2018-02-22","schema":"/rests/modules/ietf-ip?revision=2018-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-ip","conformance-type":"import","feature":["ipv6-privacy-autoconf","ipv4-non-contiguous-netmasks"]},{"name":"ietf-tcp-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-client","conformance-type":"import","feature":["local-binding-supported","tcp-client-keepalives"]},{"name":"node-config_2014-10-15","revision":"2014-10-15","schema":"/rests/modules/node-config?revision=2014-10-15","namespace":"urn:opendaylight:module:config","conformance-type":"import"},{"name":"ietf-restconf_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf","conformance-type":"import"},{"name":"ietf-datastores_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-datastores?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-datastores","conformance-type":"import"},{"name":"ietf-yang-patch_2017-02-22","revision":"2017-02-22","schema":"/rests/modules/ietf-yang-patch?revision=2017-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-patch","conformance-type":"import"},{"name":"sal-group_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-group?revision=2013-09-18","namespace":"urn:opendaylight:group:service","conformance-type":"import"},{"name":"odl-codegen-extensions_2024-06-27","revision":"2024-06-27","schema":"/rests/modules/odl-codegen-extensions?revision=2024-06-27","namespace":"urn:opendaylight:yang:extension:codegen","conformance-type":"import"},{"name":"sal-meter_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-meter?revision=2013-09-18","namespace":"urn:opendaylight:meter:service","conformance-type":"import"},{"name":"ietf-interfaces_2018-02-20","revision":"2018-02-20","schema":"/rests/modules/ietf-interfaces?revision=2018-02-20","namespace":"urn:ietf:params:xml:ns:yang:ietf-interfaces","conformance-type":"import","feature":["pre-provisioning","if-mib","arbitrary-names"]},{"name":"opendaylight-l2-types_2013-08-27","revision":"2013-08-27","schema":"/rests/modules/opendaylight-l2-types?revision=2013-08-27","namespace":"urn:opendaylight:l2:types","conformance-type":"import"},{"name":"opendaylight-flow-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-flow-types?revision=2013-10-26","namespace":"urn:opendaylight:flow:types","conformance-type":"import"},{"name":"lldp-speaker-config_2016-05-12","revision":"2016-05-12","schema":"/rests/modules/lldp-speaker-config?revision=2016-05-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker:config","conformance-type":"import"},{"name":"aaa-cert_2015-11-26","revision":"2015-11-26","schema":"/rests/modules/aaa-cert?revision=2015-11-26","namespace":"urn:opendaylight:yang:aaa:cert","conformance-type":"import"},{"name":"openflow-action_2015-02-03","revision":"2015-02-03","schema":"/rests/modules/openflow-action?revision=2015-02-03","namespace":"urn:opendaylight:openflow:common:action","conformance-type":"import"},{"name":"openflow-approved-extensions_2016-08-02","revision":"2016-08-02","schema":"/rests/modules/openflow-approved-extensions?revision=2016-08-02","namespace":"urn:opendaylight:openflow:approved:extensions","conformance-type":"import"},{"name":"nc-notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/nc-notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netmod:notification","conformance-type":"import"},{"name":"ietf-netconf-nmda_2019-01-07","revision":"2019-01-07","schema":"/rests/modules/ietf-netconf-nmda?revision=2019-01-07","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-nmda","conformance-type":"import","feature":["with-defaults","origin"]},{"name":"ietf-tcp-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-common","conformance-type":"import","feature":["keepalives-supported"]},{"name":"network-topology_2013-10-21","revision":"2013-10-21","schema":"/rests/modules/network-topology?revision=2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:network-topology","conformance-type":"import"},{"name":"aaa-encrypt-service-config_2024-02-02","revision":"2024-02-02","schema":"/rests/modules/aaa-encrypt-service-config?revision=2024-02-02","namespace":"config:aaa:authn:encrypt:service:config","conformance-type":"import"},{"name":"openflow-instruction_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-instruction?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:instruction","conformance-type":"import"},{"name":"ietf-tls-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-client","conformance-type":"import","feature":["client-ident-x509-cert","server-auth-x509-cert"]},{"name":"opendaylight-group-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-group-statistics?revision=2013-11-11","namespace":"urn:opendaylight:group:statistics","conformance-type":"import"},{"name":"cluster-admin_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/cluster-admin?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:cluster:admin","conformance-type":"import"},{"name":"opendaylight-flow-statistics_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-flow-statistics?revision=2013-08-19","namespace":"urn:opendaylight:flow:statistics","conformance-type":"import"},{"name":"opendaylight-table-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-table-types?revision=2013-10-26","namespace":"urn:opendaylight:table:types","conformance-type":"import"},{"name":"forwarding-rules-manager-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/forwarding-rules-manager-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:forwardingrules-manager:config","conformance-type":"import"},{"name":"odl-srm-types_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-types?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:types","conformance-type":"import"},{"name":"ietf-x509-cert-to-name_2014-12-10","revision":"2014-12-10","schema":"/rests/modules/ietf-x509-cert-to-name?revision=2014-12-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-x509-cert-to-name","conformance-type":"import"},{"name":"flow-node-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-node-inventory?revision=2013-08-19","namespace":"urn:opendaylight:flow:inventory","conformance-type":"import"},{"name":"flow-errors_2013-11-16","revision":"2013-11-16","schema":"/rests/modules/flow-errors?revision=2013-11-16","namespace":"urn:opendaylight:flow:errors","conformance-type":"import"},{"name":"ietf-netconf_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:netconf:base:1.0","conformance-type":"import","feature":["xpath","url","rollback-on-error","validate","startup","candidate","confirmed-commit","writable-running"]},{"name":"iana-ssh-public-key-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-public-key-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-public-key-algs","conformance-type":"import"},{"name":"aaa-cert-mdsal_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/aaa-cert-mdsal?revision=2016-03-21","namespace":"urn:opendaylight:yang:aaa:cert:mdsal","conformance-type":"import"},{"name":"odl-device-notification_2024-02-18","revision":"2024-02-18","schema":"/rests/modules/odl-device-notification?revision=2024-02-18","namespace":"urn:opendaylight:device:notification","conformance-type":"import"},{"name":"ietf-origin_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-origin?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-origin","conformance-type":"import"},{"name":"openflow-augments_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-augments?revision=2015-02-25","namespace":"urn:opendaylight:openflow:augments","conformance-type":"import"},{"name":"iana-ssh-encryption-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-encryption-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-encryption-algs","conformance-type":"import"},{"name":"ietf-truststore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-truststore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-truststore","conformance-type":"import","feature":["inline-definitions-supported"]},{"name":"distributed-datastore-provider_2025-01-30","revision":"2025-01-30","schema":"/rests/modules/distributed-datastore-provider?revision=2025-01-30","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:distributed-datastore-provider","conformance-type":"import"},{"name":"opendaylight-group-types_2013-10-18","revision":"2013-10-18","schema":"/rests/modules/opendaylight-group-types?revision=2013-10-18","namespace":"urn:opendaylight:group:types","conformance-type":"import"},{"name":"sal-remote-augment_2023-11-03","revision":"2023-11-03","schema":"/rests/modules/sal-remote-augment?revision=2023-11-03","namespace":"urn:sal:restconf:event:subscription","conformance-type":"import"},{"name":"opendaylight-ipv6-arbitrary-bitmask-fields_2016-02-24","revision":"2016-02-24","schema":"/rests/modules/opendaylight-ipv6-arbitrary-bitmask-fields?revision=2016-02-24","namespace":"urn:opendaylight:opendaylight-ipv6-arbitrary-bitmask-fields","conformance-type":"import"},{"name":"sal-flows-batch_2016-03-14","revision":"2016-03-14","schema":"/rests/modules/sal-flows-batch?revision=2016-03-14","namespace":"urn:opendaylight:flows:service","conformance-type":"import"},{"name":"ietf-tls-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-common","conformance-type":"import","feature":["tls12","hello-params","tls13"]},{"name":"openflow-types_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-types?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:types","conformance-type":"import"},{"name":"ietf-netconf-with-defaults_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf-with-defaults?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults","conformance-type":"import"},{"name":"odl-srm-ops_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-ops?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:ops","conformance-type":"import"},{"name":"odl-general-entity_2015-09-30","revision":"2015-09-30","schema":"/rests/modules/odl-general-entity?revision=2015-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:mdsal:core:general-entity","conformance-type":"import"},{"name":"iana-ssh-key-exchange-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-key-exchange-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-key-exchange-algs","conformance-type":"import"},{"name":"node-ssl-connection-error_2019-07-23","revision":"2019-07-23","schema":"/rests/modules/node-ssl-connection-error?revision=2019-07-23","namespace":"urn:opendaylight:node-ssl-connection-error:service","conformance-type":"import"},{"name":"openflow-protocol_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-protocol?revision=2013-07-31","namespace":"urn:opendaylight:openflow:protocol","conformance-type":"import"},{"name":"ietf-udp-server_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-server?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-server","conformance-type":"import"},{"name":"ietf-keystore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-keystore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-keystore","conformance-type":"import","feature":["asymmetric-keys","inline-definitions-supported"]},{"name":"aaa_2016-12-14","revision":"2016-12-14","schema":"/rests/modules/aaa?revision=2016-12-14","namespace":"urn:opendaylight:params:xml:ns:yang:aaa","conformance-type":"import"},{"name":"aaa-cert-rpc_2015-12-15","revision":"2015-12-15","schema":"/rests/modules/aaa-cert-rpc?revision=2015-12-15","namespace":"urn:opendaylight:yang:aaa:cert:rpc","conformance-type":"import"},{"name":"system-notifications_2013-09-27","revision":"2013-09-27","schema":"/rests/modules/system-notifications?revision=2013-09-27","namespace":"urn:opendaylight:openflow:system","conformance-type":"import"},{"name":"sal-flat-batch_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/sal-flat-batch?revision=2016-03-21","namespace":"urn:opendaylight:flat-batch:service","conformance-type":"import"},{"name":"notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netconf:notification:1.0","conformance-type":"import"},{"name":"sal-remote_2014-01-14","revision":"2014-01-14","schema":"/rests/modules/sal-remote?revision=2014-01-14","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:remote","conformance-type":"import"},{"name":"yang-ext_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/yang-ext?revision=2013-07-09","namespace":"urn:opendaylight:yang:extension:yang-ext","conformance-type":"import"},{"name":"opendaylight-multipart-types_2017-01-12","revision":"2017-01-12","schema":"/rests/modules/opendaylight-multipart-types?revision=2017-01-12","namespace":"urn:opendaylight:multipart:types","conformance-type":"import"},{"name":"opendaylight-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-inventory?revision=2013-08-19","namespace":"urn:opendaylight:inventory","conformance-type":"import"},{"name":"sal-queue_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-queue?revision=2015-03-05","namespace":"urn:opendaylight:queue:service","conformance-type":"import"},{"name":"sal-groups-batch_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/sal-groups-batch?revision=2016-03-15","namespace":"urn:opendaylight:groups:service","conformance-type":"import"},{"name":"arbitrator-reconcile_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/arbitrator-reconcile?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:arbitrator-reconcile:service","conformance-type":"import"},{"name":"ietf-yang-metadata_2016-08-05","revision":"2016-08-05","schema":"/rests/modules/ietf-yang-metadata?revision=2016-08-05","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-metadata","conformance-type":"import"},{"name":"opendaylight-arbitrary-bitmask-fields_2016-01-30","revision":"2016-01-30","schema":"/rests/modules/opendaylight-arbitrary-bitmask-fields?revision=2016-01-30","namespace":"urn:opendaylight:arbitrary:bitmask:fields","conformance-type":"import"},{"name":"ietf-udp-client_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-client?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-client","conformance-type":"import","feature":["local-binding"]},{"name":"opendaylight-meter-types_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/opendaylight-meter-types?revision=2013-09-18","namespace":"urn:opendaylight:meter:types","conformance-type":"import"},{"name":"opendaylight-action-types_2013-11-12","revision":"2013-11-12","schema":"/rests/modules/opendaylight-action-types?revision=2013-11-12","namespace":"urn:opendaylight:action:types","conformance-type":"import"},{"name":"sal-role_2015-07-27","revision":"2015-07-27","schema":"/rests/modules/sal-role?revision=2015-07-27","namespace":"urn:opendaylight:role:service","conformance-type":"import"},{"name":"openflow-provider-config_2016-05-10","revision":"2016-05-10","schema":"/rests/modules/openflow-provider-config?revision=2016-05-10","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:provider:config","conformance-type":"import"},{"name":"odl-serviceutils-upgrade_2018-07-02","revision":"2018-07-02","schema":"/rests/modules/odl-serviceutils-upgrade?revision=2018-07-02","namespace":"urn:opendaylight:serviceutils:upgrade","conformance-type":"import"},{"name":"opendaylight-match-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-match-types?revision=2013-10-26","namespace":"urn:opendaylight:model:match:types","conformance-type":"import"},{"name":"ietf-restconf-server_2024-08-14","revision":"2024-08-14","schema":"/rests/modules/ietf-restconf-server?revision=2024-08-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-server","conformance-type":"import","feature":["http-listen","https-listen"]},{"name":"reconciliation-result-state_2017-07-13","revision":"2017-07-13","schema":"/rests/modules/reconciliation-result-state?revision=2017-07-13","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:rf:state","conformance-type":"import"},{"name":"onf-extensions_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/onf-extensions?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf","conformance-type":"import"},{"name":"sal-table_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/sal-table?revision=2013-10-26","namespace":"urn:opendaylight:table:service","conformance-type":"import"},{"name":"iana-http-versions_2026-02-04","revision":"2026-02-04","schema":"/rests/modules/iana-http-versions?revision=2026-02-04","namespace":"urn:ietf:params:xml:ns:yang:iana-http-versions","conformance-type":"import"},{"name":"opendaylight-direct-statistics_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/opendaylight-direct-statistics?revision=2016-05-11","namespace":"urn:opendaylight:direct:statistics","conformance-type":"import"},{"name":"opendaylight-port-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-port-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:port","conformance-type":"import"},{"name":"sal-async-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/sal-async-config?revision=2017-06-19","namespace":"urn:opendaylight:async-config:service","conformance-type":"import"},{"name":"aaa-password-service-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-password-service-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:password:service:config","conformance-type":"import"},{"name":"ietf-yang-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-yang-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-types","conformance-type":"import"},{"name":"opendaylight-queue-statistics_2013-12-16","revision":"2013-12-16","schema":"/rests/modules/opendaylight-queue-statistics?revision=2013-12-16","namespace":"urn:opendaylight:queue:statistics","conformance-type":"import"},{"name":"sal-bundle_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/sal-bundle?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf:bundle:service","conformance-type":"import"},{"name":"ietf-restconf-subscribed-notifications_2019-11-17","revision":"2019-11-17","schema":"/rests/modules/ietf-restconf-subscribed-notifications?revision=2019-11-17","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-subscribed-notifications","conformance-type":"import"},{"name":"sal-meters-batch_2016-03-16","revision":"2016-03-16","schema":"/rests/modules/sal-meters-batch?revision=2016-03-16","namespace":"urn:opendaylight:meters:service","conformance-type":"import"},{"name":"odl-entity-owners","revision":"","schema":"/rests/modules/odl-entity-owners","namespace":"urn:opendaylight:params:xml:ns:yang:controller:entity-owners","conformance-type":"import"},{"name":"sal-experimenter-mp-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-mp-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-mp-message:service","conformance-type":"import"},{"name":"packet-processing_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/packet-processing?revision=2013-07-09","namespace":"urn:opendaylight:packet:service","conformance-type":"import"},{"name":"openflow-configuration_2014-06-30","revision":"2014-06-30","schema":"/rests/modules/openflow-configuration?revision=2014-06-30","namespace":"urn:opendaylight:openflow:config","conformance-type":"import"},{"name":"odl-srm-rpcs_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-rpcs?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:rpc","conformance-type":"import"},{"name":"ietf-netconf-acm_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-netconf-acm?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-acm","conformance-type":"import"},{"name":"iana-crypt-hash_2014-08-06","revision":"2014-08-06","schema":"/rests/modules/iana-crypt-hash?revision=2014-08-06","namespace":"urn:ietf:params:xml:ns:yang:iana-crypt-hash","conformance-type":"import","feature":["crypt-hash-sha-512","crypt-hash-sha-256","crypt-hash-md5"]},{"name":"openflow-extensible-match_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-extensible-match?revision=2015-02-25","namespace":"urn:opendaylight:openflow:oxm","conformance-type":"import"}],"module-set-id":"2"}}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:40.498598" elapsed="0.004304"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:40.498274" elapsed="0.004678"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:40.498240" elapsed="0.004747"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:40.506541" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:40.503436" elapsed="0.003169"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:40.503100" elapsed="0.003553"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:40.503074" elapsed="0.003612"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:52:40.507532" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:40.506960" elapsed="0.000609"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:40.508123" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:40.507699" elapsed="0.000506"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:40.508714" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:40.508396" elapsed="0.000345"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:40.508231" elapsed="0.000547"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:40.507670" elapsed="0.001131"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:52:40.509376" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:40.508984" elapsed="0.000419"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:40.509748" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:40.509498" elapsed="0.000310"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:40.510332" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:40.509991" elapsed="0.000368"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:40.509832" elapsed="0.000563"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:40.509478" elapsed="0.000939"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:52:40.510595" elapsed="0.000363"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:52:40.511494" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:40.511148" elapsed="0.000372"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:52:40.511700" elapsed="0.002214"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:52:40.497194" elapsed="0.016845"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:52:40.514411" elapsed="0.000049"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:52:40.514186" elapsed="0.000338"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:40.514119" elapsed="0.000441"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:52:40.525044" level="INFO">${text_normalized} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:52:40.515300" elapsed="0.009794"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:52:40.525188" elapsed="0.000071"/>
</return>
<msg time="2026-04-08T00:52:40.525522" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:52:40.472301" elapsed="0.053330"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:52:40.526106" elapsed="0.000031"/>
</return>
<msg time="2026-04-08T00:52:40.526307" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="PASS" start="2026-04-08T00:52:40.334385" elapsed="0.191950"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Json_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:40.526662" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:40.526421" elapsed="0.000430"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:40.526403" elapsed="0.000475"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:52:40.526912" elapsed="0.000027"/>
</return>
<arg>session=${session}</arg>
<arg>folder=${RESTCONF_MODULES_DIR}</arg>
<arg>verify=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Add arguments sensible for JSON data, return Get_Templated response text.
Optionally, verification against JSON data (may be iterated) is called.
Only subset of JSON data is verified and returned if JMES path is specified in
file ${folder}/jmespath.expr.</doc>
<status status="PASS" start="2026-04-08T00:52:40.330341" elapsed="0.196699"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:40.326265" elapsed="0.200818"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:40.326246" elapsed="0.200861"/>
</if>
<kw name="Resolve_Shard_Type_Class" owner="ClusterManagement">
<if>
<branch type="IF" condition="'${shard_type}' == 'config'">
<return>
<value>DistributedConfigDatastore</value>
<status status="PASS" start="2026-04-08T00:52:40.527741" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-08T00:52:40.527635" elapsed="0.000166"/>
</branch>
<branch type="ELSE IF" condition="'${shard_type}' == 'operational'">
<return>
<value>DistributedOperationalDatastore</value>
<status status="NOT RUN" start="2026-04-08T00:52:40.527860" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:52:40.527824" elapsed="0.000102"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:40.527617" elapsed="0.000333"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized shard type: ${shard_type}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:40.528096" elapsed="0.000022"/>
</kw>
<msg time="2026-04-08T00:52:40.528234" level="INFO">${type_class} = DistributedConfigDatastore</msg>
<var>${type_class}</var>
<arg>shard_type=${shard_type}</arg>
<doc>Simple lookup for class name corresponding to desired type.</doc>
<status status="PASS" start="2026-04-08T00:52:40.527366" elapsed="0.000894"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:52:40.528797" level="INFO">${cluster_index} = 3</msg>
<var>${cluster_index}</var>
<arg>${member_index}+${NODE_ROLE_INDEX_START}-1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:40.528427" elapsed="0.000397"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:40.529458" level="INFO">${uri} = jolokia/read/org.opendaylight.controller:Category=Shards,name=member-3-shard-topology-config,type=DistributedConfigDatastore</msg>
<var>${uri}</var>
<arg>${JOLOKIA_READ_URI}:Category=Shards,name=member-${cluster_index}-shard-${shard_name}-${shard_type},type=${type_class}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:40.528978" elapsed="0.000508"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:40.535015" level="INFO">jolokia/read/org.opendaylight.controller:Category=Shards,name=member-3-shard-topology-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:40.534575" elapsed="0.000486"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:40.535667" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:40.535231" elapsed="0.000481"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:52:40.552419" level="INFO">GET Request : url=http://10.30.171.110:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-3-shard-topology-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-3-shard-topology-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:52:40.552556" level="INFO">GET Response : url=http://10.30.171.110:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-3-shard-topology-config,type=DistributedConfigDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Wed, 08 Apr 2026 00:52:40 GMT', 'Expires': 'Tue, 07 Apr 2026 23:52:40 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-3-shard-topology-config,type=DistributedConfigDatastore","type":"read"},"value":{"ReadWriteTransactionCount":0,"SnapshotIndex":-1,"InMemoryJournalLogSize":0,"ReplicatedToAllIndex":-1,"Leader":"member-1-shard-topology-config","LastIndex":-1,"RaftState":"Follower","LastApplied":-1,"LastCommittedTransactionTime":"1970-01-01 00:00:00.000","PeerAddresses":"member-2-shard-topology-config: pekko:\/\/opendaylight-cluster-data@10.30.170.131:2550\/user\/shardmanager-config\/member-2-shard-topology-config, member-1-shard-topology-config: pekko:\/\/opendaylight-cluster-data@10.30.170.48:2550\/user\/shardmanager-config\/member-1-shard-topology-config","LastLogIndex":-1,"LastLeadershipChangeTime":"2026-04-08 00:46:45.985","FollowerInitialSyncStatus":true,"FollowerInfo":[],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"269.8 μs","CurrentTerm":2,"LastTerm":-1,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-topology-config","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":0,"TxCohortCacheSize":0,"PeerVotingStates":"member-2-shard-topology-config: true, member-1-shard-topology-config: true","LastLogTerm":-1,"StatRetrievalError":null,"CommitIndex":-1,"SnapshotTerm":-1,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-3-shard-topology-config","LeadershipChangeCount":1,"InMemoryJournalDataSize":0},"timestamp":1775609560,"status":200} 
 </msg>
<msg time="2026-04-08T00:52:40.552750" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:52:40.546715" elapsed="0.006142"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:40.535779" elapsed="0.017363"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:40.553462" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:40.553225" elapsed="0.000683"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:40.535761" elapsed="0.018183"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:40.560835" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-3-shard-topology-config,type=DistributedConfigDatastore","type":"read"},"value":{"ReadWriteTransactionCount":0,"SnapshotIndex":-1,"InMemoryJournalLogSize":0,"ReplicatedToAllIndex":-1,"Leader":"member-1-shard-topology-config","LastIndex":-1,"RaftState":"Follower","LastApplied":-1,"LastCommittedTransactionTime":"1970-01-01 00:00:00.000","PeerAddresses":"member-2-shard-topology-config: pekko:\/\/opendaylight-cluster-data@10.30.170.131:2550\/user\/shardmanager-config\/member-2-shard-topology-config, member-1-shard-topology-config: pekko:\/\/opendaylight-cluster-data@10.30.170.48:2550\/user\/shardmanager-config\/member-1-shard-topology-config","LastLogIndex":-1,"LastLeadershipChangeTime":"2026-04-08 00:46:45.985","FollowerInitialSyncStatus":true,"FollowerInfo":[],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"269.8 μs","CurrentTerm":2,"LastTerm":-1,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-topology-config","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":0,"TxCohortCacheSize":0,"PeerVotingStates":"member-2-shard-topology-config: true, member-1-shard-topology-config: true","LastLogTerm":-1,"StatRetrievalError":null,"CommitIndex":-1,"SnapshotTerm":-1,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-3-shard-topology-config","LeadershipChangeCount":1,"InMemoryJournalDataSize":0},"timestamp":1775609560,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:40.557220" elapsed="0.003823"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:40.555943" elapsed="0.005166"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:40.555916" elapsed="0.005232"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:40.564474" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:40.562096" elapsed="0.002477"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:40.561252" elapsed="0.003371"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:40.561233" elapsed="0.003428"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:52:40.566047" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:40.565291" elapsed="0.000818"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:40.566838" elapsed="0.000035"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:40.566371" elapsed="0.000553"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:40.567811" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:40.567309" elapsed="0.000548"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:40.566962" elapsed="0.000946"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:40.566350" elapsed="0.001593"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:52:40.569357" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:40.568596" elapsed="0.000823"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:40.570055" elapsed="0.000035"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:40.569588" elapsed="0.000553"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:40.571087" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:40.570593" elapsed="0.000540"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:40.570263" elapsed="0.000937"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:40.569568" elapsed="0.001669"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:52:40.571459" elapsed="0.000618"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:52:40.572914" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:40.572423" elapsed="0.000552"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:52:40.573304" elapsed="0.002388"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:52:40.554959" elapsed="0.020892"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:52:40.576049" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:52:40.575923" elapsed="0.000171"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:40.575905" elapsed="0.000211"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:52:40.579872" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-3-shard-topology-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1775609...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:52:40.576277" elapsed="0.003625"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:52:40.579954" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:52:40.580112" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-3-shard-topology-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1775609...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:52:40.530437" elapsed="0.049702"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:52:40.580214" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:52:40.580405" level="INFO">${data_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-3-shard-topology-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1775609...</msg>
<var>${data_text}</var>
<arg>uri=${uri}</arg>
<arg>session=${session}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-08T00:52:40.529696" elapsed="0.050739"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:52:40.581678" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-3-shard-topology-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1775609560, 'value...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:40.581001" elapsed="0.000707"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-08T00:52:40.581802" elapsed="0.000031"/>
</return>
<msg time="2026-04-08T00:52:40.581982" level="INFO">${data_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-3-shard-topology-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1775609560, 'value...</msg>
<var>${data_object}</var>
<arg>${data_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-08T00:52:40.580661" elapsed="0.001348"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:52:40.582482" level="INFO">${value} = {'AbortTransactionsCount': 0, 'CommitIndex': -1, 'CommittedTransactionsCount': 0, 'CurrentTerm': 2, 'FailedReadTransactionsCount': 0, 'FailedTransactionsCount': 0, 'FollowerInfo': [], 'FollowerInitial...</msg>
<var>${value}</var>
<arg>${data_object}</arg>
<arg>value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:52:40.582274" elapsed="0.000236"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:52:40.582865" level="INFO">${raft_property} = Follower</msg>
<var>${raft_property}</var>
<arg>${value}</arg>
<arg>${property}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:52:40.582664" elapsed="0.000226"/>
</kw>
<return>
<value>${raft_property}</value>
<status status="PASS" start="2026-04-08T00:52:40.582937" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:52:40.583089" level="INFO">${raft_state} = Follower</msg>
<var>${raft_state}</var>
<arg>RaftState</arg>
<arg>${shard_name}</arg>
<arg>${shard_type}</arg>
<arg>${member_index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft property.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T00:52:40.324592" elapsed="0.258522"/>
</kw>
<return>
<value>${raft_state}</value>
<status status="PASS" start="2026-04-08T00:52:40.583192" elapsed="0.000027"/>
</return>
<msg time="2026-04-08T00:52:40.583345" level="INFO">${raft_state} = Follower</msg>
<var>${raft_state}</var>
<arg>shard_name=${shard_name}</arg>
<arg>shard_type=${ds_type}</arg>
<arg>member_index=${index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft status.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T00:52:40.323867" elapsed="0.259503"/>
</kw>
<if>
<branch type="IF" condition="'Follower' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${follower_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-08T00:52:40.583668" elapsed="0.000191"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:40.583451" elapsed="0.000446"/>
</branch>
<branch type="ELSE IF" condition="'Leader' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${leader_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:40.584064" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:40.583921" elapsed="0.000195"/>
</branch>
<branch type="ELSE IF" condition="${validate}">
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized Raft state: ${raft_state}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:40.584299" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:40.584140" elapsed="0.000210"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:40.583434" elapsed="0.000939"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T00:52:40.323703" elapsed="0.260722"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-08T00:52:39.803083" elapsed="0.781379"/>
</for>
<return>
<value>${leader_list}</value>
<value>${follower_list}</value>
<status status="PASS" start="2026-04-08T00:52:40.584507" elapsed="0.000027"/>
</return>
<msg time="2026-04-08T00:52:40.584708" level="INFO">${leader_list} = [1]</msg>
<msg time="2026-04-08T00:52:40.584755" level="INFO">${follower_list} = [2, 3]</msg>
<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="PASS" start="2026-04-08T00:52:39.799046" elapsed="0.785732"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T00:52:40.585237" level="INFO">Length is 1.</msg>
<msg time="2026-04-08T00:52:40.585314" level="INFO">${leader_count} = 1</msg>
<var>${leader_count}</var>
<arg>${leader_list}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T00:52:40.584953" elapsed="0.000384"/>
</kw>
<if>
<branch type="IF" condition="${leader_count} &lt; 1">
<kw name="Fail" owner="BuiltIn">
<arg>No leader found.</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:40.585617" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:40.585406" elapsed="0.000263"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:40.585389" elapsed="0.000303"/>
</if>
<kw name="Length Should Be" owner="BuiltIn">
<msg time="2026-04-08T00:52:40.587933" level="INFO">Length is 1.</msg>
<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="PASS" start="2026-04-08T00:52:40.585826" elapsed="0.002154"/>
</kw>
<kw name="Get From List" owner="Collections">
<msg time="2026-04-08T00:52:40.588345" level="INFO">${leader} = 1</msg>
<var>${leader}</var>
<arg>${leader_list}</arg>
<arg>0</arg>
<doc>Returns the value specified with an ``index`` from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:52:40.588143" elapsed="0.000228"/>
</kw>
<return>
<value>${leader}</value>
<value>${follower_list}</value>
<status status="PASS" start="2026-04-08T00:52:40.588442" elapsed="0.000032"/>
</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="PASS" start="2026-04-08T00:52:39.796279" elapsed="0.792324"/>
</kw>
<var name="${shard_name}">topology</var>
<status status="PASS" start="2026-04-08T00:52:39.796040" elapsed="0.792610"/>
</iter>
<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-04-08T00:52:40.593017" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:52:40.592630" elapsed="0.000415"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:52:40.593571" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:52:40.593262" elapsed="0.000335"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:52:40.593643" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:52:40.593797" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:52:40.592227" elapsed="0.001595"/>
</kw>
<kw name="Sort List" owner="Collections">
<arg>${index_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="PASS" start="2026-04-08T00:52:40.593974" elapsed="0.000152"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:52:40.594636" level="INFO">${ds_type} = config</msg>
<var>${ds_type}</var>
<arg>'${shard_type}' != 'config'</arg>
<arg>operational</arg>
<arg>config</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:52:40.594303" elapsed="0.000359"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:52:40.595052" level="INFO">${leader_list} = []</msg>
<var>${leader_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:52:40.594819" elapsed="0.000259"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:52:40.595511" level="INFO">${follower_list} = []</msg>
<var>${follower_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:52:40.595242" elapsed="0.000299"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_Raft_State_Of_Shard_At_Member" owner="ClusterManagement">
<kw name="Get_Raft_Property_From_Shard_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:40.597989" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:40.597668" elapsed="0.000348"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:52:40.598063" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:52:40.598235" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:52:40.597329" elapsed="0.000931"/>
</kw>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Get_As_Json_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:40.681634" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:40.681099" elapsed="0.000569"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:52:40.682521" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:52:40.682209" elapsed="0.000404">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-08T00:52:40.682722" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:52:40.681847" elapsed="0.000901"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:52:40.683477" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:52:40.682920" elapsed="0.000594"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T00:52:40.684018" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-08T00:52:40.684210" level="INFO">${template} = /rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T00:52:40.683863" elapsed="0.000375"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:40.684652" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:40.684398" elapsed="0.000300"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:40.685783" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:40.685528" elapsed="0.000299"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-08T00:52:40.686273" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-08T00:52:40.685985" elapsed="0.000314"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:40.686654" elapsed="0.000022"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:40.686861" elapsed="0.000024"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:40.687033" elapsed="0.000020"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-08T00:52:40.686511" elapsed="0.000699"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-08T00:52:40.686353" elapsed="0.000891"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-08T00:52:40.687293" elapsed="0.000036"/>
</return>
<msg time="2026-04-08T00:52:40.687467" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-08T00:52:40.685125" elapsed="0.002367"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:40.684785" elapsed="0.002739"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:40.687701" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:40.687549" elapsed="0.000208"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:40.684759" elapsed="0.003019"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:52:40.688396" level="INFO">${final_text} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:40.687918" elapsed="0.000505"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T00:52:40.688472" 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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="PASS" start="2026-04-08T00:52:40.680431" elapsed="0.008165"/>
</kw>
<msg time="2026-04-08T00:52:40.688650" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:52:40.667920" elapsed="0.020856"/>
</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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:40.701335" elapsed="0.000044"/>
</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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:40.713335" elapsed="0.000042"/>
</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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:40.725257" elapsed="0.000041"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:40.726045" elapsed="0.000045"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:40.726868" elapsed="0.000040"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:40.727561" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:40.727323" elapsed="0.000295"/>
</branch>
<status status="NOT RUN" start="2026-04-08T00:52:40.727304" elapsed="0.000339"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:40.727802" elapsed="0.000021"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:40.727987" elapsed="0.000021"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:40.728191" elapsed="0.000022"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-08T00:52:40.727249" elapsed="0.001020"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-08T00:52:40.726998" elapsed="0.001311"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:40.729008" elapsed="0.000035"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-08T00:52:40.729197" elapsed="0.000052"/>
</return>
<msg time="2026-04-08T00:52:40.729445" level="INFO">${uri} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-08T00:52:40.661393" elapsed="0.068166"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:52:40.732575" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:52:40.732285" elapsed="0.000372">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-08T00:52:40.732860" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:52:40.731788" elapsed="0.001120"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:40.733466" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:40.733052" elapsed="0.000482"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:40.734204" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:40.733881" elapsed="0.000351"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:40.733574" elapsed="0.000705"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:40.732995" elapsed="0.001323"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:52:40.737444" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:52:40.735049" elapsed="0.002443"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-08T00:52:40.737584" elapsed="0.000074"/>
</return>
<msg time="2026-04-08T00:52:40.737963" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:52:40.730607" elapsed="0.007467"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:52:40.740895" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:52:40.740647" elapsed="0.000313">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-08T00:52:40.741160" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:52:40.740186" elapsed="0.001038"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-08T00:52:40.741623" elapsed="0.000080"/>
</return>
<status status="PASS" start="2026-04-08T00:52:40.741357" elapsed="0.000437"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:40.741304" elapsed="0.000537"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:40.742601" elapsed="0.000038"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:40.743523" elapsed="0.000046"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-08T00:52:40.743650" elapsed="0.000048"/>
</return>
<msg time="2026-04-08T00:52:40.745926" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:52:40.738914" elapsed="0.007122"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:40.749982" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:40.749563" elapsed="0.000524"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:40.751322" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:40.750925" elapsed="0.000493"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:52:40.761938" level="INFO">GET Request : url=http://10.30.170.48:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 path_url=/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01jewze00gqgu8yuon50tdwq65226.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:52:40.762432" level="INFO">GET Response : url=http://10.30.170.48:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Transfer-Encoding': 'chunked'} 
 body={"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","hidden-symmetric-keys","encrypted-private-keys","asymmetrically-encrypted-value-format","cms-encrypted-data-format","cleartext-private-keys","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["ssh-client-keepalives","client-ident-hostbased","client-ident-publickey","client-ident-password"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-ex... (set the log level to DEBUG or TRACE to see the full content) 
 </msg>
<msg time="2026-04-08T00:52:40.762656" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:52:40.753632" elapsed="0.009051"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:40.751542" elapsed="0.011196"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:40.763051" elapsed="0.000032"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:40.762782" elapsed="0.000620"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:40.751492" elapsed="0.012001"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:40.772262" level="INFO">{"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","hidden-symmetric-keys","encrypted-private-keys","asymmetrically-encrypted-value-format","cms-encrypted-data-format","cleartext-private-keys","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["ssh-client-keepalives","client-ident-hostbased","client-ident-publickey","client-ident-password"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-experimenter-types?revision=2015-10-20","namespace":"urn:opendaylight:openflowplugin:experimenter:types","conformance-type":"import"},{"name":"ietf-ip_2018-02-22","revision":"2018-02-22","schema":"/rests/modules/ietf-ip?revision=2018-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-ip","conformance-type":"import","feature":["ipv6-privacy-autoconf","ipv4-non-contiguous-netmasks"]},{"name":"ietf-tcp-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-client","conformance-type":"import","feature":["local-binding-supported","tcp-client-keepalives"]},{"name":"node-config_2014-10-15","revision":"2014-10-15","schema":"/rests/modules/node-config?revision=2014-10-15","namespace":"urn:opendaylight:module:config","conformance-type":"import"},{"name":"ietf-restconf_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf","conformance-type":"import"},{"name":"ietf-datastores_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-datastores?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-datastores","conformance-type":"import"},{"name":"ietf-yang-patch_2017-02-22","revision":"2017-02-22","schema":"/rests/modules/ietf-yang-patch?revision=2017-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-patch","conformance-type":"import"},{"name":"sal-group_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-group?revision=2013-09-18","namespace":"urn:opendaylight:group:service","conformance-type":"import"},{"name":"odl-codegen-extensions_2024-06-27","revision":"2024-06-27","schema":"/rests/modules/odl-codegen-extensions?revision=2024-06-27","namespace":"urn:opendaylight:yang:extension:codegen","conformance-type":"import"},{"name":"sal-meter_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-meter?revision=2013-09-18","namespace":"urn:opendaylight:meter:service","conformance-type":"import"},{"name":"ietf-interfaces_2018-02-20","revision":"2018-02-20","schema":"/rests/modules/ietf-interfaces?revision=2018-02-20","namespace":"urn:ietf:params:xml:ns:yang:ietf-interfaces","conformance-type":"import","feature":["pre-provisioning","if-mib","arbitrary-names"]},{"name":"opendaylight-l2-types_2013-08-27","revision":"2013-08-27","schema":"/rests/modules/opendaylight-l2-types?revision=2013-08-27","namespace":"urn:opendaylight:l2:types","conformance-type":"import"},{"name":"opendaylight-flow-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-flow-types?revision=2013-10-26","namespace":"urn:opendaylight:flow:types","conformance-type":"import"},{"name":"lldp-speaker-config_2016-05-12","revision":"2016-05-12","schema":"/rests/modules/lldp-speaker-config?revision=2016-05-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker:config","conformance-type":"import"},{"name":"aaa-cert_2015-11-26","revision":"2015-11-26","schema":"/rests/modules/aaa-cert?revision=2015-11-26","namespace":"urn:opendaylight:yang:aaa:cert","conformance-type":"import"},{"name":"openflow-action_2015-02-03","revision":"2015-02-03","schema":"/rests/modules/openflow-action?revision=2015-02-03","namespace":"urn:opendaylight:openflow:common:action","conformance-type":"import"},{"name":"openflow-approved-extensions_2016-08-02","revision":"2016-08-02","schema":"/rests/modules/openflow-approved-extensions?revision=2016-08-02","namespace":"urn:opendaylight:openflow:approved:extensions","conformance-type":"import"},{"name":"nc-notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/nc-notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netmod:notification","conformance-type":"import"},{"name":"ietf-netconf-nmda_2019-01-07","revision":"2019-01-07","schema":"/rests/modules/ietf-netconf-nmda?revision=2019-01-07","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-nmda","conformance-type":"import","feature":["with-defaults","origin"]},{"name":"ietf-tcp-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-common","conformance-type":"import","feature":["keepalives-supported"]},{"name":"network-topology_2013-10-21","revision":"2013-10-21","schema":"/rests/modules/network-topology?revision=2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:network-topology","conformance-type":"import"},{"name":"aaa-encrypt-service-config_2024-02-02","revision":"2024-02-02","schema":"/rests/modules/aaa-encrypt-service-config?revision=2024-02-02","namespace":"config:aaa:authn:encrypt:service:config","conformance-type":"import"},{"name":"openflow-instruction_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-instruction?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:instruction","conformance-type":"import"},{"name":"ietf-tls-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-client","conformance-type":"import","feature":["client-ident-x509-cert","server-auth-x509-cert"]},{"name":"opendaylight-group-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-group-statistics?revision=2013-11-11","namespace":"urn:opendaylight:group:statistics","conformance-type":"import"},{"name":"cluster-admin_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/cluster-admin?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:cluster:admin","conformance-type":"import"},{"name":"opendaylight-flow-statistics_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-flow-statistics?revision=2013-08-19","namespace":"urn:opendaylight:flow:statistics","conformance-type":"import"},{"name":"opendaylight-table-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-table-types?revision=2013-10-26","namespace":"urn:opendaylight:table:types","conformance-type":"import"},{"name":"forwarding-rules-manager-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/forwarding-rules-manager-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:forwardingrules-manager:config","conformance-type":"import"},{"name":"odl-srm-types_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-types?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:types","conformance-type":"import"},{"name":"ietf-x509-cert-to-name_2014-12-10","revision":"2014-12-10","schema":"/rests/modules/ietf-x509-cert-to-name?revision=2014-12-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-x509-cert-to-name","conformance-type":"import"},{"name":"flow-node-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-node-inventory?revision=2013-08-19","namespace":"urn:opendaylight:flow:inventory","conformance-type":"import"},{"name":"flow-errors_2013-11-16","revision":"2013-11-16","schema":"/rests/modules/flow-errors?revision=2013-11-16","namespace":"urn:opendaylight:flow:errors","conformance-type":"import"},{"name":"ietf-netconf_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:netconf:base:1.0","conformance-type":"import","feature":["xpath","url","rollback-on-error","validate","startup","candidate","confirmed-commit","writable-running"]},{"name":"iana-ssh-public-key-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-public-key-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-public-key-algs","conformance-type":"import"},{"name":"aaa-cert-mdsal_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/aaa-cert-mdsal?revision=2016-03-21","namespace":"urn:opendaylight:yang:aaa:cert:mdsal","conformance-type":"import"},{"name":"odl-device-notification_2024-02-18","revision":"2024-02-18","schema":"/rests/modules/odl-device-notification?revision=2024-02-18","namespace":"urn:opendaylight:device:notification","conformance-type":"import"},{"name":"ietf-origin_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-origin?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-origin","conformance-type":"import"},{"name":"openflow-augments_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-augments?revision=2015-02-25","namespace":"urn:opendaylight:openflow:augments","conformance-type":"import"},{"name":"iana-ssh-encryption-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-encryption-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-encryption-algs","conformance-type":"import"},{"name":"ietf-truststore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-truststore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-truststore","conformance-type":"import","feature":["inline-definitions-supported"]},{"name":"distributed-datastore-provider_2025-01-30","revision":"2025-01-30","schema":"/rests/modules/distributed-datastore-provider?revision=2025-01-30","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:distributed-datastore-provider","conformance-type":"import"},{"name":"opendaylight-group-types_2013-10-18","revision":"2013-10-18","schema":"/rests/modules/opendaylight-group-types?revision=2013-10-18","namespace":"urn:opendaylight:group:types","conformance-type":"import"},{"name":"sal-remote-augment_2023-11-03","revision":"2023-11-03","schema":"/rests/modules/sal-remote-augment?revision=2023-11-03","namespace":"urn:sal:restconf:event:subscription","conformance-type":"import"},{"name":"opendaylight-ipv6-arbitrary-bitmask-fields_2016-02-24","revision":"2016-02-24","schema":"/rests/modules/opendaylight-ipv6-arbitrary-bitmask-fields?revision=2016-02-24","namespace":"urn:opendaylight:opendaylight-ipv6-arbitrary-bitmask-fields","conformance-type":"import"},{"name":"sal-flows-batch_2016-03-14","revision":"2016-03-14","schema":"/rests/modules/sal-flows-batch?revision=2016-03-14","namespace":"urn:opendaylight:flows:service","conformance-type":"import"},{"name":"ietf-tls-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-common","conformance-type":"import","feature":["tls12","hello-params","tls13"]},{"name":"openflow-types_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-types?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:types","conformance-type":"import"},{"name":"ietf-netconf-with-defaults_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf-with-defaults?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults","conformance-type":"import"},{"name":"odl-srm-ops_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-ops?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:ops","conformance-type":"import"},{"name":"odl-general-entity_2015-09-30","revision":"2015-09-30","schema":"/rests/modules/odl-general-entity?revision=2015-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:mdsal:core:general-entity","conformance-type":"import"},{"name":"iana-ssh-key-exchange-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-key-exchange-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-key-exchange-algs","conformance-type":"import"},{"name":"node-ssl-connection-error_2019-07-23","revision":"2019-07-23","schema":"/rests/modules/node-ssl-connection-error?revision=2019-07-23","namespace":"urn:opendaylight:node-ssl-connection-error:service","conformance-type":"import"},{"name":"openflow-protocol_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-protocol?revision=2013-07-31","namespace":"urn:opendaylight:openflow:protocol","conformance-type":"import"},{"name":"ietf-udp-server_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-server?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-server","conformance-type":"import"},{"name":"ietf-keystore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-keystore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-keystore","conformance-type":"import","feature":["asymmetric-keys","inline-definitions-supported"]},{"name":"aaa_2016-12-14","revision":"2016-12-14","schema":"/rests/modules/aaa?revision=2016-12-14","namespace":"urn:opendaylight:params:xml:ns:yang:aaa","conformance-type":"import"},{"name":"aaa-cert-rpc_2015-12-15","revision":"2015-12-15","schema":"/rests/modules/aaa-cert-rpc?revision=2015-12-15","namespace":"urn:opendaylight:yang:aaa:cert:rpc","conformance-type":"import"},{"name":"system-notifications_2013-09-27","revision":"2013-09-27","schema":"/rests/modules/system-notifications?revision=2013-09-27","namespace":"urn:opendaylight:openflow:system","conformance-type":"import"},{"name":"sal-flat-batch_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/sal-flat-batch?revision=2016-03-21","namespace":"urn:opendaylight:flat-batch:service","conformance-type":"import"},{"name":"notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netconf:notification:1.0","conformance-type":"import"},{"name":"sal-remote_2014-01-14","revision":"2014-01-14","schema":"/rests/modules/sal-remote?revision=2014-01-14","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:remote","conformance-type":"import"},{"name":"yang-ext_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/yang-ext?revision=2013-07-09","namespace":"urn:opendaylight:yang:extension:yang-ext","conformance-type":"import"},{"name":"opendaylight-multipart-types_2017-01-12","revision":"2017-01-12","schema":"/rests/modules/opendaylight-multipart-types?revision=2017-01-12","namespace":"urn:opendaylight:multipart:types","conformance-type":"import"},{"name":"opendaylight-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-inventory?revision=2013-08-19","namespace":"urn:opendaylight:inventory","conformance-type":"import"},{"name":"sal-queue_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-queue?revision=2015-03-05","namespace":"urn:opendaylight:queue:service","conformance-type":"import"},{"name":"sal-groups-batch_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/sal-groups-batch?revision=2016-03-15","namespace":"urn:opendaylight:groups:service","conformance-type":"import"},{"name":"arbitrator-reconcile_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/arbitrator-reconcile?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:arbitrator-reconcile:service","conformance-type":"import"},{"name":"ietf-yang-metadata_2016-08-05","revision":"2016-08-05","schema":"/rests/modules/ietf-yang-metadata?revision=2016-08-05","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-metadata","conformance-type":"import"},{"name":"opendaylight-arbitrary-bitmask-fields_2016-01-30","revision":"2016-01-30","schema":"/rests/modules/opendaylight-arbitrary-bitmask-fields?revision=2016-01-30","namespace":"urn:opendaylight:arbitrary:bitmask:fields","conformance-type":"import"},{"name":"ietf-udp-client_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-client?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-client","conformance-type":"import","feature":["local-binding"]},{"name":"opendaylight-meter-types_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/opendaylight-meter-types?revision=2013-09-18","namespace":"urn:opendaylight:meter:types","conformance-type":"import"},{"name":"opendaylight-action-types_2013-11-12","revision":"2013-11-12","schema":"/rests/modules/opendaylight-action-types?revision=2013-11-12","namespace":"urn:opendaylight:action:types","conformance-type":"import"},{"name":"sal-role_2015-07-27","revision":"2015-07-27","schema":"/rests/modules/sal-role?revision=2015-07-27","namespace":"urn:opendaylight:role:service","conformance-type":"import"},{"name":"openflow-provider-config_2016-05-10","revision":"2016-05-10","schema":"/rests/modules/openflow-provider-config?revision=2016-05-10","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:provider:config","conformance-type":"import"},{"name":"odl-serviceutils-upgrade_2018-07-02","revision":"2018-07-02","schema":"/rests/modules/odl-serviceutils-upgrade?revision=2018-07-02","namespace":"urn:opendaylight:serviceutils:upgrade","conformance-type":"import"},{"name":"opendaylight-match-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-match-types?revision=2013-10-26","namespace":"urn:opendaylight:model:match:types","conformance-type":"import"},{"name":"ietf-restconf-server_2024-08-14","revision":"2024-08-14","schema":"/rests/modules/ietf-restconf-server?revision=2024-08-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-server","conformance-type":"import","feature":["http-listen","https-listen"]},{"name":"reconciliation-result-state_2017-07-13","revision":"2017-07-13","schema":"/rests/modules/reconciliation-result-state?revision=2017-07-13","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:rf:state","conformance-type":"import"},{"name":"onf-extensions_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/onf-extensions?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf","conformance-type":"import"},{"name":"sal-table_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/sal-table?revision=2013-10-26","namespace":"urn:opendaylight:table:service","conformance-type":"import"},{"name":"iana-http-versions_2026-02-04","revision":"2026-02-04","schema":"/rests/modules/iana-http-versions?revision=2026-02-04","namespace":"urn:ietf:params:xml:ns:yang:iana-http-versions","conformance-type":"import"},{"name":"opendaylight-direct-statistics_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/opendaylight-direct-statistics?revision=2016-05-11","namespace":"urn:opendaylight:direct:statistics","conformance-type":"import"},{"name":"opendaylight-port-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-port-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:port","conformance-type":"import"},{"name":"sal-async-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/sal-async-config?revision=2017-06-19","namespace":"urn:opendaylight:async-config:service","conformance-type":"import"},{"name":"aaa-password-service-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-password-service-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:password:service:config","conformance-type":"import"},{"name":"ietf-yang-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-yang-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-types","conformance-type":"import"},{"name":"opendaylight-queue-statistics_2013-12-16","revision":"2013-12-16","schema":"/rests/modules/opendaylight-queue-statistics?revision=2013-12-16","namespace":"urn:opendaylight:queue:statistics","conformance-type":"import"},{"name":"sal-bundle_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/sal-bundle?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf:bundle:service","conformance-type":"import"},{"name":"ietf-restconf-subscribed-notifications_2019-11-17","revision":"2019-11-17","schema":"/rests/modules/ietf-restconf-subscribed-notifications?revision=2019-11-17","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-subscribed-notifications","conformance-type":"import"},{"name":"sal-meters-batch_2016-03-16","revision":"2016-03-16","schema":"/rests/modules/sal-meters-batch?revision=2016-03-16","namespace":"urn:opendaylight:meters:service","conformance-type":"import"},{"name":"odl-entity-owners","revision":"","schema":"/rests/modules/odl-entity-owners","namespace":"urn:opendaylight:params:xml:ns:yang:controller:entity-owners","conformance-type":"import"},{"name":"sal-experimenter-mp-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-mp-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-mp-message:service","conformance-type":"import"},{"name":"packet-processing_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/packet-processing?revision=2013-07-09","namespace":"urn:opendaylight:packet:service","conformance-type":"import"},{"name":"openflow-configuration_2014-06-30","revision":"2014-06-30","schema":"/rests/modules/openflow-configuration?revision=2014-06-30","namespace":"urn:opendaylight:openflow:config","conformance-type":"import"},{"name":"odl-srm-rpcs_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-rpcs?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:rpc","conformance-type":"import"},{"name":"ietf-netconf-acm_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-netconf-acm?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-acm","conformance-type":"import"},{"name":"iana-crypt-hash_2014-08-06","revision":"2014-08-06","schema":"/rests/modules/iana-crypt-hash?revision=2014-08-06","namespace":"urn:ietf:params:xml:ns:yang:iana-crypt-hash","conformance-type":"import","feature":["crypt-hash-sha-512","crypt-hash-sha-256","crypt-hash-md5"]},{"name":"openflow-extensible-match_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-extensible-match?revision=2015-02-25","namespace":"urn:opendaylight:openflow:oxm","conformance-type":"import"}],"module-set-id":"2"}}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:40.767381" elapsed="0.005272"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:40.766832" elapsed="0.005870"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:40.766783" elapsed="0.005955"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:40.775973" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:40.773140" elapsed="0.002881"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:40.772841" elapsed="0.003215"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:40.772817" elapsed="0.003264"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:52:40.776720" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:40.776305" elapsed="0.000443"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:40.777089" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:40.776844" elapsed="0.000303"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:40.777669" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:40.777355" elapsed="0.000341"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:40.777189" elapsed="0.000543"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:40.776824" elapsed="0.000930"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:52:40.778392" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:40.777958" elapsed="0.000461"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:40.778755" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:40.778515" elapsed="0.000298"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:40.779466" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:40.778999" elapsed="0.000511"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:40.778838" elapsed="0.000733"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:40.778495" elapsed="0.001108"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:52:40.779903" elapsed="0.000652"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:52:40.781467" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:40.780899" elapsed="0.000616"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:52:40.781824" elapsed="0.003355"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:52:40.765133" elapsed="0.020180"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:52:40.785678" elapsed="0.000051"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:52:40.785450" elapsed="0.000353"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:40.785396" elapsed="0.000458"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:52:40.796410" level="INFO">${text_normalized} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:52:40.786638" elapsed="0.009838"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:52:40.796583" elapsed="0.000086"/>
</return>
<msg time="2026-04-08T00:52:40.796981" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:52:40.746802" elapsed="0.050292"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:52:40.797599" elapsed="0.000032"/>
</return>
<msg time="2026-04-08T00:52:40.797875" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="PASS" start="2026-04-08T00:52:40.606352" elapsed="0.191555"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Json_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:40.798347" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:40.797999" elapsed="0.000564"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:40.797979" elapsed="0.000612"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:52:40.798627" elapsed="0.000028"/>
</return>
<arg>session=${session}</arg>
<arg>folder=${RESTCONF_MODULES_DIR}</arg>
<arg>verify=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Add arguments sensible for JSON data, return Get_Templated response text.
Optionally, verification against JSON data (may be iterated) is called.
Only subset of JSON data is verified and returned if JMES path is specified in
file ${folder}/jmespath.expr.</doc>
<status status="PASS" start="2026-04-08T00:52:40.602303" elapsed="0.196456"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:40.598329" elapsed="0.200475"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:40.598311" elapsed="0.200517"/>
</if>
<kw name="Resolve_Shard_Type_Class" owner="ClusterManagement">
<if>
<branch type="IF" condition="'${shard_type}' == 'config'">
<return>
<value>DistributedConfigDatastore</value>
<status status="PASS" start="2026-04-08T00:52:40.799480" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-08T00:52:40.799370" elapsed="0.000170"/>
</branch>
<branch type="ELSE IF" condition="'${shard_type}' == 'operational'">
<return>
<value>DistributedOperationalDatastore</value>
<status status="NOT RUN" start="2026-04-08T00:52:40.799603" elapsed="0.000012"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:52:40.799564" elapsed="0.000078"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:40.799351" elapsed="0.000314"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized shard type: ${shard_type}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:40.799812" elapsed="0.000022"/>
</kw>
<msg time="2026-04-08T00:52:40.799933" level="INFO">${type_class} = DistributedConfigDatastore</msg>
<var>${type_class}</var>
<arg>shard_type=${shard_type}</arg>
<doc>Simple lookup for class name corresponding to desired type.</doc>
<status status="PASS" start="2026-04-08T00:52:40.799064" elapsed="0.000895"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:52:40.800627" level="INFO">${cluster_index} = 1</msg>
<var>${cluster_index}</var>
<arg>${member_index}+${NODE_ROLE_INDEX_START}-1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:40.800150" elapsed="0.000505"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:40.801510" level="INFO">${uri} = jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-default-config,type=DistributedConfigDatastore</msg>
<var>${uri}</var>
<arg>${JOLOKIA_READ_URI}:Category=Shards,name=member-${cluster_index}-shard-${shard_name}-${shard_type},type=${type_class}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:40.800818" elapsed="0.000727"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:40.808878" level="INFO">jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-default-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:40.808299" elapsed="0.000641"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:40.809736" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:40.809146" elapsed="0.000637"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:52:40.826825" level="INFO">GET Request : url=http://10.30.170.48:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-default-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-default-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:52:40.826965" level="INFO">GET Response : url=http://10.30.170.48:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-default-config,type=DistributedConfigDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Wed, 08 Apr 2026 00:52:40 GMT', 'Expires': 'Tue, 07 Apr 2026 23:52:40 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-1-shard-default-config,type=DistributedConfigDatastore","type":"read"},"value":{"ReadWriteTransactionCount":21,"SnapshotIndex":73,"InMemoryJournalLogSize":1,"ReplicatedToAllIndex":73,"Leader":"member-1-shard-default-config","LastIndex":74,"RaftState":"Leader","LastApplied":74,"LastCommittedTransactionTime":"2026-04-08 00:46:46.951","PeerAddresses":"member-3-shard-default-config: pekko:\/\/opendaylight-cluster-data@10.30.171.110:2550\/user\/shardmanager-config\/member-3-shard-default-config, member-2-shard-default-config: pekko:\/\/opendaylight-cluster-data@10.30.170.131:2550\/user\/shardmanager-config\/member-2-shard-default-config","LastLogIndex":74,"LastLeadershipChangeTime":"2026-04-08 00:46:45.929","FollowerInitialSyncStatus":false,"FollowerInfo":[{"timeSinceLastActivity":"00:00:00.352","active":true,"matchIndex":74,"voting":true,"id":"member-3-shard-default-config","nextIndex":75},{"timeSinceLastActivity":"00:00:00.352","active":true,"matchIndex":74,"voting":true,"id":"member-2-shard-default-config","nextIndex":75}],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"381.3 μs","CurrentTerm":2,"LastTerm":2,"FailedTransactionsCount":3,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-default-config","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":7,"TxCohortCacheSize":0,"PeerVotingStates":"member-3-shard-default-config: true, member-2-shard-default-config: true","LastLogTerm":2,"StatRetrievalError":null,"CommitIndex":74,"SnapshotTerm":2,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":18,"ShardName":"member-1-shard-default-config","LeadershipChangeCount":1,"InMemoryJournalDataSize":10675},"timestamp":1775609560,"status":200} 
 </msg>
<msg time="2026-04-08T00:52:40.827164" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:52:40.820726" elapsed="0.006820"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:40.809857" elapsed="0.017962"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:40.828003" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:40.827850" elapsed="0.000491"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:40.809834" elapsed="0.018533"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:40.834725" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-1-shard-default-config,type=DistributedConfigDatastore","type":"read"},"value":{"ReadWriteTransactionCount":21,"SnapshotIndex":73,"InMemoryJournalLogSize":1,"ReplicatedToAllIndex":73,"Leader":"member-1-shard-default-config","LastIndex":74,"RaftState":"Leader","LastApplied":74,"LastCommittedTransactionTime":"2026-04-08 00:46:46.951","PeerAddresses":"member-3-shard-default-config: pekko:\/\/opendaylight-cluster-data@10.30.171.110:2550\/user\/shardmanager-config\/member-3-shard-default-config, member-2-shard-default-config: pekko:\/\/opendaylight-cluster-data@10.30.170.131:2550\/user\/shardmanager-config\/member-2-shard-default-config","LastLogIndex":74,"LastLeadershipChangeTime":"2026-04-08 00:46:45.929","FollowerInitialSyncStatus":false,"FollowerInfo":[{"timeSinceLastActivity":"00:00:00.352","active":true,"matchIndex":74,"voting":true,"id":"member-3-shard-default-config","nextIndex":75},{"timeSinceLastActivity":"00:00:00.352","active":true,"matchIndex":74,"voting":true,"id":"member-2-shard-default-config","nextIndex":75}],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"381.3 μs","CurrentTerm":2,"LastTerm":2,"FailedTransactionsCount":3,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-default-config","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":7,"TxCohortCacheSize":0,"PeerVotingStates":"member-3-shard-default-config: true, member-2-shard-default-config: true","LastLogTerm":2,"StatRetrievalError":null,"CommitIndex":74,"SnapshotTerm":2,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":18,"ShardName":"member-1-shard-default-config","LeadershipChangeCount":1,"InMemoryJournalDataSize":10675},"timestamp":1775609560,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:40.830485" elapsed="0.004359"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:40.829622" elapsed="0.005272"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:40.829602" elapsed="0.005330"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:40.838212" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:40.835893" elapsed="0.002421"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:40.835016" elapsed="0.003347"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:40.834998" elapsed="0.003404"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:52:40.839850" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:40.839059" elapsed="0.000854"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:40.840575" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:40.840083" elapsed="0.000581"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:40.841564" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:40.841036" elapsed="0.000574"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:40.840702" elapsed="0.000959"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:40.840062" elapsed="0.001637"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:52:40.843101" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:40.842338" elapsed="0.000972"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:40.843948" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:40.843483" elapsed="0.000553"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:40.844925" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:40.844424" elapsed="0.000548"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:40.844074" elapsed="0.000948"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:40.843462" elapsed="0.001596"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:52:40.845306" elapsed="0.000682"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:52:40.846899" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:40.846319" elapsed="0.000649"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:52:40.847276" elapsed="0.002627"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:52:40.828907" elapsed="0.021163"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:52:40.850302" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:52:40.850151" elapsed="0.000199"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:40.850130" elapsed="0.000241"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:52:40.854174" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-1-shard-default-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 17756095...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:52:40.850518" elapsed="0.003689"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:52:40.854261" elapsed="0.000038"/>
</return>
<msg time="2026-04-08T00:52:40.854493" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-1-shard-default-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 17756095...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:52:40.802766" elapsed="0.051755"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:52:40.854583" elapsed="0.000027"/>
</return>
<msg time="2026-04-08T00:52:40.854736" level="INFO">${data_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-1-shard-default-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 17756095...</msg>
<var>${data_text}</var>
<arg>uri=${uri}</arg>
<arg>session=${session}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-08T00:52:40.801819" elapsed="0.052944"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:52:40.855958" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-1-shard-default-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1775609560, 'value'...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:40.855443" elapsed="0.000544"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-08T00:52:40.856037" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:52:40.856236" level="INFO">${data_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-1-shard-default-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1775609560, 'value'...</msg>
<var>${data_object}</var>
<arg>${data_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-08T00:52:40.855044" elapsed="0.001224"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:52:40.856646" level="INFO">${value} = {'AbortTransactionsCount': 0, 'CommitIndex': 74, 'CommittedTransactionsCount': 7, 'CurrentTerm': 2, 'FailedReadTransactionsCount': 0, 'FailedTransactionsCount': 3, 'FollowerInfo': [{'active': True, 'i...</msg>
<var>${value}</var>
<arg>${data_object}</arg>
<arg>value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:52:40.856437" elapsed="0.000237"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:52:40.857031" level="INFO">${raft_property} = Leader</msg>
<var>${raft_property}</var>
<arg>${value}</arg>
<arg>${property}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:52:40.856831" elapsed="0.000226"/>
</kw>
<return>
<value>${raft_property}</value>
<status status="PASS" start="2026-04-08T00:52:40.857103" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:52:40.857275" level="INFO">${raft_state} = Leader</msg>
<var>${raft_state}</var>
<arg>RaftState</arg>
<arg>${shard_name}</arg>
<arg>${shard_type}</arg>
<arg>${member_index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft property.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T00:52:40.596714" elapsed="0.260586"/>
</kw>
<return>
<value>${raft_state}</value>
<status status="PASS" start="2026-04-08T00:52:40.857358" elapsed="0.000026"/>
</return>
<msg time="2026-04-08T00:52:40.857505" level="INFO">${raft_state} = Leader</msg>
<var>${raft_state}</var>
<arg>shard_name=${shard_name}</arg>
<arg>shard_type=${ds_type}</arg>
<arg>member_index=${index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft status.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T00:52:40.595961" elapsed="0.261569"/>
</kw>
<if>
<branch type="IF" condition="'Follower' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${follower_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:40.857830" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:40.857612" elapsed="0.000275"/>
</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="PASS" start="2026-04-08T00:52:40.858118" elapsed="0.000260"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:40.857911" elapsed="0.000506"/>
</branch>
<branch type="ELSE IF" condition="${validate}">
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized Raft state: ${raft_state}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:40.858587" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:40.858441" elapsed="0.000198"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:40.857593" elapsed="0.001069"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T00:52:40.595797" elapsed="0.262889"/>
</iter>
<iter>
<kw name="Get_Raft_State_Of_Shard_At_Member" owner="ClusterManagement">
<kw name="Get_Raft_Property_From_Shard_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:40.861077" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:40.860753" elapsed="0.000352"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:52:40.861149" elapsed="0.000047"/>
</return>
<msg time="2026-04-08T00:52:40.861318" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:52:40.860410" elapsed="0.000933"/>
</kw>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Get_As_Json_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:40.945237" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:40.944832" elapsed="0.000436"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:52:40.946149" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:52:40.945848" elapsed="0.000397">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-08T00:52:40.946341" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:52:40.945438" elapsed="0.000928"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:52:40.946921" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:52:40.946533" elapsed="0.000415"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T00:52:40.947268" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-08T00:52:40.947427" level="INFO">${template} = /rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T00:52:40.947107" elapsed="0.000345"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:40.947869" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:40.947623" elapsed="0.000291"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:40.948883" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:40.948629" elapsed="0.000299"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-08T00:52:40.949380" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-08T00:52:40.949084" elapsed="0.000322"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:40.949736" elapsed="0.000021"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:40.949936" elapsed="0.000023"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:40.950106" elapsed="0.000020"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-08T00:52:40.949603" elapsed="0.000573"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-08T00:52:40.949460" elapsed="0.000750"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-08T00:52:40.950258" elapsed="0.000032"/>
</return>
<msg time="2026-04-08T00:52:40.950421" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-08T00:52:40.948308" elapsed="0.002138"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:40.947992" elapsed="0.002487"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:40.950649" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:40.950504" elapsed="0.000199"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:40.947968" elapsed="0.002756"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:52:40.951322" level="INFO">${final_text} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:40.950865" elapsed="0.000486"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T00:52:40.951399" elapsed="0.000028"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="PASS" start="2026-04-08T00:52:40.944217" elapsed="0.007303"/>
</kw>
<msg time="2026-04-08T00:52:40.951574" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:52:40.931993" elapsed="0.019692"/>
</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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:40.963847" elapsed="0.000041"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:40.975952" elapsed="0.000042"/>
</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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:40.988100" elapsed="0.000042"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:40.988872" elapsed="0.000036"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:40.989656" elapsed="0.000035"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:40.990356" elapsed="0.000029"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:40.990154" elapsed="0.000278"/>
</branch>
<status status="NOT RUN" start="2026-04-08T00:52:40.990132" elapsed="0.000329"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:40.990635" elapsed="0.000024"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:40.990826" elapsed="0.000021"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:40.991034" elapsed="0.000026"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-08T00:52:40.990062" elapsed="0.001062"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-08T00:52:40.989774" elapsed="0.001409"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:40.991878" elapsed="0.000036"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-08T00:52:40.992087" elapsed="0.000054"/>
</return>
<msg time="2026-04-08T00:52:40.992359" level="INFO">${uri} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-08T00:52:40.925900" elapsed="0.066567"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:52:40.995350" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:52:40.995057" elapsed="0.000365">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-08T00:52:40.995612" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:52:40.994591" elapsed="0.001069"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:40.996278" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:40.995791" elapsed="0.000557"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:40.996961" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:40.996665" elapsed="0.000322"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:40.996389" elapsed="0.000645"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:40.995740" elapsed="0.001334"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:52:41.000509" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:52:40.997994" elapsed="0.002562"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-08T00:52:41.000636" elapsed="0.000064"/>
</return>
<msg time="2026-04-08T00:52:41.000951" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:52:40.993489" elapsed="0.007569"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:52:41.003750" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:52:41.003475" elapsed="0.000339">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-08T00:52:41.004002" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:52:41.002996" elapsed="0.001050"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-08T00:52:41.004525" elapsed="0.000080"/>
</return>
<status status="PASS" start="2026-04-08T00:52:41.004273" elapsed="0.000400"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:41.004219" elapsed="0.000494"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:41.005567" elapsed="0.000037"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:41.006301" elapsed="0.000035"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-08T00:52:41.006408" elapsed="0.000047"/>
</return>
<msg time="2026-04-08T00:52:41.008562" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:52:41.001864" elapsed="0.006807"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:41.012594" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:41.012151" elapsed="0.000543"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:41.013939" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:41.013507" elapsed="0.000529"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:52:41.030766" level="INFO">GET Request : url=http://10.30.170.131:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 path_url=/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01eq5fxmndxspk37g8qgkyja672.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:52:41.031716" level="INFO">GET Response : url=http://10.30.170.131:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Transfer-Encoding': 'chunked'} 
 body={"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","hidden-symmetric-keys","encrypted-private-keys","asymmetrically-encrypted-value-format","cms-encrypted-data-format","cleartext-private-keys","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["ssh-client-keepalives","client-ident-hostbased","client-ident-publickey","client-ident-password"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-ex... (set the log level to DEBUG or TRACE to see the full content) 
 </msg>
<msg time="2026-04-08T00:52:41.032207" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:52:41.016273" elapsed="0.015997"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:41.014181" elapsed="0.018240"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:41.033077" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:41.032523" elapsed="0.000767"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:41.014113" elapsed="0.019261"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:41.041023" level="INFO">{"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","hidden-symmetric-keys","encrypted-private-keys","asymmetrically-encrypted-value-format","cms-encrypted-data-format","cleartext-private-keys","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["ssh-client-keepalives","client-ident-hostbased","client-ident-publickey","client-ident-password"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-experimenter-types?revision=2015-10-20","namespace":"urn:opendaylight:openflowplugin:experimenter:types","conformance-type":"import"},{"name":"ietf-ip_2018-02-22","revision":"2018-02-22","schema":"/rests/modules/ietf-ip?revision=2018-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-ip","conformance-type":"import","feature":["ipv6-privacy-autoconf","ipv4-non-contiguous-netmasks"]},{"name":"ietf-tcp-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-client","conformance-type":"import","feature":["local-binding-supported","tcp-client-keepalives"]},{"name":"node-config_2014-10-15","revision":"2014-10-15","schema":"/rests/modules/node-config?revision=2014-10-15","namespace":"urn:opendaylight:module:config","conformance-type":"import"},{"name":"ietf-restconf_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf","conformance-type":"import"},{"name":"ietf-datastores_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-datastores?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-datastores","conformance-type":"import"},{"name":"ietf-yang-patch_2017-02-22","revision":"2017-02-22","schema":"/rests/modules/ietf-yang-patch?revision=2017-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-patch","conformance-type":"import"},{"name":"sal-group_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-group?revision=2013-09-18","namespace":"urn:opendaylight:group:service","conformance-type":"import"},{"name":"odl-codegen-extensions_2024-06-27","revision":"2024-06-27","schema":"/rests/modules/odl-codegen-extensions?revision=2024-06-27","namespace":"urn:opendaylight:yang:extension:codegen","conformance-type":"import"},{"name":"sal-meter_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-meter?revision=2013-09-18","namespace":"urn:opendaylight:meter:service","conformance-type":"import"},{"name":"ietf-interfaces_2018-02-20","revision":"2018-02-20","schema":"/rests/modules/ietf-interfaces?revision=2018-02-20","namespace":"urn:ietf:params:xml:ns:yang:ietf-interfaces","conformance-type":"import","feature":["pre-provisioning","if-mib","arbitrary-names"]},{"name":"opendaylight-l2-types_2013-08-27","revision":"2013-08-27","schema":"/rests/modules/opendaylight-l2-types?revision=2013-08-27","namespace":"urn:opendaylight:l2:types","conformance-type":"import"},{"name":"opendaylight-flow-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-flow-types?revision=2013-10-26","namespace":"urn:opendaylight:flow:types","conformance-type":"import"},{"name":"lldp-speaker-config_2016-05-12","revision":"2016-05-12","schema":"/rests/modules/lldp-speaker-config?revision=2016-05-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker:config","conformance-type":"import"},{"name":"aaa-cert_2015-11-26","revision":"2015-11-26","schema":"/rests/modules/aaa-cert?revision=2015-11-26","namespace":"urn:opendaylight:yang:aaa:cert","conformance-type":"import"},{"name":"openflow-action_2015-02-03","revision":"2015-02-03","schema":"/rests/modules/openflow-action?revision=2015-02-03","namespace":"urn:opendaylight:openflow:common:action","conformance-type":"import"},{"name":"openflow-approved-extensions_2016-08-02","revision":"2016-08-02","schema":"/rests/modules/openflow-approved-extensions?revision=2016-08-02","namespace":"urn:opendaylight:openflow:approved:extensions","conformance-type":"import"},{"name":"nc-notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/nc-notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netmod:notification","conformance-type":"import"},{"name":"ietf-netconf-nmda_2019-01-07","revision":"2019-01-07","schema":"/rests/modules/ietf-netconf-nmda?revision=2019-01-07","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-nmda","conformance-type":"import","feature":["with-defaults","origin"]},{"name":"ietf-tcp-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-common","conformance-type":"import","feature":["keepalives-supported"]},{"name":"network-topology_2013-10-21","revision":"2013-10-21","schema":"/rests/modules/network-topology?revision=2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:network-topology","conformance-type":"import"},{"name":"aaa-encrypt-service-config_2024-02-02","revision":"2024-02-02","schema":"/rests/modules/aaa-encrypt-service-config?revision=2024-02-02","namespace":"config:aaa:authn:encrypt:service:config","conformance-type":"import"},{"name":"openflow-instruction_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-instruction?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:instruction","conformance-type":"import"},{"name":"ietf-tls-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-client","conformance-type":"import","feature":["client-ident-x509-cert","server-auth-x509-cert"]},{"name":"opendaylight-group-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-group-statistics?revision=2013-11-11","namespace":"urn:opendaylight:group:statistics","conformance-type":"import"},{"name":"cluster-admin_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/cluster-admin?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:cluster:admin","conformance-type":"import"},{"name":"opendaylight-flow-statistics_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-flow-statistics?revision=2013-08-19","namespace":"urn:opendaylight:flow:statistics","conformance-type":"import"},{"name":"opendaylight-table-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-table-types?revision=2013-10-26","namespace":"urn:opendaylight:table:types","conformance-type":"import"},{"name":"forwarding-rules-manager-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/forwarding-rules-manager-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:forwardingrules-manager:config","conformance-type":"import"},{"name":"odl-srm-types_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-types?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:types","conformance-type":"import"},{"name":"ietf-x509-cert-to-name_2014-12-10","revision":"2014-12-10","schema":"/rests/modules/ietf-x509-cert-to-name?revision=2014-12-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-x509-cert-to-name","conformance-type":"import"},{"name":"flow-node-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-node-inventory?revision=2013-08-19","namespace":"urn:opendaylight:flow:inventory","conformance-type":"import"},{"name":"flow-errors_2013-11-16","revision":"2013-11-16","schema":"/rests/modules/flow-errors?revision=2013-11-16","namespace":"urn:opendaylight:flow:errors","conformance-type":"import"},{"name":"ietf-netconf_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:netconf:base:1.0","conformance-type":"import","feature":["xpath","url","rollback-on-error","validate","startup","candidate","confirmed-commit","writable-running"]},{"name":"iana-ssh-public-key-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-public-key-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-public-key-algs","conformance-type":"import"},{"name":"aaa-cert-mdsal_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/aaa-cert-mdsal?revision=2016-03-21","namespace":"urn:opendaylight:yang:aaa:cert:mdsal","conformance-type":"import"},{"name":"odl-device-notification_2024-02-18","revision":"2024-02-18","schema":"/rests/modules/odl-device-notification?revision=2024-02-18","namespace":"urn:opendaylight:device:notification","conformance-type":"import"},{"name":"ietf-origin_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-origin?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-origin","conformance-type":"import"},{"name":"openflow-augments_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-augments?revision=2015-02-25","namespace":"urn:opendaylight:openflow:augments","conformance-type":"import"},{"name":"iana-ssh-encryption-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-encryption-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-encryption-algs","conformance-type":"import"},{"name":"ietf-truststore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-truststore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-truststore","conformance-type":"import","feature":["inline-definitions-supported"]},{"name":"distributed-datastore-provider_2025-01-30","revision":"2025-01-30","schema":"/rests/modules/distributed-datastore-provider?revision=2025-01-30","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:distributed-datastore-provider","conformance-type":"import"},{"name":"opendaylight-group-types_2013-10-18","revision":"2013-10-18","schema":"/rests/modules/opendaylight-group-types?revision=2013-10-18","namespace":"urn:opendaylight:group:types","conformance-type":"import"},{"name":"sal-remote-augment_2023-11-03","revision":"2023-11-03","schema":"/rests/modules/sal-remote-augment?revision=2023-11-03","namespace":"urn:sal:restconf:event:subscription","conformance-type":"import"},{"name":"opendaylight-ipv6-arbitrary-bitmask-fields_2016-02-24","revision":"2016-02-24","schema":"/rests/modules/opendaylight-ipv6-arbitrary-bitmask-fields?revision=2016-02-24","namespace":"urn:opendaylight:opendaylight-ipv6-arbitrary-bitmask-fields","conformance-type":"import"},{"name":"sal-flows-batch_2016-03-14","revision":"2016-03-14","schema":"/rests/modules/sal-flows-batch?revision=2016-03-14","namespace":"urn:opendaylight:flows:service","conformance-type":"import"},{"name":"ietf-tls-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-common","conformance-type":"import","feature":["tls12","hello-params","tls13"]},{"name":"openflow-types_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-types?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:types","conformance-type":"import"},{"name":"ietf-netconf-with-defaults_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf-with-defaults?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults","conformance-type":"import"},{"name":"odl-srm-ops_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-ops?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:ops","conformance-type":"import"},{"name":"odl-general-entity_2015-09-30","revision":"2015-09-30","schema":"/rests/modules/odl-general-entity?revision=2015-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:mdsal:core:general-entity","conformance-type":"import"},{"name":"iana-ssh-key-exchange-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-key-exchange-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-key-exchange-algs","conformance-type":"import"},{"name":"node-ssl-connection-error_2019-07-23","revision":"2019-07-23","schema":"/rests/modules/node-ssl-connection-error?revision=2019-07-23","namespace":"urn:opendaylight:node-ssl-connection-error:service","conformance-type":"import"},{"name":"openflow-protocol_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-protocol?revision=2013-07-31","namespace":"urn:opendaylight:openflow:protocol","conformance-type":"import"},{"name":"ietf-udp-server_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-server?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-server","conformance-type":"import"},{"name":"ietf-keystore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-keystore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-keystore","conformance-type":"import","feature":["asymmetric-keys","inline-definitions-supported"]},{"name":"aaa_2016-12-14","revision":"2016-12-14","schema":"/rests/modules/aaa?revision=2016-12-14","namespace":"urn:opendaylight:params:xml:ns:yang:aaa","conformance-type":"import"},{"name":"aaa-cert-rpc_2015-12-15","revision":"2015-12-15","schema":"/rests/modules/aaa-cert-rpc?revision=2015-12-15","namespace":"urn:opendaylight:yang:aaa:cert:rpc","conformance-type":"import"},{"name":"system-notifications_2013-09-27","revision":"2013-09-27","schema":"/rests/modules/system-notifications?revision=2013-09-27","namespace":"urn:opendaylight:openflow:system","conformance-type":"import"},{"name":"sal-flat-batch_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/sal-flat-batch?revision=2016-03-21","namespace":"urn:opendaylight:flat-batch:service","conformance-type":"import"},{"name":"notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netconf:notification:1.0","conformance-type":"import"},{"name":"sal-remote_2014-01-14","revision":"2014-01-14","schema":"/rests/modules/sal-remote?revision=2014-01-14","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:remote","conformance-type":"import"},{"name":"yang-ext_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/yang-ext?revision=2013-07-09","namespace":"urn:opendaylight:yang:extension:yang-ext","conformance-type":"import"},{"name":"opendaylight-multipart-types_2017-01-12","revision":"2017-01-12","schema":"/rests/modules/opendaylight-multipart-types?revision=2017-01-12","namespace":"urn:opendaylight:multipart:types","conformance-type":"import"},{"name":"opendaylight-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-inventory?revision=2013-08-19","namespace":"urn:opendaylight:inventory","conformance-type":"import"},{"name":"sal-queue_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-queue?revision=2015-03-05","namespace":"urn:opendaylight:queue:service","conformance-type":"import"},{"name":"sal-groups-batch_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/sal-groups-batch?revision=2016-03-15","namespace":"urn:opendaylight:groups:service","conformance-type":"import"},{"name":"arbitrator-reconcile_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/arbitrator-reconcile?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:arbitrator-reconcile:service","conformance-type":"import"},{"name":"ietf-yang-metadata_2016-08-05","revision":"2016-08-05","schema":"/rests/modules/ietf-yang-metadata?revision=2016-08-05","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-metadata","conformance-type":"import"},{"name":"opendaylight-arbitrary-bitmask-fields_2016-01-30","revision":"2016-01-30","schema":"/rests/modules/opendaylight-arbitrary-bitmask-fields?revision=2016-01-30","namespace":"urn:opendaylight:arbitrary:bitmask:fields","conformance-type":"import"},{"name":"ietf-udp-client_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-client?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-client","conformance-type":"import","feature":["local-binding"]},{"name":"opendaylight-meter-types_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/opendaylight-meter-types?revision=2013-09-18","namespace":"urn:opendaylight:meter:types","conformance-type":"import"},{"name":"opendaylight-action-types_2013-11-12","revision":"2013-11-12","schema":"/rests/modules/opendaylight-action-types?revision=2013-11-12","namespace":"urn:opendaylight:action:types","conformance-type":"import"},{"name":"sal-role_2015-07-27","revision":"2015-07-27","schema":"/rests/modules/sal-role?revision=2015-07-27","namespace":"urn:opendaylight:role:service","conformance-type":"import"},{"name":"openflow-provider-config_2016-05-10","revision":"2016-05-10","schema":"/rests/modules/openflow-provider-config?revision=2016-05-10","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:provider:config","conformance-type":"import"},{"name":"odl-serviceutils-upgrade_2018-07-02","revision":"2018-07-02","schema":"/rests/modules/odl-serviceutils-upgrade?revision=2018-07-02","namespace":"urn:opendaylight:serviceutils:upgrade","conformance-type":"import"},{"name":"opendaylight-match-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-match-types?revision=2013-10-26","namespace":"urn:opendaylight:model:match:types","conformance-type":"import"},{"name":"ietf-restconf-server_2024-08-14","revision":"2024-08-14","schema":"/rests/modules/ietf-restconf-server?revision=2024-08-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-server","conformance-type":"import","feature":["http-listen","https-listen"]},{"name":"reconciliation-result-state_2017-07-13","revision":"2017-07-13","schema":"/rests/modules/reconciliation-result-state?revision=2017-07-13","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:rf:state","conformance-type":"import"},{"name":"onf-extensions_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/onf-extensions?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf","conformance-type":"import"},{"name":"sal-table_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/sal-table?revision=2013-10-26","namespace":"urn:opendaylight:table:service","conformance-type":"import"},{"name":"iana-http-versions_2026-02-04","revision":"2026-02-04","schema":"/rests/modules/iana-http-versions?revision=2026-02-04","namespace":"urn:ietf:params:xml:ns:yang:iana-http-versions","conformance-type":"import"},{"name":"opendaylight-direct-statistics_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/opendaylight-direct-statistics?revision=2016-05-11","namespace":"urn:opendaylight:direct:statistics","conformance-type":"import"},{"name":"opendaylight-port-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-port-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:port","conformance-type":"import"},{"name":"sal-async-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/sal-async-config?revision=2017-06-19","namespace":"urn:opendaylight:async-config:service","conformance-type":"import"},{"name":"aaa-password-service-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-password-service-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:password:service:config","conformance-type":"import"},{"name":"ietf-yang-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-yang-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-types","conformance-type":"import"},{"name":"opendaylight-queue-statistics_2013-12-16","revision":"2013-12-16","schema":"/rests/modules/opendaylight-queue-statistics?revision=2013-12-16","namespace":"urn:opendaylight:queue:statistics","conformance-type":"import"},{"name":"sal-bundle_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/sal-bundle?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf:bundle:service","conformance-type":"import"},{"name":"ietf-restconf-subscribed-notifications_2019-11-17","revision":"2019-11-17","schema":"/rests/modules/ietf-restconf-subscribed-notifications?revision=2019-11-17","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-subscribed-notifications","conformance-type":"import"},{"name":"sal-meters-batch_2016-03-16","revision":"2016-03-16","schema":"/rests/modules/sal-meters-batch?revision=2016-03-16","namespace":"urn:opendaylight:meters:service","conformance-type":"import"},{"name":"odl-entity-owners","revision":"","schema":"/rests/modules/odl-entity-owners","namespace":"urn:opendaylight:params:xml:ns:yang:controller:entity-owners","conformance-type":"import"},{"name":"sal-experimenter-mp-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-mp-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-mp-message:service","conformance-type":"import"},{"name":"packet-processing_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/packet-processing?revision=2013-07-09","namespace":"urn:opendaylight:packet:service","conformance-type":"import"},{"name":"openflow-configuration_2014-06-30","revision":"2014-06-30","schema":"/rests/modules/openflow-configuration?revision=2014-06-30","namespace":"urn:opendaylight:openflow:config","conformance-type":"import"},{"name":"odl-srm-rpcs_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-rpcs?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:rpc","conformance-type":"import"},{"name":"ietf-netconf-acm_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-netconf-acm?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-acm","conformance-type":"import"},{"name":"iana-crypt-hash_2014-08-06","revision":"2014-08-06","schema":"/rests/modules/iana-crypt-hash?revision=2014-08-06","namespace":"urn:ietf:params:xml:ns:yang:iana-crypt-hash","conformance-type":"import","feature":["crypt-hash-sha-512","crypt-hash-sha-256","crypt-hash-md5"]},{"name":"openflow-extensible-match_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-extensible-match?revision=2015-02-25","namespace":"urn:opendaylight:openflow:oxm","conformance-type":"import"}],"module-set-id":"2"}}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:41.037315" elapsed="0.004251"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:41.036838" elapsed="0.004781"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:41.036789" elapsed="0.004865"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:41.045265" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:41.042080" elapsed="0.003242"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:41.041766" elapsed="0.003590"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:41.041741" elapsed="0.003639"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:52:41.045971" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:41.045571" elapsed="0.000427"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:41.046392" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:41.046090" elapsed="0.000360"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:41.046939" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:41.046633" elapsed="0.000332"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:41.046474" elapsed="0.000526"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:41.046070" elapsed="0.000951"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:52:41.047585" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:41.047225" elapsed="0.000387"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:41.047936" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:41.047703" elapsed="0.000289"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:41.048510" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:41.048191" elapsed="0.000345"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:41.048016" elapsed="0.000556"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:41.047683" elapsed="0.000910"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:52:41.048764" elapsed="0.000352"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:52:41.049616" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:41.049319" elapsed="0.000323"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:52:41.049816" elapsed="0.002179"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:52:41.035066" elapsed="0.017050"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:52:41.052485" elapsed="0.000088"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:52:41.052265" elapsed="0.000381"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:41.052214" elapsed="0.000468"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:52:41.061846" level="INFO">${text_normalized} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:52:41.053406" elapsed="0.008489"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:52:41.061972" elapsed="0.000065"/>
</return>
<msg time="2026-04-08T00:52:41.062328" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:52:41.009511" elapsed="0.052925"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:52:41.062892" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:52:41.063073" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="PASS" start="2026-04-08T00:52:40.869804" elapsed="0.193297"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Json_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:41.063453" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:41.063209" elapsed="0.000432"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:41.063190" elapsed="0.000478"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:52:41.063702" elapsed="0.000027"/>
</return>
<arg>session=${session}</arg>
<arg>folder=${RESTCONF_MODULES_DIR}</arg>
<arg>verify=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Add arguments sensible for JSON data, return Get_Templated response text.
Optionally, verification against JSON data (may be iterated) is called.
Only subset of JSON data is verified and returned if JMES path is specified in
file ${folder}/jmespath.expr.</doc>
<status status="PASS" start="2026-04-08T00:52:40.865558" elapsed="0.198272"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:40.861410" elapsed="0.202464"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:40.861393" elapsed="0.202505"/>
</if>
<kw name="Resolve_Shard_Type_Class" owner="ClusterManagement">
<if>
<branch type="IF" condition="'${shard_type}' == 'config'">
<return>
<value>DistributedConfigDatastore</value>
<status status="PASS" start="2026-04-08T00:52:41.064521" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-08T00:52:41.064414" elapsed="0.000166"/>
</branch>
<branch type="ELSE IF" condition="'${shard_type}' == 'operational'">
<return>
<value>DistributedOperationalDatastore</value>
<status status="NOT RUN" start="2026-04-08T00:52:41.064655" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:52:41.064604" elapsed="0.000092"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:41.064396" elapsed="0.000323"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized shard type: ${shard_type}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:41.064864" elapsed="0.000021"/>
</kw>
<msg time="2026-04-08T00:52:41.064982" level="INFO">${type_class} = DistributedConfigDatastore</msg>
<var>${type_class}</var>
<arg>shard_type=${shard_type}</arg>
<doc>Simple lookup for class name corresponding to desired type.</doc>
<status status="PASS" start="2026-04-08T00:52:41.064127" elapsed="0.000880"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:52:41.065559" level="INFO">${cluster_index} = 2</msg>
<var>${cluster_index}</var>
<arg>${member_index}+${NODE_ROLE_INDEX_START}-1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:41.065189" elapsed="0.000397"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:41.066237" level="INFO">${uri} = jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-default-config,type=DistributedConfigDatastore</msg>
<var>${uri}</var>
<arg>${JOLOKIA_READ_URI}:Category=Shards,name=member-${cluster_index}-shard-${shard_name}-${shard_type},type=${type_class}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:41.065740" elapsed="0.000525"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:41.071821" level="INFO">jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-default-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:41.071385" elapsed="0.000483"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:41.072472" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:41.072021" elapsed="0.000496"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:52:41.089506" level="INFO">GET Request : url=http://10.30.170.131:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-default-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-default-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:52:41.089642" level="INFO">GET Response : url=http://10.30.170.131:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-default-config,type=DistributedConfigDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Wed, 08 Apr 2026 00:52:41 GMT', 'Expires': 'Tue, 07 Apr 2026 23:52:41 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-2-shard-default-config,type=DistributedConfigDatastore","type":"read"},"value":{"ReadWriteTransactionCount":0,"SnapshotIndex":73,"InMemoryJournalLogSize":1,"ReplicatedToAllIndex":73,"Leader":"member-1-shard-default-config","LastIndex":74,"RaftState":"Follower","LastCommittedTransactionTime":"1970-01-01 00:00:00.000","LastApplied":74,"PeerAddresses":"member-1-shard-default-config: pekko:\/\/opendaylight-cluster-data@10.30.170.48:2550\/user\/shardmanager-config\/member-1-shard-default-config, member-3-shard-default-config: pekko:\/\/opendaylight-cluster-data@10.30.171.110:2550\/user\/shardmanager-config\/member-3-shard-default-config","LastLogIndex":74,"LastLeadershipChangeTime":"2026-04-08 00:46:45.946","FollowerInitialSyncStatus":true,"FollowerInfo":[],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"233.1 μs","CurrentTerm":2,"LastTerm":2,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-default-config","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":0,"TxCohortCacheSize":0,"PeerVotingStates":"member-1-shard-default-config: true, member-3-shard-default-config: true","LastLogTerm":2,"StatRetrievalError":null,"CommitIndex":74,"SnapshotTerm":2,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-2-shard-default-config","LeadershipChangeCount":1,"InMemoryJournalDataSize":10675},"timestamp":1775609561,"status":200} 
 </msg>
<msg time="2026-04-08T00:52:41.089831" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:52:41.083140" elapsed="0.006797"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:41.072585" elapsed="0.017634"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:41.090405" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:41.090250" elapsed="0.000468"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:41.072566" elapsed="0.018177"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:41.096495" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-2-shard-default-config,type=DistributedConfigDatastore","type":"read"},"value":{"ReadWriteTransactionCount":0,"SnapshotIndex":73,"InMemoryJournalLogSize":1,"ReplicatedToAllIndex":73,"Leader":"member-1-shard-default-config","LastIndex":74,"RaftState":"Follower","LastCommittedTransactionTime":"1970-01-01 00:00:00.000","LastApplied":74,"PeerAddresses":"member-1-shard-default-config: pekko:\/\/opendaylight-cluster-data@10.30.170.48:2550\/user\/shardmanager-config\/member-1-shard-default-config, member-3-shard-default-config: pekko:\/\/opendaylight-cluster-data@10.30.171.110:2550\/user\/shardmanager-config\/member-3-shard-default-config","LastLogIndex":74,"LastLeadershipChangeTime":"2026-04-08 00:46:45.946","FollowerInitialSyncStatus":true,"FollowerInfo":[],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"233.1 μs","CurrentTerm":2,"LastTerm":2,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-default-config","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":0,"TxCohortCacheSize":0,"PeerVotingStates":"member-1-shard-default-config: true, member-3-shard-default-config: true","LastLogTerm":2,"StatRetrievalError":null,"CommitIndex":74,"SnapshotTerm":2,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-2-shard-default-config","LeadershipChangeCount":1,"InMemoryJournalDataSize":10675},"timestamp":1775609561,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:41.092856" elapsed="0.003849"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:41.091932" elapsed="0.004843"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:41.091912" elapsed="0.004917"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:41.101521" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:41.098147" elapsed="0.003510"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:41.096960" elapsed="0.004765"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:41.096934" elapsed="0.004843"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:52:41.103414" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:41.102581" elapsed="0.000894"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:41.104135" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:41.103640" elapsed="0.000599"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:41.105147" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:41.104605" elapsed="0.000605"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:41.104276" elapsed="0.000987"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:41.103619" elapsed="0.001681"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:52:41.106927" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:41.106141" elapsed="0.000848"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:41.107677" elapsed="0.000035"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:41.107203" elapsed="0.000561"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:41.108660" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:41.108132" elapsed="0.000574"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:41.107801" elapsed="0.000958"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:41.107140" elapsed="0.001655"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:52:41.109065" elapsed="0.000652"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:52:41.110573" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:41.110028" elapsed="0.000607"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:52:41.110920" elapsed="0.002608"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:52:41.091251" elapsed="0.022451"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:52:41.113920" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:52:41.113785" elapsed="0.000183"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:41.113763" elapsed="0.000227"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:52:41.117681" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-2-shard-default-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 17756095...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:52:41.114139" elapsed="0.003572"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:52:41.117762" elapsed="0.000036"/>
</return>
<msg time="2026-04-08T00:52:41.117933" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-2-shard-default-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 17756095...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:52:41.067237" elapsed="0.050722"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:52:41.118017" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:52:41.118199" level="INFO">${data_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-2-shard-default-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 17756095...</msg>
<var>${data_text}</var>
<arg>uri=${uri}</arg>
<arg>session=${session}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-08T00:52:41.066478" elapsed="0.051749"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:52:41.119526" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-2-shard-default-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1775609561, 'value'...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:41.118850" elapsed="0.000705"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-08T00:52:41.119670" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:52:41.119850" level="INFO">${data_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-2-shard-default-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1775609561, 'value'...</msg>
<var>${data_object}</var>
<arg>${data_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-08T00:52:41.118475" elapsed="0.001402"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:52:41.120255" level="INFO">${value} = {'AbortTransactionsCount': 0, 'CommitIndex': 74, 'CommittedTransactionsCount': 0, 'CurrentTerm': 2, 'FailedReadTransactionsCount': 0, 'FailedTransactionsCount': 0, 'FollowerInfo': [], 'FollowerInitial...</msg>
<var>${value}</var>
<arg>${data_object}</arg>
<arg>value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:52:41.120033" elapsed="0.000250"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:52:41.120640" level="INFO">${raft_property} = Follower</msg>
<var>${raft_property}</var>
<arg>${value}</arg>
<arg>${property}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:52:41.120436" elapsed="0.000229"/>
</kw>
<return>
<value>${raft_property}</value>
<status status="PASS" start="2026-04-08T00:52:41.120711" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:52:41.120862" level="INFO">${raft_state} = Follower</msg>
<var>${raft_state}</var>
<arg>RaftState</arg>
<arg>${shard_name}</arg>
<arg>${shard_type}</arg>
<arg>${member_index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft property.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T00:52:40.859782" elapsed="0.261105"/>
</kw>
<return>
<value>${raft_state}</value>
<status status="PASS" start="2026-04-08T00:52:41.120944" elapsed="0.000025"/>
</return>
<msg time="2026-04-08T00:52:41.121097" level="INFO">${raft_state} = Follower</msg>
<var>${raft_state}</var>
<arg>shard_name=${shard_name}</arg>
<arg>shard_type=${ds_type}</arg>
<arg>member_index=${index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft status.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T00:52:40.859047" elapsed="0.262092"/>
</kw>
<if>
<branch type="IF" condition="'Follower' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${follower_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-08T00:52:41.121469" elapsed="0.000192"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:41.121248" elapsed="0.000451"/>
</branch>
<branch type="ELSE IF" condition="'Leader' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${leader_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:41.121867" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:41.121724" elapsed="0.000197"/>
</branch>
<branch type="ELSE IF" condition="${validate}">
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized Raft state: ${raft_state}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:41.122085" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:41.121944" elapsed="0.000196"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:41.121229" elapsed="0.000961"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T00:52:40.858878" elapsed="0.263340"/>
</iter>
<iter>
<kw name="Get_Raft_State_Of_Shard_At_Member" owner="ClusterManagement">
<kw name="Get_Raft_Property_From_Shard_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:41.124632" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:41.124306" elapsed="0.000354"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:52:41.124706" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:52:41.124852" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:52:41.123949" elapsed="0.000929"/>
</kw>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Get_As_Json_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:41.210370" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:41.209900" elapsed="0.000513"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:52:41.211471" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:52:41.211193" elapsed="0.000369">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-08T00:52:41.211663" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:52:41.210599" elapsed="0.001090"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:52:41.212279" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:52:41.211860" elapsed="0.000446"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T00:52:41.212610" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-08T00:52:41.212775" level="INFO">${template} = /rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T00:52:41.212466" elapsed="0.000404"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:41.213305" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:41.213030" elapsed="0.000321"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:41.214544" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:41.214230" elapsed="0.000360"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-08T00:52:41.215034" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-08T00:52:41.214754" elapsed="0.000307"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:41.215415" elapsed="0.000022"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:41.215620" elapsed="0.000024"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:41.215795" elapsed="0.000021"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-08T00:52:41.215279" elapsed="0.000574"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-08T00:52:41.215114" elapsed="0.000770"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-08T00:52:41.215932" elapsed="0.000034"/>
</return>
<msg time="2026-04-08T00:52:41.216102" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-08T00:52:41.213789" elapsed="0.002338"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:41.213439" elapsed="0.002738"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:41.216351" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:41.216204" elapsed="0.000204"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:41.213412" elapsed="0.003017"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:52:41.217028" level="INFO">${final_text} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:41.216572" elapsed="0.000484"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T00:52:41.217105" 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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="PASS" start="2026-04-08T00:52:41.209084" elapsed="0.008165"/>
</kw>
<msg time="2026-04-08T00:52:41.217308" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:52:41.194385" elapsed="0.023036"/>
</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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:41.230046" elapsed="0.000047"/>
</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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:41.242288" elapsed="0.000045"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:41.254639" elapsed="0.000044"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:41.255448" elapsed="0.000039"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:41.256237" elapsed="0.000039"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:41.256880" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:41.256731" elapsed="0.000206"/>
</branch>
<status status="NOT RUN" start="2026-04-08T00:52:41.256713" elapsed="0.000249"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:41.257122" elapsed="0.000022"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:41.257333" elapsed="0.000022"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:41.257523" elapsed="0.000022"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-08T00:52:41.256660" elapsed="0.000941"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-08T00:52:41.256425" elapsed="0.001218"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:41.258441" elapsed="0.000039"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-08T00:52:41.258569" elapsed="0.000050"/>
</return>
<msg time="2026-04-08T00:52:41.258821" level="INFO">${uri} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-08T00:52:41.188029" elapsed="0.070909"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:52:41.262181" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:52:41.261891" elapsed="0.000389">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-08T00:52:41.262485" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:52:41.261281" elapsed="0.001252"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:41.263057" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:41.262670" elapsed="0.000457"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:41.263779" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:41.263480" elapsed="0.000324"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:41.263199" elapsed="0.000653"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:41.262619" elapsed="0.001273"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:52:41.267136" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:52:41.264771" elapsed="0.002442"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-08T00:52:41.267294" elapsed="0.000066"/>
</return>
<msg time="2026-04-08T00:52:41.267619" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:52:41.260042" elapsed="0.007685"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:52:41.270596" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:52:41.270335" elapsed="0.000325">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-08T00:52:41.270851" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:52:41.269848" elapsed="0.001049"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-08T00:52:41.271322" elapsed="0.000081"/>
</return>
<status status="PASS" start="2026-04-08T00:52:41.271034" elapsed="0.000438"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:41.270980" elapsed="0.000531"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:41.272334" elapsed="0.000040"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:41.273187" elapsed="0.000052"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-08T00:52:41.273334" elapsed="0.000052"/>
</return>
<msg time="2026-04-08T00:52:41.275862" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:52:41.268701" elapsed="0.007299"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:41.280515" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:41.279848" elapsed="0.000773"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:41.281859" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:41.281415" elapsed="0.000563"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:52:41.300651" level="INFO">GET Request : url=http://10.30.171.110:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 path_url=/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0336bvzrfnrhc3cqywxyctca52.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:52:41.301615" level="INFO">GET Response : url=http://10.30.171.110:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Transfer-Encoding': 'chunked'} 
 body={"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","hidden-symmetric-keys","encrypted-private-keys","asymmetrically-encrypted-value-format","cms-encrypted-data-format","cleartext-private-keys","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["ssh-client-keepalives","client-ident-hostbased","client-ident-publickey","client-ident-password"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-ex... (set the log level to DEBUG or TRACE to see the full content) 
 </msg>
<msg time="2026-04-08T00:52:41.302106" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:52:41.284438" elapsed="0.017772"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:41.282117" elapsed="0.020225"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:41.303053" elapsed="0.000061"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:41.302447" elapsed="0.000855"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:41.282061" elapsed="0.021331"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:41.312453" level="INFO">{"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","hidden-symmetric-keys","encrypted-private-keys","asymmetrically-encrypted-value-format","cms-encrypted-data-format","cleartext-private-keys","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["ssh-client-keepalives","client-ident-hostbased","client-ident-publickey","client-ident-password"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-experimenter-types?revision=2015-10-20","namespace":"urn:opendaylight:openflowplugin:experimenter:types","conformance-type":"import"},{"name":"ietf-ip_2018-02-22","revision":"2018-02-22","schema":"/rests/modules/ietf-ip?revision=2018-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-ip","conformance-type":"import","feature":["ipv6-privacy-autoconf","ipv4-non-contiguous-netmasks"]},{"name":"ietf-tcp-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-client","conformance-type":"import","feature":["local-binding-supported","tcp-client-keepalives"]},{"name":"node-config_2014-10-15","revision":"2014-10-15","schema":"/rests/modules/node-config?revision=2014-10-15","namespace":"urn:opendaylight:module:config","conformance-type":"import"},{"name":"ietf-restconf_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf","conformance-type":"import"},{"name":"ietf-datastores_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-datastores?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-datastores","conformance-type":"import"},{"name":"ietf-yang-patch_2017-02-22","revision":"2017-02-22","schema":"/rests/modules/ietf-yang-patch?revision=2017-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-patch","conformance-type":"import"},{"name":"sal-group_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-group?revision=2013-09-18","namespace":"urn:opendaylight:group:service","conformance-type":"import"},{"name":"odl-codegen-extensions_2024-06-27","revision":"2024-06-27","schema":"/rests/modules/odl-codegen-extensions?revision=2024-06-27","namespace":"urn:opendaylight:yang:extension:codegen","conformance-type":"import"},{"name":"sal-meter_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-meter?revision=2013-09-18","namespace":"urn:opendaylight:meter:service","conformance-type":"import"},{"name":"ietf-interfaces_2018-02-20","revision":"2018-02-20","schema":"/rests/modules/ietf-interfaces?revision=2018-02-20","namespace":"urn:ietf:params:xml:ns:yang:ietf-interfaces","conformance-type":"import","feature":["pre-provisioning","if-mib","arbitrary-names"]},{"name":"opendaylight-l2-types_2013-08-27","revision":"2013-08-27","schema":"/rests/modules/opendaylight-l2-types?revision=2013-08-27","namespace":"urn:opendaylight:l2:types","conformance-type":"import"},{"name":"opendaylight-flow-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-flow-types?revision=2013-10-26","namespace":"urn:opendaylight:flow:types","conformance-type":"import"},{"name":"lldp-speaker-config_2016-05-12","revision":"2016-05-12","schema":"/rests/modules/lldp-speaker-config?revision=2016-05-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker:config","conformance-type":"import"},{"name":"aaa-cert_2015-11-26","revision":"2015-11-26","schema":"/rests/modules/aaa-cert?revision=2015-11-26","namespace":"urn:opendaylight:yang:aaa:cert","conformance-type":"import"},{"name":"openflow-action_2015-02-03","revision":"2015-02-03","schema":"/rests/modules/openflow-action?revision=2015-02-03","namespace":"urn:opendaylight:openflow:common:action","conformance-type":"import"},{"name":"openflow-approved-extensions_2016-08-02","revision":"2016-08-02","schema":"/rests/modules/openflow-approved-extensions?revision=2016-08-02","namespace":"urn:opendaylight:openflow:approved:extensions","conformance-type":"import"},{"name":"nc-notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/nc-notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netmod:notification","conformance-type":"import"},{"name":"ietf-netconf-nmda_2019-01-07","revision":"2019-01-07","schema":"/rests/modules/ietf-netconf-nmda?revision=2019-01-07","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-nmda","conformance-type":"import","feature":["with-defaults","origin"]},{"name":"ietf-tcp-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-common","conformance-type":"import","feature":["keepalives-supported"]},{"name":"network-topology_2013-10-21","revision":"2013-10-21","schema":"/rests/modules/network-topology?revision=2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:network-topology","conformance-type":"import"},{"name":"aaa-encrypt-service-config_2024-02-02","revision":"2024-02-02","schema":"/rests/modules/aaa-encrypt-service-config?revision=2024-02-02","namespace":"config:aaa:authn:encrypt:service:config","conformance-type":"import"},{"name":"openflow-instruction_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-instruction?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:instruction","conformance-type":"import"},{"name":"ietf-tls-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-client","conformance-type":"import","feature":["client-ident-x509-cert","server-auth-x509-cert"]},{"name":"opendaylight-group-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-group-statistics?revision=2013-11-11","namespace":"urn:opendaylight:group:statistics","conformance-type":"import"},{"name":"cluster-admin_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/cluster-admin?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:cluster:admin","conformance-type":"import"},{"name":"opendaylight-flow-statistics_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-flow-statistics?revision=2013-08-19","namespace":"urn:opendaylight:flow:statistics","conformance-type":"import"},{"name":"opendaylight-table-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-table-types?revision=2013-10-26","namespace":"urn:opendaylight:table:types","conformance-type":"import"},{"name":"forwarding-rules-manager-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/forwarding-rules-manager-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:forwardingrules-manager:config","conformance-type":"import"},{"name":"odl-srm-types_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-types?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:types","conformance-type":"import"},{"name":"ietf-x509-cert-to-name_2014-12-10","revision":"2014-12-10","schema":"/rests/modules/ietf-x509-cert-to-name?revision=2014-12-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-x509-cert-to-name","conformance-type":"import"},{"name":"flow-node-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-node-inventory?revision=2013-08-19","namespace":"urn:opendaylight:flow:inventory","conformance-type":"import"},{"name":"flow-errors_2013-11-16","revision":"2013-11-16","schema":"/rests/modules/flow-errors?revision=2013-11-16","namespace":"urn:opendaylight:flow:errors","conformance-type":"import"},{"name":"ietf-netconf_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:netconf:base:1.0","conformance-type":"import","feature":["xpath","url","rollback-on-error","validate","startup","candidate","confirmed-commit","writable-running"]},{"name":"iana-ssh-public-key-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-public-key-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-public-key-algs","conformance-type":"import"},{"name":"aaa-cert-mdsal_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/aaa-cert-mdsal?revision=2016-03-21","namespace":"urn:opendaylight:yang:aaa:cert:mdsal","conformance-type":"import"},{"name":"odl-device-notification_2024-02-18","revision":"2024-02-18","schema":"/rests/modules/odl-device-notification?revision=2024-02-18","namespace":"urn:opendaylight:device:notification","conformance-type":"import"},{"name":"ietf-origin_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-origin?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-origin","conformance-type":"import"},{"name":"openflow-augments_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-augments?revision=2015-02-25","namespace":"urn:opendaylight:openflow:augments","conformance-type":"import"},{"name":"iana-ssh-encryption-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-encryption-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-encryption-algs","conformance-type":"import"},{"name":"ietf-truststore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-truststore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-truststore","conformance-type":"import","feature":["inline-definitions-supported"]},{"name":"distributed-datastore-provider_2025-01-30","revision":"2025-01-30","schema":"/rests/modules/distributed-datastore-provider?revision=2025-01-30","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:distributed-datastore-provider","conformance-type":"import"},{"name":"opendaylight-group-types_2013-10-18","revision":"2013-10-18","schema":"/rests/modules/opendaylight-group-types?revision=2013-10-18","namespace":"urn:opendaylight:group:types","conformance-type":"import"},{"name":"sal-remote-augment_2023-11-03","revision":"2023-11-03","schema":"/rests/modules/sal-remote-augment?revision=2023-11-03","namespace":"urn:sal:restconf:event:subscription","conformance-type":"import"},{"name":"opendaylight-ipv6-arbitrary-bitmask-fields_2016-02-24","revision":"2016-02-24","schema":"/rests/modules/opendaylight-ipv6-arbitrary-bitmask-fields?revision=2016-02-24","namespace":"urn:opendaylight:opendaylight-ipv6-arbitrary-bitmask-fields","conformance-type":"import"},{"name":"sal-flows-batch_2016-03-14","revision":"2016-03-14","schema":"/rests/modules/sal-flows-batch?revision=2016-03-14","namespace":"urn:opendaylight:flows:service","conformance-type":"import"},{"name":"ietf-tls-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-common","conformance-type":"import","feature":["tls12","hello-params","tls13"]},{"name":"openflow-types_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-types?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:types","conformance-type":"import"},{"name":"ietf-netconf-with-defaults_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf-with-defaults?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults","conformance-type":"import"},{"name":"odl-srm-ops_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-ops?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:ops","conformance-type":"import"},{"name":"odl-general-entity_2015-09-30","revision":"2015-09-30","schema":"/rests/modules/odl-general-entity?revision=2015-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:mdsal:core:general-entity","conformance-type":"import"},{"name":"iana-ssh-key-exchange-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-key-exchange-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-key-exchange-algs","conformance-type":"import"},{"name":"node-ssl-connection-error_2019-07-23","revision":"2019-07-23","schema":"/rests/modules/node-ssl-connection-error?revision=2019-07-23","namespace":"urn:opendaylight:node-ssl-connection-error:service","conformance-type":"import"},{"name":"openflow-protocol_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-protocol?revision=2013-07-31","namespace":"urn:opendaylight:openflow:protocol","conformance-type":"import"},{"name":"ietf-udp-server_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-server?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-server","conformance-type":"import"},{"name":"ietf-keystore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-keystore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-keystore","conformance-type":"import","feature":["asymmetric-keys","inline-definitions-supported"]},{"name":"aaa_2016-12-14","revision":"2016-12-14","schema":"/rests/modules/aaa?revision=2016-12-14","namespace":"urn:opendaylight:params:xml:ns:yang:aaa","conformance-type":"import"},{"name":"aaa-cert-rpc_2015-12-15","revision":"2015-12-15","schema":"/rests/modules/aaa-cert-rpc?revision=2015-12-15","namespace":"urn:opendaylight:yang:aaa:cert:rpc","conformance-type":"import"},{"name":"system-notifications_2013-09-27","revision":"2013-09-27","schema":"/rests/modules/system-notifications?revision=2013-09-27","namespace":"urn:opendaylight:openflow:system","conformance-type":"import"},{"name":"sal-flat-batch_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/sal-flat-batch?revision=2016-03-21","namespace":"urn:opendaylight:flat-batch:service","conformance-type":"import"},{"name":"notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netconf:notification:1.0","conformance-type":"import"},{"name":"sal-remote_2014-01-14","revision":"2014-01-14","schema":"/rests/modules/sal-remote?revision=2014-01-14","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:remote","conformance-type":"import"},{"name":"yang-ext_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/yang-ext?revision=2013-07-09","namespace":"urn:opendaylight:yang:extension:yang-ext","conformance-type":"import"},{"name":"opendaylight-multipart-types_2017-01-12","revision":"2017-01-12","schema":"/rests/modules/opendaylight-multipart-types?revision=2017-01-12","namespace":"urn:opendaylight:multipart:types","conformance-type":"import"},{"name":"opendaylight-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-inventory?revision=2013-08-19","namespace":"urn:opendaylight:inventory","conformance-type":"import"},{"name":"sal-queue_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-queue?revision=2015-03-05","namespace":"urn:opendaylight:queue:service","conformance-type":"import"},{"name":"sal-groups-batch_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/sal-groups-batch?revision=2016-03-15","namespace":"urn:opendaylight:groups:service","conformance-type":"import"},{"name":"arbitrator-reconcile_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/arbitrator-reconcile?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:arbitrator-reconcile:service","conformance-type":"import"},{"name":"ietf-yang-metadata_2016-08-05","revision":"2016-08-05","schema":"/rests/modules/ietf-yang-metadata?revision=2016-08-05","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-metadata","conformance-type":"import"},{"name":"opendaylight-arbitrary-bitmask-fields_2016-01-30","revision":"2016-01-30","schema":"/rests/modules/opendaylight-arbitrary-bitmask-fields?revision=2016-01-30","namespace":"urn:opendaylight:arbitrary:bitmask:fields","conformance-type":"import"},{"name":"ietf-udp-client_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-client?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-client","conformance-type":"import","feature":["local-binding"]},{"name":"opendaylight-meter-types_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/opendaylight-meter-types?revision=2013-09-18","namespace":"urn:opendaylight:meter:types","conformance-type":"import"},{"name":"opendaylight-action-types_2013-11-12","revision":"2013-11-12","schema":"/rests/modules/opendaylight-action-types?revision=2013-11-12","namespace":"urn:opendaylight:action:types","conformance-type":"import"},{"name":"sal-role_2015-07-27","revision":"2015-07-27","schema":"/rests/modules/sal-role?revision=2015-07-27","namespace":"urn:opendaylight:role:service","conformance-type":"import"},{"name":"openflow-provider-config_2016-05-10","revision":"2016-05-10","schema":"/rests/modules/openflow-provider-config?revision=2016-05-10","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:provider:config","conformance-type":"import"},{"name":"odl-serviceutils-upgrade_2018-07-02","revision":"2018-07-02","schema":"/rests/modules/odl-serviceutils-upgrade?revision=2018-07-02","namespace":"urn:opendaylight:serviceutils:upgrade","conformance-type":"import"},{"name":"opendaylight-match-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-match-types?revision=2013-10-26","namespace":"urn:opendaylight:model:match:types","conformance-type":"import"},{"name":"ietf-restconf-server_2024-08-14","revision":"2024-08-14","schema":"/rests/modules/ietf-restconf-server?revision=2024-08-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-server","conformance-type":"import","feature":["http-listen","https-listen"]},{"name":"reconciliation-result-state_2017-07-13","revision":"2017-07-13","schema":"/rests/modules/reconciliation-result-state?revision=2017-07-13","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:rf:state","conformance-type":"import"},{"name":"onf-extensions_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/onf-extensions?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf","conformance-type":"import"},{"name":"sal-table_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/sal-table?revision=2013-10-26","namespace":"urn:opendaylight:table:service","conformance-type":"import"},{"name":"iana-http-versions_2026-02-04","revision":"2026-02-04","schema":"/rests/modules/iana-http-versions?revision=2026-02-04","namespace":"urn:ietf:params:xml:ns:yang:iana-http-versions","conformance-type":"import"},{"name":"opendaylight-direct-statistics_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/opendaylight-direct-statistics?revision=2016-05-11","namespace":"urn:opendaylight:direct:statistics","conformance-type":"import"},{"name":"opendaylight-port-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-port-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:port","conformance-type":"import"},{"name":"sal-async-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/sal-async-config?revision=2017-06-19","namespace":"urn:opendaylight:async-config:service","conformance-type":"import"},{"name":"aaa-password-service-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-password-service-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:password:service:config","conformance-type":"import"},{"name":"ietf-yang-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-yang-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-types","conformance-type":"import"},{"name":"opendaylight-queue-statistics_2013-12-16","revision":"2013-12-16","schema":"/rests/modules/opendaylight-queue-statistics?revision=2013-12-16","namespace":"urn:opendaylight:queue:statistics","conformance-type":"import"},{"name":"sal-bundle_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/sal-bundle?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf:bundle:service","conformance-type":"import"},{"name":"ietf-restconf-subscribed-notifications_2019-11-17","revision":"2019-11-17","schema":"/rests/modules/ietf-restconf-subscribed-notifications?revision=2019-11-17","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-subscribed-notifications","conformance-type":"import"},{"name":"sal-meters-batch_2016-03-16","revision":"2016-03-16","schema":"/rests/modules/sal-meters-batch?revision=2016-03-16","namespace":"urn:opendaylight:meters:service","conformance-type":"import"},{"name":"odl-entity-owners","revision":"","schema":"/rests/modules/odl-entity-owners","namespace":"urn:opendaylight:params:xml:ns:yang:controller:entity-owners","conformance-type":"import"},{"name":"sal-experimenter-mp-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-mp-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-mp-message:service","conformance-type":"import"},{"name":"packet-processing_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/packet-processing?revision=2013-07-09","namespace":"urn:opendaylight:packet:service","conformance-type":"import"},{"name":"openflow-configuration_2014-06-30","revision":"2014-06-30","schema":"/rests/modules/openflow-configuration?revision=2014-06-30","namespace":"urn:opendaylight:openflow:config","conformance-type":"import"},{"name":"odl-srm-rpcs_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-rpcs?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:rpc","conformance-type":"import"},{"name":"ietf-netconf-acm_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-netconf-acm?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-acm","conformance-type":"import"},{"name":"iana-crypt-hash_2014-08-06","revision":"2014-08-06","schema":"/rests/modules/iana-crypt-hash?revision=2014-08-06","namespace":"urn:ietf:params:xml:ns:yang:iana-crypt-hash","conformance-type":"import","feature":["crypt-hash-sha-512","crypt-hash-sha-256","crypt-hash-md5"]},{"name":"openflow-extensible-match_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-extensible-match?revision=2015-02-25","namespace":"urn:opendaylight:openflow:oxm","conformance-type":"import"}],"module-set-id":"2"}}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:41.307591" elapsed="0.005209"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:41.307034" elapsed="0.005805"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:41.306982" elapsed="0.005884"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:41.315585" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:41.313256" elapsed="0.002384"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:41.312952" elapsed="0.002730"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:41.312932" elapsed="0.002777"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:52:41.316354" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:41.315922" elapsed="0.000460"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:41.316918" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:41.316672" elapsed="0.000306"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:41.317515" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:41.317197" elapsed="0.000344"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:41.317002" elapsed="0.000576"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:41.316650" elapsed="0.000951"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:52:41.318187" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:41.317783" elapsed="0.000433"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:41.318549" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:41.318310" elapsed="0.000297"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:41.319148" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:41.318838" elapsed="0.000353"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:41.318631" elapsed="0.000599"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:41.318291" elapsed="0.000961"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:52:41.319430" elapsed="0.000360"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:52:41.320305" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:41.319980" elapsed="0.000352"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:52:41.320508" elapsed="0.002246"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:52:41.305111" elapsed="0.017778"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:52:41.323311" elapsed="0.000051"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:52:41.323042" elapsed="0.000388"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:41.322976" elapsed="0.000493"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:52:41.333268" level="INFO">${text_normalized} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:52:41.324238" elapsed="0.009084"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:52:41.333405" elapsed="0.000073"/>
</return>
<msg time="2026-04-08T00:52:41.333751" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:52:41.276898" elapsed="0.056970"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:52:41.334386" elapsed="0.000033"/>
</return>
<msg time="2026-04-08T00:52:41.334578" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="PASS" start="2026-04-08T00:52:41.133050" elapsed="0.201555"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Json_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:41.335067" elapsed="0.000027"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:41.334695" elapsed="0.000614"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:41.334676" elapsed="0.000670"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:52:41.335390" elapsed="0.000029"/>
</return>
<arg>session=${session}</arg>
<arg>folder=${RESTCONF_MODULES_DIR}</arg>
<arg>verify=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Add arguments sensible for JSON data, return Get_Templated response text.
Optionally, verification against JSON data (may be iterated) is called.
Only subset of JSON data is verified and returned if JMES path is specified in
file ${folder}/jmespath.expr.</doc>
<status status="PASS" start="2026-04-08T00:52:41.129000" elapsed="0.206536"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:41.124945" elapsed="0.210642"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:41.124928" elapsed="0.210685"/>
</if>
<kw name="Resolve_Shard_Type_Class" owner="ClusterManagement">
<if>
<branch type="IF" condition="'${shard_type}' == 'config'">
<return>
<value>DistributedConfigDatastore</value>
<status status="PASS" start="2026-04-08T00:52:41.336272" elapsed="0.000034"/>
</return>
<status status="PASS" start="2026-04-08T00:52:41.336133" elapsed="0.000212"/>
</branch>
<branch type="ELSE IF" condition="'${shard_type}' == 'operational'">
<return>
<value>DistributedOperationalDatastore</value>
<status status="NOT RUN" start="2026-04-08T00:52:41.336410" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:52:41.336370" elapsed="0.000081"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:41.336115" elapsed="0.000359"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized shard type: ${shard_type}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:41.336661" elapsed="0.000029"/>
</kw>
<msg time="2026-04-08T00:52:41.336812" level="INFO">${type_class} = DistributedConfigDatastore</msg>
<var>${type_class}</var>
<arg>shard_type=${shard_type}</arg>
<doc>Simple lookup for class name corresponding to desired type.</doc>
<status status="PASS" start="2026-04-08T00:52:41.335851" elapsed="0.000993"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:52:41.337501" level="INFO">${cluster_index} = 3</msg>
<var>${cluster_index}</var>
<arg>${member_index}+${NODE_ROLE_INDEX_START}-1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:41.337067" elapsed="0.000462"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:41.338198" level="INFO">${uri} = jolokia/read/org.opendaylight.controller:Category=Shards,name=member-3-shard-default-config,type=DistributedConfigDatastore</msg>
<var>${uri}</var>
<arg>${JOLOKIA_READ_URI}:Category=Shards,name=member-${cluster_index}-shard-${shard_name}-${shard_type},type=${type_class}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:41.337686" elapsed="0.000542"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:41.344298" level="INFO">jolokia/read/org.opendaylight.controller:Category=Shards,name=member-3-shard-default-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:41.343819" elapsed="0.000528"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:41.344955" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:41.344505" elapsed="0.000496"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:52:41.362843" level="INFO">GET Request : url=http://10.30.171.110:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-3-shard-default-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-3-shard-default-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:52:41.362983" level="INFO">GET Response : url=http://10.30.171.110:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-3-shard-default-config,type=DistributedConfigDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Wed, 08 Apr 2026 00:52:41 GMT', 'Expires': 'Tue, 07 Apr 2026 23:52:41 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-3-shard-default-config,type=DistributedConfigDatastore","type":"read"},"value":{"ReadWriteTransactionCount":0,"SnapshotIndex":73,"InMemoryJournalLogSize":1,"ReplicatedToAllIndex":73,"Leader":"member-1-shard-default-config","LastIndex":74,"RaftState":"Follower","LastApplied":74,"LastCommittedTransactionTime":"1970-01-01 00:00:00.000","PeerAddresses":"member-1-shard-default-config: pekko:\/\/opendaylight-cluster-data@10.30.170.48:2550\/user\/shardmanager-config\/member-1-shard-default-config, member-2-shard-default-config: pekko:\/\/opendaylight-cluster-data@10.30.170.131:2550\/user\/shardmanager-config\/member-2-shard-default-config","LastLogIndex":74,"LastLeadershipChangeTime":"2026-04-08 00:46:45.933","FollowerInitialSyncStatus":true,"FollowerInfo":[],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"201.9 μs","CurrentTerm":2,"LastTerm":2,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-default-config","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":0,"TxCohortCacheSize":0,"PeerVotingStates":"member-1-shard-default-config: true, member-2-shard-default-config: true","LastLogTerm":2,"StatRetrievalError":null,"CommitIndex":74,"SnapshotTerm":2,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-3-shard-default-config","LeadershipChangeCount":1,"InMemoryJournalDataSize":10675},"timestamp":1775609561,"status":200} 
 </msg>
<msg time="2026-04-08T00:52:41.363217" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:52:41.356146" elapsed="0.007178"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:41.345072" elapsed="0.018510"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:41.363768" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:41.363612" elapsed="0.000474"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:41.345052" elapsed="0.019060"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:41.368736" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-3-shard-default-config,type=DistributedConfigDatastore","type":"read"},"value":{"ReadWriteTransactionCount":0,"SnapshotIndex":73,"InMemoryJournalLogSize":1,"ReplicatedToAllIndex":73,"Leader":"member-1-shard-default-config","LastIndex":74,"RaftState":"Follower","LastApplied":74,"LastCommittedTransactionTime":"1970-01-01 00:00:00.000","PeerAddresses":"member-1-shard-default-config: pekko:\/\/opendaylight-cluster-data@10.30.170.48:2550\/user\/shardmanager-config\/member-1-shard-default-config, member-2-shard-default-config: pekko:\/\/opendaylight-cluster-data@10.30.170.131:2550\/user\/shardmanager-config\/member-2-shard-default-config","LastLogIndex":74,"LastLeadershipChangeTime":"2026-04-08 00:46:45.933","FollowerInitialSyncStatus":true,"FollowerInfo":[],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"201.9 μs","CurrentTerm":2,"LastTerm":2,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-default-config","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":0,"TxCohortCacheSize":0,"PeerVotingStates":"member-1-shard-default-config: true, member-2-shard-default-config: true","LastLogTerm":2,"StatRetrievalError":null,"CommitIndex":74,"SnapshotTerm":2,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-3-shard-default-config","LeadershipChangeCount":1,"InMemoryJournalDataSize":10675},"timestamp":1775609561,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:41.366188" elapsed="0.002706"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:41.365323" elapsed="0.003621"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:41.365304" elapsed="0.003679"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:41.372386" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:41.369929" elapsed="0.002557"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:41.369067" elapsed="0.003468"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:41.369049" elapsed="0.003525"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:52:41.373973" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:41.373207" elapsed="0.000827"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:41.374700" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:41.374230" elapsed="0.000557"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:41.375769" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:41.375266" elapsed="0.000549"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:41.374825" elapsed="0.001040"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:41.374208" elapsed="0.001692"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:52:41.377289" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:41.376530" elapsed="0.000820"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:41.377982" elapsed="0.000035"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:41.377516" elapsed="0.000552"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:41.378966" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:41.378470" elapsed="0.000542"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:41.378105" elapsed="0.000957"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:41.377496" elapsed="0.001600"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:52:41.379427" elapsed="0.000623"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:52:41.380875" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:41.380375" elapsed="0.000560"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:52:41.381259" elapsed="0.002466"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:52:41.364615" elapsed="0.019271"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:52:41.384088" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:52:41.383960" elapsed="0.000174"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:41.383941" elapsed="0.000219"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:52:41.387762" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-3-shard-default-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 17756095...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:52:41.384320" elapsed="0.003472"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:52:41.387843" elapsed="0.000033"/>
</return>
<msg time="2026-04-08T00:52:41.388005" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-3-shard-default-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 17756095...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:52:41.339324" elapsed="0.048707"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:52:41.388088" elapsed="0.000027"/>
</return>
<msg time="2026-04-08T00:52:41.388254" level="INFO">${data_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-3-shard-default-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 17756095...</msg>
<var>${data_text}</var>
<arg>uri=${uri}</arg>
<arg>session=${session}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-08T00:52:41.338453" elapsed="0.049827"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:52:41.389338" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-3-shard-default-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1775609561, 'value'...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:41.388846" elapsed="0.000521"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-08T00:52:41.389453" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:52:41.389629" level="INFO">${data_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-3-shard-default-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1775609561, 'value'...</msg>
<var>${data_object}</var>
<arg>${data_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-08T00:52:41.388503" elapsed="0.001152"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:52:41.390010" level="INFO">${value} = {'AbortTransactionsCount': 0, 'CommitIndex': 74, 'CommittedTransactionsCount': 0, 'CurrentTerm': 2, 'FailedReadTransactionsCount': 0, 'FailedTransactionsCount': 0, 'FollowerInfo': [], 'FollowerInitial...</msg>
<var>${value}</var>
<arg>${data_object}</arg>
<arg>value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:52:41.389810" elapsed="0.000226"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:52:41.390424" level="INFO">${raft_property} = Follower</msg>
<var>${raft_property}</var>
<arg>${value}</arg>
<arg>${property}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:52:41.390223" elapsed="0.000227"/>
</kw>
<return>
<value>${raft_property}</value>
<status status="PASS" start="2026-04-08T00:52:41.390495" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:52:41.390645" level="INFO">${raft_state} = Follower</msg>
<var>${raft_state}</var>
<arg>RaftState</arg>
<arg>${shard_name}</arg>
<arg>${shard_type}</arg>
<arg>${member_index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft property.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T00:52:41.123349" elapsed="0.267320"/>
</kw>
<return>
<value>${raft_state}</value>
<status status="PASS" start="2026-04-08T00:52:41.390726" elapsed="0.000025"/>
</return>
<msg time="2026-04-08T00:52:41.390873" level="INFO">${raft_state} = Follower</msg>
<var>${raft_state}</var>
<arg>shard_name=${shard_name}</arg>
<arg>shard_type=${ds_type}</arg>
<arg>member_index=${index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft status.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T00:52:41.122564" elapsed="0.268333"/>
</kw>
<if>
<branch type="IF" condition="'Follower' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${follower_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-08T00:52:41.391231" elapsed="0.000221"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:41.390978" elapsed="0.000512"/>
</branch>
<branch type="ELSE IF" condition="'Leader' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${leader_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:41.391661" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:41.391515" elapsed="0.000199"/>
</branch>
<branch type="ELSE IF" condition="${validate}">
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized Raft state: ${raft_state}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:41.391877" elapsed="0.000019"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:41.391738" elapsed="0.000188"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:41.390960" elapsed="0.000989"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T00:52:41.122394" elapsed="0.269579"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-08T00:52:40.595593" elapsed="0.796417"/>
</for>
<return>
<value>${leader_list}</value>
<value>${follower_list}</value>
<status status="PASS" start="2026-04-08T00:52:41.392054" elapsed="0.000026"/>
</return>
<msg time="2026-04-08T00:52:41.392276" level="INFO">${leader_list} = [1]</msg>
<msg time="2026-04-08T00:52:41.392322" level="INFO">${follower_list} = [2, 3]</msg>
<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="PASS" start="2026-04-08T00:52:40.591501" elapsed="0.800845"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T00:52:41.392789" level="INFO">Length is 1.</msg>
<msg time="2026-04-08T00:52:41.392864" level="INFO">${leader_count} = 1</msg>
<var>${leader_count}</var>
<arg>${leader_list}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T00:52:41.392522" elapsed="0.000365"/>
</kw>
<if>
<branch type="IF" condition="${leader_count} &lt; 1">
<kw name="Fail" owner="BuiltIn">
<arg>No leader found.</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:41.393183" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:41.392955" elapsed="0.000282"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:41.392938" elapsed="0.000322"/>
</if>
<kw name="Length Should Be" owner="BuiltIn">
<msg time="2026-04-08T00:52:41.395384" level="INFO">Length is 1.</msg>
<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="PASS" start="2026-04-08T00:52:41.393396" elapsed="0.002035"/>
</kw>
<kw name="Get From List" owner="Collections">
<msg time="2026-04-08T00:52:41.395778" level="INFO">${leader} = 1</msg>
<var>${leader}</var>
<arg>${leader_list}</arg>
<arg>0</arg>
<doc>Returns the value specified with an ``index`` from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:52:41.395594" elapsed="0.000209"/>
</kw>
<return>
<value>${leader}</value>
<value>${follower_list}</value>
<status status="PASS" start="2026-04-08T00:52:41.395849" elapsed="0.000027"/>
</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="PASS" start="2026-04-08T00:52:40.588961" elapsed="0.807041"/>
</kw>
<var name="${shard_name}">default</var>
<status status="PASS" start="2026-04-08T00:52:40.588740" elapsed="0.807310"/>
</iter>
<var>${shard_name}</var>
<value>@{shard_name_list}</value>
<status status="PASS" start="2026-04-08T00:52:38.945026" elapsed="2.451057"/>
</for>
<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="PASS" start="2026-04-08T00:52:38.944638" elapsed="2.451501"/>
</kw>
<doc>Check Status for all shards in OpenFlow application.</doc>
<status status="PASS" start="2026-04-08T00:52:36.531393" elapsed="4.864863"/>
</kw>
<doc>Check Status for all shards in OpenFlow application and set default flows variable.
Note that Boron and beyond use latest OVS 2.5 which means controller has to push table miss flow,
therefore Boron+ has 1 flow/switch more than Beryllium.</doc>
<status status="PASS" start="2026-04-08T00:52:36.086058" elapsed="5.310322"/>
</test>
<test id="s1-s3-t2" name="Get inventory Leader Before Leader Restart" line="24">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-08T00:52:41.399719" elapsed="0.000205"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-08T00:52:41.399459" elapsed="0.000519"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:52:41.400962" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:52:41.400855" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:41.400836" elapsed="0.000193"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:52:41.405644" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:52:41.405538" elapsed="0.000150"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:41.405520" elapsed="0.000190"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:52:41.406704" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:52:41.406326" elapsed="0.000405"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:52:41.407206" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:52:41.406888" elapsed="0.000345"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:52:41.407277" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:52:41.407453" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:52:41.405935" elapsed="0.001543"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:52:41.414080" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:52:41.413970" elapsed="0.000156"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:41.413951" elapsed="0.000197"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:52:41.415330" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:52:41.415221" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:41.415201" elapsed="0.000197"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:52:41.415866" level="INFO">${karaf_connection_index} = 82</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:52:41.415569" elapsed="0.000324"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:52:41.416295" level="INFO">${current_connection_index} = None</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:52:41.416056" elapsed="0.000266"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T00:52:41.455905" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T00:52:41.416817" elapsed="0.039197"/>
</kw>
<msg time="2026-04-08T00:52:41.456212" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T00:52:41.456261" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:52:41.416483" elapsed="0.039816"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T00:52:41.545822" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "a "d "e "r "[C "F "o "l "l "o "w "e "r "[C "F "a "i "l "o "v "e "r ". "G "e "t "[C "i "n "v "e "n "t "o "r "y "[C "L "e "a "[78Cd "[A[78Ce
 "r "[C "B "e "f "o "r "e "[C "L "e "a "d "e "r "[C "R "e "s "t "a "r "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T00:52:41.456834" elapsed="0.089186"/>
</kw>
<msg time="2026-04-08T00:52:41.546302" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T00:52:41.546353" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:52:41.456478" elapsed="0.089914"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:41.546824" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:41.546506" elapsed="0.000381"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:41.546472" elapsed="0.000517"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:41.547551" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "a "d "e "r "[C "F "o "l "l "o "w "e "r "[C "F "a "i "l "o "v "e "r ". "G "e "t "[C "i "n "v "e "n "t "o "r "y "[C "L "e "a "[78Cd "[A[78Ce
 "r "[C "B "e "f "o "r "e "[C "L "e "a "d "e "r "[C "R "e "s "t "a "r "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:41.547144" elapsed="0.000499"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:41.547959" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:41.547725" elapsed="0.000292"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:41.547699" elapsed="0.000341"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T00:52:41.548077" elapsed="0.000038"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:52:41.549757" elapsed="0.000866"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:52:41.551027" elapsed="0.000570"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:52:41.551875" elapsed="0.000387"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:52:41.549072" elapsed="0.003312"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T00:52:41.548448" elapsed="0.004004"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T00:52:41.414889" elapsed="0.137703"/>
</kw>
<msg time="2026-04-08T00:52:41.552706" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:52:41.552763" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:52:41.414319" elapsed="0.138486"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T00:52:41.553038" elapsed="0.000034"/>
</return>
<status status="PASS" start="2026-04-08T00:52:41.552902" elapsed="0.000214"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:41.552881" elapsed="0.000266"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:41.553671" elapsed="0.000027"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:41.554018" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T00:52:41.554091" elapsed="0.000017"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T00:52:41.413623" elapsed="0.140601"/>
</kw>
<msg time="2026-04-08T00:52:41.554345" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:52:41.554403" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:52:41.407849" elapsed="0.146603"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:41.554886" elapsed="0.000027"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:41.554553" elapsed="0.000405"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:41.554529" elapsed="0.000459"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T00:52:41.407706" elapsed="0.147313"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:52:41.561041" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:52:41.560931" elapsed="0.000156"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:41.560912" elapsed="0.000197"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:52:41.562322" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:52:41.562210" elapsed="0.000159"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:41.562188" elapsed="0.000203"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:52:41.562844" level="INFO">${karaf_connection_index} = 84</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:52:41.562536" elapsed="0.000335"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:52:41.563308" level="INFO">${current_connection_index} = None</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:52:41.563033" elapsed="0.000303"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T00:52:41.602388" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T00:52:41.563893" elapsed="0.038607"/>
</kw>
<msg time="2026-04-08T00:52:41.602692" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T00:52:41.602740" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:52:41.563551" elapsed="0.039228"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T00:52:41.688084" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "a "d "e "r "[C "F "o "l "l "o "w "e "r "[C "F "a "i "l "o "v "e "r ". "G "e "t "[C "i "n "v "e "n "t "o "r "y "[C "L "e "a "[78Cd "[A[78Ce
 "r "[C "B "e "f "o "r "e "[C "L "e "a "d "e "r "[C "R "e "s "t "a "r "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T00:52:41.603352" elapsed="0.084933"/>
</kw>
<msg time="2026-04-08T00:52:41.688483" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T00:52:41.688532" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:52:41.602962" elapsed="0.085608"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:41.689015" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:41.688681" elapsed="0.000402"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:41.688647" elapsed="0.000464"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:41.689689" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "a "d "e "r "[C "F "o "l "l "o "w "e "r "[C "F "a "i "l "o "v "e "r ". "G "e "t "[C "i "n "v "e "n "t "o "r "y "[C "L "e "a "[78Cd "[A[78Ce
 "r "[C "B "e "f "o "r "e "[C "L "e "a "d "e "r "[C "R "e "s "t "a "r "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:41.689287" elapsed="0.000514"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:41.690202" elapsed="0.000029"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:41.689892" elapsed="0.000383"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:41.689865" elapsed="0.000441"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T00:52:41.690354" elapsed="0.000048"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:52:41.692142" elapsed="0.000851"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:52:41.693315" elapsed="0.000512"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:52:41.694094" elapsed="0.000388"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:52:41.691470" elapsed="0.003117"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T00:52:41.690753" elapsed="0.003900"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T00:52:41.561849" elapsed="0.132908"/>
</kw>
<msg time="2026-04-08T00:52:41.694853" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:52:41.694898" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:52:41.561284" elapsed="0.133661"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T00:52:41.695146" elapsed="0.000046"/>
</return>
<status status="PASS" start="2026-04-08T00:52:41.695035" elapsed="0.000192"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:41.695015" elapsed="0.000236"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 2,
close the previous connection. In any case create a new connection
to karaf console for 2, set correct prompt set and login to karaf console.
Store connection index for 2 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:41.695718" elapsed="0.000033"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:41.696186" elapsed="0.000033"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T00:52:41.696285" elapsed="0.000021"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T00:52:41.560552" elapsed="0.135879"/>
</kw>
<msg time="2026-04-08T00:52:41.696627" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:52:41.696685" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:52:41.555419" elapsed="0.141317"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:41.697085" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:41.696830" elapsed="0.000321"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:41.696811" elapsed="0.000390"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T00:52:41.555228" elapsed="0.141999"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:52:41.702897" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:52:41.702788" elapsed="0.000162"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:41.702768" elapsed="0.000213"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:52:41.704146" elapsed="0.000038"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:52:41.704035" elapsed="0.000184"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:41.704017" elapsed="0.000224"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:52:41.704694" level="INFO">${karaf_connection_index} = 86</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:52:41.704389" elapsed="0.000332"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:52:41.705115" level="INFO">${current_connection_index} = None</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:52:41.704881" elapsed="0.000261"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T00:52:41.742326" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T00:52:41.705667" elapsed="0.036765"/>
</kw>
<msg time="2026-04-08T00:52:41.742594" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T00:52:41.742642" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:52:41.705327" elapsed="0.037353"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T00:52:41.825445" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "a "d "e "r "[C "F "o "l "l "o "w "e "r "[C "F "a "i "l "o "v "e "r ". "G "e "t "[C "i "n "v "e "n "t "o "r "y "[C "L "e "a "[78Cd "[A[78Ce
 "r "[C "B "e "f "o "r "e "[C "L "e "a "d "e "r "[C "R "e "s "t "a "r "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T00:52:41.743230" elapsed="0.082342"/>
</kw>
<msg time="2026-04-08T00:52:41.825732" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T00:52:41.825778" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:52:41.742855" elapsed="0.082961"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:41.826124" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:41.825897" elapsed="0.000309"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:41.825875" elapsed="0.000357"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:41.826695" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "a "d "e "r "[C "F "o "l "l "o "w "e "r "[C "F "a "i "l "o "v "e "r ". "G "e "t "[C "i "n "v "e "n "t "o "r "y "[C "L "e "a "[78Cd "[A[78Ce
 "r "[C "B "e "f "o "r "e "[C "L "e "a "d "e "r "[C "R "e "s "t "a "r "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:41.826377" elapsed="0.000407"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:41.827069" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:41.826852" elapsed="0.000271"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:41.826833" elapsed="0.000312"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T00:52:41.827201" elapsed="0.000032"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:52:41.828639" elapsed="0.000773"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:52:41.829683" elapsed="0.000434"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:52:41.830443" elapsed="0.000392"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:52:41.828005" elapsed="0.002932"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T00:52:41.827474" elapsed="0.003525"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T00:52:41.703730" elapsed="0.127368"/>
</kw>
<msg time="2026-04-08T00:52:41.831208" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:52:41.831254" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:52:41.703142" elapsed="0.128149"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T00:52:41.831476" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-08T00:52:41.831369" elapsed="0.000167"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:41.831350" elapsed="0.000209"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 3,
close the previous connection. In any case create a new connection
to karaf console for 3, set correct prompt set and login to karaf console.
Store connection index for 3 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:41.831946" elapsed="0.000024"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:41.832302" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T00:52:41.832374" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T00:52:41.702434" elapsed="0.130046"/>
</kw>
<msg time="2026-04-08T00:52:41.832573" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:52:41.832617" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:52:41.697511" elapsed="0.135143"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:41.832977" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:41.832730" elapsed="0.000301"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:41.832713" elapsed="0.000340"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T00:52:41.697364" elapsed="0.135712"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-08T00:52:41.407534" elapsed="0.425575"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-08T00:52:41.405179" elapsed="0.428007"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-08T00:52:41.400573" elapsed="0.432675"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:52:41.400125" elapsed="0.433170"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-08T00:52:41.397436" elapsed="0.435916"/>
</kw>
<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-04-08T00:52:41.840603" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:52:41.840135" elapsed="0.000495"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:52:41.841093" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:52:41.840791" elapsed="0.000328"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:52:41.841178" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:52:41.841334" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:52:41.839768" elapsed="0.001590"/>
</kw>
<kw name="Sort List" owner="Collections">
<arg>${index_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="PASS" start="2026-04-08T00:52:41.841512" elapsed="0.000167"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:52:41.842187" level="INFO">${ds_type} = config</msg>
<var>${ds_type}</var>
<arg>'${shard_type}' != 'config'</arg>
<arg>operational</arg>
<arg>config</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:52:41.841838" elapsed="0.000377"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:52:41.842608" level="INFO">${leader_list} = []</msg>
<var>${leader_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:52:41.842372" elapsed="0.000262"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:52:41.843075" level="INFO">${follower_list} = []</msg>
<var>${follower_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:52:41.842833" elapsed="0.000268"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_Raft_State_Of_Shard_At_Member" owner="ClusterManagement">
<kw name="Get_Raft_Property_From_Shard_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:41.845529" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:41.845229" elapsed="0.000327"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:52:41.845602" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:52:41.845749" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:52:41.844863" elapsed="0.000910"/>
</kw>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Get_As_Json_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:41.915390" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:41.914975" elapsed="0.000443"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:52:41.916179" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:52:41.915911" elapsed="0.000347">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-08T00:52:41.916351" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:52:41.915581" elapsed="0.000795"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:52:41.916917" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:52:41.916538" elapsed="0.000406"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T00:52:41.917258" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-08T00:52:41.917411" level="INFO">${template} = /rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T00:52:41.917103" elapsed="0.000333"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:41.917833" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:41.917590" elapsed="0.000327"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:41.918890" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:41.918636" elapsed="0.000298"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-08T00:52:41.919403" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-08T00:52:41.919092" elapsed="0.000339"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:41.919743" elapsed="0.000021"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:41.919943" elapsed="0.000024"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:41.920115" elapsed="0.000021"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-08T00:52:41.919612" elapsed="0.000583"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-08T00:52:41.919479" elapsed="0.000748"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-08T00:52:41.920270" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:52:41.920428" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-08T00:52:41.918314" elapsed="0.002140"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:41.917989" elapsed="0.002497"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:41.920655" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:41.920510" elapsed="0.000201"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:41.917969" elapsed="0.002763"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:52:41.921330" level="INFO">${final_text} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:41.920873" elapsed="0.000484"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T00:52:41.921405" elapsed="0.000028"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="PASS" start="2026-04-08T00:52:41.914309" elapsed="0.007260"/>
</kw>
<msg time="2026-04-08T00:52:41.921680" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:52:41.901453" elapsed="0.020369"/>
</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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:41.935031" elapsed="0.000052"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:41.948072" elapsed="0.000052"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:41.961058" elapsed="0.000053"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:41.961450" elapsed="0.000075"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:41.961761" elapsed="0.000075"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:41.962570" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:41.962346" elapsed="0.000291"/>
</branch>
<status status="NOT RUN" start="2026-04-08T00:52:41.962318" elapsed="0.000357"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:41.962932" elapsed="0.000034"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:41.963248" elapsed="0.000036"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:41.963540" elapsed="0.000033"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-08T00:52:41.962253" elapsed="0.001368"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-08T00:52:41.961975" elapsed="0.001715"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:41.964011" elapsed="0.000074"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-08T00:52:41.964270" elapsed="0.000017"/>
</return>
<msg time="2026-04-08T00:52:41.964447" level="INFO">${uri} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-08T00:52:41.891443" elapsed="0.073031"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:52:41.966466" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:52:41.966135" elapsed="0.000397">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-08T00:52:41.966713" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:52:41.965336" elapsed="0.001417"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:41.968145" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:41.966899" elapsed="0.001351"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:41.969069" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:41.968577" elapsed="0.000538"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:41.968288" elapsed="0.000898"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:41.966878" elapsed="0.002346"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:52:41.972152" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:52:41.969426" elapsed="0.002783"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-08T00:52:41.972344" elapsed="0.000032"/>
</return>
<msg time="2026-04-08T00:52:41.972574" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:52:41.964856" elapsed="0.007744"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:52:41.974496" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:52:41.974196" elapsed="0.000364">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-08T00:52:41.974707" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:52:41.973414" elapsed="0.001333"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-08T00:52:41.975221" elapsed="0.000052"/>
</return>
<status status="PASS" start="2026-04-08T00:52:41.974892" elapsed="0.000469"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:41.974872" elapsed="0.000529"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:41.975595" elapsed="0.000074"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:41.975931" elapsed="0.000074"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-08T00:52:41.976124" elapsed="0.000017"/>
</return>
<msg time="2026-04-08T00:52:41.989015" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:52:41.972946" elapsed="0.016098"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:41.991728" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:41.990920" elapsed="0.000937"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:41.992730" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:41.992127" elapsed="0.000734"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:52:42.004584" level="INFO">GET Request : url=http://10.30.170.48:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 path_url=/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01jewze00gqgu8yuon50tdwq65226.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:52:42.005021" level="INFO">GET Response : url=http://10.30.170.48:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Transfer-Encoding': 'chunked'} 
 body={"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","hidden-symmetric-keys","encrypted-private-keys","asymmetrically-encrypted-value-format","cms-encrypted-data-format","cleartext-private-keys","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["ssh-client-keepalives","client-ident-hostbased","client-ident-publickey","client-ident-password"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-ex... (set the log level to DEBUG or TRACE to see the full content) 
 </msg>
<msg time="2026-04-08T00:52:42.005362" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:52:41.996181" elapsed="0.009227"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:41.992986" elapsed="0.012479"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:42.006515" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:42.005505" elapsed="0.001105"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:41.992966" elapsed="0.013679"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:42.011580" level="INFO">{"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","hidden-symmetric-keys","encrypted-private-keys","asymmetrically-encrypted-value-format","cms-encrypted-data-format","cleartext-private-keys","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["ssh-client-keepalives","client-ident-hostbased","client-ident-publickey","client-ident-password"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-experimenter-types?revision=2015-10-20","namespace":"urn:opendaylight:openflowplugin:experimenter:types","conformance-type":"import"},{"name":"ietf-ip_2018-02-22","revision":"2018-02-22","schema":"/rests/modules/ietf-ip?revision=2018-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-ip","conformance-type":"import","feature":["ipv6-privacy-autoconf","ipv4-non-contiguous-netmasks"]},{"name":"ietf-tcp-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-client","conformance-type":"import","feature":["local-binding-supported","tcp-client-keepalives"]},{"name":"node-config_2014-10-15","revision":"2014-10-15","schema":"/rests/modules/node-config?revision=2014-10-15","namespace":"urn:opendaylight:module:config","conformance-type":"import"},{"name":"ietf-restconf_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf","conformance-type":"import"},{"name":"ietf-datastores_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-datastores?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-datastores","conformance-type":"import"},{"name":"ietf-yang-patch_2017-02-22","revision":"2017-02-22","schema":"/rests/modules/ietf-yang-patch?revision=2017-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-patch","conformance-type":"import"},{"name":"sal-group_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-group?revision=2013-09-18","namespace":"urn:opendaylight:group:service","conformance-type":"import"},{"name":"odl-codegen-extensions_2024-06-27","revision":"2024-06-27","schema":"/rests/modules/odl-codegen-extensions?revision=2024-06-27","namespace":"urn:opendaylight:yang:extension:codegen","conformance-type":"import"},{"name":"sal-meter_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-meter?revision=2013-09-18","namespace":"urn:opendaylight:meter:service","conformance-type":"import"},{"name":"ietf-interfaces_2018-02-20","revision":"2018-02-20","schema":"/rests/modules/ietf-interfaces?revision=2018-02-20","namespace":"urn:ietf:params:xml:ns:yang:ietf-interfaces","conformance-type":"import","feature":["pre-provisioning","if-mib","arbitrary-names"]},{"name":"opendaylight-l2-types_2013-08-27","revision":"2013-08-27","schema":"/rests/modules/opendaylight-l2-types?revision=2013-08-27","namespace":"urn:opendaylight:l2:types","conformance-type":"import"},{"name":"opendaylight-flow-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-flow-types?revision=2013-10-26","namespace":"urn:opendaylight:flow:types","conformance-type":"import"},{"name":"lldp-speaker-config_2016-05-12","revision":"2016-05-12","schema":"/rests/modules/lldp-speaker-config?revision=2016-05-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker:config","conformance-type":"import"},{"name":"aaa-cert_2015-11-26","revision":"2015-11-26","schema":"/rests/modules/aaa-cert?revision=2015-11-26","namespace":"urn:opendaylight:yang:aaa:cert","conformance-type":"import"},{"name":"openflow-action_2015-02-03","revision":"2015-02-03","schema":"/rests/modules/openflow-action?revision=2015-02-03","namespace":"urn:opendaylight:openflow:common:action","conformance-type":"import"},{"name":"openflow-approved-extensions_2016-08-02","revision":"2016-08-02","schema":"/rests/modules/openflow-approved-extensions?revision=2016-08-02","namespace":"urn:opendaylight:openflow:approved:extensions","conformance-type":"import"},{"name":"nc-notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/nc-notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netmod:notification","conformance-type":"import"},{"name":"ietf-netconf-nmda_2019-01-07","revision":"2019-01-07","schema":"/rests/modules/ietf-netconf-nmda?revision=2019-01-07","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-nmda","conformance-type":"import","feature":["with-defaults","origin"]},{"name":"ietf-tcp-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-common","conformance-type":"import","feature":["keepalives-supported"]},{"name":"network-topology_2013-10-21","revision":"2013-10-21","schema":"/rests/modules/network-topology?revision=2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:network-topology","conformance-type":"import"},{"name":"aaa-encrypt-service-config_2024-02-02","revision":"2024-02-02","schema":"/rests/modules/aaa-encrypt-service-config?revision=2024-02-02","namespace":"config:aaa:authn:encrypt:service:config","conformance-type":"import"},{"name":"openflow-instruction_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-instruction?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:instruction","conformance-type":"import"},{"name":"ietf-tls-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-client","conformance-type":"import","feature":["client-ident-x509-cert","server-auth-x509-cert"]},{"name":"opendaylight-group-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-group-statistics?revision=2013-11-11","namespace":"urn:opendaylight:group:statistics","conformance-type":"import"},{"name":"cluster-admin_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/cluster-admin?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:cluster:admin","conformance-type":"import"},{"name":"opendaylight-flow-statistics_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-flow-statistics?revision=2013-08-19","namespace":"urn:opendaylight:flow:statistics","conformance-type":"import"},{"name":"opendaylight-table-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-table-types?revision=2013-10-26","namespace":"urn:opendaylight:table:types","conformance-type":"import"},{"name":"forwarding-rules-manager-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/forwarding-rules-manager-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:forwardingrules-manager:config","conformance-type":"import"},{"name":"odl-srm-types_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-types?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:types","conformance-type":"import"},{"name":"ietf-x509-cert-to-name_2014-12-10","revision":"2014-12-10","schema":"/rests/modules/ietf-x509-cert-to-name?revision=2014-12-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-x509-cert-to-name","conformance-type":"import"},{"name":"flow-node-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-node-inventory?revision=2013-08-19","namespace":"urn:opendaylight:flow:inventory","conformance-type":"import"},{"name":"flow-errors_2013-11-16","revision":"2013-11-16","schema":"/rests/modules/flow-errors?revision=2013-11-16","namespace":"urn:opendaylight:flow:errors","conformance-type":"import"},{"name":"ietf-netconf_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:netconf:base:1.0","conformance-type":"import","feature":["xpath","url","rollback-on-error","validate","startup","candidate","confirmed-commit","writable-running"]},{"name":"iana-ssh-public-key-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-public-key-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-public-key-algs","conformance-type":"import"},{"name":"aaa-cert-mdsal_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/aaa-cert-mdsal?revision=2016-03-21","namespace":"urn:opendaylight:yang:aaa:cert:mdsal","conformance-type":"import"},{"name":"odl-device-notification_2024-02-18","revision":"2024-02-18","schema":"/rests/modules/odl-device-notification?revision=2024-02-18","namespace":"urn:opendaylight:device:notification","conformance-type":"import"},{"name":"ietf-origin_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-origin?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-origin","conformance-type":"import"},{"name":"openflow-augments_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-augments?revision=2015-02-25","namespace":"urn:opendaylight:openflow:augments","conformance-type":"import"},{"name":"iana-ssh-encryption-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-encryption-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-encryption-algs","conformance-type":"import"},{"name":"ietf-truststore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-truststore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-truststore","conformance-type":"import","feature":["inline-definitions-supported"]},{"name":"distributed-datastore-provider_2025-01-30","revision":"2025-01-30","schema":"/rests/modules/distributed-datastore-provider?revision=2025-01-30","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:distributed-datastore-provider","conformance-type":"import"},{"name":"opendaylight-group-types_2013-10-18","revision":"2013-10-18","schema":"/rests/modules/opendaylight-group-types?revision=2013-10-18","namespace":"urn:opendaylight:group:types","conformance-type":"import"},{"name":"sal-remote-augment_2023-11-03","revision":"2023-11-03","schema":"/rests/modules/sal-remote-augment?revision=2023-11-03","namespace":"urn:sal:restconf:event:subscription","conformance-type":"import"},{"name":"opendaylight-ipv6-arbitrary-bitmask-fields_2016-02-24","revision":"2016-02-24","schema":"/rests/modules/opendaylight-ipv6-arbitrary-bitmask-fields?revision=2016-02-24","namespace":"urn:opendaylight:opendaylight-ipv6-arbitrary-bitmask-fields","conformance-type":"import"},{"name":"sal-flows-batch_2016-03-14","revision":"2016-03-14","schema":"/rests/modules/sal-flows-batch?revision=2016-03-14","namespace":"urn:opendaylight:flows:service","conformance-type":"import"},{"name":"ietf-tls-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-common","conformance-type":"import","feature":["tls12","hello-params","tls13"]},{"name":"openflow-types_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-types?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:types","conformance-type":"import"},{"name":"ietf-netconf-with-defaults_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf-with-defaults?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults","conformance-type":"import"},{"name":"odl-srm-ops_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-ops?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:ops","conformance-type":"import"},{"name":"odl-general-entity_2015-09-30","revision":"2015-09-30","schema":"/rests/modules/odl-general-entity?revision=2015-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:mdsal:core:general-entity","conformance-type":"import"},{"name":"iana-ssh-key-exchange-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-key-exchange-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-key-exchange-algs","conformance-type":"import"},{"name":"node-ssl-connection-error_2019-07-23","revision":"2019-07-23","schema":"/rests/modules/node-ssl-connection-error?revision=2019-07-23","namespace":"urn:opendaylight:node-ssl-connection-error:service","conformance-type":"import"},{"name":"openflow-protocol_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-protocol?revision=2013-07-31","namespace":"urn:opendaylight:openflow:protocol","conformance-type":"import"},{"name":"ietf-udp-server_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-server?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-server","conformance-type":"import"},{"name":"ietf-keystore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-keystore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-keystore","conformance-type":"import","feature":["asymmetric-keys","inline-definitions-supported"]},{"name":"aaa_2016-12-14","revision":"2016-12-14","schema":"/rests/modules/aaa?revision=2016-12-14","namespace":"urn:opendaylight:params:xml:ns:yang:aaa","conformance-type":"import"},{"name":"aaa-cert-rpc_2015-12-15","revision":"2015-12-15","schema":"/rests/modules/aaa-cert-rpc?revision=2015-12-15","namespace":"urn:opendaylight:yang:aaa:cert:rpc","conformance-type":"import"},{"name":"system-notifications_2013-09-27","revision":"2013-09-27","schema":"/rests/modules/system-notifications?revision=2013-09-27","namespace":"urn:opendaylight:openflow:system","conformance-type":"import"},{"name":"sal-flat-batch_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/sal-flat-batch?revision=2016-03-21","namespace":"urn:opendaylight:flat-batch:service","conformance-type":"import"},{"name":"notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netconf:notification:1.0","conformance-type":"import"},{"name":"sal-remote_2014-01-14","revision":"2014-01-14","schema":"/rests/modules/sal-remote?revision=2014-01-14","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:remote","conformance-type":"import"},{"name":"yang-ext_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/yang-ext?revision=2013-07-09","namespace":"urn:opendaylight:yang:extension:yang-ext","conformance-type":"import"},{"name":"opendaylight-multipart-types_2017-01-12","revision":"2017-01-12","schema":"/rests/modules/opendaylight-multipart-types?revision=2017-01-12","namespace":"urn:opendaylight:multipart:types","conformance-type":"import"},{"name":"opendaylight-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-inventory?revision=2013-08-19","namespace":"urn:opendaylight:inventory","conformance-type":"import"},{"name":"sal-queue_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-queue?revision=2015-03-05","namespace":"urn:opendaylight:queue:service","conformance-type":"import"},{"name":"sal-groups-batch_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/sal-groups-batch?revision=2016-03-15","namespace":"urn:opendaylight:groups:service","conformance-type":"import"},{"name":"arbitrator-reconcile_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/arbitrator-reconcile?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:arbitrator-reconcile:service","conformance-type":"import"},{"name":"ietf-yang-metadata_2016-08-05","revision":"2016-08-05","schema":"/rests/modules/ietf-yang-metadata?revision=2016-08-05","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-metadata","conformance-type":"import"},{"name":"opendaylight-arbitrary-bitmask-fields_2016-01-30","revision":"2016-01-30","schema":"/rests/modules/opendaylight-arbitrary-bitmask-fields?revision=2016-01-30","namespace":"urn:opendaylight:arbitrary:bitmask:fields","conformance-type":"import"},{"name":"ietf-udp-client_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-client?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-client","conformance-type":"import","feature":["local-binding"]},{"name":"opendaylight-meter-types_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/opendaylight-meter-types?revision=2013-09-18","namespace":"urn:opendaylight:meter:types","conformance-type":"import"},{"name":"opendaylight-action-types_2013-11-12","revision":"2013-11-12","schema":"/rests/modules/opendaylight-action-types?revision=2013-11-12","namespace":"urn:opendaylight:action:types","conformance-type":"import"},{"name":"sal-role_2015-07-27","revision":"2015-07-27","schema":"/rests/modules/sal-role?revision=2015-07-27","namespace":"urn:opendaylight:role:service","conformance-type":"import"},{"name":"openflow-provider-config_2016-05-10","revision":"2016-05-10","schema":"/rests/modules/openflow-provider-config?revision=2016-05-10","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:provider:config","conformance-type":"import"},{"name":"odl-serviceutils-upgrade_2018-07-02","revision":"2018-07-02","schema":"/rests/modules/odl-serviceutils-upgrade?revision=2018-07-02","namespace":"urn:opendaylight:serviceutils:upgrade","conformance-type":"import"},{"name":"opendaylight-match-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-match-types?revision=2013-10-26","namespace":"urn:opendaylight:model:match:types","conformance-type":"import"},{"name":"ietf-restconf-server_2024-08-14","revision":"2024-08-14","schema":"/rests/modules/ietf-restconf-server?revision=2024-08-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-server","conformance-type":"import","feature":["http-listen","https-listen"]},{"name":"reconciliation-result-state_2017-07-13","revision":"2017-07-13","schema":"/rests/modules/reconciliation-result-state?revision=2017-07-13","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:rf:state","conformance-type":"import"},{"name":"onf-extensions_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/onf-extensions?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf","conformance-type":"import"},{"name":"sal-table_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/sal-table?revision=2013-10-26","namespace":"urn:opendaylight:table:service","conformance-type":"import"},{"name":"iana-http-versions_2026-02-04","revision":"2026-02-04","schema":"/rests/modules/iana-http-versions?revision=2026-02-04","namespace":"urn:ietf:params:xml:ns:yang:iana-http-versions","conformance-type":"import"},{"name":"opendaylight-direct-statistics_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/opendaylight-direct-statistics?revision=2016-05-11","namespace":"urn:opendaylight:direct:statistics","conformance-type":"import"},{"name":"opendaylight-port-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-port-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:port","conformance-type":"import"},{"name":"sal-async-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/sal-async-config?revision=2017-06-19","namespace":"urn:opendaylight:async-config:service","conformance-type":"import"},{"name":"aaa-password-service-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-password-service-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:password:service:config","conformance-type":"import"},{"name":"ietf-yang-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-yang-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-types","conformance-type":"import"},{"name":"opendaylight-queue-statistics_2013-12-16","revision":"2013-12-16","schema":"/rests/modules/opendaylight-queue-statistics?revision=2013-12-16","namespace":"urn:opendaylight:queue:statistics","conformance-type":"import"},{"name":"sal-bundle_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/sal-bundle?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf:bundle:service","conformance-type":"import"},{"name":"ietf-restconf-subscribed-notifications_2019-11-17","revision":"2019-11-17","schema":"/rests/modules/ietf-restconf-subscribed-notifications?revision=2019-11-17","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-subscribed-notifications","conformance-type":"import"},{"name":"sal-meters-batch_2016-03-16","revision":"2016-03-16","schema":"/rests/modules/sal-meters-batch?revision=2016-03-16","namespace":"urn:opendaylight:meters:service","conformance-type":"import"},{"name":"odl-entity-owners","revision":"","schema":"/rests/modules/odl-entity-owners","namespace":"urn:opendaylight:params:xml:ns:yang:controller:entity-owners","conformance-type":"import"},{"name":"sal-experimenter-mp-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-mp-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-mp-message:service","conformance-type":"import"},{"name":"packet-processing_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/packet-processing?revision=2013-07-09","namespace":"urn:opendaylight:packet:service","conformance-type":"import"},{"name":"openflow-configuration_2014-06-30","revision":"2014-06-30","schema":"/rests/modules/openflow-configuration?revision=2014-06-30","namespace":"urn:opendaylight:openflow:config","conformance-type":"import"},{"name":"odl-srm-rpcs_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-rpcs?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:rpc","conformance-type":"import"},{"name":"ietf-netconf-acm_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-netconf-acm?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-acm","conformance-type":"import"},{"name":"iana-crypt-hash_2014-08-06","revision":"2014-08-06","schema":"/rests/modules/iana-crypt-hash?revision=2014-08-06","namespace":"urn:ietf:params:xml:ns:yang:iana-crypt-hash","conformance-type":"import","feature":["crypt-hash-sha-512","crypt-hash-sha-256","crypt-hash-md5"]},{"name":"openflow-extensible-match_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-extensible-match?revision=2015-02-25","namespace":"urn:opendaylight:openflow:oxm","conformance-type":"import"}],"module-set-id":"2"}}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:42.008959" elapsed="0.002958"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:42.008669" elapsed="0.003310"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:42.008636" elapsed="0.003393"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:42.014627" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:42.012463" elapsed="0.002210"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:42.012145" elapsed="0.002588"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:42.012112" elapsed="0.002670"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:52:42.015662" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:42.015118" elapsed="0.000591"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:42.016152" elapsed="0.000151"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:42.015819" elapsed="0.000545"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:42.016934" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:42.016626" elapsed="0.000334"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:42.016411" elapsed="0.000608"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:42.015788" elapsed="0.001276"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:52:42.017918" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:42.017412" elapsed="0.000553"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:42.018391" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:42.018074" elapsed="0.000396"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:42.019030" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:42.018725" elapsed="0.000331"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:42.018516" elapsed="0.000599"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:42.018043" elapsed="0.001133"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:52:42.019500" elapsed="0.000436"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:52:42.020735" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:42.020318" elapsed="0.000462"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:52:42.021107" elapsed="0.002326"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:52:42.007446" elapsed="0.016102"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:52:42.023951" elapsed="0.000038"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:52:42.023748" elapsed="0.000324"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:42.023726" elapsed="0.000383"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:52:42.034690" level="INFO">${text_normalized} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:52:42.024396" elapsed="0.010339"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:52:42.034872" elapsed="0.000034"/>
</return>
<msg time="2026-04-08T00:52:42.035108" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:52:41.989415" elapsed="0.045721"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:52:42.035218" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:52:42.035372" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="PASS" start="2026-04-08T00:52:41.854029" elapsed="0.181370"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Json_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:42.035726" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:42.035484" elapsed="0.000381"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:42.035466" elapsed="0.000429"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:52:42.035929" elapsed="0.000026"/>
</return>
<arg>session=${session}</arg>
<arg>folder=${RESTCONF_MODULES_DIR}</arg>
<arg>verify=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Add arguments sensible for JSON data, return Get_Templated response text.
Optionally, verification against JSON data (may be iterated) is called.
Only subset of JSON data is verified and returned if JMES path is specified in
file ${folder}/jmespath.expr.</doc>
<status status="PASS" start="2026-04-08T00:52:41.849820" elapsed="0.186232"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:41.845841" elapsed="0.190254"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:41.845823" elapsed="0.190296"/>
</if>
<kw name="Resolve_Shard_Type_Class" owner="ClusterManagement">
<if>
<branch type="IF" condition="'${shard_type}' == 'config'">
<return>
<value>DistributedConfigDatastore</value>
<status status="PASS" start="2026-04-08T00:52:42.036770" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-08T00:52:42.036663" elapsed="0.000166"/>
</branch>
<branch type="ELSE IF" condition="'${shard_type}' == 'operational'">
<return>
<value>DistributedOperationalDatastore</value>
<status status="NOT RUN" start="2026-04-08T00:52:42.036890" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:52:42.036853" elapsed="0.000075"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:42.036644" elapsed="0.000307"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized shard type: ${shard_type}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:42.037093" elapsed="0.000021"/>
</kw>
<msg time="2026-04-08T00:52:42.037231" level="INFO">${type_class} = DistributedConfigDatastore</msg>
<var>${type_class}</var>
<arg>shard_type=${shard_type}</arg>
<doc>Simple lookup for class name corresponding to desired type.</doc>
<status status="PASS" start="2026-04-08T00:52:42.036396" elapsed="0.000861"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:52:42.037792" level="INFO">${cluster_index} = 1</msg>
<var>${cluster_index}</var>
<arg>${member_index}+${NODE_ROLE_INDEX_START}-1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:42.037423" elapsed="0.000396"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:42.038449" level="INFO">${uri} = jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-inventory-config,type=DistributedConfigDatastore</msg>
<var>${uri}</var>
<arg>${JOLOKIA_READ_URI}:Category=Shards,name=member-${cluster_index}-shard-${shard_name}-${shard_type},type=${type_class}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:42.037973" elapsed="0.000503"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:42.043934" level="INFO">jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-inventory-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:42.043660" elapsed="0.000322"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:42.044436" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:42.044135" elapsed="0.000346"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:52:42.053303" level="INFO">GET Request : url=http://10.30.170.48:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-inventory-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-inventory-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:52:42.053412" level="INFO">GET Response : url=http://10.30.170.48:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-inventory-config,type=DistributedConfigDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Wed, 08 Apr 2026 00:52:42 GMT', 'Expires': 'Tue, 07 Apr 2026 23:52:42 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-1-shard-inventory-config,type=DistributedConfigDatastore","type":"read"},"value":{"ReadWriteTransactionCount":12,"SnapshotIndex":22,"InMemoryJournalLogSize":1,"ReplicatedToAllIndex":22,"Leader":"member-1-shard-inventory-config","LastIndex":23,"RaftState":"Leader","LastApplied":23,"LastCommittedTransactionTime":"1970-01-01 00:00:00.000","PeerAddresses":"member-2-shard-inventory-config: pekko:\/\/opendaylight-cluster-data@10.30.170.131:2550\/user\/shardmanager-config\/member-2-shard-inventory-config, member-3-shard-inventory-config: pekko:\/\/opendaylight-cluster-data@10.30.171.110:2550\/user\/shardmanager-config\/member-3-shard-inventory-config","LastLogIndex":23,"LastLeadershipChangeTime":"2026-04-08 00:46:45.964","FollowerInitialSyncStatus":false,"FollowerInfo":[{"timeSinceLastActivity":"00:00:00.018","active":true,"matchIndex":23,"voting":true,"id":"member-2-shard-inventory-config","nextIndex":24},{"timeSinceLastActivity":"00:00:00.018","active":true,"matchIndex":23,"voting":true,"id":"member-3-shard-inventory-config","nextIndex":24}],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"401.4 μs","CurrentTerm":2,"LastTerm":2,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-inventory-config","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":0,"TxCohortCacheSize":0,"PeerVotingStates":"member-2-shard-inventory-config: true, member-3-shard-inventory-config: true","LastLogTerm":2,"StatRetrievalError":null,"CommitIndex":23,"SnapshotTerm":2,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-1-shard-inventory-config","LeadershipChangeCount":1,"InMemoryJournalDataSize":888},"timestamp":1775609562,"status":200} 
 </msg>
<msg time="2026-04-08T00:52:42.053567" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:52:42.046478" elapsed="0.007116"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:42.044550" elapsed="0.009087"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:42.053817" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:42.053663" elapsed="0.000218"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:42.044531" elapsed="0.009372"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:42.057991" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-1-shard-inventory-config,type=DistributedConfigDatastore","type":"read"},"value":{"ReadWriteTransactionCount":12,"SnapshotIndex":22,"InMemoryJournalLogSize":1,"ReplicatedToAllIndex":22,"Leader":"member-1-shard-inventory-config","LastIndex":23,"RaftState":"Leader","LastApplied":23,"LastCommittedTransactionTime":"1970-01-01 00:00:00.000","PeerAddresses":"member-2-shard-inventory-config: pekko:\/\/opendaylight-cluster-data@10.30.170.131:2550\/user\/shardmanager-config\/member-2-shard-inventory-config, member-3-shard-inventory-config: pekko:\/\/opendaylight-cluster-data@10.30.171.110:2550\/user\/shardmanager-config\/member-3-shard-inventory-config","LastLogIndex":23,"LastLeadershipChangeTime":"2026-04-08 00:46:45.964","FollowerInitialSyncStatus":false,"FollowerInfo":[{"timeSinceLastActivity":"00:00:00.018","active":true,"matchIndex":23,"voting":true,"id":"member-2-shard-inventory-config","nextIndex":24},{"timeSinceLastActivity":"00:00:00.018","active":true,"matchIndex":23,"voting":true,"id":"member-3-shard-inventory-config","nextIndex":24}],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"401.4 μs","CurrentTerm":2,"LastTerm":2,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-inventory-config","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":0,"TxCohortCacheSize":0,"PeerVotingStates":"member-2-shard-inventory-config: true, member-3-shard-inventory-config: true","LastLogTerm":2,"StatRetrievalError":null,"CommitIndex":23,"SnapshotTerm":2,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-1-shard-inventory-config","LeadershipChangeCount":1,"InMemoryJournalDataSize":888},"timestamp":1775609562,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:42.055241" elapsed="0.002897"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:42.054900" elapsed="0.003346"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:42.054881" elapsed="0.003393"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:42.061160" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:42.058634" elapsed="0.002670"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:42.058333" elapsed="0.003060"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:42.058315" elapsed="0.003105"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:52:42.062203" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:42.061584" elapsed="0.000648"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:42.062913" elapsed="0.000075"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:42.062336" elapsed="0.000752"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:42.064374" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:42.063643" elapsed="0.000773"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:42.063115" elapsed="0.001438"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:42.062317" elapsed="0.002261"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:52:42.065300" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:42.064741" elapsed="0.000587"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:42.066012" elapsed="0.000076"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:42.065432" elapsed="0.000774"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:42.067448" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:42.066692" elapsed="0.000798"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:42.066234" elapsed="0.001355"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:42.065412" elapsed="0.002201"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:52:42.067764" elapsed="0.000739"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:52:42.069266" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:42.068733" elapsed="0.000559"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:52:42.069487" elapsed="0.002490"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:52:42.054444" elapsed="0.017622"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:52:42.072269" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:52:42.072139" elapsed="0.000174"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:42.072119" elapsed="0.000215"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:52:42.087008" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-1-shard-inventory-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 177560...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:52:42.072478" elapsed="0.014560"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:52:42.087090" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:52:42.087514" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-1-shard-inventory-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 177560...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:52:42.039381" elapsed="0.048161"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:52:42.087601" elapsed="0.000027"/>
</return>
<msg time="2026-04-08T00:52:42.087750" level="INFO">${data_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-1-shard-inventory-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 177560...</msg>
<var>${data_text}</var>
<arg>uri=${uri}</arg>
<arg>session=${session}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-08T00:52:42.038688" elapsed="0.049088"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:52:42.088851" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-1-shard-inventory-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1775609562, 'valu...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:42.088354" elapsed="0.000525"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-08T00:52:42.088928" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:52:42.089106" level="INFO">${data_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-1-shard-inventory-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1775609562, 'valu...</msg>
<var>${data_object}</var>
<arg>${data_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-08T00:52:42.087998" elapsed="0.001135"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:52:42.089513" level="INFO">${value} = {'AbortTransactionsCount': 0, 'CommitIndex': 23, 'CommittedTransactionsCount': 0, 'CurrentTerm': 2, 'FailedReadTransactionsCount': 0, 'FailedTransactionsCount': 0, 'FollowerInfo': [{'active': True, 'i...</msg>
<var>${value}</var>
<arg>${data_object}</arg>
<arg>value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:52:42.089307" elapsed="0.000233"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:52:42.089889" level="INFO">${raft_property} = Leader</msg>
<var>${raft_property}</var>
<arg>${value}</arg>
<arg>${property}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:52:42.089693" elapsed="0.000221"/>
</kw>
<return>
<value>${raft_property}</value>
<status status="PASS" start="2026-04-08T00:52:42.089960" elapsed="0.000027"/>
</return>
<msg time="2026-04-08T00:52:42.090109" level="INFO">${raft_state} = Leader</msg>
<var>${raft_state}</var>
<arg>RaftState</arg>
<arg>${shard_name}</arg>
<arg>${shard_type}</arg>
<arg>${member_index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft property.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T00:52:41.844265" elapsed="0.245869"/>
</kw>
<return>
<value>${raft_state}</value>
<status status="PASS" start="2026-04-08T00:52:42.090208" elapsed="0.000026"/>
</return>
<msg time="2026-04-08T00:52:42.090356" level="INFO">${raft_state} = Leader</msg>
<var>${raft_state}</var>
<arg>shard_name=${shard_name}</arg>
<arg>shard_type=${ds_type}</arg>
<arg>member_index=${index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft status.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T00:52:41.843541" elapsed="0.246840"/>
</kw>
<if>
<branch type="IF" condition="'Follower' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${follower_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:42.090671" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:42.090458" elapsed="0.000269"/>
</branch>
<branch type="ELSE IF" condition="'Leader' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${leader_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-08T00:52:42.090955" elapsed="0.000187"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:42.090750" elapsed="0.000709"/>
</branch>
<branch type="ELSE IF" condition="${validate}">
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized Raft state: ${raft_state}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:42.091629" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:42.091485" elapsed="0.000195"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:42.090441" elapsed="0.001262"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T00:52:41.843377" elapsed="0.248349"/>
</iter>
<iter>
<kw name="Get_Raft_State_Of_Shard_At_Member" owner="ClusterManagement">
<kw name="Get_Raft_Property_From_Shard_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:42.094035" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:42.093737" elapsed="0.000324"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:52:42.094105" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:52:42.094269" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:52:42.093399" elapsed="0.000895"/>
</kw>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Get_As_Json_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:42.163868" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:42.163489" elapsed="0.000407"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:52:42.164707" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:52:42.164482" elapsed="0.000294">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-08T00:52:42.164867" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:52:42.164056" elapsed="0.000835"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:52:42.165465" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:52:42.165052" elapsed="0.000439"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T00:52:42.165783" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-08T00:52:42.165919" level="INFO">${template} = /rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T00:52:42.165648" elapsed="0.000296"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:42.166360" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:42.166095" elapsed="0.000308"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:42.167349" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:42.167075" elapsed="0.000318"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-08T00:52:42.167812" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-08T00:52:42.167550" elapsed="0.000288"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:42.168148" elapsed="0.000045"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:42.168373" elapsed="0.000024"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:42.168545" elapsed="0.000021"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-08T00:52:42.168018" elapsed="0.000583"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-08T00:52:42.167885" elapsed="0.000745"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-08T00:52:42.168673" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:52:42.168829" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-08T00:52:42.166758" elapsed="0.002096"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:42.166471" elapsed="0.002415"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:42.169055" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:42.168911" elapsed="0.000197"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:42.166451" elapsed="0.002678"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:52:42.169739" level="INFO">${final_text} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:42.169308" elapsed="0.000458"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T00:52:42.169813" 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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="PASS" start="2026-04-08T00:52:42.162802" elapsed="0.007175"/>
</kw>
<msg time="2026-04-08T00:52:42.170045" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:52:42.149940" elapsed="0.020268"/>
</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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:42.183113" elapsed="0.000066"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:42.195839" elapsed="0.000052"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:42.208770" elapsed="0.000052"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:42.209128" elapsed="0.000094"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:42.209458" elapsed="0.000075"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:42.210294" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:42.210053" elapsed="0.000309"/>
</branch>
<status status="NOT RUN" start="2026-04-08T00:52:42.210025" elapsed="0.000375"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:42.210658" elapsed="0.000034"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:42.210959" elapsed="0.000033"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:42.211266" elapsed="0.000035"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-08T00:52:42.209961" elapsed="0.001388"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-08T00:52:42.209704" elapsed="0.001715"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:42.211729" elapsed="0.000074"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-08T00:52:42.211971" elapsed="0.000017"/>
</return>
<msg time="2026-04-08T00:52:42.212148" level="INFO">${uri} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-08T00:52:42.140046" elapsed="0.072155"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:52:42.214143" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:52:42.213839" elapsed="0.000388">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-08T00:52:42.214376" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:52:42.213030" elapsed="0.001387"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:42.215757" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:42.214566" elapsed="0.001278"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:42.216716" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:42.216218" elapsed="0.000544"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:42.215883" elapsed="0.000927"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:42.214546" elapsed="0.002298"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:52:42.219681" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:52:42.217041" elapsed="0.002682"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-08T00:52:42.219860" elapsed="0.000032"/>
</return>
<msg time="2026-04-08T00:52:42.220088" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:52:42.212580" elapsed="0.007534"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:52:42.222213" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:52:42.221894" elapsed="0.000386">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-08T00:52:42.222428" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:52:42.221074" elapsed="0.001394"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-08T00:52:42.222906" elapsed="0.000050"/>
</return>
<status status="PASS" start="2026-04-08T00:52:42.222616" elapsed="0.000427"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:42.222596" elapsed="0.000486"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:42.223294" elapsed="0.000076"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:42.223609" elapsed="0.000074"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-08T00:52:42.223804" elapsed="0.000016"/>
</return>
<msg time="2026-04-08T00:52:42.237053" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:52:42.220586" elapsed="0.016496"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:42.239575" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:42.238976" elapsed="0.000728"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:42.240677" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:42.239934" elapsed="0.000872"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:52:42.256945" level="INFO">GET Request : url=http://10.30.170.131:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 path_url=/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01eq5fxmndxspk37g8qgkyja672.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:52:42.257369" level="INFO">GET Response : url=http://10.30.170.131:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Transfer-Encoding': 'chunked'} 
 body={"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","hidden-symmetric-keys","encrypted-private-keys","asymmetrically-encrypted-value-format","cms-encrypted-data-format","cleartext-private-keys","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["ssh-client-keepalives","client-ident-hostbased","client-ident-publickey","client-ident-password"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-ex... (set the log level to DEBUG or TRACE to see the full content) 
 </msg>
<msg time="2026-04-08T00:52:42.257672" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:52:42.244061" elapsed="0.013657"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:42.240933" elapsed="0.016841"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:42.258795" elapsed="0.000039"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:42.257814" elapsed="0.001078"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:42.240913" elapsed="0.018013"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:42.263770" level="INFO">{"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","hidden-symmetric-keys","encrypted-private-keys","asymmetrically-encrypted-value-format","cms-encrypted-data-format","cleartext-private-keys","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["ssh-client-keepalives","client-ident-hostbased","client-ident-publickey","client-ident-password"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-experimenter-types?revision=2015-10-20","namespace":"urn:opendaylight:openflowplugin:experimenter:types","conformance-type":"import"},{"name":"ietf-ip_2018-02-22","revision":"2018-02-22","schema":"/rests/modules/ietf-ip?revision=2018-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-ip","conformance-type":"import","feature":["ipv6-privacy-autoconf","ipv4-non-contiguous-netmasks"]},{"name":"ietf-tcp-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-client","conformance-type":"import","feature":["local-binding-supported","tcp-client-keepalives"]},{"name":"node-config_2014-10-15","revision":"2014-10-15","schema":"/rests/modules/node-config?revision=2014-10-15","namespace":"urn:opendaylight:module:config","conformance-type":"import"},{"name":"ietf-restconf_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf","conformance-type":"import"},{"name":"ietf-datastores_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-datastores?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-datastores","conformance-type":"import"},{"name":"ietf-yang-patch_2017-02-22","revision":"2017-02-22","schema":"/rests/modules/ietf-yang-patch?revision=2017-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-patch","conformance-type":"import"},{"name":"sal-group_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-group?revision=2013-09-18","namespace":"urn:opendaylight:group:service","conformance-type":"import"},{"name":"odl-codegen-extensions_2024-06-27","revision":"2024-06-27","schema":"/rests/modules/odl-codegen-extensions?revision=2024-06-27","namespace":"urn:opendaylight:yang:extension:codegen","conformance-type":"import"},{"name":"sal-meter_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-meter?revision=2013-09-18","namespace":"urn:opendaylight:meter:service","conformance-type":"import"},{"name":"ietf-interfaces_2018-02-20","revision":"2018-02-20","schema":"/rests/modules/ietf-interfaces?revision=2018-02-20","namespace":"urn:ietf:params:xml:ns:yang:ietf-interfaces","conformance-type":"import","feature":["pre-provisioning","if-mib","arbitrary-names"]},{"name":"opendaylight-l2-types_2013-08-27","revision":"2013-08-27","schema":"/rests/modules/opendaylight-l2-types?revision=2013-08-27","namespace":"urn:opendaylight:l2:types","conformance-type":"import"},{"name":"opendaylight-flow-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-flow-types?revision=2013-10-26","namespace":"urn:opendaylight:flow:types","conformance-type":"import"},{"name":"lldp-speaker-config_2016-05-12","revision":"2016-05-12","schema":"/rests/modules/lldp-speaker-config?revision=2016-05-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker:config","conformance-type":"import"},{"name":"aaa-cert_2015-11-26","revision":"2015-11-26","schema":"/rests/modules/aaa-cert?revision=2015-11-26","namespace":"urn:opendaylight:yang:aaa:cert","conformance-type":"import"},{"name":"openflow-action_2015-02-03","revision":"2015-02-03","schema":"/rests/modules/openflow-action?revision=2015-02-03","namespace":"urn:opendaylight:openflow:common:action","conformance-type":"import"},{"name":"openflow-approved-extensions_2016-08-02","revision":"2016-08-02","schema":"/rests/modules/openflow-approved-extensions?revision=2016-08-02","namespace":"urn:opendaylight:openflow:approved:extensions","conformance-type":"import"},{"name":"nc-notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/nc-notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netmod:notification","conformance-type":"import"},{"name":"ietf-netconf-nmda_2019-01-07","revision":"2019-01-07","schema":"/rests/modules/ietf-netconf-nmda?revision=2019-01-07","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-nmda","conformance-type":"import","feature":["with-defaults","origin"]},{"name":"ietf-tcp-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-common","conformance-type":"import","feature":["keepalives-supported"]},{"name":"network-topology_2013-10-21","revision":"2013-10-21","schema":"/rests/modules/network-topology?revision=2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:network-topology","conformance-type":"import"},{"name":"aaa-encrypt-service-config_2024-02-02","revision":"2024-02-02","schema":"/rests/modules/aaa-encrypt-service-config?revision=2024-02-02","namespace":"config:aaa:authn:encrypt:service:config","conformance-type":"import"},{"name":"openflow-instruction_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-instruction?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:instruction","conformance-type":"import"},{"name":"ietf-tls-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-client","conformance-type":"import","feature":["client-ident-x509-cert","server-auth-x509-cert"]},{"name":"opendaylight-group-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-group-statistics?revision=2013-11-11","namespace":"urn:opendaylight:group:statistics","conformance-type":"import"},{"name":"cluster-admin_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/cluster-admin?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:cluster:admin","conformance-type":"import"},{"name":"opendaylight-flow-statistics_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-flow-statistics?revision=2013-08-19","namespace":"urn:opendaylight:flow:statistics","conformance-type":"import"},{"name":"opendaylight-table-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-table-types?revision=2013-10-26","namespace":"urn:opendaylight:table:types","conformance-type":"import"},{"name":"forwarding-rules-manager-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/forwarding-rules-manager-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:forwardingrules-manager:config","conformance-type":"import"},{"name":"odl-srm-types_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-types?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:types","conformance-type":"import"},{"name":"ietf-x509-cert-to-name_2014-12-10","revision":"2014-12-10","schema":"/rests/modules/ietf-x509-cert-to-name?revision=2014-12-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-x509-cert-to-name","conformance-type":"import"},{"name":"flow-node-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-node-inventory?revision=2013-08-19","namespace":"urn:opendaylight:flow:inventory","conformance-type":"import"},{"name":"flow-errors_2013-11-16","revision":"2013-11-16","schema":"/rests/modules/flow-errors?revision=2013-11-16","namespace":"urn:opendaylight:flow:errors","conformance-type":"import"},{"name":"ietf-netconf_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:netconf:base:1.0","conformance-type":"import","feature":["xpath","url","rollback-on-error","validate","startup","candidate","confirmed-commit","writable-running"]},{"name":"iana-ssh-public-key-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-public-key-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-public-key-algs","conformance-type":"import"},{"name":"aaa-cert-mdsal_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/aaa-cert-mdsal?revision=2016-03-21","namespace":"urn:opendaylight:yang:aaa:cert:mdsal","conformance-type":"import"},{"name":"odl-device-notification_2024-02-18","revision":"2024-02-18","schema":"/rests/modules/odl-device-notification?revision=2024-02-18","namespace":"urn:opendaylight:device:notification","conformance-type":"import"},{"name":"ietf-origin_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-origin?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-origin","conformance-type":"import"},{"name":"openflow-augments_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-augments?revision=2015-02-25","namespace":"urn:opendaylight:openflow:augments","conformance-type":"import"},{"name":"iana-ssh-encryption-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-encryption-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-encryption-algs","conformance-type":"import"},{"name":"ietf-truststore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-truststore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-truststore","conformance-type":"import","feature":["inline-definitions-supported"]},{"name":"distributed-datastore-provider_2025-01-30","revision":"2025-01-30","schema":"/rests/modules/distributed-datastore-provider?revision=2025-01-30","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:distributed-datastore-provider","conformance-type":"import"},{"name":"opendaylight-group-types_2013-10-18","revision":"2013-10-18","schema":"/rests/modules/opendaylight-group-types?revision=2013-10-18","namespace":"urn:opendaylight:group:types","conformance-type":"import"},{"name":"sal-remote-augment_2023-11-03","revision":"2023-11-03","schema":"/rests/modules/sal-remote-augment?revision=2023-11-03","namespace":"urn:sal:restconf:event:subscription","conformance-type":"import"},{"name":"opendaylight-ipv6-arbitrary-bitmask-fields_2016-02-24","revision":"2016-02-24","schema":"/rests/modules/opendaylight-ipv6-arbitrary-bitmask-fields?revision=2016-02-24","namespace":"urn:opendaylight:opendaylight-ipv6-arbitrary-bitmask-fields","conformance-type":"import"},{"name":"sal-flows-batch_2016-03-14","revision":"2016-03-14","schema":"/rests/modules/sal-flows-batch?revision=2016-03-14","namespace":"urn:opendaylight:flows:service","conformance-type":"import"},{"name":"ietf-tls-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-common","conformance-type":"import","feature":["tls12","hello-params","tls13"]},{"name":"openflow-types_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-types?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:types","conformance-type":"import"},{"name":"ietf-netconf-with-defaults_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf-with-defaults?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults","conformance-type":"import"},{"name":"odl-srm-ops_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-ops?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:ops","conformance-type":"import"},{"name":"odl-general-entity_2015-09-30","revision":"2015-09-30","schema":"/rests/modules/odl-general-entity?revision=2015-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:mdsal:core:general-entity","conformance-type":"import"},{"name":"iana-ssh-key-exchange-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-key-exchange-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-key-exchange-algs","conformance-type":"import"},{"name":"node-ssl-connection-error_2019-07-23","revision":"2019-07-23","schema":"/rests/modules/node-ssl-connection-error?revision=2019-07-23","namespace":"urn:opendaylight:node-ssl-connection-error:service","conformance-type":"import"},{"name":"openflow-protocol_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-protocol?revision=2013-07-31","namespace":"urn:opendaylight:openflow:protocol","conformance-type":"import"},{"name":"ietf-udp-server_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-server?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-server","conformance-type":"import"},{"name":"ietf-keystore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-keystore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-keystore","conformance-type":"import","feature":["asymmetric-keys","inline-definitions-supported"]},{"name":"aaa_2016-12-14","revision":"2016-12-14","schema":"/rests/modules/aaa?revision=2016-12-14","namespace":"urn:opendaylight:params:xml:ns:yang:aaa","conformance-type":"import"},{"name":"aaa-cert-rpc_2015-12-15","revision":"2015-12-15","schema":"/rests/modules/aaa-cert-rpc?revision=2015-12-15","namespace":"urn:opendaylight:yang:aaa:cert:rpc","conformance-type":"import"},{"name":"system-notifications_2013-09-27","revision":"2013-09-27","schema":"/rests/modules/system-notifications?revision=2013-09-27","namespace":"urn:opendaylight:openflow:system","conformance-type":"import"},{"name":"sal-flat-batch_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/sal-flat-batch?revision=2016-03-21","namespace":"urn:opendaylight:flat-batch:service","conformance-type":"import"},{"name":"notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netconf:notification:1.0","conformance-type":"import"},{"name":"sal-remote_2014-01-14","revision":"2014-01-14","schema":"/rests/modules/sal-remote?revision=2014-01-14","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:remote","conformance-type":"import"},{"name":"yang-ext_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/yang-ext?revision=2013-07-09","namespace":"urn:opendaylight:yang:extension:yang-ext","conformance-type":"import"},{"name":"opendaylight-multipart-types_2017-01-12","revision":"2017-01-12","schema":"/rests/modules/opendaylight-multipart-types?revision=2017-01-12","namespace":"urn:opendaylight:multipart:types","conformance-type":"import"},{"name":"opendaylight-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-inventory?revision=2013-08-19","namespace":"urn:opendaylight:inventory","conformance-type":"import"},{"name":"sal-queue_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-queue?revision=2015-03-05","namespace":"urn:opendaylight:queue:service","conformance-type":"import"},{"name":"sal-groups-batch_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/sal-groups-batch?revision=2016-03-15","namespace":"urn:opendaylight:groups:service","conformance-type":"import"},{"name":"arbitrator-reconcile_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/arbitrator-reconcile?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:arbitrator-reconcile:service","conformance-type":"import"},{"name":"ietf-yang-metadata_2016-08-05","revision":"2016-08-05","schema":"/rests/modules/ietf-yang-metadata?revision=2016-08-05","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-metadata","conformance-type":"import"},{"name":"opendaylight-arbitrary-bitmask-fields_2016-01-30","revision":"2016-01-30","schema":"/rests/modules/opendaylight-arbitrary-bitmask-fields?revision=2016-01-30","namespace":"urn:opendaylight:arbitrary:bitmask:fields","conformance-type":"import"},{"name":"ietf-udp-client_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-client?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-client","conformance-type":"import","feature":["local-binding"]},{"name":"opendaylight-meter-types_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/opendaylight-meter-types?revision=2013-09-18","namespace":"urn:opendaylight:meter:types","conformance-type":"import"},{"name":"opendaylight-action-types_2013-11-12","revision":"2013-11-12","schema":"/rests/modules/opendaylight-action-types?revision=2013-11-12","namespace":"urn:opendaylight:action:types","conformance-type":"import"},{"name":"sal-role_2015-07-27","revision":"2015-07-27","schema":"/rests/modules/sal-role?revision=2015-07-27","namespace":"urn:opendaylight:role:service","conformance-type":"import"},{"name":"openflow-provider-config_2016-05-10","revision":"2016-05-10","schema":"/rests/modules/openflow-provider-config?revision=2016-05-10","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:provider:config","conformance-type":"import"},{"name":"odl-serviceutils-upgrade_2018-07-02","revision":"2018-07-02","schema":"/rests/modules/odl-serviceutils-upgrade?revision=2018-07-02","namespace":"urn:opendaylight:serviceutils:upgrade","conformance-type":"import"},{"name":"opendaylight-match-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-match-types?revision=2013-10-26","namespace":"urn:opendaylight:model:match:types","conformance-type":"import"},{"name":"ietf-restconf-server_2024-08-14","revision":"2024-08-14","schema":"/rests/modules/ietf-restconf-server?revision=2024-08-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-server","conformance-type":"import","feature":["http-listen","https-listen"]},{"name":"reconciliation-result-state_2017-07-13","revision":"2017-07-13","schema":"/rests/modules/reconciliation-result-state?revision=2017-07-13","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:rf:state","conformance-type":"import"},{"name":"onf-extensions_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/onf-extensions?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf","conformance-type":"import"},{"name":"sal-table_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/sal-table?revision=2013-10-26","namespace":"urn:opendaylight:table:service","conformance-type":"import"},{"name":"iana-http-versions_2026-02-04","revision":"2026-02-04","schema":"/rests/modules/iana-http-versions?revision=2026-02-04","namespace":"urn:ietf:params:xml:ns:yang:iana-http-versions","conformance-type":"import"},{"name":"opendaylight-direct-statistics_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/opendaylight-direct-statistics?revision=2016-05-11","namespace":"urn:opendaylight:direct:statistics","conformance-type":"import"},{"name":"opendaylight-port-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-port-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:port","conformance-type":"import"},{"name":"sal-async-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/sal-async-config?revision=2017-06-19","namespace":"urn:opendaylight:async-config:service","conformance-type":"import"},{"name":"aaa-password-service-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-password-service-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:password:service:config","conformance-type":"import"},{"name":"ietf-yang-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-yang-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-types","conformance-type":"import"},{"name":"opendaylight-queue-statistics_2013-12-16","revision":"2013-12-16","schema":"/rests/modules/opendaylight-queue-statistics?revision=2013-12-16","namespace":"urn:opendaylight:queue:statistics","conformance-type":"import"},{"name":"sal-bundle_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/sal-bundle?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf:bundle:service","conformance-type":"import"},{"name":"ietf-restconf-subscribed-notifications_2019-11-17","revision":"2019-11-17","schema":"/rests/modules/ietf-restconf-subscribed-notifications?revision=2019-11-17","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-subscribed-notifications","conformance-type":"import"},{"name":"sal-meters-batch_2016-03-16","revision":"2016-03-16","schema":"/rests/modules/sal-meters-batch?revision=2016-03-16","namespace":"urn:opendaylight:meters:service","conformance-type":"import"},{"name":"odl-entity-owners","revision":"","schema":"/rests/modules/odl-entity-owners","namespace":"urn:opendaylight:params:xml:ns:yang:controller:entity-owners","conformance-type":"import"},{"name":"sal-experimenter-mp-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-mp-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-mp-message:service","conformance-type":"import"},{"name":"packet-processing_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/packet-processing?revision=2013-07-09","namespace":"urn:opendaylight:packet:service","conformance-type":"import"},{"name":"openflow-configuration_2014-06-30","revision":"2014-06-30","schema":"/rests/modules/openflow-configuration?revision=2014-06-30","namespace":"urn:opendaylight:openflow:config","conformance-type":"import"},{"name":"odl-srm-rpcs_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-rpcs?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:rpc","conformance-type":"import"},{"name":"ietf-netconf-acm_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-netconf-acm?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-acm","conformance-type":"import"},{"name":"iana-crypt-hash_2014-08-06","revision":"2014-08-06","schema":"/rests/modules/iana-crypt-hash?revision=2014-08-06","namespace":"urn:ietf:params:xml:ns:yang:iana-crypt-hash","conformance-type":"import","feature":["crypt-hash-sha-512","crypt-hash-sha-256","crypt-hash-md5"]},{"name":"openflow-extensible-match_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-extensible-match?revision=2015-02-25","namespace":"urn:opendaylight:openflow:oxm","conformance-type":"import"}],"module-set-id":"2"}}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:42.261194" elapsed="0.002893"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:42.260893" elapsed="0.003255"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:42.260860" elapsed="0.003369"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:42.266787" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:42.264611" elapsed="0.002221"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:42.264325" elapsed="0.002567"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:42.264296" elapsed="0.002643"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:52:42.267895" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:42.267384" elapsed="0.000557"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:42.268368" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:42.268050" elapsed="0.000397"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:42.269008" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:42.268703" elapsed="0.000331"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:42.268493" elapsed="0.000599"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:42.268019" elapsed="0.001117"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:52:42.270059" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:42.269529" elapsed="0.000576"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:42.270532" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:42.270231" elapsed="0.000380"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:42.271231" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:42.270866" elapsed="0.000393"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:42.270657" elapsed="0.000661"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:42.270199" elapsed="0.001164"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:52:42.271680" elapsed="0.000430"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:52:42.272870" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:42.272463" elapsed="0.000452"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:52:42.273257" elapsed="0.002276"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:52:42.259715" elapsed="0.015895"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:52:42.275968" elapsed="0.000037"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:52:42.275772" elapsed="0.000315"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:42.275752" elapsed="0.000371"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:52:42.287336" level="INFO">${text_normalized} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:52:42.276333" elapsed="0.011048"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:52:42.287516" elapsed="0.000033"/>
</return>
<msg time="2026-04-08T00:52:42.287752" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:52:42.237448" elapsed="0.050332"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:52:42.287843" elapsed="0.000027"/>
</return>
<msg time="2026-04-08T00:52:42.287993" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="PASS" start="2026-04-08T00:52:42.102587" elapsed="0.185432"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Json_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:42.288358" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:42.288102" elapsed="0.000364"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:42.288085" elapsed="0.000407"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:52:42.288525" elapsed="0.000026"/>
</return>
<arg>session=${session}</arg>
<arg>folder=${RESTCONF_MODULES_DIR}</arg>
<arg>verify=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Add arguments sensible for JSON data, return Get_Templated response text.
Optionally, verification against JSON data (may be iterated) is called.
Only subset of JSON data is verified and returned if JMES path is specified in
file ${folder}/jmespath.expr.</doc>
<status status="PASS" start="2026-04-08T00:52:42.098515" elapsed="0.190132"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:42.094360" elapsed="0.194329"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:42.094342" elapsed="0.194370"/>
</if>
<kw name="Resolve_Shard_Type_Class" owner="ClusterManagement">
<if>
<branch type="IF" condition="'${shard_type}' == 'config'">
<return>
<value>DistributedConfigDatastore</value>
<status status="PASS" start="2026-04-08T00:52:42.289320" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-08T00:52:42.289212" elapsed="0.000166"/>
</branch>
<branch type="ELSE IF" condition="'${shard_type}' == 'operational'">
<return>
<value>DistributedOperationalDatastore</value>
<status status="NOT RUN" start="2026-04-08T00:52:42.289438" elapsed="0.000012"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:52:42.289401" elapsed="0.000074"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:42.289194" elapsed="0.000304"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized shard type: ${shard_type}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:42.289640" elapsed="0.000021"/>
</kw>
<msg time="2026-04-08T00:52:42.289758" level="INFO">${type_class} = DistributedConfigDatastore</msg>
<var>${type_class}</var>
<arg>shard_type=${shard_type}</arg>
<doc>Simple lookup for class name corresponding to desired type.</doc>
<status status="PASS" start="2026-04-08T00:52:42.288931" elapsed="0.000853"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:52:42.290375" level="INFO">${cluster_index} = 2</msg>
<var>${cluster_index}</var>
<arg>${member_index}+${NODE_ROLE_INDEX_START}-1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:42.289950" elapsed="0.000452"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:42.291010" level="INFO">${uri} = jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-inventory-config,type=DistributedConfigDatastore</msg>
<var>${uri}</var>
<arg>${JOLOKIA_READ_URI}:Category=Shards,name=member-${cluster_index}-shard-${shard_name}-${shard_type},type=${type_class}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:42.290555" elapsed="0.000482"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:42.296450" level="INFO">jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-inventory-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:42.296173" elapsed="0.000324"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:42.296915" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:42.296650" elapsed="0.000309"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:52:42.304786" level="INFO">GET Request : url=http://10.30.170.131:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-inventory-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-inventory-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:52:42.304892" level="INFO">GET Response : url=http://10.30.170.131:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-inventory-config,type=DistributedConfigDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Wed, 08 Apr 2026 00:52:42 GMT', 'Expires': 'Tue, 07 Apr 2026 23:52:42 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-2-shard-inventory-config,type=DistributedConfigDatastore","type":"read"},"value":{"ReadWriteTransactionCount":0,"SnapshotIndex":22,"InMemoryJournalLogSize":1,"ReplicatedToAllIndex":22,"Leader":"member-1-shard-inventory-config","LastIndex":23,"RaftState":"Follower","LastCommittedTransactionTime":"1970-01-01 00:00:00.000","LastApplied":23,"PeerAddresses":"member-1-shard-inventory-config: pekko:\/\/opendaylight-cluster-data@10.30.170.48:2550\/user\/shardmanager-config\/member-1-shard-inventory-config, member-3-shard-inventory-config: pekko:\/\/opendaylight-cluster-data@10.30.171.110:2550\/user\/shardmanager-config\/member-3-shard-inventory-config","LastLogIndex":23,"LastLeadershipChangeTime":"2026-04-08 00:46:45.970","FollowerInitialSyncStatus":true,"FollowerInfo":[],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"231.8 μs","CurrentTerm":2,"LastTerm":2,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-inventory-config","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":0,"TxCohortCacheSize":0,"PeerVotingStates":"member-1-shard-inventory-config: true, member-3-shard-inventory-config: true","LastLogTerm":2,"StatRetrievalError":null,"CommitIndex":23,"SnapshotTerm":2,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-2-shard-inventory-config","LeadershipChangeCount":1,"InMemoryJournalDataSize":888},"timestamp":1775609562,"status":200} 
 </msg>
<msg time="2026-04-08T00:52:42.305044" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:52:42.298994" elapsed="0.006076"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:42.297028" elapsed="0.008086"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:42.305327" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:42.305141" elapsed="0.000251"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:42.297009" elapsed="0.008405"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:42.309416" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-2-shard-inventory-config,type=DistributedConfigDatastore","type":"read"},"value":{"ReadWriteTransactionCount":0,"SnapshotIndex":22,"InMemoryJournalLogSize":1,"ReplicatedToAllIndex":22,"Leader":"member-1-shard-inventory-config","LastIndex":23,"RaftState":"Follower","LastCommittedTransactionTime":"1970-01-01 00:00:00.000","LastApplied":23,"PeerAddresses":"member-1-shard-inventory-config: pekko:\/\/opendaylight-cluster-data@10.30.170.48:2550\/user\/shardmanager-config\/member-1-shard-inventory-config, member-3-shard-inventory-config: pekko:\/\/opendaylight-cluster-data@10.30.171.110:2550\/user\/shardmanager-config\/member-3-shard-inventory-config","LastLogIndex":23,"LastLeadershipChangeTime":"2026-04-08 00:46:45.970","FollowerInitialSyncStatus":true,"FollowerInfo":[],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"231.8 μs","CurrentTerm":2,"LastTerm":2,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-inventory-config","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":0,"TxCohortCacheSize":0,"PeerVotingStates":"member-1-shard-inventory-config: true, member-3-shard-inventory-config: true","LastLogTerm":2,"StatRetrievalError":null,"CommitIndex":23,"SnapshotTerm":2,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-2-shard-inventory-config","LeadershipChangeCount":1,"InMemoryJournalDataSize":888},"timestamp":1775609562,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:42.306712" elapsed="0.002888"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:42.306411" elapsed="0.003282"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:42.306391" elapsed="0.003334"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:42.312658" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:42.310085" elapsed="0.002705"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:42.309784" elapsed="0.003096"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:42.309766" elapsed="0.003142"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:52:42.313651" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:42.313070" elapsed="0.000609"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:42.314473" elapsed="0.000077"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:42.313785" elapsed="0.000867"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:42.315972" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:42.315247" elapsed="0.000766"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:42.314680" elapsed="0.001436"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:42.313764" elapsed="0.002378"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:52:42.316868" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:42.316322" elapsed="0.000574"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:42.317606" elapsed="0.000077"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:42.317000" elapsed="0.000787"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:42.319080" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:42.318350" elapsed="0.000773"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:42.317814" elapsed="0.001428"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:42.316980" elapsed="0.002288"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:52:42.319424" elapsed="0.000722"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:52:42.320902" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:42.320383" elapsed="0.000545"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:52:42.321123" elapsed="0.002541"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:52:42.305897" elapsed="0.017860"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:52:42.323935" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:52:42.323828" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:42.323809" elapsed="0.000193"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:52:42.339085" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-2-shard-inventory-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 177560...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:52:42.324147" elapsed="0.014968"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:52:42.339185" elapsed="0.000032"/>
</return>
<msg time="2026-04-08T00:52:42.339346" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-2-shard-inventory-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 177560...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:52:42.291938" elapsed="0.047435"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:52:42.339464" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:52:42.339615" level="INFO">${data_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-2-shard-inventory-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 177560...</msg>
<var>${data_text}</var>
<arg>uri=${uri}</arg>
<arg>session=${session}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-08T00:52:42.291263" elapsed="0.048379"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:52:42.340690" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-2-shard-inventory-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1775609562, 'valu...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:42.340245" elapsed="0.000474"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-08T00:52:42.340769" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:52:42.340941" level="INFO">${data_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-2-shard-inventory-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1775609562, 'valu...</msg>
<var>${data_object}</var>
<arg>${data_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-08T00:52:42.339863" elapsed="0.001105"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:52:42.341340" level="INFO">${value} = {'AbortTransactionsCount': 0, 'CommitIndex': 23, 'CommittedTransactionsCount': 0, 'CurrentTerm': 2, 'FailedReadTransactionsCount': 0, 'FailedTransactionsCount': 0, 'FollowerInfo': [], 'FollowerInitial...</msg>
<var>${value}</var>
<arg>${data_object}</arg>
<arg>value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:52:42.341122" elapsed="0.000245"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:52:42.341726" level="INFO">${raft_property} = Follower</msg>
<var>${raft_property}</var>
<arg>${value}</arg>
<arg>${property}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:52:42.341529" elapsed="0.000223"/>
</kw>
<return>
<value>${raft_property}</value>
<status status="PASS" start="2026-04-08T00:52:42.341798" elapsed="0.000027"/>
</return>
<msg time="2026-04-08T00:52:42.341947" level="INFO">${raft_state} = Follower</msg>
<var>${raft_state}</var>
<arg>RaftState</arg>
<arg>${shard_name}</arg>
<arg>${shard_type}</arg>
<arg>${member_index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft property.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T00:52:42.092784" elapsed="0.249188"/>
</kw>
<return>
<value>${raft_state}</value>
<status status="PASS" start="2026-04-08T00:52:42.342027" elapsed="0.000025"/>
</return>
<msg time="2026-04-08T00:52:42.342385" level="INFO">${raft_state} = Follower</msg>
<var>${raft_state}</var>
<arg>shard_name=${shard_name}</arg>
<arg>shard_type=${ds_type}</arg>
<arg>member_index=${index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft status.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T00:52:42.092047" elapsed="0.250366"/>
</kw>
<if>
<branch type="IF" condition="'Follower' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${follower_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-08T00:52:42.342731" elapsed="0.000188"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:42.342510" elapsed="0.000447"/>
</branch>
<branch type="ELSE IF" condition="'Leader' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${leader_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:42.343124" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:42.342981" elapsed="0.000215"/>
</branch>
<branch type="ELSE IF" condition="${validate}">
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized Raft state: ${raft_state}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:42.343362" elapsed="0.000019"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:42.343220" elapsed="0.000192"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:42.342492" elapsed="0.000941"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T00:52:42.091883" elapsed="0.251573"/>
</iter>
<iter>
<kw name="Get_Raft_State_Of_Shard_At_Member" owner="ClusterManagement">
<kw name="Get_Raft_Property_From_Shard_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:42.345883" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:42.345582" elapsed="0.000328"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:52:42.345955" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:52:42.346100" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:52:42.345093" elapsed="0.001031"/>
</kw>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Get_As_Json_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:42.416466" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:42.416057" elapsed="0.000437"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:52:42.417233" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:52:42.416987" elapsed="0.000325">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-08T00:52:42.417449" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:52:42.416657" elapsed="0.000817"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:52:42.418028" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:52:42.417644" elapsed="0.000411"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T00:52:42.418370" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-08T00:52:42.418508" level="INFO">${template} = /rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T00:52:42.418232" elapsed="0.000302"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:42.418929" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:42.418687" elapsed="0.000286"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:42.419956" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:42.419703" elapsed="0.000298"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-08T00:52:42.420448" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-08T00:52:42.420173" elapsed="0.000301"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:42.420794" elapsed="0.000022"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:42.420993" elapsed="0.000023"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:42.421184" elapsed="0.000023"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-08T00:52:42.420662" elapsed="0.000583"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-08T00:52:42.420526" elapsed="0.000747"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-08T00:52:42.421317" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:52:42.421473" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-08T00:52:42.419382" elapsed="0.002116"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:42.419075" elapsed="0.002455"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:42.421699" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:42.421554" elapsed="0.000201"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:42.419055" elapsed="0.002720"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:52:42.422362" level="INFO">${final_text} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:42.421915" elapsed="0.000474"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T00:52:42.422438" elapsed="0.000028"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="PASS" start="2026-04-08T00:52:42.415392" elapsed="0.007210"/>
</kw>
<msg time="2026-04-08T00:52:42.422671" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:52:42.402570" elapsed="0.020241"/>
</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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:42.435941" elapsed="0.000053"/>
</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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:42.448899" elapsed="0.000052"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:42.462006" elapsed="0.000052"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:42.462397" elapsed="0.000076"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:42.462708" elapsed="0.000159"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:42.463647" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:42.463418" elapsed="0.000298"/>
</branch>
<status status="NOT RUN" start="2026-04-08T00:52:42.463384" elapsed="0.000371"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:42.464014" elapsed="0.000035"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:42.464342" elapsed="0.000034"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:42.464636" elapsed="0.000034"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-08T00:52:42.463287" elapsed="0.001431"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-08T00:52:42.463010" elapsed="0.001777"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:42.465098" elapsed="0.000089"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-08T00:52:42.465362" elapsed="0.000018"/>
</return>
<msg time="2026-04-08T00:52:42.465539" level="INFO">${uri} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-08T00:52:42.392648" elapsed="0.072917"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:52:42.467559" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:52:42.467219" elapsed="0.000405">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-08T00:52:42.467771" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:52:42.466427" elapsed="0.001383"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:42.469156" elapsed="0.000065"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:42.467961" elapsed="0.001310"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:42.470101" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:42.469603" elapsed="0.000544"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:42.469316" elapsed="0.000945"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:42.467940" elapsed="0.002358"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:52:42.473108" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:52:42.470499" elapsed="0.002652"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-08T00:52:42.473306" elapsed="0.000042"/>
</return>
<msg time="2026-04-08T00:52:42.473547" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:52:42.465943" elapsed="0.007631"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:52:42.475724" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:52:42.475345" elapsed="0.000445">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-08T00:52:42.475975" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:52:42.474530" elapsed="0.001485"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-08T00:52:42.476476" elapsed="0.000051"/>
</return>
<status status="PASS" start="2026-04-08T00:52:42.476183" elapsed="0.000432"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:42.476146" elapsed="0.000507"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:42.476850" elapsed="0.000077"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:42.477189" elapsed="0.000077"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-08T00:52:42.477392" elapsed="0.000017"/>
</return>
<msg time="2026-04-08T00:52:42.490636" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:52:42.473925" elapsed="0.016739"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:42.493188" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:42.492590" elapsed="0.000741"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:42.494145" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:42.493565" elapsed="0.000953"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:52:42.513085" level="INFO">GET Request : url=http://10.30.171.110:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 path_url=/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0336bvzrfnrhc3cqywxyctca52.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:52:42.514026" level="INFO">GET Response : url=http://10.30.171.110:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Transfer-Encoding': 'chunked'} 
 body={"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","hidden-symmetric-keys","encrypted-private-keys","asymmetrically-encrypted-value-format","cms-encrypted-data-format","cleartext-private-keys","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["ssh-client-keepalives","client-ident-hostbased","client-ident-publickey","client-ident-password"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-ex... (set the log level to DEBUG or TRACE to see the full content) 
 </msg>
<msg time="2026-04-08T00:52:42.514766" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:52:42.497565" elapsed="0.017306"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:42.494645" elapsed="0.020354"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:42.516883" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:42.515087" elapsed="0.001931"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:42.494624" elapsed="0.022444"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:42.523942" level="INFO">{"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","hidden-symmetric-keys","encrypted-private-keys","asymmetrically-encrypted-value-format","cms-encrypted-data-format","cleartext-private-keys","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["ssh-client-keepalives","client-ident-hostbased","client-ident-publickey","client-ident-password"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-experimenter-types?revision=2015-10-20","namespace":"urn:opendaylight:openflowplugin:experimenter:types","conformance-type":"import"},{"name":"ietf-ip_2018-02-22","revision":"2018-02-22","schema":"/rests/modules/ietf-ip?revision=2018-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-ip","conformance-type":"import","feature":["ipv6-privacy-autoconf","ipv4-non-contiguous-netmasks"]},{"name":"ietf-tcp-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-client","conformance-type":"import","feature":["local-binding-supported","tcp-client-keepalives"]},{"name":"node-config_2014-10-15","revision":"2014-10-15","schema":"/rests/modules/node-config?revision=2014-10-15","namespace":"urn:opendaylight:module:config","conformance-type":"import"},{"name":"ietf-restconf_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf","conformance-type":"import"},{"name":"ietf-datastores_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-datastores?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-datastores","conformance-type":"import"},{"name":"ietf-yang-patch_2017-02-22","revision":"2017-02-22","schema":"/rests/modules/ietf-yang-patch?revision=2017-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-patch","conformance-type":"import"},{"name":"sal-group_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-group?revision=2013-09-18","namespace":"urn:opendaylight:group:service","conformance-type":"import"},{"name":"odl-codegen-extensions_2024-06-27","revision":"2024-06-27","schema":"/rests/modules/odl-codegen-extensions?revision=2024-06-27","namespace":"urn:opendaylight:yang:extension:codegen","conformance-type":"import"},{"name":"sal-meter_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-meter?revision=2013-09-18","namespace":"urn:opendaylight:meter:service","conformance-type":"import"},{"name":"ietf-interfaces_2018-02-20","revision":"2018-02-20","schema":"/rests/modules/ietf-interfaces?revision=2018-02-20","namespace":"urn:ietf:params:xml:ns:yang:ietf-interfaces","conformance-type":"import","feature":["pre-provisioning","if-mib","arbitrary-names"]},{"name":"opendaylight-l2-types_2013-08-27","revision":"2013-08-27","schema":"/rests/modules/opendaylight-l2-types?revision=2013-08-27","namespace":"urn:opendaylight:l2:types","conformance-type":"import"},{"name":"opendaylight-flow-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-flow-types?revision=2013-10-26","namespace":"urn:opendaylight:flow:types","conformance-type":"import"},{"name":"lldp-speaker-config_2016-05-12","revision":"2016-05-12","schema":"/rests/modules/lldp-speaker-config?revision=2016-05-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker:config","conformance-type":"import"},{"name":"aaa-cert_2015-11-26","revision":"2015-11-26","schema":"/rests/modules/aaa-cert?revision=2015-11-26","namespace":"urn:opendaylight:yang:aaa:cert","conformance-type":"import"},{"name":"openflow-action_2015-02-03","revision":"2015-02-03","schema":"/rests/modules/openflow-action?revision=2015-02-03","namespace":"urn:opendaylight:openflow:common:action","conformance-type":"import"},{"name":"openflow-approved-extensions_2016-08-02","revision":"2016-08-02","schema":"/rests/modules/openflow-approved-extensions?revision=2016-08-02","namespace":"urn:opendaylight:openflow:approved:extensions","conformance-type":"import"},{"name":"nc-notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/nc-notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netmod:notification","conformance-type":"import"},{"name":"ietf-netconf-nmda_2019-01-07","revision":"2019-01-07","schema":"/rests/modules/ietf-netconf-nmda?revision=2019-01-07","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-nmda","conformance-type":"import","feature":["with-defaults","origin"]},{"name":"ietf-tcp-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-common","conformance-type":"import","feature":["keepalives-supported"]},{"name":"network-topology_2013-10-21","revision":"2013-10-21","schema":"/rests/modules/network-topology?revision=2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:network-topology","conformance-type":"import"},{"name":"aaa-encrypt-service-config_2024-02-02","revision":"2024-02-02","schema":"/rests/modules/aaa-encrypt-service-config?revision=2024-02-02","namespace":"config:aaa:authn:encrypt:service:config","conformance-type":"import"},{"name":"openflow-instruction_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-instruction?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:instruction","conformance-type":"import"},{"name":"ietf-tls-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-client","conformance-type":"import","feature":["client-ident-x509-cert","server-auth-x509-cert"]},{"name":"opendaylight-group-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-group-statistics?revision=2013-11-11","namespace":"urn:opendaylight:group:statistics","conformance-type":"import"},{"name":"cluster-admin_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/cluster-admin?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:cluster:admin","conformance-type":"import"},{"name":"opendaylight-flow-statistics_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-flow-statistics?revision=2013-08-19","namespace":"urn:opendaylight:flow:statistics","conformance-type":"import"},{"name":"opendaylight-table-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-table-types?revision=2013-10-26","namespace":"urn:opendaylight:table:types","conformance-type":"import"},{"name":"forwarding-rules-manager-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/forwarding-rules-manager-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:forwardingrules-manager:config","conformance-type":"import"},{"name":"odl-srm-types_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-types?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:types","conformance-type":"import"},{"name":"ietf-x509-cert-to-name_2014-12-10","revision":"2014-12-10","schema":"/rests/modules/ietf-x509-cert-to-name?revision=2014-12-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-x509-cert-to-name","conformance-type":"import"},{"name":"flow-node-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-node-inventory?revision=2013-08-19","namespace":"urn:opendaylight:flow:inventory","conformance-type":"import"},{"name":"flow-errors_2013-11-16","revision":"2013-11-16","schema":"/rests/modules/flow-errors?revision=2013-11-16","namespace":"urn:opendaylight:flow:errors","conformance-type":"import"},{"name":"ietf-netconf_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:netconf:base:1.0","conformance-type":"import","feature":["xpath","url","rollback-on-error","validate","startup","candidate","confirmed-commit","writable-running"]},{"name":"iana-ssh-public-key-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-public-key-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-public-key-algs","conformance-type":"import"},{"name":"aaa-cert-mdsal_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/aaa-cert-mdsal?revision=2016-03-21","namespace":"urn:opendaylight:yang:aaa:cert:mdsal","conformance-type":"import"},{"name":"odl-device-notification_2024-02-18","revision":"2024-02-18","schema":"/rests/modules/odl-device-notification?revision=2024-02-18","namespace":"urn:opendaylight:device:notification","conformance-type":"import"},{"name":"ietf-origin_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-origin?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-origin","conformance-type":"import"},{"name":"openflow-augments_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-augments?revision=2015-02-25","namespace":"urn:opendaylight:openflow:augments","conformance-type":"import"},{"name":"iana-ssh-encryption-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-encryption-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-encryption-algs","conformance-type":"import"},{"name":"ietf-truststore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-truststore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-truststore","conformance-type":"import","feature":["inline-definitions-supported"]},{"name":"distributed-datastore-provider_2025-01-30","revision":"2025-01-30","schema":"/rests/modules/distributed-datastore-provider?revision=2025-01-30","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:distributed-datastore-provider","conformance-type":"import"},{"name":"opendaylight-group-types_2013-10-18","revision":"2013-10-18","schema":"/rests/modules/opendaylight-group-types?revision=2013-10-18","namespace":"urn:opendaylight:group:types","conformance-type":"import"},{"name":"sal-remote-augment_2023-11-03","revision":"2023-11-03","schema":"/rests/modules/sal-remote-augment?revision=2023-11-03","namespace":"urn:sal:restconf:event:subscription","conformance-type":"import"},{"name":"opendaylight-ipv6-arbitrary-bitmask-fields_2016-02-24","revision":"2016-02-24","schema":"/rests/modules/opendaylight-ipv6-arbitrary-bitmask-fields?revision=2016-02-24","namespace":"urn:opendaylight:opendaylight-ipv6-arbitrary-bitmask-fields","conformance-type":"import"},{"name":"sal-flows-batch_2016-03-14","revision":"2016-03-14","schema":"/rests/modules/sal-flows-batch?revision=2016-03-14","namespace":"urn:opendaylight:flows:service","conformance-type":"import"},{"name":"ietf-tls-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-common","conformance-type":"import","feature":["tls12","hello-params","tls13"]},{"name":"openflow-types_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-types?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:types","conformance-type":"import"},{"name":"ietf-netconf-with-defaults_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf-with-defaults?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults","conformance-type":"import"},{"name":"odl-srm-ops_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-ops?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:ops","conformance-type":"import"},{"name":"odl-general-entity_2015-09-30","revision":"2015-09-30","schema":"/rests/modules/odl-general-entity?revision=2015-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:mdsal:core:general-entity","conformance-type":"import"},{"name":"iana-ssh-key-exchange-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-key-exchange-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-key-exchange-algs","conformance-type":"import"},{"name":"node-ssl-connection-error_2019-07-23","revision":"2019-07-23","schema":"/rests/modules/node-ssl-connection-error?revision=2019-07-23","namespace":"urn:opendaylight:node-ssl-connection-error:service","conformance-type":"import"},{"name":"openflow-protocol_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-protocol?revision=2013-07-31","namespace":"urn:opendaylight:openflow:protocol","conformance-type":"import"},{"name":"ietf-udp-server_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-server?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-server","conformance-type":"import"},{"name":"ietf-keystore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-keystore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-keystore","conformance-type":"import","feature":["asymmetric-keys","inline-definitions-supported"]},{"name":"aaa_2016-12-14","revision":"2016-12-14","schema":"/rests/modules/aaa?revision=2016-12-14","namespace":"urn:opendaylight:params:xml:ns:yang:aaa","conformance-type":"import"},{"name":"aaa-cert-rpc_2015-12-15","revision":"2015-12-15","schema":"/rests/modules/aaa-cert-rpc?revision=2015-12-15","namespace":"urn:opendaylight:yang:aaa:cert:rpc","conformance-type":"import"},{"name":"system-notifications_2013-09-27","revision":"2013-09-27","schema":"/rests/modules/system-notifications?revision=2013-09-27","namespace":"urn:opendaylight:openflow:system","conformance-type":"import"},{"name":"sal-flat-batch_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/sal-flat-batch?revision=2016-03-21","namespace":"urn:opendaylight:flat-batch:service","conformance-type":"import"},{"name":"notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netconf:notification:1.0","conformance-type":"import"},{"name":"sal-remote_2014-01-14","revision":"2014-01-14","schema":"/rests/modules/sal-remote?revision=2014-01-14","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:remote","conformance-type":"import"},{"name":"yang-ext_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/yang-ext?revision=2013-07-09","namespace":"urn:opendaylight:yang:extension:yang-ext","conformance-type":"import"},{"name":"opendaylight-multipart-types_2017-01-12","revision":"2017-01-12","schema":"/rests/modules/opendaylight-multipart-types?revision=2017-01-12","namespace":"urn:opendaylight:multipart:types","conformance-type":"import"},{"name":"opendaylight-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-inventory?revision=2013-08-19","namespace":"urn:opendaylight:inventory","conformance-type":"import"},{"name":"sal-queue_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-queue?revision=2015-03-05","namespace":"urn:opendaylight:queue:service","conformance-type":"import"},{"name":"sal-groups-batch_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/sal-groups-batch?revision=2016-03-15","namespace":"urn:opendaylight:groups:service","conformance-type":"import"},{"name":"arbitrator-reconcile_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/arbitrator-reconcile?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:arbitrator-reconcile:service","conformance-type":"import"},{"name":"ietf-yang-metadata_2016-08-05","revision":"2016-08-05","schema":"/rests/modules/ietf-yang-metadata?revision=2016-08-05","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-metadata","conformance-type":"import"},{"name":"opendaylight-arbitrary-bitmask-fields_2016-01-30","revision":"2016-01-30","schema":"/rests/modules/opendaylight-arbitrary-bitmask-fields?revision=2016-01-30","namespace":"urn:opendaylight:arbitrary:bitmask:fields","conformance-type":"import"},{"name":"ietf-udp-client_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-client?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-client","conformance-type":"import","feature":["local-binding"]},{"name":"opendaylight-meter-types_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/opendaylight-meter-types?revision=2013-09-18","namespace":"urn:opendaylight:meter:types","conformance-type":"import"},{"name":"opendaylight-action-types_2013-11-12","revision":"2013-11-12","schema":"/rests/modules/opendaylight-action-types?revision=2013-11-12","namespace":"urn:opendaylight:action:types","conformance-type":"import"},{"name":"sal-role_2015-07-27","revision":"2015-07-27","schema":"/rests/modules/sal-role?revision=2015-07-27","namespace":"urn:opendaylight:role:service","conformance-type":"import"},{"name":"openflow-provider-config_2016-05-10","revision":"2016-05-10","schema":"/rests/modules/openflow-provider-config?revision=2016-05-10","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:provider:config","conformance-type":"import"},{"name":"odl-serviceutils-upgrade_2018-07-02","revision":"2018-07-02","schema":"/rests/modules/odl-serviceutils-upgrade?revision=2018-07-02","namespace":"urn:opendaylight:serviceutils:upgrade","conformance-type":"import"},{"name":"opendaylight-match-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-match-types?revision=2013-10-26","namespace":"urn:opendaylight:model:match:types","conformance-type":"import"},{"name":"ietf-restconf-server_2024-08-14","revision":"2024-08-14","schema":"/rests/modules/ietf-restconf-server?revision=2024-08-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-server","conformance-type":"import","feature":["http-listen","https-listen"]},{"name":"reconciliation-result-state_2017-07-13","revision":"2017-07-13","schema":"/rests/modules/reconciliation-result-state?revision=2017-07-13","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:rf:state","conformance-type":"import"},{"name":"onf-extensions_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/onf-extensions?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf","conformance-type":"import"},{"name":"sal-table_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/sal-table?revision=2013-10-26","namespace":"urn:opendaylight:table:service","conformance-type":"import"},{"name":"iana-http-versions_2026-02-04","revision":"2026-02-04","schema":"/rests/modules/iana-http-versions?revision=2026-02-04","namespace":"urn:ietf:params:xml:ns:yang:iana-http-versions","conformance-type":"import"},{"name":"opendaylight-direct-statistics_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/opendaylight-direct-statistics?revision=2016-05-11","namespace":"urn:opendaylight:direct:statistics","conformance-type":"import"},{"name":"opendaylight-port-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-port-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:port","conformance-type":"import"},{"name":"sal-async-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/sal-async-config?revision=2017-06-19","namespace":"urn:opendaylight:async-config:service","conformance-type":"import"},{"name":"aaa-password-service-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-password-service-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:password:service:config","conformance-type":"import"},{"name":"ietf-yang-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-yang-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-types","conformance-type":"import"},{"name":"opendaylight-queue-statistics_2013-12-16","revision":"2013-12-16","schema":"/rests/modules/opendaylight-queue-statistics?revision=2013-12-16","namespace":"urn:opendaylight:queue:statistics","conformance-type":"import"},{"name":"sal-bundle_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/sal-bundle?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf:bundle:service","conformance-type":"import"},{"name":"ietf-restconf-subscribed-notifications_2019-11-17","revision":"2019-11-17","schema":"/rests/modules/ietf-restconf-subscribed-notifications?revision=2019-11-17","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-subscribed-notifications","conformance-type":"import"},{"name":"sal-meters-batch_2016-03-16","revision":"2016-03-16","schema":"/rests/modules/sal-meters-batch?revision=2016-03-16","namespace":"urn:opendaylight:meters:service","conformance-type":"import"},{"name":"odl-entity-owners","revision":"","schema":"/rests/modules/odl-entity-owners","namespace":"urn:opendaylight:params:xml:ns:yang:controller:entity-owners","conformance-type":"import"},{"name":"sal-experimenter-mp-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-mp-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-mp-message:service","conformance-type":"import"},{"name":"packet-processing_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/packet-processing?revision=2013-07-09","namespace":"urn:opendaylight:packet:service","conformance-type":"import"},{"name":"openflow-configuration_2014-06-30","revision":"2014-06-30","schema":"/rests/modules/openflow-configuration?revision=2014-06-30","namespace":"urn:opendaylight:openflow:config","conformance-type":"import"},{"name":"odl-srm-rpcs_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-rpcs?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:rpc","conformance-type":"import"},{"name":"ietf-netconf-acm_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-netconf-acm?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-acm","conformance-type":"import"},{"name":"iana-crypt-hash_2014-08-06","revision":"2014-08-06","schema":"/rests/modules/iana-crypt-hash?revision=2014-08-06","namespace":"urn:ietf:params:xml:ns:yang:iana-crypt-hash","conformance-type":"import","feature":["crypt-hash-sha-512","crypt-hash-sha-256","crypt-hash-md5"]},{"name":"openflow-extensible-match_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-extensible-match?revision=2015-02-25","namespace":"urn:opendaylight:openflow:oxm","conformance-type":"import"}],"module-set-id":"2"}}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:42.520361" elapsed="0.004120"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:42.519913" elapsed="0.004636"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:42.519867" elapsed="0.004735"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:42.527126" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:42.524989" elapsed="0.002203"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:42.524698" elapsed="0.002555"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:42.524669" elapsed="0.002632"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:52:42.528255" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:42.527640" elapsed="0.000663"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:42.528719" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:42.528415" elapsed="0.000384"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:42.529408" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:42.529056" elapsed="0.000378"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:42.528846" elapsed="0.000648"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:42.528384" elapsed="0.001155"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:52:42.530470" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:42.529942" elapsed="0.000575"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:42.530928" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:42.530627" elapsed="0.000382"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:42.531588" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:42.531285" elapsed="0.000329"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:42.531056" elapsed="0.000618"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:42.530596" elapsed="0.001123"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:52:42.532080" elapsed="0.000466"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:52:42.533358" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:42.532888" elapsed="0.000517"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:52:42.533735" elapsed="0.002255"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:52:42.518234" elapsed="0.017834"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:52:42.536463" elapsed="0.000038"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:52:42.536255" elapsed="0.000329"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:42.536234" elapsed="0.000387"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:52:42.546913" level="INFO">${text_normalized} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:52:42.536815" elapsed="0.010143"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:52:42.547096" elapsed="0.000033"/>
</return>
<msg time="2026-04-08T00:52:42.547353" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:52:42.491015" elapsed="0.056366"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:52:42.547445" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:52:42.547596" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="PASS" start="2026-04-08T00:52:42.354719" elapsed="0.192904"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Json_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:42.547979" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:42.547708" elapsed="0.000380"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:42.547690" elapsed="0.000424"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:52:42.548147" elapsed="0.000041"/>
</return>
<arg>session=${session}</arg>
<arg>folder=${RESTCONF_MODULES_DIR}</arg>
<arg>verify=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Add arguments sensible for JSON data, return Get_Templated response text.
Optionally, verification against JSON data (may be iterated) is called.
Only subset of JSON data is verified and returned if JMES path is specified in
file ${folder}/jmespath.expr.</doc>
<status status="PASS" start="2026-04-08T00:52:42.350473" elapsed="0.197816"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:42.346464" elapsed="0.201874"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:42.346444" elapsed="0.201918"/>
</if>
<kw name="Resolve_Shard_Type_Class" owner="ClusterManagement">
<if>
<branch type="IF" condition="'${shard_type}' == 'config'">
<return>
<value>DistributedConfigDatastore</value>
<status status="PASS" start="2026-04-08T00:52:42.548958" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-08T00:52:42.548851" elapsed="0.000166"/>
</branch>
<branch type="ELSE IF" condition="'${shard_type}' == 'operational'">
<return>
<value>DistributedOperationalDatastore</value>
<status status="NOT RUN" start="2026-04-08T00:52:42.549077" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:52:42.549040" elapsed="0.000076"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:42.548833" elapsed="0.000305"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized shard type: ${shard_type}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:42.549332" elapsed="0.000022"/>
</kw>
<msg time="2026-04-08T00:52:42.549453" level="INFO">${type_class} = DistributedConfigDatastore</msg>
<var>${type_class}</var>
<arg>shard_type=${shard_type}</arg>
<doc>Simple lookup for class name corresponding to desired type.</doc>
<status status="PASS" start="2026-04-08T00:52:42.548585" elapsed="0.000893"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:52:42.550010" level="INFO">${cluster_index} = 3</msg>
<var>${cluster_index}</var>
<arg>${member_index}+${NODE_ROLE_INDEX_START}-1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:42.549646" elapsed="0.000391"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:42.550666" level="INFO">${uri} = jolokia/read/org.opendaylight.controller:Category=Shards,name=member-3-shard-inventory-config,type=DistributedConfigDatastore</msg>
<var>${uri}</var>
<arg>${JOLOKIA_READ_URI}:Category=Shards,name=member-${cluster_index}-shard-${shard_name}-${shard_type},type=${type_class}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:42.550210" elapsed="0.000483"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:42.556155" level="INFO">jolokia/read/org.opendaylight.controller:Category=Shards,name=member-3-shard-inventory-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:42.555816" elapsed="0.000489"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:42.556732" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:42.556463" elapsed="0.000314"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:52:42.563915" level="INFO">GET Request : url=http://10.30.171.110:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-3-shard-inventory-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-3-shard-inventory-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:52:42.564053" level="INFO">GET Response : url=http://10.30.171.110:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-3-shard-inventory-config,type=DistributedConfigDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Wed, 08 Apr 2026 00:52:42 GMT', 'Expires': 'Tue, 07 Apr 2026 23:52:42 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-3-shard-inventory-config,type=DistributedConfigDatastore","type":"read"},"value":{"ReadWriteTransactionCount":0,"SnapshotIndex":22,"InMemoryJournalLogSize":1,"ReplicatedToAllIndex":22,"Leader":"member-1-shard-inventory-config","LastIndex":23,"RaftState":"Follower","LastApplied":23,"LastCommittedTransactionTime":"1970-01-01 00:00:00.000","PeerAddresses":"member-1-shard-inventory-config: pekko:\/\/opendaylight-cluster-data@10.30.170.48:2550\/user\/shardmanager-config\/member-1-shard-inventory-config, member-2-shard-inventory-config: pekko:\/\/opendaylight-cluster-data@10.30.170.131:2550\/user\/shardmanager-config\/member-2-shard-inventory-config","LastLogIndex":23,"LastLeadershipChangeTime":"2026-04-08 00:46:45.969","FollowerInitialSyncStatus":true,"FollowerInfo":[],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"190.0 μs","CurrentTerm":2,"LastTerm":2,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-inventory-config","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":0,"TxCohortCacheSize":0,"PeerVotingStates":"member-1-shard-inventory-config: true, member-2-shard-inventory-config: true","LastLogTerm":2,"StatRetrievalError":null,"CommitIndex":23,"SnapshotTerm":2,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-3-shard-inventory-config","LeadershipChangeCount":1,"InMemoryJournalDataSize":888},"timestamp":1775609562,"status":200} 
 </msg>
<msg time="2026-04-08T00:52:42.564235" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:52:42.558760" elapsed="0.005502"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:42.556845" elapsed="0.007460"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:42.564482" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:42.564331" elapsed="0.000216"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:42.556827" elapsed="0.007741"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:42.570122" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-3-shard-inventory-config,type=DistributedConfigDatastore","type":"read"},"value":{"ReadWriteTransactionCount":0,"SnapshotIndex":22,"InMemoryJournalLogSize":1,"ReplicatedToAllIndex":22,"Leader":"member-1-shard-inventory-config","LastIndex":23,"RaftState":"Follower","LastApplied":23,"LastCommittedTransactionTime":"1970-01-01 00:00:00.000","PeerAddresses":"member-1-shard-inventory-config: pekko:\/\/opendaylight-cluster-data@10.30.170.48:2550\/user\/shardmanager-config\/member-1-shard-inventory-config, member-2-shard-inventory-config: pekko:\/\/opendaylight-cluster-data@10.30.170.131:2550\/user\/shardmanager-config\/member-2-shard-inventory-config","LastLogIndex":23,"LastLeadershipChangeTime":"2026-04-08 00:46:45.969","FollowerInitialSyncStatus":true,"FollowerInfo":[],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"190.0 μs","CurrentTerm":2,"LastTerm":2,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-inventory-config","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":0,"TxCohortCacheSize":0,"PeerVotingStates":"member-1-shard-inventory-config: true, member-2-shard-inventory-config: true","LastLogTerm":2,"StatRetrievalError":null,"CommitIndex":23,"SnapshotTerm":2,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-3-shard-inventory-config","LeadershipChangeCount":1,"InMemoryJournalDataSize":888},"timestamp":1775609562,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:42.566128" elapsed="0.004270"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:42.565714" elapsed="0.004811"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:42.565687" elapsed="0.004877"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:42.574369" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:42.571070" elapsed="0.003432"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:42.570646" elapsed="0.003945"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:42.570621" elapsed="0.003997"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:52:42.575354" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:42.574783" elapsed="0.000598"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:42.576127" elapsed="0.000121"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:42.575486" elapsed="0.000865"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:42.577587" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:42.576841" elapsed="0.000788"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:42.576378" elapsed="0.001354"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:42.575466" elapsed="0.002291"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:52:42.578485" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:42.577918" elapsed="0.000595"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:42.579260" elapsed="0.000077"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:42.578618" elapsed="0.000822"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:42.580756" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:42.579934" elapsed="0.000910"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:42.579468" elapsed="0.001481"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:42.578598" elapsed="0.002376"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:52:42.581127" elapsed="0.000731"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:52:42.582611" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:42.582074" elapsed="0.000563"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:52:42.582830" elapsed="0.002687"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:52:42.565053" elapsed="0.020560"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:52:42.585885" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:52:42.585685" elapsed="0.000246"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:42.585666" elapsed="0.000286"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:52:42.606186" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-3-shard-inventory-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 177560...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:52:42.586097" elapsed="0.020121"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:52:42.606297" elapsed="0.000034"/>
</return>
<msg time="2026-04-08T00:52:42.606566" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-3-shard-inventory-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 177560...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:52:42.551598" elapsed="0.054996"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:52:42.606686" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:52:42.606839" level="INFO">${data_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-3-shard-inventory-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 177560...</msg>
<var>${data_text}</var>
<arg>uri=${uri}</arg>
<arg>session=${session}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-08T00:52:42.550903" elapsed="0.055962"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:52:42.607965" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-3-shard-inventory-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1775609562, 'valu...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:42.607517" elapsed="0.000476"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-08T00:52:42.608042" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:52:42.608259" level="INFO">${data_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-3-shard-inventory-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1775609562, 'valu...</msg>
<var>${data_object}</var>
<arg>${data_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-08T00:52:42.607151" elapsed="0.001137"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:52:42.608774" level="INFO">${value} = {'AbortTransactionsCount': 0, 'CommitIndex': 23, 'CommittedTransactionsCount': 0, 'CurrentTerm': 2, 'FailedReadTransactionsCount': 0, 'FailedTransactionsCount': 0, 'FollowerInfo': [], 'FollowerInitial...</msg>
<var>${value}</var>
<arg>${data_object}</arg>
<arg>value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:52:42.608483" elapsed="0.000319"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:52:42.610402" level="INFO">${raft_property} = Follower</msg>
<var>${raft_property}</var>
<arg>${value}</arg>
<arg>${property}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:52:42.608957" elapsed="0.001472"/>
</kw>
<return>
<value>${raft_property}</value>
<status status="PASS" start="2026-04-08T00:52:42.610476" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:52:42.610630" level="INFO">${raft_state} = Follower</msg>
<var>${raft_state}</var>
<arg>RaftState</arg>
<arg>${shard_name}</arg>
<arg>${shard_type}</arg>
<arg>${member_index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft property.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T00:52:42.344500" elapsed="0.266155"/>
</kw>
<return>
<value>${raft_state}</value>
<status status="PASS" start="2026-04-08T00:52:42.611113" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:52:42.611328" level="INFO">${raft_state} = Follower</msg>
<var>${raft_state}</var>
<arg>shard_name=${shard_name}</arg>
<arg>shard_type=${ds_type}</arg>
<arg>member_index=${index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft status.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T00:52:42.343775" elapsed="0.267578"/>
</kw>
<if>
<branch type="IF" condition="'Follower' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${follower_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-08T00:52:42.611652" elapsed="0.000191"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:42.611435" elapsed="0.000446"/>
</branch>
<branch type="ELSE IF" condition="'Leader' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${leader_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:42.612452" elapsed="0.000027"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:42.611906" elapsed="0.000609"/>
</branch>
<branch type="ELSE IF" condition="${validate}">
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized Raft state: ${raft_state}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:42.612792" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:42.612540" elapsed="0.000304"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:42.611417" elapsed="0.001474"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T00:52:42.343612" elapsed="0.269307"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-08T00:52:41.843153" elapsed="0.769798"/>
</for>
<return>
<value>${leader_list}</value>
<value>${follower_list}</value>
<status status="PASS" start="2026-04-08T00:52:42.612993" elapsed="0.000027"/>
</return>
<msg time="2026-04-08T00:52:42.613401" level="INFO">${leader_list} = [1]</msg>
<msg time="2026-04-08T00:52:42.613449" level="INFO">${follower_list} = [2, 3]</msg>
<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="PASS" start="2026-04-08T00:52:41.839040" elapsed="0.774434"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T00:52:42.613952" level="INFO">Length is 1.</msg>
<msg time="2026-04-08T00:52:42.614029" level="INFO">${leader_count} = 1</msg>
<var>${leader_count}</var>
<arg>${leader_list}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T00:52:42.613651" elapsed="0.000402"/>
</kw>
<if>
<branch type="IF" condition="${leader_count} &lt; 1">
<kw name="Fail" owner="BuiltIn">
<arg>No leader found.</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:42.614507" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:42.614289" elapsed="0.000273"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:42.614267" elapsed="0.000318"/>
</if>
<kw name="Length Should Be" owner="BuiltIn">
<msg time="2026-04-08T00:52:42.616788" level="INFO">Length is 1.</msg>
<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="PASS" start="2026-04-08T00:52:42.614720" elapsed="0.002118"/>
</kw>
<kw name="Get From List" owner="Collections">
<msg time="2026-04-08T00:52:42.617764" level="INFO">${leader} = 1</msg>
<var>${leader}</var>
<arg>${leader_list}</arg>
<arg>0</arg>
<doc>Returns the value specified with an ``index`` from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:52:42.617462" elapsed="0.000361"/>
</kw>
<return>
<value>${leader}</value>
<value>${follower_list}</value>
<status status="PASS" start="2026-04-08T00:52:42.617873" elapsed="0.000030"/>
</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="PASS" start="2026-04-08T00:52:41.836670" elapsed="0.781464"/>
</kw>
<msg time="2026-04-08T00:52:42.618284" level="INFO">${inv_conf_leader} = 1</msg>
<msg time="2026-04-08T00:52:42.618442" level="INFO">${inv_conf_followers_list} = [2, 3]</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="PASS" start="2026-04-08T00:52:41.835875" elapsed="0.782593"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:42.619218" level="INFO">config inventory Leader is 1 and followers are [2, 3]</msg>
<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="PASS" start="2026-04-08T00:52:42.618659" elapsed="0.000605"/>
</kw>
<return>
<value>${inv_conf_leader}</value>
<value>${inv_conf_followers_list}</value>
<status status="PASS" start="2026-04-08T00:52:42.619334" elapsed="0.000052"/>
</return>
<msg time="2026-04-08T00:52:42.619806" level="INFO">${inventory_leader} = 1</msg>
<msg time="2026-04-08T00:52:42.619855" level="INFO">${inventory_followers} = [2, 3]</msg>
<var>${inventory_leader}</var>
<var>${inventory_followers}</var>
<doc>Check Status for Inventory Config shard in OpenFlow application.</doc>
<status status="PASS" start="2026-04-08T00:52:41.833590" elapsed="0.786289"/>
</kw>
<kw name="Get From List" owner="Collections">
<msg time="2026-04-08T00:52:42.620413" level="INFO">${follower_node_1} = 2</msg>
<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="PASS" start="2026-04-08T00:52:42.620198" elapsed="0.000242"/>
</kw>
<kw name="Get From List" owner="Collections">
<msg time="2026-04-08T00:52:42.621112" level="INFO">${follower_node_2} = 3</msg>
<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="PASS" start="2026-04-08T00:52:42.620923" elapsed="0.000214"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:42.627964" level="INFO">${inventory_leader_old} = 1</msg>
<arg>${inventory_leader_old}</arg>
<arg>${inventory_leader}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-08T00:52:42.621347" elapsed="0.006665"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:42.628785" level="INFO">${follower_node_1} = 2</msg>
<arg>${follower_node_1}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-08T00:52:42.628218" elapsed="0.000609"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:42.629404" level="INFO">${follower_node_2} = 3</msg>
<arg>${follower_node_2}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-08T00:52:42.629010" elapsed="0.000437"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:42.630338" level="INFO">${inventory_leader} = 1</msg>
<arg>${inventory_leader}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-08T00:52:42.630008" elapsed="0.000372"/>
</kw>
<doc>Find leader in the inventory config shard</doc>
<status status="PASS" start="2026-04-08T00:52:41.396914" elapsed="1.233576"/>
</test>
<test id="s1-s3-t3" name="Start Mininet Connect To Follower Node1" line="34">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-08T00:52:42.636718" elapsed="0.000679"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-08T00:52:42.636026" elapsed="0.001429"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:52:42.639147" elapsed="0.000030"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:52:42.639028" elapsed="0.000183"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:42.639007" elapsed="0.000226"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:52:42.645662" elapsed="0.000020"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:52:42.645519" elapsed="0.000202"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:42.645495" elapsed="0.000254"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:52:42.646944" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:52:42.646509" elapsed="0.000462"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:52:42.647456" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:52:42.647132" elapsed="0.000349"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:52:42.647524" elapsed="0.000032"/>
</return>
<msg time="2026-04-08T00:52:42.647679" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:52:42.646021" elapsed="0.001682"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:52:42.654067" elapsed="0.000019"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:52:42.653930" elapsed="0.000189"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:42.653908" elapsed="0.000234"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:52:42.655587" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:52:42.655470" elapsed="0.000165"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:42.655451" elapsed="0.000208"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:52:42.656110" level="INFO">${karaf_connection_index} = 82</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:52:42.655806" elapsed="0.000332"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:52:42.656549" level="INFO">${current_connection_index} = None</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:52:42.656326" elapsed="0.000250"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T00:52:42.694327" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T00:52:42.657103" elapsed="0.037346"/>
</kw>
<msg time="2026-04-08T00:52:42.694645" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T00:52:42.694693" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:52:42.656765" elapsed="0.037964"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T00:52:42.766175" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "a "d "e "r "[C "F "o "l "l "o "w "e "r "[C "F "a "i "l "o "v "e "r ". "S "t "a "r "t "[C "M "i "n "i "n "e "t "[C "C "o "n "[78Cn "[A[78Ce
 "c "t "[C "T "o "[C "F "o "l "l "o "w "e "r "[C "N "o "d "e "1 "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T00:52:42.695315" elapsed="0.070990"/>
</kw>
<msg time="2026-04-08T00:52:42.766465" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T00:52:42.766510" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:52:42.694920" elapsed="0.071626"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:42.766869" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:42.766632" elapsed="0.000292"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:42.766607" elapsed="0.000342"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:42.767422" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "a "d "e "r "[C "F "o "l "l "o "w "e "r "[C "F "a "i "l "o "v "e "r ". "S "t "a "r "t "[C "M "i "n "i "n "e "t "[C "C "o "n "[78Cn "[A[78Ce
 "c "t "[C "T "o "[C "F "o "l "l "o "w "e "r "[C "N "o "d "e "1 "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:42.767093" elapsed="0.000417"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:42.767793" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:42.767577" elapsed="0.000269"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:42.767559" elapsed="0.000310"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T00:52:42.767902" elapsed="0.000033"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:52:42.769416" elapsed="0.000792"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:52:42.770490" elapsed="0.000468"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:52:42.771236" elapsed="0.000361"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:52:42.768764" elapsed="0.002935"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T00:52:42.768213" elapsed="0.003551"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T00:52:42.655105" elapsed="0.116758"/>
</kw>
<msg time="2026-04-08T00:52:42.771959" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:52:42.772003" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:52:42.654447" elapsed="0.117593"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T00:52:42.772248" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-08T00:52:42.772117" elapsed="0.000192"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:42.772098" elapsed="0.000235"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:42.772776" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:42.773110" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T00:52:42.773200" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T00:52:42.653541" elapsed="0.119769"/>
</kw>
<msg time="2026-04-08T00:52:42.773404" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:52:42.773473" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:52:42.648074" elapsed="0.125437"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:42.773836" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:42.773588" elapsed="0.000301"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:42.773571" elapsed="0.000340"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T00:52:42.647932" elapsed="0.126002"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:52:42.779286" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:52:42.779175" elapsed="0.000157"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:42.779141" elapsed="0.000213"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:52:42.780587" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:52:42.780480" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:42.780460" elapsed="0.000195"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:52:42.781095" level="INFO">${karaf_connection_index} = 84</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:52:42.780798" elapsed="0.000324"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:52:42.781557" level="INFO">${current_connection_index} = None</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:52:42.781296" elapsed="0.000290"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T00:52:42.825103" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T00:52:42.782085" elapsed="0.043277"/>
</kw>
<msg time="2026-04-08T00:52:42.825724" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T00:52:42.825881" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:52:42.781748" elapsed="0.044220"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T00:52:42.928825" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "a "d "e "r "[C "F "o "l "l "o "w "e "r "[C "F "a "i "l "o "v "e "r ". "S "t "a "r "t "[C "M "i "n "i "n "e "t "[C "C "o "n "[78Cn "[A[78Ce
 "c "t "[C "T "o "[C "F "o "l "l "o "w "e "r "[C "N "o "d "e "1 "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T00:52:42.826836" elapsed="0.102114"/>
</kw>
<msg time="2026-04-08T00:52:42.929110" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T00:52:42.929160" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:52:42.826314" elapsed="0.102907"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:42.929528" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:42.929301" elapsed="0.000282"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:42.929281" elapsed="0.000325"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:42.930050" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "a "d "e "r "[C "F "o "l "l "o "w "e "r "[C "F "a "i "l "o "v "e "r ". "S "t "a "r "t "[C "M "i "n "i "n "e "t "[C "C "o "n "[78Cn "[A[78Ce
 "c "t "[C "T "o "[C "F "o "l "l "o "w "e "r "[C "N "o "d "e "1 "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:42.929747" elapsed="0.000391"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:42.930445" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:42.930225" elapsed="0.000351"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:42.930206" elapsed="0.000397"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T00:52:42.930637" elapsed="0.000029"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:52:42.932066" elapsed="0.000789"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:52:42.933129" elapsed="0.000480"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:52:42.933871" elapsed="0.000371"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:52:42.931458" elapsed="0.002884"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T00:52:42.930898" elapsed="0.003507"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T00:52:42.780055" elapsed="0.154451"/>
</kw>
<msg time="2026-04-08T00:52:42.934647" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:52:42.934692" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:52:42.779503" elapsed="0.155227"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T00:52:42.934915" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-08T00:52:42.934809" elapsed="0.000165"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:42.934790" elapsed="0.000207"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 2,
close the previous connection. In any case create a new connection
to karaf console for 2, set correct prompt set and login to karaf console.
Store connection index for 2 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:42.935399" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:42.935724" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T00:52:42.935796" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T00:52:42.778819" elapsed="0.157082"/>
</kw>
<msg time="2026-04-08T00:52:42.935995" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:52:42.936039" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:52:42.774221" elapsed="0.161854"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:42.936413" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:42.936150" elapsed="0.000317"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:42.936133" elapsed="0.000356"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T00:52:42.774058" elapsed="0.162454"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:52:42.941861" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:52:42.941754" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:42.941735" elapsed="0.000192"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:52:42.943152" elapsed="0.000043"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:52:42.943045" elapsed="0.000183"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:42.943027" elapsed="0.000223"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:52:42.943687" level="INFO">${karaf_connection_index} = 86</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:52:42.943394" elapsed="0.000320"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:52:42.944080" level="INFO">${current_connection_index} = None</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:52:42.943870" elapsed="0.000237"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T00:52:42.981292" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T00:52:42.944623" elapsed="0.036773"/>
</kw>
<msg time="2026-04-08T00:52:42.981559" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T00:52:42.981605" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:52:42.944288" elapsed="0.037354"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T00:52:43.057706" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "a "d "e "r "[C "F "o "l "l "o "w "e "r "[C "F "a "i "l "o "v "e "r ". "S "t "a "r "t "[C "M "i "n "i "n "e "t "[C "C "o "n "[78Cn "[A[78Ce
 "c "t "[C "T "o "[C "F "o "l "l "o "w "e "r "[C "N "o "d "e "1 "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T00:52:42.982240" elapsed="0.075749"/>
</kw>
<msg time="2026-04-08T00:52:43.058276" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T00:52:43.058327" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:52:42.981862" elapsed="0.076504"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:43.058865" elapsed="0.000029"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:43.058502" elapsed="0.000428"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:43.058459" elapsed="0.000498"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:43.059571" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "a "d "e "r "[C "F "o "l "l "o "w "e "r "[C "F "a "i "l "o "v "e "r ". "S "t "a "r "t "[C "M "i "n "i "n "e "t "[C "C "o "n "[78Cn "[A[78Ce
 "c "t "[C "T "o "[C "F "o "l "l "o "w "e "r "[C "N "o "d "e "1 "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:43.059108" elapsed="0.000560"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:43.060116" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:43.059738" elapsed="0.000458"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:43.059719" elapsed="0.000502"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T00:52:43.060261" elapsed="0.000042"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:52:43.061861" elapsed="0.000807"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:52:43.062951" elapsed="0.000691"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:52:43.063926" elapsed="0.000399"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:52:43.061212" elapsed="0.003215"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T00:52:43.060598" elapsed="0.003895"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T00:52:42.942743" elapsed="0.121851"/>
</kw>
<msg time="2026-04-08T00:52:43.064696" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:52:43.064741" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:52:42.942077" elapsed="0.122702"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T00:52:43.064978" elapsed="0.000030"/>
</return>
<status status="PASS" start="2026-04-08T00:52:43.064863" elapsed="0.000179"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:43.064842" elapsed="0.000224"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 3,
close the previous connection. In any case create a new connection
to karaf console for 3, set correct prompt set and login to karaf console.
Store connection index for 3 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:43.065513" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:43.065858" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T00:52:43.065930" elapsed="0.000017"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T00:52:42.941415" elapsed="0.124627"/>
</kw>
<msg time="2026-04-08T00:52:43.066144" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:52:43.066208" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:52:42.936769" elapsed="0.129481"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:43.066585" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:43.066332" elapsed="0.000437"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:43.066315" elapsed="0.000480"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T00:52:42.936631" elapsed="0.130189"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-08T00:52:42.647758" elapsed="0.419101"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-08T00:52:42.645036" elapsed="0.421886"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-08T00:52:42.638731" elapsed="0.428252"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:52:42.637606" elapsed="0.429427"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-08T00:52:42.631241" elapsed="0.435848"/>
</kw>
<kw name="Start Mininet Single Controller" owner="MininetKeywords">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:43.070339" level="INFO">Clear any existing mininet</msg>
<arg>Clear any existing mininet</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:43.070066" elapsed="0.000322"/>
</kw>
<kw name="Clean Mininet System" owner="Utils">
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:43.073139" elapsed="0.000041"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:43.072827" elapsed="0.000392"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:43.072804" elapsed="0.000443"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:52:43.073579" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T00:52:43.073401" elapsed="0.000315"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:43.074275" level="INFO">Attempting to execute command "sudo mn -c" on remote system "10.30.170.192" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:43.073866" elapsed="0.000456"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:52:43.074855" level="INFO">${conn_id} = 100</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:52:43.074479" elapsed="0.000402"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T00:52:43.075853" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T00:52:43.075929" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T00:52:43.075566" elapsed="0.000387"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:52:43.076110" elapsed="0.000346"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T00:52:43.077321" level="INFO">Logging into '10.30.170.192:22' as 'jenkins'.</msg>
<msg time="2026-04-08T00:52:43.510449" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 00:52:30 UTC 2026

  System load:  0.07               Processes:             112
  Usage of /:   19.5% of 38.58GB   Users logged in:       0
  Memory usage: 5%                 IPv4 address for ens3: 10.30.170.192
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 00:52:32 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-1-mininet-ovs-217-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T00:52:43.076979" elapsed="0.433625"/>
</kw>
<msg time="2026-04-08T00:52:43.510687" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:52:43.076622" elapsed="0.434149"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T00:52:43.075097" elapsed="0.435788"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T00:52:43.513060" level="INFO">Executing command 'sudo mn -c'.</msg>
<msg time="2026-04-08T00:52:44.646528" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-08T00:52:44.646914" level="INFO">${stdout} = </msg>
<msg time="2026-04-08T00:52:44.647018" level="INFO">${stderr} = *** Removing excess controllers/ofprotocols/ofdatapaths/pings/noxes
killall controller ofprotocol ofdatapath ping nox_corelt-nox_core ovs-openflowd ovs-controllerovs-testcontroller udpbwtest mnexec iv...</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T00:52:43.511129" elapsed="1.135947"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:52:44.647705" elapsed="0.000537"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:44.649354" level="INFO">*** Removing excess controllers/ofprotocols/ofdatapaths/pings/noxes
killall controller ofprotocol ofdatapath ping nox_corelt-nox_core ovs-openflowd ovs-controllerovs-testcontroller udpbwtest mnexec ivs ryu-manager 2&gt; /dev/null
killall -9 controller ofprotocol ofdatapath ping nox_corelt-nox_core ovs-openflowd ovs-controllerovs-testcontroller udpbwtest mnexec ivs ryu-manager 2&gt; /dev/null
pkill -9 -f "sudo mnexec"
*** Removing junk from /tmp
rm -f /tmp/vconn* /tmp/vlogs* /tmp/*.out /tmp/*.log
*** Removing old X11 tunnels
*** Removing excess kernel datapaths
ps ax | egrep -o 'dp[0-9]+' | sed 's/dp/nl:/'
***  Removing OVS datapaths
ovs-vsctl --timeout=1 list-br
ovs-vsctl --timeout=1 list-br
*** Removing all links of the pattern foo-ethX
ip link show | egrep -o '([-_.[:alnum:]]+-eth[[:digit:]]+)'
ip link show
*** Killing stale mininet node processes
pkill -9 -f mininet:
*** Shutting down stale tunnels
pkill -9 -f Tunnel=Ethernet
pkill -9 -f .ssh/mn
rm -f ~/.ssh/mn/*
*** Cleanup complete.</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:44.648667" elapsed="0.000810"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:52:44.649940" elapsed="0.000036"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:52:44.649648" elapsed="0.000397"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:44.649600" elapsed="0.000495"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T00:52:44.650490" elapsed="0.000067"/>
</return>
<status status="PASS" start="2026-04-08T00:52:44.650252" elapsed="0.000378"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:44.650216" elapsed="0.000468"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:52:44.650763" elapsed="0.000032"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:52:44.656773" elapsed="0.000722"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:52:44.657662" elapsed="0.000159"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:52:44.658104" elapsed="0.000120"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:52:44.651489" elapsed="0.006790"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T00:52:43.072287" elapsed="1.586087"/>
</kw>
<msg time="2026-04-08T00:52:44.658431" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:52:43.071687" elapsed="1.586796"/>
</kw>
<arg>${system}</arg>
<arg>sudo mn -c</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-08T00:52:43.070951" elapsed="1.587613"/>
</kw>
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:44.660643" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:44.660370" elapsed="0.000328"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:44.660351" elapsed="0.000371"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:52:44.661028" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T00:52:44.660892" elapsed="0.000265"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:44.661704" level="INFO">Attempting to execute command "sudo ps -elf | egrep 'usr/local/bin/mn' | egrep python | awk '{print "sudo kill -9",$4}' | sh" on remote system "10.30.170.192" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:44.661326" elapsed="0.000425"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:52:44.662283" level="INFO">${conn_id} = 102</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:52:44.661905" elapsed="0.000405"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T00:52:44.663234" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T00:52:44.663311" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T00:52:44.662917" elapsed="0.000418"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:52:44.663491" elapsed="0.000317"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T00:52:44.664713" level="INFO">Logging into '10.30.170.192:22' as 'jenkins'.</msg>
<msg time="2026-04-08T00:52:44.997646" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 00:52:30 UTC 2026

  System load:  0.07               Processes:             112
  Usage of /:   19.5% of 38.58GB   Users logged in:       0
  Memory usage: 5%                 IPv4 address for ens3: 10.30.170.192
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 00:52:43 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-1-mininet-ovs-217-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T00:52:44.664393" elapsed="0.333488"/>
</kw>
<msg time="2026-04-08T00:52:44.998031" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:52:44.663974" elapsed="0.334229"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T00:52:44.662526" elapsed="0.335894"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T00:52:44.999394" level="INFO">Executing command 'sudo ps -elf | egrep 'usr/local/bin/mn' | egrep python | awk '{print "sudo kill -9",$4}' | sh'.</msg>
<msg time="2026-04-08T00:52:45.032392" level="INFO">Command exited with return code -1.</msg>
<msg time="2026-04-08T00:52:45.032677" level="INFO">${stdout} = </msg>
<msg time="2026-04-08T00:52:45.032782" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T00:52:44.998916" elapsed="0.033923"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:52:45.033292" elapsed="0.000506"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:45.034970" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:45.034282" elapsed="0.000789"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:52:45.035602" elapsed="0.000037"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:52:45.035285" elapsed="0.000430"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:45.035230" elapsed="0.000538"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T00:52:45.036148" elapsed="0.000100"/>
</return>
<status status="PASS" start="2026-04-08T00:52:45.035895" elapsed="0.000432"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:45.035860" elapsed="0.000525"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:52:45.036469" elapsed="0.000035"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:52:45.043070" elapsed="0.000463"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:52:45.043700" elapsed="0.000160"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:52:45.044005" elapsed="0.000097"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:52:45.037256" elapsed="0.006898"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T00:52:44.659822" elapsed="0.384446"/>
</kw>
<msg time="2026-04-08T00:52:45.044325" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:52:44.659257" elapsed="0.385121"/>
</kw>
<arg>${system}</arg>
<arg>sudo ps -elf | egrep 'usr/local/bin/mn' | egrep python | awk '{print "sudo kill -9",$4}' | sh</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-08T00:52:44.658738" elapsed="0.385723"/>
</kw>
<arg>${mininet}</arg>
<status status="PASS" start="2026-04-08T00:52:43.070589" elapsed="1.973930"/>
</kw>
<kw name="Open_Connection_To_Tools_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:52:45.049372" level="INFO">${tools_connection} = 104</msg>
<var>${tools_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:52:45.048989" elapsed="0.000410"/>
</kw>
<kw name="Flexible_Mininet_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T00:52:45.051153" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T00:52:45.051248" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T00:52:45.050838" elapsed="0.000434"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:52:45.051427" elapsed="0.000313"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T00:52:45.052666" level="INFO">Logging into '10.30.170.192:22' as 'jenkins'.</msg>
<msg time="2026-04-08T00:52:45.371983" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 00:52:30 UTC 2026

  System load:  0.07               Processes:             112
  Usage of /:   19.5% of 38.58GB   Users logged in:       0
  Memory usage: 5%                 IPv4 address for ens3: 10.30.170.192
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 00:52:44 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-1-mininet-ovs-217-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T00:52:45.052350" elapsed="0.319728"/>
</kw>
<msg time="2026-04-08T00:52:45.372145" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:52:45.051905" elapsed="0.320323"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T00:52:45.050359" elapsed="0.321962"/>
</kw>
<msg time="2026-04-08T00:52:45.372371" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:52:45.049957" elapsed="0.322459"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-08T00:52:45.049581" elapsed="0.322910"/>
</kw>
<return>
<value>${tools_connection}</value>
<status status="PASS" start="2026-04-08T00:52:45.372539" elapsed="0.000063"/>
</return>
<msg time="2026-04-08T00:52:45.372753" level="INFO">${mininet_conn_id} = 104</msg>
<var>${mininet_conn_id}</var>
<arg>ip_address=${mininet}</arg>
<arg>timeout=${timeout}</arg>
<doc>Open a connection to the tools system at ${ip_address} and return its identifier.</doc>
<status status="PASS" start="2026-04-08T00:52:45.048502" elapsed="0.324276"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:45.373747" level="INFO">${mininet_conn_id} = 104</msg>
<arg>${mininet_conn_id}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-08T00:52:45.373017" elapsed="0.000773"/>
</kw>
<if>
<branch type="IF" condition="'${custom}' != '${EMPTY}'">
<kw name="Put File" owner="SSHLibrary">
<arg>${custom}</arg>
<doc>Uploads file(s) from the local machine to the remote machine.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:45.375937" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:45.373868" elapsed="0.002124"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:45.373846" elapsed="0.002171"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:45.376483" level="INFO">Start mininet --topo tree,1 to 10.30.170.131</msg>
<arg>Start mininet ${options} to ${controller}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:45.376190" elapsed="0.000337"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T00:52:45.378973" level="INFO">sudo mn --controller 'remote,ip=10.30.170.131,port=6633' --topo tree,1 --switch ovsk,protocols=OpenFlow13</msg>
<arg>sudo mn --controller 'remote,ip=${controller},port=${ofport}' ${options} --switch ovsk,protocols=OpenFlow${ofversion}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T00:52:45.376706" elapsed="0.002323"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-08T00:52:45.582855" level="INFO">[?2004l*** Creating network
*** Adding controller
*** Adding hosts:
h1 h2 
*** Adding switches:
s1 
*** Adding links:
(s1, h1) (s1, h2) 
*** Configuring hosts
h1 h2 
*** Starting controller
c0 
*** Starting 1 switches
s1 ...
*** Starting CLI:
mininet&gt;</msg>
<arg>mininet&gt;</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-08T00:52:45.379203" elapsed="0.203723"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:45.583364" level="INFO">Check OVS configuratiom</msg>
<arg>Check OVS configuratiom</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:45.583105" elapsed="0.000304"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T00:52:45.584744" level="INFO">sh ovs-vsctl show</msg>
<arg>sh ovs-vsctl show</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T00:52:45.583561" elapsed="0.001238"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-08T00:52:45.593318" level="INFO">9a5df812-eb49-4477-a37e-2d464c02791d
    Bridge s1
        Controller "tcp:10.30.170.131:6633"
        Controller "ptcp:6654"
        fail_mode: secure
        Port s1-eth2
            Interface s1-eth2
        Port s1-eth1
            Interface s1-eth1
        Port s1
            Interface s1
                type: internal
    ovs_version: "2.17.11"
mininet&gt;</msg>
<arg>mininet&gt;</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-08T00:52:45.584951" elapsed="0.008427"/>
</kw>
<return>
<value>${mininet_conn_id}</value>
<status status="PASS" start="2026-04-08T00:52:45.593425" elapsed="0.000032"/>
</return>
<msg time="2026-04-08T00:52:45.593593" level="INFO">${mininet_conn_id} = 104</msg>
<var>${mininet_conn_id}</var>
<arg>${TOOLS_SYSTEM_IP}</arg>
<arg>${ODL_SYSTEM_${follower_node_1}_IP}</arg>
<doc>Start Mininet with custom topology and connect to controller.</doc>
<status status="PASS" start="2026-04-08T00:52:43.067423" elapsed="2.526195"/>
</kw>
<kw name="Comment" owner="BuiltIn">
<arg>Wait until switch is available in controller</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:52:45.593835" elapsed="0.000215"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Verify Switch Connections Running On Member" owner="ClusterOpenFlow">
<kw name="Get Switches Count" owner="ScaleClient">
<msg time="2026-04-08T00:52:45.611909" level="INFO">${count} = 0</msg>
<var>${count}</var>
<arg>controller=${ODL_SYSTEM_${member_index}_IP}</arg>
<doc>Gives the count of the switches presnt in the operational inventory nodes datastore.</doc>
<status status="PASS" start="2026-04-08T00:52:45.598977" elapsed="0.012995"/>
</kw>
<kw name="Should Be Equal As Numbers" owner="BuiltIn">
<msg time="2026-04-08T00:52:45.613080" level="INFO">Argument types are:
&lt;class 'str'&gt;
&lt;class 'int'&gt;</msg>
<msg time="2026-04-08T00:52:45.613330" level="FAIL">1.0 != 0.0</msg>
<arg>${switch_count}</arg>
<arg>${count}</arg>
<doc>Fails if objects are unequal after converting them to real numbers.</doc>
<status status="FAIL" start="2026-04-08T00:52:45.612436" elapsed="0.001043">1.0 != 0.0</status>
</kw>
<arg>1</arg>
<arg>${follower_node_1}</arg>
<doc>Check if number of Switch connections on member of given index is equal to ${switch_count}.</doc>
<status status="FAIL" start="2026-04-08T00:52:45.598611" elapsed="0.015238">1.0 != 0.0</status>
</kw>
<kw name="Verify Switch Connections Running On Member" owner="ClusterOpenFlow">
<kw name="Get Switches Count" owner="ScaleClient">
<msg time="2026-04-08T00:52:46.645110" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>controller=${ODL_SYSTEM_${member_index}_IP}</arg>
<doc>Gives the count of the switches presnt in the operational inventory nodes datastore.</doc>
<status status="PASS" start="2026-04-08T00:52:46.622587" elapsed="0.022690"/>
</kw>
<kw name="Should Be Equal As Numbers" owner="BuiltIn">
<msg time="2026-04-08T00:52:46.646383" level="INFO">Argument types are:
&lt;class 'str'&gt;
&lt;class 'int'&gt;</msg>
<arg>${switch_count}</arg>
<arg>${count}</arg>
<doc>Fails if objects are unequal after converting them to real numbers.</doc>
<status status="PASS" start="2026-04-08T00:52:46.645675" elapsed="0.000875"/>
</kw>
<arg>1</arg>
<arg>${follower_node_1}</arg>
<doc>Check if number of Switch connections on member of given index is equal to ${switch_count}.</doc>
<status status="PASS" start="2026-04-08T00:52:46.622031" elapsed="0.024658"/>
</kw>
<arg>5s</arg>
<arg>1s</arg>
<arg>ClusterOpenFlow.Verify Switch Connections Running On Member</arg>
<arg>1</arg>
<arg>${follower_node_1}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-08T00:52:45.594258" elapsed="1.052542"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:46.647984" level="INFO">${mininet_conn_id} = 104</msg>
<arg>${mininet_conn_id}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-08T00:52:46.647271" elapsed="0.000809"/>
</kw>
<doc>Start mininet with connection to Follower Node1.</doc>
<status status="PASS" start="2026-04-08T00:52:42.630704" elapsed="4.017643"/>
</test>
<test id="s1-s3-t4" name="Add Flows In Follower Node2 and Verify Before Leader Restart" line="48">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-08T00:52:46.655553" elapsed="0.000207"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-08T00:52:46.654989" elapsed="0.000826"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:52:46.656840" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:52:46.656713" elapsed="0.000174"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:46.656691" elapsed="0.000219"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:52:46.661678" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:52:46.661573" elapsed="0.000150"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:46.661555" elapsed="0.000189"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:52:46.662780" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:52:46.662365" elapsed="0.000442"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:52:46.663287" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:52:46.662967" elapsed="0.000346"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:52:46.663357" elapsed="0.000033"/>
</return>
<msg time="2026-04-08T00:52:46.663516" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:52:46.661969" elapsed="0.001571"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:52:46.668869" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:52:46.668763" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:46.668743" elapsed="0.000192"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:52:46.670095" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:52:46.669988" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:46.669970" elapsed="0.000216"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:52:46.670668" level="INFO">${karaf_connection_index} = 82</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:52:46.670334" elapsed="0.000361"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:52:46.671081" level="INFO">${current_connection_index} = 104</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:52:46.670855" elapsed="0.000252"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T00:52:46.708738" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T00:52:46.671621" elapsed="0.037215"/>
</kw>
<msg time="2026-04-08T00:52:46.709034" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T00:52:46.709081" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:52:46.671286" elapsed="0.037831"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T00:52:46.797244" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "a "d "e "r "[C "F "o "l "l "o "w "e "r "[C "F "a "i "l "o "v "e "r ". "A "d "d "[C "F "l "o "w "s "[C "I "n "[C "F "o "l "l "[78Co "[A[78Cw
 "e "r "[C "N "o "d "e "2 "[C "a "n "d "[C "V "e "r "i "f "y "[C "B "e "f "o "r "e "[C "L "e "a "d "e "r "[C "R "e "s "t "a "r "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T00:52:46.709662" elapsed="0.087716"/>
</kw>
<msg time="2026-04-08T00:52:46.797547" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T00:52:46.797595" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:52:46.709313" elapsed="0.088318"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:46.797948" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:46.797713" elapsed="0.000291"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:46.797691" elapsed="0.000338"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:46.798511" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "a "d "e "r "[C "F "o "l "l "o "w "e "r "[C "F "a "i "l "o "v "e "r ". "A "d "d "[C "F "l "o "w "s "[C "I "n "[C "F "o "l "l "[78Co "[A[78Cw
 "e "r "[C "N "o "d "e "2 "[C "a "n "d "[C "V "e "r "i "f "y "[C "B "e "f "o "r "e "[C "L "e "a "d "e "r "[C "R "e "s "t "a "r "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:46.798194" elapsed="0.000406"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:46.798888" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:46.798669" elapsed="0.000274"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:46.798651" elapsed="0.000315"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T00:52:46.798998" elapsed="0.000028"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:52:46.801725" elapsed="0.000154"/>
</kw>
<msg time="2026-04-08T00:52:46.801942" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:52:46.800505" elapsed="0.001573"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:46.802380" elapsed="0.000076"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:46.802774" elapsed="0.000078"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:52:46.799859" elapsed="0.003103"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T00:52:46.799319" elapsed="0.003706"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T00:52:46.669687" elapsed="0.133454"/>
</kw>
<msg time="2026-04-08T00:52:46.803308" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:52:46.803352" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:52:46.669083" elapsed="0.134304"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T00:52:46.803574" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-08T00:52:46.803465" elapsed="0.000167"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:46.803446" elapsed="0.000210"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:46.804048" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:46.804396" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T00:52:46.804466" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T00:52:46.668424" elapsed="0.136148"/>
</kw>
<msg time="2026-04-08T00:52:46.804665" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:52:46.804709" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:52:46.663916" elapsed="0.140827"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:46.805066" elapsed="0.000067"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:46.804818" elapsed="0.000367"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:46.804801" elapsed="0.000409"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T00:52:46.663776" elapsed="0.141458"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:52:46.810697" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:52:46.810588" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:46.810568" elapsed="0.000196"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:52:46.811913" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:52:46.811806" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:46.811788" elapsed="0.000192"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:52:46.812443" level="INFO">${karaf_connection_index} = 84</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:52:46.812123" elapsed="0.000347"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:52:46.813090" level="INFO">${current_connection_index} = 104</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:52:46.812630" elapsed="0.000488"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T00:52:46.851110" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T00:52:46.813675" elapsed="0.037556"/>
</kw>
<msg time="2026-04-08T00:52:46.851427" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T00:52:46.851475" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:52:46.813315" elapsed="0.038197"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T00:52:46.948526" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "a "d "e "r "[C "F "o "l "l "o "w "e "r "[C "F "a "i "l "o "v "e "r ". "A "d "d "[C "F "l "o "w "s "[C "I "n "[C "F "o "l "l "[78Co "[A[78Cw
 "e "r "[C "N "o "d "e "2 "[C "a "n "d "[C "V "e "r "i "f "y "[C "B "e "f "o "r "e "[C "L "e "a "d "e "r "[C "R "e "s "t "a "r "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T00:52:46.852042" elapsed="0.096611"/>
</kw>
<msg time="2026-04-08T00:52:46.948813" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T00:52:46.948859" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:52:46.851689" elapsed="0.097205"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:46.949233" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:46.948975" elapsed="0.000315"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:46.948953" elapsed="0.000360"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:46.949751" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "a "d "e "r "[C "F "o "l "l "o "w "e "r "[C "F "a "i "l "o "v "e "r ". "A "d "d "[C "F "l "o "w "s "[C "I "n "[C "F "o "l "l "[78Co "[A[78Cw
 "e "r "[C "N "o "d "e "2 "[C "a "n "d "[C "V "e "r "i "f "y "[C "B "e "f "o "r "e "[C "L "e "a "d "e "r "[C "R "e "s "t "a "r "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:46.949454" elapsed="0.000384"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:46.950121" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:46.949906" elapsed="0.000287"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:46.949888" elapsed="0.000328"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T00:52:46.950248" elapsed="0.000028"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:52:46.952775" elapsed="0.000150"/>
</kw>
<msg time="2026-04-08T00:52:46.952985" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:52:46.951649" elapsed="0.001466"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:46.953407" elapsed="0.000174"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:46.953849" elapsed="0.000074"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:52:46.951027" elapsed="0.003004"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T00:52:46.950504" elapsed="0.003590"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T00:52:46.811506" elapsed="0.142749"/>
</kw>
<msg time="2026-04-08T00:52:46.954347" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:52:46.954389" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:52:46.810916" elapsed="0.143509"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T00:52:46.954610" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-08T00:52:46.954502" elapsed="0.000166"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:46.954483" elapsed="0.000209"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 2,
close the previous connection. In any case create a new connection
to karaf console for 2, set correct prompt set and login to karaf console.
Store connection index for 2 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:46.955071" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:46.955416" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T00:52:46.955487" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T00:52:46.810245" elapsed="0.145348"/>
</kw>
<msg time="2026-04-08T00:52:46.955685" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:52:46.955746" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:52:46.805502" elapsed="0.150280"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:46.956103" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:46.955858" elapsed="0.000298"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:46.955841" elapsed="0.000353"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T00:52:46.805360" elapsed="0.150858"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:52:46.961654" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:52:46.961546" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:46.961528" elapsed="0.000194"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:52:46.962865" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:52:46.962758" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:46.962740" elapsed="0.000192"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:52:46.963396" level="INFO">${karaf_connection_index} = 86</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:52:46.963074" elapsed="0.000349"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:52:46.963812" level="INFO">${current_connection_index} = 104</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:52:46.963579" elapsed="0.000260"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T00:52:47.003246" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T00:52:46.964349" elapsed="0.039000"/>
</kw>
<msg time="2026-04-08T00:52:47.003511" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T00:52:47.003557" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:52:46.963999" elapsed="0.039593"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T00:52:47.104248" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "a "d "e "r "[C "F "o "l "l "o "w "e "r "[C "F "a "i "l "o "v "e "r ". "A "d "d "[C "F "l "o "w "s "[C "I "n "[C "F "o "l "l "[78Co "[A[78Cw
 "e "r "[C "N "o "d "e "2 "[C "a "n "d "[C "V "e "r "i "f "y "[C "B "e "f "o "r "e "[C "L "e "a "d "e "r "[C "R "e "s "t "a "r "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T00:52:47.004129" elapsed="0.100278"/>
</kw>
<msg time="2026-04-08T00:52:47.104569" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T00:52:47.104617" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:52:47.003765" elapsed="0.100889"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:47.104996" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:47.104769" elapsed="0.000282"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:47.104747" elapsed="0.000328"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:47.105538" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "a "d "e "r "[C "F "o "l "l "o "w "e "r "[C "F "a "i "l "o "v "e "r ". "A "d "d "[C "F "l "o "w "s "[C "I "n "[C "F "o "l "l "[78Co "[A[78Cw
 "e "r "[C "N "o "d "e "2 "[C "a "n "d "[C "V "e "r "i "f "y "[C "B "e "f "o "r "e "[C "L "e "a "d "e "r "[C "R "e "s "t "a "r "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:47.105236" elapsed="0.000397"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:47.105917" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:47.105701" elapsed="0.000269"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:47.105682" elapsed="0.000311"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T00:52:47.106026" elapsed="0.000027"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:52:47.108549" elapsed="0.000150"/>
</kw>
<msg time="2026-04-08T00:52:47.108759" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:52:47.107455" elapsed="0.001431"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:47.109152" elapsed="0.000099"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:47.109500" elapsed="0.000072"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:52:47.106830" elapsed="0.002850"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T00:52:47.106301" elapsed="0.003441"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T00:52:46.962459" elapsed="0.147477"/>
</kw>
<msg time="2026-04-08T00:52:47.110037" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:52:47.110080" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:52:46.961872" elapsed="0.148245"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T00:52:47.110325" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-08T00:52:47.110218" elapsed="0.000165"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:47.110197" elapsed="0.000209"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 3,
close the previous connection. In any case create a new connection
to karaf console for 3, set correct prompt set and login to karaf console.
Store connection index for 3 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:47.110785" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:47.111113" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T00:52:47.111258" elapsed="0.000017"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T00:52:46.961205" elapsed="0.150161"/>
</kw>
<msg time="2026-04-08T00:52:47.111458" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:52:47.111502" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:52:46.956474" elapsed="0.155065"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:47.111859" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:47.111614" elapsed="0.000298"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:47.111597" elapsed="0.000338"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T00:52:46.956338" elapsed="0.155620"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-08T00:52:46.663598" elapsed="0.448388"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-08T00:52:46.661213" elapsed="0.450830"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-08T00:52:46.656420" elapsed="0.455679"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:52:46.655965" elapsed="0.456179"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-08T00:52:46.650321" elapsed="0.461986"/>
</kw>
<kw name="Add Sample Flow And Verify" owner="ClusterOpenFlow">
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T00:52:47.123018" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/sample_flow_1.json"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/sample_flow_1.json&lt;/a&gt;'.</msg>
<msg time="2026-04-08T00:52:47.123215" level="INFO">${body} = {
  "flow-node-inventory:flow": [
    {
      "id": "1",
      "table_id": 0,
      "priority": 2,
      "flow-name": "flow1",
      "instructions": {
        "instruction": [
          {
            ...</msg>
<var>${body}</var>
<arg>/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/openflowplugin/sample_flow_1.json</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T00:52:47.122899" elapsed="0.000345"/>
</kw>
<if>
<branch type="IF" condition="'${ODL_OF_PLUGIN}' == 'helium'">
<kw name="Set Test Variable" owner="BuiltIn">
<arg>&amp;{dictionary}</arg>
<arg>10.0.1.0/24=2</arg>
<arg>"output-node-connector":"1"=1</arg>
<doc>Makes a variable available everywhere within the scope of the current test.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:47.123571" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:47.123321" elapsed="0.000310"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:47.123300" elapsed="0.000355"/>
</if>
<if>
<branch type="IF" condition="'${ODL_OF_PLUGIN}' == 'lithium'">
<kw name="Set Test Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:47.126918" level="INFO">&amp;{dictionary} = { 10.0.1.0/24=1 | "output-node-connector":"1"=1 }</msg>
<arg>&amp;{dictionary}</arg>
<arg>10.0.1.0/24=1</arg>
<arg>"output-node-connector":"1"=1</arg>
<doc>Makes a variable available everywhere within the scope of the current test.</doc>
<status status="PASS" start="2026-04-08T00:52:47.123942" elapsed="0.003022"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:47.123709" elapsed="0.003295"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:47.123694" elapsed="0.003335"/>
</if>
<kw name="Put_As_Json_And_Check_Member_List_Or_All" owner="ClusterManagement">
<kw name="Put_As_Json_To_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:47.142841" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:47.142544" elapsed="0.000323"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:52:47.142912" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:52:47.143057" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:52:47.142184" elapsed="0.000897"/>
</kw>
<kw name="Put_As_Json_To_Uri" owner="TemplatedRequests">
<kw name="Put_To_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:47.148423" level="INFO">/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0/flow=1</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:47.148175" elapsed="0.000293"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:47.148878" level="INFO">{
  "flow-node-inventory:flow": [
    {
      "id": "1",
      "table_id": 0,
      "priority": 2,
      "flow-name": "flow1",
      "instructions": {
        "instruction": [
          {
            "order": 0,
            "apply-actions": {
              "action": [
                {
                  "order": 0,
                  "output-action": {
                    "output-node-connector": "1"
                  }
                }
              ]
            }
          }
        ]
      },
      "match": {
        "ipv4-destination": "10.0.1.0/24",
        "ethernet-match": {
          "ethernet-type": {
            "type": 2048
          }
        }
      }
    }
  ]
}
</msg>
<arg>${data}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:47.148641" elapsed="0.000285"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:47.149337" level="INFO">{'Content-Type': 'application/json'}</msg>
<arg>${content_type}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:47.149074" elapsed="0.000306"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:47.149764" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:47.149528" elapsed="0.000278"/>
</kw>
<kw name="Join_Two_Headers" owner="TemplatedRequests">
<kw name="Copy Dictionary" owner="Collections">
<msg time="2026-04-08T00:52:47.150635" level="INFO">${accumulator} = {'Content-Type': 'application/json'}</msg>
<var>${accumulator}</var>
<arg>${first}</arg>
<doc>Returns a copy of the given dictionary.</doc>
<status status="PASS" start="2026-04-08T00:52:47.150432" elapsed="0.000229"/>
</kw>
<kw name="Get Dictionary Items" owner="Collections">
<msg time="2026-04-08T00:52:47.150983" level="INFO">${items_to_add} = []</msg>
<var>${items_to_add}</var>
<arg>${second}</arg>
<doc>Returns items of the given ``dictionary`` as a list.</doc>
<status status="PASS" start="2026-04-08T00:52:47.150812" elapsed="0.000195"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${accumulator}</arg>
<arg>@{items_to_add}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:52:47.151155" elapsed="0.000233"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:47.151788" level="INFO">{'Content-Type': 'application/json'}</msg>
<arg>${accumulator}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:47.151543" elapsed="0.000288"/>
</kw>
<return>
<value>${accumulator}</value>
<status status="PASS" start="2026-04-08T00:52:47.151872" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:52:47.152022" level="INFO">${headers} = {'Content-Type': 'application/json'}</msg>
<var>${headers}</var>
<arg>first=${content_type}</arg>
<arg>second=${accept}</arg>
<doc>Take two dicts, join them, return result. Second argument values take precedence.</doc>
<status status="PASS" start="2026-04-08T00:52:47.150003" elapsed="0.002043"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="PUT On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:52:47.198420" level="INFO">PUT Request : url=http://10.30.171.110:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0/flow=1 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0/flow=1 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node0336bvzrfnrhc3cqywxyctca52.node0', 'Content-Length': '686', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body={
  "flow-node-inventory:flow": [
    {
      "id": "1",
      "table_id": 0,
      "priority": 2,
      "flow-name": "flow1",
      "instructions": {
        "instruction": [
          {
            "order": 0,
            "apply-actions": {
              "action": [
                {
                  "order": 0,
                  "output-action": {
                    "output-node-connector": "1"
                  }
                }
              ]
            }
          }
        ]
      },
      "match": {
        "ipv4-destination": "10.0.1.0/24",
        "ethernet-match": {
          "ethernet-type": {
            "type": 2048
          }
        }
      }
    }
  ]
}
 
 </msg>
<msg time="2026-04-08T00:52:47.198559" level="INFO">PUT Response : url=http://10.30.171.110:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0/flow=1 
 status=201, reason=Created 
 headers={'Content-Length': '0'} 
 body=None 
 </msg>
<msg time="2026-04-08T00:52:47.198729" level="INFO">${response} = &lt;Response [201]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<doc>Sends a PUT request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:52:47.154367" elapsed="0.044401"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:47.152115" elapsed="0.046725"/>
</branch>
<branch type="ELSE">
<kw name="PUT On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a PUT request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:47.199119" elapsed="0.000033"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:47.198883" elapsed="0.000362"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:47.152098" elapsed="0.047179"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:47.204098" level="INFO"/>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:47.200710" elapsed="0.003471"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:47.200384" elapsed="0.003850"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:47.200357" elapsed="0.003915"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:47.207098" level="INFO">201</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:47.204674" elapsed="0.002706"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:47.204353" elapsed="0.003065"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:47.204329" elapsed="0.003113"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:52:47.207999" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:47.207607" elapsed="0.000418"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:47.208357" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:47.208094" elapsed="0.000320"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:47.208914" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:47.208596" elapsed="0.000344"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:47.208437" elapsed="0.000539"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:47.208077" elapsed="0.000920"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:52:47.209529" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:47.209154" elapsed="0.000401"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:47.209855" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:47.209624" elapsed="0.000287"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:47.210401" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:47.210091" elapsed="0.000336"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:47.209934" elapsed="0.000527"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:47.209606" elapsed="0.000876"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:52:47.210632" elapsed="0.000339"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:52:47.211445" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:47.211136" elapsed="0.000334"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:52:47.211624" elapsed="0.002220"/>
</kw>
<arg>${response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:52:47.199806" elapsed="0.014099"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:52:47.214077" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:52:47.213971" elapsed="0.000150"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:47.213953" elapsed="0.000190"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:52:47.216540" level="INFO">${text_normalized} = </msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:52:47.214305" elapsed="0.002261"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:52:47.216613" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:52:47.216765" level="INFO">${response_text} = </msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>data=${data}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>content_type=${HEADERS_YANG_JSON}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>PUT data to given URI, check status code and return response text.
${content_type} and ${accept} are mandatory Python objects with headers to use.
If ${normalize_json}, normalize text before returning.</doc>
<status status="PASS" start="2026-04-08T00:52:47.145726" elapsed="0.071063"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:52:47.216866" elapsed="0.000026"/>
</return>
<msg time="2026-04-08T00:52:47.217048" level="INFO">${response_text} = </msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>data=${data}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Put_To_Uri normalized response text.
Yang json content type is used as a workaround to RequestsLibrary json conversion eagerness.</doc>
<status status="PASS" start="2026-04-08T00:52:47.143308" elapsed="0.073765"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:52:47.217122" elapsed="0.000025"/>
</return>
<msg time="2026-04-08T00:52:47.217284" level="INFO">${response_text} = </msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>data=${data}</arg>
<arg>member_index=${member_index}</arg>
<doc>Send a PUT with the supplied uri and data to member 3.</doc>
<status status="PASS" start="2026-04-08T00:52:47.141676" elapsed="0.075632"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Check_Json_Member_List_Or_All" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:52:47.223417" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:52:47.223020" elapsed="0.000424"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:52:47.224154" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:52:47.223843" elapsed="0.000362"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:52:47.224250" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:52:47.224408" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:52:47.222635" elapsed="0.001797"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_From_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:47.230093" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:47.229798" elapsed="0.000322"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:52:47.230199" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:52:47.230350" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:52:47.229441" elapsed="0.000935"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:47.236740" level="INFO">/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0/flow=1?content=config</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:47.236495" elapsed="0.000291"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:47.237223" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:47.236965" elapsed="0.000303"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:52:47.254395" level="INFO">GET Request : url=http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0/flow=1?content=config 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0/flow=1?content=config 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01jewze00gqgu8yuon50tdwq65226.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:52:47.255089" level="INFO">GET Response : url=http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0/flow=1?content=config 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '311'} 
 body={"flow-node-inventory:flow":[{"id":"1","flow-name":"flow1","table_id":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.1.0/24"},"priority":2,"instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"output-action":{"output-node-connector":"1"}}]}}]}}]} 
 </msg>
<msg time="2026-04-08T00:52:47.255333" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:52:47.239282" elapsed="0.016109"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:47.237335" elapsed="0.018147"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:47.255868" elapsed="0.000047"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:47.255539" elapsed="0.000469"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:47.237317" elapsed="0.018737"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:47.263850" level="INFO">{"flow-node-inventory:flow":[{"id":"1","flow-name":"flow1","table_id":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.1.0/24"},"priority":2,"instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"output-action":{"output-node-connector":"1"}}]}}]}}]}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:47.258352" elapsed="0.005609"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:47.257842" elapsed="0.006195"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:47.257802" elapsed="0.006289"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:47.267279" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:47.264739" elapsed="0.002586"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:47.264248" elapsed="0.003112"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:47.264209" elapsed="0.003175"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:52:47.267910" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:47.267543" elapsed="0.000394"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:47.268300" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:47.268042" elapsed="0.000319"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:47.268849" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:47.268546" elapsed="0.000330"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:47.268385" elapsed="0.000527"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:47.268023" elapsed="0.000910"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:52:47.269488" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:47.269108" elapsed="0.000408"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:47.269823" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:47.269586" elapsed="0.000296"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:47.270388" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:47.270069" elapsed="0.000386"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:47.269906" elapsed="0.000587"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:47.269568" elapsed="0.000946"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:52:47.270665" elapsed="0.000353"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:52:47.271484" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:47.271209" elapsed="0.000301"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:52:47.271663" elapsed="0.002356"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:52:47.256836" elapsed="0.017247"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-08T00:52:47.274279" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-08T00:52:47.274159" elapsed="0.000180"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:47.274137" elapsed="0.000226"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:47.274510" elapsed="0.000022"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-08T00:52:47.274581" elapsed="0.000015"/>
</return>
<msg time="2026-04-08T00:52:47.276794" level="INFO">${response_text} = {"flow-node-inventory:flow":[{"id":"1","flow-name":"flow1","table_id":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.1.0/24"},"priority":2,"instructions":{"instru...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${access}</arg>
<arg>session=${session}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:52:47.230699" elapsed="0.046124"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:52:47.276875" elapsed="0.000027"/>
</return>
<msg time="2026-04-08T00:52:47.277028" level="INFO">${data} = {"flow-node-inventory:flow":[{"id":"1","flow-name":"flow1","table_id":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.1.0/24"},"priority":2,"instructions":{"instru...</msg>
<var>${data}</var>
<arg>uri=${uri}</arg>
<arg>member_index=${index}</arg>
<doc>Send a GET with the supplied uri to member ${member_index}.</doc>
<status status="PASS" start="2026-04-08T00:52:47.228929" elapsed="0.048140"/>
</kw>
<kw name="Normalize_Jsons_And_Compare" owner="TemplatedRequests">
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:52:47.278216" level="INFO">${expected_normalized} = {
 "flow-node-inventory:flow": [
  {
   "flow-name": "flow1",
   "id": "1",
   "instructions": {
    "instruction": [
     {
      "apply-actions": {
       "action": [
        {
         "order": 0,
...</msg>
<var>${expected_normalized}</var>
<arg>${expected_raw}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:52:47.277675" elapsed="0.000571"/>
</kw>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:52:47.278855" level="INFO">${actual_normalized} = {
 "flow-node-inventory:flow": [
  {
   "flow-name": "flow1",
   "id": "1",
   "instructions": {
    "instruction": [
     {
      "apply-actions": {
       "action": [
        {
         "order": 0,
...</msg>
<var>${actual_normalized}</var>
<arg>${actual_raw}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:52:47.278399" elapsed="0.000484"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<arg>${expected_normalized}</arg>
<arg>${actual_normalized}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="PASS" start="2026-04-08T00:52:47.279035" elapsed="0.000349"/>
</kw>
<arg>${expected_data}</arg>
<arg>${data}</arg>
<doc>Use norm_json to normalize both JSON arguments, call Should_Be_Equal.</doc>
<status status="PASS" start="2026-04-08T00:52:47.277302" elapsed="0.002142"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T00:52:47.224623" elapsed="0.054854"/>
</iter>
<iter>
<kw name="Get_From_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:47.284825" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:47.284529" elapsed="0.000323"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:52:47.284932" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:52:47.285098" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:52:47.284159" elapsed="0.000966"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:47.291460" level="INFO">/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0/flow=1?content=config</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:47.291214" elapsed="0.000292"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:47.291895" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:47.291658" elapsed="0.000281"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:52:47.308544" level="INFO">GET Request : url=http://10.30.170.131:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0/flow=1?content=config 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0/flow=1?content=config 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01eq5fxmndxspk37g8qgkyja672.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:52:47.308708" level="INFO">GET Response : url=http://10.30.170.131:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0/flow=1?content=config 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '311'} 
 body={"flow-node-inventory:flow":[{"id":"1","flow-name":"flow1","table_id":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.1.0/24"},"priority":2,"instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"output-action":{"output-node-connector":"1"}}]}}]}}]} 
 </msg>
<msg time="2026-04-08T00:52:47.308845" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:52:47.294096" elapsed="0.014786"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:47.292006" elapsed="0.016938"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:47.309250" elapsed="0.000034"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:47.308982" elapsed="0.000365"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:47.291988" elapsed="0.017390"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:47.314550" level="INFO">{"flow-node-inventory:flow":[{"id":"1","flow-name":"flow1","table_id":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.1.0/24"},"priority":2,"instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"output-action":{"output-node-connector":"1"}}]}}]}}]}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:47.310862" elapsed="0.003762"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:47.310540" elapsed="0.004134"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:47.310513" elapsed="0.004198"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:47.318435" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:47.315116" elapsed="0.003366"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:47.314794" elapsed="0.003722"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:47.314769" elapsed="0.003771"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:52:47.319069" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:47.318700" elapsed="0.000397"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:47.319420" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:47.319184" elapsed="0.000294"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:47.319960" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:47.319662" elapsed="0.000324"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:47.319502" elapsed="0.000519"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:47.319148" elapsed="0.000894"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:52:47.320622" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:47.320215" elapsed="0.000434"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:47.320948" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:47.320717" elapsed="0.000286"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:47.321506" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:47.321210" elapsed="0.000321"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:47.321027" elapsed="0.000539"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:47.320700" elapsed="0.000887"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:52:47.321732" elapsed="0.000341"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:52:47.322566" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:47.322294" elapsed="0.000298"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:52:47.322742" elapsed="0.002206"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:52:47.309882" elapsed="0.015127"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-08T00:52:47.325199" elapsed="0.000052"/>
</return>
<status status="PASS" start="2026-04-08T00:52:47.325078" elapsed="0.000208"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:47.325060" elapsed="0.000250"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:47.325455" elapsed="0.000025"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-08T00:52:47.325528" elapsed="0.000015"/>
</return>
<msg time="2026-04-08T00:52:47.327753" level="INFO">${response_text} = {"flow-node-inventory:flow":[{"id":"1","flow-name":"flow1","table_id":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.1.0/24"},"priority":2,"instructions":{"instru...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${access}</arg>
<arg>session=${session}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:52:47.285463" elapsed="0.042318"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:52:47.327831" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:52:47.327979" level="INFO">${data} = {"flow-node-inventory:flow":[{"id":"1","flow-name":"flow1","table_id":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.1.0/24"},"priority":2,"instructions":{"instru...</msg>
<var>${data}</var>
<arg>uri=${uri}</arg>
<arg>member_index=${index}</arg>
<doc>Send a GET with the supplied uri to member ${member_index}.</doc>
<status status="PASS" start="2026-04-08T00:52:47.283663" elapsed="0.044341"/>
</kw>
<kw name="Normalize_Jsons_And_Compare" owner="TemplatedRequests">
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:52:47.329360" level="INFO">${expected_normalized} = {
 "flow-node-inventory:flow": [
  {
   "flow-name": "flow1",
   "id": "1",
   "instructions": {
    "instruction": [
     {
      "apply-actions": {
       "action": [
        {
         "order": 0,
...</msg>
<var>${expected_normalized}</var>
<arg>${expected_raw}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:52:47.328609" elapsed="0.000780"/>
</kw>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:52:47.330005" level="INFO">${actual_normalized} = {
 "flow-node-inventory:flow": [
  {
   "flow-name": "flow1",
   "id": "1",
   "instructions": {
    "instruction": [
     {
      "apply-actions": {
       "action": [
        {
         "order": 0,
...</msg>
<var>${actual_normalized}</var>
<arg>${actual_raw}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:52:47.329544" elapsed="0.000489"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<arg>${expected_normalized}</arg>
<arg>${actual_normalized}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="PASS" start="2026-04-08T00:52:47.330208" elapsed="0.000321"/>
</kw>
<arg>${expected_data}</arg>
<arg>${data}</arg>
<doc>Use norm_json to normalize both JSON arguments, call Should_Be_Equal.</doc>
<status status="PASS" start="2026-04-08T00:52:47.328238" elapsed="0.002350"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T00:52:47.279568" elapsed="0.051053"/>
</iter>
<iter>
<kw name="Get_From_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:47.337308" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:47.336982" elapsed="0.000353"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:52:47.337380" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:52:47.337526" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:52:47.336629" elapsed="0.000922"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:47.343920" level="INFO">/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0/flow=1?content=config</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:47.343673" elapsed="0.000293"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:47.344376" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:47.344117" elapsed="0.000302"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:52:47.359443" level="INFO">GET Request : url=http://10.30.171.110:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0/flow=1?content=config 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0/flow=1?content=config 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0336bvzrfnrhc3cqywxyctca52.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:52:47.359696" level="INFO">GET Response : url=http://10.30.171.110:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0/flow=1?content=config 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '311'} 
 body={"flow-node-inventory:flow":[{"id":"1","flow-name":"flow1","table_id":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.1.0/24"},"priority":2,"instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"output-action":{"output-node-connector":"1"}}]}}]}}]} 
 </msg>
<msg time="2026-04-08T00:52:47.359928" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:52:47.346441" elapsed="0.013547"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:47.344485" elapsed="0.015666"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:47.360585" elapsed="0.000049"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:47.360244" elapsed="0.000483"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:47.344467" elapsed="0.016307"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:47.369211" level="INFO">{"flow-node-inventory:flow":[{"id":"1","flow-name":"flow1","table_id":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.1.0/24"},"priority":2,"instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"output-action":{"output-node-connector":"1"}}]}}]}}]}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:47.363303" elapsed="0.006035"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:47.362731" elapsed="0.006742"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:47.362687" elapsed="0.006848"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:47.372605" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:47.370241" elapsed="0.002413"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:47.369670" elapsed="0.003020"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:47.369631" elapsed="0.003084"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:52:47.373276" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:47.372877" elapsed="0.000427"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:47.373633" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:47.373376" elapsed="0.000315"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:47.374223" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:47.373875" elapsed="0.000376"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:47.373715" elapsed="0.000572"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:47.373358" elapsed="0.000951"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:52:47.374827" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:47.374466" elapsed="0.000389"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:47.375190" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:47.374924" elapsed="0.000328"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:47.375735" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:47.375435" elapsed="0.000326"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:47.375275" elapsed="0.000523"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:47.374906" elapsed="0.000913"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:52:47.375965" elapsed="0.000367"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:52:47.376770" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:47.376498" elapsed="0.000298"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:52:47.376947" elapsed="0.002392"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:52:47.361635" elapsed="0.017769"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-08T00:52:47.379578" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-08T00:52:47.379473" elapsed="0.000165"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:47.379455" elapsed="0.000207"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:47.379809" elapsed="0.000022"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-08T00:52:47.379881" elapsed="0.000015"/>
</return>
<msg time="2026-04-08T00:52:47.382119" level="INFO">${response_text} = {"flow-node-inventory:flow":[{"id":"1","flow-name":"flow1","table_id":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.1.0/24"},"priority":2,"instructions":{"instru...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${access}</arg>
<arg>session=${session}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:52:47.337867" elapsed="0.044281"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:52:47.382217" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:52:47.382368" level="INFO">${data} = {"flow-node-inventory:flow":[{"id":"1","flow-name":"flow1","table_id":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.1.0/24"},"priority":2,"instructions":{"instru...</msg>
<var>${data}</var>
<arg>uri=${uri}</arg>
<arg>member_index=${index}</arg>
<doc>Send a GET with the supplied uri to member ${member_index}.</doc>
<status status="PASS" start="2026-04-08T00:52:47.336120" elapsed="0.046307"/>
</kw>
<kw name="Normalize_Jsons_And_Compare" owner="TemplatedRequests">
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:52:47.383547" level="INFO">${expected_normalized} = {
 "flow-node-inventory:flow": [
  {
   "flow-name": "flow1",
   "id": "1",
   "instructions": {
    "instruction": [
     {
      "apply-actions": {
       "action": [
        {
         "order": 0,
...</msg>
<var>${expected_normalized}</var>
<arg>${expected_raw}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:52:47.383026" elapsed="0.000551"/>
</kw>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:52:47.384222" level="INFO">${actual_normalized} = {
 "flow-node-inventory:flow": [
  {
   "flow-name": "flow1",
   "id": "1",
   "instructions": {
    "instruction": [
     {
      "apply-actions": {
       "action": [
        {
         "order": 0,
...</msg>
<var>${actual_normalized}</var>
<arg>${actual_raw}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:52:47.383732" elapsed="0.000520"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<arg>${expected_normalized}</arg>
<arg>${actual_normalized}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="PASS" start="2026-04-08T00:52:47.384413" elapsed="0.000326"/>
</kw>
<arg>${expected_data}</arg>
<arg>${data}</arg>
<doc>Use norm_json to normalize both JSON arguments, call Should_Be_Equal.</doc>
<status status="PASS" start="2026-04-08T00:52:47.382644" elapsed="0.002157"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T00:52:47.330711" elapsed="0.054125"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-08T00:52:47.224486" elapsed="0.160381"/>
</for>
<arg>uri=${uri}?content=config</arg>
<arg>expected_data=${data}</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Send a GET with the supplied uri to all or some members defined in .
Then check received data is = ${expected data}.</doc>
<status status="PASS" start="2026-04-08T00:52:47.222055" elapsed="0.162866"/>
</kw>
<arg>5s</arg>
<arg>1s</arg>
<arg>Check_Json_Member_List_Or_All</arg>
<arg>uri=${uri}?content=config</arg>
<arg>expected_data=${data}</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-08T00:52:47.217497" elapsed="0.167476"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:52:47.385026" elapsed="0.000028"/>
</return>
<arg>${config_table_0}/flow=1</arg>
<arg>${body}</arg>
<arg>${controller_index}</arg>
<arg>${controller_index_list}</arg>
<doc>Send a PUT with the supplied uri ${uri} and body ${data} to member ${member_index}.
Then check data is replicated in all or some members defined in ${member_index_list}.</doc>
<status status="PASS" start="2026-04-08T00:52:47.141033" elapsed="0.244118"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Check_Item_Occurrence_Member_List_Or_All" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:52:47.391417" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:52:47.391010" elapsed="0.000434"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:52:47.391923" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:52:47.391605" elapsed="0.000345"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:52:47.391995" elapsed="0.000034"/>
</return>
<msg time="2026-04-08T00:52:47.392160" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:52:47.390609" elapsed="0.001591"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_From_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:47.397752" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:47.397437" elapsed="0.000342"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:52:47.397825" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:52:47.397973" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:52:47.397031" elapsed="0.000968"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:47.404780" level="INFO">/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:47.404530" elapsed="0.000297"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:47.405241" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:47.404980" elapsed="0.000306"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:52:47.414021" level="INFO">GET Request : url=http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01jewze00gqgu8yuon50tdwq65226.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:52:47.416568" level="INFO">GET Response : url=http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '596'} 
 body={"flow-node-inventory:table":[{"id":0,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"3","active-flows":1,"packets-matched":"0"},"flow":[{"id":"#UF$TABLE*0-1","table_id":0,"priority":0,"cookie_mask":"0","idle-timeout":0,"cookie":"10","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"output-action":{"max-length":65535,"output-node-connector":"CONTROLLER"}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":0,"nanosecond":0}},"flags":"SEND_FLOW_REM"}]}]} 
 </msg>
<msg time="2026-04-08T00:52:47.416711" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:52:47.407339" elapsed="0.009399"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:47.405359" elapsed="0.011422"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:47.416960" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:47.416808" elapsed="0.000216"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:47.405340" elapsed="0.011706"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:47.421508" level="INFO">{"flow-node-inventory:table":[{"id":0,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"3","active-flows":1,"packets-matched":"0"},"flow":[{"id":"#UF$TABLE*0-1","table_id":0,"priority":0,"cookie_mask":"0","idle-timeout":0,"cookie":"10","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"output-action":{"max-length":65535,"output-node-connector":"CONTROLLER"}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":0,"nanosecond":0}},"flags":"SEND_FLOW_REM"}]}]}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:47.418100" elapsed="0.003494"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:47.417881" elapsed="0.003762"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:47.417862" elapsed="0.003816"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:47.425159" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:47.422066" elapsed="0.003174"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:47.421756" elapsed="0.003533"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:47.421733" elapsed="0.003592"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:52:47.426108" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:47.425552" elapsed="0.000593"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:47.426519" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:47.426267" elapsed="0.000309"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:47.427060" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:47.426761" elapsed="0.000325"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:47.426600" elapsed="0.000521"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:47.426240" elapsed="0.000902"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:52:47.427678" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:47.427319" elapsed="0.000386"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:47.428005" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:47.427773" elapsed="0.000288"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:47.428555" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:47.428259" elapsed="0.000322"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:47.428084" elapsed="0.000532"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:47.427755" elapsed="0.000882"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:52:47.428785" elapsed="0.000339"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:52:47.429623" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:47.429336" elapsed="0.000314"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:52:47.429802" elapsed="0.002219"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:52:47.417410" elapsed="0.014673"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-08T00:52:47.432276" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-08T00:52:47.432152" elapsed="0.000185"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:47.432134" elapsed="0.000227"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:47.432506" elapsed="0.000021"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-08T00:52:47.432575" elapsed="0.000014"/>
</return>
<msg time="2026-04-08T00:52:47.435129" level="INFO">${response_text} = {"flow-node-inventory:table":[{"id":0,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"3","active-flows":1,"packets-matched":"0"},"flow":[{"id":"#UF$TABLE*0-1","table_i...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${access}</arg>
<arg>session=${session}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:52:47.398339" elapsed="0.036838"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:52:47.435265" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:52:47.435421" level="INFO">${data} = {"flow-node-inventory:table":[{"id":0,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"3","active-flows":1,"packets-matched":"0"},"flow":[{"id":"#UF$TABLE*0-1","table_i...</msg>
<var>${data}</var>
<arg>uri=${uri}</arg>
<arg>member_index=${index}</arg>
<doc>Send a GET with the supplied uri to member ${member_index}.</doc>
<status status="PASS" start="2026-04-08T00:52:47.396528" elapsed="0.038919"/>
</kw>
<kw name="Check Item Occurrence" owner="Utils">
<for flavor="IN">
<iter>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T00:52:47.436633" level="INFO">Item found from container 0 times.</msg>
<msg time="2026-04-08T00:52:47.436741" level="FAIL">'{"flow-node-inventory:table":[{"id":0,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"3","active-flows":1,"packets-matched":"0"},"flow":[{"id":"#UF$TABLE*0-1","table_id":0,"priority":0,"cookie_mask":"0","idle-timeout":0,"cookie":"10","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"output-action":{"max-length":65535,"output-node-connector":"CONTROLLER"}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":0,"nanosecond":0}},"flags":"SEND_FLOW_REM"}]}]}' contains '10.0.1.0/24' 0 times, not 1 time.</msg>
<arg>${string}</arg>
<arg>${item}</arg>
<arg>${dictionary_item_occurrence}[${item}]</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="FAIL" start="2026-04-08T00:52:47.436255" elapsed="0.000563">'{"flow-node-inventory:table":[{"id":0,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"3","active-flows":1,"packets-matched":"0"},"flow":[{"id":"#UF$TABLE*0-1","table_id":0,"priority":0,"cookie_mask":"0","idle-timeout":0,"cookie":"10","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"output-action":{"max-length":65535,"output-node-connector":"CONTROLLER"}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":0,"nanosecond":0}},"flags":"SEND_FLOW_REM"}]}]}' contains '10.0.1.0/24' 0 times, not 1 time.</status>
</kw>
<var name="${item}">10.0.1.0/24</var>
<status status="FAIL" start="2026-04-08T00:52:47.436082" elapsed="0.000813">'{"flow-node-inventory:table":[{"id":0,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"3","active-flows":1,"packets-matched":"0"},"flow":[{"id":"#UF$TABLE*0-1","table_id":0,"priority":0,"cookie_mask":"0","idle-timeout":0,"cookie":"10","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"output-action":{"max-length":65535,"output-node-connector":"CONTROLLER"}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":0,"nanosecond":0}},"flags":"SEND_FLOW_REM"}]}]}' contains '10.0.1.0/24' 0 times, not 1 time.</status>
</iter>
<var>${item}</var>
<value>@{dictionary_item_occurrence}</value>
<status status="FAIL" start="2026-04-08T00:52:47.435952" elapsed="0.001003">'{"flow-node-inventory:table":[{"id":0,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"3","active-flows":1,"packets-matched":"0"},"flow":[{"id":"#UF$TABLE*0-1","table_id":0,"priority":0,"cookie_mask":"0","idle-timeout":0,"cookie":"10","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"output-action":{"max-length":65535,"output-node-connector":"CONTROLLER"}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":0,"nanosecond":0}},"flags":"SEND_FLOW_REM"}]}]}' contains '10.0.1.0/24' 0 times, not 1 time.</status>
</for>
<arg>${data}</arg>
<arg>${dictionary}</arg>
<doc>Check string for occurrences of items expressed in a list of dictionaries {item=occurrences}. 0 occurences means item is not present.</doc>
<status status="FAIL" start="2026-04-08T00:52:47.435674" elapsed="0.001382">'{"flow-node-inventory:table":[{"id":0,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"3","active-flows":1,"packets-matched":"0"},"flow":[{"id":"#UF$TABLE*0-1","table_id":0,"priority":0,"cookie_mask":"0","idle-timeout":0,"cookie":"10","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"output-action":{"max-length":65535,"output-node-connector":"CONTROLLER"}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":0,"nanosecond":0}},"flags":"SEND_FLOW_REM"}]}]}' contains '10.0.1.0/24' 0 times, not 1 time.</status>
</kw>
<var name="${index}">1</var>
<status status="FAIL" start="2026-04-08T00:52:47.392400" elapsed="0.044720">'{"flow-node-inventory:table":[{"id":0,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"3","active-flows":1,"packets-matched":"0"},"flow":[{"id":"#UF$TABLE*0-1","table_id":0,"priority":0,"cookie_mask":"0","idle-timeout":0,"cookie":"10","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"output-action":{"max-length":65535,"output-node-connector":"CONTROLLER"}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":0,"nanosecond":0}},"flags":"SEND_FLOW_REM"}]}]}' contains '10.0.1.0/24' 0 times, not 1 time.</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-04-08T00:52:47.392253" elapsed="0.044939">'{"flow-node-inventory:table":[{"id":0,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"3","active-flows":1,"packets-matched":"0"},"flow":[{"id":"#UF$TABLE*0-1","table_id":0,"priority":0,"cookie_mask":"0","idle-timeout":0,"cookie":"10","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"output-action":{"max-length":65535,"output-node-connector":"CONTROLLER"}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":0,"nanosecond":0}},"flags":"SEND_FLOW_REM"}]}]}' contains '10.0.1.0/24' 0 times, not 1 time.</status>
</for>
<arg>uri=${operational_table_0}</arg>
<arg>dictionary=${dictionary}</arg>
<arg>member_index_list=${controller_index_list}</arg>
<doc>Send a GET with the supplied uri to all or some members defined in ${member_index_list}.
Then check received for occurrences of items expressed in a dictionary {'10.0.1.0/24': '1', '"output-node-connector":"1"': '1'}.</doc>
<status status="FAIL" start="2026-04-08T00:52:47.389985" elapsed="0.047323">'{"flow-node-inventory:table":[{"id":0,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"3","active-flows":1,"packets-matched":"0"},"flow":[{"id":"#UF$TABLE*0-1","table_id":0,"priority":0,"cookie_mask":"0","idle-timeout":0,"cookie":"10","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"output-action":{"max-length":65535,"output-node-connector":"CONTROLLER"}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":0,"nanosecond":0}},"flags":"SEND_FLOW_REM"}]}]}' contains '10.0.1.0/24' 0 times, not 1 time.</status>
</kw>
<kw name="Check_Item_Occurrence_Member_List_Or_All" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:52:48.448851" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:52:48.448082" elapsed="0.000813"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:52:48.449763" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:52:48.449228" elapsed="0.000573"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:52:48.449868" elapsed="0.000055"/>
</return>
<msg time="2026-04-08T00:52:48.450109" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:52:48.447501" elapsed="0.002642"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_From_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:48.456086" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:48.455771" elapsed="0.000343"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:52:48.456179" elapsed="0.000031"/>
</return>
<msg time="2026-04-08T00:52:48.456334" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:52:48.455339" elapsed="0.001019"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:48.463093" level="INFO">/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:48.462819" elapsed="0.000322"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:48.463564" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:48.463315" elapsed="0.000292"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:52:48.472706" level="INFO">GET Request : url=http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01jewze00gqgu8yuon50tdwq65226.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:52:48.472957" level="INFO">GET Response : url=http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '596'} 
 body={"flow-node-inventory:table":[{"id":0,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"3","active-flows":1,"packets-matched":"0"},"flow":[{"id":"#UF$TABLE*0-1","table_id":0,"priority":0,"cookie_mask":"0","idle-timeout":0,"cookie":"10","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"output-action":{"max-length":65535,"output-node-connector":"CONTROLLER"}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":0,"nanosecond":0}},"flags":"SEND_FLOW_REM"}]}]} 
 </msg>
<msg time="2026-04-08T00:52:48.473058" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:52:48.465725" elapsed="0.007366"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:48.463683" elapsed="0.009454"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:48.473375" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:48.473195" elapsed="0.000333"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:48.463663" elapsed="0.009895"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:48.479841" level="INFO">{"flow-node-inventory:table":[{"id":0,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"3","active-flows":1,"packets-matched":"0"},"flow":[{"id":"#UF$TABLE*0-1","table_id":0,"priority":0,"cookie_mask":"0","idle-timeout":0,"cookie":"10","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"output-action":{"max-length":65535,"output-node-connector":"CONTROLLER"}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":0,"nanosecond":0}},"flags":"SEND_FLOW_REM"}]}]}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:48.475185" elapsed="0.004750"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:48.474809" elapsed="0.005186"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:48.474773" elapsed="0.005268"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:48.483723" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:48.480715" elapsed="0.003055"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:48.480144" elapsed="0.003661"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:48.480114" elapsed="0.003715"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:52:48.484441" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:48.484014" elapsed="0.000455"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:48.484777" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:48.484539" elapsed="0.000294"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:48.485356" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:48.485018" elapsed="0.000368"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:48.484857" elapsed="0.000637"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:48.484521" elapsed="0.001001"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:52:48.486067" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:48.485686" elapsed="0.000409"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:48.486416" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:48.486180" elapsed="0.000293"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:48.487177" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:48.486713" elapsed="0.000493"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:48.486497" elapsed="0.000745"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:48.486147" elapsed="0.001116"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:52:48.487416" elapsed="0.000347"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:52:48.488235" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:48.487925" elapsed="0.000336"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:52:48.488414" elapsed="0.002327"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:52:48.474018" elapsed="0.016793"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-08T00:52:48.491000" elapsed="0.000029"/>
</return>
<status status="PASS" start="2026-04-08T00:52:48.490890" elapsed="0.000173"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:48.490871" elapsed="0.000216"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:48.491252" elapsed="0.000023"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-08T00:52:48.491323" elapsed="0.000014"/>
</return>
<msg time="2026-04-08T00:52:48.493632" level="INFO">${response_text} = {"flow-node-inventory:table":[{"id":0,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"3","active-flows":1,"packets-matched":"0"},"flow":[{"id":"#UF$TABLE*0-1","table_i...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${access}</arg>
<arg>session=${session}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:52:48.456702" elapsed="0.036960"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:52:48.493714" elapsed="0.000027"/>
</return>
<msg time="2026-04-08T00:52:48.493889" level="INFO">${data} = {"flow-node-inventory:table":[{"id":0,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"3","active-flows":1,"packets-matched":"0"},"flow":[{"id":"#UF$TABLE*0-1","table_i...</msg>
<var>${data}</var>
<arg>uri=${uri}</arg>
<arg>member_index=${index}</arg>
<doc>Send a GET with the supplied uri to member ${member_index}.</doc>
<status status="PASS" start="2026-04-08T00:52:48.454803" elapsed="0.039118"/>
</kw>
<kw name="Check Item Occurrence" owner="Utils">
<for flavor="IN">
<iter>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T00:52:48.495129" level="INFO">Item found from container 0 times.</msg>
<msg time="2026-04-08T00:52:48.495265" level="FAIL">'{"flow-node-inventory:table":[{"id":0,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"3","active-flows":1,"packets-matched":"0"},"flow":[{"id":"#UF$TABLE*0-1","table_id":0,"priority":0,"cookie_mask":"0","idle-timeout":0,"cookie":"10","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"output-action":{"max-length":65535,"output-node-connector":"CONTROLLER"}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":0,"nanosecond":0}},"flags":"SEND_FLOW_REM"}]}]}' contains '10.0.1.0/24' 0 times, not 1 time.</msg>
<arg>${string}</arg>
<arg>${item}</arg>
<arg>${dictionary_item_occurrence}[${item}]</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="FAIL" start="2026-04-08T00:52:48.494751" elapsed="0.000594">'{"flow-node-inventory:table":[{"id":0,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"3","active-flows":1,"packets-matched":"0"},"flow":[{"id":"#UF$TABLE*0-1","table_id":0,"priority":0,"cookie_mask":"0","idle-timeout":0,"cookie":"10","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"output-action":{"max-length":65535,"output-node-connector":"CONTROLLER"}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":0,"nanosecond":0}},"flags":"SEND_FLOW_REM"}]}]}' contains '10.0.1.0/24' 0 times, not 1 time.</status>
</kw>
<var name="${item}">10.0.1.0/24</var>
<status status="FAIL" start="2026-04-08T00:52:48.494596" elapsed="0.000831">'{"flow-node-inventory:table":[{"id":0,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"3","active-flows":1,"packets-matched":"0"},"flow":[{"id":"#UF$TABLE*0-1","table_id":0,"priority":0,"cookie_mask":"0","idle-timeout":0,"cookie":"10","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"output-action":{"max-length":65535,"output-node-connector":"CONTROLLER"}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":0,"nanosecond":0}},"flags":"SEND_FLOW_REM"}]}]}' contains '10.0.1.0/24' 0 times, not 1 time.</status>
</iter>
<var>${item}</var>
<value>@{dictionary_item_occurrence}</value>
<status status="FAIL" start="2026-04-08T00:52:48.494460" elapsed="0.001028">'{"flow-node-inventory:table":[{"id":0,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"3","active-flows":1,"packets-matched":"0"},"flow":[{"id":"#UF$TABLE*0-1","table_id":0,"priority":0,"cookie_mask":"0","idle-timeout":0,"cookie":"10","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"output-action":{"max-length":65535,"output-node-connector":"CONTROLLER"}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":0,"nanosecond":0}},"flags":"SEND_FLOW_REM"}]}]}' contains '10.0.1.0/24' 0 times, not 1 time.</status>
</for>
<arg>${data}</arg>
<arg>${dictionary}</arg>
<doc>Check string for occurrences of items expressed in a list of dictionaries {item=occurrences}. 0 occurences means item is not present.</doc>
<status status="FAIL" start="2026-04-08T00:52:48.494174" elapsed="0.001454">'{"flow-node-inventory:table":[{"id":0,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"3","active-flows":1,"packets-matched":"0"},"flow":[{"id":"#UF$TABLE*0-1","table_id":0,"priority":0,"cookie_mask":"0","idle-timeout":0,"cookie":"10","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"output-action":{"max-length":65535,"output-node-connector":"CONTROLLER"}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":0,"nanosecond":0}},"flags":"SEND_FLOW_REM"}]}]}' contains '10.0.1.0/24' 0 times, not 1 time.</status>
</kw>
<var name="${index}">1</var>
<status status="FAIL" start="2026-04-08T00:52:48.450483" elapsed="0.045210">'{"flow-node-inventory:table":[{"id":0,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"3","active-flows":1,"packets-matched":"0"},"flow":[{"id":"#UF$TABLE*0-1","table_id":0,"priority":0,"cookie_mask":"0","idle-timeout":0,"cookie":"10","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"output-action":{"max-length":65535,"output-node-connector":"CONTROLLER"}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":0,"nanosecond":0}},"flags":"SEND_FLOW_REM"}]}]}' contains '10.0.1.0/24' 0 times, not 1 time.</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-04-08T00:52:48.450246" elapsed="0.045503">'{"flow-node-inventory:table":[{"id":0,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"3","active-flows":1,"packets-matched":"0"},"flow":[{"id":"#UF$TABLE*0-1","table_id":0,"priority":0,"cookie_mask":"0","idle-timeout":0,"cookie":"10","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"output-action":{"max-length":65535,"output-node-connector":"CONTROLLER"}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":0,"nanosecond":0}},"flags":"SEND_FLOW_REM"}]}]}' contains '10.0.1.0/24' 0 times, not 1 time.</status>
</for>
<arg>uri=${operational_table_0}</arg>
<arg>dictionary=${dictionary}</arg>
<arg>member_index_list=${controller_index_list}</arg>
<doc>Send a GET with the supplied uri to all or some members defined in ${member_index_list}.
Then check received for occurrences of items expressed in a dictionary {'10.0.1.0/24': '1', '"output-node-connector":"1"': '1'}.</doc>
<status status="FAIL" start="2026-04-08T00:52:48.446523" elapsed="0.049318">'{"flow-node-inventory:table":[{"id":0,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"3","active-flows":1,"packets-matched":"0"},"flow":[{"id":"#UF$TABLE*0-1","table_id":0,"priority":0,"cookie_mask":"0","idle-timeout":0,"cookie":"10","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"output-action":{"max-length":65535,"output-node-connector":"CONTROLLER"}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":0,"nanosecond":0}},"flags":"SEND_FLOW_REM"}]}]}' contains '10.0.1.0/24' 0 times, not 1 time.</status>
</kw>
<kw name="Check_Item_Occurrence_Member_List_Or_All" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:52:49.506620" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:52:49.505960" elapsed="0.000705"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:52:49.507358" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:52:49.506902" elapsed="0.000491"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:52:49.507460" elapsed="0.000053"/>
</return>
<msg time="2026-04-08T00:52:49.507709" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:52:49.505396" elapsed="0.002356"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_From_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:49.514328" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:49.513978" elapsed="0.000378"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:52:49.514402" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:52:49.514551" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:52:49.513617" elapsed="0.000967"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:49.521014" level="INFO">/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:49.520730" elapsed="0.000331"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:49.521471" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:49.521227" elapsed="0.000287"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:52:49.530545" level="INFO">GET Request : url=http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01jewze00gqgu8yuon50tdwq65226.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:52:49.532044" level="INFO">GET Response : url=http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '1089'} 
 body={"flow-node-inventory:table":[{"id":0,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"10","active-flows":2,"packets-matched":"7"},"flow":[{"id":"1","table_id":0,"priority":2,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.1.0/24"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":1,"nanosecond":859000000}},"flags":""},{"id":"#UF$TABLE*0-1","table_id":0,"priority":0,"cookie_mask":"0","idle-timeout":0,"cookie":"10","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"output-action":{"max-length":65535,"output-node-connector":"CONTROLLER"}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"7","byte-count":"586","duration":{"second":3,"nanosecond":8000000}},"flags":"SEND_FLOW_REM"}]}]} 
 </msg>
<msg time="2026-04-08T00:52:49.532229" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:52:49.523549" elapsed="0.008707"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:49.521589" elapsed="0.010711"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:49.532483" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:49.532328" elapsed="0.000219"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:49.521568" elapsed="0.011001"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:49.536058" level="INFO">{"flow-node-inventory:table":[{"id":0,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"10","active-flows":2,"packets-matched":"7"},"flow":[{"id":"1","table_id":0,"priority":2,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.1.0/24"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":1,"nanosecond":859000000}},"flags":""},{"id":"#UF$TABLE*0-1","table_id":0,"priority":0,"cookie_mask":"0","idle-timeout":0,"cookie":"10","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"output-action":{"max-length":65535,"output-node-connector":"CONTROLLER"}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"7","byte-count":"586","duration":{"second":3,"nanosecond":8000000}},"flags":"SEND_FLOW_REM"}]}]}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:49.533633" elapsed="0.002479"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:49.533412" elapsed="0.002734"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:49.533393" elapsed="0.002793"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:49.538818" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:49.536464" elapsed="0.002401"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:49.536243" elapsed="0.002656"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:49.536226" elapsed="0.002698"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:52:49.539509" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:49.539099" elapsed="0.000437"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:49.539840" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:49.539606" elapsed="0.000291"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:49.540400" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:49.540079" elapsed="0.000346"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:49.539921" elapsed="0.000540"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:49.539588" elapsed="0.000894"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:52:49.541028" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:49.540637" elapsed="0.000418"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:49.541371" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:49.541123" elapsed="0.000304"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:49.541904" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:49.541613" elapsed="0.000316"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:49.541450" elapsed="0.000514"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:49.541105" elapsed="0.000880"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:52:49.542131" elapsed="0.000362"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:52:49.542947" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:49.542656" elapsed="0.000317"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:52:49.543123" elapsed="0.002463"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:52:49.532956" elapsed="0.012693"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-08T00:52:49.545821" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-08T00:52:49.545718" elapsed="0.000161"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:49.545699" elapsed="0.000204"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:49.546050" elapsed="0.000021"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-08T00:52:49.546119" elapsed="0.000014"/>
</return>
<msg time="2026-04-08T00:52:49.548485" level="INFO">${response_text} = {"flow-node-inventory:table":[{"id":0,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"10","active-flows":2,"packets-matched":"7"},"flow":[{"id":"1","table_id":0,"prior...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${access}</arg>
<arg>session=${session}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:52:49.514951" elapsed="0.033563"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:52:49.548565" elapsed="0.000027"/>
</return>
<msg time="2026-04-08T00:52:49.548713" level="INFO">${data} = {"flow-node-inventory:table":[{"id":0,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"10","active-flows":2,"packets-matched":"7"},"flow":[{"id":"1","table_id":0,"prior...</msg>
<var>${data}</var>
<arg>uri=${uri}</arg>
<arg>member_index=${index}</arg>
<doc>Send a GET with the supplied uri to member ${member_index}.</doc>
<status status="PASS" start="2026-04-08T00:52:49.512910" elapsed="0.035828"/>
</kw>
<kw name="Check Item Occurrence" owner="Utils">
<for flavor="IN">
<iter>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T00:52:49.549959" level="INFO">Item found from container 1 time.</msg>
<arg>${string}</arg>
<arg>${item}</arg>
<arg>${dictionary_item_occurrence}[${item}]</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="PASS" start="2026-04-08T00:52:49.549583" elapsed="0.000446"/>
</kw>
<var name="${item}">10.0.1.0/24</var>
<status status="PASS" start="2026-04-08T00:52:49.549428" elapsed="0.000640"/>
</iter>
<iter>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T00:52:49.550692" level="INFO">Item found from container 1 time.</msg>
<arg>${string}</arg>
<arg>${item}</arg>
<arg>${dictionary_item_occurrence}[${item}]</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="PASS" start="2026-04-08T00:52:49.550317" elapsed="0.000441"/>
</kw>
<var name="${item}">"output-node-connector":"1"</var>
<status status="PASS" start="2026-04-08T00:52:49.550148" elapsed="0.000649"/>
</iter>
<var>${item}</var>
<value>@{dictionary_item_occurrence}</value>
<status status="PASS" start="2026-04-08T00:52:49.549287" elapsed="0.001539"/>
</for>
<arg>${data}</arg>
<arg>${dictionary}</arg>
<doc>Check string for occurrences of items expressed in a list of dictionaries {item=occurrences}. 0 occurences means item is not present.</doc>
<status status="PASS" start="2026-04-08T00:52:49.548991" elapsed="0.001889"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T00:52:49.508032" elapsed="0.042882"/>
</iter>
<iter>
<kw name="Get_From_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:49.556390" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:49.556069" elapsed="0.000347"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:52:49.556462" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:52:49.556608" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:52:49.555636" elapsed="0.000996"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:49.563136" level="INFO">/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:49.562889" elapsed="0.000309"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:49.563593" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:49.563352" elapsed="0.000285"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:52:49.575967" level="INFO">GET Request : url=http://10.30.170.131:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01eq5fxmndxspk37g8qgkyja672.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:52:49.576216" level="INFO">GET Response : url=http://10.30.170.131:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '1089'} 
 body={"flow-node-inventory:table":[{"id":0,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"10","active-flows":2,"packets-matched":"7"},"flow":[{"id":"1","table_id":0,"priority":2,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.1.0/24"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":1,"nanosecond":859000000}},"flags":""},{"id":"#UF$TABLE*0-1","table_id":0,"priority":0,"cookie_mask":"0","idle-timeout":0,"cookie":"10","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"output-action":{"max-length":65535,"output-node-connector":"CONTROLLER"}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"7","byte-count":"586","duration":{"second":3,"nanosecond":8000000}},"flags":"SEND_FLOW_REM"}]}]} 
 </msg>
<msg time="2026-04-08T00:52:49.576322" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:52:49.565685" elapsed="0.010663"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:49.563706" elapsed="0.012691"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:49.576574" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:49.576423" elapsed="0.000215"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:49.563687" elapsed="0.012973"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:49.580209" level="INFO">{"flow-node-inventory:table":[{"id":0,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"10","active-flows":2,"packets-matched":"7"},"flow":[{"id":"1","table_id":0,"priority":2,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.1.0/24"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":1,"nanosecond":859000000}},"flags":""},{"id":"#UF$TABLE*0-1","table_id":0,"priority":0,"cookie_mask":"0","idle-timeout":0,"cookie":"10","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"output-action":{"max-length":65535,"output-node-connector":"CONTROLLER"}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"7","byte-count":"586","duration":{"second":3,"nanosecond":8000000}},"flags":"SEND_FLOW_REM"}]}]}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:49.577764" elapsed="0.002554"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:49.577539" elapsed="0.002814"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:49.577520" elapsed="0.002857"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:49.582870" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:49.580656" elapsed="0.002261"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:49.580434" elapsed="0.002517"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:49.580417" elapsed="0.002558"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:52:49.583538" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:49.583140" elapsed="0.000426"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:49.583872" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:49.583636" elapsed="0.000293"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:49.584428" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:49.584112" elapsed="0.000342"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:49.583952" elapsed="0.000538"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:49.583618" elapsed="0.000893"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:52:49.585027" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:49.584670" elapsed="0.000420"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:49.585418" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:49.585181" elapsed="0.000294"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:49.585947" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:49.585656" elapsed="0.000317"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:49.585498" elapsed="0.000510"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:49.585148" elapsed="0.000881"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:52:49.586195" elapsed="0.000344"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:52:49.586970" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:49.586702" elapsed="0.000294"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:52:49.587146" elapsed="0.002253"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:52:49.577049" elapsed="0.012412"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-08T00:52:49.589633" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-08T00:52:49.589530" elapsed="0.000163"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:49.589512" elapsed="0.000205"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:49.589861" elapsed="0.000021"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-08T00:52:49.589929" elapsed="0.000015"/>
</return>
<msg time="2026-04-08T00:52:49.592271" level="INFO">${response_text} = {"flow-node-inventory:table":[{"id":0,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"10","active-flows":2,"packets-matched":"7"},"flow":[{"id":"1","table_id":0,"prior...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${access}</arg>
<arg>session=${session}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:52:49.556988" elapsed="0.035313"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:52:49.592351" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:52:49.592500" level="INFO">${data} = {"flow-node-inventory:table":[{"id":0,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"10","active-flows":2,"packets-matched":"7"},"flow":[{"id":"1","table_id":0,"prior...</msg>
<var>${data}</var>
<arg>uri=${uri}</arg>
<arg>member_index=${index}</arg>
<doc>Send a GET with the supplied uri to member ${member_index}.</doc>
<status status="PASS" start="2026-04-08T00:52:49.555118" elapsed="0.037408"/>
</kw>
<kw name="Check Item Occurrence" owner="Utils">
<for flavor="IN">
<iter>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T00:52:49.593732" level="INFO">Item found from container 1 time.</msg>
<arg>${string}</arg>
<arg>${item}</arg>
<arg>${dictionary_item_occurrence}[${item}]</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="PASS" start="2026-04-08T00:52:49.593365" elapsed="0.000436"/>
</kw>
<var name="${item}">10.0.1.0/24</var>
<status status="PASS" start="2026-04-08T00:52:49.593209" elapsed="0.000631"/>
</iter>
<iter>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T00:52:49.594450" level="INFO">Item found from container 1 time.</msg>
<arg>${string}</arg>
<arg>${item}</arg>
<arg>${dictionary_item_occurrence}[${item}]</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="PASS" start="2026-04-08T00:52:49.594071" elapsed="0.000445"/>
</kw>
<var name="${item}">"output-node-connector":"1"</var>
<status status="PASS" start="2026-04-08T00:52:49.593919" elapsed="0.000670"/>
</iter>
<var>${item}</var>
<value>@{dictionary_item_occurrence}</value>
<status status="PASS" start="2026-04-08T00:52:49.593026" elapsed="0.001595"/>
</for>
<arg>${data}</arg>
<arg>${dictionary}</arg>
<doc>Check string for occurrences of items expressed in a list of dictionaries {item=occurrences}. 0 occurences means item is not present.</doc>
<status status="PASS" start="2026-04-08T00:52:49.592751" elapsed="0.001925"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T00:52:49.551000" elapsed="0.043710"/>
</iter>
<iter>
<kw name="Get_From_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:49.600218" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:49.599902" elapsed="0.000344"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:52:49.600291" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:52:49.600439" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:52:49.599548" elapsed="0.000916"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:49.606777" level="INFO">/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:49.606531" elapsed="0.000293"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:49.607232" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:49.606974" elapsed="0.000303"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:52:49.618822" level="INFO">GET Request : url=http://10.30.171.110:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0336bvzrfnrhc3cqywxyctca52.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:52:49.619062" level="INFO">GET Response : url=http://10.30.171.110:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '1089'} 
 body={"flow-node-inventory:table":[{"id":0,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"10","active-flows":2,"packets-matched":"7"},"flow":[{"id":"1","table_id":0,"priority":2,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.1.0/24"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":1,"nanosecond":859000000}},"flags":""},{"id":"#UF$TABLE*0-1","table_id":0,"priority":0,"cookie_mask":"0","idle-timeout":0,"cookie":"10","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"output-action":{"max-length":65535,"output-node-connector":"CONTROLLER"}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"7","byte-count":"586","duration":{"second":3,"nanosecond":8000000}},"flags":"SEND_FLOW_REM"}]}]} 
 </msg>
<msg time="2026-04-08T00:52:49.619198" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:52:49.609347" elapsed="0.009879"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:49.607343" elapsed="0.011929"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:49.619465" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:49.619300" elapsed="0.000228"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:49.607325" elapsed="0.012224"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:49.623070" level="INFO">{"flow-node-inventory:table":[{"id":0,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"10","active-flows":2,"packets-matched":"7"},"flow":[{"id":"1","table_id":0,"priority":2,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.1.0/24"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":1,"nanosecond":859000000}},"flags":""},{"id":"#UF$TABLE*0-1","table_id":0,"priority":0,"cookie_mask":"0","idle-timeout":0,"cookie":"10","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"output-action":{"max-length":65535,"output-node-connector":"CONTROLLER"}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"7","byte-count":"586","duration":{"second":3,"nanosecond":8000000}},"flags":"SEND_FLOW_REM"}]}]}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:49.620603" elapsed="0.002522"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:49.620374" elapsed="0.002810"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:49.620355" elapsed="0.002856"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:49.625711" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:49.623488" elapsed="0.002269"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:49.623267" elapsed="0.002524"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:49.623250" elapsed="0.002565"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:52:49.626400" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:49.625987" elapsed="0.000439"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:49.626732" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:49.626497" elapsed="0.000346"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:49.627402" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:49.627036" elapsed="0.000393"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:49.626869" elapsed="0.000596"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:49.626479" elapsed="0.001008"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:52:49.628015" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:49.627653" elapsed="0.000388"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:49.628363" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:49.628111" elapsed="0.000312"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:49.628900" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:49.628606" elapsed="0.000319"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:49.628449" elapsed="0.000511"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:49.628092" elapsed="0.000890"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:52:49.629132" elapsed="0.000378"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:52:49.629957" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:52:49.629674" elapsed="0.000308"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:52:49.630135" elapsed="0.002401"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:52:49.619910" elapsed="0.012691"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-08T00:52:49.632779" elapsed="0.000032"/>
</return>
<status status="PASS" start="2026-04-08T00:52:49.632670" elapsed="0.000175"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:49.632652" elapsed="0.000219"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:49.633019" elapsed="0.000022"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-08T00:52:49.633088" elapsed="0.000014"/>
</return>
<msg time="2026-04-08T00:52:49.635452" level="INFO">${response_text} = {"flow-node-inventory:table":[{"id":0,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"10","active-flows":2,"packets-matched":"7"},"flow":[{"id":"1","table_id":0,"prior...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${access}</arg>
<arg>session=${session}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:52:49.600792" elapsed="0.034688"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:52:49.635530" elapsed="0.000027"/>
</return>
<msg time="2026-04-08T00:52:49.635680" level="INFO">${data} = {"flow-node-inventory:table":[{"id":0,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"10","active-flows":2,"packets-matched":"7"},"flow":[{"id":"1","table_id":0,"prior...</msg>
<var>${data}</var>
<arg>uri=${uri}</arg>
<arg>member_index=${index}</arg>
<doc>Send a GET with the supplied uri to member ${member_index}.</doc>
<status status="PASS" start="2026-04-08T00:52:49.599034" elapsed="0.036671"/>
</kw>
<kw name="Check Item Occurrence" owner="Utils">
<for flavor="IN">
<iter>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T00:52:49.636928" level="INFO">Item found from container 1 time.</msg>
<arg>${string}</arg>
<arg>${item}</arg>
<arg>${dictionary_item_occurrence}[${item}]</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="PASS" start="2026-04-08T00:52:49.636549" elapsed="0.000446"/>
</kw>
<var name="${item}">10.0.1.0/24</var>
<status status="PASS" start="2026-04-08T00:52:49.636389" elapsed="0.000646"/>
</iter>
<iter>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T00:52:49.637659" level="INFO">Item found from container 1 time.</msg>
<arg>${string}</arg>
<arg>${item}</arg>
<arg>${dictionary_item_occurrence}[${item}]</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="PASS" start="2026-04-08T00:52:49.637299" elapsed="0.000424"/>
</kw>
<var name="${item}">"output-node-connector":"1"</var>
<status status="PASS" start="2026-04-08T00:52:49.637116" elapsed="0.000648"/>
</iter>
<var>${item}</var>
<value>@{dictionary_item_occurrence}</value>
<status status="PASS" start="2026-04-08T00:52:49.636244" elapsed="0.001548"/>
</for>
<arg>${data}</arg>
<arg>${dictionary}</arg>
<doc>Check string for occurrences of items expressed in a list of dictionaries {item=occurrences}. 0 occurences means item is not present.</doc>
<status status="PASS" start="2026-04-08T00:52:49.635942" elapsed="0.001904"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T00:52:49.594796" elapsed="0.043084"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-08T00:52:49.507834" elapsed="0.130074"/>
</for>
<arg>uri=${operational_table_0}</arg>
<arg>dictionary=${dictionary}</arg>
<arg>member_index_list=${controller_index_list}</arg>
<doc>Send a GET with the supplied uri to all or some members defined in ${member_index_list}.
Then check received for occurrences of items expressed in a dictionary {'10.0.1.0/24': '1', '"output-node-connector":"1"': '1'}.</doc>
<status status="PASS" start="2026-04-08T00:52:49.504417" elapsed="0.133551"/>
</kw>
<arg>15s</arg>
<arg>1s</arg>
<arg>ClusterManagement.Check_Item_Occurrence_Member_List_Or_All</arg>
<arg>uri=${operational_table_0}</arg>
<arg>dictionary=${dictionary}</arg>
<arg>member_index_list=${controller_index_list}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-08T00:52:47.385367" elapsed="2.252659"/>
</kw>
<arg>${follower_node_2}</arg>
<doc>Add sample flow in ${controller_index} and verify it gets applied in all instances in ${controller_index_list}.</doc>
<status status="PASS" start="2026-04-08T00:52:47.120856" elapsed="2.517280"/>
</kw>
<doc>Add Flow via Follower Node2 and verify it gets applied from all instances.</doc>
<status status="PASS" start="2026-04-08T00:52:46.648776" elapsed="2.989499"/>
</test>
<test id="s1-s3-t5" name="Stop Mininet Connected To Follower Node1 and Exit" line="52">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-08T00:52:49.641510" elapsed="0.000208"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-08T00:52:49.641234" elapsed="0.000538"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:52:49.642770" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:52:49.642663" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:49.642645" elapsed="0.000191"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:52:49.647502" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:52:49.647397" elapsed="0.000149"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:49.647379" elapsed="0.000189"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:52:49.648574" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:52:49.648193" elapsed="0.000408"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:52:49.649056" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:52:49.648758" elapsed="0.000323"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:52:49.649125" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:52:49.649320" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:52:49.647792" elapsed="0.001553"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:52:49.654796" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:52:49.654690" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:49.654671" elapsed="0.000208"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:52:49.656070" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:52:49.655962" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:49.655943" elapsed="0.000194"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:52:49.656608" level="INFO">${karaf_connection_index} = 82</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:52:49.656307" elapsed="0.000328"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:52:49.657023" level="INFO">${current_connection_index} = 104</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:52:49.656793" elapsed="0.000256"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T00:52:49.691742" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T00:52:49.657590" elapsed="0.034261"/>
</kw>
<msg time="2026-04-08T00:52:49.692032" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T00:52:49.692080" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:52:49.657227" elapsed="0.034890"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T00:52:49.772240" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "a "d "e "r "[C "F "o "l "l "o "w "e "r "[C "F "a "i "l "o "v "e "r ". "S "t "o "p "[C "M "i "n "i "n "e "t "[C "C "o "n "n "[78Ce "[A[78Cc
 "t "e "d "[C "T "o "[C "F "o "l "l "o "w "e "r "[C "N "o "d "e "1 "[C "a "n "d "[C "E "x "i "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T00:52:49.692662" elapsed="0.079741"/>
</kw>
<msg time="2026-04-08T00:52:49.772588" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T00:52:49.772637" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:52:49.692316" elapsed="0.080359"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:49.773045" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:49.772775" elapsed="0.000421"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:49.772746" elapsed="0.000480"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:49.773748" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "a "d "e "r "[C "F "o "l "l "o "w "e "r "[C "F "a "i "l "o "v "e "r ". "S "t "o "p "[C "M "i "n "i "n "e "t "[C "C "o "n "n "[78Ce "[A[78Cc
 "t "e "d "[C "T "o "[C "F "o "l "l "o "w "e "r "[C "N "o "d "e "1 "[C "a "n "d "[C "E "x "i "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:49.773378" elapsed="0.000465"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:49.774140" elapsed="0.000038"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:49.773914" elapsed="0.000300"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:49.773894" elapsed="0.000343"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T00:52:49.774275" elapsed="0.000035"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:52:49.776881" elapsed="0.000153"/>
</kw>
<msg time="2026-04-08T00:52:49.777098" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:52:49.775829" elapsed="0.001522"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:49.777706" elapsed="0.000079"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:49.778042" elapsed="0.000075"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:52:49.775153" elapsed="0.003094"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T00:52:49.774585" elapsed="0.003729"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T00:52:49.655645" elapsed="0.122770"/>
</kw>
<msg time="2026-04-08T00:52:49.778510" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:52:49.778561" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:52:49.655032" elapsed="0.123585"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T00:52:49.778814" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-08T00:52:49.778702" elapsed="0.000173"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:49.778681" elapsed="0.000217"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:49.779317" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:49.779646" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T00:52:49.779719" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T00:52:49.654350" elapsed="0.125479"/>
</kw>
<msg time="2026-04-08T00:52:49.779925" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:52:49.779969" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:52:49.649706" elapsed="0.130302"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:49.780353" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:49.780084" elapsed="0.000332"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:49.780067" elapsed="0.000396"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T00:52:49.649566" elapsed="0.130930"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:52:49.786200" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:52:49.786067" elapsed="0.000181"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:49.786048" elapsed="0.000222"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:52:49.787411" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:52:49.787301" elapsed="0.000170"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:49.787283" elapsed="0.000233"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:52:49.787980" level="INFO">${karaf_connection_index} = 84</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:52:49.787675" elapsed="0.000365"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:52:49.788447" level="INFO">${current_connection_index} = 104</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:52:49.788222" elapsed="0.000251"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T00:52:49.829304" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T00:52:49.789026" elapsed="0.040382"/>
</kw>
<msg time="2026-04-08T00:52:49.829593" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T00:52:49.829640" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:52:49.788678" elapsed="0.040999"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T00:52:49.933613" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "a "d "e "r "[C "F "o "l "l "o "w "e "r "[C "F "a "i "l "o "v "e "r ". "S "t "o "p "[C "M "i "n "i "n "e "t "[C "C "o "n "n "[78Ce "[A[78Cc
 "t "e "d "[C "T "o "[C "F "o "l "l "o "w "e "r "[C "N "o "d "e "1 "[C "a "n "d "[C "E "x "i "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T00:52:49.830259" elapsed="0.103558"/>
</kw>
<msg time="2026-04-08T00:52:49.934017" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T00:52:49.934065" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:52:49.829883" elapsed="0.104243"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:49.934560" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:49.934258" elapsed="0.000361"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:49.934227" elapsed="0.000455"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:49.935370" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "a "d "e "r "[C "F "o "l "l "o "w "e "r "[C "F "a "i "l "o "v "e "r ". "S "t "o "p "[C "M "i "n "i "n "e "t "[C "C "o "n "n "[78Ce "[A[78Cc
 "t "e "d "[C "T "o "[C "F "o "l "l "o "w "e "r "[C "N "o "d "e "1 "[C "a "n "d "[C "E "x "i "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:49.934835" elapsed="0.000750"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:49.935954" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:49.935660" elapsed="0.000352"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:49.935641" elapsed="0.000395"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T00:52:49.936072" elapsed="0.000037"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:52:49.938846" elapsed="0.000159"/>
</kw>
<msg time="2026-04-08T00:52:49.939066" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:52:49.937693" elapsed="0.001533"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:49.939502" elapsed="0.000076"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:49.939832" elapsed="0.000161"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:52:49.937034" elapsed="0.003091"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T00:52:49.936416" elapsed="0.003798"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T00:52:49.786978" elapsed="0.153336"/>
</kw>
<msg time="2026-04-08T00:52:49.940890" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:52:49.940935" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:52:49.786423" elapsed="0.154552"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T00:52:49.941203" elapsed="0.000029"/>
</return>
<status status="PASS" start="2026-04-08T00:52:49.941063" elapsed="0.000203"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:49.941037" elapsed="0.000253"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 2,
close the previous connection. In any case create a new connection
to karaf console for 2, set correct prompt set and login to karaf console.
Store connection index for 2 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:49.941694" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:49.942088" elapsed="0.000053"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T00:52:49.942220" elapsed="0.000019"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T00:52:49.785715" elapsed="0.156628"/>
</kw>
<msg time="2026-04-08T00:52:49.942442" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:52:49.942487" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:52:49.780839" elapsed="0.161685"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:49.942863" elapsed="0.000027"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:49.942600" elapsed="0.000325"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:49.942583" elapsed="0.000367"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T00:52:49.780654" elapsed="0.162320"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:52:49.951507" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:52:49.951377" elapsed="0.000187"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:49.951357" elapsed="0.000234"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:52:49.952996" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:52:49.952886" elapsed="0.000156"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:49.952867" elapsed="0.000197"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:52:49.953571" level="INFO">${karaf_connection_index} = 86</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:52:49.953237" elapsed="0.000363"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:52:49.954034" level="INFO">${current_connection_index} = 104</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:52:49.953775" elapsed="0.000287"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T00:52:49.993701" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T00:52:49.954726" elapsed="0.039222"/>
</kw>
<msg time="2026-04-08T00:52:49.994222" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T00:52:49.994313" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:52:49.954306" elapsed="0.040050"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T00:52:50.081622" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "a "d "e "r "[C "F "o "l "l "o "w "e "r "[C "F "a "i "l "o "v "e "r ". "S "t "o "p "[C "M "i "n "i "n "e "t "[C "C "o "n "n "[78Ce "[A[78Cc
 "t "e "d "[C "T "o "[C "F "o "l "l "o "w "e "r "[C "N "o "d "e "1 "[C "a "n "d "[C "E "x "i "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T00:52:49.995092" elapsed="0.086825"/>
</kw>
<msg time="2026-04-08T00:52:50.082314" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T00:52:50.082420" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:52:49.994627" elapsed="0.087876"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:50.083415" elapsed="0.000034"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:50.082835" elapsed="0.000666"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:50.082775" elapsed="0.000765"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:50.084256" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "a "d "e "r "[C "F "o "l "l "o "w "e "r "[C "F "a "i "l "o "v "e "r ". "S "t "o "p "[C "M "i "n "i "n "e "t "[C "C "o "n "n "[78Ce "[A[78Cc
 "t "e "d "[C "T "o "[C "F "o "l "l "o "w "e "r "[C "N "o "d "e "1 "[C "a "n "d "[C "E "x "i "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:50.083754" elapsed="0.000642"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:50.084823" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:50.084498" elapsed="0.000404"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:50.084470" elapsed="0.000468"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T00:52:50.084990" elapsed="0.000052"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:52:50.088965" elapsed="0.000250"/>
</kw>
<msg time="2026-04-08T00:52:50.089305" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:52:50.087374" elapsed="0.002123"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:50.089894" elapsed="0.000111"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:50.090401" elapsed="0.000108"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:52:50.086377" elapsed="0.004327"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T00:52:50.085532" elapsed="0.005267"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T00:52:49.952522" elapsed="0.138425"/>
</kw>
<msg time="2026-04-08T00:52:50.091086" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:52:50.091152" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:52:49.951785" elapsed="0.139447"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T00:52:50.091508" elapsed="0.000038"/>
</return>
<status status="PASS" start="2026-04-08T00:52:50.091349" elapsed="0.000247"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:50.091320" elapsed="0.000311"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 3,
close the previous connection. In any case create a new connection
to karaf console for 3, set correct prompt set and login to karaf console.
Store connection index for 3 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:50.092240" elapsed="0.000038"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:50.092732" elapsed="0.000035"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T00:52:50.092835" elapsed="0.000023"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T00:52:49.950979" elapsed="0.142012"/>
</kw>
<msg time="2026-04-08T00:52:50.093129" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:52:50.093221" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:52:49.943268" elapsed="0.150011"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:50.093758" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:50.093391" elapsed="0.000444"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:50.093366" elapsed="0.000503"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T00:52:49.943105" elapsed="0.150799"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-08T00:52:49.649400" elapsed="0.444551"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-08T00:52:49.647028" elapsed="0.447007"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-08T00:52:49.642374" elapsed="0.451743"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:52:49.641923" elapsed="0.452286"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-08T00:52:49.639161" elapsed="0.455130"/>
</kw>
<kw name="Stop Mininet And Exit" owner="MininetKeywords">
<if>
<branch type="IF" condition="&quot;&quot;&quot;${mininet_conn}&quot;&quot;&quot; != &quot;&quot;">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${mininet_conn}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:52:50.099650" elapsed="0.000142"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:50.099429" elapsed="0.000399"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:50.099409" elapsed="0.000445"/>
</if>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T00:52:50.102059" level="INFO">exit</msg>
<arg>exit</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T00:52:50.099991" elapsed="0.002122"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-08T00:52:50.200892" level="INFO">*** Stopping 1 controllers
c0 
*** Stopping 2 links
..
*** Stopping 1 switches
s1 
*** Stopping 2 hosts
h1 h2 
*** Done
completed in 4.759 seconds
[?2004h[jenkins@releng-11369-169-1-mininet-ovs-217-0 ~]&gt;</msg>
<arg>${TOOLS_SYSTEM_PROMPT}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-08T00:52:50.102287" elapsed="0.098773"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:52:50.201452" elapsed="0.000337"/>
</kw>
<arg>${mininet_conn_id}</arg>
<doc>Stops Mininet and exits session ${mininet_conn}</doc>
<status status="PASS" start="2026-04-08T00:52:50.099140" elapsed="0.102868"/>
</kw>
<kw name="Clean Mininet System" owner="Utils">
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:50.205286" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:50.204977" elapsed="0.000366"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:50.204955" elapsed="0.000413"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:52:50.205663" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T00:52:50.205517" elapsed="0.000277"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:50.206346" level="INFO">Attempting to execute command "sudo mn -c" on remote system "10.30.170.192" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:50.205945" elapsed="0.000449"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:52:50.206931" level="INFO">${conn_id} = 105</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:52:50.206551" elapsed="0.000407"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T00:52:50.207859" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T00:52:50.207935" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T00:52:50.207584" elapsed="0.000375"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:52:50.208115" elapsed="0.000335"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T00:52:50.209296" level="INFO">Logging into '10.30.170.192:22' as 'jenkins'.</msg>
<msg time="2026-04-08T00:52:50.536791" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 00:52:30 UTC 2026

  System load:  0.07               Processes:             112
  Usage of /:   19.5% of 38.58GB   Users logged in:       0
  Memory usage: 5%                 IPv4 address for ens3: 10.30.170.192
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 00:52:45 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-1-mininet-ovs-217-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T00:52:50.208967" elapsed="0.327969"/>
</kw>
<msg time="2026-04-08T00:52:50.537014" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:52:50.208617" elapsed="0.328476"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T00:52:50.207188" elapsed="0.330038"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T00:52:50.537704" level="INFO">Executing command 'sudo mn -c'.</msg>
<msg time="2026-04-08T00:52:51.727563" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-08T00:52:51.727997" level="INFO">${stdout} = </msg>
<msg time="2026-04-08T00:52:51.728100" level="INFO">${stderr} = *** Removing excess controllers/ofprotocols/ofdatapaths/pings/noxes
killall controller ofprotocol ofdatapath ping nox_corelt-nox_core ovs-openflowd ovs-controllerovs-testcontroller udpbwtest mnexec iv...</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T00:52:50.537469" elapsed="1.190732"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:52:51.728718" elapsed="0.000689"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:51.730538" level="INFO">*** Removing excess controllers/ofprotocols/ofdatapaths/pings/noxes
killall controller ofprotocol ofdatapath ping nox_corelt-nox_core ovs-openflowd ovs-controllerovs-testcontroller udpbwtest mnexec ivs ryu-manager 2&gt; /dev/null
killall -9 controller ofprotocol ofdatapath ping nox_corelt-nox_core ovs-openflowd ovs-controllerovs-testcontroller udpbwtest mnexec ivs ryu-manager 2&gt; /dev/null
pkill -9 -f "sudo mnexec"
*** Removing junk from /tmp
rm -f /tmp/vconn* /tmp/vlogs* /tmp/*.out /tmp/*.log
*** Removing old X11 tunnels
*** Removing excess kernel datapaths
ps ax | egrep -o 'dp[0-9]+' | sed 's/dp/nl:/'
***  Removing OVS datapaths
ovs-vsctl --timeout=1 list-br
ovs-vsctl --timeout=1 list-br
*** Removing all links of the pattern foo-ethX
ip link show | egrep -o '([-_.[:alnum:]]+-eth[[:digit:]]+)'
ip link show
*** Killing stale mininet node processes
pkill -9 -f mininet:
*** Shutting down stale tunnels
pkill -9 -f Tunnel=Ethernet
pkill -9 -f .ssh/mn
rm -f ~/.ssh/mn/*
*** Cleanup complete.</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:51.729841" elapsed="0.000819"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:52:51.731241" elapsed="0.000039"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:52:51.730839" elapsed="0.000640"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:51.730785" elapsed="0.000755"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T00:52:51.731911" elapsed="0.000071"/>
</return>
<status status="PASS" start="2026-04-08T00:52:51.731664" elapsed="0.000391"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:51.731629" elapsed="0.000479"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:52:51.732216" elapsed="0.000033"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:52:51.738314" elapsed="0.000773"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:52:51.739475" elapsed="0.000168"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:52:51.739790" elapsed="0.000096"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:52:51.732929" elapsed="0.007009"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T00:52:50.204446" elapsed="1.535585"/>
</kw>
<msg time="2026-04-08T00:52:51.740091" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:52:50.203860" elapsed="1.536286"/>
</kw>
<arg>${system}</arg>
<arg>sudo mn -c</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-08T00:52:50.203359" elapsed="1.536888"/>
</kw>
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:51.742346" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:51.742050" elapsed="0.000352"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:51.742030" elapsed="0.000395"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:52:51.742718" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T00:52:51.742576" elapsed="0.000271"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:51.743430" level="INFO">Attempting to execute command "sudo ps -elf | egrep 'usr/local/bin/mn' | egrep python | awk '{print "sudo kill -9",$4}' | sh" on remote system "10.30.170.192" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:51.743017" elapsed="0.000461"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:52:51.743999" level="INFO">${conn_id} = 107</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:52:51.743632" elapsed="0.000393"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T00:52:51.744932" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T00:52:51.745008" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T00:52:51.744651" elapsed="0.000380"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:52:51.745204" elapsed="0.000315"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T00:52:51.746376" level="INFO">Logging into '10.30.170.192:22' as 'jenkins'.</msg>
<msg time="2026-04-08T00:52:52.119747" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 00:52:30 UTC 2026

  System load:  0.07               Processes:             112
  Usage of /:   19.5% of 38.58GB   Users logged in:       0
  Memory usage: 5%                 IPv4 address for ens3: 10.30.170.192
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 00:52:50 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-1-mininet-ovs-217-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T00:52:51.746043" elapsed="0.373833"/>
</kw>
<msg time="2026-04-08T00:52:52.119948" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:52:51.745684" elapsed="0.374338"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T00:52:51.744257" elapsed="0.375993"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T00:52:52.120669" level="INFO">Executing command 'sudo ps -elf | egrep 'usr/local/bin/mn' | egrep python | awk '{print "sudo kill -9",$4}' | sh'.</msg>
<msg time="2026-04-08T00:52:52.153304" level="INFO">Command exited with return code -1.</msg>
<msg time="2026-04-08T00:52:52.153573" level="INFO">${stdout} = </msg>
<msg time="2026-04-08T00:52:52.153678" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T00:52:52.120456" elapsed="0.033273"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:52:52.154112" elapsed="0.000542"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:52.155708" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:52.155068" elapsed="0.000734"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:52:52.156344" elapsed="0.000039"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:52:52.156006" elapsed="0.000451"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:52.155953" elapsed="0.000554"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T00:52:52.156871" elapsed="0.000060"/>
</return>
<status status="PASS" start="2026-04-08T00:52:52.156627" elapsed="0.000377"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:52.156593" elapsed="0.000465"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:52:52.157142" elapsed="0.000080"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:52:52.161932" elapsed="0.000348"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:52:52.162450" elapsed="0.000150"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:52:52.162746" elapsed="0.000096"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:52:52.157929" elapsed="0.004965"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T00:52:51.741508" elapsed="0.421481"/>
</kw>
<msg time="2026-04-08T00:52:52.163046" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:52:51.740926" elapsed="0.422172"/>
</kw>
<arg>${system}</arg>
<arg>sudo ps -elf | egrep 'usr/local/bin/mn' | egrep python | awk '{print "sudo kill -9",$4}' | sh</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-08T00:52:51.740425" elapsed="0.422782"/>
</kw>
<status status="PASS" start="2026-04-08T00:52:50.202493" elapsed="1.960789"/>
</kw>
<doc>Stop mininet and exit connection.</doc>
<status status="PASS" start="2026-04-08T00:52:49.638652" elapsed="2.524755"/>
</test>
<test id="s1-s3-t6" name="Restart Leader From Cluster Node" line="57">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-08T00:52:52.166779" elapsed="0.000210"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-08T00:52:52.166514" elapsed="0.000530"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:52:52.168114" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:52:52.167991" elapsed="0.000187"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:52.167969" elapsed="0.000234"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:52:52.172998" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:52:52.172888" elapsed="0.000156"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:52.172869" elapsed="0.000197"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:52:52.174101" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:52:52.173712" elapsed="0.000416"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:52:52.174625" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:52:52.174312" elapsed="0.000338"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:52:52.174694" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:52:52.174848" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:52:52.173311" elapsed="0.001561"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:52:52.180544" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:52:52.180433" elapsed="0.000167"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:52.180412" elapsed="0.000216"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:52:52.181822" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:52:52.181712" elapsed="0.000156"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:52.181693" elapsed="0.000197"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:52:52.182379" level="INFO">${karaf_connection_index} = 82</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:52:52.182037" elapsed="0.000370"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:52:52.182805" level="INFO">${current_connection_index} = None</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:52:52.182572" elapsed="0.000260"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T00:52:52.218769" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T00:52:52.183362" elapsed="0.035515"/>
</kw>
<msg time="2026-04-08T00:52:52.219063" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T00:52:52.219113" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:52:52.182996" elapsed="0.036155"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T00:52:52.296916" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "a "d "e "r "[C "F "o "l "l "o "w "e "r "[C "F "a "i "l "o "v "e "r ". "R "e "s "t "a "r "t "[C "L "e "a "d "e "r "[C "F "r "[78Co "[A[78Cm
 "[C "C "l "u "s "t "e "r "[C "N "o "d "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T00:52:52.219712" elapsed="0.077332"/>
</kw>
<msg time="2026-04-08T00:52:52.297235" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T00:52:52.297284" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:52:52.219357" elapsed="0.077963"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:52.297646" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:52.297406" elapsed="0.000297"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:52.297382" elapsed="0.000346"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:52.298202" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "a "d "e "r "[C "F "o "l "l "o "w "e "r "[C "F "a "i "l "o "v "e "r ". "R "e "s "t "a "r "t "[C "L "e "a "d "e "r "[C "F "r "[78Co "[A[78Cm
 "[C "C "l "u "s "t "e "r "[C "N "o "d "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:52.297874" elapsed="0.000410"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:52.298574" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:52.298353" elapsed="0.000276"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:52.298335" elapsed="0.000318"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T00:52:52.298685" elapsed="0.000029"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:52:52.300148" elapsed="0.000814"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:52:52.301258" elapsed="0.000455"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:52:52.301976" elapsed="0.000381"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:52:52.299523" elapsed="0.002935"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T00:52:52.298958" elapsed="0.003564"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T00:52:52.181395" elapsed="0.121229"/>
</kw>
<msg time="2026-04-08T00:52:52.302717" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:52:52.302761" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:52:52.180784" elapsed="0.122014"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T00:52:52.303024" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-08T00:52:52.302914" elapsed="0.000169"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:52.302895" elapsed="0.000213"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:52.303541" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:52.303874" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T00:52:52.303944" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T00:52:52.180069" elapsed="0.123981"/>
</kw>
<msg time="2026-04-08T00:52:52.304143" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:52:52.304204" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:52:52.175335" elapsed="0.128931"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:52.304597" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:52.304346" elapsed="0.000304"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:52.304328" elapsed="0.000345"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T00:52:52.175187" elapsed="0.129510"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:52:52.310059" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:52:52.309951" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:52.309931" elapsed="0.000196"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:52:52.311342" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:52:52.311231" elapsed="0.000157"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:52.311210" elapsed="0.000200"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:52:52.311853" level="INFO">${karaf_connection_index} = 84</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:52:52.311553" elapsed="0.000327"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:52:52.312342" level="INFO">${current_connection_index} = None</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:52:52.312038" elapsed="0.000331"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T00:52:52.352154" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T00:52:52.312870" elapsed="0.039399"/>
</kw>
<msg time="2026-04-08T00:52:52.352470" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T00:52:52.352517" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:52:52.312534" elapsed="0.040020"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T00:52:52.422704" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "a "d "e "r "[C "F "o "l "l "o "w "e "r "[C "F "a "i "l "o "v "e "r ". "R "e "s "t "a "r "t "[C "L "e "a "d "e "r "[C "F "r "[78Co "[A[78Cm
 "[C "C "l "u "s "t "e "r "[C "N "o "d "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T00:52:52.353070" elapsed="0.069759"/>
</kw>
<msg time="2026-04-08T00:52:52.422992" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T00:52:52.423038" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:52:52.352725" elapsed="0.070351"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:52.423404" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:52.423159" elapsed="0.000301"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:52.423135" elapsed="0.000349"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:52.423926" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "a "d "e "r "[C "F "o "l "l "o "w "e "r "[C "F "a "i "l "o "v "e "r ". "R "e "s "t "a "r "t "[C "L "e "a "d "e "r "[C "F "r "[78Co "[A[78Cm
 "[C "C "l "u "s "t "e "r "[C "N "o "d "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:52.423627" elapsed="0.000420"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:52.424364" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:52.424118" elapsed="0.000301"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:52.424099" elapsed="0.000343"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T00:52:52.424475" elapsed="0.000027"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:52:52.425923" elapsed="0.000779"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:52:52.426977" elapsed="0.000451"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:52:52.427684" elapsed="0.000342"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:52:52.425317" elapsed="0.002806"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T00:52:52.424766" elapsed="0.003436"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T00:52:52.310882" elapsed="0.117420"/>
</kw>
<msg time="2026-04-08T00:52:52.428393" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:52:52.428436" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:52:52.310321" elapsed="0.118155"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T00:52:52.428680" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-08T00:52:52.428574" elapsed="0.000165"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:52.428554" elapsed="0.000208"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 2,
close the previous connection. In any case create a new connection
to karaf console for 2, set correct prompt set and login to karaf console.
Store connection index for 2 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:52.429142" elapsed="0.000050"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:52.429499" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T00:52:52.429570" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T00:52:52.309609" elapsed="0.120066"/>
</kw>
<msg time="2026-04-08T00:52:52.429767" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:52:52.429811" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:52:52.304961" elapsed="0.124887"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:52.430188" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:52.429923" elapsed="0.000320"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:52.429905" elapsed="0.000361"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T00:52:52.304822" elapsed="0.125468"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:52:52.435658" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:52:52.435550" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:52.435531" elapsed="0.000194"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:52:52.436894" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:52:52.436786" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:52.436766" elapsed="0.000195"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:52:52.437507" level="INFO">${karaf_connection_index} = 86</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:52:52.437104" elapsed="0.000430"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:52:52.437906" level="INFO">${current_connection_index} = None</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:52:52.437693" elapsed="0.000239"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T00:52:52.475773" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T00:52:52.438444" elapsed="0.037436"/>
</kw>
<msg time="2026-04-08T00:52:52.476087" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T00:52:52.476134" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:52:52.438091" elapsed="0.038103"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T00:52:52.545531" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "a "d "e "r "[C "F "o "l "l "o "w "e "r "[C "F "a "i "l "o "v "e "r ". "R "e "s "t "a "r "t "[C "L "e "a "d "e "r "[C "F "r "[78Co "[A[78Cm
 "[C "C "l "u "s "t "e "r "[C "N "o "d "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T00:52:52.476736" elapsed="0.068923"/>
</kw>
<msg time="2026-04-08T00:52:52.545820" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T00:52:52.545867" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:52:52.476370" elapsed="0.069534"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:52.546234" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:52.545985" elapsed="0.000306"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:52.545963" elapsed="0.000352"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:52.546754" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "a "d "e "r "[C "F "o "l "l "o "w "e "r "[C "F "a "i "l "o "v "e "r ". "R "e "s "t "a "r "t "[C "L "e "a "d "e "r "[C "F "r "[78Co "[A[78Cm
 "[C "C "l "u "s "t "e "r "[C "N "o "d "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:52.546458" elapsed="0.000376"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:52.547117" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:52.546901" elapsed="0.000287"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:52.546883" elapsed="0.000329"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T00:52:52.547245" elapsed="0.000028"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:52:52.548648" elapsed="0.000805"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:52:52.549726" elapsed="0.000448"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:52:52.550436" elapsed="0.000344"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:52:52.548021" elapsed="0.002857"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T00:52:52.547499" elapsed="0.003442"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T00:52:52.436463" elapsed="0.114576"/>
</kw>
<msg time="2026-04-08T00:52:52.551128" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:52:52.551196" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:52:52.435875" elapsed="0.115360"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T00:52:52.551419" elapsed="0.000031"/>
</return>
<status status="PASS" start="2026-04-08T00:52:52.551312" elapsed="0.000179"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:52.551293" elapsed="0.000227"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 3,
close the previous connection. In any case create a new connection
to karaf console for 3, set correct prompt set and login to karaf console.
Store connection index for 3 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:52.551926" elapsed="0.000024"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:52.552273" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T00:52:52.552345" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T00:52:52.435204" elapsed="0.117247"/>
</kw>
<msg time="2026-04-08T00:52:52.552543" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:52:52.552587" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:52:52.430549" elapsed="0.122074"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:52.553007" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:52.552733" elapsed="0.000328"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:52.552714" elapsed="0.000370"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T00:52:52.430410" elapsed="0.122697"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-08T00:52:52.174938" elapsed="0.378199"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-08T00:52:52.172526" elapsed="0.380687"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-08T00:52:52.167667" elapsed="0.385604"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:52:52.167213" elapsed="0.386103"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-08T00:52:52.164440" elapsed="0.388931"/>
</kw>
<kw name="Stop_Single_Member" owner="ClusterManagement">
<kw name="ClusterManagement__Build_List" owner="ClusterManagement">
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:52:52.558357" level="INFO">${member_int} = 1</msg>
<var>${member_int}</var>
<arg>${member}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:52:52.558025" elapsed="0.000358"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:52:52.558823" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>${member_int}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:52:52.558541" elapsed="0.000307"/>
</kw>
<return>
<value>${index_list}</value>
<status status="PASS" start="2026-04-08T00:52:52.558891" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:52:52.559041" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>${member}</arg>
<status status="PASS" start="2026-04-08T00:52:52.557702" elapsed="0.001363"/>
</kw>
<kw name="Return_Member_IP" owner="ClusterManagement">
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:52:52.559991" level="INFO">${member_int} = 1</msg>
<var>${member_int}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:52:52.559688" elapsed="0.000329"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:52:52.560449" level="INFO">${member_ip} = 10.30.170.48</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_int}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:52:52.560184" elapsed="0.000291"/>
</kw>
<return>
<value>${member_ip}</value>
<status status="PASS" start="2026-04-08T00:52:52.560522" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:52:52.560670" level="INFO">${member_ip} = 10.30.170.48</msg>
<var>${member_ip}</var>
<arg>${member}</arg>
<doc>Return the IP address of the member given the member_index.</doc>
<status status="PASS" start="2026-04-08T00:52:52.559372" elapsed="0.001323"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:52:52.563069" level="INFO">${msg} = Stopping ODL1 10.30.170.48</msg>
<var>${msg}</var>
<arg>"${msg}" == "${EMPTY}"</arg>
<arg>Stopping ODL${member} ${member_ip}</arg>
<arg>Stopping ODL${member} ${member_ip}, ${msg}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:52:52.560870" elapsed="0.002226"/>
</kw>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:52:52.569677" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:52:52.569570" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:52.569551" elapsed="0.000194"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:52:52.570730" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:52:52.570354" elapsed="0.000403"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:52:52.571229" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:52:52.570913" elapsed="0.000342"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:52:52.571298" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:52:52.571450" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:52:52.569966" elapsed="0.001508"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:52:52.576814" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:52:52.576705" elapsed="0.000170"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:52.576686" elapsed="0.000213"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:52:52.577977" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:52:52.577872" elapsed="0.000149"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:52.577854" elapsed="0.000188"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:52:52.578418" level="INFO">${karaf_connection_index} = 82</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:52:52.578201" elapsed="0.000243"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:52:52.578766" level="INFO">${current_connection_index} = None</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:52:52.578600" elapsed="0.000191"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T00:52:52.609556" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "o "p "p "i "n "g "[C "O "D "L "1 "[C "1 "0 ". "3 "0 ". "1 "7 "0 ". "4 "8 "[K"</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T00:52:52.579333" elapsed="0.030301"/>
</kw>
<msg time="2026-04-08T00:52:52.609734" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T00:52:52.609778" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "o "p "p "i "n "g "[C "O "D "L "1 "[C "1 "0 ". "3 "0 ". "1 "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:52:52.578984" elapsed="0.030832"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T00:52:52.612730" level="INFO">[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T00:52:52.610347" elapsed="0.002442"/>
</kw>
<msg time="2026-04-08T00:52:52.612885" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T00:52:52.612952" level="INFO">${message_wait} = [?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:52:52.609984" elapsed="0.002998"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:52.613298" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:52.613065" elapsed="0.000288"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:52.613044" elapsed="0.000333"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:52.613762" level="INFO">[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:52.613515" elapsed="0.000295"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:52.614086" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:52.613876" elapsed="0.000263"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:52.613858" elapsed="0.000321"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T00:52:52.614213" elapsed="0.000028"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:52:52.615330" elapsed="0.000350"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:52:52.615841" elapsed="0.000144"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:52:52.616131" elapsed="0.000122"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:52:52.614957" elapsed="0.001349"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T00:52:52.614466" elapsed="0.001885"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T00:52:52.577575" elapsed="0.038870"/>
</kw>
<msg time="2026-04-08T00:52:52.616535" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:52:52.616577" level="INFO">${message} = [?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:52:52.577051" elapsed="0.039553"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T00:52:52.616784" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-08T00:52:52.616680" elapsed="0.000161"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:52.616661" elapsed="0.000203"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:52.617279" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:52.617605" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T00:52:52.617674" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T00:52:52.576366" elapsed="0.041413"/>
</kw>
<msg time="2026-04-08T00:52:52.617872" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:52:52.617914" level="INFO">${output} = [?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:52:52.571833" elapsed="0.046109"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:52.618325" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:52.618055" elapsed="0.000323"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:52.618037" elapsed="0.000364"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T00:52:52.571692" elapsed="0.046732"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:52:52.623716" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:52:52.623609" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:52.623590" elapsed="0.000193"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:52:52.624851" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:52:52.624747" elapsed="0.000149"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:52.624729" elapsed="0.000188"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:52:52.625319" level="INFO">${karaf_connection_index} = 84</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:52:52.625083" elapsed="0.000263"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:52:52.625667" level="INFO">${current_connection_index} = None</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:52:52.625500" elapsed="0.000193"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T00:52:52.660381" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "o "p "p "i "n "g "[C "O "D "L "1 "[C "1 "0 ". "3 "0 ". "1 "7 "0 ". "4 "8 "[K"</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T00:52:52.626191" elapsed="0.034266"/>
</kw>
<msg time="2026-04-08T00:52:52.660556" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T00:52:52.660600" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "o "p "p "i "n "g "[C "O "D "L "1 "[C "1 "0 ". "3 "0 ". "1 "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:52:52.625847" elapsed="0.034789"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T00:52:52.663262" level="INFO">[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T00:52:52.661189" elapsed="0.002140"/>
</kw>
<msg time="2026-04-08T00:52:52.663424" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T00:52:52.663467" level="INFO">${message_wait} = [?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:52:52.660803" elapsed="0.002690"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:52.663784" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:52.663569" elapsed="0.000269"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:52.663549" elapsed="0.000312"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:52.664268" level="INFO">[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:52.664002" elapsed="0.000313"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:52.664590" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:52.664380" elapsed="0.000263"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:52.664363" elapsed="0.000303"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T00:52:52.664699" elapsed="0.000026"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:52:52.665835" elapsed="0.000367"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:52:52.666364" elapsed="0.000144"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:52:52.666654" elapsed="0.000094"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:52:52.665482" elapsed="0.001318"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T00:52:52.664949" elapsed="0.001895"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T00:52:52.624449" elapsed="0.042491"/>
</kw>
<msg time="2026-04-08T00:52:52.667028" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:52:52.667070" level="INFO">${message} = [?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:52:52.623933" elapsed="0.043164"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T00:52:52.667339" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-08T00:52:52.667227" elapsed="0.000171"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:52.667207" elapsed="0.000214"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 2,
close the previous connection. In any case create a new connection
to karaf console for 2, set correct prompt set and login to karaf console.
Store connection index for 2 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:52.667797" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:52.668124" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T00:52:52.668212" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T00:52:52.623265" elapsed="0.045054"/>
</kw>
<msg time="2026-04-08T00:52:52.668411" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:52:52.668454" level="INFO">${output} = [?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:52:52.618680" elapsed="0.049801"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:52.668802" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:52.668557" elapsed="0.000298"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:52.668540" elapsed="0.000338"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T00:52:52.618542" elapsed="0.050358"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:52:52.674213" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:52:52.674089" elapsed="0.000170"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:52.674070" elapsed="0.000211"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:52:52.675352" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:52:52.675243" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:52.675225" elapsed="0.000193"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:52:52.675779" level="INFO">${karaf_connection_index} = 86</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:52:52.675566" elapsed="0.000238"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:52:52.676126" level="INFO">${current_connection_index} = None</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:52:52.675961" elapsed="0.000190"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T00:52:52.710033" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "o "p "p "i "n "g "[C "O "D "L "1 "[C "1 "0 ". "3 "0 ". "1 "7 "0 ". "4 "8 "[K"</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T00:52:52.676652" elapsed="0.033597"/>
</kw>
<msg time="2026-04-08T00:52:52.710479" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T00:52:52.710581" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "o "p "p "i "n "g "[C "O "D "L "1 "[C "1 "0 ". "3 "0 ". "1 "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:52:52.676325" elapsed="0.034341"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T00:52:52.715280" level="INFO">[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T00:52:52.711932" elapsed="0.003478"/>
</kw>
<msg time="2026-04-08T00:52:52.715627" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T00:52:52.715724" level="INFO">${message_wait} = [?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:52:52.711074" elapsed="0.004711"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:52.716506" elapsed="0.000049"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:52.715977" elapsed="0.000652"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:52.715932" elapsed="0.000748"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:52.717557" level="INFO">[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:52.717013" elapsed="0.000594"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:52.717891" elapsed="0.000028"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:52.717673" elapsed="0.000316"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:52.717655" elapsed="0.000361"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T00:52:52.718051" elapsed="0.000028"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:52:52.719231" elapsed="0.000360"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:52:52.719756" elapsed="0.000150"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:52:52.720064" elapsed="0.000121"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:52:52.718841" elapsed="0.001399"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T00:52:52.718329" elapsed="0.001959"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T00:52:52.674930" elapsed="0.045458"/>
</kw>
<msg time="2026-04-08T00:52:52.720481" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:52:52.720524" level="INFO">${message} = [?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:52:52.674431" elapsed="0.046121"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T00:52:52.720738" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-08T00:52:52.720630" elapsed="0.000166"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:52.720612" elapsed="0.000209"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 3,
close the previous connection. In any case create a new connection
to karaf console for 3, set correct prompt set and login to karaf console.
Store connection index for 3 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:52.721249" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:52.721589" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T00:52:52.721661" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T00:52:52.673751" elapsed="0.048017"/>
</kw>
<msg time="2026-04-08T00:52:52.721862" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:52:52.721906" level="INFO">${output} = [?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:52:52.669200" elapsed="0.052735"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:52:52.722290" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:52:52.722020" elapsed="0.000324"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:52.722001" elapsed="0.000366"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T00:52:52.669017" elapsed="0.053374"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-08T00:52:52.571526" elapsed="0.150895"/>
</for>
<arg>${msg}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-08T00:52:52.567597" elapsed="0.154885"/>
</kw>
<kw name="Stop_Members_From_List_Or_All" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:52:52.724094" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:52:52.723700" elapsed="0.000421"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:52:52.724603" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:52:52.724303" elapsed="0.000326"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:52:52.724674" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:52:52.724827" level="INFO">${stop_index_list} = [1]</msg>
<var>${stop_index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:52:52.723319" elapsed="0.001534"/>
</kw>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:52:52.726089" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:52:52.725696" elapsed="0.000422"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:52:52.726611" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:52:52.726299" elapsed="0.000339"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:52:52.726719" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:52:52.726878" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${original_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:52:52.725065" elapsed="0.001839"/>
</kw>
<kw name="Run_Bash_Command_On_List_Or_All" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:52:52.728400" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:52:52.727996" elapsed="0.000432"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:52:52.728885" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:52:52.728589" elapsed="0.000322"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:52:52.728956" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:52:52.729118" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:52:52.727623" elapsed="0.001522"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:52:52.730258" level="INFO">${member_ip} = 10.30.170.48</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:52:52.729965" elapsed="0.000320"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:52:52.731051" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

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

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T00:52:52.734827" elapsed="0.000317"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:52.736338" level="INFO">Attempting to execute command "/tmp/karaf-0.23.1/bin/stop" on remote system "10.30.170.48" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:52.735344" elapsed="0.001061"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:52:52.737401" level="INFO">${conn_id} = 115</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:52:52.736582" elapsed="0.000847"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T00:52:52.740564" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T00:52:52.740838" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T00:52:52.739891" elapsed="0.001049"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:52:52.741323" elapsed="0.000629"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T00:52:52.743375" level="INFO">Logging into '10.30.170.48:22' as 'jenkins'.</msg>
<msg time="2026-04-08T00:52:53.060086" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 00:52:33 UTC 2026

  System load:  0.26               Processes:             120
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 8%                 IPv4 address for ens3: 10.30.170.48
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 00:52:33 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-0-builder-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T00:52:52.743019" elapsed="0.317309"/>
</kw>
<msg time="2026-04-08T00:52:53.060623" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:52:52.742360" elapsed="0.318418"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T00:52:52.737701" elapsed="0.323285"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T00:52:53.061830" level="INFO">Executing command '/tmp/karaf-0.23.1/bin/stop'.</msg>
<msg time="2026-04-08T00:52:53.419197" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-08T00:52:53.419534" level="INFO">${stdout} = </msg>
<msg time="2026-04-08T00:52:53.419638" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T00:52:53.061360" elapsed="0.358330"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:52:53.420269" elapsed="0.000551"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:53.422633" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:53.421312" elapsed="0.001448"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:52:53.423454" elapsed="0.000040"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:52:53.422987" elapsed="0.000729"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:53.422930" elapsed="0.000847"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T00:52:53.424315" elapsed="0.000069"/>
</return>
<status status="PASS" start="2026-04-08T00:52:53.423906" elapsed="0.000704"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:53.423869" elapsed="0.000805"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:52:53.424754" elapsed="0.000034"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:52:53.429439" elapsed="0.000772"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:52:53.430542" elapsed="0.000489"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:52:53.431356" elapsed="0.000293"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:52:53.425527" elapsed="0.006275"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T00:52:52.733077" elapsed="0.698821"/>
</kw>
<msg time="2026-04-08T00:52:53.431957" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:52:52.732439" elapsed="0.699576"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-08T00:52:52.731877" elapsed="0.700221"/>
</kw>
<msg time="2026-04-08T00:52:53.432139" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:52:52.731367" elapsed="0.700836"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:52:53.435208" elapsed="0.000325"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:52:53.435709" elapsed="0.000145"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:52:53.436002" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:52:53.432500" elapsed="0.003669"/>
</kw>
<msg time="2026-04-08T00:52:53.436267" level="INFO">${output} = </msg>
<var>${output}</var>
<arg>Utils.Run_Command_On_Controller</arg>
<arg>${member_ip}</arg>
<arg>${command}</arg>
<doc>Store current connection index, run keyword returning its result, restore connection in teardown.
Note that in order to avoid "got positional argument after named arguments", it is safer to use positional (not named) arguments on call.</doc>
<status status="PASS" start="2026-04-08T00:52:52.730503" elapsed="0.705790"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:53.436748" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:53.436483" elapsed="0.000307"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-08T00:52:53.436834" elapsed="0.000028"/>
</return>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-08T00:52:52.729561" elapsed="0.707397"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T00:52:52.729387" elapsed="0.707609"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-08T00:52:52.729253" elapsed="0.707780"/>
</for>
<arg>command=${NODE_STOP_COMMAND}</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Cycle through indices (or all), run command on each.</doc>
<status status="PASS" start="2026-04-08T00:52:52.727117" elapsed="0.709978"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:52:53.437836" level="INFO">${updated_index_list} = [1, 2, 3]</msg>
<var>${updated_index_list}</var>
<arg>@{index_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:52:53.437511" elapsed="0.000351"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${updated_index_list}</arg>
<arg>@{stop_index_list}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:52:53.438018" elapsed="0.000231"/>
</kw>
<if>
<branch type="IF" condition="not ${confirm}">
<return>
<value>${updated_index_list}</value>
<status status="NOT RUN" start="2026-04-08T00:52:53.438448" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:52:53.438341" elapsed="0.000150"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:53.438320" elapsed="0.000192"/>
</if>
<for flavor="IN">
<iter>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:53.440477" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:53.440183" elapsed="0.000320"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:52:53.441378" level="INFO">${member_ip} = 10.30.170.48</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:52:53.441094" elapsed="0.000310"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:52:53.442187" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

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

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T00:52:53.446960" elapsed="0.000273"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:53.447823" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.170.48" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:53.447444" elapsed="0.000425"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:52:53.448634" level="INFO">${conn_id} = 118</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:52:53.448082" elapsed="0.000579"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T00:52:53.449632" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T00:52:53.449708" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T00:52:53.449353" elapsed="0.000378"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:52:53.449901" elapsed="0.000333"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T00:52:53.451115" level="INFO">Logging into '10.30.170.48:22' as 'jenkins'.</msg>
<msg time="2026-04-08T00:52:53.801077" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 00:52:33 UTC 2026

  System load:  0.26               Processes:             120
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 8%                 IPv4 address for ens3: 10.30.170.48
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 00:52:53 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-0-builder-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T00:52:53.450789" elapsed="0.350478"/>
</kw>
<msg time="2026-04-08T00:52:53.801355" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:52:53.450402" elapsed="0.351060"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T00:52:53.448939" elapsed="0.352656"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T00:52:53.802377" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-08T00:52:53.825348" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-08T00:52:53.825605" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-08T00:52:53.825703" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T00:52:53.802048" elapsed="0.023705"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:52:53.826287" elapsed="0.000496"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:53.828050" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:53.827380" elapsed="0.000764"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:52:53.828796" elapsed="0.000037"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:52:53.828486" elapsed="0.000422"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:53.828421" elapsed="0.000539"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T00:52:53.829476" elapsed="0.000060"/>
</return>
<status status="PASS" start="2026-04-08T00:52:53.829228" elapsed="0.000382"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:53.829184" elapsed="0.000479"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:52:53.829846" elapsed="0.000064"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:52:53.834892" elapsed="0.000484"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:52:53.835624" elapsed="0.000228"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:52:53.836056" elapsed="0.000158"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:52:53.830870" elapsed="0.005418"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T00:52:53.445331" elapsed="0.391259"/>
</kw>
<msg time="2026-04-08T00:52:53.836722" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:52:53.443723" elapsed="0.393139"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-08T00:52:53.443081" elapsed="0.394052"/>
</kw>
<msg time="2026-04-08T00:52:53.837215" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:52:53.442493" elapsed="0.394791"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:52:53.841139" elapsed="0.000376"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:52:53.841678" elapsed="0.000144"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:52:53.841968" elapsed="0.000095"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:52:53.837689" elapsed="0.004427"/>
</kw>
<msg time="2026-04-08T00:52:53.842232" level="INFO">${output} = 1</msg>
<var>${output}</var>
<arg>Utils.Run_Command_On_Controller</arg>
<arg>${member_ip}</arg>
<arg>${command}</arg>
<doc>Store current connection index, run keyword returning its result, restore connection in teardown.
Note that in order to avoid "got positional argument after named arguments", it is safer to use positional (not named) arguments on call.</doc>
<status status="PASS" start="2026-04-08T00:52:53.441615" elapsed="0.400643"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:53.842687" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:53.842435" elapsed="0.000295"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-08T00:52:53.842772" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:52:53.842927" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-08T00:52:53.440698" elapsed="0.402253"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-08T00:52:53.842998" elapsed="0.000026"/>
</return>
<msg time="2026-04-08T00:52:53.843146" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-08T00:52:53.439828" elapsed="0.403358"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-08T00:52:53.843773" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-08T00:52:53.843347" elapsed="0.000510">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-08T00:52:53.439435" elapsed="0.404545">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:55.847757" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:55.846893" elapsed="0.000938"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:52:55.850075" level="INFO">${member_ip} = 10.30.170.48</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:52:55.849426" elapsed="0.000714"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:52:55.851903" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

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

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T00:52:55.858604" elapsed="0.000390"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:55.859981" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.170.48" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:55.859505" elapsed="0.000524"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:52:55.860842" level="INFO">${conn_id} = 121</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:52:55.860256" elapsed="0.000613"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T00:52:55.861924" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T00:52:55.862000" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T00:52:55.861629" elapsed="0.000394"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:52:55.862196" elapsed="0.000323"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T00:52:55.863394" level="INFO">Logging into '10.30.170.48:22' as 'jenkins'.</msg>
<msg time="2026-04-08T00:52:56.175191" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 00:52:33 UTC 2026

  System load:  0.26               Processes:             120
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 8%                 IPv4 address for ens3: 10.30.170.48
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 00:52:53 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-0-builder-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T00:52:55.863041" elapsed="0.312300"/>
</kw>
<msg time="2026-04-08T00:52:56.175424" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:52:55.862687" elapsed="0.312824"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T00:52:55.861144" elapsed="0.314515"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T00:52:56.176283" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-08T00:52:56.199329" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-08T00:52:56.199587" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-08T00:52:56.199971" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T00:52:56.175998" elapsed="0.024036"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:52:56.200643" elapsed="0.000505"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:56.202575" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:56.201869" elapsed="0.000805"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:52:56.203342" elapsed="0.000039"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:52:56.202997" elapsed="0.000460"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:56.202940" elapsed="0.000571"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T00:52:56.204097" elapsed="0.000094"/>
</return>
<status status="PASS" start="2026-04-08T00:52:56.203832" elapsed="0.000442"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:56.203788" elapsed="0.000544"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:52:56.204566" elapsed="0.000048"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:52:56.208599" elapsed="0.000446"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:52:56.209312" elapsed="0.000219"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:52:56.209735" elapsed="0.000134"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:52:56.205245" elapsed="0.004700"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T00:52:55.856372" elapsed="0.353925"/>
</kw>
<msg time="2026-04-08T00:52:56.210436" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:52:55.854310" elapsed="0.356278"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-08T00:52:55.853200" elapsed="0.357681"/>
</kw>
<msg time="2026-04-08T00:52:56.210941" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:52:55.852318" elapsed="0.358690"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:52:56.214385" elapsed="0.000338"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:52:56.214885" elapsed="0.000145"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:52:56.215192" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:52:56.211431" elapsed="0.003911"/>
</kw>
<msg time="2026-04-08T00:52:56.215438" level="INFO">${output} = 1</msg>
<var>${output}</var>
<arg>Utils.Run_Command_On_Controller</arg>
<arg>${member_ip}</arg>
<arg>${command}</arg>
<doc>Store current connection index, run keyword returning its result, restore connection in teardown.
Note that in order to avoid "got positional argument after named arguments", it is safer to use positional (not named) arguments on call.</doc>
<status status="PASS" start="2026-04-08T00:52:55.850689" elapsed="0.364774"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:56.215917" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:56.215644" elapsed="0.000318"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-08T00:52:56.216003" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:52:56.216155" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-08T00:52:55.848346" elapsed="0.367850"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-08T00:52:56.216244" elapsed="0.000026"/>
</return>
<msg time="2026-04-08T00:52:56.216389" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-08T00:52:55.845996" elapsed="0.370417"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-08T00:52:56.216970" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-08T00:52:56.216568" elapsed="0.000477">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-08T00:52:55.844837" elapsed="0.372389">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:52:58.220744" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:52:58.219975" elapsed="0.000838"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:52:58.223096" level="INFO">${member_ip} = 10.30.170.48</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:52:58.222377" elapsed="0.000807"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:52:58.224669" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

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

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T00:52:58.231265" elapsed="0.000363"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:58.232445" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.170.48" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:58.231909" elapsed="0.000584"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:52:58.233296" level="INFO">${conn_id} = 124</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:52:58.232700" elapsed="0.000623"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T00:52:58.234304" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T00:52:58.234381" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T00:52:58.233989" elapsed="0.000416"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:52:58.234573" elapsed="0.000321"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T00:52:58.235799" level="INFO">Logging into '10.30.170.48:22' as 'jenkins'.</msg>
<msg time="2026-04-08T00:52:58.548261" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 00:52:33 UTC 2026

  System load:  0.26               Processes:             120
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 8%                 IPv4 address for ens3: 10.30.170.48
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 00:52:56 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-0-builder-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T00:52:58.235479" elapsed="0.312944"/>
</kw>
<msg time="2026-04-08T00:52:58.548509" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:52:58.235060" elapsed="0.313542"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T00:52:58.233595" elapsed="0.315121"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T00:52:58.549341" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-08T00:52:58.572076" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-08T00:52:58.572371" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-08T00:52:58.572466" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T00:52:58.549051" elapsed="0.023465"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:52:58.573042" elapsed="0.000526"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:58.574739" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:58.574084" elapsed="0.000748"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:52:58.575547" elapsed="0.000037"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:52:58.575240" elapsed="0.000405"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:58.575151" elapsed="0.000530"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T00:52:58.576001" elapsed="0.000046"/>
</return>
<status status="PASS" start="2026-04-08T00:52:58.575838" elapsed="0.000257"/>
</branch>
<status status="PASS" start="2026-04-08T00:52:58.575813" elapsed="0.000316"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:52:58.576271" elapsed="0.000041"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:52:58.580576" elapsed="0.000490"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:52:58.581331" elapsed="0.000236"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:52:58.581783" elapsed="0.000141"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:52:58.577020" elapsed="0.004979"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T00:52:58.228943" elapsed="0.353406"/>
</kw>
<msg time="2026-04-08T00:52:58.582487" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:52:58.226731" elapsed="0.355911"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-08T00:52:58.225804" elapsed="0.357123"/>
</kw>
<msg time="2026-04-08T00:52:58.583027" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:52:58.225066" elapsed="0.358036"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:52:58.586209" elapsed="0.000344"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:52:58.586717" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:52:58.587023" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:52:58.583555" elapsed="0.003633"/>
</kw>
<msg time="2026-04-08T00:52:58.587288" level="INFO">${output} = 1</msg>
<var>${output}</var>
<arg>Utils.Run_Command_On_Controller</arg>
<arg>${member_ip}</arg>
<arg>${command}</arg>
<doc>Store current connection index, run keyword returning its result, restore connection in teardown.
Note that in order to avoid "got positional argument after named arguments", it is safer to use positional (not named) arguments on call.</doc>
<status status="PASS" start="2026-04-08T00:52:58.223815" elapsed="0.363498"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:52:58.587765" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:52:58.587512" elapsed="0.000296"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-08T00:52:58.587850" elapsed="0.000031"/>
</return>
<msg time="2026-04-08T00:52:58.588004" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-08T00:52:58.221293" elapsed="0.366736"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-08T00:52:58.588076" elapsed="0.000025"/>
</return>
<msg time="2026-04-08T00:52:58.588235" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-08T00:52:58.219130" elapsed="0.369130"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-08T00:52:58.588821" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-08T00:52:58.588415" elapsed="0.000484">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-08T00:52:58.218017" elapsed="0.370999">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:53:00.592650" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:53:00.591878" elapsed="0.000842"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:53:00.595075" level="INFO">${member_ip} = 10.30.170.48</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:53:00.594309" elapsed="0.000832"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:53:00.597128" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

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

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T00:53:00.602951" elapsed="0.000283"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:53:00.603858" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.170.48" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:53:00.603467" elapsed="0.000439"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:53:00.604726" level="INFO">${conn_id} = 127</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:53:00.604117" elapsed="0.000639"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T00:53:00.605807" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T00:53:00.605886" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T00:53:00.605512" elapsed="0.000398"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:53:00.606070" elapsed="0.000411"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T00:53:00.607384" level="INFO">Logging into '10.30.170.48:22' as 'jenkins'.</msg>
<msg time="2026-04-08T00:53:00.925066" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 00:52:33 UTC 2026

  System load:  0.26               Processes:             120
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 8%                 IPv4 address for ens3: 10.30.170.48
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 00:52:58 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-0-builder-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T00:53:00.607048" elapsed="0.318233"/>
</kw>
<msg time="2026-04-08T00:53:00.925392" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:53:00.606677" elapsed="0.318830"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T00:53:00.605031" elapsed="0.320626"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T00:53:00.926526" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-08T00:53:00.948581" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-08T00:53:00.948839" level="INFO">${stdout} = 0</msg>
<msg time="2026-04-08T00:53:00.948936" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T00:53:00.926150" elapsed="0.022837"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:53:00.949529" elapsed="0.000496"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:53:00.951275" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:53:00.950585" elapsed="0.000785"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:53:00.951962" elapsed="0.000036"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:53:00.951657" elapsed="0.000413"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:00.951601" elapsed="0.000518"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T00:53:00.952629" elapsed="0.000064"/>
</return>
<status status="PASS" start="2026-04-08T00:53:00.952384" elapsed="0.000381"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:00.952342" elapsed="0.000475"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:53:00.953001" elapsed="0.000061"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:53:00.959129" elapsed="0.000367"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:53:00.959663" elapsed="0.000161"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:53:00.959972" elapsed="0.000095"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:53:00.954010" elapsed="0.006109"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T00:53:00.601182" elapsed="0.359234"/>
</kw>
<msg time="2026-04-08T00:53:00.960507" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:53:00.599539" elapsed="0.361068"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-08T00:53:00.598790" elapsed="0.362010"/>
</kw>
<msg time="2026-04-08T00:53:00.960845" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:53:00.597932" elapsed="0.362962"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:53:00.963769" elapsed="0.000341"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:53:00.964293" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:53:00.964586" elapsed="0.000095"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:53:00.961198" elapsed="0.003534"/>
</kw>
<msg time="2026-04-08T00:53:00.964824" level="INFO">${output} = 0</msg>
<var>${output}</var>
<arg>Utils.Run_Command_On_Controller</arg>
<arg>${member_ip}</arg>
<arg>${command}</arg>
<doc>Store current connection index, run keyword returning its result, restore connection in teardown.
Note that in order to avoid "got positional argument after named arguments", it is safer to use positional (not named) arguments on call.</doc>
<status status="PASS" start="2026-04-08T00:53:00.595724" elapsed="0.369126"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:53:00.965293" level="INFO">0</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:53:00.965024" elapsed="0.000313"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-08T00:53:00.965379" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:53:00.965528" level="INFO">${count} = 0</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-08T00:53:00.593240" elapsed="0.372313"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-08T00:53:00.965599" elapsed="0.000026"/>
</return>
<msg time="2026-04-08T00:53:00.965740" level="INFO">${count} = 0</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-08T00:53:00.591005" elapsed="0.374760"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="PASS" start="2026-04-08T00:53:00.965943" elapsed="0.000389"/>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="PASS" start="2026-04-08T00:53:00.589862" elapsed="0.376533"/>
</kw>
<arg>${timeout}</arg>
<arg>2s</arg>
<arg>Verify_Karaf_Is_Not_Running_On_Member</arg>
<arg>member_index=${index}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-08T00:52:53.438861" elapsed="7.527582"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T00:52:53.438715" elapsed="7.527767"/>
</iter>
<var>${index}</var>
<value>@{stop_index_list}</value>
<status status="PASS" start="2026-04-08T00:52:53.438559" elapsed="7.527960"/>
</for>
<kw name="Run_Bash_Command_On_List_Or_All" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:53:00.969622" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:53:00.969234" elapsed="0.000416"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:53:00.970128" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:53:00.969824" elapsed="0.000345"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:53:00.970216" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:53:00.970371" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:53:00.968828" elapsed="0.001567"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:53:00.971611" level="INFO">${member_ip} = 10.30.170.48</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:53:00.971342" elapsed="0.000296"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:53:00.972413" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

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

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T00:53:00.976296" elapsed="0.000308"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:53:00.977734" level="INFO">Attempting to execute command "netstat -pnatu | grep 2550" on remote system "10.30.170.48" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:53:00.976778" elapsed="0.001019"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:53:00.978711" level="INFO">${conn_id} = 130</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:53:00.977984" elapsed="0.000753"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T00:53:00.980452" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T00:53:00.980713" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T00:53:00.979892" elapsed="0.000920"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:53:00.981170" elapsed="0.000610"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T00:53:00.983138" level="INFO">Logging into '10.30.170.48:22' as 'jenkins'.</msg>
<msg time="2026-04-08T00:53:01.309399" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 00:52:33 UTC 2026

  System load:  0.26               Processes:             120
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 8%                 IPv4 address for ens3: 10.30.170.48
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 00:53:00 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-0-builder-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T00:53:00.982820" elapsed="0.326757"/>
</kw>
<msg time="2026-04-08T00:53:01.309768" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:53:00.982107" elapsed="0.327803"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T00:53:00.979176" elapsed="0.330940"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T00:53:01.310934" level="INFO">Executing command 'netstat -pnatu | grep 2550'.</msg>
<msg time="2026-04-08T00:53:01.324055" level="INFO">Command exited with return code 1.</msg>
<msg time="2026-04-08T00:53:01.324313" level="INFO">${stdout} = </msg>
<msg time="2026-04-08T00:53:01.324376" level="INFO">${stderr} = bash: line 1: netstat: command not found</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T00:53:01.310511" elapsed="0.013899"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:53:01.324745" elapsed="0.000332"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:53:01.326352" level="INFO">bash: line 1: netstat: command not found</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:53:01.325387" elapsed="0.001088"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:53:01.326984" elapsed="0.000031"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:53:01.326653" elapsed="0.000549"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:01.326606" elapsed="0.000647"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T00:53:01.327645" elapsed="0.000055"/>
</return>
<status status="PASS" start="2026-04-08T00:53:01.327360" elapsed="0.000501"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:01.327328" elapsed="0.000589"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:53:01.327987" elapsed="0.000028"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:53:01.332440" elapsed="0.000987"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:53:01.333852" elapsed="0.000720"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:53:01.334980" elapsed="0.000271"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:53:01.328644" elapsed="0.006752"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T00:53:00.974511" elapsed="0.360992"/>
</kw>
<msg time="2026-04-08T00:53:01.335562" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:53:00.973841" elapsed="0.361779"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-08T00:53:00.973277" elapsed="0.362426"/>
</kw>
<msg time="2026-04-08T00:53:01.335745" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:53:00.972751" elapsed="0.363042"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:53:01.338750" elapsed="0.000315"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:53:01.339246" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:53:01.339541" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:53:01.336082" elapsed="0.003608"/>
</kw>
<msg time="2026-04-08T00:53:01.339784" level="INFO">${output} = </msg>
<var>${output}</var>
<arg>Utils.Run_Command_On_Controller</arg>
<arg>${member_ip}</arg>
<arg>${command}</arg>
<doc>Store current connection index, run keyword returning its result, restore connection in teardown.
Note that in order to avoid "got positional argument after named arguments", it is safer to use positional (not named) arguments on call.</doc>
<status status="PASS" start="2026-04-08T00:53:00.971850" elapsed="0.367960"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:53:01.340284" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:53:01.339995" elapsed="0.000331"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-08T00:53:01.340369" elapsed="0.000029"/>
</return>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-08T00:53:00.970905" elapsed="0.369588"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T00:53:00.970584" elapsed="0.369947"/>
</iter>
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:53:01.341579" level="INFO">${member_ip} = 10.30.170.131</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:53:01.341296" elapsed="0.000317"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:53:01.342458" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

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

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T00:53:01.346463" elapsed="0.000314"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:53:01.347955" level="INFO">Attempting to execute command "netstat -pnatu | grep 2550" on remote system "10.30.170.131" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:53:01.346949" elapsed="0.001086"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:53:01.349079" level="INFO">${conn_id} = 133</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:53:01.348278" elapsed="0.000829"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T00:53:01.350932" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T00:53:01.351213" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T00:53:01.350267" elapsed="0.001046"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:53:01.351634" elapsed="0.000647"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T00:53:01.353665" level="INFO">Logging into '10.30.170.131:22' as 'jenkins'.</msg>
<msg time="2026-04-08T00:53:01.709940" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 00:52:33 UTC 2026

  System load:  0.19               Processes:             122
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 8%                 IPv4 address for ens3: 10.30.170.131
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 00:52:34 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-0-builder-1 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T00:53:01.353334" elapsed="0.356753"/>
</kw>
<msg time="2026-04-08T00:53:01.710258" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:53:01.352627" elapsed="0.357740"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T00:53:01.349439" elapsed="0.361085"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T00:53:01.711150" level="INFO">Executing command 'netstat -pnatu | grep 2550'.</msg>
<msg time="2026-04-08T00:53:01.723575" level="INFO">Command exited with return code 1.</msg>
<msg time="2026-04-08T00:53:01.723781" level="INFO">${stdout} = </msg>
<msg time="2026-04-08T00:53:01.723882" level="INFO">${stderr} = bash: line 1: netstat: command not found</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T00:53:01.710794" elapsed="0.013140"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:53:01.724456" elapsed="0.000462"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:53:01.726596" level="INFO">bash: line 1: netstat: command not found</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:53:01.725388" elapsed="0.001347"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:53:01.727446" elapsed="0.000038"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:53:01.726997" elapsed="0.000688"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:01.726943" elapsed="0.000801"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T00:53:01.728252" elapsed="0.000061"/>
</return>
<status status="PASS" start="2026-04-08T00:53:01.727868" elapsed="0.000648"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:01.727832" elapsed="0.000744"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:53:01.728651" elapsed="0.000032"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:53:01.735032" elapsed="0.000697"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:53:01.736028" elapsed="0.000430"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:53:01.736743" elapsed="0.000259"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:53:01.729375" elapsed="0.007763"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T00:53:01.344528" elapsed="0.392720"/>
</kw>
<msg time="2026-04-08T00:53:01.737303" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:53:01.343857" elapsed="0.393497"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-08T00:53:01.343275" elapsed="0.394159"/>
</kw>
<msg time="2026-04-08T00:53:01.737474" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:53:01.342745" elapsed="0.394775"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:53:01.740166" elapsed="0.000311"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:53:01.740700" elapsed="0.000149"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:53:01.740996" elapsed="0.000093"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:53:01.737806" elapsed="0.003334"/>
</kw>
<msg time="2026-04-08T00:53:01.741248" level="INFO">${output} = </msg>
<var>${output}</var>
<arg>Utils.Run_Command_On_Controller</arg>
<arg>${member_ip}</arg>
<arg>${command}</arg>
<doc>Store current connection index, run keyword returning its result, restore connection in teardown.
Note that in order to avoid "got positional argument after named arguments", it is safer to use positional (not named) arguments on call.</doc>
<status status="PASS" start="2026-04-08T00:53:01.341847" elapsed="0.399426"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:53:01.741687" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:53:01.741444" elapsed="0.000285"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-08T00:53:01.741769" elapsed="0.000029"/>
</return>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-08T00:53:01.340807" elapsed="0.401083"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T00:53:01.340627" elapsed="0.401300"/>
</iter>
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:53:01.742955" level="INFO">${member_ip} = 10.30.171.110</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:53:01.742686" elapsed="0.000295"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:53:01.743748" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

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

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T00:53:01.747647" elapsed="0.000307"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:53:01.749056" level="INFO">Attempting to execute command "netstat -pnatu | grep 2550" on remote system "10.30.171.110" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:53:01.748125" elapsed="0.000993"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:53:01.750040" level="INFO">${conn_id} = 136</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:53:01.749307" elapsed="0.000760"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T00:53:01.751627" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T00:53:01.751885" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T00:53:01.751063" elapsed="0.000920"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:53:01.752292" elapsed="0.000592"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T00:53:01.754147" level="INFO">Logging into '10.30.171.110:22' as 'jenkins'.</msg>
<msg time="2026-04-08T00:53:02.072959" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 00:52:34 UTC 2026

  System load:  0.16               Processes:             121
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 8%                 IPv4 address for ens3: 10.30.171.110
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 00:52:34 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T00:53:01.753832" elapsed="0.319221"/>
</kw>
<msg time="2026-04-08T00:53:02.073152" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:53:01.753200" elapsed="0.320117"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T00:53:01.750359" elapsed="0.323095"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T00:53:02.073964" level="INFO">Executing command 'netstat -pnatu | grep 2550'.</msg>
<msg time="2026-04-08T00:53:02.087456" level="INFO">Command exited with return code 1.</msg>
<msg time="2026-04-08T00:53:02.087785" level="INFO">${stdout} = </msg>
<msg time="2026-04-08T00:53:02.087893" level="INFO">${stderr} = bash: line 1: netstat: command not found</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T00:53:02.073673" elapsed="0.014277"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:53:02.088510" elapsed="0.000492"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:53:02.090631" level="INFO">bash: line 1: netstat: command not found</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:53:02.089448" elapsed="0.001319"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:53:02.091401" elapsed="0.000037"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:53:02.090970" elapsed="0.000668"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:02.090918" elapsed="0.000778"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T00:53:02.092196" elapsed="0.000064"/>
</return>
<status status="PASS" start="2026-04-08T00:53:02.091819" elapsed="0.000646"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:02.091784" elapsed="0.000741"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:53:02.092603" elapsed="0.000033"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:53:02.097734" elapsed="0.000969"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:53:02.099118" elapsed="0.000590"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:53:02.100110" elapsed="0.000373"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:53:02.093350" elapsed="0.007325"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T00:53:01.745916" elapsed="0.354894"/>
</kw>
<msg time="2026-04-08T00:53:02.100885" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:53:01.745063" elapsed="0.355896"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-08T00:53:01.744536" elapsed="0.356535"/>
</kw>
<msg time="2026-04-08T00:53:02.101128" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:53:01.744025" elapsed="0.357220"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:53:02.104968" elapsed="0.000485"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:53:02.105683" elapsed="0.000200"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:53:02.106086" elapsed="0.000185"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:53:02.101647" elapsed="0.004701"/>
</kw>
<msg time="2026-04-08T00:53:02.106474" level="INFO">${output} = </msg>
<var>${output}</var>
<arg>Utils.Run_Command_On_Controller</arg>
<arg>${member_ip}</arg>
<arg>${command}</arg>
<doc>Store current connection index, run keyword returning its result, restore connection in teardown.
Note that in order to avoid "got positional argument after named arguments", it is safer to use positional (not named) arguments on call.</doc>
<status status="PASS" start="2026-04-08T00:53:01.743210" elapsed="0.363298"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:53:02.107047" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:53:02.106752" elapsed="0.000336"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-08T00:53:02.107129" elapsed="0.000045"/>
</return>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-08T00:53:01.742280" elapsed="0.364991"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T00:53:01.742019" elapsed="0.365290"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-08T00:53:00.970451" elapsed="1.136893"/>
</for>
<arg>command=netstat -pnatu | grep 2550</arg>
<doc>Cycle through indices (or all), run command on each.</doc>
<status status="PASS" start="2026-04-08T00:53:00.966733" elapsed="1.140670"/>
</kw>
<return>
<value>${updated_index_list}</value>
<status status="PASS" start="2026-04-08T00:53:02.107443" elapsed="0.000025"/>
</return>
<msg time="2026-04-08T00:53:02.107600" level="INFO">${updated_index_list} = [2, 3]</msg>
<var>${updated_index_list}</var>
<arg>${index_list}</arg>
<arg>${original_index_list}</arg>
<arg>${confirm}</arg>
<doc>If the list is empty, stops all ODL instances. Otherwise stop members based on ${stop_index_list}
If ${confirm} is True, verify stopped instances are not there anymore.
The KW will return a list of available members: ${updated index_list}=${original_index_list}-${member_index_list}</doc>
<status status="PASS" start="2026-04-08T00:52:52.722784" elapsed="9.384891"/>
</kw>
<return>
<value>${updated_index_list}</value>
<status status="PASS" start="2026-04-08T00:53:02.107730" elapsed="0.000026"/>
</return>
<arg>${inventory_leader}</arg>
<doc>Convenience keyword that stops the specified member of the cluster.
The KW will return a list of available members: ${updated index_list}=${original_index_list}-${member}</doc>
<status status="PASS" start="2026-04-08T00:52:52.553630" elapsed="9.554226"/>
</kw>
<kw name="Start_Single_Member" owner="ClusterManagement">
<kw name="ClusterManagement__Build_List" owner="ClusterManagement">
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:53:02.111005" level="INFO">${member_int} = 1</msg>
<var>${member_int}</var>
<arg>${member}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:53:02.110699" elapsed="0.000332"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:53:02.111800" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>${member_int}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:53:02.111514" elapsed="0.000313"/>
</kw>
<return>
<value>${index_list}</value>
<status status="PASS" start="2026-04-08T00:53:02.111871" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:53:02.112020" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>${member}</arg>
<status status="PASS" start="2026-04-08T00:53:02.110383" elapsed="0.001662"/>
</kw>
<kw name="Return_Member_IP" owner="ClusterManagement">
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:53:02.112869" level="INFO">${member_int} = 1</msg>
<var>${member_int}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:53:02.112570" elapsed="0.000326"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:53:02.113330" level="INFO">${member_ip} = 10.30.170.48</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_int}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:53:02.113047" elapsed="0.000309"/>
</kw>
<return>
<value>${member_ip}</value>
<status status="PASS" start="2026-04-08T00:53:02.113402" elapsed="0.000027"/>
</return>
<msg time="2026-04-08T00:53:02.113547" level="INFO">${member_ip} = 10.30.170.48</msg>
<var>${member_ip}</var>
<arg>${member}</arg>
<doc>Return the IP address of the member given the member_index.</doc>
<status status="PASS" start="2026-04-08T00:53:02.112256" elapsed="0.001315"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:53:02.115919" level="INFO">${msg} = Starting ODL1 10.30.170.48</msg>
<var>${msg}</var>
<arg>"${msg}" == "${EMPTY}"</arg>
<arg>Starting ODL${member} ${member_ip}</arg>
<arg>Starting ODL${member} ${member_ip}, ${msg}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:53:02.113730" elapsed="0.002216"/>
</kw>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:53:02.122396" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:53:02.122285" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:02.122227" elapsed="0.000235"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:53:02.123458" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:53:02.123058" elapsed="0.000427"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:53:02.123946" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:53:02.123646" elapsed="0.000326"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:53:02.124015" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:53:02.124183" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:53:02.122684" elapsed="0.001525"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:53:02.129649" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:53:02.129541" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:02.129522" elapsed="0.000195"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:53:02.130814" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:53:02.130708" elapsed="0.000150"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:02.130691" elapsed="0.000188"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:53:02.131545" level="INFO">${karaf_connection_index} = 82</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:53:02.131020" elapsed="0.000560"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:53:02.131919" level="INFO">${current_connection_index} = None</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:53:02.131746" elapsed="0.000198"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T00:53:02.132658" level="FAIL">OSError: Socket is closed</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-08T00:53:02.132454" elapsed="0.001615">OSError: Socket is closed</status>
</kw>
<msg time="2026-04-08T00:53:02.134206" level="INFO">${status_write} = FAIL</msg>
<msg time="2026-04-08T00:53:02.134280" level="INFO">${message_write} = OSError: Socket is closed</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:53:02.132099" elapsed="0.002207"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T00:53:12.135578" level="FAIL">No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="FAIL" start="2026-04-08T00:53:02.134859" elapsed="10.001495">No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-08T00:53:12.136560" level="INFO">${status_wait} = FAIL</msg>
<msg time="2026-04-08T00:53:12.136611" level="INFO">${message_wait} = No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:53:02.134515" elapsed="10.002122"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T00:53:12.137597" level="FAIL">Failed to send the command: log:log "ROBOT MESSAGE: Starting ODL1 10.30.170.48"</msg>
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T00:53:12.137129" elapsed="0.000533">Failed to send the command: log:log "ROBOT MESSAGE: Starting ODL1 10.30.170.48"</status>
</kw>
<status status="FAIL" start="2026-04-08T00:53:12.136769" elapsed="0.000966">Failed to send the command: log:log "ROBOT MESSAGE: Starting ODL1 10.30.170.48"</status>
</branch>
<status status="FAIL" start="2026-04-08T00:53:12.136729" elapsed="0.001043">Failed to send the command: log:log "ROBOT MESSAGE: Starting ODL1 10.30.170.48"</status>
</if>
<kw name="Log" owner="BuiltIn">
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:12.137963" elapsed="0.000024"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:12.138218" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:53:12.138057" elapsed="0.000215"/>
</branch>
<status status="NOT RUN" start="2026-04-08T00:53:12.138038" elapsed="0.000260"/>
</if>
<return>
<value>${message_wait}</value>
<status status="NOT RUN" start="2026-04-08T00:53:12.138335" elapsed="0.000018"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:53:12.139680" elapsed="0.000424"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:53:12.140302" elapsed="0.000188"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:53:12.140641" elapsed="0.000110"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:53:12.139280" elapsed="0.001524"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T00:53:12.138665" elapsed="0.002186"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="FAIL" start="2026-04-08T00:53:02.130410" elapsed="10.010525">Failed to send the command: log:log "ROBOT MESSAGE: Starting ODL1 10.30.170.48"</status>
</kw>
<msg time="2026-04-08T00:53:12.141043" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:53:12.141087" level="INFO">${message} = Failed to send the command: log:log "ROBOT MESSAGE: Starting ODL1 10.30.170.48"</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:53:02.129868" elapsed="10.011242"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T00:53:12.141315" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:53:12.141206" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:12.141186" elapsed="0.000193"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:53:12.142202" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:53:12.142078" elapsed="0.000171"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:12.142059" elapsed="0.000212"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:53:12.142906" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T00:53:12.142432" elapsed="0.000611"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:53:12.143483" level="INFO">{1: 82, 2: 84, 3: 86}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:53:12.143212" elapsed="0.000318"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:53:12.143931" level="INFO">1</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:53:12.143684" elapsed="0.000292"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:53:12.144568" elapsed="0.000190"/>
</kw>
<msg time="2026-04-08T00:53:12.144860" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:53:12.144908" level="INFO">${old_connection_index} = 82</msg>
<var>${status}</var>
<var>${old_connection_index}</var>
<arg>Get From Dictionary</arg>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:53:12.144190" elapsed="0.000743"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='PASS'">
<kw name="Run Keywords" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${old_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:53:12.145796" elapsed="0.000142"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T00:53:12.146712" level="FAIL">OSError: Socket is closed</msg>
<arg>logout</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-08T00:53:12.146545" elapsed="0.000592">OSError: Socket is closed</status>
</kw>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:53:12.146214" elapsed="0.001003"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:53:12.147713" elapsed="0.000163"/>
</kw>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:53:12.147389" elapsed="0.000536"/>
</kw>
<arg>SSHLibrary.Switch_Connection</arg>
<arg>${old_connection_index}</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Executes all the given keywords in a sequence.</doc>
<status status="PASS" start="2026-04-08T00:53:12.145269" elapsed="0.002719"/>
</kw>
<status status="PASS" start="2026-04-08T00:53:12.145020" elapsed="0.003023"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:12.145001" elapsed="0.003068"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:53:12.148907" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:53:12.148636" elapsed="0.000298"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:53:12.148983" elapsed="0.000033"/>
</return>
<msg time="2026-04-08T00:53:12.149139" level="INFO">${odl_ip} = 10.30.170.48</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:53:12.148313" elapsed="0.000870"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${odl_ip}</arg>
<arg>port=${KARAF_SHELL_PORT}</arg>
<arg>prompt=${KARAF_PROMPT_LOGIN}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:53:12.149342" elapsed="0.000416"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:53:12.150049" level="INFO">index=140
host=10.30.170.48
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-08T00:53:12.150173" level="INFO">${karaf_connection_object} = index=140
host=10.30.170.48
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_err...</msg>
<var>${karaf_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T00:53:12.149932" elapsed="0.000273"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<arg>${karaf_connection_object.index}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:53:12.150355" elapsed="0.002419"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-08T00:53:12.153338" level="INFO">Logging into '10.30.170.48:8101' as 'karaf'.</msg>
<msg time="2026-04-08T00:53:12.156011" level="FAIL">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.48</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="FAIL" start="2026-04-08T00:53:12.152992" elapsed="0.003652">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.48</status>
</kw>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:53:12.159844" elapsed="0.000349"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:53:12.160357" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:53:12.160671" elapsed="0.000118"/>
</kw>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:53:12.157458" elapsed="0.003385"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T00:53:12.156925" elapsed="0.003963"/>
</kw>
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="FAIL" start="2026-04-08T00:53:12.141782" elapsed="0.019188">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.48</status>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:12.161323" elapsed="0.000026"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T00:53:12.161397" elapsed="0.000018"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="FAIL" start="2026-04-08T00:53:02.129198" elapsed="10.032326">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.48</status>
</kw>
<msg time="2026-04-08T00:53:12.161656" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:53:12.161708" level="INFO">${output} = NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.48</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:53:02.124578" elapsed="10.037160"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:12.162190" elapsed="0.000029"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:53:12.161839" elapsed="0.000469"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:12.161815" elapsed="0.000526"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T00:53:02.124436" elapsed="10.037939"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:53:12.169074" elapsed="0.000021"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:53:12.168922" elapsed="0.000222"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:12.168896" elapsed="0.000300"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:53:12.170688" elapsed="0.000019"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:53:12.170540" elapsed="0.000210"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:12.170515" elapsed="0.000265"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:53:12.171300" level="INFO">${karaf_connection_index} = 84</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:53:12.170976" elapsed="0.000360"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:53:12.171816" level="INFO">${current_connection_index} = None</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:53:12.171550" elapsed="0.000302"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T00:53:12.206811" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "O "D "L "1 "[C "1 "0 ". "3 "0 ". "1 "7 "0 ". "4 "8 "[K"</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T00:53:12.172556" elapsed="0.034364"/>
</kw>
<msg time="2026-04-08T00:53:12.207046" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T00:53:12.207090" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "O "D "L "1 "[C "1 "0 ". "3 "0 ". "1 "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:53:12.172067" elapsed="0.035059"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T00:53:12.209709" level="INFO">[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T00:53:12.207763" elapsed="0.002005"/>
</kw>
<msg time="2026-04-08T00:53:12.209864" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T00:53:12.209908" level="INFO">${message_wait} = [?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:53:12.207371" elapsed="0.002563"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:12.210284" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:53:12.210019" elapsed="0.000321"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:12.209996" elapsed="0.000369"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:53:12.210759" level="INFO">[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:53:12.210505" elapsed="0.000303"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:12.211085" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:53:12.210874" elapsed="0.000263"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:12.210855" elapsed="0.000321"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T00:53:12.211214" elapsed="0.000037"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:53:12.212442" elapsed="0.000375"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:53:12.212980" elapsed="0.000158"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:53:12.213313" elapsed="0.000102"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:53:12.212041" elapsed="0.001428"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T00:53:12.211519" elapsed="0.001996"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T00:53:12.170104" elapsed="0.043510"/>
</kw>
<msg time="2026-04-08T00:53:12.213708" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:53:12.213753" level="INFO">${message} = [?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:53:12.169409" elapsed="0.044371"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T00:53:12.214016" elapsed="0.000028"/>
</return>
<status status="PASS" start="2026-04-08T00:53:12.213858" elapsed="0.000221"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:12.213839" elapsed="0.000265"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 2,
close the previous connection. In any case create a new connection
to karaf console for 2, set correct prompt set and login to karaf console.
Store connection index for 2 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:12.214521" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:12.214855" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T00:53:12.214926" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T00:53:12.168447" elapsed="0.046587"/>
</kw>
<msg time="2026-04-08T00:53:12.215136" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:53:12.215197" level="INFO">${output} = [?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:53:12.162698" elapsed="0.052528"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:12.215565" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:53:12.215316" elapsed="0.000302"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:12.215298" elapsed="0.000343"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T00:53:12.162546" elapsed="0.053117"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:53:12.221195" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:53:12.221067" elapsed="0.000174"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:12.221048" elapsed="0.000216"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:53:12.222344" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:53:12.222238" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:12.222220" elapsed="0.000191"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:53:12.222770" level="INFO">${karaf_connection_index} = 86</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:53:12.222551" elapsed="0.000245"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:53:12.223148" level="INFO">${current_connection_index} = None</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:53:12.222971" elapsed="0.000226"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T00:53:12.253698" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "O "D "L "1 "[C "1 "0 ". "3 "0 ". "1 "7 "0 ". "4 "8 "[K"</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T00:53:12.223688" elapsed="0.030086"/>
</kw>
<msg time="2026-04-08T00:53:12.253874" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T00:53:12.253919" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "O "D "L "1 "[C "1 "0 ". "3 "0 ". "1 "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:53:12.223357" elapsed="0.030598"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T00:53:12.257442" level="INFO">[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T00:53:12.254476" elapsed="0.003024"/>
</kw>
<msg time="2026-04-08T00:53:12.257596" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T00:53:12.257640" level="INFO">${message_wait} = [?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:53:12.254122" elapsed="0.003543"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:12.257958" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:53:12.257742" elapsed="0.000269"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:12.257722" elapsed="0.000312"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:53:12.258437" level="INFO">[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:53:12.258189" elapsed="0.000296"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:12.258759" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:53:12.258551" elapsed="0.000277"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:12.258533" elapsed="0.000319"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T00:53:12.258885" elapsed="0.000028"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:53:12.260059" elapsed="0.000370"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:53:12.260589" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:53:12.260880" elapsed="0.000096"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:53:12.259705" elapsed="0.001322"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T00:53:12.259203" elapsed="0.001869"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T00:53:12.221924" elapsed="0.039266"/>
</kw>
<msg time="2026-04-08T00:53:12.261284" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:53:12.261326" level="INFO">${message} = [?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:53:12.221415" elapsed="0.039938"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T00:53:12.261534" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-08T00:53:12.261429" elapsed="0.000164"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:12.261410" elapsed="0.000206"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 3,
close the previous connection. In any case create a new connection
to karaf console for 3, set correct prompt set and login to karaf console.
Store connection index for 3 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:12.262000" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:12.262350" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T00:53:12.262421" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T00:53:12.220722" elapsed="0.041805"/>
</kw>
<msg time="2026-04-08T00:53:12.262619" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:53:12.262662" level="INFO">${output} = [?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:53:12.215937" elapsed="0.046754"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:12.263070" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:53:12.262804" elapsed="0.000319"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:12.262780" elapsed="0.000366"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T00:53:12.215793" elapsed="0.047399"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-08T00:53:02.124263" elapsed="10.138960"/>
</for>
<arg>${msg}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-08T00:53:02.120289" elapsed="10.142993"/>
</kw>
<kw name="Start_Members_From_List_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:53:12.269990" level="INFO">${base_command} = /tmp/karaf-0.23.1/bin/start</msg>
<var>${base_command}</var>
<arg>"""${karaf_home}""" != ""</arg>
<arg>${karaf_home}/bin/start</arg>
<arg>${NODE_START_COMMAND}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:53:12.269613" elapsed="0.000405"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:53:12.270562" level="INFO">${command} = /tmp/karaf-0.23.1/bin/start</msg>
<var>${command}</var>
<arg>"""${export_java_home}""" != ""</arg>
<arg>export JAVA_HOME="${export_java_home}"; ${base_command}</arg>
<arg>${base_command}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:53:12.270202" elapsed="0.000387"/>
</kw>
<kw name="Get Current Date" owner="DateTime">
<msg time="2026-04-08T00:53:12.271039" level="INFO">${epoch} = 1775609592.270962</msg>
<var>${epoch}</var>
<arg>time_zone=UTC</arg>
<arg>result_format=epoch</arg>
<arg>exclude_millis=False</arg>
<doc>Returns current local or UTC time with an optional increment.</doc>
<status status="PASS" start="2026-04-08T00:53:12.270762" elapsed="0.000303"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:53:12.271648" level="INFO">${gc_filepath} = /tmp/karaf-0.23.1/data/log/gc_1775609592.270962.log</msg>
<var>${gc_filepath}</var>
<arg>"""${karaf_home}""" != ""</arg>
<arg>${karaf_home}/data/log/gc_${epoch}.log</arg>
<arg>${GC_LOG_PATH}/gc_${epoch}.log</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:53:12.271252" elapsed="0.000422"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:53:12.272225" level="INFO">${gc_options} = -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:/tmp/karaf-0.23.1/data/log/gc_1775609592.270962.log</msg>
<var>${gc_options}</var>
<arg>"docker" not in """${node_start_command}"""</arg>
<arg>-XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:${gc_filepath}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:53:12.271839" elapsed="0.000413"/>
</kw>
<kw name="Run_Bash_Command_On_List_Or_All" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:53:12.273744" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:53:12.273355" elapsed="0.000451"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:53:12.274459" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:53:12.273971" elapsed="0.000514"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:53:12.274529" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:53:12.274734" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:53:12.272973" elapsed="0.001788"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:53:12.275805" level="INFO">${member_ip} = 10.30.170.48</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:53:12.275545" elapsed="0.000287"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:53:12.276608" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

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

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T00:53:12.280281" elapsed="0.000330"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:53:12.281755" level="INFO">Attempting to execute command "/tmp/karaf-0.23.1/bin/start -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:/tmp/karaf-0.23.1/data/log/gc_1775609592.270962.log" on remote system "10.30.170.48" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:53:12.280784" elapsed="0.001036"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:53:12.282772" level="INFO">${conn_id} = 144</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:53:12.281995" elapsed="0.000804"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T00:53:12.284504" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T00:53:12.284768" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T00:53:12.283941" elapsed="0.000926"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:53:12.285172" elapsed="0.000606"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T00:53:12.287139" level="INFO">Logging into '10.30.170.48:22' as 'jenkins'.</msg>
<msg time="2026-04-08T00:53:12.725290" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 00:52:33 UTC 2026

  System load:  0.26               Processes:             120
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 8%                 IPv4 address for ens3: 10.30.170.48
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 00:53:01 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-0-builder-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T00:53:12.286816" elapsed="0.438686"/>
</kw>
<msg time="2026-04-08T00:53:12.725674" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:53:12.286076" elapsed="0.439733"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T00:53:12.283219" elapsed="0.442793"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T00:53:12.726878" level="INFO">Executing command '/tmp/karaf-0.23.1/bin/start -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:/tmp/karaf-0.23.1/data/log/gc_1775609592.270962.log'.</msg>
<msg time="2026-04-08T00:53:12.750300" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-08T00:53:12.750797" level="INFO">${stdout} = </msg>
<msg time="2026-04-08T00:53:12.750918" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T00:53:12.726457" elapsed="0.024530"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:53:12.751855" elapsed="0.000688"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:53:12.754259" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:53:12.752980" elapsed="0.001378"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:53:12.754997" elapsed="0.000038"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:53:12.754581" elapsed="0.000688"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:12.754524" elapsed="0.000807"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T00:53:12.755808" elapsed="0.000072"/>
</return>
<status status="PASS" start="2026-04-08T00:53:12.755460" elapsed="0.000620"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:12.755424" elapsed="0.000717"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:53:12.756263" elapsed="0.000034"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:53:12.760289" elapsed="0.000686"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:53:12.761299" elapsed="0.000442"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:53:12.762023" elapsed="0.000275"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:53:12.756991" elapsed="0.005447"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T00:53:12.278564" elapsed="0.483973"/>
</kw>
<msg time="2026-04-08T00:53:12.762595" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:53:12.277913" elapsed="0.484742"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-08T00:53:12.277393" elapsed="0.485344"/>
</kw>
<msg time="2026-04-08T00:53:12.762777" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:53:12.276884" elapsed="0.485939"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:53:12.765853" elapsed="0.000326"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:53:12.766343" elapsed="0.000143"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:53:12.766631" elapsed="0.000094"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:53:12.763116" elapsed="0.003659"/>
</kw>
<msg time="2026-04-08T00:53:12.766869" level="INFO">${output} = </msg>
<var>${output}</var>
<arg>Utils.Run_Command_On_Controller</arg>
<arg>${member_ip}</arg>
<arg>${command}</arg>
<doc>Store current connection index, run keyword returning its result, restore connection in teardown.
Note that in order to avoid "got positional argument after named arguments", it is safer to use positional (not named) arguments on call.</doc>
<status status="PASS" start="2026-04-08T00:53:12.276043" elapsed="0.490851"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:53:12.767339" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:53:12.767070" elapsed="0.000309"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-08T00:53:12.767420" elapsed="0.000028"/>
</return>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-08T00:53:12.275128" elapsed="0.492416"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T00:53:12.274955" elapsed="0.492626"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-08T00:53:12.274817" elapsed="0.492804"/>
</for>
<arg>command=${command} ${gc_options}</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Cycle through indices (or all), run command on each.</doc>
<status status="PASS" start="2026-04-08T00:53:12.272465" elapsed="0.495217"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Verify_Members_Are_Ready" owner="ClusterManagement">
<if>
<branch type="IF" condition="${verify_cluster_sync}">
<kw name="Check_Cluster_Is_In_Sync" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:53:12.778676" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:53:12.778294" elapsed="0.000409"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:53:12.779242" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:53:12.778862" elapsed="0.000406"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:53:12.779312" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:53:12.779465" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:53:12.777898" elapsed="0.001591"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:53:12.781070" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:53:12.780733" elapsed="0.000364"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:53:12.781142" elapsed="0.000046"/>
</return>
<msg time="2026-04-08T00:53:12.781332" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:53:12.780381" elapsed="0.000983"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:53:12.789370" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:53:12.788862" elapsed="0.000556"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:53:12.790035" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:53:12.789573" elapsed="0.000507"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:53:12.795653" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.170.48', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.170.48', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-08T00:53:12.792235" elapsed="0.005714">ConnectionError: HTTPConnectionPool(host='10.30.170.48', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.170.48', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<status status="FAIL" start="2026-04-08T00:53:12.790150" elapsed="0.008153">ConnectionError: HTTPConnectionPool(host='10.30.170.48', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.170.48', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:12.798498" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:53:12.798343" elapsed="0.000446"/>
</branch>
<status status="FAIL" start="2026-04-08T00:53:12.790130" elapsed="0.008686">ConnectionError: HTTPConnectionPool(host='10.30.170.48', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.170.48', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:12.799300" elapsed="0.000027"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:53:12.799435" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:53:12.799399" elapsed="0.000076"/>
</branch>
<status status="NOT RUN" start="2026-04-08T00:53:12.799382" elapsed="0.000114"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:12.799641" elapsed="0.000021"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-08T00:53:12.799709" elapsed="0.000014"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-08T00:53:12.784289" elapsed="0.015530">ConnectionError: HTTPConnectionPool(host='10.30.170.48', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.170.48', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-08T00:53:12.799892" elapsed="0.000015"/>
</return>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="FAIL" start="2026-04-08T00:53:12.781575" elapsed="0.018415">ConnectionError: HTTPConnectionPool(host='10.30.170.48', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.170.48', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:12.800276" elapsed="0.000025"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-08T00:53:12.800405" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:53:12.800370" elapsed="0.000074"/>
</branch>
<status status="NOT RUN" start="2026-04-08T00:53:12.800352" elapsed="0.000113"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:12.800655" elapsed="0.000024"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:12.800867" elapsed="0.000023"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="NOT RUN" start="2026-04-08T00:53:12.800942" elapsed="0.000020"/>
</return>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="FAIL" start="2026-04-08T00:53:12.779984" elapsed="0.021076">ConnectionError: HTTPConnectionPool(host='10.30.170.48', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.170.48', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="NOT RUN" start="2026-04-08T00:53:12.801271" elapsed="0.000022"/>
</continue>
<status status="NOT RUN" start="2026-04-08T00:53:12.801225" elapsed="0.000096"/>
</branch>
<status status="NOT RUN" start="2026-04-08T00:53:12.801137" elapsed="0.000206"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:12.801495" elapsed="0.000022"/>
</kw>
<var name="${index}">1</var>
<status status="FAIL" start="2026-04-08T00:53:12.779739" elapsed="0.021827">ConnectionError: HTTPConnectionPool(host='10.30.170.48', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.170.48', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-04-08T00:53:12.779548" elapsed="0.022076">ConnectionError: HTTPConnectionPool(host='10.30.170.48', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.170.48', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</for>
<arg>${member_index_list}</arg>
<doc>Fail if no-sync is detected on a member from list (or any).</doc>
<status status="FAIL" start="2026-04-08T00:53:12.777483" elapsed="0.024270">ConnectionError: HTTPConnectionPool(host='10.30.170.48', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.170.48', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<status status="FAIL" start="2026-04-08T00:53:12.777136" elapsed="0.024700">ConnectionError: HTTPConnectionPool(host='10.30.170.48', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.170.48', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</branch>
<status status="FAIL" start="2026-04-08T00:53:12.777116" elapsed="0.024764">ConnectionError: HTTPConnectionPool(host='10.30.170.48', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.170.48', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</if>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Verify_Restconf_Is_Available" owner="ClusterManagement">
<arg>${member_index_list}</arg>
<status status="NOT RUN" start="2026-04-08T00:53:12.802274" elapsed="0.000035"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:53:12.801970" elapsed="0.000382"/>
</branch>
<status status="NOT RUN" start="2026-04-08T00:53:12.801948" elapsed="0.000436"/>
</if>
<if>
<branch type="IF" condition="${verify_system_status} and (&quot;${service_list}&quot; != &quot;[[]]&quot;)">
<kw name="Check Status Of Services Is OPERATIONAL" owner="ClusterManagement">
<arg>@{service_list}</arg>
<doc>This keyword will verify whether all the services are operational in all the ODL nodes</doc>
<status status="NOT RUN" start="2026-04-08T00:53:12.802742" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:53:12.802469" elapsed="0.000335"/>
</branch>
<status status="NOT RUN" start="2026-04-08T00:53:12.802445" elapsed="0.000383"/>
</if>
<arg>${member_index_list}</arg>
<arg>${wait_for_sync}</arg>
<arg>${verify_restconf}</arg>
<arg>${check_system_status}</arg>
<arg>${service_list}</arg>
<doc>Verifies the specified readiness conditions for the given listed members after startup.
If ${verify_cluster_sync}, verifies the datastores have synced with the rest of the cluster.
If True, verifies RESTCONF is available.
If ${verify_system_status}, verifies the system services are OPERATIONAL.</doc>
<status status="FAIL" start="2026-04-08T00:53:12.776718" elapsed="0.026193">ConnectionError: HTTPConnectionPool(host='10.30.170.48', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.170.48', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Verify_Members_Are_Ready" owner="ClusterManagement">
<if>
<branch type="IF" condition="${verify_cluster_sync}">
<kw name="Check_Cluster_Is_In_Sync" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:53:22.820662" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:53:22.820021" elapsed="0.000673"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:53:22.821180" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:53:22.820864" elapsed="0.000344"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:53:22.821256" elapsed="0.000036"/>
</return>
<msg time="2026-04-08T00:53:22.821482" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:53:22.819466" elapsed="0.002042"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:53:22.823027" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:53:22.822725" elapsed="0.000329"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:53:22.823100" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:53:22.823262" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:53:22.822369" elapsed="0.000931"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:53:22.832276" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:53:22.831765" elapsed="0.000568"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:53:22.832964" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:53:22.832493" elapsed="0.000517"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:53:22.960695" level="INFO">GET Request : url=http://10.30.170.48:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:53:22.960984" level="INFO">GET Response : url=http://10.30.170.48:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 status=401, reason=Unauthorized 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '524'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 401 Unauthorized&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 401 Unauthorized&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;401&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Unauthorized&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;org.jolokia.osgi.servlet.JolokiaServlet&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-04-08T00:53:22.961444" level="FAIL">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.170.48:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-08T00:53:22.835146" elapsed="0.128096">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.170.48:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<status status="FAIL" start="2026-04-08T00:53:22.833081" elapsed="0.130848">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.170.48:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:22.964424" elapsed="0.000062"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:53:22.964014" elapsed="0.001080"/>
</branch>
<status status="FAIL" start="2026-04-08T00:53:22.833062" elapsed="0.132127">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.170.48:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:22.966243" elapsed="0.000060"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:53:22.966552" elapsed="0.000031"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:53:22.966469" elapsed="0.000175"/>
</branch>
<status status="NOT RUN" start="2026-04-08T00:53:22.966429" elapsed="0.000263"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:22.967040" elapsed="0.000050"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-08T00:53:22.967230" elapsed="0.000035"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-08T00:53:22.825978" elapsed="0.141499">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.170.48:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-08T00:53:22.967641" elapsed="0.000046"/>
</return>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="FAIL" start="2026-04-08T00:53:22.823518" elapsed="0.144353">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.170.48:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:22.968469" elapsed="0.000057"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-08T00:53:22.968762" elapsed="0.000027"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:53:22.968681" elapsed="0.000168"/>
</branch>
<status status="NOT RUN" start="2026-04-08T00:53:22.968643" elapsed="0.000255"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:22.969412" elapsed="0.000063"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:22.969908" elapsed="0.000052"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="NOT RUN" start="2026-04-08T00:53:22.970057" elapsed="0.000032"/>
</return>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="FAIL" start="2026-04-08T00:53:22.821974" elapsed="0.148337">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.170.48:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="NOT RUN" start="2026-04-08T00:53:22.970581" elapsed="0.000035"/>
</continue>
<status status="NOT RUN" start="2026-04-08T00:53:22.970497" elapsed="0.000175"/>
</branch>
<status status="NOT RUN" start="2026-04-08T00:53:22.970460" elapsed="0.000261"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:22.971107" elapsed="0.000078"/>
</kw>
<var name="${index}">1</var>
<status status="FAIL" start="2026-04-08T00:53:22.821752" elapsed="0.149553">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.170.48:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-04-08T00:53:22.821566" elapsed="0.149853">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.170.48:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</for>
<arg>${member_index_list}</arg>
<doc>Fail if no-sync is detected on a member from list (or any).</doc>
<status status="FAIL" start="2026-04-08T00:53:22.818828" elapsed="0.152686">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.170.48:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<status status="FAIL" start="2026-04-08T00:53:22.818367" elapsed="0.153205">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.170.48:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</branch>
<status status="FAIL" start="2026-04-08T00:53:22.818336" elapsed="0.153267">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.170.48:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</if>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Verify_Restconf_Is_Available" owner="ClusterManagement">
<arg>${member_index_list}</arg>
<status status="NOT RUN" start="2026-04-08T00:53:22.971867" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:53:22.971669" elapsed="0.000251"/>
</branch>
<status status="NOT RUN" start="2026-04-08T00:53:22.971653" elapsed="0.000290"/>
</if>
<if>
<branch type="IF" condition="${verify_system_status} and (&quot;${service_list}&quot; != &quot;[[]]&quot;)">
<kw name="Check Status Of Services Is OPERATIONAL" owner="ClusterManagement">
<arg>@{service_list}</arg>
<doc>This keyword will verify whether all the services are operational in all the ODL nodes</doc>
<status status="NOT RUN" start="2026-04-08T00:53:22.972221" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:53:22.971997" elapsed="0.000281"/>
</branch>
<status status="NOT RUN" start="2026-04-08T00:53:22.971981" elapsed="0.000320"/>
</if>
<arg>${member_index_list}</arg>
<arg>${wait_for_sync}</arg>
<arg>${verify_restconf}</arg>
<arg>${check_system_status}</arg>
<arg>${service_list}</arg>
<doc>Verifies the specified readiness conditions for the given listed members after startup.
If ${verify_cluster_sync}, verifies the datastores have synced with the rest of the cluster.
If True, verifies RESTCONF is available.
If ${verify_system_status}, verifies the system services are OPERATIONAL.</doc>
<status status="FAIL" start="2026-04-08T00:53:22.817658" elapsed="0.154723">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.170.48:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<kw name="Verify_Members_Are_Ready" owner="ClusterManagement">
<if>
<branch type="IF" condition="${verify_cluster_sync}">
<kw name="Check_Cluster_Is_In_Sync" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:53:32.990305" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:53:32.989786" elapsed="0.000553"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:53:32.990825" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:53:32.990512" elapsed="0.000340"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:53:32.990900" elapsed="0.000039"/>
</return>
<msg time="2026-04-08T00:53:32.991067" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:53:32.989200" elapsed="0.001892"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:53:33.043727" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:53:33.043343" elapsed="0.000420"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:53:33.043957" elapsed="0.000045"/>
</return>
<msg time="2026-04-08T00:53:33.044131" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:53:33.042762" elapsed="0.001411"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:53:33.051809" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:53:33.051307" elapsed="0.000552"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:53:33.052553" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:53:33.052019" elapsed="0.000581"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:53:33.396651" level="INFO">GET Request : url=http://10.30.170.48:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:53:33.397001" level="INFO">GET Response : url=http://10.30.170.48:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Wed, 08 Apr 2026 00:53:33 GMT', 'Expires': 'Tue, 07 Apr 2026 23:53:33 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-config","member-1-shard-topology-config","member-1-shard-inventory-config","member-1-shard-toaster-config"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1775609613,"status":200} 
 </msg>
<msg time="2026-04-08T00:53:33.397529" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:53:33.054776" elapsed="0.342935"/>
</kw>
<status status="PASS" start="2026-04-08T00:53:33.052679" elapsed="0.345605"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:33.398813" elapsed="0.000056"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:53:33.398366" elapsed="0.001141"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:33.052657" elapsed="0.346908"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:53:33.407674" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-config","member-1-shard-topology-config","member-1-shard-inventory-config","member-1-shard-toaster-config"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1775609613,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:53:33.404942" elapsed="0.002840"/>
</kw>
<status status="PASS" start="2026-04-08T00:53:33.402460" elapsed="0.005373"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:33.402414" elapsed="0.005458"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:53:33.411476" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:53:33.409074" elapsed="0.002501"/>
</kw>
<status status="PASS" start="2026-04-08T00:53:33.407956" elapsed="0.003669"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:33.407938" elapsed="0.003726"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:53:33.413035" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:53:33.412182" elapsed="0.000895"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:33.413762" elapsed="0.000035"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:53:33.413331" elapsed="0.000518"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:53:33.414692" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:53:33.414187" elapsed="0.000551"/>
</kw>
<status status="PASS" start="2026-04-08T00:53:33.413888" elapsed="0.000900"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:33.413310" elapsed="0.001513"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:53:33.416115" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:53:33.415305" elapsed="0.000889"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:33.416764" elapsed="0.000035"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:53:33.416336" elapsed="0.000515"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:53:33.417769" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:53:33.417271" elapsed="0.000543"/>
</kw>
<status status="PASS" start="2026-04-08T00:53:33.416889" elapsed="0.000973"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:33.416316" elapsed="0.001581"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:53:33.418098" elapsed="0.000862"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:53:33.419981" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:53:33.419372" elapsed="0.000651"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:53:33.420327" elapsed="0.002905"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:53:33.400772" elapsed="0.022598"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:53:33.423582" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:53:33.423449" elapsed="0.000181"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:33.423428" elapsed="0.000225"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:53:33.426979" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1775609613,...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:53:33.423809" elapsed="0.003201"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:53:33.427063" elapsed="0.000038"/>
</return>
<msg time="2026-04-08T00:53:33.427253" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1775609613,...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:53:33.047095" elapsed="0.380187"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:53:33.427342" elapsed="0.000026"/>
</return>
<msg time="2026-04-08T00:53:33.427496" level="INFO">${conf_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1775609613,...</msg>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-08T00:53:33.044400" elapsed="0.383124"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:53:33.428472" level="INFO">{
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1775609613,
 "value": {
  "LocalShards": [
   "member-1-shard-default-config",
   "member-1-shard-inventory-config",
   "member-1-shard-toaster-config",
   "member-1-shard-topology-config"
  ],
  "MemberName": "member-1",
  "SyncStatus": true
 }
}
</msg>
<arg>${shard_manager_text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:53:33.428182" elapsed="0.000374"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:53:33.430041" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1775609613, 'value': {...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:53:33.429119" elapsed="0.000951"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-08T00:53:33.430119" elapsed="0.000031"/>
</return>
<msg time="2026-04-08T00:53:33.430300" level="INFO">${manager_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1775609613, 'value': {...</msg>
<var>${manager_object}</var>
<arg>${shard_manager_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-08T00:53:33.428766" elapsed="0.001562"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:53:33.430715" level="INFO">${value_object} = {'LocalShards': ['member-1-shard-default-config', 'member-1-shard-inventory-config', 'member-1-shard-toaster-config', 'member-1-shard-topology-config'], 'MemberName': 'member-1', 'SyncStatus': True}</msg>
<var>${value_object}</var>
<arg>dictionary=${manager_object}</arg>
<arg>key=value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:53:33.430482" elapsed="0.000260"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:53:33.431109" level="INFO">${sync_status} = True</msg>
<var>${sync_status}</var>
<arg>dictionary=${value_object}</arg>
<arg>key=SyncStatus</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:53:33.430897" elapsed="0.000238"/>
</kw>
<return>
<value>${sync_status}</value>
<status status="PASS" start="2026-04-08T00:53:33.431198" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:53:33.431350" level="INFO">${conf_status} = True</msg>
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="PASS" start="2026-04-08T00:53:33.427764" elapsed="0.003612"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-08T00:53:33.431562" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:53:33.431450" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:33.431430" elapsed="0.000195"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:53:33.439225" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:53:33.438738" elapsed="0.000536"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:53:33.439979" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:53:33.439516" elapsed="0.000509"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:53:33.449364" level="INFO">GET Request : url=http://10.30.170.48:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:53:33.449502" level="INFO">GET Response : url=http://10.30.170.48:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Wed, 08 Apr 2026 00:53:33 GMT', 'Expires': 'Tue, 07 Apr 2026 23:53:33 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-operational","member-1-shard-topology-operational","member-1-shard-inventory-operational","member-1-shard-toaster-operational"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1775609613,"status":200} 
 </msg>
<msg time="2026-04-08T00:53:33.449681" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:53:33.442220" elapsed="0.007541"/>
</kw>
<status status="PASS" start="2026-04-08T00:53:33.440094" elapsed="0.009901"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:33.450199" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:53:33.450027" elapsed="0.000475"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:33.440074" elapsed="0.010452"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:53:33.456526" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-operational","member-1-shard-topology-operational","member-1-shard-inventory-operational","member-1-shard-toaster-operational"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1775609613,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:53:33.452936" elapsed="0.003730"/>
</kw>
<status status="PASS" start="2026-04-08T00:53:33.451672" elapsed="0.005063"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:33.451653" elapsed="0.005138"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:53:33.461906" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:53:33.458459" elapsed="0.003584"/>
</kw>
<status status="PASS" start="2026-04-08T00:53:33.456906" elapsed="0.005204"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:33.456880" elapsed="0.005305"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:53:33.464054" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:53:33.462866" elapsed="0.001247"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:33.464948" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:53:33.464359" elapsed="0.000675"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:53:33.465951" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:53:33.465449" elapsed="0.000548"/>
</kw>
<status status="PASS" start="2026-04-08T00:53:33.465073" elapsed="0.000974"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:33.464330" elapsed="0.001752"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:53:33.467404" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:53:33.466574" elapsed="0.000871"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:33.468011" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:53:33.467582" elapsed="0.000514"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:53:33.468967" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:53:33.468460" elapsed="0.000552"/>
</kw>
<status status="PASS" start="2026-04-08T00:53:33.468148" elapsed="0.000915"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:33.467562" elapsed="0.001536"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:53:33.469334" elapsed="0.000766"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:53:33.470998" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:53:33.470397" elapsed="0.000642"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:53:33.471311" elapsed="0.002647"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:53:33.450970" elapsed="0.023175"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:53:33.474367" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:53:33.474236" elapsed="0.000177"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:33.474216" elapsed="0.000220"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:53:33.477723" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:53:33.474583" elapsed="0.003170"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:53:33.477803" elapsed="0.000035"/>
</return>
<msg time="2026-04-08T00:53:33.477968" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:53:33.434564" elapsed="0.043430"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:53:33.478053" elapsed="0.000026"/>
</return>
<msg time="2026-04-08T00:53:33.478218" level="INFO">${oper_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-08T00:53:33.431827" elapsed="0.046418"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:53:33.479066" level="INFO">{
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1775609613,
 "value": {
  "LocalShards": [
   "member-1-shard-default-operational",
   "member-1-shard-inventory-operational",
   "member-1-shard-toaster-operational",
   "member-1-shard-topology-operational"
  ],
  "MemberName": "member-1",
  "SyncStatus": true
 }
}
</msg>
<arg>${shard_manager_text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:53:33.478812" elapsed="0.000302"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:53:33.480440" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1775609613, ...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:53:33.479679" elapsed="0.000791"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-08T00:53:33.480519" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:53:33.480678" level="INFO">${manager_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1775609613, ...</msg>
<var>${manager_object}</var>
<arg>${shard_manager_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-08T00:53:33.479339" elapsed="0.001366"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:53:33.481080" level="INFO">${value_object} = {'LocalShards': ['member-1-shard-default-operational', 'member-1-shard-inventory-operational', 'member-1-shard-toaster-operational', 'member-1-shard-topology-operational'], 'MemberName': 'member-1', '...</msg>
<var>${value_object}</var>
<arg>dictionary=${manager_object}</arg>
<arg>key=value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:53:33.480859" elapsed="0.000248"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:53:33.481499" level="INFO">${sync_status} = True</msg>
<var>${sync_status}</var>
<arg>dictionary=${value_object}</arg>
<arg>key=SyncStatus</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:53:33.481288" elapsed="0.000236"/>
</kw>
<return>
<value>${sync_status}</value>
<status status="PASS" start="2026-04-08T00:53:33.481571" elapsed="0.000027"/>
</return>
<msg time="2026-04-08T00:53:33.481719" level="INFO">${oper_status} = True</msg>
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="PASS" start="2026-04-08T00:53:33.478460" elapsed="0.003284"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="PASS" start="2026-04-08T00:53:33.481787" elapsed="0.000025"/>
</return>
<msg time="2026-04-08T00:53:33.481933" level="INFO">${status} = True</msg>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="PASS" start="2026-04-08T00:53:32.991583" elapsed="0.490375"/>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="PASS" start="2026-04-08T00:53:33.482137" elapsed="0.000053"/>
</continue>
<status status="PASS" start="2026-04-08T00:53:33.482026" elapsed="0.000197"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:33.482009" elapsed="0.000238"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:33.482393" elapsed="0.000021"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T00:53:32.991352" elapsed="0.491095"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-08T00:53:32.991150" elapsed="0.491334"/>
</for>
<arg>${member_index_list}</arg>
<doc>Fail if no-sync is detected on a member from list (or any).</doc>
<status status="PASS" start="2026-04-08T00:53:32.988591" elapsed="0.493950"/>
</kw>
<status status="PASS" start="2026-04-08T00:53:32.988046" elapsed="0.494528"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:32.988011" elapsed="0.494586"/>
</if>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Verify_Restconf_Is_Available" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:53:33.484093" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:53:33.483719" elapsed="0.000401"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:53:33.484653" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:53:33.484355" elapsed="0.000324"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:53:33.484723" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:53:33.484874" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:53:33.483346" elapsed="0.001552"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:53:33.485950" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:53:33.485659" elapsed="0.000317"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:53:33.486020" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:53:33.486182" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:53:33.485317" elapsed="0.000892"/>
</kw>
<kw name="Get_As_Json_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:53:33.537179" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:53:33.536686" elapsed="0.000552"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:53:33.538240" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:53:33.537898" elapsed="0.000428">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-08T00:53:33.538441" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:53:33.537517" elapsed="0.000973"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:53:33.539199" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:53:33.538743" elapsed="0.000509"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T00:53:33.539684" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-08T00:53:33.539890" level="INFO">${template} = /rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T00:53:33.539505" elapsed="0.000433"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:53:33.540518" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:53:33.540230" elapsed="0.000373"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:53:33.541750" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:53:33.541496" elapsed="0.000300"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-08T00:53:33.542306" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-08T00:53:33.541955" elapsed="0.000377"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:33.542658" elapsed="0.000021"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:33.542859" elapsed="0.000023"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:33.543031" elapsed="0.000020"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-08T00:53:33.542526" elapsed="0.000561"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-08T00:53:33.542384" elapsed="0.000734"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-08T00:53:33.543179" elapsed="0.000034"/>
</return>
<msg time="2026-04-08T00:53:33.543346" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-08T00:53:33.541152" elapsed="0.002220"/>
</kw>
<status status="PASS" start="2026-04-08T00:53:33.540758" elapsed="0.002664"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:33.543671" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:53:33.543467" elapsed="0.000339"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:33.540703" elapsed="0.003144"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:53:33.544635" level="INFO">${final_text} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:53:33.544104" elapsed="0.000584"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T00:53:33.544766" elapsed="0.000062"/>
</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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="PASS" start="2026-04-08T00:53:33.535149" elapsed="0.009930"/>
</kw>
<msg time="2026-04-08T00:53:33.545176" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:53:33.521380" elapsed="0.023869"/>
</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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:33.566645" elapsed="0.000054"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:33.587174" 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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:33.610103" elapsed="0.000042"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:33.610515" elapsed="0.000034"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:33.610774" elapsed="0.000028"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:33.612369" elapsed="0.000071"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:53:33.611150" elapsed="0.001381"/>
</branch>
<status status="NOT RUN" start="2026-04-08T00:53:33.611127" elapsed="0.001470"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:33.612862" elapsed="0.000082"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:33.613263" elapsed="0.000084"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:33.613654" elapsed="0.000085"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-08T00:53:33.611072" elapsed="0.002802"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-08T00:53:33.610888" elapsed="0.003025"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:33.614118" elapsed="0.000028"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-08T00:53:33.614413" elapsed="0.000024"/>
</return>
<msg time="2026-04-08T00:53:33.614610" level="INFO">${uri} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-08T00:53:33.517344" elapsed="0.097303"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:53:33.617237" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:53:33.616600" elapsed="0.000886">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-08T00:53:33.617641" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:53:33.615764" elapsed="0.001911"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:33.618199" elapsed="0.000029"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:53:33.617771" elapsed="0.000644"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:53:33.619433" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:53:33.618699" elapsed="0.000833"/>
</kw>
<status status="PASS" start="2026-04-08T00:53:33.618452" elapsed="0.001263"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:33.617746" elapsed="0.002004"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:53:33.633143" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:53:33.619957" elapsed="0.013234"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-08T00:53:33.633255" elapsed="0.000043"/>
</return>
<msg time="2026-04-08T00:53:33.633439" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:53:33.615288" elapsed="0.018178"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:53:33.635510" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:53:33.635014" elapsed="0.000684">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-08T00:53:33.635836" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:53:33.634450" elapsed="0.001413"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-08T00:53:33.636336" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-08T00:53:33.636139" elapsed="0.000259"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:33.636098" elapsed="0.000324"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:33.636571" elapsed="0.000022"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:33.636743" elapsed="0.000020"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-08T00:53:33.636809" elapsed="0.000015"/>
</return>
<msg time="2026-04-08T00:53:33.639003" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:53:33.633846" elapsed="0.005184"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:53:33.640802" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:53:33.640328" elapsed="0.000690"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:53:33.641873" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:53:33.641407" elapsed="0.000516"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:53:34.125801" level="INFO">GET Request : url=http://10.30.170.48:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 path_url=/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01jewze00gqgu8yuon50tdwq65226.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:53:34.127048" level="INFO">GET Response : url=http://10.30.170.48:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 status=200, reason=OK 
 headers={'Set-Cookie': 'JSESSIONID=node01jewze00gqgu8yuon50tdwq65226.node0; Path=/rests; HttpOnly, rememberMe=deleteMe; Path=/rests; Max-Age=0; Expires=Tue, 07-Apr-2026 00:53:33 GMT; SameSite=lax', 'Expires': 'Thu, 01 Jan 1970 00:00:00 GMT', 'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Transfer-Encoding': 'chunked'} 
 body={"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","hidden-symmetric-keys","encrypted-private-keys","asymmetrically-encrypted-value-format","cms-encrypted-data-format","cleartext-private-keys","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["ssh-client-keepalives","client-ident-hostbased","client-ident-publickey","client-ident-password"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-ex... (set the log level to DEBUG or TRACE to see the full content) 
 </msg>
<msg time="2026-04-08T00:53:34.127869" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:53:33.644144" elapsed="0.483903"/>
</kw>
<status status="PASS" start="2026-04-08T00:53:33.641992" elapsed="0.486613"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:34.129107" elapsed="0.000059"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:53:34.128683" elapsed="0.001101"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:33.641973" elapsed="0.487868"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:53:34.136879" level="INFO">{"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","hidden-symmetric-keys","encrypted-private-keys","asymmetrically-encrypted-value-format","cms-encrypted-data-format","cleartext-private-keys","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["ssh-client-keepalives","client-ident-hostbased","client-ident-publickey","client-ident-password"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-experimenter-types?revision=2015-10-20","namespace":"urn:opendaylight:openflowplugin:experimenter:types","conformance-type":"import"},{"name":"ietf-ip_2018-02-22","revision":"2018-02-22","schema":"/rests/modules/ietf-ip?revision=2018-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-ip","conformance-type":"import","feature":["ipv6-privacy-autoconf","ipv4-non-contiguous-netmasks"]},{"name":"ietf-tcp-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-client","conformance-type":"import","feature":["local-binding-supported","tcp-client-keepalives"]},{"name":"node-config_2014-10-15","revision":"2014-10-15","schema":"/rests/modules/node-config?revision=2014-10-15","namespace":"urn:opendaylight:module:config","conformance-type":"import"},{"name":"ietf-restconf_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf","conformance-type":"import"},{"name":"ietf-datastores_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-datastores?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-datastores","conformance-type":"import"},{"name":"ietf-yang-patch_2017-02-22","revision":"2017-02-22","schema":"/rests/modules/ietf-yang-patch?revision=2017-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-patch","conformance-type":"import"},{"name":"sal-group_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-group?revision=2013-09-18","namespace":"urn:opendaylight:group:service","conformance-type":"import"},{"name":"odl-codegen-extensions_2024-06-27","revision":"2024-06-27","schema":"/rests/modules/odl-codegen-extensions?revision=2024-06-27","namespace":"urn:opendaylight:yang:extension:codegen","conformance-type":"import"},{"name":"sal-meter_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-meter?revision=2013-09-18","namespace":"urn:opendaylight:meter:service","conformance-type":"import"},{"name":"ietf-interfaces_2018-02-20","revision":"2018-02-20","schema":"/rests/modules/ietf-interfaces?revision=2018-02-20","namespace":"urn:ietf:params:xml:ns:yang:ietf-interfaces","conformance-type":"import","feature":["pre-provisioning","if-mib","arbitrary-names"]},{"name":"opendaylight-l2-types_2013-08-27","revision":"2013-08-27","schema":"/rests/modules/opendaylight-l2-types?revision=2013-08-27","namespace":"urn:opendaylight:l2:types","conformance-type":"import"},{"name":"opendaylight-flow-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-flow-types?revision=2013-10-26","namespace":"urn:opendaylight:flow:types","conformance-type":"import"},{"name":"lldp-speaker-config_2016-05-12","revision":"2016-05-12","schema":"/rests/modules/lldp-speaker-config?revision=2016-05-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker:config","conformance-type":"import"},{"name":"aaa-cert_2015-11-26","revision":"2015-11-26","schema":"/rests/modules/aaa-cert?revision=2015-11-26","namespace":"urn:opendaylight:yang:aaa:cert","conformance-type":"import"},{"name":"openflow-action_2015-02-03","revision":"2015-02-03","schema":"/rests/modules/openflow-action?revision=2015-02-03","namespace":"urn:opendaylight:openflow:common:action","conformance-type":"import"},{"name":"openflow-approved-extensions_2016-08-02","revision":"2016-08-02","schema":"/rests/modules/openflow-approved-extensions?revision=2016-08-02","namespace":"urn:opendaylight:openflow:approved:extensions","conformance-type":"import"},{"name":"nc-notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/nc-notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netmod:notification","conformance-type":"import"},{"name":"ietf-netconf-nmda_2019-01-07","revision":"2019-01-07","schema":"/rests/modules/ietf-netconf-nmda?revision=2019-01-07","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-nmda","conformance-type":"import","feature":["with-defaults","origin"]},{"name":"ietf-tcp-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-common","conformance-type":"import","feature":["keepalives-supported"]},{"name":"network-topology_2013-10-21","revision":"2013-10-21","schema":"/rests/modules/network-topology?revision=2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:network-topology","conformance-type":"import"},{"name":"aaa-encrypt-service-config_2024-02-02","revision":"2024-02-02","schema":"/rests/modules/aaa-encrypt-service-config?revision=2024-02-02","namespace":"config:aaa:authn:encrypt:service:config","conformance-type":"import"},{"name":"openflow-instruction_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-instruction?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:instruction","conformance-type":"import"},{"name":"ietf-tls-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-client","conformance-type":"import","feature":["client-ident-x509-cert","server-auth-x509-cert"]},{"name":"opendaylight-group-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-group-statistics?revision=2013-11-11","namespace":"urn:opendaylight:group:statistics","conformance-type":"import"},{"name":"cluster-admin_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/cluster-admin?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:cluster:admin","conformance-type":"import"},{"name":"opendaylight-flow-statistics_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-flow-statistics?revision=2013-08-19","namespace":"urn:opendaylight:flow:statistics","conformance-type":"import"},{"name":"opendaylight-table-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-table-types?revision=2013-10-26","namespace":"urn:opendaylight:table:types","conformance-type":"import"},{"name":"forwarding-rules-manager-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/forwarding-rules-manager-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:forwardingrules-manager:config","conformance-type":"import"},{"name":"odl-srm-types_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-types?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:types","conformance-type":"import"},{"name":"ietf-x509-cert-to-name_2014-12-10","revision":"2014-12-10","schema":"/rests/modules/ietf-x509-cert-to-name?revision=2014-12-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-x509-cert-to-name","conformance-type":"import"},{"name":"flow-node-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-node-inventory?revision=2013-08-19","namespace":"urn:opendaylight:flow:inventory","conformance-type":"import"},{"name":"flow-errors_2013-11-16","revision":"2013-11-16","schema":"/rests/modules/flow-errors?revision=2013-11-16","namespace":"urn:opendaylight:flow:errors","conformance-type":"import"},{"name":"ietf-netconf_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:netconf:base:1.0","conformance-type":"import","feature":["xpath","url","rollback-on-error","validate","startup","candidate","confirmed-commit","writable-running"]},{"name":"iana-ssh-public-key-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-public-key-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-public-key-algs","conformance-type":"import"},{"name":"aaa-cert-mdsal_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/aaa-cert-mdsal?revision=2016-03-21","namespace":"urn:opendaylight:yang:aaa:cert:mdsal","conformance-type":"import"},{"name":"odl-device-notification_2024-02-18","revision":"2024-02-18","schema":"/rests/modules/odl-device-notification?revision=2024-02-18","namespace":"urn:opendaylight:device:notification","conformance-type":"import"},{"name":"ietf-origin_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-origin?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-origin","conformance-type":"import"},{"name":"openflow-augments_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-augments?revision=2015-02-25","namespace":"urn:opendaylight:openflow:augments","conformance-type":"import"},{"name":"iana-ssh-encryption-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-encryption-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-encryption-algs","conformance-type":"import"},{"name":"ietf-truststore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-truststore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-truststore","conformance-type":"import","feature":["inline-definitions-supported"]},{"name":"distributed-datastore-provider_2025-01-30","revision":"2025-01-30","schema":"/rests/modules/distributed-datastore-provider?revision=2025-01-30","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:distributed-datastore-provider","conformance-type":"import"},{"name":"opendaylight-group-types_2013-10-18","revision":"2013-10-18","schema":"/rests/modules/opendaylight-group-types?revision=2013-10-18","namespace":"urn:opendaylight:group:types","conformance-type":"import"},{"name":"sal-remote-augment_2023-11-03","revision":"2023-11-03","schema":"/rests/modules/sal-remote-augment?revision=2023-11-03","namespace":"urn:sal:restconf:event:subscription","conformance-type":"import"},{"name":"opendaylight-ipv6-arbitrary-bitmask-fields_2016-02-24","revision":"2016-02-24","schema":"/rests/modules/opendaylight-ipv6-arbitrary-bitmask-fields?revision=2016-02-24","namespace":"urn:opendaylight:opendaylight-ipv6-arbitrary-bitmask-fields","conformance-type":"import"},{"name":"sal-flows-batch_2016-03-14","revision":"2016-03-14","schema":"/rests/modules/sal-flows-batch?revision=2016-03-14","namespace":"urn:opendaylight:flows:service","conformance-type":"import"},{"name":"ietf-tls-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-common","conformance-type":"import","feature":["tls12","hello-params","tls13"]},{"name":"openflow-types_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-types?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:types","conformance-type":"import"},{"name":"ietf-netconf-with-defaults_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf-with-defaults?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults","conformance-type":"import"},{"name":"odl-srm-ops_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-ops?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:ops","conformance-type":"import"},{"name":"odl-general-entity_2015-09-30","revision":"2015-09-30","schema":"/rests/modules/odl-general-entity?revision=2015-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:mdsal:core:general-entity","conformance-type":"import"},{"name":"iana-ssh-key-exchange-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-key-exchange-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-key-exchange-algs","conformance-type":"import"},{"name":"node-ssl-connection-error_2019-07-23","revision":"2019-07-23","schema":"/rests/modules/node-ssl-connection-error?revision=2019-07-23","namespace":"urn:opendaylight:node-ssl-connection-error:service","conformance-type":"import"},{"name":"openflow-protocol_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-protocol?revision=2013-07-31","namespace":"urn:opendaylight:openflow:protocol","conformance-type":"import"},{"name":"ietf-udp-server_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-server?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-server","conformance-type":"import"},{"name":"ietf-keystore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-keystore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-keystore","conformance-type":"import","feature":["asymmetric-keys","inline-definitions-supported"]},{"name":"aaa_2016-12-14","revision":"2016-12-14","schema":"/rests/modules/aaa?revision=2016-12-14","namespace":"urn:opendaylight:params:xml:ns:yang:aaa","conformance-type":"import"},{"name":"aaa-cert-rpc_2015-12-15","revision":"2015-12-15","schema":"/rests/modules/aaa-cert-rpc?revision=2015-12-15","namespace":"urn:opendaylight:yang:aaa:cert:rpc","conformance-type":"import"},{"name":"system-notifications_2013-09-27","revision":"2013-09-27","schema":"/rests/modules/system-notifications?revision=2013-09-27","namespace":"urn:opendaylight:openflow:system","conformance-type":"import"},{"name":"sal-flat-batch_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/sal-flat-batch?revision=2016-03-21","namespace":"urn:opendaylight:flat-batch:service","conformance-type":"import"},{"name":"notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netconf:notification:1.0","conformance-type":"import"},{"name":"sal-remote_2014-01-14","revision":"2014-01-14","schema":"/rests/modules/sal-remote?revision=2014-01-14","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:remote","conformance-type":"import"},{"name":"yang-ext_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/yang-ext?revision=2013-07-09","namespace":"urn:opendaylight:yang:extension:yang-ext","conformance-type":"import"},{"name":"opendaylight-multipart-types_2017-01-12","revision":"2017-01-12","schema":"/rests/modules/opendaylight-multipart-types?revision=2017-01-12","namespace":"urn:opendaylight:multipart:types","conformance-type":"import"},{"name":"opendaylight-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-inventory?revision=2013-08-19","namespace":"urn:opendaylight:inventory","conformance-type":"import"},{"name":"sal-queue_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-queue?revision=2015-03-05","namespace":"urn:opendaylight:queue:service","conformance-type":"import"},{"name":"sal-groups-batch_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/sal-groups-batch?revision=2016-03-15","namespace":"urn:opendaylight:groups:service","conformance-type":"import"},{"name":"arbitrator-reconcile_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/arbitrator-reconcile?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:arbitrator-reconcile:service","conformance-type":"import"},{"name":"ietf-yang-metadata_2016-08-05","revision":"2016-08-05","schema":"/rests/modules/ietf-yang-metadata?revision=2016-08-05","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-metadata","conformance-type":"import"},{"name":"opendaylight-arbitrary-bitmask-fields_2016-01-30","revision":"2016-01-30","schema":"/rests/modules/opendaylight-arbitrary-bitmask-fields?revision=2016-01-30","namespace":"urn:opendaylight:arbitrary:bitmask:fields","conformance-type":"import"},{"name":"ietf-udp-client_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-client?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-client","conformance-type":"import","feature":["local-binding"]},{"name":"opendaylight-meter-types_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/opendaylight-meter-types?revision=2013-09-18","namespace":"urn:opendaylight:meter:types","conformance-type":"import"},{"name":"opendaylight-action-types_2013-11-12","revision":"2013-11-12","schema":"/rests/modules/opendaylight-action-types?revision=2013-11-12","namespace":"urn:opendaylight:action:types","conformance-type":"import"},{"name":"sal-role_2015-07-27","revision":"2015-07-27","schema":"/rests/modules/sal-role?revision=2015-07-27","namespace":"urn:opendaylight:role:service","conformance-type":"import"},{"name":"openflow-provider-config_2016-05-10","revision":"2016-05-10","schema":"/rests/modules/openflow-provider-config?revision=2016-05-10","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:provider:config","conformance-type":"import"},{"name":"odl-serviceutils-upgrade_2018-07-02","revision":"2018-07-02","schema":"/rests/modules/odl-serviceutils-upgrade?revision=2018-07-02","namespace":"urn:opendaylight:serviceutils:upgrade","conformance-type":"import"},{"name":"opendaylight-match-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-match-types?revision=2013-10-26","namespace":"urn:opendaylight:model:match:types","conformance-type":"import"},{"name":"ietf-restconf-server_2024-08-14","revision":"2024-08-14","schema":"/rests/modules/ietf-restconf-server?revision=2024-08-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-server","conformance-type":"import","feature":["http-listen","https-listen"]},{"name":"reconciliation-result-state_2017-07-13","revision":"2017-07-13","schema":"/rests/modules/reconciliation-result-state?revision=2017-07-13","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:rf:state","conformance-type":"import"},{"name":"onf-extensions_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/onf-extensions?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf","conformance-type":"import"},{"name":"sal-table_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/sal-table?revision=2013-10-26","namespace":"urn:opendaylight:table:service","conformance-type":"import"},{"name":"iana-http-versions_2026-02-04","revision":"2026-02-04","schema":"/rests/modules/iana-http-versions?revision=2026-02-04","namespace":"urn:ietf:params:xml:ns:yang:iana-http-versions","conformance-type":"import"},{"name":"opendaylight-direct-statistics_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/opendaylight-direct-statistics?revision=2016-05-11","namespace":"urn:opendaylight:direct:statistics","conformance-type":"import"},{"name":"opendaylight-port-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-port-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:port","conformance-type":"import"},{"name":"sal-async-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/sal-async-config?revision=2017-06-19","namespace":"urn:opendaylight:async-config:service","conformance-type":"import"},{"name":"aaa-password-service-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-password-service-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:password:service:config","conformance-type":"import"},{"name":"ietf-yang-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-yang-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-types","conformance-type":"import"},{"name":"opendaylight-queue-statistics_2013-12-16","revision":"2013-12-16","schema":"/rests/modules/opendaylight-queue-statistics?revision=2013-12-16","namespace":"urn:opendaylight:queue:statistics","conformance-type":"import"},{"name":"sal-bundle_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/sal-bundle?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf:bundle:service","conformance-type":"import"},{"name":"ietf-restconf-subscribed-notifications_2019-11-17","revision":"2019-11-17","schema":"/rests/modules/ietf-restconf-subscribed-notifications?revision=2019-11-17","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-subscribed-notifications","conformance-type":"import"},{"name":"sal-meters-batch_2016-03-16","revision":"2016-03-16","schema":"/rests/modules/sal-meters-batch?revision=2016-03-16","namespace":"urn:opendaylight:meters:service","conformance-type":"import"},{"name":"odl-entity-owners","revision":"","schema":"/rests/modules/odl-entity-owners","namespace":"urn:opendaylight:params:xml:ns:yang:controller:entity-owners","conformance-type":"import"},{"name":"sal-experimenter-mp-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-mp-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-mp-message:service","conformance-type":"import"},{"name":"packet-processing_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/packet-processing?revision=2013-07-09","namespace":"urn:opendaylight:packet:service","conformance-type":"import"},{"name":"openflow-configuration_2014-06-30","revision":"2014-06-30","schema":"/rests/modules/openflow-configuration?revision=2014-06-30","namespace":"urn:opendaylight:openflow:config","conformance-type":"import"},{"name":"odl-srm-rpcs_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-rpcs?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:rpc","conformance-type":"import"},{"name":"ietf-netconf-acm_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-netconf-acm?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-acm","conformance-type":"import"},{"name":"iana-crypt-hash_2014-08-06","revision":"2014-08-06","schema":"/rests/modules/iana-crypt-hash?revision=2014-08-06","namespace":"urn:ietf:params:xml:ns:yang:iana-crypt-hash","conformance-type":"import","feature":["crypt-hash-sha-512","crypt-hash-sha-256","crypt-hash-md5"]},{"name":"openflow-extensible-match_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-extensible-match?revision=2015-02-25","namespace":"urn:opendaylight:openflow:oxm","conformance-type":"import"}],"module-set-id":"2"}}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:53:34.133822" elapsed="0.003468"/>
</kw>
<status status="PASS" start="2026-04-08T00:53:34.132600" elapsed="0.004741"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:34.132553" elapsed="0.004828"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:53:34.141023" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:53:34.138609" elapsed="0.002513"/>
</kw>
<status status="PASS" start="2026-04-08T00:53:34.137466" elapsed="0.003722"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:34.137446" elapsed="0.003783"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:53:34.142680" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:53:34.141730" elapsed="0.000991"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:34.143304" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:53:34.142858" elapsed="0.000533"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:53:34.144270" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:53:34.143712" elapsed="0.000616"/>
</kw>
<status status="PASS" start="2026-04-08T00:53:34.143428" elapsed="0.000959"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:34.142837" elapsed="0.001587"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:53:34.145833" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:53:34.144971" elapsed="0.000903"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:34.146522" elapsed="0.000035"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:53:34.146014" elapsed="0.000594"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:53:34.147473" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:53:34.146921" elapsed="0.000597"/>
</kw>
<status status="PASS" start="2026-04-08T00:53:34.146645" elapsed="0.000924"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:34.145994" elapsed="0.001610"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:53:34.147925" elapsed="0.001014"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:53:34.150101" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:53:34.149328" elapsed="0.000832"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:53:34.150650" elapsed="0.003371"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:53:34.130921" elapsed="0.023245"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:53:34.154610" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:53:34.154472" elapsed="0.000185"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:34.154449" elapsed="0.000231"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:53:34.164071" level="INFO">${text_normalized} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:53:34.154830" elapsed="0.009279"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:53:34.164167" elapsed="0.000057"/>
</return>
<msg time="2026-04-08T00:53:34.164368" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:53:33.639436" elapsed="0.524960"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:53:34.164463" elapsed="0.000027"/>
</return>
<msg time="2026-04-08T00:53:34.164616" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="PASS" start="2026-04-08T00:53:33.495825" elapsed="0.668818"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Json_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:34.165011" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:53:34.164730" elapsed="0.000525"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:34.164712" elapsed="0.000570"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:53:34.165318" elapsed="0.000027"/>
</return>
<arg>session=${session}</arg>
<arg>folder=${RESTCONF_MODULES_DIR}</arg>
<arg>verify=False</arg>
<doc>Add arguments sensible for JSON data, return Get_Templated response text.
Optionally, verification against JSON data (may be iterated) is called.
Only subset of JSON data is verified and returned if JMES path is specified in
file ${folder}/jmespath.expr.</doc>
<status status="PASS" start="2026-04-08T00:53:33.490112" elapsed="0.675334"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T00:53:33.485092" elapsed="0.680397"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-08T00:53:33.484952" elapsed="0.680574"/>
</for>
<arg>${member_index_list}</arg>
<status status="PASS" start="2026-04-08T00:53:33.482952" elapsed="0.682635"/>
</kw>
<status status="PASS" start="2026-04-08T00:53:33.482652" elapsed="0.682965"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:33.482636" elapsed="0.683005"/>
</if>
<if>
<branch type="IF" condition="${verify_system_status} and (&quot;${service_list}&quot; != &quot;[[]]&quot;)">
<kw name="Check Status Of Services Is OPERATIONAL" owner="ClusterManagement">
<arg>@{service_list}</arg>
<doc>This keyword will verify whether all the services are operational in all the ODL nodes</doc>
<status status="NOT RUN" start="2026-04-08T00:53:34.166042" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:53:34.165699" elapsed="0.000401"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:34.165683" elapsed="0.000440"/>
</if>
<arg>${member_index_list}</arg>
<arg>${wait_for_sync}</arg>
<arg>${verify_restconf}</arg>
<arg>${check_system_status}</arg>
<arg>${service_list}</arg>
<doc>Verifies the specified readiness conditions for the given listed members after startup.
If ${verify_cluster_sync}, verifies the datastores have synced with the rest of the cluster.
If True, verifies RESTCONF is available.
If ${verify_system_status}, verifies the system services are OPERATIONAL.</doc>
<status status="PASS" start="2026-04-08T00:53:32.987287" elapsed="1.178909"/>
</kw>
<arg>${timeout}</arg>
<arg>10s</arg>
<arg>Verify_Members_Are_Ready</arg>
<arg>${member_index_list}</arg>
<arg>${wait_for_sync}</arg>
<arg>${verify_restconf}</arg>
<arg>${check_system_status}</arg>
<arg>${service_list}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-08T00:53:12.767870" elapsed="21.398393"/>
</kw>
<kw name="Run_Bash_Command_On_List_Or_All" owner="ClusterManagement" type="TEARDOWN">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:53:34.169590" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:53:34.169147" elapsed="0.000470"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:53:34.170077" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:53:34.169776" elapsed="0.000326"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:53:34.170147" elapsed="0.000045"/>
</return>
<msg time="2026-04-08T00:53:34.170319" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:53:34.168734" elapsed="0.001610"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:53:34.171451" level="INFO">${member_ip} = 10.30.170.48</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:53:34.171130" elapsed="0.000347"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:53:34.172390" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

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

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T00:53:34.176324" elapsed="0.000603"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:53:34.177951" level="INFO">Attempting to execute command "netstat -pnatu | grep 2550" on remote system "10.30.170.48" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:53:34.177086" elapsed="0.000916"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:53:34.178961" level="INFO">${conn_id} = 147</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:53:34.178184" elapsed="0.000804"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T00:53:34.180534" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T00:53:34.180772" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T00:53:34.179865" elapsed="0.001012"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:53:34.181291" elapsed="0.000723"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T00:53:34.183525" level="INFO">Logging into '10.30.170.48:22' as 'jenkins'.</msg>
<msg time="2026-04-08T00:53:34.861238" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 00:53:34 UTC 2026

  System load:  0.61               Processes:             123
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 6%                 IPv4 address for ens3: 10.30.170.48
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 00:53:12 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-0-builder-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T00:53:34.183147" elapsed="0.678638"/>
</kw>
<msg time="2026-04-08T00:53:34.862052" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:53:34.182359" elapsed="0.680233"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T00:53:34.179236" elapsed="0.683851"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T00:53:34.864675" level="INFO">Executing command 'netstat -pnatu | grep 2550'.</msg>
<msg time="2026-04-08T00:53:34.878138" level="INFO">Command exited with return code 1.</msg>
<msg time="2026-04-08T00:53:34.878633" level="INFO">${stdout} = </msg>
<msg time="2026-04-08T00:53:34.878731" level="INFO">${stderr} = bash: line 1: netstat: command not found</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T00:53:34.863827" elapsed="0.014958"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:53:34.879166" elapsed="0.000573"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:53:34.881278" level="INFO">bash: line 1: netstat: command not found</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:53:34.880256" elapsed="0.001133"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:53:34.881946" elapsed="0.000037"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:53:34.881576" elapsed="0.000531"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:34.881520" elapsed="0.000642"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T00:53:34.882602" elapsed="0.000061"/>
</return>
<status status="PASS" start="2026-04-08T00:53:34.882317" elapsed="0.000408"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:34.882281" elapsed="0.000481"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:53:34.882811" elapsed="0.000021"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:53:34.887659" elapsed="0.001092"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:53:34.889217" elapsed="0.000659"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:53:34.890746" elapsed="0.000203"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:53:34.883329" elapsed="0.007754"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T00:53:34.174421" elapsed="0.716778"/>
</kw>
<msg time="2026-04-08T00:53:34.891257" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:53:34.173755" elapsed="0.717568"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-08T00:53:34.173198" elapsed="0.718237"/>
</kw>
<msg time="2026-04-08T00:53:34.891478" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:53:34.172674" elapsed="0.718861"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:53:34.894399" elapsed="0.000312"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:53:34.894874" elapsed="0.000144"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:53:34.895180" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:53:34.891847" elapsed="0.003483"/>
</kw>
<msg time="2026-04-08T00:53:34.895421" level="INFO">${output} = </msg>
<var>${output}</var>
<arg>Utils.Run_Command_On_Controller</arg>
<arg>${member_ip}</arg>
<arg>${command}</arg>
<doc>Store current connection index, run keyword returning its result, restore connection in teardown.
Note that in order to avoid "got positional argument after named arguments", it is safer to use positional (not named) arguments on call.</doc>
<status status="PASS" start="2026-04-08T00:53:34.171692" elapsed="0.723753"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:53:34.895868" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:53:34.895624" elapsed="0.000284"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-08T00:53:34.895950" elapsed="0.000029"/>
</return>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-08T00:53:34.170701" elapsed="0.725373"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T00:53:34.170529" elapsed="0.725583"/>
</iter>
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:53:34.897420" level="INFO">${member_ip} = 10.30.170.131</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:53:34.896909" elapsed="0.000543"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:53:34.898366" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

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

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T00:53:34.901969" elapsed="0.000347"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:53:34.903297" level="INFO">Attempting to execute command "netstat -pnatu | grep 2550" on remote system "10.30.170.131" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:53:34.902476" elapsed="0.000867"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:53:34.904206" level="INFO">${conn_id} = 150</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:53:34.903500" elapsed="0.000735"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T00:53:34.905663" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T00:53:34.905883" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T00:53:34.905038" elapsed="0.000938"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:53:34.906300" elapsed="0.000910"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T00:53:34.908662" level="INFO">Logging into '10.30.170.131:22' as 'jenkins'.</msg>
<msg time="2026-04-08T00:53:35.490397" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 00:53:35 UTC 2026

  System load:  0.22               Processes:             122
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 8%                 IPv4 address for ens3: 10.30.170.131
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 00:53:01 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-0-builder-1 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T00:53:34.908311" elapsed="0.582805"/>
</kw>
<msg time="2026-04-08T00:53:35.492678" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:53:34.907527" elapsed="0.586721"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T00:53:34.904452" elapsed="0.590057"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T00:53:35.496148" level="INFO">Executing command 'netstat -pnatu | grep 2550'.</msg>
<msg time="2026-04-08T00:53:35.508506" level="INFO">Command exited with return code 1.</msg>
<msg time="2026-04-08T00:53:35.508972" level="INFO">${stdout} = </msg>
<msg time="2026-04-08T00:53:35.509073" level="INFO">${stderr} = bash: line 1: netstat: command not found</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T00:53:35.495293" elapsed="0.013834"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:53:35.509568" elapsed="0.000524"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:53:35.511504" level="INFO">bash: line 1: netstat: command not found</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:53:35.510591" elapsed="0.001021"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:53:35.512209" elapsed="0.000046"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:53:35.511808" elapsed="0.000527"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:35.511746" elapsed="0.000642"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T00:53:35.512807" elapsed="0.000073"/>
</return>
<status status="PASS" start="2026-04-08T00:53:35.512511" elapsed="0.000443"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:35.512476" elapsed="0.000531"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:53:35.513082" elapsed="0.000032"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:53:35.518562" elapsed="0.001598"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:53:35.520606" elapsed="0.000688"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:53:35.521655" elapsed="0.000321"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:53:35.514697" elapsed="0.007461"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T00:53:34.900391" elapsed="0.621942"/>
</kw>
<msg time="2026-04-08T00:53:35.522414" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:53:34.899723" elapsed="0.622795"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-08T00:53:34.899148" elapsed="0.623480"/>
</kw>
<msg time="2026-04-08T00:53:35.522685" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:53:34.898646" elapsed="0.624119"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:53:35.526553" elapsed="0.000381"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:53:35.527097" elapsed="0.000161"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:53:35.527403" elapsed="0.000095"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:53:35.523194" elapsed="0.004353"/>
</kw>
<msg time="2026-04-08T00:53:35.527643" level="INFO">${output} = </msg>
<var>${output}</var>
<arg>Utils.Run_Command_On_Controller</arg>
<arg>${member_ip}</arg>
<arg>${command}</arg>
<doc>Store current connection index, run keyword returning its result, restore connection in teardown.
Note that in order to avoid "got positional argument after named arguments", it is safer to use positional (not named) arguments on call.</doc>
<status status="PASS" start="2026-04-08T00:53:34.897675" elapsed="0.629993"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:53:35.528113" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:53:35.527867" elapsed="0.000291"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-08T00:53:35.528214" elapsed="0.000030"/>
</return>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-08T00:53:34.896474" elapsed="0.631868"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T00:53:34.896290" elapsed="0.632090"/>
</iter>
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:53:35.529416" level="INFO">${member_ip} = 10.30.171.110</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:53:35.529122" elapsed="0.000320"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:53:35.531004" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

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

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T00:53:35.534937" elapsed="0.000327"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:53:35.536228" level="INFO">Attempting to execute command "netstat -pnatu | grep 2550" on remote system "10.30.171.110" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:53:35.535417" elapsed="0.000859"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:53:35.537109" level="INFO">${conn_id} = 153</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:53:35.536434" elapsed="0.000702"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T00:53:35.538655" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T00:53:35.538883" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T00:53:35.538000" elapsed="0.000979"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:53:35.539300" elapsed="0.000677"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T00:53:35.541442" level="INFO">Logging into '10.30.171.110:22' as 'jenkins'.</msg>
<msg time="2026-04-08T00:53:36.113256" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 00:53:35 UTC 2026

  System load:  0.21               Processes:             123
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 8%                 IPv4 address for ens3: 10.30.171.110
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 00:53:02 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T00:53:35.541066" elapsed="0.572505"/>
</kw>
<msg time="2026-04-08T00:53:36.113715" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:53:35.540306" elapsed="0.573641"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T00:53:35.537373" elapsed="0.576829"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T00:53:36.114892" level="INFO">Executing command 'netstat -pnatu | grep 2550'.</msg>
<msg time="2026-04-08T00:53:36.127256" level="INFO">Command exited with return code 1.</msg>
<msg time="2026-04-08T00:53:36.127554" level="INFO">${stdout} = </msg>
<msg time="2026-04-08T00:53:36.127616" level="INFO">${stderr} = bash: line 1: netstat: command not found</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T00:53:36.114509" elapsed="0.013138"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:53:36.127893" elapsed="0.000351"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:53:36.129240" level="INFO">bash: line 1: netstat: command not found</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:53:36.128547" elapsed="0.000760"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:53:36.129706" elapsed="0.000024"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:53:36.129439" elapsed="0.000363"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:36.129397" elapsed="0.000458"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T00:53:36.130303" elapsed="0.000063"/>
</return>
<status status="PASS" start="2026-04-08T00:53:36.129975" elapsed="0.000464"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:36.129941" elapsed="0.000689"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:53:36.130713" elapsed="0.000038"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:53:36.139279" elapsed="0.000752"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:53:36.140355" elapsed="0.000474"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:53:36.141120" elapsed="0.000227"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:53:36.131516" elapsed="0.009971"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T00:53:35.533335" elapsed="0.608249"/>
</kw>
<msg time="2026-04-08T00:53:36.141642" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:53:35.532663" elapsed="0.609049"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-08T00:53:35.532082" elapsed="0.609711"/>
</kw>
<msg time="2026-04-08T00:53:36.141833" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:53:35.531304" elapsed="0.610584"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:53:36.144515" elapsed="0.000313"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:53:36.144989" elapsed="0.000172"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:53:36.145340" elapsed="0.000099"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:53:36.142199" elapsed="0.003291"/>
</kw>
<msg time="2026-04-08T00:53:36.145581" level="INFO">${output} = </msg>
<var>${output}</var>
<arg>Utils.Run_Command_On_Controller</arg>
<arg>${member_ip}</arg>
<arg>${command}</arg>
<doc>Store current connection index, run keyword returning its result, restore connection in teardown.
Note that in order to avoid "got positional argument after named arguments", it is safer to use positional (not named) arguments on call.</doc>
<status status="PASS" start="2026-04-08T00:53:35.530412" elapsed="0.615193"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:53:36.146047" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:53:36.145796" elapsed="0.000292"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-08T00:53:36.146130" elapsed="0.000125"/>
</return>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-08T00:53:35.528678" elapsed="0.617679"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T00:53:35.528492" elapsed="0.617903"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-08T00:53:34.170399" elapsed="1.976033"/>
</for>
<arg>command=netstat -pnatu | grep 2550</arg>
<doc>Cycle through indices (or all), run command on each.</doc>
<status status="PASS" start="2026-04-08T00:53:34.166532" elapsed="1.979958"/>
</kw>
<arg>${index_list}</arg>
<arg>${wait_for_sync}</arg>
<arg>${timeout}</arg>
<arg>check_system_status=${check_system_status}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>service_list=${service_list}</arg>
<doc>If the list is empty, start all cluster members. Otherwise, start members based on present indices.
If True, wait for cluster sync on listed members.
Optionally karaf_home can be overriden. Optionally specific JAVA_HOME is used for starting.
Garbage collection is unconditionally logged to files. TODO: Make that reasonable conditional?</doc>
<status status="PASS" start="2026-04-08T00:53:12.263540" elapsed="23.883001"/>
</kw>
<arg>${inventory_leader}</arg>
<doc>Convenience keyword that starts the specified member of the cluster.</doc>
<status status="PASS" start="2026-04-08T00:53:02.108081" elapsed="34.038532"/>
</kw>
<doc>Stop Leader Node and Start it Up, Verify it is sync with other controller node.</doc>
<status status="PASS" start="2026-04-08T00:52:52.163794" elapsed="43.982947"/>
</test>
<test id="s1-s3-t7" name="Get inventory Follower After Leader Restart" line="62">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-08T00:53:36.150203" elapsed="0.000209"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-08T00:53:36.149911" elapsed="0.000555"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:53:36.151484" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:53:36.151373" elapsed="0.000156"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:36.151354" elapsed="0.000197"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:53:36.156245" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:53:36.156122" elapsed="0.000170"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:36.156104" elapsed="0.000210"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:53:36.157329" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:53:36.156912" elapsed="0.000494"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:53:36.157892" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:53:36.157569" elapsed="0.000349"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:53:36.157962" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:53:36.158114" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:53:36.156539" elapsed="0.001599"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:53:36.163565" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:53:36.163457" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:36.163438" elapsed="0.000195"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:53:36.164782" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:53:36.164675" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:36.164657" elapsed="0.000193"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:53:36.165331" level="INFO">${karaf_connection_index} = 140</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:53:36.164996" elapsed="0.000389"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:53:36.165772" level="INFO">${current_connection_index} = None</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:53:36.165551" elapsed="0.000247"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T00:53:36.166599" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-08T00:53:36.166311" elapsed="0.001301">Cannot open session, you need to establish a connection first.</status>
</kw>
<msg time="2026-04-08T00:53:36.167810" level="INFO">${status_write} = FAIL</msg>
<msg time="2026-04-08T00:53:36.167856" level="INFO">${message_write} = Cannot open session, you need to establish a connection first.</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:53:36.165956" elapsed="0.001924"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T00:53:36.168853" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="FAIL" start="2026-04-08T00:53:36.168604" elapsed="0.000962">Cannot open session, you need to establish a connection first.</status>
</kw>
<msg time="2026-04-08T00:53:36.169751" level="INFO">${status_wait} = FAIL</msg>
<msg time="2026-04-08T00:53:36.169797" level="INFO">${message_wait} = Cannot open session, you need to establish a connection first.</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:53:36.168260" elapsed="0.001560"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T00:53:36.170890" level="FAIL">Failed to send the command: log:log "ROBOT MESSAGE: Starting test openflowplugin-clustering.txt.Cluster HA Data Recovery Leader Follower Failover.Get inventory Follower After Leader Restart"</msg>
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T00:53:36.170123" elapsed="0.000832">Failed to send the command: log:log "ROBOT MESSAGE: Starting test openflowplugin-clustering.txt.Cluster HA Data Recovery Leader Follower Failover.Get inventory Follower After Leader Restart"</status>
</kw>
<status status="FAIL" start="2026-04-08T00:53:36.169899" elapsed="0.001131">Failed to send the command: log:log "ROBOT MESSAGE: Starting test openflowplugin-clustering.txt.Cluster HA Data Recovery Leader Follower Failover.Get inventory Follower After Leader Restart"</status>
</branch>
<status status="FAIL" start="2026-04-08T00:53:36.169879" elapsed="0.001184">Failed to send the command: log:log "ROBOT MESSAGE: Starting test openflowplugin-clustering.txt.Cluster HA Data Recovery Leader Follower Failover.Get inventory Follower After Leader Restart"</status>
</if>
<kw name="Log" owner="BuiltIn">
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:36.171247" elapsed="0.000023"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:36.171476" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:53:36.171335" elapsed="0.000192"/>
</branch>
<status status="NOT RUN" start="2026-04-08T00:53:36.171319" elapsed="0.000231"/>
</if>
<return>
<value>${message_wait}</value>
<status status="NOT RUN" start="2026-04-08T00:53:36.171581" elapsed="0.000014"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:53:36.173070" elapsed="0.000839"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:53:36.174201" elapsed="0.000471"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:53:36.174933" elapsed="0.000374"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:53:36.172449" elapsed="0.003003"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T00:53:36.171869" elapsed="0.003649"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="FAIL" start="2026-04-08T00:53:36.164374" elapsed="0.011233">Failed to send the command: log:log "ROBOT MESSAGE: Starting test openflowplugin-clustering.txt.Cluster HA Data Recovery Leader Follower Failover.Get inventory Follower After Leader Restart"</status>
</kw>
<msg time="2026-04-08T00:53:36.175707" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:53:36.175751" level="INFO">${message} = Failed to send the command: log:log "ROBOT MESSAGE: Starting test openflowplugin-clustering.txt.Cluster HA Data Recovery Leader Follower Failover.Get inventory Follower After Leader Restart"</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:53:36.163782" elapsed="0.011993"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T00:53:36.175958" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:53:36.175851" elapsed="0.000150"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:36.175832" elapsed="0.000190"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:53:36.176835" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:53:36.176730" elapsed="0.000149"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:36.176712" elapsed="0.000194"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:53:36.177442" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T00:53:36.177068" elapsed="0.000546"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:53:36.178032" level="INFO">{1: 140, 2: 84, 3: 86}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:53:36.177769" elapsed="0.000306"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:53:36.178490" level="INFO">1</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:53:36.178247" elapsed="0.000287"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:53:36.179050" elapsed="0.000278"/>
</kw>
<msg time="2026-04-08T00:53:36.179426" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:53:36.179471" level="INFO">${old_connection_index} = 140</msg>
<var>${status}</var>
<var>${old_connection_index}</var>
<arg>Get From Dictionary</arg>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:53:36.178691" elapsed="0.000802"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='PASS'">
<kw name="Run Keywords" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${old_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:53:36.180332" elapsed="0.000194"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T00:53:36.181687" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>logout</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-08T00:53:36.181275" elapsed="0.001252">Cannot open session, you need to establish a connection first.</status>
</kw>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:53:36.180693" elapsed="0.001930"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:53:36.183266" elapsed="0.000270"/>
</kw>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:53:36.182794" elapsed="0.000824"/>
</kw>
<arg>SSHLibrary.Switch_Connection</arg>
<arg>${old_connection_index}</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Executes all the given keywords in a sequence.</doc>
<status status="PASS" start="2026-04-08T00:53:36.179789" elapsed="0.003876"/>
</kw>
<status status="PASS" start="2026-04-08T00:53:36.179569" elapsed="0.004146"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:36.179550" elapsed="0.004189"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:53:36.184597" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:53:36.184287" elapsed="0.000337"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:53:36.184672" elapsed="0.000031"/>
</return>
<msg time="2026-04-08T00:53:36.184823" level="INFO">${odl_ip} = 10.30.170.48</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:53:36.183939" elapsed="0.000909"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${odl_ip}</arg>
<arg>port=${KARAF_SHELL_PORT}</arg>
<arg>prompt=${KARAF_PROMPT_LOGIN}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:53:36.185001" elapsed="0.000442"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:53:36.185760" level="INFO">index=157
host=10.30.170.48
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-08T00:53:36.185858" level="INFO">${karaf_connection_object} = index=157
host=10.30.170.48
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_err...</msg>
<var>${karaf_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T00:53:36.185643" elapsed="0.000276"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<arg>${karaf_connection_object.index}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:53:36.186074" elapsed="0.002209"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-08T00:53:36.188713" level="INFO">Logging into '10.30.170.48:8101' as 'karaf'.</msg>
<msg time="2026-04-08T00:53:36.673449" level="INFO">Read output: [33m                                                                                           
[33m    ________                       ________                .__  .__       .__     __       
[33m    \_____  \ ______   ____   ____ \______ \ _____  ___.__.|  | |__| ____ |  |___/  |_     
[33m     /   |   \\____ \_/ __ \ /    \ |    |  \\__  \&lt;   |  ||  | |  |/ ___\|  |  \   __\    
[33m    /    |    \  |_&gt; &gt;  ___/|   |  \|    `   \/ __ \\___  ||  |_|  / /_/  &gt;   Y  \  |      
[33m    \_______  /   __/ \___  &gt;___|  /_______  (____  / ____||____/__\___  /|___|  /__|      
[33m            \/|__|        \/     \/        \/     \/\/            /_____/      \/          
[33m                                                                                           

Hit '[1m&lt;tab&gt;[0m' for a list of available commands
and '[1m[cmd] --help[0m' for help on a specific command.
Hit '[1m&lt;ctrl-d&gt;[0m' or type '[1msystem:shutdown[0m' or '[1mlogout[0m' to shutdown OpenDaylight.

[?1h=[90m~[0m                                                                                [?2004hopendaylight-user</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="PASS" start="2026-04-08T00:53:36.188448" elapsed="0.485200"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:53:36.688768" elapsed="0.000572"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:53:36.689513" elapsed="0.000178"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:53:36.689842" elapsed="0.000103"/>
</kw>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:53:36.675006" elapsed="0.014995"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T00:53:36.674145" elapsed="0.015903"/>
</kw>
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="PASS" start="2026-04-08T00:53:36.176446" elapsed="0.513655"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:53:36.691032" elapsed="0.000019"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:53:36.690883" elapsed="0.000207"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:36.690856" elapsed="0.000258"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:53:36.691544" level="INFO">${karaf_connection_index} = 157</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:53:36.691301" elapsed="0.000269"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:53:36.691900" level="INFO">${current_connection_index} = None</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:53:36.691725" elapsed="0.000200"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T00:53:36.766952" level="INFO">@root&gt;log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T00:53:36.692624" elapsed="0.074432"/>
</kw>
<msg time="2026-04-08T00:53:36.767203" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T00:53:36.767251" level="INFO">${message_write} = @root&gt;log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:53:36.692081" elapsed="0.075205"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T00:53:36.895940" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "a "d "e "r "[C "F "o "l "l "o "w "e "r "[C "F "a "i "l "o "v "e "r ". "G "e "t "[C "i "n "v "e "n "t "o "r "y "[C "F "o "l "[78Cl "[A[78Co
 "w "e "r "[C "A "f "t "e "r "[C "L "e "a "d "e "r "[C "R "e "s "t "a "r "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T00:53:36.767869" elapsed="0.128327"/>
</kw>
<msg time="2026-04-08T00:53:36.896399" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T00:53:36.896445" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:53:36.767482" elapsed="0.129000"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:36.897047" elapsed="0.000027"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:53:36.896628" elapsed="0.000482"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:36.896581" elapsed="0.000560"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:53:36.897882" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "a "d "e "r "[C "F "o "l "l "o "w "e "r "[C "F "a "i "l "o "v "e "r ". "G "e "t "[C "i "n "v "e "n "t "o "r "y "[C "F "o "l "[78Cl "[A[78Co
 "w "e "r "[C "A "f "t "e "r "[C "L "e "a "d "e "r "[C "R "e "s "t "a "r "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:53:36.897334" elapsed="0.000632"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:36.898274" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:53:36.898035" elapsed="0.000295"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:36.898016" elapsed="0.000337"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T00:53:36.898392" elapsed="0.000046"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:53:36.899861" elapsed="0.000575"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:53:36.900605" elapsed="0.000181"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:53:36.900995" elapsed="0.000106"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:53:36.899348" elapsed="0.001829"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T00:53:36.898742" elapsed="0.002486"/>
</kw>
<msg time="2026-04-08T00:53:36.901391" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "...</msg>
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T00:53:36.690556" elapsed="0.210874"/>
</kw>
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T00:53:36.901481" elapsed="0.000028"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T00:53:36.163105" elapsed="0.738502"/>
</kw>
<msg time="2026-04-08T00:53:36.901706" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:53:36.901751" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:53:36.158532" elapsed="0.743254"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:36.902134" elapsed="0.000041"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:53:36.901865" elapsed="0.000345"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:36.901847" elapsed="0.000386"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T00:53:36.158390" elapsed="0.743868"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:53:36.908393" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:53:36.908278" elapsed="0.000163"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:36.908259" elapsed="0.000204"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:53:36.909699" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:53:36.909589" elapsed="0.000156"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:36.909570" elapsed="0.000197"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:53:36.910308" level="INFO">${karaf_connection_index} = 84</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:53:36.909916" elapsed="0.000420"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:53:36.910730" level="INFO">${current_connection_index} = None</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:53:36.910501" elapsed="0.000254"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T00:53:36.948484" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T00:53:36.911306" elapsed="0.037305"/>
</kw>
<msg time="2026-04-08T00:53:36.948796" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T00:53:36.948843" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:53:36.910944" elapsed="0.037935"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T00:53:37.024999" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "a "d "e "r "[C "F "o "l "l "o "w "e "r "[C "F "a "i "l "o "v "e "r ". "G "e "t "[C "i "n "v "e "n "t "o "r "y "[C "F "o "l "[78Cl "[A[78Co
 "w "e "r "[C "A "f "t "e "r "[C "L "e "a "d "e "r "[C "R "e "s "t "a "r "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T00:53:36.949469" elapsed="0.075823"/>
</kw>
<msg time="2026-04-08T00:53:37.025495" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T00:53:37.025546" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:53:36.949069" elapsed="0.076515"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:37.025990" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:53:37.025693" elapsed="0.000357"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:37.025662" elapsed="0.000416"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:53:37.026640" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "a "d "e "r "[C "F "o "l "l "o "w "e "r "[C "F "a "i "l "o "v "e "r ". "G "e "t "[C "i "n "v "e "n "t "o "r "y "[C "F "o "l "[78Cl "[A[78Co
 "w "e "r "[C "A "f "t "e "r "[C "L "e "a "d "e "r "[C "R "e "s "t "a "r "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:53:37.026259" elapsed="0.000470"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:37.027026" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:53:37.026800" elapsed="0.000281"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:37.026780" elapsed="0.000325"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T00:53:37.027142" elapsed="0.000059"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:53:37.028805" elapsed="0.000898"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:53:37.030007" elapsed="0.000609"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:53:37.030938" elapsed="0.000456"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:53:37.028088" elapsed="0.003421"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T00:53:37.027488" elapsed="0.004090"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T00:53:36.909258" elapsed="0.122425"/>
</kw>
<msg time="2026-04-08T00:53:37.031778" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:53:37.031823" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:53:36.908620" elapsed="0.123239"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T00:53:37.032049" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-08T00:53:37.031938" elapsed="0.000172"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:37.031918" elapsed="0.000216"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 2,
close the previous connection. In any case create a new connection
to karaf console for 2, set correct prompt set and login to karaf console.
Store connection index for 2 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:37.032566" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:37.032905" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T00:53:37.032977" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T00:53:36.907898" elapsed="0.125186"/>
</kw>
<msg time="2026-04-08T00:53:37.033197" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:53:37.033245" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:53:36.902563" elapsed="0.130719"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:37.033612" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:53:37.033360" elapsed="0.000305"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:37.033343" elapsed="0.000346"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T00:53:36.902411" elapsed="0.131303"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:53:37.039264" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:53:37.039059" elapsed="0.000254"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:37.039040" elapsed="0.000295"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:53:37.040544" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:53:37.040433" elapsed="0.000157"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:37.040415" elapsed="0.000197"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:53:37.041077" level="INFO">${karaf_connection_index} = 86</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:53:37.040757" elapsed="0.000347"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:53:37.041513" level="INFO">${current_connection_index} = None</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:53:37.041282" elapsed="0.000258"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T00:53:37.078318" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T00:53:37.042039" elapsed="0.036517"/>
</kw>
<msg time="2026-04-08T00:53:37.078800" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T00:53:37.078848" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:53:37.041698" elapsed="0.037186"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T00:53:37.154323" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "a "d "e "r "[C "F "o "l "l "o "w "e "r "[C "F "a "i "l "o "v "e "r ". "G "e "t "[C "i "n "v "e "n "t "o "r "y "[C "F "o "l "[78Cl "[A[78Co
 "w "e "r "[C "A "f "t "e "r "[C "L "e "a "d "e "r "[C "R "e "s "t "a "r "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T00:53:37.079693" elapsed="0.074966"/>
</kw>
<msg time="2026-04-08T00:53:37.154943" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T00:53:37.154993" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:53:37.079222" elapsed="0.075808"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:37.155613" elapsed="0.000028"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:53:37.155204" elapsed="0.000473"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:37.155137" elapsed="0.000589"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:53:37.156362" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "a "d "e "r "[C "F "o "l "l "o "w "e "r "[C "F "a "i "l "o "v "e "r ". "G "e "t "[C "i "n "v "e "n "t "o "r "y "[C "F "o "l "[78Cl "[A[78Co
 "w "e "r "[C "A "f "t "e "r "[C "L "e "a "d "e "r "[C "R "e "s "t "a "r "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:53:37.155879" elapsed="0.000573"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:37.156743" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:53:37.156522" elapsed="0.000276"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:37.156503" elapsed="0.000318"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T00:53:37.156859" elapsed="0.000049"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:53:37.158990" elapsed="0.001318"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:53:37.160618" elapsed="0.000570"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:53:37.161477" elapsed="0.000414"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:53:37.158232" elapsed="0.003769"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T00:53:37.157248" elapsed="0.004819"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T00:53:37.040098" elapsed="0.122085"/>
</kw>
<msg time="2026-04-08T00:53:37.162282" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:53:37.162326" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:53:37.039528" elapsed="0.122848"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T00:53:37.162565" elapsed="0.000029"/>
</return>
<status status="PASS" start="2026-04-08T00:53:37.162456" elapsed="0.000172"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:37.162437" elapsed="0.000215"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 3,
close the previous connection. In any case create a new connection
to karaf console for 3, set correct prompt set and login to karaf console.
Store connection index for 3 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:37.163150" elapsed="0.000080"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:37.163552" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T00:53:37.163623" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T00:53:37.038711" elapsed="0.125018"/>
</kw>
<msg time="2026-04-08T00:53:37.163850" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:53:37.163896" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:53:37.033991" elapsed="0.129941"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:37.164296" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:53:37.164008" elapsed="0.000343"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:37.163991" elapsed="0.000383"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T00:53:37.033850" elapsed="0.130548"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-08T00:53:36.158211" elapsed="1.006222"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-08T00:53:36.155767" elapsed="1.008727"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-08T00:53:36.151058" elapsed="1.013496"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:53:36.150615" elapsed="1.013988"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-08T00:53:36.147800" elapsed="1.016859"/>
</kw>
<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-04-08T00:53:37.171657" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:53:37.171273" elapsed="0.000411"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:53:37.172161" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:53:37.171842" elapsed="0.000422"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:53:37.172310" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:53:37.172464" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:53:37.170875" elapsed="0.001614"/>
</kw>
<kw name="Sort List" owner="Collections">
<arg>${index_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="PASS" start="2026-04-08T00:53:37.172642" elapsed="0.000177"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:53:37.173355" level="INFO">${ds_type} = config</msg>
<var>${ds_type}</var>
<arg>'${shard_type}' != 'config'</arg>
<arg>operational</arg>
<arg>config</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:53:37.172977" elapsed="0.000405"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:53:37.173782" level="INFO">${leader_list} = []</msg>
<var>${leader_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:53:37.173542" elapsed="0.000265"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:53:37.174209" level="INFO">${follower_list} = []</msg>
<var>${follower_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:53:37.173955" elapsed="0.000281"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_Raft_State_Of_Shard_At_Member" owner="ClusterManagement">
<kw name="Get_Raft_Property_From_Shard_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:53:37.176920" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:53:37.176419" elapsed="0.000528"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:53:37.176994" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:53:37.177142" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:53:37.176057" elapsed="0.001126"/>
</kw>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Get_As_Json_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:53:37.253606" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:53:37.253219" elapsed="0.000549"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:53:37.254619" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:53:37.254312" elapsed="0.000408">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-08T00:53:37.254817" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:53:37.253946" elapsed="0.000895"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:53:37.255411" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:53:37.255005" elapsed="0.000438"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T00:53:37.255756" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-08T00:53:37.255950" level="INFO">${template} = /rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T00:53:37.255609" elapsed="0.000367"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:53:37.256405" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:53:37.256133" elapsed="0.000319"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:53:37.257465" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:53:37.257213" elapsed="0.000297"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-08T00:53:37.257938" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-08T00:53:37.257667" elapsed="0.000297"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:37.258345" elapsed="0.000026"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:37.258575" elapsed="0.000028"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:37.258762" elapsed="0.000022"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-08T00:53:37.258187" elapsed="0.000634"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-08T00:53:37.258015" elapsed="0.000836"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-08T00:53:37.258899" elapsed="0.000032"/>
</return>
<msg time="2026-04-08T00:53:37.259256" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-08T00:53:37.256871" elapsed="0.002411"/>
</kw>
<status status="PASS" start="2026-04-08T00:53:37.256529" elapsed="0.002785"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:37.259485" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:53:37.259339" elapsed="0.000202"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:37.256506" elapsed="0.003055"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:53:37.260183" level="INFO">${final_text} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:53:37.259705" elapsed="0.000508"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T00:53:37.260262" elapsed="0.000030"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="PASS" start="2026-04-08T00:53:37.252500" elapsed="0.007937"/>
</kw>
<msg time="2026-04-08T00:53:37.260512" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:53:37.239139" elapsed="0.021531"/>
</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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:37.274045" elapsed="0.000057"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:37.287338" elapsed="0.000056"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:37.300540" elapsed="0.000054"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:37.300921" elapsed="0.000083"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:37.301280" elapsed="0.000085"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:37.302161" elapsed="0.000079"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:53:37.301919" elapsed="0.000369"/>
</branch>
<status status="NOT RUN" start="2026-04-08T00:53:37.301889" elapsed="0.000441"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:37.302611" elapsed="0.000038"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:37.302942" elapsed="0.000036"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:37.303271" elapsed="0.000036"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-08T00:53:37.301818" elapsed="0.001540"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-08T00:53:37.301521" elapsed="0.001913"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:37.303778" elapsed="0.000086"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-08T00:53:37.304056" elapsed="0.000017"/>
</return>
<msg time="2026-04-08T00:53:37.304258" level="INFO">${uri} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-08T00:53:37.227687" elapsed="0.076598"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:53:37.306439" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:53:37.306068" elapsed="0.000442">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-08T00:53:37.306667" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:53:37.305194" elapsed="0.001514"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:37.308263" elapsed="0.000039"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:53:37.306869" elapsed="0.001486"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:53:37.309288" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:53:37.308721" elapsed="0.000618"/>
</kw>
<status status="PASS" start="2026-04-08T00:53:37.308396" elapsed="0.000995"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:37.306849" elapsed="0.002580"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:53:37.312618" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:53:37.309639" elapsed="0.003023"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-08T00:53:37.312813" elapsed="0.000033"/>
</return>
<msg time="2026-04-08T00:53:37.313054" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:53:37.304674" elapsed="0.008407"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:53:37.315573" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:53:37.315247" elapsed="0.000392">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-08T00:53:37.315797" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:53:37.314061" elapsed="0.001779"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-08T00:53:37.316347" elapsed="0.000054"/>
</return>
<status status="PASS" start="2026-04-08T00:53:37.316005" elapsed="0.000495"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:37.315985" elapsed="0.000556"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:37.316745" elapsed="0.000086"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:37.317087" elapsed="0.000103"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-08T00:53:37.317340" elapsed="0.000018"/>
</return>
<msg time="2026-04-08T00:53:37.333448" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:53:37.313583" elapsed="0.019895"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:53:37.336560" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:53:37.335891" elapsed="0.000819"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:53:37.337655" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:53:37.336957" elapsed="0.000845"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:53:37.378835" level="INFO">GET Request : url=http://10.30.170.48:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 path_url=/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01jewze00gqgu8yuon50tdwq65226.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:53:37.380008" level="INFO">GET Response : url=http://10.30.170.48:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Transfer-Encoding': 'chunked'} 
 body={"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","hidden-symmetric-keys","encrypted-private-keys","asymmetrically-encrypted-value-format","cms-encrypted-data-format","cleartext-private-keys","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["ssh-client-keepalives","client-ident-hostbased","client-ident-publickey","client-ident-password"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-ex... (set the log level to DEBUG or TRACE to see the full content) 
 </msg>
<msg time="2026-04-08T00:53:37.381012" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:53:37.341561" elapsed="0.039579"/>
</kw>
<status status="PASS" start="2026-04-08T00:53:37.337938" elapsed="0.043452"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:37.384588" elapsed="0.000133"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:53:37.381508" elapsed="0.003392"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:37.337918" elapsed="0.047076"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:53:37.392016" level="INFO">{"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","hidden-symmetric-keys","encrypted-private-keys","asymmetrically-encrypted-value-format","cms-encrypted-data-format","cleartext-private-keys","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["ssh-client-keepalives","client-ident-hostbased","client-ident-publickey","client-ident-password"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-experimenter-types?revision=2015-10-20","namespace":"urn:opendaylight:openflowplugin:experimenter:types","conformance-type":"import"},{"name":"ietf-ip_2018-02-22","revision":"2018-02-22","schema":"/rests/modules/ietf-ip?revision=2018-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-ip","conformance-type":"import","feature":["ipv6-privacy-autoconf","ipv4-non-contiguous-netmasks"]},{"name":"ietf-tcp-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-client","conformance-type":"import","feature":["local-binding-supported","tcp-client-keepalives"]},{"name":"node-config_2014-10-15","revision":"2014-10-15","schema":"/rests/modules/node-config?revision=2014-10-15","namespace":"urn:opendaylight:module:config","conformance-type":"import"},{"name":"ietf-restconf_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf","conformance-type":"import"},{"name":"ietf-datastores_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-datastores?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-datastores","conformance-type":"import"},{"name":"ietf-yang-patch_2017-02-22","revision":"2017-02-22","schema":"/rests/modules/ietf-yang-patch?revision=2017-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-patch","conformance-type":"import"},{"name":"sal-group_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-group?revision=2013-09-18","namespace":"urn:opendaylight:group:service","conformance-type":"import"},{"name":"odl-codegen-extensions_2024-06-27","revision":"2024-06-27","schema":"/rests/modules/odl-codegen-extensions?revision=2024-06-27","namespace":"urn:opendaylight:yang:extension:codegen","conformance-type":"import"},{"name":"sal-meter_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-meter?revision=2013-09-18","namespace":"urn:opendaylight:meter:service","conformance-type":"import"},{"name":"ietf-interfaces_2018-02-20","revision":"2018-02-20","schema":"/rests/modules/ietf-interfaces?revision=2018-02-20","namespace":"urn:ietf:params:xml:ns:yang:ietf-interfaces","conformance-type":"import","feature":["pre-provisioning","if-mib","arbitrary-names"]},{"name":"opendaylight-l2-types_2013-08-27","revision":"2013-08-27","schema":"/rests/modules/opendaylight-l2-types?revision=2013-08-27","namespace":"urn:opendaylight:l2:types","conformance-type":"import"},{"name":"opendaylight-flow-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-flow-types?revision=2013-10-26","namespace":"urn:opendaylight:flow:types","conformance-type":"import"},{"name":"lldp-speaker-config_2016-05-12","revision":"2016-05-12","schema":"/rests/modules/lldp-speaker-config?revision=2016-05-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker:config","conformance-type":"import"},{"name":"aaa-cert_2015-11-26","revision":"2015-11-26","schema":"/rests/modules/aaa-cert?revision=2015-11-26","namespace":"urn:opendaylight:yang:aaa:cert","conformance-type":"import"},{"name":"openflow-action_2015-02-03","revision":"2015-02-03","schema":"/rests/modules/openflow-action?revision=2015-02-03","namespace":"urn:opendaylight:openflow:common:action","conformance-type":"import"},{"name":"openflow-approved-extensions_2016-08-02","revision":"2016-08-02","schema":"/rests/modules/openflow-approved-extensions?revision=2016-08-02","namespace":"urn:opendaylight:openflow:approved:extensions","conformance-type":"import"},{"name":"nc-notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/nc-notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netmod:notification","conformance-type":"import"},{"name":"ietf-netconf-nmda_2019-01-07","revision":"2019-01-07","schema":"/rests/modules/ietf-netconf-nmda?revision=2019-01-07","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-nmda","conformance-type":"import","feature":["with-defaults","origin"]},{"name":"ietf-tcp-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-common","conformance-type":"import","feature":["keepalives-supported"]},{"name":"network-topology_2013-10-21","revision":"2013-10-21","schema":"/rests/modules/network-topology?revision=2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:network-topology","conformance-type":"import"},{"name":"aaa-encrypt-service-config_2024-02-02","revision":"2024-02-02","schema":"/rests/modules/aaa-encrypt-service-config?revision=2024-02-02","namespace":"config:aaa:authn:encrypt:service:config","conformance-type":"import"},{"name":"openflow-instruction_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-instruction?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:instruction","conformance-type":"import"},{"name":"ietf-tls-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-client","conformance-type":"import","feature":["client-ident-x509-cert","server-auth-x509-cert"]},{"name":"opendaylight-group-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-group-statistics?revision=2013-11-11","namespace":"urn:opendaylight:group:statistics","conformance-type":"import"},{"name":"cluster-admin_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/cluster-admin?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:cluster:admin","conformance-type":"import"},{"name":"opendaylight-flow-statistics_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-flow-statistics?revision=2013-08-19","namespace":"urn:opendaylight:flow:statistics","conformance-type":"import"},{"name":"opendaylight-table-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-table-types?revision=2013-10-26","namespace":"urn:opendaylight:table:types","conformance-type":"import"},{"name":"forwarding-rules-manager-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/forwarding-rules-manager-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:forwardingrules-manager:config","conformance-type":"import"},{"name":"odl-srm-types_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-types?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:types","conformance-type":"import"},{"name":"ietf-x509-cert-to-name_2014-12-10","revision":"2014-12-10","schema":"/rests/modules/ietf-x509-cert-to-name?revision=2014-12-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-x509-cert-to-name","conformance-type":"import"},{"name":"flow-node-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-node-inventory?revision=2013-08-19","namespace":"urn:opendaylight:flow:inventory","conformance-type":"import"},{"name":"flow-errors_2013-11-16","revision":"2013-11-16","schema":"/rests/modules/flow-errors?revision=2013-11-16","namespace":"urn:opendaylight:flow:errors","conformance-type":"import"},{"name":"ietf-netconf_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:netconf:base:1.0","conformance-type":"import","feature":["xpath","url","rollback-on-error","validate","startup","candidate","confirmed-commit","writable-running"]},{"name":"iana-ssh-public-key-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-public-key-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-public-key-algs","conformance-type":"import"},{"name":"aaa-cert-mdsal_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/aaa-cert-mdsal?revision=2016-03-21","namespace":"urn:opendaylight:yang:aaa:cert:mdsal","conformance-type":"import"},{"name":"odl-device-notification_2024-02-18","revision":"2024-02-18","schema":"/rests/modules/odl-device-notification?revision=2024-02-18","namespace":"urn:opendaylight:device:notification","conformance-type":"import"},{"name":"ietf-origin_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-origin?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-origin","conformance-type":"import"},{"name":"openflow-augments_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-augments?revision=2015-02-25","namespace":"urn:opendaylight:openflow:augments","conformance-type":"import"},{"name":"iana-ssh-encryption-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-encryption-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-encryption-algs","conformance-type":"import"},{"name":"ietf-truststore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-truststore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-truststore","conformance-type":"import","feature":["inline-definitions-supported"]},{"name":"distributed-datastore-provider_2025-01-30","revision":"2025-01-30","schema":"/rests/modules/distributed-datastore-provider?revision=2025-01-30","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:distributed-datastore-provider","conformance-type":"import"},{"name":"opendaylight-group-types_2013-10-18","revision":"2013-10-18","schema":"/rests/modules/opendaylight-group-types?revision=2013-10-18","namespace":"urn:opendaylight:group:types","conformance-type":"import"},{"name":"sal-remote-augment_2023-11-03","revision":"2023-11-03","schema":"/rests/modules/sal-remote-augment?revision=2023-11-03","namespace":"urn:sal:restconf:event:subscription","conformance-type":"import"},{"name":"opendaylight-ipv6-arbitrary-bitmask-fields_2016-02-24","revision":"2016-02-24","schema":"/rests/modules/opendaylight-ipv6-arbitrary-bitmask-fields?revision=2016-02-24","namespace":"urn:opendaylight:opendaylight-ipv6-arbitrary-bitmask-fields","conformance-type":"import"},{"name":"sal-flows-batch_2016-03-14","revision":"2016-03-14","schema":"/rests/modules/sal-flows-batch?revision=2016-03-14","namespace":"urn:opendaylight:flows:service","conformance-type":"import"},{"name":"ietf-tls-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-common","conformance-type":"import","feature":["tls12","hello-params","tls13"]},{"name":"openflow-types_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-types?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:types","conformance-type":"import"},{"name":"ietf-netconf-with-defaults_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf-with-defaults?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults","conformance-type":"import"},{"name":"odl-srm-ops_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-ops?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:ops","conformance-type":"import"},{"name":"odl-general-entity_2015-09-30","revision":"2015-09-30","schema":"/rests/modules/odl-general-entity?revision=2015-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:mdsal:core:general-entity","conformance-type":"import"},{"name":"iana-ssh-key-exchange-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-key-exchange-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-key-exchange-algs","conformance-type":"import"},{"name":"node-ssl-connection-error_2019-07-23","revision":"2019-07-23","schema":"/rests/modules/node-ssl-connection-error?revision=2019-07-23","namespace":"urn:opendaylight:node-ssl-connection-error:service","conformance-type":"import"},{"name":"openflow-protocol_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-protocol?revision=2013-07-31","namespace":"urn:opendaylight:openflow:protocol","conformance-type":"import"},{"name":"ietf-udp-server_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-server?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-server","conformance-type":"import"},{"name":"ietf-keystore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-keystore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-keystore","conformance-type":"import","feature":["asymmetric-keys","inline-definitions-supported"]},{"name":"aaa_2016-12-14","revision":"2016-12-14","schema":"/rests/modules/aaa?revision=2016-12-14","namespace":"urn:opendaylight:params:xml:ns:yang:aaa","conformance-type":"import"},{"name":"aaa-cert-rpc_2015-12-15","revision":"2015-12-15","schema":"/rests/modules/aaa-cert-rpc?revision=2015-12-15","namespace":"urn:opendaylight:yang:aaa:cert:rpc","conformance-type":"import"},{"name":"system-notifications_2013-09-27","revision":"2013-09-27","schema":"/rests/modules/system-notifications?revision=2013-09-27","namespace":"urn:opendaylight:openflow:system","conformance-type":"import"},{"name":"sal-flat-batch_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/sal-flat-batch?revision=2016-03-21","namespace":"urn:opendaylight:flat-batch:service","conformance-type":"import"},{"name":"notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netconf:notification:1.0","conformance-type":"import"},{"name":"sal-remote_2014-01-14","revision":"2014-01-14","schema":"/rests/modules/sal-remote?revision=2014-01-14","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:remote","conformance-type":"import"},{"name":"yang-ext_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/yang-ext?revision=2013-07-09","namespace":"urn:opendaylight:yang:extension:yang-ext","conformance-type":"import"},{"name":"opendaylight-multipart-types_2017-01-12","revision":"2017-01-12","schema":"/rests/modules/opendaylight-multipart-types?revision=2017-01-12","namespace":"urn:opendaylight:multipart:types","conformance-type":"import"},{"name":"opendaylight-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-inventory?revision=2013-08-19","namespace":"urn:opendaylight:inventory","conformance-type":"import"},{"name":"sal-queue_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-queue?revision=2015-03-05","namespace":"urn:opendaylight:queue:service","conformance-type":"import"},{"name":"sal-groups-batch_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/sal-groups-batch?revision=2016-03-15","namespace":"urn:opendaylight:groups:service","conformance-type":"import"},{"name":"arbitrator-reconcile_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/arbitrator-reconcile?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:arbitrator-reconcile:service","conformance-type":"import"},{"name":"ietf-yang-metadata_2016-08-05","revision":"2016-08-05","schema":"/rests/modules/ietf-yang-metadata?revision=2016-08-05","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-metadata","conformance-type":"import"},{"name":"opendaylight-arbitrary-bitmask-fields_2016-01-30","revision":"2016-01-30","schema":"/rests/modules/opendaylight-arbitrary-bitmask-fields?revision=2016-01-30","namespace":"urn:opendaylight:arbitrary:bitmask:fields","conformance-type":"import"},{"name":"ietf-udp-client_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-client?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-client","conformance-type":"import","feature":["local-binding"]},{"name":"opendaylight-meter-types_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/opendaylight-meter-types?revision=2013-09-18","namespace":"urn:opendaylight:meter:types","conformance-type":"import"},{"name":"opendaylight-action-types_2013-11-12","revision":"2013-11-12","schema":"/rests/modules/opendaylight-action-types?revision=2013-11-12","namespace":"urn:opendaylight:action:types","conformance-type":"import"},{"name":"sal-role_2015-07-27","revision":"2015-07-27","schema":"/rests/modules/sal-role?revision=2015-07-27","namespace":"urn:opendaylight:role:service","conformance-type":"import"},{"name":"openflow-provider-config_2016-05-10","revision":"2016-05-10","schema":"/rests/modules/openflow-provider-config?revision=2016-05-10","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:provider:config","conformance-type":"import"},{"name":"odl-serviceutils-upgrade_2018-07-02","revision":"2018-07-02","schema":"/rests/modules/odl-serviceutils-upgrade?revision=2018-07-02","namespace":"urn:opendaylight:serviceutils:upgrade","conformance-type":"import"},{"name":"opendaylight-match-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-match-types?revision=2013-10-26","namespace":"urn:opendaylight:model:match:types","conformance-type":"import"},{"name":"ietf-restconf-server_2024-08-14","revision":"2024-08-14","schema":"/rests/modules/ietf-restconf-server?revision=2024-08-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-server","conformance-type":"import","feature":["http-listen","https-listen"]},{"name":"reconciliation-result-state_2017-07-13","revision":"2017-07-13","schema":"/rests/modules/reconciliation-result-state?revision=2017-07-13","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:rf:state","conformance-type":"import"},{"name":"onf-extensions_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/onf-extensions?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf","conformance-type":"import"},{"name":"sal-table_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/sal-table?revision=2013-10-26","namespace":"urn:opendaylight:table:service","conformance-type":"import"},{"name":"iana-http-versions_2026-02-04","revision":"2026-02-04","schema":"/rests/modules/iana-http-versions?revision=2026-02-04","namespace":"urn:ietf:params:xml:ns:yang:iana-http-versions","conformance-type":"import"},{"name":"opendaylight-direct-statistics_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/opendaylight-direct-statistics?revision=2016-05-11","namespace":"urn:opendaylight:direct:statistics","conformance-type":"import"},{"name":"opendaylight-port-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-port-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:port","conformance-type":"import"},{"name":"sal-async-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/sal-async-config?revision=2017-06-19","namespace":"urn:opendaylight:async-config:service","conformance-type":"import"},{"name":"aaa-password-service-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-password-service-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:password:service:config","conformance-type":"import"},{"name":"ietf-yang-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-yang-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-types","conformance-type":"import"},{"name":"opendaylight-queue-statistics_2013-12-16","revision":"2013-12-16","schema":"/rests/modules/opendaylight-queue-statistics?revision=2013-12-16","namespace":"urn:opendaylight:queue:statistics","conformance-type":"import"},{"name":"sal-bundle_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/sal-bundle?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf:bundle:service","conformance-type":"import"},{"name":"ietf-restconf-subscribed-notifications_2019-11-17","revision":"2019-11-17","schema":"/rests/modules/ietf-restconf-subscribed-notifications?revision=2019-11-17","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-subscribed-notifications","conformance-type":"import"},{"name":"sal-meters-batch_2016-03-16","revision":"2016-03-16","schema":"/rests/modules/sal-meters-batch?revision=2016-03-16","namespace":"urn:opendaylight:meters:service","conformance-type":"import"},{"name":"odl-entity-owners","revision":"","schema":"/rests/modules/odl-entity-owners","namespace":"urn:opendaylight:params:xml:ns:yang:controller:entity-owners","conformance-type":"import"},{"name":"sal-experimenter-mp-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-mp-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-mp-message:service","conformance-type":"import"},{"name":"packet-processing_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/packet-processing?revision=2013-07-09","namespace":"urn:opendaylight:packet:service","conformance-type":"import"},{"name":"openflow-configuration_2014-06-30","revision":"2014-06-30","schema":"/rests/modules/openflow-configuration?revision=2014-06-30","namespace":"urn:opendaylight:openflow:config","conformance-type":"import"},{"name":"odl-srm-rpcs_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-rpcs?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:rpc","conformance-type":"import"},{"name":"ietf-netconf-acm_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-netconf-acm?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-acm","conformance-type":"import"},{"name":"iana-crypt-hash_2014-08-06","revision":"2014-08-06","schema":"/rests/modules/iana-crypt-hash?revision=2014-08-06","namespace":"urn:ietf:params:xml:ns:yang:iana-crypt-hash","conformance-type":"import","feature":["crypt-hash-sha-512","crypt-hash-sha-256","crypt-hash-md5"]},{"name":"openflow-extensible-match_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-extensible-match?revision=2015-02-25","namespace":"urn:opendaylight:openflow:oxm","conformance-type":"import"}],"module-set-id":"2"}}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:53:37.388998" elapsed="0.003359"/>
</kw>
<status status="PASS" start="2026-04-08T00:53:37.388649" elapsed="0.003775"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:37.388609" elapsed="0.003869"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:53:37.395270" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:53:37.392888" elapsed="0.002429"/>
</kw>
<status status="PASS" start="2026-04-08T00:53:37.392581" elapsed="0.002800"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:37.392549" elapsed="0.002883"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:53:37.396412" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:53:37.395819" elapsed="0.000643"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:37.396891" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:53:37.396576" elapsed="0.000398"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:53:37.397630" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:53:37.397307" elapsed="0.000351"/>
</kw>
<status status="PASS" start="2026-04-08T00:53:37.397052" elapsed="0.000672"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:37.396544" elapsed="0.001229"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:53:37.398835" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:53:37.398295" elapsed="0.000591"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:37.399341" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:53:37.399005" elapsed="0.000422"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:53:37.400001" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:53:37.399697" elapsed="0.000330"/>
</kw>
<status status="PASS" start="2026-04-08T00:53:37.399478" elapsed="0.000612"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:37.398971" elapsed="0.001168"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:53:37.400522" elapsed="0.000458"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:53:37.401850" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:53:37.401376" elapsed="0.000527"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:53:37.402339" elapsed="0.002329"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:53:37.387160" elapsed="0.017596"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:53:37.405176" elapsed="0.000047"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:53:37.404941" elapsed="0.000378"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:37.404919" elapsed="0.000438"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:53:37.416688" level="INFO">${text_normalized} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:53:37.405563" elapsed="0.011182"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:53:37.417514" elapsed="0.000119"/>
</return>
<msg time="2026-04-08T00:53:37.418323" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:53:37.333844" elapsed="0.084559"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:53:37.418581" elapsed="0.000073"/>
</return>
<msg time="2026-04-08T00:53:37.419198" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="PASS" start="2026-04-08T00:53:37.185195" elapsed="0.234074"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Json_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:37.420281" elapsed="0.000067"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:53:37.419512" elapsed="0.001281"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:37.419461" elapsed="0.001403"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:53:37.420959" elapsed="0.000079"/>
</return>
<arg>session=${session}</arg>
<arg>folder=${RESTCONF_MODULES_DIR}</arg>
<arg>verify=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Add arguments sensible for JSON data, return Get_Templated response text.
Optionally, verification against JSON data (may be iterated) is called.
Only subset of JSON data is verified and returned if JMES path is specified in
file ${folder}/jmespath.expr.</doc>
<status status="PASS" start="2026-04-08T00:53:37.181059" elapsed="0.240320"/>
</kw>
<status status="PASS" start="2026-04-08T00:53:37.177254" elapsed="0.244238"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:37.177236" elapsed="0.244319"/>
</if>
<kw name="Resolve_Shard_Type_Class" owner="ClusterManagement">
<if>
<branch type="IF" condition="'${shard_type}' == 'config'">
<return>
<value>DistributedConfigDatastore</value>
<status status="PASS" start="2026-04-08T00:53:37.423691" elapsed="0.000061"/>
</return>
<status status="PASS" start="2026-04-08T00:53:37.423467" elapsed="0.000355"/>
</branch>
<branch type="ELSE IF" condition="'${shard_type}' == 'operational'">
<return>
<value>DistributedOperationalDatastore</value>
<status status="NOT RUN" start="2026-04-08T00:53:37.423920" elapsed="0.000019"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:53:37.423859" elapsed="0.000119"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:37.423431" elapsed="0.000580"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized shard type: ${shard_type}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:37.424296" elapsed="0.000035"/>
</kw>
<msg time="2026-04-08T00:53:37.424479" level="INFO">${type_class} = DistributedConfigDatastore</msg>
<var>${type_class}</var>
<arg>shard_type=${shard_type}</arg>
<doc>Simple lookup for class name corresponding to desired type.</doc>
<status status="PASS" start="2026-04-08T00:53:37.422834" elapsed="0.001682"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:53:37.425683" level="INFO">${cluster_index} = 1</msg>
<var>${cluster_index}</var>
<arg>${member_index}+${NODE_ROLE_INDEX_START}-1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:53:37.424781" elapsed="0.000959"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:53:37.427076" level="INFO">${uri} = jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-inventory-config,type=DistributedConfigDatastore</msg>
<var>${uri}</var>
<arg>${JOLOKIA_READ_URI}:Category=Shards,name=member-${cluster_index}-shard-${shard_name}-${shard_type},type=${type_class}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:53:37.425989" elapsed="0.001124"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:53:37.433104" level="INFO">jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-inventory-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:53:37.432811" elapsed="0.000433"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:53:37.433679" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:53:37.433402" elapsed="0.000322"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:53:37.447702" level="INFO">GET Request : url=http://10.30.170.48:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-inventory-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-inventory-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:53:37.447850" level="INFO">GET Response : url=http://10.30.170.48:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-inventory-config,type=DistributedConfigDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Wed, 08 Apr 2026 00:53:37 GMT', 'Expires': 'Tue, 07 Apr 2026 23:53:37 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-1-shard-inventory-config,type=DistributedConfigDatastore","type":"read"},"value":{"ReadWriteTransactionCount":0,"SnapshotIndex":36,"InMemoryJournalLogSize":1,"ReplicatedToAllIndex":36,"Leader":"member-3-shard-inventory-config","LastIndex":37,"RaftState":"Follower","LastApplied":37,"LastCommittedTransactionTime":"1970-01-01 00:00:00.000","LastLogIndex":37,"LastLeadershipChangeTime":"2026-04-08 00:53:22.400","PeerAddresses":"member-2-shard-inventory-config: pekko:\/\/opendaylight-cluster-data@10.30.170.131:2550\/user\/shardmanager-config\/member-2-shard-inventory-config, member-3-shard-inventory-config: pekko:\/\/opendaylight-cluster-data@10.30.171.110:2550\/user\/shardmanager-config\/member-3-shard-inventory-config","FollowerInitialSyncStatus":true,"FollowerInfo":[],"FailedReadTransactionsCount":0,"StatRetrievalTime":"2.397 ms","Voting":true,"CurrentTerm":3,"LastTerm":2,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-3-shard-inventory-config","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":0,"TxCohortCacheSize":0,"PeerVotingStates":"member-2-shard-inventory-config: true, member-3-shard-inventory-config: true","LastLogTerm":2,"StatRetrievalError":null,"CommitIndex":37,"SnapshotTerm":2,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-1-shard-inventory-config","LeadershipChangeCount":1,"InMemoryJournalDataSize":1908},"timestamp":1775609617,"status":200} 
 </msg>
<msg time="2026-04-08T00:53:37.448043" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:53:37.435834" elapsed="0.012238"/>
</kw>
<status status="PASS" start="2026-04-08T00:53:37.433793" elapsed="0.014334"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:37.448372" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:53:37.448177" elapsed="0.000262"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:37.433774" elapsed="0.014688"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:53:37.453039" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-1-shard-inventory-config,type=DistributedConfigDatastore","type":"read"},"value":{"ReadWriteTransactionCount":0,"SnapshotIndex":36,"InMemoryJournalLogSize":1,"ReplicatedToAllIndex":36,"Leader":"member-3-shard-inventory-config","LastIndex":37,"RaftState":"Follower","LastApplied":37,"LastCommittedTransactionTime":"1970-01-01 00:00:00.000","LastLogIndex":37,"LastLeadershipChangeTime":"2026-04-08 00:53:22.400","PeerAddresses":"member-2-shard-inventory-config: pekko:\/\/opendaylight-cluster-data@10.30.170.131:2550\/user\/shardmanager-config\/member-2-shard-inventory-config, member-3-shard-inventory-config: pekko:\/\/opendaylight-cluster-data@10.30.171.110:2550\/user\/shardmanager-config\/member-3-shard-inventory-config","FollowerInitialSyncStatus":true,"FollowerInfo":[],"FailedReadTransactionsCount":0,"StatRetrievalTime":"2.397 ms","Voting":true,"CurrentTerm":3,"LastTerm":2,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-3-shard-inventory-config","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":0,"TxCohortCacheSize":0,"PeerVotingStates":"member-2-shard-inventory-config: true, member-3-shard-inventory-config: true","LastLogTerm":2,"StatRetrievalError":null,"CommitIndex":37,"SnapshotTerm":2,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-1-shard-inventory-config","LeadershipChangeCount":1,"InMemoryJournalDataSize":1908},"timestamp":1775609617,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:53:37.449921" elapsed="0.003423"/>
</kw>
<status status="PASS" start="2026-04-08T00:53:37.449576" elapsed="0.003872"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:37.449556" elapsed="0.003920"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:53:37.456549" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:53:37.453862" elapsed="0.002835"/>
</kw>
<status status="PASS" start="2026-04-08T00:53:37.453536" elapsed="0.003261"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:37.453518" elapsed="0.003307"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:53:37.457668" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:53:37.457014" elapsed="0.000682"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:37.458496" elapsed="0.000118"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:53:37.457806" elapsed="0.000926"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:53:37.460388" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:53:37.459548" elapsed="0.000884"/>
</kw>
<status status="PASS" start="2026-04-08T00:53:37.458759" elapsed="0.001788"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:37.457786" elapsed="0.002794"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:53:37.461351" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:53:37.460744" elapsed="0.000634"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:37.462140" elapsed="0.000104"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:53:37.461487" elapsed="0.000874"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:53:37.463822" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:53:37.462937" elapsed="0.000928"/>
</kw>
<status status="PASS" start="2026-04-08T00:53:37.462388" elapsed="0.001587"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:37.461467" elapsed="0.002534"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:53:37.464177" elapsed="0.000793"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:53:37.465873" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:53:37.465215" elapsed="0.000685"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:53:37.466102" elapsed="0.002724"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:53:37.449048" elapsed="0.019878"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:53:37.469112" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:53:37.468999" elapsed="0.000176"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:37.468980" elapsed="0.000219"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:53:37.487579" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-1-shard-inventory-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 177560...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:53:37.469346" elapsed="0.018271"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:53:37.487681" elapsed="0.000047"/>
</return>
<msg time="2026-04-08T00:53:37.487869" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-1-shard-inventory-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 177560...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:53:37.428436" elapsed="0.059461"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:53:37.488033" elapsed="0.000027"/>
</return>
<msg time="2026-04-08T00:53:37.488204" level="INFO">${data_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-1-shard-inventory-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 177560...</msg>
<var>${data_text}</var>
<arg>uri=${uri}</arg>
<arg>session=${session}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-08T00:53:37.427443" elapsed="0.060790"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:53:37.489406" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-1-shard-inventory-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1775609617, 'valu...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:53:37.488910" elapsed="0.000525"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-08T00:53:37.489483" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:53:37.489652" level="INFO">${data_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-1-shard-inventory-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1775609617, 'valu...</msg>
<var>${data_object}</var>
<arg>${data_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-08T00:53:37.488502" elapsed="0.001177"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:53:37.490032" level="INFO">${value} = {'AbortTransactionsCount': 0, 'CommitIndex': 37, 'CommittedTransactionsCount': 0, 'CurrentTerm': 3, 'FailedReadTransactionsCount': 0, 'FailedTransactionsCount': 0, 'FollowerInfo': [], 'FollowerInitial...</msg>
<var>${value}</var>
<arg>${data_object}</arg>
<arg>value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:53:37.489834" elapsed="0.000225"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:53:37.490427" level="INFO">${raft_property} = Follower</msg>
<var>${raft_property}</var>
<arg>${value}</arg>
<arg>${property}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:53:37.490229" elapsed="0.000225"/>
</kw>
<return>
<value>${raft_property}</value>
<status status="PASS" start="2026-04-08T00:53:37.490500" elapsed="0.000027"/>
</return>
<msg time="2026-04-08T00:53:37.490651" level="INFO">${raft_state} = Follower</msg>
<var>${raft_state}</var>
<arg>RaftState</arg>
<arg>${shard_name}</arg>
<arg>${shard_type}</arg>
<arg>${member_index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft property.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T00:53:37.175400" elapsed="0.315276"/>
</kw>
<return>
<value>${raft_state}</value>
<status status="PASS" start="2026-04-08T00:53:37.490734" elapsed="0.000025"/>
</return>
<msg time="2026-04-08T00:53:37.490883" level="INFO">${raft_state} = Follower</msg>
<var>${raft_state}</var>
<arg>shard_name=${shard_name}</arg>
<arg>shard_type=${ds_type}</arg>
<arg>member_index=${index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft status.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T00:53:37.174667" elapsed="0.316265"/>
</kw>
<if>
<branch type="IF" condition="'Follower' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${follower_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-08T00:53:37.491661" elapsed="0.000206"/>
</kw>
<status status="PASS" start="2026-04-08T00:53:37.491022" elapsed="0.000884"/>
</branch>
<branch type="ELSE IF" condition="'Leader' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${leader_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:37.492074" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:53:37.491931" elapsed="0.000196"/>
</branch>
<branch type="ELSE IF" condition="${validate}">
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized Raft state: ${raft_state}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:37.492307" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:53:37.492150" elapsed="0.000208"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:37.491003" elapsed="0.001377"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T00:53:37.174498" elapsed="0.317906"/>
</iter>
<iter>
<kw name="Get_Raft_State_Of_Shard_At_Member" owner="ClusterManagement">
<kw name="Get_Raft_Property_From_Shard_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:53:37.494907" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:53:37.494429" elapsed="0.000521"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:53:37.494997" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:53:37.495143" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:53:37.494073" elapsed="0.001404"/>
</kw>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Get_As_Json_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:53:37.573250" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:53:37.572791" elapsed="0.000495"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:53:37.574096" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:53:37.573811" elapsed="0.000400">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-08T00:53:37.574414" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:53:37.573469" elapsed="0.000970"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:53:37.575033" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:53:37.574618" elapsed="0.000442"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T00:53:37.575396" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-08T00:53:37.575601" level="INFO">${template} = /rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T00:53:37.575249" elapsed="0.000377"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:53:37.576046" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:53:37.575799" elapsed="0.000292"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:53:37.577184" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:53:37.576912" elapsed="0.000320"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-08T00:53:37.577679" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-08T00:53:37.577392" elapsed="0.000314"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:37.578051" elapsed="0.000022"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:37.578273" elapsed="0.000025"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:37.578448" elapsed="0.000021"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-08T00:53:37.577915" elapsed="0.000590"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-08T00:53:37.577762" elapsed="0.000774"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-08T00:53:37.578587" elapsed="0.000036"/>
</return>
<msg time="2026-04-08T00:53:37.578763" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-08T00:53:37.576584" elapsed="0.002204"/>
</kw>
<status status="PASS" start="2026-04-08T00:53:37.576204" elapsed="0.002616"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:37.578989" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:53:37.578847" elapsed="0.000197"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:37.576153" elapsed="0.002911"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:53:37.579669" level="INFO">${final_text} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:53:37.579220" elapsed="0.000476"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T00:53:37.579771" elapsed="0.000030"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="PASS" start="2026-04-08T00:53:37.571967" elapsed="0.008011"/>
</kw>
<msg time="2026-04-08T00:53:37.580078" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:53:37.557853" elapsed="0.022417"/>
</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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:37.595669" elapsed="0.000076"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:37.609438" elapsed="0.000080"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:37.622977" elapsed="0.000059"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:37.623430" elapsed="0.000089"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:37.623778" elapsed="0.000084"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:37.624789" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:53:37.624539" elapsed="0.000319"/>
</branch>
<status status="NOT RUN" start="2026-04-08T00:53:37.624505" elapsed="0.000398"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:37.625204" elapsed="0.000039"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:37.625533" elapsed="0.000038"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:37.625846" elapsed="0.000036"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-08T00:53:37.624416" elapsed="0.001521"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-08T00:53:37.624031" elapsed="0.001988"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:37.626384" elapsed="0.000086"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-08T00:53:37.626667" elapsed="0.000019"/>
</return>
<msg time="2026-04-08T00:53:37.626897" level="INFO">${uri} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-08T00:53:37.546499" elapsed="0.080426"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:53:37.629535" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:53:37.629100" elapsed="0.000524">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-08T00:53:37.629782" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:53:37.627891" elapsed="0.001934"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:37.631456" elapsed="0.000038"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:53:37.629992" elapsed="0.001555"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:53:37.632559" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:53:37.631915" elapsed="0.000694"/>
</kw>
<status status="PASS" start="2026-04-08T00:53:37.631587" elapsed="0.001075"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:37.629971" elapsed="0.002729"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:53:37.635726" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:53:37.632907" elapsed="0.002863"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-08T00:53:37.635926" elapsed="0.000035"/>
</return>
<msg time="2026-04-08T00:53:37.636622" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:53:37.627354" elapsed="0.009295"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:53:37.638714" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:53:37.638376" elapsed="0.000404">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-08T00:53:37.639069" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:53:37.637509" elapsed="0.001603"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-08T00:53:37.639627" elapsed="0.000055"/>
</return>
<status status="PASS" start="2026-04-08T00:53:37.639302" elapsed="0.000479"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:37.639281" elapsed="0.000547"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:37.640032" elapsed="0.000088"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:37.640439" elapsed="0.000086"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-08T00:53:37.640705" elapsed="0.000024"/>
</return>
<msg time="2026-04-08T00:53:37.656948" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:53:37.637015" elapsed="0.019962"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:53:37.659804" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:53:37.659110" elapsed="0.000841"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:53:37.661273" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:53:37.660608" elapsed="0.000811"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:53:37.685246" level="INFO">GET Request : url=http://10.30.170.131:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 path_url=/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01eq5fxmndxspk37g8qgkyja672.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:53:37.686374" level="INFO">GET Response : url=http://10.30.170.131:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Transfer-Encoding': 'chunked'} 
 body={"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","hidden-symmetric-keys","encrypted-private-keys","asymmetrically-encrypted-value-format","cms-encrypted-data-format","cleartext-private-keys","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["ssh-client-keepalives","client-ident-hostbased","client-ident-publickey","client-ident-password"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-ex... (set the log level to DEBUG or TRACE to see the full content) 
 </msg>
<msg time="2026-04-08T00:53:37.687378" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:53:37.664699" elapsed="0.022807"/>
</kw>
<status status="PASS" start="2026-04-08T00:53:37.661557" elapsed="0.026109"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:37.690646" elapsed="0.000091"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:53:37.687780" elapsed="0.003091"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:37.661536" elapsed="0.029419"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:53:37.698483" level="INFO">{"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","hidden-symmetric-keys","encrypted-private-keys","asymmetrically-encrypted-value-format","cms-encrypted-data-format","cleartext-private-keys","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["ssh-client-keepalives","client-ident-hostbased","client-ident-publickey","client-ident-password"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-experimenter-types?revision=2015-10-20","namespace":"urn:opendaylight:openflowplugin:experimenter:types","conformance-type":"import"},{"name":"ietf-ip_2018-02-22","revision":"2018-02-22","schema":"/rests/modules/ietf-ip?revision=2018-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-ip","conformance-type":"import","feature":["ipv6-privacy-autoconf","ipv4-non-contiguous-netmasks"]},{"name":"ietf-tcp-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-client","conformance-type":"import","feature":["local-binding-supported","tcp-client-keepalives"]},{"name":"node-config_2014-10-15","revision":"2014-10-15","schema":"/rests/modules/node-config?revision=2014-10-15","namespace":"urn:opendaylight:module:config","conformance-type":"import"},{"name":"ietf-restconf_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf","conformance-type":"import"},{"name":"ietf-datastores_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-datastores?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-datastores","conformance-type":"import"},{"name":"ietf-yang-patch_2017-02-22","revision":"2017-02-22","schema":"/rests/modules/ietf-yang-patch?revision=2017-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-patch","conformance-type":"import"},{"name":"sal-group_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-group?revision=2013-09-18","namespace":"urn:opendaylight:group:service","conformance-type":"import"},{"name":"odl-codegen-extensions_2024-06-27","revision":"2024-06-27","schema":"/rests/modules/odl-codegen-extensions?revision=2024-06-27","namespace":"urn:opendaylight:yang:extension:codegen","conformance-type":"import"},{"name":"sal-meter_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-meter?revision=2013-09-18","namespace":"urn:opendaylight:meter:service","conformance-type":"import"},{"name":"ietf-interfaces_2018-02-20","revision":"2018-02-20","schema":"/rests/modules/ietf-interfaces?revision=2018-02-20","namespace":"urn:ietf:params:xml:ns:yang:ietf-interfaces","conformance-type":"import","feature":["pre-provisioning","if-mib","arbitrary-names"]},{"name":"opendaylight-l2-types_2013-08-27","revision":"2013-08-27","schema":"/rests/modules/opendaylight-l2-types?revision=2013-08-27","namespace":"urn:opendaylight:l2:types","conformance-type":"import"},{"name":"opendaylight-flow-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-flow-types?revision=2013-10-26","namespace":"urn:opendaylight:flow:types","conformance-type":"import"},{"name":"lldp-speaker-config_2016-05-12","revision":"2016-05-12","schema":"/rests/modules/lldp-speaker-config?revision=2016-05-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker:config","conformance-type":"import"},{"name":"aaa-cert_2015-11-26","revision":"2015-11-26","schema":"/rests/modules/aaa-cert?revision=2015-11-26","namespace":"urn:opendaylight:yang:aaa:cert","conformance-type":"import"},{"name":"openflow-action_2015-02-03","revision":"2015-02-03","schema":"/rests/modules/openflow-action?revision=2015-02-03","namespace":"urn:opendaylight:openflow:common:action","conformance-type":"import"},{"name":"openflow-approved-extensions_2016-08-02","revision":"2016-08-02","schema":"/rests/modules/openflow-approved-extensions?revision=2016-08-02","namespace":"urn:opendaylight:openflow:approved:extensions","conformance-type":"import"},{"name":"nc-notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/nc-notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netmod:notification","conformance-type":"import"},{"name":"ietf-netconf-nmda_2019-01-07","revision":"2019-01-07","schema":"/rests/modules/ietf-netconf-nmda?revision=2019-01-07","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-nmda","conformance-type":"import","feature":["with-defaults","origin"]},{"name":"ietf-tcp-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-common","conformance-type":"import","feature":["keepalives-supported"]},{"name":"network-topology_2013-10-21","revision":"2013-10-21","schema":"/rests/modules/network-topology?revision=2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:network-topology","conformance-type":"import"},{"name":"aaa-encrypt-service-config_2024-02-02","revision":"2024-02-02","schema":"/rests/modules/aaa-encrypt-service-config?revision=2024-02-02","namespace":"config:aaa:authn:encrypt:service:config","conformance-type":"import"},{"name":"openflow-instruction_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-instruction?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:instruction","conformance-type":"import"},{"name":"ietf-tls-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-client","conformance-type":"import","feature":["client-ident-x509-cert","server-auth-x509-cert"]},{"name":"opendaylight-group-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-group-statistics?revision=2013-11-11","namespace":"urn:opendaylight:group:statistics","conformance-type":"import"},{"name":"cluster-admin_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/cluster-admin?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:cluster:admin","conformance-type":"import"},{"name":"opendaylight-flow-statistics_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-flow-statistics?revision=2013-08-19","namespace":"urn:opendaylight:flow:statistics","conformance-type":"import"},{"name":"opendaylight-table-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-table-types?revision=2013-10-26","namespace":"urn:opendaylight:table:types","conformance-type":"import"},{"name":"forwarding-rules-manager-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/forwarding-rules-manager-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:forwardingrules-manager:config","conformance-type":"import"},{"name":"odl-srm-types_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-types?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:types","conformance-type":"import"},{"name":"ietf-x509-cert-to-name_2014-12-10","revision":"2014-12-10","schema":"/rests/modules/ietf-x509-cert-to-name?revision=2014-12-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-x509-cert-to-name","conformance-type":"import"},{"name":"flow-node-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-node-inventory?revision=2013-08-19","namespace":"urn:opendaylight:flow:inventory","conformance-type":"import"},{"name":"flow-errors_2013-11-16","revision":"2013-11-16","schema":"/rests/modules/flow-errors?revision=2013-11-16","namespace":"urn:opendaylight:flow:errors","conformance-type":"import"},{"name":"ietf-netconf_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:netconf:base:1.0","conformance-type":"import","feature":["xpath","url","rollback-on-error","validate","startup","candidate","confirmed-commit","writable-running"]},{"name":"iana-ssh-public-key-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-public-key-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-public-key-algs","conformance-type":"import"},{"name":"aaa-cert-mdsal_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/aaa-cert-mdsal?revision=2016-03-21","namespace":"urn:opendaylight:yang:aaa:cert:mdsal","conformance-type":"import"},{"name":"odl-device-notification_2024-02-18","revision":"2024-02-18","schema":"/rests/modules/odl-device-notification?revision=2024-02-18","namespace":"urn:opendaylight:device:notification","conformance-type":"import"},{"name":"ietf-origin_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-origin?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-origin","conformance-type":"import"},{"name":"openflow-augments_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-augments?revision=2015-02-25","namespace":"urn:opendaylight:openflow:augments","conformance-type":"import"},{"name":"iana-ssh-encryption-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-encryption-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-encryption-algs","conformance-type":"import"},{"name":"ietf-truststore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-truststore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-truststore","conformance-type":"import","feature":["inline-definitions-supported"]},{"name":"distributed-datastore-provider_2025-01-30","revision":"2025-01-30","schema":"/rests/modules/distributed-datastore-provider?revision=2025-01-30","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:distributed-datastore-provider","conformance-type":"import"},{"name":"opendaylight-group-types_2013-10-18","revision":"2013-10-18","schema":"/rests/modules/opendaylight-group-types?revision=2013-10-18","namespace":"urn:opendaylight:group:types","conformance-type":"import"},{"name":"sal-remote-augment_2023-11-03","revision":"2023-11-03","schema":"/rests/modules/sal-remote-augment?revision=2023-11-03","namespace":"urn:sal:restconf:event:subscription","conformance-type":"import"},{"name":"opendaylight-ipv6-arbitrary-bitmask-fields_2016-02-24","revision":"2016-02-24","schema":"/rests/modules/opendaylight-ipv6-arbitrary-bitmask-fields?revision=2016-02-24","namespace":"urn:opendaylight:opendaylight-ipv6-arbitrary-bitmask-fields","conformance-type":"import"},{"name":"sal-flows-batch_2016-03-14","revision":"2016-03-14","schema":"/rests/modules/sal-flows-batch?revision=2016-03-14","namespace":"urn:opendaylight:flows:service","conformance-type":"import"},{"name":"ietf-tls-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-common","conformance-type":"import","feature":["tls12","hello-params","tls13"]},{"name":"openflow-types_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-types?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:types","conformance-type":"import"},{"name":"ietf-netconf-with-defaults_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf-with-defaults?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults","conformance-type":"import"},{"name":"odl-srm-ops_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-ops?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:ops","conformance-type":"import"},{"name":"odl-general-entity_2015-09-30","revision":"2015-09-30","schema":"/rests/modules/odl-general-entity?revision=2015-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:mdsal:core:general-entity","conformance-type":"import"},{"name":"iana-ssh-key-exchange-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-key-exchange-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-key-exchange-algs","conformance-type":"import"},{"name":"node-ssl-connection-error_2019-07-23","revision":"2019-07-23","schema":"/rests/modules/node-ssl-connection-error?revision=2019-07-23","namespace":"urn:opendaylight:node-ssl-connection-error:service","conformance-type":"import"},{"name":"openflow-protocol_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-protocol?revision=2013-07-31","namespace":"urn:opendaylight:openflow:protocol","conformance-type":"import"},{"name":"ietf-udp-server_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-server?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-server","conformance-type":"import"},{"name":"ietf-keystore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-keystore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-keystore","conformance-type":"import","feature":["asymmetric-keys","inline-definitions-supported"]},{"name":"aaa_2016-12-14","revision":"2016-12-14","schema":"/rests/modules/aaa?revision=2016-12-14","namespace":"urn:opendaylight:params:xml:ns:yang:aaa","conformance-type":"import"},{"name":"aaa-cert-rpc_2015-12-15","revision":"2015-12-15","schema":"/rests/modules/aaa-cert-rpc?revision=2015-12-15","namespace":"urn:opendaylight:yang:aaa:cert:rpc","conformance-type":"import"},{"name":"system-notifications_2013-09-27","revision":"2013-09-27","schema":"/rests/modules/system-notifications?revision=2013-09-27","namespace":"urn:opendaylight:openflow:system","conformance-type":"import"},{"name":"sal-flat-batch_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/sal-flat-batch?revision=2016-03-21","namespace":"urn:opendaylight:flat-batch:service","conformance-type":"import"},{"name":"notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netconf:notification:1.0","conformance-type":"import"},{"name":"sal-remote_2014-01-14","revision":"2014-01-14","schema":"/rests/modules/sal-remote?revision=2014-01-14","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:remote","conformance-type":"import"},{"name":"yang-ext_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/yang-ext?revision=2013-07-09","namespace":"urn:opendaylight:yang:extension:yang-ext","conformance-type":"import"},{"name":"opendaylight-multipart-types_2017-01-12","revision":"2017-01-12","schema":"/rests/modules/opendaylight-multipart-types?revision=2017-01-12","namespace":"urn:opendaylight:multipart:types","conformance-type":"import"},{"name":"opendaylight-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-inventory?revision=2013-08-19","namespace":"urn:opendaylight:inventory","conformance-type":"import"},{"name":"sal-queue_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-queue?revision=2015-03-05","namespace":"urn:opendaylight:queue:service","conformance-type":"import"},{"name":"sal-groups-batch_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/sal-groups-batch?revision=2016-03-15","namespace":"urn:opendaylight:groups:service","conformance-type":"import"},{"name":"arbitrator-reconcile_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/arbitrator-reconcile?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:arbitrator-reconcile:service","conformance-type":"import"},{"name":"ietf-yang-metadata_2016-08-05","revision":"2016-08-05","schema":"/rests/modules/ietf-yang-metadata?revision=2016-08-05","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-metadata","conformance-type":"import"},{"name":"opendaylight-arbitrary-bitmask-fields_2016-01-30","revision":"2016-01-30","schema":"/rests/modules/opendaylight-arbitrary-bitmask-fields?revision=2016-01-30","namespace":"urn:opendaylight:arbitrary:bitmask:fields","conformance-type":"import"},{"name":"ietf-udp-client_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-client?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-client","conformance-type":"import","feature":["local-binding"]},{"name":"opendaylight-meter-types_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/opendaylight-meter-types?revision=2013-09-18","namespace":"urn:opendaylight:meter:types","conformance-type":"import"},{"name":"opendaylight-action-types_2013-11-12","revision":"2013-11-12","schema":"/rests/modules/opendaylight-action-types?revision=2013-11-12","namespace":"urn:opendaylight:action:types","conformance-type":"import"},{"name":"sal-role_2015-07-27","revision":"2015-07-27","schema":"/rests/modules/sal-role?revision=2015-07-27","namespace":"urn:opendaylight:role:service","conformance-type":"import"},{"name":"openflow-provider-config_2016-05-10","revision":"2016-05-10","schema":"/rests/modules/openflow-provider-config?revision=2016-05-10","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:provider:config","conformance-type":"import"},{"name":"odl-serviceutils-upgrade_2018-07-02","revision":"2018-07-02","schema":"/rests/modules/odl-serviceutils-upgrade?revision=2018-07-02","namespace":"urn:opendaylight:serviceutils:upgrade","conformance-type":"import"},{"name":"opendaylight-match-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-match-types?revision=2013-10-26","namespace":"urn:opendaylight:model:match:types","conformance-type":"import"},{"name":"ietf-restconf-server_2024-08-14","revision":"2024-08-14","schema":"/rests/modules/ietf-restconf-server?revision=2024-08-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-server","conformance-type":"import","feature":["http-listen","https-listen"]},{"name":"reconciliation-result-state_2017-07-13","revision":"2017-07-13","schema":"/rests/modules/reconciliation-result-state?revision=2017-07-13","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:rf:state","conformance-type":"import"},{"name":"onf-extensions_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/onf-extensions?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf","conformance-type":"import"},{"name":"sal-table_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/sal-table?revision=2013-10-26","namespace":"urn:opendaylight:table:service","conformance-type":"import"},{"name":"iana-http-versions_2026-02-04","revision":"2026-02-04","schema":"/rests/modules/iana-http-versions?revision=2026-02-04","namespace":"urn:ietf:params:xml:ns:yang:iana-http-versions","conformance-type":"import"},{"name":"opendaylight-direct-statistics_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/opendaylight-direct-statistics?revision=2016-05-11","namespace":"urn:opendaylight:direct:statistics","conformance-type":"import"},{"name":"opendaylight-port-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-port-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:port","conformance-type":"import"},{"name":"sal-async-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/sal-async-config?revision=2017-06-19","namespace":"urn:opendaylight:async-config:service","conformance-type":"import"},{"name":"aaa-password-service-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-password-service-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:password:service:config","conformance-type":"import"},{"name":"ietf-yang-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-yang-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-types","conformance-type":"import"},{"name":"opendaylight-queue-statistics_2013-12-16","revision":"2013-12-16","schema":"/rests/modules/opendaylight-queue-statistics?revision=2013-12-16","namespace":"urn:opendaylight:queue:statistics","conformance-type":"import"},{"name":"sal-bundle_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/sal-bundle?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf:bundle:service","conformance-type":"import"},{"name":"ietf-restconf-subscribed-notifications_2019-11-17","revision":"2019-11-17","schema":"/rests/modules/ietf-restconf-subscribed-notifications?revision=2019-11-17","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-subscribed-notifications","conformance-type":"import"},{"name":"sal-meters-batch_2016-03-16","revision":"2016-03-16","schema":"/rests/modules/sal-meters-batch?revision=2016-03-16","namespace":"urn:opendaylight:meters:service","conformance-type":"import"},{"name":"odl-entity-owners","revision":"","schema":"/rests/modules/odl-entity-owners","namespace":"urn:opendaylight:params:xml:ns:yang:controller:entity-owners","conformance-type":"import"},{"name":"sal-experimenter-mp-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-mp-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-mp-message:service","conformance-type":"import"},{"name":"packet-processing_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/packet-processing?revision=2013-07-09","namespace":"urn:opendaylight:packet:service","conformance-type":"import"},{"name":"openflow-configuration_2014-06-30","revision":"2014-06-30","schema":"/rests/modules/openflow-configuration?revision=2014-06-30","namespace":"urn:opendaylight:openflow:config","conformance-type":"import"},{"name":"odl-srm-rpcs_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-rpcs?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:rpc","conformance-type":"import"},{"name":"ietf-netconf-acm_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-netconf-acm?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-acm","conformance-type":"import"},{"name":"iana-crypt-hash_2014-08-06","revision":"2014-08-06","schema":"/rests/modules/iana-crypt-hash?revision=2014-08-06","namespace":"urn:ietf:params:xml:ns:yang:iana-crypt-hash","conformance-type":"import","feature":["crypt-hash-sha-512","crypt-hash-sha-256","crypt-hash-md5"]},{"name":"openflow-extensible-match_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-extensible-match?revision=2015-02-25","namespace":"urn:opendaylight:openflow:oxm","conformance-type":"import"}],"module-set-id":"2"}}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:53:37.695462" elapsed="0.003381"/>
</kw>
<status status="PASS" start="2026-04-08T00:53:37.695086" elapsed="0.003826"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:37.695046" elapsed="0.003920"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:53:37.701776" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:53:37.699399" elapsed="0.002423"/>
</kw>
<status status="PASS" start="2026-04-08T00:53:37.699072" elapsed="0.002816"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:37.699039" elapsed="0.002901"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:53:37.703100" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:53:37.702477" elapsed="0.000673"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:37.703607" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:53:37.703287" elapsed="0.000403"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:53:37.704298" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:53:37.703968" elapsed="0.000356"/>
</kw>
<status status="PASS" start="2026-04-08T00:53:37.703742" elapsed="0.000646"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:37.703254" elapsed="0.001185"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:53:37.705378" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:53:37.704811" elapsed="0.000616"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:37.705858" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:53:37.705544" elapsed="0.000400"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:53:37.706571" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:53:37.706248" elapsed="0.000351"/>
</kw>
<status status="PASS" start="2026-04-08T00:53:37.705996" elapsed="0.000669"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:37.705509" elapsed="0.001206"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:53:37.707079" elapsed="0.000479"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:53:37.708417" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:53:37.707939" elapsed="0.000528"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:53:37.708832" elapsed="0.002417"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:53:37.693159" elapsed="0.018176"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:53:37.711750" elapsed="0.000044"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:53:37.711525" elapsed="0.000368"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:37.711504" elapsed="0.000429"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:53:37.723007" level="INFO">${text_normalized} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:53:37.712138" elapsed="0.010917"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:53:37.723222" elapsed="0.000042"/>
</return>
<msg time="2026-04-08T00:53:37.723483" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:53:37.657437" elapsed="0.066075"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:53:37.723579" elapsed="0.000027"/>
</return>
<msg time="2026-04-08T00:53:37.723734" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="PASS" start="2026-04-08T00:53:37.503471" elapsed="0.220289"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Json_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:37.724104" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:53:37.723846" elapsed="0.000397"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:37.723829" elapsed="0.000441"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:53:37.724303" elapsed="0.000026"/>
</return>
<arg>session=${session}</arg>
<arg>folder=${RESTCONF_MODULES_DIR}</arg>
<arg>verify=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Add arguments sensible for JSON data, return Get_Templated response text.
Optionally, verification against JSON data (may be iterated) is called.
Only subset of JSON data is verified and returned if JMES path is specified in
file ${folder}/jmespath.expr.</doc>
<status status="PASS" start="2026-04-08T00:53:37.499358" elapsed="0.225070"/>
</kw>
<status status="PASS" start="2026-04-08T00:53:37.495551" elapsed="0.228919"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:37.495533" elapsed="0.228961"/>
</if>
<kw name="Resolve_Shard_Type_Class" owner="ClusterManagement">
<if>
<branch type="IF" condition="'${shard_type}' == 'config'">
<return>
<value>DistributedConfigDatastore</value>
<status status="PASS" start="2026-04-08T00:53:37.725145" elapsed="0.000041"/>
</return>
<status status="PASS" start="2026-04-08T00:53:37.725009" elapsed="0.000212"/>
</branch>
<branch type="ELSE IF" condition="'${shard_type}' == 'operational'">
<return>
<value>DistributedOperationalDatastore</value>
<status status="NOT RUN" start="2026-04-08T00:53:37.725282" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:53:37.725245" elapsed="0.000076"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:37.724991" elapsed="0.000352"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized shard type: ${shard_type}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:37.725489" elapsed="0.000021"/>
</kw>
<msg time="2026-04-08T00:53:37.725607" level="INFO">${type_class} = DistributedConfigDatastore</msg>
<var>${type_class}</var>
<arg>shard_type=${shard_type}</arg>
<doc>Simple lookup for class name corresponding to desired type.</doc>
<status status="PASS" start="2026-04-08T00:53:37.724729" elapsed="0.000903"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:53:37.726277" level="INFO">${cluster_index} = 2</msg>
<var>${cluster_index}</var>
<arg>${member_index}+${NODE_ROLE_INDEX_START}-1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:53:37.725797" elapsed="0.000508"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:53:37.726915" level="INFO">${uri} = jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-inventory-config,type=DistributedConfigDatastore</msg>
<var>${uri}</var>
<arg>${JOLOKIA_READ_URI}:Category=Shards,name=member-${cluster_index}-shard-${shard_name}-${shard_type},type=${type_class}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:53:37.726458" elapsed="0.000485"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:53:37.732478" level="INFO">jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-inventory-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:53:37.732200" elapsed="0.000325"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:53:37.732949" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:53:37.732679" elapsed="0.000314"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:53:37.743191" level="INFO">GET Request : url=http://10.30.170.131:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-inventory-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-inventory-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:53:37.743363" level="INFO">GET Response : url=http://10.30.170.131:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-inventory-config,type=DistributedConfigDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Wed, 08 Apr 2026 00:53:37 GMT', 'Expires': 'Tue, 07 Apr 2026 23:53:37 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-2-shard-inventory-config,type=DistributedConfigDatastore","type":"read"},"value":{"ReadWriteTransactionCount":0,"SnapshotIndex":36,"InMemoryJournalLogSize":1,"ReplicatedToAllIndex":36,"Leader":"member-3-shard-inventory-config","LastIndex":37,"RaftState":"Follower","LastCommittedTransactionTime":"1970-01-01 00:00:00.000","LastApplied":37,"PeerAddresses":"member-1-shard-inventory-config: pekko:\/\/opendaylight-cluster-data@10.30.170.48:2550\/user\/shardmanager-config\/member-1-shard-inventory-config, member-3-shard-inventory-config: pekko:\/\/opendaylight-cluster-data@10.30.171.110:2550\/user\/shardmanager-config\/member-3-shard-inventory-config","LastLogIndex":37,"LastLeadershipChangeTime":"2026-04-08 00:52:55.716","FollowerInitialSyncStatus":true,"FollowerInfo":[],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"375.3 μs","CurrentTerm":3,"LastTerm":2,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-3-shard-inventory-config","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":0,"TxCohortCacheSize":0,"PeerVotingStates":"member-1-shard-inventory-config: true, member-3-shard-inventory-config: true","LastLogTerm":2,"StatRetrievalError":null,"CommitIndex":37,"SnapshotTerm":2,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-2-shard-inventory-config","LeadershipChangeCount":2,"InMemoryJournalDataSize":1908},"timestamp":1775609617,"status":200} 
 </msg>
<msg time="2026-04-08T00:53:37.743596" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:53:37.735815" elapsed="0.007818"/>
</kw>
<status status="PASS" start="2026-04-08T00:53:37.733062" elapsed="0.010632"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:37.743945" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:53:37.743732" elapsed="0.000300"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:37.733043" elapsed="0.011020"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:53:37.750098" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-2-shard-inventory-config,type=DistributedConfigDatastore","type":"read"},"value":{"ReadWriteTransactionCount":0,"SnapshotIndex":36,"InMemoryJournalLogSize":1,"ReplicatedToAllIndex":36,"Leader":"member-3-shard-inventory-config","LastIndex":37,"RaftState":"Follower","LastCommittedTransactionTime":"1970-01-01 00:00:00.000","LastApplied":37,"PeerAddresses":"member-1-shard-inventory-config: pekko:\/\/opendaylight-cluster-data@10.30.170.48:2550\/user\/shardmanager-config\/member-1-shard-inventory-config, member-3-shard-inventory-config: pekko:\/\/opendaylight-cluster-data@10.30.171.110:2550\/user\/shardmanager-config\/member-3-shard-inventory-config","LastLogIndex":37,"LastLeadershipChangeTime":"2026-04-08 00:52:55.716","FollowerInitialSyncStatus":true,"FollowerInfo":[],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"375.3 μs","CurrentTerm":3,"LastTerm":2,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-3-shard-inventory-config","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":0,"TxCohortCacheSize":0,"PeerVotingStates":"member-1-shard-inventory-config: true, member-3-shard-inventory-config: true","LastLogTerm":2,"StatRetrievalError":null,"CommitIndex":37,"SnapshotTerm":2,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-2-shard-inventory-config","LeadershipChangeCount":2,"InMemoryJournalDataSize":1908},"timestamp":1775609617,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:53:37.746005" elapsed="0.004336"/>
</kw>
<status status="PASS" start="2026-04-08T00:53:37.745567" elapsed="0.004877"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:37.745538" elapsed="0.004935"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:53:37.753473" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:53:37.750847" elapsed="0.002775"/>
</kw>
<status status="PASS" start="2026-04-08T00:53:37.750532" elapsed="0.003191"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:37.750515" elapsed="0.003236"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:53:37.754595" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:53:37.753919" elapsed="0.000704"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:37.755408" elapsed="0.000087"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:53:37.754732" elapsed="0.000879"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:53:37.757048" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:53:37.756235" elapsed="0.000857"/>
</kw>
<status status="PASS" start="2026-04-08T00:53:37.755637" elapsed="0.001586"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:37.754712" elapsed="0.002537"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:53:37.758022" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:53:37.757414" elapsed="0.000635"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:37.758908" elapsed="0.000085"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:53:37.758155" elapsed="0.000950"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:53:37.760491" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:53:37.759669" elapsed="0.000866"/>
</kw>
<status status="PASS" start="2026-04-08T00:53:37.759131" elapsed="0.001517"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:37.758136" elapsed="0.002537"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:53:37.760830" elapsed="0.000822"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:53:37.762530" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:53:37.761878" elapsed="0.000679"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:53:37.762758" elapsed="0.002756"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:53:37.744847" elapsed="0.020770"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:53:37.765803" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:53:37.765691" elapsed="0.000159"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:37.765671" elapsed="0.000204"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:53:37.784431" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-2-shard-inventory-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 177560...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:53:37.766092" elapsed="0.018370"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:53:37.784514" elapsed="0.000038"/>
</return>
<msg time="2026-04-08T00:53:37.784684" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-2-shard-inventory-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 177560...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:53:37.727858" elapsed="0.056853"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:53:37.784829" elapsed="0.000027"/>
</return>
<msg time="2026-04-08T00:53:37.784979" level="INFO">${data_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-2-shard-inventory-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 177560...</msg>
<var>${data_text}</var>
<arg>uri=${uri}</arg>
<arg>session=${session}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-08T00:53:37.727153" elapsed="0.057852"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:53:37.786102" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-2-shard-inventory-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1775609617, 'valu...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:53:37.785622" elapsed="0.000509"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-08T00:53:37.786472" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:53:37.786649" level="INFO">${data_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-2-shard-inventory-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1775609617, 'valu...</msg>
<var>${data_object}</var>
<arg>${data_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-08T00:53:37.785265" elapsed="0.001411"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:53:37.787032" level="INFO">${value} = {'AbortTransactionsCount': 0, 'CommitIndex': 37, 'CommittedTransactionsCount': 0, 'CurrentTerm': 3, 'FailedReadTransactionsCount': 0, 'FailedTransactionsCount': 0, 'FollowerInfo': [], 'FollowerInitial...</msg>
<var>${value}</var>
<arg>${data_object}</arg>
<arg>value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:53:37.786831" elapsed="0.000229"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:53:37.787428" level="INFO">${raft_property} = Follower</msg>
<var>${raft_property}</var>
<arg>${value}</arg>
<arg>${property}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:53:37.787230" elapsed="0.000223"/>
</kw>
<return>
<value>${raft_property}</value>
<status status="PASS" start="2026-04-08T00:53:37.787500" elapsed="0.000027"/>
</return>
<msg time="2026-04-08T00:53:37.787649" level="INFO">${raft_state} = Follower</msg>
<var>${raft_state}</var>
<arg>RaftState</arg>
<arg>${shard_name}</arg>
<arg>${shard_type}</arg>
<arg>${member_index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft property.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T00:53:37.493476" elapsed="0.294199"/>
</kw>
<return>
<value>${raft_state}</value>
<status status="PASS" start="2026-04-08T00:53:37.787731" elapsed="0.000026"/>
</return>
<msg time="2026-04-08T00:53:37.787882" level="INFO">${raft_state} = Follower</msg>
<var>${raft_state}</var>
<arg>shard_name=${shard_name}</arg>
<arg>shard_type=${ds_type}</arg>
<arg>member_index=${index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft status.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T00:53:37.492744" elapsed="0.295163"/>
</kw>
<if>
<branch type="IF" condition="'Follower' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${follower_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-08T00:53:37.788221" elapsed="0.000194"/>
</kw>
<status status="PASS" start="2026-04-08T00:53:37.787987" elapsed="0.000467"/>
</branch>
<branch type="ELSE IF" condition="'Leader' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${leader_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:37.788620" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:53:37.788478" elapsed="0.000196"/>
</branch>
<branch type="ELSE IF" condition="${validate}">
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized Raft state: ${raft_state}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:37.788837" elapsed="0.000019"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:53:37.788697" elapsed="0.000190"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:37.787970" elapsed="0.000939"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T00:53:37.492578" elapsed="0.296355"/>
</iter>
<iter>
<kw name="Get_Raft_State_Of_Shard_At_Member" owner="ClusterManagement">
<kw name="Get_Raft_Property_From_Shard_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:53:37.791690" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:53:37.791389" elapsed="0.000327"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:53:37.791761" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:53:37.791905" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:53:37.791031" elapsed="0.000899"/>
</kw>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Get_As_Json_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:53:37.869123" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:53:37.868734" elapsed="0.000420"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:53:37.869965" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:53:37.869678" elapsed="0.000376">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-08T00:53:37.870232" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:53:37.869344" elapsed="0.000913"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:53:37.870831" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:53:37.870423" elapsed="0.000435"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T00:53:37.871163" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-08T00:53:37.871366" level="INFO">${template} = /rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T00:53:37.871019" elapsed="0.000372"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:53:37.871795" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:53:37.871548" elapsed="0.000291"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:53:37.872856" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:53:37.872604" elapsed="0.000296"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-08T00:53:37.873362" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-08T00:53:37.873060" elapsed="0.000328"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:37.873721" elapsed="0.000022"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:37.873928" elapsed="0.000023"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:37.874098" elapsed="0.000021"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-08T00:53:37.873587" elapsed="0.000572"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-08T00:53:37.873441" elapsed="0.000762"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-08T00:53:37.874249" elapsed="0.000031"/>
</return>
<msg time="2026-04-08T00:53:37.874410" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-08T00:53:37.872280" elapsed="0.002156"/>
</kw>
<status status="PASS" start="2026-04-08T00:53:37.871959" elapsed="0.002508"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:37.874665" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:53:37.874491" elapsed="0.000231"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:37.871935" elapsed="0.002807"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:53:37.875338" level="INFO">${final_text} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:53:37.874882" elapsed="0.000483"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T00:53:37.875413" elapsed="0.000028"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="PASS" start="2026-04-08T00:53:37.868034" elapsed="0.007549"/>
</kw>
<msg time="2026-04-08T00:53:37.875655" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:53:37.854552" elapsed="0.021262"/>
</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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:37.889210" elapsed="0.000057"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:37.902925" elapsed="0.000057"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:37.916239" elapsed="0.000060"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:37.916626" elapsed="0.000084"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:37.916960" elapsed="0.000083"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:37.918859" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:53:37.918514" elapsed="0.000429"/>
</branch>
<status status="NOT RUN" start="2026-04-08T00:53:37.918465" elapsed="0.000535"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:37.919304" elapsed="0.000042"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:37.919638" elapsed="0.000036"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:37.919952" elapsed="0.000035"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-08T00:53:37.918296" elapsed="0.001741"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-08T00:53:37.917264" elapsed="0.002849"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:37.920484" elapsed="0.000088"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-08T00:53:37.920762" elapsed="0.000018"/>
</return>
<msg time="2026-04-08T00:53:37.920990" level="INFO">${uri} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-08T00:53:37.843082" elapsed="0.077941"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:53:37.923350" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:53:37.922941" elapsed="0.000487">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-08T00:53:37.923584" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:53:37.921970" elapsed="0.001655"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:37.925240" elapsed="0.000038"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:53:37.923827" elapsed="0.001504"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:53:37.926289" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:53:37.925688" elapsed="0.000650"/>
</kw>
<status status="PASS" start="2026-04-08T00:53:37.925371" elapsed="0.001019"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:37.923804" elapsed="0.002623"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:53:37.929411" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:53:37.926663" elapsed="0.002792"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-08T00:53:37.929605" elapsed="0.000031"/>
</return>
<msg time="2026-04-08T00:53:37.929844" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:53:37.921463" elapsed="0.008410"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:53:37.932133" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:53:37.931810" elapsed="0.000406">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-08T00:53:37.932432" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:53:37.930898" elapsed="0.001577"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-08T00:53:37.932955" elapsed="0.000053"/>
</return>
<status status="PASS" start="2026-04-08T00:53:37.932638" elapsed="0.000466"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:37.932617" elapsed="0.000528"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:37.933368" elapsed="0.000084"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:37.933708" elapsed="0.000083"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-08T00:53:37.933930" elapsed="0.000018"/>
</return>
<msg time="2026-04-08T00:53:37.950580" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:53:37.930383" elapsed="0.020227"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:53:37.953679" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:53:37.952688" elapsed="0.001137"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:53:37.954723" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:53:37.954068" elapsed="0.000800"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:53:37.974834" level="INFO">GET Request : url=http://10.30.171.110:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 path_url=/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0336bvzrfnrhc3cqywxyctca52.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:53:37.975326" level="INFO">GET Response : url=http://10.30.171.110:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Transfer-Encoding': 'chunked'} 
 body={"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","hidden-symmetric-keys","encrypted-private-keys","asymmetrically-encrypted-value-format","cms-encrypted-data-format","cleartext-private-keys","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["ssh-client-keepalives","client-ident-hostbased","client-ident-publickey","client-ident-password"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-ex... (set the log level to DEBUG or TRACE to see the full content) 
 </msg>
<msg time="2026-04-08T00:53:37.975698" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:53:37.958469" elapsed="0.017279"/>
</kw>
<status status="PASS" start="2026-04-08T00:53:37.955004" elapsed="0.020805"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:37.976961" elapsed="0.000040"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:53:37.975852" elapsed="0.001208"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:37.954984" elapsed="0.022113"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:53:37.982411" level="INFO">{"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","hidden-symmetric-keys","encrypted-private-keys","asymmetrically-encrypted-value-format","cms-encrypted-data-format","cleartext-private-keys","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["ssh-client-keepalives","client-ident-hostbased","client-ident-publickey","client-ident-password"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-experimenter-types?revision=2015-10-20","namespace":"urn:opendaylight:openflowplugin:experimenter:types","conformance-type":"import"},{"name":"ietf-ip_2018-02-22","revision":"2018-02-22","schema":"/rests/modules/ietf-ip?revision=2018-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-ip","conformance-type":"import","feature":["ipv6-privacy-autoconf","ipv4-non-contiguous-netmasks"]},{"name":"ietf-tcp-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-client","conformance-type":"import","feature":["local-binding-supported","tcp-client-keepalives"]},{"name":"node-config_2014-10-15","revision":"2014-10-15","schema":"/rests/modules/node-config?revision=2014-10-15","namespace":"urn:opendaylight:module:config","conformance-type":"import"},{"name":"ietf-restconf_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf","conformance-type":"import"},{"name":"ietf-datastores_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-datastores?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-datastores","conformance-type":"import"},{"name":"ietf-yang-patch_2017-02-22","revision":"2017-02-22","schema":"/rests/modules/ietf-yang-patch?revision=2017-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-patch","conformance-type":"import"},{"name":"sal-group_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-group?revision=2013-09-18","namespace":"urn:opendaylight:group:service","conformance-type":"import"},{"name":"odl-codegen-extensions_2024-06-27","revision":"2024-06-27","schema":"/rests/modules/odl-codegen-extensions?revision=2024-06-27","namespace":"urn:opendaylight:yang:extension:codegen","conformance-type":"import"},{"name":"sal-meter_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-meter?revision=2013-09-18","namespace":"urn:opendaylight:meter:service","conformance-type":"import"},{"name":"ietf-interfaces_2018-02-20","revision":"2018-02-20","schema":"/rests/modules/ietf-interfaces?revision=2018-02-20","namespace":"urn:ietf:params:xml:ns:yang:ietf-interfaces","conformance-type":"import","feature":["pre-provisioning","if-mib","arbitrary-names"]},{"name":"opendaylight-l2-types_2013-08-27","revision":"2013-08-27","schema":"/rests/modules/opendaylight-l2-types?revision=2013-08-27","namespace":"urn:opendaylight:l2:types","conformance-type":"import"},{"name":"opendaylight-flow-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-flow-types?revision=2013-10-26","namespace":"urn:opendaylight:flow:types","conformance-type":"import"},{"name":"lldp-speaker-config_2016-05-12","revision":"2016-05-12","schema":"/rests/modules/lldp-speaker-config?revision=2016-05-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker:config","conformance-type":"import"},{"name":"aaa-cert_2015-11-26","revision":"2015-11-26","schema":"/rests/modules/aaa-cert?revision=2015-11-26","namespace":"urn:opendaylight:yang:aaa:cert","conformance-type":"import"},{"name":"openflow-action_2015-02-03","revision":"2015-02-03","schema":"/rests/modules/openflow-action?revision=2015-02-03","namespace":"urn:opendaylight:openflow:common:action","conformance-type":"import"},{"name":"openflow-approved-extensions_2016-08-02","revision":"2016-08-02","schema":"/rests/modules/openflow-approved-extensions?revision=2016-08-02","namespace":"urn:opendaylight:openflow:approved:extensions","conformance-type":"import"},{"name":"nc-notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/nc-notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netmod:notification","conformance-type":"import"},{"name":"ietf-netconf-nmda_2019-01-07","revision":"2019-01-07","schema":"/rests/modules/ietf-netconf-nmda?revision=2019-01-07","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-nmda","conformance-type":"import","feature":["with-defaults","origin"]},{"name":"ietf-tcp-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-common","conformance-type":"import","feature":["keepalives-supported"]},{"name":"network-topology_2013-10-21","revision":"2013-10-21","schema":"/rests/modules/network-topology?revision=2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:network-topology","conformance-type":"import"},{"name":"aaa-encrypt-service-config_2024-02-02","revision":"2024-02-02","schema":"/rests/modules/aaa-encrypt-service-config?revision=2024-02-02","namespace":"config:aaa:authn:encrypt:service:config","conformance-type":"import"},{"name":"openflow-instruction_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-instruction?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:instruction","conformance-type":"import"},{"name":"ietf-tls-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-client","conformance-type":"import","feature":["client-ident-x509-cert","server-auth-x509-cert"]},{"name":"opendaylight-group-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-group-statistics?revision=2013-11-11","namespace":"urn:opendaylight:group:statistics","conformance-type":"import"},{"name":"cluster-admin_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/cluster-admin?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:cluster:admin","conformance-type":"import"},{"name":"opendaylight-flow-statistics_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-flow-statistics?revision=2013-08-19","namespace":"urn:opendaylight:flow:statistics","conformance-type":"import"},{"name":"opendaylight-table-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-table-types?revision=2013-10-26","namespace":"urn:opendaylight:table:types","conformance-type":"import"},{"name":"forwarding-rules-manager-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/forwarding-rules-manager-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:forwardingrules-manager:config","conformance-type":"import"},{"name":"odl-srm-types_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-types?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:types","conformance-type":"import"},{"name":"ietf-x509-cert-to-name_2014-12-10","revision":"2014-12-10","schema":"/rests/modules/ietf-x509-cert-to-name?revision=2014-12-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-x509-cert-to-name","conformance-type":"import"},{"name":"flow-node-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-node-inventory?revision=2013-08-19","namespace":"urn:opendaylight:flow:inventory","conformance-type":"import"},{"name":"flow-errors_2013-11-16","revision":"2013-11-16","schema":"/rests/modules/flow-errors?revision=2013-11-16","namespace":"urn:opendaylight:flow:errors","conformance-type":"import"},{"name":"ietf-netconf_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:netconf:base:1.0","conformance-type":"import","feature":["xpath","url","rollback-on-error","validate","startup","candidate","confirmed-commit","writable-running"]},{"name":"iana-ssh-public-key-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-public-key-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-public-key-algs","conformance-type":"import"},{"name":"aaa-cert-mdsal_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/aaa-cert-mdsal?revision=2016-03-21","namespace":"urn:opendaylight:yang:aaa:cert:mdsal","conformance-type":"import"},{"name":"odl-device-notification_2024-02-18","revision":"2024-02-18","schema":"/rests/modules/odl-device-notification?revision=2024-02-18","namespace":"urn:opendaylight:device:notification","conformance-type":"import"},{"name":"ietf-origin_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-origin?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-origin","conformance-type":"import"},{"name":"openflow-augments_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-augments?revision=2015-02-25","namespace":"urn:opendaylight:openflow:augments","conformance-type":"import"},{"name":"iana-ssh-encryption-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-encryption-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-encryption-algs","conformance-type":"import"},{"name":"ietf-truststore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-truststore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-truststore","conformance-type":"import","feature":["inline-definitions-supported"]},{"name":"distributed-datastore-provider_2025-01-30","revision":"2025-01-30","schema":"/rests/modules/distributed-datastore-provider?revision=2025-01-30","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:distributed-datastore-provider","conformance-type":"import"},{"name":"opendaylight-group-types_2013-10-18","revision":"2013-10-18","schema":"/rests/modules/opendaylight-group-types?revision=2013-10-18","namespace":"urn:opendaylight:group:types","conformance-type":"import"},{"name":"sal-remote-augment_2023-11-03","revision":"2023-11-03","schema":"/rests/modules/sal-remote-augment?revision=2023-11-03","namespace":"urn:sal:restconf:event:subscription","conformance-type":"import"},{"name":"opendaylight-ipv6-arbitrary-bitmask-fields_2016-02-24","revision":"2016-02-24","schema":"/rests/modules/opendaylight-ipv6-arbitrary-bitmask-fields?revision=2016-02-24","namespace":"urn:opendaylight:opendaylight-ipv6-arbitrary-bitmask-fields","conformance-type":"import"},{"name":"sal-flows-batch_2016-03-14","revision":"2016-03-14","schema":"/rests/modules/sal-flows-batch?revision=2016-03-14","namespace":"urn:opendaylight:flows:service","conformance-type":"import"},{"name":"ietf-tls-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-common","conformance-type":"import","feature":["tls12","hello-params","tls13"]},{"name":"openflow-types_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-types?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:types","conformance-type":"import"},{"name":"ietf-netconf-with-defaults_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf-with-defaults?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults","conformance-type":"import"},{"name":"odl-srm-ops_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-ops?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:ops","conformance-type":"import"},{"name":"odl-general-entity_2015-09-30","revision":"2015-09-30","schema":"/rests/modules/odl-general-entity?revision=2015-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:mdsal:core:general-entity","conformance-type":"import"},{"name":"iana-ssh-key-exchange-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-key-exchange-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-key-exchange-algs","conformance-type":"import"},{"name":"node-ssl-connection-error_2019-07-23","revision":"2019-07-23","schema":"/rests/modules/node-ssl-connection-error?revision=2019-07-23","namespace":"urn:opendaylight:node-ssl-connection-error:service","conformance-type":"import"},{"name":"openflow-protocol_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-protocol?revision=2013-07-31","namespace":"urn:opendaylight:openflow:protocol","conformance-type":"import"},{"name":"ietf-udp-server_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-server?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-server","conformance-type":"import"},{"name":"ietf-keystore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-keystore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-keystore","conformance-type":"import","feature":["asymmetric-keys","inline-definitions-supported"]},{"name":"aaa_2016-12-14","revision":"2016-12-14","schema":"/rests/modules/aaa?revision=2016-12-14","namespace":"urn:opendaylight:params:xml:ns:yang:aaa","conformance-type":"import"},{"name":"aaa-cert-rpc_2015-12-15","revision":"2015-12-15","schema":"/rests/modules/aaa-cert-rpc?revision=2015-12-15","namespace":"urn:opendaylight:yang:aaa:cert:rpc","conformance-type":"import"},{"name":"system-notifications_2013-09-27","revision":"2013-09-27","schema":"/rests/modules/system-notifications?revision=2013-09-27","namespace":"urn:opendaylight:openflow:system","conformance-type":"import"},{"name":"sal-flat-batch_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/sal-flat-batch?revision=2016-03-21","namespace":"urn:opendaylight:flat-batch:service","conformance-type":"import"},{"name":"notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netconf:notification:1.0","conformance-type":"import"},{"name":"sal-remote_2014-01-14","revision":"2014-01-14","schema":"/rests/modules/sal-remote?revision=2014-01-14","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:remote","conformance-type":"import"},{"name":"yang-ext_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/yang-ext?revision=2013-07-09","namespace":"urn:opendaylight:yang:extension:yang-ext","conformance-type":"import"},{"name":"opendaylight-multipart-types_2017-01-12","revision":"2017-01-12","schema":"/rests/modules/opendaylight-multipart-types?revision=2017-01-12","namespace":"urn:opendaylight:multipart:types","conformance-type":"import"},{"name":"opendaylight-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-inventory?revision=2013-08-19","namespace":"urn:opendaylight:inventory","conformance-type":"import"},{"name":"sal-queue_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-queue?revision=2015-03-05","namespace":"urn:opendaylight:queue:service","conformance-type":"import"},{"name":"sal-groups-batch_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/sal-groups-batch?revision=2016-03-15","namespace":"urn:opendaylight:groups:service","conformance-type":"import"},{"name":"arbitrator-reconcile_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/arbitrator-reconcile?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:arbitrator-reconcile:service","conformance-type":"import"},{"name":"ietf-yang-metadata_2016-08-05","revision":"2016-08-05","schema":"/rests/modules/ietf-yang-metadata?revision=2016-08-05","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-metadata","conformance-type":"import"},{"name":"opendaylight-arbitrary-bitmask-fields_2016-01-30","revision":"2016-01-30","schema":"/rests/modules/opendaylight-arbitrary-bitmask-fields?revision=2016-01-30","namespace":"urn:opendaylight:arbitrary:bitmask:fields","conformance-type":"import"},{"name":"ietf-udp-client_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-client?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-client","conformance-type":"import","feature":["local-binding"]},{"name":"opendaylight-meter-types_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/opendaylight-meter-types?revision=2013-09-18","namespace":"urn:opendaylight:meter:types","conformance-type":"import"},{"name":"opendaylight-action-types_2013-11-12","revision":"2013-11-12","schema":"/rests/modules/opendaylight-action-types?revision=2013-11-12","namespace":"urn:opendaylight:action:types","conformance-type":"import"},{"name":"sal-role_2015-07-27","revision":"2015-07-27","schema":"/rests/modules/sal-role?revision=2015-07-27","namespace":"urn:opendaylight:role:service","conformance-type":"import"},{"name":"openflow-provider-config_2016-05-10","revision":"2016-05-10","schema":"/rests/modules/openflow-provider-config?revision=2016-05-10","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:provider:config","conformance-type":"import"},{"name":"odl-serviceutils-upgrade_2018-07-02","revision":"2018-07-02","schema":"/rests/modules/odl-serviceutils-upgrade?revision=2018-07-02","namespace":"urn:opendaylight:serviceutils:upgrade","conformance-type":"import"},{"name":"opendaylight-match-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-match-types?revision=2013-10-26","namespace":"urn:opendaylight:model:match:types","conformance-type":"import"},{"name":"ietf-restconf-server_2024-08-14","revision":"2024-08-14","schema":"/rests/modules/ietf-restconf-server?revision=2024-08-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-server","conformance-type":"import","feature":["http-listen","https-listen"]},{"name":"reconciliation-result-state_2017-07-13","revision":"2017-07-13","schema":"/rests/modules/reconciliation-result-state?revision=2017-07-13","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:rf:state","conformance-type":"import"},{"name":"onf-extensions_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/onf-extensions?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf","conformance-type":"import"},{"name":"sal-table_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/sal-table?revision=2013-10-26","namespace":"urn:opendaylight:table:service","conformance-type":"import"},{"name":"iana-http-versions_2026-02-04","revision":"2026-02-04","schema":"/rests/modules/iana-http-versions?revision=2026-02-04","namespace":"urn:ietf:params:xml:ns:yang:iana-http-versions","conformance-type":"import"},{"name":"opendaylight-direct-statistics_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/opendaylight-direct-statistics?revision=2016-05-11","namespace":"urn:opendaylight:direct:statistics","conformance-type":"import"},{"name":"opendaylight-port-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-port-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:port","conformance-type":"import"},{"name":"sal-async-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/sal-async-config?revision=2017-06-19","namespace":"urn:opendaylight:async-config:service","conformance-type":"import"},{"name":"aaa-password-service-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-password-service-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:password:service:config","conformance-type":"import"},{"name":"ietf-yang-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-yang-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-types","conformance-type":"import"},{"name":"opendaylight-queue-statistics_2013-12-16","revision":"2013-12-16","schema":"/rests/modules/opendaylight-queue-statistics?revision=2013-12-16","namespace":"urn:opendaylight:queue:statistics","conformance-type":"import"},{"name":"sal-bundle_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/sal-bundle?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf:bundle:service","conformance-type":"import"},{"name":"ietf-restconf-subscribed-notifications_2019-11-17","revision":"2019-11-17","schema":"/rests/modules/ietf-restconf-subscribed-notifications?revision=2019-11-17","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-subscribed-notifications","conformance-type":"import"},{"name":"sal-meters-batch_2016-03-16","revision":"2016-03-16","schema":"/rests/modules/sal-meters-batch?revision=2016-03-16","namespace":"urn:opendaylight:meters:service","conformance-type":"import"},{"name":"odl-entity-owners","revision":"","schema":"/rests/modules/odl-entity-owners","namespace":"urn:opendaylight:params:xml:ns:yang:controller:entity-owners","conformance-type":"import"},{"name":"sal-experimenter-mp-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-mp-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-mp-message:service","conformance-type":"import"},{"name":"packet-processing_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/packet-processing?revision=2013-07-09","namespace":"urn:opendaylight:packet:service","conformance-type":"import"},{"name":"openflow-configuration_2014-06-30","revision":"2014-06-30","schema":"/rests/modules/openflow-configuration?revision=2014-06-30","namespace":"urn:opendaylight:openflow:config","conformance-type":"import"},{"name":"odl-srm-rpcs_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-rpcs?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:rpc","conformance-type":"import"},{"name":"ietf-netconf-acm_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-netconf-acm?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-acm","conformance-type":"import"},{"name":"iana-crypt-hash_2014-08-06","revision":"2014-08-06","schema":"/rests/modules/iana-crypt-hash?revision=2014-08-06","namespace":"urn:ietf:params:xml:ns:yang:iana-crypt-hash","conformance-type":"import","feature":["crypt-hash-sha-512","crypt-hash-sha-256","crypt-hash-md5"]},{"name":"openflow-extensible-match_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-extensible-match?revision=2015-02-25","namespace":"urn:opendaylight:openflow:oxm","conformance-type":"import"}],"module-set-id":"2"}}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:53:37.979687" elapsed="0.003118"/>
</kw>
<status status="PASS" start="2026-04-08T00:53:37.979367" elapsed="0.003510"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:37.979332" elapsed="0.003601"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:53:37.985709" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:53:37.983359" elapsed="0.002396"/>
</kw>
<status status="PASS" start="2026-04-08T00:53:37.983036" elapsed="0.002783"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:37.983004" elapsed="0.002867"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:53:37.986867" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:53:37.986289" elapsed="0.000629"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:37.987368" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:53:37.987034" elapsed="0.000418"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:53:37.988051" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:53:37.987744" elapsed="0.000333"/>
</kw>
<status status="PASS" start="2026-04-08T00:53:37.987503" elapsed="0.000637"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:37.987001" elapsed="0.001206"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:53:37.989099" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:53:37.988574" elapsed="0.000575"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:37.989685" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:53:37.989376" elapsed="0.000391"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:53:37.990357" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:53:37.990038" elapsed="0.000346"/>
</kw>
<status status="PASS" start="2026-04-08T00:53:37.989820" elapsed="0.000627"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:37.989342" elapsed="0.001248"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:53:37.990980" elapsed="0.000485"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:53:37.992396" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:53:37.991918" elapsed="0.000528"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:53:37.992808" elapsed="0.002345"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:53:37.977991" elapsed="0.017285"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:53:37.995704" elapsed="0.000045"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:53:37.995468" elapsed="0.000375"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:37.995448" elapsed="0.000439"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:53:38.006823" level="INFO">${text_normalized} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:53:37.996092" elapsed="0.010778"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:53:38.007022" elapsed="0.000038"/>
</return>
<msg time="2026-04-08T00:53:38.007294" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:53:37.950990" elapsed="0.056332"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:53:38.007387" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:53:38.007544" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="PASS" start="2026-04-08T00:53:37.800434" elapsed="0.207137"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Json_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:38.007933" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:53:38.007658" elapsed="0.000391"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:38.007640" elapsed="0.000435"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:53:38.008108" elapsed="0.000026"/>
</return>
<arg>session=${session}</arg>
<arg>folder=${RESTCONF_MODULES_DIR}</arg>
<arg>verify=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Add arguments sensible for JSON data, return Get_Templated response text.
Optionally, verification against JSON data (may be iterated) is called.
Only subset of JSON data is verified and returned if JMES path is specified in
file ${folder}/jmespath.expr.</doc>
<status status="PASS" start="2026-04-08T00:53:37.796127" elapsed="0.212153"/>
</kw>
<status status="PASS" start="2026-04-08T00:53:37.791998" elapsed="0.216327"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:37.791980" elapsed="0.216370"/>
</if>
<kw name="Resolve_Shard_Type_Class" owner="ClusterManagement">
<if>
<branch type="IF" condition="'${shard_type}' == 'config'">
<return>
<value>DistributedConfigDatastore</value>
<status status="PASS" start="2026-04-08T00:53:38.008958" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-08T00:53:38.008852" elapsed="0.000165"/>
</branch>
<branch type="ELSE IF" condition="'${shard_type}' == 'operational'">
<return>
<value>DistributedOperationalDatastore</value>
<status status="NOT RUN" start="2026-04-08T00:53:38.009078" elapsed="0.000012"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:53:38.009040" elapsed="0.000076"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:38.008834" elapsed="0.000304"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized shard type: ${shard_type}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:38.009303" elapsed="0.000022"/>
</kw>
<msg time="2026-04-08T00:53:38.009422" level="INFO">${type_class} = DistributedConfigDatastore</msg>
<var>${type_class}</var>
<arg>shard_type=${shard_type}</arg>
<doc>Simple lookup for class name corresponding to desired type.</doc>
<status status="PASS" start="2026-04-08T00:53:38.008582" elapsed="0.000866"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:53:38.010562" level="INFO">${cluster_index} = 3</msg>
<var>${cluster_index}</var>
<arg>${member_index}+${NODE_ROLE_INDEX_START}-1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:53:38.009612" elapsed="0.000978"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:53:38.011228" level="INFO">${uri} = jolokia/read/org.opendaylight.controller:Category=Shards,name=member-3-shard-inventory-config,type=DistributedConfigDatastore</msg>
<var>${uri}</var>
<arg>${JOLOKIA_READ_URI}:Category=Shards,name=member-${cluster_index}-shard-${shard_name}-${shard_type},type=${type_class}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:53:38.010746" elapsed="0.000510"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:53:38.016850" level="INFO">jolokia/read/org.opendaylight.controller:Category=Shards,name=member-3-shard-inventory-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:53:38.016574" elapsed="0.000323"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:53:38.017390" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:53:38.017049" elapsed="0.000385"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:53:38.029008" level="INFO">GET Request : url=http://10.30.171.110:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-3-shard-inventory-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-3-shard-inventory-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:53:38.029124" level="INFO">GET Response : url=http://10.30.171.110:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-3-shard-inventory-config,type=DistributedConfigDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Wed, 08 Apr 2026 00:53:38 GMT', 'Expires': 'Tue, 07 Apr 2026 23:53:38 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-3-shard-inventory-config,type=DistributedConfigDatastore","type":"read"},"value":{"ReadWriteTransactionCount":0,"SnapshotIndex":36,"InMemoryJournalLogSize":1,"ReplicatedToAllIndex":36,"Leader":"member-3-shard-inventory-config","LastIndex":37,"RaftState":"Leader","LastApplied":37,"LastCommittedTransactionTime":"1970-01-01 00:00:00.000","PeerAddresses":"member-1-shard-inventory-config: pekko:\/\/opendaylight-cluster-data@10.30.170.48:2550\/user\/shardmanager-config\/member-1-shard-inventory-config, member-2-shard-inventory-config: pekko:\/\/opendaylight-cluster-data@10.30.170.131:2550\/user\/shardmanager-config\/member-2-shard-inventory-config","LastLogIndex":37,"LastLeadershipChangeTime":"2026-04-08 00:52:55.697","FollowerInitialSyncStatus":true,"FollowerInfo":[{"timeSinceLastActivity":"00:00:00.201","active":true,"matchIndex":37,"voting":true,"id":"member-1-shard-inventory-config","nextIndex":38},{"timeSinceLastActivity":"00:00:00.202","active":true,"matchIndex":37,"voting":true,"id":"member-2-shard-inventory-config","nextIndex":38}],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"1.693 ms","CurrentTerm":3,"LastTerm":2,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-3-shard-inventory-config","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":0,"TxCohortCacheSize":0,"PeerVotingStates":"member-1-shard-inventory-config: true, member-2-shard-inventory-config: true","LastLogTerm":2,"StatRetrievalError":null,"CommitIndex":37,"SnapshotTerm":2,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-3-shard-inventory-config","LeadershipChangeCount":3,"InMemoryJournalDataSize":1908},"timestamp":1775609618,"status":200} 
 </msg>
<msg time="2026-04-08T00:53:38.029349" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:53:38.019434" elapsed="0.009944"/>
</kw>
<status status="PASS" start="2026-04-08T00:53:38.017503" elapsed="0.011919"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:38.029606" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:53:38.029449" elapsed="0.000219"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:38.017485" elapsed="0.012204"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:53:38.033954" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-3-shard-inventory-config,type=DistributedConfigDatastore","type":"read"},"value":{"ReadWriteTransactionCount":0,"SnapshotIndex":36,"InMemoryJournalLogSize":1,"ReplicatedToAllIndex":36,"Leader":"member-3-shard-inventory-config","LastIndex":37,"RaftState":"Leader","LastApplied":37,"LastCommittedTransactionTime":"1970-01-01 00:00:00.000","PeerAddresses":"member-1-shard-inventory-config: pekko:\/\/opendaylight-cluster-data@10.30.170.48:2550\/user\/shardmanager-config\/member-1-shard-inventory-config, member-2-shard-inventory-config: pekko:\/\/opendaylight-cluster-data@10.30.170.131:2550\/user\/shardmanager-config\/member-2-shard-inventory-config","LastLogIndex":37,"LastLeadershipChangeTime":"2026-04-08 00:52:55.697","FollowerInitialSyncStatus":true,"FollowerInfo":[{"timeSinceLastActivity":"00:00:00.201","active":true,"matchIndex":37,"voting":true,"id":"member-1-shard-inventory-config","nextIndex":38},{"timeSinceLastActivity":"00:00:00.202","active":true,"matchIndex":37,"voting":true,"id":"member-2-shard-inventory-config","nextIndex":38}],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"1.693 ms","CurrentTerm":3,"LastTerm":2,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-3-shard-inventory-config","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":0,"TxCohortCacheSize":0,"PeerVotingStates":"member-1-shard-inventory-config: true, member-2-shard-inventory-config: true","LastLogTerm":2,"StatRetrievalError":null,"CommitIndex":37,"SnapshotTerm":2,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-3-shard-inventory-config","LeadershipChangeCount":3,"InMemoryJournalDataSize":1908},"timestamp":1775609618,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:53:38.031071" elapsed="0.003043"/>
</kw>
<status status="PASS" start="2026-04-08T00:53:38.030755" elapsed="0.003500"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:38.030736" elapsed="0.003548"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:53:38.037254" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:53:38.034652" elapsed="0.002747"/>
</kw>
<status status="PASS" start="2026-04-08T00:53:38.034343" elapsed="0.003153"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:38.034326" elapsed="0.003198"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:53:38.038357" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:53:38.037693" elapsed="0.000691"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:38.039134" elapsed="0.000102"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:53:38.038491" elapsed="0.000858"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:53:38.040830" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:53:38.040006" elapsed="0.000866"/>
</kw>
<status status="PASS" start="2026-04-08T00:53:38.039377" elapsed="0.001607"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:38.038472" elapsed="0.002537"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:53:38.041762" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:53:38.041184" elapsed="0.000605"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:38.042663" elapsed="0.000086"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:53:38.041896" elapsed="0.000964"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:53:38.044312" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:53:38.043460" elapsed="0.000896"/>
</kw>
<status status="PASS" start="2026-04-08T00:53:38.042887" elapsed="0.001617"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:38.041876" elapsed="0.002655"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:53:38.044699" elapsed="0.001040"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:53:38.046653" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:53:38.045969" elapsed="0.000710"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:53:38.046882" elapsed="0.002672"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:53:38.030292" elapsed="0.019556"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:53:38.050046" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:53:38.049927" elapsed="0.000166"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:38.049907" elapsed="0.000208"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:53:38.069442" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-3-shard-inventory-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 177560...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:53:38.050541" elapsed="0.018947"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:53:38.069575" elapsed="0.000056"/>
</return>
<msg time="2026-04-08T00:53:38.069887" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-3-shard-inventory-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 177560...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:53:38.012308" elapsed="0.057606"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:53:38.069977" elapsed="0.000026"/>
</return>
<msg time="2026-04-08T00:53:38.070128" level="INFO">${data_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-3-shard-inventory-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 177560...</msg>
<var>${data_text}</var>
<arg>uri=${uri}</arg>
<arg>session=${session}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-08T00:53:38.011471" elapsed="0.058682"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:53:38.072131" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-3-shard-inventory-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1775609618, 'valu...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:53:38.070997" elapsed="0.001179"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-08T00:53:38.072228" elapsed="0.000041"/>
</return>
<msg time="2026-04-08T00:53:38.072416" level="INFO">${data_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-3-shard-inventory-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1775609618, 'valu...</msg>
<var>${data_object}</var>
<arg>${data_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-08T00:53:38.070554" elapsed="0.001888"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:53:38.072802" level="INFO">${value} = {'AbortTransactionsCount': 0, 'CommitIndex': 37, 'CommittedTransactionsCount': 0, 'CurrentTerm': 3, 'FailedReadTransactionsCount': 0, 'FailedTransactionsCount': 0, 'FollowerInfo': [{'active': True, 'i...</msg>
<var>${value}</var>
<arg>${data_object}</arg>
<arg>value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:53:38.072599" elapsed="0.000230"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:53:38.073199" level="INFO">${raft_property} = Leader</msg>
<var>${raft_property}</var>
<arg>${value}</arg>
<arg>${property}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:53:38.072982" elapsed="0.000245"/>
</kw>
<return>
<value>${raft_property}</value>
<status status="PASS" start="2026-04-08T00:53:38.073273" elapsed="0.000027"/>
</return>
<msg time="2026-04-08T00:53:38.073426" level="INFO">${raft_state} = Leader</msg>
<var>${raft_state}</var>
<arg>RaftState</arg>
<arg>${shard_name}</arg>
<arg>${shard_type}</arg>
<arg>${member_index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft property.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T00:53:37.790037" elapsed="0.283415"/>
</kw>
<return>
<value>${raft_state}</value>
<status status="PASS" start="2026-04-08T00:53:38.073511" elapsed="0.000026"/>
</return>
<msg time="2026-04-08T00:53:38.073660" level="INFO">${raft_state} = Leader</msg>
<var>${raft_state}</var>
<arg>shard_name=${shard_name}</arg>
<arg>shard_type=${ds_type}</arg>
<arg>member_index=${index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft status.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T00:53:37.789292" elapsed="0.284394"/>
</kw>
<if>
<branch type="IF" condition="'Follower' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${follower_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:38.074014" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:53:38.073783" elapsed="0.000288"/>
</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="PASS" start="2026-04-08T00:53:38.074319" elapsed="0.000209"/>
</kw>
<status status="PASS" start="2026-04-08T00:53:38.074095" elapsed="0.000471"/>
</branch>
<branch type="ELSE IF" condition="${validate}">
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized Raft state: ${raft_state}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:38.074733" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:53:38.074589" elapsed="0.000195"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:38.073761" elapsed="0.001046"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T00:53:37.789107" elapsed="0.285724"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-08T00:53:37.174288" elapsed="0.900581"/>
</for>
<return>
<value>${leader_list}</value>
<value>${follower_list}</value>
<status status="PASS" start="2026-04-08T00:53:38.074913" elapsed="0.000025"/>
</return>
<msg time="2026-04-08T00:53:38.075113" level="INFO">${leader_list} = [3]</msg>
<msg time="2026-04-08T00:53:38.075162" level="INFO">${follower_list} = [1, 2]</msg>
<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="PASS" start="2026-04-08T00:53:37.170136" elapsed="0.905409"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T00:53:38.076010" level="INFO">Length is 1.</msg>
<msg time="2026-04-08T00:53:38.076084" level="INFO">${leader_count} = 1</msg>
<var>${leader_count}</var>
<arg>${leader_list}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T00:53:38.075722" elapsed="0.000386"/>
</kw>
<if>
<branch type="IF" condition="${leader_count} &lt; 1">
<kw name="Fail" owner="BuiltIn">
<arg>No leader found.</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:38.076439" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:53:38.076194" elapsed="0.000298"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:38.076175" elapsed="0.000395"/>
</if>
<kw name="Length Should Be" owner="BuiltIn">
<msg time="2026-04-08T00:53:38.078767" level="INFO">Length is 1.</msg>
<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="PASS" start="2026-04-08T00:53:38.076711" elapsed="0.002103"/>
</kw>
<kw name="Get From List" owner="Collections">
<msg time="2026-04-08T00:53:38.079709" level="INFO">${leader} = 3</msg>
<var>${leader}</var>
<arg>${leader_list}</arg>
<arg>0</arg>
<doc>Returns the value specified with an ``index`` from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:53:38.078979" elapsed="0.000763"/>
</kw>
<return>
<value>${leader}</value>
<value>${follower_list}</value>
<status status="PASS" start="2026-04-08T00:53:38.079792" elapsed="0.000034"/>
</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="PASS" start="2026-04-08T00:53:37.167606" elapsed="0.912354"/>
</kw>
<msg time="2026-04-08T00:53:38.080070" level="INFO">${inv_conf_leader} = 3</msg>
<msg time="2026-04-08T00:53:38.080120" level="INFO">${inv_conf_followers_list} = [1, 2]</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="PASS" start="2026-04-08T00:53:37.166992" elapsed="0.913152"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:53:38.080714" level="INFO">config inventory Leader is 3 and followers are [1, 2]</msg>
<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="PASS" start="2026-04-08T00:53:38.080406" elapsed="0.000353"/>
</kw>
<return>
<value>${inv_conf_leader}</value>
<value>${inv_conf_followers_list}</value>
<status status="PASS" start="2026-04-08T00:53:38.080802" elapsed="0.000027"/>
</return>
<msg time="2026-04-08T00:53:38.081003" level="INFO">${inventory_leader} = 3</msg>
<msg time="2026-04-08T00:53:38.081050" level="INFO">${inventory_followers} = [1, 2]</msg>
<var>${inventory_leader}</var>
<var>${inventory_followers}</var>
<doc>Check Status for Inventory Config shard in OpenFlow application.</doc>
<status status="PASS" start="2026-04-08T00:53:37.164896" elapsed="0.916178"/>
</kw>
<kw name="Get From List" owner="Collections">
<msg time="2026-04-08T00:53:38.081462" level="INFO">${follower_node_1} = 1</msg>
<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="PASS" start="2026-04-08T00:53:38.081274" elapsed="0.000213"/>
</kw>
<kw name="Get From List" owner="Collections">
<msg time="2026-04-08T00:53:38.081839" level="INFO">${follower_node_2} = 2</msg>
<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="PASS" start="2026-04-08T00:53:38.081660" elapsed="0.000205"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-08T00:53:38.082486" level="INFO">${follower_node_1} = 1</msg>
<arg>${follower_node_1}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-08T00:53:38.082055" elapsed="0.000474"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-08T00:53:38.083048" level="INFO">${follower_node_2} = 2</msg>
<arg>${follower_node_2}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-08T00:53:38.082706" elapsed="0.000384"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-08T00:53:38.083587" level="INFO">${inventory_leader} = 3</msg>
<arg>${inventory_leader}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-08T00:53:38.083288" elapsed="0.000338"/>
</kw>
<doc>Find new Followers and Leader in the inventory config shard After Leader Restart.</doc>
<status status="PASS" start="2026-04-08T00:53:36.147218" elapsed="1.936525"/>
</test>
<test id="s1-s3-t8" name="Start Mininet Connect To Old Leader" line="71">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-08T00:53:38.093048" elapsed="0.000341"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-08T00:53:38.092662" elapsed="0.000800"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:53:38.094679" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:53:38.094508" elapsed="0.000227"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:38.094478" elapsed="0.000282"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:53:38.099569" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:53:38.099456" elapsed="0.000158"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:38.099437" elapsed="0.000199"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:53:38.100763" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:53:38.100305" elapsed="0.000488"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:53:38.101288" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:53:38.100958" elapsed="0.000356"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:53:38.101359" elapsed="0.000043"/>
</return>
<msg time="2026-04-08T00:53:38.101529" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:53:38.099873" elapsed="0.001682"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:53:38.107087" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:53:38.106975" elapsed="0.000158"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:38.106954" elapsed="0.000344"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:53:38.108648" elapsed="0.000019"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:53:38.108476" elapsed="0.000231"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:38.108451" elapsed="0.000285"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:53:38.109343" level="INFO">${karaf_connection_index} = 157</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:53:38.108934" elapsed="0.000437"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:53:38.109793" level="INFO">${current_connection_index} = None</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:53:38.109536" elapsed="0.000285"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T00:53:38.166998" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T00:53:38.110355" elapsed="0.056863"/>
</kw>
<msg time="2026-04-08T00:53:38.167467" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T00:53:38.167515" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:53:38.109986" elapsed="0.057565"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T00:53:38.263903" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "a "d "e "r "[C "F "o "l "l "o "w "e "r "[C "F "a "i "l "o "v "e "r ". "S "t "a "r "t "[C "M "i "n "i "n "e "t "[C "C "o "n "[78Cn "[A[78Ce
 "c "t "[C "T "o "[C "O "l "d "[C "L "e "a "d "e "r "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T00:53:38.168308" elapsed="0.095900"/>
</kw>
<msg time="2026-04-08T00:53:38.264472" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T00:53:38.264523" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:53:38.167800" elapsed="0.096759"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:38.265521" elapsed="0.000029"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:53:38.264696" elapsed="0.000890"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:38.264652" elapsed="0.000961"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:53:38.266250" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "a "d "e "r "[C "F "o "l "l "o "w "e "r "[C "F "a "i "l "o "v "e "r ". "S "t "a "r "t "[C "M "i "n "i "n "e "t "[C "C "o "n "[78Cn "[A[78Ce
 "c "t "[C "T "o "[C "O "l "d "[C "L "e "a "d "e "r "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:53:38.265773" elapsed="0.000566"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:38.266635" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:53:38.266409" elapsed="0.000281"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:38.266390" elapsed="0.000323"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T00:53:38.266752" elapsed="0.000046"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:53:38.268511" elapsed="0.000970"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:53:38.269833" elapsed="0.000680"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:53:38.270814" elapsed="0.000459"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:53:38.267760" elapsed="0.003629"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T00:53:38.267113" elapsed="0.004347"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T00:53:38.108131" elapsed="0.163434"/>
</kw>
<msg time="2026-04-08T00:53:38.271670" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:53:38.271716" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:53:38.107474" elapsed="0.164286"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T00:53:38.272024" elapsed="0.000030"/>
</return>
<status status="PASS" start="2026-04-08T00:53:38.271881" elapsed="0.000208"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:38.271852" elapsed="0.000262"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:38.272656" elapsed="0.000027"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:38.273004" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T00:53:38.273077" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T00:53:38.106630" elapsed="0.166594"/>
</kw>
<msg time="2026-04-08T00:53:38.273327" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:53:38.273372" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:53:38.101975" elapsed="0.171434"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:38.273744" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:53:38.273488" elapsed="0.000309"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:38.273470" elapsed="0.000349"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T00:53:38.101826" elapsed="0.172017"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:53:38.279831" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:53:38.279721" elapsed="0.000156"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:38.279702" elapsed="0.000197"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:53:38.281042" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:53:38.280934" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:38.280916" elapsed="0.000194"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:53:38.281614" level="INFO">${karaf_connection_index} = 84</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:53:38.281298" elapsed="0.000343"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:53:38.282051" level="INFO">${current_connection_index} = None</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:53:38.281799" elapsed="0.000280"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T00:53:38.323851" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T00:53:38.282679" elapsed="0.041288"/>
</kw>
<msg time="2026-04-08T00:53:38.324147" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T00:53:38.324225" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:53:38.282268" elapsed="0.041993"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T00:53:38.394079" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "a "d "e "r "[C "F "o "l "l "o "w "e "r "[C "F "a "i "l "o "v "e "r ". "S "t "a "r "t "[C "M "i "n "i "n "e "t "[C "C "o "n "[78Cn "[A[78Ce
 "c "t "[C "T "o "[C "O "l "d "[C "L "e "a "d "e "r "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T00:53:38.324813" elapsed="0.069560"/>
</kw>
<msg time="2026-04-08T00:53:38.394617" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T00:53:38.394665" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:53:38.324449" elapsed="0.070252"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:38.395252" elapsed="0.000028"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:53:38.394830" elapsed="0.000486"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:38.394789" elapsed="0.000555"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:53:38.395900" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "a "d "e "r "[C "F "o "l "l "o "w "e "r "[C "F "a "i "l "o "v "e "r ". "S "t "a "r "t "[C "M "i "n "i "n "e "t "[C "C "o "n "[78Cn "[A[78Ce
 "c "t "[C "T "o "[C "O "l "d "[C "L "e "a "d "e "r "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:53:38.395492" elapsed="0.000494"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:38.396294" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:53:38.396054" elapsed="0.000399"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:38.396035" elapsed="0.000443"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T00:53:38.396515" elapsed="0.000044"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:53:38.398382" elapsed="0.001018"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:53:38.399746" elapsed="0.000680"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:53:38.400802" elapsed="0.000494"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:53:38.397635" elapsed="0.003779"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T00:53:38.396904" elapsed="0.004585"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T00:53:38.280632" elapsed="0.120962"/>
</kw>
<msg time="2026-04-08T00:53:38.401697" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:53:38.401743" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:53:38.280051" elapsed="0.121730"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T00:53:38.401980" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-08T00:53:38.401868" elapsed="0.000173"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:38.401846" elapsed="0.000219"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 2,
close the previous connection. In any case create a new connection
to karaf console for 2, set correct prompt set and login to karaf console.
Store connection index for 2 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:38.402504" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:38.402849" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T00:53:38.402922" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T00:53:38.279366" elapsed="0.123711"/>
</kw>
<msg time="2026-04-08T00:53:38.403212" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:53:38.403261" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:53:38.274425" elapsed="0.128873"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:38.403638" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:53:38.403379" elapsed="0.000314"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:38.403361" elapsed="0.000355"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T00:53:38.274230" elapsed="0.129510"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:53:38.411291" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:53:38.411046" elapsed="0.000293"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:38.411026" elapsed="0.000336"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:53:38.412585" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:53:38.412475" elapsed="0.000157"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:38.412456" elapsed="0.000199"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:53:38.413127" level="INFO">${karaf_connection_index} = 86</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:53:38.412801" elapsed="0.000354"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:53:38.413571" level="INFO">${current_connection_index} = None</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:53:38.413340" elapsed="0.000258"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T00:53:38.452598" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T00:53:38.414098" elapsed="0.038855"/>
</kw>
<msg time="2026-04-08T00:53:38.453353" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T00:53:38.453421" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:53:38.413760" elapsed="0.039712"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T00:53:38.519084" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "a "d "e "r "[C "F "o "l "l "o "w "e "r "[C "F "a "i "l "o "v "e "r ". "S "t "a "r "t "[C "M "i "n "i "n "e "t "[C "C "o "n "[78Cn "[A[78Ce
 "c "t "[C "T "o "[C "O "l "d "[C "L "e "a "d "e "r "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T00:53:38.454764" elapsed="0.064523"/>
</kw>
<msg time="2026-04-08T00:53:38.519492" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T00:53:38.519541" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:53:38.454034" elapsed="0.065544"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:38.520058" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:53:38.519706" elapsed="0.000411"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:38.519665" elapsed="0.000485"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:53:38.520687" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "a "d "e "r "[C "F "o "l "l "o "w "e "r "[C "F "a "i "l "o "v "e "r ". "S "t "a "r "t "[C "M "i "n "i "n "e "t "[C "C "o "n "[78Cn "[A[78Ce
 "c "t "[C "T "o "[C "O "l "d "[C "L "e "a "d "e "r "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:53:38.520336" elapsed="0.000435"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:38.521062" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:53:38.520841" elapsed="0.000276"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:38.520822" elapsed="0.000318"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T00:53:38.521198" elapsed="0.000065"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:53:38.522967" elapsed="0.001025"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:53:38.524396" elapsed="0.000791"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:53:38.525564" elapsed="0.000534"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:53:38.522221" elapsed="0.004040"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T00:53:38.521594" elapsed="0.004754"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T00:53:38.412141" elapsed="0.114336"/>
</kw>
<msg time="2026-04-08T00:53:38.526594" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:53:38.526641" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:53:38.411544" elapsed="0.115132"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T00:53:38.526869" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-08T00:53:38.526759" elapsed="0.000169"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:38.526739" elapsed="0.000213"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 3,
close the previous connection. In any case create a new connection
to karaf console for 3, set correct prompt set and login to karaf console.
Store connection index for 3 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:38.527510" elapsed="0.000028"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:38.527863" elapsed="0.000026"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T00:53:38.527936" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T00:53:38.410683" elapsed="0.117393"/>
</kw>
<msg time="2026-04-08T00:53:38.528216" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:53:38.528264" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:53:38.404021" elapsed="0.124281"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:38.528638" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:53:38.528383" elapsed="0.000308"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:38.528365" elapsed="0.000399"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T00:53:38.403878" elapsed="0.124916"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-08T00:53:38.101619" elapsed="0.427214"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-08T00:53:38.099067" elapsed="0.429832"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-08T00:53:38.094151" elapsed="0.434809"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:53:38.093624" elapsed="0.435385"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-08T00:53:38.086853" elapsed="0.442211"/>
</kw>
<kw name="Start Mininet Single Controller" owner="MininetKeywords">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:53:38.532583" level="INFO">Clear any existing mininet</msg>
<arg>Clear any existing mininet</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:53:38.532156" elapsed="0.000473"/>
</kw>
<kw name="Clean Mininet System" owner="Utils">
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:38.535251" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:53:38.534963" elapsed="0.000347"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:38.534943" elapsed="0.000391"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:53:38.535661" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T00:53:38.535482" elapsed="0.000324"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:53:38.536393" level="INFO">Attempting to execute command "sudo mn -c" on remote system "10.30.170.192" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:53:38.535960" elapsed="0.000480"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:53:38.536965" level="INFO">${conn_id} = 165</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:53:38.536596" elapsed="0.000395"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T00:53:38.538057" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T00:53:38.538152" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T00:53:38.537693" elapsed="0.000510"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:53:38.538410" elapsed="0.000467"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T00:53:38.540007" level="INFO">Logging into '10.30.170.192:22' as 'jenkins'.</msg>
<msg time="2026-04-08T00:53:39.414025" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 00:53:38 UTC 2026

  System load:  0.1                Processes:             108
  Usage of /:   19.5% of 38.58GB   Users logged in:       0
  Memory usage: 5%                 IPv4 address for ens3: 10.30.170.192
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 00:52:52 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-1-mininet-ovs-217-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T00:53:38.539613" elapsed="0.874668"/>
</kw>
<msg time="2026-04-08T00:53:39.414383" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:53:38.539096" elapsed="0.875401"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T00:53:38.537224" elapsed="0.877416"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T00:53:39.415260" level="INFO">Executing command 'sudo mn -c'.</msg>
<msg time="2026-04-08T00:53:40.560321" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-08T00:53:40.560780" level="INFO">${stdout} = </msg>
<msg time="2026-04-08T00:53:40.560882" level="INFO">${stderr} = *** Removing excess controllers/ofprotocols/ofdatapaths/pings/noxes
killall controller ofprotocol ofdatapath ping nox_corelt-nox_core ovs-openflowd ovs-controllerovs-testcontroller udpbwtest mnexec iv...</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T00:53:39.414928" elapsed="1.146012"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:53:40.561544" elapsed="0.000918"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:53:40.563659" level="INFO">*** Removing excess controllers/ofprotocols/ofdatapaths/pings/noxes
killall controller ofprotocol ofdatapath ping nox_corelt-nox_core ovs-openflowd ovs-controllerovs-testcontroller udpbwtest mnexec ivs ryu-manager 2&gt; /dev/null
killall -9 controller ofprotocol ofdatapath ping nox_corelt-nox_core ovs-openflowd ovs-controllerovs-testcontroller udpbwtest mnexec ivs ryu-manager 2&gt; /dev/null
pkill -9 -f "sudo mnexec"
*** Removing junk from /tmp
rm -f /tmp/vconn* /tmp/vlogs* /tmp/*.out /tmp/*.log
*** Removing old X11 tunnels
*** Removing excess kernel datapaths
ps ax | egrep -o 'dp[0-9]+' | sed 's/dp/nl:/'
***  Removing OVS datapaths
ovs-vsctl --timeout=1 list-br
ovs-vsctl --timeout=1 list-br
*** Removing all links of the pattern foo-ethX
ip link show | egrep -o '([-_.[:alnum:]]+-eth[[:digit:]]+)'
ip link show
*** Killing stale mininet node processes
pkill -9 -f mininet:
*** Shutting down stale tunnels
pkill -9 -f Tunnel=Ethernet
pkill -9 -f .ssh/mn
rm -f ~/.ssh/mn/*
*** Cleanup complete.</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:53:40.562908" elapsed="0.000873"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:53:40.564344" elapsed="0.000036"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:53:40.563977" elapsed="0.000476"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:40.563922" elapsed="0.000580"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T00:53:40.564853" elapsed="0.000074"/>
</return>
<status status="PASS" start="2026-04-08T00:53:40.564618" elapsed="0.000380"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:40.564585" elapsed="0.000466"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:53:40.565128" elapsed="0.000062"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:53:40.569583" elapsed="0.000345"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:53:40.570095" elapsed="0.000187"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:53:40.570429" elapsed="0.000098"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:53:40.565896" elapsed="0.004686"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T00:53:38.534238" elapsed="2.036437"/>
</kw>
<msg time="2026-04-08T00:53:40.570735" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:53:38.533679" elapsed="2.037113"/>
</kw>
<arg>${system}</arg>
<arg>sudo mn -c</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-08T00:53:38.533195" elapsed="2.037684"/>
</kw>
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:40.572988" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:53:40.572717" elapsed="0.000328"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:40.572698" elapsed="0.000370"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:53:40.573382" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T00:53:40.573240" elapsed="0.000277"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:53:40.574045" level="INFO">Attempting to execute command "sudo ps -elf | egrep 'usr/local/bin/mn' | egrep python | awk '{print "sudo kill -9",$4}' | sh" on remote system "10.30.170.192" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:53:40.573668" elapsed="0.000423"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:53:40.574636" level="INFO">${conn_id} = 167</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:53:40.574265" elapsed="0.000396"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T00:53:40.575608" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T00:53:40.575684" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T00:53:40.575320" elapsed="0.000387"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:53:40.575862" elapsed="0.000337"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T00:53:40.577042" level="INFO">Logging into '10.30.170.192:22' as 'jenkins'.</msg>
<msg time="2026-04-08T00:53:40.928045" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 00:53:38 UTC 2026

  System load:  0.1                Processes:             108
  Usage of /:   19.5% of 38.58GB   Users logged in:       0
  Memory usage: 5%                 IPv4 address for ens3: 10.30.170.192
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 00:53:39 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-1-mininet-ovs-217-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T00:53:40.576719" elapsed="0.351544"/>
</kw>
<msg time="2026-04-08T00:53:40.928363" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:53:40.576366" elapsed="0.352104"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T00:53:40.574876" elapsed="0.353726"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T00:53:40.929210" level="INFO">Executing command 'sudo ps -elf | egrep 'usr/local/bin/mn' | egrep python | awk '{print "sudo kill -9",$4}' | sh'.</msg>
<msg time="2026-04-08T00:53:40.962054" level="INFO">Command exited with return code -1.</msg>
<msg time="2026-04-08T00:53:40.962344" level="INFO">${stdout} = </msg>
<msg time="2026-04-08T00:53:40.962443" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T00:53:40.928888" elapsed="0.033607"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:53:40.962865" elapsed="0.000540"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:53:40.964546" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:53:40.963855" elapsed="0.000785"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:53:40.965148" elapsed="0.000088"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:53:40.964824" elapsed="0.000489"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:40.964769" elapsed="0.000595"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T00:53:40.965787" elapsed="0.000062"/>
</return>
<status status="PASS" start="2026-04-08T00:53:40.965484" elapsed="0.000449"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:40.965449" elapsed="0.000542"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:53:40.966048" elapsed="0.000019"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:53:40.970058" elapsed="0.000482"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:53:40.970773" elapsed="0.000227"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:53:40.971231" elapsed="0.000139"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:53:40.966568" elapsed="0.004874"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T00:53:40.572191" elapsed="0.399378"/>
</kw>
<msg time="2026-04-08T00:53:40.971644" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:53:40.571598" elapsed="0.400117"/>
</kw>
<arg>${system}</arg>
<arg>sudo ps -elf | egrep 'usr/local/bin/mn' | egrep python | awk '{print "sudo kill -9",$4}' | sh</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-08T00:53:40.571081" elapsed="0.400748"/>
</kw>
<arg>${mininet}</arg>
<status status="PASS" start="2026-04-08T00:53:38.532830" elapsed="2.439080"/>
</kw>
<kw name="Open_Connection_To_Tools_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:53:40.977434" level="INFO">${tools_connection} = 169</msg>
<var>${tools_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:53:40.977037" elapsed="0.000424"/>
</kw>
<kw name="Flexible_Mininet_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T00:53:40.979305" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T00:53:40.979382" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T00:53:40.978993" elapsed="0.000413"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:53:40.979562" elapsed="0.000316"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T00:53:40.980732" level="INFO">Logging into '10.30.170.192:22' as 'jenkins'.</msg>
<msg time="2026-04-08T00:53:41.327017" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 00:53:38 UTC 2026

  System load:  0.1                Processes:             108
  Usage of /:   19.5% of 38.58GB   Users logged in:       0
  Memory usage: 5%                 IPv4 address for ens3: 10.30.170.192
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 00:53:40 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-1-mininet-ovs-217-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T00:53:40.980415" elapsed="0.346827"/>
</kw>
<msg time="2026-04-08T00:53:41.327344" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:53:40.980045" elapsed="0.347406"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T00:53:40.978476" elapsed="0.349113"/>
</kw>
<msg time="2026-04-08T00:53:41.327683" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:53:40.978067" elapsed="0.349675"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-08T00:53:40.977682" elapsed="0.350148"/>
</kw>
<return>
<value>${tools_connection}</value>
<status status="PASS" start="2026-04-08T00:53:41.327890" elapsed="0.000534"/>
</return>
<msg time="2026-04-08T00:53:41.328618" level="INFO">${mininet_conn_id} = 169</msg>
<var>${mininet_conn_id}</var>
<arg>ip_address=${mininet}</arg>
<arg>timeout=${timeout}</arg>
<doc>Open a connection to the tools system at ${ip_address} and return its identifier.</doc>
<status status="PASS" start="2026-04-08T00:53:40.976542" elapsed="0.352103"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-08T00:53:41.329478" level="INFO">${mininet_conn_id} = 169</msg>
<arg>${mininet_conn_id}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-08T00:53:41.328981" elapsed="0.000540"/>
</kw>
<if>
<branch type="IF" condition="'${custom}' != '${EMPTY}'">
<kw name="Put File" owner="SSHLibrary">
<arg>${custom}</arg>
<doc>Uploads file(s) from the local machine to the remote machine.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:41.331764" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:53:41.329605" elapsed="0.002215"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:41.329581" elapsed="0.002264"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:53:41.332318" level="INFO">Start mininet --topo tree,1 to 10.30.170.48</msg>
<arg>Start mininet ${options} to ${controller}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:53:41.332003" elapsed="0.000360"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T00:53:41.334869" level="INFO">sudo mn --controller 'remote,ip=10.30.170.48,port=6633' --topo tree,1 --switch ovsk,protocols=OpenFlow13</msg>
<arg>sudo mn --controller 'remote,ip=${controller},port=${ofport}' ${options} --switch ovsk,protocols=OpenFlow${ofversion}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T00:53:41.332533" elapsed="0.002393"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-08T00:53:41.535609" level="INFO">[?2004l*** Creating network
*** Adding controller
*** Adding hosts:
h1 h2 
*** Adding switches:
s1 
*** Adding links:
(s1, h1) (s1, h2) 
*** Configuring hosts
h1 h2 
*** Starting controller
c0 
*** Starting 1 switches
s1 ...
*** Starting CLI:
mininet&gt;</msg>
<arg>mininet&gt;</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-08T00:53:41.335085" elapsed="0.200758"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:53:41.536714" level="INFO">Check OVS configuratiom</msg>
<arg>Check OVS configuratiom</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:53:41.536286" elapsed="0.000475"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T00:53:41.539419" level="INFO">sh ovs-vsctl show</msg>
<arg>sh ovs-vsctl show</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T00:53:41.536981" elapsed="0.002495"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-08T00:53:41.547797" level="INFO">9a5df812-eb49-4477-a37e-2d464c02791d
    Bridge s1
        Controller "tcp:10.30.170.48:6633"
        Controller "ptcp:6654"
        fail_mode: secure
        Port s1-eth1
            Interface s1-eth1
        Port s1
            Interface s1
                type: internal
        Port s1-eth2
            Interface s1-eth2
    ovs_version: "2.17.11"
mininet&gt;</msg>
<arg>mininet&gt;</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-08T00:53:41.539633" elapsed="0.008225"/>
</kw>
<return>
<value>${mininet_conn_id}</value>
<status status="PASS" start="2026-04-08T00:53:41.547911" elapsed="0.000055"/>
</return>
<msg time="2026-04-08T00:53:41.548186" level="INFO">${mininet_conn_id} = 169</msg>
<var>${mininet_conn_id}</var>
<arg>${TOOLS_SYSTEM_IP}</arg>
<arg>${ODL_SYSTEM_${inventory_leader_old}_IP}</arg>
<doc>Start Mininet with custom topology and connect to controller.</doc>
<status status="PASS" start="2026-04-08T00:53:38.529404" elapsed="3.018811"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-08T00:53:41.548774" level="INFO">${mininet_conn_id} = 169</msg>
<arg>${mininet_conn_id}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-08T00:53:41.548429" elapsed="0.000387"/>
</kw>
<doc>Start mininet with connection to cluster old leader.</doc>
<status status="PASS" start="2026-04-08T00:53:38.085347" elapsed="3.463607"/>
</test>
<test id="s1-s3-t9" name="Verify Flows In Switch After Leader Restart" line="78">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-08T00:53:41.552346" elapsed="0.000206"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-08T00:53:41.552059" elapsed="0.000547"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:53:41.554029" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:53:41.553753" elapsed="0.000324"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:41.553732" elapsed="0.000368"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:53:41.558790" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:53:41.558681" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:41.558663" elapsed="0.000193"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:53:41.559870" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:53:41.559480" elapsed="0.000417"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:53:41.560389" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:53:41.560061" elapsed="0.000356"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:53:41.560461" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:53:41.560614" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:53:41.559083" elapsed="0.001556"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:53:41.566113" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:53:41.565999" elapsed="0.000176"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:41.565977" elapsed="0.000222"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:53:41.567445" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:53:41.567337" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:41.567319" elapsed="0.000193"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:53:41.567986" level="INFO">${karaf_connection_index} = 157</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:53:41.567658" elapsed="0.000355"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:53:41.568462" level="INFO">${current_connection_index} = 169</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:53:41.568215" elapsed="0.000273"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T00:53:41.634469" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T00:53:41.568979" elapsed="0.065820"/>
</kw>
<msg time="2026-04-08T00:53:41.635112" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T00:53:41.635190" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:53:41.568647" elapsed="0.066582"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T00:53:41.755981" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "a "d "e "r "[C "F "o "l "l "o "w "e "r "[C "F "a "i "l "o "v "e "r ". "V "e "r "i "f "y "[C "F "l "o "w "s "[C "I "n "[C "S "[78Cw "[A[78Ci
 "t "c "h "[C "A "f "t "e "r "[C "L "e "a "d "e "r "[C "R "e "s "t "a "r "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T00:53:41.636183" elapsed="0.120077"/>
</kw>
<msg time="2026-04-08T00:53:41.756500" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T00:53:41.756549" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:53:41.635580" elapsed="0.121005"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:41.757110" elapsed="0.000027"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:53:41.756723" elapsed="0.000474"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:41.756679" elapsed="0.000551"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:53:41.757823" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "a "d "e "r "[C "F "o "l "l "o "w "e "r "[C "F "a "i "l "o "v "e "r ". "V "e "r "i "f "y "[C "F "l "o "w "s "[C "I "n "[C "S "[78Cw "[A[78Ci
 "t "c "h "[C "A "f "t "e "r "[C "L "e "a "d "e "r "[C "R "e "s "t "a "r "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:53:41.757384" elapsed="0.000530"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:41.758235" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:53:41.757986" elapsed="0.000305"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:41.757968" elapsed="0.000458"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T00:53:41.758469" elapsed="0.000049"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:53:41.761480" elapsed="0.000162"/>
</kw>
<msg time="2026-04-08T00:53:41.761736" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:53:41.760267" elapsed="0.001631"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:41.762259" elapsed="0.000094"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:41.762640" elapsed="0.000095"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:53:41.759522" elapsed="0.003340"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T00:53:41.758840" elapsed="0.004092"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T00:53:41.567009" elapsed="0.196023"/>
</kw>
<msg time="2026-04-08T00:53:41.763132" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:53:41.763455" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:53:41.566354" elapsed="0.197144"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T00:53:41.763711" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-08T00:53:41.763601" elapsed="0.000169"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:41.763581" elapsed="0.000212"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:41.764233" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:41.764576" elapsed="0.000023"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T00:53:41.764646" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T00:53:41.565653" elapsed="0.199103"/>
</kw>
<msg time="2026-04-08T00:53:41.764858" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:53:41.764903" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:53:41.561052" elapsed="0.203887"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:41.765298" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:53:41.765017" elapsed="0.000335"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:41.765000" elapsed="0.000375"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T00:53:41.560883" elapsed="0.204516"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:53:41.771062" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:53:41.770954" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:41.770932" elapsed="0.000197"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:53:41.772450" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:53:41.772342" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:41.772323" elapsed="0.000194"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:53:41.772980" level="INFO">${karaf_connection_index} = 84</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:53:41.772660" elapsed="0.000347"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:53:41.773432" level="INFO">${current_connection_index} = 169</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:53:41.773184" elapsed="0.000520"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T00:53:41.807323" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T00:53:41.774256" elapsed="0.033231"/>
</kw>
<msg time="2026-04-08T00:53:41.807739" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T00:53:41.807805" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:53:41.773879" elapsed="0.034071"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T00:53:41.885246" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "a "d "e "r "[C "F "o "l "l "o "w "e "r "[C "F "a "i "l "o "v "e "r ". "V "e "r "i "f "y "[C "F "l "o "w "s "[C "I "n "[C "S "[78Cw "[A[78Ci
 "t "c "h "[C "A "f "t "e "r "[C "L "e "a "d "e "r "[C "R "e "s "t "a "r "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T00:53:41.808744" elapsed="0.076680"/>
</kw>
<msg time="2026-04-08T00:53:41.885620" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T00:53:41.885667" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:53:41.808244" elapsed="0.077505"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:41.886215" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:53:41.885869" elapsed="0.000405"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:41.885833" elapsed="0.000469"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:53:41.886809" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "a "d "e "r "[C "F "o "l "l "o "w "e "r "[C "F "a "i "l "o "v "e "r ". "V "e "r "i "f "y "[C "F "l "o "w "s "[C "I "n "[C "S "[78Cw "[A[78Ci
 "t "c "h "[C "A "f "t "e "r "[C "L "e "a "d "e "r "[C "R "e "s "t "a "r "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:53:41.886450" elapsed="0.000477"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:41.887237" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:53:41.886997" elapsed="0.000297"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:41.886978" elapsed="0.000340"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T00:53:41.887355" elapsed="0.000046"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:53:41.890517" elapsed="0.000160"/>
</kw>
<msg time="2026-04-08T00:53:41.890743" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:53:41.889064" elapsed="0.001863"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:41.891260" elapsed="0.000088"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:41.891628" elapsed="0.000087"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:53:41.888336" elapsed="0.003503"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T00:53:41.887716" elapsed="0.004192"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T00:53:41.771856" elapsed="0.120152"/>
</kw>
<msg time="2026-04-08T00:53:41.892105" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:53:41.892150" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:53:41.771296" elapsed="0.120910"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T00:53:41.892396" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-08T00:53:41.892288" elapsed="0.000166"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:41.892268" elapsed="0.000209"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 2,
close the previous connection. In any case create a new connection
to karaf console for 2, set correct prompt set and login to karaf console.
Store connection index for 2 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:41.892887" elapsed="0.000024"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:41.893251" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T00:53:41.893324" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T00:53:41.770593" elapsed="0.122841"/>
</kw>
<msg time="2026-04-08T00:53:41.893533" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:53:41.893578" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:53:41.765679" elapsed="0.127938"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:41.894020" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:53:41.893762" elapsed="0.000311"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:41.893744" elapsed="0.000353"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T00:53:41.765538" elapsed="0.128582"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:53:41.900007" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:53:41.899893" elapsed="0.000160"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:41.899873" elapsed="0.000201"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:53:41.901238" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:53:41.901103" elapsed="0.000180"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:41.901085" elapsed="0.000220"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:53:41.901772" level="INFO">${karaf_connection_index} = 86</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:53:41.901448" elapsed="0.000351"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:53:41.902206" level="INFO">${current_connection_index} = 169</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:53:41.901955" elapsed="0.000279"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T00:53:41.937745" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T00:53:41.902725" elapsed="0.035334"/>
</kw>
<msg time="2026-04-08T00:53:41.938352" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T00:53:41.938401" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:53:41.902390" elapsed="0.036048"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T00:53:42.014684" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "a "d "e "r "[C "F "o "l "l "o "w "e "r "[C "F "a "i "l "o "v "e "r ". "V "e "r "i "f "y "[C "F "l "o "w "s "[C "I "n "[C "S "[78Cw "[A[78Ci
 "t "c "h "[C "A "f "t "e "r "[C "L "e "a "d "e "r "[C "R "e "s "t "a "r "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T00:53:41.939374" elapsed="0.075672"/>
</kw>
<msg time="2026-04-08T00:53:42.015367" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T00:53:42.015421" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:53:41.938761" elapsed="0.076699"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:42.016024" elapsed="0.000027"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:53:42.015623" elapsed="0.000463"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:42.015558" elapsed="0.000557"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:53:42.016733" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "a "d "e "r "[C "F "o "l "l "o "w "e "r "[C "F "a "i "l "o "v "e "r ". "V "e "r "i "f "y "[C "F "l "o "w "s "[C "I "n "[C "S "[78Cw "[A[78Ci
 "t "c "h "[C "A "f "t "e "r "[C "L "e "a "d "e "r "[C "R "e "s "t "a "r "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:53:42.016284" elapsed="0.000544"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:42.017121" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:53:42.016898" elapsed="0.000296"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:42.016878" elapsed="0.000341"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T00:53:42.017258" elapsed="0.000044"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:53:42.020404" elapsed="0.000164"/>
</kw>
<msg time="2026-04-08T00:53:42.020633" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:53:42.018955" elapsed="0.001833"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:42.021094" elapsed="0.000108"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:42.021494" elapsed="0.000087"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:53:42.018237" elapsed="0.003465"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T00:53:42.017606" elapsed="0.004251"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T00:53:41.900804" elapsed="0.121155"/>
</kw>
<msg time="2026-04-08T00:53:42.022059" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:53:42.022104" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:53:41.900243" elapsed="0.121899"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T00:53:42.022573" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-08T00:53:42.022456" elapsed="0.000178"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:42.022432" elapsed="0.000230"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 3,
close the previous connection. In any case create a new connection
to karaf console for 3, set correct prompt set and login to karaf console.
Store connection index for 3 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:42.023103" elapsed="0.000190"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:42.023649" elapsed="0.000033"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T00:53:42.023733" elapsed="0.000017"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T00:53:41.899540" elapsed="0.124307"/>
</kw>
<msg time="2026-04-08T00:53:42.023945" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:53:42.023991" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:53:41.894425" elapsed="0.129603"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:42.024389" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:53:42.024106" elapsed="0.000336"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:42.024089" elapsed="0.000376"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T00:53:41.894280" elapsed="0.130209"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-08T00:53:41.560697" elapsed="0.463830"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-08T00:53:41.558322" elapsed="0.466267"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-08T00:53:41.553447" elapsed="0.471202"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:53:41.552756" elapsed="0.471944"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-08T00:53:41.549840" elapsed="0.474916"/>
</kw>
<kw name="Verify Sample Flow" owner="ClusterOpenFlow">
<if>
<branch type="IF" condition="'${ODL_OF_PLUGIN}' == 'helium'">
<kw name="Set Test Variable" owner="BuiltIn">
<arg>&amp;{dictionary}</arg>
<arg>10.0.1.0/24=2</arg>
<arg>"output-node-connector":"1"=1</arg>
<doc>Makes a variable available everywhere within the scope of the current test.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:42.031462" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:53:42.031194" elapsed="0.000331"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:42.031174" elapsed="0.000375"/>
</if>
<if>
<branch type="IF" condition="'${ODL_OF_PLUGIN}' == 'lithium'">
<kw name="Set Test Variable" owner="BuiltIn">
<msg time="2026-04-08T00:53:42.034900" level="INFO">&amp;{dictionary} = { 10.0.1.0/24=1 | "output-node-connector":"1"=1 }</msg>
<arg>&amp;{dictionary}</arg>
<arg>10.0.1.0/24=1</arg>
<arg>"output-node-connector":"1"=1</arg>
<doc>Makes a variable available everywhere within the scope of the current test.</doc>
<status status="PASS" start="2026-04-08T00:53:42.031870" elapsed="0.003080"/>
</kw>
<status status="PASS" start="2026-04-08T00:53:42.031603" elapsed="0.003389"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:42.031588" elapsed="0.003429"/>
</if>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Check_Item_Occurrence_Member_List_Or_All" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:53:42.041146" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:53:42.040759" elapsed="0.000434"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:53:42.041663" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:53:42.041356" elapsed="0.000333"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:53:42.041734" elapsed="0.000033"/>
</return>
<msg time="2026-04-08T00:53:42.041894" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:53:42.040372" elapsed="0.001546"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_From_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:53:42.047585" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:53:42.047283" elapsed="0.000329"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:53:42.047657" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:53:42.047831" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:53:42.046910" elapsed="0.000946"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:53:42.054374" level="INFO">/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:53:42.054007" elapsed="0.000418"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:53:42.054826" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:53:42.054580" elapsed="0.000289"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:53:42.080055" level="INFO">GET Request : url=http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01jewze00gqgu8yuon50tdwq65226.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:53:42.080253" level="INFO">GET Response : url=http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0?content=nonconfig 
 status=409, reason=Conflict 
 headers={'Content-Type': 'application/yang-data+json', 'Content-Length': '242'} 
 body={
  "errors": {
    "error": [
      {
        "error-tag": "data-missing",
        "error-message": "Request could not be completed because the relevant data model content does not exist",
        "error-type": "protocol"
      }
    ]
  }
} 
 </msg>
<msg time="2026-04-08T00:53:42.080410" level="FAIL">HTTPError: 409 Client Error: Conflict for url: http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0?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-04-08T00:53:42.057064" elapsed="0.023824">HTTPError: 409 Client Error: Conflict for url: http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0?content=nonconfig</status>
</kw>
<status status="FAIL" start="2026-04-08T00:53:42.054940" elapsed="0.026042">HTTPError: 409 Client Error: Conflict for url: http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0?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-04-08T00:53:42.081216" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:53:42.081019" elapsed="0.000263"/>
</branch>
<status status="FAIL" start="2026-04-08T00:53:42.054919" elapsed="0.026387">HTTPError: 409 Client Error: Conflict for url: http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0?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-04-08T00:53:42.081713" elapsed="0.000026"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:53:42.081848" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:53:42.081811" elapsed="0.000077"/>
</branch>
<status status="NOT RUN" start="2026-04-08T00:53:42.081793" elapsed="0.000117"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:42.082052" elapsed="0.000021"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-08T00:53:42.082120" elapsed="0.000014"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${access}</arg>
<arg>session=${session}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-08T00:53:42.048218" elapsed="0.034028">HTTPError: 409 Client Error: Conflict for url: http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0?content=nonconfig</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-08T00:53:42.082308" elapsed="0.000015"/>
</return>
<var>${data}</var>
<arg>uri=${uri}</arg>
<arg>member_index=${index}</arg>
<doc>Send a GET with the supplied uri to member ${member_index}.</doc>
<status status="FAIL" start="2026-04-08T00:53:42.046405" elapsed="0.035996">HTTPError: 409 Client Error: Conflict for url: http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0?content=nonconfig</status>
</kw>
<kw name="Check Item Occurrence" owner="Utils">
<arg>${data}</arg>
<arg>${dictionary}</arg>
<doc>Check string for occurrences of items expressed in a list of dictionaries {item=occurrences}. 0 occurences means item is not present.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:42.082664" elapsed="0.000024"/>
</kw>
<var name="${index}">1</var>
<status status="FAIL" start="2026-04-08T00:53:42.042366" elapsed="0.040376">HTTPError: 409 Client Error: Conflict for url: http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0?content=nonconfig</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-04-08T00:53:42.042210" elapsed="0.040593">HTTPError: 409 Client Error: Conflict for url: http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0?content=nonconfig</status>
</for>
<arg>uri=${operational_table_0}</arg>
<arg>dictionary=${dictionary}</arg>
<arg>member_index_list=${controller_index_list}</arg>
<doc>Send a GET with the supplied uri to all or some members defined in ${member_index_list}.
Then check received for occurrences of items expressed in a dictionary {'10.0.1.0/24': '1', '"output-node-connector":"1"': '1'}.</doc>
<status status="FAIL" start="2026-04-08T00:53:42.039770" elapsed="0.043126">HTTPError: 409 Client Error: Conflict for url: http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0?content=nonconfig</status>
</kw>
<kw name="Check_Item_Occurrence_Member_List_Or_All" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:53:43.095954" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:53:43.095066" elapsed="0.000933"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:53:43.096708" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:53:43.096265" elapsed="0.000481"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:53:43.096811" elapsed="0.000054"/>
</return>
<msg time="2026-04-08T00:53:43.097090" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:53:43.094497" elapsed="0.002631"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_From_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:53:43.102850" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:53:43.102551" elapsed="0.000327"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:53:43.102922" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:53:43.103068" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:53:43.102190" elapsed="0.000903"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:53:43.109693" level="INFO">/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:53:43.109435" elapsed="0.000306"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:53:43.110130" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:53:43.109892" elapsed="0.000299"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:53:43.129218" level="INFO">GET Request : url=http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01jewze00gqgu8yuon50tdwq65226.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:53:43.132771" level="INFO">GET Response : url=http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '1087'} 
 body={"flow-node-inventory:table":[{"id":0,"flow":[{"id":"1","table_id":0,"priority":2,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.1.0/24"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":0,"nanosecond":133000000}},"flags":""},{"id":"#UF$TABLE*0-1","table_id":0,"priority":0,"cookie_mask":"0","idle-timeout":0,"cookie":"10","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"output-action":{"max-length":65535,"output-node-connector":"CONTROLLER"}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":0,"nanosecond":10000000}},"flags":"SEND_FLOW_REM"}],"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"3","active-flows":2,"packets-matched":"0"}}]} 
 </msg>
<msg time="2026-04-08T00:53:43.133015" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:53:43.112217" elapsed="0.020858"/>
</kw>
<status status="PASS" start="2026-04-08T00:53:43.110269" elapsed="0.022973"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:43.133652" elapsed="0.000047"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:53:43.133310" elapsed="0.000480"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:43.110247" elapsed="0.023589"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:53:43.138683" level="INFO">{"flow-node-inventory:table":[{"id":0,"flow":[{"id":"1","table_id":0,"priority":2,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.1.0/24"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":0,"nanosecond":133000000}},"flags":""},{"id":"#UF$TABLE*0-1","table_id":0,"priority":0,"cookie_mask":"0","idle-timeout":0,"cookie":"10","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"output-action":{"max-length":65535,"output-node-connector":"CONTROLLER"}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":0,"nanosecond":10000000}},"flags":"SEND_FLOW_REM"}],"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"3","active-flows":2,"packets-matched":"0"}}]}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:53:43.135328" elapsed="0.003507"/>
</kw>
<status status="PASS" start="2026-04-08T00:53:43.134998" elapsed="0.003886"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:43.134973" elapsed="0.003946"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:53:43.142383" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:53:43.139334" elapsed="0.003095"/>
</kw>
<status status="PASS" start="2026-04-08T00:53:43.139001" elapsed="0.003462"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:43.138976" elapsed="0.003511"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:53:43.143065" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:53:43.142669" elapsed="0.000423"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:43.143414" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:53:43.143177" elapsed="0.000294"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:53:43.143952" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:53:43.143653" elapsed="0.000325"/>
</kw>
<status status="PASS" start="2026-04-08T00:53:43.143494" elapsed="0.000519"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:43.143143" elapsed="0.000890"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:53:43.144562" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:53:43.144204" elapsed="0.000384"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:43.144886" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:53:43.144657" elapsed="0.000284"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:53:43.145468" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:53:43.145124" elapsed="0.000370"/>
</kw>
<status status="PASS" start="2026-04-08T00:53:43.144966" elapsed="0.000563"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:43.144639" elapsed="0.000912"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:53:43.145699" elapsed="0.000370"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:53:43.146552" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:53:43.146250" elapsed="0.000328"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:53:43.146730" elapsed="0.002202"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:53:43.134394" elapsed="0.014605"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-08T00:53:43.149191" elapsed="0.000029"/>
</return>
<status status="PASS" start="2026-04-08T00:53:43.149068" elapsed="0.000186"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:43.149050" elapsed="0.000252"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:43.149451" elapsed="0.000021"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-08T00:53:43.149520" elapsed="0.000014"/>
</return>
<msg time="2026-04-08T00:53:43.152000" level="INFO">${response_text} = {"flow-node-inventory:table":[{"id":0,"flow":[{"id":"1","table_id":0,"priority":2,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0....</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${access}</arg>
<arg>session=${session}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:53:43.103457" elapsed="0.048572"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:53:43.152080" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:53:43.152248" level="INFO">${data} = {"flow-node-inventory:table":[{"id":0,"flow":[{"id":"1","table_id":0,"priority":2,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0....</msg>
<var>${data}</var>
<arg>uri=${uri}</arg>
<arg>member_index=${index}</arg>
<doc>Send a GET with the supplied uri to member ${member_index}.</doc>
<status status="PASS" start="2026-04-08T00:53:43.101675" elapsed="0.050599"/>
</kw>
<kw name="Check Item Occurrence" owner="Utils">
<for flavor="IN">
<iter>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T00:53:43.153480" level="INFO">Item found from container 1 time.</msg>
<arg>${string}</arg>
<arg>${item}</arg>
<arg>${dictionary_item_occurrence}[${item}]</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="PASS" start="2026-04-08T00:53:43.153065" elapsed="0.000487"/>
</kw>
<var name="${item}">10.0.1.0/24</var>
<status status="PASS" start="2026-04-08T00:53:43.152911" elapsed="0.000681"/>
</iter>
<iter>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T00:53:43.154193" level="INFO">Item found from container 1 time.</msg>
<arg>${string}</arg>
<arg>${item}</arg>
<arg>${dictionary_item_occurrence}[${item}]</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="PASS" start="2026-04-08T00:53:43.153820" elapsed="0.000441"/>
</kw>
<var name="${item}">"output-node-connector":"1"</var>
<status status="PASS" start="2026-04-08T00:53:43.153672" elapsed="0.000665"/>
</iter>
<var>${item}</var>
<value>@{dictionary_item_occurrence}</value>
<status status="PASS" start="2026-04-08T00:53:43.152778" elapsed="0.001591"/>
</for>
<arg>${data}</arg>
<arg>${dictionary}</arg>
<doc>Check string for occurrences of items expressed in a list of dictionaries {item=occurrences}. 0 occurences means item is not present.</doc>
<status status="PASS" start="2026-04-08T00:53:43.152504" elapsed="0.001919"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T00:53:43.097430" elapsed="0.057027"/>
</iter>
<iter>
<kw name="Get_From_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:53:43.159968" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:53:43.159671" elapsed="0.000324"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:53:43.160040" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:53:43.160204" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:53:43.159317" elapsed="0.000913"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:53:43.166679" level="INFO">/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:53:43.166432" elapsed="0.000292"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:53:43.167111" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:53:43.166873" elapsed="0.000281"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:53:43.177496" level="INFO">GET Request : url=http://10.30.170.131:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01eq5fxmndxspk37g8qgkyja672.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:53:43.179437" level="INFO">GET Response : url=http://10.30.170.131:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '1087'} 
 body={"flow-node-inventory:table":[{"id":0,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"3","active-flows":2,"packets-matched":"0"},"flow":[{"id":"1","table_id":0,"priority":2,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.1.0/24"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":0,"nanosecond":133000000}},"flags":""},{"id":"#UF$TABLE*0-1","table_id":0,"priority":0,"cookie_mask":"0","idle-timeout":0,"cookie":"10","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"output-action":{"max-length":65535,"output-node-connector":"CONTROLLER"}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":0,"nanosecond":10000000}},"flags":"SEND_FLOW_REM"}]}]} 
 </msg>
<msg time="2026-04-08T00:53:43.179585" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:53:43.169195" elapsed="0.010426"/>
</kw>
<status status="PASS" start="2026-04-08T00:53:43.167247" elapsed="0.012433"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:43.179921" elapsed="0.000029"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:53:43.179716" elapsed="0.000291"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:43.167229" elapsed="0.012807"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:53:43.184898" level="INFO">{"flow-node-inventory:table":[{"id":0,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"3","active-flows":2,"packets-matched":"0"},"flow":[{"id":"1","table_id":0,"priority":2,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.1.0/24"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":0,"nanosecond":133000000}},"flags":""},{"id":"#UF$TABLE*0-1","table_id":0,"priority":0,"cookie_mask":"0","idle-timeout":0,"cookie":"10","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"output-action":{"max-length":65535,"output-node-connector":"CONTROLLER"}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":0,"nanosecond":10000000}},"flags":"SEND_FLOW_REM"}]}]}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:53:43.181490" elapsed="0.003484"/>
</kw>
<status status="PASS" start="2026-04-08T00:53:43.181133" elapsed="0.003888"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:43.181107" elapsed="0.003948"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:53:43.188513" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:53:43.185474" elapsed="0.003103"/>
</kw>
<status status="PASS" start="2026-04-08T00:53:43.185131" elapsed="0.003493"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:43.185108" elapsed="0.003549"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:53:43.189424" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:53:43.188879" elapsed="0.000629"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:43.189949" elapsed="0.000035"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:53:43.189617" elapsed="0.000476"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:53:43.190612" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:53:43.190310" elapsed="0.000329"/>
</kw>
<status status="PASS" start="2026-04-08T00:53:43.190123" elapsed="0.000552"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:43.189590" elapsed="0.001106"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:53:43.191230" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:53:43.190854" elapsed="0.000403"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:43.191558" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:53:43.191327" elapsed="0.000287"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:53:43.192085" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:53:43.191793" elapsed="0.000317"/>
</kw>
<status status="PASS" start="2026-04-08T00:53:43.191637" elapsed="0.000508"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:43.191309" elapsed="0.000874"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:53:43.192333" elapsed="0.000340"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:53:43.193114" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:53:43.192834" elapsed="0.000305"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:53:43.193311" elapsed="0.004017"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:53:43.180536" elapsed="0.016857"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-08T00:53:43.197613" elapsed="0.000031"/>
</return>
<status status="PASS" start="2026-04-08T00:53:43.197464" elapsed="0.000214"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:43.197446" elapsed="0.000257"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:43.197850" elapsed="0.000021"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-08T00:53:43.197919" elapsed="0.000015"/>
</return>
<msg time="2026-04-08T00:53:43.200342" level="INFO">${response_text} = {"flow-node-inventory:table":[{"id":0,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"3","active-flows":2,"packets-matched":"0"},"flow":[{"id":"1","table_id":0,"priori...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${access}</arg>
<arg>session=${session}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:53:43.160744" elapsed="0.039626"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:53:43.200421" elapsed="0.000027"/>
</return>
<msg time="2026-04-08T00:53:43.200569" level="INFO">${data} = {"flow-node-inventory:table":[{"id":0,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"3","active-flows":2,"packets-matched":"0"},"flow":[{"id":"1","table_id":0,"priori...</msg>
<var>${data}</var>
<arg>uri=${uri}</arg>
<arg>member_index=${index}</arg>
<doc>Send a GET with the supplied uri to member ${member_index}.</doc>
<status status="PASS" start="2026-04-08T00:53:43.158801" elapsed="0.041794"/>
</kw>
<kw name="Check Item Occurrence" owner="Utils">
<for flavor="IN">
<iter>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T00:53:43.201852" level="INFO">Item found from container 1 time.</msg>
<arg>${string}</arg>
<arg>${item}</arg>
<arg>${dictionary_item_occurrence}[${item}]</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="PASS" start="2026-04-08T00:53:43.201434" elapsed="0.000488"/>
</kw>
<var name="${item}">10.0.1.0/24</var>
<status status="PASS" start="2026-04-08T00:53:43.201271" elapsed="0.000693"/>
</iter>
<iter>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T00:53:43.202581" level="INFO">Item found from container 1 time.</msg>
<arg>${string}</arg>
<arg>${item}</arg>
<arg>${dictionary_item_occurrence}[${item}]</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="PASS" start="2026-04-08T00:53:43.202218" elapsed="0.000428"/>
</kw>
<var name="${item}">"output-node-connector":"1"</var>
<status status="PASS" start="2026-04-08T00:53:43.202049" elapsed="0.000636"/>
</iter>
<var>${item}</var>
<value>@{dictionary_item_occurrence}</value>
<status status="PASS" start="2026-04-08T00:53:43.201115" elapsed="0.001599"/>
</for>
<arg>${data}</arg>
<arg>${dictionary}</arg>
<doc>Check string for occurrences of items expressed in a list of dictionaries {item=occurrences}. 0 occurences means item is not present.</doc>
<status status="PASS" start="2026-04-08T00:53:43.200830" elapsed="0.001937"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T00:53:43.154543" elapsed="0.048258"/>
</iter>
<iter>
<kw name="Get_From_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:53:43.208146" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:53:43.207852" elapsed="0.000341"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:53:43.208239" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:53:43.208387" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:53:43.207498" elapsed="0.000963"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:53:43.214747" level="INFO">/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:53:43.214499" elapsed="0.000293"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:53:43.215201" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:53:43.214943" elapsed="0.000303"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:53:43.229688" level="INFO">GET Request : url=http://10.30.171.110:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0336bvzrfnrhc3cqywxyctca52.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:53:43.229924" level="INFO">GET Response : url=http://10.30.171.110:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '1087'} 
 body={"flow-node-inventory:table":[{"id":0,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"3","active-flows":2,"packets-matched":"0"},"flow":[{"id":"1","table_id":0,"priority":2,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.1.0/24"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":0,"nanosecond":133000000}},"flags":""},{"id":"#UF$TABLE*0-1","table_id":0,"priority":0,"cookie_mask":"0","idle-timeout":0,"cookie":"10","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"output-action":{"max-length":65535,"output-node-connector":"CONTROLLER"}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":0,"nanosecond":10000000}},"flags":"SEND_FLOW_REM"}]}]} 
 </msg>
<msg time="2026-04-08T00:53:43.230084" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:53:43.217250" elapsed="0.012879"/>
</kw>
<status status="PASS" start="2026-04-08T00:53:43.215314" elapsed="0.014918"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:43.230640" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:53:43.230425" elapsed="0.000304"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:43.215295" elapsed="0.015464"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:53:43.236012" level="INFO">{"flow-node-inventory:table":[{"id":0,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"3","active-flows":2,"packets-matched":"0"},"flow":[{"id":"1","table_id":0,"priority":2,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.1.0/24"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":0,"nanosecond":133000000}},"flags":""},{"id":"#UF$TABLE*0-1","table_id":0,"priority":0,"cookie_mask":"0","idle-timeout":0,"cookie":"10","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"output-action":{"max-length":65535,"output-node-connector":"CONTROLLER"}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":0,"nanosecond":10000000}},"flags":"SEND_FLOW_REM"}]}]}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:53:43.232221" elapsed="0.003868"/>
</kw>
<status status="PASS" start="2026-04-08T00:53:43.231892" elapsed="0.004245"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:43.231865" elapsed="0.004330"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:53:43.239232" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:53:43.236585" elapsed="0.002694"/>
</kw>
<status status="PASS" start="2026-04-08T00:53:43.236277" elapsed="0.003036"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:43.236253" elapsed="0.003085"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:53:43.239895" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:53:43.239502" elapsed="0.000420"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:43.240253" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:53:43.239997" elapsed="0.000314"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:53:43.240793" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:53:43.240493" elapsed="0.000326"/>
</kw>
<status status="PASS" start="2026-04-08T00:53:43.240334" elapsed="0.000521"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:43.239979" elapsed="0.000897"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:53:43.241409" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:53:43.241032" elapsed="0.000403"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:43.248242" elapsed="0.000083"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:53:43.241505" elapsed="0.008384"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:53:43.250791" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:53:43.250266" elapsed="0.000554"/>
</kw>
<status status="PASS" start="2026-04-08T00:53:43.249939" elapsed="0.000919"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:43.241487" elapsed="0.009394"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:53:43.251067" elapsed="0.000990"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:53:43.252559" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:53:43.252246" elapsed="0.000340"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:53:43.252741" elapsed="0.002527"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:53:43.231283" elapsed="0.024061"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-08T00:53:43.255545" elapsed="0.000038"/>
</return>
<status status="PASS" start="2026-04-08T00:53:43.255430" elapsed="0.000189"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:43.255407" elapsed="0.000236"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:43.255794" elapsed="0.000021"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-08T00:53:43.255863" elapsed="0.000015"/>
</return>
<msg time="2026-04-08T00:53:43.258459" level="INFO">${response_text} = {"flow-node-inventory:table":[{"id":0,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"3","active-flows":2,"packets-matched":"0"},"flow":[{"id":"1","table_id":0,"priori...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${access}</arg>
<arg>session=${session}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:53:43.208797" elapsed="0.049692"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:53:43.258542" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:53:43.258695" level="INFO">${data} = {"flow-node-inventory:table":[{"id":0,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"3","active-flows":2,"packets-matched":"0"},"flow":[{"id":"1","table_id":0,"priori...</msg>
<var>${data}</var>
<arg>uri=${uri}</arg>
<arg>member_index=${index}</arg>
<doc>Send a GET with the supplied uri to member ${member_index}.</doc>
<status status="PASS" start="2026-04-08T00:53:43.206980" elapsed="0.051743"/>
</kw>
<kw name="Check Item Occurrence" owner="Utils">
<for flavor="IN">
<iter>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T00:53:43.260020" level="INFO">Item found from container 1 time.</msg>
<arg>${string}</arg>
<arg>${item}</arg>
<arg>${dictionary_item_occurrence}[${item}]</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="PASS" start="2026-04-08T00:53:43.259628" elapsed="0.000465"/>
</kw>
<var name="${item}">10.0.1.0/24</var>
<status status="PASS" start="2026-04-08T00:53:43.259461" elapsed="0.000672"/>
</iter>
<iter>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T00:53:43.260764" level="INFO">Item found from container 1 time.</msg>
<arg>${string}</arg>
<arg>${item}</arg>
<arg>${dictionary_item_occurrence}[${item}]</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="PASS" start="2026-04-08T00:53:43.260384" elapsed="0.000447"/>
</kw>
<var name="${item}">"output-node-connector":"1"</var>
<status status="PASS" start="2026-04-08T00:53:43.260231" elapsed="0.000639"/>
</iter>
<var>${item}</var>
<value>@{dictionary_item_occurrence}</value>
<status status="PASS" start="2026-04-08T00:53:43.259317" elapsed="0.001582"/>
</for>
<arg>${data}</arg>
<arg>${dictionary}</arg>
<doc>Check string for occurrences of items expressed in a list of dictionaries {item=occurrences}. 0 occurences means item is not present.</doc>
<status status="PASS" start="2026-04-08T00:53:43.258991" elapsed="0.001961"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T00:53:43.202885" elapsed="0.058102"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-08T00:53:43.097232" elapsed="0.163784"/>
</for>
<arg>uri=${operational_table_0}</arg>
<arg>dictionary=${dictionary}</arg>
<arg>member_index_list=${controller_index_list}</arg>
<doc>Send a GET with the supplied uri to all or some members defined in ${member_index_list}.
Then check received for occurrences of items expressed in a dictionary {'10.0.1.0/24': '1', '"output-node-connector":"1"': '1'}.</doc>
<status status="PASS" start="2026-04-08T00:53:43.093289" elapsed="0.167777"/>
</kw>
<arg>15s</arg>
<arg>1s</arg>
<arg>ClusterManagement.Check_Item_Occurrence_Member_List_Or_All</arg>
<arg>uri=${operational_table_0}</arg>
<arg>dictionary=${dictionary}</arg>
<arg>member_index_list=${controller_index_list}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-08T00:53:42.035212" elapsed="1.225922"/>
</kw>
<doc>Verify sample flow gets applied in all instances in ${controller_index_list}.</doc>
<status status="PASS" start="2026-04-08T00:53:42.029298" elapsed="1.231925"/>
</kw>
<doc>Verify flows are installed in switch after leader restart.</doc>
<status status="PASS" start="2026-04-08T00:53:41.549227" elapsed="1.712114"/>
</test>
<test id="s1-s3-t10" name="Stop Mininet Connected To Old Leader and Exit" line="82">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-08T00:53:43.268987" elapsed="0.000424"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-08T00:53:43.268598" elapsed="0.000905"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:53:43.271272" elapsed="0.000023"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:53:43.270995" elapsed="0.000536"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:43.270952" elapsed="0.000620"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:53:43.277741" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:53:43.277629" elapsed="0.000158"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:43.277610" elapsed="0.000200"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:53:43.278882" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:53:43.278477" elapsed="0.000434"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:53:43.279393" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:53:43.279071" elapsed="0.000348"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:53:43.279463" elapsed="0.000042"/>
</return>
<msg time="2026-04-08T00:53:43.279633" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:53:43.278075" elapsed="0.001583"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:53:43.284920" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:53:43.284812" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:43.284792" elapsed="0.000194"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:53:43.286223" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:53:43.286093" elapsed="0.000176"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:43.286074" elapsed="0.000218"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:53:43.286758" level="INFO">${karaf_connection_index} = 157</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:53:43.286441" elapsed="0.000344"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:53:43.287233" level="INFO">${current_connection_index} = 169</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:53:43.286947" elapsed="0.000313"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T00:53:43.336614" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T00:53:43.287752" elapsed="0.049015"/>
</kw>
<msg time="2026-04-08T00:53:43.336972" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T00:53:43.337019" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:53:43.287419" elapsed="0.049636"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T00:53:43.448778" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "a "d "e "r "[C "F "o "l "l "o "w "e "r "[C "F "a "i "l "o "v "e "r ". "S "t "o "p "[C "M "i "n "i "n "e "t "[C "C "o "n "n "[78Ce "[A[78Cc
 "t "e "d "[C "T "o "[C "O "l "d "[C "L "e "a "d "e "r "[C "a "n "d "[C "E "x "i "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T00:53:43.337708" elapsed="0.111383"/>
</kw>
<msg time="2026-04-08T00:53:43.449409" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T00:53:43.449459" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:53:43.337304" elapsed="0.112191"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:43.450077" elapsed="0.000029"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:53:43.449649" elapsed="0.000491"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:43.449599" elapsed="0.000588"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:53:43.450855" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "a "d "e "r "[C "F "o "l "l "o "w "e "r "[C "F "a "i "l "o "v "e "r ". "S "t "o "p "[C "M "i "n "i "n "e "t "[C "C "o "n "n "[78Ce "[A[78Cc
 "t "e "d "[C "T "o "[C "O "l "d "[C "L "e "a "d "e "r "[C "a "n "d "[C "E "x "i "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:53:43.450341" elapsed="0.000605"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:43.451260" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:53:43.451021" elapsed="0.000295"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:43.451001" elapsed="0.000426"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T00:53:43.451468" elapsed="0.000045"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:53:43.454347" elapsed="0.000161"/>
</kw>
<msg time="2026-04-08T00:53:43.454599" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:53:43.453194" elapsed="0.001602"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:43.455097" elapsed="0.000544"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:43.455936" elapsed="0.000088"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:53:43.452445" elapsed="0.003703"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T00:53:43.451819" elapsed="0.004417"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T00:53:43.285768" elapsed="0.170569"/>
</kw>
<msg time="2026-04-08T00:53:43.456432" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:53:43.456477" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:53:43.285138" elapsed="0.171374"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T00:53:43.456921" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-08T00:53:43.456807" elapsed="0.000182"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:43.456785" elapsed="0.000234"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:43.457450" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:43.457791" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T00:53:43.457862" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T00:53:43.284475" elapsed="0.173497"/>
</kw>
<msg time="2026-04-08T00:53:43.458070" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:53:43.458113" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:53:43.280040" elapsed="0.178109"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:43.458510" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:53:43.458258" elapsed="0.000305"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:43.458240" elapsed="0.000346"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T00:53:43.279898" elapsed="0.178711"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:53:43.464307" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:53:43.464195" elapsed="0.000159"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:43.464175" elapsed="0.000200"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:53:43.465540" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:53:43.465429" elapsed="0.000157"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:43.465410" elapsed="0.000198"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:53:43.466082" level="INFO">${karaf_connection_index} = 84</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:53:43.465751" elapsed="0.000358"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:53:43.466573" level="INFO">${current_connection_index} = 169</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:53:43.466335" elapsed="0.000265"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T00:53:43.503466" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T00:53:43.467220" elapsed="0.036486"/>
</kw>
<msg time="2026-04-08T00:53:43.503963" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T00:53:43.504012" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:53:43.466846" elapsed="0.037441"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T00:53:43.601468" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "a "d "e "r "[C "F "o "l "l "o "w "e "r "[C "F "a "i "l "o "v "e "r ". "S "t "o "p "[C "M "i "n "i "n "e "t "[C "C "o "n "n "[78Ce "[A[78Cc
 "t "e "d "[C "T "o "[C "O "l "d "[C "L "e "a "d "e "r "[C "a "n "d "[C "E "x "i "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T00:53:43.505030" elapsed="0.096755"/>
</kw>
<msg time="2026-04-08T00:53:43.602063" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T00:53:43.602114" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:53:43.504571" elapsed="0.097581"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:43.602709" elapsed="0.000028"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:53:43.602320" elapsed="0.000453"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:43.602283" elapsed="0.000518"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:53:43.603422" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "a "d "e "r "[C "F "o "l "l "o "w "e "r "[C "F "a "i "l "o "v "e "r ". "S "t "o "p "[C "M "i "n "i "n "e "t "[C "C "o "n "n "[78Ce "[A[78Cc
 "t "e "d "[C "T "o "[C "O "l "d "[C "L "e "a "d "e "r "[C "a "n "d "[C "E "x "i "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:53:43.602955" elapsed="0.000562"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:43.603820" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:53:43.603590" elapsed="0.000287"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:43.603571" elapsed="0.000330"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T00:53:43.603938" elapsed="0.000041"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:53:43.606848" elapsed="0.000160"/>
</kw>
<msg time="2026-04-08T00:53:43.607074" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:53:43.605649" elapsed="0.001605"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:43.607569" elapsed="0.000086"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:43.607935" elapsed="0.000084"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:53:43.604910" elapsed="0.003235"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T00:53:43.604299" elapsed="0.005205"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T00:53:43.465107" elapsed="0.145670"/>
</kw>
<msg time="2026-04-08T00:53:43.611057" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:53:43.611194" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:53:43.464524" elapsed="0.146764"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T00:53:43.612419" elapsed="0.000059"/>
</return>
<status status="PASS" start="2026-04-08T00:53:43.611576" elapsed="0.000957"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:43.611513" elapsed="0.001055"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 2,
close the previous connection. In any case create a new connection
to karaf console for 2, set correct prompt set and login to karaf console.
Store connection index for 2 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:43.613274" elapsed="0.000042"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:43.613749" elapsed="0.000035"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T00:53:43.613851" elapsed="0.000021"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T00:53:43.463828" elapsed="0.150191"/>
</kw>
<msg time="2026-04-08T00:53:43.614232" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:53:43.614309" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:53:43.458916" elapsed="0.155459"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:43.615559" elapsed="0.000034"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:53:43.615083" elapsed="0.000560"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:43.615053" elapsed="0.000626"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T00:53:43.458772" elapsed="0.156943"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:53:43.622412" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:53:43.622297" elapsed="0.000162"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:43.622277" elapsed="0.000205"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:53:43.623733" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:53:43.623621" elapsed="0.000157"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:43.623601" elapsed="0.000201"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:53:43.624348" level="INFO">${karaf_connection_index} = 86</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:53:43.623952" elapsed="0.000425"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:53:43.624907" level="INFO">${current_connection_index} = 169</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:53:43.624543" elapsed="0.000392"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T00:53:43.659998" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T00:53:43.625478" elapsed="0.034711"/>
</kw>
<msg time="2026-04-08T00:53:43.660458" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T00:53:43.660527" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:53:43.625110" elapsed="0.035470"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T00:53:43.753853" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "a "d "e "r "[C "F "o "l "l "o "w "e "r "[C "F "a "i "l "o "v "e "r ". "S "t "o "p "[C "M "i "n "i "n "e "t "[C "C "o "n "n "[78Ce "[A[78Cc
 "t "e "d "[C "T "o "[C "O "l "d "[C "L "e "a "d "e "r "[C "a "n "d "[C "E "x "i "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T00:53:43.661405" elapsed="0.092612"/>
</kw>
<msg time="2026-04-08T00:53:43.754227" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T00:53:43.754275" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:53:43.660846" elapsed="0.093465"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:43.754702" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:53:43.754414" elapsed="0.000344"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:43.754385" elapsed="0.000402"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:53:43.755294" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "a "d "e "r "[C "F "o "l "l "o "w "e "r "[C "F "a "i "l "o "v "e "r ". "S "t "o "p "[C "M "i "n "i "n "e "t "[C "C "o "n "n "[78Ce "[A[78Cc
 "t "e "d "[C "T "o "[C "O "l "d "[C "L "e "a "d "e "r "[C "a "n "d "[C "E "x "i "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:53:43.754934" elapsed="0.000448"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:43.755667" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:53:43.755450" elapsed="0.000271"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:43.755431" elapsed="0.000314"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T00:53:43.755781" elapsed="0.000043"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:53:43.758622" elapsed="0.000158"/>
</kw>
<msg time="2026-04-08T00:53:43.758845" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:53:43.757455" elapsed="0.001546"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:43.759531" elapsed="0.000090"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:43.759908" elapsed="0.000088"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:53:43.756726" elapsed="0.003458"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T00:53:43.756131" elapsed="0.004189"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T00:53:43.623281" elapsed="0.137336"/>
</kw>
<msg time="2026-04-08T00:53:43.760728" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:53:43.760774" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:53:43.622637" elapsed="0.138174"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T00:53:43.761006" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-08T00:53:43.760892" elapsed="0.000172"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:43.760872" elapsed="0.000216"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 3,
close the previous connection. In any case create a new connection
to karaf console for 3, set correct prompt set and login to karaf console.
Store connection index for 3 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:43.761788" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:43.762130" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T00:53:43.762222" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T00:53:43.621880" elapsed="0.140450"/>
</kw>
<msg time="2026-04-08T00:53:43.762426" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:53:43.762470" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:53:43.616120" elapsed="0.146386"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:43.762831" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:53:43.762581" elapsed="0.000303"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:43.762564" elapsed="0.000343"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T00:53:43.615905" elapsed="0.147026"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-08T00:53:43.279716" elapsed="0.483252"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-08T00:53:43.277257" elapsed="0.485772"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-08T00:53:43.270492" elapsed="0.492595"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:53:43.269724" elapsed="0.493412"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-08T00:53:43.264568" elapsed="0.498649"/>
</kw>
<kw name="Stop Mininet And Exit" owner="MininetKeywords">
<if>
<branch type="IF" condition="&quot;&quot;&quot;${mininet_conn}&quot;&quot;&quot; != &quot;&quot;">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${mininet_conn}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:53:43.768012" elapsed="0.000191"/>
</kw>
<status status="PASS" start="2026-04-08T00:53:43.767793" elapsed="0.000447"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:43.767775" elapsed="0.000490"/>
</if>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T00:53:43.771051" level="INFO">exit</msg>
<arg>exit</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T00:53:43.768403" elapsed="0.002704"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-08T00:53:43.883638" level="INFO">*** Stopping 1 controllers
c0 
*** Stopping 2 links
..
*** Stopping 1 switches
s1 
*** Stopping 2 hosts
h1 h2 
*** Done
completed in 2.486 seconds
[?2004h[jenkins@releng-11369-169-1-mininet-ovs-217-0 ~]&gt;</msg>
<arg>${TOOLS_SYSTEM_PROMPT}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-08T00:53:43.771305" elapsed="0.112409"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:53:43.883897" elapsed="0.000192"/>
</kw>
<arg>${mininet_conn_id}</arg>
<doc>Stops Mininet and exits session ${mininet_conn}</doc>
<status status="PASS" start="2026-04-08T00:53:43.767522" elapsed="0.116623"/>
</kw>
<kw name="Clean Mininet System" owner="Utils">
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:43.886707" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:53:43.886419" elapsed="0.000345"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:43.886399" elapsed="0.000389"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:53:43.887087" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T00:53:43.886936" elapsed="0.000378"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:53:43.887850" level="INFO">Attempting to execute command "sudo mn -c" on remote system "10.30.170.192" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:53:43.887466" elapsed="0.000429"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:53:43.888448" level="INFO">${conn_id} = 170</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:53:43.888050" elapsed="0.000424"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T00:53:43.889483" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T00:53:43.889559" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T00:53:43.889176" elapsed="0.000407"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:53:43.889739" elapsed="0.000318"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T00:53:43.890905" level="INFO">Logging into '10.30.170.192:22' as 'jenkins'.</msg>
<msg time="2026-04-08T00:53:44.235671" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 00:53:38 UTC 2026

  System load:  0.1                Processes:             108
  Usage of /:   19.5% of 38.58GB   Users logged in:       0
  Memory usage: 5%                 IPv4 address for ens3: 10.30.170.192
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 00:53:41 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-1-mininet-ovs-217-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T00:53:43.890592" elapsed="0.345255"/>
</kw>
<msg time="2026-04-08T00:53:44.235946" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:53:43.890241" elapsed="0.345804"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T00:53:43.888737" elapsed="0.347453"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T00:53:44.236793" level="INFO">Executing command 'sudo mn -c'.</msg>
<msg time="2026-04-08T00:53:45.416540" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-08T00:53:45.416935" level="INFO">${stdout} = </msg>
<msg time="2026-04-08T00:53:45.417040" level="INFO">${stderr} = *** Removing excess controllers/ofprotocols/ofdatapaths/pings/noxes
killall controller ofprotocol ofdatapath ping nox_corelt-nox_core ovs-openflowd ovs-controllerovs-testcontroller udpbwtest mnexec iv...</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T00:53:44.236492" elapsed="1.180607"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:53:45.417636" elapsed="0.000571"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:53:45.419389" level="INFO">*** Removing excess controllers/ofprotocols/ofdatapaths/pings/noxes
killall controller ofprotocol ofdatapath ping nox_corelt-nox_core ovs-openflowd ovs-controllerovs-testcontroller udpbwtest mnexec ivs ryu-manager 2&gt; /dev/null
killall -9 controller ofprotocol ofdatapath ping nox_corelt-nox_core ovs-openflowd ovs-controllerovs-testcontroller udpbwtest mnexec ivs ryu-manager 2&gt; /dev/null
pkill -9 -f "sudo mnexec"
*** Removing junk from /tmp
rm -f /tmp/vconn* /tmp/vlogs* /tmp/*.out /tmp/*.log
*** Removing old X11 tunnels
*** Removing excess kernel datapaths
ps ax | egrep -o 'dp[0-9]+' | sed 's/dp/nl:/'
***  Removing OVS datapaths
ovs-vsctl --timeout=1 list-br
ovs-vsctl --timeout=1 list-br
*** Removing all links of the pattern foo-ethX
ip link show | egrep -o '([-_.[:alnum:]]+-eth[[:digit:]]+)'
ip link show
*** Killing stale mininet node processes
pkill -9 -f mininet:
*** Shutting down stale tunnels
pkill -9 -f Tunnel=Ethernet
pkill -9 -f .ssh/mn
rm -f ~/.ssh/mn/*
*** Cleanup complete.</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:53:45.418677" elapsed="0.000836"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:53:45.420013" elapsed="0.000036"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:53:45.419696" elapsed="0.000424"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:45.419643" elapsed="0.000559"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T00:53:45.420568" elapsed="0.000071"/>
</return>
<status status="PASS" start="2026-04-08T00:53:45.420327" elapsed="0.000385"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:45.420293" elapsed="0.000472"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:53:45.420841" elapsed="0.000031"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:53:45.425436" elapsed="0.000453"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:53:45.426117" elapsed="0.000247"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:53:45.426667" elapsed="0.000155"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:53:45.421580" elapsed="0.005316"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T00:53:43.885872" elapsed="1.541156"/>
</kw>
<msg time="2026-04-08T00:53:45.427106" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:53:43.885291" elapsed="1.541906"/>
</kw>
<arg>${system}</arg>
<arg>sudo mn -c</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-08T00:53:43.884775" elapsed="1.542536"/>
</kw>
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:45.430177" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:53:45.429783" elapsed="0.000473"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:45.429757" elapsed="0.000532"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:53:45.430686" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T00:53:45.430495" elapsed="0.000407"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:53:45.431549" level="INFO">Attempting to execute command "sudo ps -elf | egrep 'usr/local/bin/mn' | egrep python | awk '{print "sudo kill -9",$4}' | sh" on remote system "10.30.170.192" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:53:45.431138" elapsed="0.000460"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:53:45.432113" level="INFO">${conn_id} = 172</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:53:45.431750" elapsed="0.000389"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T00:53:45.433049" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T00:53:45.433126" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T00:53:45.432760" elapsed="0.000389"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:53:45.433321" elapsed="0.000313"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T00:53:45.434476" level="INFO">Logging into '10.30.170.192:22' as 'jenkins'.</msg>
<msg time="2026-04-08T00:53:45.785712" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 00:53:38 UTC 2026

  System load:  0.1                Processes:             108
  Usage of /:   19.5% of 38.58GB   Users logged in:       0
  Memory usage: 5%                 IPv4 address for ens3: 10.30.170.192
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 00:53:44 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-1-mininet-ovs-217-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T00:53:45.434145" elapsed="0.351755"/>
</kw>
<msg time="2026-04-08T00:53:45.785990" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:53:45.433797" elapsed="0.352287"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T00:53:45.432372" elapsed="0.353880"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T00:53:45.786783" level="INFO">Executing command 'sudo ps -elf | egrep 'usr/local/bin/mn' | egrep python | awk '{print "sudo kill -9",$4}' | sh'.</msg>
<msg time="2026-04-08T00:53:45.819443" level="INFO">Command exited with return code -1.</msg>
<msg time="2026-04-08T00:53:45.819712" level="INFO">${stdout} = </msg>
<msg time="2026-04-08T00:53:45.819812" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T00:53:45.786521" elapsed="0.033341"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:53:45.820327" elapsed="0.000572"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:53:45.822261" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:53:45.821384" elapsed="0.000979"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:53:45.822857" elapsed="0.000035"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:53:45.822541" elapsed="0.000422"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:45.822491" elapsed="0.000521"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T00:53:45.823552" elapsed="0.000063"/>
</return>
<status status="PASS" start="2026-04-08T00:53:45.823128" elapsed="0.000562"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:45.823095" elapsed="0.000650"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:53:45.823821" elapsed="0.000030"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:53:45.828310" elapsed="0.000551"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:53:45.829103" elapsed="0.000261"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:53:45.829573" elapsed="0.000140"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:53:45.824719" elapsed="0.005070"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T00:53:45.429030" elapsed="0.400890"/>
</kw>
<msg time="2026-04-08T00:53:45.829999" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:53:45.428267" elapsed="0.401805"/>
</kw>
<arg>${system}</arg>
<arg>sudo ps -elf | egrep 'usr/local/bin/mn' | egrep python | awk '{print "sudo kill -9",$4}' | sh</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-08T00:53:45.427555" elapsed="0.402657"/>
</kw>
<status status="PASS" start="2026-04-08T00:53:43.884382" elapsed="1.945915"/>
</kw>
<doc>Stop mininet and exit connection.</doc>
<status status="PASS" start="2026-04-08T00:53:43.263133" elapsed="2.567316"/>
</test>
<test id="s1-s3-t11" name="Restart Follower Node2" line="87">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-08T00:53:45.835984" elapsed="0.000465"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-08T00:53:45.835614" elapsed="0.000914"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:53:45.837990" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:53:45.837875" elapsed="0.000162"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:45.837854" elapsed="0.000206"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:53:45.843059" elapsed="0.000019"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:53:45.842938" elapsed="0.000179"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:45.842919" elapsed="0.000227"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:53:45.844288" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:53:45.843818" elapsed="0.000500"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:53:45.844834" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:53:45.844485" elapsed="0.000377"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:53:45.844908" elapsed="0.000032"/>
</return>
<msg time="2026-04-08T00:53:45.845067" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:53:45.843421" elapsed="0.001672"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:53:45.850556" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:53:45.850443" elapsed="0.000160"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:45.850423" elapsed="0.000202"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:53:45.851829" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:53:45.851719" elapsed="0.000157"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:45.851700" elapsed="0.000199"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:53:45.852444" level="INFO">${karaf_connection_index} = 157</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:53:45.852047" elapsed="0.000425"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:53:45.852938" level="INFO">${current_connection_index} = None</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:53:45.852699" elapsed="0.000266"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T00:53:46.993496" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T00:53:45.853491" elapsed="1.143845"/>
</kw>
<msg time="2026-04-08T00:53:46.997683" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T00:53:46.997740" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:53:45.853127" elapsed="1.144657"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T00:53:47.016308" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "a "d "e "r "[C "F "o "l "l "o "w "e "r "[C "F "a "i "l "o "v "e "r ". "R "e "s "t "a "r "t "[C "F "o "l "l "o "w "e "r "[C "[78CN "[A[78Co
 "d "e "2 "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T00:53:47.003267" elapsed="0.013190"/>
</kw>
<msg time="2026-04-08T00:53:47.016652" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T00:53:47.016700" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:53:47.001269" elapsed="0.015470"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:47.017633" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:53:47.016856" elapsed="0.000837"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:47.016827" elapsed="0.000892"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:53:47.018242" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "a "d "e "r "[C "F "o "l "l "o "w "e "r "[C "F "a "i "l "o "v "e "r ". "R "e "s "t "a "r "t "[C "F "o "l "l "o "w "e "r "[C "[78CN "[A[78Co
 "d "e "2 "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:53:47.017867" elapsed="0.000463"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:47.018625" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:53:47.018401" elapsed="0.000280"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:47.018382" elapsed="0.000322"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T00:53:47.018741" elapsed="0.000058"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:53:47.021387" elapsed="0.000911"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:53:47.022608" elapsed="0.001239"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:53:47.024312" elapsed="0.000422"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:53:47.020653" elapsed="0.004193"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T00:53:47.019557" elapsed="0.005357"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T00:53:45.851410" elapsed="1.173604"/>
</kw>
<msg time="2026-04-08T00:53:47.025116" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:53:47.025178" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:53:45.850776" elapsed="1.174442"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T00:53:47.025411" elapsed="0.000032"/>
</return>
<status status="PASS" start="2026-04-08T00:53:47.025300" elapsed="0.000179"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:47.025280" elapsed="0.000223"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:47.025935" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:47.026288" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T00:53:47.026361" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T00:53:45.850067" elapsed="1.176406"/>
</kw>
<msg time="2026-04-08T00:53:47.027088" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:53:47.027133" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:53:45.845497" elapsed="1.181708"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:47.027537" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:53:47.027285" elapsed="0.000305"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:47.027267" elapsed="0.000346"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T00:53:45.845353" elapsed="1.182283"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:53:47.032882" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:53:47.032773" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:47.032754" elapsed="0.000195"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:53:47.034083" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:53:47.033974" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:47.033957" elapsed="0.000193"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:53:47.035056" level="INFO">${karaf_connection_index} = 84</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:53:47.034312" elapsed="0.000771"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:53:47.035531" level="INFO">${current_connection_index} = None</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:53:47.035303" elapsed="0.000255"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T00:53:47.074591" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T00:53:47.036096" elapsed="0.038619"/>
</kw>
<msg time="2026-04-08T00:53:47.074898" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T00:53:47.074945" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:53:47.035715" elapsed="0.039266"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T00:53:47.136277" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "a "d "e "r "[C "F "o "l "l "o "w "e "r "[C "F "a "i "l "o "v "e "r ". "R "e "s "t "a "r "t "[C "F "o "l "l "o "w "e "r "[C "[78CN "[A[78Co
 "d "e "2 "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T00:53:47.075557" elapsed="0.060870"/>
</kw>
<msg time="2026-04-08T00:53:47.136607" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T00:53:47.136654" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:53:47.075191" elapsed="0.061500"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:47.137057" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:53:47.136791" elapsed="0.000322"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:47.136763" elapsed="0.000376"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:53:47.137641" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "a "d "e "r "[C "F "o "l "l "o "w "e "r "[C "F "a "i "l "o "v "e "r ". "R "e "s "t "a "r "t "[C "F "o "l "l "o "w "e "r "[C "[78CN "[A[78Co
 "d "e "2 "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:53:47.137307" elapsed="0.000415"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:47.138002" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:53:47.137789" elapsed="0.000267"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:47.137770" elapsed="0.000310"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T00:53:47.138115" elapsed="0.000040"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:53:47.139721" elapsed="0.000920"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:53:47.140939" elapsed="0.000546"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:53:47.141845" elapsed="0.000447"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:53:47.139015" elapsed="0.003388"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T00:53:47.138451" elapsed="0.004019"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T00:53:47.033676" elapsed="0.108910"/>
</kw>
<msg time="2026-04-08T00:53:47.142692" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:53:47.142738" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:53:47.033098" elapsed="0.109679"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T00:53:47.142964" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-08T00:53:47.142857" elapsed="0.000168"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:47.142838" elapsed="0.000211"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 2,
close the previous connection. In any case create a new connection
to karaf console for 2, set correct prompt set and login to karaf console.
Store connection index for 2 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:47.143473" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:47.144029" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T00:53:47.144103" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T00:53:47.032424" elapsed="0.111801"/>
</kw>
<msg time="2026-04-08T00:53:47.144321" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:53:47.144378" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:53:47.027905" elapsed="0.116511"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:47.144740" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:53:47.144492" elapsed="0.000301"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:47.144475" elapsed="0.000341"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T00:53:47.027766" elapsed="0.117073"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:53:47.150012" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:53:47.149905" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:47.149887" elapsed="0.000192"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:53:47.151497" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:53:47.151380" elapsed="0.000163"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:47.151357" elapsed="0.000208"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:53:47.152040" level="INFO">${karaf_connection_index} = 86</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:53:47.151716" elapsed="0.000352"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:53:47.152503" level="INFO">${current_connection_index} = None</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:53:47.152249" elapsed="0.000283"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T00:53:47.192836" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T00:53:47.153042" elapsed="0.040020"/>
</kw>
<msg time="2026-04-08T00:53:47.193382" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T00:53:47.193434" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:53:47.152707" elapsed="0.040766"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T00:53:47.252392" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "a "d "e "r "[C "F "o "l "l "o "w "e "r "[C "F "a "i "l "o "v "e "r ". "R "e "s "t "a "r "t "[C "F "o "l "l "o "w "e "r "[C "[78CN "[A[78Co
 "d "e "2 "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T00:53:47.194201" elapsed="0.058430"/>
</kw>
<msg time="2026-04-08T00:53:47.252894" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T00:53:47.252944" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:53:47.193728" elapsed="0.059356"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:47.253572" elapsed="0.000027"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:53:47.253233" elapsed="0.000401"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:47.253194" elapsed="0.000467"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:53:47.254230" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "a "d "e "r "[C "F "o "l "l "o "w "e "r "[C "F "a "i "l "o "v "e "r ". "R "e "s "t "a "r "t "[C "F "o "l "l "o "w "e "r "[C "[78CN "[A[78Co
 "d "e "2 "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:53:47.253807" elapsed="0.000507"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:47.254605" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:53:47.254383" elapsed="0.000278"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:47.254365" elapsed="0.000319"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T00:53:47.254721" elapsed="0.000039"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:53:47.256356" elapsed="0.000912"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:53:47.257566" elapsed="0.000534"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:53:47.258404" elapsed="0.000414"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:53:47.255647" elapsed="0.003284"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T00:53:47.255043" elapsed="0.003953"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T00:53:47.151005" elapsed="0.108091"/>
</kw>
<msg time="2026-04-08T00:53:47.259225" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:53:47.259271" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:53:47.150435" elapsed="0.108874"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T00:53:47.259496" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-08T00:53:47.259388" elapsed="0.000167"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:47.259369" elapsed="0.000210"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 3,
close the previous connection. In any case create a new connection
to karaf console for 3, set correct prompt set and login to karaf console.
Store connection index for 3 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:47.259979" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:47.260338" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T00:53:47.260409" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T00:53:47.149561" elapsed="0.110956"/>
</kw>
<msg time="2026-04-08T00:53:47.260615" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:53:47.260660" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:53:47.145105" elapsed="0.115621"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:47.261060" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:53:47.260808" elapsed="0.000306"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:47.260789" elapsed="0.000348"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T00:53:47.144967" elapsed="0.116209"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-08T00:53:45.845150" elapsed="1.416064"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-08T00:53:45.842564" elapsed="1.418710"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-08T00:53:45.837401" elapsed="1.423932"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:53:45.836741" elapsed="1.424638"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-08T00:53:45.832305" elapsed="1.429165"/>
</kw>
<kw name="Stop_Single_Member" owner="ClusterManagement">
<kw name="ClusterManagement__Build_List" owner="ClusterManagement">
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:53:47.266450" level="INFO">${member_int} = 2</msg>
<var>${member_int}</var>
<arg>${member}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:53:47.266122" elapsed="0.000354"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:53:47.266908" level="INFO">${index_list} = [2]</msg>
<var>${index_list}</var>
<arg>${member_int}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:53:47.266626" elapsed="0.000308"/>
</kw>
<return>
<value>${index_list}</value>
<status status="PASS" start="2026-04-08T00:53:47.266977" elapsed="0.000027"/>
</return>
<msg time="2026-04-08T00:53:47.267125" level="INFO">${index_list} = [2]</msg>
<var>${index_list}</var>
<arg>${member}</arg>
<status status="PASS" start="2026-04-08T00:53:47.265799" elapsed="0.001350"/>
</kw>
<kw name="Return_Member_IP" owner="ClusterManagement">
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:53:47.268133" level="INFO">${member_int} = 2</msg>
<var>${member_int}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:53:47.267834" elapsed="0.000340"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:53:47.268594" level="INFO">${member_ip} = 10.30.170.131</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_int}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:53:47.268328" elapsed="0.000291"/>
</kw>
<return>
<value>${member_ip}</value>
<status status="PASS" start="2026-04-08T00:53:47.268665" elapsed="0.000027"/>
</return>
<msg time="2026-04-08T00:53:47.268837" level="INFO">${member_ip} = 10.30.170.131</msg>
<var>${member_ip}</var>
<arg>${member}</arg>
<doc>Return the IP address of the member given the member_index.</doc>
<status status="PASS" start="2026-04-08T00:53:47.267519" elapsed="0.001343"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:53:47.271126" level="INFO">${msg} = Stopping ODL2 10.30.170.131</msg>
<var>${msg}</var>
<arg>"${msg}" == "${EMPTY}"</arg>
<arg>Stopping ODL${member} ${member_ip}</arg>
<arg>Stopping ODL${member} ${member_ip}, ${msg}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:53:47.269020" elapsed="0.002132"/>
</kw>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:53:47.277497" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:53:47.277390" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:47.277372" elapsed="0.000191"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:53:47.278545" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:53:47.278154" elapsed="0.000417"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:53:47.279024" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:53:47.278727" elapsed="0.000323"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:53:47.279097" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:53:47.279421" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:53:47.277785" elapsed="0.001661"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:53:47.291070" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:53:47.290921" elapsed="0.000213"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:47.290466" elapsed="0.000709"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:53:47.292443" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:53:47.292335" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:47.292317" elapsed="0.000194"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:53:47.292947" level="INFO">${karaf_connection_index} = 157</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:53:47.292657" elapsed="0.000318"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:53:47.293338" level="INFO">${current_connection_index} = None</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:53:47.293142" elapsed="0.000222"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T00:53:47.329780" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "o "p "p "i "n "g "[C "O "D "L "2 "[C "1 "0 ". "3 "0 ". "1 "7 "0 ". "1 "3 "1 "[K"</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T00:53:47.293856" elapsed="0.036011"/>
</kw>
<msg time="2026-04-08T00:53:47.329972" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T00:53:47.330017" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "o "p "p "i "n "g "[C "O "D "L "2 "[C "1 "0 ". "3 "0 ". "1 "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:53:47.293522" elapsed="0.036531"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T00:53:47.332561" level="INFO">[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T00:53:47.330586" elapsed="0.002032"/>
</kw>
<msg time="2026-04-08T00:53:47.333465" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T00:53:47.333512" level="INFO">${message_wait} = [?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:53:47.330245" elapsed="0.003294"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:47.333843" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:53:47.333620" elapsed="0.000278"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:47.333598" elapsed="0.000323"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:53:47.334329" level="INFO">[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:53:47.334058" elapsed="0.000319"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:47.334651" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:53:47.334442" elapsed="0.000263"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:47.334425" elapsed="0.000302"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T00:53:47.334759" elapsed="0.000036"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:53:47.335949" elapsed="0.000420"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:53:47.336533" elapsed="0.000165"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:53:47.336847" elapsed="0.000134"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:53:47.335584" elapsed="0.001451"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T00:53:47.335052" elapsed="0.002031"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T00:53:47.292014" elapsed="0.045183"/>
</kw>
<msg time="2026-04-08T00:53:47.337292" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:53:47.337336" level="INFO">${message} = [?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:53:47.291396" elapsed="0.045967"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T00:53:47.337546" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-08T00:53:47.337441" elapsed="0.000163"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:47.337422" elapsed="0.000206"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:47.338022" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:47.338373" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T00:53:47.338445" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T00:53:47.289518" elapsed="0.049034"/>
</kw>
<msg time="2026-04-08T00:53:47.338649" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:53:47.338693" level="INFO">${output} = [?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:53:47.279832" elapsed="0.058888"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:47.339046" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:53:47.338799" elapsed="0.000301"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:47.338782" elapsed="0.000341"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T00:53:47.279670" elapsed="0.059477"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:53:47.344525" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:53:47.344418" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:47.344400" elapsed="0.000192"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:53:47.345701" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:53:47.345597" elapsed="0.000148"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:47.345579" elapsed="0.000229"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:53:47.346191" level="INFO">${karaf_connection_index} = 84</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:53:47.345953" elapsed="0.000265"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:53:47.346547" level="INFO">${current_connection_index} = None</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:53:47.346375" elapsed="0.000198"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T00:53:47.379824" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "o "p "p "i "n "g "[C "O "D "L "2 "[C "1 "0 ". "3 "0 ". "1 "7 "0 ". "1 "3 "1 "[K"</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T00:53:47.347053" elapsed="0.032851"/>
</kw>
<msg time="2026-04-08T00:53:47.380005" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T00:53:47.380051" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "o "p "p "i "n "g "[C "O "D "L "2 "[C "1 "0 ". "3 "0 ". "1 "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:53:47.346727" elapsed="0.033362"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T00:53:47.382272" level="INFO">[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T00:53:47.380620" elapsed="0.001708"/>
</kw>
<msg time="2026-04-08T00:53:47.382423" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T00:53:47.382466" level="INFO">${message_wait} = [?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:53:47.380282" elapsed="0.002210"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:47.382785" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:53:47.382568" elapsed="0.000271"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:47.382548" elapsed="0.000314"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:53:47.383272" level="INFO">[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:53:47.383000" elapsed="0.000320"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:47.383593" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:53:47.383385" elapsed="0.000260"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:47.383368" elapsed="0.000299"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T00:53:47.383699" elapsed="0.000028"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:53:47.384832" elapsed="0.000423"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:53:47.385417" elapsed="0.000154"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:53:47.385716" elapsed="0.000100"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:53:47.384477" elapsed="0.001391"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T00:53:47.383963" elapsed="0.001951"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T00:53:47.345298" elapsed="0.040710"/>
</kw>
<msg time="2026-04-08T00:53:47.386098" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:53:47.386141" level="INFO">${message} = [?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:53:47.344740" elapsed="0.041446"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T00:53:47.386369" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-08T00:53:47.386265" elapsed="0.000162"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:47.386247" elapsed="0.000203"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 2,
close the previous connection. In any case create a new connection
to karaf console for 2, set correct prompt set and login to karaf console.
Store connection index for 2 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:47.386834" elapsed="0.000024"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:47.387214" elapsed="0.000031"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T00:53:47.387292" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T00:53:47.344063" elapsed="0.043334"/>
</kw>
<msg time="2026-04-08T00:53:47.387533" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:53:47.387577" level="INFO">${output} = [?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:53:47.339433" elapsed="0.048172"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:47.387929" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:53:47.387682" elapsed="0.000300"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:47.387665" elapsed="0.000341"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T00:53:47.339295" elapsed="0.048734"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:53:47.393387" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:53:47.393278" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:47.393259" elapsed="0.000196"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:53:47.394532" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:53:47.394426" elapsed="0.000150"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:47.394408" elapsed="0.000190"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:53:47.394967" level="INFO">${karaf_connection_index} = 86</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:53:47.394741" elapsed="0.000252"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:53:47.395342" level="INFO">${current_connection_index} = None</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:53:47.395149" elapsed="0.000219"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T00:53:47.426706" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "o "p "p "i "n "g "[C "O "D "L "2 "[C "1 "0 ". "3 "0 ". "1 "7 "0 ". "1 "3 "1 "[K"</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T00:53:47.395854" elapsed="0.031029"/>
</kw>
<msg time="2026-04-08T00:53:47.427067" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T00:53:47.427115" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "o "p "p "i "n "g "[C "O "D "L "2 "[C "1 "0 ". "3 "0 ". "1 "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:53:47.395525" elapsed="0.031626"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T00:53:47.431940" level="INFO">[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T00:53:47.427940" elapsed="0.004060"/>
</kw>
<msg time="2026-04-08T00:53:47.432096" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T00:53:47.432145" level="INFO">${message_wait} = [?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:53:47.427451" elapsed="0.004738"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:47.432555" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:53:47.432294" elapsed="0.000317"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:47.432263" elapsed="0.000376"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:53:47.433049" level="INFO">[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:53:47.432784" elapsed="0.000315"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:47.433424" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:53:47.433205" elapsed="0.000272"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:47.433147" elapsed="0.000354"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T00:53:47.433537" elapsed="0.000042"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:53:47.434821" elapsed="0.000423"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:53:47.435411" elapsed="0.000172"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:53:47.435732" elapsed="0.000108"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:53:47.434424" elapsed="0.001470"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T00:53:47.433863" elapsed="0.002077"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T00:53:47.394110" elapsed="0.042015"/>
</kw>
<msg time="2026-04-08T00:53:47.436245" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:53:47.436289" level="INFO">${message} = [?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:53:47.393605" elapsed="0.042712"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T00:53:47.436503" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-08T00:53:47.436397" elapsed="0.000165"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:47.436379" elapsed="0.000207"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 3,
close the previous connection. In any case create a new connection
to karaf console for 3, set correct prompt set and login to karaf console.
Store connection index for 3 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:47.436991" elapsed="0.000024"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:47.437360" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T00:53:47.437432" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T00:53:47.392886" elapsed="0.044654"/>
</kw>
<msg time="2026-04-08T00:53:47.437637" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:53:47.437680" level="INFO">${output} = [?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:53:47.388345" elapsed="0.049363"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:47.438036" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:53:47.437787" elapsed="0.000301"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:47.437770" elapsed="0.000341"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T00:53:47.388201" elapsed="0.049934"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-08T00:53:47.279500" elapsed="0.158689"/>
</for>
<arg>${msg}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-08T00:53:47.275418" elapsed="0.162833"/>
</kw>
<kw name="Stop_Members_From_List_Or_All" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:53:47.439859" level="INFO">${return_list_reference} = [2]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:53:47.439485" elapsed="0.000400"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:53:47.440361" level="INFO">${return_list_copy} = [2]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:53:47.440042" elapsed="0.000344"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:53:47.440430" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:53:47.440581" level="INFO">${stop_index_list} = [2]</msg>
<var>${stop_index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:53:47.439065" elapsed="0.001539"/>
</kw>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:53:47.441814" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:53:47.441190" elapsed="0.000651"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:53:47.442324" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:53:47.442000" elapsed="0.000350"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:53:47.442395" elapsed="0.000027"/>
</return>
<msg time="2026-04-08T00:53:47.442545" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${original_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:53:47.440804" elapsed="0.001765"/>
</kw>
<kw name="Run_Bash_Command_On_List_Or_All" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:53:47.444024" level="INFO">${return_list_reference} = [2]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:53:47.443662" elapsed="0.000388"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:53:47.444539" level="INFO">${return_list_copy} = [2]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:53:47.444246" elapsed="0.000319"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:53:47.444609" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:53:47.444797" level="INFO">${index_list} = [2]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:53:47.443299" elapsed="0.001523"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:53:47.445887" level="INFO">${member_ip} = 10.30.170.131</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:53:47.445618" elapsed="0.000295"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:53:47.446693" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

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

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T00:53:47.450543" elapsed="0.000322"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:53:47.452221" level="INFO">Attempting to execute command "/tmp/karaf-0.23.1/bin/stop" on remote system "10.30.170.131" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:53:47.451039" elapsed="0.001251"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:53:47.453315" level="INFO">${conn_id} = 180</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:53:47.452467" elapsed="0.000875"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T00:53:47.455183" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T00:53:47.455486" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T00:53:47.454424" elapsed="0.001175"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:53:47.455915" elapsed="0.000669"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T00:53:47.457966" level="INFO">Logging into '10.30.170.131:22' as 'jenkins'.</msg>
<msg time="2026-04-08T00:53:47.766734" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 00:53:35 UTC 2026

  System load:  0.22               Processes:             122
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 8%                 IPv4 address for ens3: 10.30.170.131
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 00:53:35 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-0-builder-1 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T00:53:47.457645" elapsed="0.309228"/>
</kw>
<msg time="2026-04-08T00:53:47.767001" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:53:47.456911" elapsed="0.310212"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T00:53:47.453622" elapsed="0.313720"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T00:53:47.768012" level="INFO">Executing command '/tmp/karaf-0.23.1/bin/stop'.</msg>
<msg time="2026-04-08T00:53:48.123818" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-08T00:53:48.123993" level="INFO">${stdout} = </msg>
<msg time="2026-04-08T00:53:48.124038" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T00:53:47.767623" elapsed="0.356437"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:53:48.124496" elapsed="0.000287"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:53:48.125701" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:53:48.125077" elapsed="0.000669"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:53:48.126073" elapsed="0.000020"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:53:48.125858" elapsed="0.000360"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:48.125829" elapsed="0.000418"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T00:53:48.126473" elapsed="0.000033"/>
</return>
<status status="PASS" start="2026-04-08T00:53:48.126304" elapsed="0.000303"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:48.126288" elapsed="0.000346"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:53:48.126669" elapsed="0.000015"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:53:48.129799" elapsed="0.000775"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:53:48.130895" elapsed="0.000513"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:53:48.131717" elapsed="0.000291"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:53:48.127010" elapsed="0.005170"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T00:53:47.448659" elapsed="0.683620"/>
</kw>
<msg time="2026-04-08T00:53:48.132335" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:53:47.447999" elapsed="0.684394"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-08T00:53:47.447483" elapsed="0.684991"/>
</kw>
<msg time="2026-04-08T00:53:48.132515" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:53:47.446969" elapsed="0.685591"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:53:48.135334" elapsed="0.000308"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:53:48.135803" elapsed="0.000142"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:53:48.136089" elapsed="0.000118"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:53:48.132848" elapsed="0.003411"/>
</kw>
<msg time="2026-04-08T00:53:48.136351" level="INFO">${output} = </msg>
<var>${output}</var>
<arg>Utils.Run_Command_On_Controller</arg>
<arg>${member_ip}</arg>
<arg>${command}</arg>
<doc>Store current connection index, run keyword returning its result, restore connection in teardown.
Note that in order to avoid "got positional argument after named arguments", it is safer to use positional (not named) arguments on call.</doc>
<status status="PASS" start="2026-04-08T00:53:47.446131" elapsed="0.690245"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:53:48.136798" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:53:48.136552" elapsed="0.000286"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-08T00:53:48.136879" elapsed="0.000028"/>
</return>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-08T00:53:47.445206" elapsed="0.691797"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T00:53:47.445012" elapsed="0.692028"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-08T00:53:47.444878" elapsed="0.692201"/>
</for>
<arg>command=${NODE_STOP_COMMAND}</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Cycle through indices (or all), run command on each.</doc>
<status status="PASS" start="2026-04-08T00:53:47.442769" elapsed="0.694369"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:53:48.137622" level="INFO">${updated_index_list} = [1, 2, 3]</msg>
<var>${updated_index_list}</var>
<arg>@{index_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:53:48.137313" elapsed="0.000335"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${updated_index_list}</arg>
<arg>@{stop_index_list}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:53:48.137799" elapsed="0.000223"/>
</kw>
<if>
<branch type="IF" condition="not ${confirm}">
<return>
<value>${updated_index_list}</value>
<status status="NOT RUN" start="2026-04-08T00:53:48.138332" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:53:48.138093" elapsed="0.000284"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:48.138075" elapsed="0.000324"/>
</if>
<for flavor="IN">
<iter>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:53:48.140579" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:53:48.140281" elapsed="0.000325"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:53:48.141532" level="INFO">${member_ip} = 10.30.170.131</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:53:48.141220" elapsed="0.000339"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:53:48.142334" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

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

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T00:53:48.146931" elapsed="0.000297"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:53:48.147813" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.170.131" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:53:48.147435" elapsed="0.000424"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:53:48.148453" level="INFO">${conn_id} = 183</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:53:48.148071" elapsed="0.000408"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T00:53:48.149473" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T00:53:48.149547" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T00:53:48.149141" elapsed="0.000430"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:53:48.149725" elapsed="0.000313"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T00:53:48.150881" level="INFO">Logging into '10.30.170.131:22' as 'jenkins'.</msg>
<msg time="2026-04-08T00:53:48.490474" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 00:53:35 UTC 2026

  System load:  0.22               Processes:             122
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 8%                 IPv4 address for ens3: 10.30.170.131
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 00:53:47 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-0-builder-1 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T00:53:48.150571" elapsed="0.340033"/>
</kw>
<msg time="2026-04-08T00:53:48.490678" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:53:48.150219" elapsed="0.340542"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T00:53:48.148753" elapsed="0.342115"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T00:53:48.491470" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-08T00:53:48.513724" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-08T00:53:48.513969" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-08T00:53:48.514066" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T00:53:48.491214" elapsed="0.022903"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:53:48.514652" elapsed="0.000476"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:53:48.516364" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:53:48.515704" elapsed="0.000753"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:53:48.517061" elapsed="0.000040"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:53:48.516764" elapsed="0.000442"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:48.516709" elapsed="0.000552"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T00:53:48.517868" elapsed="0.000065"/>
</return>
<status status="PASS" start="2026-04-08T00:53:48.517516" elapsed="0.000492"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:48.517476" elapsed="0.000585"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:53:48.518304" elapsed="0.000071"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:53:48.523363" elapsed="0.000445"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:53:48.524033" elapsed="0.000269"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:53:48.524508" elapsed="0.000137"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:53:48.519344" elapsed="0.005373"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T00:53:48.145311" elapsed="0.379732"/>
</kw>
<msg time="2026-04-08T00:53:48.525343" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:53:48.143747" elapsed="0.381762"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-08T00:53:48.143107" elapsed="0.382705"/>
</kw>
<msg time="2026-04-08T00:53:48.525902" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:53:48.142611" elapsed="0.383359"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:53:48.529679" elapsed="0.000363"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:53:48.530230" elapsed="0.000149"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:53:48.530524" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:53:48.526397" elapsed="0.004276"/>
</kw>
<msg time="2026-04-08T00:53:48.530767" level="INFO">${output} = 1</msg>
<var>${output}</var>
<arg>Utils.Run_Command_On_Controller</arg>
<arg>${member_ip}</arg>
<arg>${command}</arg>
<doc>Store current connection index, run keyword returning its result, restore connection in teardown.
Note that in order to avoid "got positional argument after named arguments", it is safer to use positional (not named) arguments on call.</doc>
<status status="PASS" start="2026-04-08T00:53:48.141774" elapsed="0.389018"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:53:48.531231" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:53:48.530969" elapsed="0.000306"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-08T00:53:48.531317" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:53:48.531470" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-08T00:53:48.140802" elapsed="0.390692"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-08T00:53:48.531541" elapsed="0.000025"/>
</return>
<msg time="2026-04-08T00:53:48.531684" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-08T00:53:48.139690" elapsed="0.392018"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-08T00:53:48.532351" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-08T00:53:48.531865" elapsed="0.000568">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-08T00:53:48.139301" elapsed="0.393253">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:53:50.536291" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:53:50.535480" elapsed="0.000881"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:53:50.538049" level="INFO">${member_ip} = 10.30.170.131</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:53:50.537613" elapsed="0.000475"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:53:50.539648" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

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

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T00:53:50.549424" elapsed="0.000339"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:53:50.550405" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.170.131" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:53:50.549976" elapsed="0.000477"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:53:50.551059" level="INFO">${conn_id} = 186</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:53:50.550672" elapsed="0.000413"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T00:53:50.552261" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T00:53:50.552356" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T00:53:50.551842" elapsed="0.000539"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:53:50.552547" elapsed="0.000396"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T00:53:50.553890" level="INFO">Logging into '10.30.170.131:22' as 'jenkins'.</msg>
<msg time="2026-04-08T00:53:50.889870" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 00:53:35 UTC 2026

  System load:  0.22               Processes:             122
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 8%                 IPv4 address for ens3: 10.30.170.131
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 00:53:48 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-0-builder-1 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T00:53:50.553569" elapsed="0.336460"/>
</kw>
<msg time="2026-04-08T00:53:50.890113" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:53:50.553155" elapsed="0.337087"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T00:53:50.551391" elapsed="0.338983"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T00:53:50.890976" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-08T00:53:50.913385" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-08T00:53:50.913666" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-08T00:53:50.913770" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T00:53:50.890722" elapsed="0.023101"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:53:50.914385" elapsed="0.000488"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:53:50.916121" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:53:50.915473" elapsed="0.000780"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:53:50.916877" elapsed="0.000038"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:53:50.916567" elapsed="0.000422"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:50.916510" elapsed="0.000530"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T00:53:50.917585" elapsed="0.000087"/>
</return>
<status status="PASS" start="2026-04-08T00:53:50.917332" elapsed="0.000420"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:50.917289" elapsed="0.000518"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:53:50.918012" elapsed="0.000067"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:53:50.923281" elapsed="0.000334"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:53:50.923783" elapsed="0.000160"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:53:50.924154" elapsed="0.000122"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:53:50.919093" elapsed="0.005237"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T00:53:50.547133" elapsed="0.377432"/>
</kw>
<msg time="2026-04-08T00:53:50.924662" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:53:50.544941" elapsed="0.379829"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-08T00:53:50.542075" elapsed="0.382910"/>
</kw>
<msg time="2026-04-08T00:53:50.925028" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:53:50.541332" elapsed="0.383744"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:53:50.927749" elapsed="0.000342"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:53:50.928274" elapsed="0.000149"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:53:50.928572" elapsed="0.000096"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:53:50.925394" elapsed="0.003326"/>
</kw>
<msg time="2026-04-08T00:53:50.928811" level="INFO">${output} = 1</msg>
<var>${output}</var>
<arg>Utils.Run_Command_On_Controller</arg>
<arg>${member_ip}</arg>
<arg>${command}</arg>
<doc>Store current connection index, run keyword returning its result, restore connection in teardown.
Note that in order to avoid "got positional argument after named arguments", it is safer to use positional (not named) arguments on call.</doc>
<status status="PASS" start="2026-04-08T00:53:50.538417" elapsed="0.390418"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:53:50.929277" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:53:50.929010" elapsed="0.000311"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-08T00:53:50.929363" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:53:50.929514" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-08T00:53:50.536813" elapsed="0.392726"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-08T00:53:50.929585" elapsed="0.000026"/>
</return>
<msg time="2026-04-08T00:53:50.929756" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-08T00:53:50.534595" elapsed="0.395186"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-08T00:53:50.930402" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-08T00:53:50.929937" elapsed="0.000540">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-08T00:53:50.533499" elapsed="0.397090">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:53:52.934304" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:53:52.933503" elapsed="0.000870"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:53:52.936389" level="INFO">${member_ip} = 10.30.170.131</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:53:52.935751" elapsed="0.000698"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:53:52.938748" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

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

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T00:53:52.944426" elapsed="0.000357"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:53:52.945500" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.170.131" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:53:52.945019" elapsed="0.000532"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:53:52.946181" level="INFO">${conn_id} = 189</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:53:52.945788" elapsed="0.000421"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T00:53:52.947215" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T00:53:52.947292" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T00:53:52.946913" elapsed="0.000403"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:53:52.947471" elapsed="0.000318"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T00:53:52.948704" level="INFO">Logging into '10.30.170.131:22' as 'jenkins'.</msg>
<msg time="2026-04-08T00:53:53.285467" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 00:53:35 UTC 2026

  System load:  0.22               Processes:             122
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 8%                 IPv4 address for ens3: 10.30.170.131
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 00:53:50 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-0-builder-1 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T00:53:52.948385" elapsed="0.337246"/>
</kw>
<msg time="2026-04-08T00:53:53.285719" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:53:52.947953" elapsed="0.337865"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T00:53:52.946519" elapsed="0.339473"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T00:53:53.286663" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-08T00:53:53.308987" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-08T00:53:53.309264" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-08T00:53:53.309364" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T00:53:53.286384" elapsed="0.023031"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:53:53.310014" elapsed="0.000515"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:53:53.311817" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:53:53.311122" elapsed="0.000789"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:53:53.312610" elapsed="0.000038"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:53:53.312303" elapsed="0.000419"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:53.312242" elapsed="0.000530"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T00:53:53.313339" elapsed="0.000060"/>
</return>
<status status="PASS" start="2026-04-08T00:53:53.313061" elapsed="0.000412"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:53.313021" elapsed="0.000504"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:53:53.313766" elapsed="0.000077"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:53:53.319449" elapsed="0.000327"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:53:53.319942" elapsed="0.000156"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:53:53.320262" elapsed="0.000098"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:53:53.314924" elapsed="0.005488"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T00:53:52.942532" elapsed="0.378163"/>
</kw>
<msg time="2026-04-08T00:53:53.320863" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:53:52.940613" elapsed="0.380384"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-08T00:53:52.939613" elapsed="0.381667"/>
</kw>
<msg time="2026-04-08T00:53:53.321325" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:53:52.939065" elapsed="0.382309"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:53:53.324060" elapsed="0.000363"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:53:53.324586" elapsed="0.000144"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:53:53.324875" elapsed="0.000096"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:53:53.321665" elapsed="0.003357"/>
</kw>
<msg time="2026-04-08T00:53:53.325113" level="INFO">${output} = 1</msg>
<var>${output}</var>
<arg>Utils.Run_Command_On_Controller</arg>
<arg>${member_ip}</arg>
<arg>${command}</arg>
<doc>Store current connection index, run keyword returning its result, restore connection in teardown.
Note that in order to avoid "got positional argument after named arguments", it is safer to use positional (not named) arguments on call.</doc>
<status status="PASS" start="2026-04-08T00:53:52.936924" elapsed="0.388214"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:53:53.325581" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:53:53.325336" elapsed="0.000289"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-08T00:53:53.325666" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:53:53.325813" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-08T00:53:52.934818" elapsed="0.391020"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-08T00:53:53.325884" elapsed="0.000026"/>
</return>
<msg time="2026-04-08T00:53:53.326062" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-08T00:53:52.932539" elapsed="0.393548"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-08T00:53:53.326647" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-08T00:53:53.326254" elapsed="0.000468">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-08T00:53:52.931368" elapsed="0.395467">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:53:55.330416" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:53:55.329651" elapsed="0.000833"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:53:55.332487" level="INFO">${member_ip} = 10.30.170.131</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:53:55.331856" elapsed="0.000692"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:53:55.334417" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

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

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T00:53:55.341641" elapsed="0.000261"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:53:55.342551" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.170.131" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:53:55.342128" elapsed="0.000472"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:53:55.343290" level="INFO">${conn_id} = 192</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:53:55.342896" elapsed="0.000421"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T00:53:55.344307" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T00:53:55.344384" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T00:53:55.344007" elapsed="0.000401"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:53:55.344565" elapsed="0.000322"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T00:53:55.345780" level="INFO">Logging into '10.30.170.131:22' as 'jenkins'.</msg>
<msg time="2026-04-08T00:53:55.678355" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 00:53:35 UTC 2026

  System load:  0.22               Processes:             122
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 8%                 IPv4 address for ens3: 10.30.170.131
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 00:53:53 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-0-builder-1 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T00:53:55.345461" elapsed="0.333058"/>
</kw>
<msg time="2026-04-08T00:53:55.678607" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:53:55.345085" elapsed="0.333619"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T00:53:55.343611" elapsed="0.335212"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T00:53:55.679502" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-08T00:53:55.701980" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-08T00:53:55.702138" level="INFO">${stdout} = 0</msg>
<msg time="2026-04-08T00:53:55.702225" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T00:53:55.679227" elapsed="0.023031"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:53:55.702596" elapsed="0.000314"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:53:55.703732" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:53:55.703323" elapsed="0.000469"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:53:55.704241" elapsed="0.000024"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:53:55.704017" elapsed="0.000294"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:55.703979" elapsed="0.000363"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T00:53:55.704688" elapsed="0.000038"/>
</return>
<status status="PASS" start="2026-04-08T00:53:55.704531" elapsed="0.000242"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:55.704504" elapsed="0.000302"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:53:55.704958" elapsed="0.000048"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:53:55.711047" elapsed="0.000357"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:53:55.711572" elapsed="0.000158"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:53:55.711877" elapsed="0.000098"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:53:55.705708" elapsed="0.006320"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T00:53:55.339512" elapsed="0.372859"/>
</kw>
<msg time="2026-04-08T00:53:55.712483" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:53:55.337606" elapsed="0.374998"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-08T00:53:55.336312" elapsed="0.376533"/>
</kw>
<msg time="2026-04-08T00:53:55.712888" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:53:55.335044" elapsed="0.377892"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:53:55.715654" elapsed="0.000344"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:53:55.716188" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:53:55.716480" elapsed="0.000096"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:53:55.713239" elapsed="0.003388"/>
</kw>
<msg time="2026-04-08T00:53:55.716717" level="INFO">${output} = 0</msg>
<var>${output}</var>
<arg>Utils.Run_Command_On_Controller</arg>
<arg>${member_ip}</arg>
<arg>${command}</arg>
<doc>Store current connection index, run keyword returning its result, restore connection in teardown.
Note that in order to avoid "got positional argument after named arguments", it is safer to use positional (not named) arguments on call.</doc>
<status status="PASS" start="2026-04-08T00:53:55.333074" elapsed="0.383668"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:53:55.717181" level="INFO">0</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:53:55.716919" elapsed="0.000308"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-08T00:53:55.717269" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:53:55.717454" level="INFO">${count} = 0</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-08T00:53:55.330928" elapsed="0.386556"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-08T00:53:55.717530" elapsed="0.000027"/>
</return>
<msg time="2026-04-08T00:53:55.717672" level="INFO">${count} = 0</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-08T00:53:55.328759" elapsed="0.388937"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="PASS" start="2026-04-08T00:53:55.717846" elapsed="0.000363"/>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="PASS" start="2026-04-08T00:53:55.327668" elapsed="0.390603"/>
</kw>
<arg>${timeout}</arg>
<arg>2s</arg>
<arg>Verify_Karaf_Is_Not_Running_On_Member</arg>
<arg>member_index=${index}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-08T00:53:48.138730" elapsed="7.579585"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T00:53:48.138587" elapsed="7.579765"/>
</iter>
<var>${index}</var>
<value>@{stop_index_list}</value>
<status status="PASS" start="2026-04-08T00:53:48.138443" elapsed="7.579942"/>
</for>
<kw name="Run_Bash_Command_On_List_Or_All" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:53:55.721453" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:53:55.721029" elapsed="0.000457"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:53:55.721953" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:53:55.721650" elapsed="0.000328"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:53:55.722022" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:53:55.722189" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:53:55.720655" elapsed="0.001560"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:53:55.723245" level="INFO">${member_ip} = 10.30.170.48</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:53:55.722964" elapsed="0.000307"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:53:55.724011" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

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

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T00:53:55.728024" elapsed="0.000544"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:53:55.729998" level="INFO">Attempting to execute command "netstat -pnatu | grep 2550" on remote system "10.30.170.48" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:53:55.728748" elapsed="0.001355"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:53:55.731228" level="INFO">${conn_id} = 195</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:53:55.730305" elapsed="0.000951"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T00:53:55.733064" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T00:53:55.733461" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T00:53:55.732410" elapsed="0.001191"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:53:55.733957" elapsed="0.000890"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T00:53:55.736599" level="INFO">Logging into '10.30.170.48:22' as 'jenkins'.</msg>
<msg time="2026-04-08T00:53:56.046250" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 00:53:34 UTC 2026

  System load:  0.61               Processes:             123
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 6%                 IPv4 address for ens3: 10.30.170.48
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 00:53:34 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-0-builder-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T00:53:55.736276" elapsed="0.310089"/>
</kw>
<msg time="2026-04-08T00:53:56.046499" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:53:55.735501" elapsed="0.311109"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T00:53:55.731543" elapsed="0.315242"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T00:53:56.047455" level="INFO">Executing command 'netstat -pnatu | grep 2550'.</msg>
<msg time="2026-04-08T00:53:56.060270" level="INFO">Command exited with return code 1.</msg>
<msg time="2026-04-08T00:53:56.060583" level="INFO">${stdout} = </msg>
<msg time="2026-04-08T00:53:56.060682" level="INFO">${stderr} = bash: line 1: netstat: command not found</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T00:53:56.047049" elapsed="0.013686"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:53:56.061305" elapsed="0.000465"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:53:56.063716" level="INFO">bash: line 1: netstat: command not found</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:53:56.062283" elapsed="0.001584"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:53:56.064571" elapsed="0.000038"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:53:56.064086" elapsed="0.000786"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:56.064035" elapsed="0.000899"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T00:53:56.065500" elapsed="0.000061"/>
</return>
<status status="PASS" start="2026-04-08T00:53:56.065059" elapsed="0.000765"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:56.065024" elapsed="0.000908"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:53:56.066014" elapsed="0.000033"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:53:56.070588" elapsed="0.001234"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:53:56.072433" elapsed="0.000769"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:53:56.073689" elapsed="0.000534"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:53:56.066622" elapsed="0.007840"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T00:53:55.726094" elapsed="0.348466"/>
</kw>
<msg time="2026-04-08T00:53:56.074616" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:53:55.725383" elapsed="0.349286"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-08T00:53:55.724849" elapsed="0.349900"/>
</kw>
<msg time="2026-04-08T00:53:56.074789" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:53:55.724355" elapsed="0.350532"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:53:56.077526" elapsed="0.000305"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:53:56.078020" elapsed="0.000169"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:53:56.078338" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:53:56.075209" elapsed="0.003276"/>
</kw>
<msg time="2026-04-08T00:53:56.078576" level="INFO">${output} = </msg>
<var>${output}</var>
<arg>Utils.Run_Command_On_Controller</arg>
<arg>${member_ip}</arg>
<arg>${command}</arg>
<doc>Store current connection index, run keyword returning its result, restore connection in teardown.
Note that in order to avoid "got positional argument after named arguments", it is safer to use positional (not named) arguments on call.</doc>
<status status="PASS" start="2026-04-08T00:53:55.723483" elapsed="0.355118"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:53:56.079022" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:53:56.078776" elapsed="0.000287"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-08T00:53:56.079103" elapsed="0.000029"/>
</return>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-08T00:53:55.722569" elapsed="0.356838"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T00:53:55.722400" elapsed="0.357045"/>
</iter>
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:53:56.080400" level="INFO">${member_ip} = 10.30.170.131</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:53:56.080117" elapsed="0.000309"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:53:56.081187" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

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

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T00:53:56.085192" elapsed="0.000336"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:53:56.086951" level="INFO">Attempting to execute command "netstat -pnatu | grep 2550" on remote system "10.30.170.131" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:53:56.085728" elapsed="0.001293"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:53:56.088125" level="INFO">${conn_id} = 198</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:53:56.087228" elapsed="0.000924"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T00:53:56.090012" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T00:53:56.090378" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T00:53:56.089329" elapsed="0.001184"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:53:56.091031" elapsed="0.000770"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T00:53:56.093641" level="INFO">Logging into '10.30.170.131:22' as 'jenkins'.</msg>
<msg time="2026-04-08T00:53:56.416311" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 00:53:35 UTC 2026

  System load:  0.22               Processes:             122
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 8%                 IPv4 address for ens3: 10.30.170.131
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 00:53:55 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-0-builder-1 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T00:53:56.093321" elapsed="0.323227"/>
</kw>
<msg time="2026-04-08T00:53:56.416699" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:53:56.092360" elapsed="0.324481"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T00:53:56.088462" elapsed="0.328575"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T00:53:56.417799" level="INFO">Executing command 'netstat -pnatu | grep 2550'.</msg>
<msg time="2026-04-08T00:53:56.430413" level="INFO">Command exited with return code 1.</msg>
<msg time="2026-04-08T00:53:56.430677" level="INFO">${stdout} = </msg>
<msg time="2026-04-08T00:53:56.430744" level="INFO">${stderr} = bash: line 1: netstat: command not found</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T00:53:56.417359" elapsed="0.013417"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:53:56.431204" elapsed="0.000367"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:53:56.432820" level="INFO">bash: line 1: netstat: command not found</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:53:56.431847" elapsed="0.001069"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:53:56.433389" elapsed="0.000026"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:53:56.433062" elapsed="0.000520"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:56.433027" elapsed="0.000592"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T00:53:56.433965" elapsed="0.000042"/>
</return>
<status status="PASS" start="2026-04-08T00:53:56.433699" elapsed="0.000495"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:56.433676" elapsed="0.000559"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:53:56.434284" elapsed="0.000021"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:53:56.438798" elapsed="0.001249"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:53:56.440694" elapsed="0.000834"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:53:56.442045" elapsed="0.000592"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:53:56.434834" elapsed="0.008062"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T00:53:56.083263" elapsed="0.359773"/>
</kw>
<msg time="2026-04-08T00:53:56.443117" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:53:56.082549" elapsed="0.360669"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-08T00:53:56.081996" elapsed="0.361340"/>
</kw>
<msg time="2026-04-08T00:53:56.443390" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:53:56.081471" elapsed="0.361967"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:53:56.446108" elapsed="0.000364"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:53:56.446637" elapsed="0.000144"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:53:56.446928" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:53:56.443731" elapsed="0.003344"/>
</kw>
<msg time="2026-04-08T00:53:56.447191" level="INFO">${output} = </msg>
<var>${output}</var>
<arg>Utils.Run_Command_On_Controller</arg>
<arg>${member_ip}</arg>
<arg>${command}</arg>
<doc>Store current connection index, run keyword returning its result, restore connection in teardown.
Note that in order to avoid "got positional argument after named arguments", it is safer to use positional (not named) arguments on call.</doc>
<status status="PASS" start="2026-04-08T00:53:56.080641" elapsed="0.366580"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:53:56.447677" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:53:56.447404" elapsed="0.000318"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-08T00:53:56.447771" elapsed="0.000029"/>
</return>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-08T00:53:56.079717" elapsed="0.368180"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T00:53:56.079542" elapsed="0.368393"/>
</iter>
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:53:56.449034" level="INFO">${member_ip} = 10.30.171.110</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:53:56.448755" elapsed="0.000362"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:53:56.449941" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

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

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T00:53:56.454752" elapsed="0.000342"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:53:56.456584" level="INFO">Attempting to execute command "netstat -pnatu | grep 2550" on remote system "10.30.171.110" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:53:56.455301" elapsed="0.001356"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:53:56.457797" level="INFO">${conn_id} = 201</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:53:56.456843" elapsed="0.000982"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T00:53:56.459767" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T00:53:56.460124" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T00:53:56.459064" elapsed="0.001215"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:53:56.460677" elapsed="0.000761"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T00:53:56.463226" level="INFO">Logging into '10.30.171.110:22' as 'jenkins'.</msg>
<msg time="2026-04-08T00:53:56.788207" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 00:53:35 UTC 2026

  System load:  0.21               Processes:             123
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 8%                 IPv4 address for ens3: 10.30.171.110
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 00:53:36 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T00:53:56.462886" elapsed="0.325485"/>
</kw>
<msg time="2026-04-08T00:53:56.788547" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:53:56.461805" elapsed="0.326867"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T00:53:56.458120" elapsed="0.330745"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T00:53:56.789630" level="INFO">Executing command 'netstat -pnatu | grep 2550'.</msg>
<msg time="2026-04-08T00:53:56.810534" level="INFO">Command exited with return code 1.</msg>
<msg time="2026-04-08T00:53:56.810899" level="INFO">${stdout} = </msg>
<msg time="2026-04-08T00:53:56.811001" level="INFO">${stderr} = bash: line 1: netstat: command not found</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T00:53:56.789194" elapsed="0.021859"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:53:56.811638" elapsed="0.000478"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:53:56.814032" level="INFO">bash: line 1: netstat: command not found</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:53:56.812584" elapsed="0.001632"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:53:56.814924" elapsed="0.000038"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:53:56.814449" elapsed="0.000807"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:56.814396" elapsed="0.000921"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T00:53:56.815951" elapsed="0.000066"/>
</return>
<status status="PASS" start="2026-04-08T00:53:56.815442" elapsed="0.000897"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:56.815407" elapsed="0.000999"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:53:56.816485" elapsed="0.000034"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:53:56.821366" elapsed="0.000936"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:53:56.822660" elapsed="0.000578"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:53:56.823595" elapsed="0.000329"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:53:56.817230" elapsed="0.006877"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T00:53:56.452496" elapsed="0.371724"/>
</kw>
<msg time="2026-04-08T00:53:56.824276" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:53:56.451628" elapsed="0.372702"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-08T00:53:56.450801" elapsed="0.373614"/>
</kw>
<msg time="2026-04-08T00:53:56.824456" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:53:56.450246" elapsed="0.374256"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:53:56.827175" elapsed="0.000312"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:53:56.827649" elapsed="0.000143"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:53:56.827939" elapsed="0.000101"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:53:56.824788" elapsed="0.003302"/>
</kw>
<msg time="2026-04-08T00:53:56.828197" level="INFO">${output} = </msg>
<var>${output}</var>
<arg>Utils.Run_Command_On_Controller</arg>
<arg>${member_ip}</arg>
<arg>${command}</arg>
<doc>Store current connection index, run keyword returning its result, restore connection in teardown.
Note that in order to avoid "got positional argument after named arguments", it is safer to use positional (not named) arguments on call.</doc>
<status status="PASS" start="2026-04-08T00:53:56.449369" elapsed="0.378855"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:53:56.828768" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:53:56.828515" elapsed="0.000294"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-08T00:53:56.828851" elapsed="0.000029"/>
</return>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-08T00:53:56.448316" elapsed="0.380659"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T00:53:56.448031" elapsed="0.380981"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-08T00:53:55.722269" elapsed="1.106778"/>
</for>
<arg>command=netstat -pnatu | grep 2550</arg>
<doc>Cycle through indices (or all), run command on each.</doc>
<status status="PASS" start="2026-04-08T00:53:55.718589" elapsed="1.110517"/>
</kw>
<return>
<value>${updated_index_list}</value>
<status status="PASS" start="2026-04-08T00:53:56.829146" elapsed="0.000043"/>
</return>
<msg time="2026-04-08T00:53:56.829324" level="INFO">${updated_index_list} = [1, 3]</msg>
<var>${updated_index_list}</var>
<arg>${index_list}</arg>
<arg>${original_index_list}</arg>
<arg>${confirm}</arg>
<doc>If the list is empty, stops all ODL instances. Otherwise stop members based on ${stop_index_list}
If ${confirm} is True, verify stopped instances are not there anymore.
The KW will return a list of available members: ${updated index_list}=${original_index_list}-${member_index_list}</doc>
<status status="PASS" start="2026-04-08T00:53:47.438556" elapsed="9.390794"/>
</kw>
<return>
<value>${updated_index_list}</value>
<status status="PASS" start="2026-04-08T00:53:56.829400" elapsed="0.000025"/>
</return>
<arg>${follower_node_2}</arg>
<doc>Convenience keyword that stops the specified member of the cluster.
The KW will return a list of available members: ${updated index_list}=${original_index_list}-${member}</doc>
<status status="PASS" start="2026-04-08T00:53:47.261737" elapsed="9.567785"/>
</kw>
<kw name="Start_Single_Member" owner="ClusterManagement">
<kw name="ClusterManagement__Build_List" owner="ClusterManagement">
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:53:56.832693" level="INFO">${member_int} = 2</msg>
<var>${member_int}</var>
<arg>${member}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:53:56.832385" elapsed="0.000334"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:53:56.833167" level="INFO">${index_list} = [2]</msg>
<var>${index_list}</var>
<arg>${member_int}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:53:56.832872" elapsed="0.000322"/>
</kw>
<return>
<value>${index_list}</value>
<status status="PASS" start="2026-04-08T00:53:56.833238" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:53:56.833388" level="INFO">${index_list} = [2]</msg>
<var>${index_list}</var>
<arg>${member}</arg>
<status status="PASS" start="2026-04-08T00:53:56.832008" elapsed="0.001404"/>
</kw>
<kw name="Return_Member_IP" owner="ClusterManagement">
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:53:56.834358" level="INFO">${member_int} = 2</msg>
<var>${member_int}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:53:56.833910" elapsed="0.000475"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:53:56.834895" level="INFO">${member_ip} = 10.30.170.131</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_int}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:53:56.834592" elapsed="0.000330"/>
</kw>
<return>
<value>${member_ip}</value>
<status status="PASS" start="2026-04-08T00:53:56.834969" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:53:56.835118" level="INFO">${member_ip} = 10.30.170.131</msg>
<var>${member_ip}</var>
<arg>${member}</arg>
<doc>Return the IP address of the member given the member_index.</doc>
<status status="PASS" start="2026-04-08T00:53:56.833598" elapsed="0.001544"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:53:56.837469" level="INFO">${msg} = Starting ODL2 10.30.170.131</msg>
<var>${msg}</var>
<arg>"${msg}" == "${EMPTY}"</arg>
<arg>Starting ODL${member} ${member_ip}</arg>
<arg>Starting ODL${member} ${member_ip}, ${msg}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:53:56.835323" elapsed="0.002173"/>
</kw>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:53:56.844073" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:53:56.843944" elapsed="0.000176"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:56.843925" elapsed="0.000218"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:53:56.845198" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:53:56.844799" elapsed="0.000427"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:53:56.845695" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:53:56.845387" elapsed="0.000335"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:53:56.845766" elapsed="0.000032"/>
</return>
<msg time="2026-04-08T00:53:56.845942" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:53:56.844389" elapsed="0.001578"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:53:56.851684" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:53:56.851569" elapsed="0.000161"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:56.851549" elapsed="0.000204"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:53:56.853221" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:53:56.853060" elapsed="0.000211"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:56.853036" elapsed="0.000257"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:53:56.853668" level="INFO">${karaf_connection_index} = 157</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:53:56.853444" elapsed="0.000250"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:53:56.854026" level="INFO">${current_connection_index} = None</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:53:56.853850" elapsed="0.000208"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T00:53:56.901269" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "O "D "L "2 "[C "1 "0 ". "3 "0 ". "1 "7 "0 ". "1 "3 "1 "[K"</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T00:53:56.854680" elapsed="0.046705"/>
</kw>
<msg time="2026-04-08T00:53:56.901518" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T00:53:56.901568" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "O "D "L "2 "[C "1 "0 ". "3 "0 ". "1 "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:53:56.854240" elapsed="0.047369"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T00:53:56.904594" level="INFO">[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T00:53:56.902264" elapsed="0.002390"/>
</kw>
<msg time="2026-04-08T00:53:56.904750" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T00:53:56.904793" level="INFO">${message_wait} = [?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:53:56.901839" elapsed="0.002980"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:56.905133" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:53:56.904902" elapsed="0.000302"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:56.904880" elapsed="0.000349"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:53:56.905623" level="INFO">[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:53:56.905369" elapsed="0.000302"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:56.906044" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:53:56.905827" elapsed="0.000272"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:56.905807" elapsed="0.000315"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T00:53:56.906169" elapsed="0.000036"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:53:56.907400" elapsed="0.000405"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:53:56.907969" elapsed="0.000161"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:53:56.908300" elapsed="0.000104"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:53:56.907012" elapsed="0.001445"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T00:53:56.906461" elapsed="0.002042"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T00:53:56.852609" elapsed="0.055990"/>
</kw>
<msg time="2026-04-08T00:53:56.908692" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:53:56.908735" level="INFO">${message} = [?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:53:56.851949" elapsed="0.056813"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T00:53:56.908944" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-08T00:53:56.908839" elapsed="0.000163"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:56.908822" elapsed="0.000204"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:56.909438" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:56.909775" elapsed="0.000023"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T00:53:56.909845" elapsed="0.000017"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T00:53:56.851217" elapsed="0.058736"/>
</kw>
<msg time="2026-04-08T00:53:56.910050" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:53:56.910094" level="INFO">${output} = [?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:53:56.846382" elapsed="0.063739"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:53:56.910463" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:53:56.910216" elapsed="0.000300"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:56.910197" elapsed="0.000342"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T00:53:56.846232" elapsed="0.064331"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:53:56.915943" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:53:56.915834" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:56.915816" elapsed="0.000195"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:53:56.917085" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:53:56.916980" elapsed="0.000150"/>
</branch>
<status status="PASS" start="2026-04-08T00:53:56.916963" elapsed="0.000188"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:53:56.917527" level="INFO">${karaf_connection_index} = 84</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:53:56.917308" elapsed="0.000245"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:53:56.917874" level="INFO">${current_connection_index} = None</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:53:56.917705" elapsed="0.000194"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T00:53:56.918601" level="FAIL">OSError: Socket is closed</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-08T00:53:56.918394" elapsed="0.000749">OSError: Socket is closed</status>
</kw>
<msg time="2026-04-08T00:53:56.919270" level="INFO">${status_write} = FAIL</msg>
<msg time="2026-04-08T00:53:56.919315" level="INFO">${message_write} = OSError: Socket is closed</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:53:56.918051" elapsed="0.001288"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T00:54:06.920458" level="FAIL">No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="FAIL" start="2026-04-08T00:53:56.919888" elapsed="10.001248">No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-08T00:54:06.921342" level="INFO">${status_wait} = FAIL</msg>
<msg time="2026-04-08T00:54:06.921392" level="INFO">${message_wait} = No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:53:56.919550" elapsed="10.001867"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T00:54:06.922308" level="FAIL">Failed to send the command: log:log "ROBOT MESSAGE: Starting ODL2 10.30.170.131"</msg>
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T00:54:06.921885" elapsed="0.000487">Failed to send the command: log:log "ROBOT MESSAGE: Starting ODL2 10.30.170.131"</status>
</kw>
<status status="FAIL" start="2026-04-08T00:54:06.921546" elapsed="0.000897">Failed to send the command: log:log "ROBOT MESSAGE: Starting ODL2 10.30.170.131"</status>
</branch>
<status status="FAIL" start="2026-04-08T00:54:06.921508" elapsed="0.000970">Failed to send the command: log:log "ROBOT MESSAGE: Starting ODL2 10.30.170.131"</status>
</if>
<kw name="Log" owner="BuiltIn">
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:06.922642" elapsed="0.000023"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:06.922872" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:54:06.922731" elapsed="0.000193"/>
</branch>
<status status="NOT RUN" start="2026-04-08T00:54:06.922712" elapsed="0.000244"/>
</if>
<return>
<value>${message_wait}</value>
<status status="NOT RUN" start="2026-04-08T00:54:06.922992" elapsed="0.000018"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:54:06.924304" elapsed="0.000444"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:54:06.924913" elapsed="0.000181"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:54:06.925264" elapsed="0.000112"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:54:06.923889" elapsed="0.001541"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T00:54:06.923316" elapsed="0.002160"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="FAIL" start="2026-04-08T00:53:56.916684" elapsed="10.008877">Failed to send the command: log:log "ROBOT MESSAGE: Starting ODL2 10.30.170.131"</status>
</kw>
<msg time="2026-04-08T00:54:06.925669" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:54:06.925716" level="INFO">${message} = Failed to send the command: log:log "ROBOT MESSAGE: Starting ODL2 10.30.170.131"</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:53:56.916177" elapsed="10.009564"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T00:54:06.925926" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:54:06.925818" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:06.925799" elapsed="0.000193"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:54:06.926821" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:54:06.926715" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:06.926696" elapsed="0.000191"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:54:06.927411" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T00:54:06.927038" elapsed="0.000511"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:54:06.927971" level="INFO">{1: 157, 2: 84, 3: 86}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:54:06.927707" elapsed="0.000309"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:54:06.928430" level="INFO">2</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:54:06.928182" elapsed="0.000292"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:54:06.928998" elapsed="0.000200"/>
</kw>
<msg time="2026-04-08T00:54:06.929296" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:54:06.929342" level="INFO">${old_connection_index} = 84</msg>
<var>${status}</var>
<var>${old_connection_index}</var>
<arg>Get From Dictionary</arg>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:54:06.928632" elapsed="0.000732"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='PASS'">
<kw name="Run Keywords" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${old_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:54:06.930273" elapsed="0.000143"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T00:54:06.931071" level="FAIL">OSError: Socket is closed</msg>
<arg>logout</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-08T00:54:06.930908" elapsed="0.000618">OSError: Socket is closed</status>
</kw>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:54:06.930582" elapsed="0.001008"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:54:06.932090" elapsed="0.000172"/>
</kw>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:54:06.931765" elapsed="0.000546"/>
</kw>
<arg>SSHLibrary.Switch_Connection</arg>
<arg>${old_connection_index}</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Executes all the given keywords in a sequence.</doc>
<status status="PASS" start="2026-04-08T00:54:06.929740" elapsed="0.002616"/>
</kw>
<status status="PASS" start="2026-04-08T00:54:06.929513" elapsed="0.002892"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:06.929422" elapsed="0.003008"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:54:06.933323" level="INFO">${ip_address} = 10.30.170.131</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:54:06.932949" elapsed="0.000401"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:54:06.933399" elapsed="0.000031"/>
</return>
<msg time="2026-04-08T00:54:06.933551" level="INFO">${odl_ip} = 10.30.170.131</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:54:06.932631" elapsed="0.000944"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${odl_ip}</arg>
<arg>port=${KARAF_SHELL_PORT}</arg>
<arg>prompt=${KARAF_PROMPT_LOGIN}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:54:06.933726" elapsed="0.000410"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:54:06.934437" level="INFO">index=206
host=10.30.170.131
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-08T00:54:06.934534" level="INFO">${karaf_connection_object} = index=206
host=10.30.170.131
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_er...</msg>
<var>${karaf_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T00:54:06.934317" elapsed="0.000243"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<arg>${karaf_connection_object.index}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:54:06.934707" elapsed="0.002200"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-08T00:54:06.937361" level="INFO">Logging into '10.30.170.131:8101' as 'karaf'.</msg>
<msg time="2026-04-08T00:54:06.938799" level="FAIL">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.131</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="FAIL" start="2026-04-08T00:54:06.937070" elapsed="0.002145">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.131</status>
</kw>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:54:06.942423" elapsed="0.000307"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:54:06.942917" elapsed="0.000143"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:54:06.943230" elapsed="0.000099"/>
</kw>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:54:06.940002" elapsed="0.003379"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T00:54:06.939489" elapsed="0.003938"/>
</kw>
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 2,
close the previous connection. In any case create a new connection
to karaf console for 2, set correct prompt set and login to karaf console.
Store connection index for 2 and restore the previous active connection.</doc>
<status status="FAIL" start="2026-04-08T00:54:06.926419" elapsed="0.017087">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.131</status>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:06.943831" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T00:54:06.943904" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="FAIL" start="2026-04-08T00:53:56.915492" elapsed="10.028511">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.131</status>
</kw>
<msg time="2026-04-08T00:54:06.944110" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:54:06.944168" level="INFO">${output} = NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.131</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:53:56.910827" elapsed="10.033367"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:06.944564" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:54:06.944311" elapsed="0.000307"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:06.944293" elapsed="0.000348"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T00:53:56.910689" elapsed="10.033977"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:54:06.949752" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:54:06.949645" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:06.949627" elapsed="0.000191"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:54:06.950899" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:54:06.950793" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:06.950775" elapsed="0.000190"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:54:06.951362" level="INFO">${karaf_connection_index} = 86</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:54:06.951104" elapsed="0.000285"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:54:06.951710" level="INFO">${current_connection_index} = None</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:54:06.951543" elapsed="0.000192"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T00:54:06.987013" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "O "D "L "2 "[C "1 "0 ". "3 "0 ". "1 "7 "0 ". "1 "3 "1 "[K"</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T00:54:06.952230" elapsed="0.034864"/>
</kw>
<msg time="2026-04-08T00:54:06.987214" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T00:54:06.987261" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "O "D "L "2 "[C "1 "0 ". "3 "0 ". "1 "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:54:06.951888" elapsed="0.035409"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T00:54:06.990626" level="INFO">[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T00:54:06.987802" elapsed="0.002882"/>
</kw>
<msg time="2026-04-08T00:54:06.990778" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T00:54:06.990821" level="INFO">${message_wait} = [?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:54:06.987463" elapsed="0.003384"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:06.991139" elapsed="0.000035"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:54:06.990921" elapsed="0.000288"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:06.990902" elapsed="0.000331"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:54:06.991620" level="INFO">[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:54:06.991372" elapsed="0.000296"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:06.991942" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:54:06.991732" elapsed="0.000262"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:06.991715" elapsed="0.000302"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T00:54:06.992049" elapsed="0.000028"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:54:06.993189" elapsed="0.000383"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:54:06.993733" elapsed="0.000148"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:54:06.994026" elapsed="0.000097"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:54:06.992808" elapsed="0.001395"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T00:54:06.992316" elapsed="0.001935"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T00:54:06.950497" elapsed="0.043851"/>
</kw>
<msg time="2026-04-08T00:54:06.994437" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:54:06.994479" level="INFO">${message} = [?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:54:06.949967" elapsed="0.044539"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T00:54:06.994733" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-08T00:54:06.994618" elapsed="0.000173"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:06.994599" elapsed="0.000216"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 3,
close the previous connection. In any case create a new connection
to karaf console for 3, set correct prompt set and login to karaf console.
Store connection index for 3 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:06.995215" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:06.995543" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T00:54:06.995613" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T00:54:06.949311" elapsed="0.046407"/>
</kw>
<msg time="2026-04-08T00:54:06.995810" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:54:06.995852" level="INFO">${output} = [?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:54:06.944939" elapsed="0.050940"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:06.996214" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:54:06.995953" elapsed="0.000315"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:06.995936" elapsed="0.000355"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T00:54:06.944799" elapsed="0.051515"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-08T00:53:56.846024" elapsed="10.150320"/>
</for>
<arg>${msg}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-08T00:53:56.841900" elapsed="10.154501"/>
</kw>
<kw name="Start_Members_From_List_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:54:07.003103" level="INFO">${base_command} = /tmp/karaf-0.23.1/bin/start</msg>
<var>${base_command}</var>
<arg>"""${karaf_home}""" != ""</arg>
<arg>${karaf_home}/bin/start</arg>
<arg>${NODE_START_COMMAND}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:54:07.002725" elapsed="0.000406"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:54:07.003675" level="INFO">${command} = /tmp/karaf-0.23.1/bin/start</msg>
<var>${command}</var>
<arg>"""${export_java_home}""" != ""</arg>
<arg>export JAVA_HOME="${export_java_home}"; ${base_command}</arg>
<arg>${base_command}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:54:07.003316" elapsed="0.000386"/>
</kw>
<kw name="Get Current Date" owner="DateTime">
<msg time="2026-04-08T00:54:07.004142" level="INFO">${epoch} = 1775609647.004068</msg>
<var>${epoch}</var>
<arg>time_zone=UTC</arg>
<arg>result_format=epoch</arg>
<arg>exclude_millis=False</arg>
<doc>Returns current local or UTC time with an optional increment.</doc>
<status status="PASS" start="2026-04-08T00:54:07.003878" elapsed="0.000308"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:54:07.004746" level="INFO">${gc_filepath} = /tmp/karaf-0.23.1/data/log/gc_1775609647.004068.log</msg>
<var>${gc_filepath}</var>
<arg>"""${karaf_home}""" != ""</arg>
<arg>${karaf_home}/data/log/gc_${epoch}.log</arg>
<arg>${GC_LOG_PATH}/gc_${epoch}.log</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:54:07.004352" elapsed="0.000429"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:54:07.005349" level="INFO">${gc_options} = -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:/tmp/karaf-0.23.1/data/log/gc_1775609647.004068.log</msg>
<var>${gc_options}</var>
<arg>"docker" not in """${node_start_command}"""</arg>
<arg>-XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:${gc_filepath}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:54:07.004948" elapsed="0.000427"/>
</kw>
<kw name="Run_Bash_Command_On_List_Or_All" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:54:07.006843" level="INFO">${return_list_reference} = [2]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:54:07.006476" elapsed="0.000394"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:54:07.007336" level="INFO">${return_list_copy} = [2]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:54:07.007029" elapsed="0.000333"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:54:07.007406" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:54:07.007557" level="INFO">${index_list} = [2]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:54:07.006096" elapsed="0.001486"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:54:07.008603" level="INFO">${member_ip} = 10.30.170.131</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:54:07.008343" elapsed="0.000286"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:54:07.009426" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

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

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T00:54:07.013535" elapsed="0.000334"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:54:07.015276" level="INFO">Attempting to execute command "/tmp/karaf-0.23.1/bin/start -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:/tmp/karaf-0.23.1/data/log/gc_1775609647.004068.log" on remote system "10.30.170.131" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:54:07.014044" elapsed="0.001301"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:54:07.016593" level="INFO">${conn_id} = 209</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:54:07.015525" elapsed="0.001095"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T00:54:07.018543" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T00:54:07.018894" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T00:54:07.017819" elapsed="0.001208"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:54:07.019397" elapsed="0.000725"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T00:54:07.021859" level="INFO">Logging into '10.30.170.131:22' as 'jenkins'.</msg>
<msg time="2026-04-08T00:54:07.441299" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 00:53:35 UTC 2026

  System load:  0.22               Processes:             122
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 8%                 IPv4 address for ens3: 10.30.170.131
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 00:53:56 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-0-builder-1 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T00:54:07.021542" elapsed="0.419893"/>
</kw>
<msg time="2026-04-08T00:54:07.441576" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:54:07.020534" elapsed="0.421162"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T00:54:07.016910" elapsed="0.424970"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T00:54:07.442585" level="INFO">Executing command '/tmp/karaf-0.23.1/bin/start -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:/tmp/karaf-0.23.1/data/log/gc_1775609647.004068.log'.</msg>
<msg time="2026-04-08T00:54:07.465579" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-08T00:54:07.465893" level="INFO">${stdout} = </msg>
<msg time="2026-04-08T00:54:07.465992" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T00:54:07.442173" elapsed="0.023869"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:54:07.466625" elapsed="0.000502"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:54:07.469059" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:54:07.467617" elapsed="0.001566"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:54:07.469866" elapsed="0.000036"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:54:07.469418" elapsed="0.000768"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:07.469366" elapsed="0.000883"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T00:54:07.470780" elapsed="0.000103"/>
</return>
<status status="PASS" start="2026-04-08T00:54:07.470377" elapsed="0.000842"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:07.470341" elapsed="0.000946"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:54:07.471367" elapsed="0.000034"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:54:07.477945" elapsed="0.001367"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:54:07.479814" elapsed="0.000923"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:54:07.481257" elapsed="0.000479"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:54:07.471937" elapsed="0.010110"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T00:54:07.011484" elapsed="0.470721"/>
</kw>
<msg time="2026-04-08T00:54:07.482308" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:54:07.010797" elapsed="0.471589"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-08T00:54:07.010272" elapsed="0.472269"/>
</kw>
<msg time="2026-04-08T00:54:07.482598" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:54:07.009755" elapsed="0.472907"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:54:07.485469" elapsed="0.000322"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:54:07.485954" elapsed="0.000142"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:54:07.486257" elapsed="0.000106"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:54:07.482960" elapsed="0.003456"/>
</kw>
<msg time="2026-04-08T00:54:07.486514" level="INFO">${output} = </msg>
<var>${output}</var>
<arg>Utils.Run_Command_On_Controller</arg>
<arg>${member_ip}</arg>
<arg>${command}</arg>
<doc>Store current connection index, run keyword returning its result, restore connection in teardown.
Note that in order to avoid "got positional argument after named arguments", it is safer to use positional (not named) arguments on call.</doc>
<status status="PASS" start="2026-04-08T00:54:07.008869" elapsed="0.477687"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:54:07.487127" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:54:07.486739" elapsed="0.000463"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-08T00:54:07.487246" elapsed="0.000030"/>
</return>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-08T00:54:07.007932" elapsed="0.479437"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T00:54:07.007762" elapsed="0.479644"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-08T00:54:07.007636" elapsed="0.479802"/>
</for>
<arg>command=${command} ${gc_options}</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Cycle through indices (or all), run command on each.</doc>
<status status="PASS" start="2026-04-08T00:54:07.005588" elapsed="0.481906"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Verify_Members_Are_Ready" owner="ClusterManagement">
<if>
<branch type="IF" condition="${verify_cluster_sync}">
<kw name="Check_Cluster_Is_In_Sync" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:54:07.498535" level="INFO">${return_list_reference} = [2]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:54:07.498142" elapsed="0.000421"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:54:07.499016" level="INFO">${return_list_copy} = [2]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:54:07.498721" elapsed="0.000321"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:54:07.499086" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:54:07.499256" level="INFO">${index_list} = [2]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:54:07.497747" elapsed="0.001534"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:54:07.500956" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:54:07.500648" elapsed="0.000334"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:54:07.501028" elapsed="0.000027"/>
</return>
<msg time="2026-04-08T00:54:07.501192" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:54:07.500306" elapsed="0.000912"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:54:07.509100" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:54:07.508520" elapsed="0.000700"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:54:07.509974" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:54:07.509379" elapsed="0.000642"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:54:07.515999" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.170.131', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.170.131', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-08T00:54:07.512282" elapsed="0.005682">ConnectionError: HTTPConnectionPool(host='10.30.170.131', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.170.131', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<status status="FAIL" start="2026-04-08T00:54:07.510092" elapsed="0.008339">ConnectionError: HTTPConnectionPool(host='10.30.170.131', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.170.131', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:07.518623" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:54:07.518469" elapsed="0.000578"/>
</branch>
<status status="FAIL" start="2026-04-08T00:54:07.510072" elapsed="0.009003">ConnectionError: HTTPConnectionPool(host='10.30.170.131', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.170.131', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:07.519588" elapsed="0.000028"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:54:07.519726" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:54:07.519689" elapsed="0.000077"/>
</branch>
<status status="NOT RUN" start="2026-04-08T00:54:07.519671" elapsed="0.000117"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:07.519931" elapsed="0.000021"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-08T00:54:07.520001" elapsed="0.000015"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-08T00:54:07.504379" elapsed="0.015729">ConnectionError: HTTPConnectionPool(host='10.30.170.131', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.170.131', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-08T00:54:07.520199" elapsed="0.000016"/>
</return>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="FAIL" start="2026-04-08T00:54:07.501428" elapsed="0.018871">ConnectionError: HTTPConnectionPool(host='10.30.170.131', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.170.131', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:07.520515" elapsed="0.000024"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-08T00:54:07.520641" elapsed="0.000012"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:54:07.520606" elapsed="0.000074"/>
</branch>
<status status="NOT RUN" start="2026-04-08T00:54:07.520589" elapsed="0.000111"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:07.520890" elapsed="0.000023"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:07.521107" elapsed="0.000023"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="NOT RUN" start="2026-04-08T00:54:07.521189" elapsed="0.000015"/>
</return>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="FAIL" start="2026-04-08T00:54:07.499737" elapsed="0.021564">ConnectionError: HTTPConnectionPool(host='10.30.170.131', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.170.131', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="NOT RUN" start="2026-04-08T00:54:07.521459" elapsed="0.000019"/>
</continue>
<status status="NOT RUN" start="2026-04-08T00:54:07.521419" elapsed="0.000085"/>
</branch>
<status status="NOT RUN" start="2026-04-08T00:54:07.521400" elapsed="0.000125"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:07.521665" elapsed="0.000020"/>
</kw>
<var name="${index}">2</var>
<status status="FAIL" start="2026-04-08T00:54:07.499515" elapsed="0.022220">ConnectionError: HTTPConnectionPool(host='10.30.170.131', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.170.131', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-04-08T00:54:07.499335" elapsed="0.022459">ConnectionError: HTTPConnectionPool(host='10.30.170.131', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.170.131', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</for>
<arg>${member_index_list}</arg>
<doc>Fail if no-sync is detected on a member from list (or any).</doc>
<status status="FAIL" start="2026-04-08T00:54:07.497354" elapsed="0.024536">ConnectionError: HTTPConnectionPool(host='10.30.170.131', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.170.131', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<status status="FAIL" start="2026-04-08T00:54:07.497033" elapsed="0.024916">ConnectionError: HTTPConnectionPool(host='10.30.170.131', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.170.131', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</branch>
<status status="FAIL" start="2026-04-08T00:54:07.497015" elapsed="0.024965">ConnectionError: HTTPConnectionPool(host='10.30.170.131', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.170.131', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</if>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Verify_Restconf_Is_Available" owner="ClusterManagement">
<arg>${member_index_list}</arg>
<status status="NOT RUN" start="2026-04-08T00:54:07.522275" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:54:07.522048" elapsed="0.000282"/>
</branch>
<status status="NOT RUN" start="2026-04-08T00:54:07.522032" elapsed="0.000321"/>
</if>
<if>
<branch type="IF" condition="${verify_system_status} and (&quot;${service_list}&quot; != &quot;[[]]&quot;)">
<kw name="Check Status Of Services Is OPERATIONAL" owner="ClusterManagement">
<arg>@{service_list}</arg>
<doc>This keyword will verify whether all the services are operational in all the ODL nodes</doc>
<status status="NOT RUN" start="2026-04-08T00:54:07.522610" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:54:07.522406" elapsed="0.000258"/>
</branch>
<status status="NOT RUN" start="2026-04-08T00:54:07.522391" elapsed="0.000297"/>
</if>
<arg>${member_index_list}</arg>
<arg>${wait_for_sync}</arg>
<arg>${verify_restconf}</arg>
<arg>${check_system_status}</arg>
<arg>${service_list}</arg>
<doc>Verifies the specified readiness conditions for the given listed members after startup.
If ${verify_cluster_sync}, verifies the datastores have synced with the rest of the cluster.
If True, verifies RESTCONF is available.
If ${verify_system_status}, verifies the system services are OPERATIONAL.</doc>
<status status="FAIL" start="2026-04-08T00:54:07.496610" elapsed="0.026157">ConnectionError: HTTPConnectionPool(host='10.30.170.131', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.170.131', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Verify_Members_Are_Ready" owner="ClusterManagement">
<if>
<branch type="IF" condition="${verify_cluster_sync}">
<kw name="Check_Cluster_Is_In_Sync" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:54:17.541464" level="INFO">${return_list_reference} = [2]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:54:17.540938" elapsed="0.000567"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:54:17.542020" level="INFO">${return_list_copy} = [2]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:54:17.541702" elapsed="0.000346"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:54:17.542096" elapsed="0.000039"/>
</return>
<msg time="2026-04-08T00:54:17.542285" level="INFO">${index_list} = [2]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:54:17.540455" elapsed="0.001856"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:54:17.543841" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:54:17.543534" elapsed="0.000334"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:54:17.543915" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:54:17.544064" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:54:17.543184" elapsed="0.000905"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:54:17.551861" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:54:17.551231" elapsed="0.000680"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:54:17.552778" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:54:17.552137" elapsed="0.000690"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:54:17.644614" level="INFO">GET Request : url=http://10.30.170.131:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:54:17.644928" level="INFO">GET Response : url=http://10.30.170.131:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 status=401, reason=Unauthorized 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '524'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 401 Unauthorized&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 401 Unauthorized&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;401&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Unauthorized&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;org.jolokia.osgi.servlet.JolokiaServlet&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-04-08T00:54:17.645333" level="FAIL">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.170.131:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-08T00:54:17.555143" elapsed="0.090950">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.170.131:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<status status="FAIL" start="2026-04-08T00:54:17.552900" elapsed="0.093850">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.170.131:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:17.647137" elapsed="0.000060"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:54:17.646816" elapsed="0.001047"/>
</branch>
<status status="FAIL" start="2026-04-08T00:54:17.552880" elapsed="0.095038">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.170.131:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:17.648964" elapsed="0.000048"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:54:17.649226" elapsed="0.000023"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:54:17.649125" elapsed="0.000166"/>
</branch>
<status status="NOT RUN" start="2026-04-08T00:54:17.649097" elapsed="0.000224"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:17.649567" elapsed="0.000041"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-08T00:54:17.649698" elapsed="0.000027"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-08T00:54:17.546896" elapsed="0.103005">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.170.131:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-08T00:54:17.650036" elapsed="0.000028"/>
</return>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="FAIL" start="2026-04-08T00:54:17.544317" elapsed="0.106023">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.170.131:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:17.650697" elapsed="0.000043"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-08T00:54:17.650892" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:54:17.650841" elapsed="0.000106"/>
</branch>
<status status="NOT RUN" start="2026-04-08T00:54:17.650815" elapsed="0.000161"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:17.651276" elapsed="0.000042"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:17.651625" elapsed="0.000071"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="NOT RUN" start="2026-04-08T00:54:17.651760" elapsed="0.000022"/>
</return>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="FAIL" start="2026-04-08T00:54:17.542787" elapsed="0.109119">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.170.131:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="NOT RUN" start="2026-04-08T00:54:17.652188" elapsed="0.000026"/>
</continue>
<status status="NOT RUN" start="2026-04-08T00:54:17.652125" elapsed="0.000124"/>
</branch>
<status status="NOT RUN" start="2026-04-08T00:54:17.652102" elapsed="0.000171"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:17.652421" elapsed="0.000022"/>
</kw>
<var name="${index}">2</var>
<status status="FAIL" start="2026-04-08T00:54:17.542558" elapsed="0.109938">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.170.131:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-04-08T00:54:17.542370" elapsed="0.110190">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.170.131:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</for>
<arg>${member_index_list}</arg>
<doc>Fail if no-sync is detected on a member from list (or any).</doc>
<status status="FAIL" start="2026-04-08T00:54:17.539962" elapsed="0.112700">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.170.131:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<status status="FAIL" start="2026-04-08T00:54:17.539517" elapsed="0.113207">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.170.131:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</branch>
<status status="FAIL" start="2026-04-08T00:54:17.539482" elapsed="0.113274">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.170.131:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</if>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Verify_Restconf_Is_Available" owner="ClusterManagement">
<arg>${member_index_list}</arg>
<status status="NOT RUN" start="2026-04-08T00:54:17.653035" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:54:17.652827" elapsed="0.000264"/>
</branch>
<status status="NOT RUN" start="2026-04-08T00:54:17.652810" elapsed="0.000305"/>
</if>
<if>
<branch type="IF" condition="${verify_system_status} and (&quot;${service_list}&quot; != &quot;[[]]&quot;)">
<kw name="Check Status Of Services Is OPERATIONAL" owner="ClusterManagement">
<arg>@{service_list}</arg>
<doc>This keyword will verify whether all the services are operational in all the ODL nodes</doc>
<status status="NOT RUN" start="2026-04-08T00:54:17.653457" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:54:17.653199" elapsed="0.000320"/>
</branch>
<status status="NOT RUN" start="2026-04-08T00:54:17.653154" elapsed="0.000409"/>
</if>
<arg>${member_index_list}</arg>
<arg>${wait_for_sync}</arg>
<arg>${verify_restconf}</arg>
<arg>${check_system_status}</arg>
<arg>${service_list}</arg>
<doc>Verifies the specified readiness conditions for the given listed members after startup.
If ${verify_cluster_sync}, verifies the datastores have synced with the rest of the cluster.
If True, verifies RESTCONF is available.
If ${verify_system_status}, verifies the system services are OPERATIONAL.</doc>
<status status="FAIL" start="2026-04-08T00:54:17.538832" elapsed="0.114836">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.170.131:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<kw name="Verify_Members_Are_Ready" owner="ClusterManagement">
<if>
<branch type="IF" condition="${verify_cluster_sync}">
<kw name="Check_Cluster_Is_In_Sync" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:54:27.671925" level="INFO">${return_list_reference} = [2]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:54:27.671477" elapsed="0.000480"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:54:27.672531" level="INFO">${return_list_copy} = [2]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:54:27.672145" elapsed="0.000414"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:54:27.672609" elapsed="0.000038"/>
</return>
<msg time="2026-04-08T00:54:27.672780" level="INFO">${index_list} = [2]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:54:27.670968" elapsed="0.001837"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:54:27.674620" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:54:27.674313" elapsed="0.000334"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:54:27.674694" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:54:27.674841" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:54:27.673922" elapsed="0.000944"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:54:27.682815" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:54:27.681918" elapsed="0.000947"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:54:27.683649" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:54:27.683023" elapsed="0.000672"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:54:28.069571" level="INFO">GET Request : url=http://10.30.170.131:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:54:28.070205" level="INFO">GET Response : url=http://10.30.170.131:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Wed, 08 Apr 2026 00:54:28 GMT', 'Expires': 'Tue, 07 Apr 2026 23:54:28 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore","type":"read"},"value":{"LocalShards":["member-2-shard-default-config","member-2-shard-topology-config","member-2-shard-inventory-config","member-2-shard-toaster-config"],"SyncStatus":true,"MemberName":"member-2"},"timestamp":1775609668,"status":200} 
 </msg>
<msg time="2026-04-08T00:54:28.070794" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:54:27.685864" elapsed="0.385176"/>
</kw>
<status status="PASS" start="2026-04-08T00:54:27.683765" elapsed="0.388099"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:28.072391" elapsed="0.000055"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:54:28.071945" elapsed="0.001420"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:27.683746" elapsed="0.389678"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:54:28.083404" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore","type":"read"},"value":{"LocalShards":["member-2-shard-default-config","member-2-shard-topology-config","member-2-shard-inventory-config","member-2-shard-toaster-config"],"SyncStatus":true,"MemberName":"member-2"},"timestamp":1775609668,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:54:28.079579" elapsed="0.004005"/>
</kw>
<status status="PASS" start="2026-04-08T00:54:28.076660" elapsed="0.007003"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:28.076614" elapsed="0.007111"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:54:28.089825" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:54:28.086054" elapsed="0.003944"/>
</kw>
<status status="PASS" start="2026-04-08T00:54:28.083860" elapsed="0.006215"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:28.083834" elapsed="0.006302"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:54:28.092006" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:54:28.090868" elapsed="0.001185"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:28.092765" elapsed="0.000041"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:54:28.092242" elapsed="0.000623"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:54:28.093904" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:54:28.093288" elapsed="0.000670"/>
</kw>
<status status="PASS" start="2026-04-08T00:54:28.092908" elapsed="0.001108"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:28.092221" elapsed="0.001837"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:54:28.095962" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:54:28.094725" elapsed="0.001285"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:28.096711" elapsed="0.000042"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:54:28.096193" elapsed="0.000615"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:54:28.097826" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:54:28.097226" elapsed="0.000654"/>
</kw>
<status status="PASS" start="2026-04-08T00:54:28.096851" elapsed="0.001085"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:28.096172" elapsed="0.001805"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:54:28.098221" elapsed="0.001136"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:54:28.100474" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:54:28.099687" elapsed="0.000834"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:54:28.100832" elapsed="0.002776"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:54:28.074707" elapsed="0.029063"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:54:28.103985" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:54:28.103846" elapsed="0.000187"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:28.103826" elapsed="0.000229"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:54:28.107662" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1775609668,...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:54:28.104220" elapsed="0.003511"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:54:28.107786" elapsed="0.000038"/>
</return>
<msg time="2026-04-08T00:54:28.107955" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1775609668,...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:54:27.677688" elapsed="0.430293"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:54:28.108039" elapsed="0.000027"/>
</return>
<msg time="2026-04-08T00:54:28.108206" level="INFO">${conf_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1775609668,...</msg>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-08T00:54:27.675086" elapsed="0.433147"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:54:28.109059" level="INFO">{
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1775609668,
 "value": {
  "LocalShards": [
   "member-2-shard-default-config",
   "member-2-shard-inventory-config",
   "member-2-shard-toaster-config",
   "member-2-shard-topology-config"
  ],
  "MemberName": "member-2",
  "SyncStatus": true
 }
}
</msg>
<arg>${shard_manager_text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:54:28.108805" elapsed="0.000367"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:54:28.110674" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1775609668, 'value': {...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:54:28.109748" elapsed="0.000959"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-08T00:54:28.110756" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:54:28.110917" level="INFO">${manager_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1775609668, 'value': {...</msg>
<var>${manager_object}</var>
<arg>${shard_manager_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-08T00:54:28.109404" elapsed="0.001540"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:54:28.111453" level="INFO">${value_object} = {'LocalShards': ['member-2-shard-default-config', 'member-2-shard-inventory-config', 'member-2-shard-toaster-config', 'member-2-shard-topology-config'], 'MemberName': 'member-2', 'SyncStatus': True}</msg>
<var>${value_object}</var>
<arg>dictionary=${manager_object}</arg>
<arg>key=value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:54:28.111098" elapsed="0.000382"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:54:28.111847" level="INFO">${sync_status} = True</msg>
<var>${sync_status}</var>
<arg>dictionary=${value_object}</arg>
<arg>key=SyncStatus</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:54:28.111635" elapsed="0.000237"/>
</kw>
<return>
<value>${sync_status}</value>
<status status="PASS" start="2026-04-08T00:54:28.111919" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:54:28.112068" level="INFO">${conf_status} = True</msg>
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="PASS" start="2026-04-08T00:54:28.108451" elapsed="0.003641"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-08T00:54:28.112284" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:54:28.112175" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:28.112143" elapsed="0.000205"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:54:28.125196" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:54:28.123740" elapsed="0.001561"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:54:28.126038" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:54:28.125460" 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-04-08T00:54:28.136220" level="INFO">GET Request : url=http://10.30.170.131:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:54:28.136463" level="INFO">GET Response : url=http://10.30.170.131:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Wed, 08 Apr 2026 00:54:28 GMT', 'Expires': 'Tue, 07 Apr 2026 23:54:28 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"LocalShards":["member-2-shard-default-operational","member-2-shard-topology-operational","member-2-shard-inventory-operational","member-2-shard-toaster-operational"],"SyncStatus":true,"MemberName":"member-2"},"timestamp":1775609668,"status":200} 
 </msg>
<msg time="2026-04-08T00:54:28.136770" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:54:28.128437" elapsed="0.008481"/>
</kw>
<status status="PASS" start="2026-04-08T00:54:28.126168" elapsed="0.011331"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:28.137763" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:54:28.137544" elapsed="0.000851"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:28.126133" elapsed="0.012298"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:54:28.145928" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"LocalShards":["member-2-shard-default-operational","member-2-shard-topology-operational","member-2-shard-inventory-operational","member-2-shard-toaster-operational"],"SyncStatus":true,"MemberName":"member-2"},"timestamp":1775609668,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:54:28.142580" elapsed="0.003475"/>
</kw>
<status status="PASS" start="2026-04-08T00:54:28.140379" elapsed="0.005731"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:28.140351" elapsed="0.005818"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:54:28.150513" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:54:28.147813" elapsed="0.002825"/>
</kw>
<status status="PASS" start="2026-04-08T00:54:28.146267" elapsed="0.004427"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:28.146249" elapsed="0.004489"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:54:28.152485" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:54:28.151410" elapsed="0.001123"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:28.153296" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:54:28.152702" elapsed="0.000702"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:54:28.154403" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:54:28.153789" elapsed="0.000668"/>
</kw>
<status status="PASS" start="2026-04-08T00:54:28.153449" elapsed="0.001064"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:28.152681" elapsed="0.001875"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:54:28.156261" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:54:28.155214" elapsed="0.001095"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:28.157014" elapsed="0.000045"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:54:28.156479" elapsed="0.000641"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:54:28.158369" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:54:28.157753" elapsed="0.000670"/>
</kw>
<status status="PASS" start="2026-04-08T00:54:28.157408" elapsed="0.001071"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:28.156459" elapsed="0.002061"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:54:28.158744" elapsed="0.000985"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:54:28.160811" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:54:28.160059" elapsed="0.000799"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:54:28.161378" elapsed="0.002543"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:54:28.139101" elapsed="0.024985"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:54:28.164311" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:54:28.164173" elapsed="0.000183"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:28.164140" elapsed="0.000238"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:54:28.168034" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:54:28.164524" elapsed="0.003540"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:54:28.168115" elapsed="0.000031"/>
</return>
<msg time="2026-04-08T00:54:28.168294" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:54:28.115639" elapsed="0.052682"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:54:28.168415" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:54:28.168567" level="INFO">${oper_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-08T00:54:28.112546" elapsed="0.056047"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:54:28.169647" level="INFO">{
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1775609668,
 "value": {
  "LocalShards": [
   "member-2-shard-default-operational",
   "member-2-shard-inventory-operational",
   "member-2-shard-toaster-operational",
   "member-2-shard-topology-operational"
  ],
  "MemberName": "member-2",
  "SyncStatus": true
 }
}
</msg>
<arg>${shard_manager_text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:54:28.169389" elapsed="0.000306"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:54:28.171136" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1775609668, ...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:54:28.170254" elapsed="0.000928"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-08T00:54:28.171232" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:54:28.171394" level="INFO">${manager_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1775609668, ...</msg>
<var>${manager_object}</var>
<arg>${shard_manager_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-08T00:54:28.169901" elapsed="0.001521"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:54:28.171796" level="INFO">${value_object} = {'LocalShards': ['member-2-shard-default-operational', 'member-2-shard-inventory-operational', 'member-2-shard-toaster-operational', 'member-2-shard-topology-operational'], 'MemberName': 'member-2', '...</msg>
<var>${value_object}</var>
<arg>dictionary=${manager_object}</arg>
<arg>key=value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:54:28.171574" elapsed="0.000250"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:54:28.172209" level="INFO">${sync_status} = True</msg>
<var>${sync_status}</var>
<arg>dictionary=${value_object}</arg>
<arg>key=SyncStatus</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:54:28.171978" elapsed="0.000257"/>
</kw>
<return>
<value>${sync_status}</value>
<status status="PASS" start="2026-04-08T00:54:28.172282" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:54:28.172435" level="INFO">${oper_status} = True</msg>
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="PASS" start="2026-04-08T00:54:28.168804" elapsed="0.003656"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="PASS" start="2026-04-08T00:54:28.172503" elapsed="0.000026"/>
</return>
<msg time="2026-04-08T00:54:28.172649" level="INFO">${status} = True</msg>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="PASS" start="2026-04-08T00:54:27.673549" elapsed="0.499126"/>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="PASS" start="2026-04-08T00:54:28.172856" elapsed="0.000032"/>
</continue>
<status status="PASS" start="2026-04-08T00:54:28.172745" elapsed="0.000174"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:28.172727" elapsed="0.000216"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:28.173110" elapsed="0.000023"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T00:54:27.673321" elapsed="0.499928"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-08T00:54:27.672861" elapsed="0.500427"/>
</for>
<arg>${member_index_list}</arg>
<doc>Fail if no-sync is detected on a member from list (or any).</doc>
<status status="PASS" start="2026-04-08T00:54:27.670225" elapsed="0.503121"/>
</kw>
<status status="PASS" start="2026-04-08T00:54:27.669713" elapsed="0.503665"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:27.669681" elapsed="0.503721"/>
</if>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Verify_Restconf_Is_Available" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:54:28.174862" level="INFO">${return_list_reference} = [2]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:54:28.174486" elapsed="0.000403"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:54:28.175356" level="INFO">${return_list_copy} = [2]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:54:28.175045" elapsed="0.000336"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:54:28.175424" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:54:28.175576" level="INFO">${index_list} = [2]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:54:28.174096" elapsed="0.001505"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:54:28.176607" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:54:28.176308" elapsed="0.000325"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:54:28.176676" elapsed="0.000078"/>
</return>
<msg time="2026-04-08T00:54:28.176878" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>member_index=${index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:54:28.175953" elapsed="0.000950"/>
</kw>
<kw name="Get_As_Json_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:54:28.228045" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:54:28.227588" elapsed="0.000520"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:54:28.229132" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:54:28.228856" elapsed="0.000379">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-08T00:54:28.229359" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:54:28.228431" elapsed="0.000988"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:54:28.230198" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:54:28.229717" elapsed="0.000544"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T00:54:28.230746" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-08T00:54:28.231102" level="INFO">${template} = /rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T00:54:28.230555" elapsed="0.000666"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:54:28.231818" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:54:28.231516" elapsed="0.000405"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:54:28.233124" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:54:28.232851" elapsed="0.000335"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-08T00:54:28.233614" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-08T00:54:28.233349" elapsed="0.000291"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:28.234010" elapsed="0.000021"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:28.234224" elapsed="0.000025"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:28.234395" elapsed="0.000020"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-08T00:54:28.233878" elapsed="0.000572"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-08T00:54:28.233738" elapsed="0.000741"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-08T00:54:28.234522" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:54:28.234678" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-08T00:54:28.232514" elapsed="0.002189"/>
</kw>
<status status="PASS" start="2026-04-08T00:54:28.232104" elapsed="0.002657"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:28.235051" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:54:28.234815" elapsed="0.000319"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:28.232033" elapsed="0.003310"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:54:28.236412" level="INFO">${final_text} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:54:28.235660" elapsed="0.000816"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T00:54:28.236569" elapsed="0.000080"/>
</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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="PASS" start="2026-04-08T00:54:28.226088" elapsed="0.010782"/>
</kw>
<msg time="2026-04-08T00:54:28.236963" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:54:28.211917" elapsed="0.025119"/>
</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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:28.263052" elapsed="0.000035"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:28.289501" elapsed="0.000060"/>
</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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:28.315370" elapsed="0.000032"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:28.315608" elapsed="0.000022"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:28.315797" elapsed="0.000021"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:28.317433" elapsed="0.000073"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:54:28.316104" elapsed="0.001488"/>
</branch>
<status status="NOT RUN" start="2026-04-08T00:54:28.316086" elapsed="0.001568"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:28.317886" elapsed="0.000147"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:28.318319" elapsed="0.000090"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:28.318685" elapsed="0.000087"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-08T00:54:28.316038" elapsed="0.002876"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-08T00:54:28.315886" elapsed="0.003059"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:28.319104" elapsed="0.000021"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-08T00:54:28.319552" elapsed="0.000018"/>
</return>
<msg time="2026-04-08T00:54:28.319724" level="INFO">${uri} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-08T00:54:28.207875" elapsed="0.111879"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:54:28.321979" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:54:28.321321" elapsed="0.000955">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-08T00:54:28.322417" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:54:28.320558" elapsed="0.001886"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:28.322833" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:54:28.322519" elapsed="0.000585"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:54:28.324051" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:54:28.323366" elapsed="0.000865"/>
</kw>
<status status="PASS" start="2026-04-08T00:54:28.323137" elapsed="0.001392"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:28.322498" elapsed="0.002057"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:54:28.341219" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:54:28.324726" elapsed="0.016522"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-08T00:54:28.341301" elapsed="0.000034"/>
</return>
<msg time="2026-04-08T00:54:28.341593" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:54:28.320185" elapsed="0.021439"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:54:28.343592" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:54:28.342979" elapsed="0.000860">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-08T00:54:28.343972" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:54:28.342330" elapsed="0.001668"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-08T00:54:28.344303" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-08T00:54:28.344071" elapsed="0.000293"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:28.344051" elapsed="0.000337"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:28.344535" elapsed="0.000021"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:28.344733" elapsed="0.000021"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-08T00:54:28.344799" elapsed="0.000015"/>
</return>
<msg time="2026-04-08T00:54:28.347037" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:54:28.341980" elapsed="0.005085"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:54:28.349374" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:54:28.348764" elapsed="0.000659"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:54:28.350145" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:54:28.349577" elapsed="0.000630"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:54:28.849483" level="INFO">GET Request : url=http://10.30.170.131:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 path_url=/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01eq5fxmndxspk37g8qgkyja672.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:54:28.850952" level="INFO">GET Response : url=http://10.30.170.131:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 status=200, reason=OK 
 headers={'Set-Cookie': 'JSESSIONID=node01eq5fxmndxspk37g8qgkyja672.node0; Path=/rests; HttpOnly, rememberMe=deleteMe; Path=/rests; Max-Age=0; Expires=Tue, 07-Apr-2026 00:54:28 GMT; SameSite=lax', 'Expires': 'Thu, 01 Jan 1970 00:00:00 GMT', 'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Transfer-Encoding': 'chunked'} 
 body={"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","hidden-symmetric-keys","encrypted-private-keys","asymmetrically-encrypted-value-format","cms-encrypted-data-format","cleartext-private-keys","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["ssh-client-keepalives","client-ident-hostbased","client-ident-publickey","client-ident-password"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-ex... (set the log level to DEBUG or TRACE to see the full content) 
 </msg>
<msg time="2026-04-08T00:54:28.851923" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:54:28.352622" elapsed="0.499605"/>
</kw>
<status status="PASS" start="2026-04-08T00:54:28.350275" elapsed="0.502710"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:28.853557" elapsed="0.000054"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:54:28.853068" elapsed="0.001481"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:28.350256" elapsed="0.504354"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:54:28.864260" level="INFO">{"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","hidden-symmetric-keys","encrypted-private-keys","asymmetrically-encrypted-value-format","cms-encrypted-data-format","cleartext-private-keys","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["ssh-client-keepalives","client-ident-hostbased","client-ident-publickey","client-ident-password"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-experimenter-types?revision=2015-10-20","namespace":"urn:opendaylight:openflowplugin:experimenter:types","conformance-type":"import"},{"name":"ietf-ip_2018-02-22","revision":"2018-02-22","schema":"/rests/modules/ietf-ip?revision=2018-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-ip","conformance-type":"import","feature":["ipv6-privacy-autoconf","ipv4-non-contiguous-netmasks"]},{"name":"ietf-tcp-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-client","conformance-type":"import","feature":["local-binding-supported","tcp-client-keepalives"]},{"name":"node-config_2014-10-15","revision":"2014-10-15","schema":"/rests/modules/node-config?revision=2014-10-15","namespace":"urn:opendaylight:module:config","conformance-type":"import"},{"name":"ietf-restconf_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf","conformance-type":"import"},{"name":"ietf-datastores_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-datastores?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-datastores","conformance-type":"import"},{"name":"ietf-yang-patch_2017-02-22","revision":"2017-02-22","schema":"/rests/modules/ietf-yang-patch?revision=2017-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-patch","conformance-type":"import"},{"name":"sal-group_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-group?revision=2013-09-18","namespace":"urn:opendaylight:group:service","conformance-type":"import"},{"name":"odl-codegen-extensions_2024-06-27","revision":"2024-06-27","schema":"/rests/modules/odl-codegen-extensions?revision=2024-06-27","namespace":"urn:opendaylight:yang:extension:codegen","conformance-type":"import"},{"name":"sal-meter_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-meter?revision=2013-09-18","namespace":"urn:opendaylight:meter:service","conformance-type":"import"},{"name":"ietf-interfaces_2018-02-20","revision":"2018-02-20","schema":"/rests/modules/ietf-interfaces?revision=2018-02-20","namespace":"urn:ietf:params:xml:ns:yang:ietf-interfaces","conformance-type":"import","feature":["pre-provisioning","if-mib","arbitrary-names"]},{"name":"opendaylight-l2-types_2013-08-27","revision":"2013-08-27","schema":"/rests/modules/opendaylight-l2-types?revision=2013-08-27","namespace":"urn:opendaylight:l2:types","conformance-type":"import"},{"name":"opendaylight-flow-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-flow-types?revision=2013-10-26","namespace":"urn:opendaylight:flow:types","conformance-type":"import"},{"name":"lldp-speaker-config_2016-05-12","revision":"2016-05-12","schema":"/rests/modules/lldp-speaker-config?revision=2016-05-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker:config","conformance-type":"import"},{"name":"aaa-cert_2015-11-26","revision":"2015-11-26","schema":"/rests/modules/aaa-cert?revision=2015-11-26","namespace":"urn:opendaylight:yang:aaa:cert","conformance-type":"import"},{"name":"openflow-action_2015-02-03","revision":"2015-02-03","schema":"/rests/modules/openflow-action?revision=2015-02-03","namespace":"urn:opendaylight:openflow:common:action","conformance-type":"import"},{"name":"openflow-approved-extensions_2016-08-02","revision":"2016-08-02","schema":"/rests/modules/openflow-approved-extensions?revision=2016-08-02","namespace":"urn:opendaylight:openflow:approved:extensions","conformance-type":"import"},{"name":"nc-notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/nc-notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netmod:notification","conformance-type":"import"},{"name":"ietf-netconf-nmda_2019-01-07","revision":"2019-01-07","schema":"/rests/modules/ietf-netconf-nmda?revision=2019-01-07","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-nmda","conformance-type":"import","feature":["with-defaults","origin"]},{"name":"ietf-tcp-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-common","conformance-type":"import","feature":["keepalives-supported"]},{"name":"network-topology_2013-10-21","revision":"2013-10-21","schema":"/rests/modules/network-topology?revision=2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:network-topology","conformance-type":"import"},{"name":"aaa-encrypt-service-config_2024-02-02","revision":"2024-02-02","schema":"/rests/modules/aaa-encrypt-service-config?revision=2024-02-02","namespace":"config:aaa:authn:encrypt:service:config","conformance-type":"import"},{"name":"openflow-instruction_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-instruction?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:instruction","conformance-type":"import"},{"name":"ietf-tls-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-client","conformance-type":"import","feature":["client-ident-x509-cert","server-auth-x509-cert"]},{"name":"opendaylight-group-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-group-statistics?revision=2013-11-11","namespace":"urn:opendaylight:group:statistics","conformance-type":"import"},{"name":"cluster-admin_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/cluster-admin?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:cluster:admin","conformance-type":"import"},{"name":"opendaylight-flow-statistics_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-flow-statistics?revision=2013-08-19","namespace":"urn:opendaylight:flow:statistics","conformance-type":"import"},{"name":"opendaylight-table-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-table-types?revision=2013-10-26","namespace":"urn:opendaylight:table:types","conformance-type":"import"},{"name":"forwarding-rules-manager-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/forwarding-rules-manager-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:forwardingrules-manager:config","conformance-type":"import"},{"name":"odl-srm-types_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-types?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:types","conformance-type":"import"},{"name":"ietf-x509-cert-to-name_2014-12-10","revision":"2014-12-10","schema":"/rests/modules/ietf-x509-cert-to-name?revision=2014-12-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-x509-cert-to-name","conformance-type":"import"},{"name":"flow-node-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-node-inventory?revision=2013-08-19","namespace":"urn:opendaylight:flow:inventory","conformance-type":"import"},{"name":"flow-errors_2013-11-16","revision":"2013-11-16","schema":"/rests/modules/flow-errors?revision=2013-11-16","namespace":"urn:opendaylight:flow:errors","conformance-type":"import"},{"name":"ietf-netconf_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:netconf:base:1.0","conformance-type":"import","feature":["xpath","url","rollback-on-error","validate","startup","candidate","confirmed-commit","writable-running"]},{"name":"iana-ssh-public-key-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-public-key-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-public-key-algs","conformance-type":"import"},{"name":"aaa-cert-mdsal_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/aaa-cert-mdsal?revision=2016-03-21","namespace":"urn:opendaylight:yang:aaa:cert:mdsal","conformance-type":"import"},{"name":"odl-device-notification_2024-02-18","revision":"2024-02-18","schema":"/rests/modules/odl-device-notification?revision=2024-02-18","namespace":"urn:opendaylight:device:notification","conformance-type":"import"},{"name":"ietf-origin_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-origin?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-origin","conformance-type":"import"},{"name":"openflow-augments_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-augments?revision=2015-02-25","namespace":"urn:opendaylight:openflow:augments","conformance-type":"import"},{"name":"iana-ssh-encryption-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-encryption-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-encryption-algs","conformance-type":"import"},{"name":"ietf-truststore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-truststore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-truststore","conformance-type":"import","feature":["inline-definitions-supported"]},{"name":"distributed-datastore-provider_2025-01-30","revision":"2025-01-30","schema":"/rests/modules/distributed-datastore-provider?revision=2025-01-30","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:distributed-datastore-provider","conformance-type":"import"},{"name":"opendaylight-group-types_2013-10-18","revision":"2013-10-18","schema":"/rests/modules/opendaylight-group-types?revision=2013-10-18","namespace":"urn:opendaylight:group:types","conformance-type":"import"},{"name":"sal-remote-augment_2023-11-03","revision":"2023-11-03","schema":"/rests/modules/sal-remote-augment?revision=2023-11-03","namespace":"urn:sal:restconf:event:subscription","conformance-type":"import"},{"name":"opendaylight-ipv6-arbitrary-bitmask-fields_2016-02-24","revision":"2016-02-24","schema":"/rests/modules/opendaylight-ipv6-arbitrary-bitmask-fields?revision=2016-02-24","namespace":"urn:opendaylight:opendaylight-ipv6-arbitrary-bitmask-fields","conformance-type":"import"},{"name":"sal-flows-batch_2016-03-14","revision":"2016-03-14","schema":"/rests/modules/sal-flows-batch?revision=2016-03-14","namespace":"urn:opendaylight:flows:service","conformance-type":"import"},{"name":"ietf-tls-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-common","conformance-type":"import","feature":["tls12","hello-params","tls13"]},{"name":"openflow-types_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-types?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:types","conformance-type":"import"},{"name":"ietf-netconf-with-defaults_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf-with-defaults?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults","conformance-type":"import"},{"name":"odl-srm-ops_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-ops?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:ops","conformance-type":"import"},{"name":"odl-general-entity_2015-09-30","revision":"2015-09-30","schema":"/rests/modules/odl-general-entity?revision=2015-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:mdsal:core:general-entity","conformance-type":"import"},{"name":"iana-ssh-key-exchange-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-key-exchange-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-key-exchange-algs","conformance-type":"import"},{"name":"node-ssl-connection-error_2019-07-23","revision":"2019-07-23","schema":"/rests/modules/node-ssl-connection-error?revision=2019-07-23","namespace":"urn:opendaylight:node-ssl-connection-error:service","conformance-type":"import"},{"name":"openflow-protocol_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-protocol?revision=2013-07-31","namespace":"urn:opendaylight:openflow:protocol","conformance-type":"import"},{"name":"ietf-udp-server_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-server?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-server","conformance-type":"import"},{"name":"ietf-keystore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-keystore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-keystore","conformance-type":"import","feature":["asymmetric-keys","inline-definitions-supported"]},{"name":"aaa_2016-12-14","revision":"2016-12-14","schema":"/rests/modules/aaa?revision=2016-12-14","namespace":"urn:opendaylight:params:xml:ns:yang:aaa","conformance-type":"import"},{"name":"aaa-cert-rpc_2015-12-15","revision":"2015-12-15","schema":"/rests/modules/aaa-cert-rpc?revision=2015-12-15","namespace":"urn:opendaylight:yang:aaa:cert:rpc","conformance-type":"import"},{"name":"system-notifications_2013-09-27","revision":"2013-09-27","schema":"/rests/modules/system-notifications?revision=2013-09-27","namespace":"urn:opendaylight:openflow:system","conformance-type":"import"},{"name":"sal-flat-batch_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/sal-flat-batch?revision=2016-03-21","namespace":"urn:opendaylight:flat-batch:service","conformance-type":"import"},{"name":"notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netconf:notification:1.0","conformance-type":"import"},{"name":"sal-remote_2014-01-14","revision":"2014-01-14","schema":"/rests/modules/sal-remote?revision=2014-01-14","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:remote","conformance-type":"import"},{"name":"yang-ext_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/yang-ext?revision=2013-07-09","namespace":"urn:opendaylight:yang:extension:yang-ext","conformance-type":"import"},{"name":"opendaylight-multipart-types_2017-01-12","revision":"2017-01-12","schema":"/rests/modules/opendaylight-multipart-types?revision=2017-01-12","namespace":"urn:opendaylight:multipart:types","conformance-type":"import"},{"name":"opendaylight-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-inventory?revision=2013-08-19","namespace":"urn:opendaylight:inventory","conformance-type":"import"},{"name":"sal-queue_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-queue?revision=2015-03-05","namespace":"urn:opendaylight:queue:service","conformance-type":"import"},{"name":"sal-groups-batch_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/sal-groups-batch?revision=2016-03-15","namespace":"urn:opendaylight:groups:service","conformance-type":"import"},{"name":"arbitrator-reconcile_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/arbitrator-reconcile?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:arbitrator-reconcile:service","conformance-type":"import"},{"name":"ietf-yang-metadata_2016-08-05","revision":"2016-08-05","schema":"/rests/modules/ietf-yang-metadata?revision=2016-08-05","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-metadata","conformance-type":"import"},{"name":"opendaylight-arbitrary-bitmask-fields_2016-01-30","revision":"2016-01-30","schema":"/rests/modules/opendaylight-arbitrary-bitmask-fields?revision=2016-01-30","namespace":"urn:opendaylight:arbitrary:bitmask:fields","conformance-type":"import"},{"name":"ietf-udp-client_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-client?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-client","conformance-type":"import","feature":["local-binding"]},{"name":"opendaylight-meter-types_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/opendaylight-meter-types?revision=2013-09-18","namespace":"urn:opendaylight:meter:types","conformance-type":"import"},{"name":"opendaylight-action-types_2013-11-12","revision":"2013-11-12","schema":"/rests/modules/opendaylight-action-types?revision=2013-11-12","namespace":"urn:opendaylight:action:types","conformance-type":"import"},{"name":"sal-role_2015-07-27","revision":"2015-07-27","schema":"/rests/modules/sal-role?revision=2015-07-27","namespace":"urn:opendaylight:role:service","conformance-type":"import"},{"name":"openflow-provider-config_2016-05-10","revision":"2016-05-10","schema":"/rests/modules/openflow-provider-config?revision=2016-05-10","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:provider:config","conformance-type":"import"},{"name":"odl-serviceutils-upgrade_2018-07-02","revision":"2018-07-02","schema":"/rests/modules/odl-serviceutils-upgrade?revision=2018-07-02","namespace":"urn:opendaylight:serviceutils:upgrade","conformance-type":"import"},{"name":"opendaylight-match-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-match-types?revision=2013-10-26","namespace":"urn:opendaylight:model:match:types","conformance-type":"import"},{"name":"ietf-restconf-server_2024-08-14","revision":"2024-08-14","schema":"/rests/modules/ietf-restconf-server?revision=2024-08-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-server","conformance-type":"import","feature":["http-listen","https-listen"]},{"name":"reconciliation-result-state_2017-07-13","revision":"2017-07-13","schema":"/rests/modules/reconciliation-result-state?revision=2017-07-13","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:rf:state","conformance-type":"import"},{"name":"onf-extensions_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/onf-extensions?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf","conformance-type":"import"},{"name":"sal-table_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/sal-table?revision=2013-10-26","namespace":"urn:opendaylight:table:service","conformance-type":"import"},{"name":"iana-http-versions_2026-02-04","revision":"2026-02-04","schema":"/rests/modules/iana-http-versions?revision=2026-02-04","namespace":"urn:ietf:params:xml:ns:yang:iana-http-versions","conformance-type":"import"},{"name":"opendaylight-direct-statistics_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/opendaylight-direct-statistics?revision=2016-05-11","namespace":"urn:opendaylight:direct:statistics","conformance-type":"import"},{"name":"opendaylight-port-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-port-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:port","conformance-type":"import"},{"name":"sal-async-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/sal-async-config?revision=2017-06-19","namespace":"urn:opendaylight:async-config:service","conformance-type":"import"},{"name":"aaa-password-service-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-password-service-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:password:service:config","conformance-type":"import"},{"name":"ietf-yang-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-yang-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-types","conformance-type":"import"},{"name":"opendaylight-queue-statistics_2013-12-16","revision":"2013-12-16","schema":"/rests/modules/opendaylight-queue-statistics?revision=2013-12-16","namespace":"urn:opendaylight:queue:statistics","conformance-type":"import"},{"name":"sal-bundle_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/sal-bundle?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf:bundle:service","conformance-type":"import"},{"name":"ietf-restconf-subscribed-notifications_2019-11-17","revision":"2019-11-17","schema":"/rests/modules/ietf-restconf-subscribed-notifications?revision=2019-11-17","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-subscribed-notifications","conformance-type":"import"},{"name":"sal-meters-batch_2016-03-16","revision":"2016-03-16","schema":"/rests/modules/sal-meters-batch?revision=2016-03-16","namespace":"urn:opendaylight:meters:service","conformance-type":"import"},{"name":"odl-entity-owners","revision":"","schema":"/rests/modules/odl-entity-owners","namespace":"urn:opendaylight:params:xml:ns:yang:controller:entity-owners","conformance-type":"import"},{"name":"sal-experimenter-mp-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-mp-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-mp-message:service","conformance-type":"import"},{"name":"packet-processing_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/packet-processing?revision=2013-07-09","namespace":"urn:opendaylight:packet:service","conformance-type":"import"},{"name":"openflow-configuration_2014-06-30","revision":"2014-06-30","schema":"/rests/modules/openflow-configuration?revision=2014-06-30","namespace":"urn:opendaylight:openflow:config","conformance-type":"import"},{"name":"odl-srm-rpcs_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-rpcs?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:rpc","conformance-type":"import"},{"name":"ietf-netconf-acm_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-netconf-acm?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-acm","conformance-type":"import"},{"name":"iana-crypt-hash_2014-08-06","revision":"2014-08-06","schema":"/rests/modules/iana-crypt-hash?revision=2014-08-06","namespace":"urn:ietf:params:xml:ns:yang:iana-crypt-hash","conformance-type":"import","feature":["crypt-hash-sha-512","crypt-hash-sha-256","crypt-hash-md5"]},{"name":"openflow-extensible-match_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-extensible-match?revision=2015-02-25","namespace":"urn:opendaylight:openflow:oxm","conformance-type":"import"}],"module-set-id":"2"}}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:54:28.861267" elapsed="0.003433"/>
</kw>
<status status="PASS" start="2026-04-08T00:54:28.858300" elapsed="0.006460"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:28.858248" elapsed="0.006558"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:54:28.869131" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:54:28.866611" elapsed="0.002838"/>
</kw>
<status status="PASS" start="2026-04-08T00:54:28.864905" elapsed="0.004603"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:28.864886" elapsed="0.004667"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:54:28.871579" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:54:28.870257" elapsed="0.001383"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:28.872380" elapsed="0.000044"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:54:28.871820" elapsed="0.000663"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:54:28.873570" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:54:28.872879" elapsed="0.000748"/>
</kw>
<status status="PASS" start="2026-04-08T00:54:28.872529" elapsed="0.001157"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:28.871798" elapsed="0.001931"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:54:28.875489" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:54:28.874394" elapsed="0.001146"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:28.876282" elapsed="0.000043"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:54:28.875714" elapsed="0.000670"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:54:28.877626" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:54:28.876776" elapsed="0.000920"/>
</kw>
<status status="PASS" start="2026-04-08T00:54:28.876429" elapsed="0.001346"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:28.875692" elapsed="0.002140"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:54:28.878144" elapsed="0.001204"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:54:28.880515" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:54:28.879728" elapsed="0.000835"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:54:28.880887" elapsed="0.002870"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:54:28.855807" elapsed="0.028117"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:54:28.884135" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:54:28.883999" elapsed="0.000200"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:28.883980" elapsed="0.000241"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:54:28.893779" level="INFO">${text_normalized} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:54:28.884375" elapsed="0.009438"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:54:28.893870" elapsed="0.000040"/>
</return>
<msg time="2026-04-08T00:54:28.894048" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:54:28.347873" elapsed="0.546202"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:54:28.894140" elapsed="0.000042"/>
</return>
<msg time="2026-04-08T00:54:28.894316" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="PASS" start="2026-04-08T00:54:28.186582" elapsed="0.707761"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Json_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:28.894696" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:54:28.894431" elapsed="0.000393"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:28.894413" elapsed="0.000437"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:54:28.894885" elapsed="0.000035"/>
</return>
<arg>session=${session}</arg>
<arg>folder=${RESTCONF_MODULES_DIR}</arg>
<arg>verify=False</arg>
<doc>Add arguments sensible for JSON data, return Get_Templated response text.
Optionally, verification against JSON data (may be iterated) is called.
Only subset of JSON data is verified and returned if JMES path is specified in
file ${folder}/jmespath.expr.</doc>
<status status="PASS" start="2026-04-08T00:54:28.180836" elapsed="0.714196"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T00:54:28.175791" elapsed="0.719284"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-08T00:54:28.175654" elapsed="0.719458"/>
</for>
<arg>${member_index_list}</arg>
<status status="PASS" start="2026-04-08T00:54:28.173722" elapsed="0.721522"/>
</kw>
<status status="PASS" start="2026-04-08T00:54:28.173459" elapsed="0.721819"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:28.173443" elapsed="0.721860"/>
</if>
<if>
<branch type="IF" condition="${verify_system_status} and (&quot;${service_list}&quot; != &quot;[[]]&quot;)">
<kw name="Check Status Of Services Is OPERATIONAL" owner="ClusterManagement">
<arg>@{service_list}</arg>
<doc>This keyword will verify whether all the services are operational in all the ODL nodes</doc>
<status status="NOT RUN" start="2026-04-08T00:54:28.895736" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:54:28.895388" elapsed="0.000409"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:28.895345" elapsed="0.000475"/>
</if>
<arg>${member_index_list}</arg>
<arg>${wait_for_sync}</arg>
<arg>${verify_restconf}</arg>
<arg>${check_system_status}</arg>
<arg>${service_list}</arg>
<doc>Verifies the specified readiness conditions for the given listed members after startup.
If ${verify_cluster_sync}, verifies the datastores have synced with the rest of the cluster.
If True, verifies RESTCONF is available.
If ${verify_system_status}, verifies the system services are OPERATIONAL.</doc>
<status status="PASS" start="2026-04-08T00:54:27.669011" elapsed="1.226859"/>
</kw>
<arg>${timeout}</arg>
<arg>10s</arg>
<arg>Verify_Members_Are_Ready</arg>
<arg>${member_index_list}</arg>
<arg>${wait_for_sync}</arg>
<arg>${verify_restconf}</arg>
<arg>${check_system_status}</arg>
<arg>${service_list}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-08T00:54:07.487655" elapsed="21.408280"/>
</kw>
<kw name="Run_Bash_Command_On_List_Or_All" owner="ClusterManagement" type="TEARDOWN">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:54:28.899418" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:54:28.898950" elapsed="0.000496"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:54:28.899915" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:54:28.899608" elapsed="0.000333"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:54:28.899985" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:54:28.900137" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:54:28.898539" elapsed="0.001648"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:54:28.901302" level="INFO">${member_ip} = 10.30.170.48</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:54:28.901013" elapsed="0.000315"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:54:28.902246" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

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

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T00:54:28.906309" elapsed="0.002154"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:54:28.909705" level="INFO">Attempting to execute command "netstat -pnatu | grep 2550" on remote system "10.30.170.48" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:54:28.908621" elapsed="0.001136"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:54:28.910849" level="INFO">${conn_id} = 212</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:54:28.909919" elapsed="0.000958"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T00:54:28.912677" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T00:54:28.912985" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T00:54:28.911857" elapsed="0.001263"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:54:28.913620" elapsed="0.000901"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T00:54:28.916362" level="INFO">Logging into '10.30.170.48:22' as 'jenkins'.</msg>
<msg time="2026-04-08T00:54:29.237857" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 00:53:34 UTC 2026

  System load:  0.61               Processes:             123
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 6%                 IPv4 address for ens3: 10.30.170.48
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 00:53:55 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-0-builder-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T00:54:28.915954" elapsed="0.322143"/>
</kw>
<msg time="2026-04-08T00:54:29.238257" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:54:28.914920" elapsed="0.323716"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T00:54:28.911120" elapsed="0.327786"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T00:54:29.239543" level="INFO">Executing command 'netstat -pnatu | grep 2550'.</msg>
<msg time="2026-04-08T00:54:29.252215" level="INFO">Command exited with return code 1.</msg>
<msg time="2026-04-08T00:54:29.252596" level="INFO">${stdout} = </msg>
<msg time="2026-04-08T00:54:29.252665" level="INFO">${stderr} = bash: line 1: netstat: command not found</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T00:54:29.239149" elapsed="0.013553"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:54:29.252956" elapsed="0.000338"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:54:29.254289" level="INFO">bash: line 1: netstat: command not found</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:54:29.253585" elapsed="0.000780"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:54:29.254806" elapsed="0.000027"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:54:29.254487" elapsed="0.000396"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:29.254452" elapsed="0.000465"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T00:54:29.255235" elapsed="0.000042"/>
</return>
<status status="PASS" start="2026-04-08T00:54:29.255000" elapsed="0.000349"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:29.254976" elapsed="0.000427"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:54:29.255478" elapsed="0.000033"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:54:29.262550" elapsed="0.002106"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:54:29.265493" elapsed="0.001447"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:54:29.267494" elapsed="0.000241"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:54:29.256198" elapsed="0.011709"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T00:54:28.904420" elapsed="0.363586"/>
</kw>
<msg time="2026-04-08T00:54:29.268063" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:54:28.903705" elapsed="0.364426"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-08T00:54:28.903082" elapsed="0.365146"/>
</kw>
<msg time="2026-04-08T00:54:29.268270" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:54:28.902537" elapsed="0.365790"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:54:29.271059" elapsed="0.000448"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:54:29.271670" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:54:29.271960" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:54:29.268621" elapsed="0.003487"/>
</kw>
<msg time="2026-04-08T00:54:29.272215" level="INFO">${output} = </msg>
<var>${output}</var>
<arg>Utils.Run_Command_On_Controller</arg>
<arg>${member_ip}</arg>
<arg>${command}</arg>
<doc>Store current connection index, run keyword returning its result, restore connection in teardown.
Note that in order to avoid "got positional argument after named arguments", it is safer to use positional (not named) arguments on call.</doc>
<status status="PASS" start="2026-04-08T00:54:28.901578" elapsed="0.370662"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:54:29.272674" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:54:29.272424" elapsed="0.000291"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-08T00:54:29.272757" elapsed="0.000029"/>
</return>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-08T00:54:28.900567" elapsed="0.372312"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T00:54:28.900391" elapsed="0.372524"/>
</iter>
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:54:29.273909" level="INFO">${member_ip} = 10.30.170.131</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:54:29.273642" elapsed="0.000293"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:54:29.274753" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

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

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T00:54:29.278875" elapsed="0.000362"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:54:29.280416" level="INFO">Attempting to execute command "netstat -pnatu | grep 2550" on remote system "10.30.170.131" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:54:29.279393" elapsed="0.001072"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:54:29.281477" level="INFO">${conn_id} = 215</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:54:29.280624" elapsed="0.000880"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T00:54:29.283246" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T00:54:29.283550" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T00:54:29.282438" elapsed="0.001246"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:54:29.284070" elapsed="0.000895"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T00:54:29.287151" level="INFO">Logging into '10.30.170.131:22' as 'jenkins'.</msg>
<msg time="2026-04-08T00:54:29.601281" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 00:53:35 UTC 2026

  System load:  0.22               Processes:             122
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 8%                 IPv4 address for ens3: 10.30.170.131
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 00:54:07 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-0-builder-1 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T00:54:29.286771" elapsed="0.314775"/>
</kw>
<msg time="2026-04-08T00:54:29.601787" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:54:29.285399" elapsed="0.316631"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T00:54:29.281723" elapsed="0.320585"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T00:54:29.602898" level="INFO">Executing command 'netstat -pnatu | grep 2550'.</msg>
<msg time="2026-04-08T00:54:29.615505" level="INFO">Command exited with return code 1.</msg>
<msg time="2026-04-08T00:54:29.615763" level="INFO">${stdout} = </msg>
<msg time="2026-04-08T00:54:29.615809" level="INFO">${stderr} = bash: line 1: netstat: command not found</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T00:54:29.602549" elapsed="0.013284"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:54:29.615999" elapsed="0.000265"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:54:29.616921" level="INFO">bash: line 1: netstat: command not found</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:54:29.616472" elapsed="0.000495"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:54:29.617262" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:54:29.617053" elapsed="0.000260"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:29.617026" elapsed="0.000309"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T00:54:29.617528" elapsed="0.000028"/>
</return>
<status status="PASS" start="2026-04-08T00:54:29.617390" elapsed="0.000199"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:29.617374" elapsed="0.000239"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:54:29.617648" elapsed="0.000015"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:54:29.620654" elapsed="0.000941"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:54:29.621977" elapsed="0.000611"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:54:29.622901" elapsed="0.000230"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:54:29.617997" elapsed="0.005341"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T00:54:29.276879" elapsed="0.346556"/>
</kw>
<msg time="2026-04-08T00:54:29.623492" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:54:29.276197" elapsed="0.347361"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-08T00:54:29.275629" elapsed="0.348010"/>
</kw>
<msg time="2026-04-08T00:54:29.623681" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:54:29.275028" elapsed="0.348711"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:54:29.626500" elapsed="0.000311"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:54:29.626975" elapsed="0.000142"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:54:29.627278" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:54:29.624032" elapsed="0.003394"/>
</kw>
<msg time="2026-04-08T00:54:29.627517" level="INFO">${output} = </msg>
<var>${output}</var>
<arg>Utils.Run_Command_On_Controller</arg>
<arg>${member_ip}</arg>
<arg>${command}</arg>
<doc>Store current connection index, run keyword returning its result, restore connection in teardown.
Note that in order to avoid "got positional argument after named arguments", it is safer to use positional (not named) arguments on call.</doc>
<status status="PASS" start="2026-04-08T00:54:29.274149" elapsed="0.353393"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:54:29.627971" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:54:29.627722" elapsed="0.000290"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-08T00:54:29.628053" elapsed="0.000028"/>
</return>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-08T00:54:29.273201" elapsed="0.354991"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T00:54:29.273008" elapsed="0.355222"/>
</iter>
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:54:29.629228" level="INFO">${member_ip} = 10.30.171.110</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:54:29.628932" elapsed="0.000322"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:54:29.630107" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

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

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T00:54:29.634442" elapsed="0.000340"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:54:29.635957" level="INFO">Attempting to execute command "netstat -pnatu | grep 2550" on remote system "10.30.171.110" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:54:29.634934" elapsed="0.001070"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:54:29.636996" level="INFO">${conn_id} = 218</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:54:29.636178" elapsed="0.000846"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T00:54:29.638796" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T00:54:29.639097" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T00:54:29.637987" elapsed="0.001262"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:54:29.639761" elapsed="0.000906"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T00:54:29.642714" level="INFO">Logging into '10.30.171.110:22' as 'jenkins'.</msg>
<msg time="2026-04-08T00:54:29.951154" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 00:53:35 UTC 2026

  System load:  0.21               Processes:             123
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 8%                 IPv4 address for ens3: 10.30.171.110
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 00:53:56 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T00:54:29.642133" elapsed="0.309277"/>
</kw>
<msg time="2026-04-08T00:54:29.951546" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:54:29.641068" elapsed="0.310695"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T00:54:29.637272" elapsed="0.314739"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T00:54:29.952617" level="INFO">Executing command 'netstat -pnatu | grep 2550'.</msg>
<msg time="2026-04-08T00:54:29.964922" level="INFO">Command exited with return code 1.</msg>
<msg time="2026-04-08T00:54:29.965644" level="INFO">${stdout} = </msg>
<msg time="2026-04-08T00:54:29.965747" level="INFO">${stderr} = bash: line 1: netstat: command not found</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T00:54:29.952267" elapsed="0.013533"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:54:29.966206" elapsed="0.000459"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:54:29.968129" level="INFO">bash: line 1: netstat: command not found</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:54:29.967079" elapsed="0.001193"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:54:29.968807" elapsed="0.000038"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:54:29.968449" elapsed="0.000468"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:29.968399" elapsed="0.000568"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T00:54:29.969492" elapsed="0.000063"/>
</return>
<status status="PASS" start="2026-04-08T00:54:29.969089" elapsed="0.000568"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:29.969053" elapsed="0.000773"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:54:29.969915" elapsed="0.000034"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:54:29.976047" elapsed="0.001375"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:54:29.977928" elapsed="0.000830"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:54:29.979213" elapsed="0.000327"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:54:29.970687" elapsed="0.009089"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T00:54:29.632546" elapsed="0.347364"/>
</kw>
<msg time="2026-04-08T00:54:29.979988" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:54:29.631851" elapsed="0.348229"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-08T00:54:29.631045" elapsed="0.349164"/>
</kw>
<msg time="2026-04-08T00:54:29.980268" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:54:29.630542" elapsed="0.349807"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:54:29.984698" elapsed="0.000519"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:54:29.985461" elapsed="0.000221"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:54:29.985904" elapsed="0.000141"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:54:29.980751" elapsed="0.005367"/>
</kw>
<msg time="2026-04-08T00:54:29.986280" level="INFO">${output} = </msg>
<var>${output}</var>
<arg>Utils.Run_Command_On_Controller</arg>
<arg>${member_ip}</arg>
<arg>${command}</arg>
<doc>Store current connection index, run keyword returning its result, restore connection in teardown.
Note that in order to avoid "got positional argument after named arguments", it is safer to use positional (not named) arguments on call.</doc>
<status status="PASS" start="2026-04-08T00:54:29.629524" elapsed="0.356799"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:54:29.986769" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:54:29.986516" elapsed="0.000294"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-08T00:54:29.986851" elapsed="0.000029"/>
</return>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-08T00:54:29.628503" elapsed="0.358471"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T00:54:29.628325" elapsed="0.358686"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-08T00:54:28.900244" elapsed="1.086802"/>
</for>
<arg>command=netstat -pnatu | grep 2550</arg>
<doc>Cycle through indices (or all), run command on each.</doc>
<status status="PASS" start="2026-04-08T00:54:28.896253" elapsed="1.090850"/>
</kw>
<arg>${index_list}</arg>
<arg>${wait_for_sync}</arg>
<arg>${timeout}</arg>
<arg>check_system_status=${check_system_status}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>service_list=${service_list}</arg>
<doc>If the list is empty, start all cluster members. Otherwise, start members based on present indices.
If True, wait for cluster sync on listed members.
Optionally karaf_home can be overriden. Optionally specific JAVA_HOME is used for starting.
Garbage collection is unconditionally logged to files. TODO: Make that reasonable conditional?</doc>
<status status="PASS" start="2026-04-08T00:54:06.996659" elapsed="22.990510"/>
</kw>
<arg>${follower_node_2}</arg>
<doc>Convenience keyword that starts the specified member of the cluster.</doc>
<status status="PASS" start="2026-04-08T00:53:56.829744" elapsed="33.157498"/>
</kw>
<doc>Stop Follower Node2 and Start it Up, Verify it is sync with other controller node.</doc>
<status status="PASS" start="2026-04-08T00:53:45.831065" elapsed="44.156296"/>
</test>
<test id="s1-s3-t12" name="Get inventory Follower After Follower Restart" line="92">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-08T00:54:29.991042" elapsed="0.000243"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-08T00:54:29.990721" elapsed="0.000623"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:54:29.992390" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:54:29.992278" elapsed="0.000158"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:29.992259" elapsed="0.000199"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:54:29.997581" elapsed="0.000019"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:54:29.997432" elapsed="0.000208"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:29.997247" elapsed="0.000420"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:54:29.998820" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:54:29.998332" elapsed="0.000525"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:54:29.999506" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:54:29.999062" elapsed="0.000478"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:54:29.999598" elapsed="0.000038"/>
</return>
<msg time="2026-04-08T00:54:29.999799" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:54:29.997922" elapsed="0.001911"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:54:30.006081" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:54:30.005969" elapsed="0.000158"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:30.005949" elapsed="0.000201"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:54:30.007479" elapsed="0.000019"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:54:30.007343" elapsed="0.000194"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:30.007318" elapsed="0.000247"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:54:30.008144" level="INFO">${karaf_connection_index} = 157</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:54:30.007755" elapsed="0.000440"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:54:30.008603" level="INFO">${current_connection_index} = None</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:54:30.008360" elapsed="0.000270"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T00:54:30.045396" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T00:54:30.009173" elapsed="0.036502"/>
</kw>
<msg time="2026-04-08T00:54:30.046037" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T00:54:30.046107" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:54:30.008789" elapsed="0.037401"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T00:54:30.121940" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "a "d "e "r "[C "F "o "l "l "o "w "e "r "[C "F "a "i "l "o "v "e "r ". "G "e "t "[C "i "n "v "e "n "t "o "r "y "[C "F "o "l "[78Cl "[A[78Co
 "w "e "r "[C "A "f "t "e "r "[C "F "o "l "l "o "w "e "r "[C "R "e "s "t "a "r "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T00:54:30.047230" elapsed="0.074867"/>
</kw>
<msg time="2026-04-08T00:54:30.122320" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T00:54:30.122367" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:54:30.046552" elapsed="0.075851"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:30.122786" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:54:30.122511" elapsed="0.000332"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:30.122480" elapsed="0.000392"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:54:30.123410" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "a "d "e "r "[C "F "o "l "l "o "w "e "r "[C "F "a "i "l "o "v "e "r ". "G "e "t "[C "i "n "v "e "n "t "o "r "y "[C "F "o "l "[78Cl "[A[78Co
 "w "e "r "[C "A "f "t "e "r "[C "F "o "l "l "o "w "e "r "[C "R "e "s "t "a "r "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:54:30.123021" elapsed="0.000480"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:30.123789" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:54:30.123569" elapsed="0.000274"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:30.123551" elapsed="0.000316"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T00:54:30.123906" elapsed="0.000043"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:54:30.125718" elapsed="0.001042"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:54:30.127093" elapsed="0.000651"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:54:30.128184" elapsed="0.000495"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:54:30.124872" elapsed="0.003931"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T00:54:30.124268" elapsed="0.004609"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T00:54:30.006951" elapsed="0.122058"/>
</kw>
<msg time="2026-04-08T00:54:30.129113" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:54:30.129173" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:54:30.006341" elapsed="0.122871"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T00:54:30.129404" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-08T00:54:30.129295" elapsed="0.000168"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:30.129274" elapsed="0.000213"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:30.129904" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:30.130262" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T00:54:30.130334" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T00:54:30.005602" elapsed="0.124842"/>
</kw>
<msg time="2026-04-08T00:54:30.130543" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:54:30.130587" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:54:30.000358" elapsed="0.130266"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:30.130953" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:54:30.130703" elapsed="0.000303"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:30.130686" elapsed="0.000343"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T00:54:30.000136" elapsed="0.130917"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:54:30.136870" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:54:30.136761" elapsed="0.000167"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:30.136742" elapsed="0.000208"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:54:30.138248" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:54:30.138110" elapsed="0.000183"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:30.138092" elapsed="0.000223"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:54:30.138802" level="INFO">${karaf_connection_index} = 206</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:54:30.138459" elapsed="0.000370"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:54:30.139245" level="INFO">${current_connection_index} = None</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:54:30.138988" elapsed="0.000283"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T00:54:30.140058" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-08T00:54:30.139768" elapsed="0.001075">Cannot open session, you need to establish a connection first.</status>
</kw>
<msg time="2026-04-08T00:54:30.141090" level="INFO">${status_write} = FAIL</msg>
<msg time="2026-04-08T00:54:30.141136" level="INFO">${message_write} = Cannot open session, you need to establish a connection first.</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:54:30.139432" elapsed="0.001743"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T00:54:30.141959" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="FAIL" start="2026-04-08T00:54:30.141692" elapsed="0.001007">Cannot open session, you need to establish a connection first.</status>
</kw>
<msg time="2026-04-08T00:54:30.142917" level="INFO">${status_wait} = FAIL</msg>
<msg time="2026-04-08T00:54:30.142963" level="INFO">${message_wait} = Cannot open session, you need to establish a connection first.</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:54:30.141347" elapsed="0.001640"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T00:54:30.144114" level="FAIL">Failed to send the command: log:log "ROBOT MESSAGE: Starting test openflowplugin-clustering.txt.Cluster HA Data Recovery Leader Follower Failover.Get inventory Follower After Follower Restart"</msg>
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T00:54:30.143350" elapsed="0.000844">Failed to send the command: log:log "ROBOT MESSAGE: Starting test openflowplugin-clustering.txt.Cluster HA Data Recovery Leader Follower Failover.Get inventory Follower After Follower Restart"</status>
</kw>
<status status="FAIL" start="2026-04-08T00:54:30.143102" elapsed="0.001164">Failed to send the command: log:log "ROBOT MESSAGE: Starting test openflowplugin-clustering.txt.Cluster HA Data Recovery Leader Follower Failover.Get inventory Follower After Follower Restart"</status>
</branch>
<status status="FAIL" start="2026-04-08T00:54:30.143081" elapsed="0.001218">Failed to send the command: log:log "ROBOT MESSAGE: Starting test openflowplugin-clustering.txt.Cluster HA Data Recovery Leader Follower Failover.Get inventory Follower After Follower Restart"</status>
</if>
<kw name="Log" owner="BuiltIn">
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:30.144457" elapsed="0.000023"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:30.144684" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:54:30.144544" elapsed="0.000192"/>
</branch>
<status status="NOT RUN" start="2026-04-08T00:54:30.144527" elapsed="0.000231"/>
</if>
<return>
<value>${message_wait}</value>
<status status="NOT RUN" start="2026-04-08T00:54:30.144792" elapsed="0.000014"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:54:30.146390" elapsed="0.001077"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:54:30.147793" elapsed="0.000612"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:54:30.148720" elapsed="0.000654"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:54:30.145628" elapsed="0.003872"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T00:54:30.145067" elapsed="0.004503"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="FAIL" start="2026-04-08T00:54:30.137805" elapsed="0.011854">Failed to send the command: log:log "ROBOT MESSAGE: Starting test openflowplugin-clustering.txt.Cluster HA Data Recovery Leader Follower Failover.Get inventory Follower After Follower Restart"</status>
</kw>
<msg time="2026-04-08T00:54:30.149762" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:54:30.149806" level="INFO">${message} = Failed to send the command: log:log "ROBOT MESSAGE: Starting test openflowplugin-clustering.txt.Cluster HA Data Recovery Leader Follower Failover.Get inventory Follower After Follower Restart"</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:54:30.137102" elapsed="0.012728"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T00:54:30.150015" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:54:30.149908" elapsed="0.000150"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:30.149888" elapsed="0.000191"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:54:30.150881" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:54:30.150776" elapsed="0.000149"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:30.150758" elapsed="0.000188"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:54:30.151514" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T00:54:30.151096" elapsed="0.000554"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:54:30.152064" level="INFO">{1: 157, 2: 206, 3: 86}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:54:30.151801" elapsed="0.000308"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:54:30.152523" level="INFO">2</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:54:30.152276" elapsed="0.000291"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:54:30.153107" elapsed="0.000317"/>
</kw>
<msg time="2026-04-08T00:54:30.153523" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:54:30.153569" level="INFO">${old_connection_index} = 206</msg>
<var>${status}</var>
<var>${old_connection_index}</var>
<arg>Get From Dictionary</arg>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:54:30.152722" elapsed="0.000870"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='PASS'">
<kw name="Run Keywords" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${old_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:54:30.154427" elapsed="0.000221"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T00:54:30.156092" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>logout</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-08T00:54:30.155576" elapsed="0.001658">Cannot open session, you need to establish a connection first.</status>
</kw>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:54:30.154818" elapsed="0.002570"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:54:30.158085" elapsed="0.000389"/>
</kw>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:54:30.157564" elapsed="0.001012"/>
</kw>
<arg>SSHLibrary.Switch_Connection</arg>
<arg>${old_connection_index}</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Executes all the given keywords in a sequence.</doc>
<status status="PASS" start="2026-04-08T00:54:30.153887" elapsed="0.004735"/>
</kw>
<status status="PASS" start="2026-04-08T00:54:30.153668" elapsed="0.005004"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:30.153649" elapsed="0.005048"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:54:30.159576" level="INFO">${ip_address} = 10.30.170.131</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:54:30.159248" elapsed="0.000355"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:54:30.159651" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:54:30.159801" level="INFO">${odl_ip} = 10.30.170.131</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:54:30.158900" elapsed="0.000925"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${odl_ip}</arg>
<arg>port=${KARAF_SHELL_PORT}</arg>
<arg>prompt=${KARAF_PROMPT_LOGIN}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:54:30.159976" elapsed="0.000429"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:54:30.160690" level="INFO">index=223
host=10.30.170.131
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-08T00:54:30.160788" level="INFO">${karaf_connection_object} = index=223
host=10.30.170.131
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_er...</msg>
<var>${karaf_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T00:54:30.160570" elapsed="0.000243"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<arg>${karaf_connection_object.index}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:54:30.160974" elapsed="0.002363"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-08T00:54:30.163773" level="INFO">Logging into '10.30.170.131:8101' as 'karaf'.</msg>
<msg time="2026-04-08T00:54:30.708801" level="INFO">Read output: [33m                                                                                           
[33m    ________                       ________                .__  .__       .__     __       
[33m    \_____  \ ______   ____   ____ \______ \ _____  ___.__.|  | |__| ____ |  |___/  |_     
[33m     /   |   \\____ \_/ __ \ /    \ |    |  \\__  \&lt;   |  ||  | |  |/ ___\|  |  \   __\    
[33m    /    |    \  |_&gt; &gt;  ___/|   |  \|    `   \/ __ \\___  ||  |_|  / /_/  &gt;   Y  \  |      
[33m    \_______  /   __/ \___  &gt;___|  /_______  (____  / ____||____/__\___  /|___|  /__|      
[33m            \/|__|        \/     \/        \/     \/\/            /_____/      \/          
[33m                                                                                           

Hit '[1m&lt;tab&gt;[0m' for a list of available commands
and '[1m[cmd] --help[0m' for help on a specific command.
Hit '[1m&lt;ctrl-d&gt;[0m' or type '[1msystem:shutdown[0m' or '[1mlogout[0m' to shutdown OpenDaylight.

[?1h=[90m~[0m                                                                                [?2004hopendaylight-user</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="PASS" start="2026-04-08T00:54:30.163508" elapsed="0.545442"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:54:30.721147" elapsed="0.000794"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:54:30.722116" elapsed="0.000186"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:54:30.722453" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:54:30.710127" elapsed="0.012482"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T00:54:30.709384" elapsed="0.013273"/>
</kw>
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 2,
close the previous connection. In any case create a new connection
to karaf console for 2, set correct prompt set and login to karaf console.
Store connection index for 2 and restore the previous active connection.</doc>
<status status="PASS" start="2026-04-08T00:54:30.150489" elapsed="0.572220"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:54:30.723517" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:54:30.723397" elapsed="0.000171"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:30.723370" elapsed="0.000221"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:54:30.723983" level="INFO">${karaf_connection_index} = 223</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:54:30.723734" elapsed="0.000275"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:54:30.724368" level="INFO">${current_connection_index} = None</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:54:30.724192" elapsed="0.000202"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T00:54:30.815976" level="INFO">@root&gt;log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T00:54:30.724962" elapsed="0.091098"/>
</kw>
<msg time="2026-04-08T00:54:30.816186" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T00:54:30.816234" level="INFO">${message_write} = @root&gt;log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:54:30.724621" elapsed="0.091651"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T00:54:30.990322" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "a "d "e "r "[C "F "o "l "l "o "w "e "r "[C "F "a "i "l "o "v "e "r ". "G "e "t "[C "i "n "v "e "n "t "o "r "y "[C "F "o "l "[78Cl "[A[78Co
 "w "e "r "[C "A "f "t "e "r "[C "F "o "l "l "o "w "e "r "[C "R "e "s "t "a "r "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T00:54:30.816822" elapsed="0.173703"/>
</kw>
<msg time="2026-04-08T00:54:30.990690" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T00:54:30.990739" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:54:30.816477" elapsed="0.174300"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:30.991289" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:54:30.990910" elapsed="0.000479"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:30.990865" elapsed="0.000558"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:54:30.991954" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "a "d "e "r "[C "F "o "l "l "o "w "e "r "[C "F "a "i "l "o "v "e "r ". "G "e "t "[C "i "n "v "e "n "t "o "r "y "[C "F "o "l "[78Cl "[A[78Co
 "w "e "r "[C "A "f "t "e "r "[C "F "o "l "l "o "w "e "r "[C "R "e "s "t "a "r "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:54:30.991593" elapsed="0.000456"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:30.992357" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:54:30.992119" elapsed="0.000304"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:30.992100" elapsed="0.000354"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T00:54:30.992503" elapsed="0.000048"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:54:30.993889" elapsed="0.000636"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:54:30.994751" elapsed="0.000234"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:54:30.995259" elapsed="0.000170"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:54:30.993435" elapsed="0.002069"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T00:54:30.992854" elapsed="0.002714"/>
</kw>
<msg time="2026-04-08T00:54:30.995725" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "...</msg>
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T00:54:30.723058" elapsed="0.272716"/>
</kw>
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T00:54:30.995832" elapsed="0.000039"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T00:54:30.136410" elapsed="0.859594"/>
</kw>
<msg time="2026-04-08T00:54:30.996127" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:54:30.996199" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:54:30.131372" elapsed="0.864878"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:30.996711" elapsed="0.000029"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:54:30.996363" elapsed="0.000421"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:30.996338" elapsed="0.000479"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T00:54:30.131223" elapsed="0.865628"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:54:31.002422" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:54:31.002307" elapsed="0.000162"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:31.002286" elapsed="0.000206"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:54:31.003882" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:54:31.003647" elapsed="0.000283"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:31.003628" elapsed="0.000324"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:54:31.004430" level="INFO">${karaf_connection_index} = 86</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:54:31.004101" elapsed="0.000357"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:54:31.004843" level="INFO">${current_connection_index} = None</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:54:31.004619" elapsed="0.000251"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T00:54:31.042642" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T00:54:31.005400" elapsed="0.037505"/>
</kw>
<msg time="2026-04-08T00:54:31.043218" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T00:54:31.043303" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:54:31.005030" elapsed="0.038328"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T00:54:31.148236" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "a "d "e "r "[C "F "o "l "l "o "w "e "r "[C "F "a "i "l "o "v "e "r ". "G "e "t "[C "i "n "v "e "n "t "o "r "y "[C "F "o "l "[78Cl "[A[78Co
 "w "e "r "[C "A "f "t "e "r "[C "F "o "l "l "o "w "e "r "[C "R "e "s "t "a "r "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T00:54:31.044260" elapsed="0.104130"/>
</kw>
<msg time="2026-04-08T00:54:31.148558" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T00:54:31.148607" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:54:31.043672" elapsed="0.104972"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:31.149031" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:54:31.148754" elapsed="0.000334"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:31.148722" elapsed="0.000396"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:54:31.149605" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "a "d "e "r "[C "F "o "l "l "o "w "e "r "[C "F "a "i "l "o "v "e "r ". "G "e "t "[C "i "n "v "e "n "t "o "r "y "[C "F "o "l "[78Cl "[A[78Co
 "w "e "r "[C "A "f "t "e "r "[C "F "o "l "l "o "w "e "r "[C "R "e "s "t "a "r "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:54:31.149286" elapsed="0.000411"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:31.149986" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:54:31.149766" elapsed="0.000275"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:31.149746" elapsed="0.000318"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T00:54:31.150103" elapsed="0.000041"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:54:31.151727" elapsed="0.000787"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:54:31.152792" elapsed="0.000485"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:54:31.153543" elapsed="0.000353"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:54:31.151041" elapsed="0.002958"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T00:54:31.150465" elapsed="0.003599"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T00:54:31.003277" elapsed="0.150902"/>
</kw>
<msg time="2026-04-08T00:54:31.154280" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:54:31.154325" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:54:31.002644" elapsed="0.151716"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T00:54:31.154618" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-08T00:54:31.154508" elapsed="0.000170"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:31.154488" elapsed="0.000214"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 3,
close the previous connection. In any case create a new connection
to karaf console for 3, set correct prompt set and login to karaf console.
Store connection index for 3 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:31.155131" elapsed="0.000057"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:31.155508" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T00:54:31.155579" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T00:54:31.001827" elapsed="0.153861"/>
</kw>
<msg time="2026-04-08T00:54:31.155786" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:54:31.155830" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:54:30.997244" elapsed="0.158624"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:31.156211" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:54:31.155945" elapsed="0.000320"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:31.155928" elapsed="0.000360"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T00:54:30.997038" elapsed="0.159274"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-08T00:54:29.999905" elapsed="1.156446"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-08T00:54:29.996821" elapsed="1.159597"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-08T00:54:29.991962" elapsed="1.164516"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:54:29.991494" elapsed="1.165031"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-08T00:54:29.988626" elapsed="1.167956"/>
</kw>
<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-04-08T00:54:31.163562" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:54:31.163087" elapsed="0.000503"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:54:31.164047" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:54:31.163748" elapsed="0.000324"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:54:31.164116" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:54:31.164285" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:54:31.162708" elapsed="0.001602"/>
</kw>
<kw name="Sort List" owner="Collections">
<arg>${index_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="PASS" start="2026-04-08T00:54:31.164465" elapsed="0.000173"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:54:31.165121" level="INFO">${ds_type} = config</msg>
<var>${ds_type}</var>
<arg>'${shard_type}' != 'config'</arg>
<arg>operational</arg>
<arg>config</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:54:31.164794" elapsed="0.000353"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:54:31.165554" level="INFO">${leader_list} = []</msg>
<var>${leader_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:54:31.165318" elapsed="0.000261"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:54:31.165955" level="INFO">${follower_list} = []</msg>
<var>${follower_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:54:31.165723" elapsed="0.000257"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_Raft_State_Of_Shard_At_Member" owner="ClusterManagement">
<kw name="Get_Raft_Property_From_Shard_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:54:31.168656" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:54:31.168355" elapsed="0.000328"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:54:31.168728" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:54:31.168875" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:54:31.167996" elapsed="0.000904"/>
</kw>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Get_As_Json_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:54:31.239546" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:54:31.239111" elapsed="0.000465"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:54:31.240365" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:54:31.240069" elapsed="0.000376">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-08T00:54:31.240537" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:54:31.239740" elapsed="0.000822"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:54:31.241105" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:54:31.240723" elapsed="0.000409"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T00:54:31.241451" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-08T00:54:31.241611" level="INFO">${template} = /rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T00:54:31.241307" elapsed="0.000329"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:54:31.242031" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:54:31.241789" elapsed="0.000286"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:54:31.243225" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:54:31.242950" elapsed="0.000320"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-08T00:54:31.243701" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-08T00:54:31.243429" elapsed="0.000298"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:31.244047" elapsed="0.000022"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:31.244273" elapsed="0.000024"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:31.244444" elapsed="0.000021"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-08T00:54:31.243914" elapsed="0.000587"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-08T00:54:31.243775" elapsed="0.000755"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-08T00:54:31.244573" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:54:31.244732" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-08T00:54:31.242458" elapsed="0.002299"/>
</kw>
<status status="PASS" start="2026-04-08T00:54:31.242145" elapsed="0.002643"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:31.244956" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:54:31.244813" elapsed="0.000197"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:31.242126" elapsed="0.002904"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:54:31.245624" level="INFO">${final_text} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:54:31.245183" elapsed="0.000468"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T00:54:31.245699" elapsed="0.000028"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="PASS" start="2026-04-08T00:54:31.238415" elapsed="0.007447"/>
</kw>
<msg time="2026-04-08T00:54:31.245931" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:54:31.225512" elapsed="0.020558"/>
</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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:31.258989" elapsed="0.000051"/>
</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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:31.271978" elapsed="0.000053"/>
</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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:31.284786" elapsed="0.000051"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:31.285139" elapsed="0.000090"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:31.285462" elapsed="0.000074"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:31.286263" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:54:31.286025" elapsed="0.000307"/>
</branch>
<status status="NOT RUN" start="2026-04-08T00:54:31.285998" elapsed="0.000376"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:31.286634" elapsed="0.000035"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:31.286960" elapsed="0.000035"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:31.287286" elapsed="0.000034"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-08T00:54:31.285933" elapsed="0.001435"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-08T00:54:31.285677" elapsed="0.001761"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:31.287746" elapsed="0.000074"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-08T00:54:31.287987" elapsed="0.000018"/>
</return>
<msg time="2026-04-08T00:54:31.288177" level="INFO">${uri} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-08T00:54:31.215819" elapsed="0.072386"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:54:31.290130" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:54:31.289826" elapsed="0.000385">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-08T00:54:31.290359" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:54:31.289038" elapsed="0.001365"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:31.291759" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:54:31.290550" elapsed="0.001294"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:54:31.292683" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:54:31.292188" elapsed="0.000539"/>
</kw>
<status status="PASS" start="2026-04-08T00:54:31.291882" elapsed="0.000894"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:31.290530" elapsed="0.002281"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:54:31.297389" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:54:31.293008" elapsed="0.004424"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-08T00:54:31.297633" elapsed="0.000034"/>
</return>
<msg time="2026-04-08T00:54:31.297866" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:54:31.288585" elapsed="0.009307"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:54:31.299974" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:54:31.299673" elapsed="0.000367">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-08T00:54:31.300204" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:54:31.298730" elapsed="0.001515"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-08T00:54:31.300687" elapsed="0.000050"/>
</return>
<status status="PASS" start="2026-04-08T00:54:31.300396" elapsed="0.000429"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:31.300374" elapsed="0.000490"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:31.301058" elapsed="0.000075"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:31.301389" elapsed="0.000075"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-08T00:54:31.301584" elapsed="0.000017"/>
</return>
<msg time="2026-04-08T00:54:31.314486" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:54:31.298270" elapsed="0.016244"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:54:31.317388" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:54:31.316779" elapsed="0.000740"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:54:31.318359" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:54:31.317753" elapsed="0.000737"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:54:31.356991" level="INFO">GET Request : url=http://10.30.170.48:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 path_url=/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01jewze00gqgu8yuon50tdwq65226.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:54:31.357947" level="INFO">GET Response : url=http://10.30.170.48:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Transfer-Encoding': 'chunked'} 
 body={"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","hidden-symmetric-keys","encrypted-private-keys","asymmetrically-encrypted-value-format","cms-encrypted-data-format","cleartext-private-keys","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["ssh-client-keepalives","client-ident-hostbased","client-ident-publickey","client-ident-password"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-ex... (set the log level to DEBUG or TRACE to see the full content) 
 </msg>
<msg time="2026-04-08T00:54:31.358691" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:54:31.321841" elapsed="0.036984"/>
</kw>
<status status="PASS" start="2026-04-08T00:54:31.318618" elapsed="0.040337"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:31.361241" elapsed="0.000084"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:54:31.359047" elapsed="0.002467"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:31.318597" elapsed="0.043007"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:54:31.369854" level="INFO">{"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","hidden-symmetric-keys","encrypted-private-keys","asymmetrically-encrypted-value-format","cms-encrypted-data-format","cleartext-private-keys","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["ssh-client-keepalives","client-ident-hostbased","client-ident-publickey","client-ident-password"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-experimenter-types?revision=2015-10-20","namespace":"urn:opendaylight:openflowplugin:experimenter:types","conformance-type":"import"},{"name":"ietf-ip_2018-02-22","revision":"2018-02-22","schema":"/rests/modules/ietf-ip?revision=2018-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-ip","conformance-type":"import","feature":["ipv6-privacy-autoconf","ipv4-non-contiguous-netmasks"]},{"name":"ietf-tcp-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-client","conformance-type":"import","feature":["local-binding-supported","tcp-client-keepalives"]},{"name":"node-config_2014-10-15","revision":"2014-10-15","schema":"/rests/modules/node-config?revision=2014-10-15","namespace":"urn:opendaylight:module:config","conformance-type":"import"},{"name":"ietf-restconf_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf","conformance-type":"import"},{"name":"ietf-datastores_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-datastores?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-datastores","conformance-type":"import"},{"name":"ietf-yang-patch_2017-02-22","revision":"2017-02-22","schema":"/rests/modules/ietf-yang-patch?revision=2017-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-patch","conformance-type":"import"},{"name":"sal-group_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-group?revision=2013-09-18","namespace":"urn:opendaylight:group:service","conformance-type":"import"},{"name":"odl-codegen-extensions_2024-06-27","revision":"2024-06-27","schema":"/rests/modules/odl-codegen-extensions?revision=2024-06-27","namespace":"urn:opendaylight:yang:extension:codegen","conformance-type":"import"},{"name":"sal-meter_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-meter?revision=2013-09-18","namespace":"urn:opendaylight:meter:service","conformance-type":"import"},{"name":"ietf-interfaces_2018-02-20","revision":"2018-02-20","schema":"/rests/modules/ietf-interfaces?revision=2018-02-20","namespace":"urn:ietf:params:xml:ns:yang:ietf-interfaces","conformance-type":"import","feature":["pre-provisioning","if-mib","arbitrary-names"]},{"name":"opendaylight-l2-types_2013-08-27","revision":"2013-08-27","schema":"/rests/modules/opendaylight-l2-types?revision=2013-08-27","namespace":"urn:opendaylight:l2:types","conformance-type":"import"},{"name":"opendaylight-flow-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-flow-types?revision=2013-10-26","namespace":"urn:opendaylight:flow:types","conformance-type":"import"},{"name":"lldp-speaker-config_2016-05-12","revision":"2016-05-12","schema":"/rests/modules/lldp-speaker-config?revision=2016-05-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker:config","conformance-type":"import"},{"name":"aaa-cert_2015-11-26","revision":"2015-11-26","schema":"/rests/modules/aaa-cert?revision=2015-11-26","namespace":"urn:opendaylight:yang:aaa:cert","conformance-type":"import"},{"name":"openflow-action_2015-02-03","revision":"2015-02-03","schema":"/rests/modules/openflow-action?revision=2015-02-03","namespace":"urn:opendaylight:openflow:common:action","conformance-type":"import"},{"name":"openflow-approved-extensions_2016-08-02","revision":"2016-08-02","schema":"/rests/modules/openflow-approved-extensions?revision=2016-08-02","namespace":"urn:opendaylight:openflow:approved:extensions","conformance-type":"import"},{"name":"nc-notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/nc-notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netmod:notification","conformance-type":"import"},{"name":"ietf-netconf-nmda_2019-01-07","revision":"2019-01-07","schema":"/rests/modules/ietf-netconf-nmda?revision=2019-01-07","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-nmda","conformance-type":"import","feature":["with-defaults","origin"]},{"name":"ietf-tcp-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-common","conformance-type":"import","feature":["keepalives-supported"]},{"name":"network-topology_2013-10-21","revision":"2013-10-21","schema":"/rests/modules/network-topology?revision=2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:network-topology","conformance-type":"import"},{"name":"aaa-encrypt-service-config_2024-02-02","revision":"2024-02-02","schema":"/rests/modules/aaa-encrypt-service-config?revision=2024-02-02","namespace":"config:aaa:authn:encrypt:service:config","conformance-type":"import"},{"name":"openflow-instruction_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-instruction?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:instruction","conformance-type":"import"},{"name":"ietf-tls-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-client","conformance-type":"import","feature":["client-ident-x509-cert","server-auth-x509-cert"]},{"name":"opendaylight-group-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-group-statistics?revision=2013-11-11","namespace":"urn:opendaylight:group:statistics","conformance-type":"import"},{"name":"cluster-admin_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/cluster-admin?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:cluster:admin","conformance-type":"import"},{"name":"opendaylight-flow-statistics_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-flow-statistics?revision=2013-08-19","namespace":"urn:opendaylight:flow:statistics","conformance-type":"import"},{"name":"opendaylight-table-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-table-types?revision=2013-10-26","namespace":"urn:opendaylight:table:types","conformance-type":"import"},{"name":"forwarding-rules-manager-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/forwarding-rules-manager-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:forwardingrules-manager:config","conformance-type":"import"},{"name":"odl-srm-types_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-types?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:types","conformance-type":"import"},{"name":"ietf-x509-cert-to-name_2014-12-10","revision":"2014-12-10","schema":"/rests/modules/ietf-x509-cert-to-name?revision=2014-12-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-x509-cert-to-name","conformance-type":"import"},{"name":"flow-node-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-node-inventory?revision=2013-08-19","namespace":"urn:opendaylight:flow:inventory","conformance-type":"import"},{"name":"flow-errors_2013-11-16","revision":"2013-11-16","schema":"/rests/modules/flow-errors?revision=2013-11-16","namespace":"urn:opendaylight:flow:errors","conformance-type":"import"},{"name":"ietf-netconf_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:netconf:base:1.0","conformance-type":"import","feature":["xpath","url","rollback-on-error","validate","startup","candidate","confirmed-commit","writable-running"]},{"name":"iana-ssh-public-key-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-public-key-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-public-key-algs","conformance-type":"import"},{"name":"aaa-cert-mdsal_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/aaa-cert-mdsal?revision=2016-03-21","namespace":"urn:opendaylight:yang:aaa:cert:mdsal","conformance-type":"import"},{"name":"odl-device-notification_2024-02-18","revision":"2024-02-18","schema":"/rests/modules/odl-device-notification?revision=2024-02-18","namespace":"urn:opendaylight:device:notification","conformance-type":"import"},{"name":"ietf-origin_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-origin?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-origin","conformance-type":"import"},{"name":"openflow-augments_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-augments?revision=2015-02-25","namespace":"urn:opendaylight:openflow:augments","conformance-type":"import"},{"name":"iana-ssh-encryption-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-encryption-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-encryption-algs","conformance-type":"import"},{"name":"ietf-truststore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-truststore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-truststore","conformance-type":"import","feature":["inline-definitions-supported"]},{"name":"distributed-datastore-provider_2025-01-30","revision":"2025-01-30","schema":"/rests/modules/distributed-datastore-provider?revision=2025-01-30","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:distributed-datastore-provider","conformance-type":"import"},{"name":"opendaylight-group-types_2013-10-18","revision":"2013-10-18","schema":"/rests/modules/opendaylight-group-types?revision=2013-10-18","namespace":"urn:opendaylight:group:types","conformance-type":"import"},{"name":"sal-remote-augment_2023-11-03","revision":"2023-11-03","schema":"/rests/modules/sal-remote-augment?revision=2023-11-03","namespace":"urn:sal:restconf:event:subscription","conformance-type":"import"},{"name":"opendaylight-ipv6-arbitrary-bitmask-fields_2016-02-24","revision":"2016-02-24","schema":"/rests/modules/opendaylight-ipv6-arbitrary-bitmask-fields?revision=2016-02-24","namespace":"urn:opendaylight:opendaylight-ipv6-arbitrary-bitmask-fields","conformance-type":"import"},{"name":"sal-flows-batch_2016-03-14","revision":"2016-03-14","schema":"/rests/modules/sal-flows-batch?revision=2016-03-14","namespace":"urn:opendaylight:flows:service","conformance-type":"import"},{"name":"ietf-tls-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-common","conformance-type":"import","feature":["tls12","hello-params","tls13"]},{"name":"openflow-types_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-types?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:types","conformance-type":"import"},{"name":"ietf-netconf-with-defaults_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf-with-defaults?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults","conformance-type":"import"},{"name":"odl-srm-ops_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-ops?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:ops","conformance-type":"import"},{"name":"odl-general-entity_2015-09-30","revision":"2015-09-30","schema":"/rests/modules/odl-general-entity?revision=2015-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:mdsal:core:general-entity","conformance-type":"import"},{"name":"iana-ssh-key-exchange-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-key-exchange-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-key-exchange-algs","conformance-type":"import"},{"name":"node-ssl-connection-error_2019-07-23","revision":"2019-07-23","schema":"/rests/modules/node-ssl-connection-error?revision=2019-07-23","namespace":"urn:opendaylight:node-ssl-connection-error:service","conformance-type":"import"},{"name":"openflow-protocol_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-protocol?revision=2013-07-31","namespace":"urn:opendaylight:openflow:protocol","conformance-type":"import"},{"name":"ietf-udp-server_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-server?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-server","conformance-type":"import"},{"name":"ietf-keystore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-keystore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-keystore","conformance-type":"import","feature":["asymmetric-keys","inline-definitions-supported"]},{"name":"aaa_2016-12-14","revision":"2016-12-14","schema":"/rests/modules/aaa?revision=2016-12-14","namespace":"urn:opendaylight:params:xml:ns:yang:aaa","conformance-type":"import"},{"name":"aaa-cert-rpc_2015-12-15","revision":"2015-12-15","schema":"/rests/modules/aaa-cert-rpc?revision=2015-12-15","namespace":"urn:opendaylight:yang:aaa:cert:rpc","conformance-type":"import"},{"name":"system-notifications_2013-09-27","revision":"2013-09-27","schema":"/rests/modules/system-notifications?revision=2013-09-27","namespace":"urn:opendaylight:openflow:system","conformance-type":"import"},{"name":"sal-flat-batch_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/sal-flat-batch?revision=2016-03-21","namespace":"urn:opendaylight:flat-batch:service","conformance-type":"import"},{"name":"notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netconf:notification:1.0","conformance-type":"import"},{"name":"sal-remote_2014-01-14","revision":"2014-01-14","schema":"/rests/modules/sal-remote?revision=2014-01-14","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:remote","conformance-type":"import"},{"name":"yang-ext_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/yang-ext?revision=2013-07-09","namespace":"urn:opendaylight:yang:extension:yang-ext","conformance-type":"import"},{"name":"opendaylight-multipart-types_2017-01-12","revision":"2017-01-12","schema":"/rests/modules/opendaylight-multipart-types?revision=2017-01-12","namespace":"urn:opendaylight:multipart:types","conformance-type":"import"},{"name":"opendaylight-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-inventory?revision=2013-08-19","namespace":"urn:opendaylight:inventory","conformance-type":"import"},{"name":"sal-queue_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-queue?revision=2015-03-05","namespace":"urn:opendaylight:queue:service","conformance-type":"import"},{"name":"sal-groups-batch_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/sal-groups-batch?revision=2016-03-15","namespace":"urn:opendaylight:groups:service","conformance-type":"import"},{"name":"arbitrator-reconcile_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/arbitrator-reconcile?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:arbitrator-reconcile:service","conformance-type":"import"},{"name":"ietf-yang-metadata_2016-08-05","revision":"2016-08-05","schema":"/rests/modules/ietf-yang-metadata?revision=2016-08-05","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-metadata","conformance-type":"import"},{"name":"opendaylight-arbitrary-bitmask-fields_2016-01-30","revision":"2016-01-30","schema":"/rests/modules/opendaylight-arbitrary-bitmask-fields?revision=2016-01-30","namespace":"urn:opendaylight:arbitrary:bitmask:fields","conformance-type":"import"},{"name":"ietf-udp-client_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-client?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-client","conformance-type":"import","feature":["local-binding"]},{"name":"opendaylight-meter-types_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/opendaylight-meter-types?revision=2013-09-18","namespace":"urn:opendaylight:meter:types","conformance-type":"import"},{"name":"opendaylight-action-types_2013-11-12","revision":"2013-11-12","schema":"/rests/modules/opendaylight-action-types?revision=2013-11-12","namespace":"urn:opendaylight:action:types","conformance-type":"import"},{"name":"sal-role_2015-07-27","revision":"2015-07-27","schema":"/rests/modules/sal-role?revision=2015-07-27","namespace":"urn:opendaylight:role:service","conformance-type":"import"},{"name":"openflow-provider-config_2016-05-10","revision":"2016-05-10","schema":"/rests/modules/openflow-provider-config?revision=2016-05-10","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:provider:config","conformance-type":"import"},{"name":"odl-serviceutils-upgrade_2018-07-02","revision":"2018-07-02","schema":"/rests/modules/odl-serviceutils-upgrade?revision=2018-07-02","namespace":"urn:opendaylight:serviceutils:upgrade","conformance-type":"import"},{"name":"opendaylight-match-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-match-types?revision=2013-10-26","namespace":"urn:opendaylight:model:match:types","conformance-type":"import"},{"name":"ietf-restconf-server_2024-08-14","revision":"2024-08-14","schema":"/rests/modules/ietf-restconf-server?revision=2024-08-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-server","conformance-type":"import","feature":["http-listen","https-listen"]},{"name":"reconciliation-result-state_2017-07-13","revision":"2017-07-13","schema":"/rests/modules/reconciliation-result-state?revision=2017-07-13","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:rf:state","conformance-type":"import"},{"name":"onf-extensions_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/onf-extensions?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf","conformance-type":"import"},{"name":"sal-table_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/sal-table?revision=2013-10-26","namespace":"urn:opendaylight:table:service","conformance-type":"import"},{"name":"iana-http-versions_2026-02-04","revision":"2026-02-04","schema":"/rests/modules/iana-http-versions?revision=2026-02-04","namespace":"urn:ietf:params:xml:ns:yang:iana-http-versions","conformance-type":"import"},{"name":"opendaylight-direct-statistics_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/opendaylight-direct-statistics?revision=2016-05-11","namespace":"urn:opendaylight:direct:statistics","conformance-type":"import"},{"name":"opendaylight-port-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-port-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:port","conformance-type":"import"},{"name":"sal-async-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/sal-async-config?revision=2017-06-19","namespace":"urn:opendaylight:async-config:service","conformance-type":"import"},{"name":"aaa-password-service-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-password-service-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:password:service:config","conformance-type":"import"},{"name":"ietf-yang-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-yang-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-types","conformance-type":"import"},{"name":"opendaylight-queue-statistics_2013-12-16","revision":"2013-12-16","schema":"/rests/modules/opendaylight-queue-statistics?revision=2013-12-16","namespace":"urn:opendaylight:queue:statistics","conformance-type":"import"},{"name":"sal-bundle_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/sal-bundle?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf:bundle:service","conformance-type":"import"},{"name":"ietf-restconf-subscribed-notifications_2019-11-17","revision":"2019-11-17","schema":"/rests/modules/ietf-restconf-subscribed-notifications?revision=2019-11-17","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-subscribed-notifications","conformance-type":"import"},{"name":"sal-meters-batch_2016-03-16","revision":"2016-03-16","schema":"/rests/modules/sal-meters-batch?revision=2016-03-16","namespace":"urn:opendaylight:meters:service","conformance-type":"import"},{"name":"odl-entity-owners","revision":"","schema":"/rests/modules/odl-entity-owners","namespace":"urn:opendaylight:params:xml:ns:yang:controller:entity-owners","conformance-type":"import"},{"name":"sal-experimenter-mp-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-mp-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-mp-message:service","conformance-type":"import"},{"name":"packet-processing_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/packet-processing?revision=2013-07-09","namespace":"urn:opendaylight:packet:service","conformance-type":"import"},{"name":"openflow-configuration_2014-06-30","revision":"2014-06-30","schema":"/rests/modules/openflow-configuration?revision=2014-06-30","namespace":"urn:opendaylight:openflow:config","conformance-type":"import"},{"name":"odl-srm-rpcs_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-rpcs?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:rpc","conformance-type":"import"},{"name":"ietf-netconf-acm_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-netconf-acm?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-acm","conformance-type":"import"},{"name":"iana-crypt-hash_2014-08-06","revision":"2014-08-06","schema":"/rests/modules/iana-crypt-hash?revision=2014-08-06","namespace":"urn:ietf:params:xml:ns:yang:iana-crypt-hash","conformance-type":"import","feature":["crypt-hash-sha-512","crypt-hash-sha-256","crypt-hash-md5"]},{"name":"openflow-extensible-match_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-extensible-match?revision=2015-02-25","namespace":"urn:opendaylight:openflow:oxm","conformance-type":"import"}],"module-set-id":"2"}}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:54:31.366922" elapsed="0.003276"/>
</kw>
<status status="PASS" start="2026-04-08T00:54:31.366223" elapsed="0.004038"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:31.366119" elapsed="0.004192"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:54:31.373134" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:54:31.370697" elapsed="0.002499"/>
</kw>
<status status="PASS" start="2026-04-08T00:54:31.370407" elapsed="0.002850"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:31.370377" elapsed="0.002929"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:54:31.374204" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:54:31.373648" elapsed="0.000604"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:31.374673" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:54:31.374363" elapsed="0.000406"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:54:31.375355" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:54:31.375030" elapsed="0.000351"/>
</kw>
<status status="PASS" start="2026-04-08T00:54:31.374818" elapsed="0.000623"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:31.374331" elapsed="0.001156"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:54:31.376350" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:54:31.375821" elapsed="0.000576"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:31.376805" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:54:31.376507" elapsed="0.000378"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:54:31.377459" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:54:31.377140" elapsed="0.000345"/>
</kw>
<status status="PASS" start="2026-04-08T00:54:31.376932" elapsed="0.000612"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:31.376475" elapsed="0.001115"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:54:31.377913" elapsed="0.000458"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:54:31.379183" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:54:31.378734" elapsed="0.000497"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:54:31.379566" elapsed="0.002272"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:54:31.363466" elapsed="0.018450"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:54:31.382309" elapsed="0.000038"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:54:31.382083" elapsed="0.000351"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:31.382062" elapsed="0.000409"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:54:31.392706" level="INFO">${text_normalized} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:54:31.382663" elapsed="0.010088"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:54:31.392887" elapsed="0.000034"/>
</return>
<msg time="2026-04-08T00:54:31.393125" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:54:31.315017" elapsed="0.078135"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:54:31.393232" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:54:31.393389" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="PASS" start="2026-04-08T00:54:31.176885" elapsed="0.216531"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Json_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:31.393737" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:54:31.393500" elapsed="0.000346"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:31.393483" elapsed="0.000389"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:54:31.393905" elapsed="0.000026"/>
</return>
<arg>session=${session}</arg>
<arg>folder=${RESTCONF_MODULES_DIR}</arg>
<arg>verify=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Add arguments sensible for JSON data, return Get_Templated response text.
Optionally, verification against JSON data (may be iterated) is called.
Only subset of JSON data is verified and returned if JMES path is specified in
file ${folder}/jmespath.expr.</doc>
<status status="PASS" start="2026-04-08T00:54:31.172780" elapsed="0.221248"/>
</kw>
<status status="PASS" start="2026-04-08T00:54:31.168968" elapsed="0.225103"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:31.168950" elapsed="0.225145"/>
</if>
<kw name="Resolve_Shard_Type_Class" owner="ClusterManagement">
<if>
<branch type="IF" condition="'${shard_type}' == 'config'">
<return>
<value>DistributedConfigDatastore</value>
<status status="PASS" start="2026-04-08T00:54:31.394716" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-08T00:54:31.394599" elapsed="0.000177"/>
</branch>
<branch type="ELSE IF" condition="'${shard_type}' == 'operational'">
<return>
<value>DistributedOperationalDatastore</value>
<status status="NOT RUN" start="2026-04-08T00:54:31.394841" elapsed="0.000012"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:54:31.394803" elapsed="0.000076"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:31.394582" elapsed="0.000319"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized shard type: ${shard_type}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:31.395044" elapsed="0.000021"/>
</kw>
<msg time="2026-04-08T00:54:31.395177" level="INFO">${type_class} = DistributedConfigDatastore</msg>
<var>${type_class}</var>
<arg>shard_type=${shard_type}</arg>
<doc>Simple lookup for class name corresponding to desired type.</doc>
<status status="PASS" start="2026-04-08T00:54:31.394335" elapsed="0.000869"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:54:31.395736" level="INFO">${cluster_index} = 1</msg>
<var>${cluster_index}</var>
<arg>${member_index}+${NODE_ROLE_INDEX_START}-1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:54:31.395368" elapsed="0.000395"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:54:31.396408" level="INFO">${uri} = jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-inventory-config,type=DistributedConfigDatastore</msg>
<var>${uri}</var>
<arg>${JOLOKIA_READ_URI}:Category=Shards,name=member-${cluster_index}-shard-${shard_name}-${shard_type},type=${type_class}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:54:31.395916" elapsed="0.000519"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:54:31.402196" level="INFO">jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-inventory-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:54:31.401908" elapsed="0.000336"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:54:31.402740" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:54:31.402398" elapsed="0.000392"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:54:31.413657" level="INFO">GET Request : url=http://10.30.170.48:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-inventory-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-inventory-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:54:31.413807" level="INFO">GET Response : url=http://10.30.170.48:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-inventory-config,type=DistributedConfigDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Wed, 08 Apr 2026 00:54:31 GMT', 'Expires': 'Tue, 07 Apr 2026 23:54:31 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-1-shard-inventory-config,type=DistributedConfigDatastore","type":"read"},"value":{"ReadWriteTransactionCount":0,"SnapshotIndex":40,"InMemoryJournalLogSize":1,"ReplicatedToAllIndex":40,"Leader":"member-3-shard-inventory-config","LastIndex":41,"RaftState":"Follower","LastApplied":41,"LastCommittedTransactionTime":"1970-01-01 00:00:00.000","LastLogIndex":41,"LastLeadershipChangeTime":"2026-04-08 00:53:22.400","PeerAddresses":"member-2-shard-inventory-config: pekko:\/\/opendaylight-cluster-data@10.30.170.131:2550\/user\/shardmanager-config\/member-2-shard-inventory-config, member-3-shard-inventory-config: pekko:\/\/opendaylight-cluster-data@10.30.171.110:2550\/user\/shardmanager-config\/member-3-shard-inventory-config","FollowerInitialSyncStatus":true,"FollowerInfo":[],"FailedReadTransactionsCount":0,"StatRetrievalTime":"432.5 μs","Voting":true,"CurrentTerm":3,"LastTerm":3,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-3-shard-inventory-config","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":0,"TxCohortCacheSize":0,"PeerVotingStates":"member-2-shard-inventory-config: true, member-3-shard-inventory-config: true","LastLogTerm":3,"StatRetrievalError":null,"CommitIndex":41,"SnapshotTerm":3,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-1-shard-inventory-config","LeadershipChangeCount":1,"InMemoryJournalDataSize":2060},"timestamp":1775609671,"status":200} 
 </msg>
<msg time="2026-04-08T00:54:31.414023" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:54:31.404832" elapsed="0.009228"/>
</kw>
<status status="PASS" start="2026-04-08T00:54:31.402859" elapsed="0.011261"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:31.414395" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:54:31.414177" elapsed="0.000308"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:31.402841" elapsed="0.011675"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:54:31.420073" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-1-shard-inventory-config,type=DistributedConfigDatastore","type":"read"},"value":{"ReadWriteTransactionCount":0,"SnapshotIndex":40,"InMemoryJournalLogSize":1,"ReplicatedToAllIndex":40,"Leader":"member-3-shard-inventory-config","LastIndex":41,"RaftState":"Follower","LastApplied":41,"LastCommittedTransactionTime":"1970-01-01 00:00:00.000","LastLogIndex":41,"LastLeadershipChangeTime":"2026-04-08 00:53:22.400","PeerAddresses":"member-2-shard-inventory-config: pekko:\/\/opendaylight-cluster-data@10.30.170.131:2550\/user\/shardmanager-config\/member-2-shard-inventory-config, member-3-shard-inventory-config: pekko:\/\/opendaylight-cluster-data@10.30.171.110:2550\/user\/shardmanager-config\/member-3-shard-inventory-config","FollowerInitialSyncStatus":true,"FollowerInfo":[],"FailedReadTransactionsCount":0,"StatRetrievalTime":"432.5 μs","Voting":true,"CurrentTerm":3,"LastTerm":3,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-3-shard-inventory-config","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":0,"TxCohortCacheSize":0,"PeerVotingStates":"member-2-shard-inventory-config: true, member-3-shard-inventory-config: true","LastLogTerm":3,"StatRetrievalError":null,"CommitIndex":41,"SnapshotTerm":3,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-1-shard-inventory-config","LeadershipChangeCount":1,"InMemoryJournalDataSize":2060},"timestamp":1775609671,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:54:31.416428" elapsed="0.004026"/>
</kw>
<status status="PASS" start="2026-04-08T00:54:31.415897" elapsed="0.004687"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:31.415871" elapsed="0.004752"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:54:31.424734" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:54:31.421127" elapsed="0.003801"/>
</kw>
<status status="PASS" start="2026-04-08T00:54:31.420706" elapsed="0.004351"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:31.420681" elapsed="0.004415"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:54:31.426280" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:54:31.425346" elapsed="0.000975"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:31.427333" elapsed="0.000110"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:54:31.426468" elapsed="0.001117"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:54:31.429327" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:54:31.428290" elapsed="0.001096"/>
</kw>
<status status="PASS" start="2026-04-08T00:54:31.427623" elapsed="0.001901"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:31.426440" elapsed="0.003118"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:54:31.430564" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:54:31.429783" elapsed="0.000819"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:31.431599" elapsed="0.000074"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:54:31.430780" elapsed="0.000994"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:54:31.433019" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:54:31.432307" elapsed="0.000754"/>
</kw>
<status status="PASS" start="2026-04-08T00:54:31.431801" elapsed="0.001373"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:31.430753" elapsed="0.002447"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:54:31.433353" elapsed="0.000705"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:54:31.434816" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:54:31.434288" elapsed="0.000555"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:54:31.435034" elapsed="0.002701"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:54:31.415261" elapsed="0.022566"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:54:31.438007" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:54:31.437899" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:31.437880" elapsed="0.000193"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:54:31.453440" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-1-shard-inventory-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 177560...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:54:31.438232" elapsed="0.015238"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:54:31.453521" elapsed="0.000031"/>
</return>
<msg time="2026-04-08T00:54:31.453679" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-1-shard-inventory-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 177560...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:54:31.397482" elapsed="0.056223"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:54:31.453807" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:54:31.453958" level="INFO">${data_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-1-shard-inventory-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 177560...</msg>
<var>${data_text}</var>
<arg>uri=${uri}</arg>
<arg>session=${session}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-08T00:54:31.396645" elapsed="0.057340"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:54:31.455041" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-1-shard-inventory-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1775609671, 'valu...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:54:31.454567" elapsed="0.000503"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-08T00:54:31.455119" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:54:31.455309" level="INFO">${data_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-1-shard-inventory-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1775609671, 'valu...</msg>
<var>${data_object}</var>
<arg>${data_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-08T00:54:31.454223" elapsed="0.001113"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:54:31.455689" level="INFO">${value} = {'AbortTransactionsCount': 0, 'CommitIndex': 41, 'CommittedTransactionsCount': 0, 'CurrentTerm': 3, 'FailedReadTransactionsCount': 0, 'FailedTransactionsCount': 0, 'FollowerInfo': [], 'FollowerInitial...</msg>
<var>${value}</var>
<arg>${data_object}</arg>
<arg>value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:54:31.455490" elapsed="0.000226"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:54:31.456074" level="INFO">${raft_property} = Follower</msg>
<var>${raft_property}</var>
<arg>${value}</arg>
<arg>${property}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:54:31.455875" elapsed="0.000223"/>
</kw>
<return>
<value>${raft_property}</value>
<status status="PASS" start="2026-04-08T00:54:31.456144" elapsed="0.000366"/>
</return>
<msg time="2026-04-08T00:54:31.456640" level="INFO">${raft_state} = Follower</msg>
<var>${raft_state}</var>
<arg>RaftState</arg>
<arg>${shard_name}</arg>
<arg>${shard_type}</arg>
<arg>${member_index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft property.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T00:54:31.167390" elapsed="0.289274"/>
</kw>
<return>
<value>${raft_state}</value>
<status status="PASS" start="2026-04-08T00:54:31.456722" elapsed="0.000025"/>
</return>
<msg time="2026-04-08T00:54:31.456868" level="INFO">${raft_state} = Follower</msg>
<var>${raft_state}</var>
<arg>shard_name=${shard_name}</arg>
<arg>shard_type=${ds_type}</arg>
<arg>member_index=${index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft status.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T00:54:31.166420" elapsed="0.290472"/>
</kw>
<if>
<branch type="IF" condition="'Follower' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${follower_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-08T00:54:31.457200" elapsed="0.000192"/>
</kw>
<status status="PASS" start="2026-04-08T00:54:31.456973" elapsed="0.000458"/>
</branch>
<branch type="ELSE IF" condition="'Leader' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${leader_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:31.457597" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:54:31.457455" elapsed="0.000195"/>
</branch>
<branch type="ELSE IF" condition="${validate}">
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized Raft state: ${raft_state}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:31.457809" elapsed="0.000019"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:54:31.457673" elapsed="0.000186"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:31.456956" elapsed="0.000925"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T00:54:31.166252" elapsed="0.291652"/>
</iter>
<iter>
<kw name="Get_Raft_State_Of_Shard_At_Member" owner="ClusterManagement">
<kw name="Get_Raft_Property_From_Shard_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:54:31.460500" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:54:31.460198" elapsed="0.000329"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:54:31.460572" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:54:31.460725" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:54:31.459843" elapsed="0.000906"/>
</kw>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Get_As_Json_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:54:31.531228" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:54:31.530825" elapsed="0.000433"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:54:31.531983" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:54:31.531747" elapsed="0.000308">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-08T00:54:31.532207" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:54:31.531418" elapsed="0.000815"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:54:31.532783" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:54:31.532402" elapsed="0.000407"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T00:54:31.533104" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-08T00:54:31.533266" level="INFO">${template} = /rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T00:54:31.532967" elapsed="0.000325"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:54:31.533687" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:54:31.533445" elapsed="0.000285"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:54:31.534851" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:54:31.534597" elapsed="0.000298"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-08T00:54:31.535345" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-08T00:54:31.535053" elapsed="0.000318"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:31.535697" elapsed="0.000021"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:31.535896" elapsed="0.000023"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:31.536065" elapsed="0.000021"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-08T00:54:31.535565" elapsed="0.000557"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-08T00:54:31.535426" elapsed="0.000725"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-08T00:54:31.536211" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:54:31.536370" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-08T00:54:31.534083" elapsed="0.002312"/>
</kw>
<status status="PASS" start="2026-04-08T00:54:31.533799" elapsed="0.002627"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:31.536594" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:54:31.536450" elapsed="0.000198"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:31.533780" elapsed="0.002888"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:54:31.537244" level="INFO">${final_text} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:54:31.536805" elapsed="0.000466"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T00:54:31.537320" elapsed="0.000027"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="PASS" start="2026-04-08T00:54:31.530127" elapsed="0.007357"/>
</kw>
<msg time="2026-04-08T00:54:31.537553" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:54:31.517041" elapsed="0.020653"/>
</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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:31.551059" elapsed="0.000052"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:31.563994" elapsed="0.000052"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:31.577098" elapsed="0.000052"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:31.577475" elapsed="0.000075"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:31.577785" elapsed="0.000074"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:31.578639" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:54:31.578406" elapsed="0.000299"/>
</branch>
<status status="NOT RUN" start="2026-04-08T00:54:31.578360" elapsed="0.000383"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:31.578999" elapsed="0.000038"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:31.579323" elapsed="0.000034"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:31.579615" elapsed="0.000034"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-08T00:54:31.578287" elapsed="0.001409"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-08T00:54:31.577998" elapsed="0.001768"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:31.580073" elapsed="0.000074"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-08T00:54:31.580331" elapsed="0.000017"/>
</return>
<msg time="2026-04-08T00:54:31.580506" level="INFO">${uri} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-08T00:54:31.506928" elapsed="0.073605"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:54:31.582542" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:54:31.582190" elapsed="0.000420">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-08T00:54:31.582756" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:54:31.581388" elapsed="0.001407"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:31.584130" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:54:31.582941" elapsed="0.001291"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:54:31.585098" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:54:31.584600" elapsed="0.000545"/>
</kw>
<status status="PASS" start="2026-04-08T00:54:31.584270" elapsed="0.000940"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:31.582921" elapsed="0.002324"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:54:31.588294" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:54:31.585443" elapsed="0.002896"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-08T00:54:31.588478" elapsed="0.000033"/>
</return>
<msg time="2026-04-08T00:54:31.588709" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:54:31.580922" elapsed="0.007813"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:54:31.590771" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:54:31.590461" elapsed="0.000375">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-08T00:54:31.591021" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:54:31.589554" elapsed="0.001508"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-08T00:54:31.591524" elapsed="0.000050"/>
</return>
<status status="PASS" start="2026-04-08T00:54:31.591234" elapsed="0.000429"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:31.591213" elapsed="0.000488"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:31.591894" elapsed="0.000075"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:31.592226" elapsed="0.000074"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-08T00:54:31.592425" elapsed="0.000017"/>
</return>
<msg time="2026-04-08T00:54:31.605587" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:54:31.589081" elapsed="0.016534"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:54:31.608361" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:54:31.607732" elapsed="0.000761"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:54:31.609324" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:54:31.608724" elapsed="0.000732"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:54:31.645726" level="INFO">GET Request : url=http://10.30.170.131:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 path_url=/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01eq5fxmndxspk37g8qgkyja672.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:54:31.646762" level="INFO">GET Response : url=http://10.30.170.131:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Transfer-Encoding': 'chunked'} 
 body={"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","hidden-symmetric-keys","encrypted-private-keys","asymmetrically-encrypted-value-format","cms-encrypted-data-format","cleartext-private-keys","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["ssh-client-keepalives","client-ident-hostbased","client-ident-publickey","client-ident-password"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-ex... (set the log level to DEBUG or TRACE to see the full content) 
 </msg>
<msg time="2026-04-08T00:54:31.647498" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:54:31.612741" elapsed="0.034863"/>
</kw>
<status status="PASS" start="2026-04-08T00:54:31.609582" elapsed="0.038151"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:31.650074" elapsed="0.000120"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:54:31.647822" elapsed="0.002549"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:31.609563" elapsed="0.040895"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:54:31.658434" level="INFO">{"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","hidden-symmetric-keys","encrypted-private-keys","asymmetrically-encrypted-value-format","cms-encrypted-data-format","cleartext-private-keys","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["ssh-client-keepalives","client-ident-hostbased","client-ident-publickey","client-ident-password"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-experimenter-types?revision=2015-10-20","namespace":"urn:opendaylight:openflowplugin:experimenter:types","conformance-type":"import"},{"name":"ietf-ip_2018-02-22","revision":"2018-02-22","schema":"/rests/modules/ietf-ip?revision=2018-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-ip","conformance-type":"import","feature":["ipv6-privacy-autoconf","ipv4-non-contiguous-netmasks"]},{"name":"ietf-tcp-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-client","conformance-type":"import","feature":["local-binding-supported","tcp-client-keepalives"]},{"name":"node-config_2014-10-15","revision":"2014-10-15","schema":"/rests/modules/node-config?revision=2014-10-15","namespace":"urn:opendaylight:module:config","conformance-type":"import"},{"name":"ietf-restconf_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf","conformance-type":"import"},{"name":"ietf-datastores_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-datastores?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-datastores","conformance-type":"import"},{"name":"ietf-yang-patch_2017-02-22","revision":"2017-02-22","schema":"/rests/modules/ietf-yang-patch?revision=2017-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-patch","conformance-type":"import"},{"name":"sal-group_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-group?revision=2013-09-18","namespace":"urn:opendaylight:group:service","conformance-type":"import"},{"name":"odl-codegen-extensions_2024-06-27","revision":"2024-06-27","schema":"/rests/modules/odl-codegen-extensions?revision=2024-06-27","namespace":"urn:opendaylight:yang:extension:codegen","conformance-type":"import"},{"name":"sal-meter_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-meter?revision=2013-09-18","namespace":"urn:opendaylight:meter:service","conformance-type":"import"},{"name":"ietf-interfaces_2018-02-20","revision":"2018-02-20","schema":"/rests/modules/ietf-interfaces?revision=2018-02-20","namespace":"urn:ietf:params:xml:ns:yang:ietf-interfaces","conformance-type":"import","feature":["pre-provisioning","if-mib","arbitrary-names"]},{"name":"opendaylight-l2-types_2013-08-27","revision":"2013-08-27","schema":"/rests/modules/opendaylight-l2-types?revision=2013-08-27","namespace":"urn:opendaylight:l2:types","conformance-type":"import"},{"name":"opendaylight-flow-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-flow-types?revision=2013-10-26","namespace":"urn:opendaylight:flow:types","conformance-type":"import"},{"name":"lldp-speaker-config_2016-05-12","revision":"2016-05-12","schema":"/rests/modules/lldp-speaker-config?revision=2016-05-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker:config","conformance-type":"import"},{"name":"aaa-cert_2015-11-26","revision":"2015-11-26","schema":"/rests/modules/aaa-cert?revision=2015-11-26","namespace":"urn:opendaylight:yang:aaa:cert","conformance-type":"import"},{"name":"openflow-action_2015-02-03","revision":"2015-02-03","schema":"/rests/modules/openflow-action?revision=2015-02-03","namespace":"urn:opendaylight:openflow:common:action","conformance-type":"import"},{"name":"openflow-approved-extensions_2016-08-02","revision":"2016-08-02","schema":"/rests/modules/openflow-approved-extensions?revision=2016-08-02","namespace":"urn:opendaylight:openflow:approved:extensions","conformance-type":"import"},{"name":"nc-notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/nc-notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netmod:notification","conformance-type":"import"},{"name":"ietf-netconf-nmda_2019-01-07","revision":"2019-01-07","schema":"/rests/modules/ietf-netconf-nmda?revision=2019-01-07","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-nmda","conformance-type":"import","feature":["with-defaults","origin"]},{"name":"ietf-tcp-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-common","conformance-type":"import","feature":["keepalives-supported"]},{"name":"network-topology_2013-10-21","revision":"2013-10-21","schema":"/rests/modules/network-topology?revision=2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:network-topology","conformance-type":"import"},{"name":"aaa-encrypt-service-config_2024-02-02","revision":"2024-02-02","schema":"/rests/modules/aaa-encrypt-service-config?revision=2024-02-02","namespace":"config:aaa:authn:encrypt:service:config","conformance-type":"import"},{"name":"openflow-instruction_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-instruction?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:instruction","conformance-type":"import"},{"name":"ietf-tls-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-client","conformance-type":"import","feature":["client-ident-x509-cert","server-auth-x509-cert"]},{"name":"opendaylight-group-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-group-statistics?revision=2013-11-11","namespace":"urn:opendaylight:group:statistics","conformance-type":"import"},{"name":"cluster-admin_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/cluster-admin?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:cluster:admin","conformance-type":"import"},{"name":"opendaylight-flow-statistics_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-flow-statistics?revision=2013-08-19","namespace":"urn:opendaylight:flow:statistics","conformance-type":"import"},{"name":"opendaylight-table-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-table-types?revision=2013-10-26","namespace":"urn:opendaylight:table:types","conformance-type":"import"},{"name":"forwarding-rules-manager-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/forwarding-rules-manager-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:forwardingrules-manager:config","conformance-type":"import"},{"name":"odl-srm-types_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-types?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:types","conformance-type":"import"},{"name":"ietf-x509-cert-to-name_2014-12-10","revision":"2014-12-10","schema":"/rests/modules/ietf-x509-cert-to-name?revision=2014-12-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-x509-cert-to-name","conformance-type":"import"},{"name":"flow-node-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-node-inventory?revision=2013-08-19","namespace":"urn:opendaylight:flow:inventory","conformance-type":"import"},{"name":"flow-errors_2013-11-16","revision":"2013-11-16","schema":"/rests/modules/flow-errors?revision=2013-11-16","namespace":"urn:opendaylight:flow:errors","conformance-type":"import"},{"name":"ietf-netconf_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:netconf:base:1.0","conformance-type":"import","feature":["xpath","url","rollback-on-error","validate","startup","candidate","confirmed-commit","writable-running"]},{"name":"iana-ssh-public-key-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-public-key-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-public-key-algs","conformance-type":"import"},{"name":"aaa-cert-mdsal_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/aaa-cert-mdsal?revision=2016-03-21","namespace":"urn:opendaylight:yang:aaa:cert:mdsal","conformance-type":"import"},{"name":"odl-device-notification_2024-02-18","revision":"2024-02-18","schema":"/rests/modules/odl-device-notification?revision=2024-02-18","namespace":"urn:opendaylight:device:notification","conformance-type":"import"},{"name":"ietf-origin_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-origin?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-origin","conformance-type":"import"},{"name":"openflow-augments_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-augments?revision=2015-02-25","namespace":"urn:opendaylight:openflow:augments","conformance-type":"import"},{"name":"iana-ssh-encryption-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-encryption-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-encryption-algs","conformance-type":"import"},{"name":"ietf-truststore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-truststore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-truststore","conformance-type":"import","feature":["inline-definitions-supported"]},{"name":"distributed-datastore-provider_2025-01-30","revision":"2025-01-30","schema":"/rests/modules/distributed-datastore-provider?revision=2025-01-30","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:distributed-datastore-provider","conformance-type":"import"},{"name":"opendaylight-group-types_2013-10-18","revision":"2013-10-18","schema":"/rests/modules/opendaylight-group-types?revision=2013-10-18","namespace":"urn:opendaylight:group:types","conformance-type":"import"},{"name":"sal-remote-augment_2023-11-03","revision":"2023-11-03","schema":"/rests/modules/sal-remote-augment?revision=2023-11-03","namespace":"urn:sal:restconf:event:subscription","conformance-type":"import"},{"name":"opendaylight-ipv6-arbitrary-bitmask-fields_2016-02-24","revision":"2016-02-24","schema":"/rests/modules/opendaylight-ipv6-arbitrary-bitmask-fields?revision=2016-02-24","namespace":"urn:opendaylight:opendaylight-ipv6-arbitrary-bitmask-fields","conformance-type":"import"},{"name":"sal-flows-batch_2016-03-14","revision":"2016-03-14","schema":"/rests/modules/sal-flows-batch?revision=2016-03-14","namespace":"urn:opendaylight:flows:service","conformance-type":"import"},{"name":"ietf-tls-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-common","conformance-type":"import","feature":["tls12","hello-params","tls13"]},{"name":"openflow-types_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-types?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:types","conformance-type":"import"},{"name":"ietf-netconf-with-defaults_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf-with-defaults?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults","conformance-type":"import"},{"name":"odl-srm-ops_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-ops?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:ops","conformance-type":"import"},{"name":"odl-general-entity_2015-09-30","revision":"2015-09-30","schema":"/rests/modules/odl-general-entity?revision=2015-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:mdsal:core:general-entity","conformance-type":"import"},{"name":"iana-ssh-key-exchange-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-key-exchange-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-key-exchange-algs","conformance-type":"import"},{"name":"node-ssl-connection-error_2019-07-23","revision":"2019-07-23","schema":"/rests/modules/node-ssl-connection-error?revision=2019-07-23","namespace":"urn:opendaylight:node-ssl-connection-error:service","conformance-type":"import"},{"name":"openflow-protocol_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-protocol?revision=2013-07-31","namespace":"urn:opendaylight:openflow:protocol","conformance-type":"import"},{"name":"ietf-udp-server_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-server?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-server","conformance-type":"import"},{"name":"ietf-keystore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-keystore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-keystore","conformance-type":"import","feature":["asymmetric-keys","inline-definitions-supported"]},{"name":"aaa_2016-12-14","revision":"2016-12-14","schema":"/rests/modules/aaa?revision=2016-12-14","namespace":"urn:opendaylight:params:xml:ns:yang:aaa","conformance-type":"import"},{"name":"aaa-cert-rpc_2015-12-15","revision":"2015-12-15","schema":"/rests/modules/aaa-cert-rpc?revision=2015-12-15","namespace":"urn:opendaylight:yang:aaa:cert:rpc","conformance-type":"import"},{"name":"system-notifications_2013-09-27","revision":"2013-09-27","schema":"/rests/modules/system-notifications?revision=2013-09-27","namespace":"urn:opendaylight:openflow:system","conformance-type":"import"},{"name":"sal-flat-batch_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/sal-flat-batch?revision=2016-03-21","namespace":"urn:opendaylight:flat-batch:service","conformance-type":"import"},{"name":"notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netconf:notification:1.0","conformance-type":"import"},{"name":"sal-remote_2014-01-14","revision":"2014-01-14","schema":"/rests/modules/sal-remote?revision=2014-01-14","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:remote","conformance-type":"import"},{"name":"yang-ext_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/yang-ext?revision=2013-07-09","namespace":"urn:opendaylight:yang:extension:yang-ext","conformance-type":"import"},{"name":"opendaylight-multipart-types_2017-01-12","revision":"2017-01-12","schema":"/rests/modules/opendaylight-multipart-types?revision=2017-01-12","namespace":"urn:opendaylight:multipart:types","conformance-type":"import"},{"name":"opendaylight-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-inventory?revision=2013-08-19","namespace":"urn:opendaylight:inventory","conformance-type":"import"},{"name":"sal-queue_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-queue?revision=2015-03-05","namespace":"urn:opendaylight:queue:service","conformance-type":"import"},{"name":"sal-groups-batch_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/sal-groups-batch?revision=2016-03-15","namespace":"urn:opendaylight:groups:service","conformance-type":"import"},{"name":"arbitrator-reconcile_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/arbitrator-reconcile?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:arbitrator-reconcile:service","conformance-type":"import"},{"name":"ietf-yang-metadata_2016-08-05","revision":"2016-08-05","schema":"/rests/modules/ietf-yang-metadata?revision=2016-08-05","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-metadata","conformance-type":"import"},{"name":"opendaylight-arbitrary-bitmask-fields_2016-01-30","revision":"2016-01-30","schema":"/rests/modules/opendaylight-arbitrary-bitmask-fields?revision=2016-01-30","namespace":"urn:opendaylight:arbitrary:bitmask:fields","conformance-type":"import"},{"name":"ietf-udp-client_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-client?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-client","conformance-type":"import","feature":["local-binding"]},{"name":"opendaylight-meter-types_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/opendaylight-meter-types?revision=2013-09-18","namespace":"urn:opendaylight:meter:types","conformance-type":"import"},{"name":"opendaylight-action-types_2013-11-12","revision":"2013-11-12","schema":"/rests/modules/opendaylight-action-types?revision=2013-11-12","namespace":"urn:opendaylight:action:types","conformance-type":"import"},{"name":"sal-role_2015-07-27","revision":"2015-07-27","schema":"/rests/modules/sal-role?revision=2015-07-27","namespace":"urn:opendaylight:role:service","conformance-type":"import"},{"name":"openflow-provider-config_2016-05-10","revision":"2016-05-10","schema":"/rests/modules/openflow-provider-config?revision=2016-05-10","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:provider:config","conformance-type":"import"},{"name":"odl-serviceutils-upgrade_2018-07-02","revision":"2018-07-02","schema":"/rests/modules/odl-serviceutils-upgrade?revision=2018-07-02","namespace":"urn:opendaylight:serviceutils:upgrade","conformance-type":"import"},{"name":"opendaylight-match-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-match-types?revision=2013-10-26","namespace":"urn:opendaylight:model:match:types","conformance-type":"import"},{"name":"ietf-restconf-server_2024-08-14","revision":"2024-08-14","schema":"/rests/modules/ietf-restconf-server?revision=2024-08-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-server","conformance-type":"import","feature":["http-listen","https-listen"]},{"name":"reconciliation-result-state_2017-07-13","revision":"2017-07-13","schema":"/rests/modules/reconciliation-result-state?revision=2017-07-13","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:rf:state","conformance-type":"import"},{"name":"onf-extensions_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/onf-extensions?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf","conformance-type":"import"},{"name":"sal-table_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/sal-table?revision=2013-10-26","namespace":"urn:opendaylight:table:service","conformance-type":"import"},{"name":"iana-http-versions_2026-02-04","revision":"2026-02-04","schema":"/rests/modules/iana-http-versions?revision=2026-02-04","namespace":"urn:ietf:params:xml:ns:yang:iana-http-versions","conformance-type":"import"},{"name":"opendaylight-direct-statistics_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/opendaylight-direct-statistics?revision=2016-05-11","namespace":"urn:opendaylight:direct:statistics","conformance-type":"import"},{"name":"opendaylight-port-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-port-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:port","conformance-type":"import"},{"name":"sal-async-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/sal-async-config?revision=2017-06-19","namespace":"urn:opendaylight:async-config:service","conformance-type":"import"},{"name":"aaa-password-service-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-password-service-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:password:service:config","conformance-type":"import"},{"name":"ietf-yang-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-yang-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-types","conformance-type":"import"},{"name":"opendaylight-queue-statistics_2013-12-16","revision":"2013-12-16","schema":"/rests/modules/opendaylight-queue-statistics?revision=2013-12-16","namespace":"urn:opendaylight:queue:statistics","conformance-type":"import"},{"name":"sal-bundle_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/sal-bundle?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf:bundle:service","conformance-type":"import"},{"name":"ietf-restconf-subscribed-notifications_2019-11-17","revision":"2019-11-17","schema":"/rests/modules/ietf-restconf-subscribed-notifications?revision=2019-11-17","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-subscribed-notifications","conformance-type":"import"},{"name":"sal-meters-batch_2016-03-16","revision":"2016-03-16","schema":"/rests/modules/sal-meters-batch?revision=2016-03-16","namespace":"urn:opendaylight:meters:service","conformance-type":"import"},{"name":"odl-entity-owners","revision":"","schema":"/rests/modules/odl-entity-owners","namespace":"urn:opendaylight:params:xml:ns:yang:controller:entity-owners","conformance-type":"import"},{"name":"sal-experimenter-mp-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-mp-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-mp-message:service","conformance-type":"import"},{"name":"packet-processing_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/packet-processing?revision=2013-07-09","namespace":"urn:opendaylight:packet:service","conformance-type":"import"},{"name":"openflow-configuration_2014-06-30","revision":"2014-06-30","schema":"/rests/modules/openflow-configuration?revision=2014-06-30","namespace":"urn:opendaylight:openflow:config","conformance-type":"import"},{"name":"odl-srm-rpcs_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-rpcs?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:rpc","conformance-type":"import"},{"name":"ietf-netconf-acm_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-netconf-acm?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-acm","conformance-type":"import"},{"name":"iana-crypt-hash_2014-08-06","revision":"2014-08-06","schema":"/rests/modules/iana-crypt-hash?revision=2014-08-06","namespace":"urn:ietf:params:xml:ns:yang:iana-crypt-hash","conformance-type":"import","feature":["crypt-hash-sha-512","crypt-hash-sha-256","crypt-hash-md5"]},{"name":"openflow-extensible-match_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-extensible-match?revision=2015-02-25","namespace":"urn:opendaylight:openflow:oxm","conformance-type":"import"}],"module-set-id":"2"}}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:54:31.655595" elapsed="0.003159"/>
</kw>
<status status="PASS" start="2026-04-08T00:54:31.655104" elapsed="0.003714"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:31.655031" elapsed="0.003836"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:54:31.661433" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:54:31.659272" elapsed="0.002207"/>
</kw>
<status status="PASS" start="2026-04-08T00:54:31.658964" elapsed="0.002576"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:31.658934" elapsed="0.002654"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:54:31.662548" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:54:31.661931" elapsed="0.000663"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:31.663018" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:54:31.662707" elapsed="0.000390"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:54:31.663717" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:54:31.663375" elapsed="0.000369"/>
</kw>
<status status="PASS" start="2026-04-08T00:54:31.663145" elapsed="0.000660"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:31.662672" elapsed="0.001178"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:54:31.664722" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:54:31.664199" elapsed="0.000569"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:31.665190" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:54:31.664876" elapsed="0.000395"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:54:31.665834" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:54:31.665532" elapsed="0.000328"/>
</kw>
<status status="PASS" start="2026-04-08T00:54:31.665319" elapsed="0.000600"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:31.664845" elapsed="0.001119"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:54:31.666347" elapsed="0.000448"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:54:31.667576" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:54:31.667136" elapsed="0.000485"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:54:31.667949" elapsed="0.002448"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:54:31.652280" elapsed="0.018198"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:54:31.670845" elapsed="0.000039"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:54:31.670645" elapsed="0.000321"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:31.670624" elapsed="0.000379"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:54:31.681055" level="INFO">${text_normalized} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:54:31.671211" elapsed="0.009889"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:54:31.681250" elapsed="0.000034"/>
</return>
<msg time="2026-04-08T00:54:31.681489" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:54:31.605964" elapsed="0.075552"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:54:31.681579" elapsed="0.000027"/>
</return>
<msg time="2026-04-08T00:54:31.681732" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="PASS" start="2026-04-08T00:54:31.468948" elapsed="0.212810"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Json_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:31.682084" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:54:31.681842" elapsed="0.000445"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:31.681824" elapsed="0.000490"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:54:31.682349" elapsed="0.000027"/>
</return>
<arg>session=${session}</arg>
<arg>folder=${RESTCONF_MODULES_DIR}</arg>
<arg>verify=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Add arguments sensible for JSON data, return Get_Templated response text.
Optionally, verification against JSON data (may be iterated) is called.
Only subset of JSON data is verified and returned if JMES path is specified in
file ${folder}/jmespath.expr.</doc>
<status status="PASS" start="2026-04-08T00:54:31.464730" elapsed="0.217751"/>
</kw>
<status status="PASS" start="2026-04-08T00:54:31.460816" elapsed="0.221708"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:31.460799" elapsed="0.221749"/>
</if>
<kw name="Resolve_Shard_Type_Class" owner="ClusterManagement">
<if>
<branch type="IF" condition="'${shard_type}' == 'config'">
<return>
<value>DistributedConfigDatastore</value>
<status status="PASS" start="2026-04-08T00:54:31.683145" elapsed="0.000042"/>
</return>
<status status="PASS" start="2026-04-08T00:54:31.683039" elapsed="0.000183"/>
</branch>
<branch type="ELSE IF" condition="'${shard_type}' == 'operational'">
<return>
<value>DistributedOperationalDatastore</value>
<status status="NOT RUN" start="2026-04-08T00:54:31.683283" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:54:31.683245" elapsed="0.000077"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:31.683021" elapsed="0.000323"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized shard type: ${shard_type}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:31.683493" elapsed="0.000021"/>
</kw>
<msg time="2026-04-08T00:54:31.683611" level="INFO">${type_class} = DistributedConfigDatastore</msg>
<var>${type_class}</var>
<arg>shard_type=${shard_type}</arg>
<doc>Simple lookup for class name corresponding to desired type.</doc>
<status status="PASS" start="2026-04-08T00:54:31.682773" elapsed="0.000862"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:54:31.684189" level="INFO">${cluster_index} = 2</msg>
<var>${cluster_index}</var>
<arg>${member_index}+${NODE_ROLE_INDEX_START}-1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:54:31.683799" elapsed="0.000421"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:54:31.684844" level="INFO">${uri} = jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-inventory-config,type=DistributedConfigDatastore</msg>
<var>${uri}</var>
<arg>${JOLOKIA_READ_URI}:Category=Shards,name=member-${cluster_index}-shard-${shard_name}-${shard_type},type=${type_class}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:54:31.684373" elapsed="0.000498"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:54:31.690519" level="INFO">jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-inventory-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:54:31.690240" elapsed="0.000326"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:54:31.690986" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:54:31.690719" elapsed="0.000312"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:54:31.707582" level="INFO">GET Request : url=http://10.30.170.131:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-inventory-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-inventory-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:54:31.707738" level="INFO">GET Response : url=http://10.30.170.131:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-inventory-config,type=DistributedConfigDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Wed, 08 Apr 2026 00:54:31 GMT', 'Expires': 'Tue, 07 Apr 2026 23:54:31 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-2-shard-inventory-config,type=DistributedConfigDatastore","type":"read"},"value":{"ReadWriteTransactionCount":0,"SnapshotIndex":40,"InMemoryJournalLogSize":1,"ReplicatedToAllIndex":40,"Leader":"member-3-shard-inventory-config","LastIndex":41,"RaftState":"Follower","LastApplied":41,"LastCommittedTransactionTime":"1970-01-01 00:00:00.000","PeerAddresses":"member-1-shard-inventory-config: pekko:\/\/opendaylight-cluster-data@10.30.170.48:2550\/user\/shardmanager-config\/member-1-shard-inventory-config, member-3-shard-inventory-config: pekko:\/\/opendaylight-cluster-data@10.30.171.110:2550\/user\/shardmanager-config\/member-3-shard-inventory-config","LastLogIndex":41,"LastLeadershipChangeTime":"2026-04-08 00:54:17.985","FollowerInitialSyncStatus":true,"FollowerInfo":[],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"3.826 ms","CurrentTerm":3,"LastTerm":3,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-3-shard-inventory-config","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":0,"TxCohortCacheSize":0,"PeerVotingStates":"member-1-shard-inventory-config: true, member-3-shard-inventory-config: true","LastLogTerm":3,"StatRetrievalError":null,"CommitIndex":41,"SnapshotTerm":3,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-2-shard-inventory-config","LeadershipChangeCount":1,"InMemoryJournalDataSize":2060},"timestamp":1775609671,"status":200} 
 </msg>
<msg time="2026-04-08T00:54:31.707966" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:54:31.693031" elapsed="0.014975"/>
</kw>
<status status="PASS" start="2026-04-08T00:54:31.691099" elapsed="0.016971"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:31.708366" elapsed="0.000033"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:54:31.708109" elapsed="0.000352"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:31.691080" elapsed="0.017413"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:54:31.716357" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-2-shard-inventory-config,type=DistributedConfigDatastore","type":"read"},"value":{"ReadWriteTransactionCount":0,"SnapshotIndex":40,"InMemoryJournalLogSize":1,"ReplicatedToAllIndex":40,"Leader":"member-3-shard-inventory-config","LastIndex":41,"RaftState":"Follower","LastApplied":41,"LastCommittedTransactionTime":"1970-01-01 00:00:00.000","PeerAddresses":"member-1-shard-inventory-config: pekko:\/\/opendaylight-cluster-data@10.30.170.48:2550\/user\/shardmanager-config\/member-1-shard-inventory-config, member-3-shard-inventory-config: pekko:\/\/opendaylight-cluster-data@10.30.171.110:2550\/user\/shardmanager-config\/member-3-shard-inventory-config","LastLogIndex":41,"LastLeadershipChangeTime":"2026-04-08 00:54:17.985","FollowerInitialSyncStatus":true,"FollowerInfo":[],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"3.826 ms","CurrentTerm":3,"LastTerm":3,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-3-shard-inventory-config","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":0,"TxCohortCacheSize":0,"PeerVotingStates":"member-1-shard-inventory-config: true, member-3-shard-inventory-config: true","LastLogTerm":3,"StatRetrievalError":null,"CommitIndex":41,"SnapshotTerm":3,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-2-shard-inventory-config","LeadershipChangeCount":1,"InMemoryJournalDataSize":2060},"timestamp":1775609671,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:54:31.710432" elapsed="0.006376"/>
</kw>
<status status="PASS" start="2026-04-08T00:54:31.709920" elapsed="0.007088"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:31.709893" elapsed="0.007177"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:54:31.723012" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:54:31.717958" elapsed="0.005187"/>
</kw>
<status status="PASS" start="2026-04-08T00:54:31.717295" elapsed="0.005953"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:31.717253" elapsed="0.006024"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:54:31.724037" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:54:31.723477" elapsed="0.000588"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:31.724775" elapsed="0.000075"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:54:31.724184" elapsed="0.000768"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:54:31.726251" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:54:31.725470" elapsed="0.000826"/>
</kw>
<status status="PASS" start="2026-04-08T00:54:31.724979" elapsed="0.001417"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:31.724149" elapsed="0.002272"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:54:31.727124" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:54:31.726579" elapsed="0.000572"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:31.727862" elapsed="0.000074"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:54:31.727273" elapsed="0.000765"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:54:31.729303" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:54:31.728547" elapsed="0.000797"/>
</kw>
<status status="PASS" start="2026-04-08T00:54:31.728065" elapsed="0.001377"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:31.727253" elapsed="0.002213"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:54:31.729617" elapsed="0.000759"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:54:31.731147" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:54:31.730633" elapsed="0.000556"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:54:31.731532" elapsed="0.002567"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:54:31.709240" elapsed="0.024987"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:54:31.734409" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:54:31.734300" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:31.734281" elapsed="0.000193"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:54:31.749872" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-2-shard-inventory-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 177560...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:54:31.734616" elapsed="0.015286"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:54:31.749954" elapsed="0.000032"/>
</return>
<msg time="2026-04-08T00:54:31.750127" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-2-shard-inventory-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 177560...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:54:31.685790" elapsed="0.064384"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:54:31.750269" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:54:31.750423" level="INFO">${data_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-2-shard-inventory-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 177560...</msg>
<var>${data_text}</var>
<arg>uri=${uri}</arg>
<arg>session=${session}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-08T00:54:31.685082" elapsed="0.065367"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:54:31.751457" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-2-shard-inventory-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1775609671, 'valu...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:54:31.751009" elapsed="0.000476"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-08T00:54:31.751533" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:54:31.751700" level="INFO">${data_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-2-shard-inventory-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1775609671, 'valu...</msg>
<var>${data_object}</var>
<arg>${data_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-08T00:54:31.750670" elapsed="0.001056"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:54:31.752073" level="INFO">${value} = {'AbortTransactionsCount': 0, 'CommitIndex': 41, 'CommittedTransactionsCount': 0, 'CurrentTerm': 3, 'FailedReadTransactionsCount': 0, 'FailedTransactionsCount': 0, 'FollowerInfo': [], 'FollowerInitial...</msg>
<var>${value}</var>
<arg>${data_object}</arg>
<arg>value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:54:31.751878" elapsed="0.000221"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:54:31.752466" level="INFO">${raft_property} = Follower</msg>
<var>${raft_property}</var>
<arg>${value}</arg>
<arg>${property}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:54:31.752266" elapsed="0.000225"/>
</kw>
<return>
<value>${raft_property}</value>
<status status="PASS" start="2026-04-08T00:54:31.752537" elapsed="0.000027"/>
</return>
<msg time="2026-04-08T00:54:31.752688" level="INFO">${raft_state} = Follower</msg>
<var>${raft_state}</var>
<arg>RaftState</arg>
<arg>${shard_name}</arg>
<arg>${shard_type}</arg>
<arg>${member_index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft property.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T00:54:31.459235" elapsed="0.293478"/>
</kw>
<return>
<value>${raft_state}</value>
<status status="PASS" start="2026-04-08T00:54:31.752770" elapsed="0.000026"/>
</return>
<msg time="2026-04-08T00:54:31.752917" level="INFO">${raft_state} = Follower</msg>
<var>${raft_state}</var>
<arg>shard_name=${shard_name}</arg>
<arg>shard_type=${ds_type}</arg>
<arg>member_index=${index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft status.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T00:54:31.458422" elapsed="0.294520"/>
</kw>
<if>
<branch type="IF" condition="'Follower' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${follower_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-08T00:54:31.753498" elapsed="0.000197"/>
</kw>
<status status="PASS" start="2026-04-08T00:54:31.753022" elapsed="0.000712"/>
</branch>
<branch type="ELSE IF" condition="'Leader' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${leader_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:31.753899" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:54:31.753758" elapsed="0.000194"/>
</branch>
<branch type="ELSE IF" condition="${validate}">
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized Raft state: ${raft_state}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:31.754138" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:54:31.753975" elapsed="0.000237"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:31.753004" elapsed="0.001230"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T00:54:31.458067" elapsed="0.296192"/>
</iter>
<iter>
<kw name="Get_Raft_State_Of_Shard_At_Member" owner="ClusterManagement">
<kw name="Get_Raft_Property_From_Shard_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:54:31.756778" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:54:31.756479" elapsed="0.000325"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:54:31.756850" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:54:31.756994" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:54:31.756125" elapsed="0.000894"/>
</kw>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Get_As_Json_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:54:31.827823" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:54:31.827440" elapsed="0.000415"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:54:31.828611" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:54:31.828365" elapsed="0.000321">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-08T00:54:31.828826" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:54:31.828016" elapsed="0.000835"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:54:31.829412" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:54:31.829013" elapsed="0.000426"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T00:54:31.829734" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-08T00:54:31.829897" level="INFO">${template} = /rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T00:54:31.829597" elapsed="0.000326"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:54:31.830367" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:54:31.830102" elapsed="0.000311"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:54:31.831541" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:54:31.831281" elapsed="0.000304"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-08T00:54:31.832009" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-08T00:54:31.831742" elapsed="0.000293"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:31.832374" elapsed="0.000021"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:31.832572" elapsed="0.000024"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:31.832741" elapsed="0.000021"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-08T00:54:31.832242" elapsed="0.000555"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-08T00:54:31.832086" elapsed="0.000741"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-08T00:54:31.832870" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:54:31.833028" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-08T00:54:31.830930" elapsed="0.002123"/>
</kw>
<status status="PASS" start="2026-04-08T00:54:31.830482" elapsed="0.002602"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:31.833266" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:54:31.833108" elapsed="0.000215"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:31.830462" elapsed="0.002881"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:54:31.833905" level="INFO">${final_text} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:54:31.833480" elapsed="0.000452"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T00:54:31.833991" 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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="PASS" start="2026-04-08T00:54:31.826753" elapsed="0.007423"/>
</kw>
<msg time="2026-04-08T00:54:31.834250" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:54:31.813614" elapsed="0.020776"/>
</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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:31.847409" elapsed="0.000051"/>
</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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:31.860381" elapsed="0.000051"/>
</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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:31.873356" elapsed="0.000051"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:31.873707" elapsed="0.000074"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:31.874028" elapsed="0.000073"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:31.874844" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:54:31.874623" elapsed="0.000288"/>
</branch>
<status status="NOT RUN" start="2026-04-08T00:54:31.874594" elapsed="0.000355"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:31.875222" elapsed="0.000035"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:31.875531" elapsed="0.000034"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:31.875823" elapsed="0.000034"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-08T00:54:31.874531" elapsed="0.001373"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-08T00:54:31.874274" elapsed="0.001700"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:31.876298" elapsed="0.000074"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-08T00:54:31.876545" elapsed="0.000017"/>
</return>
<msg time="2026-04-08T00:54:31.876720" level="INFO">${uri} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-08T00:54:31.803557" elapsed="0.073189"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:54:31.878754" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:54:31.878440" elapsed="0.000380">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-08T00:54:31.878967" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:54:31.877598" elapsed="0.001408"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:31.880351" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:54:31.879172" elapsed="0.001266"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:54:31.881272" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:54:31.880763" elapsed="0.000555"/>
</kw>
<status status="PASS" start="2026-04-08T00:54:31.880475" elapsed="0.000892"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:31.879136" elapsed="0.002271"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:54:31.884528" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:54:31.881603" elapsed="0.002966"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-08T00:54:31.884705" elapsed="0.000031"/>
</return>
<msg time="2026-04-08T00:54:31.884933" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:54:31.877125" elapsed="0.007833"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:54:31.886988" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:54:31.886687" elapsed="0.000365">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-08T00:54:31.887248" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:54:31.885771" elapsed="0.001518"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-08T00:54:31.887728" elapsed="0.000051"/>
</return>
<status status="PASS" start="2026-04-08T00:54:31.887438" elapsed="0.000428"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:31.887417" elapsed="0.000488"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:31.888098" elapsed="0.000090"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:31.888430" elapsed="0.000074"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-08T00:54:31.888624" elapsed="0.000017"/>
</return>
<msg time="2026-04-08T00:54:31.901608" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:54:31.885321" elapsed="0.016314"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:54:31.904342" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:54:31.903744" elapsed="0.000728"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:54:31.905298" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:54:31.904703" elapsed="0.000727"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:54:31.919127" level="INFO">GET Request : url=http://10.30.171.110:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 path_url=/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0336bvzrfnrhc3cqywxyctca52.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:54:31.919592" level="INFO">GET Response : url=http://10.30.171.110:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Transfer-Encoding': 'chunked'} 
 body={"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","hidden-symmetric-keys","encrypted-private-keys","asymmetrically-encrypted-value-format","cms-encrypted-data-format","cleartext-private-keys","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["ssh-client-keepalives","client-ident-hostbased","client-ident-publickey","client-ident-password"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-ex... (set the log level to DEBUG or TRACE to see the full content) 
 </msg>
<msg time="2026-04-08T00:54:31.919903" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:54:31.908715" elapsed="0.011234"/>
</kw>
<status status="PASS" start="2026-04-08T00:54:31.905556" elapsed="0.014450"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:31.921037" elapsed="0.000039"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:54:31.920046" elapsed="0.001089"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:31.905535" elapsed="0.015650"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:54:31.926457" level="INFO">{"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","hidden-symmetric-keys","encrypted-private-keys","asymmetrically-encrypted-value-format","cms-encrypted-data-format","cleartext-private-keys","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["ssh-client-keepalives","client-ident-hostbased","client-ident-publickey","client-ident-password"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-experimenter-types?revision=2015-10-20","namespace":"urn:opendaylight:openflowplugin:experimenter:types","conformance-type":"import"},{"name":"ietf-ip_2018-02-22","revision":"2018-02-22","schema":"/rests/modules/ietf-ip?revision=2018-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-ip","conformance-type":"import","feature":["ipv6-privacy-autoconf","ipv4-non-contiguous-netmasks"]},{"name":"ietf-tcp-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-client","conformance-type":"import","feature":["local-binding-supported","tcp-client-keepalives"]},{"name":"node-config_2014-10-15","revision":"2014-10-15","schema":"/rests/modules/node-config?revision=2014-10-15","namespace":"urn:opendaylight:module:config","conformance-type":"import"},{"name":"ietf-restconf_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf","conformance-type":"import"},{"name":"ietf-datastores_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-datastores?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-datastores","conformance-type":"import"},{"name":"ietf-yang-patch_2017-02-22","revision":"2017-02-22","schema":"/rests/modules/ietf-yang-patch?revision=2017-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-patch","conformance-type":"import"},{"name":"sal-group_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-group?revision=2013-09-18","namespace":"urn:opendaylight:group:service","conformance-type":"import"},{"name":"odl-codegen-extensions_2024-06-27","revision":"2024-06-27","schema":"/rests/modules/odl-codegen-extensions?revision=2024-06-27","namespace":"urn:opendaylight:yang:extension:codegen","conformance-type":"import"},{"name":"sal-meter_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-meter?revision=2013-09-18","namespace":"urn:opendaylight:meter:service","conformance-type":"import"},{"name":"ietf-interfaces_2018-02-20","revision":"2018-02-20","schema":"/rests/modules/ietf-interfaces?revision=2018-02-20","namespace":"urn:ietf:params:xml:ns:yang:ietf-interfaces","conformance-type":"import","feature":["pre-provisioning","if-mib","arbitrary-names"]},{"name":"opendaylight-l2-types_2013-08-27","revision":"2013-08-27","schema":"/rests/modules/opendaylight-l2-types?revision=2013-08-27","namespace":"urn:opendaylight:l2:types","conformance-type":"import"},{"name":"opendaylight-flow-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-flow-types?revision=2013-10-26","namespace":"urn:opendaylight:flow:types","conformance-type":"import"},{"name":"lldp-speaker-config_2016-05-12","revision":"2016-05-12","schema":"/rests/modules/lldp-speaker-config?revision=2016-05-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker:config","conformance-type":"import"},{"name":"aaa-cert_2015-11-26","revision":"2015-11-26","schema":"/rests/modules/aaa-cert?revision=2015-11-26","namespace":"urn:opendaylight:yang:aaa:cert","conformance-type":"import"},{"name":"openflow-action_2015-02-03","revision":"2015-02-03","schema":"/rests/modules/openflow-action?revision=2015-02-03","namespace":"urn:opendaylight:openflow:common:action","conformance-type":"import"},{"name":"openflow-approved-extensions_2016-08-02","revision":"2016-08-02","schema":"/rests/modules/openflow-approved-extensions?revision=2016-08-02","namespace":"urn:opendaylight:openflow:approved:extensions","conformance-type":"import"},{"name":"nc-notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/nc-notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netmod:notification","conformance-type":"import"},{"name":"ietf-netconf-nmda_2019-01-07","revision":"2019-01-07","schema":"/rests/modules/ietf-netconf-nmda?revision=2019-01-07","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-nmda","conformance-type":"import","feature":["with-defaults","origin"]},{"name":"ietf-tcp-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-common","conformance-type":"import","feature":["keepalives-supported"]},{"name":"network-topology_2013-10-21","revision":"2013-10-21","schema":"/rests/modules/network-topology?revision=2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:network-topology","conformance-type":"import"},{"name":"aaa-encrypt-service-config_2024-02-02","revision":"2024-02-02","schema":"/rests/modules/aaa-encrypt-service-config?revision=2024-02-02","namespace":"config:aaa:authn:encrypt:service:config","conformance-type":"import"},{"name":"openflow-instruction_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-instruction?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:instruction","conformance-type":"import"},{"name":"ietf-tls-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-client","conformance-type":"import","feature":["client-ident-x509-cert","server-auth-x509-cert"]},{"name":"opendaylight-group-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-group-statistics?revision=2013-11-11","namespace":"urn:opendaylight:group:statistics","conformance-type":"import"},{"name":"cluster-admin_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/cluster-admin?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:cluster:admin","conformance-type":"import"},{"name":"opendaylight-flow-statistics_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-flow-statistics?revision=2013-08-19","namespace":"urn:opendaylight:flow:statistics","conformance-type":"import"},{"name":"opendaylight-table-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-table-types?revision=2013-10-26","namespace":"urn:opendaylight:table:types","conformance-type":"import"},{"name":"forwarding-rules-manager-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/forwarding-rules-manager-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:forwardingrules-manager:config","conformance-type":"import"},{"name":"odl-srm-types_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-types?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:types","conformance-type":"import"},{"name":"ietf-x509-cert-to-name_2014-12-10","revision":"2014-12-10","schema":"/rests/modules/ietf-x509-cert-to-name?revision=2014-12-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-x509-cert-to-name","conformance-type":"import"},{"name":"flow-node-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-node-inventory?revision=2013-08-19","namespace":"urn:opendaylight:flow:inventory","conformance-type":"import"},{"name":"flow-errors_2013-11-16","revision":"2013-11-16","schema":"/rests/modules/flow-errors?revision=2013-11-16","namespace":"urn:opendaylight:flow:errors","conformance-type":"import"},{"name":"ietf-netconf_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:netconf:base:1.0","conformance-type":"import","feature":["xpath","url","rollback-on-error","validate","startup","candidate","confirmed-commit","writable-running"]},{"name":"iana-ssh-public-key-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-public-key-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-public-key-algs","conformance-type":"import"},{"name":"aaa-cert-mdsal_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/aaa-cert-mdsal?revision=2016-03-21","namespace":"urn:opendaylight:yang:aaa:cert:mdsal","conformance-type":"import"},{"name":"odl-device-notification_2024-02-18","revision":"2024-02-18","schema":"/rests/modules/odl-device-notification?revision=2024-02-18","namespace":"urn:opendaylight:device:notification","conformance-type":"import"},{"name":"ietf-origin_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-origin?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-origin","conformance-type":"import"},{"name":"openflow-augments_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-augments?revision=2015-02-25","namespace":"urn:opendaylight:openflow:augments","conformance-type":"import"},{"name":"iana-ssh-encryption-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-encryption-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-encryption-algs","conformance-type":"import"},{"name":"ietf-truststore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-truststore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-truststore","conformance-type":"import","feature":["inline-definitions-supported"]},{"name":"distributed-datastore-provider_2025-01-30","revision":"2025-01-30","schema":"/rests/modules/distributed-datastore-provider?revision=2025-01-30","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:distributed-datastore-provider","conformance-type":"import"},{"name":"opendaylight-group-types_2013-10-18","revision":"2013-10-18","schema":"/rests/modules/opendaylight-group-types?revision=2013-10-18","namespace":"urn:opendaylight:group:types","conformance-type":"import"},{"name":"sal-remote-augment_2023-11-03","revision":"2023-11-03","schema":"/rests/modules/sal-remote-augment?revision=2023-11-03","namespace":"urn:sal:restconf:event:subscription","conformance-type":"import"},{"name":"opendaylight-ipv6-arbitrary-bitmask-fields_2016-02-24","revision":"2016-02-24","schema":"/rests/modules/opendaylight-ipv6-arbitrary-bitmask-fields?revision=2016-02-24","namespace":"urn:opendaylight:opendaylight-ipv6-arbitrary-bitmask-fields","conformance-type":"import"},{"name":"sal-flows-batch_2016-03-14","revision":"2016-03-14","schema":"/rests/modules/sal-flows-batch?revision=2016-03-14","namespace":"urn:opendaylight:flows:service","conformance-type":"import"},{"name":"ietf-tls-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-common","conformance-type":"import","feature":["tls12","hello-params","tls13"]},{"name":"openflow-types_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-types?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:types","conformance-type":"import"},{"name":"ietf-netconf-with-defaults_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf-with-defaults?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults","conformance-type":"import"},{"name":"odl-srm-ops_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-ops?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:ops","conformance-type":"import"},{"name":"odl-general-entity_2015-09-30","revision":"2015-09-30","schema":"/rests/modules/odl-general-entity?revision=2015-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:mdsal:core:general-entity","conformance-type":"import"},{"name":"iana-ssh-key-exchange-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-key-exchange-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-key-exchange-algs","conformance-type":"import"},{"name":"node-ssl-connection-error_2019-07-23","revision":"2019-07-23","schema":"/rests/modules/node-ssl-connection-error?revision=2019-07-23","namespace":"urn:opendaylight:node-ssl-connection-error:service","conformance-type":"import"},{"name":"openflow-protocol_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-protocol?revision=2013-07-31","namespace":"urn:opendaylight:openflow:protocol","conformance-type":"import"},{"name":"ietf-udp-server_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-server?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-server","conformance-type":"import"},{"name":"ietf-keystore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-keystore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-keystore","conformance-type":"import","feature":["asymmetric-keys","inline-definitions-supported"]},{"name":"aaa_2016-12-14","revision":"2016-12-14","schema":"/rests/modules/aaa?revision=2016-12-14","namespace":"urn:opendaylight:params:xml:ns:yang:aaa","conformance-type":"import"},{"name":"aaa-cert-rpc_2015-12-15","revision":"2015-12-15","schema":"/rests/modules/aaa-cert-rpc?revision=2015-12-15","namespace":"urn:opendaylight:yang:aaa:cert:rpc","conformance-type":"import"},{"name":"system-notifications_2013-09-27","revision":"2013-09-27","schema":"/rests/modules/system-notifications?revision=2013-09-27","namespace":"urn:opendaylight:openflow:system","conformance-type":"import"},{"name":"sal-flat-batch_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/sal-flat-batch?revision=2016-03-21","namespace":"urn:opendaylight:flat-batch:service","conformance-type":"import"},{"name":"notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netconf:notification:1.0","conformance-type":"import"},{"name":"sal-remote_2014-01-14","revision":"2014-01-14","schema":"/rests/modules/sal-remote?revision=2014-01-14","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:remote","conformance-type":"import"},{"name":"yang-ext_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/yang-ext?revision=2013-07-09","namespace":"urn:opendaylight:yang:extension:yang-ext","conformance-type":"import"},{"name":"opendaylight-multipart-types_2017-01-12","revision":"2017-01-12","schema":"/rests/modules/opendaylight-multipart-types?revision=2017-01-12","namespace":"urn:opendaylight:multipart:types","conformance-type":"import"},{"name":"opendaylight-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-inventory?revision=2013-08-19","namespace":"urn:opendaylight:inventory","conformance-type":"import"},{"name":"sal-queue_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-queue?revision=2015-03-05","namespace":"urn:opendaylight:queue:service","conformance-type":"import"},{"name":"sal-groups-batch_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/sal-groups-batch?revision=2016-03-15","namespace":"urn:opendaylight:groups:service","conformance-type":"import"},{"name":"arbitrator-reconcile_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/arbitrator-reconcile?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:arbitrator-reconcile:service","conformance-type":"import"},{"name":"ietf-yang-metadata_2016-08-05","revision":"2016-08-05","schema":"/rests/modules/ietf-yang-metadata?revision=2016-08-05","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-metadata","conformance-type":"import"},{"name":"opendaylight-arbitrary-bitmask-fields_2016-01-30","revision":"2016-01-30","schema":"/rests/modules/opendaylight-arbitrary-bitmask-fields?revision=2016-01-30","namespace":"urn:opendaylight:arbitrary:bitmask:fields","conformance-type":"import"},{"name":"ietf-udp-client_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-client?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-client","conformance-type":"import","feature":["local-binding"]},{"name":"opendaylight-meter-types_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/opendaylight-meter-types?revision=2013-09-18","namespace":"urn:opendaylight:meter:types","conformance-type":"import"},{"name":"opendaylight-action-types_2013-11-12","revision":"2013-11-12","schema":"/rests/modules/opendaylight-action-types?revision=2013-11-12","namespace":"urn:opendaylight:action:types","conformance-type":"import"},{"name":"sal-role_2015-07-27","revision":"2015-07-27","schema":"/rests/modules/sal-role?revision=2015-07-27","namespace":"urn:opendaylight:role:service","conformance-type":"import"},{"name":"openflow-provider-config_2016-05-10","revision":"2016-05-10","schema":"/rests/modules/openflow-provider-config?revision=2016-05-10","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:provider:config","conformance-type":"import"},{"name":"odl-serviceutils-upgrade_2018-07-02","revision":"2018-07-02","schema":"/rests/modules/odl-serviceutils-upgrade?revision=2018-07-02","namespace":"urn:opendaylight:serviceutils:upgrade","conformance-type":"import"},{"name":"opendaylight-match-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-match-types?revision=2013-10-26","namespace":"urn:opendaylight:model:match:types","conformance-type":"import"},{"name":"ietf-restconf-server_2024-08-14","revision":"2024-08-14","schema":"/rests/modules/ietf-restconf-server?revision=2024-08-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-server","conformance-type":"import","feature":["http-listen","https-listen"]},{"name":"reconciliation-result-state_2017-07-13","revision":"2017-07-13","schema":"/rests/modules/reconciliation-result-state?revision=2017-07-13","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:rf:state","conformance-type":"import"},{"name":"onf-extensions_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/onf-extensions?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf","conformance-type":"import"},{"name":"sal-table_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/sal-table?revision=2013-10-26","namespace":"urn:opendaylight:table:service","conformance-type":"import"},{"name":"iana-http-versions_2026-02-04","revision":"2026-02-04","schema":"/rests/modules/iana-http-versions?revision=2026-02-04","namespace":"urn:ietf:params:xml:ns:yang:iana-http-versions","conformance-type":"import"},{"name":"opendaylight-direct-statistics_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/opendaylight-direct-statistics?revision=2016-05-11","namespace":"urn:opendaylight:direct:statistics","conformance-type":"import"},{"name":"opendaylight-port-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-port-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:port","conformance-type":"import"},{"name":"sal-async-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/sal-async-config?revision=2017-06-19","namespace":"urn:opendaylight:async-config:service","conformance-type":"import"},{"name":"aaa-password-service-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-password-service-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:password:service:config","conformance-type":"import"},{"name":"ietf-yang-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-yang-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-types","conformance-type":"import"},{"name":"opendaylight-queue-statistics_2013-12-16","revision":"2013-12-16","schema":"/rests/modules/opendaylight-queue-statistics?revision=2013-12-16","namespace":"urn:opendaylight:queue:statistics","conformance-type":"import"},{"name":"sal-bundle_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/sal-bundle?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf:bundle:service","conformance-type":"import"},{"name":"ietf-restconf-subscribed-notifications_2019-11-17","revision":"2019-11-17","schema":"/rests/modules/ietf-restconf-subscribed-notifications?revision=2019-11-17","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-subscribed-notifications","conformance-type":"import"},{"name":"sal-meters-batch_2016-03-16","revision":"2016-03-16","schema":"/rests/modules/sal-meters-batch?revision=2016-03-16","namespace":"urn:opendaylight:meters:service","conformance-type":"import"},{"name":"odl-entity-owners","revision":"","schema":"/rests/modules/odl-entity-owners","namespace":"urn:opendaylight:params:xml:ns:yang:controller:entity-owners","conformance-type":"import"},{"name":"sal-experimenter-mp-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-mp-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-mp-message:service","conformance-type":"import"},{"name":"packet-processing_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/packet-processing?revision=2013-07-09","namespace":"urn:opendaylight:packet:service","conformance-type":"import"},{"name":"openflow-configuration_2014-06-30","revision":"2014-06-30","schema":"/rests/modules/openflow-configuration?revision=2014-06-30","namespace":"urn:opendaylight:openflow:config","conformance-type":"import"},{"name":"odl-srm-rpcs_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-rpcs?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:rpc","conformance-type":"import"},{"name":"ietf-netconf-acm_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-netconf-acm?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-acm","conformance-type":"import"},{"name":"iana-crypt-hash_2014-08-06","revision":"2014-08-06","schema":"/rests/modules/iana-crypt-hash?revision=2014-08-06","namespace":"urn:ietf:params:xml:ns:yang:iana-crypt-hash","conformance-type":"import","feature":["crypt-hash-sha-512","crypt-hash-sha-256","crypt-hash-md5"]},{"name":"openflow-extensible-match_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-extensible-match?revision=2015-02-25","namespace":"urn:opendaylight:openflow:oxm","conformance-type":"import"}],"module-set-id":"2"}}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:54:31.923718" elapsed="0.003102"/>
</kw>
<status status="PASS" start="2026-04-08T00:54:31.923427" elapsed="0.003457"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:31.923395" elapsed="0.003538"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:54:31.929597" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:54:31.927338" elapsed="0.002304"/>
</kw>
<status status="PASS" start="2026-04-08T00:54:31.927030" elapsed="0.002673"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:31.927001" elapsed="0.002750"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:54:31.930661" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:54:31.930117" elapsed="0.000591"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:31.931120" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:54:31.930817" elapsed="0.000398"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:54:31.931932" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:54:31.931475" elapsed="0.000483"/>
</kw>
<status status="PASS" start="2026-04-08T00:54:31.931263" elapsed="0.000755"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:31.930786" elapsed="0.001277"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:54:31.932914" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:54:31.932410" elapsed="0.000550"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:31.933410" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:54:31.933068" elapsed="0.000421"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:54:31.934058" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:54:31.933742" elapsed="0.000342"/>
</kw>
<status status="PASS" start="2026-04-08T00:54:31.933536" elapsed="0.000607"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:31.933038" elapsed="0.001213"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:54:31.934576" elapsed="0.000436"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:54:31.935789" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:54:31.935369" elapsed="0.000465"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:54:31.936175" elapsed="0.002292"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:54:31.922223" elapsed="0.016322"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:54:31.938911" elapsed="0.000038"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:54:31.938711" elapsed="0.000321"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:31.938692" elapsed="0.000376"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:54:31.949387" level="INFO">${text_normalized} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:54:31.939276" elapsed="0.010156"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:54:31.949566" elapsed="0.000033"/>
</return>
<msg time="2026-04-08T00:54:31.949817" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:54:31.902011" elapsed="0.047844"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:54:31.949918" elapsed="0.000027"/>
</return>
<msg time="2026-04-08T00:54:31.950068" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="PASS" start="2026-04-08T00:54:31.765205" elapsed="0.184889"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Json_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:31.950436" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:54:31.950194" elapsed="0.000349"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:31.950176" elapsed="0.000392"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:54:31.950601" elapsed="0.000025"/>
</return>
<arg>session=${session}</arg>
<arg>folder=${RESTCONF_MODULES_DIR}</arg>
<arg>verify=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Add arguments sensible for JSON data, return Get_Templated response text.
Optionally, verification against JSON data (may be iterated) is called.
Only subset of JSON data is verified and returned if JMES path is specified in
file ${folder}/jmespath.expr.</doc>
<status status="PASS" start="2026-04-08T00:54:31.761092" elapsed="0.189630"/>
</kw>
<status status="PASS" start="2026-04-08T00:54:31.757086" elapsed="0.193679"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:31.757069" elapsed="0.193719"/>
</if>
<kw name="Resolve_Shard_Type_Class" owner="ClusterManagement">
<if>
<branch type="IF" condition="'${shard_type}' == 'config'">
<return>
<value>DistributedConfigDatastore</value>
<status status="PASS" start="2026-04-08T00:54:31.951413" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-08T00:54:31.951306" elapsed="0.000166"/>
</branch>
<branch type="ELSE IF" condition="'${shard_type}' == 'operational'">
<return>
<value>DistributedOperationalDatastore</value>
<status status="NOT RUN" start="2026-04-08T00:54:31.951532" elapsed="0.000012"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:54:31.951495" elapsed="0.000075"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:31.951288" elapsed="0.000304"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized shard type: ${shard_type}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:31.951734" elapsed="0.000021"/>
</kw>
<msg time="2026-04-08T00:54:31.951852" level="INFO">${type_class} = DistributedConfigDatastore</msg>
<var>${type_class}</var>
<arg>shard_type=${shard_type}</arg>
<doc>Simple lookup for class name corresponding to desired type.</doc>
<status status="PASS" start="2026-04-08T00:54:31.951009" elapsed="0.000869"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:54:31.952434" level="INFO">${cluster_index} = 3</msg>
<var>${cluster_index}</var>
<arg>${member_index}+${NODE_ROLE_INDEX_START}-1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:54:31.952041" elapsed="0.000419"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:54:31.953068" level="INFO">${uri} = jolokia/read/org.opendaylight.controller:Category=Shards,name=member-3-shard-inventory-config,type=DistributedConfigDatastore</msg>
<var>${uri}</var>
<arg>${JOLOKIA_READ_URI}:Category=Shards,name=member-${cluster_index}-shard-${shard_name}-${shard_type},type=${type_class}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:54:31.952612" elapsed="0.000483"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:54:31.959977" level="INFO">jolokia/read/org.opendaylight.controller:Category=Shards,name=member-3-shard-inventory-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:54:31.959699" elapsed="0.000326"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:54:31.960469" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:54:31.960194" elapsed="0.000320"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:54:31.969090" level="INFO">GET Request : url=http://10.30.171.110:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-3-shard-inventory-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-3-shard-inventory-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:54:31.969218" level="INFO">GET Response : url=http://10.30.171.110:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-3-shard-inventory-config,type=DistributedConfigDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Wed, 08 Apr 2026 00:54:31 GMT', 'Expires': 'Tue, 07 Apr 2026 23:54:31 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-3-shard-inventory-config,type=DistributedConfigDatastore","type":"read"},"value":{"ReadWriteTransactionCount":0,"SnapshotIndex":40,"InMemoryJournalLogSize":1,"ReplicatedToAllIndex":40,"Leader":"member-3-shard-inventory-config","LastIndex":41,"RaftState":"Leader","LastApplied":41,"LastCommittedTransactionTime":"1970-01-01 00:00:00.000","PeerAddresses":"member-1-shard-inventory-config: pekko:\/\/opendaylight-cluster-data@10.30.170.48:2550\/user\/shardmanager-config\/member-1-shard-inventory-config, member-2-shard-inventory-config: pekko:\/\/opendaylight-cluster-data@10.30.170.131:2550\/user\/shardmanager-config\/member-2-shard-inventory-config","LastLogIndex":41,"LastLeadershipChangeTime":"2026-04-08 00:52:55.697","FollowerInitialSyncStatus":true,"FollowerInfo":[{"timeSinceLastActivity":"00:00:00.072","active":true,"matchIndex":41,"voting":true,"id":"member-1-shard-inventory-config","nextIndex":42},{"timeSinceLastActivity":"00:00:00.072","active":true,"matchIndex":41,"voting":true,"id":"member-2-shard-inventory-config","nextIndex":42}],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"568.2 μs","CurrentTerm":3,"LastTerm":3,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-3-shard-inventory-config","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":0,"TxCohortCacheSize":0,"PeerVotingStates":"member-1-shard-inventory-config: true, member-2-shard-inventory-config: true","LastLogTerm":3,"StatRetrievalError":null,"CommitIndex":41,"SnapshotTerm":3,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":2,"ShardName":"member-3-shard-inventory-config","LeadershipChangeCount":3,"InMemoryJournalDataSize":2060},"timestamp":1775609671,"status":200} 
 </msg>
<msg time="2026-04-08T00:54:31.969386" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:54:31.962525" elapsed="0.006889"/>
</kw>
<status status="PASS" start="2026-04-08T00:54:31.960583" elapsed="0.008873"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:31.969634" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:54:31.969482" elapsed="0.000215"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:31.960564" elapsed="0.009155"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:54:31.973704" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-3-shard-inventory-config,type=DistributedConfigDatastore","type":"read"},"value":{"ReadWriteTransactionCount":0,"SnapshotIndex":40,"InMemoryJournalLogSize":1,"ReplicatedToAllIndex":40,"Leader":"member-3-shard-inventory-config","LastIndex":41,"RaftState":"Leader","LastApplied":41,"LastCommittedTransactionTime":"1970-01-01 00:00:00.000","PeerAddresses":"member-1-shard-inventory-config: pekko:\/\/opendaylight-cluster-data@10.30.170.48:2550\/user\/shardmanager-config\/member-1-shard-inventory-config, member-2-shard-inventory-config: pekko:\/\/opendaylight-cluster-data@10.30.170.131:2550\/user\/shardmanager-config\/member-2-shard-inventory-config","LastLogIndex":41,"LastLeadershipChangeTime":"2026-04-08 00:52:55.697","FollowerInitialSyncStatus":true,"FollowerInfo":[{"timeSinceLastActivity":"00:00:00.072","active":true,"matchIndex":41,"voting":true,"id":"member-1-shard-inventory-config","nextIndex":42},{"timeSinceLastActivity":"00:00:00.072","active":true,"matchIndex":41,"voting":true,"id":"member-2-shard-inventory-config","nextIndex":42}],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"568.2 μs","CurrentTerm":3,"LastTerm":3,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-3-shard-inventory-config","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":0,"TxCohortCacheSize":0,"PeerVotingStates":"member-1-shard-inventory-config: true, member-2-shard-inventory-config: true","LastLogTerm":3,"StatRetrievalError":null,"CommitIndex":41,"SnapshotTerm":3,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":2,"ShardName":"member-3-shard-inventory-config","LeadershipChangeCount":3,"InMemoryJournalDataSize":2060},"timestamp":1775609671,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:54:31.971083" elapsed="0.002802"/>
</kw>
<status status="PASS" start="2026-04-08T00:54:31.970783" elapsed="0.003193"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:31.970763" elapsed="0.003240"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:54:31.976883" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:54:31.974376" elapsed="0.002638"/>
</kw>
<status status="PASS" start="2026-04-08T00:54:31.974061" elapsed="0.003042"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:31.974044" elapsed="0.003086"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:54:31.977886" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:54:31.977307" elapsed="0.000610"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:31.978631" elapsed="0.000076"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:54:31.978029" elapsed="0.000780"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:54:31.980049" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:54:31.979320" elapsed="0.000771"/>
</kw>
<status status="PASS" start="2026-04-08T00:54:31.978836" elapsed="0.001421"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:31.978009" elapsed="0.002273"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:54:31.980989" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:54:31.980444" elapsed="0.000572"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:31.981718" elapsed="0.000090"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:54:31.981117" elapsed="0.000793"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:54:31.983146" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:54:31.982420" elapsed="0.000783"/>
</kw>
<status status="PASS" start="2026-04-08T00:54:31.981937" elapsed="0.001368"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:31.981098" elapsed="0.002232"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:54:31.983482" elapsed="0.000826"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:54:31.985032" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:54:31.984522" elapsed="0.000536"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:54:31.985267" elapsed="0.002480"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:54:31.970282" elapsed="0.017555"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:54:31.988018" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:54:31.987910" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:31.987890" elapsed="0.000195"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:54:32.008646" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-3-shard-inventory-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 177560...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:54:31.988345" elapsed="0.020333"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:54:32.008732" elapsed="0.000032"/>
</return>
<msg time="2026-04-08T00:54:32.008930" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-3-shard-inventory-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 177560...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:54:31.954018" elapsed="0.054940"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:54:32.009015" elapsed="0.000026"/>
</return>
<msg time="2026-04-08T00:54:32.009178" level="INFO">${data_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-3-shard-inventory-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 177560...</msg>
<var>${data_text}</var>
<arg>uri=${uri}</arg>
<arg>session=${session}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-08T00:54:31.953319" elapsed="0.055886"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:54:32.010510" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-3-shard-inventory-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1775609671, 'valu...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:54:32.009796" elapsed="0.000744"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-08T00:54:32.010589" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:54:32.010769" level="INFO">${data_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-3-shard-inventory-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1775609671, 'valu...</msg>
<var>${data_object}</var>
<arg>${data_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-08T00:54:32.009430" elapsed="0.001366"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:54:32.011167" level="INFO">${value} = {'AbortTransactionsCount': 0, 'CommitIndex': 41, 'CommittedTransactionsCount': 0, 'CurrentTerm': 3, 'FailedReadTransactionsCount': 0, 'FailedTransactionsCount': 0, 'FollowerInfo': [{'active': True, 'i...</msg>
<var>${value}</var>
<arg>${data_object}</arg>
<arg>value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:54:32.010950" elapsed="0.000247"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:54:32.011553" level="INFO">${raft_property} = Leader</msg>
<var>${raft_property}</var>
<arg>${value}</arg>
<arg>${property}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:54:32.011351" elapsed="0.000227"/>
</kw>
<return>
<value>${raft_property}</value>
<status status="PASS" start="2026-04-08T00:54:32.011624" elapsed="0.000027"/>
</return>
<msg time="2026-04-08T00:54:32.011772" level="INFO">${raft_state} = Leader</msg>
<var>${raft_state}</var>
<arg>RaftState</arg>
<arg>${shard_name}</arg>
<arg>${shard_type}</arg>
<arg>${member_index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft property.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T00:54:31.755531" elapsed="0.256266"/>
</kw>
<return>
<value>${raft_state}</value>
<status status="PASS" start="2026-04-08T00:54:32.011852" elapsed="0.000025"/>
</return>
<msg time="2026-04-08T00:54:32.011997" level="INFO">${raft_state} = Leader</msg>
<var>${raft_state}</var>
<arg>shard_name=${shard_name}</arg>
<arg>shard_type=${ds_type}</arg>
<arg>member_index=${index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft status.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T00:54:31.754802" elapsed="0.257220"/>
</kw>
<if>
<branch type="IF" condition="'Follower' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${follower_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:32.012331" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:54:32.012101" elapsed="0.000285"/>
</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="PASS" start="2026-04-08T00:54:32.012612" elapsed="0.000189"/>
</kw>
<status status="PASS" start="2026-04-08T00:54:32.012410" elapsed="0.000427"/>
</branch>
<branch type="ELSE IF" condition="${validate}">
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized Raft state: ${raft_state}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:32.013001" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:54:32.012861" elapsed="0.000191"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:32.012083" elapsed="0.000992"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T00:54:31.754625" elapsed="0.258474"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-08T00:54:31.166032" elapsed="0.847101"/>
</for>
<return>
<value>${leader_list}</value>
<value>${follower_list}</value>
<status status="PASS" start="2026-04-08T00:54:32.013189" elapsed="0.000026"/>
</return>
<msg time="2026-04-08T00:54:32.013386" level="INFO">${leader_list} = [3]</msg>
<msg time="2026-04-08T00:54:32.013432" level="INFO">${follower_list} = [1, 2]</msg>
<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="PASS" start="2026-04-08T00:54:31.161994" elapsed="0.851461"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T00:54:32.013906" level="INFO">Length is 1.</msg>
<msg time="2026-04-08T00:54:32.013980" level="INFO">${leader_count} = 1</msg>
<var>${leader_count}</var>
<arg>${leader_list}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T00:54:32.013623" elapsed="0.000380"/>
</kw>
<if>
<branch type="IF" condition="${leader_count} &lt; 1">
<kw name="Fail" owner="BuiltIn">
<arg>No leader found.</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:32.014327" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:54:32.014071" elapsed="0.000309"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:32.014054" elapsed="0.000386"/>
</if>
<kw name="Length Should Be" owner="BuiltIn">
<msg time="2026-04-08T00:54:32.016826" level="INFO">Length is 1.</msg>
<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="PASS" start="2026-04-08T00:54:32.014579" elapsed="0.002294"/>
</kw>
<kw name="Get From List" owner="Collections">
<msg time="2026-04-08T00:54:32.017234" level="INFO">${leader} = 3</msg>
<var>${leader}</var>
<arg>${leader_list}</arg>
<arg>0</arg>
<doc>Returns the value specified with an ``index`` from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:54:32.017032" elapsed="0.000227"/>
</kw>
<return>
<value>${leader}</value>
<value>${follower_list}</value>
<status status="PASS" start="2026-04-08T00:54:32.017305" 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="PASS" start="2026-04-08T00:54:31.159610" elapsed="0.857851"/>
</kw>
<msg time="2026-04-08T00:54:32.017564" level="INFO">${inv_conf_leader} = 3</msg>
<msg time="2026-04-08T00:54:32.017610" level="INFO">${inv_conf_followers_list} = [1, 2]</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="PASS" start="2026-04-08T00:54:31.158944" elapsed="0.858689"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:54:32.018115" level="INFO">config inventory Leader is 3 and followers are [1, 2]</msg>
<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="PASS" start="2026-04-08T00:54:32.017827" elapsed="0.000456"/>
</kw>
<return>
<value>${inv_conf_leader}</value>
<value>${inv_conf_followers_list}</value>
<status status="PASS" start="2026-04-08T00:54:32.018330" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:54:32.018532" level="INFO">${inventory_leader} = 3</msg>
<msg time="2026-04-08T00:54:32.018578" level="INFO">${inventory_followers} = [1, 2]</msg>
<var>${inventory_leader}</var>
<var>${inventory_followers}</var>
<doc>Check Status for Inventory Config shard in OpenFlow application.</doc>
<status status="PASS" start="2026-04-08T00:54:31.156820" elapsed="0.861781"/>
</kw>
<kw name="Get From List" owner="Collections">
<msg time="2026-04-08T00:54:32.018960" level="INFO">${follower_node_1} = 1</msg>
<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="PASS" start="2026-04-08T00:54:32.018777" elapsed="0.000209"/>
</kw>
<kw name="Get From List" owner="Collections">
<msg time="2026-04-08T00:54:32.019349" level="INFO">${follower_node_2} = 2</msg>
<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="PASS" start="2026-04-08T00:54:32.019169" elapsed="0.000205"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-08T00:54:32.019870" level="INFO">${follower_node_1} = 1</msg>
<arg>${follower_node_1}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-08T00:54:32.019556" elapsed="0.000355"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-08T00:54:32.020403" level="INFO">${follower_node_2} = 2</msg>
<arg>${follower_node_2}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-08T00:54:32.020083" elapsed="0.000360"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-08T00:54:32.020964" level="INFO">${inventory_leader} = 3</msg>
<arg>${inventory_leader}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-08T00:54:32.020617" elapsed="0.000388"/>
</kw>
<doc>Find Followers and Leader in the inventory config shard After Follower Restart.</doc>
<status status="PASS" start="2026-04-08T00:54:29.987786" elapsed="2.033332"/>
</test>
<test id="s1-s3-t13" name="Start Mininet Connect To Leader" line="101">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-08T00:54:32.025050" elapsed="0.000225"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-08T00:54:32.024538" elapsed="0.000792"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:54:32.026334" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:54:32.026221" elapsed="0.000159"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:32.026202" elapsed="0.000199"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:54:32.031128" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:54:32.031022" elapsed="0.000171"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:32.031005" elapsed="0.000211"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:54:32.032385" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:54:32.031990" elapsed="0.000421"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:54:32.032866" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:54:32.032568" elapsed="0.000323"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:54:32.032935" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:54:32.033086" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:54:32.031439" elapsed="0.001672"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:54:32.038481" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:54:32.038373" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:32.038354" elapsed="0.000236"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:54:32.039795" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:54:32.039688" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:32.039669" elapsed="0.000193"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:54:32.040318" level="INFO">${karaf_connection_index} = 157</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:54:32.040005" elapsed="0.000340"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:54:32.040723" level="INFO">${current_connection_index} = None</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:54:32.040503" elapsed="0.000247"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T00:54:32.079879" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T00:54:32.041261" elapsed="0.038724"/>
</kw>
<msg time="2026-04-08T00:54:32.080187" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T00:54:32.080237" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:54:32.040909" elapsed="0.039365"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T00:54:32.163687" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "a "d "e "r "[C "F "o "l "l "o "w "e "r "[C "F "a "i "l "o "v "e "r ". "S "t "a "r "t "[C "M "i "n "i "n "e "t "[C "C "o "n "[78Cn "[A[78Ce
 "c "t "[C "T "o "[C "L "e "a "d "e "r "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T00:54:32.080790" elapsed="0.083100"/>
</kw>
<msg time="2026-04-08T00:54:32.164093" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T00:54:32.164141" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:54:32.080447" elapsed="0.083761"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:32.164640" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:54:32.164327" elapsed="0.000373"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:32.164291" elapsed="0.000438"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:54:32.165284" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "a "d "e "r "[C "F "o "l "l "o "w "e "r "[C "F "a "i "l "o "v "e "r ". "S "t "a "r "t "[C "M "i "n "i "n "e "t "[C "C "o "n "[78Cn "[A[78Ce
 "c "t "[C "T "o "[C "L "e "a "d "e "r "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:54:32.164874" elapsed="0.000499"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:32.165674" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:54:32.165441" elapsed="0.000287"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:32.165423" elapsed="0.000328"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T00:54:32.165788" elapsed="0.000038"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:54:32.167410" elapsed="0.000790"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:54:32.168479" elapsed="0.000471"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:54:32.169224" elapsed="0.000399"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:54:32.166752" elapsed="0.002975"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T00:54:32.166120" elapsed="0.003671"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T00:54:32.039343" elapsed="0.130551"/>
</kw>
<msg time="2026-04-08T00:54:32.169992" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:54:32.170037" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:54:32.038743" elapsed="0.131332"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T00:54:32.170296" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-08T00:54:32.170183" elapsed="0.000174"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:32.170135" elapsed="0.000246"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:32.170843" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:32.171217" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T00:54:32.171288" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T00:54:32.038019" elapsed="0.133379"/>
</kw>
<msg time="2026-04-08T00:54:32.171494" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:54:32.171538" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:54:32.033499" elapsed="0.138076"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:32.171901" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:54:32.171652" elapsed="0.000303"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:32.171635" elapsed="0.000342"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T00:54:32.033354" elapsed="0.138647"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:54:32.177572" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:54:32.177463" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:32.177443" elapsed="0.000198"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:54:32.178767" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:54:32.178660" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:32.178642" elapsed="0.000192"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:54:32.179302" level="INFO">${karaf_connection_index} = 223</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:54:32.178975" elapsed="0.000354"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:54:32.179704" level="INFO">${current_connection_index} = None</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:54:32.179485" elapsed="0.000245"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T00:54:32.231832" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T00:54:32.180238" elapsed="0.051699"/>
</kw>
<msg time="2026-04-08T00:54:32.232102" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T00:54:32.232150" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:54:32.179889" elapsed="0.052331"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T00:54:32.319109" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "a "d "e "r "[C "F "o "l "l "o "w "e "r "[C "F "a "i "l "o "v "e "r ". "S "t "a "r "t "[C "M "i "n "i "n "e "t "[C "C "o "n "[78Cn "[A[78Ce
 "c "t "[C "T "o "[C "L "e "a "d "e "r "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T00:54:32.232768" elapsed="0.086653"/>
</kw>
<msg time="2026-04-08T00:54:32.319685" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T00:54:32.319736" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:54:32.232415" elapsed="0.087362"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:32.320336" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:54:32.319922" elapsed="0.000481"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:32.319877" elapsed="0.000557"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:54:32.321030" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "a "d "e "r "[C "F "o "l "l "o "w "e "r "[C "F "a "i "l "o "v "e "r ". "S "t "a "r "t "[C "M "i "n "i "n "e "t "[C "C "o "n "[78Cn "[A[78Ce
 "c "t "[C "T "o "[C "L "e "a "d "e "r "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:54:32.320587" elapsed="0.000538"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:32.321473" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:54:32.321233" elapsed="0.000392"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:32.321194" elapsed="0.000459"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T00:54:32.321695" elapsed="0.000046"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:54:32.323412" elapsed="0.000786"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:54:32.324476" elapsed="0.000473"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:54:32.325250" elapsed="0.000362"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:54:32.322707" elapsed="0.003006"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T00:54:32.322056" elapsed="0.003724"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T00:54:32.178360" elapsed="0.147525"/>
</kw>
<msg time="2026-04-08T00:54:32.325986" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:54:32.326032" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:54:32.177790" elapsed="0.148281"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T00:54:32.326284" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-08T00:54:32.326170" elapsed="0.000176"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:32.326134" elapsed="0.000237"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 2,
close the previous connection. In any case create a new connection
to karaf console for 2, set correct prompt set and login to karaf console.
Store connection index for 2 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:32.326795" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:32.327141" elapsed="0.000040"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T00:54:32.327230" elapsed="0.000017"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T00:54:32.177091" elapsed="0.150253"/>
</kw>
<msg time="2026-04-08T00:54:32.327453" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:54:32.327499" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:54:32.172320" elapsed="0.155220"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:32.327873" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:54:32.327621" elapsed="0.000305"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:32.327603" elapsed="0.000346"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T00:54:32.172134" elapsed="0.155839"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:54:32.333950" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:54:32.333839" elapsed="0.000158"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:32.333820" elapsed="0.000199"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:54:32.335194" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:54:32.335061" elapsed="0.000181"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:32.335043" elapsed="0.000222"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:54:32.335712" level="INFO">${karaf_connection_index} = 86</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:54:32.335407" elapsed="0.000331"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:54:32.336115" level="INFO">${current_connection_index} = None</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:54:32.335896" elapsed="0.000245"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T00:54:32.372305" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T00:54:32.336655" elapsed="0.035796"/>
</kw>
<msg time="2026-04-08T00:54:32.372664" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T00:54:32.372712" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:54:32.336318" elapsed="0.036432"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T00:54:32.437518" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "a "d "e "r "[C "F "o "l "l "o "w "e "r "[C "F "a "i "l "o "v "e "r ". "S "t "a "r "t "[C "M "i "n "i "n "e "t "[C "C "o "n "[78Cn "[A[78Ce
 "c "t "[C "T "o "[C "L "e "a "d "e "r "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T00:54:32.373566" elapsed="0.064077"/>
</kw>
<msg time="2026-04-08T00:54:32.437802" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T00:54:32.437848" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:54:32.373101" elapsed="0.064785"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:32.438241" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:54:32.437977" elapsed="0.000321"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:32.437950" elapsed="0.000377"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:54:32.438777" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "a "d "e "r "[C "F "o "l "l "o "w "e "r "[C "F "a "i "l "o "v "e "r ". "S "t "a "r "t "[C "M "i "n "i "n "e "t "[C "C "o "n "[78Cn "[A[78Ce
 "c "t "[C "T "o "[C "L "e "a "d "e "r "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:54:32.438472" elapsed="0.000394"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:32.439154" elapsed="0.000043"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:54:32.438935" elapsed="0.000296"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:32.438916" elapsed="0.000338"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T00:54:32.439289" elapsed="0.000036"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:54:32.440800" elapsed="0.000801"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:54:32.441875" elapsed="0.000467"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:54:32.442603" elapsed="0.000368"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:54:32.440175" elapsed="0.002895"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T00:54:32.439601" elapsed="0.003531"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T00:54:32.334759" elapsed="0.108490"/>
</kw>
<msg time="2026-04-08T00:54:32.443344" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:54:32.443389" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:54:32.334187" elapsed="0.109240"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T00:54:32.443614" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-08T00:54:32.443506" elapsed="0.000167"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:32.443487" elapsed="0.000209"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 3,
close the previous connection. In any case create a new connection
to karaf console for 3, set correct prompt set and login to karaf console.
Store connection index for 3 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:32.444098" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:32.444463" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T00:54:32.444534" elapsed="0.000017"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T00:54:32.333443" elapsed="0.111202"/>
</kw>
<msg time="2026-04-08T00:54:32.444743" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:54:32.444787" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:54:32.328279" elapsed="0.116549"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:32.445189" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:54:32.444905" elapsed="0.000339"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:32.444887" elapsed="0.000381"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T00:54:32.328117" elapsed="0.117217"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-08T00:54:32.033181" elapsed="0.412193"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-08T00:54:32.030664" elapsed="0.414775"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-08T00:54:32.025918" elapsed="0.419583"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:54:32.025479" elapsed="0.420071"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-08T00:54:32.022410" elapsed="0.423197"/>
</kw>
<kw name="Start Mininet Single Controller" owner="MininetKeywords">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:54:32.448894" level="INFO">Clear any existing mininet</msg>
<arg>Clear any existing mininet</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:54:32.448671" elapsed="0.000269"/>
</kw>
<kw name="Clean Mininet System" owner="Utils">
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:32.451363" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:54:32.451082" elapsed="0.000338"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:32.451064" elapsed="0.000379"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:54:32.451726" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T00:54:32.451589" elapsed="0.000265"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:54:32.452473" level="INFO">Attempting to execute command "sudo mn -c" on remote system "10.30.170.192" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:54:32.452004" elapsed="0.000515"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:54:32.453062" level="INFO">${conn_id} = 230</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:54:32.452674" elapsed="0.000416"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T00:54:32.454005" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T00:54:32.454081" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T00:54:32.453718" elapsed="0.000386"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:54:32.454276" elapsed="0.000317"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T00:54:32.455442" level="INFO">Logging into '10.30.170.192:22' as 'jenkins'.</msg>
<msg time="2026-04-08T00:54:32.862705" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 00:53:38 UTC 2026

  System load:  0.1                Processes:             108
  Usage of /:   19.5% of 38.58GB   Users logged in:       0
  Memory usage: 5%                 IPv4 address for ens3: 10.30.170.192
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 00:53:45 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-1-mininet-ovs-217-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T00:54:32.455112" elapsed="0.407722"/>
</kw>
<msg time="2026-04-08T00:54:32.862910" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:54:32.454760" elapsed="0.408240"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T00:54:32.453326" elapsed="0.409789"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T00:54:32.863621" level="INFO">Executing command 'sudo mn -c'.</msg>
<msg time="2026-04-08T00:54:34.010085" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-08T00:54:34.011114" level="INFO">${stdout} = </msg>
<msg time="2026-04-08T00:54:34.011722" level="INFO">${stderr} = *** Removing excess controllers/ofprotocols/ofdatapaths/pings/noxes
killall controller ofprotocol ofdatapath ping nox_corelt-nox_core ovs-openflowd ovs-controllerovs-testcontroller udpbwtest mnexec iv...</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T00:54:32.863381" elapsed="1.148420"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:54:34.012469" elapsed="0.000856"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:54:34.014848" level="INFO">*** Removing excess controllers/ofprotocols/ofdatapaths/pings/noxes
killall controller ofprotocol ofdatapath ping nox_corelt-nox_core ovs-openflowd ovs-controllerovs-testcontroller udpbwtest mnexec ivs ryu-manager 2&gt; /dev/null
killall -9 controller ofprotocol ofdatapath ping nox_corelt-nox_core ovs-openflowd ovs-controllerovs-testcontroller udpbwtest mnexec ivs ryu-manager 2&gt; /dev/null
pkill -9 -f "sudo mnexec"
*** Removing junk from /tmp
rm -f /tmp/vconn* /tmp/vlogs* /tmp/*.out /tmp/*.log
*** Removing old X11 tunnels
*** Removing excess kernel datapaths
ps ax | egrep -o 'dp[0-9]+' | sed 's/dp/nl:/'
***  Removing OVS datapaths
ovs-vsctl --timeout=1 list-br
ovs-vsctl --timeout=1 list-br
*** Removing all links of the pattern foo-ethX
ip link show | egrep -o '([-_.[:alnum:]]+-eth[[:digit:]]+)'
ip link show
*** Killing stale mininet node processes
pkill -9 -f mininet:
*** Shutting down stale tunnels
pkill -9 -f Tunnel=Ethernet
pkill -9 -f .ssh/mn
rm -f ~/.ssh/mn/*
*** Cleanup complete.</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:54:34.014050" elapsed="0.000955"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:54:34.015562" elapsed="0.000039"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:54:34.015235" elapsed="0.000442"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:34.015143" elapsed="0.000585"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T00:54:34.016087" elapsed="0.000126"/>
</return>
<status status="PASS" start="2026-04-08T00:54:34.015848" elapsed="0.000443"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:34.015815" elapsed="0.000529"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:54:34.016422" elapsed="0.000032"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:54:34.021647" elapsed="0.000469"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:54:34.022375" elapsed="0.000240"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:54:34.022843" elapsed="0.000139"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:54:34.017190" elapsed="0.005868"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T00:54:32.450562" elapsed="1.572651"/>
</kw>
<msg time="2026-04-08T00:54:34.023296" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:54:32.450010" elapsed="1.573367"/>
</kw>
<arg>${system}</arg>
<arg>sudo mn -c</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-08T00:54:32.449531" elapsed="1.573961"/>
</kw>
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:34.026458" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:54:34.026057" elapsed="0.000482"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:34.026032" elapsed="0.000540"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:54:34.027202" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T00:54:34.026781" elapsed="0.000611"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:54:34.028129" level="INFO">Attempting to execute command "sudo ps -elf | egrep 'usr/local/bin/mn' | egrep python | awk '{print "sudo kill -9",$4}' | sh" on remote system "10.30.170.192" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:54:34.027600" elapsed="0.000619"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:54:34.028946" level="INFO">${conn_id} = 232</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:54:34.028434" elapsed="0.000549"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T00:54:34.030331" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T00:54:34.030441" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T00:54:34.029845" elapsed="0.000629"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:54:34.030692" elapsed="0.000515"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T00:54:34.032119" level="INFO">Logging into '10.30.170.192:22' as 'jenkins'.</msg>
<msg time="2026-04-08T00:54:34.351634" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 00:53:38 UTC 2026

  System load:  0.1                Processes:             108
  Usage of /:   19.5% of 38.58GB   Users logged in:       0
  Memory usage: 5%                 IPv4 address for ens3: 10.30.170.192
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 00:54:32 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-1-mininet-ovs-217-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T00:54:34.031802" elapsed="0.320211"/>
</kw>
<msg time="2026-04-08T00:54:34.352117" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:54:34.031442" elapsed="0.320806"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T00:54:34.029303" elapsed="0.323096"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T00:54:34.353053" level="INFO">Executing command 'sudo ps -elf | egrep 'usr/local/bin/mn' | egrep python | awk '{print "sudo kill -9",$4}' | sh'.</msg>
<msg time="2026-04-08T00:54:34.385828" level="INFO">Command exited with return code -1.</msg>
<msg time="2026-04-08T00:54:34.386107" level="INFO">${stdout} = </msg>
<msg time="2026-04-08T00:54:34.386257" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T00:54:34.352704" elapsed="0.033609"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:54:34.386708" elapsed="0.000547"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:54:34.388424" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:54:34.387694" elapsed="0.000827"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:54:34.389027" elapsed="0.000038"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:54:34.388712" elapsed="0.000430"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:34.388653" elapsed="0.000600"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T00:54:34.389635" elapsed="0.000060"/>
</return>
<status status="PASS" start="2026-04-08T00:54:34.389386" elapsed="0.000383"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:34.389351" elapsed="0.000470"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:54:34.389895" elapsed="0.000031"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:54:34.395808" elapsed="0.000340"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:54:34.396332" elapsed="0.000181"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:54:34.396663" elapsed="0.000098"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:54:34.390699" elapsed="0.006113"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T00:54:34.025315" elapsed="0.371591"/>
</kw>
<msg time="2026-04-08T00:54:34.396962" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:54:34.024478" elapsed="0.372534"/>
</kw>
<arg>${system}</arg>
<arg>sudo ps -elf | egrep 'usr/local/bin/mn' | egrep python | awk '{print "sudo kill -9",$4}' | sh</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-08T00:54:34.023737" elapsed="0.373361"/>
</kw>
<arg>${mininet}</arg>
<status status="PASS" start="2026-04-08T00:54:32.449173" elapsed="1.948001"/>
</kw>
<kw name="Open_Connection_To_Tools_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:54:34.402071" level="INFO">${tools_connection} = 234</msg>
<var>${tools_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:54:34.401694" elapsed="0.000403"/>
</kw>
<kw name="Flexible_Mininet_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T00:54:34.403892" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T00:54:34.403969" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T00:54:34.403595" elapsed="0.000397"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:54:34.404148" elapsed="0.000350"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T00:54:34.405394" level="INFO">Logging into '10.30.170.192:22' as 'jenkins'.</msg>
<msg time="2026-04-08T00:54:34.719763" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 00:53:38 UTC 2026

  System load:  0.1                Processes:             108
  Usage of /:   19.5% of 38.58GB   Users logged in:       0
  Memory usage: 5%                 IPv4 address for ens3: 10.30.170.192
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 00:54:34 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-1-mininet-ovs-217-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T00:54:34.405026" elapsed="0.315023"/>
</kw>
<msg time="2026-04-08T00:54:34.720141" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:54:34.404668" elapsed="0.315586"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T00:54:34.403086" elapsed="0.317291"/>
</kw>
<msg time="2026-04-08T00:54:34.720431" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:54:34.402696" elapsed="0.317781"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-08T00:54:34.402295" elapsed="0.318255"/>
</kw>
<return>
<value>${tools_connection}</value>
<status status="PASS" start="2026-04-08T00:54:34.720608" elapsed="0.000053"/>
</return>
<msg time="2026-04-08T00:54:34.720851" level="INFO">${mininet_conn_id} = 234</msg>
<var>${mininet_conn_id}</var>
<arg>ip_address=${mininet}</arg>
<arg>timeout=${timeout}</arg>
<doc>Open a connection to the tools system at ${ip_address} and return its identifier.</doc>
<status status="PASS" start="2026-04-08T00:54:34.401184" elapsed="0.319692"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-08T00:54:34.721686" level="INFO">${mininet_conn_id} = 234</msg>
<arg>${mininet_conn_id}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-08T00:54:34.721201" elapsed="0.000527"/>
</kw>
<if>
<branch type="IF" condition="'${custom}' != '${EMPTY}'">
<kw name="Put File" owner="SSHLibrary">
<arg>${custom}</arg>
<doc>Uploads file(s) from the local machine to the remote machine.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:34.724026" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:54:34.721811" elapsed="0.002271"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:34.721788" elapsed="0.002320"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:54:34.724595" level="INFO">Start mininet --topo tree,1 to 10.30.171.110</msg>
<arg>Start mininet ${options} to ${controller}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:54:34.724290" elapsed="0.000351"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T00:54:34.727152" level="INFO">sudo mn --controller 'remote,ip=10.30.171.110,port=6633' --topo tree,1 --switch ovsk,protocols=OpenFlow13</msg>
<arg>sudo mn --controller 'remote,ip=${controller},port=${ofport}' ${options} --switch ovsk,protocols=OpenFlow${ofversion}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T00:54:34.724808" elapsed="0.002420"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-08T00:54:34.912400" level="INFO">[?2004l*** Creating network
*** Adding controller
*** Adding hosts:
h1 h2 
*** Adding switches:
s1 
*** Adding links:
(s1, h1) (s1, h2) 
*** Configuring hosts
h1 h2 
*** Starting controller
c0 
*** Starting 1 switches
s1 ...
*** Starting CLI:
mininet&gt;</msg>
<arg>mininet&gt;</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-08T00:54:34.727388" elapsed="0.185191"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:54:34.913333" level="INFO">Check OVS configuratiom</msg>
<arg>Check OVS configuratiom</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:54:34.912925" elapsed="0.000454"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T00:54:34.915528" level="INFO">sh ovs-vsctl show</msg>
<arg>sh ovs-vsctl show</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T00:54:34.913553" elapsed="0.002036"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-08T00:54:34.922094" level="INFO">9a5df812-eb49-4477-a37e-2d464c02791d
    Bridge s1
        Controller "tcp:10.30.171.110:6633"
        Controller "ptcp:6654"
        fail_mode: secure
        Port s1-eth1
            Interface s1-eth1
        Port s1
            Interface s1
                type: internal
        Port s1-eth2
            Interface s1-eth2
    ovs_version: "2.17.11"
mininet&gt;</msg>
<arg>mininet&gt;</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-08T00:54:34.915777" elapsed="0.006402"/>
</kw>
<return>
<value>${mininet_conn_id}</value>
<status status="PASS" start="2026-04-08T00:54:34.922237" elapsed="0.000064"/>
</return>
<msg time="2026-04-08T00:54:34.922535" level="INFO">${mininet_conn_id} = 234</msg>
<var>${mininet_conn_id}</var>
<arg>${TOOLS_SYSTEM_IP}</arg>
<arg>${ODL_SYSTEM_${inventory_leader}_IP}</arg>
<doc>Start Mininet with custom topology and connect to controller.</doc>
<status status="PASS" start="2026-04-08T00:54:32.445923" elapsed="2.476642"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-08T00:54:34.923130" level="INFO">${mininet_conn_id} = 234</msg>
<arg>${mininet_conn_id}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-08T00:54:34.922780" elapsed="0.000411"/>
</kw>
<doc>Start mininet with connection to Leader.</doc>
<status status="PASS" start="2026-04-08T00:54:32.021840" elapsed="2.901478"/>
</test>
<test id="s1-s3-t14" name="Verify Flows In Switch After Follower Restart" line="108">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-08T00:54:34.927489" elapsed="0.000207"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-08T00:54:34.927222" elapsed="0.000528"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:54:34.928808" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:54:34.928668" elapsed="0.000184"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:34.928648" elapsed="0.000228"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:54:34.933546" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:54:34.933440" elapsed="0.000150"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:34.933422" elapsed="0.000189"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:54:34.934647" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:54:34.934258" elapsed="0.000416"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:54:34.935347" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:54:34.935020" elapsed="0.000355"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:54:34.935419" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:54:34.935573" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:54:34.933863" elapsed="0.001734"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:54:34.941373" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:54:34.941264" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:34.941245" elapsed="0.000195"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:54:34.942648" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:54:34.942540" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:34.942521" elapsed="0.000194"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:54:34.943203" level="INFO">${karaf_connection_index} = 157</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:54:34.942859" elapsed="0.000372"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:54:34.943637" level="INFO">${current_connection_index} = 234</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:54:34.943391" elapsed="0.000273"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T00:54:34.979390" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T00:54:34.944170" elapsed="0.035329"/>
</kw>
<msg time="2026-04-08T00:54:34.979688" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T00:54:34.979735" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:54:34.943821" elapsed="0.035953"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T00:54:35.060715" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "a "d "e "r "[C "F "o "l "l "o "w "e "r "[C "F "a "i "l "o "v "e "r ". "V "e "r "i "f "y "[C "F "l "o "w "s "[C "I "n "[C "S "[78Cw "[A[78Ci
 "t "c "h "[C "A "f "t "e "r "[C "F "o "l "l "o "w "e "r "[C "R "e "s "t "a "r "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T00:54:34.980321" elapsed="0.080587"/>
</kw>
<msg time="2026-04-08T00:54:35.061117" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T00:54:35.061188" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:54:34.979947" elapsed="0.081282"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:35.061660" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:54:35.061339" elapsed="0.000380"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:35.061304" elapsed="0.000444"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:54:35.062280" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "a "d "e "r "[C "F "o "l "l "o "w "e "r "[C "F "a "i "l "o "v "e "r ". "V "e "r "i "f "y "[C "F "l "o "w "s "[C "I "n "[C "S "[78Cw "[A[78Ci
 "t "c "h "[C "A "f "t "e "r "[C "F "o "l "l "o "w "e "r "[C "R "e "s "t "a "r "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:54:35.061894" elapsed="0.000476"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:35.062655" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:54:35.062438" elapsed="0.000270"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:35.062419" elapsed="0.000313"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T00:54:35.062767" elapsed="0.000040"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:54:35.065903" elapsed="0.000163"/>
</kw>
<msg time="2026-04-08T00:54:35.066130" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:54:35.064575" elapsed="0.001730"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:35.066603" elapsed="0.000152"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:35.067038" elapsed="0.000087"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:54:35.063866" elapsed="0.003480"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T00:54:35.063094" elapsed="0.004321"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T00:54:34.942237" elapsed="0.125280"/>
</kw>
<msg time="2026-04-08T00:54:35.067614" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:54:35.067659" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:54:34.941590" elapsed="0.126109"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T00:54:35.067888" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-08T00:54:35.067778" elapsed="0.000168"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:35.067758" elapsed="0.000211"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:35.068387" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:35.068727" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T00:54:35.068797" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T00:54:34.940907" elapsed="0.127998"/>
</kw>
<msg time="2026-04-08T00:54:35.069000" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:54:35.069044" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:54:34.936184" elapsed="0.132898"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:35.069422" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:54:35.069172" elapsed="0.000303"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:35.069141" elapsed="0.000357"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T00:54:34.936024" elapsed="0.133526"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:54:35.075214" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:54:35.075062" elapsed="0.000200"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:35.075042" elapsed="0.000241"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:54:35.076635" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:54:35.076526" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:35.076508" elapsed="0.000195"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:54:35.077182" level="INFO">${karaf_connection_index} = 223</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:54:35.076845" elapsed="0.000366"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:54:35.077629" level="INFO">${current_connection_index} = 234</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:54:35.077367" elapsed="0.000288"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T00:54:35.130594" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T00:54:35.078145" elapsed="0.052645"/>
</kw>
<msg time="2026-04-08T00:54:35.131039" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T00:54:35.131089" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:54:35.077812" elapsed="0.053315"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T00:54:35.248548" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "a "d "e "r "[C "F "o "l "l "o "w "e "r "[C "F "a "i "l "o "v "e "r ". "V "e "r "i "f "y "[C "F "l "o "w "s "[C "I "n "[C "S "[78Cw "[A[78Ci
 "t "c "h "[C "A "f "t "e "r "[C "F "o "l "l "o "w "e "r "[C "R "e "s "t "a "r "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T00:54:35.131804" elapsed="0.117013"/>
</kw>
<msg time="2026-04-08T00:54:35.249200" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T00:54:35.249252" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:54:35.131385" elapsed="0.117936"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:35.249806" elapsed="0.000028"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:54:35.249456" elapsed="0.000412"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:35.249415" elapsed="0.000483"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:54:35.250484" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "a "d "e "r "[C "F "o "l "l "o "w "e "r "[C "F "a "i "l "o "v "e "r ". "V "e "r "i "f "y "[C "F "l "o "w "s "[C "I "n "[C "S "[78Cw "[A[78Ci
 "t "c "h "[C "A "f "t "e "r "[C "F "o "l "l "o "w "e "r "[C "R "e "s "t "a "r "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:54:35.250043" elapsed="0.000537"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:35.250871" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:54:35.250649" elapsed="0.000276"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:35.250631" elapsed="0.000317"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T00:54:35.250985" elapsed="0.000039"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:54:35.253961" elapsed="0.000173"/>
</kw>
<msg time="2026-04-08T00:54:35.254225" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:54:35.252625" elapsed="0.001754"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:35.254672" elapsed="0.000085"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:35.255031" elapsed="0.000082"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:54:35.251917" elapsed="0.003347"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T00:54:35.251331" elapsed="0.004001"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T00:54:35.076225" elapsed="0.179209"/>
</kw>
<msg time="2026-04-08T00:54:35.255741" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:54:35.255787" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:54:35.075639" elapsed="0.180190"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T00:54:35.256035" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-08T00:54:35.255917" elapsed="0.000180"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:35.255896" elapsed="0.000225"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 2,
close the previous connection. In any case create a new connection
to karaf console for 2, set correct prompt set and login to karaf console.
Store connection index for 2 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:35.256565" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:35.256900" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T00:54:35.256970" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T00:54:35.074709" elapsed="0.182371"/>
</kw>
<msg time="2026-04-08T00:54:35.257197" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:54:35.257244" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:54:35.069826" elapsed="0.187466"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:35.257645" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:54:35.257372" elapsed="0.000326"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:35.257354" elapsed="0.000367"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T00:54:35.069685" elapsed="0.188060"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:54:35.263817" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:54:35.263686" elapsed="0.000263"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:35.263661" elapsed="0.000312"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:54:35.265323" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:54:35.265193" elapsed="0.000177"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:35.265151" elapsed="0.000241"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:54:35.265888" level="INFO">${karaf_connection_index} = 86</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:54:35.265540" elapsed="0.000377"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:54:35.266346" level="INFO">${current_connection_index} = 234</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:54:35.266082" elapsed="0.000290"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T00:54:35.292020" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T00:54:35.266878" elapsed="0.025388"/>
</kw>
<msg time="2026-04-08T00:54:35.292506" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T00:54:35.292555" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:54:35.266534" elapsed="0.026059"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T00:54:35.353704" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "a "d "e "r "[C "F "o "l "l "o "w "e "r "[C "F "a "i "l "o "v "e "r ". "V "e "r "i "f "y "[C "F "l "o "w "s "[C "I "n "[C "S "[78Cw "[A[78Ci
 "t "c "h "[C "A "f "t "e "r "[C "F "o "l "l "o "w "e "r "[C "R "e "s "t "a "r "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T00:54:35.293355" elapsed="0.060630"/>
</kw>
<msg time="2026-04-08T00:54:35.354267" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T00:54:35.354317" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:54:35.292848" elapsed="0.061508"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:35.354845" elapsed="0.000027"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:54:35.354491" elapsed="0.000416"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:35.354449" elapsed="0.000487"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:54:35.355506" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "a "d "e "r "[C "F "o "l "l "o "w "e "r "[C "F "a "i "l "o "v "e "r ". "V "e "r "i "f "y "[C "F "l "o "w "s "[C "I "n "[C "S "[78Cw "[A[78Ci
 "t "c "h "[C "A "f "t "e "r "[C "F "o "l "l "o "w "e "r "[C "R "e "s "t "a "r "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:54:35.355080" elapsed="0.000520"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:35.355886" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:54:35.355668" elapsed="0.000272"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:35.355650" elapsed="0.000313"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T00:54:35.355999" elapsed="0.000041"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:54:35.358993" elapsed="0.000160"/>
</kw>
<msg time="2026-04-08T00:54:35.359245" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:54:35.357658" elapsed="0.001733"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:35.359687" elapsed="0.000085"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:35.360047" elapsed="0.000084"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:54:35.356925" elapsed="0.003340"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T00:54:35.356338" elapsed="0.003994"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T00:54:35.264860" elapsed="0.095574"/>
</kw>
<msg time="2026-04-08T00:54:35.360729" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:54:35.360780" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:54:35.264188" elapsed="0.096632"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T00:54:35.361075" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-08T00:54:35.360963" elapsed="0.000172"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:35.360942" elapsed="0.000249"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 3,
close the previous connection. In any case create a new connection
to karaf console for 3, set correct prompt set and login to karaf console.
Store connection index for 3 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:35.361596" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:35.361924" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T00:54:35.361995" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T00:54:35.262844" elapsed="0.099261"/>
</kw>
<msg time="2026-04-08T00:54:35.362217" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:54:35.362264" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:54:35.258021" elapsed="0.104279"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:35.362626" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:54:35.362377" elapsed="0.000302"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:35.362359" elapsed="0.000343"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T00:54:35.257878" elapsed="0.104848"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-08T00:54:34.935820" elapsed="0.426941"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-08T00:54:34.933070" elapsed="0.429748"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-08T00:54:34.928365" elapsed="0.434511"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:54:34.927899" elapsed="0.435023"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-08T00:54:34.924591" elapsed="0.438386"/>
</kw>
<kw name="Verify Sample Flow" owner="ClusterOpenFlow">
<if>
<branch type="IF" condition="'${ODL_OF_PLUGIN}' == 'helium'">
<kw name="Set Test Variable" owner="BuiltIn">
<arg>&amp;{dictionary}</arg>
<arg>10.0.1.0/24=2</arg>
<arg>"output-node-connector":"1"=1</arg>
<doc>Makes a variable available everywhere within the scope of the current test.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:35.371754" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:54:35.371425" elapsed="0.000403"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:35.371402" elapsed="0.000454"/>
</if>
<if>
<branch type="IF" condition="'${ODL_OF_PLUGIN}' == 'lithium'">
<kw name="Set Test Variable" owner="BuiltIn">
<msg time="2026-04-08T00:54:35.375190" level="INFO">&amp;{dictionary} = { 10.0.1.0/24=1 | "output-node-connector":"1"=1 }</msg>
<arg>&amp;{dictionary}</arg>
<arg>10.0.1.0/24=1</arg>
<arg>"output-node-connector":"1"=1</arg>
<doc>Makes a variable available everywhere within the scope of the current test.</doc>
<status status="PASS" start="2026-04-08T00:54:35.372146" elapsed="0.003096"/>
</kw>
<status status="PASS" start="2026-04-08T00:54:35.371911" elapsed="0.003372"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:35.371896" elapsed="0.003412"/>
</if>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Check_Item_Occurrence_Member_List_Or_All" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:54:35.381641" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:54:35.381245" elapsed="0.000423"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:54:35.382183" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:54:35.381846" elapsed="0.000365"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:54:35.382259" elapsed="0.000038"/>
</return>
<msg time="2026-04-08T00:54:35.382428" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:54:35.380821" elapsed="0.001632"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_From_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:54:35.387935" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:54:35.387615" elapsed="0.000348"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:54:35.388014" elapsed="0.000034"/>
</return>
<msg time="2026-04-08T00:54:35.388186" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:54:35.387246" elapsed="0.000967"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:54:35.394979" level="INFO">/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:54:35.394655" elapsed="0.000380"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:54:35.395461" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:54:35.395210" elapsed="0.000300"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:54:35.474989" level="INFO">GET Request : url=http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01jewze00gqgu8yuon50tdwq65226.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:54:35.475510" level="INFO">GET Response : url=http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '40'} 
 body={"flow-node-inventory:table":[{"id":0}]} 
 </msg>
<msg time="2026-04-08T00:54:35.475809" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:54:35.458349" elapsed="0.017527"/>
</kw>
<status status="PASS" start="2026-04-08T00:54:35.395596" elapsed="0.080396"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:35.476501" elapsed="0.000058"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:54:35.476065" elapsed="0.000600"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:35.395570" elapsed="0.081147"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:54:35.481990" level="INFO">{"flow-node-inventory:table":[{"id":0}]}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:54:35.478624" elapsed="0.003437"/>
</kw>
<status status="PASS" start="2026-04-08T00:54:35.478293" elapsed="0.003818"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:35.478264" elapsed="0.003882"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:54:35.485918" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:54:35.482571" elapsed="0.003415"/>
</kw>
<status status="PASS" start="2026-04-08T00:54:35.482252" elapsed="0.003785"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:35.482227" elapsed="0.003845"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:54:35.486922" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:54:35.486355" elapsed="0.000607"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:35.487538" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:54:35.487066" elapsed="0.000555"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:54:35.488335" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:54:35.487881" elapsed="0.000492"/>
</kw>
<status status="PASS" start="2026-04-08T00:54:35.487653" elapsed="0.000769"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:35.487040" elapsed="0.001413"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:54:35.489263" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:54:35.488677" elapsed="0.000624"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:35.489661" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:54:35.489399" elapsed="0.000320"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:54:35.490219" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:54:35.489902" elapsed="0.000344"/>
</kw>
<status status="PASS" start="2026-04-08T00:54:35.489742" elapsed="0.000539"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:35.489373" elapsed="0.000930"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:54:35.490463" elapsed="0.000349"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:54:35.491297" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:54:35.490976" elapsed="0.000347"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:54:35.491477" elapsed="0.002632"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:54:35.477597" elapsed="0.016600"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-08T00:54:35.494474" elapsed="0.000038"/>
</return>
<status status="PASS" start="2026-04-08T00:54:35.494355" elapsed="0.000192"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:35.494334" elapsed="0.000237"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:35.494719" elapsed="0.000022"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-08T00:54:35.494790" elapsed="0.000014"/>
</return>
<msg time="2026-04-08T00:54:35.497055" level="INFO">${response_text} = {"flow-node-inventory:table":[{"id":0}]}</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${access}</arg>
<arg>session=${session}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:54:35.388650" elapsed="0.108434"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:54:35.497138" elapsed="0.000044"/>
</return>
<msg time="2026-04-08T00:54:35.497313" level="INFO">${data} = {"flow-node-inventory:table":[{"id":0}]}</msg>
<var>${data}</var>
<arg>uri=${uri}</arg>
<arg>member_index=${index}</arg>
<doc>Send a GET with the supplied uri to member ${member_index}.</doc>
<status status="PASS" start="2026-04-08T00:54:35.386712" elapsed="0.110626"/>
</kw>
<kw name="Check Item Occurrence" owner="Utils">
<for flavor="IN">
<iter>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T00:54:35.498614" level="INFO">Item found from container 0 times.</msg>
<msg time="2026-04-08T00:54:35.498726" level="FAIL">'{"flow-node-inventory:table":[{"id":0}]}' contains '10.0.1.0/24' 0 times, not 1 time.</msg>
<arg>${string}</arg>
<arg>${item}</arg>
<arg>${dictionary_item_occurrence}[${item}]</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="FAIL" start="2026-04-08T00:54:35.498218" elapsed="0.000581">'{"flow-node-inventory:table":[{"id":0}]}' contains '10.0.1.0/24' 0 times, not 1 time.</status>
</kw>
<var name="${item}">10.0.1.0/24</var>
<status status="FAIL" start="2026-04-08T00:54:35.498038" elapsed="0.000835">'{"flow-node-inventory:table":[{"id":0}]}' contains '10.0.1.0/24' 0 times, not 1 time.</status>
</iter>
<var>${item}</var>
<value>@{dictionary_item_occurrence}</value>
<status status="FAIL" start="2026-04-08T00:54:35.497896" elapsed="0.001036">'{"flow-node-inventory:table":[{"id":0}]}' contains '10.0.1.0/24' 0 times, not 1 time.</status>
</for>
<arg>${data}</arg>
<arg>${dictionary}</arg>
<doc>Check string for occurrences of items expressed in a list of dictionaries {item=occurrences}. 0 occurences means item is not present.</doc>
<status status="FAIL" start="2026-04-08T00:54:35.497595" elapsed="0.001433">'{"flow-node-inventory:table":[{"id":0}]}' contains '10.0.1.0/24' 0 times, not 1 time.</status>
</kw>
<var name="${index}">1</var>
<status status="FAIL" start="2026-04-08T00:54:35.382660" elapsed="0.116428">'{"flow-node-inventory:table":[{"id":0}]}' contains '10.0.1.0/24' 0 times, not 1 time.</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-04-08T00:54:35.382516" elapsed="0.116625">'{"flow-node-inventory:table":[{"id":0}]}' contains '10.0.1.0/24' 0 times, not 1 time.</status>
</for>
<arg>uri=${operational_table_0}</arg>
<arg>dictionary=${dictionary}</arg>
<arg>member_index_list=${controller_index_list}</arg>
<doc>Send a GET with the supplied uri to all or some members defined in ${member_index_list}.
Then check received for occurrences of items expressed in a dictionary {'10.0.1.0/24': '1', '"output-node-connector":"1"': '1'}.</doc>
<status status="FAIL" start="2026-04-08T00:54:35.380228" elapsed="0.119018">'{"flow-node-inventory:table":[{"id":0}]}' contains '10.0.1.0/24' 0 times, not 1 time.</status>
</kw>
<kw name="Check_Item_Occurrence_Member_List_Or_All" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:54:36.510146" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:54:36.509518" elapsed="0.000692"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:54:36.510893" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:54:36.510449" elapsed="0.000482"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:54:36.510996" elapsed="0.000051"/>
</return>
<msg time="2026-04-08T00:54:36.511255" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:54:36.508874" elapsed="0.002418"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_From_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:54:36.518286" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:54:36.517963" elapsed="0.000350"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:54:36.518358" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:54:36.518507" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:54:36.517601" elapsed="0.000935"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:54:36.524971" level="INFO">/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:54:36.524709" elapsed="0.000310"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:54:36.525438" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:54:36.525187" elapsed="0.000295"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:54:36.543265" level="INFO">GET Request : url=http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01jewze00gqgu8yuon50tdwq65226.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:54:36.546629" level="INFO">GET Response : url=http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '1087'} 
 body={"flow-node-inventory:table":[{"id":0,"flow":[{"id":"1","table_id":0,"priority":2,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.1.0/24"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":0,"nanosecond":110000000}},"flags":""},{"id":"#UF$TABLE*0-1","table_id":0,"priority":0,"cookie_mask":"0","idle-timeout":0,"cookie":"10","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"output-action":{"max-length":65535,"output-node-connector":"CONTROLLER"}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":0,"nanosecond":23000000}},"flags":"SEND_FLOW_REM"}],"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"3","active-flows":2,"packets-matched":"0"}}]} 
 </msg>
<msg time="2026-04-08T00:54:36.546882" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:54:36.527518" elapsed="0.019426"/>
</kw>
<status status="PASS" start="2026-04-08T00:54:36.525557" elapsed="0.021485"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:36.547495" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:54:36.547105" elapsed="0.000536"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:36.525537" elapsed="0.022152"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:54:36.554775" level="INFO">{"flow-node-inventory:table":[{"id":0,"flow":[{"id":"1","table_id":0,"priority":2,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.1.0/24"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":0,"nanosecond":110000000}},"flags":""},{"id":"#UF$TABLE*0-1","table_id":0,"priority":0,"cookie_mask":"0","idle-timeout":0,"cookie":"10","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"output-action":{"max-length":65535,"output-node-connector":"CONTROLLER"}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":0,"nanosecond":23000000}},"flags":"SEND_FLOW_REM"}],"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"3","active-flows":2,"packets-matched":"0"}}]}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:54:36.550109" elapsed="0.004746"/>
</kw>
<status status="PASS" start="2026-04-08T00:54:36.549609" elapsed="0.005296"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:36.549566" elapsed="0.005375"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:54:36.558481" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:54:36.555360" elapsed="0.003187"/>
</kw>
<status status="PASS" start="2026-04-08T00:54:36.555022" elapsed="0.003575"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:36.554998" elapsed="0.003634"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:54:36.559446" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:54:36.558872" elapsed="0.000613"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:36.559937" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:54:36.559586" elapsed="0.000432"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:54:36.560724" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:54:36.560297" elapsed="0.000464"/>
</kw>
<status status="PASS" start="2026-04-08T00:54:36.560052" elapsed="0.000759"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:36.559560" elapsed="0.001282"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:54:36.561600" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:54:36.561064" elapsed="0.000574"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:36.562064" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:54:36.561735" elapsed="0.000408"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:54:36.562841" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:54:36.562426" elapsed="0.000452"/>
</kw>
<status status="PASS" start="2026-04-08T00:54:36.562198" elapsed="0.000728"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:36.561710" elapsed="0.001247"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:54:36.563187" elapsed="0.000486"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:54:36.564450" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:54:36.563939" elapsed="0.000553"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:54:36.564669" elapsed="0.002312"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:54:36.548575" elapsed="0.018472"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-08T00:54:36.567244" elapsed="0.000030"/>
</return>
<status status="PASS" start="2026-04-08T00:54:36.567117" elapsed="0.000191"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:36.567098" elapsed="0.000234"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:36.567478" elapsed="0.000021"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-08T00:54:36.567548" elapsed="0.000014"/>
</return>
<msg time="2026-04-08T00:54:36.569932" level="INFO">${response_text} = {"flow-node-inventory:table":[{"id":0,"flow":[{"id":"1","table_id":0,"priority":2,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0....</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${access}</arg>
<arg>session=${session}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:54:36.518870" elapsed="0.051093"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:54:36.570015" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:54:36.570186" level="INFO">${data} = {"flow-node-inventory:table":[{"id":0,"flow":[{"id":"1","table_id":0,"priority":2,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0....</msg>
<var>${data}</var>
<arg>uri=${uri}</arg>
<arg>member_index=${index}</arg>
<doc>Send a GET with the supplied uri to member ${member_index}.</doc>
<status status="PASS" start="2026-04-08T00:54:36.517080" elapsed="0.053134"/>
</kw>
<kw name="Check Item Occurrence" owner="Utils">
<for flavor="IN">
<iter>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T00:54:36.571427" level="INFO">Item found from container 1 time.</msg>
<arg>${string}</arg>
<arg>${item}</arg>
<arg>${dictionary_item_occurrence}[${item}]</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="PASS" start="2026-04-08T00:54:36.571033" elapsed="0.000466"/>
</kw>
<var name="${item}">10.0.1.0/24</var>
<status status="PASS" start="2026-04-08T00:54:36.570862" elapsed="0.000681"/>
</iter>
<iter>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T00:54:36.572178" level="INFO">Item found from container 1 time.</msg>
<arg>${string}</arg>
<arg>${item}</arg>
<arg>${dictionary_item_occurrence}[${item}]</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="PASS" start="2026-04-08T00:54:36.571777" elapsed="0.000471"/>
</kw>
<var name="${item}">"output-node-connector":"1"</var>
<status status="PASS" start="2026-04-08T00:54:36.571624" elapsed="0.000663"/>
</iter>
<var>${item}</var>
<value>@{dictionary_item_occurrence}</value>
<status status="PASS" start="2026-04-08T00:54:36.570726" elapsed="0.001591"/>
</for>
<arg>${data}</arg>
<arg>${dictionary}</arg>
<doc>Check string for occurrences of items expressed in a list of dictionaries {item=occurrences}. 0 occurences means item is not present.</doc>
<status status="PASS" start="2026-04-08T00:54:36.570447" elapsed="0.001923"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T00:54:36.511566" elapsed="0.060838"/>
</iter>
<iter>
<kw name="Get_From_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:54:36.577831" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:54:36.577531" elapsed="0.000326"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:54:36.577902" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:54:36.578049" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:54:36.577170" elapsed="0.000904"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:54:36.584604" level="INFO">/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:54:36.584335" elapsed="0.000316"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:54:36.585054" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:54:36.584808" elapsed="0.000290"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:54:36.610940" level="INFO">GET Request : url=http://10.30.170.131:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01eq5fxmndxspk37g8qgkyja672.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:54:36.611363" level="INFO">GET Response : url=http://10.30.170.131:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '1087'} 
 body={"flow-node-inventory:table":[{"id":0,"flow":[{"id":"1","table_id":0,"priority":2,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.1.0/24"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":0,"nanosecond":110000000}},"flags":""},{"id":"#UF$TABLE*0-1","table_id":0,"priority":0,"cookie_mask":"0","idle-timeout":0,"cookie":"10","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"output-action":{"max-length":65535,"output-node-connector":"CONTROLLER"}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":0,"nanosecond":23000000}},"flags":"SEND_FLOW_REM"}],"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"3","active-flows":2,"packets-matched":"0"}}]} 
 </msg>
<msg time="2026-04-08T00:54:36.611620" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:54:36.587127" elapsed="0.024524"/>
</kw>
<status status="PASS" start="2026-04-08T00:54:36.585184" elapsed="0.026524"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:36.611984" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:54:36.611743" elapsed="0.000309"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:36.585148" elapsed="0.026927"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:54:36.616151" level="INFO">{"flow-node-inventory:table":[{"id":0,"flow":[{"id":"1","table_id":0,"priority":2,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.1.0/24"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":0,"nanosecond":110000000}},"flags":""},{"id":"#UF$TABLE*0-1","table_id":0,"priority":0,"cookie_mask":"0","idle-timeout":0,"cookie":"10","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"output-action":{"max-length":65535,"output-node-connector":"CONTROLLER"}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":0,"nanosecond":23000000}},"flags":"SEND_FLOW_REM"}],"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"3","active-flows":2,"packets-matched":"0"}}]}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:54:36.613257" elapsed="0.002970"/>
</kw>
<status status="PASS" start="2026-04-08T00:54:36.612996" elapsed="0.003267"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:36.612974" elapsed="0.003315"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:54:36.618808" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:54:36.616608" elapsed="0.002248"/>
</kw>
<status status="PASS" start="2026-04-08T00:54:36.616357" elapsed="0.002533"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:36.616337" elapsed="0.002579"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:54:36.619541" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:54:36.619097" elapsed="0.000471"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:36.619919" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:54:36.619641" elapsed="0.000339"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:54:36.620493" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:54:36.620184" elapsed="0.000335"/>
</kw>
<status status="PASS" start="2026-04-08T00:54:36.620004" elapsed="0.000552"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:36.619622" elapsed="0.000955"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:54:36.621341" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:54:36.620807" elapsed="0.000572"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:36.621808" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:54:36.621479" elapsed="0.000409"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:54:36.622586" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:54:36.622144" elapsed="0.000484"/>
</kw>
<status status="PASS" start="2026-04-08T00:54:36.621921" elapsed="0.000758"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:36.621454" elapsed="0.001254"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:54:36.622924" elapsed="0.000515"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:54:36.624108" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:54:36.623676" elapsed="0.000470"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:54:36.624387" elapsed="0.003107"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:54:36.612500" elapsed="0.015086"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-08T00:54:36.627885" elapsed="0.000047"/>
</return>
<status status="PASS" start="2026-04-08T00:54:36.627687" elapsed="0.000294"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:36.627660" elapsed="0.000356"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:36.628292" elapsed="0.000038"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-08T00:54:36.628404" elapsed="0.000021"/>
</return>
<msg time="2026-04-08T00:54:36.631705" level="INFO">${response_text} = {"flow-node-inventory:table":[{"id":0,"flow":[{"id":"1","table_id":0,"priority":2,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0....</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${access}</arg>
<arg>session=${session}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:54:36.578417" elapsed="0.053374"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:54:36.631869" elapsed="0.000042"/>
</return>
<msg time="2026-04-08T00:54:36.632119" level="INFO">${data} = {"flow-node-inventory:table":[{"id":0,"flow":[{"id":"1","table_id":0,"priority":2,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0....</msg>
<var>${data}</var>
<arg>uri=${uri}</arg>
<arg>member_index=${index}</arg>
<doc>Send a GET with the supplied uri to member ${member_index}.</doc>
<status status="PASS" start="2026-04-08T00:54:36.576654" elapsed="0.055538"/>
</kw>
<kw name="Check Item Occurrence" owner="Utils">
<for flavor="IN">
<iter>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T00:54:36.633545" level="INFO">Item found from container 1 time.</msg>
<arg>${string}</arg>
<arg>${item}</arg>
<arg>${dictionary_item_occurrence}[${item}]</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="PASS" start="2026-04-08T00:54:36.633145" elapsed="0.000487"/>
</kw>
<var name="${item}">10.0.1.0/24</var>
<status status="PASS" start="2026-04-08T00:54:36.632988" elapsed="0.000686"/>
</iter>
<iter>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T00:54:36.634299" level="INFO">Item found from container 1 time.</msg>
<arg>${string}</arg>
<arg>${item}</arg>
<arg>${dictionary_item_occurrence}[${item}]</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="PASS" start="2026-04-08T00:54:36.633913" elapsed="0.000452"/>
</kw>
<var name="${item}">"output-node-connector":"1"</var>
<status status="PASS" start="2026-04-08T00:54:36.633759" elapsed="0.000647"/>
</iter>
<var>${item}</var>
<value>@{dictionary_item_occurrence}</value>
<status status="PASS" start="2026-04-08T00:54:36.632845" elapsed="0.001590"/>
</for>
<arg>${data}</arg>
<arg>${dictionary}</arg>
<doc>Check string for occurrences of items expressed in a list of dictionaries {item=occurrences}. 0 occurences means item is not present.</doc>
<status status="PASS" start="2026-04-08T00:54:36.632545" elapsed="0.001945"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T00:54:36.572490" elapsed="0.062037"/>
</iter>
<iter>
<kw name="Get_From_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:54:36.640127" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:54:36.639819" elapsed="0.000349"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:54:36.640219" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:54:36.640371" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:54:36.639432" elapsed="0.000965"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:54:36.646787" level="INFO">/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:54:36.646536" elapsed="0.000297"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:54:36.647242" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:54:36.646984" elapsed="0.000301"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:54:36.656960" level="INFO">GET Request : url=http://10.30.171.110:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0336bvzrfnrhc3cqywxyctca52.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:54:36.658766" level="INFO">GET Response : url=http://10.30.171.110:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '1087'} 
 body={"flow-node-inventory:table":[{"id":0,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"3","active-flows":2,"packets-matched":"0"},"flow":[{"id":"1","table_id":0,"priority":2,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.1.0/24"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":0,"nanosecond":110000000}},"flags":""},{"id":"#UF$TABLE*0-1","table_id":0,"priority":0,"cookie_mask":"0","idle-timeout":0,"cookie":"10","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"output-action":{"max-length":65535,"output-node-connector":"CONTROLLER"}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":0,"nanosecond":23000000}},"flags":"SEND_FLOW_REM"}]}]} 
 </msg>
<msg time="2026-04-08T00:54:36.658917" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:54:36.649307" elapsed="0.009646"/>
</kw>
<status status="PASS" start="2026-04-08T00:54:36.647355" elapsed="0.011658"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:36.659285" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:54:36.659050" elapsed="0.000324"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:36.647336" elapsed="0.012067"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:54:36.664291" level="INFO">{"flow-node-inventory:table":[{"id":0,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"3","active-flows":2,"packets-matched":"0"},"flow":[{"id":"1","table_id":0,"priority":2,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.1.0/24"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":0,"nanosecond":110000000}},"flags":""},{"id":"#UF$TABLE*0-1","table_id":0,"priority":0,"cookie_mask":"0","idle-timeout":0,"cookie":"10","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"output-action":{"max-length":65535,"output-node-connector":"CONTROLLER"}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":0,"nanosecond":23000000}},"flags":"SEND_FLOW_REM"}]}]}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:54:36.660862" elapsed="0.003577"/>
</kw>
<status status="PASS" start="2026-04-08T00:54:36.660554" elapsed="0.003935"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:36.660526" elapsed="0.003999"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:54:36.668214" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:54:36.664923" elapsed="0.003361"/>
</kw>
<status status="PASS" start="2026-04-08T00:54:36.664611" elapsed="0.003723"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:36.664586" elapsed="0.003783"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:54:36.669036" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:54:36.668592" elapsed="0.000480"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:36.669413" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:54:36.669148" elapsed="0.000324"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:54:36.670015" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:54:36.669657" elapsed="0.000385"/>
</kw>
<status status="PASS" start="2026-04-08T00:54:36.669496" elapsed="0.000583"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:36.669129" elapsed="0.000972"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:54:36.670652" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:54:36.670283" elapsed="0.000397"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:36.670989" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:54:36.670751" elapsed="0.000296"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:54:36.671549" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:54:36.671247" elapsed="0.000328"/>
</kw>
<status status="PASS" start="2026-04-08T00:54:36.671070" elapsed="0.000541"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:36.670733" elapsed="0.000900"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:54:36.671802" elapsed="0.000351"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:54:36.672624" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:54:36.672335" elapsed="0.000316"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:54:36.672804" elapsed="0.002491"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:54:36.659916" elapsed="0.015446"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-08T00:54:36.675545" elapsed="0.000032"/>
</return>
<status status="PASS" start="2026-04-08T00:54:36.675435" elapsed="0.000177"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:36.675415" 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-04-08T00:54:36.675808" elapsed="0.000023"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-08T00:54:36.675880" elapsed="0.000016"/>
</return>
<msg time="2026-04-08T00:54:36.678321" level="INFO">${response_text} = {"flow-node-inventory:table":[{"id":0,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"3","active-flows":2,"packets-matched":"0"},"flow":[{"id":"1","table_id":0,"priori...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${access}</arg>
<arg>session=${session}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:54:36.640731" elapsed="0.037619"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:54:36.678401" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:54:36.678551" level="INFO">${data} = {"flow-node-inventory:table":[{"id":0,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"3","active-flows":2,"packets-matched":"0"},"flow":[{"id":"1","table_id":0,"priori...</msg>
<var>${data}</var>
<arg>uri=${uri}</arg>
<arg>member_index=${index}</arg>
<doc>Send a GET with the supplied uri to member ${member_index}.</doc>
<status status="PASS" start="2026-04-08T00:54:36.638895" elapsed="0.039683"/>
</kw>
<kw name="Check Item Occurrence" owner="Utils">
<for flavor="IN">
<iter>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T00:54:36.679827" level="INFO">Item found from container 1 time.</msg>
<arg>${string}</arg>
<arg>${item}</arg>
<arg>${dictionary_item_occurrence}[${item}]</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="PASS" start="2026-04-08T00:54:36.679424" elapsed="0.000475"/>
</kw>
<var name="${item}">10.0.1.0/24</var>
<status status="PASS" start="2026-04-08T00:54:36.679269" elapsed="0.000670"/>
</iter>
<iter>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T00:54:36.680547" level="INFO">Item found from container 1 time.</msg>
<arg>${string}</arg>
<arg>${item}</arg>
<arg>${dictionary_item_occurrence}[${item}]</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="PASS" start="2026-04-08T00:54:36.680185" elapsed="0.000429"/>
</kw>
<var name="${item}">"output-node-connector":"1"</var>
<status status="PASS" start="2026-04-08T00:54:36.680019" elapsed="0.000772"/>
</iter>
<var>${item}</var>
<value>@{dictionary_item_occurrence}</value>
<status status="PASS" start="2026-04-08T00:54:36.679113" elapsed="0.001715"/>
</for>
<arg>${data}</arg>
<arg>${dictionary}</arg>
<doc>Check string for occurrences of items expressed in a list of dictionaries {item=occurrences}. 0 occurences means item is not present.</doc>
<status status="PASS" start="2026-04-08T00:54:36.678809" elapsed="0.002076"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T00:54:36.634621" elapsed="0.046299"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-08T00:54:36.511371" elapsed="0.169579"/>
</for>
<arg>uri=${operational_table_0}</arg>
<arg>dictionary=${dictionary}</arg>
<arg>member_index_list=${controller_index_list}</arg>
<doc>Send a GET with the supplied uri to all or some members defined in ${member_index_list}.
Then check received for occurrences of items expressed in a dictionary {'10.0.1.0/24': '1', '"output-node-connector":"1"': '1'}.</doc>
<status status="PASS" start="2026-04-08T00:54:36.507913" elapsed="0.173089"/>
</kw>
<arg>15s</arg>
<arg>1s</arg>
<arg>ClusterManagement.Check_Item_Occurrence_Member_List_Or_All</arg>
<arg>uri=${operational_table_0}</arg>
<arg>dictionary=${dictionary}</arg>
<arg>member_index_list=${controller_index_list}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-08T00:54:35.375485" elapsed="1.305575"/>
</kw>
<doc>Verify sample flow gets applied in all instances in ${controller_index_list}.</doc>
<status status="PASS" start="2026-04-08T00:54:35.369405" elapsed="1.311722"/>
</kw>
<doc>Verify flows are installed in switch after follower restart.</doc>
<status status="PASS" start="2026-04-08T00:54:34.923866" elapsed="1.757397"/>
</test>
<test id="s1-s3-t15" name="Stop Mininet Connected To Leader and Exit" line="112">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-08T00:54:36.684888" elapsed="0.000554"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-08T00:54:36.684611" elapsed="0.000888"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:54:36.686526" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:54:36.686405" elapsed="0.000166"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:36.686380" elapsed="0.000213"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:54:36.691322" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:54:36.691214" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:36.691196" elapsed="0.000192"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:54:36.692479" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:54:36.692069" elapsed="0.000438"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:54:36.692968" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:54:36.692666" elapsed="0.000327"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:54:36.693037" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:54:36.693206" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:54:36.691617" elapsed="0.001615"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:54:36.698635" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:54:36.698524" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:36.698502" elapsed="0.000199"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:54:36.699907" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:54:36.699798" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:36.699779" elapsed="0.000196"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:54:36.700460" level="INFO">${karaf_connection_index} = 157</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:54:36.700122" elapsed="0.000365"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:54:36.701040" level="INFO">${current_connection_index} = 234</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:54:36.700704" elapsed="0.000372"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T00:54:36.735907" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T00:54:36.701793" elapsed="0.034254"/>
</kw>
<msg time="2026-04-08T00:54:36.736275" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T00:54:36.736322" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:54:36.701321" elapsed="0.035038"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T00:54:36.837406" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "a "d "e "r "[C "F "o "l "l "o "w "e "r "[C "F "a "i "l "o "v "e "r ". "S "t "o "p "[C "M "i "n "i "n "e "t "[C "C "o "n "n "[78Ce "[A[78Cc
 "t "e "d "[C "T "o "[C "L "e "a "d "e "r "[C "a "n "d "[C "E "x "i "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T00:54:36.736951" elapsed="0.100868"/>
</kw>
<msg time="2026-04-08T00:54:36.838072" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T00:54:36.838122" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:54:36.736564" elapsed="0.101621"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:36.838657" elapsed="0.000027"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:54:36.838314" elapsed="0.000403"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:36.838277" elapsed="0.000470"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:54:36.839315" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "a "d "e "r "[C "F "o "l "l "o "w "e "r "[C "F "a "i "l "o "v "e "r ". "S "t "o "p "[C "M "i "n "i "n "e "t "[C "C "o "n "n "[78Ce "[A[78Cc
 "t "e "d "[C "T "o "[C "L "e "a "d "e "r "[C "a "n "d "[C "E "x "i "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:54:36.838891" elapsed="0.000511"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:36.839709" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:54:36.839470" elapsed="0.000293"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:36.839451" elapsed="0.000336"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T00:54:36.839825" elapsed="0.000039"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:54:36.842818" elapsed="0.000164"/>
</kw>
<msg time="2026-04-08T00:54:36.843046" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:54:36.841461" elapsed="0.001760"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:36.843525" elapsed="0.000100"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:36.843903" elapsed="0.000085"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:54:36.840747" elapsed="0.003362"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T00:54:36.840145" elapsed="0.004048"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T00:54:36.699462" elapsed="0.144832"/>
</kw>
<msg time="2026-04-08T00:54:36.844391" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:54:36.844435" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:54:36.698851" elapsed="0.145620"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T00:54:36.844658" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-08T00:54:36.844550" elapsed="0.000166"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:36.844531" elapsed="0.000208"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:36.845133" elapsed="0.000039"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:36.845541" elapsed="0.000026"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T00:54:36.845614" elapsed="0.000023"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T00:54:36.698178" elapsed="0.147554"/>
</kw>
<msg time="2026-04-08T00:54:36.845827" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:54:36.845871" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:54:36.693589" elapsed="0.152317"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:36.846369" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:54:36.845982" elapsed="0.000445"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:36.845965" elapsed="0.000485"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T00:54:36.693449" elapsed="0.153025"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:54:36.852120" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:54:36.852011" elapsed="0.000168"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:36.851992" elapsed="0.000210"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:54:36.853351" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:54:36.853243" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:36.853225" elapsed="0.000193"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:54:36.853904" level="INFO">${karaf_connection_index} = 223</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:54:36.853585" elapsed="0.000346"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:54:36.854363" level="INFO">${current_connection_index} = 234</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:54:36.854087" elapsed="0.000303"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T00:54:36.899377" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T00:54:36.854880" elapsed="0.044680"/>
</kw>
<msg time="2026-04-08T00:54:36.899802" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T00:54:36.899854" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:54:36.854547" elapsed="0.045343"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T00:54:36.991810" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "a "d "e "r "[C "F "o "l "l "o "w "e "r "[C "F "a "i "l "o "v "e "r ". "S "t "o "p "[C "M "i "n "i "n "e "t "[C "C "o "n "n "[78Ce "[A[78Cc
 "t "e "d "[C "T "o "[C "L "e "a "d "e "r "[C "a "n "d "[C "E "x "i "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T00:54:36.900474" elapsed="0.091523"/>
</kw>
<msg time="2026-04-08T00:54:36.992222" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T00:54:36.992272" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:54:36.900076" elapsed="0.092232"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:36.992719" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:54:36.992418" elapsed="0.000358"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:36.992383" elapsed="0.000422"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:54:36.993323" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "a "d "e "r "[C "F "o "l "l "o "w "e "r "[C "F "a "i "l "o "v "e "r ". "S "t "o "p "[C "M "i "n "i "n "e "t "[C "C "o "n "n "[78Ce "[A[78Cc
 "t "e "d "[C "T "o "[C "L "e "a "d "e "r "[C "a "n "d "[C "E "x "i "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:54:36.992948" elapsed="0.000463"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:36.993694" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:54:36.993479" elapsed="0.000269"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:36.993460" elapsed="0.000311"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T00:54:36.993808" elapsed="0.000037"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:54:36.996747" elapsed="0.000169"/>
</kw>
<msg time="2026-04-08T00:54:36.996979" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:54:36.995432" elapsed="0.001695"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:36.997447" elapsed="0.000086"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:36.997805" elapsed="0.000085"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:54:36.994714" elapsed="0.003295"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T00:54:36.994124" elapsed="0.003952"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T00:54:36.852916" elapsed="0.145276"/>
</kw>
<msg time="2026-04-08T00:54:36.998291" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:54:36.998337" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:54:36.852352" elapsed="0.146075"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T00:54:36.998812" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-08T00:54:36.998697" elapsed="0.000174"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:36.998675" elapsed="0.000219"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 2,
close the previous connection. In any case create a new connection
to karaf console for 2, set correct prompt set and login to karaf console.
Store connection index for 2 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:36.999309" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:36.999660" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T00:54:36.999731" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T00:54:36.851619" elapsed="0.148221"/>
</kw>
<msg time="2026-04-08T00:54:36.999937" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:54:36.999981" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:54:36.846754" elapsed="0.153262"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:37.000358" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:54:37.000094" elapsed="0.000317"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:37.000076" elapsed="0.000357"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T00:54:36.846612" elapsed="0.153845"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:54:37.006089" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:54:37.005980" elapsed="0.000156"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:37.005960" elapsed="0.000213"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:54:37.007323" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:54:37.007214" elapsed="0.000172"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:37.007195" elapsed="0.000214"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:54:37.007910" level="INFO">${karaf_connection_index} = 86</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:54:37.007567" elapsed="0.000369"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:54:37.008346" level="INFO">${current_connection_index} = 234</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:54:37.008092" elapsed="0.000281"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T00:54:37.042521" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T00:54:37.008866" elapsed="0.033859"/>
</kw>
<msg time="2026-04-08T00:54:37.042942" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T00:54:37.042992" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:54:37.008533" elapsed="0.034495"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T00:54:37.135489" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "a "d "e "r "[C "F "o "l "l "o "w "e "r "[C "F "a "i "l "o "v "e "r ". "S "t "o "p "[C "M "i "n "i "n "e "t "[C "C "o "n "n "[78Ce "[A[78Cc
 "t "e "d "[C "T "o "[C "L "e "a "d "e "r "[C "a "n "d "[C "E "x "i "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T00:54:37.043728" elapsed="0.092054"/>
</kw>
<msg time="2026-04-08T00:54:37.136034" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T00:54:37.136085" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:54:37.043281" elapsed="0.092841"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:37.136641" elapsed="0.000027"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:54:37.136286" elapsed="0.000418"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:37.136248" elapsed="0.000485"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:54:37.137315" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "a "d "e "r "[C "F "o "l "l "o "w "e "r "[C "F "a "i "l "o "v "e "r ". "S "t "o "p "[C "M "i "n "i "n "e "t "[C "C "o "n "n "[78Ce "[A[78Cc
 "t "e "d "[C "T "o "[C "L "e "a "d "e "r "[C "a "n "d "[C "E "x "i "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:54:37.136881" elapsed="0.000611"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:37.137794" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:54:37.137563" elapsed="0.000287"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:37.137544" elapsed="0.000330"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T00:54:37.137912" elapsed="0.000041"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:54:37.142124" elapsed="0.000277"/>
</kw>
<msg time="2026-04-08T00:54:37.142515" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:54:37.139969" elapsed="0.002858"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:37.143293" elapsed="0.000122"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:37.143802" elapsed="0.000120"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:54:37.138845" elapsed="0.005249"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T00:54:37.138253" elapsed="0.006038"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T00:54:37.006889" elapsed="0.137560"/>
</kw>
<msg time="2026-04-08T00:54:37.144597" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:54:37.144660" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:54:37.006327" elapsed="0.138389"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T00:54:37.145029" elapsed="0.000039"/>
</return>
<status status="PASS" start="2026-04-08T00:54:37.144854" elapsed="0.000264"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:37.144816" elapsed="0.000368"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 3,
close the previous connection. In any case create a new connection
to karaf console for 3, set correct prompt set and login to karaf console.
Store connection index for 3 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:37.145803" elapsed="0.000037"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:37.146303" elapsed="0.000034"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T00:54:37.146402" elapsed="0.000023"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T00:54:37.005626" elapsed="0.140931"/>
</kw>
<msg time="2026-04-08T00:54:37.146692" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:54:37.146755" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:54:37.000727" elapsed="0.146080"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:37.147302" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:54:37.146916" elapsed="0.000461"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:37.146892" elapsed="0.000517"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T00:54:37.000588" elapsed="0.146855"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-08T00:54:36.693283" elapsed="0.454206"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-08T00:54:36.690839" elapsed="0.456734"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-08T00:54:36.686083" elapsed="0.461570"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:54:36.685655" elapsed="0.462061"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-08T00:54:36.682522" elapsed="0.465273"/>
</kw>
<kw name="Stop Mininet And Exit" owner="MininetKeywords">
<if>
<branch type="IF" condition="&quot;&quot;&quot;${mininet_conn}&quot;&quot;&quot; != &quot;&quot;">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${mininet_conn}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:54:37.154029" elapsed="0.000170"/>
</kw>
<status status="PASS" start="2026-04-08T00:54:37.153806" elapsed="0.000430"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:37.153788" elapsed="0.000472"/>
</if>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T00:54:37.156603" level="INFO">exit</msg>
<arg>exit</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T00:54:37.154398" elapsed="0.002260"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-08T00:54:37.312816" level="INFO">*** Stopping 1 controllers
c0 
*** Stopping 2 links
..
*** Stopping 1 switches
s1 
*** Stopping 2 hosts
h1 h2 
*** Done
completed in 2.527 seconds
[?2004h[jenkins@releng-11369-169-1-mininet-ovs-217-0 ~]&gt;</msg>
<arg>${TOOLS_SYSTEM_PROMPT}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-08T00:54:37.156890" elapsed="0.156116"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:54:37.313381" elapsed="0.000280"/>
</kw>
<arg>${mininet_conn_id}</arg>
<doc>Stops Mininet and exits session ${mininet_conn}</doc>
<status status="PASS" start="2026-04-08T00:54:37.153515" elapsed="0.160241"/>
</kw>
<kw name="Clean Mininet System" owner="Utils">
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:37.317670" elapsed="0.000033"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:54:37.317221" elapsed="0.000531"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:37.317180" elapsed="0.000613"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:54:37.318279" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T00:54:37.318026" elapsed="0.000448"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:54:37.319270" level="INFO">Attempting to execute command "sudo mn -c" on remote system "10.30.170.192" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:54:37.318688" elapsed="0.000648"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:54:37.320067" level="INFO">${conn_id} = 235</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:54:37.319560" elapsed="0.000545"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T00:54:37.321492" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T00:54:37.321603" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T00:54:37.321058" elapsed="0.000580"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:54:37.321869" elapsed="0.000488"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T00:54:37.323600" level="INFO">Logging into '10.30.170.192:22' as 'jenkins'.</msg>
<msg time="2026-04-08T00:54:37.681198" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 00:53:38 UTC 2026

  System load:  0.1                Processes:             108
  Usage of /:   19.5% of 38.58GB   Users logged in:       0
  Memory usage: 5%                 IPv4 address for ens3: 10.30.170.192
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 00:54:34 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-1-mininet-ovs-217-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T00:54:37.323142" elapsed="0.358214"/>
</kw>
<msg time="2026-04-08T00:54:37.681442" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:54:37.322594" elapsed="0.358931"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T00:54:37.320458" elapsed="0.361185"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T00:54:37.682125" level="INFO">Executing command 'sudo mn -c'.</msg>
<msg time="2026-04-08T00:54:38.828898" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-08T00:54:38.829337" level="INFO">${stdout} = </msg>
<msg time="2026-04-08T00:54:38.829447" level="INFO">${stderr} = *** Removing excess controllers/ofprotocols/ofdatapaths/pings/noxes
killall controller ofprotocol ofdatapath ping nox_corelt-nox_core ovs-openflowd ovs-controllerovs-testcontroller udpbwtest mnexec iv...</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T00:54:37.681882" elapsed="1.147626"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:54:38.830077" elapsed="0.000649"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:54:38.831924" level="INFO">*** Removing excess controllers/ofprotocols/ofdatapaths/pings/noxes
killall controller ofprotocol ofdatapath ping nox_corelt-nox_core ovs-openflowd ovs-controllerovs-testcontroller udpbwtest mnexec ivs ryu-manager 2&gt; /dev/null
killall -9 controller ofprotocol ofdatapath ping nox_corelt-nox_core ovs-openflowd ovs-controllerovs-testcontroller udpbwtest mnexec ivs ryu-manager 2&gt; /dev/null
pkill -9 -f "sudo mnexec"
*** Removing junk from /tmp
rm -f /tmp/vconn* /tmp/vlogs* /tmp/*.out /tmp/*.log
*** Removing old X11 tunnels
*** Removing excess kernel datapaths
ps ax | egrep -o 'dp[0-9]+' | sed 's/dp/nl:/'
***  Removing OVS datapaths
ovs-vsctl --timeout=1 list-br
ovs-vsctl --timeout=1 list-br
*** Removing all links of the pattern foo-ethX
ip link show | egrep -o '([-_.[:alnum:]]+-eth[[:digit:]]+)'
ip link show
*** Killing stale mininet node processes
pkill -9 -f mininet:
*** Shutting down stale tunnels
pkill -9 -f Tunnel=Ethernet
pkill -9 -f .ssh/mn
rm -f ~/.ssh/mn/*
*** Cleanup complete.</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:54:38.831151" elapsed="0.001019"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:54:38.832681" elapsed="0.000036"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:54:38.832380" elapsed="0.000408"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:38.832329" elapsed="0.000509"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T00:54:38.833233" elapsed="0.000072"/>
</return>
<status status="PASS" start="2026-04-08T00:54:38.832959" elapsed="0.000421"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:38.832925" elapsed="0.000510"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:54:38.833511" elapsed="0.000031"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:54:38.839703" elapsed="0.000341"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:54:38.840231" elapsed="0.000166"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:54:38.840549" elapsed="0.000107"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:54:38.834236" elapsed="0.006475"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T00:54:37.316433" elapsed="1.524372"/>
</kw>
<msg time="2026-04-08T00:54:38.840863" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:54:37.315553" elapsed="1.525363"/>
</kw>
<arg>${system}</arg>
<arg>sudo mn -c</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-08T00:54:37.314663" elapsed="1.526335"/>
</kw>
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:38.843094" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:54:38.842820" elapsed="0.000331"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:38.842801" elapsed="0.000392"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:54:38.843491" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T00:54:38.843343" elapsed="0.000283"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:54:38.844158" level="INFO">Attempting to execute command "sudo ps -elf | egrep 'usr/local/bin/mn' | egrep python | awk '{print "sudo kill -9",$4}' | sh" on remote system "10.30.170.192" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:54:38.843776" elapsed="0.000448"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:54:38.844740" level="INFO">${conn_id} = 237</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:54:38.844381" elapsed="0.000384"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T00:54:38.845661" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T00:54:38.845736" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T00:54:38.845385" elapsed="0.000375"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:54:38.845914" elapsed="0.000333"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T00:54:38.847085" level="INFO">Logging into '10.30.170.192:22' as 'jenkins'.</msg>
<msg time="2026-04-08T00:54:39.185379" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 00:53:38 UTC 2026

  System load:  0.1                Processes:             108
  Usage of /:   19.5% of 38.58GB   Users logged in:       0
  Memory usage: 5%                 IPv4 address for ens3: 10.30.170.192
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 00:54:37 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-1-mininet-ovs-217-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T00:54:38.846772" elapsed="0.338754"/>
</kw>
<msg time="2026-04-08T00:54:39.185690" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:54:38.846414" elapsed="0.339355"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T00:54:38.844978" elapsed="0.340902"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T00:54:39.186391" level="INFO">Executing command 'sudo ps -elf | egrep 'usr/local/bin/mn' | egrep python | awk '{print "sudo kill -9",$4}' | sh'.</msg>
<msg time="2026-04-08T00:54:39.219557" level="INFO">Command exited with return code -1.</msg>
<msg time="2026-04-08T00:54:39.219804" level="INFO">${stdout} = </msg>
<msg time="2026-04-08T00:54:39.219902" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T00:54:39.186111" elapsed="0.033841"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:54:39.220364" elapsed="0.000452"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:54:39.221899" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:54:39.221273" elapsed="0.000718"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:54:39.222503" elapsed="0.000038"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:54:39.222171" elapsed="0.000442"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:39.222113" elapsed="0.000551"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T00:54:39.223082" elapsed="0.000060"/>
</return>
<status status="PASS" start="2026-04-08T00:54:39.222783" elapsed="0.000465"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:39.222749" elapsed="0.000555"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:54:39.223378" elapsed="0.000031"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:54:39.227167" elapsed="0.000480"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:54:39.227877" elapsed="0.000214"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:54:39.228321" elapsed="0.000140"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:54:39.223905" elapsed="0.004628"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T00:54:38.842293" elapsed="0.386369"/>
</kw>
<msg time="2026-04-08T00:54:39.228738" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:54:38.841724" elapsed="0.387083"/>
</kw>
<arg>${system}</arg>
<arg>sudo ps -elf | egrep 'usr/local/bin/mn' | egrep python | awk '{print "sudo kill -9",$4}' | sh</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-08T00:54:38.841196" elapsed="0.387720"/>
</kw>
<status status="PASS" start="2026-04-08T00:54:37.314083" elapsed="1.914913"/>
</kw>
<doc>Stop mininet Connected To Other Follower and exit connection.</doc>
<status status="PASS" start="2026-04-08T00:54:36.681869" elapsed="2.547270"/>
</test>
<test id="s1-s3-t16" name="Restart Full Cluster" line="117">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-08T00:54:39.232846" elapsed="0.000208"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-08T00:54:39.232587" elapsed="0.000520"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:54:39.234104" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:54:39.233994" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:39.233975" elapsed="0.000213"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:54:39.238867" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:54:39.238762" elapsed="0.000150"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:39.238744" elapsed="0.000190"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:54:39.239963" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:54:39.239576" elapsed="0.000414"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:54:39.240470" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:54:39.240149" elapsed="0.000347"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:54:39.240541" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:54:39.240694" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:54:39.239161" elapsed="0.001558"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:54:39.247769" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:54:39.247659" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:39.247640" elapsed="0.000196"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:54:39.249005" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:54:39.248896" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:39.248878" elapsed="0.000195"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:54:39.249562" level="INFO">${karaf_connection_index} = 157</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:54:39.249242" elapsed="0.000347"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:54:39.249972" level="INFO">${current_connection_index} = None</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:54:39.249747" elapsed="0.000251"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T00:54:39.288978" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T00:54:39.250511" elapsed="0.038594"/>
</kw>
<msg time="2026-04-08T00:54:39.289316" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T00:54:39.289364" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:54:39.250156" elapsed="0.039243"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T00:54:39.344310" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "a "d "e "r "[C "F "o "l "l "o "w "e "r "[C "F "a "i "l "o "v "e "r ". "R "e "s "t "a "r "t "[C "F "u "l "l "[C "C "l "u "s "[78Ct "[A[78Ce
 "r "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T00:54:39.289974" elapsed="0.054490"/>
</kw>
<msg time="2026-04-08T00:54:39.344649" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T00:54:39.344695" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:54:39.289598" elapsed="0.055132"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:39.345117" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:54:39.344837" elapsed="0.000360"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:39.344806" elapsed="0.000422"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:54:39.345745" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "a "d "e "r "[C "F "o "l "l "o "w "e "r "[C "F "a "i "l "o "v "e "r ". "R "e "s "t "a "r "t "[C "F "u "l "l "[C "C "l "u "s "[78Ct "[A[78Ce
 "r "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:54:39.345403" elapsed="0.000421"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:39.346108" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:54:39.345891" elapsed="0.000275"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:39.345872" elapsed="0.000333"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T00:54:39.346244" elapsed="0.000037"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:54:39.347759" elapsed="0.000817"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:54:39.348854" elapsed="0.000483"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:54:39.349616" elapsed="0.000361"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:54:39.347108" elapsed="0.002971"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T00:54:39.346550" elapsed="0.003594"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T00:54:39.248596" elapsed="0.101672"/>
</kw>
<msg time="2026-04-08T00:54:39.350363" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:54:39.350407" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:54:39.247984" elapsed="0.102459"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T00:54:39.350693" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-08T00:54:39.350584" elapsed="0.000169"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:39.350565" elapsed="0.000356"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:39.351339" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:39.351671" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T00:54:39.351741" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T00:54:39.247282" elapsed="0.104566"/>
</kw>
<msg time="2026-04-08T00:54:39.351945" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:54:39.351990" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:54:39.241154" elapsed="0.110872"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:39.352370" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:54:39.352102" elapsed="0.000322"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:39.352085" elapsed="0.000363"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T00:54:39.241013" elapsed="0.111459"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:54:39.357877" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:54:39.357769" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:39.357751" elapsed="0.000193"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:54:39.359330" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:54:39.359221" elapsed="0.000156"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:39.359202" elapsed="0.000197"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:54:39.359838" level="INFO">${karaf_connection_index} = 223</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:54:39.359539" elapsed="0.000326"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:54:39.360260" level="INFO">${current_connection_index} = None</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:54:39.360021" elapsed="0.000266"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T00:54:39.400689" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T00:54:39.360783" elapsed="0.040064"/>
</kw>
<msg time="2026-04-08T00:54:39.401063" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T00:54:39.401111" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:54:39.360444" elapsed="0.040703"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T00:54:39.484924" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "a "d "e "r "[C "F "o "l "l "o "w "e "r "[C "F "a "i "l "o "v "e "r ". "R "e "s "t "a "r "t "[C "F "u "l "l "[C "C "l "u "s "[78Ct "[A[78Ce
 "r "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T00:54:39.401788" elapsed="0.083519"/>
</kw>
<msg time="2026-04-08T00:54:39.485706" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T00:54:39.485815" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:54:39.401385" elapsed="0.084512"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:39.486728" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:54:39.486106" elapsed="0.000751"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:39.486051" elapsed="0.000860"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:54:39.487996" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "a "d "e "r "[C "F "o "l "l "o "w "e "r "[C "F "a "i "l "o "v "e "r ". "R "e "s "t "a "r "t "[C "F "u "l "l "[C "C "l "u "s "[78Ct "[A[78Ce
 "r "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:54:39.487267" elapsed="0.000991"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:39.488824" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:54:39.488559" elapsed="0.000320"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:39.488515" elapsed="0.000388"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T00:54:39.488941" elapsed="0.000038"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:54:39.490518" elapsed="0.000805"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:54:39.491599" elapsed="0.000456"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:54:39.492348" elapsed="0.000355"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:54:39.489856" elapsed="0.002949"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T00:54:39.489283" elapsed="0.003585"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T00:54:39.358771" elapsed="0.134197"/>
</kw>
<msg time="2026-04-08T00:54:39.493062" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:54:39.493106" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:54:39.358091" elapsed="0.135051"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T00:54:39.493351" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-08T00:54:39.493242" elapsed="0.000167"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:39.493222" elapsed="0.000211"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 2,
close the previous connection. In any case create a new connection
to karaf console for 2, set correct prompt set and login to karaf console.
Store connection index for 2 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:39.493841" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:39.494197" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T00:54:39.494270" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T00:54:39.357409" elapsed="0.136970"/>
</kw>
<msg time="2026-04-08T00:54:39.494475" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:54:39.494520" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:54:39.352742" elapsed="0.141814"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:39.494883" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:54:39.494632" elapsed="0.000305"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:39.494615" elapsed="0.000344"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T00:54:39.352602" elapsed="0.142380"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:54:39.500491" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:54:39.500382" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:39.500348" elapsed="0.000211"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:54:39.501696" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:54:39.501587" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:39.501568" elapsed="0.000196"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:54:39.502240" level="INFO">${karaf_connection_index} = 86</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:54:39.501909" elapsed="0.000359"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:54:39.502650" level="INFO">${current_connection_index} = None</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:54:39.502428" elapsed="0.000248"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T00:54:39.540533" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T00:54:39.503193" elapsed="0.037521"/>
</kw>
<msg time="2026-04-08T00:54:39.540917" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T00:54:39.541042" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:54:39.502835" elapsed="0.038246"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T00:54:39.599393" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "a "d "e "r "[C "F "o "l "l "o "w "e "r "[C "F "a "i "l "o "v "e "r ". "R "e "s "t "a "r "t "[C "F "u "l "l "[C "C "l "u "s "[78Ct "[A[78Ce
 "r "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T00:54:39.541758" elapsed="0.057904"/>
</kw>
<msg time="2026-04-08T00:54:39.599907" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T00:54:39.599957" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:54:39.541350" elapsed="0.058645"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:39.600508" elapsed="0.000028"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:54:39.600126" elapsed="0.000447"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:39.600088" elapsed="0.000515"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:54:39.601162" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "a "d "e "r "[C "F "o "l "l "o "w "e "r "[C "F "a "i "l "o "v "e "r ". "R "e "s "t "a "r "t "[C "F "u "l "l "[C "C "l "u "s "[78Ct "[A[78Ce
 "r "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:54:39.600754" elapsed="0.000508"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:39.601558" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:54:39.601333" elapsed="0.000282"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:39.601314" elapsed="0.000328"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T00:54:39.601680" elapsed="0.000040"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:54:39.603495" elapsed="0.000802"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:54:39.604582" elapsed="0.000474"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:54:39.605350" elapsed="0.000363"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:54:39.602640" elapsed="0.003175"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T00:54:39.602006" elapsed="0.003873"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T00:54:39.501285" elapsed="0.104699"/>
</kw>
<msg time="2026-04-08T00:54:39.606081" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:54:39.606126" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:54:39.500708" elapsed="0.105459"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T00:54:39.606374" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-08T00:54:39.606263" elapsed="0.000172"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:39.606243" elapsed="0.000246"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 3,
close the previous connection. In any case create a new connection
to karaf console for 3, set correct prompt set and login to karaf console.
Store connection index for 3 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:39.606901" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:39.607326" elapsed="0.000027"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T00:54:39.607404" elapsed="0.000017"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T00:54:39.500008" elapsed="0.107510"/>
</kw>
<msg time="2026-04-08T00:54:39.607619" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:54:39.607665" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:54:39.495271" elapsed="0.112431"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:54:39.608106" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:54:39.607781" elapsed="0.000384"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:39.607763" elapsed="0.000447"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T00:54:39.495112" elapsed="0.113124"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-08T00:54:39.240832" elapsed="0.367439"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-08T00:54:39.238408" elapsed="0.369924"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-08T00:54:39.233704" elapsed="0.374687"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:54:39.233276" elapsed="0.375162"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-08T00:54:39.230048" elapsed="0.378445"/>
</kw>
<kw name="Stop_Members_From_List_Or_All" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:54:39.614247" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:54:39.613736" elapsed="0.000547"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:54:39.614941" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:54:39.614495" elapsed="0.000480"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:54:39.615030" elapsed="0.000038"/>
</return>
<msg time="2026-04-08T00:54:39.615254" level="INFO">${stop_index_list} = [1, 2, 3]</msg>
<var>${stop_index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:54:39.613318" elapsed="0.001971"/>
</kw>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:54:39.616582" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:54:39.616060" elapsed="0.000559"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:54:39.617165" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:54:39.616822" elapsed="0.000385"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:54:39.617255" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:54:39.617429" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${original_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:54:39.615560" elapsed="0.001896"/>
</kw>
<kw name="Run_Bash_Command_On_List_Or_All" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:54:39.619134" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:54:39.618700" elapsed="0.000462"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:54:39.619714" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:54:39.619371" elapsed="0.000370"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:54:39.619786" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:54:39.619958" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:54:39.618206" elapsed="0.001778"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:54:39.621170" level="INFO">${member_ip} = 10.30.170.48</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:54:39.620875" elapsed="0.000337"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:54:39.622014" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

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

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T00:54:39.625667" elapsed="0.000268"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:54:39.626592" level="INFO">Attempting to execute command "/tmp/karaf-0.23.1/bin/stop" on remote system "10.30.170.48" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:54:39.626089" elapsed="0.000552"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:54:39.627272" level="INFO">${conn_id} = 242</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:54:39.626801" elapsed="0.000499"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T00:54:39.628525" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T00:54:39.628652" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T00:54:39.627960" elapsed="0.000717"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:54:39.628868" elapsed="0.000717"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T00:54:39.632461" level="INFO">Logging into '10.30.170.48:22' as 'jenkins'.</msg>
<msg time="2026-04-08T00:54:40.206621" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 00:54:39 UTC 2026

  System load:  0.36               Processes:             122
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 7%                 IPv4 address for ens3: 10.30.170.48
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 00:54:29 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-0-builder-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T00:54:39.631758" elapsed="0.575112"/>
</kw>
<msg time="2026-04-08T00:54:40.207014" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:54:39.629841" elapsed="0.577386"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T00:54:39.627521" elapsed="0.579914"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T00:54:40.207980" level="INFO">Executing command '/tmp/karaf-0.23.1/bin/stop'.</msg>
<msg time="2026-04-08T00:54:40.589470" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-08T00:54:40.589877" level="INFO">${stdout} = </msg>
<msg time="2026-04-08T00:54:40.589979" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T00:54:40.207689" elapsed="0.382345"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:54:40.590570" elapsed="0.000648"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:54:40.592860" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:54:40.591652" elapsed="0.001311"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:54:40.593535" elapsed="0.000038"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:54:40.593167" elapsed="0.000481"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:40.593102" elapsed="0.000600"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T00:54:40.594063" elapsed="0.000070"/>
</return>
<status status="PASS" start="2026-04-08T00:54:40.593822" elapsed="0.000421"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:40.593789" elapsed="0.000510"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:54:40.594376" elapsed="0.000032"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:54:40.611688" elapsed="0.000754"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:54:40.612616" elapsed="0.000178"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:54:40.612944" elapsed="0.000100"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:54:40.595095" elapsed="0.018004"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T00:54:39.624162" elapsed="0.989050"/>
</kw>
<msg time="2026-04-08T00:54:40.613337" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:54:39.623434" elapsed="0.989966"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-08T00:54:39.622872" elapsed="0.990611"/>
</kw>
<msg time="2026-04-08T00:54:40.613525" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:54:39.622317" elapsed="0.991252"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:54:40.616602" elapsed="0.000314"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:54:40.617080" elapsed="0.000162"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:54:40.617391" elapsed="0.000096"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:54:40.613879" elapsed="0.003660"/>
</kw>
<msg time="2026-04-08T00:54:40.617632" level="INFO">${output} = </msg>
<var>${output}</var>
<arg>Utils.Run_Command_On_Controller</arg>
<arg>${member_ip}</arg>
<arg>${command}</arg>
<doc>Store current connection index, run keyword returning its result, restore connection in teardown.
Note that in order to avoid "got positional argument after named arguments", it is safer to use positional (not named) arguments on call.</doc>
<status status="PASS" start="2026-04-08T00:54:39.621445" elapsed="0.996212"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:54:40.618106" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:54:40.617856" elapsed="0.000292"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-08T00:54:40.618209" elapsed="0.000031"/>
</return>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-08T00:54:39.620452" elapsed="0.997882"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T00:54:39.620224" elapsed="0.998148"/>
</iter>
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:54:40.619345" level="INFO">${member_ip} = 10.30.170.131</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:54:40.619059" elapsed="0.000313"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:54:40.620121" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

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

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T00:54:40.623499" elapsed="0.000258"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:54:40.624430" level="INFO">Attempting to execute command "/tmp/karaf-0.23.1/bin/stop" on remote system "10.30.170.131" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:54:40.623907" elapsed="0.000572"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:54:40.625063" level="INFO">${conn_id} = 245</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:54:40.624637" elapsed="0.000453"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T00:54:40.626349" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T00:54:40.626482" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T00:54:40.625760" elapsed="0.000746"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:54:40.626699" elapsed="0.000734"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T00:54:40.631441" level="INFO">Logging into '10.30.170.131:22' as 'jenkins'.</msg>
<msg time="2026-04-08T00:54:41.222746" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 00:54:40 UTC 2026

  System load:  0.88               Processes:             125
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 6%                 IPv4 address for ens3: 10.30.170.131
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 00:54:29 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-0-builder-1 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T00:54:40.629346" elapsed="0.593764"/>
</kw>
<msg time="2026-04-08T00:54:41.223275" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:54:40.627670" elapsed="0.595807"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T00:54:40.625324" elapsed="0.598354"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T00:54:41.224237" level="INFO">Executing command '/tmp/karaf-0.23.1/bin/stop'.</msg>
<msg time="2026-04-08T00:54:41.595385" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-08T00:54:41.595721" level="INFO">${stdout} = </msg>
<msg time="2026-04-08T00:54:41.595822" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T00:54:41.223925" elapsed="0.371949"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:54:41.596363" elapsed="0.000499"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:54:41.598089" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:54:41.597359" elapsed="0.000875"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:54:41.598709" elapsed="0.000037"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:54:41.598411" elapsed="0.000405"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:41.598361" elapsed="0.000505"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T00:54:41.599279" elapsed="0.000067"/>
</return>
<status status="PASS" start="2026-04-08T00:54:41.598986" elapsed="0.000436"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:41.598952" elapsed="0.000528"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:54:41.599628" elapsed="0.000049"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:54:41.616083" elapsed="0.001084"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:54:41.617355" elapsed="0.000167"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:54:41.617690" elapsed="0.000103"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:54:41.600387" elapsed="0.017459"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T00:54:40.622426" elapsed="0.995513"/>
</kw>
<msg time="2026-04-08T00:54:41.617997" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:54:40.621707" elapsed="0.996347"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-08T00:54:40.621117" elapsed="0.997019"/>
</kw>
<msg time="2026-04-08T00:54:41.618196" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:54:40.620621" elapsed="0.997622"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:54:41.621289" elapsed="0.000312"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:54:41.621781" elapsed="0.000158"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:54:41.622088" elapsed="0.000117"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:54:41.618540" elapsed="0.003717"/>
</kw>
<msg time="2026-04-08T00:54:41.622350" level="INFO">${output} = </msg>
<var>${output}</var>
<arg>Utils.Run_Command_On_Controller</arg>
<arg>${member_ip}</arg>
<arg>${command}</arg>
<doc>Store current connection index, run keyword returning its result, restore connection in teardown.
Note that in order to avoid "got positional argument after named arguments", it is safer to use positional (not named) arguments on call.</doc>
<status status="PASS" start="2026-04-08T00:54:40.619583" elapsed="1.002793"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:54:41.622809" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:54:41.622559" elapsed="0.000291"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-08T00:54:41.622893" elapsed="0.000029"/>
</return>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-08T00:54:40.618649" elapsed="1.004368"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T00:54:40.618470" elapsed="1.004584"/>
</iter>
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:54:41.624082" level="INFO">${member_ip} = 10.30.171.110</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:54:41.623765" elapsed="0.000344"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:54:41.624989" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

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

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T00:54:41.628349" elapsed="0.000265"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:54:41.629265" level="INFO">Attempting to execute command "/tmp/karaf-0.23.1/bin/stop" on remote system "10.30.171.110" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:54:41.628767" elapsed="0.000545"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:54:41.629894" level="INFO">${conn_id} = 248</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:54:41.629471" elapsed="0.000449"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T00:54:41.631208" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T00:54:41.631367" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T00:54:41.630600" elapsed="0.000798"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:54:41.631591" elapsed="0.001078"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T00:54:41.635011" level="INFO">Logging into '10.30.171.110:22' as 'jenkins'.</msg>
<msg time="2026-04-08T00:54:42.212081" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 00:54:41 UTC 2026

  System load:  0.7                Processes:             123
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 8%                 IPv4 address for ens3: 10.30.171.110
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 00:54:29 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T00:54:41.634387" elapsed="0.578046"/>
</kw>
<msg time="2026-04-08T00:54:42.212586" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:54:41.632935" elapsed="0.579864"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T00:54:41.630136" elapsed="0.582887"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T00:54:42.213612" level="INFO">Executing command '/tmp/karaf-0.23.1/bin/stop'.</msg>
<msg time="2026-04-08T00:54:42.563503" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-08T00:54:42.563875" level="INFO">${stdout} = </msg>
<msg time="2026-04-08T00:54:42.563978" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T00:54:42.213323" elapsed="0.350726"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:54:42.564559" elapsed="0.000694"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:54:42.566503" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:54:42.565679" elapsed="0.000929"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:54:42.567092" elapsed="0.000036"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:54:42.566791" elapsed="0.000480"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:42.566738" elapsed="0.000604"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T00:54:42.567760" elapsed="0.000071"/>
</return>
<status status="PASS" start="2026-04-08T00:54:42.567471" elapsed="0.000435"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:42.567436" elapsed="0.000670"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:54:42.568233" elapsed="0.000036"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:54:42.586090" elapsed="0.000750"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:54:42.587036" elapsed="0.000219"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:54:42.587408" elapsed="0.000130"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:54:42.569069" elapsed="0.018533"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T00:54:41.627246" elapsed="0.960457"/>
</kw>
<msg time="2026-04-08T00:54:42.587770" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:54:41.626639" elapsed="0.961207"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-08T00:54:41.626075" elapsed="0.961874"/>
</kw>
<msg time="2026-04-08T00:54:42.587994" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:54:41.625329" elapsed="0.962716"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:54:42.591291" elapsed="0.000372"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:54:42.592123" elapsed="0.000190"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:54:42.592468" elapsed="0.000103"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:54:42.588393" elapsed="0.004232"/>
</kw>
<msg time="2026-04-08T00:54:42.592723" level="INFO">${output} = </msg>
<var>${output}</var>
<arg>Utils.Run_Command_On_Controller</arg>
<arg>${member_ip}</arg>
<arg>${command}</arg>
<doc>Store current connection index, run keyword returning its result, restore connection in teardown.
Note that in order to avoid "got positional argument after named arguments", it is safer to use positional (not named) arguments on call.</doc>
<status status="PASS" start="2026-04-08T00:54:41.624440" elapsed="0.968309"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:54:42.593402" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:54:42.592955" elapsed="0.000496"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-08T00:54:42.593500" elapsed="0.000037"/>
</return>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-08T00:54:41.623358" elapsed="0.970277"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T00:54:41.623150" elapsed="0.970529"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-08T00:54:39.620041" elapsed="2.973681"/>
</for>
<arg>command=${NODE_STOP_COMMAND}</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Cycle through indices (or all), run command on each.</doc>
<status status="PASS" start="2026-04-08T00:54:39.617676" elapsed="2.976118"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:54:42.594824" level="INFO">${updated_index_list} = [1, 2, 3]</msg>
<var>${updated_index_list}</var>
<arg>@{index_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:54:42.593961" elapsed="0.000889"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${updated_index_list}</arg>
<arg>@{stop_index_list}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:54:42.595005" elapsed="0.000256"/>
</kw>
<if>
<branch type="IF" condition="not ${confirm}">
<return>
<value>${updated_index_list}</value>
<status status="NOT RUN" start="2026-04-08T00:54:42.595474" elapsed="0.000023"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:54:42.595348" elapsed="0.000185"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:42.595326" elapsed="0.000230"/>
</if>
<for flavor="IN">
<iter>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:54:42.597632" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:54:42.597330" elapsed="0.000330"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:54:42.598590" level="INFO">${member_ip} = 10.30.170.48</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:54:42.598293" elapsed="0.000325"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:54:42.599553" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

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

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T00:54:42.605694" elapsed="0.000967"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:54:42.608440" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.170.48" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:54:42.607814" elapsed="0.000773"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:54:42.610953" level="INFO">${conn_id} = 251</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:54:42.610166" elapsed="0.000902"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T00:54:42.613854" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T00:54:42.613935" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T00:54:42.613513" elapsed="0.000447"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:54:42.614200" elapsed="0.000362"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T00:54:42.615535" level="INFO">Logging into '10.30.170.48:22' as 'jenkins'.</msg>
<msg time="2026-04-08T00:54:42.924533" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 00:54:39 UTC 2026

  System load:  0.36               Processes:             122
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 7%                 IPv4 address for ens3: 10.30.170.48
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 00:54:40 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-0-builder-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T00:54:42.615155" elapsed="0.309542"/>
</kw>
<msg time="2026-04-08T00:54:42.924784" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:54:42.614788" elapsed="0.310094"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T00:54:42.612606" elapsed="0.312640"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T00:54:42.927059" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-08T00:54:42.949935" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-08T00:54:42.950578" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-08T00:54:42.950995" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T00:54:42.926614" elapsed="0.024689"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:54:42.953918" elapsed="0.001090"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:54:42.957827" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:54:42.956673" elapsed="0.001618"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:54:42.959141" elapsed="0.000053"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:54:42.958725" elapsed="0.000523"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:42.958570" elapsed="0.000744"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T00:54:42.959730" elapsed="0.000061"/>
</return>
<status status="PASS" start="2026-04-08T00:54:42.959483" elapsed="0.000360"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:42.959427" elapsed="0.000493"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:54:42.960014" elapsed="0.000046"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:54:42.964992" elapsed="0.000375"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:54:42.965592" elapsed="0.000170"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:54:42.966114" elapsed="0.000128"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:54:42.961666" elapsed="0.004701"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T00:54:42.601950" elapsed="0.364667"/>
</kw>
<msg time="2026-04-08T00:54:42.967140" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:54:42.601225" elapsed="0.366028"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-08T00:54:42.600661" elapsed="0.366714"/>
</kw>
<msg time="2026-04-08T00:54:42.967435" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:54:42.600021" elapsed="0.367480"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:54:42.971369" elapsed="0.000318"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:54:42.971851" elapsed="0.000143"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:54:42.972141" elapsed="0.000270"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:54:42.967908" elapsed="0.004558"/>
</kw>
<msg time="2026-04-08T00:54:42.972562" level="INFO">${output} = 1</msg>
<var>${output}</var>
<arg>Utils.Run_Command_On_Controller</arg>
<arg>${member_ip}</arg>
<arg>${command}</arg>
<doc>Store current connection index, run keyword returning its result, restore connection in teardown.
Note that in order to avoid "got positional argument after named arguments", it is safer to use positional (not named) arguments on call.</doc>
<status status="PASS" start="2026-04-08T00:54:42.598842" elapsed="0.373745"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:54:42.973036" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:54:42.972785" elapsed="0.000295"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-08T00:54:42.973125" elapsed="0.000033"/>
</return>
<msg time="2026-04-08T00:54:42.973311" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-08T00:54:42.597857" elapsed="0.375480"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-08T00:54:42.973385" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:54:42.973532" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-08T00:54:42.596881" elapsed="0.376676"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-08T00:54:42.974136" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-08T00:54:42.973715" elapsed="0.000520">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-08T00:54:42.596485" elapsed="0.377883">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:54:44.977895" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:54:44.977130" elapsed="0.000832"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:54:44.980039" level="INFO">${member_ip} = 10.30.170.48</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:54:44.979384" elapsed="0.000714"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:54:44.981982" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

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

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T00:54:44.989154" elapsed="0.000799"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:54:44.991503" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.170.48" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:54:44.990904" elapsed="0.000711"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:54:44.993329" level="INFO">${conn_id} = 254</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:54:44.992612" elapsed="0.000816"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T00:54:44.995797" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T00:54:44.995881" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T00:54:44.995509" elapsed="0.000397"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:54:44.996145" elapsed="0.000352"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T00:54:44.997414" level="INFO">Logging into '10.30.170.48:22' as 'jenkins'.</msg>
<msg time="2026-04-08T00:54:45.302054" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 00:54:39 UTC 2026

  System load:  0.36               Processes:             122
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 7%                 IPv4 address for ens3: 10.30.170.48
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 00:54:42 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-0-builder-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T00:54:44.997076" elapsed="0.305155"/>
</kw>
<msg time="2026-04-08T00:54:45.302322" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:54:44.996719" elapsed="0.305700"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T00:54:44.994674" elapsed="0.308049"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T00:54:45.304244" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-08T00:54:45.317123" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-08T00:54:45.317480" level="INFO">${stdout} = 0</msg>
<msg time="2026-04-08T00:54:45.317690" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T00:54:45.303823" elapsed="0.014005"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:54:45.319528" elapsed="0.000854"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:54:45.322306" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:54:45.321475" elapsed="0.001043"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:54:45.323409" elapsed="0.000066"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:54:45.322829" elapsed="0.000744"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:45.322717" elapsed="0.000966"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T00:54:45.324395" elapsed="0.000109"/>
</return>
<status status="PASS" start="2026-04-08T00:54:45.323968" elapsed="0.000638"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:45.323868" elapsed="0.000856"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:54:45.324876" elapsed="0.000074"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:54:45.333324" elapsed="0.000465"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:54:45.334070" elapsed="0.000364"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:54:45.334676" elapsed="0.000146"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:54:45.327347" elapsed="0.007605"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T00:54:44.985678" elapsed="0.349642"/>
</kw>
<msg time="2026-04-08T00:54:45.335828" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:54:44.984983" elapsed="0.350933"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-08T00:54:44.983807" elapsed="0.352222"/>
</kw>
<msg time="2026-04-08T00:54:45.336090" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:54:44.982657" elapsed="0.353526"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:54:45.339720" elapsed="0.000327"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:54:45.340232" elapsed="0.000153"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:54:45.340533" elapsed="0.000099"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:54:45.336610" elapsed="0.004075"/>
</kw>
<msg time="2026-04-08T00:54:45.340779" level="INFO">${output} = 0</msg>
<var>${output}</var>
<arg>Utils.Run_Command_On_Controller</arg>
<arg>${member_ip}</arg>
<arg>${command}</arg>
<doc>Store current connection index, run keyword returning its result, restore connection in teardown.
Note that in order to avoid "got positional argument after named arguments", it is safer to use positional (not named) arguments on call.</doc>
<status status="PASS" start="2026-04-08T00:54:44.980630" elapsed="0.360175"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:54:45.341263" level="INFO">0</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:54:45.340992" elapsed="0.000317"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-08T00:54:45.341353" elapsed="0.000032"/>
</return>
<msg time="2026-04-08T00:54:45.341507" level="INFO">${count} = 0</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-08T00:54:44.978446" elapsed="0.363087"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-08T00:54:45.341579" elapsed="0.000026"/>
</return>
<msg time="2026-04-08T00:54:45.341721" level="INFO">${count} = 0</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-08T00:54:44.976324" elapsed="0.365423"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="PASS" start="2026-04-08T00:54:45.341938" elapsed="0.000448"/>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="PASS" start="2026-04-08T00:54:44.975260" elapsed="0.367197"/>
</kw>
<arg>${timeout}</arg>
<arg>2s</arg>
<arg>Verify_Karaf_Is_Not_Running_On_Member</arg>
<arg>member_index=${index}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-08T00:54:42.595895" elapsed="2.746642"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T00:54:42.595751" elapsed="2.746836"/>
</iter>
<iter>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:54:45.344490" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:54:45.344190" elapsed="0.000327"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:54:45.345424" level="INFO">${member_ip} = 10.30.170.131</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:54:45.345128" elapsed="0.000324"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:54:45.346326" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

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

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T00:54:45.352859" elapsed="0.001243"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:54:45.356084" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.170.131" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:54:45.355379" elapsed="0.000948"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:54:45.358815" level="INFO">${conn_id} = 257</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:54:45.357575" elapsed="0.001364"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T00:54:45.361789" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T00:54:45.361870" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T00:54:45.361493" elapsed="0.000402"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:54:45.362106" elapsed="0.000367"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T00:54:45.363472" level="INFO">Logging into '10.30.170.131:22' as 'jenkins'.</msg>
<msg time="2026-04-08T00:54:45.680923" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 00:54:40 UTC 2026

  System load:  0.88               Processes:             125
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 6%                 IPv4 address for ens3: 10.30.170.131
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 00:54:41 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-0-builder-1 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T00:54:45.363061" elapsed="0.318099"/>
</kw>
<msg time="2026-04-08T00:54:45.681334" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:54:45.362696" elapsed="0.318791"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T00:54:45.360466" elapsed="0.321551"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T00:54:45.683894" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-08T00:54:45.706831" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-08T00:54:45.707399" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-08T00:54:45.707730" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T00:54:45.683507" elapsed="0.024432"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:54:45.710078" elapsed="0.001332"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:54:45.713604" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:54:45.712646" elapsed="0.001185"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:54:45.714938" elapsed="0.000031"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:54:45.714577" elapsed="0.000439"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:45.714054" elapsed="0.001019"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T00:54:45.715444" elapsed="0.000051"/>
</return>
<status status="PASS" start="2026-04-08T00:54:45.715240" elapsed="0.000304"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:45.715188" elapsed="0.000414"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:54:45.715700" elapsed="0.000040"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:54:45.719889" elapsed="0.000350"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:54:45.720451" elapsed="0.000159"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:54:45.720800" elapsed="0.000099"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:54:45.716989" elapsed="0.004018"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T00:54:45.348983" elapsed="0.372270"/>
</kw>
<msg time="2026-04-08T00:54:45.721566" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:54:45.348104" elapsed="0.373534"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-08T00:54:45.347391" elapsed="0.374330"/>
</kw>
<msg time="2026-04-08T00:54:45.721763" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:54:45.346658" elapsed="0.375224"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:54:45.725137" elapsed="0.000427"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:54:45.725728" elapsed="0.000143"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:54:45.726015" elapsed="0.000094"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:54:45.722194" elapsed="0.003983"/>
</kw>
<msg time="2026-04-08T00:54:45.726272" level="INFO">${output} = 1</msg>
<var>${output}</var>
<arg>Utils.Run_Command_On_Controller</arg>
<arg>${member_ip}</arg>
<arg>${command}</arg>
<doc>Store current connection index, run keyword returning its result, restore connection in teardown.
Note that in order to avoid "got positional argument after named arguments", it is safer to use positional (not named) arguments on call.</doc>
<status status="PASS" start="2026-04-08T00:54:45.345665" elapsed="0.380632"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:54:45.726737" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:54:45.726472" elapsed="0.000308"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-08T00:54:45.726822" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:54:45.726974" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-08T00:54:45.344711" elapsed="0.382289"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-08T00:54:45.727047" elapsed="0.000026"/>
</return>
<msg time="2026-04-08T00:54:45.727210" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-08T00:54:45.343831" elapsed="0.383406"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-08T00:54:45.727782" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-08T00:54:45.727392" elapsed="0.000464">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-08T00:54:45.343429" elapsed="0.384543">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:54:47.732405" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:54:47.731144" elapsed="0.001354"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:54:47.735025" level="INFO">${member_ip} = 10.30.170.131</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:54:47.734232" elapsed="0.000858"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:54:47.737049" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

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

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T00:54:47.743290" elapsed="0.000767"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:54:47.745547" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.170.131" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:54:47.744985" elapsed="0.000672"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:54:47.747418" level="INFO">${conn_id} = 260</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:54:47.746619" elapsed="0.000899"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T00:54:47.750425" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T00:54:47.750507" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T00:54:47.750004" elapsed="0.000527"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:54:47.750813" elapsed="0.000381"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T00:54:47.752596" level="INFO">Logging into '10.30.170.131:22' as 'jenkins'.</msg>
<msg time="2026-04-08T00:54:48.062273" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 00:54:40 UTC 2026

  System load:  0.88               Processes:             125
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 6%                 IPv4 address for ens3: 10.30.170.131
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 00:54:45 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-0-builder-1 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T00:54:47.751777" elapsed="0.310650"/>
</kw>
<msg time="2026-04-08T00:54:48.062510" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:54:47.751414" elapsed="0.311185"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T00:54:47.748818" elapsed="0.314071"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T00:54:48.064369" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-08T00:54:48.086556" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-08T00:54:48.087092" level="INFO">${stdout} = 0</msg>
<msg time="2026-04-08T00:54:48.087479" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T00:54:48.063928" elapsed="0.023759"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:54:48.089550" elapsed="0.000557"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:54:48.091528" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:54:48.090890" elapsed="0.000786"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:54:48.092275" elapsed="0.000043"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:54:48.091905" elapsed="0.000494"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:48.091824" elapsed="0.000697"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T00:54:48.093010" elapsed="0.000077"/>
</return>
<status status="PASS" start="2026-04-08T00:54:48.092727" elapsed="0.000427"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:48.092659" elapsed="0.000603"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:54:48.093398" elapsed="0.000059"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:54:48.099692" elapsed="0.000424"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:54:48.100512" elapsed="0.000172"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:54:48.100879" elapsed="0.000108"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:54:48.095211" elapsed="0.005886"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T00:54:47.740276" elapsed="0.361120"/>
</kw>
<msg time="2026-04-08T00:54:48.101752" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:54:47.739561" elapsed="0.362259"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-08T00:54:47.739006" elapsed="0.362910"/>
</kw>
<msg time="2026-04-08T00:54:48.101971" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:54:47.737766" elapsed="0.364262"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:54:48.105550" elapsed="0.000328"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:54:48.106043" elapsed="0.000167"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:54:48.106358" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:54:48.102405" elapsed="0.004172"/>
</kw>
<msg time="2026-04-08T00:54:48.106674" level="INFO">${output} = 0</msg>
<var>${output}</var>
<arg>Utils.Run_Command_On_Controller</arg>
<arg>${member_ip}</arg>
<arg>${command}</arg>
<doc>Store current connection index, run keyword returning its result, restore connection in teardown.
Note that in order to avoid "got positional argument after named arguments", it is safer to use positional (not named) arguments on call.</doc>
<status status="PASS" start="2026-04-08T00:54:47.735658" elapsed="0.371041"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:54:48.107188" level="INFO">0</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:54:48.106896" elapsed="0.000340"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-08T00:54:48.107280" elapsed="0.000032"/>
</return>
<msg time="2026-04-08T00:54:48.107438" level="INFO">${count} = 0</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-08T00:54:47.733027" elapsed="0.374437"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-08T00:54:48.107511" elapsed="0.000026"/>
</return>
<msg time="2026-04-08T00:54:48.107657" level="INFO">${count} = 0</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-08T00:54:47.730079" elapsed="0.377604"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="PASS" start="2026-04-08T00:54:48.107838" elapsed="0.000413"/>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="PASS" start="2026-04-08T00:54:47.728897" elapsed="0.379423"/>
</kw>
<arg>${timeout}</arg>
<arg>2s</arg>
<arg>Verify_Karaf_Is_Not_Running_On_Member</arg>
<arg>member_index=${index}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-08T00:54:45.342843" elapsed="2.765524"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T00:54:45.342691" elapsed="2.765715"/>
</iter>
<iter>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:54:48.110362" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:54:48.110018" elapsed="0.000371"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:54:48.111281" level="INFO">${member_ip} = 10.30.171.110</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:54:48.110992" elapsed="0.000315"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:54:48.112102" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

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

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T00:54:48.117324" elapsed="0.000865"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:54:48.119786" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.110" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:54:48.119122" elapsed="0.000778"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:54:48.121714" level="INFO">${conn_id} = 263</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:54:48.120989" elapsed="0.000835"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T00:54:48.124501" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T00:54:48.124578" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T00:54:48.124202" elapsed="0.000400"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:54:48.124847" elapsed="0.000368"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T00:54:48.126431" level="INFO">Logging into '10.30.171.110:22' as 'jenkins'.</msg>
<msg time="2026-04-08T00:54:48.439173" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 00:54:41 UTC 2026

  System load:  0.7                Processes:             123
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 8%                 IPv4 address for ens3: 10.30.171.110
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 00:54:42 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T00:54:48.125974" elapsed="0.313480"/>
</kw>
<msg time="2026-04-08T00:54:48.439548" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:54:48.125497" elapsed="0.314148"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T00:54:48.123129" elapsed="0.316803"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T00:54:48.441414" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-08T00:54:48.464503" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-08T00:54:48.465014" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-08T00:54:48.465404" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T00:54:48.440994" elapsed="0.024627"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:54:48.468035" elapsed="0.000937"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:54:48.471398" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:54:48.470249" elapsed="0.001382"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:54:48.472332" elapsed="0.000048"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:54:48.471953" elapsed="0.000500"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:48.471857" elapsed="0.000682"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T00:54:48.473116" elapsed="0.000108"/>
</return>
<status status="PASS" start="2026-04-08T00:54:48.472771" elapsed="0.000528"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:48.472680" elapsed="0.000705"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:54:48.473503" elapsed="0.000055"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:54:48.480097" elapsed="0.000366"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:54:48.480676" elapsed="0.000166"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:54:48.481032" elapsed="0.000101"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:54:48.475609" elapsed="0.005653"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T00:54:48.114386" elapsed="0.367100"/>
</kw>
<msg time="2026-04-08T00:54:48.481793" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:54:48.113698" elapsed="0.368158"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-08T00:54:48.113099" elapsed="0.368843"/>
</kw>
<msg time="2026-04-08T00:54:48.481984" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:54:48.112587" elapsed="0.369444"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:54:48.485064" elapsed="0.000476"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:54:48.485710" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:54:48.486009" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:54:48.482351" elapsed="0.003835"/>
</kw>
<msg time="2026-04-08T00:54:48.486426" level="INFO">${output} = 1</msg>
<var>${output}</var>
<arg>Utils.Run_Command_On_Controller</arg>
<arg>${member_ip}</arg>
<arg>${command}</arg>
<doc>Store current connection index, run keyword returning its result, restore connection in teardown.
Note that in order to avoid "got positional argument after named arguments", it is safer to use positional (not named) arguments on call.</doc>
<status status="PASS" start="2026-04-08T00:54:48.111521" elapsed="0.374937"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:54:48.487047" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:54:48.486700" elapsed="0.000395"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-08T00:54:48.487139" elapsed="0.000109"/>
</return>
<msg time="2026-04-08T00:54:48.487378" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-08T00:54:48.110588" elapsed="0.376815"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-08T00:54:48.487449" elapsed="0.000027"/>
</return>
<msg time="2026-04-08T00:54:48.487594" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-08T00:54:48.109665" elapsed="0.377953"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-08T00:54:48.488194" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-08T00:54:48.487776" elapsed="0.000502">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-08T00:54:48.109274" elapsed="0.379123">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:54:50.492190" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:54:50.491376" elapsed="0.000888"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:54:50.494543" level="INFO">${member_ip} = 10.30.171.110</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:54:50.493808" elapsed="0.000797"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:54:50.495982" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

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

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T00:54:50.503175" elapsed="0.000793"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:54:50.505617" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.110" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:54:50.504935" elapsed="0.000802"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:54:50.507689" level="INFO">${conn_id} = 266</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:54:50.506742" elapsed="0.001049"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T00:54:50.510103" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T00:54:50.510198" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T00:54:50.509772" elapsed="0.000453"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:54:50.510436" elapsed="0.000335"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T00:54:50.511696" level="INFO">Logging into '10.30.171.110:22' as 'jenkins'.</msg>
<msg time="2026-04-08T00:54:50.823537" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 00:54:41 UTC 2026

  System load:  0.7                Processes:             123
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 8%                 IPv4 address for ens3: 10.30.171.110
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 00:54:48 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T00:54:50.511375" elapsed="0.312434"/>
</kw>
<msg time="2026-04-08T00:54:50.823889" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:54:50.510993" elapsed="0.312981"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T00:54:50.508956" elapsed="0.315320"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T00:54:50.825706" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-08T00:54:50.848357" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-08T00:54:50.848884" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-08T00:54:50.849267" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T00:54:50.825324" elapsed="0.024166"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:54:50.851663" elapsed="0.000936"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:54:50.854846" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:54:50.853819" elapsed="0.001263"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:54:50.856000" elapsed="0.000066"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:54:50.855470" elapsed="0.000729"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:50.855346" elapsed="0.000986"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T00:54:50.857104" elapsed="0.000154"/>
</return>
<status status="PASS" start="2026-04-08T00:54:50.856655" elapsed="0.000715"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:50.856545" elapsed="0.000957"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:54:50.857680" elapsed="0.000083"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:54:50.863215" elapsed="0.000333"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:54:50.863770" elapsed="0.000165"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:54:50.864128" elapsed="0.000116"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:54:50.860360" elapsed="0.003992"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T00:54:50.498906" elapsed="0.365666"/>
</kw>
<msg time="2026-04-08T00:54:50.864879" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:54:50.497912" elapsed="0.367026"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-08T00:54:50.497136" elapsed="0.367886"/>
</kw>
<msg time="2026-04-08T00:54:50.865063" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:54:50.496423" elapsed="0.368686"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:54:50.868035" elapsed="0.000335"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:54:50.868532" elapsed="0.000144"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:54:50.868822" elapsed="0.000095"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:54:50.865420" elapsed="0.003549"/>
</kw>
<msg time="2026-04-08T00:54:50.869063" level="INFO">${output} = 1</msg>
<var>${output}</var>
<arg>Utils.Run_Command_On_Controller</arg>
<arg>${member_ip}</arg>
<arg>${command}</arg>
<doc>Store current connection index, run keyword returning its result, restore connection in teardown.
Note that in order to avoid "got positional argument after named arguments", it is safer to use positional (not named) arguments on call.</doc>
<status status="PASS" start="2026-04-08T00:54:50.495039" elapsed="0.374050"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:54:50.869536" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:54:50.869286" elapsed="0.000294"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-08T00:54:50.869622" elapsed="0.000027"/>
</return>
<msg time="2026-04-08T00:54:50.869768" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-08T00:54:50.492714" elapsed="0.377078"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-08T00:54:50.869838" elapsed="0.000025"/>
</return>
<msg time="2026-04-08T00:54:50.869978" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-08T00:54:50.490524" elapsed="0.379477"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-08T00:54:50.870841" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-08T00:54:50.870448" elapsed="0.000467">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-08T00:54:50.489273" elapsed="0.381752">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:54:52.874458" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:54:52.873693" elapsed="0.000834"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:54:52.876605" level="INFO">${member_ip} = 10.30.171.110</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:54:52.875947" elapsed="0.000719"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:54:52.878501" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

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

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T00:54:52.885003" elapsed="0.000794"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:54:52.887274" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.110" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:54:52.886721" elapsed="0.000661"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:54:52.889371" level="INFO">${conn_id} = 269</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:54:52.888422" elapsed="0.001054"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T00:54:52.891880" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T00:54:52.891957" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T00:54:52.891595" elapsed="0.000385"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:54:52.892223" elapsed="0.000330"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T00:54:52.893464" level="INFO">Logging into '10.30.171.110:22' as 'jenkins'.</msg>
<msg time="2026-04-08T00:54:53.208881" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 00:54:41 UTC 2026

  System load:  0.7                Processes:             123
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 8%                 IPv4 address for ens3: 10.30.171.110
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 00:54:50 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T00:54:52.893127" elapsed="0.315915"/>
</kw>
<msg time="2026-04-08T00:54:53.209122" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:54:52.892773" elapsed="0.316448"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T00:54:52.890696" elapsed="0.318851"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T00:54:53.210984" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-08T00:54:53.233731" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-08T00:54:53.234493" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-08T00:54:53.234827" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T00:54:53.210593" elapsed="0.024446"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:54:53.237374" elapsed="0.001092"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:54:53.240720" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:54:53.239696" elapsed="0.001257"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:54:53.241916" elapsed="0.000070"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:54:53.241345" elapsed="0.000757"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:53.241216" elapsed="0.001079"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T00:54:53.242649" elapsed="0.000062"/>
</return>
<status status="PASS" start="2026-04-08T00:54:53.242444" elapsed="0.000316"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:53.242397" elapsed="0.000422"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:54:53.242899" elapsed="0.000038"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:54:53.247222" elapsed="0.000348"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:54:53.247797" elapsed="0.000169"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:54:53.248175" elapsed="0.000104"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:54:53.244330" elapsed="0.004221"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T00:54:52.882028" elapsed="0.366755"/>
</kw>
<msg time="2026-04-08T00:54:53.249091" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:54:52.881347" elapsed="0.367921"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-08T00:54:52.880469" elapsed="0.368890"/>
</kw>
<msg time="2026-04-08T00:54:53.249436" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:54:52.879125" elapsed="0.370362"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:54:53.252365" elapsed="0.000319"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:54:53.252848" elapsed="0.000145"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:54:53.253144" elapsed="0.000116"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:54:53.249786" elapsed="0.003526"/>
</kw>
<msg time="2026-04-08T00:54:53.253426" level="INFO">${output} = 1</msg>
<var>${output}</var>
<arg>Utils.Run_Command_On_Controller</arg>
<arg>${member_ip}</arg>
<arg>${command}</arg>
<doc>Store current connection index, run keyword returning its result, restore connection in teardown.
Note that in order to avoid "got positional argument after named arguments", it is safer to use positional (not named) arguments on call.</doc>
<status status="PASS" start="2026-04-08T00:54:52.877232" elapsed="0.376224"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:54:53.253921" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:54:53.253667" elapsed="0.000298"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-08T00:54:53.254006" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:54:53.254244" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-08T00:54:52.875011" elapsed="0.379262"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-08T00:54:53.254324" elapsed="0.000032"/>
</return>
<msg time="2026-04-08T00:54:53.254496" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-08T00:54:52.872865" elapsed="0.381656"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-08T00:54:53.255083" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-08T00:54:53.254679" elapsed="0.000500">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-08T00:54:52.871780" elapsed="0.383518">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:54:55.258817" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:54:55.258045" elapsed="0.000842"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:54:55.261092" level="INFO">${member_ip} = 10.30.171.110</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:54:55.260498" elapsed="0.000653"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:54:55.262913" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

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

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T00:54:55.268695" elapsed="0.000788"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:54:55.270933" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.110" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:54:55.270407" elapsed="0.000635"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:54:55.273036" level="INFO">${conn_id} = 272</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:54:55.272144" elapsed="0.000992"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T00:54:55.275463" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T00:54:55.275539" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T00:54:55.275075" elapsed="0.000487"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:54:55.275767" elapsed="0.000346"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T00:54:55.277025" level="INFO">Logging into '10.30.171.110:22' as 'jenkins'.</msg>
<msg time="2026-04-08T00:54:55.581141" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 00:54:41 UTC 2026

  System load:  0.7                Processes:             123
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 8%                 IPv4 address for ens3: 10.30.171.110
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 00:54:53 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T00:54:55.276706" elapsed="0.304581"/>
</kw>
<msg time="2026-04-08T00:54:55.581363" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:54:55.276351" elapsed="0.305095"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T00:54:55.274327" elapsed="0.307378"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T00:54:55.583111" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-08T00:54:55.605533" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-08T00:54:55.606041" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-08T00:54:55.606425" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T00:54:55.582736" elapsed="0.023900"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:54:55.608838" elapsed="0.000717"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:54:55.610929" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:54:55.610335" elapsed="0.000738"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:54:55.611744" elapsed="0.000043"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:54:55.611342" elapsed="0.000511"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:55.611259" elapsed="0.000673"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T00:54:55.612497" elapsed="0.000074"/>
</return>
<status status="PASS" start="2026-04-08T00:54:55.612134" elapsed="0.000505"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:55.612065" elapsed="0.000671"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:54:55.612851" elapsed="0.000052"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:54:55.618345" elapsed="0.000331"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:54:55.618883" elapsed="0.000161"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:54:55.619265" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:54:55.614647" elapsed="0.004827"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T00:54:55.265694" elapsed="0.353999"/>
</kw>
<msg time="2026-04-08T00:54:55.619993" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:54:55.265009" elapsed="0.355041"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-08T00:54:55.264480" elapsed="0.355653"/>
</kw>
<msg time="2026-04-08T00:54:55.620296" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:54:55.263569" elapsed="0.356775"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:54:55.624879" elapsed="0.000328"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:54:55.625368" elapsed="0.000142"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:54:55.625653" elapsed="0.000094"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:54:55.620630" elapsed="0.005168"/>
</kw>
<msg time="2026-04-08T00:54:55.625888" level="INFO">${output} = 1</msg>
<var>${output}</var>
<arg>Utils.Run_Command_On_Controller</arg>
<arg>${member_ip}</arg>
<arg>${command}</arg>
<doc>Store current connection index, run keyword returning its result, restore connection in teardown.
Note that in order to avoid "got positional argument after named arguments", it is safer to use positional (not named) arguments on call.</doc>
<status status="PASS" start="2026-04-08T00:54:55.261658" elapsed="0.364254"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:54:55.626348" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:54:55.626084" elapsed="0.000308"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-08T00:54:55.626433" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:54:55.626578" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-08T00:54:55.259540" elapsed="0.367063"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-08T00:54:55.626648" elapsed="0.000025"/>
</return>
<msg time="2026-04-08T00:54:55.626786" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-08T00:54:55.257249" elapsed="0.369561"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-08T00:54:55.627379" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-08T00:54:55.626959" elapsed="0.000496">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-08T00:54:55.256137" elapsed="0.371428">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:54:57.631240" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:54:57.630474" elapsed="0.000839"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:54:57.633405" level="INFO">${member_ip} = 10.30.171.110</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:54:57.632696" elapsed="0.000770"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:54:57.634927" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

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

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T00:54:57.642181" elapsed="0.000784"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:54:57.644474" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.110" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:54:57.643915" elapsed="0.000671"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:54:57.646270" level="INFO">${conn_id} = 275</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:54:57.645537" elapsed="0.000834"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T00:54:57.648823" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T00:54:57.648901" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T00:54:57.648544" elapsed="0.000381"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:54:57.649135" elapsed="0.000345"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T00:54:57.650420" level="INFO">Logging into '10.30.171.110:22' as 'jenkins'.</msg>
<msg time="2026-04-08T00:54:57.962596" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 00:54:41 UTC 2026

  System load:  0.7                Processes:             123
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 8%                 IPv4 address for ens3: 10.30.171.110
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 00:54:55 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T00:54:57.650082" elapsed="0.312753"/>
</kw>
<msg time="2026-04-08T00:54:57.962987" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:54:57.649699" elapsed="0.313437"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T00:54:57.647770" elapsed="0.315958"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T00:54:57.966813" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-08T00:54:57.989513" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-08T00:54:57.990019" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-08T00:54:57.990449" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T00:54:57.965968" elapsed="0.024807"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:54:57.992921" elapsed="0.000904"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:54:57.995801" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:54:57.995093" elapsed="0.000853"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:54:57.996531" elapsed="0.000042"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:54:57.996198" elapsed="0.000440"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:57.996095" elapsed="0.000622"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T00:54:57.997214" elapsed="0.000074"/>
</return>
<status status="PASS" start="2026-04-08T00:54:57.996916" elapsed="0.000438"/>
</branch>
<status status="PASS" start="2026-04-08T00:54:57.996849" elapsed="0.000586"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:54:57.997543" elapsed="0.000054"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:54:58.003503" elapsed="0.000336"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:54:58.004138" elapsed="0.000187"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:54:58.004519" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:54:57.999386" elapsed="0.005341"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T00:54:57.637873" elapsed="0.367076"/>
</kw>
<msg time="2026-04-08T00:54:58.005271" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:54:57.636930" elapsed="0.368400"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-08T00:54:57.636191" elapsed="0.369220"/>
</kw>
<msg time="2026-04-08T00:54:58.005452" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:54:57.635463" elapsed="0.370034"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:54:58.008609" elapsed="0.000315"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:54:58.009086" elapsed="0.000190"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:54:58.009423" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:54:58.005780" elapsed="0.003791"/>
</kw>
<msg time="2026-04-08T00:54:58.009661" level="INFO">${output} = 1</msg>
<var>${output}</var>
<arg>Utils.Run_Command_On_Controller</arg>
<arg>${member_ip}</arg>
<arg>${command}</arg>
<doc>Store current connection index, run keyword returning its result, restore connection in teardown.
Note that in order to avoid "got positional argument after named arguments", it is safer to use positional (not named) arguments on call.</doc>
<status status="PASS" start="2026-04-08T00:54:57.634075" elapsed="0.375610"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:54:58.010103" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:54:58.009859" elapsed="0.000287"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-08T00:54:58.010204" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:54:58.010356" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-08T00:54:57.631761" elapsed="0.378620"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-08T00:54:58.010427" elapsed="0.000026"/>
</return>
<msg time="2026-04-08T00:54:58.010599" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-08T00:54:57.629601" elapsed="0.381023"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-08T00:54:58.011195" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-08T00:54:58.010780" elapsed="0.000491">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-08T00:54:57.628432" elapsed="0.382950">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:55:00.014970" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:55:00.014139" elapsed="0.000901"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:55:00.016442" level="INFO">${member_ip} = 10.30.171.110</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:55:00.016040" elapsed="0.000439"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:55:00.017603" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

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

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T00:55:00.024413" elapsed="0.000867"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:55:00.026821" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.110" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:55:00.026272" elapsed="0.000658"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:55:00.028589" level="INFO">${conn_id} = 278</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:55:00.027882" elapsed="0.000805"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T00:55:00.031429" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T00:55:00.031509" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T00:55:00.030909" elapsed="0.000624"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:55:00.031740" elapsed="0.000331"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T00:55:00.032982" level="INFO">Logging into '10.30.171.110:22' as 'jenkins'.</msg>
<msg time="2026-04-08T00:55:00.342359" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 00:54:41 UTC 2026

  System load:  0.7                Processes:             123
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 8%                 IPv4 address for ens3: 10.30.171.110
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 00:54:57 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T00:55:00.032664" elapsed="0.309834"/>
</kw>
<msg time="2026-04-08T00:55:00.342578" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:55:00.032303" elapsed="0.310368"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T00:55:00.030045" elapsed="0.313101"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T00:55:00.344758" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-08T00:55:00.367265" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-08T00:55:00.367787" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-08T00:55:00.368116" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T00:55:00.344318" elapsed="0.024056"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:55:00.370526" elapsed="0.000954"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:55:00.373688" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:55:00.372699" elapsed="0.001220"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:55:00.374841" elapsed="0.000069"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:55:00.374310" elapsed="0.000729"/>
</branch>
<status status="PASS" start="2026-04-08T00:55:00.374146" elapsed="0.001059"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T00:55:00.376039" elapsed="0.000288"/>
</return>
<status status="PASS" start="2026-04-08T00:55:00.375558" elapsed="0.000892"/>
</branch>
<status status="PASS" start="2026-04-08T00:55:00.375442" elapsed="0.001147"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:55:00.376777" elapsed="0.000088"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:55:00.382433" elapsed="0.000330"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:55:00.382985" elapsed="0.000162"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:55:00.383359" elapsed="0.000103"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:55:00.379523" elapsed="0.004046"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T00:55:00.020611" elapsed="0.363183"/>
</kw>
<msg time="2026-04-08T00:55:00.384247" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:55:00.019663" elapsed="0.364646"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-08T00:55:00.018879" elapsed="0.365513"/>
</kw>
<msg time="2026-04-08T00:55:00.384434" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:55:00.017995" elapsed="0.366485"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:55:00.387345" elapsed="0.000309"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:55:00.387815" elapsed="0.000144"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:55:00.388105" elapsed="0.000199"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:55:00.384770" elapsed="0.003587"/>
</kw>
<msg time="2026-04-08T00:55:00.388448" level="INFO">${output} = 1</msg>
<var>${output}</var>
<arg>Utils.Run_Command_On_Controller</arg>
<arg>${member_ip}</arg>
<arg>${command}</arg>
<doc>Store current connection index, run keyword returning its result, restore connection in teardown.
Note that in order to avoid "got positional argument after named arguments", it is safer to use positional (not named) arguments on call.</doc>
<status status="PASS" start="2026-04-08T00:55:00.016780" elapsed="0.371694"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:55:00.388899" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:55:00.388652" elapsed="0.000292"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-08T00:55:00.388985" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:55:00.389135" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-08T00:55:00.015467" elapsed="0.373709"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-08T00:55:00.389225" elapsed="0.000026"/>
</return>
<msg time="2026-04-08T00:55:00.389370" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-08T00:55:00.013317" elapsed="0.376078"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-08T00:55:00.390036" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-08T00:55:00.389548" elapsed="0.000563">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-08T00:55:00.012228" elapsed="0.378014">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:55:02.393855" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:55:02.393060" elapsed="0.000865"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:55:02.396037" level="INFO">${member_ip} = 10.30.171.110</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:55:02.395435" elapsed="0.000661"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:55:02.397916" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

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

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T00:55:02.405072" elapsed="0.000890"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:55:02.407645" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.110" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:55:02.406985" elapsed="0.000775"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:55:02.409680" level="INFO">${conn_id} = 281</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:55:02.408809" elapsed="0.000994"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T00:55:02.412792" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T00:55:02.412874" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T00:55:02.412475" elapsed="0.000424"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:55:02.413117" elapsed="0.000394"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T00:55:02.414516" level="INFO">Logging into '10.30.171.110:22' as 'jenkins'.</msg>
<msg time="2026-04-08T00:55:02.730808" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 00:54:41 UTC 2026

  System load:  0.7                Processes:             123
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 8%                 IPv4 address for ens3: 10.30.171.110
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 00:55:00 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T00:55:02.414145" elapsed="0.316813"/>
</kw>
<msg time="2026-04-08T00:55:02.731051" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:55:02.413738" elapsed="0.317414"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T00:55:02.411645" elapsed="0.319818"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T00:55:02.732925" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-08T00:55:02.755400" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-08T00:55:02.755903" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-08T00:55:02.756279" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T00:55:02.732528" elapsed="0.023960"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:55:02.758674" elapsed="0.000801"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:55:02.760849" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:55:02.760251" elapsed="0.000740"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:55:02.761581" elapsed="0.000042"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:55:02.761253" elapsed="0.000434"/>
</branch>
<status status="PASS" start="2026-04-08T00:55:02.761135" elapsed="0.000630"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T00:55:02.762329" elapsed="0.000071"/>
</return>
<status status="PASS" start="2026-04-08T00:55:02.761963" elapsed="0.000503"/>
</branch>
<status status="PASS" start="2026-04-08T00:55:02.761896" elapsed="0.000649"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:55:02.762760" elapsed="0.000057"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:55:02.768639" elapsed="0.000470"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:55:02.769442" elapsed="0.000219"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:55:02.769920" elapsed="0.000136"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:55:02.764546" elapsed="0.005822"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T00:55:02.401410" elapsed="0.369284"/>
</kw>
<msg time="2026-04-08T00:55:02.771109" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:55:02.400388" elapsed="0.370819"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-08T00:55:02.399749" elapsed="0.371580"/>
</kw>
<msg time="2026-04-08T00:55:02.771385" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:55:02.398685" elapsed="0.372771"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:55:02.775507" elapsed="0.000309"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:55:02.775978" elapsed="0.000142"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:55:02.776282" elapsed="0.000096"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:55:02.771948" elapsed="0.004482"/>
</kw>
<msg time="2026-04-08T00:55:02.776523" level="INFO">${output} = 1</msg>
<var>${output}</var>
<arg>Utils.Run_Command_On_Controller</arg>
<arg>${member_ip}</arg>
<arg>${command}</arg>
<doc>Store current connection index, run keyword returning its result, restore connection in teardown.
Note that in order to avoid "got positional argument after named arguments", it is safer to use positional (not named) arguments on call.</doc>
<status status="PASS" start="2026-04-08T00:55:02.396601" elapsed="0.379947"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:55:02.776975" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:55:02.776721" elapsed="0.000298"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-08T00:55:02.777060" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:55:02.777239" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-08T00:55:02.394496" elapsed="0.382770"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-08T00:55:02.777314" elapsed="0.000026"/>
</return>
<msg time="2026-04-08T00:55:02.777458" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-08T00:55:02.392250" elapsed="0.385233"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-08T00:55:02.778024" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-08T00:55:02.777640" elapsed="0.000456">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-08T00:55:02.391139" elapsed="0.387449">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:55:04.782870" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:55:04.781870" elapsed="0.001077"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:55:04.785347" level="INFO">${member_ip} = 10.30.171.110</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:55:04.784515" elapsed="0.000909"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:55:04.787817" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

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

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T00:55:04.794593" elapsed="0.000838"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:55:04.796924" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.110" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:55:04.796379" elapsed="0.000658"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:55:04.798999" level="INFO">${conn_id} = 284</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:55:04.798046" elapsed="0.001054"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T00:55:04.801508" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T00:55:04.801589" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T00:55:04.801081" elapsed="0.000533"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:55:04.801829" elapsed="0.000444"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T00:55:04.803238" level="INFO">Logging into '10.30.171.110:22' as 'jenkins'.</msg>
<msg time="2026-04-08T00:55:05.132550" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 00:54:41 UTC 2026

  System load:  0.7                Processes:             123
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 8%                 IPv4 address for ens3: 10.30.171.110
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 00:55:02 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T00:55:04.802865" elapsed="0.329854"/>
</kw>
<msg time="2026-04-08T00:55:05.132808" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:55:04.802500" elapsed="0.330405"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T00:55:04.800307" elapsed="0.332910"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T00:55:05.134688" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-08T00:55:05.157080" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-08T00:55:05.157668" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-08T00:55:05.157995" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T00:55:05.134297" elapsed="0.023958"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:55:05.160432" elapsed="0.000908"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:55:05.163680" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:55:05.162571" elapsed="0.001337"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:55:05.164873" elapsed="0.000066"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:55:05.164366" elapsed="0.000676"/>
</branch>
<status status="PASS" start="2026-04-08T00:55:05.164232" elapsed="0.000961"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T00:55:05.166029" elapsed="0.000117"/>
</return>
<status status="PASS" start="2026-04-08T00:55:05.165517" elapsed="0.000861"/>
</branch>
<status status="PASS" start="2026-04-08T00:55:05.165410" elapsed="0.001049"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:55:05.166568" elapsed="0.000052"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:55:05.172533" elapsed="0.000459"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:55:05.173307" elapsed="0.000222"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:55:05.173847" elapsed="0.000142"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:55:05.168334" elapsed="0.005806"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T00:55:04.791552" elapsed="0.382945"/>
</kw>
<msg time="2026-04-08T00:55:05.174928" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:55:04.790825" elapsed="0.384186"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-08T00:55:04.790068" elapsed="0.385045"/>
</kw>
<msg time="2026-04-08T00:55:05.175173" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:55:04.788650" elapsed="0.386577"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:55:05.178123" elapsed="0.000424"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:55:05.178710" elapsed="0.000143"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:55:05.179000" elapsed="0.000095"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:55:05.175520" elapsed="0.003627"/>
</kw>
<msg time="2026-04-08T00:55:05.179536" level="INFO">${output} = 1</msg>
<var>${output}</var>
<arg>Utils.Run_Command_On_Controller</arg>
<arg>${member_ip}</arg>
<arg>${command}</arg>
<doc>Store current connection index, run keyword returning its result, restore connection in teardown.
Note that in order to avoid "got positional argument after named arguments", it is safer to use positional (not named) arguments on call.</doc>
<status status="PASS" start="2026-04-08T00:55:04.785952" elapsed="0.393612"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:55:05.180001" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:55:05.179747" elapsed="0.000299"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-08T00:55:05.180088" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:55:05.180260" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-08T00:55:04.783486" elapsed="0.396799"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-08T00:55:05.180333" elapsed="0.000027"/>
</return>
<msg time="2026-04-08T00:55:05.180478" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-08T00:55:04.780874" elapsed="0.399697"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-08T00:55:05.181127" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-08T00:55:05.180733" elapsed="0.000482">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-08T00:55:04.779685" elapsed="0.401639">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:55:07.184886" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:55:07.184118" elapsed="0.000835"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:55:07.186965" level="INFO">${member_ip} = 10.30.171.110</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:55:07.186362" elapsed="0.000662"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:55:07.188955" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

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

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T00:55:07.196090" elapsed="0.000954"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:55:07.198605" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.110" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:55:07.198003" elapsed="0.000713"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:55:07.200619" level="INFO">${conn_id} = 287</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:55:07.199667" elapsed="0.001053"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T00:55:07.203086" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T00:55:07.203177" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T00:55:07.202804" elapsed="0.000399"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:55:07.203410" elapsed="0.000358"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T00:55:07.204682" level="INFO">Logging into '10.30.171.110:22' as 'jenkins'.</msg>
<msg time="2026-04-08T00:55:07.518221" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 00:54:41 UTC 2026

  System load:  0.7                Processes:             123
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 8%                 IPv4 address for ens3: 10.30.171.110
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 00:55:05 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T00:55:07.204363" elapsed="0.314148"/>
</kw>
<msg time="2026-04-08T00:55:07.518618" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:55:07.203990" elapsed="0.314741"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T00:55:07.201908" elapsed="0.317196"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T00:55:07.521294" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-08T00:55:07.543847" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-08T00:55:07.544469" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-08T00:55:07.544827" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T00:55:07.520688" elapsed="0.024350"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:55:07.547237" elapsed="0.001068"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:55:07.549783" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:55:07.549129" elapsed="0.000803"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:55:07.550556" elapsed="0.000042"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:55:07.550217" elapsed="0.000448"/>
</branch>
<status status="PASS" start="2026-04-08T00:55:07.550081" elapsed="0.000666"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T00:55:07.551300" elapsed="0.000087"/>
</return>
<status status="PASS" start="2026-04-08T00:55:07.550950" elapsed="0.000513"/>
</branch>
<status status="PASS" start="2026-04-08T00:55:07.550882" elapsed="0.000666"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:55:07.551664" elapsed="0.000054"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:55:07.557626" elapsed="0.000725"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:55:07.558657" elapsed="0.000221"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:55:07.559144" elapsed="0.000162"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:55:07.553529" elapsed="0.005928"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T00:55:07.191925" elapsed="0.367845"/>
</kw>
<msg time="2026-04-08T00:55:07.560321" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:55:07.190890" elapsed="0.369521"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-08T00:55:07.190136" elapsed="0.370399"/>
</kw>
<msg time="2026-04-08T00:55:07.560576" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:55:07.189437" elapsed="0.371185"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:55:07.563614" elapsed="0.000308"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:55:07.564101" elapsed="0.000158"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:55:07.564406" elapsed="0.000095"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:55:07.560982" elapsed="0.003570"/>
</kw>
<msg time="2026-04-08T00:55:07.564642" level="INFO">${output} = 1</msg>
<var>${output}</var>
<arg>Utils.Run_Command_On_Controller</arg>
<arg>${member_ip}</arg>
<arg>${command}</arg>
<doc>Store current connection index, run keyword returning its result, restore connection in teardown.
Note that in order to avoid "got positional argument after named arguments", it is safer to use positional (not named) arguments on call.</doc>
<status status="PASS" start="2026-04-08T00:55:07.187533" elapsed="0.377134"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:55:07.565085" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:55:07.564839" elapsed="0.000291"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-08T00:55:07.565198" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:55:07.565351" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-08T00:55:07.185431" elapsed="0.379945"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-08T00:55:07.565421" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:55:07.565568" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-08T00:55:07.183282" elapsed="0.382310"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-08T00:55:07.566248" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-08T00:55:07.565790" elapsed="0.000535">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-08T00:55:07.182128" elapsed="0.384308">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:55:09.570094" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:55:09.569196" elapsed="0.001020"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:55:09.571612" level="INFO">${member_ip} = 10.30.171.110</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:55:09.571230" elapsed="0.000419"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:55:09.572764" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

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

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T00:55:09.579677" elapsed="0.001086"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:55:09.582854" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.110" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:55:09.582076" elapsed="0.000886"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:55:09.584778" level="INFO">${conn_id} = 290</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:55:09.583884" elapsed="0.000990"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T00:55:09.587144" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T00:55:09.587238" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T00:55:09.586862" elapsed="0.000400"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:55:09.587468" elapsed="0.000334"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T00:55:09.588717" level="INFO">Logging into '10.30.171.110:22' as 'jenkins'.</msg>
<msg time="2026-04-08T00:55:09.895433" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 00:54:41 UTC 2026

  System load:  0.7                Processes:             123
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 8%                 IPv4 address for ens3: 10.30.171.110
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 00:55:07 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T00:55:09.588391" elapsed="0.307179"/>
</kw>
<msg time="2026-04-08T00:55:09.895646" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:55:09.588019" elapsed="0.307709"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T00:55:09.586048" elapsed="0.309946"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T00:55:09.897428" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-08T00:55:09.919370" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-08T00:55:09.919865" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-08T00:55:09.920255" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T00:55:09.897035" elapsed="0.023455"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:55:09.922634" elapsed="0.000887"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:55:09.925787" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:55:09.924763" elapsed="0.001257"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:55:09.926944" elapsed="0.000068"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:55:09.926438" elapsed="0.000678"/>
</branch>
<status status="PASS" start="2026-04-08T00:55:09.926310" elapsed="0.000993"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T00:55:09.928086" elapsed="0.000171"/>
</return>
<status status="PASS" start="2026-04-08T00:55:09.927636" elapsed="0.000755"/>
</branch>
<status status="PASS" start="2026-04-08T00:55:09.927528" elapsed="0.000996"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:55:09.928708" elapsed="0.000087"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:55:09.933960" elapsed="0.000377"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:55:09.934558" elapsed="0.000162"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:55:09.934912" elapsed="0.000101"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:55:09.931077" elapsed="0.004043"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T00:55:09.575622" elapsed="0.359740"/>
</kw>
<msg time="2026-04-08T00:55:09.935670" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:55:09.574676" elapsed="0.361053"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-08T00:55:09.573882" elapsed="0.361930"/>
</kw>
<msg time="2026-04-08T00:55:09.935853" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:55:09.573175" elapsed="0.362724"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:55:09.940505" elapsed="0.000330"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:55:09.941002" elapsed="0.000149"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:55:09.941394" elapsed="0.000106"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:55:09.936214" elapsed="0.005340"/>
</kw>
<msg time="2026-04-08T00:55:09.941646" level="INFO">${output} = 1</msg>
<var>${output}</var>
<arg>Utils.Run_Command_On_Controller</arg>
<arg>${member_ip}</arg>
<arg>${command}</arg>
<doc>Store current connection index, run keyword returning its result, restore connection in teardown.
Note that in order to avoid "got positional argument after named arguments", it is safer to use positional (not named) arguments on call.</doc>
<status status="PASS" start="2026-04-08T00:55:09.571945" elapsed="0.369728"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:55:09.942105" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:55:09.941851" elapsed="0.000299"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-08T00:55:09.942210" elapsed="0.000047"/>
</return>
<msg time="2026-04-08T00:55:09.942383" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-08T00:55:09.570641" elapsed="0.371768"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-08T00:55:09.942455" elapsed="0.000026"/>
</return>
<msg time="2026-04-08T00:55:09.942602" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-08T00:55:09.568354" elapsed="0.374273"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-08T00:55:09.943216" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-08T00:55:09.942782" elapsed="0.000511">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-08T00:55:09.567262" elapsed="0.376140">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:55:11.947222" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:55:11.946396" elapsed="0.000901"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:55:11.949890" level="INFO">${member_ip} = 10.30.171.110</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:55:11.949126" elapsed="0.000849"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:55:11.951871" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

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

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T00:55:11.959728" elapsed="0.001204"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:55:11.963173" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.110" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:55:11.962355" elapsed="0.001022"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:55:11.965218" level="INFO">${conn_id} = 293</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:55:11.964456" elapsed="0.000863"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T00:55:11.967880" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T00:55:11.967960" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T00:55:11.967546" elapsed="0.000438"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:55:11.968221" elapsed="0.000363"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T00:55:11.969655" level="INFO">Logging into '10.30.171.110:22' as 'jenkins'.</msg>
<msg time="2026-04-08T00:55:12.288937" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 00:54:41 UTC 2026

  System load:  0.7                Processes:             123
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 8%                 IPv4 address for ens3: 10.30.171.110
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 00:55:09 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T00:55:11.969293" elapsed="0.319920"/>
</kw>
<msg time="2026-04-08T00:55:12.289370" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:55:11.968811" elapsed="0.320719"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T00:55:11.966720" elapsed="0.323349"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T00:55:12.293323" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-08T00:55:12.317115" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-08T00:55:12.317538" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-08T00:55:12.317759" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T00:55:12.292377" elapsed="0.025522"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:55:12.319383" elapsed="0.000668"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:55:12.321577" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:55:12.320889" elapsed="0.000870"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:55:12.322432" elapsed="0.000044"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:55:12.321995" elapsed="0.000550"/>
</branch>
<status status="PASS" start="2026-04-08T00:55:12.321913" elapsed="0.000730"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T00:55:12.323199" elapsed="0.000085"/>
</return>
<status status="PASS" start="2026-04-08T00:55:12.322880" elapsed="0.000473"/>
</branch>
<status status="PASS" start="2026-04-08T00:55:12.322809" elapsed="0.000629"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:55:12.323577" elapsed="0.000057"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:55:12.330625" elapsed="0.000342"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:55:12.331193" elapsed="0.000168"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:55:12.331573" elapsed="0.000104"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:55:12.325506" elapsed="0.006278"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T00:55:11.954938" elapsed="0.377068"/>
</kw>
<msg time="2026-04-08T00:55:12.332328" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:55:11.953974" elapsed="0.378416"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-08T00:55:11.953199" elapsed="0.379275"/>
</kw>
<msg time="2026-04-08T00:55:12.332515" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:55:11.952297" elapsed="0.380263"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:55:12.335711" elapsed="0.000319"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:55:12.336213" elapsed="0.000148"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:55:12.336510" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:55:12.332847" elapsed="0.003813"/>
</kw>
<msg time="2026-04-08T00:55:12.336753" level="INFO">${output} = 1</msg>
<var>${output}</var>
<arg>Utils.Run_Command_On_Controller</arg>
<arg>${member_ip}</arg>
<arg>${command}</arg>
<doc>Store current connection index, run keyword returning its result, restore connection in teardown.
Note that in order to avoid "got positional argument after named arguments", it is safer to use positional (not named) arguments on call.</doc>
<status status="PASS" start="2026-04-08T00:55:11.950644" elapsed="0.386134"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:55:12.337229" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:55:12.336955" elapsed="0.000327"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-08T00:55:12.337325" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:55:12.337480" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-08T00:55:11.948030" elapsed="0.389475"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-08T00:55:12.337553" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:55:12.337698" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-08T00:55:11.945524" elapsed="0.392200"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-08T00:55:12.338315" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-08T00:55:12.337879" elapsed="0.000513">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-08T00:55:11.944435" elapsed="0.394072">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:55:14.342183" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:55:14.341398" elapsed="0.000858"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:55:14.344317" level="INFO">${member_ip} = 10.30.171.110</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:55:14.343651" elapsed="0.000730"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:55:14.346016" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

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

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T00:55:14.353265" elapsed="0.001107"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:55:14.356445" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.110" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:55:14.355674" elapsed="0.000972"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:55:14.358668" level="INFO">${conn_id} = 296</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:55:14.357888" elapsed="0.000883"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T00:55:14.361327" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T00:55:14.361425" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T00:55:14.360995" elapsed="0.000460"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:55:14.361681" elapsed="0.000336"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T00:55:14.363108" level="INFO">Logging into '10.30.171.110:22' as 'jenkins'.</msg>
<msg time="2026-04-08T00:55:14.692883" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 00:54:41 UTC 2026

  System load:  0.7                Processes:             123
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 8%                 IPv4 address for ens3: 10.30.171.110
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 00:55:12 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T00:55:14.362782" elapsed="0.330266"/>
</kw>
<msg time="2026-04-08T00:55:14.693136" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:55:14.362420" elapsed="0.330837"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T00:55:14.360183" elapsed="0.333369"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T00:55:14.695008" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-08T00:55:14.717721" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-08T00:55:14.718273" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-08T00:55:14.718609" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T00:55:14.694618" elapsed="0.024203"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:55:14.721109" elapsed="0.000930"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:55:14.724299" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:55:14.723311" elapsed="0.001220"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:55:14.725462" elapsed="0.000065"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:55:14.724907" elapsed="0.000723"/>
</branch>
<status status="PASS" start="2026-04-08T00:55:14.724780" elapsed="0.000974"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T00:55:14.726559" elapsed="0.000113"/>
</return>
<status status="PASS" start="2026-04-08T00:55:14.726071" elapsed="0.000709"/>
</branch>
<status status="PASS" start="2026-04-08T00:55:14.725964" elapsed="0.000944"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:55:14.727083" elapsed="0.000238"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:55:14.732885" elapsed="0.000348"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:55:14.733510" elapsed="0.000165"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:55:14.733868" elapsed="0.000099"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:55:14.729908" elapsed="0.004166"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T00:55:14.349127" elapsed="0.385181"/>
</kw>
<msg time="2026-04-08T00:55:14.734612" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:55:14.348135" elapsed="0.386541"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-08T00:55:14.347393" elapsed="0.387369"/>
</kw>
<msg time="2026-04-08T00:55:14.734805" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:55:14.346649" elapsed="0.388202"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:55:14.737764" elapsed="0.000309"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:55:14.738250" elapsed="0.000143"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:55:14.738538" elapsed="0.000095"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:55:14.735139" elapsed="0.003546"/>
</kw>
<msg time="2026-04-08T00:55:14.738777" level="INFO">${output} = 1</msg>
<var>${output}</var>
<arg>Utils.Run_Command_On_Controller</arg>
<arg>${member_ip}</arg>
<arg>${command}</arg>
<doc>Store current connection index, run keyword returning its result, restore connection in teardown.
Note that in order to avoid "got positional argument after named arguments", it is safer to use positional (not named) arguments on call.</doc>
<status status="PASS" start="2026-04-08T00:55:14.344945" elapsed="0.393857"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:55:14.739322" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:55:14.738981" elapsed="0.000386"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-08T00:55:14.739410" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:55:14.739561" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-08T00:55:14.342709" elapsed="0.396878"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-08T00:55:14.739633" elapsed="0.000026"/>
</return>
<msg time="2026-04-08T00:55:14.739777" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-08T00:55:14.340522" elapsed="0.399279"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-08T00:55:14.740360" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-08T00:55:14.739954" elapsed="0.000482">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-08T00:55:14.339351" elapsed="0.401195">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:55:16.744148" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:55:16.743384" elapsed="0.000866"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:55:16.746322" level="INFO">${member_ip} = 10.30.171.110</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:55:16.745638" elapsed="0.000746"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:55:16.748135" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

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

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T00:55:16.754704" elapsed="0.000789"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:55:16.756946" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.110" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:55:16.756416" elapsed="0.000642"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:55:16.758743" level="INFO">${conn_id} = 299</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:55:16.758037" elapsed="0.000803"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T00:55:16.761364" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T00:55:16.761441" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T00:55:16.760979" elapsed="0.000486"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:55:16.761674" elapsed="0.000364"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T00:55:16.762953" level="INFO">Logging into '10.30.171.110:22' as 'jenkins'.</msg>
<msg time="2026-04-08T00:55:17.123349" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 00:54:41 UTC 2026

  System load:  0.7                Processes:             123
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 8%                 IPv4 address for ens3: 10.30.171.110
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 00:55:14 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T00:55:16.762628" elapsed="0.360907"/>
</kw>
<msg time="2026-04-08T00:55:17.123619" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:55:16.762272" elapsed="0.361467"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T00:55:16.760217" elapsed="0.363829"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T00:55:17.125531" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-08T00:55:17.148228" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-08T00:55:17.148751" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-08T00:55:17.149082" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T00:55:17.125096" elapsed="0.024305"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:55:17.151656" elapsed="0.000965"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:55:17.155201" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:55:17.154104" elapsed="0.001337"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:55:17.156417" elapsed="0.000069"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:55:17.155861" elapsed="0.000729"/>
</branch>
<status status="PASS" start="2026-04-08T00:55:17.155727" elapsed="0.000992"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T00:55:17.157657" elapsed="0.000125"/>
</return>
<status status="PASS" start="2026-04-08T00:55:17.157048" elapsed="0.000873"/>
</branch>
<status status="PASS" start="2026-04-08T00:55:17.156939" elapsed="0.001502"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:55:17.158648" elapsed="0.000075"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:55:17.164819" elapsed="0.000530"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:55:17.165651" elapsed="0.000228"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:55:17.166364" elapsed="0.000190"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:55:17.160677" elapsed="0.006068"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T00:55:16.751643" elapsed="0.415483"/>
</kw>
<msg time="2026-04-08T00:55:17.167821" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:55:16.750941" elapsed="0.416980"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-08T00:55:16.749998" elapsed="0.418063"/>
</kw>
<msg time="2026-04-08T00:55:17.168129" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:55:16.748796" elapsed="0.419432"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:55:17.172578" elapsed="0.000372"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:55:17.173176" elapsed="0.000174"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:55:17.173530" elapsed="0.000112"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:55:17.168718" elapsed="0.004982"/>
</kw>
<msg time="2026-04-08T00:55:17.173808" level="INFO">${output} = 1</msg>
<var>${output}</var>
<arg>Utils.Run_Command_On_Controller</arg>
<arg>${member_ip}</arg>
<arg>${command}</arg>
<doc>Store current connection index, run keyword returning its result, restore connection in teardown.
Note that in order to avoid "got positional argument after named arguments", it is safer to use positional (not named) arguments on call.</doc>
<status status="PASS" start="2026-04-08T00:55:16.746862" elapsed="0.426973"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:55:17.174458" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:55:17.174106" elapsed="0.000406"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-08T00:55:17.174560" elapsed="0.000038"/>
</return>
<msg time="2026-04-08T00:55:17.174752" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-08T00:55:16.744699" elapsed="0.430082"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-08T00:55:17.174835" elapsed="0.000034"/>
</return>
<msg time="2026-04-08T00:55:17.175021" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-08T00:55:16.742518" elapsed="0.432533"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-08T00:55:17.175717" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-08T00:55:17.175264" elapsed="0.000546">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-08T00:55:16.741403" elapsed="0.434549">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:55:19.179423" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:55:19.178608" elapsed="0.000883"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:55:19.180898" level="INFO">${member_ip} = 10.30.171.110</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:55:19.180497" elapsed="0.000441"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:55:19.182114" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

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

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T00:55:19.189682" elapsed="0.001187"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:55:19.192702" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.110" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:55:19.192142" elapsed="0.000672"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:55:19.194859" level="INFO">${conn_id} = 302</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:55:19.193880" elapsed="0.001076"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T00:55:19.197197" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T00:55:19.197276" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T00:55:19.196892" elapsed="0.000408"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:55:19.197522" elapsed="0.000348"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T00:55:19.198950" level="INFO">Logging into '10.30.171.110:22' as 'jenkins'.</msg>
<msg time="2026-04-08T00:55:19.516021" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 00:54:41 UTC 2026

  System load:  0.7                Processes:             123
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 8%                 IPv4 address for ens3: 10.30.171.110
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 00:55:17 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T00:55:19.198609" elapsed="0.317609"/>
</kw>
<msg time="2026-04-08T00:55:19.516313" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:55:19.198088" elapsed="0.318333"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T00:55:19.196119" elapsed="0.320612"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T00:55:19.518313" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-08T00:55:19.541257" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-08T00:55:19.541801" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-08T00:55:19.542144" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T00:55:19.517866" elapsed="0.024613"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:55:19.544353" elapsed="0.000431"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:55:19.545897" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:55:19.545381" elapsed="0.000621"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:55:19.546506" elapsed="0.000034"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:55:19.546224" elapsed="0.000366"/>
</branch>
<status status="PASS" start="2026-04-08T00:55:19.546142" elapsed="0.000505"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T00:55:19.547030" elapsed="0.000069"/>
</return>
<status status="PASS" start="2026-04-08T00:55:19.546807" elapsed="0.000370"/>
</branch>
<status status="PASS" start="2026-04-08T00:55:19.546747" elapsed="0.000518"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:55:19.547393" elapsed="0.000042"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:55:19.551709" elapsed="0.000343"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:55:19.552289" elapsed="0.000175"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:55:19.552657" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:55:19.548735" elapsed="0.004133"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T00:55:19.185139" elapsed="0.367956"/>
</kw>
<msg time="2026-04-08T00:55:19.553439" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:55:19.184143" elapsed="0.369372"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-08T00:55:19.183346" elapsed="0.370258"/>
</kw>
<msg time="2026-04-08T00:55:19.553647" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:55:19.182558" elapsed="0.371137"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:55:19.557078" elapsed="0.000391"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:55:19.557656" elapsed="0.000165"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:55:19.557975" elapsed="0.000100"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:55:19.554085" elapsed="0.004043"/>
</kw>
<msg time="2026-04-08T00:55:19.558244" level="INFO">${output} = 1</msg>
<var>${output}</var>
<arg>Utils.Run_Command_On_Controller</arg>
<arg>${member_ip}</arg>
<arg>${command}</arg>
<doc>Store current connection index, run keyword returning its result, restore connection in teardown.
Note that in order to avoid "got positional argument after named arguments", it is safer to use positional (not named) arguments on call.</doc>
<status status="PASS" start="2026-04-08T00:55:19.181277" elapsed="0.377007"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:55:19.558738" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:55:19.558480" elapsed="0.000307"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-08T00:55:19.558834" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:55:19.558988" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-08T00:55:19.179872" elapsed="0.379142"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-08T00:55:19.559062" elapsed="0.000026"/>
</return>
<msg time="2026-04-08T00:55:19.559415" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-08T00:55:19.177791" elapsed="0.381652"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-08T00:55:19.560010" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-08T00:55:19.559604" elapsed="0.000487">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-08T00:55:19.176771" elapsed="0.383460">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:55:21.563717" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:55:21.562927" elapsed="0.000858"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:55:21.565897" level="INFO">${member_ip} = 10.30.171.110</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:55:21.565291" elapsed="0.000666"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:55:21.567758" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

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

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T00:55:21.574138" elapsed="0.000798"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:55:21.576462" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.110" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:55:21.575884" elapsed="0.000691"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:55:21.578456" level="INFO">${conn_id} = 305</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:55:21.577543" elapsed="0.001010"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T00:55:21.580798" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T00:55:21.580880" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T00:55:21.580514" elapsed="0.000390"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:55:21.581109" elapsed="0.000508"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T00:55:21.582530" level="INFO">Logging into '10.30.171.110:22' as 'jenkins'.</msg>
<msg time="2026-04-08T00:55:21.920404" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 00:54:41 UTC 2026

  System load:  0.7                Processes:             123
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 8%                 IPv4 address for ens3: 10.30.171.110
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 00:55:19 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T00:55:21.582209" elapsed="0.338347"/>
</kw>
<msg time="2026-04-08T00:55:21.920645" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:55:21.581835" elapsed="0.338912"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T00:55:21.579723" elapsed="0.341267"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T00:55:21.922373" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-08T00:55:21.945471" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-08T00:55:21.945964" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-08T00:55:21.946345" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T00:55:21.921980" elapsed="0.024577"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:55:21.948725" elapsed="0.000891"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:55:21.951844" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:55:21.950811" elapsed="0.001260"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:55:21.952955" elapsed="0.000031"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:55:21.952585" elapsed="0.000449"/>
</branch>
<status status="PASS" start="2026-04-08T00:55:21.952417" elapsed="0.000672"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T00:55:21.953444" elapsed="0.000050"/>
</return>
<status status="PASS" start="2026-04-08T00:55:21.953246" elapsed="0.000294"/>
</branch>
<status status="PASS" start="2026-04-08T00:55:21.953198" elapsed="0.000399"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:55:21.953674" elapsed="0.000037"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:55:21.957784" elapsed="0.000333"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:55:21.958337" elapsed="0.000154"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:55:21.958678" elapsed="0.000099"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:55:21.954921" elapsed="0.003961"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T00:55:21.571151" elapsed="0.387945"/>
</kw>
<msg time="2026-04-08T00:55:21.959426" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:55:21.570471" elapsed="0.389012"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-08T00:55:21.569822" elapsed="0.389741"/>
</kw>
<msg time="2026-04-08T00:55:21.959604" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:55:21.568429" elapsed="0.391221"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:55:21.962585" elapsed="0.000308"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:55:21.963054" elapsed="0.000171"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:55:21.963374" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:55:21.959931" elapsed="0.003590"/>
</kw>
<msg time="2026-04-08T00:55:21.963675" level="INFO">${output} = 1</msg>
<var>${output}</var>
<arg>Utils.Run_Command_On_Controller</arg>
<arg>${member_ip}</arg>
<arg>${command}</arg>
<doc>Store current connection index, run keyword returning its result, restore connection in teardown.
Note that in order to avoid "got positional argument after named arguments", it is safer to use positional (not named) arguments on call.</doc>
<status status="PASS" start="2026-04-08T00:55:21.566464" elapsed="0.397236"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:55:21.964128" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:55:21.963879" elapsed="0.000358"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-08T00:55:21.964281" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:55:21.964433" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-08T00:55:21.564271" elapsed="0.400188"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-08T00:55:21.964528" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:55:21.964679" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-08T00:55:21.562096" elapsed="0.402608"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-08T00:55:21.965265" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-08T00:55:21.964856" elapsed="0.000485">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-08T00:55:21.561054" elapsed="0.404398">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:55:23.968927" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:55:23.968183" elapsed="0.000813"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:55:23.970641" level="INFO">${member_ip} = 10.30.171.110</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:55:23.970253" elapsed="0.000425"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:55:23.971774" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

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

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T00:55:23.978481" elapsed="0.000785"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:55:23.980712" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.110" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:55:23.980185" elapsed="0.000636"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:55:23.982706" level="INFO">${conn_id} = 308</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:55:23.981811" elapsed="0.000994"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T00:55:23.985010" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T00:55:23.985086" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T00:55:23.984723" elapsed="0.000387"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:55:23.985400" elapsed="0.000357"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T00:55:23.986665" level="INFO">Logging into '10.30.171.110:22' as 'jenkins'.</msg>
<msg time="2026-04-08T00:55:24.299192" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 00:54:41 UTC 2026

  System load:  0.7                Processes:             123
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 8%                 IPv4 address for ens3: 10.30.171.110
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 00:55:21 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T00:55:23.986345" elapsed="0.313124"/>
</kw>
<msg time="2026-04-08T00:55:24.299553" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:55:23.985975" elapsed="0.313676"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T00:55:23.983957" elapsed="0.315968"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T00:55:24.301385" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-08T00:55:24.323938" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-08T00:55:24.324534" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-08T00:55:24.324890" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T00:55:24.300981" elapsed="0.024140"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:55:24.327608" elapsed="0.000990"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:55:24.331034" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:55:24.329954" elapsed="0.001364"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:55:24.332250" elapsed="0.000074"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:55:24.331689" elapsed="0.000746"/>
</branch>
<status status="PASS" start="2026-04-08T00:55:24.331558" elapsed="0.001009"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T00:55:24.333421" elapsed="0.000125"/>
</return>
<status status="PASS" start="2026-04-08T00:55:24.332912" elapsed="0.000749"/>
</branch>
<status status="PASS" start="2026-04-08T00:55:24.332795" elapsed="0.001056"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:55:24.334046" elapsed="0.000089"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:55:24.338861" elapsed="0.000345"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:55:24.339414" elapsed="0.000165"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:55:24.339767" elapsed="0.000099"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:55:24.335960" elapsed="0.004018"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T00:55:23.974590" elapsed="0.365628"/>
</kw>
<msg time="2026-04-08T00:55:24.340532" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:55:23.973652" elapsed="0.366941"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-08T00:55:23.972881" elapsed="0.367794"/>
</kw>
<msg time="2026-04-08T00:55:24.340717" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:55:23.972185" elapsed="0.368578"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:55:24.345494" elapsed="0.000335"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:55:24.345992" elapsed="0.000144"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:55:24.346378" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:55:24.341047" elapsed="0.005480"/>
</kw>
<msg time="2026-04-08T00:55:24.346631" level="INFO">${output} = 1</msg>
<var>${output}</var>
<arg>Utils.Run_Command_On_Controller</arg>
<arg>${member_ip}</arg>
<arg>${command}</arg>
<doc>Store current connection index, run keyword returning its result, restore connection in teardown.
Note that in order to avoid "got positional argument after named arguments", it is safer to use positional (not named) arguments on call.</doc>
<status status="PASS" start="2026-04-08T00:55:23.970973" elapsed="0.375683"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:55:24.347077" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:55:24.346832" elapsed="0.000290"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-08T00:55:24.347188" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:55:24.347339" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-08T00:55:23.969472" elapsed="0.377892"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-08T00:55:24.347408" elapsed="0.000025"/>
</return>
<msg time="2026-04-08T00:55:24.347546" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-08T00:55:23.967358" elapsed="0.380212"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-08T00:55:24.348219" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-08T00:55:24.347813" elapsed="0.000482">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-08T00:55:23.966291" elapsed="0.382114">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:55:26.351954" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:55:26.351224" elapsed="0.000797"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:55:26.354279" level="INFO">${member_ip} = 10.30.171.110</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:55:26.353546" elapsed="0.000798"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:55:26.356111" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

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

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T00:55:26.363568" elapsed="0.001237"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:55:26.366903" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.110" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:55:26.366103" elapsed="0.000953"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:55:26.369096" level="INFO">${conn_id} = 311</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:55:26.368373" elapsed="0.000835"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T00:55:26.371662" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T00:55:26.371768" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T00:55:26.371370" elapsed="0.000424"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:55:26.372007" elapsed="0.000504"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T00:55:26.373464" level="INFO">Logging into '10.30.171.110:22' as 'jenkins'.</msg>
<msg time="2026-04-08T00:55:26.696204" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 00:54:41 UTC 2026

  System load:  0.7                Processes:             123
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 8%                 IPv4 address for ens3: 10.30.171.110
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 00:55:24 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T00:55:26.373094" elapsed="0.323276"/>
</kw>
<msg time="2026-04-08T00:55:26.696460" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:55:26.372733" elapsed="0.323825"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T00:55:26.370575" elapsed="0.326276"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T00:55:26.698336" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-08T00:55:26.721625" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-08T00:55:26.722193" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-08T00:55:26.722535" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T00:55:26.697917" elapsed="0.024829"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:55:26.724936" elapsed="0.000890"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:55:26.728061" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:55:26.727114" elapsed="0.001205"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:55:26.729196" elapsed="0.000070"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:55:26.728659" elapsed="0.000712"/>
</branch>
<status status="PASS" start="2026-04-08T00:55:26.728538" elapsed="0.000955"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T00:55:26.730439" elapsed="0.000113"/>
</return>
<status status="PASS" start="2026-04-08T00:55:26.729804" elapsed="0.000852"/>
</branch>
<status status="PASS" start="2026-04-08T00:55:26.729701" elapsed="0.001080"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:55:26.730949" elapsed="0.000125"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:55:26.735887" elapsed="0.000349"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:55:26.736446" elapsed="0.000162"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:55:26.736798" elapsed="0.000100"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:55:26.732925" elapsed="0.004086"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T00:55:26.359423" elapsed="0.377830"/>
</kw>
<msg time="2026-04-08T00:55:26.737562" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:55:26.358429" elapsed="0.379193"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-08T00:55:26.357664" elapsed="0.380040"/>
</kw>
<msg time="2026-04-08T00:55:26.737746" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:55:26.356900" elapsed="0.380891"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:55:26.740692" elapsed="0.000311"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:55:26.741181" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:55:26.741474" elapsed="0.000096"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:55:26.738077" elapsed="0.003544"/>
</kw>
<msg time="2026-04-08T00:55:26.741712" level="INFO">${output} = 1</msg>
<var>${output}</var>
<arg>Utils.Run_Command_On_Controller</arg>
<arg>${member_ip}</arg>
<arg>${command}</arg>
<doc>Store current connection index, run keyword returning its result, restore connection in teardown.
Note that in order to avoid "got positional argument after named arguments", it is safer to use positional (not named) arguments on call.</doc>
<status status="PASS" start="2026-04-08T00:55:26.354845" elapsed="0.386892"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:55:26.742259" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:55:26.741912" elapsed="0.000395"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-08T00:55:26.742348" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:55:26.742497" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-08T00:55:26.352538" elapsed="0.389984"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-08T00:55:26.742567" elapsed="0.000025"/>
</return>
<msg time="2026-04-08T00:55:26.742707" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-08T00:55:26.350324" elapsed="0.392407"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-08T00:55:26.743314" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-08T00:55:26.742884" elapsed="0.000506">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-08T00:55:26.349245" elapsed="0.394256">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:55:28.747013" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:55:28.746273" elapsed="0.000810"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:55:28.749298" level="INFO">${member_ip} = 10.30.171.110</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:55:28.748662" elapsed="0.000697"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:55:28.751103" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

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

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T00:55:28.758506" elapsed="0.000799"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:55:28.760811" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.110" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:55:28.760279" elapsed="0.000642"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:55:28.762570" level="INFO">${conn_id} = 314</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:55:28.761859" elapsed="0.000811"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T00:55:28.765191" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T00:55:28.765271" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T00:55:28.764892" elapsed="0.000404"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:55:28.765506" elapsed="0.000333"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T00:55:28.766760" level="INFO">Logging into '10.30.171.110:22' as 'jenkins'.</msg>
<msg time="2026-04-08T00:55:29.085684" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 00:54:41 UTC 2026

  System load:  0.7                Processes:             123
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 8%                 IPv4 address for ens3: 10.30.171.110
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 00:55:26 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T00:55:28.766435" elapsed="0.319411"/>
</kw>
<msg time="2026-04-08T00:55:29.085934" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:55:28.766058" elapsed="0.319971"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T00:55:28.764059" elapsed="0.322298"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T00:55:29.087837" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-08T00:55:29.110333" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-08T00:55:29.110666" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-08T00:55:29.110873" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T00:55:29.087435" elapsed="0.023571"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:55:29.113251" elapsed="0.000897"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:55:29.116533" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:55:29.115428" elapsed="0.001354"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:55:29.117819" elapsed="0.000074"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:55:29.117139" elapsed="0.000863"/>
</branch>
<status status="PASS" start="2026-04-08T00:55:29.117011" elapsed="0.001118"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T00:55:29.118986" elapsed="0.000120"/>
</return>
<status status="PASS" start="2026-04-08T00:55:29.118506" elapsed="0.000744"/>
</branch>
<status status="PASS" start="2026-04-08T00:55:29.118394" elapsed="0.000994"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:55:29.119600" elapsed="0.000097"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:55:29.125013" elapsed="0.000360"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:55:29.125584" elapsed="0.000165"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:55:29.125947" elapsed="0.000103"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:55:29.121924" elapsed="0.004248"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T00:55:28.754808" elapsed="0.371592"/>
</kw>
<msg time="2026-04-08T00:55:29.126713" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:55:28.753864" elapsed="0.372906"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-08T00:55:28.752960" elapsed="0.373905"/>
</kw>
<msg time="2026-04-08T00:55:29.126908" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:55:28.751766" elapsed="0.375190"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:55:29.129917" elapsed="0.000339"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:55:29.130421" elapsed="0.000148"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:55:29.130715" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:55:29.127262" elapsed="0.003604"/>
</kw>
<msg time="2026-04-08T00:55:29.130965" level="INFO">${output} = 1</msg>
<var>${output}</var>
<arg>Utils.Run_Command_On_Controller</arg>
<arg>${member_ip}</arg>
<arg>${command}</arg>
<doc>Store current connection index, run keyword returning its result, restore connection in teardown.
Note that in order to avoid "got positional argument after named arguments", it is safer to use positional (not named) arguments on call.</doc>
<status status="PASS" start="2026-04-08T00:55:28.749837" elapsed="0.381153"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:55:29.131429" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:55:29.131179" elapsed="0.000294"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-08T00:55:29.131514" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:55:29.131665" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-08T00:55:28.747711" elapsed="0.383979"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-08T00:55:29.131738" elapsed="0.000026"/>
</return>
<msg time="2026-04-08T00:55:29.131887" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-08T00:55:28.745432" elapsed="0.386483"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-08T00:55:29.132588" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-08T00:55:29.132072" elapsed="0.000590">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-08T00:55:28.744367" elapsed="0.388407">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:55:31.136410" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:55:31.135615" elapsed="0.000883"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:55:31.138598" level="INFO">${member_ip} = 10.30.171.110</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:55:31.137957" elapsed="0.000701"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:55:31.140437" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

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

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T00:55:31.146577" elapsed="0.000807"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:55:31.148900" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.110" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:55:31.148359" elapsed="0.000655"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:55:31.150729" level="INFO">${conn_id} = 317</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:55:31.150015" elapsed="0.000813"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T00:55:31.153400" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T00:55:31.153480" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T00:55:31.152986" elapsed="0.000522"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:55:31.153722" elapsed="0.000337"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T00:55:31.154968" level="INFO">Logging into '10.30.171.110:22' as 'jenkins'.</msg>
<msg time="2026-04-08T00:55:31.476630" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 00:54:41 UTC 2026

  System load:  0.7                Processes:             123
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 8%                 IPv4 address for ens3: 10.30.171.110
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 00:55:29 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T00:55:31.154650" elapsed="0.322141"/>
</kw>
<msg time="2026-04-08T00:55:31.476880" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:55:31.154295" elapsed="0.322679"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T00:55:31.152224" elapsed="0.325064"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T00:55:31.478756" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-08T00:55:31.501383" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-08T00:55:31.501964" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-08T00:55:31.502386" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T00:55:31.478361" elapsed="0.024251"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:55:31.504798" elapsed="0.001013"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:55:31.508464" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:55:31.507421" elapsed="0.001277"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:55:31.509676" elapsed="0.000070"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:55:31.509060" elapsed="0.000792"/>
</branch>
<status status="PASS" start="2026-04-08T00:55:31.508935" elapsed="0.001042"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T00:55:31.510700" elapsed="0.000080"/>
</return>
<status status="PASS" start="2026-04-08T00:55:31.510412" elapsed="0.000436"/>
</branch>
<status status="PASS" start="2026-04-08T00:55:31.510339" elapsed="0.000590"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:55:31.511043" elapsed="0.000053"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:55:31.517086" elapsed="0.000538"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:55:31.518026" elapsed="0.000244"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:55:31.518467" elapsed="0.000114"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:55:31.512967" elapsed="0.005727"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T00:55:31.143577" elapsed="0.375345"/>
</kw>
<msg time="2026-04-08T00:55:31.519271" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:55:31.142871" elapsed="0.376463"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-08T00:55:31.142332" elapsed="0.377089"/>
</kw>
<msg time="2026-04-08T00:55:31.519464" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:55:31.141405" elapsed="0.378107"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:55:31.522441" elapsed="0.000314"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:55:31.522916" elapsed="0.000144"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:55:31.523299" elapsed="0.000185"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:55:31.519801" elapsed="0.003737"/>
</kw>
<msg time="2026-04-08T00:55:31.523632" level="INFO">${output} = 1</msg>
<var>${output}</var>
<arg>Utils.Run_Command_On_Controller</arg>
<arg>${member_ip}</arg>
<arg>${command}</arg>
<doc>Store current connection index, run keyword returning its result, restore connection in teardown.
Note that in order to avoid "got positional argument after named arguments", it is safer to use positional (not named) arguments on call.</doc>
<status status="PASS" start="2026-04-08T00:55:31.139134" elapsed="0.384523"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:55:31.524085" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:55:31.523840" elapsed="0.000289"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-08T00:55:31.524188" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:55:31.524341" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-08T00:55:31.136966" elapsed="0.387401"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-08T00:55:31.524413" elapsed="0.000025"/>
</return>
<msg time="2026-04-08T00:55:31.524555" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-08T00:55:31.134743" elapsed="0.389837"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-08T00:55:31.525122" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-08T00:55:31.524732" elapsed="0.000487">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-08T00:55:31.133645" elapsed="0.391690">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:55:33.528888" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:55:33.528117" elapsed="0.000839"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:55:33.530991" level="INFO">${member_ip} = 10.30.171.110</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:55:33.530352" elapsed="0.000698"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:55:33.532317" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

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

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T00:55:33.539763" elapsed="0.000810"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:55:33.542052" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.110" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:55:33.541515" elapsed="0.000666"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:55:33.544042" level="INFO">${conn_id} = 320</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:55:33.543132" elapsed="0.001008"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T00:55:33.546451" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T00:55:33.546553" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T00:55:33.546150" elapsed="0.000429"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:55:33.546788" elapsed="0.000334"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T00:55:33.548040" level="INFO">Logging into '10.30.171.110:22' as 'jenkins'.</msg>
<msg time="2026-04-08T00:55:33.868148" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 00:54:41 UTC 2026

  System load:  0.7                Processes:             123
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 8%                 IPv4 address for ens3: 10.30.171.110
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 00:55:31 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T00:55:33.547717" elapsed="0.320627"/>
</kw>
<msg time="2026-04-08T00:55:33.868431" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:55:33.547360" elapsed="0.321168"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T00:55:33.545388" elapsed="0.323427"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T00:55:33.870315" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-08T00:55:33.892861" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-08T00:55:33.893444" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-08T00:55:33.893783" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T00:55:33.869903" elapsed="0.024092"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:55:33.896290" elapsed="0.000946"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:55:33.899561" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:55:33.898527" elapsed="0.001268"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:55:33.900685" elapsed="0.000067"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:55:33.900144" elapsed="0.000708"/>
</branch>
<status status="PASS" start="2026-04-08T00:55:33.900020" elapsed="0.000956"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T00:55:33.901774" elapsed="0.000119"/>
</return>
<status status="PASS" start="2026-04-08T00:55:33.901328" elapsed="0.000669"/>
</branch>
<status status="PASS" start="2026-04-08T00:55:33.901217" elapsed="0.000909"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:55:33.902465" elapsed="0.000085"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:55:33.907293" elapsed="0.000342"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:55:33.907842" elapsed="0.000163"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:55:33.908214" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:55:33.904326" elapsed="0.004098"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T00:55:33.535511" elapsed="0.373135"/>
</kw>
<msg time="2026-04-08T00:55:33.909038" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:55:33.534431" elapsed="0.374670"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-08T00:55:33.533612" elapsed="0.375591"/>
</kw>
<msg time="2026-04-08T00:55:33.909247" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:55:33.532736" elapsed="0.376557"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:55:33.912245" elapsed="0.000322"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:55:33.912730" elapsed="0.000144"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:55:33.913022" elapsed="0.000095"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:55:33.909583" elapsed="0.003603"/>
</kw>
<msg time="2026-04-08T00:55:33.913283" level="INFO">${output} = 1</msg>
<var>${output}</var>
<arg>Utils.Run_Command_On_Controller</arg>
<arg>${member_ip}</arg>
<arg>${command}</arg>
<doc>Store current connection index, run keyword returning its result, restore connection in teardown.
Note that in order to avoid "got positional argument after named arguments", it is safer to use positional (not named) arguments on call.</doc>
<status status="PASS" start="2026-04-08T00:55:33.531422" elapsed="0.381886"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:55:33.913736" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:55:33.913488" elapsed="0.000292"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-08T00:55:33.913821" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:55:33.913971" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-08T00:55:33.529428" elapsed="0.384569"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-08T00:55:33.914043" elapsed="0.000025"/>
</return>
<msg time="2026-04-08T00:55:33.914287" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-08T00:55:33.527320" elapsed="0.386993"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-08T00:55:33.914940" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-08T00:55:33.914523" elapsed="0.000524">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-08T00:55:33.526119" elapsed="0.389078">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:55:35.918689" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:55:35.917922" elapsed="0.000837"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:55:35.920660" level="INFO">${member_ip} = 10.30.171.110</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:55:35.920224" elapsed="0.000474"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:55:35.921808" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

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

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T00:55:35.928808" elapsed="0.000803"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:55:35.931095" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.110" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:55:35.930560" elapsed="0.000662"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:55:35.933149" level="INFO">${conn_id} = 323</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:55:35.932260" elapsed="0.001006"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T00:55:35.935615" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T00:55:35.935693" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T00:55:35.935328" elapsed="0.000389"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:55:35.935967" elapsed="0.000351"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T00:55:35.937230" level="INFO">Logging into '10.30.171.110:22' as 'jenkins'.</msg>
<msg time="2026-04-08T00:55:36.252371" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 00:54:41 UTC 2026

  System load:  0.7                Processes:             123
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 8%                 IPv4 address for ens3: 10.30.171.110
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 00:55:33 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T00:55:35.936894" elapsed="0.315658"/>
</kw>
<msg time="2026-04-08T00:55:36.252643" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:55:35.936537" elapsed="0.316223"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T00:55:35.934550" elapsed="0.318519"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T00:55:36.254773" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-08T00:55:36.277722" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-08T00:55:36.278348" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-08T00:55:36.278708" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T00:55:36.254313" elapsed="0.024622"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:55:36.280898" elapsed="0.000624"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:55:36.282952" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:55:36.282322" elapsed="0.000774"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:55:36.283699" elapsed="0.000055"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:55:36.283363" elapsed="0.000460"/>
</branch>
<status status="PASS" start="2026-04-08T00:55:36.283279" elapsed="0.000623"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T00:55:36.284434" elapsed="0.000078"/>
</return>
<status status="PASS" start="2026-04-08T00:55:36.284126" elapsed="0.000452"/>
</branch>
<status status="PASS" start="2026-04-08T00:55:36.284059" elapsed="0.000599"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:55:36.284772" elapsed="0.000053"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:55:36.290185" elapsed="0.000367"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:55:36.290785" elapsed="0.000187"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:55:36.291285" elapsed="0.000105"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:55:36.286589" elapsed="0.004909"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T00:55:35.924777" elapsed="0.366939"/>
</kw>
<msg time="2026-04-08T00:55:36.292032" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:55:35.923819" elapsed="0.368276"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-08T00:55:35.922934" elapsed="0.369261"/>
</kw>
<msg time="2026-04-08T00:55:36.292239" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:55:35.922225" elapsed="0.370061"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:55:36.295684" elapsed="0.000350"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:55:36.296214" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:55:36.296507" elapsed="0.000094"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:55:36.292680" elapsed="0.003972"/>
</kw>
<msg time="2026-04-08T00:55:36.296746" level="INFO">${output} = 1</msg>
<var>${output}</var>
<arg>Utils.Run_Command_On_Controller</arg>
<arg>${member_ip}</arg>
<arg>${command}</arg>
<doc>Store current connection index, run keyword returning its result, restore connection in teardown.
Note that in order to avoid "got positional argument after named arguments", it is safer to use positional (not named) arguments on call.</doc>
<status status="PASS" start="2026-04-08T00:55:35.920997" elapsed="0.375774"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:55:36.297215" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:55:36.296950" elapsed="0.000309"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-08T00:55:36.297304" elapsed="0.000032"/>
</return>
<msg time="2026-04-08T00:55:36.297461" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-08T00:55:35.919235" elapsed="0.378251"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-08T00:55:36.297533" elapsed="0.000026"/>
</return>
<msg time="2026-04-08T00:55:36.297677" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-08T00:55:35.917085" elapsed="0.380617"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-08T00:55:36.298362" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-08T00:55:36.297857" elapsed="0.000586">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-08T00:55:35.916023" elapsed="0.382537">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:55:38.302105" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:55:38.301341" elapsed="0.000864"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:55:38.304227" level="INFO">${member_ip} = 10.30.171.110</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:55:38.303592" elapsed="0.000697"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:55:38.306116" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

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

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T00:55:38.313148" elapsed="0.000792"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:55:38.315435" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.110" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:55:38.314878" elapsed="0.000665"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:55:38.317398" level="INFO">${conn_id} = 326</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:55:38.316488" elapsed="0.001010"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T00:55:38.319790" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T00:55:38.319868" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T00:55:38.319509" elapsed="0.000384"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:55:38.320102" elapsed="0.000414"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T00:55:38.321493" level="INFO">Logging into '10.30.171.110:22' as 'jenkins'.</msg>
<msg time="2026-04-08T00:55:38.654660" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 00:54:41 UTC 2026

  System load:  0.7                Processes:             123
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 8%                 IPv4 address for ens3: 10.30.171.110
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 00:55:36 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T00:55:38.321152" elapsed="0.333681"/>
</kw>
<msg time="2026-04-08T00:55:38.654921" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:55:38.320740" elapsed="0.334286"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T00:55:38.318665" elapsed="0.336689"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T00:55:38.656841" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-08T00:55:38.679863" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-08T00:55:38.680429" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-08T00:55:38.680762" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T00:55:38.656435" elapsed="0.024541"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:55:38.683148" elapsed="0.000949"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:55:38.686421" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:55:38.685410" elapsed="0.001197"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:55:38.687224" elapsed="0.000044"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:55:38.686861" elapsed="0.000475"/>
</branch>
<status status="PASS" start="2026-04-08T00:55:38.686772" elapsed="0.000643"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T00:55:38.687898" elapsed="0.000073"/>
</return>
<status status="PASS" start="2026-04-08T00:55:38.687615" elapsed="0.000422"/>
</branch>
<status status="PASS" start="2026-04-08T00:55:38.687548" elapsed="0.000569"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:55:38.688256" elapsed="0.000053"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:55:38.694392" elapsed="0.000378"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:55:38.694982" elapsed="0.000167"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:55:38.695354" elapsed="0.000100"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:55:38.690094" elapsed="0.005465"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T00:55:38.309981" elapsed="0.385796"/>
</kw>
<msg time="2026-04-08T00:55:38.696088" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:55:38.309293" elapsed="0.386853"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-08T00:55:38.307983" elapsed="0.388265"/>
</kw>
<msg time="2026-04-08T00:55:38.696289" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:55:38.306775" elapsed="0.389560"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:55:38.701369" elapsed="0.000315"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:55:38.701845" elapsed="0.000142"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:55:38.702133" elapsed="0.000185"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:55:38.696627" elapsed="0.005746"/>
</kw>
<msg time="2026-04-08T00:55:38.702524" level="INFO">${output} = 1</msg>
<var>${output}</var>
<arg>Utils.Run_Command_On_Controller</arg>
<arg>${member_ip}</arg>
<arg>${command}</arg>
<doc>Store current connection index, run keyword returning its result, restore connection in teardown.
Note that in order to avoid "got positional argument after named arguments", it is safer to use positional (not named) arguments on call.</doc>
<status status="PASS" start="2026-04-08T00:55:38.304764" elapsed="0.397785"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:55:38.702974" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:55:38.702726" elapsed="0.000292"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-08T00:55:38.703059" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:55:38.703225" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-08T00:55:38.302657" elapsed="0.400594"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-08T00:55:38.703297" elapsed="0.000026"/>
</return>
<msg time="2026-04-08T00:55:38.703437" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-08T00:55:38.300450" elapsed="0.403011"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-08T00:55:38.704006" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-08T00:55:38.703613" elapsed="0.000475">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-08T00:55:38.299385" elapsed="0.404830">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:55:40.707670" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:55:40.706905" elapsed="0.000834"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:55:40.709734" level="INFO">${member_ip} = 10.30.171.110</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:55:40.709107" elapsed="0.000687"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:55:40.711726" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

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

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T00:55:40.718650" elapsed="0.001035"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:55:40.721173" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.110" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:55:40.720625" elapsed="0.000658"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:55:40.722924" level="INFO">${conn_id} = 329</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:55:40.722238" elapsed="0.000783"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T00:55:40.725490" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T00:55:40.725566" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T00:55:40.725203" elapsed="0.000386"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:55:40.725797" elapsed="0.000327"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T00:55:40.727056" level="INFO">Logging into '10.30.171.110:22' as 'jenkins'.</msg>
<msg time="2026-04-08T00:55:41.095061" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 00:54:41 UTC 2026

  System load:  0.7                Processes:             123
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 8%                 IPv4 address for ens3: 10.30.171.110
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 00:55:38 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T00:55:40.726737" elapsed="0.368730"/>
</kw>
<msg time="2026-04-08T00:55:41.095567" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:55:40.726383" elapsed="0.369336"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T00:55:40.724446" elapsed="0.371607"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T00:55:41.097627" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-08T00:55:41.120152" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-08T00:55:41.120412" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-08T00:55:41.120561" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T00:55:41.097195" elapsed="0.023460"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:55:41.121635" elapsed="0.000431"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:55:41.123152" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:55:41.122691" elapsed="0.000583"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:55:41.123696" elapsed="0.000031"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:55:41.123448" elapsed="0.000327"/>
</branch>
<status status="PASS" start="2026-04-08T00:55:41.123387" elapsed="0.000445"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T00:55:41.124190" elapsed="0.000058"/>
</return>
<status status="PASS" start="2026-04-08T00:55:41.123976" elapsed="0.000321"/>
</branch>
<status status="PASS" start="2026-04-08T00:55:41.123928" elapsed="0.000427"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:55:41.124438" elapsed="0.000036"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:55:41.128693" elapsed="0.000331"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:55:41.129376" elapsed="0.000164"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:55:41.129727" elapsed="0.000100"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:55:41.125784" elapsed="0.004147"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T00:55:40.714575" elapsed="0.415741"/>
</kw>
<msg time="2026-04-08T00:55:41.130646" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:55:40.713626" elapsed="0.417079"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-08T00:55:40.712859" elapsed="0.417927"/>
</kw>
<msg time="2026-04-08T00:55:41.130828" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:55:40.712129" elapsed="0.418745"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:55:41.133834" elapsed="0.000312"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:55:41.134327" elapsed="0.000175"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:55:41.134651" elapsed="0.000096"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:55:41.131179" elapsed="0.003620"/>
</kw>
<msg time="2026-04-08T00:55:41.134890" level="INFO">${output} = 1</msg>
<var>${output}</var>
<arg>Utils.Run_Command_On_Controller</arg>
<arg>${member_ip}</arg>
<arg>${command}</arg>
<doc>Store current connection index, run keyword returning its result, restore connection in teardown.
Note that in order to avoid "got positional argument after named arguments", it is safer to use positional (not named) arguments on call.</doc>
<status status="PASS" start="2026-04-08T00:55:40.710344" elapsed="0.424571"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:55:41.135355" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:55:41.135092" elapsed="0.000307"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-08T00:55:41.135441" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:55:41.135589" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-08T00:55:40.708211" elapsed="0.427403"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-08T00:55:41.135659" elapsed="0.000025"/>
</return>
<msg time="2026-04-08T00:55:41.135799" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-08T00:55:40.706056" elapsed="0.429768"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-08T00:55:41.136435" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-08T00:55:41.136026" elapsed="0.000486">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-08T00:55:40.705016" elapsed="0.431608">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:55:43.140110" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:55:43.139308" elapsed="0.000904"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:55:43.141642" level="INFO">${member_ip} = 10.30.171.110</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:55:43.141233" elapsed="0.000448"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:55:43.142864" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

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

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T00:55:43.150395" elapsed="0.001287"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:55:43.153489" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.110" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:55:43.152877" elapsed="0.000725"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:55:43.155430" level="INFO">${conn_id} = 332</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:55:43.154569" elapsed="0.000961"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T00:55:43.158563" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T00:55:43.158650" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T00:55:43.157925" elapsed="0.000751"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:55:43.158894" elapsed="0.000379"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T00:55:43.160239" level="INFO">Logging into '10.30.171.110:22' as 'jenkins'.</msg>
<msg time="2026-04-08T00:55:43.757280" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 00:55:43 UTC 2026

  System load:  0.32               Processes:             124
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 8%                 IPv4 address for ens3: 10.30.171.110
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 00:55:41 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T00:55:43.159881" elapsed="0.597594"/>
</kw>
<msg time="2026-04-08T00:55:43.757581" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:55:43.159495" elapsed="0.598197"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T00:55:43.157079" elapsed="0.600949"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T00:55:43.759685" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-08T00:55:43.782922" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-08T00:55:43.783602" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-08T00:55:43.783946" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T00:55:43.759265" elapsed="0.024933"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:55:43.786605" elapsed="0.001016"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:55:43.789883" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:55:43.788882" elapsed="0.001236"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:55:43.790997" elapsed="0.000064"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:55:43.790502" elapsed="0.000687"/>
</branch>
<status status="PASS" start="2026-04-08T00:55:43.790375" elapsed="0.000943"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T00:55:43.792081" elapsed="0.000281"/>
</return>
<status status="PASS" start="2026-04-08T00:55:43.791639" elapsed="0.000838"/>
</branch>
<status status="PASS" start="2026-04-08T00:55:43.791533" elapsed="0.001073"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:55:43.792843" elapsed="0.000084"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:55:43.797692" elapsed="0.000383"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:55:43.798315" elapsed="0.000183"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:55:43.798692" elapsed="0.000108"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:55:43.794506" elapsed="0.004406"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T00:55:43.145949" elapsed="0.653191"/>
</kw>
<msg time="2026-04-08T00:55:43.799475" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:55:43.144934" elapsed="0.654612"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-08T00:55:43.144108" elapsed="0.655524"/>
</kw>
<msg time="2026-04-08T00:55:43.799675" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:55:43.143308" elapsed="0.656414"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:55:43.802782" elapsed="0.000346"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:55:43.803314" elapsed="0.000159"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:55:43.803620" elapsed="0.000100"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:55:43.800033" elapsed="0.003741"/>
</kw>
<msg time="2026-04-08T00:55:43.803871" level="INFO">${output} = 1</msg>
<var>${output}</var>
<arg>Utils.Run_Command_On_Controller</arg>
<arg>${member_ip}</arg>
<arg>${command}</arg>
<doc>Store current connection index, run keyword returning its result, restore connection in teardown.
Note that in order to avoid "got positional argument after named arguments", it is safer to use positional (not named) arguments on call.</doc>
<status status="PASS" start="2026-04-08T00:55:43.142000" elapsed="0.661898"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:55:43.804551" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:55:43.804101" elapsed="0.000498"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-08T00:55:43.804647" elapsed="0.000035"/>
</return>
<msg time="2026-04-08T00:55:43.804811" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-08T00:55:43.140592" elapsed="0.664246"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-08T00:55:43.804886" elapsed="0.000026"/>
</return>
<msg time="2026-04-08T00:55:43.805032" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-08T00:55:43.138475" elapsed="0.666582"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-08T00:55:43.805640" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-08T00:55:43.805234" elapsed="0.000478">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-08T00:55:43.137434" elapsed="0.668388">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:55:45.809531" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:55:45.808746" elapsed="0.000855"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:55:45.811897" level="INFO">${member_ip} = 10.30.171.110</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:55:45.811256" elapsed="0.000706"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:55:45.813802" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

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

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T00:55:45.820332" elapsed="0.000812"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:55:45.822745" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.110" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:55:45.822180" elapsed="0.000676"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:55:45.824675" level="INFO">${conn_id} = 335</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:55:45.823833" elapsed="0.000944"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T00:55:45.827442" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T00:55:45.827521" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T00:55:45.827133" elapsed="0.000413"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:55:45.827764" elapsed="0.000344"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T00:55:45.829032" level="INFO">Logging into '10.30.171.110:22' as 'jenkins'.</msg>
<msg time="2026-04-08T00:55:46.142123" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 00:55:43 UTC 2026

  System load:  0.32               Processes:             124
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 8%                 IPv4 address for ens3: 10.30.171.110
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 00:55:43 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T00:55:45.828711" elapsed="0.313588"/>
</kw>
<msg time="2026-04-08T00:55:46.142395" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:55:45.828352" elapsed="0.314142"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T00:55:45.826322" elapsed="0.316467"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T00:55:46.144357" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-08T00:55:46.167543" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-08T00:55:46.168096" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-08T00:55:46.168493" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T00:55:46.143875" elapsed="0.024827"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:55:46.170921" elapsed="0.000980"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:55:46.173593" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:55:46.172919" elapsed="0.000821"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:55:46.174471" elapsed="0.000047"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:55:46.173981" elapsed="0.000607"/>
</branch>
<status status="PASS" start="2026-04-08T00:55:46.173890" elapsed="0.000779"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T00:55:46.175212" elapsed="0.000076"/>
</return>
<status status="PASS" start="2026-04-08T00:55:46.174875" elapsed="0.000483"/>
</branch>
<status status="PASS" start="2026-04-08T00:55:46.174806" elapsed="0.000636"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:55:46.175556" elapsed="0.000054"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:55:46.181578" elapsed="0.000472"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:55:46.182539" elapsed="0.000228"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:55:46.183063" elapsed="0.000189"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:55:46.177420" elapsed="0.005990"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T00:55:45.817087" elapsed="0.366695"/>
</kw>
<msg time="2026-04-08T00:55:46.184259" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:55:45.816377" elapsed="0.367966"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-08T00:55:45.815752" elapsed="0.368710"/>
</kw>
<msg time="2026-04-08T00:55:46.184520" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:55:45.814630" elapsed="0.369952"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:55:46.187545" elapsed="0.000337"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:55:46.188047" elapsed="0.000341"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:55:46.188544" elapsed="0.000101"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:55:46.184877" elapsed="0.003821"/>
</kw>
<msg time="2026-04-08T00:55:46.188792" level="INFO">${output} = 1</msg>
<var>${output}</var>
<arg>Utils.Run_Command_On_Controller</arg>
<arg>${member_ip}</arg>
<arg>${command}</arg>
<doc>Store current connection index, run keyword returning its result, restore connection in teardown.
Note that in order to avoid "got positional argument after named arguments", it is safer to use positional (not named) arguments on call.</doc>
<status status="PASS" start="2026-04-08T00:55:45.812490" elapsed="0.376327"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:55:46.189290" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:55:46.188993" elapsed="0.000342"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-08T00:55:46.189378" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:55:46.189532" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-08T00:55:45.810250" elapsed="0.379308"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-08T00:55:46.189606" elapsed="0.000026"/>
</return>
<msg time="2026-04-08T00:55:46.189751" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-08T00:55:45.807877" elapsed="0.381899"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-08T00:55:46.190412" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-08T00:55:46.189929" elapsed="0.000560">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-08T00:55:45.806742" elapsed="0.383861">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:55:48.194206" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:55:48.193430" elapsed="0.000850"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:55:48.196151" level="INFO">${member_ip} = 10.30.171.110</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:55:48.195771" elapsed="0.000440"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:55:48.197567" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

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

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T00:55:48.205193" elapsed="0.001110"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:55:48.208506" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.110" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:55:48.207646" elapsed="0.001013"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:55:48.211256" level="INFO">${conn_id} = 338</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:55:48.209968" elapsed="0.001427"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T00:55:48.214680" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T00:55:48.214824" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T00:55:48.214280" elapsed="0.000577"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:55:48.215149" elapsed="0.000531"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T00:55:48.216727" level="INFO">Logging into '10.30.171.110:22' as 'jenkins'.</msg>
<msg time="2026-04-08T00:55:48.525489" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 00:55:43 UTC 2026

  System load:  0.32               Processes:             124
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 8%                 IPv4 address for ens3: 10.30.171.110
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 00:55:46 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T00:55:48.216404" elapsed="0.309233"/>
</kw>
<msg time="2026-04-08T00:55:48.525718" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:55:48.215922" elapsed="0.309885"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T00:55:48.213212" elapsed="0.312903"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T00:55:48.527683" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-08T00:55:48.550261" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-08T00:55:48.550770" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-08T00:55:48.551120" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T00:55:48.527283" elapsed="0.024094"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:55:48.553626" elapsed="0.001001"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:55:48.557028" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:55:48.555866" elapsed="0.001565"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:55:48.558344" elapsed="0.000067"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:55:48.557788" elapsed="0.000724"/>
</branch>
<status status="PASS" start="2026-04-08T00:55:48.557664" elapsed="0.000973"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T00:55:48.559459" elapsed="0.000115"/>
</return>
<status status="PASS" start="2026-04-08T00:55:48.558958" elapsed="0.000719"/>
</branch>
<status status="PASS" start="2026-04-08T00:55:48.558851" elapsed="0.000956"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:55:48.559981" elapsed="0.000085"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:55:48.565318" elapsed="0.000344"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:55:48.565946" elapsed="0.000168"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:55:48.566370" elapsed="0.000107"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:55:48.562344" elapsed="0.004243"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T00:55:48.200597" elapsed="0.366214"/>
</kw>
<msg time="2026-04-08T00:55:48.567120" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:55:48.199653" elapsed="0.367547"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-08T00:55:48.198850" elapsed="0.368443"/>
</kw>
<msg time="2026-04-08T00:55:48.567336" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:55:48.198096" elapsed="0.369288"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:55:48.570383" elapsed="0.000320"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:55:48.570865" elapsed="0.000144"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:55:48.571172" elapsed="0.000109"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:55:48.567679" elapsed="0.003658"/>
</kw>
<msg time="2026-04-08T00:55:48.571433" level="INFO">${output} = 1</msg>
<var>${output}</var>
<arg>Utils.Run_Command_On_Controller</arg>
<arg>${member_ip}</arg>
<arg>${command}</arg>
<doc>Store current connection index, run keyword returning its result, restore connection in teardown.
Note that in order to avoid "got positional argument after named arguments", it is safer to use positional (not named) arguments on call.</doc>
<status status="PASS" start="2026-04-08T00:55:48.196512" elapsed="0.374946"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:55:48.571889" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:55:48.571638" elapsed="0.000296"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-08T00:55:48.571976" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:55:48.572127" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-08T00:55:48.194754" elapsed="0.377398"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-08T00:55:48.572228" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:55:48.572386" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-08T00:55:48.192600" elapsed="0.379810"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-08T00:55:48.572993" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-08T00:55:48.572564" elapsed="0.000506">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-08T00:55:48.191476" elapsed="0.381794">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:55:50.576711" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:55:50.575948" elapsed="0.000829"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:55:50.578796" level="INFO">${member_ip} = 10.30.171.110</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:55:50.578192" elapsed="0.000664"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:55:50.580639" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

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

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T00:55:50.588459" elapsed="0.000889"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:55:50.590906" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.110" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:55:50.590304" elapsed="0.000715"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:55:50.593235" level="INFO">${conn_id} = 341</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:55:50.592096" elapsed="0.001239"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T00:55:50.595907" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T00:55:50.595995" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T00:55:50.595484" elapsed="0.000536"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:55:50.596269" elapsed="0.000372"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T00:55:50.597595" level="INFO">Logging into '10.30.171.110:22' as 'jenkins'.</msg>
<msg time="2026-04-08T00:55:50.945902" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 00:55:43 UTC 2026

  System load:  0.32               Processes:             124
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 8%                 IPv4 address for ens3: 10.30.171.110
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 00:55:48 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T00:55:50.597251" elapsed="0.348843"/>
</kw>
<msg time="2026-04-08T00:55:50.946202" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:55:50.596864" elapsed="0.349441"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T00:55:50.594537" elapsed="0.352102"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T00:55:50.948205" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-08T00:55:50.971101" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-08T00:55:50.971671" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-08T00:55:50.972001" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T00:55:50.947755" elapsed="0.024498"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:55:50.974511" elapsed="0.000699"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:55:50.976637" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:55:50.975991" elapsed="0.000790"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:55:50.977367" elapsed="0.000042"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:55:50.977011" elapsed="0.000498"/>
</branch>
<status status="PASS" start="2026-04-08T00:55:50.976930" elapsed="0.000678"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T00:55:50.978104" elapsed="0.000096"/>
</return>
<status status="PASS" start="2026-04-08T00:55:50.977816" elapsed="0.000455"/>
</branch>
<status status="PASS" start="2026-04-08T00:55:50.977746" elapsed="0.000649"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:55:50.978515" elapsed="0.000054"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:55:50.985982" elapsed="0.000789"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:55:50.987279" elapsed="0.000351"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:55:50.988081" elapsed="0.000469"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:55:50.980448" elapsed="0.008343"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T00:55:50.585143" elapsed="0.404179"/>
</kw>
<msg time="2026-04-08T00:55:50.990326" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:55:50.584067" elapsed="0.406397"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-08T00:55:50.582542" elapsed="0.408114"/>
</kw>
<msg time="2026-04-08T00:55:50.990762" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:55:50.581295" elapsed="0.409522"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:55:50.993730" elapsed="0.000314"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:55:50.994224" elapsed="0.000157"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:55:50.994529" elapsed="0.000094"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:55:50.991109" elapsed="0.003566"/>
</kw>
<msg time="2026-04-08T00:55:50.994773" level="INFO">${output} = 1</msg>
<var>${output}</var>
<arg>Utils.Run_Command_On_Controller</arg>
<arg>${member_ip}</arg>
<arg>${command}</arg>
<doc>Store current connection index, run keyword returning its result, restore connection in teardown.
Note that in order to avoid "got positional argument after named arguments", it is safer to use positional (not named) arguments on call.</doc>
<status status="PASS" start="2026-04-08T00:55:50.579364" elapsed="0.415434"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:55:50.995239" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:55:50.994975" elapsed="0.000308"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-08T00:55:50.995324" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:55:50.995476" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-08T00:55:50.577244" elapsed="0.418257"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-08T00:55:50.995548" elapsed="0.000025"/>
</return>
<msg time="2026-04-08T00:55:50.995691" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-08T00:55:50.575084" elapsed="0.420638"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-08T00:55:50.996330" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-08T00:55:50.995876" elapsed="0.000536">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-08T00:55:50.574024" elapsed="0.422504">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:55:53.000236" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:55:52.999289" elapsed="0.001040"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:55:53.002480" level="INFO">${member_ip} = 10.30.171.110</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:55:53.001761" elapsed="0.000780"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:55:53.004375" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

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

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T00:55:53.011956" elapsed="0.000829"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:55:53.014297" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.110" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:55:53.013731" elapsed="0.000676"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:55:53.016388" level="INFO">${conn_id} = 344</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:55:53.015460" elapsed="0.001028"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T00:55:53.018842" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T00:55:53.018920" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T00:55:53.018539" elapsed="0.000406"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:55:53.019169" elapsed="0.000336"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T00:55:53.020502" level="INFO">Logging into '10.30.171.110:22' as 'jenkins'.</msg>
<msg time="2026-04-08T00:55:53.328988" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 00:55:43 UTC 2026

  System load:  0.32               Processes:             124
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 8%                 IPv4 address for ens3: 10.30.171.110
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 00:55:50 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T00:55:53.020170" elapsed="0.309077"/>
</kw>
<msg time="2026-04-08T00:55:53.329367" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:55:53.019729" elapsed="0.309763"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T00:55:53.017666" elapsed="0.312191"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T00:55:53.331611" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-08T00:55:53.354125" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-08T00:55:53.354735" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-08T00:55:53.355243" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T00:55:53.331053" elapsed="0.024428"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:55:53.357871" elapsed="0.000988"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:55:53.361306" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:55:53.360246" elapsed="0.001302"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:55:53.362577" elapsed="0.000071"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:55:53.361936" elapsed="0.000822"/>
</branch>
<status status="PASS" start="2026-04-08T00:55:53.361799" elapsed="0.001093"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T00:55:53.363839" elapsed="0.000054"/>
</return>
<status status="PASS" start="2026-04-08T00:55:53.363436" elapsed="0.000509"/>
</branch>
<status status="PASS" start="2026-04-08T00:55:53.363313" elapsed="0.000692"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:55:53.364089" elapsed="0.000039"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:55:53.368775" elapsed="0.000364"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:55:53.369373" elapsed="0.000204"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:55:53.369834" elapsed="0.000109"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:55:53.365484" elapsed="0.004574"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T00:55:53.008960" elapsed="0.361394"/>
</kw>
<msg time="2026-04-08T00:55:53.370669" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:55:53.007436" elapsed="0.363295"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-08T00:55:53.006216" elapsed="0.364603"/>
</kw>
<msg time="2026-04-08T00:55:53.370862" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:55:53.005015" elapsed="0.365896"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:55:53.376915" elapsed="0.000336"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:55:53.377417" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:55:53.377710" elapsed="0.000096"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:55:53.371459" elapsed="0.006403"/>
</kw>
<msg time="2026-04-08T00:55:53.377955" level="INFO">${output} = 1</msg>
<var>${output}</var>
<arg>Utils.Run_Command_On_Controller</arg>
<arg>${member_ip}</arg>
<arg>${command}</arg>
<doc>Store current connection index, run keyword returning its result, restore connection in teardown.
Note that in order to avoid "got positional argument after named arguments", it is safer to use positional (not named) arguments on call.</doc>
<status status="PASS" start="2026-04-08T00:55:53.003030" elapsed="0.374950"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:55:53.378477" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:55:53.378221" elapsed="0.000300"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-08T00:55:53.378564" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:55:53.378714" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-08T00:55:53.000792" elapsed="0.377947"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-08T00:55:53.378785" elapsed="0.000027"/>
</return>
<msg time="2026-04-08T00:55:53.378929" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-08T00:55:52.998435" elapsed="0.380518"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-08T00:55:53.379580" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-08T00:55:53.379134" elapsed="0.000545">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-08T00:55:52.997333" elapsed="0.382472">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:55:55.382185" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:55:55.381673" elapsed="0.000562"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:55:55.383520" level="INFO">${member_ip} = 10.30.171.110</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:55:55.383115" elapsed="0.000443"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:55:55.384686" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

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

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T00:55:55.391611" elapsed="0.000853"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:55:55.393948" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.110" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:55:55.393413" elapsed="0.000642"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:55:55.395699" level="INFO">${conn_id} = 347</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:55:55.394993" elapsed="0.000808"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T00:55:55.398313" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T00:55:55.398391" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T00:55:55.398010" elapsed="0.000405"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:55:55.398623" elapsed="0.000427"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T00:55:55.399977" level="INFO">Logging into '10.30.171.110:22' as 'jenkins'.</msg>
<msg time="2026-04-08T00:55:55.721835" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 00:55:43 UTC 2026

  System load:  0.32               Processes:             124
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 8%                 IPv4 address for ens3: 10.30.171.110
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 00:55:53 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T00:55:55.399654" elapsed="0.322368"/>
</kw>
<msg time="2026-04-08T00:55:55.722118" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:55:55.399289" elapsed="0.322983"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T00:55:55.397257" elapsed="0.325323"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T00:55:55.724105" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-08T00:55:55.746846" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-08T00:55:55.747093" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-08T00:55:55.747271" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T00:55:55.723672" elapsed="0.023697"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:55:55.748353" elapsed="0.000444"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:55:55.749952" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:55:55.749472" elapsed="0.000587"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:55:55.750545" elapsed="0.000033"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:55:55.750284" elapsed="0.000345"/>
</branch>
<status status="PASS" start="2026-04-08T00:55:55.750214" elapsed="0.000472"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T00:55:55.751040" elapsed="0.000054"/>
</return>
<status status="PASS" start="2026-04-08T00:55:55.750836" elapsed="0.000305"/>
</branch>
<status status="PASS" start="2026-04-08T00:55:55.750784" elapsed="0.000433"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:55:55.751297" elapsed="0.000038"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:55:55.755633" elapsed="0.000342"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:55:55.756202" elapsed="0.000178"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:55:55.756572" elapsed="0.000100"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:55:55.752613" elapsed="0.004165"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T00:55:55.387529" elapsed="0.369471"/>
</kw>
<msg time="2026-04-08T00:55:55.757398" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:55:55.386576" elapsed="0.370884"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-08T00:55:55.385813" elapsed="0.371733"/>
</kw>
<msg time="2026-04-08T00:55:55.757588" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:55:55.385080" elapsed="0.372555"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:55:55.760655" elapsed="0.000313"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:55:55.761131" elapsed="0.000272"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:55:55.761552" elapsed="0.000095"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:55:55.757925" elapsed="0.003772"/>
</kw>
<msg time="2026-04-08T00:55:55.761915" level="INFO">${output} = 1</msg>
<var>${output}</var>
<arg>Utils.Run_Command_On_Controller</arg>
<arg>${member_ip}</arg>
<arg>${command}</arg>
<doc>Store current connection index, run keyword returning its result, restore connection in teardown.
Note that in order to avoid "got positional argument after named arguments", it is safer to use positional (not named) arguments on call.</doc>
<status status="PASS" start="2026-04-08T00:55:55.383860" elapsed="0.378082"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:55:55.762401" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:55:55.762122" elapsed="0.000323"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-08T00:55:55.762487" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:55:55.762640" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-08T00:55:55.382520" elapsed="0.380145"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-08T00:55:55.762712" elapsed="0.000026"/>
</return>
<msg time="2026-04-08T00:55:55.762857" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-08T00:55:55.381125" elapsed="0.381756"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-08T00:55:55.763457" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-08T00:55:55.763038" elapsed="0.000500">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-08T00:55:55.380427" elapsed="0.383229">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:55:57.767226" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:55:57.766454" elapsed="0.000844"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:55:57.769340" level="INFO">${member_ip} = 10.30.171.110</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:55:57.768715" elapsed="0.000684"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:55:57.771418" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

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

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T00:55:57.778936" elapsed="0.000821"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:55:57.781279" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.110" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:55:57.780713" elapsed="0.000675"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:55:57.783033" level="INFO">${conn_id} = 350</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:55:57.782339" elapsed="0.000793"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T00:55:57.785810" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T00:55:57.785889" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T00:55:57.785522" elapsed="0.000392"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:55:57.786125" elapsed="0.000352"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T00:55:57.787427" level="INFO">Logging into '10.30.171.110:22' as 'jenkins'.</msg>
<msg time="2026-04-08T00:55:58.096686" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 00:55:43 UTC 2026

  System load:  0.32               Processes:             124
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 8%                 IPv4 address for ens3: 10.30.171.110
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 00:55:55 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T00:55:57.787060" elapsed="0.309897"/>
</kw>
<msg time="2026-04-08T00:55:58.097042" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:55:57.786701" elapsed="0.310433"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T00:55:57.784567" elapsed="0.312875"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T00:55:58.098869" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-08T00:55:58.121338" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-08T00:55:58.121840" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-08T00:55:58.122256" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T00:55:58.098485" elapsed="0.023992"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:55:58.125046" elapsed="0.000981"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:55:58.128343" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:55:58.127354" elapsed="0.001224"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:55:58.129454" elapsed="0.000068"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:55:58.128924" elapsed="0.000699"/>
</branch>
<status status="PASS" start="2026-04-08T00:55:58.128803" elapsed="0.000943"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T00:55:58.130541" elapsed="0.000113"/>
</return>
<status status="PASS" start="2026-04-08T00:55:58.130062" elapsed="0.000699"/>
</branch>
<status status="PASS" start="2026-04-08T00:55:58.129955" elapsed="0.000934"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:55:58.131107" elapsed="0.000176"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:55:58.138145" elapsed="0.000423"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:55:58.138780" elapsed="0.000178"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:55:58.139264" elapsed="0.000107"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:55:58.134603" elapsed="0.004875"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T00:55:57.775932" elapsed="0.363768"/>
</kw>
<msg time="2026-04-08T00:55:58.140031" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:55:57.774467" elapsed="0.365627"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-08T00:55:57.773241" elapsed="0.366954"/>
</kw>
<msg time="2026-04-08T00:55:58.140238" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:55:57.772057" elapsed="0.368228"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:55:58.143277" elapsed="0.000314"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:55:58.143754" elapsed="0.000143"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:55:58.144042" elapsed="0.000095"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:55:58.140573" elapsed="0.003635"/>
</kw>
<msg time="2026-04-08T00:55:58.144301" level="INFO">${output} = 1</msg>
<var>${output}</var>
<arg>Utils.Run_Command_On_Controller</arg>
<arg>${member_ip}</arg>
<arg>${command}</arg>
<doc>Store current connection index, run keyword returning its result, restore connection in teardown.
Note that in order to avoid "got positional argument after named arguments", it is safer to use positional (not named) arguments on call.</doc>
<status status="PASS" start="2026-04-08T00:55:57.769874" elapsed="0.374453"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:55:58.144767" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:55:58.144520" elapsed="0.000291"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-08T00:55:58.144853" elapsed="0.000032"/>
</return>
<msg time="2026-04-08T00:55:58.145011" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-08T00:55:57.767783" elapsed="0.377254"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-08T00:55:58.145083" elapsed="0.000025"/>
</return>
<msg time="2026-04-08T00:55:58.145251" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-08T00:55:57.765618" elapsed="0.379659"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-08T00:55:58.146019" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-08T00:55:58.145614" elapsed="0.000478">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-08T00:55:57.764515" elapsed="0.381746">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:56:00.150074" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:56:00.149145" elapsed="0.001117"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:56:00.152393" level="INFO">${member_ip} = 10.30.171.110</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:56:00.151725" elapsed="0.000733"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:56:00.154760" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

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

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T00:56:00.163692" elapsed="0.000796"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:56:00.166019" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.110" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:56:00.165452" elapsed="0.000678"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:56:00.167825" level="INFO">${conn_id} = 353</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:56:00.167094" elapsed="0.000829"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T00:56:00.170504" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T00:56:00.170582" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T00:56:00.170109" elapsed="0.000497"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:56:00.170815" elapsed="0.000336"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T00:56:00.172064" level="INFO">Logging into '10.30.171.110:22' as 'jenkins'.</msg>
<msg time="2026-04-08T00:56:00.498003" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 00:55:43 UTC 2026

  System load:  0.32               Processes:             124
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 8%                 IPv4 address for ens3: 10.30.171.110
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 00:55:58 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T00:56:00.171744" elapsed="0.326475"/>
</kw>
<msg time="2026-04-08T00:56:00.498309" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:56:00.171386" elapsed="0.327055"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T00:56:00.169344" elapsed="0.329414"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T00:56:00.500349" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-08T00:56:00.522852" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-08T00:56:00.523430" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-08T00:56:00.523769" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T00:56:00.499904" elapsed="0.024078"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:56:00.526263" elapsed="0.000921"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:56:00.529552" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:56:00.528501" elapsed="0.001277"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:56:00.530655" elapsed="0.000066"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:56:00.530120" elapsed="0.000705"/>
</branch>
<status status="PASS" start="2026-04-08T00:56:00.530000" elapsed="0.000948"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T00:56:00.531731" elapsed="0.000115"/>
</return>
<status status="PASS" start="2026-04-08T00:56:00.531294" elapsed="0.000660"/>
</branch>
<status status="PASS" start="2026-04-08T00:56:00.531155" elapsed="0.000926"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:56:00.532324" elapsed="0.000086"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:56:00.537627" elapsed="0.000334"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:56:00.538187" elapsed="0.000165"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:56:00.538543" elapsed="0.000099"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:56:00.534706" elapsed="0.004043"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T00:56:00.160686" elapsed="0.378291"/>
</kw>
<msg time="2026-04-08T00:56:00.539300" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:56:00.157960" elapsed="0.381403"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-08T00:56:00.156652" elapsed="0.382793"/>
</kw>
<msg time="2026-04-08T00:56:00.539485" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:56:00.155464" elapsed="0.384068"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:56:00.542486" elapsed="0.000310"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:56:00.542959" elapsed="0.000142"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:56:00.543264" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:56:00.539817" elapsed="0.003596"/>
</kw>
<msg time="2026-04-08T00:56:00.543504" level="INFO">${output} = 1</msg>
<var>${output}</var>
<arg>Utils.Run_Command_On_Controller</arg>
<arg>${member_ip}</arg>
<arg>${command}</arg>
<doc>Store current connection index, run keyword returning its result, restore connection in teardown.
Note that in order to avoid "got positional argument after named arguments", it is safer to use positional (not named) arguments on call.</doc>
<status status="PASS" start="2026-04-08T00:56:00.152951" elapsed="0.390578"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:56:00.543952" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:56:00.543706" elapsed="0.000290"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-08T00:56:00.544037" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:56:00.544216" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-08T00:56:00.150740" elapsed="0.393502"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-08T00:56:00.544289" elapsed="0.000026"/>
</return>
<msg time="2026-04-08T00:56:00.544435" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-08T00:56:00.148295" elapsed="0.396165"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-08T00:56:00.545029" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-08T00:56:00.544612" elapsed="0.000495">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-08T00:56:00.147129" elapsed="0.398168">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:56:02.549744" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:56:02.548680" elapsed="0.001167"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:56:02.552808" level="INFO">${member_ip} = 10.30.171.110</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:56:02.551982" elapsed="0.000904"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:56:02.554302" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

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

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T00:56:02.560640" elapsed="0.000874"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:56:02.563170" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.110" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:56:02.562535" elapsed="0.000751"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:56:02.565556" level="INFO">${conn_id} = 356</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:56:02.564414" elapsed="0.001266"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T00:56:02.568349" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T00:56:02.568432" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T00:56:02.568012" elapsed="0.000445"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:56:02.568672" elapsed="0.000372"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T00:56:02.570051" level="INFO">Logging into '10.30.171.110:22' as 'jenkins'.</msg>
<msg time="2026-04-08T00:56:02.891752" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 00:55:43 UTC 2026

  System load:  0.32               Processes:             124
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 8%                 IPv4 address for ens3: 10.30.171.110
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 00:56:00 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T00:56:02.569699" elapsed="0.322243"/>
</kw>
<msg time="2026-04-08T00:56:02.892030" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:56:02.569306" elapsed="0.322823"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T00:56:02.567145" elapsed="0.325285"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T00:56:02.893881" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-08T00:56:02.916258" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-08T00:56:02.916759" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-08T00:56:02.917094" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T00:56:02.893485" elapsed="0.023861"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:56:02.919534" elapsed="0.000951"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:56:02.922742" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:56:02.921700" elapsed="0.001274"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:56:02.924021" elapsed="0.000071"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:56:02.923360" elapsed="0.000869"/>
</branch>
<status status="PASS" start="2026-04-08T00:56:02.923236" elapsed="0.001123"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T00:56:02.925135" elapsed="0.000148"/>
</return>
<status status="PASS" start="2026-04-08T00:56:02.924682" elapsed="0.000709"/>
</branch>
<status status="PASS" start="2026-04-08T00:56:02.924573" elapsed="0.000948"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:56:02.925697" elapsed="0.000083"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:56:02.933406" elapsed="0.000343"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:56:02.933960" elapsed="0.000162"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:56:02.934372" elapsed="0.000101"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:56:02.928743" elapsed="0.005838"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T00:56:02.557474" elapsed="0.377328"/>
</kw>
<msg time="2026-04-08T00:56:02.935107" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:56:02.556472" elapsed="0.378709"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-08T00:56:02.555581" elapsed="0.379685"/>
</kw>
<msg time="2026-04-08T00:56:02.935307" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:56:02.554745" elapsed="0.380608"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:56:02.938337" elapsed="0.000318"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:56:02.938817" elapsed="0.000144"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:56:02.939105" elapsed="0.000112"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:56:02.935637" elapsed="0.003633"/>
</kw>
<msg time="2026-04-08T00:56:02.939363" level="INFO">${output} = 1</msg>
<var>${output}</var>
<arg>Utils.Run_Command_On_Controller</arg>
<arg>${member_ip}</arg>
<arg>${command}</arg>
<doc>Store current connection index, run keyword returning its result, restore connection in teardown.
Note that in order to avoid "got positional argument after named arguments", it is safer to use positional (not named) arguments on call.</doc>
<status status="PASS" start="2026-04-08T00:56:02.553391" elapsed="0.385998"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:56:02.939839" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:56:02.939563" elapsed="0.000322"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-08T00:56:02.939926" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:56:02.940076" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-08T00:56:02.550558" elapsed="0.389544"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-08T00:56:02.940148" elapsed="0.000041"/>
</return>
<msg time="2026-04-08T00:56:02.940308" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-08T00:56:02.547620" elapsed="0.392713"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-08T00:56:02.940871" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-08T00:56:02.940485" elapsed="0.000457">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-08T00:56:02.546299" elapsed="0.394752">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:56:04.944597" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:56:04.943775" elapsed="0.000890"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:56:04.946718" level="INFO">${member_ip} = 10.30.171.110</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:56:04.946076" elapsed="0.000702"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:56:04.948746" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

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

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T00:56:04.958107" elapsed="0.000811"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:56:04.960434" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.110" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:56:04.959882" elapsed="0.000666"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:56:04.962415" level="INFO">${conn_id} = 359</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:56:04.961484" elapsed="0.001027"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T00:56:04.964743" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T00:56:04.964821" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T00:56:04.964461" elapsed="0.000384"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:56:04.965052" elapsed="0.000346"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T00:56:04.966486" level="INFO">Logging into '10.30.171.110:22' as 'jenkins'.</msg>
<msg time="2026-04-08T00:56:05.274736" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 00:55:43 UTC 2026

  System load:  0.32               Processes:             124
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 8%                 IPv4 address for ens3: 10.30.171.110
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 00:56:02 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T00:56:04.965966" elapsed="0.308926"/>
</kw>
<msg time="2026-04-08T00:56:05.274975" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:56:04.965614" elapsed="0.309467"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T00:56:04.963689" elapsed="0.311717"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T00:56:05.276856" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-08T00:56:05.299585" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-08T00:56:05.300086" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-08T00:56:05.300467" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T00:56:05.276459" elapsed="0.024219"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:56:05.302813" elapsed="0.000923"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:56:05.305969" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:56:05.304974" elapsed="0.001267"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:56:05.307094" elapsed="0.000096"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:56:05.306594" elapsed="0.000704"/>
</branch>
<status status="PASS" start="2026-04-08T00:56:05.306472" elapsed="0.000971"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T00:56:05.308243" elapsed="0.000114"/>
</return>
<status status="PASS" start="2026-04-08T00:56:05.307762" elapsed="0.000700"/>
</branch>
<status status="PASS" start="2026-04-08T00:56:05.307656" elapsed="0.000934"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:56:05.308763" elapsed="0.000082"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:56:05.314889" elapsed="0.000352"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:56:05.315530" elapsed="0.000163"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:56:05.315881" elapsed="0.000101"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:56:05.311798" elapsed="0.004288"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T00:56:04.953561" elapsed="0.362762"/>
</kw>
<msg time="2026-04-08T00:56:05.316626" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:56:04.952039" elapsed="0.364645"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-08T00:56:04.950752" elapsed="0.366015"/>
</kw>
<msg time="2026-04-08T00:56:05.316809" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:56:04.949591" elapsed="0.367265"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:56:05.319741" elapsed="0.000312"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:56:05.320232" elapsed="0.000144"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:56:05.320523" elapsed="0.000111"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:56:05.317141" elapsed="0.003546"/>
</kw>
<msg time="2026-04-08T00:56:05.320780" level="INFO">${output} = 1</msg>
<var>${output}</var>
<arg>Utils.Run_Command_On_Controller</arg>
<arg>${member_ip}</arg>
<arg>${command}</arg>
<doc>Store current connection index, run keyword returning its result, restore connection in teardown.
Note that in order to avoid "got positional argument after named arguments", it is safer to use positional (not named) arguments on call.</doc>
<status status="PASS" start="2026-04-08T00:56:04.947459" elapsed="0.373346"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:56:05.321375" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:56:05.320979" elapsed="0.000441"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-08T00:56:05.321460" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:56:05.321612" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-08T00:56:04.945110" elapsed="0.376527"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-08T00:56:05.321682" elapsed="0.000025"/>
</return>
<msg time="2026-04-08T00:56:05.321822" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-08T00:56:04.942894" elapsed="0.378952"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-08T00:56:05.322408" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-08T00:56:05.321998" elapsed="0.000485">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-08T00:56:04.941836" elapsed="0.380757">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:56:07.326048" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:56:07.325317" elapsed="0.000800"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:56:07.328225" level="INFO">${member_ip} = 10.30.171.110</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:56:07.327632" elapsed="0.000633"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:56:07.329385" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

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

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T00:56:07.336630" elapsed="0.000828"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:56:07.338950" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.110" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:56:07.338418" elapsed="0.000644"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:56:07.340902" level="INFO">${conn_id} = 362</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:56:07.340011" elapsed="0.000992"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T00:56:07.343389" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T00:56:07.343465" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T00:56:07.343074" elapsed="0.000415"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:56:07.343696" elapsed="0.000330"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T00:56:07.344936" level="INFO">Logging into '10.30.171.110:22' as 'jenkins'.</msg>
<msg time="2026-04-08T00:56:07.643574" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 00:55:43 UTC 2026

  System load:  0.32               Processes:             124
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 8%                 IPv4 address for ens3: 10.30.171.110
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 00:56:05 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T00:56:07.344616" elapsed="0.299117"/>
</kw>
<msg time="2026-04-08T00:56:07.643829" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:56:07.344258" elapsed="0.299669"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T00:56:07.342320" elapsed="0.301926"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T00:56:07.645744" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-08T00:56:07.668304" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-08T00:56:07.668810" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-08T00:56:07.669135" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T00:56:07.645327" elapsed="0.024058"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:56:07.671541" elapsed="0.000888"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:56:07.674638" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:56:07.673630" elapsed="0.001231"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:56:07.675793" elapsed="0.000065"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:56:07.675236" elapsed="0.000722"/>
</branch>
<status status="PASS" start="2026-04-08T00:56:07.675082" elapsed="0.000999"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T00:56:07.676883" elapsed="0.000112"/>
</return>
<status status="PASS" start="2026-04-08T00:56:07.676440" elapsed="0.000659"/>
</branch>
<status status="PASS" start="2026-04-08T00:56:07.676333" elapsed="0.000927"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:56:07.677437" elapsed="0.000083"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:56:07.683202" elapsed="0.000505"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:56:07.683917" elapsed="0.000163"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:56:07.684283" elapsed="0.000100"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:56:07.680328" elapsed="0.004161"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T00:56:07.332413" elapsed="0.352296"/>
</kw>
<msg time="2026-04-08T00:56:07.685111" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:56:07.331255" elapsed="0.353934"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-08T00:56:07.330499" elapsed="0.354777"/>
</kw>
<msg time="2026-04-08T00:56:07.685318" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:56:07.329776" elapsed="0.355590"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:56:07.690073" elapsed="0.000415"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:56:07.690654" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:56:07.690948" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:56:07.685659" elapsed="0.005456"/>
</kw>
<msg time="2026-04-08T00:56:07.691235" level="INFO">${output} = 1</msg>
<var>${output}</var>
<arg>Utils.Run_Command_On_Controller</arg>
<arg>${member_ip}</arg>
<arg>${command}</arg>
<doc>Store current connection index, run keyword returning its result, restore connection in teardown.
Note that in order to avoid "got positional argument after named arguments", it is safer to use positional (not named) arguments on call.</doc>
<status status="PASS" start="2026-04-08T00:56:07.328566" elapsed="0.362695"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:56:07.691727" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:56:07.691471" elapsed="0.000301"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-08T00:56:07.691815" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:56:07.691965" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-08T00:56:07.326604" elapsed="0.365388"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-08T00:56:07.692037" elapsed="0.000027"/>
</return>
<msg time="2026-04-08T00:56:07.692214" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-08T00:56:07.324484" elapsed="0.367760"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-08T00:56:07.692797" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-08T00:56:07.692401" elapsed="0.000473">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-08T00:56:07.323436" elapsed="0.369549">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:56:09.696797" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:56:09.695958" elapsed="0.000916"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:56:09.699120" level="INFO">${member_ip} = 10.30.171.110</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:56:09.698466" elapsed="0.000750"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:56:09.701186" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

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

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T00:56:09.708086" elapsed="0.000794"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:56:09.710571" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.110" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:56:09.709911" elapsed="0.000786"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:56:09.712916" level="INFO">${conn_id} = 365</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:56:09.711993" elapsed="0.001047"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T00:56:09.716470" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T00:56:09.716574" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T00:56:09.716052" elapsed="0.000555"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:56:09.716883" elapsed="0.000460"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T00:56:09.718774" level="INFO">Logging into '10.30.171.110:22' as 'jenkins'.</msg>
<msg time="2026-04-08T00:56:10.037886" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 00:55:43 UTC 2026

  System load:  0.32               Processes:             124
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 8%                 IPv4 address for ens3: 10.30.171.110
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 00:56:07 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T00:56:09.718106" elapsed="0.319935"/>
</kw>
<msg time="2026-04-08T00:56:10.038121" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:56:09.717632" elapsed="0.320607"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T00:56:09.714994" elapsed="0.323531"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T00:56:10.040145" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-08T00:56:10.062449" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-08T00:56:10.062955" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-08T00:56:10.063379" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T00:56:10.039754" elapsed="0.023850"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:56:10.065812" elapsed="0.000910"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:56:10.069047" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:56:10.068033" elapsed="0.001287"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:56:10.070307" elapsed="0.000079"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:56:10.069711" elapsed="0.000783"/>
</branch>
<status status="PASS" start="2026-04-08T00:56:10.069585" elapsed="0.001040"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T00:56:10.071495" elapsed="0.000121"/>
</return>
<status status="PASS" start="2026-04-08T00:56:10.070952" elapsed="0.000829"/>
</branch>
<status status="PASS" start="2026-04-08T00:56:10.070843" elapsed="0.001077"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:56:10.072102" elapsed="0.000193"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:56:10.078318" elapsed="0.000468"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:56:10.079083" elapsed="0.000265"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:56:10.079623" elapsed="0.000241"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:56:10.074087" elapsed="0.005943"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T00:56:09.705106" elapsed="0.375326"/>
</kw>
<msg time="2026-04-08T00:56:10.080744" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:56:09.704417" elapsed="0.376391"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-08T00:56:09.703300" elapsed="0.377592"/>
</kw>
<msg time="2026-04-08T00:56:10.080934" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:56:09.701867" elapsed="0.379114"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:56:10.084009" elapsed="0.000477"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:56:10.084652" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:56:10.084944" elapsed="0.000095"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:56:10.081374" elapsed="0.003717"/>
</kw>
<msg time="2026-04-08T00:56:10.085204" level="INFO">${output} = 1</msg>
<var>${output}</var>
<arg>Utils.Run_Command_On_Controller</arg>
<arg>${member_ip}</arg>
<arg>${command}</arg>
<doc>Store current connection index, run keyword returning its result, restore connection in teardown.
Note that in order to avoid "got positional argument after named arguments", it is safer to use positional (not named) arguments on call.</doc>
<status status="PASS" start="2026-04-08T00:56:09.699787" elapsed="0.385443"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:56:10.085662" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:56:10.085418" elapsed="0.000288"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-08T00:56:10.085747" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:56:10.085896" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-08T00:56:09.697461" elapsed="0.388460"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-08T00:56:10.085967" elapsed="0.000025"/>
</return>
<msg time="2026-04-08T00:56:10.086107" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-08T00:56:09.694995" elapsed="0.391137"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-08T00:56:10.086711" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-08T00:56:10.086319" elapsed="0.000468">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-08T00:56:09.693859" elapsed="0.393041">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:56:12.090807" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:56:12.089866" elapsed="0.001013"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:56:12.093137" level="INFO">${member_ip} = 10.30.171.110</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:56:12.092517" elapsed="0.000715"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:56:12.095013" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

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

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T00:56:12.103228" elapsed="0.001163"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:56:12.106528" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.110" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:56:12.105700" elapsed="0.000989"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:56:12.109357" level="INFO">${conn_id} = 368</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:56:12.108073" elapsed="0.001431"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T00:56:12.112083" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T00:56:12.112382" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T00:56:12.111781" elapsed="0.000792"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:56:12.112798" elapsed="0.000498"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T00:56:12.114238" level="INFO">Logging into '10.30.171.110:22' as 'jenkins'.</msg>
<msg time="2026-04-08T00:56:12.429372" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 00:55:43 UTC 2026

  System load:  0.32               Processes:             124
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 8%                 IPv4 address for ens3: 10.30.171.110
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 00:56:09 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T00:56:12.113891" elapsed="0.315687"/>
</kw>
<msg time="2026-04-08T00:56:12.429698" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:56:12.113526" elapsed="0.316295"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T00:56:12.110939" elapsed="0.319299"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T00:56:12.432366" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-08T00:56:12.454979" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-08T00:56:12.455595" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-08T00:56:12.455974" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T00:56:12.431785" elapsed="0.024522"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:56:12.458724" elapsed="0.001081"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:56:12.462001" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:56:12.461362" elapsed="0.000820"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:56:12.462807" elapsed="0.000046"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:56:12.462426" elapsed="0.000495"/>
</branch>
<status status="PASS" start="2026-04-08T00:56:12.462341" elapsed="0.000671"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T00:56:12.463582" elapsed="0.000099"/>
</return>
<status status="PASS" start="2026-04-08T00:56:12.463265" elapsed="0.000489"/>
</branch>
<status status="PASS" start="2026-04-08T00:56:12.463191" elapsed="0.000645"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:56:12.463964" elapsed="0.000056"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:56:12.470271" elapsed="0.000625"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:56:12.471216" elapsed="0.000247"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:56:12.471737" elapsed="0.000143"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:56:12.466016" elapsed="0.006019"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T00:56:12.098835" elapsed="0.373594"/>
</kw>
<msg time="2026-04-08T00:56:12.472860" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:56:12.097857" elapsed="0.375091"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-08T00:56:12.096964" elapsed="0.376101"/>
</kw>
<msg time="2026-04-08T00:56:12.473124" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:56:12.095718" elapsed="0.377636"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:56:12.476554" elapsed="0.000315"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:56:12.477033" elapsed="0.000212"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:56:12.477407" elapsed="0.000101"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:56:12.473686" elapsed="0.003875"/>
</kw>
<msg time="2026-04-08T00:56:12.477723" level="INFO">${output} = 1</msg>
<var>${output}</var>
<arg>Utils.Run_Command_On_Controller</arg>
<arg>${member_ip}</arg>
<arg>${command}</arg>
<doc>Store current connection index, run keyword returning its result, restore connection in teardown.
Note that in order to avoid "got positional argument after named arguments", it is safer to use positional (not named) arguments on call.</doc>
<status status="PASS" start="2026-04-08T00:56:12.093724" elapsed="0.384025"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:56:12.478207" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:56:12.477936" elapsed="0.000318"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-08T00:56:12.478296" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:56:12.478462" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-08T00:56:12.091407" elapsed="0.387082"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-08T00:56:12.478538" elapsed="0.000027"/>
</return>
<msg time="2026-04-08T00:56:12.478687" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-08T00:56:12.088800" elapsed="0.389913"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-08T00:56:12.479291" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-08T00:56:12.478870" elapsed="0.000503">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-08T00:56:12.087706" elapsed="0.391796">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:56:14.483212" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:56:14.482305" elapsed="0.000983"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:56:14.485433" level="INFO">${member_ip} = 10.30.171.110</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:56:14.484705" elapsed="0.000767"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:56:14.486611" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

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

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T00:56:14.493751" elapsed="0.000803"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:56:14.496049" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.110" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:56:14.495510" elapsed="0.000723"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:56:14.497895" level="INFO">${conn_id} = 371</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:56:14.497186" elapsed="0.000807"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T00:56:14.500637" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T00:56:14.500714" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T00:56:14.500341" elapsed="0.000397"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:56:14.500963" elapsed="0.000354"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T00:56:14.502275" level="INFO">Logging into '10.30.171.110:22' as 'jenkins'.</msg>
<msg time="2026-04-08T00:56:14.833755" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 00:55:43 UTC 2026

  System load:  0.32               Processes:             124
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 8%                 IPv4 address for ens3: 10.30.171.110
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 00:56:12 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T00:56:14.501898" elapsed="0.332288"/>
</kw>
<msg time="2026-04-08T00:56:14.834351" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:56:14.501539" elapsed="0.332979"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T00:56:14.499389" elapsed="0.335680"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T00:56:14.838429" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-08T00:56:14.861536" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-08T00:56:14.862055" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-08T00:56:14.862424" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T00:56:14.837401" elapsed="0.025230"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:56:14.864825" elapsed="0.000799"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:56:14.867004" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:56:14.866403" elapsed="0.000743"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:56:14.867752" elapsed="0.000043"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:56:14.867414" elapsed="0.000444"/>
</branch>
<status status="PASS" start="2026-04-08T00:56:14.867331" elapsed="0.000605"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T00:56:14.868495" elapsed="0.000075"/>
</return>
<status status="PASS" start="2026-04-08T00:56:14.868132" elapsed="0.000505"/>
</branch>
<status status="PASS" start="2026-04-08T00:56:14.868066" elapsed="0.000651"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:56:14.868824" elapsed="0.000051"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:56:14.874866" elapsed="0.000504"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:56:14.875663" elapsed="0.000240"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:56:14.876333" elapsed="0.000150"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:56:14.870619" elapsed="0.006012"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T00:56:14.489670" elapsed="0.387261"/>
</kw>
<msg time="2026-04-08T00:56:14.877429" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:56:14.488658" elapsed="0.388852"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-08T00:56:14.487891" elapsed="0.389703"/>
</kw>
<msg time="2026-04-08T00:56:14.877636" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:56:14.487012" elapsed="0.390669"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:56:14.880580" elapsed="0.000313"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:56:14.881085" elapsed="0.000161"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:56:14.881398" elapsed="0.000095"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:56:14.877967" elapsed="0.003577"/>
</kw>
<msg time="2026-04-08T00:56:14.881637" level="INFO">${output} = 1</msg>
<var>${output}</var>
<arg>Utils.Run_Command_On_Controller</arg>
<arg>${member_ip}</arg>
<arg>${command}</arg>
<doc>Store current connection index, run keyword returning its result, restore connection in teardown.
Note that in order to avoid "got positional argument after named arguments", it is safer to use positional (not named) arguments on call.</doc>
<status status="PASS" start="2026-04-08T00:56:14.485777" elapsed="0.395884"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:56:14.882081" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:56:14.881838" elapsed="0.000286"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-08T00:56:14.882181" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:56:14.882339" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-08T00:56:14.483744" elapsed="0.398621"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-08T00:56:14.882411" elapsed="0.000026"/>
</return>
<msg time="2026-04-08T00:56:14.882553" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-08T00:56:14.481442" elapsed="0.401135"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-08T00:56:14.883206" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-08T00:56:14.882784" elapsed="0.000500">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-08T00:56:14.480313" elapsed="0.403085">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:56:16.887385" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:56:16.886576" elapsed="0.000882"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:56:16.889627" level="INFO">${member_ip} = 10.30.171.110</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:56:16.888936" elapsed="0.000766"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:56:16.891613" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

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

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T00:56:16.898223" elapsed="0.000781"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:56:16.900483" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.110" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:56:16.899934" elapsed="0.000657"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:56:16.902571" level="INFO">${conn_id} = 374</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:56:16.901615" elapsed="0.001054"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T00:56:16.904872" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T00:56:16.904948" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T00:56:16.904586" elapsed="0.000386"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:56:16.905181" elapsed="0.000443"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T00:56:16.906564" level="INFO">Logging into '10.30.171.110:22' as 'jenkins'.</msg>
<msg time="2026-04-08T00:56:17.217516" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 00:55:43 UTC 2026

  System load:  0.32               Processes:             124
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 8%                 IPv4 address for ens3: 10.30.171.110
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 00:56:14 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T00:56:16.906216" elapsed="0.311531"/>
</kw>
<msg time="2026-04-08T00:56:17.217865" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:56:16.905839" elapsed="0.312164"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T00:56:16.903815" elapsed="0.314595"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T00:56:17.220342" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-08T00:56:17.233754" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-08T00:56:17.234094" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-08T00:56:17.234353" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T00:56:17.219772" elapsed="0.014715"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:56:17.235876" elapsed="0.001063"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:56:17.238402" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:56:17.237748" elapsed="0.000801"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:56:17.239132" elapsed="0.000051"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:56:17.238794" elapsed="0.000496"/>
</branch>
<status status="PASS" start="2026-04-08T00:56:17.238698" elapsed="0.000672"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T00:56:17.239898" elapsed="0.000072"/>
</return>
<status status="PASS" start="2026-04-08T00:56:17.239572" elapsed="0.000468"/>
</branch>
<status status="PASS" start="2026-04-08T00:56:17.239504" elapsed="0.000618"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:56:17.240262" elapsed="0.000057"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:56:17.246836" elapsed="0.000340"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:56:17.247554" elapsed="0.000168"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:56:17.247911" elapsed="0.000118"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:56:17.243049" elapsed="0.005090"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T00:56:16.895248" elapsed="0.353131"/>
</kw>
<msg time="2026-04-08T00:56:17.248687" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:56:16.894548" elapsed="0.354198"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-08T00:56:16.893431" elapsed="0.355399"/>
</kw>
<msg time="2026-04-08T00:56:17.248871" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:56:16.892274" elapsed="0.356644"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:56:17.251876" elapsed="0.000352"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:56:17.252395" elapsed="0.000144"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:56:17.252685" elapsed="0.000096"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:56:17.249226" elapsed="0.003607"/>
</kw>
<msg time="2026-04-08T00:56:17.252925" level="INFO">${output} = 1</msg>
<var>${output}</var>
<arg>Utils.Run_Command_On_Controller</arg>
<arg>${member_ip}</arg>
<arg>${command}</arg>
<doc>Store current connection index, run keyword returning its result, restore connection in teardown.
Note that in order to avoid "got positional argument after named arguments", it is safer to use positional (not named) arguments on call.</doc>
<status status="PASS" start="2026-04-08T00:56:16.890306" elapsed="0.362644"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:56:17.253394" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:56:17.253123" elapsed="0.000315"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-08T00:56:17.253480" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:56:17.253629" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-08T00:56:16.887929" elapsed="0.365725"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-08T00:56:17.253700" elapsed="0.000025"/>
</return>
<msg time="2026-04-08T00:56:17.253842" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-08T00:56:16.885667" elapsed="0.368199"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-08T00:56:17.254444" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-08T00:56:17.254019" elapsed="0.000507">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-08T00:56:16.884378" elapsed="0.370264">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:56:19.258396" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:56:19.257556" elapsed="0.000911"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:56:19.260810" level="INFO">${member_ip} = 10.30.171.110</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:56:19.260043" elapsed="0.000844"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:56:19.262873" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

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

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T00:56:19.269831" elapsed="0.000827"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:56:19.272255" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.110" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:56:19.271646" elapsed="0.000724"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:56:19.274327" level="INFO">${conn_id} = 377</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:56:19.273410" elapsed="0.001020"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T00:56:19.276769" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T00:56:19.276847" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T00:56:19.276476" elapsed="0.000395"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:56:19.277081" elapsed="0.000401"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T00:56:19.278485" level="INFO">Logging into '10.30.171.110:22' as 'jenkins'.</msg>
<msg time="2026-04-08T00:56:19.641914" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 00:55:43 UTC 2026

  System load:  0.32               Processes:             124
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 8%                 IPv4 address for ens3: 10.30.171.110
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 00:56:17 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T00:56:19.278070" elapsed="0.363984"/>
</kw>
<msg time="2026-04-08T00:56:19.642135" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:56:19.277705" elapsed="0.364534"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T00:56:19.275615" elapsed="0.366901"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T00:56:19.644074" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-08T00:56:19.666650" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-08T00:56:19.666922" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-08T00:56:19.667073" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T00:56:19.643633" elapsed="0.023557"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:56:19.668203" elapsed="0.000435"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:56:19.669703" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:56:19.669249" elapsed="0.000558"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:56:19.670318" elapsed="0.000032"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:56:19.669978" elapsed="0.000420"/>
</branch>
<status status="PASS" start="2026-04-08T00:56:19.669916" elapsed="0.000540"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T00:56:19.670809" elapsed="0.000058"/>
</return>
<status status="PASS" start="2026-04-08T00:56:19.670603" elapsed="0.000312"/>
</branch>
<status status="PASS" start="2026-04-08T00:56:19.670554" elapsed="0.000420"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:56:19.671057" elapsed="0.000038"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:56:19.675250" elapsed="0.000334"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:56:19.675795" elapsed="0.000165"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:56:19.676150" elapsed="0.000244"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:56:19.672394" elapsed="0.004110"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T00:56:19.266760" elapsed="0.409968"/>
</kw>
<msg time="2026-04-08T00:56:19.677035" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:56:19.265981" elapsed="0.411146"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-08T00:56:19.265080" elapsed="0.412147"/>
</kw>
<msg time="2026-04-08T00:56:19.677269" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:56:19.263620" elapsed="0.413697"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:56:19.680364" elapsed="0.000319"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:56:19.680845" elapsed="0.000145"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:56:19.681137" elapsed="0.000142"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:56:19.677606" elapsed="0.003727"/>
</kw>
<msg time="2026-04-08T00:56:19.681426" level="INFO">${output} = 1</msg>
<var>${output}</var>
<arg>Utils.Run_Command_On_Controller</arg>
<arg>${member_ip}</arg>
<arg>${command}</arg>
<doc>Store current connection index, run keyword returning its result, restore connection in teardown.
Note that in order to avoid "got positional argument after named arguments", it is safer to use positional (not named) arguments on call.</doc>
<status status="PASS" start="2026-04-08T00:56:19.261419" elapsed="0.420033"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:56:19.681881" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:56:19.681630" elapsed="0.000294"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-08T00:56:19.681966" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:56:19.682114" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-08T00:56:19.259078" elapsed="0.423061"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-08T00:56:19.682201" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:56:19.682347" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-08T00:56:19.256662" elapsed="0.425710"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-08T00:56:19.682913" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-08T00:56:19.682524" elapsed="0.000463">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-08T00:56:19.255481" elapsed="0.427615">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:56:21.686738" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:56:21.685915" elapsed="0.000895"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:56:21.688807" level="INFO">${member_ip} = 10.30.171.110</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:56:21.688315" elapsed="0.000529"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:56:21.689957" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

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

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T00:56:21.697106" elapsed="0.000799"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:56:21.699444" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.110" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:56:21.698883" elapsed="0.000672"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:56:21.701412" level="INFO">${conn_id} = 380</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:56:21.700522" elapsed="0.000988"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T00:56:21.703974" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T00:56:21.704055" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T00:56:21.703640" elapsed="0.000440"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:56:21.704315" elapsed="0.000334"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T00:56:21.705581" level="INFO">Logging into '10.30.171.110:22' as 'jenkins'.</msg>
<msg time="2026-04-08T00:56:22.003839" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 00:55:43 UTC 2026

  System load:  0.32               Processes:             124
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 8%                 IPv4 address for ens3: 10.30.171.110
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 00:56:19 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T00:56:21.705254" elapsed="0.298758"/>
</kw>
<msg time="2026-04-08T00:56:22.004101" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:56:21.704869" elapsed="0.299352"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T00:56:21.702827" elapsed="0.301684"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T00:56:22.005986" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-08T00:56:22.028924" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-08T00:56:22.029246" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-08T00:56:22.029400" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T00:56:22.005568" elapsed="0.023930"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:56:22.030536" elapsed="0.000504"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:56:22.032105" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:56:22.031632" elapsed="0.000598"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:56:22.032649" elapsed="0.000032"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:56:22.032402" elapsed="0.000325"/>
</branch>
<status status="PASS" start="2026-04-08T00:56:22.032341" elapsed="0.000443"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T00:56:22.033127" elapsed="0.000089"/>
</return>
<status status="PASS" start="2026-04-08T00:56:22.032927" elapsed="0.000339"/>
</branch>
<status status="PASS" start="2026-04-08T00:56:22.032879" elapsed="0.000444"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:56:22.033401" elapsed="0.000038"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:56:22.037621" elapsed="0.000334"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:56:22.038255" elapsed="0.000166"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:56:22.038613" elapsed="0.000103"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:56:22.034712" elapsed="0.004130"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T00:56:21.693133" elapsed="0.345930"/>
</kw>
<msg time="2026-04-08T00:56:22.039385" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:56:21.691995" elapsed="0.347452"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-08T00:56:21.691229" elapsed="0.348301"/>
</kw>
<msg time="2026-04-08T00:56:22.039571" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:56:21.690498" elapsed="0.349120"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:56:22.044261" elapsed="0.000315"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:56:22.044738" elapsed="0.000145"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:56:22.045029" elapsed="0.000096"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:56:22.039905" elapsed="0.005343"/>
</kw>
<msg time="2026-04-08T00:56:22.045343" level="INFO">${output} = 1</msg>
<var>${output}</var>
<arg>Utils.Run_Command_On_Controller</arg>
<arg>${member_ip}</arg>
<arg>${command}</arg>
<doc>Store current connection index, run keyword returning its result, restore connection in teardown.
Note that in order to avoid "got positional argument after named arguments", it is safer to use positional (not named) arguments on call.</doc>
<status status="PASS" start="2026-04-08T00:56:21.689141" elapsed="0.356226"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:56:22.045794" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:56:22.045546" elapsed="0.000291"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-08T00:56:22.045878" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:56:22.046026" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-08T00:56:21.687323" elapsed="0.358727"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-08T00:56:22.046094" elapsed="0.000025"/>
</return>
<msg time="2026-04-08T00:56:22.046253" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-08T00:56:21.685038" elapsed="0.361239"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-08T00:56:22.046820" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-08T00:56:22.046429" elapsed="0.000468">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-08T00:56:21.683963" elapsed="0.363053">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:56:24.050704" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:56:24.049927" elapsed="0.000847"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:56:24.052784" level="INFO">${member_ip} = 10.30.171.110</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:56:24.052245" elapsed="0.000576"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:56:24.053933" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

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

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T00:56:24.061053" elapsed="0.000802"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:56:24.063533" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.110" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:56:24.062975" elapsed="0.000677"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:56:24.065327" level="INFO">${conn_id} = 383</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:56:24.064614" elapsed="0.000811"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T00:56:24.067898" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T00:56:24.067976" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T00:56:24.067609" elapsed="0.000392"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:56:24.068227" elapsed="0.000362"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T00:56:24.069504" level="INFO">Logging into '10.30.171.110:22' as 'jenkins'.</msg>
<msg time="2026-04-08T00:56:24.394539" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 00:55:43 UTC 2026

  System load:  0.32               Processes:             124
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 8%                 IPv4 address for ens3: 10.30.171.110
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 00:56:21 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T00:56:24.069171" elapsed="0.325518"/>
</kw>
<msg time="2026-04-08T00:56:24.394772" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:56:24.068811" elapsed="0.326048"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T00:56:24.066836" elapsed="0.328305"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T00:56:24.396589" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-08T00:56:24.419494" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-08T00:56:24.420047" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-08T00:56:24.420456" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T00:56:24.396194" elapsed="0.024493"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:56:24.423490" elapsed="0.001052"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:56:24.427405" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:56:24.426098" elapsed="0.001583"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:56:24.428674" elapsed="0.000072"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:56:24.428088" elapsed="0.000767"/>
</branch>
<status status="PASS" start="2026-04-08T00:56:24.427955" elapsed="0.001036"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T00:56:24.430036" elapsed="0.000263"/>
</return>
<status status="PASS" start="2026-04-08T00:56:24.429483" elapsed="0.000942"/>
</branch>
<status status="PASS" start="2026-04-08T00:56:24.429365" elapsed="0.001200"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:56:24.430777" elapsed="0.000047"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:56:24.435081" elapsed="0.000366"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:56:24.435659" elapsed="0.000167"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:56:24.436014" elapsed="0.000101"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:56:24.432241" elapsed="0.004079"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T00:56:24.056811" elapsed="0.379728"/>
</kw>
<msg time="2026-04-08T00:56:24.436906" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:56:24.055834" elapsed="0.381136"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-08T00:56:24.055062" elapsed="0.381992"/>
</kw>
<msg time="2026-04-08T00:56:24.437095" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:56:24.054351" elapsed="0.382791"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:56:24.440087" elapsed="0.000335"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:56:24.440584" elapsed="0.000144"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:56:24.440874" elapsed="0.000096"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:56:24.437452" elapsed="0.003569"/>
</kw>
<msg time="2026-04-08T00:56:24.441112" level="INFO">${output} = 1</msg>
<var>${output}</var>
<arg>Utils.Run_Command_On_Controller</arg>
<arg>${member_ip}</arg>
<arg>${command}</arg>
<doc>Store current connection index, run keyword returning its result, restore connection in teardown.
Note that in order to avoid "got positional argument after named arguments", it is safer to use positional (not named) arguments on call.</doc>
<status status="PASS" start="2026-04-08T00:56:24.053119" elapsed="0.388018"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:56:24.441588" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:56:24.441342" elapsed="0.000290"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-08T00:56:24.441674" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:56:24.441823" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-08T00:56:24.051250" elapsed="0.390598"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-08T00:56:24.441895" elapsed="0.000026"/>
</return>
<msg time="2026-04-08T00:56:24.442036" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-08T00:56:24.049038" elapsed="0.393023"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-08T00:56:24.442646" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-08T00:56:24.442229" elapsed="0.000492">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-08T00:56:24.047927" elapsed="0.394905">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:56:26.446477" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:56:26.445653" elapsed="0.000894"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:56:26.448572" level="INFO">${member_ip} = 10.30.171.110</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:56:26.447931" elapsed="0.000701"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:56:26.450478" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

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

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T00:56:26.455746" elapsed="0.000802"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:56:26.458056" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.110" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:56:26.457489" elapsed="0.000678"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:56:26.459912" level="INFO">${conn_id} = 386</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:56:26.459221" elapsed="0.000787"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T00:56:26.462747" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T00:56:26.462826" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T00:56:26.462440" elapsed="0.000410"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:56:26.463058" elapsed="0.000363"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T00:56:26.464335" level="INFO">Logging into '10.30.171.110:22' as 'jenkins'.</msg>
<msg time="2026-04-08T00:56:26.789559" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 00:55:43 UTC 2026

  System load:  0.32               Processes:             124
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 8%                 IPv4 address for ens3: 10.30.171.110
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 00:56:24 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T00:56:26.463993" elapsed="0.325882"/>
</kw>
<msg time="2026-04-08T00:56:26.790060" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:56:26.463638" elapsed="0.326670"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T00:56:26.461505" elapsed="0.329374"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T00:56:26.794478" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-08T00:56:26.817542" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-08T00:56:26.818062" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-08T00:56:26.818523" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T00:56:26.793564" elapsed="0.025175"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:56:26.820971" elapsed="0.000996"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:56:26.824278" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:56:26.823290" elapsed="0.001220"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:56:26.825404" elapsed="0.000065"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:56:26.824860" elapsed="0.000712"/>
</branch>
<status status="PASS" start="2026-04-08T00:56:26.824735" elapsed="0.000961"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T00:56:26.826578" elapsed="0.000124"/>
</return>
<status status="PASS" start="2026-04-08T00:56:26.826013" elapsed="0.000793"/>
</branch>
<status status="PASS" start="2026-04-08T00:56:26.825907" elapsed="0.000973"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:56:26.826963" elapsed="0.000037"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:56:26.831376" elapsed="0.000340"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:56:26.831928" elapsed="0.000169"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:56:26.832306" elapsed="0.000103"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:56:26.828317" elapsed="0.004199"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T00:56:26.452732" elapsed="0.380002"/>
</kw>
<msg time="2026-04-08T00:56:26.833033" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:56:26.452036" elapsed="0.381055"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-08T00:56:26.451505" elapsed="0.381748"/>
</kw>
<msg time="2026-04-08T00:56:26.833298" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:56:26.450983" elapsed="0.382364"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:56:26.836373" elapsed="0.000334"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:56:26.836874" elapsed="0.000145"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:56:26.837299" elapsed="0.000102"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:56:26.833708" elapsed="0.003746"/>
</kw>
<msg time="2026-04-08T00:56:26.837549" level="INFO">${output} = 1</msg>
<var>${output}</var>
<arg>Utils.Run_Command_On_Controller</arg>
<arg>${member_ip}</arg>
<arg>${command}</arg>
<doc>Store current connection index, run keyword returning its result, restore connection in teardown.
Note that in order to avoid "got positional argument after named arguments", it is safer to use positional (not named) arguments on call.</doc>
<status status="PASS" start="2026-04-08T00:56:26.449108" elapsed="0.388465"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:56:26.838008" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:56:26.837757" elapsed="0.000294"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-08T00:56:26.838094" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:56:26.838271" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-08T00:56:26.446995" elapsed="0.391303"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-08T00:56:26.838345" elapsed="0.000046"/>
</return>
<msg time="2026-04-08T00:56:26.838517" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-08T00:56:26.444803" elapsed="0.393739"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-08T00:56:26.839100" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-08T00:56:26.838701" elapsed="0.000687">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-08T00:56:26.443726" elapsed="0.395785">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:56:28.843320" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:56:28.842394" elapsed="0.001004"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:56:28.844947" level="INFO">${member_ip} = 10.30.171.110</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:56:28.844540" elapsed="0.000445"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:56:28.846124" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

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

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T00:56:28.852974" elapsed="0.000825"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:56:28.855410" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.110" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:56:28.854838" elapsed="0.000681"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:56:28.857133" level="INFO">${conn_id} = 389</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:56:28.856447" elapsed="0.000799"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T00:56:28.859896" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T00:56:28.859973" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T00:56:28.859581" elapsed="0.000416"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:56:28.860231" elapsed="0.000411"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T00:56:28.861566" level="INFO">Logging into '10.30.171.110:22' as 'jenkins'.</msg>
<msg time="2026-04-08T00:56:29.175176" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 00:55:43 UTC 2026

  System load:  0.32               Processes:             124
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 8%                 IPv4 address for ens3: 10.30.171.110
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 00:56:26 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T00:56:28.861242" elapsed="0.314101"/>
</kw>
<msg time="2026-04-08T00:56:29.175427" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:56:28.860863" elapsed="0.314659"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T00:56:28.858802" elapsed="0.317009"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T00:56:29.177291" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-08T00:56:29.199998" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-08T00:56:29.200546" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-08T00:56:29.200875" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T00:56:29.176872" elapsed="0.024217"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:56:29.203343" elapsed="0.000913"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:56:29.206544" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:56:29.205472" elapsed="0.001312"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:56:29.207411" elapsed="0.000042"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:56:29.207060" elapsed="0.000458"/>
</branch>
<status status="PASS" start="2026-04-08T00:56:29.206978" elapsed="0.000616"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T00:56:29.208080" elapsed="0.000074"/>
</return>
<status status="PASS" start="2026-04-08T00:56:29.207801" elapsed="0.000444"/>
</branch>
<status status="PASS" start="2026-04-08T00:56:29.207729" elapsed="0.000598"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:56:29.208440" elapsed="0.000053"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:56:29.214440" elapsed="0.000456"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:56:29.215107" elapsed="0.000182"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:56:29.215479" elapsed="0.000101"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:56:29.210347" elapsed="0.005339"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T00:56:28.849093" elapsed="0.366813"/>
</kw>
<msg time="2026-04-08T00:56:29.216229" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:56:28.848136" elapsed="0.368154"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-08T00:56:28.847306" elapsed="0.369067"/>
</kw>
<msg time="2026-04-08T00:56:29.216414" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:56:28.846542" elapsed="0.369918"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:56:29.219436" elapsed="0.000310"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:56:29.219907" elapsed="0.000142"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:56:29.220212" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:56:29.216744" elapsed="0.003615"/>
</kw>
<msg time="2026-04-08T00:56:29.220522" level="INFO">${output} = 1</msg>
<var>${output}</var>
<arg>Utils.Run_Command_On_Controller</arg>
<arg>${member_ip}</arg>
<arg>${command}</arg>
<doc>Store current connection index, run keyword returning its result, restore connection in teardown.
Note that in order to avoid "got positional argument after named arguments", it is safer to use positional (not named) arguments on call.</doc>
<status status="PASS" start="2026-04-08T00:56:28.845315" elapsed="0.375233"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:56:29.220983" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:56:29.220730" elapsed="0.000296"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-08T00:56:29.221067" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:56:29.221239" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-08T00:56:28.843838" elapsed="0.377427"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-08T00:56:29.221313" elapsed="0.000026"/>
</return>
<msg time="2026-04-08T00:56:29.221457" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-08T00:56:28.841546" elapsed="0.379936"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-08T00:56:29.222058" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-08T00:56:29.221635" elapsed="0.000501">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-08T00:56:28.840451" elapsed="0.381860">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:56:31.226042" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:56:31.225274" elapsed="0.000843"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:56:31.228469" level="INFO">${member_ip} = 10.30.171.110</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:56:31.227730" elapsed="0.000804"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:56:31.230255" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

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

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T00:56:31.237640" elapsed="0.000928"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:56:31.240105" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.110" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:56:31.239539" elapsed="0.000700"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:56:31.242297" level="INFO">${conn_id} = 392</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:56:31.241260" elapsed="0.001149"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T00:56:31.244750" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T00:56:31.244834" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T00:56:31.244442" elapsed="0.000418"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:56:31.245115" elapsed="0.000382"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T00:56:31.246620" level="INFO">Logging into '10.30.171.110:22' as 'jenkins'.</msg>
<msg time="2026-04-08T00:56:31.604991" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 00:55:43 UTC 2026

  System load:  0.32               Processes:             124
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 8%                 IPv4 address for ens3: 10.30.171.110
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 00:56:29 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T00:56:31.246098" elapsed="0.382658"/>
</kw>
<msg time="2026-04-08T00:56:31.628958" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:56:31.245723" elapsed="0.383536"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T00:56:31.243606" elapsed="0.386276"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T00:56:31.633316" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-08T00:56:31.656423" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-08T00:56:31.656980" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-08T00:56:31.657372" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T00:56:31.632415" elapsed="0.025171"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:56:31.659822" elapsed="0.001068"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:56:31.663266" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:56:31.662143" elapsed="0.001360"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:56:31.664511" elapsed="0.000069"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:56:31.663951" elapsed="0.000737"/>
</branch>
<status status="PASS" start="2026-04-08T00:56:31.663731" elapsed="0.001086"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T00:56:31.665272" elapsed="0.000059"/>
</return>
<status status="PASS" start="2026-04-08T00:56:31.665050" elapsed="0.000330"/>
</branch>
<status status="PASS" start="2026-04-08T00:56:31.664992" elapsed="0.000447"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:56:31.665521" elapsed="0.000038"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:56:31.669823" elapsed="0.000416"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:56:31.670450" elapsed="0.000172"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:56:31.670810" elapsed="0.000100"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:56:31.666915" elapsed="0.004103"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T00:56:31.233532" elapsed="0.437727"/>
</kw>
<msg time="2026-04-08T00:56:31.671563" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:56:31.232246" elapsed="0.439382"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-08T00:56:31.231411" elapsed="0.440303"/>
</kw>
<msg time="2026-04-08T00:56:31.671756" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:56:31.230661" elapsed="0.441143"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:56:31.674807" elapsed="0.000318"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:56:31.675307" elapsed="0.000145"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:56:31.675599" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:56:31.672126" elapsed="0.003622"/>
</kw>
<msg time="2026-04-08T00:56:31.675858" level="INFO">${output} = 1</msg>
<var>${output}</var>
<arg>Utils.Run_Command_On_Controller</arg>
<arg>${member_ip}</arg>
<arg>${command}</arg>
<doc>Store current connection index, run keyword returning its result, restore connection in teardown.
Note that in order to avoid "got positional argument after named arguments", it is safer to use positional (not named) arguments on call.</doc>
<status status="PASS" start="2026-04-08T00:56:31.229109" elapsed="0.446776"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:56:31.676331" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:56:31.676061" elapsed="0.000314"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-08T00:56:31.676417" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:56:31.676571" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-08T00:56:31.226638" elapsed="0.449959"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-08T00:56:31.676643" elapsed="0.000026"/>
</return>
<msg time="2026-04-08T00:56:31.676788" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-08T00:56:31.224400" elapsed="0.452413"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-08T00:56:31.677457" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-08T00:56:31.677034" elapsed="0.000500">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-08T00:56:31.223299" elapsed="0.454352">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:56:33.681294" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:56:33.680515" elapsed="0.000851"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:56:33.683497" level="INFO">${member_ip} = 10.30.171.110</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:56:33.682840" elapsed="0.000716"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:56:33.685318" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

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

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T00:56:33.692973" elapsed="0.000797"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:56:33.695292" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.110" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:56:33.694727" elapsed="0.000677"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:56:33.697238" level="INFO">${conn_id} = 395</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:56:33.696333" elapsed="0.001003"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T00:56:33.699625" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T00:56:33.699702" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T00:56:33.699335" elapsed="0.000391"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:56:33.699933" elapsed="0.000352"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T00:56:33.701208" level="INFO">Logging into '10.30.171.110:22' as 'jenkins'.</msg>
<msg time="2026-04-08T00:56:34.021370" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 00:55:43 UTC 2026

  System load:  0.32               Processes:             124
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 8%                 IPv4 address for ens3: 10.30.171.110
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 00:56:31 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T00:56:33.700863" elapsed="0.320686"/>
</kw>
<msg time="2026-04-08T00:56:34.021644" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:56:33.700504" elapsed="0.321245"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T00:56:33.698547" elapsed="0.323515"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T00:56:34.023589" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-08T00:56:34.046200" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-08T00:56:34.046761" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-08T00:56:34.047204" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T00:56:34.023160" elapsed="0.024277"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:56:34.049736" elapsed="0.000933"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:56:34.053002" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:56:34.051903" elapsed="0.001366"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:56:34.054039" elapsed="0.000033"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:56:34.053633" elapsed="0.000490"/>
</branch>
<status status="PASS" start="2026-04-08T00:56:34.053507" elapsed="0.000694"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T00:56:34.054558" elapsed="0.000055"/>
</return>
<status status="PASS" start="2026-04-08T00:56:34.054351" elapsed="0.000311"/>
</branch>
<status status="PASS" start="2026-04-08T00:56:34.054302" elapsed="0.000419"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:56:34.054806" elapsed="0.000039"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:56:34.059267" elapsed="0.000347"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:56:34.059828" elapsed="0.000173"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:56:34.060213" elapsed="0.000105"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:56:34.056191" elapsed="0.004239"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T00:56:33.689159" elapsed="0.371497"/>
</kw>
<msg time="2026-04-08T00:56:34.061007" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:56:33.688225" elapsed="0.372845"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-08T00:56:33.687186" elapsed="0.373994"/>
</kw>
<msg time="2026-04-08T00:56:34.061224" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:56:33.685947" elapsed="0.375325"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:56:34.064308" elapsed="0.000316"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:56:34.064786" elapsed="0.000185"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:56:34.065117" elapsed="0.000112"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:56:34.061655" elapsed="0.003626"/>
</kw>
<msg time="2026-04-08T00:56:34.065373" level="INFO">${output} = 1</msg>
<var>${output}</var>
<arg>Utils.Run_Command_On_Controller</arg>
<arg>${member_ip}</arg>
<arg>${command}</arg>
<doc>Store current connection index, run keyword returning its result, restore connection in teardown.
Note that in order to avoid "got positional argument after named arguments", it is safer to use positional (not named) arguments on call.</doc>
<status status="PASS" start="2026-04-08T00:56:33.684029" elapsed="0.381369"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:56:34.065819" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:56:34.065573" elapsed="0.000289"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-08T00:56:34.065904" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:56:34.066054" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-08T00:56:33.681808" elapsed="0.384272"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-08T00:56:34.066125" elapsed="0.000025"/>
</return>
<msg time="2026-04-08T00:56:34.066287" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-08T00:56:33.679634" elapsed="0.386677"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-08T00:56:34.066999" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-08T00:56:34.066464" elapsed="0.000614">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-08T00:56:33.678521" elapsed="0.388778">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:56:36.071197" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:56:36.070321" elapsed="0.000951"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:56:36.073930" level="INFO">${member_ip} = 10.30.171.110</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:56:36.073095" elapsed="0.000889"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:56:36.075203" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

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

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T00:56:36.082439" elapsed="0.000924"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:56:36.084962" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.110" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:56:36.084352" elapsed="0.000733"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:56:36.087037" level="INFO">${conn_id} = 398</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:56:36.086077" elapsed="0.001136"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T00:56:36.089605" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T00:56:36.089684" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T00:56:36.089273" elapsed="0.000434"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:56:36.089920" elapsed="0.000374"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T00:56:36.091413" level="INFO">Logging into '10.30.171.110:22' as 'jenkins'.</msg>
<msg time="2026-04-08T00:56:36.418991" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 00:55:43 UTC 2026

  System load:  0.32               Processes:             124
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 8%                 IPv4 address for ens3: 10.30.171.110
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 00:56:33 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T00:56:36.090882" elapsed="0.328298"/>
</kw>
<msg time="2026-04-08T00:56:36.419272" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:56:36.090520" elapsed="0.328867"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T00:56:36.088471" elapsed="0.331207"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T00:56:36.421190" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-08T00:56:36.444092" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-08T00:56:36.444850" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-08T00:56:36.445248" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T00:56:36.420734" elapsed="0.024747"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:56:36.447920" elapsed="0.001294"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:56:36.451646" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:56:36.450539" elapsed="0.001354"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:56:36.452957" elapsed="0.000076"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:56:36.452298" elapsed="0.000849"/>
</branch>
<status status="PASS" start="2026-04-08T00:56:36.452133" elapsed="0.001521"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T00:56:36.454524" elapsed="0.000190"/>
</return>
<status status="PASS" start="2026-04-08T00:56:36.454004" elapsed="0.000829"/>
</branch>
<status status="PASS" start="2026-04-08T00:56:36.453890" elapsed="0.001075"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:56:36.455050" elapsed="0.000037"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:56:36.459385" elapsed="0.000340"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:56:36.459933" elapsed="0.000168"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:56:36.460306" elapsed="0.000100"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:56:36.456436" elapsed="0.004228"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T00:56:36.078296" elapsed="0.382597"/>
</kw>
<msg time="2026-04-08T00:56:36.461262" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:56:36.077125" elapsed="0.384204"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-08T00:56:36.076368" elapsed="0.385046"/>
</kw>
<msg time="2026-04-08T00:56:36.461455" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:56:36.075620" elapsed="0.385882"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:56:36.466298" elapsed="0.000320"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:56:36.466797" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:56:36.467093" elapsed="0.000111"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:56:36.461790" elapsed="0.005467"/>
</kw>
<msg time="2026-04-08T00:56:36.467350" level="INFO">${output} = 1</msg>
<var>${output}</var>
<arg>Utils.Run_Command_On_Controller</arg>
<arg>${member_ip}</arg>
<arg>${command}</arg>
<doc>Store current connection index, run keyword returning its result, restore connection in teardown.
Note that in order to avoid "got positional argument after named arguments", it is safer to use positional (not named) arguments on call.</doc>
<status status="PASS" start="2026-04-08T00:56:36.074349" elapsed="0.393026"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:56:36.467796" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:56:36.467550" elapsed="0.000289"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-08T00:56:36.467881" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:56:36.468030" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-08T00:56:36.071988" elapsed="0.396067"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-08T00:56:36.468101" elapsed="0.000025"/>
</return>
<msg time="2026-04-08T00:56:36.468259" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-08T00:56:36.069332" elapsed="0.398952"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-08T00:56:36.468823" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-08T00:56:36.468434" elapsed="0.000465">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-08T00:56:36.068116" elapsed="0.400895">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:56:38.473109" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:56:38.472261" elapsed="0.000954"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:56:38.475399" level="INFO">${member_ip} = 10.30.171.110</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:56:38.474730" elapsed="0.000729"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:56:38.477725" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

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

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T00:56:38.483196" elapsed="0.000841"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:56:38.485682" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.110" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:56:38.485022" elapsed="0.000784"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:56:38.487826" level="INFO">${conn_id} = 401</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:56:38.486787" elapsed="0.001137"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T00:56:38.490437" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T00:56:38.490516" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T00:56:38.490127" elapsed="0.000413"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:56:38.490752" elapsed="0.000360"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T00:56:38.492268" level="INFO">Logging into '10.30.171.110:22' as 'jenkins'.</msg>
<msg time="2026-04-08T00:56:38.799397" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 00:55:43 UTC 2026

  System load:  0.32               Processes:             124
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 8%                 IPv4 address for ens3: 10.30.171.110
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 00:56:36 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T00:56:38.491911" elapsed="0.307655"/>
</kw>
<msg time="2026-04-08T00:56:38.799655" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:56:38.491534" elapsed="0.308223"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T00:56:38.489327" elapsed="0.310729"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T00:56:38.801554" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-08T00:56:38.824076" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-08T00:56:38.824440" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-08T00:56:38.824649" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T00:56:38.801127" elapsed="0.023655"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:56:38.826179" elapsed="0.000585"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:56:38.828220" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:56:38.827574" elapsed="0.000794"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:56:38.828932" elapsed="0.000043"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:56:38.828599" elapsed="0.000442"/>
</branch>
<status status="PASS" start="2026-04-08T00:56:38.828516" elapsed="0.000602"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T00:56:38.829635" elapsed="0.000075"/>
</return>
<status status="PASS" start="2026-04-08T00:56:38.829349" elapsed="0.000427"/>
</branch>
<status status="PASS" start="2026-04-08T00:56:38.829281" elapsed="0.000574"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:56:38.829965" elapsed="0.000052"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:56:38.836092" elapsed="0.000529"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:56:38.836993" elapsed="0.000245"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:56:38.837507" elapsed="0.000142"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:56:38.831901" elapsed="0.005905"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T00:56:38.480149" elapsed="0.358004"/>
</kw>
<msg time="2026-04-08T00:56:38.838709" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:56:38.479446" elapsed="0.359347"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-08T00:56:38.478869" elapsed="0.360041"/>
</kw>
<msg time="2026-04-08T00:56:38.838968" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:56:38.478335" elapsed="0.360696"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:56:38.841896" elapsed="0.000350"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:56:38.842410" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:56:38.842703" elapsed="0.000096"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:56:38.839346" elapsed="0.003504"/>
</kw>
<msg time="2026-04-08T00:56:38.842943" level="INFO">${output} = 1</msg>
<var>${output}</var>
<arg>Utils.Run_Command_On_Controller</arg>
<arg>${member_ip}</arg>
<arg>${command}</arg>
<doc>Store current connection index, run keyword returning its result, restore connection in teardown.
Note that in order to avoid "got positional argument after named arguments", it is safer to use positional (not named) arguments on call.</doc>
<status status="PASS" start="2026-04-08T00:56:38.475994" elapsed="0.366974"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:56:38.843469" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:56:38.843144" elapsed="0.000369"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-08T00:56:38.843555" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:56:38.843706" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-08T00:56:38.473752" elapsed="0.369979"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-08T00:56:38.843776" elapsed="0.000027"/>
</return>
<msg time="2026-04-08T00:56:38.843920" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-08T00:56:38.471394" elapsed="0.372551"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-08T00:56:38.844523" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-08T00:56:38.844103" elapsed="0.000496">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-08T00:56:38.470131" elapsed="0.374580">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:56:40.848421" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:56:40.847619" elapsed="0.000874"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:56:40.850629" level="INFO">${member_ip} = 10.30.171.110</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:56:40.849981" elapsed="0.000750"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:56:40.852563" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

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

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T00:56:40.859942" elapsed="0.000807"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:56:40.862292" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.110" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:56:40.861718" elapsed="0.000686"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:56:40.864078" level="INFO">${conn_id} = 404</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:56:40.863380" elapsed="0.000816"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T00:56:40.866793" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T00:56:40.866870" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T00:56:40.866506" elapsed="0.000389"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:56:40.867125" elapsed="0.000355"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T00:56:40.868484" level="INFO">Logging into '10.30.171.110:22' as 'jenkins'.</msg>
<msg time="2026-04-08T00:56:41.172871" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 00:55:43 UTC 2026

  System load:  0.32               Processes:             124
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 8%                 IPv4 address for ens3: 10.30.171.110
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 00:56:38 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T00:56:40.868137" elapsed="0.304893"/>
</kw>
<msg time="2026-04-08T00:56:41.173113" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:56:40.867723" elapsed="0.305520"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T00:56:40.865650" elapsed="0.307925"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T00:56:41.175111" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-08T00:56:41.197234" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-08T00:56:41.197807" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-08T00:56:41.198142" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T00:56:41.174699" elapsed="0.023694"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:56:41.200658" elapsed="0.000936"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:56:41.203966" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:56:41.202863" elapsed="0.001364"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:56:41.204647" elapsed="0.000031"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:56:41.204399" elapsed="0.000327"/>
</branch>
<status status="PASS" start="2026-04-08T00:56:41.204338" elapsed="0.000448"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T00:56:41.205147" elapsed="0.000079"/>
</return>
<status status="PASS" start="2026-04-08T00:56:41.204941" elapsed="0.000335"/>
</branch>
<status status="PASS" start="2026-04-08T00:56:41.204891" elapsed="0.000445"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:56:41.205419" elapsed="0.000038"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:56:41.209665" elapsed="0.000336"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:56:41.210308" elapsed="0.000163"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:56:41.210659" elapsed="0.000100"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:56:41.206749" elapsed="0.004118"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T00:56:40.856820" elapsed="0.354267"/>
</kw>
<msg time="2026-04-08T00:56:41.211495" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:56:40.855987" elapsed="0.355572"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-08T00:56:40.854515" elapsed="0.357127"/>
</kw>
<msg time="2026-04-08T00:56:41.211684" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:56:40.853226" elapsed="0.358505"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:56:41.214739" elapsed="0.000322"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:56:41.215246" elapsed="0.000148"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:56:41.215544" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:56:41.212074" elapsed="0.003621"/>
</kw>
<msg time="2026-04-08T00:56:41.215789" level="INFO">${output} = 1</msg>
<var>${output}</var>
<arg>Utils.Run_Command_On_Controller</arg>
<arg>${member_ip}</arg>
<arg>${command}</arg>
<doc>Store current connection index, run keyword returning its result, restore connection in teardown.
Note that in order to avoid "got positional argument after named arguments", it is safer to use positional (not named) arguments on call.</doc>
<status status="PASS" start="2026-04-08T00:56:40.851272" elapsed="0.364542"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:56:41.216293" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:56:41.216023" elapsed="0.000316"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-08T00:56:41.216382" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:56:41.216536" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-08T00:56:40.848948" elapsed="0.367614"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-08T00:56:41.216608" elapsed="0.000026"/>
</return>
<msg time="2026-04-08T00:56:41.216752" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-08T00:56:40.846742" elapsed="0.370035"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-08T00:56:41.217338" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-08T00:56:41.216931" elapsed="0.000480">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-08T00:56:40.845652" elapsed="0.371871">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:56:43.221041" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:56:43.220277" elapsed="0.000833"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:56:43.223277" level="INFO">${member_ip} = 10.30.171.110</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:56:43.222622" elapsed="0.000714"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:56:43.224966" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

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

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T00:56:43.232944" elapsed="0.000803"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:56:43.235459" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.110" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:56:43.234724" elapsed="0.000868"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:56:43.237456" level="INFO">${conn_id} = 407</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:56:43.236738" elapsed="0.000815"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T00:56:43.240257" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T00:56:43.240377" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T00:56:43.239899" elapsed="0.000514"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:56:43.240729" elapsed="0.000548"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T00:56:43.242704" level="INFO">Logging into '10.30.171.110:22' as 'jenkins'.</msg>
<msg time="2026-04-08T00:56:43.552089" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 00:55:43 UTC 2026

  System load:  0.32               Processes:             124
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 8%                 IPv4 address for ens3: 10.30.171.110
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 00:56:41 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T00:56:43.242247" elapsed="0.310023"/>
</kw>
<msg time="2026-04-08T00:56:43.552389" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:56:43.241617" elapsed="0.310871"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T00:56:43.238923" elapsed="0.313850"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T00:56:43.554261" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-08T00:56:43.576373" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-08T00:56:43.576876" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-08T00:56:43.577257" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T00:56:43.553842" elapsed="0.023632"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:56:43.579622" elapsed="0.000954"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:56:43.582213" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:56:43.581569" elapsed="0.000793"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:56:43.582916" elapsed="0.000042"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:56:43.582589" elapsed="0.000435"/>
</branch>
<status status="PASS" start="2026-04-08T00:56:43.582508" elapsed="0.000593"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T00:56:43.583669" elapsed="0.000071"/>
</return>
<status status="PASS" start="2026-04-08T00:56:43.583390" elapsed="0.000417"/>
</branch>
<status status="PASS" start="2026-04-08T00:56:43.583322" elapsed="0.000567"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:56:43.583998" elapsed="0.000051"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:56:43.589684" elapsed="0.000345"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:56:43.590268" elapsed="0.000170"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:56:43.590631" elapsed="0.000100"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:56:43.585823" elapsed="0.005016"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T00:56:43.228287" elapsed="0.362776"/>
</kw>
<msg time="2026-04-08T00:56:43.591500" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:56:43.227194" elapsed="0.364365"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-08T00:56:43.226265" elapsed="0.365378"/>
</kw>
<msg time="2026-04-08T00:56:43.591685" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:56:43.225462" elapsed="0.366270"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:56:43.594689" elapsed="0.000319"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:56:43.595224" elapsed="0.000148"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:56:43.595521" elapsed="0.000096"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:56:43.592091" elapsed="0.003578"/>
</kw>
<msg time="2026-04-08T00:56:43.595762" level="INFO">${output} = 1</msg>
<var>${output}</var>
<arg>Utils.Run_Command_On_Controller</arg>
<arg>${member_ip}</arg>
<arg>${command}</arg>
<doc>Store current connection index, run keyword returning its result, restore connection in teardown.
Note that in order to avoid "got positional argument after named arguments", it is safer to use positional (not named) arguments on call.</doc>
<status status="PASS" start="2026-04-08T00:56:43.223970" elapsed="0.371818"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:56:43.596228" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:56:43.595963" elapsed="0.000311"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-08T00:56:43.596316" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:56:43.596493" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-08T00:56:43.221603" elapsed="0.374916"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-08T00:56:43.596565" elapsed="0.000027"/>
</return>
<msg time="2026-04-08T00:56:43.596710" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-08T00:56:43.219368" elapsed="0.377367"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-08T00:56:43.597297" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-08T00:56:43.596891" elapsed="0.000478">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-08T00:56:43.218318" elapsed="0.379161">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:56:45.599444" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:56:45.599056" elapsed="0.000446"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:56:45.600429" level="INFO">${member_ip} = 10.30.171.110</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:56:45.600137" elapsed="0.000319"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:56:45.601279" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

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

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T00:56:45.607389" elapsed="0.001375"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:56:45.610946" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.110" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:56:45.610081" elapsed="0.001056"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:56:45.613733" level="INFO">${conn_id} = 410</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:56:45.612737" elapsed="0.001095"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T00:56:45.616623" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T00:56:45.616722" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T00:56:45.616078" elapsed="0.000676"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:56:45.617029" elapsed="0.000546"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T00:56:45.618638" level="INFO">Logging into '10.30.171.110:22' as 'jenkins'.</msg>
<msg time="2026-04-08T00:56:46.249238" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 00:56:45 UTC 2026

  System load:  0.17               Processes:             126
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 8%                 IPv4 address for ens3: 10.30.171.110
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 00:56:43 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T00:56:45.618246" elapsed="0.631163"/>
</kw>
<msg time="2026-04-08T00:56:46.249498" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:56:45.617805" elapsed="0.631785"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T00:56:45.615091" elapsed="0.634798"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T00:56:46.251439" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-08T00:56:46.274323" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-08T00:56:46.274942" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-08T00:56:46.275326" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T00:56:46.250987" elapsed="0.024556"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:56:46.277796" elapsed="0.001153"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:56:46.281398" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:56:46.280309" elapsed="0.001336"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:56:46.282560" elapsed="0.000068"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:56:46.282014" elapsed="0.000732"/>
</branch>
<status status="PASS" start="2026-04-08T00:56:46.281890" elapsed="0.000988"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T00:56:46.283710" elapsed="0.000136"/>
</return>
<status status="PASS" start="2026-04-08T00:56:46.283240" elapsed="0.000715"/>
</branch>
<status status="PASS" start="2026-04-08T00:56:46.283096" elapsed="0.000989"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:56:46.284590" elapsed="0.000088"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:56:46.289738" elapsed="0.000399"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:56:46.290384" elapsed="0.000189"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:56:46.290777" elapsed="0.000111"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:56:46.286300" elapsed="0.004706"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T00:56:45.603399" elapsed="0.687868"/>
</kw>
<msg time="2026-04-08T00:56:46.291596" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:56:45.602651" elapsed="0.689023"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-08T00:56:45.602080" elapsed="0.689685"/>
</kw>
<msg time="2026-04-08T00:56:46.291808" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:56:45.601571" elapsed="0.690288"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:56:46.294998" elapsed="0.000370"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:56:46.295535" elapsed="0.000166"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:56:46.295852" elapsed="0.000104"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:56:46.292264" elapsed="0.003748"/>
</kw>
<msg time="2026-04-08T00:56:46.296376" level="INFO">${output} = 1</msg>
<var>${output}</var>
<arg>Utils.Run_Command_On_Controller</arg>
<arg>${member_ip}</arg>
<arg>${command}</arg>
<doc>Store current connection index, run keyword returning its result, restore connection in teardown.
Note that in order to avoid "got positional argument after named arguments", it is safer to use positional (not named) arguments on call.</doc>
<status status="PASS" start="2026-04-08T00:56:45.600673" elapsed="0.695734"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:56:46.296912" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:56:46.296644" elapsed="0.000313"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-08T00:56:46.297004" elapsed="0.000037"/>
</return>
<msg time="2026-04-08T00:56:46.297186" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-08T00:56:45.599720" elapsed="0.697494"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-08T00:56:46.297267" elapsed="0.000027"/>
</return>
<msg time="2026-04-08T00:56:46.297418" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-08T00:56:45.598675" elapsed="0.698768"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-08T00:56:46.298006" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-08T00:56:46.297602" elapsed="0.000480">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-08T00:56:45.598105" elapsed="0.700110">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:56:48.302102" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:56:48.301360" elapsed="0.000819"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:56:48.304256" level="INFO">${member_ip} = 10.30.171.110</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:56:48.303600" elapsed="0.000719"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:56:48.306096" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

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

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T00:56:48.314117" elapsed="0.000802"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:56:48.316442" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.110" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:56:48.315855" elapsed="0.000696"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:56:48.318432" level="INFO">${conn_id} = 413</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:56:48.317497" elapsed="0.001033"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T00:56:48.320843" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T00:56:48.320922" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T00:56:48.320531" elapsed="0.000416"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:56:48.321157" elapsed="0.000353"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T00:56:48.322453" level="INFO">Logging into '10.30.171.110:22' as 'jenkins'.</msg>
<msg time="2026-04-08T00:56:48.647370" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 00:56:45 UTC 2026

  System load:  0.17               Processes:             126
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 8%                 IPv4 address for ens3: 10.30.171.110
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 00:56:46 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T00:56:48.322088" elapsed="0.325572"/>
</kw>
<msg time="2026-04-08T00:56:48.647752" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:56:48.321726" elapsed="0.326123"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T00:56:48.319687" elapsed="0.328459"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T00:56:48.649684" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-08T00:56:48.672586" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-08T00:56:48.673101" level="INFO">${stdout} = 0</msg>
<msg time="2026-04-08T00:56:48.673487" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T00:56:48.649253" elapsed="0.024444"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:56:48.675869" elapsed="0.000963"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:56:48.679186" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:56:48.678091" elapsed="0.001391"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:56:48.680519" elapsed="0.000072"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:56:48.679849" elapsed="0.000852"/>
</branch>
<status status="PASS" start="2026-04-08T00:56:48.679720" elapsed="0.001109"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T00:56:48.681476" elapsed="0.000053"/>
</return>
<status status="PASS" start="2026-04-08T00:56:48.681149" elapsed="0.000427"/>
</branch>
<status status="PASS" start="2026-04-08T00:56:48.681043" elapsed="0.000596"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:56:48.681738" elapsed="0.000046"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:56:48.686084" elapsed="0.000440"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:56:48.686736" elapsed="0.000168"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:56:48.687092" elapsed="0.000119"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:56:48.683126" elapsed="0.004200"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T00:56:48.310185" elapsed="0.377364"/>
</kw>
<msg time="2026-04-08T00:56:48.687858" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:56:48.309180" elapsed="0.378739"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-08T00:56:48.307910" elapsed="0.380094"/>
</kw>
<msg time="2026-04-08T00:56:48.688046" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:56:48.306761" elapsed="0.381332"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:56:48.691064" elapsed="0.000358"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:56:48.691584" elapsed="0.000142"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:56:48.691872" elapsed="0.000094"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:56:48.688402" elapsed="0.003616"/>
</kw>
<msg time="2026-04-08T00:56:48.692111" level="INFO">${output} = 0</msg>
<var>${output}</var>
<arg>Utils.Run_Command_On_Controller</arg>
<arg>${member_ip}</arg>
<arg>${command}</arg>
<doc>Store current connection index, run keyword returning its result, restore connection in teardown.
Note that in order to avoid "got positional argument after named arguments", it is safer to use positional (not named) arguments on call.</doc>
<status status="PASS" start="2026-04-08T00:56:48.304797" elapsed="0.387339"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:56:48.692582" level="INFO">0</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:56:48.692333" elapsed="0.000303"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-08T00:56:48.692681" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:56:48.692841" level="INFO">${count} = 0</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-08T00:56:48.302658" elapsed="0.390230"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-08T00:56:48.692937" elapsed="0.000027"/>
</return>
<msg time="2026-04-08T00:56:48.693085" level="INFO">${count} = 0</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-08T00:56:48.300516" elapsed="0.392594"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="PASS" start="2026-04-08T00:56:48.693397" elapsed="0.000378"/>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="PASS" start="2026-04-08T00:56:48.299365" elapsed="0.394493"/>
</kw>
<arg>${timeout}</arg>
<arg>2s</arg>
<arg>Verify_Karaf_Is_Not_Running_On_Member</arg>
<arg>member_index=${index}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-08T00:54:48.108683" elapsed="120.585235"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T00:54:48.108527" elapsed="120.585432"/>
</iter>
<var>${index}</var>
<value>@{stop_index_list}</value>
<status status="PASS" start="2026-04-08T00:54:42.595601" elapsed="126.098397"/>
</for>
<kw name="Run_Bash_Command_On_List_Or_All" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:56:48.697259" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:56:48.696803" elapsed="0.000484"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:56:48.697764" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:56:48.697459" elapsed="0.000331"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:56:48.697834" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:56:48.697987" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:56:48.696424" elapsed="0.001587"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:56:48.699177" level="INFO">${member_ip} = 10.30.170.48</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:56:48.698903" elapsed="0.000325"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:56:48.699989" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

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

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T00:56:48.703019" elapsed="0.000279"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:56:48.703914" level="INFO">Attempting to execute command "netstat -pnatu | grep 2550" on remote system "10.30.170.48" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:56:48.703448" elapsed="0.000513"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:56:48.704553" level="INFO">${conn_id} = 416</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:56:48.704116" elapsed="0.000463"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T00:56:48.706000" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T00:56:48.706135" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T00:56:48.705464" elapsed="0.000696"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:56:48.706369" elapsed="0.000659"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T00:56:48.709124" level="INFO">Logging into '10.30.170.48:22' as 'jenkins'.</msg>
<msg time="2026-04-08T00:56:49.403862" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 00:56:49 UTC 2026

  System load:  0.04               Processes:             121
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.170.48
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 00:54:45 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-0-builder-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T00:56:48.708535" elapsed="0.695693"/>
</kw>
<msg time="2026-04-08T00:56:49.404359" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:56:48.707273" elapsed="0.697260"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T00:56:48.704966" elapsed="0.699777"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T00:56:49.405310" level="INFO">Executing command 'netstat -pnatu | grep 2550'.</msg>
<msg time="2026-04-08T00:56:49.418107" level="INFO">Command exited with return code 1.</msg>
<msg time="2026-04-08T00:56:49.418245" level="INFO">${stdout} = </msg>
<msg time="2026-04-08T00:56:49.418291" level="INFO">${stderr} = bash: line 1: netstat: command not found</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T00:56:49.404995" elapsed="0.013319"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:56:49.418483" elapsed="0.000239"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:56:49.419272" level="INFO">bash: line 1: netstat: command not found</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:56:49.418928" elapsed="0.000391"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:56:49.419565" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:56:49.419408" elapsed="0.000209"/>
</branch>
<status status="PASS" start="2026-04-08T00:56:49.419381" elapsed="0.000259"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T00:56:49.419800" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-08T00:56:49.419693" elapsed="0.000166"/>
</branch>
<status status="PASS" start="2026-04-08T00:56:49.419678" elapsed="0.000204"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:56:49.419915" elapsed="0.000014"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:56:49.431476" elapsed="0.000517"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:56:49.432166" elapsed="0.000194"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:56:49.432509" elapsed="0.000097"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:56:49.420275" elapsed="0.012383"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T00:56:48.701955" elapsed="0.730795"/>
</kw>
<msg time="2026-04-08T00:56:49.432805" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:56:48.701350" elapsed="0.731507"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-08T00:56:48.700780" elapsed="0.732157"/>
</kw>
<msg time="2026-04-08T00:56:49.432978" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:56:48.700283" elapsed="0.732739"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:56:49.438361" elapsed="0.000315"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:56:49.438838" elapsed="0.000145"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:56:49.439127" elapsed="0.000116"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:56:49.433565" elapsed="0.005731"/>
</kw>
<msg time="2026-04-08T00:56:49.439387" level="INFO">${output} = </msg>
<var>${output}</var>
<arg>Utils.Run_Command_On_Controller</arg>
<arg>${member_ip}</arg>
<arg>${command}</arg>
<doc>Store current connection index, run keyword returning its result, restore connection in teardown.
Note that in order to avoid "got positional argument after named arguments", it is safer to use positional (not named) arguments on call.</doc>
<status status="PASS" start="2026-04-08T00:56:48.699445" elapsed="0.739966"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:56:49.439847" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:56:49.439600" elapsed="0.000288"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-08T00:56:49.439929" elapsed="0.000031"/>
</return>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-08T00:56:48.698496" elapsed="0.741556"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T00:56:48.698309" elapsed="0.741780"/>
</iter>
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:56:49.441050" level="INFO">${member_ip} = 10.30.170.131</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:56:49.440783" elapsed="0.000349"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:56:49.441906" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

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

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T00:56:49.444937" elapsed="0.000271"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:56:49.445839" level="INFO">Attempting to execute command "netstat -pnatu | grep 2550" on remote system "10.30.170.131" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:56:49.445362" elapsed="0.000524"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:56:49.446535" level="INFO">${conn_id} = 419</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:56:49.446043" elapsed="0.000519"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T00:56:49.447740" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T00:56:49.447865" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T00:56:49.447221" elapsed="0.000668"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:56:49.448074" elapsed="0.000679"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T00:56:49.450776" level="INFO">Logging into '10.30.170.131:22' as 'jenkins'.</msg>
<msg time="2026-04-08T00:56:50.220352" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 00:56:49 UTC 2026

  System load:  0.1                Processes:             121
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.170.131
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 00:54:48 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-0-builder-1 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T00:56:49.450213" elapsed="0.770542"/>
</kw>
<msg time="2026-04-08T00:56:50.221010" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:56:49.448977" elapsed="0.772412"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T00:56:49.446775" elapsed="0.774959"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T00:56:50.222718" level="INFO">Executing command 'netstat -pnatu | grep 2550'.</msg>
<msg time="2026-04-08T00:56:50.235698" level="INFO">Command exited with return code 1.</msg>
<msg time="2026-04-08T00:56:50.235943" level="INFO">${stdout} = </msg>
<msg time="2026-04-08T00:56:50.236044" level="INFO">${stderr} = bash: line 1: netstat: command not found</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T00:56:50.222229" elapsed="0.013868"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:56:50.236508" elapsed="0.000465"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:56:50.238069" level="INFO">bash: line 1: netstat: command not found</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:56:50.237416" elapsed="0.000758"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:56:50.238720" elapsed="0.000043"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:56:50.238384" elapsed="0.000458"/>
</branch>
<status status="PASS" start="2026-04-08T00:56:50.238334" elapsed="0.000563"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T00:56:50.239393" elapsed="0.000064"/>
</return>
<status status="PASS" start="2026-04-08T00:56:50.239016" elapsed="0.000515"/>
</branch>
<status status="PASS" start="2026-04-08T00:56:50.238983" elapsed="0.000602"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:56:50.239660" elapsed="0.000031"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:56:50.253206" elapsed="0.000520"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:56:50.253896" elapsed="0.000164"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:56:50.254226" elapsed="0.000108"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:56:50.240378" elapsed="0.014022"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T00:56:49.443877" elapsed="0.810638"/>
</kw>
<msg time="2026-04-08T00:56:50.254572" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:56:49.443308" elapsed="0.811319"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-08T00:56:49.442767" elapsed="0.811940"/>
</kw>
<msg time="2026-04-08T00:56:50.254748" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:56:49.442216" elapsed="0.812576"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:56:50.257597" elapsed="0.000314"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:56:50.258077" elapsed="0.000163"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:56:50.258392" elapsed="0.000104"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:56:50.255085" elapsed="0.003463"/>
</kw>
<msg time="2026-04-08T00:56:50.258640" level="INFO">${output} = </msg>
<var>${output}</var>
<arg>Utils.Run_Command_On_Controller</arg>
<arg>${member_ip}</arg>
<arg>${command}</arg>
<doc>Store current connection index, run keyword returning its result, restore connection in teardown.
Note that in order to avoid "got positional argument after named arguments", it is safer to use positional (not named) arguments on call.</doc>
<status status="PASS" start="2026-04-08T00:56:49.441369" elapsed="0.817296"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:56:50.259108" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:56:50.258852" elapsed="0.000298"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-08T00:56:50.259210" elapsed="0.000030"/>
</return>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-08T00:56:49.440381" elapsed="0.818956"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T00:56:49.440187" elapsed="0.819213"/>
</iter>
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:56:50.260617" level="INFO">${member_ip} = 10.30.171.110</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:56:50.260086" elapsed="0.000557"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:56:50.261622" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

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

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T00:56:50.264690" elapsed="0.000255"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:56:50.265631" level="INFO">Attempting to execute command "netstat -pnatu | grep 2550" on remote system "10.30.171.110" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:56:50.265141" elapsed="0.000538"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:56:50.266265" level="INFO">${conn_id} = 422</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:56:50.265835" elapsed="0.000457"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T00:56:50.267487" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T00:56:50.267617" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T00:56:50.266947" elapsed="0.000722"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:56:50.267860" elapsed="0.000672"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T00:56:50.270567" level="INFO">Logging into '10.30.171.110:22' as 'jenkins'.</msg>
<msg time="2026-04-08T00:56:50.572866" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 00:56:45 UTC 2026

  System load:  0.17               Processes:             126
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 8%                 IPv4 address for ens3: 10.30.171.110
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 00:56:48 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T00:56:50.270005" elapsed="0.303086"/>
</kw>
<msg time="2026-04-08T00:56:50.573255" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:56:50.268763" elapsed="0.304675"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T00:56:50.266514" elapsed="0.307107"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T00:56:50.574234" level="INFO">Executing command 'netstat -pnatu | grep 2550'.</msg>
<msg time="2026-04-08T00:56:50.586819" level="INFO">Command exited with return code 1.</msg>
<msg time="2026-04-08T00:56:50.587077" level="INFO">${stdout} = </msg>
<msg time="2026-04-08T00:56:50.587229" level="INFO">${stderr} = bash: line 1: netstat: command not found</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T00:56:50.573916" elapsed="0.013378"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:56:50.587708" elapsed="0.000462"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:56:50.589373" level="INFO">bash: line 1: netstat: command not found</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:56:50.588617" elapsed="0.000866"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:56:50.589979" elapsed="0.000038"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:56:50.589668" elapsed="0.000422"/>
</branch>
<status status="PASS" start="2026-04-08T00:56:50.589613" elapsed="0.000529"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T00:56:50.590644" elapsed="0.000063"/>
</return>
<status status="PASS" start="2026-04-08T00:56:50.590316" elapsed="0.000468"/>
</branch>
<status status="PASS" start="2026-04-08T00:56:50.590276" elapsed="0.000563"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:56:50.590917" elapsed="0.000034"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:56:50.605057" elapsed="0.000573"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:56:50.605802" elapsed="0.000166"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:56:50.606120" elapsed="0.000207"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:56:50.591566" elapsed="0.014816"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T00:56:50.263580" elapsed="0.342896"/>
</kw>
<msg time="2026-04-08T00:56:50.606534" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:56:50.262978" elapsed="0.343610"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-08T00:56:50.262445" elapsed="0.344289"/>
</kw>
<msg time="2026-04-08T00:56:50.606780" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:56:50.261908" elapsed="0.344920"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:56:50.609556" elapsed="0.000313"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:56:50.610031" elapsed="0.000148"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:56:50.610546" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:56:50.607221" elapsed="0.003475"/>
</kw>
<msg time="2026-04-08T00:56:50.610788" level="INFO">${output} = </msg>
<var>${output}</var>
<arg>Utils.Run_Command_On_Controller</arg>
<arg>${member_ip}</arg>
<arg>${command}</arg>
<doc>Store current connection index, run keyword returning its result, restore connection in teardown.
Note that in order to avoid "got positional argument after named arguments", it is safer to use positional (not named) arguments on call.</doc>
<status status="PASS" start="2026-04-08T00:56:50.260861" elapsed="0.349952"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:56:50.611298" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:56:50.610999" elapsed="0.000340"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-08T00:56:50.611382" elapsed="0.000029"/>
</return>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-08T00:56:50.259677" elapsed="0.351829"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T00:56:50.259497" elapsed="0.352046"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-08T00:56:48.698069" elapsed="1.913511"/>
</for>
<arg>command=netstat -pnatu | grep 2550</arg>
<doc>Cycle through indices (or all), run command on each.</doc>
<status status="PASS" start="2026-04-08T00:56:48.694329" elapsed="1.917312"/>
</kw>
<return>
<value>${updated_index_list}</value>
<status status="PASS" start="2026-04-08T00:56:50.611682" elapsed="0.000025"/>
</return>
<doc>If the list is empty, stops all ODL instances. Otherwise stop members based on ${stop_index_list}
If ${confirm} is True, verify stopped instances are not there anymore.
The KW will return a list of available members: ${updated index_list}=${original_index_list}-${member_index_list}</doc>
<status status="PASS" start="2026-04-08T00:54:39.608837" elapsed="131.002972"/>
</kw>
<kw name="Start_Members_From_List_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:56:50.623539" level="INFO">${base_command} = /tmp/karaf-0.23.1/bin/start</msg>
<var>${base_command}</var>
<arg>"""${karaf_home}""" != ""</arg>
<arg>${karaf_home}/bin/start</arg>
<arg>${NODE_START_COMMAND}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:56:50.623128" elapsed="0.000439"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:56:50.624092" level="INFO">${command} = /tmp/karaf-0.23.1/bin/start</msg>
<var>${command}</var>
<arg>"""${export_java_home}""" != ""</arg>
<arg>export JAVA_HOME="${export_java_home}"; ${base_command}</arg>
<arg>${base_command}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:56:50.623733" elapsed="0.000385"/>
</kw>
<kw name="Get Current Date" owner="DateTime">
<msg time="2026-04-08T00:56:50.624566" level="INFO">${epoch} = 1775609810.624492</msg>
<var>${epoch}</var>
<arg>time_zone=UTC</arg>
<arg>result_format=epoch</arg>
<arg>exclude_millis=False</arg>
<doc>Returns current local or UTC time with an optional increment.</doc>
<status status="PASS" start="2026-04-08T00:56:50.624299" elapsed="0.000293"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:56:50.625152" level="INFO">${gc_filepath} = /tmp/karaf-0.23.1/data/log/gc_1775609810.624492.log</msg>
<var>${gc_filepath}</var>
<arg>"""${karaf_home}""" != ""</arg>
<arg>${karaf_home}/data/log/gc_${epoch}.log</arg>
<arg>${GC_LOG_PATH}/gc_${epoch}.log</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:56:50.624755" elapsed="0.000427"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:56:50.625734" level="INFO">${gc_options} = -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:/tmp/karaf-0.23.1/data/log/gc_1775609810.624492.log</msg>
<var>${gc_options}</var>
<arg>"docker" not in """${node_start_command}"""</arg>
<arg>-XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:${gc_filepath}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:56:50.625366" elapsed="0.000395"/>
</kw>
<kw name="Run_Bash_Command_On_List_Or_All" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:56:50.627338" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:56:50.626872" elapsed="0.000493"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:56:50.627863" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:56:50.627525" elapsed="0.000364"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:56:50.627933" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:56:50.628086" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:56:50.626508" elapsed="0.001603"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:56:50.629160" level="INFO">${member_ip} = 10.30.170.48</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:56:50.628891" elapsed="0.000310"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:56:50.630236" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

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

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T00:56:50.633263" elapsed="0.000259"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:56:50.634132" level="INFO">Attempting to execute command "/tmp/karaf-0.23.1/bin/start -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:/tmp/karaf-0.23.1/data/log/gc_1775609810.624492.log" on remote system "10.30.170.48" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:56:50.633674" elapsed="0.000510"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:56:50.635048" level="INFO">${conn_id} = 425</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:56:50.634363" elapsed="0.000713"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T00:56:50.636353" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T00:56:50.636479" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T00:56:50.635756" elapsed="0.000747"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:56:50.636691" elapsed="0.000683"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T00:56:50.639471" level="INFO">Logging into '10.30.170.48:22' as 'jenkins'.</msg>
<msg time="2026-04-08T00:56:50.961138" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 00:56:49 UTC 2026

  System load:  0.04               Processes:             121
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.170.48
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 00:56:49 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-0-builder-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T00:56:50.638888" elapsed="0.322490"/>
</kw>
<msg time="2026-04-08T00:56:50.961507" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:56:50.637633" elapsed="0.324058"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T00:56:50.635322" elapsed="0.326569"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T00:56:50.962606" level="INFO">Executing command '/tmp/karaf-0.23.1/bin/start -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:/tmp/karaf-0.23.1/data/log/gc_1775609810.624492.log'.</msg>
<msg time="2026-04-08T00:56:50.986239" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-08T00:56:50.986506" level="INFO">${stdout} = </msg>
<msg time="2026-04-08T00:56:50.986608" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T00:56:50.962226" elapsed="0.024433"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:56:50.987030" elapsed="0.000557"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:56:50.988737" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:56:50.988004" elapsed="0.000829"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:56:50.989352" elapsed="0.000037"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:56:50.989009" elapsed="0.000454"/>
</branch>
<status status="PASS" start="2026-04-08T00:56:50.988957" elapsed="0.000558"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T00:56:50.989871" elapsed="0.000058"/>
</return>
<status status="PASS" start="2026-04-08T00:56:50.989633" elapsed="0.000369"/>
</branch>
<status status="PASS" start="2026-04-08T00:56:50.989600" elapsed="0.000455"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:56:50.990294" elapsed="0.000036"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:56:51.005246" elapsed="0.000527"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:56:51.005941" elapsed="0.000174"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:56:51.006295" elapsed="0.000101"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:56:50.990992" elapsed="0.015457"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T00:56:50.632184" elapsed="0.374358"/>
</kw>
<msg time="2026-04-08T00:56:51.006596" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:56:50.631579" elapsed="0.375071"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-08T00:56:50.631034" elapsed="0.375695"/>
</kw>
<msg time="2026-04-08T00:56:51.006770" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:56:50.630528" elapsed="0.376287"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:56:51.009725" elapsed="0.000305"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:56:51.010219" elapsed="0.000145"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:56:51.010508" elapsed="0.000095"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:56:51.007153" elapsed="0.003500"/>
</kw>
<msg time="2026-04-08T00:56:51.010746" level="INFO">${output} = </msg>
<var>${output}</var>
<arg>Utils.Run_Command_On_Controller</arg>
<arg>${member_ip}</arg>
<arg>${command}</arg>
<doc>Store current connection index, run keyword returning its result, restore connection in teardown.
Note that in order to avoid "got positional argument after named arguments", it is safer to use positional (not named) arguments on call.</doc>
<status status="PASS" start="2026-04-08T00:56:50.629415" elapsed="0.381357"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:56:51.011376" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:56:51.010951" elapsed="0.000471"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-08T00:56:51.011478" elapsed="0.000032"/>
</return>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-08T00:56:50.628494" elapsed="0.383113"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T00:56:50.628320" elapsed="0.383326"/>
</iter>
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:56:51.012633" level="INFO">${member_ip} = 10.30.170.131</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:56:51.012365" elapsed="0.000295"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:56:51.013431" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

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

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T00:56:51.016437" elapsed="0.000257"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:56:51.017341" level="INFO">Attempting to execute command "/tmp/karaf-0.23.1/bin/start -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:/tmp/karaf-0.23.1/data/log/gc_1775609810.624492.log" on remote system "10.30.170.131" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:56:51.016843" elapsed="0.000588"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:56:51.018203" level="INFO">${conn_id} = 428</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:56:51.017591" elapsed="0.000641"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T00:56:51.019427" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T00:56:51.019552" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T00:56:51.018889" elapsed="0.000688"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:56:51.019764" elapsed="0.000702"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T00:56:51.022537" level="INFO">Logging into '10.30.170.131:22' as 'jenkins'.</msg>
<msg time="2026-04-08T00:56:51.338091" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 00:56:49 UTC 2026

  System load:  0.1                Processes:             121
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.170.131
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 00:56:50 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-0-builder-1 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T00:56:51.021963" elapsed="0.316381"/>
</kw>
<msg time="2026-04-08T00:56:51.338475" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:56:51.020695" elapsed="0.317951"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T00:56:51.018455" elapsed="0.320367"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T00:56:51.339365" level="INFO">Executing command '/tmp/karaf-0.23.1/bin/start -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:/tmp/karaf-0.23.1/data/log/gc_1775609810.624492.log'.</msg>
<msg time="2026-04-08T00:56:51.361948" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-08T00:56:51.362262" level="INFO">${stdout} = </msg>
<msg time="2026-04-08T00:56:51.362368" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T00:56:51.339065" elapsed="0.023356"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:56:51.362791" elapsed="0.000520"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:56:51.364451" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:56:51.363740" elapsed="0.000807"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:56:51.365019" elapsed="0.000037"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:56:51.364722" elapsed="0.000406"/>
</branch>
<status status="PASS" start="2026-04-08T00:56:51.364670" elapsed="0.000553"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T00:56:51.365595" elapsed="0.000060"/>
</return>
<status status="PASS" start="2026-04-08T00:56:51.365353" elapsed="0.000374"/>
</branch>
<status status="PASS" start="2026-04-08T00:56:51.365318" elapsed="0.000463"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:56:51.365856" elapsed="0.000032"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:56:51.380615" elapsed="0.000519"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:56:51.381323" elapsed="0.000163"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:56:51.381634" elapsed="0.000099"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:56:51.366656" elapsed="0.015129"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T00:56:51.015360" elapsed="0.366517"/>
</kw>
<msg time="2026-04-08T00:56:51.381931" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:56:51.014770" elapsed="0.367216"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-08T00:56:51.014237" elapsed="0.367857"/>
</kw>
<msg time="2026-04-08T00:56:51.382240" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:56:51.013707" elapsed="0.368586"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:56:51.385382" elapsed="0.000310"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:56:51.385853" elapsed="0.000142"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:56:51.386140" elapsed="0.000142"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:56:51.382591" elapsed="0.003744"/>
</kw>
<msg time="2026-04-08T00:56:51.386430" level="INFO">${output} = </msg>
<var>${output}</var>
<arg>Utils.Run_Command_On_Controller</arg>
<arg>${member_ip}</arg>
<arg>${command}</arg>
<doc>Store current connection index, run keyword returning its result, restore connection in teardown.
Note that in order to avoid "got positional argument after named arguments", it is safer to use positional (not named) arguments on call.</doc>
<status status="PASS" start="2026-04-08T00:56:51.012878" elapsed="0.373577"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:56:51.386883" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:56:51.386637" elapsed="0.000309"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-08T00:56:51.386990" elapsed="0.000029"/>
</return>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-08T00:56:51.011919" elapsed="0.375195"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T00:56:51.011742" elapsed="0.375409"/>
</iter>
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:56:51.388262" level="INFO">${member_ip} = 10.30.171.110</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:56:51.387977" elapsed="0.000312"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:56:51.389032" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

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

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T00:56:51.392047" elapsed="0.000274"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:56:51.392933" level="INFO">Attempting to execute command "/tmp/karaf-0.23.1/bin/start -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:/tmp/karaf-0.23.1/data/log/gc_1775609810.624492.log" on remote system "10.30.171.110" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:56:51.392472" elapsed="0.000509"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:56:51.393566" level="INFO">${conn_id} = 431</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:56:51.393135" elapsed="0.000458"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T00:56:51.394776" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T00:56:51.394897" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T00:56:51.394262" elapsed="0.000660"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:56:51.395105" elapsed="0.000674"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T00:56:51.397781" level="INFO">Logging into '10.30.171.110:22' as 'jenkins'.</msg>
<msg time="2026-04-08T00:56:51.709502" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 00:56:45 UTC 2026

  System load:  0.17               Processes:             126
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 8%                 IPv4 address for ens3: 10.30.171.110
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 00:56:50 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T00:56:51.397232" elapsed="0.312583"/>
</kw>
<msg time="2026-04-08T00:56:51.709945" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:56:51.396004" elapsed="0.314110"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T00:56:51.393807" elapsed="0.316504"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T00:56:51.710811" level="INFO">Executing command '/tmp/karaf-0.23.1/bin/start -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:/tmp/karaf-0.23.1/data/log/gc_1775609810.624492.log'.</msg>
<msg time="2026-04-08T00:56:51.733812" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-08T00:56:51.734061" level="INFO">${stdout} = </msg>
<msg time="2026-04-08T00:56:51.734202" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T00:56:51.710544" elapsed="0.023717"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:56:51.734629" elapsed="0.000479"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:56:51.736350" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:56:51.735564" elapsed="0.000886"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:56:51.736925" elapsed="0.000036"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:56:51.736629" elapsed="0.000407"/>
</branch>
<status status="PASS" start="2026-04-08T00:56:51.736575" elapsed="0.000512"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T00:56:51.737509" elapsed="0.000038"/>
</return>
<status status="PASS" start="2026-04-08T00:56:51.737329" elapsed="0.000266"/>
</branch>
<status status="PASS" start="2026-04-08T00:56:51.737289" elapsed="0.000339"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:56:51.737675" elapsed="0.000020"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:56:51.751724" elapsed="0.000532"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:56:51.752424" elapsed="0.000161"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:56:51.752732" elapsed="0.000098"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:56:51.738129" elapsed="0.014753"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T00:56:51.390962" elapsed="0.362014"/>
</kw>
<msg time="2026-04-08T00:56:51.753031" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:56:51.390389" elapsed="0.362696"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-08T00:56:51.389826" elapsed="0.363343"/>
</kw>
<msg time="2026-04-08T00:56:51.753238" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:56:51.389324" elapsed="0.363962"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:56:51.756135" elapsed="0.000328"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:56:51.756624" elapsed="0.000139"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:56:51.756907" elapsed="0.000093"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:56:51.753581" elapsed="0.003470"/>
</kw>
<msg time="2026-04-08T00:56:51.757143" level="INFO">${output} = </msg>
<var>${output}</var>
<arg>Utils.Run_Command_On_Controller</arg>
<arg>${member_ip}</arg>
<arg>${command}</arg>
<doc>Store current connection index, run keyword returning its result, restore connection in teardown.
Note that in order to avoid "got positional argument after named arguments", it is safer to use positional (not named) arguments on call.</doc>
<status status="PASS" start="2026-04-08T00:56:51.388500" elapsed="0.368672"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:56:51.757622" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:56:51.757377" elapsed="0.000286"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-08T00:56:51.757706" elapsed="0.000043"/>
</return>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-08T00:56:51.387576" elapsed="0.370270"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T00:56:51.387395" elapsed="0.370488"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-08T00:56:50.628170" elapsed="1.129750"/>
</for>
<arg>command=${command} ${gc_options}</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Cycle through indices (or all), run command on each.</doc>
<status status="PASS" start="2026-04-08T00:56:50.625973" elapsed="1.132006"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Verify_Members_Are_Ready" owner="ClusterManagement">
<if>
<branch type="IF" condition="${verify_cluster_sync}">
<kw name="Check_Cluster_Is_In_Sync" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:56:51.769008" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:56:51.768628" elapsed="0.000407"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:56:51.769531" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:56:51.769228" elapsed="0.000329"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:56:51.769600" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:56:51.769753" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:56:51.768253" elapsed="0.001524"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:56:51.771562" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:56:51.771262" elapsed="0.000326"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:56:51.771633" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:56:51.771780" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:56:51.770903" elapsed="0.000902"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:56:51.779092" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:56:51.778838" elapsed="0.000301"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:56:51.779555" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:56:51.779308" elapsed="0.000291"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:56:51.784958" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.170.48', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.170.48', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-08T00:56:51.781616" elapsed="0.005151">ConnectionError: HTTPConnectionPool(host='10.30.170.48', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.170.48', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<status status="FAIL" start="2026-04-08T00:56:51.779669" elapsed="0.007187">ConnectionError: HTTPConnectionPool(host='10.30.170.48', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.170.48', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:56:51.787045" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:56:51.786892" elapsed="0.000218"/>
</branch>
<status status="FAIL" start="2026-04-08T00:56:51.779650" elapsed="0.007483">ConnectionError: HTTPConnectionPool(host='10.30.170.48', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.170.48', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-08T00:56:51.787684" elapsed="0.000027"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:56:51.787818" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:56:51.787783" elapsed="0.000075"/>
</branch>
<status status="NOT RUN" start="2026-04-08T00:56:51.787765" elapsed="0.000114"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-08T00:56:51.788019" elapsed="0.000021"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-08T00:56:51.788087" elapsed="0.000015"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-08T00:56:51.774651" elapsed="0.013560">ConnectionError: HTTPConnectionPool(host='10.30.170.48', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.170.48', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-08T00:56:51.788320" elapsed="0.000017"/>
</return>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="FAIL" start="2026-04-08T00:56:51.772011" elapsed="0.016411">ConnectionError: HTTPConnectionPool(host='10.30.170.48', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.170.48', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-08T00:56:51.788636" elapsed="0.000024"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-08T00:56:51.788762" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:56:51.788727" elapsed="0.000074"/>
</branch>
<status status="NOT RUN" start="2026-04-08T00:56:51.788710" elapsed="0.000112"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="NOT RUN" start="2026-04-08T00:56:51.789014" elapsed="0.000023"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-08T00:56:51.789247" elapsed="0.000024"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="NOT RUN" start="2026-04-08T00:56:51.789315" elapsed="0.000015"/>
</return>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="FAIL" start="2026-04-08T00:56:51.770532" elapsed="0.018883">ConnectionError: HTTPConnectionPool(host='10.30.170.48', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.170.48', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="NOT RUN" start="2026-04-08T00:56:51.789537" elapsed="0.000021"/>
</continue>
<status status="NOT RUN" start="2026-04-08T00:56:51.789496" elapsed="0.000087"/>
</branch>
<status status="NOT RUN" start="2026-04-08T00:56:51.789479" elapsed="0.000126"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:56:51.789744" elapsed="0.000021"/>
</kw>
<var name="${index}">1</var>
<status status="FAIL" start="2026-04-08T00:56:51.770299" elapsed="0.019516">ConnectionError: HTTPConnectionPool(host='10.30.170.48', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.170.48', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-04-08T00:56:51.769830" elapsed="0.020044">ConnectionError: HTTPConnectionPool(host='10.30.170.48', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.170.48', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</for>
<arg>${member_index_list}</arg>
<doc>Fail if no-sync is detected on a member from list (or any).</doc>
<status status="FAIL" start="2026-04-08T00:56:51.767842" elapsed="0.022125">ConnectionError: HTTPConnectionPool(host='10.30.170.48', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.170.48', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<status status="FAIL" start="2026-04-08T00:56:51.767534" elapsed="0.022491">ConnectionError: HTTPConnectionPool(host='10.30.170.48', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.170.48', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</branch>
<status status="FAIL" start="2026-04-08T00:56:51.767515" elapsed="0.022541">ConnectionError: HTTPConnectionPool(host='10.30.170.48', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.170.48', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</if>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Verify_Restconf_Is_Available" owner="ClusterManagement">
<arg>${member_index_list}</arg>
<status status="NOT RUN" start="2026-04-08T00:56:51.790347" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:56:51.790123" elapsed="0.000279"/>
</branch>
<status status="NOT RUN" start="2026-04-08T00:56:51.790107" elapsed="0.000318"/>
</if>
<if>
<branch type="IF" condition="${verify_system_status} and (&quot;${service_list}&quot; != &quot;[[]]&quot;)">
<kw name="Check Status Of Services Is OPERATIONAL" owner="ClusterManagement">
<arg>@{service_list}</arg>
<doc>This keyword will verify whether all the services are operational in all the ODL nodes</doc>
<status status="NOT RUN" start="2026-04-08T00:56:51.790685" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:56:51.790477" elapsed="0.000278"/>
</branch>
<status status="NOT RUN" start="2026-04-08T00:56:51.790462" elapsed="0.000317"/>
</if>
<arg>${member_index_list}</arg>
<arg>${wait_for_sync}</arg>
<arg>${verify_restconf}</arg>
<arg>${check_system_status}</arg>
<arg>${service_list}</arg>
<doc>Verifies the specified readiness conditions for the given listed members after startup.
If ${verify_cluster_sync}, verifies the datastores have synced with the rest of the cluster.
If True, verifies RESTCONF is available.
If ${verify_system_status}, verifies the system services are OPERATIONAL.</doc>
<status status="FAIL" start="2026-04-08T00:56:51.767106" elapsed="0.023752">ConnectionError: HTTPConnectionPool(host='10.30.170.48', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.170.48', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Verify_Members_Are_Ready" owner="ClusterManagement">
<if>
<branch type="IF" condition="${verify_cluster_sync}">
<kw name="Check_Cluster_Is_In_Sync" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:57:01.808444" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:57:01.807905" elapsed="0.000572"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:57:01.808985" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:57:01.808666" elapsed="0.000346"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:57:01.809061" elapsed="0.000036"/>
</return>
<msg time="2026-04-08T00:57:01.809246" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:57:01.807503" elapsed="0.001769"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:57:01.810797" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:57:01.810495" elapsed="0.000330"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:57:01.810871" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:57:01.811019" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:57:01.810127" elapsed="0.000918"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:57:01.818180" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:57:01.817904" elapsed="0.000327"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:57:01.818628" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:57:01.818385" elapsed="0.000287"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:57:01.874720" level="INFO">GET Request : url=http://10.30.170.48:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:57:01.874890" level="INFO">GET Response : url=http://10.30.170.48:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 status=401, reason=Unauthorized 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '524'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 401 Unauthorized&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 401 Unauthorized&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;401&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Unauthorized&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;org.jolokia.osgi.servlet.JolokiaServlet&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-04-08T00:57:01.875239" level="FAIL">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.170.48:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-08T00:57:01.820702" elapsed="0.055322">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.170.48:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<status status="FAIL" start="2026-04-08T00:57:01.818741" elapsed="0.057508">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.170.48:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:57:01.876773" elapsed="0.000056"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:57:01.876329" elapsed="0.000599"/>
</branch>
<status status="FAIL" start="2026-04-08T00:57:01.818722" elapsed="0.058258">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.170.48:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-08T00:57:01.878222" elapsed="0.000061"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:57:01.878528" elapsed="0.000029"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:57:01.878447" elapsed="0.000170"/>
</branch>
<status status="NOT RUN" start="2026-04-08T00:57:01.878408" elapsed="0.000259"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-08T00:57:01.878985" elapsed="0.000047"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-08T00:57:01.879138" elapsed="0.000063"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-08T00:57:01.813668" elapsed="0.065742">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.170.48:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-08T00:57:01.879723" elapsed="0.000051"/>
</return>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="FAIL" start="2026-04-08T00:57:01.811273" elapsed="0.068704">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.170.48:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-08T00:57:01.880523" elapsed="0.000055"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-08T00:57:01.880810" elapsed="0.000028"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:57:01.880728" elapsed="0.000170"/>
</branch>
<status status="NOT RUN" start="2026-04-08T00:57:01.880691" elapsed="0.000254"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="NOT RUN" start="2026-04-08T00:57:01.881430" elapsed="0.000055"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-08T00:57:01.881910" elapsed="0.000050"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="NOT RUN" start="2026-04-08T00:57:01.882056" elapsed="0.000032"/>
</return>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="FAIL" start="2026-04-08T00:57:01.809752" elapsed="0.072559">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.170.48:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="NOT RUN" start="2026-04-08T00:57:01.882575" elapsed="0.000036"/>
</continue>
<status status="NOT RUN" start="2026-04-08T00:57:01.882490" elapsed="0.000178"/>
</branch>
<status status="NOT RUN" start="2026-04-08T00:57:01.882453" elapsed="0.000263"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:57:01.883024" elapsed="0.000046"/>
</kw>
<var name="${index}">1</var>
<status status="FAIL" start="2026-04-08T00:57:01.809525" elapsed="0.073686">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.170.48:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-04-08T00:57:01.809329" elapsed="0.074017">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.170.48:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</for>
<arg>${member_index_list}</arg>
<doc>Fail if no-sync is detected on a member from list (or any).</doc>
<status status="FAIL" start="2026-04-08T00:57:01.807072" elapsed="0.076480">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.170.48:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<status status="FAIL" start="2026-04-08T00:57:01.806731" elapsed="0.076946">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.170.48:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</branch>
<status status="FAIL" start="2026-04-08T00:57:01.806704" elapsed="0.077041">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.170.48:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</if>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Verify_Restconf_Is_Available" owner="ClusterManagement">
<arg>${member_index_list}</arg>
<status status="NOT RUN" start="2026-04-08T00:57:01.884348" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:57:01.883889" elapsed="0.000577"/>
</branch>
<status status="NOT RUN" start="2026-04-08T00:57:01.883854" elapsed="0.000663"/>
</if>
<if>
<branch type="IF" condition="${verify_system_status} and (&quot;${service_list}&quot; != &quot;[[]]&quot;)">
<kw name="Check Status Of Services Is OPERATIONAL" owner="ClusterManagement">
<arg>@{service_list}</arg>
<doc>This keyword will verify whether all the services are operational in all the ODL nodes</doc>
<status status="NOT RUN" start="2026-04-08T00:57:01.885088" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:57:01.884634" elapsed="0.000686"/>
</branch>
<status status="NOT RUN" start="2026-04-08T00:57:01.884601" elapsed="0.000774"/>
</if>
<arg>${member_index_list}</arg>
<arg>${wait_for_sync}</arg>
<arg>${verify_restconf}</arg>
<arg>${check_system_status}</arg>
<arg>${service_list}</arg>
<doc>Verifies the specified readiness conditions for the given listed members after startup.
If ${verify_cluster_sync}, verifies the datastores have synced with the rest of the cluster.
If True, verifies RESTCONF is available.
If ${verify_system_status}, verifies the system services are OPERATIONAL.</doc>
<status status="FAIL" start="2026-04-08T00:57:01.806199" elapsed="0.079353">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.170.48:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<kw name="Verify_Members_Are_Ready" owner="ClusterManagement">
<if>
<branch type="IF" condition="${verify_cluster_sync}">
<kw name="Check_Cluster_Is_In_Sync" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:57:11.902118" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:57:11.901658" elapsed="0.000492"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:57:11.902707" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:57:11.902340" elapsed="0.000394"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:57:11.902783" elapsed="0.000040"/>
</return>
<msg time="2026-04-08T00:57:11.903052" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:57:11.901252" elapsed="0.001826"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:57:11.904866" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:57:11.904565" elapsed="0.000328"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:57:11.904938" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:57:11.905085" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:57:11.904221" elapsed="0.000889"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:57:11.912297" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:57:11.912017" elapsed="0.000328"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:57:11.912740" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:57:11.912496" elapsed="0.000288"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:57:11.919311" level="INFO">GET Request : url=http://10.30.170.48:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:57:11.919427" level="INFO">GET Response : url=http://10.30.170.48:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 status=401, reason=Unauthorized 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '524'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 401 Unauthorized&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 401 Unauthorized&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;401&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Unauthorized&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;org.jolokia.osgi.servlet.JolokiaServlet&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-04-08T00:57:11.919621" level="FAIL">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.170.48:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-08T00:57:11.914856" elapsed="0.005344">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.170.48:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<status status="FAIL" start="2026-04-08T00:57:11.912857" elapsed="0.007473">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.170.48:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:57:11.920631" elapsed="0.000034"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:57:11.920384" elapsed="0.000344"/>
</branch>
<status status="FAIL" start="2026-04-08T00:57:11.912837" elapsed="0.007925">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.170.48:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-08T00:57:11.921560" elapsed="0.000039"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:57:11.921766" elapsed="0.000021"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:57:11.921710" elapsed="0.000118"/>
</branch>
<status status="NOT RUN" start="2026-04-08T00:57:11.921683" elapsed="0.000176"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-08T00:57:11.922073" elapsed="0.000031"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-08T00:57:11.922199" elapsed="0.000023"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-08T00:57:11.907696" elapsed="0.014670">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.170.48:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-08T00:57:11.922470" elapsed="0.000021"/>
</return>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="FAIL" start="2026-04-08T00:57:11.905334" elapsed="0.017276">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.170.48:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-08T00:57:11.923058" elapsed="0.000037"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-08T00:57:11.923269" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:57:11.923215" elapsed="0.000113"/>
</branch>
<status status="NOT RUN" start="2026-04-08T00:57:11.923189" elapsed="0.000170"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="NOT RUN" start="2026-04-08T00:57:11.923644" elapsed="0.000034"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-08T00:57:11.923959" elapsed="0.000033"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="NOT RUN" start="2026-04-08T00:57:11.924054" elapsed="0.000022"/>
</return>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="FAIL" start="2026-04-08T00:57:11.903822" elapsed="0.020476">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.170.48:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="NOT RUN" start="2026-04-08T00:57:11.924480" elapsed="0.000022"/>
</continue>
<status status="NOT RUN" start="2026-04-08T00:57:11.924421" elapsed="0.000116"/>
</branch>
<status status="NOT RUN" start="2026-04-08T00:57:11.924396" elapsed="0.000173"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:57:11.924776" elapsed="0.000030"/>
</kw>
<var name="${index}">1</var>
<status status="FAIL" start="2026-04-08T00:57:11.903592" elapsed="0.021286">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.170.48:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-04-08T00:57:11.903136" elapsed="0.021832">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.170.48:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</for>
<arg>${member_index_list}</arg>
<doc>Fail if no-sync is detected on a member from list (or any).</doc>
<status status="FAIL" start="2026-04-08T00:57:11.900823" elapsed="0.024285">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.170.48:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<status status="FAIL" start="2026-04-08T00:57:11.900418" elapsed="0.024797">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.170.48:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</branch>
<status status="FAIL" start="2026-04-08T00:57:11.900392" elapsed="0.024872">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.170.48:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</if>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Verify_Restconf_Is_Available" owner="ClusterManagement">
<arg>${member_index_list}</arg>
<status status="NOT RUN" start="2026-04-08T00:57:11.925649" elapsed="0.000034"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:57:11.925362" elapsed="0.000364"/>
</branch>
<status status="NOT RUN" start="2026-04-08T00:57:11.925339" elapsed="0.000421"/>
</if>
<if>
<branch type="IF" condition="${verify_system_status} and (&quot;${service_list}&quot; != &quot;[[]]&quot;)">
<kw name="Check Status Of Services Is OPERATIONAL" owner="ClusterManagement">
<arg>@{service_list}</arg>
<doc>This keyword will verify whether all the services are operational in all the ODL nodes</doc>
<status status="NOT RUN" start="2026-04-08T00:57:11.928461" elapsed="0.000029"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:57:11.925838" elapsed="0.002698"/>
</branch>
<status status="NOT RUN" start="2026-04-08T00:57:11.925816" elapsed="0.002745"/>
</if>
<arg>${member_index_list}</arg>
<arg>${wait_for_sync}</arg>
<arg>${verify_restconf}</arg>
<arg>${check_system_status}</arg>
<arg>${service_list}</arg>
<doc>Verifies the specified readiness conditions for the given listed members after startup.
If ${verify_cluster_sync}, verifies the datastores have synced with the rest of the cluster.
If True, verifies RESTCONF is available.
If ${verify_system_status}, verifies the system services are OPERATIONAL.</doc>
<status status="FAIL" start="2026-04-08T00:57:11.899805" elapsed="0.028841">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.170.48:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<kw name="Verify_Members_Are_Ready" owner="ClusterManagement">
<if>
<branch type="IF" condition="${verify_cluster_sync}">
<kw name="Check_Cluster_Is_In_Sync" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:57:21.947910" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:57:21.947454" elapsed="0.000489"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:57:21.948457" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:57:21.948114" elapsed="0.000371"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:57:21.948534" elapsed="0.000037"/>
</return>
<msg time="2026-04-08T00:57:21.948703" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:57:21.946875" elapsed="0.001855"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:57:21.950309" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:57:21.949985" elapsed="0.000352"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:57:21.950473" elapsed="0.000033"/>
</return>
<msg time="2026-04-08T00:57:21.950642" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:57:21.949634" elapsed="0.001035"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:57:21.957918" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:57:21.957630" elapsed="0.000338"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:57:21.958409" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:57:21.958127" elapsed="0.000330"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:57:22.319105" level="INFO">GET Request : url=http://10.30.170.48:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:57:22.319394" level="INFO">GET Response : url=http://10.30.170.48:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Wed, 08 Apr 2026 00:57:22 GMT', 'Expires': 'Tue, 07 Apr 2026 23:57:22 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-config","member-1-shard-topology-config","member-1-shard-inventory-config","member-1-shard-toaster-config"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1775609842,"status":200} 
 </msg>
<msg time="2026-04-08T00:57:22.319703" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:57:21.960834" elapsed="0.358935"/>
</kw>
<status status="PASS" start="2026-04-08T00:57:21.958528" elapsed="0.361359"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:57:22.320406" elapsed="0.000054"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:57:22.319959" elapsed="0.000604"/>
</branch>
<status status="PASS" start="2026-04-08T00:57:21.958509" elapsed="0.362104"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:57:22.327891" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-config","member-1-shard-topology-config","member-1-shard-inventory-config","member-1-shard-toaster-config"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1775609842,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:57:22.324045" elapsed="0.003982"/>
</kw>
<status status="PASS" start="2026-04-08T00:57:22.323454" elapsed="0.004759"/>
</branch>
<status status="PASS" start="2026-04-08T00:57:22.323402" elapsed="0.004862"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:57:22.331018" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:57:22.328607" elapsed="0.002505"/>
</kw>
<status status="PASS" start="2026-04-08T00:57:22.328348" elapsed="0.002891"/>
</branch>
<status status="PASS" start="2026-04-08T00:57:22.328327" elapsed="0.002959"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:57:22.332061" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:57:22.331500" elapsed="0.000589"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:57:22.332469" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:57:22.332168" elapsed="0.000474"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:57:22.333430" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:57:22.332838" elapsed="0.000672"/>
</kw>
<status status="PASS" start="2026-04-08T00:57:22.332669" elapsed="0.000991"/>
</branch>
<status status="PASS" start="2026-04-08T00:57:22.332144" elapsed="0.001540"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:57:22.334392" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:57:22.333850" elapsed="0.000570"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:57:22.334756" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:57:22.334494" elapsed="0.000443"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:57:22.335797" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:57:22.335149" elapsed="0.000740"/>
</kw>
<status status="PASS" start="2026-04-08T00:57:22.334979" elapsed="0.001068"/>
</branch>
<status status="PASS" start="2026-04-08T00:57:22.334475" elapsed="0.001598"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:57:22.336252" elapsed="0.000738"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:57:22.338091" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:57:22.337257" elapsed="0.000864"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:57:22.338303" elapsed="0.002755"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:57:22.321932" elapsed="0.019205"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:57:22.341508" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:57:22.341388" elapsed="0.000167"/>
</branch>
<status status="PASS" start="2026-04-08T00:57:22.341367" elapsed="0.000210"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:57:22.344357" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1775609842,...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:57:22.341726" elapsed="0.002662"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:57:22.344443" elapsed="0.000037"/>
</return>
<msg time="2026-04-08T00:57:22.344615" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1775609842,...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:57:21.953294" elapsed="0.391350"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:57:22.344705" elapsed="0.000027"/>
</return>
<msg time="2026-04-08T00:57:22.344860" level="INFO">${conf_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1775609842,...</msg>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-08T00:57:21.950883" elapsed="0.394006"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:57:22.345777" level="INFO">{
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1775609842,
 "value": {
  "LocalShards": [
   "member-1-shard-default-config",
   "member-1-shard-inventory-config",
   "member-1-shard-toaster-config",
   "member-1-shard-topology-config"
  ],
  "MemberName": "member-1",
  "SyncStatus": true
 }
}
</msg>
<arg>${shard_manager_text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:57:22.345514" elapsed="0.000314"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:57:22.346880" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1775609842, 'value': {...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:57:22.346464" elapsed="0.000446"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-08T00:57:22.346962" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:57:22.347125" level="INFO">${manager_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1775609842, 'value': {...</msg>
<var>${manager_object}</var>
<arg>${shard_manager_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-08T00:57:22.346043" elapsed="0.001111"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:57:22.347559" level="INFO">${value_object} = {'LocalShards': ['member-1-shard-default-config', 'member-1-shard-inventory-config', 'member-1-shard-toaster-config', 'member-1-shard-topology-config'], 'MemberName': 'member-1', 'SyncStatus': True}</msg>
<var>${value_object}</var>
<arg>dictionary=${manager_object}</arg>
<arg>key=value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:57:22.347332" elapsed="0.000256"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:57:22.347987" level="INFO">${sync_status} = True</msg>
<var>${sync_status}</var>
<arg>dictionary=${value_object}</arg>
<arg>key=SyncStatus</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:57:22.347770" elapsed="0.000244"/>
</kw>
<return>
<value>${sync_status}</value>
<status status="PASS" start="2026-04-08T00:57:22.348063" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:57:22.348237" level="INFO">${conf_status} = True</msg>
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="PASS" start="2026-04-08T00:57:22.345125" elapsed="0.003139"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-08T00:57:22.348647" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:57:22.348528" elapsed="0.000163"/>
</branch>
<status status="PASS" start="2026-04-08T00:57:22.348318" elapsed="0.000397"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:57:22.356717" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:57:22.356457" elapsed="0.000308"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:57:22.357263" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:57:22.356970" elapsed="0.000339"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:57:22.365621" level="INFO">GET Request : url=http://10.30.170.48:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:57:22.365716" level="INFO">GET Response : url=http://10.30.170.48:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Wed, 08 Apr 2026 00:57:22 GMT', 'Expires': 'Tue, 07 Apr 2026 23:57:22 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-operational","member-1-shard-topology-operational","member-1-shard-inventory-operational","member-1-shard-toaster-operational"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1775609842,"status":200} 
 </msg>
<msg time="2026-04-08T00:57:22.365848" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:57:22.359502" elapsed="0.006375"/>
</kw>
<status status="PASS" start="2026-04-08T00:57:22.357382" elapsed="0.008555"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:57:22.366169" elapsed="0.000039"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:57:22.365970" elapsed="0.000287"/>
</branch>
<status status="PASS" start="2026-04-08T00:57:22.357362" elapsed="0.008919"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:57:22.371896" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-operational","member-1-shard-topology-operational","member-1-shard-inventory-operational","member-1-shard-toaster-operational"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1775609842,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:57:22.367935" elapsed="0.004100"/>
</kw>
<status status="PASS" start="2026-04-08T00:57:22.367589" elapsed="0.004647"/>
</branch>
<status status="PASS" start="2026-04-08T00:57:22.367562" elapsed="0.004728"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:57:22.376809" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:57:22.372753" elapsed="0.004189"/>
</kw>
<status status="PASS" start="2026-04-08T00:57:22.372385" elapsed="0.004719"/>
</branch>
<status status="PASS" start="2026-04-08T00:57:22.372360" elapsed="0.004784"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:57:22.378026" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:57:22.377461" elapsed="0.000593"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:57:22.378420" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:57:22.378129" elapsed="0.000465"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:57:22.379378" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:57:22.378790" elapsed="0.000665"/>
</kw>
<status status="PASS" start="2026-04-08T00:57:22.378621" elapsed="0.000984"/>
</branch>
<status status="PASS" start="2026-04-08T00:57:22.378110" elapsed="0.001520"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:57:22.380348" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:57:22.379792" elapsed="0.000584"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:57:22.380706" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:57:22.380449" elapsed="0.000428"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:57:22.381668" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:57:22.381066" elapsed="0.000680"/>
</kw>
<status status="PASS" start="2026-04-08T00:57:22.380903" elapsed="0.000989"/>
</branch>
<status status="PASS" start="2026-04-08T00:57:22.380430" elapsed="0.001486"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:57:22.382077" elapsed="0.000682"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:57:22.383731" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:57:22.382928" elapsed="0.000830"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:57:22.383914" elapsed="0.002995"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:57:22.366934" elapsed="0.020103"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:57:22.387242" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:57:22.387110" elapsed="0.000178"/>
</branch>
<status status="PASS" start="2026-04-08T00:57:22.387090" elapsed="0.000221"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:57:22.390115" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:57:22.387457" elapsed="0.002687"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:57:22.390216" elapsed="0.000037"/>
</return>
<msg time="2026-04-08T00:57:22.390388" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:57:22.351525" elapsed="0.038889"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:57:22.390471" elapsed="0.000026"/>
</return>
<msg time="2026-04-08T00:57:22.390628" level="INFO">${oper_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-08T00:57:22.348924" elapsed="0.041729"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:57:22.391513" level="INFO">{
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1775609842,
 "value": {
  "LocalShards": [
   "member-1-shard-default-operational",
   "member-1-shard-inventory-operational",
   "member-1-shard-toaster-operational",
   "member-1-shard-topology-operational"
  ],
  "MemberName": "member-1",
  "SyncStatus": true
 }
}
</msg>
<arg>${shard_manager_text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:57:22.391260" elapsed="0.000301"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:57:22.392523" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1775609842, ...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:57:22.392103" elapsed="0.000473"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-08T00:57:22.392627" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:57:22.392786" level="INFO">${manager_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1775609842, ...</msg>
<var>${manager_object}</var>
<arg>${shard_manager_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-08T00:57:22.391768" elapsed="0.001044"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:57:22.393278" level="INFO">${value_object} = {'LocalShards': ['member-1-shard-default-operational', 'member-1-shard-inventory-operational', 'member-1-shard-toaster-operational', 'member-1-shard-topology-operational'], 'MemberName': 'member-1', '...</msg>
<var>${value_object}</var>
<arg>dictionary=${manager_object}</arg>
<arg>key=value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:57:22.392967" elapsed="0.000340"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:57:22.393675" level="INFO">${sync_status} = True</msg>
<var>${sync_status}</var>
<arg>dictionary=${value_object}</arg>
<arg>key=SyncStatus</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:57:22.393463" elapsed="0.000237"/>
</kw>
<return>
<value>${sync_status}</value>
<status status="PASS" start="2026-04-08T00:57:22.393747" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:57:22.393904" level="INFO">${oper_status} = True</msg>
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="PASS" start="2026-04-08T00:57:22.390880" elapsed="0.003050"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="PASS" start="2026-04-08T00:57:22.393973" elapsed="0.000026"/>
</return>
<msg time="2026-04-08T00:57:22.394122" level="INFO">${status} = True</msg>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="PASS" start="2026-04-08T00:57:21.949246" elapsed="0.444902"/>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="PASS" start="2026-04-08T00:57:22.394348" elapsed="0.000033"/>
</continue>
<status status="PASS" start="2026-04-08T00:57:22.394237" elapsed="0.000173"/>
</branch>
<status status="PASS" start="2026-04-08T00:57:22.394218" elapsed="0.000216"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:57:22.394580" elapsed="0.000021"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T00:57:21.948993" elapsed="0.445642"/>
</iter>
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:57:22.396053" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:57:22.395751" elapsed="0.000329"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:57:22.396165" elapsed="0.000043"/>
</return>
<msg time="2026-04-08T00:57:22.396332" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:57:22.395407" elapsed="0.000951"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:57:22.403558" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:57:22.403299" elapsed="0.000308"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:57:22.404010" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:57:22.403762" elapsed="0.000293"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:57:23.870653" level="INFO">GET Request : url=http://10.30.170.131:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:57:23.870807" level="INFO">GET Response : url=http://10.30.170.131:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Wed, 08 Apr 2026 00:57:23 GMT', 'Expires': 'Tue, 07 Apr 2026 23:57:23 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore","type":"read"},"value":{"LocalShards":["member-2-shard-default-config","member-2-shard-topology-config","member-2-shard-inventory-config","member-2-shard-toaster-config"],"SyncStatus":true,"MemberName":"member-2"},"timestamp":1775609843,"status":200} 
 </msg>
<msg time="2026-04-08T00:57:23.871018" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:57:22.406138" elapsed="1.464922"/>
</kw>
<status status="PASS" start="2026-04-08T00:57:22.404126" elapsed="1.467018"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:57:23.871519" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:57:23.871227" elapsed="0.000393"/>
</branch>
<status status="PASS" start="2026-04-08T00:57:22.404107" elapsed="1.467545"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:57:23.877660" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore","type":"read"},"value":{"LocalShards":["member-2-shard-default-config","member-2-shard-topology-config","member-2-shard-inventory-config","member-2-shard-toaster-config"],"SyncStatus":true,"MemberName":"member-2"},"timestamp":1775609843,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:57:23.873653" elapsed="0.004171"/>
</kw>
<status status="PASS" start="2026-04-08T00:57:23.873236" elapsed="0.004824"/>
</branch>
<status status="PASS" start="2026-04-08T00:57:23.873203" elapsed="0.004906"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:57:23.881015" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:57:23.878534" elapsed="0.002591"/>
</kw>
<status status="PASS" start="2026-04-08T00:57:23.878237" elapsed="0.003032"/>
</branch>
<status status="PASS" start="2026-04-08T00:57:23.878208" elapsed="0.003092"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:57:23.882061" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:57:23.881490" elapsed="0.000622"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:57:23.882534" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:57:23.882232" elapsed="0.000481"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:57:23.883520" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:57:23.882910" elapsed="0.000691"/>
</kw>
<status status="PASS" start="2026-04-08T00:57:23.882742" elapsed="0.001009"/>
</branch>
<status status="PASS" start="2026-04-08T00:57:23.882208" elapsed="0.001569"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:57:23.884492" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:57:23.883941" elapsed="0.000579"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:57:23.884858" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:57:23.884594" elapsed="0.000439"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:57:23.885829" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:57:23.885245" elapsed="0.000666"/>
</kw>
<status status="PASS" start="2026-04-08T00:57:23.885061" elapsed="0.001000"/>
</branch>
<status status="PASS" start="2026-04-08T00:57:23.884575" elapsed="0.001513"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:57:23.886325" elapsed="0.000681"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:57:23.888088" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:57:23.887262" elapsed="0.000855"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:57:23.888297" elapsed="0.003061"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:57:23.872479" elapsed="0.018948"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:57:23.891619" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:57:23.891501" elapsed="0.000164"/>
</branch>
<status status="PASS" start="2026-04-08T00:57:23.891482" elapsed="0.000205"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:57:23.894597" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1775609843,...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:57:23.891835" elapsed="0.002792"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:57:23.894683" elapsed="0.000037"/>
</return>
<msg time="2026-04-08T00:57:23.894852" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1775609843,...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:57:22.399117" elapsed="1.495762"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:57:23.894938" elapsed="0.000027"/>
</return>
<msg time="2026-04-08T00:57:23.895089" level="INFO">${conf_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1775609843,...</msg>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-08T00:57:22.396567" elapsed="1.498549"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:57:23.895979" level="INFO">{
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1775609843,
 "value": {
  "LocalShards": [
   "member-2-shard-default-config",
   "member-2-shard-inventory-config",
   "member-2-shard-toaster-config",
   "member-2-shard-topology-config"
  ],
  "MemberName": "member-2",
  "SyncStatus": true
 }
}
</msg>
<arg>${shard_manager_text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:57:23.895718" elapsed="0.000311"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:57:23.897094" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1775609843, 'value': {...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:57:23.896651" elapsed="0.000473"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-08T00:57:23.897192" elapsed="0.000032"/>
</return>
<msg time="2026-04-08T00:57:23.897367" level="INFO">${manager_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1775609843, 'value': {...</msg>
<var>${manager_object}</var>
<arg>${shard_manager_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-08T00:57:23.896259" elapsed="0.001136"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:57:23.897796" level="INFO">${value_object} = {'LocalShards': ['member-2-shard-default-config', 'member-2-shard-inventory-config', 'member-2-shard-toaster-config', 'member-2-shard-topology-config'], 'MemberName': 'member-2', 'SyncStatus': True}</msg>
<var>${value_object}</var>
<arg>dictionary=${manager_object}</arg>
<arg>key=value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:57:23.897552" elapsed="0.000273"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:57:23.898285" level="INFO">${sync_status} = True</msg>
<var>${sync_status}</var>
<arg>dictionary=${value_object}</arg>
<arg>key=SyncStatus</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:57:23.897984" elapsed="0.000331"/>
</kw>
<return>
<value>${sync_status}</value>
<status status="PASS" start="2026-04-08T00:57:23.898367" elapsed="0.000051"/>
</return>
<msg time="2026-04-08T00:57:23.898547" level="INFO">${conf_status} = True</msg>
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="PASS" start="2026-04-08T00:57:23.895356" elapsed="0.003217"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-08T00:57:23.898753" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:57:23.898643" elapsed="0.000158"/>
</branch>
<status status="PASS" start="2026-04-08T00:57:23.898625" elapsed="0.000206"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:57:23.906271" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:57:23.905987" elapsed="0.000334"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:57:23.906772" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:57:23.906478" elapsed="0.000384"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:57:23.915548" level="INFO">GET Request : url=http://10.30.170.131:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:57:23.915644" level="INFO">GET Response : url=http://10.30.170.131:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Wed, 08 Apr 2026 00:57:23 GMT', 'Expires': 'Tue, 07 Apr 2026 23:57:23 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"LocalShards":["member-2-shard-default-operational","member-2-shard-topology-operational","member-2-shard-inventory-operational","member-2-shard-toaster-operational"],"SyncStatus":true,"MemberName":"member-2"},"timestamp":1775609843,"status":200} 
 </msg>
<msg time="2026-04-08T00:57:23.915765" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:57:23.909108" elapsed="0.006684"/>
</kw>
<status status="PASS" start="2026-04-08T00:57:23.906937" elapsed="0.008901"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:57:23.916021" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:57:23.915866" elapsed="0.000221"/>
</branch>
<status status="PASS" start="2026-04-08T00:57:23.906915" elapsed="0.009194"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:57:23.921524" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"LocalShards":["member-2-shard-default-operational","member-2-shard-topology-operational","member-2-shard-inventory-operational","member-2-shard-toaster-operational"],"SyncStatus":true,"MemberName":"member-2"},"timestamp":1775609843,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:57:23.917570" elapsed="0.004089"/>
</kw>
<status status="PASS" start="2026-04-08T00:57:23.917251" elapsed="0.004560"/>
</branch>
<status status="PASS" start="2026-04-08T00:57:23.917224" elapsed="0.004642"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:57:23.926062" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:57:23.922448" elapsed="0.003770"/>
</kw>
<status status="PASS" start="2026-04-08T00:57:23.921978" elapsed="0.004394"/>
</branch>
<status status="PASS" start="2026-04-08T00:57:23.921945" elapsed="0.004467"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:57:23.927632" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:57:23.926668" elapsed="0.000993"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:57:23.928006" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:57:23.927739" elapsed="0.000460"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:57:23.929027" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:57:23.928400" elapsed="0.000707"/>
</kw>
<status status="PASS" start="2026-04-08T00:57:23.928227" elapsed="0.001048"/>
</branch>
<status status="PASS" start="2026-04-08T00:57:23.927718" elapsed="0.001583"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:57:23.930001" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:57:23.929469" elapsed="0.000567"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:57:23.930407" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:57:23.930122" elapsed="0.000458"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:57:23.931428" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:57:23.930771" elapsed="0.000736"/>
</kw>
<status status="PASS" start="2026-04-08T00:57:23.930607" elapsed="0.001046"/>
</branch>
<status status="PASS" start="2026-04-08T00:57:23.930101" elapsed="0.001577"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:57:23.931837" elapsed="0.000688"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:57:23.933559" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:57:23.932697" elapsed="0.000891"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:57:23.933748" elapsed="0.002887"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:57:23.916696" elapsed="0.020008"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:57:23.936948" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:57:23.936832" elapsed="0.000167"/>
</branch>
<status status="PASS" start="2026-04-08T00:57:23.936812" elapsed="0.000218"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:57:23.939921" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:57:23.937204" elapsed="0.002747"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:57:23.940013" elapsed="0.000045"/>
</return>
<msg time="2026-04-08T00:57:23.940229" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:57:23.901574" elapsed="0.038684"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:57:23.940319" elapsed="0.000027"/>
</return>
<msg time="2026-04-08T00:57:23.940471" level="INFO">${oper_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-08T00:57:23.899063" elapsed="0.041435"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:57:23.941373" level="INFO">{
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1775609843,
 "value": {
  "LocalShards": [
   "member-2-shard-default-operational",
   "member-2-shard-inventory-operational",
   "member-2-shard-toaster-operational",
   "member-2-shard-topology-operational"
  ],
  "MemberName": "member-2",
  "SyncStatus": true
 }
}
</msg>
<arg>${shard_manager_text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:57:23.941092" elapsed="0.000330"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:57:23.942410" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1775609843, ...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:57:23.941970" elapsed="0.000471"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-08T00:57:23.942490" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:57:23.942649" level="INFO">${manager_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1775609843, ...</msg>
<var>${manager_object}</var>
<arg>${shard_manager_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-08T00:57:23.941629" elapsed="0.001047"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:57:23.943051" level="INFO">${value_object} = {'LocalShards': ['member-2-shard-default-operational', 'member-2-shard-inventory-operational', 'member-2-shard-toaster-operational', 'member-2-shard-topology-operational'], 'MemberName': 'member-2', '...</msg>
<var>${value_object}</var>
<arg>dictionary=${manager_object}</arg>
<arg>key=value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:57:23.942829" elapsed="0.000249"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:57:23.943531" level="INFO">${sync_status} = True</msg>
<var>${sync_status}</var>
<arg>dictionary=${value_object}</arg>
<arg>key=SyncStatus</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:57:23.943313" elapsed="0.000243"/>
</kw>
<return>
<value>${sync_status}</value>
<status status="PASS" start="2026-04-08T00:57:23.943605" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:57:23.943755" level="INFO">${oper_status} = True</msg>
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="PASS" start="2026-04-08T00:57:23.940721" elapsed="0.003060"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="PASS" start="2026-04-08T00:57:23.943826" elapsed="0.000026"/>
</return>
<msg time="2026-04-08T00:57:23.943975" level="INFO">${status} = True</msg>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="PASS" start="2026-04-08T00:57:22.395013" elapsed="1.548988"/>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="PASS" start="2026-04-08T00:57:23.944234" elapsed="0.000031"/>
</continue>
<status status="PASS" start="2026-04-08T00:57:23.944072" elapsed="0.000224"/>
</branch>
<status status="PASS" start="2026-04-08T00:57:23.944054" elapsed="0.000266"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:57:23.944478" elapsed="0.000027"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T00:57:22.394781" elapsed="1.549763"/>
</iter>
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:57:23.946349" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:57:23.946002" elapsed="0.000375"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:57:23.946425" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:57:23.946575" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:57:23.945592" elapsed="0.001043"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:57:23.954094" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:57:23.953836" elapsed="0.000305"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:57:23.954564" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:57:23.954314" elapsed="0.000295"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:57:25.543963" level="INFO">GET Request : url=http://10.30.171.110:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:57:25.544221" level="INFO">GET Response : url=http://10.30.171.110:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Wed, 08 Apr 2026 00:57:25 GMT', 'Expires': 'Tue, 07 Apr 2026 23:57:25 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore","type":"read"},"value":{"LocalShards":["member-3-shard-default-config","member-3-shard-topology-config","member-3-shard-inventory-config","member-3-shard-toaster-config"],"SyncStatus":true,"MemberName":"member-3"},"timestamp":1775609845,"status":200} 
 </msg>
<msg time="2026-04-08T00:57:25.544532" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:57:23.956677" elapsed="1.587921"/>
</kw>
<status status="PASS" start="2026-04-08T00:57:23.954678" elapsed="1.590034"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:57:25.545298" elapsed="0.000067"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:57:25.544783" elapsed="0.000686"/>
</branch>
<status status="PASS" start="2026-04-08T00:57:23.954659" elapsed="1.590858"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:57:25.554590" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore","type":"read"},"value":{"LocalShards":["member-3-shard-default-config","member-3-shard-topology-config","member-3-shard-inventory-config","member-3-shard-toaster-config"],"SyncStatus":true,"MemberName":"member-3"},"timestamp":1775609845,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:57:25.548432" elapsed="0.006254"/>
</kw>
<status status="PASS" start="2026-04-08T00:57:25.547821" elapsed="0.006971"/>
</branch>
<status status="PASS" start="2026-04-08T00:57:25.547773" elapsed="0.007047"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:57:25.557595" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:57:25.555119" elapsed="0.002567"/>
</kw>
<status status="PASS" start="2026-04-08T00:57:25.554879" elapsed="0.002923"/>
</branch>
<status status="PASS" start="2026-04-08T00:57:25.554861" elapsed="0.002975"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:57:25.558587" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:57:25.558019" elapsed="0.000596"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:57:25.558961" elapsed="0.000027"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:57:25.558686" elapsed="0.000456"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:57:25.559957" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:57:25.559355" elapsed="0.000685"/>
</kw>
<status status="PASS" start="2026-04-08T00:57:25.559187" elapsed="0.001028"/>
</branch>
<status status="PASS" start="2026-04-08T00:57:25.558668" elapsed="0.001593"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:57:25.561057" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:57:25.560472" elapsed="0.000614"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:57:25.561578" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:57:25.561165" elapsed="0.000603"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:57:25.562651" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:57:25.561963" elapsed="0.000769"/>
</kw>
<status status="PASS" start="2026-04-08T00:57:25.561797" elapsed="0.001111"/>
</branch>
<status status="PASS" start="2026-04-08T00:57:25.561141" elapsed="0.001796"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:57:25.563113" elapsed="0.000786"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:57:25.565064" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:57:25.564133" elapsed="0.000966"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:57:25.565293" elapsed="0.002849"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:57:25.546729" elapsed="0.021500"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:57:25.568416" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:57:25.568302" elapsed="0.000160"/>
</branch>
<status status="PASS" start="2026-04-08T00:57:25.568282" elapsed="0.000201"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:57:25.571491" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1775609845,...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:57:25.568632" elapsed="0.002889"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:57:25.571574" elapsed="0.000036"/>
</return>
<msg time="2026-04-08T00:57:25.571746" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1775609845,...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:57:23.949482" elapsed="1.622292"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:57:25.571832" elapsed="0.000027"/>
</return>
<msg time="2026-04-08T00:57:25.571982" level="INFO">${conf_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1775609845,...</msg>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-08T00:57:23.946911" elapsed="1.625098"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:57:25.572885" level="INFO">{
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1775609845,
 "value": {
  "LocalShards": [
   "member-3-shard-default-config",
   "member-3-shard-inventory-config",
   "member-3-shard-toaster-config",
   "member-3-shard-topology-config"
  ],
  "MemberName": "member-3",
  "SyncStatus": true
 }
}
</msg>
<arg>${shard_manager_text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:57:25.572618" elapsed="0.000316"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:57:25.573963" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1775609845, 'value': {...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:57:25.573509" elapsed="0.000483"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-08T00:57:25.574048" elapsed="0.000032"/>
</return>
<msg time="2026-04-08T00:57:25.574318" level="INFO">${manager_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1775609845, 'value': {...</msg>
<var>${manager_object}</var>
<arg>${shard_manager_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-08T00:57:25.573143" elapsed="0.001204"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:57:25.574727" level="INFO">${value_object} = {'LocalShards': ['member-3-shard-default-config', 'member-3-shard-inventory-config', 'member-3-shard-toaster-config', 'member-3-shard-topology-config'], 'MemberName': 'member-3', 'SyncStatus': True}</msg>
<var>${value_object}</var>
<arg>dictionary=${manager_object}</arg>
<arg>key=value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:57:25.574502" elapsed="0.000255"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:57:25.575136" level="INFO">${sync_status} = True</msg>
<var>${sync_status}</var>
<arg>dictionary=${value_object}</arg>
<arg>key=SyncStatus</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:57:25.574915" elapsed="0.000268"/>
</kw>
<return>
<value>${sync_status}</value>
<status status="PASS" start="2026-04-08T00:57:25.575232" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:57:25.575396" level="INFO">${conf_status} = True</msg>
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="PASS" start="2026-04-08T00:57:25.572248" elapsed="0.003173"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-08T00:57:25.575599" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:57:25.575490" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-08T00:57:25.575472" elapsed="0.000193"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:57:25.582964" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:57:25.582690" elapsed="0.000323"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:57:25.583460" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:57:25.583198" elapsed="0.000308"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:57:25.592406" level="INFO">GET Request : url=http://10.30.171.110:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:57:25.592485" level="INFO">GET Response : url=http://10.30.171.110:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Wed, 08 Apr 2026 00:57:25 GMT', 'Expires': 'Tue, 07 Apr 2026 23:57:25 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"LocalShards":["member-3-shard-default-operational","member-3-shard-topology-operational","member-3-shard-inventory-operational","member-3-shard-toaster-operational"],"SyncStatus":true,"MemberName":"member-3"},"timestamp":1775609845,"status":200} 
 </msg>
<msg time="2026-04-08T00:57:25.592598" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:57:25.585634" elapsed="0.006990"/>
</kw>
<status status="PASS" start="2026-04-08T00:57:25.583629" elapsed="0.009038"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:57:25.592846" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:57:25.592694" elapsed="0.000217"/>
</branch>
<status status="PASS" start="2026-04-08T00:57:25.583607" elapsed="0.009325"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:57:25.597628" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"LocalShards":["member-3-shard-default-operational","member-3-shard-topology-operational","member-3-shard-inventory-operational","member-3-shard-toaster-operational"],"SyncStatus":true,"MemberName":"member-3"},"timestamp":1775609845,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:57:25.594206" elapsed="0.003552"/>
</kw>
<status status="PASS" start="2026-04-08T00:57:25.593897" elapsed="0.004009"/>
</branch>
<status status="PASS" start="2026-04-08T00:57:25.593877" elapsed="0.004070"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:57:25.601949" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:57:25.598422" elapsed="0.003714"/>
</kw>
<status status="PASS" start="2026-04-08T00:57:25.598059" elapsed="0.004251"/>
</branch>
<status status="PASS" start="2026-04-08T00:57:25.598034" elapsed="0.004319"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:57:25.603102" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:57:25.602548" elapsed="0.000583"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:57:25.603529" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:57:25.603262" elapsed="0.000437"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:57:25.604484" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:57:25.603892" elapsed="0.000670"/>
</kw>
<status status="PASS" start="2026-04-08T00:57:25.603726" elapsed="0.000982"/>
</branch>
<status status="PASS" start="2026-04-08T00:57:25.603241" elapsed="0.001492"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:57:25.605433" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:57:25.604896" elapsed="0.000563"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:57:25.605783" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:57:25.605529" elapsed="0.000428"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:57:25.606776" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:57:25.606208" elapsed="0.000647"/>
</kw>
<status status="PASS" start="2026-04-08T00:57:25.605984" elapsed="0.001013"/>
</branch>
<status status="PASS" start="2026-04-08T00:57:25.605511" elapsed="0.001511"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:57:25.607225" elapsed="0.000653"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:57:25.608852" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:57:25.608047" elapsed="0.000831"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:57:25.609034" elapsed="0.002910"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:57:25.593462" elapsed="0.018547"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:57:25.612398" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:57:25.612119" elapsed="0.000327"/>
</branch>
<status status="PASS" start="2026-04-08T00:57:25.612099" elapsed="0.000369"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:57:25.615232" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:57:25.612613" elapsed="0.002649"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:57:25.615315" elapsed="0.000034"/>
</return>
<msg time="2026-04-08T00:57:25.615477" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:57:25.578450" elapsed="0.037053"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:57:25.615559" elapsed="0.000027"/>
</return>
<msg time="2026-04-08T00:57:25.615707" level="INFO">${oper_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-08T00:57:25.575864" elapsed="0.039868"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:57:25.616583" level="INFO">{
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1775609845,
 "value": {
  "LocalShards": [
   "member-3-shard-default-operational",
   "member-3-shard-inventory-operational",
   "member-3-shard-toaster-operational",
   "member-3-shard-topology-operational"
  ],
  "MemberName": "member-3",
  "SyncStatus": true
 }
}
</msg>
<arg>${shard_manager_text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:57:25.616311" elapsed="0.000325"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:57:25.617711" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1775609845, ...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:57:25.617282" elapsed="0.000459"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-08T00:57:25.617790" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:57:25.617951" level="INFO">${manager_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1775609845, ...</msg>
<var>${manager_object}</var>
<arg>${shard_manager_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-08T00:57:25.616863" elapsed="0.001115"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:57:25.618416" level="INFO">${value_object} = {'LocalShards': ['member-3-shard-default-operational', 'member-3-shard-inventory-operational', 'member-3-shard-toaster-operational', 'member-3-shard-topology-operational'], 'MemberName': 'member-3', '...</msg>
<var>${value_object}</var>
<arg>dictionary=${manager_object}</arg>
<arg>key=value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:57:25.618131" elapsed="0.000319"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:57:25.618827" level="INFO">${sync_status} = True</msg>
<var>${sync_status}</var>
<arg>dictionary=${value_object}</arg>
<arg>key=SyncStatus</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:57:25.618608" elapsed="0.000246"/>
</kw>
<return>
<value>${sync_status}</value>
<status status="PASS" start="2026-04-08T00:57:25.618900" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:57:25.619058" level="INFO">${oper_status} = True</msg>
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="PASS" start="2026-04-08T00:57:25.615944" elapsed="0.003140"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="PASS" start="2026-04-08T00:57:25.619127" elapsed="0.000035"/>
</return>
<msg time="2026-04-08T00:57:25.619320" level="INFO">${status} = True</msg>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="PASS" start="2026-04-08T00:57:23.945144" elapsed="1.674202"/>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="PASS" start="2026-04-08T00:57:25.619537" elapsed="0.000035"/>
</continue>
<status status="PASS" start="2026-04-08T00:57:25.619420" elapsed="0.000183"/>
</branch>
<status status="PASS" start="2026-04-08T00:57:25.619402" elapsed="0.000225"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:57:25.619783" elapsed="0.000022"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T00:57:23.944896" elapsed="1.674944"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-08T00:57:21.948788" elapsed="3.671091"/>
</for>
<arg>${member_index_list}</arg>
<doc>Fail if no-sync is detected on a member from list (or any).</doc>
<status status="PASS" start="2026-04-08T00:57:21.946256" elapsed="3.673687"/>
</kw>
<status status="PASS" start="2026-04-08T00:57:21.945763" elapsed="3.674214"/>
</branch>
<status status="PASS" start="2026-04-08T00:57:21.945730" elapsed="3.674271"/>
</if>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Verify_Restconf_Is_Available" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:57:25.621508" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:57:25.621102" elapsed="0.000434"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:57:25.622071" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:57:25.621741" elapsed="0.000357"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:57:25.622143" elapsed="0.000053"/>
</return>
<msg time="2026-04-08T00:57:25.622361" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:57:25.620726" elapsed="0.001664"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:57:25.623618" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:57:25.623265" elapsed="0.000384"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:57:25.623703" elapsed="0.000033"/>
</return>
<msg time="2026-04-08T00:57:25.623873" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:57:25.622824" elapsed="0.001075"/>
</kw>
<kw name="Get_As_Json_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:57:25.713692" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:57:25.712895" elapsed="0.000898"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:57:25.715348" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:57:25.715040" elapsed="0.000394">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-08T00:57:25.715634" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:57:25.714065" elapsed="0.001710"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:57:25.716991" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:57:25.716088" elapsed="0.001004"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T00:57:25.717683" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-08T00:57:25.717972" level="INFO">${template} = /rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T00:57:25.717347" elapsed="0.000722"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:57:25.719067" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:57:25.718536" elapsed="0.000688"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:57:25.720967" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:57:25.720702" elapsed="0.000311"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-08T00:57:25.721461" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-08T00:57:25.721187" elapsed="0.000299"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-04-08T00:57:25.721814" elapsed="0.000022"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-04-08T00:57:25.722013" elapsed="0.000025"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-04-08T00:57:25.722286" elapsed="0.000025"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-08T00:57:25.721682" elapsed="0.000666"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-08T00:57:25.721539" elapsed="0.000840"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-08T00:57:25.722426" elapsed="0.000035"/>
</return>
<msg time="2026-04-08T00:57:25.722742" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-08T00:57:25.720147" elapsed="0.002630"/>
</kw>
<status status="PASS" start="2026-04-08T00:57:25.719353" elapsed="0.003470"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:57:25.723210" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:57:25.722908" elapsed="0.000388"/>
</branch>
<status status="PASS" start="2026-04-08T00:57:25.719310" elapsed="0.004067"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:57:25.724561" level="INFO">${final_text} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:57:25.723583" elapsed="0.001076"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T00:57:25.724734" elapsed="0.000031"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="PASS" start="2026-04-08T00:57:25.711687" elapsed="0.013302"/>
</kw>
<msg time="2026-04-08T00:57:25.725046" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:57:25.660417" elapsed="0.064682"/>
</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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:57:25.741316" elapsed="0.000072"/>
</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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:57:25.757843" elapsed="0.000064"/>
</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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:57:25.772054" elapsed="0.000063"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:57:25.772375" elapsed="0.000023"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:57:25.772734" elapsed="0.000024"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:57:25.773276" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:57:25.773095" elapsed="0.000488"/>
</branch>
<status status="NOT RUN" start="2026-04-08T00:57:25.773078" elapsed="0.000536"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:57:25.773765" elapsed="0.000022"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:57:25.773937" elapsed="0.000021"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:57:25.774106" elapsed="0.000021"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-08T00:57:25.773035" elapsed="0.001130"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-08T00:57:25.772831" elapsed="0.001380"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-08T00:57:25.774359" elapsed="0.000021"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-08T00:57:25.774440" elapsed="0.000017"/>
</return>
<msg time="2026-04-08T00:57:25.774597" level="INFO">${uri} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-08T00:57:25.656374" elapsed="0.118252"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:57:25.776391" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:57:25.775960" elapsed="0.000509">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-08T00:57:25.776597" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:57:25.775548" elapsed="0.001075"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:57:25.776992" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:57:25.776700" elapsed="0.000352"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:57:25.777715" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:57:25.777294" elapsed="0.000448"/>
</kw>
<status status="PASS" start="2026-04-08T00:57:25.777077" elapsed="0.000702"/>
</branch>
<status status="PASS" start="2026-04-08T00:57:25.776680" elapsed="0.001121"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:57:25.780380" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:57:25.777954" elapsed="0.002525"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-08T00:57:25.780547" elapsed="0.000109"/>
</return>
<msg time="2026-04-08T00:57:25.781017" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:57:25.774984" elapsed="0.006074"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:57:25.783109" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:57:25.782508" elapsed="0.000728">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-08T00:57:25.783371" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:57:25.781993" elapsed="0.001407"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-08T00:57:25.783684" elapsed="0.000040"/>
</return>
<status status="PASS" start="2026-04-08T00:57:25.783484" elapsed="0.000288"/>
</branch>
<status status="PASS" start="2026-04-08T00:57:25.783462" 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-04-08T00:57:25.784022" elapsed="0.000033"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-08T00:57:25.784292" elapsed="0.000031"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-08T00:57:25.784392" elapsed="0.000021"/>
</return>
<msg time="2026-04-08T00:57:25.787715" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:57:25.781559" elapsed="0.006308"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:57:25.790104" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:57:25.789708" elapsed="0.000798"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:57:25.791014" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:57:25.790704" elapsed="0.000359"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:57:26.270317" level="INFO">GET Request : url=http://10.30.170.48:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 path_url=/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01jewze00gqgu8yuon50tdwq65226.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:57:26.271370" level="INFO">GET Response : url=http://10.30.170.48:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 status=200, reason=OK 
 headers={'Set-Cookie': 'JSESSIONID=node01jewze00gqgu8yuon50tdwq65226.node0; Path=/rests; HttpOnly, rememberMe=deleteMe; Path=/rests; Max-Age=0; Expires=Tue, 07-Apr-2026 00:57:26 GMT; SameSite=lax', 'Expires': 'Thu, 01 Jan 1970 00:00:00 GMT', 'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Transfer-Encoding': 'chunked'} 
 body={"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","encrypted-passwords","hidden-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-private-keys","asymmetrically-encrypted-value-format","cleartext-private-keys","cms-encrypted-data-format","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["client-ident-hostbased","ssh-client-keepalives","client-ident-password","client-ident-publickey"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-ex... (set the log level to DEBUG or TRACE to see the full content) 
 </msg>
<msg time="2026-04-08T00:57:26.272038" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:57:25.794014" elapsed="0.478092"/>
</kw>
<status status="PASS" start="2026-04-08T00:57:25.791162" elapsed="0.481106"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:57:26.272779" elapsed="0.000056"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:57:26.272342" elapsed="0.000599"/>
</branch>
<status status="PASS" start="2026-04-08T00:57:25.791129" elapsed="0.481864"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:57:26.281762" level="INFO">{"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","encrypted-passwords","hidden-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-private-keys","asymmetrically-encrypted-value-format","cleartext-private-keys","cms-encrypted-data-format","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["client-ident-hostbased","ssh-client-keepalives","client-ident-password","client-ident-publickey"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-experimenter-types?revision=2015-10-20","namespace":"urn:opendaylight:openflowplugin:experimenter:types","conformance-type":"import"},{"name":"ietf-ip_2018-02-22","revision":"2018-02-22","schema":"/rests/modules/ietf-ip?revision=2018-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-ip","conformance-type":"import","feature":["ipv6-privacy-autoconf","ipv4-non-contiguous-netmasks"]},{"name":"ietf-tcp-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-client","conformance-type":"import","feature":["local-binding-supported","tcp-client-keepalives"]},{"name":"node-config_2014-10-15","revision":"2014-10-15","schema":"/rests/modules/node-config?revision=2014-10-15","namespace":"urn:opendaylight:module:config","conformance-type":"import"},{"name":"ietf-restconf_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf","conformance-type":"import"},{"name":"ietf-datastores_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-datastores?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-datastores","conformance-type":"import"},{"name":"ietf-yang-patch_2017-02-22","revision":"2017-02-22","schema":"/rests/modules/ietf-yang-patch?revision=2017-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-patch","conformance-type":"import"},{"name":"sal-group_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-group?revision=2013-09-18","namespace":"urn:opendaylight:group:service","conformance-type":"import"},{"name":"odl-codegen-extensions_2024-06-27","revision":"2024-06-27","schema":"/rests/modules/odl-codegen-extensions?revision=2024-06-27","namespace":"urn:opendaylight:yang:extension:codegen","conformance-type":"import"},{"name":"sal-meter_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-meter?revision=2013-09-18","namespace":"urn:opendaylight:meter:service","conformance-type":"import"},{"name":"ietf-interfaces_2018-02-20","revision":"2018-02-20","schema":"/rests/modules/ietf-interfaces?revision=2018-02-20","namespace":"urn:ietf:params:xml:ns:yang:ietf-interfaces","conformance-type":"import","feature":["pre-provisioning","if-mib","arbitrary-names"]},{"name":"opendaylight-l2-types_2013-08-27","revision":"2013-08-27","schema":"/rests/modules/opendaylight-l2-types?revision=2013-08-27","namespace":"urn:opendaylight:l2:types","conformance-type":"import"},{"name":"opendaylight-flow-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-flow-types?revision=2013-10-26","namespace":"urn:opendaylight:flow:types","conformance-type":"import"},{"name":"lldp-speaker-config_2016-05-12","revision":"2016-05-12","schema":"/rests/modules/lldp-speaker-config?revision=2016-05-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker:config","conformance-type":"import"},{"name":"aaa-cert_2015-11-26","revision":"2015-11-26","schema":"/rests/modules/aaa-cert?revision=2015-11-26","namespace":"urn:opendaylight:yang:aaa:cert","conformance-type":"import"},{"name":"openflow-action_2015-02-03","revision":"2015-02-03","schema":"/rests/modules/openflow-action?revision=2015-02-03","namespace":"urn:opendaylight:openflow:common:action","conformance-type":"import"},{"name":"openflow-approved-extensions_2016-08-02","revision":"2016-08-02","schema":"/rests/modules/openflow-approved-extensions?revision=2016-08-02","namespace":"urn:opendaylight:openflow:approved:extensions","conformance-type":"import"},{"name":"nc-notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/nc-notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netmod:notification","conformance-type":"import"},{"name":"ietf-netconf-nmda_2019-01-07","revision":"2019-01-07","schema":"/rests/modules/ietf-netconf-nmda?revision=2019-01-07","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-nmda","conformance-type":"import","feature":["with-defaults","origin"]},{"name":"ietf-tcp-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-common","conformance-type":"import","feature":["keepalives-supported"]},{"name":"network-topology_2013-10-21","revision":"2013-10-21","schema":"/rests/modules/network-topology?revision=2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:network-topology","conformance-type":"import"},{"name":"aaa-encrypt-service-config_2024-02-02","revision":"2024-02-02","schema":"/rests/modules/aaa-encrypt-service-config?revision=2024-02-02","namespace":"config:aaa:authn:encrypt:service:config","conformance-type":"import"},{"name":"openflow-instruction_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-instruction?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:instruction","conformance-type":"import"},{"name":"ietf-tls-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-client","conformance-type":"import","feature":["client-ident-x509-cert","server-auth-x509-cert"]},{"name":"opendaylight-group-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-group-statistics?revision=2013-11-11","namespace":"urn:opendaylight:group:statistics","conformance-type":"import"},{"name":"cluster-admin_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/cluster-admin?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:cluster:admin","conformance-type":"import"},{"name":"opendaylight-flow-statistics_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-flow-statistics?revision=2013-08-19","namespace":"urn:opendaylight:flow:statistics","conformance-type":"import"},{"name":"opendaylight-table-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-table-types?revision=2013-10-26","namespace":"urn:opendaylight:table:types","conformance-type":"import"},{"name":"forwarding-rules-manager-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/forwarding-rules-manager-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:forwardingrules-manager:config","conformance-type":"import"},{"name":"odl-srm-types_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-types?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:types","conformance-type":"import"},{"name":"ietf-x509-cert-to-name_2014-12-10","revision":"2014-12-10","schema":"/rests/modules/ietf-x509-cert-to-name?revision=2014-12-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-x509-cert-to-name","conformance-type":"import"},{"name":"flow-node-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-node-inventory?revision=2013-08-19","namespace":"urn:opendaylight:flow:inventory","conformance-type":"import"},{"name":"flow-errors_2013-11-16","revision":"2013-11-16","schema":"/rests/modules/flow-errors?revision=2013-11-16","namespace":"urn:opendaylight:flow:errors","conformance-type":"import"},{"name":"ietf-netconf_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:netconf:base:1.0","conformance-type":"import","feature":["xpath","url","rollback-on-error","validate","candidate","confirmed-commit","startup","writable-running"]},{"name":"iana-ssh-public-key-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-public-key-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-public-key-algs","conformance-type":"import"},{"name":"aaa-cert-mdsal_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/aaa-cert-mdsal?revision=2016-03-21","namespace":"urn:opendaylight:yang:aaa:cert:mdsal","conformance-type":"import"},{"name":"odl-device-notification_2024-02-18","revision":"2024-02-18","schema":"/rests/modules/odl-device-notification?revision=2024-02-18","namespace":"urn:opendaylight:device:notification","conformance-type":"import"},{"name":"ietf-origin_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-origin?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-origin","conformance-type":"import"},{"name":"openflow-augments_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-augments?revision=2015-02-25","namespace":"urn:opendaylight:openflow:augments","conformance-type":"import"},{"name":"iana-ssh-encryption-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-encryption-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-encryption-algs","conformance-type":"import"},{"name":"ietf-truststore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-truststore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-truststore","conformance-type":"import","feature":["inline-definitions-supported"]},{"name":"distributed-datastore-provider_2025-01-30","revision":"2025-01-30","schema":"/rests/modules/distributed-datastore-provider?revision=2025-01-30","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:distributed-datastore-provider","conformance-type":"import"},{"name":"opendaylight-group-types_2013-10-18","revision":"2013-10-18","schema":"/rests/modules/opendaylight-group-types?revision=2013-10-18","namespace":"urn:opendaylight:group:types","conformance-type":"import"},{"name":"sal-remote-augment_2023-11-03","revision":"2023-11-03","schema":"/rests/modules/sal-remote-augment?revision=2023-11-03","namespace":"urn:sal:restconf:event:subscription","conformance-type":"import"},{"name":"opendaylight-ipv6-arbitrary-bitmask-fields_2016-02-24","revision":"2016-02-24","schema":"/rests/modules/opendaylight-ipv6-arbitrary-bitmask-fields?revision=2016-02-24","namespace":"urn:opendaylight:opendaylight-ipv6-arbitrary-bitmask-fields","conformance-type":"import"},{"name":"sal-flows-batch_2016-03-14","revision":"2016-03-14","schema":"/rests/modules/sal-flows-batch?revision=2016-03-14","namespace":"urn:opendaylight:flows:service","conformance-type":"import"},{"name":"ietf-tls-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-common","conformance-type":"import","feature":["hello-params","tls12","tls13"]},{"name":"openflow-types_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-types?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:types","conformance-type":"import"},{"name":"ietf-netconf-with-defaults_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf-with-defaults?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults","conformance-type":"import"},{"name":"odl-srm-ops_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-ops?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:ops","conformance-type":"import"},{"name":"odl-general-entity_2015-09-30","revision":"2015-09-30","schema":"/rests/modules/odl-general-entity?revision=2015-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:mdsal:core:general-entity","conformance-type":"import"},{"name":"iana-ssh-key-exchange-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-key-exchange-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-key-exchange-algs","conformance-type":"import"},{"name":"node-ssl-connection-error_2019-07-23","revision":"2019-07-23","schema":"/rests/modules/node-ssl-connection-error?revision=2019-07-23","namespace":"urn:opendaylight:node-ssl-connection-error:service","conformance-type":"import"},{"name":"openflow-protocol_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-protocol?revision=2013-07-31","namespace":"urn:opendaylight:openflow:protocol","conformance-type":"import"},{"name":"ietf-udp-server_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-server?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-server","conformance-type":"import"},{"name":"ietf-keystore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-keystore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-keystore","conformance-type":"import","feature":["asymmetric-keys","inline-definitions-supported"]},{"name":"aaa_2016-12-14","revision":"2016-12-14","schema":"/rests/modules/aaa?revision=2016-12-14","namespace":"urn:opendaylight:params:xml:ns:yang:aaa","conformance-type":"import"},{"name":"aaa-cert-rpc_2015-12-15","revision":"2015-12-15","schema":"/rests/modules/aaa-cert-rpc?revision=2015-12-15","namespace":"urn:opendaylight:yang:aaa:cert:rpc","conformance-type":"import"},{"name":"system-notifications_2013-09-27","revision":"2013-09-27","schema":"/rests/modules/system-notifications?revision=2013-09-27","namespace":"urn:opendaylight:openflow:system","conformance-type":"import"},{"name":"sal-flat-batch_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/sal-flat-batch?revision=2016-03-21","namespace":"urn:opendaylight:flat-batch:service","conformance-type":"import"},{"name":"notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netconf:notification:1.0","conformance-type":"import"},{"name":"sal-remote_2014-01-14","revision":"2014-01-14","schema":"/rests/modules/sal-remote?revision=2014-01-14","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:remote","conformance-type":"import"},{"name":"yang-ext_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/yang-ext?revision=2013-07-09","namespace":"urn:opendaylight:yang:extension:yang-ext","conformance-type":"import"},{"name":"opendaylight-multipart-types_2017-01-12","revision":"2017-01-12","schema":"/rests/modules/opendaylight-multipart-types?revision=2017-01-12","namespace":"urn:opendaylight:multipart:types","conformance-type":"import"},{"name":"opendaylight-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-inventory?revision=2013-08-19","namespace":"urn:opendaylight:inventory","conformance-type":"import"},{"name":"sal-queue_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-queue?revision=2015-03-05","namespace":"urn:opendaylight:queue:service","conformance-type":"import"},{"name":"sal-groups-batch_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/sal-groups-batch?revision=2016-03-15","namespace":"urn:opendaylight:groups:service","conformance-type":"import"},{"name":"arbitrator-reconcile_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/arbitrator-reconcile?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:arbitrator-reconcile:service","conformance-type":"import"},{"name":"ietf-yang-metadata_2016-08-05","revision":"2016-08-05","schema":"/rests/modules/ietf-yang-metadata?revision=2016-08-05","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-metadata","conformance-type":"import"},{"name":"opendaylight-arbitrary-bitmask-fields_2016-01-30","revision":"2016-01-30","schema":"/rests/modules/opendaylight-arbitrary-bitmask-fields?revision=2016-01-30","namespace":"urn:opendaylight:arbitrary:bitmask:fields","conformance-type":"import"},{"name":"ietf-udp-client_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-client?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-client","conformance-type":"import","feature":["local-binding"]},{"name":"opendaylight-meter-types_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/opendaylight-meter-types?revision=2013-09-18","namespace":"urn:opendaylight:meter:types","conformance-type":"import"},{"name":"opendaylight-action-types_2013-11-12","revision":"2013-11-12","schema":"/rests/modules/opendaylight-action-types?revision=2013-11-12","namespace":"urn:opendaylight:action:types","conformance-type":"import"},{"name":"sal-role_2015-07-27","revision":"2015-07-27","schema":"/rests/modules/sal-role?revision=2015-07-27","namespace":"urn:opendaylight:role:service","conformance-type":"import"},{"name":"openflow-provider-config_2016-05-10","revision":"2016-05-10","schema":"/rests/modules/openflow-provider-config?revision=2016-05-10","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:provider:config","conformance-type":"import"},{"name":"odl-serviceutils-upgrade_2018-07-02","revision":"2018-07-02","schema":"/rests/modules/odl-serviceutils-upgrade?revision=2018-07-02","namespace":"urn:opendaylight:serviceutils:upgrade","conformance-type":"import"},{"name":"opendaylight-match-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-match-types?revision=2013-10-26","namespace":"urn:opendaylight:model:match:types","conformance-type":"import"},{"name":"ietf-restconf-server_2024-08-14","revision":"2024-08-14","schema":"/rests/modules/ietf-restconf-server?revision=2024-08-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-server","conformance-type":"import","feature":["http-listen","https-listen"]},{"name":"reconciliation-result-state_2017-07-13","revision":"2017-07-13","schema":"/rests/modules/reconciliation-result-state?revision=2017-07-13","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:rf:state","conformance-type":"import"},{"name":"onf-extensions_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/onf-extensions?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf","conformance-type":"import"},{"name":"sal-table_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/sal-table?revision=2013-10-26","namespace":"urn:opendaylight:table:service","conformance-type":"import"},{"name":"iana-http-versions_2026-02-04","revision":"2026-02-04","schema":"/rests/modules/iana-http-versions?revision=2026-02-04","namespace":"urn:ietf:params:xml:ns:yang:iana-http-versions","conformance-type":"import"},{"name":"opendaylight-direct-statistics_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/opendaylight-direct-statistics?revision=2016-05-11","namespace":"urn:opendaylight:direct:statistics","conformance-type":"import"},{"name":"opendaylight-port-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-port-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:port","conformance-type":"import"},{"name":"sal-async-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/sal-async-config?revision=2017-06-19","namespace":"urn:opendaylight:async-config:service","conformance-type":"import"},{"name":"aaa-password-service-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-password-service-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:password:service:config","conformance-type":"import"},{"name":"ietf-yang-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-yang-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-types","conformance-type":"import"},{"name":"opendaylight-queue-statistics_2013-12-16","revision":"2013-12-16","schema":"/rests/modules/opendaylight-queue-statistics?revision=2013-12-16","namespace":"urn:opendaylight:queue:statistics","conformance-type":"import"},{"name":"sal-bundle_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/sal-bundle?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf:bundle:service","conformance-type":"import"},{"name":"ietf-restconf-subscribed-notifications_2019-11-17","revision":"2019-11-17","schema":"/rests/modules/ietf-restconf-subscribed-notifications?revision=2019-11-17","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-subscribed-notifications","conformance-type":"import"},{"name":"sal-meters-batch_2016-03-16","revision":"2016-03-16","schema":"/rests/modules/sal-meters-batch?revision=2016-03-16","namespace":"urn:opendaylight:meters:service","conformance-type":"import"},{"name":"odl-entity-owners","revision":"","schema":"/rests/modules/odl-entity-owners","namespace":"urn:opendaylight:params:xml:ns:yang:controller:entity-owners","conformance-type":"import"},{"name":"sal-experimenter-mp-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-mp-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-mp-message:service","conformance-type":"import"},{"name":"packet-processing_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/packet-processing?revision=2013-07-09","namespace":"urn:opendaylight:packet:service","conformance-type":"import"},{"name":"openflow-configuration_2014-06-30","revision":"2014-06-30","schema":"/rests/modules/openflow-configuration?revision=2014-06-30","namespace":"urn:opendaylight:openflow:config","conformance-type":"import"},{"name":"odl-srm-rpcs_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-rpcs?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:rpc","conformance-type":"import"},{"name":"ietf-netconf-acm_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-netconf-acm?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-acm","conformance-type":"import"},{"name":"iana-crypt-hash_2014-08-06","revision":"2014-08-06","schema":"/rests/modules/iana-crypt-hash?revision=2014-08-06","namespace":"urn:ietf:params:xml:ns:yang:iana-crypt-hash","conformance-type":"import","feature":["crypt-hash-sha-512","crypt-hash-sha-256","crypt-hash-md5"]},{"name":"openflow-extensible-match_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-extensible-match?revision=2015-02-25","namespace":"urn:opendaylight:openflow:oxm","conformance-type":"import"}],"module-set-id":"2"}}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:57:26.276158" elapsed="0.005974"/>
</kw>
<status status="PASS" start="2026-04-08T00:57:26.275513" elapsed="0.006756"/>
</branch>
<status status="PASS" start="2026-04-08T00:57:26.275457" elapsed="0.006841"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:57:26.285152" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:57:26.282609" elapsed="0.002656"/>
</kw>
<status status="PASS" start="2026-04-08T00:57:26.282358" elapsed="0.003018"/>
</branch>
<status status="PASS" start="2026-04-08T00:57:26.282340" elapsed="0.003069"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:57:26.286197" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:57:26.285596" elapsed="0.000632"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:57:26.286571" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:57:26.286305" elapsed="0.000440"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:57:26.287541" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:57:26.286941" elapsed="0.000680"/>
</kw>
<status status="PASS" start="2026-04-08T00:57:26.286773" elapsed="0.001026"/>
</branch>
<status status="PASS" start="2026-04-08T00:57:26.286285" elapsed="0.001542"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:57:26.288532" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:57:26.287992" elapsed="0.000568"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:57:26.288887" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:57:26.288632" elapsed="0.000432"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:57:26.289839" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:57:26.289270" elapsed="0.000647"/>
</kw>
<status status="PASS" start="2026-04-08T00:57:26.289091" elapsed="0.000972"/>
</branch>
<status status="PASS" start="2026-04-08T00:57:26.288613" elapsed="0.001475"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:57:26.290287" elapsed="0.000653"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:57:26.291943" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:57:26.291110" elapsed="0.000861"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:57:26.292128" elapsed="0.002783"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:57:26.274342" elapsed="0.020636"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:57:26.295181" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:57:26.295050" elapsed="0.000181"/>
</branch>
<status status="PASS" start="2026-04-08T00:57:26.295031" elapsed="0.000222"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:57:26.317121" level="INFO">${text_normalized} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:57:26.295403" elapsed="0.021802"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:57:26.317319" elapsed="0.000076"/>
</return>
<msg time="2026-04-08T00:57:26.317618" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:57:25.788415" elapsed="0.529243"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:57:26.317750" elapsed="0.000037"/>
</return>
<msg time="2026-04-08T00:57:26.317963" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="PASS" start="2026-04-08T00:57:25.633872" elapsed="0.684130"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Json_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="NOT RUN" start="2026-04-08T00:57:26.318844" elapsed="0.000040"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:57:26.318139" elapsed="0.000906"/>
</branch>
<status status="PASS" start="2026-04-08T00:57:26.318109" elapsed="0.000978"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:57:26.319136" elapsed="0.000060"/>
</return>
<arg>session=${session}</arg>
<arg>folder=${RESTCONF_MODULES_DIR}</arg>
<arg>verify=False</arg>
<doc>Add arguments sensible for JSON data, return Get_Templated response text.
Optionally, verification against JSON data (may be iterated) is called.
Only subset of JSON data is verified and returned if JMES path is specified in
file ${folder}/jmespath.expr.</doc>
<status status="PASS" start="2026-04-08T00:57:25.627970" elapsed="0.691368"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T00:57:25.622622" elapsed="0.696777"/>
</iter>
<iter>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:57:26.320791" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:57:26.320373" elapsed="0.000447"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:57:26.320868" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:57:26.321022" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>member_index=${index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:57:26.319781" elapsed="0.001267"/>
</kw>
<kw name="Get_As_Json_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:57:26.431243" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:57:26.429829" elapsed="0.001520"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:57:26.432637" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:57:26.432301" elapsed="0.000421">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-08T00:57:26.432922" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:57:26.431630" elapsed="0.001390"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:57:26.434289" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:57:26.433302" elapsed="0.001119"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T00:57:26.435134" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-08T00:57:26.435623" level="INFO">${template} = /rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T00:57:26.434701" elapsed="0.001051"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:57:26.436995" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:57:26.436079" elapsed="0.001065"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:57:26.439659" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:57:26.439286" elapsed="0.000436"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-08T00:57:26.440627" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-08T00:57:26.439945" elapsed="0.000710"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-04-08T00:57:26.440998" elapsed="0.000022"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-04-08T00:57:26.441226" elapsed="0.000025"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-04-08T00:57:26.441407" elapsed="0.000021"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-08T00:57:26.440859" elapsed="0.000606"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-08T00:57:26.440711" elapsed="0.000786"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-08T00:57:26.441545" elapsed="0.000037"/>
</return>
<msg time="2026-04-08T00:57:26.441922" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-08T00:57:26.438532" elapsed="0.003425"/>
</kw>
<status status="PASS" start="2026-04-08T00:57:26.437325" elapsed="0.004680"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:57:26.442685" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:57:26.442095" elapsed="0.000711"/>
</branch>
<status status="PASS" start="2026-04-08T00:57:26.437264" elapsed="0.005663"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:57:26.444588" level="INFO">${final_text} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:57:26.443364" elapsed="0.001357"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T00:57:26.444829" elapsed="0.000049"/>
</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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="PASS" start="2026-04-08T00:57:26.428076" elapsed="0.017149"/>
</kw>
<msg time="2026-04-08T00:57:26.445296" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:57:26.364324" elapsed="0.081033"/>
</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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:57:26.462410" elapsed="0.000080"/>
</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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:57:26.477521" elapsed="0.000073"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:57:26.498794" elapsed="0.000069"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:57:26.499130" elapsed="0.000023"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:57:26.499338" elapsed="0.000022"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:57:26.499885" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:57:26.499728" elapsed="0.000352"/>
</branch>
<status status="NOT RUN" start="2026-04-08T00:57:26.499709" elapsed="0.000403"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:57:26.500292" elapsed="0.000022"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:57:26.500471" elapsed="0.000020"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:57:26.500637" elapsed="0.000021"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-08T00:57:26.499663" elapsed="0.001028"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-08T00:57:26.499431" elapsed="0.001290"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-08T00:57:26.500867" elapsed="0.000020"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-08T00:57:26.500949" elapsed="0.000016"/>
</return>
<msg time="2026-04-08T00:57:26.501111" level="INFO">${uri} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-08T00:57:26.359357" elapsed="0.141783"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:57:26.502864" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:57:26.502416" elapsed="0.000528">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-08T00:57:26.503042" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:57:26.501973" elapsed="0.001096"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:57:26.503441" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:57:26.503145" elapsed="0.000357"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:57:26.504162" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:57:26.503713" elapsed="0.000513"/>
</kw>
<status status="PASS" start="2026-04-08T00:57:26.503529" elapsed="0.000749"/>
</branch>
<status status="PASS" start="2026-04-08T00:57:26.503125" elapsed="0.001179"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:57:26.506656" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:57:26.504463" elapsed="0.002222"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-08T00:57:26.506739" elapsed="0.000035"/>
</return>
<msg time="2026-04-08T00:57:26.506907" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:57:26.501609" elapsed="0.005324"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:57:26.508311" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:57:26.507941" elapsed="0.000438">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-08T00:57:26.508475" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:57:26.507595" elapsed="0.000905"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-08T00:57:26.508751" elapsed="0.000029"/>
</return>
<status status="PASS" start="2026-04-08T00:57:26.508576" elapsed="0.000241"/>
</branch>
<status status="PASS" start="2026-04-08T00:57:26.508556" elapsed="0.000287"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:57:26.508994" elapsed="0.000023"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-08T00:57:26.509183" elapsed="0.000023"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-08T00:57:26.509254" elapsed="0.000015"/>
</return>
<msg time="2026-04-08T00:57:26.511385" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:57:26.507265" elapsed="0.004147"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:57:26.512863" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:57:26.512592" elapsed="0.000321"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:57:26.513342" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:57:26.513068" elapsed="0.000320"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:57:27.034444" level="INFO">GET Request : url=http://10.30.170.131:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 path_url=/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01eq5fxmndxspk37g8qgkyja672.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:57:27.035588" level="INFO">GET Response : url=http://10.30.170.131:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 status=200, reason=OK 
 headers={'Set-Cookie': 'JSESSIONID=node01eq5fxmndxspk37g8qgkyja672.node0; Path=/rests; HttpOnly, rememberMe=deleteMe; Path=/rests; Max-Age=0; Expires=Tue, 07-Apr-2026 00:57:26 GMT; SameSite=lax', 'Expires': 'Thu, 01 Jan 1970 00:00:00 GMT', 'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Transfer-Encoding': 'chunked'} 
 body={"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","encrypted-passwords","hidden-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-private-keys","asymmetrically-encrypted-value-format","cleartext-private-keys","cms-encrypted-data-format","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["client-ident-hostbased","ssh-client-keepalives","client-ident-password","client-ident-publickey"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-ex... (set the log level to DEBUG or TRACE to see the full content) 
 </msg>
<msg time="2026-04-08T00:57:27.036255" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:57:26.515509" elapsed="0.520819"/>
</kw>
<status status="PASS" start="2026-04-08T00:57:26.513458" elapsed="0.522990"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:57:27.036954" elapsed="0.000056"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:57:27.036523" elapsed="0.000592"/>
</branch>
<status status="PASS" start="2026-04-08T00:57:26.513438" elapsed="0.523782"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:57:27.043933" level="INFO">{"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","encrypted-passwords","hidden-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-private-keys","asymmetrically-encrypted-value-format","cleartext-private-keys","cms-encrypted-data-format","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["client-ident-hostbased","ssh-client-keepalives","client-ident-password","client-ident-publickey"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-experimenter-types?revision=2015-10-20","namespace":"urn:opendaylight:openflowplugin:experimenter:types","conformance-type":"import"},{"name":"ietf-ip_2018-02-22","revision":"2018-02-22","schema":"/rests/modules/ietf-ip?revision=2018-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-ip","conformance-type":"import","feature":["ipv6-privacy-autoconf","ipv4-non-contiguous-netmasks"]},{"name":"ietf-tcp-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-client","conformance-type":"import","feature":["local-binding-supported","tcp-client-keepalives"]},{"name":"node-config_2014-10-15","revision":"2014-10-15","schema":"/rests/modules/node-config?revision=2014-10-15","namespace":"urn:opendaylight:module:config","conformance-type":"import"},{"name":"ietf-restconf_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf","conformance-type":"import"},{"name":"ietf-datastores_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-datastores?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-datastores","conformance-type":"import"},{"name":"ietf-yang-patch_2017-02-22","revision":"2017-02-22","schema":"/rests/modules/ietf-yang-patch?revision=2017-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-patch","conformance-type":"import"},{"name":"sal-group_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-group?revision=2013-09-18","namespace":"urn:opendaylight:group:service","conformance-type":"import"},{"name":"odl-codegen-extensions_2024-06-27","revision":"2024-06-27","schema":"/rests/modules/odl-codegen-extensions?revision=2024-06-27","namespace":"urn:opendaylight:yang:extension:codegen","conformance-type":"import"},{"name":"sal-meter_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-meter?revision=2013-09-18","namespace":"urn:opendaylight:meter:service","conformance-type":"import"},{"name":"ietf-interfaces_2018-02-20","revision":"2018-02-20","schema":"/rests/modules/ietf-interfaces?revision=2018-02-20","namespace":"urn:ietf:params:xml:ns:yang:ietf-interfaces","conformance-type":"import","feature":["pre-provisioning","if-mib","arbitrary-names"]},{"name":"opendaylight-l2-types_2013-08-27","revision":"2013-08-27","schema":"/rests/modules/opendaylight-l2-types?revision=2013-08-27","namespace":"urn:opendaylight:l2:types","conformance-type":"import"},{"name":"opendaylight-flow-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-flow-types?revision=2013-10-26","namespace":"urn:opendaylight:flow:types","conformance-type":"import"},{"name":"lldp-speaker-config_2016-05-12","revision":"2016-05-12","schema":"/rests/modules/lldp-speaker-config?revision=2016-05-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker:config","conformance-type":"import"},{"name":"aaa-cert_2015-11-26","revision":"2015-11-26","schema":"/rests/modules/aaa-cert?revision=2015-11-26","namespace":"urn:opendaylight:yang:aaa:cert","conformance-type":"import"},{"name":"openflow-action_2015-02-03","revision":"2015-02-03","schema":"/rests/modules/openflow-action?revision=2015-02-03","namespace":"urn:opendaylight:openflow:common:action","conformance-type":"import"},{"name":"openflow-approved-extensions_2016-08-02","revision":"2016-08-02","schema":"/rests/modules/openflow-approved-extensions?revision=2016-08-02","namespace":"urn:opendaylight:openflow:approved:extensions","conformance-type":"import"},{"name":"nc-notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/nc-notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netmod:notification","conformance-type":"import"},{"name":"ietf-netconf-nmda_2019-01-07","revision":"2019-01-07","schema":"/rests/modules/ietf-netconf-nmda?revision=2019-01-07","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-nmda","conformance-type":"import","feature":["with-defaults","origin"]},{"name":"ietf-tcp-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-common","conformance-type":"import","feature":["keepalives-supported"]},{"name":"network-topology_2013-10-21","revision":"2013-10-21","schema":"/rests/modules/network-topology?revision=2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:network-topology","conformance-type":"import"},{"name":"aaa-encrypt-service-config_2024-02-02","revision":"2024-02-02","schema":"/rests/modules/aaa-encrypt-service-config?revision=2024-02-02","namespace":"config:aaa:authn:encrypt:service:config","conformance-type":"import"},{"name":"openflow-instruction_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-instruction?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:instruction","conformance-type":"import"},{"name":"ietf-tls-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-client","conformance-type":"import","feature":["client-ident-x509-cert","server-auth-x509-cert"]},{"name":"opendaylight-group-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-group-statistics?revision=2013-11-11","namespace":"urn:opendaylight:group:statistics","conformance-type":"import"},{"name":"cluster-admin_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/cluster-admin?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:cluster:admin","conformance-type":"import"},{"name":"opendaylight-flow-statistics_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-flow-statistics?revision=2013-08-19","namespace":"urn:opendaylight:flow:statistics","conformance-type":"import"},{"name":"opendaylight-table-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-table-types?revision=2013-10-26","namespace":"urn:opendaylight:table:types","conformance-type":"import"},{"name":"forwarding-rules-manager-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/forwarding-rules-manager-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:forwardingrules-manager:config","conformance-type":"import"},{"name":"odl-srm-types_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-types?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:types","conformance-type":"import"},{"name":"ietf-x509-cert-to-name_2014-12-10","revision":"2014-12-10","schema":"/rests/modules/ietf-x509-cert-to-name?revision=2014-12-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-x509-cert-to-name","conformance-type":"import"},{"name":"flow-node-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-node-inventory?revision=2013-08-19","namespace":"urn:opendaylight:flow:inventory","conformance-type":"import"},{"name":"flow-errors_2013-11-16","revision":"2013-11-16","schema":"/rests/modules/flow-errors?revision=2013-11-16","namespace":"urn:opendaylight:flow:errors","conformance-type":"import"},{"name":"ietf-netconf_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:netconf:base:1.0","conformance-type":"import","feature":["xpath","url","rollback-on-error","validate","candidate","confirmed-commit","startup","writable-running"]},{"name":"iana-ssh-public-key-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-public-key-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-public-key-algs","conformance-type":"import"},{"name":"aaa-cert-mdsal_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/aaa-cert-mdsal?revision=2016-03-21","namespace":"urn:opendaylight:yang:aaa:cert:mdsal","conformance-type":"import"},{"name":"odl-device-notification_2024-02-18","revision":"2024-02-18","schema":"/rests/modules/odl-device-notification?revision=2024-02-18","namespace":"urn:opendaylight:device:notification","conformance-type":"import"},{"name":"ietf-origin_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-origin?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-origin","conformance-type":"import"},{"name":"openflow-augments_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-augments?revision=2015-02-25","namespace":"urn:opendaylight:openflow:augments","conformance-type":"import"},{"name":"iana-ssh-encryption-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-encryption-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-encryption-algs","conformance-type":"import"},{"name":"ietf-truststore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-truststore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-truststore","conformance-type":"import","feature":["inline-definitions-supported"]},{"name":"distributed-datastore-provider_2025-01-30","revision":"2025-01-30","schema":"/rests/modules/distributed-datastore-provider?revision=2025-01-30","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:distributed-datastore-provider","conformance-type":"import"},{"name":"opendaylight-group-types_2013-10-18","revision":"2013-10-18","schema":"/rests/modules/opendaylight-group-types?revision=2013-10-18","namespace":"urn:opendaylight:group:types","conformance-type":"import"},{"name":"sal-remote-augment_2023-11-03","revision":"2023-11-03","schema":"/rests/modules/sal-remote-augment?revision=2023-11-03","namespace":"urn:sal:restconf:event:subscription","conformance-type":"import"},{"name":"opendaylight-ipv6-arbitrary-bitmask-fields_2016-02-24","revision":"2016-02-24","schema":"/rests/modules/opendaylight-ipv6-arbitrary-bitmask-fields?revision=2016-02-24","namespace":"urn:opendaylight:opendaylight-ipv6-arbitrary-bitmask-fields","conformance-type":"import"},{"name":"sal-flows-batch_2016-03-14","revision":"2016-03-14","schema":"/rests/modules/sal-flows-batch?revision=2016-03-14","namespace":"urn:opendaylight:flows:service","conformance-type":"import"},{"name":"ietf-tls-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-common","conformance-type":"import","feature":["hello-params","tls12","tls13"]},{"name":"openflow-types_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-types?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:types","conformance-type":"import"},{"name":"ietf-netconf-with-defaults_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf-with-defaults?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults","conformance-type":"import"},{"name":"odl-srm-ops_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-ops?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:ops","conformance-type":"import"},{"name":"odl-general-entity_2015-09-30","revision":"2015-09-30","schema":"/rests/modules/odl-general-entity?revision=2015-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:mdsal:core:general-entity","conformance-type":"import"},{"name":"iana-ssh-key-exchange-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-key-exchange-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-key-exchange-algs","conformance-type":"import"},{"name":"node-ssl-connection-error_2019-07-23","revision":"2019-07-23","schema":"/rests/modules/node-ssl-connection-error?revision=2019-07-23","namespace":"urn:opendaylight:node-ssl-connection-error:service","conformance-type":"import"},{"name":"openflow-protocol_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-protocol?revision=2013-07-31","namespace":"urn:opendaylight:openflow:protocol","conformance-type":"import"},{"name":"ietf-udp-server_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-server?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-server","conformance-type":"import"},{"name":"ietf-keystore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-keystore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-keystore","conformance-type":"import","feature":["asymmetric-keys","inline-definitions-supported"]},{"name":"aaa_2016-12-14","revision":"2016-12-14","schema":"/rests/modules/aaa?revision=2016-12-14","namespace":"urn:opendaylight:params:xml:ns:yang:aaa","conformance-type":"import"},{"name":"aaa-cert-rpc_2015-12-15","revision":"2015-12-15","schema":"/rests/modules/aaa-cert-rpc?revision=2015-12-15","namespace":"urn:opendaylight:yang:aaa:cert:rpc","conformance-type":"import"},{"name":"system-notifications_2013-09-27","revision":"2013-09-27","schema":"/rests/modules/system-notifications?revision=2013-09-27","namespace":"urn:opendaylight:openflow:system","conformance-type":"import"},{"name":"sal-flat-batch_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/sal-flat-batch?revision=2016-03-21","namespace":"urn:opendaylight:flat-batch:service","conformance-type":"import"},{"name":"notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netconf:notification:1.0","conformance-type":"import"},{"name":"sal-remote_2014-01-14","revision":"2014-01-14","schema":"/rests/modules/sal-remote?revision=2014-01-14","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:remote","conformance-type":"import"},{"name":"yang-ext_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/yang-ext?revision=2013-07-09","namespace":"urn:opendaylight:yang:extension:yang-ext","conformance-type":"import"},{"name":"opendaylight-multipart-types_2017-01-12","revision":"2017-01-12","schema":"/rests/modules/opendaylight-multipart-types?revision=2017-01-12","namespace":"urn:opendaylight:multipart:types","conformance-type":"import"},{"name":"opendaylight-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-inventory?revision=2013-08-19","namespace":"urn:opendaylight:inventory","conformance-type":"import"},{"name":"sal-queue_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-queue?revision=2015-03-05","namespace":"urn:opendaylight:queue:service","conformance-type":"import"},{"name":"sal-groups-batch_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/sal-groups-batch?revision=2016-03-15","namespace":"urn:opendaylight:groups:service","conformance-type":"import"},{"name":"arbitrator-reconcile_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/arbitrator-reconcile?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:arbitrator-reconcile:service","conformance-type":"import"},{"name":"ietf-yang-metadata_2016-08-05","revision":"2016-08-05","schema":"/rests/modules/ietf-yang-metadata?revision=2016-08-05","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-metadata","conformance-type":"import"},{"name":"opendaylight-arbitrary-bitmask-fields_2016-01-30","revision":"2016-01-30","schema":"/rests/modules/opendaylight-arbitrary-bitmask-fields?revision=2016-01-30","namespace":"urn:opendaylight:arbitrary:bitmask:fields","conformance-type":"import"},{"name":"ietf-udp-client_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-client?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-client","conformance-type":"import","feature":["local-binding"]},{"name":"opendaylight-meter-types_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/opendaylight-meter-types?revision=2013-09-18","namespace":"urn:opendaylight:meter:types","conformance-type":"import"},{"name":"opendaylight-action-types_2013-11-12","revision":"2013-11-12","schema":"/rests/modules/opendaylight-action-types?revision=2013-11-12","namespace":"urn:opendaylight:action:types","conformance-type":"import"},{"name":"sal-role_2015-07-27","revision":"2015-07-27","schema":"/rests/modules/sal-role?revision=2015-07-27","namespace":"urn:opendaylight:role:service","conformance-type":"import"},{"name":"openflow-provider-config_2016-05-10","revision":"2016-05-10","schema":"/rests/modules/openflow-provider-config?revision=2016-05-10","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:provider:config","conformance-type":"import"},{"name":"odl-serviceutils-upgrade_2018-07-02","revision":"2018-07-02","schema":"/rests/modules/odl-serviceutils-upgrade?revision=2018-07-02","namespace":"urn:opendaylight:serviceutils:upgrade","conformance-type":"import"},{"name":"opendaylight-match-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-match-types?revision=2013-10-26","namespace":"urn:opendaylight:model:match:types","conformance-type":"import"},{"name":"ietf-restconf-server_2024-08-14","revision":"2024-08-14","schema":"/rests/modules/ietf-restconf-server?revision=2024-08-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-server","conformance-type":"import","feature":["http-listen","https-listen"]},{"name":"reconciliation-result-state_2017-07-13","revision":"2017-07-13","schema":"/rests/modules/reconciliation-result-state?revision=2017-07-13","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:rf:state","conformance-type":"import"},{"name":"onf-extensions_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/onf-extensions?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf","conformance-type":"import"},{"name":"sal-table_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/sal-table?revision=2013-10-26","namespace":"urn:opendaylight:table:service","conformance-type":"import"},{"name":"iana-http-versions_2026-02-04","revision":"2026-02-04","schema":"/rests/modules/iana-http-versions?revision=2026-02-04","namespace":"urn:ietf:params:xml:ns:yang:iana-http-versions","conformance-type":"import"},{"name":"opendaylight-direct-statistics_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/opendaylight-direct-statistics?revision=2016-05-11","namespace":"urn:opendaylight:direct:statistics","conformance-type":"import"},{"name":"opendaylight-port-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-port-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:port","conformance-type":"import"},{"name":"sal-async-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/sal-async-config?revision=2017-06-19","namespace":"urn:opendaylight:async-config:service","conformance-type":"import"},{"name":"aaa-password-service-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-password-service-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:password:service:config","conformance-type":"import"},{"name":"ietf-yang-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-yang-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-types","conformance-type":"import"},{"name":"opendaylight-queue-statistics_2013-12-16","revision":"2013-12-16","schema":"/rests/modules/opendaylight-queue-statistics?revision=2013-12-16","namespace":"urn:opendaylight:queue:statistics","conformance-type":"import"},{"name":"sal-bundle_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/sal-bundle?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf:bundle:service","conformance-type":"import"},{"name":"ietf-restconf-subscribed-notifications_2019-11-17","revision":"2019-11-17","schema":"/rests/modules/ietf-restconf-subscribed-notifications?revision=2019-11-17","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-subscribed-notifications","conformance-type":"import"},{"name":"sal-meters-batch_2016-03-16","revision":"2016-03-16","schema":"/rests/modules/sal-meters-batch?revision=2016-03-16","namespace":"urn:opendaylight:meters:service","conformance-type":"import"},{"name":"odl-entity-owners","revision":"","schema":"/rests/modules/odl-entity-owners","namespace":"urn:opendaylight:params:xml:ns:yang:controller:entity-owners","conformance-type":"import"},{"name":"sal-experimenter-mp-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-mp-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-mp-message:service","conformance-type":"import"},{"name":"packet-processing_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/packet-processing?revision=2013-07-09","namespace":"urn:opendaylight:packet:service","conformance-type":"import"},{"name":"openflow-configuration_2014-06-30","revision":"2014-06-30","schema":"/rests/modules/openflow-configuration?revision=2014-06-30","namespace":"urn:opendaylight:openflow:config","conformance-type":"import"},{"name":"odl-srm-rpcs_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-rpcs?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:rpc","conformance-type":"import"},{"name":"ietf-netconf-acm_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-netconf-acm?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-acm","conformance-type":"import"},{"name":"iana-crypt-hash_2014-08-06","revision":"2014-08-06","schema":"/rests/modules/iana-crypt-hash?revision=2014-08-06","namespace":"urn:ietf:params:xml:ns:yang:iana-crypt-hash","conformance-type":"import","feature":["crypt-hash-sha-512","crypt-hash-sha-256","crypt-hash-md5"]},{"name":"openflow-extensible-match_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-extensible-match?revision=2015-02-25","namespace":"urn:opendaylight:openflow:oxm","conformance-type":"import"}],"module-set-id":"2"}}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:57:27.040323" elapsed="0.004003"/>
</kw>
<status status="PASS" start="2026-04-08T00:57:27.039680" elapsed="0.004754"/>
</branch>
<status status="PASS" start="2026-04-08T00:57:27.039631" elapsed="0.004831"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:57:27.047220" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:57:27.044766" elapsed="0.002548"/>
</kw>
<status status="PASS" start="2026-04-08T00:57:27.044521" elapsed="0.002900"/>
</branch>
<status status="PASS" start="2026-04-08T00:57:27.044503" elapsed="0.002945"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:57:27.048201" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:57:27.047628" elapsed="0.000601"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:57:27.048563" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:57:27.048302" elapsed="0.000435"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:57:27.049552" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:57:27.048931" elapsed="0.000701"/>
</kw>
<status status="PASS" start="2026-04-08T00:57:27.048765" elapsed="0.001016"/>
</branch>
<status status="PASS" start="2026-04-08T00:57:27.048283" elapsed="0.001523"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:57:27.050519" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:57:27.049968" elapsed="0.000579"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:57:27.050872" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:57:27.050618" elapsed="0.000427"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:57:27.051816" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:57:27.051252" elapsed="0.000643"/>
</kw>
<status status="PASS" start="2026-04-08T00:57:27.051072" elapsed="0.000970"/>
</branch>
<status status="PASS" start="2026-04-08T00:57:27.050599" elapsed="0.001468"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:57:27.052241" elapsed="0.000666"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:57:27.053951" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:57:27.053076" elapsed="0.000902"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:57:27.054135" elapsed="0.002737"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:57:27.038536" elapsed="0.018402"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:57:27.057123" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:57:27.057010" elapsed="0.000251"/>
</branch>
<status status="PASS" start="2026-04-08T00:57:27.056991" elapsed="0.000296"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:57:27.074886" level="INFO">${text_normalized} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:57:27.057463" elapsed="0.017458"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:57:27.074981" elapsed="0.000041"/>
</return>
<msg time="2026-04-08T00:57:27.075163" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:57:26.511725" elapsed="0.563478"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:57:27.075268" elapsed="0.000032"/>
</return>
<msg time="2026-04-08T00:57:27.075425" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="PASS" start="2026-04-08T00:57:26.334566" elapsed="0.740885"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Json_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="NOT RUN" start="2026-04-08T00:57:27.075801" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:57:27.075538" elapsed="0.000387"/>
</branch>
<status status="PASS" start="2026-04-08T00:57:27.075520" elapsed="0.000431"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:57:27.075985" elapsed="0.000027"/>
</return>
<arg>session=${session}</arg>
<arg>folder=${RESTCONF_MODULES_DIR}</arg>
<arg>verify=False</arg>
<doc>Add arguments sensible for JSON data, return Get_Templated response text.
Optionally, verification against JSON data (may be iterated) is called.
Only subset of JSON data is verified and returned if JMES path is specified in
file ${folder}/jmespath.expr.</doc>
<status status="PASS" start="2026-04-08T00:57:26.326343" elapsed="0.749768"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T00:57:26.319540" elapsed="0.756612"/>
</iter>
<iter>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:57:27.077124" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:57:27.076807" elapsed="0.000345"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:57:27.077417" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:57:27.077568" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>member_index=${index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:57:27.076443" elapsed="0.001150"/>
</kw>
<kw name="Get_As_Json_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:57:27.163763" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:57:27.162744" elapsed="0.001118"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:57:27.165101" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:57:27.164838" elapsed="0.000356">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-08T00:57:27.165391" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:57:27.164120" elapsed="0.001389"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:57:27.166940" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:57:27.165775" elapsed="0.001264"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T00:57:27.167643" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-08T00:57:27.167926" level="INFO">${template} = /rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T00:57:27.167297" elapsed="0.000725"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:57:27.168795" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:57:27.168269" elapsed="0.000666"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:57:27.170700" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:57:27.170435" elapsed="0.000311"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-08T00:57:27.171444" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-08T00:57:27.170936" elapsed="0.000535"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-04-08T00:57:27.171798" elapsed="0.000022"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-04-08T00:57:27.172001" elapsed="0.000024"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-04-08T00:57:27.172193" elapsed="0.000022"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-08T00:57:27.171664" elapsed="0.000589"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-08T00:57:27.171524" elapsed="0.000758"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-08T00:57:27.172328" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:57:27.172640" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-08T00:57:27.169799" elapsed="0.002877"/>
</kw>
<status status="PASS" start="2026-04-08T00:57:27.169050" elapsed="0.003673"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:57:27.173091" elapsed="0.000035"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:57:27.172808" elapsed="0.000383"/>
</branch>
<status status="PASS" start="2026-04-08T00:57:27.169016" elapsed="0.004260"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:57:27.174705" level="INFO">${final_text} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:57:27.173570" elapsed="0.001232"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T00:57:27.174889" elapsed="0.000031"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="PASS" start="2026-04-08T00:57:27.161570" elapsed="0.013573"/>
</kw>
<msg time="2026-04-08T00:57:27.175216" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:57:27.112365" elapsed="0.062904"/>
</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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:57:27.187331" elapsed="0.000029"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:57:27.199137" elapsed="0.000055"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:57:27.210878" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:57:27.211076" elapsed="0.000022"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:57:27.211268" elapsed="0.000023"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:57:27.211723" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:57:27.211577" elapsed="0.000331"/>
</branch>
<status status="NOT RUN" start="2026-04-08T00:57:27.211561" elapsed="0.000374"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:57:27.212077" elapsed="0.000022"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:57:27.212271" elapsed="0.000021"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:57:27.212439" elapsed="0.000021"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-08T00:57:27.211528" elapsed="0.000965"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-08T00:57:27.211389" elapsed="0.001130"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-08T00:57:27.212662" elapsed="0.000020"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-08T00:57:27.212737" elapsed="0.000015"/>
</return>
<msg time="2026-04-08T00:57:27.212856" level="INFO">${uri} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-08T00:57:27.108321" elapsed="0.104561"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:57:27.214337" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:57:27.213956" elapsed="0.000454">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-08T00:57:27.214524" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:57:27.213598" elapsed="0.000953"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:57:27.214885" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:57:27.214626" elapsed="0.000320"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:57:27.215603" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:57:27.215161" elapsed="0.000471"/>
</kw>
<status status="PASS" start="2026-04-08T00:57:27.214970" elapsed="0.000699"/>
</branch>
<status status="PASS" start="2026-04-08T00:57:27.214607" elapsed="0.001083"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:57:27.217950" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:57:27.215841" elapsed="0.002137"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-08T00:57:27.218030" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:57:27.218203" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:57:27.213265" elapsed="0.004965"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:57:27.219578" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:57:27.219205" elapsed="0.000438">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-08T00:57:27.219736" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:57:27.218850" elapsed="0.000911"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-08T00:57:27.219969" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-08T00:57:27.219833" elapsed="0.000196"/>
</branch>
<status status="PASS" start="2026-04-08T00:57:27.219815" elapsed="0.000239"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:57:27.220217" elapsed="0.000022"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-08T00:57:27.220388" elapsed="0.000020"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-08T00:57:27.220454" elapsed="0.000015"/>
</return>
<msg time="2026-04-08T00:57:27.222483" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:57:27.218528" elapsed="0.003982"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:57:27.223911" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:57:27.223657" elapsed="0.000300"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:57:27.224372" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:57:27.224108" elapsed="0.000308"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:57:27.729400" level="INFO">GET Request : url=http://10.30.171.110:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 path_url=/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0336bvzrfnrhc3cqywxyctca52.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:57:27.730064" level="INFO">GET Response : url=http://10.30.171.110:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 status=200, reason=OK 
 headers={'Set-Cookie': 'JSESSIONID=node0336bvzrfnrhc3cqywxyctca52.node0; Path=/rests; HttpOnly, rememberMe=deleteMe; Path=/rests; Max-Age=0; Expires=Tue, 07-Apr-2026 00:57:27 GMT; SameSite=lax', 'Expires': 'Thu, 01 Jan 1970 00:00:00 GMT', 'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Transfer-Encoding': 'chunked'} 
 body={"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","encrypted-passwords","hidden-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-private-keys","asymmetrically-encrypted-value-format","cleartext-private-keys","cms-encrypted-data-format","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["client-ident-hostbased","ssh-client-keepalives","client-ident-password","client-ident-publickey"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-ex... (set the log level to DEBUG or TRACE to see the full content) 
 </msg>
<msg time="2026-04-08T00:57:27.730489" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:57:27.226446" elapsed="0.504086"/>
</kw>
<status status="PASS" start="2026-04-08T00:57:27.224482" elapsed="0.506127"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:57:27.730941" elapsed="0.000034"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:57:27.730659" elapsed="0.000378"/>
</branch>
<status status="PASS" start="2026-04-08T00:57:27.224465" elapsed="0.506602"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:57:27.737067" level="INFO">{"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","encrypted-passwords","hidden-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-private-keys","asymmetrically-encrypted-value-format","cleartext-private-keys","cms-encrypted-data-format","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["client-ident-hostbased","ssh-client-keepalives","client-ident-password","client-ident-publickey"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-experimenter-types?revision=2015-10-20","namespace":"urn:opendaylight:openflowplugin:experimenter:types","conformance-type":"import"},{"name":"ietf-ip_2018-02-22","revision":"2018-02-22","schema":"/rests/modules/ietf-ip?revision=2018-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-ip","conformance-type":"import","feature":["ipv6-privacy-autoconf","ipv4-non-contiguous-netmasks"]},{"name":"ietf-tcp-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-client","conformance-type":"import","feature":["local-binding-supported","tcp-client-keepalives"]},{"name":"node-config_2014-10-15","revision":"2014-10-15","schema":"/rests/modules/node-config?revision=2014-10-15","namespace":"urn:opendaylight:module:config","conformance-type":"import"},{"name":"ietf-restconf_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf","conformance-type":"import"},{"name":"ietf-datastores_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-datastores?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-datastores","conformance-type":"import"},{"name":"ietf-yang-patch_2017-02-22","revision":"2017-02-22","schema":"/rests/modules/ietf-yang-patch?revision=2017-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-patch","conformance-type":"import"},{"name":"sal-group_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-group?revision=2013-09-18","namespace":"urn:opendaylight:group:service","conformance-type":"import"},{"name":"odl-codegen-extensions_2024-06-27","revision":"2024-06-27","schema":"/rests/modules/odl-codegen-extensions?revision=2024-06-27","namespace":"urn:opendaylight:yang:extension:codegen","conformance-type":"import"},{"name":"sal-meter_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-meter?revision=2013-09-18","namespace":"urn:opendaylight:meter:service","conformance-type":"import"},{"name":"ietf-interfaces_2018-02-20","revision":"2018-02-20","schema":"/rests/modules/ietf-interfaces?revision=2018-02-20","namespace":"urn:ietf:params:xml:ns:yang:ietf-interfaces","conformance-type":"import","feature":["pre-provisioning","if-mib","arbitrary-names"]},{"name":"opendaylight-l2-types_2013-08-27","revision":"2013-08-27","schema":"/rests/modules/opendaylight-l2-types?revision=2013-08-27","namespace":"urn:opendaylight:l2:types","conformance-type":"import"},{"name":"opendaylight-flow-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-flow-types?revision=2013-10-26","namespace":"urn:opendaylight:flow:types","conformance-type":"import"},{"name":"lldp-speaker-config_2016-05-12","revision":"2016-05-12","schema":"/rests/modules/lldp-speaker-config?revision=2016-05-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker:config","conformance-type":"import"},{"name":"aaa-cert_2015-11-26","revision":"2015-11-26","schema":"/rests/modules/aaa-cert?revision=2015-11-26","namespace":"urn:opendaylight:yang:aaa:cert","conformance-type":"import"},{"name":"openflow-action_2015-02-03","revision":"2015-02-03","schema":"/rests/modules/openflow-action?revision=2015-02-03","namespace":"urn:opendaylight:openflow:common:action","conformance-type":"import"},{"name":"openflow-approved-extensions_2016-08-02","revision":"2016-08-02","schema":"/rests/modules/openflow-approved-extensions?revision=2016-08-02","namespace":"urn:opendaylight:openflow:approved:extensions","conformance-type":"import"},{"name":"nc-notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/nc-notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netmod:notification","conformance-type":"import"},{"name":"ietf-netconf-nmda_2019-01-07","revision":"2019-01-07","schema":"/rests/modules/ietf-netconf-nmda?revision=2019-01-07","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-nmda","conformance-type":"import","feature":["with-defaults","origin"]},{"name":"ietf-tcp-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-common","conformance-type":"import","feature":["keepalives-supported"]},{"name":"network-topology_2013-10-21","revision":"2013-10-21","schema":"/rests/modules/network-topology?revision=2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:network-topology","conformance-type":"import"},{"name":"aaa-encrypt-service-config_2024-02-02","revision":"2024-02-02","schema":"/rests/modules/aaa-encrypt-service-config?revision=2024-02-02","namespace":"config:aaa:authn:encrypt:service:config","conformance-type":"import"},{"name":"openflow-instruction_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-instruction?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:instruction","conformance-type":"import"},{"name":"ietf-tls-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-client","conformance-type":"import","feature":["client-ident-x509-cert","server-auth-x509-cert"]},{"name":"opendaylight-group-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-group-statistics?revision=2013-11-11","namespace":"urn:opendaylight:group:statistics","conformance-type":"import"},{"name":"cluster-admin_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/cluster-admin?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:cluster:admin","conformance-type":"import"},{"name":"opendaylight-flow-statistics_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-flow-statistics?revision=2013-08-19","namespace":"urn:opendaylight:flow:statistics","conformance-type":"import"},{"name":"opendaylight-table-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-table-types?revision=2013-10-26","namespace":"urn:opendaylight:table:types","conformance-type":"import"},{"name":"forwarding-rules-manager-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/forwarding-rules-manager-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:forwardingrules-manager:config","conformance-type":"import"},{"name":"odl-srm-types_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-types?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:types","conformance-type":"import"},{"name":"ietf-x509-cert-to-name_2014-12-10","revision":"2014-12-10","schema":"/rests/modules/ietf-x509-cert-to-name?revision=2014-12-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-x509-cert-to-name","conformance-type":"import"},{"name":"flow-node-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-node-inventory?revision=2013-08-19","namespace":"urn:opendaylight:flow:inventory","conformance-type":"import"},{"name":"flow-errors_2013-11-16","revision":"2013-11-16","schema":"/rests/modules/flow-errors?revision=2013-11-16","namespace":"urn:opendaylight:flow:errors","conformance-type":"import"},{"name":"ietf-netconf_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:netconf:base:1.0","conformance-type":"import","feature":["xpath","url","rollback-on-error","validate","candidate","confirmed-commit","startup","writable-running"]},{"name":"iana-ssh-public-key-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-public-key-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-public-key-algs","conformance-type":"import"},{"name":"aaa-cert-mdsal_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/aaa-cert-mdsal?revision=2016-03-21","namespace":"urn:opendaylight:yang:aaa:cert:mdsal","conformance-type":"import"},{"name":"odl-device-notification_2024-02-18","revision":"2024-02-18","schema":"/rests/modules/odl-device-notification?revision=2024-02-18","namespace":"urn:opendaylight:device:notification","conformance-type":"import"},{"name":"ietf-origin_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-origin?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-origin","conformance-type":"import"},{"name":"openflow-augments_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-augments?revision=2015-02-25","namespace":"urn:opendaylight:openflow:augments","conformance-type":"import"},{"name":"iana-ssh-encryption-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-encryption-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-encryption-algs","conformance-type":"import"},{"name":"ietf-truststore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-truststore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-truststore","conformance-type":"import","feature":["inline-definitions-supported"]},{"name":"distributed-datastore-provider_2025-01-30","revision":"2025-01-30","schema":"/rests/modules/distributed-datastore-provider?revision=2025-01-30","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:distributed-datastore-provider","conformance-type":"import"},{"name":"opendaylight-group-types_2013-10-18","revision":"2013-10-18","schema":"/rests/modules/opendaylight-group-types?revision=2013-10-18","namespace":"urn:opendaylight:group:types","conformance-type":"import"},{"name":"sal-remote-augment_2023-11-03","revision":"2023-11-03","schema":"/rests/modules/sal-remote-augment?revision=2023-11-03","namespace":"urn:sal:restconf:event:subscription","conformance-type":"import"},{"name":"opendaylight-ipv6-arbitrary-bitmask-fields_2016-02-24","revision":"2016-02-24","schema":"/rests/modules/opendaylight-ipv6-arbitrary-bitmask-fields?revision=2016-02-24","namespace":"urn:opendaylight:opendaylight-ipv6-arbitrary-bitmask-fields","conformance-type":"import"},{"name":"sal-flows-batch_2016-03-14","revision":"2016-03-14","schema":"/rests/modules/sal-flows-batch?revision=2016-03-14","namespace":"urn:opendaylight:flows:service","conformance-type":"import"},{"name":"ietf-tls-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-common","conformance-type":"import","feature":["hello-params","tls12","tls13"]},{"name":"openflow-types_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-types?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:types","conformance-type":"import"},{"name":"ietf-netconf-with-defaults_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf-with-defaults?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults","conformance-type":"import"},{"name":"odl-srm-ops_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-ops?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:ops","conformance-type":"import"},{"name":"odl-general-entity_2015-09-30","revision":"2015-09-30","schema":"/rests/modules/odl-general-entity?revision=2015-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:mdsal:core:general-entity","conformance-type":"import"},{"name":"iana-ssh-key-exchange-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-key-exchange-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-key-exchange-algs","conformance-type":"import"},{"name":"node-ssl-connection-error_2019-07-23","revision":"2019-07-23","schema":"/rests/modules/node-ssl-connection-error?revision=2019-07-23","namespace":"urn:opendaylight:node-ssl-connection-error:service","conformance-type":"import"},{"name":"openflow-protocol_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-protocol?revision=2013-07-31","namespace":"urn:opendaylight:openflow:protocol","conformance-type":"import"},{"name":"ietf-udp-server_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-server?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-server","conformance-type":"import"},{"name":"ietf-keystore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-keystore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-keystore","conformance-type":"import","feature":["asymmetric-keys","inline-definitions-supported"]},{"name":"aaa_2016-12-14","revision":"2016-12-14","schema":"/rests/modules/aaa?revision=2016-12-14","namespace":"urn:opendaylight:params:xml:ns:yang:aaa","conformance-type":"import"},{"name":"aaa-cert-rpc_2015-12-15","revision":"2015-12-15","schema":"/rests/modules/aaa-cert-rpc?revision=2015-12-15","namespace":"urn:opendaylight:yang:aaa:cert:rpc","conformance-type":"import"},{"name":"system-notifications_2013-09-27","revision":"2013-09-27","schema":"/rests/modules/system-notifications?revision=2013-09-27","namespace":"urn:opendaylight:openflow:system","conformance-type":"import"},{"name":"sal-flat-batch_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/sal-flat-batch?revision=2016-03-21","namespace":"urn:opendaylight:flat-batch:service","conformance-type":"import"},{"name":"notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netconf:notification:1.0","conformance-type":"import"},{"name":"sal-remote_2014-01-14","revision":"2014-01-14","schema":"/rests/modules/sal-remote?revision=2014-01-14","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:remote","conformance-type":"import"},{"name":"yang-ext_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/yang-ext?revision=2013-07-09","namespace":"urn:opendaylight:yang:extension:yang-ext","conformance-type":"import"},{"name":"opendaylight-multipart-types_2017-01-12","revision":"2017-01-12","schema":"/rests/modules/opendaylight-multipart-types?revision=2017-01-12","namespace":"urn:opendaylight:multipart:types","conformance-type":"import"},{"name":"opendaylight-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-inventory?revision=2013-08-19","namespace":"urn:opendaylight:inventory","conformance-type":"import"},{"name":"sal-queue_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-queue?revision=2015-03-05","namespace":"urn:opendaylight:queue:service","conformance-type":"import"},{"name":"sal-groups-batch_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/sal-groups-batch?revision=2016-03-15","namespace":"urn:opendaylight:groups:service","conformance-type":"import"},{"name":"arbitrator-reconcile_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/arbitrator-reconcile?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:arbitrator-reconcile:service","conformance-type":"import"},{"name":"ietf-yang-metadata_2016-08-05","revision":"2016-08-05","schema":"/rests/modules/ietf-yang-metadata?revision=2016-08-05","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-metadata","conformance-type":"import"},{"name":"opendaylight-arbitrary-bitmask-fields_2016-01-30","revision":"2016-01-30","schema":"/rests/modules/opendaylight-arbitrary-bitmask-fields?revision=2016-01-30","namespace":"urn:opendaylight:arbitrary:bitmask:fields","conformance-type":"import"},{"name":"ietf-udp-client_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-client?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-client","conformance-type":"import","feature":["local-binding"]},{"name":"opendaylight-meter-types_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/opendaylight-meter-types?revision=2013-09-18","namespace":"urn:opendaylight:meter:types","conformance-type":"import"},{"name":"opendaylight-action-types_2013-11-12","revision":"2013-11-12","schema":"/rests/modules/opendaylight-action-types?revision=2013-11-12","namespace":"urn:opendaylight:action:types","conformance-type":"import"},{"name":"sal-role_2015-07-27","revision":"2015-07-27","schema":"/rests/modules/sal-role?revision=2015-07-27","namespace":"urn:opendaylight:role:service","conformance-type":"import"},{"name":"openflow-provider-config_2016-05-10","revision":"2016-05-10","schema":"/rests/modules/openflow-provider-config?revision=2016-05-10","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:provider:config","conformance-type":"import"},{"name":"odl-serviceutils-upgrade_2018-07-02","revision":"2018-07-02","schema":"/rests/modules/odl-serviceutils-upgrade?revision=2018-07-02","namespace":"urn:opendaylight:serviceutils:upgrade","conformance-type":"import"},{"name":"opendaylight-match-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-match-types?revision=2013-10-26","namespace":"urn:opendaylight:model:match:types","conformance-type":"import"},{"name":"ietf-restconf-server_2024-08-14","revision":"2024-08-14","schema":"/rests/modules/ietf-restconf-server?revision=2024-08-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-server","conformance-type":"import","feature":["http-listen","https-listen"]},{"name":"reconciliation-result-state_2017-07-13","revision":"2017-07-13","schema":"/rests/modules/reconciliation-result-state?revision=2017-07-13","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:rf:state","conformance-type":"import"},{"name":"onf-extensions_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/onf-extensions?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf","conformance-type":"import"},{"name":"sal-table_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/sal-table?revision=2013-10-26","namespace":"urn:opendaylight:table:service","conformance-type":"import"},{"name":"iana-http-versions_2026-02-04","revision":"2026-02-04","schema":"/rests/modules/iana-http-versions?revision=2026-02-04","namespace":"urn:ietf:params:xml:ns:yang:iana-http-versions","conformance-type":"import"},{"name":"opendaylight-direct-statistics_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/opendaylight-direct-statistics?revision=2016-05-11","namespace":"urn:opendaylight:direct:statistics","conformance-type":"import"},{"name":"opendaylight-port-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-port-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:port","conformance-type":"import"},{"name":"sal-async-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/sal-async-config?revision=2017-06-19","namespace":"urn:opendaylight:async-config:service","conformance-type":"import"},{"name":"aaa-password-service-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-password-service-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:password:service:config","conformance-type":"import"},{"name":"ietf-yang-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-yang-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-types","conformance-type":"import"},{"name":"opendaylight-queue-statistics_2013-12-16","revision":"2013-12-16","schema":"/rests/modules/opendaylight-queue-statistics?revision=2013-12-16","namespace":"urn:opendaylight:queue:statistics","conformance-type":"import"},{"name":"sal-bundle_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/sal-bundle?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf:bundle:service","conformance-type":"import"},{"name":"ietf-restconf-subscribed-notifications_2019-11-17","revision":"2019-11-17","schema":"/rests/modules/ietf-restconf-subscribed-notifications?revision=2019-11-17","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-subscribed-notifications","conformance-type":"import"},{"name":"sal-meters-batch_2016-03-16","revision":"2016-03-16","schema":"/rests/modules/sal-meters-batch?revision=2016-03-16","namespace":"urn:opendaylight:meters:service","conformance-type":"import"},{"name":"odl-entity-owners","revision":"","schema":"/rests/modules/odl-entity-owners","namespace":"urn:opendaylight:params:xml:ns:yang:controller:entity-owners","conformance-type":"import"},{"name":"sal-experimenter-mp-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-mp-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-mp-message:service","conformance-type":"import"},{"name":"packet-processing_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/packet-processing?revision=2013-07-09","namespace":"urn:opendaylight:packet:service","conformance-type":"import"},{"name":"openflow-configuration_2014-06-30","revision":"2014-06-30","schema":"/rests/modules/openflow-configuration?revision=2014-06-30","namespace":"urn:opendaylight:openflow:config","conformance-type":"import"},{"name":"odl-srm-rpcs_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-rpcs?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:rpc","conformance-type":"import"},{"name":"ietf-netconf-acm_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-netconf-acm?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-acm","conformance-type":"import"},{"name":"iana-crypt-hash_2014-08-06","revision":"2014-08-06","schema":"/rests/modules/iana-crypt-hash?revision=2014-08-06","namespace":"urn:ietf:params:xml:ns:yang:iana-crypt-hash","conformance-type":"import","feature":["crypt-hash-sha-512","crypt-hash-sha-256","crypt-hash-md5"]},{"name":"openflow-extensible-match_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-extensible-match?revision=2015-02-25","namespace":"urn:opendaylight:openflow:oxm","conformance-type":"import"}],"module-set-id":"2"}}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:57:27.732897" elapsed="0.004800"/>
</kw>
<status status="PASS" start="2026-04-08T00:57:27.732533" elapsed="0.005317"/>
</branch>
<status status="PASS" start="2026-04-08T00:57:27.732503" elapsed="0.005386"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:57:27.740790" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:57:27.738338" elapsed="0.002547"/>
</kw>
<status status="PASS" start="2026-04-08T00:57:27.737971" elapsed="0.003023"/>
</branch>
<status status="PASS" start="2026-04-08T00:57:27.737947" elapsed="0.003075"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:57:27.741810" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:57:27.741248" elapsed="0.000590"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:57:27.742189" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:57:27.741910" elapsed="0.000455"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:57:27.743122" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:57:27.742558" elapsed="0.000661"/>
</kw>
<status status="PASS" start="2026-04-08T00:57:27.742392" elapsed="0.000974"/>
</branch>
<status status="PASS" start="2026-04-08T00:57:27.741891" elapsed="0.001500"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:57:27.744064" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:57:27.743552" elapsed="0.000540"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:57:27.744440" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:57:27.744179" elapsed="0.000433"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:57:27.745421" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:57:27.744802" elapsed="0.000696"/>
</kw>
<status status="PASS" start="2026-04-08T00:57:27.744639" elapsed="0.001005"/>
</branch>
<status status="PASS" start="2026-04-08T00:57:27.744144" elapsed="0.001525"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:57:27.745827" elapsed="0.000680"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:57:27.747483" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:57:27.746676" elapsed="0.000834"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:57:27.747667" elapsed="0.002802"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:57:27.731848" elapsed="0.018703"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:57:27.750747" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:57:27.750630" elapsed="0.000164"/>
</branch>
<status status="PASS" start="2026-04-08T00:57:27.750610" elapsed="0.000206"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:57:27.768807" level="INFO">${text_normalized} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:57:27.750962" elapsed="0.017886"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:57:27.768917" elapsed="0.000045"/>
</return>
<msg time="2026-04-08T00:57:27.769108" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:57:27.222813" elapsed="0.546322"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:57:27.769248" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:57:27.769403" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="PASS" start="2026-04-08T00:57:27.087119" elapsed="0.682310"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Json_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="NOT RUN" start="2026-04-08T00:57:27.769862" elapsed="0.000027"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:57:27.769522" elapsed="0.000474"/>
</branch>
<status status="PASS" start="2026-04-08T00:57:27.769503" elapsed="0.000520"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:57:27.770057" elapsed="0.000026"/>
</return>
<arg>session=${session}</arg>
<arg>folder=${RESTCONF_MODULES_DIR}</arg>
<arg>verify=False</arg>
<doc>Add arguments sensible for JSON data, return Get_Templated response text.
Optionally, verification against JSON data (may be iterated) is called.
Only subset of JSON data is verified and returned if JMES path is specified in
file ${folder}/jmespath.expr.</doc>
<status status="PASS" start="2026-04-08T00:57:27.081447" elapsed="0.688841"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T00:57:27.076272" elapsed="0.694064"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-08T00:57:25.622461" elapsed="2.147914"/>
</for>
<arg>${member_index_list}</arg>
<status status="PASS" start="2026-04-08T00:57:25.620349" elapsed="2.150089"/>
</kw>
<status status="PASS" start="2026-04-08T00:57:25.620059" elapsed="2.150410"/>
</branch>
<status status="PASS" start="2026-04-08T00:57:25.620043" elapsed="2.150451"/>
</if>
<if>
<branch type="IF" condition="${verify_system_status} and (&quot;${service_list}&quot; != &quot;[[]]&quot;)">
<kw name="Check Status Of Services Is OPERATIONAL" owner="ClusterManagement">
<arg>@{service_list}</arg>
<doc>This keyword will verify whether all the services are operational in all the ODL nodes</doc>
<status status="NOT RUN" start="2026-04-08T00:57:27.770920" elapsed="0.000033"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:57:27.770555" elapsed="0.000438"/>
</branch>
<status status="PASS" start="2026-04-08T00:57:27.770538" elapsed="0.000479"/>
</if>
<arg>${member_index_list}</arg>
<arg>${wait_for_sync}</arg>
<arg>${verify_restconf}</arg>
<arg>${check_system_status}</arg>
<arg>${service_list}</arg>
<doc>Verifies the specified readiness conditions for the given listed members after startup.
If ${verify_cluster_sync}, verifies the datastores have synced with the rest of the cluster.
If True, verifies RESTCONF is available.
If ${verify_system_status}, verifies the system services are OPERATIONAL.</doc>
<status status="PASS" start="2026-04-08T00:57:21.945038" elapsed="5.826032"/>
</kw>
<arg>${timeout}</arg>
<arg>10s</arg>
<arg>Verify_Members_Are_Ready</arg>
<arg>${member_index_list}</arg>
<arg>${wait_for_sync}</arg>
<arg>${verify_restconf}</arg>
<arg>${check_system_status}</arg>
<arg>${service_list}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-08T00:56:51.758347" elapsed="36.012789"/>
</kw>
<kw name="Run_Bash_Command_On_List_Or_All" owner="ClusterManagement" type="TEARDOWN">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:57:27.775325" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:57:27.774716" elapsed="0.000646"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:57:27.775885" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:57:27.775545" elapsed="0.000366"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:57:27.775958" elapsed="0.000031"/>
</return>
<msg time="2026-04-08T00:57:27.776117" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:57:27.774185" elapsed="0.001957"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:57:27.777427" level="INFO">${member_ip} = 10.30.170.48</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:57:27.777007" elapsed="0.000448"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:57:27.778363" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

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

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T00:57:27.781451" elapsed="0.000320"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:57:27.782497" level="INFO">Attempting to execute command "netstat -pnatu | grep 2550" on remote system "10.30.170.48" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:57:27.781927" elapsed="0.000620"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:57:27.783264" level="INFO">${conn_id} = 434</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:57:27.782709" elapsed="0.000584"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T00:57:27.784682" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T00:57:27.784778" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T00:57:27.784278" elapsed="0.000526"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:57:27.784969" elapsed="0.000573"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T00:57:27.787047" level="INFO">Logging into '10.30.170.48:22' as 'jenkins'.</msg>
<msg time="2026-04-08T00:57:28.107820" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 00:56:49 UTC 2026

  System load:  0.04               Processes:             121
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.170.48
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 00:56:50 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-0-builder-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T00:57:27.786390" elapsed="0.321640"/>
</kw>
<msg time="2026-04-08T00:57:28.108148" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:57:27.785720" elapsed="0.322596"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T00:57:27.783540" elapsed="0.324892"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T00:57:28.108929" level="INFO">Executing command 'netstat -pnatu | grep 2550'.</msg>
<msg time="2026-04-08T00:57:28.121676" level="INFO">Command exited with return code 1.</msg>
<msg time="2026-04-08T00:57:28.121843" level="INFO">${stdout} = </msg>
<msg time="2026-04-08T00:57:28.121909" level="INFO">${stderr} = bash: line 1: netstat: command not found</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T00:57:28.108668" elapsed="0.013275"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:57:28.122212" elapsed="0.000386"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:57:28.123846" level="INFO">bash: line 1: netstat: command not found</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:57:28.123022" elapsed="0.000931"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:57:28.124481" elapsed="0.000038"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:57:28.124129" elapsed="0.000461"/>
</branch>
<status status="PASS" start="2026-04-08T00:57:28.124079" elapsed="0.000562"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T00:57:28.125000" elapsed="0.000063"/>
</return>
<status status="PASS" start="2026-04-08T00:57:28.124762" elapsed="0.000374"/>
</branch>
<status status="PASS" start="2026-04-08T00:57:28.124727" elapsed="0.000503"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:57:28.125310" elapsed="0.000032"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:57:28.130959" elapsed="0.000582"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:57:28.131710" elapsed="0.000161"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:57:28.132020" elapsed="0.000097"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:57:28.126028" elapsed="0.006158"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T00:57:27.780341" elapsed="0.351940"/>
</kw>
<msg time="2026-04-08T00:57:28.132336" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:57:27.779742" elapsed="0.352659"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-08T00:57:27.779180" elapsed="0.353300"/>
</kw>
<msg time="2026-04-08T00:57:28.132520" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:57:27.778656" elapsed="0.353921"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:57:28.135485" elapsed="0.000309"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:57:28.135956" elapsed="0.000144"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:57:28.136264" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:57:28.132861" elapsed="0.003552"/>
</kw>
<msg time="2026-04-08T00:57:28.136504" level="INFO">${output} = </msg>
<var>${output}</var>
<arg>Utils.Run_Command_On_Controller</arg>
<arg>${member_ip}</arg>
<arg>${command}</arg>
<doc>Store current connection index, run keyword returning its result, restore connection in teardown.
Note that in order to avoid "got positional argument after named arguments", it is safer to use positional (not named) arguments on call.</doc>
<status status="PASS" start="2026-04-08T00:57:27.777713" elapsed="0.358816"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:57:28.136957" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:57:28.136710" elapsed="0.000289"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-08T00:57:28.137042" elapsed="0.000028"/>
</return>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-08T00:57:27.776540" elapsed="0.360642"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T00:57:27.776362" elapsed="0.360861"/>
</iter>
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:57:28.138251" level="INFO">${member_ip} = 10.30.170.131</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:57:28.137955" elapsed="0.000322"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:57:28.139048" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

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

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T00:57:28.142224" elapsed="0.000290"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:57:28.143150" level="INFO">Attempting to execute command "netstat -pnatu | grep 2550" on remote system "10.30.170.131" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:57:28.142666" elapsed="0.000557"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:57:28.143791" level="INFO">${conn_id} = 437</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:57:28.143380" elapsed="0.000439"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T00:57:28.144913" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T00:57:28.145007" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T00:57:28.144524" elapsed="0.000507"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:57:28.145210" elapsed="0.000555"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T00:57:28.147109" level="INFO">Logging into '10.30.170.131:22' as 'jenkins'.</msg>
<msg time="2026-04-08T00:57:28.461454" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 00:56:49 UTC 2026

  System load:  0.1                Processes:             121
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.170.131
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 00:56:51 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-0-builder-1 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T00:57:28.146506" elapsed="0.315159"/>
</kw>
<msg time="2026-04-08T00:57:28.461868" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:57:28.145939" elapsed="0.316068"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T00:57:28.144033" elapsed="0.318088"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T00:57:28.462713" level="INFO">Executing command 'netstat -pnatu | grep 2550'.</msg>
<msg time="2026-04-08T00:57:28.474938" level="INFO">Command exited with return code 1.</msg>
<msg time="2026-04-08T00:57:28.475242" level="INFO">${stdout} = </msg>
<msg time="2026-04-08T00:57:28.475349" level="INFO">${stderr} = bash: line 1: netstat: command not found</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T00:57:28.462383" elapsed="0.013019"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:57:28.475848" elapsed="0.000550"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:57:28.477604" level="INFO">bash: line 1: netstat: command not found</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:57:28.476828" elapsed="0.000879"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:57:28.478231" elapsed="0.000041"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:57:28.477885" elapsed="0.000461"/>
</branch>
<status status="PASS" start="2026-04-08T00:57:28.477833" elapsed="0.000564"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T00:57:28.478763" elapsed="0.000064"/>
</return>
<status status="PASS" start="2026-04-08T00:57:28.478518" elapsed="0.000382"/>
</branch>
<status status="PASS" start="2026-04-08T00:57:28.478483" elapsed="0.000469"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:57:28.479025" elapsed="0.000032"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:57:28.483942" elapsed="0.000807"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:57:28.484981" elapsed="0.000288"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:57:28.485523" elapsed="0.000196"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:57:28.479755" elapsed="0.006048"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T00:57:28.140961" elapsed="0.344984"/>
</kw>
<msg time="2026-04-08T00:57:28.486028" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:57:28.140414" elapsed="0.345713"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-08T00:57:28.139844" elapsed="0.346436"/>
</kw>
<msg time="2026-04-08T00:57:28.486343" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:57:28.139343" elapsed="0.347088"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:57:28.490545" elapsed="0.000332"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:57:28.491043" elapsed="0.000162"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:57:28.491353" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:57:28.486872" elapsed="0.004630"/>
</kw>
<msg time="2026-04-08T00:57:28.491595" level="INFO">${output} = </msg>
<var>${output}</var>
<arg>Utils.Run_Command_On_Controller</arg>
<arg>${member_ip}</arg>
<arg>${command}</arg>
<doc>Store current connection index, run keyword returning its result, restore connection in teardown.
Note that in order to avoid "got positional argument after named arguments", it is safer to use positional (not named) arguments on call.</doc>
<status status="PASS" start="2026-04-08T00:57:28.138492" elapsed="0.353128"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:57:28.492043" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:57:28.491794" elapsed="0.000291"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-08T00:57:28.492126" elapsed="0.000032"/>
</return>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-08T00:57:28.137497" elapsed="0.354773"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T00:57:28.137317" elapsed="0.354991"/>
</iter>
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:57:28.493333" level="INFO">${member_ip} = 10.30.171.110</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:57:28.493021" elapsed="0.000340"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:57:28.494227" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

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

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T00:57:28.499083" elapsed="0.000279"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:57:28.499981" level="INFO">Attempting to execute command "netstat -pnatu | grep 2550" on remote system "10.30.171.110" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:57:28.499511" elapsed="0.000517"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:57:28.500624" level="INFO">${conn_id} = 440</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:57:28.500206" elapsed="0.000445"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T00:57:28.501771" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T00:57:28.501865" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T00:57:28.501350" elapsed="0.000540"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:57:28.502050" elapsed="0.000555"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T00:57:28.503977" level="INFO">Logging into '10.30.171.110:22' as 'jenkins'.</msg>
<msg time="2026-04-08T00:57:28.819081" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 00:56:45 UTC 2026

  System load:  0.17               Processes:             126
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 8%                 IPv4 address for ens3: 10.30.171.110
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 00:56:51 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T00:57:28.503344" elapsed="0.316003"/>
</kw>
<msg time="2026-04-08T00:57:28.819467" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:57:28.502776" elapsed="0.316836"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T00:57:28.500867" elapsed="0.318864"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T00:57:28.820298" level="INFO">Executing command 'netstat -pnatu | grep 2550'.</msg>
<msg time="2026-04-08T00:57:28.832733" level="INFO">Command exited with return code 1.</msg>
<msg time="2026-04-08T00:57:28.832907" level="INFO">${stdout} = </msg>
<msg time="2026-04-08T00:57:28.832969" level="INFO">${stderr} = bash: line 1: netstat: command not found</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T00:57:28.819988" elapsed="0.013014"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:57:28.833285" elapsed="0.000424"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:57:28.834851" level="INFO">bash: line 1: netstat: command not found</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:57:28.834129" elapsed="0.000826"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:57:28.835532" elapsed="0.000039"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:57:28.835132" elapsed="0.000514"/>
</branch>
<status status="PASS" start="2026-04-08T00:57:28.835080" elapsed="0.000615"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T00:57:28.836064" elapsed="0.000066"/>
</return>
<status status="PASS" start="2026-04-08T00:57:28.835818" elapsed="0.000426"/>
</branch>
<status status="PASS" start="2026-04-08T00:57:28.835783" elapsed="0.000627"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:57:28.836505" elapsed="0.000034"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:57:28.842269" elapsed="0.000573"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:57:28.843010" elapsed="0.000181"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:57:28.843343" elapsed="0.000099"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:57:28.837269" elapsed="0.006227"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T00:57:28.497989" elapsed="0.345602"/>
</kw>
<msg time="2026-04-08T00:57:28.843650" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:57:28.495594" elapsed="0.348122"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-08T00:57:28.495017" elapsed="0.348779"/>
</kw>
<msg time="2026-04-08T00:57:28.843838" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:57:28.494514" elapsed="0.349382"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:57:28.846876" elapsed="0.000334"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:57:28.847374" elapsed="0.000148"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:57:28.847667" elapsed="0.000132"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:57:28.844240" elapsed="0.003620"/>
</kw>
<msg time="2026-04-08T00:57:28.847953" level="INFO">${output} = </msg>
<var>${output}</var>
<arg>Utils.Run_Command_On_Controller</arg>
<arg>${member_ip}</arg>
<arg>${command}</arg>
<doc>Store current connection index, run keyword returning its result, restore connection in teardown.
Note that in order to avoid "got positional argument after named arguments", it is safer to use positional (not named) arguments on call.</doc>
<status status="PASS" start="2026-04-08T00:57:28.493636" elapsed="0.354341"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:57:28.848424" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:57:28.848154" elapsed="0.000311"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-08T00:57:28.848508" elapsed="0.000028"/>
</return>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-08T00:57:28.492588" elapsed="0.356041"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T00:57:28.492410" elapsed="0.356257"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-08T00:57:27.776221" elapsed="1.072482"/>
</for>
<arg>command=netstat -pnatu | grep 2550</arg>
<doc>Cycle through indices (or all), run command on each.</doc>
<status status="PASS" start="2026-04-08T00:57:27.771593" elapsed="1.077201"/>
</kw>
<doc>If the list is empty, start all cluster members. Otherwise, start members based on present indices.
If ${wait_for_sync}, wait for cluster sync on listed members.
Optionally karaf_home can be overriden. Optionally specific JAVA_HOME is used for starting.
Garbage collection is unconditionally logged to files. TODO: Make that reasonable conditional?</doc>
<status status="PASS" start="2026-04-08T00:56:50.615988" elapsed="38.232859"/>
</kw>
<doc>Stop all Cluster Nodes and Start it Up All.</doc>
<status status="PASS" start="2026-04-08T00:54:39.229441" elapsed="169.619523"/>
</test>
<test id="s1-s3-t17" name="Get inventory Status After Cluster Restart" line="122">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-08T00:57:28.852099" elapsed="0.000230"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-08T00:57:28.851838" elapsed="0.000545"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:57:28.853405" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:57:28.853296" elapsed="0.000157"/>
</branch>
<status status="PASS" start="2026-04-08T00:57:28.853278" elapsed="0.000199"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:57:28.858280" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:57:28.858152" elapsed="0.000174"/>
</branch>
<status status="PASS" start="2026-04-08T00:57:28.858133" elapsed="0.000215"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:57:28.859363" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:57:28.858954" elapsed="0.000435"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:57:28.860001" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:57:28.859555" elapsed="0.000527"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:57:28.860128" elapsed="0.000035"/>
</return>
<msg time="2026-04-08T00:57:28.860306" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:57:28.858577" elapsed="0.001754"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:57:28.865789" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:57:28.865679" elapsed="0.000156"/>
</branch>
<status status="PASS" start="2026-04-08T00:57:28.865660" elapsed="0.000196"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:57:28.867003" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:57:28.866895" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-08T00:57:28.866877" elapsed="0.000194"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:57:28.867540" level="INFO">${karaf_connection_index} = 157</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:57:28.867242" elapsed="0.000325"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:57:28.867949" level="INFO">${current_connection_index} = None</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:57:28.867727" elapsed="0.000249"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T00:57:28.868760" level="FAIL">OSError: Socket is closed</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-08T00:57:28.868493" elapsed="0.000857">OSError: Socket is closed</status>
</kw>
<msg time="2026-04-08T00:57:28.869536" level="INFO">${status_write} = FAIL</msg>
<msg time="2026-04-08T00:57:28.869582" level="INFO">${message_write} = OSError: Socket is closed</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:57:28.868136" elapsed="0.001469"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T00:57:38.870775" level="FAIL">No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="FAIL" start="2026-04-08T00:57:28.870116" elapsed="10.001594">No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-08T00:57:38.871981" level="INFO">${status_wait} = FAIL</msg>
<msg time="2026-04-08T00:57:38.872035" level="INFO">${message_wait} = No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:57:28.869775" elapsed="10.002286"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T00:57:38.873324" level="FAIL">Failed to send the command: log:log "ROBOT MESSAGE: Starting test openflowplugin-clustering.txt.Cluster HA Data Recovery Leader Follower Failover.Get inventory Status After Cluster Restart"</msg>
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T00:57:38.872566" elapsed="0.000826">Failed to send the command: log:log "ROBOT MESSAGE: Starting test openflowplugin-clustering.txt.Cluster HA Data Recovery Leader Follower Failover.Get inventory Status After Cluster Restart"</status>
</kw>
<status status="FAIL" start="2026-04-08T00:57:38.872219" elapsed="0.001247">Failed to send the command: log:log "ROBOT MESSAGE: Starting test openflowplugin-clustering.txt.Cluster HA Data Recovery Leader Follower Failover.Get inventory Status After Cluster Restart"</status>
</branch>
<status status="FAIL" start="2026-04-08T00:57:38.872148" elapsed="0.001355">Failed to send the command: log:log "ROBOT MESSAGE: Starting test openflowplugin-clustering.txt.Cluster HA Data Recovery Leader Follower Failover.Get inventory Status After Cluster Restart"</status>
</if>
<kw name="Log" owner="BuiltIn">
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-08T00:57:38.873673" elapsed="0.000023"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:57:38.873911" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:57:38.873765" elapsed="0.000200"/>
</branch>
<status status="NOT RUN" start="2026-04-08T00:57:38.873746" elapsed="0.000243"/>
</if>
<return>
<value>${message_wait}</value>
<status status="NOT RUN" start="2026-04-08T00:57:38.874027" elapsed="0.000017"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:57:38.875619" elapsed="0.000791"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:57:38.876714" elapsed="0.000507"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:57:38.877481" elapsed="0.000363"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:57:38.874959" elapsed="0.002985"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T00:57:38.874363" elapsed="0.003649"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="FAIL" start="2026-04-08T00:57:28.866595" elapsed="10.012038">Failed to send the command: log:log "ROBOT MESSAGE: Starting test openflowplugin-clustering.txt.Cluster HA Data Recovery Leader Follower Failover.Get inventory Status After Cluster Restart"</status>
</kw>
<msg time="2026-04-08T00:57:38.878749" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:57:38.878795" level="INFO">${message} = Failed to send the command: log:log "ROBOT MESSAGE: Starting test openflowplugin-clustering.txt.Cluster HA Data Recovery Leader Follower Failover.Get inventory Status After Cluster Restart"</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:57:28.866006" elapsed="10.012814"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T00:57:38.879013" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:57:38.878900" elapsed="0.000156"/>
</branch>
<status status="PASS" start="2026-04-08T00:57:38.878881" elapsed="0.000197"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:57:38.879899" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:57:38.879792" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-08T00:57:38.879774" elapsed="0.000193"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:57:38.880522" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T00:57:38.880120" elapsed="0.000571"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:57:38.881124" level="INFO">{1: 157, 2: 223, 3: 86}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:57:38.880850" elapsed="0.000402"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:57:38.881663" level="INFO">1</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:57:38.881409" elapsed="0.000300"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:57:38.882256" elapsed="0.000268"/>
</kw>
<msg time="2026-04-08T00:57:38.882626" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:57:38.882672" level="INFO">${old_connection_index} = 157</msg>
<var>${status}</var>
<var>${old_connection_index}</var>
<arg>Get From Dictionary</arg>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:57:38.881868" elapsed="0.000827"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='PASS'">
<kw name="Run Keywords" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${old_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:57:38.883527" elapsed="0.000201"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T00:57:38.884828" level="FAIL">OSError: Socket is closed</msg>
<arg>logout</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-08T00:57:38.884407" elapsed="0.001267">OSError: Socket is closed</status>
</kw>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:57:38.883905" elapsed="0.001865"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:57:38.886422" elapsed="0.000345"/>
</kw>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:57:38.885946" elapsed="0.000904"/>
</kw>
<arg>SSHLibrary.Switch_Connection</arg>
<arg>${old_connection_index}</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Executes all the given keywords in a sequence.</doc>
<status status="PASS" start="2026-04-08T00:57:38.882995" elapsed="0.003903"/>
</kw>
<status status="PASS" start="2026-04-08T00:57:38.882772" elapsed="0.004178"/>
</branch>
<status status="PASS" start="2026-04-08T00:57:38.882753" elapsed="0.004222"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:57:38.887842" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:57:38.887531" elapsed="0.000338"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:57:38.887918" elapsed="0.000032"/>
</return>
<msg time="2026-04-08T00:57:38.888074" level="INFO">${odl_ip} = 10.30.170.48</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:57:38.887202" elapsed="0.000897"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${odl_ip}</arg>
<arg>port=${KARAF_SHELL_PORT}</arg>
<arg>prompt=${KARAF_PROMPT_LOGIN}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:57:38.888287" elapsed="0.000456"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:57:38.889059" level="INFO">index=444
host=10.30.170.48
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-08T00:57:38.889187" level="INFO">${karaf_connection_object} = index=444
host=10.30.170.48
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_err...</msg>
<var>${karaf_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T00:57:38.888915" elapsed="0.000301"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<arg>${karaf_connection_object.index}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:57:38.889367" elapsed="0.002235"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-08T00:57:38.892080" level="INFO">Logging into '10.30.170.48:8101' as 'karaf'.</msg>
<msg time="2026-04-08T00:57:39.449253" level="INFO">Read output: [33m                                                                                           
[33m    ________                       ________                .__  .__       .__     __       
[33m    \_____  \ ______   ____   ____ \______ \ _____  ___.__.|  | |__| ____ |  |___/  |_     
[33m     /   |   \\____ \_/ __ \ /    \ |    |  \\__  \&lt;   |  ||  | |  |/ ___\|  |  \   __\    
[33m    /    |    \  |_&gt; &gt;  ___/|   |  \|    `   \/ __ \\___  ||  |_|  / /_/  &gt;   Y  \  |      
[33m    \_______  /   __/ \___  &gt;___|  /_______  (____  / ____||____/__\___  /|___|  /__|      
[33m            \/|__|        \/     \/        \/     \/\/            /_____/      \/          
[33m                                                                                           

Hit '[1m&lt;tab&gt;[0m' for a list of available commands
and '[1m[cmd] --help[0m' for help on a specific command.
Hit '[1m&lt;ctrl-d&gt;[0m' or type '[1msystem:shutdown[0m' or '[1mlogout[0m' to shutdown OpenDaylight.

[?1h=[90m~[0m                                                                                [?2004hopendaylight-user</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="PASS" start="2026-04-08T00:57:38.891810" elapsed="0.557622"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:57:39.461968" elapsed="0.000547"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:57:39.462687" elapsed="0.000177"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:57:39.463013" elapsed="0.000106"/>
</kw>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:57:39.450675" elapsed="0.012589"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T00:57:39.449892" elapsed="0.013425"/>
</kw>
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="PASS" start="2026-04-08T00:57:38.879494" elapsed="0.583876"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:57:39.464183" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:57:39.464043" elapsed="0.000192"/>
</branch>
<status status="PASS" start="2026-04-08T00:57:39.464018" elapsed="0.000240"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:57:39.464635" level="INFO">${karaf_connection_index} = 444</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:57:39.464401" elapsed="0.000260"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:57:39.464995" level="INFO">${current_connection_index} = None</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:57:39.464818" elapsed="0.000203"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T00:57:39.553374" level="INFO">@root&gt;log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T00:57:39.465537" elapsed="0.088046"/>
</kw>
<msg time="2026-04-08T00:57:39.553810" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T00:57:39.553861" level="INFO">${message_write} = @root&gt;log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:57:39.465196" elapsed="0.088702"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T00:57:39.703041" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "a "d "e "r "[C "F "o "l "l "o "w "e "r "[C "F "a "i "l "o "v "e "r ". "G "e "t "[C "i "n "v "e "n "t "o "r "y "[C "S "t "a "[78Ct "[A[78Cu
 "s "[C "A "f "t "e "r "[C "C "l "u "s "t "e "r "[C "R "e "s "t "a "r "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T00:57:39.554858" elapsed="0.148419"/>
</kw>
<msg time="2026-04-08T00:57:39.703477" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T00:57:39.703526" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:57:39.554237" elapsed="0.149326"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:57:39.704093" elapsed="0.000029"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:57:39.703709" elapsed="0.000463"/>
</branch>
<status status="PASS" start="2026-04-08T00:57:39.703660" elapsed="0.000544"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:57:39.704732" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "a "d "e "r "[C "F "o "l "l "o "w "e "r "[C "F "a "i "l "o "v "e "r ". "G "e "t "[C "i "n "v "e "n "t "o "r "y "[C "S "t "a "[78Ct "[A[78Cu
 "s "[C "A "f "t "e "r "[C "C "l "u "s "t "e "r "[C "R "e "s "t "a "r "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:57:39.704355" elapsed="0.000552"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:57:39.705214" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:57:39.704977" elapsed="0.000294"/>
</branch>
<status status="PASS" start="2026-04-08T00:57:39.704958" elapsed="0.000336"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T00:57:39.705333" elapsed="0.000044"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:57:39.706743" elapsed="0.000536"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:57:39.707449" elapsed="0.000181"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:57:39.707779" elapsed="0.000102"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:57:39.706285" elapsed="0.001651"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T00:57:39.705678" elapsed="0.002307"/>
</kw>
<msg time="2026-04-08T00:57:39.708116" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "...</msg>
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T00:57:39.463720" elapsed="0.244438"/>
</kw>
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T00:57:39.708226" elapsed="0.000030"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T00:57:28.865339" elapsed="10.843015"/>
</kw>
<msg time="2026-04-08T00:57:39.708452" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:57:39.708496" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:57:28.860706" elapsed="10.847826"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:57:39.708865" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:57:39.708613" elapsed="0.000305"/>
</branch>
<status status="PASS" start="2026-04-08T00:57:39.708595" elapsed="0.000346"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T00:57:28.860565" elapsed="10.848400"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:57:39.714522" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:57:39.714413" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-08T00:57:39.714393" elapsed="0.000197"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:57:39.715748" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:57:39.715640" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-08T00:57:39.715622" elapsed="0.000195"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:57:39.716286" level="INFO">${karaf_connection_index} = 223</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:57:39.715960" elapsed="0.000365"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:57:39.716762" level="INFO">${current_connection_index} = None</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:57:39.716516" elapsed="0.000273"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T00:57:39.717580" level="FAIL">OSError: Socket is closed</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-08T00:57:39.717306" elapsed="0.001045">OSError: Socket is closed</status>
</kw>
<msg time="2026-04-08T00:57:39.718537" level="INFO">${status_write} = FAIL</msg>
<msg time="2026-04-08T00:57:39.718584" level="INFO">${message_write} = OSError: Socket is closed</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:57:39.716950" elapsed="0.001658"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T00:57:49.719922" level="FAIL">No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="FAIL" start="2026-04-08T00:57:39.719177" elapsed="10.001734">No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-08T00:57:49.721211" level="INFO">${status_wait} = FAIL</msg>
<msg time="2026-04-08T00:57:49.721263" level="INFO">${message_wait} = No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:57:39.718776" elapsed="10.002513"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T00:57:49.722525" level="FAIL">Failed to send the command: log:log "ROBOT MESSAGE: Starting test openflowplugin-clustering.txt.Cluster HA Data Recovery Leader Follower Failover.Get inventory Status After Cluster Restart"</msg>
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T00:57:49.721784" elapsed="0.000910">Failed to send the command: log:log "ROBOT MESSAGE: Starting test openflowplugin-clustering.txt.Cluster HA Data Recovery Leader Follower Failover.Get inventory Status After Cluster Restart"</status>
</kw>
<status status="FAIL" start="2026-04-08T00:57:49.721429" elapsed="0.001340">Failed to send the command: log:log "ROBOT MESSAGE: Starting test openflowplugin-clustering.txt.Cluster HA Data Recovery Leader Follower Failover.Get inventory Status After Cluster Restart"</status>
</branch>
<status status="FAIL" start="2026-04-08T00:57:49.721383" elapsed="0.001423">Failed to send the command: log:log "ROBOT MESSAGE: Starting test openflowplugin-clustering.txt.Cluster HA Data Recovery Leader Follower Failover.Get inventory Status After Cluster Restart"</status>
</if>
<kw name="Log" owner="BuiltIn">
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-08T00:57:49.722972" elapsed="0.000023"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:57:49.723224" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:57:49.723063" elapsed="0.000217"/>
</branch>
<status status="NOT RUN" start="2026-04-08T00:57:49.723045" elapsed="0.000258"/>
</if>
<return>
<value>${message_wait}</value>
<status status="NOT RUN" start="2026-04-08T00:57:49.723341" elapsed="0.000017"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:57:49.724926" elapsed="0.000797"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:57:49.725996" elapsed="0.000490"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:57:49.726750" elapsed="0.000359"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:57:49.724283" elapsed="0.002941"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T00:57:49.723662" elapsed="0.003628"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="FAIL" start="2026-04-08T00:57:39.715337" elapsed="10.012042">Failed to send the command: log:log "ROBOT MESSAGE: Starting test openflowplugin-clustering.txt.Cluster HA Data Recovery Leader Follower Failover.Get inventory Status After Cluster Restart"</status>
</kw>
<msg time="2026-04-08T00:57:49.727487" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:57:49.727531" level="INFO">${message} = Failed to send the command: log:log "ROBOT MESSAGE: Starting test openflowplugin-clustering.txt.Cluster HA Data Recovery Leader Follower Failover.Get inventory Status After Cluster Restart"</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:57:39.714739" elapsed="10.012816"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T00:57:49.727745" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:57:49.727635" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-08T00:57:49.727615" elapsed="0.000194"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:57:49.728684" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:57:49.728577" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-08T00:57:49.728557" elapsed="0.000194"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:57:49.729045" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T00:57:49.728902" elapsed="0.000317"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:57:49.729640" level="INFO">{1: 444, 2: 223, 3: 86}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:57:49.729372" elapsed="0.000312"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:57:49.730078" level="INFO">2</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:57:49.729834" elapsed="0.000286"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:57:49.730672" elapsed="0.000274"/>
</kw>
<msg time="2026-04-08T00:57:49.731046" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:57:49.731091" level="INFO">${old_connection_index} = 223</msg>
<var>${status}</var>
<var>${old_connection_index}</var>
<arg>Get From Dictionary</arg>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:57:49.730293" elapsed="0.000821"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='PASS'">
<kw name="Run Keywords" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${old_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:57:49.731960" elapsed="0.000247"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T00:57:49.733361" level="FAIL">OSError: Socket is closed</msg>
<arg>logout</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-08T00:57:49.732850" elapsed="0.001292">OSError: Socket is closed</status>
</kw>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:57:49.732379" elapsed="0.001881"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:57:49.734940" elapsed="0.000538"/>
</kw>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:57:49.734433" elapsed="0.001133"/>
</kw>
<arg>SSHLibrary.Switch_Connection</arg>
<arg>${old_connection_index}</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Executes all the given keywords in a sequence.</doc>
<status status="PASS" start="2026-04-08T00:57:49.731430" elapsed="0.004185"/>
</kw>
<status status="PASS" start="2026-04-08T00:57:49.731208" elapsed="0.004459"/>
</branch>
<status status="PASS" start="2026-04-08T00:57:49.731188" elapsed="0.004504"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:57:49.736616" level="INFO">${ip_address} = 10.30.170.131</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:57:49.736298" elapsed="0.000346"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:57:49.736694" elapsed="0.000032"/>
</return>
<msg time="2026-04-08T00:57:49.736852" level="INFO">${odl_ip} = 10.30.170.131</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:57:49.735903" elapsed="0.000975"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${odl_ip}</arg>
<arg>port=${KARAF_SHELL_PORT}</arg>
<arg>prompt=${KARAF_PROMPT_LOGIN}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:57:49.737034" elapsed="0.000526"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:57:49.737925" level="INFO">index=448
host=10.30.170.131
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-08T00:57:49.738040" level="INFO">${karaf_connection_object} = index=448
host=10.30.170.131
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_er...</msg>
<var>${karaf_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T00:57:49.737755" elapsed="0.000314"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<arg>${karaf_connection_object.index}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:57:49.738285" elapsed="0.002274"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-08T00:57:49.740984" level="INFO">Logging into '10.30.170.131:8101' as 'karaf'.</msg>
<msg time="2026-04-08T00:57:50.347840" level="INFO">Read output: [33m                                                                                           
[33m    ________                       ________                .__  .__       .__     __       
[33m    \_____  \ ______   ____   ____ \______ \ _____  ___.__.|  | |__| ____ |  |___/  |_     
[33m     /   |   \\____ \_/ __ \ /    \ |    |  \\__  \&lt;   |  ||  | |  |/ ___\|  |  \   __\    
[33m    /    |    \  |_&gt; &gt;  ___/|   |  \|    `   \/ __ \\___  ||  |_|  / /_/  &gt;   Y  \  |      
[33m    \_______  /   __/ \___  &gt;___|  /_______  (____  / ____||____/__\___  /|___|  /__|      
[33m            \/|__|        \/     \/        \/     \/\/            /_____/      \/          
[33m                                                                                           

Hit '[1m&lt;tab&gt;[0m' for a list of available commands
and '[1m[cmd] --help[0m' for help on a specific command.
Hit '[1m&lt;ctrl-d&gt;[0m' or type '[1msystem:shutdown[0m' or '[1mlogout[0m' to shutdown OpenDaylight.

[?1h=[90m~[0m                                                                                [?2004hopendaylight-user</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="PASS" start="2026-04-08T00:57:49.740724" elapsed="0.607354"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:57:50.361663" elapsed="0.000523"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:57:50.362361" elapsed="0.000193"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:57:50.362708" elapsed="0.000106"/>
</kw>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:57:50.349716" elapsed="0.013153"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T00:57:50.348677" elapsed="0.014241"/>
</kw>
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 2,
close the previous connection. In any case create a new connection
to karaf console for 2, set correct prompt set and login to karaf console.
Store connection index for 2 and restore the previous active connection.</doc>
<status status="PASS" start="2026-04-08T00:57:49.728280" elapsed="0.634693"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:57:50.364139" elapsed="0.000033"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:57:50.364014" elapsed="0.000195"/>
</branch>
<status status="PASS" start="2026-04-08T00:57:50.363988" elapsed="0.000245"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:57:50.364638" level="INFO">${karaf_connection_index} = 448</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:57:50.364381" elapsed="0.000284"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:57:50.365023" level="INFO">${current_connection_index} = None</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:57:50.364840" elapsed="0.000211"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T00:57:50.472807" level="INFO">@root&gt;log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T00:57:50.365575" elapsed="0.107502"/>
</kw>
<msg time="2026-04-08T00:57:50.473220" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T00:57:50.473268" level="INFO">${message_write} = @root&gt;log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:57:50.365227" elapsed="0.108078"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T00:57:50.630007" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "a "d "e "r "[C "F "o "l "l "o "w "e "r "[C "F "a "i "l "o "v "e "r ". "G "e "t "[C "i "n "v "e "n "t "o "r "y "[C "S "t "a "[78Ct "[A[78Cu
 "s "[C "A "f "t "e "r "[C "C "l "u "s "t "e "r "[C "R "e "s "t "a "r "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T00:57:50.473868" elapsed="0.156260"/>
</kw>
<msg time="2026-04-08T00:57:50.630263" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T00:57:50.630308" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:57:50.473496" elapsed="0.156847"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:57:50.630713" elapsed="0.000065"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:57:50.630445" elapsed="0.000369"/>
</branch>
<status status="PASS" start="2026-04-08T00:57:50.630417" elapsed="0.000424"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:57:50.631309" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "a "d "e "r "[C "F "o "l "l "o "w "e "r "[C "F "a "i "l "o "v "e "r ". "G "e "t "[C "i "n "v "e "n "t "o "r "y "[C "S "t "a "[78Ct "[A[78Cu
 "s "[C "A "f "t "e "r "[C "C "l "u "s "t "e "r "[C "R "e "s "t "a "r "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:57:50.630989" elapsed="0.000406"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:57:50.632016" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:57:50.631789" elapsed="0.000283"/>
</branch>
<status status="PASS" start="2026-04-08T00:57:50.631445" elapsed="0.000651"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T00:57:50.632132" elapsed="0.000054"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:57:50.633485" elapsed="0.000490"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:57:50.634144" elapsed="0.000190"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:57:50.634484" elapsed="0.000105"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:57:50.633039" elapsed="0.001605"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T00:57:50.632460" elapsed="0.002233"/>
</kw>
<msg time="2026-04-08T00:57:50.634824" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "...</msg>
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T00:57:50.363654" elapsed="0.271208"/>
</kw>
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T00:57:50.634911" elapsed="0.000029"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T00:57:39.714049" elapsed="10.920988"/>
</kw>
<msg time="2026-04-08T00:57:50.635135" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:57:50.635196" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:57:39.709294" elapsed="10.925939"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:57:50.635569" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:57:50.635315" elapsed="0.000309"/>
</branch>
<status status="PASS" start="2026-04-08T00:57:50.635296" elapsed="0.000351"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T00:57:39.709118" elapsed="10.926554"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:57:50.640855" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:57:50.640744" elapsed="0.000156"/>
</branch>
<status status="PASS" start="2026-04-08T00:57:50.640725" elapsed="0.000198"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:57:50.642148" elapsed="0.000048"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:57:50.642037" elapsed="0.000192"/>
</branch>
<status status="PASS" start="2026-04-08T00:57:50.642018" elapsed="0.000234"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:57:50.642701" level="INFO">${karaf_connection_index} = 86</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:57:50.642397" elapsed="0.000330"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:57:50.643106" level="INFO">${current_connection_index} = None</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:57:50.642885" elapsed="0.000247"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T00:57:50.643915" level="FAIL">OSError: Socket is closed</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-08T00:57:50.643644" elapsed="0.000808">OSError: Socket is closed</status>
</kw>
<msg time="2026-04-08T00:57:50.644639" level="INFO">${status_write} = FAIL</msg>
<msg time="2026-04-08T00:57:50.644685" level="INFO">${message_write} = OSError: Socket is closed</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:57:50.643310" elapsed="0.001398"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T00:58:00.645883" level="FAIL">No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="FAIL" start="2026-04-08T00:57:50.645242" elapsed="10.001548">No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-08T00:58:00.647065" level="INFO">${status_wait} = FAIL</msg>
<msg time="2026-04-08T00:58:00.647119" level="INFO">${message_wait} = No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:57:50.644874" elapsed="10.002271"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T00:58:00.648438" level="FAIL">Failed to send the command: log:log "ROBOT MESSAGE: Starting test openflowplugin-clustering.txt.Cluster HA Data Recovery Leader Follower Failover.Get inventory Status After Cluster Restart"</msg>
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T00:58:00.647650" elapsed="0.000856">Failed to send the command: log:log "ROBOT MESSAGE: Starting test openflowplugin-clustering.txt.Cluster HA Data Recovery Leader Follower Failover.Get inventory Status After Cluster Restart"</status>
</kw>
<status status="FAIL" start="2026-04-08T00:58:00.647305" elapsed="0.001274">Failed to send the command: log:log "ROBOT MESSAGE: Starting test openflowplugin-clustering.txt.Cluster HA Data Recovery Leader Follower Failover.Get inventory Status After Cluster Restart"</status>
</branch>
<status status="FAIL" start="2026-04-08T00:58:00.647262" elapsed="0.001353">Failed to send the command: log:log "ROBOT MESSAGE: Starting test openflowplugin-clustering.txt.Cluster HA Data Recovery Leader Follower Failover.Get inventory Status After Cluster Restart"</status>
</if>
<kw name="Log" owner="BuiltIn">
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:00.648782" elapsed="0.000023"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:00.649012" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:00.648871" elapsed="0.000198"/>
</branch>
<status status="NOT RUN" start="2026-04-08T00:58:00.648854" elapsed="0.000243"/>
</if>
<return>
<value>${message_wait}</value>
<status status="NOT RUN" start="2026-04-08T00:58:00.649135" elapsed="0.000017"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:58:00.651044" elapsed="0.000827"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:58:00.652160" elapsed="0.000542"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:58:00.652968" elapsed="0.000390"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:58:00.650402" elapsed="0.003063"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T00:58:00.649479" elapsed="0.004051"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="FAIL" start="2026-04-08T00:57:50.641681" elapsed="10.011955">Failed to send the command: log:log "ROBOT MESSAGE: Starting test openflowplugin-clustering.txt.Cluster HA Data Recovery Leader Follower Failover.Get inventory Status After Cluster Restart"</status>
</kw>
<msg time="2026-04-08T00:58:00.653744" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:58:00.653789" level="INFO">${message} = Failed to send the command: log:log "ROBOT MESSAGE: Starting test openflowplugin-clustering.txt.Cluster HA Data Recovery Leader Follower Failover.Get inventory Status After Cluster Restart"</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:57:50.641100" elapsed="10.012712"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T00:58:00.654001" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:58:00.653891" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:00.653873" elapsed="0.000192"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:58:00.654915" elapsed="0.000069"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:58:00.654806" elapsed="0.000213"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:00.654773" elapsed="0.000268"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:58:00.655399" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T00:58:00.655249" elapsed="0.000283"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:00.655951" level="INFO">{1: 444, 2: 448, 3: 86}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:00.655684" elapsed="0.000313"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:00.656450" level="INFO">3</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:00.656149" elapsed="0.000380"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:58:00.657076" elapsed="0.000330"/>
</kw>
<msg time="2026-04-08T00:58:00.657507" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:58:00.657553" level="INFO">${old_connection_index} = 86</msg>
<var>${status}</var>
<var>${old_connection_index}</var>
<arg>Get From Dictionary</arg>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:58:00.656710" elapsed="0.000866"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='PASS'">
<kw name="Run Keywords" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${old_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:58:00.658409" elapsed="0.000206"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T00:58:00.659719" level="FAIL">OSError: Socket is closed</msg>
<arg>logout</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-08T00:58:00.659291" elapsed="0.001333">OSError: Socket is closed</status>
</kw>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:58:00.658785" elapsed="0.001960"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:58:00.661429" elapsed="0.000347"/>
</kw>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:58:00.660923" elapsed="0.000939"/>
</kw>
<arg>SSHLibrary.Switch_Connection</arg>
<arg>${old_connection_index}</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Executes all the given keywords in a sequence.</doc>
<status status="PASS" start="2026-04-08T00:58:00.657876" elapsed="0.004032"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:00.657654" elapsed="0.004305"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:00.657636" elapsed="0.004347"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:58:00.662862" level="INFO">${ip_address} = 10.30.171.110</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:58:00.662548" elapsed="0.000341"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:58:00.662937" elapsed="0.000031"/>
</return>
<msg time="2026-04-08T00:58:00.663089" level="INFO">${odl_ip} = 10.30.171.110</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:58:00.662205" elapsed="0.000910"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${odl_ip}</arg>
<arg>port=${KARAF_SHELL_PORT}</arg>
<arg>prompt=${KARAF_PROMPT_LOGIN}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:58:00.663365" elapsed="0.000438"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:58:00.664113" level="INFO">index=452
host=10.30.171.110
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-08T00:58:00.664247" level="INFO">${karaf_connection_object} = index=452
host=10.30.171.110
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_er...</msg>
<var>${karaf_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T00:58:00.663972" elapsed="0.000303"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<arg>${karaf_connection_object.index}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:58:00.664423" elapsed="0.002391"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-08T00:58:00.667278" level="INFO">Logging into '10.30.171.110:8101' as 'karaf'.</msg>
<msg time="2026-04-08T00:58:01.144503" level="INFO">Read output: [33m                                                                                           
[33m    ________                       ________                .__  .__       .__     __       
[33m    \_____  \ ______   ____   ____ \______ \ _____  ___.__.|  | |__| ____ |  |___/  |_     
[33m     /   |   \\____ \_/ __ \ /    \ |    |  \\__  \&lt;   |  ||  | |  |/ ___\|  |  \   __\    
[33m    /    |    \  |_&gt; &gt;  ___/|   |  \|    `   \/ __ \\___  ||  |_|  / /_/  &gt;   Y  \  |      
[33m    \_______  /   __/ \___  &gt;___|  /_______  (____  / ____||____/__\___  /|___|  /__|      
[33m            \/|__|        \/     \/        \/     \/\/            /_____/      \/          
[33m                                                                                           

Hit '[1m&lt;tab&gt;[0m' for a list of available commands
and '[1m[cmd] --help[0m' for help on a specific command.
Hit '[1m&lt;ctrl-d&gt;[0m' or type '[1msystem:shutdown[0m' or '[1mlogout[0m' to shutdown OpenDaylight.

[?1h=[90m~[0m                                                                                [?2004hopendaylight-user</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="PASS" start="2026-04-08T00:58:00.666981" elapsed="0.477673"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:58:01.157044" elapsed="0.000506"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:58:01.157720" elapsed="0.000167"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:58:01.158036" elapsed="0.000104"/>
</kw>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:58:01.145898" elapsed="0.012316"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T00:58:01.145188" elapsed="0.013074"/>
</kw>
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 3,
close the previous connection. In any case create a new connection
to karaf console for 3, set correct prompt set and login to karaf console.
Store connection index for 3 and restore the previous active connection.</doc>
<status status="PASS" start="2026-04-08T00:58:00.654495" elapsed="0.503819"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:58:01.159112" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:58:01.158993" elapsed="0.000173"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:01.158968" elapsed="0.000249"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:58:01.159591" level="INFO">${karaf_connection_index} = 452</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:58:01.159361" elapsed="0.000255"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:58:01.159946" level="INFO">${current_connection_index} = None</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:58:01.159770" elapsed="0.000201"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T00:58:01.247459" level="INFO">@root&gt;log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T00:58:01.160709" elapsed="0.086853"/>
</kw>
<msg time="2026-04-08T00:58:01.247669" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T00:58:01.247714" level="INFO">${message_write} = @root&gt;log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:58:01.160125" elapsed="0.087626"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T00:58:01.375865" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "a "d "e "r "[C "F "o "l "l "o "w "e "r "[C "F "a "i "l "o "v "e "r ". "G "e "t "[C "i "n "v "e "n "t "o "r "y "[C "S "t "a "[78Ct "[A[78Cu
 "s "[C "A "f "t "e "r "[C "C "l "u "s "t "e "r "[C "R "e "s "t "a "r "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T00:58:01.248325" elapsed="0.127709"/>
</kw>
<msg time="2026-04-08T00:58:01.376186" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T00:58:01.376255" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:58:01.247928" elapsed="0.128365"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:01.376725" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:01.376409" elapsed="0.000377"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:01.376375" elapsed="0.000438"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:01.377418" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "a "d "e "r "[C "F "o "l "l "o "w "e "r "[C "F "a "i "l "o "v "e "r ". "G "e "t "[C "i "n "v "e "n "t "o "r "y "[C "S "t "a "[78Ct "[A[78Cu
 "s "[C "A "f "t "e "r "[C "C "l "u "s "t "e "r "[C "R "e "s "t "a "r "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:01.376959" elapsed="0.000552"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:01.377816" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:01.377580" elapsed="0.000292"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:01.377561" elapsed="0.000333"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T00:58:01.377930" elapsed="0.000040"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:58:01.379469" elapsed="0.000496"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:58:01.380133" elapsed="0.000439"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:58:01.380848" elapsed="0.000110"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:58:01.378925" elapsed="0.002088"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T00:58:01.378371" elapsed="0.002688"/>
</kw>
<msg time="2026-04-08T00:58:01.381333" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "...</msg>
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T00:58:01.158660" elapsed="0.222716"/>
</kw>
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T00:58:01.381425" elapsed="0.000029"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T00:57:50.640398" elapsed="10.741152"/>
</kw>
<msg time="2026-04-08T00:58:01.381646" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:58:01.381690" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:57:50.635959" elapsed="10.745768"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:01.382097" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:01.381844" elapsed="0.000306"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:01.381825" elapsed="0.000374"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T00:57:50.635818" elapsed="10.746407"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-08T00:57:28.860388" elapsed="32.521875"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-08T00:57:28.857787" elapsed="32.524542"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-08T00:57:28.852981" elapsed="32.529409"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:57:28.852530" elapsed="32.529909"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-08T00:57:28.849790" elapsed="32.532708"/>
</kw>
<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-04-08T00:58:01.389443" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:58:01.389043" elapsed="0.000427"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:58:01.389952" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:58:01.389627" elapsed="0.000351"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:58:01.390022" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:58:01.390194" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:58:01.388679" elapsed="0.001541"/>
</kw>
<kw name="Sort List" owner="Collections">
<arg>${index_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="PASS" start="2026-04-08T00:58:01.390372" elapsed="0.000172"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:58:01.391028" level="INFO">${ds_type} = config</msg>
<var>${ds_type}</var>
<arg>'${shard_type}' != 'config'</arg>
<arg>operational</arg>
<arg>config</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:58:01.390701" elapsed="0.000354"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:58:01.391469" level="INFO">${leader_list} = []</msg>
<var>${leader_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:58:01.391233" elapsed="0.000261"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:58:01.391872" level="INFO">${follower_list} = []</msg>
<var>${follower_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:58:01.391639" elapsed="0.000258"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_Raft_State_Of_Shard_At_Member" owner="ClusterManagement">
<kw name="Get_Raft_Property_From_Shard_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:58:01.394362" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:58:01.394043" elapsed="0.000345"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:58:01.394433" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:58:01.394579" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:58:01.393685" elapsed="0.000918"/>
</kw>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Get_As_Json_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:58:01.464897" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:58:01.464519" elapsed="0.000406"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:58:01.465683" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:58:01.465435" elapsed="0.000331">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-08T00:58:01.465860" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:58:01.465083" elapsed="0.000801"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:58:01.466443" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:58:01.466042" elapsed="0.000428"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T00:58:01.466765" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-08T00:58:01.466958" level="INFO">${template} = /rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T00:58:01.466629" elapsed="0.000355"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:01.467397" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:01.467137" elapsed="0.000304"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:01.468386" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:01.468115" elapsed="0.000315"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-08T00:58:01.468853" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-08T00:58:01.468586" elapsed="0.000293"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:01.469215" elapsed="0.000023"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:01.469423" elapsed="0.000023"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:01.469591" elapsed="0.000021"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-08T00:58:01.469058" elapsed="0.000590"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-08T00:58:01.468924" elapsed="0.000753"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-08T00:58:01.469719" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:58:01.469875" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-08T00:58:01.467800" elapsed="0.002100"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:01.467510" elapsed="0.002420"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:01.470097" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:01.469954" elapsed="0.000197"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:01.467490" elapsed="0.002699"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:01.470768" level="INFO">${final_text} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:01.470330" elapsed="0.000464"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T00:58:01.470842" 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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="PASS" start="2026-04-08T00:58:01.463801" elapsed="0.007231"/>
</kw>
<msg time="2026-04-08T00:58:01.471102" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:58:01.451029" elapsed="0.020238"/>
</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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:01.486308" elapsed="0.000054"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:01.499297" elapsed="0.000054"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:01.512257" elapsed="0.000052"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:01.512623" elapsed="0.000076"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:01.512938" elapsed="0.000076"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:01.513782" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:01.513554" elapsed="0.000295"/>
</branch>
<status status="NOT RUN" start="2026-04-08T00:58:01.513525" elapsed="0.000366"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:01.514156" elapsed="0.000049"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:01.514514" elapsed="0.000037"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:01.514813" elapsed="0.000035"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-08T00:58:01.513456" elapsed="0.001440"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-08T00:58:01.513164" elapsed="0.001805"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:01.515301" elapsed="0.000075"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-08T00:58:01.515563" elapsed="0.000019"/>
</return>
<msg time="2026-04-08T00:58:01.515753" level="INFO">${uri} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-08T00:58:01.441177" elapsed="0.074603"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:58:01.517823" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:58:01.517494" elapsed="0.000405">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-08T00:58:01.518048" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:58:01.516662" elapsed="0.001426"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:01.519473" elapsed="0.000069"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:01.518260" elapsed="0.001336"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:58:01.520505" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:58:01.519933" elapsed="0.000785"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:01.519634" elapsed="0.001135"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:01.518239" elapsed="0.002566"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:58:01.523656" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:58:01.521006" elapsed="0.002691"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-08T00:58:01.523836" elapsed="0.000033"/>
</return>
<msg time="2026-04-08T00:58:01.524067" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:58:01.516187" elapsed="0.007906"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:58:01.526177" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:58:01.525858" elapsed="0.000387">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-08T00:58:01.526396" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:58:01.525068" elapsed="0.001367"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-08T00:58:01.526875" elapsed="0.000050"/>
</return>
<status status="PASS" start="2026-04-08T00:58:01.526584" elapsed="0.000429"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:01.526564" elapsed="0.000489"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:01.527264" elapsed="0.000079"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:01.527586" elapsed="0.000102"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-08T00:58:01.527846" elapsed="0.000019"/>
</return>
<msg time="2026-04-08T00:58:01.541465" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:58:01.524616" elapsed="0.016879"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:01.544075" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:01.543437" elapsed="0.001004"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:01.545278" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:01.544678" elapsed="0.000731"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:58:01.567270" level="INFO">GET Request : url=http://10.30.170.48:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 path_url=/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01jewze00gqgu8yuon50tdwq65226.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:58:01.568306" level="INFO">GET Response : url=http://10.30.170.48:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Transfer-Encoding': 'chunked'} 
 body={"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","encrypted-passwords","hidden-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-private-keys","asymmetrically-encrypted-value-format","cleartext-private-keys","cms-encrypted-data-format","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["client-ident-hostbased","ssh-client-keepalives","client-ident-password","client-ident-publickey"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-ex... (set the log level to DEBUG or TRACE to see the full content) 
 </msg>
<msg time="2026-04-08T00:58:01.569042" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:58:01.548773" elapsed="0.020374"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:01.545536" elapsed="0.023796"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:01.571593" elapsed="0.000083"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:01.569426" elapsed="0.002383"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:01.545516" elapsed="0.026373"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:01.580035" level="INFO">{"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","encrypted-passwords","hidden-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-private-keys","asymmetrically-encrypted-value-format","cleartext-private-keys","cms-encrypted-data-format","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["client-ident-hostbased","ssh-client-keepalives","client-ident-password","client-ident-publickey"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-experimenter-types?revision=2015-10-20","namespace":"urn:opendaylight:openflowplugin:experimenter:types","conformance-type":"import"},{"name":"ietf-ip_2018-02-22","revision":"2018-02-22","schema":"/rests/modules/ietf-ip?revision=2018-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-ip","conformance-type":"import","feature":["ipv6-privacy-autoconf","ipv4-non-contiguous-netmasks"]},{"name":"ietf-tcp-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-client","conformance-type":"import","feature":["local-binding-supported","tcp-client-keepalives"]},{"name":"node-config_2014-10-15","revision":"2014-10-15","schema":"/rests/modules/node-config?revision=2014-10-15","namespace":"urn:opendaylight:module:config","conformance-type":"import"},{"name":"ietf-restconf_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf","conformance-type":"import"},{"name":"ietf-datastores_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-datastores?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-datastores","conformance-type":"import"},{"name":"ietf-yang-patch_2017-02-22","revision":"2017-02-22","schema":"/rests/modules/ietf-yang-patch?revision=2017-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-patch","conformance-type":"import"},{"name":"sal-group_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-group?revision=2013-09-18","namespace":"urn:opendaylight:group:service","conformance-type":"import"},{"name":"odl-codegen-extensions_2024-06-27","revision":"2024-06-27","schema":"/rests/modules/odl-codegen-extensions?revision=2024-06-27","namespace":"urn:opendaylight:yang:extension:codegen","conformance-type":"import"},{"name":"sal-meter_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-meter?revision=2013-09-18","namespace":"urn:opendaylight:meter:service","conformance-type":"import"},{"name":"ietf-interfaces_2018-02-20","revision":"2018-02-20","schema":"/rests/modules/ietf-interfaces?revision=2018-02-20","namespace":"urn:ietf:params:xml:ns:yang:ietf-interfaces","conformance-type":"import","feature":["pre-provisioning","if-mib","arbitrary-names"]},{"name":"opendaylight-l2-types_2013-08-27","revision":"2013-08-27","schema":"/rests/modules/opendaylight-l2-types?revision=2013-08-27","namespace":"urn:opendaylight:l2:types","conformance-type":"import"},{"name":"opendaylight-flow-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-flow-types?revision=2013-10-26","namespace":"urn:opendaylight:flow:types","conformance-type":"import"},{"name":"lldp-speaker-config_2016-05-12","revision":"2016-05-12","schema":"/rests/modules/lldp-speaker-config?revision=2016-05-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker:config","conformance-type":"import"},{"name":"aaa-cert_2015-11-26","revision":"2015-11-26","schema":"/rests/modules/aaa-cert?revision=2015-11-26","namespace":"urn:opendaylight:yang:aaa:cert","conformance-type":"import"},{"name":"openflow-action_2015-02-03","revision":"2015-02-03","schema":"/rests/modules/openflow-action?revision=2015-02-03","namespace":"urn:opendaylight:openflow:common:action","conformance-type":"import"},{"name":"openflow-approved-extensions_2016-08-02","revision":"2016-08-02","schema":"/rests/modules/openflow-approved-extensions?revision=2016-08-02","namespace":"urn:opendaylight:openflow:approved:extensions","conformance-type":"import"},{"name":"nc-notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/nc-notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netmod:notification","conformance-type":"import"},{"name":"ietf-netconf-nmda_2019-01-07","revision":"2019-01-07","schema":"/rests/modules/ietf-netconf-nmda?revision=2019-01-07","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-nmda","conformance-type":"import","feature":["with-defaults","origin"]},{"name":"ietf-tcp-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-common","conformance-type":"import","feature":["keepalives-supported"]},{"name":"network-topology_2013-10-21","revision":"2013-10-21","schema":"/rests/modules/network-topology?revision=2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:network-topology","conformance-type":"import"},{"name":"aaa-encrypt-service-config_2024-02-02","revision":"2024-02-02","schema":"/rests/modules/aaa-encrypt-service-config?revision=2024-02-02","namespace":"config:aaa:authn:encrypt:service:config","conformance-type":"import"},{"name":"openflow-instruction_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-instruction?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:instruction","conformance-type":"import"},{"name":"ietf-tls-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-client","conformance-type":"import","feature":["client-ident-x509-cert","server-auth-x509-cert"]},{"name":"opendaylight-group-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-group-statistics?revision=2013-11-11","namespace":"urn:opendaylight:group:statistics","conformance-type":"import"},{"name":"cluster-admin_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/cluster-admin?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:cluster:admin","conformance-type":"import"},{"name":"opendaylight-flow-statistics_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-flow-statistics?revision=2013-08-19","namespace":"urn:opendaylight:flow:statistics","conformance-type":"import"},{"name":"opendaylight-table-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-table-types?revision=2013-10-26","namespace":"urn:opendaylight:table:types","conformance-type":"import"},{"name":"forwarding-rules-manager-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/forwarding-rules-manager-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:forwardingrules-manager:config","conformance-type":"import"},{"name":"odl-srm-types_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-types?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:types","conformance-type":"import"},{"name":"ietf-x509-cert-to-name_2014-12-10","revision":"2014-12-10","schema":"/rests/modules/ietf-x509-cert-to-name?revision=2014-12-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-x509-cert-to-name","conformance-type":"import"},{"name":"flow-node-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-node-inventory?revision=2013-08-19","namespace":"urn:opendaylight:flow:inventory","conformance-type":"import"},{"name":"flow-errors_2013-11-16","revision":"2013-11-16","schema":"/rests/modules/flow-errors?revision=2013-11-16","namespace":"urn:opendaylight:flow:errors","conformance-type":"import"},{"name":"ietf-netconf_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:netconf:base:1.0","conformance-type":"import","feature":["xpath","url","rollback-on-error","validate","candidate","confirmed-commit","startup","writable-running"]},{"name":"iana-ssh-public-key-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-public-key-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-public-key-algs","conformance-type":"import"},{"name":"aaa-cert-mdsal_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/aaa-cert-mdsal?revision=2016-03-21","namespace":"urn:opendaylight:yang:aaa:cert:mdsal","conformance-type":"import"},{"name":"odl-device-notification_2024-02-18","revision":"2024-02-18","schema":"/rests/modules/odl-device-notification?revision=2024-02-18","namespace":"urn:opendaylight:device:notification","conformance-type":"import"},{"name":"ietf-origin_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-origin?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-origin","conformance-type":"import"},{"name":"openflow-augments_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-augments?revision=2015-02-25","namespace":"urn:opendaylight:openflow:augments","conformance-type":"import"},{"name":"iana-ssh-encryption-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-encryption-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-encryption-algs","conformance-type":"import"},{"name":"ietf-truststore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-truststore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-truststore","conformance-type":"import","feature":["inline-definitions-supported"]},{"name":"distributed-datastore-provider_2025-01-30","revision":"2025-01-30","schema":"/rests/modules/distributed-datastore-provider?revision=2025-01-30","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:distributed-datastore-provider","conformance-type":"import"},{"name":"opendaylight-group-types_2013-10-18","revision":"2013-10-18","schema":"/rests/modules/opendaylight-group-types?revision=2013-10-18","namespace":"urn:opendaylight:group:types","conformance-type":"import"},{"name":"sal-remote-augment_2023-11-03","revision":"2023-11-03","schema":"/rests/modules/sal-remote-augment?revision=2023-11-03","namespace":"urn:sal:restconf:event:subscription","conformance-type":"import"},{"name":"opendaylight-ipv6-arbitrary-bitmask-fields_2016-02-24","revision":"2016-02-24","schema":"/rests/modules/opendaylight-ipv6-arbitrary-bitmask-fields?revision=2016-02-24","namespace":"urn:opendaylight:opendaylight-ipv6-arbitrary-bitmask-fields","conformance-type":"import"},{"name":"sal-flows-batch_2016-03-14","revision":"2016-03-14","schema":"/rests/modules/sal-flows-batch?revision=2016-03-14","namespace":"urn:opendaylight:flows:service","conformance-type":"import"},{"name":"ietf-tls-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-common","conformance-type":"import","feature":["hello-params","tls12","tls13"]},{"name":"openflow-types_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-types?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:types","conformance-type":"import"},{"name":"ietf-netconf-with-defaults_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf-with-defaults?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults","conformance-type":"import"},{"name":"odl-srm-ops_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-ops?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:ops","conformance-type":"import"},{"name":"odl-general-entity_2015-09-30","revision":"2015-09-30","schema":"/rests/modules/odl-general-entity?revision=2015-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:mdsal:core:general-entity","conformance-type":"import"},{"name":"iana-ssh-key-exchange-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-key-exchange-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-key-exchange-algs","conformance-type":"import"},{"name":"node-ssl-connection-error_2019-07-23","revision":"2019-07-23","schema":"/rests/modules/node-ssl-connection-error?revision=2019-07-23","namespace":"urn:opendaylight:node-ssl-connection-error:service","conformance-type":"import"},{"name":"openflow-protocol_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-protocol?revision=2013-07-31","namespace":"urn:opendaylight:openflow:protocol","conformance-type":"import"},{"name":"ietf-udp-server_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-server?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-server","conformance-type":"import"},{"name":"ietf-keystore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-keystore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-keystore","conformance-type":"import","feature":["asymmetric-keys","inline-definitions-supported"]},{"name":"aaa_2016-12-14","revision":"2016-12-14","schema":"/rests/modules/aaa?revision=2016-12-14","namespace":"urn:opendaylight:params:xml:ns:yang:aaa","conformance-type":"import"},{"name":"aaa-cert-rpc_2015-12-15","revision":"2015-12-15","schema":"/rests/modules/aaa-cert-rpc?revision=2015-12-15","namespace":"urn:opendaylight:yang:aaa:cert:rpc","conformance-type":"import"},{"name":"system-notifications_2013-09-27","revision":"2013-09-27","schema":"/rests/modules/system-notifications?revision=2013-09-27","namespace":"urn:opendaylight:openflow:system","conformance-type":"import"},{"name":"sal-flat-batch_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/sal-flat-batch?revision=2016-03-21","namespace":"urn:opendaylight:flat-batch:service","conformance-type":"import"},{"name":"notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netconf:notification:1.0","conformance-type":"import"},{"name":"sal-remote_2014-01-14","revision":"2014-01-14","schema":"/rests/modules/sal-remote?revision=2014-01-14","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:remote","conformance-type":"import"},{"name":"yang-ext_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/yang-ext?revision=2013-07-09","namespace":"urn:opendaylight:yang:extension:yang-ext","conformance-type":"import"},{"name":"opendaylight-multipart-types_2017-01-12","revision":"2017-01-12","schema":"/rests/modules/opendaylight-multipart-types?revision=2017-01-12","namespace":"urn:opendaylight:multipart:types","conformance-type":"import"},{"name":"opendaylight-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-inventory?revision=2013-08-19","namespace":"urn:opendaylight:inventory","conformance-type":"import"},{"name":"sal-queue_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-queue?revision=2015-03-05","namespace":"urn:opendaylight:queue:service","conformance-type":"import"},{"name":"sal-groups-batch_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/sal-groups-batch?revision=2016-03-15","namespace":"urn:opendaylight:groups:service","conformance-type":"import"},{"name":"arbitrator-reconcile_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/arbitrator-reconcile?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:arbitrator-reconcile:service","conformance-type":"import"},{"name":"ietf-yang-metadata_2016-08-05","revision":"2016-08-05","schema":"/rests/modules/ietf-yang-metadata?revision=2016-08-05","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-metadata","conformance-type":"import"},{"name":"opendaylight-arbitrary-bitmask-fields_2016-01-30","revision":"2016-01-30","schema":"/rests/modules/opendaylight-arbitrary-bitmask-fields?revision=2016-01-30","namespace":"urn:opendaylight:arbitrary:bitmask:fields","conformance-type":"import"},{"name":"ietf-udp-client_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-client?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-client","conformance-type":"import","feature":["local-binding"]},{"name":"opendaylight-meter-types_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/opendaylight-meter-types?revision=2013-09-18","namespace":"urn:opendaylight:meter:types","conformance-type":"import"},{"name":"opendaylight-action-types_2013-11-12","revision":"2013-11-12","schema":"/rests/modules/opendaylight-action-types?revision=2013-11-12","namespace":"urn:opendaylight:action:types","conformance-type":"import"},{"name":"sal-role_2015-07-27","revision":"2015-07-27","schema":"/rests/modules/sal-role?revision=2015-07-27","namespace":"urn:opendaylight:role:service","conformance-type":"import"},{"name":"openflow-provider-config_2016-05-10","revision":"2016-05-10","schema":"/rests/modules/openflow-provider-config?revision=2016-05-10","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:provider:config","conformance-type":"import"},{"name":"odl-serviceutils-upgrade_2018-07-02","revision":"2018-07-02","schema":"/rests/modules/odl-serviceutils-upgrade?revision=2018-07-02","namespace":"urn:opendaylight:serviceutils:upgrade","conformance-type":"import"},{"name":"opendaylight-match-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-match-types?revision=2013-10-26","namespace":"urn:opendaylight:model:match:types","conformance-type":"import"},{"name":"ietf-restconf-server_2024-08-14","revision":"2024-08-14","schema":"/rests/modules/ietf-restconf-server?revision=2024-08-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-server","conformance-type":"import","feature":["http-listen","https-listen"]},{"name":"reconciliation-result-state_2017-07-13","revision":"2017-07-13","schema":"/rests/modules/reconciliation-result-state?revision=2017-07-13","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:rf:state","conformance-type":"import"},{"name":"onf-extensions_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/onf-extensions?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf","conformance-type":"import"},{"name":"sal-table_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/sal-table?revision=2013-10-26","namespace":"urn:opendaylight:table:service","conformance-type":"import"},{"name":"iana-http-versions_2026-02-04","revision":"2026-02-04","schema":"/rests/modules/iana-http-versions?revision=2026-02-04","namespace":"urn:ietf:params:xml:ns:yang:iana-http-versions","conformance-type":"import"},{"name":"opendaylight-direct-statistics_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/opendaylight-direct-statistics?revision=2016-05-11","namespace":"urn:opendaylight:direct:statistics","conformance-type":"import"},{"name":"opendaylight-port-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-port-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:port","conformance-type":"import"},{"name":"sal-async-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/sal-async-config?revision=2017-06-19","namespace":"urn:opendaylight:async-config:service","conformance-type":"import"},{"name":"aaa-password-service-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-password-service-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:password:service:config","conformance-type":"import"},{"name":"ietf-yang-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-yang-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-types","conformance-type":"import"},{"name":"opendaylight-queue-statistics_2013-12-16","revision":"2013-12-16","schema":"/rests/modules/opendaylight-queue-statistics?revision=2013-12-16","namespace":"urn:opendaylight:queue:statistics","conformance-type":"import"},{"name":"sal-bundle_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/sal-bundle?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf:bundle:service","conformance-type":"import"},{"name":"ietf-restconf-subscribed-notifications_2019-11-17","revision":"2019-11-17","schema":"/rests/modules/ietf-restconf-subscribed-notifications?revision=2019-11-17","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-subscribed-notifications","conformance-type":"import"},{"name":"sal-meters-batch_2016-03-16","revision":"2016-03-16","schema":"/rests/modules/sal-meters-batch?revision=2016-03-16","namespace":"urn:opendaylight:meters:service","conformance-type":"import"},{"name":"odl-entity-owners","revision":"","schema":"/rests/modules/odl-entity-owners","namespace":"urn:opendaylight:params:xml:ns:yang:controller:entity-owners","conformance-type":"import"},{"name":"sal-experimenter-mp-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-mp-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-mp-message:service","conformance-type":"import"},{"name":"packet-processing_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/packet-processing?revision=2013-07-09","namespace":"urn:opendaylight:packet:service","conformance-type":"import"},{"name":"openflow-configuration_2014-06-30","revision":"2014-06-30","schema":"/rests/modules/openflow-configuration?revision=2014-06-30","namespace":"urn:opendaylight:openflow:config","conformance-type":"import"},{"name":"odl-srm-rpcs_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-rpcs?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:rpc","conformance-type":"import"},{"name":"ietf-netconf-acm_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-netconf-acm?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-acm","conformance-type":"import"},{"name":"iana-crypt-hash_2014-08-06","revision":"2014-08-06","schema":"/rests/modules/iana-crypt-hash?revision=2014-08-06","namespace":"urn:ietf:params:xml:ns:yang:iana-crypt-hash","conformance-type":"import","feature":["crypt-hash-sha-512","crypt-hash-sha-256","crypt-hash-md5"]},{"name":"openflow-extensible-match_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-extensible-match?revision=2015-02-25","namespace":"urn:opendaylight:openflow:oxm","conformance-type":"import"}],"module-set-id":"2"}}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:01.577275" elapsed="0.003194"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:01.576591" elapsed="0.003946"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:01.576515" elapsed="0.004072"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:01.583238" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:01.580975" elapsed="0.002310"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:01.580684" elapsed="0.002661"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:01.580654" elapsed="0.002740"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:01.584316" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:01.583746" elapsed="0.000649"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:01.584820" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:01.584510" elapsed="0.000390"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:58:01.585549" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:58:01.585179" elapsed="0.000397"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:01.584948" elapsed="0.000690"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:01.584477" elapsed="0.001207"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:01.586587" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:01.586020" elapsed="0.000614"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:01.587042" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:01.586743" elapsed="0.000378"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:58:01.587702" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:58:01.587400" elapsed="0.000328"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:01.587188" elapsed="0.000599"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:01.586712" elapsed="0.001120"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:58:01.588161" elapsed="0.000476"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:58:01.589435" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:01.588980" elapsed="0.000502"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:58:01.589812" elapsed="0.002299"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:58:01.573761" elapsed="0.018447"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:58:01.592611" elapsed="0.000039"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:58:01.592377" elapsed="0.000359"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:01.592357" elapsed="0.000416"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:58:01.603231" level="INFO">${text_normalized} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:58:01.592965" elapsed="0.010312"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:58:01.603414" elapsed="0.000039"/>
</return>
<msg time="2026-04-08T00:58:01.603660" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:58:01.541854" elapsed="0.061834"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:58:01.603753" elapsed="0.000027"/>
</return>
<msg time="2026-04-08T00:58:01.603907" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="PASS" start="2026-04-08T00:58:01.402711" elapsed="0.201224"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Json_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:01.604293" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:01.604020" elapsed="0.000386"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:01.604002" elapsed="0.000429"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:58:01.604464" elapsed="0.000026"/>
</return>
<arg>session=${session}</arg>
<arg>folder=${RESTCONF_MODULES_DIR}</arg>
<arg>verify=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Add arguments sensible for JSON data, return Get_Templated response text.
Optionally, verification against JSON data (may be iterated) is called.
Only subset of JSON data is verified and returned if JMES path is specified in
file ${folder}/jmespath.expr.</doc>
<status status="PASS" start="2026-04-08T00:58:01.398654" elapsed="0.205934"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:01.394672" elapsed="0.209975"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:01.394654" elapsed="0.210018"/>
</if>
<kw name="Resolve_Shard_Type_Class" owner="ClusterManagement">
<if>
<branch type="IF" condition="'${shard_type}' == 'config'">
<return>
<value>DistributedConfigDatastore</value>
<status status="PASS" start="2026-04-08T00:58:01.605299" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-08T00:58:01.605189" elapsed="0.000169"/>
</branch>
<branch type="ELSE IF" condition="'${shard_type}' == 'operational'">
<return>
<value>DistributedOperationalDatastore</value>
<status status="NOT RUN" start="2026-04-08T00:58:01.605418" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:58:01.605382" elapsed="0.000074"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:01.605154" elapsed="0.000324"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized shard type: ${shard_type}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:01.605625" elapsed="0.000022"/>
</kw>
<msg time="2026-04-08T00:58:01.605744" level="INFO">${type_class} = DistributedConfigDatastore</msg>
<var>${type_class}</var>
<arg>shard_type=${shard_type}</arg>
<doc>Simple lookup for class name corresponding to desired type.</doc>
<status status="PASS" start="2026-04-08T00:58:01.604899" elapsed="0.000870"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:01.606437" level="INFO">${cluster_index} = 1</msg>
<var>${cluster_index}</var>
<arg>${member_index}+${NODE_ROLE_INDEX_START}-1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:01.605935" elapsed="0.000530"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:58:01.607079" level="INFO">${uri} = jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-inventory-config,type=DistributedConfigDatastore</msg>
<var>${uri}</var>
<arg>${JOLOKIA_READ_URI}:Category=Shards,name=member-${cluster_index}-shard-${shard_name}-${shard_type},type=${type_class}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:58:01.606621" elapsed="0.000485"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:01.612620" level="INFO">jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-inventory-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:01.612350" elapsed="0.000317"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:01.613098" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:01.612834" elapsed="0.000309"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:58:01.627748" level="INFO">GET Request : url=http://10.30.170.48:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-inventory-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-inventory-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:58:01.627986" level="INFO">GET Response : url=http://10.30.170.48:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-inventory-config,type=DistributedConfigDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Wed, 08 Apr 2026 00:58:01 GMT', 'Expires': 'Tue, 07 Apr 2026 23:58:01 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-1-shard-inventory-config,type=DistributedConfigDatastore","type":"read"},"value":{"ReadWriteTransactionCount":0,"SnapshotIndex":44,"InMemoryJournalLogSize":1,"ReplicatedToAllIndex":44,"Leader":"member-1-shard-inventory-config","LastIndex":45,"RaftState":"Leader","LastApplied":45,"LastCommittedTransactionTime":"1970-01-01 00:00:00.000","PeerAddresses":"member-2-shard-inventory-config: pekko:\/\/opendaylight-cluster-data@10.30.170.131:2550\/user\/shardmanager-config\/member-2-shard-inventory-config, member-3-shard-inventory-config: pekko:\/\/opendaylight-cluster-data@10.30.171.110:2550\/user\/shardmanager-config\/member-3-shard-inventory-config","LastLogIndex":45,"LastLeadershipChangeTime":"2026-04-08 00:57:11.121","FollowerInitialSyncStatus":false,"FollowerInfo":[{"timeSinceLastActivity":"00:00:00.069","active":true,"matchIndex":45,"voting":true,"id":"member-2-shard-inventory-config","nextIndex":46},{"timeSinceLastActivity":"00:00:00.068","active":true,"matchIndex":45,"voting":true,"id":"member-3-shard-inventory-config","nextIndex":46}],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"1.867 ms","CurrentTerm":4,"LastTerm":3,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-inventory-config","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":0,"TxCohortCacheSize":0,"PeerVotingStates":"member-2-shard-inventory-config: true, member-3-shard-inventory-config: true","LastLogTerm":3,"StatRetrievalError":null,"CommitIndex":45,"SnapshotTerm":3,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-1-shard-inventory-config","LeadershipChangeCount":1,"InMemoryJournalDataSize":2208},"timestamp":1775609881,"status":200} 
 </msg>
<msg time="2026-04-08T00:58:01.628420" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:58:01.615213" elapsed="0.013276"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:01.613245" elapsed="0.015345"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:01.629038" elapsed="0.000054"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:01.628650" elapsed="0.000576"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:01.613225" elapsed="0.016057"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:01.638242" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-1-shard-inventory-config,type=DistributedConfigDatastore","type":"read"},"value":{"ReadWriteTransactionCount":0,"SnapshotIndex":44,"InMemoryJournalLogSize":1,"ReplicatedToAllIndex":44,"Leader":"member-1-shard-inventory-config","LastIndex":45,"RaftState":"Leader","LastApplied":45,"LastCommittedTransactionTime":"1970-01-01 00:00:00.000","PeerAddresses":"member-2-shard-inventory-config: pekko:\/\/opendaylight-cluster-data@10.30.170.131:2550\/user\/shardmanager-config\/member-2-shard-inventory-config, member-3-shard-inventory-config: pekko:\/\/opendaylight-cluster-data@10.30.171.110:2550\/user\/shardmanager-config\/member-3-shard-inventory-config","LastLogIndex":45,"LastLeadershipChangeTime":"2026-04-08 00:57:11.121","FollowerInitialSyncStatus":false,"FollowerInfo":[{"timeSinceLastActivity":"00:00:00.069","active":true,"matchIndex":45,"voting":true,"id":"member-2-shard-inventory-config","nextIndex":46},{"timeSinceLastActivity":"00:00:00.068","active":true,"matchIndex":45,"voting":true,"id":"member-3-shard-inventory-config","nextIndex":46}],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"1.867 ms","CurrentTerm":4,"LastTerm":3,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-inventory-config","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":0,"TxCohortCacheSize":0,"PeerVotingStates":"member-2-shard-inventory-config: true, member-3-shard-inventory-config: true","LastLogTerm":3,"StatRetrievalError":null,"CommitIndex":45,"SnapshotTerm":3,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-1-shard-inventory-config","LeadershipChangeCount":1,"InMemoryJournalDataSize":2208},"timestamp":1775609881,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:01.632398" elapsed="0.005991"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:01.631654" elapsed="0.006827"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:01.631597" elapsed="0.006913"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:01.641531" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:01.638878" elapsed="0.002786"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:01.638571" elapsed="0.003184"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:01.638553" elapsed="0.003230"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:01.642552" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:01.641949" elapsed="0.000631"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:01.643313" elapsed="0.000090"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:01.642687" elapsed="0.000826"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:58:01.644804" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:58:01.644011" elapsed="0.000836"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:01.643543" elapsed="0.001407"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:01.642667" elapsed="0.002309"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:01.645768" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:01.645200" elapsed="0.000595"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:01.646550" elapsed="0.000079"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:01.645903" elapsed="0.000831"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:58:01.648030" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:58:01.647252" elapsed="0.000821"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:01.646762" elapsed="0.001433"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:01.645882" elapsed="0.002342"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:58:01.648382" elapsed="0.000883"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:58:01.650025" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:01.649494" elapsed="0.000558"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:58:01.650268" elapsed="0.002531"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:58:01.630564" elapsed="0.022345"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:58:01.653100" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:58:01.652986" elapsed="0.000400"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:01.652966" elapsed="0.000451"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:58:01.669144" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-1-shard-inventory-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 177560...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:58:01.653585" elapsed="0.015897"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:58:01.669553" elapsed="0.000040"/>
</return>
<msg time="2026-04-08T00:58:01.669797" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-1-shard-inventory-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 177560...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:58:01.608147" elapsed="0.061679"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:58:01.669886" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:58:01.670044" level="INFO">${data_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-1-shard-inventory-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 177560...</msg>
<var>${data_text}</var>
<arg>uri=${uri}</arg>
<arg>session=${session}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-08T00:58:01.607468" elapsed="0.062603"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:01.671415" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-1-shard-inventory-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1775609881, 'valu...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:01.670890" elapsed="0.000555"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-08T00:58:01.671498" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:58:01.671676" level="INFO">${data_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-1-shard-inventory-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1775609881, 'valu...</msg>
<var>${data_object}</var>
<arg>${data_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-08T00:58:01.670394" elapsed="0.001309"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:58:01.672068" level="INFO">${value} = {'AbortTransactionsCount': 0, 'CommitIndex': 45, 'CommittedTransactionsCount': 0, 'CurrentTerm': 4, 'FailedReadTransactionsCount': 0, 'FailedTransactionsCount': 0, 'FollowerInfo': [{'active': True, 'i...</msg>
<var>${value}</var>
<arg>${data_object}</arg>
<arg>value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:58:01.671862" elapsed="0.000233"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:58:01.672474" level="INFO">${raft_property} = Leader</msg>
<var>${raft_property}</var>
<arg>${value}</arg>
<arg>${property}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:58:01.672269" elapsed="0.000230"/>
</kw>
<return>
<value>${raft_property}</value>
<status status="PASS" start="2026-04-08T00:58:01.672547" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:58:01.672702" level="INFO">${raft_state} = Leader</msg>
<var>${raft_state}</var>
<arg>RaftState</arg>
<arg>${shard_name}</arg>
<arg>${shard_type}</arg>
<arg>${member_index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft property.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T00:58:01.393056" elapsed="0.279673"/>
</kw>
<return>
<value>${raft_state}</value>
<status status="PASS" start="2026-04-08T00:58:01.672789" elapsed="0.000027"/>
</return>
<msg time="2026-04-08T00:58:01.672959" level="INFO">${raft_state} = Leader</msg>
<var>${raft_state}</var>
<arg>shard_name=${shard_name}</arg>
<arg>shard_type=${ds_type}</arg>
<arg>member_index=${index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft status.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T00:58:01.392344" elapsed="0.280651"/>
</kw>
<if>
<branch type="IF" condition="'Follower' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${follower_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:01.673748" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:01.673093" elapsed="0.000722"/>
</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="PASS" start="2026-04-08T00:58:01.674101" elapsed="0.000480"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:01.673847" elapsed="0.000778"/>
</branch>
<branch type="ELSE IF" condition="${validate}">
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized Raft state: ${raft_state}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:01.674826" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:01.674652" elapsed="0.000234"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:01.673071" elapsed="0.001839"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T00:58:01.392161" elapsed="0.282778"/>
</iter>
<iter>
<kw name="Get_Raft_State_Of_Shard_At_Member" owner="ClusterManagement">
<kw name="Get_Raft_Property_From_Shard_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:58:01.677631" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:58:01.677071" elapsed="0.000588"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:58:01.677705" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:58:01.677854" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:58:01.676729" elapsed="0.001151"/>
</kw>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Get_As_Json_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:58:01.748216" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:58:01.747814" elapsed="0.000431"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:58:01.749058" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:58:01.748798" elapsed="0.000346">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-08T00:58:01.749259" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:58:01.748408" elapsed="0.000876"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:58:01.749830" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:58:01.749447" elapsed="0.000410"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T00:58:01.750160" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-08T00:58:01.750369" level="INFO">${template} = /rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T00:58:01.750014" elapsed="0.000381"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:01.750795" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:01.750550" elapsed="0.000289"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:01.751790" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:01.751537" elapsed="0.000297"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-08T00:58:01.752282" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-08T00:58:01.751989" elapsed="0.000319"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:01.752632" elapsed="0.000021"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:01.752830" elapsed="0.000024"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:01.753000" elapsed="0.000021"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-08T00:58:01.752501" elapsed="0.000556"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-08T00:58:01.752361" elapsed="0.000724"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-08T00:58:01.753129" elapsed="0.000031"/>
</return>
<msg time="2026-04-08T00:58:01.753304" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-08T00:58:01.751218" elapsed="0.002112"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:01.750908" elapsed="0.002454"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:01.753530" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:01.753386" elapsed="0.000198"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:01.750888" elapsed="0.002717"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:01.754219" level="INFO">${final_text} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:01.753742" elapsed="0.000506"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T00:58:01.754307" 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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="PASS" start="2026-04-08T00:58:01.747123" elapsed="0.007350"/>
</kw>
<msg time="2026-04-08T00:58:01.754542" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:58:01.734258" elapsed="0.020423"/>
</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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:01.767771" elapsed="0.000053"/>
</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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:01.780789" elapsed="0.000051"/>
</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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:01.793890" elapsed="0.000052"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:01.794263" elapsed="0.000077"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:01.794575" elapsed="0.000075"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:01.795410" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:01.795166" elapsed="0.000311"/>
</branch>
<status status="NOT RUN" start="2026-04-08T00:58:01.795136" elapsed="0.000379"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:01.795774" elapsed="0.000035"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:01.796073" elapsed="0.000034"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:01.796388" elapsed="0.000038"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-08T00:58:01.795071" elapsed="0.001403"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-08T00:58:01.794807" elapsed="0.001736"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:01.796853" elapsed="0.000074"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-08T00:58:01.797095" elapsed="0.000018"/>
</return>
<msg time="2026-04-08T00:58:01.797295" level="INFO">${uri} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-08T00:58:01.724221" elapsed="0.073101"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:58:01.799295" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:58:01.798973" elapsed="0.000388">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-08T00:58:01.799510" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:58:01.798153" elapsed="0.001397"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:01.800887" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:01.799698" elapsed="0.001275"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:58:01.801829" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:58:01.801337" elapsed="0.000539"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:01.801012" elapsed="0.000913"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:01.799678" elapsed="0.002281"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:58:01.804800" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:58:01.802159" elapsed="0.002681"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-08T00:58:01.804978" elapsed="0.000032"/>
</return>
<msg time="2026-04-08T00:58:01.805235" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:58:01.797701" elapsed="0.007560"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:58:01.807243" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:58:01.806919" elapsed="0.000390">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-08T00:58:01.807459" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:58:01.806100" elapsed="0.001398"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-08T00:58:01.807938" elapsed="0.000050"/>
</return>
<status status="PASS" start="2026-04-08T00:58:01.807647" elapsed="0.000429"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:01.807626" elapsed="0.000488"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:01.808327" elapsed="0.000076"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:01.808644" elapsed="0.000075"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-08T00:58:01.808840" elapsed="0.000017"/>
</return>
<msg time="2026-04-08T00:58:01.822405" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:58:01.805611" elapsed="0.016823"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:01.824928" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:01.824345" elapsed="0.000714"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:01.826112" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:01.825535" elapsed="0.000726"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:58:01.864914" level="INFO">GET Request : url=http://10.30.170.131:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 path_url=/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01eq5fxmndxspk37g8qgkyja672.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:58:01.865872" level="INFO">GET Response : url=http://10.30.170.131:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Transfer-Encoding': 'chunked'} 
 body={"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","encrypted-passwords","hidden-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-private-keys","asymmetrically-encrypted-value-format","cleartext-private-keys","cms-encrypted-data-format","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["client-ident-hostbased","ssh-client-keepalives","client-ident-password","client-ident-publickey"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-ex... (set the log level to DEBUG or TRACE to see the full content) 
 </msg>
<msg time="2026-04-08T00:58:01.866655" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:58:01.829573" elapsed="0.037193"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:01.826387" elapsed="0.040506"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:01.868906" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:01.866982" elapsed="0.002057"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:01.826367" elapsed="0.042721"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:01.876274" level="INFO">{"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","encrypted-passwords","hidden-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-private-keys","asymmetrically-encrypted-value-format","cleartext-private-keys","cms-encrypted-data-format","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["client-ident-hostbased","ssh-client-keepalives","client-ident-password","client-ident-publickey"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-experimenter-types?revision=2015-10-20","namespace":"urn:opendaylight:openflowplugin:experimenter:types","conformance-type":"import"},{"name":"ietf-ip_2018-02-22","revision":"2018-02-22","schema":"/rests/modules/ietf-ip?revision=2018-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-ip","conformance-type":"import","feature":["ipv6-privacy-autoconf","ipv4-non-contiguous-netmasks"]},{"name":"ietf-tcp-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-client","conformance-type":"import","feature":["local-binding-supported","tcp-client-keepalives"]},{"name":"node-config_2014-10-15","revision":"2014-10-15","schema":"/rests/modules/node-config?revision=2014-10-15","namespace":"urn:opendaylight:module:config","conformance-type":"import"},{"name":"ietf-restconf_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf","conformance-type":"import"},{"name":"ietf-datastores_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-datastores?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-datastores","conformance-type":"import"},{"name":"ietf-yang-patch_2017-02-22","revision":"2017-02-22","schema":"/rests/modules/ietf-yang-patch?revision=2017-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-patch","conformance-type":"import"},{"name":"sal-group_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-group?revision=2013-09-18","namespace":"urn:opendaylight:group:service","conformance-type":"import"},{"name":"odl-codegen-extensions_2024-06-27","revision":"2024-06-27","schema":"/rests/modules/odl-codegen-extensions?revision=2024-06-27","namespace":"urn:opendaylight:yang:extension:codegen","conformance-type":"import"},{"name":"sal-meter_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-meter?revision=2013-09-18","namespace":"urn:opendaylight:meter:service","conformance-type":"import"},{"name":"ietf-interfaces_2018-02-20","revision":"2018-02-20","schema":"/rests/modules/ietf-interfaces?revision=2018-02-20","namespace":"urn:ietf:params:xml:ns:yang:ietf-interfaces","conformance-type":"import","feature":["pre-provisioning","if-mib","arbitrary-names"]},{"name":"opendaylight-l2-types_2013-08-27","revision":"2013-08-27","schema":"/rests/modules/opendaylight-l2-types?revision=2013-08-27","namespace":"urn:opendaylight:l2:types","conformance-type":"import"},{"name":"opendaylight-flow-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-flow-types?revision=2013-10-26","namespace":"urn:opendaylight:flow:types","conformance-type":"import"},{"name":"lldp-speaker-config_2016-05-12","revision":"2016-05-12","schema":"/rests/modules/lldp-speaker-config?revision=2016-05-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker:config","conformance-type":"import"},{"name":"aaa-cert_2015-11-26","revision":"2015-11-26","schema":"/rests/modules/aaa-cert?revision=2015-11-26","namespace":"urn:opendaylight:yang:aaa:cert","conformance-type":"import"},{"name":"openflow-action_2015-02-03","revision":"2015-02-03","schema":"/rests/modules/openflow-action?revision=2015-02-03","namespace":"urn:opendaylight:openflow:common:action","conformance-type":"import"},{"name":"openflow-approved-extensions_2016-08-02","revision":"2016-08-02","schema":"/rests/modules/openflow-approved-extensions?revision=2016-08-02","namespace":"urn:opendaylight:openflow:approved:extensions","conformance-type":"import"},{"name":"nc-notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/nc-notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netmod:notification","conformance-type":"import"},{"name":"ietf-netconf-nmda_2019-01-07","revision":"2019-01-07","schema":"/rests/modules/ietf-netconf-nmda?revision=2019-01-07","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-nmda","conformance-type":"import","feature":["with-defaults","origin"]},{"name":"ietf-tcp-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-common","conformance-type":"import","feature":["keepalives-supported"]},{"name":"network-topology_2013-10-21","revision":"2013-10-21","schema":"/rests/modules/network-topology?revision=2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:network-topology","conformance-type":"import"},{"name":"aaa-encrypt-service-config_2024-02-02","revision":"2024-02-02","schema":"/rests/modules/aaa-encrypt-service-config?revision=2024-02-02","namespace":"config:aaa:authn:encrypt:service:config","conformance-type":"import"},{"name":"openflow-instruction_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-instruction?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:instruction","conformance-type":"import"},{"name":"ietf-tls-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-client","conformance-type":"import","feature":["client-ident-x509-cert","server-auth-x509-cert"]},{"name":"opendaylight-group-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-group-statistics?revision=2013-11-11","namespace":"urn:opendaylight:group:statistics","conformance-type":"import"},{"name":"cluster-admin_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/cluster-admin?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:cluster:admin","conformance-type":"import"},{"name":"opendaylight-flow-statistics_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-flow-statistics?revision=2013-08-19","namespace":"urn:opendaylight:flow:statistics","conformance-type":"import"},{"name":"opendaylight-table-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-table-types?revision=2013-10-26","namespace":"urn:opendaylight:table:types","conformance-type":"import"},{"name":"forwarding-rules-manager-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/forwarding-rules-manager-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:forwardingrules-manager:config","conformance-type":"import"},{"name":"odl-srm-types_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-types?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:types","conformance-type":"import"},{"name":"ietf-x509-cert-to-name_2014-12-10","revision":"2014-12-10","schema":"/rests/modules/ietf-x509-cert-to-name?revision=2014-12-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-x509-cert-to-name","conformance-type":"import"},{"name":"flow-node-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-node-inventory?revision=2013-08-19","namespace":"urn:opendaylight:flow:inventory","conformance-type":"import"},{"name":"flow-errors_2013-11-16","revision":"2013-11-16","schema":"/rests/modules/flow-errors?revision=2013-11-16","namespace":"urn:opendaylight:flow:errors","conformance-type":"import"},{"name":"ietf-netconf_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:netconf:base:1.0","conformance-type":"import","feature":["xpath","url","rollback-on-error","validate","candidate","confirmed-commit","startup","writable-running"]},{"name":"iana-ssh-public-key-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-public-key-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-public-key-algs","conformance-type":"import"},{"name":"aaa-cert-mdsal_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/aaa-cert-mdsal?revision=2016-03-21","namespace":"urn:opendaylight:yang:aaa:cert:mdsal","conformance-type":"import"},{"name":"odl-device-notification_2024-02-18","revision":"2024-02-18","schema":"/rests/modules/odl-device-notification?revision=2024-02-18","namespace":"urn:opendaylight:device:notification","conformance-type":"import"},{"name":"ietf-origin_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-origin?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-origin","conformance-type":"import"},{"name":"openflow-augments_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-augments?revision=2015-02-25","namespace":"urn:opendaylight:openflow:augments","conformance-type":"import"},{"name":"iana-ssh-encryption-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-encryption-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-encryption-algs","conformance-type":"import"},{"name":"ietf-truststore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-truststore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-truststore","conformance-type":"import","feature":["inline-definitions-supported"]},{"name":"distributed-datastore-provider_2025-01-30","revision":"2025-01-30","schema":"/rests/modules/distributed-datastore-provider?revision=2025-01-30","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:distributed-datastore-provider","conformance-type":"import"},{"name":"opendaylight-group-types_2013-10-18","revision":"2013-10-18","schema":"/rests/modules/opendaylight-group-types?revision=2013-10-18","namespace":"urn:opendaylight:group:types","conformance-type":"import"},{"name":"sal-remote-augment_2023-11-03","revision":"2023-11-03","schema":"/rests/modules/sal-remote-augment?revision=2023-11-03","namespace":"urn:sal:restconf:event:subscription","conformance-type":"import"},{"name":"opendaylight-ipv6-arbitrary-bitmask-fields_2016-02-24","revision":"2016-02-24","schema":"/rests/modules/opendaylight-ipv6-arbitrary-bitmask-fields?revision=2016-02-24","namespace":"urn:opendaylight:opendaylight-ipv6-arbitrary-bitmask-fields","conformance-type":"import"},{"name":"sal-flows-batch_2016-03-14","revision":"2016-03-14","schema":"/rests/modules/sal-flows-batch?revision=2016-03-14","namespace":"urn:opendaylight:flows:service","conformance-type":"import"},{"name":"ietf-tls-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-common","conformance-type":"import","feature":["hello-params","tls12","tls13"]},{"name":"openflow-types_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-types?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:types","conformance-type":"import"},{"name":"ietf-netconf-with-defaults_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf-with-defaults?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults","conformance-type":"import"},{"name":"odl-srm-ops_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-ops?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:ops","conformance-type":"import"},{"name":"odl-general-entity_2015-09-30","revision":"2015-09-30","schema":"/rests/modules/odl-general-entity?revision=2015-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:mdsal:core:general-entity","conformance-type":"import"},{"name":"iana-ssh-key-exchange-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-key-exchange-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-key-exchange-algs","conformance-type":"import"},{"name":"node-ssl-connection-error_2019-07-23","revision":"2019-07-23","schema":"/rests/modules/node-ssl-connection-error?revision=2019-07-23","namespace":"urn:opendaylight:node-ssl-connection-error:service","conformance-type":"import"},{"name":"openflow-protocol_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-protocol?revision=2013-07-31","namespace":"urn:opendaylight:openflow:protocol","conformance-type":"import"},{"name":"ietf-udp-server_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-server?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-server","conformance-type":"import"},{"name":"ietf-keystore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-keystore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-keystore","conformance-type":"import","feature":["asymmetric-keys","inline-definitions-supported"]},{"name":"aaa_2016-12-14","revision":"2016-12-14","schema":"/rests/modules/aaa?revision=2016-12-14","namespace":"urn:opendaylight:params:xml:ns:yang:aaa","conformance-type":"import"},{"name":"aaa-cert-rpc_2015-12-15","revision":"2015-12-15","schema":"/rests/modules/aaa-cert-rpc?revision=2015-12-15","namespace":"urn:opendaylight:yang:aaa:cert:rpc","conformance-type":"import"},{"name":"system-notifications_2013-09-27","revision":"2013-09-27","schema":"/rests/modules/system-notifications?revision=2013-09-27","namespace":"urn:opendaylight:openflow:system","conformance-type":"import"},{"name":"sal-flat-batch_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/sal-flat-batch?revision=2016-03-21","namespace":"urn:opendaylight:flat-batch:service","conformance-type":"import"},{"name":"notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netconf:notification:1.0","conformance-type":"import"},{"name":"sal-remote_2014-01-14","revision":"2014-01-14","schema":"/rests/modules/sal-remote?revision=2014-01-14","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:remote","conformance-type":"import"},{"name":"yang-ext_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/yang-ext?revision=2013-07-09","namespace":"urn:opendaylight:yang:extension:yang-ext","conformance-type":"import"},{"name":"opendaylight-multipart-types_2017-01-12","revision":"2017-01-12","schema":"/rests/modules/opendaylight-multipart-types?revision=2017-01-12","namespace":"urn:opendaylight:multipart:types","conformance-type":"import"},{"name":"opendaylight-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-inventory?revision=2013-08-19","namespace":"urn:opendaylight:inventory","conformance-type":"import"},{"name":"sal-queue_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-queue?revision=2015-03-05","namespace":"urn:opendaylight:queue:service","conformance-type":"import"},{"name":"sal-groups-batch_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/sal-groups-batch?revision=2016-03-15","namespace":"urn:opendaylight:groups:service","conformance-type":"import"},{"name":"arbitrator-reconcile_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/arbitrator-reconcile?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:arbitrator-reconcile:service","conformance-type":"import"},{"name":"ietf-yang-metadata_2016-08-05","revision":"2016-08-05","schema":"/rests/modules/ietf-yang-metadata?revision=2016-08-05","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-metadata","conformance-type":"import"},{"name":"opendaylight-arbitrary-bitmask-fields_2016-01-30","revision":"2016-01-30","schema":"/rests/modules/opendaylight-arbitrary-bitmask-fields?revision=2016-01-30","namespace":"urn:opendaylight:arbitrary:bitmask:fields","conformance-type":"import"},{"name":"ietf-udp-client_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-client?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-client","conformance-type":"import","feature":["local-binding"]},{"name":"opendaylight-meter-types_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/opendaylight-meter-types?revision=2013-09-18","namespace":"urn:opendaylight:meter:types","conformance-type":"import"},{"name":"opendaylight-action-types_2013-11-12","revision":"2013-11-12","schema":"/rests/modules/opendaylight-action-types?revision=2013-11-12","namespace":"urn:opendaylight:action:types","conformance-type":"import"},{"name":"sal-role_2015-07-27","revision":"2015-07-27","schema":"/rests/modules/sal-role?revision=2015-07-27","namespace":"urn:opendaylight:role:service","conformance-type":"import"},{"name":"openflow-provider-config_2016-05-10","revision":"2016-05-10","schema":"/rests/modules/openflow-provider-config?revision=2016-05-10","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:provider:config","conformance-type":"import"},{"name":"odl-serviceutils-upgrade_2018-07-02","revision":"2018-07-02","schema":"/rests/modules/odl-serviceutils-upgrade?revision=2018-07-02","namespace":"urn:opendaylight:serviceutils:upgrade","conformance-type":"import"},{"name":"opendaylight-match-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-match-types?revision=2013-10-26","namespace":"urn:opendaylight:model:match:types","conformance-type":"import"},{"name":"ietf-restconf-server_2024-08-14","revision":"2024-08-14","schema":"/rests/modules/ietf-restconf-server?revision=2024-08-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-server","conformance-type":"import","feature":["http-listen","https-listen"]},{"name":"reconciliation-result-state_2017-07-13","revision":"2017-07-13","schema":"/rests/modules/reconciliation-result-state?revision=2017-07-13","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:rf:state","conformance-type":"import"},{"name":"onf-extensions_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/onf-extensions?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf","conformance-type":"import"},{"name":"sal-table_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/sal-table?revision=2013-10-26","namespace":"urn:opendaylight:table:service","conformance-type":"import"},{"name":"iana-http-versions_2026-02-04","revision":"2026-02-04","schema":"/rests/modules/iana-http-versions?revision=2026-02-04","namespace":"urn:ietf:params:xml:ns:yang:iana-http-versions","conformance-type":"import"},{"name":"opendaylight-direct-statistics_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/opendaylight-direct-statistics?revision=2016-05-11","namespace":"urn:opendaylight:direct:statistics","conformance-type":"import"},{"name":"opendaylight-port-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-port-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:port","conformance-type":"import"},{"name":"sal-async-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/sal-async-config?revision=2017-06-19","namespace":"urn:opendaylight:async-config:service","conformance-type":"import"},{"name":"aaa-password-service-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-password-service-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:password:service:config","conformance-type":"import"},{"name":"ietf-yang-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-yang-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-types","conformance-type":"import"},{"name":"opendaylight-queue-statistics_2013-12-16","revision":"2013-12-16","schema":"/rests/modules/opendaylight-queue-statistics?revision=2013-12-16","namespace":"urn:opendaylight:queue:statistics","conformance-type":"import"},{"name":"sal-bundle_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/sal-bundle?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf:bundle:service","conformance-type":"import"},{"name":"ietf-restconf-subscribed-notifications_2019-11-17","revision":"2019-11-17","schema":"/rests/modules/ietf-restconf-subscribed-notifications?revision=2019-11-17","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-subscribed-notifications","conformance-type":"import"},{"name":"sal-meters-batch_2016-03-16","revision":"2016-03-16","schema":"/rests/modules/sal-meters-batch?revision=2016-03-16","namespace":"urn:opendaylight:meters:service","conformance-type":"import"},{"name":"odl-entity-owners","revision":"","schema":"/rests/modules/odl-entity-owners","namespace":"urn:opendaylight:params:xml:ns:yang:controller:entity-owners","conformance-type":"import"},{"name":"sal-experimenter-mp-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-mp-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-mp-message:service","conformance-type":"import"},{"name":"packet-processing_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/packet-processing?revision=2013-07-09","namespace":"urn:opendaylight:packet:service","conformance-type":"import"},{"name":"openflow-configuration_2014-06-30","revision":"2014-06-30","schema":"/rests/modules/openflow-configuration?revision=2014-06-30","namespace":"urn:opendaylight:openflow:config","conformance-type":"import"},{"name":"odl-srm-rpcs_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-rpcs?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:rpc","conformance-type":"import"},{"name":"ietf-netconf-acm_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-netconf-acm?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-acm","conformance-type":"import"},{"name":"iana-crypt-hash_2014-08-06","revision":"2014-08-06","schema":"/rests/modules/iana-crypt-hash?revision=2014-08-06","namespace":"urn:ietf:params:xml:ns:yang:iana-crypt-hash","conformance-type":"import","feature":["crypt-hash-sha-512","crypt-hash-sha-256","crypt-hash-md5"]},{"name":"openflow-extensible-match_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-extensible-match?revision=2015-02-25","namespace":"urn:opendaylight:openflow:oxm","conformance-type":"import"}],"module-set-id":"2"}}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:01.872529" elapsed="0.004100"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:01.872081" elapsed="0.004610"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:01.872036" elapsed="0.004702"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:01.879408" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:01.877120" elapsed="0.002333"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:01.876834" elapsed="0.002678"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:01.876804" elapsed="0.002756"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:01.880449" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:01.879912" elapsed="0.000582"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:01.880902" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:01.880602" elapsed="0.000380"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:58:01.881556" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:58:01.881251" elapsed="0.000331"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:01.881027" elapsed="0.000615"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:01.880572" elapsed="0.001115"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:01.882533" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:01.882013" elapsed="0.000566"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:01.882985" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:01.882688" elapsed="0.000376"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:58:01.883658" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:58:01.883356" elapsed="0.000328"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:01.883110" elapsed="0.000660"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:01.882657" elapsed="0.001161"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:58:01.884137" elapsed="0.000455"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:58:01.885361" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:01.884926" elapsed="0.000480"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:58:01.885731" elapsed="0.002315"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:58:01.870387" elapsed="0.017738"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:58:01.888589" elapsed="0.000037"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:58:01.888389" elapsed="0.000319"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:01.888365" elapsed="0.000379"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:58:01.899096" level="INFO">${text_normalized} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:58:01.888935" elapsed="0.010205"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:58:01.899294" elapsed="0.000032"/>
</return>
<msg time="2026-04-08T00:58:01.899529" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:58:01.822790" elapsed="0.076767"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:58:01.899620" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:58:01.899771" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="PASS" start="2026-04-08T00:58:01.686092" elapsed="0.213706"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Json_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:01.900157" elapsed="0.000041"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:01.899881" elapsed="0.000402"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:01.899863" elapsed="0.000446"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:58:01.900342" elapsed="0.000027"/>
</return>
<arg>session=${session}</arg>
<arg>folder=${RESTCONF_MODULES_DIR}</arg>
<arg>verify=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Add arguments sensible for JSON data, return Get_Templated response text.
Optionally, verification against JSON data (may be iterated) is called.
Only subset of JSON data is verified and returned if JMES path is specified in
file ${folder}/jmespath.expr.</doc>
<status status="PASS" start="2026-04-08T00:58:01.681811" elapsed="0.218655"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:01.677948" elapsed="0.222560"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:01.677930" elapsed="0.222601"/>
</if>
<kw name="Resolve_Shard_Type_Class" owner="ClusterManagement">
<if>
<branch type="IF" condition="'${shard_type}' == 'config'">
<return>
<value>DistributedConfigDatastore</value>
<status status="PASS" start="2026-04-08T00:58:01.901122" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-08T00:58:01.901016" elapsed="0.000190"/>
</branch>
<branch type="ELSE IF" condition="'${shard_type}' == 'operational'">
<return>
<value>DistributedOperationalDatastore</value>
<status status="NOT RUN" start="2026-04-08T00:58:01.901268" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:58:01.901230" elapsed="0.000076"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:01.900999" elapsed="0.000329"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized shard type: ${shard_type}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:01.901474" elapsed="0.000021"/>
</kw>
<msg time="2026-04-08T00:58:01.901591" level="INFO">${type_class} = DistributedConfigDatastore</msg>
<var>${type_class}</var>
<arg>shard_type=${shard_type}</arg>
<doc>Simple lookup for class name corresponding to desired type.</doc>
<status status="PASS" start="2026-04-08T00:58:01.900753" elapsed="0.000864"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:01.902146" level="INFO">${cluster_index} = 2</msg>
<var>${cluster_index}</var>
<arg>${member_index}+${NODE_ROLE_INDEX_START}-1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:01.901780" elapsed="0.000411"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:58:01.902806" level="INFO">${uri} = jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-inventory-config,type=DistributedConfigDatastore</msg>
<var>${uri}</var>
<arg>${JOLOKIA_READ_URI}:Category=Shards,name=member-${cluster_index}-shard-${shard_name}-${shard_type},type=${type_class}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:58:01.902347" elapsed="0.000487"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:01.908252" level="INFO">jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-inventory-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:01.907928" elapsed="0.000372"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:01.908715" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:01.908452" elapsed="0.000307"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:58:01.922235" level="INFO">GET Request : url=http://10.30.170.131:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-inventory-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-inventory-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:58:01.922385" level="INFO">GET Response : url=http://10.30.170.131:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-inventory-config,type=DistributedConfigDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Wed, 08 Apr 2026 00:58:01 GMT', 'Expires': 'Tue, 07 Apr 2026 23:58:01 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-2-shard-inventory-config,type=DistributedConfigDatastore","type":"read"},"value":{"ReadWriteTransactionCount":0,"SnapshotIndex":44,"InMemoryJournalLogSize":1,"ReplicatedToAllIndex":44,"Leader":"member-1-shard-inventory-config","LastIndex":45,"RaftState":"Follower","LastApplied":45,"LastCommittedTransactionTime":"1970-01-01 00:00:00.000","PeerAddresses":"member-1-shard-inventory-config: pekko:\/\/opendaylight-cluster-data@10.30.170.48:2550\/user\/shardmanager-config\/member-1-shard-inventory-config, member-3-shard-inventory-config: pekko:\/\/opendaylight-cluster-data@10.30.171.110:2550\/user\/shardmanager-config\/member-3-shard-inventory-config","LastLogIndex":45,"LastLeadershipChangeTime":"2026-04-08 00:57:11.120","FollowerInitialSyncStatus":true,"FollowerInfo":[],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"2.713 ms","CurrentTerm":4,"LastTerm":3,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-inventory-config","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":0,"TxCohortCacheSize":0,"PeerVotingStates":"member-1-shard-inventory-config: true, member-3-shard-inventory-config: true","LastLogTerm":3,"StatRetrievalError":null,"CommitIndex":45,"SnapshotTerm":3,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-2-shard-inventory-config","LeadershipChangeCount":1,"InMemoryJournalDataSize":2208},"timestamp":1775609881,"status":200} 
 </msg>
<msg time="2026-04-08T00:58:01.922591" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:58:01.910792" elapsed="0.011836"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:01.908827" elapsed="0.013860"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:01.922934" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:01.922724" elapsed="0.000298"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:01.908808" elapsed="0.014243"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:01.928682" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-2-shard-inventory-config,type=DistributedConfigDatastore","type":"read"},"value":{"ReadWriteTransactionCount":0,"SnapshotIndex":44,"InMemoryJournalLogSize":1,"ReplicatedToAllIndex":44,"Leader":"member-1-shard-inventory-config","LastIndex":45,"RaftState":"Follower","LastApplied":45,"LastCommittedTransactionTime":"1970-01-01 00:00:00.000","PeerAddresses":"member-1-shard-inventory-config: pekko:\/\/opendaylight-cluster-data@10.30.170.48:2550\/user\/shardmanager-config\/member-1-shard-inventory-config, member-3-shard-inventory-config: pekko:\/\/opendaylight-cluster-data@10.30.171.110:2550\/user\/shardmanager-config\/member-3-shard-inventory-config","LastLogIndex":45,"LastLeadershipChangeTime":"2026-04-08 00:57:11.120","FollowerInitialSyncStatus":true,"FollowerInfo":[],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"2.713 ms","CurrentTerm":4,"LastTerm":3,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-inventory-config","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":0,"TxCohortCacheSize":0,"PeerVotingStates":"member-1-shard-inventory-config: true, member-3-shard-inventory-config: true","LastLogTerm":3,"StatRetrievalError":null,"CommitIndex":45,"SnapshotTerm":3,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-2-shard-inventory-config","LeadershipChangeCount":1,"InMemoryJournalDataSize":2208},"timestamp":1775609881,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:01.924863" elapsed="0.004060"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:01.924450" elapsed="0.004599"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:01.924424" elapsed="0.004664"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:01.933214" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:01.929647" elapsed="0.003749"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:01.929198" elapsed="0.004287"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:01.929145" elapsed="0.004367"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:01.934231" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:01.933672" elapsed="0.000586"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:01.934937" elapsed="0.000073"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:01.934361" elapsed="0.000749"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:58:01.936411" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:58:01.935633" elapsed="0.000820"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:01.935136" elapsed="0.001415"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:01.934341" elapsed="0.002234"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:01.937452" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:01.936848" elapsed="0.000638"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:01.938196" elapsed="0.000076"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:01.937600" elapsed="0.000773"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:58:01.939626" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:58:01.938854" elapsed="0.000812"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:01.938399" elapsed="0.001365"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:01.937581" elapsed="0.002207"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:58:01.939937" elapsed="0.000754"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:58:01.941427" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:01.940904" elapsed="0.000550"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:58:01.941646" elapsed="0.002567"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:58:01.923759" elapsed="0.020547"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:58:01.944498" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:58:01.944376" elapsed="0.000166"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:01.944358" elapsed="0.000205"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:58:01.959435" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-2-shard-inventory-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 177560...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:58:01.944705" elapsed="0.014761"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:58:01.959518" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:58:01.959672" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-2-shard-inventory-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 177560...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:58:01.903739" elapsed="0.055960"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:58:01.959790" elapsed="0.000027"/>
</return>
<msg time="2026-04-08T00:58:01.959938" level="INFO">${data_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-2-shard-inventory-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 177560...</msg>
<var>${data_text}</var>
<arg>uri=${uri}</arg>
<arg>session=${session}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-08T00:58:01.903043" elapsed="0.056921"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:01.960992" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-2-shard-inventory-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1775609881, 'valu...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:01.960542" elapsed="0.000479"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-08T00:58:01.961070" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:58:01.961274" level="INFO">${data_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-2-shard-inventory-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1775609881, 'valu...</msg>
<var>${data_object}</var>
<arg>${data_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-08T00:58:01.960205" elapsed="0.001097"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:58:01.961656" level="INFO">${value} = {'AbortTransactionsCount': 0, 'CommitIndex': 45, 'CommittedTransactionsCount': 0, 'CurrentTerm': 4, 'FailedReadTransactionsCount': 0, 'FailedTransactionsCount': 0, 'FollowerInfo': [], 'FollowerInitial...</msg>
<var>${value}</var>
<arg>${data_object}</arg>
<arg>value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:58:01.961462" elapsed="0.000221"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:58:01.962032" level="INFO">${raft_property} = Follower</msg>
<var>${raft_property}</var>
<arg>${value}</arg>
<arg>${property}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:58:01.961835" elapsed="0.000223"/>
</kw>
<return>
<value>${raft_property}</value>
<status status="PASS" start="2026-04-08T00:58:01.962105" elapsed="0.000027"/>
</return>
<msg time="2026-04-08T00:58:01.962303" level="INFO">${raft_state} = Follower</msg>
<var>${raft_state}</var>
<arg>RaftState</arg>
<arg>${shard_name}</arg>
<arg>${shard_type}</arg>
<arg>${member_index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft property.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T00:58:01.676110" elapsed="0.286218"/>
</kw>
<return>
<value>${raft_state}</value>
<status status="PASS" start="2026-04-08T00:58:01.962385" elapsed="0.000026"/>
</return>
<msg time="2026-04-08T00:58:01.962531" level="INFO">${raft_state} = Follower</msg>
<var>${raft_state}</var>
<arg>shard_name=${shard_name}</arg>
<arg>shard_type=${ds_type}</arg>
<arg>member_index=${index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft status.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T00:58:01.675367" elapsed="0.287188"/>
</kw>
<if>
<branch type="IF" condition="'Follower' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${follower_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-08T00:58:01.962845" elapsed="0.000188"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:01.962634" elapsed="0.000437"/>
</branch>
<branch type="ELSE IF" condition="'Leader' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${leader_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:01.963474" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:01.963095" elapsed="0.000436"/>
</branch>
<branch type="ELSE IF" condition="${validate}">
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized Raft state: ${raft_state}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:01.963693" elapsed="0.000019"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:01.963554" elapsed="0.000189"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:01.962617" elapsed="0.001147"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T00:58:01.675147" elapsed="0.288641"/>
</iter>
<iter>
<kw name="Get_Raft_State_Of_Shard_At_Member" owner="ClusterManagement">
<kw name="Get_Raft_Property_From_Shard_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:58:01.966105" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:58:01.965808" elapsed="0.000324"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:58:01.966488" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:58:01.966798" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:58:01.965473" elapsed="0.001350"/>
</kw>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Get_As_Json_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:58:02.036790" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:58:02.036266" elapsed="0.000551"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:58:02.037630" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:58:02.037367" elapsed="0.000332">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-08T00:58:02.037830" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:58:02.036977" elapsed="0.000878"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:58:02.038421" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:58:02.038017" elapsed="0.000431"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T00:58:02.038738" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-08T00:58:02.038874" level="INFO">${template} = /rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T00:58:02.038604" elapsed="0.000295"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:02.039311" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:02.039051" elapsed="0.000302"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:02.040294" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:02.040023" elapsed="0.000315"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-08T00:58:02.040756" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-08T00:58:02.040496" elapsed="0.000286"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:02.041095" elapsed="0.000021"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:02.041321" elapsed="0.000024"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:02.041493" elapsed="0.000020"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-08T00:58:02.040963" elapsed="0.000610"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-08T00:58:02.040829" elapsed="0.000776"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-08T00:58:02.041648" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:58:02.041804" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-08T00:58:02.039706" elapsed="0.002123"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:02.039421" elapsed="0.002440"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:02.042029" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:02.041885" elapsed="0.000198"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:02.039402" elapsed="0.002701"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:02.042681" level="INFO">${final_text} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:02.042258" elapsed="0.000450"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T00:58:02.042755" 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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="PASS" start="2026-04-08T00:58:02.035580" elapsed="0.007337"/>
</kw>
<msg time="2026-04-08T00:58:02.042984" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:58:02.022732" elapsed="0.020390"/>
</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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:02.056202" elapsed="0.000053"/>
</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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:02.069098" elapsed="0.000052"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:02.082027" elapsed="0.000059"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:02.082420" elapsed="0.000075"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:02.082726" elapsed="0.000073"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:02.083517" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:02.083296" elapsed="0.000287"/>
</branch>
<status status="NOT RUN" start="2026-04-08T00:58:02.083268" elapsed="0.000353"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:02.083874" elapsed="0.000035"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:02.084188" elapsed="0.000036"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:02.084482" elapsed="0.000034"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-08T00:58:02.083203" elapsed="0.001359"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-08T00:58:02.082936" elapsed="0.001694"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:02.084935" elapsed="0.000072"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-08T00:58:02.085190" elapsed="0.000018"/>
</return>
<msg time="2026-04-08T00:58:02.085367" level="INFO">${uri} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-08T00:58:02.012719" elapsed="0.072674"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:58:02.087365" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:58:02.087046" elapsed="0.000426">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-08T00:58:02.087620" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:58:02.086282" elapsed="0.001377"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:02.088966" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:02.087805" elapsed="0.001247"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:58:02.089873" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:58:02.089385" elapsed="0.000533"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:02.089088" elapsed="0.000879"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:02.087786" elapsed="0.002216"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:58:02.092861" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:58:02.090283" elapsed="0.002620"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-08T00:58:02.093035" elapsed="0.000031"/>
</return>
<msg time="2026-04-08T00:58:02.093278" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:58:02.085766" elapsed="0.007539"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:58:02.095336" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:58:02.095017" elapsed="0.000384">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-08T00:58:02.095584" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:58:02.094099" elapsed="0.001524"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-08T00:58:02.096060" elapsed="0.000050"/>
</return>
<status status="PASS" start="2026-04-08T00:58:02.095771" elapsed="0.000444"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:02.095750" elapsed="0.000505"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:02.096453" elapsed="0.000073"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:02.096762" elapsed="0.000072"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-08T00:58:02.096951" elapsed="0.000017"/>
</return>
<msg time="2026-04-08T00:58:02.110543" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:58:02.093652" elapsed="0.016919"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:02.113283" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:02.112683" elapsed="0.000732"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:02.114243" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:02.113646" elapsed="0.000744"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:58:02.178719" level="INFO">GET Request : url=http://10.30.171.110:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 path_url=/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0336bvzrfnrhc3cqywxyctca52.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:58:02.179681" level="INFO">GET Response : url=http://10.30.171.110:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Transfer-Encoding': 'chunked'} 
 body={"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","encrypted-passwords","hidden-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-private-keys","asymmetrically-encrypted-value-format","cleartext-private-keys","cms-encrypted-data-format","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["client-ident-hostbased","ssh-client-keepalives","client-ident-password","client-ident-publickey"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-ex... (set the log level to DEBUG or TRACE to see the full content) 
 </msg>
<msg time="2026-04-08T00:58:02.180422" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:58:02.117547" elapsed="0.062979"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:02.114516" elapsed="0.066136"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:02.182844" elapsed="0.000083"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:02.180740" elapsed="0.002314"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:02.114496" elapsed="0.068662"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:02.190521" level="INFO">{"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","encrypted-passwords","hidden-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-private-keys","asymmetrically-encrypted-value-format","cleartext-private-keys","cms-encrypted-data-format","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["client-ident-hostbased","ssh-client-keepalives","client-ident-password","client-ident-publickey"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-experimenter-types?revision=2015-10-20","namespace":"urn:opendaylight:openflowplugin:experimenter:types","conformance-type":"import"},{"name":"ietf-ip_2018-02-22","revision":"2018-02-22","schema":"/rests/modules/ietf-ip?revision=2018-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-ip","conformance-type":"import","feature":["ipv6-privacy-autoconf","ipv4-non-contiguous-netmasks"]},{"name":"ietf-tcp-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-client","conformance-type":"import","feature":["local-binding-supported","tcp-client-keepalives"]},{"name":"node-config_2014-10-15","revision":"2014-10-15","schema":"/rests/modules/node-config?revision=2014-10-15","namespace":"urn:opendaylight:module:config","conformance-type":"import"},{"name":"ietf-restconf_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf","conformance-type":"import"},{"name":"ietf-datastores_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-datastores?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-datastores","conformance-type":"import"},{"name":"ietf-yang-patch_2017-02-22","revision":"2017-02-22","schema":"/rests/modules/ietf-yang-patch?revision=2017-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-patch","conformance-type":"import"},{"name":"sal-group_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-group?revision=2013-09-18","namespace":"urn:opendaylight:group:service","conformance-type":"import"},{"name":"odl-codegen-extensions_2024-06-27","revision":"2024-06-27","schema":"/rests/modules/odl-codegen-extensions?revision=2024-06-27","namespace":"urn:opendaylight:yang:extension:codegen","conformance-type":"import"},{"name":"sal-meter_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-meter?revision=2013-09-18","namespace":"urn:opendaylight:meter:service","conformance-type":"import"},{"name":"ietf-interfaces_2018-02-20","revision":"2018-02-20","schema":"/rests/modules/ietf-interfaces?revision=2018-02-20","namespace":"urn:ietf:params:xml:ns:yang:ietf-interfaces","conformance-type":"import","feature":["pre-provisioning","if-mib","arbitrary-names"]},{"name":"opendaylight-l2-types_2013-08-27","revision":"2013-08-27","schema":"/rests/modules/opendaylight-l2-types?revision=2013-08-27","namespace":"urn:opendaylight:l2:types","conformance-type":"import"},{"name":"opendaylight-flow-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-flow-types?revision=2013-10-26","namespace":"urn:opendaylight:flow:types","conformance-type":"import"},{"name":"lldp-speaker-config_2016-05-12","revision":"2016-05-12","schema":"/rests/modules/lldp-speaker-config?revision=2016-05-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker:config","conformance-type":"import"},{"name":"aaa-cert_2015-11-26","revision":"2015-11-26","schema":"/rests/modules/aaa-cert?revision=2015-11-26","namespace":"urn:opendaylight:yang:aaa:cert","conformance-type":"import"},{"name":"openflow-action_2015-02-03","revision":"2015-02-03","schema":"/rests/modules/openflow-action?revision=2015-02-03","namespace":"urn:opendaylight:openflow:common:action","conformance-type":"import"},{"name":"openflow-approved-extensions_2016-08-02","revision":"2016-08-02","schema":"/rests/modules/openflow-approved-extensions?revision=2016-08-02","namespace":"urn:opendaylight:openflow:approved:extensions","conformance-type":"import"},{"name":"nc-notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/nc-notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netmod:notification","conformance-type":"import"},{"name":"ietf-netconf-nmda_2019-01-07","revision":"2019-01-07","schema":"/rests/modules/ietf-netconf-nmda?revision=2019-01-07","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-nmda","conformance-type":"import","feature":["with-defaults","origin"]},{"name":"ietf-tcp-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-common","conformance-type":"import","feature":["keepalives-supported"]},{"name":"network-topology_2013-10-21","revision":"2013-10-21","schema":"/rests/modules/network-topology?revision=2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:network-topology","conformance-type":"import"},{"name":"aaa-encrypt-service-config_2024-02-02","revision":"2024-02-02","schema":"/rests/modules/aaa-encrypt-service-config?revision=2024-02-02","namespace":"config:aaa:authn:encrypt:service:config","conformance-type":"import"},{"name":"openflow-instruction_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-instruction?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:instruction","conformance-type":"import"},{"name":"ietf-tls-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-client","conformance-type":"import","feature":["client-ident-x509-cert","server-auth-x509-cert"]},{"name":"opendaylight-group-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-group-statistics?revision=2013-11-11","namespace":"urn:opendaylight:group:statistics","conformance-type":"import"},{"name":"cluster-admin_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/cluster-admin?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:cluster:admin","conformance-type":"import"},{"name":"opendaylight-flow-statistics_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-flow-statistics?revision=2013-08-19","namespace":"urn:opendaylight:flow:statistics","conformance-type":"import"},{"name":"opendaylight-table-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-table-types?revision=2013-10-26","namespace":"urn:opendaylight:table:types","conformance-type":"import"},{"name":"forwarding-rules-manager-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/forwarding-rules-manager-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:forwardingrules-manager:config","conformance-type":"import"},{"name":"odl-srm-types_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-types?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:types","conformance-type":"import"},{"name":"ietf-x509-cert-to-name_2014-12-10","revision":"2014-12-10","schema":"/rests/modules/ietf-x509-cert-to-name?revision=2014-12-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-x509-cert-to-name","conformance-type":"import"},{"name":"flow-node-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-node-inventory?revision=2013-08-19","namespace":"urn:opendaylight:flow:inventory","conformance-type":"import"},{"name":"flow-errors_2013-11-16","revision":"2013-11-16","schema":"/rests/modules/flow-errors?revision=2013-11-16","namespace":"urn:opendaylight:flow:errors","conformance-type":"import"},{"name":"ietf-netconf_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:netconf:base:1.0","conformance-type":"import","feature":["xpath","url","rollback-on-error","validate","candidate","confirmed-commit","startup","writable-running"]},{"name":"iana-ssh-public-key-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-public-key-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-public-key-algs","conformance-type":"import"},{"name":"aaa-cert-mdsal_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/aaa-cert-mdsal?revision=2016-03-21","namespace":"urn:opendaylight:yang:aaa:cert:mdsal","conformance-type":"import"},{"name":"odl-device-notification_2024-02-18","revision":"2024-02-18","schema":"/rests/modules/odl-device-notification?revision=2024-02-18","namespace":"urn:opendaylight:device:notification","conformance-type":"import"},{"name":"ietf-origin_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-origin?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-origin","conformance-type":"import"},{"name":"openflow-augments_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-augments?revision=2015-02-25","namespace":"urn:opendaylight:openflow:augments","conformance-type":"import"},{"name":"iana-ssh-encryption-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-encryption-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-encryption-algs","conformance-type":"import"},{"name":"ietf-truststore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-truststore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-truststore","conformance-type":"import","feature":["inline-definitions-supported"]},{"name":"distributed-datastore-provider_2025-01-30","revision":"2025-01-30","schema":"/rests/modules/distributed-datastore-provider?revision=2025-01-30","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:distributed-datastore-provider","conformance-type":"import"},{"name":"opendaylight-group-types_2013-10-18","revision":"2013-10-18","schema":"/rests/modules/opendaylight-group-types?revision=2013-10-18","namespace":"urn:opendaylight:group:types","conformance-type":"import"},{"name":"sal-remote-augment_2023-11-03","revision":"2023-11-03","schema":"/rests/modules/sal-remote-augment?revision=2023-11-03","namespace":"urn:sal:restconf:event:subscription","conformance-type":"import"},{"name":"opendaylight-ipv6-arbitrary-bitmask-fields_2016-02-24","revision":"2016-02-24","schema":"/rests/modules/opendaylight-ipv6-arbitrary-bitmask-fields?revision=2016-02-24","namespace":"urn:opendaylight:opendaylight-ipv6-arbitrary-bitmask-fields","conformance-type":"import"},{"name":"sal-flows-batch_2016-03-14","revision":"2016-03-14","schema":"/rests/modules/sal-flows-batch?revision=2016-03-14","namespace":"urn:opendaylight:flows:service","conformance-type":"import"},{"name":"ietf-tls-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-common","conformance-type":"import","feature":["hello-params","tls12","tls13"]},{"name":"openflow-types_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-types?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:types","conformance-type":"import"},{"name":"ietf-netconf-with-defaults_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf-with-defaults?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults","conformance-type":"import"},{"name":"odl-srm-ops_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-ops?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:ops","conformance-type":"import"},{"name":"odl-general-entity_2015-09-30","revision":"2015-09-30","schema":"/rests/modules/odl-general-entity?revision=2015-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:mdsal:core:general-entity","conformance-type":"import"},{"name":"iana-ssh-key-exchange-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-key-exchange-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-key-exchange-algs","conformance-type":"import"},{"name":"node-ssl-connection-error_2019-07-23","revision":"2019-07-23","schema":"/rests/modules/node-ssl-connection-error?revision=2019-07-23","namespace":"urn:opendaylight:node-ssl-connection-error:service","conformance-type":"import"},{"name":"openflow-protocol_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-protocol?revision=2013-07-31","namespace":"urn:opendaylight:openflow:protocol","conformance-type":"import"},{"name":"ietf-udp-server_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-server?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-server","conformance-type":"import"},{"name":"ietf-keystore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-keystore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-keystore","conformance-type":"import","feature":["asymmetric-keys","inline-definitions-supported"]},{"name":"aaa_2016-12-14","revision":"2016-12-14","schema":"/rests/modules/aaa?revision=2016-12-14","namespace":"urn:opendaylight:params:xml:ns:yang:aaa","conformance-type":"import"},{"name":"aaa-cert-rpc_2015-12-15","revision":"2015-12-15","schema":"/rests/modules/aaa-cert-rpc?revision=2015-12-15","namespace":"urn:opendaylight:yang:aaa:cert:rpc","conformance-type":"import"},{"name":"system-notifications_2013-09-27","revision":"2013-09-27","schema":"/rests/modules/system-notifications?revision=2013-09-27","namespace":"urn:opendaylight:openflow:system","conformance-type":"import"},{"name":"sal-flat-batch_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/sal-flat-batch?revision=2016-03-21","namespace":"urn:opendaylight:flat-batch:service","conformance-type":"import"},{"name":"notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netconf:notification:1.0","conformance-type":"import"},{"name":"sal-remote_2014-01-14","revision":"2014-01-14","schema":"/rests/modules/sal-remote?revision=2014-01-14","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:remote","conformance-type":"import"},{"name":"yang-ext_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/yang-ext?revision=2013-07-09","namespace":"urn:opendaylight:yang:extension:yang-ext","conformance-type":"import"},{"name":"opendaylight-multipart-types_2017-01-12","revision":"2017-01-12","schema":"/rests/modules/opendaylight-multipart-types?revision=2017-01-12","namespace":"urn:opendaylight:multipart:types","conformance-type":"import"},{"name":"opendaylight-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-inventory?revision=2013-08-19","namespace":"urn:opendaylight:inventory","conformance-type":"import"},{"name":"sal-queue_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-queue?revision=2015-03-05","namespace":"urn:opendaylight:queue:service","conformance-type":"import"},{"name":"sal-groups-batch_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/sal-groups-batch?revision=2016-03-15","namespace":"urn:opendaylight:groups:service","conformance-type":"import"},{"name":"arbitrator-reconcile_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/arbitrator-reconcile?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:arbitrator-reconcile:service","conformance-type":"import"},{"name":"ietf-yang-metadata_2016-08-05","revision":"2016-08-05","schema":"/rests/modules/ietf-yang-metadata?revision=2016-08-05","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-metadata","conformance-type":"import"},{"name":"opendaylight-arbitrary-bitmask-fields_2016-01-30","revision":"2016-01-30","schema":"/rests/modules/opendaylight-arbitrary-bitmask-fields?revision=2016-01-30","namespace":"urn:opendaylight:arbitrary:bitmask:fields","conformance-type":"import"},{"name":"ietf-udp-client_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-client?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-client","conformance-type":"import","feature":["local-binding"]},{"name":"opendaylight-meter-types_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/opendaylight-meter-types?revision=2013-09-18","namespace":"urn:opendaylight:meter:types","conformance-type":"import"},{"name":"opendaylight-action-types_2013-11-12","revision":"2013-11-12","schema":"/rests/modules/opendaylight-action-types?revision=2013-11-12","namespace":"urn:opendaylight:action:types","conformance-type":"import"},{"name":"sal-role_2015-07-27","revision":"2015-07-27","schema":"/rests/modules/sal-role?revision=2015-07-27","namespace":"urn:opendaylight:role:service","conformance-type":"import"},{"name":"openflow-provider-config_2016-05-10","revision":"2016-05-10","schema":"/rests/modules/openflow-provider-config?revision=2016-05-10","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:provider:config","conformance-type":"import"},{"name":"odl-serviceutils-upgrade_2018-07-02","revision":"2018-07-02","schema":"/rests/modules/odl-serviceutils-upgrade?revision=2018-07-02","namespace":"urn:opendaylight:serviceutils:upgrade","conformance-type":"import"},{"name":"opendaylight-match-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-match-types?revision=2013-10-26","namespace":"urn:opendaylight:model:match:types","conformance-type":"import"},{"name":"ietf-restconf-server_2024-08-14","revision":"2024-08-14","schema":"/rests/modules/ietf-restconf-server?revision=2024-08-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-server","conformance-type":"import","feature":["http-listen","https-listen"]},{"name":"reconciliation-result-state_2017-07-13","revision":"2017-07-13","schema":"/rests/modules/reconciliation-result-state?revision=2017-07-13","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:rf:state","conformance-type":"import"},{"name":"onf-extensions_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/onf-extensions?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf","conformance-type":"import"},{"name":"sal-table_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/sal-table?revision=2013-10-26","namespace":"urn:opendaylight:table:service","conformance-type":"import"},{"name":"iana-http-versions_2026-02-04","revision":"2026-02-04","schema":"/rests/modules/iana-http-versions?revision=2026-02-04","namespace":"urn:ietf:params:xml:ns:yang:iana-http-versions","conformance-type":"import"},{"name":"opendaylight-direct-statistics_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/opendaylight-direct-statistics?revision=2016-05-11","namespace":"urn:opendaylight:direct:statistics","conformance-type":"import"},{"name":"opendaylight-port-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-port-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:port","conformance-type":"import"},{"name":"sal-async-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/sal-async-config?revision=2017-06-19","namespace":"urn:opendaylight:async-config:service","conformance-type":"import"},{"name":"aaa-password-service-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-password-service-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:password:service:config","conformance-type":"import"},{"name":"ietf-yang-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-yang-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-types","conformance-type":"import"},{"name":"opendaylight-queue-statistics_2013-12-16","revision":"2013-12-16","schema":"/rests/modules/opendaylight-queue-statistics?revision=2013-12-16","namespace":"urn:opendaylight:queue:statistics","conformance-type":"import"},{"name":"sal-bundle_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/sal-bundle?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf:bundle:service","conformance-type":"import"},{"name":"ietf-restconf-subscribed-notifications_2019-11-17","revision":"2019-11-17","schema":"/rests/modules/ietf-restconf-subscribed-notifications?revision=2019-11-17","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-subscribed-notifications","conformance-type":"import"},{"name":"sal-meters-batch_2016-03-16","revision":"2016-03-16","schema":"/rests/modules/sal-meters-batch?revision=2016-03-16","namespace":"urn:opendaylight:meters:service","conformance-type":"import"},{"name":"odl-entity-owners","revision":"","schema":"/rests/modules/odl-entity-owners","namespace":"urn:opendaylight:params:xml:ns:yang:controller:entity-owners","conformance-type":"import"},{"name":"sal-experimenter-mp-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-mp-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-mp-message:service","conformance-type":"import"},{"name":"packet-processing_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/packet-processing?revision=2013-07-09","namespace":"urn:opendaylight:packet:service","conformance-type":"import"},{"name":"openflow-configuration_2014-06-30","revision":"2014-06-30","schema":"/rests/modules/openflow-configuration?revision=2014-06-30","namespace":"urn:opendaylight:openflow:config","conformance-type":"import"},{"name":"odl-srm-rpcs_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-rpcs?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:rpc","conformance-type":"import"},{"name":"ietf-netconf-acm_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-netconf-acm?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-acm","conformance-type":"import"},{"name":"iana-crypt-hash_2014-08-06","revision":"2014-08-06","schema":"/rests/modules/iana-crypt-hash?revision=2014-08-06","namespace":"urn:ietf:params:xml:ns:yang:iana-crypt-hash","conformance-type":"import","feature":["crypt-hash-sha-512","crypt-hash-sha-256","crypt-hash-md5"]},{"name":"openflow-extensible-match_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-extensible-match?revision=2015-02-25","namespace":"urn:opendaylight:openflow:oxm","conformance-type":"import"}],"module-set-id":"2"}}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:02.187850" elapsed="0.003000"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:02.187544" elapsed="0.003367"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:02.187511" elapsed="0.003449"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:02.193575" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:02.191369" elapsed="0.002251"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:02.191055" elapsed="0.002624"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:02.191025" elapsed="0.002701"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:02.194583" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:02.194053" elapsed="0.000576"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:02.195034" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:02.194735" elapsed="0.000377"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:58:02.195715" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:58:02.195409" elapsed="0.000331"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:02.195163" elapsed="0.000636"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:02.194705" elapsed="0.001139"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:02.196764" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:02.196261" elapsed="0.000549"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:02.197233" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:02.196918" elapsed="0.000395"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:58:02.197878" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:58:02.197564" elapsed="0.000340"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:02.197359" elapsed="0.000611"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:02.196887" elapsed="0.001128"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:58:02.198391" elapsed="0.000513"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:58:02.199754" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:02.199306" elapsed="0.000493"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:58:02.200127" elapsed="0.002339"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:58:02.184981" elapsed="0.017564"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:58:02.202905" elapsed="0.000038"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:58:02.202709" elapsed="0.000315"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:02.202689" elapsed="0.000371"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:58:02.214967" level="INFO">${text_normalized} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:58:02.203270" elapsed="0.011744"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:58:02.215154" elapsed="0.000052"/>
</return>
<msg time="2026-04-08T00:58:02.215419" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:58:02.110917" elapsed="0.104531"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:58:02.215551" elapsed="0.000035"/>
</return>
<msg time="2026-04-08T00:58:02.215715" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="PASS" start="2026-04-08T00:58:01.974796" elapsed="0.240946"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Json_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:02.216076" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:02.215828" elapsed="0.000391"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:02.215810" elapsed="0.000436"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:58:02.216281" elapsed="0.000027"/>
</return>
<arg>session=${session}</arg>
<arg>folder=${RESTCONF_MODULES_DIR}</arg>
<arg>verify=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Add arguments sensible for JSON data, return Get_Templated response text.
Optionally, verification against JSON data (may be iterated) is called.
Only subset of JSON data is verified and returned if JMES path is specified in
file ${folder}/jmespath.expr.</doc>
<status status="PASS" start="2026-04-08T00:58:01.970754" elapsed="0.245652"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:01.966893" elapsed="0.249556"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:01.966875" elapsed="0.249598"/>
</if>
<kw name="Resolve_Shard_Type_Class" owner="ClusterManagement">
<if>
<branch type="IF" condition="'${shard_type}' == 'config'">
<return>
<value>DistributedConfigDatastore</value>
<status status="PASS" start="2026-04-08T00:58:02.217072" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-08T00:58:02.216965" elapsed="0.000167"/>
</branch>
<branch type="ELSE IF" condition="'${shard_type}' == 'operational'">
<return>
<value>DistributedOperationalDatastore</value>
<status status="NOT RUN" start="2026-04-08T00:58:02.217222" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:58:02.217159" elapsed="0.000111"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:02.216946" elapsed="0.000352"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized shard type: ${shard_type}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:02.217464" elapsed="0.000023"/>
</kw>
<msg time="2026-04-08T00:58:02.217588" level="INFO">${type_class} = DistributedConfigDatastore</msg>
<var>${type_class}</var>
<arg>shard_type=${shard_type}</arg>
<doc>Simple lookup for class name corresponding to desired type.</doc>
<status status="PASS" start="2026-04-08T00:58:02.216697" elapsed="0.000916"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:02.218197" level="INFO">${cluster_index} = 3</msg>
<var>${cluster_index}</var>
<arg>${member_index}+${NODE_ROLE_INDEX_START}-1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:02.217780" elapsed="0.000446"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:58:02.218845" level="INFO">${uri} = jolokia/read/org.opendaylight.controller:Category=Shards,name=member-3-shard-inventory-config,type=DistributedConfigDatastore</msg>
<var>${uri}</var>
<arg>${JOLOKIA_READ_URI}:Category=Shards,name=member-${cluster_index}-shard-${shard_name}-${shard_type},type=${type_class}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:58:02.218383" elapsed="0.000489"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:02.224459" level="INFO">jolokia/read/org.opendaylight.controller:Category=Shards,name=member-3-shard-inventory-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:02.224045" elapsed="0.000461"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:02.224931" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:02.224663" elapsed="0.000313"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:58:02.237750" level="INFO">GET Request : url=http://10.30.171.110:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-3-shard-inventory-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-3-shard-inventory-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:58:02.237983" level="INFO">GET Response : url=http://10.30.171.110:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-3-shard-inventory-config,type=DistributedConfigDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Wed, 08 Apr 2026 00:58:02 GMT', 'Expires': 'Tue, 07 Apr 2026 23:58:02 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-3-shard-inventory-config,type=DistributedConfigDatastore","type":"read"},"value":{"ReadWriteTransactionCount":0,"SnapshotIndex":44,"InMemoryJournalLogSize":1,"ReplicatedToAllIndex":44,"Leader":"member-1-shard-inventory-config","LastIndex":45,"RaftState":"Follower","LastApplied":45,"LastCommittedTransactionTime":"1970-01-01 00:00:00.000","PeerAddresses":"member-1-shard-inventory-config: pekko:\/\/opendaylight-cluster-data@10.30.170.48:2550\/user\/shardmanager-config\/member-1-shard-inventory-config, member-2-shard-inventory-config: pekko:\/\/opendaylight-cluster-data@10.30.170.131:2550\/user\/shardmanager-config\/member-2-shard-inventory-config","LastLogIndex":45,"LastLeadershipChangeTime":"2026-04-08 00:57:11.121","FollowerInitialSyncStatus":true,"FollowerInfo":[],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"2.203 ms","CurrentTerm":4,"LastTerm":3,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-inventory-config","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":0,"TxCohortCacheSize":0,"PeerVotingStates":"member-1-shard-inventory-config: true, member-2-shard-inventory-config: true","LastLogTerm":3,"StatRetrievalError":null,"CommitIndex":45,"SnapshotTerm":3,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-3-shard-inventory-config","LeadershipChangeCount":1,"InMemoryJournalDataSize":2208},"timestamp":1775609882,"status":200} 
 </msg>
<msg time="2026-04-08T00:58:02.238423" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:58:02.226979" elapsed="0.011511"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:02.225045" elapsed="0.013543"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:02.238987" elapsed="0.000049"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:02.238647" elapsed="0.000481"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:02.225026" elapsed="0.014186"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:02.246152" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-3-shard-inventory-config,type=DistributedConfigDatastore","type":"read"},"value":{"ReadWriteTransactionCount":0,"SnapshotIndex":44,"InMemoryJournalLogSize":1,"ReplicatedToAllIndex":44,"Leader":"member-1-shard-inventory-config","LastIndex":45,"RaftState":"Follower","LastApplied":45,"LastCommittedTransactionTime":"1970-01-01 00:00:00.000","PeerAddresses":"member-1-shard-inventory-config: pekko:\/\/opendaylight-cluster-data@10.30.170.48:2550\/user\/shardmanager-config\/member-1-shard-inventory-config, member-2-shard-inventory-config: pekko:\/\/opendaylight-cluster-data@10.30.170.131:2550\/user\/shardmanager-config\/member-2-shard-inventory-config","LastLogIndex":45,"LastLeadershipChangeTime":"2026-04-08 00:57:11.121","FollowerInitialSyncStatus":true,"FollowerInfo":[],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"2.203 ms","CurrentTerm":4,"LastTerm":3,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-inventory-config","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":0,"TxCohortCacheSize":0,"PeerVotingStates":"member-1-shard-inventory-config: true, member-2-shard-inventory-config: true","LastLogTerm":3,"StatRetrievalError":null,"CommitIndex":45,"SnapshotTerm":3,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-3-shard-inventory-config","LeadershipChangeCount":1,"InMemoryJournalDataSize":2208},"timestamp":1775609882,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:02.242147" elapsed="0.004212"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:02.241437" elapsed="0.005013"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:02.241392" elapsed="0.005086"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:02.249529" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:02.246981" elapsed="0.002680"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:02.246536" elapsed="0.003214"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:02.246519" elapsed="0.003258"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:02.250565" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:02.249941" elapsed="0.000650"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:02.251306" elapsed="0.000077"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:02.250696" elapsed="0.000792"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:58:02.252781" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:58:02.252032" elapsed="0.000790"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:02.251515" elapsed="0.001408"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:02.250676" elapsed="0.002271"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:02.253678" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:02.253108" elapsed="0.000597"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:02.254454" elapsed="0.000076"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:02.253808" elapsed="0.000823"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:58:02.255859" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:58:02.255125" elapsed="0.000776"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:02.254658" elapsed="0.001393"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:02.253789" elapsed="0.002287"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:58:02.256242" elapsed="0.000717"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:58:02.257712" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:02.257189" elapsed="0.000549"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:58:02.257931" elapsed="0.002541"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:58:02.240385" elapsed="0.020179"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:58:02.260741" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:58:02.260635" elapsed="0.000150"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:02.260616" elapsed="0.000191"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:58:02.276564" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-3-shard-inventory-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 177560...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:58:02.260949" elapsed="0.015645"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:58:02.276646" elapsed="0.000031"/>
</return>
<msg time="2026-04-08T00:58:02.276803" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-3-shard-inventory-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 177560...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:58:02.219867" elapsed="0.056962"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:58:02.276920" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:58:02.277069" level="INFO">${data_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-3-shard-inventory-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 177560...</msg>
<var>${data_text}</var>
<arg>uri=${uri}</arg>
<arg>session=${session}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-08T00:58:02.219084" elapsed="0.058010"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:02.278096" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-3-shard-inventory-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1775609882, 'valu...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:02.277668" elapsed="0.000456"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-08T00:58:02.278189" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:58:02.278359" level="INFO">${data_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-3-shard-inventory-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1775609882, 'valu...</msg>
<var>${data_object}</var>
<arg>${data_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-08T00:58:02.277330" elapsed="0.001055"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:58:02.278730" level="INFO">${value} = {'AbortTransactionsCount': 0, 'CommitIndex': 45, 'CommittedTransactionsCount': 0, 'CurrentTerm': 4, 'FailedReadTransactionsCount': 0, 'FailedTransactionsCount': 0, 'FollowerInfo': [], 'FollowerInitial...</msg>
<var>${value}</var>
<arg>${data_object}</arg>
<arg>value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:58:02.278536" elapsed="0.000220"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:58:02.279104" level="INFO">${raft_property} = Follower</msg>
<var>${raft_property}</var>
<arg>${value}</arg>
<arg>${property}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:58:02.278907" elapsed="0.000222"/>
</kw>
<return>
<value>${raft_property}</value>
<status status="PASS" start="2026-04-08T00:58:02.279204" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:58:02.279356" level="INFO">${raft_state} = Follower</msg>
<var>${raft_state}</var>
<arg>RaftState</arg>
<arg>${shard_name}</arg>
<arg>${shard_type}</arg>
<arg>${member_index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft property.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T00:58:01.964861" elapsed="0.314520"/>
</kw>
<return>
<value>${raft_state}</value>
<status status="PASS" start="2026-04-08T00:58:02.279436" elapsed="0.000025"/>
</return>
<msg time="2026-04-08T00:58:02.279579" level="INFO">${raft_state} = Follower</msg>
<var>${raft_state}</var>
<arg>shard_name=${shard_name}</arg>
<arg>shard_type=${ds_type}</arg>
<arg>member_index=${index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft status.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T00:58:01.964113" elapsed="0.315490"/>
</kw>
<if>
<branch type="IF" condition="'Follower' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${follower_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-08T00:58:02.279892" elapsed="0.000186"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:02.279681" elapsed="0.000435"/>
</branch>
<branch type="ELSE IF" condition="'Leader' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${leader_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:02.280554" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:02.280140" elapsed="0.000470"/>
</branch>
<branch type="ELSE IF" condition="${validate}">
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized Raft state: ${raft_state}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:02.280772" elapsed="0.000019"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:02.280634" elapsed="0.000187"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:02.279664" elapsed="0.001180"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T00:58:01.963948" elapsed="0.316918"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-08T00:58:01.391950" elapsed="0.888947"/>
</for>
<return>
<value>${leader_list}</value>
<value>${follower_list}</value>
<status status="PASS" start="2026-04-08T00:58:02.280939" elapsed="0.000026"/>
</return>
<msg time="2026-04-08T00:58:02.281138" level="INFO">${leader_list} = [1]</msg>
<msg time="2026-04-08T00:58:02.281201" level="INFO">${follower_list} = [2, 3]</msg>
<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="PASS" start="2026-04-08T00:58:01.387956" elapsed="0.893269"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T00:58:02.281660" level="INFO">Length is 1.</msg>
<msg time="2026-04-08T00:58:02.281734" level="INFO">${leader_count} = 1</msg>
<var>${leader_count}</var>
<arg>${leader_list}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T00:58:02.281396" elapsed="0.000361"/>
</kw>
<if>
<branch type="IF" condition="${leader_count} &lt; 1">
<kw name="Fail" owner="BuiltIn">
<arg>No leader found.</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:02.282040" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:02.281824" elapsed="0.000268"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:02.281807" elapsed="0.000308"/>
</if>
<kw name="Length Should Be" owner="BuiltIn">
<msg time="2026-04-08T00:58:02.284059" level="INFO">Length is 1.</msg>
<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="PASS" start="2026-04-08T00:58:02.282267" elapsed="0.001837"/>
</kw>
<kw name="Get From List" owner="Collections">
<msg time="2026-04-08T00:58:02.284591" level="INFO">${leader} = 1</msg>
<var>${leader}</var>
<arg>${leader_list}</arg>
<arg>0</arg>
<doc>Returns the value specified with an ``index`` from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:58:02.284381" elapsed="0.000237"/>
</kw>
<return>
<value>${leader}</value>
<value>${follower_list}</value>
<status status="PASS" start="2026-04-08T00:58:02.284665" 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="PASS" start="2026-04-08T00:58:01.385543" elapsed="0.899283"/>
</kw>
<msg time="2026-04-08T00:58:02.284930" level="INFO">${inv_conf_leader} = 1</msg>
<msg time="2026-04-08T00:58:02.284978" level="INFO">${inv_conf_followers_list} = [2, 3]</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="PASS" start="2026-04-08T00:58:01.384917" elapsed="0.900087"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:02.285506" level="INFO">config inventory Leader is 1 and followers are [2, 3]</msg>
<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="PASS" start="2026-04-08T00:58:02.285215" elapsed="0.000335"/>
</kw>
<return>
<value>${inv_conf_leader}</value>
<value>${inv_conf_followers_list}</value>
<status status="PASS" start="2026-04-08T00:58:02.285591" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:58:02.285793" level="INFO">${inventory_leader} = 1</msg>
<msg time="2026-04-08T00:58:02.285839" level="INFO">${inventory_followers} = [2, 3]</msg>
<var>${inventory_leader}</var>
<var>${inventory_followers}</var>
<doc>Check Status for Inventory Config shard in OpenFlow application.</doc>
<status status="PASS" start="2026-04-08T00:58:01.382744" elapsed="0.903118"/>
</kw>
<kw name="Get From List" owner="Collections">
<msg time="2026-04-08T00:58:02.286240" level="INFO">${follower_node_1} = 2</msg>
<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="PASS" start="2026-04-08T00:58:02.286038" elapsed="0.000227"/>
</kw>
<kw name="Get From List" owner="Collections">
<msg time="2026-04-08T00:58:02.286617" level="INFO">${follower_node_2} = 3</msg>
<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="PASS" start="2026-04-08T00:58:02.286437" elapsed="0.000205"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-08T00:58:02.287143" level="INFO">${follower_node_1} = 2</msg>
<arg>${follower_node_1}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-08T00:58:02.286832" elapsed="0.000371"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-08T00:58:02.287679" level="INFO">${follower_node_2} = 3</msg>
<arg>${follower_node_2}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-08T00:58:02.287380" elapsed="0.000340"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-08T00:58:02.288206" level="INFO">${inventory_leader} = 1</msg>
<arg>${inventory_leader}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-08T00:58:02.287893" elapsed="0.000355"/>
</kw>
<doc>Find New Followers and Leader in the inventory config shard After Cluster Restart.</doc>
<status status="PASS" start="2026-04-08T00:57:28.849207" elapsed="33.439200"/>
</test>
<test id="s1-s3-t18" name="Start Mininet Connect To Follower Node2 After Cluster Restart" line="131">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-08T00:58:02.291949" elapsed="0.000481"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-08T00:58:02.291688" elapsed="0.000799"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:58:02.293476" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:58:02.293367" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:02.293349" elapsed="0.000193"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:58:02.298257" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:58:02.298134" elapsed="0.000168"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:02.298116" elapsed="0.000207"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:58:02.299316" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:58:02.298919" elapsed="0.000424"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:58:02.299799" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:58:02.299498" elapsed="0.000326"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:58:02.299869" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:58:02.300020" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:58:02.298548" elapsed="0.001497"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:58:02.305278" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:58:02.305153" elapsed="0.000171"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:02.305135" elapsed="0.000211"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:58:02.306495" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:58:02.306389" elapsed="0.000186"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:02.306371" elapsed="0.000229"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:58:02.307038" level="INFO">${karaf_connection_index} = 444</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:58:02.306743" elapsed="0.000322"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:58:02.307465" level="INFO">${current_connection_index} = None</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:58:02.307241" elapsed="0.000251"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T00:58:02.357839" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T00:58:02.307983" elapsed="0.049960"/>
</kw>
<msg time="2026-04-08T00:58:02.358103" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T00:58:02.358150" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:58:02.307649" elapsed="0.050565"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T00:58:02.484110" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "a "d "e "r "[C "F "o "l "l "o "w "e "r "[C "F "a "i "l "o "v "e "r ". "S "t "a "r "t "[C "M "i "n "i "n "e "t "[C "C "o "n "[78Cn "[A[78Ce
 "c "t "[C "T "o "[C "F "o "l "l "o "w "e "r "[C "N "o "d "e "2 "[C "A "f "t "e "r "[C "C "l "u "s "t "e "r "[C "R "e "s "t "a "r "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T00:58:02.358753" elapsed="0.125511"/>
</kw>
<msg time="2026-04-08T00:58:02.484425" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T00:58:02.484472" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:58:02.358406" elapsed="0.126104"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:02.484816" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:02.484590" elapsed="0.000281"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:02.484570" elapsed="0.000326"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:02.485386" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "a "d "e "r "[C "F "o "l "l "o "w "e "r "[C "F "a "i "l "o "v "e "r ". "S "t "a "r "t "[C "M "i "n "i "n "e "t "[C "C "o "n "[78Cn "[A[78Ce
 "c "t "[C "T "o "[C "F "o "l "l "o "w "e "r "[C "N "o "d "e "2 "[C "A "f "t "e "r "[C "C "l "u "s "t "e "r "[C "R "e "s "t "a "r "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:02.485039" elapsed="0.000441"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:02.485764" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:02.485549" elapsed="0.000269"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:02.485531" elapsed="0.000309"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T00:58:02.485873" elapsed="0.000027"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:58:02.487346" elapsed="0.000751"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:58:02.488389" elapsed="0.000469"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:58:02.489121" elapsed="0.000414"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:58:02.486730" elapsed="0.002907"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T00:58:02.486138" elapsed="0.003561"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T00:58:02.306057" elapsed="0.183742"/>
</kw>
<msg time="2026-04-08T00:58:02.489890" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:58:02.489933" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:58:02.305493" elapsed="0.184477"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T00:58:02.490156" elapsed="0.000047"/>
</return>
<status status="PASS" start="2026-04-08T00:58:02.490047" elapsed="0.000199"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:02.490028" elapsed="0.000243"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:02.490703" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:02.491079" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T00:58:02.491150" elapsed="0.000032"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T00:58:02.304819" elapsed="0.186458"/>
</kw>
<msg time="2026-04-08T00:58:02.491373" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:58:02.491416" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:58:02.300424" elapsed="0.191029"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:02.491779" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:02.491530" elapsed="0.000302"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:02.491512" elapsed="0.000343"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T00:58:02.300285" elapsed="0.191593"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:58:02.497083" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:58:02.496977" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:02.496958" elapsed="0.000191"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:58:02.498344" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:58:02.498234" elapsed="0.000156"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:02.498214" elapsed="0.000198"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:58:02.498874" level="INFO">${karaf_connection_index} = 448</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:58:02.498555" elapsed="0.000346"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:58:02.499291" level="INFO">${current_connection_index} = None</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:58:02.499057" elapsed="0.000261"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T00:58:02.558734" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T00:58:02.499879" elapsed="0.058962"/>
</kw>
<msg time="2026-04-08T00:58:02.559015" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T00:58:02.559062" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:58:02.499476" elapsed="0.059622"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T00:58:02.711220" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "a "d "e "r "[C "F "o "l "l "o "w "e "r "[C "F "a "i "l "o "v "e "r ". "S "t "a "r "t "[C "M "i "n "i "n "e "t "[C "C "o "n "[78Cn "[A[78Ce
 "c "t "[C "T "o "[C "F "o "l "l "o "w "e "r "[C "N "o "d "e "2 "[C "A "f "t "e "r "[C "C "l "u "s "t "e "r "[C "R "e "s "t "a "r "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T00:58:02.559692" elapsed="0.151733"/>
</kw>
<msg time="2026-04-08T00:58:02.711672" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T00:58:02.711744" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:58:02.559308" elapsed="0.152493"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:02.712295" elapsed="0.000035"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:02.711922" elapsed="0.000459"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:02.711891" elapsed="0.000527"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:02.713127" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "a "d "e "r "[C "F "o "l "l "o "w "e "r "[C "F "a "i "l "o "v "e "r ". "S "t "a "r "t "[C "M "i "n "i "n "e "t "[C "C "o "n "[78Cn "[A[78Ce
 "c "t "[C "T "o "[C "F "o "l "l "o "w "e "r "[C "N "o "d "e "2 "[C "A "f "t "e "r "[C "C "l "u "s "t "e "r "[C "R "e "s "t "a "r "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:02.712630" elapsed="0.000679"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:02.713627" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:02.713406" elapsed="0.000275"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:02.713385" elapsed="0.000321"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T00:58:02.713779" elapsed="0.000030"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:58:02.715452" elapsed="0.000788"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:58:02.716516" elapsed="0.000450"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:58:02.717275" elapsed="0.000360"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:58:02.714814" elapsed="0.002921"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T00:58:02.714047" elapsed="0.003752"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T00:58:02.497885" elapsed="0.220016"/>
</kw>
<msg time="2026-04-08T00:58:02.717993" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:58:02.718036" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:58:02.497328" elapsed="0.220747"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T00:58:02.718287" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-08T00:58:02.718153" elapsed="0.000194"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:02.718134" elapsed="0.000238"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 2,
close the previous connection. In any case create a new connection
to karaf console for 2, set correct prompt set and login to karaf console.
Store connection index for 2 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:02.718759" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:02.719086" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T00:58:02.719160" elapsed="0.000029"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T00:58:02.496643" elapsed="0.222638"/>
</kw>
<msg time="2026-04-08T00:58:02.719373" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:58:02.719416" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:58:02.492136" elapsed="0.227317"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:02.719853" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:02.719529" elapsed="0.000380"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:02.719511" elapsed="0.000421"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T00:58:02.491999" elapsed="0.227956"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:58:02.725275" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:58:02.725135" elapsed="0.000186"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:02.725115" elapsed="0.000227"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:58:02.726521" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:58:02.726413" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:02.726394" elapsed="0.000196"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:58:02.727029" level="INFO">${karaf_connection_index} = 452</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:58:02.726734" elapsed="0.000322"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:58:02.727459" level="INFO">${current_connection_index} = None</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:58:02.727233" elapsed="0.000252"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T00:58:02.784848" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T00:58:02.727978" elapsed="0.057099"/>
</kw>
<msg time="2026-04-08T00:58:02.785543" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T00:58:02.785650" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:58:02.727645" elapsed="0.058134"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T00:58:02.912095" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "a "d "e "r "[C "F "o "l "l "o "w "e "r "[C "F "a "i "l "o "v "e "r ". "S "t "a "r "t "[C "M "i "n "i "n "e "t "[C "C "o "n "[78Cn "[A[78Ce
 "c "t "[C "T "o "[C "F "o "l "l "o "w "e "r "[C "N "o "d "e "2 "[C "A "f "t "e "r "[C "C "l "u "s "t "e "r "[C "R "e "s "t "a "r "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T00:58:02.786649" elapsed="0.125944"/>
</kw>
<msg time="2026-04-08T00:58:02.912908" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T00:58:02.912961" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:58:02.786193" elapsed="0.126809"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:02.913770" elapsed="0.000034"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:02.913213" elapsed="0.000628"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:02.913127" elapsed="0.000747"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:02.914566" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "a "d "e "r "[C "F "o "l "l "o "w "e "r "[C "F "a "i "l "o "v "e "r ". "S "t "a "r "t "[C "M "i "n "i "n "e "t "[C "C "o "n "[78Cn "[A[78Ce
 "c "t "[C "T "o "[C "F "o "l "l "o "w "e "r "[C "N "o "d "e "2 "[C "A "f "t "e "r "[C "C "l "u "s "t "e "r "[C "R "e "s "t "a "r "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:02.914025" elapsed="0.000643"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:02.914988" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:02.914739" elapsed="0.000309"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:02.914719" elapsed="0.000352"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T00:58:02.915115" elapsed="0.000077"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:58:02.916966" elapsed="0.000830"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:58:02.918078" elapsed="0.000544"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:58:02.918899" elapsed="0.000419"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:58:02.916257" elapsed="0.003169"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T00:58:02.915563" elapsed="0.003932"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T00:58:02.726049" elapsed="0.193553"/>
</kw>
<msg time="2026-04-08T00:58:02.919710" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:58:02.919756" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:58:02.725492" elapsed="0.194304"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T00:58:02.919990" elapsed="0.000029"/>
</return>
<status status="PASS" start="2026-04-08T00:58:02.919879" elapsed="0.000176"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:02.919859" elapsed="0.000221"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 3,
close the previous connection. In any case create a new connection
to karaf console for 3, set correct prompt set and login to karaf console.
Store connection index for 3 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:02.920546" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:02.921466" elapsed="0.000027"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T00:58:02.921546" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T00:58:02.724780" elapsed="0.196878"/>
</kw>
<msg time="2026-04-08T00:58:02.921760" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:58:02.921806" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:58:02.720242" elapsed="0.201603"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:02.922197" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:02.921924" elapsed="0.000328"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:02.921906" elapsed="0.000371"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T00:58:02.720079" elapsed="0.202270"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-08T00:58:02.300098" elapsed="0.622294"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-08T00:58:02.297780" elapsed="0.624681"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-08T00:58:02.293059" elapsed="0.629467"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:58:02.292639" elapsed="0.629937"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-08T00:58:02.289473" elapsed="0.633165"/>
</kw>
<kw name="Start Mininet Single Controller" owner="MininetKeywords">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:02.925897" level="INFO">Clear any existing mininet</msg>
<arg>Clear any existing mininet</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:02.925661" elapsed="0.000283"/>
</kw>
<kw name="Clean Mininet System" owner="Utils">
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:02.928458" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:02.928184" elapsed="0.000331"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:02.928143" elapsed="0.000396"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:58:02.928841" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T00:58:02.928690" elapsed="0.000283"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:02.929532" level="INFO">Attempting to execute command "sudo mn -c" on remote system "10.30.170.192" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:02.929123" elapsed="0.000457"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:58:02.930110" level="INFO">${conn_id} = 458</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:58:02.929736" elapsed="0.000401"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T00:58:02.931079" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T00:58:02.931202" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T00:58:02.930783" elapsed="0.000445"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:58:02.931388" elapsed="0.000319"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T00:58:02.932575" level="INFO">Logging into '10.30.170.192:22' as 'jenkins'.</msg>
<msg time="2026-04-08T00:58:03.682889" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 00:58:03 UTC 2026

  System load:  0.0                Processes:             107
  Usage of /:   19.5% of 38.58GB   Users logged in:       0
  Memory usage: 5%                 IPv4 address for ens3: 10.30.170.192
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 00:54:39 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-1-mininet-ovs-217-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T00:58:02.932251" elapsed="0.750810"/>
</kw>
<msg time="2026-04-08T00:58:03.683184" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:58:02.931873" elapsed="0.751427"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T00:58:02.930386" elapsed="0.753056"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T00:58:03.684047" level="INFO">Executing command 'sudo mn -c'.</msg>
<msg time="2026-04-08T00:58:04.829523" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-08T00:58:04.829912" level="INFO">${stdout} = </msg>
<msg time="2026-04-08T00:58:04.830017" level="INFO">${stderr} = *** Removing excess controllers/ofprotocols/ofdatapaths/pings/noxes
killall controller ofprotocol ofdatapath ping nox_corelt-nox_core ovs-openflowd ovs-controllerovs-testcontroller udpbwtest mnexec iv...</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T00:58:03.683731" elapsed="1.146342"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:58:04.830600" elapsed="0.000609"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:04.832546" level="INFO">*** Removing excess controllers/ofprotocols/ofdatapaths/pings/noxes
killall controller ofprotocol ofdatapath ping nox_corelt-nox_core ovs-openflowd ovs-controllerovs-testcontroller udpbwtest mnexec ivs ryu-manager 2&gt; /dev/null
killall -9 controller ofprotocol ofdatapath ping nox_corelt-nox_core ovs-openflowd ovs-controllerovs-testcontroller udpbwtest mnexec ivs ryu-manager 2&gt; /dev/null
pkill -9 -f "sudo mnexec"
*** Removing junk from /tmp
rm -f /tmp/vconn* /tmp/vlogs* /tmp/*.out /tmp/*.log
*** Removing old X11 tunnels
*** Removing excess kernel datapaths
ps ax | egrep -o 'dp[0-9]+' | sed 's/dp/nl:/'
***  Removing OVS datapaths
ovs-vsctl --timeout=1 list-br
ovs-vsctl --timeout=1 list-br
*** Removing all links of the pattern foo-ethX
ip link show | egrep -o '([-_.[:alnum:]]+-eth[[:digit:]]+)'
ip link show
*** Killing stale mininet node processes
pkill -9 -f mininet:
*** Shutting down stale tunnels
pkill -9 -f Tunnel=Ethernet
pkill -9 -f .ssh/mn
rm -f ~/.ssh/mn/*
*** Cleanup complete.</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:04.831782" elapsed="0.000888"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:58:04.833198" elapsed="0.000039"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:58:04.832848" elapsed="0.000464"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:04.832796" elapsed="0.000567"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T00:58:04.833629" elapsed="0.000048"/>
</return>
<status status="PASS" start="2026-04-08T00:58:04.833478" elapsed="0.000244"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:04.833451" elapsed="0.000304"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:58:04.833804" elapsed="0.000019"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:58:04.837801" elapsed="0.000490"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:58:04.838524" elapsed="0.000223"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:58:04.838952" elapsed="0.000134"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:58:04.834290" elapsed="0.004894"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T00:58:02.927627" elapsed="1.911691"/>
</kw>
<msg time="2026-04-08T00:58:04.839396" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:58:02.927025" elapsed="1.912446"/>
</kw>
<arg>${system}</arg>
<arg>sudo mn -c</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-08T00:58:02.926533" elapsed="1.913048"/>
</kw>
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:04.842247" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:04.841964" elapsed="0.000341"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:04.841945" elapsed="0.000383"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:58:04.842617" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T00:58:04.842476" elapsed="0.000268"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:04.843283" level="INFO">Attempting to execute command "sudo ps -elf | egrep 'usr/local/bin/mn' | egrep python | awk '{print "sudo kill -9",$4}' | sh" on remote system "10.30.170.192" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:04.842890" elapsed="0.000440"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:58:04.843841" level="INFO">${conn_id} = 460</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:58:04.843481" elapsed="0.000386"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T00:58:04.844800" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T00:58:04.844877" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T00:58:04.844519" elapsed="0.000382"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:58:04.845055" elapsed="0.000334"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T00:58:04.846240" level="INFO">Logging into '10.30.170.192:22' as 'jenkins'.</msg>
<msg time="2026-04-08T00:58:05.172224" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 00:58:03 UTC 2026

  System load:  0.0                Processes:             107
  Usage of /:   19.5% of 38.58GB   Users logged in:       0
  Memory usage: 5%                 IPv4 address for ens3: 10.30.170.192
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 00:58:03 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-1-mininet-ovs-217-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T00:58:04.845909" elapsed="0.326595"/>
</kw>
<msg time="2026-04-08T00:58:05.172595" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:58:04.845559" elapsed="0.327132"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T00:58:04.844078" elapsed="0.328733"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T00:58:05.173348" level="INFO">Executing command 'sudo ps -elf | egrep 'usr/local/bin/mn' | egrep python | awk '{print "sudo kill -9",$4}' | sh'.</msg>
<msg time="2026-04-08T00:58:05.205759" level="INFO">Command exited with return code -1.</msg>
<msg time="2026-04-08T00:58:05.206017" level="INFO">${stdout} = </msg>
<msg time="2026-04-08T00:58:05.206114" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T00:58:05.173060" elapsed="0.033142"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:58:05.206575" elapsed="0.000466"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:05.208200" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:05.207529" elapsed="0.000769"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:58:05.208779" elapsed="0.000035"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:58:05.208476" elapsed="0.000412"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:05.208424" elapsed="0.000514"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T00:58:05.209328" elapsed="0.000060"/>
</return>
<status status="PASS" start="2026-04-08T00:58:05.209057" elapsed="0.000404"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:05.209024" elapsed="0.000488"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:58:05.209587" elapsed="0.000030"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:58:05.215673" elapsed="0.000748"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:58:05.216647" elapsed="0.000161"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:58:05.216952" elapsed="0.000096"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:58:05.210319" elapsed="0.006780"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T00:58:04.841380" elapsed="0.375827"/>
</kw>
<msg time="2026-04-08T00:58:05.217262" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:58:04.840580" elapsed="0.376733"/>
</kw>
<arg>${system}</arg>
<arg>sudo ps -elf | egrep 'usr/local/bin/mn' | egrep python | awk '{print "sudo kill -9",$4}' | sh</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-08T00:58:04.839821" elapsed="0.377573"/>
</kw>
<arg>${mininet}</arg>
<status status="PASS" start="2026-04-08T00:58:02.926150" elapsed="2.291301"/>
</kw>
<kw name="Open_Connection_To_Tools_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:58:05.222248" level="INFO">${tools_connection} = 462</msg>
<var>${tools_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:58:05.221868" elapsed="0.000408"/>
</kw>
<kw name="Flexible_Mininet_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T00:58:05.224016" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T00:58:05.224092" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T00:58:05.223740" elapsed="0.000376"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:58:05.224289" elapsed="0.000314"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T00:58:05.225444" level="INFO">Logging into '10.30.170.192:22' as 'jenkins'.</msg>
<msg time="2026-04-08T00:58:05.554549" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 00:58:03 UTC 2026

  System load:  0.0                Processes:             107
  Usage of /:   19.5% of 38.58GB   Users logged in:       0
  Memory usage: 5%                 IPv4 address for ens3: 10.30.170.192
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 00:58:05 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-1-mininet-ovs-217-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T00:58:05.225115" elapsed="0.329659"/>
</kw>
<msg time="2026-04-08T00:58:05.554858" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:58:05.224768" elapsed="0.330175"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T00:58:05.223230" elapsed="0.331829"/>
</kw>
<msg time="2026-04-08T00:58:05.555111" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:58:05.222826" elapsed="0.332335"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-08T00:58:05.222453" elapsed="0.332797"/>
</kw>
<return>
<value>${tools_connection}</value>
<status status="PASS" start="2026-04-08T00:58:05.555308" elapsed="0.000042"/>
</return>
<msg time="2026-04-08T00:58:05.555524" level="INFO">${mininet_conn_id} = 462</msg>
<var>${mininet_conn_id}</var>
<arg>ip_address=${mininet}</arg>
<arg>timeout=${timeout}</arg>
<doc>Open a connection to the tools system at ${ip_address} and return its identifier.</doc>
<status status="PASS" start="2026-04-08T00:58:05.221384" elapsed="0.334167"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-08T00:58:05.556305" level="INFO">${mininet_conn_id} = 462</msg>
<arg>${mininet_conn_id}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-08T00:58:05.555846" elapsed="0.000502"/>
</kw>
<if>
<branch type="IF" condition="'${custom}' != '${EMPTY}'">
<kw name="Put File" owner="SSHLibrary">
<arg>${custom}</arg>
<doc>Uploads file(s) from the local machine to the remote machine.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:05.558651" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:05.556428" elapsed="0.002279"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:05.556407" elapsed="0.002325"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:05.559204" level="INFO">Start mininet --topo tree,1 to 10.30.171.110</msg>
<arg>Start mininet ${options} to ${controller}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:05.558888" elapsed="0.000363"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T00:58:05.561502" level="INFO">sudo mn --controller 'remote,ip=10.30.171.110,port=6633' --topo tree,1 --switch ovsk,protocols=OpenFlow13</msg>
<arg>sudo mn --controller 'remote,ip=${controller},port=${ofport}' ${options} --switch ovsk,protocols=OpenFlow${ofversion}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T00:58:05.559415" elapsed="0.002145"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-08T00:58:05.741461" level="INFO">[?2004l*** Creating network
*** Adding controller
*** Adding hosts:
h1 h2 
*** Adding switches:
s1 
*** Adding links:
(s1, h1) (s1, h2) 
*** Configuring hosts
h1 h2 
*** Starting controller
c0 
*** Starting 1 switches
s1 ...
*** Starting CLI:
mininet&gt;</msg>
<arg>mininet&gt;</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-08T00:58:05.561715" elapsed="0.179894"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:05.742284" level="INFO">Check OVS configuratiom</msg>
<arg>Check OVS configuratiom</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:05.741917" elapsed="0.000416"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T00:58:05.744044" level="INFO">sh ovs-vsctl show</msg>
<arg>sh ovs-vsctl show</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T00:58:05.742503" elapsed="0.001599"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-08T00:58:05.753022" level="INFO">9a5df812-eb49-4477-a37e-2d464c02791d
    Bridge s1
        Controller "ptcp:6654"
        Controller "tcp:10.30.171.110:6633"
        fail_mode: secure
        Port s1-eth2
            Interface s1-eth2
        Port s1
            Interface s1
                type: internal
        Port s1-eth1
            Interface s1-eth1
    ovs_version: "2.17.11"
mininet&gt;</msg>
<arg>mininet&gt;</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-08T00:58:05.744284" elapsed="0.008841"/>
</kw>
<return>
<value>${mininet_conn_id}</value>
<status status="PASS" start="2026-04-08T00:58:05.753206" elapsed="0.000057"/>
</return>
<msg time="2026-04-08T00:58:05.753460" level="INFO">${mininet_conn_id} = 462</msg>
<var>${mininet_conn_id}</var>
<arg>${TOOLS_SYSTEM_IP}</arg>
<arg>${ODL_SYSTEM_${follower_node_2}_IP}</arg>
<doc>Start Mininet with custom topology and connect to controller.</doc>
<status status="PASS" start="2026-04-08T00:58:02.922973" elapsed="2.830515"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-08T00:58:05.754155" level="INFO">${mininet_conn_id} = 462</msg>
<arg>${mininet_conn_id}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-08T00:58:05.753760" elapsed="0.000457"/>
</kw>
<doc>Start mininet with connection to cluster Follower Node2.</doc>
<status status="PASS" start="2026-04-08T00:58:02.288626" elapsed="3.465706"/>
</test>
<test id="s1-s3-t19" name="Verify Flows In Switch After Cluster Restart" line="138">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-08T00:58:05.758430" elapsed="0.000221"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-08T00:58:05.758147" elapsed="0.000560"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:58:05.759784" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:58:05.759647" elapsed="0.000186"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:05.759626" elapsed="0.000229"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:58:05.765306" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:58:05.765193" elapsed="0.000158"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:05.765161" elapsed="0.000211"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:58:05.766416" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:58:05.766000" elapsed="0.000444"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:58:05.767007" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:58:05.766694" elapsed="0.000340"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:58:05.767080" elapsed="0.000036"/>
</return>
<msg time="2026-04-08T00:58:05.767264" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:58:05.765622" elapsed="0.001668"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:58:05.772844" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:58:05.772732" elapsed="0.000159"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:05.772712" elapsed="0.000201"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:58:05.774123" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:58:05.774013" elapsed="0.000182"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:05.773994" elapsed="0.000226"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:58:05.774678" level="INFO">${karaf_connection_index} = 444</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:58:05.774369" elapsed="0.000344"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:58:05.775137" level="INFO">${current_connection_index} = 462</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:58:05.774878" elapsed="0.000304"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T00:58:05.826127" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T00:58:05.775716" elapsed="0.050541"/>
</kw>
<msg time="2026-04-08T00:58:05.826438" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T00:58:05.826496" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:58:05.775345" elapsed="0.051190"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T00:58:05.951576" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "a "d "e "r "[C "F "o "l "l "o "w "e "r "[C "F "a "i "l "o "v "e "r ". "V "e "r "i "f "y "[C "F "l "o "w "s "[C "I "n "[C "S "[78Cw "[A[78Ci
 "t "c "h "[C "A "f "t "e "r "[C "C "l "u "s "t "e "r "[C "R "e "s "t "a "r "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T00:58:05.827050" elapsed="0.124960"/>
</kw>
<msg time="2026-04-08T00:58:05.952502" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T00:58:05.952611" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:58:05.826707" elapsed="0.125989"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:05.953621" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:05.952975" elapsed="0.000710"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:05.952910" elapsed="0.000803"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:05.954278" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "a "d "e "r "[C "F "o "l "l "o "w "e "r "[C "F "a "i "l "o "v "e "r ". "V "e "r "i "f "y "[C "F "l "o "w "s "[C "I "n "[C "S "[78Cw "[A[78Ci
 "t "c "h "[C "A "f "t "e "r "[C "C "l "u "s "t "e "r "[C "R "e "s "t "a "r "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:05.953862" elapsed="0.000513"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:05.954664" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:05.954444" elapsed="0.000275"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:05.954425" elapsed="0.000317"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T00:58:05.954780" elapsed="0.000042"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:58:05.957701" elapsed="0.000205"/>
</kw>
<msg time="2026-04-08T00:58:05.957972" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:58:05.956462" elapsed="0.001653"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:05.958422" elapsed="0.000165"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:05.958867" elapsed="0.000074"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:58:05.955737" elapsed="0.003317"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T00:58:05.955118" elapsed="0.004004"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T00:58:05.773706" elapsed="0.185563"/>
</kw>
<msg time="2026-04-08T00:58:05.959376" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:58:05.959421" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:58:05.773066" elapsed="0.186395"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T00:58:05.959683" elapsed="0.000035"/>
</return>
<status status="PASS" start="2026-04-08T00:58:05.959544" elapsed="0.000215"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:05.959523" elapsed="0.000262"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:05.960256" elapsed="0.000035"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:05.960652" elapsed="0.000026"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T00:58:05.960728" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T00:58:05.772370" elapsed="0.188723"/>
</kw>
<msg time="2026-04-08T00:58:05.961239" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:58:05.961288" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:58:05.767696" elapsed="0.193630"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:05.961695" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:05.961418" elapsed="0.000333"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:05.961390" elapsed="0.000384"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T00:58:05.767551" elapsed="0.194247"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:58:05.967626" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:58:05.967513" elapsed="0.000159"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:05.967492" elapsed="0.000202"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:58:05.968953" elapsed="0.000020"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:58:05.968772" elapsed="0.000242"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:05.968752" elapsed="0.000287"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:58:05.969531" level="INFO">${karaf_connection_index} = 448</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:58:05.969216" elapsed="0.000342"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:58:05.969973" level="INFO">${current_connection_index} = 462</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:58:05.969718" elapsed="0.000281"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T00:58:06.027350" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T00:58:05.970555" elapsed="0.057036"/>
</kw>
<msg time="2026-04-08T00:58:06.027841" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T00:58:06.027897" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:58:05.970211" elapsed="0.057739"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T00:58:06.127129" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "a "d "e "r "[C "F "o "l "l "o "w "e "r "[C "F "a "i "l "o "v "e "r ". "V "e "r "i "f "y "[C "F "l "o "w "s "[C "I "n "[C "S "[78Cw "[A[78Ci
 "t "c "h "[C "A "f "t "e "r "[C "C "l "u "s "t "e "r "[C "R "e "s "t "a "r "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T00:58:06.028769" elapsed="0.098688"/>
</kw>
<msg time="2026-04-08T00:58:06.127836" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T00:58:06.127890" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:58:06.028278" elapsed="0.099652"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:06.128471" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:06.128064" elapsed="0.000472"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:06.128024" elapsed="0.000542"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:06.129223" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "a "d "e "r "[C "F "o "l "l "o "w "e "r "[C "F "a "i "l "o "v "e "r ". "V "e "r "i "f "y "[C "F "l "o "w "s "[C "I "n "[C "S "[78Cw "[A[78Ci
 "t "c "h "[C "A "f "t "e "r "[C "C "l "u "s "t "e "r "[C "R "e "s "t "a "r "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:06.128717" elapsed="0.000602"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:06.129621" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:06.129391" elapsed="0.000286"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:06.129372" elapsed="0.000329"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T00:58:06.129741" elapsed="0.000064"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:58:06.132530" elapsed="0.000186"/>
</kw>
<msg time="2026-04-08T00:58:06.132779" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:58:06.131482" elapsed="0.001444"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:06.133373" elapsed="0.000103"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:06.133750" elapsed="0.000077"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:58:06.130796" elapsed="0.003203"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T00:58:06.130158" elapsed="0.003919"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T00:58:05.968468" elapsed="0.165739"/>
</kw>
<msg time="2026-04-08T00:58:06.134306" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:58:06.134353" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:58:05.967877" elapsed="0.166513"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T00:58:06.134581" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-08T00:58:06.134470" elapsed="0.000170"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:06.134451" elapsed="0.000213"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 2,
close the previous connection. In any case create a new connection
to karaf console for 2, set correct prompt set and login to karaf console.
Store connection index for 2 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:06.135239" elapsed="0.000029"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:06.135591" elapsed="0.000026"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T00:58:06.135664" elapsed="0.000017"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T00:58:05.967092" elapsed="0.168686"/>
</kw>
<msg time="2026-04-08T00:58:06.135877" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:58:06.135925" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:58:05.962099" elapsed="0.173885"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:06.136345" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:06.136070" elapsed="0.000329"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:06.136051" elapsed="0.000371"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T00:58:05.961940" elapsed="0.174506"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:58:06.142117" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:58:06.141963" elapsed="0.000282"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:06.141943" elapsed="0.000327"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:58:06.143455" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:58:06.143343" elapsed="0.000158"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:06.143324" elapsed="0.000199"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:58:06.143977" level="INFO">${karaf_connection_index} = 452</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:58:06.143668" elapsed="0.000337"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:58:06.144445" level="INFO">${current_connection_index} = 462</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:58:06.144191" elapsed="0.000281"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T00:58:06.199818" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T00:58:06.144973" elapsed="0.054952"/>
</kw>
<msg time="2026-04-08T00:58:06.200094" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T00:58:06.200141" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:58:06.144638" elapsed="0.055576"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T00:58:06.307358" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "a "d "e "r "[C "F "o "l "l "o "w "e "r "[C "F "a "i "l "o "v "e "r ". "V "e "r "i "f "y "[C "F "l "o "w "s "[C "I "n "[C "S "[78Cw "[A[78Ci
 "t "c "h "[C "A "f "t "e "r "[C "C "l "u "s "t "e "r "[C "R "e "s "t "a "r "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T00:58:06.200728" elapsed="0.106809"/>
</kw>
<msg time="2026-04-08T00:58:06.307729" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T00:58:06.307777" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:58:06.200387" elapsed="0.107428"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:06.308228" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:06.307918" elapsed="0.000371"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:06.307891" elapsed="0.000424"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:06.308805" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "a "d "e "r "[C "F "o "l "l "o "w "e "r "[C "F "a "i "l "o "v "e "r ". "V "e "r "i "f "y "[C "F "l "o "w "s "[C "I "n "[C "S "[78Cw "[A[78Ci
 "t "c "h "[C "A "f "t "e "r "[C "C "l "u "s "t "e "r "[C "R "e "s "t "a "r "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:06.308461" elapsed="0.000438"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:06.309220" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:06.308968" elapsed="0.000307"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:06.308949" elapsed="0.000350"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T00:58:06.309333" elapsed="0.000038"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:58:06.311914" elapsed="0.000180"/>
</kw>
<msg time="2026-04-08T00:58:06.312154" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:58:06.310838" elapsed="0.001480"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:06.312586" elapsed="0.000073"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:06.312912" elapsed="0.000072"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:58:06.310220" elapsed="0.002871"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T00:58:06.309630" elapsed="0.003523"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T00:58:06.142997" elapsed="0.170279"/>
</kw>
<msg time="2026-04-08T00:58:06.313370" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:58:06.313413" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:58:06.142427" elapsed="0.171026"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T00:58:06.313706" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-08T00:58:06.313597" elapsed="0.000167"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:06.313577" elapsed="0.000210"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 3,
close the previous connection. In any case create a new connection
to karaf console for 3, set correct prompt set and login to karaf console.
Store connection index for 3 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:06.314195" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:06.314530" elapsed="0.000023"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T00:58:06.314599" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T00:58:06.141602" elapsed="0.173104"/>
</kw>
<msg time="2026-04-08T00:58:06.314800" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:58:06.314844" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:58:06.136730" elapsed="0.178151"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:06.315240" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:06.314956" elapsed="0.000339"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:06.314939" elapsed="0.000379"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T00:58:06.136588" elapsed="0.178754"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-08T00:58:05.767345" elapsed="0.548031"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-08T00:58:05.764810" elapsed="0.550627"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-08T00:58:05.759323" elapsed="0.556172"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:58:05.758857" elapsed="0.556684"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-08T00:58:05.755681" elapsed="0.559914"/>
</kw>
<kw name="Verify Sample Flow" owner="ClusterOpenFlow">
<if>
<branch type="IF" condition="'${ODL_OF_PLUGIN}' == 'helium'">
<kw name="Set Test Variable" owner="BuiltIn">
<arg>&amp;{dictionary}</arg>
<arg>10.0.1.0/24=2</arg>
<arg>"output-node-connector":"1"=1</arg>
<doc>Makes a variable available everywhere within the scope of the current test.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:06.324012" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:06.323759" elapsed="0.000315"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:06.323741" elapsed="0.000358"/>
</if>
<if>
<branch type="IF" condition="'${ODL_OF_PLUGIN}' == 'lithium'">
<kw name="Set Test Variable" owner="BuiltIn">
<msg time="2026-04-08T00:58:06.327389" level="INFO">&amp;{dictionary} = { 10.0.1.0/24=1 | "output-node-connector":"1"=1 }</msg>
<arg>&amp;{dictionary}</arg>
<arg>10.0.1.0/24=1</arg>
<arg>"output-node-connector":"1"=1</arg>
<doc>Makes a variable available everywhere within the scope of the current test.</doc>
<status status="PASS" start="2026-04-08T00:58:06.324405" elapsed="0.003031"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:06.324152" elapsed="0.003323"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:06.324138" elapsed="0.003362"/>
</if>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Check_Item_Occurrence_Member_List_Or_All" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:58:06.333644" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:58:06.333262" elapsed="0.000409"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:58:06.334126" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:58:06.333828" elapsed="0.000324"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:58:06.334214" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:58:06.334368" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:58:06.332864" elapsed="0.001529"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_From_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:58:06.339840" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:58:06.339539" elapsed="0.000328"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:58:06.339911" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:58:06.340055" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:58:06.339077" elapsed="0.001003"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:06.346746" level="INFO">/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:06.346494" elapsed="0.000297"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:06.347205" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:06.346941" elapsed="0.000309"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:58:06.367327" level="INFO">GET Request : url=http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01jewze00gqgu8yuon50tdwq65226.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:58:06.367527" level="INFO">GET Response : url=http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0?content=nonconfig 
 status=409, reason=Conflict 
 headers={'Content-Type': 'application/yang-data+json', 'Content-Length': '242'} 
 body={
  "errors": {
    "error": [
      {
        "error-tag": "data-missing",
        "error-message": "Request could not be completed because the relevant data model content does not exist",
        "error-type": "protocol"
      }
    ]
  }
} 
 </msg>
<msg time="2026-04-08T00:58:06.367794" level="FAIL">HTTPError: 409 Client Error: Conflict for url: http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0?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-04-08T00:58:06.349410" elapsed="0.019252">HTTPError: 409 Client Error: Conflict for url: http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0?content=nonconfig</status>
</kw>
<status status="FAIL" start="2026-04-08T00:58:06.347318" elapsed="0.021530">HTTPError: 409 Client Error: Conflict for url: http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0?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-04-08T00:58:06.369291" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:06.368923" elapsed="0.000514"/>
</branch>
<status status="FAIL" start="2026-04-08T00:58:06.347299" elapsed="0.022190">HTTPError: 409 Client Error: Conflict for url: http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0?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-04-08T00:58:06.370323" elapsed="0.000057"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:58:06.370615" elapsed="0.000028"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:58:06.370537" elapsed="0.000165"/>
</branch>
<status status="NOT RUN" start="2026-04-08T00:58:06.370499" elapsed="0.000250"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:06.371054" elapsed="0.000046"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-08T00:58:06.371240" elapsed="0.000034"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${access}</arg>
<arg>session=${session}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-08T00:58:06.340494" elapsed="0.030977">HTTPError: 409 Client Error: Conflict for url: http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0?content=nonconfig</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-08T00:58:06.371644" elapsed="0.000043"/>
</return>
<var>${data}</var>
<arg>uri=${uri}</arg>
<arg>member_index=${index}</arg>
<doc>Send a GET with the supplied uri to member ${member_index}.</doc>
<status status="FAIL" start="2026-04-08T00:58:06.338585" elapsed="0.033283">HTTPError: 409 Client Error: Conflict for url: http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0?content=nonconfig</status>
</kw>
<kw name="Check Item Occurrence" owner="Utils">
<arg>${data}</arg>
<arg>${dictionary}</arg>
<doc>Check string for occurrences of items expressed in a list of dictionaries {item=occurrences}. 0 occurences means item is not present.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:06.372412" elapsed="0.000052"/>
</kw>
<var name="${index}">1</var>
<status status="FAIL" start="2026-04-08T00:58:06.334588" elapsed="0.037992">HTTPError: 409 Client Error: Conflict for url: http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0?content=nonconfig</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-04-08T00:58:06.334449" elapsed="0.038255">HTTPError: 409 Client Error: Conflict for url: http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0?content=nonconfig</status>
</for>
<arg>uri=${operational_table_0}</arg>
<arg>dictionary=${dictionary}</arg>
<arg>member_index_list=${controller_index_list}</arg>
<doc>Send a GET with the supplied uri to all or some members defined in ${member_index_list}.
Then check received for occurrences of items expressed in a dictionary {'10.0.1.0/24': '1', '"output-node-connector":"1"': '1'}.</doc>
<status status="FAIL" start="2026-04-08T00:58:06.332293" elapsed="0.040610">HTTPError: 409 Client Error: Conflict for url: http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0?content=nonconfig</status>
</kw>
<kw name="Check_Item_Occurrence_Member_List_Or_All" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:58:07.384059" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:58:07.383441" elapsed="0.000662"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:58:07.384921" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:58:07.384454" elapsed="0.000516"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:58:07.385043" elapsed="0.000053"/>
</return>
<msg time="2026-04-08T00:58:07.385311" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:58:07.382854" elapsed="0.002494"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_From_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:58:07.391188" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:58:07.390866" elapsed="0.000351"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:58:07.391262" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:58:07.391410" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:58:07.390510" elapsed="0.000925"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:07.398031" level="INFO">/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:07.397752" elapsed="0.000328"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:07.398498" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:07.398252" elapsed="0.000291"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:58:07.413763" level="INFO">GET Request : url=http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01jewze00gqgu8yuon50tdwq65226.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:58:07.416836" level="INFO">GET Response : url=http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '962'} 
 body={"flow-node-inventory:table":[{"id":0,"flow":[{"id":"1","table_id":0,"priority":2,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.1.0/24"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":0,"nanosecond":137000000}},"flags":""},{"id":"#UF$TABLE*0-1","table_id":0,"priority":0,"cookie_mask":"0","idle-timeout":0,"cookie":"10","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"output-action":{"max-length":65535,"output-node-connector":"CONTROLLER"}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":0,"nanosecond":4000000}},"flags":"SEND_FLOW_REM"}]}]} 
 </msg>
<msg time="2026-04-08T00:58:07.417078" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:58:07.400582" elapsed="0.016558"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:07.398618" elapsed="0.018652"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:07.417679" elapsed="0.000049"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:07.417333" elapsed="0.000489"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:07.398597" elapsed="0.019274"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:07.423118" level="INFO">{"flow-node-inventory:table":[{"id":0,"flow":[{"id":"1","table_id":0,"priority":2,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.1.0/24"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":0,"nanosecond":137000000}},"flags":""},{"id":"#UF$TABLE*0-1","table_id":0,"priority":0,"cookie_mask":"0","idle-timeout":0,"cookie":"10","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"output-action":{"max-length":65535,"output-node-connector":"CONTROLLER"}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":0,"nanosecond":4000000}},"flags":"SEND_FLOW_REM"}]}]}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:07.419633" elapsed="0.003598"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:07.419306" elapsed="0.003975"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:07.419280" elapsed="0.004036"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:07.427034" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:07.423702" elapsed="0.003391"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:07.423394" elapsed="0.003733"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:07.423371" elapsed="0.003799"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:07.427771" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:07.427370" elapsed="0.000429"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:07.428181" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:07.427920" elapsed="0.000320"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:58:07.428733" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:58:07.428426" elapsed="0.000333"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:07.428264" elapsed="0.000530"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:07.427901" elapsed="0.000915"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:07.429358" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:07.428974" elapsed="0.000411"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:07.429693" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:07.429456" elapsed="0.000294"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:58:07.430264" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:58:07.429932" elapsed="0.000358"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:07.429774" elapsed="0.000551"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:07.429438" elapsed="0.000909"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:58:07.430496" elapsed="0.000346"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:58:07.431323" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:07.431005" elapsed="0.000345"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:58:07.431503" elapsed="0.002239"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:58:07.418677" elapsed="0.015129"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-08T00:58:07.433983" elapsed="0.000030"/>
</return>
<status status="PASS" start="2026-04-08T00:58:07.433876" elapsed="0.000171"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:07.433858" elapsed="0.000213"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:07.434259" elapsed="0.000023"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-08T00:58:07.434332" elapsed="0.000015"/>
</return>
<msg time="2026-04-08T00:58:07.436654" level="INFO">${response_text} = {"flow-node-inventory:table":[{"id":0,"flow":[{"id":"1","table_id":0,"priority":2,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0....</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${access}</arg>
<arg>session=${session}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:58:07.391772" elapsed="0.044911"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:58:07.436736" elapsed="0.000027"/>
</return>
<msg time="2026-04-08T00:58:07.436886" level="INFO">${data} = {"flow-node-inventory:table":[{"id":0,"flow":[{"id":"1","table_id":0,"priority":2,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0....</msg>
<var>${data}</var>
<arg>uri=${uri}</arg>
<arg>member_index=${index}</arg>
<doc>Send a GET with the supplied uri to member ${member_index}.</doc>
<status status="PASS" start="2026-04-08T00:58:07.389993" elapsed="0.046919"/>
</kw>
<kw name="Check Item Occurrence" owner="Utils">
<for flavor="IN">
<iter>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T00:58:07.438115" level="INFO">Item found from container 1 time.</msg>
<arg>${string}</arg>
<arg>${item}</arg>
<arg>${dictionary_item_occurrence}[${item}]</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="PASS" start="2026-04-08T00:58:07.437736" elapsed="0.000468"/>
</kw>
<var name="${item}">10.0.1.0/24</var>
<status status="PASS" start="2026-04-08T00:58:07.437581" elapsed="0.000680"/>
</iter>
<iter>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T00:58:07.438856" level="INFO">Item found from container 1 time.</msg>
<arg>${string}</arg>
<arg>${item}</arg>
<arg>${dictionary_item_occurrence}[${item}]</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="PASS" start="2026-04-08T00:58:07.438495" elapsed="0.000426"/>
</kw>
<var name="${item}">"output-node-connector":"1"</var>
<status status="PASS" start="2026-04-08T00:58:07.438343" elapsed="0.000618"/>
</iter>
<var>${item}</var>
<value>@{dictionary_item_occurrence}</value>
<status status="PASS" start="2026-04-08T00:58:07.437445" elapsed="0.001545"/>
</for>
<arg>${data}</arg>
<arg>${dictionary}</arg>
<doc>Check string for occurrences of items expressed in a list of dictionaries {item=occurrences}. 0 occurences means item is not present.</doc>
<status status="PASS" start="2026-04-08T00:58:07.437151" elapsed="0.001892"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T00:58:07.385625" elapsed="0.053453"/>
</iter>
<iter>
<kw name="Get_From_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:58:07.444803" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:58:07.444502" elapsed="0.000328"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:58:07.444915" elapsed="0.000031"/>
</return>
<msg time="2026-04-08T00:58:07.445074" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:58:07.444097" elapsed="0.001008"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:07.451481" level="INFO">/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:07.451233" elapsed="0.000293"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:07.451916" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:07.451677" elapsed="0.000282"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:58:07.473039" level="INFO">GET Request : url=http://10.30.170.131:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01eq5fxmndxspk37g8qgkyja672.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:58:07.476308" level="INFO">GET Response : url=http://10.30.170.131:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '1086'} 
 body={"flow-node-inventory:table":[{"id":0,"flow":[{"id":"1","table_id":0,"priority":2,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.1.0/24"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":0,"nanosecond":137000000}},"flags":""},{"id":"#UF$TABLE*0-1","table_id":0,"priority":0,"cookie_mask":"0","idle-timeout":0,"cookie":"10","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"output-action":{"max-length":65535,"output-node-connector":"CONTROLLER"}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":0,"nanosecond":4000000}},"flags":"SEND_FLOW_REM"}],"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"6","active-flows":2,"packets-matched":"0"}}]} 
 </msg>
<msg time="2026-04-08T00:58:07.476555" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:58:07.454010" elapsed="0.022603"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:07.452026" elapsed="0.024683"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:07.477114" elapsed="0.000082"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:07.476769" elapsed="0.000526"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:07.452007" elapsed="0.025336"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:07.484312" level="INFO">{"flow-node-inventory:table":[{"id":0,"flow":[{"id":"1","table_id":0,"priority":2,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.1.0/24"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":0,"nanosecond":137000000}},"flags":""},{"id":"#UF$TABLE*0-1","table_id":0,"priority":0,"cookie_mask":"0","idle-timeout":0,"cookie":"10","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"output-action":{"max-length":65535,"output-node-connector":"CONTROLLER"}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":0,"nanosecond":4000000}},"flags":"SEND_FLOW_REM"}],"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"6","active-flows":2,"packets-matched":"0"}}]}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:07.479715" elapsed="0.004653"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:07.479213" elapsed="0.005190"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:07.479139" elapsed="0.005288"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:07.486929" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:07.484709" elapsed="0.002266"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:07.484483" elapsed="0.002526"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:07.484466" elapsed="0.002567"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:07.487599" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:07.487212" elapsed="0.000414"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:07.487929" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:07.487697" elapsed="0.000288"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:58:07.488483" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:58:07.488182" elapsed="0.000328"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:07.488008" elapsed="0.000537"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:07.487679" elapsed="0.000887"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:07.489080" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:07.488722" elapsed="0.000385"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:07.489479" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:07.489243" elapsed="0.000293"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:58:07.490014" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:58:07.489720" elapsed="0.000320"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:07.489563" elapsed="0.000513"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:07.489224" elapsed="0.000873"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:58:07.490263" elapsed="0.000372"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:58:07.491075" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:07.490799" elapsed="0.000302"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:58:07.491273" elapsed="0.002370"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:58:07.478126" elapsed="0.015580"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-08T00:58:07.494017" elapsed="0.000028"/>
</return>
<status status="PASS" start="2026-04-08T00:58:07.493912" elapsed="0.000166"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:07.493894" elapsed="0.000208"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:07.494278" elapsed="0.000023"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-08T00:58:07.494350" elapsed="0.000014"/>
</return>
<msg time="2026-04-08T00:58:07.496685" level="INFO">${response_text} = {"flow-node-inventory:table":[{"id":0,"flow":[{"id":"1","table_id":0,"priority":2,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0....</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${access}</arg>
<arg>session=${session}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:58:07.445474" elapsed="0.051240"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:58:07.496765" elapsed="0.000027"/>
</return>
<msg time="2026-04-08T00:58:07.496913" level="INFO">${data} = {"flow-node-inventory:table":[{"id":0,"flow":[{"id":"1","table_id":0,"priority":2,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0....</msg>
<var>${data}</var>
<arg>uri=${uri}</arg>
<arg>member_index=${index}</arg>
<doc>Send a GET with the supplied uri to member ${member_index}.</doc>
<status status="PASS" start="2026-04-08T00:58:07.443571" elapsed="0.053368"/>
</kw>
<kw name="Check Item Occurrence" owner="Utils">
<for flavor="IN">
<iter>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T00:58:07.498120" level="INFO">Item found from container 1 time.</msg>
<arg>${string}</arg>
<arg>${item}</arg>
<arg>${dictionary_item_occurrence}[${item}]</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="PASS" start="2026-04-08T00:58:07.497749" elapsed="0.000456"/>
</kw>
<var name="${item}">10.0.1.0/24</var>
<status status="PASS" start="2026-04-08T00:58:07.497597" elapsed="0.000649"/>
</iter>
<iter>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T00:58:07.498886" level="INFO">Item found from container 1 time.</msg>
<arg>${string}</arg>
<arg>${item}</arg>
<arg>${dictionary_item_occurrence}[${item}]</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="PASS" start="2026-04-08T00:58:07.498479" elapsed="0.000474"/>
</kw>
<var name="${item}">"output-node-connector":"1"</var>
<status status="PASS" start="2026-04-08T00:58:07.498326" elapsed="0.000666"/>
</iter>
<var>${item}</var>
<value>@{dictionary_item_occurrence}</value>
<status status="PASS" start="2026-04-08T00:58:07.497461" elapsed="0.001560"/>
</for>
<arg>${data}</arg>
<arg>${dictionary}</arg>
<doc>Check string for occurrences of items expressed in a list of dictionaries {item=occurrences}. 0 occurences means item is not present.</doc>
<status status="PASS" start="2026-04-08T00:58:07.497181" elapsed="0.001894"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T00:58:07.439181" elapsed="0.059928"/>
</iter>
<iter>
<kw name="Get_From_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:58:07.504446" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:58:07.504128" elapsed="0.000345"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:58:07.504519" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:58:07.504666" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:58:07.503773" elapsed="0.000917"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:07.511264" level="INFO">/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:07.510994" elapsed="0.000317"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:07.511705" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:07.511463" elapsed="0.000286"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:58:07.531647" level="INFO">GET Request : url=http://10.30.171.110:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0336bvzrfnrhc3cqywxyctca52.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:58:07.532265" level="INFO">GET Response : url=http://10.30.171.110:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '1086'} 
 body={"flow-node-inventory:table":[{"id":0,"flow":[{"id":"1","table_id":0,"priority":2,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.1.0/24"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":0,"nanosecond":137000000}},"flags":""},{"id":"#UF$TABLE*0-1","table_id":0,"priority":0,"cookie_mask":"0","idle-timeout":0,"cookie":"10","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"output-action":{"max-length":65535,"output-node-connector":"CONTROLLER"}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":0,"nanosecond":4000000}},"flags":"SEND_FLOW_REM"}],"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"6","active-flows":2,"packets-matched":"0"}}]} 
 </msg>
<msg time="2026-04-08T00:58:07.532499" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:58:07.513764" elapsed="0.018795"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:07.511816" elapsed="0.020838"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:07.533046" elapsed="0.000047"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:07.532713" elapsed="0.000509"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:07.511798" elapsed="0.021474"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:07.541556" level="INFO">{"flow-node-inventory:table":[{"id":0,"flow":[{"id":"1","table_id":0,"priority":2,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.1.0/24"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":0,"nanosecond":137000000}},"flags":""},{"id":"#UF$TABLE*0-1","table_id":0,"priority":0,"cookie_mask":"0","idle-timeout":0,"cookie":"10","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"output-action":{"max-length":65535,"output-node-connector":"CONTROLLER"}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":0,"nanosecond":4000000}},"flags":"SEND_FLOW_REM"}],"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"6","active-flows":2,"packets-matched":"0"}}]}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:07.535605" elapsed="0.006075"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:07.535090" elapsed="0.006668"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:07.535049" elapsed="0.006764"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:07.545400" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:07.542475" elapsed="0.002971"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:07.541941" elapsed="0.003540"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:07.541902" elapsed="0.003604"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:07.546039" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:07.545666" elapsed="0.000400"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:07.546395" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:07.546138" elapsed="0.000314"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:58:07.546964" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:58:07.546639" elapsed="0.000351"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:07.546476" elapsed="0.000550"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:07.546120" elapsed="0.000928"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:07.547585" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:07.547224" elapsed="0.000387"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:07.547910" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:07.547681" elapsed="0.000286"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:58:07.548458" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:58:07.548147" elapsed="0.000337"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:07.547990" elapsed="0.000528"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:07.547663" elapsed="0.000876"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:58:07.548685" elapsed="0.000342"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:58:07.549477" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:07.549206" elapsed="0.000296"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:58:07.549652" elapsed="0.002270"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:58:07.534044" elapsed="0.017941"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-08T00:58:07.552161" elapsed="0.000042"/>
</return>
<status status="PASS" start="2026-04-08T00:58:07.552054" elapsed="0.000184"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:07.552036" elapsed="0.000226"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:07.552406" elapsed="0.000022"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-08T00:58:07.552476" elapsed="0.000015"/>
</return>
<msg time="2026-04-08T00:58:07.554786" level="INFO">${response_text} = {"flow-node-inventory:table":[{"id":0,"flow":[{"id":"1","table_id":0,"priority":2,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0....</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${access}</arg>
<arg>session=${session}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:58:07.505016" elapsed="0.049799"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:58:07.554866" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:58:07.555033" level="INFO">${data} = {"flow-node-inventory:table":[{"id":0,"flow":[{"id":"1","table_id":0,"priority":2,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0....</msg>
<var>${data}</var>
<arg>uri=${uri}</arg>
<arg>member_index=${index}</arg>
<doc>Send a GET with the supplied uri to member ${member_index}.</doc>
<status status="PASS" start="2026-04-08T00:58:07.503278" elapsed="0.051781"/>
</kw>
<kw name="Check Item Occurrence" owner="Utils">
<for flavor="IN">
<iter>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T00:58:07.556273" level="INFO">Item found from container 1 time.</msg>
<arg>${string}</arg>
<arg>${item}</arg>
<arg>${dictionary_item_occurrence}[${item}]</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="PASS" start="2026-04-08T00:58:07.555887" elapsed="0.000455"/>
</kw>
<var name="${item}">10.0.1.0/24</var>
<status status="PASS" start="2026-04-08T00:58:07.555707" elapsed="0.000675"/>
</iter>
<iter>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T00:58:07.556968" level="INFO">Item found from container 1 time.</msg>
<arg>${string}</arg>
<arg>${item}</arg>
<arg>${dictionary_item_occurrence}[${item}]</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="PASS" start="2026-04-08T00:58:07.556613" elapsed="0.000421"/>
</kw>
<var name="${item}">"output-node-connector":"1"</var>
<status status="PASS" start="2026-04-08T00:58:07.556463" elapsed="0.000609"/>
</iter>
<var>${item}</var>
<value>@{dictionary_item_occurrence}</value>
<status status="PASS" start="2026-04-08T00:58:07.555576" elapsed="0.001525"/>
</for>
<arg>${data}</arg>
<arg>${dictionary}</arg>
<doc>Check string for occurrences of items expressed in a list of dictionaries {item=occurrences}. 0 occurences means item is not present.</doc>
<status status="PASS" start="2026-04-08T00:58:07.555301" elapsed="0.001852"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T00:58:07.499217" elapsed="0.057988"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-08T00:58:07.385426" elapsed="0.171808"/>
</for>
<arg>uri=${operational_table_0}</arg>
<arg>dictionary=${dictionary}</arg>
<arg>member_index_list=${controller_index_list}</arg>
<doc>Send a GET with the supplied uri to all or some members defined in ${member_index_list}.
Then check received for occurrences of items expressed in a dictionary {'10.0.1.0/24': '1', '"output-node-connector":"1"': '1'}.</doc>
<status status="PASS" start="2026-04-08T00:58:07.381823" elapsed="0.175463"/>
</kw>
<arg>15s</arg>
<arg>1s</arg>
<arg>ClusterManagement.Check_Item_Occurrence_Member_List_Or_All</arg>
<arg>uri=${operational_table_0}</arg>
<arg>dictionary=${dictionary}</arg>
<arg>member_index_list=${controller_index_list}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-08T00:58:06.327674" elapsed="1.229667"/>
</kw>
<doc>Verify sample flow gets applied in all instances in ${controller_index_list}.</doc>
<status status="PASS" start="2026-04-08T00:58:06.321822" elapsed="1.235587"/>
</kw>
<doc>Verify flows are installed in switch after cluster restart.</doc>
<status status="PASS" start="2026-04-08T00:58:05.754902" elapsed="1.802621"/>
</test>
<test id="s1-s3-t20" name="Delete Flows In Follower Node1 and Verify After Leader Restart" line="142">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-08T00:58:07.560756" elapsed="0.000204"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-08T00:58:07.560497" elapsed="0.000517"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:58:07.561989" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:58:07.561883" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:07.561865" elapsed="0.000190"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:58:07.567074" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:58:07.566921" elapsed="0.000200"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:07.566902" elapsed="0.000241"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:58:07.568190" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:58:07.567794" elapsed="0.000424"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:58:07.568675" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:58:07.568371" elapsed="0.000331"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:58:07.568745" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:58:07.568899" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:58:07.567414" elapsed="0.001551"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:58:07.574082" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:58:07.573978" elapsed="0.000149"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:07.573959" elapsed="0.000189"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:58:07.575419" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:58:07.575313" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:07.575294" elapsed="0.000192"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:58:07.575930" level="INFO">${karaf_connection_index} = 444</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:58:07.575630" elapsed="0.000327"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:58:07.576386" level="INFO">${current_connection_index} = 462</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:58:07.576114" elapsed="0.000298"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T00:58:07.619626" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T00:58:07.576905" elapsed="0.042849"/>
</kw>
<msg time="2026-04-08T00:58:07.619953" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T00:58:07.620001" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:58:07.576572" elapsed="0.043465"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T00:58:07.727182" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "a "d "e "r "[C "F "o "l "l "o "w "e "r "[C "F "a "i "l "o "v "e "r ". "D "e "l "e "t "e "[C "F "l "o "w "s "[C "I "n "[C "F "[78Co "[A[78Cl
 "l "o "w "e "r "[C "N "o "d "e "1 "[C "a "n "d "[C "V "e "r "i "f "y "[C "A "f "t "e "r "[C "L "e "a "d "e "r "[C "R "e "s "t "a "r "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T00:58:07.620644" elapsed="0.106793"/>
</kw>
<msg time="2026-04-08T00:58:07.727662" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T00:58:07.727709" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:58:07.620273" elapsed="0.107472"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:07.728249" elapsed="0.000028"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:07.727869" elapsed="0.000443"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:07.727830" elapsed="0.000565"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:07.728909" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "a "d "e "r "[C "F "o "l "l "o "w "e "r "[C "F "a "i "l "o "v "e "r ". "D "e "l "e "t "e "[C "F "l "o "w "s "[C "I "n "[C "F "[78Co "[A[78Cl
 "l "o "w "e "r "[C "N "o "d "e "1 "[C "a "n "d "[C "V "e "r "i "f "y "[C "A "f "t "e "r "[C "L "e "a "d "e "r "[C "R "e "s "t "a "r "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:07.728544" elapsed="0.000459"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:07.729311" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:07.729072" elapsed="0.000295"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:07.729053" elapsed="0.000340"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T00:58:07.729430" elapsed="0.000039"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:58:07.732122" elapsed="0.000424"/>
</kw>
<msg time="2026-04-08T00:58:07.732613" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:58:07.730985" elapsed="0.001761"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:07.733019" elapsed="0.000076"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:07.733373" elapsed="0.000074"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:58:07.730350" elapsed="0.003207"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T00:58:07.729754" elapsed="0.003921"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T00:58:07.574933" elapsed="0.158843"/>
</kw>
<msg time="2026-04-08T00:58:07.733869" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:58:07.733914" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:58:07.574331" elapsed="0.159619"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T00:58:07.734135" elapsed="0.000044"/>
</return>
<status status="PASS" start="2026-04-08T00:58:07.734028" elapsed="0.000186"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:07.734009" elapsed="0.000229"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:07.734633" elapsed="0.000024"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:07.734965" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T00:58:07.735036" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T00:58:07.573639" elapsed="0.161503"/>
</kw>
<msg time="2026-04-08T00:58:07.735253" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:58:07.735297" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:58:07.569343" elapsed="0.165989"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:07.735655" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:07.735408" elapsed="0.000300"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:07.735391" elapsed="0.000340"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T00:58:07.569204" elapsed="0.166550"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:58:07.741017" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:58:07.740910" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:07.740892" elapsed="0.000191"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:58:07.742270" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:58:07.742134" elapsed="0.000181"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:07.742116" elapsed="0.000221"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:58:07.742795" level="INFO">${karaf_connection_index} = 448</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:58:07.742492" elapsed="0.000329"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:58:07.743244" level="INFO">${current_connection_index} = 462</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:58:07.742976" elapsed="0.000294"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T00:58:07.782466" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T00:58:07.743758" elapsed="0.038821"/>
</kw>
<msg time="2026-04-08T00:58:07.782749" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T00:58:07.782797" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:58:07.743427" elapsed="0.039405"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T00:58:07.892056" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "a "d "e "r "[C "F "o "l "l "o "w "e "r "[C "F "a "i "l "o "v "e "r ". "D "e "l "e "t "e "[C "F "l "o "w "s "[C "I "n "[C "F "[78Co "[A[78Cl
 "l "o "w "e "r "[C "N "o "d "e "1 "[C "a "n "d "[C "V "e "r "i "f "y "[C "A "f "t "e "r "[C "L "e "a "d "e "r "[C "R "e "s "t "a "r "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T00:58:07.783405" elapsed="0.108814"/>
</kw>
<msg time="2026-04-08T00:58:07.892388" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T00:58:07.892436" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:58:07.783015" elapsed="0.109458"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:07.892928" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:07.892640" elapsed="0.000345"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:07.892612" elapsed="0.000399"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:07.893519" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "a "d "e "r "[C "F "o "l "l "o "w "e "r "[C "F "a "i "l "o "v "e "r ". "D "e "l "e "t "e "[C "F "l "o "w "s "[C "I "n "[C "F "[78Co "[A[78Cl
 "l "o "w "e "r "[C "N "o "d "e "1 "[C "a "n "d "[C "V "e "r "i "f "y "[C "A "f "t "e "r "[C "L "e "a "d "e "r "[C "R "e "s "t "a "r "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:07.893153" elapsed="0.000457"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:07.893892" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:07.893678" elapsed="0.000267"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:07.893659" elapsed="0.000309"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T00:58:07.894004" elapsed="0.000035"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:58:07.896633" elapsed="0.000182"/>
</kw>
<msg time="2026-04-08T00:58:07.896892" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:58:07.895521" elapsed="0.001502"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:07.897312" elapsed="0.000075"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:07.897635" elapsed="0.000299"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:58:07.894876" elapsed="0.003170"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T00:58:07.894323" elapsed="0.003787"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T00:58:07.741836" elapsed="0.156393"/>
</kw>
<msg time="2026-04-08T00:58:07.898321" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:58:07.898364" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:58:07.741286" elapsed="0.157115"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T00:58:07.898585" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-08T00:58:07.898478" elapsed="0.000183"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:07.898459" elapsed="0.000227"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 2,
close the previous connection. In any case create a new connection
to karaf console for 2, set correct prompt set and login to karaf console.
Store connection index for 2 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:07.899072" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:07.899419" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T00:58:07.899489" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T00:58:07.740573" elapsed="0.159023"/>
</kw>
<msg time="2026-04-08T00:58:07.899690" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:58:07.899733" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:58:07.736045" elapsed="0.163724"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:07.900086" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:07.899844" elapsed="0.000294"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:07.899827" elapsed="0.000349"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T00:58:07.735880" elapsed="0.164322"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:58:07.905300" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:58:07.905193" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:07.905174" elapsed="0.000191"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:58:07.906510" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:58:07.906367" elapsed="0.000193"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:07.906350" elapsed="0.000235"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:58:07.907024" level="INFO">${karaf_connection_index} = 452</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:58:07.906727" elapsed="0.000323"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:58:07.907466" level="INFO">${current_connection_index} = 462</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:58:07.907221" elapsed="0.000271"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T00:58:07.953843" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T00:58:07.907977" elapsed="0.045986"/>
</kw>
<msg time="2026-04-08T00:58:07.954134" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T00:58:07.954207" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:58:07.907648" elapsed="0.046598"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T00:58:08.072432" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "a "d "e "r "[C "F "o "l "l "o "w "e "r "[C "F "a "i "l "o "v "e "r ". "D "e "l "e "t "e "[C "F "l "o "w "s "[C "I "n "[C "F "[78Co "[A[78Cl
 "l "o "w "e "r "[C "N "o "d "e "1 "[C "a "n "d "[C "V "e "r "i "f "y "[C "A "f "t "e "r "[C "L "e "a "d "e "r "[C "R "e "s "t "a "r "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T00:58:07.954972" elapsed="0.117733"/>
</kw>
<msg time="2026-04-08T00:58:08.072947" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T00:58:08.072999" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:58:07.954429" elapsed="0.118607"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:08.073534" elapsed="0.000027"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:08.073187" elapsed="0.000408"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:08.073125" elapsed="0.000497"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:08.074220" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "a "d "e "r "[C "F "o "l "l "o "w "e "r "[C "F "a "i "l "o "v "e "r ". "D "e "l "e "t "e "[C "F "l "o "w "s "[C "I "n "[C "F "[78Co "[A[78Cl
 "l "o "w "e "r "[C "N "o "d "e "1 "[C "a "n "d "[C "V "e "r "i "f "y "[C "A "f "t "e "r "[C "L "e "a "d "e "r "[C "R "e "s "t "a "r "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:08.073801" elapsed="0.000514"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:08.074605" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:08.074385" elapsed="0.000274"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:08.074365" elapsed="0.000317"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T00:58:08.074720" elapsed="0.000039"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:58:08.077552" elapsed="0.000188"/>
</kw>
<msg time="2026-04-08T00:58:08.077832" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:58:08.076451" elapsed="0.001519"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:08.078346" elapsed="0.000092"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:08.078721" elapsed="0.000075"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:58:08.075763" elapsed="0.003144"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T00:58:08.075041" elapsed="0.003933"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T00:58:07.906048" elapsed="0.173024"/>
</kw>
<msg time="2026-04-08T00:58:08.079187" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:58:08.079234" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:58:07.905510" elapsed="0.173759"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T00:58:08.079458" elapsed="0.000271"/>
</return>
<status status="PASS" start="2026-04-08T00:58:08.079350" elapsed="0.000494"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:08.079331" elapsed="0.000541"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 3,
close the previous connection. In any case create a new connection
to karaf console for 3, set correct prompt set and login to karaf console.
Store connection index for 3 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:08.080307" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:08.080648" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T00:58:08.080720" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T00:58:07.904830" elapsed="0.176008"/>
</kw>
<msg time="2026-04-08T00:58:08.080954" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:58:08.081001" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:58:07.900464" elapsed="0.180574"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:08.081391" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:08.081117" elapsed="0.000328"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:08.081098" elapsed="0.000371"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T00:58:07.900328" elapsed="0.181165"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-08T00:58:07.569018" elapsed="0.512508"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-08T00:58:07.566562" elapsed="0.515022"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-08T00:58:07.561600" elapsed="0.520044"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:58:07.561175" elapsed="0.520520"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-08T00:58:07.558414" elapsed="0.523337"/>
</kw>
<kw name="Delete Sample Flow And Verify" owner="ClusterOpenFlow">
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-08T00:58:08.084582" level="INFO">${dictionary} = {'10.0.1.0/24': '0'}</msg>
<var>${dictionary}</var>
<arg>10.0.1.0/24=0</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-08T00:58:08.084130" elapsed="0.000484"/>
</kw>
<kw name="Delete_And_Check_Member_List_Or_All" owner="ClusterManagement">
<kw name="Delete_From_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:58:08.094559" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:58:08.094248" elapsed="0.000338"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:58:08.094630" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:58:08.094811" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:58:08.093807" elapsed="0.001029"/>
</kw>
<kw name="Delete_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:08.097675" level="INFO">/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0/flow=1</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:08.097424" elapsed="0.000300"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="DELETE On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:58:08.127449" level="INFO">DELETE Request : url=http://10.30.170.131:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0/flow=1 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0/flow=1 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01eq5fxmndxspk37g8qgkyja672.node0', 'Content-Length': '0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:58:08.127565" level="INFO">DELETE Response : url=http://10.30.170.131:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0/flow=1 
 status=204, reason=No Content 
 headers={} 
 body=None 
 </msg>
<msg time="2026-04-08T00:58:08.127826" level="INFO">${response} = &lt;Response [204]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<doc>Sends a DELETE request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:58:08.099840" elapsed="0.028050"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:08.097807" elapsed="0.030177"/>
</branch>
<branch type="ELSE">
<kw name="DELETE On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a DELETE request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:08.128531" elapsed="0.000183"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:08.128051" elapsed="0.000791"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:08.097787" elapsed="0.031112"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:08.138522" level="INFO"/>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:08.131467" elapsed="0.007196"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:08.130887" elapsed="0.007932"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:08.130840" elapsed="0.008035"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:08.141583" level="INFO">204</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:08.139282" elapsed="0.002349"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:08.138972" elapsed="0.002694"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:08.138945" elapsed="0.002747"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:08.142356" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:08.141891" elapsed="0.000492"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:08.142694" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:08.142455" elapsed="0.000296"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:58:08.143258" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:58:08.142937" elapsed="0.000349"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:08.142775" elapsed="0.000548"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:08.142436" elapsed="0.000909"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:08.143893" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:08.143502" elapsed="0.000418"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:08.144245" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:08.143992" elapsed="0.000312"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:58:08.144782" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:58:08.144484" elapsed="0.000324"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:08.144327" elapsed="0.000520"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:08.143974" elapsed="0.000902"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:58:08.145077" elapsed="0.000382"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:58:08.145927" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:08.145627" elapsed="0.000327"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:58:08.146108" elapsed="0.002223"/>
</kw>
<arg>${response}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:58:08.129783" elapsed="0.018616"/>
</kw>
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-08T00:58:08.148449" elapsed="0.000039"/>
</return>
<msg time="2026-04-08T00:58:08.150646" level="INFO">${response_text} = </msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>session=${session}</arg>
<doc>DELETE resource at URI, check status_code and return response text..</doc>
<status status="PASS" start="2026-04-08T00:58:08.095113" elapsed="0.055561"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:58:08.150725" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:58:08.150877" level="INFO">${response_text} = </msg>
<var>${response_text}</var>
<arg>${uri}</arg>
<arg>${member_index}</arg>
<doc>Send a DELETE with the supplied uri to member 2.</doc>
<status status="PASS" start="2026-04-08T00:58:08.093400" elapsed="0.057501"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Check_No_Content_Member_List_Or_All" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:58:08.153122" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:58:08.152714" elapsed="0.000463"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:58:08.153660" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:58:08.153353" elapsed="0.000333"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:58:08.153731" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:58:08.153885" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:58:08.152329" elapsed="0.001580"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:58:08.154965" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:58:08.154669" elapsed="0.000322"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:58:08.155036" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:58:08.155200" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:58:08.154327" elapsed="0.000941"/>
</kw>
<kw name="No Content From URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:58:08.175380" level="INFO">GET Request : url=http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0/flow=1 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0/flow=1 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01jewze00gqgu8yuon50tdwq65226.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:58:08.176321" level="INFO">GET Response : url=http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0/flow=1 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '514'} 
 body={"flow-node-inventory:flow":[{"id":"1","table_id":0,"priority":2,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.1.0/24"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":0,"nanosecond":137000000}},"flags":""}]} 
 </msg>
<msg time="2026-04-08T00:58:08.176556" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${headers}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:58:08.156030" elapsed="0.020584"/>
</kw>
<if>
<branch type="IF" condition="${resp.status_code} == 404 or ${resp.status_code} == 409">
<return>
<status status="NOT RUN" start="2026-04-08T00:58:08.187423" elapsed="0.000038"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:58:08.176827" elapsed="0.010704"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:08.176777" elapsed="0.010818"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:08.190094" level="INFO">{"flow-node-inventory:flow":[{"id":"1","table_id":0,"priority":2,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.1.0/24"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":0,"nanosecond":137000000}},"flags":""}]}</msg>
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:08.187811" elapsed="0.002335"/>
</kw>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T00:58:08.192701" level="FAIL">The request failed with code 200</msg>
<arg>The request failed with code ${resp.status_code}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T00:58:08.190320" elapsed="0.002461">The request failed with code 200</status>
</kw>
<arg>${session}</arg>
<arg>${uri}</arg>
<doc>Issue a Get On Session and return on error 404 (No content) or will fail and log the content.
Issues a Get On Session for /rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0/flow=1 in ClusterManagement__session_1 using headers from
{'Content-Type': 'application/json'}. If the request returns a HTTP error, fails. Otherwise
returns the data obtained by the request.</doc>
<status status="FAIL" start="2026-04-08T00:58:08.155629" elapsed="0.037271">The request failed with code 200</status>
</kw>
<var name="${index}">1</var>
<status status="FAIL" start="2026-04-08T00:58:08.154108" elapsed="0.038857">The request failed with code 200</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-04-08T00:58:08.153965" elapsed="0.039057">The request failed with code 200</status>
</for>
<arg>uri=${uri}</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Send a GET with the supplied uri to all or some members defined in .
Then check there is no content.</doc>
<status status="FAIL" start="2026-04-08T00:58:08.151747" elapsed="0.041382">The request failed with code 200</status>
</kw>
<kw name="Check_No_Content_Member_List_Or_All" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:58:09.197402" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:58:09.196410" elapsed="0.001061"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:58:09.198564" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:58:09.197838" elapsed="0.000784"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:58:09.198728" elapsed="0.000079"/>
</return>
<msg time="2026-04-08T00:58:09.199089" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:58:09.195516" elapsed="0.003630"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:58:09.201188" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:58:09.200753" elapsed="0.000475"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:58:09.201290" elapsed="0.000040"/>
</return>
<msg time="2026-04-08T00:58:09.201493" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:58:09.200036" elapsed="0.001492"/>
</kw>
<kw name="No Content From URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:58:09.212601" level="INFO">GET Request : url=http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0/flow=1 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0/flow=1 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01jewze00gqgu8yuon50tdwq65226.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:58:09.212793" level="INFO">GET Response : url=http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0/flow=1 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '514'} 
 body={"flow-node-inventory:flow":[{"id":"1","table_id":0,"priority":2,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.1.0/24"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":0,"nanosecond":137000000}},"flags":""}]} 
 </msg>
<msg time="2026-04-08T00:58:09.213007" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${headers}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:58:09.202598" elapsed="0.010447"/>
</kw>
<if>
<branch type="IF" condition="${resp.status_code} == 404 or ${resp.status_code} == 409">
<return>
<status status="NOT RUN" start="2026-04-08T00:58:09.219018" elapsed="0.000022"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:58:09.213189" elapsed="0.005889"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:09.213137" elapsed="0.005972"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:09.224705" level="INFO">{"flow-node-inventory:flow":[{"id":"1","table_id":0,"priority":2,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.1.0/24"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":0,"nanosecond":137000000}},"flags":""}]}</msg>
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:09.219337" elapsed="0.005420"/>
</kw>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T00:58:09.227248" level="FAIL">The request failed with code 200</msg>
<arg>The request failed with code ${resp.status_code}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T00:58:09.224912" elapsed="0.002408">The request failed with code 200</status>
</kw>
<arg>${session}</arg>
<arg>${uri}</arg>
<doc>Issue a Get On Session and return on error 404 (No content) or will fail and log the content.
Issues a Get On Session for /rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0/flow=1 in ClusterManagement__session_1 using headers from
{'Content-Type': 'application/json'}. If the request returns a HTTP error, fails. Otherwise
returns the data obtained by the request.</doc>
<status status="FAIL" start="2026-04-08T00:58:09.202017" elapsed="0.025411">The request failed with code 200</status>
</kw>
<var name="${index}">1</var>
<status status="FAIL" start="2026-04-08T00:58:09.199667" elapsed="0.027824">The request failed with code 200</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-04-08T00:58:09.199304" elapsed="0.028243">The request failed with code 200</status>
</for>
<arg>uri=${uri}</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Send a GET with the supplied uri to all or some members defined in .
Then check there is no content.</doc>
<status status="FAIL" start="2026-04-08T00:58:09.194220" elapsed="0.033441">The request failed with code 200</status>
</kw>
<kw name="Check_No_Content_Member_List_Or_All" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:58:10.231650" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:58:10.230538" elapsed="0.001204"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:58:10.232876" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:58:10.232242" elapsed="0.000678"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:58:10.232989" elapsed="0.000056"/>
</return>
<msg time="2026-04-08T00:58:10.233255" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:58:10.229545" elapsed="0.003747"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:58:10.234749" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:58:10.234324" elapsed="0.000462"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:58:10.234848" elapsed="0.000039"/>
</return>
<msg time="2026-04-08T00:58:10.235051" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:58:10.233812" elapsed="0.001273"/>
</kw>
<kw name="No Content From URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:58:10.246984" level="INFO">GET Request : url=http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0/flow=1 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0/flow=1 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01jewze00gqgu8yuon50tdwq65226.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:58:10.247230" level="INFO">GET Response : url=http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0/flow=1 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '514'} 
 body={"flow-node-inventory:flow":[{"id":"1","table_id":0,"priority":2,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.1.0/24"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":0,"nanosecond":137000000}},"flags":""}]} 
 </msg>
<msg time="2026-04-08T00:58:10.247404" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${headers}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:58:10.236249" elapsed="0.011213"/>
</kw>
<if>
<branch type="IF" condition="${resp.status_code} == 404 or ${resp.status_code} == 409">
<return>
<status status="NOT RUN" start="2026-04-08T00:58:10.253585" elapsed="0.000022"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:58:10.247595" elapsed="0.006051"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:10.247564" elapsed="0.006113"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:10.256966" level="INFO">{"flow-node-inventory:flow":[{"id":"1","table_id":0,"priority":2,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.1.0/24"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":0,"nanosecond":137000000}},"flags":""}]}</msg>
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:10.253892" elapsed="0.003198"/>
</kw>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T00:58:10.259656" level="FAIL">The request failed with code 200</msg>
<arg>The request failed with code ${resp.status_code}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T00:58:10.257276" elapsed="0.002459">The request failed with code 200</status>
</kw>
<arg>${session}</arg>
<arg>${uri}</arg>
<doc>Issue a Get On Session and return on error 404 (No content) or will fail and log the content.
Issues a Get On Session for /rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0/flow=1 in ClusterManagement__session_1 using headers from
{'Content-Type': 'application/json'}. If the request returns a HTTP error, fails. Otherwise
returns the data obtained by the request.</doc>
<status status="FAIL" start="2026-04-08T00:58:10.235644" elapsed="0.024204">The request failed with code 200</status>
</kw>
<var name="${index}">1</var>
<status status="FAIL" start="2026-04-08T00:58:10.233572" elapsed="0.026340">The request failed with code 200</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-04-08T00:58:10.233374" elapsed="0.026595">The request failed with code 200</status>
</for>
<arg>uri=${uri}</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Send a GET with the supplied uri to all or some members defined in .
Then check there is no content.</doc>
<status status="FAIL" start="2026-04-08T00:58:10.228581" elapsed="0.031478">The request failed with code 200</status>
</kw>
<kw name="Check_No_Content_Member_List_Or_All" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:58:11.264364" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:58:11.263315" elapsed="0.001119"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:58:11.265239" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:58:11.264774" elapsed="0.000503"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:58:11.265345" elapsed="0.000058"/>
</return>
<msg time="2026-04-08T00:58:11.265585" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:58:11.262395" elapsed="0.003225"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:58:11.267480" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:58:11.267017" elapsed="0.000501"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:58:11.267584" elapsed="0.000040"/>
</return>
<msg time="2026-04-08T00:58:11.267792" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:58:11.266131" elapsed="0.001697"/>
</kw>
<kw name="No Content From URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:58:11.278246" level="INFO">GET Request : url=http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0/flow=1 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0/flow=1 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01jewze00gqgu8yuon50tdwq65226.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:58:11.278436" level="INFO">GET Response : url=http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0/flow=1 
 status=409, reason=Conflict 
 headers={'Content-Type': 'application/yang-data+json', 'Content-Length': '242'} 
 body={
  "errors": {
    "error": [
      {
        "error-tag": "data-missing",
        "error-message": "Request could not be completed because the relevant data model content does not exist",
        "error-type": "protocol"
      }
    ]
  }
} 
 </msg>
<msg time="2026-04-08T00:58:11.278582" level="INFO">${resp} = &lt;Response [409]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${headers}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:58:11.268926" elapsed="0.009692"/>
</kw>
<if>
<branch type="IF" condition="${resp.status_code} == 404 or ${resp.status_code} == 409">
<return>
<status status="PASS" start="2026-04-08T00:58:11.284728" elapsed="0.000038"/>
</return>
<status status="PASS" start="2026-04-08T00:58:11.278741" elapsed="0.006068"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:11.278710" elapsed="0.006133"/>
</if>
<kw name="Log" owner="BuiltIn">
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:11.285054" elapsed="0.000032"/>
</kw>
<kw name="Fail" owner="BuiltIn">
<arg>The request failed with code ${resp.status_code}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:11.285310" elapsed="0.000029"/>
</kw>
<arg>${session}</arg>
<arg>${uri}</arg>
<doc>Issue a Get On Session and return on error 404 (No content) or will fail and log the content.
Issues a Get On Session for /rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0/flow=1 in ClusterManagement__session_1 using headers from
{'Content-Type': 'application/json'}. If the request returns a HTTP error, fails. Otherwise
returns the data obtained by the request.</doc>
<status status="PASS" start="2026-04-08T00:58:11.268362" elapsed="0.017058"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T00:58:11.265899" elapsed="0.019570"/>
</iter>
<iter>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:58:11.286745" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:58:11.286325" elapsed="0.000456"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:58:11.286843" elapsed="0.000038"/>
</return>
<msg time="2026-04-08T00:58:11.287044" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>member_index=${index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:58:11.285823" elapsed="0.001254"/>
</kw>
<kw name="No Content From URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:58:11.305042" level="INFO">GET Request : url=http://10.30.170.131:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0/flow=1 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0/flow=1 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01eq5fxmndxspk37g8qgkyja672.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:58:11.305220" level="INFO">GET Response : url=http://10.30.170.131:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0/flow=1 
 status=409, reason=Conflict 
 headers={'Content-Type': 'application/yang-data+json', 'Content-Length': '242'} 
 body={
  "errors": {
    "error": [
      {
        "error-tag": "data-missing",
        "error-message": "Request could not be completed because the relevant data model content does not exist",
        "error-type": "protocol"
      }
    ]
  }
} 
 </msg>
<msg time="2026-04-08T00:58:11.305352" level="INFO">${resp} = &lt;Response [409]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${headers}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:58:11.288230" elapsed="0.017158"/>
</kw>
<if>
<branch type="IF" condition="${resp.status_code} == 404 or ${resp.status_code} == 409">
<return>
<status status="PASS" start="2026-04-08T00:58:11.311376" elapsed="0.000039"/>
</return>
<status status="PASS" start="2026-04-08T00:58:11.305501" elapsed="0.005958"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:11.305474" elapsed="0.006018"/>
</if>
<kw name="Log" owner="BuiltIn">
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:11.311704" elapsed="0.000033"/>
</kw>
<kw name="Fail" owner="BuiltIn">
<arg>The request failed with code ${resp.status_code}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:11.311935" elapsed="0.000028"/>
</kw>
<arg>${session}</arg>
<arg>${uri}</arg>
<doc>Issue a Get On Session and return on error 404 (No content) or will fail and log the content.
Issues a Get On Session for /rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0/flow=1 in ClusterManagement__session_2 using headers from
{'Content-Type': 'application/json'}. If the request returns a HTTP error, fails. Otherwise
returns the data obtained by the request.</doc>
<status status="PASS" start="2026-04-08T00:58:11.287651" elapsed="0.024391"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T00:58:11.285595" elapsed="0.026497"/>
</iter>
<iter>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:58:11.313524" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:58:11.313065" elapsed="0.000496"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:58:11.313623" elapsed="0.000039"/>
</return>
<msg time="2026-04-08T00:58:11.313825" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>member_index=${index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:58:11.312491" elapsed="0.001368"/>
</kw>
<kw name="No Content From URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:58:11.330512" level="INFO">GET Request : url=http://10.30.171.110:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0/flow=1 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0/flow=1 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0336bvzrfnrhc3cqywxyctca52.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:58:11.330621" level="INFO">GET Response : url=http://10.30.171.110:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0/flow=1 
 status=409, reason=Conflict 
 headers={'Content-Type': 'application/yang-data+json', 'Content-Length': '242'} 
 body={
  "errors": {
    "error": [
      {
        "error-tag": "data-missing",
        "error-message": "Request could not be completed because the relevant data model content does not exist",
        "error-type": "protocol"
      }
    ]
  }
} 
 </msg>
<msg time="2026-04-08T00:58:11.330772" level="INFO">${resp} = &lt;Response [409]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${headers}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:58:11.314903" elapsed="0.015935"/>
</kw>
<if>
<branch type="IF" condition="${resp.status_code} == 404 or ${resp.status_code} == 409">
<return>
<status status="PASS" start="2026-04-08T00:58:11.340985" elapsed="0.000028"/>
</return>
<status status="PASS" start="2026-04-08T00:58:11.331018" elapsed="0.010025"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:11.330975" elapsed="0.010092"/>
</if>
<kw name="Log" owner="BuiltIn">
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:11.341234" elapsed="0.000023"/>
</kw>
<kw name="Fail" owner="BuiltIn">
<arg>The request failed with code ${resp.status_code}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:11.341400" elapsed="0.000020"/>
</kw>
<arg>${session}</arg>
<arg>${uri}</arg>
<doc>Issue a Get On Session and return on error 404 (No content) or will fail and log the content.
Issues a Get On Session for /rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0/flow=1 in ClusterManagement__session_3 using headers from
{'Content-Type': 'application/json'}. If the request returns a HTTP error, fails. Otherwise
returns the data obtained by the request.</doc>
<status status="PASS" start="2026-04-08T00:58:11.314352" elapsed="0.027124"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T00:58:11.312240" elapsed="0.029273"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-08T00:58:11.265702" elapsed="0.075841"/>
</for>
<arg>uri=${uri}</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Send a GET with the supplied uri to all or some members defined in .
Then check there is no content.</doc>
<status status="PASS" start="2026-04-08T00:58:11.261073" elapsed="0.080522"/>
</kw>
<arg>5s</arg>
<arg>1s</arg>
<arg>Check_No_Content_Member_List_Or_All</arg>
<arg>uri=${uri}</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-08T00:58:08.151070" elapsed="3.190575"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:58:11.341694" elapsed="0.000030"/>
</return>
<arg>${config_table_0}/flow=1</arg>
<arg>${controller_index}</arg>
<arg>${controller_index_list}</arg>
<doc>Send a DELETE with the supplied uri to the member ${member_index}.
Then check the data is removed from all members in ${member_index_list}.</doc>
<status status="PASS" start="2026-04-08T00:58:08.092773" elapsed="3.249065"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Check_Item_Occurrence_Member_List_Or_All" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:58:11.348154" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:58:11.347773" elapsed="0.000432"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:58:11.348710" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:58:11.348365" elapsed="0.000371"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:58:11.348781" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:58:11.348933" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:58:11.347403" elapsed="0.001555"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_From_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:58:11.354338" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:58:11.354024" elapsed="0.000340"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:58:11.354410" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:58:11.354554" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:58:11.353687" elapsed="0.000891"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:11.360846" level="INFO">/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:11.360598" elapsed="0.000294"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:11.361313" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:11.361042" elapsed="0.000315"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:58:11.371907" level="INFO">GET Request : url=http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01jewze00gqgu8yuon50tdwq65226.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:58:11.373077" level="INFO">GET Response : url=http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '606'} 
 body={"flow-node-inventory:table":[{"id":0,"flow":[{"id":"#UF$TABLE*0-1","table_id":0,"priority":0,"cookie_mask":"0","idle-timeout":0,"cookie":"10","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"output-action":{"max-length":65535,"output-node-connector":"CONTROLLER"}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"4","byte-count":"340","duration":{"second":3,"nanosecond":24000000}},"flags":"SEND_FLOW_REM"}],"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"10","active-flows":1,"packets-matched":"4"}}]} 
 </msg>
<msg time="2026-04-08T00:58:11.373198" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:58:11.363428" elapsed="0.009797"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:11.361424" elapsed="0.011844"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:11.373444" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:11.373294" elapsed="0.000212"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:11.361406" elapsed="0.012122"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:11.381887" level="INFO">{"flow-node-inventory:table":[{"id":0,"flow":[{"id":"#UF$TABLE*0-1","table_id":0,"priority":0,"cookie_mask":"0","idle-timeout":0,"cookie":"10","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"output-action":{"max-length":65535,"output-node-connector":"CONTROLLER"}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"4","byte-count":"340","duration":{"second":3,"nanosecond":24000000}},"flags":"SEND_FLOW_REM"}],"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"10","active-flows":1,"packets-matched":"4"}}]}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:11.375753" elapsed="0.006186"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:11.375264" elapsed="0.006709"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:11.375218" elapsed="0.006780"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:11.384484" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:11.382293" elapsed="0.002236"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:11.382053" elapsed="0.002510"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:11.382036" elapsed="0.002552"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:11.385174" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:11.384771" elapsed="0.000431"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:11.385507" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:11.385273" elapsed="0.000333"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:58:11.386096" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:58:11.385793" elapsed="0.000329"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:11.385631" elapsed="0.000542"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:11.385254" elapsed="0.000943"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:11.386720" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:11.386354" elapsed="0.000393"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:11.387047" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:11.386817" elapsed="0.000286"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:58:11.387597" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:58:11.387302" elapsed="0.000321"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:11.387127" elapsed="0.000531"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:11.386799" elapsed="0.000881"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:58:11.387828" elapsed="0.000359"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:58:11.388665" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:11.388351" elapsed="0.000340"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:58:11.388845" elapsed="0.002211"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:58:11.374217" elapsed="0.016901"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-08T00:58:11.391310" elapsed="0.000028"/>
</return>
<status status="PASS" start="2026-04-08T00:58:11.391205" elapsed="0.000166"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:11.391185" elapsed="0.000209"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:11.391539" elapsed="0.000020"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-08T00:58:11.391606" elapsed="0.000015"/>
</return>
<msg time="2026-04-08T00:58:11.393911" level="INFO">${response_text} = {"flow-node-inventory:table":[{"id":0,"flow":[{"id":"#UF$TABLE*0-1","table_id":0,"priority":0,"cookie_mask":"0","idle-timeout":0,"cookie":"10","instructions":{"instruction":[{"order":0,"apply-actions"...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${access}</arg>
<arg>session=${session}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:58:11.354903" elapsed="0.039037"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:58:11.393990" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:58:11.394138" level="INFO">${data} = {"flow-node-inventory:table":[{"id":0,"flow":[{"id":"#UF$TABLE*0-1","table_id":0,"priority":0,"cookie_mask":"0","idle-timeout":0,"cookie":"10","instructions":{"instruction":[{"order":0,"apply-actions"...</msg>
<var>${data}</var>
<arg>uri=${uri}</arg>
<arg>member_index=${index}</arg>
<doc>Send a GET with the supplied uri to member ${member_index}.</doc>
<status status="PASS" start="2026-04-08T00:58:11.353208" elapsed="0.040973"/>
</kw>
<kw name="Check Item Occurrence" owner="Utils">
<for flavor="IN">
<iter>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T00:58:11.395367" level="INFO">Item found from container 0 times.</msg>
<arg>${string}</arg>
<arg>${item}</arg>
<arg>${dictionary_item_occurrence}[${item}]</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="PASS" start="2026-04-08T00:58:11.394958" elapsed="0.000479"/>
</kw>
<var name="${item}">10.0.1.0/24</var>
<status status="PASS" start="2026-04-08T00:58:11.394805" elapsed="0.000672"/>
</iter>
<var>${item}</var>
<value>@{dictionary_item_occurrence}</value>
<status status="PASS" start="2026-04-08T00:58:11.394675" elapsed="0.000832"/>
</for>
<arg>${data}</arg>
<arg>${dictionary}</arg>
<doc>Check string for occurrences of items expressed in a list of dictionaries {item=occurrences}. 0 occurences means item is not present.</doc>
<status status="PASS" start="2026-04-08T00:58:11.394408" elapsed="0.001151"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T00:58:11.349142" elapsed="0.046451"/>
</iter>
<iter>
<kw name="Get_From_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:58:11.400933" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:58:11.400621" elapsed="0.000338"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:58:11.401004" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:58:11.401149" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:58:11.400282" elapsed="0.000906"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:11.407603" level="INFO">/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:11.407355" elapsed="0.000294"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:11.408192" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:11.407866" elapsed="0.000373"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:58:11.424535" level="INFO">GET Request : url=http://10.30.170.131:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01eq5fxmndxspk37g8qgkyja672.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:58:11.424892" level="INFO">GET Response : url=http://10.30.170.131:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '606'} 
 body={"flow-node-inventory:table":[{"id":0,"flow":[{"id":"#UF$TABLE*0-1","table_id":0,"priority":0,"cookie_mask":"0","idle-timeout":0,"cookie":"10","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"output-action":{"max-length":65535,"output-node-connector":"CONTROLLER"}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"4","byte-count":"340","duration":{"second":3,"nanosecond":24000000}},"flags":"SEND_FLOW_REM"}],"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"10","active-flows":1,"packets-matched":"4"}}]} 
 </msg>
<msg time="2026-04-08T00:58:11.425149" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:58:11.410330" elapsed="0.014913"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:11.408308" elapsed="0.017030"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:11.425740" elapsed="0.000047"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:11.425397" elapsed="0.000484"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:11.408289" elapsed="0.017639"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:11.433625" level="INFO">{"flow-node-inventory:table":[{"id":0,"flow":[{"id":"#UF$TABLE*0-1","table_id":0,"priority":0,"cookie_mask":"0","idle-timeout":0,"cookie":"10","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"output-action":{"max-length":65535,"output-node-connector":"CONTROLLER"}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"4","byte-count":"340","duration":{"second":3,"nanosecond":24000000}},"flags":"SEND_FLOW_REM"}],"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"10","active-flows":1,"packets-matched":"4"}}]}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:11.428194" elapsed="0.005547"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:11.427681" elapsed="0.006103"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:11.427639" elapsed="0.006175"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:11.436282" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:11.434089" elapsed="0.002239"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:11.433871" elapsed="0.002491"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:11.433854" elapsed="0.002532"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:11.436944" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:11.436548" elapsed="0.000423"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:11.437287" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:11.437040" elapsed="0.000305"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:58:11.437831" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:58:11.437526" elapsed="0.000330"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:11.437368" elapsed="0.000523"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:11.437022" elapsed="0.000890"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:11.438445" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:11.438066" elapsed="0.000405"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:11.438769" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:11.438540" elapsed="0.000285"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:58:11.439317" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:58:11.439004" elapsed="0.000339"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:11.438848" elapsed="0.000530"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:11.438522" elapsed="0.000878"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:58:11.439548" elapsed="0.000344"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:58:11.440367" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:11.440073" elapsed="0.000370"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:58:11.440638" elapsed="0.002387"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:58:11.426725" elapsed="0.016365"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-08T00:58:11.443323" elapsed="0.000030"/>
</return>
<status status="PASS" start="2026-04-08T00:58:11.443212" elapsed="0.000174"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:11.443192" elapsed="0.000217"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:11.443555" elapsed="0.000021"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-08T00:58:11.443624" elapsed="0.000014"/>
</return>
<msg time="2026-04-08T00:58:11.445936" level="INFO">${response_text} = {"flow-node-inventory:table":[{"id":0,"flow":[{"id":"#UF$TABLE*0-1","table_id":0,"priority":0,"cookie_mask":"0","idle-timeout":0,"cookie":"10","instructions":{"instruction":[{"order":0,"apply-actions"...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${access}</arg>
<arg>session=${session}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:58:11.401512" elapsed="0.044453"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:58:11.446015" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:58:11.446183" level="INFO">${data} = {"flow-node-inventory:table":[{"id":0,"flow":[{"id":"#UF$TABLE*0-1","table_id":0,"priority":0,"cookie_mask":"0","idle-timeout":0,"cookie":"10","instructions":{"instruction":[{"order":0,"apply-actions"...</msg>
<var>${data}</var>
<arg>uri=${uri}</arg>
<arg>member_index=${index}</arg>
<doc>Send a GET with the supplied uri to member ${member_index}.</doc>
<status status="PASS" start="2026-04-08T00:58:11.399782" elapsed="0.046430"/>
</kw>
<kw name="Check Item Occurrence" owner="Utils">
<for flavor="IN">
<iter>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T00:58:11.447391" level="INFO">Item found from container 0 times.</msg>
<arg>${string}</arg>
<arg>${item}</arg>
<arg>${dictionary_item_occurrence}[${item}]</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="PASS" start="2026-04-08T00:58:11.446997" elapsed="0.000462"/>
</kw>
<var name="${item}">10.0.1.0/24</var>
<status status="PASS" start="2026-04-08T00:58:11.446846" elapsed="0.000652"/>
</iter>
<var>${item}</var>
<value>@{dictionary_item_occurrence}</value>
<status status="PASS" start="2026-04-08T00:58:11.446712" elapsed="0.000815"/>
</for>
<arg>${data}</arg>
<arg>${dictionary}</arg>
<doc>Check string for occurrences of items expressed in a list of dictionaries {item=occurrences}. 0 occurences means item is not present.</doc>
<status status="PASS" start="2026-04-08T00:58:11.446444" elapsed="0.001136"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T00:58:11.395680" elapsed="0.051934"/>
</iter>
<iter>
<kw name="Get_From_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:58:11.453184" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:58:11.452848" elapsed="0.000365"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:58:11.453258" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:58:11.453406" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:58:11.452436" elapsed="0.000994"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:11.459679" level="INFO">/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:11.459432" elapsed="0.000292"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:11.460118" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:11.459875" elapsed="0.000303"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:58:11.475978" level="INFO">GET Request : url=http://10.30.171.110:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0336bvzrfnrhc3cqywxyctca52.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:58:11.476476" level="INFO">GET Response : url=http://10.30.171.110:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '606'} 
 body={"flow-node-inventory:table":[{"id":0,"flow":[{"id":"#UF$TABLE*0-1","table_id":0,"priority":0,"cookie_mask":"0","idle-timeout":0,"cookie":"10","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"output-action":{"max-length":65535,"output-node-connector":"CONTROLLER"}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"4","byte-count":"340","duration":{"second":3,"nanosecond":24000000}},"flags":"SEND_FLOW_REM"}],"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"10","active-flows":1,"packets-matched":"4"}}]} 
 </msg>
<msg time="2026-04-08T00:58:11.476695" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:58:11.462210" elapsed="0.014542"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:11.460247" elapsed="0.016597"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:11.477295" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:11.476901" elapsed="0.000537"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:11.460229" elapsed="0.017337"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:11.483978" level="INFO">{"flow-node-inventory:table":[{"id":0,"flow":[{"id":"#UF$TABLE*0-1","table_id":0,"priority":0,"cookie_mask":"0","idle-timeout":0,"cookie":"10","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"output-action":{"max-length":65535,"output-node-connector":"CONTROLLER"}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"4","byte-count":"340","duration":{"second":3,"nanosecond":24000000}},"flags":"SEND_FLOW_REM"}],"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"10","active-flows":1,"packets-matched":"4"}}]}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:11.479878" elapsed="0.004171"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:11.479338" elapsed="0.004757"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:11.479296" elapsed="0.004834"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:11.488223" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:11.484542" elapsed="0.003744"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:11.484232" elapsed="0.004102"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:11.484207" elapsed="0.004160"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:11.489251" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:11.488642" elapsed="0.000647"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:11.489710" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:11.489389" elapsed="0.000377"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:58:11.490266" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:58:11.489946" elapsed="0.000346"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:11.489790" elapsed="0.000537"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:11.489363" elapsed="0.000985"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:11.490864" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:11.490503" elapsed="0.000386"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:11.491203" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:11.490958" elapsed="0.000303"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:58:11.491733" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:58:11.491441" elapsed="0.000317"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:11.491284" elapsed="0.000508"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:11.490940" elapsed="0.000873"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:58:11.491960" elapsed="0.000359"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:58:11.492754" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:11.492479" elapsed="0.000300"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:58:11.492929" elapsed="0.002394"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:58:11.478380" elapsed="0.017005"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-08T00:58:11.495560" elapsed="0.000029"/>
</return>
<status status="PASS" start="2026-04-08T00:58:11.495455" elapsed="0.000166"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:11.495437" 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-04-08T00:58:11.495818" elapsed="0.000023"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-08T00:58:11.495899" elapsed="0.000016"/>
</return>
<msg time="2026-04-08T00:58:11.498275" level="INFO">${response_text} = {"flow-node-inventory:table":[{"id":0,"flow":[{"id":"#UF$TABLE*0-1","table_id":0,"priority":0,"cookie_mask":"0","idle-timeout":0,"cookie":"10","instructions":{"instruction":[{"order":0,"apply-actions"...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${access}</arg>
<arg>session=${session}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T00:58:11.453753" elapsed="0.044551"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:58:11.498357" elapsed="0.000027"/>
</return>
<msg time="2026-04-08T00:58:11.498507" level="INFO">${data} = {"flow-node-inventory:table":[{"id":0,"flow":[{"id":"#UF$TABLE*0-1","table_id":0,"priority":0,"cookie_mask":"0","idle-timeout":0,"cookie":"10","instructions":{"instruction":[{"order":0,"apply-actions"...</msg>
<var>${data}</var>
<arg>uri=${uri}</arg>
<arg>member_index=${index}</arg>
<doc>Send a GET with the supplied uri to member ${member_index}.</doc>
<status status="PASS" start="2026-04-08T00:58:11.451932" elapsed="0.046601"/>
</kw>
<kw name="Check Item Occurrence" owner="Utils">
<for flavor="IN">
<iter>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T00:58:11.499743" level="INFO">Item found from container 0 times.</msg>
<arg>${string}</arg>
<arg>${item}</arg>
<arg>${dictionary_item_occurrence}[${item}]</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="PASS" start="2026-04-08T00:58:11.499370" elapsed="0.000442"/>
</kw>
<var name="${item}">10.0.1.0/24</var>
<status status="PASS" start="2026-04-08T00:58:11.499217" elapsed="0.000634"/>
</iter>
<var>${item}</var>
<value>@{dictionary_item_occurrence}</value>
<status status="PASS" start="2026-04-08T00:58:11.499064" elapsed="0.000818"/>
</for>
<arg>${data}</arg>
<arg>${dictionary}</arg>
<doc>Check string for occurrences of items expressed in a list of dictionaries {item=occurrences}. 0 occurences means item is not present.</doc>
<status status="PASS" start="2026-04-08T00:58:11.498761" elapsed="0.001174"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T00:58:11.447702" elapsed="0.052267"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-08T00:58:11.349010" elapsed="0.150988"/>
</for>
<arg>uri=${operational_table_0}</arg>
<arg>dictionary=${dictionary}</arg>
<arg>member_index_list=${controller_index_list}</arg>
<doc>Send a GET with the supplied uri to all or some members defined in ${member_index_list}.
Then check received for occurrences of items expressed in a dictionary {'10.0.1.0/24': '0'}.</doc>
<status status="PASS" start="2026-04-08T00:58:11.346728" elapsed="0.153321"/>
</kw>
<arg>5s</arg>
<arg>1s</arg>
<arg>ClusterManagement.Check_Item_Occurrence_Member_List_Or_All</arg>
<arg>uri=${operational_table_0}</arg>
<arg>dictionary=${dictionary}</arg>
<arg>member_index_list=${controller_index_list}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-08T00:58:11.342056" elapsed="0.158049"/>
</kw>
<arg>${follower_node_1}</arg>
<doc>Delete sample flow in Owner and verify it gets removed from all instances.</doc>
<status status="PASS" start="2026-04-08T00:58:08.082014" elapsed="3.418174"/>
</kw>
<doc>Delete Flow in Follower Node1.</doc>
<status status="PASS" start="2026-04-08T00:58:07.557849" elapsed="3.942458"/>
</test>
<test id="s1-s3-t21" name="Stop Mininet Connected To Follower Node2 and Exit After Cluster Restart" line="146">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-08T00:58:11.503489" elapsed="0.000210"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-08T00:58:11.503218" elapsed="0.000539"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:58:11.504739" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:58:11.504632" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:11.504614" elapsed="0.000191"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:58:11.509470" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:58:11.509365" elapsed="0.000148"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:11.509347" elapsed="0.000188"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:58:11.510631" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:58:11.510254" elapsed="0.000404"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:58:11.511111" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:58:11.510814" elapsed="0.000323"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:58:11.511198" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:58:11.511350" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:58:11.509763" elapsed="0.001611"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:58:11.516736" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:58:11.516628" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:11.516609" elapsed="0.000195"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:58:11.517984" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:58:11.517878" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:11.517859" elapsed="0.000192"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:58:11.518625" level="INFO">${karaf_connection_index} = 444</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:58:11.518224" elapsed="0.000428"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:58:11.519066" level="INFO">${current_connection_index} = 462</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:58:11.518812" elapsed="0.000280"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T00:58:11.557504" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T00:58:11.519604" elapsed="0.038001"/>
</kw>
<msg time="2026-04-08T00:58:11.557780" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T00:58:11.557826" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:58:11.519271" elapsed="0.038590"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T00:58:11.654755" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "a "d "e "r "[C "F "o "l "l "o "w "e "r "[C "F "a "i "l "o "v "e "r ". "S "t "o "p "[C "M "i "n "i "n "e "t "[C "C "o "n "n "[78Ce "[A[78Cc
 "t "e "d "[C "T "o "[C "F "o "l "l "o "w "e "r "[C "N "o "d "e "2 "[C "a "n "d "[C "E "x "i "t "[C "A "f "t "e "r "[C "C "l "u "s "t "e "r "[C "R "e "s "t "a "r "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T00:58:11.558493" elapsed="0.096393"/>
</kw>
<msg time="2026-04-08T00:58:11.655047" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T00:58:11.655094" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:58:11.558122" elapsed="0.097008"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:11.655467" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:11.655236" elapsed="0.000287"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:11.655214" elapsed="0.000335"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:11.656041" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "a "d "e "r "[C "F "o "l "l "o "w "e "r "[C "F "a "i "l "o "v "e "r ". "S "t "o "p "[C "M "i "n "i "n "e "t "[C "C "o "n "n "[78Ce "[A[78Cc
 "t "e "d "[C "T "o "[C "F "o "l "l "o "w "e "r "[C "N "o "d "e "2 "[C "a "n "d "[C "E "x "i "t "[C "A "f "t "e "r "[C "C "l "u "s "t "e "r "[C "R "e "s "t "a "r "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:11.655720" elapsed="0.000414"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:11.656441" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:11.656224" elapsed="0.000272"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:11.656205" elapsed="0.000314"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T00:58:11.656552" elapsed="0.000029"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:58:11.659102" elapsed="0.000199"/>
</kw>
<msg time="2026-04-08T00:58:11.659364" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:58:11.658038" elapsed="0.001456"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:11.659765" elapsed="0.000076"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:11.660094" elapsed="0.000096"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:58:11.657390" elapsed="0.002920"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T00:58:11.656834" elapsed="0.003541"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T00:58:11.517576" elapsed="0.142897"/>
</kw>
<msg time="2026-04-08T00:58:11.660565" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:58:11.660608" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:58:11.516955" elapsed="0.143691"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T00:58:11.660835" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-08T00:58:11.660725" elapsed="0.000167"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:11.660704" elapsed="0.000211"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:11.661326" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:11.661670" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T00:58:11.661741" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T00:58:11.516289" elapsed="0.145559"/>
</kw>
<msg time="2026-04-08T00:58:11.661940" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:58:11.661984" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:58:11.511725" elapsed="0.150293"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:11.662432" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:11.662132" elapsed="0.000384"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:11.662112" elapsed="0.000461"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T00:58:11.511588" elapsed="0.151009"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:58:11.668510" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:58:11.668349" elapsed="0.000209"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:11.668330" elapsed="0.000250"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:58:11.669796" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:58:11.669667" elapsed="0.000175"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:11.669649" elapsed="0.000215"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:58:11.670343" level="INFO">${karaf_connection_index} = 448</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:58:11.670023" elapsed="0.000347"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:58:11.670770" level="INFO">${current_connection_index} = 462</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:58:11.670525" elapsed="0.000271"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T00:58:11.709954" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T00:58:11.671322" elapsed="0.038739"/>
</kw>
<msg time="2026-04-08T00:58:11.710251" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T00:58:11.710302" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:58:11.670953" elapsed="0.039386"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T00:58:11.821828" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "a "d "e "r "[C "F "o "l "l "o "w "e "r "[C "F "a "i "l "o "v "e "r ". "S "t "o "p "[C "M "i "n "i "n "e "t "[C "C "o "n "n "[78Ce "[A[78Cc
 "t "e "d "[C "T "o "[C "F "o "l "l "o "w "e "r "[C "N "o "d "e "2 "[C "a "n "d "[C "E "x "i "t "[C "A "f "t "e "r "[C "C "l "u "s "t "e "r "[C "R "e "s "t "a "r "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T00:58:11.710871" elapsed="0.111094"/>
</kw>
<msg time="2026-04-08T00:58:11.822126" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T00:58:11.822213" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:58:11.710515" elapsed="0.111737"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:11.822563" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:11.822335" elapsed="0.000284"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:11.822314" elapsed="0.000329"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:11.823086" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "a "d "e "r "[C "F "o "l "l "o "w "e "r "[C "F "a "i "l "o "v "e "r ". "S "t "o "p "[C "M "i "n "i "n "e "t "[C "C "o "n "n "[78Ce "[A[78Cc
 "t "e "d "[C "T "o "[C "F "o "l "l "o "w "e "r "[C "N "o "d "e "2 "[C "a "n "d "[C "E "x "i "t "[C "A "f "t "e "r "[C "C "l "u "s "t "e "r "[C "R "e "s "t "a "r "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:11.822784" elapsed="0.000412"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:11.823480" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:11.823264" elapsed="0.000270"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:11.823246" elapsed="0.000312"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T00:58:11.823591" elapsed="0.000032"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:58:11.826108" elapsed="0.000222"/>
</kw>
<msg time="2026-04-08T00:58:11.826391" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:58:11.825036" elapsed="0.001485"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:11.826791" elapsed="0.000075"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:11.827116" elapsed="0.000093"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:58:11.824429" elapsed="0.002889"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T00:58:11.823873" elapsed="0.003554"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T00:58:11.669366" elapsed="0.158161"/>
</kw>
<msg time="2026-04-08T00:58:11.827619" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:58:11.827662" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:58:11.668729" elapsed="0.158969"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T00:58:11.827880" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-08T00:58:11.827775" elapsed="0.000162"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:11.827756" elapsed="0.000205"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 2,
close the previous connection. In any case create a new connection
to karaf console for 2, set correct prompt set and login to karaf console.
Store connection index for 2 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:11.828360" elapsed="0.000024"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:11.828685" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T00:58:11.828756" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T00:58:11.667886" elapsed="0.160976"/>
</kw>
<msg time="2026-04-08T00:58:11.828955" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:58:11.828999" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:58:11.662874" elapsed="0.166160"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:11.829372" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:11.829109" elapsed="0.000316"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:11.829092" elapsed="0.000356"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T00:58:11.662732" elapsed="0.166739"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:58:11.834785" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:58:11.834674" elapsed="0.000156"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:11.834655" elapsed="0.000196"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:58:11.835983" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:58:11.835876" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:11.835858" elapsed="0.000192"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:58:11.836509" level="INFO">${karaf_connection_index} = 452</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:58:11.836214" elapsed="0.000321"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:58:11.836938" level="INFO">${current_connection_index} = 462</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:58:11.836693" elapsed="0.000271"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T00:58:11.872009" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T00:58:11.837470" elapsed="0.034661"/>
</kw>
<msg time="2026-04-08T00:58:11.872348" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T00:58:11.872394" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:58:11.837118" elapsed="0.035311"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T00:58:11.975547" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "a "d "e "r "[C "F "o "l "l "o "w "e "r "[C "F "a "i "l "o "v "e "r ". "S "t "o "p "[C "M "i "n "i "n "e "t "[C "C "o "n "n "[78Ce "[A[78Cc
 "t "e "d "[C "T "o "[C "F "o "l "l "o "w "e "r "[C "N "o "d "e "2 "[C "a "n "d "[C "E "x "i "t "[C "A "f "t "e "r "[C "C "l "u "s "t "e "r "[C "R "e "s "t "a "r "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T00:58:11.873002" elapsed="0.102765"/>
</kw>
<msg time="2026-04-08T00:58:11.975970" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T00:58:11.976018" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:58:11.872621" elapsed="0.103508"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:11.976587" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:11.976276" elapsed="0.000369"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:11.976240" elapsed="0.000433"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:11.977207" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "a "d "e "r "[C "F "o "l "l "o "w "e "r "[C "F "a "i "l "o "v "e "r ". "S "t "o "p "[C "M "i "n "i "n "e "t "[C "C "o "n "n "[78Ce "[A[78Cc
 "t "e "d "[C "T "o "[C "F "o "l "l "o "w "e "r "[C "N "o "d "e "2 "[C "a "n "d "[C "E "x "i "t "[C "A "f "t "e "r "[C "C "l "u "s "t "e "r "[C "R "e "s "t "a "r "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:11.976821" elapsed="0.000480"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:11.977588" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:11.977369" elapsed="0.000273"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:11.977351" elapsed="0.000314"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T00:58:11.977704" elapsed="0.000040"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:58:11.980371" elapsed="0.000185"/>
</kw>
<msg time="2026-04-08T00:58:11.980617" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:58:11.979285" elapsed="0.001466"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:11.981020" elapsed="0.000076"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:11.981376" elapsed="0.000074"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:58:11.978607" elapsed="0.002953"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T00:58:11.978022" elapsed="0.003602"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T00:58:11.835566" elapsed="0.146155"/>
</kw>
<msg time="2026-04-08T00:58:11.981816" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:58:11.981860" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:58:11.834999" elapsed="0.146897"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T00:58:11.982080" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-08T00:58:11.981973" elapsed="0.000165"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:11.981954" elapsed="0.000227"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 3,
close the previous connection. In any case create a new connection
to karaf console for 3, set correct prompt set and login to karaf console.
Store connection index for 3 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:11.982575" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:11.982936" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T00:58:11.983006" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T00:58:11.834334" elapsed="0.148778"/>
</kw>
<msg time="2026-04-08T00:58:11.983223" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:58:11.983268" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "C "l "u "s "t "e "r "[C "H "A "[C "D "a "t "a "[C "R "e "c "o "v "e "r "y "[C "L "e "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:58:11.829734" elapsed="0.153570"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:11.983632" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:11.983381" elapsed="0.000303"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:11.983364" elapsed="0.000345"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T00:58:11.829597" elapsed="0.154139"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-08T00:58:11.511424" elapsed="0.472347"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-08T00:58:11.508980" elapsed="0.474850"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-08T00:58:11.504351" elapsed="0.479573"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:58:11.503908" elapsed="0.480066"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-08T00:58:11.501199" elapsed="0.482831"/>
</kw>
<kw name="Stop Mininet And Exit" owner="MininetKeywords">
<if>
<branch type="IF" condition="&quot;&quot;&quot;${mininet_conn}&quot;&quot;&quot; != &quot;&quot;">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${mininet_conn}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:58:11.989025" elapsed="0.000289"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:11.988806" elapsed="0.000547"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:11.988788" elapsed="0.000590"/>
</if>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T00:58:11.991137" level="INFO">exit</msg>
<arg>exit</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T00:58:11.989516" elapsed="0.001695"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-08T00:58:12.136006" level="INFO">*** Stopping 1 controllers
c0 
*** Stopping 2 links
..
*** Stopping 1 switches
s1 
*** Stopping 2 hosts
h1 h2 
*** Done
completed in 6.516 seconds
[?2004h[jenkins@releng-11369-169-1-mininet-ovs-217-0 ~]&gt;</msg>
<arg>${TOOLS_SYSTEM_PROMPT}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-08T00:58:11.991368" elapsed="0.144914"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:58:12.136686" elapsed="0.000312"/>
</kw>
<arg>${mininet_conn_id}</arg>
<doc>Stops Mininet and exits session ${mininet_conn}</doc>
<status status="PASS" start="2026-04-08T00:58:11.988523" elapsed="0.148575"/>
</kw>
<kw name="Clean Mininet System" owner="Utils">
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:12.140885" elapsed="0.000032"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:12.140490" elapsed="0.000475"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:12.140463" elapsed="0.000539"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:58:12.141491" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T00:58:12.141271" elapsed="0.000392"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:12.142251" level="INFO">Attempting to execute command "sudo mn -c" on remote system "10.30.170.192" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:12.141837" elapsed="0.000462"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:58:12.142835" level="INFO">${conn_id} = 463</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:58:12.142458" elapsed="0.000402"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T00:58:12.143946" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T00:58:12.144057" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T00:58:12.143538" elapsed="0.000555"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:58:12.144341" elapsed="0.000475"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T00:58:12.146059" level="INFO">Logging into '10.30.170.192:22' as 'jenkins'.</msg>
<msg time="2026-04-08T00:58:12.468490" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 00:58:03 UTC 2026

  System load:  0.0                Processes:             107
  Usage of /:   19.5% of 38.58GB   Users logged in:       0
  Memory usage: 5%                 IPv4 address for ens3: 10.30.170.192
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 00:58:05 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-1-mininet-ovs-217-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T00:58:12.145609" elapsed="0.323027"/>
</kw>
<msg time="2026-04-08T00:58:12.468722" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:58:12.145057" elapsed="0.323747"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T00:58:12.143074" elapsed="0.325843"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T00:58:12.469431" level="INFO">Executing command 'sudo mn -c'.</msg>
<msg time="2026-04-08T00:58:13.649470" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-08T00:58:13.649830" level="INFO">${stdout} = </msg>
<msg time="2026-04-08T00:58:13.650057" level="INFO">${stderr} = *** Removing excess controllers/ofprotocols/ofdatapaths/pings/noxes
killall controller ofprotocol ofdatapath ping nox_corelt-nox_core ovs-openflowd ovs-controllerovs-testcontroller udpbwtest mnexec iv...</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T00:58:12.469176" elapsed="1.180941"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:58:13.650623" elapsed="0.000502"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:13.652265" level="INFO">*** Removing excess controllers/ofprotocols/ofdatapaths/pings/noxes
killall controller ofprotocol ofdatapath ping nox_corelt-nox_core ovs-openflowd ovs-controllerovs-testcontroller udpbwtest mnexec ivs ryu-manager 2&gt; /dev/null
killall -9 controller ofprotocol ofdatapath ping nox_corelt-nox_core ovs-openflowd ovs-controllerovs-testcontroller udpbwtest mnexec ivs ryu-manager 2&gt; /dev/null
pkill -9 -f "sudo mnexec"
*** Removing junk from /tmp
rm -f /tmp/vconn* /tmp/vlogs* /tmp/*.out /tmp/*.log
*** Removing old X11 tunnels
*** Removing excess kernel datapaths
ps ax | egrep -o 'dp[0-9]+' | sed 's/dp/nl:/'
***  Removing OVS datapaths
ovs-vsctl --timeout=1 list-br
ovs-vsctl --timeout=1 list-br
*** Removing all links of the pattern foo-ethX
ip link show | egrep -o '([-_.[:alnum:]]+-eth[[:digit:]]+)'
ip link show
*** Killing stale mininet node processes
pkill -9 -f mininet:
*** Shutting down stale tunnels
pkill -9 -f Tunnel=Ethernet
pkill -9 -f .ssh/mn
rm -f ~/.ssh/mn/*
*** Cleanup complete.</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:13.651565" elapsed="0.000822"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:58:13.652846" elapsed="0.000036"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:58:13.652559" elapsed="0.000390"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:13.652510" elapsed="0.000490"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T00:58:13.653382" elapsed="0.000066"/>
</return>
<status status="PASS" start="2026-04-08T00:58:13.653116" elapsed="0.000405"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:13.653083" elapsed="0.000490"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:58:13.653649" elapsed="0.000030"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:58:13.658523" elapsed="0.000445"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:58:13.659215" elapsed="0.000216"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:58:13.659638" elapsed="0.000135"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:58:13.654363" elapsed="0.005482"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T00:58:12.139791" elapsed="1.520181"/>
</kw>
<msg time="2026-04-08T00:58:13.660064" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:58:12.138858" elapsed="1.521277"/>
</kw>
<arg>${system}</arg>
<arg>sudo mn -c</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-08T00:58:12.138093" elapsed="1.522176"/>
</kw>
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:13.663133" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:13.662757" elapsed="0.000479"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:13.662731" elapsed="0.000538"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:58:13.663672" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T00:58:13.663487" elapsed="0.000362"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:13.664663" level="INFO">Attempting to execute command "sudo ps -elf | egrep 'usr/local/bin/mn' | egrep python | awk '{print "sudo kill -9",$4}' | sh" on remote system "10.30.170.192" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:13.664093" elapsed="0.000636"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:58:13.665290" level="INFO">${conn_id} = 465</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:58:13.664910" elapsed="0.000406"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T00:58:13.666205" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T00:58:13.666282" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T00:58:13.665917" elapsed="0.000389"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:58:13.666498" elapsed="0.000317"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T00:58:13.667669" level="INFO">Logging into '10.30.170.192:22' as 'jenkins'.</msg>
<msg time="2026-04-08T00:58:14.046814" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 00:58:03 UTC 2026

  System load:  0.0                Processes:             107
  Usage of /:   19.5% of 38.58GB   Users logged in:       0
  Memory usage: 5%                 IPv4 address for ens3: 10.30.170.192
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 00:58:12 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-1-mininet-ovs-217-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T00:58:13.667356" elapsed="0.379596"/>
</kw>
<msg time="2026-04-08T00:58:14.047031" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:58:13.666982" elapsed="0.380128"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T00:58:13.665528" elapsed="0.381715"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T00:58:14.047723" level="INFO">Executing command 'sudo ps -elf | egrep 'usr/local/bin/mn' | egrep python | awk '{print "sudo kill -9",$4}' | sh'.</msg>
<msg time="2026-04-08T00:58:14.080805" level="INFO">Command exited with return code -1.</msg>
<msg time="2026-04-08T00:58:14.081066" level="INFO">${stdout} = </msg>
<msg time="2026-04-08T00:58:14.081234" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T00:58:14.047483" elapsed="0.033808"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:58:14.081664" elapsed="0.000472"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:14.083217" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:14.082579" elapsed="0.000734"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:58:14.083777" elapsed="0.000035"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:58:14.083485" elapsed="0.000398"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:14.083433" elapsed="0.000501"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T00:58:14.084384" elapsed="0.000067"/>
</return>
<status status="PASS" start="2026-04-08T00:58:14.084050" elapsed="0.000477"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:14.084017" elapsed="0.000563"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:58:14.084653" elapsed="0.000031"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:58:14.088940" elapsed="0.000483"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:58:14.089654" elapsed="0.000217"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:58:14.090076" elapsed="0.000160"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:58:14.085429" elapsed="0.004881"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T00:58:13.662001" elapsed="0.428437"/>
</kw>
<msg time="2026-04-08T00:58:14.090512" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:58:13.661220" elapsed="0.429359"/>
</kw>
<arg>${system}</arg>
<arg>sudo ps -elf | egrep 'usr/local/bin/mn' | egrep python | awk '{print "sudo kill -9",$4}' | sh</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-08T00:58:13.660510" elapsed="0.430178"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:12.137480" elapsed="1.953286"/>
</kw>
<doc>Stop mininet Connected To Other Follower and exit connection.</doc>
<status status="PASS" start="2026-04-08T00:58:11.500623" elapsed="2.590291"/>
</test>
<kw name="Delete All Sessions" owner="RequestsLibrary" type="TEARDOWN">
<msg time="2026-04-08T00:58:14.091759" level="INFO">Deleting All Sessions</msg>
<doc>Removes all the session objects</doc>
<status status="PASS" start="2026-04-08T00:58:14.091647" elapsed="0.000366"/>
</kw>
<doc>Test suite for Cluster HA - Data Recovery at Leader Follower failover and cluster restart</doc>
<status status="PASS" start="2026-04-08T00:52:33.030203" elapsed="341.061861"/>
</suite>
<suite id="s1-s4" name="010 Group Flows" source="/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/010_Group_Flows.robot">
<kw name="Initialization Phase" type="SETUP">
<kw name="Setup_Utils_For_Setup_And_Teardown" owner="SetupUtils">
<kw name="Do_Not_Fail_Fast_From_Now_On" owner="FailFast">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-08T00:58:14.196586" level="INFO">${SuiteFastFail} = False</msg>
<arg>${SuiteFastFail}</arg>
<arg>False</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-08T00:58:14.192377" elapsed="0.004272"/>
</kw>
<doc>Set suite to not fail fast.</doc>
<status status="PASS" start="2026-04-08T00:58:14.192126" elapsed="0.004609"/>
</kw>
<kw name="Setup_Karaf_Keywords" owner="KarafKeywords">
<kw name="ClusterManagement_Setup" owner="ClusterManagement">
<kw name="Get Variable Value" owner="BuiltIn">
<msg time="2026-04-08T00:58:14.201842" level="INFO">${already_done} = False</msg>
<var>${already_done}</var>
<arg>\${ClusterManagement__has_setup_run}</arg>
<arg>False</arg>
<doc>Returns variable value or ``default`` if the variable does not exist.</doc>
<status status="PASS" start="2026-04-08T00:58:14.198070" elapsed="0.003801"/>
</kw>
<if>
<branch type="IF" condition="${already_done}">
<return>
<status status="NOT RUN" start="2026-04-08T00:58:14.202085" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:58:14.201962" elapsed="0.000171"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:14.201936" elapsed="0.000234"/>
</if>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-08T00:58:14.202684" level="INFO">${ClusterManagement__has_setup_run} = True</msg>
<arg>\${ClusterManagement__has_setup_run}</arg>
<arg>True</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-08T00:58:14.202331" elapsed="0.000396"/>
</kw>
<kw name="Get Variable Value" owner="BuiltIn">
<msg time="2026-04-08T00:58:14.203217" level="INFO">${cluster_size} = 3</msg>
<var>${cluster_size}</var>
<arg>\${NUM_ODL_SYSTEM}</arg>
<arg>1</arg>
<doc>Returns variable value or ``default`` if the variable does not exist.</doc>
<status status="PASS" start="2026-04-08T00:58:14.202891" elapsed="0.000353"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Convert To Integer" owner="BuiltIn">
<arg>${cluster_size}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:58:14.203760" elapsed="0.000283"/>
</kw>
<msg time="2026-04-08T00:58:14.204140" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:58:14.204204" level="INFO">${possibly_int_of_members} = 3</msg>
<var>${status}</var>
<var>${possibly_int_of_members}</var>
<arg>BuiltIn.Convert_To_Integer</arg>
<arg>${cluster_size}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:58:14.203413" elapsed="0.000816"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:58:14.204767" level="INFO">${int_of_members} = 3</msg>
<var>${int_of_members}</var>
<arg>'${status}' != 'PASS'</arg>
<arg>${1}</arg>
<arg>${possibly_int_of_members}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:58:14.204401" elapsed="0.000392"/>
</kw>
<kw name="ClusterManagement__Compute_Derived_Variables" owner="ClusterManagement">
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:58:14.205871" level="INFO">@{member_index_list} = [ ]</msg>
<var>@{member_index_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:58:14.205606" elapsed="0.000292"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:58:14.206322" level="INFO">@{session_list} = [ ]</msg>
<var>@{session_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:58:14.206050" elapsed="0.000298"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-08T00:58:14.206799" level="INFO">&amp;{index_to_ip_mapping} = { }</msg>
<var>&amp;{index_to_ip_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-08T00:58:14.206509" elapsed="0.000316"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="ClusterManagement__Include_Member_Index" owner="ClusterManagement">
<kw name="Append To List" owner="Collections">
<arg>${member_index_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-08T00:58:14.210054" elapsed="0.000236"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:58:14.210783" level="INFO">${member_ip} = 10.30.170.48</msg>
<var>${member_ip}</var>
<arg>${ODL_SYSTEM_${index}_IP}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:58:14.210458" elapsed="0.000350"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${index_to_ip_mapping}</arg>
<arg>${index}</arg>
<arg>${member_ip}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:58:14.210971" elapsed="0.000248"/>
</kw>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:58:14.212001" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:58:14.211708" elapsed="0.000319"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:58:14.212071" elapsed="0.000038"/>
</return>
<msg time="2026-04-08T00:58:14.212246" level="INFO">${session_alias} = ClusterManagement__session_1</msg>
<var>${session_alias}</var>
<arg>member_index=${index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:58:14.211415" elapsed="0.000856"/>
</kw>
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:58:14.212862" level="INFO">Creating Session using : alias=ClusterManagement__session_1, url=http://10.30.170.48:8181, headers={},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x76b9e5f27110&gt;, timeout=5, proxies=None, verify=False,                     debug=0 </msg>
<arg>${session_alias}</arg>
<arg>http://${member_ip}:${RESTCONFPORT}</arg>
<arg>auth=${AUTH}</arg>
<arg>timeout=${http_timeout}</arg>
<arg>max_retries=${http_retries}</arg>
<doc>Create Session: create a HTTP session to a server</doc>
<status status="PASS" start="2026-04-08T00:58:14.212430" elapsed="0.000574"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${session_list}</arg>
<arg>${session_alias}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-08T00:58:14.213184" elapsed="0.000192"/>
</kw>
<arg>${index}</arg>
<arg>${member_index_list}</arg>
<arg>${session_list}</arg>
<arg>${index_to_ip_mapping}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>http_retries=${http_retries}</arg>
<doc>Add a corresponding item based on index into the last three arguments.
Create the Http session whose alias is added to list.</doc>
<status status="PASS" start="2026-04-08T00:58:14.209476" elapsed="0.003958"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T00:58:14.209284" elapsed="0.004195"/>
</iter>
<iter>
<kw name="ClusterManagement__Include_Member_Index" owner="ClusterManagement">
<kw name="Append To List" owner="Collections">
<arg>${member_index_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-08T00:58:14.214333" elapsed="0.000187"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:58:14.214997" level="INFO">${member_ip} = 10.30.170.131</msg>
<var>${member_ip}</var>
<arg>${ODL_SYSTEM_${index}_IP}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:58:14.214678" elapsed="0.000344"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${index_to_ip_mapping}</arg>
<arg>${index}</arg>
<arg>${member_ip}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:58:14.215191" elapsed="0.000221"/>
</kw>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:58:14.216256" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:58:14.215941" elapsed="0.000342"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:58:14.216327" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:58:14.216476" level="INFO">${session_alias} = ClusterManagement__session_2</msg>
<var>${session_alias}</var>
<arg>member_index=${index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:58:14.215647" elapsed="0.000854"/>
</kw>
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:58:14.217052" level="INFO">Creating Session using : alias=ClusterManagement__session_2, url=http://10.30.170.131:8181, headers={},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x76b9e5d58ed0&gt;, timeout=5, proxies=None, verify=False,                     debug=0 </msg>
<arg>${session_alias}</arg>
<arg>http://${member_ip}:${RESTCONFPORT}</arg>
<arg>auth=${AUTH}</arg>
<arg>timeout=${http_timeout}</arg>
<arg>max_retries=${http_retries}</arg>
<doc>Create Session: create a HTTP session to a server</doc>
<status status="PASS" start="2026-04-08T00:58:14.216657" elapsed="0.000497"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${session_list}</arg>
<arg>${session_alias}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-08T00:58:14.217334" elapsed="0.000200"/>
</kw>
<arg>${index}</arg>
<arg>${member_index_list}</arg>
<arg>${session_list}</arg>
<arg>${index_to_ip_mapping}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>http_retries=${http_retries}</arg>
<doc>Add a corresponding item based on index into the last three arguments.
Create the Http session whose alias is added to list.</doc>
<status status="PASS" start="2026-04-08T00:58:14.213765" elapsed="0.003828"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T00:58:14.213587" elapsed="0.004050"/>
</iter>
<iter>
<kw name="ClusterManagement__Include_Member_Index" owner="ClusterManagement">
<kw name="Append To List" owner="Collections">
<arg>${member_index_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-08T00:58:14.218469" elapsed="0.000186"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:58:14.219133" level="INFO">${member_ip} = 10.30.171.110</msg>
<var>${member_ip}</var>
<arg>${ODL_SYSTEM_${index}_IP}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:58:14.218813" elapsed="0.000360"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${index_to_ip_mapping}</arg>
<arg>${index}</arg>
<arg>${member_ip}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:58:14.219331" elapsed="0.000220"/>
</kw>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:58:14.220528" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:58:14.220032" elapsed="0.000522"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:58:14.220598" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:58:14.220746" level="INFO">${session_alias} = ClusterManagement__session_3</msg>
<var>${session_alias}</var>
<arg>member_index=${index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:58:14.219740" elapsed="0.001030"/>
</kw>
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:58:14.221342" level="INFO">Creating Session using : alias=ClusterManagement__session_3, url=http://10.30.171.110:8181, headers={},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x76b9e4c7d410&gt;, timeout=5, proxies=None, verify=False,                     debug=0 </msg>
<arg>${session_alias}</arg>
<arg>http://${member_ip}:${RESTCONFPORT}</arg>
<arg>auth=${AUTH}</arg>
<arg>timeout=${http_timeout}</arg>
<arg>max_retries=${http_retries}</arg>
<doc>Create Session: create a HTTP session to a server</doc>
<status status="PASS" start="2026-04-08T00:58:14.220926" elapsed="0.000517"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${session_list}</arg>
<arg>${session_alias}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-08T00:58:14.221633" elapsed="0.000189"/>
</kw>
<arg>${index}</arg>
<arg>${member_index_list}</arg>
<arg>${session_list}</arg>
<arg>${index_to_ip_mapping}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>http_retries=${http_retries}</arg>
<doc>Add a corresponding item based on index into the last three arguments.
Create the Http session whose alias is added to list.</doc>
<status status="PASS" start="2026-04-08T00:58:14.217897" elapsed="0.003983"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T00:58:14.217719" elapsed="0.004204"/>
</iter>
<var>${index}</var>
<value>1</value>
<value>${int_of_members+1}</value>
<status status="PASS" start="2026-04-08T00:58:14.206886" elapsed="0.015067"/>
</for>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-08T00:58:14.222529" level="INFO">${ClusterManagement__member_index_list} = [1, 2, 3]</msg>
<arg>\${ClusterManagement__member_index_list}</arg>
<arg>${member_index_list}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-08T00:58:14.222116" elapsed="0.000455"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-08T00:58:14.223125" level="INFO">${ClusterManagement__index_to_ip_mapping} = {1: '10.30.170.48', 2: '10.30.170.131', 3: '10.30.171.110'}</msg>
<arg>\${ClusterManagement__index_to_ip_mapping}</arg>
<arg>${index_to_ip_mapping}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-08T00:58:14.222734" elapsed="0.000449"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-08T00:58:14.223726" level="INFO">${ClusterManagement__session_list} = ['ClusterManagement__session_1', 'ClusterManagement__session_2', 'ClusterManagement__session_3']</msg>
<arg>\${ClusterManagement__session_list}</arg>
<arg>${session_list}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-08T00:58:14.223346" elapsed="0.000421"/>
</kw>
<arg>int_of_members=${int_of_members}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>http_retries=${http_retries}</arg>
<doc>Construct index list, session list and IP mapping, publish them as suite variables.</doc>
<status status="PASS" start="2026-04-08T00:58:14.205109" elapsed="0.018716"/>
</kw>
<arg>http_timeout=${http_timeout}</arg>
<doc>Detect repeated call, or detect number of members and initialize derived suite variables.
Http sessions are created with parameters to not waste time when ODL is no accepting connections properly.</doc>
<status status="PASS" start="2026-04-08T00:58:14.197664" elapsed="0.026214"/>
</kw>
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:58:14.224055" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:58:14.223943" elapsed="0.000190"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:14.223924" elapsed="0.000250"/>
</if>
<kw name="Run_Bash_Command_On_List_Or_All" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:58:14.227192" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:58:14.226800" elapsed="0.000419"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:58:14.227679" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:58:14.227380" elapsed="0.000325"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:58:14.227749" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:58:14.227901" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:58:14.226475" elapsed="0.001450"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:58:14.228918" level="INFO">${member_ip} = 10.30.170.48</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:58:14.228660" elapsed="0.000284"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:58:14.229716" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

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

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T00:58:14.233502" elapsed="0.000740"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:14.235209" level="INFO">Attempting to execute command "iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save" on remote system "10.30.170.48" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:14.234506" elapsed="0.000807"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:58:14.236635" level="INFO">${conn_id} = 467</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:58:14.235581" elapsed="0.001107"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T00:58:14.238424" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T00:58:14.238598" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T00:58:14.238053" elapsed="0.000590"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:58:14.238982" elapsed="0.000471"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T00:58:14.240580" level="INFO">Logging into '10.30.170.48:22' as 'jenkins'.</msg>
<msg time="2026-04-08T00:58:14.826539" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 00:58:14 UTC 2026

  System load:  0.54               Processes:             121
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 7%                 IPv4 address for ens3: 10.30.170.48
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 00:57:28 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-0-builder-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T00:58:14.240258" elapsed="0.586438"/>
</kw>
<msg time="2026-04-08T00:58:14.826777" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:58:14.239800" elapsed="0.587148"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T00:58:14.237123" elapsed="0.590118"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T00:58:14.828180" level="INFO">Executing command 'iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save'.</msg>
<msg time="2026-04-08T00:58:14.841055" level="INFO">Command exited with return code 4.</msg>
<msg time="2026-04-08T00:58:14.841484" level="INFO">${stdout} = </msg>
<msg time="2026-04-08T00:58:14.841735" level="INFO">${stderr} = iptables v1.8.7 (nf_tables): unknown option "--dport"
Try `iptables -h' or 'iptables --help' for more information.
iptables-save v1.8.7 (nf_tables): Could not fetch rule set generation id: Permission ...</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T00:58:14.827635" elapsed="0.014219"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:58:14.842783" elapsed="0.001287"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:14.847007" level="INFO">iptables v1.8.7 (nf_tables): unknown option "--dport"
Try `iptables -h' or 'iptables --help' for more information.
iptables-save v1.8.7 (nf_tables): Could not fetch rule set generation id: Permission denied (you must be root)</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:14.845615" elapsed="0.001702"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:58:14.848353" elapsed="0.000127"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:58:14.847720" elapsed="0.000951"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:14.847665" elapsed="0.001094"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T00:58:14.849528" elapsed="0.000153"/>
</return>
<status status="PASS" start="2026-04-08T00:58:14.848952" elapsed="0.000925"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:14.848915" elapsed="0.001052"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:58:14.850106" elapsed="0.000036"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:58:14.854531" elapsed="0.000486"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:58:14.855348" elapsed="0.000306"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:58:14.855936" elapsed="0.000259"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:58:14.851448" elapsed="0.004820"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T00:58:14.231630" elapsed="0.624825"/>
</kw>
<msg time="2026-04-08T00:58:14.856511" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:58:14.230995" elapsed="0.625571"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-08T00:58:14.230519" elapsed="0.626128"/>
</kw>
<msg time="2026-04-08T00:58:14.856689" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:58:14.229998" elapsed="0.626737"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:58:14.859608" elapsed="0.000311"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:58:14.860082" elapsed="0.000162"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:58:14.860395" elapsed="0.000096"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:58:14.857023" elapsed="0.003520"/>
</kw>
<msg time="2026-04-08T00:58:14.860633" level="INFO">${output} = </msg>
<var>${output}</var>
<arg>Utils.Run_Command_On_Controller</arg>
<arg>${member_ip}</arg>
<arg>${command}</arg>
<doc>Store current connection index, run keyword returning its result, restore connection in teardown.
Note that in order to avoid "got positional argument after named arguments", it is safer to use positional (not named) arguments on call.</doc>
<status status="PASS" start="2026-04-08T00:58:14.229175" elapsed="0.631482"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:14.861075" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:14.860834" elapsed="0.000281"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-08T00:58:14.861172" elapsed="0.000029"/>
</return>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-08T00:58:14.228307" elapsed="0.632988"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T00:58:14.228101" elapsed="0.633230"/>
</iter>
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:58:14.862296" level="INFO">${member_ip} = 10.30.170.131</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:58:14.861955" elapsed="0.000367"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:58:14.863072" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

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

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T00:58:14.867085" elapsed="0.000838"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:14.868938" level="INFO">Attempting to execute command "iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save" on remote system "10.30.170.131" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:14.868226" elapsed="0.000827"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:58:14.870341" level="INFO">${conn_id} = 470</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:58:14.869362" elapsed="0.001032"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T00:58:14.872378" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T00:58:14.872577" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T00:58:14.871986" elapsed="0.000639"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:58:14.873005" elapsed="0.000493"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T00:58:14.874704" level="INFO">Logging into '10.30.170.131:22' as 'jenkins'.</msg>
<msg time="2026-04-08T00:58:15.498310" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 00:58:15 UTC 2026

  System load:  0.32               Processes:             123
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 6%                 IPv4 address for ens3: 10.30.170.131
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 00:57:28 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-0-builder-1 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T00:58:14.874383" elapsed="0.624126"/>
</kw>
<msg time="2026-04-08T00:58:15.498610" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:58:14.873878" elapsed="0.624951"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T00:58:14.870870" elapsed="0.628137"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T00:58:15.500016" level="INFO">Executing command 'iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save'.</msg>
<msg time="2026-04-08T00:58:15.512496" level="INFO">Command exited with return code 4.</msg>
<msg time="2026-04-08T00:58:15.512752" level="INFO">${stdout} = </msg>
<msg time="2026-04-08T00:58:15.512957" level="INFO">${stderr} = iptables v1.8.7 (nf_tables): unknown option "--dport"
Try `iptables -h' or 'iptables --help' for more information.
iptables-save v1.8.7 (nf_tables): Could not fetch rule set generation id: Permission ...</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T00:58:15.499461" elapsed="0.013571"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:58:15.513538" elapsed="0.001056"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:15.517522" level="INFO">iptables v1.8.7 (nf_tables): unknown option "--dport"
Try `iptables -h' or 'iptables --help' for more information.
iptables-save v1.8.7 (nf_tables): Could not fetch rule set generation id: Permission denied (you must be root)</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:15.515981" elapsed="0.001825"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:58:15.518893" elapsed="0.000108"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:58:15.518320" elapsed="0.000998"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:15.518256" elapsed="0.001158"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T00:58:15.520106" elapsed="0.000176"/>
</return>
<status status="PASS" start="2026-04-08T00:58:15.519599" elapsed="0.000861"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:15.519561" elapsed="0.000985"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:58:15.520680" elapsed="0.000037"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:58:15.525474" elapsed="0.000506"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:58:15.526292" elapsed="0.000315"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:58:15.526878" elapsed="0.000235"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:58:15.521913" elapsed="0.005293"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T00:58:14.864993" elapsed="0.662397"/>
</kw>
<msg time="2026-04-08T00:58:15.527453" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:58:14.864392" elapsed="0.663127"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-08T00:58:14.863896" elapsed="0.663707"/>
</kw>
<msg time="2026-04-08T00:58:15.527645" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:58:14.863391" elapsed="0.664300"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:58:15.530391" elapsed="0.000319"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:58:15.530880" elapsed="0.000145"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:58:15.531195" elapsed="0.000101"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:58:15.527991" elapsed="0.003357"/>
</kw>
<msg time="2026-04-08T00:58:15.531447" level="INFO">${output} = </msg>
<var>${output}</var>
<arg>Utils.Run_Command_On_Controller</arg>
<arg>${member_ip}</arg>
<arg>${command}</arg>
<doc>Store current connection index, run keyword returning its result, restore connection in teardown.
Note that in order to avoid "got positional argument after named arguments", it is safer to use positional (not named) arguments on call.</doc>
<status status="PASS" start="2026-04-08T00:58:14.862581" elapsed="0.668892"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:15.531941" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:15.531687" elapsed="0.000296"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-08T00:58:15.532025" elapsed="0.000029"/>
</return>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-08T00:58:14.861602" elapsed="0.670549"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T00:58:14.861426" elapsed="0.670784"/>
</iter>
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:58:15.533233" level="INFO">${member_ip} = 10.30.171.110</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:58:15.532916" elapsed="0.000344"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:58:15.533996" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

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

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T00:58:15.538356" elapsed="0.000795"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:15.540130" level="INFO">Attempting to execute command "iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save" on remote system "10.30.171.110" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:15.539447" elapsed="0.000813"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:58:15.541553" level="INFO">${conn_id} = 473</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:58:15.540530" elapsed="0.001086"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T00:58:15.543472" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T00:58:15.543645" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T00:58:15.543014" elapsed="0.000675"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:58:15.544027" elapsed="0.000572"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T00:58:15.545808" level="INFO">Logging into '10.30.171.110:22' as 'jenkins'.</msg>
<msg time="2026-04-08T00:58:16.119480" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 00:58:15 UTC 2026

  System load:  0.87               Processes:             125
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 7%                 IPv4 address for ens3: 10.30.171.110
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 00:57:28 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T00:58:15.545475" elapsed="0.574173"/>
</kw>
<msg time="2026-04-08T00:58:16.119735" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:58:15.544990" elapsed="0.574931"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T00:58:15.542112" elapsed="0.577970"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T00:58:16.121045" level="INFO">Executing command 'iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save'.</msg>
<msg time="2026-04-08T00:58:16.134211" level="INFO">Command exited with return code 4.</msg>
<msg time="2026-04-08T00:58:16.134639" level="INFO">${stdout} = </msg>
<msg time="2026-04-08T00:58:16.134804" level="INFO">${stderr} = iptables v1.8.7 (nf_tables): unknown option "--dport"
Try `iptables -h' or 'iptables --help' for more information.
iptables-save v1.8.7 (nf_tables): Could not fetch rule set generation id: Permission ...</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T00:58:16.120509" elapsed="0.014374"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:58:16.135516" elapsed="0.000980"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:16.138456" level="INFO">iptables v1.8.7 (nf_tables): unknown option "--dport"
Try `iptables -h' or 'iptables --help' for more information.
iptables-save v1.8.7 (nf_tables): Could not fetch rule set generation id: Permission denied (you must be root)</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:16.137479" elapsed="0.001144"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:58:16.139337" elapsed="0.000082"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:58:16.138896" elapsed="0.000654"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:16.138857" elapsed="0.000750"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T00:58:16.140093" elapsed="0.000140"/>
</return>
<status status="PASS" start="2026-04-08T00:58:16.139732" elapsed="0.000630"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:16.139706" elapsed="0.000715"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:58:16.140514" elapsed="0.000023"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:58:16.145611" elapsed="0.000877"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:58:16.146918" elapsed="0.000493"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:58:16.147695" elapsed="0.000240"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:58:16.141267" elapsed="0.006741"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T00:58:15.536284" elapsed="0.611931"/>
</kw>
<msg time="2026-04-08T00:58:16.148351" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:58:15.535387" elapsed="0.613027"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-08T00:58:15.534877" elapsed="0.613620"/>
</kw>
<msg time="2026-04-08T00:58:16.148538" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:58:15.534359" elapsed="0.614225"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:58:16.151267" elapsed="0.000320"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:58:16.151754" elapsed="0.000145"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:58:16.152050" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:58:16.148878" elapsed="0.003340"/>
</kw>
<msg time="2026-04-08T00:58:16.152312" level="INFO">${output} = </msg>
<var>${output}</var>
<arg>Utils.Run_Command_On_Controller</arg>
<arg>${member_ip}</arg>
<arg>${command}</arg>
<doc>Store current connection index, run keyword returning its result, restore connection in teardown.
Note that in order to avoid "got positional argument after named arguments", it is safer to use positional (not named) arguments on call.</doc>
<status status="PASS" start="2026-04-08T00:58:15.533481" elapsed="0.618855"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:16.152790" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:16.152519" elapsed="0.000319"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-08T00:58:16.152883" elapsed="0.000033"/>
</return>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-08T00:58:15.532508" elapsed="0.620504"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T00:58:15.532319" elapsed="0.620731"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-08T00:58:14.227976" elapsed="1.925113"/>
</for>
<arg>iptables -I INPUT -p tcp --dport ${KARAF_SHELL_PORT} -j ACCEPT; iptables-save</arg>
<doc>Cycle through indices (or all), run command on each.</doc>
<status status="PASS" start="2026-04-08T00:58:14.224399" elapsed="1.928751"/>
</kw>
<kw name="Comment" owner="BuiltIn">
<arg>First connections to Karaf console may fail, so WUKS is used. TODO: Track as a Bug.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:58:16.153330" elapsed="0.000212"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:58:16.166796" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:58:16.166686" elapsed="0.000156"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:16.166666" elapsed="0.000198"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:58:16.167154" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T00:58:16.167018" elapsed="0.000284"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:16.167710" level="INFO">{}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:16.167454" elapsed="0.000299"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:16.168143" level="INFO">1</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:16.167904" elapsed="0.000298"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:58:16.168955" level="FAIL">Dictionary does not contain key '1'.</msg>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="FAIL" start="2026-04-08T00:58:16.168725" elapsed="0.000343">Dictionary does not contain key '1'.</status>
</kw>
<msg time="2026-04-08T00:58:16.169190" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:58:16.169236" level="INFO">${old_connection_index} = Dictionary does not contain key '1'.</msg>
<var>${status}</var>
<var>${old_connection_index}</var>
<arg>Get From Dictionary</arg>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:58:16.168362" elapsed="0.000897"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='PASS'">
<kw name="Run Keywords" owner="BuiltIn">
<arg>SSHLibrary.Switch_Connection</arg>
<arg>${old_connection_index}</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Executes all the given keywords in a sequence.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:16.169559" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:16.169334" elapsed="0.000299"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:16.169316" elapsed="0.000344"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:58:16.170604" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:58:16.170313" elapsed="0.000318"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:58:16.170679" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:58:16.170827" level="INFO">${odl_ip} = 10.30.170.48</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:58:16.169938" elapsed="0.000953"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${odl_ip}</arg>
<arg>port=${KARAF_SHELL_PORT}</arg>
<arg>prompt=${KARAF_PROMPT_LOGIN}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:58:16.171053" elapsed="0.000437"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:58:16.171836" level="INFO">index=476
host=10.30.170.48
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-08T00:58:16.171947" level="INFO">${karaf_connection_object} = index=476
host=10.30.170.48
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_err...</msg>
<var>${karaf_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T00:58:16.171663" elapsed="0.000310"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<arg>${karaf_connection_object.index}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:58:16.172130" elapsed="0.002750"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-08T00:58:16.175357" level="INFO">Logging into '10.30.170.48:8101' as 'karaf'.</msg>
<msg time="2026-04-08T00:58:16.373629" level="INFO">Read output: [33m                                                                                           
[33m    ________                       ________                .__  .__       .__     __       
[33m    \_____  \ ______   ____   ____ \______ \ _____  ___.__.|  | |__| ____ |  |___/  |_     
[33m     /   |   \\____ \_/ __ \ /    \ |    |  \\__  \&lt;   |  ||  | |  |/ ___\|  |  \   __\    
[33m    /    |    \  |_&gt; &gt;  ___/|   |  \|    `   \/ __ \\___  ||  |_|  / /_/  &gt;   Y  \  |      
[33m    \_______  /   __/ \___  &gt;___|  /_______  (____  / ____||____/__\___  /|___|  /__|      
[33m            \/|__|        \/     \/        \/     \/\/            /_____/      \/          
[33m                                                                                           

Hit '[1m&lt;tab&gt;[0m' for a list of available commands
and '[1m[cmd] --help[0m' for help on a specific command.
Hit '[1m&lt;ctrl-d&gt;[0m' or type '[1msystem:shutdown[0m' or '[1mlogout[0m' to shutdown OpenDaylight.

[?1h=[90m~[0m                                                                                [?2004hopendaylight-user</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="PASS" start="2026-04-08T00:58:16.175053" elapsed="0.198757"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:58:16.377430" elapsed="0.000368"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:58:16.377969" elapsed="0.000172"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:58:16.378322" elapsed="0.000104"/>
</kw>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:58:16.375086" elapsed="0.003394"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T00:58:16.374296" elapsed="0.004231"/>
</kw>
<arg>member_index=${index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for ${member_index},
close the previous connection. In any case create a new connection
to karaf console for ${member_index}, set correct prompt set and login to karaf console.
Store connection index for ${member_index} and restore the previous active connection.</doc>
<status status="PASS" start="2026-04-08T00:58:16.166405" elapsed="0.212174"/>
</kw>
<arg>3s</arg>
<arg>1s</arg>
<arg>Open_Controller_Karaf_Console_On_Background</arg>
<arg>member_index=${index}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-08T00:58:16.154313" elapsed="0.224315"/>
</kw>
<arg>BuiltIn.Wait_Until_Keyword_Succeeds</arg>
<arg>3s</arg>
<arg>1s</arg>
<arg>Open_Controller_Karaf_Console_On_Background</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:58:16.153898" elapsed="0.224784"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T00:58:16.153755" elapsed="0.224982"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:58:16.391737" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:58:16.391613" elapsed="0.000176"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:16.391586" elapsed="0.000226"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:58:16.392103" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T00:58:16.391968" elapsed="0.000289"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:16.392683" level="INFO">{1: 476}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:16.392412" elapsed="0.000315"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:16.393121" level="INFO">2</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:16.392879" elapsed="0.000301"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:58:16.393943" level="FAIL">Dictionary does not contain key '2'.</msg>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="FAIL" start="2026-04-08T00:58:16.393705" elapsed="0.000352">Dictionary does not contain key '2'.</status>
</kw>
<msg time="2026-04-08T00:58:16.394181" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:58:16.394310" level="INFO">${old_connection_index} = Dictionary does not contain key '2'.</msg>
<var>${status}</var>
<var>${old_connection_index}</var>
<arg>Get From Dictionary</arg>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:58:16.393341" elapsed="0.000995"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='PASS'">
<kw name="Run Keywords" owner="BuiltIn">
<arg>SSHLibrary.Switch_Connection</arg>
<arg>${old_connection_index}</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Executes all the given keywords in a sequence.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:16.394643" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:16.394416" elapsed="0.000302"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:16.394397" elapsed="0.000357"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:58:16.395733" level="INFO">${ip_address} = 10.30.170.131</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:58:16.395457" elapsed="0.000304"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:58:16.395810" elapsed="0.000033"/>
</return>
<msg time="2026-04-08T00:58:16.395971" level="INFO">${odl_ip} = 10.30.170.131</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:58:16.394960" elapsed="0.001036"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${odl_ip}</arg>
<arg>port=${KARAF_SHELL_PORT}</arg>
<arg>prompt=${KARAF_PROMPT_LOGIN}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:58:16.396150" elapsed="0.000420"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:58:16.396879" level="INFO">index=478
host=10.30.170.131
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-08T00:58:16.396977" level="INFO">${karaf_connection_object} = index=478
host=10.30.170.131
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_er...</msg>
<var>${karaf_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T00:58:16.396738" elapsed="0.000266"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<arg>${karaf_connection_object.index}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:58:16.397168" elapsed="0.002172"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-08T00:58:16.399760" level="INFO">Logging into '10.30.170.131:8101' as 'karaf'.</msg>
<msg time="2026-04-08T00:58:16.600086" level="INFO">Read output: [33m                                                                                           
[33m    ________                       ________                .__  .__       .__     __       
[33m    \_____  \ ______   ____   ____ \______ \ _____  ___.__.|  | |__| ____ |  |___/  |_     
[33m     /   |   \\____ \_/ __ \ /    \ |    |  \\__  \&lt;   |  ||  | |  |/ ___\|  |  \   __\    
[33m    /    |    \  |_&gt; &gt;  ___/|   |  \|    `   \/ __ \\___  ||  |_|  / /_/  &gt;   Y  \  |      
[33m    \_______  /   __/ \___  &gt;___|  /_______  (____  / ____||____/__\___  /|___|  /__|      
[33m            \/|__|        \/     \/        \/     \/\/            /_____/      \/          
[33m                                                                                           

Hit '[1m&lt;tab&gt;[0m' for a list of available commands
and '[1m[cmd] --help[0m' for help on a specific command.
Hit '[1m&lt;ctrl-d&gt;[0m' or type '[1msystem:shutdown[0m' or '[1mlogout[0m' to shutdown OpenDaylight.

[?1h=[90m~[0m                                                                                [?2004hopendaylight-user</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="PASS" start="2026-04-08T00:58:16.399505" elapsed="0.200684"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:58:16.603190" elapsed="0.000380"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:58:16.603739" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:58:16.604037" elapsed="0.000096"/>
</kw>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:58:16.601004" elapsed="0.003206"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T00:58:16.600458" elapsed="0.003798"/>
</kw>
<arg>member_index=${index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for ${member_index},
close the previous connection. In any case create a new connection
to karaf console for ${member_index}, set correct prompt set and login to karaf console.
Store connection index for ${member_index} and restore the previous active connection.</doc>
<status status="PASS" start="2026-04-08T00:58:16.391315" elapsed="0.212990"/>
</kw>
<arg>3s</arg>
<arg>1s</arg>
<arg>Open_Controller_Karaf_Console_On_Background</arg>
<arg>member_index=${index}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-08T00:58:16.379376" elapsed="0.224972"/>
</kw>
<arg>BuiltIn.Wait_Until_Keyword_Succeeds</arg>
<arg>3s</arg>
<arg>1s</arg>
<arg>Open_Controller_Karaf_Console_On_Background</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:58:16.378990" elapsed="0.225406"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T00:58:16.378845" elapsed="0.225589"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:58:16.617548" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:58:16.617438" elapsed="0.000157"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:16.617418" elapsed="0.000199"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:58:16.617940" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T00:58:16.617809" elapsed="0.000261"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:16.618501" level="INFO">{1: 476, 2: 478}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:16.618240" elapsed="0.000305"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:16.618941" level="INFO">3</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:16.618699" elapsed="0.000285"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:58:16.619768" level="FAIL">Dictionary does not contain key '3'.</msg>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="FAIL" start="2026-04-08T00:58:16.619553" elapsed="0.000305">Dictionary does not contain key '3'.</status>
</kw>
<msg time="2026-04-08T00:58:16.619961" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:58:16.620005" level="INFO">${old_connection_index} = Dictionary does not contain key '3'.</msg>
<var>${status}</var>
<var>${old_connection_index}</var>
<arg>Get From Dictionary</arg>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:58:16.619142" elapsed="0.000885"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='PASS'">
<kw name="Run Keywords" owner="BuiltIn">
<arg>SSHLibrary.Switch_Connection</arg>
<arg>${old_connection_index}</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Executes all the given keywords in a sequence.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:16.620342" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:16.620102" elapsed="0.000313"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:16.620084" elapsed="0.000354"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:58:16.621190" level="INFO">${ip_address} = 10.30.171.110</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:58:16.620911" elapsed="0.000305"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:58:16.621263" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:58:16.621411" level="INFO">${odl_ip} = 10.30.171.110</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:58:16.620636" elapsed="0.000799"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${odl_ip}</arg>
<arg>port=${KARAF_SHELL_PORT}</arg>
<arg>prompt=${KARAF_PROMPT_LOGIN}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:58:16.621589" elapsed="0.000384"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:58:16.622295" level="INFO">index=480
host=10.30.171.110
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-08T00:58:16.622393" level="INFO">${karaf_connection_object} = index=480
host=10.30.171.110
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_er...</msg>
<var>${karaf_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T00:58:16.622138" elapsed="0.000280"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<arg>${karaf_connection_object.index}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:58:16.622566" elapsed="0.002173"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-08T00:58:16.625153" level="INFO">Logging into '10.30.171.110:8101' as 'karaf'.</msg>
<msg time="2026-04-08T00:58:16.806500" level="INFO">Read output: [33m                                                                                           
[33m    ________                       ________                .__  .__       .__     __       
[33m    \_____  \ ______   ____   ____ \______ \ _____  ___.__.|  | |__| ____ |  |___/  |_     
[33m     /   |   \\____ \_/ __ \ /    \ |    |  \\__  \&lt;   |  ||  | |  |/ ___\|  |  \   __\    
[33m    /    |    \  |_&gt; &gt;  ___/|   |  \|    `   \/ __ \\___  ||  |_|  / /_/  &gt;   Y  \  |      
[33m    \_______  /   __/ \___  &gt;___|  /_______  (____  / ____||____/__\___  /|___|  /__|      
[33m            \/|__|        \/     \/        \/     \/\/            /_____/      \/          
[33m                                                                                           

Hit '[1m&lt;tab&gt;[0m' for a list of available commands
and '[1m[cmd] --help[0m' for help on a specific command.
Hit '[1m&lt;ctrl-d&gt;[0m' or type '[1msystem:shutdown[0m' or '[1mlogout[0m' to shutdown OpenDaylight.

[?1h=[90m~[0m                                                                                [?2004hopendaylight-user</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="PASS" start="2026-04-08T00:58:16.624903" elapsed="0.181681"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:58:16.809741" elapsed="0.000338"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:58:16.810267" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:58:16.810562" elapsed="0.000096"/>
</kw>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:58:16.807407" elapsed="0.003303"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T00:58:16.806848" elapsed="0.003907"/>
</kw>
<arg>member_index=${index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for ${member_index},
close the previous connection. In any case create a new connection
to karaf console for ${member_index}, set correct prompt set and login to karaf console.
Store connection index for ${member_index} and restore the previous active connection.</doc>
<status status="PASS" start="2026-04-08T00:58:16.617149" elapsed="0.193702"/>
</kw>
<arg>3s</arg>
<arg>1s</arg>
<arg>Open_Controller_Karaf_Console_On_Background</arg>
<arg>member_index=${index}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-08T00:58:16.605032" elapsed="0.205866"/>
</kw>
<arg>BuiltIn.Wait_Until_Keyword_Succeeds</arg>
<arg>3s</arg>
<arg>1s</arg>
<arg>Open_Controller_Karaf_Console_On_Background</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:58:16.604662" elapsed="0.206286"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T00:58:16.604521" elapsed="0.206467"/>
</iter>
<var>${index}</var>
<value>@{ClusterManagement__member_index_list}</value>
<status status="PASS" start="2026-04-08T00:58:16.153601" elapsed="0.657420"/>
</for>
<arg>http_timeout=${http_timeout}</arg>
<doc>Initialize ClusterManagement. Open ssh karaf connections to each ODL.</doc>
<status status="PASS" start="2026-04-08T00:58:14.197084" elapsed="2.613999"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Test_Suite_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:58:16.813782" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:58:16.813670" elapsed="0.000158"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:16.813651" elapsed="0.000198"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:58:16.818400" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:58:16.818294" elapsed="0.000150"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:16.818276" elapsed="0.000189"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:58:16.819410" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:58:16.819012" elapsed="0.000424"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:58:16.819913" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:58:16.819597" elapsed="0.000341"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:58:16.819982" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:58:16.820133" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:58:16.818687" elapsed="0.001484"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:58:16.825311" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:58:16.825203" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:16.825184" elapsed="0.000194"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:58:16.826566" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:58:16.826440" elapsed="0.000171"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:16.826422" elapsed="0.000211"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:58:16.827093" level="INFO">${karaf_connection_index} = 476</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:58:16.826778" elapsed="0.000341"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:58:16.827543" level="INFO">${current_connection_index} = None</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:58:16.827311" elapsed="0.000258"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T00:58:16.869726" level="INFO">@root&gt;log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "s "u "i "t "e "[C "/ "w "/ "w "o "r "k "s "p "a "c "e "/ "o "p "e "[78Cn "[A[78Cf</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T00:58:16.828276" elapsed="0.041580"/>
</kw>
<msg time="2026-04-08T00:58:16.870028" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T00:58:16.870078" level="INFO">${message_write} = @root&gt;log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "s "u "i "t "e "[C "/ "w "/ "w "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:58:16.827764" elapsed="0.042351"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T00:58:16.948705" level="INFO">"l "o "w "p "l "u "g "i "n "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "o "n "l "y "- "v "a "n "a "d "i "u "m "/ "t "e "s "t "/ "c "s "i "t "/ "s "u "i "t "e "s "/ "o "p "e "n "f "l "o "w "p "l "u "g "i "n "/ "[78CC "[A[78Cl
 "u "s "t "e "r "e "d "_ "R "e "c "o "n "c "i "l "i "a "t "i "o "n "/ "0 "1 "0 "_ "G "r "o "u "p "_ "F "l "o "w "s ". "r "o "b "o "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T00:58:16.870903" elapsed="0.077960"/>
</kw>
<msg time="2026-04-08T00:58:16.948995" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T00:58:16.949041" level="INFO">${message_wait} =  "l "o "w "p "l "u "g "i "n "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "o "n "l "y "- "v "a "n ...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:58:16.870409" elapsed="0.078704"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:16.949467" elapsed="0.000048"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:16.949212" elapsed="0.000400"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:16.949190" elapsed="0.000449"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:16.950135" level="INFO"> "l "o "w "p "l "u "g "i "n "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "o "n "l "y "- "v "a "n "a "d "i "u "m "/ "t "e "s "t "/ "c "s "i "t "/ "s "u "i "t "e "s "/ "o "p "e "n "f "l "o "w "p "l "u "g "i "n "/ "[78CC "[A[78Cl
 "u "s "t "e "r "e "d "_ "R "e "c "o "n "c "i "l "i "a "t "i "o "n "/ "0 "1 "0 "_ "G "r "o "u "p "_ "F "l "o "w "s ". "r "o "b "o "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:16.949785" elapsed="0.000566"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:16.950660" elapsed="0.000047"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:16.950420" elapsed="0.000383"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:16.950402" elapsed="0.000427"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T00:58:16.950862" elapsed="0.000030"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:58:16.953010" elapsed="0.000471"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:58:16.953817" elapsed="0.000274"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:58:16.954640" elapsed="0.000226"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:58:16.952260" elapsed="0.002694"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T00:58:16.951129" elapsed="0.003955"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T00:58:16.826138" elapsed="0.129063"/>
</kw>
<msg time="2026-04-08T00:58:16.955295" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:58:16.955337" level="INFO">${message} =  "l "o "w "p "l "u "g "i "n "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "o "n "l "y "- "v "a "n ...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:58:16.825534" elapsed="0.129840"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T00:58:16.955555" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-08T00:58:16.955449" elapsed="0.000164"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:16.955431" elapsed="0.000206"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:16.956034" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:16.956375" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T00:58:16.956446" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T00:58:16.824902" elapsed="0.131647"/>
</kw>
<msg time="2026-04-08T00:58:16.956640" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:58:16.956682" level="INFO">${output} =  "l "o "w "p "l "u "g "i "n "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "o "n "l "y "- "v "a "n ...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:58:16.820538" elapsed="0.136180"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:16.957039" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:16.956792" elapsed="0.000300"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:16.956775" elapsed="0.000339"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T00:58:16.820396" elapsed="0.136740"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:58:16.962415" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:58:16.962306" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:16.962286" elapsed="0.000195"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:58:16.963647" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:58:16.963520" elapsed="0.000172"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:16.963502" elapsed="0.000245"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:58:16.964251" level="INFO">${karaf_connection_index} = 478</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:58:16.963902" elapsed="0.000376"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:58:16.964670" level="INFO">${current_connection_index} = None</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:58:16.964441" elapsed="0.000255"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T00:58:17.007693" level="INFO">@root&gt;log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "s "u "i "t "e "[C "/ "w "/ "w "o "r "k "s "p "a "c "e "/ "o "p "e "[78Cn "[A[78Cf</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T00:58:16.965368" elapsed="0.042463"/>
</kw>
<msg time="2026-04-08T00:58:17.007958" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T00:58:17.008004" level="INFO">${message_write} = @root&gt;log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "s "u "i "t "e "[C "/ "w "/ "w "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:58:16.964859" elapsed="0.043213"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T00:58:17.067679" level="INFO">"l "o "w "p "l "u "g "i "n "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "o "n "l "y "- "v "a "n "a "d "i "u "m "/ "t "e "s "t "/ "c "s "i "t "/ "s "u "i "t "e "s "/ "o "p "e "n "f "l "o "w "p "l "u "g "i "n "/ "[78CC "[A[78Cl
 "u "s "t "e "r "e "d "_ "R "e "c "o "n "c "i "l "i "a "t "i "o "n "/ "0 "1 "0 "_ "G "r "o "u "p "_ "F "l "o "w "s ". "r "o "b "o "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T00:58:17.008767" elapsed="0.059070"/>
</kw>
<msg time="2026-04-08T00:58:17.067965" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T00:58:17.068011" level="INFO">${message_wait} =  "l "o "w "p "l "u "g "i "n "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "o "n "l "y "- "v "a "n ...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:58:17.008274" elapsed="0.059773"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:17.068479" elapsed="0.000049"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:17.068142" elapsed="0.000482"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:17.068105" elapsed="0.000545"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.069144" level="INFO"> "l "o "w "p "l "u "g "i "n "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "o "n "l "y "- "v "a "n "a "d "i "u "m "/ "t "e "s "t "/ "c "s "i "t "/ "s "u "i "t "e "s "/ "o "p "e "n "f "l "o "w "p "l "u "g "i "n "/ "[78CC "[A[78Cl
 "u "s "t "e "r "e "d "_ "R "e "c "o "n "c "i "l "i "a "t "i "o "n "/ "0 "1 "0 "_ "G "r "o "u "p "_ "F "l "o "w "s ". "r "o "b "o "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:17.068797" elapsed="0.000457"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:17.069559" elapsed="0.000048"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:17.069322" elapsed="0.000380"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:17.069304" elapsed="0.000423"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T00:58:17.069759" elapsed="0.000028"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:58:17.071877" elapsed="0.000489"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:58:17.072706" elapsed="0.000274"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:58:17.073316" elapsed="0.000224"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:58:17.070906" elapsed="0.002720"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T00:58:17.070019" elapsed="0.003736"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T00:58:16.963235" elapsed="0.110620"/>
</kw>
<msg time="2026-04-08T00:58:17.073945" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:58:17.073988" level="INFO">${message} =  "l "o "w "p "l "u "g "i "n "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "o "n "l "y "- "v "a "n ...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:58:16.962633" elapsed="0.111390"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T00:58:17.074238" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-08T00:58:17.074098" elapsed="0.000200"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:17.074080" elapsed="0.000241"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 2,
close the previous connection. In any case create a new connection
to karaf console for 2, set correct prompt set and login to karaf console.
Store connection index for 2 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:17.074709" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:17.075294" elapsed="0.000026"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T00:58:17.075368" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T00:58:16.961904" elapsed="0.113570"/>
</kw>
<msg time="2026-04-08T00:58:17.075566" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:58:17.075608" level="INFO">${output} =  "l "o "w "p "l "u "g "i "n "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "o "n "l "y "- "v "a "n ...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:58:16.957409" elapsed="0.118236"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:17.075968" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:17.075719" elapsed="0.000302"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:17.075702" elapsed="0.000342"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T00:58:16.957269" elapsed="0.118797"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:58:17.081378" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:58:17.081272" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:17.081254" elapsed="0.000190"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:58:17.082623" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:58:17.082496" elapsed="0.000172"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:17.082478" elapsed="0.000212"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:58:17.083149" level="INFO">${karaf_connection_index} = 480</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:58:17.082836" elapsed="0.000358"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:58:17.083583" level="INFO">${current_connection_index} = None</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:58:17.083357" elapsed="0.000252"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T00:58:17.128823" level="INFO">@root&gt;log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "s "u "i "t "e "[C "/ "w "/ "w "o "r "k "s "p "a "c "e "/ "o "p "e "[78Cn "[A[78Cf</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T00:58:17.084286" elapsed="0.044701"/>
</kw>
<msg time="2026-04-08T00:58:17.129191" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T00:58:17.129246" level="INFO">${message_write} = @root&gt;log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "s "u "i "t "e "[C "/ "w "/ "w "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:58:17.083770" elapsed="0.045522"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T00:58:17.194239" level="INFO">"l "o "w "p "l "u "g "i "n "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "o "n "l "y "- "v "a "n "a "d "i "u "m "/ "t "e "s "t "/ "c "s "i "t "/ "s "u "i "t "e "s "/ "o "p "e "n "f "l "o "w "p "l "u "g "i "n "/ "[78CC "[A[78Cl
 "u "s "t "e "r "e "d "_ "R "e "c "o "n "c "i "l "i "a "t "i "o "n "/ "0 "1 "0 "_ "G "r "o "u "p "_ "F "l "o "w "s ". "r "o "b "o "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T00:58:17.130076" elapsed="0.064334"/>
</kw>
<msg time="2026-04-08T00:58:17.194545" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T00:58:17.194591" level="INFO">${message_wait} =  "l "o "w "p "l "u "g "i "n "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "o "n "l "y "- "v "a "n ...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:58:17.129504" elapsed="0.065123"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:17.194976" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:17.194712" elapsed="0.000412"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:17.194689" elapsed="0.000462"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.195697" level="INFO"> "l "o "w "p "l "u "g "i "n "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "o "n "l "y "- "v "a "n "a "d "i "u "m "/ "t "e "s "t "/ "c "s "i "t "/ "s "u "i "t "e "s "/ "o "p "e "n "f "l "o "w "p "l "u "g "i "n "/ "[78CC "[A[78Cl
 "u "s "t "e "r "e "d "_ "R "e "c "o "n "c "i "l "i "a "t "i "o "n "/ "0 "1 "0 "_ "G "r "o "u "p "_ "F "l "o "w "s ". "r "o "b "o "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:17.195332" elapsed="0.000458"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:17.196097" elapsed="0.000047"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:17.195857" elapsed="0.000754"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:17.195838" elapsed="0.000800"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T00:58:17.196715" elapsed="0.000035"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:58:17.198657" elapsed="0.000438"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:58:17.199460" elapsed="0.000281"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:58:17.200060" elapsed="0.000446"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:58:17.197887" elapsed="0.002709"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T00:58:17.197006" elapsed="0.003720"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T00:58:17.082211" elapsed="0.118617"/>
</kw>
<msg time="2026-04-08T00:58:17.200921" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:58:17.200963" level="INFO">${message} =  "l "o "w "p "l "u "g "i "n "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "o "n "l "y "- "v "a "n ...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:58:17.081596" elapsed="0.119404"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T00:58:17.201200" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-08T00:58:17.201078" elapsed="0.000182"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:17.201059" elapsed="0.000224"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 3,
close the previous connection. In any case create a new connection
to karaf console for 3, set correct prompt set and login to karaf console.
Store connection index for 3 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:17.201677" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:17.202006" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T00:58:17.202074" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T00:58:17.080970" elapsed="0.121223"/>
</kw>
<msg time="2026-04-08T00:58:17.202285" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:58:17.202328" level="INFO">${output} =  "l "o "w "p "l "u "g "i "n "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "o "n "l "y "- "v "a "n ...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:58:17.076471" elapsed="0.125894"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:17.202693" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:17.202440" elapsed="0.000306"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:17.202423" elapsed="0.000345"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T00:58:17.076329" elapsed="0.126461"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-08T00:58:16.820228" elapsed="0.382592"/>
</for>
<arg>Starting suite ${SUITE_SOURCE}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-08T00:58:16.817994" elapsed="0.384881"/>
</kw>
<doc>Log suite name to karaf log, useful in suite setup.</doc>
<status status="PASS" start="2026-04-08T00:58:16.811713" elapsed="0.391224"/>
</kw>
<arg>KarafKeywords.Log_Test_Suite_Start_To_Controller_Karaf</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:58:16.811262" elapsed="0.391735"/>
</kw>
<doc>Prepare both FailFast and Karaf logging, log that the caller suite has started.
This keyword is to be used in suite setup, and without it the other keywords may not work properly.</doc>
<status status="PASS" start="2026-04-08T00:58:14.191810" elapsed="3.011243"/>
</kw>
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:58:17.203504" level="INFO">Creating Session using : alias=session, url=http://10.30.170.48:8181, headers={},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x76b9e6f0b0d0&gt;, timeout=None, proxies=None, verify=False,                     debug=0 </msg>
<arg>session</arg>
<arg>http://${ODL_SYSTEM_IP}:${RESTCONFPORT}</arg>
<arg>auth=${AUTH}</arg>
<doc>Create Session: create a HTTP session to a server</doc>
<status status="PASS" start="2026-04-08T00:58:17.203236" elapsed="0.000445"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.204283" level="INFO">${switches} = 3</msg>
<var>${switches}</var>
<arg>${SWITCHES}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:58:17.203871" elapsed="0.000439"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.204805" level="INFO">${iter} = 100</msg>
<var>${iter}</var>
<arg>${ITER}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:58:17.204506" elapsed="0.000324"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.205554" level="INFO">${all_groups} = 600</msg>
<var>${all_groups}</var>
<arg>${switches} * ${iter} * 2</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:17.204988" elapsed="0.000593"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.206092" level="INFO">${less_groups} = 594</msg>
<var>${less_groups}</var>
<arg>${all_groups} - ${switches} * 2</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:17.205743" elapsed="0.000375"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.208575" level="INFO">${all_flows} = 303</msg>
<var>${all_flows}</var>
<arg>${switches} * ${iter+1}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:17.206330" elapsed="0.002273"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.209111" level="INFO">${less_flows} = 300</msg>
<var>${less_flows}</var>
<arg>${all_flows} - ${switches}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:17.208764" elapsed="0.000373"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.209642" level="INFO">${switches} = 3</msg>
<arg>${switches}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-08T00:58:17.209321" elapsed="0.000370"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.210168" level="INFO">${iter} = 100</msg>
<arg>${iter}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-08T00:58:17.209861" elapsed="0.000350"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.210663" level="INFO">${all_groups} = 600</msg>
<arg>${all_groups}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-08T00:58:17.210370" elapsed="0.000333"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.211168" level="INFO">${less_groups} = 594</msg>
<arg>${less_groups}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-08T00:58:17.210861" elapsed="0.000349"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.211659" level="INFO">${all_flows} = 303</msg>
<arg>${all_flows}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-08T00:58:17.211369" elapsed="0.000330"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.212144" level="INFO">${less_flows} = 300</msg>
<arg>${less_flows}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-08T00:58:17.211855" elapsed="0.000346"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.216188" level="INFO">${no_flows} = 3</msg>
<arg>${no_flows}</arg>
<arg>${SWITCHES}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-08T00:58:17.212356" elapsed="0.003877"/>
</kw>
<doc>Create controller session and set variables.</doc>
<status status="PASS" start="2026-04-08T00:58:14.191486" elapsed="3.024809"/>
</kw>
<test id="s1-s4-t1" name="Add Groups And Flows" line="28">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-08T00:58:17.220909" elapsed="0.000217"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-08T00:58:17.220643" elapsed="0.000559"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:58:17.222197" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:58:17.222066" elapsed="0.000179"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:17.222047" elapsed="0.000221"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:58:17.227185" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:58:17.227064" elapsed="0.000167"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:17.227046" elapsed="0.000206"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.228281" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:58:17.227854" elapsed="0.000456"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.228814" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:58:17.228510" elapsed="0.000329"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:58:17.228883" elapsed="0.000032"/>
</return>
<msg time="2026-04-08T00:58:17.229038" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:58:17.227478" elapsed="0.001585"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:58:17.235438" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:58:17.235318" elapsed="0.000170"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:17.235297" elapsed="0.000217"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:58:17.236904" elapsed="0.000020"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:58:17.236762" elapsed="0.000217"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:17.236741" elapsed="0.000268"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:58:17.237580" level="INFO">${karaf_connection_index} = 476</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:58:17.237232" elapsed="0.000378"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:58:17.238063" level="INFO">${current_connection_index} = None</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:58:17.237803" elapsed="0.000292"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T00:58:17.279281" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T00:58:17.238689" elapsed="0.040844"/>
</kw>
<msg time="2026-04-08T00:58:17.279735" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T00:58:17.279786" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:58:17.238304" elapsed="0.041520"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T00:58:17.318528" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "A "d "d "[C "G "r "o "u "p "s "[C "A "n "d "[C "F "l "o "w "s "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T00:58:17.280463" elapsed="0.038174"/>
</kw>
<msg time="2026-04-08T00:58:17.318799" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T00:58:17.318846" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "A "d "d "[C "G "r "o "u "p "s "[C "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:58:17.280033" elapsed="0.038852"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:17.319250" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:17.318974" elapsed="0.000335"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:17.318949" elapsed="0.000387"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.319788" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "A "d "d "[C "G "r "o "u "p "s "[C "A "n "d "[C "F "l "o "w "s "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:17.319483" elapsed="0.000375"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:17.320145" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:17.319925" elapsed="0.000291"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:17.319907" elapsed="0.000332"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T00:58:17.320275" elapsed="0.000051"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:58:17.321821" elapsed="0.000778"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:58:17.322878" elapsed="0.000489"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:58:17.323632" elapsed="0.000355"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:58:17.321191" elapsed="0.002896"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T00:58:17.320604" elapsed="0.003547"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T00:58:17.236394" elapsed="0.087879"/>
</kw>
<msg time="2026-04-08T00:58:17.324366" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:58:17.324409" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "A "d "d "[C "G "r "o "u "p "s "[C "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:58:17.235723" elapsed="0.088724"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T00:58:17.324628" elapsed="0.000048"/>
</return>
<status status="PASS" start="2026-04-08T00:58:17.324523" elapsed="0.000186"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:17.324504" elapsed="0.000228"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:17.325141" elapsed="0.000041"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:17.325494" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T00:58:17.325565" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T00:58:17.234919" elapsed="0.090752"/>
</kw>
<msg time="2026-04-08T00:58:17.325763" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:58:17.325808" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "A "d "d "[C "G "r "o "u "p "s "[C "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:58:17.229580" elapsed="0.096266"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:17.326228" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:17.325921" elapsed="0.000362"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:17.325904" elapsed="0.000403"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T00:58:17.229436" elapsed="0.096895"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:58:17.331821" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:58:17.331714" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:17.331695" elapsed="0.000193"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:58:17.333084" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:58:17.332977" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:17.332959" elapsed="0.000193"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:58:17.333624" level="INFO">${karaf_connection_index} = 478</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:58:17.333328" elapsed="0.000323"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:58:17.334035" level="INFO">${current_connection_index} = None</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:58:17.333811" elapsed="0.000250"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T00:58:17.363194" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T00:58:17.334578" elapsed="0.028719"/>
</kw>
<msg time="2026-04-08T00:58:17.363456" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T00:58:17.363503" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:58:17.334239" elapsed="0.029301"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T00:58:17.394684" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "A "d "d "[C "G "r "o "u "p "s "[C "A "n "d "[C "F "l "o "w "s "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T00:58:17.364051" elapsed="0.030911"/>
</kw>
<msg time="2026-04-08T00:58:17.395303" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T00:58:17.395372" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "A "d "d "[C "G "r "o "u "p "s "[C "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:58:17.363713" elapsed="0.031711"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:17.396031" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:17.395577" elapsed="0.000538"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:17.395535" elapsed="0.000617"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.396931" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "A "d "d "[C "G "r "o "u "p "s "[C "A "n "d "[C "F "l "o "w "s "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:17.396382" elapsed="0.000650"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:17.397463" elapsed="0.000029"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:17.397128" elapsed="0.000411"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:17.397102" elapsed="0.000469"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T00:58:17.397621" elapsed="0.000052"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:58:17.399812" elapsed="0.001137"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:58:17.401359" elapsed="0.000613"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:58:17.402254" elapsed="0.000354"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:58:17.398885" elapsed="0.003824"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T00:58:17.398066" elapsed="0.004708"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T00:58:17.332646" elapsed="0.070230"/>
</kw>
<msg time="2026-04-08T00:58:17.402975" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:58:17.403021" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "A "d "d "[C "G "r "o "u "p "s "[C "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:58:17.332038" elapsed="0.071088"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T00:58:17.403352" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-08T00:58:17.403241" elapsed="0.000171"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:17.403220" elapsed="0.000216"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 2,
close the previous connection. In any case create a new connection
to karaf console for 2, set correct prompt set and login to karaf console.
Store connection index for 2 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:17.403851" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:17.404237" elapsed="0.000026"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T00:58:17.404311" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T00:58:17.331374" elapsed="0.073047"/>
</kw>
<msg time="2026-04-08T00:58:17.404520" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:58:17.404565" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "A "d "d "[C "G "r "o "u "p "s "[C "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:58:17.326605" elapsed="0.077997"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:17.405140" elapsed="0.000043"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:17.404680" elapsed="0.000543"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:17.404663" elapsed="0.000584"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T00:58:17.326462" elapsed="0.078815"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:58:17.412374" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:58:17.412264" elapsed="0.000157"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:17.412244" elapsed="0.000199"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:58:17.413619" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:58:17.413511" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:17.413492" elapsed="0.000195"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:58:17.414138" level="INFO">${karaf_connection_index} = 480</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:58:17.413835" elapsed="0.000346"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:58:17.414569" level="INFO">${current_connection_index} = None</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:58:17.414344" elapsed="0.000252"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T00:58:17.452353" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T00:58:17.415093" elapsed="0.037517"/>
</kw>
<msg time="2026-04-08T00:58:17.452957" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T00:58:17.453035" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:58:17.414758" elapsed="0.038335"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T00:58:17.493459" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "A "d "d "[C "G "r "o "u "p "s "[C "A "n "d "[C "F "l "o "w "s "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T00:58:17.454114" elapsed="0.039473"/>
</kw>
<msg time="2026-04-08T00:58:17.493765" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T00:58:17.493829" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "A "d "d "[C "G "r "o "u "p "s "[C "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:58:17.453474" elapsed="0.040394"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:17.494282" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:17.493979" elapsed="0.000363"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:17.493946" elapsed="0.000426"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.494868" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "A "d "d "[C "G "r "o "u "p "s "[C "A "n "d "[C "F "l "o "w "s "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:17.494524" elapsed="0.000416"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:17.495406" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:17.495154" elapsed="0.000308"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:17.495133" elapsed="0.000352"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T00:58:17.495522" elapsed="0.000041"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:58:17.497263" elapsed="0.000797"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:58:17.498367" elapsed="0.000474"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:58:17.499109" elapsed="0.000382"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:58:17.496474" elapsed="0.003122"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T00:58:17.495854" elapsed="0.003808"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T00:58:17.413206" elapsed="0.086558"/>
</kw>
<msg time="2026-04-08T00:58:17.499862" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:58:17.499907" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "A "d "d "[C "G "r "o "u "p "s "[C "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:58:17.412596" elapsed="0.087356"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T00:58:17.500143" elapsed="0.000043"/>
</return>
<status status="PASS" start="2026-04-08T00:58:17.500033" elapsed="0.000188"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:17.500014" elapsed="0.000231"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 3,
close the previous connection. In any case create a new connection
to karaf console for 3, set correct prompt set and login to karaf console.
Store connection index for 3 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:17.500662" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:17.501033" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T00:58:17.501106" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T00:58:17.411891" elapsed="0.089341"/>
</kw>
<msg time="2026-04-08T00:58:17.501332" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:58:17.501376" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "A "d "d "[C "G "r "o "u "p "s "[C "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:58:17.405563" elapsed="0.095852"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:17.501747" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:17.501492" elapsed="0.000308"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:17.501475" elapsed="0.000348"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T00:58:17.405417" elapsed="0.096430"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-08T00:58:17.229258" elapsed="0.272625"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-08T00:58:17.226711" elapsed="0.275233"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-08T00:58:17.221777" elapsed="0.280226"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:58:17.221355" elapsed="0.280695"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-08T00:58:17.218480" elapsed="0.283624"/>
</kw>
<kw name="Add Groups And Flows On Member">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.503503" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:58:17.503125" elapsed="0.000404"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:58:17.503574" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:58:17.503720" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:58:17.502764" elapsed="0.000981"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.506936" level="INFO">&amp;{mapping} = { NODE=openflow:1 }</msg>
<var>&amp;{mapping}</var>
<arg>NODE=openflow:${switch}</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-08T00:58:17.506523" elapsed="0.000477"/>
</kw>
<kw name="Post_As_Json_Templated" owner="TemplatedRequests">
<kw name="Post_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.549341" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1.vanadium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:58:17.548930" elapsed="0.000440"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:58:17.550222" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-1.vanadium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:58:17.549872" elapsed="0.000433">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-1.vanadium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-08T00:58:17.550401" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:58:17.549535" elapsed="0.000891"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.550981" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:58:17.550592" elapsed="0.000416"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T00:58:17.551328" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-1/location.uri"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-1/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-08T00:58:17.551512" level="INFO">${template} = /rests/data/opendaylight-inventory:nodes/node=$NODE
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T00:58:17.551187" elapsed="0.000351"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.551942" level="INFO">/rests/data/opendaylight-inventory:nodes/node=$NODE
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:17.551697" elapsed="0.000288"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.552951" level="INFO">mapping: {'NODE': 'openflow:1'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:17.552688" elapsed="0.000307"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.553774" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-08T00:58:17.553463" elapsed="0.000339"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.554737" level="INFO">${value} = openflow:1</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-08T00:58:17.554218" elapsed="0.000545"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-08T00:58:17.556062" level="INFO">${encoded} = openflow%3A1</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-08T00:58:17.555434" elapsed="0.000670"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-08T00:58:17.556240" elapsed="0.000039"/>
</return>
<msg time="2026-04-08T00:58:17.556608" level="INFO">${encoded_value} = openflow%3A1</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-08T00:58:17.554959" elapsed="0.001675"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:58:17.556794" elapsed="0.000553"/>
</kw>
<var name="${key}">NODE</var>
<var name="${value}">openflow:1</var>
<status status="PASS" start="2026-04-08T00:58:17.554063" elapsed="0.003328"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-08T00:58:17.553856" elapsed="0.003571"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-08T00:58:17.557470" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:58:17.557628" level="INFO">${mapping_to_use} = {'NODE': 'openflow%3A1'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-08T00:58:17.552364" elapsed="0.005290"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:17.552053" elapsed="0.005632"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:17.557860" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:17.557709" elapsed="0.000206"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:17.552034" elapsed="0.005902"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.558877" level="INFO">${final_text} = /rests/data/opendaylight-inventory:nodes/node=openflow%3A1</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:17.558079" elapsed="0.000826"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T00:58:17.558955" elapsed="0.000028"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1/${file_name}.</doc>
<status status="PASS" start="2026-04-08T00:58:17.548317" elapsed="0.010760"/>
</kw>
<msg time="2026-04-08T00:58:17.559202" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:58:17.536000" elapsed="0.023254"/>
</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-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:17.571444" 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-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:17.583508" 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-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:17.595585" elapsed="0.000027"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:17.595784" elapsed="0.000022"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:17.595960" elapsed="0.000020"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:17.596345" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:17.596196" elapsed="0.000203"/>
</branch>
<status status="NOT RUN" start="2026-04-08T00:58:17.596179" elapsed="0.000243"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:17.596562" elapsed="0.000021"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:17.596732" elapsed="0.000019"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:17.596898" elapsed="0.000020"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-08T00:58:17.596135" elapsed="0.000817"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-08T00:58:17.596034" elapsed="0.000946"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:17.597127" elapsed="0.000019"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-08T00:58:17.597239" elapsed="0.000017"/>
</return>
<msg time="2026-04-08T00:58:17.597391" level="INFO">${uri} = /rests/data/opendaylight-inventory:nodes/node=openflow%3A1</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one 100 times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-08T00:58:17.531769" elapsed="0.065657"/>
</kw>
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:58:17.608302" elapsed="0.000338"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.621747" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1.vanadium/post_data.prolog.json</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:58:17.621375" elapsed="0.000435"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:58:17.622563" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-1.vanadium/post_data.prolog.json' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:58:17.622330" elapsed="0.000304">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-1.vanadium/post_data.prolog.json' does not exist.</status>
</kw>
<msg time="2026-04-08T00:58:17.622759" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:58:17.621978" elapsed="0.000807"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.623361" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1/post_data.prolog.json</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:58:17.622957" elapsed="0.000431"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T00:58:17.623686" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-1/post_data.prolog.json"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-1/post_data.prolog.json&lt;/a&gt;'.</msg>
<msg time="2026-04-08T00:58:17.623892" level="INFO">${template} = {
  "flow-node-inventory:group": [
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T00:58:17.623552" elapsed="0.000366"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.624349" level="INFO">{
  "flow-node-inventory:group": [
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:17.624076" elapsed="0.000317"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="NOT RUN" start="2026-04-08T00:58:17.624758" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:17.624462" elapsed="0.000353"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.625323" level="INFO">${mapping_to_use} = {'NODE': 'openflow:1'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:58:17.624986" elapsed="0.000363"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:17.624839" elapsed="0.000545"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:17.624442" elapsed="0.000965"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.625979" level="INFO">${final_text} = {
  "flow-node-inventory:group": [</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:17.625553" elapsed="0.000452"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T00:58:17.626053" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:58:17.626226" level="INFO">${prolog} = {
  "flow-node-inventory:group": [</msg>
<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-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1/${file_name}.</doc>
<status status="PASS" start="2026-04-08T00:58:17.620729" elapsed="0.005523"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.639780" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1.vanadium/post_data.epilog.json</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:58:17.639406" elapsed="0.000402"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:58:17.640526" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-1.vanadium/post_data.epilog.json' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:58:17.640322" elapsed="0.000268">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-1.vanadium/post_data.epilog.json' does not exist.</status>
</kw>
<msg time="2026-04-08T00:58:17.640681" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:58:17.639972" elapsed="0.000733"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.641275" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1/post_data.epilog.json</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:58:17.640870" elapsed="0.000433"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T00:58:17.641597" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-1/post_data.epilog.json"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-1/post_data.epilog.json&lt;/a&gt;'.</msg>
<msg time="2026-04-08T00:58:17.641725" level="INFO">${template} =   ]
}
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T00:58:17.641464" elapsed="0.000316"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.642211" level="INFO">  ]
}
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:17.641940" elapsed="0.000317"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="NOT RUN" start="2026-04-08T00:58:17.642613" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:17.642326" elapsed="0.000344"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.643151" level="INFO">${mapping_to_use} = {'NODE': 'openflow:1'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:58:17.642859" elapsed="0.000335"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:17.642694" elapsed="0.000536"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:17.642306" elapsed="0.000946"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.643826" level="INFO">${final_text} =   ]
}</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:17.643398" elapsed="0.000454"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T00:58:17.643900" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:58:17.644048" level="INFO">${epilog} =   ]
}</msg>
<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-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1/${file_name}.</doc>
<status status="PASS" start="2026-04-08T00:58:17.638769" elapsed="0.005303"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.657152" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1.vanadium/data.item.json</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:58:17.656785" elapsed="0.000411"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:58:17.657900" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-1.vanadium/data.item.json' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:58:17.657698" elapsed="0.000266">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-1.vanadium/data.item.json' does not exist.</status>
</kw>
<msg time="2026-04-08T00:58:17.658055" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:58:17.657369" elapsed="0.000710"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.658639" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1/data.item.json</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:58:17.658258" elapsed="0.000408"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T00:58:17.658958" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-1/data.item.json"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-1/data.item.json&lt;/a&gt;'.</msg>
<msg time="2026-04-08T00:58:17.659088" level="INFO">${template} =         {
          "group-id": ${i}000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
       ...</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T00:58:17.658826" elapsed="0.000289"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.659540" level="INFO">        {
          "group-id": ${i}000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-${i}",
          "group-type": "group-select"
        }
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:17.659297" elapsed="0.000291"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="NOT RUN" start="2026-04-08T00:58:17.659948" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:17.659655" elapsed="0.000350"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.660482" level="INFO">${mapping_to_use} = {'NODE': 'openflow:1'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:58:17.660192" elapsed="0.000316"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:17.660030" elapsed="0.000513"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:17.659637" elapsed="0.000927"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.661331" level="INFO">${final_text} =         {
          "group-id": ${i}000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
       ...</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:17.660709" elapsed="0.000653"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T00:58:17.661443" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:58:17.661599" level="INFO">${item_template} =         {
          "group-id": ${i}000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
       ...</msg>
<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-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1/${file_name}.</doc>
<status status="PASS" start="2026-04-08T00:58:17.656244" elapsed="0.005381"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.662031" level="INFO">${items} = []</msg>
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:58:17.661787" elapsed="0.000270"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.662605" level="INFO">${separator} = ,
</msg>
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:58:17.662232" elapsed="0.000399"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:17.663266" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:17.663015" elapsed="0.000308"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:17.663000" elapsed="0.000347"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.663841" level="INFO">${j} = 1</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:17.663488" elapsed="0.000379"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.664786" level="INFO">${item} =         {
          "group-id": 1000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
          ...</msg>
<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="PASS" start="2026-04-08T00:58:17.664022" elapsed="0.000794"/>
</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="PASS" start="2026-04-08T00:58:17.664996" elapsed="0.000229"/>
</kw>
<var name="${iteration}">1</var>
<status status="PASS" start="2026-04-08T00:58:17.662968" elapsed="0.002297"/>
</iter>
<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="PASS" start="2026-04-08T00:58:17.665717" elapsed="0.000185"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:17.665475" elapsed="0.000466"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:17.665460" elapsed="0.000506"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.666481" level="INFO">${j} = 2</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:17.666110" elapsed="0.000397"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.667263" level="INFO">${item} =         {
          "group-id": 2000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
          ...</msg>
<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="PASS" start="2026-04-08T00:58:17.666662" elapsed="0.000629"/>
</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="PASS" start="2026-04-08T00:58:17.667447" elapsed="0.000183"/>
</kw>
<var name="${iteration}">2</var>
<status status="PASS" start="2026-04-08T00:58:17.665428" elapsed="0.002239"/>
</iter>
<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="PASS" start="2026-04-08T00:58:17.668086" elapsed="0.000200"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:17.667843" elapsed="0.000481"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:17.667828" elapsed="0.000521"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.668840" level="INFO">${j} = 3</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:17.668493" elapsed="0.000372"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.669636" level="INFO">${item} =         {
          "group-id": 3000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
          ...</msg>
<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="PASS" start="2026-04-08T00:58:17.669021" elapsed="0.000643"/>
</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="PASS" start="2026-04-08T00:58:17.669821" elapsed="0.000186"/>
</kw>
<var name="${iteration}">3</var>
<status status="PASS" start="2026-04-08T00:58:17.667797" elapsed="0.002247"/>
</iter>
<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="PASS" start="2026-04-08T00:58:17.670475" elapsed="0.000182"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:17.670238" elapsed="0.000457"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:17.670224" elapsed="0.000494"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.671233" level="INFO">${j} = 4</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:17.670867" elapsed="0.000392"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.672039" level="INFO">${item} =         {
          "group-id": 4000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
          ...</msg>
<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="PASS" start="2026-04-08T00:58:17.671413" elapsed="0.000654"/>
</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="PASS" start="2026-04-08T00:58:17.672241" elapsed="0.000186"/>
</kw>
<var name="${iteration}">4</var>
<status status="PASS" start="2026-04-08T00:58:17.670192" elapsed="0.002273"/>
</iter>
<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="PASS" start="2026-04-08T00:58:17.672878" elapsed="0.000183"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:17.672643" elapsed="0.000456"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:17.672628" elapsed="0.000495"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.673648" level="INFO">${j} = 5</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:17.673284" elapsed="0.000390"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.674424" level="INFO">${item} =         {
          "group-id": 5000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
          ...</msg>
<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="PASS" start="2026-04-08T00:58:17.673830" elapsed="0.000622"/>
</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="PASS" start="2026-04-08T00:58:17.674607" elapsed="0.000183"/>
</kw>
<var name="${iteration}">5</var>
<status status="PASS" start="2026-04-08T00:58:17.672598" elapsed="0.002230"/>
</iter>
<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="PASS" start="2026-04-08T00:58:17.675273" elapsed="0.000186"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:17.675003" elapsed="0.000495"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:17.674989" elapsed="0.000533"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.676025" level="INFO">${j} = 6</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:17.675671" elapsed="0.000379"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.676835" level="INFO">${item} =         {
          "group-id": 6000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
          ...</msg>
<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="PASS" start="2026-04-08T00:58:17.676221" elapsed="0.000642"/>
</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="PASS" start="2026-04-08T00:58:17.677025" elapsed="0.000212"/>
</kw>
<var name="${iteration}">6</var>
<status status="PASS" start="2026-04-08T00:58:17.674959" elapsed="0.002317"/>
</iter>
<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="PASS" start="2026-04-08T00:58:17.677723" elapsed="0.000182"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:17.677486" elapsed="0.000457"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:17.677471" elapsed="0.000496"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.678484" level="INFO">${j} = 7</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:17.678116" elapsed="0.000394"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.679260" level="INFO">${item} =         {
          "group-id": 7000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
          ...</msg>
<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="PASS" start="2026-04-08T00:58:17.678664" elapsed="0.000624"/>
</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="PASS" start="2026-04-08T00:58:17.679442" elapsed="0.000188"/>
</kw>
<var name="${iteration}">7</var>
<status status="PASS" start="2026-04-08T00:58:17.677439" elapsed="0.002229"/>
</iter>
<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="PASS" start="2026-04-08T00:58:17.680077" elapsed="0.000199"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:17.679843" elapsed="0.000471"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:17.679828" elapsed="0.000510"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.680825" level="INFO">${j} = 8</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:17.680480" elapsed="0.000371"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.681741" level="INFO">${item} =         {
          "group-id": 8000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
          ...</msg>
<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="PASS" start="2026-04-08T00:58:17.681012" elapsed="0.000758"/>
</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="PASS" start="2026-04-08T00:58:17.681926" elapsed="0.000183"/>
</kw>
<var name="${iteration}">8</var>
<status status="PASS" start="2026-04-08T00:58:17.679798" elapsed="0.002349"/>
</iter>
<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="PASS" start="2026-04-08T00:58:17.682579" elapsed="0.000183"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:17.682343" elapsed="0.000457"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:17.682328" elapsed="0.000528"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.683379" level="INFO">${j} = 9</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:17.683011" elapsed="0.000395"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.684136" level="INFO">${item} =         {
          "group-id": 9000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
          ...</msg>
<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="PASS" start="2026-04-08T00:58:17.683564" elapsed="0.000615"/>
</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="PASS" start="2026-04-08T00:58:17.684338" elapsed="0.000183"/>
</kw>
<var name="${iteration}">9</var>
<status status="PASS" start="2026-04-08T00:58:17.682297" elapsed="0.002261"/>
</iter>
<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="PASS" start="2026-04-08T00:58:17.684973" elapsed="0.000180"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:17.684738" elapsed="0.000469"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:17.684723" elapsed="0.000509"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.685752" level="INFO">${j} = 10</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:17.685402" elapsed="0.000376"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.686531" level="INFO">${item} =         {
          "group-id": 10000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:17.685933" elapsed="0.000626"/>
</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="PASS" start="2026-04-08T00:58:17.686712" elapsed="0.000180"/>
</kw>
<var name="${iteration}">10</var>
<status status="PASS" start="2026-04-08T00:58:17.684692" elapsed="0.002237"/>
</iter>
<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="PASS" start="2026-04-08T00:58:17.687357" elapsed="0.000180"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:17.687106" elapsed="0.000469"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:17.687091" elapsed="0.000508"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.688087" level="INFO">${j} = 11</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:17.687741" elapsed="0.000372"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.688857" level="INFO">${item} =         {
          "group-id": 11000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:17.688283" elapsed="0.000602"/>
</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="PASS" start="2026-04-08T00:58:17.689041" elapsed="0.000197"/>
</kw>
<var name="${iteration}">11</var>
<status status="PASS" start="2026-04-08T00:58:17.687061" elapsed="0.002215"/>
</iter>
<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="PASS" start="2026-04-08T00:58:17.689729" elapsed="0.000182"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:17.689489" elapsed="0.000461"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:17.689474" elapsed="0.000500"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.690481" level="INFO">${j} = 12</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:17.690117" elapsed="0.000390"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.691263" level="INFO">${item} =         {
          "group-id": 12000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:17.690662" elapsed="0.000630"/>
</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="PASS" start="2026-04-08T00:58:17.691448" elapsed="0.000180"/>
</kw>
<var name="${iteration}">12</var>
<status status="PASS" start="2026-04-08T00:58:17.689443" elapsed="0.002222"/>
</iter>
<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="PASS" start="2026-04-08T00:58:17.692082" elapsed="0.000204"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:17.691842" elapsed="0.000482"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:17.691827" elapsed="0.000527"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.692842" level="INFO">${j} = 13</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:17.692497" elapsed="0.000370"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.693638" level="INFO">${item} =         {
          "group-id": 13000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:17.693026" elapsed="0.000640"/>
</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="PASS" start="2026-04-08T00:58:17.693821" elapsed="0.000180"/>
</kw>
<var name="${iteration}">13</var>
<status status="PASS" start="2026-04-08T00:58:17.691797" elapsed="0.002294"/>
</iter>
<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="PASS" start="2026-04-08T00:58:17.694559" elapsed="0.000186"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:17.694315" elapsed="0.000469"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:17.694298" elapsed="0.000510"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.695322" level="INFO">${j} = 14</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:17.694956" elapsed="0.000393"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.696073" level="INFO">${item} =         {
          "group-id": 14000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:17.695504" elapsed="0.000597"/>
</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="PASS" start="2026-04-08T00:58:17.696271" elapsed="0.000183"/>
</kw>
<var name="${iteration}">14</var>
<status status="PASS" start="2026-04-08T00:58:17.694260" elapsed="0.002233"/>
</iter>
<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="PASS" start="2026-04-08T00:58:17.696904" elapsed="0.000180"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:17.696670" elapsed="0.000452"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:17.696655" elapsed="0.000491"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.697841" level="INFO">${j} = 15</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:17.697311" elapsed="0.000557"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.698640" level="INFO">${item} =         {
          "group-id": 15000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:17.698032" elapsed="0.000636"/>
</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="PASS" start="2026-04-08T00:58:17.698825" elapsed="0.000186"/>
</kw>
<var name="${iteration}">15</var>
<status status="PASS" start="2026-04-08T00:58:17.696625" elapsed="0.002424"/>
</iter>
<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="PASS" start="2026-04-08T00:58:17.699480" elapsed="0.000181"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:17.699244" elapsed="0.000455"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:17.699229" elapsed="0.000493"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.700231" level="INFO">${j} = 16</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:17.699865" elapsed="0.000392"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.700989" level="INFO">${item} =         {
          "group-id": 16000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:17.700412" elapsed="0.000605"/>
</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="PASS" start="2026-04-08T00:58:17.701186" elapsed="0.000183"/>
</kw>
<var name="${iteration}">16</var>
<status status="PASS" start="2026-04-08T00:58:17.699197" elapsed="0.002235"/>
</iter>
<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="PASS" start="2026-04-08T00:58:17.701879" elapsed="0.000189"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:17.701611" elapsed="0.000494"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:17.701596" elapsed="0.000534"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.702640" level="INFO">${j} = 17</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:17.702288" elapsed="0.000378"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.703404" level="INFO">${item} =         {
          "group-id": 17000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:17.702819" elapsed="0.000612"/>
</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="PASS" start="2026-04-08T00:58:17.703586" elapsed="0.000279"/>
</kw>
<var name="${iteration}">17</var>
<status status="PASS" start="2026-04-08T00:58:17.701565" elapsed="0.002338"/>
</iter>
<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="PASS" start="2026-04-08T00:58:17.704353" elapsed="0.000181"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:17.704089" elapsed="0.000483"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:17.704073" elapsed="0.000523"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.705094" level="INFO">${j} = 18</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:17.704743" elapsed="0.000377"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.706144" level="INFO">${item} =         {
          "group-id": 18000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:17.705291" elapsed="0.000950"/>
</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="PASS" start="2026-04-08T00:58:17.706413" elapsed="0.000187"/>
</kw>
<var name="${iteration}">18</var>
<status status="PASS" start="2026-04-08T00:58:17.704036" elapsed="0.002602"/>
</iter>
<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="PASS" start="2026-04-08T00:58:17.707051" elapsed="0.000198"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:17.706815" elapsed="0.000473"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:17.706800" elapsed="0.000512"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.707801" level="INFO">${j} = 19</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:17.707454" elapsed="0.000372"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.708575" level="INFO">${item} =         {
          "group-id": 19000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:17.707979" elapsed="0.000624"/>
</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="PASS" start="2026-04-08T00:58:17.708757" elapsed="0.000180"/>
</kw>
<var name="${iteration}">19</var>
<status status="PASS" start="2026-04-08T00:58:17.706770" elapsed="0.002204"/>
</iter>
<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="PASS" start="2026-04-08T00:58:17.709433" elapsed="0.000183"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:17.709151" elapsed="0.000504"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:17.709136" elapsed="0.000543"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.710177" level="INFO">${j} = 20</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:17.709820" elapsed="0.000390"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.710940" level="INFO">${item} =         {
          "group-id": 20000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:17.710366" elapsed="0.000602"/>
</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="PASS" start="2026-04-08T00:58:17.711122" elapsed="0.000197"/>
</kw>
<var name="${iteration}">20</var>
<status status="PASS" start="2026-04-08T00:58:17.709106" elapsed="0.002315"/>
</iter>
<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="PASS" start="2026-04-08T00:58:17.711848" elapsed="0.000180"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:17.711613" elapsed="0.000453"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:17.711598" elapsed="0.000492"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.712602" level="INFO">${j} = 21</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:17.712256" elapsed="0.000372"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.713373" level="INFO">${item} =         {
          "group-id": 21000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:17.712780" elapsed="0.000635"/>
</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="PASS" start="2026-04-08T00:58:17.713570" elapsed="0.000179"/>
</kw>
<var name="${iteration}">21</var>
<status status="PASS" start="2026-04-08T00:58:17.711563" elapsed="0.002222"/>
</iter>
<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="PASS" start="2026-04-08T00:58:17.714219" elapsed="0.000320"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:17.713964" elapsed="0.000613"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:17.713949" elapsed="0.000653"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.715096" level="INFO">${j} = 22</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:17.714747" elapsed="0.000375"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.715871" level="INFO">${item} =         {
          "group-id": 22000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:17.715292" elapsed="0.000607"/>
</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="PASS" start="2026-04-08T00:58:17.716054" elapsed="0.000198"/>
</kw>
<var name="${iteration}">22</var>
<status status="PASS" start="2026-04-08T00:58:17.713919" elapsed="0.002371"/>
</iter>
<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="PASS" start="2026-04-08T00:58:17.716702" elapsed="0.000181"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:17.716468" elapsed="0.000452"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:17.716453" elapsed="0.000492"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.717497" level="INFO">${j} = 23</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:17.717098" elapsed="0.000457"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.718306" level="INFO">${item} =         {
          "group-id": 23000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:17.717715" elapsed="0.000620"/>
</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="PASS" start="2026-04-08T00:58:17.718490" elapsed="0.000181"/>
</kw>
<var name="${iteration}">23</var>
<status status="PASS" start="2026-04-08T00:58:17.716423" elapsed="0.002285"/>
</iter>
<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="PASS" start="2026-04-08T00:58:17.719117" elapsed="0.000198"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:17.718883" elapsed="0.000470"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:17.718869" elapsed="0.000507"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.719862" level="INFO">${j} = 24</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:17.719518" elapsed="0.000369"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.720632" level="INFO">${item} =         {
          "group-id": 24000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:17.720040" elapsed="0.000620"/>
</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="PASS" start="2026-04-08T00:58:17.720815" elapsed="0.000179"/>
</kw>
<var name="${iteration}">24</var>
<status status="PASS" start="2026-04-08T00:58:17.718839" elapsed="0.002192"/>
</iter>
<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="PASS" start="2026-04-08T00:58:17.721470" elapsed="0.000182"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:17.721223" elapsed="0.000467"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:17.721209" elapsed="0.000505"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.722218" level="INFO">${j} = 25</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:17.721856" elapsed="0.000394"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.723017" level="INFO">${item} =         {
          "group-id": 25000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:17.722428" elapsed="0.000618"/>
</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="PASS" start="2026-04-08T00:58:17.723218" elapsed="0.000185"/>
</kw>
<var name="${iteration}">25</var>
<status status="PASS" start="2026-04-08T00:58:17.721177" elapsed="0.002264"/>
</iter>
<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="PASS" start="2026-04-08T00:58:17.723864" elapsed="0.000185"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:17.723621" elapsed="0.000465"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:17.723606" elapsed="0.000505"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.724628" level="INFO">${j} = 26</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:17.724277" elapsed="0.000376"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.725406" level="INFO">${item} =         {
          "group-id": 26000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:17.724806" elapsed="0.000659"/>
</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="PASS" start="2026-04-08T00:58:17.725627" elapsed="0.000182"/>
</kw>
<var name="${iteration}">26</var>
<status status="PASS" start="2026-04-08T00:58:17.723575" elapsed="0.002272"/>
</iter>
<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="PASS" start="2026-04-08T00:58:17.726274" elapsed="0.000182"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:17.726023" elapsed="0.000471"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:17.726009" elapsed="0.000509"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.727020" level="INFO">${j} = 27</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:17.726665" elapsed="0.000380"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.727790" level="INFO">${item} =         {
          "group-id": 27000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:17.727214" elapsed="0.000603"/>
</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="PASS" start="2026-04-08T00:58:17.727970" elapsed="0.000178"/>
</kw>
<var name="${iteration}">27</var>
<status status="PASS" start="2026-04-08T00:58:17.725979" elapsed="0.002223"/>
</iter>
<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="PASS" start="2026-04-08T00:58:17.728655" elapsed="0.000183"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:17.728386" elapsed="0.000490"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:17.728366" elapsed="0.000535"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.729425" level="INFO">${j} = 28</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:17.729044" elapsed="0.000420"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.730212" level="INFO">${item} =         {
          "group-id": 28000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:17.729620" elapsed="0.000621"/>
</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="PASS" start="2026-04-08T00:58:17.730396" elapsed="0.000180"/>
</kw>
<var name="${iteration}">28</var>
<status status="PASS" start="2026-04-08T00:58:17.728336" elapsed="0.002277"/>
</iter>
<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="PASS" start="2026-04-08T00:58:17.731134" elapsed="0.000203"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:17.730791" elapsed="0.000584"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:17.730776" elapsed="0.000625"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.731898" level="INFO">${j} = 29</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:17.731545" elapsed="0.000379"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.732669" level="INFO">${item} =         {
          "group-id": 29000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:17.732080" elapsed="0.000617"/>
</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="PASS" start="2026-04-08T00:58:17.732852" elapsed="0.000185"/>
</kw>
<var name="${iteration}">29</var>
<status status="PASS" start="2026-04-08T00:58:17.730746" elapsed="0.002327"/>
</iter>
<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="PASS" start="2026-04-08T00:58:17.733538" elapsed="0.000182"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:17.733269" elapsed="0.000489"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:17.733254" elapsed="0.000528"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.734285" level="INFO">${j} = 30</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:17.733924" elapsed="0.000463"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.735117" level="INFO">${item} =         {
          "group-id": 30000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:17.734548" elapsed="0.000596"/>
</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="PASS" start="2026-04-08T00:58:17.735324" elapsed="0.000181"/>
</kw>
<var name="${iteration}">30</var>
<status status="PASS" start="2026-04-08T00:58:17.733223" elapsed="0.002318"/>
</iter>
<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="PASS" start="2026-04-08T00:58:17.735949" elapsed="0.000185"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:17.735717" elapsed="0.000471"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:17.735702" elapsed="0.000510"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.736709" level="INFO">${j} = 31</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:17.736363" elapsed="0.000372"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.737495" level="INFO">${item} =         {
          "group-id": 31000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:17.736888" elapsed="0.000635"/>
</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="PASS" start="2026-04-08T00:58:17.737677" elapsed="0.000180"/>
</kw>
<var name="${iteration}">31</var>
<status status="PASS" start="2026-04-08T00:58:17.735673" elapsed="0.002221"/>
</iter>
<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="PASS" start="2026-04-08T00:58:17.738321" elapsed="0.000182"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:17.738071" elapsed="0.000469"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:17.738056" elapsed="0.000509"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.739057" level="INFO">${j} = 32</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:17.738708" elapsed="0.000375"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.739852" level="INFO">${item} =         {
          "group-id": 32000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:17.739254" elapsed="0.000625"/>
</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="PASS" start="2026-04-08T00:58:17.740071" elapsed="0.000218"/>
</kw>
<var name="${iteration}">32</var>
<status status="PASS" start="2026-04-08T00:58:17.738026" elapsed="0.002301"/>
</iter>
<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="PASS" start="2026-04-08T00:58:17.740742" elapsed="0.000181"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:17.740505" elapsed="0.000456"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:17.740490" elapsed="0.000495"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.741526" level="INFO">${j} = 33</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:17.741127" elapsed="0.000425"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.742294" level="INFO">${item} =         {
          "group-id": 33000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:17.741708" elapsed="0.000614"/>
</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="PASS" start="2026-04-08T00:58:17.742478" elapsed="0.000179"/>
</kw>
<var name="${iteration}">33</var>
<status status="PASS" start="2026-04-08T00:58:17.740460" elapsed="0.002234"/>
</iter>
<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="PASS" start="2026-04-08T00:58:17.743115" elapsed="0.000198"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:17.742873" elapsed="0.000478"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:17.742859" elapsed="0.000516"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.743988" level="INFO">${j} = 34</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:17.743641" elapsed="0.000373"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.744766" level="INFO">${item} =         {
          "group-id": 34000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:17.744189" elapsed="0.000605"/>
</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="PASS" start="2026-04-08T00:58:17.744948" elapsed="0.000179"/>
</kw>
<var name="${iteration}">34</var>
<status status="PASS" start="2026-04-08T00:58:17.742828" elapsed="0.002353"/>
</iter>
<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="PASS" start="2026-04-08T00:58:17.745621" elapsed="0.000181"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:17.745368" elapsed="0.000472"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:17.745350" elapsed="0.000515"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.746369" level="INFO">${j} = 35</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:17.746007" elapsed="0.000388"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.747122" level="INFO">${item} =         {
          "group-id": 35000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:17.746549" elapsed="0.000601"/>
</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="PASS" start="2026-04-08T00:58:17.747322" elapsed="0.000180"/>
</kw>
<var name="${iteration}">35</var>
<status status="PASS" start="2026-04-08T00:58:17.745319" elapsed="0.002261"/>
</iter>
<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="PASS" start="2026-04-08T00:58:17.748115" elapsed="0.000200"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:17.747869" elapsed="0.000484"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:17.747748" elapsed="0.000630"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.748867" level="INFO">${j} = 36</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:17.748521" elapsed="0.000373"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.749675" level="INFO">${item} =         {
          "group-id": 36000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:17.749048" elapsed="0.000656"/>
</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="PASS" start="2026-04-08T00:58:17.749861" elapsed="0.000182"/>
</kw>
<var name="${iteration}">36</var>
<status status="PASS" start="2026-04-08T00:58:17.747717" elapsed="0.002364"/>
</iter>
<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="PASS" start="2026-04-08T00:58:17.750512" elapsed="0.000181"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:17.750277" elapsed="0.000454"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:17.750263" elapsed="0.000492"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.751269" level="INFO">${j} = 37</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:17.750904" elapsed="0.000391"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.752068" level="INFO">${item} =         {
          "group-id": 37000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:17.751495" elapsed="0.000601"/>
</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="PASS" start="2026-04-08T00:58:17.752269" elapsed="0.000182"/>
</kw>
<var name="${iteration}">37</var>
<status status="PASS" start="2026-04-08T00:58:17.750231" elapsed="0.002257"/>
</iter>
<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="PASS" start="2026-04-08T00:58:17.752897" elapsed="0.000180"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:17.752663" elapsed="0.000452"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:17.752649" elapsed="0.000490"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.753658" level="INFO">${j} = 38</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:17.753299" elapsed="0.000385"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.754434" level="INFO">${item} =         {
          "group-id": 38000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:17.753837" elapsed="0.000625"/>
</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="PASS" start="2026-04-08T00:58:17.754618" elapsed="0.000179"/>
</kw>
<var name="${iteration}">38</var>
<status status="PASS" start="2026-04-08T00:58:17.752619" elapsed="0.002215"/>
</iter>
<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="PASS" start="2026-04-08T00:58:17.755259" elapsed="0.000181"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:17.755009" elapsed="0.000470"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:17.754995" elapsed="0.000508"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.755990" level="INFO">${j} = 39</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:17.755645" elapsed="0.000372"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.756843" level="INFO">${item} =         {
          "group-id": 39000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:17.756187" elapsed="0.000684"/>
</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="PASS" start="2026-04-08T00:58:17.757027" elapsed="0.000205"/>
</kw>
<var name="${iteration}">39</var>
<status status="PASS" start="2026-04-08T00:58:17.754965" elapsed="0.002305"/>
</iter>
<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="PASS" start="2026-04-08T00:58:17.757717" elapsed="0.000182"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:17.757447" elapsed="0.000495"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:17.757432" elapsed="0.000538"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.758514" level="INFO">${j} = 40</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:17.758139" elapsed="0.000401"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.759278" level="INFO">${item} =         {
          "group-id": 40000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:17.758693" elapsed="0.000613"/>
</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="PASS" start="2026-04-08T00:58:17.759459" elapsed="0.000179"/>
</kw>
<var name="${iteration}">40</var>
<status status="PASS" start="2026-04-08T00:58:17.757401" elapsed="0.002274"/>
</iter>
<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="PASS" start="2026-04-08T00:58:17.760090" elapsed="0.000198"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:17.759856" elapsed="0.000470"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:17.759841" elapsed="0.000508"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.760841" level="INFO">${j} = 41</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:17.760497" elapsed="0.000370"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.761640" level="INFO">${item} =         {
          "group-id": 41000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:17.761025" elapsed="0.000644"/>
</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="PASS" start="2026-04-08T00:58:17.761822" elapsed="0.000180"/>
</kw>
<var name="${iteration}">41</var>
<status status="PASS" start="2026-04-08T00:58:17.759805" elapsed="0.002233"/>
</iter>
<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="PASS" start="2026-04-08T00:58:17.762469" elapsed="0.000180"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:17.762229" elapsed="0.000489"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:17.762215" elapsed="0.000530"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.763253" level="INFO">${j} = 42</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:17.762889" elapsed="0.000391"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.764010" level="INFO">${item} =         {
          "group-id": 42000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:17.763434" elapsed="0.000604"/>
</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="PASS" start="2026-04-08T00:58:17.764209" elapsed="0.000181"/>
</kw>
<var name="${iteration}">42</var>
<status status="PASS" start="2026-04-08T00:58:17.762183" elapsed="0.002245"/>
</iter>
<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="PASS" start="2026-04-08T00:58:17.764947" elapsed="0.000184"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:17.764707" elapsed="0.000491"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:17.764589" elapsed="0.000636"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.765749" level="INFO">${j} = 43</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:17.765371" elapsed="0.000404"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.766522" level="INFO">${item} =         {
          "group-id": 43000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:17.765931" elapsed="0.000619"/>
</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="PASS" start="2026-04-08T00:58:17.766705" elapsed="0.000181"/>
</kw>
<var name="${iteration}">43</var>
<status status="PASS" start="2026-04-08T00:58:17.764559" elapsed="0.002363"/>
</iter>
<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="PASS" start="2026-04-08T00:58:17.767349" elapsed="0.000181"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:17.767098" elapsed="0.000470"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:17.767084" elapsed="0.000507"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.768076" level="INFO">${j} = 44</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:17.767732" elapsed="0.000369"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.768837" level="INFO">${item} =         {
          "group-id": 44000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:17.768271" elapsed="0.000593"/>
</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="PASS" start="2026-04-08T00:58:17.769024" elapsed="0.000194"/>
</kw>
<var name="${iteration}">44</var>
<status status="PASS" start="2026-04-08T00:58:17.767054" elapsed="0.002201"/>
</iter>
<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="PASS" start="2026-04-08T00:58:17.769676" elapsed="0.000181"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:17.769428" elapsed="0.000466"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:17.769414" elapsed="0.000503"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.770426" level="INFO">${j} = 45</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:17.770064" elapsed="0.000388"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.771192" level="INFO">${item} =         {
          "group-id": 45000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:17.770604" elapsed="0.000617"/>
</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="PASS" start="2026-04-08T00:58:17.771374" elapsed="0.000179"/>
</kw>
<var name="${iteration}">45</var>
<status status="PASS" start="2026-04-08T00:58:17.769384" elapsed="0.002206"/>
</iter>
<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="PASS" start="2026-04-08T00:58:17.771997" elapsed="0.000195"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:17.771764" elapsed="0.000466"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:17.771750" elapsed="0.000505"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.772758" level="INFO">${j} = 46</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:17.772403" elapsed="0.000385"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.773567" level="INFO">${item} =         {
          "group-id": 46000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:17.772941" elapsed="0.000654"/>
</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="PASS" start="2026-04-08T00:58:17.773748" elapsed="0.000183"/>
</kw>
<var name="${iteration}">46</var>
<status status="PASS" start="2026-04-08T00:58:17.771720" elapsed="0.002282"/>
</iter>
<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="PASS" start="2026-04-08T00:58:17.774434" elapsed="0.000180"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:17.774197" elapsed="0.000454"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:17.774181" elapsed="0.000494"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.775174" level="INFO">${j} = 47</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:17.774817" elapsed="0.000385"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.775932" level="INFO">${item} =         {
          "group-id": 47000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:17.775356" elapsed="0.000604"/>
</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="PASS" start="2026-04-08T00:58:17.776114" elapsed="0.000197"/>
</kw>
<var name="${iteration}">47</var>
<status status="PASS" start="2026-04-08T00:58:17.774135" elapsed="0.002214"/>
</iter>
<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="PASS" start="2026-04-08T00:58:17.776762" elapsed="0.000183"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:17.776526" elapsed="0.000459"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:17.776512" elapsed="0.000497"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.777512" level="INFO">${j} = 48</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:17.777152" elapsed="0.000401"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.778293" level="INFO">${item} =         {
          "group-id": 48000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:17.777708" elapsed="0.000612"/>
</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="PASS" start="2026-04-08T00:58:17.778473" elapsed="0.000178"/>
</kw>
<var name="${iteration}">48</var>
<status status="PASS" start="2026-04-08T00:58:17.776482" elapsed="0.002206"/>
</iter>
<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="PASS" start="2026-04-08T00:58:17.779105" elapsed="0.000200"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:17.778863" elapsed="0.000479"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:17.778849" elapsed="0.000521"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.779883" level="INFO">${j} = 49</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:17.779535" elapsed="0.000373"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.780654" level="INFO">${item} =         {
          "group-id": 49000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:17.780061" elapsed="0.000620"/>
</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="PASS" start="2026-04-08T00:58:17.780835" elapsed="0.000186"/>
</kw>
<var name="${iteration}">49</var>
<status status="PASS" start="2026-04-08T00:58:17.778820" elapsed="0.002238"/>
</iter>
<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="PASS" start="2026-04-08T00:58:17.781621" elapsed="0.000184"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:17.781356" elapsed="0.000487"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:17.781236" elapsed="0.000632"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.782375" level="INFO">${j} = 50</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:17.782011" elapsed="0.000389"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.783137" level="INFO">${item} =         {
          "group-id": 50000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:17.782555" elapsed="0.000625"/>
</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="PASS" start="2026-04-08T00:58:17.783338" elapsed="0.000181"/>
</kw>
<var name="${iteration}">50</var>
<status status="PASS" start="2026-04-08T00:58:17.781206" elapsed="0.002350"/>
</iter>
<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="PASS" start="2026-04-08T00:58:17.783966" elapsed="0.000180"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:17.783732" elapsed="0.000467"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:17.783718" elapsed="0.000506"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.784720" level="INFO">${j} = 51</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:17.784374" elapsed="0.000372"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.785484" level="INFO">${item} =         {
          "group-id": 51000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:17.784899" elapsed="0.000658"/>
</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="PASS" start="2026-04-08T00:58:17.785717" elapsed="0.000181"/>
</kw>
<var name="${iteration}">51</var>
<status status="PASS" start="2026-04-08T00:58:17.783688" elapsed="0.002246"/>
</iter>
<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="PASS" start="2026-04-08T00:58:17.786364" elapsed="0.000180"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:17.786111" elapsed="0.000470"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:17.786096" elapsed="0.000509"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.787099" level="INFO">${j} = 52</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:17.786746" elapsed="0.000378"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.787868" level="INFO">${item} =         {
          "group-id": 52000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:17.787292" elapsed="0.000604"/>
</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="PASS" start="2026-04-08T00:58:17.788049" elapsed="0.000195"/>
</kw>
<var name="${iteration}">52</var>
<status status="PASS" start="2026-04-08T00:58:17.786066" elapsed="0.002216"/>
</iter>
<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="PASS" start="2026-04-08T00:58:17.788691" elapsed="0.000180"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:17.788458" elapsed="0.000451"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:17.788444" elapsed="0.000489"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.789440" level="INFO">${j} = 53</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:17.789074" elapsed="0.000392"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.790241" level="INFO">${item} =         {
          "group-id": 53000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:17.789645" elapsed="0.000624"/>
</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="PASS" start="2026-04-08T00:58:17.790424" elapsed="0.000180"/>
</kw>
<var name="${iteration}">53</var>
<status status="PASS" start="2026-04-08T00:58:17.788413" elapsed="0.002228"/>
</iter>
<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="PASS" start="2026-04-08T00:58:17.791060" elapsed="0.000196"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:17.790826" elapsed="0.000469"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:17.790812" elapsed="0.000512"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.791817" level="INFO">${j} = 54</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:17.791472" elapsed="0.000371"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.792596" level="INFO">${item} =         {
          "group-id": 54000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:17.792002" elapsed="0.000622"/>
</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="PASS" start="2026-04-08T00:58:17.792777" elapsed="0.000184"/>
</kw>
<var name="${iteration}">54</var>
<status status="PASS" start="2026-04-08T00:58:17.790780" elapsed="0.002221"/>
</iter>
<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="PASS" start="2026-04-08T00:58:17.793436" elapsed="0.000195"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:17.793199" elapsed="0.000471"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:17.793178" elapsed="0.000515"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.794199" level="INFO">${j} = 55</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:17.793840" elapsed="0.000386"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.794951" level="INFO">${item} =         {
          "group-id": 55000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:17.794379" elapsed="0.000599"/>
</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="PASS" start="2026-04-08T00:58:17.795132" elapsed="0.000196"/>
</kw>
<var name="${iteration}">55</var>
<status status="PASS" start="2026-04-08T00:58:17.793132" elapsed="0.002233"/>
</iter>
<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="PASS" start="2026-04-08T00:58:17.795774" elapsed="0.000190"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:17.795540" elapsed="0.000462"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:17.795526" elapsed="0.000500"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.796528" level="INFO">${j} = 56</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:17.796182" elapsed="0.000404"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.797331" level="INFO">${item} =         {
          "group-id": 56000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:17.796744" elapsed="0.000615"/>
</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="PASS" start="2026-04-08T00:58:17.797513" elapsed="0.000249"/>
</kw>
<var name="${iteration}">56</var>
<status status="PASS" start="2026-04-08T00:58:17.795496" elapsed="0.002306"/>
</iter>
<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="PASS" start="2026-04-08T00:58:17.799059" elapsed="0.000202"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:17.798810" elapsed="0.000490"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:17.797966" elapsed="0.001358"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.799816" level="INFO">${j} = 57</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:17.799467" elapsed="0.000375"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.800588" level="INFO">${item} =         {
          "group-id": 57000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:17.799997" elapsed="0.000619"/>
</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="PASS" start="2026-04-08T00:58:17.800771" elapsed="0.000180"/>
</kw>
<var name="${iteration}">57</var>
<status status="PASS" start="2026-04-08T00:58:17.797935" elapsed="0.003053"/>
</iter>
<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="PASS" start="2026-04-08T00:58:17.801422" elapsed="0.000205"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:17.801179" elapsed="0.000487"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:17.801149" elapsed="0.000541"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.802197" level="INFO">${j} = 58</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:17.801834" elapsed="0.000390"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.802959" level="INFO">${item} =         {
          "group-id": 58000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:17.802386" elapsed="0.000601"/>
</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="PASS" start="2026-04-08T00:58:17.803142" elapsed="0.000198"/>
</kw>
<var name="${iteration}">58</var>
<status status="PASS" start="2026-04-08T00:58:17.801119" elapsed="0.002258"/>
</iter>
<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="PASS" start="2026-04-08T00:58:17.803788" elapsed="0.000179"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:17.803553" elapsed="0.000452"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:17.803539" elapsed="0.000490"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.804535" level="INFO">${j} = 59</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:17.804188" elapsed="0.000372"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.805340" level="INFO">${item} =         {
          "group-id": 59000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:17.804725" elapsed="0.000643"/>
</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="PASS" start="2026-04-08T00:58:17.805524" elapsed="0.000221"/>
</kw>
<var name="${iteration}">59</var>
<status status="PASS" start="2026-04-08T00:58:17.803508" elapsed="0.002274"/>
</iter>
<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="PASS" start="2026-04-08T00:58:17.806216" elapsed="0.000184"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:17.805958" elapsed="0.000480"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:17.805943" elapsed="0.000518"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.806961" level="INFO">${j} = 60</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:17.806606" elapsed="0.000381"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.807748" level="INFO">${item} =         {
          "group-id": 60000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:17.807142" elapsed="0.000634"/>
</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="PASS" start="2026-04-08T00:58:17.807933" elapsed="0.000181"/>
</kw>
<var name="${iteration}">60</var>
<status status="PASS" start="2026-04-08T00:58:17.805913" elapsed="0.002264"/>
</iter>
<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="PASS" start="2026-04-08T00:58:17.808655" elapsed="0.000183"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:17.808358" elapsed="0.000519"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:17.808344" elapsed="0.000557"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.809415" level="INFO">${j} = 61</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:17.809048" elapsed="0.000393"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.810211" level="INFO">${item} =         {
          "group-id": 61000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:17.809619" elapsed="0.000621"/>
</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="PASS" start="2026-04-08T00:58:17.810396" elapsed="0.000181"/>
</kw>
<var name="${iteration}">61</var>
<status status="PASS" start="2026-04-08T00:58:17.808313" elapsed="0.002301"/>
</iter>
<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="PASS" start="2026-04-08T00:58:17.811026" elapsed="0.000198"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:17.810790" elapsed="0.000473"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:17.810775" elapsed="0.000512"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.811777" level="INFO">${j} = 62</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:17.811431" elapsed="0.000373"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.812546" level="INFO">${item} =         {
          "group-id": 62000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:17.811958" elapsed="0.000617"/>
</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="PASS" start="2026-04-08T00:58:17.812731" elapsed="0.000179"/>
</kw>
<var name="${iteration}">62</var>
<status status="PASS" start="2026-04-08T00:58:17.810745" elapsed="0.002202"/>
</iter>
<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="PASS" start="2026-04-08T00:58:17.813379" elapsed="0.000181"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:17.813126" elapsed="0.000613"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:17.813111" elapsed="0.000660"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.814301" level="INFO">${j} = 63</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:17.813919" elapsed="0.000409"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.815057" level="INFO">${item} =         {
          "group-id": 63000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:17.814482" elapsed="0.000604"/>
</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="PASS" start="2026-04-08T00:58:17.815258" elapsed="0.000181"/>
</kw>
<var name="${iteration}">63</var>
<status status="PASS" start="2026-04-08T00:58:17.813081" elapsed="0.002395"/>
</iter>
<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="PASS" start="2026-04-08T00:58:17.873738" elapsed="0.000281"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:17.873278" elapsed="0.000800"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:17.815636" elapsed="0.058470"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.874707" level="INFO">${j} = 64</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:17.874285" elapsed="0.000450"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.875531" level="INFO">${item} =         {
          "group-id": 64000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:17.874896" elapsed="0.000664"/>
</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="PASS" start="2026-04-08T00:58:17.875719" elapsed="0.000187"/>
</kw>
<var name="${iteration}">64</var>
<status status="PASS" start="2026-04-08T00:58:17.815606" elapsed="0.060345"/>
</iter>
<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="PASS" start="2026-04-08T00:58:17.876438" elapsed="0.000185"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:17.876193" elapsed="0.000468"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:17.876176" elapsed="0.000509"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.877194" level="INFO">${j} = 65</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:17.876829" elapsed="0.000394"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.877998" level="INFO">${item} =         {
          "group-id": 65000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:17.877378" elapsed="0.000648"/>
</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="PASS" start="2026-04-08T00:58:17.878277" elapsed="0.000186"/>
</kw>
<var name="${iteration}">65</var>
<status status="PASS" start="2026-04-08T00:58:17.876124" elapsed="0.002376"/>
</iter>
<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="PASS" start="2026-04-08T00:58:17.878915" elapsed="0.000183"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:17.878678" elapsed="0.000457"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:17.878663" elapsed="0.000511"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.879669" level="INFO">${j} = 66</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:17.879321" elapsed="0.000374"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.880446" level="INFO">${item} =         {
          "group-id": 66000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:17.879851" elapsed="0.000624"/>
</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="PASS" start="2026-04-08T00:58:17.880632" elapsed="0.000183"/>
</kw>
<var name="${iteration}">66</var>
<status status="PASS" start="2026-04-08T00:58:17.878633" elapsed="0.002220"/>
</iter>
<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="PASS" start="2026-04-08T00:58:17.881303" elapsed="0.000189"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:17.881033" elapsed="0.000498"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:17.881018" elapsed="0.000538"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.882082" level="INFO">${j} = 67</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:17.881718" elapsed="0.000391"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.882863" level="INFO">${item} =         {
          "group-id": 67000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:17.882283" elapsed="0.000608"/>
</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="PASS" start="2026-04-08T00:58:17.883050" elapsed="0.000201"/>
</kw>
<var name="${iteration}">67</var>
<status status="PASS" start="2026-04-08T00:58:17.880987" elapsed="0.002303"/>
</iter>
<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="PASS" start="2026-04-08T00:58:17.883713" elapsed="0.000187"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:17.883473" elapsed="0.000467"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:17.883457" elapsed="0.000512"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.884483" level="INFO">${j} = 68</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:17.884113" elapsed="0.000396"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.885257" level="INFO">${item} =         {
          "group-id": 68000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:17.884664" elapsed="0.000622"/>
</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="PASS" start="2026-04-08T00:58:17.885444" elapsed="0.000183"/>
</kw>
<var name="${iteration}">68</var>
<status status="PASS" start="2026-04-08T00:58:17.883425" elapsed="0.002239"/>
</iter>
<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="PASS" start="2026-04-08T00:58:17.886116" elapsed="0.000204"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:17.885876" elapsed="0.000483"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:17.885860" elapsed="0.000523"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.886879" level="INFO">${j} = 69</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:17.886527" elapsed="0.000378"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.887758" level="INFO">${item} =         {
          "group-id": 69000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:17.887062" elapsed="0.000724"/>
</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="PASS" start="2026-04-08T00:58:17.887948" elapsed="0.000183"/>
</kw>
<var name="${iteration}">69</var>
<status status="PASS" start="2026-04-08T00:58:17.885829" elapsed="0.002356"/>
</iter>
<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="PASS" start="2026-04-08T00:58:17.888607" elapsed="0.000185"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:17.888367" elapsed="0.000464"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:17.888352" elapsed="0.000503"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.889370" level="INFO">${j} = 70</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:17.888999" elapsed="0.000397"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.890212" level="INFO">${item} =         {
          "group-id": 70000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:17.889588" elapsed="0.000654"/>
</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="PASS" start="2026-04-08T00:58:17.890401" elapsed="0.000184"/>
</kw>
<var name="${iteration}">70</var>
<status status="PASS" start="2026-04-08T00:58:17.888320" elapsed="0.002303"/>
</iter>
<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="PASS" start="2026-04-08T00:58:17.891046" elapsed="0.000199"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:17.890803" elapsed="0.000481"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:17.890788" elapsed="0.000522"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.891808" level="INFO">${j} = 71</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:17.891454" elapsed="0.000380"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.892588" level="INFO">${item} =         {
          "group-id": 71000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:17.891990" elapsed="0.000626"/>
</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="PASS" start="2026-04-08T00:58:17.892774" elapsed="0.000181"/>
</kw>
<var name="${iteration}">71</var>
<status status="PASS" start="2026-04-08T00:58:17.890757" elapsed="0.002237"/>
</iter>
<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="PASS" start="2026-04-08T00:58:17.893456" elapsed="0.000182"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:17.893215" elapsed="0.000461"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:17.893198" elapsed="0.000504"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.894259" level="INFO">${j} = 72</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:17.893886" elapsed="0.000399"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.895006" level="INFO">${item} =         {
          "group-id": 72000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:17.894439" elapsed="0.000595"/>
</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="PASS" start="2026-04-08T00:58:17.895203" elapsed="0.000189"/>
</kw>
<var name="${iteration}">72</var>
<status status="PASS" start="2026-04-08T00:58:17.893127" elapsed="0.002311"/>
</iter>
<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="PASS" start="2026-04-08T00:58:17.895851" elapsed="0.000180"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:17.895617" elapsed="0.000451"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:17.895602" elapsed="0.000490"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.896593" level="INFO">${j} = 73</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:17.896248" elapsed="0.000371"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.897360" level="INFO">${item} =         {
          "group-id": 73000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:17.896771" elapsed="0.000617"/>
</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="PASS" start="2026-04-08T00:58:17.897541" elapsed="0.000180"/>
</kw>
<var name="${iteration}">73</var>
<status status="PASS" start="2026-04-08T00:58:17.895572" elapsed="0.002258"/>
</iter>
<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="PASS" start="2026-04-08T00:58:17.898269" elapsed="0.000184"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:17.898015" elapsed="0.000475"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:17.898000" elapsed="0.000515"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.899004" level="INFO">${j} = 74</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:17.898657" elapsed="0.000373"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.899767" level="INFO">${item} =         {
          "group-id": 74000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:17.899198" elapsed="0.000597"/>
</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="PASS" start="2026-04-08T00:58:17.899952" elapsed="0.000181"/>
</kw>
<var name="${iteration}">74</var>
<status status="PASS" start="2026-04-08T00:58:17.897969" elapsed="0.002216"/>
</iter>
<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="PASS" start="2026-04-08T00:58:17.900598" elapsed="0.000180"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:17.900364" elapsed="0.000486"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:17.900349" elapsed="0.000528"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.901391" level="INFO">${j} = 75</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:17.901023" elapsed="0.000394"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.902194" level="INFO">${item} =         {
          "group-id": 75000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:17.901573" elapsed="0.000651"/>
</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="PASS" start="2026-04-08T00:58:17.902382" elapsed="0.000183"/>
</kw>
<var name="${iteration}">75</var>
<status status="PASS" start="2026-04-08T00:58:17.900318" elapsed="0.002285"/>
</iter>
<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="PASS" start="2026-04-08T00:58:17.903019" elapsed="0.000197"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:17.902779" elapsed="0.000475"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:17.902764" elapsed="0.000514"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.903897" level="INFO">${j} = 76</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:17.903422" elapsed="0.000501"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.904677" level="INFO">${item} =         {
          "group-id": 76000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:17.904082" elapsed="0.000623"/>
</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="PASS" start="2026-04-08T00:58:17.904863" elapsed="0.000181"/>
</kw>
<var name="${iteration}">76</var>
<status status="PASS" start="2026-04-08T00:58:17.902734" elapsed="0.002347"/>
</iter>
<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="PASS" start="2026-04-08T00:58:17.905517" elapsed="0.000183"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:17.905282" elapsed="0.000457"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:17.905267" elapsed="0.000509"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.906285" level="INFO">${j} = 77</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:17.905920" elapsed="0.000391"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.907035" level="INFO">${item} =         {
          "group-id": 77000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:17.906467" elapsed="0.000596"/>
</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="PASS" start="2026-04-08T00:58:17.907234" elapsed="0.000180"/>
</kw>
<var name="${iteration}">77</var>
<status status="PASS" start="2026-04-08T00:58:17.905236" elapsed="0.002215"/>
</iter>
<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="PASS" start="2026-04-08T00:58:17.907862" elapsed="0.000179"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:17.907627" elapsed="0.000452"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:17.907613" elapsed="0.000490"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.908607" level="INFO">${j} = 78</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:17.908260" elapsed="0.000374"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.909370" level="INFO">${item} =         {
          "group-id": 78000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:17.908787" elapsed="0.000611"/>
</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="PASS" start="2026-04-08T00:58:17.909553" elapsed="0.000235"/>
</kw>
<var name="${iteration}">78</var>
<status status="PASS" start="2026-04-08T00:58:17.907582" elapsed="0.002255"/>
</iter>
<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="PASS" start="2026-04-08T00:58:17.910330" elapsed="0.000185"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:17.910068" elapsed="0.000486"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:17.910052" elapsed="0.000526"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.911066" level="INFO">${j} = 79</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:17.910720" elapsed="0.000371"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.911831" level="INFO">${item} =         {
          "group-id": 79000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:17.911262" elapsed="0.000597"/>
</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="PASS" start="2026-04-08T00:58:17.912013" elapsed="0.000195"/>
</kw>
<var name="${iteration}">79</var>
<status status="PASS" start="2026-04-08T00:58:17.910014" elapsed="0.002266"/>
</iter>
<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="PASS" start="2026-04-08T00:58:17.912698" elapsed="0.000182"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:17.912460" elapsed="0.000459"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:17.912445" elapsed="0.000498"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.913455" level="INFO">${j} = 80</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:17.913086" elapsed="0.000395"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.914240" level="INFO">${item} =         {
          "group-id": 80000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:17.913636" elapsed="0.000633"/>
</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="PASS" start="2026-04-08T00:58:17.914425" elapsed="0.000180"/>
</kw>
<var name="${iteration}">80</var>
<status status="PASS" start="2026-04-08T00:58:17.912414" elapsed="0.002228"/>
</iter>
<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="PASS" start="2026-04-08T00:58:17.915125" elapsed="0.000200"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:17.914885" elapsed="0.000480"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:17.914871" elapsed="0.000517"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.915876" level="INFO">${j} = 81</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:17.915531" elapsed="0.000371"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.916644" level="INFO">${item} =         {
          "group-id": 81000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:17.916061" elapsed="0.000611"/>
</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="PASS" start="2026-04-08T00:58:17.916825" elapsed="0.000180"/>
</kw>
<var name="${iteration}">81</var>
<status status="PASS" start="2026-04-08T00:58:17.914835" elapsed="0.002206"/>
</iter>
<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="PASS" start="2026-04-08T00:58:17.917474" elapsed="0.000182"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:17.917236" elapsed="0.000458"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:17.917221" elapsed="0.000497"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.918252" level="INFO">${j} = 82</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:17.917887" elapsed="0.000392"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.919093" level="INFO">${item} =         {
          "group-id": 82000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:17.918433" elapsed="0.000690"/>
</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="PASS" start="2026-04-08T00:58:17.919302" elapsed="0.000182"/>
</kw>
<var name="${iteration}">82</var>
<status status="PASS" start="2026-04-08T00:58:17.917188" elapsed="0.002333"/>
</iter>
<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="PASS" start="2026-04-08T00:58:17.919931" elapsed="0.000320"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:17.919697" elapsed="0.000593"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:17.919682" elapsed="0.000632"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.920807" level="INFO">${j} = 83</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:17.920458" elapsed="0.000375"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.921575" level="INFO">${item} =         {
          "group-id": 83000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:17.920988" elapsed="0.000615"/>
</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="PASS" start="2026-04-08T00:58:17.921758" elapsed="0.000196"/>
</kw>
<var name="${iteration}">83</var>
<status status="PASS" start="2026-04-08T00:58:17.919652" elapsed="0.002342"/>
</iter>
<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="PASS" start="2026-04-08T00:58:17.922426" elapsed="0.000183"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:17.922188" elapsed="0.000460"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:17.922172" elapsed="0.000500"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.923183" level="INFO">${j} = 84</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:17.922816" elapsed="0.000395"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.923938" level="INFO">${item} =         {
          "group-id": 84000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:17.923368" elapsed="0.000640"/>
</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="PASS" start="2026-04-08T00:58:17.924186" elapsed="0.000184"/>
</kw>
<var name="${iteration}">84</var>
<status status="PASS" start="2026-04-08T00:58:17.922127" elapsed="0.002281"/>
</iter>
<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="PASS" start="2026-04-08T00:58:17.924821" elapsed="0.000180"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:17.924584" elapsed="0.000455"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:17.924569" elapsed="0.000493"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.925569" level="INFO">${j} = 85</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:17.925222" elapsed="0.000372"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.926377" level="INFO">${item} =         {
          "group-id": 85000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:17.925748" elapsed="0.000658"/>
</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="PASS" start="2026-04-08T00:58:17.926563" elapsed="0.000181"/>
</kw>
<var name="${iteration}">85</var>
<status status="PASS" start="2026-04-08T00:58:17.924539" elapsed="0.002242"/>
</iter>
<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="PASS" start="2026-04-08T00:58:17.927206" elapsed="0.000183"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:17.926955" elapsed="0.000472"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:17.926941" elapsed="0.000510"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.927938" level="INFO">${j} = 86</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:17.927593" elapsed="0.000370"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.928703" level="INFO">${item} =         {
          "group-id": 86000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:17.928118" elapsed="0.000614"/>
</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="PASS" start="2026-04-08T00:58:17.928886" elapsed="0.000179"/>
</kw>
<var name="${iteration}">86</var>
<status status="PASS" start="2026-04-08T00:58:17.926911" elapsed="0.002263"/>
</iter>
<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="PASS" start="2026-04-08T00:58:17.929593" elapsed="0.000181"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:17.929359" elapsed="0.000468"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:17.929344" elapsed="0.000507"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.930357" level="INFO">${j} = 87</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:17.929995" elapsed="0.000387"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.931101" level="INFO">${item} =         {
          "group-id": 87000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:17.930535" elapsed="0.000594"/>
</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="PASS" start="2026-04-08T00:58:17.931299" elapsed="0.000180"/>
</kw>
<var name="${iteration}">87</var>
<status status="PASS" start="2026-04-08T00:58:17.929313" elapsed="0.002203"/>
</iter>
<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="PASS" start="2026-04-08T00:58:17.931922" elapsed="0.000183"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:17.931689" elapsed="0.000452"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:17.931675" elapsed="0.000506"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.932669" level="INFO">${j} = 88</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:17.932326" elapsed="0.000369"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.933437" level="INFO">${item} =         {
          "group-id": 88000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:17.932847" elapsed="0.000628"/>
</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="PASS" start="2026-04-08T00:58:17.933638" elapsed="0.000210"/>
</kw>
<var name="${iteration}">88</var>
<status status="PASS" start="2026-04-08T00:58:17.931646" elapsed="0.002242"/>
</iter>
<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="PASS" start="2026-04-08T00:58:17.934318" elapsed="0.000182"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:17.934065" elapsed="0.000472"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:17.934050" elapsed="0.000512"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.935052" level="INFO">${j} = 89</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:17.934706" elapsed="0.000405"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.935868" level="INFO">${item} =         {
          "group-id": 89000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:17.935286" elapsed="0.000610"/>
</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="PASS" start="2026-04-08T00:58:17.936052" elapsed="0.000196"/>
</kw>
<var name="${iteration}">89</var>
<status status="PASS" start="2026-04-08T00:58:17.934020" elapsed="0.002266"/>
</iter>
<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="PASS" start="2026-04-08T00:58:17.936812" elapsed="0.000185"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:17.936463" elapsed="0.000572"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:17.936449" elapsed="0.000611"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.937571" level="INFO">${j} = 90</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:17.937219" elapsed="0.000378"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.938369" level="INFO">${item} =         {
          "group-id": 90000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:17.937752" elapsed="0.000646"/>
</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="PASS" start="2026-04-08T00:58:17.938554" elapsed="0.000182"/>
</kw>
<var name="${iteration}">90</var>
<status status="PASS" start="2026-04-08T00:58:17.936419" elapsed="0.002353"/>
</iter>
<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="PASS" start="2026-04-08T00:58:17.939200" elapsed="0.000184"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:17.938951" elapsed="0.000471"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:17.938936" elapsed="0.000510"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.939934" level="INFO">${j} = 91</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:17.939588" elapsed="0.000372"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.940700" level="INFO">${item} =         {
          "group-id": 91000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:17.940113" elapsed="0.000616"/>
</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="PASS" start="2026-04-08T00:58:17.940883" elapsed="0.000184"/>
</kw>
<var name="${iteration}">91</var>
<status status="PASS" start="2026-04-08T00:58:17.938907" elapsed="0.002197"/>
</iter>
<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="PASS" start="2026-04-08T00:58:17.941531" elapsed="0.000180"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:17.941297" elapsed="0.000452"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:17.941283" elapsed="0.000490"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.942344" level="INFO">${j} = 92</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:17.941967" elapsed="0.000412"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.943104" level="INFO">${item} =         {
          "group-id": 92000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:17.942536" elapsed="0.000596"/>
</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="PASS" start="2026-04-08T00:58:17.943305" elapsed="0.000181"/>
</kw>
<var name="${iteration}">92</var>
<status status="PASS" start="2026-04-08T00:58:17.941253" elapsed="0.002269"/>
</iter>
<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="PASS" start="2026-04-08T00:58:17.943933" elapsed="0.000180"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:17.943698" elapsed="0.000453"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:17.943684" elapsed="0.000508"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.944684" level="INFO">${j} = 93</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:17.944337" elapsed="0.000373"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.945447" level="INFO">${item} =         {
          "group-id": 93000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:17.944863" elapsed="0.000612"/>
</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="PASS" start="2026-04-08T00:58:17.945630" elapsed="0.000180"/>
</kw>
<var name="${iteration}">93</var>
<status status="PASS" start="2026-04-08T00:58:17.943655" elapsed="0.002215"/>
</iter>
<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="PASS" start="2026-04-08T00:58:17.946365" elapsed="0.000186"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:17.946069" elapsed="0.000521"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:17.946049" elapsed="0.000565"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.947111" level="INFO">${j} = 94</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:17.946758" elapsed="0.000379"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.947925" level="INFO">${item} =         {
          "group-id": 94000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:17.947311" elapsed="0.000650"/>
</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="PASS" start="2026-04-08T00:58:17.948119" elapsed="0.000197"/>
</kw>
<var name="${iteration}">94</var>
<status status="PASS" start="2026-04-08T00:58:17.946013" elapsed="0.002340"/>
</iter>
<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="PASS" start="2026-04-08T00:58:17.948768" elapsed="0.000181"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:17.948532" elapsed="0.000454"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:17.948518" elapsed="0.000493"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.949518" level="INFO">${j} = 95</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:17.949153" elapsed="0.000391"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.950311" level="INFO">${item} =         {
          "group-id": 95000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:17.949698" elapsed="0.000640"/>
</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="PASS" start="2026-04-08T00:58:17.950494" elapsed="0.000179"/>
</kw>
<var name="${iteration}">95</var>
<status status="PASS" start="2026-04-08T00:58:17.948487" elapsed="0.002222"/>
</iter>
<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="PASS" start="2026-04-08T00:58:17.951121" elapsed="0.000198"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:17.950886" elapsed="0.000471"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:17.950871" elapsed="0.000511"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.951870" level="INFO">${j} = 96</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:17.951526" elapsed="0.000371"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.952639" level="INFO">${item} =         {
          "group-id": 96000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:17.952051" elapsed="0.000616"/>
</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="PASS" start="2026-04-08T00:58:17.952821" elapsed="0.000179"/>
</kw>
<var name="${iteration}">96</var>
<status status="PASS" start="2026-04-08T00:58:17.950841" elapsed="0.002196"/>
</iter>
<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="PASS" start="2026-04-08T00:58:17.953585" elapsed="0.000183"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:17.953343" elapsed="0.000462"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:17.953218" elapsed="0.000625"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.954350" level="INFO">${j} = 97</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:17.953988" elapsed="0.000389"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.955098" level="INFO">${item} =         {
          "group-id": 97000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:17.954531" elapsed="0.000595"/>
</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="PASS" start="2026-04-08T00:58:17.955297" elapsed="0.000180"/>
</kw>
<var name="${iteration}">97</var>
<status status="PASS" start="2026-04-08T00:58:17.953186" elapsed="0.002328"/>
</iter>
<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="PASS" start="2026-04-08T00:58:17.955925" elapsed="0.000180"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:17.955691" elapsed="0.000451"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:17.955676" elapsed="0.000506"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.956673" level="INFO">${j} = 98</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:17.956328" elapsed="0.000372"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.957451" level="INFO">${item} =         {
          "group-id": 98000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:17.956856" elapsed="0.000623"/>
</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="PASS" start="2026-04-08T00:58:17.957670" elapsed="0.000217"/>
</kw>
<var name="${iteration}">98</var>
<status status="PASS" start="2026-04-08T00:58:17.955646" elapsed="0.002300"/>
</iter>
<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="PASS" start="2026-04-08T00:58:17.958397" elapsed="0.000181"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:17.958136" elapsed="0.000480"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:17.958121" elapsed="0.000518"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.959123" level="INFO">${j} = 99</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:17.958780" elapsed="0.000369"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.959891" level="INFO">${item} =         {
          "group-id": 99000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:17.959323" elapsed="0.000595"/>
</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="PASS" start="2026-04-08T00:58:17.960073" elapsed="0.000195"/>
</kw>
<var name="${iteration}">99</var>
<status status="PASS" start="2026-04-08T00:58:17.958090" elapsed="0.002216"/>
</iter>
<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="PASS" start="2026-04-08T00:58:17.960716" elapsed="0.000184"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:17.960482" elapsed="0.000468"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:17.960467" elapsed="0.000518"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.961562" level="INFO">${j} = 100</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:17.961144" elapsed="0.000445"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.962379" level="INFO">${item} =         {
          "group-id": 100000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
        ...</msg>
<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="PASS" start="2026-04-08T00:58:17.961748" elapsed="0.000660"/>
</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="PASS" start="2026-04-08T00:58:17.962568" elapsed="0.000182"/>
</kw>
<var name="${iteration}">100</var>
<status status="PASS" start="2026-04-08T00:58:17.960437" elapsed="0.002352"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="PASS" start="2026-04-08T00:58:17.662687" elapsed="0.300133"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.964199" level="INFO">${final_text} = {
  "flow-node-inventory:group": [
        {
          "group-id": 1000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
   ...</msg>
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:58:17.962981" elapsed="0.001248"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T00:58:17.964292" elapsed="0.000042"/>
</return>
<msg time="2026-04-08T00:58:17.964469" level="INFO">${data} = {
  "flow-node-inventory:group": [
        {
          "group-id": 1000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
   ...</msg>
<var>${data}</var>
<arg>folder=${folder}</arg>
<arg>name_prefix=post_</arg>
<arg>base_name=${base_name}</arg>
<arg>extension=${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>endline=${endline}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one 100 times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-08T00:58:17.607434" elapsed="0.357062"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:58:17.965917" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-1/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:58:17.965582" elapsed="0.000420">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-1/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-08T00:58:17.966102" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:58:17.965239" elapsed="0.000888"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:17.966465" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:17.966217" elapsed="0.000304"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.967016" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:58:17.966731" elapsed="0.000310"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:17.966545" elapsed="0.000531"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:17.966198" elapsed="0.000899"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.969980" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:58:17.967420" elapsed="0.002587"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-08T00:58:17.970060" elapsed="0.000031"/>
</return>
<msg time="2026-04-08T00:58:17.970237" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:58:17.964870" elapsed="0.005392"/>
</kw>
<kw name="Post_To_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.971810" level="INFO">/rests/data/opendaylight-inventory:nodes/node=openflow%3A1</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:17.971556" elapsed="0.000300"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.972277" level="INFO">{
  "flow-node-inventory:group": [
        {
          "group-id": 1000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-1",
          "group-type": "group-select"
        },
        {
          "group-id": 2000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-2",
          "group-type": "group-select"
        },
        {
          "group-id": 3000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-3",
          "group-type": "group-select"
        },
        {
          "group-id": 4000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-4",
          "group-type": "group-select"
        },
        {
          "group-id": 5000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-5",
          "group-type": "group-select"
        },
        {
          "group-id": 6000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-6",
          "group-type": "group-select"
        },
        {
          "group-id": 7000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-7",
          "group-type": "group-select"
        },
        {
          "group-id": 8000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-8",
          "group-type": "group-select"
        },
        {
          "group-id": 9000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-9",
          "group-type": "group-select"
        },
        {
          "group-id": 10000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-10",
          "group-type": "group-select"
        },
        {
          "group-id": 11000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-11",
          "group-type": "group-select"
        },
        {
          "group-id": 12000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-12",
          "group-type": "group-select"
        },
        {
          "group-id": 13000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-13",
          "group-type": "group-select"
        },
        {
          "group-id": 14000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-14",
          "group-type": "group-select"
        },
        {
          "group-id": 15000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-15",
          "group-type": "group-select"
        },
        {
          "group-id": 16000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-16",
          "group-type": "group-select"
        },
        {
          "group-id": 17000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-17",
          "group-type": "group-select"
        },
        {
          "group-id": 18000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-18",
          "group-type": "group-select"
        },
        {
          "group-id": 19000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-19",
          "group-type": "group-select"
        },
        {
          "group-id": 20000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-20",
          "group-type": "group-select"
        },
        {
          "group-id": 21000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-21",
          "group-type": "group-select"
        },
        {
          "group-id": 22000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-22",
          "group-type": "group-select"
        },
        {
          "group-id": 23000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-23",
          "group-type": "group-select"
        },
        {
          "group-id": 24000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-24",
          "group-type": "group-select"
        },
        {
          "group-id": 25000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-25",
          "group-type": "group-select"
        },
        {
          "group-id": 26000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-26",
          "group-type": "group-select"
        },
        {
          "group-id": 27000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-27",
          "group-type": "group-select"
        },
        {
          "group-id": 28000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-28",
          "group-type": "group-select"
        },
        {
          "group-id": 29000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-29",
          "group-type": "group-select"
        },
        {
          "group-id": 30000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-30",
          "group-type": "group-select"
        },
        {
          "group-id": 31000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-31",
          "group-type": "group-select"
        },
        {
          "group-id": 32000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-32",
          "group-type": "group-select"
        },
        {
          "group-id": 33000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-33",
          "group-type": "group-select"
        },
        {
          "group-id": 34000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-34",
          "group-type": "group-select"
        },
        {
          "group-id": 35000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-35",
          "group-type": "group-select"
        },
        {
          "group-id": 36000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-36",
          "group-type": "group-select"
        },
        {
          "group-id": 37000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-37",
          "group-type": "group-select"
        },
        {
          "group-id": 38000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-38",
          "group-type": "group-select"
        },
        {
          "group-id": 39000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-39",
          "group-type": "group-select"
        },
        {
          "group-id": 40000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-40",
          "group-type": "group-select"
        },
        {
          "group-id": 41000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-41",
          "group-type": "group-select"
        },
        {
          "group-id": 42000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-42",
          "group-type": "group-select"
        },
        {
          "group-id": 43000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-43",
          "group-type": "group-select"
        },
        {
          "group-id": 44000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-44",
          "group-type": "group-select"
        },
        {
          "group-id": 45000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-45",
          "group-type": "group-select"
        },
        {
          "group-id": 46000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-46",
          "group-type": "group-select"
        },
        {
          "group-id": 47000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-47",
          "group-type": "group-select"
        },
        {
          "group-id": 48000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-48",
          "group-type": "group-select"
        },
        {
          "group-id": 49000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-49",
          "group-type": "group-select"
        },
        {
          "group-id": 50000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-50",
          "group-type": "group-select"
        },
        {
          "group-id": 51000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-51",
          "group-type": "group-select"
        },
        {
          "group-id": 52000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-52",
          "group-type": "group-select"
        },
        {
          "group-id": 53000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-53",
          "group-type": "group-select"
        },
        {
          "group-id": 54000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-54",
          "group-type": "group-select"
        },
        {
          "group-id": 55000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-55",
          "group-type": "group-select"
        },
        {
          "group-id": 56000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-56",
          "group-type": "group-select"
        },
        {
          "group-id": 57000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-57",
          "group-type": "group-select"
        },
        {
          "group-id": 58000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-58",
          "group-type": "group-select"
        },
        {
          "group-id": 59000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-59",
          "group-type": "group-select"
        },
        {
          "group-id": 60000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-60",
          "group-type": "group-select"
        },
        {
          "group-id": 61000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-61",
          "group-type": "group-select"
        },
        {
          "group-id": 62000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-62",
          "group-type": "group-select"
        },
        {
          "group-id": 63000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-63",
          "group-type": "group-select"
        },
        {
          "group-id": 64000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-64",
          "group-type": "group-select"
        },
        {
          "group-id": 65000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-65",
          "group-type": "group-select"
        },
        {
          "group-id": 66000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-66",
          "group-type": "group-select"
        },
        {
          "group-id": 67000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-67",
          "group-type": "group-select"
        },
        {
          "group-id": 68000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-68",
          "group-type": "group-select"
        },
        {
          "group-id": 69000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-69",
          "group-type": "group-select"
        },
        {
          "group-id": 70000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-70",
          "group-type": "group-select"
        },
        {
          "group-id": 71000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-71",
          "group-type": "group-select"
        },
        {
          "group-id": 72000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-72",
          "group-type": "group-select"
        },
        {
          "group-id": 73000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-73",
          "group-type": "group-select"
        },
        {
          "group-id": 74000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-74",
          "group-type": "group-select"
        },
        {
          "group-id": 75000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-75",
          "group-type": "group-select"
        },
        {
          "group-id": 76000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-76",
          "group-type": "group-select"
        },
        {
          "group-id": 77000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-77",
          "group-type": "group-select"
        },
        {
          "group-id": 78000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-78",
          "group-type": "group-select"
        },
        {
          "group-id": 79000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-79",
          "group-type": "group-select"
        },
        {
          "group-id": 80000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-80",
          "group-type": "group-select"
        },
        {
          "group-id": 81000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-81",
          "group-type": "group-select"
        },
        {
          "group-id": 82000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-82",
          "group-type": "group-select"
        },
        {
          "group-id": 83000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-83",
          "group-type": "group-select"
        },
        {
          "group-id": 84000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-84",
          "group-type": "group-select"
        },
        {
          "group-id": 85000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-85",
          "group-type": "group-select"
        },
        {
          "group-id": 86000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-86",
          "group-type": "group-select"
        },
        {
          "group-id": 87000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-87",
          "group-type": "group-select"
        },
        {
          "group-id": 88000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-88",
          "group-type": "group-select"
        },
        {
          "group-id": 89000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-89",
          "group-type": "group-select"
        },
        {
          "group-id": 90000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-90",
          "group-type": "group-select"
        },
        {
          "group-id": 91000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-91",
          "group-type": "group-select"
        },
        {
          "group-id": 92000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-92",
          "group-type": "group-select"
        },
        {
          "group-id": 93000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-93",
          "group-type": "group-select"
        },
        {
          "group-id": 94000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-94",
          "group-type": "group-select"
        },
        {
          "group-id": 95000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-95",
          "group-type": "group-select"
        },
        {
          "group-id": 96000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-96",
          "group-type": "group-select"
        },
        {
          "group-id": 97000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-97",
          "group-type": "group-select"
        },
        {
          "group-id": 98000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-98",
          "group-type": "group-select"
        },
        {
          "group-id": 99000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-99",
          "group-type": "group-select"
        },
        {
          "group-id": 100000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-100",
          "group-type": "group-select"
        }
  ]
}</msg>
<arg>${data}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:17.972011" elapsed="0.000760"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.973216" level="INFO">{'Content-Type': 'application/json'}</msg>
<arg>${content_type}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:17.972929" elapsed="0.000333"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.973654" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:17.973416" elapsed="0.000280"/>
</kw>
<kw name="Join_Two_Headers" owner="TemplatedRequests">
<kw name="Copy Dictionary" owner="Collections">
<msg time="2026-04-08T00:58:17.974567" level="INFO">${accumulator} = {'Content-Type': 'application/json'}</msg>
<var>${accumulator}</var>
<arg>${first}</arg>
<doc>Returns a copy of the given dictionary.</doc>
<status status="PASS" start="2026-04-08T00:58:17.974362" elapsed="0.000241"/>
</kw>
<kw name="Get Dictionary Items" owner="Collections">
<msg time="2026-04-08T00:58:17.974937" level="INFO">${items_to_add} = []</msg>
<var>${items_to_add}</var>
<arg>${second}</arg>
<doc>Returns items of the given ``dictionary`` as a list.</doc>
<status status="PASS" start="2026-04-08T00:58:17.974766" elapsed="0.000196"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${accumulator}</arg>
<arg>@{items_to_add}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:58:17.975120" elapsed="0.000210"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:17.975729" level="INFO">{'Content-Type': 'application/json'}</msg>
<arg>${accumulator}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:17.975486" elapsed="0.000286"/>
</kw>
<return>
<value>${accumulator}</value>
<status status="PASS" start="2026-04-08T00:58:17.975814" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:58:17.975966" level="INFO">${headers} = {'Content-Type': 'application/json'}</msg>
<var>${headers}</var>
<arg>first=${content_type}</arg>
<arg>second=${accept}</arg>
<doc>Take two dicts, join them, return result. Second argument values take precedence.</doc>
<status status="PASS" start="2026-04-08T00:58:17.973932" elapsed="0.002061"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="POST On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:58:18.055632" level="INFO">POST Request : url=http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Content-Length': '52323', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body={
  "flow-node-inventory:group": [
        {
          "group-id": 1000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-1",
          "group-type": "group-select"
        },
        {
          "group-id": 2000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-2",
          "group-type": "group-select"
        },
        {
          "group-id": 3000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-3",
          "group-type": "group-select"
        },
        {
          "group-id": 4000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-4",
          "group-type": "group-select"
        },
        {
          "group-id": 5000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-5",
          "group-type": "group-select"
        },
        {
          "group-id": 6000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-6",
          "group-type": "group-select"
        },
        {
          "group-id": 7000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-7",
          "group-type": "group-select"
        },
        {
          "group-id": 8000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-8",
          "group-type": "group-select"
        },
        {
          "group-id": 9000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-9",
          "group-type": "group-select"
        },
        {
          "group-id": 10000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-10",
          "group-type": "group-select"
        },
        {
          "group-id": 11000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-11",
          "group-type": "group-select"
        },
        {
          "group-id": 12000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-12",
          "group-type": "group-select"
        },
        {
          "group-id": 13000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-13",
          "group-type": "group-select"
        },
        {
          "group-id": 14000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-14",
          "group-type": "group-select"
        },
        {
          "group-id": 15000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-15",
          "group-type": "group-select"
        },
        {
          "group-id": 16000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-16",
          "group-type": "group-select"
        },
        {
          "group-id": 17000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-17",
          "group-type": "group-select"
        },
        {
          "group-id": 18000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-18",
          "group-type": "group-select"
        },
        {
          "group-id": 19000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-19",
          "group-type": "group-select"
        },
        {
          "group-id": 20000,
       ... (set the log level to DEBUG or TRACE to see the full content) 
 </msg>
<msg time="2026-04-08T00:58:18.056042" level="INFO">POST Response : url=http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 
 status=201, reason=Created 
 headers={'Set-Cookie': 'JSESSIONID=node01s3bfo0y24i1es90l47mavglv0.node0; Path=/rests; HttpOnly, rememberMe=deleteMe; Path=/rests; Max-Age=0; Expires=Tue, 07-Apr-2026 00:58:17 GMT; SameSite=lax', 'Expires': 'Thu, 01 Jan 1970 00:00:00 GMT', 'Location': 'http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:group=5000', 'Content-Length': '0'} 
 body=None 
 </msg>
<msg time="2026-04-08T00:58:18.056514" level="INFO">${response} = &lt;Response [201]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:58:17.978192" elapsed="0.078388"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:17.976068" elapsed="0.080631"/>
</branch>
<branch type="ELSE">
<kw name="POST On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:18.057284" elapsed="0.000058"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:18.056767" elapsed="0.000682"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:17.976050" elapsed="0.081448"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.065604" level="INFO"/>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:18.060009" elapsed="0.005693"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:18.059491" elapsed="0.006290"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.059446" elapsed="0.006392"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.069045" level="INFO">201</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:18.066545" elapsed="0.002546"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:18.065962" elapsed="0.003164"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.065926" elapsed="0.003224"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.069746" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:18.069348" elapsed="0.000425"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:18.070102" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:18.069843" elapsed="0.000331"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.070664" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:58:18.070366" elapsed="0.000324"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:18.070199" elapsed="0.000527"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.069825" elapsed="0.000922"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.071280" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:18.070906" elapsed="0.000400"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:18.071610" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:18.071375" elapsed="0.000291"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.072139" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:58:18.071850" elapsed="0.000329"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:18.071689" elapsed="0.000527"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.071358" elapsed="0.000879"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:58:18.072395" elapsed="0.000491"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:58:18.073362" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:18.073053" elapsed="0.000334"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:58:18.073544" elapsed="0.002237"/>
</kw>
<arg>${response}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:58:18.058429" elapsed="0.017416"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:58:18.076025" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:58:18.075917" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.075899" elapsed="0.000194"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:58:18.078765" level="INFO">${text_normalized} = </msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:58:18.076256" elapsed="0.002537"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:58:18.078841" elapsed="0.000034"/>
</return>
<msg time="2026-04-08T00:58:18.079001" level="INFO">${response_text} = </msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>data=${data}</arg>
<arg>content_type=${content_type}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>POST data to given URI, check status code and return response text.
${content_type} and ${accept} are mandatory Python objects with headers to use.
If ${normalize_json}, normalize text before returning.</doc>
<status status="PASS" start="2026-04-08T00:58:17.970599" elapsed="0.108428"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:58:18.079760" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:58:18.079920" level="INFO">${response_text} = </msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>extension=json</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>content_type=${HEADERS_YANG_JSON}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>endline=${\n}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve URI and data from folder, call Post_To_Uri, return response text.</doc>
<status status="PASS" start="2026-04-08T00:58:17.520834" elapsed="0.559111"/>
</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=response</arg>
<arg>mapping=${mapping}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:18.080312" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:18.080057" elapsed="0.000324"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.080039" elapsed="0.000366"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:58:18.080438" elapsed="0.000025"/>
</return>
<arg>folder=${VAR_DIR}/add-group-1</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<arg>iterations=${iter}</arg>
<doc>Add arguments sensible for JSON data, return Post_Templated response text.
Optionally, verification against response.json (no iteration) is called.
Only subset of JSON data is verified and returned if JMES path is specified in
file ${folder}/jmespath.expr.
Response status code must be one of values from ${explicit_status_codes} if specified or one of set
created from all positive HTTP status codes together with ${additional_allowed_status_codes}.</doc>
<status status="PASS" start="2026-04-08T00:58:17.518277" elapsed="0.562284"/>
</kw>
<kw name="Post_As_Json_Templated" owner="TemplatedRequests">
<kw name="Post_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.122810" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2.vanadium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:58:18.122436" elapsed="0.000403"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:58:18.123764" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-2.vanadium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:58:18.123407" elapsed="0.000438">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-2.vanadium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-08T00:58:18.123940" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:58:18.123036" elapsed="0.000929"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.124538" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:58:18.124131" elapsed="0.000435"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T00:58:18.124864" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-2/location.uri"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-2/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-08T00:58:18.125019" level="INFO">${template} = /rests/data/opendaylight-inventory:nodes/node=$NODE
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T00:58:18.124728" elapsed="0.000317"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.125460" level="INFO">/rests/data/opendaylight-inventory:nodes/node=$NODE
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:18.125216" elapsed="0.000288"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.126470" level="INFO">mapping: {'NODE': 'openflow:1'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:18.126212" elapsed="0.000302"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.126946" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-08T00:58:18.126676" elapsed="0.000299"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.127893" level="INFO">${value} = openflow:1</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-08T00:58:18.127354" elapsed="0.000565"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-08T00:58:18.129041" level="INFO">${encoded} = openflow%3A1</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-08T00:58:18.128574" elapsed="0.000508"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-08T00:58:18.129218" elapsed="0.000032"/>
</return>
<msg time="2026-04-08T00:58:18.129437" level="INFO">${encoded_value} = openflow%3A1</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-08T00:58:18.128108" elapsed="0.001356"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:58:18.129668" elapsed="0.000534"/>
</kw>
<var name="${key}">NODE</var>
<var name="${value}">openflow:1</var>
<status status="PASS" start="2026-04-08T00:58:18.127216" elapsed="0.003030"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-08T00:58:18.127027" elapsed="0.003256"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-08T00:58:18.130326" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:58:18.130483" level="INFO">${mapping_to_use} = {'NODE': 'openflow%3A1'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-08T00:58:18.125858" elapsed="0.004652"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:18.125571" elapsed="0.004971"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:18.130717" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:18.130566" elapsed="0.000206"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.125552" elapsed="0.005241"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.131483" level="INFO">${final_text} = /rests/data/opendaylight-inventory:nodes/node=openflow%3A1</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:18.130934" elapsed="0.000576"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T00:58:18.131558" 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-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2/${file_name}.</doc>
<status status="PASS" start="2026-04-08T00:58:18.121788" elapsed="0.009891"/>
</kw>
<msg time="2026-04-08T00:58:18.131733" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:58:18.109329" elapsed="0.022452"/>
</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-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:18.144105" 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-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:18.156179" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:18.168121" elapsed="0.000026"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:18.168331" elapsed="0.000021"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:18.168507" elapsed="0.000020"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:18.168866" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:18.168721" elapsed="0.000200"/>
</branch>
<status status="NOT RUN" start="2026-04-08T00:58:18.168707" elapsed="0.000237"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:18.169082" elapsed="0.000020"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:18.169262" elapsed="0.000052"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:18.169467" elapsed="0.000020"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-08T00:58:18.168679" elapsed="0.000841"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-08T00:58:18.168580" elapsed="0.000965"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:18.169690" elapsed="0.000020"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-08T00:58:18.169764" elapsed="0.000015"/>
</return>
<msg time="2026-04-08T00:58:18.169877" level="INFO">${uri} = /rests/data/opendaylight-inventory:nodes/node=openflow%3A1</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one 100 times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-08T00:58:18.105174" elapsed="0.064728"/>
</kw>
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:58:18.180741" elapsed="0.000339"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.194080" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2.vanadium/post_data.prolog.json</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:58:18.193711" elapsed="0.000397"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:58:18.194874" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-2.vanadium/post_data.prolog.json' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:58:18.194669" elapsed="0.000269">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-2.vanadium/post_data.prolog.json' does not exist.</status>
</kw>
<msg time="2026-04-08T00:58:18.195027" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:58:18.194331" elapsed="0.000720"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.195613" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2/post_data.prolog.json</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:58:18.195232" elapsed="0.000408"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T00:58:18.195934" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-2/post_data.prolog.json"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-2/post_data.prolog.json&lt;/a&gt;'.</msg>
<msg time="2026-04-08T00:58:18.196061" level="INFO">${template} = {
  "flow-node-inventory:group": [
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T00:58:18.195802" elapsed="0.000284"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.196500" level="INFO">{
  "flow-node-inventory:group": [
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:18.196257" elapsed="0.000287"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="NOT RUN" start="2026-04-08T00:58:18.196896" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:18.196610" elapsed="0.000343"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.197427" level="INFO">${mapping_to_use} = {'NODE': 'openflow:1'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:58:18.197123" elapsed="0.000331"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:18.196977" elapsed="0.000511"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.196592" elapsed="0.000917"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.198073" level="INFO">${final_text} = {
  "flow-node-inventory:group": [</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:18.197655" elapsed="0.000445"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T00:58:18.198148" elapsed="0.000050"/>
</return>
<msg time="2026-04-08T00:58:18.198332" level="INFO">${prolog} = {
  "flow-node-inventory:group": [</msg>
<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-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2/${file_name}.</doc>
<status status="PASS" start="2026-04-08T00:58:18.193086" elapsed="0.005271"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.211664" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2.vanadium/post_data.epilog.json</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:58:18.211291" elapsed="0.000401"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:58:18.212411" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-2.vanadium/post_data.epilog.json' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:58:18.212207" elapsed="0.000268">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-2.vanadium/post_data.epilog.json' does not exist.</status>
</kw>
<msg time="2026-04-08T00:58:18.212564" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:58:18.211853" elapsed="0.000736"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.213133" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2/post_data.epilog.json</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:58:18.212752" elapsed="0.000422"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T00:58:18.213467" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-2/post_data.epilog.json"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-2/post_data.epilog.json&lt;/a&gt;'.</msg>
<msg time="2026-04-08T00:58:18.213594" level="INFO">${template} =   ]
}
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T00:58:18.213337" elapsed="0.000282"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.214012" level="INFO">  ]
}
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:18.213773" elapsed="0.000281"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="NOT RUN" start="2026-04-08T00:58:18.214438" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:18.214120" elapsed="0.000375"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.214952" level="INFO">${mapping_to_use} = {'NODE': 'openflow:1'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:58:18.214665" elapsed="0.000312"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:18.214519" elapsed="0.000492"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.214102" elapsed="0.000930"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.215607" level="INFO">${final_text} =   ]
}</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:18.215192" elapsed="0.000441"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T00:58:18.215680" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:58:18.215828" level="INFO">${epilog} =   ]
}</msg>
<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-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2/${file_name}.</doc>
<status status="PASS" start="2026-04-08T00:58:18.210660" elapsed="0.005192"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.229071" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2.vanadium/data.item.json</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:58:18.228640" elapsed="0.000459"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:58:18.229815" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-2.vanadium/data.item.json' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:58:18.229614" elapsed="0.000263">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-2.vanadium/data.item.json' does not exist.</status>
</kw>
<msg time="2026-04-08T00:58:18.229968" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:58:18.229283" elapsed="0.000709"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.230565" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2/data.item.json</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:58:18.230170" elapsed="0.000423"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T00:58:18.230884" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-2/data.item.json"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-2/data.item.json&lt;/a&gt;'.</msg>
<msg time="2026-04-08T00:58:18.231063" level="INFO">${template} =     {
      "group-id": ${i},
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": ${i}000,
            "action": [
              {
               ...</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T00:58:18.230754" elapsed="0.000335"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.231507" level="INFO">    {
      "group-id": ${i},
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": ${i}000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": ${i}000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-${i}",
      "group-type": "group-ff"
    }
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:18.231265" elapsed="0.000288"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="NOT RUN" start="2026-04-08T00:58:18.231906" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:18.231620" elapsed="0.000342"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.232443" level="INFO">${mapping_to_use} = {'NODE': 'openflow:1'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:58:18.232139" elapsed="0.000330"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:18.231986" elapsed="0.000517"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.231601" elapsed="0.000923"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.233250" level="INFO">${final_text} =     {
      "group-id": ${i},
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": ${i}000,
            "action": [
              {
               ...</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:18.232670" elapsed="0.000608"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T00:58:18.233327" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:58:18.233477" level="INFO">${item_template} =     {
      "group-id": ${i},
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": ${i}000,
            "action": [
              {
               ...</msg>
<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-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2/${file_name}.</doc>
<status status="PASS" start="2026-04-08T00:58:18.228079" elapsed="0.005424"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.233904" level="INFO">${items} = []</msg>
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:58:18.233666" elapsed="0.000263"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.234509" level="INFO">${separator} = ,
</msg>
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:58:18.234094" elapsed="0.000441"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:18.235143" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:18.234910" elapsed="0.000306"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.234896" elapsed="0.000344"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.235731" level="INFO">${j} = 1</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:18.235383" elapsed="0.000373"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.236666" level="INFO">${item} =     {
      "group-id": 1,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 1000,
            "action": [
              {
                "orde...</msg>
<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="PASS" start="2026-04-08T00:58:18.235911" elapsed="0.000784"/>
</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="PASS" start="2026-04-08T00:58:18.236852" elapsed="0.000190"/>
</kw>
<var name="${iteration}">1</var>
<status status="PASS" start="2026-04-08T00:58:18.234865" elapsed="0.002214"/>
</iter>
<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="PASS" start="2026-04-08T00:58:18.237508" elapsed="0.000182"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:18.237272" elapsed="0.000455"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.237257" elapsed="0.000494"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.238260" level="INFO">${j} = 2</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:18.237895" elapsed="0.000390"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.239037" level="INFO">${item} =     {
      "group-id": 2,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 2000,
            "action": [
              {
                "orde...</msg>
<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="PASS" start="2026-04-08T00:58:18.238467" elapsed="0.000598"/>
</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="PASS" start="2026-04-08T00:58:18.239237" elapsed="0.000183"/>
</kw>
<var name="${iteration}">2</var>
<status status="PASS" start="2026-04-08T00:58:18.237226" elapsed="0.002232"/>
</iter>
<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="PASS" start="2026-04-08T00:58:18.239914" elapsed="0.000187"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:18.239632" elapsed="0.000507"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.239618" elapsed="0.000562"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.240674" level="INFO">${j} = 3</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:18.240329" elapsed="0.000371"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.241443" level="INFO">${item} =     {
      "group-id": 3,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 3000,
            "action": [
              {
                "orde...</msg>
<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="PASS" start="2026-04-08T00:58:18.240857" elapsed="0.000614"/>
</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="PASS" start="2026-04-08T00:58:18.241629" elapsed="0.000183"/>
</kw>
<var name="${iteration}">3</var>
<status status="PASS" start="2026-04-08T00:58:18.239588" elapsed="0.002261"/>
</iter>
<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="PASS" start="2026-04-08T00:58:18.242278" elapsed="0.000211"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:18.242025" elapsed="0.000503"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.242011" elapsed="0.000542"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.243042" level="INFO">${j} = 4</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:18.242697" elapsed="0.000371"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.243801" level="INFO">${item} =     {
      "group-id": 4,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 4000,
            "action": [
              {
                "orde...</msg>
<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="PASS" start="2026-04-08T00:58:18.243239" elapsed="0.000589"/>
</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="PASS" start="2026-04-08T00:58:18.243983" elapsed="0.000201"/>
</kw>
<var name="${iteration}">4</var>
<status status="PASS" start="2026-04-08T00:58:18.241980" elapsed="0.002242"/>
</iter>
<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="PASS" start="2026-04-08T00:58:18.244633" elapsed="0.000180"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:18.244397" elapsed="0.000453"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.244383" elapsed="0.000491"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.245442" level="INFO">${j} = 5</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:18.245068" elapsed="0.000400"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.246196" level="INFO">${item} =     {
      "group-id": 5,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 5000,
            "action": [
              {
                "orde...</msg>
<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="PASS" start="2026-04-08T00:58:18.245622" elapsed="0.000603"/>
</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="PASS" start="2026-04-08T00:58:18.246396" elapsed="0.000213"/>
</kw>
<var name="${iteration}">5</var>
<status status="PASS" start="2026-04-08T00:58:18.244353" elapsed="0.002294"/>
</iter>
<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="PASS" start="2026-04-08T00:58:18.247069" elapsed="0.000198"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:18.246825" elapsed="0.000480"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.246811" elapsed="0.000518"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.247816" level="INFO">${j} = 6</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:18.247471" elapsed="0.000370"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.248577" level="INFO">${item} =     {
      "group-id": 6,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 6000,
            "action": [
              {
                "orde...</msg>
<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="PASS" start="2026-04-08T00:58:18.247997" elapsed="0.000607"/>
</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="PASS" start="2026-04-08T00:58:18.248758" elapsed="0.000178"/>
</kw>
<var name="${iteration}">6</var>
<status status="PASS" start="2026-04-08T00:58:18.246781" elapsed="0.002191"/>
</iter>
<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="PASS" start="2026-04-08T00:58:18.249398" elapsed="0.000181"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:18.249145" elapsed="0.000471"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.249131" elapsed="0.000509"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.250132" level="INFO">${j} = 7</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:18.249784" elapsed="0.000392"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.250926" level="INFO">${item} =     {
      "group-id": 7,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 7000,
            "action": [
              {
                "orde...</msg>
<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="PASS" start="2026-04-08T00:58:18.250334" elapsed="0.000622"/>
</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="PASS" start="2026-04-08T00:58:18.251166" elapsed="0.000187"/>
</kw>
<var name="${iteration}">7</var>
<status status="PASS" start="2026-04-08T00:58:18.249102" elapsed="0.002290"/>
</iter>
<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="PASS" start="2026-04-08T00:58:18.251808" elapsed="0.000184"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:18.251570" elapsed="0.000461"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.251555" elapsed="0.000501"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.252567" level="INFO">${j} = 8</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:18.252216" elapsed="0.000377"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.254146" level="INFO">${item} =     {
      "group-id": 8,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 8000,
            "action": [
              {
                "orde...</msg>
<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="PASS" start="2026-04-08T00:58:18.252750" elapsed="0.001440"/>
</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="PASS" start="2026-04-08T00:58:18.254350" elapsed="0.000212"/>
</kw>
<var name="${iteration}">8</var>
<status status="PASS" start="2026-04-08T00:58:18.251525" elapsed="0.003075"/>
</iter>
<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="PASS" start="2026-04-08T00:58:18.255011" elapsed="0.000199"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:18.254775" elapsed="0.000474"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.254761" elapsed="0.000512"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.255773" level="INFO">${j} = 9</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:18.255416" elapsed="0.000383"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.256538" level="INFO">${item} =     {
      "group-id": 9,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 9000,
            "action": [
              {
                "orde...</msg>
<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="PASS" start="2026-04-08T00:58:18.255954" elapsed="0.000618"/>
</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="PASS" start="2026-04-08T00:58:18.256729" elapsed="0.000180"/>
</kw>
<var name="${iteration}">9</var>
<status status="PASS" start="2026-04-08T00:58:18.254731" elapsed="0.002216"/>
</iter>
<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="PASS" start="2026-04-08T00:58:18.257378" elapsed="0.000182"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:18.257123" elapsed="0.000474"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.257108" elapsed="0.000514"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.258116" level="INFO">${j} = 10</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:18.257765" elapsed="0.000377"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.258920" level="INFO">${item} =     {
      "group-id": 10,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 10000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:18.258315" elapsed="0.000633"/>
</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="PASS" start="2026-04-08T00:58:18.259105" elapsed="0.000197"/>
</kw>
<var name="${iteration}">10</var>
<status status="PASS" start="2026-04-08T00:58:18.257078" elapsed="0.002262"/>
</iter>
<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="PASS" start="2026-04-08T00:58:18.259751" elapsed="0.000180"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:18.259516" elapsed="0.000458"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.259500" elapsed="0.000498"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.260503" level="INFO">${j} = 11</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:18.260140" elapsed="0.000389"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.261267" level="INFO">${item} =     {
      "group-id": 11,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 11000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:18.260685" elapsed="0.000610"/>
</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="PASS" start="2026-04-08T00:58:18.261451" elapsed="0.000180"/>
</kw>
<var name="${iteration}">11</var>
<status status="PASS" start="2026-04-08T00:58:18.259471" elapsed="0.002196"/>
</iter>
<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="PASS" start="2026-04-08T00:58:18.262079" elapsed="0.000197"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:18.261844" elapsed="0.000470"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.261829" elapsed="0.000509"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.262857" level="INFO">${j} = 12</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:18.262501" elapsed="0.000383"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.263666" level="INFO">${item} =     {
      "group-id": 12,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 12000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:18.263075" elapsed="0.000619"/>
</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="PASS" start="2026-04-08T00:58:18.263851" elapsed="0.000181"/>
</kw>
<var name="${iteration}">12</var>
<status status="PASS" start="2026-04-08T00:58:18.261798" elapsed="0.002271"/>
</iter>
<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="PASS" start="2026-04-08T00:58:18.264505" elapsed="0.000182"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:18.264269" elapsed="0.000457"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.264254" elapsed="0.000496"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.265260" level="INFO">${j} = 13</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:18.264893" elapsed="0.000394"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.266012" level="INFO">${item} =     {
      "group-id": 13,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 13000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:18.265442" elapsed="0.000600"/>
</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="PASS" start="2026-04-08T00:58:18.266214" elapsed="0.000206"/>
</kw>
<var name="${iteration}">13</var>
<status status="PASS" start="2026-04-08T00:58:18.264223" elapsed="0.002236"/>
</iter>
<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="PASS" start="2026-04-08T00:58:18.266879" elapsed="0.000181"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:18.266642" elapsed="0.000456"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.266627" elapsed="0.000495"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.267626" level="INFO">${j} = 14</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:18.267280" elapsed="0.000372"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.268394" level="INFO">${item} =     {
      "group-id": 14,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 14000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:18.267808" elapsed="0.000614"/>
</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="PASS" start="2026-04-08T00:58:18.268578" elapsed="0.000182"/>
</kw>
<var name="${iteration}">14</var>
<status status="PASS" start="2026-04-08T00:58:18.266596" elapsed="0.002202"/>
</iter>
<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="PASS" start="2026-04-08T00:58:18.269230" elapsed="0.000183"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:18.268975" elapsed="0.000476"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.268960" elapsed="0.000515"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.269965" level="INFO">${j} = 15</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:18.269620" elapsed="0.000372"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.270996" level="INFO">${item} =     {
      "group-id": 15,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 15000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:18.270146" elapsed="0.000879"/>
</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="PASS" start="2026-04-08T00:58:18.271202" elapsed="0.000188"/>
</kw>
<var name="${iteration}">15</var>
<status status="PASS" start="2026-04-08T00:58:18.268930" elapsed="0.002499"/>
</iter>
<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="PASS" start="2026-04-08T00:58:18.271842" elapsed="0.000186"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:18.271606" elapsed="0.000460"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.271591" elapsed="0.000499"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.272599" level="INFO">${j} = 16</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:18.272250" elapsed="0.000376"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.273365" level="INFO">${item} =     {
      "group-id": 16,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 16000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:18.272780" elapsed="0.000614"/>
</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="PASS" start="2026-04-08T00:58:18.273550" elapsed="0.000180"/>
</kw>
<var name="${iteration}">16</var>
<status status="PASS" start="2026-04-08T00:58:18.271561" elapsed="0.002207"/>
</iter>
<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="PASS" start="2026-04-08T00:58:18.274200" elapsed="0.000183"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:18.273944" elapsed="0.000526"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.273929" elapsed="0.000570"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.275001" level="INFO">${j} = 17</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:18.274646" elapsed="0.000382"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.275776" level="INFO">${item} =     {
      "group-id": 17,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 17000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:18.275203" elapsed="0.000601"/>
</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="PASS" start="2026-04-08T00:58:18.275962" elapsed="0.000181"/>
</kw>
<var name="${iteration}">17</var>
<status status="PASS" start="2026-04-08T00:58:18.273899" elapsed="0.002298"/>
</iter>
<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="PASS" start="2026-04-08T00:58:18.276613" elapsed="0.000182"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:18.276377" elapsed="0.000457"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.276362" elapsed="0.000496"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.277374" level="INFO">${j} = 18</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:18.277001" elapsed="0.000398"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.278120" level="INFO">${item} =     {
      "group-id": 18,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 18000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:18.277556" elapsed="0.000591"/>
</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="PASS" start="2026-04-08T00:58:18.278323" elapsed="0.000209"/>
</kw>
<var name="${iteration}">18</var>
<status status="PASS" start="2026-04-08T00:58:18.276332" elapsed="0.002244"/>
</iter>
<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="PASS" start="2026-04-08T00:58:18.278989" elapsed="0.000197"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:18.278753" elapsed="0.000473"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.278738" elapsed="0.000512"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.279739" level="INFO">${j} = 19</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:18.279392" elapsed="0.000373"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.280498" level="INFO">${item} =     {
      "group-id": 19,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 19000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:18.279918" elapsed="0.000608"/>
</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="PASS" start="2026-04-08T00:58:18.280682" elapsed="0.000178"/>
</kw>
<var name="${iteration}">19</var>
<status status="PASS" start="2026-04-08T00:58:18.278708" elapsed="0.002189"/>
</iter>
<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="PASS" start="2026-04-08T00:58:18.281327" elapsed="0.000181"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:18.281076" elapsed="0.000470"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.281062" elapsed="0.000508"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.282061" level="INFO">${j} = 20</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:18.281712" elapsed="0.000375"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.282836" level="INFO">${item} =     {
      "group-id": 20,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 20000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:18.282256" elapsed="0.000608"/>
</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="PASS" start="2026-04-08T00:58:18.283017" elapsed="0.000272"/>
</kw>
<var name="${iteration}">20</var>
<status status="PASS" start="2026-04-08T00:58:18.281032" elapsed="0.002299"/>
</iter>
<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="PASS" start="2026-04-08T00:58:18.283753" elapsed="0.000181"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:18.283516" elapsed="0.000456"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.283502" elapsed="0.000493"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.284533" level="INFO">${j} = 21</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:18.284137" elapsed="0.000422"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.285300" level="INFO">${item} =     {
      "group-id": 21,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 21000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:18.284715" elapsed="0.000614"/>
</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="PASS" start="2026-04-08T00:58:18.285483" elapsed="0.000180"/>
</kw>
<var name="${iteration}">21</var>
<status status="PASS" start="2026-04-08T00:58:18.283464" elapsed="0.002279"/>
</iter>
<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="PASS" start="2026-04-08T00:58:18.286178" elapsed="0.000186"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:18.285922" elapsed="0.000482"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.285907" elapsed="0.000554"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.287090" level="INFO">${j} = 22</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:18.286620" elapsed="0.000497"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.287865" level="INFO">${item} =     {
      "group-id": 22,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 22000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:18.287294" elapsed="0.000600"/>
</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="PASS" start="2026-04-08T00:58:18.288050" elapsed="0.000197"/>
</kw>
<var name="${iteration}">22</var>
<status status="PASS" start="2026-04-08T00:58:18.285877" elapsed="0.002408"/>
</iter>
<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="PASS" start="2026-04-08T00:58:18.288740" elapsed="0.000184"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:18.288505" elapsed="0.000465"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.288490" elapsed="0.000503"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.289502" level="INFO">${j} = 23</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:18.289137" elapsed="0.000392"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.290267" level="INFO">${item} =     {
      "group-id": 23,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 23000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:18.289684" elapsed="0.000611"/>
</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="PASS" start="2026-04-08T00:58:18.290465" elapsed="0.000182"/>
</kw>
<var name="${iteration}">23</var>
<status status="PASS" start="2026-04-08T00:58:18.288458" elapsed="0.002227"/>
</iter>
<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="PASS" start="2026-04-08T00:58:18.291095" elapsed="0.000202"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:18.290860" elapsed="0.000475"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.290846" elapsed="0.000513"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.291849" level="INFO">${j} = 24</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:18.291502" elapsed="0.000373"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.292612" level="INFO">${item} =     {
      "group-id": 24,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 24000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:18.292029" elapsed="0.000612"/>
</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="PASS" start="2026-04-08T00:58:18.292795" elapsed="0.000180"/>
</kw>
<var name="${iteration}">24</var>
<status status="PASS" start="2026-04-08T00:58:18.290815" elapsed="0.002197"/>
</iter>
<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="PASS" start="2026-04-08T00:58:18.293439" elapsed="0.000297"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:18.293204" elapsed="0.000572"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.293189" elapsed="0.000611"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.294316" level="INFO">${j} = 25</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:18.293946" elapsed="0.000397"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.295093" level="INFO">${item} =     {
      "group-id": 25,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 25000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:18.294522" elapsed="0.000599"/>
</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="PASS" start="2026-04-08T00:58:18.295295" elapsed="0.000180"/>
</kw>
<var name="${iteration}">25</var>
<status status="PASS" start="2026-04-08T00:58:18.293143" elapsed="0.002369"/>
</iter>
<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="PASS" start="2026-04-08T00:58:18.295920" elapsed="0.000181"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:18.295687" elapsed="0.000451"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.295673" elapsed="0.000504"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.296669" level="INFO">${j} = 26</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:18.296323" elapsed="0.000372"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.297428" level="INFO">${item} =     {
      "group-id": 26,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 26000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:18.296848" elapsed="0.000641"/>
</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="PASS" start="2026-04-08T00:58:18.297649" elapsed="0.000183"/>
</kw>
<var name="${iteration}">26</var>
<status status="PASS" start="2026-04-08T00:58:18.295643" elapsed="0.002226"/>
</iter>
<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="PASS" start="2026-04-08T00:58:18.298303" elapsed="0.000199"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:18.298047" elapsed="0.000493"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.298032" elapsed="0.000536"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.299060" level="INFO">${j} = 27</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:18.298713" elapsed="0.000373"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.299822" level="INFO">${item} =     {
      "group-id": 27,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 27000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:18.299256" elapsed="0.000594"/>
</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="PASS" start="2026-04-08T00:58:18.300005" elapsed="0.000197"/>
</kw>
<var name="${iteration}">27</var>
<status status="PASS" start="2026-04-08T00:58:18.298002" elapsed="0.002238"/>
</iter>
<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="PASS" start="2026-04-08T00:58:18.300654" elapsed="0.000180"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:18.300418" elapsed="0.000454"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.300404" elapsed="0.000492"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.301408" level="INFO">${j} = 28</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:18.301045" elapsed="0.000389"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.302169" level="INFO">${item} =     {
      "group-id": 28,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 28000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:18.301589" elapsed="0.000610"/>
</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="PASS" start="2026-04-08T00:58:18.302356" elapsed="0.000224"/>
</kw>
<var name="${iteration}">28</var>
<status status="PASS" start="2026-04-08T00:58:18.300374" elapsed="0.002245"/>
</iter>
<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="PASS" start="2026-04-08T00:58:18.303040" elapsed="0.000322"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:18.302800" elapsed="0.000602"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.302785" elapsed="0.000641"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.303921" level="INFO">${j} = 29</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:18.303570" elapsed="0.000377"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.304691" level="INFO">${item} =     {
      "group-id": 29,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 29000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:18.304105" elapsed="0.000614"/>
</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="PASS" start="2026-04-08T00:58:18.304873" elapsed="0.000182"/>
</kw>
<var name="${iteration}">29</var>
<status status="PASS" start="2026-04-08T00:58:18.302753" elapsed="0.002340"/>
</iter>
<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="PASS" start="2026-04-08T00:58:18.305524" elapsed="0.000180"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:18.305285" elapsed="0.000457"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.305271" elapsed="0.000495"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.306272" level="INFO">${j} = 30</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:18.305908" elapsed="0.000391"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.307041" level="INFO">${item} =     {
      "group-id": 30,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 30000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:18.306453" elapsed="0.000616"/>
</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="PASS" start="2026-04-08T00:58:18.307239" elapsed="0.000183"/>
</kw>
<var name="${iteration}">30</var>
<status status="PASS" start="2026-04-08T00:58:18.305240" elapsed="0.002220"/>
</iter>
<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="PASS" start="2026-04-08T00:58:18.307871" elapsed="0.000178"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:18.307635" elapsed="0.000451"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.307621" elapsed="0.000488"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.308614" level="INFO">${j} = 31</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:18.308269" elapsed="0.000404"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.309418" level="INFO">${item} =     {
      "group-id": 31,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 31000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:18.308834" elapsed="0.000612"/>
</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="PASS" start="2026-04-08T00:58:18.309603" elapsed="0.000182"/>
</kw>
<var name="${iteration}">31</var>
<status status="PASS" start="2026-04-08T00:58:18.307591" elapsed="0.002232"/>
</iter>
<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="PASS" start="2026-04-08T00:58:18.310250" elapsed="0.000183"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:18.309999" elapsed="0.000495"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.309985" elapsed="0.000536"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.311011" level="INFO">${j} = 32</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:18.310664" elapsed="0.000373"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.311777" level="INFO">${item} =     {
      "group-id": 32,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 32000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:18.311206" elapsed="0.000599"/>
</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="PASS" start="2026-04-08T00:58:18.311959" elapsed="0.000179"/>
</kw>
<var name="${iteration}">32</var>
<status status="PASS" start="2026-04-08T00:58:18.309954" elapsed="0.002237"/>
</iter>
<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="PASS" start="2026-04-08T00:58:18.312602" elapsed="0.000178"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:18.312368" elapsed="0.000450"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.312353" elapsed="0.000490"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.313350" level="INFO">${j} = 33</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:18.312989" elapsed="0.000387"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.314087" level="INFO">${item} =     {
      "group-id": 33,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 33000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:18.313530" elapsed="0.000585"/>
</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="PASS" start="2026-04-08T00:58:18.314285" elapsed="0.000179"/>
</kw>
<var name="${iteration}">33</var>
<status status="PASS" start="2026-04-08T00:58:18.312324" elapsed="0.002189"/>
</iter>
<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="PASS" start="2026-04-08T00:58:18.314927" elapsed="0.000178"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:18.314693" elapsed="0.000449"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.314678" elapsed="0.000504"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.315669" level="INFO">${j} = 34</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:18.315327" elapsed="0.000367"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.316425" level="INFO">${item} =     {
      "group-id": 34,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 34000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:18.315848" elapsed="0.000605"/>
</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="PASS" start="2026-04-08T00:58:18.316607" elapsed="0.000178"/>
</kw>
<var name="${iteration}">34</var>
<status status="PASS" start="2026-04-08T00:58:18.314648" elapsed="0.002173"/>
</iter>
<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="PASS" start="2026-04-08T00:58:18.317243" elapsed="0.000181"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:18.316994" elapsed="0.000469"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.316980" elapsed="0.000508"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.317974" level="INFO">${j} = 35</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:18.317629" elapsed="0.000370"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.318784" level="INFO">${item} =     {
      "group-id": 35,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 35000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:18.318151" elapsed="0.000663"/>
</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="PASS" start="2026-04-08T00:58:18.318971" elapsed="0.000179"/>
</kw>
<var name="${iteration}">35</var>
<status status="PASS" start="2026-04-08T00:58:18.316950" elapsed="0.002258"/>
</iter>
<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="PASS" start="2026-04-08T00:58:18.319773" elapsed="0.000188"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:18.319386" elapsed="0.000616"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.319372" elapsed="0.000655"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.320536" level="INFO">${j} = 36</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:18.320188" elapsed="0.000374"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.321296" level="INFO">${item} =     {
      "group-id": 36,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 36000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:18.320717" elapsed="0.000608"/>
</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="PASS" start="2026-04-08T00:58:18.321482" elapsed="0.000190"/>
</kw>
<var name="${iteration}">36</var>
<status status="PASS" start="2026-04-08T00:58:18.319341" elapsed="0.002368"/>
</iter>
<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="PASS" start="2026-04-08T00:58:18.322117" elapsed="0.000198"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:18.321883" elapsed="0.000470"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.321868" elapsed="0.000510"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.322879" level="INFO">${j} = 37</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:18.322532" elapsed="0.000373"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.323646" level="INFO">${item} =     {
      "group-id": 37,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 37000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:18.323065" elapsed="0.000609"/>
</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="PASS" start="2026-04-08T00:58:18.323829" elapsed="0.000180"/>
</kw>
<var name="${iteration}">37</var>
<status status="PASS" start="2026-04-08T00:58:18.321839" elapsed="0.002207"/>
</iter>
<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="PASS" start="2026-04-08T00:58:18.324471" elapsed="0.000181"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:18.324237" elapsed="0.000453"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.324223" elapsed="0.000492"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.325218" level="INFO">${j} = 38</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:18.324857" elapsed="0.000387"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.325968" level="INFO">${item} =     {
      "group-id": 38,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 38000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:18.325399" elapsed="0.000598"/>
</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="PASS" start="2026-04-08T00:58:18.326204" elapsed="0.000184"/>
</kw>
<var name="${iteration}">38</var>
<status status="PASS" start="2026-04-08T00:58:18.324191" elapsed="0.002235"/>
</iter>
<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="PASS" start="2026-04-08T00:58:18.326864" elapsed="0.000179"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:18.326630" elapsed="0.000451"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.326615" elapsed="0.000489"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.327607" level="INFO">${j} = 39</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:18.327262" elapsed="0.000371"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.328364" level="INFO">${item} =     {
      "group-id": 39,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 39000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:18.327787" elapsed="0.000605"/>
</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="PASS" start="2026-04-08T00:58:18.328547" elapsed="0.000181"/>
</kw>
<var name="${iteration}">39</var>
<status status="PASS" start="2026-04-08T00:58:18.326584" elapsed="0.002182"/>
</iter>
<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="PASS" start="2026-04-08T00:58:18.329193" elapsed="0.000183"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:18.328942" elapsed="0.000472"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.328927" elapsed="0.000511"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.329919" level="INFO">${j} = 40</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:18.329578" elapsed="0.000367"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.330692" level="INFO">${item} =     {
      "group-id": 40,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 40000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:18.330098" elapsed="0.000622"/>
</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="PASS" start="2026-04-08T00:58:18.330920" elapsed="0.000183"/>
</kw>
<var name="${iteration}">40</var>
<status status="PASS" start="2026-04-08T00:58:18.328897" elapsed="0.002244"/>
</iter>
<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="PASS" start="2026-04-08T00:58:18.331572" elapsed="0.000180"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:18.331335" elapsed="0.000455"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.331321" elapsed="0.000493"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.332327" level="INFO">${j} = 41</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:18.331958" elapsed="0.000395"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.333069" level="INFO">${item} =     {
      "group-id": 41,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 41000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:18.332508" elapsed="0.000589"/>
</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="PASS" start="2026-04-08T00:58:18.333269" elapsed="0.000181"/>
</kw>
<var name="${iteration}">41</var>
<status status="PASS" start="2026-04-08T00:58:18.331290" elapsed="0.002197"/>
</iter>
<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="PASS" start="2026-04-08T00:58:18.333897" elapsed="0.000182"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:18.333663" elapsed="0.000454"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.333649" elapsed="0.000493"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.334686" level="INFO">${j} = 42</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:18.334302" elapsed="0.000411"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.335458" level="INFO">${item} =     {
      "group-id": 42,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 42000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:18.334867" elapsed="0.000620"/>
</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="PASS" start="2026-04-08T00:58:18.335641" elapsed="0.000179"/>
</kw>
<var name="${iteration}">42</var>
<status status="PASS" start="2026-04-08T00:58:18.333618" elapsed="0.002240"/>
</iter>
<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="PASS" start="2026-04-08T00:58:18.336472" elapsed="0.000183"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:18.336225" elapsed="0.000468"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.336081" elapsed="0.000637"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.337231" level="INFO">${j} = 43</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:18.336862" elapsed="0.000395"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.337978" level="INFO">${item} =     {
      "group-id": 43,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 43000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:18.337412" elapsed="0.000594"/>
</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="PASS" start="2026-04-08T00:58:18.338177" elapsed="0.000184"/>
</kw>
<var name="${iteration}">43</var>
<status status="PASS" start="2026-04-08T00:58:18.336049" elapsed="0.002349"/>
</iter>
<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="PASS" start="2026-04-08T00:58:18.338829" elapsed="0.000180"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:18.338590" elapsed="0.000457"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.338574" elapsed="0.000497"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.339575" level="INFO">${j} = 44</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:18.339229" elapsed="0.000372"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.340335" level="INFO">${item} =     {
      "group-id": 44,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 44000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:18.339757" elapsed="0.000606"/>
</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="PASS" start="2026-04-08T00:58:18.340517" elapsed="0.000180"/>
</kw>
<var name="${iteration}">44</var>
<status status="PASS" start="2026-04-08T00:58:18.338542" elapsed="0.002191"/>
</iter>
<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="PASS" start="2026-04-08T00:58:18.341174" elapsed="0.000182"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:18.340915" elapsed="0.000478"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.340900" elapsed="0.000518"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.341906" level="INFO">${j} = 45</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:18.341561" elapsed="0.000371"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.342736" level="INFO">${item} =     {
      "group-id": 45,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 45000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:18.342122" elapsed="0.000643"/>
</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="PASS" start="2026-04-08T00:58:18.342923" elapsed="0.000181"/>
</kw>
<var name="${iteration}">45</var>
<status status="PASS" start="2026-04-08T00:58:18.340869" elapsed="0.002272"/>
</iter>
<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="PASS" start="2026-04-08T00:58:18.343570" elapsed="0.000181"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:18.343335" elapsed="0.000454"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.343320" elapsed="0.000493"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.344317" level="INFO">${j} = 46</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:18.343956" elapsed="0.000387"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.345064" level="INFO">${item} =     {
      "group-id": 46,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 46000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:18.344498" elapsed="0.000594"/>
</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="PASS" start="2026-04-08T00:58:18.345265" elapsed="0.000181"/>
</kw>
<var name="${iteration}">46</var>
<status status="PASS" start="2026-04-08T00:58:18.343289" elapsed="0.002195"/>
</iter>
<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="PASS" start="2026-04-08T00:58:18.345892" elapsed="0.000179"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:18.345658" elapsed="0.000451"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.345644" elapsed="0.000489"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.346649" level="INFO">${j} = 47</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:18.346290" elapsed="0.000389"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.347409" level="INFO">${item} =     {
      "group-id": 47,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 47000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:18.346833" elapsed="0.000604"/>
</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="PASS" start="2026-04-08T00:58:18.347591" elapsed="0.000178"/>
</kw>
<var name="${iteration}">47</var>
<status status="PASS" start="2026-04-08T00:58:18.345614" elapsed="0.002191"/>
</iter>
<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="PASS" start="2026-04-08T00:58:18.348227" elapsed="0.000181"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:18.347980" elapsed="0.000465"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.347965" elapsed="0.000503"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.348952" level="INFO">${j} = 48</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:18.348609" elapsed="0.000369"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.349706" level="INFO">${item} =     {
      "group-id": 48,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 48000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:18.349130" elapsed="0.000604"/>
</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="PASS" start="2026-04-08T00:58:18.349886" elapsed="0.000178"/>
</kw>
<var name="${iteration}">48</var>
<status status="PASS" start="2026-04-08T00:58:18.347935" elapsed="0.002166"/>
</iter>
<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="PASS" start="2026-04-08T00:58:18.350687" elapsed="0.000184"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:18.350409" elapsed="0.000500"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.350395" elapsed="0.000539"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.351453" level="INFO">${j} = 49</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:18.351080" elapsed="0.000400"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.352223" level="INFO">${item} =     {
      "group-id": 49,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 49000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:18.351633" elapsed="0.000618"/>
</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="PASS" start="2026-04-08T00:58:18.352406" elapsed="0.000180"/>
</kw>
<var name="${iteration}">49</var>
<status status="PASS" start="2026-04-08T00:58:18.350363" elapsed="0.002260"/>
</iter>
<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="PASS" start="2026-04-08T00:58:18.353150" elapsed="0.000204"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:18.352908" elapsed="0.000515"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.352785" elapsed="0.000666"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.353947" level="INFO">${j} = 50</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:18.353599" elapsed="0.000374"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.354728" level="INFO">${item} =     {
      "group-id": 50,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 50000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:18.354128" elapsed="0.000628"/>
</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="PASS" start="2026-04-08T00:58:18.354912" elapsed="0.000179"/>
</kw>
<var name="${iteration}">50</var>
<status status="PASS" start="2026-04-08T00:58:18.352755" elapsed="0.002373"/>
</iter>
<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="PASS" start="2026-04-08T00:58:18.355565" elapsed="0.000181"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:18.355322" elapsed="0.000462"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.355308" elapsed="0.000500"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.356311" level="INFO">${j} = 51</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:18.355950" elapsed="0.000387"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.357053" level="INFO">${item} =     {
      "group-id": 51,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 51000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:18.356492" elapsed="0.000589"/>
</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="PASS" start="2026-04-08T00:58:18.357252" elapsed="0.000181"/>
</kw>
<var name="${iteration}">51</var>
<status status="PASS" start="2026-04-08T00:58:18.355277" elapsed="0.002194"/>
</iter>
<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="PASS" start="2026-04-08T00:58:18.357881" elapsed="0.000180"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:18.357647" elapsed="0.000452"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.357633" elapsed="0.000490"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.358660" level="INFO">${j} = 52</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:18.358280" elapsed="0.000407"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.359426" level="INFO">${item} =     {
      "group-id": 52,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 52000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:18.358845" elapsed="0.000609"/>
</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="PASS" start="2026-04-08T00:58:18.359608" elapsed="0.000179"/>
</kw>
<var name="${iteration}">52</var>
<status status="PASS" start="2026-04-08T00:58:18.357603" elapsed="0.002220"/>
</iter>
<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="PASS" start="2026-04-08T00:58:18.360250" elapsed="0.000182"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:18.359999" elapsed="0.000472"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.359985" elapsed="0.000510"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.360985" level="INFO">${j} = 53</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:18.360638" elapsed="0.000373"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.361755" level="INFO">${item} =     {
      "group-id": 53,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 53000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:18.361182" elapsed="0.000601"/>
</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="PASS" start="2026-04-08T00:58:18.361939" elapsed="0.000179"/>
</kw>
<var name="${iteration}">53</var>
<status status="PASS" start="2026-04-08T00:58:18.359955" elapsed="0.002215"/>
</iter>
<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="PASS" start="2026-04-08T00:58:18.362598" elapsed="0.000187"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:18.362351" elapsed="0.000472"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.362337" elapsed="0.000509"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.363350" level="INFO">${j} = 54</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:18.362989" elapsed="0.000387"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.364090" level="INFO">${item} =     {
      "group-id": 54,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 54000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:18.363529" elapsed="0.000588"/>
</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="PASS" start="2026-04-08T00:58:18.364288" elapsed="0.000180"/>
</kw>
<var name="${iteration}">54</var>
<status status="PASS" start="2026-04-08T00:58:18.362306" elapsed="0.002236"/>
</iter>
<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="PASS" start="2026-04-08T00:58:18.364956" elapsed="0.000179"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:18.364721" elapsed="0.000469"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.364706" elapsed="0.000509"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.365701" level="INFO">${j} = 55</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:18.365357" elapsed="0.000370"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.366456" level="INFO">${item} =     {
      "group-id": 55,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 55000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:18.365881" elapsed="0.000603"/>
</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="PASS" start="2026-04-08T00:58:18.366682" elapsed="0.000193"/>
</kw>
<var name="${iteration}">55</var>
<status status="PASS" start="2026-04-08T00:58:18.364677" elapsed="0.002236"/>
</iter>
<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="PASS" start="2026-04-08T00:58:18.367345" elapsed="0.000181"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:18.367090" elapsed="0.000475"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.367076" elapsed="0.000512"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.368078" level="INFO">${j} = 56</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:18.367733" elapsed="0.000371"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.368842" level="INFO">${item} =     {
      "group-id": 56,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 56000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:18.368274" elapsed="0.000597"/>
</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="PASS" start="2026-04-08T00:58:18.369024" elapsed="0.000200"/>
</kw>
<var name="${iteration}">56</var>
<status status="PASS" start="2026-04-08T00:58:18.367046" elapsed="0.002215"/>
</iter>
<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="PASS" start="2026-04-08T00:58:18.369789" elapsed="0.000188"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:18.369547" elapsed="0.000467"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.369425" elapsed="0.000614"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.370549" level="INFO">${j} = 57</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:18.370198" elapsed="0.000377"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.371331" level="INFO">${item} =     {
      "group-id": 57,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 57000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:18.370744" elapsed="0.000615"/>
</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="PASS" start="2026-04-08T00:58:18.371514" elapsed="0.000188"/>
</kw>
<var name="${iteration}">57</var>
<status status="PASS" start="2026-04-08T00:58:18.369395" elapsed="0.002345"/>
</iter>
<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="PASS" start="2026-04-08T00:58:18.372154" elapsed="0.000197"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:18.371918" elapsed="0.000471"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.371904" elapsed="0.000510"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.372910" level="INFO">${j} = 58</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:18.372556" elapsed="0.000381"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.373673" level="INFO">${item} =     {
      "group-id": 58,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 58000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:18.373090" elapsed="0.000611"/>
</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="PASS" start="2026-04-08T00:58:18.373855" elapsed="0.000180"/>
</kw>
<var name="${iteration}">58</var>
<status status="PASS" start="2026-04-08T00:58:18.371873" elapsed="0.002198"/>
</iter>
<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="PASS" start="2026-04-08T00:58:18.374500" elapsed="0.000205"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:18.374265" elapsed="0.000483"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.374251" elapsed="0.000521"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.375277" level="INFO">${j} = 59</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:18.374916" elapsed="0.000387"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.376021" level="INFO">${item} =     {
      "group-id": 59,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 59000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:18.375456" elapsed="0.000626"/>
</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="PASS" start="2026-04-08T00:58:18.376257" elapsed="0.000183"/>
</kw>
<var name="${iteration}">59</var>
<status status="PASS" start="2026-04-08T00:58:18.374220" elapsed="0.002257"/>
</iter>
<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="PASS" start="2026-04-08T00:58:18.376890" elapsed="0.000179"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:18.376654" elapsed="0.000453"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.376639" elapsed="0.000492"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.377636" level="INFO">${j} = 60</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:18.377290" elapsed="0.000372"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.378394" level="INFO">${item} =     {
      "group-id": 60,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 60000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:18.377816" elapsed="0.000606"/>
</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="PASS" start="2026-04-08T00:58:18.378576" elapsed="0.000198"/>
</kw>
<var name="${iteration}">60</var>
<status status="PASS" start="2026-04-08T00:58:18.376609" elapsed="0.002203"/>
</iter>
<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="PASS" start="2026-04-08T00:58:18.379241" elapsed="0.000181"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:18.378988" elapsed="0.000472"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.378974" elapsed="0.000510"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.379969" level="INFO">${j} = 61</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:18.379626" elapsed="0.000368"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.380726" level="INFO">${item} =     {
      "group-id": 61,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 61000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:18.380148" elapsed="0.000606"/>
</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="PASS" start="2026-04-08T00:58:18.380909" elapsed="0.000178"/>
</kw>
<var name="${iteration}">61</var>
<status status="PASS" start="2026-04-08T00:58:18.378944" elapsed="0.002180"/>
</iter>
<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="PASS" start="2026-04-08T00:58:18.381553" elapsed="0.000178"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:18.381317" elapsed="0.000453"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.381302" elapsed="0.000492"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.382317" level="INFO">${j} = 62</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:18.381951" elapsed="0.000392"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.383122" level="INFO">${item} =     {
      "group-id": 62,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 62000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:18.382498" elapsed="0.000652"/>
</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="PASS" start="2026-04-08T00:58:18.383322" elapsed="0.000180"/>
</kw>
<var name="${iteration}">62</var>
<status status="PASS" start="2026-04-08T00:58:18.381271" elapsed="0.002268"/>
</iter>
<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="PASS" start="2026-04-08T00:58:18.383949" elapsed="0.000181"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:18.383715" elapsed="0.000469"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.383701" elapsed="0.000509"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.384700" level="INFO">${j} = 63</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:18.384354" elapsed="0.000372"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.385469" level="INFO">${item} =     {
      "group-id": 63,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 63000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:18.384879" elapsed="0.000619"/>
</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="PASS" start="2026-04-08T00:58:18.385652" elapsed="0.000180"/>
</kw>
<var name="${iteration}">63</var>
<status status="PASS" start="2026-04-08T00:58:18.383671" elapsed="0.002199"/>
</iter>
<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="PASS" start="2026-04-08T00:58:18.386413" elapsed="0.000182"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:18.386153" elapsed="0.000495"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.386031" elapsed="0.000642"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.387177" level="INFO">${j} = 64</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:18.386817" elapsed="0.000427"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.387976" level="INFO">${item} =     {
      "group-id": 64,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 64000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:18.387405" elapsed="0.000598"/>
</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="PASS" start="2026-04-08T00:58:18.388173" elapsed="0.000182"/>
</kw>
<var name="${iteration}">64</var>
<status status="PASS" start="2026-04-08T00:58:18.386000" elapsed="0.002392"/>
</iter>
<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="PASS" start="2026-04-08T00:58:18.388829" elapsed="0.000181"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:18.388593" elapsed="0.000455"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.388578" elapsed="0.000493"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.389586" level="INFO">${j} = 65</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:18.389229" elapsed="0.000383"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.390348" level="INFO">${item} =     {
      "group-id": 65,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 65000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:18.389767" elapsed="0.000609"/>
</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="PASS" start="2026-04-08T00:58:18.390532" elapsed="0.000216"/>
</kw>
<var name="${iteration}">65</var>
<status status="PASS" start="2026-04-08T00:58:18.388545" elapsed="0.002240"/>
</iter>
<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="PASS" start="2026-04-08T00:58:18.391216" elapsed="0.000184"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:18.390960" elapsed="0.000477"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.390945" elapsed="0.000517"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.391950" level="INFO">${j} = 66</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:18.391604" elapsed="0.000372"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.392826" level="INFO">${item} =     {
      "group-id": 66,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 66000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:18.392129" elapsed="0.000726"/>
</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="PASS" start="2026-04-08T00:58:18.393010" elapsed="0.000203"/>
</kw>
<var name="${iteration}">66</var>
<status status="PASS" start="2026-04-08T00:58:18.390915" elapsed="0.002336"/>
</iter>
<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="PASS" start="2026-04-08T00:58:18.393660" elapsed="0.000180"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:18.393425" elapsed="0.000452"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.393411" elapsed="0.000490"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.394409" level="INFO">${j} = 67</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:18.394044" elapsed="0.000391"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.395188" level="INFO">${item} =     {
      "group-id": 67,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 67000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:18.394589" elapsed="0.000628"/>
</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="PASS" start="2026-04-08T00:58:18.395374" elapsed="0.000180"/>
</kw>
<var name="${iteration}">67</var>
<status status="PASS" start="2026-04-08T00:58:18.393381" elapsed="0.002210"/>
</iter>
<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="PASS" start="2026-04-08T00:58:18.395997" elapsed="0.000197"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:18.395764" elapsed="0.000469"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.395750" elapsed="0.000507"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.396745" level="INFO">${j} = 68</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:18.396400" elapsed="0.000371"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.397502" level="INFO">${item} =     {
      "group-id": 68,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 68000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:18.396923" elapsed="0.000607"/>
</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="PASS" start="2026-04-08T00:58:18.397683" elapsed="0.000178"/>
</kw>
<var name="${iteration}">68</var>
<status status="PASS" start="2026-04-08T00:58:18.395720" elapsed="0.002177"/>
</iter>
<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="PASS" start="2026-04-08T00:58:18.398369" elapsed="0.000184"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:18.398075" elapsed="0.000516"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.398061" elapsed="0.000557"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.399306" level="INFO">${j} = 69</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:18.398810" elapsed="0.000523"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.400060" level="INFO">${item} =     {
      "group-id": 69,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 69000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:18.399491" elapsed="0.000597"/>
</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="PASS" start="2026-04-08T00:58:18.400260" elapsed="0.000183"/>
</kw>
<var name="${iteration}">69</var>
<status status="PASS" start="2026-04-08T00:58:18.398031" elapsed="0.002449"/>
</iter>
<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="PASS" start="2026-04-08T00:58:18.400898" elapsed="0.000181"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:18.400655" elapsed="0.000461"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.400641" elapsed="0.000500"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.401647" level="INFO">${j} = 70</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:18.401300" elapsed="0.000373"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.402409" level="INFO">${item} =     {
      "group-id": 70,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 70000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:18.401828" elapsed="0.000609"/>
</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="PASS" start="2026-04-08T00:58:18.402594" elapsed="0.000197"/>
</kw>
<var name="${iteration}">70</var>
<status status="PASS" start="2026-04-08T00:58:18.400611" elapsed="0.002216"/>
</iter>
<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="PASS" start="2026-04-08T00:58:18.403368" elapsed="0.000184"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:18.403109" elapsed="0.000481"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.402989" elapsed="0.000626"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.404107" level="INFO">${j} = 71</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:18.403760" elapsed="0.000372"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.404868" level="INFO">${item} =     {
      "group-id": 71,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 71000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:18.404304" elapsed="0.000592"/>
</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="PASS" start="2026-04-08T00:58:18.405055" elapsed="0.000212"/>
</kw>
<var name="${iteration}">71</var>
<status status="PASS" start="2026-04-08T00:58:18.402958" elapsed="0.002346"/>
</iter>
<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="PASS" start="2026-04-08T00:58:18.405722" elapsed="0.000180"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:18.405489" elapsed="0.000451"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.405474" elapsed="0.000490"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.406467" level="INFO">${j} = 72</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:18.406106" elapsed="0.000387"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.407255" level="INFO">${item} =     {
      "group-id": 72,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 72000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:18.406673" elapsed="0.000610"/>
</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="PASS" start="2026-04-08T00:58:18.407440" elapsed="0.000179"/>
</kw>
<var name="${iteration}">72</var>
<status status="PASS" start="2026-04-08T00:58:18.405436" elapsed="0.002220"/>
</iter>
<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="PASS" start="2026-04-08T00:58:18.408064" elapsed="0.000196"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:18.407830" elapsed="0.000468"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.407816" elapsed="0.000505"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.408808" level="INFO">${j} = 73</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:18.408464" elapsed="0.000370"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.409569" level="INFO">${item} =     {
      "group-id": 73,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 73000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:18.408988" elapsed="0.000609"/>
</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="PASS" start="2026-04-08T00:58:18.409785" elapsed="0.000183"/>
</kw>
<var name="${iteration}">73</var>
<status status="PASS" start="2026-04-08T00:58:18.407787" elapsed="0.002219"/>
</iter>
<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="PASS" start="2026-04-08T00:58:18.410434" elapsed="0.000180"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:18.410197" elapsed="0.000466"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.410181" elapsed="0.000507"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.411198" level="INFO">${j} = 74</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:18.410832" elapsed="0.000392"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.411948" level="INFO">${item} =     {
      "group-id": 74,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 74000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:18.411379" elapsed="0.000597"/>
</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="PASS" start="2026-04-08T00:58:18.412130" elapsed="0.000196"/>
</kw>
<var name="${iteration}">74</var>
<status status="PASS" start="2026-04-08T00:58:18.410136" elapsed="0.002227"/>
</iter>
<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="PASS" start="2026-04-08T00:58:18.412771" elapsed="0.000179"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:18.412537" elapsed="0.000450"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.412523" elapsed="0.000487"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.413512" level="INFO">${j} = 75</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:18.413152" elapsed="0.000386"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.414273" level="INFO">${item} =     {
      "group-id": 75,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 75000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:18.413690" elapsed="0.000611"/>
</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="PASS" start="2026-04-08T00:58:18.414454" elapsed="0.000180"/>
</kw>
<var name="${iteration}">75</var>
<status status="PASS" start="2026-04-08T00:58:18.412493" elapsed="0.002210"/>
</iter>
<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="PASS" start="2026-04-08T00:58:18.415121" elapsed="0.000197"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:18.414885" elapsed="0.000471"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.414870" elapsed="0.000510"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.415864" level="INFO">${j} = 76</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:18.415521" elapsed="0.000368"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.416622" level="INFO">${item} =     {
      "group-id": 76,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 76000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:18.416042" elapsed="0.000608"/>
</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="PASS" start="2026-04-08T00:58:18.416803" elapsed="0.000179"/>
</kw>
<var name="${iteration}">76</var>
<status status="PASS" start="2026-04-08T00:58:18.414841" elapsed="0.002178"/>
</iter>
<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="PASS" start="2026-04-08T00:58:18.417445" elapsed="0.000181"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:18.417210" elapsed="0.000453"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.417195" elapsed="0.000492"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.418197" level="INFO">${j} = 77</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:18.417829" elapsed="0.000395"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.418970" level="INFO">${item} =     {
      "group-id": 77,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 77000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:18.418379" elapsed="0.000619"/>
</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="PASS" start="2026-04-08T00:58:18.419152" elapsed="0.000201"/>
</kw>
<var name="${iteration}">77</var>
<status status="PASS" start="2026-04-08T00:58:18.417148" elapsed="0.002242"/>
</iter>
<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="PASS" start="2026-04-08T00:58:18.419916" elapsed="0.000180"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:18.419674" elapsed="0.000460"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.419551" elapsed="0.000621"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.420665" level="INFO">${j} = 78</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:18.420318" elapsed="0.000373"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.421467" level="INFO">${item} =     {
      "group-id": 78,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 78000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:18.420880" elapsed="0.000615"/>
</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="PASS" start="2026-04-08T00:58:18.421651" elapsed="0.000180"/>
</kw>
<var name="${iteration}">78</var>
<status status="PASS" start="2026-04-08T00:58:18.419520" elapsed="0.002348"/>
</iter>
<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="PASS" start="2026-04-08T00:58:18.422295" elapsed="0.000181"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:18.422045" elapsed="0.000469"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.422030" elapsed="0.000508"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.423056" level="INFO">${j} = 79</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:18.422702" elapsed="0.000381"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.423828" level="INFO">${item} =     {
      "group-id": 79,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 79000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:18.423254" elapsed="0.000602"/>
</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="PASS" start="2026-04-08T00:58:18.424011" elapsed="0.000196"/>
</kw>
<var name="${iteration}">79</var>
<status status="PASS" start="2026-04-08T00:58:18.422000" elapsed="0.002246"/>
</iter>
<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="PASS" start="2026-04-08T00:58:18.424656" elapsed="0.000179"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:18.424422" elapsed="0.000451"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.424407" elapsed="0.000489"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.425398" level="INFO">${j} = 80</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:18.425036" elapsed="0.000387"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.426145" level="INFO">${item} =     {
      "group-id": 80,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 80000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:18.425576" elapsed="0.000612"/>
</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="PASS" start="2026-04-08T00:58:18.426344" elapsed="0.000180"/>
</kw>
<var name="${iteration}">80</var>
<status status="PASS" start="2026-04-08T00:58:18.424377" elapsed="0.002184"/>
</iter>
<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="PASS" start="2026-04-08T00:58:18.426987" elapsed="0.000195"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:18.426747" elapsed="0.000473"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.426732" elapsed="0.000512"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.427738" level="INFO">${j} = 81</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:18.427389" elapsed="0.000375"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.428497" level="INFO">${item} =     {
      "group-id": 81,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 81000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:18.427918" elapsed="0.000607"/>
</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="PASS" start="2026-04-08T00:58:18.428680" elapsed="0.000179"/>
</kw>
<var name="${iteration}">81</var>
<status status="PASS" start="2026-04-08T00:58:18.426700" elapsed="0.002196"/>
</iter>
<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="PASS" start="2026-04-08T00:58:18.429323" elapsed="0.000180"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:18.429071" elapsed="0.000469"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.429057" elapsed="0.000508"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.430049" level="INFO">${j} = 82</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:18.429707" elapsed="0.000368"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.430857" level="INFO">${item} =     {
      "group-id": 82,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 82000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:18.430246" elapsed="0.000639"/>
</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="PASS" start="2026-04-08T00:58:18.431039" elapsed="0.000195"/>
</kw>
<var name="${iteration}">82</var>
<status status="PASS" start="2026-04-08T00:58:18.429027" elapsed="0.002246"/>
</iter>
<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="PASS" start="2026-04-08T00:58:18.431681" elapsed="0.000179"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:18.431448" elapsed="0.000483"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.431434" elapsed="0.000524"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.432481" level="INFO">${j} = 83</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:18.432105" elapsed="0.000403"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.433250" level="INFO">${item} =     {
      "group-id": 83,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 83000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:18.432663" elapsed="0.000616"/>
</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="PASS" start="2026-04-08T00:58:18.433435" elapsed="0.000181"/>
</kw>
<var name="${iteration}">83</var>
<status status="PASS" start="2026-04-08T00:58:18.431404" elapsed="0.002249"/>
</iter>
<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="PASS" start="2026-04-08T00:58:18.434063" elapsed="0.000198"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:18.433830" elapsed="0.000470"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.433815" elapsed="0.000509"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.434827" level="INFO">${j} = 84</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:18.434469" elapsed="0.000385"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.435590" level="INFO">${item} =     {
      "group-id": 84,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 84000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:18.435009" elapsed="0.000610"/>
</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="PASS" start="2026-04-08T00:58:18.435775" elapsed="0.000180"/>
</kw>
<var name="${iteration}">84</var>
<status status="PASS" start="2026-04-08T00:58:18.433785" elapsed="0.002208"/>
</iter>
<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="PASS" start="2026-04-08T00:58:18.436534" elapsed="0.000192"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:18.436291" elapsed="0.000474"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.436154" elapsed="0.000635"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.437296" level="INFO">${j} = 85</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:18.436932" elapsed="0.000390"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.438039" level="INFO">${item} =     {
      "group-id": 85,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 85000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:18.437478" elapsed="0.000589"/>
</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="PASS" start="2026-04-08T00:58:18.438238" elapsed="0.000183"/>
</kw>
<var name="${iteration}">85</var>
<status status="PASS" start="2026-04-08T00:58:18.436123" elapsed="0.002335"/>
</iter>
<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="PASS" start="2026-04-08T00:58:18.438893" elapsed="0.000181"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:18.438634" elapsed="0.000478"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.438619" elapsed="0.000517"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.439638" level="INFO">${j} = 86</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:18.439294" elapsed="0.000370"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.440396" level="INFO">${item} =     {
      "group-id": 86,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 86000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:18.439817" elapsed="0.000606"/>
</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="PASS" start="2026-04-08T00:58:18.440577" elapsed="0.000178"/>
</kw>
<var name="${iteration}">86</var>
<status status="PASS" start="2026-04-08T00:58:18.438589" elapsed="0.002203"/>
</iter>
<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="PASS" start="2026-04-08T00:58:18.441218" elapsed="0.000263"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:18.440968" elapsed="0.000551"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.440954" elapsed="0.000588"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.442029" level="INFO">${j} = 87</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:18.441686" elapsed="0.000369"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.442811" level="INFO">${item} =     {
      "group-id": 87,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 87000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:18.442231" elapsed="0.000612"/>
</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="PASS" start="2026-04-08T00:58:18.442997" elapsed="0.000196"/>
</kw>
<var name="${iteration}">87</var>
<status status="PASS" start="2026-04-08T00:58:18.440924" elapsed="0.002339"/>
</iter>
<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="PASS" start="2026-04-08T00:58:18.443683" elapsed="0.000180"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:18.443442" elapsed="0.000459"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.443427" elapsed="0.000497"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.444435" level="INFO">${j} = 88</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:18.444072" elapsed="0.000389"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.445206" level="INFO">${item} =     {
      "group-id": 88,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 88000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:18.444616" elapsed="0.000619"/>
</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="PASS" start="2026-04-08T00:58:18.445390" elapsed="0.000179"/>
</kw>
<var name="${iteration}">88</var>
<status status="PASS" start="2026-04-08T00:58:18.443397" elapsed="0.002209"/>
</iter>
<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="PASS" start="2026-04-08T00:58:18.446013" elapsed="0.000194"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:18.445780" elapsed="0.000466"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.445766" elapsed="0.000504"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.446796" level="INFO">${j} = 89</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:18.446412" elapsed="0.000411"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.447558" level="INFO">${item} =     {
      "group-id": 89,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 89000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:18.446977" elapsed="0.000609"/>
</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="PASS" start="2026-04-08T00:58:18.447739" elapsed="0.000180"/>
</kw>
<var name="${iteration}">89</var>
<status status="PASS" start="2026-04-08T00:58:18.445736" elapsed="0.002220"/>
</iter>
<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="PASS" start="2026-04-08T00:58:18.448383" elapsed="0.000181"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:18.448131" elapsed="0.000470"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.448115" elapsed="0.000511"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.449116" level="INFO">${j} = 90</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:18.448769" elapsed="0.000372"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.449875" level="INFO">${item} =     {
      "group-id": 90,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 90000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:18.449312" elapsed="0.000591"/>
</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="PASS" start="2026-04-08T00:58:18.450055" elapsed="0.000196"/>
</kw>
<var name="${iteration}">90</var>
<status status="PASS" start="2026-04-08T00:58:18.448085" elapsed="0.002203"/>
</iter>
<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="PASS" start="2026-04-08T00:58:18.450697" elapsed="0.000201"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:18.450463" elapsed="0.000473"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.450449" elapsed="0.000511"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.451468" level="INFO">${j} = 91</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:18.451102" elapsed="0.000392"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.452243" level="INFO">${item} =     {
      "group-id": 91,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 91000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:18.451656" elapsed="0.000615"/>
</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="PASS" start="2026-04-08T00:58:18.452425" elapsed="0.000179"/>
</kw>
<var name="${iteration}">91</var>
<status status="PASS" start="2026-04-08T00:58:18.450418" elapsed="0.002222"/>
</iter>
<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="PASS" start="2026-04-08T00:58:18.453512" elapsed="0.000182"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:18.453269" elapsed="0.000464"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.452800" elapsed="0.000958"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.454265" level="INFO">${j} = 92</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:18.453901" elapsed="0.000390"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.455040" level="INFO">${item} =     {
      "group-id": 92,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 92000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:18.454444" elapsed="0.000677"/>
</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="PASS" start="2026-04-08T00:58:18.455297" elapsed="0.000185"/>
</kw>
<var name="${iteration}">92</var>
<status status="PASS" start="2026-04-08T00:58:18.452770" elapsed="0.002749"/>
</iter>
<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="PASS" start="2026-04-08T00:58:18.455930" elapsed="0.000180"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:18.455695" elapsed="0.000452"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.455681" elapsed="0.000506"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.456677" level="INFO">${j} = 93</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:18.456332" elapsed="0.000371"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.457442" level="INFO">${item} =     {
      "group-id": 93,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 93000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:18.456856" elapsed="0.000614"/>
</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="PASS" start="2026-04-08T00:58:18.457625" elapsed="0.000179"/>
</kw>
<var name="${iteration}">93</var>
<status status="PASS" start="2026-04-08T00:58:18.455650" elapsed="0.002190"/>
</iter>
<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="PASS" start="2026-04-08T00:58:18.458266" elapsed="0.000181"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:18.458018" elapsed="0.000466"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.458004" elapsed="0.000504"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.459014" level="INFO">${j} = 94</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:18.458649" elapsed="0.000391"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.459772" level="INFO">${item} =     {
      "group-id": 94,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 94000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:18.459210" elapsed="0.000590"/>
</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="PASS" start="2026-04-08T00:58:18.459954" elapsed="0.000179"/>
</kw>
<var name="${iteration}">94</var>
<status status="PASS" start="2026-04-08T00:58:18.457973" elapsed="0.002210"/>
</iter>
<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="PASS" start="2026-04-08T00:58:18.460647" elapsed="0.000180"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:18.460413" elapsed="0.000452"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.460399" elapsed="0.000490"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.461399" level="INFO">${j} = 95</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:18.461031" elapsed="0.000395"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.462153" level="INFO">${item} =     {
      "group-id": 95,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 95000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:18.461586" elapsed="0.000611"/>
</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="PASS" start="2026-04-08T00:58:18.462353" elapsed="0.000179"/>
</kw>
<var name="${iteration}">95</var>
<status status="PASS" start="2026-04-08T00:58:18.460369" elapsed="0.002200"/>
</iter>
<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="PASS" start="2026-04-08T00:58:18.463029" elapsed="0.000197"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:18.462778" elapsed="0.000486"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.462731" elapsed="0.000557"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.463775" level="INFO">${j} = 96</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:18.463430" elapsed="0.000371"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.464535" level="INFO">${item} =     {
      "group-id": 96,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 96000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:18.463955" elapsed="0.000608"/>
</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="PASS" start="2026-04-08T00:58:18.464718" elapsed="0.000180"/>
</kw>
<var name="${iteration}">96</var>
<status status="PASS" start="2026-04-08T00:58:18.462700" elapsed="0.002236"/>
</iter>
<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="PASS" start="2026-04-08T00:58:18.465363" elapsed="0.000182"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:18.465111" elapsed="0.000472"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.465096" elapsed="0.000511"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.466094" level="INFO">${j} = 97</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:18.465748" elapsed="0.000406"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.466924" level="INFO">${item} =     {
      "group-id": 97,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 97000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:18.466330" elapsed="0.000621"/>
</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="PASS" start="2026-04-08T00:58:18.467106" elapsed="0.000198"/>
</kw>
<var name="${iteration}">97</var>
<status status="PASS" start="2026-04-08T00:58:18.465066" elapsed="0.002276"/>
</iter>
<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="PASS" start="2026-04-08T00:58:18.467761" elapsed="0.000181"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:18.467525" elapsed="0.000455"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.467511" elapsed="0.000494"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.468513" level="INFO">${j} = 98</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:18.468148" elapsed="0.000392"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.469282" level="INFO">${item} =     {
      "group-id": 98,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 98000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:18.468695" elapsed="0.000615"/>
</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="PASS" start="2026-04-08T00:58:18.469468" elapsed="0.000181"/>
</kw>
<var name="${iteration}">98</var>
<status status="PASS" start="2026-04-08T00:58:18.467481" elapsed="0.002205"/>
</iter>
<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="PASS" start="2026-04-08T00:58:18.470229" elapsed="0.000185"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:18.469971" elapsed="0.000481"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.469848" elapsed="0.000629"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.471002" level="INFO">${j} = 99</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:18.470621" elapsed="0.000407"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.471773" level="INFO">${item} =     {
      "group-id": 99,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 99000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:18.471200" elapsed="0.000601"/>
</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="PASS" start="2026-04-08T00:58:18.471956" elapsed="0.000180"/>
</kw>
<var name="${iteration}">99</var>
<status status="PASS" start="2026-04-08T00:58:18.469818" elapsed="0.002372"/>
</iter>
<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="PASS" start="2026-04-08T00:58:18.472607" elapsed="0.000182"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:18.472370" elapsed="0.000457"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.472355" elapsed="0.000496"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.473361" level="INFO">${j} = 100</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:18.472995" elapsed="0.000393"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.474153" level="INFO">${item} =     {
      "group-id": 100,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 100000,
            "action": [
              {
                "...</msg>
<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="PASS" start="2026-04-08T00:58:18.473543" elapsed="0.000657"/>
</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="PASS" start="2026-04-08T00:58:18.474359" elapsed="0.000181"/>
</kw>
<var name="${iteration}">100</var>
<status status="PASS" start="2026-04-08T00:58:18.472324" elapsed="0.002253"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="PASS" start="2026-04-08T00:58:18.234590" elapsed="0.240017"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.475884" level="INFO">${final_text} = {
  "flow-node-inventory:group": [
    {
      "group-id": 1,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 1000,
            "action": [
  ...</msg>
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:58:18.474762" elapsed="0.001150"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T00:58:18.475970" elapsed="0.000032"/>
</return>
<msg time="2026-04-08T00:58:18.476124" level="INFO">${data} = {
  "flow-node-inventory:group": [
    {
      "group-id": 1,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 1000,
            "action": [
  ...</msg>
<var>${data}</var>
<arg>folder=${folder}</arg>
<arg>name_prefix=post_</arg>
<arg>base_name=${base_name}</arg>
<arg>extension=${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>endline=${endline}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one 100 times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-08T00:58:18.179887" elapsed="0.296264"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:58:18.477483" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-2/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:58:18.477235" elapsed="0.000313">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-2/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-08T00:58:18.477638" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:58:18.476876" elapsed="0.000786"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:18.477975" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:18.477733" elapsed="0.000298"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.478536" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:58:18.478248" elapsed="0.000313"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:18.478054" elapsed="0.000542"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.477715" elapsed="0.000902"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.481015" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:58:18.478813" elapsed="0.002229"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-08T00:58:18.481093" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:58:18.481263" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:58:18.476545" elapsed="0.004743"/>
</kw>
<kw name="Post_To_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.482812" level="INFO">/rests/data/opendaylight-inventory:nodes/node=openflow%3A1</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:18.482553" elapsed="0.000308"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.483276" level="INFO">{
  "flow-node-inventory:group": [
    {
      "group-id": 1,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 1000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 1000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-1",
      "group-type": "group-ff"
    },
    {
      "group-id": 2,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 2000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 2000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-2",
      "group-type": "group-ff"
    },
    {
      "group-id": 3,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 3000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 3000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-3",
      "group-type": "group-ff"
    },
    {
      "group-id": 4,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 4000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 4000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-4",
      "group-type": "group-ff"
    },
    {
      "group-id": 5,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 5000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 5000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-5",
      "group-type": "group-ff"
    },
    {
      "group-id": 6,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 6000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 6000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-6",
      "group-type": "group-ff"
    },
    {
      "group-id": 7,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 7000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 7000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-7",
      "group-type": "group-ff"
    },
    {
      "group-id": 8,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 8000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 8000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-8",
      "group-type": "group-ff"
    },
    {
      "group-id": 9,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 9000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 9000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-9",
      "group-type": "group-ff"
    },
    {
      "group-id": 10,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 10000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 10000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-10",
      "group-type": "group-ff"
    },
    {
      "group-id": 11,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 11000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 11000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-11",
      "group-type": "group-ff"
    },
    {
      "group-id": 12,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 12000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 12000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-12",
      "group-type": "group-ff"
    },
    {
      "group-id": 13,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 13000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 13000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-13",
      "group-type": "group-ff"
    },
    {
      "group-id": 14,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 14000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 14000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-14",
      "group-type": "group-ff"
    },
    {
      "group-id": 15,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 15000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 15000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-15",
      "group-type": "group-ff"
    },
    {
      "group-id": 16,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 16000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 16000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-16",
      "group-type": "group-ff"
    },
    {
      "group-id": 17,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 17000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 17000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-17",
      "group-type": "group-ff"
    },
    {
      "group-id": 18,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 18000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 18000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-18",
      "group-type": "group-ff"
    },
    {
      "group-id": 19,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 19000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 19000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-19",
      "group-type": "group-ff"
    },
    {
      "group-id": 20,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 20000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 20000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-20",
      "group-type": "group-ff"
    },
    {
      "group-id": 21,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 21000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 21000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-21",
      "group-type": "group-ff"
    },
    {
      "group-id": 22,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 22000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 22000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-22",
      "group-type": "group-ff"
    },
    {
      "group-id": 23,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 23000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 23000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-23",
      "group-type": "group-ff"
    },
    {
      "group-id": 24,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 24000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 24000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-24",
      "group-type": "group-ff"
    },
    {
      "group-id": 25,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 25000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 25000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-25",
      "group-type": "group-ff"
    },
    {
      "group-id": 26,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 26000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 26000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-26",
      "group-type": "group-ff"
    },
    {
      "group-id": 27,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 27000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 27000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-27",
      "group-type": "group-ff"
    },
    {
      "group-id": 28,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 28000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 28000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-28",
      "group-type": "group-ff"
    },
    {
      "group-id": 29,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 29000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 29000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-29",
      "group-type": "group-ff"
    },
    {
      "group-id": 30,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 30000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 30000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-30",
      "group-type": "group-ff"
    },
    {
      "group-id": 31,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 31000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 31000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-31",
      "group-type": "group-ff"
    },
    {
      "group-id": 32,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 32000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 32000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-32",
      "group-type": "group-ff"
    },
    {
      "group-id": 33,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 33000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 33000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-33",
      "group-type": "group-ff"
    },
    {
      "group-id": 34,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 34000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 34000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-34",
      "group-type": "group-ff"
    },
    {
      "group-id": 35,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 35000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 35000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-35",
      "group-type": "group-ff"
    },
    {
      "group-id": 36,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 36000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 36000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-36",
      "group-type": "group-ff"
    },
    {
      "group-id": 37,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 37000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 37000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-37",
      "group-type": "group-ff"
    },
    {
      "group-id": 38,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 38000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 38000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-38",
      "group-type": "group-ff"
    },
    {
      "group-id": 39,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 39000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 39000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-39",
      "group-type": "group-ff"
    },
    {
      "group-id": 40,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 40000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 40000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-40",
      "group-type": "group-ff"
    },
    {
      "group-id": 41,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 41000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 41000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-41",
      "group-type": "group-ff"
    },
    {
      "group-id": 42,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 42000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 42000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-42",
      "group-type": "group-ff"
    },
    {
      "group-id": 43,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 43000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 43000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-43",
      "group-type": "group-ff"
    },
    {
      "group-id": 44,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 44000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 44000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-44",
      "group-type": "group-ff"
    },
    {
      "group-id": 45,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 45000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 45000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-45",
      "group-type": "group-ff"
    },
    {
      "group-id": 46,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 46000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 46000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-46",
      "group-type": "group-ff"
    },
    {
      "group-id": 47,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 47000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 47000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-47",
      "group-type": "group-ff"
    },
    {
      "group-id": 48,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 48000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 48000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-48",
      "group-type": "group-ff"
    },
    {
      "group-id": 49,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 49000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 49000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-49",
      "group-type": "group-ff"
    },
    {
      "group-id": 50,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 50000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 50000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-50",
      "group-type": "group-ff"
    },
    {
      "group-id": 51,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 51000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 51000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-51",
      "group-type": "group-ff"
    },
    {
      "group-id": 52,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 52000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 52000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-52",
      "group-type": "group-ff"
    },
    {
      "group-id": 53,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 53000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 53000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-53",
      "group-type": "group-ff"
    },
    {
      "group-id": 54,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 54000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 54000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-54",
      "group-type": "group-ff"
    },
    {
      "group-id": 55,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 55000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 55000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-55",
      "group-type": "group-ff"
    },
    {
      "group-id": 56,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 56000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 56000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-56",
      "group-type": "group-ff"
    },
    {
      "group-id": 57,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 57000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 57000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-57",
      "group-type": "group-ff"
    },
    {
      "group-id": 58,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 58000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 58000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-58",
      "group-type": "group-ff"
    },
    {
      "group-id": 59,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 59000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 59000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-59",
      "group-type": "group-ff"
    },
    {
      "group-id": 60,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 60000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 60000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-60",
      "group-type": "group-ff"
    },
    {
      "group-id": 61,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 61000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 61000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-61",
      "group-type": "group-ff"
    },
    {
      "group-id": 62,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 62000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 62000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-62",
      "group-type": "group-ff"
    },
    {
      "group-id": 63,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 63000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 63000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-63",
      "group-type": "group-ff"
    },
    {
      "group-id": 64,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 64000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 64000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-64",
      "group-type": "group-ff"
    },
    {
      "group-id": 65,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 65000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 65000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-65",
      "group-type": "group-ff"
    },
    {
      "group-id": 66,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 66000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 66000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-66",
      "group-type": "group-ff"
    },
    {
      "group-id": 67,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 67000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 67000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-67",
      "group-type": "group-ff"
    },
    {
      "group-id": 68,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 68000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 68000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-68",
      "group-type": "group-ff"
    },
    {
      "group-id": 69,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 69000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 69000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-69",
      "group-type": "group-ff"
    },
    {
      "group-id": 70,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 70000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 70000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-70",
      "group-type": "group-ff"
    },
    {
      "group-id": 71,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 71000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 71000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-71",
      "group-type": "group-ff"
    },
    {
      "group-id": 72,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 72000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 72000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-72",
      "group-type": "group-ff"
    },
    {
      "group-id": 73,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 73000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 73000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-73",
      "group-type": "group-ff"
    },
    {
      "group-id": 74,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 74000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 74000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-74",
      "group-type": "group-ff"
    },
    {
      "group-id": 75,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 75000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 75000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-75",
      "group-type": "group-ff"
    },
    {
      "group-id": 76,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 76000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 76000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-76",
      "group-type": "group-ff"
    },
    {
      "group-id": 77,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 77000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 77000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-77",
      "group-type": "group-ff"
    },
    {
      "group-id": 78,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 78000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 78000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-78",
      "group-type": "group-ff"
    },
    {
      "group-id": 79,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 79000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 79000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-79",
      "group-type": "group-ff"
    },
    {
      "group-id": 80,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 80000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 80000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-80",
      "group-type": "group-ff"
    },
    {
      "group-id": 81,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 81000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 81000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-81",
      "group-type": "group-ff"
    },
    {
      "group-id": 82,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 82000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 82000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-82",
      "group-type": "group-ff"
    },
    {
      "group-id": 83,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 83000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 83000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-83",
      "group-type": "group-ff"
    },
    {
      "group-id": 84,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 84000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 84000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-84",
      "group-type": "group-ff"
    },
    {
      "group-id": 85,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 85000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 85000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-85",
      "group-type": "group-ff"
    },
    {
      "group-id": 86,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 86000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 86000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-86",
      "group-type": "group-ff"
    },
    {
      "group-id": 87,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 87000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 87000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-87",
      "group-type": "group-ff"
    },
    {
      "group-id": 88,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 88000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 88000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-88",
      "group-type": "group-ff"
    },
    {
      "group-id": 89,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 89000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 89000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-89",
      "group-type": "group-ff"
    },
    {
      "group-id": 90,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 90000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 90000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-90",
      "group-type": "group-ff"
    },
    {
      "group-id": 91,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 91000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 91000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-91",
      "group-type": "group-ff"
    },
    {
      "group-id": 92,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 92000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 92000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-92",
      "group-type": "group-ff"
    },
    {
      "group-id": 93,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 93000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 93000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-93",
      "group-type": "group-ff"
    },
    {
      "group-id": 94,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 94000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 94000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-94",
      "group-type": "group-ff"
    },
    {
      "group-id": 95,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 95000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 95000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-95",
      "group-type": "group-ff"
    },
    {
      "group-id": 96,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 96000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 96000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-96",
      "group-type": "group-ff"
    },
    {
      "group-id": 97,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 97000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 97000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-97",
      "group-type": "group-ff"
    },
    {
      "group-id": 98,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 98000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 98000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-98",
      "group-type": "group-ff"
    },
    {
      "group-id": 99,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 99000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 99000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-99",
      "group-type": "group-ff"
    },
    {
      "group-id": 100,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 100000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 100000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-100",
      "group-type": "group-ff"
    }
  ]
}</msg>
<arg>${data}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:18.483014" elapsed="0.000693"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.484110" level="INFO">{'Content-Type': 'application/json'}</msg>
<arg>${content_type}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:18.483864" elapsed="0.000303"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.484560" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:18.484322" elapsed="0.000280"/>
</kw>
<kw name="Join_Two_Headers" owner="TemplatedRequests">
<kw name="Copy Dictionary" owner="Collections">
<msg time="2026-04-08T00:58:18.485413" level="INFO">${accumulator} = {'Content-Type': 'application/json'}</msg>
<var>${accumulator}</var>
<arg>${first}</arg>
<doc>Returns a copy of the given dictionary.</doc>
<status status="PASS" start="2026-04-08T00:58:18.485217" elapsed="0.000222"/>
</kw>
<kw name="Get Dictionary Items" owner="Collections">
<msg time="2026-04-08T00:58:18.485762" level="INFO">${items_to_add} = []</msg>
<var>${items_to_add}</var>
<arg>${second}</arg>
<doc>Returns items of the given ``dictionary`` as a list.</doc>
<status status="PASS" start="2026-04-08T00:58:18.485591" elapsed="0.000196"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${accumulator}</arg>
<arg>@{items_to_add}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:58:18.485935" elapsed="0.000187"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.486537" level="INFO">{'Content-Type': 'application/json'}</msg>
<arg>${accumulator}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:18.486293" elapsed="0.000287"/>
</kw>
<return>
<value>${accumulator}</value>
<status status="PASS" start="2026-04-08T00:58:18.486622" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:58:18.486772" level="INFO">${headers} = {'Content-Type': 'application/json'}</msg>
<var>${headers}</var>
<arg>first=${content_type}</arg>
<arg>second=${accept}</arg>
<doc>Take two dicts, join them, return result. Second argument values take precedence.</doc>
<status status="PASS" start="2026-04-08T00:58:18.484800" elapsed="0.002023"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="POST On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:58:18.532385" level="INFO">POST Request : url=http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node01s3bfo0y24i1es90l47mavglv0.node0', 'Content-Length': '42507', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body={
  "flow-node-inventory:group": [
    {
      "group-id": 1,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 1000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 1000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-1",
      "group-type": "group-ff"
    },
    {
      "group-id": 2,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 2000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 2000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-2",
      "group-type": "group-ff"
    },
    {
      "group-id": 3,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 3000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 3000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-3",
      "group-type": "group-ff"
    },
    {
      "group-id": 4,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 4000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 4000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-4",
      "group-type": "group-ff"
    },
    {
      "group-id": 5,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 5000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 5000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-5",
      "group-type": "group-ff"
    },
    {
      "group-id": 6,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 6000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 6000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-6",
      "group-type": "group-ff"
    },
    {
      "group-id": 7,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 7000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 7000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-7",
      "group-type": "group-ff"
    },
    {
      "group-id": 8,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 8000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 8000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-8",
      "group-type": "group-ff"
    },
    {
      "group-id": 9,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 9000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 9000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-9",
      "group-type": "group-ff"
    },
    {
      "group-id": 10,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 10000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 10000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-10",
      "group-type": "group-ff"
    },
    {
      "group-id": 11,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 11000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 11000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-11",
      "group-type": "group-ff"
    },
    {
      "group-id": 12,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 12000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 12000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-12",
      "group-type": "group-ff"
    },
    {
      "group-id": 13,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 13000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 13000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-13",
      "group-type": "group-ff"
    },
    {
      "group-id": 14,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 14000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 14000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-14",
      "group-type": "group-ff"
    },
    {
      "group-id": 15,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 15000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 15000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-15",
      "group-type": "group-ff"
    },
    {
      "group-id": 16,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 16000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 16000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-16",
      "group-type": "group-ff"
    },
    {
      "group-id": 17,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 17000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 17000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-17",
      "group-type": "group-ff"
    },
    {
      "group-id": 18,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 18000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 18000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-18",
      "group-type": "group-ff"
    },
    {
      "group-id": 19,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 19000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 19000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-19",
      "group-type": "group-ff"
    },
    {
      "group-id": 20,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 20000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 20000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-20",
      "group-type": "group-ff"
    },
    {
      "group-id": 21,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 21000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 21000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-21",
      "group-type": "group-ff"
    },
    {
      "group-id": 22,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 22000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 22000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-22",
      "group-type": "group-ff"
    },
    {
      "group-id": 23,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 23000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 23000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-23",
      "group-type": "group-ff"
    },
    {
      "group-id": 24,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 24000,
            "action": [
              {
                "order": 1,
                "... (set the log level to DEBUG or TRACE to see the full content) 
 </msg>
<msg time="2026-04-08T00:58:18.532607" level="INFO">POST Response : url=http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 
 status=201, reason=Created 
 headers={'Location': 'http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:group=88', 'Content-Length': '0'} 
 body=None 
 </msg>
<msg time="2026-04-08T00:58:18.532759" level="INFO">${response} = &lt;Response [201]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:58:18.489120" elapsed="0.043676"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:18.487059" elapsed="0.045801"/>
</branch>
<branch type="ELSE">
<kw name="POST On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:18.533115" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:18.532899" elapsed="0.000333"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.486878" elapsed="0.046385"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.537968" level="INFO"/>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:18.534726" elapsed="0.003302"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:18.534415" elapsed="0.003662"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.534389" elapsed="0.003724"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.541645" level="INFO">201</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:18.538523" elapsed="0.003186"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:18.538212" elapsed="0.003545"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.538187" elapsed="0.003605"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.542583" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:18.542034" elapsed="0.000586"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:18.543116" elapsed="0.000034"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:18.542718" elapsed="0.000506"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.543901" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:58:18.543489" elapsed="0.000448"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:18.543258" elapsed="0.000728"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.542693" elapsed="0.001323"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.544555" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:18.544193" elapsed="0.000387"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:18.544882" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:18.544650" elapsed="0.000288"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.545431" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:58:18.545122" elapsed="0.000334"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:18.544962" elapsed="0.000528"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.544632" elapsed="0.000879"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:58:18.545661" elapsed="0.000338"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:58:18.546454" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:18.546179" elapsed="0.000300"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:58:18.546728" elapsed="0.002242"/>
</kw>
<arg>${response}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:58:18.533754" elapsed="0.015277"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:58:18.549224" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:58:18.549102" elapsed="0.000167"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.549084" elapsed="0.000206"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:58:18.551761" level="INFO">${text_normalized} = </msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:58:18.549437" elapsed="0.002350"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:58:18.551834" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:58:18.551985" level="INFO">${response_text} = </msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>data=${data}</arg>
<arg>content_type=${content_type}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>POST data to given URI, check status code and return response text.
${content_type} and ${accept} are mandatory Python objects with headers to use.
If ${normalize_json}, normalize text before returning.</doc>
<status status="PASS" start="2026-04-08T00:58:18.481612" elapsed="0.070398"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:58:18.552113" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:58:18.552290" level="INFO">${response_text} = </msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>extension=json</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>content_type=${HEADERS_YANG_JSON}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>endline=${\n}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve URI and data from folder, call Post_To_Uri, return response text.</doc>
<status status="PASS" start="2026-04-08T00:58:18.094432" elapsed="0.457883"/>
</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=response</arg>
<arg>mapping=${mapping}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:18.552654" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:18.552420" elapsed="0.000302"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.552403" elapsed="0.000343"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:58:18.552779" elapsed="0.000025"/>
</return>
<arg>folder=${VAR_DIR}/add-group-2</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<arg>iterations=${iter}</arg>
<doc>Add arguments sensible for JSON data, return Post_Templated response text.
Optionally, verification against response.json (no iteration) is called.
Only subset of JSON data is verified and returned if JMES path is specified in
file ${folder}/jmespath.expr.
Response status code must be one of values from ${explicit_status_codes} if specified or one of set
created from all positive HTTP status codes together with ${additional_allowed_status_codes}.</doc>
<status status="PASS" start="2026-04-08T00:58:18.091839" elapsed="0.461060"/>
</kw>
<kw name="Post_As_Json_Templated" owner="TemplatedRequests">
<kw name="Post_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.595907" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow.vanadium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:58:18.595537" elapsed="0.000399"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:58:18.596697" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-flow.vanadium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:58:18.596456" elapsed="0.000311">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-flow.vanadium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-08T00:58:18.596860" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:58:18.596101" elapsed="0.000783"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.597457" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:58:18.597051" elapsed="0.000434"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T00:58:18.597780" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-flow/location.uri"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-flow/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-08T00:58:18.597987" level="INFO">${template} = /rests/data/opendaylight-inventory:nodes/node=$NODE/flow-node-inventory:table=0
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T00:58:18.597648" elapsed="0.000365"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.598438" level="INFO">/rests/data/opendaylight-inventory:nodes/node=$NODE/flow-node-inventory:table=0
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:18.598192" elapsed="0.000291"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.599473" level="INFO">mapping: {'NODE': 'openflow:1'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:18.599216" elapsed="0.000302"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.599946" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-08T00:58:18.599680" elapsed="0.000293"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.600893" level="INFO">${value} = openflow:1</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-08T00:58:18.600358" elapsed="0.000561"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-08T00:58:18.602038" level="INFO">${encoded} = openflow%3A1</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-08T00:58:18.601576" elapsed="0.000503"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-08T00:58:18.602214" elapsed="0.000032"/>
</return>
<msg time="2026-04-08T00:58:18.602434" level="INFO">${encoded_value} = openflow%3A1</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-08T00:58:18.601106" elapsed="0.001354"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:58:18.602663" elapsed="0.000750"/>
</kw>
<var name="${key}">NODE</var>
<var name="${value}">openflow:1</var>
<status status="PASS" start="2026-04-08T00:58:18.600217" elapsed="0.003241"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-08T00:58:18.600028" elapsed="0.003466"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-08T00:58:18.603538" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:58:18.603695" level="INFO">${mapping_to_use} = {'NODE': 'openflow%3A1'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-08T00:58:18.598840" elapsed="0.004880"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:18.598551" elapsed="0.005199"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:18.603924" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:18.603775" elapsed="0.000205"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.598533" elapsed="0.005467"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.604702" level="INFO">${final_text} = /rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:18.604142" elapsed="0.000588"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T00:58:18.604779" elapsed="0.000028"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow/${file_name}.</doc>
<status status="PASS" start="2026-04-08T00:58:18.594891" elapsed="0.010009"/>
</kw>
<msg time="2026-04-08T00:58:18.604953" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:58:18.582499" elapsed="0.022502"/>
</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-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:18.617338" 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-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:18.629463" 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-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:18.641696" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:18.641896" elapsed="0.000022"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:18.642072" elapsed="0.000021"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:18.642453" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:18.642307" elapsed="0.000202"/>
</branch>
<status status="NOT RUN" start="2026-04-08T00:58:18.642293" elapsed="0.000239"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:18.642673" elapsed="0.000021"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:18.642842" elapsed="0.000020"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:18.643049" elapsed="0.000034"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-08T00:58:18.642263" elapsed="0.000854"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-08T00:58:18.642149" elapsed="0.000994"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:18.643306" elapsed="0.000021"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-08T00:58:18.643381" elapsed="0.000015"/>
</return>
<msg time="2026-04-08T00:58:18.643497" level="INFO">${uri} = /rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one 100 times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-08T00:58:18.578339" elapsed="0.065184"/>
</kw>
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:58:18.654454" elapsed="0.000333"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.667871" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow.vanadium/post_data.prolog.json</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:58:18.667500" elapsed="0.000400"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:58:18.668632" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-flow.vanadium/post_data.prolog.json' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:58:18.668418" elapsed="0.000278">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-flow.vanadium/post_data.prolog.json' does not exist.</status>
</kw>
<msg time="2026-04-08T00:58:18.668796" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:58:18.668063" elapsed="0.000757"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.669377" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow/post_data.prolog.json</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:58:18.668983" elapsed="0.000421"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T00:58:18.669697" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-flow/post_data.prolog.json"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-flow/post_data.prolog.json&lt;/a&gt;'.</msg>
<msg time="2026-04-08T00:58:18.669834" level="INFO">${template} = {
  "flow": [
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T00:58:18.669565" elapsed="0.000294"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.670269" level="INFO">{
  "flow": [
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:18.670014" elapsed="0.000298"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="NOT RUN" start="2026-04-08T00:58:18.670663" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:18.670380" elapsed="0.000339"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.671241" level="INFO">${mapping_to_use} = {'NODE': 'openflow:1'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:58:18.670887" elapsed="0.000381"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:18.670743" elapsed="0.000561"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.670361" elapsed="0.000964"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.671886" level="INFO">${final_text} = {
  "flow": [</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:18.671470" elapsed="0.000442"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T00:58:18.671958" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:58:18.672104" level="INFO">${prolog} = {
  "flow": [</msg>
<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-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow/${file_name}.</doc>
<status status="PASS" start="2026-04-08T00:58:18.666855" elapsed="0.005274"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.685569" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow.vanadium/post_data.epilog.json</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:58:18.685195" elapsed="0.000402"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:58:18.686309" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-flow.vanadium/post_data.epilog.json' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:58:18.686092" elapsed="0.000281">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-flow.vanadium/post_data.epilog.json' does not exist.</status>
</kw>
<msg time="2026-04-08T00:58:18.686464" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:58:18.685759" elapsed="0.000729"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.687026" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow/post_data.epilog.json</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:58:18.686651" elapsed="0.000401"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T00:58:18.687393" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-flow/post_data.epilog.json"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-flow/post_data.epilog.json&lt;/a&gt;'.</msg>
<msg time="2026-04-08T00:58:18.687520" level="INFO">${template} =   ]
}
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T00:58:18.687258" elapsed="0.000286"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.687938" level="INFO">  ]
}
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:18.687700" elapsed="0.000281"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="NOT RUN" start="2026-04-08T00:58:18.688348" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:18.688048" elapsed="0.000357"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.688860" level="INFO">${mapping_to_use} = {'NODE': 'openflow:1'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:58:18.688574" elapsed="0.000312"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:18.688428" elapsed="0.000492"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.688029" elapsed="0.000912"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.689519" level="INFO">${final_text} =   ]
}</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:18.689090" elapsed="0.000455"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T00:58:18.689592" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:58:18.689740" level="INFO">${epilog} =   ]
}</msg>
<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-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow/${file_name}.</doc>
<status status="PASS" start="2026-04-08T00:58:18.684557" elapsed="0.005207"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.702823" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow.vanadium/data.item.json</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:58:18.702454" elapsed="0.000397"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:58:18.703599" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-flow.vanadium/data.item.json' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:58:18.703375" elapsed="0.000288">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-flow.vanadium/data.item.json' does not exist.</status>
</kw>
<msg time="2026-04-08T00:58:18.703755" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:58:18.703012" elapsed="0.000767"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.704357" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow/data.item.json</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:58:18.703946" elapsed="0.000438"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T00:58:18.704677" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-flow/data.item.json"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-flow/data.item.json&lt;/a&gt;'.</msg>
<msg time="2026-04-08T00:58:18.704906" level="INFO">${template} =         {
          "id": "${i}",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048...</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T00:58:18.704546" elapsed="0.000388"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.705366" level="INFO">        {
          "id": "${i}",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.${i}/32"
          },
          "flow-name": "Flow-${i}",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": ${i}
                      }
                    }
                  ]
                }
              }
            ]
          }
        }
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:18.705092" elapsed="0.000331"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="NOT RUN" start="2026-04-08T00:58:18.705777" elapsed="0.000029"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:18.705491" elapsed="0.000350"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.706319" level="INFO">${mapping_to_use} = {'NODE': 'openflow:1'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:58:18.706012" elapsed="0.000333"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:18.705866" elapsed="0.000515"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.705473" elapsed="0.000929"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.707145" level="INFO">${final_text} =         {
          "id": "${i}",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048...</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:18.706549" elapsed="0.000664"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T00:58:18.707266" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:58:18.707420" level="INFO">${item_template} =         {
          "id": "${i}",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048...</msg>
<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-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow/${file_name}.</doc>
<status status="PASS" start="2026-04-08T00:58:18.701898" elapsed="0.005549"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.707851" level="INFO">${items} = []</msg>
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:58:18.707612" elapsed="0.000264"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.708420" level="INFO">${separator} = ,
</msg>
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:58:18.708041" elapsed="0.000405"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:18.709055" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:18.708820" elapsed="0.000290"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.708806" elapsed="0.000328"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.709645" level="INFO">${j} = 1</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:18.709294" elapsed="0.000377"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.710839" level="INFO">${item} =         {
          "id": "1",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
  ...</msg>
<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="PASS" start="2026-04-08T00:58:18.709827" elapsed="0.001040"/>
</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="PASS" start="2026-04-08T00:58:18.711027" elapsed="0.000262"/>
</kw>
<var name="${iteration}">1</var>
<status status="PASS" start="2026-04-08T00:58:18.708775" elapsed="0.002554"/>
</iter>
<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="PASS" start="2026-04-08T00:58:18.711755" elapsed="0.000183"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:18.711514" elapsed="0.000463"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.711499" elapsed="0.000502"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.712512" level="INFO">${j} = 2</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:18.712145" elapsed="0.000393"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.713308" level="INFO">${item} =         {
          "id": "2",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
  ...</msg>
<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="PASS" start="2026-04-08T00:58:18.712695" elapsed="0.000642"/>
</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="PASS" start="2026-04-08T00:58:18.713493" elapsed="0.000183"/>
</kw>
<var name="${iteration}">2</var>
<status status="PASS" start="2026-04-08T00:58:18.711469" elapsed="0.002278"/>
</iter>
<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="PASS" start="2026-04-08T00:58:18.714189" elapsed="0.000187"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:18.713925" elapsed="0.000490"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.713910" elapsed="0.000529"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.714931" level="INFO">${j} = 3</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:18.714584" elapsed="0.000373"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.715774" level="INFO">${item} =         {
          "id": "3",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
  ...</msg>
<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="PASS" start="2026-04-08T00:58:18.715113" elapsed="0.000689"/>
</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="PASS" start="2026-04-08T00:58:18.715960" elapsed="0.000190"/>
</kw>
<var name="${iteration}">3</var>
<status status="PASS" start="2026-04-08T00:58:18.713880" elapsed="0.002324"/>
</iter>
<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="PASS" start="2026-04-08T00:58:18.716623" elapsed="0.000181"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:18.716384" elapsed="0.000458"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.716370" elapsed="0.000496"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.717376" level="INFO">${j} = 4</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:18.717014" elapsed="0.000388"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.718149" level="INFO">${item} =         {
          "id": "4",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
  ...</msg>
<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="PASS" start="2026-04-08T00:58:18.717558" elapsed="0.000634"/>
</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="PASS" start="2026-04-08T00:58:18.718349" elapsed="0.000180"/>
</kw>
<var name="${iteration}">4</var>
<status status="PASS" start="2026-04-08T00:58:18.716339" elapsed="0.002227"/>
</iter>
<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="PASS" start="2026-04-08T00:58:18.718982" elapsed="0.000196"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:18.718745" elapsed="0.000483"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.718730" elapsed="0.000523"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.719764" level="INFO">${j} = 5</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:18.719414" elapsed="0.000376"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.720554" level="INFO">${item} =         {
          "id": "5",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
  ...</msg>
<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="PASS" start="2026-04-08T00:58:18.719947" elapsed="0.000635"/>
</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="PASS" start="2026-04-08T00:58:18.720739" elapsed="0.000179"/>
</kw>
<var name="${iteration}">5</var>
<status status="PASS" start="2026-04-08T00:58:18.718700" elapsed="0.002255"/>
</iter>
<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="PASS" start="2026-04-08T00:58:18.721384" elapsed="0.000180"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:18.721130" elapsed="0.000472"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.721116" elapsed="0.000510"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.722122" level="INFO">${j} = 6</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:18.721770" elapsed="0.000377"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.722909" level="INFO">${item} =         {
          "id": "6",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
  ...</msg>
<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="PASS" start="2026-04-08T00:58:18.722319" elapsed="0.000618"/>
</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="PASS" start="2026-04-08T00:58:18.723092" elapsed="0.000229"/>
</kw>
<var name="${iteration}">6</var>
<status status="PASS" start="2026-04-08T00:58:18.721086" elapsed="0.002273"/>
</iter>
<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="PASS" start="2026-04-08T00:58:18.723770" elapsed="0.000182"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:18.723535" elapsed="0.000456"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.723521" elapsed="0.000494"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.724521" level="INFO">${j} = 7</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:18.724171" elapsed="0.000376"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.725308" level="INFO">${item} =         {
          "id": "7",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
  ...</msg>
<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="PASS" start="2026-04-08T00:58:18.724701" elapsed="0.000668"/>
</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="PASS" start="2026-04-08T00:58:18.725530" elapsed="0.000182"/>
</kw>
<var name="${iteration}">7</var>
<status status="PASS" start="2026-04-08T00:58:18.723490" elapsed="0.002260"/>
</iter>
<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="PASS" start="2026-04-08T00:58:18.726178" elapsed="0.000186"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:18.725927" elapsed="0.000476"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.725912" elapsed="0.000514"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.726919" level="INFO">${j} = 8</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:18.726571" elapsed="0.000374"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.727882" level="INFO">${item} =         {
          "id": "8",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
  ...</msg>
<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="PASS" start="2026-04-08T00:58:18.727102" elapsed="0.000809"/>
</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="PASS" start="2026-04-08T00:58:18.728069" elapsed="0.000200"/>
</kw>
<var name="${iteration}">8</var>
<status status="PASS" start="2026-04-08T00:58:18.725882" elapsed="0.002425"/>
</iter>
<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="PASS" start="2026-04-08T00:58:18.728721" elapsed="0.000182"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:18.728484" elapsed="0.000458"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.728469" elapsed="0.000497"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.729480" level="INFO">${j} = 9</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:18.729111" elapsed="0.000395"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.730276" level="INFO">${item} =         {
          "id": "9",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
  ...</msg>
<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="PASS" start="2026-04-08T00:58:18.729665" elapsed="0.000639"/>
</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="PASS" start="2026-04-08T00:58:18.730461" elapsed="0.000180"/>
</kw>
<var name="${iteration}">9</var>
<status status="PASS" start="2026-04-08T00:58:18.728439" elapsed="0.002240"/>
</iter>
<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="PASS" start="2026-04-08T00:58:18.731090" elapsed="0.000233"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:18.730855" elapsed="0.000508"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.730840" elapsed="0.000547"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.731878" level="INFO">${j} = 10</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:18.731530" elapsed="0.000373"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.732673" level="INFO">${item} =         {
          "id": "10",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:18.732064" elapsed="0.000638"/>
</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="PASS" start="2026-04-08T00:58:18.732857" elapsed="0.000184"/>
</kw>
<var name="${iteration}">10</var>
<status status="PASS" start="2026-04-08T00:58:18.730810" elapsed="0.002268"/>
</iter>
<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="PASS" start="2026-04-08T00:58:18.733508" elapsed="0.000180"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:18.733273" elapsed="0.000453"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.733259" elapsed="0.000491"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.734260" level="INFO">${j} = 11</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:18.733894" elapsed="0.000393"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.735038" level="INFO">${item} =         {
          "id": "11",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:18.734447" elapsed="0.000620"/>
</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="PASS" start="2026-04-08T00:58:18.735247" elapsed="0.000183"/>
</kw>
<var name="${iteration}">11</var>
<status status="PASS" start="2026-04-08T00:58:18.733228" elapsed="0.002240"/>
</iter>
<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="PASS" start="2026-04-08T00:58:18.735879" elapsed="0.000187"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:18.735642" elapsed="0.000461"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.735628" elapsed="0.000499"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.736633" level="INFO">${j} = 12</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:18.736286" elapsed="0.000407"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.737472" level="INFO">${item} =         {
          "id": "12",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:18.736855" elapsed="0.000646"/>
</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="PASS" start="2026-04-08T00:58:18.737658" elapsed="0.000181"/>
</kw>
<var name="${iteration}">12</var>
<status status="PASS" start="2026-04-08T00:58:18.735598" elapsed="0.002278"/>
</iter>
<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="PASS" start="2026-04-08T00:58:18.738306" elapsed="0.000184"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:18.738052" elapsed="0.000476"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.738038" elapsed="0.000514"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.739048" level="INFO">${j} = 13</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:18.738696" elapsed="0.000378"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.739865" level="INFO">${item} =         {
          "id": "13",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:18.739266" elapsed="0.000628"/>
</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="PASS" start="2026-04-08T00:58:18.740050" elapsed="0.000197"/>
</kw>
<var name="${iteration}">13</var>
<status status="PASS" start="2026-04-08T00:58:18.738008" elapsed="0.002277"/>
</iter>
<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="PASS" start="2026-04-08T00:58:18.740698" elapsed="0.000180"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:18.740464" elapsed="0.000452"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.740449" elapsed="0.000492"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.741448" level="INFO">${j} = 14</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:18.741083" elapsed="0.000399"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.742265" level="INFO">${item} =         {
          "id": "14",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:18.741644" elapsed="0.000650"/>
</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="PASS" start="2026-04-08T00:58:18.742455" elapsed="0.000180"/>
</kw>
<var name="${iteration}">14</var>
<status status="PASS" start="2026-04-08T00:58:18.740419" elapsed="0.002253"/>
</iter>
<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="PASS" start="2026-04-08T00:58:18.743124" elapsed="0.000212"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:18.742852" elapsed="0.000531"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.742837" elapsed="0.000571"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.744017" level="INFO">${j} = 15</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:18.743551" elapsed="0.000492"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.744810" level="INFO">${item} =         {
          "id": "15",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:18.744214" elapsed="0.000624"/>
</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="PASS" start="2026-04-08T00:58:18.744998" elapsed="0.000197"/>
</kw>
<var name="${iteration}">15</var>
<status status="PASS" start="2026-04-08T00:58:18.742806" elapsed="0.002428"/>
</iter>
<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="PASS" start="2026-04-08T00:58:18.745644" elapsed="0.000184"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:18.745409" elapsed="0.000457"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.745395" elapsed="0.000495"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.746394" level="INFO">${j} = 16</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:18.746031" elapsed="0.000389"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.747186" level="INFO">${item} =         {
          "id": "16",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:18.746574" elapsed="0.000641"/>
</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="PASS" start="2026-04-08T00:58:18.747408" elapsed="0.000182"/>
</kw>
<var name="${iteration}">16</var>
<status status="PASS" start="2026-04-08T00:58:18.745364" elapsed="0.002264"/>
</iter>
<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="PASS" start="2026-04-08T00:58:18.748074" elapsed="0.000200"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:18.747803" elapsed="0.000510"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.747788" elapsed="0.000549"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.748826" level="INFO">${j} = 17</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:18.748481" elapsed="0.000371"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.749638" level="INFO">${item} =         {
          "id": "17",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:18.749008" elapsed="0.000658"/>
</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="PASS" start="2026-04-08T00:58:18.749821" elapsed="0.000181"/>
</kw>
<var name="${iteration}">17</var>
<status status="PASS" start="2026-04-08T00:58:18.747758" elapsed="0.002282"/>
</iter>
<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="PASS" start="2026-04-08T00:58:18.750470" elapsed="0.000179"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:18.750234" elapsed="0.000453"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.750220" elapsed="0.000491"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.751217" level="INFO">${j} = 18</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:18.750854" elapsed="0.000389"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.752016" level="INFO">${item} =         {
          "id": "18",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:18.751421" elapsed="0.000622"/>
</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="PASS" start="2026-04-08T00:58:18.752224" elapsed="0.000180"/>
</kw>
<var name="${iteration}">18</var>
<status status="PASS" start="2026-04-08T00:58:18.750188" elapsed="0.002253"/>
</iter>
<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="PASS" start="2026-04-08T00:58:18.752854" elapsed="0.000181"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:18.752618" elapsed="0.000455"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.752604" elapsed="0.000493"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.753604" level="INFO">${j} = 19</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:18.753258" elapsed="0.000371"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.754391" level="INFO">${item} =         {
          "id": "19",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:18.753783" elapsed="0.000636"/>
</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="PASS" start="2026-04-08T00:58:18.754573" elapsed="0.000177"/>
</kw>
<var name="${iteration}">19</var>
<status status="PASS" start="2026-04-08T00:58:18.752574" elapsed="0.002212"/>
</iter>
<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="PASS" start="2026-04-08T00:58:18.755214" elapsed="0.000212"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:18.754962" elapsed="0.000502"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.754947" elapsed="0.000541"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.755974" level="INFO">${j} = 20</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:18.755631" elapsed="0.000369"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.756760" level="INFO">${item} =         {
          "id": "20",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:18.756167" elapsed="0.000620"/>
</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="PASS" start="2026-04-08T00:58:18.756943" elapsed="0.000179"/>
</kw>
<var name="${iteration}">20</var>
<status status="PASS" start="2026-04-08T00:58:18.754917" elapsed="0.002258"/>
</iter>
<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="PASS" start="2026-04-08T00:58:18.757676" elapsed="0.000181"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:18.757351" elapsed="0.000544"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.757337" elapsed="0.000583"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.758440" level="INFO">${j} = 21</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:18.758066" elapsed="0.000401"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.759232" level="INFO">${item} =         {
          "id": "21",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:18.758622" elapsed="0.000638"/>
</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="PASS" start="2026-04-08T00:58:18.759473" elapsed="0.000183"/>
</kw>
<var name="${iteration}">21</var>
<status status="PASS" start="2026-04-08T00:58:18.757307" elapsed="0.002387"/>
</iter>
<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="PASS" start="2026-04-08T00:58:18.760107" elapsed="0.000320"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:18.759870" elapsed="0.000596"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.759855" elapsed="0.000636"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.760990" level="INFO">${j} = 22</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:18.760635" elapsed="0.000382"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.761795" level="INFO">${item} =         {
          "id": "22",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:18.761190" elapsed="0.000633"/>
</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="PASS" start="2026-04-08T00:58:18.761983" elapsed="0.000196"/>
</kw>
<var name="${iteration}">22</var>
<status status="PASS" start="2026-04-08T00:58:18.759825" elapsed="0.002394"/>
</iter>
<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="PASS" start="2026-04-08T00:58:18.762631" elapsed="0.000180"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:18.762397" elapsed="0.000452"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.762382" elapsed="0.000491"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.763408" level="INFO">${j} = 23</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:18.763015" elapsed="0.000420"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.764200" level="INFO">${item} =         {
          "id": "23",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:18.763591" elapsed="0.000638"/>
</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="PASS" start="2026-04-08T00:58:18.764385" elapsed="0.000181"/>
</kw>
<var name="${iteration}">23</var>
<status status="PASS" start="2026-04-08T00:58:18.762352" elapsed="0.002252"/>
</iter>
<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="PASS" start="2026-04-08T00:58:18.765013" elapsed="0.000196"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:18.764780" elapsed="0.000467"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.764766" elapsed="0.000506"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.765757" level="INFO">${j} = 24</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:18.765414" elapsed="0.000369"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.766544" level="INFO">${item} =         {
          "id": "24",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:18.765936" elapsed="0.000635"/>
</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="PASS" start="2026-04-08T00:58:18.766725" elapsed="0.000179"/>
</kw>
<var name="${iteration}">24</var>
<status status="PASS" start="2026-04-08T00:58:18.764736" elapsed="0.002204"/>
</iter>
<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="PASS" start="2026-04-08T00:58:18.767389" elapsed="0.000182"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:18.767117" elapsed="0.000492"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.767103" elapsed="0.000529"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.768119" level="INFO">${j} = 25</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:18.767775" elapsed="0.000369"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.768913" level="INFO">${item} =         {
          "id": "25",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:18.768315" elapsed="0.000626"/>
</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="PASS" start="2026-04-08T00:58:18.769095" elapsed="0.000197"/>
</kw>
<var name="${iteration}">25</var>
<status status="PASS" start="2026-04-08T00:58:18.767074" elapsed="0.002255"/>
</iter>
<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="PASS" start="2026-04-08T00:58:18.769741" elapsed="0.000180"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:18.769504" elapsed="0.000455"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.769489" elapsed="0.000493"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.770493" level="INFO">${j} = 26</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:18.770125" elapsed="0.000394"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.771350" level="INFO">${item} =         {
          "id": "26",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:18.770710" elapsed="0.000669"/>
</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="PASS" start="2026-04-08T00:58:18.771536" elapsed="0.000183"/>
</kw>
<var name="${iteration}">26</var>
<status status="PASS" start="2026-04-08T00:58:18.769459" elapsed="0.002297"/>
</iter>
<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="PASS" start="2026-04-08T00:58:18.772184" elapsed="0.000184"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:18.771933" elapsed="0.000474"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.771919" elapsed="0.000512"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.772919" level="INFO">${j} = 27</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:18.772574" elapsed="0.000371"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.773717" level="INFO">${item} =         {
          "id": "27",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:18.773100" elapsed="0.000646"/>
</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="PASS" start="2026-04-08T00:58:18.773910" elapsed="0.000181"/>
</kw>
<var name="${iteration}">27</var>
<status status="PASS" start="2026-04-08T00:58:18.771889" elapsed="0.002240"/>
</iter>
<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="PASS" start="2026-04-08T00:58:18.774557" elapsed="0.000180"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:18.774323" elapsed="0.000452"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.774308" elapsed="0.000491"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.775314" level="INFO">${j} = 28</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:18.774941" elapsed="0.000400"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.776096" level="INFO">${item} =         {
          "id": "28",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:18.775505" elapsed="0.000619"/>
</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="PASS" start="2026-04-08T00:58:18.776295" elapsed="0.000180"/>
</kw>
<var name="${iteration}">28</var>
<status status="PASS" start="2026-04-08T00:58:18.774278" elapsed="0.002234"/>
</iter>
<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="PASS" start="2026-04-08T00:58:18.777033" elapsed="0.000199"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:18.776688" elapsed="0.000583"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.776673" elapsed="0.000622"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.777785" level="INFO">${j} = 29</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:18.777439" elapsed="0.000372"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.778579" level="INFO">${item} =         {
          "id": "29",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:18.777965" elapsed="0.000642"/>
</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="PASS" start="2026-04-08T00:58:18.778762" elapsed="0.000181"/>
</kw>
<var name="${iteration}">29</var>
<status status="PASS" start="2026-04-08T00:58:18.776642" elapsed="0.002340"/>
</iter>
<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="PASS" start="2026-04-08T00:58:18.779437" elapsed="0.000184"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:18.779170" elapsed="0.000489"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.779140" elapsed="0.000543"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.780189" level="INFO">${j} = 30</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:18.779827" elapsed="0.000389"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.780961" level="INFO">${item} =         {
          "id": "30",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:18.780372" elapsed="0.000617"/>
</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="PASS" start="2026-04-08T00:58:18.781146" elapsed="0.000197"/>
</kw>
<var name="${iteration}">30</var>
<status status="PASS" start="2026-04-08T00:58:18.779110" elapsed="0.002271"/>
</iter>
<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="PASS" start="2026-04-08T00:58:18.781789" elapsed="0.000181"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:18.781555" elapsed="0.000495"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.781541" elapsed="0.000536"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.782596" level="INFO">${j} = 31</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:18.782243" elapsed="0.000379"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.783407" level="INFO">${item} =         {
          "id": "31",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:18.782779" elapsed="0.000662"/>
</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="PASS" start="2026-04-08T00:58:18.783598" elapsed="0.000181"/>
</kw>
<var name="${iteration}">31</var>
<status status="PASS" start="2026-04-08T00:58:18.781511" elapsed="0.002306"/>
</iter>
<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="PASS" start="2026-04-08T00:58:18.784248" elapsed="0.000183"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:18.783991" elapsed="0.000481"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.783977" elapsed="0.000520"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.784989" level="INFO">${j} = 32</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:18.784642" elapsed="0.000372"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.785785" level="INFO">${item} =         {
          "id": "32",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:18.785186" elapsed="0.000626"/>
</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="PASS" start="2026-04-08T00:58:18.785968" elapsed="0.000201"/>
</kw>
<var name="${iteration}">32</var>
<status status="PASS" start="2026-04-08T00:58:18.783947" elapsed="0.002261"/>
</iter>
<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="PASS" start="2026-04-08T00:58:18.786617" elapsed="0.000182"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:18.786382" elapsed="0.000454"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.786368" elapsed="0.000492"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.787473" level="INFO">${j} = 33</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:18.787002" elapsed="0.000498"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.788286" level="INFO">${item} =         {
          "id": "33",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:18.787658" elapsed="0.000658"/>
</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="PASS" start="2026-04-08T00:58:18.788472" elapsed="0.000181"/>
</kw>
<var name="${iteration}">33</var>
<status status="PASS" start="2026-04-08T00:58:18.786338" elapsed="0.002352"/>
</iter>
<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="PASS" start="2026-04-08T00:58:18.789102" elapsed="0.000206"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:18.788865" elapsed="0.000481"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.788850" elapsed="0.000521"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.789868" level="INFO">${j} = 34</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:18.789522" elapsed="0.000372"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.790662" level="INFO">${item} =         {
          "id": "34",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:18.790052" elapsed="0.000638"/>
</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="PASS" start="2026-04-08T00:58:18.790845" elapsed="0.000180"/>
</kw>
<var name="${iteration}">34</var>
<status status="PASS" start="2026-04-08T00:58:18.788820" elapsed="0.002242"/>
</iter>
<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="PASS" start="2026-04-08T00:58:18.791506" elapsed="0.000181"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:18.791254" elapsed="0.000471"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.791238" elapsed="0.000512"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.792258" level="INFO">${j} = 35</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:18.791892" elapsed="0.000392"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.793035" level="INFO">${item} =         {
          "id": "35",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:18.792441" elapsed="0.000622"/>
</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="PASS" start="2026-04-08T00:58:18.793238" elapsed="0.000183"/>
</kw>
<var name="${iteration}">35</var>
<status status="PASS" start="2026-04-08T00:58:18.791208" elapsed="0.002294"/>
</iter>
<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="PASS" start="2026-04-08T00:58:18.794046" elapsed="0.000202"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:18.793789" elapsed="0.000499"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.793667" elapsed="0.000645"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.794808" level="INFO">${j} = 36</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:18.794457" elapsed="0.000377"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.795631" level="INFO">${item} =         {
          "id": "36",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:18.794989" elapsed="0.000671"/>
</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="PASS" start="2026-04-08T00:58:18.795817" elapsed="0.000180"/>
</kw>
<var name="${iteration}">36</var>
<status status="PASS" start="2026-04-08T00:58:18.793636" elapsed="0.002398"/>
</iter>
<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="PASS" start="2026-04-08T00:58:18.796465" elapsed="0.000182"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:18.796228" elapsed="0.000457"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.796213" elapsed="0.000496"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.797214" level="INFO">${j} = 37</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:18.796852" elapsed="0.000389"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.797991" level="INFO">${item} =         {
          "id": "37",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:18.797396" elapsed="0.000623"/>
</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="PASS" start="2026-04-08T00:58:18.798191" elapsed="0.000183"/>
</kw>
<var name="${iteration}">37</var>
<status status="PASS" start="2026-04-08T00:58:18.796181" elapsed="0.002230"/>
</iter>
<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="PASS" start="2026-04-08T00:58:18.798820" elapsed="0.000180"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:18.798585" elapsed="0.000452"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.798571" elapsed="0.000490"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.799581" level="INFO">${j} = 38</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:18.799217" elapsed="0.000391"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.800379" level="INFO">${item} =         {
          "id": "38",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:18.799763" elapsed="0.000644"/>
</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="PASS" start="2026-04-08T00:58:18.800560" elapsed="0.000180"/>
</kw>
<var name="${iteration}">38</var>
<status status="PASS" start="2026-04-08T00:58:18.798540" elapsed="0.002237"/>
</iter>
<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="PASS" start="2026-04-08T00:58:18.801202" elapsed="0.000183"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:18.800950" elapsed="0.000474"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.800935" elapsed="0.000513"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.801938" level="INFO">${j} = 39</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:18.801592" elapsed="0.000371"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.802727" level="INFO">${item} =         {
          "id": "39",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:18.802118" elapsed="0.000637"/>
</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="PASS" start="2026-04-08T00:58:18.802911" elapsed="0.000180"/>
</kw>
<var name="${iteration}">39</var>
<status status="PASS" start="2026-04-08T00:58:18.800906" elapsed="0.002222"/>
</iter>
<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="PASS" start="2026-04-08T00:58:18.803587" elapsed="0.000181"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:18.803323" elapsed="0.000483"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.803306" elapsed="0.000525"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.804334" level="INFO">${j} = 40</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:18.803972" elapsed="0.000389"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.805115" level="INFO">${item} =         {
          "id": "40",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:18.804514" elapsed="0.000677"/>
</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="PASS" start="2026-04-08T00:58:18.805352" elapsed="0.000188"/>
</kw>
<var name="${iteration}">40</var>
<status status="PASS" start="2026-04-08T00:58:18.803275" elapsed="0.002303"/>
</iter>
<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="PASS" start="2026-04-08T00:58:18.805987" elapsed="0.000196"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:18.805751" elapsed="0.000471"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.805737" elapsed="0.000509"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.806736" level="INFO">${j} = 41</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:18.806390" elapsed="0.000373"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.807546" level="INFO">${item} =         {
          "id": "41",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:18.806916" elapsed="0.000659"/>
</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="PASS" start="2026-04-08T00:58:18.807731" elapsed="0.000180"/>
</kw>
<var name="${iteration}">41</var>
<status status="PASS" start="2026-04-08T00:58:18.805707" elapsed="0.002241"/>
</iter>
<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="PASS" start="2026-04-08T00:58:18.808375" elapsed="0.000181"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:18.808122" elapsed="0.000472"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.808108" elapsed="0.000510"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.809104" level="INFO">${j} = 42</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:18.808760" elapsed="0.000370"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.809891" level="INFO">${item} =         {
          "id": "42",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:18.809300" elapsed="0.000619"/>
</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="PASS" start="2026-04-08T00:58:18.810073" elapsed="0.000197"/>
</kw>
<var name="${iteration}">42</var>
<status status="PASS" start="2026-04-08T00:58:18.808078" elapsed="0.002229"/>
</iter>
<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="PASS" start="2026-04-08T00:58:18.811463" elapsed="0.000199"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:18.811184" elapsed="0.000517"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.810470" elapsed="0.001256"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.812242" level="INFO">${j} = 43</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:18.811871" elapsed="0.000397"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.813023" level="INFO">${item} =         {
          "id": "43",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:18.812425" elapsed="0.000626"/>
</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="PASS" start="2026-04-08T00:58:18.813223" elapsed="0.000186"/>
</kw>
<var name="${iteration}">43</var>
<status status="PASS" start="2026-04-08T00:58:18.810439" elapsed="0.003007"/>
</iter>
<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="PASS" start="2026-04-08T00:58:18.813861" elapsed="0.000181"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:18.813624" elapsed="0.000455"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.813609" elapsed="0.000493"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.814608" level="INFO">${j} = 44</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:18.814260" elapsed="0.000374"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.815420" level="INFO">${item} =         {
          "id": "44",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:18.814788" elapsed="0.000666"/>
</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="PASS" start="2026-04-08T00:58:18.815734" elapsed="0.000185"/>
</kw>
<var name="${iteration}">44</var>
<status status="PASS" start="2026-04-08T00:58:18.813579" elapsed="0.002378"/>
</iter>
<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="PASS" start="2026-04-08T00:58:18.816387" elapsed="0.000182"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:18.816132" elapsed="0.000474"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.816118" elapsed="0.000512"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.817121" level="INFO">${j} = 45</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:18.816773" elapsed="0.000428"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.817961" level="INFO">${item} =         {
          "id": "45",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:18.817360" elapsed="0.000629"/>
</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="PASS" start="2026-04-08T00:58:18.818142" elapsed="0.000200"/>
</kw>
<var name="${iteration}">45</var>
<status status="PASS" start="2026-04-08T00:58:18.816088" elapsed="0.002291"/>
</iter>
<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="PASS" start="2026-04-08T00:58:18.818788" elapsed="0.000181"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:18.818553" elapsed="0.000454"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.818539" elapsed="0.000492"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.819560" level="INFO">${j} = 46</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:18.819187" elapsed="0.000398"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.820356" level="INFO">${item} =         {
          "id": "46",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:18.819740" elapsed="0.000644"/>
</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="PASS" start="2026-04-08T00:58:18.820539" elapsed="0.000180"/>
</kw>
<var name="${iteration}">46</var>
<status status="PASS" start="2026-04-08T00:58:18.818509" elapsed="0.002247"/>
</iter>
<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="PASS" start="2026-04-08T00:58:18.821188" elapsed="0.000184"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:18.820932" elapsed="0.000477"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.820917" elapsed="0.000517"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.821926" level="INFO">${j} = 47</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:18.821577" elapsed="0.000375"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.822777" level="INFO">${item} =         {
          "id": "47",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:18.822106" elapsed="0.000700"/>
</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="PASS" start="2026-04-08T00:58:18.822962" elapsed="0.000182"/>
</kw>
<var name="${iteration}">47</var>
<status status="PASS" start="2026-04-08T00:58:18.820887" elapsed="0.002319"/>
</iter>
<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="PASS" start="2026-04-08T00:58:18.823641" elapsed="0.000180"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:18.823396" elapsed="0.000463"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.823380" elapsed="0.000503"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.824394" level="INFO">${j} = 48</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:18.824031" elapsed="0.000388"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.825180" level="INFO">${item} =         {
          "id": "48",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:18.824572" elapsed="0.000637"/>
</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="PASS" start="2026-04-08T00:58:18.825364" elapsed="0.000183"/>
</kw>
<var name="${iteration}">48</var>
<status status="PASS" start="2026-04-08T00:58:18.823341" elapsed="0.002243"/>
</iter>
<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="PASS" start="2026-04-08T00:58:18.825995" elapsed="0.000202"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:18.825760" elapsed="0.000476"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.825745" elapsed="0.000515"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.826757" level="INFO">${j} = 49</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:18.826406" elapsed="0.000377"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.827599" level="INFO">${item} =         {
          "id": "49",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:18.826939" elapsed="0.000688"/>
</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="PASS" start="2026-04-08T00:58:18.827785" elapsed="0.000180"/>
</kw>
<var name="${iteration}">49</var>
<status status="PASS" start="2026-04-08T00:58:18.825715" elapsed="0.002288"/>
</iter>
<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="PASS" start="2026-04-08T00:58:18.828596" elapsed="0.000188"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:18.828313" elapsed="0.000510"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.828183" elapsed="0.000665"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.829367" level="INFO">${j} = 50</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:18.828993" elapsed="0.000401"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.830150" level="INFO">${item} =         {
          "id": "50",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:18.829549" elapsed="0.000646"/>
</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="PASS" start="2026-04-08T00:58:18.830353" elapsed="0.000183"/>
</kw>
<var name="${iteration}">50</var>
<status status="PASS" start="2026-04-08T00:58:18.828137" elapsed="0.002437"/>
</iter>
<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="PASS" start="2026-04-08T00:58:18.830993" elapsed="0.000205"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:18.830753" elapsed="0.000484"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.830739" elapsed="0.000523"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.831775" level="INFO">${j} = 51</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:18.831418" elapsed="0.000383"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.832577" level="INFO">${item} =         {
          "id": "51",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:18.831957" elapsed="0.000648"/>
</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="PASS" start="2026-04-08T00:58:18.832761" elapsed="0.000182"/>
</kw>
<var name="${iteration}">51</var>
<status status="PASS" start="2026-04-08T00:58:18.830708" elapsed="0.002277"/>
</iter>
<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="PASS" start="2026-04-08T00:58:18.833418" elapsed="0.000183"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:18.833179" elapsed="0.000460"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.833149" elapsed="0.000514"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.834174" level="INFO">${j} = 52</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:18.833807" elapsed="0.000394"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.834954" level="INFO">${item} =         {
          "id": "52",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:18.834357" elapsed="0.000625"/>
</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="PASS" start="2026-04-08T00:58:18.835137" elapsed="0.000198"/>
</kw>
<var name="${iteration}">52</var>
<status status="PASS" start="2026-04-08T00:58:18.833119" elapsed="0.002253"/>
</iter>
<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="PASS" start="2026-04-08T00:58:18.835816" elapsed="0.000182"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:18.835579" elapsed="0.000456"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.835565" elapsed="0.000495"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.836568" level="INFO">${j} = 53</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:18.836220" elapsed="0.000373"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.837374" level="INFO">${item} =         {
          "id": "53",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:18.836748" elapsed="0.000654"/>
</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="PASS" start="2026-04-08T00:58:18.837558" elapsed="0.000181"/>
</kw>
<var name="${iteration}">53</var>
<status status="PASS" start="2026-04-08T00:58:18.835534" elapsed="0.002243"/>
</iter>
<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="PASS" start="2026-04-08T00:58:18.838208" elapsed="0.000184"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:18.837955" elapsed="0.000475"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.837941" elapsed="0.000513"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.838943" level="INFO">${j} = 54</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:18.838598" elapsed="0.000371"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.839748" level="INFO">${item} =         {
          "id": "54",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:18.839122" elapsed="0.000654"/>
</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="PASS" start="2026-04-08T00:58:18.839981" elapsed="0.000221"/>
</kw>
<var name="${iteration}">54</var>
<status status="PASS" start="2026-04-08T00:58:18.837910" elapsed="0.002331"/>
</iter>
<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="PASS" start="2026-04-08T00:58:18.840660" elapsed="0.000182"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:18.840421" elapsed="0.000459"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.840406" elapsed="0.000499"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.841430" level="INFO">${j} = 55</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:18.841062" elapsed="0.000394"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.842230" level="INFO">${item} =         {
          "id": "55",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:18.841613" elapsed="0.000646"/>
</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="PASS" start="2026-04-08T00:58:18.842418" elapsed="0.000182"/>
</kw>
<var name="${iteration}">55</var>
<status status="PASS" start="2026-04-08T00:58:18.840375" elapsed="0.002263"/>
</iter>
<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="PASS" start="2026-04-08T00:58:18.843050" elapsed="0.000199"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:18.842815" elapsed="0.000473"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.842800" elapsed="0.000512"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.843837" level="INFO">${j} = 56</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:18.843488" elapsed="0.000375"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.844630" level="INFO">${item} =         {
          "id": "56",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:18.844018" elapsed="0.000640"/>
</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="PASS" start="2026-04-08T00:58:18.844812" elapsed="0.000185"/>
</kw>
<var name="${iteration}">56</var>
<status status="PASS" start="2026-04-08T00:58:18.842770" elapsed="0.002264"/>
</iter>
<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="PASS" start="2026-04-08T00:58:18.845585" elapsed="0.000184"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:18.845341" elapsed="0.000466"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.845213" elapsed="0.000619"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.846346" level="INFO">${j} = 57</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:18.845978" elapsed="0.000394"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.847124" level="INFO">${item} =         {
          "id": "57",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:18.846527" elapsed="0.000639"/>
</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="PASS" start="2026-04-08T00:58:18.847325" elapsed="0.000215"/>
</kw>
<var name="${iteration}">57</var>
<status status="PASS" start="2026-04-08T00:58:18.845180" elapsed="0.002399"/>
</iter>
<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="PASS" start="2026-04-08T00:58:18.847992" elapsed="0.000199"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:18.847755" elapsed="0.000475"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.847740" elapsed="0.000514"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.848748" level="INFO">${j} = 58</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:18.848398" elapsed="0.000376"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.849551" level="INFO">${item} =         {
          "id": "58",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:18.848930" elapsed="0.000650"/>
</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="PASS" start="2026-04-08T00:58:18.849736" elapsed="0.000182"/>
</kw>
<var name="${iteration}">58</var>
<status status="PASS" start="2026-04-08T00:58:18.847710" elapsed="0.002245"/>
</iter>
<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="PASS" start="2026-04-08T00:58:18.850385" elapsed="0.000183"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:18.850132" elapsed="0.000474"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.850117" elapsed="0.000512"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.851121" level="INFO">${j} = 59</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:18.850773" elapsed="0.000373"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.851993" level="INFO">${item} =         {
          "id": "59",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:18.851362" elapsed="0.000659"/>
</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="PASS" start="2026-04-08T00:58:18.852201" elapsed="0.000185"/>
</kw>
<var name="${iteration}">59</var>
<status status="PASS" start="2026-04-08T00:58:18.850086" elapsed="0.002338"/>
</iter>
<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="PASS" start="2026-04-08T00:58:18.852836" elapsed="0.000183"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:18.852600" elapsed="0.000460"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.852585" elapsed="0.000501"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.853596" level="INFO">${j} = 60</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:18.853246" elapsed="0.000376"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.854405" level="INFO">${item} =         {
          "id": "60",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:18.853777" elapsed="0.000657"/>
</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="PASS" start="2026-04-08T00:58:18.854589" elapsed="0.000181"/>
</kw>
<var name="${iteration}">60</var>
<status status="PASS" start="2026-04-08T00:58:18.852554" elapsed="0.002253"/>
</iter>
<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="PASS" start="2026-04-08T00:58:18.855234" elapsed="0.000184"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:18.854983" elapsed="0.000494"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.854968" elapsed="0.000534"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.855997" level="INFO">${j} = 61</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:18.855651" elapsed="0.000371"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.856786" level="INFO">${item} =         {
          "id": "61",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:18.856191" elapsed="0.000623"/>
</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="PASS" start="2026-04-08T00:58:18.856972" elapsed="0.000179"/>
</kw>
<var name="${iteration}">61</var>
<status status="PASS" start="2026-04-08T00:58:18.854938" elapsed="0.002265"/>
</iter>
<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="PASS" start="2026-04-08T00:58:18.857618" elapsed="0.000181"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:18.857379" elapsed="0.000457"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.857364" elapsed="0.000495"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.858366" level="INFO">${j} = 62</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:18.858002" elapsed="0.000390"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.859143" level="INFO">${item} =         {
          "id": "62",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:18.858546" elapsed="0.000645"/>
</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="PASS" start="2026-04-08T00:58:18.859347" elapsed="0.000207"/>
</kw>
<var name="${iteration}">62</var>
<status status="PASS" start="2026-04-08T00:58:18.857334" elapsed="0.002258"/>
</iter>
<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="PASS" start="2026-04-08T00:58:18.860005" elapsed="0.000198"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:18.859768" elapsed="0.000473"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.859753" elapsed="0.000513"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.860757" level="INFO">${j} = 63</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:18.860411" elapsed="0.000372"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.861551" level="INFO">${item} =         {
          "id": "63",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:18.860938" elapsed="0.000641"/>
</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="PASS" start="2026-04-08T00:58:18.861733" elapsed="0.000181"/>
</kw>
<var name="${iteration}">63</var>
<status status="PASS" start="2026-04-08T00:58:18.859722" elapsed="0.002229"/>
</iter>
<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="PASS" start="2026-04-08T00:58:18.862517" elapsed="0.000182"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:18.862261" elapsed="0.000554"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.862116" elapsed="0.000729"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.863374" level="INFO">${j} = 64</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:18.862995" elapsed="0.000406"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.864203" level="INFO">${item} =         {
          "id": "64",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:18.863585" elapsed="0.000647"/>
</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="PASS" start="2026-04-08T00:58:18.864389" elapsed="0.000179"/>
</kw>
<var name="${iteration}">64</var>
<status status="PASS" start="2026-04-08T00:58:18.862085" elapsed="0.002521"/>
</iter>
<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="PASS" start="2026-04-08T00:58:18.865027" elapsed="0.000200"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:18.864784" elapsed="0.000482"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.864768" elapsed="0.000523"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.865781" level="INFO">${j} = 65</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:18.865435" elapsed="0.000372"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.866581" level="INFO">${item} =         {
          "id": "65",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:18.865962" elapsed="0.000648"/>
</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="PASS" start="2026-04-08T00:58:18.866765" elapsed="0.000181"/>
</kw>
<var name="${iteration}">65</var>
<status status="PASS" start="2026-04-08T00:58:18.864737" elapsed="0.002245"/>
</iter>
<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="PASS" start="2026-04-08T00:58:18.867412" elapsed="0.000212"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:18.867173" elapsed="0.000490"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.867143" elapsed="0.000544"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.868245" level="INFO">${j} = 66</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:18.867872" elapsed="0.000399"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.869031" level="INFO">${item} =         {
          "id": "66",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:18.868428" elapsed="0.000632"/>
</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="PASS" start="2026-04-08T00:58:18.869234" elapsed="0.000183"/>
</kw>
<var name="${iteration}">66</var>
<status status="PASS" start="2026-04-08T00:58:18.867112" elapsed="0.002342"/>
</iter>
<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="PASS" start="2026-04-08T00:58:18.869866" elapsed="0.000181"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:18.869630" elapsed="0.000455"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.869616" elapsed="0.000493"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.870616" level="INFO">${j} = 67</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:18.870269" elapsed="0.000373"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.871434" level="INFO">${item} =         {
          "id": "67",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:18.870794" elapsed="0.000694"/>
</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="PASS" start="2026-04-08T00:58:18.871648" elapsed="0.000180"/>
</kw>
<var name="${iteration}">67</var>
<status status="PASS" start="2026-04-08T00:58:18.869585" elapsed="0.002280"/>
</iter>
<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="PASS" start="2026-04-08T00:58:18.872293" elapsed="0.000182"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:18.872041" elapsed="0.000471"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.872026" elapsed="0.000509"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.873022" level="INFO">${j} = 68</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:18.872677" elapsed="0.000371"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.873816" level="INFO">${item} =         {
          "id": "68",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:18.873219" elapsed="0.000625"/>
</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="PASS" start="2026-04-08T00:58:18.873996" elapsed="0.000205"/>
</kw>
<var name="${iteration}">68</var>
<status status="PASS" start="2026-04-08T00:58:18.871996" elapsed="0.002278"/>
</iter>
<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="PASS" start="2026-04-08T00:58:18.874687" elapsed="0.000182"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:18.874453" elapsed="0.000453"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.874438" elapsed="0.000492"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.875437" level="INFO">${j} = 69</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:18.875072" elapsed="0.000423"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.876283" level="INFO">${item} =         {
          "id": "69",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:18.875655" elapsed="0.000656"/>
</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="PASS" start="2026-04-08T00:58:18.876467" elapsed="0.000181"/>
</kw>
<var name="${iteration}">69</var>
<status status="PASS" start="2026-04-08T00:58:18.874408" elapsed="0.002277"/>
</iter>
<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="PASS" start="2026-04-08T00:58:18.877094" elapsed="0.000206"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:18.876860" elapsed="0.000478"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.876845" elapsed="0.000517"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.877849" level="INFO">${j} = 70</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:18.877503" elapsed="0.000371"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.878638" level="INFO">${item} =         {
          "id": "70",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:18.878026" elapsed="0.000640"/>
</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="PASS" start="2026-04-08T00:58:18.878819" elapsed="0.000181"/>
</kw>
<var name="${iteration}">70</var>
<status status="PASS" start="2026-04-08T00:58:18.876816" elapsed="0.002220"/>
</iter>
<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="PASS" start="2026-04-08T00:58:18.879630" elapsed="0.000189"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:18.879339" elapsed="0.000518"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.879214" elapsed="0.000668"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.880393" level="INFO">${j} = 71</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:18.880026" elapsed="0.000393"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.881195" level="INFO">${item} =         {
          "id": "71",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:18.880575" elapsed="0.000649"/>
</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="PASS" start="2026-04-08T00:58:18.881381" elapsed="0.000181"/>
</kw>
<var name="${iteration}">71</var>
<status status="PASS" start="2026-04-08T00:58:18.879182" elapsed="0.002418"/>
</iter>
<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="PASS" start="2026-04-08T00:58:18.882010" elapsed="0.000200"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:18.881774" elapsed="0.000476"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.881760" elapsed="0.000514"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.882765" level="INFO">${j} = 72</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:18.882419" elapsed="0.000372"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.883592" level="INFO">${item} =         {
          "id": "72",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:18.882946" elapsed="0.000673"/>
</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="PASS" start="2026-04-08T00:58:18.883776" elapsed="0.000180"/>
</kw>
<var name="${iteration}">72</var>
<status status="PASS" start="2026-04-08T00:58:18.881730" elapsed="0.002262"/>
</iter>
<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="PASS" start="2026-04-08T00:58:18.884428" elapsed="0.000180"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:18.884189" elapsed="0.000457"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.884173" elapsed="0.000498"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.885183" level="INFO">${j} = 73</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:18.884815" elapsed="0.000395"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.885958" level="INFO">${item} =         {
          "id": "73",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:18.885365" elapsed="0.000654"/>
</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="PASS" start="2026-04-08T00:58:18.886198" elapsed="0.000185"/>
</kw>
<var name="${iteration}">73</var>
<status status="PASS" start="2026-04-08T00:58:18.884128" elapsed="0.002292"/>
</iter>
<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="PASS" start="2026-04-08T00:58:18.886838" elapsed="0.000185"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:18.886595" elapsed="0.000466"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.886581" elapsed="0.000505"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.887628" level="INFO">${j} = 74</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:18.887246" elapsed="0.000409"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.888430" level="INFO">${item} =         {
          "id": "74",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:18.887811" elapsed="0.000647"/>
</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="PASS" start="2026-04-08T00:58:18.888614" elapsed="0.000223"/>
</kw>
<var name="${iteration}">74</var>
<status status="PASS" start="2026-04-08T00:58:18.886551" elapsed="0.002333"/>
</iter>
<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="PASS" start="2026-04-08T00:58:18.889322" elapsed="0.000181"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:18.889065" elapsed="0.000477"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.889050" elapsed="0.000515"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.890067" level="INFO">${j} = 75</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:18.889709" elapsed="0.000383"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.890862" level="INFO">${item} =         {
          "id": "75",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:18.890264" elapsed="0.000626"/>
</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="PASS" start="2026-04-08T00:58:18.891045" elapsed="0.000196"/>
</kw>
<var name="${iteration}">75</var>
<status status="PASS" start="2026-04-08T00:58:18.889019" elapsed="0.002259"/>
</iter>
<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="PASS" start="2026-04-08T00:58:18.891790" elapsed="0.000181"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:18.891526" elapsed="0.000484"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.891479" elapsed="0.000556"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.892609" level="INFO">${j} = 76</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:18.892199" elapsed="0.000436"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.893412" level="INFO">${item} =         {
          "id": "76",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:18.892792" elapsed="0.000649"/>
</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="PASS" start="2026-04-08T00:58:18.893594" elapsed="0.000181"/>
</kw>
<var name="${iteration}">76</var>
<status status="PASS" start="2026-04-08T00:58:18.891445" elapsed="0.002367"/>
</iter>
<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="PASS" start="2026-04-08T00:58:18.894242" elapsed="0.000182"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:18.893987" elapsed="0.000475"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.893973" elapsed="0.000512"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.894972" level="INFO">${j} = 77</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:18.894627" elapsed="0.000371"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.895802" level="INFO">${item} =         {
          "id": "77",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:18.895151" elapsed="0.000680"/>
</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="PASS" start="2026-04-08T00:58:18.895986" elapsed="0.000196"/>
</kw>
<var name="${iteration}">77</var>
<status status="PASS" start="2026-04-08T00:58:18.893943" elapsed="0.002277"/>
</iter>
<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="PASS" start="2026-04-08T00:58:18.896751" elapsed="0.000182"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:18.896508" elapsed="0.000463"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.896383" elapsed="0.000612"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.897504" level="INFO">${j} = 78</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:18.897138" elapsed="0.000425"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.898346" level="INFO">${item} =         {
          "id": "78",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:18.897724" elapsed="0.000650"/>
</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="PASS" start="2026-04-08T00:58:18.898531" elapsed="0.000181"/>
</kw>
<var name="${iteration}">78</var>
<status status="PASS" start="2026-04-08T00:58:18.896352" elapsed="0.002397"/>
</iter>
<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="PASS" start="2026-04-08T00:58:18.899175" elapsed="0.000185"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:18.898924" elapsed="0.000474"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.898910" elapsed="0.000512"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.899953" level="INFO">${j} = 79</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:18.899601" elapsed="0.000378"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.900756" level="INFO">${item} =         {
          "id": "79",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:18.900139" elapsed="0.000646"/>
</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="PASS" start="2026-04-08T00:58:18.900940" elapsed="0.000182"/>
</kw>
<var name="${iteration}">79</var>
<status status="PASS" start="2026-04-08T00:58:18.898879" elapsed="0.002295"/>
</iter>
<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="PASS" start="2026-04-08T00:58:18.901589" elapsed="0.000182"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:18.901352" elapsed="0.000457"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.901338" elapsed="0.000495"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.902343" level="INFO">${j} = 80</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:18.901977" elapsed="0.000392"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.903120" level="INFO">${item} =         {
          "id": "80",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:18.902525" elapsed="0.000623"/>
</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="PASS" start="2026-04-08T00:58:18.903321" elapsed="0.000197"/>
</kw>
<var name="${iteration}">80</var>
<status status="PASS" start="2026-04-08T00:58:18.901308" elapsed="0.002249"/>
</iter>
<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="PASS" start="2026-04-08T00:58:18.903979" elapsed="0.000196"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:18.903738" elapsed="0.000476"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.903723" elapsed="0.000515"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.904729" level="INFO">${j} = 81</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:18.904383" elapsed="0.000372"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.905527" level="INFO">${item} =         {
          "id": "81",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:18.904908" elapsed="0.000647"/>
</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="PASS" start="2026-04-08T00:58:18.905709" elapsed="0.000179"/>
</kw>
<var name="${iteration}">81</var>
<status status="PASS" start="2026-04-08T00:58:18.903693" elapsed="0.002231"/>
</iter>
<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="PASS" start="2026-04-08T00:58:18.906355" elapsed="0.000180"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:18.906103" elapsed="0.000470"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.906088" elapsed="0.000510"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.907084" level="INFO">${j} = 82</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:18.906741" elapsed="0.000368"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.907897" level="INFO">${item} =         {
          "id": "82",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:18.907278" elapsed="0.000647"/>
</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="PASS" start="2026-04-08T00:58:18.908080" elapsed="0.000196"/>
</kw>
<var name="${iteration}">82</var>
<status status="PASS" start="2026-04-08T00:58:18.906054" elapsed="0.002260"/>
</iter>
<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="PASS" start="2026-04-08T00:58:18.908767" elapsed="0.000186"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:18.908488" elapsed="0.000503"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.908473" elapsed="0.000543"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.909525" level="INFO">${j} = 83</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:18.909174" elapsed="0.000378"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.910322" level="INFO">${item} =         {
          "id": "83",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:18.909709" elapsed="0.000642"/>
</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="PASS" start="2026-04-08T00:58:18.910506" elapsed="0.000186"/>
</kw>
<var name="${iteration}">83</var>
<status status="PASS" start="2026-04-08T00:58:18.908443" elapsed="0.002296"/>
</iter>
<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="PASS" start="2026-04-08T00:58:18.911200" elapsed="0.000215"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:18.910930" elapsed="0.000526"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.910914" elapsed="0.000567"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.912012" level="INFO">${j} = 84</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:18.911662" elapsed="0.000377"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.912811" level="INFO">${item} =         {
          "id": "84",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:18.912209" elapsed="0.000631"/>
</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="PASS" start="2026-04-08T00:58:18.912998" elapsed="0.000197"/>
</kw>
<var name="${iteration}">84</var>
<status status="PASS" start="2026-04-08T00:58:18.910882" elapsed="0.002351"/>
</iter>
<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="PASS" start="2026-04-08T00:58:18.913761" elapsed="0.000183"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:18.913518" elapsed="0.000464"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.913396" elapsed="0.000611"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.914512" level="INFO">${j} = 85</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:18.914149" elapsed="0.000388"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.915373" level="INFO">${item} =         {
          "id": "85",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:18.914692" elapsed="0.000710"/>
</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="PASS" start="2026-04-08T00:58:18.915585" elapsed="0.000213"/>
</kw>
<var name="${iteration}">85</var>
<status status="PASS" start="2026-04-08T00:58:18.913366" elapsed="0.002472"/>
</iter>
<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="PASS" start="2026-04-08T00:58:18.916268" elapsed="0.000183"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:18.916014" elapsed="0.000475"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.915999" elapsed="0.000514"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.917001" level="INFO">${j} = 86</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:18.916657" elapsed="0.000370"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.917795" level="INFO">${item} =         {
          "id": "86",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:18.917201" elapsed="0.000621"/>
</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="PASS" start="2026-04-08T00:58:18.917979" elapsed="0.000195"/>
</kw>
<var name="${iteration}">86</var>
<status status="PASS" start="2026-04-08T00:58:18.915969" elapsed="0.002244"/>
</iter>
<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="PASS" start="2026-04-08T00:58:18.918660" elapsed="0.000181"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:18.918424" elapsed="0.000456"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.918401" elapsed="0.000503"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.919413" level="INFO">${j} = 87</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:18.919051" elapsed="0.000389"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.920241" level="INFO">${item} =         {
          "id": "87",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:18.919623" elapsed="0.000646"/>
</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="PASS" start="2026-04-08T00:58:18.920467" elapsed="0.000181"/>
</kw>
<var name="${iteration}">87</var>
<status status="PASS" start="2026-04-08T00:58:18.918367" elapsed="0.002318"/>
</iter>
<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="PASS" start="2026-04-08T00:58:18.921273" elapsed="0.000186"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:18.920878" elapsed="0.000619"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.920862" elapsed="0.000660"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.922026" level="INFO">${j} = 88</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:18.921665" elapsed="0.000387"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.922862" level="INFO">${item} =         {
          "id": "88",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:18.922241" elapsed="0.000649"/>
</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="PASS" start="2026-04-08T00:58:18.923050" elapsed="0.000200"/>
</kw>
<var name="${iteration}">88</var>
<status status="PASS" start="2026-04-08T00:58:18.920816" elapsed="0.002471"/>
</iter>
<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="PASS" start="2026-04-08T00:58:18.923725" elapsed="0.000187"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:18.923463" elapsed="0.000487"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.923449" elapsed="0.000525"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.924481" level="INFO">${j} = 89</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:18.924119" elapsed="0.000388"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.925268" level="INFO">${item} =         {
          "id": "89",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:18.924660" elapsed="0.000636"/>
</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="PASS" start="2026-04-08T00:58:18.925450" elapsed="0.000180"/>
</kw>
<var name="${iteration}">89</var>
<status status="PASS" start="2026-04-08T00:58:18.923419" elapsed="0.002247"/>
</iter>
<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="PASS" start="2026-04-08T00:58:18.926074" elapsed="0.000197"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:18.925840" elapsed="0.000469"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.925826" elapsed="0.000507"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.926819" level="INFO">${j} = 90</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:18.926475" elapsed="0.000370"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.927711" level="INFO">${item} =         {
          "id": "90",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:18.926998" elapsed="0.000743"/>
</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="PASS" start="2026-04-08T00:58:18.927898" elapsed="0.000187"/>
</kw>
<var name="${iteration}">90</var>
<status status="PASS" start="2026-04-08T00:58:18.925796" elapsed="0.002325"/>
</iter>
<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="PASS" start="2026-04-08T00:58:18.928556" elapsed="0.000180"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:18.928320" elapsed="0.000453"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.928306" elapsed="0.000491"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.929298" level="INFO">${j} = 91</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:18.928936" elapsed="0.000388"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.930070" level="INFO">${item} =         {
          "id": "91",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:18.929478" elapsed="0.000620"/>
</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="PASS" start="2026-04-08T00:58:18.930266" elapsed="0.000180"/>
</kw>
<var name="${iteration}">91</var>
<status status="PASS" start="2026-04-08T00:58:18.928275" elapsed="0.002207"/>
</iter>
<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="PASS" start="2026-04-08T00:58:18.931006" elapsed="0.000200"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:18.930765" elapsed="0.000479"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.930641" elapsed="0.000627"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.931782" level="INFO">${j} = 92</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:18.931412" elapsed="0.000396"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.932614" level="INFO">${item} =         {
          "id": "92",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:18.931996" elapsed="0.000646"/>
</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="PASS" start="2026-04-08T00:58:18.932797" elapsed="0.000180"/>
</kw>
<var name="${iteration}">92</var>
<status status="PASS" start="2026-04-08T00:58:18.930611" elapsed="0.002403"/>
</iter>
<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="PASS" start="2026-04-08T00:58:18.933444" elapsed="0.000181"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:18.933206" elapsed="0.000457"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.933191" elapsed="0.000496"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.934192" level="INFO">${j} = 93</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:18.933831" elapsed="0.000388"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.935012" level="INFO">${item} =         {
          "id": "93",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:18.934407" elapsed="0.000633"/>
</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="PASS" start="2026-04-08T00:58:18.935213" elapsed="0.000184"/>
</kw>
<var name="${iteration}">93</var>
<status status="PASS" start="2026-04-08T00:58:18.933145" elapsed="0.002290"/>
</iter>
<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="PASS" start="2026-04-08T00:58:18.935896" elapsed="0.000182"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:18.935657" elapsed="0.000459"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.935643" elapsed="0.000497"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.936647" level="INFO">${j} = 94</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:18.936300" elapsed="0.000373"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.937441" level="INFO">${item} =         {
          "id": "94",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:18.936830" elapsed="0.000639"/>
</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="PASS" start="2026-04-08T00:58:18.937625" elapsed="0.000181"/>
</kw>
<var name="${iteration}">94</var>
<status status="PASS" start="2026-04-08T00:58:18.935605" elapsed="0.002238"/>
</iter>
<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="PASS" start="2026-04-08T00:58:18.938273" elapsed="0.000182"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:18.938022" elapsed="0.000470"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.938008" elapsed="0.000508"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.939003" level="INFO">${j} = 95</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:18.938658" elapsed="0.000371"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.939828" level="INFO">${item} =         {
          "id": "95",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:18.939197" elapsed="0.000661"/>
</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="PASS" start="2026-04-08T00:58:18.940023" elapsed="0.000221"/>
</kw>
<var name="${iteration}">95</var>
<status status="PASS" start="2026-04-08T00:58:18.937976" elapsed="0.002308"/>
</iter>
<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="PASS" start="2026-04-08T00:58:18.940703" elapsed="0.000196"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:18.940462" elapsed="0.000476"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.940447" elapsed="0.000515"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.941516" level="INFO">${j} = 96</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:18.941114" elapsed="0.000428"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.942314" level="INFO">${item} =         {
          "id": "96",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:18.941697" elapsed="0.000645"/>
</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="PASS" start="2026-04-08T00:58:18.942495" elapsed="0.000181"/>
</kw>
<var name="${iteration}">96</var>
<status status="PASS" start="2026-04-08T00:58:18.940417" elapsed="0.002297"/>
</iter>
<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="PASS" start="2026-04-08T00:58:18.943121" elapsed="0.000197"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:18.942889" elapsed="0.000498"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.942873" elapsed="0.000541"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.943936" level="INFO">${j} = 97</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:18.943559" elapsed="0.000404"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.944731" level="INFO">${item} =         {
          "id": "97",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:18.944118" elapsed="0.000642"/>
</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="PASS" start="2026-04-08T00:58:18.944916" elapsed="0.000181"/>
</kw>
<var name="${iteration}">97</var>
<status status="PASS" start="2026-04-08T00:58:18.942843" elapsed="0.002291"/>
</iter>
<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="PASS" start="2026-04-08T00:58:18.945561" elapsed="0.000181"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:18.945327" elapsed="0.000452"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.945312" elapsed="0.000491"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.946307" level="INFO">${j} = 98</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:18.945946" elapsed="0.000387"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.947084" level="INFO">${item} =         {
          "id": "98",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:18.946488" elapsed="0.000624"/>
</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="PASS" start="2026-04-08T00:58:18.947281" elapsed="0.000181"/>
</kw>
<var name="${iteration}">98</var>
<status status="PASS" start="2026-04-08T00:58:18.945281" elapsed="0.002218"/>
</iter>
<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="PASS" start="2026-04-08T00:58:18.948046" elapsed="0.000202"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:18.947803" elapsed="0.000483"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.947681" elapsed="0.000629"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.948804" level="INFO">${j} = 99</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:18.948454" elapsed="0.000376"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.949598" level="INFO">${item} =         {
          "id": "99",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:18.948985" elapsed="0.000641"/>
</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="PASS" start="2026-04-08T00:58:18.949787" elapsed="0.000220"/>
</kw>
<var name="${iteration}">99</var>
<status status="PASS" start="2026-04-08T00:58:18.947651" elapsed="0.002395"/>
</iter>
<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="PASS" start="2026-04-08T00:58:18.950474" elapsed="0.000181"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:18.950237" elapsed="0.000456"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.950222" elapsed="0.000496"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.951254" level="INFO">${j} = 100</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:18.950881" elapsed="0.000399"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.952044" level="INFO">${item} =         {
          "id": "100",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
...</msg>
<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="PASS" start="2026-04-08T00:58:18.951436" elapsed="0.000637"/>
</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="PASS" start="2026-04-08T00:58:18.952246" elapsed="0.000181"/>
</kw>
<var name="${iteration}">100</var>
<status status="PASS" start="2026-04-08T00:58:18.950190" elapsed="0.002274"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="PASS" start="2026-04-08T00:58:18.708502" elapsed="0.243993"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.953762" level="INFO">${final_text} = {
  "flow": [
        {
          "id": "1",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "...</msg>
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:58:18.952656" elapsed="0.001135"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T00:58:18.953850" elapsed="0.000033"/>
</return>
<msg time="2026-04-08T00:58:18.954007" level="INFO">${data} = {
  "flow": [
        {
          "id": "1",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "...</msg>
<var>${data}</var>
<arg>folder=${folder}</arg>
<arg>name_prefix=post_</arg>
<arg>base_name=${base_name}</arg>
<arg>extension=${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>endline=${endline}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one 100 times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-08T00:58:18.653593" elapsed="0.300440"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:58:18.955372" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-flow/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:58:18.955102" elapsed="0.000337">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-flow/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-08T00:58:18.955530" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:58:18.954767" elapsed="0.000787"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:18.955904" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:18.955657" elapsed="0.000303"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.956466" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:58:18.956178" elapsed="0.000313"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:18.955984" elapsed="0.000542"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.955628" elapsed="0.000920"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.958848" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:58:18.956700" elapsed="0.002175"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-08T00:58:18.958925" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:58:18.959075" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:58:18.954433" elapsed="0.004667"/>
</kw>
<kw name="Post_To_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.960657" level="INFO">/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:18.960411" elapsed="0.000291"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.961089" level="INFO">{
  "flow": [
        {
          "id": "1",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.1/32"
          },
          "flow-name": "Flow-1",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 1
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "2",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.2/32"
          },
          "flow-name": "Flow-2",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 2
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "3",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.3/32"
          },
          "flow-name": "Flow-3",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 3
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "4",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.4/32"
          },
          "flow-name": "Flow-4",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 4
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "5",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.5/32"
          },
          "flow-name": "Flow-5",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 5
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "6",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.6/32"
          },
          "flow-name": "Flow-6",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 6
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "7",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.7/32"
          },
          "flow-name": "Flow-7",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 7
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "8",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.8/32"
          },
          "flow-name": "Flow-8",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 8
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "9",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.9/32"
          },
          "flow-name": "Flow-9",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 9
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "10",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.10/32"
          },
          "flow-name": "Flow-10",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 10
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "11",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.11/32"
          },
          "flow-name": "Flow-11",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 11
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "12",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.12/32"
          },
          "flow-name": "Flow-12",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 12
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "13",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.13/32"
          },
          "flow-name": "Flow-13",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 13
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "14",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.14/32"
          },
          "flow-name": "Flow-14",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 14
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "15",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.15/32"
          },
          "flow-name": "Flow-15",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 15
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "16",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.16/32"
          },
          "flow-name": "Flow-16",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 16
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "17",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.17/32"
          },
          "flow-name": "Flow-17",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 17
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "18",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.18/32"
          },
          "flow-name": "Flow-18",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 18
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "19",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.19/32"
          },
          "flow-name": "Flow-19",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 19
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "20",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.20/32"
          },
          "flow-name": "Flow-20",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 20
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "21",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.21/32"
          },
          "flow-name": "Flow-21",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 21
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "22",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.22/32"
          },
          "flow-name": "Flow-22",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 22
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "23",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.23/32"
          },
          "flow-name": "Flow-23",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 23
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "24",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.24/32"
          },
          "flow-name": "Flow-24",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 24
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "25",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.25/32"
          },
          "flow-name": "Flow-25",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 25
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "26",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.26/32"
          },
          "flow-name": "Flow-26",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 26
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "27",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.27/32"
          },
          "flow-name": "Flow-27",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 27
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "28",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.28/32"
          },
          "flow-name": "Flow-28",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 28
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "29",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.29/32"
          },
          "flow-name": "Flow-29",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 29
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "30",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.30/32"
          },
          "flow-name": "Flow-30",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 30
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "31",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.31/32"
          },
          "flow-name": "Flow-31",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 31
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "32",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.32/32"
          },
          "flow-name": "Flow-32",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 32
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "33",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.33/32"
          },
          "flow-name": "Flow-33",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 33
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "34",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.34/32"
          },
          "flow-name": "Flow-34",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 34
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "35",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.35/32"
          },
          "flow-name": "Flow-35",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 35
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "36",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.36/32"
          },
          "flow-name": "Flow-36",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 36
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "37",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.37/32"
          },
          "flow-name": "Flow-37",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 37
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "38",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.38/32"
          },
          "flow-name": "Flow-38",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 38
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "39",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.39/32"
          },
          "flow-name": "Flow-39",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 39
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "40",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.40/32"
          },
          "flow-name": "Flow-40",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 40
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "41",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.41/32"
          },
          "flow-name": "Flow-41",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 41
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "42",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.42/32"
          },
          "flow-name": "Flow-42",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 42
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "43",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.43/32"
          },
          "flow-name": "Flow-43",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 43
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "44",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.44/32"
          },
          "flow-name": "Flow-44",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 44
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "45",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.45/32"
          },
          "flow-name": "Flow-45",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 45
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "46",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.46/32"
          },
          "flow-name": "Flow-46",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 46
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "47",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.47/32"
          },
          "flow-name": "Flow-47",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 47
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "48",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.48/32"
          },
          "flow-name": "Flow-48",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 48
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "49",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.49/32"
          },
          "flow-name": "Flow-49",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 49
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "50",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.50/32"
          },
          "flow-name": "Flow-50",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 50
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "51",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.51/32"
          },
          "flow-name": "Flow-51",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 51
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "52",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.52/32"
          },
          "flow-name": "Flow-52",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 52
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "53",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.53/32"
          },
          "flow-name": "Flow-53",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 53
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "54",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.54/32"
          },
          "flow-name": "Flow-54",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 54
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "55",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.55/32"
          },
          "flow-name": "Flow-55",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 55
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "56",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.56/32"
          },
          "flow-name": "Flow-56",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 56
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "57",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.57/32"
          },
          "flow-name": "Flow-57",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 57
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "58",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.58/32"
          },
          "flow-name": "Flow-58",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 58
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "59",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.59/32"
          },
          "flow-name": "Flow-59",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 59
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "60",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.60/32"
          },
          "flow-name": "Flow-60",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 60
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "61",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.61/32"
          },
          "flow-name": "Flow-61",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 61
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "62",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.62/32"
          },
          "flow-name": "Flow-62",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 62
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "63",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.63/32"
          },
          "flow-name": "Flow-63",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 63
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "64",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.64/32"
          },
          "flow-name": "Flow-64",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 64
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "65",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.65/32"
          },
          "flow-name": "Flow-65",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 65
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "66",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.66/32"
          },
          "flow-name": "Flow-66",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 66
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "67",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.67/32"
          },
          "flow-name": "Flow-67",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 67
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "68",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.68/32"
          },
          "flow-name": "Flow-68",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 68
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "69",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.69/32"
          },
          "flow-name": "Flow-69",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 69
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "70",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.70/32"
          },
          "flow-name": "Flow-70",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 70
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "71",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.71/32"
          },
          "flow-name": "Flow-71",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 71
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "72",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.72/32"
          },
          "flow-name": "Flow-72",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 72
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "73",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.73/32"
          },
          "flow-name": "Flow-73",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 73
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "74",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.74/32"
          },
          "flow-name": "Flow-74",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 74
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "75",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.75/32"
          },
          "flow-name": "Flow-75",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 75
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "76",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.76/32"
          },
          "flow-name": "Flow-76",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 76
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "77",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.77/32"
          },
          "flow-name": "Flow-77",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 77
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "78",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.78/32"
          },
          "flow-name": "Flow-78",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 78
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "79",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.79/32"
          },
          "flow-name": "Flow-79",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 79
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "80",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.80/32"
          },
          "flow-name": "Flow-80",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 80
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "81",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.81/32"
          },
          "flow-name": "Flow-81",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 81
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "82",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.82/32"
          },
          "flow-name": "Flow-82",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 82
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "83",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.83/32"
          },
          "flow-name": "Flow-83",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 83
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "84",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.84/32"
          },
          "flow-name": "Flow-84",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 84
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "85",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.85/32"
          },
          "flow-name": "Flow-85",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 85
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "86",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.86/32"
          },
          "flow-name": "Flow-86",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 86
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "87",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.87/32"
          },
          "flow-name": "Flow-87",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 87
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "88",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.88/32"
          },
          "flow-name": "Flow-88",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 88
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "89",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.89/32"
          },
          "flow-name": "Flow-89",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 89
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "90",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.90/32"
          },
          "flow-name": "Flow-90",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 90
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "91",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.91/32"
          },
          "flow-name": "Flow-91",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 91
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "92",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.92/32"
          },
          "flow-name": "Flow-92",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 92
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "93",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.93/32"
          },
          "flow-name": "Flow-93",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 93
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "94",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.94/32"
          },
          "flow-name": "Flow-94",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 94
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "95",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.95/32"
          },
          "flow-name": "Flow-95",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 95
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "96",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.96/32"
          },
          "flow-name": "Flow-96",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 96
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "97",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.97/32"
          },
          "flow-name": "Flow-97",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 97
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "98",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.98/32"
          },
          "flow-name": "Flow-98",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 98
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "99",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.99/32"
          },
          "flow-name": "Flow-99",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 99
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "100",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.100/32"
          },
          "flow-name": "Flow-100",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 100
                      }
                    }
                  ]
                }
              }
            ]
          }
        }
  ]
}</msg>
<arg>${data}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:18.960856" elapsed="0.000977"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.962258" level="INFO">{'Content-Type': 'application/json'}</msg>
<arg>${content_type}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:18.961994" elapsed="0.000308"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.962698" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:18.962463" elapsed="0.000278"/>
</kw>
<kw name="Join_Two_Headers" owner="TemplatedRequests">
<kw name="Copy Dictionary" owner="Collections">
<msg time="2026-04-08T00:58:18.963546" level="INFO">${accumulator} = {'Content-Type': 'application/json'}</msg>
<var>${accumulator}</var>
<arg>${first}</arg>
<doc>Returns a copy of the given dictionary.</doc>
<status status="PASS" start="2026-04-08T00:58:18.963355" elapsed="0.000217"/>
</kw>
<kw name="Get Dictionary Items" owner="Collections">
<msg time="2026-04-08T00:58:18.963924" level="INFO">${items_to_add} = []</msg>
<var>${items_to_add}</var>
<arg>${second}</arg>
<doc>Returns items of the given ``dictionary`` as a list.</doc>
<status status="PASS" start="2026-04-08T00:58:18.963754" elapsed="0.000196"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${accumulator}</arg>
<arg>@{items_to_add}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:58:18.964098" elapsed="0.000203"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:18.964696" level="INFO">{'Content-Type': 'application/json'}</msg>
<arg>${accumulator}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:18.964455" elapsed="0.000284"/>
</kw>
<return>
<value>${accumulator}</value>
<status status="PASS" start="2026-04-08T00:58:18.964779" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:58:18.964928" level="INFO">${headers} = {'Content-Type': 'application/json'}</msg>
<var>${headers}</var>
<arg>first=${content_type}</arg>
<arg>second=${accept}</arg>
<doc>Take two dicts, join them, return result. Second argument values take precedence.</doc>
<status status="PASS" start="2026-04-08T00:58:18.962937" elapsed="0.002016"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="POST On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:58:19.030351" level="INFO">POST Request : url=http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node01s3bfo0y24i1es90l47mavglv0.node0', 'Content-Length': '76286', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body={
  "flow": [
        {
          "id": "1",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.1/32"
          },
          "flow-name": "Flow-1",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 1
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "2",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.2/32"
          },
          "flow-name": "Flow-2",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 2
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "3",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.3/32"
          },
          "flow-name": "Flow-3",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 3
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "4",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.4/32"
          },
          "flow-name": "Flow-4",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 4
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "5",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.5/32"
          },
          "flow-name": "Flow-5",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 5
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "6",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.6/32"
          },
          "flow-name": "Flow-6",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 6
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "7",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.7/32"
          },
          "flow-name": "Flow-7",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 7
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "8",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.8/32"
          },
          "flow-name": "Flow-8",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 8
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "9",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.9/32"
          },
          "flow-name": "Flow-9",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 9
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "10",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.10/32"
          },
          "flow-name": "Flow-10",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 10
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "11",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.11/32"
          },
          "flow-name": "Flow-11",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 11
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "12",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.12/32"
          },
          "flow-name": "Flow-12",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 12
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "13",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.13/32"
          },
          "flow-name": "Flow-13",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 13
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "14",
          "priority": 100,
          "table_id": 0,
          "match": ... (set the log level to DEBUG or TRACE to see the full content) 
 </msg>
<msg time="2026-04-08T00:58:19.030737" level="INFO">POST Response : url=http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0 
 status=201, reason=Created 
 headers={'Location': 'http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0/flow=69', 'Content-Length': '0'} 
 body=None 
 </msg>
<msg time="2026-04-08T00:58:19.031004" level="INFO">${response} = &lt;Response [201]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:58:18.967236" elapsed="0.063828"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:18.965190" elapsed="0.066042"/>
</branch>
<branch type="ELSE">
<kw name="POST On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:19.031700" elapsed="0.000106"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:19.031307" elapsed="0.000607"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:18.965005" elapsed="0.066959"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.039638" level="INFO"/>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:19.034418" elapsed="0.005382"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.033881" elapsed="0.006013"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.033839" elapsed="0.006118"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.042631" level="INFO">201</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:19.040286" elapsed="0.002417"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.040046" elapsed="0.002696"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.040029" elapsed="0.002739"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.043366" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:19.042949" elapsed="0.000445"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:19.043709" elapsed="0.000039"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:19.043465" elapsed="0.000340"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.044426" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:58:19.044040" elapsed="0.000417"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.043835" elapsed="0.000663"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.043446" elapsed="0.001077"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.045125" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:19.044724" elapsed="0.000443"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:19.045480" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:19.045241" elapsed="0.000296"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.046032" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:58:19.045724" elapsed="0.000334"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.045561" elapsed="0.000532"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.045223" elapsed="0.000893"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:58:19.046285" elapsed="0.000350"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:58:19.047089" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:19.046801" elapsed="0.000314"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:58:19.047288" elapsed="0.002277"/>
</kw>
<arg>${response}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:58:19.032823" elapsed="0.016808"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:58:19.049815" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:58:19.049705" elapsed="0.000157"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.049686" elapsed="0.000198"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:58:19.052607" level="INFO">${text_normalized} = </msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:58:19.050066" elapsed="0.002568"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:58:19.052685" elapsed="0.000033"/>
</return>
<msg time="2026-04-08T00:58:19.052848" level="INFO">${response_text} = </msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>data=${data}</arg>
<arg>content_type=${content_type}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>POST data to given URI, check status code and return response text.
${content_type} and ${accept} are mandatory Python objects with headers to use.
If ${normalize_json}, normalize text before returning.</doc>
<status status="PASS" start="2026-04-08T00:58:18.959433" elapsed="0.093441"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:58:19.052982" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:58:19.053139" level="INFO">${response_text} = </msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>extension=json</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>content_type=${HEADERS_YANG_JSON}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>endline=${\n}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve URI and data from folder, call Post_To_Uri, return response text.</doc>
<status status="PASS" start="2026-04-08T00:58:18.567406" elapsed="0.485778"/>
</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=response</arg>
<arg>mapping=${mapping}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:19.053566" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:19.053317" elapsed="0.000319"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.053298" elapsed="0.000363"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:58:19.053693" elapsed="0.000025"/>
</return>
<arg>folder=${VAR_DIR}/add-flow</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<arg>iterations=${iter}</arg>
<doc>Add arguments sensible for JSON data, return Post_Templated response text.
Optionally, verification against response.json (no iteration) is called.
Only subset of JSON data is verified and returned if JMES path is specified in
file ${folder}/jmespath.expr.
Response status code must be one of values from ${explicit_status_codes} if specified or one of set
created from all positive HTTP status codes together with ${additional_allowed_status_codes}.</doc>
<status status="PASS" start="2026-04-08T00:58:18.564694" elapsed="0.489123"/>
</kw>
<var name="${switch}">1</var>
<status status="PASS" start="2026-04-08T00:58:17.506370" elapsed="1.547493"/>
</iter>
<iter>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.054545" level="INFO">&amp;{mapping} = { NODE=openflow:2 }</msg>
<var>&amp;{mapping}</var>
<arg>NODE=openflow:${switch}</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-08T00:58:19.054122" elapsed="0.000450"/>
</kw>
<kw name="Post_As_Json_Templated" owner="TemplatedRequests">
<kw name="Post_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.097458" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1.vanadium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:58:19.097061" elapsed="0.000427"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:58:19.098318" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-1.vanadium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:58:19.097988" elapsed="0.000411">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-1.vanadium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-08T00:58:19.098492" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:58:19.097656" elapsed="0.000860"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.099060" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:58:19.098681" elapsed="0.000407"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T00:58:19.099403" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-1/location.uri"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-1/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-08T00:58:19.099562" level="INFO">${template} = /rests/data/opendaylight-inventory:nodes/node=$NODE
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T00:58:19.099265" elapsed="0.000321"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.100007" level="INFO">/rests/data/opendaylight-inventory:nodes/node=$NODE
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:19.099742" elapsed="0.000308"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.101017" level="INFO">mapping: {'NODE': 'openflow:2'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:19.100764" elapsed="0.000296"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.101504" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-08T00:58:19.101238" elapsed="0.000292"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.102458" level="INFO">${value} = openflow:2</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-08T00:58:19.101893" elapsed="0.000592"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-08T00:58:19.103598" level="INFO">${encoded} = openflow%3A2</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-08T00:58:19.103113" elapsed="0.000526"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-08T00:58:19.103803" elapsed="0.000061"/>
</return>
<msg time="2026-04-08T00:58:19.104062" level="INFO">${encoded_value} = openflow%3A2</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-08T00:58:19.102671" elapsed="0.001417"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:58:19.104264" elapsed="0.000485"/>
</kw>
<var name="${key}">NODE</var>
<var name="${value}">openflow:2</var>
<status status="PASS" start="2026-04-08T00:58:19.101755" elapsed="0.003036"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-08T00:58:19.101584" elapsed="0.003243"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-08T00:58:19.104871" elapsed="0.000026"/>
</return>
<msg time="2026-04-08T00:58:19.105025" level="INFO">${mapping_to_use} = {'NODE': 'openflow%3A2'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-08T00:58:19.100442" elapsed="0.004608"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.100123" elapsed="0.004958"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:19.105272" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:19.105106" elapsed="0.000248"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.100102" elapsed="0.005284"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.106083" level="INFO">${final_text} = /rests/data/opendaylight-inventory:nodes/node=openflow%3A2</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:19.105543" elapsed="0.000568"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T00:58:19.106174" elapsed="0.000030"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1/${file_name}.</doc>
<status status="PASS" start="2026-04-08T00:58:19.096444" elapsed="0.009856"/>
</kw>
<msg time="2026-04-08T00:58:19.106354" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:58:19.084197" elapsed="0.022206"/>
</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-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:19.118683" 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-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:19.130846" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:19.142945" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:19.143145" elapsed="0.000035"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:19.143338" elapsed="0.000021"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:19.143700" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:19.143556" elapsed="0.000198"/>
</branch>
<status status="NOT RUN" start="2026-04-08T00:58:19.143543" elapsed="0.000233"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:19.143945" elapsed="0.000024"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:19.144194" elapsed="0.000023"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:19.144366" elapsed="0.000020"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-08T00:58:19.143514" elapsed="0.000905"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-08T00:58:19.143413" elapsed="0.001033"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:19.144593" elapsed="0.000020"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-08T00:58:19.144667" elapsed="0.000014"/>
</return>
<msg time="2026-04-08T00:58:19.144780" level="INFO">${uri} = /rests/data/opendaylight-inventory:nodes/node=openflow%3A2</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one 100 times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-08T00:58:19.080051" elapsed="0.064755"/>
</kw>
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:58:19.155462" elapsed="0.000334"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.168765" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1.vanadium/post_data.prolog.json</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:58:19.168397" elapsed="0.000397"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:58:19.169546" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-1.vanadium/post_data.prolog.json' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:58:19.169334" elapsed="0.000281">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-1.vanadium/post_data.prolog.json' does not exist.</status>
</kw>
<msg time="2026-04-08T00:58:19.169705" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:58:19.168958" elapsed="0.000771"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.170283" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1/post_data.prolog.json</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:58:19.169891" elapsed="0.000419"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T00:58:19.170602" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-1/post_data.prolog.json"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-1/post_data.prolog.json&lt;/a&gt;'.</msg>
<msg time="2026-04-08T00:58:19.170736" level="INFO">${template} = {
  "flow-node-inventory:group": [
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T00:58:19.170470" elapsed="0.000291"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.171176" level="INFO">{
  "flow-node-inventory:group": [
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:19.170917" elapsed="0.000306"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="NOT RUN" start="2026-04-08T00:58:19.171575" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:19.171291" elapsed="0.000342"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.172110" level="INFO">${mapping_to_use} = {'NODE': 'openflow:2'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:58:19.171801" elapsed="0.000336"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.171656" elapsed="0.000531"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.171272" elapsed="0.000938"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.172775" level="INFO">${final_text} = {
  "flow-node-inventory:group": [</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:19.172356" elapsed="0.000445"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T00:58:19.172849" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:58:19.172997" level="INFO">${prolog} = {
  "flow-node-inventory:group": [</msg>
<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-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1/${file_name}.</doc>
<status status="PASS" start="2026-04-08T00:58:19.167720" elapsed="0.005302"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.187297" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1.vanadium/post_data.epilog.json</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:58:19.186912" elapsed="0.000414"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:58:19.188032" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-1.vanadium/post_data.epilog.json' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:58:19.187818" elapsed="0.000278">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-1.vanadium/post_data.epilog.json' does not exist.</status>
</kw>
<msg time="2026-04-08T00:58:19.188207" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:58:19.187488" elapsed="0.000745"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.188776" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1/post_data.epilog.json</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:58:19.188398" elapsed="0.000405"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T00:58:19.189092" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-1/post_data.epilog.json"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-1/post_data.epilog.json&lt;/a&gt;'.</msg>
<msg time="2026-04-08T00:58:19.189239" level="INFO">${template} =   ]
}
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T00:58:19.188962" elapsed="0.000302"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.189660" level="INFO">  ]
}
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:19.189420" elapsed="0.000283"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="NOT RUN" start="2026-04-08T00:58:19.190056" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:19.189771" elapsed="0.000341"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.190586" level="INFO">${mapping_to_use} = {'NODE': 'openflow:2'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:58:19.190299" elapsed="0.000312"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.190136" elapsed="0.000510"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.189752" elapsed="0.000916"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.191249" level="INFO">${final_text} =   ]
}</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:19.190812" elapsed="0.000463"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T00:58:19.191322" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:58:19.191471" level="INFO">${epilog} =   ]
}</msg>
<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-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1/${file_name}.</doc>
<status status="PASS" start="2026-04-08T00:58:19.186293" elapsed="0.005203"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.204737" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1.vanadium/data.item.json</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:58:19.204305" elapsed="0.000461"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:58:19.205506" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-1.vanadium/data.item.json' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:58:19.205292" elapsed="0.000279">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-1.vanadium/data.item.json' does not exist.</status>
</kw>
<msg time="2026-04-08T00:58:19.205665" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:58:19.204931" elapsed="0.000759"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.206252" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1/data.item.json</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:58:19.205854" elapsed="0.000425"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T00:58:19.206573" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-1/data.item.json"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-1/data.item.json&lt;/a&gt;'.</msg>
<msg time="2026-04-08T00:58:19.206732" level="INFO">${template} =         {
          "group-id": ${i}000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
       ...</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T00:58:19.206442" elapsed="0.000317"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.207169" level="INFO">        {
          "group-id": ${i}000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-${i}",
          "group-type": "group-select"
        }
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:19.206915" elapsed="0.000304"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="NOT RUN" start="2026-04-08T00:58:19.207574" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:19.207287" elapsed="0.000344"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.208116" level="INFO">${mapping_to_use} = {'NODE': 'openflow:2'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:58:19.207800" elapsed="0.000342"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.207655" elapsed="0.000538"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.207268" elapsed="0.000947"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.208930" level="INFO">${final_text} =         {
          "group-id": ${i}000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
       ...</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:19.208363" elapsed="0.000595"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T00:58:19.209011" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:58:19.209179" level="INFO">${item_template} =         {
          "group-id": ${i}000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
       ...</msg>
<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-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1/${file_name}.</doc>
<status status="PASS" start="2026-04-08T00:58:19.203719" elapsed="0.005489"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.209610" level="INFO">${items} = []</msg>
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:58:19.209371" elapsed="0.000264"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.210151" level="INFO">${separator} = ,
</msg>
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:58:19.209792" elapsed="0.000401"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:19.210809" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:19.210576" elapsed="0.000288"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.210561" elapsed="0.000327"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.211390" level="INFO">${j} = 1</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:19.211027" elapsed="0.000389"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.212345" level="INFO">${item} =         {
          "group-id": 1000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
          ...</msg>
<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="PASS" start="2026-04-08T00:58:19.211570" elapsed="0.000804"/>
</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="PASS" start="2026-04-08T00:58:19.212534" elapsed="0.000198"/>
</kw>
<var name="${iteration}">1</var>
<status status="PASS" start="2026-04-08T00:58:19.210529" elapsed="0.002241"/>
</iter>
<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="PASS" start="2026-04-08T00:58:19.213202" elapsed="0.000186"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.212948" elapsed="0.000478"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.212934" elapsed="0.000516"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.213942" level="INFO">${j} = 2</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:19.213594" elapsed="0.000374"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.214714" level="INFO">${item} =         {
          "group-id": 2000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
          ...</msg>
<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="PASS" start="2026-04-08T00:58:19.214124" elapsed="0.000619"/>
</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="PASS" start="2026-04-08T00:58:19.214899" elapsed="0.000183"/>
</kw>
<var name="${iteration}">2</var>
<status status="PASS" start="2026-04-08T00:58:19.212904" elapsed="0.002217"/>
</iter>
<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="PASS" start="2026-04-08T00:58:19.215590" elapsed="0.000182"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.215350" elapsed="0.000461"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.215335" elapsed="0.000500"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.216399" level="INFO">${j} = 3</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:19.215979" elapsed="0.000447"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.217150" level="INFO">${item} =         {
          "group-id": 3000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
          ...</msg>
<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="PASS" start="2026-04-08T00:58:19.216583" elapsed="0.000611"/>
</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="PASS" start="2026-04-08T00:58:19.217352" elapsed="0.000180"/>
</kw>
<var name="${iteration}">3</var>
<status status="PASS" start="2026-04-08T00:58:19.215303" elapsed="0.002267"/>
</iter>
<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="PASS" start="2026-04-08T00:58:19.217988" elapsed="0.000200"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.217750" elapsed="0.000477"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.217735" elapsed="0.000516"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.218740" level="INFO">${j} = 4</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:19.218394" elapsed="0.000371"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.219503" level="INFO">${item} =         {
          "group-id": 4000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
          ...</msg>
<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="PASS" start="2026-04-08T00:58:19.218919" elapsed="0.000612"/>
</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="PASS" start="2026-04-08T00:58:19.219686" elapsed="0.000180"/>
</kw>
<var name="${iteration}">4</var>
<status status="PASS" start="2026-04-08T00:58:19.217701" elapsed="0.002203"/>
</iter>
<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="PASS" start="2026-04-08T00:58:19.220350" elapsed="0.000182"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.220097" elapsed="0.000473"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.220082" elapsed="0.000512"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.221079" level="INFO">${j} = 5</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:19.220735" elapsed="0.000370"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.221850" level="INFO">${item} =         {
          "group-id": 5000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
          ...</msg>
<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="PASS" start="2026-04-08T00:58:19.221281" elapsed="0.000597"/>
</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="PASS" start="2026-04-08T00:58:19.222039" elapsed="0.000197"/>
</kw>
<var name="${iteration}">5</var>
<status status="PASS" start="2026-04-08T00:58:19.220050" elapsed="0.002224"/>
</iter>
<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="PASS" start="2026-04-08T00:58:19.222686" elapsed="0.000180"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.222450" elapsed="0.000454"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.222436" elapsed="0.000492"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.223439" level="INFO">${j} = 6</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:19.223072" elapsed="0.000393"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.224225" level="INFO">${item} =         {
          "group-id": 6000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
          ...</msg>
<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="PASS" start="2026-04-08T00:58:19.223620" elapsed="0.000633"/>
</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="PASS" start="2026-04-08T00:58:19.224410" elapsed="0.000180"/>
</kw>
<var name="${iteration}">6</var>
<status status="PASS" start="2026-04-08T00:58:19.222405" elapsed="0.002222"/>
</iter>
<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="PASS" start="2026-04-08T00:58:19.225039" elapsed="0.000197"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.224804" elapsed="0.000470"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.224789" elapsed="0.000509"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.225787" level="INFO">${j} = 7</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:19.225442" elapsed="0.000371"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.226549" level="INFO">${item} =         {
          "group-id": 7000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
          ...</msg>
<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="PASS" start="2026-04-08T00:58:19.225965" elapsed="0.000612"/>
</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="PASS" start="2026-04-08T00:58:19.226794" elapsed="0.000183"/>
</kw>
<var name="${iteration}">7</var>
<status status="PASS" start="2026-04-08T00:58:19.224759" elapsed="0.002256"/>
</iter>
<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="PASS" start="2026-04-08T00:58:19.227449" elapsed="0.000181"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.227211" elapsed="0.000458"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.227196" elapsed="0.000497"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.228222" level="INFO">${j} = 8</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:19.227837" elapsed="0.000424"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.229120" level="INFO">${item} =         {
          "group-id": 8000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
          ...</msg>
<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="PASS" start="2026-04-08T00:58:19.228419" elapsed="0.000729"/>
</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="PASS" start="2026-04-08T00:58:19.229324" elapsed="0.000183"/>
</kw>
<var name="${iteration}">8</var>
<status status="PASS" start="2026-04-08T00:58:19.227145" elapsed="0.002400"/>
</iter>
<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="PASS" start="2026-04-08T00:58:19.229959" elapsed="0.000181"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.229722" elapsed="0.000471"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.229707" elapsed="0.000511"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.230709" level="INFO">${j} = 9</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:19.230363" elapsed="0.000372"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.231477" level="INFO">${item} =         {
          "group-id": 9000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
          ...</msg>
<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="PASS" start="2026-04-08T00:58:19.230889" elapsed="0.000617"/>
</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="PASS" start="2026-04-08T00:58:19.231663" elapsed="0.000280"/>
</kw>
<var name="${iteration}">9</var>
<status status="PASS" start="2026-04-08T00:58:19.229677" elapsed="0.002306"/>
</iter>
<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="PASS" start="2026-04-08T00:58:19.232471" elapsed="0.000182"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.232231" elapsed="0.000462"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.232217" elapsed="0.000500"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.233225" level="INFO">${j} = 10</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:19.232859" elapsed="0.000393"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.233982" level="INFO">${item} =         {
          "group-id": 10000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:19.233406" elapsed="0.000604"/>
</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="PASS" start="2026-04-08T00:58:19.234182" elapsed="0.000184"/>
</kw>
<var name="${iteration}">10</var>
<status status="PASS" start="2026-04-08T00:58:19.232184" elapsed="0.002219"/>
</iter>
<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="PASS" start="2026-04-08T00:58:19.234814" elapsed="0.000182"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.234580" elapsed="0.000454"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.234566" elapsed="0.000491"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.235564" level="INFO">${j} = 11</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:19.235216" elapsed="0.000374"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.236357" level="INFO">${item} =         {
          "group-id": 11000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:19.235745" elapsed="0.000640"/>
</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="PASS" start="2026-04-08T00:58:19.236542" elapsed="0.000180"/>
</kw>
<var name="${iteration}">11</var>
<status status="PASS" start="2026-04-08T00:58:19.234536" elapsed="0.002223"/>
</iter>
<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="PASS" start="2026-04-08T00:58:19.237315" elapsed="0.000182"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.236937" elapsed="0.000598"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.236922" elapsed="0.000637"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.238044" level="INFO">${j} = 12</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:19.237700" elapsed="0.000370"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.238861" level="INFO">${item} =         {
          "group-id": 12000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:19.238279" elapsed="0.000611"/>
</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="PASS" start="2026-04-08T00:58:19.239048" elapsed="0.000198"/>
</kw>
<var name="${iteration}">12</var>
<status status="PASS" start="2026-04-08T00:58:19.236892" elapsed="0.002392"/>
</iter>
<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="PASS" start="2026-04-08T00:58:19.239697" elapsed="0.000181"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.239460" elapsed="0.000457"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.239446" elapsed="0.000495"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.240491" level="INFO">${j} = 13</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:19.240113" elapsed="0.000404"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.241342" level="INFO">${item} =         {
          "group-id": 13000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:19.240675" elapsed="0.000696"/>
</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="PASS" start="2026-04-08T00:58:19.241529" elapsed="0.000181"/>
</kw>
<var name="${iteration}">13</var>
<status status="PASS" start="2026-04-08T00:58:19.239415" elapsed="0.002333"/>
</iter>
<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="PASS" start="2026-04-08T00:58:19.242177" elapsed="0.000183"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.241925" elapsed="0.000474"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.241911" elapsed="0.000511"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.242911" level="INFO">${j} = 14</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:19.242565" elapsed="0.000372"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.243680" level="INFO">${item} =         {
          "group-id": 14000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:19.243092" elapsed="0.000616"/>
</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="PASS" start="2026-04-08T00:58:19.243863" elapsed="0.000183"/>
</kw>
<var name="${iteration}">14</var>
<status status="PASS" start="2026-04-08T00:58:19.241880" elapsed="0.002220"/>
</iter>
<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="PASS" start="2026-04-08T00:58:19.244530" elapsed="0.000181"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.244295" elapsed="0.000454"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.244280" elapsed="0.000493"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.245410" level="INFO">${j} = 15</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:19.244915" elapsed="0.000521"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.246186" level="INFO">${item} =         {
          "group-id": 15000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:19.245593" elapsed="0.000622"/>
</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="PASS" start="2026-04-08T00:58:19.246372" elapsed="0.000182"/>
</kw>
<var name="${iteration}">15</var>
<status status="PASS" start="2026-04-08T00:58:19.244249" elapsed="0.002343"/>
</iter>
<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="PASS" start="2026-04-08T00:58:19.247009" elapsed="0.000199"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.246767" elapsed="0.000480"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.246753" elapsed="0.000519"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.247763" level="INFO">${j} = 16</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:19.247415" elapsed="0.000375"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.248565" level="INFO">${item} =         {
          "group-id": 16000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:19.247945" elapsed="0.000648"/>
</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="PASS" start="2026-04-08T00:58:19.248749" elapsed="0.000181"/>
</kw>
<var name="${iteration}">16</var>
<status status="PASS" start="2026-04-08T00:58:19.246722" elapsed="0.002245"/>
</iter>
<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="PASS" start="2026-04-08T00:58:19.249396" elapsed="0.000180"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.249143" elapsed="0.000506"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.249128" elapsed="0.000546"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.250189" level="INFO">${j} = 17</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:19.249819" elapsed="0.000398"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.250962" level="INFO">${item} =         {
          "group-id": 17000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:19.250373" elapsed="0.000622"/>
</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="PASS" start="2026-04-08T00:58:19.251170" elapsed="0.000187"/>
</kw>
<var name="${iteration}">17</var>
<status status="PASS" start="2026-04-08T00:58:19.249098" elapsed="0.002297"/>
</iter>
<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="PASS" start="2026-04-08T00:58:19.251809" elapsed="0.000185"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.251571" elapsed="0.000463"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.251557" elapsed="0.000500"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.252599" level="INFO">${j} = 18</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:19.252245" elapsed="0.000380"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.253376" level="INFO">${item} =         {
          "group-id": 18000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:19.252783" elapsed="0.000622"/>
</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="PASS" start="2026-04-08T00:58:19.253562" elapsed="0.000181"/>
</kw>
<var name="${iteration}">18</var>
<status status="PASS" start="2026-04-08T00:58:19.251526" elapsed="0.002255"/>
</iter>
<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="PASS" start="2026-04-08T00:58:19.254216" elapsed="0.000186"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.253958" elapsed="0.000481"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.253943" elapsed="0.000520"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.254954" level="INFO">${j} = 19</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:19.254608" elapsed="0.000372"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.255751" level="INFO">${item} =         {
          "group-id": 19000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:19.255135" elapsed="0.000644"/>
</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="PASS" start="2026-04-08T00:58:19.255937" elapsed="0.000215"/>
</kw>
<var name="${iteration}">19</var>
<status status="PASS" start="2026-04-08T00:58:19.253913" elapsed="0.002293"/>
</iter>
<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="PASS" start="2026-04-08T00:58:19.256626" elapsed="0.000182"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.256388" elapsed="0.000459"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.256373" elapsed="0.000498"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.257382" level="INFO">${j} = 20</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:19.257014" elapsed="0.000394"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.258141" level="INFO">${item} =         {
          "group-id": 20000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:19.257565" elapsed="0.000623"/>
</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="PASS" start="2026-04-08T00:58:19.258346" elapsed="0.000184"/>
</kw>
<var name="${iteration}">20</var>
<status status="PASS" start="2026-04-08T00:58:19.256342" elapsed="0.002225"/>
</iter>
<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="PASS" start="2026-04-08T00:58:19.258980" elapsed="0.000202"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.258744" elapsed="0.000478"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.258729" elapsed="0.000517"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.259736" level="INFO">${j} = 21</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:19.259389" elapsed="0.000372"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.260520" level="INFO">${item} =         {
          "group-id": 21000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:19.259916" elapsed="0.000633"/>
</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="PASS" start="2026-04-08T00:58:19.260704" elapsed="0.000224"/>
</kw>
<var name="${iteration}">21</var>
<status status="PASS" start="2026-04-08T00:58:19.258699" elapsed="0.002268"/>
</iter>
<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="PASS" start="2026-04-08T00:58:19.261418" elapsed="0.000305"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.261144" elapsed="0.000620"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.261129" elapsed="0.000660"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.262310" level="INFO">${j} = 22</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:19.261938" elapsed="0.000398"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.263080" level="INFO">${item} =         {
          "group-id": 22000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:19.262494" elapsed="0.000615"/>
</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="PASS" start="2026-04-08T00:58:19.263283" elapsed="0.000184"/>
</kw>
<var name="${iteration}">22</var>
<status status="PASS" start="2026-04-08T00:58:19.261099" elapsed="0.002407"/>
</iter>
<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="PASS" start="2026-04-08T00:58:19.263921" elapsed="0.000213"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.263684" elapsed="0.000505"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.263669" elapsed="0.000546"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.264711" level="INFO">${j} = 23</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:19.264360" elapsed="0.000377"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.265484" level="INFO">${item} =         {
          "group-id": 23000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:19.264894" elapsed="0.000619"/>
</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="PASS" start="2026-04-08T00:58:19.265669" elapsed="0.000182"/>
</kw>
<var name="${iteration}">23</var>
<status status="PASS" start="2026-04-08T00:58:19.263638" elapsed="0.002251"/>
</iter>
<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="PASS" start="2026-04-08T00:58:19.266319" elapsed="0.000183"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.266066" elapsed="0.000473"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.266052" elapsed="0.000511"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.267056" level="INFO">${j} = 24</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:19.266706" elapsed="0.000377"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.267830" level="INFO">${item} =         {
          "group-id": 24000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:19.267254" elapsed="0.000604"/>
</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="PASS" start="2026-04-08T00:58:19.268014" elapsed="0.000229"/>
</kw>
<var name="${iteration}">24</var>
<status status="PASS" start="2026-04-08T00:58:19.266021" elapsed="0.002261"/>
</iter>
<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="PASS" start="2026-04-08T00:58:19.268700" elapsed="0.000181"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.268463" elapsed="0.000457"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.268449" elapsed="0.000494"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.269454" level="INFO">${j} = 25</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:19.269090" elapsed="0.000390"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.270214" level="INFO">${item} =         {
          "group-id": 25000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:19.269633" elapsed="0.000610"/>
</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="PASS" start="2026-04-08T00:58:19.270398" elapsed="0.000179"/>
</kw>
<var name="${iteration}">25</var>
<status status="PASS" start="2026-04-08T00:58:19.268419" elapsed="0.002195"/>
</iter>
<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="PASS" start="2026-04-08T00:58:19.271022" elapsed="0.000194"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.270787" elapsed="0.000467"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.270773" elapsed="0.000505"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.271765" level="INFO">${j} = 26</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:19.271420" elapsed="0.000370"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.272557" level="INFO">${item} =         {
          "group-id": 26000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:19.271943" elapsed="0.000675"/>
</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="PASS" start="2026-04-08T00:58:19.272780" elapsed="0.000184"/>
</kw>
<var name="${iteration}">26</var>
<status status="PASS" start="2026-04-08T00:58:19.270743" elapsed="0.002258"/>
</iter>
<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="PASS" start="2026-04-08T00:58:19.273436" elapsed="0.000182"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.273195" elapsed="0.000461"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.273178" elapsed="0.000501"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.274189" level="INFO">${j} = 27</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:19.273822" elapsed="0.000394"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.274944" level="INFO">${item} =         {
          "group-id": 27000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:19.274372" elapsed="0.000600"/>
</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="PASS" start="2026-04-08T00:58:19.275127" elapsed="0.000199"/>
</kw>
<var name="${iteration}">27</var>
<status status="PASS" start="2026-04-08T00:58:19.273132" elapsed="0.002231"/>
</iter>
<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="PASS" start="2026-04-08T00:58:19.275773" elapsed="0.000178"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.275539" elapsed="0.000450"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.275525" elapsed="0.000487"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.276526" level="INFO">${j} = 28</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:19.276179" elapsed="0.000373"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.277294" level="INFO">${item} =         {
          "group-id": 28000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:19.276706" elapsed="0.000616"/>
</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="PASS" start="2026-04-08T00:58:19.277477" elapsed="0.000178"/>
</kw>
<var name="${iteration}">28</var>
<status status="PASS" start="2026-04-08T00:58:19.275495" elapsed="0.002197"/>
</iter>
<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="PASS" start="2026-04-08T00:58:19.278227" elapsed="0.000185"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.277866" elapsed="0.000585"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.277851" elapsed="0.000623"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.278964" level="INFO">${j} = 29</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:19.278617" elapsed="0.000373"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.279771" level="INFO">${item} =         {
          "group-id": 29000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:19.279145" elapsed="0.000663"/>
</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="PASS" start="2026-04-08T00:58:19.280013" elapsed="0.000291"/>
</kw>
<var name="${iteration}">29</var>
<status status="PASS" start="2026-04-08T00:58:19.277821" elapsed="0.002529"/>
</iter>
<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="PASS" start="2026-04-08T00:58:19.280770" elapsed="0.000182"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.280531" elapsed="0.000459"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.280516" elapsed="0.000498"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.281524" level="INFO">${j} = 30</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:19.281156" elapsed="0.000396"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.282304" level="INFO">${item} =         {
          "group-id": 30000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:19.281706" elapsed="0.000627"/>
</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="PASS" start="2026-04-08T00:58:19.282488" elapsed="0.000181"/>
</kw>
<var name="${iteration}">30</var>
<status status="PASS" start="2026-04-08T00:58:19.280486" elapsed="0.002221"/>
</iter>
<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="PASS" start="2026-04-08T00:58:19.283119" elapsed="0.000199"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.282883" elapsed="0.000473"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.282869" elapsed="0.000511"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.283873" level="INFO">${j} = 31</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:19.283524" elapsed="0.000417"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.284726" level="INFO">${item} =         {
          "group-id": 31000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:19.284105" elapsed="0.000649"/>
</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="PASS" start="2026-04-08T00:58:19.284910" elapsed="0.000189"/>
</kw>
<var name="${iteration}">31</var>
<status status="PASS" start="2026-04-08T00:58:19.282839" elapsed="0.002297"/>
</iter>
<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="PASS" start="2026-04-08T00:58:19.285584" elapsed="0.000182"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.285348" elapsed="0.000456"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.285334" elapsed="0.000494"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.286333" level="INFO">${j} = 32</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:19.285970" elapsed="0.000388"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.287077" level="INFO">${item} =         {
          "group-id": 32000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:19.286513" elapsed="0.000592"/>
</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="PASS" start="2026-04-08T00:58:19.287279" elapsed="0.000181"/>
</kw>
<var name="${iteration}">32</var>
<status status="PASS" start="2026-04-08T00:58:19.285303" elapsed="0.002194"/>
</iter>
<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="PASS" start="2026-04-08T00:58:19.287905" elapsed="0.000179"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.287670" elapsed="0.000452"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.287656" elapsed="0.000529"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.288677" level="INFO">${j} = 33</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:19.288332" elapsed="0.000371"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.289505" level="INFO">${item} =         {
          "group-id": 33000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:19.288854" elapsed="0.000679"/>
</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="PASS" start="2026-04-08T00:58:19.289687" elapsed="0.000180"/>
</kw>
<var name="${iteration}">33</var>
<status status="PASS" start="2026-04-08T00:58:19.287627" elapsed="0.002276"/>
</iter>
<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="PASS" start="2026-04-08T00:58:19.290331" elapsed="0.000181"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.290079" elapsed="0.000470"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.290065" elapsed="0.000508"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.291061" level="INFO">${j} = 34</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:19.290715" elapsed="0.000371"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.291820" level="INFO">${item} =         {
          "group-id": 34000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:19.291253" elapsed="0.000595"/>
</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="PASS" start="2026-04-08T00:58:19.292001" elapsed="0.000206"/>
</kw>
<var name="${iteration}">34</var>
<status status="PASS" start="2026-04-08T00:58:19.290035" elapsed="0.002209"/>
</iter>
<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="PASS" start="2026-04-08T00:58:19.292656" elapsed="0.000180"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.292424" elapsed="0.000450"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.292409" elapsed="0.000489"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.293400" level="INFO">${j} = 35</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:19.293040" elapsed="0.000386"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.294142" level="INFO">${item} =         {
          "group-id": 35000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:19.293578" elapsed="0.000607"/>
</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="PASS" start="2026-04-08T00:58:19.294340" elapsed="0.000180"/>
</kw>
<var name="${iteration}">35</var>
<status status="PASS" start="2026-04-08T00:58:19.292378" elapsed="0.002178"/>
</iter>
<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="PASS" start="2026-04-08T00:58:19.295117" elapsed="0.000213"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.294839" elapsed="0.000529"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.294717" elapsed="0.000676"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.295884" level="INFO">${j} = 36</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:19.295538" elapsed="0.000372"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.296680" level="INFO">${item} =         {
          "group-id": 36000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:19.296064" elapsed="0.000644"/>
</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="PASS" start="2026-04-08T00:58:19.296864" elapsed="0.000186"/>
</kw>
<var name="${iteration}">36</var>
<status status="PASS" start="2026-04-08T00:58:19.294687" elapsed="0.002400"/>
</iter>
<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="PASS" start="2026-04-08T00:58:19.297514" elapsed="0.000181"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.297279" elapsed="0.000453"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.297264" elapsed="0.000492"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.298260" level="INFO">${j} = 37</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:19.297899" elapsed="0.000388"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.299008" level="INFO">${item} =         {
          "group-id": 37000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:19.298441" elapsed="0.000596"/>
</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="PASS" start="2026-04-08T00:58:19.299207" elapsed="0.000182"/>
</kw>
<var name="${iteration}">37</var>
<status status="PASS" start="2026-04-08T00:58:19.297234" elapsed="0.002192"/>
</iter>
<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="PASS" start="2026-04-08T00:58:19.299833" elapsed="0.000184"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.299599" elapsed="0.000455"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.299584" elapsed="0.000494"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.300668" level="INFO">${j} = 38</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:19.300312" elapsed="0.000383"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.301444" level="INFO">${item} =         {
          "group-id": 38000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:19.300852" elapsed="0.000621"/>
</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="PASS" start="2026-04-08T00:58:19.301631" elapsed="0.000182"/>
</kw>
<var name="${iteration}">38</var>
<status status="PASS" start="2026-04-08T00:58:19.299555" elapsed="0.002295"/>
</iter>
<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="PASS" start="2026-04-08T00:58:19.302280" elapsed="0.000183"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.302028" elapsed="0.000472"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.302013" elapsed="0.000511"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.303013" level="INFO">${j} = 39</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:19.302667" elapsed="0.000372"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.303786" level="INFO">${item} =         {
          "group-id": 39000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:19.303214" elapsed="0.000601"/>
</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="PASS" start="2026-04-08T00:58:19.303970" elapsed="0.000182"/>
</kw>
<var name="${iteration}">39</var>
<status status="PASS" start="2026-04-08T00:58:19.301983" elapsed="0.002252"/>
</iter>
<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="PASS" start="2026-04-08T00:58:19.304653" elapsed="0.000182"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.304417" elapsed="0.000456"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.304402" elapsed="0.000495"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.305423" level="INFO">${j} = 40</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:19.305041" elapsed="0.000409"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.306188" level="INFO">${item} =         {
          "group-id": 40000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:19.305605" elapsed="0.000612"/>
</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="PASS" start="2026-04-08T00:58:19.306416" elapsed="0.000184"/>
</kw>
<var name="${iteration}">40</var>
<status status="PASS" start="2026-04-08T00:58:19.304371" elapsed="0.002267"/>
</iter>
<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="PASS" start="2026-04-08T00:58:19.307051" elapsed="0.000199"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.306814" elapsed="0.000473"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.306799" elapsed="0.000512"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.307800" level="INFO">${j} = 41</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:19.307454" elapsed="0.000371"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.308578" level="INFO">${item} =         {
          "group-id": 41000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:19.307979" elapsed="0.000627"/>
</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="PASS" start="2026-04-08T00:58:19.308761" elapsed="0.000179"/>
</kw>
<var name="${iteration}">41</var>
<status status="PASS" start="2026-04-08T00:58:19.306768" elapsed="0.002208"/>
</iter>
<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="PASS" start="2026-04-08T00:58:19.309403" elapsed="0.000180"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.309150" elapsed="0.000470"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.309135" elapsed="0.000509"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.310131" level="INFO">${j} = 42</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:19.309787" elapsed="0.000385"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.310902" level="INFO">${item} =         {
          "group-id": 42000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:19.310328" elapsed="0.000602"/>
</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="PASS" start="2026-04-08T00:58:19.311085" elapsed="0.000196"/>
</kw>
<var name="${iteration}">42</var>
<status status="PASS" start="2026-04-08T00:58:19.309106" elapsed="0.002212"/>
</iter>
<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="PASS" start="2026-04-08T00:58:19.311902" elapsed="0.000185"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.311660" elapsed="0.000464"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.311539" elapsed="0.000609"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.312692" level="INFO">${j} = 43</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:19.312343" elapsed="0.000375"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.313465" level="INFO">${item} =         {
          "group-id": 43000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:19.312872" elapsed="0.000621"/>
</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="PASS" start="2026-04-08T00:58:19.313648" elapsed="0.000181"/>
</kw>
<var name="${iteration}">43</var>
<status status="PASS" start="2026-04-08T00:58:19.311508" elapsed="0.002358"/>
</iter>
<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="PASS" start="2026-04-08T00:58:19.314288" elapsed="0.000184"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.314038" elapsed="0.000471"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.314023" elapsed="0.000510"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.315023" level="INFO">${j} = 44</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:19.314676" elapsed="0.000373"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.315798" level="INFO">${item} =         {
          "group-id": 44000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:19.315220" elapsed="0.000606"/>
</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="PASS" start="2026-04-08T00:58:19.315981" elapsed="0.000217"/>
</kw>
<var name="${iteration}">44</var>
<status status="PASS" start="2026-04-08T00:58:19.313993" elapsed="0.002250"/>
</iter>
<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="PASS" start="2026-04-08T00:58:19.316665" elapsed="0.000180"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.316427" elapsed="0.000455"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.316412" elapsed="0.000495"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.317413" level="INFO">${j} = 45</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:19.317048" elapsed="0.000390"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.318218" level="INFO">${item} =         {
          "group-id": 45000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:19.317628" elapsed="0.000618"/>
</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="PASS" start="2026-04-08T00:58:19.318403" elapsed="0.000183"/>
</kw>
<var name="${iteration}">45</var>
<status status="PASS" start="2026-04-08T00:58:19.316380" elapsed="0.002242"/>
</iter>
<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="PASS" start="2026-04-08T00:58:19.319030" elapsed="0.000198"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.318795" elapsed="0.000471"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.318780" elapsed="0.000510"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.319780" level="INFO">${j} = 46</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:19.319433" elapsed="0.000372"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.320574" level="INFO">${item} =         {
          "group-id": 46000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:19.319959" elapsed="0.000643"/>
</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="PASS" start="2026-04-08T00:58:19.320757" elapsed="0.000179"/>
</kw>
<var name="${iteration}">46</var>
<status status="PASS" start="2026-04-08T00:58:19.318751" elapsed="0.002222"/>
</iter>
<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="PASS" start="2026-04-08T00:58:19.321404" elapsed="0.000180"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.321148" elapsed="0.000473"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.321133" elapsed="0.000513"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.322131" level="INFO">${j} = 47</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:19.321788" elapsed="0.000383"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.322899" level="INFO">${item} =         {
          "group-id": 47000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:19.322327" elapsed="0.000600"/>
</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="PASS" start="2026-04-08T00:58:19.323080" elapsed="0.000198"/>
</kw>
<var name="${iteration}">47</var>
<status status="PASS" start="2026-04-08T00:58:19.321104" elapsed="0.002211"/>
</iter>
<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="PASS" start="2026-04-08T00:58:19.323723" elapsed="0.000181"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.323489" elapsed="0.000452"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.323475" elapsed="0.000490"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.324493" level="INFO">${j} = 48</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:19.324108" elapsed="0.000411"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.325261" level="INFO">${item} =         {
          "group-id": 48000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:19.324673" elapsed="0.000617"/>
</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="PASS" start="2026-04-08T00:58:19.325444" elapsed="0.000180"/>
</kw>
<var name="${iteration}">48</var>
<status status="PASS" start="2026-04-08T00:58:19.323445" elapsed="0.002217"/>
</iter>
<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="PASS" start="2026-04-08T00:58:19.326074" elapsed="0.000197"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.325838" elapsed="0.000471"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.325822" elapsed="0.000511"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.326820" level="INFO">${j} = 49</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:19.326477" elapsed="0.000368"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.327584" level="INFO">${item} =         {
          "group-id": 49000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:19.326998" elapsed="0.000614"/>
</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="PASS" start="2026-04-08T00:58:19.327766" elapsed="0.000179"/>
</kw>
<var name="${iteration}">49</var>
<status status="PASS" start="2026-04-08T00:58:19.325792" elapsed="0.002190"/>
</iter>
<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="PASS" start="2026-04-08T00:58:19.328557" elapsed="0.000183"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.328313" elapsed="0.000497"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.328148" elapsed="0.000692"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.329355" level="INFO">${j} = 50</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:19.328989" elapsed="0.000392"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.330107" level="INFO">${item} =         {
          "group-id": 50000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:19.329536" elapsed="0.000599"/>
</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="PASS" start="2026-04-08T00:58:19.330305" elapsed="0.000182"/>
</kw>
<var name="${iteration}">50</var>
<status status="PASS" start="2026-04-08T00:58:19.328118" elapsed="0.002406"/>
</iter>
<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="PASS" start="2026-04-08T00:58:19.330932" elapsed="0.000180"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.330698" elapsed="0.000451"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.330683" elapsed="0.000507"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.331677" level="INFO">${j} = 51</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:19.331333" elapsed="0.000369"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.332494" level="INFO">${item} =         {
          "group-id": 51000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:19.331856" elapsed="0.000667"/>
</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="PASS" start="2026-04-08T00:58:19.332679" elapsed="0.000182"/>
</kw>
<var name="${iteration}">51</var>
<status status="PASS" start="2026-04-08T00:58:19.330653" elapsed="0.002245"/>
</iter>
<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="PASS" start="2026-04-08T00:58:19.333329" elapsed="0.000182"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.333073" elapsed="0.000477"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.333058" elapsed="0.000516"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.334075" level="INFO">${j} = 52</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:19.333716" elapsed="0.000386"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.334860" level="INFO">${item} =         {
          "group-id": 52000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:19.334274" elapsed="0.000614"/>
</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="PASS" start="2026-04-08T00:58:19.335045" elapsed="0.000199"/>
</kw>
<var name="${iteration}">52</var>
<status status="PASS" start="2026-04-08T00:58:19.333028" elapsed="0.002255"/>
</iter>
<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="PASS" start="2026-04-08T00:58:19.335696" elapsed="0.000181"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.335460" elapsed="0.000456"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.335446" elapsed="0.000493"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.336485" level="INFO">${j} = 53</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:19.336082" elapsed="0.000430"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.337449" level="INFO">${item} =         {
          "group-id": 53000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:19.336668" elapsed="0.000810"/>
</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="PASS" start="2026-04-08T00:58:19.337635" elapsed="0.000190"/>
</kw>
<var name="${iteration}">53</var>
<status status="PASS" start="2026-04-08T00:58:19.335416" elapsed="0.002447"/>
</iter>
<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="PASS" start="2026-04-08T00:58:19.338304" elapsed="0.000183"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.338045" elapsed="0.000481"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.338030" elapsed="0.000521"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.339044" level="INFO">${j} = 54</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:19.338695" elapsed="0.000375"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.339818" level="INFO">${item} =         {
          "group-id": 54000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:19.339243" elapsed="0.000603"/>
</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="PASS" start="2026-04-08T00:58:19.340003" elapsed="0.000252"/>
</kw>
<var name="${iteration}">54</var>
<status status="PASS" start="2026-04-08T00:58:19.337999" elapsed="0.002343"/>
</iter>
<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="PASS" start="2026-04-08T00:58:19.340777" elapsed="0.000189"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.340523" elapsed="0.000485"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.340508" elapsed="0.000525"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.341593" level="INFO">${j} = 55</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:19.341219" elapsed="0.000401"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.342371" level="INFO">${item} =         {
          "group-id": 55000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:19.341778" elapsed="0.000621"/>
</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="PASS" start="2026-04-08T00:58:19.342555" elapsed="0.000184"/>
</kw>
<var name="${iteration}">55</var>
<status status="PASS" start="2026-04-08T00:58:19.340478" elapsed="0.002298"/>
</iter>
<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="PASS" start="2026-04-08T00:58:19.343205" elapsed="0.000185"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.342953" elapsed="0.000475"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.342938" elapsed="0.000514"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.343943" level="INFO">${j} = 56</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:19.343595" elapsed="0.000374"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.344766" level="INFO">${item} =         {
          "group-id": 56000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:19.344125" elapsed="0.000670"/>
</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="PASS" start="2026-04-08T00:58:19.344950" elapsed="0.000182"/>
</kw>
<var name="${iteration}">56</var>
<status status="PASS" start="2026-04-08T00:58:19.342908" elapsed="0.002277"/>
</iter>
<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="PASS" start="2026-04-08T00:58:19.345717" elapsed="0.000186"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.345474" elapsed="0.000468"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.345351" elapsed="0.000615"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.346479" level="INFO">${j} = 57</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:19.346111" elapsed="0.000395"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.347254" level="INFO">${item} =         {
          "group-id": 57000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:19.346662" elapsed="0.000621"/>
</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="PASS" start="2026-04-08T00:58:19.347439" elapsed="0.000183"/>
</kw>
<var name="${iteration}">57</var>
<status status="PASS" start="2026-04-08T00:58:19.345320" elapsed="0.002340"/>
</iter>
<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="PASS" start="2026-04-08T00:58:19.348074" elapsed="0.000220"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.347837" elapsed="0.000503"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.347822" elapsed="0.000543"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.348863" level="INFO">${j} = 58</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:19.348511" elapsed="0.000379"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.349638" level="INFO">${item} =         {
          "group-id": 58000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:19.349044" elapsed="0.000623"/>
</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="PASS" start="2026-04-08T00:58:19.349830" elapsed="0.000181"/>
</kw>
<var name="${iteration}">58</var>
<status status="PASS" start="2026-04-08T00:58:19.347792" elapsed="0.002256"/>
</iter>
<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="PASS" start="2026-04-08T00:58:19.350479" elapsed="0.000181"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.350243" elapsed="0.000456"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.350228" elapsed="0.000495"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.351253" level="INFO">${j} = 59</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:19.350882" elapsed="0.000398"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.352014" level="INFO">${item} =         {
          "group-id": 59000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:19.351436" elapsed="0.000645"/>
</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="PASS" start="2026-04-08T00:58:19.352292" elapsed="0.000194"/>
</kw>
<var name="${iteration}">59</var>
<status status="PASS" start="2026-04-08T00:58:19.350196" elapsed="0.002329"/>
</iter>
<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="PASS" start="2026-04-08T00:58:19.352941" elapsed="0.000182"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.352701" elapsed="0.000478"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.352687" elapsed="0.000519"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.353703" level="INFO">${j} = 60</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:19.353352" elapsed="0.000378"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.354478" level="INFO">${item} =         {
          "group-id": 60000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:19.353885" elapsed="0.000622"/>
</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="PASS" start="2026-04-08T00:58:19.354663" elapsed="0.000179"/>
</kw>
<var name="${iteration}">60</var>
<status status="PASS" start="2026-04-08T00:58:19.352657" elapsed="0.002223"/>
</iter>
<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="PASS" start="2026-04-08T00:58:19.355327" elapsed="0.000185"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.355057" elapsed="0.000494"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.355042" elapsed="0.000532"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.356063" level="INFO">${j} = 61</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:19.355717" elapsed="0.000382"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.356854" level="INFO">${item} =         {
          "group-id": 61000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:19.356282" elapsed="0.000600"/>
</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="PASS" start="2026-04-08T00:58:19.357036" elapsed="0.000196"/>
</kw>
<var name="${iteration}">61</var>
<status status="PASS" start="2026-04-08T00:58:19.355012" elapsed="0.002257"/>
</iter>
<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="PASS" start="2026-04-08T00:58:19.357680" elapsed="0.000181"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.357446" elapsed="0.000452"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.357432" elapsed="0.000490"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.358426" level="INFO">${j} = 62</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:19.358062" elapsed="0.000390"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.359193" level="INFO">${item} =         {
          "group-id": 62000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:19.358607" elapsed="0.000615"/>
</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="PASS" start="2026-04-08T00:58:19.359374" elapsed="0.000180"/>
</kw>
<var name="${iteration}">62</var>
<status status="PASS" start="2026-04-08T00:58:19.357401" elapsed="0.002190"/>
</iter>
<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="PASS" start="2026-04-08T00:58:19.359998" elapsed="0.000196"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.359765" elapsed="0.000466"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.359751" elapsed="0.000534"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.360777" level="INFO">${j} = 63</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:19.360432" elapsed="0.000372"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.361552" level="INFO">${item} =         {
          "group-id": 63000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:19.360956" elapsed="0.000624"/>
</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="PASS" start="2026-04-08T00:58:19.361733" elapsed="0.000181"/>
</kw>
<var name="${iteration}">63</var>
<status status="PASS" start="2026-04-08T00:58:19.359721" elapsed="0.002230"/>
</iter>
<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="PASS" start="2026-04-08T00:58:19.362494" elapsed="0.000181"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.362252" elapsed="0.000460"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.362112" elapsed="0.000624"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.363240" level="INFO">${j} = 64</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:19.362877" elapsed="0.000422"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.364030" level="INFO">${item} =         {
          "group-id": 64000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:19.363457" elapsed="0.000601"/>
</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="PASS" start="2026-04-08T00:58:19.364229" elapsed="0.000200"/>
</kw>
<var name="${iteration}">64</var>
<status status="PASS" start="2026-04-08T00:58:19.362082" elapsed="0.002385"/>
</iter>
<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="PASS" start="2026-04-08T00:58:19.364878" elapsed="0.000179"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.364643" elapsed="0.000452"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.364629" elapsed="0.000490"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.365620" level="INFO">${j} = 65</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:19.365274" elapsed="0.000372"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.366426" level="INFO">${item} =         {
          "group-id": 65000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:19.365798" elapsed="0.000656"/>
</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="PASS" start="2026-04-08T00:58:19.366607" elapsed="0.000179"/>
</kw>
<var name="${iteration}">65</var>
<status status="PASS" start="2026-04-08T00:58:19.364598" elapsed="0.002224"/>
</iter>
<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="PASS" start="2026-04-08T00:58:19.367251" elapsed="0.000182"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.367000" elapsed="0.000470"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.366984" elapsed="0.000510"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.367978" level="INFO">${j} = 66</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:19.367635" elapsed="0.000369"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.368805" level="INFO">${item} =         {
          "group-id": 66000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:19.368173" elapsed="0.000661"/>
</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="PASS" start="2026-04-08T00:58:19.368987" elapsed="0.000198"/>
</kw>
<var name="${iteration}">66</var>
<status status="PASS" start="2026-04-08T00:58:19.366953" elapsed="0.002269"/>
</iter>
<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="PASS" start="2026-04-08T00:58:19.369633" elapsed="0.000185"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.369396" elapsed="0.000459"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.369382" elapsed="0.000497"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.370390" level="INFO">${j} = 67</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:19.370022" elapsed="0.000394"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.371139" level="INFO">${item} =         {
          "group-id": 67000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:19.370569" elapsed="0.000614"/>
</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="PASS" start="2026-04-08T00:58:19.371340" elapsed="0.000180"/>
</kw>
<var name="${iteration}">67</var>
<status status="PASS" start="2026-04-08T00:58:19.369352" elapsed="0.002204"/>
</iter>
<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="PASS" start="2026-04-08T00:58:19.371964" elapsed="0.000181"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.371731" elapsed="0.000467"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.371716" elapsed="0.000507"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.372723" level="INFO">${j} = 68</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:19.372379" elapsed="0.000370"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.373499" level="INFO">${item} =         {
          "group-id": 68000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:19.372902" elapsed="0.000625"/>
</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="PASS" start="2026-04-08T00:58:19.373681" elapsed="0.000179"/>
</kw>
<var name="${iteration}">68</var>
<status status="PASS" start="2026-04-08T00:58:19.371686" elapsed="0.002210"/>
</iter>
<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="PASS" start="2026-04-08T00:58:19.374358" elapsed="0.000183"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.374070" elapsed="0.000509"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.374055" elapsed="0.000548"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.375092" level="INFO">${j} = 69</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:19.374747" elapsed="0.000371"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.375863" level="INFO">${item} =         {
          "group-id": 69000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:19.375289" elapsed="0.000602"/>
</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="PASS" start="2026-04-08T00:58:19.376046" elapsed="0.000199"/>
</kw>
<var name="${iteration}">69</var>
<status status="PASS" start="2026-04-08T00:58:19.374025" elapsed="0.002282"/>
</iter>
<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="PASS" start="2026-04-08T00:58:19.376722" elapsed="0.000182"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.376487" elapsed="0.000454"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.376472" elapsed="0.000493"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.377472" level="INFO">${j} = 70</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:19.377107" elapsed="0.000391"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.378234" level="INFO">${item} =         {
          "group-id": 70000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:19.377653" elapsed="0.000609"/>
</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="PASS" start="2026-04-08T00:58:19.378417" elapsed="0.000187"/>
</kw>
<var name="${iteration}">70</var>
<status status="PASS" start="2026-04-08T00:58:19.376442" elapsed="0.002198"/>
</iter>
<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="PASS" start="2026-04-08T00:58:19.379176" elapsed="0.000186"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.378919" elapsed="0.000481"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.378799" elapsed="0.000626"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.380074" level="INFO">${j} = 71</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:19.379626" elapsed="0.000480"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.381076" level="INFO">${item} =         {
          "group-id": 71000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:19.380341" elapsed="0.000767"/>
</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="PASS" start="2026-04-08T00:58:19.381293" elapsed="0.000187"/>
</kw>
<var name="${iteration}">71</var>
<status status="PASS" start="2026-04-08T00:58:19.378769" elapsed="0.002750"/>
</iter>
<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="PASS" start="2026-04-08T00:58:19.381937" elapsed="0.000182"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.381697" elapsed="0.000477"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.381683" elapsed="0.000518"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.382696" level="INFO">${j} = 72</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:19.382346" elapsed="0.000376"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.383466" level="INFO">${item} =         {
          "group-id": 72000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:19.382877" elapsed="0.000617"/>
</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="PASS" start="2026-04-08T00:58:19.383650" elapsed="0.000181"/>
</kw>
<var name="${iteration}">72</var>
<status status="PASS" start="2026-04-08T00:58:19.381653" elapsed="0.002215"/>
</iter>
<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="PASS" start="2026-04-08T00:58:19.384325" elapsed="0.000190"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.384043" elapsed="0.000511"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.384029" elapsed="0.000550"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.385069" level="INFO">${j} = 73</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:19.384721" elapsed="0.000375"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.385841" level="INFO">${item} =         {
          "group-id": 73000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:19.385267" elapsed="0.000601"/>
</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="PASS" start="2026-04-08T00:58:19.386073" elapsed="0.000202"/>
</kw>
<var name="${iteration}">73</var>
<status status="PASS" start="2026-04-08T00:58:19.383999" elapsed="0.002315"/>
</iter>
<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="PASS" start="2026-04-08T00:58:19.386725" elapsed="0.000182"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.386489" elapsed="0.000456"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.386475" elapsed="0.000494"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.387479" level="INFO">${j} = 74</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:19.387112" elapsed="0.000393"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.388254" level="INFO">${item} =         {
          "group-id": 74000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:19.387660" elapsed="0.000623"/>
</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="PASS" start="2026-04-08T00:58:19.388465" elapsed="0.000182"/>
</kw>
<var name="${iteration}">74</var>
<status status="PASS" start="2026-04-08T00:58:19.386445" elapsed="0.002240"/>
</iter>
<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="PASS" start="2026-04-08T00:58:19.389101" elapsed="0.000204"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.388860" elapsed="0.000483"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.388846" elapsed="0.000527"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.389857" level="INFO">${j} = 75</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:19.389514" elapsed="0.000368"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.390627" level="INFO">${item} =         {
          "group-id": 75000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:19.390035" elapsed="0.000619"/>
</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="PASS" start="2026-04-08T00:58:19.390809" elapsed="0.000179"/>
</kw>
<var name="${iteration}">75</var>
<status status="PASS" start="2026-04-08T00:58:19.388816" elapsed="0.002209"/>
</iter>
<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="PASS" start="2026-04-08T00:58:19.391455" elapsed="0.000181"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.391218" elapsed="0.000457"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.391202" elapsed="0.000497"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.392199" level="INFO">${j} = 76</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:19.391841" elapsed="0.000385"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.392975" level="INFO">${item} =         {
          "group-id": 76000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:19.392406" elapsed="0.000596"/>
</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="PASS" start="2026-04-08T00:58:19.393171" elapsed="0.000182"/>
</kw>
<var name="${iteration}">76</var>
<status status="PASS" start="2026-04-08T00:58:19.391170" elapsed="0.002220"/>
</iter>
<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="PASS" start="2026-04-08T00:58:19.393804" elapsed="0.000179"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.393571" elapsed="0.000449"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.393556" elapsed="0.000488"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.394613" level="INFO">${j} = 77</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:19.394201" elapsed="0.000438"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.395391" level="INFO">${item} =         {
          "group-id": 77000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:19.394794" elapsed="0.000625"/>
</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="PASS" start="2026-04-08T00:58:19.395572" elapsed="0.000177"/>
</kw>
<var name="${iteration}">77</var>
<status status="PASS" start="2026-04-08T00:58:19.393519" elapsed="0.002267"/>
</iter>
<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="PASS" start="2026-04-08T00:58:19.396705" elapsed="0.000182"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.396459" elapsed="0.000466"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.395944" elapsed="0.001005"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.397456" level="INFO">${j} = 78</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:19.397091" elapsed="0.000391"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.398287" level="INFO">${item} =         {
          "group-id": 78000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:19.397687" elapsed="0.000629"/>
</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="PASS" start="2026-04-08T00:58:19.398470" elapsed="0.000181"/>
</kw>
<var name="${iteration}">78</var>
<status status="PASS" start="2026-04-08T00:58:19.395914" elapsed="0.002773"/>
</iter>
<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="PASS" start="2026-04-08T00:58:19.399093" elapsed="0.000198"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.398860" elapsed="0.000470"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.398845" elapsed="0.000508"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.399840" level="INFO">${j} = 79</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:19.399495" elapsed="0.000371"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.400634" level="INFO">${item} =         {
          "group-id": 79000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:19.400020" elapsed="0.000643"/>
</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="PASS" start="2026-04-08T00:58:19.400819" elapsed="0.000179"/>
</kw>
<var name="${iteration}">79</var>
<status status="PASS" start="2026-04-08T00:58:19.398815" elapsed="0.002220"/>
</iter>
<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="PASS" start="2026-04-08T00:58:19.401462" elapsed="0.000184"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.401226" elapsed="0.000460"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.401211" elapsed="0.000502"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.402223" level="INFO">${j} = 80</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:19.401860" elapsed="0.000390"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.402972" level="INFO">${item} =         {
          "group-id": 80000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:19.402405" elapsed="0.000595"/>
</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="PASS" start="2026-04-08T00:58:19.403171" elapsed="0.000184"/>
</kw>
<var name="${iteration}">80</var>
<status status="PASS" start="2026-04-08T00:58:19.401179" elapsed="0.002213"/>
</iter>
<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="PASS" start="2026-04-08T00:58:19.403802" elapsed="0.000180"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.403566" elapsed="0.000453"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.403552" elapsed="0.000491"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.404581" level="INFO">${j} = 81</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:19.404200" elapsed="0.000408"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.405370" level="INFO">${item} =         {
          "group-id": 81000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:19.404765" elapsed="0.000635"/>
</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="PASS" start="2026-04-08T00:58:19.405561" elapsed="0.000190"/>
</kw>
<var name="${iteration}">81</var>
<status status="PASS" start="2026-04-08T00:58:19.403522" elapsed="0.002266"/>
</iter>
<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="PASS" start="2026-04-08T00:58:19.406221" elapsed="0.000183"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.405963" elapsed="0.000479"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.405949" elapsed="0.000517"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.406955" level="INFO">${j} = 82</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:19.406610" elapsed="0.000371"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.407722" level="INFO">${item} =         {
          "group-id": 82000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:19.407135" elapsed="0.000615"/>
</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="PASS" start="2026-04-08T00:58:19.407906" elapsed="0.000184"/>
</kw>
<var name="${iteration}">82</var>
<status status="PASS" start="2026-04-08T00:58:19.405918" elapsed="0.002210"/>
</iter>
<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="PASS" start="2026-04-08T00:58:19.408582" elapsed="0.000188"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.408321" elapsed="0.000519"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.408307" elapsed="0.000559"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.409377" level="INFO">${j} = 83</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:19.409012" elapsed="0.000392"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.410132" level="INFO">${item} =         {
          "group-id": 83000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:19.409559" elapsed="0.000617"/>
</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="PASS" start="2026-04-08T00:58:19.410334" elapsed="0.000182"/>
</kw>
<var name="${iteration}">83</var>
<status status="PASS" start="2026-04-08T00:58:19.408276" elapsed="0.002277"/>
</iter>
<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="PASS" start="2026-04-08T00:58:19.410961" elapsed="0.000181"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.410727" elapsed="0.000468"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.410713" elapsed="0.000506"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.411711" level="INFO">${j} = 84</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:19.411363" elapsed="0.000374"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.412499" level="INFO">${item} =         {
          "group-id": 84000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:19.411891" elapsed="0.000637"/>
</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="PASS" start="2026-04-08T00:58:19.412684" elapsed="0.000181"/>
</kw>
<var name="${iteration}">84</var>
<status status="PASS" start="2026-04-08T00:58:19.410683" elapsed="0.002219"/>
</iter>
<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="PASS" start="2026-04-08T00:58:19.413447" elapsed="0.000184"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.413203" elapsed="0.000466"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.413064" elapsed="0.000630"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.414201" level="INFO">${j} = 85</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:19.413837" elapsed="0.000391"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.414959" level="INFO">${item} =         {
          "group-id": 85000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:19.414384" elapsed="0.000603"/>
</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="PASS" start="2026-04-08T00:58:19.415143" elapsed="0.000208"/>
</kw>
<var name="${iteration}">85</var>
<status status="PASS" start="2026-04-08T00:58:19.413034" elapsed="0.002354"/>
</iter>
<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="PASS" start="2026-04-08T00:58:19.415800" elapsed="0.000180"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.415563" elapsed="0.000454"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.415548" elapsed="0.000493"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.416577" level="INFO">${j} = 86</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:19.416200" elapsed="0.000403"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.417458" level="INFO">${item} =         {
          "group-id": 86000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:19.416758" elapsed="0.000728"/>
</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="PASS" start="2026-04-08T00:58:19.417641" elapsed="0.000181"/>
</kw>
<var name="${iteration}">86</var>
<status status="PASS" start="2026-04-08T00:58:19.415518" elapsed="0.002340"/>
</iter>
<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="PASS" start="2026-04-08T00:58:19.418284" elapsed="0.000181"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.418034" elapsed="0.000469"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.418019" elapsed="0.000507"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.419011" level="INFO">${j} = 87</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:19.418668" elapsed="0.000369"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.419774" level="INFO">${item} =         {
          "group-id": 87000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:19.419206" elapsed="0.000596"/>
</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="PASS" start="2026-04-08T00:58:19.419955" elapsed="0.000184"/>
</kw>
<var name="${iteration}">87</var>
<status status="PASS" start="2026-04-08T00:58:19.417989" elapsed="0.002234"/>
</iter>
<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="PASS" start="2026-04-08T00:58:19.420669" elapsed="0.000181"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.420429" elapsed="0.000458"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.420411" elapsed="0.000500"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.421434" level="INFO">${j} = 88</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:19.421060" elapsed="0.000400"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.422202" level="INFO">${item} =         {
          "group-id": 88000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:19.421615" elapsed="0.000616"/>
</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="PASS" start="2026-04-08T00:58:19.422387" elapsed="0.000180"/>
</kw>
<var name="${iteration}">88</var>
<status status="PASS" start="2026-04-08T00:58:19.420373" elapsed="0.002231"/>
</iter>
<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="PASS" start="2026-04-08T00:58:19.423014" elapsed="0.000197"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.422779" elapsed="0.000470"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.422764" elapsed="0.000509"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.423758" level="INFO">${j} = 89</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:19.423415" elapsed="0.000369"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.424556" level="INFO">${item} =         {
          "group-id": 89000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:19.423937" elapsed="0.000647"/>
</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="PASS" start="2026-04-08T00:58:19.424739" elapsed="0.000180"/>
</kw>
<var name="${iteration}">89</var>
<status status="PASS" start="2026-04-08T00:58:19.422734" elapsed="0.002222"/>
</iter>
<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="PASS" start="2026-04-08T00:58:19.425382" elapsed="0.000181"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.425129" elapsed="0.000472"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.425114" elapsed="0.000511"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.426115" level="INFO">${j} = 90</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:19.425766" elapsed="0.000375"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.426886" level="INFO">${item} =         {
          "group-id": 90000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:19.426313" elapsed="0.000601"/>
</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="PASS" start="2026-04-08T00:58:19.427068" elapsed="0.000196"/>
</kw>
<var name="${iteration}">90</var>
<status status="PASS" start="2026-04-08T00:58:19.425085" elapsed="0.002217"/>
</iter>
<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="PASS" start="2026-04-08T00:58:19.427718" elapsed="0.000180"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.427479" elapsed="0.000457"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.427464" elapsed="0.000495"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.428481" level="INFO">${j} = 91</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:19.428102" elapsed="0.000405"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.429262" level="INFO">${item} =         {
          "group-id": 91000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:19.428661" elapsed="0.000629"/>
</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="PASS" start="2026-04-08T00:58:19.429445" elapsed="0.000180"/>
</kw>
<var name="${iteration}">91</var>
<status status="PASS" start="2026-04-08T00:58:19.427434" elapsed="0.002227"/>
</iter>
<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="PASS" start="2026-04-08T00:58:19.430216" elapsed="0.000184"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.429953" elapsed="0.000485"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.429821" elapsed="0.000641"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.430951" level="INFO">${j} = 92</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:19.430605" elapsed="0.000372"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.431725" level="INFO">${item} =         {
          "group-id": 92000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:19.431132" elapsed="0.000655"/>
</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="PASS" start="2026-04-08T00:58:19.431947" elapsed="0.000182"/>
</kw>
<var name="${iteration}">92</var>
<status status="PASS" start="2026-04-08T00:58:19.429791" elapsed="0.002392"/>
</iter>
<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="PASS" start="2026-04-08T00:58:19.432635" elapsed="0.000181"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.432362" elapsed="0.000492"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.432348" elapsed="0.000530"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.433386" level="INFO">${j} = 93</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:19.433021" elapsed="0.000391"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.434167" level="INFO">${item} =         {
          "group-id": 93000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:19.433566" elapsed="0.000631"/>
</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="PASS" start="2026-04-08T00:58:19.434352" elapsed="0.000181"/>
</kw>
<var name="${iteration}">93</var>
<status status="PASS" start="2026-04-08T00:58:19.432317" elapsed="0.002252"/>
</iter>
<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="PASS" start="2026-04-08T00:58:19.434978" elapsed="0.000201"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.434744" elapsed="0.000475"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.434730" elapsed="0.000513"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.435731" level="INFO">${j} = 94</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:19.435386" elapsed="0.000370"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.436533" level="INFO">${item} =         {
          "group-id": 94000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:19.435910" elapsed="0.000651"/>
</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="PASS" start="2026-04-08T00:58:19.436722" elapsed="0.000183"/>
</kw>
<var name="${iteration}">94</var>
<status status="PASS" start="2026-04-08T00:58:19.434700" elapsed="0.002243"/>
</iter>
<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="PASS" start="2026-04-08T00:58:19.437372" elapsed="0.000198"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.437119" elapsed="0.000491"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.437104" elapsed="0.000530"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.438125" level="INFO">${j} = 95</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:19.437777" elapsed="0.000374"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.438903" level="INFO">${item} =         {
          "group-id": 95000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:19.438329" elapsed="0.000602"/>
</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="PASS" start="2026-04-08T00:58:19.439086" elapsed="0.000200"/>
</kw>
<var name="${iteration}">95</var>
<status status="PASS" start="2026-04-08T00:58:19.437074" elapsed="0.002251"/>
</iter>
<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="PASS" start="2026-04-08T00:58:19.439739" elapsed="0.000181"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.439504" elapsed="0.000455"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.439487" elapsed="0.000496"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.440549" level="INFO">${j} = 96</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:19.440125" elapsed="0.000451"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.441343" level="INFO">${item} =         {
          "group-id": 96000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:19.440737" elapsed="0.000635"/>
</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="PASS" start="2026-04-08T00:58:19.441545" elapsed="0.000209"/>
</kw>
<var name="${iteration}">96</var>
<status status="PASS" start="2026-04-08T00:58:19.439457" elapsed="0.002337"/>
</iter>
<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="PASS" start="2026-04-08T00:58:19.442227" elapsed="0.000184"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.441971" elapsed="0.000479"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.441956" elapsed="0.000517"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.443125" level="INFO">${j} = 97</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:19.442768" elapsed="0.000443"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.443960" level="INFO">${item} =         {
          "group-id": 97000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:19.443376" elapsed="0.000613"/>
</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="PASS" start="2026-04-08T00:58:19.444151" elapsed="0.000220"/>
</kw>
<var name="${iteration}">97</var>
<status status="PASS" start="2026-04-08T00:58:19.441926" elapsed="0.002507"/>
</iter>
<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="PASS" start="2026-04-08T00:58:19.444852" elapsed="0.000190"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.444615" elapsed="0.000465"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.444601" elapsed="0.000503"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.445613" level="INFO">${j} = 98</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:19.445266" elapsed="0.000373"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.446378" level="INFO">${item} =         {
          "group-id": 98000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:19.445793" elapsed="0.000614"/>
</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="PASS" start="2026-04-08T00:58:19.446562" elapsed="0.000180"/>
</kw>
<var name="${iteration}">98</var>
<status status="PASS" start="2026-04-08T00:58:19.444570" elapsed="0.002209"/>
</iter>
<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="PASS" start="2026-04-08T00:58:19.447328" elapsed="0.000186"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.447069" elapsed="0.000483"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.446941" elapsed="0.000636"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.448068" level="INFO">${j} = 99</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:19.447722" elapsed="0.000372"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.448876" level="INFO">${item} =         {
          "group-id": 99000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:19.448265" elapsed="0.000639"/>
</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="PASS" start="2026-04-08T00:58:19.449066" elapsed="0.000247"/>
</kw>
<var name="${iteration}">99</var>
<status status="PASS" start="2026-04-08T00:58:19.446911" elapsed="0.002442"/>
</iter>
<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="PASS" start="2026-04-08T00:58:19.449771" elapsed="0.000180"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.449533" elapsed="0.000456"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.449518" elapsed="0.000496"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.450524" level="INFO">${j} = 100</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:19.450171" elapsed="0.000379"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.451313" level="INFO">${item} =         {
          "group-id": 100000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
        ...</msg>
<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="PASS" start="2026-04-08T00:58:19.450705" elapsed="0.000638"/>
</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="PASS" start="2026-04-08T00:58:19.451500" elapsed="0.000181"/>
</kw>
<var name="${iteration}">100</var>
<status status="PASS" start="2026-04-08T00:58:19.449488" elapsed="0.002230"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="PASS" start="2026-04-08T00:58:19.210250" elapsed="0.241498"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.453055" level="INFO">${final_text} = {
  "flow-node-inventory:group": [
        {
          "group-id": 1000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
   ...</msg>
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:58:19.451903" elapsed="0.001180"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T00:58:19.453141" elapsed="0.000051"/>
</return>
<msg time="2026-04-08T00:58:19.453325" level="INFO">${data} = {
  "flow-node-inventory:group": [
        {
          "group-id": 1000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
   ...</msg>
<var>${data}</var>
<arg>folder=${folder}</arg>
<arg>name_prefix=post_</arg>
<arg>base_name=${base_name}</arg>
<arg>extension=${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>endline=${endline}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one 100 times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-08T00:58:19.154580" elapsed="0.298772"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:58:19.454694" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-1/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:58:19.454448" elapsed="0.000317">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-1/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-08T00:58:19.454855" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:58:19.454088" elapsed="0.000791"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:19.455215" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:19.454951" elapsed="0.000324"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.455788" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:58:19.455500" elapsed="0.000314"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.455309" elapsed="0.000539"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.454932" elapsed="0.000937"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.458246" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:58:19.456022" elapsed="0.002250"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-08T00:58:19.458322" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:58:19.458473" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:58:19.453746" elapsed="0.004750"/>
</kw>
<kw name="Post_To_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.460003" level="INFO">/rests/data/opendaylight-inventory:nodes/node=openflow%3A2</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:19.459758" elapsed="0.000290"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.460464" level="INFO">{
  "flow-node-inventory:group": [
        {
          "group-id": 1000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-1",
          "group-type": "group-select"
        },
        {
          "group-id": 2000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-2",
          "group-type": "group-select"
        },
        {
          "group-id": 3000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-3",
          "group-type": "group-select"
        },
        {
          "group-id": 4000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-4",
          "group-type": "group-select"
        },
        {
          "group-id": 5000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-5",
          "group-type": "group-select"
        },
        {
          "group-id": 6000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-6",
          "group-type": "group-select"
        },
        {
          "group-id": 7000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-7",
          "group-type": "group-select"
        },
        {
          "group-id": 8000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-8",
          "group-type": "group-select"
        },
        {
          "group-id": 9000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-9",
          "group-type": "group-select"
        },
        {
          "group-id": 10000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-10",
          "group-type": "group-select"
        },
        {
          "group-id": 11000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-11",
          "group-type": "group-select"
        },
        {
          "group-id": 12000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-12",
          "group-type": "group-select"
        },
        {
          "group-id": 13000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-13",
          "group-type": "group-select"
        },
        {
          "group-id": 14000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-14",
          "group-type": "group-select"
        },
        {
          "group-id": 15000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-15",
          "group-type": "group-select"
        },
        {
          "group-id": 16000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-16",
          "group-type": "group-select"
        },
        {
          "group-id": 17000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-17",
          "group-type": "group-select"
        },
        {
          "group-id": 18000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-18",
          "group-type": "group-select"
        },
        {
          "group-id": 19000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-19",
          "group-type": "group-select"
        },
        {
          "group-id": 20000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-20",
          "group-type": "group-select"
        },
        {
          "group-id": 21000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-21",
          "group-type": "group-select"
        },
        {
          "group-id": 22000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-22",
          "group-type": "group-select"
        },
        {
          "group-id": 23000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-23",
          "group-type": "group-select"
        },
        {
          "group-id": 24000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-24",
          "group-type": "group-select"
        },
        {
          "group-id": 25000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-25",
          "group-type": "group-select"
        },
        {
          "group-id": 26000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-26",
          "group-type": "group-select"
        },
        {
          "group-id": 27000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-27",
          "group-type": "group-select"
        },
        {
          "group-id": 28000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-28",
          "group-type": "group-select"
        },
        {
          "group-id": 29000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-29",
          "group-type": "group-select"
        },
        {
          "group-id": 30000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-30",
          "group-type": "group-select"
        },
        {
          "group-id": 31000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-31",
          "group-type": "group-select"
        },
        {
          "group-id": 32000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-32",
          "group-type": "group-select"
        },
        {
          "group-id": 33000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-33",
          "group-type": "group-select"
        },
        {
          "group-id": 34000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-34",
          "group-type": "group-select"
        },
        {
          "group-id": 35000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-35",
          "group-type": "group-select"
        },
        {
          "group-id": 36000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-36",
          "group-type": "group-select"
        },
        {
          "group-id": 37000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-37",
          "group-type": "group-select"
        },
        {
          "group-id": 38000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-38",
          "group-type": "group-select"
        },
        {
          "group-id": 39000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-39",
          "group-type": "group-select"
        },
        {
          "group-id": 40000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-40",
          "group-type": "group-select"
        },
        {
          "group-id": 41000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-41",
          "group-type": "group-select"
        },
        {
          "group-id": 42000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-42",
          "group-type": "group-select"
        },
        {
          "group-id": 43000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-43",
          "group-type": "group-select"
        },
        {
          "group-id": 44000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-44",
          "group-type": "group-select"
        },
        {
          "group-id": 45000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-45",
          "group-type": "group-select"
        },
        {
          "group-id": 46000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-46",
          "group-type": "group-select"
        },
        {
          "group-id": 47000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-47",
          "group-type": "group-select"
        },
        {
          "group-id": 48000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-48",
          "group-type": "group-select"
        },
        {
          "group-id": 49000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-49",
          "group-type": "group-select"
        },
        {
          "group-id": 50000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-50",
          "group-type": "group-select"
        },
        {
          "group-id": 51000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-51",
          "group-type": "group-select"
        },
        {
          "group-id": 52000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-52",
          "group-type": "group-select"
        },
        {
          "group-id": 53000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-53",
          "group-type": "group-select"
        },
        {
          "group-id": 54000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-54",
          "group-type": "group-select"
        },
        {
          "group-id": 55000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-55",
          "group-type": "group-select"
        },
        {
          "group-id": 56000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-56",
          "group-type": "group-select"
        },
        {
          "group-id": 57000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-57",
          "group-type": "group-select"
        },
        {
          "group-id": 58000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-58",
          "group-type": "group-select"
        },
        {
          "group-id": 59000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-59",
          "group-type": "group-select"
        },
        {
          "group-id": 60000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-60",
          "group-type": "group-select"
        },
        {
          "group-id": 61000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-61",
          "group-type": "group-select"
        },
        {
          "group-id": 62000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-62",
          "group-type": "group-select"
        },
        {
          "group-id": 63000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-63",
          "group-type": "group-select"
        },
        {
          "group-id": 64000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-64",
          "group-type": "group-select"
        },
        {
          "group-id": 65000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-65",
          "group-type": "group-select"
        },
        {
          "group-id": 66000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-66",
          "group-type": "group-select"
        },
        {
          "group-id": 67000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-67",
          "group-type": "group-select"
        },
        {
          "group-id": 68000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-68",
          "group-type": "group-select"
        },
        {
          "group-id": 69000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-69",
          "group-type": "group-select"
        },
        {
          "group-id": 70000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-70",
          "group-type": "group-select"
        },
        {
          "group-id": 71000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-71",
          "group-type": "group-select"
        },
        {
          "group-id": 72000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-72",
          "group-type": "group-select"
        },
        {
          "group-id": 73000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-73",
          "group-type": "group-select"
        },
        {
          "group-id": 74000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-74",
          "group-type": "group-select"
        },
        {
          "group-id": 75000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-75",
          "group-type": "group-select"
        },
        {
          "group-id": 76000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-76",
          "group-type": "group-select"
        },
        {
          "group-id": 77000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-77",
          "group-type": "group-select"
        },
        {
          "group-id": 78000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-78",
          "group-type": "group-select"
        },
        {
          "group-id": 79000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-79",
          "group-type": "group-select"
        },
        {
          "group-id": 80000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-80",
          "group-type": "group-select"
        },
        {
          "group-id": 81000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-81",
          "group-type": "group-select"
        },
        {
          "group-id": 82000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-82",
          "group-type": "group-select"
        },
        {
          "group-id": 83000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-83",
          "group-type": "group-select"
        },
        {
          "group-id": 84000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-84",
          "group-type": "group-select"
        },
        {
          "group-id": 85000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-85",
          "group-type": "group-select"
        },
        {
          "group-id": 86000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-86",
          "group-type": "group-select"
        },
        {
          "group-id": 87000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-87",
          "group-type": "group-select"
        },
        {
          "group-id": 88000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-88",
          "group-type": "group-select"
        },
        {
          "group-id": 89000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-89",
          "group-type": "group-select"
        },
        {
          "group-id": 90000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-90",
          "group-type": "group-select"
        },
        {
          "group-id": 91000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-91",
          "group-type": "group-select"
        },
        {
          "group-id": 92000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-92",
          "group-type": "group-select"
        },
        {
          "group-id": 93000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-93",
          "group-type": "group-select"
        },
        {
          "group-id": 94000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-94",
          "group-type": "group-select"
        },
        {
          "group-id": 95000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-95",
          "group-type": "group-select"
        },
        {
          "group-id": 96000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-96",
          "group-type": "group-select"
        },
        {
          "group-id": 97000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-97",
          "group-type": "group-select"
        },
        {
          "group-id": 98000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-98",
          "group-type": "group-select"
        },
        {
          "group-id": 99000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-99",
          "group-type": "group-select"
        },
        {
          "group-id": 100000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-100",
          "group-type": "group-select"
        }
  ]
}</msg>
<arg>${data}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:19.460214" elapsed="0.000735"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.461370" level="INFO">{'Content-Type': 'application/json'}</msg>
<arg>${content_type}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:19.461108" elapsed="0.000304"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.461798" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:19.461563" elapsed="0.000278"/>
</kw>
<kw name="Join_Two_Headers" owner="TemplatedRequests">
<kw name="Copy Dictionary" owner="Collections">
<msg time="2026-04-08T00:58:19.462658" level="INFO">${accumulator} = {'Content-Type': 'application/json'}</msg>
<var>${accumulator}</var>
<arg>${first}</arg>
<doc>Returns a copy of the given dictionary.</doc>
<status status="PASS" start="2026-04-08T00:58:19.462466" elapsed="0.000218"/>
</kw>
<kw name="Get Dictionary Items" owner="Collections">
<msg time="2026-04-08T00:58:19.463005" level="INFO">${items_to_add} = []</msg>
<var>${items_to_add}</var>
<arg>${second}</arg>
<doc>Returns items of the given ``dictionary`` as a list.</doc>
<status status="PASS" start="2026-04-08T00:58:19.462836" elapsed="0.000194"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${accumulator}</arg>
<arg>@{items_to_add}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:58:19.463193" elapsed="0.000189"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.463775" level="INFO">{'Content-Type': 'application/json'}</msg>
<arg>${accumulator}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:19.463535" elapsed="0.000283"/>
</kw>
<return>
<value>${accumulator}</value>
<status status="PASS" start="2026-04-08T00:58:19.463858" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:58:19.464012" level="INFO">${headers} = {'Content-Type': 'application/json'}</msg>
<var>${headers}</var>
<arg>first=${content_type}</arg>
<arg>second=${accept}</arg>
<doc>Take two dicts, join them, return result. Second argument values take precedence.</doc>
<status status="PASS" start="2026-04-08T00:58:19.462037" elapsed="0.002001"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="POST On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:58:19.496523" level="INFO">POST Request : url=http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A2 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A2 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node01s3bfo0y24i1es90l47mavglv0.node0', 'Content-Length': '52323', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body={
  "flow-node-inventory:group": [
        {
          "group-id": 1000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-1",
          "group-type": "group-select"
        },
        {
          "group-id": 2000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-2",
          "group-type": "group-select"
        },
        {
          "group-id": 3000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-3",
          "group-type": "group-select"
        },
        {
          "group-id": 4000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-4",
          "group-type": "group-select"
        },
        {
          "group-id": 5000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-5",
          "group-type": "group-select"
        },
        {
          "group-id": 6000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-6",
          "group-type": "group-select"
        },
        {
          "group-id": 7000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-7",
          "group-type": "group-select"
        },
        {
          "group-id": 8000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-8",
          "group-type": "group-select"
        },
        {
          "group-id": 9000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-9",
          "group-type": "group-select"
        },
        {
          "group-id": 10000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-10",
          "group-type": "group-select"
        },
        {
          "group-id": 11000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-11",
          "group-type": "group-select"
        },
        {
          "group-id": 12000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-12",
          "group-type": "group-select"
        },
        {
          "group-id": 13000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-13",
          "group-type": "group-select"
        },
        {
          "group-id": 14000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-14",
          "group-type": "group-select"
        },
        {
          "group-id": 15000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-15",
          "group-type": "group-select"
        },
        {
          "group-id": 16000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-16",
          "group-type": "group-select"
        },
        {
          "group-id": 17000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-17",
          "group-type": "group-select"
        },
        {
          "group-id": 18000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-18",
          "group-type": "group-select"
        },
        {
          "group-id": 19000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-19",
          "group-type": "group-select"
        },
        {
          "group-id": 20000,
       ... (set the log level to DEBUG or TRACE to see the full content) 
 </msg>
<msg time="2026-04-08T00:58:19.496741" level="INFO">POST Response : url=http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A2 
 status=201, reason=Created 
 headers={'Location': 'http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A2/flow-node-inventory:group=5000', 'Content-Length': '0'} 
 body=None 
 </msg>
<msg time="2026-04-08T00:58:19.496890" level="INFO">${response} = &lt;Response [201]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:58:19.466340" elapsed="0.030587"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.464278" elapsed="0.032713"/>
</branch>
<branch type="ELSE">
<kw name="POST On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:19.497278" elapsed="0.000032"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:19.497029" elapsed="0.000344"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.464089" elapsed="0.033315"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.502237" level="INFO"/>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:19.498996" elapsed="0.003301"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.498689" elapsed="0.003657"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.498663" elapsed="0.003718"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.505676" level="INFO">201</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:19.502767" elapsed="0.002955"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.502457" elapsed="0.003299"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.502435" elapsed="0.003345"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.506352" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:19.505946" elapsed="0.000433"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:19.506685" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:19.506448" elapsed="0.000293"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.507239" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:58:19.506925" elapsed="0.000340"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.506764" elapsed="0.000535"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.506430" elapsed="0.000890"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.507835" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:19.507479" elapsed="0.000382"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:19.508176" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:19.507929" elapsed="0.000305"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.508725" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:58:19.508419" elapsed="0.000332"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.508258" elapsed="0.000527"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.507911" elapsed="0.000895"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:58:19.508955" elapsed="0.000361"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:58:19.509750" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:19.509481" elapsed="0.000294"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:58:19.509929" elapsed="0.002194"/>
</kw>
<arg>${response}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:58:19.497886" elapsed="0.014314"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:58:19.512375" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:58:19.512271" elapsed="0.000147"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.512254" elapsed="0.000185"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:58:19.514889" level="INFO">${text_normalized} = </msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:58:19.512606" elapsed="0.002309"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:58:19.514961" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:58:19.515112" level="INFO">${response_text} = </msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>data=${data}</arg>
<arg>content_type=${content_type}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>POST data to given URI, check status code and return response text.
${content_type} and ${accept} are mandatory Python objects with headers to use.
If ${normalize_json}, normalize text before returning.</doc>
<status status="PASS" start="2026-04-08T00:58:19.458819" elapsed="0.056318"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:58:19.515255" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:58:19.515409" level="INFO">${response_text} = </msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>extension=json</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>content_type=${HEADERS_YANG_JSON}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>endline=${\n}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve URI and data from folder, call Post_To_Uri, return response text.</doc>
<status status="PASS" start="2026-04-08T00:58:19.069100" elapsed="0.446334"/>
</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=response</arg>
<arg>mapping=${mapping}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:19.515770" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:19.515538" elapsed="0.000298"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.515521" elapsed="0.000338"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:58:19.515891" elapsed="0.000025"/>
</return>
<arg>folder=${VAR_DIR}/add-group-1</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<arg>iterations=${iter}</arg>
<doc>Add arguments sensible for JSON data, return Post_Templated response text.
Optionally, verification against response.json (no iteration) is called.
Only subset of JSON data is verified and returned if JMES path is specified in
file ${folder}/jmespath.expr.
Response status code must be one of values from ${explicit_status_codes} if specified or one of set
created from all positive HTTP status codes together with ${additional_allowed_status_codes}.</doc>
<status status="PASS" start="2026-04-08T00:58:19.066289" elapsed="0.449721"/>
</kw>
<kw name="Post_As_Json_Templated" owner="TemplatedRequests">
<kw name="Post_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.558513" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2.vanadium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:58:19.558125" elapsed="0.000416"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:58:19.559268" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-2.vanadium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:58:19.559036" elapsed="0.000301">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-2.vanadium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-08T00:58:19.559429" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:58:19.558703" elapsed="0.000750"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.559992" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:58:19.559616" elapsed="0.000407"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T00:58:19.560332" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-2/location.uri"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-2/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-08T00:58:19.560472" level="INFO">${template} = /rests/data/opendaylight-inventory:nodes/node=$NODE
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T00:58:19.560198" elapsed="0.000300"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.560912" level="INFO">/rests/data/opendaylight-inventory:nodes/node=$NODE
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:19.560668" elapsed="0.000287"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.561908" level="INFO">mapping: {'NODE': 'openflow:2'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:19.561651" elapsed="0.000302"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.562401" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-08T00:58:19.562113" elapsed="0.000314"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.563351" level="INFO">${value} = openflow:2</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-08T00:58:19.562786" elapsed="0.000591"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-08T00:58:19.564508" level="INFO">${encoded} = openflow%3A2</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-08T00:58:19.564017" elapsed="0.000531"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-08T00:58:19.564694" elapsed="0.000033"/>
</return>
<msg time="2026-04-08T00:58:19.564913" level="INFO">${encoded_value} = openflow%3A2</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-08T00:58:19.563570" elapsed="0.001369"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:58:19.565144" elapsed="0.000508"/>
</kw>
<var name="${key}">NODE</var>
<var name="${value}">openflow:2</var>
<status status="PASS" start="2026-04-08T00:58:19.562647" elapsed="0.003047"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-08T00:58:19.562477" elapsed="0.003251"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-08T00:58:19.565772" elapsed="0.000027"/>
</return>
<msg time="2026-04-08T00:58:19.565925" level="INFO">${mapping_to_use} = {'NODE': 'openflow%3A2'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-08T00:58:19.561327" elapsed="0.004623"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.561022" elapsed="0.004959"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:19.566167" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:19.566005" elapsed="0.000219"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.561003" elapsed="0.005242"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.566910" level="INFO">${final_text} = /rests/data/opendaylight-inventory:nodes/node=openflow%3A2</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:19.566386" elapsed="0.000551"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T00:58:19.566984" elapsed="0.000028"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2/${file_name}.</doc>
<status status="PASS" start="2026-04-08T00:58:19.557512" elapsed="0.009593"/>
</kw>
<msg time="2026-04-08T00:58:19.567171" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:58:19.545003" elapsed="0.022219"/>
</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-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:19.579521" 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-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:19.591539" 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-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:19.603745" elapsed="0.000026"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:19.603939" elapsed="0.000021"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:19.604112" elapsed="0.000020"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:19.604489" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:19.604345" elapsed="0.000199"/>
</branch>
<status status="NOT RUN" start="2026-04-08T00:58:19.604331" elapsed="0.000235"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:19.604740" elapsed="0.000022"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:19.604910" elapsed="0.000019"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:19.605113" elapsed="0.000021"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-08T00:58:19.604303" elapsed="0.000879"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-08T00:58:19.604202" elapsed="0.001007"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:19.605357" elapsed="0.000020"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-08T00:58:19.605432" elapsed="0.000019"/>
</return>
<msg time="2026-04-08T00:58:19.605552" level="INFO">${uri} = /rests/data/opendaylight-inventory:nodes/node=openflow%3A2</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one 100 times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-08T00:58:19.540699" elapsed="0.064878"/>
</kw>
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:58:19.616169" elapsed="0.000333"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.629563" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2.vanadium/post_data.prolog.json</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:58:19.629193" elapsed="0.000398"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:58:19.630302" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-2.vanadium/post_data.prolog.json' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:58:19.630082" elapsed="0.000282">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-2.vanadium/post_data.prolog.json' does not exist.</status>
</kw>
<msg time="2026-04-08T00:58:19.630454" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:58:19.629752" elapsed="0.000725"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.631015" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2/post_data.prolog.json</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:58:19.630639" elapsed="0.000402"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T00:58:19.631349" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-2/post_data.prolog.json"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-2/post_data.prolog.json&lt;/a&gt;'.</msg>
<msg time="2026-04-08T00:58:19.631473" level="INFO">${template} = {
  "flow-node-inventory:group": [
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T00:58:19.631215" elapsed="0.000282"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.631890" level="INFO">{
  "flow-node-inventory:group": [
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:19.631652" elapsed="0.000280"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="NOT RUN" start="2026-04-08T00:58:19.632306" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:19.632001" elapsed="0.000362"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.632838" level="INFO">${mapping_to_use} = {'NODE': 'openflow:2'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:58:19.632532" elapsed="0.000331"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.632387" elapsed="0.000510"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.631980" elapsed="0.000938"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.633501" level="INFO">${final_text} = {
  "flow-node-inventory:group": [</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:19.633062" elapsed="0.000465"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T00:58:19.633574" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:58:19.633721" level="INFO">${prolog} = {
  "flow-node-inventory:group": [</msg>
<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-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2/${file_name}.</doc>
<status status="PASS" start="2026-04-08T00:58:19.628546" elapsed="0.005201"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.646969" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2.vanadium/post_data.epilog.json</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:58:19.646601" elapsed="0.000397"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:58:19.647710" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-2.vanadium/post_data.epilog.json' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:58:19.647510" elapsed="0.000262">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-2.vanadium/post_data.epilog.json' does not exist.</status>
</kw>
<msg time="2026-04-08T00:58:19.647863" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:58:19.647179" elapsed="0.000708"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.648447" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2/post_data.epilog.json</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:58:19.648050" elapsed="0.000424"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T00:58:19.648776" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-2/post_data.epilog.json"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-2/post_data.epilog.json&lt;/a&gt;'.</msg>
<msg time="2026-04-08T00:58:19.648909" level="INFO">${template} =   ]
}
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T00:58:19.648633" elapsed="0.000301"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.649348" level="INFO">  ]
}
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:19.649089" elapsed="0.000301"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="NOT RUN" start="2026-04-08T00:58:19.649749" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:19.649457" elapsed="0.000348"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.650287" level="INFO">${mapping_to_use} = {'NODE': 'openflow:2'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:58:19.649974" elapsed="0.000340"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.649829" elapsed="0.000519"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.649438" elapsed="0.000931"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.650928" level="INFO">${final_text} =   ]
}</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:19.650514" elapsed="0.000448"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T00:58:19.651009" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:58:19.651170" level="INFO">${epilog} =   ]
}</msg>
<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-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2/${file_name}.</doc>
<status status="PASS" start="2026-04-08T00:58:19.645972" elapsed="0.005224"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.664475" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2.vanadium/data.item.json</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:58:19.664089" elapsed="0.000414"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:58:19.665241" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-2.vanadium/data.item.json' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:58:19.665023" elapsed="0.000281">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-2.vanadium/data.item.json' does not exist.</status>
</kw>
<msg time="2026-04-08T00:58:19.665395" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:58:19.664665" elapsed="0.000754"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.665957" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2/data.item.json</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:58:19.665583" elapsed="0.000401"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T00:58:19.666291" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-2/data.item.json"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-2/data.item.json&lt;/a&gt;'.</msg>
<msg time="2026-04-08T00:58:19.666446" level="INFO">${template} =     {
      "group-id": ${i},
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": ${i}000,
            "action": [
              {
               ...</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T00:58:19.666143" elapsed="0.000330"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.666866" level="INFO">    {
      "group-id": ${i},
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": ${i}000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": ${i}000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-${i}",
      "group-type": "group-ff"
    }
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:19.666628" elapsed="0.000285"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="NOT RUN" start="2026-04-08T00:58:19.667280" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:19.666980" elapsed="0.000358"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.667793" level="INFO">${mapping_to_use} = {'NODE': 'openflow:2'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:58:19.667506" elapsed="0.000312"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.667362" elapsed="0.000491"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.666961" elapsed="0.000913"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.668593" level="INFO">${final_text} =     {
      "group-id": ${i},
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": ${i}000,
            "action": [
              {
               ...</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:19.668019" elapsed="0.000602"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T00:58:19.668669" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:58:19.668850" level="INFO">${item_template} =     {
      "group-id": ${i},
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": ${i}000,
            "action": [
              {
               ...</msg>
<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-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2/${file_name}.</doc>
<status status="PASS" start="2026-04-08T00:58:19.663552" elapsed="0.005328"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.669306" level="INFO">${items} = []</msg>
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:58:19.669049" elapsed="0.000282"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.669845" level="INFO">${separator} = ,
</msg>
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:58:19.669489" elapsed="0.000382"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:19.670494" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:19.670260" elapsed="0.000290"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.670246" elapsed="0.000326"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.671060" level="INFO">${j} = 1</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:19.670713" elapsed="0.000372"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.671983" level="INFO">${item} =     {
      "group-id": 1,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 1000,
            "action": [
              {
                "orde...</msg>
<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="PASS" start="2026-04-08T00:58:19.671254" elapsed="0.000757"/>
</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="PASS" start="2026-04-08T00:58:19.672182" elapsed="0.000189"/>
</kw>
<var name="${iteration}">1</var>
<status status="PASS" start="2026-04-08T00:58:19.670214" elapsed="0.002194"/>
</iter>
<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="PASS" start="2026-04-08T00:58:19.672833" elapsed="0.000198"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.672584" elapsed="0.000485"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.672568" elapsed="0.000524"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.673600" level="INFO">${j} = 2</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:19.673252" elapsed="0.000374"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.674374" level="INFO">${item} =     {
      "group-id": 2,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 2000,
            "action": [
              {
                "orde...</msg>
<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="PASS" start="2026-04-08T00:58:19.673781" elapsed="0.000621"/>
</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="PASS" start="2026-04-08T00:58:19.674558" elapsed="0.000181"/>
</kw>
<var name="${iteration}">2</var>
<status status="PASS" start="2026-04-08T00:58:19.672539" elapsed="0.002238"/>
</iter>
<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="PASS" start="2026-04-08T00:58:19.675236" elapsed="0.000184"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.674952" elapsed="0.000506"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.674937" elapsed="0.000545"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.675970" level="INFO">${j} = 3</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:19.675625" elapsed="0.000370"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.676729" level="INFO">${item} =     {
      "group-id": 3,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 3000,
            "action": [
              {
                "orde...</msg>
<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="PASS" start="2026-04-08T00:58:19.676149" elapsed="0.000608"/>
</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="PASS" start="2026-04-08T00:58:19.676940" elapsed="0.000181"/>
</kw>
<var name="${iteration}">3</var>
<status status="PASS" start="2026-04-08T00:58:19.674908" elapsed="0.002265"/>
</iter>
<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="PASS" start="2026-04-08T00:58:19.677585" elapsed="0.000180"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.677350" elapsed="0.000453"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.677335" elapsed="0.000491"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.678335" level="INFO">${j} = 4</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:19.677970" elapsed="0.000391"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.679075" level="INFO">${item} =     {
      "group-id": 4,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 4000,
            "action": [
              {
                "orde...</msg>
<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="PASS" start="2026-04-08T00:58:19.678515" elapsed="0.000588"/>
</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="PASS" start="2026-04-08T00:58:19.679273" elapsed="0.000180"/>
</kw>
<var name="${iteration}">4</var>
<status status="PASS" start="2026-04-08T00:58:19.677306" elapsed="0.002184"/>
</iter>
<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="PASS" start="2026-04-08T00:58:19.679902" elapsed="0.000180"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.679667" elapsed="0.000452"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.679653" elapsed="0.000490"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.680645" level="INFO">${j} = 5</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:19.680302" elapsed="0.000369"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.681415" level="INFO">${item} =     {
      "group-id": 5,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 5000,
            "action": [
              {
                "orde...</msg>
<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="PASS" start="2026-04-08T00:58:19.680836" elapsed="0.000607"/>
</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="PASS" start="2026-04-08T00:58:19.681596" elapsed="0.000180"/>
</kw>
<var name="${iteration}">5</var>
<status status="PASS" start="2026-04-08T00:58:19.679623" elapsed="0.002189"/>
</iter>
<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="PASS" start="2026-04-08T00:58:19.682238" elapsed="0.000183"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.681986" elapsed="0.000472"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.681972" elapsed="0.000509"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.682967" level="INFO">${j} = 6</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:19.682623" elapsed="0.000369"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.683723" level="INFO">${item} =     {
      "group-id": 6,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 6000,
            "action": [
              {
                "orde...</msg>
<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="PASS" start="2026-04-08T00:58:19.683145" elapsed="0.000606"/>
</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="PASS" start="2026-04-08T00:58:19.683903" elapsed="0.000178"/>
</kw>
<var name="${iteration}">6</var>
<status status="PASS" start="2026-04-08T00:58:19.681943" elapsed="0.002175"/>
</iter>
<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="PASS" start="2026-04-08T00:58:19.684544" elapsed="0.000179"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.684309" elapsed="0.000451"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.684295" elapsed="0.000512"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.685323" level="INFO">${j} = 7</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:19.684956" elapsed="0.000394"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.686064" level="INFO">${item} =     {
      "group-id": 7,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 7000,
            "action": [
              {
                "orde...</msg>
<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="PASS" start="2026-04-08T00:58:19.685503" elapsed="0.000589"/>
</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="PASS" start="2026-04-08T00:58:19.686297" elapsed="0.000182"/>
</kw>
<var name="${iteration}">7</var>
<status status="PASS" start="2026-04-08T00:58:19.684265" elapsed="0.002250"/>
</iter>
<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="PASS" start="2026-04-08T00:58:19.686924" elapsed="0.000181"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.686690" elapsed="0.000452"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.686676" elapsed="0.000505"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.687672" level="INFO">${j} = 8</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:19.687326" elapsed="0.000372"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.688553" level="INFO">${item} =     {
      "group-id": 8,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 8000,
            "action": [
              {
                "orde...</msg>
<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="PASS" start="2026-04-08T00:58:19.687853" elapsed="0.000729"/>
</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="PASS" start="2026-04-08T00:58:19.688738" elapsed="0.000203"/>
</kw>
<var name="${iteration}">8</var>
<status status="PASS" start="2026-04-08T00:58:19.686646" elapsed="0.002332"/>
</iter>
<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="PASS" start="2026-04-08T00:58:19.689407" elapsed="0.000180"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.689154" elapsed="0.000471"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.689139" elapsed="0.000510"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.690148" level="INFO">${j} = 9</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:19.689805" elapsed="0.000385"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.690916" level="INFO">${item} =     {
      "group-id": 9,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 9000,
            "action": [
              {
                "orde...</msg>
<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="PASS" start="2026-04-08T00:58:19.690346" elapsed="0.000598"/>
</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="PASS" start="2026-04-08T00:58:19.691100" elapsed="0.000197"/>
</kw>
<var name="${iteration}">9</var>
<status status="PASS" start="2026-04-08T00:58:19.689109" elapsed="0.002226"/>
</iter>
<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="PASS" start="2026-04-08T00:58:19.691746" elapsed="0.000180"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.691508" elapsed="0.000455"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.691494" elapsed="0.000493"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.692490" level="INFO">${j} = 10</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:19.692129" elapsed="0.000387"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.693288" level="INFO">${item} =     {
      "group-id": 10,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 10000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:19.692670" elapsed="0.000646"/>
</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="PASS" start="2026-04-08T00:58:19.693472" elapsed="0.000179"/>
</kw>
<var name="${iteration}">10</var>
<status status="PASS" start="2026-04-08T00:58:19.691464" elapsed="0.002224"/>
</iter>
<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="PASS" start="2026-04-08T00:58:19.694096" elapsed="0.000197"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.693862" elapsed="0.000469"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.693847" elapsed="0.000507"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.694841" level="INFO">${j} = 11</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:19.694497" elapsed="0.000370"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.695599" level="INFO">${item} =     {
      "group-id": 11,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 11000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:19.695020" elapsed="0.000607"/>
</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="PASS" start="2026-04-08T00:58:19.695780" elapsed="0.000180"/>
</kw>
<var name="${iteration}">11</var>
<status status="PASS" start="2026-04-08T00:58:19.693817" elapsed="0.002179"/>
</iter>
<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="PASS" start="2026-04-08T00:58:19.696424" elapsed="0.000180"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.696186" elapsed="0.000455"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.696169" elapsed="0.000496"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.697181" level="INFO">${j} = 12</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:19.696818" elapsed="0.000390"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.697971" level="INFO">${item} =     {
      "group-id": 12,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 12000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:19.697399" elapsed="0.000601"/>
</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="PASS" start="2026-04-08T00:58:19.698174" elapsed="0.000183"/>
</kw>
<var name="${iteration}">12</var>
<status status="PASS" start="2026-04-08T00:58:19.696125" elapsed="0.002269"/>
</iter>
<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="PASS" start="2026-04-08T00:58:19.698806" elapsed="0.000180"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.698571" elapsed="0.000453"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.698557" elapsed="0.000491"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.699553" level="INFO">${j} = 13</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:19.699206" elapsed="0.000373"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.700315" level="INFO">${item} =     {
      "group-id": 13,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 13000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:19.699734" elapsed="0.000609"/>
</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="PASS" start="2026-04-08T00:58:19.700499" elapsed="0.000179"/>
</kw>
<var name="${iteration}">13</var>
<status status="PASS" start="2026-04-08T00:58:19.698527" elapsed="0.002187"/>
</iter>
<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="PASS" start="2026-04-08T00:58:19.701180" elapsed="0.000185"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.700920" elapsed="0.000483"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.700903" elapsed="0.000524"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.701921" level="INFO">${j} = 14</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:19.701575" elapsed="0.000372"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.702688" level="INFO">${item} =     {
      "group-id": 14,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 14000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:19.702103" elapsed="0.000613"/>
</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="PASS" start="2026-04-08T00:58:19.702872" elapsed="0.000184"/>
</kw>
<var name="${iteration}">14</var>
<status status="PASS" start="2026-04-08T00:58:19.700870" elapsed="0.002222"/>
</iter>
<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="PASS" start="2026-04-08T00:58:19.703523" elapsed="0.000179"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.703287" elapsed="0.000452"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.703272" elapsed="0.000491"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.704392" level="INFO">${j} = 15</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:19.703907" elapsed="0.000511"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.705179" level="INFO">${item} =     {
      "group-id": 15,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 15000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:19.704581" elapsed="0.000628"/>
</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="PASS" start="2026-04-08T00:58:19.705490" elapsed="0.000182"/>
</kw>
<var name="${iteration}">15</var>
<status status="PASS" start="2026-04-08T00:58:19.703241" elapsed="0.002468"/>
</iter>
<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="PASS" start="2026-04-08T00:58:19.706120" elapsed="0.000205"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.705884" elapsed="0.000479"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.705869" elapsed="0.000518"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.706876" level="INFO">${j} = 16</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:19.706530" elapsed="0.000372"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.707644" level="INFO">${item} =     {
      "group-id": 16,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 16000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:19.707056" elapsed="0.000616"/>
</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="PASS" start="2026-04-08T00:58:19.707827" elapsed="0.000179"/>
</kw>
<var name="${iteration}">16</var>
<status status="PASS" start="2026-04-08T00:58:19.705839" elapsed="0.002205"/>
</iter>
<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="PASS" start="2026-04-08T00:58:19.708471" elapsed="0.000180"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.708236" elapsed="0.000488"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.708221" elapsed="0.000529"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.709286" level="INFO">${j} = 17</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:19.708920" elapsed="0.000392"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.710036" level="INFO">${item} =     {
      "group-id": 17,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 17000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:19.709469" elapsed="0.000594"/>
</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="PASS" start="2026-04-08T00:58:19.710234" elapsed="0.000182"/>
</kw>
<var name="${iteration}">17</var>
<status status="PASS" start="2026-04-08T00:58:19.708190" elapsed="0.002263"/>
</iter>
<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="PASS" start="2026-04-08T00:58:19.710859" elapsed="0.000180"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.710625" elapsed="0.000451"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.710611" elapsed="0.000489"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.711604" level="INFO">${j} = 18</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:19.711257" elapsed="0.000372"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.712368" level="INFO">${item} =     {
      "group-id": 18,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 18000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:19.711782" elapsed="0.000614"/>
</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="PASS" start="2026-04-08T00:58:19.712552" elapsed="0.000180"/>
</kw>
<var name="${iteration}">18</var>
<status status="PASS" start="2026-04-08T00:58:19.710581" elapsed="0.002187"/>
</iter>
<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="PASS" start="2026-04-08T00:58:19.713207" elapsed="0.000184"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.712956" elapsed="0.000473"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.712942" elapsed="0.000511"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.713942" level="INFO">${j} = 19</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:19.713596" elapsed="0.000372"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.714708" level="INFO">${item} =     {
      "group-id": 19,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 19000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:19.714123" elapsed="0.000612"/>
</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="PASS" start="2026-04-08T00:58:19.714891" elapsed="0.000180"/>
</kw>
<var name="${iteration}">19</var>
<status status="PASS" start="2026-04-08T00:58:19.712911" elapsed="0.002197"/>
</iter>
<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="PASS" start="2026-04-08T00:58:19.715534" elapsed="0.000180"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.715299" elapsed="0.000453"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.715284" elapsed="0.000493"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.716281" level="INFO">${j} = 20</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:19.715919" elapsed="0.000388"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.717067" level="INFO">${item} =     {
      "group-id": 20,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 20000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:19.716461" elapsed="0.000634"/>
</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="PASS" start="2026-04-08T00:58:19.717268" elapsed="0.000181"/>
</kw>
<var name="${iteration}">20</var>
<status status="PASS" start="2026-04-08T00:58:19.715254" elapsed="0.002232"/>
</iter>
<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="PASS" start="2026-04-08T00:58:19.717898" elapsed="0.000179"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.717664" elapsed="0.000451"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.717649" elapsed="0.000490"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.718661" level="INFO">${j} = 21</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:19.718303" elapsed="0.000384"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.719426" level="INFO">${item} =     {
      "group-id": 21,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 21000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:19.718843" elapsed="0.000610"/>
</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="PASS" start="2026-04-08T00:58:19.719607" elapsed="0.000179"/>
</kw>
<var name="${iteration}">21</var>
<status status="PASS" start="2026-04-08T00:58:19.717618" elapsed="0.002238"/>
</iter>
<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="PASS" start="2026-04-08T00:58:19.720292" elapsed="0.000298"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.720040" elapsed="0.000589"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.720025" elapsed="0.000629"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.721171" level="INFO">${j} = 22</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:19.720796" elapsed="0.000403"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.721921" level="INFO">${item} =     {
      "group-id": 22,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 22000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:19.721355" elapsed="0.000594"/>
</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="PASS" start="2026-04-08T00:58:19.722105" elapsed="0.000198"/>
</kw>
<var name="${iteration}">22</var>
<status status="PASS" start="2026-04-08T00:58:19.719990" elapsed="0.002351"/>
</iter>
<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="PASS" start="2026-04-08T00:58:19.722752" elapsed="0.000180"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.722517" elapsed="0.000453"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.722502" elapsed="0.000494"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.723513" level="INFO">${j} = 23</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:19.723140" elapsed="0.000398"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.724276" level="INFO">${item} =     {
      "group-id": 23,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 23000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:19.723693" elapsed="0.000611"/>
</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="PASS" start="2026-04-08T00:58:19.724460" elapsed="0.000180"/>
</kw>
<var name="${iteration}">23</var>
<status status="PASS" start="2026-04-08T00:58:19.722473" elapsed="0.002204"/>
</iter>
<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="PASS" start="2026-04-08T00:58:19.725117" elapsed="0.000199"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.724879" elapsed="0.000475"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.724837" elapsed="0.000541"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.725867" level="INFO">${j} = 24</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:19.725522" elapsed="0.000371"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.726637" level="INFO">${item} =     {
      "group-id": 24,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 24000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:19.726052" elapsed="0.000613"/>
</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="PASS" start="2026-04-08T00:58:19.726819" elapsed="0.000180"/>
</kw>
<var name="${iteration}">24</var>
<status status="PASS" start="2026-04-08T00:58:19.724808" elapsed="0.002228"/>
</iter>
<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="PASS" start="2026-04-08T00:58:19.727465" elapsed="0.000181"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.727229" elapsed="0.000456"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.727214" elapsed="0.000495"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.728213" level="INFO">${j} = 25</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:19.727851" elapsed="0.000389"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.728974" level="INFO">${item} =     {
      "group-id": 25,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 25000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:19.728394" elapsed="0.000609"/>
</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="PASS" start="2026-04-08T00:58:19.729176" elapsed="0.000183"/>
</kw>
<var name="${iteration}">25</var>
<status status="PASS" start="2026-04-08T00:58:19.727183" elapsed="0.002213"/>
</iter>
<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="PASS" start="2026-04-08T00:58:19.729804" elapsed="0.000180"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.729569" elapsed="0.000453"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.729555" elapsed="0.000490"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.730550" level="INFO">${j} = 26</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:19.730204" elapsed="0.000372"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.731311" level="INFO">${item} =     {
      "group-id": 26,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 26000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:19.730729" elapsed="0.000650"/>
</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="PASS" start="2026-04-08T00:58:19.731540" elapsed="0.000182"/>
</kw>
<var name="${iteration}">26</var>
<status status="PASS" start="2026-04-08T00:58:19.729525" elapsed="0.002234"/>
</iter>
<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="PASS" start="2026-04-08T00:58:19.732186" elapsed="0.000185"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.731934" elapsed="0.000474"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.731919" elapsed="0.000513"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.732948" level="INFO">${j} = 27</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:19.732574" elapsed="0.000404"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.733725" level="INFO">${item} =     {
      "group-id": 27,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 27000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:19.733139" elapsed="0.000614"/>
</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="PASS" start="2026-04-08T00:58:19.733908" elapsed="0.000181"/>
</kw>
<var name="${iteration}">27</var>
<status status="PASS" start="2026-04-08T00:58:19.731890" elapsed="0.002236"/>
</iter>
<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="PASS" start="2026-04-08T00:58:19.734557" elapsed="0.000186"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.734319" elapsed="0.000462"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.734305" elapsed="0.000500"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.735309" level="INFO">${j} = 28</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:19.734947" elapsed="0.000388"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.736055" level="INFO">${item} =     {
      "group-id": 28,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 28000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:19.735488" elapsed="0.000594"/>
</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="PASS" start="2026-04-08T00:58:19.736253" elapsed="0.000181"/>
</kw>
<var name="${iteration}">28</var>
<status status="PASS" start="2026-04-08T00:58:19.734274" elapsed="0.002197"/>
</iter>
<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="PASS" start="2026-04-08T00:58:19.737657" elapsed="0.000190"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.736711" elapsed="0.001176"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.736697" elapsed="0.001214"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.738428" level="INFO">${j} = 29</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:19.738056" elapsed="0.000399"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.739202" level="INFO">${item} =     {
      "group-id": 29,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 29000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:19.738612" elapsed="0.000619"/>
</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="PASS" start="2026-04-08T00:58:19.739388" elapsed="0.000182"/>
</kw>
<var name="${iteration}">29</var>
<status status="PASS" start="2026-04-08T00:58:19.736666" elapsed="0.002941"/>
</iter>
<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="PASS" start="2026-04-08T00:58:19.740023" elapsed="0.000198"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.739784" elapsed="0.000475"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.739770" elapsed="0.000513"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.740787" level="INFO">${j} = 30</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:19.740438" elapsed="0.000376"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.741587" level="INFO">${item} =     {
      "group-id": 30,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 30000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:19.740999" elapsed="0.000616"/>
</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="PASS" start="2026-04-08T00:58:19.741786" elapsed="0.000181"/>
</kw>
<var name="${iteration}">30</var>
<status status="PASS" start="2026-04-08T00:58:19.739739" elapsed="0.002269"/>
</iter>
<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="PASS" start="2026-04-08T00:58:19.742441" elapsed="0.000182"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.742204" elapsed="0.000459"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.742188" elapsed="0.000499"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.743192" level="INFO">${j} = 31</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:19.742830" elapsed="0.000422"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.743978" level="INFO">${item} =     {
      "group-id": 31,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 31000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:19.743411" elapsed="0.000595"/>
</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="PASS" start="2026-04-08T00:58:19.744175" elapsed="0.000184"/>
</kw>
<var name="${iteration}">31</var>
<status status="PASS" start="2026-04-08T00:58:19.742142" elapsed="0.002255"/>
</iter>
<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="PASS" start="2026-04-08T00:58:19.744807" elapsed="0.000207"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.744571" elapsed="0.000483"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.744557" elapsed="0.000521"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.745589" level="INFO">${j} = 32</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:19.745239" elapsed="0.000375"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.746353" level="INFO">${item} =     {
      "group-id": 32,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 32000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:19.745770" elapsed="0.000612"/>
</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="PASS" start="2026-04-08T00:58:19.746538" elapsed="0.000181"/>
</kw>
<var name="${iteration}">32</var>
<status status="PASS" start="2026-04-08T00:58:19.744526" elapsed="0.002230"/>
</iter>
<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="PASS" start="2026-04-08T00:58:19.747182" elapsed="0.000183"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.746932" elapsed="0.000472"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.746917" elapsed="0.000511"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.747917" level="INFO">${j} = 33</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:19.747572" elapsed="0.000371"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.748691" level="INFO">${item} =     {
      "group-id": 33,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 33000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:19.748103" elapsed="0.000616"/>
</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="PASS" start="2026-04-08T00:58:19.748900" elapsed="0.000190"/>
</kw>
<var name="${iteration}">33</var>
<status status="PASS" start="2026-04-08T00:58:19.746887" elapsed="0.002242"/>
</iter>
<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="PASS" start="2026-04-08T00:58:19.749560" elapsed="0.000180"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.749325" elapsed="0.000454"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.749310" elapsed="0.000493"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.750308" level="INFO">${j} = 34</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:19.749945" elapsed="0.000389"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.751063" level="INFO">${item} =     {
      "group-id": 34,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 34000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:19.750488" elapsed="0.000602"/>
</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="PASS" start="2026-04-08T00:58:19.751269" elapsed="0.000183"/>
</kw>
<var name="${iteration}">34</var>
<status status="PASS" start="2026-04-08T00:58:19.749280" elapsed="0.002209"/>
</iter>
<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="PASS" start="2026-04-08T00:58:19.751903" elapsed="0.000181"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.751667" elapsed="0.000455"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.751652" elapsed="0.000494"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.752656" level="INFO">${j} = 35</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:19.752309" elapsed="0.000373"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.753448" level="INFO">${item} =     {
      "group-id": 35,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 35000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:19.752837" elapsed="0.000640"/>
</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="PASS" start="2026-04-08T00:58:19.753637" elapsed="0.000186"/>
</kw>
<var name="${iteration}">35</var>
<status status="PASS" start="2026-04-08T00:58:19.751622" elapsed="0.002238"/>
</iter>
<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="PASS" start="2026-04-08T00:58:19.754452" elapsed="0.000188"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.754036" elapsed="0.000643"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.754022" elapsed="0.000682"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.755221" level="INFO">${j} = 36</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:19.754850" elapsed="0.000397"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.755980" level="INFO">${item} =     {
      "group-id": 36,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 36000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:19.755411" elapsed="0.000597"/>
</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="PASS" start="2026-04-08T00:58:19.756180" elapsed="0.000184"/>
</kw>
<var name="${iteration}">36</var>
<status status="PASS" start="2026-04-08T00:58:19.753991" elapsed="0.002411"/>
</iter>
<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="PASS" start="2026-04-08T00:58:19.756816" elapsed="0.000212"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.756579" elapsed="0.000487"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.756564" elapsed="0.000527"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.757605" level="INFO">${j} = 37</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:19.757252" elapsed="0.000380"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.758376" level="INFO">${item} =     {
      "group-id": 37,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 37000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:19.757790" elapsed="0.000615"/>
</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="PASS" start="2026-04-08T00:58:19.758562" elapsed="0.000180"/>
</kw>
<var name="${iteration}">37</var>
<status status="PASS" start="2026-04-08T00:58:19.756534" elapsed="0.002245"/>
</iter>
<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="PASS" start="2026-04-08T00:58:19.759208" elapsed="0.000327"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.758955" elapsed="0.000620"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.758941" elapsed="0.000660"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.760112" level="INFO">${j} = 38</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:19.759745" elapsed="0.000393"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.760892" level="INFO">${item} =     {
      "group-id": 38,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 38000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:19.760321" elapsed="0.000611"/>
</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="PASS" start="2026-04-08T00:58:19.761093" elapsed="0.000200"/>
</kw>
<var name="${iteration}">38</var>
<status status="PASS" start="2026-04-08T00:58:19.758911" elapsed="0.002420"/>
</iter>
<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="PASS" start="2026-04-08T00:58:19.761747" elapsed="0.000181"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.761510" elapsed="0.000455"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.761495" elapsed="0.000494"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.762497" level="INFO">${j} = 39</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:19.762133" elapsed="0.000390"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.763260" level="INFO">${item} =     {
      "group-id": 39,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 39000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:19.762678" elapsed="0.000610"/>
</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="PASS" start="2026-04-08T00:58:19.763444" elapsed="0.000181"/>
</kw>
<var name="${iteration}">39</var>
<status status="PASS" start="2026-04-08T00:58:19.761465" elapsed="0.002198"/>
</iter>
<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="PASS" start="2026-04-08T00:58:19.764077" elapsed="0.000197"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.763839" elapsed="0.000473"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.763825" elapsed="0.000511"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.764823" level="INFO">${j} = 40</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:19.764479" elapsed="0.000370"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.765717" level="INFO">${item} =     {
      "group-id": 40,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 40000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:19.765039" elapsed="0.000706"/>
</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="PASS" start="2026-04-08T00:58:19.765947" elapsed="0.000184"/>
</kw>
<var name="${iteration}">40</var>
<status status="PASS" start="2026-04-08T00:58:19.763795" elapsed="0.002396"/>
</iter>
<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="PASS" start="2026-04-08T00:58:19.766607" elapsed="0.000181"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.766370" elapsed="0.000456"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.766355" elapsed="0.000495"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.767359" level="INFO">${j} = 41</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:19.766994" elapsed="0.000392"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.768115" level="INFO">${item} =     {
      "group-id": 41,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 41000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:19.767543" elapsed="0.000600"/>
</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="PASS" start="2026-04-08T00:58:19.768317" elapsed="0.000183"/>
</kw>
<var name="${iteration}">41</var>
<status status="PASS" start="2026-04-08T00:58:19.766325" elapsed="0.002212"/>
</iter>
<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="PASS" start="2026-04-08T00:58:19.768973" elapsed="0.000200"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.768713" elapsed="0.000500"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.768699" elapsed="0.000538"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.769727" level="INFO">${j} = 42</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:19.769382" elapsed="0.000371"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.770489" level="INFO">${item} =     {
      "group-id": 42,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 42000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:19.769907" elapsed="0.000611"/>
</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="PASS" start="2026-04-08T00:58:19.770672" elapsed="0.000180"/>
</kw>
<var name="${iteration}">42</var>
<status status="PASS" start="2026-04-08T00:58:19.768669" elapsed="0.002220"/>
</iter>
<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="PASS" start="2026-04-08T00:58:19.771487" elapsed="0.000185"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.771240" elapsed="0.000471"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.771091" elapsed="0.000645"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.772251" level="INFO">${j} = 43</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:19.771881" elapsed="0.000397"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.773035" level="INFO">${item} =     {
      "group-id": 43,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 43000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:19.772434" elapsed="0.000630"/>
</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="PASS" start="2026-04-08T00:58:19.773235" elapsed="0.000185"/>
</kw>
<var name="${iteration}">43</var>
<status status="PASS" start="2026-04-08T00:58:19.771060" elapsed="0.002397"/>
</iter>
<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="PASS" start="2026-04-08T00:58:19.773873" elapsed="0.000182"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.773634" elapsed="0.000459"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.773619" elapsed="0.000498"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.774628" level="INFO">${j} = 44</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:19.774276" elapsed="0.000378"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.775395" level="INFO">${item} =     {
      "group-id": 44,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 44000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:19.774810" elapsed="0.000613"/>
</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="PASS" start="2026-04-08T00:58:19.775578" elapsed="0.000181"/>
</kw>
<var name="${iteration}">44</var>
<status status="PASS" start="2026-04-08T00:58:19.773589" elapsed="0.002207"/>
</iter>
<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="PASS" start="2026-04-08T00:58:19.776224" elapsed="0.000182"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.775973" elapsed="0.000470"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.775959" elapsed="0.000508"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.776969" level="INFO">${j} = 45</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:19.776609" elapsed="0.000387"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.777788" level="INFO">${item} =     {
      "group-id": 45,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 45000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:19.777212" elapsed="0.000604"/>
</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="PASS" start="2026-04-08T00:58:19.777972" elapsed="0.000196"/>
</kw>
<var name="${iteration}">45</var>
<status status="PASS" start="2026-04-08T00:58:19.775928" elapsed="0.002280"/>
</iter>
<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="PASS" start="2026-04-08T00:58:19.778624" elapsed="0.000181"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.778386" elapsed="0.000458"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.778371" elapsed="0.000497"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.779378" level="INFO">${j} = 46</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:19.779012" elapsed="0.000393"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.780127" level="INFO">${item} =     {
      "group-id": 46,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 46000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:19.779560" elapsed="0.000609"/>
</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="PASS" start="2026-04-08T00:58:19.780329" elapsed="0.000181"/>
</kw>
<var name="${iteration}">46</var>
<status status="PASS" start="2026-04-08T00:58:19.778341" elapsed="0.002206"/>
</iter>
<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="PASS" start="2026-04-08T00:58:19.780985" elapsed="0.000202"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.780724" elapsed="0.000502"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.780709" elapsed="0.000541"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.781738" level="INFO">${j} = 47</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:19.781394" elapsed="0.000369"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.782528" level="INFO">${item} =     {
      "group-id": 47,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 47000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:19.781916" elapsed="0.000640"/>
</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="PASS" start="2026-04-08T00:58:19.782709" elapsed="0.000181"/>
</kw>
<var name="${iteration}">47</var>
<status status="PASS" start="2026-04-08T00:58:19.780680" elapsed="0.002247"/>
</iter>
<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="PASS" start="2026-04-08T00:58:19.783362" elapsed="0.000180"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.783109" elapsed="0.000471"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.783093" elapsed="0.000511"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.784089" level="INFO">${j} = 48</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:19.783746" elapsed="0.000368"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.784855" level="INFO">${item} =     {
      "group-id": 48,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 48000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:19.784290" elapsed="0.000592"/>
</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="PASS" start="2026-04-08T00:58:19.785053" elapsed="0.000200"/>
</kw>
<var name="${iteration}">48</var>
<status status="PASS" start="2026-04-08T00:58:19.783063" elapsed="0.002228"/>
</iter>
<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="PASS" start="2026-04-08T00:58:19.785699" elapsed="0.000187"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.785466" elapsed="0.000457"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.785451" elapsed="0.000499"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.786458" level="INFO">${j} = 49</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:19.786096" elapsed="0.000388"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.787223" level="INFO">${item} =     {
      "group-id": 49,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 49000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:19.786637" elapsed="0.000615"/>
</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="PASS" start="2026-04-08T00:58:19.787405" elapsed="0.000181"/>
</kw>
<var name="${iteration}">49</var>
<status status="PASS" start="2026-04-08T00:58:19.785422" elapsed="0.002202"/>
</iter>
<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="PASS" start="2026-04-08T00:58:19.788166" elapsed="0.000320"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.787910" elapsed="0.000647"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.787784" elapsed="0.000800"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.789110" level="INFO">${j} = 50</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:19.788731" elapsed="0.000413"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.789889" level="INFO">${item} =     {
      "group-id": 50,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 50000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:19.789317" elapsed="0.000599"/>
</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="PASS" start="2026-04-08T00:58:19.790072" elapsed="0.000198"/>
</kw>
<var name="${iteration}">50</var>
<status status="PASS" start="2026-04-08T00:58:19.787754" elapsed="0.002554"/>
</iter>
<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="PASS" start="2026-04-08T00:58:19.790719" elapsed="0.000181"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.790484" elapsed="0.000454"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.790470" elapsed="0.000492"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.791471" level="INFO">${j} = 51</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:19.791103" elapsed="0.000394"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.792237" level="INFO">${item} =     {
      "group-id": 51,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 51000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:19.791652" elapsed="0.000613"/>
</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="PASS" start="2026-04-08T00:58:19.792420" elapsed="0.000182"/>
</kw>
<var name="${iteration}">51</var>
<status status="PASS" start="2026-04-08T00:58:19.790440" elapsed="0.002200"/>
</iter>
<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="PASS" start="2026-04-08T00:58:19.793066" elapsed="0.000200"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.792814" elapsed="0.000490"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.792800" elapsed="0.000529"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.793820" level="INFO">${j} = 52</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:19.793472" elapsed="0.000374"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.794588" level="INFO">${item} =     {
      "group-id": 52,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 52000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:19.794001" elapsed="0.000615"/>
</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="PASS" start="2026-04-08T00:58:19.794773" elapsed="0.000180"/>
</kw>
<var name="${iteration}">52</var>
<status status="PASS" start="2026-04-08T00:58:19.792769" elapsed="0.002220"/>
</iter>
<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="PASS" start="2026-04-08T00:58:19.795417" elapsed="0.000180"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.795180" elapsed="0.000455"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.795150" elapsed="0.000509"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.796150" level="INFO">${j} = 53</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:19.795802" elapsed="0.000390"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.796915" level="INFO">${item} =     {
      "group-id": 53,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 53000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:19.796348" elapsed="0.000594"/>
</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="PASS" start="2026-04-08T00:58:19.797124" elapsed="0.000197"/>
</kw>
<var name="${iteration}">53</var>
<status status="PASS" start="2026-04-08T00:58:19.795120" elapsed="0.002238"/>
</iter>
<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="PASS" start="2026-04-08T00:58:19.797767" elapsed="0.000183"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.797533" elapsed="0.000454"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.797518" elapsed="0.000494"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.798520" level="INFO">${j} = 54</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:19.798170" elapsed="0.000376"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.799282" level="INFO">${item} =     {
      "group-id": 54,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 54000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:19.798700" elapsed="0.000610"/>
</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="PASS" start="2026-04-08T00:58:19.799463" elapsed="0.000180"/>
</kw>
<var name="${iteration}">54</var>
<status status="PASS" start="2026-04-08T00:58:19.797489" elapsed="0.002230"/>
</iter>
<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="PASS" start="2026-04-08T00:58:19.800135" elapsed="0.000200"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.799898" elapsed="0.000475"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.799883" elapsed="0.000515"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.800889" level="INFO">${j} = 55</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:19.800542" elapsed="0.000373"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.801694" level="INFO">${item} =     {
      "group-id": 55,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 55000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:19.801104" elapsed="0.000618"/>
</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="PASS" start="2026-04-08T00:58:19.801879" elapsed="0.000185"/>
</kw>
<var name="${iteration}">55</var>
<status status="PASS" start="2026-04-08T00:58:19.799852" elapsed="0.002250"/>
</iter>
<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="PASS" start="2026-04-08T00:58:19.802531" elapsed="0.000180"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.802295" elapsed="0.000454"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.802281" elapsed="0.000492"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.803279" level="INFO">${j} = 56</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:19.802916" elapsed="0.000390"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.804025" level="INFO">${item} =     {
      "group-id": 56,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 56000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:19.803461" elapsed="0.000592"/>
</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="PASS" start="2026-04-08T00:58:19.804224" elapsed="0.000181"/>
</kw>
<var name="${iteration}">56</var>
<status status="PASS" start="2026-04-08T00:58:19.802250" elapsed="0.002192"/>
</iter>
<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="PASS" start="2026-04-08T00:58:19.804991" elapsed="0.000206"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.804725" elapsed="0.000512"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.804601" elapsed="0.000660"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.805767" level="INFO">${j} = 57</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:19.805408" elapsed="0.000385"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.806538" level="INFO">${item} =     {
      "group-id": 57,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 57000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:19.805949" elapsed="0.000617"/>
</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="PASS" start="2026-04-08T00:58:19.806720" elapsed="0.000181"/>
</kw>
<var name="${iteration}">57</var>
<status status="PASS" start="2026-04-08T00:58:19.804571" elapsed="0.002368"/>
</iter>
<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="PASS" start="2026-04-08T00:58:19.807367" elapsed="0.000181"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.807113" elapsed="0.000473"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.807098" elapsed="0.000512"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.808105" level="INFO">${j} = 58</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:19.807754" elapsed="0.000377"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.808870" level="INFO">${item} =     {
      "group-id": 58,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 58000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:19.808303" elapsed="0.000595"/>
</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="PASS" start="2026-04-08T00:58:19.809079" elapsed="0.000199"/>
</kw>
<var name="${iteration}">58</var>
<status status="PASS" start="2026-04-08T00:58:19.807068" elapsed="0.002247"/>
</iter>
<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="PASS" start="2026-04-08T00:58:19.809725" elapsed="0.000179"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.809491" elapsed="0.000451"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.809476" elapsed="0.000490"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.810469" level="INFO">${j} = 59</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:19.810109" elapsed="0.000385"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.811369" level="INFO">${item} =     {
      "group-id": 59,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 59000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:19.810772" elapsed="0.000658"/>
</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="PASS" start="2026-04-08T00:58:19.811590" elapsed="0.000183"/>
</kw>
<var name="${iteration}">59</var>
<status status="PASS" start="2026-04-08T00:58:19.809446" elapsed="0.002365"/>
</iter>
<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="PASS" start="2026-04-08T00:58:19.812237" elapsed="0.000183"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.811986" elapsed="0.000471"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.811971" elapsed="0.000511"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.813003" level="INFO">${j} = 60</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:19.812626" elapsed="0.000406"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.813778" level="INFO">${item} =     {
      "group-id": 60,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 60000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:19.813210" elapsed="0.000596"/>
</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="PASS" start="2026-04-08T00:58:19.813962" elapsed="0.000179"/>
</kw>
<var name="${iteration}">60</var>
<status status="PASS" start="2026-04-08T00:58:19.811941" elapsed="0.002252"/>
</iter>
<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="PASS" start="2026-04-08T00:58:19.814602" elapsed="0.000180"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.814370" elapsed="0.000449"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.814355" elapsed="0.000488"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.815351" level="INFO">${j} = 61</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:19.814987" elapsed="0.000390"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.816091" level="INFO">${item} =     {
      "group-id": 61,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 61000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:19.815530" elapsed="0.000589"/>
</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="PASS" start="2026-04-08T00:58:19.816288" elapsed="0.000181"/>
</kw>
<var name="${iteration}">61</var>
<status status="PASS" start="2026-04-08T00:58:19.814325" elapsed="0.002180"/>
</iter>
<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="PASS" start="2026-04-08T00:58:19.816914" elapsed="0.000195"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.816679" elapsed="0.000470"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.816664" elapsed="0.000531"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.817685" level="INFO">${j} = 62</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:19.817340" elapsed="0.000370"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.818446" level="INFO">${item} =     {
      "group-id": 62,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 62000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:19.817863" elapsed="0.000612"/>
</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="PASS" start="2026-04-08T00:58:19.818629" elapsed="0.000179"/>
</kw>
<var name="${iteration}">62</var>
<status status="PASS" start="2026-04-08T00:58:19.816634" elapsed="0.002210"/>
</iter>
<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="PASS" start="2026-04-08T00:58:19.819268" elapsed="0.000180"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.819019" elapsed="0.000466"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.819004" elapsed="0.000505"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.819993" level="INFO">${j} = 63</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:19.819650" elapsed="0.000369"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.820752" level="INFO">${item} =     {
      "group-id": 63,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 63000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:19.820187" elapsed="0.000592"/>
</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="PASS" start="2026-04-08T00:58:19.820932" elapsed="0.000209"/>
</kw>
<var name="${iteration}">63</var>
<status status="PASS" start="2026-04-08T00:58:19.818974" elapsed="0.002220"/>
</iter>
<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="PASS" start="2026-04-08T00:58:19.821725" elapsed="0.000183"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.821481" elapsed="0.000466"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.821356" elapsed="0.000616"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.822482" level="INFO">${j} = 64</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:19.822117" elapsed="0.000423"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.823289" level="INFO">${item} =     {
      "group-id": 64,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 64000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:19.822700" elapsed="0.000618"/>
</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="PASS" start="2026-04-08T00:58:19.823475" elapsed="0.000190"/>
</kw>
<var name="${iteration}">64</var>
<status status="PASS" start="2026-04-08T00:58:19.821326" elapsed="0.002377"/>
</iter>
<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="PASS" start="2026-04-08T00:58:19.824119" elapsed="0.000198"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.823879" elapsed="0.000476"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.823864" elapsed="0.000515"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.824866" level="INFO">${j} = 65</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:19.824521" elapsed="0.000371"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.825653" level="INFO">${item} =     {
      "group-id": 65,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 65000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:19.825068" elapsed="0.000613"/>
</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="PASS" start="2026-04-08T00:58:19.825835" elapsed="0.000179"/>
</kw>
<var name="${iteration}">65</var>
<status status="PASS" start="2026-04-08T00:58:19.823834" elapsed="0.002217"/>
</iter>
<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="PASS" start="2026-04-08T00:58:19.826476" elapsed="0.000180"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.826242" elapsed="0.000452"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.826228" elapsed="0.000490"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.827228" level="INFO">${j} = 66</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:19.826861" elapsed="0.000393"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.827975" level="INFO">${item} =     {
      "group-id": 66,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 66000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:19.827408" elapsed="0.000595"/>
</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="PASS" start="2026-04-08T00:58:19.828173" elapsed="0.000181"/>
</kw>
<var name="${iteration}">66</var>
<status status="PASS" start="2026-04-08T00:58:19.826196" elapsed="0.002195"/>
</iter>
<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="PASS" start="2026-04-08T00:58:19.828801" elapsed="0.000179"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.828567" elapsed="0.000475"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.828553" elapsed="0.000515"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.829580" level="INFO">${j} = 67</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:19.829232" elapsed="0.000374"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.830341" level="INFO">${item} =     {
      "group-id": 67,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 67000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:19.829760" elapsed="0.000608"/>
</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="PASS" start="2026-04-08T00:58:19.830521" elapsed="0.000179"/>
</kw>
<var name="${iteration}">67</var>
<status status="PASS" start="2026-04-08T00:58:19.828522" elapsed="0.002215"/>
</iter>
<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="PASS" start="2026-04-08T00:58:19.831143" elapsed="0.000196"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.830911" elapsed="0.000466"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.830897" elapsed="0.000503"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.831886" level="INFO">${j} = 68</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:19.831543" elapsed="0.000368"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.832645" level="INFO">${item} =     {
      "group-id": 68,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 68000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:19.832064" elapsed="0.000609"/>
</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="PASS" start="2026-04-08T00:58:19.832826" elapsed="0.000194"/>
</kw>
<var name="${iteration}">68</var>
<status status="PASS" start="2026-04-08T00:58:19.830867" elapsed="0.002193"/>
</iter>
<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="PASS" start="2026-04-08T00:58:19.833530" elapsed="0.000184"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.833259" elapsed="0.000494"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.833242" elapsed="0.000535"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.834283" level="INFO">${j} = 69</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:19.833920" elapsed="0.000390"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.835032" level="INFO">${item} =     {
      "group-id": 69,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 69000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:19.834466" elapsed="0.000593"/>
</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="PASS" start="2026-04-08T00:58:19.835231" elapsed="0.000184"/>
</kw>
<var name="${iteration}">69</var>
<status status="PASS" start="2026-04-08T00:58:19.833211" elapsed="0.002241"/>
</iter>
<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="PASS" start="2026-04-08T00:58:19.835863" elapsed="0.000181"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.835630" elapsed="0.000452"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.835615" elapsed="0.000491"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.836609" level="INFO">${j} = 70</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:19.836264" elapsed="0.000371"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.837408" level="INFO">${item} =     {
      "group-id": 70,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 70000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:19.836789" elapsed="0.000647"/>
</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="PASS" start="2026-04-08T00:58:19.837590" elapsed="0.000181"/>
</kw>
<var name="${iteration}">70</var>
<status status="PASS" start="2026-04-08T00:58:19.835585" elapsed="0.002223"/>
</iter>
<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="PASS" start="2026-04-08T00:58:19.838357" elapsed="0.000186"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.838097" elapsed="0.000485"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.837971" elapsed="0.000635"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.839099" level="INFO">${j} = 71</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:19.838750" elapsed="0.000374"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.839868" level="INFO">${item} =     {
      "group-id": 71,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 71000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:19.839299" elapsed="0.000597"/>
</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="PASS" start="2026-04-08T00:58:19.840058" elapsed="0.000197"/>
</kw>
<var name="${iteration}">71</var>
<status status="PASS" start="2026-04-08T00:58:19.837941" elapsed="0.002352"/>
</iter>
<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="PASS" start="2026-04-08T00:58:19.840705" elapsed="0.000181"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.840471" elapsed="0.000453"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.840456" elapsed="0.000492"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.841487" level="INFO">${j} = 72</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:19.841106" elapsed="0.000407"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.842316" level="INFO">${item} =     {
      "group-id": 72,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 72000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:19.841669" elapsed="0.000675"/>
</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="PASS" start="2026-04-08T00:58:19.842499" elapsed="0.000180"/>
</kw>
<var name="${iteration}">72</var>
<status status="PASS" start="2026-04-08T00:58:19.840426" elapsed="0.002290"/>
</iter>
<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="PASS" start="2026-04-08T00:58:19.843131" elapsed="0.000199"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.842892" elapsed="0.000477"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.842878" elapsed="0.000515"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.843881" level="INFO">${j} = 73</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:19.843537" elapsed="0.000370"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.844644" level="INFO">${item} =     {
      "group-id": 73,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 73000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:19.844062" elapsed="0.000609"/>
</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="PASS" start="2026-04-08T00:58:19.844865" elapsed="0.000224"/>
</kw>
<var name="${iteration}">73</var>
<status status="PASS" start="2026-04-08T00:58:19.842847" elapsed="0.002284"/>
</iter>
<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="PASS" start="2026-04-08T00:58:19.845565" elapsed="0.000180"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.845327" elapsed="0.000456"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.845312" elapsed="0.000495"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.846318" level="INFO">${j} = 74</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:19.845950" elapsed="0.000394"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.847063" level="INFO">${item} =     {
      "group-id": 74,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 74000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:19.846499" elapsed="0.000591"/>
</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="PASS" start="2026-04-08T00:58:19.847260" elapsed="0.000184"/>
</kw>
<var name="${iteration}">74</var>
<status status="PASS" start="2026-04-08T00:58:19.845281" elapsed="0.002200"/>
</iter>
<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="PASS" start="2026-04-08T00:58:19.847889" elapsed="0.000180"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.847656" elapsed="0.000451"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.847642" elapsed="0.000489"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.848636" level="INFO">${j} = 75</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:19.848289" elapsed="0.000373"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.849414" level="INFO">${item} =     {
      "group-id": 75,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 75000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:19.848814" elapsed="0.000628"/>
</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="PASS" start="2026-04-08T00:58:19.849597" elapsed="0.000180"/>
</kw>
<var name="${iteration}">75</var>
<status status="PASS" start="2026-04-08T00:58:19.847612" elapsed="0.002201"/>
</iter>
<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="PASS" start="2026-04-08T00:58:19.850243" elapsed="0.000181"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.849989" elapsed="0.000472"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.849975" elapsed="0.000510"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.850977" level="INFO">${j} = 76</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:19.850627" elapsed="0.000376"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.851733" level="INFO">${item} =     {
      "group-id": 76,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 76000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:19.851170" elapsed="0.000591"/>
</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="PASS" start="2026-04-08T00:58:19.851913" elapsed="0.000182"/>
</kw>
<var name="${iteration}">76</var>
<status status="PASS" start="2026-04-08T00:58:19.849945" elapsed="0.002187"/>
</iter>
<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="PASS" start="2026-04-08T00:58:19.852556" elapsed="0.000181"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.852324" elapsed="0.000450"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.852309" elapsed="0.000489"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.853328" level="INFO">${j} = 77</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:19.852941" elapsed="0.000413"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.854073" level="INFO">${item} =     {
      "group-id": 77,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 77000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:19.853508" elapsed="0.000592"/>
</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="PASS" start="2026-04-08T00:58:19.854275" elapsed="0.000181"/>
</kw>
<var name="${iteration}">77</var>
<status status="PASS" start="2026-04-08T00:58:19.852279" elapsed="0.002215"/>
</iter>
<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="PASS" start="2026-04-08T00:58:19.855019" elapsed="0.000200"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.854779" elapsed="0.000479"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.854655" elapsed="0.000627"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.855777" level="INFO">${j} = 78</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:19.855430" elapsed="0.000374"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.856578" level="INFO">${item} =     {
      "group-id": 78,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 78000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:19.855993" elapsed="0.000613"/>
</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="PASS" start="2026-04-08T00:58:19.856763" elapsed="0.000180"/>
</kw>
<var name="${iteration}">78</var>
<status status="PASS" start="2026-04-08T00:58:19.854624" elapsed="0.002357"/>
</iter>
<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="PASS" start="2026-04-08T00:58:19.857424" elapsed="0.000181"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.857188" elapsed="0.000455"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.857172" elapsed="0.000495"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.858167" level="INFO">${j} = 79</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:19.857809" elapsed="0.000386"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.858927" level="INFO">${item} =     {
      "group-id": 79,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 79000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:19.858351" elapsed="0.000604"/>
</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="PASS" start="2026-04-08T00:58:19.859114" elapsed="0.000197"/>
</kw>
<var name="${iteration}">79</var>
<status status="PASS" start="2026-04-08T00:58:19.857127" elapsed="0.002222"/>
</iter>
<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="PASS" start="2026-04-08T00:58:19.859756" elapsed="0.000180"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.859523" elapsed="0.000451"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.859509" elapsed="0.000489"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.860503" level="INFO">${j} = 80</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:19.860138" elapsed="0.000391"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.861291" level="INFO">${item} =     {
      "group-id": 80,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 80000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:19.860682" elapsed="0.000637"/>
</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="PASS" start="2026-04-08T00:58:19.861473" elapsed="0.000179"/>
</kw>
<var name="${iteration}">80</var>
<status status="PASS" start="2026-04-08T00:58:19.859479" elapsed="0.002209"/>
</iter>
<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="PASS" start="2026-04-08T00:58:19.862099" elapsed="0.000197"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.861865" elapsed="0.000469"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.861851" elapsed="0.000507"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.862846" level="INFO">${j} = 81</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:19.862500" elapsed="0.000372"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.863613" level="INFO">${item} =     {
      "group-id": 81,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 81000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:19.863028" elapsed="0.000613"/>
</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="PASS" start="2026-04-08T00:58:19.863795" elapsed="0.000179"/>
</kw>
<var name="${iteration}">81</var>
<status status="PASS" start="2026-04-08T00:58:19.861820" elapsed="0.002191"/>
</iter>
<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="PASS" start="2026-04-08T00:58:19.864441" elapsed="0.000179"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.864206" elapsed="0.000452"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.864190" elapsed="0.000492"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.865293" level="INFO">${j} = 82</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:19.864901" elapsed="0.000419"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.866040" level="INFO">${item} =     {
      "group-id": 82,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 82000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:19.865475" elapsed="0.000593"/>
</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="PASS" start="2026-04-08T00:58:19.866239" elapsed="0.000180"/>
</kw>
<var name="${iteration}">82</var>
<status status="PASS" start="2026-04-08T00:58:19.864144" elapsed="0.002313"/>
</iter>
<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="PASS" start="2026-04-08T00:58:19.866865" elapsed="0.000178"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.866631" elapsed="0.000490"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.866617" elapsed="0.000532"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.867662" level="INFO">${j} = 83</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:19.867314" elapsed="0.000374"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.868428" level="INFO">${item} =     {
      "group-id": 83,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 83000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:19.867842" elapsed="0.000614"/>
</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="PASS" start="2026-04-08T00:58:19.868612" elapsed="0.000181"/>
</kw>
<var name="${iteration}">83</var>
<status status="PASS" start="2026-04-08T00:58:19.866587" elapsed="0.002244"/>
</iter>
<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="PASS" start="2026-04-08T00:58:19.869285" elapsed="0.000185"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.869006" elapsed="0.000502"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.868991" elapsed="0.000541"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.870023" level="INFO">${j} = 84</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:19.869676" elapsed="0.000373"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.870787" level="INFO">${item} =     {
      "group-id": 84,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 84000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:19.870218" elapsed="0.000597"/>
</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="PASS" start="2026-04-08T00:58:19.870969" elapsed="0.000201"/>
</kw>
<var name="${iteration}">84</var>
<status status="PASS" start="2026-04-08T00:58:19.868961" elapsed="0.002247"/>
</iter>
<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="PASS" start="2026-04-08T00:58:19.871732" elapsed="0.000182"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.871491" elapsed="0.000460"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.871369" elapsed="0.000606"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.872619" level="INFO">${j} = 85</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:19.872118" elapsed="0.000527"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.873408" level="INFO">${item} =     {
      "group-id": 85,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 85000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:19.872801" elapsed="0.000635"/>
</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="PASS" start="2026-04-08T00:58:19.873591" elapsed="0.000181"/>
</kw>
<var name="${iteration}">85</var>
<status status="PASS" start="2026-04-08T00:58:19.871339" elapsed="0.002470"/>
</iter>
<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="PASS" start="2026-04-08T00:58:19.874244" elapsed="0.000183"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.873984" elapsed="0.000481"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.873969" elapsed="0.000520"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.874976" level="INFO">${j} = 86</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:19.874631" elapsed="0.000371"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.875741" level="INFO">${item} =     {
      "group-id": 86,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 86000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:19.875171" elapsed="0.000598"/>
</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="PASS" start="2026-04-08T00:58:19.875923" elapsed="0.000179"/>
</kw>
<var name="${iteration}">86</var>
<status status="PASS" start="2026-04-08T00:58:19.873939" elapsed="0.002199"/>
</iter>
<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="PASS" start="2026-04-08T00:58:19.876565" elapsed="0.000178"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.876331" elapsed="0.000450"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.876317" elapsed="0.000487"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.877338" level="INFO">${j} = 87</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:19.876946" elapsed="0.000418"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.878083" level="INFO">${item} =     {
      "group-id": 87,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 87000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:19.877520" elapsed="0.000590"/>
</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="PASS" start="2026-04-08T00:58:19.878288" elapsed="0.000181"/>
</kw>
<var name="${iteration}">87</var>
<status status="PASS" start="2026-04-08T00:58:19.876286" elapsed="0.002256"/>
</iter>
<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="PASS" start="2026-04-08T00:58:19.878955" elapsed="0.000179"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.878720" elapsed="0.000468"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.878705" elapsed="0.000508"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.879702" level="INFO">${j} = 88</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:19.879355" elapsed="0.000372"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.880460" level="INFO">${item} =     {
      "group-id": 88,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 88000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:19.879880" elapsed="0.000607"/>
</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="PASS" start="2026-04-08T00:58:19.880642" elapsed="0.000179"/>
</kw>
<var name="${iteration}">88</var>
<status status="PASS" start="2026-04-08T00:58:19.878675" elapsed="0.002183"/>
</iter>
<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="PASS" start="2026-04-08T00:58:19.881310" elapsed="0.000180"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.881032" elapsed="0.000496"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.881018" elapsed="0.000534"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.882039" level="INFO">${j} = 89</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:19.881695" elapsed="0.000370"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.882801" level="INFO">${item} =     {
      "group-id": 89,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 89000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:19.882236" elapsed="0.000593"/>
</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="PASS" start="2026-04-08T00:58:19.882983" elapsed="0.000199"/>
</kw>
<var name="${iteration}">89</var>
<status status="PASS" start="2026-04-08T00:58:19.880988" elapsed="0.002232"/>
</iter>
<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="PASS" start="2026-04-08T00:58:19.883629" elapsed="0.000180"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.883395" elapsed="0.000451"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.883381" elapsed="0.000489"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.884374" level="INFO">${j} = 90</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:19.884012" elapsed="0.000387"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.885138" level="INFO">${item} =     {
      "group-id": 90,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 90000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:19.884553" elapsed="0.000637"/>
</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="PASS" start="2026-04-08T00:58:19.885347" elapsed="0.000179"/>
</kw>
<var name="${iteration}">90</var>
<status status="PASS" start="2026-04-08T00:58:19.883351" elapsed="0.002212"/>
</iter>
<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="PASS" start="2026-04-08T00:58:19.885972" elapsed="0.000201"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.885737" elapsed="0.000476"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.885723" elapsed="0.000515"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.886726" level="INFO">${j} = 91</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:19.886381" elapsed="0.000371"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.887488" level="INFO">${item} =     {
      "group-id": 91,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 91000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:19.886906" elapsed="0.000609"/>
</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="PASS" start="2026-04-08T00:58:19.887670" elapsed="0.000180"/>
</kw>
<var name="${iteration}">91</var>
<status status="PASS" start="2026-04-08T00:58:19.885693" elapsed="0.002194"/>
</iter>
<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="PASS" start="2026-04-08T00:58:19.888520" elapsed="0.000182"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.888188" elapsed="0.000553"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.888047" elapsed="0.000718"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.889286" level="INFO">${j} = 92</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:19.888909" elapsed="0.000404"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.890040" level="INFO">${item} =     {
      "group-id": 92,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 92000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:19.889467" elapsed="0.000634"/>
</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="PASS" start="2026-04-08T00:58:19.890276" elapsed="0.000183"/>
</kw>
<var name="${iteration}">92</var>
<status status="PASS" start="2026-04-08T00:58:19.888017" elapsed="0.002480"/>
</iter>
<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="PASS" start="2026-04-08T00:58:19.890907" elapsed="0.000181"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.890672" elapsed="0.000454"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.890657" elapsed="0.000493"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.891655" level="INFO">${j} = 93</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:19.891311" elapsed="0.000369"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.892418" level="INFO">${item} =     {
      "group-id": 93,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 93000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:19.891834" elapsed="0.000612"/>
</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="PASS" start="2026-04-08T00:58:19.892601" elapsed="0.000181"/>
</kw>
<var name="${iteration}">93</var>
<status status="PASS" start="2026-04-08T00:58:19.890628" elapsed="0.002191"/>
</iter>
<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="PASS" start="2026-04-08T00:58:19.893269" elapsed="0.000188"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.892992" elapsed="0.000504"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.892978" elapsed="0.000542"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.894009" level="INFO">${j} = 94</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:19.893663" elapsed="0.000372"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.894790" level="INFO">${item} =     {
      "group-id": 94,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 94000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:19.894205" elapsed="0.000613"/>
</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="PASS" start="2026-04-08T00:58:19.894974" elapsed="0.000195"/>
</kw>
<var name="${iteration}">94</var>
<status status="PASS" start="2026-04-08T00:58:19.892948" elapsed="0.002261"/>
</iter>
<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="PASS" start="2026-04-08T00:58:19.895621" elapsed="0.000181"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.895386" elapsed="0.000454"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.895371" elapsed="0.000493"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.896369" level="INFO">${j} = 95</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:19.896006" elapsed="0.000389"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.897169" level="INFO">${item} =     {
      "group-id": 95,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 95000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:19.896551" elapsed="0.000654"/>
</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="PASS" start="2026-04-08T00:58:19.897366" elapsed="0.000182"/>
</kw>
<var name="${iteration}">95</var>
<status status="PASS" start="2026-04-08T00:58:19.895341" elapsed="0.002244"/>
</iter>
<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="PASS" start="2026-04-08T00:58:19.897995" elapsed="0.000198"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.897761" elapsed="0.000473"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.897746" elapsed="0.000512"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.898747" level="INFO">${j} = 96</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:19.898402" elapsed="0.000372"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.899510" level="INFO">${item} =     {
      "group-id": 96,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 96000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:19.898927" elapsed="0.000611"/>
</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="PASS" start="2026-04-08T00:58:19.899692" elapsed="0.000179"/>
</kw>
<var name="${iteration}">96</var>
<status status="PASS" start="2026-04-08T00:58:19.897716" elapsed="0.002192"/>
</iter>
<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="PASS" start="2026-04-08T00:58:19.900340" elapsed="0.000181"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.900086" elapsed="0.000473"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.900069" elapsed="0.000515"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.901072" level="INFO">${j} = 97</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:19.900727" elapsed="0.000446"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.901914" level="INFO">${item} =     {
      "group-id": 97,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 97000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:19.901338" elapsed="0.000604"/>
</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="PASS" start="2026-04-08T00:58:19.902096" elapsed="0.000199"/>
</kw>
<var name="${iteration}">97</var>
<status status="PASS" start="2026-04-08T00:58:19.900037" elapsed="0.002295"/>
</iter>
<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="PASS" start="2026-04-08T00:58:19.902746" elapsed="0.000183"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.902509" elapsed="0.000458"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.902495" elapsed="0.000496"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.903500" level="INFO">${j} = 98</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:19.903136" elapsed="0.000390"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.904265" level="INFO">${item} =     {
      "group-id": 98,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 98000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:19.903682" elapsed="0.000611"/>
</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="PASS" start="2026-04-08T00:58:19.904448" elapsed="0.000180"/>
</kw>
<var name="${iteration}">98</var>
<status status="PASS" start="2026-04-08T00:58:19.902464" elapsed="0.002200"/>
</iter>
<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="PASS" start="2026-04-08T00:58:19.905234" elapsed="0.000189"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.904948" elapsed="0.000519"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.904825" elapsed="0.000667"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.905986" level="INFO">${j} = 99</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:19.905637" elapsed="0.000376"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.906755" level="INFO">${item} =     {
      "group-id": 99,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 99000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:19.906184" elapsed="0.000599"/>
</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="PASS" start="2026-04-08T00:58:19.906939" elapsed="0.000183"/>
</kw>
<var name="${iteration}">99</var>
<status status="PASS" start="2026-04-08T00:58:19.904794" elapsed="0.002380"/>
</iter>
<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="PASS" start="2026-04-08T00:58:19.907593" elapsed="0.000180"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.907356" elapsed="0.000454"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.907342" elapsed="0.000492"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.908340" level="INFO">${j} = 100</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:19.907977" elapsed="0.000388"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.909089" level="INFO">${item} =     {
      "group-id": 100,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 100000,
            "action": [
              {
                "...</msg>
<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="PASS" start="2026-04-08T00:58:19.908519" elapsed="0.000625"/>
</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="PASS" start="2026-04-08T00:58:19.909321" elapsed="0.000181"/>
</kw>
<var name="${iteration}">100</var>
<status status="PASS" start="2026-04-08T00:58:19.907311" elapsed="0.002227"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="PASS" start="2026-04-08T00:58:19.669925" elapsed="0.239643"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.910813" level="INFO">${final_text} = {
  "flow-node-inventory:group": [
    {
      "group-id": 1,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 1000,
            "action": [
  ...</msg>
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:58:19.909721" elapsed="0.001119"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T00:58:19.910897" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:58:19.911048" level="INFO">${data} = {
  "flow-node-inventory:group": [
    {
      "group-id": 1,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 1000,
            "action": [
  ...</msg>
<var>${data}</var>
<arg>folder=${folder}</arg>
<arg>name_prefix=post_</arg>
<arg>base_name=${base_name}</arg>
<arg>extension=${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>endline=${endline}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one 100 times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-08T00:58:19.615313" elapsed="0.295762"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:58:19.912398" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-2/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:58:19.912133" elapsed="0.000331">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-2/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-08T00:58:19.912555" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:58:19.911799" elapsed="0.000780"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:19.912891" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:19.912649" elapsed="0.000298"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.913501" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:58:19.913201" elapsed="0.000325"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.912971" elapsed="0.000590"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.912631" elapsed="0.000951"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.915956" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:58:19.913733" elapsed="0.002249"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-08T00:58:19.916033" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:58:19.916199" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:58:19.911471" elapsed="0.004753"/>
</kw>
<kw name="Post_To_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.917825" level="INFO">/rests/data/opendaylight-inventory:nodes/node=openflow%3A2</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:19.917577" elapsed="0.000292"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.918280" level="INFO">{
  "flow-node-inventory:group": [
    {
      "group-id": 1,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 1000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 1000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-1",
      "group-type": "group-ff"
    },
    {
      "group-id": 2,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 2000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 2000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-2",
      "group-type": "group-ff"
    },
    {
      "group-id": 3,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 3000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 3000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-3",
      "group-type": "group-ff"
    },
    {
      "group-id": 4,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 4000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 4000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-4",
      "group-type": "group-ff"
    },
    {
      "group-id": 5,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 5000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 5000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-5",
      "group-type": "group-ff"
    },
    {
      "group-id": 6,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 6000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 6000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-6",
      "group-type": "group-ff"
    },
    {
      "group-id": 7,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 7000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 7000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-7",
      "group-type": "group-ff"
    },
    {
      "group-id": 8,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 8000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 8000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-8",
      "group-type": "group-ff"
    },
    {
      "group-id": 9,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 9000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 9000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-9",
      "group-type": "group-ff"
    },
    {
      "group-id": 10,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 10000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 10000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-10",
      "group-type": "group-ff"
    },
    {
      "group-id": 11,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 11000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 11000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-11",
      "group-type": "group-ff"
    },
    {
      "group-id": 12,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 12000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 12000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-12",
      "group-type": "group-ff"
    },
    {
      "group-id": 13,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 13000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 13000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-13",
      "group-type": "group-ff"
    },
    {
      "group-id": 14,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 14000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 14000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-14",
      "group-type": "group-ff"
    },
    {
      "group-id": 15,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 15000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 15000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-15",
      "group-type": "group-ff"
    },
    {
      "group-id": 16,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 16000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 16000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-16",
      "group-type": "group-ff"
    },
    {
      "group-id": 17,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 17000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 17000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-17",
      "group-type": "group-ff"
    },
    {
      "group-id": 18,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 18000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 18000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-18",
      "group-type": "group-ff"
    },
    {
      "group-id": 19,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 19000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 19000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-19",
      "group-type": "group-ff"
    },
    {
      "group-id": 20,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 20000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 20000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-20",
      "group-type": "group-ff"
    },
    {
      "group-id": 21,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 21000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 21000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-21",
      "group-type": "group-ff"
    },
    {
      "group-id": 22,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 22000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 22000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-22",
      "group-type": "group-ff"
    },
    {
      "group-id": 23,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 23000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 23000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-23",
      "group-type": "group-ff"
    },
    {
      "group-id": 24,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 24000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 24000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-24",
      "group-type": "group-ff"
    },
    {
      "group-id": 25,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 25000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 25000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-25",
      "group-type": "group-ff"
    },
    {
      "group-id": 26,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 26000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 26000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-26",
      "group-type": "group-ff"
    },
    {
      "group-id": 27,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 27000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 27000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-27",
      "group-type": "group-ff"
    },
    {
      "group-id": 28,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 28000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 28000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-28",
      "group-type": "group-ff"
    },
    {
      "group-id": 29,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 29000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 29000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-29",
      "group-type": "group-ff"
    },
    {
      "group-id": 30,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 30000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 30000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-30",
      "group-type": "group-ff"
    },
    {
      "group-id": 31,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 31000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 31000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-31",
      "group-type": "group-ff"
    },
    {
      "group-id": 32,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 32000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 32000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-32",
      "group-type": "group-ff"
    },
    {
      "group-id": 33,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 33000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 33000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-33",
      "group-type": "group-ff"
    },
    {
      "group-id": 34,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 34000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 34000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-34",
      "group-type": "group-ff"
    },
    {
      "group-id": 35,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 35000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 35000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-35",
      "group-type": "group-ff"
    },
    {
      "group-id": 36,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 36000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 36000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-36",
      "group-type": "group-ff"
    },
    {
      "group-id": 37,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 37000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 37000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-37",
      "group-type": "group-ff"
    },
    {
      "group-id": 38,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 38000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 38000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-38",
      "group-type": "group-ff"
    },
    {
      "group-id": 39,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 39000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 39000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-39",
      "group-type": "group-ff"
    },
    {
      "group-id": 40,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 40000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 40000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-40",
      "group-type": "group-ff"
    },
    {
      "group-id": 41,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 41000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 41000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-41",
      "group-type": "group-ff"
    },
    {
      "group-id": 42,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 42000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 42000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-42",
      "group-type": "group-ff"
    },
    {
      "group-id": 43,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 43000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 43000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-43",
      "group-type": "group-ff"
    },
    {
      "group-id": 44,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 44000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 44000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-44",
      "group-type": "group-ff"
    },
    {
      "group-id": 45,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 45000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 45000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-45",
      "group-type": "group-ff"
    },
    {
      "group-id": 46,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 46000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 46000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-46",
      "group-type": "group-ff"
    },
    {
      "group-id": 47,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 47000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 47000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-47",
      "group-type": "group-ff"
    },
    {
      "group-id": 48,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 48000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 48000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-48",
      "group-type": "group-ff"
    },
    {
      "group-id": 49,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 49000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 49000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-49",
      "group-type": "group-ff"
    },
    {
      "group-id": 50,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 50000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 50000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-50",
      "group-type": "group-ff"
    },
    {
      "group-id": 51,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 51000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 51000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-51",
      "group-type": "group-ff"
    },
    {
      "group-id": 52,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 52000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 52000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-52",
      "group-type": "group-ff"
    },
    {
      "group-id": 53,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 53000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 53000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-53",
      "group-type": "group-ff"
    },
    {
      "group-id": 54,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 54000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 54000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-54",
      "group-type": "group-ff"
    },
    {
      "group-id": 55,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 55000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 55000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-55",
      "group-type": "group-ff"
    },
    {
      "group-id": 56,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 56000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 56000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-56",
      "group-type": "group-ff"
    },
    {
      "group-id": 57,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 57000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 57000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-57",
      "group-type": "group-ff"
    },
    {
      "group-id": 58,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 58000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 58000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-58",
      "group-type": "group-ff"
    },
    {
      "group-id": 59,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 59000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 59000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-59",
      "group-type": "group-ff"
    },
    {
      "group-id": 60,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 60000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 60000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-60",
      "group-type": "group-ff"
    },
    {
      "group-id": 61,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 61000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 61000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-61",
      "group-type": "group-ff"
    },
    {
      "group-id": 62,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 62000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 62000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-62",
      "group-type": "group-ff"
    },
    {
      "group-id": 63,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 63000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 63000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-63",
      "group-type": "group-ff"
    },
    {
      "group-id": 64,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 64000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 64000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-64",
      "group-type": "group-ff"
    },
    {
      "group-id": 65,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 65000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 65000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-65",
      "group-type": "group-ff"
    },
    {
      "group-id": 66,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 66000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 66000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-66",
      "group-type": "group-ff"
    },
    {
      "group-id": 67,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 67000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 67000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-67",
      "group-type": "group-ff"
    },
    {
      "group-id": 68,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 68000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 68000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-68",
      "group-type": "group-ff"
    },
    {
      "group-id": 69,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 69000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 69000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-69",
      "group-type": "group-ff"
    },
    {
      "group-id": 70,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 70000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 70000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-70",
      "group-type": "group-ff"
    },
    {
      "group-id": 71,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 71000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 71000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-71",
      "group-type": "group-ff"
    },
    {
      "group-id": 72,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 72000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 72000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-72",
      "group-type": "group-ff"
    },
    {
      "group-id": 73,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 73000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 73000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-73",
      "group-type": "group-ff"
    },
    {
      "group-id": 74,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 74000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 74000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-74",
      "group-type": "group-ff"
    },
    {
      "group-id": 75,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 75000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 75000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-75",
      "group-type": "group-ff"
    },
    {
      "group-id": 76,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 76000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 76000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-76",
      "group-type": "group-ff"
    },
    {
      "group-id": 77,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 77000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 77000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-77",
      "group-type": "group-ff"
    },
    {
      "group-id": 78,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 78000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 78000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-78",
      "group-type": "group-ff"
    },
    {
      "group-id": 79,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 79000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 79000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-79",
      "group-type": "group-ff"
    },
    {
      "group-id": 80,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 80000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 80000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-80",
      "group-type": "group-ff"
    },
    {
      "group-id": 81,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 81000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 81000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-81",
      "group-type": "group-ff"
    },
    {
      "group-id": 82,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 82000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 82000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-82",
      "group-type": "group-ff"
    },
    {
      "group-id": 83,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 83000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 83000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-83",
      "group-type": "group-ff"
    },
    {
      "group-id": 84,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 84000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 84000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-84",
      "group-type": "group-ff"
    },
    {
      "group-id": 85,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 85000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 85000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-85",
      "group-type": "group-ff"
    },
    {
      "group-id": 86,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 86000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 86000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-86",
      "group-type": "group-ff"
    },
    {
      "group-id": 87,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 87000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 87000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-87",
      "group-type": "group-ff"
    },
    {
      "group-id": 88,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 88000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 88000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-88",
      "group-type": "group-ff"
    },
    {
      "group-id": 89,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 89000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 89000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-89",
      "group-type": "group-ff"
    },
    {
      "group-id": 90,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 90000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 90000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-90",
      "group-type": "group-ff"
    },
    {
      "group-id": 91,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 91000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 91000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-91",
      "group-type": "group-ff"
    },
    {
      "group-id": 92,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 92000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 92000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-92",
      "group-type": "group-ff"
    },
    {
      "group-id": 93,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 93000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 93000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-93",
      "group-type": "group-ff"
    },
    {
      "group-id": 94,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 94000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 94000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-94",
      "group-type": "group-ff"
    },
    {
      "group-id": 95,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 95000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 95000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-95",
      "group-type": "group-ff"
    },
    {
      "group-id": 96,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 96000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 96000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-96",
      "group-type": "group-ff"
    },
    {
      "group-id": 97,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 97000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 97000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-97",
      "group-type": "group-ff"
    },
    {
      "group-id": 98,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 98000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 98000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-98",
      "group-type": "group-ff"
    },
    {
      "group-id": 99,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 99000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 99000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-99",
      "group-type": "group-ff"
    },
    {
      "group-id": 100,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 100000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 100000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-100",
      "group-type": "group-ff"
    }
  ]
}</msg>
<arg>${data}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:19.918023" elapsed="0.000666"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.919084" level="INFO">{'Content-Type': 'application/json'}</msg>
<arg>${content_type}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:19.918843" elapsed="0.000283"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.919528" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:19.919293" elapsed="0.000278"/>
</kw>
<kw name="Join_Two_Headers" owner="TemplatedRequests">
<kw name="Copy Dictionary" owner="Collections">
<msg time="2026-04-08T00:58:19.920375" level="INFO">${accumulator} = {'Content-Type': 'application/json'}</msg>
<var>${accumulator}</var>
<arg>${first}</arg>
<doc>Returns a copy of the given dictionary.</doc>
<status status="PASS" start="2026-04-08T00:58:19.920182" elapsed="0.000218"/>
</kw>
<kw name="Get Dictionary Items" owner="Collections">
<msg time="2026-04-08T00:58:19.920722" level="INFO">${items_to_add} = []</msg>
<var>${items_to_add}</var>
<arg>${second}</arg>
<doc>Returns items of the given ``dictionary`` as a list.</doc>
<status status="PASS" start="2026-04-08T00:58:19.920552" elapsed="0.000195"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${accumulator}</arg>
<arg>@{items_to_add}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:58:19.920897" elapsed="0.000184"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.921523" level="INFO">{'Content-Type': 'application/json'}</msg>
<arg>${accumulator}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:19.921277" elapsed="0.000289"/>
</kw>
<return>
<value>${accumulator}</value>
<status status="PASS" start="2026-04-08T00:58:19.921607" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:58:19.921759" level="INFO">${headers} = {'Content-Type': 'application/json'}</msg>
<var>${headers}</var>
<arg>first=${content_type}</arg>
<arg>second=${accept}</arg>
<doc>Take two dicts, join them, return result. Second argument values take precedence.</doc>
<status status="PASS" start="2026-04-08T00:58:19.919766" elapsed="0.002018"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="POST On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:58:19.953592" level="INFO">POST Request : url=http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A2 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A2 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node01s3bfo0y24i1es90l47mavglv0.node0', 'Content-Length': '42507', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body={
  "flow-node-inventory:group": [
    {
      "group-id": 1,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 1000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 1000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-1",
      "group-type": "group-ff"
    },
    {
      "group-id": 2,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 2000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 2000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-2",
      "group-type": "group-ff"
    },
    {
      "group-id": 3,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 3000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 3000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-3",
      "group-type": "group-ff"
    },
    {
      "group-id": 4,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 4000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 4000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-4",
      "group-type": "group-ff"
    },
    {
      "group-id": 5,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 5000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 5000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-5",
      "group-type": "group-ff"
    },
    {
      "group-id": 6,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 6000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 6000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-6",
      "group-type": "group-ff"
    },
    {
      "group-id": 7,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 7000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 7000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-7",
      "group-type": "group-ff"
    },
    {
      "group-id": 8,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 8000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 8000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-8",
      "group-type": "group-ff"
    },
    {
      "group-id": 9,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 9000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 9000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-9",
      "group-type": "group-ff"
    },
    {
      "group-id": 10,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 10000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 10000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-10",
      "group-type": "group-ff"
    },
    {
      "group-id": 11,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 11000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 11000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-11",
      "group-type": "group-ff"
    },
    {
      "group-id": 12,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 12000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 12000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-12",
      "group-type": "group-ff"
    },
    {
      "group-id": 13,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 13000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 13000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-13",
      "group-type": "group-ff"
    },
    {
      "group-id": 14,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 14000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 14000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-14",
      "group-type": "group-ff"
    },
    {
      "group-id": 15,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 15000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 15000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-15",
      "group-type": "group-ff"
    },
    {
      "group-id": 16,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 16000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 16000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-16",
      "group-type": "group-ff"
    },
    {
      "group-id": 17,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 17000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 17000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-17",
      "group-type": "group-ff"
    },
    {
      "group-id": 18,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 18000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 18000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-18",
      "group-type": "group-ff"
    },
    {
      "group-id": 19,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 19000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 19000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-19",
      "group-type": "group-ff"
    },
    {
      "group-id": 20,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 20000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 20000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-20",
      "group-type": "group-ff"
    },
    {
      "group-id": 21,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 21000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 21000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-21",
      "group-type": "group-ff"
    },
    {
      "group-id": 22,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 22000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 22000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-22",
      "group-type": "group-ff"
    },
    {
      "group-id": 23,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 23000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 23000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-23",
      "group-type": "group-ff"
    },
    {
      "group-id": 24,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 24000,
            "action": [
              {
                "order": 1,
                "... (set the log level to DEBUG or TRACE to see the full content) 
 </msg>
<msg time="2026-04-08T00:58:19.953943" level="INFO">POST Response : url=http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A2 
 status=201, reason=Created 
 headers={'Location': 'http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A2/flow-node-inventory:group=88', 'Content-Length': '0'} 
 body=None 
 </msg>
<msg time="2026-04-08T00:58:19.954216" level="INFO">${response} = &lt;Response [201]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:58:19.924043" elapsed="0.030236"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.922006" elapsed="0.032381"/>
</branch>
<branch type="ELSE">
<kw name="POST On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:19.954801" elapsed="0.000048"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:19.954448" elapsed="0.000503"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.921836" elapsed="0.033163"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.962379" level="INFO"/>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:19.957409" elapsed="0.005030"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.956828" elapsed="0.005659"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.956787" elapsed="0.005735"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.966033" level="INFO">201</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:19.962907" elapsed="0.003191"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.962600" elapsed="0.003546"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.962577" elapsed="0.003622"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.966951" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:19.966431" elapsed="0.000557"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:19.967443" elapsed="0.000029"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:19.967086" elapsed="0.000436"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.968208" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:58:19.967778" elapsed="0.000467"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.967554" elapsed="0.000739"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.967059" elapsed="0.001264"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.969040" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:19.968545" elapsed="0.000532"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:19.969561" elapsed="0.000029"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:19.969192" elapsed="0.000448"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:58:19.970409" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:58:19.969899" elapsed="0.000536"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:19.969673" elapsed="0.000797"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.969147" elapsed="0.001344"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:58:19.970642" elapsed="0.000344"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:58:19.971448" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:19.971151" elapsed="0.000323"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:58:19.971629" elapsed="0.002252"/>
</kw>
<arg>${response}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:58:19.955821" elapsed="0.018122"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:58:19.974116" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:58:19.974013" elapsed="0.000161"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.973995" elapsed="0.000203"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:58:19.976636" level="INFO">${text_normalized} = </msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:58:19.974345" elapsed="0.002318"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:58:19.976710" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:58:19.976863" level="INFO">${response_text} = </msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>data=${data}</arg>
<arg>content_type=${content_type}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>POST data to given URI, check status code and return response text.
${content_type} and ${accept} are mandatory Python objects with headers to use.
If ${normalize_json}, normalize text before returning.</doc>
<status status="PASS" start="2026-04-08T00:58:19.916545" elapsed="0.060343"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:58:19.976998" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:58:19.977151" level="INFO">${response_text} = </msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>extension=json</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>content_type=${HEADERS_YANG_JSON}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>endline=${\n}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve URI and data from folder, call Post_To_Uri, return response text.</doc>
<status status="PASS" start="2026-04-08T00:58:19.529729" elapsed="0.447464"/>
</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=response</arg>
<arg>mapping=${mapping}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:19.977565" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:19.977323" elapsed="0.000410"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:19.977305" elapsed="0.000455"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:58:19.977801" elapsed="0.000026"/>
</return>
<arg>folder=${VAR_DIR}/add-group-2</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<arg>iterations=${iter}</arg>
<doc>Add arguments sensible for JSON data, return Post_Templated response text.
Optionally, verification against response.json (no iteration) is called.
Only subset of JSON data is verified and returned if JMES path is specified in
file ${folder}/jmespath.expr.
Response status code must be one of values from ${explicit_status_codes} if specified or one of set
created from all positive HTTP status codes together with ${additional_allowed_status_codes}.</doc>
<status status="PASS" start="2026-04-08T00:58:19.527152" elapsed="0.450772"/>
</kw>
<kw name="Post_As_Json_Templated" owner="TemplatedRequests">
<kw name="Post_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.020830" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow.vanadium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:58:20.020449" elapsed="0.000411"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:58:20.021776" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-flow.vanadium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:58:20.021530" elapsed="0.000319">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-flow.vanadium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-08T00:58:20.021942" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:58:20.021027" elapsed="0.000939"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.022532" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:58:20.022132" elapsed="0.000427"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T00:58:20.022855" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-flow/location.uri"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-flow/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-08T00:58:20.023065" level="INFO">${template} = /rests/data/opendaylight-inventory:nodes/node=$NODE/flow-node-inventory:table=0
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T00:58:20.022720" elapsed="0.000371"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.023511" level="INFO">/rests/data/opendaylight-inventory:nodes/node=$NODE/flow-node-inventory:table=0
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:20.023268" elapsed="0.000286"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.024545" level="INFO">mapping: {'NODE': 'openflow:2'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:20.024282" elapsed="0.000308"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.025023" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-08T00:58:20.024752" elapsed="0.000298"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.025992" level="INFO">${value} = openflow:2</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-08T00:58:20.025456" elapsed="0.000562"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-08T00:58:20.027146" level="INFO">${encoded} = openflow%3A2</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-08T00:58:20.026675" elapsed="0.000530"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-08T00:58:20.027323" elapsed="0.000033"/>
</return>
<msg time="2026-04-08T00:58:20.027547" level="INFO">${encoded_value} = openflow%3A2</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-08T00:58:20.026229" elapsed="0.001344"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:58:20.027776" elapsed="0.000509"/>
</kw>
<var name="${key}">NODE</var>
<var name="${value}">openflow:2</var>
<status status="PASS" start="2026-04-08T00:58:20.025313" elapsed="0.003014"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-08T00:58:20.025102" elapsed="0.003262"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-08T00:58:20.028407" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:58:20.028563" level="INFO">${mapping_to_use} = {'NODE': 'openflow%3A2'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-08T00:58:20.023917" elapsed="0.004672"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:20.023625" elapsed="0.004996"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:20.028795" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:20.028645" elapsed="0.000205"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.023605" elapsed="0.005265"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.029584" level="INFO">${final_text} = /rests/data/opendaylight-inventory:nodes/node=openflow%3A2/flow-node-inventory:table=0</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:20.029016" elapsed="0.000595"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T00:58:20.029660" elapsed="0.000028"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow/${file_name}.</doc>
<status status="PASS" start="2026-04-08T00:58:20.019794" elapsed="0.009988"/>
</kw>
<msg time="2026-04-08T00:58:20.029837" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:58:20.007219" elapsed="0.022668"/>
</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-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:20.042505" 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-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:20.054884" elapsed="0.000029"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:20.067610" elapsed="0.000029"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:20.067818" elapsed="0.000022"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:20.067999" elapsed="0.000021"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:20.068415" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:20.068255" elapsed="0.000218"/>
</branch>
<status status="NOT RUN" start="2026-04-08T00:58:20.068239" elapsed="0.000259"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:20.068640" elapsed="0.000021"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:20.068811" elapsed="0.000020"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:20.069029" elapsed="0.000021"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-08T00:58:20.068204" elapsed="0.000880"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-08T00:58:20.068078" elapsed="0.001032"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:20.069281" elapsed="0.000026"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-08T00:58:20.069388" elapsed="0.000017"/>
</return>
<msg time="2026-04-08T00:58:20.069521" level="INFO">${uri} = /rests/data/opendaylight-inventory:nodes/node=openflow%3A2/flow-node-inventory:table=0</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one 100 times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-08T00:58:20.003051" elapsed="0.066497"/>
</kw>
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:58:20.080451" elapsed="0.000361"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.094191" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow.vanadium/post_data.prolog.json</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:58:20.093799" elapsed="0.000422"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:58:20.094953" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-flow.vanadium/post_data.prolog.json' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:58:20.094721" elapsed="0.000305">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-flow.vanadium/post_data.prolog.json' does not exist.</status>
</kw>
<msg time="2026-04-08T00:58:20.095118" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:58:20.094384" elapsed="0.000758"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.095701" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow/post_data.prolog.json</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:58:20.095323" elapsed="0.000406"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T00:58:20.096025" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-flow/post_data.prolog.json"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-flow/post_data.prolog.json&lt;/a&gt;'.</msg>
<msg time="2026-04-08T00:58:20.096192" level="INFO">${template} = {
  "flow": [
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T00:58:20.095890" elapsed="0.000328"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.096618" level="INFO">{
  "flow": [
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:20.096375" elapsed="0.000287"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="NOT RUN" start="2026-04-08T00:58:20.097018" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:20.096730" elapsed="0.000345"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.097586" level="INFO">${mapping_to_use} = {'NODE': 'openflow:2'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:58:20.097259" elapsed="0.000353"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:20.097099" elapsed="0.000549"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.096711" elapsed="0.000959"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.098264" level="INFO">${final_text} = {
  "flow": [</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:20.097817" elapsed="0.000474"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T00:58:20.098339" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:58:20.098489" level="INFO">${prolog} = {
  "flow": [</msg>
<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-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow/${file_name}.</doc>
<status status="PASS" start="2026-04-08T00:58:20.093141" elapsed="0.005373"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.111764" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow.vanadium/post_data.epilog.json</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:58:20.111392" elapsed="0.000401"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:58:20.112503" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-flow.vanadium/post_data.epilog.json' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:58:20.112301" elapsed="0.000265">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-flow.vanadium/post_data.epilog.json' does not exist.</status>
</kw>
<msg time="2026-04-08T00:58:20.112657" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:58:20.111954" elapsed="0.000728"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.113245" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow/post_data.epilog.json</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:58:20.112847" elapsed="0.000425"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T00:58:20.113605" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-flow/post_data.epilog.json"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-flow/post_data.epilog.json&lt;/a&gt;'.</msg>
<msg time="2026-04-08T00:58:20.113730" level="INFO">${template} =   ]
}
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T00:58:20.113466" elapsed="0.000290"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.114178" level="INFO">  ]
}
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:20.113916" elapsed="0.000308"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="NOT RUN" start="2026-04-08T00:58:20.114584" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:20.114294" elapsed="0.000347"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.115105" level="INFO">${mapping_to_use} = {'NODE': 'openflow:2'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:58:20.114813" elapsed="0.000319"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:20.114666" elapsed="0.000542"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.114274" elapsed="0.000968"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.115852" level="INFO">${final_text} =   ]
}</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:20.115425" elapsed="0.000454"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T00:58:20.115927" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:58:20.116077" level="INFO">${epilog} =   ]
}</msg>
<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-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow/${file_name}.</doc>
<status status="PASS" start="2026-04-08T00:58:20.110764" elapsed="0.005338"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.129223" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow.vanadium/data.item.json</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:58:20.128828" elapsed="0.000423"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:58:20.129972" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-flow.vanadium/data.item.json' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:58:20.129770" elapsed="0.000265">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-flow.vanadium/data.item.json' does not exist.</status>
</kw>
<msg time="2026-04-08T00:58:20.130127" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:58:20.129413" elapsed="0.000738"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.130710" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow/data.item.json</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:58:20.130334" elapsed="0.000403"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T00:58:20.131029" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-flow/data.item.json"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-flow/data.item.json&lt;/a&gt;'.</msg>
<msg time="2026-04-08T00:58:20.131201" level="INFO">${template} =         {
          "id": "${i}",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048...</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T00:58:20.130898" elapsed="0.000332"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.131631" level="INFO">        {
          "id": "${i}",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.${i}/32"
          },
          "flow-name": "Flow-${i}",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": ${i}
                      }
                    }
                  ]
                }
              }
            ]
          }
        }
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:20.131388" elapsed="0.000293"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="NOT RUN" start="2026-04-08T00:58:20.132036" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:20.131749" elapsed="0.000344"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.132568" level="INFO">${mapping_to_use} = {'NODE': 'openflow:2'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:58:20.132278" elapsed="0.000316"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:20.132117" elapsed="0.000512"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.131731" elapsed="0.000919"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.133408" level="INFO">${final_text} =         {
          "id": "${i}",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048...</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:20.132797" elapsed="0.000640"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T00:58:20.133498" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:58:20.133651" level="INFO">${item_template} =         {
          "id": "${i}",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048...</msg>
<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-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow/${file_name}.</doc>
<status status="PASS" start="2026-04-08T00:58:20.128234" elapsed="0.005443"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.134077" level="INFO">${items} = []</msg>
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:58:20.133839" elapsed="0.000263"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.134636" level="INFO">${separator} = ,
</msg>
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:58:20.134276" elapsed="0.000386"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:20.135288" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:20.135038" elapsed="0.000307"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.135024" elapsed="0.000344"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.135853" level="INFO">${j} = 1</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:20.135508" elapsed="0.000371"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.136821" level="INFO">${item} =         {
          "id": "1",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
  ...</msg>
<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="PASS" start="2026-04-08T00:58:20.136035" elapsed="0.000814"/>
</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="PASS" start="2026-04-08T00:58:20.137009" elapsed="0.000213"/>
</kw>
<var name="${iteration}">1</var>
<status status="PASS" start="2026-04-08T00:58:20.134993" elapsed="0.002267"/>
</iter>
<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="PASS" start="2026-04-08T00:58:20.137718" elapsed="0.000185"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:20.137437" elapsed="0.000506"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.137422" elapsed="0.000545"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.138481" level="INFO">${j} = 2</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:20.138112" elapsed="0.000395"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.139276" level="INFO">${item} =         {
          "id": "2",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
  ...</msg>
<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="PASS" start="2026-04-08T00:58:20.138664" elapsed="0.000641"/>
</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="PASS" start="2026-04-08T00:58:20.139462" elapsed="0.000180"/>
</kw>
<var name="${iteration}">2</var>
<status status="PASS" start="2026-04-08T00:58:20.137391" elapsed="0.002321"/>
</iter>
<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="PASS" start="2026-04-08T00:58:20.140133" elapsed="0.000202"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:20.139893" elapsed="0.000481"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.139878" elapsed="0.000520"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.140892" level="INFO">${j} = 3</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:20.140542" elapsed="0.000376"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.141705" level="INFO">${item} =         {
          "id": "3",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
  ...</msg>
<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="PASS" start="2026-04-08T00:58:20.141075" elapsed="0.000658"/>
</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="PASS" start="2026-04-08T00:58:20.141890" elapsed="0.000182"/>
</kw>
<var name="${iteration}">3</var>
<status status="PASS" start="2026-04-08T00:58:20.139847" elapsed="0.002262"/>
</iter>
<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="PASS" start="2026-04-08T00:58:20.142542" elapsed="0.000182"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:20.142305" elapsed="0.000458"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.142290" elapsed="0.000497"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.143294" level="INFO">${j} = 4</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:20.142930" elapsed="0.000390"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.144070" level="INFO">${item} =         {
          "id": "4",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
  ...</msg>
<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="PASS" start="2026-04-08T00:58:20.143476" elapsed="0.000622"/>
</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="PASS" start="2026-04-08T00:58:20.144269" elapsed="0.000183"/>
</kw>
<var name="${iteration}">4</var>
<status status="PASS" start="2026-04-08T00:58:20.142259" elapsed="0.002230"/>
</iter>
<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="PASS" start="2026-04-08T00:58:20.144900" elapsed="0.000181"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:20.144666" elapsed="0.000453"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.144652" elapsed="0.000490"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.145674" level="INFO">${j} = 5</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:20.145302" elapsed="0.000398"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.146469" level="INFO">${item} =         {
          "id": "5",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
  ...</msg>
<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="PASS" start="2026-04-08T00:58:20.145853" elapsed="0.000644"/>
</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="PASS" start="2026-04-08T00:58:20.146650" elapsed="0.000181"/>
</kw>
<var name="${iteration}">5</var>
<status status="PASS" start="2026-04-08T00:58:20.144622" elapsed="0.002246"/>
</iter>
<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="PASS" start="2026-04-08T00:58:20.147292" elapsed="0.000182"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:20.147042" elapsed="0.000470"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.147028" elapsed="0.000507"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.148021" level="INFO">${j} = 6</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:20.147679" elapsed="0.000368"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.148808" level="INFO">${item} =         {
          "id": "6",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
  ...</msg>
<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="PASS" start="2026-04-08T00:58:20.148218" elapsed="0.000618"/>
</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="PASS" start="2026-04-08T00:58:20.148990" elapsed="0.000202"/>
</kw>
<var name="${iteration}">6</var>
<status status="PASS" start="2026-04-08T00:58:20.146999" elapsed="0.002231"/>
</iter>
<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="PASS" start="2026-04-08T00:58:20.149661" elapsed="0.000182"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:20.149406" elapsed="0.000476"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.149392" elapsed="0.000513"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.150411" level="INFO">${j} = 7</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:20.150047" elapsed="0.000390"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.151194" level="INFO">${item} =         {
          "id": "7",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
  ...</msg>
<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="PASS" start="2026-04-08T00:58:20.150591" elapsed="0.000698"/>
</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="PASS" start="2026-04-08T00:58:20.151450" elapsed="0.000183"/>
</kw>
<var name="${iteration}">7</var>
<status status="PASS" start="2026-04-08T00:58:20.149362" elapsed="0.002308"/>
</iter>
<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="PASS" start="2026-04-08T00:58:20.152090" elapsed="0.000199"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:20.151847" elapsed="0.000481"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.151832" elapsed="0.000520"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.152842" level="INFO">${j} = 8</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:20.152495" elapsed="0.000373"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.153818" level="INFO">${item} =         {
          "id": "8",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
  ...</msg>
<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="PASS" start="2026-04-08T00:58:20.153022" elapsed="0.000825"/>
</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="PASS" start="2026-04-08T00:58:20.154005" elapsed="0.000199"/>
</kw>
<var name="${iteration}">8</var>
<status status="PASS" start="2026-04-08T00:58:20.151803" elapsed="0.002440"/>
</iter>
<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="PASS" start="2026-04-08T00:58:20.154657" elapsed="0.000181"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:20.154421" elapsed="0.000455"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.154406" elapsed="0.000494"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.155414" level="INFO">${j} = 9</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:20.155045" elapsed="0.000394"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.156203" level="INFO">${item} =         {
          "id": "9",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
  ...</msg>
<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="PASS" start="2026-04-08T00:58:20.155594" elapsed="0.000638"/>
</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="PASS" start="2026-04-08T00:58:20.156390" elapsed="0.000299"/>
</kw>
<var name="${iteration}">9</var>
<status status="PASS" start="2026-04-08T00:58:20.154376" elapsed="0.002351"/>
</iter>
<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="PASS" start="2026-04-08T00:58:20.157141" elapsed="0.000205"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:20.156905" elapsed="0.000480"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.156890" elapsed="0.000518"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.157907" level="INFO">${j} = 10</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:20.157560" elapsed="0.000373"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.158703" level="INFO">${item} =         {
          "id": "10",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:20.158086" elapsed="0.000646"/>
</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="PASS" start="2026-04-08T00:58:20.158886" elapsed="0.000180"/>
</kw>
<var name="${iteration}">10</var>
<status status="PASS" start="2026-04-08T00:58:20.156860" elapsed="0.002244"/>
</iter>
<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="PASS" start="2026-04-08T00:58:20.159531" elapsed="0.000179"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:20.159297" elapsed="0.000451"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.159283" elapsed="0.000488"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.160273" level="INFO">${j} = 11</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:20.159912" elapsed="0.000387"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.161043" level="INFO">${item} =         {
          "id": "11",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:20.160452" elapsed="0.000619"/>
</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="PASS" start="2026-04-08T00:58:20.161244" elapsed="0.000181"/>
</kw>
<var name="${iteration}">11</var>
<status status="PASS" start="2026-04-08T00:58:20.159252" elapsed="0.002211"/>
</iter>
<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="PASS" start="2026-04-08T00:58:20.161900" elapsed="0.000180"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:20.161665" elapsed="0.000453"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.161650" elapsed="0.000491"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.162645" level="INFO">${j} = 12</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:20.162300" elapsed="0.000402"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.163480" level="INFO">${item} =         {
          "id": "12",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:20.162862" elapsed="0.000646"/>
</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="PASS" start="2026-04-08T00:58:20.163665" elapsed="0.000180"/>
</kw>
<var name="${iteration}">12</var>
<status status="PASS" start="2026-04-08T00:58:20.161619" elapsed="0.002264"/>
</iter>
<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="PASS" start="2026-04-08T00:58:20.164310" elapsed="0.000182"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:20.164059" elapsed="0.000472"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.164044" elapsed="0.000511"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.165041" level="INFO">${j} = 13</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:20.164695" elapsed="0.000372"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.166011" level="INFO">${item} =         {
          "id": "13",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:20.165237" elapsed="0.000803"/>
</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="PASS" start="2026-04-08T00:58:20.166212" elapsed="0.000183"/>
</kw>
<var name="${iteration}">13</var>
<status status="PASS" start="2026-04-08T00:58:20.164014" elapsed="0.002418"/>
</iter>
<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="PASS" start="2026-04-08T00:58:20.166845" elapsed="0.000179"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:20.166609" elapsed="0.000453"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.166594" elapsed="0.000492"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.167591" level="INFO">${j} = 14</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:20.167244" elapsed="0.000373"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.168386" level="INFO">${item} =         {
          "id": "14",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:20.167771" elapsed="0.000643"/>
</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="PASS" start="2026-04-08T00:58:20.168569" elapsed="0.000179"/>
</kw>
<var name="${iteration}">14</var>
<status status="PASS" start="2026-04-08T00:58:20.166563" elapsed="0.002222"/>
</iter>
<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="PASS" start="2026-04-08T00:58:20.169211" elapsed="0.000182"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:20.168961" elapsed="0.000470"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.168946" elapsed="0.000508"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.170108" level="INFO">${j} = 15</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:20.169638" elapsed="0.000497"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.170906" level="INFO">${item} =         {
          "id": "15",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:20.170309" elapsed="0.000625"/>
</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="PASS" start="2026-04-08T00:58:20.171094" elapsed="0.000198"/>
</kw>
<var name="${iteration}">15</var>
<status status="PASS" start="2026-04-08T00:58:20.168916" elapsed="0.002413"/>
</iter>
<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="PASS" start="2026-04-08T00:58:20.171740" elapsed="0.000181"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:20.171504" elapsed="0.000455"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.171489" elapsed="0.000494"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.172490" level="INFO">${j} = 16</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:20.172125" elapsed="0.000391"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.173284" level="INFO">${item} =         {
          "id": "16",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:20.172672" elapsed="0.000640"/>
</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="PASS" start="2026-04-08T00:58:20.173469" elapsed="0.000194"/>
</kw>
<var name="${iteration}">16</var>
<status status="PASS" start="2026-04-08T00:58:20.171460" elapsed="0.002240"/>
</iter>
<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="PASS" start="2026-04-08T00:58:20.174146" elapsed="0.000201"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:20.173876" elapsed="0.000510"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.173861" elapsed="0.000549"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.174899" level="INFO">${j} = 17</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:20.174555" elapsed="0.000370"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.175694" level="INFO">${item} =         {
          "id": "17",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:20.175080" elapsed="0.000642"/>
</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="PASS" start="2026-04-08T00:58:20.175878" elapsed="0.000179"/>
</kw>
<var name="${iteration}">17</var>
<status status="PASS" start="2026-04-08T00:58:20.173831" elapsed="0.002264"/>
</iter>
<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="PASS" start="2026-04-08T00:58:20.176525" elapsed="0.000181"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:20.176290" elapsed="0.000454"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.176276" elapsed="0.000492"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.177276" level="INFO">${j} = 18</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:20.176909" elapsed="0.000392"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.178075" level="INFO">${item} =         {
          "id": "18",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:20.177456" elapsed="0.000650"/>
</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="PASS" start="2026-04-08T00:58:20.178279" elapsed="0.000181"/>
</kw>
<var name="${iteration}">18</var>
<status status="PASS" start="2026-04-08T00:58:20.176245" elapsed="0.002252"/>
</iter>
<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="PASS" start="2026-04-08T00:58:20.178909" elapsed="0.000180"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:20.178674" elapsed="0.000453"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.178659" elapsed="0.000492"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.179658" level="INFO">${j} = 19</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:20.179311" elapsed="0.000372"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.180454" level="INFO">${item} =         {
          "id": "19",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:20.179838" elapsed="0.000644"/>
</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="PASS" start="2026-04-08T00:58:20.180637" elapsed="0.000179"/>
</kw>
<var name="${iteration}">19</var>
<status status="PASS" start="2026-04-08T00:58:20.178629" elapsed="0.002315"/>
</iter>
<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="PASS" start="2026-04-08T00:58:20.181393" elapsed="0.000194"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:20.181132" elapsed="0.000493"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.181116" elapsed="0.000533"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.182136" level="INFO">${j} = 20</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:20.181793" elapsed="0.000384"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.182928" level="INFO">${item} =         {
          "id": "20",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:20.182335" elapsed="0.000620"/>
</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="PASS" start="2026-04-08T00:58:20.183115" elapsed="0.000199"/>
</kw>
<var name="${iteration}">20</var>
<status status="PASS" start="2026-04-08T00:58:20.181085" elapsed="0.002267"/>
</iter>
<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="PASS" start="2026-04-08T00:58:20.183762" elapsed="0.000180"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:20.183528" elapsed="0.000452"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.183512" elapsed="0.000491"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.184507" level="INFO">${j} = 21</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:20.184145" elapsed="0.000388"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.185297" level="INFO">${item} =         {
          "id": "21",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:20.184687" elapsed="0.000638"/>
</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="PASS" start="2026-04-08T00:58:20.185561" elapsed="0.000194"/>
</kw>
<var name="${iteration}">21</var>
<status status="PASS" start="2026-04-08T00:58:20.183482" elapsed="0.002311"/>
</iter>
<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="PASS" start="2026-04-08T00:58:20.186223" elapsed="0.000300"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:20.185970" elapsed="0.000593"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.185955" elapsed="0.000632"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.187077" level="INFO">${j} = 22</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:20.186730" elapsed="0.000373"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.187870" level="INFO">${item} =         {
          "id": "22",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:20.187276" elapsed="0.000623"/>
</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="PASS" start="2026-04-08T00:58:20.188055" elapsed="0.000197"/>
</kw>
<var name="${iteration}">22</var>
<status status="PASS" start="2026-04-08T00:58:20.185925" elapsed="0.002476"/>
</iter>
<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="PASS" start="2026-04-08T00:58:20.188816" elapsed="0.000183"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:20.188580" elapsed="0.000458"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.188566" elapsed="0.000495"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.189589" level="INFO">${j} = 23</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:20.189228" elapsed="0.000388"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.190384" level="INFO">${item} =         {
          "id": "23",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:20.189770" elapsed="0.000642"/>
</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="PASS" start="2026-04-08T00:58:20.190568" elapsed="0.000181"/>
</kw>
<var name="${iteration}">23</var>
<status status="PASS" start="2026-04-08T00:58:20.188536" elapsed="0.002251"/>
</iter>
<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="PASS" start="2026-04-08T00:58:20.191213" elapsed="0.000182"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:20.190961" elapsed="0.000473"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.190946" elapsed="0.000512"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.191944" level="INFO">${j} = 24</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:20.191599" elapsed="0.000371"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.192736" level="INFO">${item} =         {
          "id": "24",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:20.192124" elapsed="0.000640"/>
</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="PASS" start="2026-04-08T00:58:20.192918" elapsed="0.000193"/>
</kw>
<var name="${iteration}">24</var>
<status status="PASS" start="2026-04-08T00:58:20.190916" elapsed="0.002231"/>
</iter>
<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="PASS" start="2026-04-08T00:58:20.193603" elapsed="0.000182"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:20.193340" elapsed="0.000482"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.193325" elapsed="0.000523"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.194355" level="INFO">${j} = 25</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:20.193993" elapsed="0.000388"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.195128" level="INFO">${item} =         {
          "id": "25",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:20.194536" elapsed="0.000635"/>
</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="PASS" start="2026-04-08T00:58:20.195328" elapsed="0.000180"/>
</kw>
<var name="${iteration}">25</var>
<status status="PASS" start="2026-04-08T00:58:20.193295" elapsed="0.002249"/>
</iter>
<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="PASS" start="2026-04-08T00:58:20.195952" elapsed="0.000184"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:20.195719" elapsed="0.000470"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.195704" elapsed="0.000510"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.196700" level="INFO">${j} = 26</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:20.196357" elapsed="0.000369"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.197543" level="INFO">${item} =         {
          "id": "26",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:20.196925" elapsed="0.000659"/>
</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="PASS" start="2026-04-08T00:58:20.197741" elapsed="0.000214"/>
</kw>
<var name="${iteration}">26</var>
<status status="PASS" start="2026-04-08T00:58:20.195674" elapsed="0.002320"/>
</iter>
<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="PASS" start="2026-04-08T00:58:20.198426" elapsed="0.000181"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:20.198187" elapsed="0.000459"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.198170" elapsed="0.000500"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.199177" level="INFO">${j} = 27</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:20.198813" elapsed="0.000392"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.199952" level="INFO">${item} =         {
          "id": "27",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:20.199359" elapsed="0.000620"/>
</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="PASS" start="2026-04-08T00:58:20.200135" elapsed="0.000198"/>
</kw>
<var name="${iteration}">27</var>
<status status="PASS" start="2026-04-08T00:58:20.198125" elapsed="0.002246"/>
</iter>
<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="PASS" start="2026-04-08T00:58:20.200777" elapsed="0.000179"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:20.200545" elapsed="0.000449"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.200531" elapsed="0.000487"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.201521" level="INFO">${j} = 28</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:20.201175" elapsed="0.000374"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.202446" level="INFO">${item} =         {
          "id": "28",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:20.201747" elapsed="0.000727"/>
</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="PASS" start="2026-04-08T00:58:20.202629" elapsed="0.000182"/>
</kw>
<var name="${iteration}">28</var>
<status status="PASS" start="2026-04-08T00:58:20.200501" elapsed="0.002347"/>
</iter>
<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="PASS" start="2026-04-08T00:58:20.203393" elapsed="0.000183"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:20.203025" elapsed="0.000589"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.203009" elapsed="0.000629"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.204133" level="INFO">${j} = 29</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:20.203788" elapsed="0.000386"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.204932" level="INFO">${item} =         {
          "id": "29",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:20.204331" elapsed="0.000629"/>
</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="PASS" start="2026-04-08T00:58:20.205116" elapsed="0.000202"/>
</kw>
<var name="${iteration}">29</var>
<status status="PASS" start="2026-04-08T00:58:20.202978" elapsed="0.002378"/>
</iter>
<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="PASS" start="2026-04-08T00:58:20.205783" elapsed="0.000181"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:20.205532" elapsed="0.000469"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.205518" elapsed="0.000508"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.206534" level="INFO">${j} = 30</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:20.206184" elapsed="0.000377"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.207325" level="INFO">${item} =         {
          "id": "30",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:20.206716" elapsed="0.000637"/>
</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="PASS" start="2026-04-08T00:58:20.207508" elapsed="0.000181"/>
</kw>
<var name="${iteration}">30</var>
<status status="PASS" start="2026-04-08T00:58:20.205488" elapsed="0.002238"/>
</iter>
<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="PASS" start="2026-04-08T00:58:20.208136" elapsed="0.000197"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:20.207902" elapsed="0.000502"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.207887" elapsed="0.000544"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.208922" level="INFO">${j} = 31</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:20.208576" elapsed="0.000372"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.209750" level="INFO">${item} =         {
          "id": "31",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:20.209101" elapsed="0.000678"/>
</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="PASS" start="2026-04-08T00:58:20.209935" elapsed="0.000184"/>
</kw>
<var name="${iteration}">31</var>
<status status="PASS" start="2026-04-08T00:58:20.207857" elapsed="0.002314"/>
</iter>
<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="PASS" start="2026-04-08T00:58:20.210583" elapsed="0.000181"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:20.210348" elapsed="0.000454"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.210334" elapsed="0.000491"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.211332" level="INFO">${j} = 32</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:20.210968" elapsed="0.000390"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.212112" level="INFO">${item} =         {
          "id": "32",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:20.211517" elapsed="0.000623"/>
</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="PASS" start="2026-04-08T00:58:20.212313" elapsed="0.000182"/>
</kw>
<var name="${iteration}">32</var>
<status status="PASS" start="2026-04-08T00:58:20.210304" elapsed="0.002228"/>
</iter>
<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="PASS" start="2026-04-08T00:58:20.212940" elapsed="0.000179"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:20.212707" elapsed="0.000464"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.212693" elapsed="0.000503"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.213697" level="INFO">${j} = 33</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:20.213339" elapsed="0.000384"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.214482" level="INFO">${item} =         {
          "id": "33",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:20.213876" elapsed="0.000634"/>
</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="PASS" start="2026-04-08T00:58:20.214664" elapsed="0.000179"/>
</kw>
<var name="${iteration}">33</var>
<status status="PASS" start="2026-04-08T00:58:20.212664" elapsed="0.002216"/>
</iter>
<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="PASS" start="2026-04-08T00:58:20.215311" elapsed="0.000179"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:20.215060" elapsed="0.000468"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.215043" elapsed="0.000508"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.216033" level="INFO">${j} = 34</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:20.215692" elapsed="0.000367"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.216821" level="INFO">${item} =         {
          "id": "34",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:20.216229" elapsed="0.000619"/>
</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="PASS" start="2026-04-08T00:58:20.217001" elapsed="0.000196"/>
</kw>
<var name="${iteration}">34</var>
<status status="PASS" start="2026-04-08T00:58:20.215011" elapsed="0.002223"/>
</iter>
<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="PASS" start="2026-04-08T00:58:20.217691" elapsed="0.000183"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:20.217410" elapsed="0.000502"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.217394" elapsed="0.000542"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.218454" level="INFO">${j} = 35</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:20.218084" elapsed="0.000396"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.219262" level="INFO">${item} =         {
          "id": "35",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:20.218633" elapsed="0.000656"/>
</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="PASS" start="2026-04-08T00:58:20.219443" elapsed="0.000179"/>
</kw>
<var name="${iteration}">35</var>
<status status="PASS" start="2026-04-08T00:58:20.217364" elapsed="0.002327"/>
</iter>
<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="PASS" start="2026-04-08T00:58:20.220234" elapsed="0.000185"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:20.219977" elapsed="0.000479"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.219854" elapsed="0.000627"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.220971" level="INFO">${j} = 36</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:20.220624" elapsed="0.000373"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.221782" level="INFO">${item} =         {
          "id": "36",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:20.221172" elapsed="0.000638"/>
</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="PASS" start="2026-04-08T00:58:20.221967" elapsed="0.000180"/>
</kw>
<var name="${iteration}">36</var>
<status status="PASS" start="2026-04-08T00:58:20.219824" elapsed="0.002375"/>
</iter>
<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="PASS" start="2026-04-08T00:58:20.222615" elapsed="0.000180"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:20.222379" elapsed="0.000454"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.222364" elapsed="0.000493"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.223363" level="INFO">${j} = 37</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:20.222999" elapsed="0.000390"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.224133" level="INFO">${item} =         {
          "id": "37",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:20.223543" elapsed="0.000633"/>
</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="PASS" start="2026-04-08T00:58:20.224333" elapsed="0.000181"/>
</kw>
<var name="${iteration}">37</var>
<status status="PASS" start="2026-04-08T00:58:20.222334" elapsed="0.002216"/>
</iter>
<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="PASS" start="2026-04-08T00:58:20.224961" elapsed="0.000180"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:20.224728" elapsed="0.000472"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.224713" elapsed="0.000512"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.225738" level="INFO">${j} = 38</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:20.225368" elapsed="0.000396"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.226523" level="INFO">${item} =         {
          "id": "38",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:20.225917" elapsed="0.000634"/>
</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="PASS" start="2026-04-08T00:58:20.226704" elapsed="0.000180"/>
</kw>
<var name="${iteration}">38</var>
<status status="PASS" start="2026-04-08T00:58:20.224683" elapsed="0.002237"/>
</iter>
<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="PASS" start="2026-04-08T00:58:20.227346" elapsed="0.000180"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:20.227094" elapsed="0.000469"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.227079" elapsed="0.000508"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.228072" level="INFO">${j} = 39</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:20.227730" elapsed="0.000368"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.228870" level="INFO">${item} =         {
          "id": "39",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:20.228278" elapsed="0.000620"/>
</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="PASS" start="2026-04-08T00:58:20.229053" elapsed="0.000198"/>
</kw>
<var name="${iteration}">39</var>
<status status="PASS" start="2026-04-08T00:58:20.227049" elapsed="0.002239"/>
</iter>
<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="PASS" start="2026-04-08T00:58:20.229710" elapsed="0.000180"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:20.229463" elapsed="0.000465"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.229449" elapsed="0.000503"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.230455" level="INFO">${j} = 40</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:20.230093" elapsed="0.000388"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.231243" level="INFO">${item} =         {
          "id": "40",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:20.230634" elapsed="0.000677"/>
</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="PASS" start="2026-04-08T00:58:20.231472" elapsed="0.000184"/>
</kw>
<var name="${iteration}">40</var>
<status status="PASS" start="2026-04-08T00:58:20.229419" elapsed="0.002275"/>
</iter>
<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="PASS" start="2026-04-08T00:58:20.232106" elapsed="0.000200"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:20.231872" elapsed="0.000473"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.231857" elapsed="0.000511"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.232857" level="INFO">${j} = 41</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:20.232511" elapsed="0.000371"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.233746" level="INFO">${item} =         {
          "id": "41",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:20.233036" elapsed="0.000740"/>
</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="PASS" start="2026-04-08T00:58:20.233933" elapsed="0.000181"/>
</kw>
<var name="${iteration}">41</var>
<status status="PASS" start="2026-04-08T00:58:20.231827" elapsed="0.002324"/>
</iter>
<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="PASS" start="2026-04-08T00:58:20.234582" elapsed="0.000181"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:20.234348" elapsed="0.000452"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.234333" elapsed="0.000491"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.235337" level="INFO">${j} = 42</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:20.234966" elapsed="0.000397"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.236112" level="INFO">${item} =         {
          "id": "42",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:20.235517" elapsed="0.000624"/>
</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="PASS" start="2026-04-08T00:58:20.236312" elapsed="0.000237"/>
</kw>
<var name="${iteration}">42</var>
<status status="PASS" start="2026-04-08T00:58:20.234303" elapsed="0.002286"/>
</iter>
<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="PASS" start="2026-04-08T00:58:20.237123" elapsed="0.000207"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:20.236875" elapsed="0.000494"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.236752" elapsed="0.000641"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.237898" level="INFO">${j} = 43</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:20.237535" elapsed="0.000389"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.238693" level="INFO">${item} =         {
          "id": "43",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:20.238079" elapsed="0.000643"/>
</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="PASS" start="2026-04-08T00:58:20.238876" elapsed="0.000180"/>
</kw>
<var name="${iteration}">43</var>
<status status="PASS" start="2026-04-08T00:58:20.236721" elapsed="0.002373"/>
</iter>
<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="PASS" start="2026-04-08T00:58:20.239533" elapsed="0.000180"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:20.239298" elapsed="0.000453"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.239283" elapsed="0.000493"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.240284" level="INFO">${j} = 44</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:20.239918" elapsed="0.000393"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.241055" level="INFO">${item} =         {
          "id": "44",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:20.240464" elapsed="0.000619"/>
</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="PASS" start="2026-04-08T00:58:20.241254" elapsed="0.000181"/>
</kw>
<var name="${iteration}">44</var>
<status status="PASS" start="2026-04-08T00:58:20.239244" elapsed="0.002229"/>
</iter>
<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="PASS" start="2026-04-08T00:58:20.241918" elapsed="0.000180"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:20.241673" elapsed="0.000463"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.241657" elapsed="0.000519"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.242666" level="INFO">${j} = 45</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:20.242322" elapsed="0.000406"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.243498" level="INFO">${item} =         {
          "id": "45",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:20.242887" elapsed="0.000639"/>
</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="PASS" start="2026-04-08T00:58:20.243681" elapsed="0.000179"/>
</kw>
<var name="${iteration}">45</var>
<status status="PASS" start="2026-04-08T00:58:20.241603" elapsed="0.002294"/>
</iter>
<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="PASS" start="2026-04-08T00:58:20.244326" elapsed="0.000180"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:20.244073" elapsed="0.000472"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.244059" elapsed="0.000510"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.245053" level="INFO">${j} = 46</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:20.244710" elapsed="0.000369"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.245863" level="INFO">${item} =         {
          "id": "46",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:20.245249" elapsed="0.000642"/>
</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="PASS" start="2026-04-08T00:58:20.246047" elapsed="0.000201"/>
</kw>
<var name="${iteration}">46</var>
<status status="PASS" start="2026-04-08T00:58:20.244028" elapsed="0.002257"/>
</iter>
<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="PASS" start="2026-04-08T00:58:20.246692" elapsed="0.000184"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:20.246460" elapsed="0.000453"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.246446" elapsed="0.000491"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.247440" level="INFO">${j} = 47</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:20.247080" elapsed="0.000385"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.248223" level="INFO">${item} =         {
          "id": "47",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:20.247617" elapsed="0.000634"/>
</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="PASS" start="2026-04-08T00:58:20.248404" elapsed="0.000178"/>
</kw>
<var name="${iteration}">47</var>
<status status="PASS" start="2026-04-08T00:58:20.246415" elapsed="0.002203"/>
</iter>
<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="PASS" start="2026-04-08T00:58:20.249027" elapsed="0.000195"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:20.248794" elapsed="0.000465"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.248780" elapsed="0.000503"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.249818" level="INFO">${j} = 48</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:20.249425" elapsed="0.000419"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.250607" level="INFO">${item} =         {
          "id": "48",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:20.249997" elapsed="0.000638"/>
</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="PASS" start="2026-04-08T00:58:20.250788" elapsed="0.000180"/>
</kw>
<var name="${iteration}">48</var>
<status status="PASS" start="2026-04-08T00:58:20.248750" elapsed="0.002254"/>
</iter>
<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="PASS" start="2026-04-08T00:58:20.251437" elapsed="0.000179"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:20.251202" elapsed="0.000451"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.251185" elapsed="0.000492"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.252175" level="INFO">${j} = 49</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:20.251818" elapsed="0.000384"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.252943" level="INFO">${item} =         {
          "id": "49",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:20.252354" elapsed="0.000616"/>
</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="PASS" start="2026-04-08T00:58:20.253122" elapsed="0.000196"/>
</kw>
<var name="${iteration}">49</var>
<status status="PASS" start="2026-04-08T00:58:20.251134" elapsed="0.002221"/>
</iter>
<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="PASS" start="2026-04-08T00:58:20.253938" elapsed="0.000185"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:20.253654" elapsed="0.000523"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.253514" elapsed="0.000689"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.254695" level="INFO">${j} = 50</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:20.254349" elapsed="0.000372"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.255489" level="INFO">${item} =         {
          "id": "50",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:20.254875" elapsed="0.000642"/>
</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="PASS" start="2026-04-08T00:58:20.255673" elapsed="0.000180"/>
</kw>
<var name="${iteration}">50</var>
<status status="PASS" start="2026-04-08T00:58:20.253485" elapsed="0.002405"/>
</iter>
<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="PASS" start="2026-04-08T00:58:20.256323" elapsed="0.000182"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:20.256064" elapsed="0.000479"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.256050" elapsed="0.000517"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.257053" level="INFO">${j} = 51</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:20.256708" elapsed="0.000371"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.257884" level="INFO">${item} =         {
          "id": "51",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:20.257255" elapsed="0.000657"/>
</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="PASS" start="2026-04-08T00:58:20.258068" elapsed="0.000204"/>
</kw>
<var name="${iteration}">51</var>
<status status="PASS" start="2026-04-08T00:58:20.256020" elapsed="0.002289"/>
</iter>
<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="PASS" start="2026-04-08T00:58:20.258721" elapsed="0.000180"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:20.258487" elapsed="0.000451"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.258472" elapsed="0.000489"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.259471" level="INFO">${j} = 52</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:20.259107" elapsed="0.000390"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.260257" level="INFO">${item} =         {
          "id": "52",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:20.259650" elapsed="0.000635"/>
</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="PASS" start="2026-04-08T00:58:20.260439" elapsed="0.000179"/>
</kw>
<var name="${iteration}">52</var>
<status status="PASS" start="2026-04-08T00:58:20.258442" elapsed="0.002213"/>
</iter>
<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="PASS" start="2026-04-08T00:58:20.261063" elapsed="0.000195"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:20.260829" elapsed="0.000467"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.260815" elapsed="0.000505"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.261894" level="INFO">${j} = 53</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:20.261463" elapsed="0.000457"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.262704" level="INFO">${item} =         {
          "id": "53",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:20.262081" elapsed="0.000651"/>
</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="PASS" start="2026-04-08T00:58:20.262886" elapsed="0.000181"/>
</kw>
<var name="${iteration}">53</var>
<status status="PASS" start="2026-04-08T00:58:20.260786" elapsed="0.002317"/>
</iter>
<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="PASS" start="2026-04-08T00:58:20.263532" elapsed="0.000179"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:20.263298" elapsed="0.000450"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.263284" elapsed="0.000488"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.264274" level="INFO">${j} = 54</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:20.263913" elapsed="0.000387"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.265047" level="INFO">${item} =         {
          "id": "54",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:20.264453" elapsed="0.000622"/>
</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="PASS" start="2026-04-08T00:58:20.265296" elapsed="0.000184"/>
</kw>
<var name="${iteration}">54</var>
<status status="PASS" start="2026-04-08T00:58:20.263253" elapsed="0.002264"/>
</iter>
<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="PASS" start="2026-04-08T00:58:20.265971" elapsed="0.000198"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:20.265730" elapsed="0.000479"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.265715" elapsed="0.000518"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.266725" level="INFO">${j} = 55</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:20.266377" elapsed="0.000373"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.267510" level="INFO">${item} =         {
          "id": "55",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:20.266903" elapsed="0.000635"/>
</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="PASS" start="2026-04-08T00:58:20.267693" elapsed="0.000180"/>
</kw>
<var name="${iteration}">55</var>
<status status="PASS" start="2026-04-08T00:58:20.265675" elapsed="0.002235"/>
</iter>
<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="PASS" start="2026-04-08T00:58:20.268336" elapsed="0.000181"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:20.268085" elapsed="0.000470"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.268071" elapsed="0.000507"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.269066" level="INFO">${j} = 56</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:20.268719" elapsed="0.000373"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.269876" level="INFO">${item} =         {
          "id": "56",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:20.269261" elapsed="0.000644"/>
</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="PASS" start="2026-04-08T00:58:20.270061" elapsed="0.000198"/>
</kw>
<var name="${iteration}">56</var>
<status status="PASS" start="2026-04-08T00:58:20.268042" elapsed="0.002255"/>
</iter>
<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="PASS" start="2026-04-08T00:58:20.270821" elapsed="0.000183"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:20.270579" elapsed="0.000463"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.270457" elapsed="0.000609"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.271572" level="INFO">${j} = 57</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:20.271224" elapsed="0.000374"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.272547" level="INFO">${item} =         {
          "id": "57",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:20.271752" elapsed="0.000824"/>
</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="PASS" start="2026-04-08T00:58:20.272729" elapsed="0.000180"/>
</kw>
<var name="${iteration}">57</var>
<status status="PASS" start="2026-04-08T00:58:20.270427" elapsed="0.002520"/>
</iter>
<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="PASS" start="2026-04-08T00:58:20.273373" elapsed="0.000183"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:20.273122" elapsed="0.000471"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.273107" elapsed="0.000510"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.274134" level="INFO">${j} = 58</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:20.273787" elapsed="0.000396"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.274931" level="INFO">${item} =         {
          "id": "58",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:20.274339" elapsed="0.000620"/>
</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="PASS" start="2026-04-08T00:58:20.275115" elapsed="0.000199"/>
</kw>
<var name="${iteration}">58</var>
<status status="PASS" start="2026-04-08T00:58:20.273077" elapsed="0.002273"/>
</iter>
<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="PASS" start="2026-04-08T00:58:20.275761" elapsed="0.000180"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:20.275526" elapsed="0.000452"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.275511" elapsed="0.000491"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.276505" level="INFO">${j} = 59</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:20.276144" elapsed="0.000387"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.277335" level="INFO">${item} =         {
          "id": "59",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:20.276720" elapsed="0.000644"/>
</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="PASS" start="2026-04-08T00:58:20.277520" elapsed="0.000196"/>
</kw>
<var name="${iteration}">59</var>
<status status="PASS" start="2026-04-08T00:58:20.275481" elapsed="0.002272"/>
</iter>
<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="PASS" start="2026-04-08T00:58:20.278178" elapsed="0.000182"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:20.277929" elapsed="0.000469"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.277915" elapsed="0.000507"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.278909" level="INFO">${j} = 60</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:20.278565" elapsed="0.000370"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.279702" level="INFO">${item} =         {
          "id": "60",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:20.279089" elapsed="0.000640"/>
</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="PASS" start="2026-04-08T00:58:20.279886" elapsed="0.000179"/>
</kw>
<var name="${iteration}">60</var>
<status status="PASS" start="2026-04-08T00:58:20.277885" elapsed="0.002216"/>
</iter>
<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="PASS" start="2026-04-08T00:58:20.280528" elapsed="0.000179"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:20.280294" elapsed="0.000450"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.280279" elapsed="0.000489"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.281275" level="INFO">${j} = 61</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:20.280909" elapsed="0.000392"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.282103" level="INFO">${item} =         {
          "id": "61",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:20.281455" elapsed="0.000677"/>
</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="PASS" start="2026-04-08T00:58:20.282304" elapsed="0.000180"/>
</kw>
<var name="${iteration}">61</var>
<status status="PASS" start="2026-04-08T00:58:20.280249" elapsed="0.002272"/>
</iter>
<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="PASS" start="2026-04-08T00:58:20.282930" elapsed="0.000180"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:20.282696" elapsed="0.000451"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.282682" elapsed="0.000505"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.283674" level="INFO">${j} = 62</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:20.283332" elapsed="0.000367"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.284466" level="INFO">${item} =         {
          "id": "62",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:20.283852" elapsed="0.000642"/>
</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="PASS" start="2026-04-08T00:58:20.284648" elapsed="0.000180"/>
</kw>
<var name="${iteration}">62</var>
<status status="PASS" start="2026-04-08T00:58:20.282651" elapsed="0.002213"/>
</iter>
<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="PASS" start="2026-04-08T00:58:20.285287" elapsed="0.000182"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:20.285039" elapsed="0.000467"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.285024" elapsed="0.000506"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.286100" level="INFO">${j} = 63</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:20.285671" elapsed="0.000455"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.286956" level="INFO">${item} =         {
          "id": "63",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:20.286356" elapsed="0.000628"/>
</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="PASS" start="2026-04-08T00:58:20.287142" elapsed="0.000205"/>
</kw>
<var name="${iteration}">63</var>
<status status="PASS" start="2026-04-08T00:58:20.284994" elapsed="0.002391"/>
</iter>
<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="PASS" start="2026-04-08T00:58:20.288501" elapsed="0.000186"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:20.288240" elapsed="0.000526"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.287545" elapsed="0.001250"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.289312" level="INFO">${j} = 64</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:20.288941" elapsed="0.000397"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.290122" level="INFO">${item} =         {
          "id": "64",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:20.289496" elapsed="0.000655"/>
</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="PASS" start="2026-04-08T00:58:20.290323" elapsed="0.000181"/>
</kw>
<var name="${iteration}">64</var>
<status status="PASS" start="2026-04-08T00:58:20.287514" elapsed="0.003029"/>
</iter>
<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="PASS" start="2026-04-08T00:58:20.290950" elapsed="0.000183"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:20.290716" elapsed="0.000470"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.290702" elapsed="0.000509"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.291702" level="INFO">${j} = 65</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:20.291355" elapsed="0.000372"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.292493" level="INFO">${item} =         {
          "id": "65",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:20.291882" elapsed="0.000639"/>
</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="PASS" start="2026-04-08T00:58:20.292676" elapsed="0.000180"/>
</kw>
<var name="${iteration}">65</var>
<status status="PASS" start="2026-04-08T00:58:20.290671" elapsed="0.002222"/>
</iter>
<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="PASS" start="2026-04-08T00:58:20.293318" elapsed="0.000182"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:20.293066" elapsed="0.000473"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.293052" elapsed="0.000511"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.294235" level="INFO">${j} = 66</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:20.293853" elapsed="0.000409"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.295012" level="INFO">${item} =         {
          "id": "66",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:20.294418" elapsed="0.000622"/>
</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="PASS" start="2026-04-08T00:58:20.295212" elapsed="0.000182"/>
</kw>
<var name="${iteration}">66</var>
<status status="PASS" start="2026-04-08T00:58:20.293022" elapsed="0.002409"/>
</iter>
<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="PASS" start="2026-04-08T00:58:20.295841" elapsed="0.000181"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:20.295606" elapsed="0.000454"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.295591" elapsed="0.000493"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.296591" level="INFO">${j} = 67</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:20.296243" elapsed="0.000374"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.297391" level="INFO">${item} =         {
          "id": "67",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:20.296772" elapsed="0.000647"/>
</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="PASS" start="2026-04-08T00:58:20.297575" elapsed="0.000222"/>
</kw>
<var name="${iteration}">67</var>
<status status="PASS" start="2026-04-08T00:58:20.295561" elapsed="0.002276"/>
</iter>
<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="PASS" start="2026-04-08T00:58:20.298263" elapsed="0.000183"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:20.298013" elapsed="0.000471"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.297999" elapsed="0.000509"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.299000" level="INFO">${j} = 68</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:20.298649" elapsed="0.000377"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.299793" level="INFO">${item} =         {
          "id": "68",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:20.299195" elapsed="0.000626"/>
</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="PASS" start="2026-04-08T00:58:20.299976" elapsed="0.000194"/>
</kw>
<var name="${iteration}">68</var>
<status status="PASS" start="2026-04-08T00:58:20.297968" elapsed="0.002274"/>
</iter>
<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="PASS" start="2026-04-08T00:58:20.300655" elapsed="0.000180"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:20.300419" elapsed="0.000453"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.300405" elapsed="0.000492"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.301403" level="INFO">${j} = 69</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:20.301039" elapsed="0.000390"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.302208" level="INFO">${item} =         {
          "id": "69",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:20.301584" elapsed="0.000653"/>
</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="PASS" start="2026-04-08T00:58:20.302394" elapsed="0.000179"/>
</kw>
<var name="${iteration}">69</var>
<status status="PASS" start="2026-04-08T00:58:20.300374" elapsed="0.002236"/>
</iter>
<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="PASS" start="2026-04-08T00:58:20.303019" elapsed="0.000203"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:20.302785" elapsed="0.000475"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.302771" elapsed="0.000513"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.303774" level="INFO">${j} = 70</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:20.303428" elapsed="0.000373"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.304565" level="INFO">${item} =         {
          "id": "70",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:20.303955" elapsed="0.000638"/>
</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="PASS" start="2026-04-08T00:58:20.304748" elapsed="0.000190"/>
</kw>
<var name="${iteration}">70</var>
<status status="PASS" start="2026-04-08T00:58:20.302741" elapsed="0.002234"/>
</iter>
<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="PASS" start="2026-04-08T00:58:20.305520" elapsed="0.000183"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:20.305278" elapsed="0.000492"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.305135" elapsed="0.000660"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.306325" level="INFO">${j} = 71</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:20.305948" elapsed="0.000403"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.307103" level="INFO">${item} =         {
          "id": "71",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:20.306508" elapsed="0.000623"/>
</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="PASS" start="2026-04-08T00:58:20.307419" elapsed="0.000186"/>
</kw>
<var name="${iteration}">71</var>
<status status="PASS" start="2026-04-08T00:58:20.305105" elapsed="0.002538"/>
</iter>
<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="PASS" start="2026-04-08T00:58:20.308055" elapsed="0.000204"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:20.307820" elapsed="0.000478"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.307806" elapsed="0.000516"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.308811" level="INFO">${j} = 72</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:20.308465" elapsed="0.000371"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.309599" level="INFO">${item} =         {
          "id": "72",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:20.308990" elapsed="0.000637"/>
</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="PASS" start="2026-04-08T00:58:20.309795" elapsed="0.000183"/>
</kw>
<var name="${iteration}">72</var>
<status status="PASS" start="2026-04-08T00:58:20.307775" elapsed="0.002240"/>
</iter>
<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="PASS" start="2026-04-08T00:58:20.310451" elapsed="0.000182"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:20.310215" elapsed="0.000456"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.310200" elapsed="0.000495"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.311204" level="INFO">${j} = 73</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:20.310837" elapsed="0.000394"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.311991" level="INFO">${item} =         {
          "id": "73",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:20.311386" elapsed="0.000666"/>
</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="PASS" start="2026-04-08T00:58:20.312228" elapsed="0.000185"/>
</kw>
<var name="${iteration}">73</var>
<status status="PASS" start="2026-04-08T00:58:20.310151" elapsed="0.002300"/>
</iter>
<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="PASS" start="2026-04-08T00:58:20.312861" elapsed="0.000182"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:20.312626" elapsed="0.000455"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.312611" elapsed="0.000494"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.313619" level="INFO">${j} = 74</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:20.313269" elapsed="0.000376"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.314477" level="INFO">${item} =         {
          "id": "74",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:20.313858" elapsed="0.000647"/>
</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="PASS" start="2026-04-08T00:58:20.314660" elapsed="0.000181"/>
</kw>
<var name="${iteration}">74</var>
<status status="PASS" start="2026-04-08T00:58:20.312581" elapsed="0.002297"/>
</iter>
<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="PASS" start="2026-04-08T00:58:20.315307" elapsed="0.000182"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:20.315056" elapsed="0.000472"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.315041" elapsed="0.000511"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.316043" level="INFO">${j} = 75</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:20.315696" elapsed="0.000373"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.316844" level="INFO">${item} =         {
          "id": "75",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:20.316246" elapsed="0.000626"/>
</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="PASS" start="2026-04-08T00:58:20.317029" elapsed="0.000199"/>
</kw>
<var name="${iteration}">75</var>
<status status="PASS" start="2026-04-08T00:58:20.315011" elapsed="0.002255"/>
</iter>
<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="PASS" start="2026-04-08T00:58:20.317679" elapsed="0.000196"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:20.317444" elapsed="0.000469"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.317429" elapsed="0.000508"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.318450" level="INFO">${j} = 76</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:20.318081" elapsed="0.000395"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.319256" level="INFO">${item} =         {
          "id": "76",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:20.318636" elapsed="0.000649"/>
</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="PASS" start="2026-04-08T00:58:20.319440" elapsed="0.000181"/>
</kw>
<var name="${iteration}">76</var>
<status status="PASS" start="2026-04-08T00:58:20.317399" elapsed="0.002259"/>
</iter>
<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="PASS" start="2026-04-08T00:58:20.320070" elapsed="0.000200"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:20.319836" elapsed="0.000472"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.319820" elapsed="0.000513"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.320825" level="INFO">${j} = 77</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:20.320476" elapsed="0.000376"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.321620" level="INFO">${item} =         {
          "id": "77",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:20.321007" elapsed="0.000641"/>
</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="PASS" start="2026-04-08T00:58:20.321830" elapsed="0.000182"/>
</kw>
<var name="${iteration}">77</var>
<status status="PASS" start="2026-04-08T00:58:20.319791" elapsed="0.002262"/>
</iter>
<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="PASS" start="2026-04-08T00:58:20.322606" elapsed="0.000185"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:20.322363" elapsed="0.000466"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.322234" elapsed="0.000620"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.323365" level="INFO">${j} = 78</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:20.322998" elapsed="0.000430"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.324204" level="INFO">${item} =         {
          "id": "78",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:20.323588" elapsed="0.000645"/>
</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="PASS" start="2026-04-08T00:58:20.324400" elapsed="0.000182"/>
</kw>
<var name="${iteration}">78</var>
<status status="PASS" start="2026-04-08T00:58:20.322202" elapsed="0.002418"/>
</iter>
<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="PASS" start="2026-04-08T00:58:20.325035" elapsed="0.000200"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:20.324799" elapsed="0.000475"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.324784" elapsed="0.000514"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.325802" level="INFO">${j} = 79</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:20.325442" elapsed="0.000387"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.326598" level="INFO">${item} =         {
          "id": "79",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:20.325984" elapsed="0.000642"/>
</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="PASS" start="2026-04-08T00:58:20.326782" elapsed="0.000179"/>
</kw>
<var name="${iteration}">79</var>
<status status="PASS" start="2026-04-08T00:58:20.324754" elapsed="0.002244"/>
</iter>
<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="PASS" start="2026-04-08T00:58:20.327430" elapsed="0.000180"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:20.327193" elapsed="0.000454"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.327177" elapsed="0.000495"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.328172" level="INFO">${j} = 80</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:20.327814" elapsed="0.000386"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.328947" level="INFO">${item} =         {
          "id": "80",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:20.328355" elapsed="0.000621"/>
</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="PASS" start="2026-04-08T00:58:20.329130" elapsed="0.000197"/>
</kw>
<var name="${iteration}">80</var>
<status status="PASS" start="2026-04-08T00:58:20.327132" elapsed="0.002232"/>
</iter>
<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="PASS" start="2026-04-08T00:58:20.329828" elapsed="0.000190"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:20.329539" elapsed="0.000517"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.329525" elapsed="0.000555"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.330587" level="INFO">${j} = 81</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:20.330239" elapsed="0.000374"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.331378" level="INFO">${item} =         {
          "id": "81",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:20.330767" elapsed="0.000639"/>
</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="PASS" start="2026-04-08T00:58:20.331562" elapsed="0.000180"/>
</kw>
<var name="${iteration}">81</var>
<status status="PASS" start="2026-04-08T00:58:20.329495" elapsed="0.002284"/>
</iter>
<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="PASS" start="2026-04-08T00:58:20.332210" elapsed="0.000182"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:20.331955" elapsed="0.000475"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.331940" elapsed="0.000514"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.332941" level="INFO">${j} = 82</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:20.332596" elapsed="0.000371"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.333726" level="INFO">${item} =         {
          "id": "82",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:20.333119" elapsed="0.000648"/>
</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="PASS" start="2026-04-08T00:58:20.333923" elapsed="0.000179"/>
</kw>
<var name="${iteration}">82</var>
<status status="PASS" start="2026-04-08T00:58:20.331910" elapsed="0.002228"/>
</iter>
<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="PASS" start="2026-04-08T00:58:20.334603" elapsed="0.000185"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:20.334331" elapsed="0.000495"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.334317" elapsed="0.000534"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.335369" level="INFO">${j} = 83</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:20.334995" elapsed="0.000407"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.336169" level="INFO">${item} =         {
          "id": "83",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:20.335558" elapsed="0.000641"/>
</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="PASS" start="2026-04-08T00:58:20.336357" elapsed="0.000183"/>
</kw>
<var name="${iteration}">83</var>
<status status="PASS" start="2026-04-08T00:58:20.334286" elapsed="0.002291"/>
</iter>
<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="PASS" start="2026-04-08T00:58:20.336990" elapsed="0.000199"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:20.336755" elapsed="0.000473"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.336740" elapsed="0.000512"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.337741" level="INFO">${j} = 84</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:20.337396" elapsed="0.000394"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.338569" level="INFO">${item} =         {
          "id": "84",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:20.337953" elapsed="0.000644"/>
</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="PASS" start="2026-04-08T00:58:20.338752" elapsed="0.000179"/>
</kw>
<var name="${iteration}">84</var>
<status status="PASS" start="2026-04-08T00:58:20.336710" elapsed="0.002257"/>
</iter>
<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="PASS" start="2026-04-08T00:58:20.339517" elapsed="0.000183"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:20.339274" elapsed="0.000464"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.339130" elapsed="0.000633"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.340273" level="INFO">${j} = 85</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:20.339907" elapsed="0.000392"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.341052" level="INFO">${item} =         {
          "id": "85",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:20.340455" elapsed="0.000627"/>
</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="PASS" start="2026-04-08T00:58:20.341253" elapsed="0.000183"/>
</kw>
<var name="${iteration}">85</var>
<status status="PASS" start="2026-04-08T00:58:20.339100" elapsed="0.002374"/>
</iter>
<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="PASS" start="2026-04-08T00:58:20.341973" elapsed="0.000207"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:20.341654" elapsed="0.000565"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.341639" elapsed="0.000605"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.342740" level="INFO">${j} = 86</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:20.342391" elapsed="0.000375"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.343540" level="INFO">${item} =         {
          "id": "86",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:20.342923" elapsed="0.000646"/>
</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="PASS" start="2026-04-08T00:58:20.343724" elapsed="0.000181"/>
</kw>
<var name="${iteration}">86</var>
<status status="PASS" start="2026-04-08T00:58:20.341608" elapsed="0.002334"/>
</iter>
<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="PASS" start="2026-04-08T00:58:20.344370" elapsed="0.000180"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:20.344118" elapsed="0.000470"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.344103" elapsed="0.000509"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.345101" level="INFO">${j} = 87</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:20.344757" elapsed="0.000370"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.345942" level="INFO">${item} =         {
          "id": "87",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:20.345297" elapsed="0.000673"/>
</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="PASS" start="2026-04-08T00:58:20.346185" elapsed="0.000186"/>
</kw>
<var name="${iteration}">87</var>
<status status="PASS" start="2026-04-08T00:58:20.344073" elapsed="0.002336"/>
</iter>
<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="PASS" start="2026-04-08T00:58:20.346820" elapsed="0.000180"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:20.346586" elapsed="0.000453"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.346571" elapsed="0.000497"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.347576" level="INFO">${j} = 88</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:20.347227" elapsed="0.000376"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.348370" level="INFO">${item} =         {
          "id": "88",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:20.347758" elapsed="0.000641"/>
</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="PASS" start="2026-04-08T00:58:20.348555" elapsed="0.000179"/>
</kw>
<var name="${iteration}">88</var>
<status status="PASS" start="2026-04-08T00:58:20.346540" elapsed="0.002231"/>
</iter>
<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="PASS" start="2026-04-08T00:58:20.349207" elapsed="0.000184"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:20.348949" elapsed="0.000481"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.348935" elapsed="0.000519"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.349958" level="INFO">${j} = 89</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:20.349597" elapsed="0.000388"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.350752" level="INFO">${item} =         {
          "id": "89",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:20.350139" elapsed="0.000642"/>
</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="PASS" start="2026-04-08T00:58:20.350936" elapsed="0.000181"/>
</kw>
<var name="${iteration}">89</var>
<status status="PASS" start="2026-04-08T00:58:20.348904" elapsed="0.002265"/>
</iter>
<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="PASS" start="2026-04-08T00:58:20.351583" elapsed="0.000182"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:20.351349" elapsed="0.000453"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.351333" elapsed="0.000494"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.352331" level="INFO">${j} = 90</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:20.351968" elapsed="0.000390"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.353105" level="INFO">${item} =         {
          "id": "90",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:20.352512" elapsed="0.000621"/>
</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="PASS" start="2026-04-08T00:58:20.353304" elapsed="0.000180"/>
</kw>
<var name="${iteration}">90</var>
<status status="PASS" start="2026-04-08T00:58:20.351302" elapsed="0.002219"/>
</iter>
<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="PASS" start="2026-04-08T00:58:20.353958" elapsed="0.000182"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:20.353696" elapsed="0.000497"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.353682" elapsed="0.000536"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.354705" level="INFO">${j} = 91</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:20.354361" elapsed="0.000370"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.355493" level="INFO">${item} =         {
          "id": "91",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:20.354885" elapsed="0.000637"/>
</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="PASS" start="2026-04-08T00:58:20.355675" elapsed="0.000180"/>
</kw>
<var name="${iteration}">91</var>
<status status="PASS" start="2026-04-08T00:58:20.353651" elapsed="0.002241"/>
</iter>
<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="PASS" start="2026-04-08T00:58:20.356442" elapsed="0.000184"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:20.356197" elapsed="0.000467"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.356054" elapsed="0.000634"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.357200" level="INFO">${j} = 92</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:20.356832" elapsed="0.000395"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.358135" level="INFO">${item} =         {
          "id": "92",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:20.357419" elapsed="0.000760"/>
</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="PASS" start="2026-04-08T00:58:20.358340" elapsed="0.000183"/>
</kw>
<var name="${iteration}">92</var>
<status status="PASS" start="2026-04-08T00:58:20.356023" elapsed="0.002538"/>
</iter>
<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="PASS" start="2026-04-08T00:58:20.358974" elapsed="0.000182"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:20.358739" elapsed="0.000471"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.358724" elapsed="0.000510"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.359724" level="INFO">${j} = 93</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:20.359377" elapsed="0.000373"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.360509" level="INFO">${item} =         {
          "id": "93",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:20.359903" elapsed="0.000634"/>
</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="PASS" start="2026-04-08T00:58:20.360691" elapsed="0.000179"/>
</kw>
<var name="${iteration}">93</var>
<status status="PASS" start="2026-04-08T00:58:20.358694" elapsed="0.002212"/>
</iter>
<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="PASS" start="2026-04-08T00:58:20.361331" elapsed="0.000181"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:20.361080" elapsed="0.000471"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.361066" elapsed="0.000509"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.362120" level="INFO">${j} = 94</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:20.361718" elapsed="0.000429"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.362912" level="INFO">${item} =         {
          "id": "94",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:20.362321" elapsed="0.000619"/>
</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="PASS" start="2026-04-08T00:58:20.363095" elapsed="0.000196"/>
</kw>
<var name="${iteration}">94</var>
<status status="PASS" start="2026-04-08T00:58:20.361036" elapsed="0.002293"/>
</iter>
<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="PASS" start="2026-04-08T00:58:20.363739" elapsed="0.000179"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:20.363505" elapsed="0.000451"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.363491" elapsed="0.000488"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.364481" level="INFO">${j} = 95</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:20.364120" elapsed="0.000387"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.365270" level="INFO">${item} =         {
          "id": "95",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:20.364659" elapsed="0.000639"/>
</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="PASS" start="2026-04-08T00:58:20.365451" elapsed="0.000181"/>
</kw>
<var name="${iteration}">95</var>
<status status="PASS" start="2026-04-08T00:58:20.363461" elapsed="0.002208"/>
</iter>
<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="PASS" start="2026-04-08T00:58:20.366088" elapsed="0.000198"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:20.365855" elapsed="0.000469"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.365840" elapsed="0.000508"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.366835" level="INFO">${j} = 96</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:20.366490" elapsed="0.000370"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.367683" level="INFO">${item} =         {
          "id": "96",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:20.367013" elapsed="0.000697"/>
</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="PASS" start="2026-04-08T00:58:20.367866" elapsed="0.000181"/>
</kw>
<var name="${iteration}">96</var>
<status status="PASS" start="2026-04-08T00:58:20.365798" elapsed="0.002286"/>
</iter>
<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="PASS" start="2026-04-08T00:58:20.368509" elapsed="0.000181"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:20.368276" elapsed="0.000487"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.368261" elapsed="0.000529"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.369302" level="INFO">${j} = 97</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:20.368935" elapsed="0.000394"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.370106" level="INFO">${item} =         {
          "id": "97",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:20.369484" elapsed="0.000650"/>
</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="PASS" start="2026-04-08T00:58:20.370305" elapsed="0.000182"/>
</kw>
<var name="${iteration}">97</var>
<status status="PASS" start="2026-04-08T00:58:20.368231" elapsed="0.002293"/>
</iter>
<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="PASS" start="2026-04-08T00:58:20.370931" elapsed="0.000180"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:20.370697" elapsed="0.000451"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.370683" elapsed="0.000505"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.371675" level="INFO">${j} = 98</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:20.371330" elapsed="0.000370"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.372463" level="INFO">${item} =         {
          "id": "98",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:20.371854" elapsed="0.000637"/>
</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="PASS" start="2026-04-08T00:58:20.372645" elapsed="0.000181"/>
</kw>
<var name="${iteration}">98</var>
<status status="PASS" start="2026-04-08T00:58:20.370653" elapsed="0.002210"/>
</iter>
<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="PASS" start="2026-04-08T00:58:20.373403" elapsed="0.000184"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:20.373145" elapsed="0.000481"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.373022" elapsed="0.000628"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.374172" level="INFO">${j} = 99</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:20.373793" elapsed="0.000406"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.374948" level="INFO">${item} =         {
          "id": "99",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:20.374355" elapsed="0.000620"/>
</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="PASS" start="2026-04-08T00:58:20.375129" elapsed="0.000197"/>
</kw>
<var name="${iteration}">99</var>
<status status="PASS" start="2026-04-08T00:58:20.372992" elapsed="0.002371"/>
</iter>
<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="PASS" start="2026-04-08T00:58:20.375773" elapsed="0.000180"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:20.375537" elapsed="0.000454"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.375523" elapsed="0.000491"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.376526" level="INFO">${j} = 100</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:20.376177" elapsed="0.000376"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.377321" level="INFO">${item} =         {
          "id": "100",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
...</msg>
<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="PASS" start="2026-04-08T00:58:20.376707" elapsed="0.000643"/>
</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="PASS" start="2026-04-08T00:58:20.377505" elapsed="0.000181"/>
</kw>
<var name="${iteration}">100</var>
<status status="PASS" start="2026-04-08T00:58:20.375493" elapsed="0.002229"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="PASS" start="2026-04-08T00:58:20.134718" elapsed="0.243035"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.379107" level="INFO">${final_text} = {
  "flow": [
        {
          "id": "1",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "...</msg>
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:58:20.377987" elapsed="0.001148"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T00:58:20.379212" elapsed="0.000039"/>
</return>
<msg time="2026-04-08T00:58:20.379383" level="INFO">${data} = {
  "flow": [
        {
          "id": "1",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "...</msg>
<var>${data}</var>
<arg>folder=${folder}</arg>
<arg>name_prefix=post_</arg>
<arg>base_name=${base_name}</arg>
<arg>extension=${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>endline=${endline}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one 100 times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-08T00:58:20.079566" elapsed="0.299844"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:58:20.380788" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-flow/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:58:20.380527" elapsed="0.000333">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-flow/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-08T00:58:20.380951" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:58:20.380183" elapsed="0.000792"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:20.381309" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:20.381045" elapsed="0.000321"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.381870" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:58:20.381572" elapsed="0.000325"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:20.381390" elapsed="0.000541"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.381027" elapsed="0.000926"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.384319" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:58:20.382106" elapsed="0.002239"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-08T00:58:20.384395" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:58:20.384549" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:58:20.379814" elapsed="0.004760"/>
</kw>
<kw name="Post_To_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.386121" level="INFO">/rests/data/opendaylight-inventory:nodes/node=openflow%3A2/flow-node-inventory:table=0</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:20.385868" elapsed="0.000313"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.386569" level="INFO">{
  "flow": [
        {
          "id": "1",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.1/32"
          },
          "flow-name": "Flow-1",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 1
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "2",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.2/32"
          },
          "flow-name": "Flow-2",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 2
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "3",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.3/32"
          },
          "flow-name": "Flow-3",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 3
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "4",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.4/32"
          },
          "flow-name": "Flow-4",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 4
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "5",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.5/32"
          },
          "flow-name": "Flow-5",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 5
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "6",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.6/32"
          },
          "flow-name": "Flow-6",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 6
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "7",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.7/32"
          },
          "flow-name": "Flow-7",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 7
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "8",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.8/32"
          },
          "flow-name": "Flow-8",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 8
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "9",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.9/32"
          },
          "flow-name": "Flow-9",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 9
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "10",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.10/32"
          },
          "flow-name": "Flow-10",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 10
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "11",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.11/32"
          },
          "flow-name": "Flow-11",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 11
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "12",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.12/32"
          },
          "flow-name": "Flow-12",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 12
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "13",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.13/32"
          },
          "flow-name": "Flow-13",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 13
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "14",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.14/32"
          },
          "flow-name": "Flow-14",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 14
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "15",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.15/32"
          },
          "flow-name": "Flow-15",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 15
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "16",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.16/32"
          },
          "flow-name": "Flow-16",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 16
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "17",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.17/32"
          },
          "flow-name": "Flow-17",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 17
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "18",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.18/32"
          },
          "flow-name": "Flow-18",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 18
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "19",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.19/32"
          },
          "flow-name": "Flow-19",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 19
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "20",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.20/32"
          },
          "flow-name": "Flow-20",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 20
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "21",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.21/32"
          },
          "flow-name": "Flow-21",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 21
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "22",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.22/32"
          },
          "flow-name": "Flow-22",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 22
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "23",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.23/32"
          },
          "flow-name": "Flow-23",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 23
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "24",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.24/32"
          },
          "flow-name": "Flow-24",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 24
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "25",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.25/32"
          },
          "flow-name": "Flow-25",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 25
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "26",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.26/32"
          },
          "flow-name": "Flow-26",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 26
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "27",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.27/32"
          },
          "flow-name": "Flow-27",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 27
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "28",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.28/32"
          },
          "flow-name": "Flow-28",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 28
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "29",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.29/32"
          },
          "flow-name": "Flow-29",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 29
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "30",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.30/32"
          },
          "flow-name": "Flow-30",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 30
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "31",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.31/32"
          },
          "flow-name": "Flow-31",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 31
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "32",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.32/32"
          },
          "flow-name": "Flow-32",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 32
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "33",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.33/32"
          },
          "flow-name": "Flow-33",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 33
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "34",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.34/32"
          },
          "flow-name": "Flow-34",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 34
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "35",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.35/32"
          },
          "flow-name": "Flow-35",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 35
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "36",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.36/32"
          },
          "flow-name": "Flow-36",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 36
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "37",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.37/32"
          },
          "flow-name": "Flow-37",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 37
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "38",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.38/32"
          },
          "flow-name": "Flow-38",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 38
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "39",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.39/32"
          },
          "flow-name": "Flow-39",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 39
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "40",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.40/32"
          },
          "flow-name": "Flow-40",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 40
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "41",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.41/32"
          },
          "flow-name": "Flow-41",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 41
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "42",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.42/32"
          },
          "flow-name": "Flow-42",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 42
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "43",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.43/32"
          },
          "flow-name": "Flow-43",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 43
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "44",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.44/32"
          },
          "flow-name": "Flow-44",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 44
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "45",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.45/32"
          },
          "flow-name": "Flow-45",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 45
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "46",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.46/32"
          },
          "flow-name": "Flow-46",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 46
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "47",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.47/32"
          },
          "flow-name": "Flow-47",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 47
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "48",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.48/32"
          },
          "flow-name": "Flow-48",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 48
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "49",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.49/32"
          },
          "flow-name": "Flow-49",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 49
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "50",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.50/32"
          },
          "flow-name": "Flow-50",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 50
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "51",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.51/32"
          },
          "flow-name": "Flow-51",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 51
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "52",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.52/32"
          },
          "flow-name": "Flow-52",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 52
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "53",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.53/32"
          },
          "flow-name": "Flow-53",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 53
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "54",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.54/32"
          },
          "flow-name": "Flow-54",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 54
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "55",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.55/32"
          },
          "flow-name": "Flow-55",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 55
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "56",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.56/32"
          },
          "flow-name": "Flow-56",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 56
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "57",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.57/32"
          },
          "flow-name": "Flow-57",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 57
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "58",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.58/32"
          },
          "flow-name": "Flow-58",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 58
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "59",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.59/32"
          },
          "flow-name": "Flow-59",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 59
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "60",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.60/32"
          },
          "flow-name": "Flow-60",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 60
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "61",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.61/32"
          },
          "flow-name": "Flow-61",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 61
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "62",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.62/32"
          },
          "flow-name": "Flow-62",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 62
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "63",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.63/32"
          },
          "flow-name": "Flow-63",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 63
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "64",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.64/32"
          },
          "flow-name": "Flow-64",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 64
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "65",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.65/32"
          },
          "flow-name": "Flow-65",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 65
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "66",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.66/32"
          },
          "flow-name": "Flow-66",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 66
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "67",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.67/32"
          },
          "flow-name": "Flow-67",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 67
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "68",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.68/32"
          },
          "flow-name": "Flow-68",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 68
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "69",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.69/32"
          },
          "flow-name": "Flow-69",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 69
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "70",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.70/32"
          },
          "flow-name": "Flow-70",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 70
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "71",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.71/32"
          },
          "flow-name": "Flow-71",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 71
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "72",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.72/32"
          },
          "flow-name": "Flow-72",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 72
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "73",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.73/32"
          },
          "flow-name": "Flow-73",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 73
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "74",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.74/32"
          },
          "flow-name": "Flow-74",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 74
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "75",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.75/32"
          },
          "flow-name": "Flow-75",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 75
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "76",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.76/32"
          },
          "flow-name": "Flow-76",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 76
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "77",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.77/32"
          },
          "flow-name": "Flow-77",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 77
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "78",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.78/32"
          },
          "flow-name": "Flow-78",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 78
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "79",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.79/32"
          },
          "flow-name": "Flow-79",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 79
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "80",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.80/32"
          },
          "flow-name": "Flow-80",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 80
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "81",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.81/32"
          },
          "flow-name": "Flow-81",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 81
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "82",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.82/32"
          },
          "flow-name": "Flow-82",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 82
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "83",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.83/32"
          },
          "flow-name": "Flow-83",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 83
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "84",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.84/32"
          },
          "flow-name": "Flow-84",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 84
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "85",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.85/32"
          },
          "flow-name": "Flow-85",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 85
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "86",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.86/32"
          },
          "flow-name": "Flow-86",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 86
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "87",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.87/32"
          },
          "flow-name": "Flow-87",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 87
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "88",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.88/32"
          },
          "flow-name": "Flow-88",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 88
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "89",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.89/32"
          },
          "flow-name": "Flow-89",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 89
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "90",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.90/32"
          },
          "flow-name": "Flow-90",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 90
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "91",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.91/32"
          },
          "flow-name": "Flow-91",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 91
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "92",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.92/32"
          },
          "flow-name": "Flow-92",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 92
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "93",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.93/32"
          },
          "flow-name": "Flow-93",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 93
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "94",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.94/32"
          },
          "flow-name": "Flow-94",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 94
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "95",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.95/32"
          },
          "flow-name": "Flow-95",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 95
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "96",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.96/32"
          },
          "flow-name": "Flow-96",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 96
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "97",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.97/32"
          },
          "flow-name": "Flow-97",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 97
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "98",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.98/32"
          },
          "flow-name": "Flow-98",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 98
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "99",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.99/32"
          },
          "flow-name": "Flow-99",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 99
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "100",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.100/32"
          },
          "flow-name": "Flow-100",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 100
                      }
                    }
                  ]
                }
              }
            ]
          }
        }
  ]
}</msg>
<arg>${data}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:20.386335" elapsed="0.000933"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.387669" level="INFO">{'Content-Type': 'application/json'}</msg>
<arg>${content_type}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:20.387424" elapsed="0.000288"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.388097" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:20.387865" elapsed="0.000273"/>
</kw>
<kw name="Join_Two_Headers" owner="TemplatedRequests">
<kw name="Copy Dictionary" owner="Collections">
<msg time="2026-04-08T00:58:20.388942" level="INFO">${accumulator} = {'Content-Type': 'application/json'}</msg>
<var>${accumulator}</var>
<arg>${first}</arg>
<doc>Returns a copy of the given dictionary.</doc>
<status status="PASS" start="2026-04-08T00:58:20.388751" elapsed="0.000217"/>
</kw>
<kw name="Get Dictionary Items" owner="Collections">
<msg time="2026-04-08T00:58:20.389325" level="INFO">${items_to_add} = []</msg>
<var>${items_to_add}</var>
<arg>${second}</arg>
<doc>Returns items of the given ``dictionary`` as a list.</doc>
<status status="PASS" start="2026-04-08T00:58:20.389119" elapsed="0.000231"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${accumulator}</arg>
<arg>@{items_to_add}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:58:20.389499" elapsed="0.000188"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.390109" level="INFO">{'Content-Type': 'application/json'}</msg>
<arg>${accumulator}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:20.389858" elapsed="0.000294"/>
</kw>
<return>
<value>${accumulator}</value>
<status status="PASS" start="2026-04-08T00:58:20.390210" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:58:20.390362" level="INFO">${headers} = {'Content-Type': 'application/json'}</msg>
<var>${headers}</var>
<arg>first=${content_type}</arg>
<arg>second=${accept}</arg>
<doc>Take two dicts, join them, return result. Second argument values take precedence.</doc>
<status status="PASS" start="2026-04-08T00:58:20.388352" elapsed="0.002034"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="POST On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:58:20.430823" level="INFO">POST Request : url=http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A2/flow-node-inventory:table=0 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A2/flow-node-inventory:table=0 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node01s3bfo0y24i1es90l47mavglv0.node0', 'Content-Length': '76286', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body={
  "flow": [
        {
          "id": "1",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.1/32"
          },
          "flow-name": "Flow-1",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 1
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "2",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.2/32"
          },
          "flow-name": "Flow-2",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 2
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "3",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.3/32"
          },
          "flow-name": "Flow-3",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 3
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "4",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.4/32"
          },
          "flow-name": "Flow-4",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 4
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "5",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.5/32"
          },
          "flow-name": "Flow-5",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 5
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "6",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.6/32"
          },
          "flow-name": "Flow-6",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 6
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "7",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.7/32"
          },
          "flow-name": "Flow-7",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 7
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "8",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.8/32"
          },
          "flow-name": "Flow-8",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 8
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "9",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.9/32"
          },
          "flow-name": "Flow-9",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 9
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "10",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.10/32"
          },
          "flow-name": "Flow-10",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 10
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "11",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.11/32"
          },
          "flow-name": "Flow-11",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 11
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "12",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.12/32"
          },
          "flow-name": "Flow-12",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 12
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "13",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.13/32"
          },
          "flow-name": "Flow-13",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 13
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "14",
          "priority": 100,
          "table_id": 0,
          "match": ... (set the log level to DEBUG or TRACE to see the full content) 
 </msg>
<msg time="2026-04-08T00:58:20.431200" level="INFO">POST Response : url=http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A2/flow-node-inventory:table=0 
 status=201, reason=Created 
 headers={'Location': 'http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A2/flow-node-inventory:table=0/flow=69', 'Content-Length': '0'} 
 body=None 
 </msg>
<msg time="2026-04-08T00:58:20.431447" level="INFO">${response} = &lt;Response [201]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:58:20.392655" elapsed="0.038851"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:20.390608" elapsed="0.041000"/>
</branch>
<branch type="ELSE">
<kw name="POST On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:20.432024" elapsed="0.000047"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:20.431671" elapsed="0.000532"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.390438" elapsed="0.041817"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.439716" level="INFO"/>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:20.434599" elapsed="0.005212"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:20.434071" elapsed="0.005814"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.434027" elapsed="0.005915"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.444228" level="INFO">201</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:20.440596" elapsed="0.003677"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:20.440063" elapsed="0.004244"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.440027" elapsed="0.004304"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.444882" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:20.444503" elapsed="0.000406"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:20.445248" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:20.444987" elapsed="0.000318"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.445785" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:58:20.445491" elapsed="0.000320"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:20.445328" elapsed="0.000517"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.444959" elapsed="0.000907"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.446415" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:20.446042" elapsed="0.000399"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:20.446743" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:20.446509" elapsed="0.000291"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.447372" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:58:20.446985" elapsed="0.000413"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:20.446823" elapsed="0.000610"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.446492" elapsed="0.000962"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:58:20.447607" elapsed="0.000343"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:58:20.448415" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:20.448116" elapsed="0.000325"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:58:20.448596" elapsed="0.002254"/>
</kw>
<arg>${response}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:58:20.433032" elapsed="0.017880"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:58:20.451093" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:58:20.450984" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.450965" elapsed="0.000210"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:58:20.453591" level="INFO">${text_normalized} = </msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:58:20.451326" elapsed="0.002291"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:58:20.453664" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:58:20.453817" level="INFO">${response_text} = </msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>data=${data}</arg>
<arg>content_type=${content_type}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>POST data to given URI, check status code and return response text.
${content_type} and ${accept} are mandatory Python objects with headers to use.
If ${normalize_json}, normalize text before returning.</doc>
<status status="PASS" start="2026-04-08T00:58:20.384897" elapsed="0.068944"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:58:20.453981" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:58:20.454141" level="INFO">${response_text} = </msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>extension=json</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>content_type=${HEADERS_YANG_JSON}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>endline=${\n}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve URI and data from folder, call Post_To_Uri, return response text.</doc>
<status status="PASS" start="2026-04-08T00:58:19.991702" elapsed="0.462478"/>
</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=response</arg>
<arg>mapping=${mapping}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:20.454525" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:20.454288" elapsed="0.000303"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.454270" elapsed="0.000344"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:58:20.454646" elapsed="0.000025"/>
</return>
<arg>folder=${VAR_DIR}/add-flow</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<arg>iterations=${iter}</arg>
<doc>Add arguments sensible for JSON data, return Post_Templated response text.
Optionally, verification against response.json (no iteration) is called.
Only subset of JSON data is verified and returned if JMES path is specified in
file ${folder}/jmespath.expr.
Response status code must be one of values from ${explicit_status_codes} if specified or one of set
created from all positive HTTP status codes together with ${additional_allowed_status_codes}.</doc>
<status status="PASS" start="2026-04-08T00:58:19.989079" elapsed="0.465687"/>
</kw>
<var name="${switch}">2</var>
<status status="PASS" start="2026-04-08T00:58:19.053977" elapsed="1.400833"/>
</iter>
<iter>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.455491" level="INFO">&amp;{mapping} = { NODE=openflow:3 }</msg>
<var>&amp;{mapping}</var>
<arg>NODE=openflow:${switch}</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-08T00:58:20.455064" elapsed="0.000455"/>
</kw>
<kw name="Post_As_Json_Templated" owner="TemplatedRequests">
<kw name="Post_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.497692" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1.vanadium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:58:20.497321" elapsed="0.000399"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:58:20.498510" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-1.vanadium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:58:20.498271" elapsed="0.000312">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-1.vanadium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-08T00:58:20.498674" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:58:20.497883" elapsed="0.000816"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.499273" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:58:20.498863" elapsed="0.000437"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T00:58:20.499597" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-1/location.uri"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-1/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-08T00:58:20.499812" level="INFO">${template} = /rests/data/opendaylight-inventory:nodes/node=$NODE
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T00:58:20.499464" elapsed="0.000374"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.500264" level="INFO">/rests/data/opendaylight-inventory:nodes/node=$NODE
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:20.499997" elapsed="0.000311"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.501259" level="INFO">mapping: {'NODE': 'openflow:3'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:20.500987" elapsed="0.000317"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.501724" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-08T00:58:20.501464" elapsed="0.000286"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.502679" level="INFO">${value} = openflow:3</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-08T00:58:20.502123" elapsed="0.000583"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-08T00:58:20.503840" level="INFO">${encoded} = openflow%3A3</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-08T00:58:20.503365" elapsed="0.000516"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-08T00:58:20.504030" elapsed="0.000033"/>
</return>
<msg time="2026-04-08T00:58:20.504274" level="INFO">${encoded_value} = openflow%3A3</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-08T00:58:20.502893" elapsed="0.001408"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:58:20.504461" elapsed="0.000487"/>
</kw>
<var name="${key}">NODE</var>
<var name="${value}">openflow:3</var>
<status status="PASS" start="2026-04-08T00:58:20.501967" elapsed="0.003023"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-08T00:58:20.501801" elapsed="0.003225"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-08T00:58:20.505069" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:58:20.505248" level="INFO">${mapping_to_use} = {'NODE': 'openflow%3A3'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-08T00:58:20.500664" elapsed="0.004610"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:20.500377" elapsed="0.004929"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:20.505482" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:20.505330" elapsed="0.000207"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.500358" elapsed="0.005200"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.506295" level="INFO">${final_text} = /rests/data/opendaylight-inventory:nodes/node=openflow%3A3</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:20.505703" elapsed="0.000620"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T00:58:20.506371" elapsed="0.000028"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1/${file_name}.</doc>
<status status="PASS" start="2026-04-08T00:58:20.496695" elapsed="0.009799"/>
</kw>
<msg time="2026-04-08T00:58:20.506548" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:58:20.484311" elapsed="0.022286"/>
</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-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:20.518942" 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-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:20.531214" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:20.543414" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:20.543616" elapsed="0.000021"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:20.543791" elapsed="0.000020"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:20.544168" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:20.544009" elapsed="0.000216"/>
</branch>
<status status="NOT RUN" start="2026-04-08T00:58:20.543995" elapsed="0.000253"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:20.544391" elapsed="0.000020"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:20.544601" elapsed="0.000021"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:20.544772" elapsed="0.000020"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-08T00:58:20.543965" elapsed="0.000861"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-08T00:58:20.543865" elapsed="0.000986"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:20.544998" elapsed="0.000021"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-08T00:58:20.545073" elapsed="0.000015"/>
</return>
<msg time="2026-04-08T00:58:20.545204" level="INFO">${uri} = /rests/data/opendaylight-inventory:nodes/node=openflow%3A3</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one 100 times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-08T00:58:20.480130" elapsed="0.065101"/>
</kw>
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:58:20.555990" elapsed="0.000355"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.569241" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1.vanadium/post_data.prolog.json</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:58:20.568855" elapsed="0.000415"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:58:20.569969" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-1.vanadium/post_data.prolog.json' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:58:20.569761" elapsed="0.000274">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-1.vanadium/post_data.prolog.json' does not exist.</status>
</kw>
<msg time="2026-04-08T00:58:20.570177" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:58:20.569432" elapsed="0.000777"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.570759" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1/post_data.prolog.json</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:58:20.570378" elapsed="0.000408"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T00:58:20.571079" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-1/post_data.prolog.json"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-1/post_data.prolog.json&lt;/a&gt;'.</msg>
<msg time="2026-04-08T00:58:20.571223" level="INFO">${template} = {
  "flow-node-inventory:group": [
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T00:58:20.570946" elapsed="0.000302"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.571644" level="INFO">{
  "flow-node-inventory:group": [
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:20.571404" elapsed="0.000284"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="NOT RUN" start="2026-04-08T00:58:20.572037" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:20.571755" elapsed="0.000339"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.572568" level="INFO">${mapping_to_use} = {'NODE': 'openflow:3'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:58:20.572280" elapsed="0.000314"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:20.572118" elapsed="0.000511"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.571736" elapsed="0.000914"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.573228" level="INFO">${final_text} = {
  "flow-node-inventory:group": [</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:20.572795" elapsed="0.000460"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T00:58:20.573303" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:58:20.573450" level="INFO">${prolog} = {
  "flow-node-inventory:group": [</msg>
<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-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1/${file_name}.</doc>
<status status="PASS" start="2026-04-08T00:58:20.568250" elapsed="0.005225"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.586844" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1.vanadium/post_data.epilog.json</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:58:20.586472" elapsed="0.000401"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:58:20.587586" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-1.vanadium/post_data.epilog.json' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:58:20.587386" elapsed="0.000263">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-1.vanadium/post_data.epilog.json' does not exist.</status>
</kw>
<msg time="2026-04-08T00:58:20.587739" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:58:20.587036" elapsed="0.000727"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.588319" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1/post_data.epilog.json</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:58:20.587927" elapsed="0.000419"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T00:58:20.588638" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-1/post_data.epilog.json"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-1/post_data.epilog.json&lt;/a&gt;'.</msg>
<msg time="2026-04-08T00:58:20.588759" level="INFO">${template} =   ]
}
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T00:58:20.588508" elapsed="0.000276"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.589202" level="INFO">  ]
}
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:20.588942" elapsed="0.000304"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="NOT RUN" start="2026-04-08T00:58:20.589597" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:20.589314" elapsed="0.000339"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.590123" level="INFO">${mapping_to_use} = {'NODE': 'openflow:3'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:58:20.589823" elapsed="0.000361"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:20.589677" elapsed="0.000546"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.589295" elapsed="0.000950"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.590808" level="INFO">${final_text} =   ]
}</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:20.590394" elapsed="0.000440"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T00:58:20.590881" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:58:20.591028" level="INFO">${epilog} =   ]
}</msg>
<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-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1/${file_name}.</doc>
<status status="PASS" start="2026-04-08T00:58:20.585800" elapsed="0.005253"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.604100" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1.vanadium/data.item.json</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:58:20.603734" elapsed="0.000410"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:58:20.604868" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-1.vanadium/data.item.json' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:58:20.604653" elapsed="0.000278">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-1.vanadium/data.item.json' does not exist.</status>
</kw>
<msg time="2026-04-08T00:58:20.605022" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:58:20.604321" elapsed="0.000725"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.605620" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1/data.item.json</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:58:20.605227" elapsed="0.000420"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T00:58:20.605946" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-1/data.item.json"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-1/data.item.json&lt;/a&gt;'.</msg>
<msg time="2026-04-08T00:58:20.606147" level="INFO">${template} =         {
          "group-id": ${i}000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
       ...</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T00:58:20.605815" elapsed="0.000403"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.606629" level="INFO">        {
          "group-id": ${i}000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-${i}",
          "group-type": "group-select"
        }
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:20.606385" elapsed="0.000292"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="NOT RUN" start="2026-04-08T00:58:20.607028" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:20.606744" elapsed="0.000341"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.607561" level="INFO">${mapping_to_use} = {'NODE': 'openflow:3'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:58:20.607271" elapsed="0.000316"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:20.607109" elapsed="0.000512"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.606725" elapsed="0.000918"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.608371" level="INFO">${final_text} =         {
          "group-id": ${i}000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
       ...</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:20.607790" elapsed="0.000609"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T00:58:20.608447" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:58:20.608598" level="INFO">${item_template} =         {
          "group-id": ${i}000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
       ...</msg>
<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-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1/${file_name}.</doc>
<status status="PASS" start="2026-04-08T00:58:20.603199" elapsed="0.005425"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.609023" level="INFO">${items} = []</msg>
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:58:20.608787" elapsed="0.000261"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.609580" level="INFO">${separator} = ,
</msg>
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:58:20.609222" elapsed="0.000384"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:20.610251" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:20.609980" elapsed="0.000329"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.609966" elapsed="0.000366"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.610822" level="INFO">${j} = 1</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:20.610475" elapsed="0.000372"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.611865" level="INFO">${item} =         {
          "group-id": 1000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
          ...</msg>
<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="PASS" start="2026-04-08T00:58:20.611001" elapsed="0.000892"/>
</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="PASS" start="2026-04-08T00:58:20.612049" elapsed="0.000211"/>
</kw>
<var name="${iteration}">1</var>
<status status="PASS" start="2026-04-08T00:58:20.609934" elapsed="0.002364"/>
</iter>
<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="PASS" start="2026-04-08T00:58:20.612709" elapsed="0.000182"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:20.612472" elapsed="0.000457"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.612458" elapsed="0.000495"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.613466" level="INFO">${j} = 2</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:20.613096" elapsed="0.000396"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.614272" level="INFO">${item} =         {
          "group-id": 2000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
          ...</msg>
<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="PASS" start="2026-04-08T00:58:20.613648" elapsed="0.000657"/>
</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="PASS" start="2026-04-08T00:58:20.614462" elapsed="0.000182"/>
</kw>
<var name="${iteration}">2</var>
<status status="PASS" start="2026-04-08T00:58:20.612428" elapsed="0.002254"/>
</iter>
<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="PASS" start="2026-04-08T00:58:20.615145" elapsed="0.000216"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:20.614902" elapsed="0.000498"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.614888" elapsed="0.000535"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.615915" level="INFO">${j} = 3</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:20.615568" elapsed="0.000373"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.616684" level="INFO">${item} =         {
          "group-id": 3000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
          ...</msg>
<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="PASS" start="2026-04-08T00:58:20.616096" elapsed="0.000615"/>
</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="PASS" start="2026-04-08T00:58:20.616867" elapsed="0.000179"/>
</kw>
<var name="${iteration}">3</var>
<status status="PASS" start="2026-04-08T00:58:20.614856" elapsed="0.002226"/>
</iter>
<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="PASS" start="2026-04-08T00:58:20.617515" elapsed="0.000181"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:20.617276" elapsed="0.000458"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.617262" elapsed="0.000496"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.618295" level="INFO">${j} = 4</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:20.617902" elapsed="0.000419"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.619044" level="INFO">${item} =         {
          "group-id": 4000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
          ...</msg>
<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="PASS" start="2026-04-08T00:58:20.618477" elapsed="0.000595"/>
</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="PASS" start="2026-04-08T00:58:20.619243" elapsed="0.000182"/>
</kw>
<var name="${iteration}">4</var>
<status status="PASS" start="2026-04-08T00:58:20.617231" elapsed="0.002231"/>
</iter>
<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="PASS" start="2026-04-08T00:58:20.619872" elapsed="0.000243"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:20.619636" elapsed="0.000537"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.619621" elapsed="0.000579"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.620706" level="INFO">${j} = 5</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:20.620349" elapsed="0.000383"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.621466" level="INFO">${item} =         {
          "group-id": 5000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
          ...</msg>
<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="PASS" start="2026-04-08T00:58:20.620885" elapsed="0.000609"/>
</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="PASS" start="2026-04-08T00:58:20.621649" elapsed="0.000179"/>
</kw>
<var name="${iteration}">5</var>
<status status="PASS" start="2026-04-08T00:58:20.619592" elapsed="0.002273"/>
</iter>
<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="PASS" start="2026-04-08T00:58:20.622340" elapsed="0.000185"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:20.622043" elapsed="0.000520"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.622027" elapsed="0.000559"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.623075" level="INFO">${j} = 6</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:20.622731" elapsed="0.000370"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.623834" level="INFO">${item} =         {
          "group-id": 6000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
          ...</msg>
<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="PASS" start="2026-04-08T00:58:20.623269" elapsed="0.000592"/>
</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="PASS" start="2026-04-08T00:58:20.624015" elapsed="0.000195"/>
</kw>
<var name="${iteration}">6</var>
<status status="PASS" start="2026-04-08T00:58:20.621996" elapsed="0.002251"/>
</iter>
<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="PASS" start="2026-04-08T00:58:20.624654" elapsed="0.000186"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:20.624420" elapsed="0.000456"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.624406" elapsed="0.000494"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.625404" level="INFO">${j} = 7</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:20.625043" elapsed="0.000387"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.626147" level="INFO">${item} =         {
          "group-id": 7000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
          ...</msg>
<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="PASS" start="2026-04-08T00:58:20.625583" elapsed="0.000607"/>
</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="PASS" start="2026-04-08T00:58:20.626409" elapsed="0.000191"/>
</kw>
<var name="${iteration}">7</var>
<status status="PASS" start="2026-04-08T00:58:20.624376" elapsed="0.002260"/>
</iter>
<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="PASS" start="2026-04-08T00:58:20.627049" elapsed="0.000195"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:20.626813" elapsed="0.000470"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.626798" elapsed="0.000508"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.627797" level="INFO">${j} = 8</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:20.627450" elapsed="0.000374"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.628694" level="INFO">${item} =         {
          "group-id": 8000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
          ...</msg>
<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="PASS" start="2026-04-08T00:58:20.627980" elapsed="0.000742"/>
</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="PASS" start="2026-04-08T00:58:20.628879" elapsed="0.000179"/>
</kw>
<var name="${iteration}">8</var>
<status status="PASS" start="2026-04-08T00:58:20.626768" elapsed="0.002327"/>
</iter>
<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="PASS" start="2026-04-08T00:58:20.629523" elapsed="0.000179"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:20.629287" elapsed="0.000452"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.629272" elapsed="0.000491"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.630278" level="INFO">${j} = 9</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:20.629906" elapsed="0.000401"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.631050" level="INFO">${item} =         {
          "group-id": 9000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
          ...</msg>
<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="PASS" start="2026-04-08T00:58:20.630464" elapsed="0.000614"/>
</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="PASS" start="2026-04-08T00:58:20.631250" elapsed="0.000183"/>
</kw>
<var name="${iteration}">9</var>
<status status="PASS" start="2026-04-08T00:58:20.629241" elapsed="0.002229"/>
</iter>
<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="PASS" start="2026-04-08T00:58:20.631880" elapsed="0.000180"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:20.631644" elapsed="0.000454"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.631629" elapsed="0.000493"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.632627" level="INFO">${j} = 10</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:20.632280" elapsed="0.000373"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.633388" level="INFO">${item} =         {
          "group-id": 10000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:20.632806" elapsed="0.000610"/>
</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="PASS" start="2026-04-08T00:58:20.633571" elapsed="0.000179"/>
</kw>
<var name="${iteration}">10</var>
<status status="PASS" start="2026-04-08T00:58:20.631599" elapsed="0.002187"/>
</iter>
<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="PASS" start="2026-04-08T00:58:20.634251" elapsed="0.000195"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:20.633959" elapsed="0.000525"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.633945" elapsed="0.000563"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.634996" level="INFO">${j} = 11</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:20.634651" elapsed="0.000372"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.635763" level="INFO">${item} =         {
          "group-id": 11000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:20.635194" elapsed="0.000597"/>
</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="PASS" start="2026-04-08T00:58:20.635946" elapsed="0.000180"/>
</kw>
<var name="${iteration}">11</var>
<status status="PASS" start="2026-04-08T00:58:20.633915" elapsed="0.002262"/>
</iter>
<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="PASS" start="2026-04-08T00:58:20.636590" elapsed="0.000179"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:20.636355" elapsed="0.000451"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.636340" elapsed="0.000490"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.637333" level="INFO">${j} = 12</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:20.636972" elapsed="0.000387"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.638127" level="INFO">${item} =         {
          "group-id": 12000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:20.637551" elapsed="0.000619"/>
</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="PASS" start="2026-04-08T00:58:20.638353" elapsed="0.000182"/>
</kw>
<var name="${iteration}">12</var>
<status status="PASS" start="2026-04-08T00:58:20.636310" elapsed="0.002262"/>
</iter>
<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="PASS" start="2026-04-08T00:58:20.638983" elapsed="0.000199"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:20.638747" elapsed="0.000473"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.638733" elapsed="0.000511"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.639731" level="INFO">${j} = 13</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:20.639386" elapsed="0.000372"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.640509" level="INFO">${item} =         {
          "group-id": 13000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:20.639913" elapsed="0.000624"/>
</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="PASS" start="2026-04-08T00:58:20.640693" elapsed="0.000179"/>
</kw>
<var name="${iteration}">13</var>
<status status="PASS" start="2026-04-08T00:58:20.638702" elapsed="0.002215"/>
</iter>
<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="PASS" start="2026-04-08T00:58:20.641480" elapsed="0.000180"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:20.641095" elapsed="0.000604"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.641080" elapsed="0.000642"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.642300" level="INFO">${j} = 14</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:20.641864" elapsed="0.000480"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.643085" level="INFO">${item} =         {
          "group-id": 14000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:20.642507" elapsed="0.000606"/>
</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="PASS" start="2026-04-08T00:58:20.643286" elapsed="0.000181"/>
</kw>
<var name="${iteration}">14</var>
<status status="PASS" start="2026-04-08T00:58:20.641049" elapsed="0.002455"/>
</iter>
<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="PASS" start="2026-04-08T00:58:20.643911" elapsed="0.000182"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:20.643677" elapsed="0.000454"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.643663" elapsed="0.000507"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.645498" level="INFO">${j} = 15</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:20.644315" elapsed="0.001209"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.646293" level="INFO">${item} =         {
          "group-id": 15000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:20.645685" elapsed="0.000643"/>
</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="PASS" start="2026-04-08T00:58:20.646486" elapsed="0.000182"/>
</kw>
<var name="${iteration}">15</var>
<status status="PASS" start="2026-04-08T00:58:20.643634" elapsed="0.003072"/>
</iter>
<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="PASS" start="2026-04-08T00:58:20.647117" elapsed="0.000204"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:20.646881" elapsed="0.000478"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.646867" elapsed="0.000516"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.647872" level="INFO">${j} = 16</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:20.647527" elapsed="0.000371"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.648643" level="INFO">${item} =         {
          "group-id": 16000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:20.648052" elapsed="0.000619"/>
</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="PASS" start="2026-04-08T00:58:20.648825" elapsed="0.000181"/>
</kw>
<var name="${iteration}">16</var>
<status status="PASS" start="2026-04-08T00:58:20.646837" elapsed="0.002206"/>
</iter>
<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="PASS" start="2026-04-08T00:58:20.649470" elapsed="0.000185"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:20.649235" elapsed="0.000494"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.649221" elapsed="0.000534"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.650304" level="INFO">${j} = 17</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:20.649906" elapsed="0.000424"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.651176" level="INFO">${item} =         {
          "group-id": 17000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:20.650588" elapsed="0.000617"/>
</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="PASS" start="2026-04-08T00:58:20.651362" elapsed="0.000179"/>
</kw>
<var name="${iteration}">17</var>
<status status="PASS" start="2026-04-08T00:58:20.649189" elapsed="0.002389"/>
</iter>
<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="PASS" start="2026-04-08T00:58:20.651988" elapsed="0.000197"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:20.651753" elapsed="0.000470"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.651739" elapsed="0.000508"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.652735" level="INFO">${j} = 18</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:20.652389" elapsed="0.000371"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.653500" level="INFO">${item} =         {
          "group-id": 18000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:20.652913" elapsed="0.000615"/>
</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="PASS" start="2026-04-08T00:58:20.653682" elapsed="0.000180"/>
</kw>
<var name="${iteration}">18</var>
<status status="PASS" start="2026-04-08T00:58:20.651709" elapsed="0.002189"/>
</iter>
<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="PASS" start="2026-04-08T00:58:20.654351" elapsed="0.000186"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:20.654073" elapsed="0.000502"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.654059" elapsed="0.000539"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.655086" level="INFO">${j} = 19</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:20.654741" elapsed="0.000370"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.655856" level="INFO">${item} =         {
          "group-id": 19000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:20.655283" elapsed="0.000600"/>
</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="PASS" start="2026-04-08T00:58:20.656038" elapsed="0.000199"/>
</kw>
<var name="${iteration}">19</var>
<status status="PASS" start="2026-04-08T00:58:20.654029" elapsed="0.002245"/>
</iter>
<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="PASS" start="2026-04-08T00:58:20.656684" elapsed="0.000180"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:20.656449" elapsed="0.000453"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.656435" elapsed="0.000491"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.657443" level="INFO">${j} = 20</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:20.657070" elapsed="0.000399"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.658306" level="INFO">${item} =         {
          "group-id": 20000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:20.657625" elapsed="0.000710"/>
</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="PASS" start="2026-04-08T00:58:20.658490" elapsed="0.000181"/>
</kw>
<var name="${iteration}">20</var>
<status status="PASS" start="2026-04-08T00:58:20.656405" elapsed="0.002302"/>
</iter>
<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="PASS" start="2026-04-08T00:58:20.659118" elapsed="0.000199"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:20.658883" elapsed="0.000472"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.658868" elapsed="0.000511"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.659867" level="INFO">${j} = 21</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:20.659521" elapsed="0.000371"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.660645" level="INFO">${item} =         {
          "group-id": 21000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:20.660045" elapsed="0.000628"/>
</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="PASS" start="2026-04-08T00:58:20.660828" elapsed="0.000218"/>
</kw>
<var name="${iteration}">21</var>
<status status="PASS" start="2026-04-08T00:58:20.658838" elapsed="0.002247"/>
</iter>
<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="PASS" start="2026-04-08T00:58:20.661524" elapsed="0.000294"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:20.661286" elapsed="0.000571"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.661271" elapsed="0.000611"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.662414" level="INFO">${j} = 22</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:20.662029" elapsed="0.000412"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.663184" level="INFO">${item} =         {
          "group-id": 22000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:20.662597" elapsed="0.000616"/>
</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="PASS" start="2026-04-08T00:58:20.663370" elapsed="0.000179"/>
</kw>
<var name="${iteration}">22</var>
<status status="PASS" start="2026-04-08T00:58:20.661239" elapsed="0.002347"/>
</iter>
<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="PASS" start="2026-04-08T00:58:20.663997" elapsed="0.000199"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:20.663761" elapsed="0.000474"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.663747" elapsed="0.000512"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.664749" level="INFO">${j} = 23</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:20.664402" elapsed="0.000373"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.665518" level="INFO">${item} =         {
          "group-id": 23000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:20.664928" elapsed="0.000618"/>
</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="PASS" start="2026-04-08T00:58:20.665701" elapsed="0.000181"/>
</kw>
<var name="${iteration}">23</var>
<status status="PASS" start="2026-04-08T00:58:20.663717" elapsed="0.002202"/>
</iter>
<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="PASS" start="2026-04-08T00:58:20.666374" elapsed="0.000185"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:20.666095" elapsed="0.000502"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.666080" elapsed="0.000541"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.667113" level="INFO">${j} = 24</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:20.666765" elapsed="0.000374"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.667882" level="INFO">${item} =         {
          "group-id": 24000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:20.667310" elapsed="0.000601"/>
</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="PASS" start="2026-04-08T00:58:20.668066" elapsed="0.000200"/>
</kw>
<var name="${iteration}">24</var>
<status status="PASS" start="2026-04-08T00:58:20.666050" elapsed="0.002254"/>
</iter>
<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="PASS" start="2026-04-08T00:58:20.668714" elapsed="0.000182"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:20.668479" elapsed="0.000455"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.668465" elapsed="0.000493"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.669466" level="INFO">${j} = 25</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:20.669103" elapsed="0.000389"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.670235" level="INFO">${item} =         {
          "group-id": 25000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:20.669650" elapsed="0.000628"/>
</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="PASS" start="2026-04-08T00:58:20.670435" elapsed="0.000181"/>
</kw>
<var name="${iteration}">25</var>
<status status="PASS" start="2026-04-08T00:58:20.668435" elapsed="0.002218"/>
</iter>
<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="PASS" start="2026-04-08T00:58:20.671062" elapsed="0.000198"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:20.670827" elapsed="0.000471"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.670813" elapsed="0.000509"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.671812" level="INFO">${j} = 26</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:20.671465" elapsed="0.000373"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.672585" level="INFO">${item} =         {
          "group-id": 26000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:20.671992" elapsed="0.000655"/>
</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="PASS" start="2026-04-08T00:58:20.672806" elapsed="0.000182"/>
</kw>
<var name="${iteration}">26</var>
<status status="PASS" start="2026-04-08T00:58:20.670782" elapsed="0.002243"/>
</iter>
<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="PASS" start="2026-04-08T00:58:20.673456" elapsed="0.000181"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:20.673219" elapsed="0.000456"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.673204" elapsed="0.000494"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.674209" level="INFO">${j} = 27</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:20.673841" elapsed="0.000395"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.674992" level="INFO">${item} =         {
          "group-id": 27000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:20.674419" elapsed="0.000602"/>
</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="PASS" start="2026-04-08T00:58:20.675197" elapsed="0.000183"/>
</kw>
<var name="${iteration}">27</var>
<status status="PASS" start="2026-04-08T00:58:20.673171" elapsed="0.002246"/>
</iter>
<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="PASS" start="2026-04-08T00:58:20.675829" elapsed="0.000181"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:20.675592" elapsed="0.000455"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.675578" elapsed="0.000493"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.676581" level="INFO">${j} = 28</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:20.676231" elapsed="0.000377"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.677348" level="INFO">${item} =         {
          "group-id": 28000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:20.676763" elapsed="0.000613"/>
</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="PASS" start="2026-04-08T00:58:20.677531" elapsed="0.000179"/>
</kw>
<var name="${iteration}">28</var>
<status status="PASS" start="2026-04-08T00:58:20.675547" elapsed="0.002200"/>
</iter>
<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="PASS" start="2026-04-08T00:58:20.678301" elapsed="0.000191"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:20.677923" elapsed="0.000609"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.677908" elapsed="0.000649"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.679052" level="INFO">${j} = 29</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:20.678704" elapsed="0.000375"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.679828" level="INFO">${item} =         {
          "group-id": 29000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:20.679254" elapsed="0.000602"/>
</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="PASS" start="2026-04-08T00:58:20.680013" elapsed="0.000202"/>
</kw>
<var name="${iteration}">29</var>
<status status="PASS" start="2026-04-08T00:58:20.677878" elapsed="0.002375"/>
</iter>
<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="PASS" start="2026-04-08T00:58:20.680664" elapsed="0.000181"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:20.680427" elapsed="0.000456"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.680413" elapsed="0.000494"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.681419" level="INFO">${j} = 30</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:20.681051" elapsed="0.000395"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.682185" level="INFO">${item} =         {
          "group-id": 30000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:20.681601" elapsed="0.000613"/>
</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="PASS" start="2026-04-08T00:58:20.682394" elapsed="0.000187"/>
</kw>
<var name="${iteration}">30</var>
<status status="PASS" start="2026-04-08T00:58:20.680383" elapsed="0.002237"/>
</iter>
<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="PASS" start="2026-04-08T00:58:20.683033" elapsed="0.000195"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:20.682796" elapsed="0.000470"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.682782" elapsed="0.000508"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.683778" level="INFO">${j} = 31</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:20.683433" elapsed="0.000415"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.684608" level="INFO">${item} =         {
          "group-id": 31000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:20.684009" elapsed="0.000627"/>
</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="PASS" start="2026-04-08T00:58:20.684794" elapsed="0.000182"/>
</kw>
<var name="${iteration}">31</var>
<status status="PASS" start="2026-04-08T00:58:20.682751" elapsed="0.002262"/>
</iter>
<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="PASS" start="2026-04-08T00:58:20.685442" elapsed="0.000181"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:20.685204" elapsed="0.000458"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.685189" elapsed="0.000496"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.686190" level="INFO">${j} = 32</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:20.685829" elapsed="0.000388"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.686954" level="INFO">${item} =         {
          "group-id": 32000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:20.686384" elapsed="0.000598"/>
</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="PASS" start="2026-04-08T00:58:20.687137" elapsed="0.000199"/>
</kw>
<var name="${iteration}">32</var>
<status status="PASS" start="2026-04-08T00:58:20.685142" elapsed="0.002231"/>
</iter>
<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="PASS" start="2026-04-08T00:58:20.687783" elapsed="0.000181"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:20.687547" elapsed="0.000455"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.687533" elapsed="0.000493"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.688530" level="INFO">${j} = 33</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:20.688184" elapsed="0.000372"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.689419" level="INFO">${item} =         {
          "group-id": 33000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:20.688710" elapsed="0.000737"/>
</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="PASS" start="2026-04-08T00:58:20.689603" elapsed="0.000180"/>
</kw>
<var name="${iteration}">33</var>
<status status="PASS" start="2026-04-08T00:58:20.687503" elapsed="0.002317"/>
</iter>
<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="PASS" start="2026-04-08T00:58:20.690249" elapsed="0.000207"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:20.689993" elapsed="0.000501"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.689979" elapsed="0.000539"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.691005" level="INFO">${j} = 34</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:20.690661" elapsed="0.000370"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.691796" level="INFO">${item} =         {
          "group-id": 34000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:20.691219" elapsed="0.000605"/>
</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="PASS" start="2026-04-08T00:58:20.691979" elapsed="0.000195"/>
</kw>
<var name="${iteration}">34</var>
<status status="PASS" start="2026-04-08T00:58:20.689949" elapsed="0.002263"/>
</iter>
<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="PASS" start="2026-04-08T00:58:20.692623" elapsed="0.000180"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:20.692388" elapsed="0.000453"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.692373" elapsed="0.000492"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.693368" level="INFO">${j} = 35</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:20.693007" elapsed="0.000387"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.694120" level="INFO">${item} =         {
          "group-id": 35000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:20.693547" elapsed="0.000601"/>
</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="PASS" start="2026-04-08T00:58:20.694330" elapsed="0.000182"/>
</kw>
<var name="${iteration}">35</var>
<status status="PASS" start="2026-04-08T00:58:20.692342" elapsed="0.002206"/>
</iter>
<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="PASS" start="2026-04-08T00:58:20.695114" elapsed="0.000204"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:20.694835" elapsed="0.000522"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.694708" elapsed="0.000674"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.695875" level="INFO">${j} = 36</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:20.695527" elapsed="0.000374"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.696649" level="INFO">${item} =         {
          "group-id": 36000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:20.696055" elapsed="0.000625"/>
</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="PASS" start="2026-04-08T00:58:20.696842" elapsed="0.000182"/>
</kw>
<var name="${iteration}">36</var>
<status status="PASS" start="2026-04-08T00:58:20.694679" elapsed="0.002383"/>
</iter>
<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="PASS" start="2026-04-08T00:58:20.697489" elapsed="0.000182"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:20.697255" elapsed="0.000454"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.697241" elapsed="0.000493"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.698247" level="INFO">${j} = 37</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:20.697876" elapsed="0.000397"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.699038" level="INFO">${item} =         {
          "group-id": 37000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:20.698454" elapsed="0.000612"/>
</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="PASS" start="2026-04-08T00:58:20.699235" elapsed="0.000183"/>
</kw>
<var name="${iteration}">37</var>
<status status="PASS" start="2026-04-08T00:58:20.697210" elapsed="0.002245"/>
</iter>
<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="PASS" start="2026-04-08T00:58:20.699861" elapsed="0.000181"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:20.699629" elapsed="0.000451"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.699614" elapsed="0.000490"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.700612" level="INFO">${j} = 38</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:20.700263" elapsed="0.000375"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.701387" level="INFO">${item} =         {
          "group-id": 38000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:20.700792" elapsed="0.000623"/>
</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="PASS" start="2026-04-08T00:58:20.701570" elapsed="0.000179"/>
</kw>
<var name="${iteration}">38</var>
<status status="PASS" start="2026-04-08T00:58:20.699585" elapsed="0.002202"/>
</iter>
<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="PASS" start="2026-04-08T00:58:20.702216" elapsed="0.000198"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:20.701963" elapsed="0.000490"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.701949" elapsed="0.000528"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.702972" level="INFO">${j} = 39</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:20.702627" elapsed="0.000370"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.703788" level="INFO">${item} =         {
          "group-id": 39000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:20.703213" elapsed="0.000602"/>
</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="PASS" start="2026-04-08T00:58:20.703969" elapsed="0.000199"/>
</kw>
<var name="${iteration}">39</var>
<status status="PASS" start="2026-04-08T00:58:20.701919" elapsed="0.002288"/>
</iter>
<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="PASS" start="2026-04-08T00:58:20.704618" elapsed="0.000179"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:20.704384" elapsed="0.000451"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.704370" elapsed="0.000489"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.705362" level="INFO">${j} = 40</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:20.705003" elapsed="0.000385"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.706113" level="INFO">${item} =         {
          "group-id": 40000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:20.705542" elapsed="0.000599"/>
</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="PASS" start="2026-04-08T00:58:20.706384" elapsed="0.000187"/>
</kw>
<var name="${iteration}">40</var>
<status status="PASS" start="2026-04-08T00:58:20.704340" elapsed="0.002269"/>
</iter>
<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="PASS" start="2026-04-08T00:58:20.707023" elapsed="0.000204"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:20.706786" elapsed="0.000479"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.706771" elapsed="0.000518"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.707781" level="INFO">${j} = 41</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:20.707432" elapsed="0.000375"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.708551" level="INFO">${item} =         {
          "group-id": 41000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:20.707961" elapsed="0.000618"/>
</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="PASS" start="2026-04-08T00:58:20.708735" elapsed="0.000181"/>
</kw>
<var name="${iteration}">41</var>
<status status="PASS" start="2026-04-08T00:58:20.706741" elapsed="0.002212"/>
</iter>
<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="PASS" start="2026-04-08T00:58:20.709387" elapsed="0.000181"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:20.709127" elapsed="0.000479"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.709113" elapsed="0.000517"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.710118" level="INFO">${j} = 42</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:20.709772" elapsed="0.000372"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.710897" level="INFO">${item} =         {
          "group-id": 42000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:20.710325" elapsed="0.000600"/>
</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="PASS" start="2026-04-08T00:58:20.711080" elapsed="0.000211"/>
</kw>
<var name="${iteration}">42</var>
<status status="PASS" start="2026-04-08T00:58:20.709083" elapsed="0.002246"/>
</iter>
<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="PASS" start="2026-04-08T00:58:20.711863" elapsed="0.000182"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:20.711621" elapsed="0.000462"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.711496" elapsed="0.000611"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.712616" level="INFO">${j} = 43</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:20.712268" elapsed="0.000374"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.713391" level="INFO">${item} =         {
          "group-id": 43000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:20.712796" elapsed="0.000623"/>
</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="PASS" start="2026-04-08T00:58:20.713574" elapsed="0.000182"/>
</kw>
<var name="${iteration}">43</var>
<status status="PASS" start="2026-04-08T00:58:20.711466" elapsed="0.002327"/>
</iter>
<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="PASS" start="2026-04-08T00:58:20.714220" elapsed="0.000211"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:20.713968" elapsed="0.000505"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.713953" elapsed="0.000545"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.714991" level="INFO">${j} = 44</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:20.714643" elapsed="0.000374"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.715762" level="INFO">${item} =         {
          "group-id": 44000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:20.715188" elapsed="0.000602"/>
</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="PASS" start="2026-04-08T00:58:20.715944" elapsed="0.000182"/>
</kw>
<var name="${iteration}">44</var>
<status status="PASS" start="2026-04-08T00:58:20.713923" elapsed="0.002255"/>
</iter>
<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="PASS" start="2026-04-08T00:58:20.716591" elapsed="0.000262"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:20.716357" elapsed="0.000534"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.716342" elapsed="0.000573"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.717427" level="INFO">${j} = 45</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:20.717060" elapsed="0.000393"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.718243" level="INFO">${item} =         {
          "group-id": 45000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:20.717649" elapsed="0.000623"/>
</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="PASS" start="2026-04-08T00:58:20.718440" elapsed="0.000190"/>
</kw>
<var name="${iteration}">45</var>
<status status="PASS" start="2026-04-08T00:58:20.716311" elapsed="0.002356"/>
</iter>
<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="PASS" start="2026-04-08T00:58:20.719083" elapsed="0.000199"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:20.718843" elapsed="0.000478"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.718828" elapsed="0.000517"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.719833" level="INFO">${j} = 46</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:20.719488" elapsed="0.000371"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.720604" level="INFO">${item} =         {
          "group-id": 46000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:20.720014" elapsed="0.000618"/>
</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="PASS" start="2026-04-08T00:58:20.720786" elapsed="0.000180"/>
</kw>
<var name="${iteration}">46</var>
<status status="PASS" start="2026-04-08T00:58:20.718798" elapsed="0.002205"/>
</iter>
<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="PASS" start="2026-04-08T00:58:20.721430" elapsed="0.000179"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:20.721193" elapsed="0.000454"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.721177" elapsed="0.000493"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.722190" level="INFO">${j} = 47</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:20.721814" elapsed="0.000403"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.722979" level="INFO">${item} =         {
          "group-id": 47000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:20.722406" elapsed="0.000601"/>
</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="PASS" start="2026-04-08T00:58:20.723183" elapsed="0.000182"/>
</kw>
<var name="${iteration}">47</var>
<status status="PASS" start="2026-04-08T00:58:20.721132" elapsed="0.002270"/>
</iter>
<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="PASS" start="2026-04-08T00:58:20.723810" elapsed="0.000180"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:20.723577" elapsed="0.000450"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.723562" elapsed="0.000489"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.724561" level="INFO">${j} = 48</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:20.724216" elapsed="0.000371"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.725373" level="INFO">${item} =         {
          "group-id": 48000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:20.724740" elapsed="0.000661"/>
</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="PASS" start="2026-04-08T00:58:20.725556" elapsed="0.000179"/>
</kw>
<var name="${iteration}">48</var>
<status status="PASS" start="2026-04-08T00:58:20.723532" elapsed="0.002239"/>
</iter>
<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="PASS" start="2026-04-08T00:58:20.726210" elapsed="0.000197"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:20.725947" elapsed="0.000500"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.725931" elapsed="0.000541"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.726960" level="INFO">${j} = 49</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:20.726615" elapsed="0.000371"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.727725" level="INFO">${item} =         {
          "group-id": 49000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:20.727138" elapsed="0.000615"/>
</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="PASS" start="2026-04-08T00:58:20.727905" elapsed="0.000179"/>
</kw>
<var name="${iteration}">49</var>
<status status="PASS" start="2026-04-08T00:58:20.725901" elapsed="0.002220"/>
</iter>
<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="PASS" start="2026-04-08T00:58:20.728667" elapsed="0.000182"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:20.728425" elapsed="0.000496"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.728301" elapsed="0.000647"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.729461" level="INFO">${j} = 50</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:20.729094" elapsed="0.000394"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.730230" level="INFO">${item} =         {
          "group-id": 50000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:20.729643" elapsed="0.000615"/>
</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="PASS" start="2026-04-08T00:58:20.730450" elapsed="0.000181"/>
</kw>
<var name="${iteration}">50</var>
<status status="PASS" start="2026-04-08T00:58:20.728270" elapsed="0.002398"/>
</iter>
<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="PASS" start="2026-04-08T00:58:20.731080" elapsed="0.000198"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:20.730845" elapsed="0.000470"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.730831" elapsed="0.000508"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.731828" level="INFO">${j} = 51</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:20.731482" elapsed="0.000372"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.732596" level="INFO">${item} =         {
          "group-id": 51000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:20.732008" elapsed="0.000616"/>
</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="PASS" start="2026-04-08T00:58:20.732778" elapsed="0.000181"/>
</kw>
<var name="${iteration}">51</var>
<status status="PASS" start="2026-04-08T00:58:20.730800" elapsed="0.002195"/>
</iter>
<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="PASS" start="2026-04-08T00:58:20.733422" elapsed="0.000181"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:20.733186" elapsed="0.000455"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.733169" elapsed="0.000496"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.734169" level="INFO">${j} = 52</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:20.733807" elapsed="0.000389"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.734949" level="INFO">${item} =         {
          "group-id": 52000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:20.734369" elapsed="0.000608"/>
</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="PASS" start="2026-04-08T00:58:20.735132" elapsed="0.000198"/>
</kw>
<var name="${iteration}">52</var>
<status status="PASS" start="2026-04-08T00:58:20.733125" elapsed="0.002242"/>
</iter>
<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="PASS" start="2026-04-08T00:58:20.735781" elapsed="0.000181"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:20.735544" elapsed="0.000456"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.735529" elapsed="0.000495"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.736529" level="INFO">${j} = 53</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:20.736181" elapsed="0.000374"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.737296" level="INFO">${item} =         {
          "group-id": 53000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:20.736711" elapsed="0.000614"/>
</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="PASS" start="2026-04-08T00:58:20.737479" elapsed="0.000179"/>
</kw>
<var name="${iteration}">53</var>
<status status="PASS" start="2026-04-08T00:58:20.735499" elapsed="0.002196"/>
</iter>
<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="PASS" start="2026-04-08T00:58:20.738105" elapsed="0.000198"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:20.737870" elapsed="0.000471"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.737855" elapsed="0.000538"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.738894" level="INFO">${j} = 54</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:20.738547" elapsed="0.000373"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.739661" level="INFO">${item} =         {
          "group-id": 54000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:20.739074" elapsed="0.000615"/>
</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="PASS" start="2026-04-08T00:58:20.739843" elapsed="0.000179"/>
</kw>
<var name="${iteration}">54</var>
<status status="PASS" start="2026-04-08T00:58:20.737825" elapsed="0.002271"/>
</iter>
<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="PASS" start="2026-04-08T00:58:20.740528" elapsed="0.000180"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:20.740292" elapsed="0.000454"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.740278" elapsed="0.000492"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.741282" level="INFO">${j} = 55</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:20.740912" elapsed="0.000397"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.742031" level="INFO">${item} =         {
          "group-id": 55000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:20.741464" elapsed="0.000595"/>
</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="PASS" start="2026-04-08T00:58:20.742231" elapsed="0.000195"/>
</kw>
<var name="${iteration}">55</var>
<status status="PASS" start="2026-04-08T00:58:20.740246" elapsed="0.002230"/>
</iter>
<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="PASS" start="2026-04-08T00:58:20.742888" elapsed="0.000180"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:20.742653" elapsed="0.000452"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.742638" elapsed="0.000492"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.743634" level="INFO">${j} = 56</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:20.743288" elapsed="0.000372"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.744398" level="INFO">${item} =         {
          "group-id": 56000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:20.743814" elapsed="0.000612"/>
</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="PASS" start="2026-04-08T00:58:20.744581" elapsed="0.000180"/>
</kw>
<var name="${iteration}">56</var>
<status status="PASS" start="2026-04-08T00:58:20.742607" elapsed="0.002191"/>
</iter>
<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="PASS" start="2026-04-08T00:58:20.745338" elapsed="0.000184"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:20.745080" elapsed="0.000480"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.744957" elapsed="0.000627"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.746070" level="INFO">${j} = 57</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:20.745726" elapsed="0.000370"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.746872" level="INFO">${item} =         {
          "group-id": 57000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:20.746267" elapsed="0.000634"/>
</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="PASS" start="2026-04-08T00:58:20.747056" elapsed="0.000198"/>
</kw>
<var name="${iteration}">57</var>
<status status="PASS" start="2026-04-08T00:58:20.744927" elapsed="0.002365"/>
</iter>
<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="PASS" start="2026-04-08T00:58:20.747704" elapsed="0.000181"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:20.747468" elapsed="0.000456"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.747453" elapsed="0.000495"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.748458" level="INFO">${j} = 58</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:20.748091" elapsed="0.000393"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.749232" level="INFO">${item} =         {
          "group-id": 58000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:20.748646" elapsed="0.000614"/>
</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="PASS" start="2026-04-08T00:58:20.749414" elapsed="0.000179"/>
</kw>
<var name="${iteration}">58</var>
<status status="PASS" start="2026-04-08T00:58:20.747423" elapsed="0.002207"/>
</iter>
<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="PASS" start="2026-04-08T00:58:20.750039" elapsed="0.000344"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:20.749805" elapsed="0.000618"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.749790" elapsed="0.000658"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.750936" level="INFO">${j} = 59</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:20.750591" elapsed="0.000371"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.751705" level="INFO">${item} =         {
          "group-id": 59000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:20.751121" elapsed="0.000644"/>
</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="PASS" start="2026-04-08T00:58:20.751924" elapsed="0.000182"/>
</kw>
<var name="${iteration}">59</var>
<status status="PASS" start="2026-04-08T00:58:20.749760" elapsed="0.002383"/>
</iter>
<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="PASS" start="2026-04-08T00:58:20.752570" elapsed="0.000180"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:20.752334" elapsed="0.000453"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.752320" elapsed="0.000491"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.753315" level="INFO">${j} = 60</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:20.752953" elapsed="0.000388"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.754067" level="INFO">${item} =         {
          "group-id": 60000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:20.753496" elapsed="0.000598"/>
</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="PASS" start="2026-04-08T00:58:20.754265" elapsed="0.000208"/>
</kw>
<var name="${iteration}">60</var>
<status status="PASS" start="2026-04-08T00:58:20.752290" elapsed="0.002220"/>
</iter>
<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="PASS" start="2026-04-08T00:58:20.754919" elapsed="0.000181"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:20.754684" elapsed="0.000453"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.754670" elapsed="0.000513"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.755678" level="INFO">${j} = 61</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:20.755329" elapsed="0.000375"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.756446" level="INFO">${item} =         {
          "group-id": 61000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:20.755858" elapsed="0.000616"/>
</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="PASS" start="2026-04-08T00:58:20.756628" elapsed="0.000178"/>
</kw>
<var name="${iteration}">61</var>
<status status="PASS" start="2026-04-08T00:58:20.754640" elapsed="0.002202"/>
</iter>
<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="PASS" start="2026-04-08T00:58:20.757266" elapsed="0.000183"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:20.757017" elapsed="0.000470"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.757002" elapsed="0.000509"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.757999" level="INFO">${j} = 62</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:20.757654" elapsed="0.000370"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.758792" level="INFO">${item} =         {
          "group-id": 62000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:20.758193" elapsed="0.000627"/>
</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="PASS" start="2026-04-08T00:58:20.758974" elapsed="0.000194"/>
</kw>
<var name="${iteration}">62</var>
<status status="PASS" start="2026-04-08T00:58:20.756973" elapsed="0.002234"/>
</iter>
<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="PASS" start="2026-04-08T00:58:20.759618" elapsed="0.000180"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:20.759383" elapsed="0.000452"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.759369" elapsed="0.000490"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.760366" level="INFO">${j} = 63</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:20.760002" elapsed="0.000390"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.761123" level="INFO">${item} =         {
          "group-id": 63000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:20.760548" elapsed="0.000603"/>
</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="PASS" start="2026-04-08T00:58:20.761324" elapsed="0.000186"/>
</kw>
<var name="${iteration}">63</var>
<status status="PASS" start="2026-04-08T00:58:20.759339" elapsed="0.002208"/>
</iter>
<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="PASS" start="2026-04-08T00:58:20.762070" elapsed="0.000203"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:20.761831" elapsed="0.000480"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.761708" elapsed="0.000628"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.762861" level="INFO">${j} = 64</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:20.762505" elapsed="0.000433"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.763698" level="INFO">${item} =         {
          "group-id": 64000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:20.763102" elapsed="0.000624"/>
</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="PASS" start="2026-04-08T00:58:20.763882" elapsed="0.000180"/>
</kw>
<var name="${iteration}">64</var>
<status status="PASS" start="2026-04-08T00:58:20.761678" elapsed="0.002425"/>
</iter>
<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="PASS" start="2026-04-08T00:58:20.764532" elapsed="0.000182"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:20.764297" elapsed="0.000455"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.764282" elapsed="0.000494"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.765283" level="INFO">${j} = 65</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:20.764919" elapsed="0.000390"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.766032" level="INFO">${item} =         {
          "group-id": 65000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:20.765463" elapsed="0.000597"/>
</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="PASS" start="2026-04-08T00:58:20.766229" elapsed="0.000200"/>
</kw>
<var name="${iteration}">65</var>
<status status="PASS" start="2026-04-08T00:58:20.764251" elapsed="0.002215"/>
</iter>
<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="PASS" start="2026-04-08T00:58:20.766883" elapsed="0.000181"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:20.766641" elapsed="0.000465"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.766627" elapsed="0.000503"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.767638" level="INFO">${j} = 66</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:20.767288" elapsed="0.000376"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.768479" level="INFO">${item} =         {
          "group-id": 66000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:20.767818" elapsed="0.000689"/>
</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="PASS" start="2026-04-08T00:58:20.768662" elapsed="0.000180"/>
</kw>
<var name="${iteration}">66</var>
<status status="PASS" start="2026-04-08T00:58:20.766597" elapsed="0.002281"/>
</iter>
<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="PASS" start="2026-04-08T00:58:20.769305" elapsed="0.000181"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:20.769053" elapsed="0.000470"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.769039" elapsed="0.000509"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.770037" level="INFO">${j} = 67</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:20.769692" elapsed="0.000372"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.770834" level="INFO">${item} =         {
          "group-id": 67000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:20.770232" elapsed="0.000630"/>
</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="PASS" start="2026-04-08T00:58:20.771024" elapsed="0.000201"/>
</kw>
<var name="${iteration}">67</var>
<status status="PASS" start="2026-04-08T00:58:20.769009" elapsed="0.002254"/>
</iter>
<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="PASS" start="2026-04-08T00:58:20.771672" elapsed="0.000180"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:20.771437" elapsed="0.000453"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.771423" elapsed="0.000491"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.772422" level="INFO">${j} = 68</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:20.772057" elapsed="0.000391"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.773197" level="INFO">${item} =         {
          "group-id": 68000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:20.772610" elapsed="0.000617"/>
</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="PASS" start="2026-04-08T00:58:20.773381" elapsed="0.000179"/>
</kw>
<var name="${iteration}">68</var>
<status status="PASS" start="2026-04-08T00:58:20.771392" elapsed="0.002205"/>
</iter>
<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="PASS" start="2026-04-08T00:58:20.774041" elapsed="0.000199"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:20.773772" elapsed="0.000507"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.773757" elapsed="0.000546"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.774839" level="INFO">${j} = 69</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:20.774481" elapsed="0.000385"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.775609" level="INFO">${item} =         {
          "group-id": 69000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:20.775022" elapsed="0.000615"/>
</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="PASS" start="2026-04-08T00:58:20.775794" elapsed="0.000181"/>
</kw>
<var name="${iteration}">69</var>
<status status="PASS" start="2026-04-08T00:58:20.773727" elapsed="0.002285"/>
</iter>
<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="PASS" start="2026-04-08T00:58:20.776444" elapsed="0.000181"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:20.776206" elapsed="0.000456"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.776191" elapsed="0.000495"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.777191" level="INFO">${j} = 70</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:20.776829" elapsed="0.000389"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.777943" level="INFO">${item} =         {
          "group-id": 70000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:20.777373" elapsed="0.000598"/>
</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="PASS" start="2026-04-08T00:58:20.778127" elapsed="0.000198"/>
</kw>
<var name="${iteration}">70</var>
<status status="PASS" start="2026-04-08T00:58:20.776144" elapsed="0.002217"/>
</iter>
<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="PASS" start="2026-04-08T00:58:20.778923" elapsed="0.000182"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:20.778680" elapsed="0.000462"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.778560" elapsed="0.000623"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.779798" level="INFO">${j} = 71</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:20.779327" elapsed="0.000498"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.780570" level="INFO">${item} =         {
          "group-id": 71000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:20.779978" elapsed="0.000620"/>
</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="PASS" start="2026-04-08T00:58:20.780753" elapsed="0.000182"/>
</kw>
<var name="${iteration}">71</var>
<status status="PASS" start="2026-04-08T00:58:20.778529" elapsed="0.002444"/>
</iter>
<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="PASS" start="2026-04-08T00:58:20.781403" elapsed="0.000181"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:20.781150" elapsed="0.000471"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.781135" elapsed="0.000510"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.782132" level="INFO">${j} = 72</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:20.781787" elapsed="0.000386"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.782915" level="INFO">${item} =         {
          "group-id": 72000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:20.782330" elapsed="0.000613"/>
</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="PASS" start="2026-04-08T00:58:20.783098" elapsed="0.000197"/>
</kw>
<var name="${iteration}">72</var>
<status status="PASS" start="2026-04-08T00:58:20.781105" elapsed="0.002227"/>
</iter>
<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="PASS" start="2026-04-08T00:58:20.783740" elapsed="0.000182"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:20.783507" elapsed="0.000451"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.783492" elapsed="0.000490"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.784486" level="INFO">${j} = 73</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:20.784124" elapsed="0.000389"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.785249" level="INFO">${item} =         {
          "group-id": 73000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:20.784665" elapsed="0.000612"/>
</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="PASS" start="2026-04-08T00:58:20.785465" elapsed="0.000183"/>
</kw>
<var name="${iteration}">73</var>
<status status="PASS" start="2026-04-08T00:58:20.783462" elapsed="0.002223"/>
</iter>
<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="PASS" start="2026-04-08T00:58:20.786094" elapsed="0.000196"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:20.785860" elapsed="0.000468"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.785845" elapsed="0.000507"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.786888" level="INFO">${j} = 74</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:20.786520" elapsed="0.000394"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.787659" level="INFO">${item} =         {
          "group-id": 74000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:20.787069" elapsed="0.000618"/>
</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="PASS" start="2026-04-08T00:58:20.787843" elapsed="0.000181"/>
</kw>
<var name="${iteration}">74</var>
<status status="PASS" start="2026-04-08T00:58:20.785815" elapsed="0.002246"/>
</iter>
<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="PASS" start="2026-04-08T00:58:20.788496" elapsed="0.000186"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:20.788261" elapsed="0.000459"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.788247" elapsed="0.000497"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.789268" level="INFO">${j} = 75</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:20.788886" elapsed="0.000408"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.790014" level="INFO">${item} =         {
          "group-id": 75000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:20.789447" elapsed="0.000594"/>
</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="PASS" start="2026-04-08T00:58:20.790213" elapsed="0.000180"/>
</kw>
<var name="${iteration}">75</var>
<status status="PASS" start="2026-04-08T00:58:20.788215" elapsed="0.002240"/>
</iter>
<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="PASS" start="2026-04-08T00:58:20.790877" elapsed="0.000181"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:20.790642" elapsed="0.000453"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.790628" elapsed="0.000491"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.791621" level="INFO">${j} = 76</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:20.791276" elapsed="0.000370"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.792386" level="INFO">${item} =         {
          "group-id": 76000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:20.791798" elapsed="0.000616"/>
</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="PASS" start="2026-04-08T00:58:20.792567" elapsed="0.000179"/>
</kw>
<var name="${iteration}">76</var>
<status status="PASS" start="2026-04-08T00:58:20.790598" elapsed="0.002184"/>
</iter>
<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="PASS" start="2026-04-08T00:58:20.793204" elapsed="0.000183"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:20.792956" elapsed="0.000468"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.792942" elapsed="0.000506"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.793935" level="INFO">${j} = 77</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:20.793589" elapsed="0.000372"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.794804" level="INFO">${item} =         {
          "group-id": 77000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:20.794114" elapsed="0.000719"/>
</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="PASS" start="2026-04-08T00:58:20.794988" elapsed="0.000209"/>
</kw>
<var name="${iteration}">77</var>
<status status="PASS" start="2026-04-08T00:58:20.792912" elapsed="0.002322"/>
</iter>
<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="PASS" start="2026-04-08T00:58:20.795758" elapsed="0.000182"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:20.795518" elapsed="0.000460"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.795396" elapsed="0.000606"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.796510" level="INFO">${j} = 78</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:20.796145" elapsed="0.000391"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.797320" level="INFO">${item} =         {
          "group-id": 78000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:20.796725" elapsed="0.000624"/>
</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="PASS" start="2026-04-08T00:58:20.797507" elapsed="0.000181"/>
</kw>
<var name="${iteration}">78</var>
<status status="PASS" start="2026-04-08T00:58:20.795365" elapsed="0.002360"/>
</iter>
<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="PASS" start="2026-04-08T00:58:20.798135" elapsed="0.000197"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:20.797901" elapsed="0.000470"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.797886" elapsed="0.000508"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.798905" level="INFO">${j} = 79</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:20.798554" elapsed="0.000378"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.799673" level="INFO">${item} =         {
          "group-id": 79000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:20.799085" elapsed="0.000616"/>
</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="PASS" start="2026-04-08T00:58:20.799856" elapsed="0.000180"/>
</kw>
<var name="${iteration}">79</var>
<status status="PASS" start="2026-04-08T00:58:20.797856" elapsed="0.002217"/>
</iter>
<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="PASS" start="2026-04-08T00:58:20.800500" elapsed="0.000180"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:20.800265" elapsed="0.000453"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.800251" elapsed="0.000490"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.801244" level="INFO">${j} = 80</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:20.800883" elapsed="0.000387"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.801989" level="INFO">${item} =         {
          "group-id": 80000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:20.801423" elapsed="0.000594"/>
</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="PASS" start="2026-04-08T00:58:20.802187" elapsed="0.000181"/>
</kw>
<var name="${iteration}">80</var>
<status status="PASS" start="2026-04-08T00:58:20.800220" elapsed="0.002185"/>
</iter>
<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="PASS" start="2026-04-08T00:58:20.802838" elapsed="0.000179"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:20.802604" elapsed="0.000451"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.802590" elapsed="0.000488"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.803583" level="INFO">${j} = 81</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:20.803236" elapsed="0.000373"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.804347" level="INFO">${item} =         {
          "group-id": 81000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:20.803763" elapsed="0.000612"/>
</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="PASS" start="2026-04-08T00:58:20.804529" elapsed="0.000180"/>
</kw>
<var name="${iteration}">81</var>
<status status="PASS" start="2026-04-08T00:58:20.802559" elapsed="0.002187"/>
</iter>
<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="PASS" start="2026-04-08T00:58:20.805172" elapsed="0.000183"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:20.804921" elapsed="0.000472"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.804906" elapsed="0.000511"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.805911" level="INFO">${j} = 82</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:20.805567" elapsed="0.000370"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.806707" level="INFO">${item} =         {
          "group-id": 82000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:20.806090" elapsed="0.000645"/>
</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="PASS" start="2026-04-08T00:58:20.806889" elapsed="0.000180"/>
</kw>
<var name="${iteration}">82</var>
<status status="PASS" start="2026-04-08T00:58:20.804877" elapsed="0.002229"/>
</iter>
<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="PASS" start="2026-04-08T00:58:20.807531" elapsed="0.000179"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:20.807299" elapsed="0.000489"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.807285" elapsed="0.000530"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.808326" level="INFO">${j} = 83</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:20.807961" elapsed="0.000390"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.809079" level="INFO">${item} =         {
          "group-id": 83000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:20.808504" elapsed="0.000603"/>
</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="PASS" start="2026-04-08T00:58:20.809276" elapsed="0.000182"/>
</kw>
<var name="${iteration}">83</var>
<status status="PASS" start="2026-04-08T00:58:20.807254" elapsed="0.002241"/>
</iter>
<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="PASS" start="2026-04-08T00:58:20.809902" elapsed="0.000181"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:20.809670" elapsed="0.000450"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.809655" elapsed="0.000488"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.810678" level="INFO">${j} = 84</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:20.810302" elapsed="0.000402"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.811453" level="INFO">${item} =         {
          "group-id": 84000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:20.810858" elapsed="0.000623"/>
</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="PASS" start="2026-04-08T00:58:20.811635" elapsed="0.000179"/>
</kw>
<var name="${iteration}">84</var>
<status status="PASS" start="2026-04-08T00:58:20.809626" elapsed="0.002224"/>
</iter>
<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="PASS" start="2026-04-08T00:58:20.812389" elapsed="0.000183"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:20.812131" elapsed="0.000479"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.812011" elapsed="0.000624"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.813213" level="INFO">${j} = 85</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:20.812778" elapsed="0.000462"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.813970" level="INFO">${item} =         {
          "group-id": 85000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:20.813399" elapsed="0.000599"/>
</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="PASS" start="2026-04-08T00:58:20.814174" elapsed="0.000183"/>
</kw>
<var name="${iteration}">85</var>
<status status="PASS" start="2026-04-08T00:58:20.811981" elapsed="0.002414"/>
</iter>
<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="PASS" start="2026-04-08T00:58:20.814825" elapsed="0.000181"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:20.814591" elapsed="0.000452"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.814576" elapsed="0.000491"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.815573" level="INFO">${j} = 86</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:20.815227" elapsed="0.000372"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.816335" level="INFO">${item} =         {
          "group-id": 86000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:20.815752" elapsed="0.000611"/>
</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="PASS" start="2026-04-08T00:58:20.816516" elapsed="0.000179"/>
</kw>
<var name="${iteration}">86</var>
<status status="PASS" start="2026-04-08T00:58:20.814542" elapsed="0.002189"/>
</iter>
<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="PASS" start="2026-04-08T00:58:20.817172" elapsed="0.000183"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:20.816923" elapsed="0.000469"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.816909" elapsed="0.000508"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.817902" level="INFO">${j} = 87</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:20.817559" elapsed="0.000369"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.818695" level="INFO">${item} =         {
          "group-id": 87000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:20.818081" elapsed="0.000642"/>
</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="PASS" start="2026-04-08T00:58:20.818877" elapsed="0.000180"/>
</kw>
<var name="${iteration}">87</var>
<status status="PASS" start="2026-04-08T00:58:20.816878" elapsed="0.002260"/>
</iter>
<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="PASS" start="2026-04-08T00:58:20.819569" elapsed="0.000181"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:20.819334" elapsed="0.000458"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.819319" elapsed="0.000502"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.820341" level="INFO">${j} = 88</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:20.819966" elapsed="0.000401"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.821090" level="INFO">${item} =         {
          "group-id": 88000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:20.820522" elapsed="0.000596"/>
</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="PASS" start="2026-04-08T00:58:20.821294" elapsed="0.000182"/>
</kw>
<var name="${iteration}">88</var>
<status status="PASS" start="2026-04-08T00:58:20.819289" elapsed="0.002224"/>
</iter>
<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="PASS" start="2026-04-08T00:58:20.821947" elapsed="0.000329"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:20.821688" elapsed="0.000626"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.821674" elapsed="0.000664"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.822846" level="INFO">${j} = 89</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:20.822497" elapsed="0.000375"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.823610" level="INFO">${item} =         {
          "group-id": 89000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:20.823026" elapsed="0.000612"/>
</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="PASS" start="2026-04-08T00:58:20.823792" elapsed="0.000180"/>
</kw>
<var name="${iteration}">89</var>
<status status="PASS" start="2026-04-08T00:58:20.821644" elapsed="0.002364"/>
</iter>
<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="PASS" start="2026-04-08T00:58:20.824441" elapsed="0.000180"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:20.824204" elapsed="0.000455"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.824189" elapsed="0.000494"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.825190" level="INFO">${j} = 90</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:20.824825" elapsed="0.000392"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.825942" level="INFO">${item} =         {
          "group-id": 90000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:20.825371" elapsed="0.000599"/>
</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="PASS" start="2026-04-08T00:58:20.826123" elapsed="0.000198"/>
</kw>
<var name="${iteration}">90</var>
<status status="PASS" start="2026-04-08T00:58:20.824143" elapsed="0.002216"/>
</iter>
<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="PASS" start="2026-04-08T00:58:20.826816" elapsed="0.000182"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:20.826574" elapsed="0.000462"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.826558" elapsed="0.000502"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.827570" level="INFO">${j} = 91</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:20.827223" elapsed="0.000373"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.828335" level="INFO">${item} =         {
          "group-id": 91000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:20.827750" elapsed="0.000613"/>
</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="PASS" start="2026-04-08T00:58:20.828517" elapsed="0.000180"/>
</kw>
<var name="${iteration}">91</var>
<status status="PASS" start="2026-04-08T00:58:20.826521" elapsed="0.002212"/>
</iter>
<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="PASS" start="2026-04-08T00:58:20.829270" elapsed="0.000183"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:20.829015" elapsed="0.000476"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.828893" elapsed="0.000623"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.830004" level="INFO">${j} = 92</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:20.829658" elapsed="0.000373"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.830879" level="INFO">${item} =         {
          "group-id": 92000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:20.830205" elapsed="0.000733"/>
</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="PASS" start="2026-04-08T00:58:20.831098" elapsed="0.000205"/>
</kw>
<var name="${iteration}">92</var>
<status status="PASS" start="2026-04-08T00:58:20.828862" elapsed="0.002479"/>
</iter>
<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="PASS" start="2026-04-08T00:58:20.831750" elapsed="0.000181"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:20.831515" elapsed="0.000453"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.831501" elapsed="0.000491"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.832497" level="INFO">${j} = 93</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:20.832133" elapsed="0.000390"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.833266" level="INFO">${item} =         {
          "group-id": 93000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:20.832677" elapsed="0.000618"/>
</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="PASS" start="2026-04-08T00:58:20.833449" elapsed="0.000180"/>
</kw>
<var name="${iteration}">93</var>
<status status="PASS" start="2026-04-08T00:58:20.831471" elapsed="0.002194"/>
</iter>
<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="PASS" start="2026-04-08T00:58:20.834070" elapsed="0.000197"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:20.833838" elapsed="0.000466"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.833823" elapsed="0.000505"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.834843" level="INFO">${j} = 94</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:20.834469" elapsed="0.000400"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.835607" level="INFO">${item} =         {
          "group-id": 94000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:20.835022" elapsed="0.000613"/>
</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="PASS" start="2026-04-08T00:58:20.835789" elapsed="0.000179"/>
</kw>
<var name="${iteration}">94</var>
<status status="PASS" start="2026-04-08T00:58:20.833793" elapsed="0.002211"/>
</iter>
<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="PASS" start="2026-04-08T00:58:20.836435" elapsed="0.000180"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:20.836200" elapsed="0.000452"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.836184" elapsed="0.000492"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.837175" level="INFO">${j} = 95</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:20.836816" elapsed="0.000387"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.837923" level="INFO">${item} =         {
          "group-id": 95000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:20.837357" elapsed="0.000594"/>
</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="PASS" start="2026-04-08T00:58:20.838104" elapsed="0.000195"/>
</kw>
<var name="${iteration}">95</var>
<status status="PASS" start="2026-04-08T00:58:20.836139" elapsed="0.002197"/>
</iter>
<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="PASS" start="2026-04-08T00:58:20.838770" elapsed="0.000195"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:20.838524" elapsed="0.000479"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.838508" elapsed="0.000519"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.839536" level="INFO">${j} = 96</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:20.839184" elapsed="0.000378"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.840307" level="INFO">${item} =         {
          "group-id": 96000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:20.839718" elapsed="0.000617"/>
</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="PASS" start="2026-04-08T00:58:20.840490" elapsed="0.000181"/>
</kw>
<var name="${iteration}">96</var>
<status status="PASS" start="2026-04-08T00:58:20.838467" elapsed="0.002241"/>
</iter>
<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="PASS" start="2026-04-08T00:58:20.841121" elapsed="0.000211"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:20.840884" elapsed="0.000486"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.840869" elapsed="0.000525"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.841910" level="INFO">${j} = 97</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:20.841537" elapsed="0.000433"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.842747" level="INFO">${item} =         {
          "group-id": 97000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:20.842129" elapsed="0.000647"/>
</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="PASS" start="2026-04-08T00:58:20.842932" elapsed="0.000186"/>
</kw>
<var name="${iteration}">97</var>
<status status="PASS" start="2026-04-08T00:58:20.840839" elapsed="0.002334"/>
</iter>
<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="PASS" start="2026-04-08T00:58:20.843587" elapsed="0.000182"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:20.843352" elapsed="0.000455"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.843338" elapsed="0.000493"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.844337" level="INFO">${j} = 98</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:20.843973" elapsed="0.000390"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.845085" level="INFO">${item} =         {
          "group-id": 98000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:20.844517" elapsed="0.000596"/>
</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="PASS" start="2026-04-08T00:58:20.845284" elapsed="0.000182"/>
</kw>
<var name="${iteration}">98</var>
<status status="PASS" start="2026-04-08T00:58:20.843307" elapsed="0.002196"/>
</iter>
<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="PASS" start="2026-04-08T00:58:20.846388" elapsed="0.000206"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:20.846130" elapsed="0.000506"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.845664" elapsed="0.000997"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.847150" level="INFO">${j} = 99</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:20.846804" elapsed="0.000387"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.847914" level="INFO">${item} =         {
          "group-id": 99000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
         ...</msg>
<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="PASS" start="2026-04-08T00:58:20.847345" elapsed="0.000597"/>
</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="PASS" start="2026-04-08T00:58:20.848102" elapsed="0.000198"/>
</kw>
<var name="${iteration}">99</var>
<status status="PASS" start="2026-04-08T00:58:20.845633" elapsed="0.002704"/>
</iter>
<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="PASS" start="2026-04-08T00:58:20.848748" elapsed="0.000180"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:20.848511" elapsed="0.000455"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.848497" elapsed="0.000493"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.849497" level="INFO">${j} = 100</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:20.849133" elapsed="0.000390"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.850263" level="INFO">${item} =         {
          "group-id": 100000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
        ...</msg>
<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="PASS" start="2026-04-08T00:58:20.849677" elapsed="0.000613"/>
</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="PASS" start="2026-04-08T00:58:20.850446" elapsed="0.000209"/>
</kw>
<var name="${iteration}">100</var>
<status status="PASS" start="2026-04-08T00:58:20.848467" elapsed="0.002225"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="PASS" start="2026-04-08T00:58:20.609660" elapsed="0.241062"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.851982" level="INFO">${final_text} = {
  "flow-node-inventory:group": [
        {
          "group-id": 1000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
   ...</msg>
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:58:20.850876" elapsed="0.001134"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T00:58:20.852068" elapsed="0.000033"/>
</return>
<msg time="2026-04-08T00:58:20.852245" level="INFO">${data} = {
  "flow-node-inventory:group": [
        {
          "group-id": 1000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
   ...</msg>
<var>${data}</var>
<arg>folder=${folder}</arg>
<arg>name_prefix=post_</arg>
<arg>base_name=${base_name}</arg>
<arg>extension=${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>endline=${endline}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one 100 times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-08T00:58:20.555131" elapsed="0.297141"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:58:20.853588" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-1/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:58:20.853347" elapsed="0.000309">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-1/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-08T00:58:20.853747" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:58:20.852984" elapsed="0.000787"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:20.854085" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:20.853842" elapsed="0.000299"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.854663" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:58:20.854362" elapsed="0.000328"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:20.854182" elapsed="0.000543"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.853824" elapsed="0.000922"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.857066" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:58:20.854899" elapsed="0.002193"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-08T00:58:20.857144" elapsed="0.000045"/>
</return>
<msg time="2026-04-08T00:58:20.857314" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:58:20.852651" elapsed="0.004687"/>
</kw>
<kw name="Post_To_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.858879" level="INFO">/rests/data/opendaylight-inventory:nodes/node=openflow%3A3</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:20.858633" elapsed="0.000291"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.859333" level="INFO">{
  "flow-node-inventory:group": [
        {
          "group-id": 1000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-1",
          "group-type": "group-select"
        },
        {
          "group-id": 2000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-2",
          "group-type": "group-select"
        },
        {
          "group-id": 3000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-3",
          "group-type": "group-select"
        },
        {
          "group-id": 4000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-4",
          "group-type": "group-select"
        },
        {
          "group-id": 5000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-5",
          "group-type": "group-select"
        },
        {
          "group-id": 6000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-6",
          "group-type": "group-select"
        },
        {
          "group-id": 7000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-7",
          "group-type": "group-select"
        },
        {
          "group-id": 8000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-8",
          "group-type": "group-select"
        },
        {
          "group-id": 9000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-9",
          "group-type": "group-select"
        },
        {
          "group-id": 10000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-10",
          "group-type": "group-select"
        },
        {
          "group-id": 11000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-11",
          "group-type": "group-select"
        },
        {
          "group-id": 12000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-12",
          "group-type": "group-select"
        },
        {
          "group-id": 13000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-13",
          "group-type": "group-select"
        },
        {
          "group-id": 14000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-14",
          "group-type": "group-select"
        },
        {
          "group-id": 15000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-15",
          "group-type": "group-select"
        },
        {
          "group-id": 16000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-16",
          "group-type": "group-select"
        },
        {
          "group-id": 17000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-17",
          "group-type": "group-select"
        },
        {
          "group-id": 18000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-18",
          "group-type": "group-select"
        },
        {
          "group-id": 19000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-19",
          "group-type": "group-select"
        },
        {
          "group-id": 20000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-20",
          "group-type": "group-select"
        },
        {
          "group-id": 21000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-21",
          "group-type": "group-select"
        },
        {
          "group-id": 22000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-22",
          "group-type": "group-select"
        },
        {
          "group-id": 23000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-23",
          "group-type": "group-select"
        },
        {
          "group-id": 24000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-24",
          "group-type": "group-select"
        },
        {
          "group-id": 25000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-25",
          "group-type": "group-select"
        },
        {
          "group-id": 26000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-26",
          "group-type": "group-select"
        },
        {
          "group-id": 27000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-27",
          "group-type": "group-select"
        },
        {
          "group-id": 28000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-28",
          "group-type": "group-select"
        },
        {
          "group-id": 29000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-29",
          "group-type": "group-select"
        },
        {
          "group-id": 30000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-30",
          "group-type": "group-select"
        },
        {
          "group-id": 31000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-31",
          "group-type": "group-select"
        },
        {
          "group-id": 32000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-32",
          "group-type": "group-select"
        },
        {
          "group-id": 33000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-33",
          "group-type": "group-select"
        },
        {
          "group-id": 34000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-34",
          "group-type": "group-select"
        },
        {
          "group-id": 35000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-35",
          "group-type": "group-select"
        },
        {
          "group-id": 36000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-36",
          "group-type": "group-select"
        },
        {
          "group-id": 37000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-37",
          "group-type": "group-select"
        },
        {
          "group-id": 38000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-38",
          "group-type": "group-select"
        },
        {
          "group-id": 39000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-39",
          "group-type": "group-select"
        },
        {
          "group-id": 40000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-40",
          "group-type": "group-select"
        },
        {
          "group-id": 41000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-41",
          "group-type": "group-select"
        },
        {
          "group-id": 42000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-42",
          "group-type": "group-select"
        },
        {
          "group-id": 43000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-43",
          "group-type": "group-select"
        },
        {
          "group-id": 44000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-44",
          "group-type": "group-select"
        },
        {
          "group-id": 45000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-45",
          "group-type": "group-select"
        },
        {
          "group-id": 46000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-46",
          "group-type": "group-select"
        },
        {
          "group-id": 47000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-47",
          "group-type": "group-select"
        },
        {
          "group-id": 48000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-48",
          "group-type": "group-select"
        },
        {
          "group-id": 49000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-49",
          "group-type": "group-select"
        },
        {
          "group-id": 50000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-50",
          "group-type": "group-select"
        },
        {
          "group-id": 51000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-51",
          "group-type": "group-select"
        },
        {
          "group-id": 52000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-52",
          "group-type": "group-select"
        },
        {
          "group-id": 53000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-53",
          "group-type": "group-select"
        },
        {
          "group-id": 54000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-54",
          "group-type": "group-select"
        },
        {
          "group-id": 55000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-55",
          "group-type": "group-select"
        },
        {
          "group-id": 56000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-56",
          "group-type": "group-select"
        },
        {
          "group-id": 57000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-57",
          "group-type": "group-select"
        },
        {
          "group-id": 58000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-58",
          "group-type": "group-select"
        },
        {
          "group-id": 59000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-59",
          "group-type": "group-select"
        },
        {
          "group-id": 60000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-60",
          "group-type": "group-select"
        },
        {
          "group-id": 61000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-61",
          "group-type": "group-select"
        },
        {
          "group-id": 62000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-62",
          "group-type": "group-select"
        },
        {
          "group-id": 63000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-63",
          "group-type": "group-select"
        },
        {
          "group-id": 64000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-64",
          "group-type": "group-select"
        },
        {
          "group-id": 65000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-65",
          "group-type": "group-select"
        },
        {
          "group-id": 66000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-66",
          "group-type": "group-select"
        },
        {
          "group-id": 67000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-67",
          "group-type": "group-select"
        },
        {
          "group-id": 68000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-68",
          "group-type": "group-select"
        },
        {
          "group-id": 69000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-69",
          "group-type": "group-select"
        },
        {
          "group-id": 70000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-70",
          "group-type": "group-select"
        },
        {
          "group-id": 71000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-71",
          "group-type": "group-select"
        },
        {
          "group-id": 72000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-72",
          "group-type": "group-select"
        },
        {
          "group-id": 73000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-73",
          "group-type": "group-select"
        },
        {
          "group-id": 74000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-74",
          "group-type": "group-select"
        },
        {
          "group-id": 75000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-75",
          "group-type": "group-select"
        },
        {
          "group-id": 76000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-76",
          "group-type": "group-select"
        },
        {
          "group-id": 77000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-77",
          "group-type": "group-select"
        },
        {
          "group-id": 78000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-78",
          "group-type": "group-select"
        },
        {
          "group-id": 79000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-79",
          "group-type": "group-select"
        },
        {
          "group-id": 80000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-80",
          "group-type": "group-select"
        },
        {
          "group-id": 81000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-81",
          "group-type": "group-select"
        },
        {
          "group-id": 82000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-82",
          "group-type": "group-select"
        },
        {
          "group-id": 83000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-83",
          "group-type": "group-select"
        },
        {
          "group-id": 84000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-84",
          "group-type": "group-select"
        },
        {
          "group-id": 85000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-85",
          "group-type": "group-select"
        },
        {
          "group-id": 86000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-86",
          "group-type": "group-select"
        },
        {
          "group-id": 87000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-87",
          "group-type": "group-select"
        },
        {
          "group-id": 88000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-88",
          "group-type": "group-select"
        },
        {
          "group-id": 89000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-89",
          "group-type": "group-select"
        },
        {
          "group-id": 90000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-90",
          "group-type": "group-select"
        },
        {
          "group-id": 91000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-91",
          "group-type": "group-select"
        },
        {
          "group-id": 92000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-92",
          "group-type": "group-select"
        },
        {
          "group-id": 93000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-93",
          "group-type": "group-select"
        },
        {
          "group-id": 94000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-94",
          "group-type": "group-select"
        },
        {
          "group-id": 95000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-95",
          "group-type": "group-select"
        },
        {
          "group-id": 96000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-96",
          "group-type": "group-select"
        },
        {
          "group-id": 97000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-97",
          "group-type": "group-select"
        },
        {
          "group-id": 98000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-98",
          "group-type": "group-select"
        },
        {
          "group-id": 99000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-99",
          "group-type": "group-select"
        },
        {
          "group-id": 100000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-100",
          "group-type": "group-select"
        }
  ]
}</msg>
<arg>${data}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:20.859082" elapsed="0.000737"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.860234" level="INFO">{'Content-Type': 'application/json'}</msg>
<arg>${content_type}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:20.859975" elapsed="0.000303"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.860665" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:20.860429" elapsed="0.000278"/>
</kw>
<kw name="Join_Two_Headers" owner="TemplatedRequests">
<kw name="Copy Dictionary" owner="Collections">
<msg time="2026-04-08T00:58:20.861522" level="INFO">${accumulator} = {'Content-Type': 'application/json'}</msg>
<var>${accumulator}</var>
<arg>${first}</arg>
<doc>Returns a copy of the given dictionary.</doc>
<status status="PASS" start="2026-04-08T00:58:20.861326" elapsed="0.000221"/>
</kw>
<kw name="Get Dictionary Items" owner="Collections">
<msg time="2026-04-08T00:58:20.861869" level="INFO">${items_to_add} = []</msg>
<var>${items_to_add}</var>
<arg>${second}</arg>
<doc>Returns items of the given ``dictionary`` as a list.</doc>
<status status="PASS" start="2026-04-08T00:58:20.861699" elapsed="0.000195"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${accumulator}</arg>
<arg>@{items_to_add}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:58:20.862041" elapsed="0.000202"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.862656" level="INFO">{'Content-Type': 'application/json'}</msg>
<arg>${accumulator}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:20.862397" elapsed="0.000302"/>
</kw>
<return>
<value>${accumulator}</value>
<status status="PASS" start="2026-04-08T00:58:20.862740" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:58:20.862892" level="INFO">${headers} = {'Content-Type': 'application/json'}</msg>
<var>${headers}</var>
<arg>first=${content_type}</arg>
<arg>second=${accept}</arg>
<doc>Take two dicts, join them, return result. Second argument values take precedence.</doc>
<status status="PASS" start="2026-04-08T00:58:20.860905" elapsed="0.002011"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="POST On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:58:20.921778" level="INFO">POST Request : url=http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A3 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A3 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node01s3bfo0y24i1es90l47mavglv0.node0', 'Content-Length': '52323', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body={
  "flow-node-inventory:group": [
        {
          "group-id": 1000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-1",
          "group-type": "group-select"
        },
        {
          "group-id": 2000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-2",
          "group-type": "group-select"
        },
        {
          "group-id": 3000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-3",
          "group-type": "group-select"
        },
        {
          "group-id": 4000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-4",
          "group-type": "group-select"
        },
        {
          "group-id": 5000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-5",
          "group-type": "group-select"
        },
        {
          "group-id": 6000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-6",
          "group-type": "group-select"
        },
        {
          "group-id": 7000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-7",
          "group-type": "group-select"
        },
        {
          "group-id": 8000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-8",
          "group-type": "group-select"
        },
        {
          "group-id": 9000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-9",
          "group-type": "group-select"
        },
        {
          "group-id": 10000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-10",
          "group-type": "group-select"
        },
        {
          "group-id": 11000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-11",
          "group-type": "group-select"
        },
        {
          "group-id": 12000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-12",
          "group-type": "group-select"
        },
        {
          "group-id": 13000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-13",
          "group-type": "group-select"
        },
        {
          "group-id": 14000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-14",
          "group-type": "group-select"
        },
        {
          "group-id": 15000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-15",
          "group-type": "group-select"
        },
        {
          "group-id": 16000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-16",
          "group-type": "group-select"
        },
        {
          "group-id": 17000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-17",
          "group-type": "group-select"
        },
        {
          "group-id": 18000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-18",
          "group-type": "group-select"
        },
        {
          "group-id": 19000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-19",
          "group-type": "group-select"
        },
        {
          "group-id": 20000,
       ... (set the log level to DEBUG or TRACE to see the full content) 
 </msg>
<msg time="2026-04-08T00:58:20.922186" level="INFO">POST Response : url=http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A3 
 status=201, reason=Created 
 headers={'Location': 'http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A3/flow-node-inventory:group=5000', 'Content-Length': '0'} 
 body=None 
 </msg>
<msg time="2026-04-08T00:58:20.922450" level="INFO">${response} = &lt;Response [201]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:58:20.865187" elapsed="0.057325"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:20.863138" elapsed="0.059529"/>
</branch>
<branch type="ELSE">
<kw name="POST On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:20.923116" elapsed="0.000081"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:20.922738" elapsed="0.000566"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.862968" elapsed="0.060386"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.931212" level="INFO"/>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:20.925741" elapsed="0.005516"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:20.925234" elapsed="0.006057"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.925190" elapsed="0.006127"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.933795" level="INFO">201</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:20.931597" elapsed="0.002243"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:20.931372" elapsed="0.002501"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.931356" elapsed="0.002541"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.934485" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:20.934076" elapsed="0.000436"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:20.934856" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:20.934581" elapsed="0.000334"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.935460" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:58:20.935107" elapsed="0.000381"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:20.934940" elapsed="0.000583"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.934563" elapsed="0.000982"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.936140" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:20.935710" elapsed="0.000482"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:20.936513" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:20.936268" elapsed="0.000303"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.937075" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:58:20.936763" elapsed="0.000339"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:20.936596" elapsed="0.000542"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.936249" elapsed="0.000929"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:58:20.937337" elapsed="0.000367"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:58:20.938173" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:20.937872" elapsed="0.000328"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:58:20.938358" elapsed="0.002254"/>
</kw>
<arg>${response}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:58:20.924194" elapsed="0.016481"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:58:20.940855" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:58:20.940747" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.940729" elapsed="0.000193"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:58:20.943365" level="INFO">${text_normalized} = </msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:58:20.941068" elapsed="0.002324"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:58:20.943439" elapsed="0.000032"/>
</return>
<msg time="2026-04-08T00:58:20.943598" level="INFO">${response_text} = </msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>data=${data}</arg>
<arg>content_type=${content_type}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>POST data to given URI, check status code and return response text.
${content_type} and ${accept} are mandatory Python objects with headers to use.
If ${normalize_json}, normalize text before returning.</doc>
<status status="PASS" start="2026-04-08T00:58:20.857654" elapsed="0.085969"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:58:20.943729" elapsed="0.000027"/>
</return>
<msg time="2026-04-08T00:58:20.943883" level="INFO">${response_text} = </msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>extension=json</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>content_type=${HEADERS_YANG_JSON}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>endline=${\n}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve URI and data from folder, call Post_To_Uri, return response text.</doc>
<status status="PASS" start="2026-04-08T00:58:20.469292" elapsed="0.474615"/>
</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=response</arg>
<arg>mapping=${mapping}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:20.944264" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:20.944011" elapsed="0.000321"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.943994" elapsed="0.000361"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:58:20.944388" elapsed="0.000025"/>
</return>
<arg>folder=${VAR_DIR}/add-group-1</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<arg>iterations=${iter}</arg>
<doc>Add arguments sensible for JSON data, return Post_Templated response text.
Optionally, verification against response.json (no iteration) is called.
Only subset of JSON data is verified and returned if JMES path is specified in
file ${folder}/jmespath.expr.
Response status code must be one of values from ${explicit_status_codes} if specified or one of set
created from all positive HTTP status codes together with ${additional_allowed_status_codes}.</doc>
<status status="PASS" start="2026-04-08T00:58:20.466587" elapsed="0.477923"/>
</kw>
<kw name="Post_As_Json_Templated" owner="TemplatedRequests">
<kw name="Post_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.986938" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2.vanadium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:58:20.986503" elapsed="0.000464"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:58:20.987730" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-2.vanadium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:58:20.987490" elapsed="0.000314">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-2.vanadium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-08T00:58:20.987907" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:58:20.987134" elapsed="0.000800"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.988515" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:58:20.988103" elapsed="0.000440"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T00:58:20.988843" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-2/location.uri"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-2/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-08T00:58:20.989000" level="INFO">${template} = /rests/data/opendaylight-inventory:nodes/node=$NODE
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T00:58:20.988706" elapsed="0.000320"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.989455" level="INFO">/rests/data/opendaylight-inventory:nodes/node=$NODE
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:20.989206" elapsed="0.000294"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.990475" level="INFO">mapping: {'NODE': 'openflow:3'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:20.990210" elapsed="0.000309"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.991150" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-08T00:58:20.990681" elapsed="0.000514"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.992122" level="INFO">${value} = openflow:3</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-08T00:58:20.991570" elapsed="0.000580"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-08T00:58:20.993375" level="INFO">${encoded} = openflow%3A3</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-08T00:58:20.992848" elapsed="0.000568"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-08T00:58:20.993535" elapsed="0.000033"/>
</return>
<msg time="2026-04-08T00:58:20.993758" level="INFO">${encoded_value} = openflow%3A3</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-08T00:58:20.992387" elapsed="0.001397"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:58:20.993983" elapsed="0.000520"/>
</kw>
<var name="${key}">NODE</var>
<var name="${value}">openflow:3</var>
<status status="PASS" start="2026-04-08T00:58:20.991427" elapsed="0.003120"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-08T00:58:20.991250" elapsed="0.003334"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-08T00:58:20.994628" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:58:20.994855" level="INFO">${mapping_to_use} = {'NODE': 'openflow%3A3'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-08T00:58:20.989861" elapsed="0.005025"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:20.989570" elapsed="0.005352"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:20.995121" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:20.994948" elapsed="0.000255"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:20.989550" elapsed="0.005675"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:20.995922" level="INFO">${final_text} = /rests/data/opendaylight-inventory:nodes/node=openflow%3A3</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:20.995378" elapsed="0.000572"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T00:58:20.995999" 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-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2/${file_name}.</doc>
<status status="PASS" start="2026-04-08T00:58:20.985864" elapsed="0.010276"/>
</kw>
<msg time="2026-04-08T00:58:20.996237" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:58:20.973421" elapsed="0.022873"/>
</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-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:21.008785" elapsed="0.000029"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:21.021077" elapsed="0.000029"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:21.033305" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:21.033506" elapsed="0.000021"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:21.033692" elapsed="0.000022"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:21.034063" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:21.033917" elapsed="0.000207"/>
</branch>
<status status="NOT RUN" start="2026-04-08T00:58:21.033901" elapsed="0.000247"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:21.034326" elapsed="0.000021"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:21.034497" elapsed="0.000020"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:21.034711" elapsed="0.000022"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-08T00:58:21.033871" elapsed="0.000931"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-08T00:58:21.033770" elapsed="0.001062"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:21.034990" elapsed="0.000021"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-08T00:58:21.035068" elapsed="0.000015"/>
</return>
<msg time="2026-04-08T00:58:21.035206" level="INFO">${uri} = /rests/data/opendaylight-inventory:nodes/node=openflow%3A3</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one 100 times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-08T00:58:20.969220" elapsed="0.066013"/>
</kw>
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:58:21.046150" elapsed="0.000358"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.059673" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2.vanadium/post_data.prolog.json</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:58:21.059300" elapsed="0.000402"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:58:21.060442" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-2.vanadium/post_data.prolog.json' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:58:21.060228" elapsed="0.000281">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-2.vanadium/post_data.prolog.json' does not exist.</status>
</kw>
<msg time="2026-04-08T00:58:21.060599" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:58:21.059865" elapsed="0.000759"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.061208" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2/post_data.prolog.json</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:58:21.060787" elapsed="0.000450"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T00:58:21.061535" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-2/post_data.prolog.json"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-2/post_data.prolog.json&lt;/a&gt;'.</msg>
<msg time="2026-04-08T00:58:21.061666" level="INFO">${template} = {
  "flow-node-inventory:group": [
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T00:58:21.061400" elapsed="0.000291"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.062099" level="INFO">{
  "flow-node-inventory:group": [
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:21.061846" elapsed="0.000299"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="NOT RUN" start="2026-04-08T00:58:21.062525" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:21.062234" elapsed="0.000348"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.063087" level="INFO">${mapping_to_use} = {'NODE': 'openflow:3'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:58:21.062752" elapsed="0.000362"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:21.062606" elapsed="0.000544"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.062213" elapsed="0.000979"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.063775" level="INFO">${final_text} = {
  "flow-node-inventory:group": [</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:21.063341" elapsed="0.000461"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T00:58:21.063849" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:58:21.064002" level="INFO">${prolog} = {
  "flow-node-inventory:group": [</msg>
<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-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2/${file_name}.</doc>
<status status="PASS" start="2026-04-08T00:58:21.058621" elapsed="0.005407"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.077498" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2.vanadium/post_data.epilog.json</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:58:21.077085" elapsed="0.000441"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:58:21.078252" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-2.vanadium/post_data.epilog.json' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:58:21.078025" elapsed="0.000301">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-2.vanadium/post_data.epilog.json' does not exist.</status>
</kw>
<msg time="2026-04-08T00:58:21.078421" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:58:21.077690" elapsed="0.000756"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.079017" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2/post_data.epilog.json</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:58:21.078610" elapsed="0.000435"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T00:58:21.079369" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-2/post_data.epilog.json"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-2/post_data.epilog.json&lt;/a&gt;'.</msg>
<msg time="2026-04-08T00:58:21.079544" level="INFO">${template} =   ]
}
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T00:58:21.079223" elapsed="0.000347"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.079980" level="INFO">  ]
}
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:21.079732" elapsed="0.000293"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="NOT RUN" start="2026-04-08T00:58:21.080415" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:21.080094" elapsed="0.000380"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.080937" level="INFO">${mapping_to_use} = {'NODE': 'openflow:3'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:58:21.080645" elapsed="0.000318"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:21.080499" elapsed="0.000500"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.080074" elapsed="0.000946"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.081612" level="INFO">${final_text} =   ]
}</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:21.081181" elapsed="0.000457"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T00:58:21.081686" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:58:21.081838" level="INFO">${epilog} =   ]
}</msg>
<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-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2/${file_name}.</doc>
<status status="PASS" start="2026-04-08T00:58:21.076462" elapsed="0.005400"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.095000" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2.vanadium/data.item.json</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:58:21.094603" elapsed="0.000426"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:58:21.095774" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-2.vanadium/data.item.json' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:58:21.095562" elapsed="0.000276">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-2.vanadium/data.item.json' does not exist.</status>
</kw>
<msg time="2026-04-08T00:58:21.095931" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:58:21.095220" elapsed="0.000735"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.096523" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2/data.item.json</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:58:21.096119" elapsed="0.000431"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T00:58:21.096856" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-2/data.item.json"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-2/data.item.json&lt;/a&gt;'.</msg>
<msg time="2026-04-08T00:58:21.097016" level="INFO">${template} =     {
      "group-id": ${i},
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": ${i}000,
            "action": [
              {
               ...</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T00:58:21.096721" elapsed="0.000321"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.097463" level="INFO">    {
      "group-id": ${i},
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": ${i}000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": ${i}000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-${i}",
      "group-type": "group-ff"
    }
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:21.097217" elapsed="0.000294"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="NOT RUN" start="2026-04-08T00:58:21.097877" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:21.097579" elapsed="0.000356"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.098423" level="INFO">${mapping_to_use} = {'NODE': 'openflow:3'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:58:21.098109" elapsed="0.000340"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:21.097960" elapsed="0.000525"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.097560" elapsed="0.000946"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.099294" level="INFO">${final_text} =     {
      "group-id": ${i},
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": ${i}000,
            "action": [
              {
               ...</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:21.098671" elapsed="0.000653"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T00:58:21.099373" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:58:21.099529" level="INFO">${item_template} =     {
      "group-id": ${i},
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": ${i}000,
            "action": [
              {
               ...</msg>
<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-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2/${file_name}.</doc>
<status status="PASS" start="2026-04-08T00:58:21.094036" elapsed="0.005519"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.099978" level="INFO">${items} = []</msg>
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:58:21.099734" elapsed="0.000270"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.100555" level="INFO">${separator} = ,
</msg>
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:58:21.100186" elapsed="0.000396"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:21.101250" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:21.100978" elapsed="0.000332"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.100963" elapsed="0.000371"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.101853" level="INFO">${j} = 1</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:21.101482" elapsed="0.000398"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.102802" level="INFO">${item} =     {
      "group-id": 1,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 1000,
            "action": [
              {
                "orde...</msg>
<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="PASS" start="2026-04-08T00:58:21.102036" elapsed="0.000795"/>
</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="PASS" start="2026-04-08T00:58:21.103007" elapsed="0.000218"/>
</kw>
<var name="${iteration}">1</var>
<status status="PASS" start="2026-04-08T00:58:21.100930" elapsed="0.002334"/>
</iter>
<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="PASS" start="2026-04-08T00:58:21.103684" elapsed="0.000200"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:21.103443" elapsed="0.000481"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.103428" elapsed="0.000521"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.104470" level="INFO">${j} = 2</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:21.104094" elapsed="0.000403"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.105326" level="INFO">${item} =     {
      "group-id": 2,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 2000,
            "action": [
              {
                "orde...</msg>
<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="PASS" start="2026-04-08T00:58:21.104657" elapsed="0.000698"/>
</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="PASS" start="2026-04-08T00:58:21.105516" elapsed="0.000187"/>
</kw>
<var name="${iteration}">2</var>
<status status="PASS" start="2026-04-08T00:58:21.103397" elapsed="0.002349"/>
</iter>
<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="PASS" start="2026-04-08T00:58:21.106232" elapsed="0.000192"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:21.105936" elapsed="0.000527"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.105921" elapsed="0.000568"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.107047" level="INFO">${j} = 3</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:21.106635" elapsed="0.000443"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.107839" level="INFO">${item} =     {
      "group-id": 3,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 3000,
            "action": [
              {
                "orde...</msg>
<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="PASS" start="2026-04-08T00:58:21.107252" elapsed="0.000617"/>
</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="PASS" start="2026-04-08T00:58:21.108027" elapsed="0.000203"/>
</kw>
<var name="${iteration}">3</var>
<status status="PASS" start="2026-04-08T00:58:21.105889" elapsed="0.002380"/>
</iter>
<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="PASS" start="2026-04-08T00:58:21.108690" elapsed="0.000198"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:21.108451" elapsed="0.000476"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.108436" elapsed="0.000516"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.109483" level="INFO">${j} = 4</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:21.109109" elapsed="0.000400"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.110273" level="INFO">${item} =     {
      "group-id": 4,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 4000,
            "action": [
              {
                "orde...</msg>
<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="PASS" start="2026-04-08T00:58:21.109666" elapsed="0.000636"/>
</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="PASS" start="2026-04-08T00:58:21.110459" elapsed="0.000183"/>
</kw>
<var name="${iteration}">4</var>
<status status="PASS" start="2026-04-08T00:58:21.108404" elapsed="0.002276"/>
</iter>
<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="PASS" start="2026-04-08T00:58:21.111145" elapsed="0.000206"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:21.110888" elapsed="0.000502"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.110852" elapsed="0.000563"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.111927" level="INFO">${j} = 5</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:21.111560" elapsed="0.000394"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.112702" level="INFO">${item} =     {
      "group-id": 5,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 5000,
            "action": [
              {
                "orde...</msg>
<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="PASS" start="2026-04-08T00:58:21.112111" elapsed="0.000619"/>
</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="PASS" start="2026-04-08T00:58:21.112896" elapsed="0.000191"/>
</kw>
<var name="${iteration}">5</var>
<status status="PASS" start="2026-04-08T00:58:21.110814" elapsed="0.002310"/>
</iter>
<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="PASS" start="2026-04-08T00:58:21.113569" elapsed="0.000183"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:21.113330" elapsed="0.000461"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.113315" elapsed="0.000500"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.114358" level="INFO">${j} = 6</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:21.113978" elapsed="0.000407"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.115150" level="INFO">${item} =     {
      "group-id": 6,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 6000,
            "action": [
              {
                "orde...</msg>
<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="PASS" start="2026-04-08T00:58:21.114541" elapsed="0.000653"/>
</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="PASS" start="2026-04-08T00:58:21.115354" elapsed="0.000184"/>
</kw>
<var name="${iteration}">6</var>
<status status="PASS" start="2026-04-08T00:58:21.113283" elapsed="0.002292"/>
</iter>
<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="PASS" start="2026-04-08T00:58:21.116010" elapsed="0.000209"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:21.115754" elapsed="0.000504"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.115738" elapsed="0.000544"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.116781" level="INFO">${j} = 7</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:21.116428" elapsed="0.000379"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.117563" level="INFO">${item} =     {
      "group-id": 7,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 7000,
            "action": [
              {
                "orde...</msg>
<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="PASS" start="2026-04-08T00:58:21.116972" elapsed="0.000620"/>
</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="PASS" start="2026-04-08T00:58:21.117784" elapsed="0.000196"/>
</kw>
<var name="${iteration}">7</var>
<status status="PASS" start="2026-04-08T00:58:21.115707" elapsed="0.002317"/>
</iter>
<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="PASS" start="2026-04-08T00:58:21.118466" elapsed="0.000185"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:21.118224" elapsed="0.000467"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.118209" elapsed="0.000507"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.119269" level="INFO">${j} = 8</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:21.118860" elapsed="0.000436"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.120186" level="INFO">${item} =     {
      "group-id": 8,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 8000,
            "action": [
              {
                "orde...</msg>
<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="PASS" start="2026-04-08T00:58:21.119454" elapsed="0.000762"/>
</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="PASS" start="2026-04-08T00:58:21.120376" elapsed="0.000184"/>
</kw>
<var name="${iteration}">8</var>
<status status="PASS" start="2026-04-08T00:58:21.118175" elapsed="0.002424"/>
</iter>
<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="PASS" start="2026-04-08T00:58:21.121016" elapsed="0.000208"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:21.120776" elapsed="0.000487"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.120761" elapsed="0.000526"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.121787" level="INFO">${j} = 9</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:21.121432" elapsed="0.000382"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.122575" level="INFO">${item} =     {
      "group-id": 9,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 9000,
            "action": [
              {
                "orde...</msg>
<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="PASS" start="2026-04-08T00:58:21.121970" elapsed="0.000634"/>
</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="PASS" start="2026-04-08T00:58:21.122764" elapsed="0.000215"/>
</kw>
<var name="${iteration}">9</var>
<status status="PASS" start="2026-04-08T00:58:21.120730" elapsed="0.002290"/>
</iter>
<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="PASS" start="2026-04-08T00:58:21.123480" elapsed="0.000183"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:21.123239" elapsed="0.000464"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.123223" elapsed="0.000504"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.124297" level="INFO">${j} = 10</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:21.123909" elapsed="0.000415"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.125052" level="INFO">${item} =     {
      "group-id": 10,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 10000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:21.124479" elapsed="0.000601"/>
</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="PASS" start="2026-04-08T00:58:21.125266" elapsed="0.000187"/>
</kw>
<var name="${iteration}">10</var>
<status status="PASS" start="2026-04-08T00:58:21.123189" elapsed="0.002304"/>
</iter>
<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="PASS" start="2026-04-08T00:58:21.125915" elapsed="0.000182"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:21.125677" elapsed="0.000467"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.125661" elapsed="0.000533"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.126703" level="INFO">${j} = 11</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:21.126348" elapsed="0.000381"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.127503" level="INFO">${item} =     {
      "group-id": 11,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 11000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:21.126883" elapsed="0.000649"/>
</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="PASS" start="2026-04-08T00:58:21.127689" elapsed="0.000184"/>
</kw>
<var name="${iteration}">11</var>
<status status="PASS" start="2026-04-08T00:58:21.125630" elapsed="0.002281"/>
</iter>
<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="PASS" start="2026-04-08T00:58:21.128356" elapsed="0.000185"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:21.128087" elapsed="0.000493"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.128072" elapsed="0.000533"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.129112" level="INFO">${j} = 12</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:21.128755" elapsed="0.000383"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.129941" level="INFO">${item} =     {
      "group-id": 12,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 12000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:21.129355" elapsed="0.000615"/>
</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="PASS" start="2026-04-08T00:58:21.130133" elapsed="0.000211"/>
</kw>
<var name="${iteration}">12</var>
<status status="PASS" start="2026-04-08T00:58:21.128041" elapsed="0.002342"/>
</iter>
<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="PASS" start="2026-04-08T00:58:21.130797" elapsed="0.000222"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:21.130560" elapsed="0.000500"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.130545" elapsed="0.000539"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.131612" level="INFO">${j} = 13</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:21.131252" elapsed="0.000386"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.132400" level="INFO">${item} =     {
      "group-id": 13,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 13000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:21.131795" elapsed="0.000634"/>
</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="PASS" start="2026-04-08T00:58:21.132588" elapsed="0.000207"/>
</kw>
<var name="${iteration}">13</var>
<status status="PASS" start="2026-04-08T00:58:21.130514" elapsed="0.002328"/>
</iter>
<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="PASS" start="2026-04-08T00:58:21.133295" elapsed="0.000188"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:21.133020" elapsed="0.000502"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.133005" elapsed="0.000541"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.134052" level="INFO">${j} = 14</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:21.133691" elapsed="0.000387"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.134840" level="INFO">${item} =     {
      "group-id": 14,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 14000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:21.134249" elapsed="0.000620"/>
</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="PASS" start="2026-04-08T00:58:21.135052" elapsed="0.000199"/>
</kw>
<var name="${iteration}">14</var>
<status status="PASS" start="2026-04-08T00:58:21.132974" elapsed="0.002319"/>
</iter>
<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="PASS" start="2026-04-08T00:58:21.135730" elapsed="0.000185"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:21.135487" elapsed="0.000467"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.135470" elapsed="0.000508"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.136623" level="INFO">${j} = 15</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:21.136121" elapsed="0.000529"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.137409" level="INFO">${item} =     {
      "group-id": 15,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 15000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:21.136808" elapsed="0.000630"/>
</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="PASS" start="2026-04-08T00:58:21.137595" elapsed="0.000184"/>
</kw>
<var name="${iteration}">15</var>
<status status="PASS" start="2026-04-08T00:58:21.135438" elapsed="0.002380"/>
</iter>
<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="PASS" start="2026-04-08T00:58:21.138308" elapsed="0.000195"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:21.138049" elapsed="0.000494"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.138031" elapsed="0.000536"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.139104" level="INFO">${j} = 16</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:21.138712" elapsed="0.000419"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.139898" level="INFO">${item} =     {
      "group-id": 16,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 16000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:21.139303" elapsed="0.000623"/>
</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="PASS" start="2026-04-08T00:58:21.140083" elapsed="0.000203"/>
</kw>
<var name="${iteration}">16</var>
<status status="PASS" start="2026-04-08T00:58:21.137951" elapsed="0.002373"/>
</iter>
<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="PASS" start="2026-04-08T00:58:21.140750" elapsed="0.000200"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:21.140511" elapsed="0.000510"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.140496" elapsed="0.000554"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.141590" level="INFO">${j} = 17</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:21.141216" elapsed="0.000401"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.142371" level="INFO">${item} =     {
      "group-id": 17,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 17000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:21.141775" elapsed="0.000625"/>
</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="PASS" start="2026-04-08T00:58:21.142572" elapsed="0.000184"/>
</kw>
<var name="${iteration}">17</var>
<status status="PASS" start="2026-04-08T00:58:21.140465" elapsed="0.002330"/>
</iter>
<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="PASS" start="2026-04-08T00:58:21.143242" elapsed="0.000187"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:21.142987" elapsed="0.000488"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.142972" elapsed="0.000529"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.144001" level="INFO">${j} = 18</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:21.143647" elapsed="0.000381"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.144782" level="INFO">${item} =     {
      "group-id": 18,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 18000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:21.144199" elapsed="0.000613"/>
</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="PASS" start="2026-04-08T00:58:21.144970" elapsed="0.000205"/>
</kw>
<var name="${iteration}">18</var>
<status status="PASS" start="2026-04-08T00:58:21.142940" elapsed="0.002275"/>
</iter>
<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="PASS" start="2026-04-08T00:58:21.145645" elapsed="0.000185"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:21.145391" elapsed="0.000478"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.145376" elapsed="0.000518"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.146411" level="INFO">${j} = 19</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:21.146040" elapsed="0.000398"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.147300" level="INFO">${item} =     {
      "group-id": 19,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 19000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:21.146662" elapsed="0.000667"/>
</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="PASS" start="2026-04-08T00:58:21.147488" elapsed="0.000192"/>
</kw>
<var name="${iteration}">19</var>
<status status="PASS" start="2026-04-08T00:58:21.145346" elapsed="0.002371"/>
</iter>
<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="PASS" start="2026-04-08T00:58:21.148132" elapsed="0.000201"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:21.147894" elapsed="0.000478"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.147880" elapsed="0.000516"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.148923" level="INFO">${j} = 20</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:21.148551" elapsed="0.000398"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.149716" level="INFO">${item} =     {
      "group-id": 20,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 20000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:21.149104" elapsed="0.000641"/>
</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="PASS" start="2026-04-08T00:58:21.149901" elapsed="0.000182"/>
</kw>
<var name="${iteration}">20</var>
<status status="PASS" start="2026-04-08T00:58:21.147848" elapsed="0.002272"/>
</iter>
<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="PASS" start="2026-04-08T00:58:21.150557" elapsed="0.000196"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:21.150317" elapsed="0.000475"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.150300" elapsed="0.000517"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.151364" level="INFO">${j} = 21</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:21.150983" elapsed="0.000407"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.152131" level="INFO">${item} =     {
      "group-id": 21,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 21000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:21.151546" elapsed="0.000632"/>
</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="PASS" start="2026-04-08T00:58:21.152342" elapsed="0.000184"/>
</kw>
<var name="${iteration}">21</var>
<status status="PASS" start="2026-04-08T00:58:21.150267" elapsed="0.002337"/>
</iter>
<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="PASS" start="2026-04-08T00:58:21.153029" elapsed="0.000316"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:21.152789" elapsed="0.000596"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.152773" elapsed="0.000637"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.153922" level="INFO">${j} = 22</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:21.153556" elapsed="0.000392"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.154709" level="INFO">${item} =     {
      "group-id": 22,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 22000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:21.154110" elapsed="0.000628"/>
</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="PASS" start="2026-04-08T00:58:21.154897" elapsed="0.000220"/>
</kw>
<var name="${iteration}">22</var>
<status status="PASS" start="2026-04-08T00:58:21.152742" elapsed="0.002430"/>
</iter>
<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="PASS" start="2026-04-08T00:58:21.155597" elapsed="0.000195"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:21.155354" elapsed="0.000478"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.155339" elapsed="0.000517"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.156371" level="INFO">${j} = 23</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:21.156000" elapsed="0.000398"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.157140" level="INFO">${item} =     {
      "group-id": 23,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 23000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:21.156553" elapsed="0.000634"/>
</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="PASS" start="2026-04-08T00:58:21.157346" elapsed="0.000185"/>
</kw>
<var name="${iteration}">23</var>
<status status="PASS" start="2026-04-08T00:58:21.155308" elapsed="0.002268"/>
</iter>
<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="PASS" start="2026-04-08T00:58:21.158002" elapsed="0.000207"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:21.157763" elapsed="0.000486"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.157747" elapsed="0.000526"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.158784" level="INFO">${j} = 24</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:21.158416" elapsed="0.000395"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.159587" level="INFO">${item} =     {
      "group-id": 24,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 24000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:21.158985" elapsed="0.000631"/>
</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="PASS" start="2026-04-08T00:58:21.159791" elapsed="0.000186"/>
</kw>
<var name="${iteration}">24</var>
<status status="PASS" start="2026-04-08T00:58:21.157715" elapsed="0.002300"/>
</iter>
<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="PASS" start="2026-04-08T00:58:21.160452" elapsed="0.000183"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:21.160209" elapsed="0.000466"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.160193" elapsed="0.000506"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.161232" level="INFO">${j} = 25</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:21.160856" elapsed="0.000402"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.162023" level="INFO">${item} =     {
      "group-id": 25,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 25000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:21.161414" elapsed="0.000645"/>
</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="PASS" start="2026-04-08T00:58:21.162237" elapsed="0.000186"/>
</kw>
<var name="${iteration}">25</var>
<status status="PASS" start="2026-04-08T00:58:21.160146" elapsed="0.002316"/>
</iter>
<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="PASS" start="2026-04-08T00:58:21.162889" elapsed="0.000231"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:21.162637" elapsed="0.000537"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.162622" elapsed="0.000580"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.163715" level="INFO">${j} = 26</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:21.163355" elapsed="0.000386"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.164501" level="INFO">${item} =     {
      "group-id": 26,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 26000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:21.163905" elapsed="0.000655"/>
</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="PASS" start="2026-04-08T00:58:21.164724" elapsed="0.000197"/>
</kw>
<var name="${iteration}">26</var>
<status status="PASS" start="2026-04-08T00:58:21.162592" elapsed="0.002368"/>
</iter>
<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="PASS" start="2026-04-08T00:58:21.165394" elapsed="0.000185"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:21.165138" elapsed="0.000480"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.165123" elapsed="0.000518"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.166149" level="INFO">${j} = 27</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:21.165786" elapsed="0.000405"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.166941" level="INFO">${item} =     {
      "group-id": 27,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 27000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:21.166350" elapsed="0.000634"/>
</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="PASS" start="2026-04-08T00:58:21.167148" elapsed="0.000202"/>
</kw>
<var name="${iteration}">27</var>
<status status="PASS" start="2026-04-08T00:58:21.165092" elapsed="0.002296"/>
</iter>
<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="PASS" start="2026-04-08T00:58:21.167806" elapsed="0.000193"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:21.167568" elapsed="0.000470"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.167553" elapsed="0.000510"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.168584" level="INFO">${j} = 28</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:21.168223" elapsed="0.000387"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.169377" level="INFO">${item} =     {
      "group-id": 28,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 28000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:21.168766" elapsed="0.000640"/>
</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="PASS" start="2026-04-08T00:58:21.169564" elapsed="0.000186"/>
</kw>
<var name="${iteration}">28</var>
<status status="PASS" start="2026-04-08T00:58:21.167522" elapsed="0.002265"/>
</iter>
<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="PASS" start="2026-04-08T00:58:21.170341" elapsed="0.000184"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:21.169974" elapsed="0.000591"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.169957" elapsed="0.000631"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.171130" level="INFO">${j} = 29</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:21.170731" elapsed="0.000440"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.171906" level="INFO">${item} =     {
      "group-id": 29,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 29000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:21.171333" elapsed="0.000606"/>
</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="PASS" start="2026-04-08T00:58:21.172102" elapsed="0.000203"/>
</kw>
<var name="${iteration}">29</var>
<status status="PASS" start="2026-04-08T00:58:21.169923" elapsed="0.002422"/>
</iter>
<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="PASS" start="2026-04-08T00:58:21.172760" elapsed="0.000183"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:21.172521" elapsed="0.000468"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.172507" elapsed="0.000507"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.173537" level="INFO">${j} = 30</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:21.173180" elapsed="0.000384"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.174327" level="INFO">${item} =     {
      "group-id": 30,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 30000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:21.173719" elapsed="0.000636"/>
</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="PASS" start="2026-04-08T00:58:21.174513" elapsed="0.000182"/>
</kw>
<var name="${iteration}">30</var>
<status status="PASS" start="2026-04-08T00:58:21.172475" elapsed="0.002259"/>
</iter>
<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="PASS" start="2026-04-08T00:58:21.175210" elapsed="0.000189"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:21.174912" elapsed="0.000526"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.174897" elapsed="0.000566"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.175964" level="INFO">${j} = 31</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:21.175607" elapsed="0.000420"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.176785" level="INFO">${item} =     {
      "group-id": 31,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 31000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:21.176208" elapsed="0.000605"/>
</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="PASS" start="2026-04-08T00:58:21.176970" elapsed="0.000207"/>
</kw>
<var name="${iteration}">31</var>
<status status="PASS" start="2026-04-08T00:58:21.174865" elapsed="0.002361"/>
</iter>
<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="PASS" start="2026-04-08T00:58:21.177644" elapsed="0.000184"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:21.177405" elapsed="0.000463"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.177390" elapsed="0.000503"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.178420" level="INFO">${j} = 32</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:21.178039" elapsed="0.000407"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.179265" level="INFO">${item} =     {
      "group-id": 32,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 32000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:21.178603" elapsed="0.000693"/>
</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="PASS" start="2026-04-08T00:58:21.179455" elapsed="0.000184"/>
</kw>
<var name="${iteration}">32</var>
<status status="PASS" start="2026-04-08T00:58:21.177359" elapsed="0.002318"/>
</iter>
<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="PASS" start="2026-04-08T00:58:21.180112" elapsed="0.000205"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:21.179861" elapsed="0.000495"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.179846" elapsed="0.000534"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.180877" level="INFO">${j} = 33</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:21.180525" elapsed="0.000379"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.181663" level="INFO">${item} =     {
      "group-id": 33,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 33000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:21.181060" elapsed="0.000632"/>
</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="PASS" start="2026-04-08T00:58:21.181851" elapsed="0.000183"/>
</kw>
<var name="${iteration}">33</var>
<status status="PASS" start="2026-04-08T00:58:21.179814" elapsed="0.002257"/>
</iter>
<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="PASS" start="2026-04-08T00:58:21.182522" elapsed="0.000185"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:21.182281" elapsed="0.000465"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.182266" elapsed="0.000505"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.183337" level="INFO">${j} = 34</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:21.182921" elapsed="0.000443"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.184094" level="INFO">${item} =     {
      "group-id": 34,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 34000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:21.183521" elapsed="0.000601"/>
</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="PASS" start="2026-04-08T00:58:21.184310" elapsed="0.000187"/>
</kw>
<var name="${iteration}">34</var>
<status status="PASS" start="2026-04-08T00:58:21.182234" elapsed="0.002301"/>
</iter>
<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="PASS" start="2026-04-08T00:58:21.185001" elapsed="0.000216"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:21.184713" elapsed="0.000545"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.184698" elapsed="0.000585"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.185792" level="INFO">${j} = 35</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:21.185435" elapsed="0.000384"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.186587" level="INFO">${item} =     {
      "group-id": 35,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 35000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:21.185977" elapsed="0.000638"/>
</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="PASS" start="2026-04-08T00:58:21.186771" elapsed="0.000184"/>
</kw>
<var name="${iteration}">35</var>
<status status="PASS" start="2026-04-08T00:58:21.184666" elapsed="0.002351"/>
</iter>
<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="PASS" start="2026-04-08T00:58:21.187627" elapsed="0.000190"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:21.187342" elapsed="0.000514"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.187198" elapsed="0.000683"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.188414" level="INFO">${j} = 36</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:21.188029" elapsed="0.000412"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.189209" level="INFO">${item} =     {
      "group-id": 36,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 36000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:21.188600" elapsed="0.000640"/>
</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="PASS" start="2026-04-08T00:58:21.189416" elapsed="0.000187"/>
</kw>
<var name="${iteration}">36</var>
<status status="PASS" start="2026-04-08T00:58:21.187151" elapsed="0.002490"/>
</iter>
<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="PASS" start="2026-04-08T00:58:21.190246" elapsed="0.000194"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:21.189990" elapsed="0.000489"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.189976" elapsed="0.000528"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.191023" level="INFO">${j} = 37</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:21.190649" elapsed="0.000403"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.191820" level="INFO">${item} =     {
      "group-id": 37,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 37000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:21.191224" elapsed="0.000625"/>
</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="PASS" start="2026-04-08T00:58:21.192006" elapsed="0.000202"/>
</kw>
<var name="${iteration}">37</var>
<status status="PASS" start="2026-04-08T00:58:21.189936" elapsed="0.002310"/>
</iter>
<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="PASS" start="2026-04-08T00:58:21.192675" elapsed="0.000183"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:21.192436" elapsed="0.000460"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.192422" elapsed="0.000498"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.193519" level="INFO">${j} = 38</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:21.193064" elapsed="0.000483"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.194290" level="INFO">${item} =     {
      "group-id": 38,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 38000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:21.193703" elapsed="0.000616"/>
</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="PASS" start="2026-04-08T00:58:21.194483" elapsed="0.000185"/>
</kw>
<var name="${iteration}">38</var>
<status status="PASS" start="2026-04-08T00:58:21.192389" elapsed="0.002317"/>
</iter>
<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="PASS" start="2026-04-08T00:58:21.195151" elapsed="0.000202"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:21.194883" elapsed="0.000508"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.194868" elapsed="0.000548"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.195936" level="INFO">${j} = 39</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:21.195578" elapsed="0.000385"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.196725" level="INFO">${item} =     {
      "group-id": 39,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 39000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:21.196124" elapsed="0.000630"/>
</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="PASS" start="2026-04-08T00:58:21.196912" elapsed="0.000184"/>
</kw>
<var name="${iteration}">39</var>
<status status="PASS" start="2026-04-08T00:58:21.194837" elapsed="0.002296"/>
</iter>
<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="PASS" start="2026-04-08T00:58:21.197584" elapsed="0.000186"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:21.197327" elapsed="0.000482"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.197313" elapsed="0.000521"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.198350" level="INFO">${j} = 40</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:21.197977" elapsed="0.000400"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.199144" level="INFO">${item} =     {
      "group-id": 40,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 40000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:21.198536" elapsed="0.000652"/>
</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="PASS" start="2026-04-08T00:58:21.199383" elapsed="0.000194"/>
</kw>
<var name="${iteration}">40</var>
<status status="PASS" start="2026-04-08T00:58:21.197281" elapsed="0.002335"/>
</iter>
<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="PASS" start="2026-04-08T00:58:21.200034" elapsed="0.000203"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:21.199794" elapsed="0.000482"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.199780" elapsed="0.000519"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.200814" level="INFO">${j} = 41</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:21.200444" elapsed="0.000398"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.201598" level="INFO">${item} =     {
      "group-id": 41,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 41000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:21.201000" elapsed="0.000630"/>
</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="PASS" start="2026-04-08T00:58:21.201790" elapsed="0.000186"/>
</kw>
<var name="${iteration}">41</var>
<status status="PASS" start="2026-04-08T00:58:21.199749" elapsed="0.002264"/>
</iter>
<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="PASS" start="2026-04-08T00:58:21.202455" elapsed="0.000197"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:21.202209" elapsed="0.000485"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.202193" elapsed="0.000526"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.203277" level="INFO">${j} = 42</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:21.202865" elapsed="0.000439"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.204048" level="INFO">${item} =     {
      "group-id": 42,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 42000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:21.203460" elapsed="0.000616"/>
</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="PASS" start="2026-04-08T00:58:21.204249" elapsed="0.000187"/>
</kw>
<var name="${iteration}">42</var>
<status status="PASS" start="2026-04-08T00:58:21.202146" elapsed="0.002328"/>
</iter>
<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="PASS" start="2026-04-08T00:58:21.205015" elapsed="0.000201"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:21.204768" elapsed="0.000487"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.204639" elapsed="0.000640"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.205813" level="INFO">${j} = 43</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:21.205422" elapsed="0.000418"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.206588" level="INFO">${item} =     {
      "group-id": 43,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 43000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:21.205996" elapsed="0.000620"/>
</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="PASS" start="2026-04-08T00:58:21.206780" elapsed="0.000186"/>
</kw>
<var name="${iteration}">43</var>
<status status="PASS" start="2026-04-08T00:58:21.204607" elapsed="0.002409"/>
</iter>
<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="PASS" start="2026-04-08T00:58:21.207461" elapsed="0.000192"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:21.207217" elapsed="0.000476"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.207200" elapsed="0.000524"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.208247" level="INFO">${j} = 44</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:21.207872" elapsed="0.000402"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.209035" level="INFO">${item} =     {
      "group-id": 44,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 44000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:21.208438" elapsed="0.000626"/>
</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="PASS" start="2026-04-08T00:58:21.209237" elapsed="0.000187"/>
</kw>
<var name="${iteration}">44</var>
<status status="PASS" start="2026-04-08T00:58:21.207153" elapsed="0.002309"/>
</iter>
<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="PASS" start="2026-04-08T00:58:21.209887" elapsed="0.000185"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:21.209639" elapsed="0.000471"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.209624" elapsed="0.000511"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.210696" level="INFO">${j} = 45</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:21.210297" elapsed="0.000426"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.211560" level="INFO">${item} =     {
      "group-id": 45,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 45000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:21.210925" elapsed="0.000664"/>
</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="PASS" start="2026-04-08T00:58:21.211746" elapsed="0.000193"/>
</kw>
<var name="${iteration}">45</var>
<status status="PASS" start="2026-04-08T00:58:21.209594" elapsed="0.002383"/>
</iter>
<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="PASS" start="2026-04-08T00:58:21.212413" elapsed="0.000184"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:21.212170" elapsed="0.000466"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.212140" elapsed="0.000521"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.213193" level="INFO">${j} = 46</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:21.212813" elapsed="0.000408"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.213964" level="INFO">${item} =     {
      "group-id": 46,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 46000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:21.213378" elapsed="0.000615"/>
</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="PASS" start="2026-04-08T00:58:21.214150" elapsed="0.000203"/>
</kw>
<var name="${iteration}">46</var>
<status status="PASS" start="2026-04-08T00:58:21.212109" elapsed="0.002281"/>
</iter>
<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="PASS" start="2026-04-08T00:58:21.214806" elapsed="0.000193"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:21.214567" elapsed="0.000489"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.214552" elapsed="0.000532"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.215614" level="INFO">${j} = 47</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:21.215253" elapsed="0.000387"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.216401" level="INFO">${item} =     {
      "group-id": 47,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 47000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:21.215796" elapsed="0.000634"/>
</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="PASS" start="2026-04-08T00:58:21.216587" elapsed="0.000183"/>
</kw>
<var name="${iteration}">47</var>
<status status="PASS" start="2026-04-08T00:58:21.214522" elapsed="0.002285"/>
</iter>
<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="PASS" start="2026-04-08T00:58:21.217259" elapsed="0.000187"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:21.217001" elapsed="0.000484"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.216987" elapsed="0.000522"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.218030" level="INFO">${j} = 48</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:21.217659" elapsed="0.000398"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.218809" level="INFO">${item} =     {
      "group-id": 48,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 48000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:21.218229" elapsed="0.000607"/>
</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="PASS" start="2026-04-08T00:58:21.219009" elapsed="0.000230"/>
</kw>
<var name="${iteration}">48</var>
<status status="PASS" start="2026-04-08T00:58:21.216955" elapsed="0.002324"/>
</iter>
<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="PASS" start="2026-04-08T00:58:21.219706" elapsed="0.000184"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:21.219459" elapsed="0.000473"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.219443" elapsed="0.000519"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.220484" level="INFO">${j} = 49</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:21.220108" elapsed="0.000402"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.221282" level="INFO">${item} =     {
      "group-id": 49,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 49000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:21.220672" elapsed="0.000638"/>
</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="PASS" start="2026-04-08T00:58:21.221466" elapsed="0.000183"/>
</kw>
<var name="${iteration}">49</var>
<status status="PASS" start="2026-04-08T00:58:21.219412" elapsed="0.002274"/>
</iter>
<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="PASS" start="2026-04-08T00:58:21.222896" elapsed="0.000227"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:21.222644" elapsed="0.000568"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.221847" elapsed="0.001394"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.223755" level="INFO">${j} = 50</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:21.223392" elapsed="0.000389"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.224565" level="INFO">${item} =     {
      "group-id": 50,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 50000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:21.223939" elapsed="0.000654"/>
</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="PASS" start="2026-04-08T00:58:21.224752" elapsed="0.000185"/>
</kw>
<var name="${iteration}">50</var>
<status status="PASS" start="2026-04-08T00:58:21.221817" elapsed="0.003159"/>
</iter>
<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="PASS" start="2026-04-08T00:58:21.225432" elapsed="0.000186"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:21.225190" elapsed="0.000468"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.225173" elapsed="0.000509"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.226212" level="INFO">${j} = 51</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:21.225833" elapsed="0.000407"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.226975" level="INFO">${item} =     {
      "group-id": 51,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 51000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:21.226397" elapsed="0.000606"/>
</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="PASS" start="2026-04-08T00:58:21.227221" elapsed="0.000188"/>
</kw>
<var name="${iteration}">51</var>
<status status="PASS" start="2026-04-08T00:58:21.225126" elapsed="0.002322"/>
</iter>
<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="PASS" start="2026-04-08T00:58:21.227866" elapsed="0.000184"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:21.227627" elapsed="0.000468"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.227612" elapsed="0.000510"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.228647" level="INFO">${j} = 52</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:21.228292" elapsed="0.000381"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.229466" level="INFO">${item} =     {
      "group-id": 52,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 52000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:21.228828" elapsed="0.000667"/>
</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="PASS" start="2026-04-08T00:58:21.229651" elapsed="0.000184"/>
</kw>
<var name="${iteration}">52</var>
<status status="PASS" start="2026-04-08T00:58:21.227580" elapsed="0.002293"/>
</iter>
<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="PASS" start="2026-04-08T00:58:21.230321" elapsed="0.000186"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:21.230053" elapsed="0.000493"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.230036" elapsed="0.000534"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.231083" level="INFO">${j} = 53</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:21.230714" elapsed="0.000398"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.231897" level="INFO">${item} =     {
      "group-id": 53,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 53000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:21.231308" elapsed="0.000618"/>
</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="PASS" start="2026-04-08T00:58:21.232082" elapsed="0.000212"/>
</kw>
<var name="${iteration}">53</var>
<status status="PASS" start="2026-04-08T00:58:21.230005" elapsed="0.002328"/>
</iter>
<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="PASS" start="2026-04-08T00:58:21.232751" elapsed="0.000185"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:21.232511" elapsed="0.000463"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.232496" elapsed="0.000502"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.233536" level="INFO">${j} = 54</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:21.233143" elapsed="0.000420"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.234324" level="INFO">${item} =     {
      "group-id": 54,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 54000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:21.233722" elapsed="0.000631"/>
</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="PASS" start="2026-04-08T00:58:21.234518" elapsed="0.000185"/>
</kw>
<var name="${iteration}">54</var>
<status status="PASS" start="2026-04-08T00:58:21.232465" elapsed="0.002308"/>
</iter>
<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="PASS" start="2026-04-08T00:58:21.235254" elapsed="0.000191"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:21.234955" elapsed="0.000530"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.234940" elapsed="0.000569"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.236008" level="INFO">${j} = 55</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:21.235655" elapsed="0.000387"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.236811" level="INFO">${item} =     {
      "group-id": 55,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 55000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:21.236216" elapsed="0.000625"/>
</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="PASS" start="2026-04-08T00:58:21.236999" elapsed="0.000210"/>
</kw>
<var name="${iteration}">55</var>
<status status="PASS" start="2026-04-08T00:58:21.234909" elapsed="0.002341"/>
</iter>
<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="PASS" start="2026-04-08T00:58:21.238525" elapsed="0.000228"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:21.238096" elapsed="0.000705"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.238021" elapsed="0.000805"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.239429" level="INFO">${j} = 56</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:21.238973" elapsed="0.000487"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.240239" level="INFO">${item} =     {
      "group-id": 56,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 56000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:21.239620" elapsed="0.000649"/>
</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="PASS" start="2026-04-08T00:58:21.240436" elapsed="0.000189"/>
</kw>
<var name="${iteration}">56</var>
<status status="PASS" start="2026-04-08T00:58:21.237392" elapsed="0.003271"/>
</iter>
<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="PASS" start="2026-04-08T00:58:21.287330" elapsed="0.000403"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:21.286858" elapsed="0.000932"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.240835" elapsed="0.046984"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.288428" level="INFO">${j} = 57</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:21.287974" elapsed="0.000482"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.289275" level="INFO">${item} =     {
      "group-id": 57,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 57000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:21.288623" elapsed="0.000682"/>
</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="PASS" start="2026-04-08T00:58:21.289469" elapsed="0.000190"/>
</kw>
<var name="${iteration}">57</var>
<status status="PASS" start="2026-04-08T00:58:21.240804" elapsed="0.048895"/>
</iter>
<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="PASS" start="2026-04-08T00:58:21.290187" elapsed="0.000194"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:21.289904" elapsed="0.000517"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.289888" elapsed="0.000560"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.290962" level="INFO">${j} = 58</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:21.290597" elapsed="0.000393"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.291813" level="INFO">${item} =     {
      "group-id": 58,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 58000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:21.291210" elapsed="0.000633"/>
</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="PASS" start="2026-04-08T00:58:21.292007" elapsed="0.000218"/>
</kw>
<var name="${iteration}">58</var>
<status status="PASS" start="2026-04-08T00:58:21.289852" elapsed="0.002414"/>
</iter>
<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="PASS" start="2026-04-08T00:58:21.292696" elapsed="0.000187"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:21.292451" elapsed="0.000472"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.292434" elapsed="0.000515"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.293487" level="INFO">${j} = 59</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:21.293096" elapsed="0.000418"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.294277" level="INFO">${item} =     {
      "group-id": 59,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 59000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:21.293674" elapsed="0.000737"/>
</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="PASS" start="2026-04-08T00:58:21.294577" elapsed="0.000189"/>
</kw>
<var name="${iteration}">59</var>
<status status="PASS" start="2026-04-08T00:58:21.292402" elapsed="0.002403"/>
</iter>
<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="PASS" start="2026-04-08T00:58:21.295267" elapsed="0.000194"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:21.294984" elapsed="0.000516"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.294968" elapsed="0.000557"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.296033" level="INFO">${j} = 60</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:21.295673" elapsed="0.000387"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.296849" level="INFO">${item} =     {
      "group-id": 60,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 60000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:21.296245" elapsed="0.000633"/>
</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="PASS" start="2026-04-08T00:58:21.297039" elapsed="0.000219"/>
</kw>
<var name="${iteration}">60</var>
<status status="PASS" start="2026-04-08T00:58:21.294937" elapsed="0.002360"/>
</iter>
<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="PASS" start="2026-04-08T00:58:21.297724" elapsed="0.000188"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:21.297480" elapsed="0.000471"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.297466" elapsed="0.000510"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.298523" level="INFO">${j} = 61</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:21.298124" elapsed="0.000427"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.299393" level="INFO">${item} =     {
      "group-id": 61,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 61000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:21.298716" elapsed="0.000707"/>
</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="PASS" start="2026-04-08T00:58:21.299587" elapsed="0.000186"/>
</kw>
<var name="${iteration}">61</var>
<status status="PASS" start="2026-04-08T00:58:21.297434" elapsed="0.002377"/>
</iter>
<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="PASS" start="2026-04-08T00:58:21.300246" elapsed="0.000185"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:21.299990" elapsed="0.000480"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.299976" elapsed="0.000518"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.300994" level="INFO">${j} = 62</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:21.300640" elapsed="0.000381"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.301876" level="INFO">${item} =     {
      "group-id": 62,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 62000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:21.301194" elapsed="0.000711"/>
</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="PASS" start="2026-04-08T00:58:21.302065" elapsed="0.000203"/>
</kw>
<var name="${iteration}">62</var>
<status status="PASS" start="2026-04-08T00:58:21.299944" elapsed="0.002363"/>
</iter>
<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="PASS" start="2026-04-08T00:58:21.302730" elapsed="0.000184"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:21.302487" elapsed="0.000465"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.302472" elapsed="0.000505"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.303512" level="INFO">${j} = 63</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:21.303124" elapsed="0.000416"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.304289" level="INFO">${item} =     {
      "group-id": 63,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 63000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:21.303699" elapsed="0.000618"/>
</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="PASS" start="2026-04-08T00:58:21.304475" elapsed="0.000183"/>
</kw>
<var name="${iteration}">63</var>
<status status="PASS" start="2026-04-08T00:58:21.302441" elapsed="0.002255"/>
</iter>
<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="PASS" start="2026-04-08T00:58:21.305110" elapsed="0.000200"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:21.304874" elapsed="0.000474"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.304859" elapsed="0.000513"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.305874" level="INFO">${j} = 64</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:21.305526" elapsed="0.000410"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.306688" level="INFO">${item} =     {
      "group-id": 64,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 64000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:21.306097" elapsed="0.000620"/>
</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="PASS" start="2026-04-08T00:58:21.306874" elapsed="0.000181"/>
</kw>
<var name="${iteration}">64</var>
<status status="PASS" start="2026-04-08T00:58:21.304828" elapsed="0.002264"/>
</iter>
<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="PASS" start="2026-04-08T00:58:21.307569" elapsed="0.000185"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:21.307327" elapsed="0.000466"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.307312" elapsed="0.000505"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.308337" level="INFO">${j} = 65</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:21.307964" elapsed="0.000400"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.309096" level="INFO">${item} =     {
      "group-id": 65,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 65000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:21.308524" elapsed="0.000601"/>
</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="PASS" start="2026-04-08T00:58:21.309302" elapsed="0.000183"/>
</kw>
<var name="${iteration}">65</var>
<status status="PASS" start="2026-04-08T00:58:21.307280" elapsed="0.002243"/>
</iter>
<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="PASS" start="2026-04-08T00:58:21.309941" elapsed="0.000182"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:21.309702" elapsed="0.000473"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.309687" elapsed="0.000515"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.310708" level="INFO">${j} = 66</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:21.310349" elapsed="0.000385"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.311491" level="INFO">${item} =     {
      "group-id": 66,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 66000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:21.310890" elapsed="0.000631"/>
</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="PASS" start="2026-04-08T00:58:21.311679" elapsed="0.000181"/>
</kw>
<var name="${iteration}">66</var>
<status status="PASS" start="2026-04-08T00:58:21.309656" elapsed="0.002242"/>
</iter>
<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="PASS" start="2026-04-08T00:58:21.312334" elapsed="0.000183"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:21.312078" elapsed="0.000478"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.312063" elapsed="0.000518"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.313083" level="INFO">${j} = 67</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:21.312727" elapsed="0.000382"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.313859" level="INFO">${item} =     {
      "group-id": 67,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 67000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:21.313283" elapsed="0.000604"/>
</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="PASS" start="2026-04-08T00:58:21.314046" elapsed="0.000203"/>
</kw>
<var name="${iteration}">67</var>
<status status="PASS" start="2026-04-08T00:58:21.312032" elapsed="0.002255"/>
</iter>
<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="PASS" start="2026-04-08T00:58:21.314706" elapsed="0.000183"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:21.314466" elapsed="0.000463"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.314450" elapsed="0.000505"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.315647" level="INFO">${j} = 68</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:21.315103" elapsed="0.000571"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.316477" level="INFO">${item} =     {
      "group-id": 68,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 68000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:21.315833" elapsed="0.000673"/>
</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="PASS" start="2026-04-08T00:58:21.316672" elapsed="0.000183"/>
</kw>
<var name="${iteration}">68</var>
<status status="PASS" start="2026-04-08T00:58:21.314420" elapsed="0.002472"/>
</iter>
<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="PASS" start="2026-04-08T00:58:21.317365" elapsed="0.000186"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:21.317071" elapsed="0.000519"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.317056" elapsed="0.000559"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.318264" level="INFO">${j} = 69</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:21.317762" elapsed="0.000529"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.319031" level="INFO">${item} =     {
      "group-id": 69,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 69000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:21.318449" elapsed="0.000610"/>
</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="PASS" start="2026-04-08T00:58:21.319243" elapsed="0.000188"/>
</kw>
<var name="${iteration}">69</var>
<status status="PASS" start="2026-04-08T00:58:21.317026" elapsed="0.002444"/>
</iter>
<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="PASS" start="2026-04-08T00:58:21.319886" elapsed="0.000186"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:21.319647" elapsed="0.000462"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.319633" elapsed="0.000502"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.320657" level="INFO">${j} = 70</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:21.320302" elapsed="0.000381"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.321428" level="INFO">${item} =     {
      "group-id": 70,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 70000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:21.320841" elapsed="0.000615"/>
</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="PASS" start="2026-04-08T00:58:21.321614" elapsed="0.000182"/>
</kw>
<var name="${iteration}">70</var>
<status status="PASS" start="2026-04-08T00:58:21.319602" elapsed="0.002231"/>
</iter>
<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="PASS" start="2026-04-08T00:58:21.322265" elapsed="0.000186"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:21.322012" elapsed="0.000476"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.321997" elapsed="0.000516"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.323006" level="INFO">${j} = 71</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:21.322657" elapsed="0.000375"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.323805" level="INFO">${item} =     {
      "group-id": 71,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 71000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:21.323230" elapsed="0.000603"/>
</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="PASS" start="2026-04-08T00:58:21.323991" elapsed="0.000196"/>
</kw>
<var name="${iteration}">71</var>
<status status="PASS" start="2026-04-08T00:58:21.321968" elapsed="0.002256"/>
</iter>
<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="PASS" start="2026-04-08T00:58:21.324638" elapsed="0.000181"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:21.324403" elapsed="0.000453"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.324389" elapsed="0.000491"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.325389" level="INFO">${j} = 72</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:21.325024" elapsed="0.000391"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.326138" level="INFO">${item} =     {
      "group-id": 72,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 72000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:21.325569" elapsed="0.000613"/>
</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="PASS" start="2026-04-08T00:58:21.326340" elapsed="0.000179"/>
</kw>
<var name="${iteration}">72</var>
<status status="PASS" start="2026-04-08T00:58:21.324359" elapsed="0.002197"/>
</iter>
<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="PASS" start="2026-04-08T00:58:21.326971" elapsed="0.000180"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:21.326736" elapsed="0.000486"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.326721" elapsed="0.000526"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.327739" level="INFO">${j} = 73</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:21.327392" elapsed="0.000374"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.328503" level="INFO">${item} =     {
      "group-id": 73,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 73000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:21.327921" elapsed="0.000610"/>
</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="PASS" start="2026-04-08T00:58:21.328730" elapsed="0.000185"/>
</kw>
<var name="${iteration}">73</var>
<status status="PASS" start="2026-04-08T00:58:21.326691" elapsed="0.002262"/>
</iter>
<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="PASS" start="2026-04-08T00:58:21.329387" elapsed="0.000183"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:21.329131" elapsed="0.000478"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.329116" elapsed="0.000518"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.330146" level="INFO">${j} = 74</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:21.329790" elapsed="0.000399"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.330915" level="INFO">${item} =     {
      "group-id": 74,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 74000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:21.330349" elapsed="0.000594"/>
</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="PASS" start="2026-04-08T00:58:21.331100" elapsed="0.000222"/>
</kw>
<var name="${iteration}">74</var>
<status status="PASS" start="2026-04-08T00:58:21.329085" elapsed="0.002277"/>
</iter>
<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="PASS" start="2026-04-08T00:58:21.331777" elapsed="0.000182"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:21.331541" elapsed="0.000457"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.331526" elapsed="0.000496"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.332531" level="INFO">${j} = 75</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:21.332181" elapsed="0.000377"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.333301" level="INFO">${item} =     {
      "group-id": 75,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 75000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:21.332713" elapsed="0.000617"/>
</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="PASS" start="2026-04-08T00:58:21.333487" elapsed="0.000180"/>
</kw>
<var name="${iteration}">75</var>
<status status="PASS" start="2026-04-08T00:58:21.331496" elapsed="0.002210"/>
</iter>
<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="PASS" start="2026-04-08T00:58:21.334121" elapsed="0.000330"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:21.333884" elapsed="0.000647"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.333869" elapsed="0.000689"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.335062" level="INFO">${j} = 76</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:21.334707" elapsed="0.000382"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.335863" level="INFO">${item} =     {
      "group-id": 76,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 76000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:21.335292" elapsed="0.000599"/>
</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="PASS" start="2026-04-08T00:58:21.336049" elapsed="0.000200"/>
</kw>
<var name="${iteration}">76</var>
<status status="PASS" start="2026-04-08T00:58:21.333839" elapsed="0.002448"/>
</iter>
<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="PASS" start="2026-04-08T00:58:21.336703" elapsed="0.000182"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:21.336466" elapsed="0.000457"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.336450" elapsed="0.000497"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.337464" level="INFO">${j} = 77</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:21.337091" elapsed="0.000399"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.338230" level="INFO">${item} =     {
      "group-id": 77,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 77000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:21.337646" elapsed="0.000613"/>
</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="PASS" start="2026-04-08T00:58:21.338414" elapsed="0.000182"/>
</kw>
<var name="${iteration}">77</var>
<status status="PASS" start="2026-04-08T00:58:21.336420" elapsed="0.002213"/>
</iter>
<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="PASS" start="2026-04-08T00:58:21.339048" elapsed="0.000221"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:21.338812" elapsed="0.000500"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.338797" elapsed="0.000539"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.339831" level="INFO">${j} = 78</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:21.339481" elapsed="0.000376"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.340654" level="INFO">${item} =     {
      "group-id": 78,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 78000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:21.340060" elapsed="0.000623"/>
</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="PASS" start="2026-04-08T00:58:21.340841" elapsed="0.000183"/>
</kw>
<var name="${iteration}">78</var>
<status status="PASS" start="2026-04-08T00:58:21.338766" elapsed="0.002296"/>
</iter>
<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="PASS" start="2026-04-08T00:58:21.341496" elapsed="0.000184"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:21.341260" elapsed="0.000459"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.341245" elapsed="0.000498"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.342255" level="INFO">${j} = 79</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:21.341889" elapsed="0.000393"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.343004" level="INFO">${item} =     {
      "group-id": 79,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 79000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:21.342438" elapsed="0.000595"/>
</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="PASS" start="2026-04-08T00:58:21.343220" elapsed="0.000183"/>
</kw>
<var name="${iteration}">79</var>
<status status="PASS" start="2026-04-08T00:58:21.341214" elapsed="0.002227"/>
</iter>
<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="PASS" start="2026-04-08T00:58:21.343859" elapsed="0.000182"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:21.343621" elapsed="0.000458"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.343606" elapsed="0.000498"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.344613" level="INFO">${j} = 80</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:21.344264" elapsed="0.000375"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.345381" level="INFO">${item} =     {
      "group-id": 80,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 80000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:21.344798" elapsed="0.000611"/>
</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="PASS" start="2026-04-08T00:58:21.345565" elapsed="0.000181"/>
</kw>
<var name="${iteration}">80</var>
<status status="PASS" start="2026-04-08T00:58:21.343575" elapsed="0.002208"/>
</iter>
<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="PASS" start="2026-04-08T00:58:21.346214" elapsed="0.000183"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:21.345962" elapsed="0.000473"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.345947" elapsed="0.000512"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.346949" level="INFO">${j} = 81</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:21.346602" elapsed="0.000373"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.347744" level="INFO">${item} =     {
      "group-id": 81,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 81000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:21.347129" elapsed="0.000643"/>
</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="PASS" start="2026-04-08T00:58:21.347928" elapsed="0.000180"/>
</kw>
<var name="${iteration}">81</var>
<status status="PASS" start="2026-04-08T00:58:21.345916" elapsed="0.002230"/>
</iter>
<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="PASS" start="2026-04-08T00:58:21.348582" elapsed="0.000182"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:21.348345" elapsed="0.000457"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.348329" elapsed="0.000498"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.349337" level="INFO">${j} = 82</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:21.348971" elapsed="0.000393"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.350093" level="INFO">${item} =     {
      "group-id": 82,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 82000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:21.349520" elapsed="0.000602"/>
</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="PASS" start="2026-04-08T00:58:21.350295" elapsed="0.000181"/>
</kw>
<var name="${iteration}">82</var>
<status status="PASS" start="2026-04-08T00:58:21.348298" elapsed="0.002216"/>
</iter>
<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="PASS" start="2026-04-08T00:58:21.351052" elapsed="0.000235"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:21.350692" elapsed="0.000667"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.350677" elapsed="0.000710"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.351889" level="INFO">${j} = 83</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:21.351536" elapsed="0.000380"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.352657" level="INFO">${item} =     {
      "group-id": 83,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 83000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:21.352072" elapsed="0.000614"/>
</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="PASS" start="2026-04-08T00:58:21.352857" elapsed="0.000185"/>
</kw>
<var name="${iteration}">83</var>
<status status="PASS" start="2026-04-08T00:58:21.350647" elapsed="0.002438"/>
</iter>
<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="PASS" start="2026-04-08T00:58:21.353526" elapsed="0.000183"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:21.353284" elapsed="0.000463"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.353269" elapsed="0.000503"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.354288" level="INFO">${j} = 84</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:21.353918" elapsed="0.000397"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.355079" level="INFO">${item} =     {
      "group-id": 84,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 84000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:21.354473" elapsed="0.000636"/>
</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="PASS" start="2026-04-08T00:58:21.355313" elapsed="0.000193"/>
</kw>
<var name="${iteration}">84</var>
<status status="PASS" start="2026-04-08T00:58:21.353237" elapsed="0.002309"/>
</iter>
<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="PASS" start="2026-04-08T00:58:21.355968" elapsed="0.000184"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:21.355726" elapsed="0.000481"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.355710" elapsed="0.000522"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.356733" level="INFO">${j} = 85</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:21.356379" elapsed="0.000381"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.357510" level="INFO">${item} =     {
      "group-id": 85,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 85000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:21.356917" elapsed="0.000622"/>
</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="PASS" start="2026-04-08T00:58:21.357697" elapsed="0.000183"/>
</kw>
<var name="${iteration}">85</var>
<status status="PASS" start="2026-04-08T00:58:21.355679" elapsed="0.002238"/>
</iter>
<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="PASS" start="2026-04-08T00:58:21.358356" elapsed="0.000182"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:21.358098" elapsed="0.000479"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.358083" elapsed="0.000518"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.359092" level="INFO">${j} = 86</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:21.358745" elapsed="0.000373"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.359874" level="INFO">${item} =     {
      "group-id": 86,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 86000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:21.359305" elapsed="0.000597"/>
</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="PASS" start="2026-04-08T00:58:21.360058" elapsed="0.000197"/>
</kw>
<var name="${iteration}">86</var>
<status status="PASS" start="2026-04-08T00:58:21.358052" elapsed="0.002240"/>
</iter>
<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="PASS" start="2026-04-08T00:58:21.360710" elapsed="0.000180"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:21.360472" elapsed="0.000456"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.360456" elapsed="0.000496"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.361465" level="INFO">${j} = 87</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:21.361098" elapsed="0.000393"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.362228" level="INFO">${item} =     {
      "group-id": 87,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 87000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:21.361647" elapsed="0.000609"/>
</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="PASS" start="2026-04-08T00:58:21.362412" elapsed="0.000181"/>
</kw>
<var name="${iteration}">87</var>
<status status="PASS" start="2026-04-08T00:58:21.360426" elapsed="0.002244"/>
</iter>
<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="PASS" start="2026-04-08T00:58:21.363089" elapsed="0.000223"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:21.362850" elapsed="0.000501"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.362835" elapsed="0.000541"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.363869" level="INFO">${j} = 88</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:21.363520" elapsed="0.000375"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.364641" level="INFO">${item} =     {
      "group-id": 88,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 88000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:21.364050" elapsed="0.000619"/>
</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="PASS" start="2026-04-08T00:58:21.364826" elapsed="0.000181"/>
</kw>
<var name="${iteration}">88</var>
<status status="PASS" start="2026-04-08T00:58:21.362805" elapsed="0.002240"/>
</iter>
<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="PASS" start="2026-04-08T00:58:21.365478" elapsed="0.000182"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:21.365241" elapsed="0.000457"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.365226" elapsed="0.000497"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.366235" level="INFO">${j} = 89</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:21.365867" elapsed="0.000395"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.366985" level="INFO">${item} =     {
      "group-id": 89,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 89000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:21.366419" elapsed="0.000594"/>
</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="PASS" start="2026-04-08T00:58:21.367184" elapsed="0.000196"/>
</kw>
<var name="${iteration}">89</var>
<status status="PASS" start="2026-04-08T00:58:21.365194" elapsed="0.002223"/>
</iter>
<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="PASS" start="2026-04-08T00:58:21.367962" elapsed="0.000185"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:21.367719" elapsed="0.000482"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.367584" elapsed="0.000642"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.368721" level="INFO">${j} = 90</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:21.368371" elapsed="0.000376"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.369494" level="INFO">${item} =     {
      "group-id": 90,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 90000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:21.368904" elapsed="0.000618"/>
</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="PASS" start="2026-04-08T00:58:21.369678" elapsed="0.000183"/>
</kw>
<var name="${iteration}">90</var>
<status status="PASS" start="2026-04-08T00:58:21.367554" elapsed="0.002345"/>
</iter>
<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="PASS" start="2026-04-08T00:58:21.370329" elapsed="0.000181"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:21.370076" elapsed="0.000473"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.370060" elapsed="0.000513"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.371066" level="INFO">${j} = 91</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:21.370718" elapsed="0.000374"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.371868" level="INFO">${item} =     {
      "group-id": 91,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 91000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:21.371293" elapsed="0.000603"/>
</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="PASS" start="2026-04-08T00:58:21.372055" elapsed="0.000201"/>
</kw>
<var name="${iteration}">91</var>
<status status="PASS" start="2026-04-08T00:58:21.370031" elapsed="0.002263"/>
</iter>
<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="PASS" start="2026-04-08T00:58:21.372706" elapsed="0.000181"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:21.372470" elapsed="0.000455"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.372455" elapsed="0.000495"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.373460" level="INFO">${j} = 92</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:21.373093" elapsed="0.000393"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.374221" level="INFO">${item} =     {
      "group-id": 92,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 92000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:21.373641" elapsed="0.000643"/>
</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="PASS" start="2026-04-08T00:58:21.374445" elapsed="0.000184"/>
</kw>
<var name="${iteration}">92</var>
<status status="PASS" start="2026-04-08T00:58:21.372425" elapsed="0.002242"/>
</iter>
<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="PASS" start="2026-04-08T00:58:21.375081" elapsed="0.000213"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:21.374844" elapsed="0.000489"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.374829" elapsed="0.000528"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.375852" level="INFO">${j} = 93</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:21.375502" elapsed="0.000376"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.376616" level="INFO">${item} =     {
      "group-id": 93,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 93000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:21.376032" elapsed="0.000612"/>
</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="PASS" start="2026-04-08T00:58:21.376801" elapsed="0.000182"/>
</kw>
<var name="${iteration}">93</var>
<status status="PASS" start="2026-04-08T00:58:21.374798" elapsed="0.002222"/>
</iter>
<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="PASS" start="2026-04-08T00:58:21.377451" elapsed="0.000183"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:21.377214" elapsed="0.000458"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.377199" elapsed="0.000497"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.378204" level="INFO">${j} = 94</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:21.377840" elapsed="0.000390"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.378950" level="INFO">${item} =     {
      "group-id": 94,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 94000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:21.378387" elapsed="0.000591"/>
</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="PASS" start="2026-04-08T00:58:21.379135" elapsed="0.000231"/>
</kw>
<var name="${iteration}">94</var>
<status status="PASS" start="2026-04-08T00:58:21.377166" elapsed="0.002238"/>
</iter>
<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="PASS" start="2026-04-08T00:58:21.379817" elapsed="0.000181"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:21.379581" elapsed="0.000455"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.379566" elapsed="0.000495"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.380756" level="INFO">${j} = 95</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:21.380406" elapsed="0.000375"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.381518" level="INFO">${item} =     {
      "group-id": 95,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 95000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:21.380936" elapsed="0.000611"/>
</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="PASS" start="2026-04-08T00:58:21.381702" elapsed="0.000181"/>
</kw>
<var name="${iteration}">95</var>
<status status="PASS" start="2026-04-08T00:58:21.379536" elapsed="0.002385"/>
</iter>
<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="PASS" start="2026-04-08T00:58:21.382353" elapsed="0.000183"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:21.382098" elapsed="0.000477"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.382082" elapsed="0.000518"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.383091" level="INFO">${j} = 96</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:21.382743" elapsed="0.000376"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.383875" level="INFO">${item} =     {
      "group-id": 96,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 96000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:21.383304" elapsed="0.000600"/>
</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="PASS" start="2026-04-08T00:58:21.384059" elapsed="0.000197"/>
</kw>
<var name="${iteration}">96</var>
<status status="PASS" start="2026-04-08T00:58:21.382052" elapsed="0.002243"/>
</iter>
<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="PASS" start="2026-04-08T00:58:21.384836" elapsed="0.000184"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:21.384593" elapsed="0.000466"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.384457" elapsed="0.000626"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.385595" level="INFO">${j} = 97</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:21.385243" elapsed="0.000413"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.386409" level="INFO">${item} =     {
      "group-id": 97,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 97000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:21.385818" elapsed="0.000620"/>
</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="PASS" start="2026-04-08T00:58:21.386595" elapsed="0.000183"/>
</kw>
<var name="${iteration}">97</var>
<status status="PASS" start="2026-04-08T00:58:21.384426" elapsed="0.002390"/>
</iter>
<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="PASS" start="2026-04-08T00:58:21.387275" elapsed="0.000188"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:21.386994" elapsed="0.000507"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.386979" elapsed="0.000547"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.388020" level="INFO">${j} = 98</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:21.387670" elapsed="0.000377"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.388792" level="INFO">${item} =     {
      "group-id": 98,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 98000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:21.388224" elapsed="0.000598"/>
</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="PASS" start="2026-04-08T00:58:21.388986" elapsed="0.000199"/>
</kw>
<var name="${iteration}">98</var>
<status status="PASS" start="2026-04-08T00:58:21.386949" elapsed="0.002274"/>
</iter>
<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="PASS" start="2026-04-08T00:58:21.389641" elapsed="0.000182"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:21.389403" elapsed="0.000458"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.389389" elapsed="0.000496"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.390398" level="INFO">${j} = 99</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:21.390030" elapsed="0.000394"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.391169" level="INFO">${item} =     {
      "group-id": 99,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 99000,
            "action": [
              {
                "or...</msg>
<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="PASS" start="2026-04-08T00:58:21.390581" elapsed="0.000619"/>
</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="PASS" start="2026-04-08T00:58:21.391372" elapsed="0.000184"/>
</kw>
<var name="${iteration}">99</var>
<status status="PASS" start="2026-04-08T00:58:21.389357" elapsed="0.002237"/>
</iter>
<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="PASS" start="2026-04-08T00:58:21.392075" elapsed="0.000207"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:21.391772" elapsed="0.000548"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.391758" elapsed="0.000587"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.392841" level="INFO">${j} = 100</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:21.392490" elapsed="0.000377"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.393606" level="INFO">${item} =     {
      "group-id": 100,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 100000,
            "action": [
              {
                "...</msg>
<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="PASS" start="2026-04-08T00:58:21.393021" elapsed="0.000614"/>
</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="PASS" start="2026-04-08T00:58:21.393791" elapsed="0.000181"/>
</kw>
<var name="${iteration}">100</var>
<status status="PASS" start="2026-04-08T00:58:21.391727" elapsed="0.002282"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="PASS" start="2026-04-08T00:58:21.100639" elapsed="0.293401"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.395342" level="INFO">${final_text} = {
  "flow-node-inventory:group": [
    {
      "group-id": 1,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 1000,
            "action": [
  ...</msg>
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:58:21.394218" elapsed="0.001152"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T00:58:21.395431" elapsed="0.000040"/>
</return>
<msg time="2026-04-08T00:58:21.395602" level="INFO">${data} = {
  "flow-node-inventory:group": [
    {
      "group-id": 1,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 1000,
            "action": [
  ...</msg>
<var>${data}</var>
<arg>folder=${folder}</arg>
<arg>name_prefix=post_</arg>
<arg>base_name=${base_name}</arg>
<arg>extension=${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>endline=${endline}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one 100 times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-08T00:58:21.045287" elapsed="0.350342"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:58:21.397050" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-2/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:58:21.396753" elapsed="0.000371">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-2/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-08T00:58:21.397232" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:58:21.396402" elapsed="0.000855"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:21.397572" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:21.397328" elapsed="0.000299"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.398120" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:58:21.397833" elapsed="0.000312"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:21.397651" elapsed="0.000544"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.397310" elapsed="0.000907"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.400752" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:58:21.398372" elapsed="0.002407"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-08T00:58:21.400830" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:58:21.400984" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:58:21.396029" elapsed="0.004981"/>
</kw>
<kw name="Post_To_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.402556" level="INFO">/rests/data/opendaylight-inventory:nodes/node=openflow%3A3</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:21.402301" elapsed="0.000300"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.402996" level="INFO">{
  "flow-node-inventory:group": [
    {
      "group-id": 1,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 1000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 1000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-1",
      "group-type": "group-ff"
    },
    {
      "group-id": 2,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 2000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 2000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-2",
      "group-type": "group-ff"
    },
    {
      "group-id": 3,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 3000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 3000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-3",
      "group-type": "group-ff"
    },
    {
      "group-id": 4,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 4000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 4000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-4",
      "group-type": "group-ff"
    },
    {
      "group-id": 5,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 5000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 5000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-5",
      "group-type": "group-ff"
    },
    {
      "group-id": 6,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 6000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 6000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-6",
      "group-type": "group-ff"
    },
    {
      "group-id": 7,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 7000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 7000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-7",
      "group-type": "group-ff"
    },
    {
      "group-id": 8,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 8000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 8000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-8",
      "group-type": "group-ff"
    },
    {
      "group-id": 9,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 9000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 9000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-9",
      "group-type": "group-ff"
    },
    {
      "group-id": 10,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 10000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 10000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-10",
      "group-type": "group-ff"
    },
    {
      "group-id": 11,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 11000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 11000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-11",
      "group-type": "group-ff"
    },
    {
      "group-id": 12,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 12000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 12000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-12",
      "group-type": "group-ff"
    },
    {
      "group-id": 13,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 13000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 13000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-13",
      "group-type": "group-ff"
    },
    {
      "group-id": 14,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 14000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 14000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-14",
      "group-type": "group-ff"
    },
    {
      "group-id": 15,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 15000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 15000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-15",
      "group-type": "group-ff"
    },
    {
      "group-id": 16,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 16000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 16000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-16",
      "group-type": "group-ff"
    },
    {
      "group-id": 17,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 17000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 17000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-17",
      "group-type": "group-ff"
    },
    {
      "group-id": 18,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 18000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 18000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-18",
      "group-type": "group-ff"
    },
    {
      "group-id": 19,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 19000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 19000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-19",
      "group-type": "group-ff"
    },
    {
      "group-id": 20,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 20000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 20000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-20",
      "group-type": "group-ff"
    },
    {
      "group-id": 21,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 21000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 21000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-21",
      "group-type": "group-ff"
    },
    {
      "group-id": 22,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 22000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 22000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-22",
      "group-type": "group-ff"
    },
    {
      "group-id": 23,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 23000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 23000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-23",
      "group-type": "group-ff"
    },
    {
      "group-id": 24,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 24000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 24000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-24",
      "group-type": "group-ff"
    },
    {
      "group-id": 25,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 25000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 25000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-25",
      "group-type": "group-ff"
    },
    {
      "group-id": 26,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 26000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 26000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-26",
      "group-type": "group-ff"
    },
    {
      "group-id": 27,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 27000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 27000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-27",
      "group-type": "group-ff"
    },
    {
      "group-id": 28,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 28000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 28000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-28",
      "group-type": "group-ff"
    },
    {
      "group-id": 29,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 29000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 29000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-29",
      "group-type": "group-ff"
    },
    {
      "group-id": 30,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 30000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 30000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-30",
      "group-type": "group-ff"
    },
    {
      "group-id": 31,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 31000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 31000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-31",
      "group-type": "group-ff"
    },
    {
      "group-id": 32,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 32000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 32000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-32",
      "group-type": "group-ff"
    },
    {
      "group-id": 33,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 33000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 33000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-33",
      "group-type": "group-ff"
    },
    {
      "group-id": 34,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 34000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 34000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-34",
      "group-type": "group-ff"
    },
    {
      "group-id": 35,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 35000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 35000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-35",
      "group-type": "group-ff"
    },
    {
      "group-id": 36,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 36000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 36000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-36",
      "group-type": "group-ff"
    },
    {
      "group-id": 37,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 37000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 37000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-37",
      "group-type": "group-ff"
    },
    {
      "group-id": 38,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 38000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 38000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-38",
      "group-type": "group-ff"
    },
    {
      "group-id": 39,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 39000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 39000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-39",
      "group-type": "group-ff"
    },
    {
      "group-id": 40,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 40000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 40000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-40",
      "group-type": "group-ff"
    },
    {
      "group-id": 41,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 41000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 41000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-41",
      "group-type": "group-ff"
    },
    {
      "group-id": 42,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 42000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 42000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-42",
      "group-type": "group-ff"
    },
    {
      "group-id": 43,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 43000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 43000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-43",
      "group-type": "group-ff"
    },
    {
      "group-id": 44,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 44000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 44000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-44",
      "group-type": "group-ff"
    },
    {
      "group-id": 45,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 45000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 45000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-45",
      "group-type": "group-ff"
    },
    {
      "group-id": 46,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 46000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 46000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-46",
      "group-type": "group-ff"
    },
    {
      "group-id": 47,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 47000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 47000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-47",
      "group-type": "group-ff"
    },
    {
      "group-id": 48,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 48000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 48000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-48",
      "group-type": "group-ff"
    },
    {
      "group-id": 49,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 49000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 49000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-49",
      "group-type": "group-ff"
    },
    {
      "group-id": 50,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 50000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 50000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-50",
      "group-type": "group-ff"
    },
    {
      "group-id": 51,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 51000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 51000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-51",
      "group-type": "group-ff"
    },
    {
      "group-id": 52,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 52000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 52000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-52",
      "group-type": "group-ff"
    },
    {
      "group-id": 53,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 53000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 53000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-53",
      "group-type": "group-ff"
    },
    {
      "group-id": 54,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 54000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 54000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-54",
      "group-type": "group-ff"
    },
    {
      "group-id": 55,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 55000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 55000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-55",
      "group-type": "group-ff"
    },
    {
      "group-id": 56,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 56000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 56000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-56",
      "group-type": "group-ff"
    },
    {
      "group-id": 57,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 57000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 57000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-57",
      "group-type": "group-ff"
    },
    {
      "group-id": 58,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 58000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 58000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-58",
      "group-type": "group-ff"
    },
    {
      "group-id": 59,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 59000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 59000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-59",
      "group-type": "group-ff"
    },
    {
      "group-id": 60,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 60000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 60000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-60",
      "group-type": "group-ff"
    },
    {
      "group-id": 61,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 61000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 61000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-61",
      "group-type": "group-ff"
    },
    {
      "group-id": 62,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 62000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 62000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-62",
      "group-type": "group-ff"
    },
    {
      "group-id": 63,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 63000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 63000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-63",
      "group-type": "group-ff"
    },
    {
      "group-id": 64,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 64000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 64000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-64",
      "group-type": "group-ff"
    },
    {
      "group-id": 65,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 65000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 65000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-65",
      "group-type": "group-ff"
    },
    {
      "group-id": 66,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 66000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 66000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-66",
      "group-type": "group-ff"
    },
    {
      "group-id": 67,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 67000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 67000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-67",
      "group-type": "group-ff"
    },
    {
      "group-id": 68,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 68000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 68000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-68",
      "group-type": "group-ff"
    },
    {
      "group-id": 69,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 69000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 69000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-69",
      "group-type": "group-ff"
    },
    {
      "group-id": 70,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 70000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 70000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-70",
      "group-type": "group-ff"
    },
    {
      "group-id": 71,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 71000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 71000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-71",
      "group-type": "group-ff"
    },
    {
      "group-id": 72,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 72000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 72000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-72",
      "group-type": "group-ff"
    },
    {
      "group-id": 73,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 73000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 73000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-73",
      "group-type": "group-ff"
    },
    {
      "group-id": 74,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 74000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 74000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-74",
      "group-type": "group-ff"
    },
    {
      "group-id": 75,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 75000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 75000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-75",
      "group-type": "group-ff"
    },
    {
      "group-id": 76,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 76000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 76000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-76",
      "group-type": "group-ff"
    },
    {
      "group-id": 77,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 77000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 77000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-77",
      "group-type": "group-ff"
    },
    {
      "group-id": 78,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 78000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 78000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-78",
      "group-type": "group-ff"
    },
    {
      "group-id": 79,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 79000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 79000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-79",
      "group-type": "group-ff"
    },
    {
      "group-id": 80,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 80000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 80000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-80",
      "group-type": "group-ff"
    },
    {
      "group-id": 81,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 81000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 81000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-81",
      "group-type": "group-ff"
    },
    {
      "group-id": 82,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 82000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 82000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-82",
      "group-type": "group-ff"
    },
    {
      "group-id": 83,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 83000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 83000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-83",
      "group-type": "group-ff"
    },
    {
      "group-id": 84,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 84000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 84000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-84",
      "group-type": "group-ff"
    },
    {
      "group-id": 85,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 85000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 85000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-85",
      "group-type": "group-ff"
    },
    {
      "group-id": 86,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 86000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 86000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-86",
      "group-type": "group-ff"
    },
    {
      "group-id": 87,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 87000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 87000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-87",
      "group-type": "group-ff"
    },
    {
      "group-id": 88,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 88000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 88000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-88",
      "group-type": "group-ff"
    },
    {
      "group-id": 89,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 89000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 89000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-89",
      "group-type": "group-ff"
    },
    {
      "group-id": 90,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 90000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 90000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-90",
      "group-type": "group-ff"
    },
    {
      "group-id": 91,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 91000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 91000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-91",
      "group-type": "group-ff"
    },
    {
      "group-id": 92,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 92000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 92000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-92",
      "group-type": "group-ff"
    },
    {
      "group-id": 93,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 93000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 93000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-93",
      "group-type": "group-ff"
    },
    {
      "group-id": 94,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 94000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 94000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-94",
      "group-type": "group-ff"
    },
    {
      "group-id": 95,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 95000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 95000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-95",
      "group-type": "group-ff"
    },
    {
      "group-id": 96,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 96000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 96000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-96",
      "group-type": "group-ff"
    },
    {
      "group-id": 97,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 97000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 97000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-97",
      "group-type": "group-ff"
    },
    {
      "group-id": 98,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 98000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 98000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-98",
      "group-type": "group-ff"
    },
    {
      "group-id": 99,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 99000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 99000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-99",
      "group-type": "group-ff"
    },
    {
      "group-id": 100,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 100000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 100000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-100",
      "group-type": "group-ff"
    }
  ]
}</msg>
<arg>${data}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:21.402758" elapsed="0.000692"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.403860" level="INFO">{'Content-Type': 'application/json'}</msg>
<arg>${content_type}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:21.403608" elapsed="0.000296"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.404322" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:21.404061" elapsed="0.000304"/>
</kw>
<kw name="Join_Two_Headers" owner="TemplatedRequests">
<kw name="Copy Dictionary" owner="Collections">
<msg time="2026-04-08T00:58:21.405180" level="INFO">${accumulator} = {'Content-Type': 'application/json'}</msg>
<var>${accumulator}</var>
<arg>${first}</arg>
<doc>Returns a copy of the given dictionary.</doc>
<status status="PASS" start="2026-04-08T00:58:21.404973" elapsed="0.000235"/>
</kw>
<kw name="Get Dictionary Items" owner="Collections">
<msg time="2026-04-08T00:58:21.405534" level="INFO">${items_to_add} = []</msg>
<var>${items_to_add}</var>
<arg>${second}</arg>
<doc>Returns items of the given ``dictionary`` as a list.</doc>
<status status="PASS" start="2026-04-08T00:58:21.405364" elapsed="0.000196"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${accumulator}</arg>
<arg>@{items_to_add}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:58:21.405712" elapsed="0.000189"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.406323" level="INFO">{'Content-Type': 'application/json'}</msg>
<arg>${accumulator}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:21.406058" elapsed="0.000310"/>
</kw>
<return>
<value>${accumulator}</value>
<status status="PASS" start="2026-04-08T00:58:21.406410" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:58:21.406564" level="INFO">${headers} = {'Content-Type': 'application/json'}</msg>
<var>${headers}</var>
<arg>first=${content_type}</arg>
<arg>second=${accept}</arg>
<doc>Take two dicts, join them, return result. Second argument values take precedence.</doc>
<status status="PASS" start="2026-04-08T00:58:21.404567" elapsed="0.002023"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="POST On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:58:21.440385" level="INFO">POST Request : url=http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A3 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A3 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node01s3bfo0y24i1es90l47mavglv0.node0', 'Content-Length': '42507', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body={
  "flow-node-inventory:group": [
    {
      "group-id": 1,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 1000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 1000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-1",
      "group-type": "group-ff"
    },
    {
      "group-id": 2,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 2000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 2000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-2",
      "group-type": "group-ff"
    },
    {
      "group-id": 3,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 3000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 3000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-3",
      "group-type": "group-ff"
    },
    {
      "group-id": 4,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 4000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 4000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-4",
      "group-type": "group-ff"
    },
    {
      "group-id": 5,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 5000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 5000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-5",
      "group-type": "group-ff"
    },
    {
      "group-id": 6,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 6000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 6000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-6",
      "group-type": "group-ff"
    },
    {
      "group-id": 7,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 7000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 7000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-7",
      "group-type": "group-ff"
    },
    {
      "group-id": 8,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 8000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 8000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-8",
      "group-type": "group-ff"
    },
    {
      "group-id": 9,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 9000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 9000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-9",
      "group-type": "group-ff"
    },
    {
      "group-id": 10,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 10000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 10000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-10",
      "group-type": "group-ff"
    },
    {
      "group-id": 11,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 11000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 11000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-11",
      "group-type": "group-ff"
    },
    {
      "group-id": 12,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 12000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 12000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-12",
      "group-type": "group-ff"
    },
    {
      "group-id": 13,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 13000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 13000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-13",
      "group-type": "group-ff"
    },
    {
      "group-id": 14,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 14000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 14000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-14",
      "group-type": "group-ff"
    },
    {
      "group-id": 15,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 15000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 15000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-15",
      "group-type": "group-ff"
    },
    {
      "group-id": 16,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 16000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 16000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-16",
      "group-type": "group-ff"
    },
    {
      "group-id": 17,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 17000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 17000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-17",
      "group-type": "group-ff"
    },
    {
      "group-id": 18,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 18000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 18000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-18",
      "group-type": "group-ff"
    },
    {
      "group-id": 19,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 19000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 19000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-19",
      "group-type": "group-ff"
    },
    {
      "group-id": 20,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 20000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 20000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-20",
      "group-type": "group-ff"
    },
    {
      "group-id": 21,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 21000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 21000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-21",
      "group-type": "group-ff"
    },
    {
      "group-id": 22,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 22000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 22000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-22",
      "group-type": "group-ff"
    },
    {
      "group-id": 23,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 23000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 23000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-23",
      "group-type": "group-ff"
    },
    {
      "group-id": 24,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 24000,
            "action": [
              {
                "order": 1,
                "... (set the log level to DEBUG or TRACE to see the full content) 
 </msg>
<msg time="2026-04-08T00:58:21.440757" level="INFO">POST Response : url=http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A3 
 status=201, reason=Created 
 headers={'Location': 'http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A3/flow-node-inventory:group=88', 'Content-Length': '0'} 
 body=None 
 </msg>
<msg time="2026-04-08T00:58:21.441021" level="INFO">${response} = &lt;Response [201]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:58:21.408735" elapsed="0.032349"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:21.406661" elapsed="0.034562"/>
</branch>
<branch type="ELSE">
<kw name="POST On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:21.441650" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:21.441287" elapsed="0.000517"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.406643" elapsed="0.035230"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.449397" level="INFO"/>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:21.444395" elapsed="0.005064"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:21.443807" elapsed="0.005700"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.443764" elapsed="0.005780"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.453180" level="INFO">201</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:21.449945" elapsed="0.003305"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:21.449623" elapsed="0.003677"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.449598" elapsed="0.003737"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.454123" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:21.453580" elapsed="0.000618"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:21.454652" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:21.454304" elapsed="0.000428"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.455515" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:58:21.455000" elapsed="0.000554"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:21.454767" elapsed="0.000838"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.454278" elapsed="0.001358"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.456337" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:21.455866" elapsed="0.000500"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:21.456679" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:21.456438" elapsed="0.000299"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.457255" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:58:21.456929" elapsed="0.000355"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:21.456763" elapsed="0.000558"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.456420" elapsed="0.000923"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:58:21.457501" elapsed="0.000353"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:58:21.458333" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:21.458022" elapsed="0.000337"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:58:21.458518" elapsed="0.002281"/>
</kw>
<arg>${response}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:58:21.442716" elapsed="0.018147"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:58:21.461043" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:58:21.460936" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.460917" elapsed="0.000196"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:58:21.463645" level="INFO">${text_normalized} = </msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:58:21.461290" elapsed="0.002382"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:58:21.463721" elapsed="0.000031"/>
</return>
<msg time="2026-04-08T00:58:21.463879" level="INFO">${response_text} = </msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>data=${data}</arg>
<arg>content_type=${content_type}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>POST data to given URI, check status code and return response text.
${content_type} and ${accept} are mandatory Python objects with headers to use.
If ${normalize_json}, normalize text before returning.</doc>
<status status="PASS" start="2026-04-08T00:58:21.401347" elapsed="0.062559"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:58:21.464015" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:58:21.464188" level="INFO">${response_text} = </msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>extension=json</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>content_type=${HEADERS_YANG_JSON}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>endline=${\n}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve URI and data from folder, call Post_To_Uri, return response text.</doc>
<status status="PASS" start="2026-04-08T00:58:20.958268" elapsed="0.505946"/>
</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=response</arg>
<arg>mapping=${mapping}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:21.464578" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:21.464328" elapsed="0.000319"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.464305" elapsed="0.000366"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:58:21.464704" elapsed="0.000026"/>
</return>
<arg>folder=${VAR_DIR}/add-group-2</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<arg>iterations=${iter}</arg>
<doc>Add arguments sensible for JSON data, return Post_Templated response text.
Optionally, verification against response.json (no iteration) is called.
Only subset of JSON data is verified and returned if JMES path is specified in
file ${folder}/jmespath.expr.
Response status code must be one of values from ${explicit_status_codes} if specified or one of set
created from all positive HTTP status codes together with ${additional_allowed_status_codes}.</doc>
<status status="PASS" start="2026-04-08T00:58:20.955666" elapsed="0.509162"/>
</kw>
<kw name="Post_As_Json_Templated" owner="TemplatedRequests">
<kw name="Post_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.508016" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow.vanadium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:58:21.507615" elapsed="0.000438"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:58:21.508882" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-flow.vanadium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:58:21.508648" elapsed="0.000308">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-flow.vanadium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-08T00:58:21.509055" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:58:21.508302" elapsed="0.000780"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.509656" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:58:21.509270" elapsed="0.000413"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T00:58:21.509989" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-flow/location.uri"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-flow/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-08T00:58:21.510146" level="INFO">${template} = /rests/data/opendaylight-inventory:nodes/node=$NODE/flow-node-inventory:table=0
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T00:58:21.509853" elapsed="0.000335"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.510592" level="INFO">/rests/data/opendaylight-inventory:nodes/node=$NODE/flow-node-inventory:table=0
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:21.510347" elapsed="0.000289"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.511658" level="INFO">mapping: {'NODE': 'openflow:3'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:21.511357" elapsed="0.000347"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.512173" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-08T00:58:21.511868" elapsed="0.000335"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.513201" level="INFO">${value} = openflow:3</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-08T00:58:21.512583" elapsed="0.000828"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-08T00:58:21.514625" level="INFO">${encoded} = openflow%3A3</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-08T00:58:21.514111" elapsed="0.000557"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-08T00:58:21.514785" elapsed="0.000033"/>
</return>
<msg time="2026-04-08T00:58:21.515011" level="INFO">${encoded_value} = openflow%3A3</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-08T00:58:21.513621" elapsed="0.001416"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:58:21.515270" elapsed="0.000544"/>
</kw>
<var name="${key}">NODE</var>
<var name="${value}">openflow:3</var>
<status status="PASS" start="2026-04-08T00:58:21.512432" elapsed="0.003426"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-08T00:58:21.512256" elapsed="0.003639"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-08T00:58:21.515940" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:58:21.516098" level="INFO">${mapping_to_use} = {'NODE': 'openflow%3A3'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-08T00:58:21.510996" elapsed="0.005134"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:21.510705" elapsed="0.005482"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:21.516380" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:21.516214" elapsed="0.000234"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.510686" elapsed="0.005784"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.517217" level="INFO">${final_text} = /rests/data/opendaylight-inventory:nodes/node=openflow%3A3/flow-node-inventory:table=0</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:21.516617" elapsed="0.000637"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T00:58:21.517304" 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-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow/${file_name}.</doc>
<status status="PASS" start="2026-04-08T00:58:21.506938" elapsed="0.010491"/>
</kw>
<msg time="2026-04-08T00:58:21.517483" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:58:21.494071" elapsed="0.023461"/>
</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-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:21.530123" 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-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:21.542417" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:21.554572" elapsed="0.000029"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:21.554780" elapsed="0.000023"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:21.554962" elapsed="0.000021"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:21.555354" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:21.555205" elapsed="0.000206"/>
</branch>
<status status="NOT RUN" start="2026-04-08T00:58:21.555188" elapsed="0.000246"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:21.555598" elapsed="0.000021"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:21.555774" elapsed="0.000025"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:21.555991" elapsed="0.000022"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-08T00:58:21.555141" elapsed="0.000905"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-08T00:58:21.555037" elapsed="0.001036"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:21.556239" elapsed="0.000021"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-08T00:58:21.556317" elapsed="0.000015"/>
</return>
<msg time="2026-04-08T00:58:21.556436" level="INFO">${uri} = /rests/data/opendaylight-inventory:nodes/node=openflow%3A3/flow-node-inventory:table=0</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one 100 times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-08T00:58:21.489776" elapsed="0.066686"/>
</kw>
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:58:21.567305" elapsed="0.000375"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.580843" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow.vanadium/post_data.prolog.json</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:58:21.580470" elapsed="0.000402"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:58:21.581632" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-flow.vanadium/post_data.prolog.json' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:58:21.581420" elapsed="0.000277">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-flow.vanadium/post_data.prolog.json' does not exist.</status>
</kw>
<msg time="2026-04-08T00:58:21.581790" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:58:21.581036" elapsed="0.000778"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.582394" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow/post_data.prolog.json</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:58:21.581980" elapsed="0.000441"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T00:58:21.582728" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-flow/post_data.prolog.json"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-flow/post_data.prolog.json&lt;/a&gt;'.</msg>
<msg time="2026-04-08T00:58:21.582857" level="INFO">${template} = {
  "flow": [
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T00:58:21.582586" elapsed="0.000296"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.583307" level="INFO">{
  "flow": [
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:21.583037" elapsed="0.000315"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="NOT RUN" start="2026-04-08T00:58:21.583756" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:21.583423" elapsed="0.000391"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.584305" level="INFO">${mapping_to_use} = {'NODE': 'openflow:3'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:58:21.583985" elapsed="0.000347"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:21.583838" elapsed="0.000530"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.583403" elapsed="0.000987"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.584962" level="INFO">${final_text} = {
  "flow": [</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:21.584537" elapsed="0.000452"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T00:58:21.585037" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:58:21.585211" level="INFO">${prolog} = {
  "flow": [</msg>
<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-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow/${file_name}.</doc>
<status status="PASS" start="2026-04-08T00:58:21.579832" elapsed="0.005410"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.598750" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow.vanadium/post_data.epilog.json</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:58:21.598363" elapsed="0.000415"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:58:21.599522" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-flow.vanadium/post_data.epilog.json' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:58:21.599297" elapsed="0.000339">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-flow.vanadium/post_data.epilog.json' does not exist.</status>
</kw>
<msg time="2026-04-08T00:58:21.599737" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:58:21.598946" elapsed="0.000815"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.600327" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow/post_data.epilog.json</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:58:21.599925" elapsed="0.000429"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T00:58:21.600664" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-flow/post_data.epilog.json"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-flow/post_data.epilog.json&lt;/a&gt;'.</msg>
<msg time="2026-04-08T00:58:21.600796" level="INFO">${template} =   ]
}
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T00:58:21.600528" elapsed="0.000293"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.601253" level="INFO">  ]
}
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:21.600992" elapsed="0.000305"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="NOT RUN" start="2026-04-08T00:58:21.601665" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:21.601366" elapsed="0.000358"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.602207" level="INFO">${mapping_to_use} = {'NODE': 'openflow:3'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:58:21.601897" elapsed="0.000337"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:21.601749" elapsed="0.000525"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.601347" elapsed="0.000949"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.602889" level="INFO">${final_text} =   ]
}</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:21.602444" elapsed="0.000472"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T00:58:21.602965" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:58:21.603116" level="INFO">${epilog} =   ]
}</msg>
<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-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow/${file_name}.</doc>
<status status="PASS" start="2026-04-08T00:58:21.597728" elapsed="0.005413"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.616755" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow.vanadium/data.item.json</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:58:21.616376" elapsed="0.000410"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:58:21.617506" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-flow.vanadium/data.item.json' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:58:21.617299" elapsed="0.000271">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-flow.vanadium/data.item.json' does not exist.</status>
</kw>
<msg time="2026-04-08T00:58:21.617664" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:58:21.616948" elapsed="0.000740"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.618270" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow/data.item.json</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:58:21.617862" elapsed="0.000436"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T00:58:21.618613" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-flow/data.item.json"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-flow/data.item.json&lt;/a&gt;'.</msg>
<msg time="2026-04-08T00:58:21.618776" level="INFO">${template} =         {
          "id": "${i}",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048...</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T00:58:21.618473" elapsed="0.000338"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.619235" level="INFO">        {
          "id": "${i}",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.${i}/32"
          },
          "flow-name": "Flow-${i}",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": ${i}
                      }
                    }
                  ]
                }
              }
            ]
          }
        }
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:21.618973" elapsed="0.000313"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="NOT RUN" start="2026-04-08T00:58:21.619665" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:21.619355" elapsed="0.000368"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.620227" level="INFO">${mapping_to_use} = {'NODE': 'openflow:3'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:58:21.619904" elapsed="0.000350"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:21.619748" elapsed="0.000543"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.619336" elapsed="0.000977"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.621080" level="INFO">${final_text} =         {
          "id": "${i}",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048...</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:21.620461" elapsed="0.000649"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T00:58:21.621177" elapsed="0.000032"/>
</return>
<msg time="2026-04-08T00:58:21.621347" level="INFO">${item_template} =         {
          "id": "${i}",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048...</msg>
<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-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow/${file_name}.</doc>
<status status="PASS" start="2026-04-08T00:58:21.615815" elapsed="0.005559"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.621786" level="INFO">${items} = []</msg>
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:58:21.621540" elapsed="0.000272"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.622367" level="INFO">${separator} = ,
</msg>
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:58:21.621983" elapsed="0.000411"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:21.623028" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:21.622778" elapsed="0.000307"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.622764" elapsed="0.000346"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.623709" level="INFO">${j} = 1</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:21.623276" elapsed="0.000463"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.625576" level="INFO">${item} =         {
          "id": "1",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
  ...</msg>
<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="PASS" start="2026-04-08T00:58:21.623910" elapsed="0.001696"/>
</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="PASS" start="2026-04-08T00:58:21.625771" elapsed="0.000198"/>
</kw>
<var name="${iteration}">1</var>
<status status="PASS" start="2026-04-08T00:58:21.622731" elapsed="0.003278"/>
</iter>
<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="PASS" start="2026-04-08T00:58:21.626463" elapsed="0.000190"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:21.626213" elapsed="0.000558"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.626197" elapsed="0.000603"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.627339" level="INFO">${j} = 2</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:21.626949" elapsed="0.000418"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.628197" level="INFO">${item} =         {
          "id": "2",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
  ...</msg>
<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="PASS" start="2026-04-08T00:58:21.627527" elapsed="0.000701"/>
</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="PASS" start="2026-04-08T00:58:21.628390" elapsed="0.000190"/>
</kw>
<var name="${iteration}">2</var>
<status status="PASS" start="2026-04-08T00:58:21.626148" elapsed="0.002504"/>
</iter>
<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="PASS" start="2026-04-08T00:58:21.629083" elapsed="0.000208"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:21.628838" elapsed="0.000493"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.628822" elapsed="0.000534"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.629866" level="INFO">${j} = 3</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:21.629503" elapsed="0.000390"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.630695" level="INFO">${item} =         {
          "id": "3",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
  ...</msg>
<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="PASS" start="2026-04-08T00:58:21.630053" elapsed="0.000671"/>
</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="PASS" start="2026-04-08T00:58:21.630885" elapsed="0.000191"/>
</kw>
<var name="${iteration}">3</var>
<status status="PASS" start="2026-04-08T00:58:21.628790" elapsed="0.002328"/>
</iter>
<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="PASS" start="2026-04-08T00:58:21.631564" elapsed="0.000219"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:21.631320" elapsed="0.000503"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.631304" elapsed="0.000544"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.632502" level="INFO">${j} = 4</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:21.631994" elapsed="0.000546"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.633627" level="INFO">${item} =         {
          "id": "4",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
  ...</msg>
<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="PASS" start="2026-04-08T00:58:21.632760" elapsed="0.000907"/>
</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="PASS" start="2026-04-08T00:58:21.633890" elapsed="0.000261"/>
</kw>
<var name="${iteration}">4</var>
<status status="PASS" start="2026-04-08T00:58:21.631271" elapsed="0.002957"/>
</iter>
<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="PASS" start="2026-04-08T00:58:21.634817" elapsed="0.000259"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:21.634481" elapsed="0.000649"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.634461" elapsed="0.000728"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.635987" level="INFO">${j} = 5</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:21.635398" elapsed="0.000628"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.636831" level="INFO">${item} =         {
          "id": "5",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
  ...</msg>
<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="PASS" start="2026-04-08T00:58:21.636224" elapsed="0.000635"/>
</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="PASS" start="2026-04-08T00:58:21.637020" elapsed="0.000204"/>
</kw>
<var name="${iteration}">5</var>
<status status="PASS" start="2026-04-08T00:58:21.634416" elapsed="0.002847"/>
</iter>
<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="PASS" start="2026-04-08T00:58:21.637676" elapsed="0.000181"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:21.637440" elapsed="0.000455"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.637426" elapsed="0.000493"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.638430" level="INFO">${j} = 6</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:21.638060" elapsed="0.000396"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.639228" level="INFO">${item} =         {
          "id": "6",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
  ...</msg>
<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="PASS" start="2026-04-08T00:58:21.638612" elapsed="0.000644"/>
</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="PASS" start="2026-04-08T00:58:21.639414" elapsed="0.000206"/>
</kw>
<var name="${iteration}">6</var>
<status status="PASS" start="2026-04-08T00:58:21.637395" elapsed="0.002265"/>
</iter>
<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="PASS" start="2026-04-08T00:58:21.640076" elapsed="0.000199"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:21.639839" elapsed="0.000476"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.639824" elapsed="0.000515"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.640830" level="INFO">${j} = 7</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:21.640482" elapsed="0.000374"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.641618" level="INFO">${item} =         {
          "id": "7",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
  ...</msg>
<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="PASS" start="2026-04-08T00:58:21.641011" elapsed="0.000676"/>
</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="PASS" start="2026-04-08T00:58:21.641848" elapsed="0.000183"/>
</kw>
<var name="${iteration}">7</var>
<status status="PASS" start="2026-04-08T00:58:21.639794" elapsed="0.002274"/>
</iter>
<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="PASS" start="2026-04-08T00:58:21.642502" elapsed="0.000182"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:21.642264" elapsed="0.000459"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.642249" elapsed="0.000498"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.643259" level="INFO">${j} = 8</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:21.642893" elapsed="0.000393"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.644204" level="INFO">${item} =         {
          "id": "8",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
  ...</msg>
<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="PASS" start="2026-04-08T00:58:21.643446" elapsed="0.000787"/>
</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="PASS" start="2026-04-08T00:58:21.644391" elapsed="0.000181"/>
</kw>
<var name="${iteration}">8</var>
<status status="PASS" start="2026-04-08T00:58:21.642217" elapsed="0.002392"/>
</iter>
<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="PASS" start="2026-04-08T00:58:21.645031" elapsed="0.000198"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:21.644787" elapsed="0.000481"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.644772" elapsed="0.000520"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.645786" level="INFO">${j} = 9</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:21.645436" elapsed="0.000376"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.646583" level="INFO">${item} =         {
          "id": "9",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
  ...</msg>
<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="PASS" start="2026-04-08T00:58:21.645970" elapsed="0.000641"/>
</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="PASS" start="2026-04-08T00:58:21.646769" elapsed="0.000226"/>
</kw>
<var name="${iteration}">9</var>
<status status="PASS" start="2026-04-08T00:58:21.644742" elapsed="0.002291"/>
</iter>
<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="PASS" start="2026-04-08T00:58:21.647468" elapsed="0.000208"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:21.647231" elapsed="0.000488"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.647216" elapsed="0.000527"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.648252" level="INFO">${j} = 10</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:21.647887" elapsed="0.000392"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.649032" level="INFO">${item} =         {
          "id": "10",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:21.648435" elapsed="0.000625"/>
</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="PASS" start="2026-04-08T00:58:21.649231" elapsed="0.000184"/>
</kw>
<var name="${iteration}">10</var>
<status status="PASS" start="2026-04-08T00:58:21.647184" elapsed="0.002270"/>
</iter>
<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="PASS" start="2026-04-08T00:58:21.649874" elapsed="0.000182"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:21.649631" elapsed="0.000468"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.649616" elapsed="0.000507"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.650637" level="INFO">${j} = 11</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:21.650282" elapsed="0.000382"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.651435" level="INFO">${item} =         {
          "id": "11",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:21.650819" elapsed="0.000645"/>
</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="PASS" start="2026-04-08T00:58:21.651631" elapsed="0.000184"/>
</kw>
<var name="${iteration}">11</var>
<status status="PASS" start="2026-04-08T00:58:21.649586" elapsed="0.002267"/>
</iter>
<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="PASS" start="2026-04-08T00:58:21.652284" elapsed="0.000183"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:21.652031" elapsed="0.000474"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.652016" elapsed="0.000513"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.653027" level="INFO">${j} = 12</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:21.652677" elapsed="0.000416"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.653873" level="INFO">${item} =         {
          "id": "12",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:21.653271" elapsed="0.000630"/>
</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="PASS" start="2026-04-08T00:58:21.654086" elapsed="0.000203"/>
</kw>
<var name="${iteration}">12</var>
<status status="PASS" start="2026-04-08T00:58:21.651985" elapsed="0.002341"/>
</iter>
<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="PASS" start="2026-04-08T00:58:21.654743" elapsed="0.000264"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:21.654503" elapsed="0.000543"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.654488" elapsed="0.000583"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.655586" level="INFO">${j} = 13</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:21.655233" elapsed="0.000379"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.656416" level="INFO">${item} =         {
          "id": "13",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:21.655798" elapsed="0.000647"/>
</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="PASS" start="2026-04-08T00:58:21.656602" elapsed="0.000182"/>
</kw>
<var name="${iteration}">13</var>
<status status="PASS" start="2026-04-08T00:58:21.654458" elapsed="0.002363"/>
</iter>
<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="PASS" start="2026-04-08T00:58:21.657252" elapsed="0.000184"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:21.657000" elapsed="0.000475"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.656985" elapsed="0.000514"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.657992" level="INFO">${j} = 14</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:21.657643" elapsed="0.000375"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.658799" level="INFO">${item} =         {
          "id": "14",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:21.658194" elapsed="0.000635"/>
</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="PASS" start="2026-04-08T00:58:21.658987" elapsed="0.000203"/>
</kw>
<var name="${iteration}">14</var>
<status status="PASS" start="2026-04-08T00:58:21.656954" elapsed="0.002275"/>
</iter>
<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="PASS" start="2026-04-08T00:58:21.659654" elapsed="0.000184"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:21.659407" elapsed="0.000468"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.659392" elapsed="0.000508"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.660536" level="INFO">${j} = 15</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:21.660044" elapsed="0.000519"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.661341" level="INFO">${item} =         {
          "id": "15",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:21.660723" elapsed="0.000647"/>
</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="PASS" start="2026-04-08T00:58:21.661529" elapsed="0.000182"/>
</kw>
<var name="${iteration}">15</var>
<status status="PASS" start="2026-04-08T00:58:21.659362" elapsed="0.002386"/>
</iter>
<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="PASS" start="2026-04-08T00:58:21.662178" elapsed="0.000186"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:21.661926" elapsed="0.000477"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.661911" elapsed="0.000516"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.662923" level="INFO">${j} = 16</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:21.662573" elapsed="0.000376"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.663758" level="INFO">${item} =         {
          "id": "16",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:21.663104" elapsed="0.000684"/>
</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="PASS" start="2026-04-08T00:58:21.663945" elapsed="0.000183"/>
</kw>
<var name="${iteration}">16</var>
<status status="PASS" start="2026-04-08T00:58:21.661880" elapsed="0.002300"/>
</iter>
<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="PASS" start="2026-04-08T00:58:21.664639" elapsed="0.000187"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:21.664362" elapsed="0.000503"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.664348" elapsed="0.000541"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.665415" level="INFO">${j} = 17</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:21.665035" elapsed="0.000406"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.666211" level="INFO">${item} =         {
          "id": "17",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:21.665598" elapsed="0.000643"/>
</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="PASS" start="2026-04-08T00:58:21.666399" elapsed="0.000184"/>
</kw>
<var name="${iteration}">17</var>
<status status="PASS" start="2026-04-08T00:58:21.664316" elapsed="0.002304"/>
</iter>
<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="PASS" start="2026-04-08T00:58:21.667034" elapsed="0.000199"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:21.666796" elapsed="0.000475"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.666781" elapsed="0.000515"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.667803" level="INFO">${j} = 18</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:21.667441" elapsed="0.000388"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.668601" level="INFO">${item} =         {
          "id": "18",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:21.667985" elapsed="0.000644"/>
</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="PASS" start="2026-04-08T00:58:21.668791" elapsed="0.000180"/>
</kw>
<var name="${iteration}">18</var>
<status status="PASS" start="2026-04-08T00:58:21.666751" elapsed="0.002258"/>
</iter>
<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="PASS" start="2026-04-08T00:58:21.669449" elapsed="0.000181"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:21.669211" elapsed="0.000456"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.669196" elapsed="0.000496"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.670200" level="INFO">${j} = 19</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:21.669836" elapsed="0.000391"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.670995" level="INFO">${item} =         {
          "id": "19",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:21.670383" elapsed="0.000640"/>
</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="PASS" start="2026-04-08T00:58:21.671195" elapsed="0.000181"/>
</kw>
<var name="${iteration}">19</var>
<status status="PASS" start="2026-04-08T00:58:21.669149" elapsed="0.002264"/>
</iter>
<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="PASS" start="2026-04-08T00:58:21.671867" elapsed="0.000182"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:21.671591" elapsed="0.000496"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.671576" elapsed="0.000535"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.672616" level="INFO">${j} = 20</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:21.672270" elapsed="0.000371"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.673415" level="INFO">${item} =         {
          "id": "20",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:21.672797" elapsed="0.000646"/>
</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="PASS" start="2026-04-08T00:58:21.673598" elapsed="0.000179"/>
</kw>
<var name="${iteration}">20</var>
<status status="PASS" start="2026-04-08T00:58:21.671546" elapsed="0.002268"/>
</iter>
<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="PASS" start="2026-04-08T00:58:21.674254" elapsed="0.000183"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:21.673997" elapsed="0.000478"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.673982" elapsed="0.000516"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.674994" level="INFO">${j} = 21</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:21.674647" elapsed="0.000374"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.675917" level="INFO">${item} =         {
          "id": "21",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:21.675196" elapsed="0.000750"/>
</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="PASS" start="2026-04-08T00:58:21.676141" elapsed="0.000201"/>
</kw>
<var name="${iteration}">21</var>
<status status="PASS" start="2026-04-08T00:58:21.673951" elapsed="0.002429"/>
</iter>
<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="PASS" start="2026-04-08T00:58:21.676795" elapsed="0.000303"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:21.676557" elapsed="0.000580"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.676542" elapsed="0.000635"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.677678" level="INFO">${j} = 22</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:21.677326" elapsed="0.000379"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.678489" level="INFO">${item} =         {
          "id": "22",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:21.677862" elapsed="0.000655"/>
</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="PASS" start="2026-04-08T00:58:21.678676" elapsed="0.000182"/>
</kw>
<var name="${iteration}">22</var>
<status status="PASS" start="2026-04-08T00:58:21.676511" elapsed="0.002385"/>
</iter>
<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="PASS" start="2026-04-08T00:58:21.679329" elapsed="0.000183"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:21.679074" elapsed="0.000478"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.679059" elapsed="0.000517"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.680100" level="INFO">${j} = 23</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:21.679747" elapsed="0.000380"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.680895" level="INFO">${item} =         {
          "id": "23",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:21.680299" elapsed="0.000625"/>
</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="PASS" start="2026-04-08T00:58:21.681083" elapsed="0.000200"/>
</kw>
<var name="${iteration}">23</var>
<status status="PASS" start="2026-04-08T00:58:21.679028" elapsed="0.002294"/>
</iter>
<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="PASS" start="2026-04-08T00:58:21.681731" elapsed="0.000181"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:21.681497" elapsed="0.000453"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.681482" elapsed="0.000492"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.682482" level="INFO">${j} = 24</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:21.682116" elapsed="0.000392"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.683273" level="INFO">${item} =         {
          "id": "24",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:21.682664" elapsed="0.000637"/>
</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="PASS" start="2026-04-08T00:58:21.683457" elapsed="0.000182"/>
</kw>
<var name="${iteration}">24</var>
<status status="PASS" start="2026-04-08T00:58:21.681452" elapsed="0.002237"/>
</iter>
<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="PASS" start="2026-04-08T00:58:21.684108" elapsed="0.000198"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:21.683866" elapsed="0.000479"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.683850" elapsed="0.000518"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.684857" level="INFO">${j} = 25</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:21.684511" elapsed="0.000372"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.685651" level="INFO">${item} =         {
          "id": "25",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:21.685037" elapsed="0.000642"/>
</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="PASS" start="2026-04-08T00:58:21.685833" elapsed="0.000180"/>
</kw>
<var name="${iteration}">25</var>
<status status="PASS" start="2026-04-08T00:58:21.683820" elapsed="0.002230"/>
</iter>
<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="PASS" start="2026-04-08T00:58:21.686481" elapsed="0.000180"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:21.686245" elapsed="0.000454"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.686229" elapsed="0.000494"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.687234" level="INFO">${j} = 26</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:21.686870" elapsed="0.000391"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.688092" level="INFO">${item} =         {
          "id": "26",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:21.687456" elapsed="0.000667"/>
</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="PASS" start="2026-04-08T00:58:21.688301" elapsed="0.000183"/>
</kw>
<var name="${iteration}">26</var>
<status status="PASS" start="2026-04-08T00:58:21.686197" elapsed="0.002325"/>
</iter>
<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="PASS" start="2026-04-08T00:58:21.688937" elapsed="0.000181"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:21.688699" elapsed="0.000495"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.688684" elapsed="0.000542"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.689736" level="INFO">${j} = 27</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:21.689379" elapsed="0.000384"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.690546" level="INFO">${item} =         {
          "id": "27",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:21.689920" elapsed="0.000654"/>
</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="PASS" start="2026-04-08T00:58:21.690733" elapsed="0.000182"/>
</kw>
<var name="${iteration}">27</var>
<status status="PASS" start="2026-04-08T00:58:21.688653" elapsed="0.002301"/>
</iter>
<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="PASS" start="2026-04-08T00:58:21.691397" elapsed="0.000184"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:21.691131" elapsed="0.000489"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.691117" elapsed="0.000526"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.692181" level="INFO">${j} = 28</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:21.691815" elapsed="0.000401"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.692991" level="INFO">${item} =         {
          "id": "28",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:21.692376" elapsed="0.000643"/>
</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="PASS" start="2026-04-08T00:58:21.693192" elapsed="0.000194"/>
</kw>
<var name="${iteration}">28</var>
<status status="PASS" start="2026-04-08T00:58:21.691086" elapsed="0.002338"/>
</iter>
<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="PASS" start="2026-04-08T00:58:21.693970" elapsed="0.000209"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:21.693610" elapsed="0.000610"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.693595" elapsed="0.000659"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.694759" level="INFO">${j} = 29</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:21.694404" elapsed="0.000381"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.695573" level="INFO">${item} =         {
          "id": "29",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:21.694942" elapsed="0.000660"/>
</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="PASS" start="2026-04-08T00:58:21.695791" elapsed="0.000188"/>
</kw>
<var name="${iteration}">29</var>
<status status="PASS" start="2026-04-08T00:58:21.693563" elapsed="0.002456"/>
</iter>
<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="PASS" start="2026-04-08T00:58:21.696471" elapsed="0.000185"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:21.696216" elapsed="0.000478"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.696200" elapsed="0.000520"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.697241" level="INFO">${j} = 30</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:21.696867" elapsed="0.000401"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.698043" level="INFO">${item} =         {
          "id": "30",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:21.697442" elapsed="0.000630"/>
</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="PASS" start="2026-04-08T00:58:21.698247" elapsed="0.000194"/>
</kw>
<var name="${iteration}">30</var>
<status status="PASS" start="2026-04-08T00:58:21.696152" elapsed="0.002329"/>
</iter>
<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="PASS" start="2026-04-08T00:58:21.698899" elapsed="0.000183"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:21.698661" elapsed="0.000508"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.698646" elapsed="0.000553"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.699741" level="INFO">${j} = 31</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:21.699359" elapsed="0.000410"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.700577" level="INFO">${item} =         {
          "id": "31",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:21.699926" elapsed="0.000678"/>
</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="PASS" start="2026-04-08T00:58:21.700763" elapsed="0.000186"/>
</kw>
<var name="${iteration}">31</var>
<status status="PASS" start="2026-04-08T00:58:21.698615" elapsed="0.002373"/>
</iter>
<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="PASS" start="2026-04-08T00:58:21.701443" elapsed="0.000189"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:21.701189" elapsed="0.000481"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.701150" elapsed="0.000545"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.702211" level="INFO">${j} = 32</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:21.701839" elapsed="0.000399"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.703007" level="INFO">${item} =         {
          "id": "32",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:21.702403" elapsed="0.000631"/>
</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="PASS" start="2026-04-08T00:58:21.703208" elapsed="0.000187"/>
</kw>
<var name="${iteration}">32</var>
<status status="PASS" start="2026-04-08T00:58:21.701120" elapsed="0.002320"/>
</iter>
<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="PASS" start="2026-04-08T00:58:21.703893" elapsed="0.000185"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:21.703626" elapsed="0.000490"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.703612" elapsed="0.000530"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.704665" level="INFO">${j} = 33</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:21.704303" elapsed="0.000388"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.705469" level="INFO">${item} =         {
          "id": "33",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:21.704846" elapsed="0.000657"/>
</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="PASS" start="2026-04-08T00:58:21.705661" elapsed="0.000182"/>
</kw>
<var name="${iteration}">33</var>
<status status="PASS" start="2026-04-08T00:58:21.703580" elapsed="0.002301"/>
</iter>
<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="PASS" start="2026-04-08T00:58:21.706320" elapsed="0.000193"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:21.706059" elapsed="0.000493"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.706044" elapsed="0.000532"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.707079" level="INFO">${j} = 34</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:21.706721" elapsed="0.000385"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.707922" level="INFO">${item} =         {
          "id": "34",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:21.707277" elapsed="0.000674"/>
</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="PASS" start="2026-04-08T00:58:21.708106" elapsed="0.000200"/>
</kw>
<var name="${iteration}">34</var>
<status status="PASS" start="2026-04-08T00:58:21.706013" elapsed="0.002329"/>
</iter>
<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="PASS" start="2026-04-08T00:58:21.708771" elapsed="0.000182"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:21.708530" elapsed="0.000461"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.708512" elapsed="0.000503"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.709538" level="INFO">${j} = 35</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:21.709180" elapsed="0.000390"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.710358" level="INFO">${item} =         {
          "id": "35",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:21.709730" elapsed="0.000657"/>
</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="PASS" start="2026-04-08T00:58:21.710550" elapsed="0.000186"/>
</kw>
<var name="${iteration}">35</var>
<status status="PASS" start="2026-04-08T00:58:21.708475" elapsed="0.002341"/>
</iter>
<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="PASS" start="2026-04-08T00:58:21.711376" elapsed="0.000300"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:21.711111" elapsed="0.000637"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.710985" elapsed="0.000789"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.712305" level="INFO">${j} = 36</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:21.711927" elapsed="0.000405"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.713111" level="INFO">${item} =         {
          "id": "36",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:21.712491" elapsed="0.000649"/>
</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="PASS" start="2026-04-08T00:58:21.713317" elapsed="0.000183"/>
</kw>
<var name="${iteration}">36</var>
<status status="PASS" start="2026-04-08T00:58:21.710954" elapsed="0.002584"/>
</iter>
<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="PASS" start="2026-04-08T00:58:21.714008" elapsed="0.000201"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:21.713767" elapsed="0.000481"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.713751" elapsed="0.000521"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.714780" level="INFO">${j} = 37</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:21.714418" elapsed="0.000389"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.715576" level="INFO">${item} =         {
          "id": "37",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:21.714962" elapsed="0.000643"/>
</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="PASS" start="2026-04-08T00:58:21.715789" elapsed="0.000187"/>
</kw>
<var name="${iteration}">37</var>
<status status="PASS" start="2026-04-08T00:58:21.713719" elapsed="0.002295"/>
</iter>
<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="PASS" start="2026-04-08T00:58:21.716452" elapsed="0.000182"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:21.716212" elapsed="0.000467"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.716197" elapsed="0.000507"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.717220" level="INFO">${j} = 38</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:21.716849" elapsed="0.000397"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.718023" level="INFO">${item} =         {
          "id": "38",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:21.717402" elapsed="0.000649"/>
</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="PASS" start="2026-04-08T00:58:21.718224" elapsed="0.000184"/>
</kw>
<var name="${iteration}">38</var>
<status status="PASS" start="2026-04-08T00:58:21.716150" elapsed="0.002297"/>
</iter>
<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="PASS" start="2026-04-08T00:58:21.718946" elapsed="0.000189"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:21.718698" elapsed="0.000491"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.718619" elapsed="0.000595"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.719751" level="INFO">${j} = 39</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:21.719365" elapsed="0.000418"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.720565" level="INFO">${item} =         {
          "id": "39",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:21.719940" elapsed="0.000654"/>
</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="PASS" start="2026-04-08T00:58:21.720759" elapsed="0.000190"/>
</kw>
<var name="${iteration}">39</var>
<status status="PASS" start="2026-04-08T00:58:21.718584" elapsed="0.002404"/>
</iter>
<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="PASS" start="2026-04-08T00:58:21.721425" elapsed="0.000184"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:21.721182" elapsed="0.000466"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.721149" elapsed="0.000523"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.722221" level="INFO">${j} = 40</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:21.721844" elapsed="0.000403"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.723014" level="INFO">${item} =         {
          "id": "40",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:21.722409" elapsed="0.000669"/>
</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="PASS" start="2026-04-08T00:58:21.723256" elapsed="0.000188"/>
</kw>
<var name="${iteration}">40</var>
<status status="PASS" start="2026-04-08T00:58:21.721119" elapsed="0.002363"/>
</iter>
<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="PASS" start="2026-04-08T00:58:21.723930" elapsed="0.000186"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:21.723662" elapsed="0.000507"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.723648" elapsed="0.000547"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.724694" level="INFO">${j} = 41</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:21.724342" elapsed="0.000378"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.725526" level="INFO">${item} =         {
          "id": "41",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:21.724898" elapsed="0.000656"/>
</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="PASS" start="2026-04-08T00:58:21.725713" elapsed="0.000199"/>
</kw>
<var name="${iteration}">41</var>
<status status="PASS" start="2026-04-08T00:58:21.723616" elapsed="0.002335"/>
</iter>
<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="PASS" start="2026-04-08T00:58:21.726397" elapsed="0.000183"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:21.726133" elapsed="0.000486"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.726118" elapsed="0.000525"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.727148" level="INFO">${j} = 42</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:21.726787" elapsed="0.000406"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.727994" level="INFO">${item} =         {
          "id": "42",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:21.727351" elapsed="0.000672"/>
</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="PASS" start="2026-04-08T00:58:21.728199" elapsed="0.000184"/>
</kw>
<var name="${iteration}">42</var>
<status status="PASS" start="2026-04-08T00:58:21.726086" elapsed="0.002335"/>
</iter>
<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="PASS" start="2026-04-08T00:58:21.728966" elapsed="0.000209"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:21.728710" elapsed="0.000507"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.728583" elapsed="0.000659"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.729741" level="INFO">${j} = 43</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:21.729390" elapsed="0.000378"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.730564" level="INFO">${item} =         {
          "id": "43",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:21.729938" elapsed="0.000655"/>
</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="PASS" start="2026-04-08T00:58:21.730750" elapsed="0.000192"/>
</kw>
<var name="${iteration}">43</var>
<status status="PASS" start="2026-04-08T00:58:21.728553" elapsed="0.002429"/>
</iter>
<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="PASS" start="2026-04-08T00:58:21.731430" elapsed="0.000186"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:21.731189" elapsed="0.000466"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.731171" elapsed="0.000508"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.732321" level="INFO">${j} = 44</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:21.731852" elapsed="0.000497"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.733119" level="INFO">${item} =         {
          "id": "44",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:21.732507" elapsed="0.000641"/>
</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="PASS" start="2026-04-08T00:58:21.733324" elapsed="0.000183"/>
</kw>
<var name="${iteration}">44</var>
<status status="PASS" start="2026-04-08T00:58:21.731125" elapsed="0.002420"/>
</iter>
<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="PASS" start="2026-04-08T00:58:21.733962" elapsed="0.000193"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:21.733724" elapsed="0.000490"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.733709" elapsed="0.000529"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.734738" level="INFO">${j} = 45</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:21.734382" elapsed="0.000421"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.735601" level="INFO">${item} =         {
          "id": "45",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:21.734965" elapsed="0.000664"/>
</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="PASS" start="2026-04-08T00:58:21.735813" elapsed="0.000188"/>
</kw>
<var name="${iteration}">45</var>
<status status="PASS" start="2026-04-08T00:58:21.733678" elapsed="0.002368"/>
</iter>
<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="PASS" start="2026-04-08T00:58:21.736489" elapsed="0.000184"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:21.736250" elapsed="0.000461"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.736235" elapsed="0.000500"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.737266" level="INFO">${j} = 46</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:21.736880" elapsed="0.000413"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.738068" level="INFO">${item} =         {
          "id": "46",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:21.737452" elapsed="0.000652"/>
</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="PASS" start="2026-04-08T00:58:21.738279" elapsed="0.000186"/>
</kw>
<var name="${iteration}">46</var>
<status status="PASS" start="2026-04-08T00:58:21.736202" elapsed="0.002300"/>
</iter>
<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="PASS" start="2026-04-08T00:58:21.738927" elapsed="0.000207"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:21.738680" elapsed="0.000510"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.738665" elapsed="0.000551"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.739715" level="INFO">${j} = 47</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:21.739363" elapsed="0.000395"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.740546" level="INFO">${item} =         {
          "id": "47",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:21.739916" elapsed="0.000659"/>
</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="PASS" start="2026-04-08T00:58:21.740733" elapsed="0.000183"/>
</kw>
<var name="${iteration}">47</var>
<status status="PASS" start="2026-04-08T00:58:21.738635" elapsed="0.002319"/>
</iter>
<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="PASS" start="2026-04-08T00:58:21.741400" elapsed="0.000183"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:21.741141" elapsed="0.000481"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.741125" elapsed="0.000522"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.742237" level="INFO">${j} = 48</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:21.741816" elapsed="0.000448"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.743022" level="INFO">${item} =         {
          "id": "48",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:21.742421" elapsed="0.000628"/>
</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="PASS" start="2026-04-08T00:58:21.743235" elapsed="0.000186"/>
</kw>
<var name="${iteration}">48</var>
<status status="PASS" start="2026-04-08T00:58:21.741086" elapsed="0.002374"/>
</iter>
<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="PASS" start="2026-04-08T00:58:21.743914" elapsed="0.000183"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:21.743637" elapsed="0.000498"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.743622" elapsed="0.000560"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.744690" level="INFO">${j} = 49</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:21.744338" elapsed="0.000378"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.745515" level="INFO">${item} =         {
          "id": "49",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:21.744870" elapsed="0.000673"/>
</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="PASS" start="2026-04-08T00:58:21.745701" elapsed="0.000183"/>
</kw>
<var name="${iteration}">49</var>
<status status="PASS" start="2026-04-08T00:58:21.743592" elapsed="0.002330"/>
</iter>
<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="PASS" start="2026-04-08T00:58:21.746539" elapsed="0.000188"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:21.746249" elapsed="0.000524"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.746087" elapsed="0.000718"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.747336" level="INFO">${j} = 50</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:21.746954" elapsed="0.000409"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.748146" level="INFO">${item} =         {
          "id": "50",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:21.747521" elapsed="0.000669"/>
</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="PASS" start="2026-04-08T00:58:21.748357" elapsed="0.000185"/>
</kw>
<var name="${iteration}">50</var>
<status status="PASS" start="2026-04-08T00:58:21.746056" elapsed="0.002523"/>
</iter>
<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="PASS" start="2026-04-08T00:58:21.748994" elapsed="0.000199"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:21.748758" elapsed="0.000473"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.748743" elapsed="0.000521"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.749762" level="INFO">${j} = 51</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:21.749412" elapsed="0.000376"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.750580" level="INFO">${item} =         {
          "id": "51",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:21.749943" elapsed="0.000666"/>
</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="PASS" start="2026-04-08T00:58:21.750767" elapsed="0.000183"/>
</kw>
<var name="${iteration}">51</var>
<status status="PASS" start="2026-04-08T00:58:21.748713" elapsed="0.002273"/>
</iter>
<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="PASS" start="2026-04-08T00:58:21.751435" elapsed="0.000185"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:21.751182" elapsed="0.000476"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.751151" elapsed="0.000532"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.752271" level="INFO">${j} = 52</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:21.751859" elapsed="0.000442"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.753068" level="INFO">${item} =         {
          "id": "52",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:21.752464" elapsed="0.000633"/>
</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="PASS" start="2026-04-08T00:58:21.753270" elapsed="0.000197"/>
</kw>
<var name="${iteration}">52</var>
<status status="PASS" start="2026-04-08T00:58:21.751120" elapsed="0.002386"/>
</iter>
<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="PASS" start="2026-04-08T00:58:21.753921" elapsed="0.000182"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:21.753684" elapsed="0.000458"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.753669" elapsed="0.000517"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.754708" level="INFO">${j} = 53</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:21.754344" elapsed="0.000390"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.755551" level="INFO">${item} =         {
          "id": "53",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:21.754890" elapsed="0.000690"/>
</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="PASS" start="2026-04-08T00:58:21.755739" elapsed="0.000199"/>
</kw>
<var name="${iteration}">53</var>
<status status="PASS" start="2026-04-08T00:58:21.753639" elapsed="0.002338"/>
</iter>
<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="PASS" start="2026-04-08T00:58:21.756423" elapsed="0.000187"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:21.756155" elapsed="0.000494"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.756140" elapsed="0.000533"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.757189" level="INFO">${j} = 54</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:21.756821" elapsed="0.000397"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.757988" level="INFO">${item} =         {
          "id": "54",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:21.757375" elapsed="0.000641"/>
</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="PASS" start="2026-04-08T00:58:21.758224" elapsed="0.000191"/>
</kw>
<var name="${iteration}">54</var>
<status status="PASS" start="2026-04-08T00:58:21.756110" elapsed="0.002347"/>
</iter>
<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="PASS" start="2026-04-08T00:58:21.758878" elapsed="0.000185"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:21.758636" elapsed="0.000466"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.758622" elapsed="0.000504"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.759654" level="INFO">${j} = 55</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:21.759288" elapsed="0.000393"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.760507" level="INFO">${item} =         {
          "id": "55",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:21.759870" elapsed="0.000666"/>
</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="PASS" start="2026-04-08T00:58:21.760695" elapsed="0.000184"/>
</kw>
<var name="${iteration}">55</var>
<status status="PASS" start="2026-04-08T00:58:21.758591" elapsed="0.002325"/>
</iter>
<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="PASS" start="2026-04-08T00:58:21.761349" elapsed="0.000199"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:21.761093" elapsed="0.000494"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.761079" elapsed="0.000533"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.762106" level="INFO">${j} = 56</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:21.761756" elapsed="0.000377"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.762931" level="INFO">${item} =         {
          "id": "56",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:21.762304" elapsed="0.000655"/>
</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="PASS" start="2026-04-08T00:58:21.763117" elapsed="0.000201"/>
</kw>
<var name="${iteration}">56</var>
<status status="PASS" start="2026-04-08T00:58:21.761048" elapsed="0.002309"/>
</iter>
<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="PASS" start="2026-04-08T00:58:21.763928" elapsed="0.000187"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:21.763652" elapsed="0.000502"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.763527" elapsed="0.000672"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.764715" level="INFO">${j} = 57</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:21.764345" elapsed="0.000397"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.765519" level="INFO">${item} =         {
          "id": "57",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:21.764901" elapsed="0.000654"/>
</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="PASS" start="2026-04-08T00:58:21.765714" elapsed="0.000185"/>
</kw>
<var name="${iteration}">57</var>
<status status="PASS" start="2026-04-08T00:58:21.763490" elapsed="0.002446"/>
</iter>
<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="PASS" start="2026-04-08T00:58:21.766370" elapsed="0.000189"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:21.766112" elapsed="0.000489"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.766096" elapsed="0.000529"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.767127" level="INFO">${j} = 58</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:21.766775" elapsed="0.000378"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.767971" level="INFO">${item} =         {
          "id": "58",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:21.767330" elapsed="0.000670"/>
</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="PASS" start="2026-04-08T00:58:21.768173" elapsed="0.000187"/>
</kw>
<var name="${iteration}">58</var>
<status status="PASS" start="2026-04-08T00:58:21.766066" elapsed="0.002331"/>
</iter>
<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="PASS" start="2026-04-08T00:58:21.768824" elapsed="0.000183"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:21.768575" elapsed="0.000469"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.768559" elapsed="0.000509"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.769581" level="INFO">${j} = 59</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:21.769229" elapsed="0.000383"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.770430" level="INFO">${item} =         {
          "id": "59",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:21.769808" elapsed="0.000650"/>
</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="PASS" start="2026-04-08T00:58:21.770618" elapsed="0.000202"/>
</kw>
<var name="${iteration}">59</var>
<status status="PASS" start="2026-04-08T00:58:21.768528" elapsed="0.002331"/>
</iter>
<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="PASS" start="2026-04-08T00:58:21.771290" elapsed="0.000183"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:21.771035" elapsed="0.000476"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.771020" elapsed="0.000516"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.772063" level="INFO">${j} = 60</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:21.771689" elapsed="0.000401"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.772879" level="INFO">${item} =         {
          "id": "60",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:21.772263" elapsed="0.000645"/>
</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="PASS" start="2026-04-08T00:58:21.773065" elapsed="0.000201"/>
</kw>
<var name="${iteration}">60</var>
<status status="PASS" start="2026-04-08T00:58:21.770990" elapsed="0.002314"/>
</iter>
<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="PASS" start="2026-04-08T00:58:21.773732" elapsed="0.000186"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:21.773481" elapsed="0.000476"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.773466" elapsed="0.000515"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.774501" level="INFO">${j} = 61</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:21.774132" elapsed="0.000396"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.775318" level="INFO">${item} =         {
          "id": "61",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:21.774683" elapsed="0.000664"/>
</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="PASS" start="2026-04-08T00:58:21.775505" elapsed="0.000183"/>
</kw>
<var name="${iteration}">61</var>
<status status="PASS" start="2026-04-08T00:58:21.773436" elapsed="0.002295"/>
</iter>
<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="PASS" start="2026-04-08T00:58:21.776215" elapsed="0.000184"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:21.775955" elapsed="0.000481"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.775940" elapsed="0.000520"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.776976" level="INFO">${j} = 62</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:21.776613" elapsed="0.000389"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.777778" level="INFO">${item} =         {
          "id": "62",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:21.777172" elapsed="0.000636"/>
</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="PASS" start="2026-04-08T00:58:21.777963" elapsed="0.000182"/>
</kw>
<var name="${iteration}">62</var>
<status status="PASS" start="2026-04-08T00:58:21.775908" elapsed="0.002290"/>
</iter>
<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="PASS" start="2026-04-08T00:58:21.778616" elapsed="0.000204"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:21.778377" elapsed="0.000484"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.778362" elapsed="0.000524"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.779412" level="INFO">${j} = 63</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:21.779035" elapsed="0.000404"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.780269" level="INFO">${item} =         {
          "id": "63",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:21.779595" elapsed="0.000703"/>
</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="PASS" start="2026-04-08T00:58:21.780456" elapsed="0.000182"/>
</kw>
<var name="${iteration}">63</var>
<status status="PASS" start="2026-04-08T00:58:21.778332" elapsed="0.002345"/>
</iter>
<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="PASS" start="2026-04-08T00:58:21.781238" elapsed="0.000186"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:21.780973" elapsed="0.000522"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.780848" elapsed="0.000675"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.782030" level="INFO">${j} = 64</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:21.781669" elapsed="0.000388"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.782834" level="INFO">${item} =         {
          "id": "64",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:21.782230" elapsed="0.000640"/>
</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="PASS" start="2026-04-08T00:58:21.783031" elapsed="0.000200"/>
</kw>
<var name="${iteration}">64</var>
<status status="PASS" start="2026-04-08T00:58:21.780810" elapsed="0.002459"/>
</iter>
<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="PASS" start="2026-04-08T00:58:21.783677" elapsed="0.000227"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:21.783442" elapsed="0.000502"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.783427" elapsed="0.000541"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.784484" level="INFO">${j} = 65</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:21.784113" elapsed="0.000398"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.785295" level="INFO">${item} =         {
          "id": "65",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:21.784667" elapsed="0.000657"/>
</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="PASS" start="2026-04-08T00:58:21.785481" elapsed="0.000181"/>
</kw>
<var name="${iteration}">65</var>
<status status="PASS" start="2026-04-08T00:58:21.783398" elapsed="0.002302"/>
</iter>
<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="PASS" start="2026-04-08T00:58:21.786127" elapsed="0.000201"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:21.785874" elapsed="0.000494"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.785859" elapsed="0.000533"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.786886" level="INFO">${j} = 66</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:21.786537" elapsed="0.000375"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.787714" level="INFO">${item} =         {
          "id": "66",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:21.787084" elapsed="0.000658"/>
</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="PASS" start="2026-04-08T00:58:21.787916" elapsed="0.000191"/>
</kw>
<var name="${iteration}">66</var>
<status status="PASS" start="2026-04-08T00:58:21.785829" elapsed="0.002317"/>
</iter>
<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="PASS" start="2026-04-08T00:58:21.788606" elapsed="0.000186"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:21.788360" elapsed="0.000471"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.788345" elapsed="0.000511"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.789392" level="INFO">${j} = 67</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:21.789018" elapsed="0.000401"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.790211" level="INFO">${item} =         {
          "id": "67",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:21.789576" elapsed="0.000664"/>
</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="PASS" start="2026-04-08T00:58:21.790398" elapsed="0.000183"/>
</kw>
<var name="${iteration}">67</var>
<status status="PASS" start="2026-04-08T00:58:21.788313" elapsed="0.002305"/>
</iter>
<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="PASS" start="2026-04-08T00:58:21.791043" elapsed="0.000202"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:21.790796" elapsed="0.000488"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.790782" elapsed="0.000525"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.791831" level="INFO">${j} = 68</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:21.791455" elapsed="0.000404"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.792675" level="INFO">${item} =         {
          "id": "68",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:21.792034" elapsed="0.000669"/>
</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="PASS" start="2026-04-08T00:58:21.792860" elapsed="0.000191"/>
</kw>
<var name="${iteration}">68</var>
<status status="PASS" start="2026-04-08T00:58:21.790751" elapsed="0.002383"/>
</iter>
<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="PASS" start="2026-04-08T00:58:21.793572" elapsed="0.000184"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:21.793332" elapsed="0.000463"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.793317" elapsed="0.000503"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.794347" level="INFO">${j} = 69</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:21.793963" elapsed="0.000411"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.795151" level="INFO">${item} =         {
          "id": "69",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:21.794532" elapsed="0.000664"/>
</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="PASS" start="2026-04-08T00:58:21.795355" elapsed="0.000186"/>
</kw>
<var name="${iteration}">69</var>
<status status="PASS" start="2026-04-08T00:58:21.793286" elapsed="0.002292"/>
</iter>
<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="PASS" start="2026-04-08T00:58:21.796017" elapsed="0.000216"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:21.795756" elapsed="0.000517"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.795741" elapsed="0.000556"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.796797" level="INFO">${j} = 70</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:21.796444" elapsed="0.000379"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.797617" level="INFO">${item} =         {
          "id": "70",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:21.796979" elapsed="0.000667"/>
</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="PASS" start="2026-04-08T00:58:21.797805" elapsed="0.000185"/>
</kw>
<var name="${iteration}">70</var>
<status status="PASS" start="2026-04-08T00:58:21.795710" elapsed="0.002317"/>
</iter>
<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="PASS" start="2026-04-08T00:58:21.798597" elapsed="0.000186"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:21.798350" elapsed="0.000472"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.798225" elapsed="0.000621"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.799370" level="INFO">${j} = 71</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:21.798991" elapsed="0.000406"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.800216" level="INFO">${item} =         {
          "id": "71",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:21.799553" elapsed="0.000694"/>
</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="PASS" start="2026-04-08T00:58:21.800407" elapsed="0.000184"/>
</kw>
<var name="${iteration}">71</var>
<status status="PASS" start="2026-04-08T00:58:21.798191" elapsed="0.002439"/>
</iter>
<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="PASS" start="2026-04-08T00:58:21.801046" elapsed="0.000210"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:21.800807" elapsed="0.000489"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.800793" elapsed="0.000527"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.801817" level="INFO">${j} = 72</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:21.801465" elapsed="0.000378"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.802631" level="INFO">${item} =         {
          "id": "72",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:21.802003" elapsed="0.000656"/>
</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="PASS" start="2026-04-08T00:58:21.802817" elapsed="0.000181"/>
</kw>
<var name="${iteration}">72</var>
<status status="PASS" start="2026-04-08T00:58:21.800762" elapsed="0.002274"/>
</iter>
<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="PASS" start="2026-04-08T00:58:21.803489" elapsed="0.000184"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:21.803240" elapsed="0.000472"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.803220" elapsed="0.000517"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.804276" level="INFO">${j} = 73</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:21.803899" elapsed="0.000404"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.805073" level="INFO">${item} =         {
          "id": "73",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:21.804459" elapsed="0.000674"/>
</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="PASS" start="2026-04-08T00:58:21.805321" elapsed="0.000188"/>
</kw>
<var name="${iteration}">73</var>
<status status="PASS" start="2026-04-08T00:58:21.803184" elapsed="0.002363"/>
</iter>
<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="PASS" start="2026-04-08T00:58:21.805963" elapsed="0.000184"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:21.805724" elapsed="0.000477"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.805709" elapsed="0.000518"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.806736" level="INFO">${j} = 74</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:21.806382" elapsed="0.000380"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.807555" level="INFO">${item} =         {
          "id": "74",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:21.806919" elapsed="0.000664"/>
</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="PASS" start="2026-04-08T00:58:21.807741" elapsed="0.000217"/>
</kw>
<var name="${iteration}">74</var>
<status status="PASS" start="2026-04-08T00:58:21.805678" elapsed="0.002319"/>
</iter>
<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="PASS" start="2026-04-08T00:58:21.808456" elapsed="0.000185"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:21.808200" elapsed="0.000480"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.808182" elapsed="0.000522"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.809224" level="INFO">${j} = 75</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:21.808854" elapsed="0.000396"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.810018" level="INFO">${item} =         {
          "id": "75",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:21.809417" elapsed="0.000630"/>
</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="PASS" start="2026-04-08T00:58:21.810220" elapsed="0.000199"/>
</kw>
<var name="${iteration}">75</var>
<status status="PASS" start="2026-04-08T00:58:21.808130" elapsed="0.002328"/>
</iter>
<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="PASS" start="2026-04-08T00:58:21.810874" elapsed="0.000182"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:21.810635" elapsed="0.000462"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.810621" elapsed="0.000503"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.811662" level="INFO">${j} = 76</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:21.811290" elapsed="0.000399"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.812506" level="INFO">${item} =         {
          "id": "76",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:21.811862" elapsed="0.000672"/>
</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="PASS" start="2026-04-08T00:58:21.812689" elapsed="0.000183"/>
</kw>
<var name="${iteration}">76</var>
<status status="PASS" start="2026-04-08T00:58:21.810591" elapsed="0.002320"/>
</iter>
<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="PASS" start="2026-04-08T00:58:21.813343" elapsed="0.000198"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:21.813088" elapsed="0.000492"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.813072" elapsed="0.000533"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.814102" level="INFO">${j} = 77</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:21.813748" elapsed="0.000381"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.814932" level="INFO">${item} =         {
          "id": "77",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:21.814308" elapsed="0.000652"/>
</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="PASS" start="2026-04-08T00:58:21.815117" elapsed="0.000200"/>
</kw>
<var name="${iteration}">77</var>
<status status="PASS" start="2026-04-08T00:58:21.813043" elapsed="0.002314"/>
</iter>
<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="PASS" start="2026-04-08T00:58:21.815936" elapsed="0.000190"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:21.815658" elapsed="0.000523"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.815533" elapsed="0.000674"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.816722" level="INFO">${j} = 78</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:21.816355" elapsed="0.000443"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.817598" level="INFO">${item} =         {
          "id": "78",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:21.816960" elapsed="0.000668"/>
</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="PASS" start="2026-04-08T00:58:21.817784" elapsed="0.000182"/>
</kw>
<var name="${iteration}">78</var>
<status status="PASS" start="2026-04-08T00:58:21.815501" elapsed="0.002502"/>
</iter>
<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="PASS" start="2026-04-08T00:58:21.818439" elapsed="0.000193"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:21.818199" elapsed="0.000472"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.818182" elapsed="0.000513"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.819244" level="INFO">${j} = 79</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:21.818873" elapsed="0.000398"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.820080" level="INFO">${item} =         {
          "id": "79",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:21.819427" elapsed="0.000683"/>
</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="PASS" start="2026-04-08T00:58:21.820289" elapsed="0.000185"/>
</kw>
<var name="${iteration}">79</var>
<status status="PASS" start="2026-04-08T00:58:21.818134" elapsed="0.002377"/>
</iter>
<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="PASS" start="2026-04-08T00:58:21.820938" elapsed="0.000183"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:21.820700" elapsed="0.000475"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.820686" elapsed="0.000516"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.821715" level="INFO">${j} = 80</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:21.821346" elapsed="0.000396"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.822643" level="INFO">${item} =         {
          "id": "80",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:21.821898" elapsed="0.000775"/>
</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="PASS" start="2026-04-08T00:58:21.822832" elapsed="0.000183"/>
</kw>
<var name="${iteration}">80</var>
<status status="PASS" start="2026-04-08T00:58:21.820654" elapsed="0.002399"/>
</iter>
<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="PASS" start="2026-04-08T00:58:21.823495" elapsed="0.000193"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:21.823255" elapsed="0.000472"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.823240" elapsed="0.000513"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.824324" level="INFO">${j} = 81</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:21.823929" elapsed="0.000422"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.825140" level="INFO">${item} =         {
          "id": "81",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:21.824514" elapsed="0.000670"/>
</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="PASS" start="2026-04-08T00:58:21.825344" elapsed="0.000184"/>
</kw>
<var name="${iteration}">81</var>
<status status="PASS" start="2026-04-08T00:58:21.823209" elapsed="0.002356"/>
</iter>
<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="PASS" start="2026-04-08T00:58:21.825993" elapsed="0.000202"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:21.825755" elapsed="0.000479"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.825740" elapsed="0.000519"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.826777" level="INFO">${j} = 82</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:21.826402" elapsed="0.000402"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.827581" level="INFO">${item} =         {
          "id": "82",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:21.826959" elapsed="0.000651"/>
</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="PASS" start="2026-04-08T00:58:21.827783" elapsed="0.000207"/>
</kw>
<var name="${iteration}">82</var>
<status status="PASS" start="2026-04-08T00:58:21.825707" elapsed="0.002321"/>
</iter>
<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="PASS" start="2026-04-08T00:58:21.828518" elapsed="0.000194"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:21.828233" elapsed="0.000519"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.828217" elapsed="0.000560"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.829293" level="INFO">${j} = 83</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:21.828922" elapsed="0.000398"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.830100" level="INFO">${item} =         {
          "id": "83",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:21.829477" elapsed="0.000652"/>
</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="PASS" start="2026-04-08T00:58:21.830305" elapsed="0.000186"/>
</kw>
<var name="${iteration}">83</var>
<status status="PASS" start="2026-04-08T00:58:21.828184" elapsed="0.002345"/>
</iter>
<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="PASS" start="2026-04-08T00:58:21.830957" elapsed="0.000185"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:21.830708" elapsed="0.000488"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.830693" elapsed="0.000529"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.831719" level="INFO">${j} = 84</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:21.831367" elapsed="0.000383"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.832571" level="INFO">${item} =         {
          "id": "84",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:21.831939" elapsed="0.000660"/>
</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="PASS" start="2026-04-08T00:58:21.832759" elapsed="0.000195"/>
</kw>
<var name="${iteration}">84</var>
<status status="PASS" start="2026-04-08T00:58:21.830663" elapsed="0.002329"/>
</iter>
<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="PASS" start="2026-04-08T00:58:21.833947" elapsed="0.000187"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:21.833689" elapsed="0.000500"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.833179" elapsed="0.001037"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.834713" level="INFO">${j} = 85</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:21.834361" elapsed="0.000378"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.835529" level="INFO">${item} =         {
          "id": "85",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:21.834908" elapsed="0.000650"/>
</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="PASS" start="2026-04-08T00:58:21.835714" elapsed="0.000258"/>
</kw>
<var name="${iteration}">85</var>
<status status="PASS" start="2026-04-08T00:58:21.833132" elapsed="0.002883"/>
</iter>
<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="PASS" start="2026-04-08T00:58:21.836461" elapsed="0.000184"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:21.836217" elapsed="0.000467"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.836202" elapsed="0.000506"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.837229" level="INFO">${j} = 86</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:21.836856" elapsed="0.000399"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.838098" level="INFO">${item} =         {
          "id": "86",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:21.837495" elapsed="0.000631"/>
</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="PASS" start="2026-04-08T00:58:21.838303" elapsed="0.000183"/>
</kw>
<var name="${iteration}">86</var>
<status status="PASS" start="2026-04-08T00:58:21.836152" elapsed="0.002372"/>
</iter>
<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="PASS" start="2026-04-08T00:58:21.838939" elapsed="0.000187"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:21.838702" elapsed="0.000476"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.838687" elapsed="0.000517"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.839695" level="INFO">${j} = 87</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:21.839348" elapsed="0.000373"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.840506" level="INFO">${item} =         {
          "id": "87",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:21.839890" elapsed="0.000644"/>
</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="PASS" start="2026-04-08T00:58:21.840724" elapsed="0.000183"/>
</kw>
<var name="${iteration}">87</var>
<status status="PASS" start="2026-04-08T00:58:21.838657" elapsed="0.002287"/>
</iter>
<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="PASS" start="2026-04-08T00:58:21.841374" elapsed="0.000181"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:21.841120" elapsed="0.000473"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.841105" elapsed="0.000512"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.842104" level="INFO">${j} = 88</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:21.841758" elapsed="0.000371"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.842906" level="INFO">${item} =         {
          "id": "88",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:21.842302" elapsed="0.000631"/>
</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="PASS" start="2026-04-08T00:58:21.843090" elapsed="0.000198"/>
</kw>
<var name="${iteration}">88</var>
<status status="PASS" start="2026-04-08T00:58:21.841075" elapsed="0.002250"/>
</iter>
<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="PASS" start="2026-04-08T00:58:21.843739" elapsed="0.000209"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:21.843503" elapsed="0.000484"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.843488" elapsed="0.000523"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.844521" level="INFO">${j} = 89</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:21.844170" elapsed="0.000377"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.845327" level="INFO">${item} =         {
          "id": "89",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:21.844703" elapsed="0.000652"/>
</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="PASS" start="2026-04-08T00:58:21.845513" elapsed="0.000180"/>
</kw>
<var name="${iteration}">89</var>
<status status="PASS" start="2026-04-08T00:58:21.843457" elapsed="0.002273"/>
</iter>
<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="PASS" start="2026-04-08T00:58:21.846141" elapsed="0.000198"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:21.845906" elapsed="0.000471"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.845891" elapsed="0.000511"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.846892" level="INFO">${j} = 90</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:21.846546" elapsed="0.000372"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.847690" level="INFO">${item} =         {
          "id": "90",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:21.847073" elapsed="0.000646"/>
</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="PASS" start="2026-04-08T00:58:21.847887" elapsed="0.000182"/>
</kw>
<var name="${iteration}">90</var>
<status status="PASS" start="2026-04-08T00:58:21.845861" elapsed="0.002245"/>
</iter>
<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="PASS" start="2026-04-08T00:58:21.848541" elapsed="0.000182"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:21.848301" elapsed="0.000459"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.848285" elapsed="0.000499"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.849290" level="INFO">${j} = 91</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:21.848928" elapsed="0.000388"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.850083" level="INFO">${item} =         {
          "id": "91",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:21.849474" elapsed="0.000637"/>
</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="PASS" start="2026-04-08T00:58:21.850284" elapsed="0.000183"/>
</kw>
<var name="${iteration}">91</var>
<status status="PASS" start="2026-04-08T00:58:21.848254" elapsed="0.002250"/>
</iter>
<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="PASS" start="2026-04-08T00:58:21.851040" elapsed="0.000202"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:21.850796" elapsed="0.000485"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.850668" elapsed="0.000637"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.851800" level="INFO">${j} = 92</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:21.851450" elapsed="0.000376"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.852702" level="INFO">${item} =         {
          "id": "92",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:21.852068" elapsed="0.000663"/>
</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="PASS" start="2026-04-08T00:58:21.852890" elapsed="0.000183"/>
</kw>
<var name="${iteration}">92</var>
<status status="PASS" start="2026-04-08T00:58:21.850637" elapsed="0.002474"/>
</iter>
<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="PASS" start="2026-04-08T00:58:21.853544" elapsed="0.000184"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:21.853308" elapsed="0.000459"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.853292" elapsed="0.000499"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.854300" level="INFO">${j} = 93</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:21.853934" elapsed="0.000392"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.855077" level="INFO">${item} =         {
          "id": "93",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:21.854482" elapsed="0.000623"/>
</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="PASS" start="2026-04-08T00:58:21.855277" elapsed="0.000182"/>
</kw>
<var name="${iteration}">93</var>
<status status="PASS" start="2026-04-08T00:58:21.853261" elapsed="0.002236"/>
</iter>
<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="PASS" start="2026-04-08T00:58:21.855925" elapsed="0.000186"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:21.855673" elapsed="0.000476"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.855658" elapsed="0.000531"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.856683" level="INFO">${j} = 94</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:21.856334" elapsed="0.000375"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.857538" level="INFO">${item} =         {
          "id": "94",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:21.856863" elapsed="0.000704"/>
</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="PASS" start="2026-04-08T00:58:21.857724" elapsed="0.000181"/>
</kw>
<var name="${iteration}">94</var>
<status status="PASS" start="2026-04-08T00:58:21.855628" elapsed="0.002314"/>
</iter>
<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="PASS" start="2026-04-08T00:58:21.858386" elapsed="0.000181"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:21.858129" elapsed="0.000476"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.858113" elapsed="0.000516"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.859117" level="INFO">${j} = 95</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:21.858771" elapsed="0.000372"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.859940" level="INFO">${item} =         {
          "id": "95",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:21.859316" elapsed="0.000653"/>
</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="PASS" start="2026-04-08T00:58:21.860139" elapsed="0.000203"/>
</kw>
<var name="${iteration}">95</var>
<status status="PASS" start="2026-04-08T00:58:21.858079" elapsed="0.002301"/>
</iter>
<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="PASS" start="2026-04-08T00:58:21.860797" elapsed="0.000184"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:21.860558" elapsed="0.000461"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.860542" elapsed="0.000509"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.861580" level="INFO">${j} = 96</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:21.861217" elapsed="0.000390"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.862425" level="INFO">${item} =         {
          "id": "96",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:21.861761" elapsed="0.000693"/>
</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="PASS" start="2026-04-08T00:58:21.862611" elapsed="0.000183"/>
</kw>
<var name="${iteration}">96</var>
<status status="PASS" start="2026-04-08T00:58:21.860512" elapsed="0.002320"/>
</iter>
<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="PASS" start="2026-04-08T00:58:21.863263" elapsed="0.000188"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:21.863009" elapsed="0.000515"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.862994" elapsed="0.000558"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.864098" level="INFO">${j} = 97</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:21.863703" elapsed="0.000422"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.864918" level="INFO">${item} =         {
          "id": "97",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:21.864301" elapsed="0.000646"/>
</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="PASS" start="2026-04-08T00:58:21.865106" elapsed="0.000202"/>
</kw>
<var name="${iteration}">97</var>
<status status="PASS" start="2026-04-08T00:58:21.862963" elapsed="0.002384"/>
</iter>
<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="PASS" start="2026-04-08T00:58:21.865763" elapsed="0.000185"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:21.865524" elapsed="0.000464"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.865509" elapsed="0.000503"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.866533" level="INFO">${j} = 98</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:21.866176" elapsed="0.000383"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.867336" level="INFO">${item} =         {
          "id": "98",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:21.866715" elapsed="0.000650"/>
</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="PASS" start="2026-04-08T00:58:21.867521" elapsed="0.000183"/>
</kw>
<var name="${iteration}">98</var>
<status status="PASS" start="2026-04-08T00:58:21.865478" elapsed="0.002265"/>
</iter>
<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="PASS" start="2026-04-08T00:58:21.868338" elapsed="0.000187"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:21.868073" elapsed="0.000491"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.867943" elapsed="0.000645"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.869083" level="INFO">${j} = 99</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:21.868733" elapsed="0.000375"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.869881" level="INFO">${item} =         {
          "id": "99",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
 ...</msg>
<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="PASS" start="2026-04-08T00:58:21.869281" elapsed="0.000629"/>
</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="PASS" start="2026-04-08T00:58:21.870066" elapsed="0.000202"/>
</kw>
<var name="${iteration}">99</var>
<status status="PASS" start="2026-04-08T00:58:21.867875" elapsed="0.002430"/>
</iter>
<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="PASS" start="2026-04-08T00:58:21.870719" elapsed="0.000181"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:21.870482" elapsed="0.000457"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.870467" elapsed="0.000496"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.871475" level="INFO">${j} = 100</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:21.871107" elapsed="0.000394"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.872290" level="INFO">${item} =         {
          "id": "100",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
...</msg>
<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="PASS" start="2026-04-08T00:58:21.871657" elapsed="0.000662"/>
</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="PASS" start="2026-04-08T00:58:21.872474" elapsed="0.000181"/>
</kw>
<var name="${iteration}">100</var>
<status status="PASS" start="2026-04-08T00:58:21.870437" elapsed="0.002254"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="PASS" start="2026-04-08T00:58:21.622451" elapsed="0.250271"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.873980" level="INFO">${final_text} = {
  "flow": [
        {
          "id": "1",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "...</msg>
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:58:21.872877" elapsed="0.001131"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T00:58:21.874068" elapsed="0.000036"/>
</return>
<msg time="2026-04-08T00:58:21.874254" level="INFO">${data} = {
  "flow": [
        {
          "id": "1",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "...</msg>
<var>${data}</var>
<arg>folder=${folder}</arg>
<arg>name_prefix=post_</arg>
<arg>base_name=${base_name}</arg>
<arg>extension=${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>endline=${endline}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one 100 times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-08T00:58:21.566430" elapsed="0.307851"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T00:58:21.875623" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-flow/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T00:58:21.875368" elapsed="0.000327">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-flow/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-08T00:58:21.875785" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T00:58:21.875013" elapsed="0.000797"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:21.876174" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:21.875880" elapsed="0.000353"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.876727" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:58:21.876441" elapsed="0.000311"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:21.876257" elapsed="0.000529"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.875862" elapsed="0.000946"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.879139" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:58:21.876960" elapsed="0.002220"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-08T00:58:21.879231" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:58:21.879384" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T00:58:21.874671" elapsed="0.004738"/>
</kw>
<kw name="Post_To_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.880948" level="INFO">/rests/data/opendaylight-inventory:nodes/node=openflow%3A3/flow-node-inventory:table=0</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:21.880697" elapsed="0.000296"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.881404" level="INFO">{
  "flow": [
        {
          "id": "1",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.1/32"
          },
          "flow-name": "Flow-1",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 1
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "2",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.2/32"
          },
          "flow-name": "Flow-2",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 2
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "3",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.3/32"
          },
          "flow-name": "Flow-3",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 3
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "4",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.4/32"
          },
          "flow-name": "Flow-4",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 4
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "5",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.5/32"
          },
          "flow-name": "Flow-5",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 5
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "6",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.6/32"
          },
          "flow-name": "Flow-6",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 6
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "7",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.7/32"
          },
          "flow-name": "Flow-7",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 7
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "8",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.8/32"
          },
          "flow-name": "Flow-8",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 8
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "9",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.9/32"
          },
          "flow-name": "Flow-9",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 9
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "10",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.10/32"
          },
          "flow-name": "Flow-10",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 10
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "11",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.11/32"
          },
          "flow-name": "Flow-11",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 11
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "12",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.12/32"
          },
          "flow-name": "Flow-12",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 12
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "13",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.13/32"
          },
          "flow-name": "Flow-13",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 13
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "14",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.14/32"
          },
          "flow-name": "Flow-14",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 14
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "15",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.15/32"
          },
          "flow-name": "Flow-15",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 15
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "16",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.16/32"
          },
          "flow-name": "Flow-16",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 16
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "17",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.17/32"
          },
          "flow-name": "Flow-17",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 17
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "18",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.18/32"
          },
          "flow-name": "Flow-18",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 18
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "19",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.19/32"
          },
          "flow-name": "Flow-19",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 19
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "20",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.20/32"
          },
          "flow-name": "Flow-20",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 20
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "21",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.21/32"
          },
          "flow-name": "Flow-21",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 21
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "22",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.22/32"
          },
          "flow-name": "Flow-22",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 22
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "23",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.23/32"
          },
          "flow-name": "Flow-23",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 23
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "24",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.24/32"
          },
          "flow-name": "Flow-24",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 24
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "25",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.25/32"
          },
          "flow-name": "Flow-25",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 25
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "26",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.26/32"
          },
          "flow-name": "Flow-26",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 26
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "27",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.27/32"
          },
          "flow-name": "Flow-27",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 27
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "28",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.28/32"
          },
          "flow-name": "Flow-28",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 28
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "29",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.29/32"
          },
          "flow-name": "Flow-29",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 29
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "30",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.30/32"
          },
          "flow-name": "Flow-30",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 30
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "31",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.31/32"
          },
          "flow-name": "Flow-31",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 31
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "32",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.32/32"
          },
          "flow-name": "Flow-32",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 32
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "33",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.33/32"
          },
          "flow-name": "Flow-33",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 33
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "34",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.34/32"
          },
          "flow-name": "Flow-34",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 34
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "35",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.35/32"
          },
          "flow-name": "Flow-35",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 35
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "36",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.36/32"
          },
          "flow-name": "Flow-36",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 36
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "37",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.37/32"
          },
          "flow-name": "Flow-37",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 37
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "38",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.38/32"
          },
          "flow-name": "Flow-38",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 38
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "39",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.39/32"
          },
          "flow-name": "Flow-39",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 39
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "40",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.40/32"
          },
          "flow-name": "Flow-40",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 40
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "41",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.41/32"
          },
          "flow-name": "Flow-41",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 41
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "42",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.42/32"
          },
          "flow-name": "Flow-42",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 42
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "43",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.43/32"
          },
          "flow-name": "Flow-43",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 43
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "44",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.44/32"
          },
          "flow-name": "Flow-44",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 44
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "45",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.45/32"
          },
          "flow-name": "Flow-45",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 45
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "46",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.46/32"
          },
          "flow-name": "Flow-46",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 46
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "47",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.47/32"
          },
          "flow-name": "Flow-47",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 47
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "48",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.48/32"
          },
          "flow-name": "Flow-48",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 48
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "49",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.49/32"
          },
          "flow-name": "Flow-49",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 49
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "50",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.50/32"
          },
          "flow-name": "Flow-50",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 50
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "51",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.51/32"
          },
          "flow-name": "Flow-51",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 51
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "52",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.52/32"
          },
          "flow-name": "Flow-52",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 52
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "53",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.53/32"
          },
          "flow-name": "Flow-53",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 53
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "54",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.54/32"
          },
          "flow-name": "Flow-54",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 54
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "55",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.55/32"
          },
          "flow-name": "Flow-55",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 55
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "56",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.56/32"
          },
          "flow-name": "Flow-56",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 56
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "57",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.57/32"
          },
          "flow-name": "Flow-57",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 57
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "58",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.58/32"
          },
          "flow-name": "Flow-58",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 58
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "59",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.59/32"
          },
          "flow-name": "Flow-59",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 59
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "60",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.60/32"
          },
          "flow-name": "Flow-60",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 60
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "61",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.61/32"
          },
          "flow-name": "Flow-61",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 61
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "62",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.62/32"
          },
          "flow-name": "Flow-62",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 62
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "63",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.63/32"
          },
          "flow-name": "Flow-63",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 63
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "64",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.64/32"
          },
          "flow-name": "Flow-64",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 64
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "65",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.65/32"
          },
          "flow-name": "Flow-65",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 65
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "66",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.66/32"
          },
          "flow-name": "Flow-66",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 66
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "67",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.67/32"
          },
          "flow-name": "Flow-67",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 67
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "68",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.68/32"
          },
          "flow-name": "Flow-68",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 68
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "69",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.69/32"
          },
          "flow-name": "Flow-69",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 69
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "70",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.70/32"
          },
          "flow-name": "Flow-70",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 70
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "71",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.71/32"
          },
          "flow-name": "Flow-71",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 71
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "72",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.72/32"
          },
          "flow-name": "Flow-72",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 72
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "73",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.73/32"
          },
          "flow-name": "Flow-73",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 73
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "74",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.74/32"
          },
          "flow-name": "Flow-74",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 74
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "75",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.75/32"
          },
          "flow-name": "Flow-75",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 75
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "76",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.76/32"
          },
          "flow-name": "Flow-76",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 76
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "77",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.77/32"
          },
          "flow-name": "Flow-77",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 77
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "78",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.78/32"
          },
          "flow-name": "Flow-78",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 78
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "79",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.79/32"
          },
          "flow-name": "Flow-79",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 79
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "80",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.80/32"
          },
          "flow-name": "Flow-80",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 80
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "81",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.81/32"
          },
          "flow-name": "Flow-81",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 81
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "82",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.82/32"
          },
          "flow-name": "Flow-82",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 82
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "83",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.83/32"
          },
          "flow-name": "Flow-83",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 83
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "84",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.84/32"
          },
          "flow-name": "Flow-84",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 84
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "85",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.85/32"
          },
          "flow-name": "Flow-85",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 85
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "86",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.86/32"
          },
          "flow-name": "Flow-86",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 86
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "87",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.87/32"
          },
          "flow-name": "Flow-87",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 87
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "88",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.88/32"
          },
          "flow-name": "Flow-88",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 88
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "89",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.89/32"
          },
          "flow-name": "Flow-89",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 89
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "90",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.90/32"
          },
          "flow-name": "Flow-90",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 90
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "91",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.91/32"
          },
          "flow-name": "Flow-91",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 91
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "92",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.92/32"
          },
          "flow-name": "Flow-92",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 92
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "93",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.93/32"
          },
          "flow-name": "Flow-93",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 93
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "94",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.94/32"
          },
          "flow-name": "Flow-94",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 94
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "95",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.95/32"
          },
          "flow-name": "Flow-95",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 95
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "96",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.96/32"
          },
          "flow-name": "Flow-96",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 96
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "97",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.97/32"
          },
          "flow-name": "Flow-97",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 97
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "98",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.98/32"
          },
          "flow-name": "Flow-98",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 98
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "99",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.99/32"
          },
          "flow-name": "Flow-99",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 99
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "100",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.100/32"
          },
          "flow-name": "Flow-100",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 100
                      }
                    }
                  ]
                }
              }
            ]
          }
        }
  ]
}</msg>
<arg>${data}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:21.881146" elapsed="0.000956"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.882526" level="INFO">{'Content-Type': 'application/json'}</msg>
<arg>${content_type}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:21.882276" elapsed="0.000295"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.882960" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:21.882724" elapsed="0.000279"/>
</kw>
<kw name="Join_Two_Headers" owner="TemplatedRequests">
<kw name="Copy Dictionary" owner="Collections">
<msg time="2026-04-08T00:58:21.883821" level="INFO">${accumulator} = {'Content-Type': 'application/json'}</msg>
<var>${accumulator}</var>
<arg>${first}</arg>
<doc>Returns a copy of the given dictionary.</doc>
<status status="PASS" start="2026-04-08T00:58:21.883625" elapsed="0.000222"/>
</kw>
<kw name="Get Dictionary Items" owner="Collections">
<msg time="2026-04-08T00:58:21.884246" level="INFO">${items_to_add} = []</msg>
<var>${items_to_add}</var>
<arg>${second}</arg>
<doc>Returns items of the given ``dictionary`` as a list.</doc>
<status status="PASS" start="2026-04-08T00:58:21.884049" elapsed="0.000223"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${accumulator}</arg>
<arg>@{items_to_add}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:58:21.884424" elapsed="0.000189"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.885013" level="INFO">{'Content-Type': 'application/json'}</msg>
<arg>${accumulator}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:21.884768" elapsed="0.000289"/>
</kw>
<return>
<value>${accumulator}</value>
<status status="PASS" start="2026-04-08T00:58:21.885098" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:58:21.885267" level="INFO">${headers} = {'Content-Type': 'application/json'}</msg>
<var>${headers}</var>
<arg>first=${content_type}</arg>
<arg>second=${accept}</arg>
<doc>Take two dicts, join them, return result. Second argument values take precedence.</doc>
<status status="PASS" start="2026-04-08T00:58:21.883220" elapsed="0.002073"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="POST On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:58:21.916831" level="INFO">POST Request : url=http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A3/flow-node-inventory:table=0 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A3/flow-node-inventory:table=0 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node01s3bfo0y24i1es90l47mavglv0.node0', 'Content-Length': '76286', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body={
  "flow": [
        {
          "id": "1",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.1/32"
          },
          "flow-name": "Flow-1",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 1
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "2",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.2/32"
          },
          "flow-name": "Flow-2",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 2
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "3",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.3/32"
          },
          "flow-name": "Flow-3",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 3
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "4",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.4/32"
          },
          "flow-name": "Flow-4",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 4
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "5",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.5/32"
          },
          "flow-name": "Flow-5",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 5
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "6",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.6/32"
          },
          "flow-name": "Flow-6",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 6
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "7",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.7/32"
          },
          "flow-name": "Flow-7",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 7
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "8",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.8/32"
          },
          "flow-name": "Flow-8",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 8
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "9",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.9/32"
          },
          "flow-name": "Flow-9",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 9
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "10",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.10/32"
          },
          "flow-name": "Flow-10",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 10
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "11",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.11/32"
          },
          "flow-name": "Flow-11",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 11
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "12",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.12/32"
          },
          "flow-name": "Flow-12",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 12
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "13",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.13/32"
          },
          "flow-name": "Flow-13",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 13
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "id": "14",
          "priority": 100,
          "table_id": 0,
          "match": ... (set the log level to DEBUG or TRACE to see the full content) 
 </msg>
<msg time="2026-04-08T00:58:21.917224" level="INFO">POST Response : url=http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A3/flow-node-inventory:table=0 
 status=201, reason=Created 
 headers={'Location': 'http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A3/flow-node-inventory:table=0/flow=69', 'Content-Length': '0'} 
 body=None 
 </msg>
<msg time="2026-04-08T00:58:21.917469" level="INFO">${response} = &lt;Response [201]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:58:21.887638" elapsed="0.029889"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:21.885587" elapsed="0.032043"/>
</branch>
<branch type="ELSE">
<kw name="POST On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:21.918038" elapsed="0.000049"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:21.917690" elapsed="0.000532"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.885409" elapsed="0.032863"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.925503" level="INFO"/>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:21.920647" elapsed="0.004900"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:21.920118" elapsed="0.005463"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.920075" elapsed="0.005531"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.928271" level="INFO">201</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:21.925887" elapsed="0.002431"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:21.925662" elapsed="0.002690"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.925645" elapsed="0.002732"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.928931" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:21.928551" elapsed="0.000407"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:21.929285" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:21.929027" elapsed="0.000316"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.929832" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:58:21.929532" elapsed="0.000327"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:21.929367" elapsed="0.000527"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.929009" elapsed="0.000906"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.930454" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:21.930077" elapsed="0.000404"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:21.930787" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:21.930551" elapsed="0.000292"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.931369" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:58:21.931040" elapsed="0.000355"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:21.930866" elapsed="0.000564"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.930533" elapsed="0.000919"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:58:21.931604" elapsed="0.000344"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T00:58:21.932458" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:21.932179" elapsed="0.000305"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T00:58:21.932642" elapsed="0.002217"/>
</kw>
<arg>${response}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T00:58:21.919071" elapsed="0.015851"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T00:58:21.935102" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:58:21.934995" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.934977" elapsed="0.000207"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T00:58:21.937628" level="INFO">${text_normalized} = </msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T00:58:21.935334" elapsed="0.002321"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T00:58:21.937702" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:58:21.937857" level="INFO">${response_text} = </msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>data=${data}</arg>
<arg>content_type=${content_type}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>POST data to given URI, check status code and return response text.
${content_type} and ${accept} are mandatory Python objects with headers to use.
If ${normalize_json}, normalize text before returning.</doc>
<status status="PASS" start="2026-04-08T00:58:21.879731" elapsed="0.058152"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:58:21.937994" elapsed="0.000027"/>
</return>
<msg time="2026-04-08T00:58:21.938147" level="INFO">${response_text} = </msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>extension=json</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>content_type=${HEADERS_YANG_JSON}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>endline=${\n}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve URI and data from folder, call Post_To_Uri, return response text.</doc>
<status status="PASS" start="2026-04-08T00:58:21.478770" elapsed="0.459417"/>
</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=response</arg>
<arg>mapping=${mapping}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:21.938533" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:21.938294" elapsed="0.000307"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.938276" elapsed="0.000348"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T00:58:21.938657" elapsed="0.000025"/>
</return>
<arg>folder=${VAR_DIR}/add-flow</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<arg>iterations=${iter}</arg>
<doc>Add arguments sensible for JSON data, return Post_Templated response text.
Optionally, verification against response.json (no iteration) is called.
Only subset of JSON data is verified and returned if JMES path is specified in
file ${folder}/jmespath.expr.
Response status code must be one of values from ${explicit_status_codes} if specified or one of set
created from all positive HTTP status codes together with ${additional_allowed_status_codes}.</doc>
<status status="PASS" start="2026-04-08T00:58:21.476150" elapsed="0.462629"/>
</kw>
<var name="${switch}">3</var>
<status status="PASS" start="2026-04-08T00:58:20.454918" elapsed="1.483906"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="PASS" start="2026-04-08T00:58:17.503800" elapsed="4.435058"/>
</for>
<arg>${ITER}</arg>
<doc>Add 100 groups type 1 &amp; 2 and flows in every switch.</doc>
<status status="PASS" start="2026-04-08T00:58:17.502372" elapsed="4.436544"/>
</kw>
<doc>Add 100 groups 1&amp;2 and flows in every switch.</doc>
<status status="PASS" start="2026-04-08T00:58:17.216404" elapsed="4.722627"/>
</test>
<test id="s1-s4-t2" name="Start Mininet Multiple Connections" line="32">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-08T00:58:21.942148" elapsed="0.000235"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-08T00:58:21.941884" elapsed="0.000554"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:58:21.943433" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:58:21.943325" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.943307" elapsed="0.000193"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:58:21.948603" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:58:21.948496" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.948478" elapsed="0.000190"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.949663" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:58:21.949284" elapsed="0.000405"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:58:21.950148" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:58:21.949849" elapsed="0.000340"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:58:21.950234" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:58:21.950388" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:58:21.948895" elapsed="0.001518"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:58:21.955675" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:58:21.955569" elapsed="0.000150"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.955550" elapsed="0.000191"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:58:21.956925" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:58:21.956819" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:21.956801" elapsed="0.000192"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:58:21.957460" level="INFO">${karaf_connection_index} = 476</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:58:21.957139" elapsed="0.000348"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:58:21.957877" level="INFO">${current_connection_index} = None</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:58:21.957649" elapsed="0.000255"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T00:58:21.988829" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T00:58:21.958471" elapsed="0.030458"/>
</kw>
<msg time="2026-04-08T00:58:21.989096" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T00:58:21.989143" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:58:21.958111" elapsed="0.031089"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T00:58:22.023660" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "S "t "a "r "t "[C "M "i "n "i "n "e "t "[C "M "u "l "t "i "p "l "e "[C "C "o "n "n "e "c "t "i "o "n "s "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T00:58:21.989718" elapsed="0.034055"/>
</kw>
<msg time="2026-04-08T00:58:22.023933" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T00:58:22.023980" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "S "t "a "r "t "[C "M "i "n "i "n "e...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:58:21.989376" elapsed="0.034641"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:22.024369" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:22.024111" elapsed="0.000314"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:22.024077" elapsed="0.000372"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:22.024895" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "S "t "a "r "t "[C "M "i "n "i "n "e "t "[C "M "u "l "t "i "p "l "e "[C "C "o "n "n "e "c "t "i "o "n "s "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:22.024592" elapsed="0.000378"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:22.025280" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:22.025038" elapsed="0.000297"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:22.025020" elapsed="0.000339"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T00:58:22.025393" elapsed="0.000029"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:58:22.026840" elapsed="0.000817"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:58:22.027933" elapsed="0.000639"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:58:22.028839" elapsed="0.000375"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:58:22.026228" elapsed="0.003088"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T00:58:22.025675" elapsed="0.003703"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T00:58:21.956518" elapsed="0.072959"/>
</kw>
<msg time="2026-04-08T00:58:22.029569" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:58:22.029612" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "S "t "a "r "t "[C "M "i "n "i "n "e...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:58:21.955892" elapsed="0.073757"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T00:58:22.029832" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-08T00:58:22.029726" elapsed="0.000164"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:22.029707" elapsed="0.000206"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:22.030325" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:22.030656" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T00:58:22.030726" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T00:58:21.955236" elapsed="0.075594"/>
</kw>
<msg time="2026-04-08T00:58:22.030922" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:58:22.030965" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "S "t "a "r "t "[C "M "i "n "i "n "e...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:58:21.950782" elapsed="0.080219"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:22.031428" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:22.031168" elapsed="0.000314"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:22.031137" elapsed="0.000368"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T00:58:21.950634" elapsed="0.080895"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:58:22.036861" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:58:22.036753" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:22.036734" elapsed="0.000193"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:58:22.038193" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:58:22.038065" elapsed="0.000176"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:22.038047" elapsed="0.000215"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:58:22.038701" level="INFO">${karaf_connection_index} = 478</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:58:22.038408" elapsed="0.000319"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:58:22.039103" level="INFO">${current_connection_index} = None</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:58:22.038886" elapsed="0.000243"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T00:58:22.069450" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T00:58:22.039648" elapsed="0.030037"/>
</kw>
<msg time="2026-04-08T00:58:22.069973" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T00:58:22.070043" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:58:22.039313" elapsed="0.030787"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T00:58:22.103032" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "S "t "a "r "t "[C "M "i "n "i "n "e "t "[C "M "u "l "t "i "p "l "e "[C "C "o "n "n "e "c "t "i "o "n "s "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T00:58:22.071043" elapsed="0.032226"/>
</kw>
<msg time="2026-04-08T00:58:22.103506" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T00:58:22.103557" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "S "t "a "r "t "[C "M "i "n "i "n "e...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:58:22.070463" elapsed="0.033133"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:22.104055" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:22.103715" elapsed="0.000400"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:22.103681" elapsed="0.000460"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:22.104891" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "S "t "a "r "t "[C "M "i "n "i "n "e "t "[C "M "u "l "t "i "p "l "e "[C "C "o "n "n "e "c "t "i "o "n "s "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:22.104368" elapsed="0.000627"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:22.105452" elapsed="0.000032"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:22.105086" elapsed="0.000444"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:22.105061" elapsed="0.000504"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T00:58:22.105618" elapsed="0.000051"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:58:22.107522" elapsed="0.000864"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:58:22.108674" elapsed="0.000469"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:58:22.109459" elapsed="0.000512"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:58:22.106818" elapsed="0.003294"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T00:58:22.106063" elapsed="0.004171"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T00:58:22.037765" elapsed="0.072685"/>
</kw>
<msg time="2026-04-08T00:58:22.110575" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:58:22.110623" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "S "t "a "r "t "[C "M "i "n "i "n "e...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:58:22.037086" elapsed="0.073577"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T00:58:22.110866" elapsed="0.000030"/>
</return>
<status status="PASS" start="2026-04-08T00:58:22.110749" elapsed="0.000183"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:22.110728" elapsed="0.000237"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 2,
close the previous connection. In any case create a new connection
to karaf console for 2, set correct prompt set and login to karaf console.
Store connection index for 2 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:22.111435" elapsed="0.000027"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:22.112030" elapsed="0.000026"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T00:58:22.112108" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T00:58:22.036416" elapsed="0.075911"/>
</kw>
<msg time="2026-04-08T00:58:22.112467" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:58:22.112529" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "S "t "a "r "t "[C "M "i "n "i "n "e...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:58:22.031793" elapsed="0.080789"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:22.113031" elapsed="0.000027"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:22.112691" elapsed="0.000408"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:22.112666" elapsed="0.000464"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T00:58:22.031651" elapsed="0.081601"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:58:22.119059" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:58:22.118940" elapsed="0.000169"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:22.118919" elapsed="0.000213"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:58:22.120411" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:58:22.120286" elapsed="0.000172"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:22.120265" elapsed="0.000215"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:58:22.120948" level="INFO">${karaf_connection_index} = 480</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:58:22.120631" elapsed="0.000346"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:58:22.121407" level="INFO">${current_connection_index} = None</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:58:22.121145" elapsed="0.000289"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T00:58:22.162181" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T00:58:22.121952" elapsed="0.040486"/>
</kw>
<msg time="2026-04-08T00:58:22.162663" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T00:58:22.162714" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:58:22.121602" elapsed="0.041149"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T00:58:22.206071" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "S "t "a "r "t "[C "M "i "n "i "n "e "t "[C "M "u "l "t "i "p "l "e "[C "C "o "n "n "e "c "t "i "o "n "s "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T00:58:22.163479" elapsed="0.042724"/>
</kw>
<msg time="2026-04-08T00:58:22.206367" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T00:58:22.206414" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "S "t "a "r "t "[C "M "i "n "i "n "e...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:58:22.163002" elapsed="0.043449"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:22.206815" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:22.206551" elapsed="0.000320"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:22.206522" elapsed="0.000447"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:22.207476" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "S "t "a "r "t "[C "M "i "n "i "n "e "t "[C "M "u "l "t "i "p "l "e "[C "C "o "n "n "e "c "t "i "o "n "s "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:22.207131" elapsed="0.000422"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:22.207848" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:22.207623" elapsed="0.000280"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:22.207604" elapsed="0.000323"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T00:58:22.207965" elapsed="0.000037"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:58:22.209568" elapsed="0.000792"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:58:22.210642" elapsed="0.000467"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:58:22.211412" elapsed="0.000360"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:58:22.208904" elapsed="0.002969"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T00:58:22.208303" elapsed="0.003634"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T00:58:22.119922" elapsed="0.092115"/>
</kw>
<msg time="2026-04-08T00:58:22.212132" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:58:22.212199" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "S "t "a "r "t "[C "M "i "n "i "n "e...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:58:22.119318" elapsed="0.092920"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T00:58:22.212475" elapsed="0.000028"/>
</return>
<status status="PASS" start="2026-04-08T00:58:22.212317" elapsed="0.000220"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:22.212298" elapsed="0.000263"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 3,
close the previous connection. In any case create a new connection
to karaf console for 3, set correct prompt set and login to karaf console.
Store connection index for 3 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:22.212963" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:22.213320" elapsed="0.000026"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T00:58:22.213393" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T00:58:22.118554" elapsed="0.094947"/>
</kw>
<msg time="2026-04-08T00:58:22.213600" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:58:22.213645" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "S "t "a "r "t "[C "M "i "n "i "n "e...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:58:22.113596" elapsed="0.100087"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:22.214023" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:22.213761" elapsed="0.000315"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:22.213744" elapsed="0.000356"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T00:58:22.113442" elapsed="0.100681"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-08T00:58:21.950466" elapsed="0.263706"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-08T00:58:21.948116" elapsed="0.266118"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-08T00:58:21.943017" elapsed="0.271276"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:58:21.942590" elapsed="0.271755"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-08T00:58:21.939782" elapsed="0.274619"/>
</kw>
<kw name="List_All_Indices" owner="ClusterManagement">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:58:22.218115" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:58:22.217731" elapsed="0.000411"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:58:22.218666" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:58:22.218358" elapsed="0.000335"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:58:22.218737" elapsed="0.000029"/>
</return>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:58:22.215313" elapsed="0.003548"/>
</kw>
<msg time="2026-04-08T00:58:22.218899" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>List_Indices_Or_All</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:58:22.214896" elapsed="0.004051"/>
</kw>
<msg time="2026-04-08T00:58:22.219044" level="INFO">${cluster_index_list} = [1, 2, 3]</msg>
<var>${cluster_index_list}</var>
<doc>Create a new list of all indices.</doc>
<status status="PASS" start="2026-04-08T00:58:22.214614" elapsed="0.004455"/>
</kw>
<kw name="Start Mininet Multiple Controllers" owner="MininetKeywords">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:58:22.226694" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:58:22.226319" elapsed="0.000402"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:58:22.227199" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:58:22.226883" elapsed="0.000343"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:58:22.227270" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:58:22.227422" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${controller_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:58:22.225923" elapsed="0.001523"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:22.227846" level="INFO">Clear any existing mininet</msg>
<arg>Clear any existing mininet</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:22.227621" elapsed="0.000269"/>
</kw>
<kw name="Clean Mininet System" owner="Utils">
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:22.230453" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:22.230172" elapsed="0.000338"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:22.230140" elapsed="0.000393"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:58:22.230833" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T00:58:22.230683" elapsed="0.000278"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:22.231511" level="INFO">Attempting to execute command "sudo mn -c" on remote system "10.30.170.192" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:22.231115" elapsed="0.000441"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:58:22.232073" level="INFO">${conn_id} = 491</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:58:22.231714" elapsed="0.000385"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T00:58:22.233050" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T00:58:22.233126" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T00:58:22.232777" elapsed="0.000372"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:58:22.233325" elapsed="0.000471"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T00:58:22.234669" level="INFO">Logging into '10.30.170.192:22' as 'jenkins'.</msg>
<msg time="2026-04-08T00:58:22.566980" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 00:58:03 UTC 2026

  System load:  0.0                Processes:             107
  Usage of /:   19.5% of 38.58GB   Users logged in:       0
  Memory usage: 5%                 IPv4 address for ens3: 10.30.170.192
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 00:58:13 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-1-mininet-ovs-217-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T00:58:22.234353" elapsed="0.332730"/>
</kw>
<msg time="2026-04-08T00:58:22.567148" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:58:22.233971" elapsed="0.333323"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T00:58:22.232331" elapsed="0.335058"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T00:58:22.567802" level="INFO">Executing command 'sudo mn -c'.</msg>
<msg time="2026-04-08T00:58:23.757843" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-08T00:58:23.758541" level="INFO">${stdout} = </msg>
<msg time="2026-04-08T00:58:23.758661" level="INFO">${stderr} = *** Removing excess controllers/ofprotocols/ofdatapaths/pings/noxes
killall controller ofprotocol ofdatapath ping nox_corelt-nox_core ovs-openflowd ovs-controllerovs-testcontroller udpbwtest mnexec iv...</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T00:58:22.567597" elapsed="1.191127"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:58:23.759293" elapsed="0.000676"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:23.761211" level="INFO">*** Removing excess controllers/ofprotocols/ofdatapaths/pings/noxes
killall controller ofprotocol ofdatapath ping nox_corelt-nox_core ovs-openflowd ovs-controllerovs-testcontroller udpbwtest mnexec ivs ryu-manager 2&gt; /dev/null
killall -9 controller ofprotocol ofdatapath ping nox_corelt-nox_core ovs-openflowd ovs-controllerovs-testcontroller udpbwtest mnexec ivs ryu-manager 2&gt; /dev/null
pkill -9 -f "sudo mnexec"
*** Removing junk from /tmp
rm -f /tmp/vconn* /tmp/vlogs* /tmp/*.out /tmp/*.log
*** Removing old X11 tunnels
*** Removing excess kernel datapaths
ps ax | egrep -o 'dp[0-9]+' | sed 's/dp/nl:/'
***  Removing OVS datapaths
ovs-vsctl --timeout=1 list-br
ovs-vsctl --timeout=1 list-br
*** Removing all links of the pattern foo-ethX
ip link show | egrep -o '([-_.[:alnum:]]+-eth[[:digit:]]+)'
ip link show
*** Killing stale mininet node processes
pkill -9 -f mininet:
*** Shutting down stale tunnels
pkill -9 -f Tunnel=Ethernet
pkill -9 -f .ssh/mn
rm -f ~/.ssh/mn/*
*** Cleanup complete.</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:23.760486" elapsed="0.000860"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:58:23.761862" elapsed="0.000039"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:58:23.761538" elapsed="0.000441"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:23.761480" elapsed="0.000554"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T00:58:23.762539" elapsed="0.000074"/>
</return>
<status status="PASS" start="2026-04-08T00:58:23.762253" elapsed="0.000441"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:23.762126" elapsed="0.000624"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:58:23.762832" elapsed="0.000033"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:58:23.766922" elapsed="0.000493"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:58:23.767656" elapsed="0.000229"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:58:23.768098" elapsed="0.000167"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:58:23.763449" elapsed="0.004894"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T00:58:22.229640" elapsed="1.538835"/>
</kw>
<msg time="2026-04-08T00:58:23.768551" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:58:22.229072" elapsed="1.539555"/>
</kw>
<arg>${system}</arg>
<arg>sudo mn -c</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-08T00:58:22.228589" elapsed="1.540151"/>
</kw>
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:23.771581" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:23.771282" elapsed="0.000357"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:23.771263" elapsed="0.000399"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:58:23.771963" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T00:58:23.771821" elapsed="0.000275"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:23.772653" level="INFO">Attempting to execute command "sudo ps -elf | egrep 'usr/local/bin/mn' | egrep python | awk '{print "sudo kill -9",$4}' | sh" on remote system "10.30.170.192" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:23.772264" elapsed="0.000436"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:58:23.773351" level="INFO">${conn_id} = 493</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:58:23.772953" elapsed="0.000425"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T00:58:23.774548" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T00:58:23.774649" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T00:58:23.774237" elapsed="0.000444"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:58:23.774878" elapsed="0.000414"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T00:58:23.776233" level="INFO">Logging into '10.30.170.192:22' as 'jenkins'.</msg>
<msg time="2026-04-08T00:58:24.124353" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 00:58:03 UTC 2026

  System load:  0.0                Processes:             107
  Usage of /:   19.5% of 38.58GB   Users logged in:       0
  Memory usage: 5%                 IPv4 address for ens3: 10.30.170.192
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 00:58:22 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-1-mininet-ovs-217-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T00:58:23.775857" elapsed="0.348685"/>
</kw>
<msg time="2026-04-08T00:58:24.124636" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:58:23.775471" elapsed="0.349263"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T00:58:23.773600" elapsed="0.351262"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T00:58:24.125459" level="INFO">Executing command 'sudo ps -elf | egrep 'usr/local/bin/mn' | egrep python | awk '{print "sudo kill -9",$4}' | sh'.</msg>
<msg time="2026-04-08T00:58:24.168513" level="INFO">Command exited with return code -1.</msg>
<msg time="2026-04-08T00:58:24.168779" level="INFO">${stdout} = </msg>
<msg time="2026-04-08T00:58:24.168877" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T00:58:24.125148" elapsed="0.043779"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:58:24.169799" elapsed="0.000524"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:24.171477" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:24.170808" elapsed="0.000765"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:58:24.172061" elapsed="0.000036"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:58:24.171756" elapsed="0.000450"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:24.171701" elapsed="0.000560"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T00:58:24.172621" elapsed="0.000062"/>
</return>
<status status="PASS" start="2026-04-08T00:58:24.172385" elapsed="0.000368"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:24.172348" elapsed="0.000458"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:58:24.172881" elapsed="0.000031"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:58:24.179151" elapsed="0.000384"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:58:24.179712" elapsed="0.000164"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:58:24.180026" elapsed="0.000096"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:58:24.173673" elapsed="0.006523"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T00:58:23.770562" elapsed="0.409732"/>
</kw>
<msg time="2026-04-08T00:58:24.180349" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:58:23.769713" elapsed="0.410690"/>
</kw>
<arg>${system}</arg>
<arg>sudo ps -elf | egrep 'usr/local/bin/mn' | egrep python | awk '{print "sudo kill -9",$4}' | sh</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-08T00:58:23.768990" elapsed="0.411496"/>
</kw>
<arg>${mininet}</arg>
<status status="PASS" start="2026-04-08T00:58:22.228089" elapsed="1.952456"/>
</kw>
<kw name="Open_Connection_To_Tools_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:58:24.185653" level="INFO">${tools_connection} = 495</msg>
<var>${tools_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:58:24.185214" elapsed="0.000466"/>
</kw>
<kw name="Flexible_Mininet_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T00:58:24.187739" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T00:58:24.187818" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T00:58:24.187228" elapsed="0.000614"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:58:24.188004" elapsed="0.000341"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T00:58:24.189209" level="INFO">Logging into '10.30.170.192:22' as 'jenkins'.</msg>
<msg time="2026-04-08T00:58:24.514348" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 00:58:03 UTC 2026

  System load:  0.0                Processes:             107
  Usage of /:   19.5% of 38.58GB   Users logged in:       0
  Memory usage: 5%                 IPv4 address for ens3: 10.30.170.192
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 00:58:24 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-1-mininet-ovs-217-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T00:58:24.188879" elapsed="0.325721"/>
</kw>
<msg time="2026-04-08T00:58:24.514754" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:58:24.188519" elapsed="0.326388"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T00:58:24.186727" elapsed="0.328487"/>
</kw>
<msg time="2026-04-08T00:58:24.515332" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:58:24.186303" elapsed="0.329131"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-08T00:58:24.185862" elapsed="0.329737"/>
</kw>
<return>
<value>${tools_connection}</value>
<status status="PASS" start="2026-04-08T00:58:24.515699" elapsed="0.000079"/>
</return>
<msg time="2026-04-08T00:58:24.516108" level="INFO">${mininet_conn_id} = 495</msg>
<var>${mininet_conn_id}</var>
<arg>ip_address=${mininet}</arg>
<arg>timeout=${timeout}</arg>
<doc>Open a connection to the tools system at ${ip_address} and return its identifier.</doc>
<status status="PASS" start="2026-04-08T00:58:24.184707" elapsed="0.331478"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-08T00:58:24.517243" level="INFO">${mininet_conn_id} = 495</msg>
<arg>${mininet_conn_id}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-08T00:58:24.516598" elapsed="0.000709"/>
</kw>
<if>
<branch type="IF" condition="'${custom}' != '${EMPTY}'">
<kw name="Put File" owner="SSHLibrary">
<arg>${custom}</arg>
<doc>Uploads file(s) from the local machine to the remote machine.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:24.520778" elapsed="0.000032"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:24.517430" elapsed="0.003430"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:24.517394" elapsed="0.003503"/>
</if>
<if>
<branch type="IF" condition="'${protocol}' == 'ssl'">
<kw name="Install Certificates In Mininet" owner="MininetKeywords">
<doc>Copy and install certificates in simulator.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:24.521449" elapsed="0.000038"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:24.520979" elapsed="0.000552"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:24.520956" elapsed="0.000611"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:24.522228" level="INFO">Start mininet --topo linear,3</msg>
<arg>Start mininet ${options}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:24.521811" elapsed="0.000485"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T00:58:24.524199" level="INFO">sudo mn --topo linear,3</msg>
<arg>sudo mn ${options}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T00:58:24.522535" elapsed="0.001761"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-08T00:58:24.735222" level="INFO">[?2004l*** No default OpenFlow controller found for default switch!
*** Falling back to OVS Bridge
*** Creating network
*** Adding controller
*** Adding hosts:
h1 h2 h3 
*** Adding switches:
s1 s2 s3 
*** Adding links:
(h1, s1) (h2, s2) (h3, s3) (s2, s1) (s3, s2) 
*** Configuring hosts
h1 h2 h3 
*** Starting controller

*** Starting 3 switches
s1 s2 s3 ...
*** Starting CLI:
mininet&gt;</msg>
<arg>mininet&gt;</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-08T00:58:24.524531" elapsed="0.210879"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:24.736120" level="INFO">Create controller configuration</msg>
<arg>Create controller configuration</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:24.735762" elapsed="0.000421"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:58:24.736645" level="INFO">${controller_opt} = </msg>
<var>${controller_opt}</var>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:58:24.736370" elapsed="0.000301"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:58:24.737548" level="INFO">${controller_opt} =   tcp:10.30.170.48:6633</msg>
<var>${controller_opt}</var>
<arg>${controller_opt}</arg>
<arg>${SPACE}${protocol}:${ODL_SYSTEM_${index}_IP}:${ofport}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:58:24.737075" elapsed="0.000507"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:24.738024" level="INFO">  tcp:10.30.170.48:6633</msg>
<arg>${controller_opt}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:24.737777" elapsed="0.000378"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T00:58:24.736917" elapsed="0.001289"/>
</iter>
<iter>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:58:24.738897" level="INFO">${controller_opt} =   tcp:10.30.170.48:6633  tcp:10.30.170.131:6633</msg>
<var>${controller_opt}</var>
<arg>${controller_opt}</arg>
<arg>${SPACE}${protocol}:${ODL_SYSTEM_${index}_IP}:${ofport}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:58:24.738451" elapsed="0.000473"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:24.739394" level="INFO">  tcp:10.30.170.48:6633  tcp:10.30.170.131:6633</msg>
<arg>${controller_opt}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:24.739096" elapsed="0.000343"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T00:58:24.738301" elapsed="0.001171"/>
</iter>
<iter>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:58:24.740148" level="INFO">${controller_opt} =   tcp:10.30.170.48:6633  tcp:10.30.170.131:6633  tcp:10.30.171.110:6633</msg>
<var>${controller_opt}</var>
<arg>${controller_opt}</arg>
<arg>${SPACE}${protocol}:${ODL_SYSTEM_${index}_IP}:${ofport}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:58:24.739717" elapsed="0.000475"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:24.740630" level="INFO">  tcp:10.30.170.48:6633  tcp:10.30.170.131:6633  tcp:10.30.171.110:6633</msg>
<arg>${controller_opt}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:24.740367" elapsed="0.000308"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T00:58:24.739566" elapsed="0.001142"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-08T00:58:24.736736" elapsed="0.004001"/>
</for>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:24.741116" level="INFO">Open extra SSH connection to configure the OVS bridges</msg>
<arg>Open extra SSH connection to configure the OVS bridges</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:24.740909" elapsed="0.000266"/>
</kw>
<kw name="Open_Connection_To_Tools_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:58:24.747118" level="INFO">${tools_connection} = 496</msg>
<var>${tools_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:58:24.746722" elapsed="0.000424"/>
</kw>
<kw name="Flexible_Mininet_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T00:58:24.748993" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T00:58:24.749069" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T00:58:24.748705" elapsed="0.000387"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:58:24.749444" elapsed="0.000380"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T00:58:24.750710" level="INFO">Logging into '10.30.170.192:22' as 'jenkins'.</msg>
<msg time="2026-04-08T00:58:25.126754" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 00:58:03 UTC 2026

  System load:  0.0                Processes:             107
  Usage of /:   19.5% of 38.58GB   Users logged in:       0
  Memory usage: 5%                 IPv4 address for ens3: 10.30.170.192
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 00:58:24 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-1-mininet-ovs-217-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T00:58:24.750381" elapsed="0.376540"/>
</kw>
<msg time="2026-04-08T00:58:25.127013" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:58:24.749996" elapsed="0.377108"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T00:58:24.748212" elapsed="0.379047"/>
</kw>
<msg time="2026-04-08T00:58:25.127314" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:58:24.747788" elapsed="0.379598"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-08T00:58:24.747389" elapsed="0.380098"/>
</kw>
<return>
<value>${tools_connection}</value>
<status status="PASS" start="2026-04-08T00:58:25.127545" elapsed="0.000045"/>
</return>
<arg>ip_address=${mininet}</arg>
<arg>timeout=${timeout}</arg>
<doc>Open a connection to the tools system at ${ip_address} and return its identifier.</doc>
<status status="PASS" start="2026-04-08T00:58:24.746172" elapsed="0.381562"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T00:58:25.128154" level="INFO">Executing command 'sudo ovs-vsctl show | grep Bridge | wc -l'.</msg>
<msg time="2026-04-08T00:58:25.150627" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-08T00:58:25.150858" level="INFO">${num_bridges} = 3</msg>
<var>${num_bridges}</var>
<arg>sudo ovs-vsctl show | grep Bridge | wc -l</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T00:58:25.128000" elapsed="0.022913"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:58:25.152304" level="INFO">${num_bridges} = 3</msg>
<var>${num_bridges}</var>
<arg>${num_bridges}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:58:25.151455" elapsed="0.000908"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:58:25.153342" level="INFO">${bridges} = []</msg>
<var>${bridges}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:58:25.152761" elapsed="0.000639"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T00:58:25.161475" level="INFO">Executing command 'sudo ovs-vsctl show | grep Bridge | cut -c 12- | sort | head -1 | tail -1'.</msg>
<msg time="2026-04-08T00:58:25.212759" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-08T00:58:25.213052" level="INFO">${bridge} = s1</msg>
<var>${bridge}</var>
<arg>sudo ovs-vsctl show | grep Bridge | cut -c 12- | sort | head -${i} | tail -1</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T00:58:25.161329" elapsed="0.051779"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T00:58:25.214486" level="INFO">Executing command 'sudo ovs-vsctl del-controller s1 &amp;&amp; sudo ovs-vsctl set bridge s1 protocols=OpenFlow13'.</msg>
<msg time="2026-04-08T00:58:25.296816" level="INFO">Command exited with return code 0.</msg>
<arg>sudo ovs-vsctl del-controller ${bridge} &amp;&amp; sudo ovs-vsctl set bridge ${bridge} protocols=OpenFlow${ofversion}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T00:58:25.213781" elapsed="0.083173"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${bridges}</arg>
<arg>${bridge}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-08T00:58:25.297368" elapsed="0.000472"/>
</kw>
<var name="${i}">1</var>
<status status="PASS" start="2026-04-08T00:58:25.161146" elapsed="0.136785"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T00:58:25.298823" level="INFO">Executing command 'sudo ovs-vsctl show | grep Bridge | cut -c 12- | sort | head -2 | tail -1'.</msg>
<msg time="2026-04-08T00:58:25.357084" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-08T00:58:25.357366" level="INFO">${bridge} = s2</msg>
<var>${bridge}</var>
<arg>sudo ovs-vsctl show | grep Bridge | cut -c 12- | sort | head -${i} | tail -1</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T00:58:25.298527" elapsed="0.058894"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T00:58:25.358469" level="INFO">Executing command 'sudo ovs-vsctl del-controller s2 &amp;&amp; sudo ovs-vsctl set bridge s2 protocols=OpenFlow13'.</msg>
<msg time="2026-04-08T00:58:25.441318" level="INFO">Command exited with return code 0.</msg>
<arg>sudo ovs-vsctl del-controller ${bridge} &amp;&amp; sudo ovs-vsctl set bridge ${bridge} protocols=OpenFlow${ofversion}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T00:58:25.357808" elapsed="0.083708"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${bridges}</arg>
<arg>${bridge}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-08T00:58:25.441993" elapsed="0.000725"/>
</kw>
<var name="${i}">2</var>
<status status="PASS" start="2026-04-08T00:58:25.298201" elapsed="0.144624"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T00:58:25.443800" level="INFO">Executing command 'sudo ovs-vsctl show | grep Bridge | cut -c 12- | sort | head -3 | tail -1'.</msg>
<msg time="2026-04-08T00:58:25.500753" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-08T00:58:25.500976" level="INFO">${bridge} = s3</msg>
<var>${bridge}</var>
<arg>sudo ovs-vsctl show | grep Bridge | cut -c 12- | sort | head -${i} | tail -1</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T00:58:25.443488" elapsed="0.057543"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T00:58:25.502068" level="INFO">Executing command 'sudo ovs-vsctl del-controller s3 &amp;&amp; sudo ovs-vsctl set bridge s3 protocols=OpenFlow13'.</msg>
<msg time="2026-04-08T00:58:25.585048" level="INFO">Command exited with return code 0.</msg>
<arg>sudo ovs-vsctl del-controller ${bridge} &amp;&amp; sudo ovs-vsctl set bridge ${bridge} protocols=OpenFlow${ofversion}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T00:58:25.501448" elapsed="0.083884"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${bridges}</arg>
<arg>${bridge}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-08T00:58:25.585827" elapsed="0.000577"/>
</kw>
<var name="${i}">3</var>
<status status="PASS" start="2026-04-08T00:58:25.443077" elapsed="0.143424"/>
</iter>
<var>${i}</var>
<value>1</value>
<value>${num_bridges+1}</value>
<status status="PASS" start="2026-04-08T00:58:25.153636" elapsed="0.432943"/>
</for>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:25.587786" level="INFO">Configure OVS controllers   tcp:10.30.170.48:6633  tcp:10.30.170.131:6633  tcp:10.30.171.110:6633 in all bridges</msg>
<arg>Configure OVS controllers ${controller_opt} in all bridges</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:25.587035" elapsed="0.000857"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T00:58:25.589059" level="INFO">Executing command 'sudo ovs-vsctl set-controller s1   tcp:10.30.170.48:6633  tcp:10.30.170.131:6633  tcp:10.30.171.110:6633'.</msg>
<msg time="2026-04-08T00:58:25.655093" level="INFO">Command exited with return code 0.</msg>
<arg>sudo ovs-vsctl set-controller ${bridge} ${controller_opt}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T00:58:25.588689" elapsed="0.066649"/>
</kw>
<var name="${bridge}">s1</var>
<status status="PASS" start="2026-04-08T00:58:25.588371" elapsed="0.067107"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T00:58:25.656611" level="INFO">Executing command 'sudo ovs-vsctl set-controller s2   tcp:10.30.170.48:6633  tcp:10.30.170.131:6633  tcp:10.30.171.110:6633'.</msg>
<msg time="2026-04-08T00:58:25.712941" level="INFO">Command exited with return code 0.</msg>
<arg>sudo ovs-vsctl set-controller ${bridge} ${controller_opt}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T00:58:25.656152" elapsed="0.057057"/>
</kw>
<var name="${bridge}">s2</var>
<status status="PASS" start="2026-04-08T00:58:25.655755" elapsed="0.057564"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T00:58:25.714455" level="INFO">Executing command 'sudo ovs-vsctl set-controller s3   tcp:10.30.170.48:6633  tcp:10.30.170.131:6633  tcp:10.30.171.110:6633'.</msg>
<msg time="2026-04-08T00:58:25.818552" level="INFO">Command exited with return code 0.</msg>
<arg>sudo ovs-vsctl set-controller ${bridge} ${controller_opt}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T00:58:25.713999" elapsed="0.104722"/>
</kw>
<var name="${bridge}">s3</var>
<status status="PASS" start="2026-04-08T00:58:25.713590" elapsed="0.105199"/>
</iter>
<var>${bridge}</var>
<value>@{bridges}</value>
<status status="PASS" start="2026-04-08T00:58:25.588013" elapsed="0.230821"/>
</for>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:25.819566" level="INFO">Check OVS configuratiom</msg>
<arg>Check OVS configuratiom</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:25.819187" elapsed="0.000425"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T00:58:25.819901" level="INFO">Executing command 'sudo ovs-vsctl show'.</msg>
<msg time="2026-04-08T00:58:25.880858" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-08T00:58:25.881343" level="INFO">${output} = 9a5df812-eb49-4477-a37e-2d464c02791d
    Bridge s1
        Controller "tcp:10.30.170.131:6633"
        Controller "tcp:10.30.171.110:6633"
        Controller "tcp:10.30.170.48:6633"
        fail_mode:...</msg>
<var>${output}</var>
<arg>sudo ovs-vsctl show</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T00:58:25.819800" elapsed="0.061755"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:25.883007" level="INFO">9a5df812-eb49-4477-a37e-2d464c02791d
    Bridge s1
        Controller "tcp:10.30.170.131:6633"
        Controller "tcp:10.30.171.110:6633"
        Controller "tcp:10.30.170.48:6633"
        fail_mode: standalone
        Port s1-eth1
            Interface s1-eth1
        Port s1-eth2
            Interface s1-eth2
        Port s1
            Interface s1
                type: internal
    Bridge s3
        Controller "tcp:10.30.170.131:6633"
        Controller "tcp:10.30.171.110:6633"
        Controller "tcp:10.30.170.48:6633"
        fail_mode: standalone
        Port s3-eth2
            Interface s3-eth2
        Port s3-eth1
            Interface s3-eth1
        Port s3
            Interface s3
                type: internal
    Bridge s2
        Controller "tcp:10.30.171.110:6633"
        Controller "tcp:10.30.170.131:6633"
        Controller "tcp:10.30.170.48:6633"
        fail_mode: standalone
        Port s2-eth1
            Interface s2-eth1
        Port s2-eth2
            Interface s2-eth2
        Port s2-eth3
            Interface s2-eth3
        Port s2
            Interface s2
                type: internal
    ovs_version: "2.17.11"</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:25.882183" elapsed="0.000969"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:58:25.883547" elapsed="0.000535"/>
</kw>
<return>
<value>${mininet_conn_id}</value>
<status status="PASS" start="2026-04-08T00:58:25.884214" elapsed="0.000093"/>
</return>
<msg time="2026-04-08T00:58:25.884628" level="INFO">${mininet_conn_id} = 495</msg>
<var>${mininet_conn_id}</var>
<arg>${TOOLS_SYSTEM_IP}</arg>
<arg>${cluster_index_list}</arg>
<arg>--topo linear,${SWITCHES}</arg>
<doc>Start Mininet with custom topology and connect to list of controllers in ${controller_index_list} or all if no list is provided.</doc>
<status status="PASS" start="2026-04-08T00:58:22.223498" elapsed="3.661188"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-08T00:58:25.885856" level="INFO">${cluster_index_list} = [1, 2, 3]</msg>
<arg>${cluster_index_list}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-08T00:58:25.885083" elapsed="0.000868"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-08T00:58:25.887438" level="INFO">${mininet_conn_id} = 495</msg>
<arg>${mininet_conn_id}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-08T00:58:25.886439" elapsed="0.001135"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Check OVS OpenFlow Connections" owner="OVSDB">
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:25.904097" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:25.903787" elapsed="0.000390"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:25.903761" elapsed="0.000447"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:58:25.904544" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T00:58:25.904370" elapsed="0.000311"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:25.905241" level="INFO">Attempting to execute command "sudo ovs-vsctl show" on remote system "10.30.170.192" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:25.904835" elapsed="0.000454"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:58:25.905847" level="INFO">${conn_id} = 497</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:58:25.905452" elapsed="0.000421"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T00:58:25.907088" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T00:58:25.907182" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T00:58:25.906801" elapsed="0.000408"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:58:25.907371" elapsed="0.000328"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T00:58:25.908609" level="INFO">Logging into '10.30.170.192:22' as 'jenkins'.</msg>
<msg time="2026-04-08T00:58:26.236602" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 00:58:03 UTC 2026

  System load:  0.0                Processes:             107
  Usage of /:   19.5% of 38.58GB   Users logged in:       0
  Memory usage: 5%                 IPv4 address for ens3: 10.30.170.192
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 00:58:25 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-1-mininet-ovs-217-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T00:58:25.908247" elapsed="0.328561"/>
</kw>
<msg time="2026-04-08T00:58:26.236907" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:58:25.907871" elapsed="0.329257"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T00:58:25.906095" elapsed="0.331190"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T00:58:26.237882" level="INFO">Executing command 'sudo ovs-vsctl show'.</msg>
<msg time="2026-04-08T00:58:26.260204" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-08T00:58:26.260442" level="INFO">${stdout} = 9a5df812-eb49-4477-a37e-2d464c02791d
    Bridge s1
        Controller "tcp:10.30.170.131:6633"
        Controller "tcp:10.30.171.110:6633"
        Controller "tcp:10.30.170.48:6633"
        fail_mode:...</msg>
<msg time="2026-04-08T00:58:26.260543" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T00:58:26.237555" elapsed="0.023040"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:58:26.260992" elapsed="0.000536"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:26.262623" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:26.261962" elapsed="0.000753"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:58:26.263219" elapsed="0.000038"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:58:26.262889" elapsed="0.000443"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:26.262839" elapsed="0.000544"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T00:58:26.263764" elapsed="0.000060"/>
</return>
<status status="PASS" start="2026-04-08T00:58:26.263503" elapsed="0.000397"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:26.263468" elapsed="0.000486"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:58:26.264029" elapsed="0.000030"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:58:26.269832" elapsed="0.000349"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:58:26.270350" elapsed="0.000160"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:58:26.270658" elapsed="0.000096"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:58:26.264796" elapsed="0.006010"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T00:58:25.903207" elapsed="0.367690"/>
</kw>
<msg time="2026-04-08T00:58:26.270957" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:58:25.902555" elapsed="0.368453"/>
</kw>
<msg time="2026-04-08T00:58:26.271123" level="INFO">${output} = 9a5df812-eb49-4477-a37e-2d464c02791d
    Bridge s1
        Controller "tcp:10.30.170.131:6633"
        Controller "tcp:10.30.171.110:6633"
        Controller "tcp:10.30.170.48:6633"
        fail_mode:...</msg>
<var>${output}</var>
<arg>${tools_system}</arg>
<arg>sudo ovs-vsctl show</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-08T00:58:25.902002" elapsed="0.369148"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:26.271833" level="INFO">9a5df812-eb49-4477-a37e-2d464c02791d
    Bridge s1
        Controller "tcp:10.30.170.131:6633"
        Controller "tcp:10.30.171.110:6633"
        Controller "tcp:10.30.170.48:6633"
        fail_mode: standalone
        Port s1-eth1
            Interface s1-eth1
        Port s1-eth2
            Interface s1-eth2
        Port s1
            Interface s1
                type: internal
    Bridge s3
        Controller "tcp:10.30.170.131:6633"
        Controller "tcp:10.30.171.110:6633"
        Controller "tcp:10.30.170.48:6633"
        fail_mode: standalone
        Port s3-eth2
            Interface s3-eth2
        Port s3-eth1
            Interface s3-eth1
        Port s3
            Interface s3
                type: internal
    Bridge s2
        Controller "tcp:10.30.171.110:6633"
        Controller "tcp:10.30.170.131:6633"
        Controller "tcp:10.30.170.48:6633"
        fail_mode: standalone
        Port s2-eth1
            Interface s2-eth1
        Port s2-eth2
            Interface s2-eth2
        Port s2-eth3
            Interface s2-eth3
        Port s2
            Interface s2
                type: internal
    ovs_version: "2.17.11"</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:26.271332" elapsed="0.000556"/>
</kw>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T00:58:26.272432" level="INFO">Item found from container 0 times.</msg>
<msg time="2026-04-08T00:58:26.272549" level="FAIL">'9a5df812-eb49-4477-a37e-2d464c02791d\n    Bridge s1\n        Controller "tcp:10.30.170.131:6633"\n        Controller "tcp:10.30.171.110:6633"\n        Controller "tcp:10.30.170.48:6633"\n        fail_mode: standalone\n        Port s1-eth1\n            Interface s1-eth1\n        Port s1-eth2\n            Interface s1-eth2\n        Port s1\n            Interface s1\n                type: internal\n    Bridge s3\n        Controller "tcp:10.30.170.131:6633"\n        Controller "tcp:10.30.171.110:6633"\n        Controller "tcp:10.30.170.48:6633"\n        fail_mode: standalone\n        Port s3-eth2\n            Interface s3-eth2\n        Port s3-eth1\n            Interface s3-eth1\n        Port s3\n            Interface s3\n                type: internal\n    Bridge s2\n        Controller "tcp:10.30.171.110:6633"\n        Controller "tcp:10.30.170.131:6633"\n        Controller "tcp:10.30.170.48:6633"\n        fail_mode: standalone\n        Port s2-eth1\n            Interface s2-eth1\n        Port s2-eth2\n            Interface s2-eth2\n        Port s2-eth3\n            Interface s2-eth3\n        Port s2\n            Interface s2\n                type: internal\n    ovs_version: "2.17.11"' contains 'is_connected' 0 times, not 9 times.</msg>
<arg>${output}</arg>
<arg>is_connected</arg>
<arg>${of_connections}</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="FAIL" start="2026-04-08T00:58:26.272042" elapsed="0.000692">'9a5df812-eb49-4477-a37e-2d464c02791d\n    Bridge s1\n        Controller "tcp:10.30.170.131:6633"\n        Controller "tcp:10.30.171.110:6633"\n        Controller "tcp:10.30.170.48:6633"\n        fail_mode: standalone\n        Port s1-eth1\n            Interface s1-eth1\n        Port s1-eth2\n            Interface s1-eth2\n        Port s1\n            Interface s1\n                type: internal\n    Bridge s3\n        Controller "tcp:10.30.170.131:6633"\n        Controller "tcp:10.30.171.110:6633"\n        Controller "tcp:10.30.170.48:6633"\n        fail_mode: standalone\n        Port s3-eth2\n            Interface s3-eth2\n        Port s3-eth1\n            Interface s3-eth1\n        Port s3\n            Interface s3\n                type: internal\n    Bridge s2\n        Controller "tcp:10.30.171.110:6633"\n        Controller "tcp:10.30.170.131:6633"\n        Controller "tcp:10.30.170.48:6633"\n        fail_mode: standalone\n        Port s2-eth1\n            Interface s2-eth1\n        Port s2-eth2\n            Interface s2-eth2\n        Port s2-eth3\n            Interface s2-eth3\n        Port s2\n            Interface s2\n                type: internal\n    ovs_version: "2.17.11"' contains 'is_connected' 0 times, not 9 times.</status>
</kw>
<arg>${TOOLS_SYSTEM_IP}</arg>
<arg>${SWITCHES*3}</arg>
<doc>Check OVS instance with IP ${tools_system} has ${of_connections} OpenFlow connections.</doc>
<status status="FAIL" start="2026-04-08T00:58:25.899456" elapsed="0.373412">'9a5df812-eb49-4477-a37e-2d464c02791d\n    Bridge s1\n        Controller "tcp:10.30.170.131:6633"\n        Controller "tcp:10.30.171.110:6633"\n        Controller "tcp:10.30.170.48:6633"\n        fail_mode: standalone\n        Port s1-eth1\n            Interface s1-eth1\n        Port s1-eth2\n            Interface s1-eth2\n        Port s1\n            Interface s1\n                type: internal\n    Bridge s3\n        Controller "tcp:10.30.170.131:6633"\n        Controller "tcp:10.30.171.110:6633"\n        Controller "tcp:10.30.170.48:6633"\n        fail_mode: standalone\n        Port s3-eth2\n            Interface s3-eth2\n        Port s3-eth1\n            Interface s3-eth1\n        Port s3\n            Interface s3\n                type: internal\n    Bridge s2\n        Controller "tcp:10.30.171.110:6633"\n        Controller "tcp:10.30.170.131:6633"\n        Controller "tcp:10.30.170.48:6633"\n        fail_mode: standalone\n        Port s2-eth1\n            Interface s2-eth1\n        Port s2-eth2\n            Interface s2-eth2\n        Port s2-eth3\n            Interface s2-eth3\n        Port s2\n            Interface s2\n                type: internal\n    ovs_version: "2.17.11"' contains 'is_connected' 0 times, not 9 times.</status>
</kw>
<kw name="Check OVS OpenFlow Connections" owner="OVSDB">
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:27.292543" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:27.292235" elapsed="0.000378"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:27.292209" elapsed="0.000430"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:58:27.292957" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T00:58:27.292791" elapsed="0.000306"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:27.293655" level="INFO">Attempting to execute command "sudo ovs-vsctl show" on remote system "10.30.170.192" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:27.293267" elapsed="0.000435"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:58:27.294240" level="INFO">${conn_id} = 499</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:58:27.293859" elapsed="0.000407"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T00:58:27.295149" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T00:58:27.295242" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T00:58:27.294874" elapsed="0.000391"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:58:27.295435" elapsed="0.000320"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T00:58:27.296618" level="INFO">Logging into '10.30.170.192:22' as 'jenkins'.</msg>
<msg time="2026-04-08T00:58:27.629171" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 00:58:03 UTC 2026

  System load:  0.0                Processes:             107
  Usage of /:   19.5% of 38.58GB   Users logged in:       0
  Memory usage: 5%                 IPv4 address for ens3: 10.30.170.192
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 00:58:26 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-1-mininet-ovs-217-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T00:58:27.296305" elapsed="0.333024"/>
</kw>
<msg time="2026-04-08T00:58:27.629413" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:58:27.295926" elapsed="0.333571"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T00:58:27.294482" elapsed="0.335234"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T00:58:27.630264" level="INFO">Executing command 'sudo ovs-vsctl show'.</msg>
<msg time="2026-04-08T00:58:27.693512" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-08T00:58:27.693771" level="INFO">${stdout} = 9a5df812-eb49-4477-a37e-2d464c02791d
    Bridge s1
        Controller "tcp:10.30.170.131:6633"
        Controller "tcp:10.30.171.110:6633"
        Controller "tcp:10.30.170.48:6633"
        fail_mode:...</msg>
<msg time="2026-04-08T00:58:27.693872" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T00:58:27.629965" elapsed="0.063959"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:58:27.694350" elapsed="0.000480"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:27.695917" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:27.695307" elapsed="0.000705"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:58:27.696512" elapsed="0.000036"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:58:27.696215" elapsed="0.000403"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:27.696135" elapsed="0.000533"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T00:58:27.697020" elapsed="0.000063"/>
</return>
<status status="PASS" start="2026-04-08T00:58:27.696788" elapsed="0.000397"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:27.696753" elapsed="0.000491"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:58:27.697321" elapsed="0.000032"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:58:27.703870" elapsed="0.000509"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:58:27.704622" elapsed="0.000223"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:58:27.705057" elapsed="0.000157"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:58:27.698446" elapsed="0.006843"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T00:58:27.291666" elapsed="0.413751"/>
</kw>
<msg time="2026-04-08T00:58:27.705500" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:58:27.290979" elapsed="0.414590"/>
</kw>
<msg time="2026-04-08T00:58:27.705723" level="INFO">${output} = 9a5df812-eb49-4477-a37e-2d464c02791d
    Bridge s1
        Controller "tcp:10.30.170.131:6633"
        Controller "tcp:10.30.171.110:6633"
        Controller "tcp:10.30.170.48:6633"
        fail_mode:...</msg>
<var>${output}</var>
<arg>${tools_system}</arg>
<arg>sudo ovs-vsctl show</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-08T00:58:27.290456" elapsed="0.415304"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:27.706365" level="INFO">9a5df812-eb49-4477-a37e-2d464c02791d
    Bridge s1
        Controller "tcp:10.30.170.131:6633"
        Controller "tcp:10.30.171.110:6633"
        Controller "tcp:10.30.170.48:6633"
        fail_mode: standalone
        Port s1-eth1
            Interface s1-eth1
        Port s1-eth2
            Interface s1-eth2
        Port s1
            Interface s1
                type: internal
    Bridge s3
        Controller "tcp:10.30.170.131:6633"
        Controller "tcp:10.30.171.110:6633"
        Controller "tcp:10.30.170.48:6633"
        fail_mode: standalone
        Port s3-eth2
            Interface s3-eth2
        Port s3-eth1
            Interface s3-eth1
        Port s3
            Interface s3
                type: internal
    Bridge s2
        Controller "tcp:10.30.171.110:6633"
        Controller "tcp:10.30.170.131:6633"
        Controller "tcp:10.30.170.48:6633"
        fail_mode: standalone
        Port s2-eth1
            Interface s2-eth1
        Port s2-eth2
            Interface s2-eth2
        Port s2-eth3
            Interface s2-eth3
        Port s2
            Interface s2
                type: internal
    ovs_version: "2.17.11"</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:27.705997" elapsed="0.000442"/>
</kw>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T00:58:27.707116" level="INFO">Item found from container 0 times.</msg>
<msg time="2026-04-08T00:58:27.707307" level="FAIL">'9a5df812-eb49-4477-a37e-2d464c02791d\n    Bridge s1\n        Controller "tcp:10.30.170.131:6633"\n        Controller "tcp:10.30.171.110:6633"\n        Controller "tcp:10.30.170.48:6633"\n        fail_mode: standalone\n        Port s1-eth1\n            Interface s1-eth1\n        Port s1-eth2\n            Interface s1-eth2\n        Port s1\n            Interface s1\n                type: internal\n    Bridge s3\n        Controller "tcp:10.30.170.131:6633"\n        Controller "tcp:10.30.171.110:6633"\n        Controller "tcp:10.30.170.48:6633"\n        fail_mode: standalone\n        Port s3-eth2\n            Interface s3-eth2\n        Port s3-eth1\n            Interface s3-eth1\n        Port s3\n            Interface s3\n                type: internal\n    Bridge s2\n        Controller "tcp:10.30.171.110:6633"\n        Controller "tcp:10.30.170.131:6633"\n        Controller "tcp:10.30.170.48:6633"\n        fail_mode: standalone\n        Port s2-eth1\n            Interface s2-eth1\n        Port s2-eth2\n            Interface s2-eth2\n        Port s2-eth3\n            Interface s2-eth3\n        Port s2\n            Interface s2\n                type: internal\n    ovs_version: "2.17.11"' contains 'is_connected' 0 times, not 9 times.</msg>
<arg>${output}</arg>
<arg>is_connected</arg>
<arg>${of_connections}</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="FAIL" start="2026-04-08T00:58:27.706651" elapsed="0.000765">'9a5df812-eb49-4477-a37e-2d464c02791d\n    Bridge s1\n        Controller "tcp:10.30.170.131:6633"\n        Controller "tcp:10.30.171.110:6633"\n        Controller "tcp:10.30.170.48:6633"\n        fail_mode: standalone\n        Port s1-eth1\n            Interface s1-eth1\n        Port s1-eth2\n            Interface s1-eth2\n        Port s1\n            Interface s1\n                type: internal\n    Bridge s3\n        Controller "tcp:10.30.170.131:6633"\n        Controller "tcp:10.30.171.110:6633"\n        Controller "tcp:10.30.170.48:6633"\n        fail_mode: standalone\n        Port s3-eth2\n            Interface s3-eth2\n        Port s3-eth1\n            Interface s3-eth1\n        Port s3\n            Interface s3\n                type: internal\n    Bridge s2\n        Controller "tcp:10.30.171.110:6633"\n        Controller "tcp:10.30.170.131:6633"\n        Controller "tcp:10.30.170.48:6633"\n        fail_mode: standalone\n        Port s2-eth1\n            Interface s2-eth1\n        Port s2-eth2\n            Interface s2-eth2\n        Port s2-eth3\n            Interface s2-eth3\n        Port s2\n            Interface s2\n                type: internal\n    ovs_version: "2.17.11"' contains 'is_connected' 0 times, not 9 times.</status>
</kw>
<arg>${TOOLS_SYSTEM_IP}</arg>
<arg>${SWITCHES*3}</arg>
<doc>Check OVS instance with IP ${tools_system} has ${of_connections} OpenFlow connections.</doc>
<status status="FAIL" start="2026-04-08T00:58:27.287473" elapsed="0.420189">'9a5df812-eb49-4477-a37e-2d464c02791d\n    Bridge s1\n        Controller "tcp:10.30.170.131:6633"\n        Controller "tcp:10.30.171.110:6633"\n        Controller "tcp:10.30.170.48:6633"\n        fail_mode: standalone\n        Port s1-eth1\n            Interface s1-eth1\n        Port s1-eth2\n            Interface s1-eth2\n        Port s1\n            Interface s1\n                type: internal\n    Bridge s3\n        Controller "tcp:10.30.170.131:6633"\n        Controller "tcp:10.30.171.110:6633"\n        Controller "tcp:10.30.170.48:6633"\n        fail_mode: standalone\n        Port s3-eth2\n            Interface s3-eth2\n        Port s3-eth1\n            Interface s3-eth1\n        Port s3\n            Interface s3\n                type: internal\n    Bridge s2\n        Controller "tcp:10.30.171.110:6633"\n        Controller "tcp:10.30.170.131:6633"\n        Controller "tcp:10.30.170.48:6633"\n        fail_mode: standalone\n        Port s2-eth1\n            Interface s2-eth1\n        Port s2-eth2\n            Interface s2-eth2\n        Port s2-eth3\n            Interface s2-eth3\n        Port s2\n            Interface s2\n                type: internal\n    ovs_version: "2.17.11"' contains 'is_connected' 0 times, not 9 times.</status>
</kw>
<kw name="Check OVS OpenFlow Connections" owner="OVSDB">
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:28.729469" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:28.729150" elapsed="0.000389"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:28.729127" elapsed="0.000438"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:58:28.729888" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T00:58:28.729718" elapsed="0.000310"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:28.730625" level="INFO">Attempting to execute command "sudo ovs-vsctl show" on remote system "10.30.170.192" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:28.730230" elapsed="0.000443"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:58:28.731227" level="INFO">${conn_id} = 501</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:58:28.730840" elapsed="0.000413"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T00:58:28.732144" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T00:58:28.732238" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T00:58:28.731869" elapsed="0.000394"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:58:28.732424" elapsed="0.000323"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T00:58:28.733612" level="INFO">Logging into '10.30.170.192:22' as 'jenkins'.</msg>
<msg time="2026-04-08T00:58:29.108446" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 00:58:03 UTC 2026

  System load:  0.0                Processes:             107
  Usage of /:   19.5% of 38.58GB   Users logged in:       0
  Memory usage: 5%                 IPv4 address for ens3: 10.30.170.192
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 00:58:27 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-1-mininet-ovs-217-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T00:58:28.733295" elapsed="0.375314"/>
</kw>
<msg time="2026-04-08T00:58:29.108696" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:58:28.732918" elapsed="0.375866"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T00:58:28.731474" elapsed="0.377429"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T00:58:29.109489" level="INFO">Executing command 'sudo ovs-vsctl show'.</msg>
<msg time="2026-04-08T00:58:29.162569" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-08T00:58:29.162905" level="INFO">${stdout} = 9a5df812-eb49-4477-a37e-2d464c02791d
    Bridge s1
        Controller "tcp:10.30.170.131:6633"
        Controller "tcp:10.30.171.110:6633"
        Controller "tcp:10.30.170.48:6633"
        fail_mode:...</msg>
<msg time="2026-04-08T00:58:29.163007" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T00:58:29.109246" elapsed="0.053814"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:58:29.163553" elapsed="0.000531"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:29.165154" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:29.164541" elapsed="0.000744"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:58:29.165741" elapsed="0.000037"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:58:29.165454" elapsed="0.000391"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:29.165405" elapsed="0.000489"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T00:58:29.166303" elapsed="0.000065"/>
</return>
<status status="PASS" start="2026-04-08T00:58:29.166012" elapsed="0.000429"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:29.165979" elapsed="0.000518"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:58:29.166572" elapsed="0.000031"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:58:29.172585" elapsed="0.000471"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:58:29.173325" elapsed="0.000227"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:58:29.173771" elapsed="0.000141"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:58:29.167292" elapsed="0.006697"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T00:58:28.728605" elapsed="0.445518"/>
</kw>
<msg time="2026-04-08T00:58:29.174369" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:58:28.727928" elapsed="0.446519"/>
</kw>
<msg time="2026-04-08T00:58:29.174624" level="INFO">${output} = 9a5df812-eb49-4477-a37e-2d464c02791d
    Bridge s1
        Controller "tcp:10.30.170.131:6633"
        Controller "tcp:10.30.171.110:6633"
        Controller "tcp:10.30.170.48:6633"
        fail_mode:...</msg>
<var>${output}</var>
<arg>${tools_system}</arg>
<arg>sudo ovs-vsctl show</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-08T00:58:28.727393" elapsed="0.447271"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:29.175293" level="INFO">9a5df812-eb49-4477-a37e-2d464c02791d
    Bridge s1
        Controller "tcp:10.30.170.131:6633"
        Controller "tcp:10.30.171.110:6633"
        Controller "tcp:10.30.170.48:6633"
        fail_mode: standalone
        Port s1-eth1
            Interface s1-eth1
        Port s1-eth2
            Interface s1-eth2
        Port s1
            Interface s1
                type: internal
    Bridge s3
        Controller "tcp:10.30.170.131:6633"
        Controller "tcp:10.30.171.110:6633"
        Controller "tcp:10.30.170.48:6633"
        fail_mode: standalone
        Port s3-eth2
            Interface s3-eth2
        Port s3-eth1
            Interface s3-eth1
        Port s3
            Interface s3
                type: internal
    Bridge s2
        Controller "tcp:10.30.171.110:6633"
        Controller "tcp:10.30.170.131:6633"
        Controller "tcp:10.30.170.48:6633"
        fail_mode: standalone
        Port s2-eth1
            Interface s2-eth1
        Port s2-eth2
            Interface s2-eth2
        Port s2-eth3
            Interface s2-eth3
        Port s2
            Interface s2
                type: internal
    ovs_version: "2.17.11"</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:29.174907" elapsed="0.000462"/>
</kw>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T00:58:29.176080" level="INFO">Item found from container 0 times.</msg>
<msg time="2026-04-08T00:58:29.176273" level="FAIL">'9a5df812-eb49-4477-a37e-2d464c02791d\n    Bridge s1\n        Controller "tcp:10.30.170.131:6633"\n        Controller "tcp:10.30.171.110:6633"\n        Controller "tcp:10.30.170.48:6633"\n        fail_mode: standalone\n        Port s1-eth1\n            Interface s1-eth1\n        Port s1-eth2\n            Interface s1-eth2\n        Port s1\n            Interface s1\n                type: internal\n    Bridge s3\n        Controller "tcp:10.30.170.131:6633"\n        Controller "tcp:10.30.171.110:6633"\n        Controller "tcp:10.30.170.48:6633"\n        fail_mode: standalone\n        Port s3-eth2\n            Interface s3-eth2\n        Port s3-eth1\n            Interface s3-eth1\n        Port s3\n            Interface s3\n                type: internal\n    Bridge s2\n        Controller "tcp:10.30.171.110:6633"\n        Controller "tcp:10.30.170.131:6633"\n        Controller "tcp:10.30.170.48:6633"\n        fail_mode: standalone\n        Port s2-eth1\n            Interface s2-eth1\n        Port s2-eth2\n            Interface s2-eth2\n        Port s2-eth3\n            Interface s2-eth3\n        Port s2\n            Interface s2\n                type: internal\n    ovs_version: "2.17.11"' contains 'is_connected' 0 times, not 9 times.</msg>
<arg>${output}</arg>
<arg>is_connected</arg>
<arg>${of_connections}</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="FAIL" start="2026-04-08T00:58:29.175590" elapsed="0.000800">'9a5df812-eb49-4477-a37e-2d464c02791d\n    Bridge s1\n        Controller "tcp:10.30.170.131:6633"\n        Controller "tcp:10.30.171.110:6633"\n        Controller "tcp:10.30.170.48:6633"\n        fail_mode: standalone\n        Port s1-eth1\n            Interface s1-eth1\n        Port s1-eth2\n            Interface s1-eth2\n        Port s1\n            Interface s1\n                type: internal\n    Bridge s3\n        Controller "tcp:10.30.170.131:6633"\n        Controller "tcp:10.30.171.110:6633"\n        Controller "tcp:10.30.170.48:6633"\n        fail_mode: standalone\n        Port s3-eth2\n            Interface s3-eth2\n        Port s3-eth1\n            Interface s3-eth1\n        Port s3\n            Interface s3\n                type: internal\n    Bridge s2\n        Controller "tcp:10.30.171.110:6633"\n        Controller "tcp:10.30.170.131:6633"\n        Controller "tcp:10.30.170.48:6633"\n        fail_mode: standalone\n        Port s2-eth1\n            Interface s2-eth1\n        Port s2-eth2\n            Interface s2-eth2\n        Port s2-eth3\n            Interface s2-eth3\n        Port s2\n            Interface s2\n                type: internal\n    ovs_version: "2.17.11"' contains 'is_connected' 0 times, not 9 times.</status>
</kw>
<arg>${TOOLS_SYSTEM_IP}</arg>
<arg>${SWITCHES*3}</arg>
<doc>Check OVS instance with IP ${tools_system} has ${of_connections} OpenFlow connections.</doc>
<status status="FAIL" start="2026-04-08T00:58:28.723112" elapsed="0.453522">'9a5df812-eb49-4477-a37e-2d464c02791d\n    Bridge s1\n        Controller "tcp:10.30.170.131:6633"\n        Controller "tcp:10.30.171.110:6633"\n        Controller "tcp:10.30.170.48:6633"\n        fail_mode: standalone\n        Port s1-eth1\n            Interface s1-eth1\n        Port s1-eth2\n            Interface s1-eth2\n        Port s1\n            Interface s1\n                type: internal\n    Bridge s3\n        Controller "tcp:10.30.170.131:6633"\n        Controller "tcp:10.30.171.110:6633"\n        Controller "tcp:10.30.170.48:6633"\n        fail_mode: standalone\n        Port s3-eth2\n            Interface s3-eth2\n        Port s3-eth1\n            Interface s3-eth1\n        Port s3\n            Interface s3\n                type: internal\n    Bridge s2\n        Controller "tcp:10.30.171.110:6633"\n        Controller "tcp:10.30.170.131:6633"\n        Controller "tcp:10.30.170.48:6633"\n        fail_mode: standalone\n        Port s2-eth1\n            Interface s2-eth1\n        Port s2-eth2\n            Interface s2-eth2\n        Port s2-eth3\n            Interface s2-eth3\n        Port s2\n            Interface s2\n                type: internal\n    ovs_version: "2.17.11"' contains 'is_connected' 0 times, not 9 times.</status>
</kw>
<kw name="Check OVS OpenFlow Connections" owner="OVSDB">
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:30.198684" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:30.198372" elapsed="0.000380"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:30.198348" elapsed="0.000430"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:58:30.199099" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T00:58:30.198932" elapsed="0.000323"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:30.199797" level="INFO">Attempting to execute command "sudo ovs-vsctl show" on remote system "10.30.170.192" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:30.199408" elapsed="0.000436"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:58:30.200391" level="INFO">${conn_id} = 503</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:58:30.200003" elapsed="0.000419"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T00:58:30.201569" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T00:58:30.201658" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T00:58:30.201036" elapsed="0.000647"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:58:30.201856" elapsed="0.000352"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T00:58:30.203054" level="INFO">Logging into '10.30.170.192:22' as 'jenkins'.</msg>
<msg time="2026-04-08T00:58:30.541554" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 00:58:03 UTC 2026

  System load:  0.0                Processes:             107
  Usage of /:   19.5% of 38.58GB   Users logged in:       0
  Memory usage: 5%                 IPv4 address for ens3: 10.30.170.192
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 00:58:29 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-1-mininet-ovs-217-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T00:58:30.202738" elapsed="0.338960"/>
</kw>
<msg time="2026-04-08T00:58:30.541778" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:58:30.202379" elapsed="0.339478"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T00:58:30.200640" elapsed="0.341327"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T00:58:30.542465" level="INFO">Executing command 'sudo ovs-vsctl show'.</msg>
<msg time="2026-04-08T00:58:30.615362" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-08T00:58:30.615671" level="INFO">${stdout} = 9a5df812-eb49-4477-a37e-2d464c02791d
    Bridge s1
        Controller "tcp:10.30.170.131:6633"
            is_connected: true
        Controller "tcp:10.30.171.110:6633"
            is_connected: true...</msg>
<msg time="2026-04-08T00:58:30.615770" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T00:58:30.542215" elapsed="0.073607"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:58:30.616299" elapsed="0.000492"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:30.617889" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:30.617266" elapsed="0.000715"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:58:30.618604" elapsed="0.000038"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:58:30.618310" elapsed="0.000403"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:30.618242" elapsed="0.000522"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T00:58:30.619121" elapsed="0.000099"/>
</return>
<status status="PASS" start="2026-04-08T00:58:30.618884" elapsed="0.000414"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:30.618849" elapsed="0.000503"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T00:58:30.619428" elapsed="0.000033"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:58:30.624350" elapsed="0.000452"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:58:30.625034" elapsed="0.000236"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:58:30.625479" elapsed="0.000136"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:58:30.620130" elapsed="0.005560"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T00:58:30.197801" elapsed="0.428016"/>
</kw>
<msg time="2026-04-08T00:58:30.625902" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:58:30.197095" elapsed="0.428878"/>
</kw>
<msg time="2026-04-08T00:58:30.626170" level="INFO">${output} = 9a5df812-eb49-4477-a37e-2d464c02791d
    Bridge s1
        Controller "tcp:10.30.170.131:6633"
            is_connected: true
        Controller "tcp:10.30.171.110:6633"
            is_connected: true...</msg>
<var>${output}</var>
<arg>${tools_system}</arg>
<arg>sudo ovs-vsctl show</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-08T00:58:30.196531" elapsed="0.429679"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:30.626792" level="INFO">9a5df812-eb49-4477-a37e-2d464c02791d
    Bridge s1
        Controller "tcp:10.30.170.131:6633"
            is_connected: true
        Controller "tcp:10.30.171.110:6633"
            is_connected: true
        Controller "tcp:10.30.170.48:6633"
            is_connected: true
        fail_mode: standalone
        Port s1-eth1
            Interface s1-eth1
        Port s1-eth2
            Interface s1-eth2
        Port s1
            Interface s1
                type: internal
    Bridge s3
        Controller "tcp:10.30.170.131:6633"
            is_connected: true
        Controller "tcp:10.30.171.110:6633"
            is_connected: true
        Controller "tcp:10.30.170.48:6633"
            is_connected: true
        fail_mode: standalone
        Port s3-eth2
            Interface s3-eth2
        Port s3-eth1
            Interface s3-eth1
        Port s3
            Interface s3
                type: internal
    Bridge s2
        Controller "tcp:10.30.171.110:6633"
            is_connected: true
        Controller "tcp:10.30.170.131:6633"
            is_connected: true
        Controller "tcp:10.30.170.48:6633"
            is_connected: true
        fail_mode: standalone
        Port s2-eth1
            Interface s2-eth1
        Port s2-eth2
            Interface s2-eth2
        Port s2-eth3
            Interface s2-eth3
        Port s2
            Interface s2
                type: internal
    ovs_version: "2.17.11"</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:30.626441" elapsed="0.000428"/>
</kw>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T00:58:30.627562" level="INFO">Item found from container 9 times.</msg>
<arg>${output}</arg>
<arg>is_connected</arg>
<arg>${of_connections}</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="PASS" start="2026-04-08T00:58:30.627079" elapsed="0.000585"/>
</kw>
<arg>${TOOLS_SYSTEM_IP}</arg>
<arg>${SWITCHES*3}</arg>
<doc>Check OVS instance with IP ${tools_system} has ${of_connections} OpenFlow connections.</doc>
<status status="PASS" start="2026-04-08T00:58:30.192964" elapsed="0.434788"/>
</kw>
<arg>10s</arg>
<arg>1s</arg>
<arg>OVSDB.Check OVS OpenFlow Connections</arg>
<arg>${TOOLS_SYSTEM_IP}</arg>
<arg>${SWITCHES*3}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-08T00:58:25.888023" elapsed="4.739799"/>
</kw>
<doc>Start mininet linear with connection to all cluster instances.</doc>
<status status="PASS" start="2026-04-08T00:58:21.939268" elapsed="8.688721"/>
</test>
<test id="s1-s4-t3" name="Check Linear Topology" line="48">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-08T00:58:30.632727" elapsed="0.000289"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-08T00:58:30.632355" elapsed="0.000737"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:58:30.634502" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:58:30.634383" elapsed="0.000163"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:30.634357" elapsed="0.000211"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:58:30.639352" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:58:30.639246" elapsed="0.000150"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:30.639228" elapsed="0.000189"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:58:30.640425" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:58:30.640026" elapsed="0.000426"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:58:30.640962" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:58:30.640657" elapsed="0.000330"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:58:30.641032" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:58:30.641200" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:58:30.639652" elapsed="0.001574"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:58:30.646594" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:58:30.646487" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:30.646468" elapsed="0.000193"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:58:30.647823" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:58:30.647715" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:30.647697" elapsed="0.000194"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:58:30.648368" level="INFO">${karaf_connection_index} = 476</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:58:30.648040" elapsed="0.000356"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:58:30.648783" level="INFO">${current_connection_index} = None</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:58:30.648558" elapsed="0.000252"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T00:58:30.686100" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T00:58:30.649342" elapsed="0.036926"/>
</kw>
<msg time="2026-04-08T00:58:30.686488" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T00:58:30.686538" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:58:30.648972" elapsed="0.037604"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T00:58:30.717807" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "L "i "n "e "a "r "[C "T "o "p "o "l "o "g "y "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T00:58:30.687259" elapsed="0.030736"/>
</kw>
<msg time="2026-04-08T00:58:30.718245" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T00:58:30.718296" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "L "i "n "e "a "r...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:58:30.686810" elapsed="0.031549"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:30.718799" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:30.718478" elapsed="0.000380"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:30.718443" elapsed="0.000442"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:30.719451" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "L "i "n "e "a "r "[C "T "o "p "o "l "o "g "y "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:30.719043" elapsed="0.000480"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:30.719842" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:30.719594" elapsed="0.000305"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:30.719575" elapsed="0.000348"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T00:58:30.719960" elapsed="0.000041"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:58:30.721616" elapsed="0.000821"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:58:30.722724" elapsed="0.000497"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:58:30.723492" elapsed="0.000372"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:58:30.720932" elapsed="0.003037"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T00:58:30.720337" elapsed="0.003697"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T00:58:30.647412" elapsed="0.076826"/>
</kw>
<msg time="2026-04-08T00:58:30.724339" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:58:30.724383" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "L "i "n "e "a "r...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:58:30.646813" elapsed="0.077608"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T00:58:30.724610" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-08T00:58:30.724500" elapsed="0.000171"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:30.724481" elapsed="0.000214"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:30.725099" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:30.725478" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T00:58:30.725552" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T00:58:30.646122" elapsed="0.079538"/>
</kw>
<msg time="2026-04-08T00:58:30.725756" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:58:30.725800" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "L "i "n "e "a "r...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:58:30.641605" elapsed="0.084232"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:30.726202" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:30.725915" elapsed="0.000347"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:30.725897" elapsed="0.000389"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T00:58:30.641463" elapsed="0.084847"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:58:30.731836" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:58:30.731727" elapsed="0.000156"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:30.731707" elapsed="0.000198"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:58:30.733091" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:58:30.732981" elapsed="0.000156"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:30.732963" elapsed="0.000226"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:58:30.733681" level="INFO">${karaf_connection_index} = 478</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:58:30.733372" elapsed="0.000336"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:58:30.734100" level="INFO">${current_connection_index} = None</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:58:30.733872" elapsed="0.000254"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T00:58:30.768653" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T00:58:30.734666" elapsed="0.034088"/>
</kw>
<msg time="2026-04-08T00:58:30.768935" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T00:58:30.768981" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:58:30.734320" elapsed="0.034696"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T00:58:30.805610" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "L "i "n "e "a "r "[C "T "o "p "o "l "o "g "y "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T00:58:30.769587" elapsed="0.036437"/>
</kw>
<msg time="2026-04-08T00:58:30.806504" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T00:58:30.806553" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "L "i "n "e "a "r...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:58:30.769234" elapsed="0.037359"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:30.807078" elapsed="0.000028"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:30.806723" elapsed="0.000519"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:30.806683" elapsed="0.000590"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:30.807830" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "L "i "n "e "a "r "[C "T "o "p "o "l "o "g "y "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:30.807428" elapsed="0.000473"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:30.808214" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:30.807971" elapsed="0.000299"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:30.807952" elapsed="0.000342"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T00:58:30.808331" elapsed="0.000042"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:58:30.810314" elapsed="0.000800"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:58:30.811448" elapsed="0.000484"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:58:30.812215" elapsed="0.000368"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:58:30.809575" elapsed="0.003111"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T00:58:30.808679" elapsed="0.004073"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T00:58:30.732671" elapsed="0.080182"/>
</kw>
<msg time="2026-04-08T00:58:30.812948" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:58:30.812991" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "L "i "n "e "a "r...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:58:30.732065" elapsed="0.080963"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T00:58:30.813233" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-08T00:58:30.813107" elapsed="0.000186"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:30.813087" elapsed="0.000230"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 2,
close the previous connection. In any case create a new connection
to karaf console for 2, set correct prompt set and login to karaf console.
Store connection index for 2 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:30.813742" elapsed="0.000027"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:30.814085" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T00:58:30.814179" elapsed="0.000017"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T00:58:30.731358" elapsed="0.082932"/>
</kw>
<msg time="2026-04-08T00:58:30.814386" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:58:30.814430" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "L "i "n "e "a "r...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:58:30.726590" elapsed="0.087876"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:30.814795" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:30.814544" elapsed="0.000303"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:30.814526" elapsed="0.000344"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T00:58:30.726444" elapsed="0.088449"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:58:30.820425" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:58:30.820315" elapsed="0.000157"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:30.820296" elapsed="0.000206"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:58:30.821962" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:58:30.821616" elapsed="0.000394"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:30.821597" elapsed="0.000437"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:58:30.822519" level="INFO">${karaf_connection_index} = 480</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:58:30.822206" elapsed="0.000339"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:58:30.822940" level="INFO">${current_connection_index} = None</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:58:30.822707" elapsed="0.000259"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T00:58:30.866130" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T00:58:30.823571" elapsed="0.042683"/>
</kw>
<msg time="2026-04-08T00:58:30.866422" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T00:58:30.866470" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:58:30.823220" elapsed="0.043286"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T00:58:30.901506" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "L "i "n "e "a "r "[C "T "o "p "o "l "o "g "y "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T00:58:30.867107" elapsed="0.034630"/>
</kw>
<msg time="2026-04-08T00:58:30.901979" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T00:58:30.902031" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "L "i "n "e "a "r...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:58:30.866691" elapsed="0.035380"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:30.902590" elapsed="0.000028"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:30.902230" elapsed="0.000423"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:30.902192" elapsed="0.000489"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:30.903323" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "L "i "n "e "a "r "[C "T "o "p "o "l "o "g "y "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:30.902844" elapsed="0.000559"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:30.903709" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:30.903475" elapsed="0.000291"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:30.903455" elapsed="0.000339"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T00:58:30.903841" elapsed="0.000045"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:58:30.905556" elapsed="0.000844"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:58:30.906692" elapsed="0.000551"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:58:30.907526" elapsed="0.000381"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:58:30.904857" elapsed="0.003157"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T00:58:30.904231" elapsed="0.003850"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T00:58:30.821249" elapsed="0.086965"/>
</kw>
<msg time="2026-04-08T00:58:30.908398" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:58:30.908449" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "L "i "n "e "a "r...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:58:30.820663" elapsed="0.087825"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T00:58:30.908685" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-08T00:58:30.908573" elapsed="0.000173"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:30.908553" elapsed="0.000217"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 3,
close the previous connection. In any case create a new connection
to karaf console for 3, set correct prompt set and login to karaf console.
Store connection index for 3 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:30.909223" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:30.909847" elapsed="0.000027"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T00:58:30.909930" elapsed="0.000017"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T00:58:30.819951" elapsed="0.090093"/>
</kw>
<msg time="2026-04-08T00:58:30.910145" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:58:30.910209" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "L "i "n "e "a "r...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:58:30.815203" elapsed="0.095104"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:30.910659" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:30.910391" elapsed="0.000323"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:30.910373" elapsed="0.000364"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T00:58:30.815028" elapsed="0.095734"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-08T00:58:30.641282" elapsed="0.269515"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-08T00:58:30.638875" elapsed="0.271983"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-08T00:58:30.633948" elapsed="0.276981"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:58:30.633324" elapsed="0.277657"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-08T00:58:30.629036" elapsed="0.282004"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Check Linear Topology On Member" owner="ClusterOpenFlow">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:58:30.913095" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:58:30.912780" elapsed="0.000343"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:58:30.913292" elapsed="0.000031"/>
</return>
<msg time="2026-04-08T00:58:30.913448" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:58:30.912418" elapsed="0.001057"/>
</kw>
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:58:30.924708" level="INFO">GET Request : url=http://10.30.170.48:8181/rests/data/network-topology:network-topology?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01s3bfo0y24i1es90l47mavglv0.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:58:30.928432" level="INFO">GET Response : url=http://10.30.170.48:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '2332'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}]}]}} 
 </msg>
<msg time="2026-04-08T00:58:30.928741" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${RFC8040_OPERATIONAL_TOPO_API}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:58:30.913635" elapsed="0.015167"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:30.933577" level="INFO">{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}]}]}}</msg>
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:30.929294" elapsed="0.004424"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"node-id":"openflow:${switch}"</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-08T00:58:30.936992" elapsed="0.002540"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-08T00:58:30.939716" elapsed="0.002487"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-08T00:58:30.942408" elapsed="0.002450"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<msg time="2026-04-08T00:58:30.947579" level="FAIL">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}]}]}}' does not contain '"source-tp":"openflow:1:2"'</msg>
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="FAIL" start="2026-04-08T00:58:30.945039" elapsed="0.002638">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}]}]}}' does not contain '"source-tp":"openflow:1:2"'</status>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:30.947882" elapsed="0.000021"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${edge}</var>
<arg>${switch}==1 or ${switch}==${switches}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:30.948074" elapsed="0.000020"/>
</kw>
<if>
<branch type="IF" condition="not ${edge}">
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:3"</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:30.948351" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:30.948177" elapsed="0.000232"/>
</branch>
<status status="NOT RUN" start="2026-04-08T00:58:30.948144" elapsed="0.000288"/>
</if>
<if>
<branch type="IF" condition="not ${edge}">
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:3"</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:30.948643" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:30.948484" elapsed="0.000213"/>
</branch>
<status status="NOT RUN" start="2026-04-08T00:58:30.948469" elapsed="0.000251"/>
</if>
<if>
<branch type="IF" condition="not ${edge}">
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:3</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:30.948930" elapsed="0.000019"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:30.948770" elapsed="0.000213"/>
</branch>
<status status="NOT RUN" start="2026-04-08T00:58:30.948756" elapsed="0.000248"/>
</if>
<var name="${switch}">1</var>
<status status="FAIL" start="2026-04-08T00:58:30.936825" elapsed="0.012231">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}]}]}}' does not contain '"source-tp":"openflow:1:2"'</status>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="FAIL" start="2026-04-08T00:58:30.933798" elapsed="0.015379">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}]}]}}' does not contain '"source-tp":"openflow:1:2"'</status>
</for>
<arg>${SWITCHES}</arg>
<doc>Check Linear topology.</doc>
<status status="FAIL" start="2026-04-08T00:58:30.911991" elapsed="0.037326">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}]}]}}' does not contain '"source-tp":"openflow:1:2"'</status>
</kw>
<kw name="Check Linear Topology On Member" owner="ClusterOpenFlow">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:58:31.953379" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:58:31.952582" elapsed="0.000868"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:58:31.953573" elapsed="0.000084"/>
</return>
<msg time="2026-04-08T00:58:31.954024" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:58:31.951706" elapsed="0.002376"/>
</kw>
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:58:31.966900" level="INFO">GET Request : url=http://10.30.170.48:8181/rests/data/network-topology:network-topology?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01s3bfo0y24i1es90l47mavglv0.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:58:31.968323" level="INFO">GET Response : url=http://10.30.170.48:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '2973'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}} 
 </msg>
<msg time="2026-04-08T00:58:31.968459" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${RFC8040_OPERATIONAL_TOPO_API}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:58:31.954470" elapsed="0.014019"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:31.971202" level="INFO">{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}}</msg>
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:31.968697" elapsed="0.002573"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"node-id":"openflow:${switch}"</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-08T00:58:31.976819" elapsed="0.005665"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-08T00:58:31.982673" elapsed="0.002465"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-08T00:58:31.985399" elapsed="0.002477"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-08T00:58:31.988058" elapsed="0.002475"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-08T00:58:31.990716" elapsed="0.002453"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:31.993809" level="INFO">${edge} = True</msg>
<var>${edge}</var>
<arg>${switch}==1 or ${switch}==${switches}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:31.993360" elapsed="0.000476"/>
</kw>
<if>
<branch type="IF" condition="not ${edge}">
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:3"</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:31.994202" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:31.993916" elapsed="0.000345"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:31.993895" elapsed="0.000391"/>
</if>
<if>
<branch type="IF" condition="not ${edge}">
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:3"</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:31.994572" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:31.994341" elapsed="0.000288"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:31.994326" elapsed="0.000325"/>
</if>
<if>
<branch type="IF" condition="not ${edge}">
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:3</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:31.994923" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:31.994703" elapsed="0.000276"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:31.994689" elapsed="0.000313"/>
</if>
<var name="${switch}">1</var>
<status status="PASS" start="2026-04-08T00:58:31.976454" elapsed="0.018570"/>
</iter>
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"node-id":"openflow:${switch}"</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-08T00:58:31.995402" elapsed="0.002503"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-08T00:58:31.998092" elapsed="0.002480"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-08T00:58:32.000750" elapsed="0.002565"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-08T00:58:32.003496" elapsed="0.002465"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-08T00:58:32.006140" elapsed="0.002560"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:32.009338" level="INFO">${edge} = False</msg>
<var>${edge}</var>
<arg>${switch}==1 or ${switch}==${switches}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:32.008889" elapsed="0.000475"/>
</kw>
<if>
<branch type="IF" condition="not ${edge}">
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:3"</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-08T00:58:32.009678" elapsed="0.002458"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:32.009433" elapsed="0.002758"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:32.009415" elapsed="0.002801"/>
</if>
<if>
<branch type="IF" condition="not ${edge}">
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:3"</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-08T00:58:32.012501" elapsed="0.002473"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:32.012271" elapsed="0.002743"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:32.012255" elapsed="0.002783"/>
</if>
<if>
<branch type="IF" condition="not ${edge}">
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:3</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-08T00:58:32.015389" elapsed="0.002483"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:32.015094" elapsed="0.002818"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:32.015078" elapsed="0.002858"/>
</if>
<var name="${switch}">2</var>
<status status="PASS" start="2026-04-08T00:58:31.995246" elapsed="0.022712"/>
</iter>
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"node-id":"openflow:${switch}"</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-08T00:58:32.018341" elapsed="0.002566"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-08T00:58:32.021087" elapsed="0.002476"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-08T00:58:32.023759" elapsed="0.002478"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-08T00:58:32.026421" elapsed="0.002437"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-08T00:58:32.029036" elapsed="0.002534"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:32.032191" level="INFO">${edge} = True</msg>
<var>${edge}</var>
<arg>${switch}==1 or ${switch}==${switches}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:32.031748" elapsed="0.000471"/>
</kw>
<if>
<branch type="IF" condition="not ${edge}">
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:3"</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:32.032522" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:32.032288" elapsed="0.000325"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:32.032270" elapsed="0.000370"/>
</if>
<if>
<branch type="IF" condition="not ${edge}">
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:3"</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:32.032920" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:32.032694" elapsed="0.000281"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:32.032679" elapsed="0.000319"/>
</if>
<if>
<branch type="IF" condition="not ${edge}">
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:3</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:32.033319" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:32.033049" elapsed="0.000326"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:32.033034" elapsed="0.000363"/>
</if>
<var name="${switch}">3</var>
<status status="PASS" start="2026-04-08T00:58:32.018185" elapsed="0.015234"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="PASS" start="2026-04-08T00:58:31.971328" elapsed="0.062119"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check Linear topology.</doc>
<status status="PASS" start="2026-04-08T00:58:31.950560" elapsed="0.082947"/>
</kw>
<arg>30s</arg>
<arg>1s</arg>
<arg>ClusterOpenFlow.Check Linear Topology On Member</arg>
<arg>${SWITCHES}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-08T00:58:30.911266" elapsed="1.122291"/>
</kw>
<doc>Check Linear Topology.</doc>
<status status="PASS" start="2026-04-08T00:58:30.628449" elapsed="1.405237"/>
</test>
<test id="s1-s4-t4" name="Check Stats Are Not Frozen" line="52">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-08T00:58:32.036953" elapsed="0.000244"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-08T00:58:32.036678" elapsed="0.000574"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:58:32.038246" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:58:32.038114" elapsed="0.000179"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:32.038096" elapsed="0.000219"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:58:32.043063" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:58:32.042950" elapsed="0.000157"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:32.042933" elapsed="0.000195"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:58:32.044135" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:58:32.043758" elapsed="0.000420"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:58:32.044643" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:58:32.044343" elapsed="0.000325"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:58:32.044711" elapsed="0.000033"/>
</return>
<msg time="2026-04-08T00:58:32.045096" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:58:32.043380" elapsed="0.001753"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:58:32.052522" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:58:32.052413" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:32.052394" elapsed="0.000195"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:58:32.053820" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:58:32.053712" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:32.053694" elapsed="0.000193"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:58:32.054372" level="INFO">${karaf_connection_index} = 476</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:58:32.054038" elapsed="0.000361"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:58:32.054792" level="INFO">${current_connection_index} = None</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:58:32.054561" elapsed="0.000257"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T00:58:32.105474" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T00:58:32.055358" elapsed="0.050230"/>
</kw>
<msg time="2026-04-08T00:58:32.105757" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T00:58:32.105804" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:58:32.054981" elapsed="0.050860"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T00:58:32.144791" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "S "t "a "t "s "[C "A "r "e "[C "N "o "t "[C "F "r "o "z "e "n "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T00:58:32.106405" elapsed="0.038567"/>
</kw>
<msg time="2026-04-08T00:58:32.145134" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T00:58:32.145202" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "S "t "a "t "s "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:58:32.106022" elapsed="0.039220"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:32.145569" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:32.145328" elapsed="0.000296"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:32.145305" elapsed="0.000344"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:32.146092" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "S "t "a "t "s "[C "A "r "e "[C "N "o "t "[C "F "r "o "z "e "n "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:32.145792" elapsed="0.000387"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:32.146470" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:32.146249" elapsed="0.000275"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:32.146230" elapsed="0.000317"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T00:58:32.146581" elapsed="0.000036"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:58:32.148100" elapsed="0.000786"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:58:32.149181" elapsed="0.000465"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:58:32.149914" elapsed="0.000379"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:58:32.147477" elapsed="0.002917"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T00:58:32.146907" elapsed="0.003551"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T00:58:32.053405" elapsed="0.097160"/>
</kw>
<msg time="2026-04-08T00:58:32.150658" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:58:32.150702" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "S "t "a "t "s "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:58:32.052767" elapsed="0.097973"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T00:58:32.150926" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-08T00:58:32.150821" elapsed="0.000163"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:32.150802" elapsed="0.000206"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:32.151428" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:32.151755" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T00:58:32.151826" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T00:58:32.052058" elapsed="0.099873"/>
</kw>
<msg time="2026-04-08T00:58:32.152024" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:58:32.152067" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "S "t "a "t "s "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:58:32.045554" elapsed="0.106551"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:32.152446" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:32.152195" elapsed="0.000303"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:32.152177" elapsed="0.000345"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T00:58:32.045409" elapsed="0.107136"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:58:32.157976" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:58:32.157870" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:32.157852" elapsed="0.000190"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:58:32.159361" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:58:32.159252" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:32.159234" elapsed="0.000194"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:58:32.159879" level="INFO">${karaf_connection_index} = 478</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:58:32.159576" elapsed="0.000330"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:58:32.160314" level="INFO">${current_connection_index} = None</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:58:32.160067" elapsed="0.000273"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T00:58:32.202388" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T00:58:32.160843" elapsed="0.041838"/>
</kw>
<msg time="2026-04-08T00:58:32.203021" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T00:58:32.203101" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:58:32.160504" elapsed="0.042688"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T00:58:32.257409" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "S "t "a "t "s "[C "A "r "e "[C "N "o "t "[C "F "r "o "z "e "n "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T00:58:32.204269" elapsed="0.053361"/>
</kw>
<msg time="2026-04-08T00:58:32.257856" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T00:58:32.257903" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "S "t "a "t "s "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:58:32.203559" elapsed="0.054383"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:32.258450" elapsed="0.000028"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:32.258066" elapsed="0.000447"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:32.258030" elapsed="0.000510"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:32.259094" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "S "t "a "t "s "[C "A "r "e "[C "N "o "t "[C "F "r "o "z "e "n "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:32.258692" elapsed="0.000498"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:32.259483" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:32.259259" elapsed="0.000280"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:32.259241" elapsed="0.000321"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T00:58:32.259601" elapsed="0.000041"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:58:32.261255" elapsed="0.000777"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:58:32.262351" elapsed="0.000502"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:58:32.263134" elapsed="0.000418"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:58:32.260569" elapsed="0.003084"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T00:58:32.259943" elapsed="0.003775"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T00:58:32.158890" elapsed="0.104930"/>
</kw>
<msg time="2026-04-08T00:58:32.263919" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:58:32.263963" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "S "t "a "t "s "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:58:32.158312" elapsed="0.105689"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T00:58:32.264225" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-08T00:58:32.264080" elapsed="0.000206"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:32.264061" elapsed="0.000249"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 2,
close the previous connection. In any case create a new connection
to karaf console for 2, set correct prompt set and login to karaf console.
Store connection index for 2 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:32.264719" elapsed="0.000024"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:32.265136" elapsed="0.000040"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T00:58:32.265225" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T00:58:32.157529" elapsed="0.107806"/>
</kw>
<msg time="2026-04-08T00:58:32.265431" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:58:32.265476" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "S "t "a "t "s "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:58:32.152812" elapsed="0.112702"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:32.265864" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:32.265592" elapsed="0.000329"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:32.265575" elapsed="0.000370"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T00:58:32.152671" elapsed="0.113298"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:58:32.271834" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:58:32.271727" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:32.271708" elapsed="0.000193"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:58:32.273136" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:58:32.273029" elapsed="0.000168"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:32.273011" elapsed="0.000209"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:58:32.273678" level="INFO">${karaf_connection_index} = 480</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:58:32.273370" elapsed="0.000334"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:58:32.274091" level="INFO">${current_connection_index} = None</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:58:32.273866" elapsed="0.000251"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T00:58:32.309932" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T00:58:32.274684" elapsed="0.035395"/>
</kw>
<msg time="2026-04-08T00:58:32.310310" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T00:58:32.310359" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:58:32.274342" elapsed="0.036056"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T00:58:32.348119" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "S "t "a "t "s "[C "A "r "e "[C "N "o "t "[C "F "r "o "z "e "n "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T00:58:32.311008" elapsed="0.037253"/>
</kw>
<msg time="2026-04-08T00:58:32.348433" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T00:58:32.348482" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "S "t "a "t "s "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:58:32.310610" elapsed="0.037914"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:32.348898" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:32.348628" elapsed="0.000326"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:32.348598" elapsed="0.000383"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:32.349478" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "S "t "a "t "s "[C "A "r "e "[C "N "o "t "[C "F "r "o "z "e "n "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:32.349130" elapsed="0.000420"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:32.349839" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:32.349618" elapsed="0.000275"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:32.349600" elapsed="0.000316"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T00:58:32.349952" elapsed="0.000038"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:58:32.351541" elapsed="0.000773"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:58:32.352668" elapsed="0.000461"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:58:32.353410" elapsed="0.000355"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:58:32.350880" elapsed="0.002987"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T00:58:32.350314" elapsed="0.003617"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T00:58:32.272712" elapsed="0.081319"/>
</kw>
<msg time="2026-04-08T00:58:32.354127" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:58:32.354202" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "S "t "a "t "s "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:58:32.272084" elapsed="0.082158"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T00:58:32.354429" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-08T00:58:32.354321" elapsed="0.000166"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:32.354301" elapsed="0.000210"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 3,
close the previous connection. In any case create a new connection
to karaf console for 3, set correct prompt set and login to karaf console.
Store connection index for 3 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:32.354913" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:32.355265" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T00:58:32.355335" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T00:58:32.271378" elapsed="0.084064"/>
</kw>
<msg time="2026-04-08T00:58:32.355536" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:58:32.355582" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "S "t "a "t "s "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:58:32.266293" elapsed="0.089326"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:32.355949" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:32.355695" elapsed="0.000306"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:32.355678" elapsed="0.000346"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T00:58:32.266112" elapsed="0.089936"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-08T00:58:32.045219" elapsed="0.310864"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-08T00:58:32.042594" elapsed="0.313548"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-08T00:58:32.037833" elapsed="0.318385"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:58:32.037410" elapsed="0.318856"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-08T00:58:32.034576" elapsed="0.321744"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Check Flow Stats Are Not Frozen">
<kw name="Extract Flow Duration">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:58:32.358360" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:58:32.358009" elapsed="0.000377"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:58:32.358431" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:58:32.358575" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:58:32.357657" elapsed="0.000943"/>
</kw>
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:58:32.367490" level="INFO">GET Request : url=http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0/flow=1?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0/flow=1?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node01s3bfo0y24i1es90l47mavglv0.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:58:32.367933" level="INFO">GET Response : url=http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0/flow=1?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '486'} 
 body={"flow-node-inventory:flow":[{"id":"1","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.1/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":1}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":0,"nanosecond":212000000}},"flags":""}]} 
 </msg>
<msg time="2026-04-08T00:58:32.368240" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${RFC8040_NODES_API}/node=openflow%3A1/flow-node-inventory:table=0/flow=1?content=nonconfig</arg>
<arg>headers=${headers}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:58:32.358757" elapsed="0.009511"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:32.371279" level="INFO">{"flow-node-inventory:flow":[{"id":"1","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.1/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":1}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":0,"nanosecond":212000000}},"flags":""}]}</msg>
<arg>${resp.content}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:32.368456" elapsed="0.002936"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:32.378283" level="INFO">${json_data} = {'flow-node-inventory:flow': [{'id': '1', 'table_id': 0, 'priority': 100, 'cookie_mask': '0', 'idle-timeout': 0, 'match': {'ethernet-match': {'ethernet-type': {'type': 2048}}, 'ipv4-destination': '10....</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:32.377287" elapsed="0.001062"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-08T00:58:32.378456" elapsed="0.000068"/>
</return>
<msg time="2026-04-08T00:58:32.378855" level="INFO">${json_resp} = {'flow-node-inventory:flow': [{'id': '1', 'table_id': 0, 'priority': 100, 'cookie_mask': '0', 'idle-timeout': 0, 'match': {'ethernet-match': {'ethernet-type': {'type': 2048}}, 'ipv4-destination': '10....</msg>
<var>${json_resp}</var>
<arg>${resp.content}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-08T00:58:32.371872" elapsed="0.007046"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:58:32.379797" level="INFO">${flow_list} = [{'id': '1', 'table_id': 0, 'priority': 100, 'cookie_mask': '0', 'idle-timeout': 0, 'match': {'ethernet-match': {'ethernet-type': {'type': 2048}}, 'ipv4-destination': '10.0.10.1/32'}, 'cookie': '0', '...</msg>
<var>${flow_list}</var>
<arg>${json_resp}</arg>
<arg>flow-node-inventory:flow</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:58:32.379328" elapsed="0.000535"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:58:32.380725" level="INFO">${flow_stats} = {'packet-count': '0', 'byte-count': '0', 'duration': {'second': 0, 'nanosecond': 212000000}}</msg>
<var>${flow_stats}</var>
<arg>${flow_list}[0]</arg>
<arg>opendaylight-flow-statistics:flow-statistics</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:58:32.380270" elapsed="0.000517"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:58:32.381668" level="INFO">${duration} = 0</msg>
<var>${duration}</var>
<arg>${flow_stats}[duration]</arg>
<arg>second</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:58:32.381188" elapsed="0.000543"/>
</kw>
<return>
<value>${duration}</value>
<status status="PASS" start="2026-04-08T00:58:32.381842" elapsed="0.000065"/>
</return>
<msg time="2026-04-08T00:58:32.382230" level="INFO">${duration_1} = 0</msg>
<var>${duration_1}</var>
<arg>${member_index}</arg>
<doc>Extract duration for flow 1 in switch 1.</doc>
<status status="PASS" start="2026-04-08T00:58:32.357313" elapsed="0.024979"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:58:32.382869" level="INFO">${duration_1} = 0</msg>
<var>${duration_1}</var>
<arg>${duration_1}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:58:32.382567" elapsed="0.000327"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-08T00:58:37.383520" level="INFO">Slept 5 seconds.</msg>
<arg>${period_in_seconds}</arg>
<doc>Pauses the test executed for the given time.</doc>
<status status="PASS" start="2026-04-08T00:58:32.383048" elapsed="5.000707"/>
</kw>
<kw name="Extract Flow Duration">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:58:37.387285" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:58:37.386411" elapsed="0.000943"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:58:37.387470" elapsed="0.000083"/>
</return>
<msg time="2026-04-08T00:58:37.387848" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:58:37.385458" elapsed="0.002459"/>
</kw>
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:58:37.399414" level="INFO">GET Request : url=http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0/flow=1?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0/flow=1?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node01s3bfo0y24i1es90l47mavglv0.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:58:37.399845" level="INFO">GET Response : url=http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0/flow=1?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '486'} 
 body={"flow-node-inventory:flow":[{"id":"1","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.1/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":1}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":230000000}},"flags":""}]} 
 </msg>
<msg time="2026-04-08T00:58:37.399942" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${RFC8040_NODES_API}/node=openflow%3A1/flow-node-inventory:table=0/flow=1?content=nonconfig</arg>
<arg>headers=${headers}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:58:37.388355" elapsed="0.011613"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:37.402691" level="INFO">{"flow-node-inventory:flow":[{"id":"1","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.1/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":1}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":230000000}},"flags":""}]}</msg>
<arg>${resp.content}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:37.400203" elapsed="0.002712"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:37.410021" level="INFO">${json_data} = {'flow-node-inventory:flow': [{'id': '1', 'table_id': 0, 'priority': 100, 'cookie_mask': '0', 'idle-timeout': 0, 'match': {'ethernet-match': {'ethernet-type': {'type': 2048}}, 'ipv4-destination': '10....</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:37.408982" elapsed="0.001105"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-08T00:58:37.410232" elapsed="0.000089"/>
</return>
<msg time="2026-04-08T00:58:37.410664" level="INFO">${json_resp} = {'flow-node-inventory:flow': [{'id': '1', 'table_id': 0, 'priority': 100, 'cookie_mask': '0', 'idle-timeout': 0, 'match': {'ethernet-match': {'ethernet-type': {'type': 2048}}, 'ipv4-destination': '10....</msg>
<var>${json_resp}</var>
<arg>${resp.content}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-08T00:58:37.403463" elapsed="0.007266"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:58:37.411619" level="INFO">${flow_list} = [{'id': '1', 'table_id': 0, 'priority': 100, 'cookie_mask': '0', 'idle-timeout': 0, 'match': {'ethernet-match': {'ethernet-type': {'type': 2048}}, 'ipv4-destination': '10.0.10.1/32'}, 'cookie': '0', '...</msg>
<var>${flow_list}</var>
<arg>${json_resp}</arg>
<arg>flow-node-inventory:flow</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:58:37.411093" elapsed="0.000589"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:58:37.412522" level="INFO">${flow_stats} = {'packet-count': '0', 'byte-count': '0', 'duration': {'second': 6, 'nanosecond': 230000000}}</msg>
<var>${flow_stats}</var>
<arg>${flow_list}[0]</arg>
<arg>opendaylight-flow-statistics:flow-statistics</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:58:37.412036" elapsed="0.000548"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:58:37.413390" level="INFO">${duration} = 6</msg>
<var>${duration}</var>
<arg>${flow_stats}[duration]</arg>
<arg>second</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:58:37.412943" elapsed="0.000505"/>
</kw>
<return>
<value>${duration}</value>
<status status="PASS" start="2026-04-08T00:58:37.413573" elapsed="0.000065"/>
</return>
<msg time="2026-04-08T00:58:37.413912" level="INFO">${duration_2} = 6</msg>
<var>${duration_2}</var>
<arg>${member_index}</arg>
<doc>Extract duration for flow 1 in switch 1.</doc>
<status status="PASS" start="2026-04-08T00:58:37.384411" elapsed="0.029557"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:58:37.414888" level="INFO">${duration_2} = 6</msg>
<var>${duration_2}</var>
<arg>${duration_2}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:58:37.414413" elapsed="0.000501"/>
</kw>
<kw name="Should Not Be Equal As Integers" owner="BuiltIn">
<arg>${duration_1}</arg>
<arg>${duration_2}</arg>
<doc>Fails if objects are equal after converting them to integers.</doc>
<status status="PASS" start="2026-04-08T00:58:37.415102" elapsed="0.000331"/>
</kw>
<doc>Verify flow stats are not frozen for flow 1 and switch 1.</doc>
<status status="PASS" start="2026-04-08T00:58:32.356968" elapsed="5.058526"/>
</kw>
<arg>30s</arg>
<arg>1s</arg>
<arg>Check Flow Stats Are Not Frozen</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-08T00:58:32.356499" elapsed="5.059049"/>
</kw>
<doc>Check that duration flow stat is increasing.</doc>
<status status="PASS" start="2026-04-08T00:58:32.034036" elapsed="5.381631"/>
</test>
<test id="s1-s4-t5" name="Check Flows In Operational DS" line="56">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-08T00:58:37.419362" elapsed="0.000208"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-08T00:58:37.419076" elapsed="0.000693"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:58:37.420850" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:58:37.420729" elapsed="0.000167"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:37.420704" elapsed="0.000216"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:58:37.425791" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:58:37.425677" elapsed="0.000161"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:37.425653" elapsed="0.000206"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:58:37.426953" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:58:37.426550" elapsed="0.000430"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:58:37.427489" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:58:37.427145" elapsed="0.000370"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:58:37.427559" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:58:37.427720" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:58:37.426090" elapsed="0.001657"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:58:37.433184" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:58:37.433057" elapsed="0.000174"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:37.433038" elapsed="0.000216"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:58:37.434507" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:58:37.434385" elapsed="0.000169"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:37.434366" elapsed="0.000247"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:58:37.435086" level="INFO">${karaf_connection_index} = 476</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:58:37.434769" elapsed="0.000345"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:58:37.435537" level="INFO">${current_connection_index} = None</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:58:37.435303" elapsed="0.000261"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T00:58:37.487089" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T00:58:37.436099" elapsed="0.051129"/>
</kw>
<msg time="2026-04-08T00:58:37.487394" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T00:58:37.487443" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:58:37.435736" elapsed="0.051745"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T00:58:37.539774" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "[C "I "n "[C "O "p "e "r "a "t "i "o "n "a "l "[C "D "S "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T00:58:37.488016" elapsed="0.051874"/>
</kw>
<msg time="2026-04-08T00:58:37.540051" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T00:58:37.540099" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:58:37.487659" elapsed="0.052478"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:37.540480" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:37.540243" elapsed="0.000293"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:37.540221" elapsed="0.000340"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:37.541023" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "[C "I "n "[C "O "p "e "r "a "t "i "o "n "a "l "[C "D "S "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:37.540708" elapsed="0.000396"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:37.541424" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:37.541199" elapsed="0.000280"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:37.541178" elapsed="0.000325"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T00:58:37.541536" elapsed="0.000030"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:58:37.542988" elapsed="0.000783"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:58:37.544051" elapsed="0.000477"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:58:37.544794" elapsed="0.000403"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:58:37.542374" elapsed="0.002925"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T00:58:37.541814" elapsed="0.003547"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T00:58:37.434017" elapsed="0.111453"/>
</kw>
<msg time="2026-04-08T00:58:37.545560" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:58:37.545604" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:58:37.433408" elapsed="0.112234"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T00:58:37.545824" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-08T00:58:37.545718" elapsed="0.000164"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:37.545699" elapsed="0.000207"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:37.546319" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:37.546650" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T00:58:37.546759" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T00:58:37.432705" elapsed="0.114161"/>
</kw>
<msg time="2026-04-08T00:58:37.546959" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:58:37.547003" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:58:37.428127" elapsed="0.118914"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:37.547385" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:37.547116" elapsed="0.000324"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:37.547099" elapsed="0.000364"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T00:58:37.427980" elapsed="0.119507"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:58:37.552760" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:58:37.552647" elapsed="0.000158"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:37.552628" elapsed="0.000199"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:58:37.554026" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:58:37.553918" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:37.553900" elapsed="0.000194"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:58:37.554645" level="INFO">${karaf_connection_index} = 478</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:58:37.554346" elapsed="0.000326"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:58:37.555058" level="INFO">${current_connection_index} = None</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:58:37.554837" elapsed="0.000248"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T00:58:37.594198" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T00:58:37.555603" elapsed="0.038694"/>
</kw>
<msg time="2026-04-08T00:58:37.594475" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T00:58:37.594522" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:58:37.555265" elapsed="0.039294"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T00:58:37.639533" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "[C "I "n "[C "O "p "e "r "a "t "i "o "n "a "l "[C "D "S "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T00:58:37.595074" elapsed="0.044570"/>
</kw>
<msg time="2026-04-08T00:58:37.639804" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T00:58:37.639849" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:58:37.594730" elapsed="0.045156"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:37.640234" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:37.639966" elapsed="0.000325"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:37.639944" elapsed="0.000371"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:37.640757" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "[C "I "n "[C "O "p "e "r "a "t "i "o "n "a "l "[C "D "S "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:37.640460" elapsed="0.000369"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:37.641115" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:37.640896" elapsed="0.000294"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:37.640877" elapsed="0.000337"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T00:58:37.641246" elapsed="0.000028"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:58:37.642850" elapsed="0.000792"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:58:37.644036" elapsed="0.000478"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:58:37.644819" elapsed="0.000371"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:58:37.642233" elapsed="0.003058"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T00:58:37.641509" elapsed="0.003847"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T00:58:37.553616" elapsed="0.091840"/>
</kw>
<msg time="2026-04-08T00:58:37.645547" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:58:37.645591" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:58:37.552995" elapsed="0.092634"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T00:58:37.645818" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-08T00:58:37.645712" elapsed="0.000165"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:37.645693" elapsed="0.000208"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 2,
close the previous connection. In any case create a new connection
to karaf console for 2, set correct prompt set and login to karaf console.
Store connection index for 2 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:37.646308" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:37.646637" elapsed="0.000030"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T00:58:37.646723" elapsed="0.000019"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T00:58:37.552308" elapsed="0.094543"/>
</kw>
<msg time="2026-04-08T00:58:37.646943" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:58:37.646985" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:58:37.547754" elapsed="0.099267"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:37.647365" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:37.647096" elapsed="0.000323"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:37.647078" elapsed="0.000364"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T00:58:37.547611" elapsed="0.099854"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:58:37.652823" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:58:37.652716" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:37.652696" elapsed="0.000193"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:58:37.654029" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:58:37.653921" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:37.653903" elapsed="0.000193"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:58:37.654639" level="INFO">${karaf_connection_index} = 480</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:58:37.654342" elapsed="0.000324"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:58:37.655046" level="INFO">${current_connection_index} = None</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:58:37.654828" elapsed="0.000244"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T00:58:37.691003" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T00:58:37.655591" elapsed="0.035510"/>
</kw>
<msg time="2026-04-08T00:58:37.691297" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T00:58:37.691344" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:58:37.655252" elapsed="0.036128"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T00:58:37.746681" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "[C "I "n "[C "O "p "e "r "a "t "i "o "n "a "l "[C "D "S "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T00:58:37.691928" elapsed="0.054869"/>
</kw>
<msg time="2026-04-08T00:58:37.746975" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T00:58:37.747024" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:58:37.691579" elapsed="0.055529"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:37.747474" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:37.747231" elapsed="0.000300"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:37.747206" elapsed="0.000350"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:37.748013" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "[C "I "n "[C "O "p "e "r "a "t "i "o "n "a "l "[C "D "S "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:37.747702" elapsed="0.000383"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:37.748392" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:37.748153" elapsed="0.000294"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:37.748135" elapsed="0.000335"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T00:58:37.748503" elapsed="0.000029"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:58:37.749946" elapsed="0.000765"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:58:37.751021" elapsed="0.000477"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:58:37.751761" elapsed="0.000343"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:58:37.749330" elapsed="0.002894"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T00:58:37.748775" elapsed="0.003512"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T00:58:37.653616" elapsed="0.098771"/>
</kw>
<msg time="2026-04-08T00:58:37.752480" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:58:37.752524" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:58:37.653042" elapsed="0.099520"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T00:58:37.752747" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-08T00:58:37.752640" elapsed="0.000165"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:37.752621" elapsed="0.000208"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 3,
close the previous connection. In any case create a new connection
to karaf console for 3, set correct prompt set and login to karaf console.
Store connection index for 3 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:37.753236" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:37.753785" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T00:58:37.753857" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T00:58:37.652378" elapsed="0.101587"/>
</kw>
<msg time="2026-04-08T00:58:37.754058" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:58:37.754102" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:58:37.647743" elapsed="0.106397"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:37.754486" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:37.754232" elapsed="0.000307"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:37.754214" elapsed="0.000349"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T00:58:37.647585" elapsed="0.107001"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-08T00:58:37.427804" elapsed="0.326811"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-08T00:58:37.425305" elapsed="0.329367"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-08T00:58:37.420414" elapsed="0.334315"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:58:37.419947" elapsed="0.334828"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-08T00:58:37.416664" elapsed="0.338165"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Check Number Of Flows On Member" owner="ClusterOpenFlow">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:58:37.756760" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:58:37.756451" elapsed="0.000336"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:58:37.756833" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:58:37.756981" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:58:37.756019" elapsed="0.000987"/>
</kw>
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:58:37.858765" level="INFO">GET Request : url=http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01s3bfo0y24i1es90l47mavglv0.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:58:37.863910" level="INFO">GET Response : url=http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Transfer-Encoding': 'chunked'} 
 body={"opendaylight-inventory:nodes":{"node":[{"id":"openflow:3","flow-node-inventory:port-number":54950,"flow-node-inventory:table":[{"id":62,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":28,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":2,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":224,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":181,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":147,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":106,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":61,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":27,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":1,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":223,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":182,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":148,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":105,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":60,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":30,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":0,"flow":[{"id":"71","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.71/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":71}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":302000000}},"flags":""},{"id":"11","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.11/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":11}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":302000000}},"flags":""},{"id":"70","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.70/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":70}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":302000000}},"flags":""},{"id":"10","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.10/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":10}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":302000000}},"flags":""},{"id":"60","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.60/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":60}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":302000000}},"flags":""},{"id":"13","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.13/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":13}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":302000000}},"flags":""},{"id":"12","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.12/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":12}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":302000000}},"flags":""},{"id":"80","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.80/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":80}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":302000000}},"flags":""},{"id":"93","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.93/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":93}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":302000000}},"flags":""},{"id":"92","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.92/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":92}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":302000000}},"flags":""},{"id":"82","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.82/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":82}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":302000000}},"flags":""},{"id":"91","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.91/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":91}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":302000000}},"flags":""},{"id":"81","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.81/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":81}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":302000000}},"flags":""},{"id":"90","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.90/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":90}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":302000000}},"flags":""},{"id":"9","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.9/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":9}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":301000000}},"flags":""},{"id":"84","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.84/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":84}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":302000000}},"flags":""},{"id":"97","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.97/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":97}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"... (set the log level to DEBUG or TRACE to see the full content) 
 </msg>
<msg time="2026-04-08T00:58:37.864264" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${RFC8040_OPERATIONAL_NODES_API}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:58:37.757179" elapsed="0.107124"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:37.868626" level="INFO">{"opendaylight-inventory:nodes":{"node":[{"id":"openflow:3","flow-node-inventory:port-number":54950,"flow-node-inventory:table":[{"id":62,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":28,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":2,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":224,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":181,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":147,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":106,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":61,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":27,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":1,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":223,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":182,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":148,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":105,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":60,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":30,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":0,"flow":[{"id":"71","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.71/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":71}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":302000000}},"flags":""},{"id":"11","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.11/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":11}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":302000000}},"flags":""},{"id":"70","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.70/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":70}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":302000000}},"flags":""},{"id":"10","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.10/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":10}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":302000000}},"flags":""},{"id":"60","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.60/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":60}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":302000000}},"flags":""},{"id":"13","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.13/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":13}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":302000000}},"flags":""},{"id":"12","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.12/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":12}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":302000000}},"flags":""},{"id":"80","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.80/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":80}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":302000000}},"flags":""},{"id":"93","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.93/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":93}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":302000000}},"flags":""},{"id":"92","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.92/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":92}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":302000000}},"flags":""},{"id":"82","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.82/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":82}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":302000000}},"flags":""},{"id":"91","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.91/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":91}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":302000000}},"flags":""},{"id":"81","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.81/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":81}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":302000000}},"flags":""},{"id":"90","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.90/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":90}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":302000000}},"flags":""},{"id":"9","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.9/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":9}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":301000000}},"flags":""},{"id":"84","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.84/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":84}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":302000000}},"flags":""},{"id":"97","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.97/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":97}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":302000000}},"flags":""},{"id":"66","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.66/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":66}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":302000000}},"flags":""},{"id":"79","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.79/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":79}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":302000000}},"flags":""},{"id":"54","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.54/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":54}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":301000000}},"flags":""},{"id":"45","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.45/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":45}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":301000000}},"flags":""},{"id":"83","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.83/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":83}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":302000000}},"flags":""},{"id":"96","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.96/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":96}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":301000000}},"flags":""},{"id":"65","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.65/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":65}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":302000000}},"flags":""},{"id":"78","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.78/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":78}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":302000000}},"flags":""},{"id":"20","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.20/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":20}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":301000000}},"flags":""},{"id":"55","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.55/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":55}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":301000000}},"flags":""},{"id":"46","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.46/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":46}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":301000000}},"flags":""},{"id":"7","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.7/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":7}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":301000000}},"flags":""},{"id":"86","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.86/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":86}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":302000000}},"flags":""},{"id":"95","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.95/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":95}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":301000000}},"flags":""},{"id":"68","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.68/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":68}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":302000000}},"flags":""},{"id":"77","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.77/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":77}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":302000000}},"flags":""},{"id":"30","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.30/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":30}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":301000000}},"flags":""},{"id":"56","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.56/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":56}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":301000000}},"flags":""},{"id":"43","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.43/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":43}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":301000000}},"flags":""},{"id":"8","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.8/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":8}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":301000000}},"flags":""},{"id":"85","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.85/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":85}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":302000000}},"flags":""},{"id":"94","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.94/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":94}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":301000000}},"flags":""},{"id":"67","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.67/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":67}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":302000000}},"flags":""},{"id":"76","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.76/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":76}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":302000000}},"flags":""},{"id":"31","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.31/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":31}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":301000000}},"flags":""},{"id":"57","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.57/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":57}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":301000000}},"flags":""},{"id":"44","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.44/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":44}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":301000000}},"flags":""},{"id":"5","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.5/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":5}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":301000000}},"flags":""},{"id":"88","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.88/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":88}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":302000000}},"flags":""},{"id":"62","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.62/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":62}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":302000000}},"flags":""},{"id":"75","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.75/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":75}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":302000000}},"flags":""},{"id":"32","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.32/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":32}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":301000000}},"flags":""},{"id":"23","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.23/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":23}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":301000000}},"flags":""},{"id":"50","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.50/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":50}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":298000000}},"flags":""},{"id":"41","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.41/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":41}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":301000000}},"flags":""},{"id":"6","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.6/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":6}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":301000000}},"flags":""},{"id":"100","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.100/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":100}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":302000000}},"flags":""},{"id":"87","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.87/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":87}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":302000000}},"flags":""},{"id":"61","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.61/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":61}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":302000000}},"flags":""},{"id":"74","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.74/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":74}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":302000000}},"flags":""},{"id":"33","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.33/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":33}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":301000000}},"flags":""},{"id":"24","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.24/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":24}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":301000000}},"flags":""},{"id":"51","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.51/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":51}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":298000000}},"flags":""},{"id":"42","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.42/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":42}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":301000000}},"flags":""},{"id":"3","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.3/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":3}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":301000000}},"flags":""},{"id":"99","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.99/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":99}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":302000000}},"flags":""},{"id":"64","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.64/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":64}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":302000000}},"flags":""},{"id":"73","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.73/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":73}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":302000000}},"flags":""},{"id":"34","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.34/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":34}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":301000000}},"flags":""},{"id":"21","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.21/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":21}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":301000000}},"flags":""},{"id":"52","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.52/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":52}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":301000000}},"flags":""},{"id":"#UF$TABLE*0-3","table_id":0,"priority":0,"cookie_mask":"0","idle-timeout":0,"cookie":"10","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"output-action":{"max-length":65535,"output-node-connector":"CONTROLLER"}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"2","byte-count":"155","duration":{"second":6,"nanosecond":173000000}},"flags":"SEND_FLOW_REM"},{"id":"4","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.4/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":4}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":301000000}},"flags":""},{"id":"89","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.89/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":89}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":302000000}},"flags":""},{"id":"98","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.98/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":98}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":302000000}},"flags":""},{"id":"63","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.63/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":63}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":302000000}},"flags":""},{"id":"72","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.72/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":72}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":302000000}},"flags":""},{"id":"35","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.35/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":35}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":301000000}},"flags":""},{"id":"22","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.22/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":22}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":301000000}},"flags":""},{"id":"53","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.53/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":53}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":301000000}},"flags":""},{"id":"40","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.40/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":40}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":301000000}},"flags":""},{"id":"37","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.37/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":37}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":301000000}},"flags":""},{"id":"28","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.28/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":28}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":301000000}},"flags":""},{"id":"36","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.36/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":36}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":301000000}},"flags":""},{"id":"27","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.27/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":27}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":301000000}},"flags":""},{"id":"39","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.39/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":39}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":301000000}},"flags":""},{"id":"26","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.26/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":26}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":301000000}},"flags":""},{"id":"38","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.38/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":38}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":301000000}},"flags":""},{"id":"25","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.25/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":25}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":301000000}},"flags":""},{"id":"69","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.69/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":69}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":302000000}},"flags":""},{"id":"59","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.59/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":59}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":301000000}},"flags":""},{"id":"58","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.58/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":58}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":301000000}},"flags":""},{"id":"49","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.49/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":49}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":301000000}},"flags":""},{"id":"48","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.48/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":48}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":301000000}},"flags":""},{"id":"29","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.29/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":29}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":301000000}},"flags":""},{"id":"47","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.47/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":47}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":301000000}},"flags":""},{"id":"18","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.18/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":18}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":302000000}},"flags":""},{"id":"19","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.19/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":19}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":302000000}},"flags":""},{"id":"14","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.14/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":14}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":302000000}},"flags":""},{"id":"15","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.15/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":15}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":302000000}},"flags":""},{"id":"1","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.1/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":1}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":302000000}},"flags":""},{"id":"16","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.16/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":16}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":302000000}},"flags":""},{"id":"2","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.2/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":2}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":302000000}},"flags":""},{"id":"17","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.17/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":17}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":302000000}},"flags":""}],"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"20","active-flows":101,"packets-matched":"12"}},{"id":226,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":179,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":149,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":104,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":59,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":29,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":225,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":180,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":150,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":103,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":66,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":32,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":220,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":185,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":151,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":102,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":65,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":31,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":253,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":219,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":186,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":152,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":101,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":64,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":34,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":252,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":222,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":183,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":153,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":100,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":63,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":33,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":251,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":221,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":184,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":154,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":99,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":54,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":20,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":250,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":216,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":189,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":155,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":129,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":114,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":53,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":19,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":249,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":215,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":190,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":156,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":130,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":113,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":52,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":22,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":248,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":218,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":187,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":157,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":112,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":51,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":21,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":247,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":217,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":188,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":158,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":128,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":111,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":58,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":24,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":246,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":212,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":193,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":159,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":110,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":57,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":23,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":245,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":211,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":194,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":160,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":109,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":56,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":26,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":244,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":214,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":191,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":161,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":108,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":55,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":25,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":243,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":213,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":192,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":162,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":107,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":77,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":43,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":17,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":239,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":198,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":164,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":138,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":119,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":89,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":78,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":44,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":18,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":240,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":197,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":163,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":137,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":120,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":90,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":75,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":45,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":15,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":241,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":196,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":166,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":136,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":121,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":87,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":76,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":46,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":16,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":242,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":195,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":165,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":135,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":122,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":88,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":81,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":47,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":13,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":235,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":202,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":168,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":134,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":115,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":85,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":82,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":48,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":14,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":236,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":201,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":167,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":133,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":116,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":86,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":79,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":49,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":11,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":237,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":200,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":170,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":132,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":117,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":83,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":80,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":50,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":12,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":238,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":199,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":169,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":131,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":118,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":84,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":69,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":35,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":9,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":231,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":206,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":172,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":146,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":127,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":97,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":70,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":36,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":10,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":232,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":205,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":171,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":145,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":98,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":67,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":37,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":7,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":233,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":204,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":174,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":144,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":95,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":68,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":38,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":8,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":234,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":203,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":173,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":143,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":96,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":73,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":39,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":5,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":227,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":210,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":176,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":142,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":123,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":93,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":74,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":40,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":6,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":228,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":209,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":175,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":141,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":124,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":94,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":71,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":41,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":3,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":229,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":208,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":178,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":140,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":125,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":91,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":72,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":42,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":4,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":230,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":207,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":177,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":139,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":126,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":92,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}}],"opendaylight-group-statistics:group-features":{"max-groups":[4294967040],"group-types-supported":["opendaylight-group-types:group-all","opendaylight-group-types:group-ff","opendaylight-group-types:group-select","opendaylight-group-types:group-indirect"],"group-capabilities-supported":["opendaylight-group-types:chaining","opendaylight-group-types:select-weight","opendaylight-group-types:select-liveness"],"actions":[67076097]},"flow-node-inventory:manufacturer":"Nicira, Inc.","flow-node-inventory:description":"s3","flow-node-inventory:hardware":"Open vSwitch","flow-node-inventory:switch-features":{"max_tables":254,"capabilities":["flow-node-inventory:flow-feature-capability-table-stats","flow-node-inventory:flow-feature-capability-group-stats","flow-node-inventory:flow-feature-capability-queue-stats","flow-node-inventory:flow-feature-capability-flow-stats","flow-node-inventory:flow-feature-capability-port-stats"],"max_buffers":0},"flow-node-inventory:snapshot-gathering-status-start":{"begin":"2026-04-08T00:58:36.167Z"},"flow-node-inventory:software":"2.17.11","node-connector":[{"id":"openflow:3:LOCAL","flow-node-inventory:port-number":4294967294,"flow-node-inventory:hardware-address":"c2:87:c1:60:0d:43","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s3","flow-node-inventory:current-feature":"","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":0,"flow-node-inventory:state":{"live":false,"blocked":false,"link-down":true},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"PORT-DOWN","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"0","received":"0"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":11,"nanosecond":520000000},"bytes":{"transmitted":"0","received":"0"},"receive-crc-error":"0"}},{"id":"openflow:3:2","flow-node-inventory:port-number":2,"flow-node-inventory:hardware-address":"9e:72:98:8c:46:72","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s3-eth2","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"11","received":"15"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":11,"nanosecond":523000000},"bytes":{"transmitted":"932","received":"1284"},"receive-crc-error":"0"}},{"id":"openflow:3:1","flow-node-inventory:port-number":1,"flow-node-inventory:hardware-address":"ca:ac:9a:41:42:1c","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s3-eth1","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"17","received":"7"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":11,"nanosecond":523000000},"bytes":{"transmitted":"1460","received":"586"},"receive-crc-error":"0"}}],"flow-node-inventory:ip-address":"10.30.170.192","flow-node-inventory:serial-number":"None","flow-node-inventory:group":[{"group-id":56,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":56000}}],"watch_group":56000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":56,"duration":{"second":7,"nanosecond":310000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":22,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":22000}}],"watch_group":22000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":22,"duration":{"second":7,"nanosecond":310000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":99,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":99000}}],"watch_group":99000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":99,"duration":{"second":7,"nanosecond":310000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":34000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":34000,"duration":{"second":10,"nanosecond":140000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":89000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":89000,"duration":{"second":10,"nanosecond":139000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":60000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":60000,"duration":{"second":10,"nanosecond":136000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":91000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":91000,"duration":{"second":10,"nanosecond":136000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":57,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":57000}}],"watch_group":57000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":57,"duration":{"second":7,"nanosecond":310000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":23,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":23000}}],"watch_group":23000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":23,"duration":{"second":6,"nanosecond":813000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":14000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":14000,"duration":{"second":10,"nanosecond":136000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":98,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":98000}}],"watch_group":98000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":98,"duration":{"second":6,"nanosecond":812000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":56000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":56000,"duration":{"second":10,"nanosecond":136000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":85000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":85000,"duration":{"second":10,"nanosecond":136000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":54,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":54000}}],"watch_group":54000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":54,"duration":{"second":6,"nanosecond":812000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":24,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":24000}}],"watch_group":24000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":24,"duration":{"second":6,"nanosecond":812000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":36000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":36000,"duration":{"second":10,"nanosecond":136000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":87000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":87000,"duration":{"second":10,"nanosecond":136000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":59000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":59000,"duration":{"second":10,"nanosecond":136000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":25000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":25000,"duration":{"second":10,"nanosecond":136000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":43000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":43000,"duration":{"second":10,"nanosecond":135000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":55,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":55000}}],"watch_group":55000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":55,"duration":{"second":6,"nanosecond":812000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":25,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":25000}}],"watch_group":25000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":25,"duration":{"second":9,"nanosecond":818000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":100,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":100000}}],"watch_group":100000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":100,"duration":{"second":6,"nanosecond":812000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":58000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":58000,"duration":{"second":9,"nanosecond":818000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":86000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":86000,"duration":{"second":9,"nanosecond":818000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":60,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":60000}}],"watch_group":60000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":60,"duration":{"second":9,"nanosecond":818000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":26,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":26000}}],"watch_group":26000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":26,"duration":{"second":6,"nanosecond":812000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":41000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":41000,"duration":{"second":9,"nanosecond":817000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":95,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":95000}}],"watch_group":95000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":95,"duration":{"second":6,"nanosecond":812000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":82000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":82000,"duration":{"second":9,"nanosecond":817000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":61,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":61000}}],"watch_group":61000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":61,"duration":{"second":6,"nanosecond":812000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":27,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":27000}}],"watch_group":27000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":27,"duration":{"second":6,"nanosecond":807000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":94,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":94000}}],"watch_group":94000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":94,"duration":{"second":6,"nanosecond":807000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":98000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":98000,"duration":{"second":9,"nanosecond":816000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":27000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":27000,"duration":{"second":9,"nanosecond":816000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":57000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":57000,"duration":{"second":9,"nanosecond":815000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":16000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":16000,"duration":{"second":9,"nanosecond":814000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":83000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":83000,"duration":{"second":9,"nanosecond":814000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":58,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":58000}}],"watch_group":58000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":58,"duration":{"second":9,"nanosecond":315000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":28,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":28000}}],"watch_group":28000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":28,"duration":{"second":6,"nanosecond":807000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":97,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":97000}}],"watch_group":97000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":97,"duration":{"second":6,"nanosecond":807000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":100000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":100000,"duration":{"second":9,"nanosecond":315000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":59,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":59000}}],"watch_group":59000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":59,"duration":{"second":9,"nanosecond":315000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":38000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":38000,"duration":{"second":9,"nanosecond":315000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":29,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":29000}}],"watch_group":29000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":29,"duration":{"second":6,"nanosecond":807000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":96,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":96000}}],"watch_group":96000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":96,"duration":{"second":6,"nanosecond":807000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":84000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":84000,"duration":{"second":9,"nanosecond":315000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":64,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":64000}}],"watch_group":64000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":64,"duration":{"second":6,"nanosecond":807000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":30,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":30000}}],"watch_group":30000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":30,"duration":{"second":6,"nanosecond":807000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":4,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":4000}}],"watch_group":4000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":4,"duration":{"second":6,"nanosecond":807000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":91,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":91000}}],"watch_group":91000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":91,"duration":{"second":9,"nanosecond":315000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":7000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":7000,"duration":{"second":9,"nanosecond":315000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":29000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":29000,"duration":{"second":9,"nanosecond":315000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":65,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":65000}}],"watch_group":65000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":65,"duration":{"second":6,"nanosecond":807000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":31,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":31000}}],"watch_group":31000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":31,"duration":{"second":6,"nanosecond":807000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":5,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":5000}}],"watch_group":5000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":5,"duration":{"second":6,"nanosecond":807000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":90,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":90000}}],"watch_group":90000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":90,"duration":{"second":6,"nanosecond":807000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":18000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":18000,"duration":{"second":9,"nanosecond":314000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":62,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":62000}}],"watch_group":62000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":62,"duration":{"second":6,"nanosecond":807000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":65000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":65000,"duration":{"second":9,"nanosecond":314000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":32,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":32000}}],"watch_group":32000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":32,"duration":{"second":6,"nanosecond":807000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":2,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":2000}}],"watch_group":2000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":2,"duration":{"second":6,"nanosecond":807000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":93,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":93000}}],"watch_group":93000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":93,"duration":{"second":6,"nanosecond":807000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":64000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":64000,"duration":{"second":9,"nanosecond":313000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":63,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":63000}}],"watch_group":63000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":63,"duration":{"second":6,"nanosecond":807000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":33,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":33000}}],"watch_group":33000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":33,"duration":{"second":6,"nanosecond":807000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":3,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":3000}}],"watch_group":3000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":3,"duration":{"second":6,"nanosecond":807000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":80000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":80000,"duration":{"second":9,"nanosecond":312000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":9000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":9000,"duration":{"second":9,"nanosecond":312000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":92,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":92000}}],"watch_group":92000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":92,"duration":{"second":6,"nanosecond":807000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":5000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":5000,"duration":{"second":9,"nanosecond":312000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":20000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":20000,"duration":{"second":9,"nanosecond":312000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":81000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":81000,"duration":{"second":9,"nanosecond":312000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":97000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":97000,"duration":{"second":9,"nanosecond":312000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":31000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":31000,"duration":{"second":9,"nanosecond":312000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":68,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":68000}}],"watch_group":68000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":68,"duration":{"second":6,"nanosecond":807000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":11000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":11000,"duration":{"second":9,"nanosecond":312000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":34,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":34000}}],"watch_group":34000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":34,"duration":{"second":9,"nanosecond":312000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":78000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":78000,"duration":{"second":9,"nanosecond":311000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":87,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":87000}}],"watch_group":87000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":87,"duration":{"second":9,"nanosecond":311000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":93000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":93000,"duration":{"second":9,"nanosecond":311000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":63000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":63000,"duration":{"second":9,"nanosecond":311000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":69,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":69000}}],"watch_group":69000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":69,"duration":{"second":6,"nanosecond":807000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":35,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":35000}}],"watch_group":35000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":35,"duration":{"second":6,"nanosecond":807000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":1,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":1000}}],"watch_group":1000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":1,"duration":{"second":6,"nanosecond":807000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":33000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":33000,"duration":{"second":9,"nanosecond":307000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":79000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":79000,"duration":{"second":9,"nanosecond":307000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":86,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":86000}}],"watch_group":86000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":86,"duration":{"second":9,"nanosecond":307000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":62000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":62000,"duration":{"second":9,"nanosecond":307000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":66,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":66000}}],"watch_group":66000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":66,"duration":{"second":6,"nanosecond":807000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":77000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":77000,"duration":{"second":9,"nanosecond":307000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":36,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":36000}}],"watch_group":36000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":36,"duration":{"second":9,"nanosecond":307000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":89,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":89000}}],"watch_group":89000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":89,"duration":{"second":9,"nanosecond":307000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":22000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":22000,"duration":{"second":9,"nanosecond":307000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":95000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":95000,"duration":{"second":9,"nanosecond":307000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":67,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":67000}}],"watch_group":67000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":67,"duration":{"second":6,"nanosecond":807000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":37,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":37000}}],"watch_group":37000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":37,"duration":{"second":6,"nanosecond":807000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":1000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":1000,"duration":{"second":9,"nanosecond":306000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":88,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":88000}}],"watch_group":88000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":88,"duration":{"second":6,"nanosecond":807000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":61000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":61000,"duration":{"second":9,"nanosecond":306000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":3000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":3000,"duration":{"second":9,"nanosecond":306000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":73,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":73000}}],"watch_group":73000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":73,"duration":{"second":6,"nanosecond":807000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":39,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":39000}}],"watch_group":39000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":39,"duration":{"second":6,"nanosecond":802000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":13,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":13000}}],"watch_group":13000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":13,"duration":{"second":6,"nanosecond":802000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":74000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":74000,"duration":{"second":9,"nanosecond":306000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":15000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":15000,"duration":{"second":9,"nanosecond":306000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":44000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":44000,"duration":{"second":9,"nanosecond":306000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":45000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":45000,"duration":{"second":9,"nanosecond":306000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":68000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":68000,"duration":{"second":9,"nanosecond":306000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":72,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":72000}}],"watch_group":72000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":72,"duration":{"second":6,"nanosecond":802000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":38,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":38000}}],"watch_group":38000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":38,"duration":{"second":8,"nanosecond":816000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":75000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":75000,"duration":{"second":8,"nanosecond":816000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":12,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":12000}}],"watch_group":12000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":12,"duration":{"second":6,"nanosecond":802000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":35000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":35000,"duration":{"second":8,"nanosecond":816000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":24000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":24000,"duration":{"second":8,"nanosecond":816000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":90000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":90000,"duration":{"second":8,"nanosecond":816000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":71,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":71000}}],"watch_group":71000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":71,"duration":{"second":6,"nanosecond":802000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":41,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":41000}}],"watch_group":41000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":41,"duration":{"second":8,"nanosecond":815000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":42000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":42000,"duration":{"second":8,"nanosecond":815000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":11,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":11000}}],"watch_group":11000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":11,"duration":{"second":8,"nanosecond":815000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":92000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":92000,"duration":{"second":8,"nanosecond":814000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":46000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":46000,"duration":{"second":8,"nanosecond":814000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":67000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":67000,"duration":{"second":8,"nanosecond":814000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":70,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":70000}}],"watch_group":70000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":70,"duration":{"second":6,"nanosecond":802000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":76000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":76000,"duration":{"second":8,"nanosecond":813000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":40,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":40000}}],"watch_group":40000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":40,"duration":{"second":6,"nanosecond":802000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":13000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":13000,"duration":{"second":8,"nanosecond":813000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":10,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":10000}}],"watch_group":10000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":10,"duration":{"second":6,"nanosecond":802000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":88000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":88000,"duration":{"second":8,"nanosecond":813000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":47000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":47000,"duration":{"second":8,"nanosecond":813000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":66000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":66000,"duration":{"second":8,"nanosecond":813000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":77,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":77000}}],"watch_group":77000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":77,"duration":{"second":8,"nanosecond":813000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":43,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":43000}}],"watch_group":43000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":43,"duration":{"second":8,"nanosecond":812000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":9,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":9000}}],"watch_group":9000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":9,"duration":{"second":8,"nanosecond":812000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":99000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":99000,"duration":{"second":8,"nanosecond":812000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":26000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":26000,"duration":{"second":8,"nanosecond":812000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":70000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":70000,"duration":{"second":8,"nanosecond":811000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":76,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":76000}}],"watch_group":76000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":76,"duration":{"second":8,"nanosecond":315000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":42,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":42000}}],"watch_group":42000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":42,"duration":{"second":8,"nanosecond":314000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":8,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":8000}}],"watch_group":8000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":8,"duration":{"second":6,"nanosecond":802000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":37000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":37000,"duration":{"second":8,"nanosecond":314000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":49000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":49000,"duration":{"second":8,"nanosecond":314000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":71000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":71000,"duration":{"second":8,"nanosecond":314000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":48000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":48000,"duration":{"second":8,"nanosecond":313000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":75,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":75000}}],"watch_group":75000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":75,"duration":{"second":8,"nanosecond":309000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":45,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":45000}}],"watch_group":45000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":45,"duration":{"second":8,"nanosecond":309000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":7,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":7000}}],"watch_group":7000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":7,"duration":{"second":8,"nanosecond":309000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":39000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":39000,"duration":{"second":8,"nanosecond":309000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":73000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":73000,"duration":{"second":8,"nanosecond":309000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":69000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":69000,"duration":{"second":8,"nanosecond":309000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":17000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":17000,"duration":{"second":8,"nanosecond":309000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":28000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":28000,"duration":{"second":8,"nanosecond":309000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":74,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":74000}}],"watch_group":74000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":74,"duration":{"second":8,"nanosecond":309000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":44,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":44000}}],"watch_group":44000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":44,"duration":{"second":8,"nanosecond":309000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":6,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":6000}}],"watch_group":6000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":6,"duration":{"second":6,"nanosecond":802000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":40000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":40000,"duration":{"second":8,"nanosecond":309000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":81,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":81000}}],"watch_group":81000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":81,"duration":{"second":8,"nanosecond":309000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":47,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":47000}}],"watch_group":47000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":47,"duration":{"second":8,"nanosecond":309000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":21,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":21000}}],"watch_group":21000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":21,"duration":{"second":6,"nanosecond":802000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":8000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":8000,"duration":{"second":8,"nanosecond":309000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":19000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":19000,"duration":{"second":8,"nanosecond":308000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":96000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":96000,"duration":{"second":8,"nanosecond":308000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":80,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":80000}}],"watch_group":80000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":80,"duration":{"second":8,"nanosecond":308000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":46,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":46000}}],"watch_group":46000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":46,"duration":{"second":8,"nanosecond":308000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":20,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":20000}}],"watch_group":20000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":20,"duration":{"second":8,"nanosecond":308000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":52000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":52000,"duration":{"second":8,"nanosecond":308000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":6000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":6000,"duration":{"second":8,"nanosecond":308000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":79,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":79000}}],"watch_group":79000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":79,"duration":{"second":8,"nanosecond":307000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":49,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":49000}}],"watch_group":49000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":49,"duration":{"second":7,"nanosecond":815000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":19,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":19000}}],"watch_group":19000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":19,"duration":{"second":7,"nanosecond":814000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":50000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":50000,"duration":{"second":7,"nanosecond":814000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":72000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":72000,"duration":{"second":7,"nanosecond":814000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":30000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":30000,"duration":{"second":7,"nanosecond":814000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":78,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":78000}}],"watch_group":78000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":78,"duration":{"second":7,"nanosecond":814000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":48,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":48000}}],"watch_group":48000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":48,"duration":{"second":7,"nanosecond":813000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":18,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":18000}}],"watch_group":18000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":18,"duration":{"second":7,"nanosecond":813000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":51000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":51000,"duration":{"second":7,"nanosecond":813000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":85,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":85000}}],"watch_group":85000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":85,"duration":{"second":7,"nanosecond":813000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":55000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":55000,"duration":{"second":7,"nanosecond":813000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":51,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":51000}}],"watch_group":51000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":51,"duration":{"second":7,"nanosecond":314000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":17,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":17000}}],"watch_group":17000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":17,"duration":{"second":7,"nanosecond":314000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":21000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":21000,"duration":{"second":7,"nanosecond":314000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":4000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":4000,"duration":{"second":7,"nanosecond":314000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":84,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":84000}}],"watch_group":84000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":84,"duration":{"second":7,"nanosecond":314000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":50,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":50000}}],"watch_group":50000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":50,"duration":{"second":7,"nanosecond":314000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":16,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":16000}}],"watch_group":16000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":16,"duration":{"second":7,"nanosecond":313000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":10000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":10000,"duration":{"second":7,"nanosecond":313000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":54000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":54000,"duration":{"second":7,"nanosecond":313000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":83,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":83000}}],"watch_group":83000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":83,"duration":{"second":7,"nanosecond":313000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":32000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":32000,"duration":{"second":7,"nanosecond":313000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":53,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":53000}}],"watch_group":53000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":53,"duration":{"second":6,"nanosecond":802000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":15,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":15000}}],"watch_group":15000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":15,"duration":{"second":7,"nanosecond":312000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":2000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":2000,"duration":{"second":7,"nanosecond":312000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":82,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":82000}}],"watch_group":82000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":82,"duration":{"second":7,"nanosecond":312000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":52,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":52000}}],"watch_group":52000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":52,"duration":{"second":7,"nanosecond":312000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":14,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":14000}}],"watch_group":14000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":14,"duration":{"second":7,"nanosecond":312000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":53000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":53000,"duration":{"second":7,"nanosecond":311000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":12000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":12000,"duration":{"second":7,"nanosecond":311000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":23000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":23000,"duration":{"second":7,"nanosecond":310000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":94000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":94000,"duration":{"second":7,"nanosecond":310000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}}],"flow-node-inventory:snapshot-gathering-status-end":{"succeeded":true,"end":"2026-04-08T00:58:36.240Z"}},{"id":"openflow:1","flow-node-inventory:port-number":54934,"flow-node-inventory:table":[{"id":62,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":28,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":2,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":224,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":181,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":147,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":106,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":61,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":27,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":1,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":223,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":182,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":148,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":105,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":60,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":30,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":0,"flow":[{"id":"71","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.71/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":71}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":231000000}},"flags":""},{"id":"11","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.11/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":11}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":230000000}},"flags":""},{"id":"70","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.70/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":70}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":231000000}},"flags":""},{"id":"10","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.10/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":10}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":230000000}},"flags":""},{"id":"60","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.60/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":60}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":231000000}},"flags":""},{"id":"13","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.13/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":13}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":230000000}},"flags":""},{"id":"12","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.12/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":12}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":230000000}},"flags":""},{"id":"80","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.80/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":80}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":231000000}},"flags":""},{"id":"93","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.93/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":93}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":230000000}},"flags":""},{"id":"92","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.92/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":92}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":230000000}},"flags":""},{"id":"82","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.82/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":82}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":231000000}},"flags":""},{"id":"91","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.91/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":91}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":230000000}},"flags":""},{"id":"81","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.81/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":81}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":231000000}},"flags":""},{"id":"90","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.90/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":90}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":230000000}},"flags":""},{"id":"9","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.9/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":9}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":231000000}},"flags":""},{"id":"84","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.84/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":84}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":230000000}},"flags":""},{"id":"97","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.97/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":97}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":230000000}},"flags":""},{"id":"66","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.66/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":66}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":231000000}},"flags":""},{"id":"79","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.79/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":79}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":231000000}},"flags":""},{"id":"54","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.54/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":54}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":230000000}},"flags":""},{"id":"45","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.45/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":45}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":230000000}},"flags":""},{"id":"83","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.83/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":83}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":230000000}},"flags":""},{"id":"96","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.96/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":96}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":230000000}},"flags":""},{"id":"65","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.65/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":65}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":231000000}},"flags":""},{"id":"78","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.78/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":78}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":231000000}},"flags":""},{"id":"20","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.20/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":20}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":231000000}},"flags":""},{"id":"55","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.55/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":55}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":230000000}},"flags":""},{"id":"46","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.46/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":46}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":230000000}},"flags":""},{"id":"7","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.7/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":7}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":231000000}},"flags":""},{"id":"86","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.86/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":86}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":231000000}},"flags":""},{"id":"95","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.95/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":95}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":230000000}},"flags":""},{"id":"68","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.68/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":68}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":231000000}},"flags":""},{"id":"77","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.77/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":77}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":231000000}},"flags":""},{"id":"30","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.30/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":30}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":231000000}},"flags":""},{"id":"56","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.56/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":56}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":230000000}},"flags":""},{"id":"43","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.43/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":43}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":230000000}},"flags":""},{"id":"8","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.8/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":8}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":231000000}},"flags":""},{"id":"85","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.85/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":85}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":231000000}},"flags":""},{"id":"94","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.94/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":94}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":230000000}},"flags":""},{"id":"67","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.67/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":67}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":231000000}},"flags":""},{"id":"76","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.76/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":76}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":231000000}},"flags":""},{"id":"31","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.31/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":31}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":231000000}},"flags":""},{"id":"57","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.57/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":57}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":230000000}},"flags":""},{"id":"44","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.44/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":44}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":230000000}},"flags":""},{"id":"5","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.5/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":5}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":231000000}},"flags":""},{"id":"88","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.88/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":88}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":231000000}},"flags":""},{"id":"62","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.62/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":62}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":231000000}},"flags":""},{"id":"75","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.75/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":75}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":231000000}},"flags":""},{"id":"32","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.32/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":32}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":231000000}},"flags":""},{"id":"23","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.23/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":23}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":231000000}},"flags":""},{"id":"50","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.50/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":50}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":230000000}},"flags":""},{"id":"41","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.41/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":41}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":230000000}},"flags":""},{"id":"#UF$TABLE*0-1","table_id":0,"priority":0,"cookie_mask":"0","idle-timeout":0,"cookie":"10","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"output-action":{"max-length":65535,"output-node-connector":"CONTROLLER"}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"3","byte-count":"225","duration":{"second":6,"nanosecond":121000000}},"flags":"SEND_FLOW_REM"},{"id":"6","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.6/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":6}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":231000000}},"flags":""},{"id":"100","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.100/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":100}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":231000000}},"flags":""},{"id":"87","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.87/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":87}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":231000000}},"flags":""},{"id":"61","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.61/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":61}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":231000000}},"flags":""},{"id":"74","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.74/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":74}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":231000000}},"flags":""},{"id":"33","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.33/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":33}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":231000000}},"flags":""},{"id":"24","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.24/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":24}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":231000000}},"flags":""},{"id":"51","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.51/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":51}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":230000000}},"flags":""},{"id":"42","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.42/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":42}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":230000000}},"flags":""},{"id":"3","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.3/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":3}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":231000000}},"flags":""},{"id":"99","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.99/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":99}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":230000000}},"flags":""},{"id":"64","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.64/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":64}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":231000000}},"flags":""},{"id":"73","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.73/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":73}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":231000000}},"flags":""},{"id":"34","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.34/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":34}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":231000000}},"flags":""},{"id":"21","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.21/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":21}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":231000000}},"flags":""},{"id":"52","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.52/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":52}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":230000000}},"flags":""},{"id":"4","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.4/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":4}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":231000000}},"flags":""},{"id":"89","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.89/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":89}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":231000000}},"flags":""},{"id":"98","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.98/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":98}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":230000000}},"flags":""},{"id":"63","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.63/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":63}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":231000000}},"flags":""},{"id":"72","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.72/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":72}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":231000000}},"flags":""},{"id":"35","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.35/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":35}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":231000000}},"flags":""},{"id":"22","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.22/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":22}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":231000000}},"flags":""},{"id":"53","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.53/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":53}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":230000000}},"flags":""},{"id":"40","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.40/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":40}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":230000000}},"flags":""},{"id":"37","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.37/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":37}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":231000000}},"flags":""},{"id":"28","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.28/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":28}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":230000000}},"flags":""},{"id":"36","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.36/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":36}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":231000000}},"flags":""},{"id":"27","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.27/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":27}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":230000000}},"flags":""},{"id":"39","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.39/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":39}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":231000000}},"flags":""},{"id":"26","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.26/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":26}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":231000000}},"flags":""},{"id":"38","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.38/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":38}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":231000000}},"flags":""},{"id":"25","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.25/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":25}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":231000000}},"flags":""},{"id":"69","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.69/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":69}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":231000000}},"flags":""},{"id":"59","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.59/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":59}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":230000000}},"flags":""},{"id":"58","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.58/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":58}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":230000000}},"flags":""},{"id":"49","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.49/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":49}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":231000000}},"flags":""},{"id":"48","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.48/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":48}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":230000000}},"flags":""},{"id":"29","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.29/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":29}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":230000000}},"flags":""},{"id":"47","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.47/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":47}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":230000000}},"flags":""},{"id":"18","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.18/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":18}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":230000000}},"flags":""},{"id":"19","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.19/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":19}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":230000000}},"flags":""},{"id":"14","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.14/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":14}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":230000000}},"flags":""},{"id":"15","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.15/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":15}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":230000000}},"flags":""},{"id":"1","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.1/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":1}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":230000000}},"flags":""},{"id":"16","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.16/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":16}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":230000000}},"flags":""},{"id":"2","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.2/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":2}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":230000000}},"flags":""},{"id":"17","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.17/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":17}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":230000000}},"flags":""}],"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"20","active-flows":101,"packets-matched":"13"}},{"id":226,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":179,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":149,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":104,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":59,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":29,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":225,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":180,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":150,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":103,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":66,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":32,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":220,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":185,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":151,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":102,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":65,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":31,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":253,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":219,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":186,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":152,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":101,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":64,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":34,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":252,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":222,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":183,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":153,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":100,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":63,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":33,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":251,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":221,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":184,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":154,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":99,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":54,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":20,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":250,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":216,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":189,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":155,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":129,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":114,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":53,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":19,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":249,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":215,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":190,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":156,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":130,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":113,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":52,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":22,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":248,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":218,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":187,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":157,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":112,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":51,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":21,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":247,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":217,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":188,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":158,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":128,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":111,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":58,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":24,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":246,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":212,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":193,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":159,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":110,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":57,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":23,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":245,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":211,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":194,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":160,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":109,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":56,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":26,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":244,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":214,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":191,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":161,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":108,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":55,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":25,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":243,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":213,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":192,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":162,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":107,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":77,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":43,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":17,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":239,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":198,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":164,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":138,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":119,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":89,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":78,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":44,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":18,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":240,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":197,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":163,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":137,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":120,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":90,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":75,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":45,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":15,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":241,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":196,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":166,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":136,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":121,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":87,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":76,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":46,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":16,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":242,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":195,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":165,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":135,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":122,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":88,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":81,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":47,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":13,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":235,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":202,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":168,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":134,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":115,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":85,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":82,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":48,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":14,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":236,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":201,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":167,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":133,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":116,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":86,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":79,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":49,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":11,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":237,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":200,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":170,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":132,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":117,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":83,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":80,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":50,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":12,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":238,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":199,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":169,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":131,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":118,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":84,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":69,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":35,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":9,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":231,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":206,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":172,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":146,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":127,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":97,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":70,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":36,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":10,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":232,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":205,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":171,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":145,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":98,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":67,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":37,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":7,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":233,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":204,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":174,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":144,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":95,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":68,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":38,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":8,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":234,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":203,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":173,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":143,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":96,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":73,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":39,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":5,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":227,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":210,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":176,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":142,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":123,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":93,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":74,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":40,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":6,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":228,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":209,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":175,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":141,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":124,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":94,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":71,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":41,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":3,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":229,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":208,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":178,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":140,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":125,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":91,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":72,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":42,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":4,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":230,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":207,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":177,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":139,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":126,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":92,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}}],"opendaylight-group-statistics:group-features":{"max-groups":[4294967040],"group-types-supported":["opendaylight-group-types:group-all","opendaylight-group-types:group-ff","opendaylight-group-types:group-select","opendaylight-group-types:group-indirect"],"group-capabilities-supported":["opendaylight-group-types:chaining","opendaylight-group-types:select-weight","opendaylight-group-types:select-liveness"],"actions":[67076097]},"flow-node-inventory:manufacturer":"Nicira, Inc.","flow-node-inventory:description":"s1","flow-node-inventory:hardware":"Open vSwitch","flow-node-inventory:switch-features":{"max_tables":254,"capabilities":["flow-node-inventory:flow-feature-capability-table-stats","flow-node-inventory:flow-feature-capability-group-stats","flow-node-inventory:flow-feature-capability-queue-stats","flow-node-inventory:flow-feature-capability-flow-stats","flow-node-inventory:flow-feature-capability-port-stats"],"max_buffers":0},"flow-node-inventory:snapshot-gathering-status-start":{"begin":"2026-04-08T00:58:36.121Z"},"flow-node-inventory:software":"2.17.11","node-connector":[{"id":"openflow:1:1","flow-node-inventory:port-number":1,"flow-node-inventory:hardware-address":"92:f4:e8:ea:c6:ad","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s1-eth1","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"17","received":"7"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":11,"nanosecond":492000000},"bytes":{"transmitted":"1460","received":"586"},"receive-crc-error":"0"}},{"id":"openflow:1:LOCAL","flow-node-inventory:port-number":4294967294,"flow-node-inventory:hardware-address":"e6:45:d0:5b:c7:49","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s1","flow-node-inventory:current-feature":"","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":0,"flow-node-inventory:state":{"live":false,"blocked":false,"link-down":true},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"PORT-DOWN","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"0","received":"0"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":11,"nanosecond":488000000},"bytes":{"transmitted":"0","received":"0"},"receive-crc-error":"0"}},{"id":"openflow:1:2","flow-node-inventory:port-number":2,"flow-node-inventory:hardware-address":"42:46:a8:4b:8b:86","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s1-eth2","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"11","received":"15"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":11,"nanosecond":492000000},"bytes":{"transmitted":"932","received":"1284"},"receive-crc-error":"0"}}],"flow-node-inventory:ip-address":"10.30.170.192","flow-node-inventory:serial-number":"None","flow-node-inventory:group":[{"group-id":56,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":56000}}],"watch_group":56000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":56,"duration":{"second":7,"nanosecond":401000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":22,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":22000}}],"watch_group":22000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":22,"duration":{"second":7,"nanosecond":401000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":99,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":99000}}],"watch_group":99000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":99,"duration":{"second":7,"nanosecond":401000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":34000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":34000,"duration":{"second":10,"nanosecond":94000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":89000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":89000,"duration":{"second":10,"nanosecond":94000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":60000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":60000,"duration":{"second":10,"nanosecond":94000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":91000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":91000,"duration":{"second":10,"nanosecond":94000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":57,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":57000}}],"watch_group":57000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":57,"duration":{"second":7,"nanosecond":401000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":23,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":23000}}],"watch_group":23000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":23,"duration":{"second":6,"nanosecond":901000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":14000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":14000,"duration":{"second":10,"nanosecond":94000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":98,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":98000}}],"watch_group":98000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":98,"duration":{"second":6,"nanosecond":901000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":56000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":56000,"duration":{"second":10,"nanosecond":94000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":85000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":85000,"duration":{"second":10,"nanosecond":94000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":54,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":54000}}],"watch_group":54000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":54,"duration":{"second":6,"nanosecond":901000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":24,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":24000}}],"watch_group":24000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":24,"duration":{"second":6,"nanosecond":901000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":36000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":36000,"duration":{"second":10,"nanosecond":94000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":87000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":87000,"duration":{"second":10,"nanosecond":94000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":59000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":59000,"duration":{"second":10,"nanosecond":94000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":25000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":25000,"duration":{"second":10,"nanosecond":94000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":43000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":43000,"duration":{"second":10,"nanosecond":94000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":55,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":55000}}],"watch_group":55000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":55,"duration":{"second":6,"nanosecond":901000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":25,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":25000}}],"watch_group":25000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":25,"duration":{"second":9,"nanosecond":908000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":100,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":100000}}],"watch_group":100000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":100,"duration":{"second":6,"nanosecond":901000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":58000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":58000,"duration":{"second":9,"nanosecond":905000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":86000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":86000,"duration":{"second":9,"nanosecond":905000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":60,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":60000}}],"watch_group":60000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":60,"duration":{"second":9,"nanosecond":905000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":26,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":26000}}],"watch_group":26000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":26,"duration":{"second":6,"nanosecond":901000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":41000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":41000,"duration":{"second":9,"nanosecond":905000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":95,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":95000}}],"watch_group":95000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":95,"duration":{"second":6,"nanosecond":901000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":82000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":82000,"duration":{"second":9,"nanosecond":905000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":61,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":61000}}],"watch_group":61000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":61,"duration":{"second":6,"nanosecond":901000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":27,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":27000}}],"watch_group":27000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":27,"duration":{"second":6,"nanosecond":901000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":94,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":94000}}],"watch_group":94000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":94,"duration":{"second":6,"nanosecond":901000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":98000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":98000,"duration":{"second":9,"nanosecond":905000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":27000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":27000,"duration":{"second":9,"nanosecond":905000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":57000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":57000,"duration":{"second":9,"nanosecond":905000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":16000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":16000,"duration":{"second":9,"nanosecond":905000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":83000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":83000,"duration":{"second":9,"nanosecond":905000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":58,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":58000}}],"watch_group":58000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":58,"duration":{"second":9,"nanosecond":402000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":28,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":28000}}],"watch_group":28000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":28,"duration":{"second":6,"nanosecond":901000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":97,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":97000}}],"watch_group":97000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":97,"duration":{"second":6,"nanosecond":901000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":100000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":100000,"duration":{"second":9,"nanosecond":402000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":59,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":59000}}],"watch_group":59000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":59,"duration":{"second":9,"nanosecond":402000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":38000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":38000,"duration":{"second":9,"nanosecond":402000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":29,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":29000}}],"watch_group":29000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":29,"duration":{"second":6,"nanosecond":901000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":96,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":96000}}],"watch_group":96000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":96,"duration":{"second":6,"nanosecond":901000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":84000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":84000,"duration":{"second":9,"nanosecond":402000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":64,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":64000}}],"watch_group":64000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":64,"duration":{"second":6,"nanosecond":901000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":30,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":30000}}],"watch_group":30000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":30,"duration":{"second":6,"nanosecond":901000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":4,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":4000}}],"watch_group":4000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":4,"duration":{"second":6,"nanosecond":901000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":91,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":91000}}],"watch_group":91000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":91,"duration":{"second":9,"nanosecond":402000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":7000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":7000,"duration":{"second":9,"nanosecond":402000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":29000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":29000,"duration":{"second":9,"nanosecond":402000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":65,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":65000}}],"watch_group":65000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":65,"duration":{"second":6,"nanosecond":901000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":31,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":31000}}],"watch_group":31000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":31,"duration":{"second":6,"nanosecond":901000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":5,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":5000}}],"watch_group":5000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":5,"duration":{"second":6,"nanosecond":901000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":90,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":90000}}],"watch_group":90000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":90,"duration":{"second":6,"nanosecond":901000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":18000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":18000,"duration":{"second":9,"nanosecond":402000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":62,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":62000}}],"watch_group":62000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":62,"duration":{"second":6,"nanosecond":901000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":65000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":65000,"duration":{"second":9,"nanosecond":402000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":32,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":32000}}],"watch_group":32000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":32,"duration":{"second":6,"nanosecond":901000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":2,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":2000}}],"watch_group":2000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":2,"duration":{"second":6,"nanosecond":901000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":93,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":93000}}],"watch_group":93000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":93,"duration":{"second":6,"nanosecond":901000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":64000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":64000,"duration":{"second":9,"nanosecond":402000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":63,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":63000}}],"watch_group":63000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":63,"duration":{"second":6,"nanosecond":901000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":33,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":33000}}],"watch_group":33000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":33,"duration":{"second":6,"nanosecond":901000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":3,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":3000}}],"watch_group":3000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":3,"duration":{"second":6,"nanosecond":896000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":80000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":80000,"duration":{"second":9,"nanosecond":402000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":9000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":9000,"duration":{"second":9,"nanosecond":402000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":92,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":92000}}],"watch_group":92000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":92,"duration":{"second":6,"nanosecond":896000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":5000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":5000,"duration":{"second":9,"nanosecond":402000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":20000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":20000,"duration":{"second":9,"nanosecond":402000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":81000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":81000,"duration":{"second":9,"nanosecond":402000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":97000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":97000,"duration":{"second":9,"nanosecond":402000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":31000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":31000,"duration":{"second":9,"nanosecond":402000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":68,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":68000}}],"watch_group":68000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":68,"duration":{"second":6,"nanosecond":896000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":11000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":11000,"duration":{"second":9,"nanosecond":402000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":34,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":34000}}],"watch_group":34000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":34,"duration":{"second":9,"nanosecond":402000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":78000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":78000,"duration":{"second":9,"nanosecond":402000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":87,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":87000}}],"watch_group":87000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":87,"duration":{"second":9,"nanosecond":402000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":93000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":93000,"duration":{"second":9,"nanosecond":402000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":63000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":63000,"duration":{"second":9,"nanosecond":402000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":69,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":69000}}],"watch_group":69000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":69,"duration":{"second":6,"nanosecond":896000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":35,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":35000}}],"watch_group":35000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":35,"duration":{"second":6,"nanosecond":896000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":1,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":1000}}],"watch_group":1000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":1,"duration":{"second":6,"nanosecond":896000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":33000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":33000,"duration":{"second":9,"nanosecond":402000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":79000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":79000,"duration":{"second":9,"nanosecond":400000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":86,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":86000}}],"watch_group":86000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":86,"duration":{"second":9,"nanosecond":400000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":62000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":62000,"duration":{"second":9,"nanosecond":400000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":66,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":66000}}],"watch_group":66000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":66,"duration":{"second":6,"nanosecond":896000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":77000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":77000,"duration":{"second":9,"nanosecond":400000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":36,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":36000}}],"watch_group":36000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":36,"duration":{"second":9,"nanosecond":400000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":89,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":89000}}],"watch_group":89000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":89,"duration":{"second":9,"nanosecond":399000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":22000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":22000,"duration":{"second":9,"nanosecond":399000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":95000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":95000,"duration":{"second":9,"nanosecond":399000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":67,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":67000}}],"watch_group":67000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":67,"duration":{"second":6,"nanosecond":896000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":37,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":37000}}],"watch_group":37000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":37,"duration":{"second":6,"nanosecond":896000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":1000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":1000,"duration":{"second":9,"nanosecond":399000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":88,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":88000}}],"watch_group":88000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":88,"duration":{"second":6,"nanosecond":896000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":61000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":61000,"duration":{"second":9,"nanosecond":399000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":3000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":3000,"duration":{"second":9,"nanosecond":398000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":73,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":73000}}],"watch_group":73000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":73,"duration":{"second":6,"nanosecond":896000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":39,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":39000}}],"watch_group":39000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":39,"duration":{"second":6,"nanosecond":896000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":13,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":13000}}],"watch_group":13000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":13,"duration":{"second":6,"nanosecond":896000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":74000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":74000,"duration":{"second":9,"nanosecond":398000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":15000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":15000,"duration":{"second":9,"nanosecond":398000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":44000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":44000,"duration":{"second":9,"nanosecond":398000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":45000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":45000,"duration":{"second":9,"nanosecond":398000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":68000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":68000,"duration":{"second":9,"nanosecond":398000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":72,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":72000}}],"watch_group":72000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":72,"duration":{"second":6,"nanosecond":896000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":38,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":38000}}],"watch_group":38000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":38,"duration":{"second":8,"nanosecond":910000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":75000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":75000,"duration":{"second":8,"nanosecond":910000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":12,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":12000}}],"watch_group":12000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":12,"duration":{"second":6,"nanosecond":896000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":35000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":35000,"duration":{"second":8,"nanosecond":910000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":24000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":24000,"duration":{"second":8,"nanosecond":909000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":90000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":90000,"duration":{"second":8,"nanosecond":909000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":71,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":71000}}],"watch_group":71000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":71,"duration":{"second":6,"nanosecond":896000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":41,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":41000}}],"watch_group":41000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":41,"duration":{"second":8,"nanosecond":909000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":42000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":42000,"duration":{"second":8,"nanosecond":909000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":11,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":11000}}],"watch_group":11000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":11,"duration":{"second":8,"nanosecond":908000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":92000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":92000,"duration":{"second":8,"nanosecond":908000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":46000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":46000,"duration":{"second":8,"nanosecond":908000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":67000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":67000,"duration":{"second":8,"nanosecond":908000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":70,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":70000}}],"watch_group":70000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":70,"duration":{"second":6,"nanosecond":896000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":76000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":76000,"duration":{"second":8,"nanosecond":907000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":40,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":40000}}],"watch_group":40000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":40,"duration":{"second":6,"nanosecond":896000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":13000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":13000,"duration":{"second":8,"nanosecond":904000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":10,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":10000}}],"watch_group":10000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":10,"duration":{"second":6,"nanosecond":896000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":88000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":88000,"duration":{"second":8,"nanosecond":904000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":47000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":47000,"duration":{"second":8,"nanosecond":904000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":66000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":66000,"duration":{"second":8,"nanosecond":903000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":77,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":77000}}],"watch_group":77000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":77,"duration":{"second":8,"nanosecond":903000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":43,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":43000}}],"watch_group":43000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":43,"duration":{"second":8,"nanosecond":903000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":9,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":9000}}],"watch_group":9000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":9,"duration":{"second":8,"nanosecond":903000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":99000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":99000,"duration":{"second":8,"nanosecond":903000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":26000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":26000,"duration":{"second":8,"nanosecond":903000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":70000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":70000,"duration":{"second":8,"nanosecond":903000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":76,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":76000}}],"watch_group":76000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":76,"duration":{"second":8,"nanosecond":409000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":42,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":42000}}],"watch_group":42000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":42,"duration":{"second":8,"nanosecond":407000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":8,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":8000}}],"watch_group":8000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":8,"duration":{"second":6,"nanosecond":896000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":37000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":37000,"duration":{"second":8,"nanosecond":407000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":49000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":49000,"duration":{"second":8,"nanosecond":407000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":71000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":71000,"duration":{"second":8,"nanosecond":407000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":48000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":48000,"duration":{"second":8,"nanosecond":407000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":75,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":75000}}],"watch_group":75000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":75,"duration":{"second":8,"nanosecond":407000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":45,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":45000}}],"watch_group":45000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":45,"duration":{"second":8,"nanosecond":404000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":7,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":7000}}],"watch_group":7000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":7,"duration":{"second":8,"nanosecond":404000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":39000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":39000,"duration":{"second":8,"nanosecond":404000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":73000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":73000,"duration":{"second":8,"nanosecond":403000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":69000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":69000,"duration":{"second":8,"nanosecond":403000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":17000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":17000,"duration":{"second":8,"nanosecond":403000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":28000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":28000,"duration":{"second":8,"nanosecond":403000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":74,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":74000}}],"watch_group":74000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":74,"duration":{"second":8,"nanosecond":403000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":44,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":44000}}],"watch_group":44000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":44,"duration":{"second":8,"nanosecond":403000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":6,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":6000}}],"watch_group":6000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":6,"duration":{"second":6,"nanosecond":896000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":40000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":40000,"duration":{"second":8,"nanosecond":403000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":81,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":81000}}],"watch_group":81000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":81,"duration":{"second":8,"nanosecond":403000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":47,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":47000}}],"watch_group":47000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":47,"duration":{"second":8,"nanosecond":403000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":21,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":21000}}],"watch_group":21000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":21,"duration":{"second":6,"nanosecond":896000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":8000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":8000,"duration":{"second":8,"nanosecond":403000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":19000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":19000,"duration":{"second":8,"nanosecond":403000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":96000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":96000,"duration":{"second":8,"nanosecond":403000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":80,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":80000}}],"watch_group":80000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":80,"duration":{"second":8,"nanosecond":401000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":46,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":46000}}],"watch_group":46000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":46,"duration":{"second":8,"nanosecond":401000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":20,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":20000}}],"watch_group":20000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":20,"duration":{"second":8,"nanosecond":401000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":52000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":52000,"duration":{"second":8,"nanosecond":401000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":6000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":6000,"duration":{"second":8,"nanosecond":401000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":79,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":79000}}],"watch_group":79000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":79,"duration":{"second":8,"nanosecond":401000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":49,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":49000}}],"watch_group":49000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":49,"duration":{"second":7,"nanosecond":908000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":19,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":19000}}],"watch_group":19000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":19,"duration":{"second":7,"nanosecond":908000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":50000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":50000,"duration":{"second":7,"nanosecond":908000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":72000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":72000,"duration":{"second":7,"nanosecond":908000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":30000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":30000,"duration":{"second":7,"nanosecond":907000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":78,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":78000}}],"watch_group":78000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":78,"duration":{"second":7,"nanosecond":907000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":48,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":48000}}],"watch_group":48000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":48,"duration":{"second":7,"nanosecond":906000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":18,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":18000}}],"watch_group":18000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":18,"duration":{"second":7,"nanosecond":906000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":51000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":51000,"duration":{"second":7,"nanosecond":906000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":85,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":85000}}],"watch_group":85000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":85,"duration":{"second":7,"nanosecond":906000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":55000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":55000,"duration":{"second":7,"nanosecond":905000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":51,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":51000}}],"watch_group":51000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":51,"duration":{"second":7,"nanosecond":401000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":17,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":17000}}],"watch_group":17000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":17,"duration":{"second":7,"nanosecond":401000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":21000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":21000,"duration":{"second":7,"nanosecond":401000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":4000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":4000,"duration":{"second":7,"nanosecond":401000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":84,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":84000}}],"watch_group":84000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":84,"duration":{"second":7,"nanosecond":401000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":50,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":50000}}],"watch_group":50000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":50,"duration":{"second":7,"nanosecond":401000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":16,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":16000}}],"watch_group":16000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":16,"duration":{"second":7,"nanosecond":401000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":10000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":10000,"duration":{"second":7,"nanosecond":401000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":54000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":54000,"duration":{"second":7,"nanosecond":401000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":83,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":83000}}],"watch_group":83000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":83,"duration":{"second":7,"nanosecond":401000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":32000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":32000,"duration":{"second":7,"nanosecond":401000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":53,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":53000}}],"watch_group":53000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":53,"duration":{"second":6,"nanosecond":896000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":15,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":15000}}],"watch_group":15000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":15,"duration":{"second":7,"nanosecond":401000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":2000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":2000,"duration":{"second":7,"nanosecond":401000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":82,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":82000}}],"watch_group":82000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":82,"duration":{"second":7,"nanosecond":401000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":52,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":52000}}],"watch_group":52000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":52,"duration":{"second":7,"nanosecond":401000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":14,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":14000}}],"watch_group":14000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":14,"duration":{"second":7,"nanosecond":401000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":53000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":53000,"duration":{"second":7,"nanosecond":401000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":12000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":12000,"duration":{"second":7,"nanosecond":401000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":23000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":23000,"duration":{"second":7,"nanosecond":401000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":94000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":94000,"duration":{"second":7,"nanosecond":401000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}}],"flow-node-inventory:snapshot-gathering-status-end":{"succeeded":true,"end":"2026-04-08T00:58:36.203Z"}},{"id":"openflow:2","flow-node-inventory:port-number":54944,"flow-node-inventory:table":[{"id":62,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":28,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":2,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":224,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":181,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":147,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":106,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":61,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":27,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":1,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":223,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":182,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":148,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":105,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":60,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":30,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":0,"flow":[{"id":"71","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.71/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":71}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":265000000}},"flags":""},{"id":"11","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.11/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":11}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":264000000}},"flags":""},{"id":"70","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.70/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":70}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":265000000}},"flags":""},{"id":"10","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.10/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":10}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":264000000}},"flags":""},{"id":"60","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.60/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":60}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":265000000}},"flags":""},{"id":"13","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.13/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":13}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":264000000}},"flags":""},{"id":"12","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.12/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":12}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":264000000}},"flags":""},{"id":"80","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.80/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":80}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":265000000}},"flags":""},{"id":"93","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.93/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":93}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":264000000}},"flags":""},{"id":"92","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.92/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":92}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":264000000}},"flags":""},{"id":"82","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.82/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":82}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":265000000}},"flags":""},{"id":"91","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.91/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":91}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":264000000}},"flags":""},{"id":"81","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.81/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":81}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":265000000}},"flags":""},{"id":"90","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.90/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":90}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":264000000}},"flags":""},{"id":"9","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.9/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":9}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":264000000}},"flags":""},{"id":"84","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.84/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":84}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":265000000}},"flags":""},{"id":"97","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.97/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":97}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":264000000}},"flags":""},{"id":"66","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.66/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":66}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":265000000}},"flags":""},{"id":"79","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.79/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":79}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":265000000}},"flags":""},{"id":"54","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.54/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":54}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":264000000}},"flags":""},{"id":"45","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.45/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":45}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":264000000}},"flags":""},{"id":"83","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.83/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":83}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":265000000}},"flags":""},{"id":"96","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.96/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":96}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":264000000}},"flags":""},{"id":"65","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.65/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":65}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":265000000}},"flags":""},{"id":"78","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.78/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":78}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":265000000}},"flags":""},{"id":"20","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.20/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":20}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":264000000}},"flags":""},{"id":"55","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.55/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":55}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":264000000}},"flags":""},{"id":"46","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.46/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":46}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":264000000}},"flags":""},{"id":"7","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.7/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":7}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":264000000}},"flags":""},{"id":"86","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.86/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":86}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":265000000}},"flags":""},{"id":"95","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.95/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":95}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":264000000}},"flags":""},{"id":"68","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.68/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":68}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":265000000}},"flags":""},{"id":"77","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.77/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":77}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":265000000}},"flags":""},{"id":"30","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.30/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":30}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":264000000}},"flags":""},{"id":"56","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.56/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":56}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":264000000}},"flags":""},{"id":"43","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.43/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":43}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":264000000}},"flags":""},{"id":"8","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.8/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":8}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":264000000}},"flags":""},{"id":"85","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.85/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":85}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":265000000}},"flags":""},{"id":"94","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.94/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":94}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":264000000}},"flags":""},{"id":"67","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.67/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":67}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":265000000}},"flags":""},{"id":"76","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.76/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":76}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":265000000}},"flags":""},{"id":"31","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.31/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":31}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":264000000}},"flags":""},{"id":"57","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.57/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":57}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":264000000}},"flags":""},{"id":"44","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.44/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":44}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":264000000}},"flags":""},{"id":"5","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.5/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":5}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":264000000}},"flags":""},{"id":"88","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.88/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":88}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":265000000}},"flags":""},{"id":"62","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.62/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":62}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":265000000}},"flags":""},{"id":"75","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.75/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":75}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":265000000}},"flags":""},{"id":"32","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.32/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":32}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":264000000}},"flags":""},{"id":"23","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.23/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":23}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":264000000}},"flags":""},{"id":"50","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.50/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":50}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":263000000}},"flags":""},{"id":"41","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.41/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":41}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":264000000}},"flags":""},{"id":"6","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.6/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":6}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":264000000}},"flags":""},{"id":"100","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.100/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":100}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":265000000}},"flags":""},{"id":"87","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.87/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":87}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":265000000}},"flags":""},{"id":"61","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.61/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":61}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":265000000}},"flags":""},{"id":"74","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.74/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":74}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":265000000}},"flags":""},{"id":"33","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.33/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":33}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":264000000}},"flags":""},{"id":"24","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.24/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":24}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":264000000}},"flags":""},{"id":"51","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.51/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":51}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":263000000}},"flags":""},{"id":"42","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.42/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":42}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":264000000}},"flags":""},{"id":"3","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.3/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":3}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":264000000}},"flags":""},{"id":"99","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.99/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":99}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":264000000}},"flags":""},{"id":"64","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.64/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":64}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":265000000}},"flags":""},{"id":"73","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.73/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":73}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":265000000}},"flags":""},{"id":"34","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.34/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":34}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":264000000}},"flags":""},{"id":"21","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.21/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":21}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":264000000}},"flags":""},{"id":"52","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.52/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":52}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":263000000}},"flags":""},{"id":"4","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.4/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":4}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":264000000}},"flags":""},{"id":"89","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.89/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":89}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":265000000}},"flags":""},{"id":"98","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.98/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":98}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":264000000}},"flags":""},{"id":"63","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.63/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":63}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":265000000}},"flags":""},{"id":"72","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.72/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":72}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":265000000}},"flags":""},{"id":"35","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.35/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":35}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":264000000}},"flags":""},{"id":"22","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.22/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":22}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":264000000}},"flags":""},{"id":"53","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.53/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":53}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":264000000}},"flags":""},{"id":"40","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.40/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":40}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":264000000}},"flags":""},{"id":"#UF$TABLE*0-2","table_id":0,"priority":0,"cookie_mask":"0","idle-timeout":0,"cookie":"10","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"output-action":{"max-length":65535,"output-node-connector":"CONTROLLER"}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"4","byte-count":"310","duration":{"second":6,"nanosecond":143000000}},"flags":"SEND_FLOW_REM"},{"id":"37","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.37/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":37}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":264000000}},"flags":""},{"id":"28","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.28/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":28}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":264000000}},"flags":""},{"id":"36","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.36/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":36}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":264000000}},"flags":""},{"id":"27","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.27/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":27}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":264000000}},"flags":""},{"id":"39","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.39/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":39}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":264000000}},"flags":""},{"id":"26","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.26/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":26}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":264000000}},"flags":""},{"id":"38","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.38/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":38}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":264000000}},"flags":""},{"id":"25","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.25/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":25}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":264000000}},"flags":""},{"id":"69","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.69/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":69}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":265000000}},"flags":""},{"id":"59","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.59/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":59}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":264000000}},"flags":""},{"id":"58","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.58/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":58}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":264000000}},"flags":""},{"id":"49","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.49/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":49}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":264000000}},"flags":""},{"id":"48","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.48/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":48}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":264000000}},"flags":""},{"id":"29","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.29/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":29}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":264000000}},"flags":""},{"id":"47","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.47/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":47}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":264000000}},"flags":""},{"id":"18","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.18/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":18}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":265000000}},"flags":""},{"id":"19","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.19/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":19}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":265000000}},"flags":""},{"id":"14","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.14/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":14}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":265000000}},"flags":""},{"id":"15","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.15/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":15}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":265000000}},"flags":""},{"id":"1","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.1/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":1}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":264000000}},"flags":""},{"id":"16","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.16/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":16}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":265000000}},"flags":""},{"id":"2","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.2/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":2}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":265000000}},"flags":""},{"id":"17","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.17/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":17}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":265000000}},"flags":""}],"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"26","active-flows":101,"packets-matched":"14"}},{"id":226,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":179,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":149,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":104,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":59,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":29,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":225,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":180,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":150,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":103,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":66,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":32,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":220,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":185,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":151,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":102,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":65,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":31,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":253,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":219,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":186,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":152,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":101,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":64,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":34,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":252,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":222,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":183,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":153,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":100,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":63,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":33,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":251,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":221,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":184,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":154,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":99,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":54,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":20,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":250,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":216,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":189,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":155,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":129,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":114,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":53,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":19,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":249,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":215,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":190,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":156,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":130,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":113,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":52,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":22,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":248,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":218,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":187,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":157,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":112,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":51,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":21,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":247,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":217,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":188,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":158,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":128,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":111,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":58,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":24,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":246,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":212,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":193,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":159,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":110,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":57,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":23,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":245,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":211,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":194,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":160,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":109,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":56,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":26,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":244,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":214,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":191,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":161,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":108,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":55,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":25,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":243,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":213,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":192,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":162,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":107,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":77,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":43,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":17,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":239,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":198,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":164,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":138,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":119,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":89,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":78,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":44,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":18,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":240,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":197,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":163,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":137,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":120,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":90,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":75,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":45,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":15,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":241,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":196,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":166,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":136,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":121,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":87,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":76,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":46,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":16,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":242,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":195,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":165,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":135,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":122,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":88,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":81,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":47,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":13,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":235,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":202,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":168,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":134,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":115,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":85,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":82,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":48,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":14,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":236,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":201,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":167,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":133,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":116,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":86,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":79,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":49,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":11,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":237,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":200,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":170,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":132,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":117,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":83,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":80,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":50,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":12,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":238,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":199,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":169,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":131,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":118,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":84,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":69,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":35,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":9,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":231,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":206,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":172,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":146,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":127,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":97,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":70,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":36,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":10,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":232,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":205,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":171,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":145,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":98,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":67,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":37,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":7,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":233,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":204,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":174,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":144,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":95,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":68,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":38,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":8,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":234,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":203,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":173,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":143,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":96,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":73,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":39,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":5,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":227,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":210,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":176,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":142,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":123,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":93,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":74,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":40,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":6,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":228,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":209,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":175,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":141,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":124,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":94,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":71,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":41,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":3,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":229,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":208,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":178,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":140,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":125,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":91,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":72,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":42,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":4,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":230,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":207,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":177,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":139,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":126,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":92,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}}],"opendaylight-group-statistics:group-features":{"max-groups":[4294967040],"group-types-supported":["opendaylight-group-types:group-all","opendaylight-group-types:group-ff","opendaylight-group-types:group-select","opendaylight-group-types:group-indirect"],"group-capabilities-supported":["opendaylight-group-types:chaining","opendaylight-group-types:select-weight","opendaylight-group-types:select-liveness"],"actions":[67076097]},"flow-node-inventory:manufacturer":"Nicira, Inc.","flow-node-inventory:description":"s2","flow-node-inventory:hardware":"Open vSwitch","flow-node-inventory:switch-features":{"max_tables":254,"capabilities":["flow-node-inventory:flow-feature-capability-table-stats","flow-node-inventory:flow-feature-capability-group-stats","flow-node-inventory:flow-feature-capability-queue-stats","flow-node-inventory:flow-feature-capability-flow-stats","flow-node-inventory:flow-feature-capability-port-stats"],"max_buffers":0},"flow-node-inventory:snapshot-gathering-status-start":{"begin":"2026-04-08T00:58:36.142Z"},"flow-node-inventory:software":"2.17.11","node-connector":[{"id":"openflow:2:3","flow-node-inventory:port-number":3,"flow-node-inventory:hardware-address":"da:7c:fc:7d:24:d4","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s2-eth3","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"15","received":"11"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":11,"nanosecond":489000000},"bytes":{"transmitted":"1284","received":"932"},"receive-crc-error":"0"}},{"id":"openflow:2:LOCAL","flow-node-inventory:port-number":4294967294,"flow-node-inventory:hardware-address":"ee:be:cf:9b:06:44","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s2","flow-node-inventory:current-feature":"","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":0,"flow-node-inventory:state":{"live":false,"blocked":false,"link-down":true},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"PORT-DOWN","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"0","received":"0"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":11,"nanosecond":484000000},"bytes":{"transmitted":"0","received":"0"},"receive-crc-error":"0"}},{"id":"openflow:2:2","flow-node-inventory:port-number":2,"flow-node-inventory:hardware-address":"76:f5:91:ad:d8:c6","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s2-eth2","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"15","received":"11"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":11,"nanosecond":489000000},"bytes":{"transmitted":"1284","received":"932"},"receive-crc-error":"0"}},{"id":"openflow:2:1","flow-node-inventory:port-number":1,"flow-node-inventory:hardware-address":"96:61:91:36:76:0b","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s2-eth1","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"17","received":"7"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":11,"nanosecond":489000000},"bytes":{"transmitted":"1460","received":"586"},"receive-crc-error":"0"}}],"flow-node-inventory:ip-address":"10.30.170.192","flow-node-inventory:serial-number":"None","flow-node-inventory:group":[{"group-id":56,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":56000}}],"watch_group":56000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":56,"duration":{"second":7,"nanosecond":414000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":22,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":22000}}],"watch_group":22000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":22,"duration":{"second":7,"nanosecond":414000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":99,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":99000}}],"watch_group":99000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":99,"duration":{"second":7,"nanosecond":414000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":34000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":34000,"duration":{"second":10,"nanosecond":107000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":89000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":89000,"duration":{"second":10,"nanosecond":108000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":60000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":60000,"duration":{"second":10,"nanosecond":107000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":91000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":91000,"duration":{"second":10,"nanosecond":107000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":57,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":57000}}],"watch_group":57000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":57,"duration":{"second":7,"nanosecond":414000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":23,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":23000}}],"watch_group":23000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":23,"duration":{"second":6,"nanosecond":917000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":14000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":14000,"duration":{"second":10,"nanosecond":107000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":98,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":98000}}],"watch_group":98000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":98,"duration":{"second":6,"nanosecond":917000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":56000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":56000,"duration":{"second":10,"nanosecond":107000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":85000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":85000,"duration":{"second":10,"nanosecond":107000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":54,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":54000}}],"watch_group":54000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":54,"duration":{"second":6,"nanosecond":917000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":24,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":24000}}],"watch_group":24000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":24,"duration":{"second":6,"nanosecond":917000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":36000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":36000,"duration":{"second":10,"nanosecond":107000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":87000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":87000,"duration":{"second":10,"nanosecond":107000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":59000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":59000,"duration":{"second":10,"nanosecond":107000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":25000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":25000,"duration":{"second":10,"nanosecond":107000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":43000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":43000,"duration":{"second":10,"nanosecond":108000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":55,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":55000}}],"watch_group":55000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":55,"duration":{"second":6,"nanosecond":917000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":25,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":25000}}],"watch_group":25000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":25,"duration":{"second":9,"nanosecond":923000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":100,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":100000}}],"watch_group":100000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":100,"duration":{"second":6,"nanosecond":917000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":58000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":58000,"duration":{"second":9,"nanosecond":923000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":86000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":86000,"duration":{"second":9,"nanosecond":923000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":60,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":60000}}],"watch_group":60000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":60,"duration":{"second":9,"nanosecond":922000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":26,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":26000}}],"watch_group":26000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":26,"duration":{"second":6,"nanosecond":918000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":41000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":41000,"duration":{"second":9,"nanosecond":922000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":95,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":95000}}],"watch_group":95000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":95,"duration":{"second":6,"nanosecond":917000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":82000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":82000,"duration":{"second":9,"nanosecond":922000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":61,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":61000}}],"watch_group":61000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":61,"duration":{"second":6,"nanosecond":917000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":27,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":27000}}],"watch_group":27000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":27,"duration":{"second":6,"nanosecond":917000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":94,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":94000}}],"watch_group":94000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":94,"duration":{"second":6,"nanosecond":917000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":98000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":98000,"duration":{"second":9,"nanosecond":922000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":27000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":27000,"duration":{"second":9,"nanosecond":922000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":57000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":57000,"duration":{"second":9,"nanosecond":922000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":16000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":16000,"duration":{"second":9,"nanosecond":922000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":83000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":83000,"duration":{"second":9,"nanosecond":922000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":58,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":58000}}],"watch_group":58000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":58,"duration":{"second":9,"nanosecond":422000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":28,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":28000}}],"watch_group":28000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":28,"duration":{"second":6,"nanosecond":917000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":97,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":97000}}],"watch_group":97000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":97,"duration":{"second":6,"nanosecond":917000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":100000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":100000,"duration":{"second":9,"nanosecond":422000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":59,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":59000}}],"watch_group":59000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":59,"duration":{"second":9,"nanosecond":422000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":38000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":38000,"duration":{"second":9,"nanosecond":422000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":29,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":29000}}],"watch_group":29000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":29,"duration":{"second":6,"nanosecond":917000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":96,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":96000}}],"watch_group":96000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":96,"duration":{"second":6,"nanosecond":917000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":84000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":84000,"duration":{"second":9,"nanosecond":422000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":64,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":64000}}],"watch_group":64000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":64,"duration":{"second":6,"nanosecond":917000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":30,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":30000}}],"watch_group":30000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":30,"duration":{"second":6,"nanosecond":917000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":4,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":4000}}],"watch_group":4000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":4,"duration":{"second":6,"nanosecond":913000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":91,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":91000}}],"watch_group":91000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":91,"duration":{"second":9,"nanosecond":422000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":7000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":7000,"duration":{"second":9,"nanosecond":422000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":29000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":29000,"duration":{"second":9,"nanosecond":421000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":65,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":65000}}],"watch_group":65000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":65,"duration":{"second":6,"nanosecond":913000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":31,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":31000}}],"watch_group":31000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":31,"duration":{"second":6,"nanosecond":913000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":5,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":5000}}],"watch_group":5000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":5,"duration":{"second":6,"nanosecond":913000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":90,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":90000}}],"watch_group":90000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":90,"duration":{"second":6,"nanosecond":913000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":18000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":18000,"duration":{"second":9,"nanosecond":421000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":62,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":62000}}],"watch_group":62000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":62,"duration":{"second":6,"nanosecond":913000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":65000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":65000,"duration":{"second":9,"nanosecond":421000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":32,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":32000}}],"watch_group":32000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":32,"duration":{"second":6,"nanosecond":914000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":2,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":2000}}],"watch_group":2000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":2,"duration":{"second":6,"nanosecond":913000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":93,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":93000}}],"watch_group":93000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":93,"duration":{"second":6,"nanosecond":913000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":64000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":64000,"duration":{"second":9,"nanosecond":420000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":63,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":63000}}],"watch_group":63000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":63,"duration":{"second":6,"nanosecond":914000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":33,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":33000}}],"watch_group":33000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":33,"duration":{"second":6,"nanosecond":913000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":3,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":3000}}],"watch_group":3000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":3,"duration":{"second":6,"nanosecond":913000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":80000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":80000,"duration":{"second":9,"nanosecond":420000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":9000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":9000,"duration":{"second":9,"nanosecond":420000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":92,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":92000}}],"watch_group":92000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":92,"duration":{"second":6,"nanosecond":913000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":5000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":5000,"duration":{"second":9,"nanosecond":416000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":20000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":20000,"duration":{"second":9,"nanosecond":416000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":81000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":81000,"duration":{"second":9,"nanosecond":416000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":97000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":97000,"duration":{"second":9,"nanosecond":416000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":31000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":31000,"duration":{"second":9,"nanosecond":416000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":68,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":68000}}],"watch_group":68000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":68,"duration":{"second":6,"nanosecond":913000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":11000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":11000,"duration":{"second":9,"nanosecond":416000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":34,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":34000}}],"watch_group":34000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":34,"duration":{"second":9,"nanosecond":416000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":78000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":78000,"duration":{"second":9,"nanosecond":416000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":87,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":87000}}],"watch_group":87000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":87,"duration":{"second":9,"nanosecond":416000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":93000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":93000,"duration":{"second":9,"nanosecond":417000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":63000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":63000,"duration":{"second":9,"nanosecond":416000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":69,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":69000}}],"watch_group":69000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":69,"duration":{"second":6,"nanosecond":913000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":35,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":35000}}],"watch_group":35000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":35,"duration":{"second":6,"nanosecond":913000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":1,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":1000}}],"watch_group":1000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":1,"duration":{"second":6,"nanosecond":914000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":33000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":33000,"duration":{"second":9,"nanosecond":416000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":79000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":79000,"duration":{"second":9,"nanosecond":416000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":86,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":86000}}],"watch_group":86000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":86,"duration":{"second":9,"nanosecond":416000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":62000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":62000,"duration":{"second":9,"nanosecond":417000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":66,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":66000}}],"watch_group":66000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":66,"duration":{"second":6,"nanosecond":914000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":77000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":77000,"duration":{"second":9,"nanosecond":416000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":36,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":36000}}],"watch_group":36000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":36,"duration":{"second":9,"nanosecond":416000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":89,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":89000}}],"watch_group":89000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":89,"duration":{"second":9,"nanosecond":416000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":22000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":22000,"duration":{"second":9,"nanosecond":414000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":95000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":95000,"duration":{"second":9,"nanosecond":414000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":67,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":67000}}],"watch_group":67000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":67,"duration":{"second":6,"nanosecond":913000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":37,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":37000}}],"watch_group":37000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":37,"duration":{"second":6,"nanosecond":913000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":1000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":1000,"duration":{"second":9,"nanosecond":412000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":88,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":88000}}],"watch_group":88000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":88,"duration":{"second":6,"nanosecond":911000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":61000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":61000,"duration":{"second":9,"nanosecond":412000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":3000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":3000,"duration":{"second":9,"nanosecond":412000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":73,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":73000}}],"watch_group":73000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":73,"duration":{"second":6,"nanosecond":911000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":39,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":39000}}],"watch_group":39000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":39,"duration":{"second":6,"nanosecond":911000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":13,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":13000}}],"watch_group":13000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":13,"duration":{"second":6,"nanosecond":911000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":74000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":74000,"duration":{"second":9,"nanosecond":412000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":15000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":15000,"duration":{"second":9,"nanosecond":412000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":44000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":44000,"duration":{"second":9,"nanosecond":412000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":45000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":45000,"duration":{"second":9,"nanosecond":412000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":68000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":68000,"duration":{"second":9,"nanosecond":412000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":72,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":72000}}],"watch_group":72000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":72,"duration":{"second":6,"nanosecond":911000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":38,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":38000}}],"watch_group":38000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":38,"duration":{"second":8,"nanosecond":916000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":75000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":75000,"duration":{"second":8,"nanosecond":916000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":12,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":12000}}],"watch_group":12000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":12,"duration":{"second":6,"nanosecond":911000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":35000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":35000,"duration":{"second":8,"nanosecond":916000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":24000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":24000,"duration":{"second":8,"nanosecond":916000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":90000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":90000,"duration":{"second":8,"nanosecond":916000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":71,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":71000}}],"watch_group":71000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":71,"duration":{"second":6,"nanosecond":911000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":41,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":41000}}],"watch_group":41000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":41,"duration":{"second":8,"nanosecond":916000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":42000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":42000,"duration":{"second":8,"nanosecond":916000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":11,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":11000}}],"watch_group":11000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":11,"duration":{"second":8,"nanosecond":916000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":92000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":92000,"duration":{"second":8,"nanosecond":916000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":46000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":46000,"duration":{"second":8,"nanosecond":917000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":67000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":67000,"duration":{"second":8,"nanosecond":916000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":70,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":70000}}],"watch_group":70000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":70,"duration":{"second":6,"nanosecond":911000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":76000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":76000,"duration":{"second":8,"nanosecond":916000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":40,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":40000}}],"watch_group":40000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":40,"duration":{"second":6,"nanosecond":911000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":13000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":13000,"duration":{"second":8,"nanosecond":916000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":10,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":10000}}],"watch_group":10000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":10,"duration":{"second":6,"nanosecond":911000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":88000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":88000,"duration":{"second":8,"nanosecond":916000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":47000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":47000,"duration":{"second":8,"nanosecond":916000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":66000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":66000,"duration":{"second":8,"nanosecond":916000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":77,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":77000}}],"watch_group":77000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":77,"duration":{"second":8,"nanosecond":916000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":43,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":43000}}],"watch_group":43000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":43,"duration":{"second":8,"nanosecond":916000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":9,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":9000}}],"watch_group":9000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":9,"duration":{"second":8,"nanosecond":916000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":99000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":99000,"duration":{"second":8,"nanosecond":916000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":26000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":26000,"duration":{"second":8,"nanosecond":916000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":70000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":70000,"duration":{"second":8,"nanosecond":916000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":76,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":76000}}],"watch_group":76000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":76,"duration":{"second":8,"nanosecond":412000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":42,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":42000}}],"watch_group":42000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":42,"duration":{"second":8,"nanosecond":412000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":8,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":8000}}],"watch_group":8000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":8,"duration":{"second":6,"nanosecond":911000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":37000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":37000,"duration":{"second":8,"nanosecond":412000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":49000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":49000,"duration":{"second":8,"nanosecond":412000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":71000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":71000,"duration":{"second":8,"nanosecond":412000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":48000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":48000,"duration":{"second":8,"nanosecond":413000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":75,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":75000}}],"watch_group":75000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":75,"duration":{"second":8,"nanosecond":412000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":45,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":45000}}],"watch_group":45000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":45,"duration":{"second":8,"nanosecond":412000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":7,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":7000}}],"watch_group":7000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":7,"duration":{"second":8,"nanosecond":412000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":39000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":39000,"duration":{"second":8,"nanosecond":412000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":73000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":73000,"duration":{"second":8,"nanosecond":412000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":69000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":69000,"duration":{"second":8,"nanosecond":412000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":17000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":17000,"duration":{"second":8,"nanosecond":413000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":28000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":28000,"duration":{"second":8,"nanosecond":412000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":74,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":74000}}],"watch_group":74000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":74,"duration":{"second":8,"nanosecond":412000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":44,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":44000}}],"watch_group":44000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":44,"duration":{"second":8,"nanosecond":412000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":6,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":6000}}],"watch_group":6000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":6,"duration":{"second":6,"nanosecond":911000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":40000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":40000,"duration":{"second":8,"nanosecond":412000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":81,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":81000}}],"watch_group":81000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":81,"duration":{"second":8,"nanosecond":412000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":47,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":47000}}],"watch_group":47000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":47,"duration":{"second":8,"nanosecond":412000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":21,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":21000}}],"watch_group":21000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":21,"duration":{"second":6,"nanosecond":911000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":8000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":8000,"duration":{"second":8,"nanosecond":412000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":19000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":19000,"duration":{"second":8,"nanosecond":412000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":96000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":96000,"duration":{"second":8,"nanosecond":412000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":80,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":80000}}],"watch_group":80000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":80,"duration":{"second":8,"nanosecond":412000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":46,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":46000}}],"watch_group":46000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":46,"duration":{"second":8,"nanosecond":412000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":20,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":20000}}],"watch_group":20000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":20,"duration":{"second":8,"nanosecond":412000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":52000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":52000,"duration":{"second":8,"nanosecond":412000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":6000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":6000,"duration":{"second":8,"nanosecond":412000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":79,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":79000}}],"watch_group":79000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":79,"duration":{"second":8,"nanosecond":412000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":49,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":49000}}],"watch_group":49000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":49,"duration":{"second":7,"nanosecond":921000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":19,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":19000}}],"watch_group":19000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":19,"duration":{"second":7,"nanosecond":921000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":50000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":50000,"duration":{"second":7,"nanosecond":920000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":72000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":72000,"duration":{"second":7,"nanosecond":920000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":30000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":30000,"duration":{"second":7,"nanosecond":920000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":78,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":78000}}],"watch_group":78000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":78,"duration":{"second":7,"nanosecond":919000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":48,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":48000}}],"watch_group":48000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":48,"duration":{"second":7,"nanosecond":918000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":18,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":18000}}],"watch_group":18000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":18,"duration":{"second":7,"nanosecond":918000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":51000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":51000,"duration":{"second":7,"nanosecond":917000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":85,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":85000}}],"watch_group":85000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":85,"duration":{"second":7,"nanosecond":917000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":55000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":55000,"duration":{"second":7,"nanosecond":917000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":51,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":51000}}],"watch_group":51000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":51,"duration":{"second":7,"nanosecond":421000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":17,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":17000}}],"watch_group":17000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":17,"duration":{"second":7,"nanosecond":420000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":21000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":21000,"duration":{"second":7,"nanosecond":420000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":4000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":4000,"duration":{"second":7,"nanosecond":420000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":84,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":84000}}],"watch_group":84000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":84,"duration":{"second":7,"nanosecond":420000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":50,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":50000}}],"watch_group":50000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":50,"duration":{"second":7,"nanosecond":419000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":16,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":16000}}],"watch_group":16000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":16,"duration":{"second":7,"nanosecond":419000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":10000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":10000,"duration":{"second":7,"nanosecond":419000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":54000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":54000,"duration":{"second":7,"nanosecond":414000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":83,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":83000}}],"watch_group":83000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":83,"duration":{"second":7,"nanosecond":414000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":32000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":32000,"duration":{"second":7,"nanosecond":414000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":53,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":53000}}],"watch_group":53000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":53,"duration":{"second":6,"nanosecond":911000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":15,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":15000}}],"watch_group":15000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":15,"duration":{"second":7,"nanosecond":414000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":2000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":2000,"duration":{"second":7,"nanosecond":414000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":82,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":82000}}],"watch_group":82000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":82,"duration":{"second":7,"nanosecond":414000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":52,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":52000}}],"watch_group":52000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":52,"duration":{"second":7,"nanosecond":414000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":14,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":14000}}],"watch_group":14000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":14,"duration":{"second":7,"nanosecond":414000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":53000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":53000,"duration":{"second":7,"nanosecond":414000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":12000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":12000,"duration":{"second":7,"nanosecond":414000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":23000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":23000,"duration":{"second":7,"nanosecond":414000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":94000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":94000,"duration":{"second":7,"nanosecond":414000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}}],"flow-node-inventory:snapshot-gathering-status-end":{"succeeded":true,"end":"2026-04-08T00:58:36.208Z"}}]}}</msg>
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:37.864606" elapsed="0.010317"/>
</kw>
<kw name="Get Count" owner="BuiltIn">
<msg time="2026-04-08T00:58:37.878246" level="INFO">Item found from container 303 times.</msg>
<msg time="2026-04-08T00:58:37.878331" level="INFO">${count} = 303</msg>
<var>${count}</var>
<arg>${resp.text}</arg>
<arg>"priority"</arg>
<doc>Returns and logs how many times ``item`` is found from ``container``.</doc>
<status status="PASS" start="2026-04-08T00:58:37.875109" elapsed="0.003246"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${count}</arg>
<arg>${flows}</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="PASS" start="2026-04-08T00:58:37.878547" elapsed="0.000320"/>
</kw>
<arg>${all_flows}</arg>
<doc>Check number of flows in the inventory.</doc>
<status status="PASS" start="2026-04-08T00:58:37.755637" elapsed="0.123294"/>
</kw>
<arg>10s</arg>
<arg>1s</arg>
<arg>ClusterOpenFlow.Check Number Of Flows On Member</arg>
<arg>${all_flows}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-08T00:58:37.755070" elapsed="0.123909"/>
</kw>
<doc>Check Flows in operational DS.</doc>
<status status="PASS" start="2026-04-08T00:58:37.416098" elapsed="0.463017"/>
</test>
<test id="s1-s4-t6" name="Check Groups In Operational DS" line="60">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-08T00:58:37.882692" elapsed="0.000234"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-08T00:58:37.882413" elapsed="0.000568"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:58:37.884239" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:58:37.884071" elapsed="0.000216"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:37.884049" elapsed="0.000262"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:58:37.889471" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:58:37.889363" elapsed="0.000165"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:37.889345" elapsed="0.000207"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:58:37.890581" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:58:37.890187" elapsed="0.000420"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:58:37.891072" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:58:37.890770" elapsed="0.000328"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:58:37.891141" elapsed="0.000053"/>
</return>
<msg time="2026-04-08T00:58:37.891322" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:58:37.889784" elapsed="0.001563"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:58:37.896666" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:58:37.896559" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:37.896540" elapsed="0.000192"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:58:37.897903" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:58:37.897797" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:37.897776" elapsed="0.000195"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:58:37.898443" level="INFO">${karaf_connection_index} = 476</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:58:37.898118" elapsed="0.000352"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:58:37.898860" level="INFO">${current_connection_index} = None</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:58:37.898632" elapsed="0.000254"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T00:58:37.937045" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T00:58:37.899408" elapsed="0.037771"/>
</kw>
<msg time="2026-04-08T00:58:37.937352" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T00:58:37.937400" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:58:37.899052" elapsed="0.038385"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T00:58:37.980021" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "G "r "o "u "p "s "[C "I "n "[C "O "p "e "r "a "t "i "o "n "a "l "[C "D "S "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T00:58:37.937973" elapsed="0.042159"/>
</kw>
<msg time="2026-04-08T00:58:37.980316" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T00:58:37.980362" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "G "r "o "u "p "s...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:58:37.937617" elapsed="0.042830"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:37.980777" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:37.980529" elapsed="0.000304"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:37.980508" elapsed="0.000350"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:37.981321" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "G "r "o "u "p "s "[C "I "n "[C "O "p "e "r "a "t "i "o "n "a "l "[C "D "S "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:37.981003" elapsed="0.000392"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:37.981684" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:37.981463" elapsed="0.000275"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:37.981444" elapsed="0.000318"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T00:58:37.981794" elapsed="0.000028"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:58:37.983247" elapsed="0.000764"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:58:37.984308" elapsed="0.000562"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:58:37.985138" elapsed="0.000508"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:58:37.982615" elapsed="0.003133"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T00:58:37.982064" elapsed="0.003747"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T00:58:37.897488" elapsed="0.088423"/>
</kw>
<msg time="2026-04-08T00:58:37.986002" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:58:37.986045" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "G "r "o "u "p "s...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:58:37.896883" elapsed="0.089199"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T00:58:37.986282" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-08T00:58:37.986173" elapsed="0.000168"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:37.986140" elapsed="0.000225"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:37.986765" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:37.987095" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T00:58:37.987180" elapsed="0.000017"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T00:58:37.896213" elapsed="0.091076"/>
</kw>
<msg time="2026-04-08T00:58:37.987382" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:58:37.987425" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "G "r "o "u "p "s...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:58:37.891725" elapsed="0.095737"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:37.987789" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:37.987536" elapsed="0.000305"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:37.987519" elapsed="0.000346"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T00:58:37.891575" elapsed="0.096312"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:58:37.993407" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:58:37.993297" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:37.993275" elapsed="0.000198"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:58:37.994602" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:58:37.994495" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:37.994477" elapsed="0.000191"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:58:37.995246" level="INFO">${karaf_connection_index} = 478</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:58:37.994927" elapsed="0.000380"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:58:37.995698" level="INFO">${current_connection_index} = None</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:58:37.995474" elapsed="0.000250"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T00:58:38.032793" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T00:58:37.996245" elapsed="0.036648"/>
</kw>
<msg time="2026-04-08T00:58:38.033052" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T00:58:38.033099" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:58:37.995888" elapsed="0.037248"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T00:58:38.076139" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "G "r "o "u "p "s "[C "I "n "[C "O "p "e "r "a "t "i "o "n "a "l "[C "D "S "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T00:58:38.033674" elapsed="0.042589"/>
</kw>
<msg time="2026-04-08T00:58:38.076421" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T00:58:38.076467" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "G "r "o "u "p "s...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:58:38.033330" elapsed="0.043174"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:38.076809" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:38.076582" elapsed="0.000282"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:38.076562" elapsed="0.000326"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:38.077360" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "G "r "o "u "p "s "[C "I "n "[C "O "p "e "r "a "t "i "o "n "a "l "[C "D "S "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:38.077037" elapsed="0.000394"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:38.077723" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:38.077498" elapsed="0.000279"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:38.077480" elapsed="0.000321"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T00:58:38.077833" elapsed="0.000026"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:58:38.079267" elapsed="0.000777"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:58:38.080343" elapsed="0.000445"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:58:38.081050" elapsed="0.000366"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:58:38.078642" elapsed="0.002872"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T00:58:38.078095" elapsed="0.003481"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T00:58:37.994193" elapsed="0.087482"/>
</kw>
<msg time="2026-04-08T00:58:38.081765" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:58:38.081813" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "G "r "o "u "p "s...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:58:37.993625" elapsed="0.088225"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T00:58:38.082033" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-08T00:58:38.081927" elapsed="0.000164"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:38.081908" elapsed="0.000207"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 2,
close the previous connection. In any case create a new connection
to karaf console for 2, set correct prompt set and login to karaf console.
Store connection index for 2 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:38.082520" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:38.083028" elapsed="0.000028"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T00:58:38.083104" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T00:58:37.992841" elapsed="0.090428"/>
</kw>
<msg time="2026-04-08T00:58:38.083363" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:58:38.083407" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "G "r "o "u "p "s...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:58:37.988206" elapsed="0.095237"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:38.083833" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:38.083519" elapsed="0.000368"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:38.083502" elapsed="0.000409"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T00:58:37.988008" elapsed="0.095926"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:58:38.089355" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:58:38.089247" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:38.089229" elapsed="0.000194"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:58:38.090686" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:58:38.090578" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:38.090560" elapsed="0.000193"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:58:38.091213" level="INFO">${karaf_connection_index} = 480</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:58:38.090900" elapsed="0.000341"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:58:38.091643" level="INFO">${current_connection_index} = None</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:58:38.091403" elapsed="0.000273"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T00:58:38.128966" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T00:58:38.092229" elapsed="0.036856"/>
</kw>
<msg time="2026-04-08T00:58:38.129302" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T00:58:38.129350" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:58:38.091873" elapsed="0.037515"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T00:58:38.170089" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "G "r "o "u "p "s "[C "I "n "[C "O "p "e "r "a "t "i "o "n "a "l "[C "D "S "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T00:58:38.129960" elapsed="0.040255"/>
</kw>
<msg time="2026-04-08T00:58:38.170377" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T00:58:38.170424" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "G "r "o "u "p "s...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:58:38.129588" elapsed="0.040874"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:38.170813" elapsed="0.000133"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:38.170549" elapsed="0.000436"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:38.170526" elapsed="0.000484"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:38.171494" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "G "r "o "u "p "s "[C "I "n "[C "O "p "e "r "a "t "i "o "n "a "l "[C "D "S "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:38.171187" elapsed="0.000381"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:38.171864" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:38.171636" elapsed="0.000283"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:38.171618" elapsed="0.000324"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T00:58:38.171977" elapsed="0.000032"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:58:38.173463" elapsed="0.000785"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:58:38.174529" elapsed="0.000464"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:58:38.175279" elapsed="0.000354"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:58:38.172822" elapsed="0.002982"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T00:58:38.172279" elapsed="0.003593"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T00:58:38.090274" elapsed="0.085701"/>
</kw>
<msg time="2026-04-08T00:58:38.176069" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:58:38.176114" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "G "r "o "u "p "s...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:58:38.089575" elapsed="0.086578"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T00:58:38.176367" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-08T00:58:38.176258" elapsed="0.000168"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:38.176239" elapsed="0.000211"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 3,
close the previous connection. In any case create a new connection
to karaf console for 3, set correct prompt set and login to karaf console.
Store connection index for 3 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:38.176851" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:38.177199" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T00:58:38.177273" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T00:58:38.088893" elapsed="0.088503"/>
</kw>
<msg time="2026-04-08T00:58:38.177492" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:58:38.177538" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "G "r "o "u "p "s...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:58:38.084215" elapsed="0.093361"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:38.177905" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:38.177652" elapsed="0.000307"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:38.177635" elapsed="0.000347"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T00:58:38.084053" elapsed="0.093954"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-08T00:58:37.891402" elapsed="0.286636"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-08T00:58:37.888982" elapsed="0.289116"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-08T00:58:37.883713" elapsed="0.294461"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:58:37.883138" elapsed="0.295085"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-08T00:58:37.880265" elapsed="0.298014"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Check Number Of Groups On Member" owner="ClusterOpenFlow">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:58:38.180313" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:58:38.179983" elapsed="0.000357"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:58:38.180385" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:58:38.180533" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:58:38.179432" elapsed="0.001126"/>
</kw>
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:58:38.242322" level="INFO">GET Request : url=http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01s3bfo0y24i1es90l47mavglv0.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:58:38.244647" level="INFO">GET Response : url=http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Transfer-Encoding': 'chunked'} 
 body={"opendaylight-inventory:nodes":{"node":[{"id":"openflow:3","flow-node-inventory:port-number":54950,"flow-node-inventory:table":[{"id":62,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":28,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":2,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":224,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":181,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":147,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":106,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":61,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":27,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":1,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":223,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":182,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":148,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":105,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":60,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":30,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":0,"flow":[{"id":"71","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.71/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":71}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":302000000}},"flags":""},{"id":"11","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.11/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":11}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":302000000}},"flags":""},{"id":"70","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.70/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":70}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":302000000}},"flags":""},{"id":"10","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.10/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":10}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":302000000}},"flags":""},{"id":"60","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.60/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":60}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":302000000}},"flags":""},{"id":"13","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.13/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":13}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":302000000}},"flags":""},{"id":"12","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.12/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":12}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":302000000}},"flags":""},{"id":"80","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.80/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":80}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":302000000}},"flags":""},{"id":"93","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.93/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":93}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":302000000}},"flags":""},{"id":"92","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.92/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":92}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":302000000}},"flags":""},{"id":"82","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.82/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":82}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":302000000}},"flags":""},{"id":"91","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.91/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":91}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":302000000}},"flags":""},{"id":"81","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.81/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":81}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":302000000}},"flags":""},{"id":"90","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.90/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":90}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":302000000}},"flags":""},{"id":"9","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.9/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":9}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":301000000}},"flags":""},{"id":"84","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.84/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":84}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":302000000}},"flags":""},{"id":"97","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.97/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":97}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"... (set the log level to DEBUG or TRACE to see the full content) 
 </msg>
<msg time="2026-04-08T00:58:38.245471" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${RFC8040_OPERATIONAL_NODES_API}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:58:38.180716" elapsed="0.064819"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:38.251512" level="INFO">{"opendaylight-inventory:nodes":{"node":[{"id":"openflow:3","flow-node-inventory:port-number":54950,"flow-node-inventory:table":[{"id":62,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":28,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":2,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":224,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":181,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":147,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":106,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":61,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":27,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":1,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":223,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":182,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":148,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":105,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":60,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":30,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":0,"flow":[{"id":"71","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.71/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":71}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":302000000}},"flags":""},{"id":"11","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.11/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":11}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":302000000}},"flags":""},{"id":"70","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.70/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":70}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":302000000}},"flags":""},{"id":"10","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.10/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":10}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":302000000}},"flags":""},{"id":"60","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.60/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":60}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":302000000}},"flags":""},{"id":"13","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.13/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":13}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":302000000}},"flags":""},{"id":"12","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.12/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":12}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":302000000}},"flags":""},{"id":"80","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.80/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":80}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":302000000}},"flags":""},{"id":"93","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.93/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":93}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":302000000}},"flags":""},{"id":"92","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.92/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":92}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":302000000}},"flags":""},{"id":"82","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.82/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":82}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":302000000}},"flags":""},{"id":"91","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.91/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":91}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":302000000}},"flags":""},{"id":"81","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.81/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":81}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":302000000}},"flags":""},{"id":"90","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.90/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":90}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":302000000}},"flags":""},{"id":"9","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.9/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":9}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":301000000}},"flags":""},{"id":"84","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.84/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":84}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":302000000}},"flags":""},{"id":"97","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.97/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":97}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":302000000}},"flags":""},{"id":"66","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.66/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":66}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":302000000}},"flags":""},{"id":"79","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.79/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":79}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":302000000}},"flags":""},{"id":"54","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.54/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":54}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":301000000}},"flags":""},{"id":"45","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.45/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":45}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":301000000}},"flags":""},{"id":"83","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.83/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":83}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":302000000}},"flags":""},{"id":"96","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.96/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":96}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":301000000}},"flags":""},{"id":"65","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.65/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":65}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":302000000}},"flags":""},{"id":"78","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.78/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":78}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":302000000}},"flags":""},{"id":"20","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.20/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":20}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":301000000}},"flags":""},{"id":"55","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.55/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":55}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":301000000}},"flags":""},{"id":"46","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.46/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":46}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":301000000}},"flags":""},{"id":"7","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.7/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":7}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":301000000}},"flags":""},{"id":"86","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.86/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":86}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":302000000}},"flags":""},{"id":"95","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.95/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":95}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":301000000}},"flags":""},{"id":"68","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.68/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":68}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":302000000}},"flags":""},{"id":"77","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.77/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":77}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":302000000}},"flags":""},{"id":"30","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.30/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":30}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":301000000}},"flags":""},{"id":"56","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.56/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":56}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":301000000}},"flags":""},{"id":"43","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.43/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":43}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":301000000}},"flags":""},{"id":"8","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.8/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":8}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":301000000}},"flags":""},{"id":"85","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.85/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":85}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":302000000}},"flags":""},{"id":"94","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.94/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":94}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":301000000}},"flags":""},{"id":"67","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.67/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":67}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":302000000}},"flags":""},{"id":"76","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.76/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":76}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":302000000}},"flags":""},{"id":"31","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.31/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":31}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":301000000}},"flags":""},{"id":"57","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.57/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":57}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":301000000}},"flags":""},{"id":"44","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.44/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":44}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":301000000}},"flags":""},{"id":"5","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.5/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":5}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":301000000}},"flags":""},{"id":"88","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.88/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":88}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":302000000}},"flags":""},{"id":"62","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.62/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":62}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":302000000}},"flags":""},{"id":"75","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.75/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":75}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":302000000}},"flags":""},{"id":"32","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.32/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":32}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":301000000}},"flags":""},{"id":"23","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.23/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":23}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":301000000}},"flags":""},{"id":"50","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.50/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":50}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":298000000}},"flags":""},{"id":"41","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.41/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":41}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":301000000}},"flags":""},{"id":"6","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.6/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":6}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":301000000}},"flags":""},{"id":"100","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.100/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":100}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":302000000}},"flags":""},{"id":"87","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.87/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":87}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":302000000}},"flags":""},{"id":"61","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.61/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":61}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":302000000}},"flags":""},{"id":"74","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.74/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":74}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":302000000}},"flags":""},{"id":"33","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.33/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":33}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":301000000}},"flags":""},{"id":"24","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.24/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":24}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":301000000}},"flags":""},{"id":"51","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.51/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":51}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":298000000}},"flags":""},{"id":"42","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.42/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":42}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":301000000}},"flags":""},{"id":"3","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.3/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":3}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":301000000}},"flags":""},{"id":"99","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.99/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":99}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":302000000}},"flags":""},{"id":"64","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.64/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":64}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":302000000}},"flags":""},{"id":"73","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.73/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":73}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":302000000}},"flags":""},{"id":"34","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.34/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":34}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":301000000}},"flags":""},{"id":"21","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.21/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":21}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":301000000}},"flags":""},{"id":"52","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.52/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":52}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":301000000}},"flags":""},{"id":"#UF$TABLE*0-3","table_id":0,"priority":0,"cookie_mask":"0","idle-timeout":0,"cookie":"10","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"output-action":{"max-length":65535,"output-node-connector":"CONTROLLER"}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"2","byte-count":"155","duration":{"second":6,"nanosecond":173000000}},"flags":"SEND_FLOW_REM"},{"id":"4","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.4/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":4}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":301000000}},"flags":""},{"id":"89","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.89/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":89}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":302000000}},"flags":""},{"id":"98","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.98/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":98}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":302000000}},"flags":""},{"id":"63","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.63/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":63}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":302000000}},"flags":""},{"id":"72","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.72/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":72}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":302000000}},"flags":""},{"id":"35","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.35/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":35}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":301000000}},"flags":""},{"id":"22","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.22/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":22}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":301000000}},"flags":""},{"id":"53","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.53/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":53}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":301000000}},"flags":""},{"id":"40","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.40/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":40}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":301000000}},"flags":""},{"id":"37","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.37/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":37}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":301000000}},"flags":""},{"id":"28","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.28/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":28}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":301000000}},"flags":""},{"id":"36","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.36/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":36}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":301000000}},"flags":""},{"id":"27","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.27/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":27}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":301000000}},"flags":""},{"id":"39","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.39/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":39}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":301000000}},"flags":""},{"id":"26","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.26/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":26}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":301000000}},"flags":""},{"id":"38","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.38/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":38}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":301000000}},"flags":""},{"id":"25","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.25/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":25}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":301000000}},"flags":""},{"id":"69","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.69/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":69}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":302000000}},"flags":""},{"id":"59","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.59/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":59}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":301000000}},"flags":""},{"id":"58","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.58/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":58}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":301000000}},"flags":""},{"id":"49","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.49/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":49}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":301000000}},"flags":""},{"id":"48","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.48/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":48}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":301000000}},"flags":""},{"id":"29","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.29/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":29}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":301000000}},"flags":""},{"id":"47","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.47/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":47}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":301000000}},"flags":""},{"id":"18","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.18/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":18}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":302000000}},"flags":""},{"id":"19","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.19/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":19}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":302000000}},"flags":""},{"id":"14","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.14/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":14}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":302000000}},"flags":""},{"id":"15","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.15/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":15}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":302000000}},"flags":""},{"id":"1","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.1/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":1}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":302000000}},"flags":""},{"id":"16","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.16/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":16}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":302000000}},"flags":""},{"id":"2","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.2/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":2}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":302000000}},"flags":""},{"id":"17","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.17/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":17}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":302000000}},"flags":""}],"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"20","active-flows":101,"packets-matched":"12"}},{"id":226,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":179,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":149,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":104,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":59,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":29,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":225,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":180,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":150,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":103,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":66,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":32,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":220,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":185,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":151,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":102,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":65,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":31,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":253,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":219,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":186,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":152,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":101,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":64,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":34,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":252,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":222,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":183,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":153,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":100,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":63,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":33,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":251,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":221,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":184,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":154,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":99,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":54,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":20,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":250,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":216,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":189,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":155,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":129,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":114,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":53,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":19,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":249,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":215,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":190,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":156,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":130,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":113,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":52,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":22,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":248,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":218,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":187,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":157,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":112,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":51,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":21,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":247,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":217,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":188,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":158,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":128,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":111,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":58,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":24,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":246,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":212,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":193,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":159,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":110,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":57,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":23,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":245,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":211,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":194,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":160,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":109,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":56,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":26,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":244,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":214,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":191,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":161,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":108,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":55,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":25,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":243,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":213,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":192,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":162,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":107,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":77,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":43,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":17,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":239,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":198,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":164,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":138,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":119,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":89,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":78,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":44,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":18,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":240,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":197,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":163,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":137,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":120,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":90,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":75,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":45,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":15,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":241,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":196,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":166,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":136,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":121,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":87,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":76,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":46,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":16,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":242,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":195,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":165,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":135,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":122,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":88,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":81,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":47,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":13,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":235,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":202,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":168,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":134,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":115,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":85,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":82,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":48,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":14,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":236,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":201,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":167,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":133,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":116,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":86,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":79,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":49,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":11,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":237,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":200,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":170,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":132,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":117,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":83,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":80,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":50,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":12,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":238,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":199,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":169,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":131,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":118,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":84,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":69,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":35,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":9,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":231,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":206,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":172,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":146,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":127,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":97,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":70,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":36,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":10,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":232,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":205,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":171,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":145,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":98,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":67,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":37,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":7,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":233,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":204,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":174,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":144,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":95,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":68,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":38,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":8,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":234,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":203,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":173,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":143,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":96,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":73,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":39,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":5,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":227,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":210,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":176,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":142,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":123,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":93,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":74,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":40,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":6,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":228,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":209,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":175,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":141,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":124,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":94,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":71,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":41,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":3,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":229,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":208,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":178,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":140,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":125,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":91,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":72,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":42,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":4,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":230,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":207,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":177,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":139,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":126,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":92,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}}],"opendaylight-group-statistics:group-features":{"max-groups":[4294967040],"group-types-supported":["opendaylight-group-types:group-all","opendaylight-group-types:group-ff","opendaylight-group-types:group-select","opendaylight-group-types:group-indirect"],"group-capabilities-supported":["opendaylight-group-types:chaining","opendaylight-group-types:select-weight","opendaylight-group-types:select-liveness"],"actions":[67076097]},"flow-node-inventory:manufacturer":"Nicira, Inc.","flow-node-inventory:description":"s3","flow-node-inventory:hardware":"Open vSwitch","flow-node-inventory:switch-features":{"max_tables":254,"capabilities":["flow-node-inventory:flow-feature-capability-table-stats","flow-node-inventory:flow-feature-capability-group-stats","flow-node-inventory:flow-feature-capability-queue-stats","flow-node-inventory:flow-feature-capability-flow-stats","flow-node-inventory:flow-feature-capability-port-stats"],"max_buffers":0},"flow-node-inventory:snapshot-gathering-status-start":{"begin":"2026-04-08T00:58:36.167Z"},"flow-node-inventory:software":"2.17.11","node-connector":[{"id":"openflow:3:LOCAL","flow-node-inventory:port-number":4294967294,"flow-node-inventory:hardware-address":"c2:87:c1:60:0d:43","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s3","flow-node-inventory:current-feature":"","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":0,"flow-node-inventory:state":{"live":false,"blocked":false,"link-down":true},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"PORT-DOWN","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"0","received":"0"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":11,"nanosecond":520000000},"bytes":{"transmitted":"0","received":"0"},"receive-crc-error":"0"}},{"id":"openflow:3:2","flow-node-inventory:port-number":2,"flow-node-inventory:hardware-address":"9e:72:98:8c:46:72","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s3-eth2","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"11","received":"15"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":11,"nanosecond":523000000},"bytes":{"transmitted":"932","received":"1284"},"receive-crc-error":"0"}},{"id":"openflow:3:1","flow-node-inventory:port-number":1,"flow-node-inventory:hardware-address":"ca:ac:9a:41:42:1c","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s3-eth1","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"17","received":"7"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":11,"nanosecond":523000000},"bytes":{"transmitted":"1460","received":"586"},"receive-crc-error":"0"}}],"flow-node-inventory:ip-address":"10.30.170.192","flow-node-inventory:serial-number":"None","flow-node-inventory:group":[{"group-id":56,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":56000}}],"watch_group":56000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":56,"duration":{"second":7,"nanosecond":310000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":22,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":22000}}],"watch_group":22000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":22,"duration":{"second":7,"nanosecond":310000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":99,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":99000}}],"watch_group":99000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":99,"duration":{"second":7,"nanosecond":310000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":34000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":34000,"duration":{"second":10,"nanosecond":140000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":89000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":89000,"duration":{"second":10,"nanosecond":139000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":60000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":60000,"duration":{"second":10,"nanosecond":136000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":91000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":91000,"duration":{"second":10,"nanosecond":136000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":57,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":57000}}],"watch_group":57000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":57,"duration":{"second":7,"nanosecond":310000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":23,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":23000}}],"watch_group":23000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":23,"duration":{"second":6,"nanosecond":813000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":14000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":14000,"duration":{"second":10,"nanosecond":136000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":98,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":98000}}],"watch_group":98000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":98,"duration":{"second":6,"nanosecond":812000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":56000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":56000,"duration":{"second":10,"nanosecond":136000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":85000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":85000,"duration":{"second":10,"nanosecond":136000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":54,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":54000}}],"watch_group":54000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":54,"duration":{"second":6,"nanosecond":812000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":24,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":24000}}],"watch_group":24000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":24,"duration":{"second":6,"nanosecond":812000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":36000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":36000,"duration":{"second":10,"nanosecond":136000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":87000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":87000,"duration":{"second":10,"nanosecond":136000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":59000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":59000,"duration":{"second":10,"nanosecond":136000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":25000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":25000,"duration":{"second":10,"nanosecond":136000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":43000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":43000,"duration":{"second":10,"nanosecond":135000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":55,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":55000}}],"watch_group":55000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":55,"duration":{"second":6,"nanosecond":812000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":25,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":25000}}],"watch_group":25000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":25,"duration":{"second":9,"nanosecond":818000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":100,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":100000}}],"watch_group":100000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":100,"duration":{"second":6,"nanosecond":812000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":58000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":58000,"duration":{"second":9,"nanosecond":818000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":86000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":86000,"duration":{"second":9,"nanosecond":818000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":60,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":60000}}],"watch_group":60000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":60,"duration":{"second":9,"nanosecond":818000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":26,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":26000}}],"watch_group":26000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":26,"duration":{"second":6,"nanosecond":812000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":41000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":41000,"duration":{"second":9,"nanosecond":817000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":95,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":95000}}],"watch_group":95000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":95,"duration":{"second":6,"nanosecond":812000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":82000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":82000,"duration":{"second":9,"nanosecond":817000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":61,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":61000}}],"watch_group":61000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":61,"duration":{"second":6,"nanosecond":812000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":27,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":27000}}],"watch_group":27000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":27,"duration":{"second":6,"nanosecond":807000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":94,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":94000}}],"watch_group":94000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":94,"duration":{"second":6,"nanosecond":807000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":98000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":98000,"duration":{"second":9,"nanosecond":816000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":27000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":27000,"duration":{"second":9,"nanosecond":816000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":57000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":57000,"duration":{"second":9,"nanosecond":815000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":16000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":16000,"duration":{"second":9,"nanosecond":814000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":83000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":83000,"duration":{"second":9,"nanosecond":814000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":58,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":58000}}],"watch_group":58000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":58,"duration":{"second":9,"nanosecond":315000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":28,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":28000}}],"watch_group":28000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":28,"duration":{"second":6,"nanosecond":807000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":97,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":97000}}],"watch_group":97000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":97,"duration":{"second":6,"nanosecond":807000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":100000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":100000,"duration":{"second":9,"nanosecond":315000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":59,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":59000}}],"watch_group":59000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":59,"duration":{"second":9,"nanosecond":315000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":38000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":38000,"duration":{"second":9,"nanosecond":315000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":29,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":29000}}],"watch_group":29000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":29,"duration":{"second":6,"nanosecond":807000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":96,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":96000}}],"watch_group":96000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":96,"duration":{"second":6,"nanosecond":807000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":84000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":84000,"duration":{"second":9,"nanosecond":315000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":64,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":64000}}],"watch_group":64000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":64,"duration":{"second":6,"nanosecond":807000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":30,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":30000}}],"watch_group":30000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":30,"duration":{"second":6,"nanosecond":807000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":4,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":4000}}],"watch_group":4000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":4,"duration":{"second":6,"nanosecond":807000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":91,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":91000}}],"watch_group":91000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":91,"duration":{"second":9,"nanosecond":315000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":7000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":7000,"duration":{"second":9,"nanosecond":315000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":29000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":29000,"duration":{"second":9,"nanosecond":315000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":65,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":65000}}],"watch_group":65000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":65,"duration":{"second":6,"nanosecond":807000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":31,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":31000}}],"watch_group":31000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":31,"duration":{"second":6,"nanosecond":807000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":5,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":5000}}],"watch_group":5000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":5,"duration":{"second":6,"nanosecond":807000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":90,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":90000}}],"watch_group":90000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":90,"duration":{"second":6,"nanosecond":807000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":18000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":18000,"duration":{"second":9,"nanosecond":314000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":62,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":62000}}],"watch_group":62000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":62,"duration":{"second":6,"nanosecond":807000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":65000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":65000,"duration":{"second":9,"nanosecond":314000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":32,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":32000}}],"watch_group":32000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":32,"duration":{"second":6,"nanosecond":807000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":2,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":2000}}],"watch_group":2000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":2,"duration":{"second":6,"nanosecond":807000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":93,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":93000}}],"watch_group":93000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":93,"duration":{"second":6,"nanosecond":807000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":64000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":64000,"duration":{"second":9,"nanosecond":313000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":63,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":63000}}],"watch_group":63000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":63,"duration":{"second":6,"nanosecond":807000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":33,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":33000}}],"watch_group":33000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":33,"duration":{"second":6,"nanosecond":807000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":3,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":3000}}],"watch_group":3000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":3,"duration":{"second":6,"nanosecond":807000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":80000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":80000,"duration":{"second":9,"nanosecond":312000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":9000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":9000,"duration":{"second":9,"nanosecond":312000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":92,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":92000}}],"watch_group":92000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":92,"duration":{"second":6,"nanosecond":807000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":5000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":5000,"duration":{"second":9,"nanosecond":312000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":20000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":20000,"duration":{"second":9,"nanosecond":312000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":81000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":81000,"duration":{"second":9,"nanosecond":312000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":97000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":97000,"duration":{"second":9,"nanosecond":312000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":31000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":31000,"duration":{"second":9,"nanosecond":312000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":68,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":68000}}],"watch_group":68000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":68,"duration":{"second":6,"nanosecond":807000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":11000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":11000,"duration":{"second":9,"nanosecond":312000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":34,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":34000}}],"watch_group":34000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":34,"duration":{"second":9,"nanosecond":312000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":78000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":78000,"duration":{"second":9,"nanosecond":311000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":87,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":87000}}],"watch_group":87000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":87,"duration":{"second":9,"nanosecond":311000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":93000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":93000,"duration":{"second":9,"nanosecond":311000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":63000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":63000,"duration":{"second":9,"nanosecond":311000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":69,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":69000}}],"watch_group":69000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":69,"duration":{"second":6,"nanosecond":807000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":35,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":35000}}],"watch_group":35000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":35,"duration":{"second":6,"nanosecond":807000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":1,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":1000}}],"watch_group":1000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":1,"duration":{"second":6,"nanosecond":807000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":33000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":33000,"duration":{"second":9,"nanosecond":307000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":79000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":79000,"duration":{"second":9,"nanosecond":307000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":86,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":86000}}],"watch_group":86000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":86,"duration":{"second":9,"nanosecond":307000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":62000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":62000,"duration":{"second":9,"nanosecond":307000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":66,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":66000}}],"watch_group":66000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":66,"duration":{"second":6,"nanosecond":807000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":77000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":77000,"duration":{"second":9,"nanosecond":307000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":36,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":36000}}],"watch_group":36000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":36,"duration":{"second":9,"nanosecond":307000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":89,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":89000}}],"watch_group":89000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":89,"duration":{"second":9,"nanosecond":307000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":22000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":22000,"duration":{"second":9,"nanosecond":307000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":95000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":95000,"duration":{"second":9,"nanosecond":307000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":67,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":67000}}],"watch_group":67000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":67,"duration":{"second":6,"nanosecond":807000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":37,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":37000}}],"watch_group":37000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":37,"duration":{"second":6,"nanosecond":807000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":1000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":1000,"duration":{"second":9,"nanosecond":306000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":88,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":88000}}],"watch_group":88000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":88,"duration":{"second":6,"nanosecond":807000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":61000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":61000,"duration":{"second":9,"nanosecond":306000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":3000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":3000,"duration":{"second":9,"nanosecond":306000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":73,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":73000}}],"watch_group":73000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":73,"duration":{"second":6,"nanosecond":807000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":39,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":39000}}],"watch_group":39000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":39,"duration":{"second":6,"nanosecond":802000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":13,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":13000}}],"watch_group":13000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":13,"duration":{"second":6,"nanosecond":802000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":74000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":74000,"duration":{"second":9,"nanosecond":306000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":15000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":15000,"duration":{"second":9,"nanosecond":306000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":44000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":44000,"duration":{"second":9,"nanosecond":306000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":45000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":45000,"duration":{"second":9,"nanosecond":306000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":68000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":68000,"duration":{"second":9,"nanosecond":306000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":72,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":72000}}],"watch_group":72000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":72,"duration":{"second":6,"nanosecond":802000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":38,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":38000}}],"watch_group":38000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":38,"duration":{"second":8,"nanosecond":816000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":75000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":75000,"duration":{"second":8,"nanosecond":816000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":12,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":12000}}],"watch_group":12000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":12,"duration":{"second":6,"nanosecond":802000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":35000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":35000,"duration":{"second":8,"nanosecond":816000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":24000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":24000,"duration":{"second":8,"nanosecond":816000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":90000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":90000,"duration":{"second":8,"nanosecond":816000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":71,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":71000}}],"watch_group":71000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":71,"duration":{"second":6,"nanosecond":802000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":41,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":41000}}],"watch_group":41000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":41,"duration":{"second":8,"nanosecond":815000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":42000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":42000,"duration":{"second":8,"nanosecond":815000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":11,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":11000}}],"watch_group":11000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":11,"duration":{"second":8,"nanosecond":815000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":92000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":92000,"duration":{"second":8,"nanosecond":814000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":46000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":46000,"duration":{"second":8,"nanosecond":814000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":67000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":67000,"duration":{"second":8,"nanosecond":814000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":70,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":70000}}],"watch_group":70000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":70,"duration":{"second":6,"nanosecond":802000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":76000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":76000,"duration":{"second":8,"nanosecond":813000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":40,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":40000}}],"watch_group":40000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":40,"duration":{"second":6,"nanosecond":802000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":13000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":13000,"duration":{"second":8,"nanosecond":813000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":10,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":10000}}],"watch_group":10000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":10,"duration":{"second":6,"nanosecond":802000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":88000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":88000,"duration":{"second":8,"nanosecond":813000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":47000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":47000,"duration":{"second":8,"nanosecond":813000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":66000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":66000,"duration":{"second":8,"nanosecond":813000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":77,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":77000}}],"watch_group":77000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":77,"duration":{"second":8,"nanosecond":813000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":43,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":43000}}],"watch_group":43000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":43,"duration":{"second":8,"nanosecond":812000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":9,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":9000}}],"watch_group":9000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":9,"duration":{"second":8,"nanosecond":812000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":99000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":99000,"duration":{"second":8,"nanosecond":812000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":26000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":26000,"duration":{"second":8,"nanosecond":812000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":70000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":70000,"duration":{"second":8,"nanosecond":811000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":76,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":76000}}],"watch_group":76000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":76,"duration":{"second":8,"nanosecond":315000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":42,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":42000}}],"watch_group":42000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":42,"duration":{"second":8,"nanosecond":314000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":8,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":8000}}],"watch_group":8000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":8,"duration":{"second":6,"nanosecond":802000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":37000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":37000,"duration":{"second":8,"nanosecond":314000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":49000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":49000,"duration":{"second":8,"nanosecond":314000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":71000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":71000,"duration":{"second":8,"nanosecond":314000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":48000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":48000,"duration":{"second":8,"nanosecond":313000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":75,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":75000}}],"watch_group":75000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":75,"duration":{"second":8,"nanosecond":309000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":45,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":45000}}],"watch_group":45000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":45,"duration":{"second":8,"nanosecond":309000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":7,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":7000}}],"watch_group":7000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":7,"duration":{"second":8,"nanosecond":309000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":39000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":39000,"duration":{"second":8,"nanosecond":309000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":73000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":73000,"duration":{"second":8,"nanosecond":309000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":69000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":69000,"duration":{"second":8,"nanosecond":309000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":17000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":17000,"duration":{"second":8,"nanosecond":309000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":28000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":28000,"duration":{"second":8,"nanosecond":309000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":74,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":74000}}],"watch_group":74000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":74,"duration":{"second":8,"nanosecond":309000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":44,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":44000}}],"watch_group":44000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":44,"duration":{"second":8,"nanosecond":309000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":6,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":6000}}],"watch_group":6000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":6,"duration":{"second":6,"nanosecond":802000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":40000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":40000,"duration":{"second":8,"nanosecond":309000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":81,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":81000}}],"watch_group":81000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":81,"duration":{"second":8,"nanosecond":309000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":47,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":47000}}],"watch_group":47000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":47,"duration":{"second":8,"nanosecond":309000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":21,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":21000}}],"watch_group":21000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":21,"duration":{"second":6,"nanosecond":802000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":8000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":8000,"duration":{"second":8,"nanosecond":309000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":19000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":19000,"duration":{"second":8,"nanosecond":308000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":96000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":96000,"duration":{"second":8,"nanosecond":308000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":80,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":80000}}],"watch_group":80000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":80,"duration":{"second":8,"nanosecond":308000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":46,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":46000}}],"watch_group":46000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":46,"duration":{"second":8,"nanosecond":308000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":20,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":20000}}],"watch_group":20000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":20,"duration":{"second":8,"nanosecond":308000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":52000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":52000,"duration":{"second":8,"nanosecond":308000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":6000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":6000,"duration":{"second":8,"nanosecond":308000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":79,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":79000}}],"watch_group":79000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":79,"duration":{"second":8,"nanosecond":307000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":49,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":49000}}],"watch_group":49000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":49,"duration":{"second":7,"nanosecond":815000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":19,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":19000}}],"watch_group":19000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":19,"duration":{"second":7,"nanosecond":814000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":50000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":50000,"duration":{"second":7,"nanosecond":814000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":72000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":72000,"duration":{"second":7,"nanosecond":814000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":30000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":30000,"duration":{"second":7,"nanosecond":814000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":78,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":78000}}],"watch_group":78000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":78,"duration":{"second":7,"nanosecond":814000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":48,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":48000}}],"watch_group":48000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":48,"duration":{"second":7,"nanosecond":813000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":18,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":18000}}],"watch_group":18000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":18,"duration":{"second":7,"nanosecond":813000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":51000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":51000,"duration":{"second":7,"nanosecond":813000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":85,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":85000}}],"watch_group":85000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":85,"duration":{"second":7,"nanosecond":813000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":55000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":55000,"duration":{"second":7,"nanosecond":813000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":51,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":51000}}],"watch_group":51000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":51,"duration":{"second":7,"nanosecond":314000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":17,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":17000}}],"watch_group":17000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":17,"duration":{"second":7,"nanosecond":314000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":21000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":21000,"duration":{"second":7,"nanosecond":314000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":4000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":4000,"duration":{"second":7,"nanosecond":314000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":84,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":84000}}],"watch_group":84000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":84,"duration":{"second":7,"nanosecond":314000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":50,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":50000}}],"watch_group":50000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":50,"duration":{"second":7,"nanosecond":314000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":16,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":16000}}],"watch_group":16000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":16,"duration":{"second":7,"nanosecond":313000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":10000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":10000,"duration":{"second":7,"nanosecond":313000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":54000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":54000,"duration":{"second":7,"nanosecond":313000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":83,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":83000}}],"watch_group":83000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":83,"duration":{"second":7,"nanosecond":313000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":32000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":32000,"duration":{"second":7,"nanosecond":313000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":53,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":53000}}],"watch_group":53000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":53,"duration":{"second":6,"nanosecond":802000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":15,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":15000}}],"watch_group":15000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":15,"duration":{"second":7,"nanosecond":312000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":2000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":2000,"duration":{"second":7,"nanosecond":312000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":82,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":82000}}],"watch_group":82000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":82,"duration":{"second":7,"nanosecond":312000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":52,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":52000}}],"watch_group":52000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":52,"duration":{"second":7,"nanosecond":312000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":14,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":14000}}],"watch_group":14000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":14,"duration":{"second":7,"nanosecond":312000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":53000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":53000,"duration":{"second":7,"nanosecond":311000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":12000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":12000,"duration":{"second":7,"nanosecond":311000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":23000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":23000,"duration":{"second":7,"nanosecond":310000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":94000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":94000,"duration":{"second":7,"nanosecond":310000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}}],"flow-node-inventory:snapshot-gathering-status-end":{"succeeded":true,"end":"2026-04-08T00:58:36.240Z"}},{"id":"openflow:1","flow-node-inventory:port-number":54934,"flow-node-inventory:table":[{"id":62,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":28,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":2,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":224,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":181,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":147,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":106,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":61,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":27,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":1,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":223,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":182,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":148,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":105,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":60,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":30,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":0,"flow":[{"id":"71","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.71/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":71}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":231000000}},"flags":""},{"id":"11","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.11/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":11}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":230000000}},"flags":""},{"id":"70","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.70/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":70}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":231000000}},"flags":""},{"id":"10","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.10/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":10}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":230000000}},"flags":""},{"id":"60","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.60/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":60}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":231000000}},"flags":""},{"id":"13","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.13/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":13}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":230000000}},"flags":""},{"id":"12","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.12/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":12}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":230000000}},"flags":""},{"id":"80","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.80/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":80}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":231000000}},"flags":""},{"id":"93","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.93/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":93}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":230000000}},"flags":""},{"id":"92","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.92/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":92}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":230000000}},"flags":""},{"id":"82","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.82/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":82}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":231000000}},"flags":""},{"id":"91","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.91/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":91}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":230000000}},"flags":""},{"id":"81","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.81/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":81}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":231000000}},"flags":""},{"id":"90","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.90/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":90}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":230000000}},"flags":""},{"id":"9","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.9/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":9}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":231000000}},"flags":""},{"id":"84","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.84/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":84}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":230000000}},"flags":""},{"id":"97","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.97/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":97}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":230000000}},"flags":""},{"id":"66","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.66/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":66}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":231000000}},"flags":""},{"id":"79","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.79/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":79}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":231000000}},"flags":""},{"id":"54","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.54/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":54}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":230000000}},"flags":""},{"id":"45","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.45/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":45}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":230000000}},"flags":""},{"id":"83","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.83/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":83}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":230000000}},"flags":""},{"id":"96","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.96/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":96}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":230000000}},"flags":""},{"id":"65","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.65/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":65}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":231000000}},"flags":""},{"id":"78","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.78/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":78}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":231000000}},"flags":""},{"id":"20","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.20/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":20}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":231000000}},"flags":""},{"id":"55","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.55/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":55}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":230000000}},"flags":""},{"id":"46","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.46/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":46}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":230000000}},"flags":""},{"id":"7","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.7/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":7}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":231000000}},"flags":""},{"id":"86","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.86/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":86}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":231000000}},"flags":""},{"id":"95","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.95/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":95}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":230000000}},"flags":""},{"id":"68","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.68/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":68}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":231000000}},"flags":""},{"id":"77","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.77/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":77}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":231000000}},"flags":""},{"id":"30","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.30/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":30}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":231000000}},"flags":""},{"id":"56","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.56/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":56}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":230000000}},"flags":""},{"id":"43","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.43/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":43}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":230000000}},"flags":""},{"id":"8","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.8/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":8}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":231000000}},"flags":""},{"id":"85","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.85/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":85}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":231000000}},"flags":""},{"id":"94","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.94/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":94}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":230000000}},"flags":""},{"id":"67","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.67/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":67}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":231000000}},"flags":""},{"id":"76","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.76/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":76}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":231000000}},"flags":""},{"id":"31","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.31/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":31}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":231000000}},"flags":""},{"id":"57","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.57/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":57}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":230000000}},"flags":""},{"id":"44","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.44/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":44}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":230000000}},"flags":""},{"id":"5","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.5/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":5}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":231000000}},"flags":""},{"id":"88","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.88/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":88}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":231000000}},"flags":""},{"id":"62","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.62/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":62}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":231000000}},"flags":""},{"id":"75","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.75/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":75}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":231000000}},"flags":""},{"id":"32","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.32/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":32}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":231000000}},"flags":""},{"id":"23","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.23/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":23}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":231000000}},"flags":""},{"id":"50","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.50/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":50}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":230000000}},"flags":""},{"id":"41","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.41/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":41}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":230000000}},"flags":""},{"id":"#UF$TABLE*0-1","table_id":0,"priority":0,"cookie_mask":"0","idle-timeout":0,"cookie":"10","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"output-action":{"max-length":65535,"output-node-connector":"CONTROLLER"}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"3","byte-count":"225","duration":{"second":6,"nanosecond":121000000}},"flags":"SEND_FLOW_REM"},{"id":"6","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.6/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":6}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":231000000}},"flags":""},{"id":"100","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.100/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":100}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":231000000}},"flags":""},{"id":"87","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.87/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":87}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":231000000}},"flags":""},{"id":"61","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.61/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":61}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":231000000}},"flags":""},{"id":"74","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.74/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":74}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":231000000}},"flags":""},{"id":"33","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.33/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":33}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":231000000}},"flags":""},{"id":"24","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.24/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":24}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":231000000}},"flags":""},{"id":"51","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.51/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":51}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":230000000}},"flags":""},{"id":"42","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.42/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":42}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":230000000}},"flags":""},{"id":"3","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.3/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":3}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":231000000}},"flags":""},{"id":"99","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.99/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":99}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":230000000}},"flags":""},{"id":"64","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.64/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":64}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":231000000}},"flags":""},{"id":"73","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.73/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":73}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":231000000}},"flags":""},{"id":"34","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.34/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":34}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":231000000}},"flags":""},{"id":"21","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.21/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":21}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":231000000}},"flags":""},{"id":"52","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.52/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":52}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":230000000}},"flags":""},{"id":"4","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.4/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":4}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":231000000}},"flags":""},{"id":"89","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.89/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":89}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":231000000}},"flags":""},{"id":"98","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.98/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":98}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":230000000}},"flags":""},{"id":"63","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.63/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":63}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":231000000}},"flags":""},{"id":"72","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.72/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":72}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":231000000}},"flags":""},{"id":"35","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.35/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":35}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":231000000}},"flags":""},{"id":"22","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.22/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":22}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":231000000}},"flags":""},{"id":"53","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.53/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":53}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":230000000}},"flags":""},{"id":"40","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.40/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":40}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":230000000}},"flags":""},{"id":"37","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.37/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":37}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":231000000}},"flags":""},{"id":"28","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.28/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":28}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":230000000}},"flags":""},{"id":"36","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.36/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":36}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":231000000}},"flags":""},{"id":"27","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.27/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":27}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":230000000}},"flags":""},{"id":"39","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.39/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":39}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":231000000}},"flags":""},{"id":"26","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.26/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":26}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":231000000}},"flags":""},{"id":"38","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.38/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":38}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":231000000}},"flags":""},{"id":"25","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.25/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":25}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":231000000}},"flags":""},{"id":"69","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.69/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":69}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":231000000}},"flags":""},{"id":"59","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.59/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":59}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":230000000}},"flags":""},{"id":"58","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.58/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":58}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":230000000}},"flags":""},{"id":"49","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.49/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":49}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":231000000}},"flags":""},{"id":"48","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.48/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":48}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":230000000}},"flags":""},{"id":"29","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.29/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":29}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":230000000}},"flags":""},{"id":"47","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.47/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":47}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":230000000}},"flags":""},{"id":"18","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.18/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":18}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":230000000}},"flags":""},{"id":"19","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.19/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":19}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":230000000}},"flags":""},{"id":"14","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.14/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":14}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":230000000}},"flags":""},{"id":"15","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.15/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":15}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":230000000}},"flags":""},{"id":"1","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.1/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":1}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":230000000}},"flags":""},{"id":"16","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.16/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":16}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":230000000}},"flags":""},{"id":"2","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.2/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":2}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":230000000}},"flags":""},{"id":"17","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.17/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":17}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":230000000}},"flags":""}],"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"20","active-flows":101,"packets-matched":"13"}},{"id":226,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":179,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":149,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":104,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":59,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":29,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":225,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":180,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":150,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":103,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":66,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":32,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":220,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":185,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":151,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":102,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":65,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":31,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":253,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":219,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":186,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":152,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":101,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":64,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":34,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":252,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":222,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":183,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":153,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":100,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":63,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":33,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":251,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":221,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":184,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":154,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":99,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":54,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":20,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":250,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":216,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":189,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":155,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":129,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":114,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":53,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":19,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":249,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":215,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":190,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":156,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":130,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":113,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":52,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":22,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":248,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":218,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":187,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":157,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":112,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":51,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":21,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":247,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":217,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":188,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":158,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":128,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":111,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":58,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":24,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":246,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":212,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":193,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":159,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":110,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":57,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":23,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":245,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":211,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":194,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":160,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":109,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":56,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":26,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":244,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":214,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":191,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":161,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":108,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":55,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":25,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":243,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":213,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":192,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":162,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":107,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":77,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":43,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":17,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":239,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":198,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":164,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":138,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":119,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":89,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":78,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":44,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":18,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":240,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":197,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":163,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":137,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":120,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":90,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":75,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":45,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":15,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":241,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":196,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":166,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":136,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":121,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":87,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":76,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":46,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":16,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":242,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":195,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":165,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":135,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":122,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":88,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":81,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":47,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":13,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":235,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":202,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":168,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":134,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":115,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":85,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":82,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":48,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":14,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":236,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":201,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":167,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":133,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":116,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":86,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":79,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":49,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":11,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":237,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":200,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":170,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":132,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":117,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":83,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":80,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":50,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":12,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":238,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":199,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":169,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":131,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":118,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":84,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":69,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":35,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":9,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":231,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":206,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":172,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":146,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":127,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":97,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":70,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":36,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":10,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":232,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":205,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":171,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":145,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":98,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":67,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":37,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":7,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":233,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":204,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":174,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":144,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":95,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":68,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":38,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":8,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":234,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":203,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":173,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":143,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":96,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":73,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":39,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":5,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":227,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":210,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":176,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":142,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":123,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":93,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":74,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":40,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":6,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":228,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":209,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":175,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":141,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":124,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":94,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":71,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":41,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":3,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":229,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":208,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":178,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":140,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":125,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":91,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":72,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":42,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":4,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":230,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":207,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":177,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":139,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":126,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":92,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}}],"opendaylight-group-statistics:group-features":{"max-groups":[4294967040],"group-types-supported":["opendaylight-group-types:group-all","opendaylight-group-types:group-ff","opendaylight-group-types:group-select","opendaylight-group-types:group-indirect"],"group-capabilities-supported":["opendaylight-group-types:chaining","opendaylight-group-types:select-weight","opendaylight-group-types:select-liveness"],"actions":[67076097]},"flow-node-inventory:manufacturer":"Nicira, Inc.","flow-node-inventory:description":"s1","flow-node-inventory:hardware":"Open vSwitch","flow-node-inventory:switch-features":{"max_tables":254,"capabilities":["flow-node-inventory:flow-feature-capability-table-stats","flow-node-inventory:flow-feature-capability-group-stats","flow-node-inventory:flow-feature-capability-queue-stats","flow-node-inventory:flow-feature-capability-flow-stats","flow-node-inventory:flow-feature-capability-port-stats"],"max_buffers":0},"flow-node-inventory:snapshot-gathering-status-start":{"begin":"2026-04-08T00:58:36.121Z"},"flow-node-inventory:software":"2.17.11","node-connector":[{"id":"openflow:1:1","flow-node-inventory:port-number":1,"flow-node-inventory:hardware-address":"92:f4:e8:ea:c6:ad","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s1-eth1","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"17","received":"7"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":11,"nanosecond":492000000},"bytes":{"transmitted":"1460","received":"586"},"receive-crc-error":"0"}},{"id":"openflow:1:LOCAL","flow-node-inventory:port-number":4294967294,"flow-node-inventory:hardware-address":"e6:45:d0:5b:c7:49","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s1","flow-node-inventory:current-feature":"","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":0,"flow-node-inventory:state":{"live":false,"blocked":false,"link-down":true},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"PORT-DOWN","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"0","received":"0"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":11,"nanosecond":488000000},"bytes":{"transmitted":"0","received":"0"},"receive-crc-error":"0"}},{"id":"openflow:1:2","flow-node-inventory:port-number":2,"flow-node-inventory:hardware-address":"42:46:a8:4b:8b:86","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s1-eth2","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"11","received":"15"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":11,"nanosecond":492000000},"bytes":{"transmitted":"932","received":"1284"},"receive-crc-error":"0"}}],"flow-node-inventory:ip-address":"10.30.170.192","flow-node-inventory:serial-number":"None","flow-node-inventory:group":[{"group-id":56,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":56000}}],"watch_group":56000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":56,"duration":{"second":7,"nanosecond":401000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":22,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":22000}}],"watch_group":22000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":22,"duration":{"second":7,"nanosecond":401000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":99,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":99000}}],"watch_group":99000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":99,"duration":{"second":7,"nanosecond":401000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":34000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":34000,"duration":{"second":10,"nanosecond":94000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":89000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":89000,"duration":{"second":10,"nanosecond":94000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":60000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":60000,"duration":{"second":10,"nanosecond":94000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":91000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":91000,"duration":{"second":10,"nanosecond":94000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":57,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":57000}}],"watch_group":57000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":57,"duration":{"second":7,"nanosecond":401000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":23,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":23000}}],"watch_group":23000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":23,"duration":{"second":6,"nanosecond":901000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":14000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":14000,"duration":{"second":10,"nanosecond":94000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":98,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":98000}}],"watch_group":98000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":98,"duration":{"second":6,"nanosecond":901000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":56000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":56000,"duration":{"second":10,"nanosecond":94000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":85000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":85000,"duration":{"second":10,"nanosecond":94000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":54,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":54000}}],"watch_group":54000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":54,"duration":{"second":6,"nanosecond":901000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":24,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":24000}}],"watch_group":24000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":24,"duration":{"second":6,"nanosecond":901000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":36000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":36000,"duration":{"second":10,"nanosecond":94000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":87000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":87000,"duration":{"second":10,"nanosecond":94000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":59000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":59000,"duration":{"second":10,"nanosecond":94000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":25000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":25000,"duration":{"second":10,"nanosecond":94000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":43000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":43000,"duration":{"second":10,"nanosecond":94000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":55,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":55000}}],"watch_group":55000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":55,"duration":{"second":6,"nanosecond":901000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":25,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":25000}}],"watch_group":25000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":25,"duration":{"second":9,"nanosecond":908000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":100,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":100000}}],"watch_group":100000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":100,"duration":{"second":6,"nanosecond":901000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":58000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":58000,"duration":{"second":9,"nanosecond":905000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":86000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":86000,"duration":{"second":9,"nanosecond":905000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":60,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":60000}}],"watch_group":60000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":60,"duration":{"second":9,"nanosecond":905000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":26,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":26000}}],"watch_group":26000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":26,"duration":{"second":6,"nanosecond":901000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":41000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":41000,"duration":{"second":9,"nanosecond":905000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":95,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":95000}}],"watch_group":95000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":95,"duration":{"second":6,"nanosecond":901000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":82000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":82000,"duration":{"second":9,"nanosecond":905000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":61,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":61000}}],"watch_group":61000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":61,"duration":{"second":6,"nanosecond":901000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":27,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":27000}}],"watch_group":27000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":27,"duration":{"second":6,"nanosecond":901000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":94,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":94000}}],"watch_group":94000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":94,"duration":{"second":6,"nanosecond":901000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":98000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":98000,"duration":{"second":9,"nanosecond":905000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":27000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":27000,"duration":{"second":9,"nanosecond":905000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":57000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":57000,"duration":{"second":9,"nanosecond":905000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":16000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":16000,"duration":{"second":9,"nanosecond":905000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":83000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":83000,"duration":{"second":9,"nanosecond":905000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":58,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":58000}}],"watch_group":58000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":58,"duration":{"second":9,"nanosecond":402000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":28,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":28000}}],"watch_group":28000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":28,"duration":{"second":6,"nanosecond":901000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":97,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":97000}}],"watch_group":97000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":97,"duration":{"second":6,"nanosecond":901000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":100000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":100000,"duration":{"second":9,"nanosecond":402000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":59,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":59000}}],"watch_group":59000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":59,"duration":{"second":9,"nanosecond":402000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":38000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":38000,"duration":{"second":9,"nanosecond":402000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":29,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":29000}}],"watch_group":29000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":29,"duration":{"second":6,"nanosecond":901000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":96,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":96000}}],"watch_group":96000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":96,"duration":{"second":6,"nanosecond":901000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":84000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":84000,"duration":{"second":9,"nanosecond":402000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":64,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":64000}}],"watch_group":64000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":64,"duration":{"second":6,"nanosecond":901000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":30,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":30000}}],"watch_group":30000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":30,"duration":{"second":6,"nanosecond":901000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":4,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":4000}}],"watch_group":4000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":4,"duration":{"second":6,"nanosecond":901000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":91,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":91000}}],"watch_group":91000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":91,"duration":{"second":9,"nanosecond":402000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":7000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":7000,"duration":{"second":9,"nanosecond":402000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":29000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":29000,"duration":{"second":9,"nanosecond":402000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":65,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":65000}}],"watch_group":65000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":65,"duration":{"second":6,"nanosecond":901000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":31,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":31000}}],"watch_group":31000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":31,"duration":{"second":6,"nanosecond":901000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":5,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":5000}}],"watch_group":5000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":5,"duration":{"second":6,"nanosecond":901000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":90,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":90000}}],"watch_group":90000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":90,"duration":{"second":6,"nanosecond":901000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":18000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":18000,"duration":{"second":9,"nanosecond":402000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":62,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":62000}}],"watch_group":62000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":62,"duration":{"second":6,"nanosecond":901000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":65000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":65000,"duration":{"second":9,"nanosecond":402000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":32,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":32000}}],"watch_group":32000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":32,"duration":{"second":6,"nanosecond":901000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":2,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":2000}}],"watch_group":2000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":2,"duration":{"second":6,"nanosecond":901000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":93,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":93000}}],"watch_group":93000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":93,"duration":{"second":6,"nanosecond":901000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":64000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":64000,"duration":{"second":9,"nanosecond":402000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":63,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":63000}}],"watch_group":63000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":63,"duration":{"second":6,"nanosecond":901000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":33,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":33000}}],"watch_group":33000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":33,"duration":{"second":6,"nanosecond":901000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":3,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":3000}}],"watch_group":3000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":3,"duration":{"second":6,"nanosecond":896000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":80000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":80000,"duration":{"second":9,"nanosecond":402000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":9000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":9000,"duration":{"second":9,"nanosecond":402000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":92,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":92000}}],"watch_group":92000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":92,"duration":{"second":6,"nanosecond":896000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":5000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":5000,"duration":{"second":9,"nanosecond":402000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":20000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":20000,"duration":{"second":9,"nanosecond":402000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":81000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":81000,"duration":{"second":9,"nanosecond":402000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":97000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":97000,"duration":{"second":9,"nanosecond":402000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":31000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":31000,"duration":{"second":9,"nanosecond":402000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":68,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":68000}}],"watch_group":68000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":68,"duration":{"second":6,"nanosecond":896000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":11000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":11000,"duration":{"second":9,"nanosecond":402000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":34,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":34000}}],"watch_group":34000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":34,"duration":{"second":9,"nanosecond":402000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":78000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":78000,"duration":{"second":9,"nanosecond":402000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":87,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":87000}}],"watch_group":87000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":87,"duration":{"second":9,"nanosecond":402000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":93000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":93000,"duration":{"second":9,"nanosecond":402000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":63000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":63000,"duration":{"second":9,"nanosecond":402000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":69,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":69000}}],"watch_group":69000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":69,"duration":{"second":6,"nanosecond":896000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":35,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":35000}}],"watch_group":35000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":35,"duration":{"second":6,"nanosecond":896000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":1,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":1000}}],"watch_group":1000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":1,"duration":{"second":6,"nanosecond":896000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":33000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":33000,"duration":{"second":9,"nanosecond":402000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":79000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":79000,"duration":{"second":9,"nanosecond":400000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":86,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":86000}}],"watch_group":86000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":86,"duration":{"second":9,"nanosecond":400000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":62000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":62000,"duration":{"second":9,"nanosecond":400000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":66,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":66000}}],"watch_group":66000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":66,"duration":{"second":6,"nanosecond":896000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":77000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":77000,"duration":{"second":9,"nanosecond":400000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":36,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":36000}}],"watch_group":36000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":36,"duration":{"second":9,"nanosecond":400000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":89,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":89000}}],"watch_group":89000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":89,"duration":{"second":9,"nanosecond":399000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":22000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":22000,"duration":{"second":9,"nanosecond":399000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":95000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":95000,"duration":{"second":9,"nanosecond":399000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":67,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":67000}}],"watch_group":67000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":67,"duration":{"second":6,"nanosecond":896000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":37,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":37000}}],"watch_group":37000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":37,"duration":{"second":6,"nanosecond":896000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":1000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":1000,"duration":{"second":9,"nanosecond":399000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":88,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":88000}}],"watch_group":88000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":88,"duration":{"second":6,"nanosecond":896000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":61000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":61000,"duration":{"second":9,"nanosecond":399000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":3000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":3000,"duration":{"second":9,"nanosecond":398000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":73,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":73000}}],"watch_group":73000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":73,"duration":{"second":6,"nanosecond":896000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":39,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":39000}}],"watch_group":39000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":39,"duration":{"second":6,"nanosecond":896000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":13,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":13000}}],"watch_group":13000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":13,"duration":{"second":6,"nanosecond":896000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":74000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":74000,"duration":{"second":9,"nanosecond":398000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":15000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":15000,"duration":{"second":9,"nanosecond":398000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":44000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":44000,"duration":{"second":9,"nanosecond":398000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":45000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":45000,"duration":{"second":9,"nanosecond":398000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":68000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":68000,"duration":{"second":9,"nanosecond":398000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":72,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":72000}}],"watch_group":72000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":72,"duration":{"second":6,"nanosecond":896000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":38,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":38000}}],"watch_group":38000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":38,"duration":{"second":8,"nanosecond":910000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":75000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":75000,"duration":{"second":8,"nanosecond":910000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":12,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":12000}}],"watch_group":12000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":12,"duration":{"second":6,"nanosecond":896000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":35000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":35000,"duration":{"second":8,"nanosecond":910000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":24000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":24000,"duration":{"second":8,"nanosecond":909000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":90000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":90000,"duration":{"second":8,"nanosecond":909000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":71,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":71000}}],"watch_group":71000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":71,"duration":{"second":6,"nanosecond":896000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":41,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":41000}}],"watch_group":41000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":41,"duration":{"second":8,"nanosecond":909000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":42000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":42000,"duration":{"second":8,"nanosecond":909000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":11,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":11000}}],"watch_group":11000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":11,"duration":{"second":8,"nanosecond":908000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":92000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":92000,"duration":{"second":8,"nanosecond":908000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":46000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":46000,"duration":{"second":8,"nanosecond":908000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":67000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":67000,"duration":{"second":8,"nanosecond":908000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":70,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":70000}}],"watch_group":70000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":70,"duration":{"second":6,"nanosecond":896000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":76000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":76000,"duration":{"second":8,"nanosecond":907000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":40,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":40000}}],"watch_group":40000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":40,"duration":{"second":6,"nanosecond":896000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":13000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":13000,"duration":{"second":8,"nanosecond":904000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":10,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":10000}}],"watch_group":10000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":10,"duration":{"second":6,"nanosecond":896000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":88000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":88000,"duration":{"second":8,"nanosecond":904000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":47000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":47000,"duration":{"second":8,"nanosecond":904000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":66000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":66000,"duration":{"second":8,"nanosecond":903000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":77,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":77000}}],"watch_group":77000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":77,"duration":{"second":8,"nanosecond":903000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":43,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":43000}}],"watch_group":43000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":43,"duration":{"second":8,"nanosecond":903000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":9,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":9000}}],"watch_group":9000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":9,"duration":{"second":8,"nanosecond":903000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":99000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":99000,"duration":{"second":8,"nanosecond":903000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":26000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":26000,"duration":{"second":8,"nanosecond":903000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":70000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":70000,"duration":{"second":8,"nanosecond":903000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":76,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":76000}}],"watch_group":76000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":76,"duration":{"second":8,"nanosecond":409000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":42,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":42000}}],"watch_group":42000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":42,"duration":{"second":8,"nanosecond":407000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":8,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":8000}}],"watch_group":8000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":8,"duration":{"second":6,"nanosecond":896000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":37000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":37000,"duration":{"second":8,"nanosecond":407000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":49000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":49000,"duration":{"second":8,"nanosecond":407000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":71000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":71000,"duration":{"second":8,"nanosecond":407000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":48000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":48000,"duration":{"second":8,"nanosecond":407000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":75,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":75000}}],"watch_group":75000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":75,"duration":{"second":8,"nanosecond":407000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":45,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":45000}}],"watch_group":45000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":45,"duration":{"second":8,"nanosecond":404000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":7,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":7000}}],"watch_group":7000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":7,"duration":{"second":8,"nanosecond":404000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":39000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":39000,"duration":{"second":8,"nanosecond":404000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":73000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":73000,"duration":{"second":8,"nanosecond":403000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":69000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":69000,"duration":{"second":8,"nanosecond":403000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":17000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":17000,"duration":{"second":8,"nanosecond":403000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":28000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":28000,"duration":{"second":8,"nanosecond":403000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":74,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":74000}}],"watch_group":74000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":74,"duration":{"second":8,"nanosecond":403000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":44,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":44000}}],"watch_group":44000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":44,"duration":{"second":8,"nanosecond":403000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":6,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":6000}}],"watch_group":6000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":6,"duration":{"second":6,"nanosecond":896000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":40000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":40000,"duration":{"second":8,"nanosecond":403000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":81,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":81000}}],"watch_group":81000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":81,"duration":{"second":8,"nanosecond":403000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":47,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":47000}}],"watch_group":47000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":47,"duration":{"second":8,"nanosecond":403000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":21,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":21000}}],"watch_group":21000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":21,"duration":{"second":6,"nanosecond":896000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":8000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":8000,"duration":{"second":8,"nanosecond":403000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":19000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":19000,"duration":{"second":8,"nanosecond":403000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":96000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":96000,"duration":{"second":8,"nanosecond":403000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":80,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":80000}}],"watch_group":80000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":80,"duration":{"second":8,"nanosecond":401000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":46,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":46000}}],"watch_group":46000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":46,"duration":{"second":8,"nanosecond":401000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":20,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":20000}}],"watch_group":20000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":20,"duration":{"second":8,"nanosecond":401000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":52000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":52000,"duration":{"second":8,"nanosecond":401000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":6000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":6000,"duration":{"second":8,"nanosecond":401000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":79,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":79000}}],"watch_group":79000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":79,"duration":{"second":8,"nanosecond":401000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":49,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":49000}}],"watch_group":49000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":49,"duration":{"second":7,"nanosecond":908000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":19,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":19000}}],"watch_group":19000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":19,"duration":{"second":7,"nanosecond":908000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":50000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":50000,"duration":{"second":7,"nanosecond":908000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":72000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":72000,"duration":{"second":7,"nanosecond":908000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":30000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":30000,"duration":{"second":7,"nanosecond":907000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":78,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":78000}}],"watch_group":78000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":78,"duration":{"second":7,"nanosecond":907000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":48,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":48000}}],"watch_group":48000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":48,"duration":{"second":7,"nanosecond":906000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":18,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":18000}}],"watch_group":18000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":18,"duration":{"second":7,"nanosecond":906000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":51000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":51000,"duration":{"second":7,"nanosecond":906000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":85,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":85000}}],"watch_group":85000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":85,"duration":{"second":7,"nanosecond":906000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":55000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":55000,"duration":{"second":7,"nanosecond":905000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":51,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":51000}}],"watch_group":51000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":51,"duration":{"second":7,"nanosecond":401000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":17,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":17000}}],"watch_group":17000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":17,"duration":{"second":7,"nanosecond":401000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":21000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":21000,"duration":{"second":7,"nanosecond":401000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":4000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":4000,"duration":{"second":7,"nanosecond":401000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":84,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":84000}}],"watch_group":84000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":84,"duration":{"second":7,"nanosecond":401000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":50,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":50000}}],"watch_group":50000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":50,"duration":{"second":7,"nanosecond":401000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":16,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":16000}}],"watch_group":16000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":16,"duration":{"second":7,"nanosecond":401000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":10000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":10000,"duration":{"second":7,"nanosecond":401000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":54000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":54000,"duration":{"second":7,"nanosecond":401000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":83,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":83000}}],"watch_group":83000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":83,"duration":{"second":7,"nanosecond":401000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":32000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":32000,"duration":{"second":7,"nanosecond":401000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":53,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":53000}}],"watch_group":53000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":53,"duration":{"second":6,"nanosecond":896000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":15,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":15000}}],"watch_group":15000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":15,"duration":{"second":7,"nanosecond":401000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":2000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":2000,"duration":{"second":7,"nanosecond":401000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":82,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":82000}}],"watch_group":82000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":82,"duration":{"second":7,"nanosecond":401000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":52,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":52000}}],"watch_group":52000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":52,"duration":{"second":7,"nanosecond":401000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":14,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":14000}}],"watch_group":14000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":14,"duration":{"second":7,"nanosecond":401000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":53000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":53000,"duration":{"second":7,"nanosecond":401000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":12000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":12000,"duration":{"second":7,"nanosecond":401000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":23000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":23000,"duration":{"second":7,"nanosecond":401000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":94000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":94000,"duration":{"second":7,"nanosecond":401000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}}],"flow-node-inventory:snapshot-gathering-status-end":{"succeeded":true,"end":"2026-04-08T00:58:36.203Z"}},{"id":"openflow:2","flow-node-inventory:port-number":54944,"flow-node-inventory:table":[{"id":62,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":28,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":2,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":224,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":181,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":147,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":106,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":61,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":27,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":1,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":223,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":182,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":148,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":105,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":60,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":30,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":0,"flow":[{"id":"71","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.71/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":71}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":265000000}},"flags":""},{"id":"11","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.11/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":11}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":264000000}},"flags":""},{"id":"70","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.70/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":70}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":265000000}},"flags":""},{"id":"10","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.10/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":10}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":264000000}},"flags":""},{"id":"60","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.60/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":60}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":265000000}},"flags":""},{"id":"13","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.13/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":13}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":264000000}},"flags":""},{"id":"12","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.12/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":12}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":264000000}},"flags":""},{"id":"80","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.80/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":80}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":265000000}},"flags":""},{"id":"93","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.93/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":93}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":264000000}},"flags":""},{"id":"92","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.92/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":92}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":264000000}},"flags":""},{"id":"82","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.82/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":82}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":265000000}},"flags":""},{"id":"91","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.91/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":91}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":264000000}},"flags":""},{"id":"81","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.81/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":81}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":265000000}},"flags":""},{"id":"90","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.90/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":90}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":264000000}},"flags":""},{"id":"9","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.9/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":9}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":264000000}},"flags":""},{"id":"84","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.84/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":84}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":265000000}},"flags":""},{"id":"97","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.97/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":97}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":264000000}},"flags":""},{"id":"66","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.66/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":66}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":265000000}},"flags":""},{"id":"79","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.79/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":79}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":265000000}},"flags":""},{"id":"54","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.54/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":54}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":264000000}},"flags":""},{"id":"45","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.45/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":45}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":264000000}},"flags":""},{"id":"83","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.83/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":83}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":265000000}},"flags":""},{"id":"96","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.96/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":96}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":264000000}},"flags":""},{"id":"65","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.65/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":65}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":265000000}},"flags":""},{"id":"78","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.78/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":78}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":265000000}},"flags":""},{"id":"20","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.20/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":20}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":264000000}},"flags":""},{"id":"55","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.55/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":55}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":264000000}},"flags":""},{"id":"46","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.46/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":46}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":264000000}},"flags":""},{"id":"7","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.7/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":7}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":264000000}},"flags":""},{"id":"86","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.86/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":86}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":265000000}},"flags":""},{"id":"95","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.95/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":95}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":264000000}},"flags":""},{"id":"68","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.68/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":68}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":265000000}},"flags":""},{"id":"77","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.77/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":77}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":265000000}},"flags":""},{"id":"30","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.30/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":30}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":264000000}},"flags":""},{"id":"56","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.56/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":56}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":264000000}},"flags":""},{"id":"43","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.43/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":43}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":264000000}},"flags":""},{"id":"8","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.8/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":8}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":264000000}},"flags":""},{"id":"85","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.85/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":85}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":265000000}},"flags":""},{"id":"94","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.94/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":94}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":264000000}},"flags":""},{"id":"67","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.67/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":67}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":265000000}},"flags":""},{"id":"76","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.76/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":76}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":265000000}},"flags":""},{"id":"31","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.31/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":31}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":264000000}},"flags":""},{"id":"57","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.57/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":57}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":264000000}},"flags":""},{"id":"44","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.44/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":44}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":264000000}},"flags":""},{"id":"5","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.5/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":5}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":264000000}},"flags":""},{"id":"88","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.88/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":88}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":265000000}},"flags":""},{"id":"62","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.62/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":62}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":265000000}},"flags":""},{"id":"75","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.75/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":75}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":265000000}},"flags":""},{"id":"32","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.32/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":32}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":264000000}},"flags":""},{"id":"23","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.23/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":23}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":264000000}},"flags":""},{"id":"50","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.50/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":50}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":263000000}},"flags":""},{"id":"41","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.41/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":41}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":264000000}},"flags":""},{"id":"6","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.6/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":6}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":264000000}},"flags":""},{"id":"100","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.100/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":100}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":265000000}},"flags":""},{"id":"87","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.87/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":87}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":265000000}},"flags":""},{"id":"61","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.61/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":61}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":265000000}},"flags":""},{"id":"74","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.74/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":74}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":265000000}},"flags":""},{"id":"33","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.33/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":33}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":264000000}},"flags":""},{"id":"24","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.24/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":24}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":264000000}},"flags":""},{"id":"51","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.51/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":51}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":263000000}},"flags":""},{"id":"42","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.42/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":42}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":264000000}},"flags":""},{"id":"3","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.3/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":3}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":264000000}},"flags":""},{"id":"99","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.99/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":99}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":264000000}},"flags":""},{"id":"64","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.64/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":64}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":265000000}},"flags":""},{"id":"73","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.73/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":73}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":265000000}},"flags":""},{"id":"34","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.34/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":34}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":264000000}},"flags":""},{"id":"21","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.21/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":21}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":264000000}},"flags":""},{"id":"52","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.52/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":52}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":263000000}},"flags":""},{"id":"4","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.4/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":4}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":264000000}},"flags":""},{"id":"89","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.89/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":89}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":265000000}},"flags":""},{"id":"98","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.98/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":98}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":264000000}},"flags":""},{"id":"63","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.63/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":63}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":265000000}},"flags":""},{"id":"72","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.72/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":72}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":265000000}},"flags":""},{"id":"35","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.35/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":35}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":264000000}},"flags":""},{"id":"22","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.22/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":22}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":264000000}},"flags":""},{"id":"53","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.53/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":53}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":264000000}},"flags":""},{"id":"40","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.40/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":40}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":264000000}},"flags":""},{"id":"#UF$TABLE*0-2","table_id":0,"priority":0,"cookie_mask":"0","idle-timeout":0,"cookie":"10","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"output-action":{"max-length":65535,"output-node-connector":"CONTROLLER"}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"4","byte-count":"310","duration":{"second":6,"nanosecond":143000000}},"flags":"SEND_FLOW_REM"},{"id":"37","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.37/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":37}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":264000000}},"flags":""},{"id":"28","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.28/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":28}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":264000000}},"flags":""},{"id":"36","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.36/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":36}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":264000000}},"flags":""},{"id":"27","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.27/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":27}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":264000000}},"flags":""},{"id":"39","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.39/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":39}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":264000000}},"flags":""},{"id":"26","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.26/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":26}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":264000000}},"flags":""},{"id":"38","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.38/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":38}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":264000000}},"flags":""},{"id":"25","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.25/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":25}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":264000000}},"flags":""},{"id":"69","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.69/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":69}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":265000000}},"flags":""},{"id":"59","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.59/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":59}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":264000000}},"flags":""},{"id":"58","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.58/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":58}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":264000000}},"flags":""},{"id":"49","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.49/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":49}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":264000000}},"flags":""},{"id":"48","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.48/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":48}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":264000000}},"flags":""},{"id":"29","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.29/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":29}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":264000000}},"flags":""},{"id":"47","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.47/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":47}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":264000000}},"flags":""},{"id":"18","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.18/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":18}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":265000000}},"flags":""},{"id":"19","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.19/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":19}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":265000000}},"flags":""},{"id":"14","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.14/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":14}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":265000000}},"flags":""},{"id":"15","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.15/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":15}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":265000000}},"flags":""},{"id":"1","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.1/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":1}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":264000000}},"flags":""},{"id":"16","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.16/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":16}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":265000000}},"flags":""},{"id":"2","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.2/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":2}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":265000000}},"flags":""},{"id":"17","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.17/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":17}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":6,"nanosecond":265000000}},"flags":""}],"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"26","active-flows":101,"packets-matched":"14"}},{"id":226,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":179,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":149,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":104,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":59,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":29,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":225,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":180,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":150,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":103,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":66,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":32,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":220,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":185,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":151,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":102,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":65,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":31,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":253,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":219,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":186,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":152,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":101,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":64,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":34,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":252,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":222,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":183,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":153,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":100,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":63,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":33,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":251,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":221,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":184,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":154,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":99,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":54,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":20,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":250,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":216,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":189,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":155,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":129,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":114,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":53,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":19,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":249,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":215,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":190,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":156,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":130,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":113,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":52,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":22,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":248,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":218,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":187,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":157,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":112,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":51,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":21,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":247,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":217,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":188,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":158,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":128,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":111,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":58,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":24,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":246,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":212,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":193,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":159,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":110,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":57,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":23,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":245,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":211,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":194,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":160,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":109,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":56,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":26,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":244,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":214,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":191,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":161,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":108,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":55,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":25,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":243,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":213,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":192,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":162,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":107,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":77,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":43,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":17,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":239,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":198,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":164,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":138,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":119,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":89,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":78,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":44,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":18,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":240,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":197,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":163,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":137,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":120,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":90,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":75,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":45,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":15,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":241,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":196,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":166,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":136,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":121,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":87,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":76,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":46,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":16,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":242,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":195,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":165,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":135,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":122,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":88,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":81,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":47,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":13,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":235,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":202,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":168,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":134,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":115,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":85,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":82,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":48,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":14,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":236,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":201,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":167,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":133,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":116,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":86,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":79,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":49,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":11,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":237,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":200,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":170,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":132,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":117,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":83,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":80,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":50,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":12,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":238,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":199,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":169,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":131,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":118,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":84,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":69,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":35,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":9,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":231,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":206,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":172,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":146,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":127,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":97,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":70,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":36,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":10,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":232,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":205,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":171,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":145,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":98,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":67,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":37,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":7,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":233,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":204,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":174,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":144,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":95,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":68,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":38,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":8,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":234,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":203,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":173,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":143,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":96,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":73,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":39,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":5,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":227,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":210,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":176,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":142,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":123,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":93,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":74,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":40,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":6,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":228,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":209,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":175,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":141,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":124,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":94,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":71,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":41,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":3,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":229,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":208,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":178,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":140,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":125,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":91,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":72,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":42,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":4,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":230,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":207,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":177,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":139,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":126,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":92,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}}],"opendaylight-group-statistics:group-features":{"max-groups":[4294967040],"group-types-supported":["opendaylight-group-types:group-all","opendaylight-group-types:group-ff","opendaylight-group-types:group-select","opendaylight-group-types:group-indirect"],"group-capabilities-supported":["opendaylight-group-types:chaining","opendaylight-group-types:select-weight","opendaylight-group-types:select-liveness"],"actions":[67076097]},"flow-node-inventory:manufacturer":"Nicira, Inc.","flow-node-inventory:description":"s2","flow-node-inventory:hardware":"Open vSwitch","flow-node-inventory:switch-features":{"max_tables":254,"capabilities":["flow-node-inventory:flow-feature-capability-table-stats","flow-node-inventory:flow-feature-capability-group-stats","flow-node-inventory:flow-feature-capability-queue-stats","flow-node-inventory:flow-feature-capability-flow-stats","flow-node-inventory:flow-feature-capability-port-stats"],"max_buffers":0},"flow-node-inventory:snapshot-gathering-status-start":{"begin":"2026-04-08T00:58:36.142Z"},"flow-node-inventory:software":"2.17.11","node-connector":[{"id":"openflow:2:3","flow-node-inventory:port-number":3,"flow-node-inventory:hardware-address":"da:7c:fc:7d:24:d4","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s2-eth3","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"15","received":"11"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":11,"nanosecond":489000000},"bytes":{"transmitted":"1284","received":"932"},"receive-crc-error":"0"}},{"id":"openflow:2:LOCAL","flow-node-inventory:port-number":4294967294,"flow-node-inventory:hardware-address":"ee:be:cf:9b:06:44","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s2","flow-node-inventory:current-feature":"","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":0,"flow-node-inventory:state":{"live":false,"blocked":false,"link-down":true},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"PORT-DOWN","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"0","received":"0"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":11,"nanosecond":484000000},"bytes":{"transmitted":"0","received":"0"},"receive-crc-error":"0"}},{"id":"openflow:2:2","flow-node-inventory:port-number":2,"flow-node-inventory:hardware-address":"76:f5:91:ad:d8:c6","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s2-eth2","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"15","received":"11"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":11,"nanosecond":489000000},"bytes":{"transmitted":"1284","received":"932"},"receive-crc-error":"0"}},{"id":"openflow:2:1","flow-node-inventory:port-number":1,"flow-node-inventory:hardware-address":"96:61:91:36:76:0b","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s2-eth1","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"17","received":"7"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":11,"nanosecond":489000000},"bytes":{"transmitted":"1460","received":"586"},"receive-crc-error":"0"}}],"flow-node-inventory:ip-address":"10.30.170.192","flow-node-inventory:serial-number":"None","flow-node-inventory:group":[{"group-id":56,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":56000}}],"watch_group":56000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":56,"duration":{"second":7,"nanosecond":414000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":22,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":22000}}],"watch_group":22000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":22,"duration":{"second":7,"nanosecond":414000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":99,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":99000}}],"watch_group":99000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":99,"duration":{"second":7,"nanosecond":414000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":34000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":34000,"duration":{"second":10,"nanosecond":107000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":89000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":89000,"duration":{"second":10,"nanosecond":108000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":60000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":60000,"duration":{"second":10,"nanosecond":107000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":91000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":91000,"duration":{"second":10,"nanosecond":107000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":57,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":57000}}],"watch_group":57000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":57,"duration":{"second":7,"nanosecond":414000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":23,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":23000}}],"watch_group":23000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":23,"duration":{"second":6,"nanosecond":917000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":14000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":14000,"duration":{"second":10,"nanosecond":107000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":98,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":98000}}],"watch_group":98000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":98,"duration":{"second":6,"nanosecond":917000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":56000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":56000,"duration":{"second":10,"nanosecond":107000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":85000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":85000,"duration":{"second":10,"nanosecond":107000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":54,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":54000}}],"watch_group":54000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":54,"duration":{"second":6,"nanosecond":917000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":24,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":24000}}],"watch_group":24000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":24,"duration":{"second":6,"nanosecond":917000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":36000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":36000,"duration":{"second":10,"nanosecond":107000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":87000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":87000,"duration":{"second":10,"nanosecond":107000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":59000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":59000,"duration":{"second":10,"nanosecond":107000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":25000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":25000,"duration":{"second":10,"nanosecond":107000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":43000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":43000,"duration":{"second":10,"nanosecond":108000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":55,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":55000}}],"watch_group":55000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":55,"duration":{"second":6,"nanosecond":917000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":25,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":25000}}],"watch_group":25000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":25,"duration":{"second":9,"nanosecond":923000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":100,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":100000}}],"watch_group":100000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":100,"duration":{"second":6,"nanosecond":917000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":58000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":58000,"duration":{"second":9,"nanosecond":923000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":86000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":86000,"duration":{"second":9,"nanosecond":923000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":60,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":60000}}],"watch_group":60000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":60,"duration":{"second":9,"nanosecond":922000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":26,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":26000}}],"watch_group":26000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":26,"duration":{"second":6,"nanosecond":918000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":41000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":41000,"duration":{"second":9,"nanosecond":922000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":95,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":95000}}],"watch_group":95000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":95,"duration":{"second":6,"nanosecond":917000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":82000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":82000,"duration":{"second":9,"nanosecond":922000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":61,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":61000}}],"watch_group":61000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":61,"duration":{"second":6,"nanosecond":917000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":27,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":27000}}],"watch_group":27000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":27,"duration":{"second":6,"nanosecond":917000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":94,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":94000}}],"watch_group":94000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":94,"duration":{"second":6,"nanosecond":917000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":98000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":98000,"duration":{"second":9,"nanosecond":922000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":27000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":27000,"duration":{"second":9,"nanosecond":922000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":57000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":57000,"duration":{"second":9,"nanosecond":922000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":16000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":16000,"duration":{"second":9,"nanosecond":922000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":83000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":83000,"duration":{"second":9,"nanosecond":922000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":58,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":58000}}],"watch_group":58000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":58,"duration":{"second":9,"nanosecond":422000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":28,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":28000}}],"watch_group":28000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":28,"duration":{"second":6,"nanosecond":917000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":97,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":97000}}],"watch_group":97000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":97,"duration":{"second":6,"nanosecond":917000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":100000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":100000,"duration":{"second":9,"nanosecond":422000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":59,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":59000}}],"watch_group":59000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":59,"duration":{"second":9,"nanosecond":422000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":38000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":38000,"duration":{"second":9,"nanosecond":422000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":29,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":29000}}],"watch_group":29000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":29,"duration":{"second":6,"nanosecond":917000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":96,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":96000}}],"watch_group":96000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":96,"duration":{"second":6,"nanosecond":917000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":84000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":84000,"duration":{"second":9,"nanosecond":422000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":64,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":64000}}],"watch_group":64000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":64,"duration":{"second":6,"nanosecond":917000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":30,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":30000}}],"watch_group":30000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":30,"duration":{"second":6,"nanosecond":917000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":4,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":4000}}],"watch_group":4000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":4,"duration":{"second":6,"nanosecond":913000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":91,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":91000}}],"watch_group":91000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":91,"duration":{"second":9,"nanosecond":422000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":7000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":7000,"duration":{"second":9,"nanosecond":422000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":29000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":29000,"duration":{"second":9,"nanosecond":421000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":65,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":65000}}],"watch_group":65000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":65,"duration":{"second":6,"nanosecond":913000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":31,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":31000}}],"watch_group":31000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":31,"duration":{"second":6,"nanosecond":913000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":5,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":5000}}],"watch_group":5000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":5,"duration":{"second":6,"nanosecond":913000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":90,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":90000}}],"watch_group":90000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":90,"duration":{"second":6,"nanosecond":913000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":18000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":18000,"duration":{"second":9,"nanosecond":421000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":62,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":62000}}],"watch_group":62000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":62,"duration":{"second":6,"nanosecond":913000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":65000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":65000,"duration":{"second":9,"nanosecond":421000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":32,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":32000}}],"watch_group":32000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":32,"duration":{"second":6,"nanosecond":914000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":2,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":2000}}],"watch_group":2000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":2,"duration":{"second":6,"nanosecond":913000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":93,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":93000}}],"watch_group":93000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":93,"duration":{"second":6,"nanosecond":913000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":64000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":64000,"duration":{"second":9,"nanosecond":420000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":63,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":63000}}],"watch_group":63000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":63,"duration":{"second":6,"nanosecond":914000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":33,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":33000}}],"watch_group":33000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":33,"duration":{"second":6,"nanosecond":913000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":3,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":3000}}],"watch_group":3000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":3,"duration":{"second":6,"nanosecond":913000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":80000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":80000,"duration":{"second":9,"nanosecond":420000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":9000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":9000,"duration":{"second":9,"nanosecond":420000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":92,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":92000}}],"watch_group":92000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":92,"duration":{"second":6,"nanosecond":913000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":5000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":5000,"duration":{"second":9,"nanosecond":416000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":20000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":20000,"duration":{"second":9,"nanosecond":416000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":81000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":81000,"duration":{"second":9,"nanosecond":416000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":97000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":97000,"duration":{"second":9,"nanosecond":416000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":31000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":31000,"duration":{"second":9,"nanosecond":416000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":68,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":68000}}],"watch_group":68000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":68,"duration":{"second":6,"nanosecond":913000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":11000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":11000,"duration":{"second":9,"nanosecond":416000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":34,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":34000}}],"watch_group":34000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":34,"duration":{"second":9,"nanosecond":416000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":78000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":78000,"duration":{"second":9,"nanosecond":416000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":87,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":87000}}],"watch_group":87000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":87,"duration":{"second":9,"nanosecond":416000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":93000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":93000,"duration":{"second":9,"nanosecond":417000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":63000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":63000,"duration":{"second":9,"nanosecond":416000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":69,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":69000}}],"watch_group":69000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":69,"duration":{"second":6,"nanosecond":913000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":35,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":35000}}],"watch_group":35000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":35,"duration":{"second":6,"nanosecond":913000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":1,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":1000}}],"watch_group":1000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":1,"duration":{"second":6,"nanosecond":914000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":33000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":33000,"duration":{"second":9,"nanosecond":416000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":79000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":79000,"duration":{"second":9,"nanosecond":416000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":86,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":86000}}],"watch_group":86000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":86,"duration":{"second":9,"nanosecond":416000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":62000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":62000,"duration":{"second":9,"nanosecond":417000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":66,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":66000}}],"watch_group":66000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":66,"duration":{"second":6,"nanosecond":914000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":77000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":77000,"duration":{"second":9,"nanosecond":416000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":36,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":36000}}],"watch_group":36000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":36,"duration":{"second":9,"nanosecond":416000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":89,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":89000}}],"watch_group":89000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":89,"duration":{"second":9,"nanosecond":416000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":22000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":22000,"duration":{"second":9,"nanosecond":414000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":95000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":95000,"duration":{"second":9,"nanosecond":414000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":67,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":67000}}],"watch_group":67000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":67,"duration":{"second":6,"nanosecond":913000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":37,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":37000}}],"watch_group":37000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":37,"duration":{"second":6,"nanosecond":913000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":1000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":1000,"duration":{"second":9,"nanosecond":412000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":88,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":88000}}],"watch_group":88000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":88,"duration":{"second":6,"nanosecond":911000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":61000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":61000,"duration":{"second":9,"nanosecond":412000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":3000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":3000,"duration":{"second":9,"nanosecond":412000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":73,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":73000}}],"watch_group":73000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":73,"duration":{"second":6,"nanosecond":911000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":39,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":39000}}],"watch_group":39000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":39,"duration":{"second":6,"nanosecond":911000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":13,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":13000}}],"watch_group":13000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":13,"duration":{"second":6,"nanosecond":911000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":74000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":74000,"duration":{"second":9,"nanosecond":412000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":15000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":15000,"duration":{"second":9,"nanosecond":412000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":44000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":44000,"duration":{"second":9,"nanosecond":412000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":45000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":45000,"duration":{"second":9,"nanosecond":412000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":68000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":68000,"duration":{"second":9,"nanosecond":412000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":72,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":72000}}],"watch_group":72000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":72,"duration":{"second":6,"nanosecond":911000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":38,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":38000}}],"watch_group":38000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":38,"duration":{"second":8,"nanosecond":916000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":75000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":75000,"duration":{"second":8,"nanosecond":916000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":12,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":12000}}],"watch_group":12000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":12,"duration":{"second":6,"nanosecond":911000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":35000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":35000,"duration":{"second":8,"nanosecond":916000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":24000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":24000,"duration":{"second":8,"nanosecond":916000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":90000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":90000,"duration":{"second":8,"nanosecond":916000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":71,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":71000}}],"watch_group":71000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":71,"duration":{"second":6,"nanosecond":911000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":41,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":41000}}],"watch_group":41000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":41,"duration":{"second":8,"nanosecond":916000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":42000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":42000,"duration":{"second":8,"nanosecond":916000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":11,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":11000}}],"watch_group":11000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":11,"duration":{"second":8,"nanosecond":916000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":92000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":92000,"duration":{"second":8,"nanosecond":916000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":46000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":46000,"duration":{"second":8,"nanosecond":917000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":67000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":67000,"duration":{"second":8,"nanosecond":916000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":70,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":70000}}],"watch_group":70000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":70,"duration":{"second":6,"nanosecond":911000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":76000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":76000,"duration":{"second":8,"nanosecond":916000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":40,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":40000}}],"watch_group":40000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":40,"duration":{"second":6,"nanosecond":911000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":13000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":13000,"duration":{"second":8,"nanosecond":916000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":10,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":10000}}],"watch_group":10000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":10,"duration":{"second":6,"nanosecond":911000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":88000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":88000,"duration":{"second":8,"nanosecond":916000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":47000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":47000,"duration":{"second":8,"nanosecond":916000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":66000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":66000,"duration":{"second":8,"nanosecond":916000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":77,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":77000}}],"watch_group":77000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":77,"duration":{"second":8,"nanosecond":916000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":43,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":43000}}],"watch_group":43000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":43,"duration":{"second":8,"nanosecond":916000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":9,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":9000}}],"watch_group":9000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":9,"duration":{"second":8,"nanosecond":916000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":99000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":99000,"duration":{"second":8,"nanosecond":916000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":26000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":26000,"duration":{"second":8,"nanosecond":916000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":70000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":70000,"duration":{"second":8,"nanosecond":916000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":76,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":76000}}],"watch_group":76000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":76,"duration":{"second":8,"nanosecond":412000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":42,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":42000}}],"watch_group":42000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":42,"duration":{"second":8,"nanosecond":412000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":8,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":8000}}],"watch_group":8000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":8,"duration":{"second":6,"nanosecond":911000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":37000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":37000,"duration":{"second":8,"nanosecond":412000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":49000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":49000,"duration":{"second":8,"nanosecond":412000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":71000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":71000,"duration":{"second":8,"nanosecond":412000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":48000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":48000,"duration":{"second":8,"nanosecond":413000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":75,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":75000}}],"watch_group":75000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":75,"duration":{"second":8,"nanosecond":412000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":45,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":45000}}],"watch_group":45000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":45,"duration":{"second":8,"nanosecond":412000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":7,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":7000}}],"watch_group":7000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":7,"duration":{"second":8,"nanosecond":412000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":39000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":39000,"duration":{"second":8,"nanosecond":412000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":73000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":73000,"duration":{"second":8,"nanosecond":412000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":69000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":69000,"duration":{"second":8,"nanosecond":412000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":17000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":17000,"duration":{"second":8,"nanosecond":413000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":28000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":28000,"duration":{"second":8,"nanosecond":412000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":74,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":74000}}],"watch_group":74000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":74,"duration":{"second":8,"nanosecond":412000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":44,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":44000}}],"watch_group":44000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":44,"duration":{"second":8,"nanosecond":412000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":6,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":6000}}],"watch_group":6000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":6,"duration":{"second":6,"nanosecond":911000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":40000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":40000,"duration":{"second":8,"nanosecond":412000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":81,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":81000}}],"watch_group":81000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":81,"duration":{"second":8,"nanosecond":412000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":47,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":47000}}],"watch_group":47000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":47,"duration":{"second":8,"nanosecond":412000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":21,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":21000}}],"watch_group":21000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":21,"duration":{"second":6,"nanosecond":911000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":8000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":8000,"duration":{"second":8,"nanosecond":412000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":19000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":19000,"duration":{"second":8,"nanosecond":412000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":96000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":96000,"duration":{"second":8,"nanosecond":412000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":80,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":80000}}],"watch_group":80000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":80,"duration":{"second":8,"nanosecond":412000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":46,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":46000}}],"watch_group":46000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":46,"duration":{"second":8,"nanosecond":412000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":20,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":20000}}],"watch_group":20000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":20,"duration":{"second":8,"nanosecond":412000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":52000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":52000,"duration":{"second":8,"nanosecond":412000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":6000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":6000,"duration":{"second":8,"nanosecond":412000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":79,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":79000}}],"watch_group":79000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":79,"duration":{"second":8,"nanosecond":412000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":49,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":49000}}],"watch_group":49000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":49,"duration":{"second":7,"nanosecond":921000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":19,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":19000}}],"watch_group":19000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":19,"duration":{"second":7,"nanosecond":921000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":50000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":50000,"duration":{"second":7,"nanosecond":920000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":72000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":72000,"duration":{"second":7,"nanosecond":920000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":30000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":30000,"duration":{"second":7,"nanosecond":920000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":78,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":78000}}],"watch_group":78000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":78,"duration":{"second":7,"nanosecond":919000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":48,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":48000}}],"watch_group":48000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":48,"duration":{"second":7,"nanosecond":918000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":18,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":18000}}],"watch_group":18000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":18,"duration":{"second":7,"nanosecond":918000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":51000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":51000,"duration":{"second":7,"nanosecond":917000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":85,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":85000}}],"watch_group":85000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":85,"duration":{"second":7,"nanosecond":917000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":55000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":55000,"duration":{"second":7,"nanosecond":917000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":51,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":51000}}],"watch_group":51000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":51,"duration":{"second":7,"nanosecond":421000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":17,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":17000}}],"watch_group":17000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":17,"duration":{"second":7,"nanosecond":420000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":21000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":21000,"duration":{"second":7,"nanosecond":420000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":4000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":4000,"duration":{"second":7,"nanosecond":420000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":84,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":84000}}],"watch_group":84000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":84,"duration":{"second":7,"nanosecond":420000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":50,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":50000}}],"watch_group":50000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":50,"duration":{"second":7,"nanosecond":419000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":16,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":16000}}],"watch_group":16000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":16,"duration":{"second":7,"nanosecond":419000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":10000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":10000,"duration":{"second":7,"nanosecond":419000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":54000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":54000,"duration":{"second":7,"nanosecond":414000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":83,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":83000}}],"watch_group":83000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":83,"duration":{"second":7,"nanosecond":414000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":32000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":32000,"duration":{"second":7,"nanosecond":414000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":53,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":53000}}],"watch_group":53000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":53,"duration":{"second":6,"nanosecond":911000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":15,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":15000}}],"watch_group":15000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":15,"duration":{"second":7,"nanosecond":414000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":2000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":2000,"duration":{"second":7,"nanosecond":414000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":82,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":82000}}],"watch_group":82000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":82,"duration":{"second":7,"nanosecond":414000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":52,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":52000}}],"watch_group":52000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":52,"duration":{"second":7,"nanosecond":414000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":14,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":14000}}],"watch_group":14000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":14,"duration":{"second":7,"nanosecond":414000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":53000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":53000,"duration":{"second":7,"nanosecond":414000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":12000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":12000,"duration":{"second":7,"nanosecond":414000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":23000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":23000,"duration":{"second":7,"nanosecond":414000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":94000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":94000,"duration":{"second":7,"nanosecond":414000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}}],"flow-node-inventory:snapshot-gathering-status-end":{"succeeded":true,"end":"2026-04-08T00:58:36.208Z"}}]}}</msg>
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:38.245984" elapsed="0.010045"/>
</kw>
<kw name="Get Count" owner="BuiltIn">
<msg time="2026-04-08T00:58:38.259256" level="INFO">Item found from container 600 times.</msg>
<msg time="2026-04-08T00:58:38.259341" level="INFO">${group_count} = 600</msg>
<var>${group_count}</var>
<arg>${resp.text}</arg>
<arg>"group-type"</arg>
<doc>Returns and logs how many times ``item`` is found from ``container``.</doc>
<status status="PASS" start="2026-04-08T00:58:38.256228" elapsed="0.003139"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${group_count}</arg>
<arg>${groups}</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="PASS" start="2026-04-08T00:58:38.259559" elapsed="0.000318"/>
</kw>
<arg>${all_groups}</arg>
<doc>Check number of groups in the inventory.</doc>
<status status="PASS" start="2026-04-08T00:58:38.179024" elapsed="0.080915"/>
</kw>
<arg>10s</arg>
<arg>1s</arg>
<arg>ClusterOpenFlow.Check Number Of Groups On Member</arg>
<arg>${all_groups}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-08T00:58:38.178460" elapsed="0.081525"/>
</kw>
<doc>Check Groups in operational DS.</doc>
<status status="PASS" start="2026-04-08T00:58:37.879661" elapsed="0.380441"/>
</test>
<test id="s1-s4-t7" name="Check Flows In Switch" line="68">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-08T00:58:38.263287" elapsed="0.000206"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-08T00:58:38.263003" elapsed="0.000543"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:58:38.264553" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:58:38.264437" elapsed="0.000161"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:38.264416" elapsed="0.000205"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:58:38.269371" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:58:38.269266" elapsed="0.000149"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:38.269248" elapsed="0.000189"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:58:38.270477" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:58:38.270057" elapsed="0.000447"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:58:38.270966" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:58:38.270667" elapsed="0.000324"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:58:38.271034" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:58:38.271204" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:58:38.269662" elapsed="0.001568"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:58:38.278550" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:58:38.278442" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:38.278424" elapsed="0.000193"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:58:38.279764" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:58:38.279655" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:38.279636" elapsed="0.000197"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:58:38.280309" level="INFO">${karaf_connection_index} = 476</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:58:38.279980" elapsed="0.000356"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:58:38.280728" level="INFO">${current_connection_index} = None</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:58:38.280500" elapsed="0.000259"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T00:58:38.317471" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T00:58:38.281283" elapsed="0.036290"/>
</kw>
<msg time="2026-04-08T00:58:38.317743" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T00:58:38.317789" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:58:38.280922" elapsed="0.036903"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T00:58:38.365603" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "[C "I "n "[C "S "w "i "t "c "h "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T00:58:38.318377" elapsed="0.047331"/>
</kw>
<msg time="2026-04-08T00:58:38.365868" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T00:58:38.365914" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:58:38.318001" elapsed="0.047998"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:38.366342" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:38.366084" elapsed="0.000314"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:38.366061" elapsed="0.000361"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:38.366864" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "[C "I "n "[C "S "w "i "t "c "h "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:38.366564" elapsed="0.000366"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:38.367234" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:38.366996" elapsed="0.000292"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:38.366978" elapsed="0.000334"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T00:58:38.367345" elapsed="0.000032"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:58:38.368833" elapsed="0.000792"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:58:38.369901" elapsed="0.000474"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:58:38.370639" elapsed="0.000355"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:58:38.368171" elapsed="0.002924"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T00:58:38.367623" elapsed="0.003555"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T00:58:38.279351" elapsed="0.091930"/>
</kw>
<msg time="2026-04-08T00:58:38.371372" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:58:38.371415" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:58:38.278770" elapsed="0.092680"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T00:58:38.371632" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-08T00:58:38.371527" elapsed="0.000163"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:38.371509" elapsed="0.000204"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:38.372101" elapsed="0.000024"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:38.372445" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T00:58:38.372515" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T00:58:38.278082" elapsed="0.094537"/>
</kw>
<msg time="2026-04-08T00:58:38.372727" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:58:38.372775" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:58:38.271598" elapsed="0.101215"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:38.373138" elapsed="0.000038"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:38.372888" elapsed="0.000320"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:38.372871" elapsed="0.000360"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T00:58:38.271455" elapsed="0.101800"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:58:38.378743" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:58:38.378635" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:38.378616" elapsed="0.000195"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:58:38.380262" elapsed="0.000022"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:58:38.380020" elapsed="0.000305"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:38.379995" elapsed="0.000359"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:58:38.380954" level="INFO">${karaf_connection_index} = 478</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:58:38.380553" elapsed="0.000469"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:58:38.381485" level="INFO">${current_connection_index} = None</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:58:38.381253" elapsed="0.000259"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T00:58:38.434824" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T00:58:38.382016" elapsed="0.052934"/>
</kw>
<msg time="2026-04-08T00:58:38.435150" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T00:58:38.435233" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:58:38.381675" elapsed="0.053607"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T00:58:38.469871" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "[C "I "n "[C "S "w "i "t "c "h "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T00:58:38.435943" elapsed="0.034034"/>
</kw>
<msg time="2026-04-08T00:58:38.470138" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T00:58:38.470204" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:58:38.435510" elapsed="0.034731"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:38.470552" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:38.470322" elapsed="0.000286"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:38.470301" elapsed="0.000331"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:38.471076" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "[C "I "n "[C "S "w "i "t "c "h "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:38.470779" elapsed="0.000363"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:38.471461" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:38.471241" elapsed="0.000275"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:38.471222" elapsed="0.000317"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T00:58:38.471571" elapsed="0.000028"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:58:38.473022" elapsed="0.000776"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:58:38.474075" elapsed="0.000450"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:58:38.474786" elapsed="0.000341"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:58:38.472418" elapsed="0.002843"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T00:58:38.471865" elapsed="0.003459"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T00:58:38.379677" elapsed="0.095745"/>
</kw>
<msg time="2026-04-08T00:58:38.475513" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:58:38.475556" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:58:38.378963" elapsed="0.096628"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T00:58:38.475773" elapsed="0.000039"/>
</return>
<status status="PASS" start="2026-04-08T00:58:38.475667" elapsed="0.000178"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:38.475649" elapsed="0.000219"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 2,
close the previous connection. In any case create a new connection
to karaf console for 2, set correct prompt set and login to karaf console.
Store connection index for 2 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:38.476279" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:38.476608" elapsed="0.000023"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T00:58:38.476678" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T00:58:38.378279" elapsed="0.098504"/>
</kw>
<msg time="2026-04-08T00:58:38.476916" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:58:38.476959" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:58:38.373517" elapsed="0.103478"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:38.477339" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:38.477071" elapsed="0.000321"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:38.477054" elapsed="0.000361"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T00:58:38.373377" elapsed="0.104061"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:58:38.482963" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:58:38.482855" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:38.482836" elapsed="0.000193"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:58:38.484243" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:58:38.484101" elapsed="0.000193"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:38.484083" elapsed="0.000234"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:58:38.484783" level="INFO">${karaf_connection_index} = 480</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:58:38.484483" elapsed="0.000327"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:58:38.485209" level="INFO">${current_connection_index} = None</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:58:38.484972" elapsed="0.000264"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T00:58:38.522633" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T00:58:38.485795" elapsed="0.036939"/>
</kw>
<msg time="2026-04-08T00:58:38.522895" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T00:58:38.522941" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:58:38.485399" elapsed="0.037577"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T00:58:38.558938" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "[C "I "n "[C "S "w "i "t "c "h "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T00:58:38.523538" elapsed="0.035505"/>
</kw>
<msg time="2026-04-08T00:58:38.559241" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T00:58:38.559288" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:58:38.523153" elapsed="0.036171"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:38.559631" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:38.559403" elapsed="0.000282"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:38.559382" elapsed="0.000328"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:38.560147" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "[C "I "n "[C "S "w "i "t "c "h "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:38.559854" elapsed="0.000389"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:38.560530" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:38.560311" elapsed="0.000273"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:38.560293" elapsed="0.000314"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T00:58:38.560640" elapsed="0.000028"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:58:38.562045" elapsed="0.000771"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T00:58:38.563109" elapsed="0.000466"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T00:58:38.563838" elapsed="0.000375"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:58:38.561441" elapsed="0.002871"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T00:58:38.560899" elapsed="0.003512"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T00:58:38.483796" elapsed="0.080714"/>
</kw>
<msg time="2026-04-08T00:58:38.564601" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:58:38.564645" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:58:38.483211" elapsed="0.081469"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T00:58:38.564862" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-08T00:58:38.564757" elapsed="0.000164"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:38.564739" elapsed="0.000205"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 3,
close the previous connection. In any case create a new connection
to karaf console for 3, set correct prompt set and login to karaf console.
Store connection index for 3 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:38.565352" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:38.565684" elapsed="0.000023"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T00:58:38.565754" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T00:58:38.482516" elapsed="0.083343"/>
</kw>
<msg time="2026-04-08T00:58:38.565951" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:58:38.565994" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:58:38.477696" elapsed="0.088332"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:38.566369" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:38.566103" elapsed="0.000318"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:38.566086" elapsed="0.000358"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T00:58:38.477556" elapsed="0.088911"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-08T00:58:38.271284" elapsed="0.295212"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-08T00:58:38.268897" elapsed="0.297656"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-08T00:58:38.264132" elapsed="0.302475"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:58:38.263699" elapsed="0.302954"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-08T00:58:38.260774" elapsed="0.305931"/>
</kw>
<kw name="Check Flows In Mininet" owner="MininetKeywords">
<if>
<branch type="IF" condition="&quot;&quot;&quot;${mininet_conn}&quot;&quot;&quot; != &quot;&quot;">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${mininet_conn}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:58:38.567549" elapsed="0.000141"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:38.567329" elapsed="0.000396"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:38.567312" elapsed="0.000437"/>
</if>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:58:38.568202" level="INFO">${cmd} = dpctl dump-aggregate -O OpenFlow13</msg>
<var>${cmd}</var>
<arg>dpctl dump-aggregate -O OpenFlow13</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:58:38.567918" elapsed="0.000311"/>
</kw>
<kw name="Send Mininet Command" owner="MininetKeywords">
<if>
<branch type="IF" condition="&quot;&quot;&quot;${mininet_conn}&quot;&quot;&quot; != &quot;&quot;">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${mininet_conn}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:58:38.569055" elapsed="0.000288"/>
</kw>
<status status="PASS" start="2026-04-08T00:58:38.568837" elapsed="0.000542"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:38.568820" elapsed="0.000583"/>
</if>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T00:58:38.572434" level="INFO">dpctl dump-aggregate -O OpenFlow13</msg>
<arg>${cmd}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T00:58:38.569543" elapsed="0.002945"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-08T00:58:38.655655" level="INFO">*** s1 ------------------------------------------------------------------------
OFPST_AGGREGATE reply (OF1.3) (xid=0x2): packet_count=4 byte_count=310 flow_count=101
*** s2 ------------------------------------------------------------------------
OFPST_AGGREGATE reply (OF1.3) (xid=0x2): packet_count=7 byte_count=550 flow_count=101
*** s3 ------------------------------------------------------------------------
OFPST_AGGREGATE reply (OF1.3) (xid=0x2): packet_count=4 byte_count=310 flow_count=101
mininet&gt;</msg>
<msg time="2026-04-08T00:58:38.655959" level="INFO">${output} = *** s1 ------------------------------------------------------------------------
OFPST_AGGREGATE reply (OF1.3) (xid=0x2): packet_count=4 byte_count=310 flow_count=101
*** s2 ------------------------...</msg>
<var>${output}</var>
<arg>mininet&gt;</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-08T00:58:38.572648" elapsed="0.083338"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-08T00:58:38.656069" elapsed="0.000032"/>
</return>
<msg time="2026-04-08T00:58:38.656240" level="INFO">${output} = *** s1 ------------------------------------------------------------------------
OFPST_AGGREGATE reply (OF1.3) (xid=0x2): packet_count=4 byte_count=310 flow_count=101
*** s2 ------------------------...</msg>
<var>${output}</var>
<arg>${mininet_conn}</arg>
<arg>${cmd}</arg>
<doc>Sends Command dpctl dump-aggregate -O OpenFlow13 to Mininet session 495 and returns read buffer response.</doc>
<status status="PASS" start="2026-04-08T00:58:38.568544" elapsed="0.087723"/>
</kw>
<kw name="Get Regexp Matches" owner="String">
<msg time="2026-04-08T00:58:38.656798" level="INFO">${flows} = ['101', '101', '101']</msg>
<var>${flows}</var>
<arg>${output}</arg>
<arg>(?&lt;=flow_count\=).*?(?=\r)</arg>
<doc>Returns a list of all non-overlapping matches in the given string.</doc>
<status status="PASS" start="2026-04-08T00:58:38.656434" elapsed="0.000389"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:58:38.657375" level="INFO">${total_flows} = 303</msg>
<var>${total_flows}</var>
<arg>sum(map(int, ${flows}))</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:58:38.656986" elapsed="0.000416"/>
</kw>
<kw name="Should Be Equal As Numbers" owner="BuiltIn">
<arg>${total_flows}</arg>
<arg>${flow_count}</arg>
<doc>Fails if objects are unequal after converting them to real numbers.</doc>
<status status="PASS" start="2026-04-08T00:58:38.657589" elapsed="0.000318"/>
</kw>
<arg>${mininet_conn_id}</arg>
<arg>${all_flows}</arg>
<doc>Sync with mininet to match exact number of flows</doc>
<status status="PASS" start="2026-04-08T00:58:38.566971" elapsed="0.090994"/>
</kw>
<doc>Check Flows in switch.</doc>
<status status="PASS" start="2026-04-08T00:58:38.260328" elapsed="0.397743"/>
</test>
<test id="s1-s4-t8" name="Check Entity Owner Status And Find Owner and Successor Before Fail" line="72">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-08T00:58:38.661482" elapsed="0.000203"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-08T00:58:38.661219" elapsed="0.000520"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:58:38.662737" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:58:38.662629" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:38.662610" elapsed="0.000194"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:58:38.667579" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:58:38.667472" elapsed="0.000150"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:38.667454" elapsed="0.000190"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:58:38.668637" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:58:38.668261" elapsed="0.000403"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:58:38.669123" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:58:38.668826" elapsed="0.000323"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:58:38.669209" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:58:38.669361" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:58:38.667872" elapsed="0.001514"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:58:38.674970" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:58:38.674862" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:38.674843" elapsed="0.000202"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:58:38.676313" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:58:38.676203" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:38.676153" elapsed="0.000227"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:58:38.676820" level="INFO">${karaf_connection_index} = 476</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:58:38.676526" elapsed="0.000321"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:58:38.677336" level="INFO">${current_connection_index} = 495</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:58:38.677044" elapsed="0.000319"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T00:58:38.711866" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T00:58:38.677863" elapsed="0.034102"/>
</kw>
<msg time="2026-04-08T00:58:38.712194" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T00:58:38.712245" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:58:38.677528" elapsed="0.034752"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T00:58:38.779541" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "E "n "t "i "t "y "[C "O "w "n "e "r "[C "S "t "a "t "u "s "[C "A "n "d "[C "F "i "n "d "[C "O "w "n "e "r "[C "a "n "d "[C "S "u "c "c "e "s "[78Cs "[A[78Co
 "r "[C "B "e "f "o "r "e "[C "F "a "i "l "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T00:58:38.712801" elapsed="0.067167"/>
</kw>
<msg time="2026-04-08T00:58:38.780285" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T00:58:38.780343" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "E "n "t "i "t "y...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:58:38.712454" elapsed="0.067931"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:38.780956" elapsed="0.000043"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:38.780534" elapsed="0.000505"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:38.780487" elapsed="0.000584"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:38.781743" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "E "n "t "i "t "y "[C "O "w "n "e "r "[C "S "t "a "t "u "s "[C "A "n "d "[C "F "i "n "d "[C "O "w "n "e "r "[C "a "n "d "[C "S "u "c "c "e "s "[78Cs "[A[78Co
 "r "[C "B "e "f "o "r "e "[C "F "a "i "l "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:38.781286" elapsed="0.000543"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:38.782131" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:38.781902" elapsed="0.000309"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:38.781881" elapsed="0.000355"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T00:58:38.782277" elapsed="0.000050"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:58:38.785333" elapsed="0.000200"/>
</kw>
<msg time="2026-04-08T00:58:38.785599" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:58:38.783991" elapsed="0.001751"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:38.786025" elapsed="0.000077"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:38.786389" elapsed="0.000074"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:58:38.783305" elapsed="0.003274"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T00:58:38.782656" elapsed="0.003993"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T00:58:38.675873" elapsed="0.110883"/>
</kw>
<msg time="2026-04-08T00:58:38.787050" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:58:38.787103" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "E "n "t "i "t "y...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:58:38.675311" elapsed="0.111833"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T00:58:38.787364" elapsed="0.000028"/>
</return>
<status status="PASS" start="2026-04-08T00:58:38.787252" elapsed="0.000174"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:38.787230" elapsed="0.000221"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:38.787876" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:38.788269" elapsed="0.000026"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T00:58:38.788344" elapsed="0.000018"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T00:58:38.674479" elapsed="0.113982"/>
</kw>
<msg time="2026-04-08T00:58:38.788569" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:58:38.788615" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "E "n "t "i "t "y...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:58:38.669746" elapsed="0.118911"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:38.788998" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:38.788739" elapsed="0.000341"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:38.788721" elapsed="0.000387"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T00:58:38.669604" elapsed="0.119531"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:58:38.795147" elapsed="0.000102"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:58:38.794828" elapsed="0.000455"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:38.794807" elapsed="0.000498"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:58:38.796464" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:58:38.796354" elapsed="0.000156"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:38.796335" elapsed="0.000197"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:58:38.797015" level="INFO">${karaf_connection_index} = 478</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:58:38.796682" elapsed="0.000361"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:58:38.797485" level="INFO">${current_connection_index} = 495</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:58:38.797231" elapsed="0.000281"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T00:58:38.833944" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T00:58:38.798013" elapsed="0.036170"/>
</kw>
<msg time="2026-04-08T00:58:38.834425" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T00:58:38.834473" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:58:38.797675" elapsed="0.036835"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T00:58:38.903032" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "E "n "t "i "t "y "[C "O "w "n "e "r "[C "S "t "a "t "u "s "[C "A "n "d "[C "F "i "n "d "[C "O "w "n "e "r "[C "a "n "d "[C "S "u "c "c "e "s "[78Cs "[A[78Co
 "r "[C "B "e "f "o "r "e "[C "F "a "i "l "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T00:58:38.835295" elapsed="0.067932"/>
</kw>
<msg time="2026-04-08T00:58:38.903434" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T00:58:38.903482" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "E "n "t "i "t "y...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:58:38.834782" elapsed="0.068738"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:38.903920" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:38.903628" elapsed="0.000351"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:38.903595" elapsed="0.000412"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:38.904567" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "E "n "t "i "t "y "[C "O "w "n "e "r "[C "S "t "a "t "u "s "[C "A "n "d "[C "F "i "n "d "[C "O "w "n "e "r "[C "a "n "d "[C "S "u "c "c "e "s "[78Cs "[A[78Co
 "r "[C "B "e "f "o "r "e "[C "F "a "i "l "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:38.904201" elapsed="0.000452"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:38.904947" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:38.904726" elapsed="0.000276"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:38.904704" elapsed="0.000321"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T00:58:38.905060" elapsed="0.000036"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:58:38.907675" elapsed="0.000199"/>
</kw>
<msg time="2026-04-08T00:58:38.907936" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:58:38.906615" elapsed="0.001483"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:38.908417" elapsed="0.000074"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:38.908747" elapsed="0.000074"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:58:38.905960" elapsed="0.002971"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T00:58:38.905397" elapsed="0.003601"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T00:58:38.796024" elapsed="0.113075"/>
</kw>
<msg time="2026-04-08T00:58:38.909222" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:58:38.909270" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "E "n "t "i "t "y...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:58:38.795462" elapsed="0.113849"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T00:58:38.909554" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-08T00:58:38.909444" elapsed="0.000167"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:38.909424" elapsed="0.000211"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 2,
close the previous connection. In any case create a new connection
to karaf console for 2, set correct prompt set and login to karaf console.
Store connection index for 2 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:38.910034" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:38.910390" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T00:58:38.910461" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T00:58:38.794469" elapsed="0.116102"/>
</kw>
<msg time="2026-04-08T00:58:38.910670" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:58:38.910715" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "E "n "t "i "t "y...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:58:38.789456" elapsed="0.121295"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:38.911080" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:38.910830" elapsed="0.000304"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:38.910812" elapsed="0.000359"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T00:58:38.789307" elapsed="0.121890"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:58:38.916964" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:58:38.916854" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:38.916835" elapsed="0.000196"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:58:38.918243" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:58:38.918109" elapsed="0.000180"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:38.918091" elapsed="0.000220"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:58:38.918753" level="INFO">${karaf_connection_index} = 480</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:58:38.918459" elapsed="0.000320"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:58:38.919203" level="INFO">${current_connection_index} = 495</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:58:38.918941" elapsed="0.000289"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T00:58:38.956922" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T00:58:38.919779" elapsed="0.037357"/>
</kw>
<msg time="2026-04-08T00:58:38.957400" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T00:58:38.957447" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:58:38.919431" elapsed="0.038055"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T00:58:39.030384" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "E "n "t "i "t "y "[C "O "w "n "e "r "[C "S "t "a "t "u "s "[C "A "n "d "[C "F "i "n "d "[C "O "w "n "e "r "[C "a "n "d "[C "S "u "c "c "e "s "[78Cs "[A[78Co
 "r "[C "B "e "f "o "r "e "[C "F "a "i "l "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T00:58:38.958220" elapsed="0.072350"/>
</kw>
<msg time="2026-04-08T00:58:39.030772" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T00:58:39.030818" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "E "n "t "i "t "y...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:58:38.957748" elapsed="0.073109"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:39.031338" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:39.030999" elapsed="0.000397"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:39.030960" elapsed="0.000464"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:39.031936" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "E "n "t "i "t "y "[C "O "w "n "e "r "[C "S "t "a "t "u "s "[C "A "n "d "[C "F "i "n "d "[C "O "w "n "e "r "[C "a "n "d "[C "S "u "c "c "e "s "[78Cs "[A[78Co
 "r "[C "B "e "f "o "r "e "[C "F "a "i "l "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:39.031574" elapsed="0.000522"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:39.032405" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:39.032180" elapsed="0.000280"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:39.032146" elapsed="0.000337"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T00:58:39.032521" elapsed="0.000039"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:58:39.035287" elapsed="0.000188"/>
</kw>
<msg time="2026-04-08T00:58:39.035537" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:58:39.034101" elapsed="0.001567"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:39.035942" elapsed="0.000075"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:39.036288" elapsed="0.000077"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:58:39.033456" elapsed="0.003020"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T00:58:39.032847" elapsed="0.003695"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T00:58:38.917782" elapsed="0.118862"/>
</kw>
<msg time="2026-04-08T00:58:39.036741" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:58:39.036785" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "E "n "t "i "t "y...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:58:38.917223" elapsed="0.119599"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T00:58:39.037009" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-08T00:58:39.036902" elapsed="0.000164"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:39.036883" elapsed="0.000207"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 3,
close the previous connection. In any case create a new connection
to karaf console for 3, set correct prompt set and login to karaf console.
Store connection index for 3 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:39.037519" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:39.037857" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T00:58:39.037927" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T00:58:38.916443" elapsed="0.121593"/>
</kw>
<msg time="2026-04-08T00:58:39.038133" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:58:39.038202" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "E "n "t "i "t "y...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:58:38.911481" elapsed="0.126758"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:39.038568" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:58:39.038318" elapsed="0.000302"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:39.038300" elapsed="0.000343"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T00:58:38.911329" elapsed="0.127338"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-08T00:58:38.669438" elapsed="0.369264"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-08T00:58:38.667100" elapsed="0.371663"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-08T00:58:38.662344" elapsed="0.376478"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:58:38.661891" elapsed="0.377009"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-08T00:58:38.659083" elapsed="0.379875"/>
</kw>
<kw name="Get OpenFlow Entity Owner Status For One Device" owner="ClusterOpenFlow">
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:58:39.076886" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:58:39.076464" elapsed="0.000454"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:58:39.077496" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:58:39.077090" elapsed="0.000433"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:58:39.077571" elapsed="0.000039"/>
</return>
<msg time="2026-04-08T00:58:39.077739" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:58:39.076058" elapsed="0.001705"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T00:58:39.082692" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T00:58:39.082500" elapsed="0.000219"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:58:39.082873" elapsed="0.000194"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:58:39.083451" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:58:39.083242" elapsed="0.000234"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:39.083914" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:39.083664" elapsed="0.000291"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:58:39.084103" elapsed="0.000196"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:58:39.084743" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:58:39.084536" elapsed="0.000232"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:39.085209" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:39.084946" elapsed="0.000305"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:58:39.085747" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:58:39.085406" elapsed="0.000368"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:39.086194" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:39.085945" elapsed="0.000293"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:58:39.086684" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:58:39.086391" elapsed="0.000318"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:58:39.093489" elapsed="0.000214"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:58:39.102729" elapsed="0.000211"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:58:39.103513" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:58:39.103100" elapsed="0.000439"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:58:39.104874" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:58:39.104131" elapsed="0.000784"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:58:39.105049" elapsed="0.000032"/>
</return>
<msg time="2026-04-08T00:58:39.105226" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:58:39.103728" elapsed="0.001524"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:58:39.105858" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:58:39.105418" elapsed="0.000467"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:58:39.106511" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:58:39.106049" elapsed="0.000489"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:58:39.107051" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:58:39.145030" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:58:39.106706" elapsed="0.042400">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:39.149570" elapsed="0.000164"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:39.150213" elapsed="0.000056"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:39.150617" elapsed="0.000047"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:39.151030" elapsed="0.000045"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:39.151462" elapsed="0.000047"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:39.151838" elapsed="0.000046"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:39.152484" elapsed="0.000047"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:39.153001" elapsed="0.000046"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:39.153521" elapsed="0.000053"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:58:39.152155" elapsed="0.001566"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:58:39.151995" elapsed="0.001791"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:39.154206" elapsed="0.000051"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:58:39.154348" elapsed="0.000035"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:58:39.102137" elapsed="0.052470">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:58:39.154751" elapsed="0.000016"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T00:58:39.091182" elapsed="0.063670">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:39.155030" elapsed="0.000021"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:39.159545" elapsed="0.000027"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:39.159745" elapsed="0.000021"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T00:58:39.159811" elapsed="0.000015"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T00:58:39.081904" elapsed="0.078013">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:58:39.160033" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:58:39.160076" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:58:39.081338" elapsed="0.078761"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T00:58:39.160323" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:58:39.160206" elapsed="0.000159"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:39.160184" elapsed="0.000203"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:58:39.161765" elapsed="0.000225"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:58:39.162473" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:58:39.162146" elapsed="0.000352"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:58:39.163316" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:58:39.163015" elapsed="0.000328"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:58:39.163391" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:58:39.163539" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:58:39.162678" elapsed="0.000886"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:58:39.164092" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:58:39.163726" elapsed="0.000392"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:58:39.164640" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:58:39.164296" elapsed="0.000369"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:58:39.165033" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:58:39.175571" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:58:39.164832" elapsed="0.014467">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:39.179740" elapsed="0.000059"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:39.180137" elapsed="0.000103"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:39.180575" elapsed="0.000044"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:39.180945" elapsed="0.000044"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:39.181360" elapsed="0.000046"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:39.181759" elapsed="0.000048"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:39.182397" elapsed="0.000048"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:39.182802" elapsed="0.000048"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:39.183234" elapsed="0.000054"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:58:39.182056" elapsed="0.001309"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:58:39.181906" elapsed="0.001516"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:39.183749" elapsed="0.000045"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:58:39.183880" elapsed="0.000034"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:58:39.161216" elapsed="0.022904">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:58:39.184409" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:58:39.184506" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:58:39.160540" elapsed="0.024018"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T00:58:39.186239" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T00:58:39.185419" elapsed="0.000958">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T00:58:39.184743" elapsed="0.001962">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T00:58:39.184702" elapsed="0.002081">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T00:58:39.186848" elapsed="0.000016"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:58:39.080772" elapsed="0.106175">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:39.187130" elapsed="0.000021"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:39.187324" elapsed="0.000020"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T00:58:39.187386" elapsed="0.000014"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T00:58:39.078060" elapsed="0.109423">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:39.187655" elapsed="0.000021"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:39.187835" elapsed="0.000020"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:39.188005" elapsed="0.000019"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:39.188183" elapsed="0.000021"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:39.188354" elapsed="0.000019"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:39.188518" elapsed="0.000019"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T00:58:39.188578" elapsed="0.000014"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T00:58:39.075326" elapsed="0.113350">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:58:40.216052" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:58:40.215564" elapsed="0.000523"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:58:40.216595" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:58:40.216280" elapsed="0.000341"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:58:40.216672" elapsed="0.000044"/>
</return>
<msg time="2026-04-08T00:58:40.216848" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:58:40.215145" elapsed="0.001729"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T00:58:40.221691" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T00:58:40.221497" elapsed="0.000223"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:58:40.221909" elapsed="0.000197"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:58:40.222560" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:58:40.222347" elapsed="0.000238"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:40.223038" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:40.222781" elapsed="0.000298"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:58:40.223245" elapsed="0.000184"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:58:40.223789" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:58:40.223584" elapsed="0.000230"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:40.224246" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:40.223983" elapsed="0.000305"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:58:40.224783" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:58:40.224443" elapsed="0.000366"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:40.225236" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:40.224983" elapsed="0.000296"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:58:40.225755" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:58:40.225461" elapsed="0.000323"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:58:40.232598" elapsed="0.000218"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:58:40.241942" elapsed="0.000232"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:58:40.242727" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:58:40.242341" elapsed="0.000412"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:58:40.243916" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:58:40.243372" elapsed="0.000586"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:58:40.244096" elapsed="0.000036"/>
</return>
<msg time="2026-04-08T00:58:40.244290" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:58:40.242942" elapsed="0.001374"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:58:40.244946" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:58:40.244484" elapsed="0.000489"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:58:40.245608" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:58:40.245137" elapsed="0.000498"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:58:40.246144" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:58:40.257721" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:58:40.245805" elapsed="0.015918">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:40.262202" elapsed="0.000058"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:40.262609" elapsed="0.000046"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:40.262984" elapsed="0.000044"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:40.263409" elapsed="0.000047"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:40.263799" elapsed="0.000045"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:40.264201" elapsed="0.000048"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:40.264823" elapsed="0.000044"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:40.265497" elapsed="0.000048"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:40.265946" elapsed="0.000046"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:58:40.264526" elapsed="0.001599"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:58:40.264361" elapsed="0.001859"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:40.266550" elapsed="0.000046"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:58:40.266685" elapsed="0.000035"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:58:40.241436" elapsed="0.025512">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:58:40.267104" elapsed="0.000034"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T00:58:40.230267" elapsed="0.037093">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:40.267757" elapsed="0.000048"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:40.274837" elapsed="0.000031"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:40.275042" elapsed="0.000021"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T00:58:40.275109" elapsed="0.000015"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T00:58:40.220914" elapsed="0.054324">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:58:40.275360" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:58:40.275404" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:58:40.220329" elapsed="0.055099"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T00:58:40.275647" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:58:40.275522" elapsed="0.000167"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:40.275501" elapsed="0.000211"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:58:40.277373" elapsed="0.000216"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:58:40.278059" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:58:40.277746" elapsed="0.000339"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:58:40.278898" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:58:40.278631" elapsed="0.000292"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:58:40.278972" elapsed="0.000031"/>
</return>
<msg time="2026-04-08T00:58:40.279121" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:58:40.278290" elapsed="0.000855"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:58:40.279701" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:58:40.279326" elapsed="0.000402"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:58:40.280297" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:58:40.279930" elapsed="0.000394"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:58:40.280709" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:58:40.289745" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:58:40.280491" elapsed="0.011803">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:40.292574" elapsed="0.000034"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:40.292855" elapsed="0.000032"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:40.293108" elapsed="0.000030"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:40.293382" elapsed="0.000030"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:40.293640" elapsed="0.000029"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:40.293884" elapsed="0.000029"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:40.294294" elapsed="0.000031"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:40.294550" elapsed="0.000029"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:40.294790" elapsed="0.000029"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:58:40.294081" elapsed="0.000786"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:58:40.293979" elapsed="0.000926"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:40.295111" elapsed="0.000029"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:58:40.295235" elapsed="0.000024"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:58:40.276561" elapsed="0.018835">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:58:40.295562" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:58:40.295626" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:58:40.275869" elapsed="0.019792"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T00:58:40.296597" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T00:58:40.296104" elapsed="0.000583">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T00:58:40.295783" elapsed="0.001012">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T00:58:40.295756" elapsed="0.001092">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T00:58:40.296917" elapsed="0.000023"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:58:40.219758" elapsed="0.077304">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:40.297357" elapsed="0.000032"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:40.297644" elapsed="0.000038"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T00:58:40.297808" elapsed="0.000026"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T00:58:40.217207" elapsed="0.080756">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:40.298241" elapsed="0.000032"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:40.298579" elapsed="0.000042"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:40.298875" elapsed="0.000030"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:40.299121" elapsed="0.000028"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:40.299396" elapsed="0.000029"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:40.299641" elapsed="0.000029"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T00:58:40.299732" elapsed="0.000022"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T00:58:40.214324" elapsed="0.085553">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:58:41.336730" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:58:41.336258" elapsed="0.000505"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:58:41.337268" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:58:41.336937" elapsed="0.000358"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:58:41.337344" elapsed="0.000040"/>
</return>
<msg time="2026-04-08T00:58:41.337514" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:58:41.335836" elapsed="0.001703"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T00:58:41.342319" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T00:58:41.342110" elapsed="0.000235"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:58:41.342501" elapsed="0.000192"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:58:41.343086" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:58:41.342849" elapsed="0.000263"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:41.343605" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:41.343347" elapsed="0.000301"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:58:41.343798" elapsed="0.000181"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:58:41.344362" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:58:41.344134" elapsed="0.000254"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:41.344801" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:41.344559" elapsed="0.000282"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:58:41.345348" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:58:41.344994" elapsed="0.000380"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:41.345907" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:41.345635" elapsed="0.000327"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:58:41.346419" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:58:41.346116" elapsed="0.000329"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:58:41.353185" elapsed="0.000215"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:58:41.362424" elapsed="0.000211"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:58:41.363198" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:58:41.362792" elapsed="0.000434"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:58:41.364377" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:58:41.363822" elapsed="0.000597"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:58:41.364553" elapsed="0.000035"/>
</return>
<msg time="2026-04-08T00:58:41.364712" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:58:41.363417" elapsed="0.001320"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:58:41.365371" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:58:41.364902" elapsed="0.000497"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:58:41.366007" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:58:41.365572" elapsed="0.000461"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:58:41.366546" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:58:41.379390" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:58:41.366219" elapsed="0.017402">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:41.384054" elapsed="0.000052"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:41.384481" elapsed="0.000047"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:41.384859" elapsed="0.000045"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:41.385277" elapsed="0.000062"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:41.385687" elapsed="0.000045"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:41.386054" elapsed="0.000044"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:41.386683" elapsed="0.000045"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:41.387235" elapsed="0.000048"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:41.387675" elapsed="0.000045"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:58:41.386390" elapsed="0.001459"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:58:41.386232" elapsed="0.001680"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:41.388265" elapsed="0.000047"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:58:41.388400" elapsed="0.000035"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:58:41.361915" elapsed="0.026738">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:58:41.388907" elapsed="0.000036"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T00:58:41.350869" elapsed="0.038269">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:41.389629" elapsed="0.000049"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:41.394346" elapsed="0.000028"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:41.394548" elapsed="0.000021"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T00:58:41.394614" elapsed="0.000015"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T00:58:41.341532" elapsed="0.053189">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:58:41.394844" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:58:41.394887" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:58:41.340954" elapsed="0.053957"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T00:58:41.395241" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:58:41.395022" elapsed="0.000266"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:41.394999" elapsed="0.000314"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:58:41.396915" elapsed="0.000217"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:58:41.397635" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:58:41.397319" elapsed="0.000342"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:58:41.398480" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:58:41.398208" elapsed="0.000298"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:58:41.398554" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:58:41.398703" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:58:41.397847" elapsed="0.000881"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:58:41.399283" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:58:41.398895" elapsed="0.000414"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:58:41.399812" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:58:41.399469" elapsed="0.000369"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:58:41.400238" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:58:41.408402" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:58:41.400002" elapsed="0.012314">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:41.412756" elapsed="0.000053"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:41.413232" elapsed="0.000050"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:41.413720" elapsed="0.000046"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:41.414012" elapsed="0.000029"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:41.414290" elapsed="0.000031"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:41.414539" elapsed="0.000029"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:41.414962" elapsed="0.000029"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:41.415246" elapsed="0.000031"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:41.415494" elapsed="0.000029"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:58:41.414766" elapsed="0.000806"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:58:41.414640" elapsed="0.000971"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:41.415825" elapsed="0.000028"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:58:41.415911" elapsed="0.000024"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:58:41.396215" elapsed="0.019865">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:58:41.416308" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:58:41.416375" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:58:41.395474" elapsed="0.020937"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T00:58:41.417415" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T00:58:41.416876" elapsed="0.000629">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T00:58:41.416541" elapsed="0.001057">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T00:58:41.416512" elapsed="0.001134">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T00:58:41.417714" elapsed="0.000024"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:58:41.340399" elapsed="0.077463">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:41.418133" elapsed="0.000053"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:41.418413" elapsed="0.000030"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T00:58:41.418506" elapsed="0.000022"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T00:58:41.337851" elapsed="0.080809">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:41.418918" elapsed="0.000030"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:41.419210" elapsed="0.000031"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:41.419469" elapsed="0.000029"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:41.419817" elapsed="0.000030"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:41.420067" elapsed="0.000029"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:41.420340" elapsed="0.000029"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T00:58:41.420432" elapsed="0.000022"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T00:58:41.334999" elapsed="0.085589">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:58:42.460033" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:58:42.459400" elapsed="0.000678"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:58:42.460769" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:58:42.460341" elapsed="0.000463"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:58:42.460863" elapsed="0.000054"/>
</return>
<msg time="2026-04-08T00:58:42.461082" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:58:42.458803" elapsed="0.002315"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T00:58:42.467357" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T00:58:42.467073" elapsed="0.000316"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:58:42.467604" elapsed="0.000265"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:58:42.468395" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:58:42.468085" elapsed="0.000346"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:42.469056" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:42.468711" elapsed="0.000401"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:58:42.469330" elapsed="0.000249"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:58:42.470065" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:58:42.469792" elapsed="0.000310"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:42.470714" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:42.470361" elapsed="0.000416"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:58:42.471498" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:58:42.471021" elapsed="0.000511"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:42.472074" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:42.471762" elapsed="0.000366"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:58:42.472744" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:58:42.472359" elapsed="0.000423"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:58:42.481985" elapsed="0.000327"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:58:42.494448" elapsed="0.000311"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:58:42.495492" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:58:42.494979" elapsed="0.000549"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:58:42.497103" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:58:42.496413" elapsed="0.000739"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:58:42.497347" elapsed="0.000054"/>
</return>
<msg time="2026-04-08T00:58:42.497566" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:58:42.495862" elapsed="0.001737"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:58:42.498445" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:58:42.497818" elapsed="0.000660"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:58:42.499219" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:58:42.498709" elapsed="0.000538"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:58:42.499771" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:58:42.508604" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:58:42.499419" elapsed="0.011057">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:42.510707" elapsed="0.000027"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:42.510897" elapsed="0.000022"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:42.511071" elapsed="0.000021"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:42.511405" elapsed="0.000022"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:42.511584" elapsed="0.000021"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:42.511753" elapsed="0.000021"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:42.512050" elapsed="0.000020"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:42.512303" elapsed="0.000021"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:42.512502" elapsed="0.000021"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:58:42.511914" elapsed="0.000671"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:58:42.511829" elapsed="0.000788"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:42.512766" elapsed="0.000021"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:58:42.512829" elapsed="0.000017"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:58:42.493759" elapsed="0.019195">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:58:42.513028" elapsed="0.000015"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T00:58:42.478826" elapsed="0.034304">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:42.513338" elapsed="0.000022"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:42.519471" elapsed="0.000041"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:42.519832" elapsed="0.000031"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T00:58:42.519930" elapsed="0.000023"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T00:58:42.466348" elapsed="0.053740">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:58:42.520282" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:58:42.520347" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:58:42.465593" elapsed="0.054789"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T00:58:42.520693" elapsed="0.000020"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:58:42.520518" elapsed="0.000238"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:42.520487" elapsed="0.000302"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:58:42.522838" elapsed="0.000341"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:58:42.523880" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:58:42.523415" elapsed="0.000504"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:58:42.525147" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:58:42.524735" elapsed="0.000473"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:58:42.525282" elapsed="0.000047"/>
</return>
<msg time="2026-04-08T00:58:42.525523" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:58:42.524217" elapsed="0.001344"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:58:42.526419" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:58:42.525806" elapsed="0.000651"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:58:42.527370" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:58:42.526732" elapsed="0.000665"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:58:42.527784" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:58:42.537174" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:58:42.527562" elapsed="0.011947">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:42.539965" elapsed="0.000055"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:42.540420" elapsed="0.000051"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:42.540825" elapsed="0.000049"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:42.541260" elapsed="0.000050"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:42.541674" elapsed="0.000048"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:42.542066" elapsed="0.000047"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:42.542789" elapsed="0.000048"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:42.543233" elapsed="0.000049"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:42.543749" elapsed="0.000052"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:58:42.542469" elapsed="0.001421"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:58:42.542274" elapsed="0.001686"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:42.544312" elapsed="0.000046"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:58:42.544446" elapsed="0.000035"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:58:42.521973" elapsed="0.022739">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:58:42.544972" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:58:42.545068" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:58:42.521018" elapsed="0.024101"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T00:58:42.546647" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T00:58:42.545837" elapsed="0.000946">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T00:58:42.545344" elapsed="0.001521">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T00:58:42.545299" elapsed="0.001599">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T00:58:42.546944" elapsed="0.000016"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:58:42.464864" elapsed="0.082181">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:42.547242" elapsed="0.000023"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:42.547415" elapsed="0.000021"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T00:58:42.547477" elapsed="0.000014"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T00:58:42.461548" elapsed="0.086033">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:42.547753" elapsed="0.000021"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:42.547936" elapsed="0.000020"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:42.548106" elapsed="0.000019"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:42.548285" elapsed="0.000025"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:42.548464" elapsed="0.000020"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:42.548703" elapsed="0.000022"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T00:58:42.548768" elapsed="0.000016"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T00:58:42.457716" elapsed="0.091158">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:58:43.581949" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:58:43.581470" elapsed="0.000510"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:58:43.582482" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:58:43.582153" elapsed="0.000355"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:58:43.582556" elapsed="0.000039"/>
</return>
<msg time="2026-04-08T00:58:43.582723" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:58:43.581025" elapsed="0.001724"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T00:58:43.587436" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T00:58:43.587244" elapsed="0.000218"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:58:43.587617" elapsed="0.000191"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:58:43.588187" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:58:43.587963" elapsed="0.000251"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:43.588665" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:43.588412" elapsed="0.000294"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:58:43.588854" elapsed="0.000207"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:58:43.589446" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:58:43.589240" elapsed="0.000236"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:43.589891" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:43.589648" elapsed="0.000284"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:58:43.590440" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:58:43.590085" elapsed="0.000381"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:43.590929" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:43.590693" elapsed="0.000279"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:58:43.591428" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:58:43.591123" elapsed="0.000331"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:58:43.598175" elapsed="0.000217"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:58:43.607285" elapsed="0.000212"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:58:43.608039" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:58:43.607655" elapsed="0.000410"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:58:43.609345" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:58:43.608749" elapsed="0.000638"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:58:43.609524" elapsed="0.000038"/>
</return>
<msg time="2026-04-08T00:58:43.609688" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:58:43.608280" elapsed="0.001434"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:58:43.610349" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:58:43.609880" elapsed="0.000497"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:58:43.610970" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:58:43.610539" elapsed="0.000458"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:58:43.611515" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:58:43.622087" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:58:43.611178" elapsed="0.013960">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:43.625596" elapsed="0.000052"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:43.625991" elapsed="0.000045"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:43.626395" elapsed="0.000048"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:43.626775" elapsed="0.000047"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:43.627198" elapsed="0.000049"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:43.627578" elapsed="0.000044"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:43.628208" elapsed="0.000047"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:43.628716" elapsed="0.000045"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:43.629224" elapsed="0.000051"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:58:43.627887" elapsed="0.001523"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:58:43.627728" elapsed="0.001745"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:43.629796" elapsed="0.000046"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:58:43.629931" elapsed="0.000034"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:58:43.606779" elapsed="0.023441">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:58:43.630382" elapsed="0.000035"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T00:58:43.595848" elapsed="0.034758">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:43.631036" elapsed="0.000051"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:43.637370" elapsed="0.000028"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:43.637568" elapsed="0.000021"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T00:58:43.637635" elapsed="0.000015"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T00:58:43.586687" elapsed="0.051053">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:58:43.637863" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:58:43.637906" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:58:43.586111" elapsed="0.051819"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T00:58:43.638223" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:58:43.638078" elapsed="0.000188"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:43.638054" elapsed="0.000235"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:58:43.639697" elapsed="0.000210"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:58:43.640402" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:58:43.640068" elapsed="0.000361"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:58:43.641259" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:58:43.640971" elapsed="0.000315"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:58:43.641334" elapsed="0.000032"/>
</return>
<msg time="2026-04-08T00:58:43.641490" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:58:43.640614" elapsed="0.000901"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:58:43.642055" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:58:43.641679" elapsed="0.000402"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:58:43.642599" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:58:43.642256" elapsed="0.000369"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:58:43.643010" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:58:43.653937" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:58:43.642789" elapsed="0.015569">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:43.658825" elapsed="0.000056"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:43.659297" elapsed="0.000053"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:43.659705" elapsed="0.000047"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:43.660103" elapsed="0.000048"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:43.660546" elapsed="0.000047"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:43.660972" elapsed="0.000049"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:43.661606" elapsed="0.000043"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:43.661984" elapsed="0.000043"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:43.662370" elapsed="0.000045"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:58:43.661316" elapsed="0.001172"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:58:43.661125" elapsed="0.001420"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:43.662857" elapsed="0.000043"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:58:43.662986" elapsed="0.000034"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:58:43.639125" elapsed="0.024133">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:58:43.663520" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:58:43.663615" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:58:43.638446" elapsed="0.025220"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T00:58:43.665083" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T00:58:43.664488" elapsed="0.000656">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T00:58:43.663956" elapsed="0.001274">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T00:58:43.663912" elapsed="0.001356">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T00:58:43.665315" elapsed="0.000016"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:58:43.585561" elapsed="0.079854">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:43.665594" elapsed="0.000026"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:43.665769" elapsed="0.000019"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T00:58:43.665829" elapsed="0.000015"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T00:58:43.583044" elapsed="0.082883">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:43.666134" elapsed="0.000036"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:43.666335" elapsed="0.000020"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:43.666506" elapsed="0.000020"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:43.666668" elapsed="0.000019"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:43.666835" elapsed="0.000019"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:43.666998" elapsed="0.000019"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T00:58:43.667058" elapsed="0.000014"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T00:58:43.580212" elapsed="0.086960">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:58:44.699224" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:58:44.698732" elapsed="0.000525"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:58:44.699739" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:58:44.699428" elapsed="0.000338"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:58:44.699815" elapsed="0.000039"/>
</return>
<msg time="2026-04-08T00:58:44.700014" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:58:44.698341" elapsed="0.001699"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T00:58:44.704849" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T00:58:44.704662" elapsed="0.000213"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:58:44.705032" elapsed="0.000207"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:58:44.705603" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:58:44.705396" elapsed="0.000232"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:44.706079" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:44.705822" elapsed="0.000298"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:58:44.706284" elapsed="0.000179"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:58:44.706817" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:58:44.706615" elapsed="0.000227"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:44.707266" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:44.707010" elapsed="0.000297"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:58:44.707794" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:58:44.707459" elapsed="0.000360"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:44.708270" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:44.708009" elapsed="0.000304"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:58:44.708742" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:58:44.708464" elapsed="0.000303"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:58:44.715498" elapsed="0.000213"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:58:44.724832" elapsed="0.000215"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:58:44.725610" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:58:44.725231" elapsed="0.000406"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:58:44.726839" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:58:44.726246" elapsed="0.000635"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:58:44.727014" elapsed="0.000036"/>
</return>
<msg time="2026-04-08T00:58:44.727193" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:58:44.725825" elapsed="0.001394"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:58:44.728000" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:58:44.727385" elapsed="0.000650"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:58:44.728711" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:58:44.728259" elapsed="0.000479"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:58:44.729272" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:58:44.742666" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:58:44.728917" elapsed="0.017709">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:44.747070" elapsed="0.000052"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:44.747499" elapsed="0.000046"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:44.747902" elapsed="0.000048"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:44.748321" elapsed="0.000047"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:44.748836" elapsed="0.000048"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:44.749245" elapsed="0.000047"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:44.749859" elapsed="0.000045"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:44.750418" elapsed="0.000048"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:44.750863" elapsed="0.000047"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:58:44.749563" elapsed="0.001481"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:58:44.749401" elapsed="0.001707"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:44.751465" elapsed="0.000047"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:58:44.751600" elapsed="0.000036"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:58:44.724332" elapsed="0.027638">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:58:44.752191" elapsed="0.000042"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T00:58:44.713171" elapsed="0.039262">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:44.752843" elapsed="0.000048"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:44.758883" elapsed="0.000029"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:44.759088" elapsed="0.000021"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T00:58:44.759152" elapsed="0.000033"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T00:58:44.704106" elapsed="0.055173">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:58:44.759396" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:58:44.759439" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:58:44.703539" elapsed="0.055923"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T00:58:44.759674" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:58:44.759554" elapsed="0.000176"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:44.759533" elapsed="0.000220"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:58:44.761120" elapsed="0.000227"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:58:44.761814" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:58:44.761503" elapsed="0.000337"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:58:44.762674" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:58:44.762378" elapsed="0.000324"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:58:44.762789" elapsed="0.000033"/>
</return>
<msg time="2026-04-08T00:58:44.762947" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:58:44.762022" elapsed="0.000984"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:58:44.764372" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:58:44.763429" elapsed="0.001005"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:58:44.765683" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:58:44.764815" elapsed="0.000929"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:58:44.766653" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:58:44.776682" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:58:44.766140" elapsed="0.014275">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:44.780831" elapsed="0.000049"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:44.781244" elapsed="0.000046"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:44.781616" elapsed="0.000042"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:44.781982" elapsed="0.000043"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:44.782391" elapsed="0.000046"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:44.782789" elapsed="0.000047"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:44.783407" elapsed="0.000045"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:44.783817" elapsed="0.000045"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:44.784210" elapsed="0.000047"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:58:44.783086" elapsed="0.001246"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:58:44.782934" elapsed="0.001456"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:44.784706" elapsed="0.000043"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:58:44.784835" elapsed="0.000032"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:58:44.760564" elapsed="0.024505">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:58:44.785353" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:58:44.785451" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:58:44.759908" elapsed="0.025594"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T00:58:44.786902" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T00:58:44.786199" elapsed="0.000849">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T00:58:44.785686" elapsed="0.001570">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T00:58:44.785645" elapsed="0.001688">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T00:58:44.787436" elapsed="0.000036"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:58:44.702975" elapsed="0.084733">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:44.788063" elapsed="0.000022"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:44.788253" elapsed="0.000028"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T00:58:44.788324" elapsed="0.000014"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T00:58:44.700355" elapsed="0.088067">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:44.788593" elapsed="0.000020"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:44.788771" elapsed="0.000020"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:44.788943" elapsed="0.000019"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:44.789141" elapsed="0.000044"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:44.789345" elapsed="0.000021"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:44.789512" elapsed="0.000019"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T00:58:44.789573" elapsed="0.000014"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T00:58:44.697533" elapsed="0.092139">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:58:45.827892" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:58:45.827400" elapsed="0.000525"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:58:45.828436" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:58:45.828101" elapsed="0.000362"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:58:45.828512" elapsed="0.000040"/>
</return>
<msg time="2026-04-08T00:58:45.828683" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:58:45.826965" elapsed="0.001743"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T00:58:45.833698" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T00:58:45.833488" elapsed="0.000238"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:58:45.833881" elapsed="0.000194"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:58:45.834460" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:58:45.834246" elapsed="0.000240"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:45.835067" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:45.834733" elapsed="0.000381"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:58:45.835289" elapsed="0.000211"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:58:45.835872" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:58:45.835661" elapsed="0.000237"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:45.836464" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:45.836171" elapsed="0.000336"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:58:45.837049" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:58:45.836676" elapsed="0.000405"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:45.837604" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:45.837316" elapsed="0.000343"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:58:45.838217" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:58:45.837854" elapsed="0.000395"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:58:45.846343" elapsed="0.000279"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:58:45.862103" elapsed="0.000602"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:58:45.864020" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:58:45.863092" elapsed="0.000990"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:58:45.866792" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:58:45.865556" elapsed="0.001326"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:58:45.867210" elapsed="0.000135"/>
</return>
<msg time="2026-04-08T00:58:45.867646" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:58:45.864617" elapsed="0.003085"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:58:45.868554" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:58:45.868052" elapsed="0.000530"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:58:45.869199" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:58:45.868745" elapsed="0.000486"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:58:45.869746" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:58:45.881052" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:58:45.869403" elapsed="0.014256">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:45.883946" elapsed="0.000035"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:45.884226" elapsed="0.000031"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:45.884468" elapsed="0.000029"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:45.884719" elapsed="0.000032"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:45.884973" elapsed="0.000029"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:45.885268" elapsed="0.000031"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:45.885673" elapsed="0.000036"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:45.886010" elapsed="0.000031"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:45.886312" elapsed="0.000030"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:58:45.885482" elapsed="0.000945"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:58:45.885372" elapsed="0.001095"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:45.886674" elapsed="0.000037"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:58:45.886770" elapsed="0.000023"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:58:45.860696" elapsed="0.026241">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:58:45.887113" elapsed="0.000025"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T00:58:45.843363" elapsed="0.044009">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:45.887654" elapsed="0.000040"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:45.893983" elapsed="0.000038"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:45.894279" elapsed="0.000030"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T00:58:45.894373" elapsed="0.000021"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T00:58:45.832922" elapsed="0.061599">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:58:45.894682" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:58:45.894743" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:58:45.832318" elapsed="0.062457"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T00:58:45.895064" elapsed="0.000019"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:58:45.894902" elapsed="0.000221"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:45.894873" elapsed="0.000301"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:58:45.897032" elapsed="0.000323"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:58:45.898006" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:58:45.897574" elapsed="0.000468"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:58:45.899208" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:58:45.898792" elapsed="0.000458"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:58:45.899319" elapsed="0.000042"/>
</return>
<msg time="2026-04-08T00:58:45.899526" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:58:45.898319" elapsed="0.001241"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:58:45.900263" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:58:45.899788" elapsed="0.000501"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:58:45.900793" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:58:45.900449" elapsed="0.000370"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:58:45.901201" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:58:45.911280" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:58:45.900984" elapsed="0.012443">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:45.913741" elapsed="0.000033"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:45.913986" elapsed="0.000028"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:45.914239" elapsed="0.000030"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:45.914474" elapsed="0.000028"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:45.914713" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:45.914941" elapsed="0.000027"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:45.915349" elapsed="0.000028"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:45.915598" elapsed="0.000029"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:45.915830" elapsed="0.000034"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:58:45.915140" elapsed="0.000770"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:58:45.915029" elapsed="0.000917"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:45.916150" elapsed="0.000052"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:58:45.916258" elapsed="0.000022"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:58:45.896270" elapsed="0.020140">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:58:45.916567" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:58:45.916628" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:58:45.895412" elapsed="0.021249"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T00:58:45.917621" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T00:58:45.917153" elapsed="0.000552">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T00:58:45.916777" elapsed="0.001013">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T00:58:45.916750" elapsed="0.001083">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T00:58:45.917896" elapsed="0.000021"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:58:45.831707" elapsed="0.086326">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:45.918305" elapsed="0.000030"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:45.918543" elapsed="0.000028"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T00:58:45.918627" elapsed="0.000020"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T00:58:45.829009" elapsed="0.089756">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:45.919004" elapsed="0.000028"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:45.919360" elapsed="0.000030"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:45.919602" elapsed="0.000027"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:45.919827" elapsed="0.000027"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:45.920065" elapsed="0.000024"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:45.920251" elapsed="0.000020"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T00:58:45.920313" elapsed="0.000016"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T00:58:45.826080" elapsed="0.094334">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:58:46.952021" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:58:46.951533" elapsed="0.000521"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:58:46.952559" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:58:46.952244" elapsed="0.000341"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:58:46.952633" elapsed="0.000040"/>
</return>
<msg time="2026-04-08T00:58:46.952804" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:58:46.951051" elapsed="0.001778"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T00:58:46.957630" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T00:58:46.957440" elapsed="0.000217"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:58:46.957812" elapsed="0.000193"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:58:46.958385" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:58:46.958173" elapsed="0.000237"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:46.958860" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:46.958605" elapsed="0.000296"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:58:46.959051" elapsed="0.000208"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:58:46.959646" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:58:46.959412" elapsed="0.000260"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:46.960087" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:46.959844" elapsed="0.000284"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:58:46.960638" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:58:46.960299" elapsed="0.000365"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:46.961074" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:46.960835" elapsed="0.000283"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:58:46.961567" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:58:46.961283" elapsed="0.000310"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:58:46.968426" elapsed="0.000214"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:58:46.977716" elapsed="0.000276"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:58:46.978548" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:58:46.978153" elapsed="0.000422"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:58:46.979754" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:58:46.979187" elapsed="0.000608"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:58:46.979926" elapsed="0.000032"/>
</return>
<msg time="2026-04-08T00:58:46.980083" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:58:46.978764" elapsed="0.001345"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:58:46.980731" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:58:46.980288" elapsed="0.000470"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:58:46.981361" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:58:46.980920" elapsed="0.000469"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:58:46.981882" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:58:46.992371" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:58:46.981555" elapsed="0.014013">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:46.996000" elapsed="0.000055"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:46.996434" elapsed="0.000049"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:46.996817" elapsed="0.000047"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:46.997223" elapsed="0.000048"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:46.997619" elapsed="0.000046"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:46.997989" elapsed="0.000057"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:46.998641" elapsed="0.000045"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:46.999149" elapsed="0.000082"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:46.999653" elapsed="0.000047"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:58:46.998345" elapsed="0.001489"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:58:46.998154" elapsed="0.001743"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:47.000276" elapsed="0.000051"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:58:47.000422" elapsed="0.000039"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:58:46.977222" elapsed="0.023476">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:58:47.000866" elapsed="0.000037"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T00:58:46.966073" elapsed="0.035032">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:47.001660" elapsed="0.000052"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:47.007594" elapsed="0.000027"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:47.007795" elapsed="0.000024"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T00:58:47.007864" elapsed="0.000015"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T00:58:46.956878" elapsed="0.051091">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:58:47.008086" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:58:47.008130" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:58:46.956233" elapsed="0.051920"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T00:58:47.008383" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:58:47.008263" elapsed="0.000163"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:47.008242" elapsed="0.000207"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:58:47.009793" elapsed="0.000210"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:58:47.010483" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:58:47.010171" elapsed="0.000337"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:58:47.011394" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:58:47.011034" elapsed="0.000391"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:58:47.011477" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:58:47.011625" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:58:47.010692" elapsed="0.000958"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:58:47.012213" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:58:47.011818" elapsed="0.000422"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:58:47.012751" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:58:47.012398" elapsed="0.000379"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:58:47.013145" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:58:47.021993" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:58:47.012938" elapsed="0.013085">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:47.026503" elapsed="0.000053"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:47.026921" elapsed="0.000048"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:47.027375" elapsed="0.000050"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:47.027790" elapsed="0.000048"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:47.028231" elapsed="0.000049"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:47.028626" elapsed="0.000047"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:47.029273" elapsed="0.000145"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:47.029798" elapsed="0.000047"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:47.030235" elapsed="0.000050"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:58:47.028935" elapsed="0.001429"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:58:47.028776" elapsed="0.001653"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:47.030774" elapsed="0.000049"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:58:47.030942" elapsed="0.000040"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:58:47.009241" elapsed="0.022064">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:58:47.031608" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:58:47.031714" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:58:47.008605" elapsed="0.023166"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T00:58:47.032646" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T00:58:47.032257" elapsed="0.000452">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T00:58:47.031982" elapsed="0.000789">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T00:58:47.031935" elapsed="0.000869">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T00:58:47.032850" elapsed="0.000016"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:58:46.955667" elapsed="0.077283">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:47.033132" elapsed="0.000020"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:47.033317" elapsed="0.000021"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T00:58:47.033380" elapsed="0.000014"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T00:58:46.953130" elapsed="0.080349">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:47.033652" elapsed="0.000021"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:47.033838" elapsed="0.000021"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:47.034010" elapsed="0.000020"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:47.034189" elapsed="0.000021"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:47.034365" elapsed="0.000020"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:47.034531" elapsed="0.000020"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T00:58:47.034593" elapsed="0.000015"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T00:58:46.950254" elapsed="0.084438">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:58:48.069274" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:58:48.068772" elapsed="0.000536"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:58:48.069952" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:58:48.069567" elapsed="0.000424"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:58:48.070056" elapsed="0.000053"/>
</return>
<msg time="2026-04-08T00:58:48.070493" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:58:48.068380" elapsed="0.002149"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T00:58:48.076551" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T00:58:48.076328" elapsed="0.000253"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:58:48.076769" elapsed="0.000230"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:58:48.077482" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:58:48.077217" elapsed="0.000297"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:48.078069" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:48.077761" elapsed="0.000358"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:58:48.078322" elapsed="0.000231"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:58:48.078939" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:58:48.078727" elapsed="0.000238"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:48.079399" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:48.079136" elapsed="0.000305"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:58:48.079934" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:58:48.079596" elapsed="0.000364"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:48.080467" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:48.080216" elapsed="0.000297"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:58:48.080947" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:58:48.080667" elapsed="0.000306"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:58:48.087736" elapsed="0.000215"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:58:48.102880" elapsed="0.000227"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:58:48.103672" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:58:48.103289" elapsed="0.000410"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:58:48.104882" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:58:48.104349" elapsed="0.000574"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:58:48.105055" elapsed="0.000036"/>
</return>
<msg time="2026-04-08T00:58:48.105234" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:58:48.103890" elapsed="0.001369"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:58:48.105890" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:58:48.105423" elapsed="0.000494"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:58:48.106588" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:58:48.106139" elapsed="0.000475"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:58:48.107112" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:58:48.118514" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:58:48.106780" elapsed="0.015658">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:48.122861" elapsed="0.000052"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:48.123291" elapsed="0.000048"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:48.123669" elapsed="0.000045"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:48.124064" elapsed="0.000045"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:48.124483" elapsed="0.000046"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:48.124853" elapsed="0.000045"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:48.125486" elapsed="0.000046"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:48.125998" elapsed="0.000047"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:48.126461" elapsed="0.000047"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:58:48.125186" elapsed="0.001459"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:58:48.125001" elapsed="0.001707"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:48.127029" elapsed="0.000046"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:58:48.127203" elapsed="0.000038"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:58:48.102369" elapsed="0.025101">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:58:48.127622" elapsed="0.000034"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T00:58:48.085442" elapsed="0.042399">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:48.128321" elapsed="0.000049"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:48.133235" elapsed="0.000027"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:48.133430" elapsed="0.000021"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T00:58:48.133496" elapsed="0.000015"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T00:58:48.075638" elapsed="0.057962">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:58:48.133770" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:58:48.133813" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:58:48.074922" elapsed="0.058915"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T00:58:48.134064" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:58:48.133932" elapsed="0.000185"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:48.133910" elapsed="0.000235"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:58:48.135550" elapsed="0.000211"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:58:48.136262" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:58:48.135930" elapsed="0.000357"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:58:48.137081" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:58:48.136815" elapsed="0.000292"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:58:48.137169" elapsed="0.000032"/>
</return>
<msg time="2026-04-08T00:58:48.137321" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:58:48.136472" elapsed="0.000874"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:58:48.137876" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:58:48.137508" elapsed="0.000394"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:58:48.138421" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:58:48.138060" elapsed="0.000387"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:58:48.138877" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:58:48.148743" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:58:48.138610" elapsed="0.013975">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:48.153032" elapsed="0.000053"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:48.153484" elapsed="0.000049"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:48.153884" elapsed="0.000048"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:48.154320" elapsed="0.000050"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:48.154734" elapsed="0.000047"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:48.155124" elapsed="0.000075"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:48.155778" elapsed="0.000068"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:48.156244" elapsed="0.000050"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:48.156640" elapsed="0.000048"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:58:48.155468" elapsed="0.001297"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:58:48.155307" elapsed="0.001519"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:48.157190" elapsed="0.000049"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:58:48.157333" elapsed="0.000035"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:58:48.134941" elapsed="0.022644">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:58:48.157942" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:58:48.158080" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:58:48.134323" elapsed="0.023869"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T00:58:48.159823" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T00:58:48.158948" elapsed="0.001040">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T00:58:48.158420" elapsed="0.001767">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T00:58:48.158374" elapsed="0.001856">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T00:58:48.160280" elapsed="0.000015"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:58:48.074231" elapsed="0.086147">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:48.160557" elapsed="0.000021"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:48.160727" elapsed="0.000020"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T00:58:48.160788" elapsed="0.000015"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T00:58:48.070890" elapsed="0.089996">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:48.161055" elapsed="0.000020"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:48.161249" elapsed="0.000020"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:48.161420" elapsed="0.000020"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:48.161588" elapsed="0.000020"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:48.161760" elapsed="0.000019"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:48.161925" elapsed="0.000024"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T00:58:48.161989" elapsed="0.000015"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T00:58:48.067516" elapsed="0.094570">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:58:49.197562" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:58:49.197088" elapsed="0.000506"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:58:49.198374" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:58:49.197849" elapsed="0.000554"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:58:49.198451" elapsed="0.000047"/>
</return>
<msg time="2026-04-08T00:58:49.198659" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:58:49.196673" elapsed="0.002084"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T00:58:49.206418" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T00:58:49.206117" elapsed="0.000338"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:58:49.206672" elapsed="0.000265"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:58:49.207498" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:58:49.207187" elapsed="0.000348"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:49.208217" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:49.207823" elapsed="0.000455"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:58:49.208497" elapsed="0.000267"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:58:49.209360" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:58:49.209027" elapsed="0.000370"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:49.210016" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:49.209649" elapsed="0.000427"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:58:49.210595" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:58:49.210258" elapsed="0.000363"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:49.211019" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:49.210788" elapsed="0.000273"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:58:49.211507" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:58:49.211227" elapsed="0.000306"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:58:49.218609" elapsed="0.000234"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:58:49.227982" elapsed="0.000229"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:58:49.228763" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:58:49.228382" elapsed="0.000408"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:58:49.229986" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:58:49.229440" elapsed="0.000587"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:58:49.230183" elapsed="0.000040"/>
</return>
<msg time="2026-04-08T00:58:49.230351" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:58:49.229013" elapsed="0.001363"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:58:49.231005" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:58:49.230548" elapsed="0.000484"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:58:49.231640" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:58:49.231214" elapsed="0.000453"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:58:49.232186" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:58:49.249713" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:58:49.231833" elapsed="0.020534">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:49.252651" elapsed="0.000034"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:49.252957" elapsed="0.000033"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:49.253410" elapsed="0.000049"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:49.253796" elapsed="0.000047"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:49.254213" elapsed="0.000047"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:49.254588" elapsed="0.000045"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:49.255225" elapsed="0.000047"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:49.255736" elapsed="0.000046"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:49.256197" elapsed="0.000050"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:58:49.254894" elapsed="0.001484"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:58:49.254737" elapsed="0.001703"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:49.256761" elapsed="0.000062"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:58:49.256911" elapsed="0.000035"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:58:49.227479" elapsed="0.029725">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:58:49.257367" elapsed="0.000035"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T00:58:49.216127" elapsed="0.041464">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:49.257982" elapsed="0.000045"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:49.267568" elapsed="0.000035"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:49.267810" elapsed="0.000024"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T00:58:49.267881" elapsed="0.000015"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T00:58:49.205297" elapsed="0.062693">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:58:49.268123" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:58:49.268201" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:58:49.204325" elapsed="0.063907"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T00:58:49.268446" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:58:49.268326" elapsed="0.000162"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:49.268305" elapsed="0.000205"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:58:49.269908" elapsed="0.000215"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:58:49.270607" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:58:49.270297" elapsed="0.000336"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:58:49.271548" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:58:49.271242" elapsed="0.000340"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:58:49.271634" elapsed="0.000031"/>
</return>
<msg time="2026-04-08T00:58:49.271796" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:58:49.270875" elapsed="0.000946"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:58:49.272380" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:58:49.271988" elapsed="0.000420"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:58:49.272979" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:58:49.272568" elapsed="0.000438"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:58:49.273404" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:58:49.283901" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:58:49.273193" elapsed="0.014506">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:49.288110" elapsed="0.000076"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:49.288523" elapsed="0.000044"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:49.288907" elapsed="0.000044"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:49.289307" elapsed="0.000046"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:49.289687" elapsed="0.000043"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:49.290046" elapsed="0.000042"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:49.290641" elapsed="0.000044"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:49.291019" elapsed="0.000046"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:49.291428" elapsed="0.000045"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:58:49.290356" elapsed="0.001191"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:58:49.290208" elapsed="0.001395"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:49.291913" elapsed="0.000043"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:58:49.292038" elapsed="0.000035"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:58:49.269330" elapsed="0.022985">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:58:49.292563" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:58:49.292659" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:58:49.268664" elapsed="0.024086"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T00:58:49.293569" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T00:58:49.293248" elapsed="0.000382">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T00:58:49.292938" elapsed="0.000753">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T00:58:49.292898" elapsed="0.000824">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T00:58:49.293767" elapsed="0.000016"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:58:49.203395" elapsed="0.090503">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:49.294079" elapsed="0.000021"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:49.294263" elapsed="0.000021"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T00:58:49.294326" elapsed="0.000014"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T00:58:49.199061" elapsed="0.095361">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:49.294590" elapsed="0.000021"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:49.294768" elapsed="0.000020"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:49.294939" elapsed="0.000019"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:49.295101" elapsed="0.000020"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:49.295284" elapsed="0.000021"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:49.295450" elapsed="0.000019"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T00:58:49.295511" elapsed="0.000014"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T00:58:49.195842" elapsed="0.099765">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:58:50.329553" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:58:50.329056" elapsed="0.000529"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:58:50.330074" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:58:50.329760" elapsed="0.000341"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:58:50.330148" elapsed="0.000055"/>
</return>
<msg time="2026-04-08T00:58:50.330346" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:58:50.328665" elapsed="0.001708"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T00:58:50.335107" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T00:58:50.334911" elapsed="0.000229"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:58:50.335339" elapsed="0.000192"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:58:50.335896" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:58:50.335686" elapsed="0.000235"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:50.336445" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:50.336114" elapsed="0.000373"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:58:50.336637" elapsed="0.000188"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:58:50.337233" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:58:50.336980" elapsed="0.000284"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:50.337681" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:50.337436" elapsed="0.000286"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:58:50.338250" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:58:50.337875" elapsed="0.000403"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:50.338683" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:50.338447" elapsed="0.000279"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:58:50.339171" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:58:50.338876" elapsed="0.000323"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:58:50.345980" elapsed="0.000238"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:58:50.355292" elapsed="0.000212"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:58:50.356049" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:58:50.355664" elapsed="0.000412"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:58:50.357245" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:58:50.356691" elapsed="0.000596"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:58:50.357417" elapsed="0.000037"/>
</return>
<msg time="2026-04-08T00:58:50.357579" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:58:50.356289" elapsed="0.001316"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:58:50.358302" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:58:50.357770" elapsed="0.000559"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:58:50.358922" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:58:50.358493" elapsed="0.000456"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:58:50.359473" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:58:50.370380" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:58:50.359116" elapsed="0.014348">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:50.373891" elapsed="0.000052"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:50.374347" elapsed="0.000050"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:50.374734" elapsed="0.000047"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:50.375116" elapsed="0.000078"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:50.375544" elapsed="0.000045"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:50.375942" elapsed="0.000049"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:50.376591" elapsed="0.000047"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:50.377113" elapsed="0.000075"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:50.377591" elapsed="0.000046"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:58:50.376287" elapsed="0.001709"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:58:50.376095" elapsed="0.001975"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:50.378492" elapsed="0.000050"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:58:50.378634" elapsed="0.000036"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:58:50.354777" elapsed="0.024112">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:58:50.379045" elapsed="0.000033"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T00:58:50.343641" elapsed="0.035578">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:50.379402" elapsed="0.000021"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:50.383917" elapsed="0.000028"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:50.384116" elapsed="0.000021"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T00:58:50.384207" elapsed="0.000017"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T00:58:50.334368" elapsed="0.049946">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:58:50.384429" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:58:50.384473" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:58:50.333778" elapsed="0.050718"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T00:58:50.384706" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:58:50.384588" elapsed="0.000160"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:50.384566" elapsed="0.000206"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:58:50.386102" elapsed="0.000245"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:58:50.386811" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:58:50.386506" elapsed="0.000330"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:58:50.387648" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:58:50.387381" elapsed="0.000293"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:58:50.387721" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:58:50.387868" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:58:50.387021" elapsed="0.000872"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:58:50.388451" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:58:50.388056" elapsed="0.000421"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:58:50.388981" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:58:50.388637" elapsed="0.000370"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:58:50.389428" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:58:50.398176" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:58:50.389222" elapsed="0.010688">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:50.400099" elapsed="0.000022"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:50.400297" elapsed="0.000021"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:50.400466" elapsed="0.000020"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:50.400632" elapsed="0.000019"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:50.400804" elapsed="0.000020"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:50.400967" elapsed="0.000020"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:50.401248" elapsed="0.000021"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:50.401423" elapsed="0.000020"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:50.401586" elapsed="0.000020"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:58:50.401099" elapsed="0.000539"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:58:50.401030" elapsed="0.000634"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:50.401806" elapsed="0.000019"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:58:50.401863" elapsed="0.000015"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:58:50.385554" elapsed="0.016416">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:58:50.402112" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:58:50.402174" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:58:50.384927" elapsed="0.017272"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T00:58:50.402822" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T00:58:50.402503" elapsed="0.000379">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T00:58:50.402283" elapsed="0.000661">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T00:58:50.402264" elapsed="0.000711">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T00:58:50.403020" elapsed="0.000015"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:58:50.333231" elapsed="0.069885">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:50.403395" elapsed="0.000031"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:50.403653" elapsed="0.000030"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T00:58:50.403745" elapsed="0.000022"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T00:58:50.330688" elapsed="0.073202">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:50.404238" elapsed="0.000034"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:50.404512" elapsed="0.000029"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:50.404769" elapsed="0.000029"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:50.405013" elapsed="0.000029"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:50.405283" elapsed="0.000031"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:50.405532" elapsed="0.000028"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T00:58:50.405620" elapsed="0.000022"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T00:58:50.327863" elapsed="0.077902">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:58:51.439409" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:58:51.438910" elapsed="0.000532"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:58:51.439949" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:58:51.439616" elapsed="0.000360"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:58:51.440023" elapsed="0.000041"/>
</return>
<msg time="2026-04-08T00:58:51.440221" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:58:51.438514" elapsed="0.001733"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T00:58:51.445024" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T00:58:51.444829" elapsed="0.000222"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:58:51.445218" elapsed="0.000195"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:58:51.445777" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:58:51.445569" elapsed="0.000233"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:51.446266" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:51.445996" elapsed="0.000319"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:58:51.446463" elapsed="0.000181"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:58:51.447000" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:58:51.446796" elapsed="0.000229"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:51.447453" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:51.447209" elapsed="0.000285"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:58:51.448001" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:58:51.447649" elapsed="0.000377"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:51.448445" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:51.448211" elapsed="0.000277"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:58:51.448918" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:58:51.448639" elapsed="0.000305"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:58:51.455808" elapsed="0.000313"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:58:51.465143" elapsed="0.000228"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:58:51.465900" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:58:51.465531" elapsed="0.000395"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:58:51.467087" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:58:51.466544" elapsed="0.000584"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:58:51.467294" elapsed="0.000037"/>
</return>
<msg time="2026-04-08T00:58:51.467458" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:58:51.466115" elapsed="0.001368"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:58:51.468132" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:58:51.467647" elapsed="0.000528"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:58:51.468773" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:58:51.468344" elapsed="0.000455"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:58:51.469318" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:58:51.480579" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:58:51.468964" elapsed="0.013466">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:51.482623" elapsed="0.000026"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:51.482807" elapsed="0.000022"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:51.482980" elapsed="0.000021"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:51.483151" elapsed="0.000042"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:51.483349" elapsed="0.000020"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:51.483515" elapsed="0.000020"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:51.483808" elapsed="0.000021"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:51.484039" elapsed="0.000021"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:51.484251" elapsed="0.000022"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:58:51.483660" elapsed="0.000674"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:58:51.483584" elapsed="0.000780"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:51.484511" elapsed="0.000020"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:58:51.484570" elapsed="0.000016"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:58:51.464633" elapsed="0.020054">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:58:51.484757" elapsed="0.000015"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T00:58:51.453419" elapsed="0.031436">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:51.485079" elapsed="0.000021"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:51.490263" elapsed="0.000029"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:51.490481" elapsed="0.000021"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T00:58:51.490547" elapsed="0.000016"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T00:58:51.444286" elapsed="0.046367">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:58:51.490765" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:58:51.490808" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:58:51.443671" elapsed="0.047161"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T00:58:51.491046" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:58:51.490928" elapsed="0.000161"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:51.490901" elapsed="0.000211"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:58:51.492506" elapsed="0.000213"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:58:51.493198" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:58:51.492877" elapsed="0.000347"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:58:51.494021" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:58:51.493750" elapsed="0.000298"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:58:51.494095" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:58:51.494271" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:58:51.493409" elapsed="0.000888"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:58:51.494836" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:58:51.494461" elapsed="0.000405"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:58:51.495393" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:58:51.495029" elapsed="0.000390"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:58:51.495795" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:58:51.509682" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:58:51.495582" elapsed="0.015895">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:51.511671" elapsed="0.000023"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:51.511867" elapsed="0.000021"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:51.512034" elapsed="0.000020"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:51.512217" elapsed="0.000039"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:51.512443" elapsed="0.000021"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:51.512611" elapsed="0.000020"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:51.512915" elapsed="0.000020"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:51.513087" elapsed="0.000019"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:51.513265" elapsed="0.000021"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:58:51.512784" elapsed="0.000535"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:58:51.512712" elapsed="0.000633"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:51.513513" elapsed="0.000021"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:58:51.513574" elapsed="0.000015"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:58:51.491933" elapsed="0.021749">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:58:51.513796" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:58:51.513840" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:58:51.491303" elapsed="0.022560"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T00:58:51.514513" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T00:58:51.514193" elapsed="0.000379">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T00:58:51.513952" elapsed="0.000681">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T00:58:51.513927" elapsed="0.000736">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T00:58:51.514708" elapsed="0.000016"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:58:51.443071" elapsed="0.071734">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:51.514983" elapsed="0.000020"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:51.515150" elapsed="0.000043"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T00:58:51.515235" elapsed="0.000015"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T00:58:51.440545" elapsed="0.074788">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:51.515509" elapsed="0.000021"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:51.515690" elapsed="0.000020"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:51.515877" elapsed="0.000025"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:51.516046" elapsed="0.000019"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:51.516239" elapsed="0.000021"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:51.516408" elapsed="0.000019"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T00:58:51.516534" elapsed="0.000017"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T00:58:51.437706" elapsed="0.078933">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:58:52.553398" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:58:52.552781" elapsed="0.000657"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:58:52.554258" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:58:52.553653" elapsed="0.000656"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:58:52.554392" elapsed="0.000063"/>
</return>
<msg time="2026-04-08T00:58:52.554652" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:58:52.552312" elapsed="0.002377"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T00:58:52.560582" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T00:58:52.560393" elapsed="0.000216"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:58:52.560762" elapsed="0.000191"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:58:52.561333" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:58:52.561107" elapsed="0.000251"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:52.561840" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:52.561555" elapsed="0.000327"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:58:52.562031" elapsed="0.000205"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:58:52.562726" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:58:52.562514" elapsed="0.000237"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:52.563194" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:52.562922" elapsed="0.000316"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:58:52.563750" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:58:52.563411" elapsed="0.000364"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:52.564223" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:52.563943" elapsed="0.000327"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:58:52.564706" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:58:52.564425" elapsed="0.000307"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:58:52.571531" elapsed="0.000216"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:58:52.580740" elapsed="0.000211"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:58:52.581669" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:58:52.581112" elapsed="0.000584"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:58:52.582896" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:58:52.582356" elapsed="0.000582"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:58:52.583074" elapsed="0.000035"/>
</return>
<msg time="2026-04-08T00:58:52.583252" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:58:52.581911" elapsed="0.001366"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:58:52.583892" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:58:52.583447" elapsed="0.000563"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:58:52.584631" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:58:52.584192" elapsed="0.000466"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:58:52.585178" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:58:52.598117" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:58:52.584826" elapsed="0.015799">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:52.600896" elapsed="0.000033"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:52.601142" elapsed="0.000049"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:52.601402" elapsed="0.000029"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:52.601638" elapsed="0.000028"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:52.601914" elapsed="0.000029"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:52.602145" elapsed="0.000048"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:52.602550" elapsed="0.000028"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:52.602869" elapsed="0.000034"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:52.603145" elapsed="0.000067"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:58:52.602365" elapsed="0.000934"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:58:52.602262" elapsed="0.001077"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:52.603541" elapsed="0.000028"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:58:52.603625" elapsed="0.000022"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:58:52.580245" elapsed="0.023540">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:58:52.603968" elapsed="0.000024"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T00:58:52.569222" elapsed="0.034893">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:52.604390" elapsed="0.000029"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:52.610871" elapsed="0.000039"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:52.611177" elapsed="0.000033"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T00:58:52.611277" elapsed="0.000022"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T00:58:52.559833" elapsed="0.051654">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:58:52.611656" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:58:52.611720" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:58:52.559261" elapsed="0.052494"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T00:58:52.612061" elapsed="0.000019"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:58:52.611889" elapsed="0.000233"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:52.611858" elapsed="0.000323"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:58:52.614193" elapsed="0.000258"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:58:52.614916" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:58:52.614609" elapsed="0.000332"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:58:52.615752" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:58:52.615487" elapsed="0.000292"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:58:52.615825" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:58:52.615973" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:58:52.615126" elapsed="0.000871"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:58:52.616551" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:58:52.616177" elapsed="0.000400"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:58:52.617075" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:58:52.616734" elapsed="0.000367"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:58:52.617486" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:58:52.629201" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:58:52.617279" elapsed="0.014404">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:52.631971" elapsed="0.000037"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:52.632257" elapsed="0.000031"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:52.632507" elapsed="0.000029"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:52.632760" elapsed="0.000029"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:52.633012" elapsed="0.000035"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:52.633285" elapsed="0.000031"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:52.633721" elapsed="0.000031"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:52.633977" elapsed="0.000029"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:52.634247" elapsed="0.000031"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:58:52.633491" elapsed="0.000835"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:58:52.633384" elapsed="0.000982"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:52.634576" elapsed="0.000029"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:58:52.634664" elapsed="0.000024"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:58:52.613322" elapsed="0.021507">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:58:52.635070" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:58:52.635135" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:58:52.612414" elapsed="0.022777"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T00:58:52.636145" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T00:58:52.635652" elapsed="0.000604">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T00:58:52.635324" elapsed="0.001024">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T00:58:52.635294" elapsed="0.001101">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T00:58:52.636462" elapsed="0.000024"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:58:52.558696" elapsed="0.077912">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:52.636872" elapsed="0.000030"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:52.637119" elapsed="0.000029"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T00:58:52.637232" elapsed="0.000023"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T00:58:52.555135" elapsed="0.082245">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:52.637649" elapsed="0.000030"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:52.637916" elapsed="0.000029"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:52.638185" elapsed="0.000030"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:52.638434" elapsed="0.000029"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:52.638688" elapsed="0.000029"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:52.638933" elapsed="0.000028"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T00:58:52.639020" elapsed="0.000022"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T00:58:52.551239" elapsed="0.087946">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:58:53.674720" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:58:53.674033" elapsed="0.000733"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:58:53.675594" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:58:53.675018" elapsed="0.000617"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:58:53.675704" elapsed="0.000054"/>
</return>
<msg time="2026-04-08T00:58:53.675966" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:58:53.673455" elapsed="0.002550"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T00:58:53.682978" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T00:58:53.682706" elapsed="0.000310"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:58:53.683262" elapsed="0.000289"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:58:53.684137" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:58:53.683781" elapsed="0.000413"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:53.684659" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:53.684404" elapsed="0.000297"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:58:53.684848" elapsed="0.000179"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:58:53.685407" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:58:53.685200" elapsed="0.000232"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:53.685840" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:53.685600" elapsed="0.000280"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:58:53.686395" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:58:53.686040" elapsed="0.000380"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:53.686888" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:53.686587" elapsed="0.000344"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:58:53.687383" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:58:53.687082" elapsed="0.000327"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:58:53.694254" elapsed="0.000214"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:58:53.703489" elapsed="0.000211"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:58:53.704365" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:58:53.703873" elapsed="0.000522"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:58:53.705551" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:58:53.704987" elapsed="0.000605"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:58:53.705726" elapsed="0.000036"/>
</return>
<msg time="2026-04-08T00:58:53.705888" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:58:53.704588" elapsed="0.001325"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:58:53.706544" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:58:53.706079" elapsed="0.000492"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:58:53.707175" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:58:53.706734" elapsed="0.000470"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:58:53.707708" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:58:53.719850" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:58:53.707369" elapsed="0.016881">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:53.724732" elapsed="0.000155"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:53.725332" elapsed="0.000055"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:53.725754" elapsed="0.000050"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:53.726198" elapsed="0.000052"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:53.726649" elapsed="0.000050"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:53.727069" elapsed="0.000050"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:53.727817" elapsed="0.000060"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:53.728352" elapsed="0.000030"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:53.728631" elapsed="0.000030"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:58:53.727441" elapsed="0.001303"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:58:53.727263" elapsed="0.001523"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:53.728991" elapsed="0.000029"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:58:53.729075" elapsed="0.000023"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:58:53.702981" elapsed="0.026284">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:58:53.729366" elapsed="0.000022"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T00:58:53.691941" elapsed="0.037698">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:53.729888" elapsed="0.000029"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:53.738180" elapsed="0.000041"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:53.738461" elapsed="0.000030"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T00:58:53.738553" elapsed="0.000021"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T00:58:53.681864" elapsed="0.056835">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:58:53.738859" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:58:53.738920" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:58:53.681022" elapsed="0.057931"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T00:58:53.739263" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:58:53.739078" elapsed="0.000244"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:53.739049" elapsed="0.000305"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:58:53.741027" elapsed="0.000226"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:58:53.741720" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:58:53.741411" elapsed="0.000335"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:58:53.742557" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:58:53.742290" elapsed="0.000293"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:58:53.742630" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:58:53.742779" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:58:53.741929" elapsed="0.000874"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:58:53.743351" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:58:53.742964" elapsed="0.000413"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:58:53.743908" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:58:53.743535" elapsed="0.000399"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:58:53.744327" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:58:53.754876" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:58:53.744098" elapsed="0.013037">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:53.757415" elapsed="0.000032"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:53.757655" elapsed="0.000028"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:53.757886" elapsed="0.000027"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:53.758113" elapsed="0.000028"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:53.758379" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:53.758607" elapsed="0.000028"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:53.758965" elapsed="0.000028"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:53.759239" elapsed="0.000043"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:53.759484" elapsed="0.000028"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:58:53.758788" elapsed="0.000768"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:58:53.758695" elapsed="0.000897"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:53.759825" elapsed="0.000031"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:58:53.759912" elapsed="0.000022"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:58:53.740468" elapsed="0.019593">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:58:53.760243" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:58:53.760305" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:58:53.739569" elapsed="0.020768"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T00:58:53.761244" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T00:58:53.760756" elapsed="0.000574">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T00:58:53.760454" elapsed="0.001013">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T00:58:53.760428" elapsed="0.001085">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T00:58:53.761576" elapsed="0.000021"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:58:53.680209" elapsed="0.081502">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:53.761959" elapsed="0.000029"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:53.762213" elapsed="0.000031"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T00:58:53.762306" elapsed="0.000020"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T00:58:53.676465" elapsed="0.085977">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:53.762675" elapsed="0.000029"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:53.762924" elapsed="0.000027"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:53.763179" elapsed="0.000029"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:53.763409" elapsed="0.000027"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:53.763640" elapsed="0.000027"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:53.763908" elapsed="0.000027"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T00:58:53.763993" elapsed="0.000020"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T00:58:53.672533" elapsed="0.091594">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:58:54.797476" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:58:54.796958" elapsed="0.000551"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:58:54.798012" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:58:54.797694" elapsed="0.000344"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:58:54.798182" elapsed="0.000045"/>
</return>
<msg time="2026-04-08T00:58:54.798367" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:58:54.796555" elapsed="0.001838"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T00:58:54.803209" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T00:58:54.802998" elapsed="0.000239"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:58:54.803393" elapsed="0.000194"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:58:54.804050" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:58:54.803832" elapsed="0.000244"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:54.804548" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:54.804288" elapsed="0.000302"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:58:54.804741" elapsed="0.000203"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:58:54.805333" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:58:54.805100" elapsed="0.000259"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:54.805781" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:54.805534" elapsed="0.000300"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:58:54.806386" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:58:54.805991" elapsed="0.000421"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:54.806828" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:54.806584" elapsed="0.000290"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:58:54.807336" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:58:54.807030" elapsed="0.000333"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:58:54.814294" elapsed="0.000221"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:58:54.823606" elapsed="0.000215"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:58:54.824395" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:58:54.823981" elapsed="0.000441"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:58:54.825596" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:58:54.825017" elapsed="0.000621"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:58:54.825772" elapsed="0.000034"/>
</return>
<msg time="2026-04-08T00:58:54.825932" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:58:54.824614" elapsed="0.001342"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:58:54.826622" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:58:54.826150" elapsed="0.000499"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:58:54.827276" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:58:54.826812" elapsed="0.000492"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:58:54.827803" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:58:54.839347" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:58:54.827471" elapsed="0.013674">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:54.841364" elapsed="0.000025"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:54.841546" elapsed="0.000022"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:54.841718" elapsed="0.000021"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:54.841890" elapsed="0.000021"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:54.842105" elapsed="0.000023"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:54.842333" elapsed="0.000057"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:54.842954" elapsed="0.000048"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:54.843626" elapsed="0.000052"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:54.844088" elapsed="0.000049"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:58:54.842654" elapsed="0.001671"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:58:54.842496" elapsed="0.001903"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:54.844752" elapsed="0.000050"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:58:54.844889" elapsed="0.000035"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:58:54.823086" elapsed="0.022061">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:58:54.845353" elapsed="0.000038"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T00:58:54.811806" elapsed="0.033807">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:54.846018" elapsed="0.000070"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:54.855334" elapsed="0.000029"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:54.855537" elapsed="0.000021"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T00:58:54.855603" elapsed="0.000015"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T00:58:54.802435" elapsed="0.053273">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:58:54.855825" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:58:54.855869" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:58:54.801818" elapsed="0.054074"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T00:58:54.856104" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:58:54.855985" elapsed="0.000161"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:54.855963" elapsed="0.000222"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:58:54.857532" elapsed="0.000260"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:58:54.858303" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:58:54.857949" elapsed="0.000380"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:58:54.859116" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:58:54.858853" elapsed="0.000289"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:58:54.859208" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:58:54.859358" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:58:54.858513" elapsed="0.000869"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:58:54.859909" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:58:54.859542" elapsed="0.000393"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:58:54.860493" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:58:54.860131" elapsed="0.000388"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:58:54.860888" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:58:54.874424" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:58:54.860681" elapsed="0.017627">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:54.878729" elapsed="0.000051"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:54.879119" elapsed="0.000075"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:54.879531" elapsed="0.000045"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:54.879904" elapsed="0.000045"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:54.880326" elapsed="0.000046"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:54.880807" elapsed="0.000045"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:54.881420" elapsed="0.000046"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:54.881802" elapsed="0.000045"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:54.882237" elapsed="0.000044"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:58:54.881102" elapsed="0.001232"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:58:54.880950" elapsed="0.001421"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:54.882567" elapsed="0.000028"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:58:54.882648" elapsed="0.000021"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:58:54.856966" elapsed="0.025885">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:58:54.883012" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:58:54.883073" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:58:54.856347" elapsed="0.026759"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T00:58:54.884058" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T00:58:54.883607" elapsed="0.000536">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T00:58:54.883249" elapsed="0.001003">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T00:58:54.883220" elapsed="0.001077">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T00:58:54.884361" elapsed="0.000022"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:58:54.801248" elapsed="0.083248">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:54.884747" elapsed="0.000030"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:54.884984" elapsed="0.000027"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T00:58:54.885119" elapsed="0.000022"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T00:58:54.798702" elapsed="0.086580">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:54.885526" elapsed="0.000029"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:54.885781" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:54.886055" elapsed="0.000029"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:54.886309" elapsed="0.000029"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:54.886574" elapsed="0.000029"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:54.886810" elapsed="0.000028"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T00:58:54.886895" elapsed="0.000021"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T00:58:54.795727" elapsed="0.091306">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:58:55.921307" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:58:55.920785" elapsed="0.000555"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:58:55.921855" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:58:55.921524" elapsed="0.000358"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:58:55.921932" elapsed="0.000048"/>
</return>
<msg time="2026-04-08T00:58:55.922124" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:58:55.920327" elapsed="0.001824"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T00:58:55.927168" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T00:58:55.926962" elapsed="0.000234"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:58:55.927351" elapsed="0.000194"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:58:55.927909" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:58:55.927699" elapsed="0.000235"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:55.928407" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:55.928131" elapsed="0.000318"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:58:55.928628" elapsed="0.000183"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:58:55.929188" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:58:55.928967" elapsed="0.000248"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:55.929635" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:55.929391" elapsed="0.000285"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:58:55.930185" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:58:55.929831" elapsed="0.000382"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:55.930697" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:55.930461" elapsed="0.000280"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:58:55.931189" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:58:55.930893" elapsed="0.000323"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:58:55.938022" elapsed="0.000231"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:58:55.947480" elapsed="0.000212"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:58:55.948293" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:58:55.947871" elapsed="0.000449"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:58:55.949518" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:58:55.948958" elapsed="0.000602"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:58:55.949697" elapsed="0.000033"/>
</return>
<msg time="2026-04-08T00:58:55.949854" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:58:55.948514" elapsed="0.001365"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:58:55.950536" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:58:55.950041" elapsed="0.000524"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:58:55.951232" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:58:55.950731" elapsed="0.000530"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:58:55.951787" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:58:55.963021" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:58:55.951433" elapsed="0.014073">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:55.965785" elapsed="0.000034"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:55.966035" elapsed="0.000031"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:55.966295" elapsed="0.000028"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:55.966526" elapsed="0.000028"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:55.966762" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:55.966995" elapsed="0.000029"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:55.967406" elapsed="0.000028"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:55.967714" elapsed="0.000027"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:55.967981" elapsed="0.000029"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:58:55.967224" elapsed="0.000868"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:58:55.967095" elapsed="0.001036"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:55.968354" elapsed="0.000029"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:58:55.968437" elapsed="0.000022"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:58:55.946942" elapsed="0.021841">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:58:55.968950" elapsed="0.000022"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T00:58:55.935641" elapsed="0.033451">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:55.969373" elapsed="0.000028"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:55.975720" elapsed="0.000037"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:55.975987" elapsed="0.000028"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T00:58:55.976073" elapsed="0.000023"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T00:58:55.926418" elapsed="0.049822">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:58:55.976400" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:58:55.976459" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:58:55.925810" elapsed="0.050695"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T00:58:55.976796" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:58:55.976636" elapsed="0.000214"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:55.976606" elapsed="0.000277"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:58:55.978705" elapsed="0.000271"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:58:55.979619" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:58:55.979201" elapsed="0.000452"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:58:55.980745" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:58:55.980363" elapsed="0.000416"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:58:55.980841" elapsed="0.000041"/>
</return>
<msg time="2026-04-08T00:58:55.981033" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:58:55.979898" elapsed="0.001166"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:58:55.981779" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:58:55.981294" elapsed="0.000519"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:58:55.982480" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:58:55.982022" elapsed="0.000491"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:58:55.983000" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:58:55.992867" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:58:55.982727" elapsed="0.012297">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:55.995284" elapsed="0.000029"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:55.995497" elapsed="0.000024"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:55.995770" elapsed="0.000024"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:55.995978" elapsed="0.000026"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:55.996212" elapsed="0.000024"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:55.996413" elapsed="0.000023"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:55.996805" elapsed="0.000025"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:55.997022" elapsed="0.000025"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:55.997244" elapsed="0.000024"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:58:55.996636" elapsed="0.000672"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:58:55.996539" elapsed="0.000802"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:55.997523" elapsed="0.000025"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:58:55.997597" elapsed="0.000022"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:58:55.977961" elapsed="0.019789">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:58:55.997907" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:58:55.997951" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:58:55.977092" elapsed="0.020883"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T00:58:55.998703" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T00:58:55.998330" elapsed="0.000436">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T00:58:55.998071" elapsed="0.000756">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T00:58:55.998049" elapsed="0.000811">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T00:58:55.998906" elapsed="0.000016"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:58:55.925247" elapsed="0.073787">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:55.999261" elapsed="0.000032"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:55.999495" elapsed="0.000026"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T00:58:55.999565" elapsed="0.000016"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T00:58:55.922475" elapsed="0.077197">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:55.999884" elapsed="0.000029"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:56.000131" elapsed="0.000047"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:56.000390" elapsed="0.000028"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:56.000685" elapsed="0.000034"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:56.000904" elapsed="0.000027"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:56.001125" elapsed="0.000020"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T00:58:56.001217" elapsed="0.000021"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T00:58:55.919268" elapsed="0.082092">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:58:57.038242" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:58:57.037729" elapsed="0.000548"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:58:57.038776" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:58:57.038462" elapsed="0.000341"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:58:57.038850" elapsed="0.000045"/>
</return>
<msg time="2026-04-08T00:58:57.039029" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:58:57.037325" elapsed="0.001729"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T00:58:57.043798" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T00:58:57.043608" elapsed="0.000217"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:58:57.044008" elapsed="0.000224"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:58:57.044598" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:58:57.044389" elapsed="0.000235"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:57.045064" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:57.044811" elapsed="0.000300"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:58:57.045279" elapsed="0.000181"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:58:57.045819" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:58:57.045615" elapsed="0.000229"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:57.046289" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:57.046027" elapsed="0.000304"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:58:57.046828" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:58:57.046484" elapsed="0.000369"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:57.047279" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:57.047019" elapsed="0.000304"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:58:57.047751" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:58:57.047474" elapsed="0.000302"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:58:57.054550" elapsed="0.000214"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:58:57.063752" elapsed="0.000218"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:58:57.064530" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:58:57.064129" elapsed="0.000428"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:58:57.065839" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:58:57.065273" elapsed="0.000616"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:58:57.066053" elapsed="0.000040"/>
</return>
<msg time="2026-04-08T00:58:57.066244" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:58:57.064832" elapsed="0.001438"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:58:57.066896" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:58:57.066436" elapsed="0.000488"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:58:57.067558" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:58:57.067088" elapsed="0.000497"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:58:57.068090" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:58:57.079951" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:58:57.067752" elapsed="0.013988">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:57.081947" elapsed="0.000025"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:57.082128" elapsed="0.000021"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:57.082320" elapsed="0.000021"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:57.082496" elapsed="0.000020"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:57.082669" elapsed="0.000020"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:57.082836" elapsed="0.000020"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:57.083129" elapsed="0.000021"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:57.083372" elapsed="0.000021"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:57.083567" elapsed="0.000021"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:58:57.082981" elapsed="0.000667"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:58:57.082907" elapsed="0.000771"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:57.083824" elapsed="0.000020"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:58:57.083883" elapsed="0.000015"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:58:57.063239" elapsed="0.020759">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:58:57.084068" elapsed="0.000015"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T00:58:57.052264" elapsed="0.031918">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:57.084364" elapsed="0.000021"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:57.088942" elapsed="0.000027"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:57.089202" elapsed="0.000022"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T00:58:57.089270" elapsed="0.000015"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T00:58:57.043019" elapsed="0.046357">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:58:57.089489" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:58:57.089533" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:58:57.042441" elapsed="0.047115"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T00:58:57.089763" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:58:57.089647" elapsed="0.000158"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:57.089626" elapsed="0.000201"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:58:57.091194" elapsed="0.000240"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:58:57.092095" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:58:57.091672" elapsed="0.000459"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:58:57.093293" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:58:57.092895" elapsed="0.000435"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:58:57.093396" elapsed="0.000042"/>
</return>
<msg time="2026-04-08T00:58:57.093602" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:58:57.092419" elapsed="0.001218"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:58:57.094555" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:58:57.093882" elapsed="0.000710"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:58:57.095346" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:58:57.094816" elapsed="0.000571"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:58:57.095892" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:58:57.104272" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:58:57.095616" elapsed="0.010333">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:57.106135" elapsed="0.000037"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:57.106328" elapsed="0.000020"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:57.106492" elapsed="0.000020"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:57.106657" elapsed="0.000020"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:57.106830" elapsed="0.000019"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:57.106992" elapsed="0.000019"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:57.107373" elapsed="0.000021"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:57.107606" elapsed="0.000028"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:57.107889" elapsed="0.000029"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:58:57.107233" elapsed="0.000731"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:58:57.107054" elapsed="0.000946"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:57.108216" elapsed="0.000030"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:58:57.108300" elapsed="0.000021"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:58:57.090607" elapsed="0.017842">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:58:57.108605" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:58:57.108665" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:58:57.089978" elapsed="0.018719"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T00:58:57.109605" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T00:58:57.109113" elapsed="0.000578">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T00:58:57.108811" elapsed="0.000968">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T00:58:57.108785" elapsed="0.001037">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T00:58:57.109885" elapsed="0.000022"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:58:57.041874" elapsed="0.068145">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:57.110290" elapsed="0.000031"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:57.110529" elapsed="0.000027"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T00:58:57.110613" elapsed="0.000019"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T00:58:57.039381" elapsed="0.071365">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:57.110984" elapsed="0.000029"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:57.111275" elapsed="0.000030"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:57.111516" elapsed="0.000027"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:57.111742" elapsed="0.000027"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:57.111970" elapsed="0.000027"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:57.112219" elapsed="0.000029"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T00:58:57.112306" elapsed="0.000020"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T00:58:57.036498" elapsed="0.075944">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:58:58.145424" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:58:58.144929" elapsed="0.000527"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:58:58.145974" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:58:58.145656" elapsed="0.000345"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:58:58.146048" elapsed="0.000068"/>
</return>
<msg time="2026-04-08T00:58:58.146283" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:58:58.144532" elapsed="0.001777"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T00:58:58.151117" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T00:58:58.150926" elapsed="0.000218"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:58:58.151318" elapsed="0.000193"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:58:58.151872" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:58:58.151666" elapsed="0.000231"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:58.152369" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:58.152095" elapsed="0.000314"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:58:58.152559" elapsed="0.000180"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:58:58.153093" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:58:58.152890" elapsed="0.000228"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:58.153548" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:58.153303" elapsed="0.000285"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:58:58.154262" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:58:58.153767" elapsed="0.000526"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:58.154841" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:58.154525" elapsed="0.000375"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:58:58.155508" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:58:58.155110" elapsed="0.000433"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:58:58.164806" elapsed="0.000277"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:58:58.177030" elapsed="0.000292"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:58:58.178046" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:58:58.177562" elapsed="0.000518"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:58:58.179539" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:58:58.178882" elapsed="0.000704"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:58:58.179740" elapsed="0.000050"/>
</return>
<msg time="2026-04-08T00:58:58.179942" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:58:58.178363" elapsed="0.001609"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:58:58.180738" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:58:58.180194" elapsed="0.000577"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:58:58.181567" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:58:58.180980" elapsed="0.000620"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:58:58.182268" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:58:58.193043" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:58:58.181823" elapsed="0.013094">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:58.195124" elapsed="0.000025"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:58.195323" elapsed="0.000023"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:58.195497" elapsed="0.000022"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:58.195672" elapsed="0.000021"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:58.195866" elapsed="0.000023"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:58.196041" elapsed="0.000021"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:58.196368" elapsed="0.000021"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:58.196628" elapsed="0.000031"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:58.196877" elapsed="0.000027"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:58:58.196229" elapsed="0.000745"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:58:58.196115" elapsed="0.000889"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:58.197208" elapsed="0.000030"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:58:58.197280" elapsed="0.000018"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:58:58.176384" elapsed="0.021028">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:58:58.197514" elapsed="0.000026"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T00:58:58.161774" elapsed="0.035903">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:58.197971" elapsed="0.000033"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:58.206339" elapsed="0.000040"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:58.206618" elapsed="0.000029"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T00:58:58.206710" elapsed="0.000021"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T00:58:58.150359" elapsed="0.056496">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:58:58.207018" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:58:58.207079" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:58:58.149748" elapsed="0.057363"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T00:58:58.207484" elapsed="0.000019"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:58:58.207315" elapsed="0.000229"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:58.207285" elapsed="0.000291"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:58:58.209548" elapsed="0.000211"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:58:58.210239" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:58:58.209914" elapsed="0.000351"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:58:58.211058" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:58:58.210792" elapsed="0.000292"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:58:58.211130" elapsed="0.000046"/>
</return>
<msg time="2026-04-08T00:58:58.211297" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:58:58.210449" elapsed="0.000872"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:58:58.211847" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:58:58.211480" elapsed="0.000393"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:58:58.212389" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:58:58.212031" elapsed="0.000383"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:58:58.212799" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:58:58.222312" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:58:58.212577" elapsed="0.014980">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:58.228117" elapsed="0.000100"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:58.228686" elapsed="0.000058"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:58.229116" elapsed="0.000077"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:58.229544" elapsed="0.000046"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:58.229928" elapsed="0.000043"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:58.230327" elapsed="0.000048"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:58.230932" elapsed="0.000044"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:58.231343" elapsed="0.000046"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:58.231709" elapsed="0.000042"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:58:58.230643" elapsed="0.001179"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:58:58.230477" elapsed="0.001403"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:58.232222" elapsed="0.000045"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:58:58.232405" elapsed="0.000045"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:58:58.208690" elapsed="0.023981">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:58:58.232941" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:58:58.233039" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:58:58.207791" elapsed="0.025299"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T00:58:58.234047" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T00:58:58.233677" elapsed="0.000431">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T00:58:58.233415" elapsed="0.000772">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T00:58:58.233368" elapsed="0.000855">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T00:58:58.234271" elapsed="0.000015"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:58:58.149182" elapsed="0.085189">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:58.234551" elapsed="0.000021"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:58.234719" elapsed="0.000020"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T00:58:58.234780" elapsed="0.000014"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T00:58:58.146607" elapsed="0.088271">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:58.235049" elapsed="0.000021"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:58.235246" elapsed="0.000030"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:58.235430" elapsed="0.000022"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:58.235598" elapsed="0.000019"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:58.235765" elapsed="0.000020"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:58.235929" elapsed="0.000020"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T00:58:58.235990" elapsed="0.000014"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T00:58:58.143679" elapsed="0.092408">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:58:59.268505" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:58:59.267995" elapsed="0.000543"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:58:59.269027" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:58:59.268715" elapsed="0.000338"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:58:59.269102" elapsed="0.000043"/>
</return>
<msg time="2026-04-08T00:58:59.269294" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:58:59.267553" elapsed="0.001765"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T00:58:59.274165" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T00:58:59.273958" elapsed="0.000236"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:58:59.274359" elapsed="0.000193"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:58:59.274914" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:58:59.274707" elapsed="0.000233"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:59.275423" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:59.275128" elapsed="0.000345"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:58:59.275625" elapsed="0.000189"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:58:59.276189" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:58:59.275968" elapsed="0.000247"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:59.276636" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:59.276387" elapsed="0.000289"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:58:59.277180" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:58:59.276829" elapsed="0.000378"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:58:59.277627" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:58:59.277377" elapsed="0.000293"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:58:59.278134" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:58:59.277821" elapsed="0.000361"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:58:59.285043" elapsed="0.000232"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:58:59.294335" elapsed="0.000214"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:58:59.295100" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:58:59.294718" elapsed="0.000409"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:58:59.296350" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:58:59.295785" elapsed="0.000607"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:58:59.296526" elapsed="0.000033"/>
</return>
<msg time="2026-04-08T00:58:59.296683" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:58:59.295347" elapsed="0.001360"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:58:59.297350" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:58:59.296870" elapsed="0.000507"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:58:59.297969" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:58:59.297541" elapsed="0.000455"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:58:59.298526" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:58:59.308323" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:58:59.298178" elapsed="0.012035">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:59.310416" elapsed="0.000024"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:59.310600" elapsed="0.000021"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:59.310803" elapsed="0.000028"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:59.310993" elapsed="0.000021"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:59.311232" elapsed="0.000024"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:59.311441" elapsed="0.000023"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:59.311730" elapsed="0.000021"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:59.311965" elapsed="0.000021"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:59.312177" elapsed="0.000023"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:58:59.311594" elapsed="0.000666"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:58:59.311516" elapsed="0.000774"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:59.312437" elapsed="0.000020"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:58:59.312496" elapsed="0.000016"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:58:59.293779" elapsed="0.018838">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:58:59.312686" elapsed="0.000016"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T00:58:59.282667" elapsed="0.030119">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:59.312990" elapsed="0.000023"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:59.319261" elapsed="0.000039"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:59.319574" elapsed="0.000036"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T00:58:59.319680" elapsed="0.000021"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T00:58:59.273390" elapsed="0.046480">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:58:59.320050" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:58:59.320112" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:58:59.272810" elapsed="0.047335"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T00:58:59.320462" elapsed="0.000019"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:58:59.320298" elapsed="0.000224"/>
</branch>
<status status="PASS" start="2026-04-08T00:58:59.320269" elapsed="0.000284"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:58:59.322483" elapsed="0.000294"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:58:59.323448" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:58:59.322995" elapsed="0.000490"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:58:59.324638" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:58:59.324263" elapsed="0.000413"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:58:59.324835" elapsed="0.000045"/>
</return>
<msg time="2026-04-08T00:58:59.325052" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:58:59.323744" elapsed="0.001343"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:58:59.325801" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:58:59.325339" elapsed="0.000490"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:58:59.326354" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:58:59.325990" elapsed="0.000390"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:58:59.326753" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:58:59.336558" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:58:59.326545" elapsed="0.013708">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:59.340686" elapsed="0.000050"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:59.340960" elapsed="0.000028"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:59.341227" elapsed="0.000029"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:59.341479" elapsed="0.000029"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:59.341724" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:59.341958" elapsed="0.000028"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:59.342402" elapsed="0.000034"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:59.342702" elapsed="0.000028"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:59.342929" elapsed="0.000029"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:58:59.342212" elapsed="0.000791"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:58:59.342059" elapsed="0.000983"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:59.343266" elapsed="0.000029"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:58:59.343357" elapsed="0.000028"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:58:59.321674" elapsed="0.021869">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:58:59.343761" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:58:59.343825" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:58:59.320781" elapsed="0.023077"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T00:58:59.344985" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T00:58:59.344381" elapsed="0.000707">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T00:58:59.344003" elapsed="0.001226">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T00:58:59.343968" elapsed="0.001317">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T00:58:59.345353" elapsed="0.000023"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:58:59.272253" elapsed="0.073243">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:59.345947" elapsed="0.000032"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:59.346216" elapsed="0.000030"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T00:58:59.346306" elapsed="0.000021"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T00:58:59.269637" elapsed="0.076821">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:59.346740" elapsed="0.000029"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:59.346999" elapsed="0.000027"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:59.347289" elapsed="0.000036"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:59.347580" elapsed="0.000035"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:59.347981" elapsed="0.000029"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:58:59.348234" elapsed="0.000029"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T00:58:59.348390" elapsed="0.000033"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T00:58:59.266748" elapsed="0.081840">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:59:00.377911" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:59:00.377419" elapsed="0.000526"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:59:00.378453" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:59:00.378121" elapsed="0.000358"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:59:00.378527" elapsed="0.000045"/>
</return>
<msg time="2026-04-08T00:59:00.378709" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:59:00.377003" elapsed="0.001731"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T00:59:00.383459" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T00:59:00.383267" elapsed="0.000219"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:59:00.383642" elapsed="0.000194"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:59:00.384217" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:59:00.383991" elapsed="0.000254"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:59:00.384702" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:59:00.384447" elapsed="0.000296"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:59:00.384891" elapsed="0.000179"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:59:00.385447" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:59:00.385240" elapsed="0.000232"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:59:00.385977" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:59:00.385719" elapsed="0.000300"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:59:00.386532" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:59:00.386188" elapsed="0.000370"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:59:00.386962" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:59:00.386728" elapsed="0.000277"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:59:00.387456" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:59:00.387172" elapsed="0.000309"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:59:00.394266" elapsed="0.000215"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:59:00.403423" elapsed="0.000218"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:59:00.404246" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:59:00.403802" elapsed="0.000472"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:59:00.405430" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:59:00.404867" elapsed="0.000604"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:59:00.405603" elapsed="0.000035"/>
</return>
<msg time="2026-04-08T00:59:00.405764" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:59:00.404465" elapsed="0.001324"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:59:00.406430" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:59:00.405962" elapsed="0.000496"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:59:00.407044" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:59:00.406619" elapsed="0.000452"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:59:00.407594" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:59:00.418444" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:59:00.407252" elapsed="0.013678">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:00.421217" elapsed="0.000033"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:00.421464" elapsed="0.000029"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:00.421696" elapsed="0.000029"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:00.421936" elapsed="0.000029"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:00.422194" elapsed="0.000030"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:00.422427" elapsed="0.000028"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:00.422806" elapsed="0.000029"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:00.423120" elapsed="0.000029"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:00.423417" elapsed="0.000029"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:59:00.422623" elapsed="0.000905"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:59:00.422522" elapsed="0.001046"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:00.423796" elapsed="0.000029"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:59:00.423881" elapsed="0.000022"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:59:00.402911" elapsed="0.021132">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:59:00.424227" elapsed="0.000023"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T00:59:00.391934" elapsed="0.032438">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:00.424621" elapsed="0.000029"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:00.430815" elapsed="0.000038"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:00.431086" elapsed="0.000029"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T00:59:00.431197" elapsed="0.000023"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T00:59:00.382710" elapsed="0.048638">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:59:00.431505" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:59:00.431566" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:59:00.382136" elapsed="0.049463"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T00:59:00.431918" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:59:00.431753" elapsed="0.000224"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:00.431723" elapsed="0.000286"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:59:00.433907" elapsed="0.000312"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:59:00.434871" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:59:00.434437" elapsed="0.000470"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:59:00.436016" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:59:00.435751" elapsed="0.000292"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:59:00.436090" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:59:00.436258" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:59:00.435258" elapsed="0.001025"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:59:00.436816" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:59:00.436446" elapsed="0.000396"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:59:00.437359" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:59:00.437001" elapsed="0.000385"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:59:00.437751" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:59:00.445571" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:59:00.437549" elapsed="0.010416">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:00.448306" elapsed="0.000032"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:00.448550" elapsed="0.000029"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:00.448781" elapsed="0.000027"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:00.449010" elapsed="0.000027"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:00.449273" elapsed="0.000029"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:00.449504" elapsed="0.000027"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:00.449864" elapsed="0.000028"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:00.450105" elapsed="0.000028"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:00.450353" elapsed="0.000028"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:59:00.449684" elapsed="0.000742"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:59:00.449592" elapsed="0.000870"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:00.450659" elapsed="0.000027"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:59:00.450739" elapsed="0.000022"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:59:00.433118" elapsed="0.017771">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:59:00.451046" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:59:00.451107" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:59:00.432257" elapsed="0.018883"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T00:59:00.452119" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T00:59:00.451678" elapsed="0.000548">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T00:59:00.451335" elapsed="0.000977">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T00:59:00.451302" elapsed="0.001054">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T00:59:00.452418" elapsed="0.000022"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:59:00.381589" elapsed="0.070965">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:00.453102" elapsed="0.000116"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:00.453633" elapsed="0.000052"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T00:59:00.453789" elapsed="0.000036"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T00:59:00.379031" elapsed="0.075009">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:00.454521" elapsed="0.000052"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:00.455323" elapsed="0.000057"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:00.455778" elapsed="0.000050"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:00.456244" elapsed="0.000054"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:00.456676" elapsed="0.000048"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:00.457077" elapsed="0.000046"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T00:59:00.457256" elapsed="0.000039"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T00:59:00.376165" elapsed="0.081337">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:59:01.490632" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:59:01.490124" elapsed="0.000542"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:59:01.491154" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:59:01.490841" elapsed="0.000355"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:59:01.491245" elapsed="0.000040"/>
</return>
<msg time="2026-04-08T00:59:01.491417" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:59:01.489734" elapsed="0.001709"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T00:59:01.496168" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T00:59:01.495961" elapsed="0.000235"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:59:01.496350" elapsed="0.000192"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:59:01.496906" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:59:01.496696" elapsed="0.000235"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:59:01.497515" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:59:01.497126" elapsed="0.000432"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:59:01.497710" elapsed="0.000180"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:59:01.498265" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:59:01.498043" elapsed="0.000248"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:59:01.498714" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:59:01.498464" elapsed="0.000291"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:59:01.499317" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:59:01.498908" elapsed="0.000435"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:59:01.499755" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:59:01.499519" elapsed="0.000280"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:59:01.500248" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:59:01.499950" elapsed="0.000324"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:59:01.506990" elapsed="0.000229"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:59:01.516210" elapsed="0.000294"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:59:01.517030" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:59:01.516664" elapsed="0.000393"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:59:01.518260" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:59:01.517695" elapsed="0.000606"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:59:01.518433" elapsed="0.000032"/>
</return>
<msg time="2026-04-08T00:59:01.518595" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:59:01.517293" elapsed="0.001327"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:59:01.519275" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:59:01.518782" elapsed="0.000521"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:59:01.519896" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:59:01.519465" elapsed="0.000458"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:59:01.520436" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:59:01.531339" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:59:01.520087" elapsed="0.015176">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:01.535702" elapsed="0.000054"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:01.536098" elapsed="0.000046"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:01.536511" elapsed="0.000051"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:01.536937" elapsed="0.000050"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:01.537474" elapsed="0.000056"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:01.537866" elapsed="0.000047"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:01.538510" elapsed="0.000047"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:01.539020" elapsed="0.000047"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:01.539496" elapsed="0.000051"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:59:01.538208" elapsed="0.001472"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:59:01.538016" elapsed="0.001725"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:01.540062" elapsed="0.000046"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:59:01.540227" elapsed="0.000037"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:59:01.515699" elapsed="0.024785">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:59:01.540638" elapsed="0.000034"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T00:59:01.504677" elapsed="0.036230">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:01.541442" elapsed="0.000050"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:01.545993" elapsed="0.000027"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:01.546209" elapsed="0.000022"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T00:59:01.546277" elapsed="0.000016"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T00:59:01.495420" elapsed="0.051052">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:59:01.546591" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:59:01.546635" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:59:01.494841" elapsed="0.051817"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T00:59:01.546862" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:59:01.546748" elapsed="0.000156"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:01.546728" elapsed="0.000199"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:59:01.548276" elapsed="0.000212"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:59:01.548966" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:59:01.548643" elapsed="0.000348"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:59:01.549802" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:59:01.549531" elapsed="0.000297"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:59:01.549875" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:59:01.550023" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:59:01.549191" elapsed="0.000856"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:59:01.550611" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:59:01.550223" elapsed="0.000414"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:59:01.551138" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:59:01.550794" elapsed="0.000384"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:59:01.551542" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:59:01.561190" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:59:01.551343" elapsed="0.011543">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:01.563073" elapsed="0.000022"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:01.563265" elapsed="0.000021"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:01.563432" elapsed="0.000020"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:01.563597" elapsed="0.000020"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:01.563773" elapsed="0.000020"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:01.563936" elapsed="0.000019"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:01.564209" elapsed="0.000053"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:01.564460" elapsed="0.000024"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:01.564664" elapsed="0.000020"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:59:01.564064" elapsed="0.000653"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:59:01.563998" elapsed="0.000745"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:01.564884" elapsed="0.000020"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:59:01.564942" elapsed="0.000016"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:59:01.547715" elapsed="0.017336">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:59:01.565184" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:59:01.565231" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:59:01.547079" elapsed="0.018175"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T00:59:01.566427" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T00:59:01.565671" elapsed="0.000892">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T00:59:01.565339" elapsed="0.001362">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T00:59:01.565320" elapsed="0.001451">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T00:59:01.566871" elapsed="0.000034"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:59:01.494286" elapsed="0.072801">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:01.567533" elapsed="0.000048"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:01.567909" elapsed="0.000044"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T00:59:01.568043" elapsed="0.000032"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T00:59:01.491740" elapsed="0.076551">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:01.568701" elapsed="0.000049"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:01.569102" elapsed="0.000044"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:01.569525" elapsed="0.000065"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:01.569935" elapsed="0.000044"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:01.570336" elapsed="0.000045"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:01.570807" elapsed="0.000057"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T00:59:01.570959" elapsed="0.000033"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T00:59:01.488922" elapsed="0.082284">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:59:02.603556" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:59:02.603075" elapsed="0.000513"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:59:02.604070" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:59:02.603760" elapsed="0.000337"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:59:02.604146" elapsed="0.000055"/>
</return>
<msg time="2026-04-08T00:59:02.604332" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:59:02.602666" elapsed="0.001692"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T00:59:02.609222" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T00:59:02.609013" elapsed="0.000235"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:59:02.609407" elapsed="0.000198"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:59:02.609975" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:59:02.609760" elapsed="0.000240"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:59:02.610464" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:59:02.610209" elapsed="0.000295"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:59:02.610659" elapsed="0.000178"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:59:02.611208" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:59:02.610989" elapsed="0.000245"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:59:02.611651" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:59:02.611410" elapsed="0.000280"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:59:02.612199" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:59:02.611847" elapsed="0.000378"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:59:02.612643" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:59:02.612405" elapsed="0.000280"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:59:02.613113" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:59:02.612835" elapsed="0.000303"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:59:02.619940" elapsed="0.000212"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:59:02.629137" elapsed="0.000252"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:59:02.629926" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:59:02.629551" elapsed="0.000401"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:59:02.631251" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:59:02.630639" elapsed="0.000655"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:59:02.631437" elapsed="0.000039"/>
</return>
<msg time="2026-04-08T00:59:02.631604" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:59:02.630142" elapsed="0.001488"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:59:02.632315" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:59:02.631801" elapsed="0.000542"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:59:02.633015" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:59:02.632576" elapsed="0.000466"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:59:02.633622" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:59:02.643338" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:59:02.633230" elapsed="0.012023">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:02.645451" elapsed="0.000023"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:02.645634" elapsed="0.000020"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:02.645805" elapsed="0.000021"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:02.645976" elapsed="0.000021"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:02.646185" elapsed="0.000031"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:02.646373" elapsed="0.000021"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:02.646662" elapsed="0.000021"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:02.646893" elapsed="0.000021"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:02.647089" elapsed="0.000020"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:59:02.646529" elapsed="0.000661"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:59:02.646446" elapsed="0.000775"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:02.647371" elapsed="0.000020"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:59:02.647433" elapsed="0.000017"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:59:02.628627" elapsed="0.018929">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:59:02.647628" elapsed="0.000015"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T00:59:02.617635" elapsed="0.030096">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:02.647912" elapsed="0.000022"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:02.655898" elapsed="0.000047"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:02.656232" elapsed="0.000034"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T00:59:02.656348" elapsed="0.000037"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T00:59:02.608465" elapsed="0.048099">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:59:02.656861" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:59:02.656923" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:59:02.607850" elapsed="0.049106"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T00:59:02.657275" elapsed="0.000019"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:59:02.657084" elapsed="0.000252"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:02.657054" elapsed="0.000313"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:59:02.659273" elapsed="0.000296"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:59:02.660295" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:59:02.659789" elapsed="0.000544"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:59:02.661208" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:59:02.660924" elapsed="0.000311"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:59:02.661282" elapsed="0.000031"/>
</return>
<msg time="2026-04-08T00:59:02.661431" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:59:02.660584" elapsed="0.000872"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:59:02.662011" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:59:02.661621" elapsed="0.000418"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:59:02.662566" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:59:02.662216" elapsed="0.000377"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:59:02.662970" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:59:02.672871" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:59:02.662756" elapsed="0.012617">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:02.675650" elapsed="0.000048"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:02.675915" elapsed="0.000028"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:02.676235" elapsed="0.000041"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:02.676496" elapsed="0.000028"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:02.676750" elapsed="0.000029"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:02.676988" elapsed="0.000029"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:02.677409" elapsed="0.000030"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:02.677665" elapsed="0.000029"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:02.677904" elapsed="0.000029"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:59:02.677214" elapsed="0.000767"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:59:02.677086" elapsed="0.000934"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:02.678254" elapsed="0.000031"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:59:02.678343" elapsed="0.000023"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:59:02.658479" elapsed="0.020028">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:59:02.678837" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:59:02.678902" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:59:02.657583" elapsed="0.021354"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T00:59:02.679926" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T00:59:02.679423" elapsed="0.000592">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T00:59:02.679065" elapsed="0.001041">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T00:59:02.679036" elapsed="0.001137">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T00:59:02.680244" elapsed="0.000023"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:59:02.607303" elapsed="0.073087">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:02.680653" elapsed="0.000031"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:02.680901" elapsed="0.000029"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T00:59:02.680990" elapsed="0.000021"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T00:59:02.604696" elapsed="0.076436">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:02.681405" elapsed="0.000030"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:02.681670" elapsed="0.000029"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:02.681919" elapsed="0.000029"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:02.682174" elapsed="0.000031"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:02.682424" elapsed="0.000029"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:02.682667" elapsed="0.000028"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T00:59:02.682755" elapsed="0.000021"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T00:59:02.601825" elapsed="0.081072">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:59:03.779359" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:59:03.778851" elapsed="0.000540"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:59:03.779885" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:59:03.779565" elapsed="0.000347"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:59:03.779959" elapsed="0.000046"/>
</return>
<msg time="2026-04-08T00:59:03.780136" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:59:03.778442" elapsed="0.001813"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T00:59:03.785022" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T00:59:03.784834" elapsed="0.000214"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:59:03.785220" elapsed="0.000194"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:59:03.785861" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:59:03.785570" elapsed="0.000317"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:59:03.786357" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:59:03.786076" elapsed="0.000323"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:59:03.786550" elapsed="0.000180"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:59:03.787091" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:59:03.786885" elapsed="0.000232"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:59:03.787550" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:59:03.787305" elapsed="0.000286"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:59:03.788253" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:59:03.787745" elapsed="0.000535"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:59:03.788703" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:59:03.788453" elapsed="0.000294"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:59:03.789202" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:59:03.788900" elapsed="0.000329"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:59:03.796054" elapsed="0.000233"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:59:03.805355" elapsed="0.000214"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:59:03.806112" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:59:03.805729" elapsed="0.000410"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:59:03.807319" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:59:03.806763" elapsed="0.000597"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:59:03.807493" elapsed="0.000032"/>
</return>
<msg time="2026-04-08T00:59:03.807649" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:59:03.806355" elapsed="0.001319"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:59:03.808316" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:59:03.807839" elapsed="0.000506"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:59:03.808940" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:59:03.808510" elapsed="0.000456"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:59:03.809482" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:59:03.818231" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:59:03.809132" elapsed="0.011625">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:03.821023" elapsed="0.000032"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:03.821294" elapsed="0.000031"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:03.821587" elapsed="0.000031"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:03.821827" elapsed="0.000029"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:03.822069" elapsed="0.000029"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:03.822323" elapsed="0.000030"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:03.822705" elapsed="0.000028"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:03.823030" elapsed="0.000029"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:03.823341" elapsed="0.000031"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:59:03.822517" elapsed="0.000941"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:59:03.822418" elapsed="0.001080"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:03.823701" elapsed="0.000029"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:59:03.823786" elapsed="0.000022"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:59:03.804837" elapsed="0.019109">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:59:03.824045" elapsed="0.000021"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T00:59:03.793606" elapsed="0.030606">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:03.824466" elapsed="0.000029"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:03.830105" elapsed="0.000026"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:03.830316" elapsed="0.000022"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T00:59:03.830382" elapsed="0.000016"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T00:59:03.784262" elapsed="0.046234">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:59:03.830609" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:59:03.830654" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:59:03.783681" elapsed="0.046997"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T00:59:03.830885" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:59:03.830767" elapsed="0.000162"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:03.830746" elapsed="0.000205"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:59:03.832317" elapsed="0.000210"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:59:03.832989" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:59:03.832688" elapsed="0.000327"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:59:03.833861" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:59:03.833594" elapsed="0.000293"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:59:03.833934" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:59:03.834081" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:59:03.833250" elapsed="0.000855"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:59:03.834652" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:59:03.834282" elapsed="0.000397"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:59:03.835197" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:59:03.834837" elapsed="0.000387"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:59:03.835586" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:59:03.843435" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:59:03.835388" elapsed="0.009740">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:03.845336" elapsed="0.000023"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:03.845510" elapsed="0.000021"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:03.845677" elapsed="0.000020"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:03.845843" elapsed="0.000020"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:03.846012" elapsed="0.000021"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:03.846207" elapsed="0.000022"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:03.846494" elapsed="0.000026"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:03.846703" elapsed="0.000022"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:03.846872" elapsed="0.000020"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:59:03.846339" elapsed="0.000586"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:59:03.846273" elapsed="0.000679"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:03.847094" elapsed="0.000021"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:59:03.847168" elapsed="0.000018"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:59:03.831720" elapsed="0.015564">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:59:03.847413" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:59:03.847460" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:59:03.831104" elapsed="0.016380"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T00:59:03.848220" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T00:59:03.847798" elapsed="0.000486">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T00:59:03.847577" elapsed="0.000770">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T00:59:03.847556" elapsed="0.000823">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T00:59:03.848424" elapsed="0.000015"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:59:03.783111" elapsed="0.065447">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:03.848808" elapsed="0.000028"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:03.849043" elapsed="0.000028"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T00:59:03.849129" elapsed="0.000020"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T00:59:03.780571" elapsed="0.068720">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:03.849530" elapsed="0.000028"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:03.849780" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:03.850017" elapsed="0.000028"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:03.850265" elapsed="0.000029"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:03.850501" elapsed="0.000028"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:03.850729" elapsed="0.000027"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T00:59:03.850813" elapsed="0.000020"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T00:59:03.777558" elapsed="0.073390">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:59:04.884457" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:59:04.883938" elapsed="0.000553"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:59:04.885050" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:59:04.884688" elapsed="0.000389"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:59:04.885137" elapsed="0.000067"/>
</return>
<msg time="2026-04-08T00:59:04.885349" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:59:04.883512" elapsed="0.001865"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T00:59:04.890092" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T00:59:04.889900" elapsed="0.000218"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:59:04.890301" elapsed="0.000235"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:59:04.890962" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:59:04.890720" elapsed="0.000268"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:59:04.891612" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:59:04.891205" elapsed="0.000452"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:59:04.891809" elapsed="0.000184"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:59:04.892375" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:59:04.892148" elapsed="0.000253"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:59:04.892817" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:59:04.892571" elapsed="0.000287"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:59:04.893371" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:59:04.893011" elapsed="0.000386"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:59:04.893803" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:59:04.893566" elapsed="0.000280"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:59:04.894297" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:59:04.893997" elapsed="0.000325"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:59:04.901313" elapsed="0.000221"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:59:04.910507" elapsed="0.000321"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:59:04.911473" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:59:04.911026" elapsed="0.000475"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:59:04.912886" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:59:04.912223" elapsed="0.000707"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:59:04.913072" elapsed="0.000042"/>
</return>
<msg time="2026-04-08T00:59:04.913265" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:59:04.911695" elapsed="0.001596"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:59:04.913931" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:59:04.913460" elapsed="0.000499"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:59:04.914575" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:59:04.914122" elapsed="0.000480"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:59:04.915169" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:59:04.926650" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:59:04.914802" elapsed="0.015985">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:04.931351" elapsed="0.000061"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:04.931764" elapsed="0.000049"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:04.932154" elapsed="0.000079"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:04.932578" elapsed="0.000048"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:04.932975" elapsed="0.000045"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:04.933414" elapsed="0.000059"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:04.934076" elapsed="0.000046"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:04.934876" elapsed="0.000057"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:04.935411" elapsed="0.000052"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:59:04.933765" elapsed="0.001943"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:59:04.933592" elapsed="0.002175"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:04.935976" elapsed="0.000029"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:59:04.936063" elapsed="0.000024"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:59:04.909972" elapsed="0.026294">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:59:04.936370" elapsed="0.000022"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T00:59:04.898859" elapsed="0.037656">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:04.936771" elapsed="0.000031"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:04.943333" elapsed="0.000040"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:04.943690" elapsed="0.000038"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T00:59:04.943802" elapsed="0.000023"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T00:59:04.889358" elapsed="0.054598">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:59:04.944133" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:59:04.944222" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:59:04.888772" elapsed="0.055485"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T00:59:04.944582" elapsed="0.000025"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:59:04.944394" elapsed="0.000261"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:04.944363" elapsed="0.000326"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:59:04.946701" elapsed="0.000248"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:59:04.947502" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:59:04.947104" elapsed="0.000424"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:59:04.948351" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:59:04.948060" elapsed="0.000318"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:59:04.948424" elapsed="0.000031"/>
</return>
<msg time="2026-04-08T00:59:04.948574" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:59:04.947716" elapsed="0.000882"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:59:04.949132" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:59:04.948760" elapsed="0.000417"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:59:04.949681" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:59:04.949338" elapsed="0.000369"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:59:04.950152" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:59:04.960643" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:59:04.949928" elapsed="0.013284">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:04.963528" elapsed="0.000039"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:04.963777" elapsed="0.000028"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:04.964062" elapsed="0.000034"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:04.964385" elapsed="0.000040"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:04.964670" elapsed="0.000033"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:04.964910" elapsed="0.000050"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:04.965411" elapsed="0.000036"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:04.965704" elapsed="0.000031"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:04.965943" elapsed="0.000028"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:59:04.965194" elapsed="0.000821"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:59:04.965050" elapsed="0.001003"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:04.966296" elapsed="0.000031"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:59:04.966385" elapsed="0.000024"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:59:04.945849" elapsed="0.020706">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:59:04.966744" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:59:04.966805" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:59:04.944912" elapsed="0.021925"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T00:59:04.967838" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T00:59:04.967315" elapsed="0.000607">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T00:59:04.966968" elapsed="0.001042">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T00:59:04.966937" elapsed="0.001118">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T00:59:04.968119" elapsed="0.000022"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:59:04.888218" elapsed="0.080064">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:04.968536" elapsed="0.000030"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:04.968772" elapsed="0.000028"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T00:59:04.968859" elapsed="0.000020"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T00:59:04.885686" elapsed="0.083310">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:04.969323" elapsed="0.000030"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:04.969621" elapsed="0.000030"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:04.969866" elapsed="0.000028"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:04.970094" elapsed="0.000028"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:04.970379" elapsed="0.000029"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:04.970615" elapsed="0.000030"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T00:59:04.970717" elapsed="0.000025"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T00:59:04.882555" elapsed="0.088312">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:59:06.004883" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:59:06.004414" elapsed="0.000501"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:59:06.005420" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:59:06.005091" elapsed="0.000355"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:59:06.005493" elapsed="0.000042"/>
</return>
<msg time="2026-04-08T00:59:06.005684" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:59:06.003977" elapsed="0.001743"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T00:59:06.010518" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T00:59:06.010294" elapsed="0.000257"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:59:06.010724" elapsed="0.000212"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:59:06.011328" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:59:06.011096" elapsed="0.000258"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:59:06.011799" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:59:06.011545" elapsed="0.000296"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:59:06.011990" elapsed="0.000197"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:59:06.012545" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:59:06.012341" elapsed="0.000229"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:59:06.012980" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:59:06.012738" elapsed="0.000283"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:59:06.013526" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:59:06.013189" elapsed="0.000362"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:59:06.013949" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:59:06.013718" elapsed="0.000273"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:59:06.014450" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:59:06.014142" elapsed="0.000334"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:59:06.021202" elapsed="0.000292"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:59:06.030537" elapsed="0.000213"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:59:06.031321" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:59:06.030910" elapsed="0.000439"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:59:06.032494" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:59:06.031936" elapsed="0.000600"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:59:06.032672" elapsed="0.000038"/>
</return>
<msg time="2026-04-08T00:59:06.032836" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:59:06.031538" elapsed="0.001323"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:59:06.033492" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:59:06.033025" elapsed="0.000494"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:59:06.034110" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:59:06.033682" elapsed="0.000455"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:59:06.034684" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:59:06.048214" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:59:06.034346" elapsed="0.017793">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:06.052595" elapsed="0.000053"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:06.052991" elapsed="0.000047"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:06.053410" elapsed="0.000047"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:06.053862" elapsed="0.000048"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:06.054329" elapsed="0.000049"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:06.054702" elapsed="0.000029"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:06.055086" elapsed="0.000030"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:06.055438" elapsed="0.000030"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:06.055719" elapsed="0.000030"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:59:06.054899" elapsed="0.000934"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:59:06.054798" elapsed="0.001075"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:06.056077" elapsed="0.000029"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:59:06.056181" elapsed="0.000025"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:59:06.030003" elapsed="0.026344">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:59:06.056446" elapsed="0.000021"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T00:59:06.018885" elapsed="0.037701">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:06.056997" elapsed="0.000030"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:06.063305" elapsed="0.000038"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:06.063584" elapsed="0.000029"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T00:59:06.063676" elapsed="0.000021"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T00:59:06.009700" elapsed="0.054121">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:59:06.063979" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:59:06.064040" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:59:06.009125" elapsed="0.054948"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T00:59:06.064413" elapsed="0.000026"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:59:06.064229" elapsed="0.000265"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:06.064199" elapsed="0.000339"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:59:06.066641" elapsed="0.000236"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:59:06.067378" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:59:06.067038" elapsed="0.000367"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:59:06.068224" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:59:06.067934" elapsed="0.000318"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:59:06.068301" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:59:06.068452" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:59:06.067592" elapsed="0.000887"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:59:06.069030" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:59:06.068643" elapsed="0.000414"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:59:06.069613" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:59:06.069235" elapsed="0.000406"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:59:06.070044" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:59:06.080366" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:59:06.069809" elapsed="0.013055">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:06.083133" elapsed="0.000054"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:06.083409" elapsed="0.000029"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:06.083647" elapsed="0.000029"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:06.083883" elapsed="0.000028"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:06.084127" elapsed="0.000047"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:06.084384" elapsed="0.000028"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:06.084835" elapsed="0.000028"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:06.085079" elapsed="0.000028"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:06.085333" elapsed="0.000031"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:59:06.084647" elapsed="0.000763"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:59:06.084545" elapsed="0.000903"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:06.085650" elapsed="0.000029"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:59:06.085734" elapsed="0.000024"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:59:06.065773" elapsed="0.020156">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:59:06.086100" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:59:06.086194" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:59:06.064818" elapsed="0.021414"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T00:59:06.087121" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T00:59:06.086669" elapsed="0.000563">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T00:59:06.086356" elapsed="0.000964">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T00:59:06.086328" elapsed="0.001036">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T00:59:06.087429" elapsed="0.000022"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:59:06.008571" elapsed="0.078998">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:06.087821" elapsed="0.000030"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:06.088057" elapsed="0.000028"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T00:59:06.088181" elapsed="0.000027"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T00:59:06.006030" elapsed="0.082319">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:06.088598" elapsed="0.000031"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:06.088856" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:06.089155" elapsed="0.000060"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:06.089429" elapsed="0.000028"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:06.089664" elapsed="0.000028"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:06.089914" elapsed="0.000029"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T00:59:06.090050" elapsed="0.000023"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T00:59:06.003077" elapsed="0.087140">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:59:07.122802" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:59:07.122275" elapsed="0.000561"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:59:07.123399" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:59:07.123015" elapsed="0.000420"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:59:07.123492" elapsed="0.000043"/>
</return>
<msg time="2026-04-08T00:59:07.123671" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:59:07.121823" elapsed="0.001874"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T00:59:07.128839" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T00:59:07.128640" elapsed="0.000241"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:59:07.129078" elapsed="0.000248"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:59:07.129705" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:59:07.129490" elapsed="0.000241"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:59:07.130220" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:59:07.129928" elapsed="0.000336"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:59:07.130417" elapsed="0.000188"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:59:07.131001" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:59:07.130762" elapsed="0.000267"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:59:07.131510" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:59:07.131238" elapsed="0.000314"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:59:07.132055" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:59:07.131711" elapsed="0.000370"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:59:07.132507" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:59:07.132270" elapsed="0.000283"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:59:07.132989" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:59:07.132706" elapsed="0.000309"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:59:07.139893" elapsed="0.000388"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:59:07.149589" elapsed="0.000217"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:59:07.150395" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:59:07.149969" elapsed="0.000453"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:59:07.151668" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:59:07.151085" elapsed="0.000641"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:59:07.151903" elapsed="0.000046"/>
</return>
<msg time="2026-04-08T00:59:07.152085" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:59:07.150654" elapsed="0.001456"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:59:07.152775" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:59:07.152301" elapsed="0.000575"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:59:07.153506" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:59:07.153048" elapsed="0.000485"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:59:07.154107" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:59:07.165707" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:59:07.153724" elapsed="0.016688">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:07.171036" elapsed="0.000079"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:07.171647" elapsed="0.000070"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:07.172113" elapsed="0.000083"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:07.172623" elapsed="0.000070"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:07.173275" elapsed="0.000071"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:07.173851" elapsed="0.000069"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:07.174593" elapsed="0.000050"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:07.175432" elapsed="0.000070"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:07.175883" elapsed="0.000027"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:59:07.174260" elapsed="0.001730"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:59:07.174050" elapsed="0.001977"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:07.176226" elapsed="0.000025"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:59:07.176295" elapsed="0.000017"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:59:07.149054" elapsed="0.027368">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:59:07.176492" elapsed="0.000016"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T00:59:07.137547" elapsed="0.039047">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:07.176776" elapsed="0.000021"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:07.181498" elapsed="0.000034"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:07.181715" elapsed="0.000022"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T00:59:07.181781" elapsed="0.000016"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T00:59:07.128071" elapsed="0.053874">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:59:07.182064" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:59:07.182108" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:59:07.127477" elapsed="0.054654"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T00:59:07.182371" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:59:07.182247" elapsed="0.000166"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:07.182224" elapsed="0.000213"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:59:07.183814" elapsed="0.000210"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:59:07.184517" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:59:07.184202" elapsed="0.000348"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:59:07.185389" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:59:07.185094" elapsed="0.000324"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:59:07.185466" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:59:07.185619" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:59:07.184748" elapsed="0.000896"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:59:07.186213" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:59:07.185814" elapsed="0.000620"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:59:07.187380" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:59:07.186795" elapsed="0.000628"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:59:07.187988" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:59:07.197580" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:59:07.187675" elapsed="0.012324">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:07.200337" elapsed="0.000043"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:07.200617" elapsed="0.000031"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:07.200858" elapsed="0.000028"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:07.201094" elapsed="0.000035"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:07.201396" elapsed="0.000036"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:07.201644" elapsed="0.000028"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:07.202014" elapsed="0.000028"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:07.202282" elapsed="0.000037"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:07.202581" elapsed="0.000031"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:59:07.201833" elapsed="0.000827"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:59:07.201737" elapsed="0.000959"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:07.202896" elapsed="0.000028"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:59:07.202979" elapsed="0.000021"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:59:07.183258" elapsed="0.019871">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:59:07.203377" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:59:07.203439" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:59:07.182592" elapsed="0.020880"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T00:59:07.204376" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T00:59:07.203899" elapsed="0.000563">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T00:59:07.203591" elapsed="0.000957">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T00:59:07.203564" elapsed="0.001028">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T00:59:07.204656" elapsed="0.000022"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:59:07.126880" elapsed="0.077913">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:07.205046" elapsed="0.000029"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:07.205308" elapsed="0.000030"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T00:59:07.205397" elapsed="0.000021"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T00:59:07.124040" elapsed="0.081495">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:07.205779" elapsed="0.000033"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:07.206070" elapsed="0.000035"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:07.206384" elapsed="0.000030"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:07.206684" elapsed="0.000034"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:07.206943" elapsed="0.000029"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:07.207261" elapsed="0.000035"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T00:59:07.207357" elapsed="0.000022"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T00:59:07.120878" elapsed="0.086623">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:59:08.240738" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:59:08.240229" elapsed="0.000542"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:59:08.241344" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:59:08.240947" elapsed="0.000424"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:59:08.241420" elapsed="0.000039"/>
</return>
<msg time="2026-04-08T00:59:08.241589" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:59:08.239825" elapsed="0.001789"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T00:59:08.246313" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T00:59:08.246101" elapsed="0.000238"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:59:08.246495" elapsed="0.000194"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:59:08.247051" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:59:08.246845" elapsed="0.000231"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:59:08.247556" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:59:08.247300" elapsed="0.000297"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:59:08.247746" elapsed="0.000180"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:59:08.248303" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:59:08.248081" elapsed="0.000248"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:59:08.248755" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:59:08.248501" elapsed="0.000295"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:59:08.249307" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:59:08.248950" elapsed="0.000382"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:59:08.249733" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:59:08.249501" elapsed="0.000274"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:59:08.250225" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:59:08.249928" elapsed="0.000322"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:59:08.256959" elapsed="0.000232"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:59:08.266446" elapsed="0.000214"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:59:08.267241" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:59:08.266828" elapsed="0.000440"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:59:08.268428" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:59:08.267866" elapsed="0.000615"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:59:08.268624" elapsed="0.000038"/>
</return>
<msg time="2026-04-08T00:59:08.268790" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:59:08.267459" elapsed="0.001357"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:59:08.269465" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:59:08.268986" elapsed="0.000506"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:59:08.270220" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:59:08.269655" elapsed="0.000593"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:59:08.270751" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:59:08.280815" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:59:08.270415" elapsed="0.012201">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:08.282816" elapsed="0.000074"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:08.283049" elapsed="0.000021"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:08.283241" elapsed="0.000022"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:08.283416" elapsed="0.000021"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:08.283592" elapsed="0.000021"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:08.283762" elapsed="0.000021"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:08.284049" elapsed="0.000021"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:08.284298" elapsed="0.000022"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:08.284543" elapsed="0.000023"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:59:08.283913" elapsed="0.000719"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:59:08.283835" elapsed="0.000826"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:08.284835" elapsed="0.000037"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:59:08.284940" elapsed="0.000027"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:59:08.265933" elapsed="0.019180">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:59:08.285239" elapsed="0.000022"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T00:59:08.254639" elapsed="0.030741">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:08.285630" elapsed="0.000029"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:08.291908" elapsed="0.000038"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:08.292202" elapsed="0.000031"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T00:59:08.292298" elapsed="0.000021"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T00:59:08.245535" elapsed="0.046927">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:59:08.292620" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:59:08.292679" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:59:08.244965" elapsed="0.047747"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T00:59:08.292995" elapsed="0.000019"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:59:08.292836" elapsed="0.000218"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:08.292807" elapsed="0.000278"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:59:08.294828" elapsed="0.000209"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:59:08.295526" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:59:08.295209" elapsed="0.000342"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:59:08.296371" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:59:08.296073" elapsed="0.000324"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:59:08.296445" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:59:08.296592" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:59:08.295734" elapsed="0.000882"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:59:08.297152" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:59:08.296777" elapsed="0.000416"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:59:08.297695" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:59:08.297354" elapsed="0.000367"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:59:08.298093" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:59:08.306975" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:59:08.297883" elapsed="0.011206">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:08.309377" elapsed="0.000032"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:08.309646" elapsed="0.000031"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:08.309887" elapsed="0.000028"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:08.310119" elapsed="0.000029"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:08.310385" elapsed="0.000029"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:08.310617" elapsed="0.000028"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:08.310995" elapsed="0.000028"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:08.311254" elapsed="0.000030"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:08.311488" elapsed="0.000028"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:59:08.310813" elapsed="0.000747"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:59:08.310712" elapsed="0.000884"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:08.311794" elapsed="0.000028"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:59:08.311875" elapsed="0.000022"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:59:08.294274" elapsed="0.017751">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:59:08.312208" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:59:08.312284" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:59:08.293401" elapsed="0.018916"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T00:59:08.313223" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T00:59:08.312749" elapsed="0.000561">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T00:59:08.312441" elapsed="0.001008">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T00:59:08.312413" elapsed="0.001083">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T00:59:08.313561" elapsed="0.000021"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:59:08.244408" elapsed="0.069314">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:08.313997" elapsed="0.000041"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:08.314308" elapsed="0.000031"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T00:59:08.314401" elapsed="0.000021"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T00:59:08.241908" elapsed="0.072633">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:08.314783" elapsed="0.000030"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:08.315036" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:08.315298" elapsed="0.000029"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:08.315531" elapsed="0.000027"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:08.315765" elapsed="0.000027"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:08.315995" elapsed="0.000027"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T00:59:08.316078" elapsed="0.000020"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T00:59:08.239030" elapsed="0.077239">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:59:09.343005" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:59:09.342530" elapsed="0.000507"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:59:09.343557" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:59:09.343241" elapsed="0.000342"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:59:09.343632" elapsed="0.000041"/>
</return>
<msg time="2026-04-08T00:59:09.343804" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:59:09.342119" elapsed="0.001710"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T00:59:09.348541" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T00:59:09.348352" elapsed="0.000217"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:59:09.348723" elapsed="0.000194"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:59:09.349372" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:59:09.349144" elapsed="0.000255"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:59:09.349846" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:59:09.349592" elapsed="0.000294"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:59:09.350037" elapsed="0.000201"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:59:09.350601" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:59:09.350395" elapsed="0.000231"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:59:09.351042" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:59:09.350799" elapsed="0.000284"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:59:09.351823" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:59:09.351443" elapsed="0.000406"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:59:09.352283" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:59:09.352029" elapsed="0.000299"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:59:09.352761" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:59:09.352481" elapsed="0.000306"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:59:09.359507" elapsed="0.000212"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:59:09.368672" elapsed="0.000211"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:59:09.369449" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:59:09.369044" elapsed="0.000431"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:59:09.370845" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:59:09.370066" elapsed="0.000821"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:59:09.371054" elapsed="0.000034"/>
</return>
<msg time="2026-04-08T00:59:09.371235" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:59:09.369664" elapsed="0.001597"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:59:09.371875" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:59:09.371427" elapsed="0.000475"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:59:09.372512" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:59:09.372067" elapsed="0.000472"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:59:09.373044" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:59:09.383099" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:59:09.372704" elapsed="0.012258">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:09.385169" elapsed="0.000026"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:09.385350" elapsed="0.000021"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:09.385519" elapsed="0.000021"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:09.385688" elapsed="0.000020"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:09.385860" elapsed="0.000021"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:09.386024" elapsed="0.000021"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:09.386321" elapsed="0.000021"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:09.386606" elapsed="0.000023"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:09.386811" elapsed="0.000021"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:59:09.386185" elapsed="0.000707"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:59:09.386094" elapsed="0.000828"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:09.387099" elapsed="0.000022"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:59:09.387178" elapsed="0.000017"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:59:09.368173" elapsed="0.019126">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:59:09.387370" elapsed="0.000015"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T00:59:09.357201" elapsed="0.030270">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:09.387651" elapsed="0.000021"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:09.392165" elapsed="0.000028"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:09.392364" elapsed="0.000022"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T00:59:09.392431" elapsed="0.000015"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T00:59:09.347794" elapsed="0.044741">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:59:09.392648" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:59:09.392693" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:59:09.347233" elapsed="0.045484"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T00:59:09.392921" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:59:09.392807" elapsed="0.000156"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:09.392786" elapsed="0.000200"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:59:09.394329" elapsed="0.000211"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:59:09.395017" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:59:09.394698" elapsed="0.000344"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:59:09.395848" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:59:09.395583" elapsed="0.000291"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:59:09.395921" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:59:09.396068" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:59:09.395246" elapsed="0.000847"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:59:09.396644" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:59:09.396276" elapsed="0.000394"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:59:09.397239" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:59:09.396876" elapsed="0.000389"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:59:09.397631" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:59:09.405412" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:59:09.397429" elapsed="0.009755">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:09.407390" elapsed="0.000024"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:09.407567" elapsed="0.000021"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:09.407736" elapsed="0.000020"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:09.407904" elapsed="0.000020"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:09.408076" elapsed="0.000020"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:09.408261" elapsed="0.000021"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:09.408547" elapsed="0.000021"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:09.408723" elapsed="0.000020"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:09.408887" elapsed="0.000020"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:59:09.408410" elapsed="0.000529"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:59:09.408328" elapsed="0.000638"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:09.409107" elapsed="0.000021"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:59:09.409183" elapsed="0.000017"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:59:09.393764" elapsed="0.015532">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:59:09.409419" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:59:09.409466" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:59:09.393138" elapsed="0.016351"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T00:59:09.410126" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T00:59:09.409798" elapsed="0.000411">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T00:59:09.409576" elapsed="0.000696">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T00:59:09.409556" elapsed="0.000748">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T00:59:09.410349" elapsed="0.000016"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:59:09.346646" elapsed="0.063819">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:09.410652" elapsed="0.000021"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:09.410852" elapsed="0.000023"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T00:59:09.410961" elapsed="0.000016"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T00:59:09.344124" elapsed="0.066940">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:09.411259" elapsed="0.000022"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:09.411449" elapsed="0.000023"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:09.411626" elapsed="0.000021"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:09.411792" elapsed="0.000024"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:09.412052" elapsed="0.000029"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:09.412308" elapsed="0.000029"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T00:59:09.412396" elapsed="0.000020"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T00:59:09.341334" elapsed="0.071219">Could not parse owner and candidates for device openflow:1</status>
</kw>
<msg time="2026-04-08T00:59:09.412699" level="FAIL">Keyword 'ClusterManagement.Verify_Owner_And_Successors_For_Device' failed after retrying for 30 seconds. The last error was: Could not parse owner and candidates for device openflow:1</msg>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>30s</arg>
<arg>1s</arg>
<arg>ClusterManagement.Verify_Owner_And_Successors_For_Device</arg>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="FAIL" start="2026-04-08T00:58:39.049731" elapsed="30.363096">Keyword 'ClusterManagement.Verify_Owner_And_Successors_For_Device' failed after retrying for 30 seconds. The last error was: Could not parse owner and candidates for device openflow:1</status>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T00:59:09.412933" elapsed="0.000022"/>
</return>
<var>${original_owner}</var>
<var>${original_successor_list}</var>
<arg>openflow:1</arg>
<arg>1</arg>
<doc>Check Entity Owner Status and identify owner and successors for the device ${device}. Request is sent to controller ${controller_index}.</doc>
<status status="FAIL" start="2026-04-08T00:58:39.047530" elapsed="30.365541">Keyword 'ClusterManagement.Verify_Owner_And_Successors_For_Device' failed after retrying for 30 seconds. The last error was: Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<arg>${original_owner}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:09.413409" elapsed="0.000044"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<arg>${new_cluster_list}</arg>
<arg>${original_successor_list}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:09.413747" elapsed="0.000032"/>
</kw>
<doc>Check Entity Owner Status and identify owner and successor for first switch s1.</doc>
<status status="FAIL" start="2026-04-08T00:58:38.658452" elapsed="30.755533">Keyword 'ClusterManagement.Verify_Owner_And_Successors_For_Device' failed after retrying for 30 seconds. The last error was: Could not parse owner and candidates for device openflow:1</status>
</test>
<test id="s1-s4-t9" name="Disconnect Mininet From Owner" line="80">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-08T00:59:09.419008" elapsed="0.000325"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-08T00:59:09.418590" elapsed="0.000820"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:59:09.420801" elapsed="0.000019"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:59:09.420648" elapsed="0.000214"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:09.420622" elapsed="0.000269"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:59:09.426712" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:59:09.426604" elapsed="0.000234"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:09.426587" elapsed="0.000279"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:59:09.427940" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:59:09.427556" elapsed="0.000410"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:59:09.428521" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:59:09.428212" elapsed="0.000336"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:59:09.428602" elapsed="0.000035"/>
</return>
<msg time="2026-04-08T00:59:09.428788" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:59:09.427143" elapsed="0.001677"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:59:09.434506" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:59:09.434369" elapsed="0.000193"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:09.434348" elapsed="0.000244"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:59:09.436083" elapsed="0.000020"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:59:09.435941" elapsed="0.000201"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:09.435910" elapsed="0.000291"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:59:09.436736" level="INFO">${karaf_connection_index} = 476</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:59:09.436400" elapsed="0.000363"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:59:09.437222" level="INFO">${current_connection_index} = 495</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:59:09.436930" elapsed="0.000328"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T00:59:09.471380" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T00:59:09.437771" elapsed="0.033761"/>
</kw>
<msg time="2026-04-08T00:59:09.471728" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T00:59:09.471777" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:59:09.437429" elapsed="0.034384"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T00:59:09.507807" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "D "i "s "c "o "n "n "e "c "t "[C "M "i "n "i "n "e "t "[C "F "r "o "m "[C "O "w "n "e "r "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T00:59:09.472461" elapsed="0.035584"/>
</kw>
<msg time="2026-04-08T00:59:09.508297" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T00:59:09.508346" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "D "i "s "c "o "n "n "e "c "t "[C "M...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:59:09.472030" elapsed="0.036354"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:09.508843" elapsed="0.000027"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:59:09.508504" elapsed="0.000399"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:09.508470" elapsed="0.000461"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:59:09.509494" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "D "i "s "c "o "n "n "e "c "t "[C "M "i "n "i "n "e "t "[C "F "r "o "m "[C "O "w "n "e "r "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:59:09.509083" elapsed="0.000485"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:09.509860" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:59:09.509636" elapsed="0.000279"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:09.509618" elapsed="0.000320"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T00:59:09.509975" elapsed="0.000041"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:59:09.512584" elapsed="0.000186"/>
</kw>
<msg time="2026-04-08T00:59:09.512831" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:59:09.511575" elapsed="0.001388"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:09.513257" elapsed="0.000076"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:09.513591" elapsed="0.000132"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:59:09.510918" elapsed="0.002918"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T00:59:09.510328" elapsed="0.003573"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T00:59:09.435527" elapsed="0.078473"/>
</kw>
<msg time="2026-04-08T00:59:09.514096" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:59:09.514141" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "D "i "s "c "o "n "n "e "c "t "[C "M...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:59:09.434831" elapsed="0.079371"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T00:59:09.514413" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-08T00:59:09.514282" elapsed="0.000190"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:09.514263" elapsed="0.000233"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:09.514923" elapsed="0.000031"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:09.515305" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T00:59:09.515378" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T00:59:09.433941" elapsed="0.081544"/>
</kw>
<msg time="2026-04-08T00:59:09.515582" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:59:09.515626" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "D "i "s "c "o "n "n "e "c "t "[C "M...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:59:09.429211" elapsed="0.086451"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:09.515997" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:59:09.515740" elapsed="0.000310"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:09.515722" elapsed="0.000352"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T00:59:09.429049" elapsed="0.087049"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:59:09.521469" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:59:09.521362" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:09.521343" elapsed="0.000192"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:59:09.522767" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:59:09.522659" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:09.522641" elapsed="0.000193"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:59:09.523297" level="INFO">${karaf_connection_index} = 478</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:59:09.522981" elapsed="0.000343"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:59:09.523732" level="INFO">${current_connection_index} = 495</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:59:09.523485" elapsed="0.000273"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T00:59:09.560123" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T00:59:09.524269" elapsed="0.036005"/>
</kw>
<msg time="2026-04-08T00:59:09.560452" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T00:59:09.560499" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:59:09.523917" elapsed="0.036618"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T00:59:09.598888" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "D "i "s "c "o "n "n "e "c "t "[C "M "i "n "i "n "e "t "[C "F "r "o "m "[C "O "w "n "e "r "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T00:59:09.561106" elapsed="0.037896"/>
</kw>
<msg time="2026-04-08T00:59:09.599186" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T00:59:09.599235" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "D "i "s "c "o "n "n "e "c "t "[C "M...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:59:09.560732" elapsed="0.038539"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:09.599725" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:59:09.599464" elapsed="0.000317"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:09.599435" elapsed="0.000375"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:59:09.600291" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "D "i "s "c "o "n "n "e "c "t "[C "M "i "n "i "n "e "t "[C "F "r "o "m "[C "O "w "n "e "r "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:59:09.599957" elapsed="0.000403"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:09.600648" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:59:09.600427" elapsed="0.000275"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:09.600409" elapsed="0.000317"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T00:59:09.600761" elapsed="0.000037"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:59:09.603316" elapsed="0.000189"/>
</kw>
<msg time="2026-04-08T00:59:09.603566" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:59:09.602310" elapsed="0.001388"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:09.603978" elapsed="0.000074"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:09.604332" elapsed="0.000072"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:59:09.601652" elapsed="0.002861"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T00:59:09.601080" elapsed="0.003497"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T00:59:09.522358" elapsed="0.082317"/>
</kw>
<msg time="2026-04-08T00:59:09.604766" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:59:09.604811" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "D "i "s "c "o "n "n "e "c "t "[C "M...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:59:09.521687" elapsed="0.083163"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T00:59:09.605034" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-08T00:59:09.604928" elapsed="0.000164"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:09.604909" elapsed="0.000206"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 2,
close the previous connection. In any case create a new connection
to karaf console for 2, set correct prompt set and login to karaf console.
Store connection index for 2 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:09.605534" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:09.605869" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T00:59:09.605940" elapsed="0.000044"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T00:59:09.521006" elapsed="0.085072"/>
</kw>
<msg time="2026-04-08T00:59:09.606198" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:59:09.606244" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "D "i "s "c "o "n "n "e "c "t "[C "M...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:59:09.516388" elapsed="0.089891"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:09.606606" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:59:09.606355" elapsed="0.000304"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:09.606338" elapsed="0.000344"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T00:59:09.516243" elapsed="0.090462"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:59:09.612311" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:59:09.612089" elapsed="0.000316"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:09.612070" elapsed="0.000361"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:59:09.613571" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:59:09.613463" elapsed="0.000195"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:09.613445" elapsed="0.000239"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:59:09.614173" level="INFO">${karaf_connection_index} = 480</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:59:09.613836" elapsed="0.000366"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:59:09.614616" level="INFO">${current_connection_index} = 495</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:59:09.614364" elapsed="0.000279"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T00:59:09.658433" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T00:59:09.615140" elapsed="0.043409"/>
</kw>
<msg time="2026-04-08T00:59:09.658721" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T00:59:09.658784" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:59:09.614805" elapsed="0.044016"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T00:59:09.701254" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "D "i "s "c "o "n "n "e "c "t "[C "M "i "n "i "n "e "t "[C "F "r "o "m "[C "O "w "n "e "r "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T00:59:09.659413" elapsed="0.042521"/>
</kw>
<msg time="2026-04-08T00:59:09.702194" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T00:59:09.702247" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "D "i "s "c "o "n "n "e "c "t "[C "M...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:59:09.659014" elapsed="0.043270"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:09.702787" elapsed="0.000035"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:59:09.702413" elapsed="0.000455"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:09.702371" elapsed="0.000532"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:59:09.703507" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "D "i "s "c "o "n "n "e "c "t "[C "M "i "n "i "n "e "t "[C "F "r "o "m "[C "O "w "n "e "r "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:59:09.703060" elapsed="0.000518"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:09.703877" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:59:09.703650" elapsed="0.000283"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:09.703630" elapsed="0.000335"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T00:59:09.704013" elapsed="0.000044"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:59:09.706996" elapsed="0.000264"/>
</kw>
<msg time="2026-04-08T00:59:09.707340" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:59:09.705776" elapsed="0.001731"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:09.707858" elapsed="0.000094"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:09.708323" elapsed="0.000098"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:59:09.705049" elapsed="0.003515"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T00:59:09.704423" elapsed="0.004226"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T00:59:09.613147" elapsed="0.095632"/>
</kw>
<msg time="2026-04-08T00:59:09.708916" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:59:09.708978" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "D "i "s "c "o "n "n "e "c "t "[C "M...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:59:09.612586" elapsed="0.096432"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T00:59:09.709240" elapsed="0.000028"/>
</return>
<status status="PASS" start="2026-04-08T00:59:09.709100" elapsed="0.000201"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:09.709080" elapsed="0.000247"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 3,
close the previous connection. In any case create a new connection
to karaf console for 3, set correct prompt set and login to karaf console.
Store connection index for 3 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:09.709749" elapsed="0.000027"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:09.710206" elapsed="0.000030"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T00:59:09.710286" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T00:59:09.611741" elapsed="0.098666"/>
</kw>
<msg time="2026-04-08T00:59:09.710533" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:59:09.710590" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "D "i "s "c "o "n "n "e "c "t "[C "M...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:59:09.607090" elapsed="0.103546"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:09.711060" elapsed="0.000028"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:59:09.710733" elapsed="0.000399"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:09.710711" elapsed="0.000472"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T00:59:09.606942" elapsed="0.104278"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-08T00:59:09.428876" elapsed="0.282392"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-08T00:59:09.426241" elapsed="0.285114"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-08T00:59:09.420246" elapsed="0.291172"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:59:09.419622" elapsed="0.291843"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-08T00:59:09.415256" elapsed="0.296266"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:59:09.716195" level="FAIL">Variable '${original_owner}' not found.</msg>
<var>${original_owner_list}</var>
<arg>${original_owner}</arg>
<doc>Returns a list containing given items.</doc>
<status status="FAIL" start="2026-04-08T00:59:09.711697" elapsed="0.004543">Variable '${original_owner}' not found.</status>
</kw>
<kw name="Disconnect Cluster Mininet" owner="MininetKeywords">
<arg>break</arg>
<arg>${original_owner_list}</arg>
<doc>Break and restore controller to mininet connection via iptables.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:09.716531" elapsed="0.000025"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<arg>${original_owner_list}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:09.716721" elapsed="0.000021"/>
</kw>
<doc>Disconnect mininet from the owner</doc>
<status status="FAIL" start="2026-04-08T00:59:09.414524" elapsed="0.302362">Variable '${original_owner}' not found.</status>
</test>
<test id="s1-s4-t10" name="Check Entity Owner Status And Find Owner and Successor After Fail" line="86">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-08T00:59:09.720575" elapsed="0.000211"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-08T00:59:09.720302" elapsed="0.000541"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:59:09.721931" elapsed="0.000020"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:59:09.721794" elapsed="0.000196"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:09.721775" elapsed="0.000246"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:59:09.727010" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:59:09.726900" elapsed="0.000156"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:09.726882" elapsed="0.000196"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:59:09.728097" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:59:09.727708" elapsed="0.000416"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:59:09.728606" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:59:09.728303" elapsed="0.000328"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:59:09.728674" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:59:09.728826" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:59:09.727327" elapsed="0.001523"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:59:09.734169" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:59:09.734045" elapsed="0.000171"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:09.734026" elapsed="0.000212"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:59:09.735459" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:59:09.735295" elapsed="0.000213"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:09.735277" elapsed="0.000254"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:59:09.736041" level="INFO">${karaf_connection_index} = 476</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:59:09.735682" elapsed="0.000387"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:59:09.736508" level="INFO">${current_connection_index} = 495</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:59:09.736248" elapsed="0.000286"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T00:59:09.770319" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T00:59:09.737035" elapsed="0.033411"/>
</kw>
<msg time="2026-04-08T00:59:09.770623" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T00:59:09.770670" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:59:09.736697" elapsed="0.034010"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T00:59:09.869447" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "E "n "t "i "t "y "[C "O "w "n "e "r "[C "S "t "a "t "u "s "[C "A "n "d "[C "F "i "n "d "[C "O "w "n "e "r "[C "a "n "d "[C "S "u "c "c "e "s "[78Cs "[A[78Co
 "r "[C "A "f "t "e "r "[C "F "a "i "l "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T00:59:09.771314" elapsed="0.098257"/>
</kw>
<msg time="2026-04-08T00:59:09.869736" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T00:59:09.869783" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "E "n "t "i "t "y...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:59:09.770894" elapsed="0.098925"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:09.870146" elapsed="0.000046"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:59:09.869906" elapsed="0.000321"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:09.869881" elapsed="0.000373"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:59:09.870711" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "E "n "t "i "t "y "[C "O "w "n "e "r "[C "S "t "a "t "u "s "[C "A "n "d "[C "F "i "n "d "[C "O "w "n "e "r "[C "a "n "d "[C "S "u "c "c "e "s "[78Cs "[A[78Co
 "r "[C "A "f "t "e "r "[C "F "a "i "l "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:59:09.870406" elapsed="0.000387"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:09.871082" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:59:09.870860" elapsed="0.000275"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:09.870842" elapsed="0.000338"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T00:59:09.871217" elapsed="0.000032"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:59:09.873843" elapsed="0.000188"/>
</kw>
<msg time="2026-04-08T00:59:09.874094" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:59:09.872710" elapsed="0.001532"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:09.874529" elapsed="0.000076"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:09.874861" elapsed="0.000072"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:59:09.872067" elapsed="0.002974"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T00:59:09.871516" elapsed="0.003588"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T00:59:09.734964" elapsed="0.140268"/>
</kw>
<msg time="2026-04-08T00:59:09.875326" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:59:09.875370" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "E "n "t "i "t "y...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:59:09.734390" elapsed="0.141017"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T00:59:09.875591" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-08T00:59:09.875484" elapsed="0.000166"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:09.875465" elapsed="0.000208"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:09.876120" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:09.876473" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T00:59:09.876543" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T00:59:09.733709" elapsed="0.142939"/>
</kw>
<msg time="2026-04-08T00:59:09.876767" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:59:09.876814" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "E "n "t "i "t "y...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:59:09.729242" elapsed="0.147613"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:09.877198" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:59:09.876931" elapsed="0.000321"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:09.876914" elapsed="0.000361"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T00:59:09.729082" elapsed="0.148216"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:59:09.882767" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:59:09.882660" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:09.882641" elapsed="0.000195"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:59:09.884027" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:59:09.883919" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:09.883901" elapsed="0.000195"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:59:09.884567" level="INFO">${karaf_connection_index} = 478</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:59:09.884265" elapsed="0.000329"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:59:09.885024" level="INFO">${current_connection_index} = 495</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:59:09.884768" elapsed="0.000283"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T00:59:09.916524" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T00:59:09.885572" elapsed="0.031129"/>
</kw>
<msg time="2026-04-08T00:59:09.916895" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T00:59:09.916942" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:59:09.885233" elapsed="0.031744"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T00:59:09.998929" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "E "n "t "i "t "y "[C "O "w "n "e "r "[C "S "t "a "t "u "s "[C "A "n "d "[C "F "i "n "d "[C "O "w "n "e "r "[C "a "n "d "[C "S "u "c "c "e "s "[78Cs "[A[78Co
 "r "[C "A "f "t "e "r "[C "F "a "i "l "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T00:59:09.917609" elapsed="0.081601"/>
</kw>
<msg time="2026-04-08T00:59:09.999454" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T00:59:09.999502" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "E "n "t "i "t "y...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:59:09.917212" elapsed="0.082327"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:10.000069" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:59:09.999666" elapsed="0.000470"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:09.999628" elapsed="0.000580"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:59:10.000842" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "E "n "t "i "t "y "[C "O "w "n "e "r "[C "S "t "a "t "u "s "[C "A "n "d "[C "F "i "n "d "[C "O "w "n "e "r "[C "a "n "d "[C "S "u "c "c "e "s "[78Cs "[A[78Co
 "r "[C "A "f "t "e "r "[C "F "a "i "l "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:59:10.000391" elapsed="0.000563"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:10.001348" elapsed="0.000028"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:59:10.001040" elapsed="0.000472"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:10.001016" elapsed="0.000530"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T00:59:10.001597" elapsed="0.000052"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:59:10.004497" elapsed="0.000211"/>
</kw>
<msg time="2026-04-08T00:59:10.004770" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:59:10.003336" elapsed="0.001572"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:10.005235" elapsed="0.000080"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:10.005582" elapsed="0.000076"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:59:10.002655" elapsed="0.003116"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T00:59:10.002028" elapsed="0.003810"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T00:59:09.883617" elapsed="0.122324"/>
</kw>
<msg time="2026-04-08T00:59:10.006040" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:59:10.006085" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "E "n "t "i "t "y...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:59:09.882989" elapsed="0.123133"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T00:59:10.006343" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-08T00:59:10.006233" elapsed="0.000171"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:10.006212" elapsed="0.000216"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 2,
close the previous connection. In any case create a new connection
to karaf console for 2, set correct prompt set and login to karaf console.
Store connection index for 2 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:10.006832" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:10.007190" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T00:59:10.007269" elapsed="0.000022"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T00:59:09.882319" elapsed="0.125071"/>
</kw>
<msg time="2026-04-08T00:59:10.007488" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:59:10.007532" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "E "n "t "i "t "y...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:59:09.877567" elapsed="0.129999"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:10.007898" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:59:10.007644" elapsed="0.000308"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:10.007626" elapsed="0.000350"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T00:59:09.877425" elapsed="0.130575"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:59:10.013809" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:59:10.013671" elapsed="0.000195"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:10.013650" elapsed="0.000248"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:59:10.015142" elapsed="0.000034"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:59:10.015032" elapsed="0.000178"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:10.015014" elapsed="0.000218"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:59:10.015687" level="INFO">${karaf_connection_index} = 480</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:59:10.015381" elapsed="0.000334"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:59:10.016190" level="INFO">${current_connection_index} = 495</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:59:10.015883" elapsed="0.000337"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T00:59:10.053847" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T00:59:10.016749" elapsed="0.037247"/>
</kw>
<msg time="2026-04-08T00:59:10.054210" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T00:59:10.054361" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:59:10.016402" elapsed="0.037999"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T00:59:10.142173" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "E "n "t "i "t "y "[C "O "w "n "e "r "[C "S "t "a "t "u "s "[C "A "n "d "[C "F "i "n "d "[C "O "w "n "e "r "[C "a "n "d "[C "S "u "c "c "e "s "[78Cs "[A[78Co
 "r "[C "A "f "t "e "r "[C "F "a "i "l "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T00:59:10.055012" elapsed="0.087428"/>
</kw>
<msg time="2026-04-08T00:59:10.142663" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T00:59:10.142712" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "E "n "t "i "t "y...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:59:10.054618" elapsed="0.088131"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:10.143225" elapsed="0.000027"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:59:10.142871" elapsed="0.000417"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:10.142839" elapsed="0.000474"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:59:10.143852" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "E "n "t "i "t "y "[C "O "w "n "e "r "[C "S "t "a "t "u "s "[C "A "n "d "[C "F "i "n "d "[C "O "w "n "e "r "[C "a "n "d "[C "S "u "c "c "e "s "[78Cs "[A[78Co
 "r "[C "A "f "t "e "r "[C "F "a "i "l "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:59:10.143463" elapsed="0.000473"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:10.144529" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:59:10.144298" elapsed="0.000286"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:10.143986" elapsed="0.000621"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T00:59:10.144644" elapsed="0.000044"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:59:10.147324" elapsed="0.000187"/>
</kw>
<msg time="2026-04-08T00:59:10.147599" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:59:10.146209" elapsed="0.001522"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:10.148009" elapsed="0.000073"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:10.148363" elapsed="0.000073"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:59:10.145557" elapsed="0.002988"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T00:59:10.144969" elapsed="0.003640"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T00:59:10.014727" elapsed="0.133981"/>
</kw>
<msg time="2026-04-08T00:59:10.148800" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:59:10.148844" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "E "n "t "i "t "y...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:59:10.014098" elapsed="0.134781"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T00:59:10.149063" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-08T00:59:10.148955" elapsed="0.000166"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:10.148937" elapsed="0.000207"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 3,
close the previous connection. In any case create a new connection
to karaf console for 3, set correct prompt set and login to karaf console.
Store connection index for 3 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:10.149554" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:10.149883" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T00:59:10.149954" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T00:59:10.013271" elapsed="0.136789"/>
</kw>
<msg time="2026-04-08T00:59:10.150153" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:59:10.150235" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "E "n "t "i "t "y...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:59:10.008319" elapsed="0.141953"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:10.150659" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:59:10.150404" elapsed="0.000309"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:10.150386" elapsed="0.000350"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T00:59:10.008129" elapsed="0.142631"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-08T00:59:09.728906" elapsed="0.421887"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-08T00:59:09.726532" elapsed="0.424324"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-08T00:59:09.721469" elapsed="0.429445"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:59:09.720995" elapsed="0.429966"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-08T00:59:09.717789" elapsed="0.433228"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Get OpenFlow Entity Owner Status For One Device" owner="ClusterOpenFlow">
<msg time="2026-04-08T00:59:10.163637" level="FAIL">Variable '${new_cluster_list}' not found.</msg>
<arg>openflow:1</arg>
<arg>1</arg>
<arg>${new_cluster_list}</arg>
<arg>after_stop=True</arg>
<doc>Check Entity Owner Status and identify owner and successors for the device ${device}. Request is sent to controller ${controller_index}.</doc>
<status status="FAIL" start="2026-04-08T00:59:10.159539" elapsed="0.004137">Variable '${new_cluster_list}' not found.</status>
</kw>
<kw name="Get OpenFlow Entity Owner Status For One Device" owner="ClusterOpenFlow">
<msg time="2026-04-08T00:59:11.181680" level="FAIL">Variable '${new_cluster_list}' not found.</msg>
<arg>openflow:1</arg>
<arg>1</arg>
<arg>${new_cluster_list}</arg>
<arg>after_stop=True</arg>
<doc>Check Entity Owner Status and identify owner and successors for the device ${device}. Request is sent to controller ${controller_index}.</doc>
<status status="FAIL" start="2026-04-08T00:59:11.175542" elapsed="0.006225">Variable '${new_cluster_list}' not found.</status>
</kw>
<kw name="Get OpenFlow Entity Owner Status For One Device" owner="ClusterOpenFlow">
<msg time="2026-04-08T00:59:12.200872" level="FAIL">Variable '${new_cluster_list}' not found.</msg>
<arg>openflow:1</arg>
<arg>1</arg>
<arg>${new_cluster_list}</arg>
<arg>after_stop=True</arg>
<doc>Check Entity Owner Status and identify owner and successors for the device ${device}. Request is sent to controller ${controller_index}.</doc>
<status status="FAIL" start="2026-04-08T00:59:12.194279" elapsed="0.006659">Variable '${new_cluster_list}' not found.</status>
</kw>
<kw name="Get OpenFlow Entity Owner Status For One Device" owner="ClusterOpenFlow">
<msg time="2026-04-08T00:59:13.213549" level="FAIL">Variable '${new_cluster_list}' not found.</msg>
<arg>openflow:1</arg>
<arg>1</arg>
<arg>${new_cluster_list}</arg>
<arg>after_stop=True</arg>
<doc>Check Entity Owner Status and identify owner and successors for the device ${device}. Request is sent to controller ${controller_index}.</doc>
<status status="FAIL" start="2026-04-08T00:59:13.209362" elapsed="0.004242">Variable '${new_cluster_list}' not found.</status>
</kw>
<kw name="Get OpenFlow Entity Owner Status For One Device" owner="ClusterOpenFlow">
<msg time="2026-04-08T00:59:14.230770" level="FAIL">Variable '${new_cluster_list}' not found.</msg>
<arg>openflow:1</arg>
<arg>1</arg>
<arg>${new_cluster_list}</arg>
<arg>after_stop=True</arg>
<doc>Check Entity Owner Status and identify owner and successors for the device ${device}. Request is sent to controller ${controller_index}.</doc>
<status status="FAIL" start="2026-04-08T00:59:14.226659" elapsed="0.004162">Variable '${new_cluster_list}' not found.</status>
</kw>
<kw name="Get OpenFlow Entity Owner Status For One Device" owner="ClusterOpenFlow">
<msg time="2026-04-08T00:59:15.250234" level="FAIL">Variable '${new_cluster_list}' not found.</msg>
<arg>openflow:1</arg>
<arg>1</arg>
<arg>${new_cluster_list}</arg>
<arg>after_stop=True</arg>
<doc>Check Entity Owner Status and identify owner and successors for the device ${device}. Request is sent to controller ${controller_index}.</doc>
<status status="FAIL" start="2026-04-08T00:59:15.245012" elapsed="0.005279">Variable '${new_cluster_list}' not found.</status>
</kw>
<kw name="Get OpenFlow Entity Owner Status For One Device" owner="ClusterOpenFlow">
<msg time="2026-04-08T00:59:16.269385" level="FAIL">Variable '${new_cluster_list}' not found.</msg>
<arg>openflow:1</arg>
<arg>1</arg>
<arg>${new_cluster_list}</arg>
<arg>after_stop=True</arg>
<doc>Check Entity Owner Status and identify owner and successors for the device ${device}. Request is sent to controller ${controller_index}.</doc>
<status status="FAIL" start="2026-04-08T00:59:16.265125" elapsed="0.004313">Variable '${new_cluster_list}' not found.</status>
</kw>
<kw name="Get OpenFlow Entity Owner Status For One Device" owner="ClusterOpenFlow">
<msg time="2026-04-08T00:59:17.282551" level="FAIL">Variable '${new_cluster_list}' not found.</msg>
<arg>openflow:1</arg>
<arg>1</arg>
<arg>${new_cluster_list}</arg>
<arg>after_stop=True</arg>
<doc>Check Entity Owner Status and identify owner and successors for the device ${device}. Request is sent to controller ${controller_index}.</doc>
<status status="FAIL" start="2026-04-08T00:59:17.278424" elapsed="0.004176">Variable '${new_cluster_list}' not found.</status>
</kw>
<kw name="Get OpenFlow Entity Owner Status For One Device" owner="ClusterOpenFlow">
<msg time="2026-04-08T00:59:18.301522" level="FAIL">Variable '${new_cluster_list}' not found.</msg>
<arg>openflow:1</arg>
<arg>1</arg>
<arg>${new_cluster_list}</arg>
<arg>after_stop=True</arg>
<doc>Check Entity Owner Status and identify owner and successors for the device ${device}. Request is sent to controller ${controller_index}.</doc>
<status status="FAIL" start="2026-04-08T00:59:18.297104" elapsed="0.004472">Variable '${new_cluster_list}' not found.</status>
</kw>
<kw name="Get OpenFlow Entity Owner Status For One Device" owner="ClusterOpenFlow">
<msg time="2026-04-08T00:59:19.319906" level="FAIL">Variable '${new_cluster_list}' not found.</msg>
<arg>openflow:1</arg>
<arg>1</arg>
<arg>${new_cluster_list}</arg>
<arg>after_stop=True</arg>
<doc>Check Entity Owner Status and identify owner and successors for the device ${device}. Request is sent to controller ${controller_index}.</doc>
<status status="FAIL" start="2026-04-08T00:59:19.315797" elapsed="0.004159">Variable '${new_cluster_list}' not found.</status>
</kw>
<kw name="Get OpenFlow Entity Owner Status For One Device" owner="ClusterOpenFlow">
<msg time="2026-04-08T00:59:20.337936" level="FAIL">Variable '${new_cluster_list}' not found.</msg>
<arg>openflow:1</arg>
<arg>1</arg>
<arg>${new_cluster_list}</arg>
<arg>after_stop=True</arg>
<doc>Check Entity Owner Status and identify owner and successors for the device ${device}. Request is sent to controller ${controller_index}.</doc>
<status status="FAIL" start="2026-04-08T00:59:20.333823" elapsed="0.004164">Variable '${new_cluster_list}' not found.</status>
</kw>
<msg time="2026-04-08T00:59:20.338236" level="FAIL">Keyword 'ClusterOpenFlow.Get OpenFlow Entity Owner Status For One Device' failed after retrying for 10 seconds. The last error was: Variable '${new_cluster_list}' not found.</msg>
<var>${new_owner}</var>
<var>${new_successor_list}</var>
<arg>10s</arg>
<arg>1s</arg>
<arg>ClusterOpenFlow.Get OpenFlow Entity Owner Status For One Device</arg>
<arg>openflow:1</arg>
<arg>1</arg>
<arg>${new_cluster_list}</arg>
<arg>after_stop=True</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="FAIL" start="2026-04-08T00:59:10.151214" elapsed="10.187173">Keyword 'ClusterOpenFlow.Get OpenFlow Entity Owner Status For One Device' failed after retrying for 10 seconds. The last error was: Variable '${new_cluster_list}' not found.</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${owner_list}</var>
<arg>${original_owner}</arg>
<arg>${new_owner}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:20.338597" elapsed="0.000023"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<arg>${owner_list}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:20.338792" elapsed="0.000020"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<arg>${new_owner}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:20.338966" elapsed="0.000020"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<arg>${new_successor_list}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:20.339138" elapsed="0.000034"/>
</kw>
<doc>Check Entity Owner Status and identify owner and successor for first switch s1.</doc>
<status status="FAIL" start="2026-04-08T00:59:09.717141" elapsed="10.622180">Keyword 'ClusterOpenFlow.Get OpenFlow Entity Owner Status For One Device' failed after retrying for 10 seconds. The last error was: Variable '${new_cluster_list}' not found.</status>
</test>
<test id="s1-s4-t11" name="Check Switch Moves To New Master" line="101">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-08T00:59:20.342747" elapsed="0.000251"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-08T00:59:20.342478" elapsed="0.000576"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:59:20.344110" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:59:20.343971" elapsed="0.000202"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:20.343946" elapsed="0.000263"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:59:20.348998" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:59:20.348892" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:20.348874" elapsed="0.000192"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:59:20.350108" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:59:20.349696" elapsed="0.000439"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:59:20.350621" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:59:20.350320" elapsed="0.000327"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:59:20.350690" elapsed="0.000031"/>
</return>
<msg time="2026-04-08T00:59:20.350845" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:59:20.349314" elapsed="0.001556"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:59:20.356441" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:59:20.356333" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:20.356313" elapsed="0.000197"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:59:20.357682" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:59:20.357574" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:20.357556" elapsed="0.000213"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:59:20.358241" level="INFO">${karaf_connection_index} = 476</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:59:20.357921" elapsed="0.000347"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:59:20.358693" level="INFO">${current_connection_index} = 495</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:59:20.358434" elapsed="0.000285"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T00:59:20.548301" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T00:59:20.359242" elapsed="0.189254"/>
</kw>
<msg time="2026-04-08T00:59:20.548716" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T00:59:20.548767" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:59:20.358881" elapsed="0.189922"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T00:59:20.558382" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "S "w "i "t "c "h "[C "M "o "v "e "s "[C "T "o "[C "N "e "w "[C "M "a "s "t "e "r "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T00:59:20.549618" elapsed="0.008871"/>
</kw>
<msg time="2026-04-08T00:59:20.558651" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T00:59:20.558699" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "S "w "i "t "c "h...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:59:20.549125" elapsed="0.009610"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:20.559091" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:59:20.558830" elapsed="0.000317"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:20.558805" elapsed="0.000429"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:59:20.559700" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "S "w "i "t "c "h "[C "M "o "v "e "s "[C "T "o "[C "N "e "w "[C "M "a "s "t "e "r "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:59:20.559392" elapsed="0.000381"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:20.560070" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:59:20.559843" elapsed="0.000281"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:20.559824" elapsed="0.000323"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T00:59:20.560202" elapsed="0.000038"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:59:20.563012" elapsed="0.000222"/>
</kw>
<msg time="2026-04-08T00:59:20.563311" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:59:20.561765" elapsed="0.001689"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:20.563734" elapsed="0.000076"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:20.564067" elapsed="0.000074"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:59:20.561073" elapsed="0.003202"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T00:59:20.560517" elapsed="0.003822"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T00:59:20.357272" elapsed="0.207167"/>
</kw>
<msg time="2026-04-08T00:59:20.564535" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:59:20.564580" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "S "w "i "t "c "h...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:59:20.356663" elapsed="0.207955"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T00:59:20.564805" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-08T00:59:20.564697" elapsed="0.000167"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:20.564678" elapsed="0.000209"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:20.565340" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:20.565703" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T00:59:20.565775" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T00:59:20.355979" elapsed="0.209906"/>
</kw>
<msg time="2026-04-08T00:59:20.565980" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:59:20.566025" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "S "w "i "t "c "h...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:59:20.351253" elapsed="0.214809"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:20.566421" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:59:20.566138" elapsed="0.000338"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:20.566121" elapsed="0.000421"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T00:59:20.351094" elapsed="0.215477"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:59:20.572410" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:59:20.572298" elapsed="0.000157"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:20.572277" elapsed="0.000200"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:59:20.573681" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:59:20.573574" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:20.573556" elapsed="0.000192"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:59:20.574215" level="INFO">${karaf_connection_index} = 478</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:59:20.573895" elapsed="0.000347"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:59:20.574658" level="INFO">${current_connection_index} = 495</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:59:20.574405" elapsed="0.000279"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T00:59:20.608225" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T00:59:20.575205" elapsed="0.033123"/>
</kw>
<msg time="2026-04-08T00:59:20.608489" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T00:59:20.608536" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:59:20.574848" elapsed="0.033723"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T00:59:20.674910" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "S "w "i "t "c "h "[C "M "o "v "e "s "[C "T "o "[C "N "e "w "[C "M "a "s "t "e "r "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T00:59:20.609094" elapsed="0.065926"/>
</kw>
<msg time="2026-04-08T00:59:20.675202" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T00:59:20.675250" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "S "w "i "t "c "h...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:59:20.608749" elapsed="0.066537"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:20.675602" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:59:20.675367" elapsed="0.000291"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:20.675346" elapsed="0.000336"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:59:20.676131" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "S "w "i "t "c "h "[C "M "o "v "e "s "[C "T "o "[C "N "e "w "[C "M "a "s "t "e "r "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:59:20.675830" elapsed="0.000404"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:20.676535" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:59:20.676303" elapsed="0.000310"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:20.676285" elapsed="0.000352"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T00:59:20.676671" elapsed="0.000031"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:59:20.679254" elapsed="0.000184"/>
</kw>
<msg time="2026-04-08T00:59:20.679501" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:59:20.678173" elapsed="0.001460"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:20.679909" elapsed="0.000074"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:20.680293" elapsed="0.000076"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:59:20.677544" elapsed="0.002936"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T00:59:20.676953" elapsed="0.003591"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T00:59:20.573237" elapsed="0.107406"/>
</kw>
<msg time="2026-04-08T00:59:20.680740" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:59:20.680785" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "S "w "i "t "c "h...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:59:20.572629" elapsed="0.108244"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T00:59:20.681065" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-08T00:59:20.680955" elapsed="0.000169"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:20.680936" elapsed="0.000211"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 2,
close the previous connection. In any case create a new connection
to karaf console for 2, set correct prompt set and login to karaf console.
Store connection index for 2 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:20.681583" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:20.681921" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T00:59:20.681992" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T00:59:20.571851" elapsed="0.110250"/>
</kw>
<msg time="2026-04-08T00:59:20.682212" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:59:20.682259" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "S "w "i "t "c "h...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:59:20.566847" elapsed="0.115449"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:20.682628" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:59:20.682374" elapsed="0.000307"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:20.682356" elapsed="0.000348"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T00:59:20.566701" elapsed="0.116028"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:59:20.688373" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:59:20.688262" elapsed="0.000178"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:20.688243" elapsed="0.000246"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:59:20.689899" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:59:20.689787" elapsed="0.000158"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:20.689768" elapsed="0.000200"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:59:20.690442" level="INFO">${karaf_connection_index} = 480</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:59:20.690119" elapsed="0.000351"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:59:20.690885" level="INFO">${current_connection_index} = 495</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:59:20.690634" elapsed="0.000278"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T00:59:20.726685" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T00:59:20.691457" elapsed="0.035487"/>
</kw>
<msg time="2026-04-08T00:59:20.727198" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T00:59:20.727251" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:59:20.691077" elapsed="0.036211"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T00:59:20.769202" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "S "w "i "t "c "h "[C "M "o "v "e "s "[C "T "o "[C "N "e "w "[C "M "a "s "t "e "r "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T00:59:20.728000" elapsed="0.041324"/>
</kw>
<msg time="2026-04-08T00:59:20.769487" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T00:59:20.769533" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "S "w "i "t "c "h...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:59:20.727544" elapsed="0.042024"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:20.769940" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:59:20.769675" elapsed="0.000322"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:20.769645" elapsed="0.000379"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:59:20.770509" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "S "w "i "t "c "h "[C "M "o "v "e "s "[C "T "o "[C "N "e "w "[C "M "a "s "t "e "r "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:59:20.770195" elapsed="0.000483"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:20.770973" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:59:20.770748" elapsed="0.000278"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:20.770729" elapsed="0.000320"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T00:59:20.771086" elapsed="0.000045"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:59:20.773982" elapsed="0.000201"/>
</kw>
<msg time="2026-04-08T00:59:20.774247" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:59:20.772698" elapsed="0.001685"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:20.774661" elapsed="0.000076"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:20.775000" elapsed="0.000075"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:59:20.772023" elapsed="0.003182"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T00:59:20.771427" elapsed="0.003845"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T00:59:20.689444" elapsed="0.085931"/>
</kw>
<msg time="2026-04-08T00:59:20.775469" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:59:20.775514" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "S "w "i "t "c "h...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:59:20.688665" elapsed="0.086887"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T00:59:20.775739" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-08T00:59:20.775631" elapsed="0.000167"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:20.775612" elapsed="0.000210"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 3,
close the previous connection. In any case create a new connection
to karaf console for 3, set correct prompt set and login to karaf console.
Store connection index for 3 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:20.776239" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:20.776598" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T00:59:20.776672" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T00:59:20.687879" elapsed="0.088902"/>
</kw>
<msg time="2026-04-08T00:59:20.776877" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:59:20.776922" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "S "w "i "t "c "h...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:59:20.683002" elapsed="0.093959"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:20.777324" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:59:20.777040" elapsed="0.000339"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:20.777022" elapsed="0.000381"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T00:59:20.682856" elapsed="0.094571"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-08T00:59:20.350924" elapsed="0.426537"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-08T00:59:20.348535" elapsed="0.428984"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-08T00:59:20.343669" elapsed="0.433908"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:59:20.343224" elapsed="0.434400"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-08T00:59:20.340206" elapsed="0.437474"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:59:20.782243" level="FAIL">Variable '${new_owner}' not found.</msg>
<var>${new_master}</var>
<arg>${ODL_SYSTEM_${new_owner}_IP}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="FAIL" start="2026-04-08T00:59:20.777851" elapsed="0.004432">Variable '${new_owner}' not found.</status>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<arg>10s</arg>
<arg>1s</arg>
<arg>OvsManager.Should Be Master</arg>
<arg>s1</arg>
<arg>${new_master}</arg>
<arg>update_data=${True}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:20.782466" elapsed="0.000022"/>
</kw>
<doc>Check switch s1 is connected to new Master.</doc>
<status status="FAIL" start="2026-04-08T00:59:20.339663" elapsed="0.443019">Variable '${new_owner}' not found.</status>
</test>
<test id="s1-s4-t12" name="Check Linear Topology After Disconnect" line="112">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-08T00:59:20.786397" elapsed="0.000268"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-08T00:59:20.786112" elapsed="0.000611"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:59:20.787730" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:59:20.787620" elapsed="0.000156"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:20.787601" elapsed="0.000198"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:59:20.792585" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:59:20.792480" elapsed="0.000150"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:20.792462" elapsed="0.000288"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:59:20.793905" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:59:20.793417" elapsed="0.000520"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:59:20.794432" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:59:20.794105" elapsed="0.000352"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:59:20.794502" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:59:20.794657" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:59:20.792993" elapsed="0.001689"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:59:20.800250" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:59:20.800126" elapsed="0.000169"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:20.800107" elapsed="0.000210"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:59:20.801478" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:59:20.801372" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:20.801354" elapsed="0.000191"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:59:20.801994" level="INFO">${karaf_connection_index} = 476</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:59:20.801691" elapsed="0.000330"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:59:20.802452" level="INFO">${current_connection_index} = 495</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:59:20.802200" elapsed="0.000278"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T00:59:20.841515" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T00:59:20.802974" elapsed="0.038655"/>
</kw>
<msg time="2026-04-08T00:59:20.841795" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T00:59:20.841846" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:59:20.802641" elapsed="0.039252"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T00:59:20.900796" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "L "i "n "e "a "r "[C "T "o "p "o "l "o "g "y "[C "A "f "t "e "r "[C "D "i "s "c "o "n "n "e "c "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T00:59:20.842457" elapsed="0.058451"/>
</kw>
<msg time="2026-04-08T00:59:20.901085" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T00:59:20.901132" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "L "i "n "e "a "r...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:59:20.842078" elapsed="0.059110"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:20.901500" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:59:20.901270" elapsed="0.000285"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:20.901249" elapsed="0.000330"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:59:20.902019" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "L "i "n "e "a "r "[C "T "o "p "o "l "o "g "y "[C "A "f "t "e "r "[C "D "i "s "c "o "n "n "e "c "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:59:20.901723" elapsed="0.000412"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:20.902448" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:59:20.902226" elapsed="0.000277"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:20.902207" elapsed="0.000319"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T00:59:20.902558" elapsed="0.000029"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:59:20.905135" elapsed="0.000203"/>
</kw>
<msg time="2026-04-08T00:59:20.905399" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:59:20.903998" elapsed="0.001532"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:20.905806" elapsed="0.000075"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:20.906137" elapsed="0.000091"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:59:20.903385" elapsed="0.002953"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T00:59:20.902834" elapsed="0.003569"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T00:59:20.801023" elapsed="0.105477"/>
</kw>
<msg time="2026-04-08T00:59:20.906591" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:59:20.906635" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "L "i "n "e "a "r...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:59:20.800470" elapsed="0.106200"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T00:59:20.906852" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-08T00:59:20.906746" elapsed="0.000164"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:20.906728" elapsed="0.000205"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:20.907344" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:20.907674" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T00:59:20.907742" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T00:59:20.799786" elapsed="0.108061"/>
</kw>
<msg time="2026-04-08T00:59:20.907938" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:59:20.907981" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "L "i "n "e "a "r...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:59:20.795054" elapsed="0.112963"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:20.908355" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:59:20.908091" elapsed="0.000316"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:20.908075" elapsed="0.000355"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T00:59:20.794909" elapsed="0.113544"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:59:20.913935" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:59:20.913828" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:20.913809" elapsed="0.000193"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:59:20.915306" elapsed="0.000019"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:59:20.915060" elapsed="0.000300"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:20.915043" elapsed="0.000339"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:59:20.915825" level="INFO">${karaf_connection_index} = 478</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:59:20.915529" elapsed="0.000322"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:59:20.916272" level="INFO">${current_connection_index} = 495</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:59:20.916009" elapsed="0.000290"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T00:59:20.955701" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T00:59:20.916926" elapsed="0.038914"/>
</kw>
<msg time="2026-04-08T00:59:20.956003" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T00:59:20.956049" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:59:20.916587" elapsed="0.039498"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T00:59:21.001983" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "L "i "n "e "a "r "[C "T "o "p "o "l "o "g "y "[C "A "f "t "e "r "[C "D "i "s "c "o "n "n "e "c "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T00:59:20.956634" elapsed="0.045470"/>
</kw>
<msg time="2026-04-08T00:59:21.002288" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T00:59:21.002335" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "L "i "n "e "a "r...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:59:20.956288" elapsed="0.046083"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:21.002707" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:59:21.002460" elapsed="0.000304"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:21.002435" elapsed="0.000355"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:59:21.003296" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "L "i "n "e "a "r "[C "T "o "p "o "l "o "g "y "[C "A "f "t "e "r "[C "D "i "s "c "o "n "n "e "c "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:59:21.002934" elapsed="0.000452"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:21.003674" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:59:21.003454" elapsed="0.000274"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:21.003435" elapsed="0.000317"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T00:59:21.003785" elapsed="0.000033"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:59:21.006498" elapsed="0.000182"/>
</kw>
<msg time="2026-04-08T00:59:21.006742" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:59:21.005337" elapsed="0.001538"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:21.007151" elapsed="0.000108"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:21.007520" elapsed="0.000116"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:59:21.004675" elapsed="0.003080"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T00:59:21.004076" elapsed="0.003746"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T00:59:20.914737" elapsed="0.093187"/>
</kw>
<msg time="2026-04-08T00:59:21.008017" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:59:21.008061" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "L "i "n "e "a "r...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:59:20.914153" elapsed="0.093944"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T00:59:21.008310" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-08T00:59:21.008200" elapsed="0.000169"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:21.008179" elapsed="0.000214"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 2,
close the previous connection. In any case create a new connection
to karaf console for 2, set correct prompt set and login to karaf console.
Store connection index for 2 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:21.008800" elapsed="0.000044"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:21.009174" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T00:59:21.009248" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T00:59:20.913487" elapsed="0.095869"/>
</kw>
<msg time="2026-04-08T00:59:21.009452" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:59:21.009497" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "L "i "n "e "a "r...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:59:20.908710" elapsed="0.100871"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:21.009921" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:59:21.009665" elapsed="0.000309"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:21.009646" elapsed="0.000351"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T00:59:20.908571" elapsed="0.101450"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:59:21.015778" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:59:21.015671" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:21.015653" elapsed="0.000191"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:59:21.017029" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:59:21.016922" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:21.016905" elapsed="0.000192"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:59:21.017571" level="INFO">${karaf_connection_index} = 480</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:59:21.017272" elapsed="0.000326"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:59:21.018006" level="INFO">${current_connection_index} = 495</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:59:21.017758" elapsed="0.000274"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T00:59:21.056015" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T00:59:21.018545" elapsed="0.037748"/>
</kw>
<msg time="2026-04-08T00:59:21.056660" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T00:59:21.056786" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:59:21.018210" elapsed="0.038656"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T00:59:21.098551" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "L "i "n "e "a "r "[C "T "o "p "o "l "o "g "y "[C "A "f "t "e "r "[C "D "i "s "c "o "n "n "e "c "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T00:59:21.058068" elapsed="0.040605"/>
</kw>
<msg time="2026-04-08T00:59:21.098858" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T00:59:21.098920" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "L "i "n "e "a "r...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:59:21.057290" elapsed="0.041667"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:21.099313" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:59:21.099047" elapsed="0.000323"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:21.099024" elapsed="0.000370"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:59:21.099849" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "L "i "n "e "a "r "[C "T "o "p "o "l "o "g "y "[C "A "f "t "e "r "[C "D "i "s "c "o "n "n "e "c "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:59:21.099536" elapsed="0.000402"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:21.100241" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:59:21.100006" elapsed="0.000289"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:21.099988" elapsed="0.000330"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T00:59:21.100352" elapsed="0.000032"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:59:21.103068" elapsed="0.000201"/>
</kw>
<msg time="2026-04-08T00:59:21.103331" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:59:21.101871" elapsed="0.001594"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:21.103737" elapsed="0.000074"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:21.104069" elapsed="0.000072"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:59:21.101250" elapsed="0.003017"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T00:59:21.100636" elapsed="0.003742"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T00:59:21.016604" elapsed="0.087874"/>
</kw>
<msg time="2026-04-08T00:59:21.104570" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:59:21.104614" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "L "i "n "e "a "r...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:59:21.015995" elapsed="0.088655"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T00:59:21.104845" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-08T00:59:21.104737" elapsed="0.000165"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:21.104718" elapsed="0.000208"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 3,
close the previous connection. In any case create a new connection
to karaf console for 3, set correct prompt set and login to karaf console.
Store connection index for 3 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:21.105343" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:21.105677" elapsed="0.000023"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T00:59:21.105747" elapsed="0.000014"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T00:59:21.015330" elapsed="0.090522"/>
</kw>
<msg time="2026-04-08T00:59:21.105946" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:59:21.105991" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "L "i "n "e "a "r...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:59:21.010311" elapsed="0.095715"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:21.106373" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:59:21.106102" elapsed="0.000323"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:21.106085" elapsed="0.000363"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T00:59:21.010145" elapsed="0.096326"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-08T00:59:20.794736" elapsed="0.311766"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-08T00:59:20.792110" elapsed="0.314449"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-08T00:59:20.787326" elapsed="0.319291"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:59:20.786880" elapsed="0.319785"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-08T00:59:20.783937" elapsed="0.322784"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Check Linear Topology On Member" owner="ClusterOpenFlow">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:59:21.108853" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:59:21.108536" elapsed="0.000344"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:59:21.108925" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:59:21.109072" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:59:21.107969" elapsed="0.001128"/>
</kw>
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:59:21.121295" level="INFO">GET Request : url=http://10.30.170.48:8181/rests/data/network-topology:network-topology?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01s3bfo0y24i1es90l47mavglv0.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:59:21.121796" level="INFO">GET Response : url=http://10.30.170.48:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '2973'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}} 
 </msg>
<msg time="2026-04-08T00:59:21.122198" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${RFC8040_OPERATIONAL_TOPO_API}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:59:21.109307" elapsed="0.012954"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:59:21.128248" level="INFO">{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}}</msg>
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:59:21.122673" elapsed="0.005726"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"node-id":"openflow:${switch}"</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-08T00:59:21.133762" elapsed="0.002532"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-08T00:59:21.136476" elapsed="0.002513"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-08T00:59:21.139201" elapsed="0.002525"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-08T00:59:21.141920" elapsed="0.002530"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-08T00:59:21.144631" elapsed="0.002585"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:59:21.147836" level="INFO">${edge} = True</msg>
<var>${edge}</var>
<arg>${switch}==1 or ${switch}==${switches}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:59:21.147401" elapsed="0.000462"/>
</kw>
<if>
<branch type="IF" condition="not ${edge}">
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:3"</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:21.148177" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:59:21.147934" elapsed="0.000301"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:21.147915" elapsed="0.000344"/>
</if>
<if>
<branch type="IF" condition="not ${edge}">
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:3"</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:21.148537" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:59:21.148314" elapsed="0.000278"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:21.148298" elapsed="0.000317"/>
</if>
<if>
<branch type="IF" condition="not ${edge}">
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:3</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:21.148898" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:59:21.148678" elapsed="0.000274"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:21.148662" elapsed="0.000313"/>
</if>
<var name="${switch}">1</var>
<status status="PASS" start="2026-04-08T00:59:21.133598" elapsed="0.015399"/>
</iter>
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"node-id":"openflow:${switch}"</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-08T00:59:21.149367" elapsed="0.002564"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-08T00:59:21.152109" elapsed="0.002523"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-08T00:59:21.154809" elapsed="0.002539"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-08T00:59:21.157527" elapsed="0.002469"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-08T00:59:21.160189" elapsed="0.002517"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:59:21.163397" level="INFO">${edge} = False</msg>
<var>${edge}</var>
<arg>${switch}==1 or ${switch}==${switches}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:59:21.162944" elapsed="0.000480"/>
</kw>
<if>
<branch type="IF" condition="not ${edge}">
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:3"</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-08T00:59:21.163723" elapsed="0.002501"/>
</kw>
<status status="PASS" start="2026-04-08T00:59:21.163494" elapsed="0.002771"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:21.163476" elapsed="0.002813"/>
</if>
<if>
<branch type="IF" condition="not ${edge}">
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:3"</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-08T00:59:21.166577" elapsed="0.003690"/>
</kw>
<status status="PASS" start="2026-04-08T00:59:21.166345" elapsed="0.003964"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:21.166329" elapsed="0.004005"/>
</if>
<if>
<branch type="IF" condition="not ${edge}">
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:3</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-08T00:59:21.170622" elapsed="0.002495"/>
</kw>
<status status="PASS" start="2026-04-08T00:59:21.170389" elapsed="0.002783"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:21.170373" elapsed="0.002825"/>
</if>
<var name="${switch}">2</var>
<status status="PASS" start="2026-04-08T00:59:21.149218" elapsed="0.024004"/>
</iter>
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"node-id":"openflow:${switch}"</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-08T00:59:21.173579" elapsed="0.002479"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-08T00:59:21.176253" elapsed="0.002489"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-08T00:59:21.178921" elapsed="0.002555"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-08T00:59:21.181660" elapsed="0.002477"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-08T00:59:21.184335" elapsed="0.002481"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:59:21.187441" level="INFO">${edge} = True</msg>
<var>${edge}</var>
<arg>${switch}==1 or ${switch}==${switches}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:59:21.186993" elapsed="0.000474"/>
</kw>
<if>
<branch type="IF" condition="not ${edge}">
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:3"</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:21.187767" elapsed="0.000027"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:59:21.187537" elapsed="0.000314"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:21.187519" elapsed="0.000359"/>
</if>
<if>
<branch type="IF" condition="not ${edge}">
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:3"</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:21.188187" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:59:21.187937" elapsed="0.000307"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:21.187920" elapsed="0.000348"/>
</if>
<if>
<branch type="IF" condition="not ${edge}">
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:3</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:21.188659" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:59:21.188322" elapsed="0.000401"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:21.188307" elapsed="0.000448"/>
</if>
<var name="${switch}">3</var>
<status status="PASS" start="2026-04-08T00:59:21.173424" elapsed="0.015360"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="PASS" start="2026-04-08T00:59:21.128515" elapsed="0.060299"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check Linear topology.</doc>
<status status="PASS" start="2026-04-08T00:59:21.107590" elapsed="0.081287"/>
</kw>
<arg>30s</arg>
<arg>1s</arg>
<arg>ClusterOpenFlow.Check Linear Topology On Member</arg>
<arg>${SWITCHES}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-08T00:59:21.106898" elapsed="0.082044"/>
</kw>
<doc>Check Linear Topology.</doc>
<status status="PASS" start="2026-04-08T00:59:20.783323" elapsed="0.405741"/>
</test>
<test id="s1-s4-t13" name="Check Stats Are Not Frozen After Disconnect" line="116">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-08T00:59:21.192448" elapsed="0.000230"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-08T00:59:21.192185" elapsed="0.000547"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:59:21.193802" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:59:21.193670" elapsed="0.000187"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:21.193648" elapsed="0.000236"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:59:21.199279" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:59:21.199149" elapsed="0.000176"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:21.199131" elapsed="0.000216"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:59:21.200348" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:59:21.199951" elapsed="0.000424"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:59:21.200981" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:59:21.200536" elapsed="0.000476"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:59:21.201122" elapsed="0.000050"/>
</return>
<msg time="2026-04-08T00:59:21.201304" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:59:21.199574" elapsed="0.001754"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:59:21.207125" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:59:21.207017" elapsed="0.000175"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:21.206998" elapsed="0.000217"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:59:21.208385" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:59:21.208276" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:21.208258" elapsed="0.000194"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:59:21.208915" level="INFO">${karaf_connection_index} = 476</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:59:21.208618" elapsed="0.000323"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:59:21.209373" level="INFO">${current_connection_index} = 495</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:59:21.209102" elapsed="0.000297"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T00:59:21.251739" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T00:59:21.209900" elapsed="0.041937"/>
</kw>
<msg time="2026-04-08T00:59:21.251997" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T00:59:21.252043" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:59:21.209562" elapsed="0.042516"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T00:59:21.303635" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "S "t "a "t "s "[C "A "r "e "[C "N "o "t "[C "F "r "o "z "e "n "[C "A "f "t "e "r "[C "D "i "s "c "o "n "n "e "c "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T00:59:21.252664" elapsed="0.051082"/>
</kw>
<msg time="2026-04-08T00:59:21.303903" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T00:59:21.303949" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "S "t "a "t "s "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:59:21.252276" elapsed="0.051708"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:21.304315" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:59:21.304063" elapsed="0.000308"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:21.304042" elapsed="0.000354"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:59:21.304857" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "S "t "a "t "s "[C "A "r "e "[C "N "o "t "[C "F "r "o "z "e "n "[C "A "f "t "e "r "[C "D "i "s "c "o "n "n "e "c "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:59:21.304556" elapsed="0.000374"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:21.305235" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:59:21.304997" elapsed="0.000293"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:21.304979" elapsed="0.000334"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T00:59:21.305345" elapsed="0.000029"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:59:21.307965" elapsed="0.000181"/>
</kw>
<msg time="2026-04-08T00:59:21.308223" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:59:21.306811" elapsed="0.001545"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:21.308650" elapsed="0.000076"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:21.308981" elapsed="0.000073"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:59:21.306173" elapsed="0.003011"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T00:59:21.305623" elapsed="0.003629"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T00:59:21.207950" elapsed="0.101438"/>
</kw>
<msg time="2026-04-08T00:59:21.309479" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:59:21.309523" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "S "t "a "t "s "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:59:21.207372" elapsed="0.102186"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T00:59:21.309740" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-08T00:59:21.309634" elapsed="0.000165"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:21.309616" elapsed="0.000206"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:21.310229" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:21.310565" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T00:59:21.310636" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T00:59:21.206678" elapsed="0.104063"/>
</kw>
<msg time="2026-04-08T00:59:21.310833" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:59:21.310877" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "S "t "a "t "s "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:59:21.201796" elapsed="0.109117"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:21.311253" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:59:21.310988" elapsed="0.000320"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:21.310972" elapsed="0.000359"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T00:59:21.201546" elapsed="0.109808"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:59:21.316979" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:59:21.316870" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:21.316851" elapsed="0.000195"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:59:21.318287" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:59:21.318175" elapsed="0.000158"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:21.318136" elapsed="0.000219"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:59:21.318795" level="INFO">${karaf_connection_index} = 478</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:59:21.318499" elapsed="0.000322"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:59:21.319246" level="INFO">${current_connection_index} = 495</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:59:21.318980" elapsed="0.000294"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T00:59:21.355912" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T00:59:21.319791" elapsed="0.036224"/>
</kw>
<msg time="2026-04-08T00:59:21.356194" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T00:59:21.356243" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:59:21.319451" elapsed="0.036828"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T00:59:21.404722" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "S "t "a "t "s "[C "A "r "e "[C "N "o "t "[C "F "r "o "z "e "n "[C "A "f "t "e "r "[C "D "i "s "c "o "n "n "e "c "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T00:59:21.356830" elapsed="0.048006"/>
</kw>
<msg time="2026-04-08T00:59:21.404996" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T00:59:21.405043" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "S "t "a "t "s "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:59:21.356479" elapsed="0.048599"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:21.405465" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:59:21.405186" elapsed="0.000336"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:21.405138" elapsed="0.000409"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:59:21.405991" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "S "t "a "t "s "[C "A "r "e "[C "N "o "t "[C "F "r "o "z "e "n "[C "A "f "t "e "r "[C "D "i "s "c "o "n "n "e "c "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:59:21.405691" elapsed="0.000375"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:21.406372" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:59:21.406133" elapsed="0.000294"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:21.406115" elapsed="0.000335"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T00:59:21.406482" elapsed="0.000030"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:59:21.409088" elapsed="0.000207"/>
</kw>
<msg time="2026-04-08T00:59:21.409357" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:59:21.407928" elapsed="0.001559"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:21.409766" elapsed="0.000075"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:21.410099" elapsed="0.000092"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:59:21.407315" elapsed="0.002988"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T00:59:21.406756" elapsed="0.003612"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T00:59:21.317853" elapsed="0.092613"/>
</kw>
<msg time="2026-04-08T00:59:21.410556" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:59:21.410600" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "S "t "a "t "s "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:59:21.317299" elapsed="0.093338"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T00:59:21.410821" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-08T00:59:21.410713" elapsed="0.000165"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:21.410694" elapsed="0.000207"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 2,
close the previous connection. In any case create a new connection
to karaf console for 2, set correct prompt set and login to karaf console.
Store connection index for 2 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:21.411309" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:21.411638" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T00:59:21.411709" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T00:59:21.316525" elapsed="0.095289"/>
</kw>
<msg time="2026-04-08T00:59:21.411906" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:59:21.411949" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "S "t "a "t "s "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:59:21.311621" elapsed="0.100363"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:21.412346" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:59:21.412058" elapsed="0.000345"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:21.412041" elapsed="0.000385"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T00:59:21.311476" elapsed="0.100973"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:59:21.418069" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:59:21.417952" elapsed="0.000164"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:21.417928" elapsed="0.000210"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:59:21.419293" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:59:21.419183" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:21.419144" elapsed="0.000216"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:59:21.419797" level="INFO">${karaf_connection_index} = 480</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:59:21.419504" elapsed="0.000369"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:59:21.420320" level="INFO">${current_connection_index} = 495</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:59:21.420039" elapsed="0.000308"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T00:59:21.474489" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T00:59:21.420846" elapsed="0.053757"/>
</kw>
<msg time="2026-04-08T00:59:21.474786" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T00:59:21.474832" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:59:21.420509" elapsed="0.054359"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T00:59:21.525353" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "S "t "a "t "s "[C "A "r "e "[C "N "o "t "[C "F "r "o "z "e "n "[C "A "f "t "e "r "[C "D "i "s "c "o "n "n "e "c "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T00:59:21.475418" elapsed="0.050049"/>
</kw>
<msg time="2026-04-08T00:59:21.525626" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T00:59:21.525672" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "S "t "a "t "s "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:59:21.475045" elapsed="0.050663"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:21.526025" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:59:21.525792" elapsed="0.000288"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:21.525770" elapsed="0.000335"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:59:21.526576" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "S "t "a "t "s "[C "A "r "e "[C "N "o "t "[C "F "r "o "z "e "n "[C "A "f "t "e "r "[C "D "i "s "c "o "n "n "e "c "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:59:21.526275" elapsed="0.000376"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:21.526936" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:59:21.526717" elapsed="0.000274"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:21.526699" elapsed="0.000315"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T00:59:21.527047" elapsed="0.000029"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:59:21.529661" elapsed="0.000182"/>
</kw>
<msg time="2026-04-08T00:59:21.529903" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:59:21.528557" elapsed="0.001476"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:21.530323" elapsed="0.000076"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:21.530653" elapsed="0.000072"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:59:21.527880" elapsed="0.002952"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T00:59:21.527342" elapsed="0.003555"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T00:59:21.418861" elapsed="0.112133"/>
</kw>
<msg time="2026-04-08T00:59:21.531085" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:59:21.531129" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "S "t "a "t "s "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:59:21.418309" elapsed="0.112875"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T00:59:21.531371" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-08T00:59:21.531264" elapsed="0.000164"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:21.531245" elapsed="0.000206"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 3,
close the previous connection. In any case create a new connection
to karaf console for 3, set correct prompt set and login to karaf console.
Store connection index for 3 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:21.531836" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:21.532273" elapsed="0.000027"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T00:59:21.532348" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T00:59:21.417508" elapsed="0.114949"/>
</kw>
<msg time="2026-04-08T00:59:21.532549" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:59:21.532593" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "S "t "a "t "s "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:59:21.412713" elapsed="0.119915"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:21.532954" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:59:21.532704" elapsed="0.000303"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:21.532686" elapsed="0.000345"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T00:59:21.412570" elapsed="0.120484"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-08T00:59:21.201380" elapsed="0.331705"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-08T00:59:21.198788" elapsed="0.334355"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-08T00:59:21.193322" elapsed="0.339912"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:59:21.192883" elapsed="0.340398"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-08T00:59:21.189908" elapsed="0.343428"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Check Flow Stats Are Not Frozen">
<kw name="Extract Flow Duration">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:59:21.535549" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:59:21.535248" elapsed="0.000327"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:59:21.535621" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:59:21.535766" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:59:21.534676" elapsed="0.001115"/>
</kw>
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:59:21.543844" level="INFO">GET Request : url=http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0/flow=1?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0/flow=1?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node01s3bfo0y24i1es90l47mavglv0.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:59:21.544325" level="INFO">GET Response : url=http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0/flow=1?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '487'} 
 body={"flow-node-inventory:flow":[{"id":"1","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.1/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":1}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":49,"nanosecond":115000000}},"flags":""}]} 
 </msg>
<msg time="2026-04-08T00:59:21.544425" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${RFC8040_NODES_API}/node=openflow%3A1/flow-node-inventory:table=0/flow=1?content=nonconfig</arg>
<arg>headers=${headers}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:59:21.535945" elapsed="0.008506"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:59:21.547000" level="INFO">{"flow-node-inventory:flow":[{"id":"1","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.1/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":1}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":49,"nanosecond":115000000}},"flags":""}]}</msg>
<arg>${resp.content}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:59:21.544636" elapsed="0.002440"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:59:21.550148" level="INFO">${json_data} = {'flow-node-inventory:flow': [{'id': '1', 'table_id': 0, 'priority': 100, 'cookie_mask': '0', 'idle-timeout': 0, 'match': {'ethernet-match': {'ethernet-type': {'type': 2048}}, 'ipv4-destination': '10....</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:59:21.549724" elapsed="0.000470"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-08T00:59:21.550243" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:59:21.550413" level="INFO">${json_resp} = {'flow-node-inventory:flow': [{'id': '1', 'table_id': 0, 'priority': 100, 'cookie_mask': '0', 'idle-timeout': 0, 'match': {'ethernet-match': {'ethernet-type': {'type': 2048}}, 'ipv4-destination': '10....</msg>
<var>${json_resp}</var>
<arg>${resp.content}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-08T00:59:21.547307" elapsed="0.003133"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:59:21.550838" level="INFO">${flow_list} = [{'id': '1', 'table_id': 0, 'priority': 100, 'cookie_mask': '0', 'idle-timeout': 0, 'match': {'ethernet-match': {'ethernet-type': {'type': 2048}}, 'ipv4-destination': '10.0.10.1/32'}, 'cookie': '0', '...</msg>
<var>${flow_list}</var>
<arg>${json_resp}</arg>
<arg>flow-node-inventory:flow</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:59:21.550639" elapsed="0.000226"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:59:21.551250" level="INFO">${flow_stats} = {'packet-count': '0', 'byte-count': '0', 'duration': {'second': 49, 'nanosecond': 115000000}}</msg>
<var>${flow_stats}</var>
<arg>${flow_list}[0]</arg>
<arg>opendaylight-flow-statistics:flow-statistics</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:59:21.551024" elapsed="0.000254"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:59:21.551618" level="INFO">${duration} = 49</msg>
<var>${duration}</var>
<arg>${flow_stats}[duration]</arg>
<arg>second</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:59:21.551435" elapsed="0.000209"/>
</kw>
<return>
<value>${duration}</value>
<status status="PASS" start="2026-04-08T00:59:21.551690" elapsed="0.000027"/>
</return>
<msg time="2026-04-08T00:59:21.551837" level="INFO">${duration_1} = 49</msg>
<var>${duration_1}</var>
<arg>${member_index}</arg>
<doc>Extract duration for flow 1 in switch 1.</doc>
<status status="PASS" start="2026-04-08T00:59:21.534332" elapsed="0.017530"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:59:21.552366" level="INFO">${duration_1} = 49</msg>
<var>${duration_1}</var>
<arg>${duration_1}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:59:21.552018" elapsed="0.000374"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-08T00:59:26.552985" level="INFO">Slept 5 seconds.</msg>
<arg>${period_in_seconds}</arg>
<doc>Pauses the test executed for the given time.</doc>
<status status="PASS" start="2026-04-08T00:59:21.552547" elapsed="5.000688"/>
</kw>
<kw name="Extract Flow Duration">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:59:26.556531" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:59:26.555737" elapsed="0.000867"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:59:26.556723" elapsed="0.000085"/>
</return>
<msg time="2026-04-08T00:59:26.557089" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:59:26.554825" elapsed="0.002322"/>
</kw>
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:59:26.571605" level="INFO">GET Request : url=http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0/flow=1?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0/flow=1?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node01s3bfo0y24i1es90l47mavglv0.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:59:26.572584" level="INFO">GET Response : url=http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0/flow=1?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '487'} 
 body={"flow-node-inventory:flow":[{"id":"1","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.1/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":1}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":204000000}},"flags":""}]} 
 </msg>
<msg time="2026-04-08T00:59:26.572813" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${RFC8040_NODES_API}/node=openflow%3A1/flow-node-inventory:table=0/flow=1?content=nonconfig</arg>
<arg>headers=${headers}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:59:26.557543" elapsed="0.015332"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:59:26.579592" level="INFO">{"flow-node-inventory:flow":[{"id":"1","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.1/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":1}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":204000000}},"flags":""}]}</msg>
<arg>${resp.content}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:59:26.573361" elapsed="0.006346"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:59:26.584891" level="INFO">${json_data} = {'flow-node-inventory:flow': [{'id': '1', 'table_id': 0, 'priority': 100, 'cookie_mask': '0', 'idle-timeout': 0, 'match': {'ethernet-match': {'ethernet-type': {'type': 2048}}, 'ipv4-destination': '10....</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:59:26.584445" elapsed="0.000477"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-08T00:59:26.584971" elapsed="0.000031"/>
</return>
<msg time="2026-04-08T00:59:26.585144" level="INFO">${json_resp} = {'flow-node-inventory:flow': [{'id': '1', 'table_id': 0, 'priority': 100, 'cookie_mask': '0', 'idle-timeout': 0, 'match': {'ethernet-match': {'ethernet-type': {'type': 2048}}, 'ipv4-destination': '10....</msg>
<var>${json_resp}</var>
<arg>${resp.content}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-08T00:59:26.580227" elapsed="0.004959"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:59:26.585561" level="INFO">${flow_list} = [{'id': '1', 'table_id': 0, 'priority': 100, 'cookie_mask': '0', 'idle-timeout': 0, 'match': {'ethernet-match': {'ethernet-type': {'type': 2048}}, 'ipv4-destination': '10.0.10.1/32'}, 'cookie': '0', '...</msg>
<var>${flow_list}</var>
<arg>${json_resp}</arg>
<arg>flow-node-inventory:flow</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:59:26.585356" elapsed="0.000234"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:59:26.585936" level="INFO">${flow_stats} = {'packet-count': '0', 'byte-count': '0', 'duration': {'second': 55, 'nanosecond': 204000000}}</msg>
<var>${flow_stats}</var>
<arg>${flow_list}[0]</arg>
<arg>opendaylight-flow-statistics:flow-statistics</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:59:26.585746" elapsed="0.000216"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:59:26.586388" level="INFO">${duration} = 55</msg>
<var>${duration}</var>
<arg>${flow_stats}[duration]</arg>
<arg>second</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:59:26.586202" elapsed="0.000212"/>
</kw>
<return>
<value>${duration}</value>
<status status="PASS" start="2026-04-08T00:59:26.586460" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T00:59:26.586609" level="INFO">${duration_2} = 55</msg>
<var>${duration_2}</var>
<arg>${member_index}</arg>
<doc>Extract duration for flow 1 in switch 1.</doc>
<status status="PASS" start="2026-04-08T00:59:26.553786" elapsed="0.032848"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:59:26.587121" level="INFO">${duration_2} = 55</msg>
<var>${duration_2}</var>
<arg>${duration_2}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:59:26.586806" elapsed="0.000341"/>
</kw>
<kw name="Should Not Be Equal As Integers" owner="BuiltIn">
<arg>${duration_1}</arg>
<arg>${duration_2}</arg>
<doc>Fails if objects are equal after converting them to integers.</doc>
<status status="PASS" start="2026-04-08T00:59:26.587347" elapsed="0.000310"/>
</kw>
<doc>Verify flow stats are not frozen for flow 1 and switch 1.</doc>
<status status="PASS" start="2026-04-08T00:59:21.533989" elapsed="5.053728"/>
</kw>
<arg>30s</arg>
<arg>1s</arg>
<arg>Check Flow Stats Are Not Frozen</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-08T00:59:21.533514" elapsed="5.054248"/>
</kw>
<doc>Check that duration flow stat is increasing</doc>
<status status="PASS" start="2026-04-08T00:59:21.189404" elapsed="5.398478"/>
</test>
<test id="s1-s4-t14" name="Remove Flows And Groups After Mininet Is Disconnected" line="120">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-08T00:59:26.591311" elapsed="0.000227"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-08T00:59:26.591020" elapsed="0.000574"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:59:26.592642" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:59:26.592523" elapsed="0.000165"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:26.592502" elapsed="0.000210"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:59:26.597867" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:59:26.597732" elapsed="0.000191"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:26.597708" elapsed="0.000243"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:59:26.599171" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:59:26.598689" elapsed="0.000512"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:59:26.599734" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:59:26.599370" elapsed="0.000407"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:59:26.599835" elapsed="0.000037"/>
</return>
<msg time="2026-04-08T00:59:26.600004" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:59:26.598272" elapsed="0.001758"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:59:26.605831" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:59:26.605719" elapsed="0.000158"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:26.605698" elapsed="0.000202"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:59:26.607152" elapsed="0.000037"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:59:26.607041" elapsed="0.000181"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:26.607023" elapsed="0.000223"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:59:26.607729" level="INFO">${karaf_connection_index} = 476</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:59:26.607394" elapsed="0.000366"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:59:26.608248" level="INFO">${current_connection_index} = 495</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:59:26.607928" elapsed="0.000368"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T00:59:26.647963" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T00:59:26.608839" elapsed="0.039222"/>
</kw>
<msg time="2026-04-08T00:59:26.648248" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T00:59:26.648295" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:59:26.608493" elapsed="0.039838"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T00:59:26.712090" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "R "e "m "o "v "e "[C "F "l "o "w "s "[C "A "n "d "[C "G "r "o "u "p "s "[C "A "f "t "e "r "[C "M "i "n "i "n "e "t "[C "I "s "[C "D "i "s "c "o "n "n "e "c "t "[78Ce "[A[78Cd
 "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T00:59:26.648872" elapsed="0.063428"/>
</kw>
<msg time="2026-04-08T00:59:26.712474" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T00:59:26.712521" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "R "e "m "o "v "e "[C "F "l "o "w "s...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:59:26.648506" elapsed="0.064050"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:26.712901" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:59:26.712645" elapsed="0.000313"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:26.712621" elapsed="0.000363"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:59:26.713471" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "R "e "m "o "v "e "[C "F "l "o "w "s "[C "A "n "d "[C "G "r "o "u "p "s "[C "A "f "t "e "r "[C "M "i "n "i "n "e "t "[C "I "s "[C "D "i "s "c "o "n "n "e "c "t "[78Ce "[A[78Cd
 "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:59:26.713129" elapsed="0.000419"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:26.713838" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:59:26.713616" elapsed="0.000276"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:26.713597" elapsed="0.000319"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T00:59:26.713948" elapsed="0.000035"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:59:26.716577" elapsed="0.000184"/>
</kw>
<msg time="2026-04-08T00:59:26.716823" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:59:26.715501" elapsed="0.001457"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:26.717248" elapsed="0.000075"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:26.717581" elapsed="0.000073"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:59:26.714856" elapsed="0.002908"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T00:59:26.714271" elapsed="0.003557"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T00:59:26.606721" elapsed="0.111204"/>
</kw>
<msg time="2026-04-08T00:59:26.718018" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:59:26.718061" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "R "e "m "o "v "e "[C "F "l "o "w "s...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:59:26.606054" elapsed="0.112042"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T00:59:26.718302" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-08T00:59:26.718194" elapsed="0.000167"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:26.718174" elapsed="0.000211"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:26.718802" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:26.719141" elapsed="0.000039"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T00:59:26.719228" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T00:59:26.605332" elapsed="0.114003"/>
</kw>
<msg time="2026-04-08T00:59:26.719428" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:59:26.719472" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "R "e "m "o "v "e "[C "F "l "o "w "s...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:59:26.600430" elapsed="0.119078"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:26.719836" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:59:26.719583" elapsed="0.000306"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:26.719566" elapsed="0.000346"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T00:59:26.600282" elapsed="0.119653"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:59:26.725495" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:59:26.725351" elapsed="0.000192"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:26.725332" elapsed="0.000234"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:59:26.726848" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:59:26.726738" elapsed="0.000156"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:26.726719" elapsed="0.000197"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:59:26.727378" level="INFO">${karaf_connection_index} = 478</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:59:26.727064" elapsed="0.000342"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:59:26.727817" level="INFO">${current_connection_index} = 495</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:59:26.727567" elapsed="0.000277"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T00:59:26.773173" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T00:59:26.728360" elapsed="0.044987"/>
</kw>
<msg time="2026-04-08T00:59:26.773556" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T00:59:26.773603" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:59:26.728007" elapsed="0.045631"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T00:59:26.833513" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "R "e "m "o "v "e "[C "F "l "o "w "s "[C "A "n "d "[C "G "r "o "u "p "s "[C "A "f "t "e "r "[C "M "i "n "i "n "e "t "[C "I "s "[C "D "i "s "c "o "n "n "e "c "t "[78Ce "[A[78Cd
 "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T00:59:26.774318" elapsed="0.059318"/>
</kw>
<msg time="2026-04-08T00:59:26.833794" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T00:59:26.833842" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "R "e "m "o "v "e "[C "F "l "o "w "s...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:59:26.773878" elapsed="0.059999"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:26.834253" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:59:26.833972" elapsed="0.000337"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:26.833946" elapsed="0.000389"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:59:26.834820" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "R "e "m "o "v "e "[C "F "l "o "w "s "[C "A "n "d "[C "G "r "o "u "p "s "[C "A "f "t "e "r "[C "M "i "n "i "n "e "t "[C "I "s "[C "D "i "s "c "o "n "n "e "c "t "[78Ce "[A[78Cd
 "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:59:26.834485" elapsed="0.000430"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:26.835225" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:59:26.834986" elapsed="0.000294"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:26.834967" elapsed="0.000336"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T00:59:26.835339" elapsed="0.000040"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:59:26.837979" elapsed="0.000200"/>
</kw>
<msg time="2026-04-08T00:59:26.838241" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:59:26.836872" elapsed="0.001502"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:26.838667" elapsed="0.000077"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:26.838998" elapsed="0.000073"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:59:26.836229" elapsed="0.002971"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T00:59:26.835657" elapsed="0.003609"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T00:59:26.726386" elapsed="0.112979"/>
</kw>
<msg time="2026-04-08T00:59:26.839461" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:59:26.839506" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "R "e "m "o "v "e "[C "F "l "o "w "s...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:59:26.725718" elapsed="0.113825"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T00:59:26.839780" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-08T00:59:26.839672" elapsed="0.000166"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:26.839653" elapsed="0.000209"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 2,
close the previous connection. In any case create a new connection
to karaf console for 2, set correct prompt set and login to karaf console.
Store connection index for 2 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:26.840275" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:26.840762" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T00:59:26.840832" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T00:59:26.724994" elapsed="0.115947"/>
</kw>
<msg time="2026-04-08T00:59:26.841037" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:59:26.841083" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "R "e "m "o "v "e "[C "F "l "o "w "s...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:59:26.720221" elapsed="0.120898"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:26.841470" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:59:26.841211" elapsed="0.000312"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:26.841193" elapsed="0.000353"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T00:59:26.720063" elapsed="0.121508"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:59:26.847131" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:59:26.847022" elapsed="0.000254"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:26.847002" elapsed="0.000298"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:59:26.848461" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:59:26.848352" elapsed="0.000156"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:26.848334" elapsed="0.000196"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:59:26.848975" level="INFO">${karaf_connection_index} = 480</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:59:26.848678" elapsed="0.000324"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:59:26.849432" level="INFO">${current_connection_index} = 495</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:59:26.849181" elapsed="0.000277"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T00:59:26.884637" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T00:59:26.849961" elapsed="0.034778"/>
</kw>
<msg time="2026-04-08T00:59:26.884921" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T00:59:26.884970" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:59:26.849620" elapsed="0.035386"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T00:59:26.944903" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "R "e "m "o "v "e "[C "F "l "o "w "s "[C "A "n "d "[C "G "r "o "u "p "s "[C "A "f "t "e "r "[C "M "i "n "i "n "e "t "[C "I "s "[C "D "i "s "c "o "n "n "e "c "t "[78Ce "[A[78Cd
 "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T00:59:26.885565" elapsed="0.059453"/>
</kw>
<msg time="2026-04-08T00:59:26.945193" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T00:59:26.945241" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "R "e "m "o "v "e "[C "F "l "o "w "s...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:59:26.885206" elapsed="0.060070"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:26.945584" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:59:26.945356" elapsed="0.000282"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:26.945335" elapsed="0.000327"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:59:26.946104" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "R "e "m "o "v "e "[C "F "l "o "w "s "[C "A "n "d "[C "G "r "o "u "p "s "[C "A "f "t "e "r "[C "M "i "n "i "n "e "t "[C "I "s "[C "D "i "s "c "o "n "n "e "c "t "[78Ce "[A[78Cd
 "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:59:26.945807" elapsed="0.000392"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:26.946569" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:59:26.946310" elapsed="0.000314"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:26.946291" elapsed="0.000357"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T00:59:26.946680" elapsed="0.000030"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:59:26.949170" elapsed="0.000182"/>
</kw>
<msg time="2026-04-08T00:59:26.949413" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:59:26.948115" elapsed="0.001426"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:26.949813" elapsed="0.000073"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:26.950138" elapsed="0.000094"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:59:26.947513" elapsed="0.002829"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T00:59:26.946957" elapsed="0.003465"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T00:59:26.848026" elapsed="0.102501"/>
</kw>
<msg time="2026-04-08T00:59:26.950619" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:59:26.950663" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "R "e "m "o "v "e "[C "F "l "o "w "s...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:59:26.847462" elapsed="0.103236"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T00:59:26.950882" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-08T00:59:26.950775" elapsed="0.000165"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:26.950756" elapsed="0.000207"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 3,
close the previous connection. In any case create a new connection
to karaf console for 3, set correct prompt set and login to karaf console.
Store connection index for 3 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:26.951363" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:26.951691" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T00:59:26.951761" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T00:59:26.846674" elapsed="0.105191"/>
</kw>
<msg time="2026-04-08T00:59:26.951958" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:59:26.952001" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "R "e "m "o "v "e "[C "F "l "o "w "s...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:59:26.841843" elapsed="0.110193"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:26.952376" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:59:26.952111" elapsed="0.000318"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:26.952094" elapsed="0.000357"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T00:59:26.841698" elapsed="0.110777"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-08T00:59:26.600087" elapsed="0.352417"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-08T00:59:26.597254" elapsed="0.355305"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-08T00:59:26.592213" elapsed="0.360403"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:59:26.591752" elapsed="0.360910"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-08T00:59:26.588778" elapsed="0.363938"/>
</kw>
<kw name="Remove Single Group And Flow On Member">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:59:26.953900" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:59:26.953603" elapsed="0.000323"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:59:26.953970" elapsed="0.000027"/>
</return>
<msg time="2026-04-08T00:59:26.954113" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:59:26.953248" elapsed="0.000889"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="DELETE On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:59:26.968821" level="INFO">DELETE Request : url=http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0/flow=1 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0/flow=1 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01s3bfo0y24i1es90l47mavglv0.node0', 'Content-Length': '0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:59:26.968880" level="INFO">DELETE Response : url=http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0/flow=1 
 status=204, reason=No Content 
 headers={} 
 body=None 
 </msg>
<arg>${session}</arg>
<arg>url=${RFC8040_NODES_API}/node=openflow%3A${switch}/flow-node-inventory:table=0/flow=1</arg>
<doc>Sends a DELETE request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:59:26.956963" elapsed="0.011978"/>
</kw>
<kw name="DELETE On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:59:26.980176" level="INFO">DELETE Request : url=http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:group=1 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:group=1 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01s3bfo0y24i1es90l47mavglv0.node0', 'Content-Length': '0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:59:26.980242" level="INFO">DELETE Response : url=http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:group=1 
 status=204, reason=No Content 
 headers={} 
 body=None 
 </msg>
<arg>${session}</arg>
<arg>url=${RFC8040_NODES_API}/node=openflow%3A${switch}/flow-node-inventory:group=1</arg>
<doc>Sends a DELETE request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:59:26.969129" elapsed="0.011196"/>
</kw>
<kw name="DELETE On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:59:26.987903" level="INFO">DELETE Request : url=http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:group=1000 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:group=1000 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01s3bfo0y24i1es90l47mavglv0.node0', 'Content-Length': '0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:59:26.987964" level="INFO">DELETE Response : url=http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:group=1000 
 status=204, reason=No Content 
 headers={} 
 body=None 
 </msg>
<arg>${session}</arg>
<arg>url=${RFC8040_NODES_API}/node=openflow%3A${switch}/flow-node-inventory:group=1000</arg>
<doc>Sends a DELETE request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:59:26.980551" elapsed="0.007496"/>
</kw>
<var name="${switch}">1</var>
<status status="PASS" start="2026-04-08T00:59:26.956822" elapsed="0.031280"/>
</iter>
<iter>
<kw name="DELETE On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:59:26.999094" level="INFO">DELETE Request : url=http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A2/flow-node-inventory:table=0/flow=1 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A2/flow-node-inventory:table=0/flow=1 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01s3bfo0y24i1es90l47mavglv0.node0', 'Content-Length': '0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:59:26.999236" level="INFO">DELETE Response : url=http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A2/flow-node-inventory:table=0/flow=1 
 status=204, reason=No Content 
 headers={} 
 body=None 
 </msg>
<arg>${session}</arg>
<arg>url=${RFC8040_NODES_API}/node=openflow%3A${switch}/flow-node-inventory:table=0/flow=1</arg>
<doc>Sends a DELETE request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:59:26.988503" elapsed="0.010867"/>
</kw>
<kw name="DELETE On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:59:27.009284" level="INFO">DELETE Request : url=http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A2/flow-node-inventory:group=1 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A2/flow-node-inventory:group=1 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01s3bfo0y24i1es90l47mavglv0.node0', 'Content-Length': '0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:59:27.009444" level="INFO">DELETE Response : url=http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A2/flow-node-inventory:group=1 
 status=204, reason=No Content 
 headers={} 
 body=None 
 </msg>
<arg>${session}</arg>
<arg>url=${RFC8040_NODES_API}/node=openflow%3A${switch}/flow-node-inventory:group=1</arg>
<doc>Sends a DELETE request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:59:26.999626" elapsed="0.010015"/>
</kw>
<kw name="DELETE On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:59:27.020949" level="INFO">DELETE Request : url=http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A2/flow-node-inventory:group=1000 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A2/flow-node-inventory:group=1000 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01s3bfo0y24i1es90l47mavglv0.node0', 'Content-Length': '0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:59:27.021013" level="INFO">DELETE Response : url=http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A2/flow-node-inventory:group=1000 
 status=204, reason=No Content 
 headers={} 
 body=None 
 </msg>
<arg>${session}</arg>
<arg>url=${RFC8040_NODES_API}/node=openflow%3A${switch}/flow-node-inventory:group=1000</arg>
<doc>Sends a DELETE request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:59:27.010129" elapsed="0.010973"/>
</kw>
<var name="${switch}">2</var>
<status status="PASS" start="2026-04-08T00:59:26.988279" elapsed="0.032912"/>
</iter>
<iter>
<kw name="DELETE On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:59:27.030435" level="INFO">DELETE Request : url=http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A3/flow-node-inventory:table=0/flow=1 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A3/flow-node-inventory:table=0/flow=1 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01s3bfo0y24i1es90l47mavglv0.node0', 'Content-Length': '0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:59:27.030526" level="INFO">DELETE Response : url=http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A3/flow-node-inventory:table=0/flow=1 
 status=204, reason=No Content 
 headers={} 
 body=None 
 </msg>
<arg>${session}</arg>
<arg>url=${RFC8040_NODES_API}/node=openflow%3A${switch}/flow-node-inventory:table=0/flow=1</arg>
<doc>Sends a DELETE request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:59:27.021584" elapsed="0.009168"/>
</kw>
<kw name="DELETE On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:59:27.040841" level="INFO">DELETE Request : url=http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A3/flow-node-inventory:group=1 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A3/flow-node-inventory:group=1 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01s3bfo0y24i1es90l47mavglv0.node0', 'Content-Length': '0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:59:27.040907" level="INFO">DELETE Response : url=http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A3/flow-node-inventory:group=1 
 status=204, reason=No Content 
 headers={} 
 body=None 
 </msg>
<arg>${session}</arg>
<arg>url=${RFC8040_NODES_API}/node=openflow%3A${switch}/flow-node-inventory:group=1</arg>
<doc>Sends a DELETE request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:59:27.031152" elapsed="0.009842"/>
</kw>
<kw name="DELETE On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:59:27.050599" level="INFO">DELETE Request : url=http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A3/flow-node-inventory:group=1000 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A3/flow-node-inventory:group=1000 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01s3bfo0y24i1es90l47mavglv0.node0', 'Content-Length': '0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:59:27.050706" level="INFO">DELETE Response : url=http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A3/flow-node-inventory:group=1000 
 status=204, reason=No Content 
 headers={} 
 body=None 
 </msg>
<arg>${session}</arg>
<arg>url=${RFC8040_NODES_API}/node=openflow%3A${switch}/flow-node-inventory:group=1000</arg>
<doc>Sends a DELETE request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:59:27.041266" elapsed="0.009592"/>
</kw>
<var name="${switch}">3</var>
<status status="PASS" start="2026-04-08T00:59:27.021373" elapsed="0.029577"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="PASS" start="2026-04-08T00:59:26.954244" elapsed="0.096781"/>
</for>
<doc>Remove 1 group 1&amp;2 and 1 flow in every switch.</doc>
<status status="PASS" start="2026-04-08T00:59:26.952905" elapsed="0.098302"/>
</kw>
<doc>Remove 1 group 1&amp;2 and 1 flow in every switch.</doc>
<status status="PASS" start="2026-04-08T00:59:26.588180" elapsed="0.463314"/>
</test>
<test id="s1-s4-t15" name="Check Flows In Operational DS After Mininet Is Disconnected" line="124">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-08T00:59:27.059677" elapsed="0.000575"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-08T00:59:27.059000" elapsed="0.001385"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:59:27.062992" elapsed="0.000036"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:59:27.062671" elapsed="0.000434"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:27.062620" elapsed="0.000577"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:59:27.068470" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:59:27.068285" elapsed="0.000232"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:27.068267" elapsed="0.000272"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:59:27.069584" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:59:27.069152" elapsed="0.000459"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:59:27.070075" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:59:27.069775" elapsed="0.000325"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:59:27.070144" elapsed="0.000054"/>
</return>
<msg time="2026-04-08T00:59:27.070354" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:59:27.068772" elapsed="0.001608"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:59:27.075989" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:59:27.075879" elapsed="0.000156"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:27.075859" elapsed="0.000198"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:59:27.077273" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:59:27.077140" elapsed="0.000179"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:27.077122" elapsed="0.000219"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:59:27.077792" level="INFO">${karaf_connection_index} = 476</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:59:27.077491" elapsed="0.000329"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:59:27.078265" level="INFO">${current_connection_index} = 495</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:59:27.077984" elapsed="0.000389"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T00:59:27.114177" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T00:59:27.078876" elapsed="0.035605"/>
</kw>
<msg time="2026-04-08T00:59:27.114714" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T00:59:27.114770" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:59:27.078541" elapsed="0.036274"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T00:59:27.175244" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "[C "I "n "[C "O "p "e "r "a "t "i "o "n "a "l "[C "D "S "[C "A "f "t "e "r "[C "M "i "n "i "n "e "t "[C "I "s "[C "D "i "s "c "[78Co "[A[78Cn
 "n "e "c "t "e "d "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T00:59:27.115507" elapsed="0.059911"/>
</kw>
<msg time="2026-04-08T00:59:27.175611" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T00:59:27.175659" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:59:27.115069" elapsed="0.060627"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:27.176110" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:59:27.175807" elapsed="0.000384"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:27.175775" elapsed="0.000445"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:59:27.176727" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "[C "I "n "[C "O "p "e "r "a "t "i "o "n "a "l "[C "D "S "[C "A "f "t "e "r "[C "M "i "n "i "n "e "t "[C "I "s "[C "D "i "s "c "[78Co "[A[78Cn
 "n "e "c "t "e "d "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:59:27.176372" elapsed="0.000438"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:27.177100" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:59:27.176878" elapsed="0.000276"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:27.176860" elapsed="0.000337"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T00:59:27.177234" elapsed="0.000040"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:59:27.179948" elapsed="0.000222"/>
</kw>
<msg time="2026-04-08T00:59:27.180234" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:59:27.178837" elapsed="0.001532"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:27.180642" elapsed="0.000073"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:27.180970" elapsed="0.000074"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:59:27.178145" elapsed="0.003030"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T00:59:27.177565" elapsed="0.003679"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T00:59:27.076841" elapsed="0.104503"/>
</kw>
<msg time="2026-04-08T00:59:27.181439" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:59:27.181483" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:59:27.076230" elapsed="0.105291"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T00:59:27.181707" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-08T00:59:27.181599" elapsed="0.000166"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:27.181580" elapsed="0.000209"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:27.182221" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:27.182564" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T00:59:27.182635" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T00:59:27.075538" elapsed="0.107205"/>
</kw>
<msg time="2026-04-08T00:59:27.182838" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:59:27.182882" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:59:27.070758" elapsed="0.112212"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:27.183319" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:59:27.183048" elapsed="0.000324"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:27.183031" elapsed="0.000364"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T00:59:27.070612" elapsed="0.112806"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:59:27.189127" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:59:27.189018" elapsed="0.000260"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:27.188999" elapsed="0.000302"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:59:27.190493" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:59:27.190384" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:27.190365" elapsed="0.000196"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:59:27.191007" level="INFO">${karaf_connection_index} = 478</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:59:27.190707" elapsed="0.000327"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:59:27.191466" level="INFO">${current_connection_index} = 495</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:59:27.191214" elapsed="0.000279"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T00:59:27.220796" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T00:59:27.191992" elapsed="0.028921"/>
</kw>
<msg time="2026-04-08T00:59:27.221082" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T00:59:27.221130" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:59:27.191656" elapsed="0.029533"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T00:59:27.279928" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "[C "I "n "[C "O "p "e "r "a "t "i "o "n "a "l "[C "D "S "[C "A "f "t "e "r "[C "M "i "n "i "n "e "t "[C "I "s "[C "D "i "s "c "[78Co "[A[78Cn
 "n "e "c "t "e "d "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T00:59:27.221764" elapsed="0.058349"/>
</kw>
<msg time="2026-04-08T00:59:27.280338" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T00:59:27.280385" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:59:27.221381" elapsed="0.059041"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:27.280843" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:59:27.280539" elapsed="0.000362"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:27.280503" elapsed="0.000425"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:59:27.281457" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "[C "I "n "[C "O "p "e "r "a "t "i "o "n "a "l "[C "D "S "[C "A "f "t "e "r "[C "M "i "n "i "n "e "t "[C "I "s "[C "D "i "s "c "[78Co "[A[78Cn
 "n "e "c "t "e "d "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:59:27.281077" elapsed="0.000463"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:27.281832" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:59:27.281610" elapsed="0.000277"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:27.281591" elapsed="0.000318"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T00:59:27.281946" elapsed="0.000038"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:59:27.284809" elapsed="0.000188"/>
</kw>
<msg time="2026-04-08T00:59:27.285059" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:59:27.283568" elapsed="0.001642"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:27.285486" elapsed="0.000073"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:27.285883" elapsed="0.000073"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:59:27.282909" elapsed="0.003157"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T00:59:27.282307" elapsed="0.003841"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T00:59:27.190016" elapsed="0.096249"/>
</kw>
<msg time="2026-04-08T00:59:27.286363" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:59:27.286407" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:59:27.189459" elapsed="0.096988"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T00:59:27.286636" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-08T00:59:27.286528" elapsed="0.000167"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:27.286509" elapsed="0.000210"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 2,
close the previous connection. In any case create a new connection
to karaf console for 2, set correct prompt set and login to karaf console.
Store connection index for 2 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:27.287120" elapsed="0.000024"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:27.287479" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T00:59:27.287550" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T00:59:27.188671" elapsed="0.098986"/>
</kw>
<msg time="2026-04-08T00:59:27.287752" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:59:27.287796" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:59:27.183839" elapsed="0.103992"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:27.288170" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:59:27.287907" elapsed="0.000318"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:27.287890" elapsed="0.000357"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T00:59:27.183548" elapsed="0.104723"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:59:27.295517" elapsed="0.000028"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:59:27.295407" elapsed="0.000172"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:27.295388" elapsed="0.000213"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:59:27.296751" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:59:27.296641" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:27.296623" elapsed="0.000195"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:59:27.297291" level="INFO">${karaf_connection_index} = 480</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:59:27.296965" elapsed="0.000353"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:59:27.297735" level="INFO">${current_connection_index} = 495</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:59:27.297482" elapsed="0.000279"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T00:59:27.339017" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T00:59:27.298352" elapsed="0.040927"/>
</kw>
<msg time="2026-04-08T00:59:27.339576" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T00:59:27.339632" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:59:27.297921" elapsed="0.041755"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T00:59:27.421202" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "[C "I "n "[C "O "p "e "r "a "t "i "o "n "a "l "[C "D "S "[C "A "f "t "e "r "[C "M "i "n "i "n "e "t "[C "I "s "[C "D "i "s "c "[78Co "[A[78Cn
 "n "e "c "t "e "d "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T00:59:27.340549" elapsed="0.080856"/>
</kw>
<msg time="2026-04-08T00:59:27.421607" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T00:59:27.421655" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:59:27.339964" elapsed="0.081807"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:27.422253" elapsed="0.000028"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:59:27.421888" elapsed="0.000427"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:27.421854" elapsed="0.000489"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:59:27.422855" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "[C "I "n "[C "O "p "e "r "a "t "i "o "n "a "l "[C "D "S "[C "A "f "t "e "r "[C "M "i "n "i "n "e "t "[C "I "s "[C "D "i "s "c "[78Co "[A[78Cn
 "n "e "c "t "e "d "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:59:27.422490" elapsed="0.000445"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:27.423242" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:59:27.423002" elapsed="0.000295"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:27.422984" elapsed="0.000337"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T00:59:27.423359" elapsed="0.000039"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:59:27.426060" elapsed="0.000210"/>
</kw>
<msg time="2026-04-08T00:59:27.426333" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:59:27.424923" elapsed="0.001544"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:27.426744" elapsed="0.000075"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:27.427073" elapsed="0.000071"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:59:27.424281" elapsed="0.002996"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T00:59:27.423687" elapsed="0.003654"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T00:59:27.296341" elapsed="0.131100"/>
</kw>
<msg time="2026-04-08T00:59:27.427533" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:59:27.427577" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:59:27.295757" elapsed="0.131856"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T00:59:27.427799" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-08T00:59:27.427692" elapsed="0.000165"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:27.427673" elapsed="0.000208"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 3,
close the previous connection. In any case create a new connection
to karaf console for 3, set correct prompt set and login to karaf console.
Store connection index for 3 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:27.428305" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:27.428641" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T00:59:27.428711" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T00:59:27.295037" elapsed="0.133780"/>
</kw>
<msg time="2026-04-08T00:59:27.428911" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:59:27.428955" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:59:27.288544" elapsed="0.140447"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:27.429331" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:59:27.429066" elapsed="0.000318"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:27.429049" elapsed="0.000359"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T00:59:27.288400" elapsed="0.141032"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-08T00:59:27.070436" elapsed="0.359030"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-08T00:59:27.067905" elapsed="0.361619"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-08T00:59:27.061853" elapsed="0.367765"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:59:27.060761" elapsed="0.368906"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-08T00:59:27.053611" elapsed="0.376109"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Check Number Of Flows On Member" owner="ClusterOpenFlow">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:59:27.431519" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:59:27.431222" elapsed="0.000323"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:59:27.431589" elapsed="0.000240"/>
</return>
<msg time="2026-04-08T00:59:27.431953" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:59:27.430853" elapsed="0.001125"/>
</kw>
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:59:27.487625" level="INFO">GET Request : url=http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01s3bfo0y24i1es90l47mavglv0.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:59:27.491463" level="INFO">GET Response : url=http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Transfer-Encoding': 'chunked'} 
 body={"opendaylight-inventory:nodes":{"node":[{"id":"openflow:3","flow-node-inventory:port-number":54950,"flow-node-inventory:table":[{"id":62,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":28,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":2,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":224,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":181,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":147,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":106,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":61,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":27,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":1,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":223,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":182,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":148,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":105,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":60,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":30,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":0,"flow":[{"id":"71","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.71/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":71}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":205000000}},"flags":""},{"id":"11","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.11/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":11}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":205000000}},"flags":""},{"id":"70","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.70/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":70}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":205000000}},"flags":""},{"id":"10","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.10/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":10}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":205000000}},"flags":""},{"id":"60","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.60/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":60}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":205000000}},"flags":""},{"id":"13","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.13/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":13}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":205000000}},"flags":""},{"id":"12","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.12/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":12}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":205000000}},"flags":""},{"id":"80","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.80/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":80}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":205000000}},"flags":""},{"id":"93","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.93/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":93}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":205000000}},"flags":""},{"id":"92","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.92/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":92}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":205000000}},"flags":""},{"id":"82","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.82/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":82}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":205000000}},"flags":""},{"id":"91","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.91/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":91}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":205000000}},"flags":""},{"id":"81","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.81/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":81}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":205000000}},"flags":""},{"id":"90","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.90/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":90}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":205000000}},"flags":""},{"id":"9","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.9/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":9}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":204000000}},"flags":""},{"id":"84","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.84/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":84}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":205000000}},"flags":""},{"id":"97","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.97/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":97}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flo... (set the log level to DEBUG or TRACE to see the full content) 
 </msg>
<msg time="2026-04-08T00:59:27.491861" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${RFC8040_OPERATIONAL_NODES_API}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:59:27.432137" elapsed="0.059764"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:59:27.496466" level="INFO">{"opendaylight-inventory:nodes":{"node":[{"id":"openflow:3","flow-node-inventory:port-number":54950,"flow-node-inventory:table":[{"id":62,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":28,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":2,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":224,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":181,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":147,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":106,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":61,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":27,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":1,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":223,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":182,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":148,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":105,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":60,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":30,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":0,"flow":[{"id":"71","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.71/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":71}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":205000000}},"flags":""},{"id":"11","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.11/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":11}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":205000000}},"flags":""},{"id":"70","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.70/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":70}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":205000000}},"flags":""},{"id":"10","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.10/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":10}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":205000000}},"flags":""},{"id":"60","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.60/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":60}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":205000000}},"flags":""},{"id":"13","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.13/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":13}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":205000000}},"flags":""},{"id":"12","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.12/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":12}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":205000000}},"flags":""},{"id":"80","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.80/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":80}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":205000000}},"flags":""},{"id":"93","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.93/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":93}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":205000000}},"flags":""},{"id":"92","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.92/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":92}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":205000000}},"flags":""},{"id":"82","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.82/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":82}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":205000000}},"flags":""},{"id":"91","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.91/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":91}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":205000000}},"flags":""},{"id":"81","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.81/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":81}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":205000000}},"flags":""},{"id":"90","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.90/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":90}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":205000000}},"flags":""},{"id":"9","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.9/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":9}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":204000000}},"flags":""},{"id":"84","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.84/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":84}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":205000000}},"flags":""},{"id":"97","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.97/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":97}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":205000000}},"flags":""},{"id":"66","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.66/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":66}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":205000000}},"flags":""},{"id":"79","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.79/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":79}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":205000000}},"flags":""},{"id":"54","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.54/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":54}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":205000000}},"flags":""},{"id":"45","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.45/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":45}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":205000000}},"flags":""},{"id":"83","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.83/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":83}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":205000000}},"flags":""},{"id":"96","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.96/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":96}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":204000000}},"flags":""},{"id":"65","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.65/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":65}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":205000000}},"flags":""},{"id":"78","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.78/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":78}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":205000000}},"flags":""},{"id":"20","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.20/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":20}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":205000000}},"flags":""},{"id":"55","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.55/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":55}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":205000000}},"flags":""},{"id":"46","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.46/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":46}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":205000000}},"flags":""},{"id":"7","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.7/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":7}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":204000000}},"flags":""},{"id":"86","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.86/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":86}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":205000000}},"flags":""},{"id":"95","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.95/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":95}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":204000000}},"flags":""},{"id":"68","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.68/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":68}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":205000000}},"flags":""},{"id":"77","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.77/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":77}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":205000000}},"flags":""},{"id":"30","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.30/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":30}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":205000000}},"flags":""},{"id":"56","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.56/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":56}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":205000000}},"flags":""},{"id":"43","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.43/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":43}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":205000000}},"flags":""},{"id":"8","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.8/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":8}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":204000000}},"flags":""},{"id":"85","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.85/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":85}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":205000000}},"flags":""},{"id":"94","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.94/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":94}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":204000000}},"flags":""},{"id":"67","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.67/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":67}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":205000000}},"flags":""},{"id":"76","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.76/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":76}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":205000000}},"flags":""},{"id":"31","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.31/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":31}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":205000000}},"flags":""},{"id":"57","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.57/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":57}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":205000000}},"flags":""},{"id":"44","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.44/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":44}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":205000000}},"flags":""},{"id":"5","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.5/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":5}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":204000000}},"flags":""},{"id":"88","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.88/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":88}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":205000000}},"flags":""},{"id":"62","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.62/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":62}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":205000000}},"flags":""},{"id":"75","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.75/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":75}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":205000000}},"flags":""},{"id":"32","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.32/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":32}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":205000000}},"flags":""},{"id":"23","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.23/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":23}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":204000000}},"flags":""},{"id":"50","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.50/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":50}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":202000000}},"flags":""},{"id":"41","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.41/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":41}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":205000000}},"flags":""},{"id":"6","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.6/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":6}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":204000000}},"flags":""},{"id":"100","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.100/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":100}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":205000000}},"flags":""},{"id":"87","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.87/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":87}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":205000000}},"flags":""},{"id":"61","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.61/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":61}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":205000000}},"flags":""},{"id":"74","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.74/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":74}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":205000000}},"flags":""},{"id":"33","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.33/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":33}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":205000000}},"flags":""},{"id":"24","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.24/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":24}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":204000000}},"flags":""},{"id":"51","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.51/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":51}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":202000000}},"flags":""},{"id":"42","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.42/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":42}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":205000000}},"flags":""},{"id":"3","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.3/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":3}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":204000000}},"flags":""},{"id":"99","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.99/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":99}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":205000000}},"flags":""},{"id":"64","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.64/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":64}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":205000000}},"flags":""},{"id":"73","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.73/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":73}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":205000000}},"flags":""},{"id":"34","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.34/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":34}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":205000000}},"flags":""},{"id":"21","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.21/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":21}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":204000000}},"flags":""},{"id":"52","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.52/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":52}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":205000000}},"flags":""},{"id":"#UF$TABLE*0-3","table_id":0,"priority":0,"cookie_mask":"0","idle-timeout":0,"cookie":"10","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"output-action":{"max-length":65535,"output-node-connector":"CONTROLLER"}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"16","byte-count":"1285","duration":{"second":55,"nanosecond":77000000}},"flags":"SEND_FLOW_REM"},{"id":"4","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.4/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":4}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":204000000}},"flags":""},{"id":"89","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.89/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":89}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":205000000}},"flags":""},{"id":"98","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.98/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":98}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":205000000}},"flags":""},{"id":"63","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.63/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":63}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":205000000}},"flags":""},{"id":"72","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.72/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":72}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":205000000}},"flags":""},{"id":"35","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.35/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":35}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":205000000}},"flags":""},{"id":"22","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.22/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":22}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":204000000}},"flags":""},{"id":"53","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.53/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":53}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":205000000}},"flags":""},{"id":"40","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.40/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":40}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":205000000}},"flags":""},{"id":"37","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.37/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":37}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":205000000}},"flags":""},{"id":"28","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.28/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":28}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":204000000}},"flags":""},{"id":"36","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.36/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":36}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":205000000}},"flags":""},{"id":"27","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.27/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":27}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":204000000}},"flags":""},{"id":"39","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.39/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":39}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":205000000}},"flags":""},{"id":"26","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.26/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":26}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":204000000}},"flags":""},{"id":"38","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.38/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":38}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":205000000}},"flags":""},{"id":"25","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.25/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":25}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":204000000}},"flags":""},{"id":"69","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.69/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":69}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":205000000}},"flags":""},{"id":"59","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.59/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":59}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":205000000}},"flags":""},{"id":"58","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.58/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":58}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":205000000}},"flags":""},{"id":"49","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.49/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":49}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":205000000}},"flags":""},{"id":"48","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.48/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":48}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":205000000}},"flags":""},{"id":"29","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.29/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":29}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":204000000}},"flags":""},{"id":"47","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.47/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":47}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":205000000}},"flags":""},{"id":"18","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.18/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":18}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":205000000}},"flags":""},{"id":"19","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.19/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":19}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":205000000}},"flags":""},{"id":"14","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.14/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":14}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":205000000}},"flags":""},{"id":"15","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.15/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":15}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":205000000}},"flags":""},{"id":"1","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.1/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":1}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":205000000}},"flags":""},{"id":"16","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.16/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":16}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":205000000}},"flags":""},{"id":"2","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.2/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":2}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":205000000}},"flags":""},{"id":"17","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.17/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":17}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":205000000}},"flags":""}],"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"34","active-flows":101,"packets-matched":"26"}},{"id":226,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":179,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":149,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":104,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":59,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":29,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":225,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":180,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":150,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":103,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":66,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":32,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":220,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":185,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":151,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":102,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":65,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":31,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":253,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":219,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":186,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":152,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":101,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":64,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":34,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":252,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":222,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":183,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":153,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":100,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":63,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":33,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":251,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":221,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":184,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":154,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":99,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":54,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":20,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":250,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":216,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":189,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":155,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":129,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":114,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":53,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":19,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":249,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":215,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":190,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":156,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":130,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":113,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":52,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":22,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":248,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":218,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":187,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":157,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":112,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":51,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":21,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":247,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":217,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":188,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":158,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":128,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":111,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":58,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":24,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":246,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":212,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":193,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":159,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":110,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":57,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":23,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":245,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":211,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":194,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":160,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":109,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":56,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":26,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":244,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":214,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":191,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":161,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":108,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":55,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":25,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":243,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":213,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":192,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":162,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":107,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":77,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":43,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":17,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":239,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":198,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":164,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":138,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":119,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":89,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":78,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":44,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":18,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":240,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":197,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":163,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":137,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":120,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":90,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":75,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":45,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":15,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":241,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":196,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":166,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":136,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":121,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":87,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":76,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":46,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":16,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":242,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":195,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":165,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":135,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":122,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":88,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":81,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":47,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":13,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":235,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":202,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":168,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":134,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":115,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":85,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":82,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":48,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":14,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":236,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":201,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":167,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":133,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":116,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":86,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":79,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":49,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":11,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":237,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":200,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":170,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":132,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":117,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":83,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":80,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":50,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":12,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":238,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":199,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":169,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":131,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":118,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":84,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":69,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":35,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":9,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":231,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":206,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":172,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":146,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":127,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":97,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":70,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":36,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":10,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":232,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":205,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":171,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":145,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":98,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":67,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":37,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":7,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":233,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":204,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":174,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":144,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":95,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":68,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":38,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":8,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":234,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":203,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":173,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":143,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":96,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":73,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":39,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":5,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":227,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":210,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":176,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":142,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":123,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":93,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":74,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":40,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":6,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":228,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":209,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":175,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":141,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":124,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":94,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":71,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":41,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":3,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":229,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":208,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":178,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":140,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":125,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":91,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":72,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":42,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":4,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":230,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":207,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":177,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":139,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":126,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":92,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}}],"opendaylight-group-statistics:group-features":{"max-groups":[4294967040],"group-types-supported":["opendaylight-group-types:group-all","opendaylight-group-types:group-ff","opendaylight-group-types:group-select","opendaylight-group-types:group-indirect"],"group-capabilities-supported":["opendaylight-group-types:chaining","opendaylight-group-types:select-weight","opendaylight-group-types:select-liveness"],"actions":[67076097]},"flow-node-inventory:manufacturer":"Nicira, Inc.","flow-node-inventory:description":"s3","flow-node-inventory:hardware":"Open vSwitch","flow-node-inventory:switch-features":{"max_tables":254,"capabilities":["flow-node-inventory:flow-feature-capability-table-stats","flow-node-inventory:flow-feature-capability-group-stats","flow-node-inventory:flow-feature-capability-queue-stats","flow-node-inventory:flow-feature-capability-flow-stats","flow-node-inventory:flow-feature-capability-port-stats"],"max_buffers":0},"flow-node-inventory:snapshot-gathering-status-start":{"begin":"2026-04-08T00:59:25.088Z"},"flow-node-inventory:software":"2.17.11","node-connector":[{"id":"openflow:3:LOCAL","flow-node-inventory:port-number":4294967294,"flow-node-inventory:hardware-address":"c2:87:c1:60:0d:43","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s3","flow-node-inventory:current-feature":"","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":0,"flow-node-inventory:state":{"live":false,"blocked":false,"link-down":true},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"PORT-DOWN","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"0","received":"0"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":60,"nanosecond":440000000},"bytes":{"transmitted":"0","received":"0"},"receive-crc-error":"0"}},{"id":"openflow:3:2","flow-node-inventory:port-number":2,"flow-node-inventory:hardware-address":"9e:72:98:8c:46:72","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s3-eth2","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"23","received":"27"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":60,"nanosecond":443000000},"bytes":{"transmitted":"1922","received":"2274"},"receive-crc-error":"0"}},{"id":"openflow:3:1","flow-node-inventory:port-number":1,"flow-node-inventory:hardware-address":"ca:ac:9a:41:42:1c","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s3-eth1","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"30","received":"9"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":60,"nanosecond":443000000},"bytes":{"transmitted":"2520","received":"726"},"receive-crc-error":"0"}}],"flow-node-inventory:ip-address":"10.30.170.192","flow-node-inventory:serial-number":"None","flow-node-inventory:group":[{"group-id":56,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":56000}}],"watch_group":56000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":56,"duration":{"second":56,"nanosecond":227000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":22,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":22000}}],"watch_group":22000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":22,"duration":{"second":56,"nanosecond":227000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":99,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":99000}}],"watch_group":99000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":99,"duration":{"second":56,"nanosecond":227000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":34000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":34000,"duration":{"second":59,"nanosecond":57000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":89000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":89000,"duration":{"second":59,"nanosecond":56000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":60000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":60000,"duration":{"second":59,"nanosecond":53000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":91000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":91000,"duration":{"second":59,"nanosecond":53000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":57,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":57000}}],"watch_group":57000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":57,"duration":{"second":56,"nanosecond":227000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":23,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":23000}}],"watch_group":23000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":23,"duration":{"second":55,"nanosecond":730000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":14000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":14000,"duration":{"second":59,"nanosecond":53000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":98,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":98000}}],"watch_group":98000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":98,"duration":{"second":55,"nanosecond":729000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":56000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":56000,"duration":{"second":59,"nanosecond":53000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":85000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":85000,"duration":{"second":59,"nanosecond":53000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":54,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":54000}}],"watch_group":54000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":54,"duration":{"second":55,"nanosecond":729000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":24,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":24000}}],"watch_group":24000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":24,"duration":{"second":55,"nanosecond":729000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":36000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":36000,"duration":{"second":59,"nanosecond":53000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":87000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":87000,"duration":{"second":59,"nanosecond":53000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":59000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":59000,"duration":{"second":59,"nanosecond":53000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":25000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":25000,"duration":{"second":59,"nanosecond":53000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":43000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":43000,"duration":{"second":59,"nanosecond":52000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":55,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":55000}}],"watch_group":55000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":55,"duration":{"second":55,"nanosecond":729000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":25,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":25000}}],"watch_group":25000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":25,"duration":{"second":58,"nanosecond":735000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":100,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":100000}}],"watch_group":100000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":100,"duration":{"second":55,"nanosecond":729000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":58000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":58000,"duration":{"second":58,"nanosecond":735000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":86000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":86000,"duration":{"second":58,"nanosecond":735000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":60,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":60000}}],"watch_group":60000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":60,"duration":{"second":58,"nanosecond":735000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":26,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":26000}}],"watch_group":26000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":26,"duration":{"second":55,"nanosecond":729000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":41000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":41000,"duration":{"second":58,"nanosecond":734000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":95,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":95000}}],"watch_group":95000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":95,"duration":{"second":55,"nanosecond":729000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":82000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":82000,"duration":{"second":58,"nanosecond":734000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":61,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":61000}}],"watch_group":61000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":61,"duration":{"second":55,"nanosecond":729000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":27,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":27000}}],"watch_group":27000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":27,"duration":{"second":55,"nanosecond":724000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":94,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":94000}}],"watch_group":94000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":94,"duration":{"second":55,"nanosecond":724000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":98000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":98000,"duration":{"second":58,"nanosecond":733000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":27000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":27000,"duration":{"second":58,"nanosecond":733000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":57000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":57000,"duration":{"second":58,"nanosecond":732000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":16000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":16000,"duration":{"second":58,"nanosecond":731000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":83000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":83000,"duration":{"second":58,"nanosecond":731000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":58,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":58000}}],"watch_group":58000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":58,"duration":{"second":58,"nanosecond":232000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":28,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":28000}}],"watch_group":28000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":28,"duration":{"second":55,"nanosecond":724000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":97,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":97000}}],"watch_group":97000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":97,"duration":{"second":55,"nanosecond":724000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":100000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":100000,"duration":{"second":58,"nanosecond":232000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":59,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":59000}}],"watch_group":59000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":59,"duration":{"second":58,"nanosecond":232000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":38000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":38000,"duration":{"second":58,"nanosecond":232000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":29,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":29000}}],"watch_group":29000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":29,"duration":{"second":55,"nanosecond":724000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":96,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":96000}}],"watch_group":96000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":96,"duration":{"second":55,"nanosecond":724000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":84000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":84000,"duration":{"second":58,"nanosecond":232000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":64,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":64000}}],"watch_group":64000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":64,"duration":{"second":55,"nanosecond":724000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":30,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":30000}}],"watch_group":30000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":30,"duration":{"second":55,"nanosecond":724000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":4,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":4000}}],"watch_group":4000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":4,"duration":{"second":55,"nanosecond":724000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":91,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":91000}}],"watch_group":91000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":91,"duration":{"second":58,"nanosecond":232000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":7000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":7000,"duration":{"second":58,"nanosecond":232000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":29000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":29000,"duration":{"second":58,"nanosecond":232000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":65,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":65000}}],"watch_group":65000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":65,"duration":{"second":55,"nanosecond":724000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":31,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":31000}}],"watch_group":31000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":31,"duration":{"second":55,"nanosecond":724000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":5,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":5000}}],"watch_group":5000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":5,"duration":{"second":55,"nanosecond":724000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":90,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":90000}}],"watch_group":90000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":90,"duration":{"second":55,"nanosecond":724000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":18000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":18000,"duration":{"second":58,"nanosecond":231000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":62,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":62000}}],"watch_group":62000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":62,"duration":{"second":55,"nanosecond":724000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":65000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":65000,"duration":{"second":58,"nanosecond":231000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":32,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":32000}}],"watch_group":32000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":32,"duration":{"second":55,"nanosecond":724000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":2,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":2000}}],"watch_group":2000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":2,"duration":{"second":55,"nanosecond":724000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":93,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":93000}}],"watch_group":93000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":93,"duration":{"second":55,"nanosecond":724000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":64000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":64000,"duration":{"second":58,"nanosecond":230000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":63,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":63000}}],"watch_group":63000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":63,"duration":{"second":55,"nanosecond":724000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":33,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":33000}}],"watch_group":33000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":33,"duration":{"second":55,"nanosecond":724000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":3,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":3000}}],"watch_group":3000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":3,"duration":{"second":55,"nanosecond":724000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":80000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":80000,"duration":{"second":58,"nanosecond":229000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":9000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":9000,"duration":{"second":58,"nanosecond":229000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":92,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":92000}}],"watch_group":92000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":92,"duration":{"second":55,"nanosecond":724000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":5000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":5000,"duration":{"second":58,"nanosecond":229000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":20000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":20000,"duration":{"second":58,"nanosecond":229000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":81000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":81000,"duration":{"second":58,"nanosecond":229000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":97000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":97000,"duration":{"second":58,"nanosecond":229000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":31000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":31000,"duration":{"second":58,"nanosecond":229000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":68,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":68000}}],"watch_group":68000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":68,"duration":{"second":55,"nanosecond":724000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":11000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":11000,"duration":{"second":58,"nanosecond":229000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":34,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":34000}}],"watch_group":34000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":34,"duration":{"second":58,"nanosecond":229000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":78000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":78000,"duration":{"second":58,"nanosecond":228000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":87,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":87000}}],"watch_group":87000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":87,"duration":{"second":58,"nanosecond":228000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":93000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":93000,"duration":{"second":58,"nanosecond":228000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":63000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":63000,"duration":{"second":58,"nanosecond":228000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":69,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":69000}}],"watch_group":69000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":69,"duration":{"second":55,"nanosecond":724000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":35,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":35000}}],"watch_group":35000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":35,"duration":{"second":55,"nanosecond":724000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":1,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":1000}}],"watch_group":1000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":1,"duration":{"second":55,"nanosecond":724000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":33000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":33000,"duration":{"second":58,"nanosecond":224000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":79000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":79000,"duration":{"second":58,"nanosecond":224000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":86,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":86000}}],"watch_group":86000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":86,"duration":{"second":58,"nanosecond":224000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":62000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":62000,"duration":{"second":58,"nanosecond":224000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":66,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":66000}}],"watch_group":66000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":66,"duration":{"second":55,"nanosecond":724000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":77000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":77000,"duration":{"second":58,"nanosecond":224000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":36,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":36000}}],"watch_group":36000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":36,"duration":{"second":58,"nanosecond":224000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":89,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":89000}}],"watch_group":89000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":89,"duration":{"second":58,"nanosecond":224000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":22000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":22000,"duration":{"second":58,"nanosecond":224000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":95000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":95000,"duration":{"second":58,"nanosecond":224000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":67,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":67000}}],"watch_group":67000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":67,"duration":{"second":55,"nanosecond":724000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":37,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":37000}}],"watch_group":37000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":37,"duration":{"second":55,"nanosecond":724000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":1000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":1000,"duration":{"second":58,"nanosecond":223000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":88,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":88000}}],"watch_group":88000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":88,"duration":{"second":55,"nanosecond":724000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":61000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":61000,"duration":{"second":58,"nanosecond":223000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":3000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":3000,"duration":{"second":58,"nanosecond":223000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":73,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":73000}}],"watch_group":73000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":73,"duration":{"second":55,"nanosecond":724000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":39,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":39000}}],"watch_group":39000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":39,"duration":{"second":55,"nanosecond":719000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":13,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":13000}}],"watch_group":13000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":13,"duration":{"second":55,"nanosecond":719000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":74000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":74000,"duration":{"second":58,"nanosecond":223000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":15000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":15000,"duration":{"second":58,"nanosecond":223000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":44000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":44000,"duration":{"second":58,"nanosecond":223000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":45000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":45000,"duration":{"second":58,"nanosecond":223000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":68000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":68000,"duration":{"second":58,"nanosecond":223000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":72,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":72000}}],"watch_group":72000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":72,"duration":{"second":55,"nanosecond":719000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":38,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":38000}}],"watch_group":38000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":38,"duration":{"second":57,"nanosecond":733000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":75000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":75000,"duration":{"second":57,"nanosecond":733000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":12,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":12000}}],"watch_group":12000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":12,"duration":{"second":55,"nanosecond":719000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":35000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":35000,"duration":{"second":57,"nanosecond":733000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":24000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":24000,"duration":{"second":57,"nanosecond":733000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":90000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":90000,"duration":{"second":57,"nanosecond":733000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":71,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":71000}}],"watch_group":71000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":71,"duration":{"second":55,"nanosecond":719000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":41,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":41000}}],"watch_group":41000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":41,"duration":{"second":57,"nanosecond":732000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":42000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":42000,"duration":{"second":57,"nanosecond":732000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":11,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":11000}}],"watch_group":11000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":11,"duration":{"second":57,"nanosecond":732000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":92000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":92000,"duration":{"second":57,"nanosecond":731000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":46000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":46000,"duration":{"second":57,"nanosecond":731000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":67000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":67000,"duration":{"second":57,"nanosecond":731000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":70,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":70000}}],"watch_group":70000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":70,"duration":{"second":55,"nanosecond":719000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":76000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":76000,"duration":{"second":57,"nanosecond":730000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":40,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":40000}}],"watch_group":40000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":40,"duration":{"second":55,"nanosecond":719000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":13000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":13000,"duration":{"second":57,"nanosecond":730000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":10,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":10000}}],"watch_group":10000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":10,"duration":{"second":55,"nanosecond":719000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":88000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":88000,"duration":{"second":57,"nanosecond":730000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":47000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":47000,"duration":{"second":57,"nanosecond":730000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":66000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":66000,"duration":{"second":57,"nanosecond":730000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":77,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":77000}}],"watch_group":77000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":77,"duration":{"second":57,"nanosecond":730000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":43,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":43000}}],"watch_group":43000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":43,"duration":{"second":57,"nanosecond":729000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":9,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":9000}}],"watch_group":9000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":9,"duration":{"second":57,"nanosecond":729000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":99000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":99000,"duration":{"second":57,"nanosecond":729000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":26000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":26000,"duration":{"second":57,"nanosecond":729000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":70000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":70000,"duration":{"second":57,"nanosecond":728000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":76,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":76000}}],"watch_group":76000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":76,"duration":{"second":57,"nanosecond":232000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":42,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":42000}}],"watch_group":42000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":42,"duration":{"second":57,"nanosecond":231000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":8,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":8000}}],"watch_group":8000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":8,"duration":{"second":55,"nanosecond":719000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":37000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":37000,"duration":{"second":57,"nanosecond":231000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":49000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":49000,"duration":{"second":57,"nanosecond":231000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":71000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":71000,"duration":{"second":57,"nanosecond":231000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":48000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":48000,"duration":{"second":57,"nanosecond":230000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":75,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":75000}}],"watch_group":75000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":75,"duration":{"second":57,"nanosecond":226000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":45,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":45000}}],"watch_group":45000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":45,"duration":{"second":57,"nanosecond":226000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":7,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":7000}}],"watch_group":7000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":7,"duration":{"second":57,"nanosecond":226000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":39000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":39000,"duration":{"second":57,"nanosecond":226000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":73000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":73000,"duration":{"second":57,"nanosecond":226000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":69000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":69000,"duration":{"second":57,"nanosecond":226000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":17000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":17000,"duration":{"second":57,"nanosecond":226000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":28000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":28000,"duration":{"second":57,"nanosecond":226000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":74,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":74000}}],"watch_group":74000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":74,"duration":{"second":57,"nanosecond":226000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":44,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":44000}}],"watch_group":44000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":44,"duration":{"second":57,"nanosecond":226000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":6,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":6000}}],"watch_group":6000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":6,"duration":{"second":55,"nanosecond":719000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":40000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":40000,"duration":{"second":57,"nanosecond":226000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":81,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":81000}}],"watch_group":81000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":81,"duration":{"second":57,"nanosecond":226000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":47,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":47000}}],"watch_group":47000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":47,"duration":{"second":57,"nanosecond":226000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":21,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":21000}}],"watch_group":21000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":21,"duration":{"second":55,"nanosecond":719000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":8000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":8000,"duration":{"second":57,"nanosecond":226000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":19000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":19000,"duration":{"second":57,"nanosecond":225000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":96000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":96000,"duration":{"second":57,"nanosecond":225000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":80,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":80000}}],"watch_group":80000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":80,"duration":{"second":57,"nanosecond":225000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":46,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":46000}}],"watch_group":46000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":46,"duration":{"second":57,"nanosecond":225000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":20,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":20000}}],"watch_group":20000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":20,"duration":{"second":57,"nanosecond":225000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":52000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":52000,"duration":{"second":57,"nanosecond":225000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":6000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":6000,"duration":{"second":57,"nanosecond":225000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":79,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":79000}}],"watch_group":79000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":79,"duration":{"second":57,"nanosecond":224000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":49,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":49000}}],"watch_group":49000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":49,"duration":{"second":56,"nanosecond":732000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":19,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":19000}}],"watch_group":19000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":19,"duration":{"second":56,"nanosecond":731000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":50000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":50000,"duration":{"second":56,"nanosecond":731000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":72000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":72000,"duration":{"second":56,"nanosecond":731000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":30000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":30000,"duration":{"second":56,"nanosecond":731000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":78,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":78000}}],"watch_group":78000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":78,"duration":{"second":56,"nanosecond":731000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":48,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":48000}}],"watch_group":48000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":48,"duration":{"second":56,"nanosecond":730000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":18,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":18000}}],"watch_group":18000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":18,"duration":{"second":56,"nanosecond":730000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":51000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":51000,"duration":{"second":56,"nanosecond":730000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":85,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":85000}}],"watch_group":85000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":85,"duration":{"second":56,"nanosecond":730000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":55000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":55000,"duration":{"second":56,"nanosecond":730000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":51,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":51000}}],"watch_group":51000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":51,"duration":{"second":56,"nanosecond":231000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":17,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":17000}}],"watch_group":17000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":17,"duration":{"second":56,"nanosecond":231000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":21000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":21000,"duration":{"second":56,"nanosecond":231000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":4000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":4000,"duration":{"second":56,"nanosecond":231000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":84,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":84000}}],"watch_group":84000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":84,"duration":{"second":56,"nanosecond":231000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":50,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":50000}}],"watch_group":50000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":50,"duration":{"second":56,"nanosecond":231000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":16,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":16000}}],"watch_group":16000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":16,"duration":{"second":56,"nanosecond":230000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":10000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":10000,"duration":{"second":56,"nanosecond":230000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":54000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":54000,"duration":{"second":56,"nanosecond":230000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":83,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":83000}}],"watch_group":83000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":83,"duration":{"second":56,"nanosecond":230000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":32000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":32000,"duration":{"second":56,"nanosecond":230000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":53,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":53000}}],"watch_group":53000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":53,"duration":{"second":55,"nanosecond":719000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":15,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":15000}}],"watch_group":15000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":15,"duration":{"second":56,"nanosecond":229000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":2000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":2000,"duration":{"second":56,"nanosecond":229000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":82,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":82000}}],"watch_group":82000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":82,"duration":{"second":56,"nanosecond":229000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":52,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":52000}}],"watch_group":52000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":52,"duration":{"second":56,"nanosecond":229000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":14,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":14000}}],"watch_group":14000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":14,"duration":{"second":56,"nanosecond":229000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":53000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":53000,"duration":{"second":56,"nanosecond":228000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":12000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":12000,"duration":{"second":56,"nanosecond":228000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":23000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":23000,"duration":{"second":56,"nanosecond":227000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":94000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":94000,"duration":{"second":56,"nanosecond":227000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}}],"flow-node-inventory:snapshot-gathering-status-end":{"succeeded":true,"end":"2026-04-08T00:59:25.159Z"}},{"id":"openflow:1","flow-node-inventory:port-number":54934,"flow-node-inventory:table":[{"id":62,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":28,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":2,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":224,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":181,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":147,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":106,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":61,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":27,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":1,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":223,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":182,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":148,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":105,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":60,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":30,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":0,"flow":[{"id":"71","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.71/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":71}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":205000000}},"flags":""},{"id":"11","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.11/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":11}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":204000000}},"flags":""},{"id":"70","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.70/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":70}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":205000000}},"flags":""},{"id":"10","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.10/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":10}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":204000000}},"flags":""},{"id":"60","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.60/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":60}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":205000000}},"flags":""},{"id":"13","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.13/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":13}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":204000000}},"flags":""},{"id":"12","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.12/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":12}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":204000000}},"flags":""},{"id":"80","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.80/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":80}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":205000000}},"flags":""},{"id":"93","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.93/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":93}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":204000000}},"flags":""},{"id":"92","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.92/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":92}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":204000000}},"flags":""},{"id":"82","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.82/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":82}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":205000000}},"flags":""},{"id":"91","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.91/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":91}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":204000000}},"flags":""},{"id":"81","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.81/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":81}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":205000000}},"flags":""},{"id":"90","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.90/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":90}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":204000000}},"flags":""},{"id":"9","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.9/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":9}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":204000000}},"flags":""},{"id":"84","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.84/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":84}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":204000000}},"flags":""},{"id":"97","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.97/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":97}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":204000000}},"flags":""},{"id":"66","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.66/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":66}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":205000000}},"flags":""},{"id":"79","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.79/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":79}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":205000000}},"flags":""},{"id":"54","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.54/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":54}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":203000000}},"flags":""},{"id":"45","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.45/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":45}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":203000000}},"flags":""},{"id":"83","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.83/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":83}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":204000000}},"flags":""},{"id":"96","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.96/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":96}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":204000000}},"flags":""},{"id":"65","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.65/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":65}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":205000000}},"flags":""},{"id":"78","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.78/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":78}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":205000000}},"flags":""},{"id":"20","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.20/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":20}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":204000000}},"flags":""},{"id":"55","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.55/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":55}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":203000000}},"flags":""},{"id":"46","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.46/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":46}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":203000000}},"flags":""},{"id":"7","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.7/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":7}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":204000000}},"flags":""},{"id":"86","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.86/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":86}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":205000000}},"flags":""},{"id":"95","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.95/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":95}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":204000000}},"flags":""},{"id":"68","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.68/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":68}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":205000000}},"flags":""},{"id":"77","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.77/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":77}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":205000000}},"flags":""},{"id":"30","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.30/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":30}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":204000000}},"flags":""},{"id":"56","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.56/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":56}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":203000000}},"flags":""},{"id":"43","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.43/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":43}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":203000000}},"flags":""},{"id":"8","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.8/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":8}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":204000000}},"flags":""},{"id":"85","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.85/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":85}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":205000000}},"flags":""},{"id":"94","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.94/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":94}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":204000000}},"flags":""},{"id":"67","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.67/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":67}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":205000000}},"flags":""},{"id":"76","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.76/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":76}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":205000000}},"flags":""},{"id":"31","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.31/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":31}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":204000000}},"flags":""},{"id":"57","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.57/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":57}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":203000000}},"flags":""},{"id":"44","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.44/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":44}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":203000000}},"flags":""},{"id":"5","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.5/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":5}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":204000000}},"flags":""},{"id":"88","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.88/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":88}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":205000000}},"flags":""},{"id":"62","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.62/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":62}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":205000000}},"flags":""},{"id":"75","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.75/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":75}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":205000000}},"flags":""},{"id":"32","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.32/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":32}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":204000000}},"flags":""},{"id":"23","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.23/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":23}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":204000000}},"flags":""},{"id":"50","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.50/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":50}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":203000000}},"flags":""},{"id":"41","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.41/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":41}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":203000000}},"flags":""},{"id":"#UF$TABLE*0-1","table_id":0,"priority":0,"cookie_mask":"0","idle-timeout":0,"cookie":"10","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"output-action":{"max-length":65535,"output-node-connector":"CONTROLLER"}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"17","byte-count":"1355","duration":{"second":55,"nanosecond":94000000}},"flags":"SEND_FLOW_REM"},{"id":"6","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.6/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":6}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":204000000}},"flags":""},{"id":"100","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.100/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":100}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":205000000}},"flags":""},{"id":"87","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.87/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":87}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":205000000}},"flags":""},{"id":"61","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.61/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":61}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":205000000}},"flags":""},{"id":"74","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.74/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":74}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":205000000}},"flags":""},{"id":"33","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.33/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":33}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":204000000}},"flags":""},{"id":"24","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.24/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":24}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":204000000}},"flags":""},{"id":"51","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.51/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":51}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":203000000}},"flags":""},{"id":"42","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.42/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":42}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":203000000}},"flags":""},{"id":"3","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.3/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":3}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":204000000}},"flags":""},{"id":"99","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.99/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":99}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":204000000}},"flags":""},{"id":"64","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.64/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":64}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":205000000}},"flags":""},{"id":"73","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.73/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":73}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":205000000}},"flags":""},{"id":"34","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.34/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":34}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":204000000}},"flags":""},{"id":"21","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.21/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":21}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":204000000}},"flags":""},{"id":"52","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.52/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":52}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":203000000}},"flags":""},{"id":"4","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.4/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":4}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":204000000}},"flags":""},{"id":"89","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.89/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":89}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":205000000}},"flags":""},{"id":"98","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.98/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":98}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":204000000}},"flags":""},{"id":"63","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.63/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":63}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":205000000}},"flags":""},{"id":"72","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.72/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":72}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":205000000}},"flags":""},{"id":"35","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.35/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":35}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":204000000}},"flags":""},{"id":"22","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.22/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":22}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":204000000}},"flags":""},{"id":"53","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.53/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":53}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":203000000}},"flags":""},{"id":"40","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.40/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":40}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":203000000}},"flags":""},{"id":"37","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.37/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":37}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":204000000}},"flags":""},{"id":"28","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.28/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":28}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":204000000}},"flags":""},{"id":"36","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.36/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":36}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":204000000}},"flags":""},{"id":"27","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.27/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":27}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":204000000}},"flags":""},{"id":"39","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.39/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":39}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":204000000}},"flags":""},{"id":"26","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.26/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":26}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":204000000}},"flags":""},{"id":"38","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.38/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":38}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":204000000}},"flags":""},{"id":"25","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.25/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":25}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":204000000}},"flags":""},{"id":"69","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.69/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":69}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":205000000}},"flags":""},{"id":"59","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.59/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":59}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":203000000}},"flags":""},{"id":"58","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.58/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":58}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":203000000}},"flags":""},{"id":"49","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.49/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":49}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":204000000}},"flags":""},{"id":"48","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.48/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":48}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":203000000}},"flags":""},{"id":"29","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.29/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":29}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":204000000}},"flags":""},{"id":"47","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.47/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":47}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":203000000}},"flags":""},{"id":"18","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.18/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":18}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":204000000}},"flags":""},{"id":"19","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.19/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":19}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":204000000}},"flags":""},{"id":"14","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.14/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":14}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":204000000}},"flags":""},{"id":"15","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.15/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":15}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":204000000}},"flags":""},{"id":"1","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.1/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":1}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":204000000}},"flags":""},{"id":"16","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.16/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":16}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":204000000}},"flags":""},{"id":"2","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.2/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":2}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":204000000}},"flags":""},{"id":"17","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.17/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":17}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":204000000}},"flags":""}],"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"34","active-flows":101,"packets-matched":"27"}},{"id":226,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":179,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":149,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":104,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":59,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":29,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":225,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":180,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":150,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":103,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":66,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":32,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":220,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":185,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":151,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":102,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":65,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":31,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":253,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":219,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":186,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":152,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":101,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":64,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":34,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":252,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":222,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":183,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":153,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":100,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":63,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":33,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":251,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":221,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":184,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":154,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":99,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":54,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":20,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":250,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":216,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":189,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":155,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":129,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":114,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":53,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":19,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":249,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":215,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":190,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":156,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":130,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":113,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":52,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":22,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":248,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":218,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":187,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":157,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":112,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":51,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":21,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":247,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":217,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":188,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":158,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":128,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":111,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":58,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":24,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":246,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":212,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":193,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":159,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":110,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":57,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":23,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":245,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":211,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":194,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":160,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":109,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":56,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":26,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":244,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":214,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":191,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":161,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":108,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":55,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":25,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":243,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":213,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":192,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":162,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":107,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":77,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":43,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":17,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":239,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":198,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":164,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":138,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":119,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":89,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":78,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":44,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":18,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":240,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":197,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":163,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":137,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":120,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":90,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":75,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":45,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":15,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":241,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":196,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":166,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":136,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":121,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":87,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":76,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":46,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":16,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":242,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":195,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":165,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":135,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":122,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":88,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":81,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":47,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":13,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":235,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":202,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":168,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":134,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":115,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":85,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":82,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":48,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":14,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":236,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":201,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":167,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":133,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":116,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":86,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":79,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":49,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":11,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":237,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":200,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":170,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":132,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":117,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":83,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":80,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":50,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":12,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":238,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":199,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":169,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":131,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":118,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":84,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":69,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":35,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":9,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":231,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":206,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":172,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":146,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":127,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":97,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":70,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":36,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":10,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":232,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":205,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":171,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":145,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":98,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":67,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":37,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":7,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":233,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":204,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":174,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":144,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":95,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":68,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":38,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":8,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":234,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":203,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":173,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":143,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":96,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":73,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":39,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":5,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":227,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":210,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":176,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":142,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":123,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":93,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":74,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":40,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":6,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":228,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":209,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":175,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":141,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":124,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":94,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":71,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":41,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":3,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":229,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":208,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":178,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":140,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":125,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":91,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":72,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":42,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":4,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":230,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":207,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":177,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":139,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":126,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":92,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}}],"opendaylight-group-statistics:group-features":{"max-groups":[4294967040],"group-types-supported":["opendaylight-group-types:group-all","opendaylight-group-types:group-ff","opendaylight-group-types:group-select","opendaylight-group-types:group-indirect"],"group-capabilities-supported":["opendaylight-group-types:chaining","opendaylight-group-types:select-weight","opendaylight-group-types:select-liveness"],"actions":[67076097]},"flow-node-inventory:manufacturer":"Nicira, Inc.","flow-node-inventory:description":"s1","flow-node-inventory:hardware":"Open vSwitch","flow-node-inventory:switch-features":{"max_tables":254,"capabilities":["flow-node-inventory:flow-feature-capability-table-stats","flow-node-inventory:flow-feature-capability-group-stats","flow-node-inventory:flow-feature-capability-queue-stats","flow-node-inventory:flow-feature-capability-flow-stats","flow-node-inventory:flow-feature-capability-port-stats"],"max_buffers":0},"flow-node-inventory:snapshot-gathering-status-start":{"begin":"2026-04-08T00:59:25.109Z"},"flow-node-inventory:software":"2.17.11","node-connector":[{"id":"openflow:1:1","flow-node-inventory:port-number":1,"flow-node-inventory:hardware-address":"92:f4:e8:ea:c6:ad","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s1-eth1","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"29","received":"9"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":60,"nanosecond":435000000},"bytes":{"transmitted":"2450","received":"726"},"receive-crc-error":"0"}},{"id":"openflow:1:LOCAL","flow-node-inventory:port-number":4294967294,"flow-node-inventory:hardware-address":"e6:45:d0:5b:c7:49","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s1","flow-node-inventory:current-feature":"","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":0,"flow-node-inventory:state":{"live":false,"blocked":false,"link-down":true},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"PORT-DOWN","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"0","received":"0"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":60,"nanosecond":431000000},"bytes":{"transmitted":"0","received":"0"},"receive-crc-error":"0"}},{"id":"openflow:1:2","flow-node-inventory:port-number":2,"flow-node-inventory:hardware-address":"42:46:a8:4b:8b:86","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s1-eth2","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"23","received":"27"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":60,"nanosecond":435000000},"bytes":{"transmitted":"1922","received":"2274"},"receive-crc-error":"0"}}],"flow-node-inventory:ip-address":"10.30.170.192","flow-node-inventory:serial-number":"None","flow-node-inventory:group":[{"group-id":56,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":56000}}],"watch_group":56000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":56,"duration":{"second":56,"nanosecond":380000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":22,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":22000}}],"watch_group":22000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":22,"duration":{"second":56,"nanosecond":380000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":99,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":99000}}],"watch_group":99000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":99,"duration":{"second":56,"nanosecond":380000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":34000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":34000,"duration":{"second":59,"nanosecond":73000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":89000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":89000,"duration":{"second":59,"nanosecond":73000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":60000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":60000,"duration":{"second":59,"nanosecond":73000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":91000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":91000,"duration":{"second":59,"nanosecond":73000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":57,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":57000}}],"watch_group":57000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":57,"duration":{"second":56,"nanosecond":380000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":23,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":23000}}],"watch_group":23000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":23,"duration":{"second":55,"nanosecond":880000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":14000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":14000,"duration":{"second":59,"nanosecond":73000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":98,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":98000}}],"watch_group":98000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":98,"duration":{"second":55,"nanosecond":880000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":56000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":56000,"duration":{"second":59,"nanosecond":73000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":85000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":85000,"duration":{"second":59,"nanosecond":73000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":54,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":54000}}],"watch_group":54000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":54,"duration":{"second":55,"nanosecond":880000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":24,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":24000}}],"watch_group":24000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":24,"duration":{"second":55,"nanosecond":880000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":36000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":36000,"duration":{"second":59,"nanosecond":73000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":87000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":87000,"duration":{"second":59,"nanosecond":73000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":59000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":59000,"duration":{"second":59,"nanosecond":73000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":25000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":25000,"duration":{"second":59,"nanosecond":73000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":43000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":43000,"duration":{"second":59,"nanosecond":73000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":55,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":55000}}],"watch_group":55000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":55,"duration":{"second":55,"nanosecond":880000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":25,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":25000}}],"watch_group":25000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":25,"duration":{"second":58,"nanosecond":887000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":100,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":100000}}],"watch_group":100000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":100,"duration":{"second":55,"nanosecond":880000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":58000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":58000,"duration":{"second":58,"nanosecond":884000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":86000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":86000,"duration":{"second":58,"nanosecond":884000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":60,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":60000}}],"watch_group":60000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":60,"duration":{"second":58,"nanosecond":884000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":26,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":26000}}],"watch_group":26000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":26,"duration":{"second":55,"nanosecond":880000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":41000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":41000,"duration":{"second":58,"nanosecond":884000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":95,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":95000}}],"watch_group":95000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":95,"duration":{"second":55,"nanosecond":880000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":82000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":82000,"duration":{"second":58,"nanosecond":884000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":61,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":61000}}],"watch_group":61000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":61,"duration":{"second":55,"nanosecond":880000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":27,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":27000}}],"watch_group":27000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":27,"duration":{"second":55,"nanosecond":880000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":94,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":94000}}],"watch_group":94000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":94,"duration":{"second":55,"nanosecond":880000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":98000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":98000,"duration":{"second":58,"nanosecond":884000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":27000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":27000,"duration":{"second":58,"nanosecond":884000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":57000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":57000,"duration":{"second":58,"nanosecond":884000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":16000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":16000,"duration":{"second":58,"nanosecond":884000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":83000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":83000,"duration":{"second":58,"nanosecond":884000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":58,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":58000}}],"watch_group":58000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":58,"duration":{"second":58,"nanosecond":381000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":28,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":28000}}],"watch_group":28000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":28,"duration":{"second":55,"nanosecond":880000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":97,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":97000}}],"watch_group":97000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":97,"duration":{"second":55,"nanosecond":880000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":100000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":100000,"duration":{"second":58,"nanosecond":381000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":59,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":59000}}],"watch_group":59000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":59,"duration":{"second":58,"nanosecond":381000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":38000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":38000,"duration":{"second":58,"nanosecond":381000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":29,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":29000}}],"watch_group":29000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":29,"duration":{"second":55,"nanosecond":880000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":96,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":96000}}],"watch_group":96000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":96,"duration":{"second":55,"nanosecond":880000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":84000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":84000,"duration":{"second":58,"nanosecond":381000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":64,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":64000}}],"watch_group":64000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":64,"duration":{"second":55,"nanosecond":880000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":30,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":30000}}],"watch_group":30000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":30,"duration":{"second":55,"nanosecond":880000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":4,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":4000}}],"watch_group":4000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":4,"duration":{"second":55,"nanosecond":880000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":91,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":91000}}],"watch_group":91000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":91,"duration":{"second":58,"nanosecond":381000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":7000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":7000,"duration":{"second":58,"nanosecond":381000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":29000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":29000,"duration":{"second":58,"nanosecond":381000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":65,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":65000}}],"watch_group":65000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":65,"duration":{"second":55,"nanosecond":880000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":31,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":31000}}],"watch_group":31000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":31,"duration":{"second":55,"nanosecond":880000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":5,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":5000}}],"watch_group":5000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":5,"duration":{"second":55,"nanosecond":880000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":90,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":90000}}],"watch_group":90000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":90,"duration":{"second":55,"nanosecond":880000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":18000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":18000,"duration":{"second":58,"nanosecond":381000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":62,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":62000}}],"watch_group":62000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":62,"duration":{"second":55,"nanosecond":880000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":65000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":65000,"duration":{"second":58,"nanosecond":381000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":32,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":32000}}],"watch_group":32000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":32,"duration":{"second":55,"nanosecond":880000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":2,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":2000}}],"watch_group":2000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":2,"duration":{"second":55,"nanosecond":880000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":93,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":93000}}],"watch_group":93000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":93,"duration":{"second":55,"nanosecond":880000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":64000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":64000,"duration":{"second":58,"nanosecond":381000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":63,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":63000}}],"watch_group":63000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":63,"duration":{"second":55,"nanosecond":880000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":33,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":33000}}],"watch_group":33000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":33,"duration":{"second":55,"nanosecond":880000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":3,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":3000}}],"watch_group":3000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":3,"duration":{"second":55,"nanosecond":875000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":80000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":80000,"duration":{"second":58,"nanosecond":381000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":9000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":9000,"duration":{"second":58,"nanosecond":381000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":92,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":92000}}],"watch_group":92000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":92,"duration":{"second":55,"nanosecond":875000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":5000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":5000,"duration":{"second":58,"nanosecond":381000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":20000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":20000,"duration":{"second":58,"nanosecond":381000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":81000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":81000,"duration":{"second":58,"nanosecond":381000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":97000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":97000,"duration":{"second":58,"nanosecond":381000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":31000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":31000,"duration":{"second":58,"nanosecond":381000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":68,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":68000}}],"watch_group":68000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":68,"duration":{"second":55,"nanosecond":875000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":11000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":11000,"duration":{"second":58,"nanosecond":381000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":34,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":34000}}],"watch_group":34000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":34,"duration":{"second":58,"nanosecond":381000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":78000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":78000,"duration":{"second":58,"nanosecond":381000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":87,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":87000}}],"watch_group":87000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":87,"duration":{"second":58,"nanosecond":381000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":93000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":93000,"duration":{"second":58,"nanosecond":381000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":63000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":63000,"duration":{"second":58,"nanosecond":381000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":69,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":69000}}],"watch_group":69000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":69,"duration":{"second":55,"nanosecond":875000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":35,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":35000}}],"watch_group":35000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":35,"duration":{"second":55,"nanosecond":875000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":1,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":1000}}],"watch_group":1000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":1,"duration":{"second":55,"nanosecond":875000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":33000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":33000,"duration":{"second":58,"nanosecond":381000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":79000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":79000,"duration":{"second":58,"nanosecond":379000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":86,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":86000}}],"watch_group":86000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":86,"duration":{"second":58,"nanosecond":379000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":62000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":62000,"duration":{"second":58,"nanosecond":379000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":66,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":66000}}],"watch_group":66000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":66,"duration":{"second":55,"nanosecond":875000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":77000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":77000,"duration":{"second":58,"nanosecond":379000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":36,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":36000}}],"watch_group":36000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":36,"duration":{"second":58,"nanosecond":379000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":89,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":89000}}],"watch_group":89000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":89,"duration":{"second":58,"nanosecond":378000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":22000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":22000,"duration":{"second":58,"nanosecond":378000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":95000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":95000,"duration":{"second":58,"nanosecond":378000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":67,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":67000}}],"watch_group":67000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":67,"duration":{"second":55,"nanosecond":875000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":37,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":37000}}],"watch_group":37000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":37,"duration":{"second":55,"nanosecond":875000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":1000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":1000,"duration":{"second":58,"nanosecond":378000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":88,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":88000}}],"watch_group":88000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":88,"duration":{"second":55,"nanosecond":875000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":61000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":61000,"duration":{"second":58,"nanosecond":378000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":3000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":3000,"duration":{"second":58,"nanosecond":377000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":73,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":73000}}],"watch_group":73000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":73,"duration":{"second":55,"nanosecond":875000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":39,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":39000}}],"watch_group":39000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":39,"duration":{"second":55,"nanosecond":875000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":13,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":13000}}],"watch_group":13000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":13,"duration":{"second":55,"nanosecond":875000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":74000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":74000,"duration":{"second":58,"nanosecond":377000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":15000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":15000,"duration":{"second":58,"nanosecond":377000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":44000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":44000,"duration":{"second":58,"nanosecond":377000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":45000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":45000,"duration":{"second":58,"nanosecond":377000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":68000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":68000,"duration":{"second":58,"nanosecond":377000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":72,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":72000}}],"watch_group":72000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":72,"duration":{"second":55,"nanosecond":875000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":38,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":38000}}],"watch_group":38000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":38,"duration":{"second":57,"nanosecond":889000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":75000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":75000,"duration":{"second":57,"nanosecond":889000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":12,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":12000}}],"watch_group":12000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":12,"duration":{"second":55,"nanosecond":875000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":35000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":35000,"duration":{"second":57,"nanosecond":889000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":24000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":24000,"duration":{"second":57,"nanosecond":888000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":90000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":90000,"duration":{"second":57,"nanosecond":888000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":71,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":71000}}],"watch_group":71000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":71,"duration":{"second":55,"nanosecond":875000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":41,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":41000}}],"watch_group":41000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":41,"duration":{"second":57,"nanosecond":888000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":42000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":42000,"duration":{"second":57,"nanosecond":888000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":11,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":11000}}],"watch_group":11000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":11,"duration":{"second":57,"nanosecond":887000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":92000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":92000,"duration":{"second":57,"nanosecond":887000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":46000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":46000,"duration":{"second":57,"nanosecond":887000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":67000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":67000,"duration":{"second":57,"nanosecond":887000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":70,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":70000}}],"watch_group":70000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":70,"duration":{"second":55,"nanosecond":875000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":76000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":76000,"duration":{"second":57,"nanosecond":886000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":40,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":40000}}],"watch_group":40000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":40,"duration":{"second":55,"nanosecond":875000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":13000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":13000,"duration":{"second":57,"nanosecond":883000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":10,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":10000}}],"watch_group":10000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":10,"duration":{"second":55,"nanosecond":875000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":88000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":88000,"duration":{"second":57,"nanosecond":883000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":47000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":47000,"duration":{"second":57,"nanosecond":883000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":66000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":66000,"duration":{"second":57,"nanosecond":882000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":77,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":77000}}],"watch_group":77000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":77,"duration":{"second":57,"nanosecond":882000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":43,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":43000}}],"watch_group":43000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":43,"duration":{"second":57,"nanosecond":882000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":9,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":9000}}],"watch_group":9000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":9,"duration":{"second":57,"nanosecond":882000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":99000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":99000,"duration":{"second":57,"nanosecond":882000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":26000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":26000,"duration":{"second":57,"nanosecond":882000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":70000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":70000,"duration":{"second":57,"nanosecond":882000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":76,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":76000}}],"watch_group":76000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":76,"duration":{"second":57,"nanosecond":388000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":42,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":42000}}],"watch_group":42000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":42,"duration":{"second":57,"nanosecond":386000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":8,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":8000}}],"watch_group":8000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":8,"duration":{"second":55,"nanosecond":875000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":37000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":37000,"duration":{"second":57,"nanosecond":386000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":49000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":49000,"duration":{"second":57,"nanosecond":386000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":71000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":71000,"duration":{"second":57,"nanosecond":386000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":48000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":48000,"duration":{"second":57,"nanosecond":386000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":75,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":75000}}],"watch_group":75000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":75,"duration":{"second":57,"nanosecond":386000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":45,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":45000}}],"watch_group":45000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":45,"duration":{"second":57,"nanosecond":383000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":7,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":7000}}],"watch_group":7000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":7,"duration":{"second":57,"nanosecond":383000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":39000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":39000,"duration":{"second":57,"nanosecond":383000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":73000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":73000,"duration":{"second":57,"nanosecond":382000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":69000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":69000,"duration":{"second":57,"nanosecond":382000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":17000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":17000,"duration":{"second":57,"nanosecond":382000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":28000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":28000,"duration":{"second":57,"nanosecond":382000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":74,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":74000}}],"watch_group":74000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":74,"duration":{"second":57,"nanosecond":382000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":44,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":44000}}],"watch_group":44000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":44,"duration":{"second":57,"nanosecond":382000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":6,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":6000}}],"watch_group":6000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":6,"duration":{"second":55,"nanosecond":875000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":40000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":40000,"duration":{"second":57,"nanosecond":382000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":81,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":81000}}],"watch_group":81000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":81,"duration":{"second":57,"nanosecond":382000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":47,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":47000}}],"watch_group":47000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":47,"duration":{"second":57,"nanosecond":382000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":21,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":21000}}],"watch_group":21000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":21,"duration":{"second":55,"nanosecond":875000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":8000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":8000,"duration":{"second":57,"nanosecond":382000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":19000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":19000,"duration":{"second":57,"nanosecond":382000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":96000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":96000,"duration":{"second":57,"nanosecond":382000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":80,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":80000}}],"watch_group":80000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":80,"duration":{"second":57,"nanosecond":380000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":46,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":46000}}],"watch_group":46000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":46,"duration":{"second":57,"nanosecond":380000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":20,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":20000}}],"watch_group":20000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":20,"duration":{"second":57,"nanosecond":380000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":52000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":52000,"duration":{"second":57,"nanosecond":380000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":6000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":6000,"duration":{"second":57,"nanosecond":380000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":79,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":79000}}],"watch_group":79000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":79,"duration":{"second":57,"nanosecond":380000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":49,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":49000}}],"watch_group":49000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":49,"duration":{"second":56,"nanosecond":887000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":19,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":19000}}],"watch_group":19000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":19,"duration":{"second":56,"nanosecond":887000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":50000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":50000,"duration":{"second":56,"nanosecond":887000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":72000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":72000,"duration":{"second":56,"nanosecond":887000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":30000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":30000,"duration":{"second":56,"nanosecond":886000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":78,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":78000}}],"watch_group":78000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":78,"duration":{"second":56,"nanosecond":886000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":48,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":48000}}],"watch_group":48000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":48,"duration":{"second":56,"nanosecond":885000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":18,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":18000}}],"watch_group":18000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":18,"duration":{"second":56,"nanosecond":885000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":51000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":51000,"duration":{"second":56,"nanosecond":885000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":85,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":85000}}],"watch_group":85000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":85,"duration":{"second":56,"nanosecond":885000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":55000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":55000,"duration":{"second":56,"nanosecond":884000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":51,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":51000}}],"watch_group":51000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":51,"duration":{"second":56,"nanosecond":380000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":17,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":17000}}],"watch_group":17000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":17,"duration":{"second":56,"nanosecond":380000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":21000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":21000,"duration":{"second":56,"nanosecond":380000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":4000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":4000,"duration":{"second":56,"nanosecond":380000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":84,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":84000}}],"watch_group":84000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":84,"duration":{"second":56,"nanosecond":380000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":50,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":50000}}],"watch_group":50000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":50,"duration":{"second":56,"nanosecond":380000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":16,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":16000}}],"watch_group":16000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":16,"duration":{"second":56,"nanosecond":380000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":10000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":10000,"duration":{"second":56,"nanosecond":380000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":54000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":54000,"duration":{"second":56,"nanosecond":380000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":83,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":83000}}],"watch_group":83000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":83,"duration":{"second":56,"nanosecond":380000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":32000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":32000,"duration":{"second":56,"nanosecond":380000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":53,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":53000}}],"watch_group":53000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":53,"duration":{"second":55,"nanosecond":875000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":15,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":15000}}],"watch_group":15000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":15,"duration":{"second":56,"nanosecond":380000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":2000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":2000,"duration":{"second":56,"nanosecond":380000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":82,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":82000}}],"watch_group":82000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":82,"duration":{"second":56,"nanosecond":380000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":52,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":52000}}],"watch_group":52000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":52,"duration":{"second":56,"nanosecond":380000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":14,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":14000}}],"watch_group":14000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":14,"duration":{"second":56,"nanosecond":380000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":53000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":53000,"duration":{"second":56,"nanosecond":380000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":12000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":12000,"duration":{"second":56,"nanosecond":380000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":23000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":23000,"duration":{"second":56,"nanosecond":380000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":94000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":94000,"duration":{"second":56,"nanosecond":380000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}}],"flow-node-inventory:snapshot-gathering-status-end":{"succeeded":true,"end":"2026-04-08T00:59:25.146Z"}},{"id":"openflow:2","flow-node-inventory:port-number":54944,"flow-node-inventory:table":[{"id":62,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":28,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":2,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":224,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":181,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":147,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":106,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":61,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":27,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":1,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":223,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":182,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":148,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":105,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":60,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":30,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":0,"flow":[{"id":"71","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.71/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":71}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":229000000}},"flags":""},{"id":"11","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.11/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":11}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":228000000}},"flags":""},{"id":"70","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.70/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":70}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":229000000}},"flags":""},{"id":"10","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.10/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":10}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":228000000}},"flags":""},{"id":"60","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.60/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":60}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":229000000}},"flags":""},{"id":"13","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.13/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":13}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":228000000}},"flags":""},{"id":"12","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.12/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":12}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":228000000}},"flags":""},{"id":"80","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.80/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":80}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":229000000}},"flags":""},{"id":"93","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.93/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":93}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":228000000}},"flags":""},{"id":"92","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.92/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":92}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":228000000}},"flags":""},{"id":"82","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.82/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":82}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":229000000}},"flags":""},{"id":"91","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.91/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":91}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":228000000}},"flags":""},{"id":"81","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.81/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":81}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":229000000}},"flags":""},{"id":"90","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.90/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":90}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":228000000}},"flags":""},{"id":"9","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.9/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":9}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":228000000}},"flags":""},{"id":"84","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.84/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":84}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":229000000}},"flags":""},{"id":"97","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.97/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":97}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":228000000}},"flags":""},{"id":"66","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.66/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":66}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":229000000}},"flags":""},{"id":"79","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.79/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":79}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":229000000}},"flags":""},{"id":"54","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.54/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":54}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":229000000}},"flags":""},{"id":"45","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.45/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":45}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":229000000}},"flags":""},{"id":"83","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.83/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":83}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":229000000}},"flags":""},{"id":"96","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.96/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":96}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":228000000}},"flags":""},{"id":"65","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.65/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":65}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":229000000}},"flags":""},{"id":"78","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.78/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":78}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":229000000}},"flags":""},{"id":"20","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.20/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":20}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":228000000}},"flags":""},{"id":"55","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.55/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":55}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":229000000}},"flags":""},{"id":"46","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.46/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":46}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":229000000}},"flags":""},{"id":"7","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.7/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":7}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":228000000}},"flags":""},{"id":"86","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.86/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":86}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":229000000}},"flags":""},{"id":"95","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.95/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":95}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":228000000}},"flags":""},{"id":"68","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.68/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":68}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":229000000}},"flags":""},{"id":"77","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.77/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":77}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":229000000}},"flags":""},{"id":"30","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.30/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":30}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":229000000}},"flags":""},{"id":"56","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.56/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":56}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":229000000}},"flags":""},{"id":"43","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.43/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":43}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":229000000}},"flags":""},{"id":"8","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.8/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":8}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":228000000}},"flags":""},{"id":"85","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.85/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":85}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":229000000}},"flags":""},{"id":"94","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.94/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":94}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":228000000}},"flags":""},{"id":"67","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.67/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":67}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":229000000}},"flags":""},{"id":"76","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.76/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":76}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":229000000}},"flags":""},{"id":"31","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.31/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":31}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":229000000}},"flags":""},{"id":"57","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.57/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":57}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":229000000}},"flags":""},{"id":"44","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.44/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":44}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":229000000}},"flags":""},{"id":"5","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.5/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":5}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":228000000}},"flags":""},{"id":"88","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.88/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":88}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":229000000}},"flags":""},{"id":"62","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.62/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":62}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":229000000}},"flags":""},{"id":"75","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.75/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":75}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":229000000}},"flags":""},{"id":"32","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.32/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":32}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":229000000}},"flags":""},{"id":"23","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.23/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":23}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":228000000}},"flags":""},{"id":"50","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.50/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":50}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":228000000}},"flags":""},{"id":"41","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.41/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":41}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":229000000}},"flags":""},{"id":"6","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.6/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":6}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":228000000}},"flags":""},{"id":"100","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.100/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":100}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":229000000}},"flags":""},{"id":"87","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.87/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":87}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":229000000}},"flags":""},{"id":"61","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.61/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":61}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":229000000}},"flags":""},{"id":"74","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.74/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":74}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":229000000}},"flags":""},{"id":"33","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.33/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":33}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":229000000}},"flags":""},{"id":"24","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.24/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":24}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":228000000}},"flags":""},{"id":"51","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.51/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":51}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":228000000}},"flags":""},{"id":"42","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.42/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":42}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":229000000}},"flags":""},{"id":"3","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.3/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":3}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":228000000}},"flags":""},{"id":"99","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.99/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":99}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":228000000}},"flags":""},{"id":"64","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.64/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":64}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":229000000}},"flags":""},{"id":"73","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.73/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":73}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":229000000}},"flags":""},{"id":"34","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.34/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":34}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":229000000}},"flags":""},{"id":"21","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.21/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":21}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":228000000}},"flags":""},{"id":"52","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.52/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":52}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":228000000}},"flags":""},{"id":"4","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.4/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":4}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":228000000}},"flags":""},{"id":"89","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.89/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":89}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":229000000}},"flags":""},{"id":"98","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.98/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":98}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":228000000}},"flags":""},{"id":"63","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.63/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":63}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":229000000}},"flags":""},{"id":"72","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.72/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":72}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":229000000}},"flags":""},{"id":"35","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.35/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":35}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":229000000}},"flags":""},{"id":"22","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.22/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":22}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":228000000}},"flags":""},{"id":"53","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.53/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":53}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":229000000}},"flags":""},{"id":"40","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.40/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":40}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":229000000}},"flags":""},{"id":"#UF$TABLE*0-2","table_id":0,"priority":0,"cookie_mask":"0","idle-timeout":0,"cookie":"10","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"output-action":{"max-length":65535,"output-node-connector":"CONTROLLER"}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"31","byte-count":"2500","duration":{"second":55,"nanosecond":108000000}},"flags":"SEND_FLOW_REM"},{"id":"37","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.37/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":37}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":228000000}},"flags":""},{"id":"28","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.28/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":28}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":228000000}},"flags":""},{"id":"36","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.36/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":36}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":229000000}},"flags":""},{"id":"27","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.27/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":27}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":228000000}},"flags":""},{"id":"39","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.39/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":39}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":228000000}},"flags":""},{"id":"26","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.26/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":26}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":228000000}},"flags":""},{"id":"38","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.38/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":38}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":228000000}},"flags":""},{"id":"25","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.25/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":25}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":228000000}},"flags":""},{"id":"69","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.69/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":69}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":229000000}},"flags":""},{"id":"59","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.59/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":59}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":229000000}},"flags":""},{"id":"58","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.58/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":58}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":229000000}},"flags":""},{"id":"49","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.49/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":49}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":229000000}},"flags":""},{"id":"48","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.48/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":48}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":229000000}},"flags":""},{"id":"29","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.29/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":29}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":228000000}},"flags":""},{"id":"47","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.47/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":47}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":229000000}},"flags":""},{"id":"18","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.18/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":18}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":229000000}},"flags":""},{"id":"19","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.19/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":19}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":229000000}},"flags":""},{"id":"14","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.14/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":14}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":229000000}},"flags":""},{"id":"15","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.15/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":15}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":229000000}},"flags":""},{"id":"1","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.1/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":1}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":228000000}},"flags":""},{"id":"16","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.16/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":16}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":229000000}},"flags":""},{"id":"2","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.2/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":2}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":229000000}},"flags":""},{"id":"17","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.17/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":17}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":55,"nanosecond":229000000}},"flags":""}],"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"53","active-flows":101,"packets-matched":"41"}},{"id":226,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":179,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":149,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":104,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":59,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":29,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":225,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":180,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":150,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":103,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":66,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":32,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":220,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":185,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":151,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":102,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":65,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":31,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":253,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":219,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":186,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":152,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":101,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":64,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":34,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":252,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":222,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":183,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":153,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":100,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":63,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":33,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":251,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":221,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":184,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":154,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":99,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":54,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":20,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":250,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":216,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":189,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":155,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":129,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":114,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":53,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":19,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":249,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":215,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":190,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":156,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":130,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":113,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":52,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":22,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":248,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":218,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":187,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":157,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":112,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":51,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":21,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":247,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":217,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":188,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":158,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":128,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":111,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":58,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":24,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":246,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":212,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":193,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":159,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":110,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":57,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":23,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":245,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":211,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":194,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":160,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":109,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":56,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":26,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":244,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":214,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":191,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":161,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":108,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":55,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":25,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":243,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":213,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":192,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":162,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":107,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":77,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":43,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":17,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":239,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":198,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":164,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":138,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":119,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":89,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":78,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":44,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":18,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":240,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":197,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":163,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":137,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":120,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":90,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":75,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":45,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":15,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":241,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":196,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":166,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":136,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":121,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":87,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":76,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":46,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":16,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":242,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":195,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":165,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":135,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":122,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":88,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":81,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":47,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":13,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":235,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":202,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":168,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":134,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":115,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":85,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":82,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":48,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":14,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":236,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":201,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":167,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":133,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":116,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":86,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":79,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":49,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":11,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":237,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":200,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":170,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":132,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":117,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":83,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":80,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":50,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":12,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":238,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":199,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":169,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":131,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":118,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":84,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":69,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":35,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":9,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":231,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":206,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":172,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":146,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":127,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":97,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":70,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":36,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":10,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":232,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":205,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":171,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":145,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":98,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":67,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":37,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":7,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":233,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":204,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":174,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":144,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":95,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":68,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":38,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":8,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":234,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":203,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":173,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":143,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":96,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":73,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":39,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":5,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":227,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":210,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":176,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":142,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":123,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":93,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":74,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":40,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":6,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":228,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":209,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":175,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":141,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":124,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":94,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":71,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":41,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":3,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":229,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":208,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":178,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":140,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":125,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":91,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":72,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":42,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":4,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":230,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":207,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":177,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":139,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":126,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":92,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}}],"opendaylight-group-statistics:group-features":{"max-groups":[4294967040],"group-types-supported":["opendaylight-group-types:group-all","opendaylight-group-types:group-ff","opendaylight-group-types:group-select","opendaylight-group-types:group-indirect"],"group-capabilities-supported":["opendaylight-group-types:chaining","opendaylight-group-types:select-weight","opendaylight-group-types:select-liveness"],"actions":[67076097]},"flow-node-inventory:manufacturer":"Nicira, Inc.","flow-node-inventory:description":"s2","flow-node-inventory:hardware":"Open vSwitch","flow-node-inventory:switch-features":{"max_tables":254,"capabilities":["flow-node-inventory:flow-feature-capability-table-stats","flow-node-inventory:flow-feature-capability-group-stats","flow-node-inventory:flow-feature-capability-queue-stats","flow-node-inventory:flow-feature-capability-flow-stats","flow-node-inventory:flow-feature-capability-port-stats"],"max_buffers":0},"flow-node-inventory:snapshot-gathering-status-start":{"begin":"2026-04-08T00:59:25.116Z"},"flow-node-inventory:software":"2.17.11","node-connector":[{"id":"openflow:2:3","flow-node-inventory:port-number":3,"flow-node-inventory:hardware-address":"da:7c:fc:7d:24:d4","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s2-eth3","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"27","received":"23"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":60,"nanosecond":434000000},"bytes":{"transmitted":"2274","received":"1922"},"receive-crc-error":"0"}},{"id":"openflow:2:LOCAL","flow-node-inventory:port-number":4294967294,"flow-node-inventory:hardware-address":"ee:be:cf:9b:06:44","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s2","flow-node-inventory:current-feature":"","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":0,"flow-node-inventory:state":{"live":false,"blocked":false,"link-down":true},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"PORT-DOWN","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"0","received":"0"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":60,"nanosecond":429000000},"bytes":{"transmitted":"0","received":"0"},"receive-crc-error":"0"}},{"id":"openflow:2:2","flow-node-inventory:port-number":2,"flow-node-inventory:hardware-address":"76:f5:91:ad:d8:c6","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s2-eth2","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"27","received":"23"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":60,"nanosecond":434000000},"bytes":{"transmitted":"2274","received":"1922"},"receive-crc-error":"0"}},{"id":"openflow:2:1","flow-node-inventory:port-number":1,"flow-node-inventory:hardware-address":"96:61:91:36:76:0b","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s2-eth1","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"29","received":"10"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":60,"nanosecond":434000000},"bytes":{"transmitted":"2450","received":"796"},"receive-crc-error":"0"}}],"flow-node-inventory:ip-address":"10.30.170.192","flow-node-inventory:serial-number":"None","flow-node-inventory:group":[{"group-id":56,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":56000}}],"watch_group":56000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":56,"duration":{"second":56,"nanosecond":387000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":22,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":22000}}],"watch_group":22000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":22,"duration":{"second":56,"nanosecond":387000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":99,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":99000}}],"watch_group":99000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":99,"duration":{"second":56,"nanosecond":387000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":34000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":34000,"duration":{"second":59,"nanosecond":80000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":89000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":89000,"duration":{"second":59,"nanosecond":80000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":60000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":60000,"duration":{"second":59,"nanosecond":80000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":91000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":91000,"duration":{"second":59,"nanosecond":80000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":57,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":57000}}],"watch_group":57000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":57,"duration":{"second":56,"nanosecond":387000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":23,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":23000}}],"watch_group":23000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":23,"duration":{"second":55,"nanosecond":890000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":14000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":14000,"duration":{"second":59,"nanosecond":80000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":98,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":98000}}],"watch_group":98000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":98,"duration":{"second":55,"nanosecond":890000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":56000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":56000,"duration":{"second":59,"nanosecond":80000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":85000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":85000,"duration":{"second":59,"nanosecond":80000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":54,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":54000}}],"watch_group":54000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":54,"duration":{"second":55,"nanosecond":889000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":24,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":24000}}],"watch_group":24000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":24,"duration":{"second":55,"nanosecond":890000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":36000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":36000,"duration":{"second":59,"nanosecond":80000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":87000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":87000,"duration":{"second":59,"nanosecond":80000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":59000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":59000,"duration":{"second":59,"nanosecond":80000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":25000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":25000,"duration":{"second":59,"nanosecond":80000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":43000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":43000,"duration":{"second":59,"nanosecond":80000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":55,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":55000}}],"watch_group":55000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":55,"duration":{"second":55,"nanosecond":890000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":25,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":25000}}],"watch_group":25000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":25,"duration":{"second":58,"nanosecond":896000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":100,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":100000}}],"watch_group":100000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":100,"duration":{"second":55,"nanosecond":890000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":58000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":58000,"duration":{"second":58,"nanosecond":896000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":86000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":86000,"duration":{"second":58,"nanosecond":896000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":60,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":60000}}],"watch_group":60000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":60,"duration":{"second":58,"nanosecond":895000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":26,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":26000}}],"watch_group":26000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":26,"duration":{"second":55,"nanosecond":890000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":41000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":41000,"duration":{"second":58,"nanosecond":895000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":95,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":95000}}],"watch_group":95000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":95,"duration":{"second":55,"nanosecond":890000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":82000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":82000,"duration":{"second":58,"nanosecond":895000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":61,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":61000}}],"watch_group":61000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":61,"duration":{"second":55,"nanosecond":890000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":27,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":27000}}],"watch_group":27000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":27,"duration":{"second":55,"nanosecond":890000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":94,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":94000}}],"watch_group":94000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":94,"duration":{"second":55,"nanosecond":890000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":98000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":98000,"duration":{"second":58,"nanosecond":894000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":27000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":27000,"duration":{"second":58,"nanosecond":895000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":57000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":57000,"duration":{"second":58,"nanosecond":895000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":16000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":16000,"duration":{"second":58,"nanosecond":895000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":83000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":83000,"duration":{"second":58,"nanosecond":895000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":58,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":58000}}],"watch_group":58000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":58,"duration":{"second":58,"nanosecond":395000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":28,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":28000}}],"watch_group":28000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":28,"duration":{"second":55,"nanosecond":890000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":97,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":97000}}],"watch_group":97000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":97,"duration":{"second":55,"nanosecond":890000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":100000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":100000,"duration":{"second":58,"nanosecond":395000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":59,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":59000}}],"watch_group":59000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":59,"duration":{"second":58,"nanosecond":395000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":38000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":38000,"duration":{"second":58,"nanosecond":394000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":29,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":29000}}],"watch_group":29000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":29,"duration":{"second":55,"nanosecond":890000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":96,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":96000}}],"watch_group":96000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":96,"duration":{"second":55,"nanosecond":890000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":84000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":84000,"duration":{"second":58,"nanosecond":395000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":64,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":64000}}],"watch_group":64000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":64,"duration":{"second":55,"nanosecond":890000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":30,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":30000}}],"watch_group":30000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":30,"duration":{"second":55,"nanosecond":890000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":4,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":4000}}],"watch_group":4000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":4,"duration":{"second":55,"nanosecond":886000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":91,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":91000}}],"watch_group":91000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":91,"duration":{"second":58,"nanosecond":395000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":7000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":7000,"duration":{"second":58,"nanosecond":395000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":29000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":29000,"duration":{"second":58,"nanosecond":394000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":65,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":65000}}],"watch_group":65000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":65,"duration":{"second":55,"nanosecond":886000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":31,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":31000}}],"watch_group":31000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":31,"duration":{"second":55,"nanosecond":886000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":5,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":5000}}],"watch_group":5000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":5,"duration":{"second":55,"nanosecond":886000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":90,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":90000}}],"watch_group":90000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":90,"duration":{"second":55,"nanosecond":886000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":18000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":18000,"duration":{"second":58,"nanosecond":393000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":62,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":62000}}],"watch_group":62000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":62,"duration":{"second":55,"nanosecond":886000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":65000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":65000,"duration":{"second":58,"nanosecond":394000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":32,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":32000}}],"watch_group":32000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":32,"duration":{"second":55,"nanosecond":886000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":2,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":2000}}],"watch_group":2000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":2,"duration":{"second":55,"nanosecond":886000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":93,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":93000}}],"watch_group":93000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":93,"duration":{"second":55,"nanosecond":886000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":64000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":64000,"duration":{"second":58,"nanosecond":393000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":63,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":63000}}],"watch_group":63000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":63,"duration":{"second":55,"nanosecond":886000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":33,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":33000}}],"watch_group":33000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":33,"duration":{"second":55,"nanosecond":886000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":3,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":3000}}],"watch_group":3000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":3,"duration":{"second":55,"nanosecond":886000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":80000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":80000,"duration":{"second":58,"nanosecond":393000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":9000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":9000,"duration":{"second":58,"nanosecond":393000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":92,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":92000}}],"watch_group":92000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":92,"duration":{"second":55,"nanosecond":886000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":5000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":5000,"duration":{"second":58,"nanosecond":389000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":20000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":20000,"duration":{"second":58,"nanosecond":389000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":81000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":81000,"duration":{"second":58,"nanosecond":389000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":97000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":97000,"duration":{"second":58,"nanosecond":389000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":31000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":31000,"duration":{"second":58,"nanosecond":389000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":68,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":68000}}],"watch_group":68000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":68,"duration":{"second":55,"nanosecond":886000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":11000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":11000,"duration":{"second":58,"nanosecond":389000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":34,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":34000}}],"watch_group":34000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":34,"duration":{"second":58,"nanosecond":389000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":78000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":78000,"duration":{"second":58,"nanosecond":389000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":87,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":87000}}],"watch_group":87000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":87,"duration":{"second":58,"nanosecond":388000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":93000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":93000,"duration":{"second":58,"nanosecond":389000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":63000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":63000,"duration":{"second":58,"nanosecond":388000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":69,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":69000}}],"watch_group":69000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":69,"duration":{"second":55,"nanosecond":886000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":35,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":35000}}],"watch_group":35000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":35,"duration":{"second":55,"nanosecond":886000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":1,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":1000}}],"watch_group":1000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":1,"duration":{"second":55,"nanosecond":886000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":33000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":33000,"duration":{"second":58,"nanosecond":389000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":79000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":79000,"duration":{"second":58,"nanosecond":389000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":86,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":86000}}],"watch_group":86000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":86,"duration":{"second":58,"nanosecond":389000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":62000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":62000,"duration":{"second":58,"nanosecond":389000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":66,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":66000}}],"watch_group":66000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":66,"duration":{"second":55,"nanosecond":886000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":77000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":77000,"duration":{"second":58,"nanosecond":389000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":36,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":36000}}],"watch_group":36000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":36,"duration":{"second":58,"nanosecond":389000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":89,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":89000}}],"watch_group":89000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":89,"duration":{"second":58,"nanosecond":389000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":22000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":22000,"duration":{"second":58,"nanosecond":387000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":95000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":95000,"duration":{"second":58,"nanosecond":387000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":67,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":67000}}],"watch_group":67000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":67,"duration":{"second":55,"nanosecond":886000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":37,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":37000}}],"watch_group":37000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":37,"duration":{"second":55,"nanosecond":886000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":1000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":1000,"duration":{"second":58,"nanosecond":385000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":88,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":88000}}],"watch_group":88000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":88,"duration":{"second":55,"nanosecond":884000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":61000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":61000,"duration":{"second":58,"nanosecond":385000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":3000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":3000,"duration":{"second":58,"nanosecond":385000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":73,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":73000}}],"watch_group":73000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":73,"duration":{"second":55,"nanosecond":883000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":39,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":39000}}],"watch_group":39000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":39,"duration":{"second":55,"nanosecond":884000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":13,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":13000}}],"watch_group":13000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":13,"duration":{"second":55,"nanosecond":884000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":74000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":74000,"duration":{"second":58,"nanosecond":385000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":15000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":15000,"duration":{"second":58,"nanosecond":385000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":44000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":44000,"duration":{"second":58,"nanosecond":385000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":45000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":45000,"duration":{"second":58,"nanosecond":385000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":68000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":68000,"duration":{"second":58,"nanosecond":385000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":72,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":72000}}],"watch_group":72000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":72,"duration":{"second":55,"nanosecond":884000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":38,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":38000}}],"watch_group":38000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":38,"duration":{"second":57,"nanosecond":889000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":75000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":75000,"duration":{"second":57,"nanosecond":889000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":12,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":12000}}],"watch_group":12000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":12,"duration":{"second":55,"nanosecond":884000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":35000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":35000,"duration":{"second":57,"nanosecond":889000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":24000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":24000,"duration":{"second":57,"nanosecond":889000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":90000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":90000,"duration":{"second":57,"nanosecond":889000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":71,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":71000}}],"watch_group":71000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":71,"duration":{"second":55,"nanosecond":884000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":41,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":41000}}],"watch_group":41000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":41,"duration":{"second":57,"nanosecond":889000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":42000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":42000,"duration":{"second":57,"nanosecond":888000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":11,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":11000}}],"watch_group":11000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":11,"duration":{"second":57,"nanosecond":889000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":92000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":92000,"duration":{"second":57,"nanosecond":889000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":46000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":46000,"duration":{"second":57,"nanosecond":889000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":67000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":67000,"duration":{"second":57,"nanosecond":889000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":70,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":70000}}],"watch_group":70000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":70,"duration":{"second":55,"nanosecond":884000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":76000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":76000,"duration":{"second":57,"nanosecond":889000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":40,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":40000}}],"watch_group":40000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":40,"duration":{"second":55,"nanosecond":884000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":13000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":13000,"duration":{"second":57,"nanosecond":889000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":10,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":10000}}],"watch_group":10000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":10,"duration":{"second":55,"nanosecond":884000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":88000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":88000,"duration":{"second":57,"nanosecond":889000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":47000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":47000,"duration":{"second":57,"nanosecond":889000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":66000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":66000,"duration":{"second":57,"nanosecond":889000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":77,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":77000}}],"watch_group":77000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":77,"duration":{"second":57,"nanosecond":889000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":43,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":43000}}],"watch_group":43000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":43,"duration":{"second":57,"nanosecond":889000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":9,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":9000}}],"watch_group":9000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":9,"duration":{"second":57,"nanosecond":889000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":99000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":99000,"duration":{"second":57,"nanosecond":889000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":26000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":26000,"duration":{"second":57,"nanosecond":889000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":70000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":70000,"duration":{"second":57,"nanosecond":889000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":76,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":76000}}],"watch_group":76000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":76,"duration":{"second":57,"nanosecond":385000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":42,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":42000}}],"watch_group":42000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":42,"duration":{"second":57,"nanosecond":384000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":8,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":8000}}],"watch_group":8000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":8,"duration":{"second":55,"nanosecond":884000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":37000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":37000,"duration":{"second":57,"nanosecond":385000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":49000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":49000,"duration":{"second":57,"nanosecond":385000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":71000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":71000,"duration":{"second":57,"nanosecond":385000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":48000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":48000,"duration":{"second":57,"nanosecond":385000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":75,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":75000}}],"watch_group":75000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":75,"duration":{"second":57,"nanosecond":385000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":45,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":45000}}],"watch_group":45000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":45,"duration":{"second":57,"nanosecond":385000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":7,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":7000}}],"watch_group":7000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":7,"duration":{"second":57,"nanosecond":385000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":39000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":39000,"duration":{"second":57,"nanosecond":385000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":73000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":73000,"duration":{"second":57,"nanosecond":385000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":69000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":69000,"duration":{"second":57,"nanosecond":385000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":17000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":17000,"duration":{"second":57,"nanosecond":385000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":28000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":28000,"duration":{"second":57,"nanosecond":385000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":74,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":74000}}],"watch_group":74000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":74,"duration":{"second":57,"nanosecond":385000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":44,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":44000}}],"watch_group":44000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":44,"duration":{"second":57,"nanosecond":385000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":6,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":6000}}],"watch_group":6000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":6,"duration":{"second":55,"nanosecond":883000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":40000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":40000,"duration":{"second":57,"nanosecond":385000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":81,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":81000}}],"watch_group":81000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":81,"duration":{"second":57,"nanosecond":385000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":47,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":47000}}],"watch_group":47000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":47,"duration":{"second":57,"nanosecond":385000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":21,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":21000}}],"watch_group":21000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":21,"duration":{"second":55,"nanosecond":884000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":8000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":8000,"duration":{"second":57,"nanosecond":384000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":19000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":19000,"duration":{"second":57,"nanosecond":385000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":96000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":96000,"duration":{"second":57,"nanosecond":385000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":80,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":80000}}],"watch_group":80000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":80,"duration":{"second":57,"nanosecond":385000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":46,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":46000}}],"watch_group":46000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":46,"duration":{"second":57,"nanosecond":385000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":20,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":20000}}],"watch_group":20000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":20,"duration":{"second":57,"nanosecond":384000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":52000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":52000,"duration":{"second":57,"nanosecond":385000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":6000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":6000,"duration":{"second":57,"nanosecond":385000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":79,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":79000}}],"watch_group":79000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":79,"duration":{"second":57,"nanosecond":385000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":49,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":49000}}],"watch_group":49000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":49,"duration":{"second":56,"nanosecond":894000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":19,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":19000}}],"watch_group":19000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":19,"duration":{"second":56,"nanosecond":894000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":50000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":50000,"duration":{"second":56,"nanosecond":893000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":72000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":72000,"duration":{"second":56,"nanosecond":893000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":30000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":30000,"duration":{"second":56,"nanosecond":893000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":78,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":78000}}],"watch_group":78000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":78,"duration":{"second":56,"nanosecond":892000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":48,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":48000}}],"watch_group":48000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":48,"duration":{"second":56,"nanosecond":890000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":18,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":18000}}],"watch_group":18000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":18,"duration":{"second":56,"nanosecond":891000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":51000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":51000,"duration":{"second":56,"nanosecond":890000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":85,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":85000}}],"watch_group":85000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":85,"duration":{"second":56,"nanosecond":890000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":55000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":55000,"duration":{"second":56,"nanosecond":890000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":51,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":51000}}],"watch_group":51000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":51,"duration":{"second":56,"nanosecond":393000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":17,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":17000}}],"watch_group":17000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":17,"duration":{"second":56,"nanosecond":393000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":21000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":21000,"duration":{"second":56,"nanosecond":393000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":4000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":4000,"duration":{"second":56,"nanosecond":393000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":84,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":84000}}],"watch_group":84000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":84,"duration":{"second":56,"nanosecond":393000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":50,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":50000}}],"watch_group":50000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":50,"duration":{"second":56,"nanosecond":392000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":16,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":16000}}],"watch_group":16000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":16,"duration":{"second":56,"nanosecond":392000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":10000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":10000,"duration":{"second":56,"nanosecond":392000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":54000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":54000,"duration":{"second":56,"nanosecond":387000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":83,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":83000}}],"watch_group":83000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":83,"duration":{"second":56,"nanosecond":387000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":32000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":32000,"duration":{"second":56,"nanosecond":387000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":53,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":53000}}],"watch_group":53000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":53,"duration":{"second":55,"nanosecond":883000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":15,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":15000}}],"watch_group":15000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":15,"duration":{"second":56,"nanosecond":387000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":2000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":2000,"duration":{"second":56,"nanosecond":387000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":82,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":82000}}],"watch_group":82000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":82,"duration":{"second":56,"nanosecond":387000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":52,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":52000}}],"watch_group":52000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":52,"duration":{"second":56,"nanosecond":387000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":14,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":14000}}],"watch_group":14000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":14,"duration":{"second":56,"nanosecond":387000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":53000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":53000,"duration":{"second":56,"nanosecond":387000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":12000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":12000,"duration":{"second":56,"nanosecond":387000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":23000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":23000,"duration":{"second":56,"nanosecond":387000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":94000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":94000,"duration":{"second":56,"nanosecond":387000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}}],"flow-node-inventory:snapshot-gathering-status-end":{"succeeded":true,"end":"2026-04-08T00:59:25.177Z"}}]}}</msg>
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:59:27.492281" elapsed="0.010618"/>
</kw>
<kw name="Get Count" owner="BuiltIn">
<msg time="2026-04-08T00:59:27.506241" level="INFO">Item found from container 303 times.</msg>
<msg time="2026-04-08T00:59:27.506325" level="INFO">${count} = 303</msg>
<var>${count}</var>
<arg>${resp.text}</arg>
<arg>"priority"</arg>
<doc>Returns and logs how many times ``item`` is found from ``container``.</doc>
<status status="PASS" start="2026-04-08T00:59:27.503095" elapsed="0.003255"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-04-08T00:59:27.506907" level="FAIL">303 != 300</msg>
<arg>${count}</arg>
<arg>${flows}</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="FAIL" start="2026-04-08T00:59:27.506546" elapsed="0.000436">303 != 300</status>
</kw>
<arg>${less_flows}</arg>
<doc>Check number of flows in the inventory.</doc>
<status status="FAIL" start="2026-04-08T00:59:27.430473" elapsed="0.076626">303 != 300</status>
</kw>
<kw name="Check Number Of Flows On Member" owner="ClusterOpenFlow">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:59:28.510733" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:59:28.509977" elapsed="0.000822"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:59:28.510911" elapsed="0.000079"/>
</return>
<msg time="2026-04-08T00:59:28.511289" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:59:28.508988" elapsed="0.002356"/>
</kw>
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:59:28.564518" level="INFO">GET Request : url=http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01s3bfo0y24i1es90l47mavglv0.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:59:28.569042" level="INFO">GET Response : url=http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Transfer-Encoding': 'chunked'} 
 body={"opendaylight-inventory:nodes":{"node":[{"id":"openflow:3","flow-node-inventory:port-number":54950,"flow-node-inventory:table":[{"id":62,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":28,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":2,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":224,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":181,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":147,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":106,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":61,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":27,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":1,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":223,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":182,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":148,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":105,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":60,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":30,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":0,"flow":[{"id":"69","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.69/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":69}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":282000000}},"flags":""},{"id":"60","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.60/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":60}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":282000000}},"flags":""},{"id":"68","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.68/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":68}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":282000000}},"flags":""},{"id":"67","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.67/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":67}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":282000000}},"flags":""},{"id":"66","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.66/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":66}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":282000000}},"flags":""},{"id":"65","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.65/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":65}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":282000000}},"flags":""},{"id":"64","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.64/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":64}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":282000000}},"flags":""},{"id":"63","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.63/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":63}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":282000000}},"flags":""},{"id":"62","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.62/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":62}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":282000000}},"flags":""},{"id":"61","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.61/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":61}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":282000000}},"flags":""},{"id":"100","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.100/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":100}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":282000000}},"flags":""},{"id":"71","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.71/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":71}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":282000000}},"flags":""},{"id":"70","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.70/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":70}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":282000000}},"flags":""},{"id":"79","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.79/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":79}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":282000000}},"flags":""},{"id":"78","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.78/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":78}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":282000000}},"flags":""},{"id":"77","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.77/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":77}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":282000000}},"flags":""},{"id":"76","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.76/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":76}}]}}]},"hard-timeout":0,"opendaylight-flow-statisti... (set the log level to DEBUG or TRACE to see the full content) 
 </msg>
<msg time="2026-04-08T00:59:28.569614" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${RFC8040_OPERATIONAL_NODES_API}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:59:28.511695" elapsed="0.057960"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:59:28.574334" level="INFO">{"opendaylight-inventory:nodes":{"node":[{"id":"openflow:3","flow-node-inventory:port-number":54950,"flow-node-inventory:table":[{"id":62,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":28,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":2,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":224,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":181,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":147,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":106,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":61,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":27,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":1,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":223,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":182,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":148,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":105,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":60,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":30,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":0,"flow":[{"id":"69","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.69/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":69}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":282000000}},"flags":""},{"id":"60","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.60/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":60}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":282000000}},"flags":""},{"id":"68","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.68/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":68}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":282000000}},"flags":""},{"id":"67","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.67/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":67}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":282000000}},"flags":""},{"id":"66","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.66/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":66}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":282000000}},"flags":""},{"id":"65","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.65/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":65}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":282000000}},"flags":""},{"id":"64","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.64/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":64}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":282000000}},"flags":""},{"id":"63","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.63/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":63}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":282000000}},"flags":""},{"id":"62","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.62/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":62}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":282000000}},"flags":""},{"id":"61","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.61/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":61}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":282000000}},"flags":""},{"id":"100","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.100/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":100}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":282000000}},"flags":""},{"id":"71","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.71/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":71}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":282000000}},"flags":""},{"id":"70","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.70/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":70}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":282000000}},"flags":""},{"id":"79","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.79/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":79}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":282000000}},"flags":""},{"id":"78","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.78/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":78}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":282000000}},"flags":""},{"id":"77","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.77/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":77}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":282000000}},"flags":""},{"id":"76","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.76/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":76}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":282000000}},"flags":""},{"id":"75","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.75/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":75}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":282000000}},"flags":""},{"id":"74","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.74/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":74}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":282000000}},"flags":""},{"id":"73","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.73/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":73}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":282000000}},"flags":""},{"id":"72","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.72/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":72}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":282000000}},"flags":""},{"id":"82","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.82/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":82}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":282000000}},"flags":""},{"id":"81","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.81/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":81}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":282000000}},"flags":""},{"id":"80","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.80/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":80}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":282000000}},"flags":""},{"id":"89","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.89/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":89}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":282000000}},"flags":""},{"id":"88","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.88/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":88}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":282000000}},"flags":""},{"id":"87","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.87/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":87}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":282000000}},"flags":""},{"id":"86","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.86/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":86}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":282000000}},"flags":""},{"id":"85","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.85/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":85}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":282000000}},"flags":""},{"id":"84","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.84/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":84}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":282000000}},"flags":""},{"id":"83","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.83/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":83}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":282000000}},"flags":""},{"id":"19","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.19/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":19}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":282000000}},"flags":""},{"id":"18","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.18/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":18}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":282000000}},"flags":""},{"id":"17","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.17/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":17}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":282000000}},"flags":""},{"id":"16","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.16/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":16}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":282000000}},"flags":""},{"id":"15","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.15/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":15}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":282000000}},"flags":""},{"id":"14","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.14/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":14}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":282000000}},"flags":""},{"id":"2","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.2/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":2}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":282000000}},"flags":""},{"id":"93","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.93/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":93}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":282000000}},"flags":""},{"id":"92","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.92/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":92}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":282000000}},"flags":""},{"id":"91","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.91/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":91}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":282000000}},"flags":""},{"id":"90","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.90/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":90}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":282000000}},"flags":""},{"id":"13","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.13/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":13}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":282000000}},"flags":""},{"id":"12","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.12/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":12}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":282000000}},"flags":""},{"id":"11","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.11/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":11}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":282000000}},"flags":""},{"id":"99","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.99/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":99}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":282000000}},"flags":""},{"id":"10","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.10/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":10}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":282000000}},"flags":""},{"id":"98","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.98/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":98}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":282000000}},"flags":""},{"id":"97","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.97/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":97}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":282000000}},"flags":""},{"id":"96","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.96/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":96}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":281000000}},"flags":""},{"id":"95","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.95/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":95}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":281000000}},"flags":""},{"id":"94","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.94/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":94}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":281000000}},"flags":""},{"id":"29","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.29/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":29}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":281000000}},"flags":""},{"id":"28","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.28/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":28}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":281000000}},"flags":""},{"id":"27","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.27/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":27}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":281000000}},"flags":""},{"id":"26","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.26/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":26}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":281000000}},"flags":""},{"id":"25","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.25/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":25}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":281000000}},"flags":""},{"id":"9","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.9/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":9}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":281000000}},"flags":""},{"id":"8","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.8/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":8}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":281000000}},"flags":""},{"id":"7","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.7/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":7}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":281000000}},"flags":""},{"id":"6","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.6/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":6}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":281000000}},"flags":""},{"id":"5","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.5/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":5}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":281000000}},"flags":""},{"id":"4","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.4/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":4}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":281000000}},"flags":""},{"id":"3","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.3/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":3}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":281000000}},"flags":""},{"id":"24","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.24/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":24}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":281000000}},"flags":""},{"id":"23","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.23/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":23}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":281000000}},"flags":""},{"id":"22","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.22/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":22}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":281000000}},"flags":""},{"id":"21","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.21/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":21}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":281000000}},"flags":""},{"id":"20","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.20/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":20}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":281000000}},"flags":""},{"id":"39","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.39/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":39}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":281000000}},"flags":""},{"id":"38","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.38/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":38}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":281000000}},"flags":""},{"id":"37","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.37/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":37}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":281000000}},"flags":""},{"id":"36","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.36/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":36}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":281000000}},"flags":""},{"id":"35","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.35/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":35}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":281000000}},"flags":""},{"id":"34","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.34/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":34}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":281000000}},"flags":""},{"id":"33","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.33/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":33}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":281000000}},"flags":""},{"id":"32","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.32/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":32}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":281000000}},"flags":""},{"id":"31","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.31/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":31}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":281000000}},"flags":""},{"id":"30","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.30/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":30}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":281000000}},"flags":""},{"id":"49","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.49/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":49}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":281000000}},"flags":""},{"id":"48","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.48/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":48}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":281000000}},"flags":""},{"id":"47","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.47/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":47}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":281000000}},"flags":""},{"id":"#UF$TABLE*0-3","table_id":0,"priority":0,"cookie_mask":"0","idle-timeout":0,"cookie":"10","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"output-action":{"max-length":65535,"output-node-connector":"CONTROLLER"}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"19","byte-count":"1510","duration":{"second":58,"nanosecond":153000000}},"flags":"SEND_FLOW_REM"},{"id":"46","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.46/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":46}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":281000000}},"flags":""},{"id":"45","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.45/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":45}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":281000000}},"flags":""},{"id":"44","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.44/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":44}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":281000000}},"flags":""},{"id":"43","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.43/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":43}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":281000000}},"flags":""},{"id":"42","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.42/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":42}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":281000000}},"flags":""},{"id":"41","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.41/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":41}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":281000000}},"flags":""},{"id":"40","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.40/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":40}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":281000000}},"flags":""},{"id":"59","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.59/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":59}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":281000000}},"flags":""},{"id":"58","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.58/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":58}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":281000000}},"flags":""},{"id":"57","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.57/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":57}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":281000000}},"flags":""},{"id":"56","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.56/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":56}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":281000000}},"flags":""},{"id":"55","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.55/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":55}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":281000000}},"flags":""},{"id":"54","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.54/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":54}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":281000000}},"flags":""},{"id":"53","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.53/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":53}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":281000000}},"flags":""},{"id":"52","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.52/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":52}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":281000000}},"flags":""},{"id":"51","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.51/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":51}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":278000000}},"flags":""},{"id":"50","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.50/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":50}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":278000000}},"flags":""}],"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"37","active-flows":100,"packets-matched":"29"}},{"id":226,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":179,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":149,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":104,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":59,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":29,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":225,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":180,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":150,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":103,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":66,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":32,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":220,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":185,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":151,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":102,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":65,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":31,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":253,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":219,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":186,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":152,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":101,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":64,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":34,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":252,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":222,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":183,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":153,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":100,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":63,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":33,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":251,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":221,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":184,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":154,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":99,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":54,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":20,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":250,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":216,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":189,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":155,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":129,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":114,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":53,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":19,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":249,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":215,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":190,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":156,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":130,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":113,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":52,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":22,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":248,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":218,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":187,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":157,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":112,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":51,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":21,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":247,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":217,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":188,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":158,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":128,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":111,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":58,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":24,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":246,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":212,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":193,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":159,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":110,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":57,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":23,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":245,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":211,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":194,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":160,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":109,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":56,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":26,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":244,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":214,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":191,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":161,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":108,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":55,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":25,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":243,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":213,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":192,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":162,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":107,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":77,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":43,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":17,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":239,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":198,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":164,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":138,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":119,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":89,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":78,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":44,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":18,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":240,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":197,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":163,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":137,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":120,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":90,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":75,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":45,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":15,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":241,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":196,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":166,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":136,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":121,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":87,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":76,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":46,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":16,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":242,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":195,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":165,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":135,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":122,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":88,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":81,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":47,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":13,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":235,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":202,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":168,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":134,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":115,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":85,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":82,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":48,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":14,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":236,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":201,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":167,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":133,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":116,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":86,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":79,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":49,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":11,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":237,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":200,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":170,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":132,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":117,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":83,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":80,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":50,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":12,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":238,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":199,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":169,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":131,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":118,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":84,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":69,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":35,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":9,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":231,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":206,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":172,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":146,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":127,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":97,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":70,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":36,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":10,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":232,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":205,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":171,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":145,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":98,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":67,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":37,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":7,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":233,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":204,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":174,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":144,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":95,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":68,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":38,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":8,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":234,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":203,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":173,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":143,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":96,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":73,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":39,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":5,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":227,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":210,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":176,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":142,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":123,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":93,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":74,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":40,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":6,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":228,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":209,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":175,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":141,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":124,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":94,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":71,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":41,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":3,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":229,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":208,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":178,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":140,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":125,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":91,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":72,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":42,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":4,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":230,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":207,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":177,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":139,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":126,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":92,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}}],"opendaylight-group-statistics:group-features":{"max-groups":[4294967040],"group-types-supported":["opendaylight-group-types:group-all","opendaylight-group-types:group-ff","opendaylight-group-types:group-select","opendaylight-group-types:group-indirect"],"group-capabilities-supported":["opendaylight-group-types:chaining","opendaylight-group-types:select-weight","opendaylight-group-types:select-liveness"],"actions":[67076097]},"flow-node-inventory:manufacturer":"Nicira, Inc.","flow-node-inventory:description":"s3","flow-node-inventory:hardware":"Open vSwitch","flow-node-inventory:switch-features":{"max_tables":254,"capabilities":["flow-node-inventory:flow-feature-capability-table-stats","flow-node-inventory:flow-feature-capability-group-stats","flow-node-inventory:flow-feature-capability-queue-stats","flow-node-inventory:flow-feature-capability-flow-stats","flow-node-inventory:flow-feature-capability-port-stats"],"max_buffers":0},"flow-node-inventory:snapshot-gathering-status-start":{"begin":"2026-04-08T00:59:28.159Z"},"flow-node-inventory:software":"2.17.11","node-connector":[{"id":"openflow:3:LOCAL","flow-node-inventory:port-number":4294967294,"flow-node-inventory:hardware-address":"c2:87:c1:60:0d:43","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s3","flow-node-inventory:current-feature":"","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":0,"flow-node-inventory:state":{"live":false,"blocked":false,"link-down":true},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"PORT-DOWN","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"0","received":"0"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":63,"nanosecond":493000000},"bytes":{"transmitted":"0","received":"0"},"receive-crc-error":"0"}},{"id":"openflow:3:2","flow-node-inventory:port-number":2,"flow-node-inventory:hardware-address":"9e:72:98:8c:46:72","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s3-eth2","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"24","received":"29"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":63,"nanosecond":496000000},"bytes":{"transmitted":"2007","received":"2429"},"receive-crc-error":"0"}},{"id":"openflow:3:1","flow-node-inventory:port-number":1,"flow-node-inventory:hardware-address":"ca:ac:9a:41:42:1c","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s3-eth1","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"31","received":"10"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":63,"nanosecond":496000000},"bytes":{"transmitted":"2605","received":"796"},"receive-crc-error":"0"}}],"flow-node-inventory:ip-address":"10.30.170.192","flow-node-inventory:serial-number":"None","flow-node-inventory:group":[{"group-id":56,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":56000}}],"watch_group":56000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":56,"duration":{"second":59,"nanosecond":304000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":22,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":22000}}],"watch_group":22000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":22,"duration":{"second":59,"nanosecond":304000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":99,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":99000}}],"watch_group":99000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":99,"duration":{"second":59,"nanosecond":304000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":34000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":34000,"duration":{"second":62,"nanosecond":134000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":89000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":89000,"duration":{"second":62,"nanosecond":133000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":60000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":60000,"duration":{"second":62,"nanosecond":130000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":91000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":91000,"duration":{"second":62,"nanosecond":130000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":57,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":57000}}],"watch_group":57000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":57,"duration":{"second":59,"nanosecond":304000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":23,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":23000}}],"watch_group":23000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":23,"duration":{"second":58,"nanosecond":807000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":14000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":14000,"duration":{"second":62,"nanosecond":130000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":98,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":98000}}],"watch_group":98000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":98,"duration":{"second":58,"nanosecond":806000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":56000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":56000,"duration":{"second":62,"nanosecond":130000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":85000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":85000,"duration":{"second":62,"nanosecond":130000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":54,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":54000}}],"watch_group":54000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":54,"duration":{"second":58,"nanosecond":806000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":24,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":24000}}],"watch_group":24000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":24,"duration":{"second":58,"nanosecond":806000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":36000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":36000,"duration":{"second":62,"nanosecond":130000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":87000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":87000,"duration":{"second":62,"nanosecond":130000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":59000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":59000,"duration":{"second":62,"nanosecond":130000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":25000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":25000,"duration":{"second":62,"nanosecond":130000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":43000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":43000,"duration":{"second":62,"nanosecond":129000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":55,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":55000}}],"watch_group":55000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":55,"duration":{"second":58,"nanosecond":806000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":25,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":25000}}],"watch_group":25000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":25,"duration":{"second":61,"nanosecond":812000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":100,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":100000}}],"watch_group":100000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":100,"duration":{"second":58,"nanosecond":806000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":58000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":58000,"duration":{"second":61,"nanosecond":812000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":86000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":86000,"duration":{"second":61,"nanosecond":812000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":60,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":60000}}],"watch_group":60000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":60,"duration":{"second":61,"nanosecond":812000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":26,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":26000}}],"watch_group":26000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":26,"duration":{"second":58,"nanosecond":806000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":41000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":41000,"duration":{"second":61,"nanosecond":811000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":95,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":95000}}],"watch_group":95000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":95,"duration":{"second":58,"nanosecond":806000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":82000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":82000,"duration":{"second":61,"nanosecond":811000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":61,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":61000}}],"watch_group":61000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":61,"duration":{"second":58,"nanosecond":806000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":27,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":27000}}],"watch_group":27000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":27,"duration":{"second":58,"nanosecond":801000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":94,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":94000}}],"watch_group":94000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":94,"duration":{"second":58,"nanosecond":801000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":98000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":98000,"duration":{"second":61,"nanosecond":810000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":27000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":27000,"duration":{"second":61,"nanosecond":810000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":57000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":57000,"duration":{"second":61,"nanosecond":809000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":16000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":16000,"duration":{"second":61,"nanosecond":808000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":83000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":83000,"duration":{"second":61,"nanosecond":808000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":58,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":58000}}],"watch_group":58000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":58,"duration":{"second":61,"nanosecond":309000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":28,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":28000}}],"watch_group":28000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":28,"duration":{"second":58,"nanosecond":801000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":97,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":97000}}],"watch_group":97000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":97,"duration":{"second":58,"nanosecond":801000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":100000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":100000,"duration":{"second":61,"nanosecond":309000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":59,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":59000}}],"watch_group":59000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":59,"duration":{"second":61,"nanosecond":309000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":38000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":38000,"duration":{"second":61,"nanosecond":309000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":29,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":29000}}],"watch_group":29000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":29,"duration":{"second":58,"nanosecond":801000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":96,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":96000}}],"watch_group":96000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":96,"duration":{"second":58,"nanosecond":801000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":84000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":84000,"duration":{"second":61,"nanosecond":309000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":64,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":64000}}],"watch_group":64000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":64,"duration":{"second":58,"nanosecond":801000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":30,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":30000}}],"watch_group":30000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":30,"duration":{"second":58,"nanosecond":801000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":4,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":4000}}],"watch_group":4000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":4,"duration":{"second":58,"nanosecond":801000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":91,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":91000}}],"watch_group":91000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":91,"duration":{"second":61,"nanosecond":309000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":7000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":7000,"duration":{"second":61,"nanosecond":309000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":29000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":29000,"duration":{"second":61,"nanosecond":309000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":65,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":65000}}],"watch_group":65000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":65,"duration":{"second":58,"nanosecond":801000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":31,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":31000}}],"watch_group":31000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":31,"duration":{"second":58,"nanosecond":801000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":5,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":5000}}],"watch_group":5000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":5,"duration":{"second":58,"nanosecond":801000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":90,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":90000}}],"watch_group":90000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":90,"duration":{"second":58,"nanosecond":801000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":18000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":18000,"duration":{"second":61,"nanosecond":308000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":62,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":62000}}],"watch_group":62000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":62,"duration":{"second":58,"nanosecond":801000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":65000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":65000,"duration":{"second":61,"nanosecond":308000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":32,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":32000}}],"watch_group":32000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":32,"duration":{"second":58,"nanosecond":801000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":2,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":2000}}],"watch_group":2000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":2,"duration":{"second":58,"nanosecond":801000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":93,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":93000}}],"watch_group":93000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":93,"duration":{"second":58,"nanosecond":801000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":64000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":64000,"duration":{"second":61,"nanosecond":307000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":63,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":63000}}],"watch_group":63000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":63,"duration":{"second":58,"nanosecond":801000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":33,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":33000}}],"watch_group":33000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":33,"duration":{"second":58,"nanosecond":801000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":3,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":3000}}],"watch_group":3000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":3,"duration":{"second":58,"nanosecond":801000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":80000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":80000,"duration":{"second":61,"nanosecond":306000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":9000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":9000,"duration":{"second":61,"nanosecond":306000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":92,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":92000}}],"watch_group":92000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":92,"duration":{"second":58,"nanosecond":801000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":5000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":5000,"duration":{"second":61,"nanosecond":306000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":20000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":20000,"duration":{"second":61,"nanosecond":306000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":81000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":81000,"duration":{"second":61,"nanosecond":306000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":97000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":97000,"duration":{"second":61,"nanosecond":306000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":31000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":31000,"duration":{"second":61,"nanosecond":306000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":68,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":68000}}],"watch_group":68000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":68,"duration":{"second":58,"nanosecond":801000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":11000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":11000,"duration":{"second":61,"nanosecond":306000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":34,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":34000}}],"watch_group":34000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":34,"duration":{"second":61,"nanosecond":306000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":78000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":78000,"duration":{"second":61,"nanosecond":305000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":87,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":87000}}],"watch_group":87000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":87,"duration":{"second":61,"nanosecond":305000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":93000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":93000,"duration":{"second":61,"nanosecond":305000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":63000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":63000,"duration":{"second":61,"nanosecond":305000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":69,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":69000}}],"watch_group":69000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":69,"duration":{"second":58,"nanosecond":801000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":35,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":35000}}],"watch_group":35000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":35,"duration":{"second":58,"nanosecond":801000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":33000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":33000,"duration":{"second":61,"nanosecond":301000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":79000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":79000,"duration":{"second":61,"nanosecond":301000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":86,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":86000}}],"watch_group":86000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":86,"duration":{"second":61,"nanosecond":301000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":62000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":62000,"duration":{"second":61,"nanosecond":301000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":66,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":66000}}],"watch_group":66000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":66,"duration":{"second":58,"nanosecond":801000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":77000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":77000,"duration":{"second":61,"nanosecond":301000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":36,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":36000}}],"watch_group":36000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":36,"duration":{"second":61,"nanosecond":301000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":89,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":89000}}],"watch_group":89000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":89,"duration":{"second":61,"nanosecond":301000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":22000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":22000,"duration":{"second":61,"nanosecond":301000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":95000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":95000,"duration":{"second":61,"nanosecond":301000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":67,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":67000}}],"watch_group":67000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":67,"duration":{"second":58,"nanosecond":801000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":37,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":37000}}],"watch_group":37000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":37,"duration":{"second":58,"nanosecond":801000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":88,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":88000}}],"watch_group":88000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":88,"duration":{"second":58,"nanosecond":801000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":61000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":61000,"duration":{"second":61,"nanosecond":300000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":3000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":3000,"duration":{"second":61,"nanosecond":300000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":73,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":73000}}],"watch_group":73000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":73,"duration":{"second":58,"nanosecond":801000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":39,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":39000}}],"watch_group":39000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":39,"duration":{"second":58,"nanosecond":796000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":13,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":13000}}],"watch_group":13000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":13,"duration":{"second":58,"nanosecond":796000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":74000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":74000,"duration":{"second":61,"nanosecond":300000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":15000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":15000,"duration":{"second":61,"nanosecond":300000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":44000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":44000,"duration":{"second":61,"nanosecond":300000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":45000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":45000,"duration":{"second":61,"nanosecond":300000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":68000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":68000,"duration":{"second":61,"nanosecond":300000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":72,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":72000}}],"watch_group":72000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":72,"duration":{"second":58,"nanosecond":796000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":38,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":38000}}],"watch_group":38000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":38,"duration":{"second":60,"nanosecond":810000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":75000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":75000,"duration":{"second":60,"nanosecond":810000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":12,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":12000}}],"watch_group":12000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":12,"duration":{"second":58,"nanosecond":796000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":35000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":35000,"duration":{"second":60,"nanosecond":810000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":24000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":24000,"duration":{"second":60,"nanosecond":810000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":90000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":90000,"duration":{"second":60,"nanosecond":810000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":71,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":71000}}],"watch_group":71000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":71,"duration":{"second":58,"nanosecond":796000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":41,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":41000}}],"watch_group":41000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":41,"duration":{"second":60,"nanosecond":809000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":42000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":42000,"duration":{"second":60,"nanosecond":809000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":11,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":11000}}],"watch_group":11000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":11,"duration":{"second":60,"nanosecond":809000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":92000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":92000,"duration":{"second":60,"nanosecond":808000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":46000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":46000,"duration":{"second":60,"nanosecond":808000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":67000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":67000,"duration":{"second":60,"nanosecond":808000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":70,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":70000}}],"watch_group":70000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":70,"duration":{"second":58,"nanosecond":796000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":76000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":76000,"duration":{"second":60,"nanosecond":807000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":40,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":40000}}],"watch_group":40000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":40,"duration":{"second":58,"nanosecond":796000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":13000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":13000,"duration":{"second":60,"nanosecond":807000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":10,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":10000}}],"watch_group":10000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":10,"duration":{"second":58,"nanosecond":796000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":88000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":88000,"duration":{"second":60,"nanosecond":807000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":47000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":47000,"duration":{"second":60,"nanosecond":807000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":66000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":66000,"duration":{"second":60,"nanosecond":807000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":77,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":77000}}],"watch_group":77000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":77,"duration":{"second":60,"nanosecond":807000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":43,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":43000}}],"watch_group":43000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":43,"duration":{"second":60,"nanosecond":806000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":9,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":9000}}],"watch_group":9000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":9,"duration":{"second":60,"nanosecond":806000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":99000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":99000,"duration":{"second":60,"nanosecond":806000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":26000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":26000,"duration":{"second":60,"nanosecond":806000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":70000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":70000,"duration":{"second":60,"nanosecond":805000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":76,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":76000}}],"watch_group":76000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":76,"duration":{"second":60,"nanosecond":309000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":42,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":42000}}],"watch_group":42000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":42,"duration":{"second":60,"nanosecond":308000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":8,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":8000}}],"watch_group":8000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":8,"duration":{"second":58,"nanosecond":796000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":37000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":37000,"duration":{"second":60,"nanosecond":308000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":49000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":49000,"duration":{"second":60,"nanosecond":308000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":71000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":71000,"duration":{"second":60,"nanosecond":308000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":48000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":48000,"duration":{"second":60,"nanosecond":307000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":75,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":75000}}],"watch_group":75000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":75,"duration":{"second":60,"nanosecond":303000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":45,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":45000}}],"watch_group":45000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":45,"duration":{"second":60,"nanosecond":303000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":7,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":7000}}],"watch_group":7000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":7,"duration":{"second":60,"nanosecond":303000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":39000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":39000,"duration":{"second":60,"nanosecond":303000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":73000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":73000,"duration":{"second":60,"nanosecond":303000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":69000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":69000,"duration":{"second":60,"nanosecond":303000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":17000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":17000,"duration":{"second":60,"nanosecond":303000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":28000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":28000,"duration":{"second":60,"nanosecond":303000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":74,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":74000}}],"watch_group":74000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":74,"duration":{"second":60,"nanosecond":303000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":44,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":44000}}],"watch_group":44000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":44,"duration":{"second":60,"nanosecond":303000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":6,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":6000}}],"watch_group":6000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":6,"duration":{"second":58,"nanosecond":796000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":40000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":40000,"duration":{"second":60,"nanosecond":303000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":81,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":81000}}],"watch_group":81000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":81,"duration":{"second":60,"nanosecond":303000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":47,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":47000}}],"watch_group":47000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":47,"duration":{"second":60,"nanosecond":303000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":21,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":21000}}],"watch_group":21000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":21,"duration":{"second":58,"nanosecond":796000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":8000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":8000,"duration":{"second":60,"nanosecond":303000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":19000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":19000,"duration":{"second":60,"nanosecond":302000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":96000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":96000,"duration":{"second":60,"nanosecond":302000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":80,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":80000}}],"watch_group":80000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":80,"duration":{"second":60,"nanosecond":302000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":46,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":46000}}],"watch_group":46000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":46,"duration":{"second":60,"nanosecond":302000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":20,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":20000}}],"watch_group":20000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":20,"duration":{"second":60,"nanosecond":302000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":52000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":52000,"duration":{"second":60,"nanosecond":302000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":6000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":6000,"duration":{"second":60,"nanosecond":302000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":79,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":79000}}],"watch_group":79000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":79,"duration":{"second":60,"nanosecond":301000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":49,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":49000}}],"watch_group":49000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":49,"duration":{"second":59,"nanosecond":809000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":19,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":19000}}],"watch_group":19000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":19,"duration":{"second":59,"nanosecond":808000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":50000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":50000,"duration":{"second":59,"nanosecond":808000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":72000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":72000,"duration":{"second":59,"nanosecond":808000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":30000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":30000,"duration":{"second":59,"nanosecond":808000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":78,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":78000}}],"watch_group":78000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":78,"duration":{"second":59,"nanosecond":808000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":48,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":48000}}],"watch_group":48000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":48,"duration":{"second":59,"nanosecond":807000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":18,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":18000}}],"watch_group":18000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":18,"duration":{"second":59,"nanosecond":807000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":51000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":51000,"duration":{"second":59,"nanosecond":807000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":85,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":85000}}],"watch_group":85000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":85,"duration":{"second":59,"nanosecond":807000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":55000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":55000,"duration":{"second":59,"nanosecond":807000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":51,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":51000}}],"watch_group":51000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":51,"duration":{"second":59,"nanosecond":308000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":17,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":17000}}],"watch_group":17000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":17,"duration":{"second":59,"nanosecond":308000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":21000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":21000,"duration":{"second":59,"nanosecond":308000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":4000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":4000,"duration":{"second":59,"nanosecond":308000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":84,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":84000}}],"watch_group":84000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":84,"duration":{"second":59,"nanosecond":308000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":50,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":50000}}],"watch_group":50000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":50,"duration":{"second":59,"nanosecond":308000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":16,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":16000}}],"watch_group":16000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":16,"duration":{"second":59,"nanosecond":307000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":10000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":10000,"duration":{"second":59,"nanosecond":307000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":54000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":54000,"duration":{"second":59,"nanosecond":307000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":83,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":83000}}],"watch_group":83000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":83,"duration":{"second":59,"nanosecond":307000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":32000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":32000,"duration":{"second":59,"nanosecond":307000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":53,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":53000}}],"watch_group":53000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":53,"duration":{"second":58,"nanosecond":796000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":15,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":15000}}],"watch_group":15000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":15,"duration":{"second":59,"nanosecond":306000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":2000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":2000,"duration":{"second":59,"nanosecond":306000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":82,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":82000}}],"watch_group":82000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":82,"duration":{"second":59,"nanosecond":306000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":52,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":52000}}],"watch_group":52000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":52,"duration":{"second":59,"nanosecond":306000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":14,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":14000}}],"watch_group":14000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":14,"duration":{"second":59,"nanosecond":306000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":53000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":53000,"duration":{"second":59,"nanosecond":305000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":12000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":12000,"duration":{"second":59,"nanosecond":305000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":23000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":23000,"duration":{"second":59,"nanosecond":304000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":94000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":94000,"duration":{"second":59,"nanosecond":304000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}}],"flow-node-inventory:snapshot-gathering-status-end":{"succeeded":true,"end":"2026-04-08T00:59:28.212Z"}},{"id":"openflow:1","flow-node-inventory:port-number":54934,"flow-node-inventory:table":[{"id":62,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":28,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":2,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":224,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":181,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":147,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":106,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":61,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":27,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":1,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":223,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":182,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":148,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":105,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":60,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":30,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":0,"flow":[{"id":"69","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.69/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":69}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":268000000}},"flags":""},{"id":"60","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.60/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":60}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":268000000}},"flags":""},{"id":"68","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.68/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":68}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":268000000}},"flags":""},{"id":"67","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.67/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":67}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":268000000}},"flags":""},{"id":"66","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.66/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":66}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":269000000}},"flags":""},{"id":"65","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.65/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":65}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":269000000}},"flags":""},{"id":"64","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.64/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":64}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":269000000}},"flags":""},{"id":"63","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.63/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":63}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":269000000}},"flags":""},{"id":"62","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.62/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":62}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":269000000}},"flags":""},{"id":"61","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.61/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":61}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":269000000}},"flags":""},{"id":"100","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.100/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":100}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":269000000}},"flags":""},{"id":"71","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.71/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":71}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":269000000}},"flags":""},{"id":"70","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.70/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":70}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":269000000}},"flags":""},{"id":"79","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.79/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":79}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":269000000}},"flags":""},{"id":"78","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.78/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":78}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":269000000}},"flags":""},{"id":"77","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.77/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":77}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":269000000}},"flags":""},{"id":"76","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.76/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":76}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":269000000}},"flags":""},{"id":"75","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.75/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":75}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":269000000}},"flags":""},{"id":"74","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.74/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":74}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":269000000}},"flags":""},{"id":"73","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.73/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":73}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":269000000}},"flags":""},{"id":"72","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.72/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":72}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":269000000}},"flags":""},{"id":"82","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.82/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":82}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":269000000}},"flags":""},{"id":"81","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.81/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":81}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":269000000}},"flags":""},{"id":"80","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.80/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":80}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":269000000}},"flags":""},{"id":"89","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.89/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":89}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":269000000}},"flags":""},{"id":"88","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.88/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":88}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":269000000}},"flags":""},{"id":"87","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.87/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":87}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":269000000}},"flags":""},{"id":"86","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.86/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":86}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":269000000}},"flags":""},{"id":"85","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.85/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":85}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":269000000}},"flags":""},{"id":"84","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.84/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":84}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":268000000}},"flags":""},{"id":"83","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.83/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":83}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":268000000}},"flags":""},{"id":"19","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.19/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":19}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":268000000}},"flags":""},{"id":"18","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.18/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":18}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":268000000}},"flags":""},{"id":"17","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.17/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":17}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":268000000}},"flags":""},{"id":"16","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.16/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":16}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":268000000}},"flags":""},{"id":"15","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.15/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":15}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":268000000}},"flags":""},{"id":"14","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.14/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":14}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":268000000}},"flags":""},{"id":"2","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.2/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":2}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":268000000}},"flags":""},{"id":"93","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.93/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":93}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":268000000}},"flags":""},{"id":"92","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.92/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":92}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":268000000}},"flags":""},{"id":"91","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.91/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":91}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":268000000}},"flags":""},{"id":"90","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.90/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":90}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":268000000}},"flags":""},{"id":"13","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.13/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":13}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":268000000}},"flags":""},{"id":"12","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.12/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":12}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":268000000}},"flags":""},{"id":"11","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.11/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":11}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":268000000}},"flags":""},{"id":"99","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.99/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":99}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":268000000}},"flags":""},{"id":"10","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.10/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":10}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":268000000}},"flags":""},{"id":"98","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.98/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":98}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":268000000}},"flags":""},{"id":"97","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.97/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":97}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":268000000}},"flags":""},{"id":"96","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.96/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":96}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":268000000}},"flags":""},{"id":"95","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.95/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":95}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":268000000}},"flags":""},{"id":"94","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.94/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":94}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":268000000}},"flags":""},{"id":"29","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.29/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":29}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":268000000}},"flags":""},{"id":"28","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.28/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":28}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":268000000}},"flags":""},{"id":"27","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.27/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":27}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":268000000}},"flags":""},{"id":"26","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.26/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":26}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":268000000}},"flags":""},{"id":"25","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.25/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":25}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":268000000}},"flags":""},{"id":"9","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.9/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":9}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":268000000}},"flags":""},{"id":"8","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.8/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":8}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":268000000}},"flags":""},{"id":"7","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.7/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":7}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":268000000}},"flags":""},{"id":"6","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.6/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":6}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":268000000}},"flags":""},{"id":"5","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.5/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":5}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":268000000}},"flags":""},{"id":"4","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.4/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":4}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":268000000}},"flags":""},{"id":"3","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.3/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":3}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":268000000}},"flags":""},{"id":"24","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.24/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":24}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":268000000}},"flags":""},{"id":"23","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.23/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":23}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":268000000}},"flags":""},{"id":"22","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.22/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":22}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":268000000}},"flags":""},{"id":"21","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.21/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":21}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":268000000}},"flags":""},{"id":"20","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.20/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":20}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":268000000}},"flags":""},{"id":"39","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.39/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":39}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":268000000}},"flags":""},{"id":"38","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.38/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":38}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":268000000}},"flags":""},{"id":"37","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.37/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":37}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":268000000}},"flags":""},{"id":"36","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.36/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":36}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":268000000}},"flags":""},{"id":"35","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.35/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":35}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":268000000}},"flags":""},{"id":"34","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.34/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":34}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":268000000}},"flags":""},{"id":"33","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.33/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":33}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":268000000}},"flags":""},{"id":"32","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.32/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":32}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":268000000}},"flags":""},{"id":"31","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.31/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":31}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":268000000}},"flags":""},{"id":"30","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.30/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":30}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":268000000}},"flags":""},{"id":"49","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.49/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":49}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":268000000}},"flags":""},{"id":"48","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.48/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":48}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":267000000}},"flags":""},{"id":"47","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.47/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":47}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":267000000}},"flags":""},{"id":"#UF$TABLE*0-1","table_id":0,"priority":0,"cookie_mask":"0","idle-timeout":0,"cookie":"10","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"output-action":{"max-length":65535,"output-node-connector":"CONTROLLER"}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"18","byte-count":"1440","duration":{"second":58,"nanosecond":158000000}},"flags":"SEND_FLOW_REM"},{"id":"46","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.46/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":46}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":267000000}},"flags":""},{"id":"45","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.45/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":45}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":267000000}},"flags":""},{"id":"44","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.44/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":44}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":267000000}},"flags":""},{"id":"43","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.43/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":43}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":267000000}},"flags":""},{"id":"42","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.42/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":42}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":267000000}},"flags":""},{"id":"41","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.41/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":41}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":267000000}},"flags":""},{"id":"40","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.40/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":40}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":267000000}},"flags":""},{"id":"59","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.59/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":59}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":267000000}},"flags":""},{"id":"58","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.58/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":58}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":267000000}},"flags":""},{"id":"57","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.57/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":57}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":267000000}},"flags":""},{"id":"56","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.56/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":56}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":267000000}},"flags":""},{"id":"55","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.55/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":55}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":267000000}},"flags":""},{"id":"54","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.54/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":54}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":267000000}},"flags":""},{"id":"53","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.53/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":53}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":267000000}},"flags":""},{"id":"52","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.52/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":52}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":267000000}},"flags":""},{"id":"51","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.51/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":51}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":267000000}},"flags":""},{"id":"50","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.50/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":50}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":267000000}},"flags":""}],"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"35","active-flows":100,"packets-matched":"28"}},{"id":226,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":179,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":149,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":104,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":59,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":29,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":225,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":180,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":150,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":103,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":66,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":32,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":220,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":185,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":151,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":102,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":65,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":31,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":253,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":219,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":186,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":152,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":101,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":64,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":34,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":252,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":222,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":183,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":153,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":100,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":63,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":33,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":251,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":221,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":184,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":154,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":99,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":54,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":20,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":250,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":216,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":189,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":155,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":129,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":114,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":53,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":19,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":249,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":215,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":190,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":156,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":130,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":113,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":52,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":22,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":248,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":218,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":187,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":157,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":112,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":51,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":21,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":247,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":217,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":188,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":158,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":128,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":111,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":58,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":24,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":246,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":212,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":193,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":159,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":110,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":57,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":23,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":245,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":211,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":194,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":160,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":109,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":56,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":26,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":244,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":214,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":191,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":161,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":108,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":55,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":25,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":243,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":213,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":192,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":162,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":107,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":77,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":43,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":17,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":239,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":198,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":164,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":138,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":119,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":89,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":78,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":44,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":18,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":240,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":197,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":163,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":137,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":120,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":90,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":75,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":45,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":15,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":241,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":196,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":166,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":136,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":121,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":87,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":76,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":46,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":16,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":242,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":195,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":165,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":135,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":122,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":88,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":81,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":47,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":13,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":235,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":202,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":168,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":134,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":115,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":85,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":82,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":48,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":14,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":236,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":201,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":167,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":133,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":116,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":86,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":79,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":49,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":11,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":237,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":200,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":170,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":132,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":117,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":83,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":80,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":50,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":12,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":238,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":199,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":169,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":131,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":118,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":84,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":69,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":35,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":9,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":231,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":206,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":172,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":146,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":127,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":97,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":70,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":36,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":10,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":232,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":205,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":171,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":145,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":98,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":67,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":37,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":7,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":233,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":204,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":174,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":144,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":95,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":68,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":38,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":8,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":234,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":203,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":173,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":143,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":96,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":73,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":39,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":5,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":227,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":210,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":176,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":142,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":123,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":93,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":74,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":40,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":6,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":228,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":209,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":175,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":141,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":124,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":94,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":71,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":41,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":3,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":229,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":208,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":178,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":140,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":125,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":91,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":72,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":42,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":4,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":230,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":207,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":177,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":139,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":126,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":92,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}}],"opendaylight-group-statistics:group-features":{"max-groups":[4294967040],"group-types-supported":["opendaylight-group-types:group-all","opendaylight-group-types:group-ff","opendaylight-group-types:group-select","opendaylight-group-types:group-indirect"],"group-capabilities-supported":["opendaylight-group-types:chaining","opendaylight-group-types:select-weight","opendaylight-group-types:select-liveness"],"actions":[67076097]},"flow-node-inventory:manufacturer":"Nicira, Inc.","flow-node-inventory:description":"s1","flow-node-inventory:hardware":"Open vSwitch","flow-node-inventory:switch-features":{"max_tables":254,"capabilities":["flow-node-inventory:flow-feature-capability-table-stats","flow-node-inventory:flow-feature-capability-group-stats","flow-node-inventory:flow-feature-capability-queue-stats","flow-node-inventory:flow-feature-capability-flow-stats","flow-node-inventory:flow-feature-capability-port-stats"],"max_buffers":0},"flow-node-inventory:snapshot-gathering-status-start":{"begin":"2026-04-08T00:59:28.147Z"},"flow-node-inventory:software":"2.17.11","node-connector":[{"id":"openflow:1:1","flow-node-inventory:port-number":1,"flow-node-inventory:hardware-address":"92:f4:e8:ea:c6:ad","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s1-eth1","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"30","received":"9"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":63,"nanosecond":505000000},"bytes":{"transmitted":"2535","received":"726"},"receive-crc-error":"0"}},{"id":"openflow:1:LOCAL","flow-node-inventory:port-number":4294967294,"flow-node-inventory:hardware-address":"e6:45:d0:5b:c7:49","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s1","flow-node-inventory:current-feature":"","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":0,"flow-node-inventory:state":{"live":false,"blocked":false,"link-down":true},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"PORT-DOWN","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"0","received":"0"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":63,"nanosecond":501000000},"bytes":{"transmitted":"0","received":"0"},"receive-crc-error":"0"}},{"id":"openflow:1:2","flow-node-inventory:port-number":2,"flow-node-inventory:hardware-address":"42:46:a8:4b:8b:86","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s1-eth2","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"24","received":"28"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":63,"nanosecond":505000000},"bytes":{"transmitted":"2007","received":"2359"},"receive-crc-error":"0"}}],"flow-node-inventory:ip-address":"10.30.170.192","flow-node-inventory:serial-number":"None","flow-node-inventory:group":[{"group-id":56,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":56000}}],"watch_group":56000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":56,"duration":{"second":59,"nanosecond":422000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":22,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":22000}}],"watch_group":22000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":22,"duration":{"second":59,"nanosecond":422000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":99,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":99000}}],"watch_group":99000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":99,"duration":{"second":59,"nanosecond":422000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":34000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":34000,"duration":{"second":62,"nanosecond":115000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":89000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":89000,"duration":{"second":62,"nanosecond":115000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":60000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":60000,"duration":{"second":62,"nanosecond":115000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":91000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":91000,"duration":{"second":62,"nanosecond":115000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":57,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":57000}}],"watch_group":57000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":57,"duration":{"second":59,"nanosecond":422000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":23,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":23000}}],"watch_group":23000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":23,"duration":{"second":58,"nanosecond":922000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":14000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":14000,"duration":{"second":62,"nanosecond":115000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":98,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":98000}}],"watch_group":98000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":98,"duration":{"second":58,"nanosecond":922000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":56000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":56000,"duration":{"second":62,"nanosecond":115000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":85000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":85000,"duration":{"second":62,"nanosecond":115000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":54,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":54000}}],"watch_group":54000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":54,"duration":{"second":58,"nanosecond":922000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":24,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":24000}}],"watch_group":24000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":24,"duration":{"second":58,"nanosecond":922000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":36000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":36000,"duration":{"second":62,"nanosecond":115000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":87000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":87000,"duration":{"second":62,"nanosecond":115000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":59000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":59000,"duration":{"second":62,"nanosecond":115000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":25000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":25000,"duration":{"second":62,"nanosecond":115000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":43000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":43000,"duration":{"second":62,"nanosecond":115000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":55,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":55000}}],"watch_group":55000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":55,"duration":{"second":58,"nanosecond":922000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":25,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":25000}}],"watch_group":25000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":25,"duration":{"second":61,"nanosecond":929000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":100,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":100000}}],"watch_group":100000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":100,"duration":{"second":58,"nanosecond":922000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":58000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":58000,"duration":{"second":61,"nanosecond":926000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":86000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":86000,"duration":{"second":61,"nanosecond":926000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":60,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":60000}}],"watch_group":60000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":60,"duration":{"second":61,"nanosecond":926000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":26,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":26000}}],"watch_group":26000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":26,"duration":{"second":58,"nanosecond":922000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":41000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":41000,"duration":{"second":61,"nanosecond":926000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":95,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":95000}}],"watch_group":95000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":95,"duration":{"second":58,"nanosecond":922000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":82000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":82000,"duration":{"second":61,"nanosecond":926000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":61,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":61000}}],"watch_group":61000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":61,"duration":{"second":58,"nanosecond":922000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":27,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":27000}}],"watch_group":27000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":27,"duration":{"second":58,"nanosecond":922000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":94,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":94000}}],"watch_group":94000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":94,"duration":{"second":58,"nanosecond":922000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":98000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":98000,"duration":{"second":61,"nanosecond":926000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":27000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":27000,"duration":{"second":61,"nanosecond":926000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":57000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":57000,"duration":{"second":61,"nanosecond":926000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":16000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":16000,"duration":{"second":61,"nanosecond":926000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":83000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":83000,"duration":{"second":61,"nanosecond":926000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":58,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":58000}}],"watch_group":58000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":58,"duration":{"second":61,"nanosecond":423000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":28,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":28000}}],"watch_group":28000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":28,"duration":{"second":58,"nanosecond":922000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":97,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":97000}}],"watch_group":97000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":97,"duration":{"second":58,"nanosecond":922000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":100000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":100000,"duration":{"second":61,"nanosecond":423000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":59,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":59000}}],"watch_group":59000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":59,"duration":{"second":61,"nanosecond":423000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":38000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":38000,"duration":{"second":61,"nanosecond":423000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":29,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":29000}}],"watch_group":29000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":29,"duration":{"second":58,"nanosecond":922000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":96,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":96000}}],"watch_group":96000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":96,"duration":{"second":58,"nanosecond":922000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":84000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":84000,"duration":{"second":61,"nanosecond":423000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":64,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":64000}}],"watch_group":64000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":64,"duration":{"second":58,"nanosecond":922000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":30,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":30000}}],"watch_group":30000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":30,"duration":{"second":58,"nanosecond":922000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":4,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":4000}}],"watch_group":4000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":4,"duration":{"second":58,"nanosecond":922000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":91,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":91000}}],"watch_group":91000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":91,"duration":{"second":61,"nanosecond":423000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":7000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":7000,"duration":{"second":61,"nanosecond":423000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":29000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":29000,"duration":{"second":61,"nanosecond":423000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":65,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":65000}}],"watch_group":65000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":65,"duration":{"second":58,"nanosecond":922000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":31,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":31000}}],"watch_group":31000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":31,"duration":{"second":58,"nanosecond":922000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":5,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":5000}}],"watch_group":5000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":5,"duration":{"second":58,"nanosecond":922000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":90,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":90000}}],"watch_group":90000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":90,"duration":{"second":58,"nanosecond":922000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":18000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":18000,"duration":{"second":61,"nanosecond":423000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":62,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":62000}}],"watch_group":62000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":62,"duration":{"second":58,"nanosecond":922000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":65000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":65000,"duration":{"second":61,"nanosecond":423000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":32,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":32000}}],"watch_group":32000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":32,"duration":{"second":58,"nanosecond":922000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":2,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":2000}}],"watch_group":2000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":2,"duration":{"second":58,"nanosecond":922000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":93,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":93000}}],"watch_group":93000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":93,"duration":{"second":58,"nanosecond":922000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":64000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":64000,"duration":{"second":61,"nanosecond":423000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":63,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":63000}}],"watch_group":63000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":63,"duration":{"second":58,"nanosecond":922000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":33,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":33000}}],"watch_group":33000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":33,"duration":{"second":58,"nanosecond":922000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":3,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":3000}}],"watch_group":3000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":3,"duration":{"second":58,"nanosecond":917000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":80000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":80000,"duration":{"second":61,"nanosecond":423000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":9000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":9000,"duration":{"second":61,"nanosecond":423000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":92,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":92000}}],"watch_group":92000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":92,"duration":{"second":58,"nanosecond":917000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":5000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":5000,"duration":{"second":61,"nanosecond":423000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":20000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":20000,"duration":{"second":61,"nanosecond":423000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":81000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":81000,"duration":{"second":61,"nanosecond":423000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":97000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":97000,"duration":{"second":61,"nanosecond":423000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":31000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":31000,"duration":{"second":61,"nanosecond":423000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":68,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":68000}}],"watch_group":68000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":68,"duration":{"second":58,"nanosecond":917000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":11000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":11000,"duration":{"second":61,"nanosecond":423000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":34,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":34000}}],"watch_group":34000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":34,"duration":{"second":61,"nanosecond":423000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":78000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":78000,"duration":{"second":61,"nanosecond":423000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":87,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":87000}}],"watch_group":87000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":87,"duration":{"second":61,"nanosecond":423000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":93000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":93000,"duration":{"second":61,"nanosecond":423000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":63000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":63000,"duration":{"second":61,"nanosecond":423000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":69,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":69000}}],"watch_group":69000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":69,"duration":{"second":58,"nanosecond":917000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":35,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":35000}}],"watch_group":35000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":35,"duration":{"second":58,"nanosecond":917000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":33000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":33000,"duration":{"second":61,"nanosecond":423000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":79000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":79000,"duration":{"second":61,"nanosecond":421000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":86,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":86000}}],"watch_group":86000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":86,"duration":{"second":61,"nanosecond":421000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":62000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":62000,"duration":{"second":61,"nanosecond":421000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":66,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":66000}}],"watch_group":66000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":66,"duration":{"second":58,"nanosecond":917000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":77000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":77000,"duration":{"second":61,"nanosecond":421000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":36,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":36000}}],"watch_group":36000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":36,"duration":{"second":61,"nanosecond":421000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":89,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":89000}}],"watch_group":89000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":89,"duration":{"second":61,"nanosecond":420000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":22000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":22000,"duration":{"second":61,"nanosecond":420000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":95000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":95000,"duration":{"second":61,"nanosecond":420000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":67,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":67000}}],"watch_group":67000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":67,"duration":{"second":58,"nanosecond":917000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":37,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":37000}}],"watch_group":37000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":37,"duration":{"second":58,"nanosecond":917000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":88,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":88000}}],"watch_group":88000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":88,"duration":{"second":58,"nanosecond":917000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":61000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":61000,"duration":{"second":61,"nanosecond":420000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":3000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":3000,"duration":{"second":61,"nanosecond":419000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":73,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":73000}}],"watch_group":73000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":73,"duration":{"second":58,"nanosecond":917000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":39,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":39000}}],"watch_group":39000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":39,"duration":{"second":58,"nanosecond":917000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":13,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":13000}}],"watch_group":13000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":13,"duration":{"second":58,"nanosecond":917000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":74000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":74000,"duration":{"second":61,"nanosecond":419000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":15000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":15000,"duration":{"second":61,"nanosecond":419000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":44000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":44000,"duration":{"second":61,"nanosecond":419000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":45000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":45000,"duration":{"second":61,"nanosecond":419000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":68000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":68000,"duration":{"second":61,"nanosecond":419000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":72,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":72000}}],"watch_group":72000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":72,"duration":{"second":58,"nanosecond":917000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":38,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":38000}}],"watch_group":38000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":38,"duration":{"second":60,"nanosecond":931000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":75000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":75000,"duration":{"second":60,"nanosecond":931000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":12,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":12000}}],"watch_group":12000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":12,"duration":{"second":58,"nanosecond":917000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":35000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":35000,"duration":{"second":60,"nanosecond":931000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":24000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":24000,"duration":{"second":60,"nanosecond":930000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":90000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":90000,"duration":{"second":60,"nanosecond":930000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":71,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":71000}}],"watch_group":71000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":71,"duration":{"second":58,"nanosecond":917000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":41,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":41000}}],"watch_group":41000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":41,"duration":{"second":60,"nanosecond":930000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":42000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":42000,"duration":{"second":60,"nanosecond":930000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":11,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":11000}}],"watch_group":11000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":11,"duration":{"second":60,"nanosecond":929000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":92000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":92000,"duration":{"second":60,"nanosecond":929000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":46000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":46000,"duration":{"second":60,"nanosecond":929000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":67000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":67000,"duration":{"second":60,"nanosecond":929000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":70,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":70000}}],"watch_group":70000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":70,"duration":{"second":58,"nanosecond":917000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":76000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":76000,"duration":{"second":60,"nanosecond":928000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":40,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":40000}}],"watch_group":40000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":40,"duration":{"second":58,"nanosecond":917000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":13000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":13000,"duration":{"second":60,"nanosecond":925000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":10,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":10000}}],"watch_group":10000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":10,"duration":{"second":58,"nanosecond":917000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":88000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":88000,"duration":{"second":60,"nanosecond":925000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":47000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":47000,"duration":{"second":60,"nanosecond":925000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":66000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":66000,"duration":{"second":60,"nanosecond":924000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":77,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":77000}}],"watch_group":77000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":77,"duration":{"second":60,"nanosecond":924000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":43,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":43000}}],"watch_group":43000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":43,"duration":{"second":60,"nanosecond":924000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":9,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":9000}}],"watch_group":9000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":9,"duration":{"second":60,"nanosecond":924000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":99000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":99000,"duration":{"second":60,"nanosecond":924000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":26000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":26000,"duration":{"second":60,"nanosecond":924000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":70000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":70000,"duration":{"second":60,"nanosecond":924000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":76,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":76000}}],"watch_group":76000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":76,"duration":{"second":60,"nanosecond":430000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":42,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":42000}}],"watch_group":42000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":42,"duration":{"second":60,"nanosecond":428000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":8,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":8000}}],"watch_group":8000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":8,"duration":{"second":58,"nanosecond":917000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":37000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":37000,"duration":{"second":60,"nanosecond":428000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":49000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":49000,"duration":{"second":60,"nanosecond":428000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":71000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":71000,"duration":{"second":60,"nanosecond":428000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":48000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":48000,"duration":{"second":60,"nanosecond":428000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":75,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":75000}}],"watch_group":75000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":75,"duration":{"second":60,"nanosecond":428000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":45,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":45000}}],"watch_group":45000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":45,"duration":{"second":60,"nanosecond":425000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":7,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":7000}}],"watch_group":7000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":7,"duration":{"second":60,"nanosecond":425000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":39000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":39000,"duration":{"second":60,"nanosecond":425000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":73000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":73000,"duration":{"second":60,"nanosecond":424000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":69000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":69000,"duration":{"second":60,"nanosecond":424000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":17000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":17000,"duration":{"second":60,"nanosecond":424000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":28000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":28000,"duration":{"second":60,"nanosecond":424000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":74,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":74000}}],"watch_group":74000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":74,"duration":{"second":60,"nanosecond":424000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":44,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":44000}}],"watch_group":44000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":44,"duration":{"second":60,"nanosecond":424000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":6,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":6000}}],"watch_group":6000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":6,"duration":{"second":58,"nanosecond":917000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":40000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":40000,"duration":{"second":60,"nanosecond":424000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":81,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":81000}}],"watch_group":81000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":81,"duration":{"second":60,"nanosecond":424000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":47,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":47000}}],"watch_group":47000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":47,"duration":{"second":60,"nanosecond":424000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":21,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":21000}}],"watch_group":21000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":21,"duration":{"second":58,"nanosecond":917000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":8000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":8000,"duration":{"second":60,"nanosecond":424000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":19000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":19000,"duration":{"second":60,"nanosecond":424000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":96000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":96000,"duration":{"second":60,"nanosecond":424000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":80,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":80000}}],"watch_group":80000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":80,"duration":{"second":60,"nanosecond":422000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":46,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":46000}}],"watch_group":46000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":46,"duration":{"second":60,"nanosecond":422000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":20,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":20000}}],"watch_group":20000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":20,"duration":{"second":60,"nanosecond":422000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":52000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":52000,"duration":{"second":60,"nanosecond":422000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":6000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":6000,"duration":{"second":60,"nanosecond":422000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":79,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":79000}}],"watch_group":79000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":79,"duration":{"second":60,"nanosecond":422000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":49,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":49000}}],"watch_group":49000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":49,"duration":{"second":59,"nanosecond":929000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":19,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":19000}}],"watch_group":19000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":19,"duration":{"second":59,"nanosecond":929000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":50000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":50000,"duration":{"second":59,"nanosecond":929000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":72000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":72000,"duration":{"second":59,"nanosecond":929000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":30000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":30000,"duration":{"second":59,"nanosecond":928000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":78,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":78000}}],"watch_group":78000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":78,"duration":{"second":59,"nanosecond":928000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":48,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":48000}}],"watch_group":48000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":48,"duration":{"second":59,"nanosecond":927000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":18,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":18000}}],"watch_group":18000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":18,"duration":{"second":59,"nanosecond":927000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":51000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":51000,"duration":{"second":59,"nanosecond":927000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":85,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":85000}}],"watch_group":85000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":85,"duration":{"second":59,"nanosecond":927000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":55000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":55000,"duration":{"second":59,"nanosecond":926000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":51,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":51000}}],"watch_group":51000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":51,"duration":{"second":59,"nanosecond":422000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":17,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":17000}}],"watch_group":17000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":17,"duration":{"second":59,"nanosecond":422000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":21000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":21000,"duration":{"second":59,"nanosecond":422000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":4000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":4000,"duration":{"second":59,"nanosecond":422000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":84,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":84000}}],"watch_group":84000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":84,"duration":{"second":59,"nanosecond":422000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":50,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":50000}}],"watch_group":50000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":50,"duration":{"second":59,"nanosecond":422000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":16,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":16000}}],"watch_group":16000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":16,"duration":{"second":59,"nanosecond":422000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":10000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":10000,"duration":{"second":59,"nanosecond":422000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":54000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":54000,"duration":{"second":59,"nanosecond":422000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":83,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":83000}}],"watch_group":83000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":83,"duration":{"second":59,"nanosecond":422000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":32000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":32000,"duration":{"second":59,"nanosecond":422000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":53,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":53000}}],"watch_group":53000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":53,"duration":{"second":58,"nanosecond":917000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":15,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":15000}}],"watch_group":15000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":15,"duration":{"second":59,"nanosecond":422000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":2000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":2000,"duration":{"second":59,"nanosecond":422000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":82,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":82000}}],"watch_group":82000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":82,"duration":{"second":59,"nanosecond":422000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":52,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":52000}}],"watch_group":52000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":52,"duration":{"second":59,"nanosecond":422000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":14,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":14000}}],"watch_group":14000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":14,"duration":{"second":59,"nanosecond":422000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":53000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":53000,"duration":{"second":59,"nanosecond":422000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":12000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":12000,"duration":{"second":59,"nanosecond":422000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":23000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":23000,"duration":{"second":59,"nanosecond":422000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":94000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":94000,"duration":{"second":59,"nanosecond":422000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}}],"flow-node-inventory:snapshot-gathering-status-end":{"succeeded":true,"end":"2026-04-08T00:59:28.216Z"}},{"id":"openflow:2","flow-node-inventory:port-number":54944,"flow-node-inventory:table":[{"id":62,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":28,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":2,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":224,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":181,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":147,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":106,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":61,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":27,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":1,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":223,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":182,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":148,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":105,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":60,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":30,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":0,"flow":[{"id":"69","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.69/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":69}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":291000000}},"flags":""},{"id":"60","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.60/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":60}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":291000000}},"flags":""},{"id":"68","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.68/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":68}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":291000000}},"flags":""},{"id":"67","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.67/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":67}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":291000000}},"flags":""},{"id":"66","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.66/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":66}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":291000000}},"flags":""},{"id":"65","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.65/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":65}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":291000000}},"flags":""},{"id":"64","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.64/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":64}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":291000000}},"flags":""},{"id":"63","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.63/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":63}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":291000000}},"flags":""},{"id":"62","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.62/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":62}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":291000000}},"flags":""},{"id":"61","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.61/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":61}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":291000000}},"flags":""},{"id":"100","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.100/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":100}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":291000000}},"flags":""},{"id":"71","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.71/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":71}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":291000000}},"flags":""},{"id":"70","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.70/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":70}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":291000000}},"flags":""},{"id":"79","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.79/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":79}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":291000000}},"flags":""},{"id":"78","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.78/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":78}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":291000000}},"flags":""},{"id":"77","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.77/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":77}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":291000000}},"flags":""},{"id":"76","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.76/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":76}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":291000000}},"flags":""},{"id":"75","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.75/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":75}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":291000000}},"flags":""},{"id":"74","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.74/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":74}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":291000000}},"flags":""},{"id":"73","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.73/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":73}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":291000000}},"flags":""},{"id":"72","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.72/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":72}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":291000000}},"flags":""},{"id":"82","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.82/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":82}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":291000000}},"flags":""},{"id":"81","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.81/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":81}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":291000000}},"flags":""},{"id":"80","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.80/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":80}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":291000000}},"flags":""},{"id":"89","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.89/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":89}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":291000000}},"flags":""},{"id":"88","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.88/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":88}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":291000000}},"flags":""},{"id":"87","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.87/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":87}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":291000000}},"flags":""},{"id":"86","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.86/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":86}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":291000000}},"flags":""},{"id":"85","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.85/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":85}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":291000000}},"flags":""},{"id":"84","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.84/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":84}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":291000000}},"flags":""},{"id":"83","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.83/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":83}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":291000000}},"flags":""},{"id":"19","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.19/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":19}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":291000000}},"flags":""},{"id":"18","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.18/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":18}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":291000000}},"flags":""},{"id":"17","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.17/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":17}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":291000000}},"flags":""},{"id":"16","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.16/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":16}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":291000000}},"flags":""},{"id":"15","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.15/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":15}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":291000000}},"flags":""},{"id":"14","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.14/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":14}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":291000000}},"flags":""},{"id":"2","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.2/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":2}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":291000000}},"flags":""},{"id":"93","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.93/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":93}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":290000000}},"flags":""},{"id":"92","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.92/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":92}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":290000000}},"flags":""},{"id":"91","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.91/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":91}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":290000000}},"flags":""},{"id":"90","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.90/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":90}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":290000000}},"flags":""},{"id":"13","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.13/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":13}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":290000000}},"flags":""},{"id":"12","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.12/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":12}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":290000000}},"flags":""},{"id":"11","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.11/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":11}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":290000000}},"flags":""},{"id":"99","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.99/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":99}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":290000000}},"flags":""},{"id":"10","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.10/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":10}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":290000000}},"flags":""},{"id":"98","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.98/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":98}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":290000000}},"flags":""},{"id":"97","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.97/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":97}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":290000000}},"flags":""},{"id":"96","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.96/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":96}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":290000000}},"flags":""},{"id":"95","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.95/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":95}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":290000000}},"flags":""},{"id":"94","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.94/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":94}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":291000000}},"flags":""},{"id":"29","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.29/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":29}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":291000000}},"flags":""},{"id":"28","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.28/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":28}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":291000000}},"flags":""},{"id":"27","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.27/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":27}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":291000000}},"flags":""},{"id":"26","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.26/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":26}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":291000000}},"flags":""},{"id":"25","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.25/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":25}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":291000000}},"flags":""},{"id":"9","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.9/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":9}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":291000000}},"flags":""},{"id":"8","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.8/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":8}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":291000000}},"flags":""},{"id":"7","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.7/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":7}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":291000000}},"flags":""},{"id":"6","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.6/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":6}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":291000000}},"flags":""},{"id":"5","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.5/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":5}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":291000000}},"flags":""},{"id":"4","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.4/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":4}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":291000000}},"flags":""},{"id":"3","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.3/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":3}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":291000000}},"flags":""},{"id":"24","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.24/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":24}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":291000000}},"flags":""},{"id":"23","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.23/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":23}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":291000000}},"flags":""},{"id":"22","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.22/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":22}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":291000000}},"flags":""},{"id":"21","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.21/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":21}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":291000000}},"flags":""},{"id":"20","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.20/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":20}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":291000000}},"flags":""},{"id":"39","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.39/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":39}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":291000000}},"flags":""},{"id":"38","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.38/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":38}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":291000000}},"flags":""},{"id":"37","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.37/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":37}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":291000000}},"flags":""},{"id":"36","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.36/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":36}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":291000000}},"flags":""},{"id":"35","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.35/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":35}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":291000000}},"flags":""},{"id":"34","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.34/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":34}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":291000000}},"flags":""},{"id":"33","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.33/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":33}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":291000000}},"flags":""},{"id":"32","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.32/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":32}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":291000000}},"flags":""},{"id":"31","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.31/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":31}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":291000000}},"flags":""},{"id":"30","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.30/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":30}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":291000000}},"flags":""},{"id":"49","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.49/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":49}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":291000000}},"flags":""},{"id":"48","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.48/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":48}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":291000000}},"flags":""},{"id":"47","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.47/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":47}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":291000000}},"flags":""},{"id":"#UF$TABLE*0-2","table_id":0,"priority":0,"cookie_mask":"0","idle-timeout":0,"cookie":"10","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"output-action":{"max-length":65535,"output-node-connector":"CONTROLLER"}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"33","byte-count":"2670","duration":{"second":58,"nanosecond":170000000}},"flags":"SEND_FLOW_REM"},{"id":"46","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.46/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":46}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":291000000}},"flags":""},{"id":"45","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.45/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":45}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":291000000}},"flags":""},{"id":"44","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.44/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":44}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":291000000}},"flags":""},{"id":"43","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.43/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":43}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":291000000}},"flags":""},{"id":"42","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.42/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":42}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":291000000}},"flags":""},{"id":"41","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.41/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":41}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":291000000}},"flags":""},{"id":"40","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.40/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":40}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":291000000}},"flags":""},{"id":"59","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.59/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":59}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":291000000}},"flags":""},{"id":"58","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.58/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":58}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":291000000}},"flags":""},{"id":"57","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.57/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":57}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":291000000}},"flags":""},{"id":"56","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.56/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":56}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":291000000}},"flags":""},{"id":"55","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.55/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":55}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":291000000}},"flags":""},{"id":"54","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.54/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":54}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":291000000}},"flags":""},{"id":"53","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.53/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":53}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":291000000}},"flags":""},{"id":"52","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.52/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":52}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":290000000}},"flags":""},{"id":"51","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.51/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":51}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":290000000}},"flags":""},{"id":"50","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.50/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":50}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":290000000}},"flags":""}],"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"55","active-flows":100,"packets-matched":"43"}},{"id":226,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":179,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":149,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":104,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":59,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":29,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":225,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":180,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":150,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":103,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":66,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":32,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":220,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":185,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":151,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":102,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":65,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":31,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":253,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":219,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":186,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":152,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":101,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":64,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":34,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":252,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":222,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":183,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":153,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":100,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":63,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":33,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":251,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":221,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":184,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":154,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":99,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":54,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":20,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":250,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":216,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":189,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":155,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":129,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":114,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":53,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":19,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":249,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":215,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":190,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":156,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":130,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":113,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":52,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":22,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":248,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":218,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":187,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":157,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":112,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":51,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":21,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":247,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":217,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":188,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":158,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":128,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":111,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":58,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":24,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":246,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":212,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":193,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":159,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":110,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":57,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":23,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":245,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":211,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":194,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":160,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":109,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":56,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":26,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":244,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":214,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":191,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":161,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":108,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":55,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":25,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":243,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":213,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":192,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":162,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":107,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":77,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":43,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":17,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":239,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":198,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":164,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":138,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":119,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":89,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":78,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":44,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":18,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":240,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":197,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":163,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":137,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":120,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":90,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":75,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":45,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":15,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":241,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":196,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":166,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":136,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":121,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":87,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":76,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":46,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":16,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":242,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":195,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":165,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":135,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":122,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":88,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":81,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":47,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":13,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":235,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":202,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":168,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":134,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":115,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":85,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":82,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":48,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":14,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":236,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":201,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":167,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":133,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":116,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":86,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":79,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":49,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":11,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":237,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":200,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":170,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":132,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":117,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":83,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":80,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":50,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":12,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":238,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":199,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":169,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":131,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":118,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":84,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":69,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":35,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":9,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":231,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":206,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":172,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":146,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":127,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":97,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":70,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":36,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":10,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":232,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":205,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":171,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":145,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":98,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":67,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":37,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":7,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":233,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":204,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":174,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":144,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":95,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":68,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":38,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":8,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":234,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":203,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":173,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":143,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":96,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":73,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":39,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":5,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":227,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":210,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":176,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":142,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":123,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":93,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":74,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":40,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":6,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":228,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":209,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":175,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":141,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":124,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":94,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":71,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":41,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":3,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":229,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":208,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":178,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":140,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":125,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":91,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":72,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":42,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":4,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":230,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":207,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":177,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":139,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":126,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":92,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}}],"opendaylight-group-statistics:group-features":{"max-groups":[4294967040],"group-types-supported":["opendaylight-group-types:group-all","opendaylight-group-types:group-ff","opendaylight-group-types:group-select","opendaylight-group-types:group-indirect"],"group-capabilities-supported":["opendaylight-group-types:chaining","opendaylight-group-types:select-weight","opendaylight-group-types:select-liveness"],"actions":[67076097]},"flow-node-inventory:manufacturer":"Nicira, Inc.","flow-node-inventory:description":"s2","flow-node-inventory:hardware":"Open vSwitch","flow-node-inventory:switch-features":{"max_tables":254,"capabilities":["flow-node-inventory:flow-feature-capability-table-stats","flow-node-inventory:flow-feature-capability-group-stats","flow-node-inventory:flow-feature-capability-queue-stats","flow-node-inventory:flow-feature-capability-flow-stats","flow-node-inventory:flow-feature-capability-port-stats"],"max_buffers":0},"flow-node-inventory:snapshot-gathering-status-start":{"begin":"2026-04-08T00:59:28.179Z"},"flow-node-inventory:software":"2.17.11","node-connector":[{"id":"openflow:2:3","flow-node-inventory:port-number":3,"flow-node-inventory:hardware-address":"da:7c:fc:7d:24:d4","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s2-eth3","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"29","received":"24"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":63,"nanosecond":499000000},"bytes":{"transmitted":"2429","received":"2007"},"receive-crc-error":"0"}},{"id":"openflow:2:LOCAL","flow-node-inventory:port-number":4294967294,"flow-node-inventory:hardware-address":"ee:be:cf:9b:06:44","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s2","flow-node-inventory:current-feature":"","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":0,"flow-node-inventory:state":{"live":false,"blocked":false,"link-down":true},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"PORT-DOWN","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"0","received":"0"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":63,"nanosecond":494000000},"bytes":{"transmitted":"0","received":"0"},"receive-crc-error":"0"}},{"id":"openflow:2:2","flow-node-inventory:port-number":2,"flow-node-inventory:hardware-address":"76:f5:91:ad:d8:c6","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s2-eth2","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"28","received":"24"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":63,"nanosecond":499000000},"bytes":{"transmitted":"2359","received":"2007"},"receive-crc-error":"0"}},{"id":"openflow:2:1","flow-node-inventory:port-number":1,"flow-node-inventory:hardware-address":"96:61:91:36:76:0b","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s2-eth1","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"30","received":"10"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":63,"nanosecond":499000000},"bytes":{"transmitted":"2535","received":"796"},"receive-crc-error":"0"}}],"flow-node-inventory:ip-address":"10.30.170.192","flow-node-inventory:serial-number":"None","flow-node-inventory:group":[{"group-id":56,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":56000}}],"watch_group":56000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":56,"duration":{"second":59,"nanosecond":452000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":22,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":22000}}],"watch_group":22000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":22,"duration":{"second":59,"nanosecond":452000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":99,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":99000}}],"watch_group":99000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":99,"duration":{"second":59,"nanosecond":452000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":34000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":34000,"duration":{"second":62,"nanosecond":145000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":89000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":89000,"duration":{"second":62,"nanosecond":145000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":60000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":60000,"duration":{"second":62,"nanosecond":145000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":91000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":91000,"duration":{"second":62,"nanosecond":144000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":57,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":57000}}],"watch_group":57000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":57,"duration":{"second":59,"nanosecond":452000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":23,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":23000}}],"watch_group":23000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":23,"duration":{"second":58,"nanosecond":954000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":14000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":14000,"duration":{"second":62,"nanosecond":145000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":98,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":98000}}],"watch_group":98000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":98,"duration":{"second":58,"nanosecond":955000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":56000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":56000,"duration":{"second":62,"nanosecond":144000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":85000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":85000,"duration":{"second":62,"nanosecond":145000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":54,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":54000}}],"watch_group":54000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":54,"duration":{"second":58,"nanosecond":954000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":24,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":24000}}],"watch_group":24000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":24,"duration":{"second":58,"nanosecond":955000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":36000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":36000,"duration":{"second":62,"nanosecond":144000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":87000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":87000,"duration":{"second":62,"nanosecond":145000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":59000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":59000,"duration":{"second":62,"nanosecond":144000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":25000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":25000,"duration":{"second":62,"nanosecond":144000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":43000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":43000,"duration":{"second":62,"nanosecond":145000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":55,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":55000}}],"watch_group":55000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":55,"duration":{"second":58,"nanosecond":954000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":25,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":25000}}],"watch_group":25000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":25,"duration":{"second":61,"nanosecond":960000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":100,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":100000}}],"watch_group":100000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":100,"duration":{"second":58,"nanosecond":955000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":58000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":58000,"duration":{"second":61,"nanosecond":961000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":86000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":86000,"duration":{"second":61,"nanosecond":960000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":60,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":60000}}],"watch_group":60000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":60,"duration":{"second":61,"nanosecond":959000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":26,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":26000}}],"watch_group":26000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":26,"duration":{"second":58,"nanosecond":955000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":41000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":41000,"duration":{"second":61,"nanosecond":959000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":95,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":95000}}],"watch_group":95000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":95,"duration":{"second":58,"nanosecond":955000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":82000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":82000,"duration":{"second":61,"nanosecond":960000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":61,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":61000}}],"watch_group":61000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":61,"duration":{"second":58,"nanosecond":955000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":27,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":27000}}],"watch_group":27000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":27,"duration":{"second":58,"nanosecond":954000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":94,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":94000}}],"watch_group":94000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":94,"duration":{"second":58,"nanosecond":954000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":98000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":98000,"duration":{"second":61,"nanosecond":959000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":27000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":27000,"duration":{"second":61,"nanosecond":959000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":57000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":57000,"duration":{"second":61,"nanosecond":960000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":16000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":16000,"duration":{"second":61,"nanosecond":959000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":83000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":83000,"duration":{"second":61,"nanosecond":959000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":58,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":58000}}],"watch_group":58000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":58,"duration":{"second":61,"nanosecond":459000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":28,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":28000}}],"watch_group":28000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":28,"duration":{"second":58,"nanosecond":954000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":97,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":97000}}],"watch_group":97000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":97,"duration":{"second":58,"nanosecond":954000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":100000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":100000,"duration":{"second":61,"nanosecond":459000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":59,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":59000}}],"watch_group":59000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":59,"duration":{"second":61,"nanosecond":460000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":38000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":38000,"duration":{"second":61,"nanosecond":459000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":29,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":29000}}],"watch_group":29000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":29,"duration":{"second":58,"nanosecond":954000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":96,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":96000}}],"watch_group":96000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":96,"duration":{"second":58,"nanosecond":955000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":84000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":84000,"duration":{"second":61,"nanosecond":460000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":64,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":64000}}],"watch_group":64000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":64,"duration":{"second":58,"nanosecond":955000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":30,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":30000}}],"watch_group":30000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":30,"duration":{"second":58,"nanosecond":955000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":4,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":4000}}],"watch_group":4000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":4,"duration":{"second":58,"nanosecond":950000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":91,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":91000}}],"watch_group":91000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":91,"duration":{"second":61,"nanosecond":459000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":7000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":7000,"duration":{"second":61,"nanosecond":460000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":29000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":29000,"duration":{"second":61,"nanosecond":458000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":65,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":65000}}],"watch_group":65000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":65,"duration":{"second":58,"nanosecond":950000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":31,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":31000}}],"watch_group":31000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":31,"duration":{"second":58,"nanosecond":951000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":5,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":5000}}],"watch_group":5000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":5,"duration":{"second":58,"nanosecond":951000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":90,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":90000}}],"watch_group":90000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":90,"duration":{"second":58,"nanosecond":951000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":18000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":18000,"duration":{"second":61,"nanosecond":458000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":62,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":62000}}],"watch_group":62000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":62,"duration":{"second":58,"nanosecond":950000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":65000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":65000,"duration":{"second":61,"nanosecond":459000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":32,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":32000}}],"watch_group":32000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":32,"duration":{"second":58,"nanosecond":951000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":2,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":2000}}],"watch_group":2000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":2,"duration":{"second":58,"nanosecond":950000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":93,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":93000}}],"watch_group":93000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":93,"duration":{"second":58,"nanosecond":950000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":64000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":64000,"duration":{"second":61,"nanosecond":458000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":63,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":63000}}],"watch_group":63000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":63,"duration":{"second":58,"nanosecond":951000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":33,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":33000}}],"watch_group":33000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":33,"duration":{"second":58,"nanosecond":950000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":3,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":3000}}],"watch_group":3000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":3,"duration":{"second":58,"nanosecond":951000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":80000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":80000,"duration":{"second":61,"nanosecond":458000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":9000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":9000,"duration":{"second":61,"nanosecond":458000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":92,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":92000}}],"watch_group":92000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":92,"duration":{"second":58,"nanosecond":951000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":5000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":5000,"duration":{"second":61,"nanosecond":454000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":20000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":20000,"duration":{"second":61,"nanosecond":453000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":81000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":81000,"duration":{"second":61,"nanosecond":454000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":97000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":97000,"duration":{"second":61,"nanosecond":453000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":31000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":31000,"duration":{"second":61,"nanosecond":454000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":68,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":68000}}],"watch_group":68000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":68,"duration":{"second":58,"nanosecond":951000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":11000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":11000,"duration":{"second":61,"nanosecond":453000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":34,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":34000}}],"watch_group":34000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":34,"duration":{"second":61,"nanosecond":454000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":78000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":78000,"duration":{"second":61,"nanosecond":454000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":87,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":87000}}],"watch_group":87000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":87,"duration":{"second":61,"nanosecond":453000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":93000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":93000,"duration":{"second":61,"nanosecond":454000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":63000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":63000,"duration":{"second":61,"nanosecond":453000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":69,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":69000}}],"watch_group":69000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":69,"duration":{"second":58,"nanosecond":951000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":35,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":35000}}],"watch_group":35000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":35,"duration":{"second":58,"nanosecond":950000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":33000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":33000,"duration":{"second":61,"nanosecond":453000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":79000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":79000,"duration":{"second":61,"nanosecond":453000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":86,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":86000}}],"watch_group":86000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":86,"duration":{"second":61,"nanosecond":454000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":62000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":62000,"duration":{"second":61,"nanosecond":454000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":66,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":66000}}],"watch_group":66000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":66,"duration":{"second":58,"nanosecond":951000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":77000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":77000,"duration":{"second":61,"nanosecond":454000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":36,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":36000}}],"watch_group":36000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":36,"duration":{"second":61,"nanosecond":453000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":89,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":89000}}],"watch_group":89000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":89,"duration":{"second":61,"nanosecond":454000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":22000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":22000,"duration":{"second":61,"nanosecond":452000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":95000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":95000,"duration":{"second":61,"nanosecond":451000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":67,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":67000}}],"watch_group":67000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":67,"duration":{"second":58,"nanosecond":950000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":37,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":37000}}],"watch_group":37000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":37,"duration":{"second":58,"nanosecond":950000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":88,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":88000}}],"watch_group":88000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":88,"duration":{"second":58,"nanosecond":948000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":61000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":61000,"duration":{"second":61,"nanosecond":450000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":3000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":3000,"duration":{"second":61,"nanosecond":450000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":73,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":73000}}],"watch_group":73000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":73,"duration":{"second":58,"nanosecond":948000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":39,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":39000}}],"watch_group":39000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":39,"duration":{"second":58,"nanosecond":948000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":13,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":13000}}],"watch_group":13000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":13,"duration":{"second":58,"nanosecond":949000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":74000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":74000,"duration":{"second":61,"nanosecond":450000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":15000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":15000,"duration":{"second":61,"nanosecond":449000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":44000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":44000,"duration":{"second":61,"nanosecond":450000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":45000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":45000,"duration":{"second":61,"nanosecond":450000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":68000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":68000,"duration":{"second":61,"nanosecond":450000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":72,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":72000}}],"watch_group":72000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":72,"duration":{"second":58,"nanosecond":948000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":38,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":38000}}],"watch_group":38000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":38,"duration":{"second":60,"nanosecond":954000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":75000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":75000,"duration":{"second":60,"nanosecond":954000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":12,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":12000}}],"watch_group":12000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":12,"duration":{"second":58,"nanosecond":948000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":35000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":35000,"duration":{"second":60,"nanosecond":953000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":24000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":24000,"duration":{"second":60,"nanosecond":954000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":90000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":90000,"duration":{"second":60,"nanosecond":954000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":71,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":71000}}],"watch_group":71000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":71,"duration":{"second":58,"nanosecond":948000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":41,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":41000}}],"watch_group":41000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":41,"duration":{"second":60,"nanosecond":954000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":42000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":42000,"duration":{"second":60,"nanosecond":953000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":11,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":11000}}],"watch_group":11000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":11,"duration":{"second":60,"nanosecond":954000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":92000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":92000,"duration":{"second":60,"nanosecond":954000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":46000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":46000,"duration":{"second":60,"nanosecond":954000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":67000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":67000,"duration":{"second":60,"nanosecond":954000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":70,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":70000}}],"watch_group":70000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":70,"duration":{"second":58,"nanosecond":948000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":76000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":76000,"duration":{"second":60,"nanosecond":953000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":40,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":40000}}],"watch_group":40000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":40,"duration":{"second":58,"nanosecond":949000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":13000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":13000,"duration":{"second":60,"nanosecond":953000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":10,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":10000}}],"watch_group":10000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":10,"duration":{"second":58,"nanosecond":949000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":88000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":88000,"duration":{"second":60,"nanosecond":954000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":47000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":47000,"duration":{"second":60,"nanosecond":953000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":66000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":66000,"duration":{"second":60,"nanosecond":954000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":77,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":77000}}],"watch_group":77000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":77,"duration":{"second":60,"nanosecond":953000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":43,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":43000}}],"watch_group":43000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":43,"duration":{"second":60,"nanosecond":954000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":9,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":9000}}],"watch_group":9000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":9,"duration":{"second":60,"nanosecond":954000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":99000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":99000,"duration":{"second":60,"nanosecond":953000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":26000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":26000,"duration":{"second":60,"nanosecond":954000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":70000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":70000,"duration":{"second":60,"nanosecond":954000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":76,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":76000}}],"watch_group":76000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":76,"duration":{"second":60,"nanosecond":449000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":42,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":42000}}],"watch_group":42000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":42,"duration":{"second":60,"nanosecond":449000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":8,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":8000}}],"watch_group":8000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":8,"duration":{"second":58,"nanosecond":949000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":37000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":37000,"duration":{"second":60,"nanosecond":449000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":49000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":49000,"duration":{"second":60,"nanosecond":450000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":71000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":71000,"duration":{"second":60,"nanosecond":450000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":48000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":48000,"duration":{"second":60,"nanosecond":450000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":75,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":75000}}],"watch_group":75000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":75,"duration":{"second":60,"nanosecond":450000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":45,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":45000}}],"watch_group":45000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":45,"duration":{"second":60,"nanosecond":449000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":7,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":7000}}],"watch_group":7000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":7,"duration":{"second":60,"nanosecond":450000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":39000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":39000,"duration":{"second":60,"nanosecond":449000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":73000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":73000,"duration":{"second":60,"nanosecond":450000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":69000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":69000,"duration":{"second":60,"nanosecond":450000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":17000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":17000,"duration":{"second":60,"nanosecond":450000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":28000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":28000,"duration":{"second":60,"nanosecond":450000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":74,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":74000}}],"watch_group":74000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":74,"duration":{"second":60,"nanosecond":450000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":44,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":44000}}],"watch_group":44000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":44,"duration":{"second":60,"nanosecond":450000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":6,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":6000}}],"watch_group":6000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":6,"duration":{"second":58,"nanosecond":948000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":40000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":40000,"duration":{"second":60,"nanosecond":450000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":81,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":81000}}],"watch_group":81000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":81,"duration":{"second":60,"nanosecond":450000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":47,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":47000}}],"watch_group":47000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":47,"duration":{"second":60,"nanosecond":450000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":21,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":21000}}],"watch_group":21000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":21,"duration":{"second":58,"nanosecond":949000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":8000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":8000,"duration":{"second":60,"nanosecond":449000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":19000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":19000,"duration":{"second":60,"nanosecond":450000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":96000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":96000,"duration":{"second":60,"nanosecond":450000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":80,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":80000}}],"watch_group":80000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":80,"duration":{"second":60,"nanosecond":450000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":46,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":46000}}],"watch_group":46000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":46,"duration":{"second":60,"nanosecond":450000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":20,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":20000}}],"watch_group":20000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":20,"duration":{"second":60,"nanosecond":449000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":52000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":52000,"duration":{"second":60,"nanosecond":450000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":6000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":6000,"duration":{"second":60,"nanosecond":449000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":79,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":79000}}],"watch_group":79000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":79,"duration":{"second":60,"nanosecond":449000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":49,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":49000}}],"watch_group":49000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":49,"duration":{"second":59,"nanosecond":959000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":19,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":19000}}],"watch_group":19000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":19,"duration":{"second":59,"nanosecond":959000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":50000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":50000,"duration":{"second":59,"nanosecond":958000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":72000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":72000,"duration":{"second":59,"nanosecond":958000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":30000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":30000,"duration":{"second":59,"nanosecond":957000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":78,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":78000}}],"watch_group":78000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":78,"duration":{"second":59,"nanosecond":956000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":48,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":48000}}],"watch_group":48000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":48,"duration":{"second":59,"nanosecond":955000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":18,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":18000}}],"watch_group":18000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":18,"duration":{"second":59,"nanosecond":955000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":51000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":51000,"duration":{"second":59,"nanosecond":955000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":85,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":85000}}],"watch_group":85000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":85,"duration":{"second":59,"nanosecond":954000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":55000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":55000,"duration":{"second":59,"nanosecond":955000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":51,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":51000}}],"watch_group":51000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":51,"duration":{"second":59,"nanosecond":458000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":17,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":17000}}],"watch_group":17000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":17,"duration":{"second":59,"nanosecond":457000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":21000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":21000,"duration":{"second":59,"nanosecond":458000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":4000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":4000,"duration":{"second":59,"nanosecond":458000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":84,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":84000}}],"watch_group":84000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":84,"duration":{"second":59,"nanosecond":458000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":50,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":50000}}],"watch_group":50000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":50,"duration":{"second":59,"nanosecond":456000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":16,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":16000}}],"watch_group":16000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":16,"duration":{"second":59,"nanosecond":457000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":10000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":10000,"duration":{"second":59,"nanosecond":457000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":54000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":54000,"duration":{"second":59,"nanosecond":451000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":83,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":83000}}],"watch_group":83000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":83,"duration":{"second":59,"nanosecond":451000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":32000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":32000,"duration":{"second":59,"nanosecond":451000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":53,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":53000}}],"watch_group":53000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":53,"duration":{"second":58,"nanosecond":948000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":15,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":15000}}],"watch_group":15000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":15,"duration":{"second":59,"nanosecond":452000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":2000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":2000,"duration":{"second":59,"nanosecond":452000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":82,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":82000}}],"watch_group":82000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":82,"duration":{"second":59,"nanosecond":451000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":52,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":52000}}],"watch_group":52000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":52,"duration":{"second":59,"nanosecond":451000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":14,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":14000}}],"watch_group":14000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":14,"duration":{"second":59,"nanosecond":452000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":53000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":53000,"duration":{"second":59,"nanosecond":452000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":12000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":12000,"duration":{"second":59,"nanosecond":452000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":23000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":23000,"duration":{"second":59,"nanosecond":451000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":94000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":94000,"duration":{"second":59,"nanosecond":452000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}}],"flow-node-inventory:snapshot-gathering-status-end":{"succeeded":true,"end":"2026-04-08T00:59:28.219Z"}}]}}</msg>
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:59:28.570030" elapsed="0.010682"/>
</kw>
<kw name="Get Count" owner="BuiltIn">
<msg time="2026-04-08T00:59:28.584034" level="INFO">Item found from container 300 times.</msg>
<msg time="2026-04-08T00:59:28.584117" level="INFO">${count} = 300</msg>
<var>${count}</var>
<arg>${resp.text}</arg>
<arg>"priority"</arg>
<doc>Returns and logs how many times ``item`` is found from ``container``.</doc>
<status status="PASS" start="2026-04-08T00:59:28.580907" elapsed="0.003234"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${count}</arg>
<arg>${flows}</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="PASS" start="2026-04-08T00:59:28.584350" elapsed="0.000314"/>
</kw>
<arg>${less_flows}</arg>
<doc>Check number of flows in the inventory.</doc>
<status status="PASS" start="2026-04-08T00:59:28.507936" elapsed="0.076796"/>
</kw>
<arg>30s</arg>
<arg>1s</arg>
<arg>ClusterOpenFlow.Check Number Of Flows On Member</arg>
<arg>${less_flows}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-08T00:59:27.429897" elapsed="1.154883"/>
</kw>
<doc>Check Flows in Operational DS.</doc>
<status status="PASS" start="2026-04-08T00:59:27.052208" elapsed="1.532698"/>
</test>
<test id="s1-s4-t16" name="Check Groups In Operational DS After Mininet Is Disconnected" line="132">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-08T00:59:28.588287" elapsed="0.000205"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-08T00:59:28.588007" elapsed="0.000538"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:59:28.589637" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:59:28.589515" elapsed="0.000170"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:28.589492" elapsed="0.000215"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:59:28.594723" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:59:28.594615" elapsed="0.000159"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:28.594596" elapsed="0.000201"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:59:28.595807" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:59:28.595421" elapsed="0.000413"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:59:28.596316" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:59:28.595996" elapsed="0.000346"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:59:28.596385" elapsed="0.000034"/>
</return>
<msg time="2026-04-08T00:59:28.596544" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:59:28.595025" elapsed="0.001544"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:59:28.601935" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:59:28.601828" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:28.601809" elapsed="0.000192"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:59:28.603188" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:59:28.603058" elapsed="0.000179"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:28.603039" elapsed="0.000220"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:59:28.603704" level="INFO">${karaf_connection_index} = 476</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:59:28.603406" elapsed="0.000325"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:59:28.604148" level="INFO">${current_connection_index} = 495</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:59:28.603893" elapsed="0.000298"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T00:59:28.638070" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T00:59:28.604751" elapsed="0.033470"/>
</kw>
<msg time="2026-04-08T00:59:28.638402" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T00:59:28.638450" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:59:28.604354" elapsed="0.034132"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T00:59:28.699599" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "G "r "o "u "p "s "[C "I "n "[C "O "p "e "r "a "t "i "o "n "a "l "[C "D "S "[C "A "f "t "e "r "[C "M "i "n "i "n "e "t "[C "I "s "[C "D "i "s "[78Cc "[A[78Co
 "n "n "e "c "t "e "d "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T00:59:28.639045" elapsed="0.060846"/>
</kw>
<msg time="2026-04-08T00:59:28.700181" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T00:59:28.700340" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "G "r "o "u "p "s...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:59:28.638679" elapsed="0.061703"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:28.700914" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:59:28.700534" elapsed="0.000470"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:28.700485" elapsed="0.000549"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:59:28.701650" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "G "r "o "u "p "s "[C "I "n "[C "O "p "e "r "a "t "i "o "n "a "l "[C "D "S "[C "A "f "t "e "r "[C "M "i "n "i "n "e "t "[C "I "s "[C "D "i "s "[78Cc "[A[78Co
 "n "n "e "c "t "e "d "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:59:28.701209" elapsed="0.000529"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:28.702037" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:59:28.701809" elapsed="0.000284"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:28.701789" elapsed="0.000329"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T00:59:28.702177" elapsed="0.000047"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:59:28.705062" elapsed="0.000217"/>
</kw>
<msg time="2026-04-08T00:59:28.705343" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:59:28.703862" elapsed="0.001619"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:28.705756" elapsed="0.000312"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:28.706359" elapsed="0.000076"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:59:28.703190" elapsed="0.003357"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T00:59:28.702546" elapsed="0.004067"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T00:59:28.602757" elapsed="0.103955"/>
</kw>
<msg time="2026-04-08T00:59:28.706807" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:59:28.706851" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "G "r "o "u "p "s...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:59:28.602152" elapsed="0.104735"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T00:59:28.707076" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-08T00:59:28.706966" elapsed="0.000168"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:28.706947" elapsed="0.000227"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:28.707586" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:28.707929" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T00:59:28.708176" elapsed="0.000022"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T00:59:28.601487" elapsed="0.106812"/>
</kw>
<msg time="2026-04-08T00:59:28.708394" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:59:28.708439" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "G "r "o "u "p "s...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:59:28.596939" elapsed="0.111539"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:28.708812" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:59:28.708555" elapsed="0.000310"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:28.708538" elapsed="0.000351"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T00:59:28.596795" elapsed="0.112117"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:59:28.714499" elapsed="0.000024"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:59:28.714361" elapsed="0.000193"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:28.714342" elapsed="0.000273"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:59:28.715839" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:59:28.715727" elapsed="0.000158"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:28.715709" elapsed="0.000198"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:59:28.716418" level="INFO">${karaf_connection_index} = 478</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:59:28.716059" elapsed="0.000387"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:59:28.716864" level="INFO">${current_connection_index} = 495</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:59:28.716615" elapsed="0.000276"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T00:59:28.749695" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T00:59:28.717435" elapsed="0.032365"/>
</kw>
<msg time="2026-04-08T00:59:28.749982" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T00:59:28.750031" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:59:28.717068" elapsed="0.032998"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T00:59:28.821892" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "G "r "o "u "p "s "[C "I "n "[C "O "p "e "r "a "t "i "o "n "a "l "[C "D "S "[C "A "f "t "e "r "[C "M "i "n "i "n "e "t "[C "I "s "[C "D "i "s "[78Cc "[A[78Co
 "n "n "e "c "t "e "d "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T00:59:28.750634" elapsed="0.071470"/>
</kw>
<msg time="2026-04-08T00:59:28.822381" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T00:59:28.822430" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "G "r "o "u "p "s...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:59:28.750274" elapsed="0.072193"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:28.822934" elapsed="0.000027"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:59:28.822596" elapsed="0.000399"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:28.822556" elapsed="0.000469"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:59:28.823588" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "G "r "o "u "p "s "[C "I "n "[C "O "p "e "r "a "t "i "o "n "a "l "[C "D "S "[C "A "f "t "e "r "[C "M "i "n "i "n "e "t "[C "I "s "[C "D "i "s "[78Cc "[A[78Co
 "n "n "e "c "t "e "d "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:59:28.823194" elapsed="0.000476"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:28.823961" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:59:28.823738" elapsed="0.000278"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:28.823720" elapsed="0.000319"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T00:59:28.824077" elapsed="0.000042"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:59:28.827045" elapsed="0.000218"/>
</kw>
<msg time="2026-04-08T00:59:28.827326" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:59:28.825771" elapsed="0.001702"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:28.827752" elapsed="0.000074"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:28.828085" elapsed="0.000090"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:59:28.825062" elapsed="0.003234"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T00:59:28.824443" elapsed="0.003921"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T00:59:28.715421" elapsed="0.113045"/>
</kw>
<msg time="2026-04-08T00:59:28.828586" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:59:28.828633" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "G "r "o "u "p "s...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:59:28.714817" elapsed="0.113911"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T00:59:28.828962" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-08T00:59:28.828821" elapsed="0.000415"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:28.828800" elapsed="0.000471"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 2,
close the previous connection. In any case create a new connection
to karaf console for 2, set correct prompt set and login to karaf console.
Store connection index for 2 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:28.829948" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:28.830314" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T00:59:28.830388" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T00:59:28.713965" elapsed="0.116529"/>
</kw>
<msg time="2026-04-08T00:59:28.830590" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:59:28.830635" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "G "r "o "u "p "s...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:59:28.709230" elapsed="0.121440"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:28.831000" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:59:28.830745" elapsed="0.000309"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:28.830728" elapsed="0.000349"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T00:59:28.709065" elapsed="0.122036"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:59:28.836731" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:59:28.836621" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:28.836603" elapsed="0.000195"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:59:28.837985" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:59:28.837876" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:28.837857" elapsed="0.000195"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:59:28.838537" level="INFO">${karaf_connection_index} = 480</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:59:28.838231" elapsed="0.000333"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:59:28.838972" level="INFO">${current_connection_index} = 495</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:59:28.838724" elapsed="0.000274"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T00:59:28.875077" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T00:59:28.839517" elapsed="0.035682"/>
</kw>
<msg time="2026-04-08T00:59:28.875361" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T00:59:28.875409" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:59:28.839178" elapsed="0.036265"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T00:59:28.941509" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "G "r "o "u "p "s "[C "I "n "[C "O "p "e "r "a "t "i "o "n "a "l "[C "D "S "[C "A "f "t "e "r "[C "M "i "n "i "n "e "t "[C "I "s "[C "D "i "s "[78Cc "[A[78Co
 "n "n "e "c "t "e "d "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T00:59:28.876110" elapsed="0.065555"/>
</kw>
<msg time="2026-04-08T00:59:28.941850" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T00:59:28.941896" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "G "r "o "u "p "s...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:59:28.875622" elapsed="0.066310"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:28.942336" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:59:28.942034" elapsed="0.000362"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:28.942004" elapsed="0.000418"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:59:28.942909" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "G "r "o "u "p "s "[C "I "n "[C "O "p "e "r "a "t "i "o "n "a "l "[C "D "S "[C "A "f "t "e "r "[C "M "i "n "i "n "e "t "[C "I "s "[C "D "i "s "[78Cc "[A[78Co
 "n "n "e "c "t "e "d "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:59:28.942571" elapsed="0.000420"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:28.943360" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:59:28.943059" elapsed="0.000357"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:28.943040" elapsed="0.000400"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T00:59:28.943476" elapsed="0.000036"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:59:28.946251" elapsed="0.000191"/>
</kw>
<msg time="2026-04-08T00:59:28.946504" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:59:28.945023" elapsed="0.001616"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:28.946915" elapsed="0.000075"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:28.947271" elapsed="0.000075"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:59:28.944370" elapsed="0.003086"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T00:59:28.943787" elapsed="0.003765"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T00:59:28.837556" elapsed="0.110097"/>
</kw>
<msg time="2026-04-08T00:59:28.947750" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:59:28.947794" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "G "r "o "u "p "s...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:59:28.836976" elapsed="0.110854"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T00:59:28.948015" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-08T00:59:28.947908" elapsed="0.000164"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:28.947890" elapsed="0.000207"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 3,
close the previous connection. In any case create a new connection
to karaf console for 3, set correct prompt set and login to karaf console.
Store connection index for 3 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:28.948513" elapsed="0.000024"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:28.949112" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T00:59:28.949202" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T00:59:28.836267" elapsed="0.113043"/>
</kw>
<msg time="2026-04-08T00:59:28.949405" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:59:28.949450" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "G "r "o "u "p "s...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:59:28.831450" elapsed="0.118036"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:28.949816" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:59:28.949561" elapsed="0.000310"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:28.949544" elapsed="0.000350"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T00:59:28.831302" elapsed="0.118614"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-08T00:59:28.596624" elapsed="0.353326"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-08T00:59:28.594251" elapsed="0.355760"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-08T00:59:28.589213" elapsed="0.360858"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:59:28.588701" elapsed="0.361418"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-08T00:59:28.585884" elapsed="0.364310"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Check Number Of Groups On Member" owner="ClusterOpenFlow">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:59:28.951985" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:59:28.951687" elapsed="0.000324"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T00:59:28.952056" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:59:28.952228" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T00:59:28.951333" elapsed="0.000921"/>
</kw>
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T00:59:29.015538" level="INFO">GET Request : url=http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01s3bfo0y24i1es90l47mavglv0.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T00:59:29.017636" level="INFO">GET Response : url=http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Transfer-Encoding': 'chunked'} 
 body={"opendaylight-inventory:nodes":{"node":[{"id":"openflow:3","flow-node-inventory:port-number":54950,"flow-node-inventory:table":[{"id":62,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":28,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":2,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":224,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":181,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":147,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":106,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":61,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":27,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":1,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":223,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":182,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":148,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":105,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":60,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":30,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":0,"flow":[{"id":"69","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.69/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":69}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":282000000}},"flags":""},{"id":"60","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.60/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":60}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":282000000}},"flags":""},{"id":"68","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.68/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":68}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":282000000}},"flags":""},{"id":"67","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.67/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":67}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":282000000}},"flags":""},{"id":"66","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.66/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":66}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":282000000}},"flags":""},{"id":"65","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.65/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":65}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":282000000}},"flags":""},{"id":"64","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.64/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":64}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":282000000}},"flags":""},{"id":"63","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.63/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":63}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":282000000}},"flags":""},{"id":"62","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.62/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":62}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":282000000}},"flags":""},{"id":"61","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.61/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":61}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":282000000}},"flags":""},{"id":"100","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.100/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":100}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":282000000}},"flags":""},{"id":"71","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.71/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":71}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":282000000}},"flags":""},{"id":"70","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.70/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":70}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":282000000}},"flags":""},{"id":"79","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.79/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":79}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":282000000}},"flags":""},{"id":"78","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.78/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":78}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":282000000}},"flags":""},{"id":"77","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.77/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":77}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":282000000}},"flags":""},{"id":"76","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.76/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":76}}]}}]},"hard-timeout":0,"opendaylight-flow-statisti... (set the log level to DEBUG or TRACE to see the full content) 
 </msg>
<msg time="2026-04-08T00:59:29.018578" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${RFC8040_OPERATIONAL_NODES_API}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T00:59:28.952454" elapsed="0.066189"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:59:29.025680" level="INFO">{"opendaylight-inventory:nodes":{"node":[{"id":"openflow:3","flow-node-inventory:port-number":54950,"flow-node-inventory:table":[{"id":62,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":28,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":2,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":224,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":181,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":147,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":106,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":61,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":27,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":1,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":223,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":182,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":148,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":105,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":60,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":30,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":0,"flow":[{"id":"69","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.69/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":69}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":282000000}},"flags":""},{"id":"60","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.60/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":60}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":282000000}},"flags":""},{"id":"68","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.68/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":68}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":282000000}},"flags":""},{"id":"67","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.67/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":67}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":282000000}},"flags":""},{"id":"66","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.66/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":66}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":282000000}},"flags":""},{"id":"65","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.65/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":65}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":282000000}},"flags":""},{"id":"64","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.64/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":64}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":282000000}},"flags":""},{"id":"63","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.63/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":63}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":282000000}},"flags":""},{"id":"62","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.62/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":62}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":282000000}},"flags":""},{"id":"61","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.61/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":61}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":282000000}},"flags":""},{"id":"100","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.100/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":100}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":282000000}},"flags":""},{"id":"71","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.71/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":71}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":282000000}},"flags":""},{"id":"70","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.70/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":70}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":282000000}},"flags":""},{"id":"79","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.79/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":79}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":282000000}},"flags":""},{"id":"78","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.78/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":78}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":282000000}},"flags":""},{"id":"77","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.77/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":77}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":282000000}},"flags":""},{"id":"76","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.76/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":76}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":282000000}},"flags":""},{"id":"75","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.75/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":75}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":282000000}},"flags":""},{"id":"74","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.74/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":74}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":282000000}},"flags":""},{"id":"73","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.73/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":73}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":282000000}},"flags":""},{"id":"72","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.72/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":72}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":282000000}},"flags":""},{"id":"82","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.82/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":82}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":282000000}},"flags":""},{"id":"81","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.81/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":81}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":282000000}},"flags":""},{"id":"80","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.80/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":80}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":282000000}},"flags":""},{"id":"89","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.89/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":89}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":282000000}},"flags":""},{"id":"88","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.88/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":88}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":282000000}},"flags":""},{"id":"87","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.87/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":87}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":282000000}},"flags":""},{"id":"86","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.86/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":86}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":282000000}},"flags":""},{"id":"85","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.85/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":85}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":282000000}},"flags":""},{"id":"84","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.84/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":84}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":282000000}},"flags":""},{"id":"83","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.83/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":83}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":282000000}},"flags":""},{"id":"19","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.19/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":19}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":282000000}},"flags":""},{"id":"18","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.18/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":18}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":282000000}},"flags":""},{"id":"17","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.17/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":17}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":282000000}},"flags":""},{"id":"16","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.16/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":16}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":282000000}},"flags":""},{"id":"15","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.15/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":15}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":282000000}},"flags":""},{"id":"14","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.14/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":14}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":282000000}},"flags":""},{"id":"2","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.2/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":2}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":282000000}},"flags":""},{"id":"93","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.93/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":93}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":282000000}},"flags":""},{"id":"92","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.92/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":92}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":282000000}},"flags":""},{"id":"91","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.91/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":91}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":282000000}},"flags":""},{"id":"90","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.90/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":90}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":282000000}},"flags":""},{"id":"13","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.13/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":13}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":282000000}},"flags":""},{"id":"12","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.12/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":12}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":282000000}},"flags":""},{"id":"11","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.11/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":11}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":282000000}},"flags":""},{"id":"99","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.99/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":99}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":282000000}},"flags":""},{"id":"10","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.10/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":10}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":282000000}},"flags":""},{"id":"98","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.98/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":98}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":282000000}},"flags":""},{"id":"97","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.97/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":97}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":282000000}},"flags":""},{"id":"96","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.96/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":96}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":281000000}},"flags":""},{"id":"95","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.95/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":95}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":281000000}},"flags":""},{"id":"94","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.94/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":94}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":281000000}},"flags":""},{"id":"29","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.29/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":29}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":281000000}},"flags":""},{"id":"28","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.28/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":28}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":281000000}},"flags":""},{"id":"27","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.27/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":27}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":281000000}},"flags":""},{"id":"26","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.26/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":26}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":281000000}},"flags":""},{"id":"25","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.25/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":25}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":281000000}},"flags":""},{"id":"9","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.9/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":9}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":281000000}},"flags":""},{"id":"8","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.8/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":8}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":281000000}},"flags":""},{"id":"7","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.7/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":7}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":281000000}},"flags":""},{"id":"6","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.6/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":6}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":281000000}},"flags":""},{"id":"5","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.5/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":5}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":281000000}},"flags":""},{"id":"4","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.4/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":4}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":281000000}},"flags":""},{"id":"3","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.3/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":3}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":281000000}},"flags":""},{"id":"24","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.24/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":24}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":281000000}},"flags":""},{"id":"23","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.23/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":23}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":281000000}},"flags":""},{"id":"22","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.22/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":22}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":281000000}},"flags":""},{"id":"21","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.21/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":21}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":281000000}},"flags":""},{"id":"20","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.20/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":20}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":281000000}},"flags":""},{"id":"39","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.39/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":39}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":281000000}},"flags":""},{"id":"38","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.38/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":38}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":281000000}},"flags":""},{"id":"37","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.37/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":37}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":281000000}},"flags":""},{"id":"36","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.36/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":36}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":281000000}},"flags":""},{"id":"35","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.35/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":35}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":281000000}},"flags":""},{"id":"34","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.34/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":34}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":281000000}},"flags":""},{"id":"33","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.33/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":33}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":281000000}},"flags":""},{"id":"32","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.32/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":32}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":281000000}},"flags":""},{"id":"31","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.31/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":31}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":281000000}},"flags":""},{"id":"30","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.30/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":30}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":281000000}},"flags":""},{"id":"49","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.49/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":49}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":281000000}},"flags":""},{"id":"48","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.48/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":48}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":281000000}},"flags":""},{"id":"47","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.47/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":47}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":281000000}},"flags":""},{"id":"#UF$TABLE*0-3","table_id":0,"priority":0,"cookie_mask":"0","idle-timeout":0,"cookie":"10","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"output-action":{"max-length":65535,"output-node-connector":"CONTROLLER"}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"19","byte-count":"1510","duration":{"second":58,"nanosecond":153000000}},"flags":"SEND_FLOW_REM"},{"id":"46","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.46/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":46}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":281000000}},"flags":""},{"id":"45","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.45/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":45}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":281000000}},"flags":""},{"id":"44","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.44/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":44}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":281000000}},"flags":""},{"id":"43","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.43/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":43}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":281000000}},"flags":""},{"id":"42","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.42/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":42}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":281000000}},"flags":""},{"id":"41","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.41/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":41}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":281000000}},"flags":""},{"id":"40","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.40/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":40}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":281000000}},"flags":""},{"id":"59","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.59/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":59}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":281000000}},"flags":""},{"id":"58","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.58/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":58}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":281000000}},"flags":""},{"id":"57","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.57/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":57}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":281000000}},"flags":""},{"id":"56","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.56/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":56}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":281000000}},"flags":""},{"id":"55","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.55/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":55}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":281000000}},"flags":""},{"id":"54","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.54/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":54}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":281000000}},"flags":""},{"id":"53","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.53/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":53}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":281000000}},"flags":""},{"id":"52","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.52/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":52}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":281000000}},"flags":""},{"id":"51","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.51/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":51}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":278000000}},"flags":""},{"id":"50","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.50/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":50}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":278000000}},"flags":""}],"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"37","active-flows":100,"packets-matched":"29"}},{"id":226,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":179,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":149,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":104,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":59,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":29,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":225,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":180,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":150,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":103,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":66,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":32,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":220,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":185,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":151,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":102,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":65,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":31,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":253,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":219,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":186,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":152,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":101,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":64,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":34,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":252,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":222,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":183,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":153,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":100,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":63,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":33,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":251,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":221,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":184,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":154,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":99,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":54,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":20,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":250,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":216,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":189,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":155,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":129,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":114,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":53,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":19,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":249,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":215,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":190,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":156,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":130,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":113,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":52,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":22,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":248,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":218,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":187,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":157,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":112,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":51,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":21,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":247,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":217,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":188,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":158,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":128,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":111,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":58,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":24,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":246,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":212,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":193,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":159,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":110,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":57,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":23,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":245,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":211,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":194,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":160,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":109,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":56,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":26,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":244,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":214,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":191,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":161,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":108,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":55,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":25,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":243,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":213,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":192,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":162,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":107,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":77,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":43,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":17,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":239,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":198,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":164,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":138,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":119,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":89,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":78,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":44,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":18,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":240,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":197,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":163,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":137,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":120,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":90,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":75,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":45,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":15,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":241,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":196,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":166,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":136,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":121,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":87,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":76,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":46,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":16,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":242,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":195,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":165,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":135,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":122,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":88,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":81,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":47,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":13,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":235,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":202,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":168,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":134,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":115,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":85,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":82,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":48,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":14,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":236,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":201,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":167,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":133,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":116,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":86,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":79,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":49,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":11,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":237,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":200,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":170,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":132,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":117,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":83,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":80,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":50,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":12,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":238,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":199,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":169,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":131,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":118,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":84,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":69,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":35,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":9,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":231,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":206,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":172,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":146,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":127,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":97,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":70,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":36,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":10,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":232,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":205,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":171,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":145,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":98,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":67,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":37,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":7,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":233,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":204,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":174,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":144,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":95,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":68,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":38,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":8,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":234,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":203,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":173,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":143,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":96,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":73,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":39,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":5,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":227,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":210,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":176,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":142,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":123,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":93,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":74,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":40,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":6,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":228,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":209,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":175,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":141,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":124,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":94,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":71,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":41,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":3,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":229,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":208,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":178,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":140,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":125,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":91,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":72,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":42,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":4,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":230,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":207,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":177,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":139,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":126,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":92,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}}],"opendaylight-group-statistics:group-features":{"max-groups":[4294967040],"group-types-supported":["opendaylight-group-types:group-all","opendaylight-group-types:group-ff","opendaylight-group-types:group-select","opendaylight-group-types:group-indirect"],"group-capabilities-supported":["opendaylight-group-types:chaining","opendaylight-group-types:select-weight","opendaylight-group-types:select-liveness"],"actions":[67076097]},"flow-node-inventory:manufacturer":"Nicira, Inc.","flow-node-inventory:description":"s3","flow-node-inventory:hardware":"Open vSwitch","flow-node-inventory:switch-features":{"max_tables":254,"capabilities":["flow-node-inventory:flow-feature-capability-table-stats","flow-node-inventory:flow-feature-capability-group-stats","flow-node-inventory:flow-feature-capability-queue-stats","flow-node-inventory:flow-feature-capability-flow-stats","flow-node-inventory:flow-feature-capability-port-stats"],"max_buffers":0},"flow-node-inventory:snapshot-gathering-status-start":{"begin":"2026-04-08T00:59:28.159Z"},"flow-node-inventory:software":"2.17.11","node-connector":[{"id":"openflow:3:LOCAL","flow-node-inventory:port-number":4294967294,"flow-node-inventory:hardware-address":"c2:87:c1:60:0d:43","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s3","flow-node-inventory:current-feature":"","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":0,"flow-node-inventory:state":{"live":false,"blocked":false,"link-down":true},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"PORT-DOWN","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"0","received":"0"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":63,"nanosecond":493000000},"bytes":{"transmitted":"0","received":"0"},"receive-crc-error":"0"}},{"id":"openflow:3:2","flow-node-inventory:port-number":2,"flow-node-inventory:hardware-address":"9e:72:98:8c:46:72","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s3-eth2","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"24","received":"29"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":63,"nanosecond":496000000},"bytes":{"transmitted":"2007","received":"2429"},"receive-crc-error":"0"}},{"id":"openflow:3:1","flow-node-inventory:port-number":1,"flow-node-inventory:hardware-address":"ca:ac:9a:41:42:1c","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s3-eth1","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"31","received":"10"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":63,"nanosecond":496000000},"bytes":{"transmitted":"2605","received":"796"},"receive-crc-error":"0"}}],"flow-node-inventory:ip-address":"10.30.170.192","flow-node-inventory:serial-number":"None","flow-node-inventory:group":[{"group-id":56,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":56000}}],"watch_group":56000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":56,"duration":{"second":59,"nanosecond":304000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":22,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":22000}}],"watch_group":22000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":22,"duration":{"second":59,"nanosecond":304000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":99,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":99000}}],"watch_group":99000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":99,"duration":{"second":59,"nanosecond":304000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":34000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":34000,"duration":{"second":62,"nanosecond":134000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":89000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":89000,"duration":{"second":62,"nanosecond":133000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":60000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":60000,"duration":{"second":62,"nanosecond":130000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":91000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":91000,"duration":{"second":62,"nanosecond":130000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":57,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":57000}}],"watch_group":57000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":57,"duration":{"second":59,"nanosecond":304000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":23,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":23000}}],"watch_group":23000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":23,"duration":{"second":58,"nanosecond":807000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":14000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":14000,"duration":{"second":62,"nanosecond":130000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":98,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":98000}}],"watch_group":98000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":98,"duration":{"second":58,"nanosecond":806000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":56000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":56000,"duration":{"second":62,"nanosecond":130000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":85000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":85000,"duration":{"second":62,"nanosecond":130000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":54,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":54000}}],"watch_group":54000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":54,"duration":{"second":58,"nanosecond":806000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":24,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":24000}}],"watch_group":24000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":24,"duration":{"second":58,"nanosecond":806000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":36000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":36000,"duration":{"second":62,"nanosecond":130000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":87000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":87000,"duration":{"second":62,"nanosecond":130000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":59000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":59000,"duration":{"second":62,"nanosecond":130000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":25000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":25000,"duration":{"second":62,"nanosecond":130000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":43000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":43000,"duration":{"second":62,"nanosecond":129000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":55,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":55000}}],"watch_group":55000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":55,"duration":{"second":58,"nanosecond":806000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":25,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":25000}}],"watch_group":25000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":25,"duration":{"second":61,"nanosecond":812000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":100,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":100000}}],"watch_group":100000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":100,"duration":{"second":58,"nanosecond":806000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":58000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":58000,"duration":{"second":61,"nanosecond":812000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":86000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":86000,"duration":{"second":61,"nanosecond":812000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":60,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":60000}}],"watch_group":60000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":60,"duration":{"second":61,"nanosecond":812000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":26,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":26000}}],"watch_group":26000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":26,"duration":{"second":58,"nanosecond":806000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":41000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":41000,"duration":{"second":61,"nanosecond":811000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":95,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":95000}}],"watch_group":95000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":95,"duration":{"second":58,"nanosecond":806000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":82000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":82000,"duration":{"second":61,"nanosecond":811000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":61,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":61000}}],"watch_group":61000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":61,"duration":{"second":58,"nanosecond":806000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":27,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":27000}}],"watch_group":27000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":27,"duration":{"second":58,"nanosecond":801000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":94,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":94000}}],"watch_group":94000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":94,"duration":{"second":58,"nanosecond":801000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":98000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":98000,"duration":{"second":61,"nanosecond":810000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":27000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":27000,"duration":{"second":61,"nanosecond":810000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":57000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":57000,"duration":{"second":61,"nanosecond":809000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":16000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":16000,"duration":{"second":61,"nanosecond":808000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":83000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":83000,"duration":{"second":61,"nanosecond":808000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":58,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":58000}}],"watch_group":58000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":58,"duration":{"second":61,"nanosecond":309000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":28,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":28000}}],"watch_group":28000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":28,"duration":{"second":58,"nanosecond":801000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":97,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":97000}}],"watch_group":97000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":97,"duration":{"second":58,"nanosecond":801000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":100000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":100000,"duration":{"second":61,"nanosecond":309000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":59,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":59000}}],"watch_group":59000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":59,"duration":{"second":61,"nanosecond":309000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":38000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":38000,"duration":{"second":61,"nanosecond":309000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":29,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":29000}}],"watch_group":29000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":29,"duration":{"second":58,"nanosecond":801000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":96,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":96000}}],"watch_group":96000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":96,"duration":{"second":58,"nanosecond":801000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":84000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":84000,"duration":{"second":61,"nanosecond":309000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":64,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":64000}}],"watch_group":64000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":64,"duration":{"second":58,"nanosecond":801000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":30,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":30000}}],"watch_group":30000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":30,"duration":{"second":58,"nanosecond":801000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":4,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":4000}}],"watch_group":4000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":4,"duration":{"second":58,"nanosecond":801000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":91,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":91000}}],"watch_group":91000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":91,"duration":{"second":61,"nanosecond":309000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":7000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":7000,"duration":{"second":61,"nanosecond":309000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":29000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":29000,"duration":{"second":61,"nanosecond":309000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":65,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":65000}}],"watch_group":65000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":65,"duration":{"second":58,"nanosecond":801000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":31,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":31000}}],"watch_group":31000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":31,"duration":{"second":58,"nanosecond":801000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":5,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":5000}}],"watch_group":5000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":5,"duration":{"second":58,"nanosecond":801000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":90,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":90000}}],"watch_group":90000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":90,"duration":{"second":58,"nanosecond":801000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":18000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":18000,"duration":{"second":61,"nanosecond":308000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":62,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":62000}}],"watch_group":62000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":62,"duration":{"second":58,"nanosecond":801000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":65000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":65000,"duration":{"second":61,"nanosecond":308000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":32,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":32000}}],"watch_group":32000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":32,"duration":{"second":58,"nanosecond":801000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":2,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":2000}}],"watch_group":2000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":2,"duration":{"second":58,"nanosecond":801000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":93,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":93000}}],"watch_group":93000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":93,"duration":{"second":58,"nanosecond":801000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":64000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":64000,"duration":{"second":61,"nanosecond":307000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":63,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":63000}}],"watch_group":63000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":63,"duration":{"second":58,"nanosecond":801000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":33,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":33000}}],"watch_group":33000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":33,"duration":{"second":58,"nanosecond":801000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":3,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":3000}}],"watch_group":3000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":3,"duration":{"second":58,"nanosecond":801000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":80000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":80000,"duration":{"second":61,"nanosecond":306000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":9000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":9000,"duration":{"second":61,"nanosecond":306000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":92,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":92000}}],"watch_group":92000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":92,"duration":{"second":58,"nanosecond":801000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":5000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":5000,"duration":{"second":61,"nanosecond":306000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":20000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":20000,"duration":{"second":61,"nanosecond":306000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":81000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":81000,"duration":{"second":61,"nanosecond":306000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":97000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":97000,"duration":{"second":61,"nanosecond":306000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":31000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":31000,"duration":{"second":61,"nanosecond":306000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":68,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":68000}}],"watch_group":68000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":68,"duration":{"second":58,"nanosecond":801000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":11000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":11000,"duration":{"second":61,"nanosecond":306000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":34,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":34000}}],"watch_group":34000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":34,"duration":{"second":61,"nanosecond":306000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":78000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":78000,"duration":{"second":61,"nanosecond":305000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":87,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":87000}}],"watch_group":87000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":87,"duration":{"second":61,"nanosecond":305000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":93000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":93000,"duration":{"second":61,"nanosecond":305000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":63000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":63000,"duration":{"second":61,"nanosecond":305000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":69,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":69000}}],"watch_group":69000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":69,"duration":{"second":58,"nanosecond":801000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":35,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":35000}}],"watch_group":35000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":35,"duration":{"second":58,"nanosecond":801000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":33000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":33000,"duration":{"second":61,"nanosecond":301000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":79000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":79000,"duration":{"second":61,"nanosecond":301000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":86,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":86000}}],"watch_group":86000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":86,"duration":{"second":61,"nanosecond":301000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":62000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":62000,"duration":{"second":61,"nanosecond":301000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":66,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":66000}}],"watch_group":66000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":66,"duration":{"second":58,"nanosecond":801000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":77000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":77000,"duration":{"second":61,"nanosecond":301000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":36,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":36000}}],"watch_group":36000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":36,"duration":{"second":61,"nanosecond":301000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":89,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":89000}}],"watch_group":89000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":89,"duration":{"second":61,"nanosecond":301000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":22000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":22000,"duration":{"second":61,"nanosecond":301000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":95000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":95000,"duration":{"second":61,"nanosecond":301000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":67,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":67000}}],"watch_group":67000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":67,"duration":{"second":58,"nanosecond":801000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":37,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":37000}}],"watch_group":37000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":37,"duration":{"second":58,"nanosecond":801000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":88,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":88000}}],"watch_group":88000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":88,"duration":{"second":58,"nanosecond":801000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":61000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":61000,"duration":{"second":61,"nanosecond":300000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":3000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":3000,"duration":{"second":61,"nanosecond":300000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":73,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":73000}}],"watch_group":73000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":73,"duration":{"second":58,"nanosecond":801000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":39,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":39000}}],"watch_group":39000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":39,"duration":{"second":58,"nanosecond":796000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":13,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":13000}}],"watch_group":13000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":13,"duration":{"second":58,"nanosecond":796000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":74000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":74000,"duration":{"second":61,"nanosecond":300000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":15000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":15000,"duration":{"second":61,"nanosecond":300000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":44000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":44000,"duration":{"second":61,"nanosecond":300000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":45000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":45000,"duration":{"second":61,"nanosecond":300000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":68000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":68000,"duration":{"second":61,"nanosecond":300000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":72,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":72000}}],"watch_group":72000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":72,"duration":{"second":58,"nanosecond":796000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":38,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":38000}}],"watch_group":38000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":38,"duration":{"second":60,"nanosecond":810000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":75000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":75000,"duration":{"second":60,"nanosecond":810000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":12,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":12000}}],"watch_group":12000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":12,"duration":{"second":58,"nanosecond":796000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":35000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":35000,"duration":{"second":60,"nanosecond":810000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":24000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":24000,"duration":{"second":60,"nanosecond":810000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":90000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":90000,"duration":{"second":60,"nanosecond":810000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":71,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":71000}}],"watch_group":71000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":71,"duration":{"second":58,"nanosecond":796000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":41,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":41000}}],"watch_group":41000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":41,"duration":{"second":60,"nanosecond":809000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":42000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":42000,"duration":{"second":60,"nanosecond":809000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":11,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":11000}}],"watch_group":11000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":11,"duration":{"second":60,"nanosecond":809000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":92000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":92000,"duration":{"second":60,"nanosecond":808000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":46000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":46000,"duration":{"second":60,"nanosecond":808000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":67000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":67000,"duration":{"second":60,"nanosecond":808000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":70,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":70000}}],"watch_group":70000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":70,"duration":{"second":58,"nanosecond":796000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":76000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":76000,"duration":{"second":60,"nanosecond":807000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":40,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":40000}}],"watch_group":40000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":40,"duration":{"second":58,"nanosecond":796000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":13000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":13000,"duration":{"second":60,"nanosecond":807000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":10,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":10000}}],"watch_group":10000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":10,"duration":{"second":58,"nanosecond":796000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":88000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":88000,"duration":{"second":60,"nanosecond":807000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":47000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":47000,"duration":{"second":60,"nanosecond":807000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":66000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":66000,"duration":{"second":60,"nanosecond":807000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":77,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":77000}}],"watch_group":77000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":77,"duration":{"second":60,"nanosecond":807000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":43,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":43000}}],"watch_group":43000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":43,"duration":{"second":60,"nanosecond":806000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":9,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":9000}}],"watch_group":9000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":9,"duration":{"second":60,"nanosecond":806000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":99000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":99000,"duration":{"second":60,"nanosecond":806000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":26000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":26000,"duration":{"second":60,"nanosecond":806000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":70000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":70000,"duration":{"second":60,"nanosecond":805000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":76,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":76000}}],"watch_group":76000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":76,"duration":{"second":60,"nanosecond":309000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":42,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":42000}}],"watch_group":42000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":42,"duration":{"second":60,"nanosecond":308000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":8,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":8000}}],"watch_group":8000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":8,"duration":{"second":58,"nanosecond":796000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":37000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":37000,"duration":{"second":60,"nanosecond":308000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":49000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":49000,"duration":{"second":60,"nanosecond":308000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":71000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":71000,"duration":{"second":60,"nanosecond":308000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":48000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":48000,"duration":{"second":60,"nanosecond":307000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":75,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":75000}}],"watch_group":75000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":75,"duration":{"second":60,"nanosecond":303000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":45,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":45000}}],"watch_group":45000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":45,"duration":{"second":60,"nanosecond":303000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":7,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":7000}}],"watch_group":7000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":7,"duration":{"second":60,"nanosecond":303000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":39000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":39000,"duration":{"second":60,"nanosecond":303000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":73000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":73000,"duration":{"second":60,"nanosecond":303000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":69000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":69000,"duration":{"second":60,"nanosecond":303000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":17000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":17000,"duration":{"second":60,"nanosecond":303000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":28000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":28000,"duration":{"second":60,"nanosecond":303000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":74,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":74000}}],"watch_group":74000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":74,"duration":{"second":60,"nanosecond":303000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":44,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":44000}}],"watch_group":44000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":44,"duration":{"second":60,"nanosecond":303000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":6,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":6000}}],"watch_group":6000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":6,"duration":{"second":58,"nanosecond":796000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":40000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":40000,"duration":{"second":60,"nanosecond":303000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":81,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":81000}}],"watch_group":81000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":81,"duration":{"second":60,"nanosecond":303000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":47,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":47000}}],"watch_group":47000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":47,"duration":{"second":60,"nanosecond":303000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":21,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":21000}}],"watch_group":21000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":21,"duration":{"second":58,"nanosecond":796000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":8000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":8000,"duration":{"second":60,"nanosecond":303000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":19000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":19000,"duration":{"second":60,"nanosecond":302000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":96000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":96000,"duration":{"second":60,"nanosecond":302000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":80,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":80000}}],"watch_group":80000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":80,"duration":{"second":60,"nanosecond":302000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":46,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":46000}}],"watch_group":46000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":46,"duration":{"second":60,"nanosecond":302000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":20,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":20000}}],"watch_group":20000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":20,"duration":{"second":60,"nanosecond":302000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":52000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":52000,"duration":{"second":60,"nanosecond":302000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":6000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":6000,"duration":{"second":60,"nanosecond":302000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":79,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":79000}}],"watch_group":79000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":79,"duration":{"second":60,"nanosecond":301000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":49,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":49000}}],"watch_group":49000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":49,"duration":{"second":59,"nanosecond":809000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":19,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":19000}}],"watch_group":19000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":19,"duration":{"second":59,"nanosecond":808000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":50000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":50000,"duration":{"second":59,"nanosecond":808000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":72000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":72000,"duration":{"second":59,"nanosecond":808000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":30000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":30000,"duration":{"second":59,"nanosecond":808000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":78,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":78000}}],"watch_group":78000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":78,"duration":{"second":59,"nanosecond":808000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":48,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":48000}}],"watch_group":48000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":48,"duration":{"second":59,"nanosecond":807000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":18,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":18000}}],"watch_group":18000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":18,"duration":{"second":59,"nanosecond":807000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":51000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":51000,"duration":{"second":59,"nanosecond":807000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":85,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":85000}}],"watch_group":85000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":85,"duration":{"second":59,"nanosecond":807000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":55000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":55000,"duration":{"second":59,"nanosecond":807000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":51,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":51000}}],"watch_group":51000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":51,"duration":{"second":59,"nanosecond":308000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":17,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":17000}}],"watch_group":17000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":17,"duration":{"second":59,"nanosecond":308000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":21000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":21000,"duration":{"second":59,"nanosecond":308000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":4000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":4000,"duration":{"second":59,"nanosecond":308000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":84,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":84000}}],"watch_group":84000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":84,"duration":{"second":59,"nanosecond":308000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":50,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":50000}}],"watch_group":50000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":50,"duration":{"second":59,"nanosecond":308000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":16,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":16000}}],"watch_group":16000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":16,"duration":{"second":59,"nanosecond":307000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":10000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":10000,"duration":{"second":59,"nanosecond":307000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":54000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":54000,"duration":{"second":59,"nanosecond":307000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":83,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":83000}}],"watch_group":83000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":83,"duration":{"second":59,"nanosecond":307000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":32000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":32000,"duration":{"second":59,"nanosecond":307000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":53,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":53000}}],"watch_group":53000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":53,"duration":{"second":58,"nanosecond":796000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":15,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":15000}}],"watch_group":15000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":15,"duration":{"second":59,"nanosecond":306000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":2000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":2000,"duration":{"second":59,"nanosecond":306000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":82,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":82000}}],"watch_group":82000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":82,"duration":{"second":59,"nanosecond":306000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":52,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":52000}}],"watch_group":52000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":52,"duration":{"second":59,"nanosecond":306000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":14,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":14000}}],"watch_group":14000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":14,"duration":{"second":59,"nanosecond":306000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":53000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":53000,"duration":{"second":59,"nanosecond":305000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":12000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":12000,"duration":{"second":59,"nanosecond":305000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":23000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":23000,"duration":{"second":59,"nanosecond":304000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":94000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":94000,"duration":{"second":59,"nanosecond":304000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}}],"flow-node-inventory:snapshot-gathering-status-end":{"succeeded":true,"end":"2026-04-08T00:59:28.212Z"}},{"id":"openflow:1","flow-node-inventory:port-number":54934,"flow-node-inventory:table":[{"id":62,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":28,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":2,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":224,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":181,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":147,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":106,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":61,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":27,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":1,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":223,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":182,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":148,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":105,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":60,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":30,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":0,"flow":[{"id":"69","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.69/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":69}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":268000000}},"flags":""},{"id":"60","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.60/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":60}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":268000000}},"flags":""},{"id":"68","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.68/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":68}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":268000000}},"flags":""},{"id":"67","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.67/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":67}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":268000000}},"flags":""},{"id":"66","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.66/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":66}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":269000000}},"flags":""},{"id":"65","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.65/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":65}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":269000000}},"flags":""},{"id":"64","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.64/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":64}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":269000000}},"flags":""},{"id":"63","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.63/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":63}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":269000000}},"flags":""},{"id":"62","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.62/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":62}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":269000000}},"flags":""},{"id":"61","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.61/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":61}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":269000000}},"flags":""},{"id":"100","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.100/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":100}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":269000000}},"flags":""},{"id":"71","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.71/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":71}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":269000000}},"flags":""},{"id":"70","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.70/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":70}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":269000000}},"flags":""},{"id":"79","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.79/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":79}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":269000000}},"flags":""},{"id":"78","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.78/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":78}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":269000000}},"flags":""},{"id":"77","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.77/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":77}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":269000000}},"flags":""},{"id":"76","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.76/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":76}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":269000000}},"flags":""},{"id":"75","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.75/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":75}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":269000000}},"flags":""},{"id":"74","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.74/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":74}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":269000000}},"flags":""},{"id":"73","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.73/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":73}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":269000000}},"flags":""},{"id":"72","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.72/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":72}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":269000000}},"flags":""},{"id":"82","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.82/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":82}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":269000000}},"flags":""},{"id":"81","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.81/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":81}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":269000000}},"flags":""},{"id":"80","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.80/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":80}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":269000000}},"flags":""},{"id":"89","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.89/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":89}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":269000000}},"flags":""},{"id":"88","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.88/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":88}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":269000000}},"flags":""},{"id":"87","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.87/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":87}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":269000000}},"flags":""},{"id":"86","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.86/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":86}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":269000000}},"flags":""},{"id":"85","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.85/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":85}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":269000000}},"flags":""},{"id":"84","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.84/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":84}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":268000000}},"flags":""},{"id":"83","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.83/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":83}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":268000000}},"flags":""},{"id":"19","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.19/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":19}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":268000000}},"flags":""},{"id":"18","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.18/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":18}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":268000000}},"flags":""},{"id":"17","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.17/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":17}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":268000000}},"flags":""},{"id":"16","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.16/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":16}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":268000000}},"flags":""},{"id":"15","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.15/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":15}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":268000000}},"flags":""},{"id":"14","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.14/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":14}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":268000000}},"flags":""},{"id":"2","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.2/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":2}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":268000000}},"flags":""},{"id":"93","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.93/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":93}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":268000000}},"flags":""},{"id":"92","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.92/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":92}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":268000000}},"flags":""},{"id":"91","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.91/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":91}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":268000000}},"flags":""},{"id":"90","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.90/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":90}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":268000000}},"flags":""},{"id":"13","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.13/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":13}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":268000000}},"flags":""},{"id":"12","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.12/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":12}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":268000000}},"flags":""},{"id":"11","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.11/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":11}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":268000000}},"flags":""},{"id":"99","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.99/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":99}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":268000000}},"flags":""},{"id":"10","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.10/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":10}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":268000000}},"flags":""},{"id":"98","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.98/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":98}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":268000000}},"flags":""},{"id":"97","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.97/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":97}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":268000000}},"flags":""},{"id":"96","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.96/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":96}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":268000000}},"flags":""},{"id":"95","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.95/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":95}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":268000000}},"flags":""},{"id":"94","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.94/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":94}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":268000000}},"flags":""},{"id":"29","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.29/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":29}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":268000000}},"flags":""},{"id":"28","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.28/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":28}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":268000000}},"flags":""},{"id":"27","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.27/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":27}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":268000000}},"flags":""},{"id":"26","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.26/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":26}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":268000000}},"flags":""},{"id":"25","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.25/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":25}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":268000000}},"flags":""},{"id":"9","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.9/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":9}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":268000000}},"flags":""},{"id":"8","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.8/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":8}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":268000000}},"flags":""},{"id":"7","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.7/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":7}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":268000000}},"flags":""},{"id":"6","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.6/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":6}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":268000000}},"flags":""},{"id":"5","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.5/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":5}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":268000000}},"flags":""},{"id":"4","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.4/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":4}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":268000000}},"flags":""},{"id":"3","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.3/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":3}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":268000000}},"flags":""},{"id":"24","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.24/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":24}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":268000000}},"flags":""},{"id":"23","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.23/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":23}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":268000000}},"flags":""},{"id":"22","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.22/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":22}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":268000000}},"flags":""},{"id":"21","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.21/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":21}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":268000000}},"flags":""},{"id":"20","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.20/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":20}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":268000000}},"flags":""},{"id":"39","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.39/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":39}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":268000000}},"flags":""},{"id":"38","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.38/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":38}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":268000000}},"flags":""},{"id":"37","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.37/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":37}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":268000000}},"flags":""},{"id":"36","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.36/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":36}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":268000000}},"flags":""},{"id":"35","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.35/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":35}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":268000000}},"flags":""},{"id":"34","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.34/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":34}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":268000000}},"flags":""},{"id":"33","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.33/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":33}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":268000000}},"flags":""},{"id":"32","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.32/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":32}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":268000000}},"flags":""},{"id":"31","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.31/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":31}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":268000000}},"flags":""},{"id":"30","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.30/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":30}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":268000000}},"flags":""},{"id":"49","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.49/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":49}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":268000000}},"flags":""},{"id":"48","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.48/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":48}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":267000000}},"flags":""},{"id":"47","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.47/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":47}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":267000000}},"flags":""},{"id":"#UF$TABLE*0-1","table_id":0,"priority":0,"cookie_mask":"0","idle-timeout":0,"cookie":"10","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"output-action":{"max-length":65535,"output-node-connector":"CONTROLLER"}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"18","byte-count":"1440","duration":{"second":58,"nanosecond":158000000}},"flags":"SEND_FLOW_REM"},{"id":"46","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.46/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":46}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":267000000}},"flags":""},{"id":"45","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.45/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":45}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":267000000}},"flags":""},{"id":"44","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.44/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":44}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":267000000}},"flags":""},{"id":"43","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.43/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":43}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":267000000}},"flags":""},{"id":"42","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.42/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":42}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":267000000}},"flags":""},{"id":"41","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.41/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":41}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":267000000}},"flags":""},{"id":"40","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.40/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":40}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":267000000}},"flags":""},{"id":"59","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.59/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":59}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":267000000}},"flags":""},{"id":"58","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.58/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":58}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":267000000}},"flags":""},{"id":"57","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.57/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":57}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":267000000}},"flags":""},{"id":"56","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.56/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":56}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":267000000}},"flags":""},{"id":"55","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.55/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":55}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":267000000}},"flags":""},{"id":"54","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.54/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":54}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":267000000}},"flags":""},{"id":"53","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.53/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":53}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":267000000}},"flags":""},{"id":"52","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.52/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":52}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":267000000}},"flags":""},{"id":"51","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.51/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":51}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":267000000}},"flags":""},{"id":"50","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.50/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":50}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":267000000}},"flags":""}],"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"35","active-flows":100,"packets-matched":"28"}},{"id":226,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":179,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":149,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":104,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":59,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":29,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":225,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":180,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":150,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":103,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":66,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":32,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":220,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":185,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":151,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":102,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":65,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":31,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":253,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":219,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":186,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":152,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":101,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":64,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":34,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":252,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":222,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":183,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":153,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":100,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":63,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":33,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":251,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":221,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":184,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":154,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":99,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":54,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":20,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":250,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":216,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":189,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":155,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":129,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":114,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":53,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":19,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":249,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":215,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":190,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":156,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":130,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":113,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":52,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":22,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":248,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":218,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":187,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":157,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":112,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":51,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":21,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":247,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":217,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":188,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":158,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":128,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":111,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":58,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":24,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":246,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":212,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":193,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":159,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":110,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":57,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":23,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":245,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":211,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":194,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":160,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":109,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":56,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":26,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":244,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":214,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":191,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":161,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":108,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":55,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":25,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":243,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":213,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":192,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":162,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":107,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":77,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":43,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":17,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":239,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":198,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":164,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":138,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":119,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":89,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":78,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":44,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":18,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":240,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":197,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":163,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":137,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":120,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":90,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":75,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":45,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":15,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":241,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":196,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":166,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":136,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":121,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":87,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":76,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":46,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":16,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":242,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":195,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":165,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":135,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":122,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":88,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":81,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":47,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":13,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":235,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":202,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":168,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":134,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":115,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":85,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":82,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":48,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":14,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":236,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":201,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":167,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":133,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":116,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":86,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":79,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":49,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":11,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":237,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":200,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":170,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":132,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":117,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":83,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":80,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":50,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":12,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":238,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":199,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":169,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":131,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":118,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":84,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":69,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":35,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":9,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":231,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":206,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":172,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":146,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":127,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":97,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":70,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":36,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":10,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":232,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":205,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":171,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":145,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":98,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":67,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":37,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":7,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":233,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":204,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":174,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":144,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":95,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":68,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":38,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":8,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":234,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":203,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":173,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":143,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":96,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":73,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":39,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":5,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":227,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":210,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":176,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":142,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":123,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":93,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":74,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":40,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":6,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":228,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":209,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":175,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":141,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":124,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":94,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":71,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":41,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":3,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":229,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":208,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":178,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":140,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":125,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":91,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":72,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":42,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":4,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":230,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":207,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":177,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":139,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":126,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":92,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}}],"opendaylight-group-statistics:group-features":{"max-groups":[4294967040],"group-types-supported":["opendaylight-group-types:group-all","opendaylight-group-types:group-ff","opendaylight-group-types:group-select","opendaylight-group-types:group-indirect"],"group-capabilities-supported":["opendaylight-group-types:chaining","opendaylight-group-types:select-weight","opendaylight-group-types:select-liveness"],"actions":[67076097]},"flow-node-inventory:manufacturer":"Nicira, Inc.","flow-node-inventory:description":"s1","flow-node-inventory:hardware":"Open vSwitch","flow-node-inventory:switch-features":{"max_tables":254,"capabilities":["flow-node-inventory:flow-feature-capability-table-stats","flow-node-inventory:flow-feature-capability-group-stats","flow-node-inventory:flow-feature-capability-queue-stats","flow-node-inventory:flow-feature-capability-flow-stats","flow-node-inventory:flow-feature-capability-port-stats"],"max_buffers":0},"flow-node-inventory:snapshot-gathering-status-start":{"begin":"2026-04-08T00:59:28.147Z"},"flow-node-inventory:software":"2.17.11","node-connector":[{"id":"openflow:1:1","flow-node-inventory:port-number":1,"flow-node-inventory:hardware-address":"92:f4:e8:ea:c6:ad","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s1-eth1","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"30","received":"9"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":63,"nanosecond":505000000},"bytes":{"transmitted":"2535","received":"726"},"receive-crc-error":"0"}},{"id":"openflow:1:LOCAL","flow-node-inventory:port-number":4294967294,"flow-node-inventory:hardware-address":"e6:45:d0:5b:c7:49","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s1","flow-node-inventory:current-feature":"","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":0,"flow-node-inventory:state":{"live":false,"blocked":false,"link-down":true},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"PORT-DOWN","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"0","received":"0"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":63,"nanosecond":501000000},"bytes":{"transmitted":"0","received":"0"},"receive-crc-error":"0"}},{"id":"openflow:1:2","flow-node-inventory:port-number":2,"flow-node-inventory:hardware-address":"42:46:a8:4b:8b:86","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s1-eth2","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"24","received":"28"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":63,"nanosecond":505000000},"bytes":{"transmitted":"2007","received":"2359"},"receive-crc-error":"0"}}],"flow-node-inventory:ip-address":"10.30.170.192","flow-node-inventory:serial-number":"None","flow-node-inventory:group":[{"group-id":56,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":56000}}],"watch_group":56000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":56,"duration":{"second":59,"nanosecond":422000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":22,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":22000}}],"watch_group":22000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":22,"duration":{"second":59,"nanosecond":422000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":99,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":99000}}],"watch_group":99000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":99,"duration":{"second":59,"nanosecond":422000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":34000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":34000,"duration":{"second":62,"nanosecond":115000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":89000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":89000,"duration":{"second":62,"nanosecond":115000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":60000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":60000,"duration":{"second":62,"nanosecond":115000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":91000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":91000,"duration":{"second":62,"nanosecond":115000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":57,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":57000}}],"watch_group":57000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":57,"duration":{"second":59,"nanosecond":422000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":23,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":23000}}],"watch_group":23000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":23,"duration":{"second":58,"nanosecond":922000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":14000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":14000,"duration":{"second":62,"nanosecond":115000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":98,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":98000}}],"watch_group":98000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":98,"duration":{"second":58,"nanosecond":922000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":56000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":56000,"duration":{"second":62,"nanosecond":115000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":85000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":85000,"duration":{"second":62,"nanosecond":115000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":54,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":54000}}],"watch_group":54000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":54,"duration":{"second":58,"nanosecond":922000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":24,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":24000}}],"watch_group":24000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":24,"duration":{"second":58,"nanosecond":922000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":36000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":36000,"duration":{"second":62,"nanosecond":115000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":87000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":87000,"duration":{"second":62,"nanosecond":115000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":59000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":59000,"duration":{"second":62,"nanosecond":115000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":25000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":25000,"duration":{"second":62,"nanosecond":115000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":43000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":43000,"duration":{"second":62,"nanosecond":115000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":55,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":55000}}],"watch_group":55000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":55,"duration":{"second":58,"nanosecond":922000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":25,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":25000}}],"watch_group":25000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":25,"duration":{"second":61,"nanosecond":929000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":100,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":100000}}],"watch_group":100000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":100,"duration":{"second":58,"nanosecond":922000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":58000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":58000,"duration":{"second":61,"nanosecond":926000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":86000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":86000,"duration":{"second":61,"nanosecond":926000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":60,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":60000}}],"watch_group":60000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":60,"duration":{"second":61,"nanosecond":926000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":26,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":26000}}],"watch_group":26000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":26,"duration":{"second":58,"nanosecond":922000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":41000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":41000,"duration":{"second":61,"nanosecond":926000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":95,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":95000}}],"watch_group":95000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":95,"duration":{"second":58,"nanosecond":922000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":82000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":82000,"duration":{"second":61,"nanosecond":926000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":61,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":61000}}],"watch_group":61000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":61,"duration":{"second":58,"nanosecond":922000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":27,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":27000}}],"watch_group":27000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":27,"duration":{"second":58,"nanosecond":922000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":94,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":94000}}],"watch_group":94000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":94,"duration":{"second":58,"nanosecond":922000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":98000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":98000,"duration":{"second":61,"nanosecond":926000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":27000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":27000,"duration":{"second":61,"nanosecond":926000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":57000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":57000,"duration":{"second":61,"nanosecond":926000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":16000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":16000,"duration":{"second":61,"nanosecond":926000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":83000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":83000,"duration":{"second":61,"nanosecond":926000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":58,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":58000}}],"watch_group":58000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":58,"duration":{"second":61,"nanosecond":423000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":28,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":28000}}],"watch_group":28000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":28,"duration":{"second":58,"nanosecond":922000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":97,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":97000}}],"watch_group":97000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":97,"duration":{"second":58,"nanosecond":922000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":100000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":100000,"duration":{"second":61,"nanosecond":423000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":59,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":59000}}],"watch_group":59000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":59,"duration":{"second":61,"nanosecond":423000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":38000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":38000,"duration":{"second":61,"nanosecond":423000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":29,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":29000}}],"watch_group":29000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":29,"duration":{"second":58,"nanosecond":922000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":96,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":96000}}],"watch_group":96000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":96,"duration":{"second":58,"nanosecond":922000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":84000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":84000,"duration":{"second":61,"nanosecond":423000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":64,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":64000}}],"watch_group":64000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":64,"duration":{"second":58,"nanosecond":922000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":30,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":30000}}],"watch_group":30000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":30,"duration":{"second":58,"nanosecond":922000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":4,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":4000}}],"watch_group":4000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":4,"duration":{"second":58,"nanosecond":922000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":91,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":91000}}],"watch_group":91000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":91,"duration":{"second":61,"nanosecond":423000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":7000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":7000,"duration":{"second":61,"nanosecond":423000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":29000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":29000,"duration":{"second":61,"nanosecond":423000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":65,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":65000}}],"watch_group":65000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":65,"duration":{"second":58,"nanosecond":922000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":31,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":31000}}],"watch_group":31000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":31,"duration":{"second":58,"nanosecond":922000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":5,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":5000}}],"watch_group":5000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":5,"duration":{"second":58,"nanosecond":922000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":90,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":90000}}],"watch_group":90000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":90,"duration":{"second":58,"nanosecond":922000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":18000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":18000,"duration":{"second":61,"nanosecond":423000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":62,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":62000}}],"watch_group":62000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":62,"duration":{"second":58,"nanosecond":922000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":65000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":65000,"duration":{"second":61,"nanosecond":423000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":32,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":32000}}],"watch_group":32000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":32,"duration":{"second":58,"nanosecond":922000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":2,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":2000}}],"watch_group":2000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":2,"duration":{"second":58,"nanosecond":922000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":93,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":93000}}],"watch_group":93000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":93,"duration":{"second":58,"nanosecond":922000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":64000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":64000,"duration":{"second":61,"nanosecond":423000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":63,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":63000}}],"watch_group":63000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":63,"duration":{"second":58,"nanosecond":922000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":33,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":33000}}],"watch_group":33000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":33,"duration":{"second":58,"nanosecond":922000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":3,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":3000}}],"watch_group":3000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":3,"duration":{"second":58,"nanosecond":917000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":80000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":80000,"duration":{"second":61,"nanosecond":423000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":9000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":9000,"duration":{"second":61,"nanosecond":423000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":92,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":92000}}],"watch_group":92000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":92,"duration":{"second":58,"nanosecond":917000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":5000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":5000,"duration":{"second":61,"nanosecond":423000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":20000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":20000,"duration":{"second":61,"nanosecond":423000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":81000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":81000,"duration":{"second":61,"nanosecond":423000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":97000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":97000,"duration":{"second":61,"nanosecond":423000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":31000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":31000,"duration":{"second":61,"nanosecond":423000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":68,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":68000}}],"watch_group":68000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":68,"duration":{"second":58,"nanosecond":917000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":11000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":11000,"duration":{"second":61,"nanosecond":423000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":34,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":34000}}],"watch_group":34000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":34,"duration":{"second":61,"nanosecond":423000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":78000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":78000,"duration":{"second":61,"nanosecond":423000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":87,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":87000}}],"watch_group":87000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":87,"duration":{"second":61,"nanosecond":423000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":93000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":93000,"duration":{"second":61,"nanosecond":423000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":63000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":63000,"duration":{"second":61,"nanosecond":423000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":69,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":69000}}],"watch_group":69000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":69,"duration":{"second":58,"nanosecond":917000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":35,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":35000}}],"watch_group":35000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":35,"duration":{"second":58,"nanosecond":917000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":33000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":33000,"duration":{"second":61,"nanosecond":423000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":79000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":79000,"duration":{"second":61,"nanosecond":421000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":86,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":86000}}],"watch_group":86000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":86,"duration":{"second":61,"nanosecond":421000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":62000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":62000,"duration":{"second":61,"nanosecond":421000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":66,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":66000}}],"watch_group":66000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":66,"duration":{"second":58,"nanosecond":917000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":77000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":77000,"duration":{"second":61,"nanosecond":421000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":36,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":36000}}],"watch_group":36000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":36,"duration":{"second":61,"nanosecond":421000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":89,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":89000}}],"watch_group":89000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":89,"duration":{"second":61,"nanosecond":420000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":22000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":22000,"duration":{"second":61,"nanosecond":420000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":95000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":95000,"duration":{"second":61,"nanosecond":420000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":67,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":67000}}],"watch_group":67000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":67,"duration":{"second":58,"nanosecond":917000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":37,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":37000}}],"watch_group":37000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":37,"duration":{"second":58,"nanosecond":917000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":88,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":88000}}],"watch_group":88000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":88,"duration":{"second":58,"nanosecond":917000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":61000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":61000,"duration":{"second":61,"nanosecond":420000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":3000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":3000,"duration":{"second":61,"nanosecond":419000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":73,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":73000}}],"watch_group":73000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":73,"duration":{"second":58,"nanosecond":917000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":39,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":39000}}],"watch_group":39000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":39,"duration":{"second":58,"nanosecond":917000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":13,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":13000}}],"watch_group":13000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":13,"duration":{"second":58,"nanosecond":917000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":74000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":74000,"duration":{"second":61,"nanosecond":419000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":15000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":15000,"duration":{"second":61,"nanosecond":419000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":44000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":44000,"duration":{"second":61,"nanosecond":419000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":45000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":45000,"duration":{"second":61,"nanosecond":419000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":68000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":68000,"duration":{"second":61,"nanosecond":419000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":72,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":72000}}],"watch_group":72000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":72,"duration":{"second":58,"nanosecond":917000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":38,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":38000}}],"watch_group":38000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":38,"duration":{"second":60,"nanosecond":931000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":75000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":75000,"duration":{"second":60,"nanosecond":931000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":12,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":12000}}],"watch_group":12000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":12,"duration":{"second":58,"nanosecond":917000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":35000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":35000,"duration":{"second":60,"nanosecond":931000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":24000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":24000,"duration":{"second":60,"nanosecond":930000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":90000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":90000,"duration":{"second":60,"nanosecond":930000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":71,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":71000}}],"watch_group":71000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":71,"duration":{"second":58,"nanosecond":917000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":41,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":41000}}],"watch_group":41000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":41,"duration":{"second":60,"nanosecond":930000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":42000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":42000,"duration":{"second":60,"nanosecond":930000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":11,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":11000}}],"watch_group":11000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":11,"duration":{"second":60,"nanosecond":929000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":92000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":92000,"duration":{"second":60,"nanosecond":929000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":46000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":46000,"duration":{"second":60,"nanosecond":929000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":67000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":67000,"duration":{"second":60,"nanosecond":929000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":70,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":70000}}],"watch_group":70000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":70,"duration":{"second":58,"nanosecond":917000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":76000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":76000,"duration":{"second":60,"nanosecond":928000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":40,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":40000}}],"watch_group":40000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":40,"duration":{"second":58,"nanosecond":917000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":13000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":13000,"duration":{"second":60,"nanosecond":925000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":10,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":10000}}],"watch_group":10000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":10,"duration":{"second":58,"nanosecond":917000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":88000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":88000,"duration":{"second":60,"nanosecond":925000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":47000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":47000,"duration":{"second":60,"nanosecond":925000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":66000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":66000,"duration":{"second":60,"nanosecond":924000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":77,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":77000}}],"watch_group":77000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":77,"duration":{"second":60,"nanosecond":924000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":43,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":43000}}],"watch_group":43000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":43,"duration":{"second":60,"nanosecond":924000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":9,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":9000}}],"watch_group":9000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":9,"duration":{"second":60,"nanosecond":924000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":99000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":99000,"duration":{"second":60,"nanosecond":924000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":26000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":26000,"duration":{"second":60,"nanosecond":924000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":70000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":70000,"duration":{"second":60,"nanosecond":924000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":76,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":76000}}],"watch_group":76000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":76,"duration":{"second":60,"nanosecond":430000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":42,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":42000}}],"watch_group":42000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":42,"duration":{"second":60,"nanosecond":428000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":8,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":8000}}],"watch_group":8000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":8,"duration":{"second":58,"nanosecond":917000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":37000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":37000,"duration":{"second":60,"nanosecond":428000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":49000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":49000,"duration":{"second":60,"nanosecond":428000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":71000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":71000,"duration":{"second":60,"nanosecond":428000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":48000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":48000,"duration":{"second":60,"nanosecond":428000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":75,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":75000}}],"watch_group":75000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":75,"duration":{"second":60,"nanosecond":428000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":45,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":45000}}],"watch_group":45000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":45,"duration":{"second":60,"nanosecond":425000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":7,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":7000}}],"watch_group":7000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":7,"duration":{"second":60,"nanosecond":425000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":39000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":39000,"duration":{"second":60,"nanosecond":425000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":73000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":73000,"duration":{"second":60,"nanosecond":424000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":69000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":69000,"duration":{"second":60,"nanosecond":424000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":17000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":17000,"duration":{"second":60,"nanosecond":424000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":28000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":28000,"duration":{"second":60,"nanosecond":424000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":74,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":74000}}],"watch_group":74000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":74,"duration":{"second":60,"nanosecond":424000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":44,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":44000}}],"watch_group":44000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":44,"duration":{"second":60,"nanosecond":424000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":6,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":6000}}],"watch_group":6000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":6,"duration":{"second":58,"nanosecond":917000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":40000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":40000,"duration":{"second":60,"nanosecond":424000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":81,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":81000}}],"watch_group":81000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":81,"duration":{"second":60,"nanosecond":424000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":47,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":47000}}],"watch_group":47000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":47,"duration":{"second":60,"nanosecond":424000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":21,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":21000}}],"watch_group":21000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":21,"duration":{"second":58,"nanosecond":917000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":8000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":8000,"duration":{"second":60,"nanosecond":424000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":19000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":19000,"duration":{"second":60,"nanosecond":424000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":96000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":96000,"duration":{"second":60,"nanosecond":424000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":80,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":80000}}],"watch_group":80000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":80,"duration":{"second":60,"nanosecond":422000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":46,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":46000}}],"watch_group":46000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":46,"duration":{"second":60,"nanosecond":422000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":20,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":20000}}],"watch_group":20000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":20,"duration":{"second":60,"nanosecond":422000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":52000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":52000,"duration":{"second":60,"nanosecond":422000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":6000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":6000,"duration":{"second":60,"nanosecond":422000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":79,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":79000}}],"watch_group":79000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":79,"duration":{"second":60,"nanosecond":422000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":49,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":49000}}],"watch_group":49000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":49,"duration":{"second":59,"nanosecond":929000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":19,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":19000}}],"watch_group":19000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":19,"duration":{"second":59,"nanosecond":929000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":50000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":50000,"duration":{"second":59,"nanosecond":929000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":72000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":72000,"duration":{"second":59,"nanosecond":929000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":30000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":30000,"duration":{"second":59,"nanosecond":928000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":78,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":78000}}],"watch_group":78000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":78,"duration":{"second":59,"nanosecond":928000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":48,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":48000}}],"watch_group":48000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":48,"duration":{"second":59,"nanosecond":927000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":18,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":18000}}],"watch_group":18000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":18,"duration":{"second":59,"nanosecond":927000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":51000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":51000,"duration":{"second":59,"nanosecond":927000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":85,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":85000}}],"watch_group":85000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":85,"duration":{"second":59,"nanosecond":927000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":55000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":55000,"duration":{"second":59,"nanosecond":926000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":51,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":51000}}],"watch_group":51000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":51,"duration":{"second":59,"nanosecond":422000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":17,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":17000}}],"watch_group":17000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":17,"duration":{"second":59,"nanosecond":422000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":21000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":21000,"duration":{"second":59,"nanosecond":422000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":4000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":4000,"duration":{"second":59,"nanosecond":422000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":84,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":84000}}],"watch_group":84000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":84,"duration":{"second":59,"nanosecond":422000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":50,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":50000}}],"watch_group":50000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":50,"duration":{"second":59,"nanosecond":422000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":16,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":16000}}],"watch_group":16000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":16,"duration":{"second":59,"nanosecond":422000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":10000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":10000,"duration":{"second":59,"nanosecond":422000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":54000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":54000,"duration":{"second":59,"nanosecond":422000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":83,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":83000}}],"watch_group":83000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":83,"duration":{"second":59,"nanosecond":422000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":32000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":32000,"duration":{"second":59,"nanosecond":422000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":53,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":53000}}],"watch_group":53000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":53,"duration":{"second":58,"nanosecond":917000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":15,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":15000}}],"watch_group":15000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":15,"duration":{"second":59,"nanosecond":422000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":2000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":2000,"duration":{"second":59,"nanosecond":422000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":82,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":82000}}],"watch_group":82000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":82,"duration":{"second":59,"nanosecond":422000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":52,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":52000}}],"watch_group":52000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":52,"duration":{"second":59,"nanosecond":422000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":14,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":14000}}],"watch_group":14000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":14,"duration":{"second":59,"nanosecond":422000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":53000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":53000,"duration":{"second":59,"nanosecond":422000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":12000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":12000,"duration":{"second":59,"nanosecond":422000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":23000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":23000,"duration":{"second":59,"nanosecond":422000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":94000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":94000,"duration":{"second":59,"nanosecond":422000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}}],"flow-node-inventory:snapshot-gathering-status-end":{"succeeded":true,"end":"2026-04-08T00:59:28.216Z"}},{"id":"openflow:2","flow-node-inventory:port-number":54944,"flow-node-inventory:table":[{"id":62,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":28,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":2,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":224,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":181,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":147,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":106,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":61,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":27,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":1,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":223,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":182,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":148,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":105,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":60,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":30,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":0,"flow":[{"id":"69","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.69/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":69}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":291000000}},"flags":""},{"id":"60","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.60/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":60}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":291000000}},"flags":""},{"id":"68","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.68/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":68}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":291000000}},"flags":""},{"id":"67","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.67/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":67}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":291000000}},"flags":""},{"id":"66","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.66/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":66}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":291000000}},"flags":""},{"id":"65","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.65/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":65}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":291000000}},"flags":""},{"id":"64","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.64/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":64}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":291000000}},"flags":""},{"id":"63","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.63/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":63}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":291000000}},"flags":""},{"id":"62","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.62/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":62}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":291000000}},"flags":""},{"id":"61","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.61/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":61}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":291000000}},"flags":""},{"id":"100","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.100/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":100}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":291000000}},"flags":""},{"id":"71","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.71/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":71}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":291000000}},"flags":""},{"id":"70","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.70/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":70}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":291000000}},"flags":""},{"id":"79","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.79/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":79}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":291000000}},"flags":""},{"id":"78","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.78/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":78}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":291000000}},"flags":""},{"id":"77","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.77/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":77}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":291000000}},"flags":""},{"id":"76","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.76/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":76}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":291000000}},"flags":""},{"id":"75","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.75/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":75}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":291000000}},"flags":""},{"id":"74","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.74/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":74}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":291000000}},"flags":""},{"id":"73","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.73/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":73}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":291000000}},"flags":""},{"id":"72","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.72/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":72}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":291000000}},"flags":""},{"id":"82","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.82/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":82}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":291000000}},"flags":""},{"id":"81","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.81/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":81}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":291000000}},"flags":""},{"id":"80","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.80/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":80}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":291000000}},"flags":""},{"id":"89","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.89/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":89}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":291000000}},"flags":""},{"id":"88","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.88/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":88}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":291000000}},"flags":""},{"id":"87","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.87/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":87}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":291000000}},"flags":""},{"id":"86","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.86/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":86}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":291000000}},"flags":""},{"id":"85","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.85/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":85}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":291000000}},"flags":""},{"id":"84","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.84/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":84}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":291000000}},"flags":""},{"id":"83","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.83/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":83}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":291000000}},"flags":""},{"id":"19","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.19/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":19}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":291000000}},"flags":""},{"id":"18","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.18/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":18}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":291000000}},"flags":""},{"id":"17","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.17/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":17}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":291000000}},"flags":""},{"id":"16","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.16/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":16}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":291000000}},"flags":""},{"id":"15","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.15/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":15}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":291000000}},"flags":""},{"id":"14","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.14/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":14}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":291000000}},"flags":""},{"id":"2","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.2/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":2}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":291000000}},"flags":""},{"id":"93","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.93/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":93}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":290000000}},"flags":""},{"id":"92","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.92/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":92}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":290000000}},"flags":""},{"id":"91","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.91/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":91}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":290000000}},"flags":""},{"id":"90","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.90/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":90}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":290000000}},"flags":""},{"id":"13","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.13/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":13}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":290000000}},"flags":""},{"id":"12","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.12/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":12}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":290000000}},"flags":""},{"id":"11","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.11/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":11}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":290000000}},"flags":""},{"id":"99","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.99/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":99}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":290000000}},"flags":""},{"id":"10","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.10/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":10}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":290000000}},"flags":""},{"id":"98","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.98/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":98}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":290000000}},"flags":""},{"id":"97","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.97/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":97}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":290000000}},"flags":""},{"id":"96","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.96/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":96}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":290000000}},"flags":""},{"id":"95","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.95/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":95}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":290000000}},"flags":""},{"id":"94","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.94/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":94}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":291000000}},"flags":""},{"id":"29","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.29/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":29}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":291000000}},"flags":""},{"id":"28","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.28/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":28}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":291000000}},"flags":""},{"id":"27","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.27/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":27}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":291000000}},"flags":""},{"id":"26","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.26/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":26}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":291000000}},"flags":""},{"id":"25","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.25/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":25}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":291000000}},"flags":""},{"id":"9","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.9/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":9}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":291000000}},"flags":""},{"id":"8","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.8/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":8}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":291000000}},"flags":""},{"id":"7","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.7/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":7}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":291000000}},"flags":""},{"id":"6","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.6/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":6}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":291000000}},"flags":""},{"id":"5","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.5/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":5}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":291000000}},"flags":""},{"id":"4","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.4/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":4}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":291000000}},"flags":""},{"id":"3","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.3/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":3}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":291000000}},"flags":""},{"id":"24","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.24/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":24}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":291000000}},"flags":""},{"id":"23","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.23/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":23}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":291000000}},"flags":""},{"id":"22","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.22/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":22}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":291000000}},"flags":""},{"id":"21","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.21/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":21}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":291000000}},"flags":""},{"id":"20","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.20/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":20}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":291000000}},"flags":""},{"id":"39","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.39/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":39}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":291000000}},"flags":""},{"id":"38","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.38/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":38}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":291000000}},"flags":""},{"id":"37","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.37/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":37}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":291000000}},"flags":""},{"id":"36","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.36/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":36}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":291000000}},"flags":""},{"id":"35","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.35/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":35}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":291000000}},"flags":""},{"id":"34","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.34/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":34}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":291000000}},"flags":""},{"id":"33","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.33/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":33}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":291000000}},"flags":""},{"id":"32","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.32/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":32}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":291000000}},"flags":""},{"id":"31","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.31/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":31}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":291000000}},"flags":""},{"id":"30","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.30/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":30}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":291000000}},"flags":""},{"id":"49","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.49/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":49}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":291000000}},"flags":""},{"id":"48","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.48/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":48}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":291000000}},"flags":""},{"id":"47","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.47/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":47}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":291000000}},"flags":""},{"id":"#UF$TABLE*0-2","table_id":0,"priority":0,"cookie_mask":"0","idle-timeout":0,"cookie":"10","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"output-action":{"max-length":65535,"output-node-connector":"CONTROLLER"}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"33","byte-count":"2670","duration":{"second":58,"nanosecond":170000000}},"flags":"SEND_FLOW_REM"},{"id":"46","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.46/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":46}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":291000000}},"flags":""},{"id":"45","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.45/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":45}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":291000000}},"flags":""},{"id":"44","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.44/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":44}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":291000000}},"flags":""},{"id":"43","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.43/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":43}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":291000000}},"flags":""},{"id":"42","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.42/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":42}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":291000000}},"flags":""},{"id":"41","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.41/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":41}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":291000000}},"flags":""},{"id":"40","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.40/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":40}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":291000000}},"flags":""},{"id":"59","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.59/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":59}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":291000000}},"flags":""},{"id":"58","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.58/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":58}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":291000000}},"flags":""},{"id":"57","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.57/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":57}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":291000000}},"flags":""},{"id":"56","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.56/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":56}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":291000000}},"flags":""},{"id":"55","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.55/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":55}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":291000000}},"flags":""},{"id":"54","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.54/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":54}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":291000000}},"flags":""},{"id":"53","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.53/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":53}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":291000000}},"flags":""},{"id":"52","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.52/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":52}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":290000000}},"flags":""},{"id":"51","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.51/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":51}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":290000000}},"flags":""},{"id":"50","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.50/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":50}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":58,"nanosecond":290000000}},"flags":""}],"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"55","active-flows":100,"packets-matched":"43"}},{"id":226,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":179,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":149,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":104,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":59,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":29,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":225,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":180,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":150,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":103,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":66,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":32,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":220,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":185,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":151,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":102,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":65,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":31,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":253,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":219,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":186,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":152,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":101,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":64,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":34,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":252,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":222,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":183,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":153,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":100,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":63,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":33,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":251,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":221,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":184,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":154,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":99,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":54,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":20,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":250,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":216,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":189,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":155,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":129,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":114,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":53,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":19,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":249,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":215,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":190,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":156,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":130,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":113,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":52,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":22,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":248,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":218,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":187,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":157,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":112,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":51,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":21,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":247,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":217,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":188,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":158,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":128,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":111,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":58,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":24,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":246,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":212,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":193,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":159,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":110,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":57,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":23,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":245,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":211,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":194,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":160,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":109,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":56,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":26,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":244,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":214,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":191,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":161,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":108,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":55,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":25,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":243,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":213,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":192,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":162,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":107,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":77,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":43,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":17,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":239,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":198,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":164,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":138,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":119,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":89,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":78,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":44,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":18,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":240,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":197,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":163,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":137,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":120,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":90,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":75,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":45,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":15,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":241,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":196,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":166,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":136,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":121,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":87,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":76,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":46,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":16,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":242,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":195,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":165,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":135,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":122,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":88,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":81,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":47,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":13,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":235,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":202,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":168,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":134,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":115,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":85,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":82,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":48,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":14,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":236,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":201,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":167,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":133,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":116,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":86,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":79,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":49,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":11,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":237,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":200,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":170,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":132,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":117,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":83,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":80,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":50,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":12,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":238,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":199,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":169,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":131,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":118,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":84,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":69,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":35,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":9,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":231,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":206,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":172,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":146,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":127,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":97,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":70,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":36,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":10,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":232,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":205,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":171,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":145,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":98,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":67,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":37,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":7,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":233,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":204,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":174,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":144,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":95,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":68,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":38,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":8,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":234,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":203,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":173,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":143,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":96,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":73,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":39,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":5,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":227,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":210,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":176,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":142,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":123,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":93,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":74,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":40,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":6,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":228,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":209,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":175,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":141,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":124,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":94,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":71,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":41,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":3,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":229,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":208,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":178,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":140,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":125,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":91,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":72,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":42,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":4,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":230,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":207,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":177,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":139,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":126,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":92,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}}],"opendaylight-group-statistics:group-features":{"max-groups":[4294967040],"group-types-supported":["opendaylight-group-types:group-all","opendaylight-group-types:group-ff","opendaylight-group-types:group-select","opendaylight-group-types:group-indirect"],"group-capabilities-supported":["opendaylight-group-types:chaining","opendaylight-group-types:select-weight","opendaylight-group-types:select-liveness"],"actions":[67076097]},"flow-node-inventory:manufacturer":"Nicira, Inc.","flow-node-inventory:description":"s2","flow-node-inventory:hardware":"Open vSwitch","flow-node-inventory:switch-features":{"max_tables":254,"capabilities":["flow-node-inventory:flow-feature-capability-table-stats","flow-node-inventory:flow-feature-capability-group-stats","flow-node-inventory:flow-feature-capability-queue-stats","flow-node-inventory:flow-feature-capability-flow-stats","flow-node-inventory:flow-feature-capability-port-stats"],"max_buffers":0},"flow-node-inventory:snapshot-gathering-status-start":{"begin":"2026-04-08T00:59:28.179Z"},"flow-node-inventory:software":"2.17.11","node-connector":[{"id":"openflow:2:3","flow-node-inventory:port-number":3,"flow-node-inventory:hardware-address":"da:7c:fc:7d:24:d4","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s2-eth3","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"29","received":"24"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":63,"nanosecond":499000000},"bytes":{"transmitted":"2429","received":"2007"},"receive-crc-error":"0"}},{"id":"openflow:2:LOCAL","flow-node-inventory:port-number":4294967294,"flow-node-inventory:hardware-address":"ee:be:cf:9b:06:44","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s2","flow-node-inventory:current-feature":"","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":0,"flow-node-inventory:state":{"live":false,"blocked":false,"link-down":true},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"PORT-DOWN","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"0","received":"0"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":63,"nanosecond":494000000},"bytes":{"transmitted":"0","received":"0"},"receive-crc-error":"0"}},{"id":"openflow:2:2","flow-node-inventory:port-number":2,"flow-node-inventory:hardware-address":"76:f5:91:ad:d8:c6","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s2-eth2","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"28","received":"24"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":63,"nanosecond":499000000},"bytes":{"transmitted":"2359","received":"2007"},"receive-crc-error":"0"}},{"id":"openflow:2:1","flow-node-inventory:port-number":1,"flow-node-inventory:hardware-address":"96:61:91:36:76:0b","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s2-eth1","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"30","received":"10"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":63,"nanosecond":499000000},"bytes":{"transmitted":"2535","received":"796"},"receive-crc-error":"0"}}],"flow-node-inventory:ip-address":"10.30.170.192","flow-node-inventory:serial-number":"None","flow-node-inventory:group":[{"group-id":56,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":56000}}],"watch_group":56000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":56,"duration":{"second":59,"nanosecond":452000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":22,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":22000}}],"watch_group":22000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":22,"duration":{"second":59,"nanosecond":452000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":99,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":99000}}],"watch_group":99000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":99,"duration":{"second":59,"nanosecond":452000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":34000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":34000,"duration":{"second":62,"nanosecond":145000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":89000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":89000,"duration":{"second":62,"nanosecond":145000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":60000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":60000,"duration":{"second":62,"nanosecond":145000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":91000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":91000,"duration":{"second":62,"nanosecond":144000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":57,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":57000}}],"watch_group":57000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":57,"duration":{"second":59,"nanosecond":452000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":23,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":23000}}],"watch_group":23000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":23,"duration":{"second":58,"nanosecond":954000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":14000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":14000,"duration":{"second":62,"nanosecond":145000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":98,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":98000}}],"watch_group":98000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":98,"duration":{"second":58,"nanosecond":955000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":56000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":56000,"duration":{"second":62,"nanosecond":144000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":85000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":85000,"duration":{"second":62,"nanosecond":145000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":54,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":54000}}],"watch_group":54000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":54,"duration":{"second":58,"nanosecond":954000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":24,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":24000}}],"watch_group":24000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":24,"duration":{"second":58,"nanosecond":955000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":36000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":36000,"duration":{"second":62,"nanosecond":144000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":87000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":87000,"duration":{"second":62,"nanosecond":145000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":59000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":59000,"duration":{"second":62,"nanosecond":144000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":25000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":25000,"duration":{"second":62,"nanosecond":144000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":43000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":43000,"duration":{"second":62,"nanosecond":145000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":55,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":55000}}],"watch_group":55000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":55,"duration":{"second":58,"nanosecond":954000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":25,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":25000}}],"watch_group":25000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":25,"duration":{"second":61,"nanosecond":960000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":100,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":100000}}],"watch_group":100000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":100,"duration":{"second":58,"nanosecond":955000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":58000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":58000,"duration":{"second":61,"nanosecond":961000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":86000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":86000,"duration":{"second":61,"nanosecond":960000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":60,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":60000}}],"watch_group":60000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":60,"duration":{"second":61,"nanosecond":959000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":26,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":26000}}],"watch_group":26000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":26,"duration":{"second":58,"nanosecond":955000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":41000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":41000,"duration":{"second":61,"nanosecond":959000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":95,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":95000}}],"watch_group":95000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":95,"duration":{"second":58,"nanosecond":955000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":82000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":82000,"duration":{"second":61,"nanosecond":960000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":61,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":61000}}],"watch_group":61000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":61,"duration":{"second":58,"nanosecond":955000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":27,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":27000}}],"watch_group":27000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":27,"duration":{"second":58,"nanosecond":954000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":94,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":94000}}],"watch_group":94000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":94,"duration":{"second":58,"nanosecond":954000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":98000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":98000,"duration":{"second":61,"nanosecond":959000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":27000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":27000,"duration":{"second":61,"nanosecond":959000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":57000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":57000,"duration":{"second":61,"nanosecond":960000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":16000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":16000,"duration":{"second":61,"nanosecond":959000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":83000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":83000,"duration":{"second":61,"nanosecond":959000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":58,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":58000}}],"watch_group":58000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":58,"duration":{"second":61,"nanosecond":459000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":28,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":28000}}],"watch_group":28000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":28,"duration":{"second":58,"nanosecond":954000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":97,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":97000}}],"watch_group":97000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":97,"duration":{"second":58,"nanosecond":954000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":100000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":100000,"duration":{"second":61,"nanosecond":459000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":59,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":59000}}],"watch_group":59000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":59,"duration":{"second":61,"nanosecond":460000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":38000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":38000,"duration":{"second":61,"nanosecond":459000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":29,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":29000}}],"watch_group":29000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":29,"duration":{"second":58,"nanosecond":954000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":96,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":96000}}],"watch_group":96000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":96,"duration":{"second":58,"nanosecond":955000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":84000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":84000,"duration":{"second":61,"nanosecond":460000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":64,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":64000}}],"watch_group":64000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":64,"duration":{"second":58,"nanosecond":955000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":30,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":30000}}],"watch_group":30000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":30,"duration":{"second":58,"nanosecond":955000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":4,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":4000}}],"watch_group":4000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":4,"duration":{"second":58,"nanosecond":950000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":91,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":91000}}],"watch_group":91000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":91,"duration":{"second":61,"nanosecond":459000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":7000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":7000,"duration":{"second":61,"nanosecond":460000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":29000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":29000,"duration":{"second":61,"nanosecond":458000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":65,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":65000}}],"watch_group":65000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":65,"duration":{"second":58,"nanosecond":950000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":31,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":31000}}],"watch_group":31000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":31,"duration":{"second":58,"nanosecond":951000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":5,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":5000}}],"watch_group":5000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":5,"duration":{"second":58,"nanosecond":951000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":90,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":90000}}],"watch_group":90000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":90,"duration":{"second":58,"nanosecond":951000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":18000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":18000,"duration":{"second":61,"nanosecond":458000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":62,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":62000}}],"watch_group":62000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":62,"duration":{"second":58,"nanosecond":950000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":65000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":65000,"duration":{"second":61,"nanosecond":459000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":32,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":32000}}],"watch_group":32000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":32,"duration":{"second":58,"nanosecond":951000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":2,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":2000}}],"watch_group":2000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":2,"duration":{"second":58,"nanosecond":950000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":93,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":93000}}],"watch_group":93000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":93,"duration":{"second":58,"nanosecond":950000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":64000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":64000,"duration":{"second":61,"nanosecond":458000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":63,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":63000}}],"watch_group":63000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":63,"duration":{"second":58,"nanosecond":951000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":33,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":33000}}],"watch_group":33000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":33,"duration":{"second":58,"nanosecond":950000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":3,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":3000}}],"watch_group":3000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":3,"duration":{"second":58,"nanosecond":951000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":80000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":80000,"duration":{"second":61,"nanosecond":458000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":9000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":9000,"duration":{"second":61,"nanosecond":458000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":92,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":92000}}],"watch_group":92000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":92,"duration":{"second":58,"nanosecond":951000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":5000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":5000,"duration":{"second":61,"nanosecond":454000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":20000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":20000,"duration":{"second":61,"nanosecond":453000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":81000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":81000,"duration":{"second":61,"nanosecond":454000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":97000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":97000,"duration":{"second":61,"nanosecond":453000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":31000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":31000,"duration":{"second":61,"nanosecond":454000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":68,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":68000}}],"watch_group":68000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":68,"duration":{"second":58,"nanosecond":951000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":11000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":11000,"duration":{"second":61,"nanosecond":453000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":34,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":34000}}],"watch_group":34000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":34,"duration":{"second":61,"nanosecond":454000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":78000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":78000,"duration":{"second":61,"nanosecond":454000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":87,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":87000}}],"watch_group":87000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":87,"duration":{"second":61,"nanosecond":453000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":93000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":93000,"duration":{"second":61,"nanosecond":454000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":63000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":63000,"duration":{"second":61,"nanosecond":453000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":69,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":69000}}],"watch_group":69000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":69,"duration":{"second":58,"nanosecond":951000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":35,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":35000}}],"watch_group":35000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":35,"duration":{"second":58,"nanosecond":950000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":33000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":33000,"duration":{"second":61,"nanosecond":453000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":79000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":79000,"duration":{"second":61,"nanosecond":453000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":86,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":86000}}],"watch_group":86000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":86,"duration":{"second":61,"nanosecond":454000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":62000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":62000,"duration":{"second":61,"nanosecond":454000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":66,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":66000}}],"watch_group":66000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":66,"duration":{"second":58,"nanosecond":951000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":77000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":77000,"duration":{"second":61,"nanosecond":454000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":36,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":36000}}],"watch_group":36000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":36,"duration":{"second":61,"nanosecond":453000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":89,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":89000}}],"watch_group":89000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":89,"duration":{"second":61,"nanosecond":454000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":22000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":22000,"duration":{"second":61,"nanosecond":452000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":95000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":95000,"duration":{"second":61,"nanosecond":451000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":67,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":67000}}],"watch_group":67000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":67,"duration":{"second":58,"nanosecond":950000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":37,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":37000}}],"watch_group":37000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":37,"duration":{"second":58,"nanosecond":950000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":88,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":88000}}],"watch_group":88000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":88,"duration":{"second":58,"nanosecond":948000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":61000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":61000,"duration":{"second":61,"nanosecond":450000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":3000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":3000,"duration":{"second":61,"nanosecond":450000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":73,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":73000}}],"watch_group":73000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":73,"duration":{"second":58,"nanosecond":948000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":39,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":39000}}],"watch_group":39000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":39,"duration":{"second":58,"nanosecond":948000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":13,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":13000}}],"watch_group":13000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":13,"duration":{"second":58,"nanosecond":949000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":74000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":74000,"duration":{"second":61,"nanosecond":450000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":15000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":15000,"duration":{"second":61,"nanosecond":449000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":44000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":44000,"duration":{"second":61,"nanosecond":450000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":45000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":45000,"duration":{"second":61,"nanosecond":450000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":68000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":68000,"duration":{"second":61,"nanosecond":450000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":72,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":72000}}],"watch_group":72000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":72,"duration":{"second":58,"nanosecond":948000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":38,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":38000}}],"watch_group":38000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":38,"duration":{"second":60,"nanosecond":954000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":75000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":75000,"duration":{"second":60,"nanosecond":954000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":12,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":12000}}],"watch_group":12000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":12,"duration":{"second":58,"nanosecond":948000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":35000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":35000,"duration":{"second":60,"nanosecond":953000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":24000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":24000,"duration":{"second":60,"nanosecond":954000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":90000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":90000,"duration":{"second":60,"nanosecond":954000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":71,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":71000}}],"watch_group":71000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":71,"duration":{"second":58,"nanosecond":948000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":41,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":41000}}],"watch_group":41000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":41,"duration":{"second":60,"nanosecond":954000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":42000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":42000,"duration":{"second":60,"nanosecond":953000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":11,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":11000}}],"watch_group":11000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":11,"duration":{"second":60,"nanosecond":954000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":92000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":92000,"duration":{"second":60,"nanosecond":954000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":46000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":46000,"duration":{"second":60,"nanosecond":954000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":67000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":67000,"duration":{"second":60,"nanosecond":954000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":70,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":70000}}],"watch_group":70000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":70,"duration":{"second":58,"nanosecond":948000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":76000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":76000,"duration":{"second":60,"nanosecond":953000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":40,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":40000}}],"watch_group":40000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":40,"duration":{"second":58,"nanosecond":949000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":13000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":13000,"duration":{"second":60,"nanosecond":953000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":10,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":10000}}],"watch_group":10000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":10,"duration":{"second":58,"nanosecond":949000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":88000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":88000,"duration":{"second":60,"nanosecond":954000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":47000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":47000,"duration":{"second":60,"nanosecond":953000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":66000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":66000,"duration":{"second":60,"nanosecond":954000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":77,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":77000}}],"watch_group":77000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":77,"duration":{"second":60,"nanosecond":953000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":43,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":43000}}],"watch_group":43000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":43,"duration":{"second":60,"nanosecond":954000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":9,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":9000}}],"watch_group":9000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":9,"duration":{"second":60,"nanosecond":954000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":99000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":99000,"duration":{"second":60,"nanosecond":953000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":26000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":26000,"duration":{"second":60,"nanosecond":954000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":70000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":70000,"duration":{"second":60,"nanosecond":954000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":76,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":76000}}],"watch_group":76000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":76,"duration":{"second":60,"nanosecond":449000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":42,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":42000}}],"watch_group":42000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":42,"duration":{"second":60,"nanosecond":449000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":8,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":8000}}],"watch_group":8000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":8,"duration":{"second":58,"nanosecond":949000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":37000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":37000,"duration":{"second":60,"nanosecond":449000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":49000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":49000,"duration":{"second":60,"nanosecond":450000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":71000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":71000,"duration":{"second":60,"nanosecond":450000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":48000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":48000,"duration":{"second":60,"nanosecond":450000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":75,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":75000}}],"watch_group":75000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":75,"duration":{"second":60,"nanosecond":450000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":45,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":45000}}],"watch_group":45000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":45,"duration":{"second":60,"nanosecond":449000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":7,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":7000}}],"watch_group":7000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":7,"duration":{"second":60,"nanosecond":450000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":39000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":39000,"duration":{"second":60,"nanosecond":449000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":73000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":73000,"duration":{"second":60,"nanosecond":450000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":69000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":69000,"duration":{"second":60,"nanosecond":450000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":17000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":17000,"duration":{"second":60,"nanosecond":450000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":28000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":28000,"duration":{"second":60,"nanosecond":450000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":74,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":74000}}],"watch_group":74000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":74,"duration":{"second":60,"nanosecond":450000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":44,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":44000}}],"watch_group":44000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":44,"duration":{"second":60,"nanosecond":450000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":6,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":6000}}],"watch_group":6000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":6,"duration":{"second":58,"nanosecond":948000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":40000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":40000,"duration":{"second":60,"nanosecond":450000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":81,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":81000}}],"watch_group":81000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":81,"duration":{"second":60,"nanosecond":450000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":47,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":47000}}],"watch_group":47000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":47,"duration":{"second":60,"nanosecond":450000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":21,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":21000}}],"watch_group":21000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":21,"duration":{"second":58,"nanosecond":949000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":8000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":8000,"duration":{"second":60,"nanosecond":449000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":19000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":19000,"duration":{"second":60,"nanosecond":450000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":96000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":96000,"duration":{"second":60,"nanosecond":450000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":80,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":80000}}],"watch_group":80000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":80,"duration":{"second":60,"nanosecond":450000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":46,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":46000}}],"watch_group":46000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":46,"duration":{"second":60,"nanosecond":450000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":20,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":20000}}],"watch_group":20000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":20,"duration":{"second":60,"nanosecond":449000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":52000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":52000,"duration":{"second":60,"nanosecond":450000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":6000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":6000,"duration":{"second":60,"nanosecond":449000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":79,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":79000}}],"watch_group":79000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":79,"duration":{"second":60,"nanosecond":449000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":49,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":49000}}],"watch_group":49000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":49,"duration":{"second":59,"nanosecond":959000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":19,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":19000}}],"watch_group":19000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":19,"duration":{"second":59,"nanosecond":959000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":50000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":50000,"duration":{"second":59,"nanosecond":958000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":72000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":72000,"duration":{"second":59,"nanosecond":958000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":30000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":30000,"duration":{"second":59,"nanosecond":957000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":78,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":78000}}],"watch_group":78000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":78,"duration":{"second":59,"nanosecond":956000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":48,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":48000}}],"watch_group":48000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":48,"duration":{"second":59,"nanosecond":955000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":18,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":18000}}],"watch_group":18000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":18,"duration":{"second":59,"nanosecond":955000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":51000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":51000,"duration":{"second":59,"nanosecond":955000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":85,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":85000}}],"watch_group":85000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":85,"duration":{"second":59,"nanosecond":954000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":55000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":55000,"duration":{"second":59,"nanosecond":955000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":51,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":51000}}],"watch_group":51000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":51,"duration":{"second":59,"nanosecond":458000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":17,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":17000}}],"watch_group":17000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":17,"duration":{"second":59,"nanosecond":457000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":21000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":21000,"duration":{"second":59,"nanosecond":458000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":4000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":4000,"duration":{"second":59,"nanosecond":458000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":84,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":84000}}],"watch_group":84000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":84,"duration":{"second":59,"nanosecond":458000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":50,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":50000}}],"watch_group":50000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":50,"duration":{"second":59,"nanosecond":456000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":16,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":16000}}],"watch_group":16000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":16,"duration":{"second":59,"nanosecond":457000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":10000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":10000,"duration":{"second":59,"nanosecond":457000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":54000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":54000,"duration":{"second":59,"nanosecond":451000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":83,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":83000}}],"watch_group":83000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":83,"duration":{"second":59,"nanosecond":451000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":32000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":32000,"duration":{"second":59,"nanosecond":451000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":53,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":53000}}],"watch_group":53000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":53,"duration":{"second":58,"nanosecond":948000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":15,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":15000}}],"watch_group":15000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":15,"duration":{"second":59,"nanosecond":452000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":2000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":2000,"duration":{"second":59,"nanosecond":452000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":82,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":82000}}],"watch_group":82000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":82,"duration":{"second":59,"nanosecond":451000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":52,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":52000}}],"watch_group":52000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":52,"duration":{"second":59,"nanosecond":451000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":14,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":14000}}],"watch_group":14000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":14,"duration":{"second":59,"nanosecond":452000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":53000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":53000,"duration":{"second":59,"nanosecond":452000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":12000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":12000,"duration":{"second":59,"nanosecond":452000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":23000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":23000,"duration":{"second":59,"nanosecond":451000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":94000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":94000,"duration":{"second":59,"nanosecond":452000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}}],"flow-node-inventory:snapshot-gathering-status-end":{"succeeded":true,"end":"2026-04-08T00:59:28.219Z"}}]}}</msg>
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:59:29.019126" elapsed="0.010912"/>
</kw>
<kw name="Get Count" owner="BuiltIn">
<msg time="2026-04-08T00:59:29.033661" level="INFO">Item found from container 594 times.</msg>
<msg time="2026-04-08T00:59:29.033747" level="INFO">${group_count} = 594</msg>
<var>${group_count}</var>
<arg>${resp.text}</arg>
<arg>"group-type"</arg>
<doc>Returns and logs how many times ``item`` is found from ``container``.</doc>
<status status="PASS" start="2026-04-08T00:59:29.030238" elapsed="0.003534"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${group_count}</arg>
<arg>${groups}</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="PASS" start="2026-04-08T00:59:29.033959" elapsed="0.000331"/>
</kw>
<arg>${less_groups}</arg>
<doc>Check number of groups in the inventory.</doc>
<status status="PASS" start="2026-04-08T00:59:28.950934" elapsed="0.083424"/>
</kw>
<arg>10s</arg>
<arg>1s</arg>
<arg>ClusterOpenFlow.Check Number Of Groups On Member</arg>
<arg>${less_groups}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-08T00:59:28.950382" elapsed="0.084024"/>
</kw>
<doc>Check Groups in Operational DS.</doc>
<status status="PASS" start="2026-04-08T00:59:28.585293" elapsed="0.449253"/>
</test>
<test id="s1-s4-t17" name="Check Flows In Switch After Mininet Is Disconnected" line="140">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-08T00:59:29.037779" elapsed="0.000216"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-08T00:59:29.037489" elapsed="0.000559"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:59:29.039120" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:59:29.038994" elapsed="0.000193"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:29.038970" elapsed="0.000243"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:59:29.044412" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:59:29.044303" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:29.044285" elapsed="0.000195"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:59:29.045603" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:59:29.045119" elapsed="0.000511"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:59:29.046097" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:59:29.045794" elapsed="0.000328"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:59:29.046190" elapsed="0.000036"/>
</return>
<msg time="2026-04-08T00:59:29.046354" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:59:29.044710" elapsed="0.001668"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:59:29.051827" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:59:29.051720" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:29.051701" elapsed="0.000193"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:59:29.053101" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:59:29.052989" elapsed="0.000158"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:29.052970" elapsed="0.000226"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:59:29.053653" level="INFO">${karaf_connection_index} = 476</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:59:29.053349" elapsed="0.000331"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:59:29.054099" level="INFO">${current_connection_index} = 495</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:59:29.053842" elapsed="0.000283"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T00:59:29.089922" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T00:59:29.054643" elapsed="0.035444"/>
</kw>
<msg time="2026-04-08T00:59:29.090306" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T00:59:29.090355" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:59:29.054305" elapsed="0.036086"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T00:59:29.151473" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "[C "I "n "[C "S "w "i "t "c "h "[C "A "f "t "e "r "[C "M "i "n "i "n "e "t "[C "I "s "[C "D "i "s "c "o "n "n "e "c "t "e "d "[78C[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T00:59:29.091025" elapsed="0.060580"/>
</kw>
<msg time="2026-04-08T00:59:29.151772" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T00:59:29.151819" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:59:29.090611" elapsed="0.061365"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:29.152378" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:59:29.152085" elapsed="0.000350"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:29.152055" elapsed="0.000409"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:59:29.152940" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "[C "I "n "[C "S "w "i "t "c "h "[C "A "f "t "e "r "[C "M "i "n "i "n "e "t "[C "I "s "[C "D "i "s "c "o "n "n "e "c "t "e "d "[78C[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:59:29.152618" elapsed="0.000450"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:29.153391" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:59:29.153140" elapsed="0.000307"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:29.153120" elapsed="0.000350"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T00:59:29.153508" elapsed="0.000039"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:59:29.156273" elapsed="0.000230"/>
</kw>
<msg time="2026-04-08T00:59:29.156570" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:59:29.155087" elapsed="0.001622"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:29.156987" elapsed="0.000080"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:29.157367" elapsed="0.000287"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:59:29.154438" elapsed="0.003332"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T00:59:29.153836" elapsed="0.004000"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T00:59:29.052634" elapsed="0.105301"/>
</kw>
<msg time="2026-04-08T00:59:29.158027" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:59:29.158071" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:59:29.052047" elapsed="0.106060"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T00:59:29.158316" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-08T00:59:29.158205" elapsed="0.000171"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:29.158169" elapsed="0.000231"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:29.158808" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:29.159150" elapsed="0.000028"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T00:59:29.159240" elapsed="0.000017"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T00:59:29.051384" elapsed="0.107964"/>
</kw>
<msg time="2026-04-08T00:59:29.159441" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:59:29.159486" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:59:29.046762" elapsed="0.112761"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:29.159853" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:59:29.159599" elapsed="0.000307"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:29.159582" elapsed="0.000348"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T00:59:29.046615" elapsed="0.113339"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:59:29.165464" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:59:29.165356" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:29.165336" elapsed="0.000194"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:59:29.166722" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:59:29.166612" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:29.166593" elapsed="0.000196"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:59:29.167260" level="INFO">${karaf_connection_index} = 478</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:59:29.166936" elapsed="0.000351"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:59:29.167694" level="INFO">${current_connection_index} = 495</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:59:29.167447" elapsed="0.000274"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T00:59:29.200409" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T00:59:29.168237" elapsed="0.032390"/>
</kw>
<msg time="2026-04-08T00:59:29.200979" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T00:59:29.201083" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:59:29.167882" elapsed="0.033286"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T00:59:29.253783" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "[C "I "n "[C "S "w "i "t "c "h "[C "A "f "t "e "r "[C "M "i "n "i "n "e "t "[C "I "s "[C "D "i "s "c "o "n "n "e "c "t "e "d "[78C[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T00:59:29.202453" elapsed="0.051478"/>
</kw>
<msg time="2026-04-08T00:59:29.254108" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T00:59:29.254160" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:59:29.201599" elapsed="0.052618"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:29.254582" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:59:29.254315" elapsed="0.000323"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:29.254288" elapsed="0.000376"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:59:29.255145" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "[C "I "n "[C "S "w "i "t "c "h "[C "A "f "t "e "r "[C "M "i "n "i "n "e "t "[C "I "s "[C "D "i "s "c "o "n "n "e "c "t "e "d "[78C[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:59:29.254815" elapsed="0.000428"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:29.255534" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:59:29.255313" elapsed="0.000275"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:29.255294" elapsed="0.000316"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T00:59:29.255645" elapsed="0.000032"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:59:29.258293" elapsed="0.000185"/>
</kw>
<msg time="2026-04-08T00:59:29.258539" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:59:29.257176" elapsed="0.001496"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:29.258946" elapsed="0.000073"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:29.259298" elapsed="0.000072"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:59:29.256545" elapsed="0.002934"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T00:59:29.255965" elapsed="0.003584"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T00:59:29.166309" elapsed="0.093338"/>
</kw>
<msg time="2026-04-08T00:59:29.259742" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:59:29.259786" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:59:29.165682" elapsed="0.094181"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T00:59:29.260054" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-08T00:59:29.259946" elapsed="0.000411"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:29.259927" elapsed="0.000499"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 2,
close the previous connection. In any case create a new connection
to karaf console for 2, set correct prompt set and login to karaf console.
Store connection index for 2 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:29.260825" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:29.261157" elapsed="0.000037"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T00:59:29.261243" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T00:59:29.164911" elapsed="0.096438"/>
</kw>
<msg time="2026-04-08T00:59:29.261442" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:59:29.261485" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:59:29.160248" elapsed="0.101272"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:29.261852" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:59:29.261595" elapsed="0.000309"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:29.261578" elapsed="0.000349"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T00:59:29.160085" elapsed="0.101866"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:59:29.267377" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:59:29.267164" elapsed="0.000259"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:29.267142" elapsed="0.000302"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:59:29.268621" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:59:29.268513" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:29.268494" elapsed="0.000194"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:59:29.269131" level="INFO">${karaf_connection_index} = 480</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:59:29.268835" elapsed="0.000326"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:59:29.269587" level="INFO">${current_connection_index} = 495</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:59:29.269339" elapsed="0.000274"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T00:59:29.308147" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T00:59:29.270111" elapsed="0.038179"/>
</kw>
<msg time="2026-04-08T00:59:29.308493" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T00:59:29.308540" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:59:29.269775" elapsed="0.038801"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T00:59:29.364897" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "[C "I "n "[C "S "w "i "t "c "h "[C "A "f "t "e "r "[C "M "i "n "i "n "e "t "[C "I "s "[C "D "i "s "c "o "n "n "e "c "t "e "d "[78C[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T00:59:29.309222" elapsed="0.055816"/>
</kw>
<msg time="2026-04-08T00:59:29.365231" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T00:59:29.365279" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:59:29.308779" elapsed="0.056536"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:29.365692" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:59:29.365419" elapsed="0.000330"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:29.365387" elapsed="0.000389"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:59:29.366351" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "[C "I "n "[C "S "w "i "t "c "h "[C "A "f "t "e "r "[C "M "i "n "i "n "e "t "[C "I "s "[C "D "i "s "c "o "n "n "e "c "t "e "d "[78C[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:59:29.365966" elapsed="0.000467"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:29.366753" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:59:29.366502" elapsed="0.000378"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:29.366483" elapsed="0.000422"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T00:59:29.366943" elapsed="0.000038"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:59:29.369549" elapsed="0.000185"/>
</kw>
<msg time="2026-04-08T00:59:29.369796" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:59:29.368527" elapsed="0.001405"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:29.370319" elapsed="0.000079"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:29.370662" elapsed="0.000071"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:59:29.367863" elapsed="0.003002"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T00:59:29.367287" elapsed="0.003643"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T00:59:29.268209" elapsed="0.102820"/>
</kw>
<msg time="2026-04-08T00:59:29.371126" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:59:29.371173" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:59:29.267597" elapsed="0.103634"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T00:59:29.371419" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-08T00:59:29.371311" elapsed="0.000166"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:29.371292" elapsed="0.000209"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 3,
close the previous connection. In any case create a new connection
to karaf console for 3, set correct prompt set and login to karaf console.
Store connection index for 3 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:29.372121" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:29.372483" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T00:59:29.372556" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T00:59:29.266819" elapsed="0.105842"/>
</kw>
<msg time="2026-04-08T00:59:29.372754" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:59:29.372797" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:59:29.262240" elapsed="0.110592"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:29.373160" elapsed="0.000034"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:59:29.372907" elapsed="0.000323"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:29.372890" elapsed="0.000363"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T00:59:29.262079" elapsed="0.111197"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-08T00:59:29.046438" elapsed="0.326872"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-08T00:59:29.043924" elapsed="0.329446"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-08T00:59:29.038692" elapsed="0.334738"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:59:29.038231" elapsed="0.335246"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-08T00:59:29.035317" elapsed="0.338219"/>
</kw>
<kw name="Check Flows In Mininet" owner="MininetKeywords">
<if>
<branch type="IF" condition="&quot;&quot;&quot;${mininet_conn}&quot;&quot;&quot; != &quot;&quot;">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${mininet_conn}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:59:29.374373" elapsed="0.000172"/>
</kw>
<status status="PASS" start="2026-04-08T00:59:29.374123" elapsed="0.000457"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:29.374106" elapsed="0.000498"/>
</if>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:59:29.375066" level="INFO">${cmd} = dpctl dump-aggregate -O OpenFlow13</msg>
<var>${cmd}</var>
<arg>dpctl dump-aggregate -O OpenFlow13</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:59:29.374774" elapsed="0.000318"/>
</kw>
<kw name="Send Mininet Command" owner="MininetKeywords">
<if>
<branch type="IF" condition="&quot;&quot;&quot;${mininet_conn}&quot;&quot;&quot; != &quot;&quot;">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${mininet_conn}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:59:29.376008" elapsed="0.000226"/>
</kw>
<status status="PASS" start="2026-04-08T00:59:29.375792" elapsed="0.000479"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:29.375774" elapsed="0.000521"/>
</if>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T00:59:29.380996" level="INFO">dpctl dump-aggregate -O OpenFlow13</msg>
<arg>${cmd}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T00:59:29.376438" elapsed="0.004612"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-08T00:59:29.455902" level="INFO">*** s1 ------------------------------------------------------------------------
OFPST_AGGREGATE reply (OF1.3) (xid=0x2): packet_count=18 byte_count=1440 flow_count=100
*** s2 ------------------------------------------------------------------------
OFPST_AGGREGATE reply (OF1.3) (xid=0x2): packet_count=33 byte_count=2670 flow_count=100
*** s3 ------------------------------------------------------------------------
OFPST_AGGREGATE reply (OF1.3) (xid=0x2): packet_count=19 byte_count=1510 flow_count=100
mininet&gt;</msg>
<msg time="2026-04-08T00:59:29.456017" level="INFO">${output} = *** s1 ------------------------------------------------------------------------
OFPST_AGGREGATE reply (OF1.3) (xid=0x2): packet_count=18 byte_count=1440 flow_count=100
*** s2 ----------------------...</msg>
<var>${output}</var>
<arg>mininet&gt;</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-08T00:59:29.381229" elapsed="0.074815"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-08T00:59:29.456097" elapsed="0.000036"/>
</return>
<msg time="2026-04-08T00:59:29.456280" level="INFO">${output} = *** s1 ------------------------------------------------------------------------
OFPST_AGGREGATE reply (OF1.3) (xid=0x2): packet_count=18 byte_count=1440 flow_count=100
*** s2 ----------------------...</msg>
<var>${output}</var>
<arg>${mininet_conn}</arg>
<arg>${cmd}</arg>
<doc>Sends Command dpctl dump-aggregate -O OpenFlow13 to Mininet session 495 and returns read buffer response.</doc>
<status status="PASS" start="2026-04-08T00:59:29.375498" elapsed="0.080811"/>
</kw>
<kw name="Get Regexp Matches" owner="String">
<msg time="2026-04-08T00:59:29.456753" level="INFO">${flows} = ['100', '100', '100']</msg>
<var>${flows}</var>
<arg>${output}</arg>
<arg>(?&lt;=flow_count\=).*?(?=\r)</arg>
<doc>Returns a list of all non-overlapping matches in the given string.</doc>
<status status="PASS" start="2026-04-08T00:59:29.456481" elapsed="0.000297"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T00:59:29.457395" level="INFO">${total_flows} = 300</msg>
<var>${total_flows}</var>
<arg>sum(map(int, ${flows}))</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T00:59:29.456942" elapsed="0.000481"/>
</kw>
<kw name="Should Be Equal As Numbers" owner="BuiltIn">
<arg>${total_flows}</arg>
<arg>${flow_count}</arg>
<doc>Fails if objects are unequal after converting them to real numbers.</doc>
<status status="PASS" start="2026-04-08T00:59:29.457618" elapsed="0.000325"/>
</kw>
<arg>${mininet_conn_id}</arg>
<arg>${less_flows}</arg>
<doc>Sync with mininet to match exact number of flows</doc>
<status status="PASS" start="2026-04-08T00:59:29.373813" elapsed="0.084190"/>
</kw>
<doc>Check Flows in switch.</doc>
<status status="PASS" start="2026-04-08T00:59:29.034765" elapsed="0.423354"/>
</test>
<test id="s1-s4-t18" name="Reconnect Mininet To Owner" line="144">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-08T00:59:29.461545" elapsed="0.000206"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-08T00:59:29.461280" elapsed="0.000526"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:59:29.462798" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:59:29.462686" elapsed="0.000156"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:29.462667" elapsed="0.000198"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:59:29.467933" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:59:29.467827" elapsed="0.000150"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:29.467809" elapsed="0.000189"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:59:29.468999" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:59:29.468623" elapsed="0.000404"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:59:29.469585" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:59:29.469268" elapsed="0.000343"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:59:29.469656" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:59:29.469809" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:59:29.468244" elapsed="0.001588"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:59:29.475232" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:59:29.475100" elapsed="0.000177"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:29.475081" elapsed="0.000218"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:59:29.476473" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:59:29.476365" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:29.476347" elapsed="0.000193"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:59:29.476992" level="INFO">${karaf_connection_index} = 476</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:59:29.476689" elapsed="0.000331"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:59:29.477511" level="INFO">${current_connection_index} = 495</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:59:29.477200" elapsed="0.000338"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T00:59:29.519302" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T00:59:29.478062" elapsed="0.041345"/>
</kw>
<msg time="2026-04-08T00:59:29.519573" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T00:59:29.519620" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:59:29.477721" elapsed="0.041934"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T00:59:29.557433" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "R "e "c "o "n "n "e "c "t "[C "M "i "n "i "n "e "t "[C "T "o "[C "O "w "n "e "r "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T00:59:29.520214" elapsed="0.037331"/>
</kw>
<msg time="2026-04-08T00:59:29.557707" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T00:59:29.557753" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "R "e "c "o "n "n "e "c "t "[C "M "i...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:59:29.519832" elapsed="0.037957"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:29.558146" elapsed="0.000028"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:59:29.557873" elapsed="0.000362"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:29.557850" elapsed="0.000411"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:59:29.558718" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "R "e "c "o "n "n "e "c "t "[C "M "i "n "i "n "e "t "[C "T "o "[C "O "w "n "e "r "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:59:29.558410" elapsed="0.000377"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:29.559074" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:59:29.558854" elapsed="0.000273"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:29.558835" elapsed="0.000315"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T00:59:29.559204" elapsed="0.000037"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:59:29.561821" elapsed="0.000184"/>
</kw>
<msg time="2026-04-08T00:59:29.562065" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:59:29.560724" elapsed="0.001499"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:29.562667" elapsed="0.000075"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:29.562999" elapsed="0.000075"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:59:29.560085" elapsed="0.003121"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T00:59:29.559504" elapsed="0.003771"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T00:59:29.476031" elapsed="0.087342"/>
</kw>
<msg time="2026-04-08T00:59:29.563466" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:59:29.563510" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "R "e "c "o "n "n "e "c "t "[C "M "i...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:59:29.475452" elapsed="0.088094"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T00:59:29.563729" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-08T00:59:29.563621" elapsed="0.000165"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:29.563603" elapsed="0.000207"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:29.564250" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:29.564583" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T00:59:29.564655" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T00:59:29.474767" elapsed="0.090042"/>
</kw>
<msg time="2026-04-08T00:59:29.564903" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:59:29.564947" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "R "e "c "o "n "n "e "c "t "[C "M "i...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:59:29.470227" elapsed="0.094762"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:29.565376" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:59:29.565097" elapsed="0.000333"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:29.565071" elapsed="0.000382"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T00:59:29.470064" elapsed="0.095413"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:59:29.570892" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:59:29.570785" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:29.570766" elapsed="0.000193"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:59:29.572101" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:59:29.571993" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:29.571975" elapsed="0.000197"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:59:29.572672" level="INFO">${karaf_connection_index} = 478</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:59:29.572366" elapsed="0.000333"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:59:29.573106" level="INFO">${current_connection_index} = 495</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:59:29.572858" elapsed="0.000275"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T00:59:29.610199" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T00:59:29.573707" elapsed="0.036595"/>
</kw>
<msg time="2026-04-08T00:59:29.610465" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T00:59:29.610513" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:59:29.573316" elapsed="0.037235"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T00:59:29.643848" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "R "e "c "o "n "n "e "c "t "[C "M "i "n "i "n "e "t "[C "T "o "[C "O "w "n "e "r "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T00:59:29.611068" elapsed="0.032887"/>
</kw>
<msg time="2026-04-08T00:59:29.644114" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T00:59:29.644164" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "R "e "c "o "n "n "e "c "t "[C "M "i...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:59:29.610726" elapsed="0.033490"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:29.644528" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:59:29.644297" elapsed="0.000288"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:29.644276" elapsed="0.000333"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:59:29.645050" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "R "e "c "o "n "n "e "c "t "[C "M "i "n "i "n "e "t "[C "T "o "[C "O "w "n "e "r "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:59:29.644754" elapsed="0.000363"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:29.645436" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:59:29.645215" elapsed="0.000275"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:29.645170" elapsed="0.000343"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T00:59:29.645545" elapsed="0.000029"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:59:29.648084" elapsed="0.000201"/>
</kw>
<msg time="2026-04-08T00:59:29.648346" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:59:29.647014" elapsed="0.001462"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:29.648746" elapsed="0.002503"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:29.651527" elapsed="0.000076"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:59:29.646400" elapsed="0.005314"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T00:59:29.645819" elapsed="0.005960"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T00:59:29.571693" elapsed="0.080185"/>
</kw>
<msg time="2026-04-08T00:59:29.651969" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:59:29.652013" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "R "e "c "o "n "n "e "c "t "[C "M "i...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:59:29.571113" elapsed="0.080937"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T00:59:29.652255" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-08T00:59:29.652128" elapsed="0.000187"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:29.652108" elapsed="0.000230"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 2,
close the previous connection. In any case create a new connection
to karaf console for 2, set correct prompt set and login to karaf console.
Store connection index for 2 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:29.652722" elapsed="0.000024"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:29.653047" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T00:59:29.653118" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T00:59:29.570444" elapsed="0.082809"/>
</kw>
<msg time="2026-04-08T00:59:29.653345" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:59:29.653388" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "R "e "c "o "n "n "e "c "t "[C "M "i...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:59:29.565748" elapsed="0.087675"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:29.653748" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:59:29.653498" elapsed="0.000302"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:29.653481" elapsed="0.000342"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T00:59:29.565607" elapsed="0.088238"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:59:29.659306" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:59:29.659195" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:29.659164" elapsed="0.000208"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:59:29.660509" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:59:29.660402" elapsed="0.000156"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:29.660383" elapsed="0.000315"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:59:29.661147" level="INFO">${karaf_connection_index} = 480</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:59:29.660849" elapsed="0.000344"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:59:29.661606" level="INFO">${current_connection_index} = 495</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:59:29.661355" elapsed="0.000277"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T00:59:29.698372" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T00:59:29.662129" elapsed="0.036346"/>
</kw>
<msg time="2026-04-08T00:59:29.698655" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T00:59:29.698702" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:59:29.661793" elapsed="0.036945"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T00:59:29.747653" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "R "e "c "o "n "n "e "c "t "[C "M "i "n "i "n "e "t "[C "T "o "[C "O "w "n "e "r "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T00:59:29.699275" elapsed="0.048483"/>
</kw>
<msg time="2026-04-08T00:59:29.747917" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T00:59:29.747999" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "R "e "c "o "n "n "e "c "t "[C "M "i...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:59:29.698912" elapsed="0.049124"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:29.748373" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:59:29.748115" elapsed="0.000313"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:29.748095" elapsed="0.000356"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:59:29.748885" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "R "e "c "o "n "n "e "c "t "[C "M "i "n "i "n "e "t "[C "T "o "[C "O "w "n "e "r "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:59:29.748591" elapsed="0.000385"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:29.749280" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:59:29.749044" elapsed="0.000291"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:29.749026" elapsed="0.000332"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T00:59:29.749390" elapsed="0.000027"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:59:29.751857" elapsed="0.000181"/>
</kw>
<msg time="2026-04-08T00:59:29.752099" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:59:29.750810" elapsed="0.001435"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:29.752518" elapsed="0.000076"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:29.752845" elapsed="0.000073"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:59:29.750199" elapsed="0.002863"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T00:59:29.749656" elapsed="0.003474"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T00:59:29.660072" elapsed="0.093177"/>
</kw>
<msg time="2026-04-08T00:59:29.753341" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:59:29.753384" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "R "e "c "o "n "n "e "c "t "[C "M "i...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:59:29.659524" elapsed="0.093896"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T00:59:29.753603" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-08T00:59:29.753497" elapsed="0.000164"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:29.753478" elapsed="0.000206"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 3,
close the previous connection. In any case create a new connection
to karaf console for 3, set correct prompt set and login to karaf console.
Store connection index for 3 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:29.754255" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:29.754586" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T00:59:29.754657" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T00:59:29.658841" elapsed="0.095921"/>
</kw>
<msg time="2026-04-08T00:59:29.754853" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:59:29.754896" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "R "e "c "o "n "n "e "c "t "[C "M "i...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:59:29.654106" elapsed="0.100825"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:29.755272" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:59:29.755006" elapsed="0.000320"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:29.754989" elapsed="0.000361"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T00:59:29.653964" elapsed="0.101408"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-08T00:59:29.469888" elapsed="0.285513"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-08T00:59:29.467465" elapsed="0.287990"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-08T00:59:29.462401" elapsed="0.293108"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:59:29.461958" elapsed="0.293635"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-08T00:59:29.459026" elapsed="0.296619"/>
</kw>
<kw name="Disconnect Cluster Mininet" owner="MininetKeywords">
<msg time="2026-04-08T00:59:29.760036" level="FAIL">Variable '${original_owner_list}' not found.</msg>
<arg>restore</arg>
<arg>${original_owner_list}</arg>
<doc>Break and restore controller to mininet connection via iptables.</doc>
<status status="FAIL" start="2026-04-08T00:59:29.755922" elapsed="0.004153">Variable '${original_owner_list}' not found.</status>
</kw>
<doc>Reconnect mininet to switch 1 owner.</doc>
<status status="FAIL" start="2026-04-08T00:59:29.458450" elapsed="0.301793">Variable '${original_owner_list}' not found.</status>
</test>
<test id="s1-s4-t19" name="Check Entity Owner Status And Find Owner and Successor After Reconnect" line="148">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-08T00:59:29.763537" elapsed="0.000205"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-08T00:59:29.763274" elapsed="0.000522"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:59:29.764769" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:59:29.764663" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:29.764644" elapsed="0.000192"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:59:29.769722" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:59:29.769617" elapsed="0.000150"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:29.769598" elapsed="0.000191"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:59:29.770787" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:59:29.770409" elapsed="0.000405"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:59:29.771297" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:59:29.770975" elapsed="0.000347"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:59:29.771365" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T00:59:29.771517" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:59:29.770017" elapsed="0.001529"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:59:29.777169" elapsed="0.000027"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:59:29.777058" elapsed="0.000170"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:29.777039" elapsed="0.000211"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:59:29.778431" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:59:29.778323" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:29.778304" elapsed="0.000195"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:59:29.778941" level="INFO">${karaf_connection_index} = 476</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:59:29.778646" elapsed="0.000322"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:59:29.779399" level="INFO">${current_connection_index} = 495</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:59:29.779128" elapsed="0.000298"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T00:59:29.815180" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T00:59:29.779928" elapsed="0.035357"/>
</kw>
<msg time="2026-04-08T00:59:29.815446" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T00:59:29.815493" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:59:29.779589" elapsed="0.035939"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T00:59:29.901522" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "E "n "t "i "t "y "[C "O "w "n "e "r "[C "S "t "a "t "u "s "[C "A "n "d "[C "F "i "n "d "[C "O "w "n "e "r "[C "a "n "d "[C "S "u "c "c "e "s "[78Cs "[A[78Co
 "r "[C "A "f "t "e "r "[C "R "e "c "o "n "n "e "c "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T00:59:29.816048" elapsed="0.085660"/>
</kw>
<msg time="2026-04-08T00:59:29.902044" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T00:59:29.902097" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "E "n "t "i "t "y...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:59:29.815704" elapsed="0.086521"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:29.902590" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:59:29.902333" elapsed="0.000313"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:29.902308" elapsed="0.000362"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:59:29.903135" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "E "n "t "i "t "y "[C "O "w "n "e "r "[C "S "t "a "t "u "s "[C "A "n "d "[C "F "i "n "d "[C "O "w "n "e "r "[C "a "n "d "[C "S "u "c "c "e "s "[78Cs "[A[78Co
 "r "[C "A "f "t "e "r "[C "R "e "c "o "n "n "e "c "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:59:29.902817" elapsed="0.000420"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:29.903526" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:59:29.903306" elapsed="0.000279"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:29.903288" elapsed="0.000320"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T00:59:29.903641" elapsed="0.000037"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:59:29.906248" elapsed="0.000187"/>
</kw>
<msg time="2026-04-08T00:59:29.906496" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:59:29.905123" elapsed="0.001500"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:29.906894" elapsed="0.000074"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:29.907250" elapsed="0.000073"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:59:29.904471" elapsed="0.002961"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T00:59:29.903918" elapsed="0.003576"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T00:59:29.777993" elapsed="0.129605"/>
</kw>
<msg time="2026-04-08T00:59:29.907689" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:59:29.907732" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "E "n "t "i "t "y...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:59:29.777404" elapsed="0.130364"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T00:59:29.907952" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-08T00:59:29.907846" elapsed="0.000164"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:29.907827" elapsed="0.000206"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:29.908449" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:29.908776" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T00:59:29.908847" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T00:59:29.776721" elapsed="0.132232"/>
</kw>
<msg time="2026-04-08T00:59:29.909043" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:59:29.909086" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "E "n "t "i "t "y...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:59:29.771907" elapsed="0.137215"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:29.909483" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:59:29.909231" elapsed="0.000306"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:29.909196" elapsed="0.000364"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T00:59:29.771765" elapsed="0.137818"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:59:29.915303" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:59:29.915094" elapsed="0.000256"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:29.915074" elapsed="0.000297"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:59:29.916557" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:59:29.916449" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:29.916430" elapsed="0.000195"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:59:29.917065" level="INFO">${karaf_connection_index} = 478</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:59:29.916771" elapsed="0.000321"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:59:29.917539" level="INFO">${current_connection_index} = 495</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:59:29.917270" elapsed="0.000296"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T00:59:29.950882" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T00:59:29.918063" elapsed="0.032921"/>
</kw>
<msg time="2026-04-08T00:59:29.951143" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T00:59:29.951213" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:59:29.917729" elapsed="0.033520"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T00:59:30.032004" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "E "n "t "i "t "y "[C "O "w "n "e "r "[C "S "t "a "t "u "s "[C "A "n "d "[C "F "i "n "d "[C "O "w "n "e "r "[C "a "n "d "[C "S "u "c "c "e "s "[78Cs "[A[78Co
 "r "[C "A "f "t "e "r "[C "R "e "c "o "n "n "e "c "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T00:59:29.951765" elapsed="0.080367"/>
</kw>
<msg time="2026-04-08T00:59:30.032332" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T00:59:30.032380" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "E "n "t "i "t "y...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:59:29.951423" elapsed="0.080993"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:30.032778" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:59:30.032536" elapsed="0.000299"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:30.032476" elapsed="0.000383"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:59:30.033347" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "E "n "t "i "t "y "[C "O "w "n "e "r "[C "S "t "a "t "u "s "[C "A "n "d "[C "F "i "n "d "[C "O "w "n "e "r "[C "a "n "d "[C "S "u "c "c "e "s "[78Cs "[A[78Co
 "r "[C "A "f "t "e "r "[C "R "e "c "o "n "n "e "c "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:59:30.033015" elapsed="0.000417"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:30.033725" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:59:30.033500" elapsed="0.000280"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:30.033482" elapsed="0.000322"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T00:59:30.033837" elapsed="0.000027"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:59:30.036386" elapsed="0.000184"/>
</kw>
<msg time="2026-04-08T00:59:30.036653" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:59:30.035322" elapsed="0.001462"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:30.037056" elapsed="0.000074"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:30.037431" elapsed="0.000076"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:59:30.034676" elapsed="0.002938"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T00:59:30.034111" elapsed="0.003566"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T00:59:29.916077" elapsed="0.121699"/>
</kw>
<msg time="2026-04-08T00:59:30.037867" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:59:30.037910" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "E "n "t "i "t "y...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:59:29.915526" elapsed="0.122420"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T00:59:30.038156" elapsed="0.000051"/>
</return>
<status status="PASS" start="2026-04-08T00:59:30.038042" elapsed="0.000237"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:30.038008" elapsed="0.000299"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 2,
close the previous connection. In any case create a new connection
to karaf console for 2, set correct prompt set and login to karaf console.
Store connection index for 2 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:30.038702" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:30.039035" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T00:59:30.039106" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T00:59:29.914756" elapsed="0.124483"/>
</kw>
<msg time="2026-04-08T00:59:30.039341" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:59:30.039385" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "E "n "t "i "t "y...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:59:29.909840" elapsed="0.129582"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:30.039754" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:59:30.039497" elapsed="0.000311"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:30.039479" elapsed="0.000353"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T00:59:29.909700" elapsed="0.130155"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:59:30.045719" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:59:30.045595" elapsed="0.000171"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:30.045574" elapsed="0.000214"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T00:59:30.046955" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:59:30.046845" elapsed="0.000157"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:30.046825" elapsed="0.000199"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:59:30.047527" level="INFO">${karaf_connection_index} = 480</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:59:30.047224" elapsed="0.000330"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T00:59:30.047985" level="INFO">${current_connection_index} = 495</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:59:30.047726" elapsed="0.000286"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T00:59:30.085205" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T00:59:30.048542" elapsed="0.036759"/>
</kw>
<msg time="2026-04-08T00:59:30.085458" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T00:59:30.085522" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:59:30.048199" elapsed="0.037361"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T00:59:30.155951" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "E "n "t "i "t "y "[C "O "w "n "e "r "[C "S "t "a "t "u "s "[C "A "n "d "[C "F "i "n "d "[C "O "w "n "e "r "[C "a "n "d "[C "S "u "c "c "e "s "[78Cs "[A[78Co
 "r "[C "A "f "t "e "r "[C "R "e "c "o "n "n "e "c "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T00:59:30.086121" elapsed="0.069953"/>
</kw>
<msg time="2026-04-08T00:59:30.156259" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T00:59:30.156305" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "E "n "t "i "t "y...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:59:30.085759" elapsed="0.070582"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:30.156653" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:59:30.156420" elapsed="0.000288"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:30.156399" elapsed="0.000332"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:59:30.157175" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "E "n "t "i "t "y "[C "O "w "n "e "r "[C "S "t "a "t "u "s "[C "A "n "d "[C "F "i "n "d "[C "O "w "n "e "r "[C "a "n "d "[C "S "u "c "c "e "s "[78Cs "[A[78Co
 "r "[C "A "f "t "e "r "[C "R "e "c "o "n "n "e "c "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:59:30.156874" elapsed="0.000400"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:30.157602" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:59:30.157342" elapsed="0.000315"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:30.157324" elapsed="0.000357"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T00:59:30.157713" elapsed="0.000027"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T00:59:30.160216" elapsed="0.000185"/>
</kw>
<msg time="2026-04-08T00:59:30.160462" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T00:59:30.159137" elapsed="0.001450"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:30.160860" elapsed="0.000074"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:30.161209" elapsed="0.000075"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T00:59:30.158530" elapsed="0.002861"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T00:59:30.157978" elapsed="0.003478"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T00:59:30.046520" elapsed="0.115035"/>
</kw>
<msg time="2026-04-08T00:59:30.161647" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:59:30.161690" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "E "n "t "i "t "y...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:59:30.045943" elapsed="0.115782"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T00:59:30.161909" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-08T00:59:30.161803" elapsed="0.000164"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:30.161783" elapsed="0.000208"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 3,
close the previous connection. In any case create a new connection
to karaf console for 3, set correct prompt set and login to karaf console.
Store connection index for 3 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:30.162396" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:30.162763" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T00:59:30.162836" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T00:59:30.045145" elapsed="0.117797"/>
</kw>
<msg time="2026-04-08T00:59:30.163035" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T00:59:30.163079" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "E "n "t "i "t "y...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:59:30.040117" elapsed="0.122997"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:30.163462" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T00:59:30.163207" elapsed="0.000308"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:30.163176" elapsed="0.000362"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T00:59:30.039975" elapsed="0.123586"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-08T00:59:29.771599" elapsed="0.391990"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-08T00:59:29.769235" elapsed="0.394410"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-08T00:59:29.764377" elapsed="0.399324"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:59:29.763946" elapsed="0.399799"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-08T00:59:29.761109" elapsed="0.402686"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Get OpenFlow Entity Owner Status For One Device" owner="ClusterOpenFlow">
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:59:30.200906" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:59:30.200469" elapsed="0.000468"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:59:30.201439" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:59:30.201113" elapsed="0.000352"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:59:30.201557" elapsed="0.000031"/>
</return>
<msg time="2026-04-08T00:59:30.201714" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:59:30.200074" elapsed="0.001665"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T00:59:30.206573" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T00:59:30.206389" elapsed="0.000211"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:59:30.206813" elapsed="0.000195"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:59:30.207399" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:59:30.207188" elapsed="0.000237"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:59:30.207851" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:59:30.207603" elapsed="0.000289"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:59:30.208042" elapsed="0.000199"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:59:30.208603" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:59:30.208396" elapsed="0.000232"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:59:30.209041" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:59:30.208798" elapsed="0.000283"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:59:30.209605" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:59:30.209263" elapsed="0.000368"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:59:30.210037" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:59:30.209802" elapsed="0.000278"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:59:30.210532" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:59:30.210249" elapsed="0.000309"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:59:30.217837" elapsed="0.000366"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:59:30.227656" elapsed="0.000427"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:59:30.228979" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:59:30.228389" elapsed="0.000698"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:59:30.231570" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:59:30.231027" elapsed="0.000590"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:59:30.231692" elapsed="0.000064"/>
</return>
<msg time="2026-04-08T00:59:30.231998" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:59:30.229462" elapsed="0.002644"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:59:30.233343" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:59:30.232463" elapsed="0.001001"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:59:30.234879" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:59:30.233889" elapsed="0.001101"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:59:30.235927" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:59:30.254522" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:59:30.235478" elapsed="0.024696">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:30.261255" elapsed="0.000056"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:30.262240" elapsed="0.000053"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:30.263146" elapsed="0.000087"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:30.263726" elapsed="0.000023"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:30.264132" elapsed="0.000026"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:30.264485" elapsed="0.000021"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:30.265777" elapsed="0.000058"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:30.266864" elapsed="0.000056"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:30.267926" elapsed="0.000056"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:59:30.264813" elapsed="0.003219"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:59:30.264664" elapsed="0.003433"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:30.268368" elapsed="0.000022"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:59:30.268537" elapsed="0.000018"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:59:30.226833" elapsed="0.041831">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:59:30.268735" elapsed="0.000016"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T00:59:30.215156" elapsed="0.053685">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:30.269039" elapsed="0.000022"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:30.273872" elapsed="0.000028"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:30.274089" elapsed="0.000023"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T00:59:30.274162" elapsed="0.000029"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T00:59:30.205828" elapsed="0.068459">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:59:30.274401" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:59:30.274445" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:59:30.205230" elapsed="0.069238"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T00:59:30.274685" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:59:30.274555" elapsed="0.000175"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:30.274535" elapsed="0.000217"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:59:30.276240" elapsed="0.000214"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:59:30.276973" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:59:30.276660" elapsed="0.000338"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:59:30.277995" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:59:30.277589" elapsed="0.000433"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:59:30.278070" elapsed="0.000033"/>
</return>
<msg time="2026-04-08T00:59:30.278255" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:59:30.277228" elapsed="0.001052"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:59:30.278860" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:59:30.278449" elapsed="0.000439"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:59:30.279451" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:59:30.279052" elapsed="0.000425"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:59:30.279853" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:59:30.291099" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:59:30.279650" elapsed="0.013897">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:30.293839" elapsed="0.000035"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:30.294096" elapsed="0.000029"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:30.294368" elapsed="0.000031"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:30.294608" elapsed="0.000028"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:30.294866" elapsed="0.000030"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:30.295104" elapsed="0.000033"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:30.295582" elapsed="0.000031"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:30.295836" elapsed="0.000037"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:30.296085" elapsed="0.000030"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:59:30.295355" elapsed="0.000812"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:59:30.295259" elapsed="0.000966"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:30.296427" elapsed="0.000029"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:59:30.296511" elapsed="0.000021"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:59:30.275662" elapsed="0.020999">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:59:30.296820" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:59:30.296882" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:59:30.274907" elapsed="0.022019"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T00:59:30.297827" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T00:59:30.297382" elapsed="0.000533">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T00:59:30.297045" elapsed="0.000968">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T00:59:30.297018" elapsed="0.001093">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T00:59:30.298205" elapsed="0.000025"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:59:30.204612" elapsed="0.093741">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:30.298610" elapsed="0.000031"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:30.298851" elapsed="0.000028"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T00:59:30.298937" elapsed="0.000023"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T00:59:30.202037" elapsed="0.097055">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:30.299388" elapsed="0.000032"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:30.299652" elapsed="0.000029"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:30.299896" elapsed="0.000028"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:30.300142" elapsed="0.000054"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:30.300414" elapsed="0.000028"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:30.300648" elapsed="0.000028"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T00:59:30.300732" elapsed="0.000020"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T00:59:30.199431" elapsed="0.101440">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:59:31.334243" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:59:31.333745" elapsed="0.000539"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:59:31.334777" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:59:31.334460" elapsed="0.000343"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:59:31.334850" elapsed="0.000038"/>
</return>
<msg time="2026-04-08T00:59:31.335017" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:59:31.333346" elapsed="0.001697"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T00:59:31.339880" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T00:59:31.339689" elapsed="0.000218"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:59:31.340064" elapsed="0.000216"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:59:31.340651" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:59:31.340439" elapsed="0.000240"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:59:31.341245" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:59:31.340962" elapsed="0.000326"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:59:31.341441" elapsed="0.000184"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:59:31.341990" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:59:31.341781" elapsed="0.000235"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:59:31.342454" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:59:31.342206" elapsed="0.000290"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:59:31.342987" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:59:31.342648" elapsed="0.000364"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:59:31.343470" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:59:31.343200" elapsed="0.000314"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:59:31.343956" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:59:31.343671" elapsed="0.000311"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:59:31.350782" elapsed="0.000300"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:59:31.360454" elapsed="0.000420"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:59:31.361740" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:59:31.361137" elapsed="0.000711"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:59:31.364344" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:59:31.363839" elapsed="0.000552"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:59:31.364465" elapsed="0.000065"/>
</return>
<msg time="2026-04-08T00:59:31.364770" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:59:31.362199" elapsed="0.002680"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:59:31.366038" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:59:31.365226" elapsed="0.000924"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:59:31.367492" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:59:31.366556" elapsed="0.001049"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:59:31.368584" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:59:31.385256" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:59:31.368131" elapsed="0.022931">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:31.392173" elapsed="0.000093"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:31.393225" elapsed="0.000059"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:31.393876" elapsed="0.000031"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:31.394416" elapsed="0.000032"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:31.394972" elapsed="0.000031"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:31.395436" elapsed="0.000030"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:31.397252" elapsed="0.000078"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:31.398808" elapsed="0.000080"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:31.400367" elapsed="0.000078"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:59:31.395888" elapsed="0.004626"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:59:31.395685" elapsed="0.004981"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:31.400963" elapsed="0.000031"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:59:31.401222" elapsed="0.000028"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:59:31.359634" elapsed="0.041773">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:59:31.401510" elapsed="0.000023"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T00:59:31.348471" elapsed="0.053187">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:31.401850" elapsed="0.000022"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:31.407095" elapsed="0.000047"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:31.407383" elapsed="0.000024"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T00:59:31.407455" elapsed="0.000015"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T00:59:31.339100" elapsed="0.068468">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:59:31.407699" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:59:31.407746" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:59:31.338544" elapsed="0.069226"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T00:59:31.407998" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:59:31.407872" elapsed="0.000170"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:31.407848" elapsed="0.000218"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:59:31.409565" elapsed="0.000220"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:59:31.410398" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:59:31.409945" elapsed="0.000480"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:59:31.411416" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:59:31.410970" elapsed="0.000475"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:59:31.411493" elapsed="0.000033"/>
</return>
<msg time="2026-04-08T00:59:31.411651" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:59:31.410618" elapsed="0.001058"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:59:31.412253" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:59:31.411843" elapsed="0.000437"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:59:31.412871" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:59:31.412443" elapsed="0.000458"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:59:31.413334" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:59:31.422333" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:59:31.413089" elapsed="0.011807">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:31.425237" elapsed="0.000036"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:31.425505" elapsed="0.000031"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:31.425755" elapsed="0.000029"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:31.426003" elapsed="0.000030"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:31.426280" elapsed="0.000031"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:31.426528" elapsed="0.000029"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:31.426921" elapsed="0.000030"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:31.427201" elapsed="0.000032"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:31.427454" elapsed="0.000030"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:59:31.426726" elapsed="0.000807"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:59:31.426624" elapsed="0.000948"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:31.427784" elapsed="0.000030"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:59:31.427872" elapsed="0.000022"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:59:31.408970" elapsed="0.019061">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:59:31.428230" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:59:31.428298" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:59:31.408246" elapsed="0.020087"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T00:59:31.429311" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T00:59:31.428786" elapsed="0.000616">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T00:59:31.428458" elapsed="0.001036">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T00:59:31.428429" elapsed="0.001113">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T00:59:31.429610" elapsed="0.000023"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:59:31.337966" elapsed="0.091791">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:31.430023" elapsed="0.000032"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:31.430297" elapsed="0.000031"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T00:59:31.430389" elapsed="0.000022"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T00:59:31.335394" elapsed="0.095196">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:31.430850" elapsed="0.000031"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:31.431118" elapsed="0.000030"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:31.431400" elapsed="0.000029"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:31.431642" elapsed="0.000029"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:31.431890" elapsed="0.000028"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:31.432135" elapsed="0.000034"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T00:59:31.432249" elapsed="0.000024"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T00:59:31.332481" elapsed="0.099919">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:59:32.464771" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:59:32.464257" elapsed="0.000549"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:59:32.465316" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:59:32.464982" elapsed="0.000360"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:59:32.465389" elapsed="0.000042"/>
</return>
<msg time="2026-04-08T00:59:32.465564" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:59:32.463842" elapsed="0.001748"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T00:59:32.470418" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T00:59:32.470224" elapsed="0.000222"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:59:32.470612" elapsed="0.000198"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:59:32.471195" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:59:32.470966" elapsed="0.000257"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:59:32.471693" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:59:32.471417" elapsed="0.000319"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:59:32.471886" elapsed="0.000186"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:59:32.472512" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:59:32.472297" elapsed="0.000241"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:59:32.472972" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:59:32.472721" elapsed="0.000292"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:59:32.473539" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:59:32.473171" elapsed="0.000394"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:59:32.474058" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:59:32.473809" elapsed="0.000322"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:59:32.474597" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:59:32.474305" elapsed="0.000321"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:59:32.483197" elapsed="0.000317"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:59:32.492819" elapsed="0.000447"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:59:32.494128" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:59:32.493536" elapsed="0.000726"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:59:32.496682" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:59:32.496212" elapsed="0.000516"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:59:32.496806" elapsed="0.000072"/>
</return>
<msg time="2026-04-08T00:59:32.497120" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:59:32.494653" elapsed="0.002603"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:59:32.498614" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:59:32.497574" elapsed="0.001150"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:59:32.500039" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:59:32.499105" elapsed="0.001043"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:59:32.501068" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:59:32.515316" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:59:32.500632" elapsed="0.019609">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:32.521223" elapsed="0.000057"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:32.522060" elapsed="0.000050"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:32.522985" elapsed="0.000061"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:32.524030" elapsed="0.000075"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:32.524933" elapsed="0.000030"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:32.525390" elapsed="0.000031"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:32.527012" elapsed="0.000121"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:32.528451" elapsed="0.000072"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:32.529825" elapsed="0.000072"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:59:32.525815" elapsed="0.004147"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:59:32.525625" elapsed="0.004421"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:32.530344" elapsed="0.000030"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:59:32.530563" elapsed="0.000027"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:59:32.492020" elapsed="0.038727">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:59:32.530913" elapsed="0.000023"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T00:59:32.480725" elapsed="0.050332">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:32.531347" elapsed="0.000030"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:32.536706" elapsed="0.000030"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:32.536912" elapsed="0.000022"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T00:59:32.536981" elapsed="0.000016"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T00:59:32.469640" elapsed="0.067452">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:59:32.537376" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:59:32.537424" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:59:32.469040" elapsed="0.068408"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T00:59:32.537681" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:59:32.537551" elapsed="0.000173"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:32.537526" elapsed="0.000222"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:59:32.539152" elapsed="0.000265"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:59:32.539901" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:59:32.539578" elapsed="0.000349"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:59:32.540898" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:59:32.540483" elapsed="0.000444"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:59:32.540976" elapsed="0.000032"/>
</return>
<msg time="2026-04-08T00:59:32.541134" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:59:32.540114" elapsed="0.001051"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:59:32.541796" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:59:32.541413" elapsed="0.000410"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:59:32.542357" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:59:32.541984" elapsed="0.000400"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:59:32.542775" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:59:32.552344" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:59:32.542552" elapsed="0.013520">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:32.556546" elapsed="0.000054"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:32.556982" elapsed="0.000053"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:32.557508" elapsed="0.000050"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:32.557911" elapsed="0.000051"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:32.558356" elapsed="0.000048"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:32.558737" elapsed="0.000045"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:32.559394" elapsed="0.000048"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:32.559840" elapsed="0.000047"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:32.560271" elapsed="0.000052"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:59:32.559057" elapsed="0.001343"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:59:32.558886" elapsed="0.001573"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:32.560781" elapsed="0.000046"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:59:32.560916" elapsed="0.000036"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:59:32.538589" elapsed="0.022632">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:59:32.561492" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:59:32.561591" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:59:32.537911" elapsed="0.023732"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T00:59:32.563210" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T00:59:32.562394" elapsed="0.000982">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T00:59:32.561839" elapsed="0.001690">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T00:59:32.561793" elapsed="0.001811">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T00:59:32.563804" elapsed="0.000042"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:59:32.468486" elapsed="0.095557">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:32.564488" elapsed="0.000051"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:32.564747" elapsed="0.000019"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T00:59:32.564808" elapsed="0.000015"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T00:59:32.465889" elapsed="0.099019">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:32.565084" elapsed="0.000021"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:32.565286" elapsed="0.000023"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:32.565465" elapsed="0.000020"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:32.565669" elapsed="0.000021"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:32.565843" elapsed="0.000020"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:32.566008" elapsed="0.000021"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T00:59:32.566070" elapsed="0.000015"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T00:59:32.463028" elapsed="0.103160">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:59:33.597584" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:59:33.597071" elapsed="0.000551"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:59:33.598190" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:59:33.597834" elapsed="0.000385"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:59:33.598267" elapsed="0.000042"/>
</return>
<msg time="2026-04-08T00:59:33.598445" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:59:33.596657" elapsed="0.001815"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T00:59:33.603383" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T00:59:33.603165" elapsed="0.000245"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:59:33.603582" elapsed="0.000201"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:59:33.604186" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:59:33.603944" elapsed="0.000271"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:59:33.604681" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:59:33.604417" elapsed="0.000307"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:59:33.604876" elapsed="0.000184"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:59:33.605467" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:59:33.605252" elapsed="0.000240"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:59:33.605962" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:59:33.605669" elapsed="0.000336"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:59:33.606551" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:59:33.606195" elapsed="0.000382"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:59:33.607014" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:59:33.606750" elapsed="0.000307"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:59:33.607754" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:59:33.607241" elapsed="0.000539"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:59:33.614904" elapsed="0.000342"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:59:33.624682" elapsed="0.000483"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:59:33.626131" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:59:33.625455" elapsed="0.000835"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:59:33.628833" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:59:33.628241" elapsed="0.000647"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:59:33.628969" elapsed="0.000068"/>
</return>
<msg time="2026-04-08T00:59:33.629321" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:59:33.626642" elapsed="0.002786"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:59:33.630660" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:59:33.629742" elapsed="0.001034"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:59:33.632164" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:59:33.631199" elapsed="0.001093"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:59:33.633295" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:59:33.647018" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:59:33.632766" elapsed="0.019205">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:33.653038" elapsed="0.000057"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:33.653949" elapsed="0.000054"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:33.654872" elapsed="0.000055"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:33.655645" elapsed="0.000050"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:33.656639" elapsed="0.000050"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:33.657626" elapsed="0.000068"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:33.660619" elapsed="0.000123"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:33.663463" elapsed="0.000130"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:33.665991" elapsed="0.000125"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:59:33.658417" elapsed="0.007839"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:59:33.658067" elapsed="0.008328"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:33.666921" elapsed="0.000051"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:59:33.667334" elapsed="0.000041"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:59:33.623859" elapsed="0.043750">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:59:33.667700" elapsed="0.000017"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T00:59:33.612503" elapsed="0.055301">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:33.667987" elapsed="0.000022"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:33.672812" elapsed="0.000029"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:33.673090" elapsed="0.000025"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T00:59:33.673313" elapsed="0.000026"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T00:59:33.602592" elapsed="0.070873">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:59:33.673595" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:59:33.673640" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:59:33.601993" elapsed="0.071670"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T00:59:33.673890" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:59:33.673762" elapsed="0.000170"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:33.673739" elapsed="0.000216"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:59:33.675465" elapsed="0.000215"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:59:33.676159" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:59:33.675836" elapsed="0.000363"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:59:33.677222" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:59:33.676776" elapsed="0.000482"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:59:33.677318" elapsed="0.000033"/>
</return>
<msg time="2026-04-08T00:59:33.677476" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:59:33.676429" elapsed="0.001072"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:59:33.678042" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:59:33.677667" elapsed="0.000401"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:59:33.678605" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:59:33.678255" elapsed="0.000377"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:59:33.679050" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:59:33.688557" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:59:33.678799" elapsed="0.012446">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:33.691526" elapsed="0.000034"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:33.691786" elapsed="0.000031"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:33.692033" elapsed="0.000031"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:33.692304" elapsed="0.000032"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:33.692604" elapsed="0.000041"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:33.692875" elapsed="0.000030"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:33.693307" elapsed="0.000033"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:33.693571" elapsed="0.000030"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:33.693814" elapsed="0.000030"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:59:33.693072" elapsed="0.000821"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:59:33.692969" elapsed="0.000963"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:33.694142" elapsed="0.000055"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:59:33.694312" elapsed="0.000025"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:59:33.674788" elapsed="0.019684">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:59:33.694640" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:59:33.694705" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:59:33.674114" elapsed="0.020625"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T00:59:33.695717" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T00:59:33.695234" elapsed="0.000573">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T00:59:33.694862" elapsed="0.001038">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T00:59:33.694834" elapsed="0.001114">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T00:59:33.696016" elapsed="0.000025"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:59:33.601372" elapsed="0.094817">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:33.696460" elapsed="0.000033"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:33.696712" elapsed="0.000030"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T00:59:33.696803" elapsed="0.000022"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T00:59:33.598776" elapsed="0.098174">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:33.697225" elapsed="0.000032"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:33.697493" elapsed="0.000029"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:33.697744" elapsed="0.000029"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:33.697986" elapsed="0.000029"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:33.698256" elapsed="0.000031"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:33.698504" elapsed="0.000029"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T00:59:33.698592" elapsed="0.000022"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T00:59:33.595820" elapsed="0.102917">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:59:34.732660" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:59:34.732066" elapsed="0.000629"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:59:34.733221" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:59:34.732876" elapsed="0.000373"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:59:34.733299" elapsed="0.000044"/>
</return>
<msg time="2026-04-08T00:59:34.733477" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:59:34.731663" elapsed="0.001841"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T00:59:34.738440" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T00:59:34.738163" elapsed="0.000308"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:59:34.738629" elapsed="0.000200"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:59:34.739254" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:59:34.739014" elapsed="0.000268"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:59:34.739743" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:59:34.739475" elapsed="0.000311"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:59:34.739940" elapsed="0.000185"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:59:34.740512" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:59:34.740301" elapsed="0.000237"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:59:34.740963" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:59:34.740714" elapsed="0.000292"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:59:34.741529" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:59:34.741166" elapsed="0.000389"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:59:34.741965" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:59:34.741725" elapsed="0.000285"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:59:34.742469" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:59:34.742167" elapsed="0.000328"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:59:34.749400" elapsed="0.000309"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:59:34.759056" elapsed="0.000535"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:59:34.760518" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:59:34.759874" elapsed="0.000755"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:59:34.763068" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:59:34.762587" elapsed="0.000528"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:59:34.763231" elapsed="0.000074"/>
</return>
<msg time="2026-04-08T00:59:34.763574" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:59:34.760969" elapsed="0.002713"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:59:34.764845" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:59:34.763999" elapsed="0.000954"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:59:34.766278" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:59:34.765354" elapsed="0.001035"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:59:34.767457" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:59:34.781054" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:59:34.766850" elapsed="0.017678">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:34.785235" elapsed="0.000036"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:34.785748" elapsed="0.000032"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:34.786273" elapsed="0.000032"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:34.786716" elapsed="0.000031"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:34.787294" elapsed="0.000032"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:34.787760" elapsed="0.000031"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:34.789542" elapsed="0.000078"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:34.791109" elapsed="0.000102"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:34.792625" elapsed="0.000077"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:59:34.788221" elapsed="0.004533"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:59:34.788004" elapsed="0.004813"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:34.793023" elapsed="0.000021"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:59:34.793208" elapsed="0.000019"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:59:34.758281" elapsed="0.035057">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:59:34.793409" elapsed="0.000015"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T00:59:34.747072" elapsed="0.046437">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:34.793689" elapsed="0.000021"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:34.798483" elapsed="0.000028"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:34.798682" elapsed="0.000021"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T00:59:34.798747" elapsed="0.000016"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T00:59:34.737609" elapsed="0.061246">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:59:34.798972" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:59:34.799015" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:59:34.737011" elapsed="0.062028"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T00:59:34.799309" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:59:34.799184" elapsed="0.000168"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:34.799146" elapsed="0.000229"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:59:34.800789" elapsed="0.000210"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:59:34.801488" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:59:34.801155" elapsed="0.000359"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:59:34.802548" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:59:34.802042" elapsed="0.000533"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:59:34.802623" elapsed="0.000031"/>
</return>
<msg time="2026-04-08T00:59:34.802778" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:59:34.801699" elapsed="0.001104"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:59:34.803351" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:59:34.802964" elapsed="0.000414"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:59:34.803899" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:59:34.803536" elapsed="0.000389"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:59:34.804309" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:59:34.813339" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:59:34.804086" elapsed="0.011630">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:34.816014" elapsed="0.000033"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:34.816286" elapsed="0.000030"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:34.816523" elapsed="0.000028"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:34.816756" elapsed="0.000028"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:34.816994" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:34.817246" elapsed="0.000030"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:34.817607" elapsed="0.000029"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:34.817848" elapsed="0.000028"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:34.818074" elapsed="0.000029"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:59:34.817427" elapsed="0.000721"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:59:34.817336" elapsed="0.000876"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:34.818410" elapsed="0.000028"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:59:34.818491" elapsed="0.000021"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:59:34.800239" elapsed="0.018400">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:59:34.818810" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:59:34.818870" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:59:34.799531" elapsed="0.019372"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T00:59:34.819863" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T00:59:34.819413" elapsed="0.000534">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T00:59:34.819076" elapsed="0.000996">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T00:59:34.819047" elapsed="0.001072">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T00:59:34.820204" elapsed="0.000024"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:59:34.736449" elapsed="0.083897">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:34.820597" elapsed="0.000030"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:34.820829" elapsed="0.000029"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T00:59:34.820915" elapsed="0.000020"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T00:59:34.733806" elapsed="0.087247">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:34.821314" elapsed="0.000030"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:34.821567" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:34.821804" elapsed="0.000027"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:34.822028" elapsed="0.000028"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:34.822282" elapsed="0.000029"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:34.822515" elapsed="0.000028"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T00:59:34.822598" elapsed="0.000021"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T00:59:34.730801" elapsed="0.091934">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:59:35.854385" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:59:35.853874" elapsed="0.000545"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:59:35.854908" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:59:35.854592" elapsed="0.000342"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:59:35.854982" elapsed="0.000042"/>
</return>
<msg time="2026-04-08T00:59:35.855158" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:59:35.853459" elapsed="0.001739"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T00:59:35.859928" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T00:59:35.859739" elapsed="0.000281"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:59:35.860195" elapsed="0.000200"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:59:35.860771" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:59:35.860552" elapsed="0.000246"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:59:35.861266" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:59:35.860988" elapsed="0.000320"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:59:35.861461" elapsed="0.000197"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:59:35.862025" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:59:35.861815" elapsed="0.000236"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:59:35.862491" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:59:35.862240" elapsed="0.000294"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:59:35.863035" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:59:35.862689" elapsed="0.000373"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:59:35.863491" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:59:35.863251" elapsed="0.000285"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:59:35.863985" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:59:35.863692" elapsed="0.000319"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:59:35.870840" elapsed="0.000299"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:59:35.880552" elapsed="0.000425"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:59:35.881894" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:59:35.881263" elapsed="0.000742"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:59:35.884390" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:59:35.883898" elapsed="0.000538"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:59:35.884512" elapsed="0.000066"/>
</return>
<msg time="2026-04-08T00:59:35.884819" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:59:35.882358" elapsed="0.002570"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:59:35.886115" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:59:35.885272" elapsed="0.000973"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:59:35.887536" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:59:35.886623" elapsed="0.001021"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:59:35.888545" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:59:35.903039" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:59:35.888099" elapsed="0.018161">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:35.906856" elapsed="0.000034"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:35.907378" elapsed="0.000031"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:35.907868" elapsed="0.000029"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:35.908325" elapsed="0.000031"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:35.908867" elapsed="0.000031"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:35.909367" elapsed="0.000089"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:35.911277" elapsed="0.000078"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:35.912755" elapsed="0.000078"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:35.914355" elapsed="0.000082"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:59:35.909874" elapsed="0.004633"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:59:35.909675" elapsed="0.004920"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:35.914893" elapsed="0.000021"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:59:35.915059" elapsed="0.000019"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:59:35.879762" elapsed="0.035439">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:59:35.915275" elapsed="0.000016"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T00:59:35.868527" elapsed="0.046851">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:35.915557" elapsed="0.000021"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:35.920132" elapsed="0.000031"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:35.920347" elapsed="0.000021"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T00:59:35.920415" elapsed="0.000015"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T00:59:35.859196" elapsed="0.061325">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:59:35.920636" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:59:35.920680" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:59:35.858619" elapsed="0.062085"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T00:59:35.920920" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:59:35.920801" elapsed="0.000161"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:35.920780" elapsed="0.000205"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:59:35.922641" elapsed="0.000215"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:59:35.923349" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:59:35.923014" elapsed="0.000361"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:59:35.924338" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:59:35.923908" elapsed="0.000457"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:59:35.924412" elapsed="0.000032"/>
</return>
<msg time="2026-04-08T00:59:35.924564" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:59:35.923558" elapsed="0.001065"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:59:35.925183" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:59:35.924789" elapsed="0.000422"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:59:35.925719" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:59:35.925372" elapsed="0.000373"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:59:35.926111" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:59:35.933920" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:59:35.925908" elapsed="0.009760">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:35.935855" elapsed="0.000022"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:35.936029" elapsed="0.000020"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:35.936215" elapsed="0.000022"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:35.936385" elapsed="0.000020"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:35.936556" elapsed="0.000020"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:35.936719" elapsed="0.000022"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:35.936984" elapsed="0.000020"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:35.937162" elapsed="0.000044"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:35.937353" elapsed="0.000021"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:59:35.936853" elapsed="0.000554"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:59:35.936787" elapsed="0.000646"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:35.937574" elapsed="0.000020"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:59:35.937632" elapsed="0.000016"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:59:35.921770" elapsed="0.015969">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:59:35.937851" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:59:35.937894" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:59:35.921137" elapsed="0.016780"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T00:59:35.938584" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T00:59:35.938234" elapsed="0.000413">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T00:59:35.937999" elapsed="0.000709">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T00:59:35.937980" elapsed="0.000760">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T00:59:35.938798" elapsed="0.000019"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:59:35.858051" elapsed="0.080867">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:35.939147" elapsed="0.000040"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:35.939340" elapsed="0.000021"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T00:59:35.939403" elapsed="0.000015"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T00:59:35.855497" elapsed="0.084006">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:35.939673" elapsed="0.000022"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:35.939853" elapsed="0.000021"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:35.940024" elapsed="0.000020"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:35.940204" elapsed="0.000021"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:35.940374" elapsed="0.000020"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:35.940540" elapsed="0.000020"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T00:59:35.940602" elapsed="0.000015"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T00:59:35.852642" elapsed="0.088057">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:59:36.972868" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:59:36.972399" elapsed="0.000502"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:59:36.973405" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:59:36.973073" elapsed="0.000359"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:59:36.973480" elapsed="0.000039"/>
</return>
<msg time="2026-04-08T00:59:36.973650" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:59:36.971990" elapsed="0.001685"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T00:59:36.978446" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T00:59:36.978242" elapsed="0.000231"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:59:36.978630" elapsed="0.000192"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:59:36.979211" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:59:36.978978" elapsed="0.000260"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:59:36.979693" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:59:36.979435" elapsed="0.000299"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:59:36.979885" elapsed="0.000181"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:59:36.980450" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:59:36.980240" elapsed="0.000236"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:59:36.980977" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:59:36.980724" elapsed="0.000295"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:59:36.981544" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:59:36.981198" elapsed="0.000372"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:59:36.981981" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:59:36.981743" elapsed="0.000281"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:59:36.982520" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:59:36.982197" elapsed="0.000349"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:59:36.991052" elapsed="0.000327"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:59:37.000634" elapsed="0.000417"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:59:37.001911" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:59:37.001338" elapsed="0.000682"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:59:37.004425" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:59:37.003943" elapsed="0.000527"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:59:37.004545" elapsed="0.000062"/>
</return>
<msg time="2026-04-08T00:59:37.004853" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:59:37.002419" elapsed="0.002540"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:59:37.006092" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:59:37.005293" elapsed="0.000926"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:59:37.007569" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:59:37.006628" elapsed="0.001051"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:59:37.008578" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:59:37.022616" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:59:37.008138" elapsed="0.016762">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:37.025349" elapsed="0.000024"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:37.025706" elapsed="0.000022"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:37.026059" elapsed="0.000022"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:37.026393" elapsed="0.000022"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:37.026783" elapsed="0.000021"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:37.027126" elapsed="0.000022"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:37.028627" elapsed="0.000074"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:37.030065" elapsed="0.000076"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:37.031525" elapsed="0.000077"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:59:37.027457" elapsed="0.004213"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:59:37.027318" elapsed="0.004438"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:37.032038" elapsed="0.000030"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:59:37.032292" elapsed="0.000026"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:59:36.999843" elapsed="0.032626">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:59:37.032624" elapsed="0.000023"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T00:59:36.988721" elapsed="0.044050">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:37.033034" elapsed="0.000030"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:37.038599" elapsed="0.000027"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:37.038798" elapsed="0.000021"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T00:59:37.038866" elapsed="0.000015"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T00:59:36.977651" elapsed="0.061337">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:59:37.039108" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:59:37.039154" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:59:36.977066" elapsed="0.062129"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T00:59:37.039550" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:59:37.039287" elapsed="0.000309"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:37.039266" elapsed="0.000353"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:59:37.040951" elapsed="0.000309"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:59:37.041736" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:59:37.041423" elapsed="0.000339"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:59:37.042714" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:59:37.042313" elapsed="0.000427"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:59:37.042788" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:59:37.042938" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:59:37.041952" elapsed="0.001010"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:59:37.043548" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:59:37.043151" elapsed="0.000423"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:59:37.044082" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:59:37.043734" elapsed="0.000373"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:59:37.044491" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:59:37.052345" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:59:37.044291" elapsed="0.010420">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:37.054970" elapsed="0.000031"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:37.055263" elapsed="0.000085"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:37.055565" elapsed="0.000029"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:37.055799" elapsed="0.000028"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:37.056037" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:37.056292" elapsed="0.000029"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:37.056660" elapsed="0.000029"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:37.056905" elapsed="0.000028"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:37.057135" elapsed="0.000049"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:59:37.056474" elapsed="0.000758"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:59:37.056382" elapsed="0.000886"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:37.057466" elapsed="0.000028"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:59:37.057548" elapsed="0.000021"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:59:37.040404" elapsed="0.017292">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:59:37.057863" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:59:37.057925" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:59:37.039774" elapsed="0.018185"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T00:59:37.058900" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T00:59:37.058451" elapsed="0.000536">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T00:59:37.058075" elapsed="0.000998">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T00:59:37.058049" elapsed="0.001070">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T00:59:37.059241" elapsed="0.000025"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:59:36.976511" elapsed="0.082875">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:37.059635" elapsed="0.000029"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:37.059847" elapsed="0.000020"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T00:59:37.059908" elapsed="0.000014"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T00:59:36.973972" elapsed="0.086033">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:37.060190" elapsed="0.000022"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:37.060371" elapsed="0.000021"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:37.060659" elapsed="0.000058"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:37.060871" elapsed="0.000020"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:37.061038" elapsed="0.000019"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:37.061226" elapsed="0.000021"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T00:59:37.061289" elapsed="0.000015"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T00:59:36.971216" elapsed="0.090171">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:59:38.094828" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:59:38.094364" elapsed="0.000497"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:59:38.095361" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:59:38.095030" elapsed="0.000357"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:59:38.095434" elapsed="0.000038"/>
</return>
<msg time="2026-04-08T00:59:38.095602" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:59:38.093958" elapsed="0.001669"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T00:59:38.100374" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T00:59:38.100184" elapsed="0.000217"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:59:38.100557" elapsed="0.000192"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:59:38.101117" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:59:38.100905" elapsed="0.000239"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:59:38.101642" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:59:38.101356" elapsed="0.000328"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:59:38.101835" elapsed="0.000181"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:59:38.102407" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:59:38.102187" elapsed="0.000246"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:59:38.102863" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:59:38.102606" elapsed="0.000298"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:59:38.103417" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:59:38.103058" elapsed="0.000384"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:59:38.103845" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:59:38.103611" elapsed="0.000278"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:59:38.104341" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:59:38.104041" elapsed="0.000326"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:59:38.111354" elapsed="0.000301"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:59:38.120906" elapsed="0.000448"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:59:38.122279" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:59:38.121664" elapsed="0.000724"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:59:38.124878" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:59:38.124390" elapsed="0.000536"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:59:38.125002" elapsed="0.000066"/>
</return>
<msg time="2026-04-08T00:59:38.125333" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:59:38.122780" elapsed="0.002666"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:59:38.126663" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:59:38.125790" elapsed="0.000987"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:59:38.128097" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:59:38.127179" elapsed="0.001043"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:59:38.129121" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:59:38.142727" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:59:38.128691" elapsed="0.017373">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:38.146696" elapsed="0.000033"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:38.147225" elapsed="0.000032"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:38.147723" elapsed="0.000030"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:38.148161" elapsed="0.000048"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:38.148724" elapsed="0.000030"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:38.149186" elapsed="0.000036"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:38.151080" elapsed="0.000100"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:38.152571" elapsed="0.000077"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:38.154063" elapsed="0.000078"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:59:38.149626" elapsed="0.004668"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:59:38.149434" elapsed="0.004947"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:38.154669" elapsed="0.000031"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:59:38.154895" elapsed="0.000020"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:59:38.120121" elapsed="0.034901">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:59:38.155244" elapsed="0.000018"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T00:59:38.108907" elapsed="0.046445">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:38.155537" elapsed="0.000027"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:38.160417" elapsed="0.000028"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:38.160662" elapsed="0.000022"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T00:59:38.160729" elapsed="0.000016"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T00:59:38.099610" elapsed="0.061226">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:59:38.160949" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:59:38.160993" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:59:38.099034" elapsed="0.061982"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T00:59:38.161244" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:59:38.161108" elapsed="0.000178"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:38.161086" elapsed="0.000224"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:59:38.162736" elapsed="0.000212"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:59:38.163434" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:59:38.163106" elapsed="0.000354"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:59:38.164449" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:59:38.163995" elapsed="0.000481"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:59:38.164524" elapsed="0.000031"/>
</return>
<msg time="2026-04-08T00:59:38.164677" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:59:38.163645" elapsed="0.001057"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:59:38.165284" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:59:38.164865" elapsed="0.000447"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:59:38.165821" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:59:38.165474" elapsed="0.000373"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:59:38.166272" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:59:38.175536" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:59:38.166011" elapsed="0.011959">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:38.178337" elapsed="0.000040"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:38.178606" elapsed="0.000029"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:38.178841" elapsed="0.000029"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:38.179076" elapsed="0.000028"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:38.179341" elapsed="0.000029"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:38.179575" elapsed="0.000028"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:38.179954" elapsed="0.000029"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:38.180227" elapsed="0.000030"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:38.180520" elapsed="0.000030"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:59:38.179758" elapsed="0.000839"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:59:38.179664" elapsed="0.000971"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:38.180840" elapsed="0.000029"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:59:38.180924" elapsed="0.000022"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:59:38.162150" elapsed="0.018925">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:59:38.181264" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:59:38.181327" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:59:38.161464" elapsed="0.019895"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T00:59:38.182269" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T00:59:38.181786" elapsed="0.000571">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T00:59:38.181477" elapsed="0.000967">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T00:59:38.181450" elapsed="0.001041">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T00:59:38.182557" elapsed="0.000022"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:59:38.098476" elapsed="0.084217">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:38.182942" elapsed="0.000030"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:38.183206" elapsed="0.000030"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T00:59:38.183294" elapsed="0.000021"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T00:59:38.095928" elapsed="0.087503">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:38.183679" elapsed="0.000029"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:38.183931" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:38.184191" elapsed="0.000029"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:38.184431" elapsed="0.000028"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:38.184668" elapsed="0.000027"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:38.184900" elapsed="0.000027"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T00:59:38.184984" elapsed="0.000020"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T00:59:38.093185" elapsed="0.091936">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:59:39.218232" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:59:39.217737" elapsed="0.000529"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:59:39.218762" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:59:39.218444" elapsed="0.000345"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:59:39.218838" elapsed="0.000039"/>
</return>
<msg time="2026-04-08T00:59:39.219085" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:59:39.217344" elapsed="0.001774"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T00:59:39.224002" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T00:59:39.223808" elapsed="0.000222"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:59:39.224206" elapsed="0.000198"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:59:39.224784" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:59:39.224567" elapsed="0.000243"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:59:39.225285" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:59:39.225003" elapsed="0.000325"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:59:39.225483" elapsed="0.000187"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:59:39.226064" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:59:39.225829" elapsed="0.000268"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:59:39.226555" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:59:39.226297" elapsed="0.000300"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:59:39.227109" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:59:39.226757" elapsed="0.000421"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:59:39.227610" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:59:39.227363" elapsed="0.000293"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:59:39.228106" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:59:39.227813" elapsed="0.000319"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:59:39.235081" elapsed="0.000371"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:59:39.244919" elapsed="0.000479"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:59:39.246286" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:59:39.245669" elapsed="0.000727"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:59:39.248803" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:59:39.248330" elapsed="0.000518"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:59:39.248929" elapsed="0.000073"/>
</return>
<msg time="2026-04-08T00:59:39.249265" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:59:39.246745" elapsed="0.002634"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:59:39.250572" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:59:39.249687" elapsed="0.000992"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:59:39.252011" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:59:39.251064" elapsed="0.001053"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:59:39.253035" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:59:39.267536" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:59:39.252598" elapsed="0.018729">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:39.272024" elapsed="0.000037"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:39.272594" elapsed="0.000033"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:39.273128" elapsed="0.000055"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:39.273632" elapsed="0.000032"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:39.274248" elapsed="0.000035"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:39.274717" elapsed="0.000031"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:39.276740" elapsed="0.000082"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:39.278444" elapsed="0.000090"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:39.280004" elapsed="0.000058"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:59:39.275275" elapsed="0.004836"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:59:39.274976" elapsed="0.005332"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:39.280520" elapsed="0.000022"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:59:39.280690" elapsed="0.000019"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:59:39.244091" elapsed="0.036746">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:59:39.280911" elapsed="0.000015"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T00:59:39.232733" elapsed="0.048283">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:39.281219" elapsed="0.000022"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:39.286215" elapsed="0.000029"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:39.286419" elapsed="0.000022"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T00:59:39.286487" elapsed="0.000016"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T00:59:39.223221" elapsed="0.063384">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:59:39.286736" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:59:39.286783" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:59:39.222599" elapsed="0.064208"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T00:59:39.287104" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:59:39.286968" elapsed="0.000180"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:39.286945" elapsed="0.000244"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:59:39.288647" elapsed="0.000216"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:59:39.289360" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:59:39.289022" elapsed="0.000364"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:59:39.290378" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:59:39.289918" elapsed="0.000488"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:59:39.290454" elapsed="0.000032"/>
</return>
<msg time="2026-04-08T00:59:39.290609" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:59:39.289571" elapsed="0.001063"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:59:39.291197" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:59:39.290798" elapsed="0.000426"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:59:39.291787" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:59:39.291386" elapsed="0.000428"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:59:39.292233" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:59:39.301471" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:59:39.291992" elapsed="0.012113">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:39.304417" elapsed="0.000036"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:39.304679" elapsed="0.000030"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:39.304935" elapsed="0.000030"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:39.305208" elapsed="0.000033"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:39.305470" elapsed="0.000029"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:39.305714" elapsed="0.000029"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:39.306118" elapsed="0.000029"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:39.306401" elapsed="0.000030"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:39.306648" elapsed="0.000030"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:59:39.305922" elapsed="0.000804"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:59:39.305814" elapsed="0.000951"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:39.306975" elapsed="0.000030"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:59:39.307064" elapsed="0.000023"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:59:39.288063" elapsed="0.019192">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:59:39.307430" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:59:39.307494" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:59:39.287348" elapsed="0.020180"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T00:59:39.308631" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T00:59:39.308120" elapsed="0.000599">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T00:59:39.307726" elapsed="0.001084">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T00:59:39.307697" elapsed="0.001159">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T00:59:39.308924" elapsed="0.000022"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:59:39.222023" elapsed="0.087047">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:39.309360" elapsed="0.000032"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:39.309613" elapsed="0.000030"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T00:59:39.309704" elapsed="0.000022"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T00:59:39.219446" elapsed="0.090405">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:39.310105" elapsed="0.000030"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:39.310397" elapsed="0.000030"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:39.310652" elapsed="0.000030"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:39.310893" elapsed="0.000029"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:39.311141" elapsed="0.000049"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:39.311410" elapsed="0.000029"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T00:59:39.311500" elapsed="0.000022"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T00:59:39.216529" elapsed="0.095117">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:59:40.342361" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:59:40.341851" elapsed="0.000545"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:59:40.342983" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:59:40.342617" elapsed="0.000393"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:59:40.343062" elapsed="0.000044"/>
</return>
<msg time="2026-04-08T00:59:40.343262" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:59:40.341445" elapsed="0.001842"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T00:59:40.348417" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T00:59:40.348213" elapsed="0.000232"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:59:40.348605" elapsed="0.000196"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:59:40.349196" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:59:40.348966" elapsed="0.000258"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:59:40.349706" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:59:40.349430" elapsed="0.000319"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:59:40.349902" elapsed="0.000187"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:59:40.350488" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:59:40.350264" elapsed="0.000251"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:59:40.350946" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:59:40.350691" elapsed="0.000297"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:59:40.351520" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:59:40.351147" elapsed="0.000456"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:59:40.352039" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:59:40.351792" elapsed="0.000291"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:59:40.352550" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:59:40.352258" elapsed="0.000318"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:59:40.359416" elapsed="0.000343"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:59:40.369920" elapsed="0.000474"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:59:40.371293" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:59:40.370670" elapsed="0.000735"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:59:40.373978" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:59:40.373487" elapsed="0.000538"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:59:40.374105" elapsed="0.000092"/>
</return>
<msg time="2026-04-08T00:59:40.374452" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:59:40.371785" elapsed="0.002776"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:59:40.375815" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:59:40.374879" elapsed="0.001045"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:59:40.377462" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:59:40.376338" elapsed="0.001234"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:59:40.378543" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:59:40.391655" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:59:40.378055" elapsed="0.018330">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:40.397308" elapsed="0.000055"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:40.398048" elapsed="0.000046"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:40.398775" elapsed="0.000049"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:40.399478" elapsed="0.000047"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:40.400474" elapsed="0.000048"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:40.401068" elapsed="0.000031"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:40.402907" elapsed="0.000082"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:40.404493" elapsed="0.000080"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:40.405658" elapsed="0.000059"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:59:40.401564" elapsed="0.004204"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:59:40.401348" elapsed="0.004486"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:40.406045" elapsed="0.000021"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:59:40.406451" elapsed="0.000023"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:59:40.369075" elapsed="0.037520">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:59:40.406669" elapsed="0.000016"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T00:59:40.357072" elapsed="0.049703">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:40.406962" elapsed="0.000021"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:40.411873" elapsed="0.000030"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:40.412114" elapsed="0.000022"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T00:59:40.412197" elapsed="0.000017"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T00:59:40.347486" elapsed="0.064833">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:59:40.412456" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:59:40.412502" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:59:40.346869" elapsed="0.065656"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T00:59:40.412755" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:59:40.412623" elapsed="0.000175"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:40.412600" elapsed="0.000222"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:59:40.414321" elapsed="0.000225"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:59:40.415033" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:59:40.414706" elapsed="0.000354"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:59:40.416377" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:59:40.415899" elapsed="0.000506"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:59:40.416512" elapsed="0.000033"/>
</return>
<msg time="2026-04-08T00:59:40.416676" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:59:40.415547" elapsed="0.001155"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:59:40.417289" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:59:40.416869" elapsed="0.000448"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:59:40.417841" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:59:40.417481" elapsed="0.000387"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:59:40.418282" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:59:40.425235" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:59:40.418038" elapsed="0.009596">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:40.427917" elapsed="0.000034"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:40.428234" elapsed="0.000031"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:40.428478" elapsed="0.000029"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:40.428718" elapsed="0.000028"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:40.428979" elapsed="0.000029"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:40.429239" elapsed="0.000029"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:40.429626" elapsed="0.000029"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:40.429873" elapsed="0.000028"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:40.430102" elapsed="0.000029"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:59:40.429441" elapsed="0.000758"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:59:40.429336" elapsed="0.000902"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:40.430441" elapsed="0.000028"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:59:40.430527" elapsed="0.000023"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:59:40.413704" elapsed="0.016984">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:59:40.430864" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:59:40.430934" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:59:40.412981" elapsed="0.017986"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T00:59:40.431921" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T00:59:40.431438" elapsed="0.000570">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T00:59:40.431096" elapsed="0.001042">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T00:59:40.431067" elapsed="0.001143">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T00:59:40.432277" elapsed="0.000022"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:59:40.346295" elapsed="0.086122">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:40.432755" elapsed="0.000031"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:40.432975" elapsed="0.000020"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T00:59:40.433038" elapsed="0.000015"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T00:59:40.343636" elapsed="0.089504">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:40.433361" elapsed="0.000029"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:40.433607" elapsed="0.000024"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:40.433786" elapsed="0.000020"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:40.433950" elapsed="0.000020"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:40.434118" elapsed="0.000021"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:40.434306" elapsed="0.000021"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T00:59:40.434370" elapsed="0.000015"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T00:59:40.340504" elapsed="0.093970">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:59:41.466251" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:59:41.465700" elapsed="0.000588"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:59:41.466893" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:59:41.466487" elapsed="0.000435"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:59:41.466973" elapsed="0.000044"/>
</return>
<msg time="2026-04-08T00:59:41.467150" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:59:41.465297" elapsed="0.001896"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T00:59:41.472142" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T00:59:41.471937" elapsed="0.000250"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:59:41.472348" elapsed="0.000201"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:59:41.472956" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:59:41.472712" elapsed="0.000278"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:59:41.473476" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:59:41.473206" elapsed="0.000313"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:59:41.473673" elapsed="0.000228"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:59:41.474333" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:59:41.474097" elapsed="0.000263"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:59:41.474917" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:59:41.474616" elapsed="0.000345"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:59:41.475505" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:59:41.475128" elapsed="0.000404"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:59:41.475950" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:59:41.475707" elapsed="0.000289"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:59:41.476494" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:59:41.476179" elapsed="0.000342"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:59:41.484991" elapsed="0.000347"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:59:41.494829" elapsed="0.000486"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:59:41.496196" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:59:41.495585" elapsed="0.000722"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:59:41.498659" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:59:41.498185" elapsed="0.000521"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:59:41.498785" elapsed="0.000069"/>
</return>
<msg time="2026-04-08T00:59:41.499145" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:59:41.496649" elapsed="0.002627"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:59:41.500437" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:59:41.499596" elapsed="0.000955"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:59:41.501865" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:59:41.500930" elapsed="0.001044"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:59:41.502898" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:59:41.516103" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:59:41.502465" elapsed="0.018897">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:41.522350" elapsed="0.000055"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:41.523249" elapsed="0.000051"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:41.523993" elapsed="0.000022"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:41.524327" elapsed="0.000022"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:41.524721" elapsed="0.000021"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:41.525035" elapsed="0.000021"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:41.526340" elapsed="0.000056"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:41.527400" elapsed="0.000056"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:41.528435" elapsed="0.000056"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:59:41.525371" elapsed="0.003168"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:59:41.525228" elapsed="0.003373"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:41.528805" elapsed="0.000022"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:59:41.528977" elapsed="0.000019"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:59:41.494005" elapsed="0.035100">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:59:41.529244" elapsed="0.000017"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T00:59:41.482582" elapsed="0.046769">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:41.529535" elapsed="0.000021"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:41.534396" elapsed="0.000029"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:41.534601" elapsed="0.000021"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T00:59:41.534668" elapsed="0.000015"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T00:59:41.471359" elapsed="0.063417">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:59:41.534896" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:59:41.534945" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:59:41.470698" elapsed="0.064274"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T00:59:41.535233" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:59:41.535066" elapsed="0.000212"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:41.535045" elapsed="0.000256"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:59:41.536665" elapsed="0.000214"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:59:41.537384" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:59:41.537040" elapsed="0.000372"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:59:41.538525" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:59:41.537966" elapsed="0.000587"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:59:41.538603" elapsed="0.000031"/>
</return>
<msg time="2026-04-08T00:59:41.538758" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:59:41.537602" elapsed="0.001188"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:59:41.539419" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:59:41.538969" elapsed="0.000478"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:59:41.539980" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:59:41.539617" elapsed="0.000391"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:59:41.540416" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:59:41.549453" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:59:41.540202" elapsed="0.011692">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:41.552235" elapsed="0.000034"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:41.552488" elapsed="0.000029"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:41.552726" elapsed="0.000029"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:41.552963" elapsed="0.000028"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:41.553231" elapsed="0.000030"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:41.553469" elapsed="0.000028"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:41.553842" elapsed="0.000029"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:41.554089" elapsed="0.000028"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:41.554343" elapsed="0.000030"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:59:41.553654" elapsed="0.000765"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:59:41.553560" elapsed="0.000896"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:41.554655" elapsed="0.000028"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:59:41.554737" elapsed="0.000022"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:59:41.536087" elapsed="0.018803">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:59:41.555062" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:59:41.555126" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:59:41.535457" elapsed="0.019724"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T00:59:41.556142" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T00:59:41.555682" elapsed="0.000600">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T00:59:41.555362" elapsed="0.001014">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T00:59:41.555329" elapsed="0.001092">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T00:59:41.556486" elapsed="0.000022"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:59:41.470120" elapsed="0.086506">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:41.556876" elapsed="0.000030"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:41.557112" elapsed="0.000029"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T00:59:41.557226" elapsed="0.000023"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T00:59:41.467496" elapsed="0.089872">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:41.557609" elapsed="0.000030"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:41.557919" elapsed="0.000030"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:41.558185" elapsed="0.000030"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:41.558422" elapsed="0.000031"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:41.558715" elapsed="0.000032"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:41.558956" elapsed="0.000029"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T00:59:41.559042" elapsed="0.000021"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T00:59:41.464464" elapsed="0.094740">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:59:42.591917" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:59:42.591434" elapsed="0.000516"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:59:42.592455" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:59:42.592124" elapsed="0.000357"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:59:42.592530" elapsed="0.000040"/>
</return>
<msg time="2026-04-08T00:59:42.592702" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:59:42.591019" elapsed="0.001709"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T00:59:42.597524" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T00:59:42.597330" elapsed="0.000221"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:59:42.597707" elapsed="0.000194"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:59:42.598288" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:59:42.598058" elapsed="0.000256"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:59:42.598771" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:59:42.598510" elapsed="0.000304"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:59:42.598965" elapsed="0.000184"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:59:42.599534" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:59:42.599323" elapsed="0.000238"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:59:42.599986" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:59:42.599736" elapsed="0.000292"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:59:42.600550" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:59:42.600200" elapsed="0.000377"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:59:42.601036" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:59:42.600751" elapsed="0.000333"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:59:42.601559" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:59:42.601267" elapsed="0.000318"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:59:42.608588" elapsed="0.000307"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:59:42.618269" elapsed="0.000488"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:59:42.619635" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:59:42.619028" elapsed="0.000717"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:59:42.622134" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:59:42.621665" elapsed="0.000535"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:59:42.622277" elapsed="0.000066"/>
</return>
<msg time="2026-04-08T00:59:42.622588" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:59:42.620082" elapsed="0.002615"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:59:42.623852" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:59:42.623009" elapsed="0.000952"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:59:42.625293" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:59:42.624366" elapsed="0.001054"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:59:42.626337" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:59:42.640753" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:59:42.625882" elapsed="0.020036">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:42.647071" elapsed="0.000055"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:42.647935" elapsed="0.000050"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:42.648771" elapsed="0.000049"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:42.649554" elapsed="0.000050"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:42.650211" elapsed="0.000023"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:42.650530" elapsed="0.000022"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:42.651897" elapsed="0.000057"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:42.652946" elapsed="0.000059"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:42.654015" elapsed="0.000055"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:59:42.650853" elapsed="0.003266"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:59:42.650707" elapsed="0.003493"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:42.654409" elapsed="0.000022"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:59:42.654578" elapsed="0.000020"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:59:42.617464" elapsed="0.037245">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:59:42.654781" elapsed="0.000016"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T00:59:42.606106" elapsed="0.048777">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:42.655117" elapsed="0.000022"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:42.659969" elapsed="0.000027"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:42.660186" elapsed="0.000022"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T00:59:42.660255" elapsed="0.000016"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T00:59:42.596743" elapsed="0.063620">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:59:42.660483" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:59:42.660527" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:59:42.596176" elapsed="0.064374"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T00:59:42.660767" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:59:42.660645" elapsed="0.000165"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:42.660623" elapsed="0.000210"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:59:42.662232" elapsed="0.000216"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:59:42.662919" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:59:42.662606" elapsed="0.000339"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:59:42.664031" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:59:42.663627" elapsed="0.000431"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:59:42.664106" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:59:42.664281" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:59:42.663130" elapsed="0.001176"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:59:42.664843" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:59:42.664469" elapsed="0.000400"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:59:42.665396" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:59:42.665029" elapsed="0.000393"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:59:42.665828" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:59:42.675444" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:59:42.665611" elapsed="0.013812">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:42.679843" elapsed="0.000052"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:42.680293" elapsed="0.000051"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:42.680701" elapsed="0.000049"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:42.681103" elapsed="0.000048"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:42.681564" elapsed="0.000065"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:42.681979" elapsed="0.000048"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:42.682639" elapsed="0.000147"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:42.683207" elapsed="0.000053"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:42.683617" elapsed="0.000049"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:59:42.682320" elapsed="0.001425"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:59:42.682131" elapsed="0.001679"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:42.684151" elapsed="0.000081"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:59:42.684329" elapsed="0.000038"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:59:42.661658" elapsed="0.022930">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:59:42.684863" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:59:42.684967" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:59:42.660991" elapsed="0.024033"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T00:59:42.686258" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T00:59:42.685840" elapsed="0.000480">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T00:59:42.685263" elapsed="0.001119">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T00:59:42.685213" elapsed="0.001201">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T00:59:42.686461" elapsed="0.000015"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:59:42.595605" elapsed="0.090955">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:42.686742" elapsed="0.000021"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:42.686912" elapsed="0.000020"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T00:59:42.686976" elapsed="0.000017"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T00:59:42.593033" elapsed="0.094046">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:42.687269" elapsed="0.000021"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:42.687452" elapsed="0.000021"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:42.687623" elapsed="0.000020"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:42.687788" elapsed="0.000020"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:42.687957" elapsed="0.000019"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:42.688122" elapsed="0.000020"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T00:59:42.688202" elapsed="0.000016"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T00:59:42.590223" elapsed="0.098082">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:59:43.721175" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:59:43.720681" elapsed="0.000529"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:59:43.721698" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:59:43.721383" elapsed="0.000341"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:59:43.721773" elapsed="0.000040"/>
</return>
<msg time="2026-04-08T00:59:43.721980" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:59:43.720284" elapsed="0.001725"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T00:59:43.726968" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T00:59:43.726734" elapsed="0.000261"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:59:43.727154" elapsed="0.000215"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:59:43.727739" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:59:43.727527" elapsed="0.000237"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:59:43.728238" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:59:43.727961" elapsed="0.000319"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:59:43.728432" elapsed="0.000182"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:59:43.728973" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:59:43.728768" elapsed="0.000230"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:59:43.729437" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:59:43.729190" elapsed="0.000287"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:59:43.729975" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:59:43.729634" elapsed="0.000366"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:59:43.730426" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:59:43.730188" elapsed="0.000281"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:59:43.730929" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:59:43.730621" elapsed="0.000334"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:59:43.737774" elapsed="0.000304"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:59:43.747349" elapsed="0.000423"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:59:43.748645" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:59:43.748043" elapsed="0.000712"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:59:43.751139" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:59:43.750632" elapsed="0.000716"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:59:43.751426" elapsed="0.000064"/>
</return>
<msg time="2026-04-08T00:59:43.751731" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:59:43.749091" elapsed="0.002750"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:59:43.752999" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:59:43.752192" elapsed="0.000916"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:59:43.754509" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:59:43.753575" elapsed="0.001045"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:59:43.755567" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:59:43.769087" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:59:43.755124" elapsed="0.019347">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:43.775632" elapsed="0.000054"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:43.776475" elapsed="0.000050"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:43.777302" elapsed="0.000050"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:43.778036" elapsed="0.000049"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:43.778977" elapsed="0.000095"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:43.779758" elapsed="0.000049"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:43.781197" elapsed="0.000056"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:43.782288" elapsed="0.000055"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:43.783339" elapsed="0.000055"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:59:43.780250" elapsed="0.003193"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:59:43.780088" elapsed="0.003418"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:43.783710" elapsed="0.000021"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:59:43.783877" elapsed="0.000018"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:59:43.746534" elapsed="0.037469">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:59:43.784073" elapsed="0.000015"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T00:59:43.735464" elapsed="0.048725">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:43.784371" elapsed="0.000021"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:43.789072" elapsed="0.000028"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:43.789288" elapsed="0.000021"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T00:59:43.789355" elapsed="0.000016"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T00:59:43.726187" elapsed="0.063276">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:59:43.789617" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:59:43.789662" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:59:43.725602" elapsed="0.064083"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T00:59:43.789893" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:59:43.789776" elapsed="0.000160"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:43.789755" elapsed="0.000203"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:59:43.791461" elapsed="0.000211"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:59:43.792134" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:59:43.791827" elapsed="0.000348"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:59:43.793114" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:59:43.792709" elapsed="0.000431"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:59:43.793205" elapsed="0.000031"/>
</return>
<msg time="2026-04-08T00:59:43.793355" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:59:43.792363" elapsed="0.001016"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:59:43.793911" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:59:43.793540" elapsed="0.000397"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:59:43.794553" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:59:43.794095" elapsed="0.000484"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:59:43.794945" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:59:43.804531" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:59:43.794743" elapsed="0.012983">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:43.808144" elapsed="0.000087"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:43.808576" elapsed="0.000046"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:43.808946" elapsed="0.000044"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:43.809352" elapsed="0.000047"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:43.809738" elapsed="0.000044"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:43.810100" elapsed="0.000044"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:43.810729" elapsed="0.000045"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:43.811119" elapsed="0.000096"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:43.811547" elapsed="0.000045"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:59:43.810435" elapsed="0.001230"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:59:43.810287" elapsed="0.001435"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:43.812031" elapsed="0.000044"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:59:43.812191" elapsed="0.000037"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:59:43.790877" elapsed="0.021559">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:59:43.812832" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:59:43.812931" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:59:43.790111" elapsed="0.022871"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T00:59:43.814444" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T00:59:43.813698" elapsed="0.000880">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T00:59:43.813204" elapsed="0.001512">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T00:59:43.813126" elapsed="0.001660">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T00:59:43.814886" elapsed="0.000035"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:59:43.725019" elapsed="0.090084">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:43.815585" elapsed="0.000050"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:43.815961" elapsed="0.000045"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T00:59:43.816066" elapsed="0.000014"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T00:59:43.722332" elapsed="0.093846">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:43.816352" elapsed="0.000021"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:43.816531" elapsed="0.000020"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:43.816701" elapsed="0.000019"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:43.816862" elapsed="0.000019"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:43.817029" elapsed="0.000022"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:43.817211" elapsed="0.000021"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T00:59:43.817273" elapsed="0.000014"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T00:59:43.719469" elapsed="0.097901">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:59:44.850381" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:59:44.849797" elapsed="0.000618"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:59:44.850912" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:59:44.850593" elapsed="0.000346"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:59:44.850986" elapsed="0.000040"/>
</return>
<msg time="2026-04-08T00:59:44.851178" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:59:44.849322" elapsed="0.001951"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T00:59:44.856053" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T00:59:44.855859" elapsed="0.000221"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:59:44.856255" elapsed="0.000199"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:59:44.856821" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:59:44.856611" elapsed="0.000235"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:59:44.857319" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:59:44.857037" elapsed="0.000323"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:59:44.857509" elapsed="0.000183"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:59:44.858052" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:59:44.857845" elapsed="0.000232"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:59:44.858567" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:59:44.858265" elapsed="0.000346"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:59:44.859110" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:59:44.858767" elapsed="0.000369"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:59:44.859561" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:59:44.859324" elapsed="0.000282"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:59:44.860067" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:59:44.859781" elapsed="0.000315"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:59:44.866900" elapsed="0.000328"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:59:44.876549" elapsed="0.000423"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:59:44.877838" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:59:44.877257" elapsed="0.000689"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:59:44.880329" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:59:44.879839" elapsed="0.000537"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:59:44.880451" elapsed="0.000065"/>
</return>
<msg time="2026-04-08T00:59:44.880756" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:59:44.878300" elapsed="0.002564"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:59:44.882051" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:59:44.881207" elapsed="0.000992"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:59:44.883516" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:59:44.882579" elapsed="0.001046"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:59:44.884568" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:59:44.899023" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:59:44.884110" elapsed="0.018362">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:44.903126" elapsed="0.000062"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:44.903674" elapsed="0.000031"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:44.904368" elapsed="0.000036"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:44.904833" elapsed="0.000031"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:44.905431" elapsed="0.000029"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:44.905871" elapsed="0.000030"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:44.907682" elapsed="0.000077"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:44.909215" elapsed="0.000079"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:44.910669" elapsed="0.000078"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:59:44.906348" elapsed="0.004466"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:59:44.906118" elapsed="0.004783"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:44.911213" elapsed="0.000031"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:59:44.911453" elapsed="0.000027"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:59:44.875753" elapsed="0.035881">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:59:44.911733" elapsed="0.000021"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T00:59:44.864611" elapsed="0.047313">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:44.912219" elapsed="0.000032"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:44.917431" elapsed="0.000029"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:44.917631" elapsed="0.000022"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T00:59:44.917699" elapsed="0.000015"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T00:59:44.855284" elapsed="0.062523">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:59:44.917929" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:59:44.917975" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:59:44.854700" elapsed="0.063299"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T00:59:44.918240" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:59:44.918095" elapsed="0.000187"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:44.918073" elapsed="0.000233"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:59:44.919716" elapsed="0.000336"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:59:44.920559" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:59:44.920231" elapsed="0.000355"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:59:44.921651" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:59:44.921233" elapsed="0.000447"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:59:44.921728" elapsed="0.000032"/>
</return>
<msg time="2026-04-08T00:59:44.921883" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:59:44.920816" elapsed="0.001092"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:59:44.922507" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:59:44.922090" elapsed="0.000445"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:59:44.923102" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:59:44.922704" elapsed="0.000425"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:59:44.923543" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:59:44.933102" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:59:44.923320" elapsed="0.012250">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:44.935838" elapsed="0.000033"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:44.936136" elapsed="0.000050"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:44.936402" elapsed="0.000029"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:44.936636" elapsed="0.000028"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:44.936881" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:44.937118" elapsed="0.000028"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:44.937514" elapsed="0.000029"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:44.937759" elapsed="0.000028"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:44.937989" elapsed="0.000028"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:59:44.937329" elapsed="0.000734"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:59:44.937233" elapsed="0.000867"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:44.938327" elapsed="0.000029"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:59:44.938412" elapsed="0.000021"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:59:44.919121" elapsed="0.019444">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:59:44.938762" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:59:44.938834" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:59:44.918463" elapsed="0.020405"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T00:59:44.939793" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T00:59:44.939329" elapsed="0.000550">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T00:59:44.938992" elapsed="0.000973">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T00:59:44.938964" elapsed="0.001078">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T00:59:44.940114" elapsed="0.000023"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:59:44.854128" elapsed="0.086214">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:44.940599" elapsed="0.000030"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:44.940834" elapsed="0.000028"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T00:59:44.940920" elapsed="0.000020"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T00:59:44.851583" elapsed="0.089476">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:44.941350" elapsed="0.000045"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:44.941635" elapsed="0.000029"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:44.941875" elapsed="0.000028"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:44.942107" elapsed="0.000027"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:44.942371" elapsed="0.000028"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:44.942604" elapsed="0.000027"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T00:59:44.942688" elapsed="0.000020"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T00:59:44.848437" elapsed="0.094391">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:59:45.974259" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:59:45.973769" elapsed="0.000524"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:59:45.974784" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:59:45.974467" elapsed="0.000343"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:59:45.974857" elapsed="0.000039"/>
</return>
<msg time="2026-04-08T00:59:45.975027" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:59:45.973374" elapsed="0.001678"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T00:59:45.979852" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T00:59:45.979663" elapsed="0.000216"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:59:45.980058" elapsed="0.000209"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:59:45.980633" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:59:45.980424" elapsed="0.000236"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:59:45.981195" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:59:45.980851" elapsed="0.000388"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:59:45.981392" elapsed="0.000185"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:59:45.981944" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:59:45.981734" elapsed="0.000236"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:59:45.982412" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:59:45.982145" elapsed="0.000308"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:59:45.982955" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:59:45.982610" elapsed="0.000371"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:59:45.983553" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:59:45.983153" elapsed="0.000443"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:59:45.984066" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:59:45.983750" elapsed="0.000342"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:59:45.992322" elapsed="0.000325"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:59:46.003822" elapsed="0.000547"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:59:46.005355" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:59:46.004676" elapsed="0.000792"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:59:46.007932" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:59:46.007449" elapsed="0.000530"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:59:46.008100" elapsed="0.000113"/>
</return>
<msg time="2026-04-08T00:59:46.008469" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:59:46.005826" elapsed="0.002750"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:59:46.009756" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:59:46.008890" elapsed="0.000976"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:59:46.011238" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:59:46.010273" elapsed="0.001076"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:59:46.012356" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:59:46.025857" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:59:46.011819" elapsed="0.020589">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:46.033387" elapsed="0.000032"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:46.033777" elapsed="0.000022"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:46.034142" elapsed="0.000039"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:46.034505" elapsed="0.000022"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:46.034906" elapsed="0.000022"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:46.035240" elapsed="0.000022"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:46.036585" elapsed="0.000057"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:46.037639" elapsed="0.000055"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:46.038760" elapsed="0.000070"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:59:46.035574" elapsed="0.003464"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:59:46.035421" elapsed="0.003707"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:46.039424" elapsed="0.000029"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:59:46.039641" elapsed="0.000024"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:59:46.002641" elapsed="0.037172">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:59:46.039910" elapsed="0.000020"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T00:59:45.989947" elapsed="0.050099">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:46.040367" elapsed="0.000029"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:46.046800" elapsed="0.000035"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:46.047059" elapsed="0.000027"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T00:59:46.047139" elapsed="0.000019"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T00:59:45.979094" elapsed="0.068174">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:59:46.047406" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:59:46.047453" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:59:45.978526" elapsed="0.068951"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T00:59:46.047707" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:59:46.047577" elapsed="0.000173"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:46.047555" elapsed="0.000218"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:59:46.049401" elapsed="0.000232"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:59:46.050127" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:59:46.049795" elapsed="0.000358"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:59:46.051138" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:59:46.050720" elapsed="0.000471"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:59:46.051241" elapsed="0.000032"/>
</return>
<msg time="2026-04-08T00:59:46.051400" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:59:46.050364" elapsed="0.001063"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:59:46.051980" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:59:46.051594" elapsed="0.000412"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:59:46.052590" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:59:46.052221" elapsed="0.000396"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:59:46.053077" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:59:46.062715" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:59:46.052842" elapsed="0.011818">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:46.064855" elapsed="0.000024"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:46.065046" elapsed="0.000026"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:46.065441" elapsed="0.000047"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:46.065827" elapsed="0.000047"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:46.066341" elapsed="0.000067"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:46.066857" elapsed="0.000064"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:46.067730" elapsed="0.000069"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:46.068363" elapsed="0.000072"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:46.068901" elapsed="0.000069"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:59:46.067310" elapsed="0.001763"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:59:46.067065" elapsed="0.002069"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:46.069425" elapsed="0.000032"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:59:46.069516" elapsed="0.000023"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:59:46.048796" elapsed="0.020880">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:59:46.069838" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:59:46.069899" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:59:46.047931" elapsed="0.022000"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T00:59:46.070896" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T00:59:46.070427" elapsed="0.000556">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T00:59:46.070067" elapsed="0.001016">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T00:59:46.070033" elapsed="0.001101">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T00:59:46.071224" elapsed="0.000023"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:59:45.977955" elapsed="0.093410">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:46.071618" elapsed="0.000030"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:46.071853" elapsed="0.000028"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T00:59:46.071940" elapsed="0.000020"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T00:59:45.975367" elapsed="0.096725">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:46.072469" elapsed="0.000032"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:46.072730" elapsed="0.000029"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:46.072972" elapsed="0.000028"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:46.073204" elapsed="0.000022"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:46.073380" elapsed="0.000020"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:46.073546" elapsed="0.000019"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T00:59:46.073606" elapsed="0.000015"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T00:59:45.972573" elapsed="0.101133">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:59:47.106573" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:59:47.105951" elapsed="0.000659"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:59:47.107114" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:59:47.106791" elapsed="0.000349"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:59:47.107210" elapsed="0.000047"/>
</return>
<msg time="2026-04-08T00:59:47.107389" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:59:47.105513" elapsed="0.001902"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T00:59:47.112447" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T00:59:47.112250" elapsed="0.000224"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:59:47.112631" elapsed="0.000196"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:59:47.113219" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:59:47.112987" elapsed="0.000259"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:59:47.113704" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:59:47.113443" elapsed="0.000303"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:59:47.113898" elapsed="0.000186"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:59:47.114469" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:59:47.114259" elapsed="0.000236"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:59:47.114918" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:59:47.114671" elapsed="0.000288"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:59:47.115493" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:59:47.115116" elapsed="0.000403"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:59:47.115978" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:59:47.115690" elapsed="0.000332"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:59:47.116484" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:59:47.116197" elapsed="0.000314"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:59:47.123681" elapsed="0.000502"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:59:47.133786" elapsed="0.000481"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:59:47.135241" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:59:47.134550" elapsed="0.000807"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:59:47.137860" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:59:47.137374" elapsed="0.000533"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:59:47.137989" elapsed="0.000095"/>
</return>
<msg time="2026-04-08T00:59:47.138413" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:59:47.135723" elapsed="0.002802"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:59:47.139772" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:59:47.138845" elapsed="0.001083"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:59:47.141311" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:59:47.140354" elapsed="0.001067"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:59:47.142430" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:59:47.156464" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:59:47.141899" elapsed="0.018161">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:47.161277" elapsed="0.000066"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:47.162258" elapsed="0.000056"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:47.163137" elapsed="0.000105"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:47.164144" elapsed="0.000103"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:47.165342" elapsed="0.000061"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:47.166256" elapsed="0.000061"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:47.168683" elapsed="0.000060"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:47.169757" elapsed="0.000056"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:47.170872" elapsed="0.000056"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:59:47.167042" elapsed="0.003935"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:59:47.166698" elapsed="0.004345"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:47.171270" elapsed="0.000022"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:59:47.171443" elapsed="0.000022"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:59:47.132888" elapsed="0.038713">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:59:47.171676" elapsed="0.000018"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T00:59:47.121234" elapsed="0.050548">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:47.172087" elapsed="0.000023"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:47.177034" elapsed="0.000031"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:47.177260" elapsed="0.000023"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T00:59:47.177331" elapsed="0.000016"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T00:59:47.111631" elapsed="0.065812">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:59:47.177577" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:59:47.177623" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:59:47.110901" elapsed="0.066746"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T00:59:47.177882" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:59:47.177746" elapsed="0.000179"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:47.177723" elapsed="0.000225"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:59:47.179549" elapsed="0.000218"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:59:47.180362" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:59:47.179926" elapsed="0.000462"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:59:47.181363" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:59:47.180922" elapsed="0.000468"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:59:47.181437" elapsed="0.000032"/>
</return>
<msg time="2026-04-08T00:59:47.181589" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:59:47.180575" elapsed="0.001039"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:59:47.182152" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:59:47.181776" elapsed="0.000519"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:59:47.182811" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:59:47.182459" elapsed="0.000379"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:59:47.183247" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:59:47.192873" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:59:47.183005" elapsed="0.011704">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:47.194938" elapsed="0.000027"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:47.195121" elapsed="0.000020"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:47.195459" elapsed="0.000021"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:47.195633" elapsed="0.000020"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:47.195810" elapsed="0.000020"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:47.195979" elapsed="0.000020"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:47.196598" elapsed="0.000021"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:47.196777" elapsed="0.000020"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:47.196946" elapsed="0.000020"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:59:47.196283" elapsed="0.000717"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:59:47.196195" elapsed="0.000834"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:47.197193" elapsed="0.000022"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:59:47.197259" elapsed="0.000018"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:59:47.178955" elapsed="0.018432">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:59:47.197521" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:59:47.197566" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:59:47.178107" elapsed="0.019483"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T00:59:47.198316" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T00:59:47.197925" elapsed="0.000453">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T00:59:47.197688" elapsed="0.000753">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T00:59:47.197665" elapsed="0.000811">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T00:59:47.198522" elapsed="0.000016"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:59:47.110344" elapsed="0.088281">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:47.198807" elapsed="0.000022"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:47.198977" elapsed="0.000021"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T00:59:47.199040" elapsed="0.000015"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T00:59:47.107717" elapsed="0.091423">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:47.199335" elapsed="0.000021"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:47.199520" elapsed="0.000021"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:47.199696" elapsed="0.000021"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:47.199863" elapsed="0.000020"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:47.200055" elapsed="0.000025"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:47.200253" elapsed="0.000021"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T00:59:47.200355" elapsed="0.000017"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T00:59:47.104578" elapsed="0.095883">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:59:48.234795" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:59:48.234296" elapsed="0.000534"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:59:48.235353" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:59:48.235005" elapsed="0.000375"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:59:48.235427" elapsed="0.000042"/>
</return>
<msg time="2026-04-08T00:59:48.235601" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:59:48.233863" elapsed="0.001763"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T00:59:48.240523" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T00:59:48.240327" elapsed="0.000224"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:59:48.240710" elapsed="0.000198"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:59:48.241330" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:59:48.241067" elapsed="0.000290"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:59:48.241810" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:59:48.241551" elapsed="0.000301"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:59:48.242002" elapsed="0.000205"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:59:48.242573" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:59:48.242365" elapsed="0.000233"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:59:48.243048" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:59:48.242771" elapsed="0.000326"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:59:48.243643" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:59:48.243297" elapsed="0.000372"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:59:48.244078" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:59:48.243840" elapsed="0.000282"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:59:48.244580" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:59:48.244294" elapsed="0.000311"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:59:48.252024" elapsed="0.000348"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:59:48.262250" elapsed="0.000509"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:59:48.263714" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:59:48.263036" elapsed="0.000840"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:59:48.266897" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:59:48.266399" elapsed="0.000547"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:59:48.267022" elapsed="0.000069"/>
</return>
<msg time="2026-04-08T00:59:48.267413" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:59:48.264253" elapsed="0.003269"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:59:48.268690" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:59:48.267836" elapsed="0.001031"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:59:48.270270" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:59:48.269300" elapsed="0.001104"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:59:48.271489" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:59:48.289523" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:59:48.270886" elapsed="0.024153">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:48.296141" elapsed="0.000070"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:48.296689" elapsed="0.000030"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:48.297209" elapsed="0.000031"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:48.297659" elapsed="0.000031"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:48.298269" elapsed="0.000037"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:48.298726" elapsed="0.000031"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:48.300616" elapsed="0.000081"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:48.302105" elapsed="0.000150"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:48.303673" elapsed="0.000080"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:59:48.299195" elapsed="0.004628"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:59:48.298974" elapsed="0.004934"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:48.304227" elapsed="0.000028"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:59:48.304415" elapsed="0.000019"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:59:48.261293" elapsed="0.043253">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:59:48.304618" elapsed="0.000016"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T00:59:48.249538" elapsed="0.055184">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:48.304906" elapsed="0.000021"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:48.309834" elapsed="0.000029"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:48.310039" elapsed="0.000022"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T00:59:48.310106" elapsed="0.000015"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T00:59:48.239729" elapsed="0.070682">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:59:48.310537" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:59:48.310582" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:59:48.239058" elapsed="0.071547"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T00:59:48.310830" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:59:48.310705" elapsed="0.000167"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:48.310681" elapsed="0.000214"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:59:48.312377" elapsed="0.000240"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:59:48.313092" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:59:48.312778" elapsed="0.000340"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:59:48.314335" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:59:48.313770" elapsed="0.000595"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:59:48.314414" elapsed="0.000049"/>
</return>
<msg time="2026-04-08T00:59:48.314616" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:59:48.313328" elapsed="0.001314"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:59:48.315205" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:59:48.314807" elapsed="0.000426"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:59:48.315771" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:59:48.315421" elapsed="0.000377"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:59:48.316192" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:59:48.327290" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:59:48.315962" elapsed="0.014171">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:48.330427" elapsed="0.000033"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:48.330675" elapsed="0.000029"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:48.330910" elapsed="0.000028"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:48.331148" elapsed="0.000053"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:48.331573" elapsed="0.000029"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:48.331809" elapsed="0.000028"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:48.332221" elapsed="0.000037"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:48.332603" elapsed="0.000028"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:48.332833" elapsed="0.000028"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:59:48.331996" elapsed="0.000910"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:59:48.331899" elapsed="0.001043"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:48.333139" elapsed="0.000048"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:59:48.333245" elapsed="0.000023"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:59:48.311748" elapsed="0.021650">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:59:48.333618" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:59:48.333680" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:59:48.311051" elapsed="0.022661"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T00:59:48.334613" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T00:59:48.334141" elapsed="0.000555">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T00:59:48.333831" elapsed="0.000951">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T00:59:48.333804" elapsed="0.001022">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T00:59:48.334889" elapsed="0.000023"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:59:48.238503" elapsed="0.096524">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:48.335300" elapsed="0.000032"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:48.335559" elapsed="0.000029"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T00:59:48.335646" elapsed="0.000021"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T00:59:48.235925" elapsed="0.099860">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:48.336025" elapsed="0.000028"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:48.336297" elapsed="0.000030"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:48.336540" elapsed="0.000028"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:48.336767" elapsed="0.000028"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:48.337000" elapsed="0.000028"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:48.337253" elapsed="0.000029"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T00:59:48.337339" elapsed="0.000020"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T00:59:48.233006" elapsed="0.104470">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:59:49.369245" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:59:49.368735" elapsed="0.000544"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:59:49.369903" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:59:49.369453" elapsed="0.000478"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:59:49.369978" elapsed="0.000041"/>
</return>
<msg time="2026-04-08T00:59:49.370186" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:59:49.368344" elapsed="0.001870"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T00:59:49.374940" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T00:59:49.374749" elapsed="0.000219"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:59:49.375124" elapsed="0.000244"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:59:49.375739" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:59:49.375527" elapsed="0.000238"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:59:49.376234" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:59:49.375959" elapsed="0.000317"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:59:49.376439" elapsed="0.000184"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:59:49.377006" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:59:49.376778" elapsed="0.000254"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:59:49.377481" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:59:49.377219" elapsed="0.000304"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:59:49.378018" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:59:49.377677" elapsed="0.000367"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:59:49.378514" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:59:49.378276" elapsed="0.000281"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:59:49.378991" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:59:49.378709" elapsed="0.000308"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:59:49.385913" elapsed="0.000340"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:59:49.395601" elapsed="0.000428"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:59:49.396916" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:59:49.396329" elapsed="0.000696"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:59:49.399484" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:59:49.398945" elapsed="0.000587"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:59:49.399606" elapsed="0.000073"/>
</return>
<msg time="2026-04-08T00:59:49.399924" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:59:49.397384" elapsed="0.002648"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:59:49.401210" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:59:49.400378" elapsed="0.000943"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:59:49.402669" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:59:49.401706" elapsed="0.001073"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:59:49.403710" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:59:49.420039" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:59:49.403264" elapsed="0.020156">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:49.424064" elapsed="0.000138"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:49.424717" elapsed="0.000033"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:49.425285" elapsed="0.000033"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:49.425777" elapsed="0.000032"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:49.426402" elapsed="0.000031"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:49.426881" elapsed="0.000032"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:49.428963" elapsed="0.000083"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:49.430607" elapsed="0.000083"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:49.431913" elapsed="0.000055"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:59:49.427391" elapsed="0.004626"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:59:49.427140" elapsed="0.004940"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:49.432313" elapsed="0.000023"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:59:49.432485" elapsed="0.000020"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:59:49.394692" elapsed="0.037924">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:59:49.432687" elapsed="0.000015"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T00:59:49.383622" elapsed="0.049167">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:49.432970" elapsed="0.000021"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:49.437721" elapsed="0.000029"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:49.437921" elapsed="0.000020"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T00:59:49.437986" elapsed="0.000015"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T00:59:49.374200" elapsed="0.063893">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:59:49.438268" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:59:49.438322" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:59:49.373597" elapsed="0.064751"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T00:59:49.438580" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:59:49.438456" elapsed="0.000166"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:49.438431" elapsed="0.000214"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:59:49.440133" elapsed="0.000229"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:59:49.440831" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:59:49.440519" elapsed="0.000338"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:59:49.441814" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:59:49.441406" elapsed="0.000435"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:59:49.441889" elapsed="0.000031"/>
</return>
<msg time="2026-04-08T00:59:49.442041" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:59:49.441043" elapsed="0.001023"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:59:49.442640" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:59:49.442256" elapsed="0.000411"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:59:49.443266" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:59:49.442827" elapsed="0.000468"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:59:49.443671" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:59:49.455884" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:59:49.443460" elapsed="0.016164">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:49.460044" elapsed="0.000051"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:49.460506" elapsed="0.000050"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:49.460890" elapsed="0.000045"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:49.461301" elapsed="0.000046"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:49.461684" elapsed="0.000044"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:49.462044" elapsed="0.000044"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:49.462707" elapsed="0.000059"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:49.463118" elapsed="0.000075"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:49.463554" elapsed="0.000050"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:59:49.462383" elapsed="0.001299"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:59:49.462212" elapsed="0.001533"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:49.464084" elapsed="0.000048"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:59:49.464258" elapsed="0.000039"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:59:49.439573" elapsed="0.024946">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:59:49.464797" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:59:49.464902" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:59:49.438800" elapsed="0.026157"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T00:59:49.466614" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T00:59:49.465763" elapsed="0.000998">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T00:59:49.465155" elapsed="0.001910">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T00:59:49.465111" elapsed="0.002036">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T00:59:49.467252" elapsed="0.000016"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:59:49.373022" elapsed="0.094329">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:49.467531" elapsed="0.000021"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:49.467701" elapsed="0.000020"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T00:59:49.467762" elapsed="0.000014"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T00:59:49.370516" elapsed="0.097344">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:49.468029" elapsed="0.000021"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:49.468228" elapsed="0.000021"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:49.468401" elapsed="0.000020"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:49.468564" elapsed="0.000019"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:49.468731" elapsed="0.000019"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:49.468894" elapsed="0.000019"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T00:59:49.468954" elapsed="0.000014"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T00:59:49.367543" elapsed="0.101510">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:59:50.500091" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:59:50.499622" elapsed="0.000501"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:59:50.500624" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:59:50.500312" elapsed="0.000339"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:59:50.500712" elapsed="0.000040"/>
</return>
<msg time="2026-04-08T00:59:50.500882" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:59:50.499224" elapsed="0.001683"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T00:59:50.505952" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T00:59:50.505519" elapsed="0.000460"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:59:50.506135" elapsed="0.000210"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:59:50.506782" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:59:50.506567" elapsed="0.000241"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:59:50.507269" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:59:50.506995" elapsed="0.000316"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:59:50.507461" elapsed="0.000182"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:59:50.508008" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:59:50.507802" elapsed="0.000231"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:59:50.508467" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:59:50.508221" elapsed="0.000286"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:59:50.509016" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:59:50.508661" elapsed="0.000381"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:59:50.509463" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:59:50.509228" elapsed="0.000278"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:59:50.509939" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:59:50.509656" elapsed="0.000308"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:59:50.518375" elapsed="0.000304"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:59:50.528635" elapsed="0.000519"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:59:50.530100" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:59:50.529507" elapsed="0.000720"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:59:50.532600" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:59:50.532117" elapsed="0.000530"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:59:50.532720" elapsed="0.000080"/>
</return>
<msg time="2026-04-08T00:59:50.533047" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:59:50.530573" elapsed="0.002579"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:59:50.534332" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:59:50.533502" elapsed="0.000942"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:59:50.535900" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:59:50.534973" elapsed="0.001037"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:59:50.536995" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:59:50.555134" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:59:50.536530" elapsed="0.023867">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:50.561418" elapsed="0.000034"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:50.561928" elapsed="0.000030"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:50.562488" elapsed="0.000031"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:50.562938" elapsed="0.000030"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:50.563514" elapsed="0.000030"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:50.563949" elapsed="0.000030"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:50.565786" elapsed="0.000079"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:50.567319" elapsed="0.000077"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:50.568820" elapsed="0.000109"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:59:50.564420" elapsed="0.004578"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:59:50.564225" elapsed="0.004891"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:50.569463" elapsed="0.000024"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:59:50.569935" elapsed="0.000021"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:59:50.527127" elapsed="0.042938">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:59:50.570135" elapsed="0.000015"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T00:59:50.516026" elapsed="0.054238">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:50.570447" elapsed="0.000021"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:50.575136" elapsed="0.000045"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:50.575354" elapsed="0.000022"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T00:59:50.575420" elapsed="0.000015"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T00:59:50.504954" elapsed="0.070571">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:59:50.575665" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:59:50.575708" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:59:50.504361" elapsed="0.071371"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T00:59:50.575951" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:59:50.575825" elapsed="0.000168"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:50.575803" elapsed="0.000214"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:59:50.577531" elapsed="0.000215"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:59:50.578230" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:59:50.577904" elapsed="0.000352"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:59:50.579213" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:59:50.578792" elapsed="0.000449"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:59:50.579289" elapsed="0.000068"/>
</return>
<msg time="2026-04-08T00:59:50.579515" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:59:50.578445" elapsed="0.001095"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:59:50.580079" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:59:50.579704" elapsed="0.000401"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:59:50.580737" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:59:50.580387" elapsed="0.000376"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:59:50.581145" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:59:50.591258" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:59:50.580940" elapsed="0.012901">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:50.594292" elapsed="0.000052"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:50.594687" elapsed="0.000046"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:50.595060" elapsed="0.000044"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:50.595473" elapsed="0.000047"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:50.595863" elapsed="0.000044"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:50.596268" elapsed="0.000047"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:50.596854" elapsed="0.000073"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:50.597306" elapsed="0.000047"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:50.597679" elapsed="0.000045"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:59:50.596559" elapsed="0.001237"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:59:50.596412" elapsed="0.001442"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:50.598197" elapsed="0.000048"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:59:50.598332" elapsed="0.000034"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:59:50.576956" elapsed="0.021614">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:59:50.598822" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:59:50.598920" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:59:50.576311" elapsed="0.022660"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T00:59:50.600410" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T00:59:50.599677" elapsed="0.000869">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T00:59:50.599153" elapsed="0.001531">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T00:59:50.599111" elapsed="0.001641">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T00:59:50.600850" elapsed="0.000035"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:59:50.503792" elapsed="0.097331">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:50.601420" elapsed="0.000021"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:50.601589" elapsed="0.000019"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T00:59:50.601684" elapsed="0.000016"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T00:59:50.501227" elapsed="0.100557">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:50.601957" elapsed="0.000021"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:50.602136" elapsed="0.000034"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:50.602332" elapsed="0.000019"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:50.602494" elapsed="0.000019"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:50.602660" elapsed="0.000019"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:50.602822" elapsed="0.000019"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T00:59:50.602881" elapsed="0.000015"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T00:59:50.498421" elapsed="0.104556">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:59:51.635972" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:59:51.635469" elapsed="0.000536"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:59:51.636600" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:59:51.636266" elapsed="0.000360"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:59:51.636674" elapsed="0.000043"/>
</return>
<msg time="2026-04-08T00:59:51.636852" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:59:51.634995" elapsed="0.001883"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T00:59:51.642025" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T00:59:51.641727" elapsed="0.000332"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:59:51.642241" elapsed="0.000201"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:59:51.642826" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:59:51.642598" elapsed="0.000255"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:59:51.643412" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:59:51.643106" elapsed="0.000351"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:59:51.643610" elapsed="0.000187"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:59:51.644237" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:59:51.643986" elapsed="0.000279"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:59:51.644817" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:59:51.644441" elapsed="0.000432"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:59:51.645507" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:59:51.645078" elapsed="0.000458"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:59:51.646078" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:59:51.645785" elapsed="0.000352"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:59:51.646620" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:59:51.646326" elapsed="0.000321"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:59:51.654136" elapsed="0.000335"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:59:51.664143" elapsed="0.000456"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:59:51.665530" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:59:51.664871" elapsed="0.000769"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:59:51.668216" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:59:51.667717" elapsed="0.000549"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:59:51.668347" elapsed="0.000069"/>
</return>
<msg time="2026-04-08T00:59:51.668661" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:59:51.665981" elapsed="0.002800"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:59:51.670004" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:59:51.669106" elapsed="0.001019"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:59:51.671537" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:59:51.670535" elapsed="0.001112"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:59:51.672590" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:59:51.686991" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:59:51.672129" elapsed="0.020238">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:51.693373" elapsed="0.000067"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:51.694290" elapsed="0.000054"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:51.695225" elapsed="0.000057"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:51.695991" elapsed="0.000050"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:51.696696" elapsed="0.000022"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:51.697009" elapsed="0.000021"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:51.698310" elapsed="0.000057"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:51.699520" elapsed="0.000054"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:51.700529" elapsed="0.000055"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:59:51.697385" elapsed="0.003248"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:59:51.697234" elapsed="0.003462"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:51.700898" elapsed="0.000021"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:59:51.701065" elapsed="0.000019"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:59:51.663368" elapsed="0.037880">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:59:51.701381" elapsed="0.000018"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T00:59:51.651544" elapsed="0.049945">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:51.701676" elapsed="0.000021"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:51.706437" elapsed="0.000027"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:51.706639" elapsed="0.000021"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T00:59:51.706706" elapsed="0.000015"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T00:59:51.641152" elapsed="0.065661">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:59:51.706935" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:59:51.706979" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:59:51.640584" elapsed="0.066419"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T00:59:51.707248" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:59:51.707096" elapsed="0.000195"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:51.707074" elapsed="0.000240"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:59:51.708674" elapsed="0.000212"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:59:51.709575" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:59:51.709042" elapsed="0.000558"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:59:51.710553" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:59:51.710129" elapsed="0.000452"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:59:51.710629" elapsed="0.000031"/>
</return>
<msg time="2026-04-08T00:59:51.710782" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:59:51.709785" elapsed="0.001022"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:59:51.711409" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:59:51.710969" elapsed="0.000467"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:59:51.712034" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:59:51.711660" elapsed="0.000400"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:59:51.712461" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:59:51.724016" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:59:51.712242" elapsed="0.014304">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:51.726831" elapsed="0.000034"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:51.727078" elapsed="0.000029"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:51.727466" elapsed="0.000030"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:51.727708" elapsed="0.000028"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:51.727952" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:51.728208" elapsed="0.000031"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:51.728602" elapsed="0.000029"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:51.728905" elapsed="0.000031"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:51.729146" elapsed="0.000053"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:59:51.728414" elapsed="0.000833"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:59:51.728309" elapsed="0.000975"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:51.729487" elapsed="0.000028"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:59:51.729572" elapsed="0.000023"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:59:51.708101" elapsed="0.021631">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:59:51.729903" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:59:51.729964" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:59:51.707470" elapsed="0.022528"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T00:59:51.730932" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T00:59:51.730461" elapsed="0.000555">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T00:59:51.730122" elapsed="0.000980">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T00:59:51.730093" elapsed="0.001053">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T00:59:51.731252" elapsed="0.000023"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:59:51.639992" elapsed="0.091402">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:51.731644" elapsed="0.000030"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:51.731878" elapsed="0.000028"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T00:59:51.731963" elapsed="0.000021"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T00:59:51.637204" elapsed="0.094897">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:51.732371" elapsed="0.000031"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:51.732641" elapsed="0.000030"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:51.732958" elapsed="0.000031"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:51.733281" elapsed="0.000032"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:51.733591" elapsed="0.000031"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:51.733841" elapsed="0.000029"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T00:59:51.733930" elapsed="0.000022"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T00:59:51.634179" elapsed="0.099898">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:59:52.766125" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:59:52.765609" elapsed="0.000568"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:59:52.766671" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:59:52.766354" elapsed="0.000343"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:59:52.766745" elapsed="0.000044"/>
</return>
<msg time="2026-04-08T00:59:52.766921" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:59:52.765196" elapsed="0.001751"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T00:59:52.771711" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T00:59:52.771511" elapsed="0.000227"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:59:52.771895" elapsed="0.000198"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:59:52.772480" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:59:52.772266" elapsed="0.000239"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:59:52.772957" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:59:52.772699" elapsed="0.000300"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:59:52.773199" elapsed="0.000190"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:59:52.773755" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:59:52.773547" elapsed="0.000233"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:59:52.774214" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:59:52.773952" elapsed="0.000304"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:59:52.774755" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:59:52.774412" elapsed="0.000369"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:59:52.775204" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:59:52.774951" elapsed="0.000297"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:59:52.775685" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:59:52.775401" elapsed="0.000310"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:59:52.782533" elapsed="0.000331"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:59:52.792495" elapsed="0.000443"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:59:52.793863" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:59:52.793255" elapsed="0.000718"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:59:52.796515" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:59:52.796029" elapsed="0.000533"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:59:52.796638" elapsed="0.000067"/>
</return>
<msg time="2026-04-08T00:59:52.796950" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:59:52.794461" elapsed="0.002597"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:59:52.798258" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:59:52.797438" elapsed="0.000935"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:59:52.799684" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:59:52.798754" elapsed="0.001038"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:59:52.800729" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:59:52.824127" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:59:52.800272" elapsed="0.029490">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:52.830798" elapsed="0.000058"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:52.831677" elapsed="0.000050"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:52.832537" elapsed="0.000051"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:52.833354" elapsed="0.000057"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:52.834300" elapsed="0.000044"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:52.834645" elapsed="0.000022"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:52.835991" elapsed="0.000056"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:52.837034" elapsed="0.000055"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:52.838098" elapsed="0.000057"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:59:52.834979" elapsed="0.003243"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:59:52.834828" elapsed="0.003459"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:52.838496" elapsed="0.000021"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:59:52.838665" elapsed="0.000021"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:59:52.791674" elapsed="0.047133">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:59:52.838884" elapsed="0.000017"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T00:59:52.780189" elapsed="0.058802">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:52.839235" elapsed="0.000024"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:52.844071" elapsed="0.000030"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:52.844432" elapsed="0.000024"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T00:59:52.844504" elapsed="0.000016"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T00:59:52.770945" elapsed="0.073670">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:59:52.844740" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:59:52.844787" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:59:52.770380" elapsed="0.074432"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T00:59:52.845038" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:59:52.844912" elapsed="0.000170"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:52.844889" elapsed="0.000217"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:59:52.846882" elapsed="0.000221"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:59:52.847798" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:59:52.847469" elapsed="0.000356"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:59:52.848814" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:59:52.848386" elapsed="0.000456"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:59:52.848893" elapsed="0.000031"/>
</return>
<msg time="2026-04-08T00:59:52.849047" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:59:52.848016" elapsed="0.001057"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:59:52.849707" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:59:52.849261" elapsed="0.000473"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:59:52.850279" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:59:52.849898" elapsed="0.000409"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:59:52.850694" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:59:52.921837" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:59:52.850473" elapsed="0.075914">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:52.926908" elapsed="0.000058"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:52.927385" elapsed="0.000052"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:52.927802" elapsed="0.000048"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:52.928239" elapsed="0.000051"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:52.928668" elapsed="0.000047"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:52.929066" elapsed="0.000048"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:52.929801" elapsed="0.000049"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:52.930252" elapsed="0.000050"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:52.930555" elapsed="0.000022"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:59:52.929476" elapsed="0.001134"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:59:52.929255" elapsed="0.001383"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:52.930782" elapsed="0.000021"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:59:52.930845" elapsed="0.000018"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:59:52.846251" elapsed="0.084723">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:59:52.931120" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:59:52.931179" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:59:52.845343" elapsed="0.085862"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T00:59:52.931936" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T00:59:52.931550" elapsed="0.000448">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T00:59:52.931303" elapsed="0.000756">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T00:59:52.931281" elapsed="0.000812">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T00:59:52.932140" elapsed="0.000015"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:59:52.769804" elapsed="0.162460">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:52.932447" elapsed="0.000021"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:52.932618" elapsed="0.000020"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T00:59:52.932681" elapsed="0.000014"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T00:59:52.767267" elapsed="0.165514">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:52.932954" elapsed="0.000022"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:52.933141" elapsed="0.000034"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:52.933330" elapsed="0.000020"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:52.933506" elapsed="0.000020"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:52.933675" elapsed="0.000020"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:52.933841" elapsed="0.000020"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T00:59:52.933903" elapsed="0.000014"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T00:59:52.764275" elapsed="0.169728">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:59:53.966418" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:59:53.965903" elapsed="0.000548"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:59:53.966942" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:59:53.966626" elapsed="0.000342"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:59:53.967015" elapsed="0.000040"/>
</return>
<msg time="2026-04-08T00:59:53.967225" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:59:53.965499" elapsed="0.001754"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T00:59:53.972135" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T00:59:53.971946" elapsed="0.000232"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:59:53.972337" elapsed="0.000194"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:59:53.972897" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:59:53.972687" elapsed="0.000236"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:59:53.973390" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:59:53.973112" elapsed="0.000319"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:59:53.973580" elapsed="0.000182"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:59:53.974120" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:59:53.973915" elapsed="0.000231"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:59:53.974577" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:59:53.974333" elapsed="0.000285"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:59:53.975112" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:59:53.974771" elapsed="0.000409"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:59:53.975594" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:59:53.975354" elapsed="0.000283"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:59:53.976069" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:59:53.975788" elapsed="0.000306"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:59:53.982832" elapsed="0.000307"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:59:53.992315" elapsed="0.000418"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:59:53.993738" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:59:53.993112" elapsed="0.000734"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:59:53.996227" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:59:53.995745" elapsed="0.000530"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:59:53.996350" elapsed="0.000063"/>
</return>
<msg time="2026-04-08T00:59:53.996656" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:59:53.994200" elapsed="0.002565"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:59:53.997906" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:59:53.997073" elapsed="0.000943"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:59:53.999378" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:59:53.998417" elapsed="0.001071"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:59:54.000405" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:59:54.024836" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:59:53.999957" elapsed="0.029514">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:54.030084" elapsed="0.000033"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:54.030627" elapsed="0.000031"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:54.031126" elapsed="0.000049"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:54.031604" elapsed="0.000030"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:54.032175" elapsed="0.000031"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:54.032615" elapsed="0.000030"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:54.034389" elapsed="0.000076"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:54.035871" elapsed="0.000076"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:54.037116" elapsed="0.000067"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:59:54.033052" elapsed="0.004181"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:59:54.032857" elapsed="0.004439"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:54.037498" elapsed="0.000021"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:59:54.037665" elapsed="0.000018"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:59:53.991528" elapsed="0.046264">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:59:54.037861" elapsed="0.000016"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T00:59:53.980536" elapsed="0.057425">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:54.038140" elapsed="0.000108"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:54.042900" elapsed="0.000033"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:54.043126" elapsed="0.000022"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T00:59:54.043217" elapsed="0.000020"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T00:59:53.971385" elapsed="0.071976">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:59:54.043478" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:59:54.043521" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:59:53.970725" elapsed="0.072819"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T00:59:54.043796" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:59:54.043678" elapsed="0.000161"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:54.043656" elapsed="0.000206"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:59:54.045202" elapsed="0.000212"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:59:54.045874" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:59:54.045570" elapsed="0.000330"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:59:54.046922" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:59:54.046522" elapsed="0.000426"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:59:54.046996" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:59:54.047145" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:59:54.046085" elapsed="0.001107"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:59:54.047737" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:59:54.047367" elapsed="0.000396"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:59:54.048285" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:59:54.047921" elapsed="0.000390"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:59:54.048672" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:59:54.059781" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:59:54.048473" elapsed="0.013712">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:54.062448" elapsed="0.000032"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:54.062689" elapsed="0.000029"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:54.062920" elapsed="0.000028"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:54.063150" elapsed="0.000048"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:54.063456" elapsed="0.000030"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:54.063690" elapsed="0.000028"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:54.064051" elapsed="0.000029"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:54.064315" elapsed="0.000030"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:54.064548" elapsed="0.000029"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:59:54.063868" elapsed="0.000754"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:59:54.063778" elapsed="0.000879"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:54.064852" elapsed="0.000029"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:59:54.064936" elapsed="0.000021"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:59:54.044644" elapsed="0.020439">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:59:54.065265" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:59:54.065326" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:59:54.044016" elapsed="0.021342"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T00:59:54.066291" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T00:59:54.065829" elapsed="0.000546">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T00:59:54.065526" elapsed="0.000937">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T00:59:54.065498" elapsed="0.001009">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T00:59:54.066571" elapsed="0.000022"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:59:53.970129" elapsed="0.096579">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:54.066955" elapsed="0.000030"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:54.067210" elapsed="0.000029"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T00:59:54.067320" elapsed="0.000027"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T00:59:53.967565" elapsed="0.099905">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:54.067708" elapsed="0.000029"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:54.067956" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:54.068215" elapsed="0.000029"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:54.068446" elapsed="0.000028"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:54.068680" elapsed="0.000028"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:54.068908" elapsed="0.000027"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T00:59:54.068992" elapsed="0.000020"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T00:59:53.964666" elapsed="0.104460">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:59:55.102413" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:59:55.101931" elapsed="0.000514"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:59:55.102927" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:59:55.102616" elapsed="0.000337"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:59:55.103000" elapsed="0.000039"/>
</return>
<msg time="2026-04-08T00:59:55.103188" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:59:55.101537" elapsed="0.001679"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T00:59:55.108005" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T00:59:55.107814" elapsed="0.000219"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:59:55.108204" elapsed="0.000195"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:59:55.108768" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:59:55.108557" elapsed="0.000237"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:59:55.109306" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:59:55.109029" elapsed="0.000321"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:59:55.109499" elapsed="0.000183"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:59:55.110043" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:59:55.109836" elapsed="0.000233"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:59:55.110501" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:59:55.110254" elapsed="0.000288"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:59:55.111037" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:59:55.110695" elapsed="0.000368"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:59:55.111487" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:59:55.111248" elapsed="0.000283"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:59:55.112035" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:59:55.111700" elapsed="0.000363"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:59:55.120330" elapsed="0.000301"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:59:55.129922" elapsed="0.000448"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:59:55.131243" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:59:55.130641" elapsed="0.000712"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:59:55.133726" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:59:55.133255" elapsed="0.000518"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:59:55.133847" elapsed="0.000065"/>
</return>
<msg time="2026-04-08T00:59:55.134165" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:59:55.131692" elapsed="0.002586"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:59:55.135457" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:59:55.134590" elapsed="0.000976"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:59:55.137053" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:59:55.136095" elapsed="0.001081"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:59:55.138115" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:59:55.153586" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:59:55.137684" elapsed="0.018299">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:55.156425" elapsed="0.000024"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:55.156786" elapsed="0.000022"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:55.157190" elapsed="0.000023"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:55.157513" elapsed="0.000022"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:55.157965" elapsed="0.000022"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:55.158296" elapsed="0.000022"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:55.159572" elapsed="0.000056"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:55.160619" elapsed="0.000054"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:55.161674" elapsed="0.000054"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:59:55.158613" elapsed="0.003213"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:59:55.158473" elapsed="0.003420"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:55.162098" elapsed="0.000021"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:59:55.162281" elapsed="0.000019"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:59:55.129139" elapsed="0.033269">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:59:55.162478" elapsed="0.000016"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T00:59:55.118000" elapsed="0.044578">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:55.162766" elapsed="0.000022"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:55.226790" elapsed="0.000066"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:55.227113" elapsed="0.000023"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T00:59:55.227204" elapsed="0.000024"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T00:59:55.107266" elapsed="0.120109">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:59:55.227530" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:59:55.227578" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:59:55.106694" elapsed="0.120907"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T00:59:55.227857" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:59:55.227706" elapsed="0.000196"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:55.227682" elapsed="0.000244"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:59:55.229479" elapsed="0.000216"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:59:55.230199" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:59:55.229853" elapsed="0.000374"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:59:55.231245" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:59:55.230763" elapsed="0.000511"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:59:55.231464" elapsed="0.000036"/>
</return>
<msg time="2026-04-08T00:59:55.231628" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:59:55.230414" elapsed="0.001240"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:59:55.232226" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:59:55.231824" elapsed="0.000429"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:59:55.232769" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:59:55.232416" elapsed="0.000379"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:59:55.233246" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:59:55.244887" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:59:55.232963" elapsed="0.015896">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:55.249347" elapsed="0.000052"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:55.249634" elapsed="0.000030"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:55.249883" elapsed="0.000029"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:55.250131" elapsed="0.000053"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:55.250415" elapsed="0.000030"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:55.250663" elapsed="0.000029"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:55.251059" elapsed="0.000031"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:55.251341" elapsed="0.000031"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:55.251591" elapsed="0.000029"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:59:55.250864" elapsed="0.000802"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:59:55.250761" elapsed="0.000943"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:55.251907" elapsed="0.000028"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:59:55.251990" elapsed="0.000021"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:59:55.228871" elapsed="0.023268">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:59:55.252318" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:59:55.252381" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:59:55.228093" elapsed="0.024326"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T00:59:55.253375" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T00:59:55.252864" elapsed="0.000601">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T00:59:55.252543" elapsed="0.001015">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T00:59:55.252515" elapsed="0.001089">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T00:59:55.253671" elapsed="0.000023"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:59:55.106124" elapsed="0.147693">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:55.254136" elapsed="0.000055"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:55.254415" elapsed="0.000030"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T00:59:55.254507" elapsed="0.000021"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T00:59:55.103513" elapsed="0.151142">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:55.254907" elapsed="0.000030"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:55.255194" elapsed="0.000031"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:55.255449" elapsed="0.000029"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:55.255690" elapsed="0.000029"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:55.255937" elapsed="0.000029"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:55.256202" elapsed="0.000330"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T00:59:55.256604" elapsed="0.000023"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T00:59:55.100714" elapsed="0.156040">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:59:56.289509" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:59:56.289014" elapsed="0.000528"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:59:56.290046" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:59:56.289719" elapsed="0.000354"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:59:56.290122" elapsed="0.000058"/>
</return>
<msg time="2026-04-08T00:59:56.290317" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:59:56.288608" elapsed="0.001735"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T00:59:56.295270" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T00:59:56.295051" elapsed="0.000248"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:59:56.295457" elapsed="0.000199"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:59:56.296027" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:59:56.295814" elapsed="0.000239"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:59:56.296535" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:59:56.296265" elapsed="0.000312"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:59:56.296729" elapsed="0.000183"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:59:56.297292" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:59:56.297067" elapsed="0.000251"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:59:56.297829" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:59:56.297576" elapsed="0.000295"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:59:56.298417" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:59:56.298036" elapsed="0.000408"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:59:56.298872" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:59:56.298631" elapsed="0.000285"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:59:56.299374" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:59:56.299070" elapsed="0.000330"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:59:56.306297" elapsed="0.000321"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:59:56.316088" elapsed="0.000467"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:59:56.317443" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:59:56.316830" elapsed="0.000726"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:59:56.320037" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:59:56.319514" elapsed="0.000571"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:59:56.320174" elapsed="0.000068"/>
</return>
<msg time="2026-04-08T00:59:56.320505" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:59:56.317894" elapsed="0.002719"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:59:56.321831" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:59:56.320924" elapsed="0.001019"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:59:56.323308" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:59:56.322354" elapsed="0.001065"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:59:56.324339" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:59:56.337845" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:59:56.323885" elapsed="0.017358">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:56.341847" elapsed="0.000035"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:56.342376" elapsed="0.000031"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:56.342896" elapsed="0.000031"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:56.343364" elapsed="0.000031"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:56.343919" elapsed="0.000031"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:56.344384" elapsed="0.000030"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:56.346143" elapsed="0.000094"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:56.347621" elapsed="0.000077"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:56.349031" elapsed="0.000075"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:59:56.344827" elapsed="0.004481"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:59:56.344629" elapsed="0.004771"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:56.349685" elapsed="0.000030"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:59:56.349912" elapsed="0.000026"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:59:56.315127" elapsed="0.034963">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:59:56.350278" elapsed="0.000024"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T00:59:56.303949" elapsed="0.046480">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:56.350699" elapsed="0.000031"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:56.356745" elapsed="0.000028"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:56.356947" elapsed="0.000072"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T00:59:56.357076" elapsed="0.000016"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T00:59:56.294397" elapsed="0.062946">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:59:56.357470" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:59:56.357514" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:59:56.293790" elapsed="0.063747"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T00:59:56.357757" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:59:56.357634" elapsed="0.000165"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:56.357611" elapsed="0.000212"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:59:56.359232" elapsed="0.000213"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:59:56.359929" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:59:56.359608" elapsed="0.000347"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:59:56.360921" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:59:56.360504" elapsed="0.000444"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:59:56.360994" elapsed="0.000031"/>
</return>
<msg time="2026-04-08T00:59:56.361146" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:59:56.360142" elapsed="0.001049"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:59:56.361732" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:59:56.361357" elapsed="0.000401"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:59:56.362285" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:59:56.361918" elapsed="0.000394"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:59:56.362715" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:59:56.371692" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:59:56.362477" elapsed="0.013100">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:56.376108" elapsed="0.000084"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:56.376547" elapsed="0.000048"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:56.376927" elapsed="0.000045"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:56.377345" elapsed="0.000047"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:56.377776" elapsed="0.000050"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:56.378191" elapsed="0.000050"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:56.378821" elapsed="0.000048"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:56.379248" elapsed="0.000048"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:56.379625" elapsed="0.000045"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:59:56.378493" elapsed="0.001249"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:59:56.378342" elapsed="0.001459"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:56.380120" elapsed="0.000074"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:59:56.380285" elapsed="0.000035"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:59:56.358660" elapsed="0.021885">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:59:56.380802" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:59:56.380901" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:59:56.357985" elapsed="0.022968"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T00:59:56.382431" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T00:59:56.381660" elapsed="0.000908">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T00:59:56.381138" elapsed="0.001619">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T00:59:56.381095" elapsed="0.001733">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T00:59:56.382929" elapsed="0.000035"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:59:56.293230" elapsed="0.089920">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:56.383529" elapsed="0.000022"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:56.383700" elapsed="0.000020"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T00:59:56.383761" elapsed="0.000015"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T00:59:56.290665" elapsed="0.093195">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:56.384035" elapsed="0.000021"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:56.384272" elapsed="0.000022"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:56.384451" elapsed="0.000023"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:56.384622" elapsed="0.000020"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:56.384793" elapsed="0.000019"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:56.384959" elapsed="0.000019"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T00:59:56.385020" elapsed="0.000015"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T00:59:56.287782" elapsed="0.097339">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:59:57.418058" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:59:57.417577" elapsed="0.000513"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:59:57.418600" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:59:57.418285" elapsed="0.000340"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:59:57.418675" elapsed="0.000038"/>
</return>
<msg time="2026-04-08T00:59:57.418844" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:59:57.417184" elapsed="0.001685"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T00:59:57.423832" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T00:59:57.423643" elapsed="0.000234"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:59:57.424035" elapsed="0.000212"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:59:57.424614" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:59:57.424403" elapsed="0.000237"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:59:57.425092" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:59:57.424831" elapsed="0.000303"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:59:57.425300" elapsed="0.000182"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:59:57.425843" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:59:57.425636" elapsed="0.000232"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:59:57.426306" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:59:57.426043" elapsed="0.000305"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:59:57.426844" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:59:57.426503" elapsed="0.000367"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:59:57.427295" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:59:57.427040" elapsed="0.000299"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:59:57.427827" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:59:57.427492" elapsed="0.000360"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:59:57.434770" elapsed="0.000307"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:59:57.444553" elapsed="0.000492"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:59:57.445915" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:59:57.445334" elapsed="0.000691"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:59:57.448449" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:59:57.447954" elapsed="0.000542"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:59:57.448575" elapsed="0.000065"/>
</return>
<msg time="2026-04-08T00:59:57.448879" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:59:57.446382" elapsed="0.002605"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:59:57.450123" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:59:57.449324" elapsed="0.000923"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:59:57.451538" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:59:57.450630" elapsed="0.001016"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:59:57.452565" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:59:57.466674" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:59:57.452124" elapsed="0.016946">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:57.469525" elapsed="0.000024"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:57.469891" elapsed="0.000022"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:57.470264" elapsed="0.000022"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:57.470585" elapsed="0.000022"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:57.470983" elapsed="0.000022"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:57.471314" elapsed="0.000022"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:57.472637" elapsed="0.000057"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:57.473708" elapsed="0.000055"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:57.474730" elapsed="0.000055"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:59:57.471634" elapsed="0.003200"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:59:57.471493" elapsed="0.003403"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:57.475097" elapsed="0.000022"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:59:57.475361" elapsed="0.000028"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:59:57.443739" elapsed="0.031776">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:59:57.475587" elapsed="0.000017"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T00:59:57.432385" elapsed="0.043306">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:57.475950" elapsed="0.000025"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:57.480774" elapsed="0.000027"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:57.480973" elapsed="0.000022"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T00:59:57.481041" elapsed="0.000015"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T00:59:57.423069" elapsed="0.058078">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:59:57.481278" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:59:57.481322" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:59:57.422320" elapsed="0.059024"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T00:59:57.481560" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:59:57.481437" elapsed="0.000166"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:57.481416" elapsed="0.000210"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:59:57.482974" elapsed="0.000294"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:59:57.483739" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:59:57.483430" elapsed="0.000335"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:59:57.484775" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:59:57.484368" elapsed="0.000433"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:59:57.484849" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T00:59:57.484998" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:59:57.483993" elapsed="0.001029"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:59:57.485589" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:59:57.485207" elapsed="0.000409"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:59:57.486143" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:59:57.485776" elapsed="0.000413"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:59:57.486560" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:59:57.496343" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:59:57.486354" elapsed="0.012368">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:57.498987" elapsed="0.000033"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:57.499258" elapsed="0.000030"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:57.499494" elapsed="0.000028"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:57.499725" elapsed="0.000028"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:57.500000" elapsed="0.000033"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:57.500258" elapsed="0.000029"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:57.500634" elapsed="0.000082"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:57.500940" elapsed="0.000029"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:57.501194" elapsed="0.000031"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:59:57.500444" elapsed="0.000827"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:59:57.500349" elapsed="0.000959"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:57.501512" elapsed="0.000029"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:59:57.501595" elapsed="0.000021"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:59:57.482408" elapsed="0.019337">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:59:57.501905" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:59:57.501967" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:59:57.481779" elapsed="0.020220"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T00:59:57.502893" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T00:59:57.502449" elapsed="0.000529">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T00:59:57.502117" elapsed="0.000946">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T00:59:57.502090" elapsed="0.001017">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T00:59:57.503191" elapsed="0.000023"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:59:57.421750" elapsed="0.081583">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:57.503585" elapsed="0.000029"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:57.503820" elapsed="0.000028"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T00:59:57.503904" elapsed="0.000020"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T00:59:57.419184" elapsed="0.084879">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:57.504331" elapsed="0.000030"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:57.504589" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:57.504825" elapsed="0.000028"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:57.505054" elapsed="0.000027"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:57.505307" elapsed="0.000029"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:57.505538" elapsed="0.000028"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T00:59:57.505671" elapsed="0.000024"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T00:59:57.416180" elapsed="0.089632">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:59:58.540587" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:59:58.540072" elapsed="0.000549"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:59:58.541114" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:59:58.540797" elapsed="0.000390"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:59:58.541238" elapsed="0.000044"/>
</return>
<msg time="2026-04-08T00:59:58.541418" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:59:58.539675" elapsed="0.001769"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T00:59:58.546272" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T00:59:58.546064" elapsed="0.000235"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:59:58.546455" elapsed="0.000200"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:59:58.547022" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:59:58.546810" elapsed="0.000237"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:59:58.547514" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:59:58.547253" elapsed="0.000302"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:59:58.547705" elapsed="0.000182"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:59:58.548306" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:59:58.548040" elapsed="0.000292"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:59:58.548752" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:59:58.548505" elapsed="0.000288"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:59:58.549335" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:59:58.548948" elapsed="0.000414"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:59:58.549771" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:59:58.549533" elapsed="0.000282"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:59:58.550269" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:59:58.549967" elapsed="0.000329"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:59:58.557046" elapsed="0.000357"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:59:58.566659" elapsed="0.000421"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:59:58.567953" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:59:58.567363" elapsed="0.000699"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:59:58.570538" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:59:58.570029" elapsed="0.000565"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:59:58.570686" elapsed="0.000071"/>
</return>
<msg time="2026-04-08T00:59:58.570999" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:59:58.568417" elapsed="0.002690"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:59:58.572268" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:59:58.571440" elapsed="0.000936"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:59:58.573844" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:59:58.572871" elapsed="0.001086"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:59:58.574890" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:59:58.588795" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:59:58.574454" elapsed="0.016759">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:58.591663" elapsed="0.000025"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:58.592028" elapsed="0.000022"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:58.592400" elapsed="0.000022"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:58.592716" elapsed="0.000022"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:58.593112" elapsed="0.000021"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:58.593454" elapsed="0.000021"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:58.594741" elapsed="0.000056"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:58.595798" elapsed="0.000055"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:58.596825" elapsed="0.000054"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:59:58.593777" elapsed="0.003150"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:59:58.593631" elapsed="0.003359"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:58.597241" elapsed="0.000027"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:59:58.597422" elapsed="0.000019"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:59:58.565871" elapsed="0.031680">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:59:58.597622" elapsed="0.000015"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T00:59:58.554737" elapsed="0.042986">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:58.597912" elapsed="0.000021"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:58.602676" elapsed="0.000028"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:58.602878" elapsed="0.000021"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T00:59:58.602945" elapsed="0.000015"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T00:59:58.545485" elapsed="0.057566">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:59:58.603403" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:59:58.603448" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:59:58.544893" elapsed="0.058578"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T00:59:58.603685" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:59:58.603566" elapsed="0.000162"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:58.603545" elapsed="0.000206"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:59:58.605098" elapsed="0.000263"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:59:58.605832" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:59:58.605520" elapsed="0.000338"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:59:58.606854" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:59:58.606407" elapsed="0.000474"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:59:58.606929" elapsed="0.000031"/>
</return>
<msg time="2026-04-08T00:59:58.607081" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:59:58.606043" elapsed="0.001063"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:59:58.607676" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:59:58.607296" elapsed="0.000407"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:59:58.608230" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:59:58.607864" elapsed="0.000393"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:59:58.608631" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:59:58.617384" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:59:58.608422" elapsed="0.011413">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:58.620097" elapsed="0.000032"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:58.620368" elapsed="0.000029"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:58.620607" elapsed="0.000028"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:58.620840" elapsed="0.000028"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:58.621077" elapsed="0.000027"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:58.621363" elapsed="0.000030"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:58.621735" elapsed="0.000028"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:58.621977" elapsed="0.000028"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:58.622227" elapsed="0.000029"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:59:58.621551" elapsed="0.000751"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:59:58.621458" elapsed="0.000881"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:58.622538" elapsed="0.000031"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:59:58.622621" elapsed="0.000021"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:59:58.604543" elapsed="0.018227">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:59:58.622983" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:59:58.623044" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:59:58.603904" elapsed="0.019172"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T00:59:58.624062" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T00:59:58.623614" elapsed="0.000534">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T00:59:58.623231" elapsed="0.001030">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T00:59:58.623202" elapsed="0.001104">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T00:59:58.624371" elapsed="0.000021"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:59:58.544336" elapsed="0.080173">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:58.624775" elapsed="0.000034"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:58.625019" elapsed="0.000028"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T00:59:58.625103" elapsed="0.000021"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T00:59:58.541807" elapsed="0.083471">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:58.625583" elapsed="0.000030"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:58.625837" elapsed="0.000027"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:58.626073" elapsed="0.000027"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:58.626324" elapsed="0.000028"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:58.626559" elapsed="0.000027"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:58.626840" elapsed="0.000030"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T00:59:58.626928" elapsed="0.000021"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T00:59:58.538854" elapsed="0.088213">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:59:59.658896" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:59:59.657901" elapsed="0.001030"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T00:59:59.659444" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T00:59:59.659108" elapsed="0.000362"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T00:59:59.659518" elapsed="0.000041"/>
</return>
<msg time="2026-04-08T00:59:59.659687" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T00:59:59.657463" elapsed="0.002313"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T00:59:59.665333" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T00:59:59.665045" elapsed="0.000326"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:59:59.665586" elapsed="0.000267"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:59:59.666405" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:59:59.666070" elapsed="0.000372"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:59:59.667058" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:59:59.666704" elapsed="0.000412"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T00:59:59.667345" elapsed="0.000258"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:59:59.668104" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:59:59.667817" elapsed="0.000323"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:59:59.668743" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:59:59.668401" elapsed="0.000399"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:59:59.669511" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:59:59.669011" elapsed="0.000536"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T00:59:59.670113" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T00:59:59.669782" elapsed="0.000413"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T00:59:59.670835" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T00:59:59.670439" elapsed="0.000422"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:59:59.677681" elapsed="0.000297"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:59:59.687400" elapsed="0.000424"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:59:59.688685" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:59:59.688091" elapsed="0.000703"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:59:59.691151" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:59:59.690686" elapsed="0.000540"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:59:59.691301" elapsed="0.000066"/>
</return>
<msg time="2026-04-08T00:59:59.691607" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:59:59.689131" elapsed="0.002585"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:59:59.692857" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:59:59.692025" elapsed="0.000942"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:59:59.694292" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:59:59.693368" elapsed="0.001069"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:59:59.695365" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:59:59.707931" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:59:59.694904" elapsed="0.016315">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:59.711808" elapsed="0.000033"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:59.712345" elapsed="0.000031"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:59.712892" elapsed="0.000030"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:59.713361" elapsed="0.000030"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:59.713908" elapsed="0.000030"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:59.714379" elapsed="0.000031"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:59.716116" elapsed="0.000111"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:59.717661" elapsed="0.000075"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:59.718955" elapsed="0.000056"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:59:59.714817" elapsed="0.004242"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:59:59.714622" elapsed="0.004499"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:59.719341" elapsed="0.000022"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:59:59.719506" elapsed="0.000018"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:59:59.686607" elapsed="0.033023">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:59:59.719701" elapsed="0.000015"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T00:59:59.675369" elapsed="0.044432">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:59.719979" elapsed="0.000022"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:59.726141" elapsed="0.000041"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:59.726355" elapsed="0.000048"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T00:59:59.726451" elapsed="0.000015"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T00:59:59.664285" elapsed="0.062273">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:59:59.726672" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:59:59.726716" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:59:59.663481" elapsed="0.063258"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T00:59:59.726949" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-08T00:59:59.726830" elapsed="0.000161"/>
</branch>
<status status="PASS" start="2026-04-08T00:59:59.726809" elapsed="0.000204"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T00:59:59.728384" elapsed="0.000218"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T00:59:59.729065" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T00:59:59.728757" elapsed="0.000334"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T00:59:59.730077" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T00:59:59.729676" elapsed="0.000428"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T00:59:59.730152" elapsed="0.000196"/>
</return>
<msg time="2026-04-08T00:59:59.730482" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T00:59:59.729330" elapsed="0.001177"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T00:59:59.731041" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T00:59:59.730669" elapsed="0.000399"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T00:59:59.731591" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T00:59:59.731242" elapsed="0.000376"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T00:59:59.731989" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T00:59:59.740646" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T00:59:59.731782" elapsed="0.010593">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:59.742600" elapsed="0.000023"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:59.742774" elapsed="0.000021"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:59.742964" elapsed="0.000026"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:59.743146" elapsed="0.000039"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:59.743341" elapsed="0.000020"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:59.743508" elapsed="0.000020"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:59.744052" elapsed="0.000049"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:59.744487" elapsed="0.000048"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:59.744860" elapsed="0.000045"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T00:59:59.743727" elapsed="0.001265"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T00:59:59.743579" elapsed="0.001475"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:59.745408" elapsed="0.000047"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T00:59:59.745546" elapsed="0.000033"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:59:59.727813" elapsed="0.017975">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T00:59:59.746054" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T00:59:59.746194" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T00:59:59.727183" elapsed="0.019070"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T00:59:59.747752" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T00:59:59.746975" elapsed="0.000913">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T00:59:59.746476" elapsed="0.001550">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T00:59:59.746429" elapsed="0.001686">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T00:59:59.748261" elapsed="0.000037"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T00:59:59.662645" elapsed="0.085926">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:59.749011" elapsed="0.000052"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:59.749458" elapsed="0.000048"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T00:59:59.749603" elapsed="0.000033"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T00:59:59.660079" elapsed="0.089745">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:59.750257" elapsed="0.000053"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:59.750735" elapsed="0.000047"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:59.751128" elapsed="0.000085"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:59.751551" elapsed="0.000038"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:59.751740" elapsed="0.000020"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T00:59:59.751906" elapsed="0.000019"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T00:59:59.751968" elapsed="0.000015"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T00:59:59.656662" elapsed="0.095404">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:00:00.782998" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:00:00.782519" elapsed="0.000512"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:00:00.783565" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:00:00.783222" elapsed="0.000369"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T01:00:00.783640" elapsed="0.000042"/>
</return>
<msg time="2026-04-08T01:00:00.783813" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T01:00:00.782107" elapsed="0.001732"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T01:00:00.788636" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T01:00:00.788442" elapsed="0.000221"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:00:00.788819" elapsed="0.000267"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:00:00.789493" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:00:00.789272" elapsed="0.000247"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:00:00.790046" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:00:00.789713" elapsed="0.000375"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:00:00.790255" elapsed="0.000187"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:00:00.790808" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:00:00.790598" elapsed="0.000235"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:00:00.791273" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:00:00.791007" elapsed="0.000309"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:00:00.791868" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:00:00.791495" elapsed="0.000400"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:00:00.792331" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:00:00.792067" elapsed="0.000308"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:00:00.792819" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:00:00.792531" elapsed="0.000314"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:00:00.799805" elapsed="0.000314"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:00:00.809528" elapsed="0.000483"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:00:00.810905" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:00:00.810300" elapsed="0.000716"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:00:00.813491" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:00:00.812983" elapsed="0.000557"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:00:00.813619" elapsed="0.000066"/>
</return>
<msg time="2026-04-08T01:00:00.813931" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:00:00.811374" elapsed="0.002667"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:00:00.815229" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:00:00.814395" elapsed="0.000945"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:00:00.816703" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:00:00.815754" elapsed="0.001058"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:00:00.817732" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:00:00.833089" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:00:00.817290" elapsed="0.019119">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:00.837009" elapsed="0.000033"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:00.837549" elapsed="0.000032"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:00.838053" elapsed="0.000031"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:00.838535" elapsed="0.000032"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:00.839096" elapsed="0.000031"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:00.839644" elapsed="0.000036"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:00.841599" elapsed="0.000084"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:00.843125" elapsed="0.000106"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:00.844659" elapsed="0.000082"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:00:00.840127" elapsed="0.004876"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:00:00.839927" elapsed="0.005174"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:00.845525" elapsed="0.000032"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:00:00.845765" elapsed="0.000025"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:00:00.808684" elapsed="0.037256">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:00:00.846041" elapsed="0.000023"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T01:00:00.797438" elapsed="0.048767">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:00.846464" elapsed="0.000031"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:00.851861" elapsed="0.000028"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:00.852062" elapsed="0.000021"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T01:00:00.852129" elapsed="0.000015"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T01:00:00.787874" elapsed="0.064377">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:00:00.852378" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:00:00.852422" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:00.787216" elapsed="0.065229"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T01:00:00.852658" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:00:00.852539" elapsed="0.000162"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:00.852517" elapsed="0.000207"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:00:00.854230" elapsed="0.000211"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:00:00.854901" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:00:00.854597" elapsed="0.000330"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:00:00.855896" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:00:00.855490" elapsed="0.000433"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:00:00.855970" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T01:00:00.856119" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:00:00.855110" elapsed="0.001033"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:00:00.856694" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:00:00.856323" elapsed="0.000397"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:00:00.857271" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:00:00.856889" elapsed="0.000408"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:00:00.857704" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:00:00.865965" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:00:00.857499" elapsed="0.010293">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:00.867989" elapsed="0.000024"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:00.868183" elapsed="0.000021"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:00.868353" elapsed="0.000020"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:00.868522" elapsed="0.000021"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:00.868808" elapsed="0.000045"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:00.869206" elapsed="0.000047"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:00.869799" elapsed="0.000046"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:00.870264" elapsed="0.000051"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:00.870648" elapsed="0.000045"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:00:00.869503" elapsed="0.001262"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:00:00.869355" elapsed="0.001469"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:00.871142" elapsed="0.000074"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:00:00.871308" elapsed="0.000035"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:00:00.853653" elapsed="0.017918">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:00:00.871825" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:00:00.871924" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:00.852879" elapsed="0.019097"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T01:00:00.873456" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T01:00:00.872700" elapsed="0.001356">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T01:00:00.872193" elapsed="0.002061">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T01:00:00.872118" elapsed="0.002211">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T01:00:00.874433" elapsed="0.000037"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:00:00.786652" elapsed="0.088168">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:00.875278" elapsed="0.000051"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:00.875722" elapsed="0.000049"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T01:00:00.875868" elapsed="0.000033"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T01:00:00.784134" elapsed="0.091956">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:00.876589" elapsed="0.000040"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:00.876792" elapsed="0.000020"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:00.876964" elapsed="0.000020"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:00.877129" elapsed="0.000019"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:00.877315" elapsed="0.000020"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:00.877482" elapsed="0.000020"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T01:00:00.877543" elapsed="0.000015"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T01:00:00.781297" elapsed="0.096343">Could not parse owner and candidates for device openflow:1</status>
</kw>
<msg time="2026-04-08T01:00:00.877741" level="FAIL">Keyword 'ClusterManagement.Verify_Owner_And_Successors_For_Device' failed after retrying for 30 seconds. The last error was: Could not parse owner and candidates for device openflow:1</msg>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>30s</arg>
<arg>1s</arg>
<arg>ClusterManagement.Verify_Owner_And_Successors_For_Device</arg>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="FAIL" start="2026-04-08T00:59:30.174767" elapsed="30.703066">Keyword 'ClusterManagement.Verify_Owner_And_Successors_For_Device' failed after retrying for 30 seconds. The last error was: Could not parse owner and candidates for device openflow:1</status>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T01:00:00.877910" elapsed="0.000016"/>
</return>
<arg>openflow:1</arg>
<arg>1</arg>
<doc>Check Entity Owner Status and identify owner and successors for the device ${device}. Request is sent to controller ${controller_index}.</doc>
<status status="FAIL" start="2026-04-08T00:59:30.172542" elapsed="30.705467">Keyword 'ClusterManagement.Verify_Owner_And_Successors_For_Device' failed after retrying for 30 seconds. The last error was: Could not parse owner and candidates for device openflow:1</status>
</kw>
<msg time="2026-04-08T01:00:00.878096" level="FAIL">Keyword 'ClusterOpenFlow.Get OpenFlow Entity Owner Status For One Device' failed after retrying for 10 seconds. The last error was: Keyword 'ClusterManagement.Verify_Owner_And_Successors_For_Device' failed after retrying for 30 seconds. The last error was: Could not parse owner and candidates for device openflow:1</msg>
<arg>10s</arg>
<arg>1s</arg>
<arg>ClusterOpenFlow.Get OpenFlow Entity Owner Status For One Device</arg>
<arg>openflow:1</arg>
<arg>1</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="FAIL" start="2026-04-08T00:59:30.163967" elapsed="30.714233">Keyword 'ClusterOpenFlow.Get OpenFlow Entity Owner Status For One Device' failed after retrying for 10 seconds. The last error was: Keyword 'ClusterManagement.Verify_Owner_And_Successors_For_Device' failed after retrying for 30 seconds. The last error was: Could not parse owner and candidates for device openflow:1</status>
</kw>
<doc>Check Entity Owner Status and identify owner and successor for first switch s1.</doc>
<status status="FAIL" start="2026-04-08T00:59:29.760544" elapsed="31.117830">Keyword 'ClusterOpenFlow.Get OpenFlow Entity Owner Status For One Device' failed after retrying for 10 seconds. The last error was: Keyword 'ClusterManagement.Verify_Owner_And_Successors_For_Device' failed after retrying for 30 seconds. The last error was: Could not parse owner and candidates for device openflow:1</status>
</test>
<test id="s1-s4-t20" name="Add Flows And Groups After Owner Reconnect" line="157">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-08T01:00:00.882112" elapsed="0.000230"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-08T01:00:00.881845" elapsed="0.000553"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:00:00.883399" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:00:00.883288" elapsed="0.000156"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:00.883270" elapsed="0.000196"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:00:00.888346" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:00:00.888239" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:00.888221" elapsed="0.000191"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:00:00.889413" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:00:00.889016" elapsed="0.000423"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:00:00.889899" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:00:00.889600" elapsed="0.000324"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T01:00:00.890038" elapsed="0.000032"/>
</return>
<msg time="2026-04-08T01:00:00.890214" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T01:00:00.888640" elapsed="0.001600"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:00:00.895651" elapsed="0.000024"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:00:00.895536" elapsed="0.000171"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:00.895500" elapsed="0.000229"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:00:00.896888" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:00:00.896781" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:00.896762" elapsed="0.000194"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:00:00.897420" level="INFO">${karaf_connection_index} = 476</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:00:00.897102" elapsed="0.000345"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:00:00.897885" level="INFO">${current_connection_index} = 495</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:00:00.897623" elapsed="0.000289"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:00:00.935527" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:00:00.898431" elapsed="0.037372"/>
</kw>
<msg time="2026-04-08T01:00:00.936088" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T01:00:00.936187" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:00.898073" elapsed="0.038172"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T01:00:01.000256" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "A "d "d "[C "F "l "o "w "s "[C "A "n "d "[C "G "r "o "u "p "s "[C "A "f "t "e "r "[C "O "w "n "e "r "[C "R "e "c "o "n "n "e "c "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T01:00:00.937130" elapsed="0.063357"/>
</kw>
<msg time="2026-04-08T01:00:01.000716" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T01:00:01.000765" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "A "d "d "[C "F "l "o "w "s "[C "A "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:00.936555" elapsed="0.064250"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:01.001313" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:01.000930" elapsed="0.000451"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:01.000892" elapsed="0.000518"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:00:01.002292" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "A "d "d "[C "F "l "o "w "s "[C "A "n "d "[C "G "r "o "u "p "s "[C "A "f "t "e "r "[C "O "w "n "e "r "[C "R "e "c "o "n "n "e "c "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:00:01.001564" elapsed="0.000814"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:01.002753" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:01.002514" elapsed="0.000297"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:01.002484" elapsed="0.000350"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T01:00:01.002873" elapsed="0.000041"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:00:01.005753" elapsed="0.000196"/>
</kw>
<msg time="2026-04-08T01:00:01.006014" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:00:01.004603" elapsed="0.001550"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:01.006455" elapsed="0.000077"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:01.006791" elapsed="0.000075"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:00:01.003899" elapsed="0.003081"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T01:00:01.003228" elapsed="0.003885"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T01:00:00.896468" elapsed="0.110770"/>
</kw>
<msg time="2026-04-08T01:00:01.007340" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:00:01.007385" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "A "d "d "[C "F "l "o "w "s "[C "A "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:00.895882" elapsed="0.111542"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T01:00:01.007664" elapsed="0.000034"/>
</return>
<status status="PASS" start="2026-04-08T01:00:01.007508" elapsed="0.000228"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:01.007487" elapsed="0.000277"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:01.008242" elapsed="0.000027"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:01.008595" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T01:00:01.008667" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T01:00:00.895171" elapsed="0.113606"/>
</kw>
<msg time="2026-04-08T01:00:01.008875" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:00:01.008920" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "A "d "d "[C "F "l "o "w "s "[C "A "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:00.890603" elapsed="0.118355"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:01.009311" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:01.009037" elapsed="0.000329"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:01.009019" elapsed="0.000369"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T01:00:00.890459" elapsed="0.118953"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:00:01.016295" elapsed="0.000021"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:00:01.016110" elapsed="0.000254"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:01.016082" elapsed="0.000314"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:00:01.017644" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:00:01.017533" elapsed="0.000159"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:01.017515" elapsed="0.000199"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:00:01.018208" level="INFO">${karaf_connection_index} = 478</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:00:01.017865" elapsed="0.000379"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:00:01.018691" level="INFO">${current_connection_index} = 495</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:00:01.018424" elapsed="0.000293"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:00:01.051423" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:00:01.019235" elapsed="0.032471"/>
</kw>
<msg time="2026-04-08T01:00:01.051961" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T01:00:01.052012" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:01.018879" elapsed="0.033176"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T01:00:01.115012" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "A "d "d "[C "F "l "o "w "s "[C "A "n "d "[C "G "r "o "u "p "s "[C "A "f "t "e "r "[C "O "w "n "e "r "[C "R "e "c "o "n "n "e "c "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T01:00:01.052842" elapsed="0.062299"/>
</kw>
<msg time="2026-04-08T01:00:01.115331" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T01:00:01.115404" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "A "d "d "[C "F "l "o "w "s "[C "A "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:01.052348" elapsed="0.063095"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:01.115951" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:01.115642" elapsed="0.000366"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:01.115611" elapsed="0.000426"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:00:01.116531" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "A "d "d "[C "F "l "o "w "s "[C "A "n "d "[C "G "r "o "u "p "s "[C "A "f "t "e "r "[C "O "w "n "e "r "[C "R "e "c "o "n "n "e "c "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:00:01.116210" elapsed="0.000399"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:01.116899" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:01.116677" elapsed="0.000276"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:01.116659" elapsed="0.000317"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T01:00:01.117012" elapsed="0.000039"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:00:01.119581" elapsed="0.000196"/>
</kw>
<msg time="2026-04-08T01:00:01.119840" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:00:01.118571" elapsed="0.001402"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:01.120375" elapsed="0.000079"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:01.120715" elapsed="0.000074"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:00:01.117912" elapsed="0.002987"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T01:00:01.117350" elapsed="0.003614"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T01:00:01.017229" elapsed="0.103836"/>
</kw>
<msg time="2026-04-08T01:00:01.121177" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:00:01.121226" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "A "d "d "[C "F "l "o "w "s "[C "A "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:01.016621" elapsed="0.104644"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T01:00:01.121452" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-08T01:00:01.121345" elapsed="0.000166"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:01.121326" elapsed="0.000208"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 2,
close the previous connection. In any case create a new connection
to karaf console for 2, set correct prompt set and login to karaf console.
Store connection index for 2 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:01.121933" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:01.122299" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T01:00:01.122370" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T01:00:01.015516" elapsed="0.106958"/>
</kw>
<msg time="2026-04-08T01:00:01.122569" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:00:01.122614" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "A "d "d "[C "F "l "o "w "s "[C "A "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:01.009703" elapsed="0.112950"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:01.122978" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:01.122729" elapsed="0.000301"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:01.122712" elapsed="0.000341"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T01:00:01.009549" elapsed="0.113527"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:00:01.128648" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:00:01.128540" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:01.128522" elapsed="0.000194"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:00:01.130116" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:00:01.129819" elapsed="0.000369"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:01.129801" elapsed="0.000411"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:00:01.130826" level="INFO">${karaf_connection_index} = 480</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:00:01.130362" elapsed="0.000493"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:00:01.131292" level="INFO">${current_connection_index} = 495</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:00:01.131020" elapsed="0.000299"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:00:01.169336" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:00:01.131857" elapsed="0.037606"/>
</kw>
<msg time="2026-04-08T01:00:01.169664" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T01:00:01.169712" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:01.131482" elapsed="0.038268"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T01:00:01.234572" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "A "d "d "[C "F "l "o "w "s "[C "A "n "d "[C "G "r "o "u "p "s "[C "A "f "t "e "r "[C "O "w "n "e "r "[C "R "e "c "o "n "n "e "c "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T01:00:01.170371" elapsed="0.064628"/>
</kw>
<msg time="2026-04-08T01:00:01.235196" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T01:00:01.235246" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "A "d "d "[C "F "l "o "w "s "[C "A "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:01.169951" elapsed="0.065344"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:01.235718" elapsed="0.000027"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:01.235407" elapsed="0.000374"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:01.235366" elapsed="0.000442"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:00:01.236332" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "A "d "d "[C "F "l "o "w "s "[C "A "n "d "[C "G "r "o "u "p "s "[C "A "f "t "e "r "[C "O "w "n "e "r "[C "R "e "c "o "n "n "e "c "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:00:01.235988" elapsed="0.000422"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:01.236702" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:01.236479" elapsed="0.000277"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:01.236460" elapsed="0.000320"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T01:00:01.236816" elapsed="0.000035"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:00:01.239491" elapsed="0.000185"/>
</kw>
<msg time="2026-04-08T01:00:01.239738" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:00:01.238390" elapsed="0.001531"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:01.240222" elapsed="0.000074"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:01.240563" elapsed="0.000076"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:00:01.237735" elapsed="0.003014"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T01:00:01.237129" elapsed="0.003686"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T01:00:01.129460" elapsed="0.111454"/>
</kw>
<msg time="2026-04-08T01:00:01.241004" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:00:01.241048" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "A "d "d "[C "F "l "o "w "s "[C "A "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:01.128870" elapsed="0.112218"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T01:00:01.241290" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-08T01:00:01.241180" elapsed="0.000168"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:01.241146" elapsed="0.000227"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 3,
close the previous connection. In any case create a new connection
to karaf console for 3, set correct prompt set and login to karaf console.
Store connection index for 3 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:01.241794" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:01.242200" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T01:00:01.242273" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T01:00:01.128191" elapsed="0.114188"/>
</kw>
<msg time="2026-04-08T01:00:01.242472" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:00:01.242517" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "A "d "d "[C "F "l "o "w "s "[C "A "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:01.123367" elapsed="0.119187"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:01.242881" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:01.242630" elapsed="0.000319"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:01.242613" elapsed="0.000367"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T01:00:01.123222" elapsed="0.119786"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-08T01:00:00.890291" elapsed="0.352753"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-08T01:00:00.887864" elapsed="0.355247"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-08T01:00:00.882983" elapsed="0.360236"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:00.882551" elapsed="0.360720"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-08T01:00:00.879347" elapsed="0.363982"/>
</kw>
<kw name="Add Single Group And Flow On Member">
<kw name="Add Groups And Flows On Member">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:00:01.244979" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:00:01.244678" elapsed="0.000329"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T01:00:01.245052" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T01:00:01.245214" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T01:00:01.244328" elapsed="0.000911"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-08T01:00:01.248464" level="INFO">&amp;{mapping} = { NODE=openflow:1 }</msg>
<var>&amp;{mapping}</var>
<arg>NODE=openflow:${switch}</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-08T01:00:01.247986" elapsed="0.000513"/>
</kw>
<kw name="Post_As_Json_Templated" owner="TemplatedRequests">
<kw name="Post_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:00:01.291637" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1.vanadium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:00:01.291248" elapsed="0.000419"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T01:00:01.292642" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-1.vanadium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T01:00:01.292251" elapsed="0.000474">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-1.vanadium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-08T01:00:01.292819" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T01:00:01.291836" elapsed="0.001008"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:00:01.293431" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:00:01.293013" elapsed="0.000446"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T01:00:01.293762" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-1/location.uri"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-1/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-08T01:00:01.293947" level="INFO">${template} = /rests/data/opendaylight-inventory:nodes/node=$NODE
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T01:00:01.293622" elapsed="0.000351"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:00:01.294401" level="INFO">/rests/data/opendaylight-inventory:nodes/node=$NODE
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:00:01.294133" elapsed="0.000312"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:00:01.295701" level="INFO">mapping: {'NODE': 'openflow:1'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:00:01.295236" elapsed="0.000510"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-08T01:00:01.296383" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-08T01:00:01.295940" elapsed="0.000470"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-08T01:00:01.297500" level="INFO">${value} = openflow:1</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-08T01:00:01.296812" elapsed="0.000729"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-08T01:00:01.299421" level="INFO">${encoded} = openflow%3A1</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-08T01:00:01.298817" elapsed="0.000644"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-08T01:00:01.299542" elapsed="0.000079"/>
</return>
<msg time="2026-04-08T01:00:01.299918" level="INFO">${encoded_value} = openflow%3A1</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-08T01:00:01.297997" elapsed="0.001964"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:00:01.300207" elapsed="0.000539"/>
</kw>
<var name="${key}">NODE</var>
<var name="${value}">openflow:1</var>
<status status="PASS" start="2026-04-08T01:00:01.296640" elapsed="0.004205"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-08T01:00:01.296464" elapsed="0.004421"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-08T01:00:01.300929" elapsed="0.000153"/>
</return>
<msg time="2026-04-08T01:00:01.301249" level="INFO">${mapping_to_use} = {'NODE': 'openflow%3A1'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-08T01:00:01.294891" elapsed="0.006384"/>
</kw>
<status status="PASS" start="2026-04-08T01:00:01.294525" elapsed="0.006783"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:01.301486" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:01.301334" elapsed="0.000207"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:01.294500" elapsed="0.007061"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:00:01.302374" level="INFO">${final_text} = /rests/data/opendaylight-inventory:nodes/node=openflow%3A1</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:00:01.301707" elapsed="0.000696"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T01:00:01.302450" 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-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1/${file_name}.</doc>
<status status="PASS" start="2026-04-08T01:00:01.290564" elapsed="0.012009"/>
</kw>
<msg time="2026-04-08T01:00:01.302626" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:00:01.277940" elapsed="0.024737"/>
</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-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:01.315041" 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-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:01.327532" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:01.339705" elapsed="0.000027"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:01.339970" elapsed="0.000023"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:01.340152" elapsed="0.000041"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:01.340542" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:01.340396" elapsed="0.000199"/>
</branch>
<status status="NOT RUN" start="2026-04-08T01:00:01.340382" elapsed="0.000236"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:01.340759" elapsed="0.000020"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:01.340925" elapsed="0.000019"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:01.341089" elapsed="0.000020"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-08T01:00:01.340353" elapsed="0.000788"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-08T01:00:01.340250" elapsed="0.000934"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:01.341333" elapsed="0.000020"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-08T01:00:01.341405" elapsed="0.000015"/>
</return>
<msg time="2026-04-08T01:00:01.341521" level="INFO">${uri} = /rests/data/opendaylight-inventory:nodes/node=openflow%3A1</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one 1 times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-08T01:00:01.273745" elapsed="0.067801"/>
</kw>
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:00:01.352200" elapsed="0.000339"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:00:01.365818" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1.vanadium/post_data.prolog.json</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:00:01.365445" elapsed="0.000401"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T01:00:01.366621" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-1.vanadium/post_data.prolog.json' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T01:00:01.366394" elapsed="0.000297">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-1.vanadium/post_data.prolog.json' does not exist.</status>
</kw>
<msg time="2026-04-08T01:00:01.366784" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T01:00:01.366011" elapsed="0.000797"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:00:01.367373" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1/post_data.prolog.json</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:00:01.366973" elapsed="0.000428"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T01:00:01.367697" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-1/post_data.prolog.json"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-1/post_data.prolog.json&lt;/a&gt;'.</msg>
<msg time="2026-04-08T01:00:01.367846" level="INFO">${template} = {
  "flow-node-inventory:group": [
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T01:00:01.367563" elapsed="0.000308"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:00:01.368304" level="INFO">{
  "flow-node-inventory:group": [
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:00:01.368043" elapsed="0.000304"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="NOT RUN" start="2026-04-08T01:00:01.368704" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:01.368414" elapsed="0.000347"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:00:01.369236" level="INFO">${mapping_to_use} = {'NODE': 'openflow:1'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:00:01.368930" elapsed="0.000332"/>
</kw>
<status status="PASS" start="2026-04-08T01:00:01.368785" elapsed="0.000555"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:01.368396" elapsed="0.000969"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:00:01.369937" level="INFO">${final_text} = {
  "flow-node-inventory:group": [</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:00:01.369513" elapsed="0.000451"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T01:00:01.370012" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T01:00:01.370177" level="INFO">${prolog} = {
  "flow-node-inventory:group": [</msg>
<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-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1/${file_name}.</doc>
<status status="PASS" start="2026-04-08T01:00:01.364819" elapsed="0.005384"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:00:01.383667" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1.vanadium/post_data.epilog.json</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:00:01.383296" elapsed="0.000398"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T01:00:01.384455" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-1.vanadium/post_data.epilog.json' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T01:00:01.384248" elapsed="0.000270">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-1.vanadium/post_data.epilog.json' does not exist.</status>
</kw>
<msg time="2026-04-08T01:00:01.384609" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T01:00:01.383857" elapsed="0.000776"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:00:01.385188" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1/post_data.epilog.json</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:00:01.384797" elapsed="0.000419"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T01:00:01.385509" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-1/post_data.epilog.json"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-1/post_data.epilog.json&lt;/a&gt;'.</msg>
<msg time="2026-04-08T01:00:01.385676" level="INFO">${template} =   ]
}
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T01:00:01.385377" elapsed="0.000325"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:00:01.386414" level="INFO">  ]
}
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:00:01.385860" elapsed="0.000598"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="NOT RUN" start="2026-04-08T01:00:01.386814" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:01.386526" elapsed="0.000347"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:00:01.387355" level="INFO">${mapping_to_use} = {'NODE': 'openflow:1'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:00:01.387045" elapsed="0.000342"/>
</kw>
<status status="PASS" start="2026-04-08T01:00:01.386898" elapsed="0.000534"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:01.386507" elapsed="0.000948"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:00:01.388068" level="INFO">${final_text} =   ]
}</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:00:01.387603" elapsed="0.000492"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T01:00:01.388144" elapsed="0.000046"/>
</return>
<msg time="2026-04-08T01:00:01.388316" level="INFO">${epilog} =   ]
}</msg>
<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-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1/${file_name}.</doc>
<status status="PASS" start="2026-04-08T01:00:01.382663" elapsed="0.005677"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:00:01.403322" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1.vanadium/data.item.json</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:00:01.402735" elapsed="0.000626"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T01:00:01.404796" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-1.vanadium/data.item.json' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T01:00:01.404543" elapsed="0.000328">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-1.vanadium/data.item.json' does not exist.</status>
</kw>
<msg time="2026-04-08T01:00:01.404966" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T01:00:01.403540" elapsed="0.001451"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:00:01.405585" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1/data.item.json</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:00:01.405190" elapsed="0.000423"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T01:00:01.405923" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-1/data.item.json"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-1/data.item.json&lt;/a&gt;'.</msg>
<msg time="2026-04-08T01:00:01.406071" level="INFO">${template} =         {
          "group-id": ${i}000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
       ...</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T01:00:01.405782" elapsed="0.000315"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:00:01.406523" level="INFO">        {
          "group-id": ${i}000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-${i}",
          "group-type": "group-select"
        }
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:00:01.406275" elapsed="0.000299"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="NOT RUN" start="2026-04-08T01:00:01.407013" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:01.406658" elapsed="0.000414"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:00:01.407558" level="INFO">${mapping_to_use} = {'NODE': 'openflow:1'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:00:01.407262" elapsed="0.000323"/>
</kw>
<status status="PASS" start="2026-04-08T01:00:01.407097" elapsed="0.000577"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:01.406634" elapsed="0.001063"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:00:01.408514" level="INFO">${final_text} =         {
          "group-id": ${i}000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
       ...</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:00:01.407863" elapsed="0.000679"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T01:00:01.408594" elapsed="0.000037"/>
</return>
<msg time="2026-04-08T01:00:01.408761" level="INFO">${item_template} =         {
          "group-id": ${i}000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
       ...</msg>
<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-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1/${file_name}.</doc>
<status status="PASS" start="2026-04-08T01:00:01.401253" elapsed="0.007534"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:00:01.409221" level="INFO">${items} = []</msg>
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:00:01.408954" elapsed="0.000293"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:00:01.409791" level="INFO">${separator} = ,
</msg>
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:00:01.409406" elapsed="0.000414"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:01.410489" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:01.410250" elapsed="0.000297"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:01.410236" elapsed="0.000335"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:00:01.411070" level="INFO">${j} = 1</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:00:01.410718" elapsed="0.000378"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:00:01.412196" level="INFO">${item} =         {
          "group-id": 1000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
          ...</msg>
<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="PASS" start="2026-04-08T01:00:01.411269" elapsed="0.000959"/>
</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="PASS" start="2026-04-08T01:00:01.412397" elapsed="0.000212"/>
</kw>
<var name="${iteration}">1</var>
<status status="PASS" start="2026-04-08T01:00:01.410201" elapsed="0.002508"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="PASS" start="2026-04-08T01:00:01.409882" elapsed="0.002860"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:00:01.413356" level="INFO">${final_text} = {
  "flow-node-inventory:group": [
        {
          "group-id": 1000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
   ...</msg>
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:00:01.412902" elapsed="0.000483"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T01:00:01.413454" elapsed="0.000038"/>
</return>
<msg time="2026-04-08T01:00:01.413625" level="INFO">${data} = {
  "flow-node-inventory:group": [
        {
          "group-id": 1000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
   ...</msg>
<var>${data}</var>
<arg>folder=${folder}</arg>
<arg>name_prefix=post_</arg>
<arg>base_name=${base_name}</arg>
<arg>extension=${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>endline=${endline}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one 1 times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-08T01:00:01.351328" elapsed="0.062324"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T01:00:01.415111" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-1/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T01:00:01.414831" elapsed="0.000375">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-1/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-08T01:00:01.415301" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T01:00:01.414418" elapsed="0.000908"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:01.415701" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:01.415405" elapsed="0.000356"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:00:01.416322" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:00:01.416007" elapsed="0.000341"/>
</kw>
<status status="PASS" start="2026-04-08T01:00:01.415788" elapsed="0.000596"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:01.415383" elapsed="0.001023"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:00:01.418867" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:00:01.416570" elapsed="0.002327"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-08T01:00:01.418955" elapsed="0.000036"/>
</return>
<msg time="2026-04-08T01:00:01.419129" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T01:00:01.414028" elapsed="0.005143"/>
</kw>
<kw name="Post_To_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:00:01.420969" level="INFO">/rests/data/opendaylight-inventory:nodes/node=openflow%3A1</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:00:01.420685" elapsed="0.000337"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:00:01.421440" level="INFO">{
  "flow-node-inventory:group": [
        {
          "group-id": 1000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-1",
          "group-type": "group-select"
        }
  ]
}</msg>
<arg>${data}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:00:01.421195" elapsed="0.000295"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:00:01.421900" level="INFO">{'Content-Type': 'application/json'}</msg>
<arg>${content_type}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:00:01.421651" elapsed="0.000294"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:00:01.422356" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:00:01.422097" elapsed="0.000303"/>
</kw>
<kw name="Join_Two_Headers" owner="TemplatedRequests">
<kw name="Copy Dictionary" owner="Collections">
<msg time="2026-04-08T01:00:01.423278" level="INFO">${accumulator} = {'Content-Type': 'application/json'}</msg>
<var>${accumulator}</var>
<arg>${first}</arg>
<doc>Returns a copy of the given dictionary.</doc>
<status status="PASS" start="2026-04-08T01:00:01.423053" elapsed="0.000253"/>
</kw>
<kw name="Get Dictionary Items" owner="Collections">
<msg time="2026-04-08T01:00:01.423655" level="INFO">${items_to_add} = []</msg>
<var>${items_to_add}</var>
<arg>${second}</arg>
<doc>Returns items of the given ``dictionary`` as a list.</doc>
<status status="PASS" start="2026-04-08T01:00:01.423464" elapsed="0.000218"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${accumulator}</arg>
<arg>@{items_to_add}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:00:01.423836" elapsed="0.000232"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:00:01.424641" level="INFO">{'Content-Type': 'application/json'}</msg>
<arg>${accumulator}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:00:01.424371" elapsed="0.000318"/>
</kw>
<return>
<value>${accumulator}</value>
<status status="PASS" start="2026-04-08T01:00:01.424735" elapsed="0.000039"/>
</return>
<msg time="2026-04-08T01:00:01.424908" level="INFO">${headers} = {'Content-Type': 'application/json'}</msg>
<var>${headers}</var>
<arg>first=${content_type}</arg>
<arg>second=${accept}</arg>
<doc>Take two dicts, join them, return result. Second argument values take precedence.</doc>
<status status="PASS" start="2026-04-08T01:00:01.422627" elapsed="0.002307"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="POST On Session" owner="RequestsLibrary">
<msg time="2026-04-08T01:00:01.443332" level="INFO">POST Request : url=http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node01s3bfo0y24i1es90l47mavglv0.node0', 'Content-Length': '560', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body={
  "flow-node-inventory:group": [
        {
          "group-id": 1000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-1",
          "group-type": "group-select"
        }
  ]
} 
 </msg>
<msg time="2026-04-08T01:00:01.443490" level="INFO">POST Response : url=http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 
 status=201, reason=Created 
 headers={'Location': 'http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:group=1000', 'Content-Length': '0'} 
 body=None 
 </msg>
<msg time="2026-04-08T01:00:01.444582" level="INFO">${response} = &lt;Response [201]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T01:00:01.429125" elapsed="0.015530"/>
</kw>
<status status="PASS" start="2026-04-08T01:00:01.425017" elapsed="0.019756"/>
</branch>
<branch type="ELSE">
<kw name="POST On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:01.445324" elapsed="0.000057"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:01.444844" elapsed="0.000640"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:01.424996" elapsed="0.020537"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:00:01.453437" level="INFO"/>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:00:01.448494" elapsed="0.005002"/>
</kw>
<status status="PASS" start="2026-04-08T01:00:01.447799" elapsed="0.005742"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:01.447754" elapsed="0.005817"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:00:01.456239" level="INFO">201</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:00:01.453889" elapsed="0.002397"/>
</kw>
<status status="PASS" start="2026-04-08T01:00:01.453638" elapsed="0.002683"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:01.453618" elapsed="0.002727"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:00:01.456962" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:00:01.456554" elapsed="0.000435"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:01.457318" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:01.457059" elapsed="0.000316"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:00:01.457909" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:00:01.457609" elapsed="0.000326"/>
</kw>
<status status="PASS" start="2026-04-08T01:00:01.457398" elapsed="0.000572"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:01.457040" elapsed="0.000952"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:00:01.458530" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:00:01.458153" elapsed="0.000403"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:01.458863" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:01.458627" elapsed="0.000292"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:00:01.459413" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:00:01.459104" elapsed="0.000335"/>
</kw>
<status status="PASS" start="2026-04-08T01:00:01.458942" elapsed="0.000532"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:01.458609" elapsed="0.000886"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:00:01.459677" elapsed="0.000386"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T01:00:01.460557" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:00:01.460251" elapsed="0.000332"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T01:00:01.460742" elapsed="0.002455"/>
</kw>
<arg>${response}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T01:00:01.446607" elapsed="0.016740"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T01:00:01.463538" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:00:01.463425" elapsed="0.000160"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:01.463406" elapsed="0.000201"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T01:00:01.466137" level="INFO">${text_normalized} = </msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T01:00:01.463756" elapsed="0.002421"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T01:00:01.466227" elapsed="0.000036"/>
</return>
<msg time="2026-04-08T01:00:01.466391" level="INFO">${response_text} = </msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>data=${data}</arg>
<arg>content_type=${content_type}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>POST data to given URI, check status code and return response text.
${content_type} and ${accept} are mandatory Python objects with headers to use.
If ${normalize_json}, normalize text before returning.</doc>
<status status="PASS" start="2026-04-08T01:00:01.419582" elapsed="0.046833"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T01:00:01.466485" elapsed="0.000026"/>
</return>
<msg time="2026-04-08T01:00:01.466635" level="INFO">${response_text} = </msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>extension=json</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>content_type=${HEADERS_YANG_JSON}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>endline=${\n}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve URI and data from folder, call Post_To_Uri, return response text.</doc>
<status status="PASS" start="2026-04-08T01:00:01.262832" elapsed="0.203827"/>
</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=response</arg>
<arg>mapping=${mapping}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:01.467070" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:01.466815" elapsed="0.000325"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:01.466796" elapsed="0.000382"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T01:00:01.467212" elapsed="0.000025"/>
</return>
<arg>folder=${VAR_DIR}/add-group-1</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<arg>iterations=${iter}</arg>
<doc>Add arguments sensible for JSON data, return Post_Templated response text.
Optionally, verification against response.json (no iteration) is called.
Only subset of JSON data is verified and returned if JMES path is specified in
file ${folder}/jmespath.expr.
Response status code must be one of values from ${explicit_status_codes} if specified or one of set
created from all positive HTTP status codes together with ${additional_allowed_status_codes}.</doc>
<status status="PASS" start="2026-04-08T01:00:01.260239" elapsed="0.207096"/>
</kw>
<kw name="Post_As_Json_Templated" owner="TemplatedRequests">
<kw name="Post_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:00:01.510865" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2.vanadium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:00:01.510484" elapsed="0.000411"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T01:00:01.511852" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-2.vanadium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T01:00:01.511444" elapsed="0.000495">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-2.vanadium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-08T01:00:01.512074" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T01:00:01.511062" elapsed="0.001037"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:00:01.512689" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:00:01.512294" elapsed="0.000423"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T01:00:01.513020" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-2/location.uri"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-2/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-08T01:00:01.513201" level="INFO">${template} = /rests/data/opendaylight-inventory:nodes/node=$NODE
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T01:00:01.512882" elapsed="0.000346"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:00:01.513692" level="INFO">/rests/data/opendaylight-inventory:nodes/node=$NODE
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:00:01.513388" elapsed="0.000352"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:00:01.515240" level="INFO">mapping: {'NODE': 'openflow:1'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:00:01.514760" elapsed="0.000527"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-08T01:00:01.515877" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-08T01:00:01.515456" elapsed="0.000448"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-08T01:00:01.517050" level="INFO">${value} = openflow:1</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-08T01:00:01.516335" elapsed="0.000756"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-08T01:00:01.518762" level="INFO">${encoded} = openflow%3A1</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-08T01:00:01.518386" elapsed="0.000411"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-08T01:00:01.518875" elapsed="0.000075"/>
</return>
<msg time="2026-04-08T01:00:01.519230" level="INFO">${encoded_value} = openflow%3A1</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-08T01:00:01.517576" elapsed="0.001695"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:00:01.519501" elapsed="0.000529"/>
</kw>
<var name="${key}">NODE</var>
<var name="${value}">openflow:1</var>
<status status="PASS" start="2026-04-08T01:00:01.516149" elapsed="0.003980"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-08T01:00:01.515958" elapsed="0.004224"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-08T01:00:01.520228" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T01:00:01.520385" level="INFO">${mapping_to_use} = {'NODE': 'openflow%3A1'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-08T01:00:01.514423" elapsed="0.005989"/>
</kw>
<status status="PASS" start="2026-04-08T01:00:01.513862" elapsed="0.006583"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:01.520633" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:01.520469" elapsed="0.000233"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:01.513840" elapsed="0.006888"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:00:01.521445" level="INFO">${final_text} = /rests/data/opendaylight-inventory:nodes/node=openflow%3A1</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:00:01.520883" elapsed="0.000590"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T01:00:01.521521" 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-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2/${file_name}.</doc>
<status status="PASS" start="2026-04-08T01:00:01.509835" elapsed="0.011812"/>
</kw>
<msg time="2026-04-08T01:00:01.521702" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:00:01.497197" elapsed="0.024555"/>
</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-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:01.534448" elapsed="0.000029"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:01.546772" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:01.559083" elapsed="0.000027"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:01.559356" elapsed="0.000023"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:01.559538" elapsed="0.000020"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:01.559927" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:01.559778" elapsed="0.000205"/>
</branch>
<status status="NOT RUN" start="2026-04-08T01:00:01.559762" elapsed="0.000245"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:01.560179" elapsed="0.000022"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:01.560352" elapsed="0.000020"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:01.560520" elapsed="0.000020"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-08T01:00:01.559728" elapsed="0.000845"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-08T01:00:01.559617" elapsed="0.000983"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:01.560778" elapsed="0.000020"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-08T01:00:01.560854" elapsed="0.000015"/>
</return>
<msg time="2026-04-08T01:00:01.560981" level="INFO">${uri} = /rests/data/opendaylight-inventory:nodes/node=openflow%3A1</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one 1 times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-08T01:00:01.492941" elapsed="0.068068"/>
</kw>
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:00:01.571833" elapsed="0.000437"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:00:01.586380" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2.vanadium/post_data.prolog.json</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:00:01.585767" elapsed="0.000643"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T01:00:01.587153" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-2.vanadium/post_data.prolog.json' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T01:00:01.586916" elapsed="0.000330">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-2.vanadium/post_data.prolog.json' does not exist.</status>
</kw>
<msg time="2026-04-08T01:00:01.587389" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T01:00:01.586577" elapsed="0.000837"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:00:01.587964" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2/post_data.prolog.json</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:00:01.587582" elapsed="0.000410"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T01:00:01.588336" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-2/post_data.prolog.json"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-2/post_data.prolog.json&lt;/a&gt;'.</msg>
<msg time="2026-04-08T01:00:01.588487" level="INFO">${template} = {
  "flow-node-inventory:group": [
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T01:00:01.588194" elapsed="0.000318"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:00:01.588921" level="INFO">{
  "flow-node-inventory:group": [
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:00:01.588676" elapsed="0.000289"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="NOT RUN" start="2026-04-08T01:00:01.589345" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:01.589034" elapsed="0.000369"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:00:01.589892" level="INFO">${mapping_to_use} = {'NODE': 'openflow:1'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:00:01.589575" elapsed="0.000343"/>
</kw>
<status status="PASS" start="2026-04-08T01:00:01.589428" elapsed="0.000575"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:01.589015" elapsed="0.001014"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:00:01.590640" level="INFO">${final_text} = {
  "flow-node-inventory:group": [</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:00:01.590199" elapsed="0.000470"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T01:00:01.590719" elapsed="0.000031"/>
</return>
<msg time="2026-04-08T01:00:01.590872" level="INFO">${prolog} = {
  "flow-node-inventory:group": [</msg>
<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-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2/${file_name}.</doc>
<status status="PASS" start="2026-04-08T01:00:01.585131" elapsed="0.005765"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:00:01.604454" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2.vanadium/post_data.epilog.json</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:00:01.603953" elapsed="0.000530"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T01:00:01.605209" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-2.vanadium/post_data.epilog.json' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T01:00:01.604986" elapsed="0.000290">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-2.vanadium/post_data.epilog.json' does not exist.</status>
</kw>
<msg time="2026-04-08T01:00:01.605368" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T01:00:01.604649" elapsed="0.000743"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:00:01.605935" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2/post_data.epilog.json</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:00:01.605558" elapsed="0.000406"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T01:00:01.606298" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-2/post_data.epilog.json"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-2/post_data.epilog.json&lt;/a&gt;'.</msg>
<msg time="2026-04-08T01:00:01.606422" level="INFO">${template} =   ]
}
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T01:00:01.606145" elapsed="0.000302"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:00:01.606851" level="INFO">  ]
}
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:00:01.606605" elapsed="0.000289"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="NOT RUN" start="2026-04-08T01:00:01.607264" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:01.606961" elapsed="0.000361"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:00:01.607781" level="INFO">${mapping_to_use} = {'NODE': 'openflow:1'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:00:01.607493" elapsed="0.000314"/>
</kw>
<status status="PASS" start="2026-04-08T01:00:01.607346" elapsed="0.000496"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:01.606942" elapsed="0.000921"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:00:01.608460" level="INFO">${final_text} =   ]
}</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:00:01.608008" elapsed="0.000479"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T01:00:01.608534" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T01:00:01.608683" level="INFO">${epilog} =   ]
}</msg>
<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-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2/${file_name}.</doc>
<status status="PASS" start="2026-04-08T01:00:01.603338" elapsed="0.005370"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:00:01.622417" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2.vanadium/data.item.json</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:00:01.622026" elapsed="0.000420"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T01:00:01.623221" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-2.vanadium/data.item.json' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T01:00:01.622994" elapsed="0.000294">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-2.vanadium/data.item.json' does not exist.</status>
</kw>
<msg time="2026-04-08T01:00:01.623381" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T01:00:01.622610" elapsed="0.000839"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:00:01.624094" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2/data.item.json</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:00:01.623635" elapsed="0.000488"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T01:00:01.624441" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-2/data.item.json"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-2/data.item.json&lt;/a&gt;'.</msg>
<msg time="2026-04-08T01:00:01.624572" level="INFO">${template} =     {
      "group-id": ${i},
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": ${i}000,
            "action": [
              {
               ...</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T01:00:01.624305" elapsed="0.000294"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:00:01.624997" level="INFO">    {
      "group-id": ${i},
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": ${i}000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": ${i}000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-${i}",
      "group-type": "group-ff"
    }
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:00:01.624756" elapsed="0.000288"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="NOT RUN" start="2026-04-08T01:00:01.625432" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:01.625116" elapsed="0.000374"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:00:01.625952" level="INFO">${mapping_to_use} = {'NODE': 'openflow:1'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:00:01.625662" elapsed="0.000317"/>
</kw>
<status status="PASS" start="2026-04-08T01:00:01.625515" elapsed="0.000499"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:01.625095" elapsed="0.000941"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:00:01.626817" level="INFO">${final_text} =     {
      "group-id": ${i},
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": ${i}000,
            "action": [
              {
               ...</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:00:01.626223" elapsed="0.000623"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T01:00:01.626895" elapsed="0.000031"/>
</return>
<msg time="2026-04-08T01:00:01.627050" level="INFO">${item_template} =     {
      "group-id": ${i},
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": ${i}000,
            "action": [
              {
               ...</msg>
<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-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2/${file_name}.</doc>
<status status="PASS" start="2026-04-08T01:00:01.621474" elapsed="0.005602"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:00:01.627498" level="INFO">${items} = []</msg>
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:00:01.627257" elapsed="0.000266"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:00:01.628040" level="INFO">${separator} = ,
</msg>
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:00:01.627683" elapsed="0.000407"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:01.628768" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:01.628504" elapsed="0.000332"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:01.628490" elapsed="0.000370"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:00:01.629397" level="INFO">${j} = 1</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:00:01.629026" elapsed="0.000397"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:00:01.630370" level="INFO">${item} =     {
      "group-id": 1,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 1000,
            "action": [
              {
                "orde...</msg>
<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="PASS" start="2026-04-08T01:00:01.629578" elapsed="0.000820"/>
</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="PASS" start="2026-04-08T01:00:01.630559" elapsed="0.000205"/>
</kw>
<var name="${iteration}">1</var>
<status status="PASS" start="2026-04-08T01:00:01.628457" elapsed="0.002388"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="PASS" start="2026-04-08T01:00:01.628168" elapsed="0.002713"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:00:01.631485" level="INFO">${final_text} = {
  "flow-node-inventory:group": [
    {
      "group-id": 1,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 1000,
            "action": [
  ...</msg>
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:00:01.631039" elapsed="0.000474"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T01:00:01.631570" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T01:00:01.631725" level="INFO">${data} = {
  "flow-node-inventory:group": [
    {
      "group-id": 1,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 1000,
            "action": [
  ...</msg>
<var>${data}</var>
<arg>folder=${folder}</arg>
<arg>name_prefix=post_</arg>
<arg>base_name=${base_name}</arg>
<arg>extension=${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>endline=${endline}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one 1 times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-08T01:00:01.570952" elapsed="0.060799"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T01:00:01.633024" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-2/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T01:00:01.632784" elapsed="0.000304">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-2/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-08T01:00:01.633196" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T01:00:01.632450" elapsed="0.000772"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:01.633544" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:01.633296" elapsed="0.000304"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:00:01.634090" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:00:01.633804" elapsed="0.000312"/>
</kw>
<status status="PASS" start="2026-04-08T01:00:01.633624" elapsed="0.000527"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:01.633276" elapsed="0.000914"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:00:01.636580" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:00:01.634356" elapsed="0.002251"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-08T01:00:01.636658" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T01:00:01.636811" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T01:00:01.632103" elapsed="0.004733"/>
</kw>
<kw name="Post_To_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:00:01.638463" level="INFO">/rests/data/opendaylight-inventory:nodes/node=openflow%3A1</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:00:01.638209" elapsed="0.000300"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:00:01.638901" level="INFO">{
  "flow-node-inventory:group": [
    {
      "group-id": 1,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 1000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 1000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-1",
      "group-type": "group-ff"
    }
  ]
}</msg>
<arg>${data}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:00:01.638666" elapsed="0.000281"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:00:01.639363" level="INFO">{'Content-Type': 'application/json'}</msg>
<arg>${content_type}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:00:01.639099" elapsed="0.000308"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:00:01.639795" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:00:01.639558" elapsed="0.000279"/>
</kw>
<kw name="Join_Two_Headers" owner="TemplatedRequests">
<kw name="Copy Dictionary" owner="Collections">
<msg time="2026-04-08T01:00:01.640677" level="INFO">${accumulator} = {'Content-Type': 'application/json'}</msg>
<var>${accumulator}</var>
<arg>${first}</arg>
<doc>Returns a copy of the given dictionary.</doc>
<status status="PASS" start="2026-04-08T01:00:01.640476" elapsed="0.000227"/>
</kw>
<kw name="Get Dictionary Items" owner="Collections">
<msg time="2026-04-08T01:00:01.641027" level="INFO">${items_to_add} = []</msg>
<var>${items_to_add}</var>
<arg>${second}</arg>
<doc>Returns items of the given ``dictionary`` as a list.</doc>
<status status="PASS" start="2026-04-08T01:00:01.640857" elapsed="0.000196"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${accumulator}</arg>
<arg>@{items_to_add}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:00:01.641218" elapsed="0.000193"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:00:01.642110" level="INFO">{'Content-Type': 'application/json'}</msg>
<arg>${accumulator}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:00:01.641568" elapsed="0.000638"/>
</kw>
<return>
<value>${accumulator}</value>
<status status="PASS" start="2026-04-08T01:00:01.642289" elapsed="0.000032"/>
</return>
<msg time="2026-04-08T01:00:01.642450" level="INFO">${headers} = {'Content-Type': 'application/json'}</msg>
<var>${headers}</var>
<arg>first=${content_type}</arg>
<arg>second=${accept}</arg>
<doc>Take two dicts, join them, return result. Second argument values take precedence.</doc>
<status status="PASS" start="2026-04-08T01:00:01.640040" elapsed="0.002435"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="POST On Session" owner="RequestsLibrary">
<msg time="2026-04-08T01:00:01.657616" level="INFO">POST Request : url=http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node01s3bfo0y24i1es90l47mavglv0.node0', 'Content-Length': '460', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body={
  "flow-node-inventory:group": [
    {
      "group-id": 1,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 1000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 1000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-1",
      "group-type": "group-ff"
    }
  ]
} 
 </msg>
<msg time="2026-04-08T01:00:01.657735" level="INFO">POST Response : url=http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 
 status=201, reason=Created 
 headers={'Location': 'http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:group=1', 'Content-Length': '0'} 
 body=None 
 </msg>
<msg time="2026-04-08T01:00:01.657937" level="INFO">${response} = &lt;Response [201]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T01:00:01.644798" elapsed="0.013196"/>
</kw>
<status status="PASS" start="2026-04-08T01:00:01.642546" elapsed="0.015550"/>
</branch>
<branch type="ELSE">
<kw name="POST On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:01.658612" elapsed="0.000054"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:01.658185" elapsed="0.000585"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:01.642528" elapsed="0.016291"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:00:01.664451" level="INFO"/>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:00:01.661108" elapsed="0.003456"/>
</kw>
<status status="PASS" start="2026-04-08T01:00:01.660796" elapsed="0.003820"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:01.660769" elapsed="0.003881"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:00:01.668279" level="INFO">201</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:00:01.665037" elapsed="0.003308"/>
</kw>
<status status="PASS" start="2026-04-08T01:00:01.664727" elapsed="0.003665"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:01.664704" elapsed="0.003722"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:00:01.669223" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:00:01.668667" elapsed="0.000595"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:01.669697" elapsed="0.000029"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:01.669361" elapsed="0.000416"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:00:01.670525" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:00:01.670051" elapsed="0.000511"/>
</kw>
<status status="PASS" start="2026-04-08T01:00:01.669809" elapsed="0.000803"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:01.669335" elapsed="0.001308"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:00:01.671393" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:00:01.670870" elapsed="0.000560"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:01.671857" elapsed="0.000029"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:01.671527" elapsed="0.000410"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:00:01.672710" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:00:01.672320" elapsed="0.000416"/>
</kw>
<status status="PASS" start="2026-04-08T01:00:01.671969" elapsed="0.000803"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:01.671502" elapsed="0.001291"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:00:01.672990" elapsed="0.000375"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T01:00:01.673821" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:00:01.673535" elapsed="0.000311"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T01:00:01.674005" elapsed="0.002337"/>
</kw>
<arg>${response}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T01:00:01.659741" elapsed="0.016666"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T01:00:01.676648" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:00:01.676539" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:01.676518" elapsed="0.000196"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T01:00:01.679222" level="INFO">${text_normalized} = </msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T01:00:01.676877" elapsed="0.002372"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T01:00:01.679297" elapsed="0.000033"/>
</return>
<msg time="2026-04-08T01:00:01.679458" level="INFO">${response_text} = </msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>data=${data}</arg>
<arg>content_type=${content_type}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>POST data to given URI, check status code and return response text.
${content_type} and ${accept} are mandatory Python objects with headers to use.
If ${normalize_json}, normalize text before returning.</doc>
<status status="PASS" start="2026-04-08T01:00:01.637178" elapsed="0.042305"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T01:00:01.679552" elapsed="0.000026"/>
</return>
<msg time="2026-04-08T01:00:01.679702" level="INFO">${response_text} = </msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>extension=json</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>content_type=${HEADERS_YANG_JSON}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>endline=${\n}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve URI and data from folder, call Post_To_Uri, return response text.</doc>
<status status="PASS" start="2026-04-08T01:00:01.481682" elapsed="0.198045"/>
</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=response</arg>
<arg>mapping=${mapping}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:01.680075" elapsed="0.000054"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:01.679833" elapsed="0.000355"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:01.679816" elapsed="0.000397"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T01:00:01.680246" elapsed="0.000026"/>
</return>
<arg>folder=${VAR_DIR}/add-group-2</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<arg>iterations=${iter}</arg>
<doc>Add arguments sensible for JSON data, return Post_Templated response text.
Optionally, verification against response.json (no iteration) is called.
Only subset of JSON data is verified and returned if JMES path is specified in
file ${folder}/jmespath.expr.
Response status code must be one of values from ${explicit_status_codes} if specified or one of set
created from all positive HTTP status codes together with ${additional_allowed_status_codes}.</doc>
<status status="PASS" start="2026-04-08T01:00:01.478801" elapsed="0.201569"/>
</kw>
<kw name="Post_As_Json_Templated" owner="TemplatedRequests">
<kw name="Post_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:00:01.727341" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow.vanadium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:00:01.726927" elapsed="0.000448"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T01:00:01.728372" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-flow.vanadium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T01:00:01.727925" elapsed="0.000528">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-flow.vanadium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-08T01:00:01.728547" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T01:00:01.727560" elapsed="0.001011"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:00:01.729127" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:00:01.728740" elapsed="0.000430"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T01:00:01.729478" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-flow/location.uri"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-flow/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-08T01:00:01.729646" level="INFO">${template} = /rests/data/opendaylight-inventory:nodes/node=$NODE/flow-node-inventory:table=0
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T01:00:01.729336" elapsed="0.000340"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:00:01.730080" level="INFO">/rests/data/opendaylight-inventory:nodes/node=$NODE/flow-node-inventory:table=0
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:00:01.729834" elapsed="0.000291"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:00:01.731455" level="INFO">mapping: {'NODE': 'openflow:1'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:00:01.730875" elapsed="0.000632"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-08T01:00:01.732098" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-08T01:00:01.731677" elapsed="0.000467"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-08T01:00:01.733280" level="INFO">${value} = openflow:1</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-08T01:00:01.732566" elapsed="0.000754"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-08T01:00:01.735049" level="INFO">${encoded} = openflow%3A1</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-08T01:00:01.734667" elapsed="0.000417"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-08T01:00:01.735179" elapsed="0.000081"/>
</return>
<msg time="2026-04-08T01:00:01.735523" level="INFO">${encoded_value} = openflow%3A1</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-08T01:00:01.733855" elapsed="0.001707"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:00:01.735841" elapsed="0.000572"/>
</kw>
<var name="${key}">NODE</var>
<var name="${value}">openflow:1</var>
<status status="PASS" start="2026-04-08T01:00:01.732394" elapsed="0.004116"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-08T01:00:01.732216" elapsed="0.004334"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-08T01:00:01.736594" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T01:00:01.736753" level="INFO">${mapping_to_use} = {'NODE': 'openflow%3A1'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-08T01:00:01.730545" elapsed="0.006233"/>
</kw>
<status status="PASS" start="2026-04-08T01:00:01.730222" elapsed="0.006588"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:01.736986" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:01.736835" elapsed="0.000207"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:01.730196" elapsed="0.006867"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:00:01.737789" level="INFO">${final_text} = /rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:00:01.737221" elapsed="0.000595"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T01:00:01.737863" 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-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow/${file_name}.</doc>
<status status="PASS" start="2026-04-08T01:00:01.726275" elapsed="0.011710"/>
</kw>
<msg time="2026-04-08T01:00:01.738040" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:00:01.713404" elapsed="0.024688"/>
</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-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:01.750839" 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-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:01.763086" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:01.775555" elapsed="0.000039"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:01.775923" elapsed="0.000024"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:01.776110" elapsed="0.000036"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:01.776574" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:01.776422" elapsed="0.000207"/>
</branch>
<status status="NOT RUN" start="2026-04-08T01:00:01.776405" elapsed="0.000253"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:01.776803" elapsed="0.000020"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:01.776968" elapsed="0.000019"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:01.777132" elapsed="0.000019"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-08T01:00:01.776365" elapsed="0.000836"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-08T01:00:01.776237" elapsed="0.000992"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:01.777378" elapsed="0.000020"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-08T01:00:01.777457" elapsed="0.000016"/>
</return>
<msg time="2026-04-08T01:00:01.777611" level="INFO">${uri} = /rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one 1 times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-08T01:00:01.708829" elapsed="0.068809"/>
</kw>
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:00:01.788823" elapsed="0.000460"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:00:01.802673" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow.vanadium/post_data.prolog.json</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:00:01.802252" elapsed="0.000452"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T01:00:01.803500" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-flow.vanadium/post_data.prolog.json' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T01:00:01.803230" elapsed="0.000354">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-flow.vanadium/post_data.prolog.json' does not exist.</status>
</kw>
<msg time="2026-04-08T01:00:01.803677" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T01:00:01.802871" elapsed="0.000830"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:00:01.804347" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow/post_data.prolog.json</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:00:01.803867" elapsed="0.000509"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T01:00:01.804682" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-flow/post_data.prolog.json"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-flow/post_data.prolog.json&lt;/a&gt;'.</msg>
<msg time="2026-04-08T01:00:01.804849" level="INFO">${template} = {
  "flow": [
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T01:00:01.804540" elapsed="0.000334"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:00:01.805295" level="INFO">{
  "flow": [
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:00:01.805032" elapsed="0.000308"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="NOT RUN" start="2026-04-08T01:00:01.805730" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:01.805417" elapsed="0.000370"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:00:01.806269" level="INFO">${mapping_to_use} = {'NODE': 'openflow:1'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:00:01.805961" elapsed="0.000335"/>
</kw>
<status status="PASS" start="2026-04-08T01:00:01.805814" elapsed="0.000518"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:01.805394" elapsed="0.001025"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:00:01.807016" level="INFO">${final_text} = {
  "flow": [</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:00:01.806570" elapsed="0.000473"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T01:00:01.807093" elapsed="0.000032"/>
</return>
<msg time="2026-04-08T01:00:01.807267" level="INFO">${prolog} = {
  "flow": [</msg>
<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-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow/${file_name}.</doc>
<status status="PASS" start="2026-04-08T01:00:01.801621" elapsed="0.005671"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:00:01.820783" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow.vanadium/post_data.epilog.json</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:00:01.820400" elapsed="0.000412"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T01:00:01.821544" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-flow.vanadium/post_data.epilog.json' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T01:00:01.821326" elapsed="0.000284">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-flow.vanadium/post_data.epilog.json' does not exist.</status>
</kw>
<msg time="2026-04-08T01:00:01.821703" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T01:00:01.820975" elapsed="0.000752"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:00:01.822286" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow/post_data.epilog.json</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:00:01.821891" elapsed="0.000423"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T01:00:01.822607" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-flow/post_data.epilog.json"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-flow/post_data.epilog.json&lt;/a&gt;'.</msg>
<msg time="2026-04-08T01:00:01.822793" level="INFO">${template} =   ]
}
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T01:00:01.822474" elapsed="0.000344"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:00:01.823241" level="INFO">  ]
}
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:00:01.822977" elapsed="0.000308"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="NOT RUN" start="2026-04-08T01:00:01.823639" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:01.823353" elapsed="0.000343"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:00:01.824182" level="INFO">${mapping_to_use} = {'NODE': 'openflow:1'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:00:01.823867" elapsed="0.000345"/>
</kw>
<status status="PASS" start="2026-04-08T01:00:01.823721" elapsed="0.000526"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:01.823334" elapsed="0.000935"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:00:01.824833" level="INFO">${final_text} =   ]
}</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:00:01.824415" elapsed="0.000445"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T01:00:01.824921" elapsed="0.000031"/>
</return>
<msg time="2026-04-08T01:00:01.825076" level="INFO">${epilog} =   ]
}</msg>
<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-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow/${file_name}.</doc>
<status status="PASS" start="2026-04-08T01:00:01.819707" elapsed="0.005393"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:00:01.838863" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow.vanadium/data.item.json</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:00:01.838492" elapsed="0.000399"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T01:00:01.839636" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-flow.vanadium/data.item.json' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T01:00:01.839416" elapsed="0.000351">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-flow.vanadium/data.item.json' does not exist.</status>
</kw>
<msg time="2026-04-08T01:00:01.839913" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T01:00:01.839054" elapsed="0.000891"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:00:01.840605" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow/data.item.json</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:00:01.840114" elapsed="0.000520"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T01:00:01.840934" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-flow/data.item.json"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-flow/data.item.json&lt;/a&gt;'.</msg>
<msg time="2026-04-08T01:00:01.841063" level="INFO">${template} =         {
          "id": "${i}",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048...</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T01:00:01.840799" elapsed="0.000291"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:00:01.841508" level="INFO">        {
          "id": "${i}",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.${i}/32"
          },
          "flow-name": "Flow-${i}",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": ${i}
                      }
                    }
                  ]
                }
              }
            ]
          }
        }
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:00:01.841265" elapsed="0.000292"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="NOT RUN" start="2026-04-08T01:00:01.841919" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:01.841626" elapsed="0.000350"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:00:01.842453" level="INFO">${mapping_to_use} = {'NODE': 'openflow:1'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:00:01.842147" elapsed="0.000332"/>
</kw>
<status status="PASS" start="2026-04-08T01:00:01.842001" elapsed="0.000513"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:01.841606" elapsed="0.000929"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:00:01.843322" level="INFO">${final_text} =         {
          "id": "${i}",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048...</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:00:01.842687" elapsed="0.000664"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T01:00:01.843399" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T01:00:01.843552" level="INFO">${item_template} =         {
          "id": "${i}",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048...</msg>
<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-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow/${file_name}.</doc>
<status status="PASS" start="2026-04-08T01:00:01.837915" elapsed="0.005663"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:00:01.843978" level="INFO">${items} = []</msg>
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:00:01.843740" elapsed="0.000263"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:00:01.844571" level="INFO">${separator} = ,
</msg>
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:00:01.844206" elapsed="0.000391"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:01.845244" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:01.844991" elapsed="0.000310"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:01.844977" elapsed="0.000348"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:00:01.845816" level="INFO">${j} = 1</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:00:01.845468" elapsed="0.000374"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:00:01.846795" level="INFO">${item} =         {
          "id": "1",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
  ...</msg>
<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="PASS" start="2026-04-08T01:00:01.845997" elapsed="0.000827"/>
</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="PASS" start="2026-04-08T01:00:01.846982" elapsed="0.000219"/>
</kw>
<var name="${iteration}">1</var>
<status status="PASS" start="2026-04-08T01:00:01.844943" elapsed="0.002337"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="PASS" start="2026-04-08T01:00:01.844660" elapsed="0.002653"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:00:01.847896" level="INFO">${final_text} = {
  "flow": [
        {
          "id": "1",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "...</msg>
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:00:01.847471" elapsed="0.000453"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T01:00:01.847979" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T01:00:01.848128" level="INFO">${data} = {
  "flow": [
        {
          "id": "1",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "...</msg>
<var>${data}</var>
<arg>folder=${folder}</arg>
<arg>name_prefix=post_</arg>
<arg>base_name=${base_name}</arg>
<arg>extension=${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>endline=${endline}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one 1 times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-08T01:00:01.787740" elapsed="0.060446"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T01:00:01.849442" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-flow/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T01:00:01.849203" elapsed="0.000301">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-flow/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-08T01:00:01.849595" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T01:00:01.848851" elapsed="0.000768"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:01.849932" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:01.849689" elapsed="0.000299"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:00:01.850526" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:00:01.850227" elapsed="0.000325"/>
</kw>
<status status="PASS" start="2026-04-08T01:00:01.850012" elapsed="0.000575"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:01.849671" elapsed="0.000938"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:00:01.852987" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:00:01.850763" elapsed="0.002252"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-08T01:00:01.853066" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T01:00:01.853238" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T01:00:01.848526" elapsed="0.004738"/>
</kw>
<kw name="Post_To_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:00:01.854913" level="INFO">/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:00:01.854521" elapsed="0.000437"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:00:01.855372" level="INFO">{
  "flow": [
        {
          "id": "1",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.1/32"
          },
          "flow-name": "Flow-1",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 1
                      }
                    }
                  ]
                }
              }
            ]
          }
        }
  ]
}</msg>
<arg>${data}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:00:01.855113" elapsed="0.000308"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:00:01.855816" level="INFO">{'Content-Type': 'application/json'}</msg>
<arg>${content_type}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:00:01.855572" elapsed="0.000287"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:00:01.856348" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:00:01.856082" elapsed="0.000309"/>
</kw>
<kw name="Join_Two_Headers" owner="TemplatedRequests">
<kw name="Copy Dictionary" owner="Collections">
<msg time="2026-04-08T01:00:01.857201" level="INFO">${accumulator} = {'Content-Type': 'application/json'}</msg>
<var>${accumulator}</var>
<arg>${first}</arg>
<doc>Returns a copy of the given dictionary.</doc>
<status status="PASS" start="2026-04-08T01:00:01.856989" elapsed="0.000239"/>
</kw>
<kw name="Get Dictionary Items" owner="Collections">
<msg time="2026-04-08T01:00:01.857550" level="INFO">${items_to_add} = []</msg>
<var>${items_to_add}</var>
<arg>${second}</arg>
<doc>Returns items of the given ``dictionary`` as a list.</doc>
<status status="PASS" start="2026-04-08T01:00:01.857381" elapsed="0.000195"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${accumulator}</arg>
<arg>@{items_to_add}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:00:01.857724" elapsed="0.000229"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:00:01.858376" level="INFO">{'Content-Type': 'application/json'}</msg>
<arg>${accumulator}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:00:01.858112" elapsed="0.000307"/>
</kw>
<return>
<value>${accumulator}</value>
<status status="PASS" start="2026-04-08T01:00:01.858461" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T01:00:01.858613" level="INFO">${headers} = {'Content-Type': 'application/json'}</msg>
<var>${headers}</var>
<arg>first=${content_type}</arg>
<arg>second=${accept}</arg>
<doc>Take two dicts, join them, return result. Second argument values take precedence.</doc>
<status status="PASS" start="2026-04-08T01:00:01.856590" elapsed="0.002048"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="POST On Session" owner="RequestsLibrary">
<msg time="2026-04-08T01:00:01.874010" level="INFO">POST Request : url=http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node01s3bfo0y24i1es90l47mavglv0.node0', 'Content-Length': '777', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body={
  "flow": [
        {
          "id": "1",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.1/32"
          },
          "flow-name": "Flow-1",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 1
                      }
                    }
                  ]
                }
              }
            ]
          }
        }
  ]
} 
 </msg>
<msg time="2026-04-08T01:00:01.874067" level="INFO">POST Response : url=http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0 
 status=201, reason=Created 
 headers={'Location': 'http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0/flow=1', 'Content-Length': '0'} 
 body=None 
 </msg>
<msg time="2026-04-08T01:00:01.874173" level="INFO">${response} = &lt;Response [201]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T01:00:01.860931" elapsed="0.013270"/>
</kw>
<status status="PASS" start="2026-04-08T01:00:01.858708" elapsed="0.015539"/>
</branch>
<branch type="ELSE">
<kw name="POST On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:01.874428" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:01.874274" elapsed="0.000221"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:01.858690" elapsed="0.015826"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:00:01.877982" level="INFO"/>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:00:01.875550" elapsed="0.002478"/>
</kw>
<status status="PASS" start="2026-04-08T01:00:01.875323" elapsed="0.002740"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:01.875304" elapsed="0.002784"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:00:01.880777" level="INFO">201</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:00:01.878390" elapsed="0.002494"/>
</kw>
<status status="PASS" start="2026-04-08T01:00:01.878144" elapsed="0.002815"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:01.878127" elapsed="0.002957"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:00:01.882385" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:00:01.881503" elapsed="0.000945"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:01.883138" elapsed="0.000081"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:01.882603" elapsed="0.000697"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:00:01.884476" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:00:01.883722" elapsed="0.000814"/>
</kw>
<status status="PASS" start="2026-04-08T01:00:01.883354" elapsed="0.001258"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:01.882564" elapsed="0.002095"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:00:01.885207" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:00:01.884828" elapsed="0.000407"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:01.885544" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:01.885305" elapsed="0.000294"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:00:01.886079" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:00:01.885786" elapsed="0.000318"/>
</kw>
<status status="PASS" start="2026-04-08T01:00:01.885623" elapsed="0.000516"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:01.885286" elapsed="0.000890"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:00:01.886330" elapsed="0.000346"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T01:00:01.887174" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:00:01.886880" elapsed="0.000322"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T01:00:01.887360" elapsed="0.002300"/>
</kw>
<arg>${response}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T01:00:01.874866" elapsed="0.014857"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T01:00:01.889902" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:00:01.889796" elapsed="0.000150"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:01.889778" elapsed="0.000189"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T01:00:01.892555" level="INFO">${text_normalized} = </msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T01:00:01.890112" elapsed="0.002471"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T01:00:01.892631" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T01:00:01.892786" level="INFO">${response_text} = </msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>data=${data}</arg>
<arg>content_type=${content_type}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>POST data to given URI, check status code and return response text.
${content_type} and ${accept} are mandatory Python objects with headers to use.
If ${normalize_json}, normalize text before returning.</doc>
<status status="PASS" start="2026-04-08T01:00:01.853583" elapsed="0.039228"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T01:00:01.892878" elapsed="0.000026"/>
</return>
<msg time="2026-04-08T01:00:01.893030" level="INFO">${response_text} = </msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>extension=json</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>content_type=${HEADERS_YANG_JSON}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>endline=${\n}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve URI and data from folder, call Post_To_Uri, return response text.</doc>
<status status="PASS" start="2026-04-08T01:00:01.697071" elapsed="0.195983"/>
</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=response</arg>
<arg>mapping=${mapping}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:01.893435" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:01.893192" elapsed="0.000311"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:01.893141" elapsed="0.000386"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T01:00:01.893560" elapsed="0.000025"/>
</return>
<arg>folder=${VAR_DIR}/add-flow</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<arg>iterations=${iter}</arg>
<doc>Add arguments sensible for JSON data, return Post_Templated response text.
Optionally, verification against response.json (no iteration) is called.
Only subset of JSON data is verified and returned if JMES path is specified in
file ${folder}/jmespath.expr.
Response status code must be one of values from ${explicit_status_codes} if specified or one of set
created from all positive HTTP status codes together with ${additional_allowed_status_codes}.</doc>
<status status="PASS" start="2026-04-08T01:00:01.693755" elapsed="0.199928"/>
</kw>
<var name="${switch}">1</var>
<status status="PASS" start="2026-04-08T01:00:01.247820" elapsed="0.645908"/>
</iter>
<iter>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-08T01:00:01.894408" level="INFO">&amp;{mapping} = { NODE=openflow:2 }</msg>
<var>&amp;{mapping}</var>
<arg>NODE=openflow:${switch}</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-08T01:00:01.893984" elapsed="0.000452"/>
</kw>
<kw name="Post_As_Json_Templated" owner="TemplatedRequests">
<kw name="Post_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:00:01.938812" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1.vanadium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:00:01.938428" elapsed="0.000413"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T01:00:01.939756" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-1.vanadium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T01:00:01.939364" elapsed="0.000471">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-1.vanadium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-08T01:00:01.939928" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T01:00:01.939011" elapsed="0.000942"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:00:01.940544" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:00:01.940118" elapsed="0.000455"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T01:00:01.940939" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-1/location.uri"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-1/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-08T01:00:01.941104" level="INFO">${template} = /rests/data/opendaylight-inventory:nodes/node=$NODE
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T01:00:01.940800" elapsed="0.000330"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:00:01.941550" level="INFO">/rests/data/opendaylight-inventory:nodes/node=$NODE
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:00:01.941304" elapsed="0.000290"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:00:01.942769" level="INFO">mapping: {'NODE': 'openflow:2'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:00:01.942301" elapsed="0.000514"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-08T01:00:01.943421" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-08T01:00:01.942979" elapsed="0.000469"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-08T01:00:01.944548" level="INFO">${value} = openflow:2</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-08T01:00:01.943847" elapsed="0.000742"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-08T01:00:01.946268" level="INFO">${encoded} = openflow%3A2</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-08T01:00:01.945871" elapsed="0.000434"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-08T01:00:01.946381" elapsed="0.000074"/>
</return>
<msg time="2026-04-08T01:00:01.946744" level="INFO">${encoded_value} = openflow%3A2</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-08T01:00:01.945044" elapsed="0.001746"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:00:01.947017" elapsed="0.000540"/>
</kw>
<var name="${key}">NODE</var>
<var name="${value}">openflow:2</var>
<status status="PASS" start="2026-04-08T01:00:01.943677" elapsed="0.003978"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-08T01:00:01.943498" elapsed="0.004195"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-08T01:00:01.947736" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T01:00:01.947894" level="INFO">${mapping_to_use} = {'NODE': 'openflow%3A2'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-08T01:00:01.941958" elapsed="0.005961"/>
</kw>
<status status="PASS" start="2026-04-08T01:00:01.941663" elapsed="0.006288"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:01.948125" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:01.947976" elapsed="0.000221"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:01.941643" elapsed="0.006585"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:00:01.950248" level="INFO">${final_text} = /rests/data/opendaylight-inventory:nodes/node=openflow%3A2</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:00:01.948375" elapsed="0.001904"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T01:00:01.950329" elapsed="0.000030"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1/${file_name}.</doc>
<status status="PASS" start="2026-04-08T01:00:01.937795" elapsed="0.012677"/>
</kw>
<msg time="2026-04-08T01:00:01.950528" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:00:01.924681" elapsed="0.025897"/>
</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-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:01.963116" elapsed="0.000029"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:01.975516" elapsed="0.000029"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:01.987815" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:01.988028" elapsed="0.000022"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:01.988224" elapsed="0.000048"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:01.988645" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:01.988496" elapsed="0.000204"/>
</branch>
<status status="NOT RUN" start="2026-04-08T01:00:01.988480" elapsed="0.000245"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:01.988866" elapsed="0.000020"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:01.989033" elapsed="0.000019"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:01.989214" elapsed="0.000021"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-08T01:00:01.988445" elapsed="0.000824"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-08T01:00:01.988336" elapsed="0.000960"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:01.989444" elapsed="0.000020"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-08T01:00:01.989521" elapsed="0.000015"/>
</return>
<msg time="2026-04-08T01:00:01.989645" level="INFO">${uri} = /rests/data/opendaylight-inventory:nodes/node=openflow%3A2</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one 1 times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-08T01:00:01.920453" elapsed="0.069218"/>
</kw>
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:00:02.000785" elapsed="0.000496"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:00:02.018805" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1.vanadium/post_data.prolog.json</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:00:02.018359" elapsed="0.000481"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T01:00:02.019692" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-1.vanadium/post_data.prolog.json' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T01:00:02.019425" elapsed="0.000347">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-1.vanadium/post_data.prolog.json' does not exist.</status>
</kw>
<msg time="2026-04-08T01:00:02.019866" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T01:00:02.019020" elapsed="0.000872"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:00:02.020521" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1/post_data.prolog.json</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:00:02.020062" elapsed="0.000487"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T01:00:02.020869" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-1/post_data.prolog.json"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-1/post_data.prolog.json&lt;/a&gt;'.</msg>
<msg time="2026-04-08T01:00:02.021040" level="INFO">${template} = {
  "flow-node-inventory:group": [
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T01:00:02.020723" elapsed="0.000342"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:00:02.021579" level="INFO">{
  "flow-node-inventory:group": [
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:00:02.021325" elapsed="0.000299"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="NOT RUN" start="2026-04-08T01:00:02.022086" elapsed="0.000033"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:02.021711" elapsed="0.000475"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:00:02.022662" level="INFO">${mapping_to_use} = {'NODE': 'openflow:2'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:00:02.022368" elapsed="0.000320"/>
</kw>
<status status="PASS" start="2026-04-08T01:00:02.022215" elapsed="0.000508"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:02.021684" elapsed="0.001061"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:00:02.023360" level="INFO">${final_text} = {
  "flow-node-inventory:group": [</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:00:02.022894" elapsed="0.000493"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T01:00:02.023439" elapsed="0.000035"/>
</return>
<msg time="2026-04-08T01:00:02.023599" level="INFO">${prolog} = {
  "flow-node-inventory:group": [</msg>
<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-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1/${file_name}.</doc>
<status status="PASS" start="2026-04-08T01:00:02.017532" elapsed="0.006092"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:00:02.037970" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1.vanadium/post_data.epilog.json</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:00:02.037596" elapsed="0.000403"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T01:00:02.038756" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-1.vanadium/post_data.epilog.json' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T01:00:02.038515" elapsed="0.000310">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-1.vanadium/post_data.epilog.json' does not exist.</status>
</kw>
<msg time="2026-04-08T01:00:02.038917" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T01:00:02.038180" elapsed="0.000762"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:00:02.039511" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1/post_data.epilog.json</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:00:02.039109" elapsed="0.000429"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T01:00:02.039833" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-1/post_data.epilog.json"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-1/post_data.epilog.json&lt;/a&gt;'.</msg>
<msg time="2026-04-08T01:00:02.039969" level="INFO">${template} =   ]
}
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T01:00:02.039700" elapsed="0.000293"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:00:02.040495" level="INFO">  ]
}
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:00:02.040151" elapsed="0.000388"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="NOT RUN" start="2026-04-08T01:00:02.040894" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:02.040607" elapsed="0.000344"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:00:02.041431" level="INFO">${mapping_to_use} = {'NODE': 'openflow:2'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:00:02.041122" elapsed="0.000335"/>
</kw>
<status status="PASS" start="2026-04-08T01:00:02.040975" elapsed="0.000517"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:02.040588" elapsed="0.000925"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:00:02.042087" level="INFO">${final_text} =   ]
}</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:00:02.041662" elapsed="0.000452"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T01:00:02.042177" elapsed="0.000031"/>
</return>
<msg time="2026-04-08T01:00:02.042386" level="INFO">${epilog} =   ]
}</msg>
<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-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1/${file_name}.</doc>
<status status="PASS" start="2026-04-08T01:00:02.036942" elapsed="0.005472"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:00:02.055746" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1.vanadium/data.item.json</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:00:02.055374" elapsed="0.000400"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T01:00:02.056531" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-1.vanadium/data.item.json' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T01:00:02.056316" elapsed="0.000278">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-1.vanadium/data.item.json' does not exist.</status>
</kw>
<msg time="2026-04-08T01:00:02.056686" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T01:00:02.055936" elapsed="0.000775"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:00:02.057279" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1/data.item.json</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:00:02.056876" elapsed="0.000431"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T01:00:02.057604" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-1/data.item.json"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-1/data.item.json&lt;/a&gt;'.</msg>
<msg time="2026-04-08T01:00:02.057729" level="INFO">${template} =         {
          "group-id": ${i}000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
       ...</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T01:00:02.057469" elapsed="0.000287"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:00:02.058170" level="INFO">        {
          "group-id": ${i}000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-${i}",
          "group-type": "group-select"
        }
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:00:02.057916" elapsed="0.000306"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="NOT RUN" start="2026-04-08T01:00:02.058574" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:02.058289" elapsed="0.000342"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:00:02.059091" level="INFO">${mapping_to_use} = {'NODE': 'openflow:2'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:00:02.058800" elapsed="0.000317"/>
</kw>
<status status="PASS" start="2026-04-08T01:00:02.058655" elapsed="0.000497"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:02.058270" elapsed="0.000919"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:00:02.059923" level="INFO">${final_text} =         {
          "group-id": ${i}000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
       ...</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:00:02.059338" elapsed="0.000613"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T01:00:02.059999" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T01:00:02.060152" level="INFO">${item_template} =         {
          "group-id": ${i}000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
       ...</msg>
<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-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1/${file_name}.</doc>
<status status="PASS" start="2026-04-08T01:00:02.054815" elapsed="0.005381"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:00:02.060620" level="INFO">${items} = []</msg>
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:00:02.060373" elapsed="0.000272"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:00:02.061186" level="INFO">${separator} = ,
</msg>
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:00:02.060810" elapsed="0.000403"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:02.061839" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:02.061604" elapsed="0.000291"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:02.061589" elapsed="0.000329"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:00:02.062426" level="INFO">${j} = 1</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:00:02.062060" elapsed="0.000393"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:00:02.063422" level="INFO">${item} =         {
          "group-id": 1000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
          ...</msg>
<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="PASS" start="2026-04-08T01:00:02.062655" elapsed="0.000796"/>
</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="PASS" start="2026-04-08T01:00:02.063609" elapsed="0.000201"/>
</kw>
<var name="${iteration}">1</var>
<status status="PASS" start="2026-04-08T01:00:02.061557" elapsed="0.002291"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="PASS" start="2026-04-08T01:00:02.061275" elapsed="0.002605"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:00:02.064510" level="INFO">${final_text} = {
  "flow-node-inventory:group": [
        {
          "group-id": 1000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
   ...</msg>
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:00:02.064036" elapsed="0.000503"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T01:00:02.064597" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T01:00:02.064748" level="INFO">${data} = {
  "flow-node-inventory:group": [
        {
          "group-id": 1000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
   ...</msg>
<var>${data}</var>
<arg>folder=${folder}</arg>
<arg>name_prefix=post_</arg>
<arg>base_name=${base_name}</arg>
<arg>extension=${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>endline=${endline}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one 1 times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-08T01:00:01.999829" elapsed="0.064946"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T01:00:02.066041" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-1/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T01:00:02.065797" elapsed="0.000308">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-1/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-08T01:00:02.066214" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T01:00:02.065458" elapsed="0.000782"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:02.066557" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:02.066311" elapsed="0.000302"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:00:02.067105" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:00:02.066819" elapsed="0.000311"/>
</kw>
<status status="PASS" start="2026-04-08T01:00:02.066638" elapsed="0.000542"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:02.066292" elapsed="0.000911"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:00:02.069549" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:00:02.067357" elapsed="0.002219"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-08T01:00:02.069627" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T01:00:02.069777" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T01:00:02.065113" elapsed="0.004689"/>
</kw>
<kw name="Post_To_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:00:02.071442" level="INFO">/rests/data/opendaylight-inventory:nodes/node=openflow%3A2</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:00:02.071067" elapsed="0.000422"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:00:02.071877" level="INFO">{
  "flow-node-inventory:group": [
        {
          "group-id": 1000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-1",
          "group-type": "group-select"
        }
  ]
}</msg>
<arg>${data}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:00:02.071643" elapsed="0.000282"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:00:02.072379" level="INFO">{'Content-Type': 'application/json'}</msg>
<arg>${content_type}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:00:02.072079" elapsed="0.000347"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:00:02.072818" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:00:02.072580" elapsed="0.000281"/>
</kw>
<kw name="Join_Two_Headers" owner="TemplatedRequests">
<kw name="Copy Dictionary" owner="Collections">
<msg time="2026-04-08T01:00:02.073692" level="INFO">${accumulator} = {'Content-Type': 'application/json'}</msg>
<var>${accumulator}</var>
<arg>${first}</arg>
<doc>Returns a copy of the given dictionary.</doc>
<status status="PASS" start="2026-04-08T01:00:02.073493" elapsed="0.000267"/>
</kw>
<kw name="Get Dictionary Items" owner="Collections">
<msg time="2026-04-08T01:00:02.074095" level="INFO">${items_to_add} = []</msg>
<var>${items_to_add}</var>
<arg>${second}</arg>
<doc>Returns items of the given ``dictionary`` as a list.</doc>
<status status="PASS" start="2026-04-08T01:00:02.073922" elapsed="0.000198"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${accumulator}</arg>
<arg>@{items_to_add}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:00:02.074289" elapsed="0.000193"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:00:02.074885" level="INFO">{'Content-Type': 'application/json'}</msg>
<arg>${accumulator}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:00:02.074638" elapsed="0.000290"/>
</kw>
<return>
<value>${accumulator}</value>
<status status="PASS" start="2026-04-08T01:00:02.074968" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T01:00:02.075122" level="INFO">${headers} = {'Content-Type': 'application/json'}</msg>
<var>${headers}</var>
<arg>first=${content_type}</arg>
<arg>second=${accept}</arg>
<doc>Take two dicts, join them, return result. Second argument values take precedence.</doc>
<status status="PASS" start="2026-04-08T01:00:02.073070" elapsed="0.002077"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="POST On Session" owner="RequestsLibrary">
<msg time="2026-04-08T01:00:02.090416" level="INFO">POST Request : url=http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A2 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A2 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node01s3bfo0y24i1es90l47mavglv0.node0', 'Content-Length': '560', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body={
  "flow-node-inventory:group": [
        {
          "group-id": 1000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-1",
          "group-type": "group-select"
        }
  ]
} 
 </msg>
<msg time="2026-04-08T01:00:02.090472" level="INFO">POST Response : url=http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A2 
 status=201, reason=Created 
 headers={'Location': 'http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A2/flow-node-inventory:group=1000', 'Content-Length': '0'} 
 body=None 
 </msg>
<msg time="2026-04-08T01:00:02.090586" level="INFO">${response} = &lt;Response [201]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T01:00:02.077496" elapsed="0.013116"/>
</kw>
<status status="PASS" start="2026-04-08T01:00:02.075243" elapsed="0.015430"/>
</branch>
<branch type="ELSE">
<kw name="POST On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:02.091078" elapsed="0.000049"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:02.090736" elapsed="0.000526"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:02.075225" elapsed="0.016088"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:00:02.099145" level="INFO"/>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:00:02.093841" elapsed="0.005434"/>
</kw>
<status status="PASS" start="2026-04-08T01:00:02.093343" elapsed="0.006010"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:02.093301" elapsed="0.006107"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:00:02.102681" level="INFO">201</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:00:02.100027" elapsed="0.002699"/>
</kw>
<status status="PASS" start="2026-04-08T01:00:02.099532" elapsed="0.003227"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:02.099495" elapsed="0.003290"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:00:02.103423" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:00:02.102953" elapsed="0.000498"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:02.103759" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:02.103520" elapsed="0.000295"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:00:02.104336" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:00:02.104003" elapsed="0.000360"/>
</kw>
<status status="PASS" start="2026-04-08T01:00:02.103839" elapsed="0.000559"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:02.103502" elapsed="0.000921"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:00:02.104951" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:00:02.104587" elapsed="0.000390"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:02.105322" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:02.105046" elapsed="0.000333"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:00:02.105860" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:00:02.105569" elapsed="0.000317"/>
</kw>
<status status="PASS" start="2026-04-08T01:00:02.105402" elapsed="0.000519"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:02.105028" elapsed="0.000914"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:00:02.106093" elapsed="0.000359"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T01:00:02.106976" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:00:02.106697" elapsed="0.000304"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T01:00:02.107176" elapsed="0.002314"/>
</kw>
<arg>${response}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T01:00:02.092215" elapsed="0.017338"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T01:00:02.109729" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:00:02.109626" elapsed="0.000147"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:02.109607" elapsed="0.000187"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T01:00:02.112321" level="INFO">${text_normalized} = </msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T01:00:02.109940" elapsed="0.002409"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T01:00:02.112398" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T01:00:02.112552" level="INFO">${response_text} = </msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>data=${data}</arg>
<arg>content_type=${content_type}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>POST data to given URI, check status code and return response text.
${content_type} and ${accept} are mandatory Python objects with headers to use.
If ${normalize_json}, normalize text before returning.</doc>
<status status="PASS" start="2026-04-08T01:00:02.070124" elapsed="0.042452"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T01:00:02.112643" elapsed="0.000027"/>
</return>
<msg time="2026-04-08T01:00:02.112792" level="INFO">${response_text} = </msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>extension=json</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>content_type=${HEADERS_YANG_JSON}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>endline=${\n}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve URI and data from folder, call Post_To_Uri, return response text.</doc>
<status status="PASS" start="2026-04-08T01:00:01.908672" elapsed="0.204144"/>
</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=response</arg>
<arg>mapping=${mapping}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:02.113167" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:02.112919" elapsed="0.000319"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:02.112902" elapsed="0.000359"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T01:00:02.113293" elapsed="0.000026"/>
</return>
<arg>folder=${VAR_DIR}/add-group-1</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<arg>iterations=${iter}</arg>
<doc>Add arguments sensible for JSON data, return Post_Templated response text.
Optionally, verification against response.json (no iteration) is called.
Only subset of JSON data is verified and returned if JMES path is specified in
file ${folder}/jmespath.expr.
Response status code must be one of values from ${explicit_status_codes} if specified or one of set
created from all positive HTTP status codes together with ${additional_allowed_status_codes}.</doc>
<status status="PASS" start="2026-04-08T01:00:01.905894" elapsed="0.207521"/>
</kw>
<kw name="Post_As_Json_Templated" owner="TemplatedRequests">
<kw name="Post_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:00:02.156828" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2.vanadium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:00:02.156450" elapsed="0.000407"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T01:00:02.157701" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-2.vanadium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T01:00:02.157373" elapsed="0.000399">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-2.vanadium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-08T01:00:02.157864" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T01:00:02.157020" elapsed="0.000868"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:00:02.158465" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:00:02.158054" elapsed="0.000438"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T01:00:02.158797" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-2/location.uri"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-2/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-08T01:00:02.158968" level="INFO">${template} = /rests/data/opendaylight-inventory:nodes/node=$NODE
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T01:00:02.158655" elapsed="0.000339"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:00:02.159419" level="INFO">/rests/data/opendaylight-inventory:nodes/node=$NODE
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:00:02.159153" elapsed="0.000310"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:00:02.160674" level="INFO">mapping: {'NODE': 'openflow:2'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:00:02.160151" elapsed="0.000568"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-08T01:00:02.161325" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-08T01:00:02.160884" elapsed="0.000468"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-08T01:00:02.162415" level="INFO">${value} = openflow:2</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-08T01:00:02.161751" elapsed="0.000704"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-08T01:00:02.164145" level="INFO">${encoded} = openflow%3A2</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-08T01:00:02.163729" elapsed="0.000468"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-08T01:00:02.164275" elapsed="0.000087"/>
</return>
<msg time="2026-04-08T01:00:02.164635" level="INFO">${encoded_value} = openflow%3A2</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-08T01:00:02.162906" elapsed="0.001768"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:00:02.164900" elapsed="0.000527"/>
</kw>
<var name="${key}">NODE</var>
<var name="${value}">openflow:2</var>
<status status="PASS" start="2026-04-08T01:00:02.161576" elapsed="0.003950"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-08T01:00:02.161403" elapsed="0.004162"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-08T01:00:02.165609" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T01:00:02.165768" level="INFO">${mapping_to_use} = {'NODE': 'openflow%3A2'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-08T01:00:02.159825" elapsed="0.005970"/>
</kw>
<status status="PASS" start="2026-04-08T01:00:02.159532" elapsed="0.006296"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:02.166005" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:02.165853" elapsed="0.000209"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:02.159512" elapsed="0.006571"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:00:02.166782" level="INFO">${final_text} = /rests/data/opendaylight-inventory:nodes/node=openflow%3A2</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:00:02.166245" elapsed="0.000565"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T01:00:02.166858" elapsed="0.000028"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2/${file_name}.</doc>
<status status="PASS" start="2026-04-08T01:00:02.155801" elapsed="0.011182"/>
</kw>
<msg time="2026-04-08T01:00:02.167036" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:00:02.142966" elapsed="0.024121"/>
</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-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:02.179819" 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-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:02.192888" elapsed="0.000036"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:02.205170" elapsed="0.000029"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:02.205385" elapsed="0.000022"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:02.205567" elapsed="0.000021"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:02.205962" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:02.205811" elapsed="0.000207"/>
</branch>
<status status="NOT RUN" start="2026-04-08T01:00:02.205793" elapsed="0.000249"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:02.206201" elapsed="0.000023"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:02.206376" elapsed="0.000020"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:02.206543" elapsed="0.000020"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-08T01:00:02.205758" elapsed="0.000838"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-08T01:00:02.205647" elapsed="0.000975"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:02.206802" elapsed="0.000021"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-08T01:00:02.206880" elapsed="0.000015"/>
</return>
<msg time="2026-04-08T01:00:02.207008" level="INFO">${uri} = /rests/data/opendaylight-inventory:nodes/node=openflow%3A2</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one 1 times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-08T01:00:02.138677" elapsed="0.068359"/>
</kw>
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:00:02.218418" elapsed="0.000507"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:00:02.232130" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2.vanadium/post_data.prolog.json</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:00:02.231746" elapsed="0.000428"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T01:00:02.232941" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-2.vanadium/post_data.prolog.json' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T01:00:02.232694" elapsed="0.000323">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-2.vanadium/post_data.prolog.json' does not exist.</status>
</kw>
<msg time="2026-04-08T01:00:02.233109" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T01:00:02.232340" elapsed="0.000794"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:00:02.233700" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2/post_data.prolog.json</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:00:02.233317" elapsed="0.000411"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T01:00:02.234030" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-2/post_data.prolog.json"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-2/post_data.prolog.json&lt;/a&gt;'.</msg>
<msg time="2026-04-08T01:00:02.234201" level="INFO">${template} = {
  "flow-node-inventory:group": [
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T01:00:02.233891" elapsed="0.000336"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:00:02.234629" level="INFO">{
  "flow-node-inventory:group": [
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:00:02.234385" elapsed="0.000332"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="NOT RUN" start="2026-04-08T01:00:02.235081" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:02.234788" elapsed="0.000350"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:00:02.235619" level="INFO">${mapping_to_use} = {'NODE': 'openflow:2'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:00:02.235328" elapsed="0.000317"/>
</kw>
<status status="PASS" start="2026-04-08T01:00:02.235178" elapsed="0.000502"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:02.234767" elapsed="0.000935"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:00:02.236302" level="INFO">${final_text} = {
  "flow-node-inventory:group": [</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:00:02.235848" elapsed="0.000482"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T01:00:02.236406" elapsed="0.000032"/>
</return>
<msg time="2026-04-08T01:00:02.236563" level="INFO">${prolog} = {
  "flow-node-inventory:group": [</msg>
<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-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2/${file_name}.</doc>
<status status="PASS" start="2026-04-08T01:00:02.231115" elapsed="0.005475"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:00:02.250137" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2.vanadium/post_data.epilog.json</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:00:02.249759" elapsed="0.000422"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T01:00:02.250899" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-2.vanadium/post_data.epilog.json' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T01:00:02.250685" elapsed="0.000282">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-2.vanadium/post_data.epilog.json' does not exist.</status>
</kw>
<msg time="2026-04-08T01:00:02.251060" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T01:00:02.250349" elapsed="0.000735"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:00:02.251647" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2/post_data.epilog.json</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:00:02.251266" elapsed="0.000408"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T01:00:02.251972" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-2/post_data.epilog.json"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-2/post_data.epilog.json&lt;/a&gt;'.</msg>
<msg time="2026-04-08T01:00:02.252104" level="INFO">${template} =   ]
}
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T01:00:02.251837" elapsed="0.000291"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:00:02.252575" level="INFO">  ]
}
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:00:02.252300" elapsed="0.000319"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="NOT RUN" start="2026-04-08T01:00:02.252987" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:02.252689" elapsed="0.000355"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:00:02.253519" level="INFO">${mapping_to_use} = {'NODE': 'openflow:2'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:00:02.253230" elapsed="0.000315"/>
</kw>
<status status="PASS" start="2026-04-08T01:00:02.253068" elapsed="0.000511"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:02.252669" elapsed="0.000960"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:00:02.254234" level="INFO">${final_text} =   ]
}</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:00:02.253775" elapsed="0.000487"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T01:00:02.254312" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T01:00:02.254463" level="INFO">${epilog} =   ]
}</msg>
<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-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2/${file_name}.</doc>
<status status="PASS" start="2026-04-08T01:00:02.249108" elapsed="0.005379"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:00:02.267786" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2.vanadium/data.item.json</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:00:02.267416" elapsed="0.000397"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T01:00:02.268556" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-2.vanadium/data.item.json' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T01:00:02.268322" elapsed="0.000299">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-2.vanadium/data.item.json' does not exist.</status>
</kw>
<msg time="2026-04-08T01:00:02.268712" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T01:00:02.267974" elapsed="0.000762"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:00:02.269301" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2/data.item.json</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:00:02.268901" elapsed="0.000428"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T01:00:02.269623" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-2/data.item.json"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-2/data.item.json&lt;/a&gt;'.</msg>
<msg time="2026-04-08T01:00:02.269754" level="INFO">${template} =     {
      "group-id": ${i},
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": ${i}000,
            "action": [
              {
               ...</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T01:00:02.269490" elapsed="0.000291"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:00:02.270195" level="INFO">    {
      "group-id": ${i},
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": ${i}000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": ${i}000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-${i}",
      "group-type": "group-ff"
    }
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:00:02.269938" elapsed="0.000306"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="NOT RUN" start="2026-04-08T01:00:02.270600" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:02.270312" elapsed="0.000344"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:00:02.271117" level="INFO">${mapping_to_use} = {'NODE': 'openflow:2'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:00:02.270828" elapsed="0.000314"/>
</kw>
<status status="PASS" start="2026-04-08T01:00:02.270681" elapsed="0.000511"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:02.270293" elapsed="0.000922"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:00:02.271950" level="INFO">${final_text} =     {
      "group-id": ${i},
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": ${i}000,
            "action": [
              {
               ...</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:00:02.271364" elapsed="0.000615"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T01:00:02.272027" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T01:00:02.272195" level="INFO">${item_template} =     {
      "group-id": ${i},
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": ${i}000,
            "action": [
              {
               ...</msg>
<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-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2/${file_name}.</doc>
<status status="PASS" start="2026-04-08T01:00:02.266861" elapsed="0.005362"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:00:02.272648" level="INFO">${items} = []</msg>
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:00:02.272387" elapsed="0.000290"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:00:02.273212" level="INFO">${separator} = ,
</msg>
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:00:02.272838" elapsed="0.000400"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:02.273865" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:02.273630" elapsed="0.000291"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:02.273615" elapsed="0.000330"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:00:02.274455" level="INFO">${j} = 1</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:00:02.274087" elapsed="0.000394"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:00:02.275441" level="INFO">${item} =     {
      "group-id": 1,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 1000,
            "action": [
              {
                "orde...</msg>
<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="PASS" start="2026-04-08T01:00:02.274636" elapsed="0.000834"/>
</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="PASS" start="2026-04-08T01:00:02.275629" elapsed="0.000201"/>
</kw>
<var name="${iteration}">1</var>
<status status="PASS" start="2026-04-08T01:00:02.273582" elapsed="0.002286"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="PASS" start="2026-04-08T01:00:02.273298" elapsed="0.002602"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:00:02.276528" level="INFO">${final_text} = {
  "flow-node-inventory:group": [
    {
      "group-id": 1,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 1000,
            "action": [
  ...</msg>
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:00:02.276055" elapsed="0.000501"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T01:00:02.276613" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T01:00:02.276763" level="INFO">${data} = {
  "flow-node-inventory:group": [
    {
      "group-id": 1,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 1000,
            "action": [
  ...</msg>
<var>${data}</var>
<arg>folder=${folder}</arg>
<arg>name_prefix=post_</arg>
<arg>base_name=${base_name}</arg>
<arg>extension=${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>endline=${endline}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one 1 times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-08T01:00:02.217196" elapsed="0.059593"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T01:00:02.278065" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-2/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T01:00:02.277825" elapsed="0.000303">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-2/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-08T01:00:02.278239" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T01:00:02.277489" elapsed="0.000775"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:02.278578" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:02.278335" elapsed="0.000299"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:00:02.279127" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:00:02.278840" elapsed="0.000327"/>
</kw>
<status status="PASS" start="2026-04-08T01:00:02.278657" elapsed="0.000547"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:02.278317" elapsed="0.000909"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:00:02.281640" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:00:02.279378" elapsed="0.002292"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-08T01:00:02.281722" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T01:00:02.282029" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T01:00:02.277125" elapsed="0.004930"/>
</kw>
<kw name="Post_To_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:00:02.283713" level="INFO">/rests/data/opendaylight-inventory:nodes/node=openflow%3A2</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:00:02.283467" elapsed="0.000291"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:00:02.284143" level="INFO">{
  "flow-node-inventory:group": [
    {
      "group-id": 1,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 1000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 1000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-1",
      "group-type": "group-ff"
    }
  ]
}</msg>
<arg>${data}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:00:02.283910" elapsed="0.000305"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:00:02.284638" level="INFO">{'Content-Type': 'application/json'}</msg>
<arg>${content_type}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:00:02.284365" elapsed="0.000317"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:00:02.285065" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:00:02.284832" elapsed="0.000275"/>
</kw>
<kw name="Join_Two_Headers" owner="TemplatedRequests">
<kw name="Copy Dictionary" owner="Collections">
<msg time="2026-04-08T01:00:02.286063" level="INFO">${accumulator} = {'Content-Type': 'application/json'}</msg>
<var>${accumulator}</var>
<arg>${first}</arg>
<doc>Returns a copy of the given dictionary.</doc>
<status status="PASS" start="2026-04-08T01:00:02.285721" elapsed="0.000368"/>
</kw>
<kw name="Get Dictionary Items" owner="Collections">
<msg time="2026-04-08T01:00:02.286478" level="INFO">${items_to_add} = []</msg>
<var>${items_to_add}</var>
<arg>${second}</arg>
<doc>Returns items of the given ``dictionary`` as a list.</doc>
<status status="PASS" start="2026-04-08T01:00:02.286304" elapsed="0.000200"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${accumulator}</arg>
<arg>@{items_to_add}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:00:02.286656" elapsed="0.000191"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:00:02.287264" level="INFO">{'Content-Type': 'application/json'}</msg>
<arg>${accumulator}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:00:02.287002" elapsed="0.000306"/>
</kw>
<return>
<value>${accumulator}</value>
<status status="PASS" start="2026-04-08T01:00:02.287349" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T01:00:02.287501" level="INFO">${headers} = {'Content-Type': 'application/json'}</msg>
<var>${headers}</var>
<arg>first=${content_type}</arg>
<arg>second=${accept}</arg>
<doc>Take two dicts, join them, return result. Second argument values take precedence.</doc>
<status status="PASS" start="2026-04-08T01:00:02.285321" elapsed="0.002205"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="POST On Session" owner="RequestsLibrary">
<msg time="2026-04-08T01:00:02.302733" level="INFO">POST Request : url=http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A2 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A2 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node01s3bfo0y24i1es90l47mavglv0.node0', 'Content-Length': '460', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body={
  "flow-node-inventory:group": [
    {
      "group-id": 1,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 1000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 1000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-1",
      "group-type": "group-ff"
    }
  ]
} 
 </msg>
<msg time="2026-04-08T01:00:02.302846" level="INFO">POST Response : url=http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A2 
 status=201, reason=Created 
 headers={'Location': 'http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A2/flow-node-inventory:group=1', 'Content-Length': '0'} 
 body=None 
 </msg>
<msg time="2026-04-08T01:00:02.303044" level="INFO">${response} = &lt;Response [201]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T01:00:02.289794" elapsed="0.013307"/>
</kw>
<status status="PASS" start="2026-04-08T01:00:02.287596" elapsed="0.015639"/>
</branch>
<branch type="ELSE">
<kw name="POST On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:02.303722" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:02.303296" elapsed="0.000578"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:02.287579" elapsed="0.016344"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:00:02.310514" level="INFO"/>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:00:02.306389" elapsed="0.004184"/>
</kw>
<status status="PASS" start="2026-04-08T01:00:02.305868" elapsed="0.004754"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:02.305827" elapsed="0.004831"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:00:02.314389" level="INFO">201</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:00:02.311042" elapsed="0.003411"/>
</kw>
<status status="PASS" start="2026-04-08T01:00:02.310737" elapsed="0.003763"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:02.310714" elapsed="0.003819"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:00:02.315340" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:00:02.314764" elapsed="0.000616"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:02.315814" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:02.315480" elapsed="0.000412"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:00:02.316633" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:00:02.316150" elapsed="0.000520"/>
</kw>
<status status="PASS" start="2026-04-08T01:00:02.315925" elapsed="0.000786"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:02.315454" elapsed="0.001279"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:00:02.317273" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:00:02.316895" elapsed="0.000404"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:02.317602" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:02.317368" elapsed="0.000290"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:00:02.318136" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:00:02.317845" elapsed="0.000332"/>
</kw>
<status status="PASS" start="2026-04-08T01:00:02.317681" elapsed="0.000532"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:02.317349" elapsed="0.000885"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:00:02.318386" elapsed="0.000341"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T01:00:02.319226" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:00:02.318932" elapsed="0.000320"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T01:00:02.319410" elapsed="0.002278"/>
</kw>
<arg>${response}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T01:00:02.304831" elapsed="0.016919"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T01:00:02.321926" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:00:02.321822" elapsed="0.000147"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:02.321803" elapsed="0.000187"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T01:00:02.324503" level="INFO">${text_normalized} = </msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T01:00:02.322136" elapsed="0.002394"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T01:00:02.324576" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T01:00:02.324729" level="INFO">${response_text} = </msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>data=${data}</arg>
<arg>content_type=${content_type}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>POST data to given URI, check status code and return response text.
${content_type} and ${accept} are mandatory Python objects with headers to use.
If ${normalize_json}, normalize text before returning.</doc>
<status status="PASS" start="2026-04-08T01:00:02.282396" elapsed="0.042357"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T01:00:02.324819" elapsed="0.000027"/>
</return>
<msg time="2026-04-08T01:00:02.324990" level="INFO">${response_text} = </msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>extension=json</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>content_type=${HEADERS_YANG_JSON}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>endline=${\n}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve URI and data from folder, call Post_To_Uri, return response text.</doc>
<status status="PASS" start="2026-04-08T01:00:02.127636" elapsed="0.197380"/>
</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=response</arg>
<arg>mapping=${mapping}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:02.325375" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:02.325122" elapsed="0.000320"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:02.325104" elapsed="0.000361"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T01:00:02.325498" elapsed="0.000025"/>
</return>
<arg>folder=${VAR_DIR}/add-group-2</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<arg>iterations=${iter}</arg>
<doc>Add arguments sensible for JSON data, return Post_Templated response text.
Optionally, verification against response.json (no iteration) is called.
Only subset of JSON data is verified and returned if JMES path is specified in
file ${folder}/jmespath.expr.
Response status code must be one of values from ${explicit_status_codes} if specified or one of set
created from all positive HTTP status codes together with ${additional_allowed_status_codes}.</doc>
<status status="PASS" start="2026-04-08T01:00:02.124781" elapsed="0.200839"/>
</kw>
<kw name="Post_As_Json_Templated" owner="TemplatedRequests">
<kw name="Post_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:00:02.368378" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow.vanadium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:00:02.367981" elapsed="0.000426"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T01:00:02.369288" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-flow.vanadium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T01:00:02.368937" elapsed="0.000419">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-flow.vanadium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-08T01:00:02.369448" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T01:00:02.368597" elapsed="0.000877"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:00:02.370022" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:00:02.369640" elapsed="0.000409"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T01:00:02.370361" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-flow/location.uri"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-flow/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-08T01:00:02.370489" level="INFO">${template} = /rests/data/opendaylight-inventory:nodes/node=$NODE/flow-node-inventory:table=0
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T01:00:02.370226" elapsed="0.000322"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:00:02.370960" level="INFO">/rests/data/opendaylight-inventory:nodes/node=$NODE/flow-node-inventory:table=0
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:00:02.370715" elapsed="0.000290"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:00:02.372195" level="INFO">mapping: {'NODE': 'openflow:2'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:00:02.371711" elapsed="0.000531"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-08T01:00:02.372846" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-08T01:00:02.372409" elapsed="0.000464"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-08T01:00:02.373958" level="INFO">${value} = openflow:2</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-08T01:00:02.373280" elapsed="0.000719"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-08T01:00:02.375688" level="INFO">${encoded} = openflow%3A2</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-08T01:00:02.375312" elapsed="0.000412"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-08T01:00:02.375802" elapsed="0.000074"/>
</return>
<msg time="2026-04-08T01:00:02.376137" level="INFO">${encoded_value} = openflow%3A2</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-08T01:00:02.374489" elapsed="0.001704"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:00:02.376422" elapsed="0.000543"/>
</kw>
<var name="${key}">NODE</var>
<var name="${value}">openflow:2</var>
<status status="PASS" start="2026-04-08T01:00:02.373093" elapsed="0.003971"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-08T01:00:02.372922" elapsed="0.004180"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-08T01:00:02.377146" elapsed="0.000043"/>
</return>
<msg time="2026-04-08T01:00:02.377322" level="INFO">${mapping_to_use} = {'NODE': 'openflow%3A2'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-08T01:00:02.371380" elapsed="0.005968"/>
</kw>
<status status="PASS" start="2026-04-08T01:00:02.371073" elapsed="0.006308"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:02.377557" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:02.377406" elapsed="0.000206"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:02.371054" elapsed="0.006580"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:00:02.378323" level="INFO">${final_text} = /rests/data/opendaylight-inventory:nodes/node=openflow%3A2/flow-node-inventory:table=0</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:00:02.377777" elapsed="0.000575"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T01:00:02.378399" 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-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow/${file_name}.</doc>
<status status="PASS" start="2026-04-08T01:00:02.367371" elapsed="0.011151"/>
</kw>
<msg time="2026-04-08T01:00:02.378575" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:00:02.354928" elapsed="0.023696"/>
</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-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:02.391194" 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-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:02.403486" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:02.415927" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:02.416125" elapsed="0.000021"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:02.416318" elapsed="0.000021"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:02.416708" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:02.416563" elapsed="0.000200"/>
</branch>
<status status="NOT RUN" start="2026-04-08T01:00:02.416548" elapsed="0.000238"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:02.416926" elapsed="0.000020"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:02.417092" elapsed="0.000020"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:02.417275" elapsed="0.000021"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-08T01:00:02.416519" elapsed="0.000810"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-08T01:00:02.416392" elapsed="0.000962"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:02.417499" elapsed="0.000020"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-08T01:00:02.417572" elapsed="0.000015"/>
</return>
<msg time="2026-04-08T01:00:02.417692" level="INFO">${uri} = /rests/data/opendaylight-inventory:nodes/node=openflow%3A2/flow-node-inventory:table=0</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one 1 times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-08T01:00:02.350691" elapsed="0.067027"/>
</kw>
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:00:02.428591" elapsed="0.000334"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:00:02.441983" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow.vanadium/post_data.prolog.json</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:00:02.441614" elapsed="0.000398"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T01:00:02.442726" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-flow.vanadium/post_data.prolog.json' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T01:00:02.442517" elapsed="0.000273">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-flow.vanadium/post_data.prolog.json' does not exist.</status>
</kw>
<msg time="2026-04-08T01:00:02.442880" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T01:00:02.442187" elapsed="0.000719"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:00:02.443465" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow/post_data.prolog.json</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:00:02.443069" elapsed="0.000423"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T01:00:02.443825" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-flow/post_data.prolog.json"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-flow/post_data.prolog.json&lt;/a&gt;'.</msg>
<msg time="2026-04-08T01:00:02.443955" level="INFO">${template} = {
  "flow": [
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T01:00:02.443652" elapsed="0.000328"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:00:02.444394" level="INFO">{
  "flow": [
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:00:02.444136" elapsed="0.000336"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="NOT RUN" start="2026-04-08T01:00:02.444877" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:02.444556" elapsed="0.000379"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:00:02.445417" level="INFO">${mapping_to_use} = {'NODE': 'openflow:2'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:00:02.445106" elapsed="0.000337"/>
</kw>
<status status="PASS" start="2026-04-08T01:00:02.444959" elapsed="0.000518"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:02.444537" elapsed="0.000962"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:00:02.446073" level="INFO">${final_text} = {
  "flow": [</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:00:02.445645" elapsed="0.000455"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T01:00:02.446148" elapsed="0.000046"/>
</return>
<msg time="2026-04-08T01:00:02.446347" level="INFO">${prolog} = {
  "flow": [</msg>
<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-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow/${file_name}.</doc>
<status status="PASS" start="2026-04-08T01:00:02.440992" elapsed="0.005381"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:00:02.459924" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow.vanadium/post_data.epilog.json</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:00:02.459548" elapsed="0.000403"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T01:00:02.460683" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-flow.vanadium/post_data.epilog.json' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T01:00:02.460461" elapsed="0.000285">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-flow.vanadium/post_data.epilog.json' does not exist.</status>
</kw>
<msg time="2026-04-08T01:00:02.460839" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T01:00:02.460114" elapsed="0.000749"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:00:02.461424" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow/post_data.epilog.json</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:00:02.461028" elapsed="0.000423"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T01:00:02.461750" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-flow/post_data.epilog.json"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-flow/post_data.epilog.json&lt;/a&gt;'.</msg>
<msg time="2026-04-08T01:00:02.461872" level="INFO">${template} =   ]
}
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T01:00:02.461613" elapsed="0.000283"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:00:02.462313" level="INFO">  ]
}
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:00:02.462052" elapsed="0.000305"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="NOT RUN" start="2026-04-08T01:00:02.462709" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:02.462423" elapsed="0.000342"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:00:02.463240" level="INFO">${mapping_to_use} = {'NODE': 'openflow:2'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:00:02.462933" elapsed="0.000336"/>
</kw>
<status status="PASS" start="2026-04-08T01:00:02.462789" elapsed="0.000520"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:02.462404" elapsed="0.000926"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:00:02.463896" level="INFO">${final_text} =   ]
}</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:00:02.463475" elapsed="0.000448"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T01:00:02.463971" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T01:00:02.464120" level="INFO">${epilog} =   ]
}</msg>
<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-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow/${file_name}.</doc>
<status status="PASS" start="2026-04-08T01:00:02.458918" elapsed="0.005226"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:00:02.478103" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow.vanadium/data.item.json</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:00:02.477727" elapsed="0.000404"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T01:00:02.478844" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-flow.vanadium/data.item.json' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T01:00:02.478641" elapsed="0.000265">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-flow.vanadium/data.item.json' does not exist.</status>
</kw>
<msg time="2026-04-08T01:00:02.478997" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T01:00:02.478309" elapsed="0.000713"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:00:02.479595" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow/data.item.json</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:00:02.479214" elapsed="0.000408"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T01:00:02.479916" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-flow/data.item.json"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-flow/data.item.json&lt;/a&gt;'.</msg>
<msg time="2026-04-08T01:00:02.480044" level="INFO">${template} =         {
          "id": "${i}",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048...</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T01:00:02.479783" elapsed="0.000288"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:00:02.480487" level="INFO">        {
          "id": "${i}",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.${i}/32"
          },
          "flow-name": "Flow-${i}",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": ${i}
                      }
                    }
                  ]
                }
              }
            ]
          }
        }
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:00:02.480245" elapsed="0.000333"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="NOT RUN" start="2026-04-08T01:00:02.480945" elapsed="0.000029"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:02.480646" elapsed="0.000361"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:00:02.481488" level="INFO">${mapping_to_use} = {'NODE': 'openflow:2'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:00:02.481198" elapsed="0.000316"/>
</kw>
<status status="PASS" start="2026-04-08T01:00:02.481031" elapsed="0.000517"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:02.480627" elapsed="0.000942"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:00:02.482380" level="INFO">${final_text} =         {
          "id": "${i}",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048...</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:00:02.481714" elapsed="0.000695"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T01:00:02.482457" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T01:00:02.482609" level="INFO">${item_template} =         {
          "id": "${i}",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048...</msg>
<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-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow/${file_name}.</doc>
<status status="PASS" start="2026-04-08T01:00:02.477128" elapsed="0.005511"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:00:02.483078" level="INFO">${items} = []</msg>
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:00:02.482840" elapsed="0.000263"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:00:02.483635" level="INFO">${separator} = ,
</msg>
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:00:02.483277" elapsed="0.000384"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:02.484287" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:02.484038" elapsed="0.000306"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:02.484024" elapsed="0.000343"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:00:02.484923" level="INFO">${j} = 1</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:00:02.484522" elapsed="0.000427"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:00:02.486943" level="INFO">${item} =         {
          "id": "1",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
  ...</msg>
<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="PASS" start="2026-04-08T01:00:02.485105" elapsed="0.001866"/>
</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="PASS" start="2026-04-08T01:00:02.487130" elapsed="0.000209"/>
</kw>
<var name="${iteration}">1</var>
<status status="PASS" start="2026-04-08T01:00:02.483993" elapsed="0.003384"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="PASS" start="2026-04-08T01:00:02.483721" elapsed="0.003687"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:00:02.487985" level="INFO">${final_text} = {
  "flow": [
        {
          "id": "1",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "...</msg>
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:00:02.487562" elapsed="0.000450"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T01:00:02.488068" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T01:00:02.488233" level="INFO">${data} = {
  "flow": [
        {
          "id": "1",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "...</msg>
<var>${data}</var>
<arg>folder=${folder}</arg>
<arg>name_prefix=post_</arg>
<arg>base_name=${base_name}</arg>
<arg>extension=${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>endline=${endline}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one 1 times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-08T01:00:02.427723" elapsed="0.060536"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T01:00:02.489539" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-flow/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T01:00:02.489298" elapsed="0.000304">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-flow/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-08T01:00:02.489691" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T01:00:02.488944" elapsed="0.000771"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:02.490030" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:02.489786" elapsed="0.000299"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:00:02.490596" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:00:02.490298" elapsed="0.000324"/>
</kw>
<status status="PASS" start="2026-04-08T01:00:02.490109" elapsed="0.000548"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:02.489768" elapsed="0.000911"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:00:02.493050" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:00:02.490831" elapsed="0.002246"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-08T01:00:02.493129" elapsed="0.000043"/>
</return>
<msg time="2026-04-08T01:00:02.493300" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T01:00:02.488617" elapsed="0.004708"/>
</kw>
<kw name="Post_To_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:00:02.494911" level="INFO">/rests/data/opendaylight-inventory:nodes/node=openflow%3A2/flow-node-inventory:table=0</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:00:02.494596" elapsed="0.000361"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:00:02.495377" level="INFO">{
  "flow": [
        {
          "id": "1",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.1/32"
          },
          "flow-name": "Flow-1",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 1
                      }
                    }
                  ]
                }
              }
            ]
          }
        }
  ]
}</msg>
<arg>${data}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:00:02.495115" elapsed="0.000311"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:00:02.495826" level="INFO">{'Content-Type': 'application/json'}</msg>
<arg>${content_type}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:00:02.495582" elapsed="0.000288"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:00:02.496348" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:00:02.496058" elapsed="0.000342"/>
</kw>
<kw name="Join_Two_Headers" owner="TemplatedRequests">
<kw name="Copy Dictionary" owner="Collections">
<msg time="2026-04-08T01:00:02.497242" level="INFO">${accumulator} = {'Content-Type': 'application/json'}</msg>
<var>${accumulator}</var>
<arg>${first}</arg>
<doc>Returns a copy of the given dictionary.</doc>
<status status="PASS" start="2026-04-08T01:00:02.497035" elapsed="0.000233"/>
</kw>
<kw name="Get Dictionary Items" owner="Collections">
<msg time="2026-04-08T01:00:02.497592" level="INFO">${items_to_add} = []</msg>
<var>${items_to_add}</var>
<arg>${second}</arg>
<doc>Returns items of the given ``dictionary`` as a list.</doc>
<status status="PASS" start="2026-04-08T01:00:02.497423" elapsed="0.000194"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${accumulator}</arg>
<arg>@{items_to_add}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:00:02.497767" elapsed="0.000187"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:00:02.498425" level="INFO">{'Content-Type': 'application/json'}</msg>
<arg>${accumulator}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:00:02.498150" elapsed="0.000318"/>
</kw>
<return>
<value>${accumulator}</value>
<status status="PASS" start="2026-04-08T01:00:02.498510" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T01:00:02.498663" level="INFO">${headers} = {'Content-Type': 'application/json'}</msg>
<var>${headers}</var>
<arg>first=${content_type}</arg>
<arg>second=${accept}</arg>
<doc>Take two dicts, join them, return result. Second argument values take precedence.</doc>
<status status="PASS" start="2026-04-08T01:00:02.496629" elapsed="0.002058"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="POST On Session" owner="RequestsLibrary">
<msg time="2026-04-08T01:00:02.515960" level="INFO">POST Request : url=http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A2/flow-node-inventory:table=0 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A2/flow-node-inventory:table=0 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node01s3bfo0y24i1es90l47mavglv0.node0', 'Content-Length': '777', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body={
  "flow": [
        {
          "id": "1",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.1/32"
          },
          "flow-name": "Flow-1",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 1
                      }
                    }
                  ]
                }
              }
            ]
          }
        }
  ]
} 
 </msg>
<msg time="2026-04-08T01:00:02.516081" level="INFO">POST Response : url=http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A2/flow-node-inventory:table=0 
 status=201, reason=Created 
 headers={'Location': 'http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A2/flow-node-inventory:table=0/flow=1', 'Content-Length': '0'} 
 body=None 
 </msg>
<msg time="2026-04-08T01:00:02.516344" level="INFO">${response} = &lt;Response [201]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T01:00:02.500997" elapsed="0.015406"/>
</kw>
<status status="PASS" start="2026-04-08T01:00:02.498758" elapsed="0.017746"/>
</branch>
<branch type="ELSE">
<kw name="POST On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:02.516950" elapsed="0.000049"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:02.516597" elapsed="0.000501"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:02.498740" elapsed="0.018406"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:00:02.524917" level="INFO"/>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:00:02.519509" elapsed="0.005469"/>
</kw>
<status status="PASS" start="2026-04-08T01:00:02.518976" elapsed="0.006051"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:02.518933" elapsed="0.006128"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:00:02.528643" level="INFO">201</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:00:02.525484" elapsed="0.003229"/>
</kw>
<status status="PASS" start="2026-04-08T01:00:02.525138" elapsed="0.003622"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:02.525115" elapsed="0.003678"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:00:02.529567" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:00:02.529022" elapsed="0.000583"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:02.530034" elapsed="0.000028"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:02.529703" elapsed="0.000408"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:00:02.530804" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:00:02.530393" elapsed="0.000447"/>
</kw>
<status status="PASS" start="2026-04-08T01:00:02.530143" elapsed="0.000746"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:02.529678" elapsed="0.001241"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:00:02.531672" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:00:02.531144" elapsed="0.000567"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:02.532138" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:02.531807" elapsed="0.000509"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:00:02.533064" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:00:02.532646" elapsed="0.000454"/>
</kw>
<status status="PASS" start="2026-04-08T01:00:02.532356" elapsed="0.000793"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:02.531781" elapsed="0.001421"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:00:02.533416" elapsed="0.000425"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T01:00:02.534308" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:00:02.534007" elapsed="0.000327"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T01:00:02.534493" elapsed="0.002277"/>
</kw>
<arg>${response}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T01:00:02.517970" elapsed="0.018862"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T01:00:02.537011" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:00:02.536905" elapsed="0.000149"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:02.536886" elapsed="0.000189"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T01:00:02.539800" level="INFO">${text_normalized} = </msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T01:00:02.537238" elapsed="0.002589"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T01:00:02.539875" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T01:00:02.540027" level="INFO">${response_text} = </msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>data=${data}</arg>
<arg>content_type=${content_type}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>POST data to given URI, check status code and return response text.
${content_type} and ${accept} are mandatory Python objects with headers to use.
If ${normalize_json}, normalize text before returning.</doc>
<status status="PASS" start="2026-04-08T01:00:02.493648" elapsed="0.046403"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T01:00:02.540118" elapsed="0.000026"/>
</return>
<msg time="2026-04-08T01:00:02.540281" level="INFO">${response_text} = </msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>extension=json</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>content_type=${HEADERS_YANG_JSON}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>endline=${\n}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve URI and data from folder, call Post_To_Uri, return response text.</doc>
<status status="PASS" start="2026-04-08T01:00:02.339461" elapsed="0.200844"/>
</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=response</arg>
<arg>mapping=${mapping}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:02.540662" elapsed="0.000028"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:02.540407" elapsed="0.000327"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:02.540390" elapsed="0.000368"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T01:00:02.540791" elapsed="0.000025"/>
</return>
<arg>folder=${VAR_DIR}/add-flow</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<arg>iterations=${iter}</arg>
<doc>Add arguments sensible for JSON data, return Post_Templated response text.
Optionally, verification against response.json (no iteration) is called.
Only subset of JSON data is verified and returned if JMES path is specified in
file ${folder}/jmespath.expr.
Response status code must be one of values from ${explicit_status_codes} if specified or one of set
created from all positive HTTP status codes together with ${additional_allowed_status_codes}.</doc>
<status status="PASS" start="2026-04-08T01:00:02.336843" elapsed="0.204066"/>
</kw>
<var name="${switch}">2</var>
<status status="PASS" start="2026-04-08T01:00:01.893835" elapsed="0.647118"/>
</iter>
<iter>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-08T01:00:02.541614" level="INFO">&amp;{mapping} = { NODE=openflow:3 }</msg>
<var>&amp;{mapping}</var>
<arg>NODE=openflow:${switch}</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-08T01:00:02.541217" elapsed="0.000424"/>
</kw>
<kw name="Post_As_Json_Templated" owner="TemplatedRequests">
<kw name="Post_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:00:02.584393" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1.vanadium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:00:02.583999" elapsed="0.000422"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T01:00:02.585278" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-1.vanadium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T01:00:02.584951" elapsed="0.000396">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-1.vanadium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-08T01:00:02.585479" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T01:00:02.584599" elapsed="0.000906"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:00:02.586056" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:00:02.585672" elapsed="0.000411"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T01:00:02.586399" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-1/location.uri"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-1/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-08T01:00:02.586527" level="INFO">${template} = /rests/data/opendaylight-inventory:nodes/node=$NODE
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T01:00:02.586262" elapsed="0.000289"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:00:02.586952" level="INFO">/rests/data/opendaylight-inventory:nodes/node=$NODE
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:00:02.586708" elapsed="0.000287"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:00:02.588180" level="INFO">mapping: {'NODE': 'openflow:3'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:00:02.587697" elapsed="0.000530"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-08T01:00:02.588842" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-08T01:00:02.588391" elapsed="0.000477"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-08T01:00:02.589923" level="INFO">${value} = openflow:3</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-08T01:00:02.589269" elapsed="0.000694"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-08T01:00:02.591739" level="INFO">${encoded} = openflow%3A3</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-08T01:00:02.591354" elapsed="0.000421"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-08T01:00:02.591850" elapsed="0.000074"/>
</return>
<msg time="2026-04-08T01:00:02.592200" level="INFO">${encoded_value} = openflow%3A3</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-08T01:00:02.590448" elapsed="0.001793"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:00:02.592469" elapsed="0.000527"/>
</kw>
<var name="${key}">NODE</var>
<var name="${value}">openflow:3</var>
<status status="PASS" start="2026-04-08T01:00:02.589085" elapsed="0.004009"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-08T01:00:02.588916" elapsed="0.004215"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-08T01:00:02.593191" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T01:00:02.593351" level="INFO">${mapping_to_use} = {'NODE': 'openflow%3A3'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-08T01:00:02.587370" elapsed="0.006007"/>
</kw>
<status status="PASS" start="2026-04-08T01:00:02.587063" elapsed="0.006347"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:02.593586" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:02.593434" elapsed="0.000206"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:02.587044" elapsed="0.006617"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:00:02.594349" level="INFO">${final_text} = /rests/data/opendaylight-inventory:nodes/node=openflow%3A3</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:00:02.593803" elapsed="0.000574"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T01:00:02.594426" elapsed="0.000028"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1/${file_name}.</doc>
<status status="PASS" start="2026-04-08T01:00:02.583380" elapsed="0.011167"/>
</kw>
<msg time="2026-04-08T01:00:02.594601" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:00:02.570846" elapsed="0.023804"/>
</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-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:02.607662" 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-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:02.619881" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:02.632219" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:02.632417" elapsed="0.000021"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:02.632602" elapsed="0.000021"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:02.632972" elapsed="0.000019"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:02.632827" elapsed="0.000199"/>
</branch>
<status status="NOT RUN" start="2026-04-08T01:00:02.632812" elapsed="0.000237"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:02.633204" elapsed="0.000021"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:02.633373" elapsed="0.000019"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:02.633537" elapsed="0.000020"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-08T01:00:02.632783" elapsed="0.000805"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-08T01:00:02.632680" elapsed="0.000934"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:02.633759" elapsed="0.000020"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-08T01:00:02.633832" elapsed="0.000015"/>
</return>
<msg time="2026-04-08T01:00:02.633946" level="INFO">${uri} = /rests/data/opendaylight-inventory:nodes/node=openflow%3A3</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one 1 times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-08T01:00:02.566568" elapsed="0.067404"/>
</kw>
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:00:02.644789" elapsed="0.000336"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:00:02.658410" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1.vanadium/post_data.prolog.json</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:00:02.658021" elapsed="0.000418"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T01:00:02.659137" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-1.vanadium/post_data.prolog.json' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T01:00:02.658932" elapsed="0.000286">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-1.vanadium/post_data.prolog.json' does not exist.</status>
</kw>
<msg time="2026-04-08T01:00:02.659310" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T01:00:02.658601" elapsed="0.000734"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:00:02.659882" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1/post_data.prolog.json</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:00:02.659500" elapsed="0.000442"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T01:00:02.660261" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-1/post_data.prolog.json"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-1/post_data.prolog.json&lt;/a&gt;'.</msg>
<msg time="2026-04-08T01:00:02.660388" level="INFO">${template} = {
  "flow-node-inventory:group": [
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T01:00:02.660109" elapsed="0.000304"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:00:02.660864" level="INFO">{
  "flow-node-inventory:group": [
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:00:02.660571" elapsed="0.000337"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="NOT RUN" start="2026-04-08T01:00:02.661279" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:02.660976" elapsed="0.000361"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:00:02.661800" level="INFO">${mapping_to_use} = {'NODE': 'openflow:3'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:00:02.661509" elapsed="0.000316"/>
</kw>
<status status="PASS" start="2026-04-08T01:00:02.661362" elapsed="0.000498"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:02.660957" elapsed="0.000925"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:00:02.662474" level="INFO">${final_text} = {
  "flow-node-inventory:group": [</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:00:02.662028" elapsed="0.000473"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T01:00:02.662549" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T01:00:02.662702" level="INFO">${prolog} = {
  "flow-node-inventory:group": [</msg>
<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-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1/${file_name}.</doc>
<status status="PASS" start="2026-04-08T01:00:02.657408" elapsed="0.005319"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:00:02.676641" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1.vanadium/post_data.epilog.json</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:00:02.676238" elapsed="0.000433"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T01:00:02.677447" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-1.vanadium/post_data.epilog.json' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T01:00:02.677221" elapsed="0.000290">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-1.vanadium/post_data.epilog.json' does not exist.</status>
</kw>
<msg time="2026-04-08T01:00:02.677603" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T01:00:02.676844" elapsed="0.000784"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:00:02.678187" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1/post_data.epilog.json</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:00:02.677793" elapsed="0.000423"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T01:00:02.678511" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-1/post_data.epilog.json"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-1/post_data.epilog.json&lt;/a&gt;'.</msg>
<msg time="2026-04-08T01:00:02.678642" level="INFO">${template} =   ]
}
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T01:00:02.678379" elapsed="0.000288"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:00:02.679065" level="INFO">  ]
}
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:00:02.678825" elapsed="0.000283"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="NOT RUN" start="2026-04-08T01:00:02.679481" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:02.679192" elapsed="0.000346"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:00:02.680002" level="INFO">${mapping_to_use} = {'NODE': 'openflow:3'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:00:02.679713" elapsed="0.000315"/>
</kw>
<status status="PASS" start="2026-04-08T01:00:02.679563" elapsed="0.000499"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:02.679172" elapsed="0.000911"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:00:02.680688" level="INFO">${final_text} =   ]
}</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:00:02.680244" elapsed="0.000472"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T01:00:02.680809" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T01:00:02.680963" level="INFO">${epilog} =   ]
}</msg>
<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-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1/${file_name}.</doc>
<status status="PASS" start="2026-04-08T01:00:02.675602" elapsed="0.005386"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:00:02.694573" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1.vanadium/data.item.json</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:00:02.694198" elapsed="0.000403"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T01:00:02.695329" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-1.vanadium/data.item.json' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T01:00:02.695096" elapsed="0.000296">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-1.vanadium/data.item.json' does not exist.</status>
</kw>
<msg time="2026-04-08T01:00:02.695483" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T01:00:02.694764" elapsed="0.000743"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:00:02.696050" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1/data.item.json</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:00:02.695673" elapsed="0.000404"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T01:00:02.696403" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-1/data.item.json"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-1/data.item.json&lt;/a&gt;'.</msg>
<msg time="2026-04-08T01:00:02.696527" level="INFO">${template} =         {
          "group-id": ${i}000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
       ...</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T01:00:02.696268" elapsed="0.000285"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:00:02.696999" level="INFO">        {
          "group-id": ${i}000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-${i}",
          "group-type": "group-select"
        }
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:00:02.696756" elapsed="0.000290"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="NOT RUN" start="2026-04-08T01:00:02.697445" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:02.697113" elapsed="0.000391"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:00:02.697971" level="INFO">${mapping_to_use} = {'NODE': 'openflow:3'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:00:02.697677" elapsed="0.000320"/>
</kw>
<status status="PASS" start="2026-04-08T01:00:02.697528" elapsed="0.000505"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:02.697095" elapsed="0.000959"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:00:02.698791" level="INFO">${final_text} =         {
          "group-id": ${i}000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
       ...</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:00:02.698215" elapsed="0.000604"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T01:00:02.698867" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T01:00:02.699020" level="INFO">${item_template} =         {
          "group-id": ${i}000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
       ...</msg>
<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-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1/${file_name}.</doc>
<status status="PASS" start="2026-04-08T01:00:02.693607" elapsed="0.005440"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:00:02.699468" level="INFO">${items} = []</msg>
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:00:02.699228" elapsed="0.000297"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:00:02.700051" level="INFO">${separator} = ,
</msg>
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:00:02.699689" elapsed="0.000388"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:02.700721" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:02.700471" elapsed="0.000311"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:02.700456" elapsed="0.000350"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:00:02.701317" level="INFO">${j} = 1</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:00:02.700948" elapsed="0.000395"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:00:02.702266" level="INFO">${item} =         {
          "group-id": 1000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
          ...</msg>
<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="PASS" start="2026-04-08T01:00:02.701501" elapsed="0.000793"/>
</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="PASS" start="2026-04-08T01:00:02.702453" elapsed="0.000189"/>
</kw>
<var name="${iteration}">1</var>
<status status="PASS" start="2026-04-08T01:00:02.700424" elapsed="0.002256"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="PASS" start="2026-04-08T01:00:02.700133" elapsed="0.002577"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:00:02.703302" level="INFO">${final_text} = {
  "flow-node-inventory:group": [
        {
          "group-id": 1000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
   ...</msg>
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:00:02.702864" elapsed="0.000466"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T01:00:02.703386" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T01:00:02.703536" level="INFO">${data} = {
  "flow-node-inventory:group": [
        {
          "group-id": 1000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
   ...</msg>
<var>${data}</var>
<arg>folder=${folder}</arg>
<arg>name_prefix=post_</arg>
<arg>base_name=${base_name}</arg>
<arg>extension=${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>endline=${endline}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one 1 times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-08T01:00:02.643855" elapsed="0.059706"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T01:00:02.704828" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-1/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T01:00:02.704565" elapsed="0.000326">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-1/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-08T01:00:02.704981" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T01:00:02.704230" elapsed="0.000776"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:02.705343" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:02.705077" elapsed="0.000323"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:00:02.705879" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:00:02.705592" elapsed="0.000313"/>
</kw>
<status status="PASS" start="2026-04-08T01:00:02.705424" elapsed="0.000517"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:02.705059" elapsed="0.000903"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:00:02.708289" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:00:02.706113" elapsed="0.002202"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-08T01:00:02.708366" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T01:00:02.708516" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T01:00:02.703891" elapsed="0.004649"/>
</kw>
<kw name="Post_To_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:00:02.710269" level="INFO">/rests/data/opendaylight-inventory:nodes/node=openflow%3A3</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:00:02.709811" elapsed="0.000503"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:00:02.710706" level="INFO">{
  "flow-node-inventory:group": [
        {
          "group-id": 1000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-1",
          "group-type": "group-select"
        }
  ]
}</msg>
<arg>${data}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:00:02.710472" elapsed="0.000319"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:00:02.711207" level="INFO">{'Content-Type': 'application/json'}</msg>
<arg>${content_type}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:00:02.710947" elapsed="0.000304"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:00:02.711743" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:00:02.711421" elapsed="0.000381"/>
</kw>
<kw name="Join_Two_Headers" owner="TemplatedRequests">
<kw name="Copy Dictionary" owner="Collections">
<msg time="2026-04-08T01:00:02.712934" level="INFO">${accumulator} = {'Content-Type': 'application/json'}</msg>
<var>${accumulator}</var>
<arg>${first}</arg>
<doc>Returns a copy of the given dictionary.</doc>
<status status="PASS" start="2026-04-08T01:00:02.712616" elapsed="0.000352"/>
</kw>
<kw name="Get Dictionary Items" owner="Collections">
<msg time="2026-04-08T01:00:02.713371" level="INFO">${items_to_add} = []</msg>
<var>${items_to_add}</var>
<arg>${second}</arg>
<doc>Returns items of the given ``dictionary`` as a list.</doc>
<status status="PASS" start="2026-04-08T01:00:02.713178" elapsed="0.000224"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${accumulator}</arg>
<arg>@{items_to_add}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:00:02.713566" elapsed="0.000193"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:00:02.714192" level="INFO">{'Content-Type': 'application/json'}</msg>
<arg>${accumulator}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:00:02.713919" elapsed="0.000321"/>
</kw>
<return>
<value>${accumulator}</value>
<status status="PASS" start="2026-04-08T01:00:02.714294" elapsed="0.000042"/>
</return>
<msg time="2026-04-08T01:00:02.714511" level="INFO">${headers} = {'Content-Type': 'application/json'}</msg>
<var>${headers}</var>
<arg>first=${content_type}</arg>
<arg>second=${accept}</arg>
<doc>Take two dicts, join them, return result. Second argument values take precedence.</doc>
<status status="PASS" start="2026-04-08T01:00:02.712068" elapsed="0.002475"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="POST On Session" owner="RequestsLibrary">
<msg time="2026-04-08T01:00:02.728711" level="INFO">POST Request : url=http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A3 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A3 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node01s3bfo0y24i1es90l47mavglv0.node0', 'Content-Length': '560', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body={
  "flow-node-inventory:group": [
        {
          "group-id": 1000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-1",
          "group-type": "group-select"
        }
  ]
} 
 </msg>
<msg time="2026-04-08T01:00:02.728790" level="INFO">POST Response : url=http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A3 
 status=201, reason=Created 
 headers={'Location': 'http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A3/flow-node-inventory:group=1000', 'Content-Length': '0'} 
 body=None 
 </msg>
<msg time="2026-04-08T01:00:02.728918" level="INFO">${response} = &lt;Response [201]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T01:00:02.716922" elapsed="0.012032"/>
</kw>
<status status="PASS" start="2026-04-08T01:00:02.714620" elapsed="0.014404"/>
</branch>
<branch type="ELSE">
<kw name="POST On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:02.729365" elapsed="0.000035"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:02.729073" elapsed="0.000395"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:02.714601" elapsed="0.014898"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:00:02.734741" level="INFO"/>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:00:02.731477" elapsed="0.003342"/>
</kw>
<status status="PASS" start="2026-04-08T01:00:02.731138" elapsed="0.003735"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:02.731112" elapsed="0.003796"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:00:02.738609" level="INFO">201</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:00:02.735444" elapsed="0.003231"/>
</kw>
<status status="PASS" start="2026-04-08T01:00:02.734985" elapsed="0.003739"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:02.734962" elapsed="0.003796"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:00:02.739612" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:00:02.739023" elapsed="0.000627"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:02.740082" elapsed="0.000029"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:02.739746" elapsed="0.000437"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:00:02.740896" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:00:02.740451" elapsed="0.000481"/>
</kw>
<status status="PASS" start="2026-04-08T01:00:02.740218" elapsed="0.000762"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:02.739721" elapsed="0.001290"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:00:02.741757" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:00:02.741254" elapsed="0.000540"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:02.742241" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:02.741889" elapsed="0.000494"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:00:02.743278" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:00:02.742710" elapsed="0.000617"/>
</kw>
<status status="PASS" start="2026-04-08T01:00:02.742418" elapsed="0.000961"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:02.741865" elapsed="0.001546"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:00:02.743632" elapsed="0.000582"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T01:00:02.744890" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:00:02.744454" elapsed="0.000474"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T01:00:02.745149" elapsed="0.002520"/>
</kw>
<arg>${response}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T01:00:02.730339" elapsed="0.017395"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T01:00:02.747916" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:00:02.747808" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:02.747789" elapsed="0.000194"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T01:00:02.750523" level="INFO">${text_normalized} = </msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T01:00:02.748133" elapsed="0.002417"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T01:00:02.750598" elapsed="0.000032"/>
</return>
<msg time="2026-04-08T01:00:02.750757" level="INFO">${response_text} = </msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>data=${data}</arg>
<arg>content_type=${content_type}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>POST data to given URI, check status code and return response text.
${content_type} and ${accept} are mandatory Python objects with headers to use.
If ${normalize_json}, normalize text before returning.</doc>
<status status="PASS" start="2026-04-08T01:00:02.708873" elapsed="0.041916"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T01:00:02.750867" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T01:00:02.751022" level="INFO">${response_text} = </msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>extension=json</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>content_type=${HEADERS_YANG_JSON}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>endline=${\n}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve URI and data from folder, call Post_To_Uri, return response text.</doc>
<status status="PASS" start="2026-04-08T01:00:02.555401" elapsed="0.195647"/>
</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=response</arg>
<arg>mapping=${mapping}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:02.751415" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:02.751153" elapsed="0.000330"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:02.751136" elapsed="0.000371"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T01:00:02.751540" elapsed="0.000025"/>
</return>
<arg>folder=${VAR_DIR}/add-group-1</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<arg>iterations=${iter}</arg>
<doc>Add arguments sensible for JSON data, return Post_Templated response text.
Optionally, verification against response.json (no iteration) is called.
Only subset of JSON data is verified and returned if JMES path is specified in
file ${folder}/jmespath.expr.
Response status code must be one of values from ${explicit_status_codes} if specified or one of set
created from all positive HTTP status codes together with ${additional_allowed_status_codes}.</doc>
<status status="PASS" start="2026-04-08T01:00:02.552828" elapsed="0.198835"/>
</kw>
<kw name="Post_As_Json_Templated" owner="TemplatedRequests">
<kw name="Post_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:00:02.794862" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2.vanadium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:00:02.794484" elapsed="0.000407"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T01:00:02.795774" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-2.vanadium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T01:00:02.795419" elapsed="0.000433">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-2.vanadium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-08T01:00:02.795947" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T01:00:02.795057" elapsed="0.000920"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:00:02.796618" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:00:02.796223" elapsed="0.000423"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T01:00:02.797017" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-2/location.uri"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-2/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-08T01:00:02.797188" level="INFO">${template} = /rests/data/opendaylight-inventory:nodes/node=$NODE
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T01:00:02.796875" elapsed="0.000339"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:00:02.797618" level="INFO">/rests/data/opendaylight-inventory:nodes/node=$NODE
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:00:02.797372" elapsed="0.000291"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:00:02.798832" level="INFO">mapping: {'NODE': 'openflow:3'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:00:02.798364" elapsed="0.000514"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-08T01:00:02.799489" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-08T01:00:02.799048" elapsed="0.000468"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-08T01:00:02.800592" level="INFO">${value} = openflow:3</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-08T01:00:02.799915" elapsed="0.000718"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-08T01:00:02.802341" level="INFO">${encoded} = openflow%3A3</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-08T01:00:02.801948" elapsed="0.000428"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-08T01:00:02.802452" elapsed="0.000074"/>
</return>
<msg time="2026-04-08T01:00:02.802786" level="INFO">${encoded_value} = openflow%3A3</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-08T01:00:02.801114" elapsed="0.001711"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:00:02.803053" elapsed="0.000531"/>
</kw>
<var name="${key}">NODE</var>
<var name="${value}">openflow:3</var>
<status status="PASS" start="2026-04-08T01:00:02.799746" elapsed="0.003939"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-08T01:00:02.799569" elapsed="0.004154"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-08T01:00:02.803766" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T01:00:02.803924" level="INFO">${mapping_to_use} = {'NODE': 'openflow%3A3'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-08T01:00:02.798020" elapsed="0.005929"/>
</kw>
<status status="PASS" start="2026-04-08T01:00:02.797731" elapsed="0.006250"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:02.804169" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:02.804006" elapsed="0.000221"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:02.797712" elapsed="0.006536"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:00:02.804977" level="INFO">${final_text} = /rests/data/opendaylight-inventory:nodes/node=openflow%3A3</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:00:02.804392" elapsed="0.000613"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T01:00:02.805053" elapsed="0.000028"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2/${file_name}.</doc>
<status status="PASS" start="2026-04-08T01:00:02.793801" elapsed="0.011391"/>
</kw>
<msg time="2026-04-08T01:00:02.805247" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:00:02.781374" elapsed="0.023923"/>
</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-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:02.817909" 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-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:02.830004" 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-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:02.842217" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:02.842421" elapsed="0.000021"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:02.842598" elapsed="0.000020"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:02.842969" elapsed="0.000019"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:02.842824" elapsed="0.000199"/>
</branch>
<status status="NOT RUN" start="2026-04-08T01:00:02.842809" elapsed="0.000237"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:02.843200" elapsed="0.000021"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:02.843368" elapsed="0.000019"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:02.843532" elapsed="0.000019"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-08T01:00:02.842778" elapsed="0.000806"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-08T01:00:02.842674" elapsed="0.000935"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:02.843754" elapsed="0.000020"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-08T01:00:02.843828" elapsed="0.000014"/>
</return>
<msg time="2026-04-08T01:00:02.843947" level="INFO">${uri} = /rests/data/opendaylight-inventory:nodes/node=openflow%3A3</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one 1 times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-08T01:00:02.777165" elapsed="0.066808"/>
</kw>
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:00:02.854744" elapsed="0.000350"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:00:02.868391" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2.vanadium/post_data.prolog.json</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:00:02.868001" elapsed="0.000418"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T01:00:02.869208" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-2.vanadium/post_data.prolog.json' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T01:00:02.868961" elapsed="0.000319">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-2.vanadium/post_data.prolog.json' does not exist.</status>
</kw>
<msg time="2026-04-08T01:00:02.869372" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T01:00:02.868584" elapsed="0.000812"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:00:02.869942" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2/post_data.prolog.json</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:00:02.869561" elapsed="0.000445"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T01:00:02.870326" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-2/post_data.prolog.json"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-2/post_data.prolog.json&lt;/a&gt;'.</msg>
<msg time="2026-04-08T01:00:02.870466" level="INFO">${template} = {
  "flow-node-inventory:group": [
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T01:00:02.870187" elapsed="0.000304"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:00:02.870891" level="INFO">{
  "flow-node-inventory:group": [
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:00:02.870648" elapsed="0.000286"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="NOT RUN" start="2026-04-08T01:00:02.871305" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:02.871001" elapsed="0.000362"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:00:02.871829" level="INFO">${mapping_to_use} = {'NODE': 'openflow:3'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:00:02.871532" elapsed="0.000322"/>
</kw>
<status status="PASS" start="2026-04-08T01:00:02.871386" elapsed="0.000503"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:02.870983" elapsed="0.000927"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:00:02.872498" level="INFO">${final_text} = {
  "flow-node-inventory:group": [</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:00:02.872054" elapsed="0.000472"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T01:00:02.872573" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T01:00:02.872750" level="INFO">${prolog} = {
  "flow-node-inventory:group": [</msg>
<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-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2/${file_name}.</doc>
<status status="PASS" start="2026-04-08T01:00:02.867395" elapsed="0.005382"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:00:02.886305" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2.vanadium/post_data.epilog.json</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:00:02.885917" elapsed="0.000417"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T01:00:02.887028" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-2.vanadium/post_data.epilog.json' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T01:00:02.886825" elapsed="0.000265">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-2.vanadium/post_data.epilog.json' does not exist.</status>
</kw>
<msg time="2026-04-08T01:00:02.887198" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T01:00:02.886496" elapsed="0.000728"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:00:02.887770" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2/post_data.epilog.json</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:00:02.887391" elapsed="0.000406"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T01:00:02.888090" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-2/post_data.epilog.json"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-2/post_data.epilog.json&lt;/a&gt;'.</msg>
<msg time="2026-04-08T01:00:02.888228" level="INFO">${template} =   ]
}
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T01:00:02.887958" elapsed="0.000296"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:00:02.888652" level="INFO">  ]
}
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:00:02.888412" elapsed="0.000284"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="NOT RUN" start="2026-04-08T01:00:02.889151" elapsed="0.000041"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:02.888850" elapsed="0.000378"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:00:02.889694" level="INFO">${mapping_to_use} = {'NODE': 'openflow:3'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:00:02.889401" elapsed="0.000319"/>
</kw>
<status status="PASS" start="2026-04-08T01:00:02.889253" elapsed="0.000502"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:02.888826" elapsed="0.000951"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:00:02.890355" level="INFO">${final_text} =   ]
}</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:00:02.889922" elapsed="0.000459"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T01:00:02.890464" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T01:00:02.890614" level="INFO">${epilog} =   ]
}</msg>
<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-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2/${file_name}.</doc>
<status status="PASS" start="2026-04-08T01:00:02.885279" elapsed="0.005359"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:00:02.904860" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2.vanadium/data.item.json</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:00:02.904452" elapsed="0.000437"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T01:00:02.905630" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-2.vanadium/data.item.json' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T01:00:02.905421" elapsed="0.000272">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-2.vanadium/data.item.json' does not exist.</status>
</kw>
<msg time="2026-04-08T01:00:02.905785" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T01:00:02.905053" elapsed="0.000756"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:00:02.906417" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2/data.item.json</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:00:02.905973" elapsed="0.000472"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T01:00:02.906738" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-2/data.item.json"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-2/data.item.json&lt;/a&gt;'.</msg>
<msg time="2026-04-08T01:00:02.906872" level="INFO">${template} =     {
      "group-id": ${i},
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": ${i}000,
            "action": [
              {
               ...</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T01:00:02.906607" elapsed="0.000292"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:00:02.907319" level="INFO">    {
      "group-id": ${i},
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": ${i}000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": ${i}000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-${i}",
      "group-type": "group-ff"
    }
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:00:02.907056" elapsed="0.000310"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="NOT RUN" start="2026-04-08T01:00:02.907720" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:02.907434" elapsed="0.000344"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:00:02.908254" level="INFO">${mapping_to_use} = {'NODE': 'openflow:3'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:00:02.907947" elapsed="0.000332"/>
</kw>
<status status="PASS" start="2026-04-08T01:00:02.907802" elapsed="0.000512"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:02.907415" elapsed="0.000921"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:00:02.909088" level="INFO">${final_text} =     {
      "group-id": ${i},
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": ${i}000,
            "action": [
              {
               ...</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:00:02.908482" elapsed="0.000635"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T01:00:02.909183" elapsed="0.000031"/>
</return>
<msg time="2026-04-08T01:00:02.909338" level="INFO">${item_template} =     {
      "group-id": ${i},
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": ${i}000,
            "action": [
              {
               ...</msg>
<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-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2/${file_name}.</doc>
<status status="PASS" start="2026-04-08T01:00:02.903731" elapsed="0.005634"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:00:02.909765" level="INFO">${items} = []</msg>
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:00:02.909528" elapsed="0.000262"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:00:02.910367" level="INFO">${separator} = ,
</msg>
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:00:02.909983" elapsed="0.000410"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:02.911336" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:02.911078" elapsed="0.000317"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:02.911064" elapsed="0.000354"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:00:02.911907" level="INFO">${j} = 1</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:00:02.911558" elapsed="0.000375"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:00:02.912884" level="INFO">${item} =     {
      "group-id": 1,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 1000,
            "action": [
              {
                "orde...</msg>
<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="PASS" start="2026-04-08T01:00:02.912097" elapsed="0.000816"/>
</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="PASS" start="2026-04-08T01:00:02.913074" elapsed="0.000237"/>
</kw>
<var name="${iteration}">1</var>
<status status="PASS" start="2026-04-08T01:00:02.911029" elapsed="0.002322"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="PASS" start="2026-04-08T01:00:02.910450" elapsed="0.002932"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:00:02.913998" level="INFO">${final_text} = {
  "flow-node-inventory:group": [
    {
      "group-id": 1,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 1000,
            "action": [
  ...</msg>
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:00:02.913535" elapsed="0.000490"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T01:00:02.914082" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T01:00:02.914255" level="INFO">${data} = {
  "flow-node-inventory:group": [
    {
      "group-id": 1,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 1000,
            "action": [
  ...</msg>
<var>${data}</var>
<arg>folder=${folder}</arg>
<arg>name_prefix=post_</arg>
<arg>base_name=${base_name}</arg>
<arg>extension=${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>endline=${endline}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one 1 times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-08T01:00:02.853870" elapsed="0.060412"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T01:00:02.915513" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-2/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T01:00:02.915283" elapsed="0.000293">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-2/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-08T01:00:02.915666" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T01:00:02.914932" elapsed="0.000759"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:02.916006" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:02.915762" elapsed="0.000300"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:00:02.916572" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:00:02.916286" elapsed="0.000312"/>
</kw>
<status status="PASS" start="2026-04-08T01:00:02.916086" elapsed="0.000547"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:02.915744" elapsed="0.000911"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:00:02.918982" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:00:02.916836" elapsed="0.002172"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-08T01:00:02.919058" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T01:00:02.919231" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T01:00:02.914610" elapsed="0.004647"/>
</kw>
<kw name="Post_To_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:00:02.920905" level="INFO">/rests/data/opendaylight-inventory:nodes/node=openflow%3A3</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:00:02.920518" elapsed="0.000433"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:00:02.921370" level="INFO">{
  "flow-node-inventory:group": [
    {
      "group-id": 1,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 1000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 1000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-1",
      "group-type": "group-ff"
    }
  ]
}</msg>
<arg>${data}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:00:02.921108" elapsed="0.000382"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:00:02.921937" level="INFO">{'Content-Type': 'application/json'}</msg>
<arg>${content_type}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:00:02.921668" elapsed="0.000327"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:00:02.922440" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:00:02.922197" elapsed="0.000286"/>
</kw>
<kw name="Join_Two_Headers" owner="TemplatedRequests">
<kw name="Copy Dictionary" owner="Collections">
<msg time="2026-04-08T01:00:02.923323" level="INFO">${accumulator} = {'Content-Type': 'application/json'}</msg>
<var>${accumulator}</var>
<arg>${first}</arg>
<doc>Returns a copy of the given dictionary.</doc>
<status status="PASS" start="2026-04-08T01:00:02.923107" elapsed="0.000242"/>
</kw>
<kw name="Get Dictionary Items" owner="Collections">
<msg time="2026-04-08T01:00:02.923681" level="INFO">${items_to_add} = []</msg>
<var>${items_to_add}</var>
<arg>${second}</arg>
<doc>Returns items of the given ``dictionary`` as a list.</doc>
<status status="PASS" start="2026-04-08T01:00:02.923506" elapsed="0.000204"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${accumulator}</arg>
<arg>@{items_to_add}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:00:02.923862" elapsed="0.000190"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:00:02.924474" level="INFO">{'Content-Type': 'application/json'}</msg>
<arg>${accumulator}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:00:02.924226" elapsed="0.000291"/>
</kw>
<return>
<value>${accumulator}</value>
<status status="PASS" start="2026-04-08T01:00:02.924558" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T01:00:02.924712" level="INFO">${headers} = {'Content-Type': 'application/json'}</msg>
<var>${headers}</var>
<arg>first=${content_type}</arg>
<arg>second=${accept}</arg>
<doc>Take two dicts, join them, return result. Second argument values take precedence.</doc>
<status status="PASS" start="2026-04-08T01:00:02.922684" elapsed="0.002080"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="POST On Session" owner="RequestsLibrary">
<msg time="2026-04-08T01:00:02.941670" level="INFO">POST Request : url=http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A3 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A3 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node01s3bfo0y24i1es90l47mavglv0.node0', 'Content-Length': '460', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body={
  "flow-node-inventory:group": [
    {
      "group-id": 1,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 1000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 1000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-1",
      "group-type": "group-ff"
    }
  ]
} 
 </msg>
<msg time="2026-04-08T01:00:02.941795" level="INFO">POST Response : url=http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A3 
 status=201, reason=Created 
 headers={'Location': 'http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A3/flow-node-inventory:group=1', 'Content-Length': '0'} 
 body=None 
 </msg>
<msg time="2026-04-08T01:00:02.941999" level="INFO">${response} = &lt;Response [201]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T01:00:02.927098" elapsed="0.014959"/>
</kw>
<status status="PASS" start="2026-04-08T01:00:02.924845" elapsed="0.017348"/>
</branch>
<branch type="ELSE">
<kw name="POST On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:02.942638" elapsed="0.000054"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:02.942257" elapsed="0.000539"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:02.924825" elapsed="0.018019"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:00:02.950454" level="INFO"/>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:00:02.945320" elapsed="0.005195"/>
</kw>
<status status="PASS" start="2026-04-08T01:00:02.944736" elapsed="0.005827"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:02.944693" elapsed="0.005903"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:00:02.954223" level="INFO">201</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:00:02.951019" elapsed="0.003268"/>
</kw>
<status status="PASS" start="2026-04-08T01:00:02.950672" elapsed="0.003663"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:02.950649" elapsed="0.003720"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:00:02.955143" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:00:02.954610" elapsed="0.000592"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:02.955637" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:02.955301" elapsed="0.000416"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:00:02.956414" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:00:02.955980" elapsed="0.000470"/>
</kw>
<status status="PASS" start="2026-04-08T01:00:02.955749" elapsed="0.000749"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:02.955276" elapsed="0.001252"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:00:02.957301" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:00:02.956768" elapsed="0.000571"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:02.957769" elapsed="0.000029"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:02.957434" elapsed="0.000473"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:00:02.958613" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:00:02.958199" elapsed="0.000449"/>
</kw>
<status status="PASS" start="2026-04-08T01:00:02.957944" elapsed="0.000754"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:02.957409" elapsed="0.001319"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:00:02.958949" elapsed="0.000514"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T01:00:02.960082" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:00:02.959698" elapsed="0.000421"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T01:00:02.960359" elapsed="0.002679"/>
</kw>
<arg>${response}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T01:00:02.943687" elapsed="0.019413"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T01:00:02.963296" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:00:02.963189" elapsed="0.000150"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:02.963154" elapsed="0.000207"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T01:00:02.965823" level="INFO">${text_normalized} = </msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T01:00:02.963510" elapsed="0.002340"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T01:00:02.965898" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T01:00:02.966053" level="INFO">${response_text} = </msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>data=${data}</arg>
<arg>content_type=${content_type}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>POST data to given URI, check status code and return response text.
${content_type} and ${accept} are mandatory Python objects with headers to use.
If ${normalize_json}, normalize text before returning.</doc>
<status status="PASS" start="2026-04-08T01:00:02.919576" elapsed="0.046501"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T01:00:02.966145" elapsed="0.000041"/>
</return>
<msg time="2026-04-08T01:00:02.966311" level="INFO">${response_text} = </msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>extension=json</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>content_type=${HEADERS_YANG_JSON}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>endline=${\n}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve URI and data from folder, call Post_To_Uri, return response text.</doc>
<status status="PASS" start="2026-04-08T01:00:02.766051" elapsed="0.200285"/>
</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=response</arg>
<arg>mapping=${mapping}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:02.966674" elapsed="0.000027"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:02.966440" elapsed="0.000306"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:02.966423" elapsed="0.000346"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T01:00:02.966801" elapsed="0.000024"/>
</return>
<arg>folder=${VAR_DIR}/add-group-2</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<arg>iterations=${iter}</arg>
<doc>Add arguments sensible for JSON data, return Post_Templated response text.
Optionally, verification against response.json (no iteration) is called.
Only subset of JSON data is verified and returned if JMES path is specified in
file ${folder}/jmespath.expr.
Response status code must be one of values from ${explicit_status_codes} if specified or one of set
created from all positive HTTP status codes together with ${additional_allowed_status_codes}.</doc>
<status status="PASS" start="2026-04-08T01:00:02.763404" elapsed="0.203518"/>
</kw>
<kw name="Post_As_Json_Templated" owner="TemplatedRequests">
<kw name="Post_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:00:03.010677" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow.vanadium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:00:03.010293" elapsed="0.000417"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T01:00:03.011598" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-flow.vanadium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T01:00:03.011237" elapsed="0.000439">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-flow.vanadium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-08T01:00:03.011770" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T01:00:03.010884" elapsed="0.000911"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:00:03.012423" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:00:03.012008" elapsed="0.000443"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T01:00:03.012754" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-flow/location.uri"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-flow/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-08T01:00:03.012914" level="INFO">${template} = /rests/data/opendaylight-inventory:nodes/node=$NODE/flow-node-inventory:table=0
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T01:00:03.012615" elapsed="0.000325"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:00:03.013368" level="INFO">/rests/data/opendaylight-inventory:nodes/node=$NODE/flow-node-inventory:table=0
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:00:03.013099" elapsed="0.000313"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:00:03.014592" level="INFO">mapping: {'NODE': 'openflow:3'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:00:03.014109" elapsed="0.000530"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-08T01:00:03.015259" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-08T01:00:03.014811" elapsed="0.000475"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-08T01:00:03.016346" level="INFO">${value} = openflow:3</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-08T01:00:03.015680" elapsed="0.000706"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-08T01:00:03.018067" level="INFO">${encoded} = openflow%3A3</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-08T01:00:03.017688" elapsed="0.000415"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-08T01:00:03.018197" elapsed="0.000076"/>
</return>
<msg time="2026-04-08T01:00:03.018534" level="INFO">${encoded_value} = openflow%3A3</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-08T01:00:03.016866" elapsed="0.001708"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:00:03.018799" elapsed="0.000538"/>
</kw>
<var name="${key}">NODE</var>
<var name="${value}">openflow:3</var>
<status status="PASS" start="2026-04-08T01:00:03.015512" elapsed="0.003924"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-08T01:00:03.015338" elapsed="0.004138"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-08T01:00:03.019520" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T01:00:03.019678" level="INFO">${mapping_to_use} = {'NODE': 'openflow%3A3'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-08T01:00:03.013780" elapsed="0.005924"/>
</kw>
<status status="PASS" start="2026-04-08T01:00:03.013484" elapsed="0.006251"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:03.019912" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:03.019760" elapsed="0.000207"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:03.013464" elapsed="0.006523"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:00:03.020686" level="INFO">${final_text} = /rests/data/opendaylight-inventory:nodes/node=openflow%3A3/flow-node-inventory:table=0</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:00:03.020131" elapsed="0.000582"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T01:00:03.020760" 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-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow/${file_name}.</doc>
<status status="PASS" start="2026-04-08T01:00:03.009660" elapsed="0.011262"/>
</kw>
<msg time="2026-04-08T01:00:03.020975" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:00:02.997172" elapsed="0.023852"/>
</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-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:03.033753" 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-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:03.045941" elapsed="0.000102"/>
</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-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:03.058295" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:03.058491" elapsed="0.000022"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:03.058669" elapsed="0.000021"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:03.059044" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:03.058892" elapsed="0.000206"/>
</branch>
<status status="NOT RUN" start="2026-04-08T01:00:03.058877" elapsed="0.000244"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:03.059278" elapsed="0.000021"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:03.059448" elapsed="0.000019"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:03.059613" elapsed="0.000019"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-08T01:00:03.058848" elapsed="0.000816"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-08T01:00:03.058743" elapsed="0.000947"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:03.059833" elapsed="0.000020"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-08T01:00:03.059906" elapsed="0.000015"/>
</return>
<msg time="2026-04-08T01:00:03.060020" level="INFO">${uri} = /rests/data/opendaylight-inventory:nodes/node=openflow%3A3/flow-node-inventory:table=0</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one 1 times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-08T01:00:02.992957" elapsed="0.067089"/>
</kw>
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:00:03.070811" elapsed="0.000332"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:00:03.084406" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow.vanadium/post_data.prolog.json</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:00:03.084017" elapsed="0.000417"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T01:00:03.085217" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-flow.vanadium/post_data.prolog.json' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T01:00:03.084971" elapsed="0.000321">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-flow.vanadium/post_data.prolog.json' does not exist.</status>
</kw>
<msg time="2026-04-08T01:00:03.085384" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T01:00:03.084599" elapsed="0.000809"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:00:03.085967" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow/post_data.prolog.json</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:00:03.085575" elapsed="0.000519"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T01:00:03.086439" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-flow/post_data.prolog.json"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-flow/post_data.prolog.json&lt;/a&gt;'.</msg>
<msg time="2026-04-08T01:00:03.086571" level="INFO">${template} = {
  "flow": [
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T01:00:03.086292" elapsed="0.000304"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:00:03.087056" level="INFO">{
  "flow": [
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:00:03.086756" elapsed="0.000348"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="NOT RUN" start="2026-04-08T01:00:03.087499" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:03.087191" elapsed="0.000366"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:00:03.088020" level="INFO">${mapping_to_use} = {'NODE': 'openflow:3'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:00:03.087728" elapsed="0.000318"/>
</kw>
<status status="PASS" start="2026-04-08T01:00:03.087581" elapsed="0.000500"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:03.087170" elapsed="0.000932"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:00:03.088691" level="INFO">${final_text} = {
  "flow": [</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:00:03.088263" elapsed="0.000456"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T01:00:03.088767" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T01:00:03.088974" level="INFO">${prolog} = {
  "flow": [</msg>
<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-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow/${file_name}.</doc>
<status status="PASS" start="2026-04-08T01:00:03.083262" elapsed="0.005739"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:00:03.102427" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow.vanadium/post_data.epilog.json</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:00:03.102041" elapsed="0.000414"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T01:00:03.103180" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-flow.vanadium/post_data.epilog.json' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T01:00:03.102946" elapsed="0.000299">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-flow.vanadium/post_data.epilog.json' does not exist.</status>
</kw>
<msg time="2026-04-08T01:00:03.103337" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T01:00:03.102617" elapsed="0.000745"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:00:03.103902" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow/post_data.epilog.json</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:00:03.103526" elapsed="0.000403"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T01:00:03.104239" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-flow/post_data.epilog.json"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-flow/post_data.epilog.json&lt;/a&gt;'.</msg>
<msg time="2026-04-08T01:00:03.104418" level="INFO">${template} =   ]
}
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T01:00:03.104089" elapsed="0.000355"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:00:03.104886" level="INFO">  ]
}
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:00:03.104601" elapsed="0.000330"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="NOT RUN" start="2026-04-08T01:00:03.105314" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:03.104998" elapsed="0.000375"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:00:03.105839" level="INFO">${mapping_to_use} = {'NODE': 'openflow:3'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:00:03.105544" elapsed="0.000321"/>
</kw>
<status status="PASS" start="2026-04-08T01:00:03.105398" elapsed="0.000501"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:03.104979" elapsed="0.000941"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:00:03.106501" level="INFO">${final_text} =   ]
}</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:00:03.106064" elapsed="0.000464"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T01:00:03.106612" elapsed="0.000031"/>
</return>
<msg time="2026-04-08T01:00:03.106772" level="INFO">${epilog} =   ]
}</msg>
<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-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow/${file_name}.</doc>
<status status="PASS" start="2026-04-08T01:00:03.101421" elapsed="0.005375"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:00:03.120571" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow.vanadium/data.item.json</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:00:03.120181" elapsed="0.000419"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T01:00:03.121362" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-flow.vanadium/data.item.json' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T01:00:03.121132" elapsed="0.000295">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-flow.vanadium/data.item.json' does not exist.</status>
</kw>
<msg time="2026-04-08T01:00:03.121519" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T01:00:03.120763" elapsed="0.000782"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:00:03.122090" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow/data.item.json</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:00:03.121709" elapsed="0.000409"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T01:00:03.122430" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-flow/data.item.json"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-flow/data.item.json&lt;/a&gt;'.</msg>
<msg time="2026-04-08T01:00:03.122560" level="INFO">${template} =         {
          "id": "${i}",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048...</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T01:00:03.122296" elapsed="0.000291"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:00:03.122986" level="INFO">        {
          "id": "${i}",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.${i}/32"
          },
          "flow-name": "Flow-${i}",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": ${i}
                      }
                    }
                  ]
                }
              }
            ]
          }
        }
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:00:03.122743" elapsed="0.000293"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="NOT RUN" start="2026-04-08T01:00:03.123410" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:03.123103" elapsed="0.000364"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:00:03.124000" level="INFO">${mapping_to_use} = {'NODE': 'openflow:3'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:00:03.123694" elapsed="0.000333"/>
</kw>
<status status="PASS" start="2026-04-08T01:00:03.123493" elapsed="0.000570"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:03.123084" elapsed="0.001000"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:00:03.124950" level="INFO">${final_text} =         {
          "id": "${i}",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048...</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:00:03.124249" elapsed="0.000733"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T01:00:03.125036" elapsed="0.000032"/>
</return>
<msg time="2026-04-08T01:00:03.125214" level="INFO">${item_template} =         {
          "id": "${i}",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048...</msg>
<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-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow/${file_name}.</doc>
<status status="PASS" start="2026-04-08T01:00:03.119602" elapsed="0.005639"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:00:03.125651" level="INFO">${items} = []</msg>
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:00:03.125406" elapsed="0.000303"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:00:03.126266" level="INFO">${separator} = ,
</msg>
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:00:03.125876" elapsed="0.000417"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:03.126921" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:03.126683" elapsed="0.000303"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:03.126669" elapsed="0.000340"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:00:03.127524" level="INFO">${j} = 1</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:00:03.127169" elapsed="0.000382"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:00:03.128505" level="INFO">${item} =         {
          "id": "1",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
  ...</msg>
<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="PASS" start="2026-04-08T01:00:03.127708" elapsed="0.000826"/>
</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="PASS" start="2026-04-08T01:00:03.128692" elapsed="0.000214"/>
</kw>
<var name="${iteration}">1</var>
<status status="PASS" start="2026-04-08T01:00:03.126637" elapsed="0.002308"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="PASS" start="2026-04-08T01:00:03.126353" elapsed="0.002624"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:00:03.129574" level="INFO">${final_text} = {
  "flow": [
        {
          "id": "1",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "...</msg>
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:00:03.129129" elapsed="0.000474"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T01:00:03.129660" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T01:00:03.129811" level="INFO">${data} = {
  "flow": [
        {
          "id": "1",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "...</msg>
<var>${data}</var>
<arg>folder=${folder}</arg>
<arg>name_prefix=post_</arg>
<arg>base_name=${base_name}</arg>
<arg>extension=${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>endline=${endline}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one 1 times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-08T01:00:03.069953" elapsed="0.059886"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T01:00:03.131106" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-flow/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T01:00:03.130857" elapsed="0.000331">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-flow/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-08T01:00:03.131281" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T01:00:03.130514" elapsed="0.000791"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:03.131625" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:03.131377" elapsed="0.000304"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:00:03.132195" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:00:03.131887" elapsed="0.000337"/>
</kw>
<status status="PASS" start="2026-04-08T01:00:03.131705" elapsed="0.000555"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:03.131358" elapsed="0.000924"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:00:03.134710" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:00:03.132439" elapsed="0.002300"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-08T01:00:03.134796" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T01:00:03.134951" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T01:00:03.130188" elapsed="0.004789"/>
</kw>
<kw name="Post_To_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:00:03.136638" level="INFO">/rests/data/opendaylight-inventory:nodes/node=openflow%3A3/flow-node-inventory:table=0</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:00:03.136384" elapsed="0.000301"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:00:03.137100" level="INFO">{
  "flow": [
        {
          "id": "1",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.1/32"
          },
          "flow-name": "Flow-1",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 1
                      }
                    }
                  ]
                }
              }
            ]
          }
        }
  ]
}</msg>
<arg>${data}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:00:03.136861" elapsed="0.000356"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:00:03.137625" level="INFO">{'Content-Type': 'application/json'}</msg>
<arg>${content_type}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:00:03.137375" elapsed="0.000294"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:00:03.138066" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:00:03.137827" elapsed="0.000282"/>
</kw>
<kw name="Join_Two_Headers" owner="TemplatedRequests">
<kw name="Copy Dictionary" owner="Collections">
<msg time="2026-04-08T01:00:03.138939" level="INFO">${accumulator} = {'Content-Type': 'application/json'}</msg>
<var>${accumulator}</var>
<arg>${first}</arg>
<doc>Returns a copy of the given dictionary.</doc>
<status status="PASS" start="2026-04-08T01:00:03.138737" elapsed="0.000228"/>
</kw>
<kw name="Get Dictionary Items" owner="Collections">
<msg time="2026-04-08T01:00:03.139314" level="INFO">${items_to_add} = []</msg>
<var>${items_to_add}</var>
<arg>${second}</arg>
<doc>Returns items of the given ``dictionary`` as a list.</doc>
<status status="PASS" start="2026-04-08T01:00:03.139121" elapsed="0.000219"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${accumulator}</arg>
<arg>@{items_to_add}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:00:03.139495" elapsed="0.000191"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:00:03.140093" level="INFO">{'Content-Type': 'application/json'}</msg>
<arg>${accumulator}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:00:03.139845" elapsed="0.000291"/>
</kw>
<return>
<value>${accumulator}</value>
<status status="PASS" start="2026-04-08T01:00:03.140195" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T01:00:03.140350" level="INFO">${headers} = {'Content-Type': 'application/json'}</msg>
<var>${headers}</var>
<arg>first=${content_type}</arg>
<arg>second=${accept}</arg>
<doc>Take two dicts, join them, return result. Second argument values take precedence.</doc>
<status status="PASS" start="2026-04-08T01:00:03.138328" elapsed="0.002048"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="POST On Session" owner="RequestsLibrary">
<msg time="2026-04-08T01:00:03.154870" level="INFO">POST Request : url=http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A3/flow-node-inventory:table=0 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A3/flow-node-inventory:table=0 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node01s3bfo0y24i1es90l47mavglv0.node0', 'Content-Length': '777', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body={
  "flow": [
        {
          "id": "1",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.1/32"
          },
          "flow-name": "Flow-1",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 1
                      }
                    }
                  ]
                }
              }
            ]
          }
        }
  ]
} 
 </msg>
<msg time="2026-04-08T01:00:03.154933" level="INFO">POST Response : url=http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A3/flow-node-inventory:table=0 
 status=201, reason=Created 
 headers={'Location': 'http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A3/flow-node-inventory:table=0/flow=1', 'Content-Length': '0'} 
 body=None 
 </msg>
<msg time="2026-04-08T01:00:03.155045" level="INFO">${response} = &lt;Response [201]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T01:00:03.142732" elapsed="0.012339"/>
</kw>
<status status="PASS" start="2026-04-08T01:00:03.140447" elapsed="0.014735"/>
</branch>
<branch type="ELSE">
<kw name="POST On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:03.155381" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:03.155215" elapsed="0.000232"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:03.140429" elapsed="0.015040"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:00:03.159031" level="INFO"/>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:00:03.156587" elapsed="0.002488"/>
</kw>
<status status="PASS" start="2026-04-08T01:00:03.156356" elapsed="0.002754"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:03.156336" elapsed="0.002799"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:00:03.161848" level="INFO">201</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:00:03.159473" elapsed="0.002421"/>
</kw>
<status status="PASS" start="2026-04-08T01:00:03.159208" elapsed="0.002721"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:03.159191" elapsed="0.002763"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:00:03.162625" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:00:03.162196" elapsed="0.000456"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:03.162964" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:03.162723" elapsed="0.000315"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:00:03.163600" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:00:03.163288" elapsed="0.000339"/>
</kw>
<status status="PASS" start="2026-04-08T01:00:03.163063" elapsed="0.000599"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:03.162705" elapsed="0.000979"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:00:03.164300" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:00:03.163858" elapsed="0.000469"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:03.164689" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:03.164448" elapsed="0.000298"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:00:03.165306" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:00:03.164992" elapsed="0.000340"/>
</kw>
<status status="PASS" start="2026-04-08T01:00:03.164770" elapsed="0.000612"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:03.164429" elapsed="0.000976"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:00:03.165573" elapsed="0.000360"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T01:00:03.166402" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:00:03.166103" elapsed="0.000325"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T01:00:03.166600" elapsed="0.002342"/>
</kw>
<arg>${response}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T01:00:03.155883" elapsed="0.013123"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T01:00:03.169202" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:00:03.169079" elapsed="0.000168"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:03.169061" elapsed="0.000208"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T01:00:03.171802" level="INFO">${text_normalized} = </msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T01:00:03.169417" elapsed="0.002413"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T01:00:03.171879" elapsed="0.000031"/>
</return>
<msg time="2026-04-08T01:00:03.172056" level="INFO">${response_text} = </msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>data=${data}</arg>
<arg>content_type=${content_type}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>POST data to given URI, check status code and return response text.
${content_type} and ${accept} are mandatory Python objects with headers to use.
If ${normalize_json}, normalize text before returning.</doc>
<status status="PASS" start="2026-04-08T01:00:03.135320" elapsed="0.036762"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T01:00:03.172150" elapsed="0.000042"/>
</return>
<msg time="2026-04-08T01:00:03.172323" level="INFO">${response_text} = </msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>extension=json</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>content_type=${HEADERS_YANG_JSON}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>endline=${\n}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve URI and data from folder, call Post_To_Uri, return response text.</doc>
<status status="PASS" start="2026-04-08T01:00:02.980744" elapsed="0.191603"/>
</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=response</arg>
<arg>mapping=${mapping}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:03.172687" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:03.172450" elapsed="0.000303"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:03.172433" elapsed="0.000344"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T01:00:03.172809" elapsed="0.000025"/>
</return>
<arg>folder=${VAR_DIR}/add-flow</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<arg>iterations=${iter}</arg>
<doc>Add arguments sensible for JSON data, return Post_Templated response text.
Optionally, verification against response.json (no iteration) is called.
Only subset of JSON data is verified and returned if JMES path is specified in
file ${folder}/jmespath.expr.
Response status code must be one of values from ${explicit_status_codes} if specified or one of set
created from all positive HTTP status codes together with ${additional_allowed_status_codes}.</doc>
<status status="PASS" start="2026-04-08T01:00:02.978186" elapsed="0.194814"/>
</kw>
<var name="${switch}">3</var>
<status status="PASS" start="2026-04-08T01:00:02.541057" elapsed="0.631988"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="PASS" start="2026-04-08T01:00:01.245295" elapsed="1.927785"/>
</for>
<arg>1</arg>
<arg>${member_index}</arg>
<doc>Add 100 groups type 1 &amp; 2 and flows in every switch.</doc>
<status status="PASS" start="2026-04-08T01:00:01.243837" elapsed="1.929304"/>
</kw>
<doc>Add 1 group 1&amp;2 and 1 flow in every switch.</doc>
<status status="PASS" start="2026-04-08T01:00:01.243479" elapsed="1.929758"/>
</kw>
<doc>Add 1 group type 1&amp;2 and 1 flow in every switch.</doc>
<status status="PASS" start="2026-04-08T01:00:00.878778" elapsed="2.294581"/>
</test>
<test id="s1-s4-t21" name="Check Stats Are Not Frozen After Owner Reconnect" line="161">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-08T01:00:03.176682" elapsed="0.000229"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-08T01:00:03.176418" elapsed="0.000548"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:00:03.178248" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:00:03.178122" elapsed="0.000171"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:03.178103" elapsed="0.000212"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:00:03.183437" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:00:03.183328" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:03.183310" elapsed="0.000193"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:00:03.184656" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:00:03.184276" elapsed="0.000407"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:00:03.185196" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:00:03.184851" elapsed="0.000372"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T01:00:03.185268" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T01:00:03.185422" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T01:00:03.183733" elapsed="0.001713"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:00:03.190816" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:00:03.190706" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:03.190684" elapsed="0.000198"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:00:03.192114" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:00:03.192006" elapsed="0.000184"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:03.191988" elapsed="0.000228"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:00:03.192667" level="INFO">${karaf_connection_index} = 476</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:00:03.192367" elapsed="0.000327"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:00:03.193177" level="INFO">${current_connection_index} = 495</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:00:03.192861" elapsed="0.000345"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:00:03.227553" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:00:03.193713" elapsed="0.033949"/>
</kw>
<msg time="2026-04-08T01:00:03.227833" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T01:00:03.227881" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:03.193371" elapsed="0.034548"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T01:00:03.280548" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "S "t "a "t "s "[C "A "r "e "[C "N "o "t "[C "F "r "o "z "e "n "[C "A "f "t "e "r "[C "O "w "n "e "r "[C "R "e "c "o "n "n "e "c "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T01:00:03.228488" elapsed="0.052183"/>
</kw>
<msg time="2026-04-08T01:00:03.280840" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T01:00:03.280888" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "S "t "a "t "s "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:03.228104" elapsed="0.052846"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:03.281306" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:03.281039" elapsed="0.000327"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:03.281016" elapsed="0.000374"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:00:03.281852" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "S "t "a "t "s "[C "A "r "e "[C "N "o "t "[C "F "r "o "z "e "n "[C "A "f "t "e "r "[C "O "w "n "e "r "[C "R "e "c "o "n "n "e "c "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:00:03.281538" elapsed="0.000395"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:03.282242" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:03.282001" elapsed="0.000298"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:03.281982" elapsed="0.000341"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T01:00:03.282355" elapsed="0.000031"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:00:03.285016" elapsed="0.000205"/>
</kw>
<msg time="2026-04-08T01:00:03.285285" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:00:03.283907" elapsed="0.001513"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:03.285941" elapsed="0.000081"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:03.286311" elapsed="0.000075"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:00:03.283279" elapsed="0.003216"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T01:00:03.282700" elapsed="0.003861"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T01:00:03.191703" elapsed="0.094958"/>
</kw>
<msg time="2026-04-08T01:00:03.286754" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:00:03.286798" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "S "t "a "t "s "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:03.191036" elapsed="0.095800"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T01:00:03.287021" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-08T01:00:03.286913" elapsed="0.000167"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:03.286894" elapsed="0.000210"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:03.287515" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:03.287846" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T01:00:03.287916" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T01:00:03.190368" elapsed="0.097651"/>
</kw>
<msg time="2026-04-08T01:00:03.288112" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:00:03.288169" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "S "t "a "t "s "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:03.185814" elapsed="0.102393"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:03.288535" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:03.288283" elapsed="0.000304"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:03.288266" elapsed="0.000344"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T01:00:03.185671" elapsed="0.102962"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:00:03.293975" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:00:03.293868" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:03.293850" elapsed="0.000191"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:00:03.295282" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:00:03.295149" elapsed="0.000178"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:03.295131" elapsed="0.000218"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:00:03.295790" level="INFO">${karaf_connection_index} = 478</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:00:03.295495" elapsed="0.000322"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:00:03.296243" level="INFO">${current_connection_index} = 495</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:00:03.295977" elapsed="0.000293"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:00:03.331046" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:00:03.296769" elapsed="0.034382"/>
</kw>
<msg time="2026-04-08T01:00:03.331338" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T01:00:03.331385" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:03.296432" elapsed="0.034988"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T01:00:03.380949" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "S "t "a "t "s "[C "A "r "e "[C "N "o "t "[C "F "r "o "z "e "n "[C "A "f "t "e "r "[C "O "w "n "e "r "[C "R "e "c "o "n "n "e "c "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T01:00:03.332018" elapsed="0.049233"/>
</kw>
<msg time="2026-04-08T01:00:03.381517" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T01:00:03.381567" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "S "t "a "t "s "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:03.331660" elapsed="0.049945"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:03.382108" elapsed="0.000029"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:03.381742" elapsed="0.000447"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:03.381701" elapsed="0.000522"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:00:03.382805" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "S "t "a "t "s "[C "A "r "e "[C "N "o "t "[C "F "r "o "z "e "n "[C "A "f "t "e "r "[C "O "w "n "e "r "[C "R "e "c "o "n "n "e "c "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:00:03.382381" elapsed="0.000512"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:03.383212" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:03.382963" elapsed="0.000306"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:03.382944" elapsed="0.000349"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T01:00:03.383332" elapsed="0.000043"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:00:03.386132" elapsed="0.000209"/>
</kw>
<msg time="2026-04-08T01:00:03.386402" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:00:03.385028" elapsed="0.001513"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:03.386815" elapsed="0.000074"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:03.387145" elapsed="0.000090"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:00:03.384333" elapsed="0.003014"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T01:00:03.383700" elapsed="0.003713"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T01:00:03.294848" elapsed="0.092664"/>
</kw>
<msg time="2026-04-08T01:00:03.387613" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:00:03.387660" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "S "t "a "t "s "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:03.294293" elapsed="0.093405"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T01:00:03.388175" elapsed="0.000031"/>
</return>
<status status="PASS" start="2026-04-08T01:00:03.387778" elapsed="0.000464"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:03.387759" elapsed="0.000508"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 2,
close the previous connection. In any case create a new connection
to karaf console for 2, set correct prompt set and login to karaf console.
Store connection index for 2 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:03.388678" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:03.389058" elapsed="0.000026"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T01:00:03.389132" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T01:00:03.293531" elapsed="0.095727"/>
</kw>
<msg time="2026-04-08T01:00:03.389357" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:00:03.389402" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "S "t "a "t "s "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:03.288902" elapsed="0.100535"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:03.389773" elapsed="0.000075"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:03.389516" elapsed="0.000368"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:03.389498" elapsed="0.000411"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T01:00:03.288761" elapsed="0.101173"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:00:03.395535" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:00:03.395424" elapsed="0.000157"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:03.395405" elapsed="0.000198"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:00:03.396757" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:00:03.396645" elapsed="0.000157"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:03.396627" elapsed="0.000197"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:00:03.397345" level="INFO">${karaf_connection_index} = 480</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:00:03.396972" elapsed="0.000399"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:00:03.397782" level="INFO">${current_connection_index} = 495</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:00:03.397533" elapsed="0.000275"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:00:03.435075" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:00:03.398340" elapsed="0.036993"/>
</kw>
<msg time="2026-04-08T01:00:03.435698" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T01:00:03.435801" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:03.397970" elapsed="0.037908"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T01:00:03.488173" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "S "t "a "t "s "[C "A "r "e "[C "N "o "t "[C "F "r "o "z "e "n "[C "A "f "t "e "r "[C "O "w "n "e "r "[C "R "e "c "o "n "n "e "c "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T01:00:03.437242" elapsed="0.051049"/>
</kw>
<msg time="2026-04-08T01:00:03.488459" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T01:00:03.488506" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "S "t "a "t "s "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:03.436315" elapsed="0.052228"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:03.488885" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:03.488633" elapsed="0.000309"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:03.488607" elapsed="0.000359"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:00:03.489473" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "S "t "a "t "s "[C "A "r "e "[C "N "o "t "[C "F "r "o "z "e "n "[C "A "f "t "e "r "[C "O "w "n "e "r "[C "R "e "c "o "n "n "e "c "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:00:03.489140" elapsed="0.000408"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:03.489843" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:03.489618" elapsed="0.000279"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:03.489599" elapsed="0.000321"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T01:00:03.489955" elapsed="0.000034"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:00:03.492572" elapsed="0.000183"/>
</kw>
<msg time="2026-04-08T01:00:03.492816" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:00:03.491480" elapsed="0.001470"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:03.493251" elapsed="0.000074"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:03.493580" elapsed="0.000072"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:00:03.490833" elapsed="0.002928"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T01:00:03.490275" elapsed="0.003549"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T01:00:03.396342" elapsed="0.097580"/>
</kw>
<msg time="2026-04-08T01:00:03.494070" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:00:03.494116" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "S "t "a "t "s "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:03.395758" elapsed="0.098394"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T01:00:03.494364" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-08T01:00:03.494255" elapsed="0.000168"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:03.494235" elapsed="0.000211"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 3,
close the previous connection. In any case create a new connection
to karaf console for 3, set correct prompt set and login to karaf console.
Store connection index for 3 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:03.495059" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:03.495422" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T01:00:03.495494" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T01:00:03.395053" elapsed="0.100549"/>
</kw>
<msg time="2026-04-08T01:00:03.495695" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:00:03.495740" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "S "t "a "t "s "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:03.390254" elapsed="0.105521"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:03.496106" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:03.495851" elapsed="0.000339"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:03.495834" elapsed="0.000382"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T01:00:03.390079" elapsed="0.106161"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-08T01:00:03.185500" elapsed="0.310775"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-08T01:00:03.182909" elapsed="0.313430"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-08T01:00:03.177566" elapsed="0.318835"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:03.177119" elapsed="0.319332"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-08T01:00:03.174308" elapsed="0.322199"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Check Flow Stats Are Not Frozen">
<kw name="Extract Flow Duration">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:00:03.498582" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:00:03.498280" elapsed="0.000329"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T01:00:03.498654" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T01:00:03.498799" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T01:00:03.497916" elapsed="0.000908"/>
</kw>
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T01:00:03.508051" level="INFO">GET Request : url=http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0/flow=1?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0/flow=1?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node01s3bfo0y24i1es90l47mavglv0.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T01:00:03.508278" level="INFO">GET Response : url=http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0/flow=1?content=nonconfig 
 status=409, reason=Conflict 
 headers={'Content-Type': 'application/yang-data+json', 'Content-Length': '242'} 
 body={
  "errors": {
    "error": [
      {
        "error-tag": "data-missing",
        "error-message": "Request could not be completed because the relevant data model content does not exist",
        "error-type": "protocol"
      }
    ]
  }
} 
 </msg>
<msg time="2026-04-08T01:00:03.508430" level="FAIL">HTTPError: 409 Client Error: Conflict for url: http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0/flow=1?content=nonconfig</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${RFC8040_NODES_API}/node=openflow%3A1/flow-node-inventory:table=0/flow=1?content=nonconfig</arg>
<arg>headers=${headers}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-08T01:00:03.498982" elapsed="0.010035">HTTPError: 409 Client Error: Conflict for url: http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0/flow=1?content=nonconfig</status>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${resp.content}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:03.509368" elapsed="0.000034"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<var>${json_resp}</var>
<arg>${resp.content}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="NOT RUN" start="2026-04-08T01:00:03.509714" elapsed="0.000090"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${flow_list}</var>
<arg>${json_resp}</arg>
<arg>flow-node-inventory:flow</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:03.510038" elapsed="0.000030"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${flow_stats}</var>
<arg>${flow_list}[0]</arg>
<arg>opendaylight-flow-statistics:flow-statistics</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:03.510312" elapsed="0.000031"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${duration}</var>
<arg>${flow_stats}[duration]</arg>
<arg>second</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:03.510566" elapsed="0.000029"/>
</kw>
<return>
<value>${duration}</value>
<status status="NOT RUN" start="2026-04-08T01:00:03.510662" elapsed="0.000023"/>
</return>
<var>${duration_1}</var>
<arg>${member_index}</arg>
<doc>Extract duration for flow 1 in switch 1.</doc>
<status status="FAIL" start="2026-04-08T01:00:03.497566" elapsed="0.013258">HTTPError: 409 Client Error: Conflict for url: http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0/flow=1?content=nonconfig</status>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${duration_1}</var>
<arg>${duration_1}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:03.511233" elapsed="0.000031"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<arg>${period_in_seconds}</arg>
<doc>Pauses the test executed for the given time.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:03.511485" elapsed="0.000028"/>
</kw>
<kw name="Extract Flow Duration">
<var>${duration_2}</var>
<arg>${member_index}</arg>
<doc>Extract duration for flow 1 in switch 1.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:03.511751" elapsed="0.000031"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${duration_2}</var>
<arg>${duration_2}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:03.512006" elapsed="0.000029"/>
</kw>
<kw name="Should Not Be Equal As Integers" owner="BuiltIn">
<arg>${duration_1}</arg>
<arg>${duration_2}</arg>
<doc>Fails if objects are equal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:03.512315" elapsed="0.000030"/>
</kw>
<doc>Verify flow stats are not frozen for flow 1 and switch 1.</doc>
<status status="FAIL" start="2026-04-08T01:00:03.497232" elapsed="0.015243">HTTPError: 409 Client Error: Conflict for url: http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0/flow=1?content=nonconfig</status>
</kw>
<kw name="Check Flow Stats Are Not Frozen">
<kw name="Extract Flow Duration">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:00:04.516670" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:00:04.515893" elapsed="0.000848"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T01:00:04.516855" elapsed="0.000078"/>
</return>
<msg time="2026-04-08T01:00:04.517308" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T01:00:04.515056" elapsed="0.002312"/>
</kw>
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T01:00:04.526483" level="INFO">GET Request : url=http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0/flow=1?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0/flow=1?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node01s3bfo0y24i1es90l47mavglv0.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T01:00:04.526634" level="INFO">GET Response : url=http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0/flow=1?content=nonconfig 
 status=409, reason=Conflict 
 headers={'Content-Type': 'application/yang-data+json', 'Content-Length': '242'} 
 body={
  "errors": {
    "error": [
      {
        "error-tag": "data-missing",
        "error-message": "Request could not be completed because the relevant data model content does not exist",
        "error-type": "protocol"
      }
    ]
  }
} 
 </msg>
<msg time="2026-04-08T01:00:04.526748" level="FAIL">HTTPError: 409 Client Error: Conflict for url: http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0/flow=1?content=nonconfig</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${RFC8040_NODES_API}/node=openflow%3A1/flow-node-inventory:table=0/flow=1?content=nonconfig</arg>
<arg>headers=${headers}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-08T01:00:04.517781" elapsed="0.009370">HTTPError: 409 Client Error: Conflict for url: http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0/flow=1?content=nonconfig</status>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${resp.content}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:04.527395" elapsed="0.000023"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<var>${json_resp}</var>
<arg>${resp.content}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="NOT RUN" start="2026-04-08T01:00:04.527631" elapsed="0.000024"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${flow_list}</var>
<arg>${json_resp}</arg>
<arg>flow-node-inventory:flow</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:04.527807" elapsed="0.000021"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${flow_stats}</var>
<arg>${flow_list}[0]</arg>
<arg>opendaylight-flow-statistics:flow-statistics</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:04.527978" elapsed="0.000020"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${duration}</var>
<arg>${flow_stats}[duration]</arg>
<arg>second</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:04.528147" elapsed="0.000035"/>
</kw>
<return>
<value>${duration}</value>
<status status="NOT RUN" start="2026-04-08T01:00:04.528230" elapsed="0.000017"/>
</return>
<var>${duration_1}</var>
<arg>${member_index}</arg>
<doc>Extract duration for flow 1 in switch 1.</doc>
<status status="FAIL" start="2026-04-08T01:00:04.514234" elapsed="0.014104">HTTPError: 409 Client Error: Conflict for url: http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0/flow=1?content=nonconfig</status>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${duration_1}</var>
<arg>${duration_1}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:04.528502" elapsed="0.000020"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<arg>${period_in_seconds}</arg>
<doc>Pauses the test executed for the given time.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:04.528735" elapsed="0.000023"/>
</kw>
<kw name="Extract Flow Duration">
<var>${duration_2}</var>
<arg>${member_index}</arg>
<doc>Extract duration for flow 1 in switch 1.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:04.528924" elapsed="0.000022"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${duration_2}</var>
<arg>${duration_2}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:04.529098" elapsed="0.000020"/>
</kw>
<kw name="Should Not Be Equal As Integers" owner="BuiltIn">
<arg>${duration_1}</arg>
<arg>${duration_2}</arg>
<doc>Fails if objects are equal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:04.529310" elapsed="0.000020"/>
</kw>
<doc>Verify flow stats are not frozen for flow 1 and switch 1.</doc>
<status status="FAIL" start="2026-04-08T01:00:04.513245" elapsed="0.016173">HTTPError: 409 Client Error: Conflict for url: http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0/flow=1?content=nonconfig</status>
</kw>
<kw name="Check Flow Stats Are Not Frozen">
<kw name="Extract Flow Duration">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:00:05.534044" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:00:05.533226" elapsed="0.000975"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T01:00:05.534332" elapsed="0.000090"/>
</return>
<msg time="2026-04-08T01:00:05.534756" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T01:00:05.532292" elapsed="0.002550"/>
</kw>
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T01:00:05.542796" level="INFO">GET Request : url=http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0/flow=1?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0/flow=1?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node01s3bfo0y24i1es90l47mavglv0.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T01:00:05.543413" level="INFO">GET Response : url=http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0/flow=1?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '486'} 
 body={"flow-node-inventory:flow":[{"id":"1","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.1/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":1}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":2,"nanosecond":841000000}},"flags":""}]} 
 </msg>
<msg time="2026-04-08T01:00:05.543552" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${RFC8040_NODES_API}/node=openflow%3A1/flow-node-inventory:table=0/flow=1?content=nonconfig</arg>
<arg>headers=${headers}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T01:00:05.535086" elapsed="0.008502"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:00:05.547228" level="INFO">{"flow-node-inventory:flow":[{"id":"1","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.1/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":1}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":2,"nanosecond":841000000}},"flags":""}]}</msg>
<arg>${resp.content}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:00:05.543871" elapsed="0.003430"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:00:05.551586" level="INFO">${json_data} = {'flow-node-inventory:flow': [{'id': '1', 'table_id': 0, 'priority': 100, 'cookie_mask': '0', 'idle-timeout': 0, 'match': {'ethernet-match': {'ethernet-type': {'type': 2048}}, 'ipv4-destination': '10....</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:00:05.550954" elapsed="0.000673"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-08T01:00:05.551695" elapsed="0.000043"/>
</return>
<msg time="2026-04-08T01:00:05.551933" level="INFO">${json_resp} = {'flow-node-inventory:flow': [{'id': '1', 'table_id': 0, 'priority': 100, 'cookie_mask': '0', 'idle-timeout': 0, 'match': {'ethernet-match': {'ethernet-type': {'type': 2048}}, 'ipv4-destination': '10....</msg>
<var>${json_resp}</var>
<arg>${resp.content}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-08T01:00:05.547604" elapsed="0.004366"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:00:05.552570" level="INFO">${flow_list} = [{'id': '1', 'table_id': 0, 'priority': 100, 'cookie_mask': '0', 'idle-timeout': 0, 'match': {'ethernet-match': {'ethernet-type': {'type': 2048}}, 'ipv4-destination': '10.0.10.1/32'}, 'cookie': '0', '...</msg>
<var>${flow_list}</var>
<arg>${json_resp}</arg>
<arg>flow-node-inventory:flow</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:00:05.552267" elapsed="0.000343"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:00:05.553101" level="INFO">${flow_stats} = {'packet-count': '0', 'byte-count': '0', 'duration': {'second': 2, 'nanosecond': 841000000}}</msg>
<var>${flow_stats}</var>
<arg>${flow_list}[0]</arg>
<arg>opendaylight-flow-statistics:flow-statistics</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:00:05.552833" elapsed="0.000313"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:00:05.553715" level="INFO">${duration} = 2</msg>
<var>${duration}</var>
<arg>${flow_stats}[duration]</arg>
<arg>second</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:00:05.553447" elapsed="0.000303"/>
</kw>
<return>
<value>${duration}</value>
<status status="PASS" start="2026-04-08T01:00:05.553814" elapsed="0.000040"/>
</return>
<msg time="2026-04-08T01:00:05.554021" level="INFO">${duration_1} = 2</msg>
<var>${duration_1}</var>
<arg>${member_index}</arg>
<doc>Extract duration for flow 1 in switch 1.</doc>
<status status="PASS" start="2026-04-08T01:00:05.531324" elapsed="0.022736"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:00:05.554813" level="INFO">${duration_1} = 2</msg>
<var>${duration_1}</var>
<arg>${duration_1}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:00:05.554373" elapsed="0.000608"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-08T01:00:10.555694" level="INFO">Slept 5 seconds.</msg>
<arg>${period_in_seconds}</arg>
<doc>Pauses the test executed for the given time.</doc>
<status status="PASS" start="2026-04-08T01:00:05.555142" elapsed="5.000832"/>
</kw>
<kw name="Extract Flow Duration">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:00:10.560467" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:00:10.558854" elapsed="0.001681"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T01:00:10.560652" elapsed="0.000150"/>
</return>
<msg time="2026-04-08T01:00:10.561190" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T01:00:10.557863" elapsed="0.003396"/>
</kw>
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T01:00:10.569545" level="INFO">GET Request : url=http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0/flow=1?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0/flow=1?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node01s3bfo0y24i1es90l47mavglv0.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T01:00:10.570300" level="INFO">GET Response : url=http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0/flow=1?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '486'} 
 body={"flow-node-inventory:flow":[{"id":"1","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.1/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":1}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":5,"nanosecond":897000000}},"flags":""}]} 
 </msg>
<msg time="2026-04-08T01:00:10.570471" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${RFC8040_NODES_API}/node=openflow%3A1/flow-node-inventory:table=0/flow=1?content=nonconfig</arg>
<arg>headers=${headers}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T01:00:10.561642" elapsed="0.008868"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:00:10.574501" level="INFO">{"flow-node-inventory:flow":[{"id":"1","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.1/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":1}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":5,"nanosecond":897000000}},"flags":""}]}</msg>
<arg>${resp.content}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:00:10.570854" elapsed="0.003734"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:00:10.578529" level="INFO">${json_data} = {'flow-node-inventory:flow': [{'id': '1', 'table_id': 0, 'priority': 100, 'cookie_mask': '0', 'idle-timeout': 0, 'match': {'ethernet-match': {'ethernet-type': {'type': 2048}}, 'ipv4-destination': '10....</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:00:10.578029" elapsed="0.000531"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-08T01:00:10.578612" elapsed="0.000035"/>
</return>
<msg time="2026-04-08T01:00:10.578792" level="INFO">${json_resp} = {'flow-node-inventory:flow': [{'id': '1', 'table_id': 0, 'priority': 100, 'cookie_mask': '0', 'idle-timeout': 0, 'match': {'ethernet-match': {'ethernet-type': {'type': 2048}}, 'ipv4-destination': '10....</msg>
<var>${json_resp}</var>
<arg>${resp.content}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-08T01:00:10.574910" elapsed="0.003909"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:00:10.579215" level="INFO">${flow_list} = [{'id': '1', 'table_id': 0, 'priority': 100, 'cookie_mask': '0', 'idle-timeout': 0, 'match': {'ethernet-match': {'ethernet-type': {'type': 2048}}, 'ipv4-destination': '10.0.10.1/32'}, 'cookie': '0', '...</msg>
<var>${flow_list}</var>
<arg>${json_resp}</arg>
<arg>flow-node-inventory:flow</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:00:10.578980" elapsed="0.000266"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:00:10.579601" level="INFO">${flow_stats} = {'packet-count': '0', 'byte-count': '0', 'duration': {'second': 5, 'nanosecond': 897000000}}</msg>
<var>${flow_stats}</var>
<arg>${flow_list}[0]</arg>
<arg>opendaylight-flow-statistics:flow-statistics</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:00:10.579407" elapsed="0.000222"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:00:10.579972" level="INFO">${duration} = 5</msg>
<var>${duration}</var>
<arg>${flow_stats}[duration]</arg>
<arg>second</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:00:10.579784" elapsed="0.000217"/>
</kw>
<return>
<value>${duration}</value>
<status status="PASS" start="2026-04-08T01:00:10.580050" elapsed="0.000027"/>
</return>
<msg time="2026-04-08T01:00:10.580229" level="INFO">${duration_2} = 5</msg>
<var>${duration_2}</var>
<arg>${member_index}</arg>
<doc>Extract duration for flow 1 in switch 1.</doc>
<status status="PASS" start="2026-04-08T01:00:10.556660" elapsed="0.023597"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:00:10.580728" level="INFO">${duration_2} = 5</msg>
<var>${duration_2}</var>
<arg>${duration_2}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:00:10.580414" elapsed="0.000358"/>
</kw>
<kw name="Should Not Be Equal As Integers" owner="BuiltIn">
<arg>${duration_1}</arg>
<arg>${duration_2}</arg>
<doc>Fails if objects are equal after converting them to integers.</doc>
<status status="PASS" start="2026-04-08T01:00:10.580958" elapsed="0.000354"/>
</kw>
<doc>Verify flow stats are not frozen for flow 1 and switch 1.</doc>
<status status="PASS" start="2026-04-08T01:00:05.530258" elapsed="5.051135"/>
</kw>
<arg>30s</arg>
<arg>1s</arg>
<arg>Check Flow Stats Are Not Frozen</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-08T01:00:03.496690" elapsed="7.084750"/>
</kw>
<doc>Check that duration flow stat is increasing.</doc>
<status status="PASS" start="2026-04-08T01:00:03.173727" elapsed="7.407842"/>
</test>
<test id="s1-s4-t22" name="Check Flows After Owner Reconnect In Operational DS" line="165">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-08T01:00:10.585086" elapsed="0.000236"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-08T01:00:10.584805" elapsed="0.000578"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:00:10.586444" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:00:10.586323" elapsed="0.000166"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:10.586301" elapsed="0.000211"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:00:10.591439" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:00:10.591330" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:10.591312" elapsed="0.000193"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:00:10.592523" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:00:10.592108" elapsed="0.000442"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:00:10.593075" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:00:10.592716" elapsed="0.000385"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T01:00:10.593146" elapsed="0.000053"/>
</return>
<msg time="2026-04-08T01:00:10.593328" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T01:00:10.591734" elapsed="0.001618"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:00:10.598986" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:00:10.598855" elapsed="0.000182"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:10.598836" elapsed="0.000223"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:00:10.600390" elapsed="0.000020"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:00:10.600279" elapsed="0.000163"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:10.600260" elapsed="0.000205"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:00:10.600976" level="INFO">${karaf_connection_index} = 476</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:00:10.600616" elapsed="0.000387"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:00:10.601452" level="INFO">${current_connection_index} = 495</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:00:10.601191" elapsed="0.000287"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:00:10.632236" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:00:10.601978" elapsed="0.030376"/>
</kw>
<msg time="2026-04-08T01:00:10.632522" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T01:00:10.632569" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:10.601640" elapsed="0.030965"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T01:00:10.687353" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "[C "A "f "t "e "r "[C "O "w "n "e "r "[C "R "e "c "o "n "n "e "c "t "[C "I "n "[C "O "p "e "r "a "t "i "o "n "a "l "[C "D "S "[78C[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T01:00:10.633180" elapsed="0.054352"/>
</kw>
<msg time="2026-04-08T01:00:10.687736" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T01:00:10.687786" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:10.632801" elapsed="0.055021"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:10.688287" elapsed="0.000028"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:10.687933" elapsed="0.000418"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:10.687901" elapsed="0.000477"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:00:10.688940" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "[C "A "f "t "e "r "[C "O "w "n "e "r "[C "R "e "c "o "n "n "e "c "t "[C "I "n "[C "O "p "e "r "a "t "i "o "n "a "l "[C "D "S "[78C[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:00:10.688531" elapsed="0.000558"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:10.689431" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:10.689196" elapsed="0.000292"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:10.689172" elapsed="0.000339"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T01:00:10.689548" elapsed="0.000040"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:00:10.692283" elapsed="0.000192"/>
</kw>
<msg time="2026-04-08T01:00:10.692541" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:00:10.691135" elapsed="0.001546"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:10.693002" elapsed="0.000077"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:10.693371" elapsed="0.000075"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:00:10.690491" elapsed="0.003067"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T01:00:10.689876" elapsed="0.003748"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T01:00:10.599944" elapsed="0.093782"/>
</kw>
<msg time="2026-04-08T01:00:10.693865" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:00:10.693911" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:10.599343" elapsed="0.094733"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T01:00:10.694300" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-08T01:00:10.694178" elapsed="0.000181"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:10.694141" elapsed="0.000242"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:10.694790" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:10.695317" elapsed="0.000026"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T01:00:10.695391" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T01:00:10.598509" elapsed="0.096995"/>
</kw>
<msg time="2026-04-08T01:00:10.695601" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:00:10.695644" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:10.593741" elapsed="0.101939"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:10.696015" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:10.695758" elapsed="0.000311"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:10.695740" elapsed="0.000353"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T01:00:10.593593" elapsed="0.102523"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:00:10.703984" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:00:10.703849" elapsed="0.000182"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:10.703828" elapsed="0.000224"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:00:10.705415" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:00:10.705302" elapsed="0.000169"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:10.705282" elapsed="0.000212"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:00:10.705956" level="INFO">${karaf_connection_index} = 478</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:00:10.705644" elapsed="0.000339"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:00:10.706428" level="INFO">${current_connection_index} = 495</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:00:10.706146" elapsed="0.000314"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:00:10.759404" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:00:10.706986" elapsed="0.052596"/>
</kw>
<msg time="2026-04-08T01:00:10.759748" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T01:00:10.759800" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:10.706640" elapsed="0.053202"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T01:00:10.818881" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "[C "A "f "t "e "r "[C "O "w "n "e "r "[C "R "e "c "o "n "n "e "c "t "[C "I "n "[C "O "p "e "r "a "t "i "o "n "a "l "[C "D "S "[78C[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T01:00:10.760411" elapsed="0.058612"/>
</kw>
<msg time="2026-04-08T01:00:10.819215" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T01:00:10.819264" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:10.760031" elapsed="0.059271"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:10.819653" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:10.819393" elapsed="0.000317"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:10.819368" elapsed="0.000368"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:00:10.820222" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "[C "A "f "t "e "r "[C "O "w "n "e "r "[C "R "e "c "o "n "n "e "c "t "[C "I "n "[C "O "p "e "r "a "t "i "o "n "a "l "[C "D "S "[78C[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:00:10.819882" elapsed="0.000424"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:10.820596" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:10.820375" elapsed="0.000276"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:10.820356" elapsed="0.000317"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T01:00:10.820708" elapsed="0.000034"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:00:10.823506" elapsed="0.000187"/>
</kw>
<msg time="2026-04-08T01:00:10.823791" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:00:10.822332" elapsed="0.001601"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:10.824236" elapsed="0.000075"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:10.824566" elapsed="0.000073"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:00:10.821616" elapsed="0.003131"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T01:00:10.821033" elapsed="0.003777"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T01:00:10.704966" elapsed="0.119961"/>
</kw>
<msg time="2026-04-08T01:00:10.825022" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:00:10.825067" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:10.704249" elapsed="0.120856"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T01:00:10.825309" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-08T01:00:10.825201" elapsed="0.000167"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:10.825181" elapsed="0.000210"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 2,
close the previous connection. In any case create a new connection
to karaf console for 2, set correct prompt set and login to karaf console.
Store connection index for 2 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:10.825783" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:10.826168" elapsed="0.000026"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T01:00:10.826241" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T01:00:10.703461" elapsed="0.122889"/>
</kw>
<msg time="2026-04-08T01:00:10.826447" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:00:10.826491" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:10.696425" elapsed="0.130145"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:10.826902" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:10.826649" elapsed="0.000305"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:10.826632" elapsed="0.000345"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T01:00:10.696265" elapsed="0.130736"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:00:10.832717" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:00:10.832607" elapsed="0.000156"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:10.832588" elapsed="0.000197"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:00:10.833946" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:00:10.833836" elapsed="0.000157"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:10.833818" elapsed="0.000197"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:00:10.834487" level="INFO">${karaf_connection_index} = 480</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:00:10.834184" elapsed="0.000330"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:00:10.834926" level="INFO">${current_connection_index} = 495</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:00:10.834676" elapsed="0.000277"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:00:10.881432" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:00:10.835481" elapsed="0.046079"/>
</kw>
<msg time="2026-04-08T01:00:10.881726" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T01:00:10.881773" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:10.835121" elapsed="0.046690"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T01:00:10.936770" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "[C "A "f "t "e "r "[C "O "w "n "e "r "[C "R "e "c "o "n "n "e "c "t "[C "I "n "[C "O "p "e "r "a "t "i "o "n "a "l "[C "D "S "[78C[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T01:00:10.882407" elapsed="0.054492"/>
</kw>
<msg time="2026-04-08T01:00:10.937091" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T01:00:10.937138" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:10.882025" elapsed="0.055172"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:10.937539" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:10.937289" elapsed="0.000306"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:10.937263" elapsed="0.000357"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:00:10.938078" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "[C "A "f "t "e "r "[C "O "w "n "e "r "[C "R "e "c "o "n "n "e "c "t "[C "I "n "[C "O "p "e "r "a "t "i "o "n "a "l "[C "D "S "[78C[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:00:10.937767" elapsed="0.000407"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:10.938481" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:10.938245" elapsed="0.000308"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:10.938226" elapsed="0.000355"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T01:00:10.938623" elapsed="0.000033"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:00:10.941397" elapsed="0.000188"/>
</kw>
<msg time="2026-04-08T01:00:10.941647" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:00:10.940243" elapsed="0.001539"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:10.942058" elapsed="0.000076"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:10.942421" elapsed="0.000074"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:00:10.939563" elapsed="0.003043"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T01:00:10.938936" elapsed="0.003785"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T01:00:10.833533" elapsed="0.109288"/>
</kw>
<msg time="2026-04-08T01:00:10.942917" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:00:10.942965" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:10.832957" elapsed="0.110049"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T01:00:10.943216" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-08T01:00:10.943086" elapsed="0.000191"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:10.943066" elapsed="0.000236"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 3,
close the previous connection. In any case create a new connection
to karaf console for 3, set correct prompt set and login to karaf console.
Store connection index for 3 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:10.943700" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:10.944038" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T01:00:10.944109" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T01:00:10.832253" elapsed="0.111983"/>
</kw>
<msg time="2026-04-08T01:00:10.944331" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:00:10.944375" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:10.827288" elapsed="0.117125"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:10.944775" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:10.944489" elapsed="0.000345"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:10.944472" elapsed="0.000386"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T01:00:10.827128" elapsed="0.117754"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-08T01:00:10.593412" elapsed="0.351503"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-08T01:00:10.590951" elapsed="0.354044"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-08T01:00:10.585993" elapsed="0.359058"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:10.585542" elapsed="0.359556"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-08T01:00:10.582662" elapsed="0.362489"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Check Number Of Flows On Member" owner="ClusterOpenFlow">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:00:10.946975" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:00:10.946673" elapsed="0.000328"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T01:00:10.947047" elapsed="0.000268"/>
</return>
<msg time="2026-04-08T01:00:10.947444" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T01:00:10.946315" elapsed="0.001155"/>
</kw>
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T01:00:10.989234" level="INFO">GET Request : url=http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01s3bfo0y24i1es90l47mavglv0.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T01:00:10.993882" level="INFO">GET Response : url=http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Transfer-Encoding': 'chunked'} 
 body={"opendaylight-inventory:nodes":{"node":[{"id":"openflow:3","flow-node-inventory:port-number":54950,"flow-node-inventory:table":[{"id":62,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":28,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":2,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":224,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":181,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":147,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":106,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":61,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":27,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":1,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":223,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":182,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":148,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":105,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":60,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":30,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":0,"flow":[{"id":"71","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.71/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":71}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":876000000}},"flags":""},{"id":"11","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.11/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":11}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":876000000}},"flags":""},{"id":"70","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.70/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":70}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":876000000}},"flags":""},{"id":"10","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.10/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":10}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":876000000}},"flags":""},{"id":"60","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.60/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":60}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":876000000}},"flags":""},{"id":"13","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.13/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":13}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":876000000}},"flags":""},{"id":"12","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.12/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":12}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":876000000}},"flags":""},{"id":"80","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.80/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":80}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":876000000}},"flags":""},{"id":"93","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.93/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":93}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":876000000}},"flags":""},{"id":"92","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.92/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":92}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":876000000}},"flags":""},{"id":"82","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.82/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":82}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":876000000}},"flags":""},{"id":"91","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.91/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":91}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":876000000}},"flags":""},{"id":"81","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.81/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":81}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":876000000}},"flags":""},{"id":"90","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.90/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":90}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":876000000}},"flags":""},{"id":"9","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.9/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":9}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":875000000}},"flags":""},{"id":"84","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.84/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":84}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":876000000}},"flags":""},{"id":"97","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.97/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":97}}]}}]},"hard-timeout":0,"opendaylight-flo... (set the log level to DEBUG or TRACE to see the full content) 
 </msg>
<msg time="2026-04-08T01:00:10.994309" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${RFC8040_OPERATIONAL_NODES_API}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T01:00:10.947630" elapsed="0.046718"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:00:10.998782" level="INFO">{"opendaylight-inventory:nodes":{"node":[{"id":"openflow:3","flow-node-inventory:port-number":54950,"flow-node-inventory:table":[{"id":62,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":28,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":2,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":224,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":181,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":147,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":106,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":61,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":27,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":1,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":223,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":182,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":148,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":105,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":60,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":30,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":0,"flow":[{"id":"71","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.71/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":71}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":876000000}},"flags":""},{"id":"11","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.11/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":11}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":876000000}},"flags":""},{"id":"70","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.70/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":70}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":876000000}},"flags":""},{"id":"10","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.10/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":10}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":876000000}},"flags":""},{"id":"60","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.60/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":60}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":876000000}},"flags":""},{"id":"13","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.13/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":13}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":876000000}},"flags":""},{"id":"12","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.12/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":12}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":876000000}},"flags":""},{"id":"80","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.80/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":80}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":876000000}},"flags":""},{"id":"93","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.93/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":93}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":876000000}},"flags":""},{"id":"92","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.92/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":92}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":876000000}},"flags":""},{"id":"82","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.82/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":82}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":876000000}},"flags":""},{"id":"91","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.91/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":91}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":876000000}},"flags":""},{"id":"81","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.81/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":81}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":876000000}},"flags":""},{"id":"90","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.90/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":90}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":876000000}},"flags":""},{"id":"9","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.9/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":9}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":875000000}},"flags":""},{"id":"84","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.84/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":84}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":876000000}},"flags":""},{"id":"97","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.97/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":97}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":876000000}},"flags":""},{"id":"66","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.66/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":66}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":876000000}},"flags":""},{"id":"79","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.79/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":79}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":876000000}},"flags":""},{"id":"54","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.54/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":54}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":876000000}},"flags":""},{"id":"45","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.45/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":45}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":876000000}},"flags":""},{"id":"83","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.83/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":83}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":876000000}},"flags":""},{"id":"96","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.96/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":96}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":875000000}},"flags":""},{"id":"65","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.65/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":65}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":876000000}},"flags":""},{"id":"78","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.78/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":78}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":876000000}},"flags":""},{"id":"20","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.20/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":20}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":875000000}},"flags":""},{"id":"55","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.55/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":55}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":876000000}},"flags":""},{"id":"46","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.46/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":46}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":876000000}},"flags":""},{"id":"7","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.7/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":7}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":875000000}},"flags":""},{"id":"86","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.86/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":86}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":876000000}},"flags":""},{"id":"95","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.95/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":95}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":875000000}},"flags":""},{"id":"68","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.68/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":68}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":876000000}},"flags":""},{"id":"77","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.77/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":77}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":876000000}},"flags":""},{"id":"30","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.30/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":30}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":876000000}},"flags":""},{"id":"56","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.56/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":56}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":876000000}},"flags":""},{"id":"43","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.43/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":43}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":876000000}},"flags":""},{"id":"8","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.8/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":8}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":875000000}},"flags":""},{"id":"85","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.85/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":85}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":876000000}},"flags":""},{"id":"94","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.94/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":94}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":875000000}},"flags":""},{"id":"67","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.67/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":67}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":876000000}},"flags":""},{"id":"76","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.76/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":76}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":876000000}},"flags":""},{"id":"31","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.31/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":31}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":876000000}},"flags":""},{"id":"57","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.57/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":57}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":876000000}},"flags":""},{"id":"44","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.44/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":44}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":876000000}},"flags":""},{"id":"5","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.5/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":5}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":875000000}},"flags":""},{"id":"88","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.88/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":88}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":876000000}},"flags":""},{"id":"62","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.62/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":62}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":876000000}},"flags":""},{"id":"75","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.75/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":75}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":876000000}},"flags":""},{"id":"32","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.32/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":32}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":876000000}},"flags":""},{"id":"23","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.23/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":23}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":875000000}},"flags":""},{"id":"50","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.50/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":50}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":873000000}},"flags":""},{"id":"41","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.41/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":41}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":876000000}},"flags":""},{"id":"6","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.6/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":6}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":875000000}},"flags":""},{"id":"100","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.100/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":100}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":876000000}},"flags":""},{"id":"87","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.87/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":87}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":876000000}},"flags":""},{"id":"61","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.61/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":61}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":876000000}},"flags":""},{"id":"74","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.74/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":74}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":876000000}},"flags":""},{"id":"33","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.33/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":33}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":876000000}},"flags":""},{"id":"24","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.24/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":24}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":875000000}},"flags":""},{"id":"51","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.51/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":51}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":873000000}},"flags":""},{"id":"42","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.42/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":42}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":876000000}},"flags":""},{"id":"3","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.3/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":3}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":875000000}},"flags":""},{"id":"99","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.99/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":99}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":876000000}},"flags":""},{"id":"64","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.64/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":64}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":876000000}},"flags":""},{"id":"73","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.73/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":73}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":876000000}},"flags":""},{"id":"34","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.34/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":34}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":876000000}},"flags":""},{"id":"21","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.21/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":21}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":875000000}},"flags":""},{"id":"52","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.52/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":52}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":876000000}},"flags":""},{"id":"#UF$TABLE*0-3","table_id":0,"priority":0,"cookie_mask":"0","idle-timeout":0,"cookie":"10","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"output-action":{"max-length":65535,"output-node-connector":"CONTROLLER"}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"27","byte-count":"2190","duration":{"second":100,"nanosecond":748000000}},"flags":"SEND_FLOW_REM"},{"id":"4","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.4/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":4}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":875000000}},"flags":""},{"id":"89","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.89/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":89}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":876000000}},"flags":""},{"id":"98","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.98/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":98}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":876000000}},"flags":""},{"id":"63","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.63/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":63}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":876000000}},"flags":""},{"id":"72","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.72/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":72}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":876000000}},"flags":""},{"id":"35","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.35/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":35}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":875000000}},"flags":""},{"id":"22","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.22/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":22}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":875000000}},"flags":""},{"id":"53","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.53/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":53}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":876000000}},"flags":""},{"id":"40","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.40/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":40}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":876000000}},"flags":""},{"id":"37","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.37/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":37}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":875000000}},"flags":""},{"id":"28","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.28/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":28}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":875000000}},"flags":""},{"id":"36","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.36/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":36}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":875000000}},"flags":""},{"id":"27","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.27/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":27}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":875000000}},"flags":""},{"id":"39","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.39/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":39}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":875000000}},"flags":""},{"id":"26","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.26/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":26}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":875000000}},"flags":""},{"id":"38","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.38/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":38}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":875000000}},"flags":""},{"id":"25","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.25/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":25}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":875000000}},"flags":""},{"id":"69","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.69/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":69}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":876000000}},"flags":""},{"id":"59","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.59/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":59}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":876000000}},"flags":""},{"id":"58","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.58/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":58}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":876000000}},"flags":""},{"id":"49","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.49/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":49}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":876000000}},"flags":""},{"id":"48","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.48/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":48}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":876000000}},"flags":""},{"id":"29","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.29/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":29}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":875000000}},"flags":""},{"id":"47","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.47/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":47}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":876000000}},"flags":""},{"id":"18","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.18/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":18}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":876000000}},"flags":""},{"id":"19","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.19/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":19}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":876000000}},"flags":""},{"id":"14","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.14/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":14}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":876000000}},"flags":""},{"id":"15","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.15/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":15}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":876000000}},"flags":""},{"id":"1","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.1/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":1}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":7,"nanosecond":625000000}},"flags":""},{"id":"16","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.16/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":16}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":876000000}},"flags":""},{"id":"2","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.2/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":2}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":876000000}},"flags":""},{"id":"17","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.17/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":17}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":876000000}},"flags":""}],"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"45","active-flows":101,"packets-matched":"37"}},{"id":226,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":179,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":149,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":104,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":59,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":29,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":225,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":180,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":150,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":103,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":66,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":32,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":220,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":185,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":151,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":102,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":65,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":31,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":253,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":219,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":186,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":152,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":101,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":64,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":34,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":252,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":222,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":183,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":153,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":100,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":63,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":33,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":251,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":221,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":184,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":154,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":99,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":54,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":20,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":250,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":216,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":189,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":155,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":129,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":114,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":53,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":19,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":249,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":215,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":190,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":156,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":130,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":113,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":52,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":22,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":248,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":218,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":187,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":157,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":112,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":51,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":21,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":247,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":217,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":188,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":158,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":128,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":111,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":58,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":24,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":246,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":212,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":193,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":159,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":110,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":57,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":23,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":245,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":211,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":194,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":160,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":109,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":56,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":26,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":244,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":214,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":191,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":161,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":108,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":55,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":25,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":243,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":213,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":192,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":162,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":107,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":77,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":43,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":17,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":239,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":198,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":164,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":138,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":119,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":89,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":78,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":44,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":18,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":240,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":197,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":163,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":137,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":120,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":90,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":75,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":45,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":15,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":241,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":196,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":166,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":136,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":121,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":87,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":76,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":46,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":16,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":242,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":195,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":165,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":135,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":122,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":88,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":81,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":47,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":13,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":235,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":202,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":168,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":134,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":115,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":85,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":82,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":48,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":14,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":236,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":201,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":167,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":133,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":116,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":86,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":79,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":49,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":11,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":237,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":200,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":170,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":132,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":117,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":83,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":80,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":50,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":12,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":238,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":199,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":169,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":131,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":118,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":84,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":69,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":35,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":9,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":231,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":206,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":172,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":146,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":127,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":97,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":70,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":36,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":10,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":232,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":205,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":171,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":145,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":98,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":67,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":37,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":7,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":233,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":204,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":174,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":144,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":95,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":68,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":38,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":8,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":234,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":203,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":173,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":143,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":96,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":73,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":39,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":5,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":227,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":210,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":176,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":142,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":123,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":93,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":74,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":40,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":6,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":228,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":209,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":175,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":141,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":124,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":94,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":71,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":41,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":3,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":229,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":208,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":178,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":140,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":125,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":91,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":72,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":42,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":4,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":230,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":207,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":177,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":139,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":126,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":92,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}}],"opendaylight-group-statistics:group-features":{"max-groups":[4294967040],"group-types-supported":["opendaylight-group-types:group-all","opendaylight-group-types:group-ff","opendaylight-group-types:group-select","opendaylight-group-types:group-indirect"],"group-capabilities-supported":["opendaylight-group-types:chaining","opendaylight-group-types:select-weight","opendaylight-group-types:select-liveness"],"actions":[67076097]},"flow-node-inventory:manufacturer":"Nicira, Inc.","flow-node-inventory:description":"s3","flow-node-inventory:hardware":"Open vSwitch","flow-node-inventory:switch-features":{"max_tables":254,"capabilities":["flow-node-inventory:flow-feature-capability-table-stats","flow-node-inventory:flow-feature-capability-group-stats","flow-node-inventory:flow-feature-capability-queue-stats","flow-node-inventory:flow-feature-capability-flow-stats","flow-node-inventory:flow-feature-capability-port-stats"],"max_buffers":0},"flow-node-inventory:snapshot-gathering-status-start":{"begin":"2026-04-08T01:00:10.761Z"},"flow-node-inventory:software":"2.17.11","node-connector":[{"id":"openflow:3:LOCAL","flow-node-inventory:port-number":4294967294,"flow-node-inventory:hardware-address":"c2:87:c1:60:0d:43","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s3","flow-node-inventory:current-feature":"","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":0,"flow-node-inventory:state":{"live":false,"blocked":false,"link-down":true},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"PORT-DOWN","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"0","received":"0"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":106,"nanosecond":78000000},"bytes":{"transmitted":"0","received":"0"},"receive-crc-error":"0"}},{"id":"openflow:3:2","flow-node-inventory:port-number":2,"flow-node-inventory:hardware-address":"9e:72:98:8c:46:72","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s3-eth2","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"33","received":"37"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":106,"nanosecond":81000000},"bytes":{"transmitted":"2757","received":"3109"},"receive-crc-error":"0"}},{"id":"openflow:3:1","flow-node-inventory:port-number":1,"flow-node-inventory:hardware-address":"ca:ac:9a:41:42:1c","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s3-eth1","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"39","received":"10"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":106,"nanosecond":81000000},"bytes":{"transmitted":"3285","received":"796"},"receive-crc-error":"0"}}],"flow-node-inventory:ip-address":"10.30.170.192","flow-node-inventory:serial-number":"None","flow-node-inventory:group":[{"group-id":56,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":56000}}],"watch_group":56000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":56,"duration":{"second":101,"nanosecond":898000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":22,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":22000}}],"watch_group":22000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":22,"duration":{"second":101,"nanosecond":898000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":99,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":99000}}],"watch_group":99000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":99,"duration":{"second":101,"nanosecond":898000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":34000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":34000,"duration":{"second":104,"nanosecond":728000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":89000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":89000,"duration":{"second":104,"nanosecond":727000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":60000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":60000,"duration":{"second":104,"nanosecond":724000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":91000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":91000,"duration":{"second":104,"nanosecond":724000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":57,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":57000}}],"watch_group":57000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":57,"duration":{"second":101,"nanosecond":898000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":23,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":23000}}],"watch_group":23000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":23,"duration":{"second":101,"nanosecond":401000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":14000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":14000,"duration":{"second":104,"nanosecond":724000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":98,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":98000}}],"watch_group":98000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":98,"duration":{"second":101,"nanosecond":400000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":56000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":56000,"duration":{"second":104,"nanosecond":724000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":85000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":85000,"duration":{"second":104,"nanosecond":724000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":54,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":54000}}],"watch_group":54000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":54,"duration":{"second":101,"nanosecond":400000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":24,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":24000}}],"watch_group":24000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":24,"duration":{"second":101,"nanosecond":400000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":36000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":36000,"duration":{"second":104,"nanosecond":724000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":87000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":87000,"duration":{"second":104,"nanosecond":724000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":59000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":59000,"duration":{"second":104,"nanosecond":724000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":25000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":25000,"duration":{"second":104,"nanosecond":724000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":43000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":43000,"duration":{"second":104,"nanosecond":723000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":55,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":55000}}],"watch_group":55000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":55,"duration":{"second":101,"nanosecond":400000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":25,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":25000}}],"watch_group":25000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":25,"duration":{"second":104,"nanosecond":406000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":100,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":100000}}],"watch_group":100000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":100,"duration":{"second":101,"nanosecond":400000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":58000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":58000,"duration":{"second":104,"nanosecond":406000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":86000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":86000,"duration":{"second":104,"nanosecond":406000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":60,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":60000}}],"watch_group":60000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":60,"duration":{"second":104,"nanosecond":406000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":26,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":26000}}],"watch_group":26000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":26,"duration":{"second":101,"nanosecond":400000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":41000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":41000,"duration":{"second":104,"nanosecond":405000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":95,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":95000}}],"watch_group":95000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":95,"duration":{"second":101,"nanosecond":400000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":82000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":82000,"duration":{"second":104,"nanosecond":405000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":61,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":61000}}],"watch_group":61000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":61,"duration":{"second":101,"nanosecond":400000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":27,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":27000}}],"watch_group":27000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":27,"duration":{"second":101,"nanosecond":395000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":94,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":94000}}],"watch_group":94000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":94,"duration":{"second":101,"nanosecond":395000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":98000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":98000,"duration":{"second":104,"nanosecond":404000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":27000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":27000,"duration":{"second":104,"nanosecond":404000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":57000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":57000,"duration":{"second":104,"nanosecond":403000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":16000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":16000,"duration":{"second":104,"nanosecond":402000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":83000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":83000,"duration":{"second":104,"nanosecond":402000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":58,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":58000}}],"watch_group":58000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":58,"duration":{"second":103,"nanosecond":903000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":28,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":28000}}],"watch_group":28000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":28,"duration":{"second":101,"nanosecond":395000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":97,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":97000}}],"watch_group":97000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":97,"duration":{"second":101,"nanosecond":395000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":100000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":100000,"duration":{"second":103,"nanosecond":903000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":59,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":59000}}],"watch_group":59000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":59,"duration":{"second":103,"nanosecond":903000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":38000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":38000,"duration":{"second":103,"nanosecond":903000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":29,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":29000}}],"watch_group":29000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":29,"duration":{"second":101,"nanosecond":395000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":96,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":96000}}],"watch_group":96000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":96,"duration":{"second":101,"nanosecond":395000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":84000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":84000,"duration":{"second":103,"nanosecond":903000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":64,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":64000}}],"watch_group":64000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":64,"duration":{"second":101,"nanosecond":395000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":30,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":30000}}],"watch_group":30000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":30,"duration":{"second":101,"nanosecond":395000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":4,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":4000}}],"watch_group":4000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":4,"duration":{"second":101,"nanosecond":395000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":91,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":91000}}],"watch_group":91000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":91,"duration":{"second":103,"nanosecond":903000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":7000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":7000,"duration":{"second":103,"nanosecond":903000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":29000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":29000,"duration":{"second":103,"nanosecond":903000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":65,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":65000}}],"watch_group":65000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":65,"duration":{"second":101,"nanosecond":395000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":31,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":31000}}],"watch_group":31000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":31,"duration":{"second":101,"nanosecond":395000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":5,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":5000}}],"watch_group":5000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":5,"duration":{"second":101,"nanosecond":395000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":90,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":90000}}],"watch_group":90000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":90,"duration":{"second":101,"nanosecond":395000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":18000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":18000,"duration":{"second":103,"nanosecond":902000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":62,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":62000}}],"watch_group":62000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":62,"duration":{"second":101,"nanosecond":395000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":65000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":65000,"duration":{"second":103,"nanosecond":902000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":32,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":32000}}],"watch_group":32000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":32,"duration":{"second":101,"nanosecond":395000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":2,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":2000}}],"watch_group":2000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":2,"duration":{"second":101,"nanosecond":395000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":93,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":93000}}],"watch_group":93000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":93,"duration":{"second":101,"nanosecond":395000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":64000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":64000,"duration":{"second":103,"nanosecond":901000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":63,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":63000}}],"watch_group":63000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":63,"duration":{"second":101,"nanosecond":395000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":33,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":33000}}],"watch_group":33000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":33,"duration":{"second":101,"nanosecond":395000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":3,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":3000}}],"watch_group":3000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":3,"duration":{"second":101,"nanosecond":395000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":80000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":80000,"duration":{"second":103,"nanosecond":900000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":9000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":9000,"duration":{"second":103,"nanosecond":900000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":92,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":92000}}],"watch_group":92000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":92,"duration":{"second":101,"nanosecond":395000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":5000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":5000,"duration":{"second":103,"nanosecond":900000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":20000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":20000,"duration":{"second":103,"nanosecond":900000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":81000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":81000,"duration":{"second":103,"nanosecond":900000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":97000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":97000,"duration":{"second":103,"nanosecond":900000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":31000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":31000,"duration":{"second":103,"nanosecond":900000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":68,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":68000}}],"watch_group":68000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":68,"duration":{"second":101,"nanosecond":395000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":11000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":11000,"duration":{"second":103,"nanosecond":900000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":34,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":34000}}],"watch_group":34000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":34,"duration":{"second":103,"nanosecond":900000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":78000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":78000,"duration":{"second":103,"nanosecond":899000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":87,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":87000}}],"watch_group":87000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":87,"duration":{"second":103,"nanosecond":899000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":93000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":93000,"duration":{"second":103,"nanosecond":899000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":63000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":63000,"duration":{"second":103,"nanosecond":899000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":69,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":69000}}],"watch_group":69000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":69,"duration":{"second":101,"nanosecond":395000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":35,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":35000}}],"watch_group":35000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":35,"duration":{"second":101,"nanosecond":395000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":1,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":1000}}],"watch_group":1000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":1,"duration":{"second":7,"nanosecond":835000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":33000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":33000,"duration":{"second":103,"nanosecond":895000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":79000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":79000,"duration":{"second":103,"nanosecond":895000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":86,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":86000}}],"watch_group":86000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":86,"duration":{"second":103,"nanosecond":895000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":62000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":62000,"duration":{"second":103,"nanosecond":895000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":66,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":66000}}],"watch_group":66000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":66,"duration":{"second":101,"nanosecond":395000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":77000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":77000,"duration":{"second":103,"nanosecond":895000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":36,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":36000}}],"watch_group":36000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":36,"duration":{"second":103,"nanosecond":895000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":89,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":89000}}],"watch_group":89000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":89,"duration":{"second":103,"nanosecond":895000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":22000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":22000,"duration":{"second":103,"nanosecond":895000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":95000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":95000,"duration":{"second":103,"nanosecond":895000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":67,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":67000}}],"watch_group":67000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":67,"duration":{"second":101,"nanosecond":395000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":37,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":37000}}],"watch_group":37000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":37,"duration":{"second":101,"nanosecond":395000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":1000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":1000,"duration":{"second":8,"nanosecond":47000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":88,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":88000}}],"watch_group":88000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":88,"duration":{"second":101,"nanosecond":395000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":61000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":61000,"duration":{"second":103,"nanosecond":894000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":3000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":3000,"duration":{"second":103,"nanosecond":894000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":73,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":73000}}],"watch_group":73000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":73,"duration":{"second":101,"nanosecond":395000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":39,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":39000}}],"watch_group":39000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":39,"duration":{"second":101,"nanosecond":390000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":13,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":13000}}],"watch_group":13000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":13,"duration":{"second":101,"nanosecond":390000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":74000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":74000,"duration":{"second":103,"nanosecond":894000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":15000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":15000,"duration":{"second":103,"nanosecond":894000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":44000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":44000,"duration":{"second":103,"nanosecond":894000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":45000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":45000,"duration":{"second":103,"nanosecond":894000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":68000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":68000,"duration":{"second":103,"nanosecond":894000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":72,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":72000}}],"watch_group":72000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":72,"duration":{"second":101,"nanosecond":390000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":38,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":38000}}],"watch_group":38000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":38,"duration":{"second":103,"nanosecond":404000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":75000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":75000,"duration":{"second":103,"nanosecond":404000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":12,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":12000}}],"watch_group":12000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":12,"duration":{"second":101,"nanosecond":390000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":35000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":35000,"duration":{"second":103,"nanosecond":404000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":24000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":24000,"duration":{"second":103,"nanosecond":404000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":90000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":90000,"duration":{"second":103,"nanosecond":404000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":71,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":71000}}],"watch_group":71000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":71,"duration":{"second":101,"nanosecond":390000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":41,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":41000}}],"watch_group":41000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":41,"duration":{"second":103,"nanosecond":403000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":42000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":42000,"duration":{"second":103,"nanosecond":403000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":11,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":11000}}],"watch_group":11000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":11,"duration":{"second":103,"nanosecond":403000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":92000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":92000,"duration":{"second":103,"nanosecond":402000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":46000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":46000,"duration":{"second":103,"nanosecond":402000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":67000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":67000,"duration":{"second":103,"nanosecond":402000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":70,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":70000}}],"watch_group":70000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":70,"duration":{"second":101,"nanosecond":390000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":76000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":76000,"duration":{"second":103,"nanosecond":401000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":40,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":40000}}],"watch_group":40000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":40,"duration":{"second":101,"nanosecond":390000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":13000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":13000,"duration":{"second":103,"nanosecond":401000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":10,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":10000}}],"watch_group":10000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":10,"duration":{"second":101,"nanosecond":390000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":88000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":88000,"duration":{"second":103,"nanosecond":401000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":47000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":47000,"duration":{"second":103,"nanosecond":401000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":66000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":66000,"duration":{"second":103,"nanosecond":401000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":77,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":77000}}],"watch_group":77000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":77,"duration":{"second":103,"nanosecond":401000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":43,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":43000}}],"watch_group":43000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":43,"duration":{"second":103,"nanosecond":400000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":9,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":9000}}],"watch_group":9000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":9,"duration":{"second":103,"nanosecond":400000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":99000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":99000,"duration":{"second":103,"nanosecond":400000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":26000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":26000,"duration":{"second":103,"nanosecond":400000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":70000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":70000,"duration":{"second":103,"nanosecond":399000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":76,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":76000}}],"watch_group":76000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":76,"duration":{"second":102,"nanosecond":903000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":42,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":42000}}],"watch_group":42000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":42,"duration":{"second":102,"nanosecond":902000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":8,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":8000}}],"watch_group":8000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":8,"duration":{"second":101,"nanosecond":390000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":37000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":37000,"duration":{"second":102,"nanosecond":902000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":49000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":49000,"duration":{"second":102,"nanosecond":902000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":71000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":71000,"duration":{"second":102,"nanosecond":902000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":48000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":48000,"duration":{"second":102,"nanosecond":901000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":75,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":75000}}],"watch_group":75000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":75,"duration":{"second":102,"nanosecond":897000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":45,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":45000}}],"watch_group":45000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":45,"duration":{"second":102,"nanosecond":897000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":7,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":7000}}],"watch_group":7000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":7,"duration":{"second":102,"nanosecond":897000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":39000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":39000,"duration":{"second":102,"nanosecond":897000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":73000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":73000,"duration":{"second":102,"nanosecond":897000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":69000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":69000,"duration":{"second":102,"nanosecond":897000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":17000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":17000,"duration":{"second":102,"nanosecond":897000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":28000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":28000,"duration":{"second":102,"nanosecond":897000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":74,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":74000}}],"watch_group":74000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":74,"duration":{"second":102,"nanosecond":897000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":44,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":44000}}],"watch_group":44000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":44,"duration":{"second":102,"nanosecond":897000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":6,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":6000}}],"watch_group":6000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":6,"duration":{"second":101,"nanosecond":390000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":40000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":40000,"duration":{"second":102,"nanosecond":897000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":81,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":81000}}],"watch_group":81000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":81,"duration":{"second":102,"nanosecond":897000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":47,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":47000}}],"watch_group":47000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":47,"duration":{"second":102,"nanosecond":897000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":21,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":21000}}],"watch_group":21000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":21,"duration":{"second":101,"nanosecond":390000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":8000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":8000,"duration":{"second":102,"nanosecond":897000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":19000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":19000,"duration":{"second":102,"nanosecond":896000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":96000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":96000,"duration":{"second":102,"nanosecond":896000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":80,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":80000}}],"watch_group":80000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":80,"duration":{"second":102,"nanosecond":896000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":46,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":46000}}],"watch_group":46000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":46,"duration":{"second":102,"nanosecond":896000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":20,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":20000}}],"watch_group":20000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":20,"duration":{"second":102,"nanosecond":896000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":52000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":52000,"duration":{"second":102,"nanosecond":896000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":6000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":6000,"duration":{"second":102,"nanosecond":896000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":79,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":79000}}],"watch_group":79000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":79,"duration":{"second":102,"nanosecond":895000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":49,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":49000}}],"watch_group":49000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":49,"duration":{"second":102,"nanosecond":403000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":19,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":19000}}],"watch_group":19000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":19,"duration":{"second":102,"nanosecond":402000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":50000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":50000,"duration":{"second":102,"nanosecond":402000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":72000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":72000,"duration":{"second":102,"nanosecond":402000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":30000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":30000,"duration":{"second":102,"nanosecond":402000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":78,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":78000}}],"watch_group":78000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":78,"duration":{"second":102,"nanosecond":402000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":48,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":48000}}],"watch_group":48000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":48,"duration":{"second":102,"nanosecond":401000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":18,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":18000}}],"watch_group":18000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":18,"duration":{"second":102,"nanosecond":401000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":51000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":51000,"duration":{"second":102,"nanosecond":401000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":85,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":85000}}],"watch_group":85000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":85,"duration":{"second":102,"nanosecond":401000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":55000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":55000,"duration":{"second":102,"nanosecond":401000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":51,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":51000}}],"watch_group":51000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":51,"duration":{"second":101,"nanosecond":902000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":17,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":17000}}],"watch_group":17000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":17,"duration":{"second":101,"nanosecond":902000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":21000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":21000,"duration":{"second":101,"nanosecond":902000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":4000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":4000,"duration":{"second":101,"nanosecond":902000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":84,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":84000}}],"watch_group":84000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":84,"duration":{"second":101,"nanosecond":902000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":50,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":50000}}],"watch_group":50000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":50,"duration":{"second":101,"nanosecond":902000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":16,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":16000}}],"watch_group":16000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":16,"duration":{"second":101,"nanosecond":901000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":10000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":10000,"duration":{"second":101,"nanosecond":901000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":54000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":54000,"duration":{"second":101,"nanosecond":901000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":83,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":83000}}],"watch_group":83000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":83,"duration":{"second":101,"nanosecond":901000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":32000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":32000,"duration":{"second":101,"nanosecond":901000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":53,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":53000}}],"watch_group":53000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":53,"duration":{"second":101,"nanosecond":390000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":15,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":15000}}],"watch_group":15000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":15,"duration":{"second":101,"nanosecond":900000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":2000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":2000,"duration":{"second":101,"nanosecond":900000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":82,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":82000}}],"watch_group":82000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":82,"duration":{"second":101,"nanosecond":900000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":52,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":52000}}],"watch_group":52000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":52,"duration":{"second":101,"nanosecond":900000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":14,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":14000}}],"watch_group":14000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":14,"duration":{"second":101,"nanosecond":900000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":53000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":53000,"duration":{"second":101,"nanosecond":899000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":12000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":12000,"duration":{"second":101,"nanosecond":899000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":23000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":23000,"duration":{"second":101,"nanosecond":898000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":94000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":94000,"duration":{"second":101,"nanosecond":898000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}}],"flow-node-inventory:snapshot-gathering-status-end":{"succeeded":true,"end":"2026-04-08T01:00:10.798Z"}},{"id":"openflow:1","flow-node-inventory:port-number":54934,"flow-node-inventory:table":[{"id":62,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":28,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":2,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":224,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":181,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":147,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":106,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":61,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":27,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":1,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":223,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":182,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":148,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":105,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":60,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":30,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":0,"flow":[{"id":"71","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.71/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":71}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":880000000}},"flags":""},{"id":"11","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.11/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":11}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":879000000}},"flags":""},{"id":"70","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.70/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":70}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":880000000}},"flags":""},{"id":"10","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.10/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":10}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":879000000}},"flags":""},{"id":"60","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.60/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":60}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":880000000}},"flags":""},{"id":"13","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.13/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":13}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":879000000}},"flags":""},{"id":"12","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.12/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":12}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":879000000}},"flags":""},{"id":"80","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.80/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":80}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":880000000}},"flags":""},{"id":"93","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.93/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":93}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":879000000}},"flags":""},{"id":"92","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.92/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":92}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":879000000}},"flags":""},{"id":"82","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.82/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":82}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":880000000}},"flags":""},{"id":"91","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.91/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":91}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":879000000}},"flags":""},{"id":"81","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.81/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":81}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":880000000}},"flags":""},{"id":"90","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.90/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":90}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":879000000}},"flags":""},{"id":"9","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.9/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":9}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":879000000}},"flags":""},{"id":"84","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.84/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":84}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":879000000}},"flags":""},{"id":"97","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.97/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":97}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":879000000}},"flags":""},{"id":"66","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.66/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":66}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":880000000}},"flags":""},{"id":"79","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.79/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":79}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":880000000}},"flags":""},{"id":"54","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.54/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":54}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":878000000}},"flags":""},{"id":"45","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.45/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":45}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":878000000}},"flags":""},{"id":"83","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.83/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":83}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":879000000}},"flags":""},{"id":"96","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.96/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":96}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":879000000}},"flags":""},{"id":"65","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.65/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":65}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":880000000}},"flags":""},{"id":"78","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.78/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":78}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":880000000}},"flags":""},{"id":"20","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.20/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":20}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":879000000}},"flags":""},{"id":"55","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.55/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":55}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":878000000}},"flags":""},{"id":"46","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.46/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":46}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":878000000}},"flags":""},{"id":"7","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.7/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":7}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":879000000}},"flags":""},{"id":"86","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.86/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":86}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":880000000}},"flags":""},{"id":"95","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.95/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":95}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":879000000}},"flags":""},{"id":"68","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.68/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":68}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":880000000}},"flags":""},{"id":"77","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.77/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":77}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":880000000}},"flags":""},{"id":"30","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.30/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":30}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":879000000}},"flags":""},{"id":"56","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.56/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":56}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":878000000}},"flags":""},{"id":"43","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.43/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":43}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":878000000}},"flags":""},{"id":"8","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.8/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":8}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":879000000}},"flags":""},{"id":"85","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.85/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":85}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":880000000}},"flags":""},{"id":"94","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.94/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":94}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":879000000}},"flags":""},{"id":"67","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.67/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":67}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":880000000}},"flags":""},{"id":"76","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.76/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":76}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":880000000}},"flags":""},{"id":"31","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.31/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":31}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":879000000}},"flags":""},{"id":"57","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.57/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":57}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":878000000}},"flags":""},{"id":"44","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.44/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":44}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":878000000}},"flags":""},{"id":"5","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.5/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":5}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":879000000}},"flags":""},{"id":"88","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.88/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":88}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":880000000}},"flags":""},{"id":"62","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.62/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":62}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":880000000}},"flags":""},{"id":"75","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.75/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":75}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":880000000}},"flags":""},{"id":"32","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.32/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":32}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":879000000}},"flags":""},{"id":"23","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.23/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":23}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":879000000}},"flags":""},{"id":"50","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.50/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":50}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":878000000}},"flags":""},{"id":"41","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.41/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":41}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":878000000}},"flags":""},{"id":"#UF$TABLE*0-1","table_id":0,"priority":0,"cookie_mask":"0","idle-timeout":0,"cookie":"10","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"output-action":{"max-length":65535,"output-node-connector":"CONTROLLER"}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"28","byte-count":"2260","duration":{"second":100,"nanosecond":769000000}},"flags":"SEND_FLOW_REM"},{"id":"6","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.6/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":6}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":879000000}},"flags":""},{"id":"100","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.100/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":100}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":880000000}},"flags":""},{"id":"87","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.87/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":87}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":880000000}},"flags":""},{"id":"61","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.61/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":61}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":880000000}},"flags":""},{"id":"74","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.74/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":74}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":880000000}},"flags":""},{"id":"33","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.33/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":33}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":879000000}},"flags":""},{"id":"24","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.24/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":24}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":879000000}},"flags":""},{"id":"51","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.51/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":51}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":878000000}},"flags":""},{"id":"42","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.42/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":42}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":878000000}},"flags":""},{"id":"3","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.3/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":3}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":879000000}},"flags":""},{"id":"99","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.99/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":99}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":879000000}},"flags":""},{"id":"64","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.64/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":64}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":880000000}},"flags":""},{"id":"73","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.73/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":73}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":880000000}},"flags":""},{"id":"34","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.34/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":34}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":879000000}},"flags":""},{"id":"21","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.21/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":21}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":879000000}},"flags":""},{"id":"52","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.52/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":52}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":878000000}},"flags":""},{"id":"4","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.4/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":4}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":879000000}},"flags":""},{"id":"89","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.89/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":89}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":880000000}},"flags":""},{"id":"98","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.98/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":98}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":879000000}},"flags":""},{"id":"63","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.63/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":63}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":880000000}},"flags":""},{"id":"72","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.72/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":72}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":880000000}},"flags":""},{"id":"35","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.35/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":35}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":879000000}},"flags":""},{"id":"22","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.22/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":22}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":879000000}},"flags":""},{"id":"53","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.53/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":53}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":878000000}},"flags":""},{"id":"40","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.40/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":40}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":878000000}},"flags":""},{"id":"37","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.37/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":37}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":879000000}},"flags":""},{"id":"28","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.28/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":28}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":879000000}},"flags":""},{"id":"36","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.36/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":36}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":879000000}},"flags":""},{"id":"27","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.27/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":27}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":879000000}},"flags":""},{"id":"39","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.39/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":39}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":879000000}},"flags":""},{"id":"26","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.26/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":26}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":879000000}},"flags":""},{"id":"38","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.38/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":38}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":879000000}},"flags":""},{"id":"25","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.25/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":25}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":879000000}},"flags":""},{"id":"69","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.69/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":69}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":880000000}},"flags":""},{"id":"59","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.59/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":59}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":878000000}},"flags":""},{"id":"58","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.58/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":58}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":878000000}},"flags":""},{"id":"49","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.49/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":49}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":879000000}},"flags":""},{"id":"48","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.48/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":48}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":878000000}},"flags":""},{"id":"29","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.29/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":29}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":879000000}},"flags":""},{"id":"47","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.47/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":47}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":878000000}},"flags":""},{"id":"18","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.18/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":18}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":879000000}},"flags":""},{"id":"19","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.19/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":19}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":879000000}},"flags":""},{"id":"14","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.14/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":14}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":879000000}},"flags":""},{"id":"15","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.15/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":15}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":879000000}},"flags":""},{"id":"1","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.1/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":1}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":8,"nanosecond":926000000}},"flags":""},{"id":"16","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.16/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":16}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":879000000}},"flags":""},{"id":"2","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.2/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":2}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":879000000}},"flags":""},{"id":"17","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.17/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":17}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":879000000}},"flags":""}],"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"45","active-flows":101,"packets-matched":"38"}},{"id":226,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":179,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":149,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":104,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":59,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":29,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":225,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":180,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":150,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":103,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":66,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":32,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":220,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":185,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":151,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":102,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":65,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":31,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":253,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":219,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":186,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":152,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":101,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":64,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":34,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":252,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":222,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":183,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":153,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":100,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":63,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":33,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":251,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":221,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":184,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":154,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":99,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":54,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":20,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":250,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":216,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":189,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":155,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":129,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":114,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":53,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":19,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":249,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":215,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":190,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":156,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":130,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":113,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":52,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":22,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":248,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":218,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":187,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":157,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":112,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":51,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":21,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":247,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":217,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":188,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":158,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":128,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":111,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":58,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":24,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":246,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":212,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":193,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":159,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":110,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":57,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":23,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":245,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":211,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":194,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":160,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":109,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":56,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":26,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":244,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":214,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":191,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":161,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":108,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":55,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":25,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":243,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":213,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":192,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":162,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":107,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":77,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":43,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":17,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":239,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":198,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":164,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":138,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":119,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":89,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":78,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":44,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":18,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":240,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":197,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":163,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":137,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":120,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":90,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":75,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":45,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":15,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":241,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":196,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":166,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":136,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":121,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":87,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":76,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":46,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":16,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":242,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":195,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":165,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":135,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":122,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":88,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":81,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":47,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":13,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":235,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":202,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":168,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":134,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":115,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":85,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":82,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":48,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":14,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":236,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":201,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":167,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":133,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":116,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":86,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":79,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":49,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":11,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":237,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":200,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":170,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":132,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":117,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":83,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":80,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":50,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":12,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":238,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":199,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":169,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":131,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":118,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":84,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":69,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":35,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":9,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":231,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":206,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":172,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":146,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":127,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":97,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":70,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":36,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":10,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":232,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":205,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":171,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":145,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":98,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":67,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":37,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":7,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":233,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":204,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":174,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":144,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":95,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":68,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":38,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":8,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":234,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":203,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":173,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":143,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":96,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":73,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":39,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":5,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":227,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":210,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":176,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":142,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":123,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":93,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":74,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":40,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":6,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":228,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":209,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":175,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":141,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":124,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":94,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":71,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":41,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":3,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":229,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":208,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":178,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":140,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":125,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":91,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":72,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":42,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":4,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":230,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":207,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":177,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":139,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":126,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":92,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}}],"opendaylight-group-statistics:group-features":{"max-groups":[4294967040],"group-types-supported":["opendaylight-group-types:group-all","opendaylight-group-types:group-ff","opendaylight-group-types:group-select","opendaylight-group-types:group-indirect"],"group-capabilities-supported":["opendaylight-group-types:chaining","opendaylight-group-types:select-weight","opendaylight-group-types:select-liveness"],"actions":[67076097]},"flow-node-inventory:manufacturer":"Nicira, Inc.","flow-node-inventory:description":"s1","flow-node-inventory:hardware":"Open vSwitch","flow-node-inventory:switch-features":{"max_tables":254,"capabilities":["flow-node-inventory:flow-feature-capability-table-stats","flow-node-inventory:flow-feature-capability-group-stats","flow-node-inventory:flow-feature-capability-queue-stats","flow-node-inventory:flow-feature-capability-flow-stats","flow-node-inventory:flow-feature-capability-port-stats"],"max_buffers":0},"flow-node-inventory:snapshot-gathering-status-start":{"begin":"2026-04-08T01:00:10.785Z"},"flow-node-inventory:software":"2.17.11","node-connector":[{"id":"openflow:1:1","flow-node-inventory:port-number":1,"flow-node-inventory:hardware-address":"92:f4:e8:ea:c6:ad","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s1-eth1","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"39","received":"10"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":106,"nanosecond":113000000},"bytes":{"transmitted":"3285","received":"796"},"receive-crc-error":"0"}},{"id":"openflow:1:LOCAL","flow-node-inventory:port-number":4294967294,"flow-node-inventory:hardware-address":"e6:45:d0:5b:c7:49","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s1","flow-node-inventory:current-feature":"","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":0,"flow-node-inventory:state":{"live":false,"blocked":false,"link-down":true},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"PORT-DOWN","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"0","received":"0"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":106,"nanosecond":109000000},"bytes":{"transmitted":"0","received":"0"},"receive-crc-error":"0"}},{"id":"openflow:1:2","flow-node-inventory:port-number":2,"flow-node-inventory:hardware-address":"42:46:a8:4b:8b:86","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s1-eth2","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"33","received":"37"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":106,"nanosecond":113000000},"bytes":{"transmitted":"2757","received":"3109"},"receive-crc-error":"0"}}],"flow-node-inventory:ip-address":"10.30.170.192","flow-node-inventory:serial-number":"None","flow-node-inventory:group":[{"group-id":56,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":56000}}],"watch_group":56000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":56,"duration":{"second":102,"nanosecond":57000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":22,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":22000}}],"watch_group":22000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":22,"duration":{"second":102,"nanosecond":57000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":99,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":99000}}],"watch_group":99000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":99,"duration":{"second":102,"nanosecond":57000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":34000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":34000,"duration":{"second":104,"nanosecond":750000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":89000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":89000,"duration":{"second":104,"nanosecond":750000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":60000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":60000,"duration":{"second":104,"nanosecond":750000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":91000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":91000,"duration":{"second":104,"nanosecond":750000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":57,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":57000}}],"watch_group":57000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":57,"duration":{"second":102,"nanosecond":57000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":23,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":23000}}],"watch_group":23000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":23,"duration":{"second":101,"nanosecond":557000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":14000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":14000,"duration":{"second":104,"nanosecond":750000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":98,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":98000}}],"watch_group":98000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":98,"duration":{"second":101,"nanosecond":557000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":56000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":56000,"duration":{"second":104,"nanosecond":750000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":85000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":85000,"duration":{"second":104,"nanosecond":750000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":54,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":54000}}],"watch_group":54000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":54,"duration":{"second":101,"nanosecond":557000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":24,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":24000}}],"watch_group":24000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":24,"duration":{"second":101,"nanosecond":557000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":36000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":36000,"duration":{"second":104,"nanosecond":750000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":87000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":87000,"duration":{"second":104,"nanosecond":750000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":59000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":59000,"duration":{"second":104,"nanosecond":750000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":25000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":25000,"duration":{"second":104,"nanosecond":750000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":43000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":43000,"duration":{"second":104,"nanosecond":750000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":55,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":55000}}],"watch_group":55000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":55,"duration":{"second":101,"nanosecond":557000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":25,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":25000}}],"watch_group":25000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":25,"duration":{"second":104,"nanosecond":564000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":100,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":100000}}],"watch_group":100000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":100,"duration":{"second":101,"nanosecond":557000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":58000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":58000,"duration":{"second":104,"nanosecond":561000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":86000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":86000,"duration":{"second":104,"nanosecond":561000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":60,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":60000}}],"watch_group":60000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":60,"duration":{"second":104,"nanosecond":561000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":26,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":26000}}],"watch_group":26000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":26,"duration":{"second":101,"nanosecond":557000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":41000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":41000,"duration":{"second":104,"nanosecond":561000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":95,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":95000}}],"watch_group":95000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":95,"duration":{"second":101,"nanosecond":557000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":82000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":82000,"duration":{"second":104,"nanosecond":561000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":61,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":61000}}],"watch_group":61000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":61,"duration":{"second":101,"nanosecond":557000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":27,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":27000}}],"watch_group":27000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":27,"duration":{"second":101,"nanosecond":557000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":94,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":94000}}],"watch_group":94000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":94,"duration":{"second":101,"nanosecond":557000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":98000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":98000,"duration":{"second":104,"nanosecond":561000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":27000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":27000,"duration":{"second":104,"nanosecond":561000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":57000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":57000,"duration":{"second":104,"nanosecond":561000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":16000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":16000,"duration":{"second":104,"nanosecond":561000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":83000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":83000,"duration":{"second":104,"nanosecond":561000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":58,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":58000}}],"watch_group":58000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":58,"duration":{"second":104,"nanosecond":58000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":28,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":28000}}],"watch_group":28000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":28,"duration":{"second":101,"nanosecond":557000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":97,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":97000}}],"watch_group":97000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":97,"duration":{"second":101,"nanosecond":557000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":100000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":100000,"duration":{"second":104,"nanosecond":58000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":59,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":59000}}],"watch_group":59000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":59,"duration":{"second":104,"nanosecond":58000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":38000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":38000,"duration":{"second":104,"nanosecond":58000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":29,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":29000}}],"watch_group":29000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":29,"duration":{"second":101,"nanosecond":557000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":96,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":96000}}],"watch_group":96000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":96,"duration":{"second":101,"nanosecond":557000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":84000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":84000,"duration":{"second":104,"nanosecond":58000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":64,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":64000}}],"watch_group":64000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":64,"duration":{"second":101,"nanosecond":557000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":30,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":30000}}],"watch_group":30000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":30,"duration":{"second":101,"nanosecond":557000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":4,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":4000}}],"watch_group":4000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":4,"duration":{"second":101,"nanosecond":557000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":91,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":91000}}],"watch_group":91000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":91,"duration":{"second":104,"nanosecond":58000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":7000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":7000,"duration":{"second":104,"nanosecond":58000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":29000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":29000,"duration":{"second":104,"nanosecond":58000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":65,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":65000}}],"watch_group":65000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":65,"duration":{"second":101,"nanosecond":557000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":31,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":31000}}],"watch_group":31000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":31,"duration":{"second":101,"nanosecond":557000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":5,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":5000}}],"watch_group":5000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":5,"duration":{"second":101,"nanosecond":557000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":90,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":90000}}],"watch_group":90000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":90,"duration":{"second":101,"nanosecond":557000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":18000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":18000,"duration":{"second":104,"nanosecond":58000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":62,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":62000}}],"watch_group":62000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":62,"duration":{"second":101,"nanosecond":557000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":65000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":65000,"duration":{"second":104,"nanosecond":58000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":32,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":32000}}],"watch_group":32000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":32,"duration":{"second":101,"nanosecond":557000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":2,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":2000}}],"watch_group":2000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":2,"duration":{"second":101,"nanosecond":557000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":93,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":93000}}],"watch_group":93000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":93,"duration":{"second":101,"nanosecond":557000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":64000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":64000,"duration":{"second":104,"nanosecond":58000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":63,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":63000}}],"watch_group":63000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":63,"duration":{"second":101,"nanosecond":557000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":33,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":33000}}],"watch_group":33000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":33,"duration":{"second":101,"nanosecond":557000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":3,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":3000}}],"watch_group":3000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":3,"duration":{"second":101,"nanosecond":552000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":80000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":80000,"duration":{"second":104,"nanosecond":58000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":9000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":9000,"duration":{"second":104,"nanosecond":58000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":92,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":92000}}],"watch_group":92000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":92,"duration":{"second":101,"nanosecond":552000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":5000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":5000,"duration":{"second":104,"nanosecond":58000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":20000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":20000,"duration":{"second":104,"nanosecond":58000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":81000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":81000,"duration":{"second":104,"nanosecond":58000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":97000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":97000,"duration":{"second":104,"nanosecond":58000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":31000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":31000,"duration":{"second":104,"nanosecond":58000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":68,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":68000}}],"watch_group":68000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":68,"duration":{"second":101,"nanosecond":552000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":11000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":11000,"duration":{"second":104,"nanosecond":58000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":34,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":34000}}],"watch_group":34000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":34,"duration":{"second":104,"nanosecond":58000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":78000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":78000,"duration":{"second":104,"nanosecond":58000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":87,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":87000}}],"watch_group":87000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":87,"duration":{"second":104,"nanosecond":58000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":93000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":93000,"duration":{"second":104,"nanosecond":58000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":63000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":63000,"duration":{"second":104,"nanosecond":58000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":69,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":69000}}],"watch_group":69000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":69,"duration":{"second":101,"nanosecond":552000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":35,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":35000}}],"watch_group":35000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":35,"duration":{"second":101,"nanosecond":552000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":1,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":1000}}],"watch_group":1000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":1,"duration":{"second":9,"nanosecond":143000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":33000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":33000,"duration":{"second":104,"nanosecond":58000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":79000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":79000,"duration":{"second":104,"nanosecond":56000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":86,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":86000}}],"watch_group":86000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":86,"duration":{"second":104,"nanosecond":56000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":62000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":62000,"duration":{"second":104,"nanosecond":56000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":66,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":66000}}],"watch_group":66000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":66,"duration":{"second":101,"nanosecond":552000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":77000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":77000,"duration":{"second":104,"nanosecond":56000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":36,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":36000}}],"watch_group":36000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":36,"duration":{"second":104,"nanosecond":56000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":89,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":89000}}],"watch_group":89000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":89,"duration":{"second":104,"nanosecond":55000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":22000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":22000,"duration":{"second":104,"nanosecond":55000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":95000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":95000,"duration":{"second":104,"nanosecond":55000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":67,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":67000}}],"watch_group":67000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":67,"duration":{"second":101,"nanosecond":552000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":37,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":37000}}],"watch_group":37000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":37,"duration":{"second":101,"nanosecond":552000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":1000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":1000,"duration":{"second":9,"nanosecond":356000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":88,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":88000}}],"watch_group":88000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":88,"duration":{"second":101,"nanosecond":552000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":61000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":61000,"duration":{"second":104,"nanosecond":55000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":3000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":3000,"duration":{"second":104,"nanosecond":54000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":73,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":73000}}],"watch_group":73000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":73,"duration":{"second":101,"nanosecond":552000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":39,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":39000}}],"watch_group":39000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":39,"duration":{"second":101,"nanosecond":552000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":13,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":13000}}],"watch_group":13000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":13,"duration":{"second":101,"nanosecond":552000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":74000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":74000,"duration":{"second":104,"nanosecond":54000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":15000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":15000,"duration":{"second":104,"nanosecond":54000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":44000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":44000,"duration":{"second":104,"nanosecond":54000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":45000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":45000,"duration":{"second":104,"nanosecond":54000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":68000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":68000,"duration":{"second":104,"nanosecond":54000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":72,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":72000}}],"watch_group":72000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":72,"duration":{"second":101,"nanosecond":552000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":38,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":38000}}],"watch_group":38000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":38,"duration":{"second":103,"nanosecond":566000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":75000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":75000,"duration":{"second":103,"nanosecond":566000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":12,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":12000}}],"watch_group":12000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":12,"duration":{"second":101,"nanosecond":552000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":35000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":35000,"duration":{"second":103,"nanosecond":566000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":24000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":24000,"duration":{"second":103,"nanosecond":565000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":90000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":90000,"duration":{"second":103,"nanosecond":565000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":71,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":71000}}],"watch_group":71000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":71,"duration":{"second":101,"nanosecond":552000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":41,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":41000}}],"watch_group":41000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":41,"duration":{"second":103,"nanosecond":565000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":42000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":42000,"duration":{"second":103,"nanosecond":565000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":11,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":11000}}],"watch_group":11000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":11,"duration":{"second":103,"nanosecond":564000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":92000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":92000,"duration":{"second":103,"nanosecond":564000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":46000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":46000,"duration":{"second":103,"nanosecond":564000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":67000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":67000,"duration":{"second":103,"nanosecond":564000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":70,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":70000}}],"watch_group":70000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":70,"duration":{"second":101,"nanosecond":552000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":76000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":76000,"duration":{"second":103,"nanosecond":563000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":40,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":40000}}],"watch_group":40000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":40,"duration":{"second":101,"nanosecond":552000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":13000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":13000,"duration":{"second":103,"nanosecond":560000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":10,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":10000}}],"watch_group":10000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":10,"duration":{"second":101,"nanosecond":552000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":88000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":88000,"duration":{"second":103,"nanosecond":560000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":47000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":47000,"duration":{"second":103,"nanosecond":560000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":66000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":66000,"duration":{"second":103,"nanosecond":559000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":77,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":77000}}],"watch_group":77000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":77,"duration":{"second":103,"nanosecond":559000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":43,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":43000}}],"watch_group":43000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":43,"duration":{"second":103,"nanosecond":559000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":9,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":9000}}],"watch_group":9000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":9,"duration":{"second":103,"nanosecond":559000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":99000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":99000,"duration":{"second":103,"nanosecond":559000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":26000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":26000,"duration":{"second":103,"nanosecond":559000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":70000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":70000,"duration":{"second":103,"nanosecond":559000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":76,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":76000}}],"watch_group":76000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":76,"duration":{"second":103,"nanosecond":65000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":42,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":42000}}],"watch_group":42000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":42,"duration":{"second":103,"nanosecond":63000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":8,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":8000}}],"watch_group":8000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":8,"duration":{"second":101,"nanosecond":552000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":37000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":37000,"duration":{"second":103,"nanosecond":63000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":49000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":49000,"duration":{"second":103,"nanosecond":63000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":71000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":71000,"duration":{"second":103,"nanosecond":63000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":48000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":48000,"duration":{"second":103,"nanosecond":63000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":75,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":75000}}],"watch_group":75000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":75,"duration":{"second":103,"nanosecond":63000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":45,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":45000}}],"watch_group":45000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":45,"duration":{"second":103,"nanosecond":60000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":7,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":7000}}],"watch_group":7000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":7,"duration":{"second":103,"nanosecond":60000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":39000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":39000,"duration":{"second":103,"nanosecond":60000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":73000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":73000,"duration":{"second":103,"nanosecond":59000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":69000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":69000,"duration":{"second":103,"nanosecond":59000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":17000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":17000,"duration":{"second":103,"nanosecond":59000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":28000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":28000,"duration":{"second":103,"nanosecond":59000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":74,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":74000}}],"watch_group":74000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":74,"duration":{"second":103,"nanosecond":59000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":44,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":44000}}],"watch_group":44000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":44,"duration":{"second":103,"nanosecond":59000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":6,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":6000}}],"watch_group":6000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":6,"duration":{"second":101,"nanosecond":552000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":40000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":40000,"duration":{"second":103,"nanosecond":59000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":81,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":81000}}],"watch_group":81000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":81,"duration":{"second":103,"nanosecond":59000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":47,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":47000}}],"watch_group":47000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":47,"duration":{"second":103,"nanosecond":59000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":21,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":21000}}],"watch_group":21000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":21,"duration":{"second":101,"nanosecond":552000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":8000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":8000,"duration":{"second":103,"nanosecond":59000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":19000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":19000,"duration":{"second":103,"nanosecond":59000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":96000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":96000,"duration":{"second":103,"nanosecond":59000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":80,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":80000}}],"watch_group":80000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":80,"duration":{"second":103,"nanosecond":57000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":46,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":46000}}],"watch_group":46000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":46,"duration":{"second":103,"nanosecond":57000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":20,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":20000}}],"watch_group":20000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":20,"duration":{"second":103,"nanosecond":57000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":52000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":52000,"duration":{"second":103,"nanosecond":57000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":6000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":6000,"duration":{"second":103,"nanosecond":57000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":79,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":79000}}],"watch_group":79000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":79,"duration":{"second":103,"nanosecond":57000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":49,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":49000}}],"watch_group":49000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":49,"duration":{"second":102,"nanosecond":564000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":19,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":19000}}],"watch_group":19000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":19,"duration":{"second":102,"nanosecond":564000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":50000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":50000,"duration":{"second":102,"nanosecond":564000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":72000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":72000,"duration":{"second":102,"nanosecond":564000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":30000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":30000,"duration":{"second":102,"nanosecond":563000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":78,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":78000}}],"watch_group":78000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":78,"duration":{"second":102,"nanosecond":563000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":48,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":48000}}],"watch_group":48000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":48,"duration":{"second":102,"nanosecond":562000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":18,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":18000}}],"watch_group":18000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":18,"duration":{"second":102,"nanosecond":562000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":51000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":51000,"duration":{"second":102,"nanosecond":562000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":85,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":85000}}],"watch_group":85000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":85,"duration":{"second":102,"nanosecond":562000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":55000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":55000,"duration":{"second":102,"nanosecond":561000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":51,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":51000}}],"watch_group":51000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":51,"duration":{"second":102,"nanosecond":57000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":17,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":17000}}],"watch_group":17000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":17,"duration":{"second":102,"nanosecond":57000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":21000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":21000,"duration":{"second":102,"nanosecond":57000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":4000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":4000,"duration":{"second":102,"nanosecond":57000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":84,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":84000}}],"watch_group":84000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":84,"duration":{"second":102,"nanosecond":57000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":50,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":50000}}],"watch_group":50000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":50,"duration":{"second":102,"nanosecond":57000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":16,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":16000}}],"watch_group":16000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":16,"duration":{"second":102,"nanosecond":57000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":10000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":10000,"duration":{"second":102,"nanosecond":57000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":54000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":54000,"duration":{"second":102,"nanosecond":57000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":83,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":83000}}],"watch_group":83000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":83,"duration":{"second":102,"nanosecond":57000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":32000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":32000,"duration":{"second":102,"nanosecond":57000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":53,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":53000}}],"watch_group":53000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":53,"duration":{"second":101,"nanosecond":552000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":15,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":15000}}],"watch_group":15000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":15,"duration":{"second":102,"nanosecond":57000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":2000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":2000,"duration":{"second":102,"nanosecond":57000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":82,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":82000}}],"watch_group":82000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":82,"duration":{"second":102,"nanosecond":57000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":52,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":52000}}],"watch_group":52000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":52,"duration":{"second":102,"nanosecond":57000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":14,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":14000}}],"watch_group":14000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":14,"duration":{"second":102,"nanosecond":57000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":53000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":53000,"duration":{"second":102,"nanosecond":57000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":12000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":12000,"duration":{"second":102,"nanosecond":57000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":23000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":23000,"duration":{"second":102,"nanosecond":57000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":94000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":94000,"duration":{"second":102,"nanosecond":57000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}}],"flow-node-inventory:snapshot-gathering-status-end":{"succeeded":true,"end":"2026-04-08T01:00:10.823Z"}},{"id":"openflow:2","flow-node-inventory:port-number":54944,"flow-node-inventory:table":[{"id":62,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":28,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":2,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":224,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":181,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":147,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":106,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":61,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":27,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":1,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":223,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":182,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":148,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":105,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":60,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":30,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":0,"flow":[{"id":"71","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.71/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":71}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":920000000}},"flags":""},{"id":"11","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.11/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":11}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":919000000}},"flags":""},{"id":"70","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.70/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":70}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":920000000}},"flags":""},{"id":"10","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.10/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":10}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":919000000}},"flags":""},{"id":"60","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.60/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":60}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":920000000}},"flags":""},{"id":"13","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.13/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":13}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":919000000}},"flags":""},{"id":"12","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.12/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":12}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":919000000}},"flags":""},{"id":"80","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.80/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":80}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":920000000}},"flags":""},{"id":"93","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.93/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":93}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":919000000}},"flags":""},{"id":"92","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.92/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":92}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":919000000}},"flags":""},{"id":"82","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.82/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":82}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":920000000}},"flags":""},{"id":"91","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.91/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":91}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":919000000}},"flags":""},{"id":"81","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.81/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":81}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":920000000}},"flags":""},{"id":"90","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.90/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":90}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":919000000}},"flags":""},{"id":"9","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.9/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":9}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":920000000}},"flags":""},{"id":"84","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.84/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":84}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":920000000}},"flags":""},{"id":"97","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.97/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":97}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":919000000}},"flags":""},{"id":"66","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.66/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":66}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":920000000}},"flags":""},{"id":"79","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.79/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":79}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":920000000}},"flags":""},{"id":"54","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.54/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":54}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":920000000}},"flags":""},{"id":"45","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.45/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":45}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":920000000}},"flags":""},{"id":"83","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.83/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":83}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":920000000}},"flags":""},{"id":"96","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.96/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":96}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":919000000}},"flags":""},{"id":"65","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.65/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":65}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":920000000}},"flags":""},{"id":"78","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.78/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":78}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":920000000}},"flags":""},{"id":"20","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.20/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":20}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":920000000}},"flags":""},{"id":"55","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.55/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":55}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":920000000}},"flags":""},{"id":"46","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.46/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":46}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":920000000}},"flags":""},{"id":"7","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.7/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":7}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":920000000}},"flags":""},{"id":"86","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.86/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":86}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":920000000}},"flags":""},{"id":"95","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.95/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":95}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":919000000}},"flags":""},{"id":"68","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.68/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":68}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":920000000}},"flags":""},{"id":"77","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.77/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":77}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":920000000}},"flags":""},{"id":"30","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.30/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":30}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":920000000}},"flags":""},{"id":"56","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.56/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":56}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":920000000}},"flags":""},{"id":"43","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.43/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":43}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":920000000}},"flags":""},{"id":"8","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.8/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":8}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":920000000}},"flags":""},{"id":"85","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.85/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":85}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":920000000}},"flags":""},{"id":"94","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.94/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":94}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":919000000}},"flags":""},{"id":"67","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.67/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":67}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":920000000}},"flags":""},{"id":"76","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.76/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":76}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":920000000}},"flags":""},{"id":"31","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.31/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":31}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":920000000}},"flags":""},{"id":"57","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.57/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":57}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":920000000}},"flags":""},{"id":"44","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.44/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":44}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":920000000}},"flags":""},{"id":"5","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.5/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":5}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":920000000}},"flags":""},{"id":"88","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.88/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":88}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":920000000}},"flags":""},{"id":"62","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.62/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":62}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":920000000}},"flags":""},{"id":"75","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.75/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":75}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":920000000}},"flags":""},{"id":"32","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.32/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":32}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":920000000}},"flags":""},{"id":"23","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.23/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":23}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":920000000}},"flags":""},{"id":"50","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.50/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":50}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":919000000}},"flags":""},{"id":"41","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.41/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":41}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":920000000}},"flags":""},{"id":"6","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.6/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":6}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":920000000}},"flags":""},{"id":"100","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.100/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":100}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":920000000}},"flags":""},{"id":"87","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.87/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":87}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":920000000}},"flags":""},{"id":"61","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.61/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":61}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":920000000}},"flags":""},{"id":"74","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.74/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":74}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":920000000}},"flags":""},{"id":"33","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.33/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":33}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":920000000}},"flags":""},{"id":"24","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.24/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":24}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":920000000}},"flags":""},{"id":"51","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.51/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":51}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":919000000}},"flags":""},{"id":"42","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.42/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":42}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":920000000}},"flags":""},{"id":"3","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.3/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":3}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":920000000}},"flags":""},{"id":"99","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.99/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":99}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":919000000}},"flags":""},{"id":"64","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.64/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":64}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":920000000}},"flags":""},{"id":"73","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.73/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":73}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":920000000}},"flags":""},{"id":"34","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.34/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":34}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":920000000}},"flags":""},{"id":"21","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.21/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":21}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":920000000}},"flags":""},{"id":"52","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.52/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":52}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":919000000}},"flags":""},{"id":"4","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.4/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":4}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":920000000}},"flags":""},{"id":"89","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.89/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":89}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":920000000}},"flags":""},{"id":"98","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.98/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":98}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":919000000}},"flags":""},{"id":"63","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.63/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":63}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":920000000}},"flags":""},{"id":"72","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.72/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":72}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":920000000}},"flags":""},{"id":"35","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.35/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":35}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":920000000}},"flags":""},{"id":"22","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.22/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":22}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":920000000}},"flags":""},{"id":"53","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.53/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":53}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":920000000}},"flags":""},{"id":"40","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.40/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":40}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":920000000}},"flags":""},{"id":"#UF$TABLE*0-2","table_id":0,"priority":0,"cookie_mask":"0","idle-timeout":0,"cookie":"10","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"output-action":{"max-length":65535,"output-node-connector":"CONTROLLER"}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"51","byte-count":"4170","duration":{"second":100,"nanosecond":799000000}},"flags":"SEND_FLOW_REM"},{"id":"37","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.37/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":37}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":920000000}},"flags":""},{"id":"28","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.28/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":28}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":920000000}},"flags":""},{"id":"36","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.36/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":36}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":920000000}},"flags":""},{"id":"27","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.27/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":27}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":920000000}},"flags":""},{"id":"39","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.39/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":39}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":920000000}},"flags":""},{"id":"26","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.26/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":26}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":920000000}},"flags":""},{"id":"38","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.38/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":38}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":920000000}},"flags":""},{"id":"25","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.25/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":25}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":920000000}},"flags":""},{"id":"69","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.69/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":69}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":920000000}},"flags":""},{"id":"59","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.59/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":59}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":920000000}},"flags":""},{"id":"58","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.58/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":58}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":920000000}},"flags":""},{"id":"49","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.49/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":49}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":920000000}},"flags":""},{"id":"48","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.48/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":48}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":920000000}},"flags":""},{"id":"29","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.29/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":29}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":919000000}},"flags":""},{"id":"47","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.47/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":47}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":920000000}},"flags":""},{"id":"18","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.18/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":18}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":920000000}},"flags":""},{"id":"19","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.19/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":19}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":920000000}},"flags":""},{"id":"14","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.14/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":14}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":920000000}},"flags":""},{"id":"15","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.15/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":15}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":920000000}},"flags":""},{"id":"1","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.1/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":1}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":8,"nanosecond":313000000}},"flags":""},{"id":"16","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.16/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":16}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":920000000}},"flags":""},{"id":"2","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.2/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":2}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":920000000}},"flags":""},{"id":"17","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.17/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":17}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":920000000}},"flags":""}],"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"73","active-flows":101,"packets-matched":"61"}},{"id":226,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":179,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":149,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":104,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":59,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":29,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":225,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":180,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":150,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":103,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":66,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":32,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":220,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":185,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":151,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":102,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":65,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":31,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":253,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":219,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":186,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":152,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":101,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":64,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":34,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":252,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":222,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":183,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":153,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":100,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":63,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":33,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":251,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":221,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":184,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":154,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":99,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":54,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":20,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":250,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":216,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":189,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":155,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":129,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":114,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":53,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":19,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":249,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":215,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":190,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":156,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":130,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":113,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":52,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":22,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":248,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":218,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":187,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":157,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":112,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":51,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":21,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":247,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":217,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":188,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":158,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":128,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":111,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":58,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":24,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":246,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":212,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":193,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":159,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":110,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":57,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":23,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":245,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":211,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":194,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":160,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":109,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":56,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":26,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":244,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":214,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":191,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":161,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":108,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":55,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":25,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":243,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":213,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":192,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":162,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":107,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":77,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":43,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":17,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":239,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":198,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":164,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":138,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":119,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":89,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":78,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":44,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":18,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":240,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":197,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":163,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":137,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":120,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":90,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":75,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":45,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":15,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":241,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":196,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":166,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":136,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":121,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":87,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":76,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":46,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":16,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":242,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":195,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":165,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":135,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":122,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":88,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":81,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":47,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":13,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":235,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":202,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":168,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":134,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":115,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":85,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":82,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":48,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":14,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":236,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":201,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":167,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":133,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":116,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":86,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":79,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":49,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":11,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":237,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":200,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":170,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":132,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":117,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":83,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":80,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":50,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":12,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":238,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":199,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":169,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":131,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":118,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":84,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":69,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":35,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":9,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":231,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":206,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":172,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":146,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":127,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":97,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":70,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":36,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":10,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":232,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":205,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":171,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":145,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":98,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":67,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":37,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":7,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":233,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":204,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":174,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":144,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":95,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":68,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":38,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":8,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":234,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":203,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":173,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":143,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":96,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":73,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":39,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":5,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":227,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":210,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":176,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":142,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":123,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":93,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":74,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":40,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":6,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":228,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":209,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":175,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":141,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":124,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":94,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":71,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":41,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":3,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":229,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":208,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":178,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":140,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":125,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":91,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":72,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":42,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":4,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":230,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":207,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":177,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":139,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":126,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":92,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}}],"opendaylight-group-statistics:group-features":{"max-groups":[4294967040],"group-types-supported":["opendaylight-group-types:group-all","opendaylight-group-types:group-ff","opendaylight-group-types:group-select","opendaylight-group-types:group-indirect"],"group-capabilities-supported":["opendaylight-group-types:chaining","opendaylight-group-types:select-weight","opendaylight-group-types:select-liveness"],"actions":[67076097]},"flow-node-inventory:manufacturer":"Nicira, Inc.","flow-node-inventory:description":"s2","flow-node-inventory:hardware":"Open vSwitch","flow-node-inventory:switch-features":{"max_tables":254,"capabilities":["flow-node-inventory:flow-feature-capability-table-stats","flow-node-inventory:flow-feature-capability-group-stats","flow-node-inventory:flow-feature-capability-queue-stats","flow-node-inventory:flow-feature-capability-flow-stats","flow-node-inventory:flow-feature-capability-port-stats"],"max_buffers":0},"flow-node-inventory:snapshot-gathering-status-start":{"begin":"2026-04-08T01:00:10.794Z"},"flow-node-inventory:software":"2.17.11","node-connector":[{"id":"openflow:2:3","flow-node-inventory:port-number":3,"flow-node-inventory:hardware-address":"da:7c:fc:7d:24:d4","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s2-eth3","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"37","received":"33"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":106,"nanosecond":118000000},"bytes":{"transmitted":"3109","received":"2757"},"receive-crc-error":"0"}},{"id":"openflow:2:LOCAL","flow-node-inventory:port-number":4294967294,"flow-node-inventory:hardware-address":"ee:be:cf:9b:06:44","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s2","flow-node-inventory:current-feature":"","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":0,"flow-node-inventory:state":{"live":false,"blocked":false,"link-down":true},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"PORT-DOWN","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"0","received":"0"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":106,"nanosecond":113000000},"bytes":{"transmitted":"0","received":"0"},"receive-crc-error":"0"}},{"id":"openflow:2:2","flow-node-inventory:port-number":2,"flow-node-inventory:hardware-address":"76:f5:91:ad:d8:c6","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s2-eth2","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"37","received":"33"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":106,"nanosecond":118000000},"bytes":{"transmitted":"3109","received":"2757"},"receive-crc-error":"0"}},{"id":"openflow:2:1","flow-node-inventory:port-number":1,"flow-node-inventory:hardware-address":"96:61:91:36:76:0b","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s2-eth1","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"39","received":"10"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":106,"nanosecond":118000000},"bytes":{"transmitted":"3285","received":"796"},"receive-crc-error":"0"}}],"flow-node-inventory:ip-address":"10.30.170.192","flow-node-inventory:serial-number":"None","flow-node-inventory:group":[{"group-id":56,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":56000}}],"watch_group":56000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":56,"duration":{"second":102,"nanosecond":78000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":22,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":22000}}],"watch_group":22000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":22,"duration":{"second":102,"nanosecond":79000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":99,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":99000}}],"watch_group":99000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":99,"duration":{"second":102,"nanosecond":79000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":34000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":34000,"duration":{"second":104,"nanosecond":772000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":89000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":89000,"duration":{"second":104,"nanosecond":772000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":60000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":60000,"duration":{"second":104,"nanosecond":771000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":91000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":91000,"duration":{"second":104,"nanosecond":771000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":57,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":57000}}],"watch_group":57000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":57,"duration":{"second":102,"nanosecond":79000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":23,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":23000}}],"watch_group":23000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":23,"duration":{"second":101,"nanosecond":581000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":14000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":14000,"duration":{"second":104,"nanosecond":772000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":98,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":98000}}],"watch_group":98000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":98,"duration":{"second":101,"nanosecond":582000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":56000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":56000,"duration":{"second":104,"nanosecond":771000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":85000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":85000,"duration":{"second":104,"nanosecond":771000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":54,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":54000}}],"watch_group":54000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":54,"duration":{"second":101,"nanosecond":581000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":24,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":24000}}],"watch_group":24000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":24,"duration":{"second":101,"nanosecond":582000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":36000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":36000,"duration":{"second":104,"nanosecond":771000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":87000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":87000,"duration":{"second":104,"nanosecond":772000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":59000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":59000,"duration":{"second":104,"nanosecond":771000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":25000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":25000,"duration":{"second":104,"nanosecond":771000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":43000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":43000,"duration":{"second":104,"nanosecond":772000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":55,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":55000}}],"watch_group":55000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":55,"duration":{"second":101,"nanosecond":581000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":25,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":25000}}],"watch_group":25000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":25,"duration":{"second":104,"nanosecond":587000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":100,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":100000}}],"watch_group":100000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":100,"duration":{"second":101,"nanosecond":581000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":58000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":58000,"duration":{"second":104,"nanosecond":587000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":86000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":86000,"duration":{"second":104,"nanosecond":587000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":60,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":60000}}],"watch_group":60000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":60,"duration":{"second":104,"nanosecond":586000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":26,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":26000}}],"watch_group":26000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":26,"duration":{"second":101,"nanosecond":582000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":41000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":41000,"duration":{"second":104,"nanosecond":586000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":95,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":95000}}],"watch_group":95000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":95,"duration":{"second":101,"nanosecond":581000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":82000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":82000,"duration":{"second":104,"nanosecond":587000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":61,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":61000}}],"watch_group":61000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":61,"duration":{"second":101,"nanosecond":582000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":27,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":27000}}],"watch_group":27000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":27,"duration":{"second":101,"nanosecond":581000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":94,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":94000}}],"watch_group":94000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":94,"duration":{"second":101,"nanosecond":581000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":98000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":98000,"duration":{"second":104,"nanosecond":586000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":27000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":27000,"duration":{"second":104,"nanosecond":586000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":57000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":57000,"duration":{"second":104,"nanosecond":586000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":16000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":16000,"duration":{"second":104,"nanosecond":586000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":83000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":83000,"duration":{"second":104,"nanosecond":586000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":58,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":58000}}],"watch_group":58000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":58,"duration":{"second":104,"nanosecond":86000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":28,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":28000}}],"watch_group":28000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":28,"duration":{"second":101,"nanosecond":581000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":97,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":97000}}],"watch_group":97000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":97,"duration":{"second":101,"nanosecond":581000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":100000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":100000,"duration":{"second":104,"nanosecond":86000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":59,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":59000}}],"watch_group":59000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":59,"duration":{"second":104,"nanosecond":86000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":38000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":38000,"duration":{"second":104,"nanosecond":86000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":29,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":29000}}],"watch_group":29000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":29,"duration":{"second":101,"nanosecond":581000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":96,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":96000}}],"watch_group":96000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":96,"duration":{"second":101,"nanosecond":581000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":84000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":84000,"duration":{"second":104,"nanosecond":86000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":64,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":64000}}],"watch_group":64000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":64,"duration":{"second":101,"nanosecond":581000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":30,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":30000}}],"watch_group":30000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":30,"duration":{"second":101,"nanosecond":581000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":4,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":4000}}],"watch_group":4000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":4,"duration":{"second":101,"nanosecond":577000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":91,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":91000}}],"watch_group":91000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":91,"duration":{"second":104,"nanosecond":86000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":7000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":7000,"duration":{"second":104,"nanosecond":86000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":29000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":29000,"duration":{"second":104,"nanosecond":85000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":65,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":65000}}],"watch_group":65000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":65,"duration":{"second":101,"nanosecond":577000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":31,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":31000}}],"watch_group":31000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":31,"duration":{"second":101,"nanosecond":578000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":5,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":5000}}],"watch_group":5000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":5,"duration":{"second":101,"nanosecond":578000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":90,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":90000}}],"watch_group":90000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":90,"duration":{"second":101,"nanosecond":578000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":18000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":18000,"duration":{"second":104,"nanosecond":85000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":62,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":62000}}],"watch_group":62000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":62,"duration":{"second":101,"nanosecond":577000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":65000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":65000,"duration":{"second":104,"nanosecond":85000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":32,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":32000}}],"watch_group":32000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":32,"duration":{"second":101,"nanosecond":578000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":2,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":2000}}],"watch_group":2000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":2,"duration":{"second":101,"nanosecond":577000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":93,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":93000}}],"watch_group":93000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":93,"duration":{"second":101,"nanosecond":577000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":64000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":64000,"duration":{"second":104,"nanosecond":85000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":63,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":63000}}],"watch_group":63000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":63,"duration":{"second":101,"nanosecond":578000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":33,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":33000}}],"watch_group":33000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":33,"duration":{"second":101,"nanosecond":577000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":3,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":3000}}],"watch_group":3000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":3,"duration":{"second":101,"nanosecond":578000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":80000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":80000,"duration":{"second":104,"nanosecond":84000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":9000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":9000,"duration":{"second":104,"nanosecond":85000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":92,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":92000}}],"watch_group":92000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":92,"duration":{"second":101,"nanosecond":578000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":5000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":5000,"duration":{"second":104,"nanosecond":81000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":20000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":20000,"duration":{"second":104,"nanosecond":80000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":81000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":81000,"duration":{"second":104,"nanosecond":80000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":97000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":97000,"duration":{"second":104,"nanosecond":80000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":31000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":31000,"duration":{"second":104,"nanosecond":80000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":68,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":68000}}],"watch_group":68000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":68,"duration":{"second":101,"nanosecond":577000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":11000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":11000,"duration":{"second":104,"nanosecond":80000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":34,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":34000}}],"watch_group":34000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":34,"duration":{"second":104,"nanosecond":81000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":78000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":78000,"duration":{"second":104,"nanosecond":81000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":87,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":87000}}],"watch_group":87000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":87,"duration":{"second":104,"nanosecond":80000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":93000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":93000,"duration":{"second":104,"nanosecond":81000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":63000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":63000,"duration":{"second":104,"nanosecond":80000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":69,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":69000}}],"watch_group":69000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":69,"duration":{"second":101,"nanosecond":578000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":35,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":35000}}],"watch_group":35000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":35,"duration":{"second":101,"nanosecond":577000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":1,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":1000}}],"watch_group":1000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":1,"duration":{"second":8,"nanosecond":519000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":33000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":33000,"duration":{"second":104,"nanosecond":80000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":79000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":79000,"duration":{"second":104,"nanosecond":80000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":86,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":86000}}],"watch_group":86000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":86,"duration":{"second":104,"nanosecond":81000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":62000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":62000,"duration":{"second":104,"nanosecond":81000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":66,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":66000}}],"watch_group":66000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":66,"duration":{"second":101,"nanosecond":578000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":77000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":77000,"duration":{"second":104,"nanosecond":81000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":36,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":36000}}],"watch_group":36000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":36,"duration":{"second":104,"nanosecond":80000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":89,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":89000}}],"watch_group":89000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":89,"duration":{"second":104,"nanosecond":81000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":22000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":22000,"duration":{"second":104,"nanosecond":79000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":95000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":95000,"duration":{"second":104,"nanosecond":78000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":67,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":67000}}],"watch_group":67000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":67,"duration":{"second":101,"nanosecond":577000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":37,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":37000}}],"watch_group":37000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":37,"duration":{"second":101,"nanosecond":577000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":1000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":1000,"duration":{"second":8,"nanosecond":731000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":88,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":88000}}],"watch_group":88000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":88,"duration":{"second":101,"nanosecond":575000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":61000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":61000,"duration":{"second":104,"nanosecond":76000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":3000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":3000,"duration":{"second":104,"nanosecond":77000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":73,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":73000}}],"watch_group":73000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":73,"duration":{"second":101,"nanosecond":575000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":39,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":39000}}],"watch_group":39000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":39,"duration":{"second":101,"nanosecond":575000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":13,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":13000}}],"watch_group":13000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":13,"duration":{"second":101,"nanosecond":576000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":74000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":74000,"duration":{"second":104,"nanosecond":77000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":15000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":15000,"duration":{"second":104,"nanosecond":76000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":44000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":44000,"duration":{"second":104,"nanosecond":76000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":45000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":45000,"duration":{"second":104,"nanosecond":76000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":68000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":68000,"duration":{"second":104,"nanosecond":77000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":72,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":72000}}],"watch_group":72000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":72,"duration":{"second":101,"nanosecond":575000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":38,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":38000}}],"watch_group":38000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":38,"duration":{"second":103,"nanosecond":581000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":75000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":75000,"duration":{"second":103,"nanosecond":580000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":12,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":12000}}],"watch_group":12000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":12,"duration":{"second":101,"nanosecond":575000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":35000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":35000,"duration":{"second":103,"nanosecond":580000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":24000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":24000,"duration":{"second":103,"nanosecond":581000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":90000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":90000,"duration":{"second":103,"nanosecond":580000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":71,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":71000}}],"watch_group":71000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":71,"duration":{"second":101,"nanosecond":575000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":41,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":41000}}],"watch_group":41000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":41,"duration":{"second":103,"nanosecond":580000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":42000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":42000,"duration":{"second":103,"nanosecond":580000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":11,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":11000}}],"watch_group":11000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":11,"duration":{"second":103,"nanosecond":581000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":92000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":92000,"duration":{"second":103,"nanosecond":580000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":46000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":46000,"duration":{"second":103,"nanosecond":581000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":67000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":67000,"duration":{"second":103,"nanosecond":580000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":70,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":70000}}],"watch_group":70000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":70,"duration":{"second":101,"nanosecond":575000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":76000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":76000,"duration":{"second":103,"nanosecond":580000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":40,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":40000}}],"watch_group":40000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":40,"duration":{"second":101,"nanosecond":576000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":13000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":13000,"duration":{"second":103,"nanosecond":580000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":10,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":10000}}],"watch_group":10000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":10,"duration":{"second":101,"nanosecond":575000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":88000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":88000,"duration":{"second":103,"nanosecond":580000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":47000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":47000,"duration":{"second":103,"nanosecond":580000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":66000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":66000,"duration":{"second":103,"nanosecond":581000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":77,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":77000}}],"watch_group":77000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":77,"duration":{"second":103,"nanosecond":580000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":43,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":43000}}],"watch_group":43000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":43,"duration":{"second":103,"nanosecond":580000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":9,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":9000}}],"watch_group":9000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":9,"duration":{"second":103,"nanosecond":581000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":99000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":99000,"duration":{"second":103,"nanosecond":580000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":26000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":26000,"duration":{"second":103,"nanosecond":581000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":70000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":70000,"duration":{"second":103,"nanosecond":580000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":76,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":76000}}],"watch_group":76000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":76,"duration":{"second":103,"nanosecond":76000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":42,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":42000}}],"watch_group":42000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":42,"duration":{"second":103,"nanosecond":76000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":8,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":8000}}],"watch_group":8000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":8,"duration":{"second":101,"nanosecond":575000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":37000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":37000,"duration":{"second":103,"nanosecond":76000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":49000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":49000,"duration":{"second":103,"nanosecond":77000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":71000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":71000,"duration":{"second":103,"nanosecond":76000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":48000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":48000,"duration":{"second":103,"nanosecond":77000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":75,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":75000}}],"watch_group":75000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":75,"duration":{"second":103,"nanosecond":77000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":45,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":45000}}],"watch_group":45000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":45,"duration":{"second":103,"nanosecond":76000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":7,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":7000}}],"watch_group":7000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":7,"duration":{"second":103,"nanosecond":77000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":39000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":39000,"duration":{"second":103,"nanosecond":76000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":73000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":73000,"duration":{"second":103,"nanosecond":76000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":69000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":69000,"duration":{"second":103,"nanosecond":77000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":17000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":17000,"duration":{"second":103,"nanosecond":77000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":28000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":28000,"duration":{"second":103,"nanosecond":77000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":74,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":74000}}],"watch_group":74000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":74,"duration":{"second":103,"nanosecond":76000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":44,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":44000}}],"watch_group":44000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":44,"duration":{"second":103,"nanosecond":76000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":6,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":6000}}],"watch_group":6000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":6,"duration":{"second":101,"nanosecond":575000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":40000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":40000,"duration":{"second":103,"nanosecond":77000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":81,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":81000}}],"watch_group":81000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":81,"duration":{"second":103,"nanosecond":76000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":47,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":47000}}],"watch_group":47000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":47,"duration":{"second":103,"nanosecond":77000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":21,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":21000}}],"watch_group":21000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":21,"duration":{"second":101,"nanosecond":575000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":8000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":8000,"duration":{"second":103,"nanosecond":76000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":19000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":19000,"duration":{"second":103,"nanosecond":77000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":96000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":96000,"duration":{"second":103,"nanosecond":77000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":80,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":80000}}],"watch_group":80000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":80,"duration":{"second":103,"nanosecond":77000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":46,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":46000}}],"watch_group":46000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":46,"duration":{"second":103,"nanosecond":76000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":20,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":20000}}],"watch_group":20000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":20,"duration":{"second":103,"nanosecond":76000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":52000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":52000,"duration":{"second":103,"nanosecond":77000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":6000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":6000,"duration":{"second":103,"nanosecond":76000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":79,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":79000}}],"watch_group":79000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":79,"duration":{"second":103,"nanosecond":76000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":49,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":49000}}],"watch_group":49000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":49,"duration":{"second":102,"nanosecond":586000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":19,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":19000}}],"watch_group":19000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":19,"duration":{"second":102,"nanosecond":585000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":50000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":50000,"duration":{"second":102,"nanosecond":585000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":72000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":72000,"duration":{"second":102,"nanosecond":585000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":30000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":30000,"duration":{"second":102,"nanosecond":584000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":78,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":78000}}],"watch_group":78000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":78,"duration":{"second":102,"nanosecond":583000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":48,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":48000}}],"watch_group":48000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":48,"duration":{"second":102,"nanosecond":582000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":18,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":18000}}],"watch_group":18000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":18,"duration":{"second":102,"nanosecond":582000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":51000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":51000,"duration":{"second":102,"nanosecond":582000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":85,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":85000}}],"watch_group":85000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":85,"duration":{"second":102,"nanosecond":581000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":55000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":55000,"duration":{"second":102,"nanosecond":582000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":51,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":51000}}],"watch_group":51000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":51,"duration":{"second":102,"nanosecond":85000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":17,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":17000}}],"watch_group":17000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":17,"duration":{"second":102,"nanosecond":84000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":21000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":21000,"duration":{"second":102,"nanosecond":85000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":4000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":4000,"duration":{"second":102,"nanosecond":85000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":84,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":84000}}],"watch_group":84000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":84,"duration":{"second":102,"nanosecond":85000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":50,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":50000}}],"watch_group":50000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":50,"duration":{"second":102,"nanosecond":83000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":16,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":16000}}],"watch_group":16000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":16,"duration":{"second":102,"nanosecond":84000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":10000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":10000,"duration":{"second":102,"nanosecond":84000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":54000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":54000,"duration":{"second":102,"nanosecond":78000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":83,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":83000}}],"watch_group":83000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":83,"duration":{"second":102,"nanosecond":78000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":32000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":32000,"duration":{"second":102,"nanosecond":78000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":53,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":53000}}],"watch_group":53000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":53,"duration":{"second":101,"nanosecond":575000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":15,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":15000}}],"watch_group":15000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":15,"duration":{"second":102,"nanosecond":78000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":2000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":2000,"duration":{"second":102,"nanosecond":79000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":82,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":82000}}],"watch_group":82000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":82,"duration":{"second":102,"nanosecond":78000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":52,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":52000}}],"watch_group":52000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":52,"duration":{"second":102,"nanosecond":78000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":14,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":14000}}],"watch_group":14000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":14,"duration":{"second":102,"nanosecond":79000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":53000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":53000,"duration":{"second":102,"nanosecond":79000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":12000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":12000,"duration":{"second":102,"nanosecond":79000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":23000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":23000,"duration":{"second":102,"nanosecond":78000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":94000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":94000,"duration":{"second":102,"nanosecond":79000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}}],"flow-node-inventory:snapshot-gathering-status-end":{"succeeded":true,"end":"2026-04-08T01:00:10.835Z"}}]}}</msg>
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:00:10.994674" elapsed="0.010529"/>
</kw>
<kw name="Get Count" owner="BuiltIn">
<msg time="2026-04-08T01:00:11.008841" level="INFO">Item found from container 303 times.</msg>
<msg time="2026-04-08T01:00:11.008926" level="INFO">${count} = 303</msg>
<var>${count}</var>
<arg>${resp.text}</arg>
<arg>"priority"</arg>
<doc>Returns and logs how many times ``item`` is found from ``container``.</doc>
<status status="PASS" start="2026-04-08T01:00:11.005497" elapsed="0.003454"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${count}</arg>
<arg>${flows}</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="PASS" start="2026-04-08T01:00:11.009185" elapsed="0.000320"/>
</kw>
<arg>${all_flows}</arg>
<doc>Check number of flows in the inventory.</doc>
<status status="PASS" start="2026-04-08T01:00:10.945880" elapsed="0.063695"/>
</kw>
<arg>30s</arg>
<arg>1s</arg>
<arg>ClusterOpenFlow.Check Number Of Flows On Member</arg>
<arg>${all_flows}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-08T01:00:10.945346" elapsed="0.064276"/>
</kw>
<doc>Check Flows in Operational DS.</doc>
<status status="PASS" start="2026-04-08T01:00:10.582032" elapsed="0.427714"/>
</test>
<test id="s1-s4-t23" name="Check Groups After Owner Reconnect In Operational DS" line="169">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-08T01:00:11.012919" elapsed="0.000230"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-08T01:00:11.012652" elapsed="0.000573"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:00:11.014409" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:00:11.014282" elapsed="0.000177"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:11.014257" elapsed="0.000226"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:00:11.019349" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:00:11.019241" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:11.019222" elapsed="0.000194"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:00:11.020439" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:00:11.020029" elapsed="0.000437"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:00:11.020932" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:00:11.020630" elapsed="0.000330"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T01:00:11.021036" elapsed="0.000037"/>
</return>
<msg time="2026-04-08T01:00:11.021218" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T01:00:11.019648" elapsed="0.001596"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:00:11.026903" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:00:11.026795" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:11.026776" elapsed="0.000194"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:00:11.028410" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:00:11.028288" elapsed="0.000169"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:11.028270" elapsed="0.000209"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:00:11.029050" level="INFO">${karaf_connection_index} = 476</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:00:11.028630" elapsed="0.000447"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:00:11.029523" level="INFO">${current_connection_index} = 495</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:00:11.029261" elapsed="0.000289"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:00:11.059268" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:00:11.030050" elapsed="0.029321"/>
</kw>
<msg time="2026-04-08T01:00:11.059552" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T01:00:11.059599" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:11.029713" elapsed="0.029923"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T01:00:11.118426" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "G "r "o "u "p "s "[C "A "f "t "e "r "[C "O "w "n "e "r "[C "R "e "c "o "n "n "e "c "t "[C "I "n "[C "O "p "e "r "a "t "i "o "n "a "l "[C "D "[78CS "[A[78C"[K
[K
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T01:00:11.060191" elapsed="0.058489"/>
</kw>
<msg time="2026-04-08T01:00:11.118912" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T01:00:11.118963" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "G "r "o "u "p "s...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:11.059811" elapsed="0.059297"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:11.119684" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:11.119282" elapsed="0.000464"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:11.119239" elapsed="0.000536"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:00:11.120347" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "G "r "o "u "p "s "[C "A "f "t "e "r "[C "O "w "n "e "r "[C "R "e "c "o "n "n "e "c "t "[C "I "n "[C "O "p "e "r "a "t "i "o "n "a "l "[C "D "[78CS "[A[78C"[K
[K
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:00:11.119933" elapsed="0.000499"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:11.120732" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:11.120504" elapsed="0.000303"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:11.120484" elapsed="0.000349"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T01:00:11.120877" elapsed="0.000062"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:00:11.123640" elapsed="0.000194"/>
</kw>
<msg time="2026-04-08T01:00:11.123896" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:00:11.122579" elapsed="0.001453"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:11.124340" elapsed="0.000080"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:11.124684" elapsed="0.000074"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:00:11.121889" elapsed="0.002983"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T01:00:11.121281" elapsed="0.003655"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T01:00:11.027920" elapsed="0.097163"/>
</kw>
<msg time="2026-04-08T01:00:11.125204" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:00:11.125252" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "G "r "o "u "p "s...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:11.027125" elapsed="0.098167"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T01:00:11.125490" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-08T01:00:11.125378" elapsed="0.000173"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:11.125356" elapsed="0.000219"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:11.125991" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:11.126356" elapsed="0.000030"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T01:00:11.126438" elapsed="0.000017"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T01:00:11.026454" elapsed="0.100104"/>
</kw>
<msg time="2026-04-08T01:00:11.126658" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:00:11.126705" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "G "r "o "u "p "s...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:11.021625" elapsed="0.105121"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:11.127088" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:11.126831" elapsed="0.000311"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:11.126814" elapsed="0.000371"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T01:00:11.021479" elapsed="0.105732"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:00:11.132985" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:00:11.132874" elapsed="0.000185"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:11.132853" elapsed="0.000239"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:00:11.134406" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:00:11.134294" elapsed="0.000159"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:11.134276" elapsed="0.000203"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:00:11.134953" level="INFO">${karaf_connection_index} = 478</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:00:11.134642" elapsed="0.000343"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:00:11.135478" level="INFO">${current_connection_index} = 495</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:00:11.135148" elapsed="0.000364"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:00:11.170369" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:00:11.136026" elapsed="0.034450"/>
</kw>
<msg time="2026-04-08T01:00:11.170640" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T01:00:11.170688" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:11.135681" elapsed="0.035043"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T01:00:11.237874" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "G "r "o "u "p "s "[C "A "f "t "e "r "[C "O "w "n "e "r "[C "R "e "c "o "n "n "e "c "t "[C "I "n "[C "O "p "e "r "a "t "i "o "n "a "l "[C "D "[78CS "[A[78C"[K
[K
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T01:00:11.171300" elapsed="0.066752"/>
</kw>
<msg time="2026-04-08T01:00:11.238265" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T01:00:11.238314" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "G "r "o "u "p "s...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:11.170902" elapsed="0.067450"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:11.238720" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:11.238450" elapsed="0.000328"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:11.238422" elapsed="0.000382"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:00:11.239313" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "G "r "o "u "p "s "[C "A "f "t "e "r "[C "O "w "n "e "r "[C "R "e "c "o "n "n "e "c "t "[C "I "n "[C "O "p "e "r "a "t "i "o "n "a "l "[C "D "[78CS "[A[78C"[K
[K
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:00:11.238954" elapsed="0.000443"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:11.239690" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:11.239466" elapsed="0.000279"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:11.239447" elapsed="0.000321"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T01:00:11.239802" elapsed="0.000035"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:00:11.242561" elapsed="0.000185"/>
</kw>
<msg time="2026-04-08T01:00:11.242808" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:00:11.241459" elapsed="0.001482"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:11.243262" elapsed="0.000075"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:11.243600" elapsed="0.000074"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:00:11.240730" elapsed="0.003054"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T01:00:11.240114" elapsed="0.003735"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T01:00:11.133930" elapsed="0.110044"/>
</kw>
<msg time="2026-04-08T01:00:11.244110" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:00:11.244189" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "G "r "o "u "p "s...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:11.133300" elapsed="0.110945"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T01:00:11.244492" elapsed="0.000035"/>
</return>
<status status="PASS" start="2026-04-08T01:00:11.244352" elapsed="0.000220"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:11.244326" elapsed="0.000350"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 2,
close the previous connection. In any case create a new connection
to karaf console for 2, set correct prompt set and login to karaf console.
Store connection index for 2 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:11.245282" elapsed="0.000035"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:11.245737" elapsed="0.000036"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T01:00:11.245839" elapsed="0.000025"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T01:00:11.132517" elapsed="0.113481"/>
</kw>
<msg time="2026-04-08T01:00:11.246145" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:00:11.246226" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "G "r "o "u "p "s...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:11.127507" elapsed="0.118773"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:11.246741" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:11.246388" elapsed="0.000429"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:11.246363" elapsed="0.000489"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T01:00:11.127345" elapsed="0.119543"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:00:11.255286" elapsed="0.000023"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:00:11.255103" elapsed="0.000252"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:11.255074" elapsed="0.000315"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:00:11.257064" elapsed="0.000022"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:00:11.256906" elapsed="0.000241"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:11.256878" elapsed="0.000335"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:00:11.257943" level="INFO">${karaf_connection_index} = 480</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:00:11.257435" elapsed="0.000549"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:00:11.258600" level="INFO">${current_connection_index} = 495</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:00:11.258243" elapsed="0.000396"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:00:11.295597" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:00:11.259389" elapsed="0.036429"/>
</kw>
<msg time="2026-04-08T01:00:11.296054" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T01:00:11.296104" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:11.258876" elapsed="0.037267"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T01:00:11.358190" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "G "r "o "u "p "s "[C "A "f "t "e "r "[C "O "w "n "e "r "[C "R "e "c "o "n "n "e "c "t "[C "I "n "[C "O "p "e "r "a "t "i "o "n "a "l "[C "D "[78CS "[A[78C"[K
[K
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T01:00:11.296886" elapsed="0.061576"/>
</kw>
<msg time="2026-04-08T01:00:11.358730" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T01:00:11.358797" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "G "r "o "u "p "s...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:11.296432" elapsed="0.062420"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:11.359461" elapsed="0.000033"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:11.359024" elapsed="0.000519"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:11.358977" elapsed="0.000604"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:00:11.360308" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "G "r "o "u "p "s "[C "A "f "t "e "r "[C "O "w "n "e "r "[C "R "e "c "o "n "n "e "c "t "[C "I "n "[C "O "p "e "r "a "t "i "o "n "a "l "[C "D "[78CS "[A[78C"[K
[K
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:00:11.359801" elapsed="0.000623"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:11.360833" elapsed="0.000029"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:11.360516" elapsed="0.000501"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:11.360491" elapsed="0.000563"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T01:00:11.361107" elapsed="0.000088"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:00:11.364643" elapsed="0.000240"/>
</kw>
<msg time="2026-04-08T01:00:11.364963" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:00:11.363281" elapsed="0.001855"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:11.365574" elapsed="0.000098"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:11.366021" elapsed="0.000095"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:00:11.362384" elapsed="0.003894"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T01:00:11.361588" elapsed="0.004781"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T01:00:11.256476" elapsed="0.110029"/>
</kw>
<msg time="2026-04-08T01:00:11.366638" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:00:11.366700" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "G "r "o "u "p "s...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:11.255618" elapsed="0.111134"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T01:00:11.367003" elapsed="0.000034"/>
</return>
<status status="PASS" start="2026-04-08T01:00:11.366859" elapsed="0.000223"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:11.366833" elapsed="0.000283"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 3,
close the previous connection. In any case create a new connection
to karaf console for 3, set correct prompt set and login to karaf console.
Store connection index for 3 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:11.367670" elapsed="0.000033"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:11.368128" elapsed="0.000066"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T01:00:11.368260" elapsed="0.000024"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T01:00:11.254581" elapsed="0.113829"/>
</kw>
<msg time="2026-04-08T01:00:11.368539" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:00:11.368601" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "G "r "o "u "p "s...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:11.247332" elapsed="0.121323"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:11.369096" elapsed="0.000028"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:11.368760" elapsed="0.000444"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:11.368736" elapsed="0.000504"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T01:00:11.247083" elapsed="0.122192"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-08T01:00:11.021302" elapsed="0.348019"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-08T01:00:11.018859" elapsed="0.350544"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-08T01:00:11.013828" elapsed="0.355657"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:11.013383" elapsed="0.356167"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-08T01:00:11.010516" elapsed="0.359110"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Check Number Of Groups On Member" owner="ClusterOpenFlow">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:00:11.372044" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:00:11.371649" elapsed="0.000431"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T01:00:11.372138" elapsed="0.000366"/>
</return>
<msg time="2026-04-08T01:00:11.372676" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T01:00:11.371179" elapsed="0.001531"/>
</kw>
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T01:00:11.417735" level="INFO">GET Request : url=http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01s3bfo0y24i1es90l47mavglv0.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T01:00:11.419278" level="INFO">GET Response : url=http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Transfer-Encoding': 'chunked'} 
 body={"opendaylight-inventory:nodes":{"node":[{"id":"openflow:3","flow-node-inventory:port-number":54950,"flow-node-inventory:table":[{"id":62,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":28,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":2,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":224,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":181,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":147,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":106,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":61,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":27,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":1,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":223,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":182,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":148,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":105,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":60,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":30,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":0,"flow":[{"id":"71","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.71/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":71}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":876000000}},"flags":""},{"id":"11","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.11/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":11}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":876000000}},"flags":""},{"id":"70","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.70/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":70}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":876000000}},"flags":""},{"id":"10","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.10/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":10}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":876000000}},"flags":""},{"id":"60","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.60/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":60}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":876000000}},"flags":""},{"id":"13","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.13/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":13}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":876000000}},"flags":""},{"id":"12","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.12/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":12}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":876000000}},"flags":""},{"id":"80","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.80/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":80}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":876000000}},"flags":""},{"id":"93","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.93/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":93}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":876000000}},"flags":""},{"id":"92","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.92/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":92}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":876000000}},"flags":""},{"id":"82","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.82/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":82}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":876000000}},"flags":""},{"id":"91","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.91/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":91}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":876000000}},"flags":""},{"id":"81","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.81/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":81}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":876000000}},"flags":""},{"id":"90","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.90/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":90}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":876000000}},"flags":""},{"id":"9","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.9/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":9}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":875000000}},"flags":""},{"id":"84","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.84/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":84}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":876000000}},"flags":""},{"id":"97","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.97/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":97}}]}}]},"hard-timeout":0,"opendaylight-flo... (set the log level to DEBUG or TRACE to see the full content) 
 </msg>
<msg time="2026-04-08T01:00:11.419601" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${RFC8040_OPERATIONAL_NODES_API}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T01:00:11.372995" elapsed="0.046647"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:00:11.424281" level="INFO">{"opendaylight-inventory:nodes":{"node":[{"id":"openflow:3","flow-node-inventory:port-number":54950,"flow-node-inventory:table":[{"id":62,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":28,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":2,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":224,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":181,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":147,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":106,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":61,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":27,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":1,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":223,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":182,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":148,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":105,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":60,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":30,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":0,"flow":[{"id":"71","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.71/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":71}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":876000000}},"flags":""},{"id":"11","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.11/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":11}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":876000000}},"flags":""},{"id":"70","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.70/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":70}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":876000000}},"flags":""},{"id":"10","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.10/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":10}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":876000000}},"flags":""},{"id":"60","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.60/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":60}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":876000000}},"flags":""},{"id":"13","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.13/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":13}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":876000000}},"flags":""},{"id":"12","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.12/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":12}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":876000000}},"flags":""},{"id":"80","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.80/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":80}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":876000000}},"flags":""},{"id":"93","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.93/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":93}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":876000000}},"flags":""},{"id":"92","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.92/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":92}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":876000000}},"flags":""},{"id":"82","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.82/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":82}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":876000000}},"flags":""},{"id":"91","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.91/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":91}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":876000000}},"flags":""},{"id":"81","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.81/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":81}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":876000000}},"flags":""},{"id":"90","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.90/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":90}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":876000000}},"flags":""},{"id":"9","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.9/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":9}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":875000000}},"flags":""},{"id":"84","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.84/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":84}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":876000000}},"flags":""},{"id":"97","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.97/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":97}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":876000000}},"flags":""},{"id":"66","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.66/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":66}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":876000000}},"flags":""},{"id":"79","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.79/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":79}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":876000000}},"flags":""},{"id":"54","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.54/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":54}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":876000000}},"flags":""},{"id":"45","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.45/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":45}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":876000000}},"flags":""},{"id":"83","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.83/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":83}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":876000000}},"flags":""},{"id":"96","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.96/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":96}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":875000000}},"flags":""},{"id":"65","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.65/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":65}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":876000000}},"flags":""},{"id":"78","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.78/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":78}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":876000000}},"flags":""},{"id":"20","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.20/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":20}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":875000000}},"flags":""},{"id":"55","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.55/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":55}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":876000000}},"flags":""},{"id":"46","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.46/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":46}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":876000000}},"flags":""},{"id":"7","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.7/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":7}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":875000000}},"flags":""},{"id":"86","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.86/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":86}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":876000000}},"flags":""},{"id":"95","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.95/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":95}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":875000000}},"flags":""},{"id":"68","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.68/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":68}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":876000000}},"flags":""},{"id":"77","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.77/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":77}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":876000000}},"flags":""},{"id":"30","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.30/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":30}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":876000000}},"flags":""},{"id":"56","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.56/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":56}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":876000000}},"flags":""},{"id":"43","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.43/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":43}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":876000000}},"flags":""},{"id":"8","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.8/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":8}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":875000000}},"flags":""},{"id":"85","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.85/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":85}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":876000000}},"flags":""},{"id":"94","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.94/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":94}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":875000000}},"flags":""},{"id":"67","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.67/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":67}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":876000000}},"flags":""},{"id":"76","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.76/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":76}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":876000000}},"flags":""},{"id":"31","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.31/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":31}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":876000000}},"flags":""},{"id":"57","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.57/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":57}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":876000000}},"flags":""},{"id":"44","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.44/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":44}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":876000000}},"flags":""},{"id":"5","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.5/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":5}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":875000000}},"flags":""},{"id":"88","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.88/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":88}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":876000000}},"flags":""},{"id":"62","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.62/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":62}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":876000000}},"flags":""},{"id":"75","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.75/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":75}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":876000000}},"flags":""},{"id":"32","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.32/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":32}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":876000000}},"flags":""},{"id":"23","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.23/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":23}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":875000000}},"flags":""},{"id":"50","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.50/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":50}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":873000000}},"flags":""},{"id":"41","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.41/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":41}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":876000000}},"flags":""},{"id":"6","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.6/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":6}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":875000000}},"flags":""},{"id":"100","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.100/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":100}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":876000000}},"flags":""},{"id":"87","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.87/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":87}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":876000000}},"flags":""},{"id":"61","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.61/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":61}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":876000000}},"flags":""},{"id":"74","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.74/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":74}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":876000000}},"flags":""},{"id":"33","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.33/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":33}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":876000000}},"flags":""},{"id":"24","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.24/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":24}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":875000000}},"flags":""},{"id":"51","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.51/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":51}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":873000000}},"flags":""},{"id":"42","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.42/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":42}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":876000000}},"flags":""},{"id":"3","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.3/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":3}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":875000000}},"flags":""},{"id":"99","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.99/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":99}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":876000000}},"flags":""},{"id":"64","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.64/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":64}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":876000000}},"flags":""},{"id":"73","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.73/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":73}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":876000000}},"flags":""},{"id":"34","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.34/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":34}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":876000000}},"flags":""},{"id":"21","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.21/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":21}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":875000000}},"flags":""},{"id":"52","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.52/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":52}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":876000000}},"flags":""},{"id":"#UF$TABLE*0-3","table_id":0,"priority":0,"cookie_mask":"0","idle-timeout":0,"cookie":"10","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"output-action":{"max-length":65535,"output-node-connector":"CONTROLLER"}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"27","byte-count":"2190","duration":{"second":100,"nanosecond":748000000}},"flags":"SEND_FLOW_REM"},{"id":"4","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.4/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":4}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":875000000}},"flags":""},{"id":"89","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.89/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":89}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":876000000}},"flags":""},{"id":"98","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.98/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":98}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":876000000}},"flags":""},{"id":"63","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.63/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":63}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":876000000}},"flags":""},{"id":"72","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.72/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":72}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":876000000}},"flags":""},{"id":"35","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.35/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":35}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":875000000}},"flags":""},{"id":"22","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.22/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":22}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":875000000}},"flags":""},{"id":"53","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.53/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":53}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":876000000}},"flags":""},{"id":"40","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.40/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":40}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":876000000}},"flags":""},{"id":"37","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.37/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":37}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":875000000}},"flags":""},{"id":"28","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.28/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":28}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":875000000}},"flags":""},{"id":"36","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.36/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":36}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":875000000}},"flags":""},{"id":"27","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.27/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":27}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":875000000}},"flags":""},{"id":"39","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.39/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":39}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":875000000}},"flags":""},{"id":"26","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.26/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":26}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":875000000}},"flags":""},{"id":"38","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.38/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":38}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":875000000}},"flags":""},{"id":"25","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.25/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":25}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":875000000}},"flags":""},{"id":"69","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.69/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":69}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":876000000}},"flags":""},{"id":"59","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.59/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":59}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":876000000}},"flags":""},{"id":"58","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.58/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":58}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":876000000}},"flags":""},{"id":"49","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.49/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":49}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":876000000}},"flags":""},{"id":"48","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.48/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":48}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":876000000}},"flags":""},{"id":"29","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.29/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":29}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":875000000}},"flags":""},{"id":"47","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.47/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":47}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":876000000}},"flags":""},{"id":"18","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.18/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":18}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":876000000}},"flags":""},{"id":"19","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.19/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":19}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":876000000}},"flags":""},{"id":"14","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.14/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":14}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":876000000}},"flags":""},{"id":"15","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.15/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":15}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":876000000}},"flags":""},{"id":"1","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.1/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":1}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":7,"nanosecond":625000000}},"flags":""},{"id":"16","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.16/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":16}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":876000000}},"flags":""},{"id":"2","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.2/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":2}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":876000000}},"flags":""},{"id":"17","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.17/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":17}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":876000000}},"flags":""}],"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"45","active-flows":101,"packets-matched":"37"}},{"id":226,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":179,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":149,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":104,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":59,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":29,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":225,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":180,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":150,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":103,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":66,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":32,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":220,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":185,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":151,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":102,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":65,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":31,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":253,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":219,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":186,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":152,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":101,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":64,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":34,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":252,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":222,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":183,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":153,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":100,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":63,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":33,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":251,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":221,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":184,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":154,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":99,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":54,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":20,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":250,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":216,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":189,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":155,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":129,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":114,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":53,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":19,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":249,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":215,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":190,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":156,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":130,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":113,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":52,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":22,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":248,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":218,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":187,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":157,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":112,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":51,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":21,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":247,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":217,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":188,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":158,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":128,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":111,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":58,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":24,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":246,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":212,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":193,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":159,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":110,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":57,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":23,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":245,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":211,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":194,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":160,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":109,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":56,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":26,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":244,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":214,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":191,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":161,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":108,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":55,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":25,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":243,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":213,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":192,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":162,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":107,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":77,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":43,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":17,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":239,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":198,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":164,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":138,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":119,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":89,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":78,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":44,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":18,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":240,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":197,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":163,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":137,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":120,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":90,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":75,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":45,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":15,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":241,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":196,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":166,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":136,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":121,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":87,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":76,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":46,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":16,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":242,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":195,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":165,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":135,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":122,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":88,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":81,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":47,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":13,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":235,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":202,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":168,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":134,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":115,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":85,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":82,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":48,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":14,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":236,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":201,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":167,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":133,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":116,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":86,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":79,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":49,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":11,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":237,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":200,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":170,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":132,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":117,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":83,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":80,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":50,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":12,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":238,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":199,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":169,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":131,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":118,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":84,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":69,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":35,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":9,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":231,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":206,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":172,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":146,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":127,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":97,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":70,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":36,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":10,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":232,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":205,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":171,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":145,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":98,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":67,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":37,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":7,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":233,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":204,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":174,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":144,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":95,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":68,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":38,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":8,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":234,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":203,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":173,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":143,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":96,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":73,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":39,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":5,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":227,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":210,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":176,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":142,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":123,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":93,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":74,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":40,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":6,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":228,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":209,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":175,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":141,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":124,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":94,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":71,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":41,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":3,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":229,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":208,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":178,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":140,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":125,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":91,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":72,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":42,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":4,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":230,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":207,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":177,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":139,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":126,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":92,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}}],"opendaylight-group-statistics:group-features":{"max-groups":[4294967040],"group-types-supported":["opendaylight-group-types:group-all","opendaylight-group-types:group-ff","opendaylight-group-types:group-select","opendaylight-group-types:group-indirect"],"group-capabilities-supported":["opendaylight-group-types:chaining","opendaylight-group-types:select-weight","opendaylight-group-types:select-liveness"],"actions":[67076097]},"flow-node-inventory:manufacturer":"Nicira, Inc.","flow-node-inventory:description":"s3","flow-node-inventory:hardware":"Open vSwitch","flow-node-inventory:switch-features":{"max_tables":254,"capabilities":["flow-node-inventory:flow-feature-capability-table-stats","flow-node-inventory:flow-feature-capability-group-stats","flow-node-inventory:flow-feature-capability-queue-stats","flow-node-inventory:flow-feature-capability-flow-stats","flow-node-inventory:flow-feature-capability-port-stats"],"max_buffers":0},"flow-node-inventory:snapshot-gathering-status-start":{"begin":"2026-04-08T01:00:10.761Z"},"flow-node-inventory:software":"2.17.11","node-connector":[{"id":"openflow:3:LOCAL","flow-node-inventory:port-number":4294967294,"flow-node-inventory:hardware-address":"c2:87:c1:60:0d:43","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s3","flow-node-inventory:current-feature":"","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":0,"flow-node-inventory:state":{"live":false,"blocked":false,"link-down":true},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"PORT-DOWN","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"0","received":"0"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":106,"nanosecond":78000000},"bytes":{"transmitted":"0","received":"0"},"receive-crc-error":"0"}},{"id":"openflow:3:2","flow-node-inventory:port-number":2,"flow-node-inventory:hardware-address":"9e:72:98:8c:46:72","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s3-eth2","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"33","received":"37"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":106,"nanosecond":81000000},"bytes":{"transmitted":"2757","received":"3109"},"receive-crc-error":"0"}},{"id":"openflow:3:1","flow-node-inventory:port-number":1,"flow-node-inventory:hardware-address":"ca:ac:9a:41:42:1c","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s3-eth1","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"39","received":"10"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":106,"nanosecond":81000000},"bytes":{"transmitted":"3285","received":"796"},"receive-crc-error":"0"}}],"flow-node-inventory:ip-address":"10.30.170.192","flow-node-inventory:serial-number":"None","flow-node-inventory:group":[{"group-id":56,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":56000}}],"watch_group":56000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":56,"duration":{"second":101,"nanosecond":898000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":22,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":22000}}],"watch_group":22000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":22,"duration":{"second":101,"nanosecond":898000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":99,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":99000}}],"watch_group":99000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":99,"duration":{"second":101,"nanosecond":898000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":34000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":34000,"duration":{"second":104,"nanosecond":728000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":89000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":89000,"duration":{"second":104,"nanosecond":727000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":60000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":60000,"duration":{"second":104,"nanosecond":724000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":91000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":91000,"duration":{"second":104,"nanosecond":724000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":57,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":57000}}],"watch_group":57000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":57,"duration":{"second":101,"nanosecond":898000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":23,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":23000}}],"watch_group":23000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":23,"duration":{"second":101,"nanosecond":401000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":14000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":14000,"duration":{"second":104,"nanosecond":724000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":98,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":98000}}],"watch_group":98000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":98,"duration":{"second":101,"nanosecond":400000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":56000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":56000,"duration":{"second":104,"nanosecond":724000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":85000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":85000,"duration":{"second":104,"nanosecond":724000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":54,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":54000}}],"watch_group":54000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":54,"duration":{"second":101,"nanosecond":400000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":24,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":24000}}],"watch_group":24000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":24,"duration":{"second":101,"nanosecond":400000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":36000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":36000,"duration":{"second":104,"nanosecond":724000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":87000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":87000,"duration":{"second":104,"nanosecond":724000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":59000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":59000,"duration":{"second":104,"nanosecond":724000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":25000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":25000,"duration":{"second":104,"nanosecond":724000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":43000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":43000,"duration":{"second":104,"nanosecond":723000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":55,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":55000}}],"watch_group":55000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":55,"duration":{"second":101,"nanosecond":400000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":25,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":25000}}],"watch_group":25000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":25,"duration":{"second":104,"nanosecond":406000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":100,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":100000}}],"watch_group":100000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":100,"duration":{"second":101,"nanosecond":400000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":58000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":58000,"duration":{"second":104,"nanosecond":406000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":86000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":86000,"duration":{"second":104,"nanosecond":406000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":60,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":60000}}],"watch_group":60000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":60,"duration":{"second":104,"nanosecond":406000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":26,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":26000}}],"watch_group":26000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":26,"duration":{"second":101,"nanosecond":400000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":41000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":41000,"duration":{"second":104,"nanosecond":405000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":95,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":95000}}],"watch_group":95000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":95,"duration":{"second":101,"nanosecond":400000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":82000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":82000,"duration":{"second":104,"nanosecond":405000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":61,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":61000}}],"watch_group":61000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":61,"duration":{"second":101,"nanosecond":400000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":27,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":27000}}],"watch_group":27000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":27,"duration":{"second":101,"nanosecond":395000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":94,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":94000}}],"watch_group":94000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":94,"duration":{"second":101,"nanosecond":395000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":98000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":98000,"duration":{"second":104,"nanosecond":404000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":27000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":27000,"duration":{"second":104,"nanosecond":404000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":57000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":57000,"duration":{"second":104,"nanosecond":403000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":16000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":16000,"duration":{"second":104,"nanosecond":402000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":83000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":83000,"duration":{"second":104,"nanosecond":402000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":58,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":58000}}],"watch_group":58000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":58,"duration":{"second":103,"nanosecond":903000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":28,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":28000}}],"watch_group":28000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":28,"duration":{"second":101,"nanosecond":395000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":97,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":97000}}],"watch_group":97000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":97,"duration":{"second":101,"nanosecond":395000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":100000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":100000,"duration":{"second":103,"nanosecond":903000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":59,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":59000}}],"watch_group":59000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":59,"duration":{"second":103,"nanosecond":903000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":38000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":38000,"duration":{"second":103,"nanosecond":903000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":29,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":29000}}],"watch_group":29000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":29,"duration":{"second":101,"nanosecond":395000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":96,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":96000}}],"watch_group":96000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":96,"duration":{"second":101,"nanosecond":395000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":84000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":84000,"duration":{"second":103,"nanosecond":903000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":64,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":64000}}],"watch_group":64000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":64,"duration":{"second":101,"nanosecond":395000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":30,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":30000}}],"watch_group":30000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":30,"duration":{"second":101,"nanosecond":395000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":4,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":4000}}],"watch_group":4000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":4,"duration":{"second":101,"nanosecond":395000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":91,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":91000}}],"watch_group":91000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":91,"duration":{"second":103,"nanosecond":903000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":7000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":7000,"duration":{"second":103,"nanosecond":903000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":29000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":29000,"duration":{"second":103,"nanosecond":903000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":65,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":65000}}],"watch_group":65000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":65,"duration":{"second":101,"nanosecond":395000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":31,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":31000}}],"watch_group":31000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":31,"duration":{"second":101,"nanosecond":395000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":5,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":5000}}],"watch_group":5000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":5,"duration":{"second":101,"nanosecond":395000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":90,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":90000}}],"watch_group":90000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":90,"duration":{"second":101,"nanosecond":395000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":18000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":18000,"duration":{"second":103,"nanosecond":902000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":62,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":62000}}],"watch_group":62000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":62,"duration":{"second":101,"nanosecond":395000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":65000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":65000,"duration":{"second":103,"nanosecond":902000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":32,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":32000}}],"watch_group":32000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":32,"duration":{"second":101,"nanosecond":395000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":2,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":2000}}],"watch_group":2000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":2,"duration":{"second":101,"nanosecond":395000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":93,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":93000}}],"watch_group":93000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":93,"duration":{"second":101,"nanosecond":395000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":64000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":64000,"duration":{"second":103,"nanosecond":901000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":63,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":63000}}],"watch_group":63000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":63,"duration":{"second":101,"nanosecond":395000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":33,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":33000}}],"watch_group":33000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":33,"duration":{"second":101,"nanosecond":395000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":3,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":3000}}],"watch_group":3000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":3,"duration":{"second":101,"nanosecond":395000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":80000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":80000,"duration":{"second":103,"nanosecond":900000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":9000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":9000,"duration":{"second":103,"nanosecond":900000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":92,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":92000}}],"watch_group":92000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":92,"duration":{"second":101,"nanosecond":395000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":5000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":5000,"duration":{"second":103,"nanosecond":900000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":20000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":20000,"duration":{"second":103,"nanosecond":900000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":81000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":81000,"duration":{"second":103,"nanosecond":900000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":97000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":97000,"duration":{"second":103,"nanosecond":900000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":31000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":31000,"duration":{"second":103,"nanosecond":900000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":68,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":68000}}],"watch_group":68000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":68,"duration":{"second":101,"nanosecond":395000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":11000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":11000,"duration":{"second":103,"nanosecond":900000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":34,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":34000}}],"watch_group":34000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":34,"duration":{"second":103,"nanosecond":900000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":78000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":78000,"duration":{"second":103,"nanosecond":899000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":87,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":87000}}],"watch_group":87000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":87,"duration":{"second":103,"nanosecond":899000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":93000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":93000,"duration":{"second":103,"nanosecond":899000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":63000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":63000,"duration":{"second":103,"nanosecond":899000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":69,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":69000}}],"watch_group":69000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":69,"duration":{"second":101,"nanosecond":395000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":35,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":35000}}],"watch_group":35000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":35,"duration":{"second":101,"nanosecond":395000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":1,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":1000}}],"watch_group":1000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":1,"duration":{"second":7,"nanosecond":835000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":33000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":33000,"duration":{"second":103,"nanosecond":895000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":79000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":79000,"duration":{"second":103,"nanosecond":895000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":86,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":86000}}],"watch_group":86000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":86,"duration":{"second":103,"nanosecond":895000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":62000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":62000,"duration":{"second":103,"nanosecond":895000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":66,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":66000}}],"watch_group":66000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":66,"duration":{"second":101,"nanosecond":395000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":77000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":77000,"duration":{"second":103,"nanosecond":895000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":36,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":36000}}],"watch_group":36000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":36,"duration":{"second":103,"nanosecond":895000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":89,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":89000}}],"watch_group":89000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":89,"duration":{"second":103,"nanosecond":895000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":22000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":22000,"duration":{"second":103,"nanosecond":895000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":95000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":95000,"duration":{"second":103,"nanosecond":895000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":67,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":67000}}],"watch_group":67000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":67,"duration":{"second":101,"nanosecond":395000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":37,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":37000}}],"watch_group":37000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":37,"duration":{"second":101,"nanosecond":395000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":1000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":1000,"duration":{"second":8,"nanosecond":47000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":88,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":88000}}],"watch_group":88000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":88,"duration":{"second":101,"nanosecond":395000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":61000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":61000,"duration":{"second":103,"nanosecond":894000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":3000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":3000,"duration":{"second":103,"nanosecond":894000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":73,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":73000}}],"watch_group":73000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":73,"duration":{"second":101,"nanosecond":395000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":39,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":39000}}],"watch_group":39000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":39,"duration":{"second":101,"nanosecond":390000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":13,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":13000}}],"watch_group":13000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":13,"duration":{"second":101,"nanosecond":390000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":74000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":74000,"duration":{"second":103,"nanosecond":894000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":15000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":15000,"duration":{"second":103,"nanosecond":894000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":44000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":44000,"duration":{"second":103,"nanosecond":894000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":45000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":45000,"duration":{"second":103,"nanosecond":894000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":68000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":68000,"duration":{"second":103,"nanosecond":894000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":72,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":72000}}],"watch_group":72000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":72,"duration":{"second":101,"nanosecond":390000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":38,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":38000}}],"watch_group":38000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":38,"duration":{"second":103,"nanosecond":404000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":75000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":75000,"duration":{"second":103,"nanosecond":404000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":12,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":12000}}],"watch_group":12000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":12,"duration":{"second":101,"nanosecond":390000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":35000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":35000,"duration":{"second":103,"nanosecond":404000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":24000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":24000,"duration":{"second":103,"nanosecond":404000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":90000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":90000,"duration":{"second":103,"nanosecond":404000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":71,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":71000}}],"watch_group":71000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":71,"duration":{"second":101,"nanosecond":390000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":41,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":41000}}],"watch_group":41000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":41,"duration":{"second":103,"nanosecond":403000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":42000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":42000,"duration":{"second":103,"nanosecond":403000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":11,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":11000}}],"watch_group":11000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":11,"duration":{"second":103,"nanosecond":403000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":92000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":92000,"duration":{"second":103,"nanosecond":402000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":46000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":46000,"duration":{"second":103,"nanosecond":402000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":67000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":67000,"duration":{"second":103,"nanosecond":402000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":70,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":70000}}],"watch_group":70000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":70,"duration":{"second":101,"nanosecond":390000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":76000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":76000,"duration":{"second":103,"nanosecond":401000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":40,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":40000}}],"watch_group":40000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":40,"duration":{"second":101,"nanosecond":390000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":13000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":13000,"duration":{"second":103,"nanosecond":401000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":10,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":10000}}],"watch_group":10000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":10,"duration":{"second":101,"nanosecond":390000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":88000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":88000,"duration":{"second":103,"nanosecond":401000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":47000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":47000,"duration":{"second":103,"nanosecond":401000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":66000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":66000,"duration":{"second":103,"nanosecond":401000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":77,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":77000}}],"watch_group":77000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":77,"duration":{"second":103,"nanosecond":401000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":43,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":43000}}],"watch_group":43000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":43,"duration":{"second":103,"nanosecond":400000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":9,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":9000}}],"watch_group":9000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":9,"duration":{"second":103,"nanosecond":400000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":99000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":99000,"duration":{"second":103,"nanosecond":400000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":26000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":26000,"duration":{"second":103,"nanosecond":400000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":70000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":70000,"duration":{"second":103,"nanosecond":399000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":76,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":76000}}],"watch_group":76000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":76,"duration":{"second":102,"nanosecond":903000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":42,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":42000}}],"watch_group":42000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":42,"duration":{"second":102,"nanosecond":902000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":8,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":8000}}],"watch_group":8000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":8,"duration":{"second":101,"nanosecond":390000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":37000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":37000,"duration":{"second":102,"nanosecond":902000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":49000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":49000,"duration":{"second":102,"nanosecond":902000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":71000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":71000,"duration":{"second":102,"nanosecond":902000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":48000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":48000,"duration":{"second":102,"nanosecond":901000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":75,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":75000}}],"watch_group":75000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":75,"duration":{"second":102,"nanosecond":897000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":45,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":45000}}],"watch_group":45000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":45,"duration":{"second":102,"nanosecond":897000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":7,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":7000}}],"watch_group":7000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":7,"duration":{"second":102,"nanosecond":897000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":39000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":39000,"duration":{"second":102,"nanosecond":897000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":73000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":73000,"duration":{"second":102,"nanosecond":897000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":69000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":69000,"duration":{"second":102,"nanosecond":897000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":17000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":17000,"duration":{"second":102,"nanosecond":897000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":28000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":28000,"duration":{"second":102,"nanosecond":897000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":74,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":74000}}],"watch_group":74000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":74,"duration":{"second":102,"nanosecond":897000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":44,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":44000}}],"watch_group":44000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":44,"duration":{"second":102,"nanosecond":897000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":6,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":6000}}],"watch_group":6000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":6,"duration":{"second":101,"nanosecond":390000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":40000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":40000,"duration":{"second":102,"nanosecond":897000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":81,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":81000}}],"watch_group":81000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":81,"duration":{"second":102,"nanosecond":897000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":47,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":47000}}],"watch_group":47000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":47,"duration":{"second":102,"nanosecond":897000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":21,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":21000}}],"watch_group":21000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":21,"duration":{"second":101,"nanosecond":390000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":8000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":8000,"duration":{"second":102,"nanosecond":897000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":19000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":19000,"duration":{"second":102,"nanosecond":896000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":96000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":96000,"duration":{"second":102,"nanosecond":896000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":80,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":80000}}],"watch_group":80000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":80,"duration":{"second":102,"nanosecond":896000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":46,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":46000}}],"watch_group":46000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":46,"duration":{"second":102,"nanosecond":896000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":20,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":20000}}],"watch_group":20000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":20,"duration":{"second":102,"nanosecond":896000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":52000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":52000,"duration":{"second":102,"nanosecond":896000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":6000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":6000,"duration":{"second":102,"nanosecond":896000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":79,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":79000}}],"watch_group":79000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":79,"duration":{"second":102,"nanosecond":895000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":49,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":49000}}],"watch_group":49000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":49,"duration":{"second":102,"nanosecond":403000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":19,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":19000}}],"watch_group":19000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":19,"duration":{"second":102,"nanosecond":402000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":50000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":50000,"duration":{"second":102,"nanosecond":402000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":72000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":72000,"duration":{"second":102,"nanosecond":402000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":30000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":30000,"duration":{"second":102,"nanosecond":402000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":78,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":78000}}],"watch_group":78000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":78,"duration":{"second":102,"nanosecond":402000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":48,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":48000}}],"watch_group":48000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":48,"duration":{"second":102,"nanosecond":401000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":18,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":18000}}],"watch_group":18000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":18,"duration":{"second":102,"nanosecond":401000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":51000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":51000,"duration":{"second":102,"nanosecond":401000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":85,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":85000}}],"watch_group":85000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":85,"duration":{"second":102,"nanosecond":401000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":55000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":55000,"duration":{"second":102,"nanosecond":401000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":51,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":51000}}],"watch_group":51000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":51,"duration":{"second":101,"nanosecond":902000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":17,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":17000}}],"watch_group":17000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":17,"duration":{"second":101,"nanosecond":902000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":21000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":21000,"duration":{"second":101,"nanosecond":902000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":4000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":4000,"duration":{"second":101,"nanosecond":902000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":84,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":84000}}],"watch_group":84000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":84,"duration":{"second":101,"nanosecond":902000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":50,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":50000}}],"watch_group":50000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":50,"duration":{"second":101,"nanosecond":902000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":16,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":16000}}],"watch_group":16000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":16,"duration":{"second":101,"nanosecond":901000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":10000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":10000,"duration":{"second":101,"nanosecond":901000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":54000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":54000,"duration":{"second":101,"nanosecond":901000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":83,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":83000}}],"watch_group":83000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":83,"duration":{"second":101,"nanosecond":901000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":32000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":32000,"duration":{"second":101,"nanosecond":901000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":53,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":53000}}],"watch_group":53000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":53,"duration":{"second":101,"nanosecond":390000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":15,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":15000}}],"watch_group":15000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":15,"duration":{"second":101,"nanosecond":900000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":2000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":2000,"duration":{"second":101,"nanosecond":900000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":82,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":82000}}],"watch_group":82000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":82,"duration":{"second":101,"nanosecond":900000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":52,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":52000}}],"watch_group":52000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":52,"duration":{"second":101,"nanosecond":900000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":14,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":14000}}],"watch_group":14000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":14,"duration":{"second":101,"nanosecond":900000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":53000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":53000,"duration":{"second":101,"nanosecond":899000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":12000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":12000,"duration":{"second":101,"nanosecond":899000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":23000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":23000,"duration":{"second":101,"nanosecond":898000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":94000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":94000,"duration":{"second":101,"nanosecond":898000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}}],"flow-node-inventory:snapshot-gathering-status-end":{"succeeded":true,"end":"2026-04-08T01:00:10.798Z"}},{"id":"openflow:1","flow-node-inventory:port-number":54934,"flow-node-inventory:table":[{"id":62,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":28,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":2,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":224,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":181,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":147,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":106,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":61,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":27,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":1,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":223,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":182,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":148,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":105,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":60,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":30,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":0,"flow":[{"id":"71","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.71/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":71}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":880000000}},"flags":""},{"id":"11","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.11/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":11}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":879000000}},"flags":""},{"id":"70","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.70/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":70}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":880000000}},"flags":""},{"id":"10","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.10/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":10}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":879000000}},"flags":""},{"id":"60","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.60/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":60}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":880000000}},"flags":""},{"id":"13","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.13/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":13}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":879000000}},"flags":""},{"id":"12","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.12/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":12}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":879000000}},"flags":""},{"id":"80","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.80/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":80}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":880000000}},"flags":""},{"id":"93","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.93/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":93}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":879000000}},"flags":""},{"id":"92","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.92/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":92}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":879000000}},"flags":""},{"id":"82","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.82/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":82}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":880000000}},"flags":""},{"id":"91","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.91/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":91}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":879000000}},"flags":""},{"id":"81","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.81/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":81}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":880000000}},"flags":""},{"id":"90","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.90/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":90}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":879000000}},"flags":""},{"id":"9","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.9/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":9}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":879000000}},"flags":""},{"id":"84","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.84/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":84}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":879000000}},"flags":""},{"id":"97","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.97/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":97}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":879000000}},"flags":""},{"id":"66","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.66/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":66}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":880000000}},"flags":""},{"id":"79","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.79/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":79}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":880000000}},"flags":""},{"id":"54","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.54/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":54}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":878000000}},"flags":""},{"id":"45","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.45/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":45}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":878000000}},"flags":""},{"id":"83","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.83/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":83}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":879000000}},"flags":""},{"id":"96","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.96/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":96}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":879000000}},"flags":""},{"id":"65","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.65/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":65}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":880000000}},"flags":""},{"id":"78","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.78/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":78}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":880000000}},"flags":""},{"id":"20","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.20/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":20}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":879000000}},"flags":""},{"id":"55","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.55/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":55}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":878000000}},"flags":""},{"id":"46","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.46/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":46}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":878000000}},"flags":""},{"id":"7","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.7/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":7}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":879000000}},"flags":""},{"id":"86","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.86/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":86}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":880000000}},"flags":""},{"id":"95","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.95/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":95}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":879000000}},"flags":""},{"id":"68","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.68/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":68}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":880000000}},"flags":""},{"id":"77","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.77/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":77}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":880000000}},"flags":""},{"id":"30","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.30/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":30}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":879000000}},"flags":""},{"id":"56","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.56/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":56}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":878000000}},"flags":""},{"id":"43","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.43/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":43}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":878000000}},"flags":""},{"id":"8","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.8/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":8}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":879000000}},"flags":""},{"id":"85","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.85/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":85}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":880000000}},"flags":""},{"id":"94","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.94/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":94}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":879000000}},"flags":""},{"id":"67","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.67/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":67}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":880000000}},"flags":""},{"id":"76","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.76/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":76}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":880000000}},"flags":""},{"id":"31","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.31/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":31}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":879000000}},"flags":""},{"id":"57","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.57/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":57}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":878000000}},"flags":""},{"id":"44","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.44/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":44}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":878000000}},"flags":""},{"id":"5","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.5/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":5}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":879000000}},"flags":""},{"id":"88","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.88/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":88}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":880000000}},"flags":""},{"id":"62","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.62/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":62}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":880000000}},"flags":""},{"id":"75","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.75/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":75}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":880000000}},"flags":""},{"id":"32","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.32/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":32}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":879000000}},"flags":""},{"id":"23","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.23/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":23}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":879000000}},"flags":""},{"id":"50","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.50/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":50}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":878000000}},"flags":""},{"id":"41","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.41/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":41}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":878000000}},"flags":""},{"id":"#UF$TABLE*0-1","table_id":0,"priority":0,"cookie_mask":"0","idle-timeout":0,"cookie":"10","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"output-action":{"max-length":65535,"output-node-connector":"CONTROLLER"}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"28","byte-count":"2260","duration":{"second":100,"nanosecond":769000000}},"flags":"SEND_FLOW_REM"},{"id":"6","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.6/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":6}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":879000000}},"flags":""},{"id":"100","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.100/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":100}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":880000000}},"flags":""},{"id":"87","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.87/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":87}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":880000000}},"flags":""},{"id":"61","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.61/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":61}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":880000000}},"flags":""},{"id":"74","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.74/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":74}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":880000000}},"flags":""},{"id":"33","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.33/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":33}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":879000000}},"flags":""},{"id":"24","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.24/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":24}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":879000000}},"flags":""},{"id":"51","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.51/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":51}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":878000000}},"flags":""},{"id":"42","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.42/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":42}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":878000000}},"flags":""},{"id":"3","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.3/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":3}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":879000000}},"flags":""},{"id":"99","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.99/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":99}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":879000000}},"flags":""},{"id":"64","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.64/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":64}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":880000000}},"flags":""},{"id":"73","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.73/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":73}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":880000000}},"flags":""},{"id":"34","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.34/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":34}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":879000000}},"flags":""},{"id":"21","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.21/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":21}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":879000000}},"flags":""},{"id":"52","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.52/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":52}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":878000000}},"flags":""},{"id":"4","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.4/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":4}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":879000000}},"flags":""},{"id":"89","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.89/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":89}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":880000000}},"flags":""},{"id":"98","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.98/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":98}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":879000000}},"flags":""},{"id":"63","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.63/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":63}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":880000000}},"flags":""},{"id":"72","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.72/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":72}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":880000000}},"flags":""},{"id":"35","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.35/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":35}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":879000000}},"flags":""},{"id":"22","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.22/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":22}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":879000000}},"flags":""},{"id":"53","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.53/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":53}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":878000000}},"flags":""},{"id":"40","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.40/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":40}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":878000000}},"flags":""},{"id":"37","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.37/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":37}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":879000000}},"flags":""},{"id":"28","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.28/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":28}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":879000000}},"flags":""},{"id":"36","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.36/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":36}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":879000000}},"flags":""},{"id":"27","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.27/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":27}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":879000000}},"flags":""},{"id":"39","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.39/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":39}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":879000000}},"flags":""},{"id":"26","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.26/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":26}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":879000000}},"flags":""},{"id":"38","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.38/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":38}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":879000000}},"flags":""},{"id":"25","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.25/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":25}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":879000000}},"flags":""},{"id":"69","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.69/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":69}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":880000000}},"flags":""},{"id":"59","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.59/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":59}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":878000000}},"flags":""},{"id":"58","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.58/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":58}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":878000000}},"flags":""},{"id":"49","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.49/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":49}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":879000000}},"flags":""},{"id":"48","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.48/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":48}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":878000000}},"flags":""},{"id":"29","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.29/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":29}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":879000000}},"flags":""},{"id":"47","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.47/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":47}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":878000000}},"flags":""},{"id":"18","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.18/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":18}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":879000000}},"flags":""},{"id":"19","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.19/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":19}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":879000000}},"flags":""},{"id":"14","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.14/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":14}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":879000000}},"flags":""},{"id":"15","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.15/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":15}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":879000000}},"flags":""},{"id":"1","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.1/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":1}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":8,"nanosecond":926000000}},"flags":""},{"id":"16","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.16/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":16}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":879000000}},"flags":""},{"id":"2","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.2/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":2}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":879000000}},"flags":""},{"id":"17","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.17/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":17}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":879000000}},"flags":""}],"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"45","active-flows":101,"packets-matched":"38"}},{"id":226,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":179,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":149,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":104,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":59,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":29,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":225,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":180,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":150,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":103,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":66,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":32,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":220,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":185,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":151,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":102,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":65,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":31,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":253,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":219,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":186,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":152,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":101,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":64,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":34,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":252,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":222,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":183,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":153,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":100,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":63,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":33,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":251,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":221,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":184,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":154,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":99,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":54,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":20,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":250,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":216,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":189,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":155,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":129,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":114,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":53,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":19,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":249,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":215,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":190,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":156,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":130,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":113,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":52,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":22,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":248,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":218,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":187,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":157,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":112,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":51,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":21,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":247,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":217,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":188,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":158,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":128,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":111,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":58,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":24,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":246,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":212,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":193,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":159,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":110,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":57,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":23,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":245,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":211,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":194,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":160,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":109,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":56,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":26,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":244,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":214,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":191,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":161,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":108,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":55,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":25,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":243,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":213,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":192,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":162,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":107,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":77,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":43,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":17,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":239,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":198,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":164,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":138,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":119,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":89,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":78,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":44,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":18,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":240,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":197,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":163,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":137,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":120,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":90,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":75,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":45,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":15,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":241,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":196,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":166,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":136,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":121,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":87,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":76,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":46,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":16,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":242,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":195,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":165,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":135,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":122,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":88,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":81,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":47,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":13,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":235,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":202,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":168,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":134,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":115,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":85,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":82,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":48,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":14,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":236,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":201,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":167,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":133,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":116,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":86,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":79,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":49,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":11,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":237,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":200,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":170,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":132,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":117,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":83,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":80,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":50,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":12,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":238,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":199,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":169,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":131,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":118,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":84,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":69,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":35,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":9,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":231,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":206,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":172,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":146,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":127,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":97,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":70,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":36,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":10,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":232,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":205,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":171,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":145,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":98,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":67,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":37,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":7,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":233,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":204,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":174,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":144,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":95,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":68,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":38,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":8,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":234,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":203,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":173,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":143,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":96,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":73,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":39,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":5,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":227,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":210,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":176,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":142,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":123,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":93,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":74,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":40,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":6,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":228,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":209,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":175,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":141,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":124,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":94,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":71,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":41,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":3,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":229,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":208,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":178,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":140,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":125,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":91,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":72,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":42,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":4,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":230,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":207,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":177,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":139,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":126,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":92,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}}],"opendaylight-group-statistics:group-features":{"max-groups":[4294967040],"group-types-supported":["opendaylight-group-types:group-all","opendaylight-group-types:group-ff","opendaylight-group-types:group-select","opendaylight-group-types:group-indirect"],"group-capabilities-supported":["opendaylight-group-types:chaining","opendaylight-group-types:select-weight","opendaylight-group-types:select-liveness"],"actions":[67076097]},"flow-node-inventory:manufacturer":"Nicira, Inc.","flow-node-inventory:description":"s1","flow-node-inventory:hardware":"Open vSwitch","flow-node-inventory:switch-features":{"max_tables":254,"capabilities":["flow-node-inventory:flow-feature-capability-table-stats","flow-node-inventory:flow-feature-capability-group-stats","flow-node-inventory:flow-feature-capability-queue-stats","flow-node-inventory:flow-feature-capability-flow-stats","flow-node-inventory:flow-feature-capability-port-stats"],"max_buffers":0},"flow-node-inventory:snapshot-gathering-status-start":{"begin":"2026-04-08T01:00:10.785Z"},"flow-node-inventory:software":"2.17.11","node-connector":[{"id":"openflow:1:1","flow-node-inventory:port-number":1,"flow-node-inventory:hardware-address":"92:f4:e8:ea:c6:ad","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s1-eth1","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"39","received":"10"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":106,"nanosecond":113000000},"bytes":{"transmitted":"3285","received":"796"},"receive-crc-error":"0"}},{"id":"openflow:1:LOCAL","flow-node-inventory:port-number":4294967294,"flow-node-inventory:hardware-address":"e6:45:d0:5b:c7:49","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s1","flow-node-inventory:current-feature":"","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":0,"flow-node-inventory:state":{"live":false,"blocked":false,"link-down":true},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"PORT-DOWN","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"0","received":"0"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":106,"nanosecond":109000000},"bytes":{"transmitted":"0","received":"0"},"receive-crc-error":"0"}},{"id":"openflow:1:2","flow-node-inventory:port-number":2,"flow-node-inventory:hardware-address":"42:46:a8:4b:8b:86","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s1-eth2","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"33","received":"37"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":106,"nanosecond":113000000},"bytes":{"transmitted":"2757","received":"3109"},"receive-crc-error":"0"}}],"flow-node-inventory:ip-address":"10.30.170.192","flow-node-inventory:serial-number":"None","flow-node-inventory:group":[{"group-id":56,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":56000}}],"watch_group":56000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":56,"duration":{"second":102,"nanosecond":57000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":22,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":22000}}],"watch_group":22000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":22,"duration":{"second":102,"nanosecond":57000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":99,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":99000}}],"watch_group":99000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":99,"duration":{"second":102,"nanosecond":57000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":34000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":34000,"duration":{"second":104,"nanosecond":750000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":89000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":89000,"duration":{"second":104,"nanosecond":750000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":60000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":60000,"duration":{"second":104,"nanosecond":750000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":91000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":91000,"duration":{"second":104,"nanosecond":750000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":57,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":57000}}],"watch_group":57000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":57,"duration":{"second":102,"nanosecond":57000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":23,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":23000}}],"watch_group":23000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":23,"duration":{"second":101,"nanosecond":557000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":14000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":14000,"duration":{"second":104,"nanosecond":750000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":98,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":98000}}],"watch_group":98000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":98,"duration":{"second":101,"nanosecond":557000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":56000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":56000,"duration":{"second":104,"nanosecond":750000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":85000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":85000,"duration":{"second":104,"nanosecond":750000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":54,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":54000}}],"watch_group":54000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":54,"duration":{"second":101,"nanosecond":557000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":24,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":24000}}],"watch_group":24000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":24,"duration":{"second":101,"nanosecond":557000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":36000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":36000,"duration":{"second":104,"nanosecond":750000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":87000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":87000,"duration":{"second":104,"nanosecond":750000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":59000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":59000,"duration":{"second":104,"nanosecond":750000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":25000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":25000,"duration":{"second":104,"nanosecond":750000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":43000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":43000,"duration":{"second":104,"nanosecond":750000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":55,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":55000}}],"watch_group":55000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":55,"duration":{"second":101,"nanosecond":557000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":25,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":25000}}],"watch_group":25000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":25,"duration":{"second":104,"nanosecond":564000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":100,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":100000}}],"watch_group":100000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":100,"duration":{"second":101,"nanosecond":557000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":58000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":58000,"duration":{"second":104,"nanosecond":561000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":86000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":86000,"duration":{"second":104,"nanosecond":561000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":60,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":60000}}],"watch_group":60000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":60,"duration":{"second":104,"nanosecond":561000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":26,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":26000}}],"watch_group":26000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":26,"duration":{"second":101,"nanosecond":557000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":41000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":41000,"duration":{"second":104,"nanosecond":561000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":95,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":95000}}],"watch_group":95000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":95,"duration":{"second":101,"nanosecond":557000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":82000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":82000,"duration":{"second":104,"nanosecond":561000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":61,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":61000}}],"watch_group":61000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":61,"duration":{"second":101,"nanosecond":557000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":27,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":27000}}],"watch_group":27000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":27,"duration":{"second":101,"nanosecond":557000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":94,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":94000}}],"watch_group":94000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":94,"duration":{"second":101,"nanosecond":557000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":98000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":98000,"duration":{"second":104,"nanosecond":561000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":27000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":27000,"duration":{"second":104,"nanosecond":561000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":57000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":57000,"duration":{"second":104,"nanosecond":561000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":16000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":16000,"duration":{"second":104,"nanosecond":561000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":83000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":83000,"duration":{"second":104,"nanosecond":561000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":58,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":58000}}],"watch_group":58000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":58,"duration":{"second":104,"nanosecond":58000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":28,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":28000}}],"watch_group":28000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":28,"duration":{"second":101,"nanosecond":557000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":97,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":97000}}],"watch_group":97000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":97,"duration":{"second":101,"nanosecond":557000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":100000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":100000,"duration":{"second":104,"nanosecond":58000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":59,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":59000}}],"watch_group":59000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":59,"duration":{"second":104,"nanosecond":58000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":38000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":38000,"duration":{"second":104,"nanosecond":58000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":29,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":29000}}],"watch_group":29000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":29,"duration":{"second":101,"nanosecond":557000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":96,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":96000}}],"watch_group":96000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":96,"duration":{"second":101,"nanosecond":557000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":84000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":84000,"duration":{"second":104,"nanosecond":58000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":64,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":64000}}],"watch_group":64000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":64,"duration":{"second":101,"nanosecond":557000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":30,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":30000}}],"watch_group":30000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":30,"duration":{"second":101,"nanosecond":557000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":4,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":4000}}],"watch_group":4000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":4,"duration":{"second":101,"nanosecond":557000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":91,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":91000}}],"watch_group":91000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":91,"duration":{"second":104,"nanosecond":58000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":7000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":7000,"duration":{"second":104,"nanosecond":58000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":29000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":29000,"duration":{"second":104,"nanosecond":58000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":65,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":65000}}],"watch_group":65000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":65,"duration":{"second":101,"nanosecond":557000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":31,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":31000}}],"watch_group":31000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":31,"duration":{"second":101,"nanosecond":557000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":5,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":5000}}],"watch_group":5000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":5,"duration":{"second":101,"nanosecond":557000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":90,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":90000}}],"watch_group":90000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":90,"duration":{"second":101,"nanosecond":557000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":18000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":18000,"duration":{"second":104,"nanosecond":58000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":62,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":62000}}],"watch_group":62000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":62,"duration":{"second":101,"nanosecond":557000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":65000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":65000,"duration":{"second":104,"nanosecond":58000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":32,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":32000}}],"watch_group":32000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":32,"duration":{"second":101,"nanosecond":557000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":2,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":2000}}],"watch_group":2000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":2,"duration":{"second":101,"nanosecond":557000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":93,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":93000}}],"watch_group":93000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":93,"duration":{"second":101,"nanosecond":557000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":64000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":64000,"duration":{"second":104,"nanosecond":58000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":63,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":63000}}],"watch_group":63000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":63,"duration":{"second":101,"nanosecond":557000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":33,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":33000}}],"watch_group":33000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":33,"duration":{"second":101,"nanosecond":557000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":3,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":3000}}],"watch_group":3000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":3,"duration":{"second":101,"nanosecond":552000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":80000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":80000,"duration":{"second":104,"nanosecond":58000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":9000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":9000,"duration":{"second":104,"nanosecond":58000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":92,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":92000}}],"watch_group":92000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":92,"duration":{"second":101,"nanosecond":552000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":5000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":5000,"duration":{"second":104,"nanosecond":58000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":20000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":20000,"duration":{"second":104,"nanosecond":58000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":81000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":81000,"duration":{"second":104,"nanosecond":58000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":97000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":97000,"duration":{"second":104,"nanosecond":58000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":31000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":31000,"duration":{"second":104,"nanosecond":58000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":68,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":68000}}],"watch_group":68000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":68,"duration":{"second":101,"nanosecond":552000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":11000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":11000,"duration":{"second":104,"nanosecond":58000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":34,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":34000}}],"watch_group":34000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":34,"duration":{"second":104,"nanosecond":58000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":78000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":78000,"duration":{"second":104,"nanosecond":58000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":87,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":87000}}],"watch_group":87000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":87,"duration":{"second":104,"nanosecond":58000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":93000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":93000,"duration":{"second":104,"nanosecond":58000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":63000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":63000,"duration":{"second":104,"nanosecond":58000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":69,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":69000}}],"watch_group":69000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":69,"duration":{"second":101,"nanosecond":552000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":35,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":35000}}],"watch_group":35000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":35,"duration":{"second":101,"nanosecond":552000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":1,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":1000}}],"watch_group":1000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":1,"duration":{"second":9,"nanosecond":143000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":33000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":33000,"duration":{"second":104,"nanosecond":58000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":79000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":79000,"duration":{"second":104,"nanosecond":56000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":86,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":86000}}],"watch_group":86000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":86,"duration":{"second":104,"nanosecond":56000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":62000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":62000,"duration":{"second":104,"nanosecond":56000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":66,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":66000}}],"watch_group":66000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":66,"duration":{"second":101,"nanosecond":552000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":77000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":77000,"duration":{"second":104,"nanosecond":56000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":36,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":36000}}],"watch_group":36000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":36,"duration":{"second":104,"nanosecond":56000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":89,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":89000}}],"watch_group":89000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":89,"duration":{"second":104,"nanosecond":55000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":22000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":22000,"duration":{"second":104,"nanosecond":55000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":95000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":95000,"duration":{"second":104,"nanosecond":55000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":67,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":67000}}],"watch_group":67000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":67,"duration":{"second":101,"nanosecond":552000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":37,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":37000}}],"watch_group":37000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":37,"duration":{"second":101,"nanosecond":552000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":1000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":1000,"duration":{"second":9,"nanosecond":356000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":88,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":88000}}],"watch_group":88000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":88,"duration":{"second":101,"nanosecond":552000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":61000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":61000,"duration":{"second":104,"nanosecond":55000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":3000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":3000,"duration":{"second":104,"nanosecond":54000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":73,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":73000}}],"watch_group":73000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":73,"duration":{"second":101,"nanosecond":552000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":39,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":39000}}],"watch_group":39000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":39,"duration":{"second":101,"nanosecond":552000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":13,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":13000}}],"watch_group":13000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":13,"duration":{"second":101,"nanosecond":552000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":74000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":74000,"duration":{"second":104,"nanosecond":54000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":15000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":15000,"duration":{"second":104,"nanosecond":54000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":44000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":44000,"duration":{"second":104,"nanosecond":54000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":45000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":45000,"duration":{"second":104,"nanosecond":54000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":68000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":68000,"duration":{"second":104,"nanosecond":54000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":72,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":72000}}],"watch_group":72000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":72,"duration":{"second":101,"nanosecond":552000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":38,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":38000}}],"watch_group":38000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":38,"duration":{"second":103,"nanosecond":566000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":75000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":75000,"duration":{"second":103,"nanosecond":566000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":12,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":12000}}],"watch_group":12000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":12,"duration":{"second":101,"nanosecond":552000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":35000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":35000,"duration":{"second":103,"nanosecond":566000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":24000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":24000,"duration":{"second":103,"nanosecond":565000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":90000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":90000,"duration":{"second":103,"nanosecond":565000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":71,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":71000}}],"watch_group":71000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":71,"duration":{"second":101,"nanosecond":552000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":41,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":41000}}],"watch_group":41000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":41,"duration":{"second":103,"nanosecond":565000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":42000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":42000,"duration":{"second":103,"nanosecond":565000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":11,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":11000}}],"watch_group":11000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":11,"duration":{"second":103,"nanosecond":564000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":92000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":92000,"duration":{"second":103,"nanosecond":564000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":46000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":46000,"duration":{"second":103,"nanosecond":564000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":67000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":67000,"duration":{"second":103,"nanosecond":564000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":70,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":70000}}],"watch_group":70000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":70,"duration":{"second":101,"nanosecond":552000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":76000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":76000,"duration":{"second":103,"nanosecond":563000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":40,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":40000}}],"watch_group":40000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":40,"duration":{"second":101,"nanosecond":552000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":13000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":13000,"duration":{"second":103,"nanosecond":560000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":10,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":10000}}],"watch_group":10000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":10,"duration":{"second":101,"nanosecond":552000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":88000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":88000,"duration":{"second":103,"nanosecond":560000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":47000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":47000,"duration":{"second":103,"nanosecond":560000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":66000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":66000,"duration":{"second":103,"nanosecond":559000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":77,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":77000}}],"watch_group":77000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":77,"duration":{"second":103,"nanosecond":559000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":43,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":43000}}],"watch_group":43000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":43,"duration":{"second":103,"nanosecond":559000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":9,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":9000}}],"watch_group":9000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":9,"duration":{"second":103,"nanosecond":559000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":99000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":99000,"duration":{"second":103,"nanosecond":559000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":26000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":26000,"duration":{"second":103,"nanosecond":559000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":70000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":70000,"duration":{"second":103,"nanosecond":559000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":76,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":76000}}],"watch_group":76000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":76,"duration":{"second":103,"nanosecond":65000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":42,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":42000}}],"watch_group":42000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":42,"duration":{"second":103,"nanosecond":63000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":8,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":8000}}],"watch_group":8000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":8,"duration":{"second":101,"nanosecond":552000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":37000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":37000,"duration":{"second":103,"nanosecond":63000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":49000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":49000,"duration":{"second":103,"nanosecond":63000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":71000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":71000,"duration":{"second":103,"nanosecond":63000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":48000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":48000,"duration":{"second":103,"nanosecond":63000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":75,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":75000}}],"watch_group":75000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":75,"duration":{"second":103,"nanosecond":63000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":45,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":45000}}],"watch_group":45000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":45,"duration":{"second":103,"nanosecond":60000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":7,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":7000}}],"watch_group":7000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":7,"duration":{"second":103,"nanosecond":60000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":39000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":39000,"duration":{"second":103,"nanosecond":60000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":73000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":73000,"duration":{"second":103,"nanosecond":59000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":69000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":69000,"duration":{"second":103,"nanosecond":59000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":17000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":17000,"duration":{"second":103,"nanosecond":59000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":28000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":28000,"duration":{"second":103,"nanosecond":59000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":74,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":74000}}],"watch_group":74000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":74,"duration":{"second":103,"nanosecond":59000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":44,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":44000}}],"watch_group":44000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":44,"duration":{"second":103,"nanosecond":59000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":6,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":6000}}],"watch_group":6000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":6,"duration":{"second":101,"nanosecond":552000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":40000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":40000,"duration":{"second":103,"nanosecond":59000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":81,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":81000}}],"watch_group":81000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":81,"duration":{"second":103,"nanosecond":59000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":47,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":47000}}],"watch_group":47000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":47,"duration":{"second":103,"nanosecond":59000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":21,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":21000}}],"watch_group":21000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":21,"duration":{"second":101,"nanosecond":552000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":8000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":8000,"duration":{"second":103,"nanosecond":59000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":19000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":19000,"duration":{"second":103,"nanosecond":59000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":96000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":96000,"duration":{"second":103,"nanosecond":59000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":80,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":80000}}],"watch_group":80000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":80,"duration":{"second":103,"nanosecond":57000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":46,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":46000}}],"watch_group":46000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":46,"duration":{"second":103,"nanosecond":57000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":20,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":20000}}],"watch_group":20000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":20,"duration":{"second":103,"nanosecond":57000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":52000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":52000,"duration":{"second":103,"nanosecond":57000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":6000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":6000,"duration":{"second":103,"nanosecond":57000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":79,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":79000}}],"watch_group":79000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":79,"duration":{"second":103,"nanosecond":57000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":49,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":49000}}],"watch_group":49000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":49,"duration":{"second":102,"nanosecond":564000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":19,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":19000}}],"watch_group":19000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":19,"duration":{"second":102,"nanosecond":564000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":50000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":50000,"duration":{"second":102,"nanosecond":564000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":72000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":72000,"duration":{"second":102,"nanosecond":564000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":30000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":30000,"duration":{"second":102,"nanosecond":563000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":78,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":78000}}],"watch_group":78000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":78,"duration":{"second":102,"nanosecond":563000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":48,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":48000}}],"watch_group":48000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":48,"duration":{"second":102,"nanosecond":562000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":18,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":18000}}],"watch_group":18000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":18,"duration":{"second":102,"nanosecond":562000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":51000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":51000,"duration":{"second":102,"nanosecond":562000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":85,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":85000}}],"watch_group":85000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":85,"duration":{"second":102,"nanosecond":562000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":55000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":55000,"duration":{"second":102,"nanosecond":561000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":51,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":51000}}],"watch_group":51000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":51,"duration":{"second":102,"nanosecond":57000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":17,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":17000}}],"watch_group":17000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":17,"duration":{"second":102,"nanosecond":57000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":21000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":21000,"duration":{"second":102,"nanosecond":57000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":4000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":4000,"duration":{"second":102,"nanosecond":57000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":84,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":84000}}],"watch_group":84000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":84,"duration":{"second":102,"nanosecond":57000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":50,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":50000}}],"watch_group":50000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":50,"duration":{"second":102,"nanosecond":57000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":16,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":16000}}],"watch_group":16000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":16,"duration":{"second":102,"nanosecond":57000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":10000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":10000,"duration":{"second":102,"nanosecond":57000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":54000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":54000,"duration":{"second":102,"nanosecond":57000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":83,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":83000}}],"watch_group":83000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":83,"duration":{"second":102,"nanosecond":57000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":32000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":32000,"duration":{"second":102,"nanosecond":57000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":53,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":53000}}],"watch_group":53000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":53,"duration":{"second":101,"nanosecond":552000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":15,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":15000}}],"watch_group":15000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":15,"duration":{"second":102,"nanosecond":57000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":2000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":2000,"duration":{"second":102,"nanosecond":57000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":82,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":82000}}],"watch_group":82000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":82,"duration":{"second":102,"nanosecond":57000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":52,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":52000}}],"watch_group":52000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":52,"duration":{"second":102,"nanosecond":57000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":14,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":14000}}],"watch_group":14000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":14,"duration":{"second":102,"nanosecond":57000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":53000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":53000,"duration":{"second":102,"nanosecond":57000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":12000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":12000,"duration":{"second":102,"nanosecond":57000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":23000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":23000,"duration":{"second":102,"nanosecond":57000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":94000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":94000,"duration":{"second":102,"nanosecond":57000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}}],"flow-node-inventory:snapshot-gathering-status-end":{"succeeded":true,"end":"2026-04-08T01:00:10.823Z"}},{"id":"openflow:2","flow-node-inventory:port-number":54944,"flow-node-inventory:table":[{"id":62,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":28,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":2,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":224,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":181,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":147,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":106,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":61,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":27,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":1,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":223,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":182,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":148,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":105,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":60,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":30,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":0,"flow":[{"id":"71","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.71/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":71}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":920000000}},"flags":""},{"id":"11","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.11/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":11}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":919000000}},"flags":""},{"id":"70","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.70/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":70}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":920000000}},"flags":""},{"id":"10","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.10/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":10}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":919000000}},"flags":""},{"id":"60","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.60/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":60}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":920000000}},"flags":""},{"id":"13","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.13/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":13}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":919000000}},"flags":""},{"id":"12","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.12/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":12}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":919000000}},"flags":""},{"id":"80","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.80/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":80}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":920000000}},"flags":""},{"id":"93","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.93/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":93}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":919000000}},"flags":""},{"id":"92","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.92/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":92}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":919000000}},"flags":""},{"id":"82","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.82/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":82}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":920000000}},"flags":""},{"id":"91","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.91/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":91}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":919000000}},"flags":""},{"id":"81","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.81/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":81}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":920000000}},"flags":""},{"id":"90","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.90/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":90}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":919000000}},"flags":""},{"id":"9","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.9/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":9}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":920000000}},"flags":""},{"id":"84","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.84/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":84}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":920000000}},"flags":""},{"id":"97","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.97/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":97}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":919000000}},"flags":""},{"id":"66","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.66/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":66}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":920000000}},"flags":""},{"id":"79","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.79/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":79}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":920000000}},"flags":""},{"id":"54","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.54/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":54}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":920000000}},"flags":""},{"id":"45","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.45/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":45}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":920000000}},"flags":""},{"id":"83","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.83/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":83}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":920000000}},"flags":""},{"id":"96","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.96/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":96}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":919000000}},"flags":""},{"id":"65","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.65/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":65}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":920000000}},"flags":""},{"id":"78","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.78/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":78}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":920000000}},"flags":""},{"id":"20","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.20/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":20}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":920000000}},"flags":""},{"id":"55","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.55/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":55}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":920000000}},"flags":""},{"id":"46","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.46/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":46}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":920000000}},"flags":""},{"id":"7","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.7/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":7}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":920000000}},"flags":""},{"id":"86","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.86/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":86}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":920000000}},"flags":""},{"id":"95","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.95/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":95}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":919000000}},"flags":""},{"id":"68","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.68/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":68}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":920000000}},"flags":""},{"id":"77","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.77/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":77}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":920000000}},"flags":""},{"id":"30","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.30/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":30}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":920000000}},"flags":""},{"id":"56","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.56/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":56}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":920000000}},"flags":""},{"id":"43","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.43/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":43}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":920000000}},"flags":""},{"id":"8","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.8/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":8}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":920000000}},"flags":""},{"id":"85","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.85/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":85}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":920000000}},"flags":""},{"id":"94","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.94/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":94}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":919000000}},"flags":""},{"id":"67","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.67/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":67}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":920000000}},"flags":""},{"id":"76","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.76/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":76}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":920000000}},"flags":""},{"id":"31","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.31/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":31}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":920000000}},"flags":""},{"id":"57","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.57/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":57}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":920000000}},"flags":""},{"id":"44","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.44/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":44}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":920000000}},"flags":""},{"id":"5","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.5/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":5}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":920000000}},"flags":""},{"id":"88","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.88/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":88}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":920000000}},"flags":""},{"id":"62","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.62/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":62}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":920000000}},"flags":""},{"id":"75","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.75/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":75}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":920000000}},"flags":""},{"id":"32","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.32/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":32}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":920000000}},"flags":""},{"id":"23","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.23/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":23}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":920000000}},"flags":""},{"id":"50","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.50/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":50}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":919000000}},"flags":""},{"id":"41","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.41/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":41}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":920000000}},"flags":""},{"id":"6","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.6/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":6}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":920000000}},"flags":""},{"id":"100","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.100/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":100}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":920000000}},"flags":""},{"id":"87","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.87/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":87}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":920000000}},"flags":""},{"id":"61","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.61/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":61}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":920000000}},"flags":""},{"id":"74","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.74/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":74}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":920000000}},"flags":""},{"id":"33","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.33/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":33}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":920000000}},"flags":""},{"id":"24","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.24/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":24}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":920000000}},"flags":""},{"id":"51","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.51/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":51}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":919000000}},"flags":""},{"id":"42","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.42/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":42}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":920000000}},"flags":""},{"id":"3","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.3/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":3}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":920000000}},"flags":""},{"id":"99","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.99/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":99}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":919000000}},"flags":""},{"id":"64","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.64/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":64}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":920000000}},"flags":""},{"id":"73","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.73/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":73}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":920000000}},"flags":""},{"id":"34","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.34/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":34}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":920000000}},"flags":""},{"id":"21","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.21/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":21}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":920000000}},"flags":""},{"id":"52","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.52/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":52}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":919000000}},"flags":""},{"id":"4","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.4/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":4}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":920000000}},"flags":""},{"id":"89","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.89/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":89}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":920000000}},"flags":""},{"id":"98","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.98/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":98}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":919000000}},"flags":""},{"id":"63","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.63/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":63}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":920000000}},"flags":""},{"id":"72","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.72/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":72}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":920000000}},"flags":""},{"id":"35","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.35/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":35}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":920000000}},"flags":""},{"id":"22","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.22/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":22}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":920000000}},"flags":""},{"id":"53","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.53/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":53}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":920000000}},"flags":""},{"id":"40","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.40/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":40}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":920000000}},"flags":""},{"id":"#UF$TABLE*0-2","table_id":0,"priority":0,"cookie_mask":"0","idle-timeout":0,"cookie":"10","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"output-action":{"max-length":65535,"output-node-connector":"CONTROLLER"}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"51","byte-count":"4170","duration":{"second":100,"nanosecond":799000000}},"flags":"SEND_FLOW_REM"},{"id":"37","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.37/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":37}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":920000000}},"flags":""},{"id":"28","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.28/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":28}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":920000000}},"flags":""},{"id":"36","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.36/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":36}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":920000000}},"flags":""},{"id":"27","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.27/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":27}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":920000000}},"flags":""},{"id":"39","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.39/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":39}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":920000000}},"flags":""},{"id":"26","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.26/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":26}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":920000000}},"flags":""},{"id":"38","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.38/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":38}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":920000000}},"flags":""},{"id":"25","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.25/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":25}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":920000000}},"flags":""},{"id":"69","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.69/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":69}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":920000000}},"flags":""},{"id":"59","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.59/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":59}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":920000000}},"flags":""},{"id":"58","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.58/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":58}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":920000000}},"flags":""},{"id":"49","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.49/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":49}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":920000000}},"flags":""},{"id":"48","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.48/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":48}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":920000000}},"flags":""},{"id":"29","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.29/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":29}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":919000000}},"flags":""},{"id":"47","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.47/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":47}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":920000000}},"flags":""},{"id":"18","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.18/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":18}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":920000000}},"flags":""},{"id":"19","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.19/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":19}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":920000000}},"flags":""},{"id":"14","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.14/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":14}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":920000000}},"flags":""},{"id":"15","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.15/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":15}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":920000000}},"flags":""},{"id":"1","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.1/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":1}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":8,"nanosecond":313000000}},"flags":""},{"id":"16","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.16/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":16}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":920000000}},"flags":""},{"id":"2","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.2/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":2}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":920000000}},"flags":""},{"id":"17","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.17/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":17}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":100,"nanosecond":920000000}},"flags":""}],"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"73","active-flows":101,"packets-matched":"61"}},{"id":226,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":179,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":149,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":104,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":59,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":29,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":225,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":180,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":150,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":103,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":66,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":32,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":220,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":185,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":151,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":102,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":65,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":31,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":253,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":219,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":186,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":152,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":101,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":64,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":34,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":252,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":222,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":183,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":153,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":100,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":63,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":33,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":251,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":221,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":184,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":154,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":99,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":54,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":20,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":250,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":216,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":189,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":155,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":129,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":114,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":53,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":19,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":249,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":215,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":190,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":156,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":130,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":113,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":52,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":22,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":248,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":218,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":187,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":157,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":112,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":51,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":21,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":247,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":217,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":188,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":158,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":128,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":111,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":58,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":24,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":246,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":212,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":193,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":159,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":110,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":57,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":23,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":245,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":211,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":194,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":160,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":109,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":56,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":26,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":244,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":214,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":191,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":161,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":108,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":55,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":25,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":243,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":213,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":192,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":162,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":107,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":77,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":43,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":17,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":239,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":198,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":164,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":138,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":119,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":89,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":78,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":44,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":18,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":240,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":197,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":163,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":137,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":120,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":90,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":75,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":45,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":15,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":241,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":196,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":166,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":136,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":121,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":87,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":76,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":46,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":16,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":242,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":195,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":165,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":135,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":122,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":88,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":81,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":47,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":13,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":235,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":202,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":168,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":134,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":115,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":85,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":82,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":48,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":14,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":236,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":201,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":167,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":133,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":116,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":86,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":79,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":49,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":11,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":237,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":200,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":170,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":132,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":117,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":83,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":80,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":50,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":12,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":238,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":199,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":169,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":131,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":118,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":84,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":69,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":35,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":9,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":231,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":206,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":172,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":146,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":127,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":97,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":70,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":36,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":10,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":232,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":205,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":171,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":145,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":98,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":67,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":37,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":7,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":233,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":204,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":174,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":144,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":95,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":68,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":38,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":8,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":234,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":203,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":173,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":143,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":96,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":73,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":39,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":5,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":227,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":210,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":176,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":142,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":123,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":93,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":74,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":40,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":6,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":228,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":209,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":175,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":141,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":124,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":94,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":71,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":41,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":3,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":229,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":208,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":178,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":140,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":125,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":91,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":72,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":42,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":4,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":230,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":207,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":177,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":139,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":126,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":92,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}}],"opendaylight-group-statistics:group-features":{"max-groups":[4294967040],"group-types-supported":["opendaylight-group-types:group-all","opendaylight-group-types:group-ff","opendaylight-group-types:group-select","opendaylight-group-types:group-indirect"],"group-capabilities-supported":["opendaylight-group-types:chaining","opendaylight-group-types:select-weight","opendaylight-group-types:select-liveness"],"actions":[67076097]},"flow-node-inventory:manufacturer":"Nicira, Inc.","flow-node-inventory:description":"s2","flow-node-inventory:hardware":"Open vSwitch","flow-node-inventory:switch-features":{"max_tables":254,"capabilities":["flow-node-inventory:flow-feature-capability-table-stats","flow-node-inventory:flow-feature-capability-group-stats","flow-node-inventory:flow-feature-capability-queue-stats","flow-node-inventory:flow-feature-capability-flow-stats","flow-node-inventory:flow-feature-capability-port-stats"],"max_buffers":0},"flow-node-inventory:snapshot-gathering-status-start":{"begin":"2026-04-08T01:00:10.794Z"},"flow-node-inventory:software":"2.17.11","node-connector":[{"id":"openflow:2:3","flow-node-inventory:port-number":3,"flow-node-inventory:hardware-address":"da:7c:fc:7d:24:d4","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s2-eth3","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"37","received":"33"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":106,"nanosecond":118000000},"bytes":{"transmitted":"3109","received":"2757"},"receive-crc-error":"0"}},{"id":"openflow:2:LOCAL","flow-node-inventory:port-number":4294967294,"flow-node-inventory:hardware-address":"ee:be:cf:9b:06:44","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s2","flow-node-inventory:current-feature":"","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":0,"flow-node-inventory:state":{"live":false,"blocked":false,"link-down":true},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"PORT-DOWN","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"0","received":"0"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":106,"nanosecond":113000000},"bytes":{"transmitted":"0","received":"0"},"receive-crc-error":"0"}},{"id":"openflow:2:2","flow-node-inventory:port-number":2,"flow-node-inventory:hardware-address":"76:f5:91:ad:d8:c6","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s2-eth2","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"37","received":"33"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":106,"nanosecond":118000000},"bytes":{"transmitted":"3109","received":"2757"},"receive-crc-error":"0"}},{"id":"openflow:2:1","flow-node-inventory:port-number":1,"flow-node-inventory:hardware-address":"96:61:91:36:76:0b","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s2-eth1","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"39","received":"10"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":106,"nanosecond":118000000},"bytes":{"transmitted":"3285","received":"796"},"receive-crc-error":"0"}}],"flow-node-inventory:ip-address":"10.30.170.192","flow-node-inventory:serial-number":"None","flow-node-inventory:group":[{"group-id":56,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":56000}}],"watch_group":56000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":56,"duration":{"second":102,"nanosecond":78000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":22,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":22000}}],"watch_group":22000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":22,"duration":{"second":102,"nanosecond":79000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":99,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":99000}}],"watch_group":99000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":99,"duration":{"second":102,"nanosecond":79000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":34000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":34000,"duration":{"second":104,"nanosecond":772000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":89000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":89000,"duration":{"second":104,"nanosecond":772000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":60000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":60000,"duration":{"second":104,"nanosecond":771000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":91000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":91000,"duration":{"second":104,"nanosecond":771000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":57,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":57000}}],"watch_group":57000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":57,"duration":{"second":102,"nanosecond":79000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":23,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":23000}}],"watch_group":23000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":23,"duration":{"second":101,"nanosecond":581000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":14000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":14000,"duration":{"second":104,"nanosecond":772000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":98,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":98000}}],"watch_group":98000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":98,"duration":{"second":101,"nanosecond":582000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":56000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":56000,"duration":{"second":104,"nanosecond":771000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":85000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":85000,"duration":{"second":104,"nanosecond":771000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":54,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":54000}}],"watch_group":54000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":54,"duration":{"second":101,"nanosecond":581000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":24,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":24000}}],"watch_group":24000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":24,"duration":{"second":101,"nanosecond":582000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":36000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":36000,"duration":{"second":104,"nanosecond":771000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":87000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":87000,"duration":{"second":104,"nanosecond":772000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":59000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":59000,"duration":{"second":104,"nanosecond":771000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":25000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":25000,"duration":{"second":104,"nanosecond":771000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":43000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":43000,"duration":{"second":104,"nanosecond":772000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":55,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":55000}}],"watch_group":55000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":55,"duration":{"second":101,"nanosecond":581000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":25,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":25000}}],"watch_group":25000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":25,"duration":{"second":104,"nanosecond":587000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":100,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":100000}}],"watch_group":100000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":100,"duration":{"second":101,"nanosecond":581000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":58000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":58000,"duration":{"second":104,"nanosecond":587000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":86000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":86000,"duration":{"second":104,"nanosecond":587000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":60,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":60000}}],"watch_group":60000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":60,"duration":{"second":104,"nanosecond":586000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":26,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":26000}}],"watch_group":26000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":26,"duration":{"second":101,"nanosecond":582000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":41000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":41000,"duration":{"second":104,"nanosecond":586000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":95,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":95000}}],"watch_group":95000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":95,"duration":{"second":101,"nanosecond":581000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":82000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":82000,"duration":{"second":104,"nanosecond":587000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":61,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":61000}}],"watch_group":61000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":61,"duration":{"second":101,"nanosecond":582000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":27,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":27000}}],"watch_group":27000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":27,"duration":{"second":101,"nanosecond":581000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":94,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":94000}}],"watch_group":94000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":94,"duration":{"second":101,"nanosecond":581000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":98000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":98000,"duration":{"second":104,"nanosecond":586000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":27000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":27000,"duration":{"second":104,"nanosecond":586000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":57000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":57000,"duration":{"second":104,"nanosecond":586000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":16000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":16000,"duration":{"second":104,"nanosecond":586000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":83000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":83000,"duration":{"second":104,"nanosecond":586000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":58,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":58000}}],"watch_group":58000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":58,"duration":{"second":104,"nanosecond":86000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":28,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":28000}}],"watch_group":28000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":28,"duration":{"second":101,"nanosecond":581000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":97,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":97000}}],"watch_group":97000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":97,"duration":{"second":101,"nanosecond":581000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":100000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":100000,"duration":{"second":104,"nanosecond":86000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":59,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":59000}}],"watch_group":59000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":59,"duration":{"second":104,"nanosecond":86000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":38000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":38000,"duration":{"second":104,"nanosecond":86000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":29,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":29000}}],"watch_group":29000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":29,"duration":{"second":101,"nanosecond":581000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":96,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":96000}}],"watch_group":96000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":96,"duration":{"second":101,"nanosecond":581000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":84000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":84000,"duration":{"second":104,"nanosecond":86000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":64,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":64000}}],"watch_group":64000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":64,"duration":{"second":101,"nanosecond":581000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":30,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":30000}}],"watch_group":30000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":30,"duration":{"second":101,"nanosecond":581000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":4,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":4000}}],"watch_group":4000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":4,"duration":{"second":101,"nanosecond":577000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":91,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":91000}}],"watch_group":91000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":91,"duration":{"second":104,"nanosecond":86000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":7000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":7000,"duration":{"second":104,"nanosecond":86000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":29000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":29000,"duration":{"second":104,"nanosecond":85000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":65,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":65000}}],"watch_group":65000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":65,"duration":{"second":101,"nanosecond":577000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":31,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":31000}}],"watch_group":31000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":31,"duration":{"second":101,"nanosecond":578000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":5,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":5000}}],"watch_group":5000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":5,"duration":{"second":101,"nanosecond":578000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":90,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":90000}}],"watch_group":90000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":90,"duration":{"second":101,"nanosecond":578000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":18000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":18000,"duration":{"second":104,"nanosecond":85000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":62,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":62000}}],"watch_group":62000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":62,"duration":{"second":101,"nanosecond":577000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":65000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":65000,"duration":{"second":104,"nanosecond":85000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":32,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":32000}}],"watch_group":32000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":32,"duration":{"second":101,"nanosecond":578000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":2,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":2000}}],"watch_group":2000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":2,"duration":{"second":101,"nanosecond":577000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":93,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":93000}}],"watch_group":93000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":93,"duration":{"second":101,"nanosecond":577000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":64000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":64000,"duration":{"second":104,"nanosecond":85000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":63,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":63000}}],"watch_group":63000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":63,"duration":{"second":101,"nanosecond":578000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":33,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":33000}}],"watch_group":33000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":33,"duration":{"second":101,"nanosecond":577000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":3,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":3000}}],"watch_group":3000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":3,"duration":{"second":101,"nanosecond":578000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":80000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":80000,"duration":{"second":104,"nanosecond":84000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":9000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":9000,"duration":{"second":104,"nanosecond":85000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":92,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":92000}}],"watch_group":92000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":92,"duration":{"second":101,"nanosecond":578000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":5000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":5000,"duration":{"second":104,"nanosecond":81000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":20000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":20000,"duration":{"second":104,"nanosecond":80000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":81000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":81000,"duration":{"second":104,"nanosecond":80000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":97000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":97000,"duration":{"second":104,"nanosecond":80000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":31000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":31000,"duration":{"second":104,"nanosecond":80000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":68,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":68000}}],"watch_group":68000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":68,"duration":{"second":101,"nanosecond":577000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":11000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":11000,"duration":{"second":104,"nanosecond":80000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":34,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":34000}}],"watch_group":34000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":34,"duration":{"second":104,"nanosecond":81000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":78000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":78000,"duration":{"second":104,"nanosecond":81000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":87,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":87000}}],"watch_group":87000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":87,"duration":{"second":104,"nanosecond":80000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":93000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":93000,"duration":{"second":104,"nanosecond":81000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":63000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":63000,"duration":{"second":104,"nanosecond":80000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":69,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":69000}}],"watch_group":69000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":69,"duration":{"second":101,"nanosecond":578000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":35,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":35000}}],"watch_group":35000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":35,"duration":{"second":101,"nanosecond":577000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":1,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":1000}}],"watch_group":1000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":1,"duration":{"second":8,"nanosecond":519000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":33000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":33000,"duration":{"second":104,"nanosecond":80000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":79000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":79000,"duration":{"second":104,"nanosecond":80000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":86,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":86000}}],"watch_group":86000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":86,"duration":{"second":104,"nanosecond":81000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":62000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":62000,"duration":{"second":104,"nanosecond":81000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":66,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":66000}}],"watch_group":66000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":66,"duration":{"second":101,"nanosecond":578000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":77000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":77000,"duration":{"second":104,"nanosecond":81000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":36,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":36000}}],"watch_group":36000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":36,"duration":{"second":104,"nanosecond":80000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":89,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":89000}}],"watch_group":89000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":89,"duration":{"second":104,"nanosecond":81000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":22000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":22000,"duration":{"second":104,"nanosecond":79000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":95000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":95000,"duration":{"second":104,"nanosecond":78000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":67,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":67000}}],"watch_group":67000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":67,"duration":{"second":101,"nanosecond":577000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":37,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":37000}}],"watch_group":37000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":37,"duration":{"second":101,"nanosecond":577000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":1000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":1000,"duration":{"second":8,"nanosecond":731000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":88,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":88000}}],"watch_group":88000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":88,"duration":{"second":101,"nanosecond":575000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":61000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":61000,"duration":{"second":104,"nanosecond":76000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":3000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":3000,"duration":{"second":104,"nanosecond":77000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":73,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":73000}}],"watch_group":73000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":73,"duration":{"second":101,"nanosecond":575000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":39,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":39000}}],"watch_group":39000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":39,"duration":{"second":101,"nanosecond":575000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":13,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":13000}}],"watch_group":13000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":13,"duration":{"second":101,"nanosecond":576000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":74000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":74000,"duration":{"second":104,"nanosecond":77000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":15000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":15000,"duration":{"second":104,"nanosecond":76000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":44000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":44000,"duration":{"second":104,"nanosecond":76000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":45000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":45000,"duration":{"second":104,"nanosecond":76000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":68000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":68000,"duration":{"second":104,"nanosecond":77000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":72,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":72000}}],"watch_group":72000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":72,"duration":{"second":101,"nanosecond":575000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":38,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":38000}}],"watch_group":38000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":38,"duration":{"second":103,"nanosecond":581000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":75000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":75000,"duration":{"second":103,"nanosecond":580000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":12,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":12000}}],"watch_group":12000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":12,"duration":{"second":101,"nanosecond":575000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":35000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":35000,"duration":{"second":103,"nanosecond":580000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":24000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":24000,"duration":{"second":103,"nanosecond":581000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":90000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":90000,"duration":{"second":103,"nanosecond":580000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":71,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":71000}}],"watch_group":71000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":71,"duration":{"second":101,"nanosecond":575000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":41,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":41000}}],"watch_group":41000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":41,"duration":{"second":103,"nanosecond":580000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":42000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":42000,"duration":{"second":103,"nanosecond":580000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":11,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":11000}}],"watch_group":11000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":11,"duration":{"second":103,"nanosecond":581000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":92000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":92000,"duration":{"second":103,"nanosecond":580000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":46000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":46000,"duration":{"second":103,"nanosecond":581000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":67000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":67000,"duration":{"second":103,"nanosecond":580000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":70,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":70000}}],"watch_group":70000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":70,"duration":{"second":101,"nanosecond":575000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":76000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":76000,"duration":{"second":103,"nanosecond":580000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":40,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":40000}}],"watch_group":40000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":40,"duration":{"second":101,"nanosecond":576000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":13000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":13000,"duration":{"second":103,"nanosecond":580000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":10,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":10000}}],"watch_group":10000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":10,"duration":{"second":101,"nanosecond":575000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":88000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":88000,"duration":{"second":103,"nanosecond":580000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":47000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":47000,"duration":{"second":103,"nanosecond":580000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":66000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":66000,"duration":{"second":103,"nanosecond":581000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":77,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":77000}}],"watch_group":77000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":77,"duration":{"second":103,"nanosecond":580000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":43,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":43000}}],"watch_group":43000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":43,"duration":{"second":103,"nanosecond":580000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":9,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":9000}}],"watch_group":9000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":9,"duration":{"second":103,"nanosecond":581000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":99000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":99000,"duration":{"second":103,"nanosecond":580000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":26000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":26000,"duration":{"second":103,"nanosecond":581000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":70000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":70000,"duration":{"second":103,"nanosecond":580000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":76,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":76000}}],"watch_group":76000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":76,"duration":{"second":103,"nanosecond":76000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":42,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":42000}}],"watch_group":42000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":42,"duration":{"second":103,"nanosecond":76000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":8,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":8000}}],"watch_group":8000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":8,"duration":{"second":101,"nanosecond":575000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":37000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":37000,"duration":{"second":103,"nanosecond":76000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":49000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":49000,"duration":{"second":103,"nanosecond":77000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":71000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":71000,"duration":{"second":103,"nanosecond":76000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":48000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":48000,"duration":{"second":103,"nanosecond":77000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":75,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":75000}}],"watch_group":75000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":75,"duration":{"second":103,"nanosecond":77000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":45,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":45000}}],"watch_group":45000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":45,"duration":{"second":103,"nanosecond":76000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":7,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":7000}}],"watch_group":7000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":7,"duration":{"second":103,"nanosecond":77000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":39000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":39000,"duration":{"second":103,"nanosecond":76000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":73000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":73000,"duration":{"second":103,"nanosecond":76000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":69000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":69000,"duration":{"second":103,"nanosecond":77000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":17000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":17000,"duration":{"second":103,"nanosecond":77000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":28000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":28000,"duration":{"second":103,"nanosecond":77000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":74,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":74000}}],"watch_group":74000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":74,"duration":{"second":103,"nanosecond":76000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":44,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":44000}}],"watch_group":44000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":44,"duration":{"second":103,"nanosecond":76000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":6,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":6000}}],"watch_group":6000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":6,"duration":{"second":101,"nanosecond":575000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":40000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":40000,"duration":{"second":103,"nanosecond":77000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":81,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":81000}}],"watch_group":81000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":81,"duration":{"second":103,"nanosecond":76000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":47,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":47000}}],"watch_group":47000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":47,"duration":{"second":103,"nanosecond":77000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":21,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":21000}}],"watch_group":21000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":21,"duration":{"second":101,"nanosecond":575000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":8000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":8000,"duration":{"second":103,"nanosecond":76000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":19000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":19000,"duration":{"second":103,"nanosecond":77000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":96000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":96000,"duration":{"second":103,"nanosecond":77000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":80,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":80000}}],"watch_group":80000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":80,"duration":{"second":103,"nanosecond":77000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":46,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":46000}}],"watch_group":46000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":46,"duration":{"second":103,"nanosecond":76000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":20,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":20000}}],"watch_group":20000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":20,"duration":{"second":103,"nanosecond":76000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":52000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":52000,"duration":{"second":103,"nanosecond":77000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":6000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":6000,"duration":{"second":103,"nanosecond":76000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":79,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":79000}}],"watch_group":79000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":79,"duration":{"second":103,"nanosecond":76000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":49,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":49000}}],"watch_group":49000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":49,"duration":{"second":102,"nanosecond":586000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":19,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":19000}}],"watch_group":19000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":19,"duration":{"second":102,"nanosecond":585000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":50000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":50000,"duration":{"second":102,"nanosecond":585000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":72000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":72000,"duration":{"second":102,"nanosecond":585000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":30000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":30000,"duration":{"second":102,"nanosecond":584000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":78,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":78000}}],"watch_group":78000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":78,"duration":{"second":102,"nanosecond":583000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":48,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":48000}}],"watch_group":48000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":48,"duration":{"second":102,"nanosecond":582000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":18,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":18000}}],"watch_group":18000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":18,"duration":{"second":102,"nanosecond":582000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":51000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":51000,"duration":{"second":102,"nanosecond":582000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":85,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":85000}}],"watch_group":85000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":85,"duration":{"second":102,"nanosecond":581000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":55000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":55000,"duration":{"second":102,"nanosecond":582000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":51,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":51000}}],"watch_group":51000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":51,"duration":{"second":102,"nanosecond":85000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":17,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":17000}}],"watch_group":17000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":17,"duration":{"second":102,"nanosecond":84000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":21000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":21000,"duration":{"second":102,"nanosecond":85000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":4000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":4000,"duration":{"second":102,"nanosecond":85000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":84,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":84000}}],"watch_group":84000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":84,"duration":{"second":102,"nanosecond":85000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":50,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":50000}}],"watch_group":50000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":50,"duration":{"second":102,"nanosecond":83000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":16,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":16000}}],"watch_group":16000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":16,"duration":{"second":102,"nanosecond":84000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":10000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":10000,"duration":{"second":102,"nanosecond":84000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":54000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":54000,"duration":{"second":102,"nanosecond":78000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":83,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":83000}}],"watch_group":83000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":83,"duration":{"second":102,"nanosecond":78000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":32000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":32000,"duration":{"second":102,"nanosecond":78000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":53,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":53000}}],"watch_group":53000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":53,"duration":{"second":101,"nanosecond":575000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":15,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":15000}}],"watch_group":15000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":15,"duration":{"second":102,"nanosecond":78000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":2000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":2000,"duration":{"second":102,"nanosecond":79000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":82,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":82000}}],"watch_group":82000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":82,"duration":{"second":102,"nanosecond":78000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":52,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":52000}}],"watch_group":52000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":52,"duration":{"second":102,"nanosecond":78000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":14,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":14000}}],"watch_group":14000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":14,"duration":{"second":102,"nanosecond":79000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":53000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":53000,"duration":{"second":102,"nanosecond":79000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":12000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":12000,"duration":{"second":102,"nanosecond":79000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":23000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":23000,"duration":{"second":102,"nanosecond":78000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":94000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":94000,"duration":{"second":102,"nanosecond":79000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}}],"flow-node-inventory:snapshot-gathering-status-end":{"succeeded":true,"end":"2026-04-08T01:00:10.835Z"}}]}}</msg>
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:00:11.420031" elapsed="0.009963"/>
</kw>
<kw name="Get Count" owner="BuiltIn">
<msg time="2026-04-08T01:00:11.434582" level="INFO">Item found from container 600 times.</msg>
<msg time="2026-04-08T01:00:11.434701" level="INFO">${group_count} = 600</msg>
<var>${group_count}</var>
<arg>${resp.text}</arg>
<arg>"group-type"</arg>
<doc>Returns and logs how many times ``item`` is found from ``container``.</doc>
<status status="PASS" start="2026-04-08T01:00:11.430329" elapsed="0.004407"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${group_count}</arg>
<arg>${groups}</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="PASS" start="2026-04-08T01:00:11.435003" elapsed="0.000458"/>
</kw>
<arg>${all_groups}</arg>
<doc>Check number of groups in the inventory.</doc>
<status status="PASS" start="2026-04-08T01:00:11.370652" elapsed="0.064903"/>
</kw>
<arg>10s</arg>
<arg>1s</arg>
<arg>ClusterOpenFlow.Check Number Of Groups On Member</arg>
<arg>${all_groups}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-08T01:00:11.369869" elapsed="0.065755"/>
</kw>
<doc>Check Groups in Operational DS.</doc>
<status status="PASS" start="2026-04-08T01:00:11.009960" elapsed="0.425829"/>
</test>
<test id="s1-s4-t24" name="Check Flows After Owner Reconnect In Switch" line="177">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-08T01:00:11.440197" elapsed="0.000286"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-08T01:00:11.439814" elapsed="0.000743"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:00:11.442038" elapsed="0.000022"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:00:11.441870" elapsed="0.000234"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:11.441838" elapsed="0.000300"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:00:11.448723" elapsed="0.000019"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:00:11.448583" elapsed="0.000199"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:11.448557" elapsed="0.000254"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:00:11.451035" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:00:11.450105" elapsed="0.000993"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:00:11.452213" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:00:11.451501" elapsed="0.000774"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T01:00:11.452375" elapsed="0.000073"/>
</return>
<msg time="2026-04-08T01:00:11.452730" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T01:00:11.449124" elapsed="0.003663"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:00:11.461366" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:00:11.461252" elapsed="0.000161"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:11.461232" elapsed="0.000204"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:00:11.462780" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:00:11.462670" elapsed="0.000156"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:11.462652" elapsed="0.000196"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:00:11.463337" level="INFO">${karaf_connection_index} = 476</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:00:11.462999" elapsed="0.000366"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:00:11.463791" level="INFO">${current_connection_index} = 495</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:00:11.463530" elapsed="0.000288"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:00:11.509928" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:00:11.464358" elapsed="0.045795"/>
</kw>
<msg time="2026-04-08T01:00:11.510417" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T01:00:11.510468" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:11.463982" elapsed="0.046524"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T01:00:11.559415" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "[C "A "f "t "e "r "[C "O "w "n "e "r "[C "R "e "c "o "n "n "e "c "t "[C "I "n "[C "S "w "i "t "c "h "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T01:00:11.511256" elapsed="0.048552"/>
</kw>
<msg time="2026-04-08T01:00:11.560338" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T01:00:11.560461" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:11.510770" elapsed="0.049909"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:11.561652" elapsed="0.000071"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:11.560906" elapsed="0.000911"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:11.560848" elapsed="0.001040"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:00:11.563131" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "[C "A "f "t "e "r "[C "O "w "n "e "r "[C "R "e "c "o "n "n "e "c "t "[C "I "n "[C "S "w "i "t "c "h "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:00:11.562345" elapsed="0.000999"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:11.564010" elapsed="0.000049"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:11.563502" elapsed="0.000633"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:11.563459" elapsed="0.000766"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T01:00:11.564308" elapsed="0.000075"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:00:11.568273" elapsed="0.000189"/>
</kw>
<msg time="2026-04-08T01:00:11.568526" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:00:11.567054" elapsed="0.001608"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:11.568941" elapsed="0.000077"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:11.569344" elapsed="0.000075"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:00:11.566379" elapsed="0.003155"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T01:00:11.565028" elapsed="0.004572"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T01:00:11.462360" elapsed="0.107344"/>
</kw>
<msg time="2026-04-08T01:00:11.569801" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:00:11.569847" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:11.461594" elapsed="0.108292"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T01:00:11.570076" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-08T01:00:11.569967" elapsed="0.000168"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:11.569946" elapsed="0.000421"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:11.570781" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:11.571128" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T01:00:11.571218" elapsed="0.000017"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T01:00:11.460867" elapsed="0.110463"/>
</kw>
<msg time="2026-04-08T01:00:11.571427" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:00:11.571473" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:11.453769" elapsed="0.117742"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:11.571842" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:11.571590" elapsed="0.000305"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:11.571573" elapsed="0.000345"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T01:00:11.453444" elapsed="0.118498"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:00:11.578075" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:00:11.577955" elapsed="0.000166"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:11.577935" elapsed="0.000209"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:00:11.579509" elapsed="0.000019"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:00:11.579372" elapsed="0.000239"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:11.579351" elapsed="0.000292"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:00:11.580197" level="INFO">${karaf_connection_index} = 478</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:00:11.579841" elapsed="0.000392"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:00:11.580752" level="INFO">${current_connection_index} = 495</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:00:11.580446" elapsed="0.000338"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:00:11.611478" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:00:11.581381" elapsed="0.030203"/>
</kw>
<msg time="2026-04-08T01:00:11.611747" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T01:00:11.611793" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:11.580996" elapsed="0.030834"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T01:00:11.663981" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "[C "A "f "t "e "r "[C "O "w "n "e "r "[C "R "e "c "o "n "n "e "c "t "[C "I "n "[C "S "w "i "t "c "h "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T01:00:11.612387" elapsed="0.051831"/>
</kw>
<msg time="2026-04-08T01:00:11.664443" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T01:00:11.664493" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:11.612013" elapsed="0.052519"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:11.664973" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:11.664647" elapsed="0.000386"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:11.664615" elapsed="0.000445"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:00:11.665643" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "[C "A "f "t "e "r "[C "O "w "n "e "r "[C "R "e "c "o "n "n "e "c "t "[C "I "n "[C "S "w "i "t "c "h "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:00:11.665227" elapsed="0.000500"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:11.666019" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:11.665797" elapsed="0.000276"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:11.665777" elapsed="0.000319"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T01:00:11.666133" elapsed="0.000056"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:00:11.668852" elapsed="0.000191"/>
</kw>
<msg time="2026-04-08T01:00:11.669106" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:00:11.667792" elapsed="0.001475"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:11.669588" elapsed="0.000075"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:11.669927" elapsed="0.000074"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:00:11.667064" elapsed="0.003053"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T01:00:11.666484" elapsed="0.003720"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T01:00:11.578982" elapsed="0.091463"/>
</kw>
<msg time="2026-04-08T01:00:11.670544" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:00:11.670590" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:11.578393" elapsed="0.092239"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T01:00:11.670824" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-08T01:00:11.670714" elapsed="0.000169"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:11.670694" elapsed="0.000214"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 2,
close the previous connection. In any case create a new connection
to karaf console for 2, set correct prompt set and login to karaf console.
Store connection index for 2 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:11.671339" elapsed="0.000027"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:11.671831" elapsed="0.000027"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T01:00:11.671908" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T01:00:11.577600" elapsed="0.094427"/>
</kw>
<msg time="2026-04-08T01:00:11.672126" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:00:11.672191" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:11.572236" elapsed="0.099996"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:11.672571" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:11.672312" elapsed="0.000312"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:11.672294" elapsed="0.000355"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T01:00:11.572074" elapsed="0.100599"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:00:11.678882" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:00:11.678772" elapsed="0.000157"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:11.678751" elapsed="0.000201"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:00:11.680197" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:00:11.680051" elapsed="0.000195"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:11.680033" elapsed="0.000237"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:00:11.680735" level="INFO">${karaf_connection_index} = 480</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:00:11.680421" elapsed="0.000342"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:00:11.681213" level="INFO">${current_connection_index} = 495</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:00:11.680926" elapsed="0.000316"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:00:11.717003" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:00:11.681795" elapsed="0.035350"/>
</kw>
<msg time="2026-04-08T01:00:11.717390" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T01:00:11.717439" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:11.681447" elapsed="0.036031"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T01:00:11.769817" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "[C "A "f "t "e "r "[C "O "w "n "e "r "[C "R "e "c "o "n "n "e "c "t "[C "I "n "[C "S "w "i "t "c "h "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T01:00:11.718093" elapsed="0.051964"/>
</kw>
<msg time="2026-04-08T01:00:11.770313" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T01:00:11.770364" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:11.717690" elapsed="0.052714"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:11.770871" elapsed="0.000028"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:11.770533" elapsed="0.000401"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:11.770495" elapsed="0.000467"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:00:11.771530" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "[C "A "f "t "e "r "[C "O "w "n "e "r "[C "R "e "c "o "n "n "e "c "t "[C "I "n "[C "S "w "i "t "c "h "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:00:11.771115" elapsed="0.000499"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:11.771909" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:11.771684" elapsed="0.000280"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:11.771665" elapsed="0.000323"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T01:00:11.772026" elapsed="0.000041"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:00:11.774864" elapsed="0.000191"/>
</kw>
<msg time="2026-04-08T01:00:11.775118" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:00:11.773714" elapsed="0.001727"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:11.775721" elapsed="0.000076"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:11.776064" elapsed="0.000073"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:00:11.772986" elapsed="0.003281"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T01:00:11.772395" elapsed="0.003940"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T01:00:11.679740" elapsed="0.096708"/>
</kw>
<msg time="2026-04-08T01:00:11.776550" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:00:11.776596" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:11.679108" elapsed="0.097527"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T01:00:11.776826" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-08T01:00:11.776716" elapsed="0.000169"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:11.776696" elapsed="0.000213"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 3,
close the previous connection. In any case create a new connection
to karaf console for 3, set correct prompt set and login to karaf console.
Store connection index for 3 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:11.777330" elapsed="0.000028"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:11.777707" elapsed="0.000026"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T01:00:11.777779" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T01:00:11.678413" elapsed="0.099475"/>
</kw>
<msg time="2026-04-08T01:00:11.777986" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:00:11.778032" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:11.672951" elapsed="0.105123"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:11.778436" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:11.778153" elapsed="0.000340"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:11.778134" elapsed="0.000383"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T01:00:11.672806" elapsed="0.105734"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-08T01:00:11.452990" elapsed="0.325586"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-08T01:00:11.448097" elapsed="0.330540"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-08T01:00:11.441471" elapsed="0.337225"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:11.440782" elapsed="0.337960"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-08T01:00:11.436748" elapsed="0.342051"/>
</kw>
<kw name="Check Flows In Mininet" owner="MininetKeywords">
<if>
<branch type="IF" condition="&quot;&quot;&quot;${mininet_conn}&quot;&quot;&quot; != &quot;&quot;">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${mininet_conn}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:00:11.779655" elapsed="0.000232"/>
</kw>
<status status="PASS" start="2026-04-08T01:00:11.779428" elapsed="0.000495"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:11.779407" elapsed="0.000542"/>
</if>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:00:11.780406" level="INFO">${cmd} = dpctl dump-aggregate -O OpenFlow13</msg>
<var>${cmd}</var>
<arg>dpctl dump-aggregate -O OpenFlow13</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:00:11.780123" elapsed="0.000315"/>
</kw>
<kw name="Send Mininet Command" owner="MininetKeywords">
<if>
<branch type="IF" condition="&quot;&quot;&quot;${mininet_conn}&quot;&quot;&quot; != &quot;&quot;">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${mininet_conn}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:00:11.781600" elapsed="0.000179"/>
</kw>
<status status="PASS" start="2026-04-08T01:00:11.781319" elapsed="0.000497"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:11.781042" elapsed="0.000799"/>
</if>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:00:11.785403" level="INFO">dpctl dump-aggregate -O OpenFlow13</msg>
<arg>${cmd}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:00:11.781985" elapsed="0.003478"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-08T01:00:11.865607" level="INFO">*** s1 ------------------------------------------------------------------------
OFPST_AGGREGATE reply (OF1.3) (xid=0x2): packet_count=29 byte_count=2345 flow_count=101
*** s2 ------------------------------------------------------------------------
OFPST_AGGREGATE reply (OF1.3) (xid=0x2): packet_count=53 byte_count=4340 flow_count=101
*** s3 ------------------------------------------------------------------------
OFPST_AGGREGATE reply (OF1.3) (xid=0x2): packet_count=28 byte_count=2275 flow_count=101
mininet&gt;</msg>
<msg time="2026-04-08T01:00:11.865799" level="INFO">${output} = *** s1 ------------------------------------------------------------------------
OFPST_AGGREGATE reply (OF1.3) (xid=0x2): packet_count=29 byte_count=2345 flow_count=101
*** s2 ----------------------...</msg>
<var>${output}</var>
<arg>mininet&gt;</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-08T01:00:11.785675" elapsed="0.080153"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-08T01:00:11.865903" elapsed="0.000051"/>
</return>
<msg time="2026-04-08T01:00:11.866108" level="INFO">${output} = *** s1 ------------------------------------------------------------------------
OFPST_AGGREGATE reply (OF1.3) (xid=0x2): packet_count=29 byte_count=2345 flow_count=101
*** s2 ----------------------...</msg>
<var>${output}</var>
<arg>${mininet_conn}</arg>
<arg>${cmd}</arg>
<doc>Sends Command dpctl dump-aggregate -O OpenFlow13 to Mininet session 495 and returns read buffer response.</doc>
<status status="PASS" start="2026-04-08T01:00:11.780760" elapsed="0.085378"/>
</kw>
<kw name="Get Regexp Matches" owner="String">
<msg time="2026-04-08T01:00:11.866713" level="INFO">${flows} = ['101', '101', '101']</msg>
<var>${flows}</var>
<arg>${output}</arg>
<arg>(?&lt;=flow_count\=).*?(?=\r)</arg>
<doc>Returns a list of all non-overlapping matches in the given string.</doc>
<status status="PASS" start="2026-04-08T01:00:11.866382" elapsed="0.000358"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:00:11.867380" level="INFO">${total_flows} = 303</msg>
<var>${total_flows}</var>
<arg>sum(map(int, ${flows}))</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:00:11.866911" elapsed="0.000496"/>
</kw>
<kw name="Should Be Equal As Numbers" owner="BuiltIn">
<arg>${total_flows}</arg>
<arg>${flow_count}</arg>
<doc>Fails if objects are unequal after converting them to real numbers.</doc>
<status status="PASS" start="2026-04-08T01:00:11.867630" elapsed="0.000330"/>
</kw>
<arg>${mininet_conn_id}</arg>
<arg>${all_flows}</arg>
<doc>Sync with mininet to match exact number of flows</doc>
<status status="PASS" start="2026-04-08T01:00:11.779075" elapsed="0.088954"/>
</kw>
<doc>Check Flows in switch.</doc>
<status status="PASS" start="2026-04-08T01:00:11.436067" elapsed="0.432079"/>
</test>
<test id="s1-s4-t25" name="Check Switches Generate Slave Connection" line="181">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-08T01:00:11.871455" elapsed="0.000205"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-08T01:00:11.871186" elapsed="0.000527"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:00:11.872727" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:00:11.872613" elapsed="0.000159"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:11.872592" elapsed="0.000203"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:00:11.877770" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:00:11.877662" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:11.877644" elapsed="0.000192"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:00:11.878873" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:00:11.878460" elapsed="0.000445"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:00:11.879440" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:00:11.879090" elapsed="0.000417"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T01:00:11.879557" elapsed="0.000032"/>
</return>
<msg time="2026-04-08T01:00:11.879725" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T01:00:11.878062" elapsed="0.001690"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:00:11.886265" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:00:11.886137" elapsed="0.000175"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:11.886117" elapsed="0.000217"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:00:11.887575" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:00:11.887467" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:11.887449" elapsed="0.000194"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:00:11.888095" level="INFO">${karaf_connection_index} = 476</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:00:11.887791" elapsed="0.000330"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:00:11.888560" level="INFO">${current_connection_index} = 495</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:00:11.888300" elapsed="0.000287"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:00:11.922112" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:00:11.889121" elapsed="0.033278"/>
</kw>
<msg time="2026-04-08T01:00:11.922609" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T01:00:11.922663" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:11.888748" elapsed="0.033961"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T01:00:11.963520" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "S "w "i "t "c "h "e "s "[C "G "e "n "e "r "a "t "e "[C "S "l "a "v "e "[C "C "o "n "n "e "c "t "i "o "n "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T01:00:11.923446" elapsed="0.040271"/>
</kw>
<msg time="2026-04-08T01:00:11.963933" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T01:00:11.963981" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "S "w "i "t "c "h...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:11.922956" elapsed="0.041064"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:11.964508" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:11.964147" elapsed="0.000422"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:11.964108" elapsed="0.000491"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:00:11.965129" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "S "w "i "t "c "h "e "s "[C "G "e "n "e "r "a "t "e "[C "S "l "a "v "e "[C "C "o "n "n "e "c "t "i "o "n "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:00:11.964753" elapsed="0.000479"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:11.965571" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:11.965303" elapsed="0.000329"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:11.965284" elapsed="0.000374"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T01:00:11.965699" elapsed="0.000043"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:00:11.968534" elapsed="0.000189"/>
</kw>
<msg time="2026-04-08T01:00:11.968785" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:00:11.967471" elapsed="0.001454"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:11.969231" elapsed="0.000074"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:11.969604" elapsed="0.000075"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:00:11.966787" elapsed="0.003006"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T01:00:11.966042" elapsed="0.003817"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T01:00:11.887113" elapsed="0.083142"/>
</kw>
<msg time="2026-04-08T01:00:11.970487" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:00:11.970596" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "S "w "i "t "c "h...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:11.886487" elapsed="0.084204"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T01:00:11.971140" elapsed="0.000098"/>
</return>
<status status="PASS" start="2026-04-08T01:00:11.970882" elapsed="0.000438"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:11.970835" elapsed="0.000545"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:11.972359" elapsed="0.000062"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:11.973205" elapsed="0.000060"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T01:00:11.973379" elapsed="0.000037"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T01:00:11.885793" elapsed="0.087912"/>
</kw>
<msg time="2026-04-08T01:00:11.973938" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:00:11.974019" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "S "w "i "t "c "h...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:11.880186" elapsed="0.093929"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:11.974474" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:11.974216" elapsed="0.000313"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:11.974196" elapsed="0.000357"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T01:00:11.880004" elapsed="0.094573"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:00:11.982237" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:00:11.982107" elapsed="0.000179"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:11.982087" elapsed="0.000220"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:00:11.983653" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:00:11.983493" elapsed="0.000212"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:11.983472" elapsed="0.000255"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:00:11.984221" level="INFO">${karaf_connection_index} = 478</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:00:11.983890" elapsed="0.000359"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:00:11.984675" level="INFO">${current_connection_index} = 495</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:00:11.984417" elapsed="0.000286"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:00:12.019292" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:00:11.985378" elapsed="0.034033"/>
</kw>
<msg time="2026-04-08T01:00:12.019575" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T01:00:12.019623" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:11.984879" elapsed="0.034781"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T01:00:12.058378" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "S "w "i "t "c "h "e "s "[C "G "e "n "e "r "a "t "e "[C "S "l "a "v "e "[C "C "o "n "n "e "c "t "i "o "n "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T01:00:12.020206" elapsed="0.038292"/>
</kw>
<msg time="2026-04-08T01:00:12.058661" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T01:00:12.058708" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "S "w "i "t "c "h...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:12.019838" elapsed="0.038908"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:12.059070" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:12.058832" elapsed="0.000294"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:12.058809" elapsed="0.000342"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:00:12.059626" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "S "w "i "t "c "h "e "s "[C "G "e "n "e "r "a "t "e "[C "S "l "a "v "e "[C "C "o "n "n "e "c "t "i "o "n "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:00:12.059322" elapsed="0.000381"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:12.059993" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:12.059770" elapsed="0.000279"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:12.059752" elapsed="0.000320"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T01:00:12.060107" elapsed="0.000034"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:00:12.062669" elapsed="0.000181"/>
</kw>
<msg time="2026-04-08T01:00:12.062911" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:00:12.061650" elapsed="0.001396"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:12.063340" elapsed="0.000077"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:12.063675" elapsed="0.000074"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:00:12.060983" elapsed="0.002875"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T01:00:12.060431" elapsed="0.003559"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T01:00:11.983029" elapsed="0.081062"/>
</kw>
<msg time="2026-04-08T01:00:12.064207" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:00:12.064253" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "S "w "i "t "c "h...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:11.982462" elapsed="0.081830"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T01:00:12.064478" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-08T01:00:12.064371" elapsed="0.000164"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:12.064353" elapsed="0.000205"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 2,
close the previous connection. In any case create a new connection
to karaf console for 2, set correct prompt set and login to karaf console.
Store connection index for 2 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:12.064948" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:12.065301" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T01:00:12.065372" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T01:00:11.981751" elapsed="0.083728"/>
</kw>
<msg time="2026-04-08T01:00:12.065587" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:00:12.065632" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "S "w "i "t "c "h...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:11.974862" elapsed="0.090807"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:12.065999" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:12.065747" elapsed="0.000304"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:12.065729" elapsed="0.000345"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T01:00:11.974715" elapsed="0.091382"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:00:12.071918" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:00:12.071810" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:12.071790" elapsed="0.000195"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:00:12.073289" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:00:12.073176" elapsed="0.000159"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:12.073136" elapsed="0.000221"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:00:12.073865" level="INFO">${karaf_connection_index} = 480</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:00:12.073505" elapsed="0.000390"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:00:12.074331" level="INFO">${current_connection_index} = 495</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:00:12.074059" elapsed="0.000299"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:00:12.111725" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:00:12.074871" elapsed="0.036960"/>
</kw>
<msg time="2026-04-08T01:00:12.111994" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T01:00:12.112042" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:12.074533" elapsed="0.037546"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T01:00:12.171443" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "S "w "i "t "c "h "e "s "[C "G "e "n "e "r "a "t "e "[C "S "l "a "v "e "[C "C "o "n "n "e "c "t "i "o "n "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T01:00:12.112634" elapsed="0.058953"/>
</kw>
<msg time="2026-04-08T01:00:12.171763" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T01:00:12.171809" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "S "w "i "t "c "h...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:12.112284" elapsed="0.059563"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:12.172366" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:12.172043" elapsed="0.000382"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:12.172012" elapsed="0.000439"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:00:12.172925" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "S "w "i "t "c "h "e "s "[C "G "e "n "e "r "a "t "e "[C "S "l "a "v "e "[C "C "o "n "n "e "c "t "i "o "n "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:00:12.172597" elapsed="0.000405"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:12.173307" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:12.173069" elapsed="0.000319"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:12.173051" elapsed="0.000362"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T01:00:12.173449" elapsed="0.000064"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:00:12.176142" elapsed="0.000200"/>
</kw>
<msg time="2026-04-08T01:00:12.176405" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:00:12.175076" elapsed="0.001463"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:12.176812" elapsed="0.000076"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:12.177145" elapsed="0.000096"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:00:12.174450" elapsed="0.002901"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T01:00:12.173867" elapsed="0.003548"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T01:00:12.072843" elapsed="0.104672"/>
</kw>
<msg time="2026-04-08T01:00:12.177623" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:00:12.177669" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "S "w "i "t "c "h...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:12.072140" elapsed="0.105568"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T01:00:12.177894" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-08T01:00:12.177787" elapsed="0.000165"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:12.177768" elapsed="0.000208"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 3,
close the previous connection. In any case create a new connection
to karaf console for 3, set correct prompt set and login to karaf console.
Store connection index for 3 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:12.178399" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:12.178734" elapsed="0.000023"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T01:00:12.178804" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T01:00:12.071465" elapsed="0.107476"/>
</kw>
<msg time="2026-04-08T01:00:12.179036" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:00:12.179080" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "S "w "i "t "c "h...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:12.066555" elapsed="0.112564"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:12.179464" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:12.179212" elapsed="0.000304"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:12.179194" elapsed="0.000345"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T01:00:12.066409" elapsed="0.113154"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-08T01:00:11.879814" elapsed="0.299782"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-08T01:00:11.877276" elapsed="0.302377"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-08T01:00:11.872320" elapsed="0.307390"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:11.871868" elapsed="0.307887"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-08T01:00:11.868917" elapsed="0.310893"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:00:12.184471" level="FAIL">Variable '${original_owner}' not found.</msg>
<var>${original_master}</var>
<arg>${ODL_SYSTEM_${original_owner}_IP}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="FAIL" start="2026-04-08T01:00:12.180025" elapsed="0.004486">Variable '${original_owner}' not found.</status>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<arg>50s</arg>
<arg>1s</arg>
<arg>OvsManager.Should Be Slave</arg>
<arg>s${switch}</arg>
<arg>${original_master}</arg>
<arg>update_data=${True}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:12.184780" elapsed="0.000021"/>
</kw>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-04-08T01:00:12.184636" elapsed="0.000209"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-04-08T01:00:12.184577" elapsed="0.000293"/>
</for>
<doc>Check switches are connected to new Slave.</doc>
<status status="FAIL" start="2026-04-08T01:00:11.868384" elapsed="0.316684">Variable '${original_owner}' not found.</status>
</test>
<test id="s1-s4-t26" name="Disconnect Mininet From Successor" line="194">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-08T01:00:12.188271" elapsed="0.000206"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-08T01:00:12.187993" elapsed="0.000537"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:00:12.189505" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:00:12.189398" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:12.189380" elapsed="0.000191"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:00:12.194582" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:00:12.194477" elapsed="0.000149"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:12.194459" elapsed="0.000189"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:00:12.195647" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:00:12.195267" elapsed="0.000406"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:00:12.196139" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:00:12.195835" elapsed="0.000345"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T01:00:12.196225" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T01:00:12.196377" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T01:00:12.194876" elapsed="0.001526"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:00:12.201886" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:00:12.201778" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:12.201759" elapsed="0.000193"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:00:12.203084" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:00:12.202977" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:12.202960" elapsed="0.000191"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:00:12.203621" level="INFO">${karaf_connection_index} = 476</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:00:12.203323" elapsed="0.000324"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:00:12.204056" level="INFO">${current_connection_index} = 495</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:00:12.203807" elapsed="0.000275"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:00:12.240586" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:00:12.204599" elapsed="0.036099"/>
</kw>
<msg time="2026-04-08T01:00:12.240866" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T01:00:12.240914" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:12.204261" elapsed="0.036691"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T01:00:12.284257" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "D "i "s "c "o "n "n "e "c "t "[C "M "i "n "i "n "e "t "[C "F "r "o "m "[C "S "u "c "c "e "s "s "o "r "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T01:00:12.241525" elapsed="0.042852"/>
</kw>
<msg time="2026-04-08T01:00:12.284538" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T01:00:12.284585" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "D "i "s "c "o "n "n "e "c "t "[C "M...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:12.241138" elapsed="0.043549"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:12.285035" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:12.284783" elapsed="0.000307"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:12.284757" elapsed="0.000360"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:00:12.285614" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "D "i "s "c "o "n "n "e "c "t "[C "M "i "n "i "n "e "t "[C "F "r "o "m "[C "S "u "c "c "e "s "s "o "r "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:00:12.285299" elapsed="0.000425"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:12.286046" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:12.285793" elapsed="0.000309"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:12.285775" elapsed="0.000350"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T01:00:12.286181" elapsed="0.000038"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:00:12.288950" elapsed="0.000312"/>
</kw>
<msg time="2026-04-08T01:00:12.289326" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:00:12.287798" elapsed="0.001661"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:12.289749" elapsed="0.000076"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:12.290079" elapsed="0.000074"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:00:12.287101" elapsed="0.003344"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T01:00:12.286494" elapsed="0.004035"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T01:00:12.202678" elapsed="0.087951"/>
</kw>
<msg time="2026-04-08T01:00:12.290724" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:00:12.290768" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "D "i "s "c "o "n "n "e "c "t "[C "M...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:12.202104" elapsed="0.088701"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T01:00:12.291082" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-08T01:00:12.290882" elapsed="0.000260"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:12.290863" elapsed="0.000320"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:12.291615" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:12.291983" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T01:00:12.292056" elapsed="0.000017"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T01:00:12.201431" elapsed="0.090830"/>
</kw>
<msg time="2026-04-08T01:00:12.292359" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:00:12.292403" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "D "i "s "c "o "n "n "e "c "t "[C "M...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:12.196757" elapsed="0.095686"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:12.292870" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:12.292520" elapsed="0.000408"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:12.292503" elapsed="0.000449"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T01:00:12.196615" elapsed="0.096361"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:00:12.299494" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:00:12.299386" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:12.299367" elapsed="0.000195"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:00:12.301036" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:00:12.300858" elapsed="0.000263"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:12.300840" elapsed="0.000307"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:00:12.301764" level="INFO">${karaf_connection_index} = 478</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:00:12.301323" elapsed="0.000470"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:00:12.302258" level="INFO">${current_connection_index} = 495</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:00:12.301960" elapsed="0.000327"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:00:12.335859" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:00:12.302893" elapsed="0.033078"/>
</kw>
<msg time="2026-04-08T01:00:12.336140" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T01:00:12.336213" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:12.302456" elapsed="0.033796"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T01:00:12.370689" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "D "i "s "c "o "n "n "e "c "t "[C "M "i "n "i "n "e "t "[C "F "r "o "m "[C "S "u "c "c "e "s "s "o "r "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T01:00:12.336802" elapsed="0.034073"/>
</kw>
<msg time="2026-04-08T01:00:12.371079" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T01:00:12.371127" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "D "i "s "c "o "n "n "e "c "t "[C "M...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:12.336439" elapsed="0.034752"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:12.371643" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:12.371317" elapsed="0.000386"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:12.371280" elapsed="0.000451"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:00:12.372261" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "D "i "s "c "o "n "n "e "c "t "[C "M "i "n "i "n "e "t "[C "F "r "o "m "[C "S "u "c "c "e "s "s "o "r "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:00:12.371884" elapsed="0.000457"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:12.372631" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:12.372409" elapsed="0.000276"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:12.372391" elapsed="0.000318"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T01:00:12.372746" elapsed="0.000040"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:00:12.375395" elapsed="0.000185"/>
</kw>
<msg time="2026-04-08T01:00:12.375641" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:00:12.374358" elapsed="0.001417"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:12.376050" elapsed="0.000075"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:12.376411" elapsed="0.000073"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:00:12.373675" elapsed="0.002920"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T01:00:12.373076" elapsed="0.003582"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T01:00:12.300511" elapsed="0.076247"/>
</kw>
<msg time="2026-04-08T01:00:12.376857" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:00:12.376902" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "D "i "s "c "o "n "n "e "c "t "[C "M...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:12.299819" elapsed="0.077123"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T01:00:12.377128" elapsed="0.000044"/>
</return>
<status status="PASS" start="2026-04-08T01:00:12.377021" elapsed="0.000186"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:12.377002" elapsed="0.000229"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 2,
close the previous connection. In any case create a new connection
to karaf console for 2, set correct prompt set and login to karaf console.
Store connection index for 2 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:12.377637" elapsed="0.000024"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:12.378086" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T01:00:12.378174" elapsed="0.000017"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T01:00:12.299024" elapsed="0.079264"/>
</kw>
<msg time="2026-04-08T01:00:12.378387" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:00:12.378431" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "D "i "s "c "o "n "n "e "c "t "[C "M...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:12.293290" elapsed="0.085178"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:12.378797" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:12.378545" elapsed="0.000305"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:12.378528" elapsed="0.000345"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T01:00:12.293128" elapsed="0.085768"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:00:12.384610" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:00:12.384502" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:12.384482" elapsed="0.000196"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:00:12.385884" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:00:12.385775" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:12.385756" elapsed="0.000195"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:00:12.386440" level="INFO">${karaf_connection_index} = 480</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:00:12.386114" elapsed="0.000353"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:00:12.386875" level="INFO">${current_connection_index} = 495</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:00:12.386628" elapsed="0.000273"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:00:12.425809" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:00:12.387418" elapsed="0.038509"/>
</kw>
<msg time="2026-04-08T01:00:12.426111" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T01:00:12.426180" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:12.387061" elapsed="0.039160"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T01:00:12.463348" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "D "i "s "c "o "n "n "e "c "t "[C "M "i "n "i "n "e "t "[C "F "r "o "m "[C "S "u "c "c "e "s "s "o "r "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T01:00:12.426773" elapsed="0.036698"/>
</kw>
<msg time="2026-04-08T01:00:12.463645" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T01:00:12.463693" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "D "i "s "c "o "n "n "e "c "t "[C "M...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:12.426414" elapsed="0.037317"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:12.464077" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:12.463824" elapsed="0.000316"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:12.463798" elapsed="0.000392"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:00:12.464663" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "D "i "s "c "o "n "n "e "c "t "[C "M "i "n "i "n "e "t "[C "F "r "o "m "[C "S "u "c "c "e "s "s "o "r "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:00:12.464340" elapsed="0.000399"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:12.465026" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:12.464806" elapsed="0.000274"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:12.464788" elapsed="0.000315"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T01:00:12.465144" elapsed="0.000055"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:00:12.467909" elapsed="0.000240"/>
</kw>
<msg time="2026-04-08T01:00:12.468230" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:00:12.466868" elapsed="0.001502"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:12.468648" elapsed="0.000074"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:12.468990" elapsed="0.000073"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:00:12.466217" elapsed="0.002979"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T01:00:12.465613" elapsed="0.003648"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T01:00:12.385444" elapsed="0.083917"/>
</kw>
<msg time="2026-04-08T01:00:12.469467" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:00:12.469512" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "D "i "s "c "o "n "n "e "c "t "[C "M...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:12.384832" elapsed="0.084718"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T01:00:12.469750" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-08T01:00:12.469628" elapsed="0.000182"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:12.469609" elapsed="0.000225"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 3,
close the previous connection. In any case create a new connection
to karaf console for 3, set correct prompt set and login to karaf console.
Store connection index for 3 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:12.470258" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:12.470608" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T01:00:12.470680" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T01:00:12.384051" elapsed="0.086736"/>
</kw>
<msg time="2026-04-08T01:00:12.470881" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:00:12.470924" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "D "i "s "c "o "n "n "e "c "t "[C "M...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:12.379186" elapsed="0.091785"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:12.471320" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:12.471049" elapsed="0.000323"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:12.471032" elapsed="0.000363"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T01:00:12.379028" elapsed="0.092392"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-08T01:00:12.196451" elapsed="0.275008"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-08T01:00:12.194103" elapsed="0.277417"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-08T01:00:12.189091" elapsed="0.282487"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:12.188680" elapsed="0.282945"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-08T01:00:12.185873" elapsed="0.285809"/>
</kw>
<kw name="Disconnect Cluster Mininet" owner="MininetKeywords">
<msg time="2026-04-08T01:00:12.476625" level="FAIL">Variable '${new_successor_list}' not found.</msg>
<arg>break</arg>
<arg>${new_successor_list}</arg>
<doc>Break and restore controller to mininet connection via iptables.</doc>
<status status="FAIL" start="2026-04-08T01:00:12.471967" elapsed="0.004698">Variable '${new_successor_list}' not found.</status>
</kw>
<doc>Disconnect mininet from the Successor.</doc>
<status status="FAIL" start="2026-04-08T01:00:12.185386" elapsed="0.291440">Variable '${new_successor_list}' not found.</status>
</test>
<test id="s1-s4-t27" name="Check Entity Owner Status And Find New Owner and Successor After Disconnect" line="198">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-08T01:00:12.479997" elapsed="0.000230"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-08T01:00:12.479733" elapsed="0.000548"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:00:12.481273" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:00:12.481146" elapsed="0.000171"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:12.481128" elapsed="0.000212"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:00:12.486263" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:00:12.486137" elapsed="0.000171"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:12.486119" elapsed="0.000211"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:00:12.487338" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:00:12.486937" elapsed="0.000428"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:00:12.487830" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:00:12.487529" elapsed="0.000355"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T01:00:12.487931" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T01:00:12.488085" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T01:00:12.486560" elapsed="0.001550"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:00:12.493689" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:00:12.493581" elapsed="0.000161"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:12.493562" elapsed="0.000216"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:00:12.494935" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:00:12.494826" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:12.494808" elapsed="0.000195"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:00:12.495491" level="INFO">${karaf_connection_index} = 476</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:00:12.495177" elapsed="0.000341"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:00:12.495965" level="INFO">${current_connection_index} = 495</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:00:12.495678" elapsed="0.000316"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:00:12.533087" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:00:12.496531" elapsed="0.036685"/>
</kw>
<msg time="2026-04-08T01:00:12.533383" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T01:00:12.533432" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:12.496175" elapsed="0.037314"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T01:00:12.617081" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "E "n "t "i "t "y "[C "O "w "n "e "r "[C "S "t "a "t "u "s "[C "A "n "d "[C "F "i "n "d "[C "N "e "w "[C "O "w "n "e "r "[C "a "n "d "[C "S "u "[78Cc "[A[78Cc
 "e "s "s "o "r "[C "A "f "t "e "r "[C "D "i "s "c "o "n "n "e "c "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T01:00:12.534041" elapsed="0.083213"/>
</kw>
<msg time="2026-04-08T01:00:12.617430" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T01:00:12.617477" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "E "n "t "i "t "y...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:12.533666" elapsed="0.083849"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:12.617902" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:12.617609" elapsed="0.000352"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:12.617583" elapsed="0.000405"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:00:12.618490" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "E "n "t "i "t "y "[C "O "w "n "e "r "[C "S "t "a "t "u "s "[C "A "n "d "[C "F "i "n "d "[C "N "e "w "[C "O "w "n "e "r "[C "a "n "d "[C "S "u "[78Cc "[A[78Cc
 "e "s "s "o "r "[C "A "f "t "e "r "[C "D "i "s "c "o "n "n "e "c "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:00:12.618143" elapsed="0.000437"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:12.618868" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:12.618648" elapsed="0.000274"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:12.618629" elapsed="0.000317"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T01:00:12.618979" elapsed="0.000034"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:00:12.621584" elapsed="0.000182"/>
</kw>
<msg time="2026-04-08T01:00:12.621840" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:00:12.620558" elapsed="0.001414"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:12.622266" elapsed="0.000074"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:12.622600" elapsed="0.000073"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:00:12.619851" elapsed="0.002929"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T01:00:12.619301" elapsed="0.003545"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T01:00:12.494515" elapsed="0.128429"/>
</kw>
<msg time="2026-04-08T01:00:12.623039" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:00:12.623083" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "E "n "t "i "t "y...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:12.493931" elapsed="0.129191"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T01:00:12.623331" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-08T01:00:12.623224" elapsed="0.000165"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:12.623204" elapsed="0.000208"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:12.623803" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:12.624135" elapsed="0.000039"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T01:00:12.624222" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T01:00:12.493241" elapsed="0.131089"/>
</kw>
<msg time="2026-04-08T01:00:12.624423" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:00:12.624467" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "E "n "t "i "t "y...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:12.488491" elapsed="0.136013"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:12.624829" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:12.624580" elapsed="0.000301"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:12.624563" elapsed="0.000341"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T01:00:12.488349" elapsed="0.136578"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:00:12.630482" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:00:12.630375" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:12.630356" elapsed="0.000192"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:00:12.631774" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:00:12.631667" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:12.631649" elapsed="0.000193"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:00:12.632303" level="INFO">${karaf_connection_index} = 478</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:00:12.631988" elapsed="0.000342"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:00:12.632737" level="INFO">${current_connection_index} = 495</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:00:12.632490" elapsed="0.000273"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:00:12.665337" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:00:12.633276" elapsed="0.032163"/>
</kw>
<msg time="2026-04-08T01:00:12.665610" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T01:00:12.665657" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:12.632925" elapsed="0.032769"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T01:00:12.746619" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "E "n "t "i "t "y "[C "O "w "n "e "r "[C "S "t "a "t "u "s "[C "A "n "d "[C "F "i "n "d "[C "N "e "w "[C "O "w "n "e "r "[C "a "n "d "[C "S "u "[78Cc "[A[78Cc
 "e "s "s "o "r "[C "A "f "t "e "r "[C "D "i "s "c "o "n "n "e "c "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T01:00:12.666306" elapsed="0.080499"/>
</kw>
<msg time="2026-04-08T01:00:12.747000" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T01:00:12.747048" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "E "n "t "i "t "y...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:12.665893" elapsed="0.081193"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:12.747502" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:12.747211" elapsed="0.000348"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:12.747181" elapsed="0.000405"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:00:12.748076" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "E "n "t "i "t "y "[C "O "w "n "e "r "[C "S "t "a "t "u "s "[C "A "n "d "[C "F "i "n "d "[C "N "e "w "[C "O "w "n "e "r "[C "a "n "d "[C "S "u "[78Cc "[A[78Cc
 "e "s "s "o "r "[C "A "f "t "e "r "[C "D "i "s "c "o "n "n "e "c "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:00:12.747734" elapsed="0.000449"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:12.748479" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:12.748253" elapsed="0.000281"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:12.748234" elapsed="0.000324"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T01:00:12.748593" elapsed="0.000034"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:00:12.751143" elapsed="0.000201"/>
</kw>
<msg time="2026-04-08T01:00:12.751405" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:00:12.750127" elapsed="0.001409"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:12.751811" elapsed="0.000075"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:12.752142" elapsed="0.000094"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:00:12.749479" elapsed="0.002867"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T01:00:12.748898" elapsed="0.003514"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T01:00:12.631363" elapsed="0.121147"/>
</kw>
<msg time="2026-04-08T01:00:12.752608" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:00:12.752653" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "E "n "t "i "t "y...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:12.630698" elapsed="0.121993"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T01:00:12.752877" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-08T01:00:12.752770" elapsed="0.000164"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:12.752751" elapsed="0.000206"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 2,
close the previous connection. In any case create a new connection
to karaf console for 2, set correct prompt set and login to karaf console.
Store connection index for 2 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:12.753376" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:12.753716" elapsed="0.000027"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T01:00:12.753791" elapsed="0.000017"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T01:00:12.630017" elapsed="0.123911"/>
</kw>
<msg time="2026-04-08T01:00:12.754025" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:00:12.754069" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "E "n "t "i "t "y...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:12.625210" elapsed="0.128898"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:12.754454" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:12.754200" elapsed="0.000354"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:12.754182" elapsed="0.000397"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T01:00:12.625053" elapsed="0.129549"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:00:12.760123" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:00:12.760016" elapsed="0.000255"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:12.759997" elapsed="0.000298"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:00:12.761438" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:00:12.761330" elapsed="0.000156"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:12.761313" elapsed="0.000197"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:00:12.761991" level="INFO">${karaf_connection_index} = 480</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:00:12.761657" elapsed="0.000362"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:00:12.762454" level="INFO">${current_connection_index} = 495</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:00:12.762203" elapsed="0.000277"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:00:12.805342" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:00:12.762981" elapsed="0.042468"/>
</kw>
<msg time="2026-04-08T01:00:12.805612" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T01:00:12.805659" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:12.762644" elapsed="0.043052"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T01:00:12.884876" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "E "n "t "i "t "y "[C "O "w "n "e "r "[C "S "t "a "t "u "s "[C "A "n "d "[C "F "i "n "d "[C "N "e "w "[C "O "w "n "e "r "[C "a "n "d "[C "S "u "[78Cc "[A[78Cc
 "e "s "s "o "r "[C "A "f "t "e "r "[C "D "i "s "c "o "n "n "e "c "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T01:00:12.806265" elapsed="0.078736"/>
</kw>
<msg time="2026-04-08T01:00:12.885179" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T01:00:12.885228" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "E "n "t "i "t "y...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:12.805875" elapsed="0.079391"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:12.885583" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:12.885351" elapsed="0.000287"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:12.885328" elapsed="0.000333"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:00:12.886123" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "E "n "t "i "t "y "[C "O "w "n "e "r "[C "S "t "a "t "u "s "[C "A "n "d "[C "F "i "n "d "[C "N "e "w "[C "O "w "n "e "r "[C "a "n "d "[C "S "u "[78Cc "[A[78Cc
 "e "s "s "o "r "[C "A "f "t "e "r "[C "D "i "s "c "o "n "n "e "c "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:00:12.885806" elapsed="0.000424"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:12.886531" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:12.886300" elapsed="0.000286"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:12.886282" elapsed="0.000327"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T01:00:12.886642" elapsed="0.000031"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:00:12.889082" elapsed="0.000195"/>
</kw>
<msg time="2026-04-08T01:00:12.889338" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:00:12.888088" elapsed="0.001378"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:12.889739" elapsed="0.000074"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:12.890101" elapsed="0.000094"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:00:12.887476" elapsed="0.002828"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T01:00:12.886923" elapsed="0.003444"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T01:00:12.761003" elapsed="0.129506"/>
</kw>
<msg time="2026-04-08T01:00:12.890603" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:00:12.890645" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "E "n "t "i "t "y...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:12.760447" elapsed="0.130236"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T01:00:12.890867" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-08T01:00:12.890760" elapsed="0.000165"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:12.890742" elapsed="0.000206"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 3,
close the previous connection. In any case create a new connection
to karaf console for 3, set correct prompt set and login to karaf console.
Store connection index for 3 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:12.891358" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:12.891690" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T01:00:12.891761" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T01:00:12.759670" elapsed="0.132197"/>
</kw>
<msg time="2026-04-08T01:00:12.891959" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:00:12.892002" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "E "n "t "i "t "y...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:12.754874" elapsed="0.137170"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:12.892385" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:12.892118" elapsed="0.000320"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:12.892101" elapsed="0.000360"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T01:00:12.754731" elapsed="0.137753"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-08T01:00:12.488176" elapsed="0.404340"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-08T01:00:12.485719" elapsed="0.406858"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-08T01:00:12.480853" elapsed="0.411784"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:12.480430" elapsed="0.412254"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-08T01:00:12.477564" elapsed="0.415175"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Get OpenFlow Entity Owner Status For One Device" owner="ClusterOpenFlow">
<msg time="2026-04-08T01:00:12.905593" level="FAIL">Variable '${owner_list}' not found.</msg>
<arg>openflow:1</arg>
<arg>1</arg>
<arg>${owner_list}</arg>
<arg>after_stop=True</arg>
<doc>Check Entity Owner Status and identify owner and successors for the device ${device}. Request is sent to controller ${controller_index}.</doc>
<status status="FAIL" start="2026-04-08T01:00:12.901410" elapsed="0.004222">Variable '${owner_list}' not found.</status>
</kw>
<kw name="Get OpenFlow Entity Owner Status For One Device" owner="ClusterOpenFlow">
<msg time="2026-04-08T01:00:13.923892" level="FAIL">Variable '${owner_list}' not found.</msg>
<arg>openflow:1</arg>
<arg>1</arg>
<arg>${owner_list}</arg>
<arg>after_stop=True</arg>
<doc>Check Entity Owner Status and identify owner and successors for the device ${device}. Request is sent to controller ${controller_index}.</doc>
<status status="FAIL" start="2026-04-08T01:00:13.919705" elapsed="0.004245">Variable '${owner_list}' not found.</status>
</kw>
<kw name="Get OpenFlow Entity Owner Status For One Device" owner="ClusterOpenFlow">
<msg time="2026-04-08T01:00:14.945892" level="FAIL">Variable '${owner_list}' not found.</msg>
<arg>openflow:1</arg>
<arg>1</arg>
<arg>${owner_list}</arg>
<arg>after_stop=True</arg>
<doc>Check Entity Owner Status and identify owner and successors for the device ${device}. Request is sent to controller ${controller_index}.</doc>
<status status="FAIL" start="2026-04-08T01:00:14.940513" elapsed="0.005436">Variable '${owner_list}' not found.</status>
</kw>
<kw name="Get OpenFlow Entity Owner Status For One Device" owner="ClusterOpenFlow">
<msg time="2026-04-08T01:00:15.963883" level="FAIL">Variable '${owner_list}' not found.</msg>
<arg>openflow:1</arg>
<arg>1</arg>
<arg>${owner_list}</arg>
<arg>after_stop=True</arg>
<doc>Check Entity Owner Status and identify owner and successors for the device ${device}. Request is sent to controller ${controller_index}.</doc>
<status status="FAIL" start="2026-04-08T01:00:15.959814" elapsed="0.004123">Variable '${owner_list}' not found.</status>
</kw>
<kw name="Get OpenFlow Entity Owner Status For One Device" owner="ClusterOpenFlow">
<msg time="2026-04-08T01:00:16.984007" level="FAIL">Variable '${owner_list}' not found.</msg>
<arg>openflow:1</arg>
<arg>1</arg>
<arg>${owner_list}</arg>
<arg>after_stop=True</arg>
<doc>Check Entity Owner Status and identify owner and successors for the device ${device}. Request is sent to controller ${controller_index}.</doc>
<status status="FAIL" start="2026-04-08T01:00:16.978341" elapsed="0.005740">Variable '${owner_list}' not found.</status>
</kw>
<kw name="Get OpenFlow Entity Owner Status For One Device" owner="ClusterOpenFlow">
<msg time="2026-04-08T01:00:18.002223" level="FAIL">Variable '${owner_list}' not found.</msg>
<arg>openflow:1</arg>
<arg>1</arg>
<arg>${owner_list}</arg>
<arg>after_stop=True</arg>
<doc>Check Entity Owner Status and identify owner and successors for the device ${device}. Request is sent to controller ${controller_index}.</doc>
<status status="FAIL" start="2026-04-08T01:00:17.996260" elapsed="0.006041">Variable '${owner_list}' not found.</status>
</kw>
<kw name="Get OpenFlow Entity Owner Status For One Device" owner="ClusterOpenFlow">
<msg time="2026-04-08T01:00:19.021689" level="FAIL">Variable '${owner_list}' not found.</msg>
<arg>openflow:1</arg>
<arg>1</arg>
<arg>${owner_list}</arg>
<arg>after_stop=True</arg>
<doc>Check Entity Owner Status and identify owner and successors for the device ${device}. Request is sent to controller ${controller_index}.</doc>
<status status="FAIL" start="2026-04-08T01:00:19.017434" elapsed="0.004311">Variable '${owner_list}' not found.</status>
</kw>
<kw name="Get OpenFlow Entity Owner Status For One Device" owner="ClusterOpenFlow">
<msg time="2026-04-08T01:00:20.040076" level="FAIL">Variable '${owner_list}' not found.</msg>
<arg>openflow:1</arg>
<arg>1</arg>
<arg>${owner_list}</arg>
<arg>after_stop=True</arg>
<doc>Check Entity Owner Status and identify owner and successors for the device ${device}. Request is sent to controller ${controller_index}.</doc>
<status status="FAIL" start="2026-04-08T01:00:20.035108" elapsed="0.005020">Variable '${owner_list}' not found.</status>
</kw>
<kw name="Get OpenFlow Entity Owner Status For One Device" owner="ClusterOpenFlow">
<msg time="2026-04-08T01:00:21.058459" level="FAIL">Variable '${owner_list}' not found.</msg>
<arg>openflow:1</arg>
<arg>1</arg>
<arg>${owner_list}</arg>
<arg>after_stop=True</arg>
<doc>Check Entity Owner Status and identify owner and successors for the device ${device}. Request is sent to controller ${controller_index}.</doc>
<status status="FAIL" start="2026-04-08T01:00:21.054450" elapsed="0.004060">Variable '${owner_list}' not found.</status>
</kw>
<kw name="Get OpenFlow Entity Owner Status For One Device" owner="ClusterOpenFlow">
<msg time="2026-04-08T01:00:22.080087" level="FAIL">Variable '${owner_list}' not found.</msg>
<arg>openflow:1</arg>
<arg>1</arg>
<arg>${owner_list}</arg>
<arg>after_stop=True</arg>
<doc>Check Entity Owner Status and identify owner and successors for the device ${device}. Request is sent to controller ${controller_index}.</doc>
<status status="FAIL" start="2026-04-08T01:00:22.075071" elapsed="0.005110">Variable '${owner_list}' not found.</status>
</kw>
<kw name="Get OpenFlow Entity Owner Status For One Device" owner="ClusterOpenFlow">
<msg time="2026-04-08T01:00:23.097200" level="FAIL">Variable '${owner_list}' not found.</msg>
<arg>openflow:1</arg>
<arg>1</arg>
<arg>${owner_list}</arg>
<arg>after_stop=True</arg>
<doc>Check Entity Owner Status and identify owner and successors for the device ${device}. Request is sent to controller ${controller_index}.</doc>
<status status="FAIL" start="2026-04-08T01:00:23.093145" elapsed="0.004109">Variable '${owner_list}' not found.</status>
</kw>
<msg time="2026-04-08T01:00:23.097374" level="FAIL">Keyword 'ClusterOpenFlow.Get OpenFlow Entity Owner Status For One Device' failed after retrying for 10 seconds. The last error was: Variable '${owner_list}' not found.</msg>
<var>${current_owner}</var>
<var>${current_successor_list}</var>
<arg>10s</arg>
<arg>1s</arg>
<arg>ClusterOpenFlow.Get OpenFlow Entity Owner Status For One Device</arg>
<arg>openflow:1</arg>
<arg>1</arg>
<arg>${owner_list}</arg>
<arg>after_stop=True</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="FAIL" start="2026-04-08T01:00:12.892924" elapsed="10.204598">Keyword 'ClusterOpenFlow.Get OpenFlow Entity Owner Status For One Device' failed after retrying for 10 seconds. The last error was: Variable '${owner_list}' not found.</status>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<arg>${current_owner}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:23.097747" elapsed="0.000023"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<arg>${current_successor_list}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:23.097926" elapsed="0.000020"/>
</kw>
<doc>Check Entity Owner Status and identify owner and successor for first switch s1.</doc>
<status status="FAIL" start="2026-04-08T01:00:12.477044" elapsed="10.621051">Keyword 'ClusterOpenFlow.Get OpenFlow Entity Owner Status For One Device' failed after retrying for 10 seconds. The last error was: Variable '${owner_list}' not found.</status>
</test>
<test id="s1-s4-t28" name="Disconnect Mininet From Current Owner" line="211">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-08T01:00:23.101302" elapsed="0.000259"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-08T01:00:23.101012" elapsed="0.000606"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:00:23.102669" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:00:23.102531" elapsed="0.000187"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:23.102508" elapsed="0.000233"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:00:23.109058" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:00:23.108950" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:23.108932" elapsed="0.000193"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:00:23.110139" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:00:23.109751" elapsed="0.000432"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:00:23.110654" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:00:23.110348" elapsed="0.000332"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T01:00:23.110724" elapsed="0.000031"/>
</return>
<msg time="2026-04-08T01:00:23.110880" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T01:00:23.109372" elapsed="0.001533"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:00:23.116365" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:00:23.116257" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:23.116238" elapsed="0.000193"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:00:23.117610" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:00:23.117503" elapsed="0.000205"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:23.117485" elapsed="0.000246"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:00:23.118203" level="INFO">${karaf_connection_index} = 476</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:00:23.117881" elapsed="0.000350"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:00:23.118654" level="INFO">${current_connection_index} = 495</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:00:23.118395" elapsed="0.000285"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:00:23.153705" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:00:23.119201" elapsed="0.034618"/>
</kw>
<msg time="2026-04-08T01:00:23.153981" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T01:00:23.154028" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:23.118843" elapsed="0.035221"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T01:00:23.193957" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "D "i "s "c "o "n "n "e "c "t "[C "M "i "n "i "n "e "t "[C "F "r "o "m "[C "C "u "r "r "e "n "t "[C "O "w "n "e "r "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T01:00:23.154617" elapsed="0.039450"/>
</kw>
<msg time="2026-04-08T01:00:23.194244" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T01:00:23.194291" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "D "i "s "c "o "n "n "e "c "t "[C "M...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:23.154264" elapsed="0.040065"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:23.194641" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:23.194410" elapsed="0.000286"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:23.194389" elapsed="0.000331"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:00:23.195175" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "D "i "s "c "o "n "n "e "c "t "[C "M "i "n "i "n "e "t "[C "F "r "o "m "[C "C "u "r "r "e "n "t "[C "O "w "n "e "r "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:00:23.194862" elapsed="0.000389"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:23.195557" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:23.195318" elapsed="0.000293"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:23.195300" elapsed="0.000334"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T01:00:23.195666" elapsed="0.000031"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:00:23.198127" elapsed="0.000196"/>
</kw>
<msg time="2026-04-08T01:00:23.198384" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:00:23.197118" elapsed="0.001397"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:23.198786" elapsed="0.000075"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:23.199116" elapsed="0.000094"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:00:23.196504" elapsed="0.002815"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T01:00:23.195951" elapsed="0.003468"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T01:00:23.117200" elapsed="0.082318"/>
</kw>
<msg time="2026-04-08T01:00:23.199611" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:00:23.199655" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "D "i "s "c "o "n "n "e "c "t "[C "M...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:23.116584" elapsed="0.083109"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T01:00:23.200053" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-08T01:00:23.199769" elapsed="0.000344"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:23.199751" elapsed="0.000386"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:23.200548" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:23.200923" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T01:00:23.200994" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T01:00:23.115899" elapsed="0.085201"/>
</kw>
<msg time="2026-04-08T01:00:23.201210" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:00:23.201255" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "D "i "s "c "o "n "n "e "c "t "[C "M...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:23.111293" elapsed="0.089999"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:23.201618" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:23.201368" elapsed="0.000304"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:23.201351" elapsed="0.000344"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T01:00:23.111132" elapsed="0.090586"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:00:23.206973" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:00:23.206867" elapsed="0.000150"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:23.206849" elapsed="0.000190"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:00:23.208303" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:00:23.208194" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:23.208174" elapsed="0.000197"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:00:23.208809" level="INFO">${karaf_connection_index} = 478</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:00:23.208517" elapsed="0.000318"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:00:23.209260" level="INFO">${current_connection_index} = 495</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:00:23.208995" elapsed="0.000292"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:00:23.239889" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:00:23.209789" elapsed="0.030212"/>
</kw>
<msg time="2026-04-08T01:00:23.240180" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T01:00:23.240230" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:23.209453" elapsed="0.030813"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T01:00:23.278104" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "D "i "s "c "o "n "n "e "c "t "[C "M "i "n "i "n "e "t "[C "F "r "o "m "[C "C "u "r "r "e "n "t "[C "O "w "n "e "r "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T01:00:23.240784" elapsed="0.037438"/>
</kw>
<msg time="2026-04-08T01:00:23.278379" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T01:00:23.278425" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "D "i "s "c "o "n "n "e "c "t "[C "M...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:23.240444" elapsed="0.038017"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:23.278762" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:23.278539" elapsed="0.000277"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:23.278519" elapsed="0.000321"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:00:23.279309" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "D "i "s "c "o "n "n "e "c "t "[C "M "i "n "i "n "e "t "[C "F "r "o "m "[C "C "u "r "r "e "n "t "[C "O "w "n "e "r "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:00:23.278983" elapsed="0.000400"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:23.279708" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:23.279487" elapsed="0.000275"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:23.279467" elapsed="0.000318"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T01:00:23.279817" elapsed="0.000028"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:00:23.282255" elapsed="0.000213"/>
</kw>
<msg time="2026-04-08T01:00:23.282529" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:00:23.281267" elapsed="0.001391"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:23.282929" elapsed="0.000075"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:23.283283" elapsed="0.000073"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:00:23.280631" elapsed="0.002847"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T01:00:23.280082" elapsed="0.003460"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T01:00:23.207875" elapsed="0.075765"/>
</kw>
<msg time="2026-04-08T01:00:23.283731" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:00:23.283774" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "D "i "s "c "o "n "n "e "c "t "[C "M...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:23.207291" elapsed="0.076520"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T01:00:23.283993" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-08T01:00:23.283887" elapsed="0.000162"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:23.283869" elapsed="0.000204"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 2,
close the previous connection. In any case create a new connection
to karaf console for 2, set correct prompt set and login to karaf console.
Store connection index for 2 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:23.284649" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:23.284981" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T01:00:23.285051" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T01:00:23.206531" elapsed="0.078639"/>
</kw>
<msg time="2026-04-08T01:00:23.285265" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:00:23.285308" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "D "i "s "c "o "n "n "e "c "t "[C "M...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:23.201980" elapsed="0.083364"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:23.285669" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:23.285419" elapsed="0.000302"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:23.285402" elapsed="0.000343"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T01:00:23.201840" elapsed="0.083928"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:00:23.291102" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:00:23.290994" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:23.290976" elapsed="0.000283"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:00:23.292430" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:00:23.292323" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:23.292304" elapsed="0.000193"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:00:23.292935" level="INFO">${karaf_connection_index} = 480</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:00:23.292642" elapsed="0.000319"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:00:23.293388" level="INFO">${current_connection_index} = 495</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:00:23.293121" elapsed="0.000294"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:00:23.327961" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:00:23.293914" elapsed="0.034211"/>
</kw>
<msg time="2026-04-08T01:00:23.328426" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T01:00:23.328525" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:23.293578" elapsed="0.035017"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T01:00:23.373685" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "D "i "s "c "o "n "n "e "c "t "[C "M "i "n "i "n "e "t "[C "F "r "o "m "[C "C "u "r "r "e "n "t "[C "O "w "n "e "r "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T01:00:23.329461" elapsed="0.044434"/>
</kw>
<msg time="2026-04-08T01:00:23.374127" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T01:00:23.374223" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "D "i "s "c "o "n "n "e "c "t "[C "M...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:23.328867" elapsed="0.045410"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:23.374718" elapsed="0.000032"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:23.374392" elapsed="0.000406"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:23.374363" elapsed="0.000469"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:00:23.375741" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "D "i "s "c "o "n "n "e "c "t "[C "M "i "n "i "n "e "t "[C "F "r "o "m "[C "C "u "r "r "e "n "t "[C "O "w "n "e "r "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:00:23.375033" elapsed="0.000816"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:23.376291" elapsed="0.000032"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:23.375949" elapsed="0.000422"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:23.375922" elapsed="0.000487"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T01:00:23.376455" elapsed="0.000040"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:00:23.379996" elapsed="0.000277"/>
</kw>
<msg time="2026-04-08T01:00:23.380361" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:00:23.378481" elapsed="0.002016"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:23.380770" elapsed="0.000075"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:23.381098" elapsed="0.000090"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:00:23.377604" elapsed="0.003696"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T01:00:23.376826" elapsed="0.004537"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T01:00:23.291999" elapsed="0.089462"/>
</kw>
<msg time="2026-04-08T01:00:23.381553" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:00:23.381595" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "D "i "s "c "o "n "n "e "c "t "[C "M...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:23.291442" elapsed="0.090191"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T01:00:23.381818" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-08T01:00:23.381711" elapsed="0.000165"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:23.381691" elapsed="0.000208"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 3,
close the previous connection. In any case create a new connection
to karaf console for 3, set correct prompt set and login to karaf console.
Store connection index for 3 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:23.382304" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:23.382642" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T01:00:23.382712" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T01:00:23.290658" elapsed="0.092159"/>
</kw>
<msg time="2026-04-08T01:00:23.382911" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:00:23.382954" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "D "i "s "c "o "n "n "e "c "t "[C "M...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:23.286026" elapsed="0.096966"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:23.383571" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:23.383283" elapsed="0.000346"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:23.383049" elapsed="0.000605"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T01:00:23.285886" elapsed="0.097791"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-08T01:00:23.110959" elapsed="0.272781"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-08T01:00:23.108584" elapsed="0.275216"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-08T01:00:23.102228" elapsed="0.281628"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:23.101770" elapsed="0.282131"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-08T01:00:23.098835" elapsed="0.285118"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:00:23.388350" level="FAIL">Variable '${current_owner}' not found.</msg>
<var>${current_owner_list}</var>
<arg>${current_owner}</arg>
<doc>Returns a list containing given items.</doc>
<status status="FAIL" start="2026-04-08T01:00:23.384121" elapsed="0.004277">Variable '${current_owner}' not found.</status>
</kw>
<kw name="Disconnect Cluster Mininet" owner="MininetKeywords">
<arg>break</arg>
<arg>${current_owner_list}</arg>
<doc>Break and restore controller to mininet connection via iptables.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:23.388706" elapsed="0.000025"/>
</kw>
<doc>Disconnect mininet from the owner</doc>
<status status="FAIL" start="2026-04-08T01:00:23.098347" elapsed="0.290524">Variable '${current_owner}' not found.</status>
</test>
<test id="s1-s4-t29" name="Check Entity Owner Status And Find Current Owner and Successor After Disconnect" line="216">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-08T01:00:23.392041" elapsed="0.000225"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-08T01:00:23.391775" elapsed="0.000546"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:00:23.393298" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:00:23.393189" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:23.393169" elapsed="0.000195"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:00:23.398117" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:00:23.398010" elapsed="0.000182"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:23.397992" elapsed="0.000225"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:00:23.399223" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:00:23.398825" elapsed="0.000425"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:00:23.399792" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:00:23.399411" elapsed="0.000407"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T01:00:23.399863" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T01:00:23.400016" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T01:00:23.398450" elapsed="0.001591"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:00:23.405566" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:00:23.405457" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:23.405438" elapsed="0.000193"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:00:23.406766" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:00:23.406661" elapsed="0.000150"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:23.406643" elapsed="0.000190"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:00:23.407296" level="INFO">${karaf_connection_index} = 476</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:00:23.406978" elapsed="0.000345"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:00:23.407761" level="INFO">${current_connection_index} = 495</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:00:23.407507" elapsed="0.000280"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:00:23.441743" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:00:23.408304" elapsed="0.033540"/>
</kw>
<msg time="2026-04-08T01:00:23.442004" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T01:00:23.442050" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:23.407949" elapsed="0.034139"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T01:00:23.524479" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "E "n "t "i "t "y "[C "O "w "n "e "r "[C "S "t "a "t "u "s "[C "A "n "d "[C "F "i "n "d "[C "C "u "r "r "e "n "t "[C "O "w "n "e "r "[C "a "n "[78Cd "[A[78C
 "S "u "c "c "e "s "s "o "r "[C "A "f "t "e "r "[C "D "i "s "c "o "n "n "e "c "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T01:00:23.442628" elapsed="0.082213"/>
</kw>
<msg time="2026-04-08T01:00:23.525276" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T01:00:23.525386" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "E "n "t "i "t "y...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:23.442282" elapsed="0.083190"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:23.526222" elapsed="0.000055"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:23.525652" elapsed="0.000701"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:23.525605" elapsed="0.000802"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:00:23.527436" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "E "n "t "i "t "y "[C "O "w "n "e "r "[C "S "t "a "t "u "s "[C "A "n "d "[C "F "i "n "d "[C "C "u "r "r "e "n "t "[C "O "w "n "e "r "[C "a "n "[78Cd "[A[78C
 "S "u "c "c "e "s "s "o "r "[C "A "f "t "e "r "[C "D "i "s "c "o "n "n "e "c "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:00:23.526728" elapsed="0.000972"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:23.528386" elapsed="0.000033"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:23.527856" elapsed="0.000597"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:23.527815" elapsed="0.000661"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T01:00:23.528509" elapsed="0.000028"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:00:23.531055" elapsed="0.000200"/>
</kw>
<msg time="2026-04-08T01:00:23.531316" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:00:23.529998" elapsed="0.001456"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:23.531764" elapsed="0.000076"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:23.532097" elapsed="0.000089"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:00:23.529333" elapsed="0.002963"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T01:00:23.528782" elapsed="0.003578"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T01:00:23.406358" elapsed="0.126100"/>
</kw>
<msg time="2026-04-08T01:00:23.532548" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:00:23.532591" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "E "n "t "i "t "y...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:23.405785" elapsed="0.126843"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T01:00:23.532810" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-08T01:00:23.532705" elapsed="0.000163"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:23.532686" elapsed="0.000205"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:23.533293" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:23.533623" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T01:00:23.533693" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T01:00:23.405104" elapsed="0.128693"/>
</kw>
<msg time="2026-04-08T01:00:23.533889" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:00:23.533933" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "E "n "t "i "t "y...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:23.400432" elapsed="0.133538"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:23.534314" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:23.534045" elapsed="0.000361"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:23.534028" elapsed="0.000404"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T01:00:23.400282" elapsed="0.134175"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:00:23.540224" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:00:23.540097" elapsed="0.000173"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:23.540077" elapsed="0.000214"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:00:23.541467" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:00:23.541359" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:23.541340" elapsed="0.000195"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:00:23.541980" level="INFO">${karaf_connection_index} = 478</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:00:23.541681" elapsed="0.000325"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:00:23.542492" level="INFO">${current_connection_index} = 495</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:00:23.542233" elapsed="0.000286"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:00:23.590074" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:00:23.543020" elapsed="0.047172"/>
</kw>
<msg time="2026-04-08T01:00:23.590372" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T01:00:23.590421" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:23.542683" elapsed="0.047775"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T01:00:23.663457" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "E "n "t "i "t "y "[C "O "w "n "e "r "[C "S "t "a "t "u "s "[C "A "n "d "[C "F "i "n "d "[C "C "u "r "r "e "n "t "[C "O "w "n "e "r "[C "a "n "[78Cd "[A[78C
 "S "u "c "c "e "s "s "o "r "[C "A "f "t "e "r "[C "D "i "s "c "o "n "n "e "c "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T01:00:23.590980" elapsed="0.072608"/>
</kw>
<msg time="2026-04-08T01:00:23.663768" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T01:00:23.663814" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "E "n "t "i "t "y...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:23.590635" elapsed="0.073217"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:23.664185" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:23.663934" elapsed="0.000308"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:23.663913" elapsed="0.000353"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:00:23.664714" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "E "n "t "i "t "y "[C "O "w "n "e "r "[C "S "t "a "t "u "s "[C "A "n "d "[C "F "i "n "d "[C "C "u "r "r "e "n "t "[C "O "w "n "e "r "[C "a "n "[78Cd "[A[78C
 "S "u "c "c "e "s "s "o "r "[C "A "f "t "e "r "[C "D "i "s "c "o "n "n "e "c "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:00:23.664413" elapsed="0.000390"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:23.665090" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:23.664871" elapsed="0.000273"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:23.664853" elapsed="0.000331"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T01:00:23.665218" elapsed="0.000031"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:00:23.667681" elapsed="0.000176"/>
</kw>
<msg time="2026-04-08T01:00:23.667918" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:00:23.666666" elapsed="0.001379"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:23.668333" elapsed="0.000073"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:23.668663" elapsed="0.000072"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:00:23.666035" elapsed="0.002809"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T01:00:23.665495" elapsed="0.003412"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T01:00:23.541038" elapsed="0.128008"/>
</kw>
<msg time="2026-04-08T01:00:23.669140" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:00:23.669207" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "E "n "t "i "t "y...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:23.540469" elapsed="0.128777"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T01:00:23.669430" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-08T01:00:23.669324" elapsed="0.000164"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:23.669305" elapsed="0.000206"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 2,
close the previous connection. In any case create a new connection
to karaf console for 2, set correct prompt set and login to karaf console.
Store connection index for 2 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:23.669895" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:23.670247" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T01:00:23.670318" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T01:00:23.539751" elapsed="0.130673"/>
</kw>
<msg time="2026-04-08T01:00:23.670517" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:00:23.670561" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "E "n "t "i "t "y...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:23.534722" elapsed="0.135875"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:23.670919" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:23.670672" elapsed="0.000300"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:23.670654" elapsed="0.000341"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T01:00:23.534579" elapsed="0.136438"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:00:23.676718" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:00:23.676610" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:23.676590" elapsed="0.000196"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:00:23.677962" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:00:23.677854" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:23.677836" elapsed="0.000192"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:00:23.678496" level="INFO">${karaf_connection_index} = 480</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:00:23.678195" elapsed="0.000328"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:00:23.678936" level="INFO">${current_connection_index} = 495</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:00:23.678685" elapsed="0.000278"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:00:23.715062" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:00:23.679490" elapsed="0.035824"/>
</kw>
<msg time="2026-04-08T01:00:23.715695" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T01:00:23.715801" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:23.679127" elapsed="0.036756"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T01:00:23.794332" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "E "n "t "i "t "y "[C "O "w "n "e "r "[C "S "t "a "t "u "s "[C "A "n "d "[C "F "i "n "d "[C "C "u "r "r "e "n "t "[C "O "w "n "e "r "[C "a "n "[78Cd "[A[78C
 "S "u "c "c "e "s "s "o "r "[C "A "f "t "e "r "[C "D "i "s "c "o "n "n "e "c "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T01:00:23.717140" elapsed="0.077321"/>
</kw>
<msg time="2026-04-08T01:00:23.794622" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T01:00:23.794668" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "E "n "t "i "t "y...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:23.716308" elapsed="0.078397"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:23.795012" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:23.794786" elapsed="0.000319"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:23.794766" elapsed="0.000364"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:00:23.795601" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "E "n "t "i "t "y "[C "O "w "n "e "r "[C "S "t "a "t "u "s "[C "A "n "d "[C "F "i "n "d "[C "C "u "r "r "e "n "t "[C "O "w "n "e "r "[C "a "n "[78Cd "[A[78C
 "S "u "c "c "e "s "s "o "r "[C "A "f "t "e "r "[C "D "i "s "c "o "n "n "e "c "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:00:23.795298" elapsed="0.000422"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:23.796013" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:23.795790" elapsed="0.000277"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:23.795772" elapsed="0.000318"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T01:00:23.796122" elapsed="0.000029"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:00:23.798561" elapsed="0.000177"/>
</kw>
<msg time="2026-04-08T01:00:23.798798" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:00:23.797567" elapsed="0.001359"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:23.799214" elapsed="0.000075"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:23.799542" elapsed="0.000071"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:00:23.796940" elapsed="0.002810"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T01:00:23.796407" elapsed="0.003407"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T01:00:23.677550" elapsed="0.122361"/>
</kw>
<msg time="2026-04-08T01:00:23.800002" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:00:23.800045" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "E "n "t "i "t "y...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:23.676939" elapsed="0.123144"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T01:00:23.800289" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-08T01:00:23.800180" elapsed="0.000167"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:23.800141" elapsed="0.000229"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 3,
close the previous connection. In any case create a new connection
to karaf console for 3, set correct prompt set and login to karaf console.
Store connection index for 3 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:23.800751" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:23.801079" elapsed="0.000023"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T01:00:23.801148" elapsed="0.000035"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T01:00:23.676258" elapsed="0.125017"/>
</kw>
<msg time="2026-04-08T01:00:23.801367" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:00:23.801410" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "E "n "t "i "t "y...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:23.671298" elapsed="0.130149"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:23.801768" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:23.801521" elapsed="0.000300"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:23.801504" elapsed="0.000339"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T01:00:23.671140" elapsed="0.130726"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-08T01:00:23.400094" elapsed="0.401800"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-08T01:00:23.397652" elapsed="0.404297"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-08T01:00:23.392886" elapsed="0.409120"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:23.392472" elapsed="0.409580"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-08T01:00:23.389592" elapsed="0.412512"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Get OpenFlow Entity Owner Status For One Device" owner="ClusterOpenFlow">
<msg time="2026-04-08T01:00:23.814884" level="FAIL">Variable '${original_owner_list}' not found.</msg>
<arg>openflow:1</arg>
<arg>1</arg>
<arg>${original_owner_list}</arg>
<arg>after_stop=True</arg>
<doc>Check Entity Owner Status and identify owner and successors for the device ${device}. Request is sent to controller ${controller_index}.</doc>
<status status="FAIL" start="2026-04-08T01:00:23.810816" elapsed="0.004107">Variable '${original_owner_list}' not found.</status>
</kw>
<kw name="Get OpenFlow Entity Owner Status For One Device" owner="ClusterOpenFlow">
<msg time="2026-04-08T01:00:24.835257" level="FAIL">Variable '${original_owner_list}' not found.</msg>
<arg>openflow:1</arg>
<arg>1</arg>
<arg>${original_owner_list}</arg>
<arg>after_stop=True</arg>
<doc>Check Entity Owner Status and identify owner and successors for the device ${device}. Request is sent to controller ${controller_index}.</doc>
<status status="FAIL" start="2026-04-08T01:00:24.830057" elapsed="0.005255">Variable '${original_owner_list}' not found.</status>
</kw>
<kw name="Get OpenFlow Entity Owner Status For One Device" owner="ClusterOpenFlow">
<msg time="2026-04-08T01:00:25.856227" level="FAIL">Variable '${original_owner_list}' not found.</msg>
<arg>openflow:1</arg>
<arg>1</arg>
<arg>${original_owner_list}</arg>
<arg>after_stop=True</arg>
<doc>Check Entity Owner Status and identify owner and successors for the device ${device}. Request is sent to controller ${controller_index}.</doc>
<status status="FAIL" start="2026-04-08T01:00:25.851270" elapsed="0.005012">Variable '${original_owner_list}' not found.</status>
</kw>
<kw name="Get OpenFlow Entity Owner Status For One Device" owner="ClusterOpenFlow">
<msg time="2026-04-08T01:00:26.873860" level="FAIL">Variable '${original_owner_list}' not found.</msg>
<arg>openflow:1</arg>
<arg>1</arg>
<arg>${original_owner_list}</arg>
<arg>after_stop=True</arg>
<doc>Check Entity Owner Status and identify owner and successors for the device ${device}. Request is sent to controller ${controller_index}.</doc>
<status status="FAIL" start="2026-04-08T01:00:26.869709" elapsed="0.004205">Variable '${original_owner_list}' not found.</status>
</kw>
<kw name="Get OpenFlow Entity Owner Status For One Device" owner="ClusterOpenFlow">
<msg time="2026-04-08T01:00:27.893453" level="FAIL">Variable '${original_owner_list}' not found.</msg>
<arg>openflow:1</arg>
<arg>1</arg>
<arg>${original_owner_list}</arg>
<arg>after_stop=True</arg>
<doc>Check Entity Owner Status and identify owner and successors for the device ${device}. Request is sent to controller ${controller_index}.</doc>
<status status="FAIL" start="2026-04-08T01:00:27.889212" elapsed="0.004300">Variable '${original_owner_list}' not found.</status>
</kw>
<kw name="Get OpenFlow Entity Owner Status For One Device" owner="ClusterOpenFlow">
<msg time="2026-04-08T01:00:28.911060" level="FAIL">Variable '${original_owner_list}' not found.</msg>
<arg>openflow:1</arg>
<arg>1</arg>
<arg>${original_owner_list}</arg>
<arg>after_stop=True</arg>
<doc>Check Entity Owner Status and identify owner and successors for the device ${device}. Request is sent to controller ${controller_index}.</doc>
<status status="FAIL" start="2026-04-08T01:00:28.906825" elapsed="0.004294">Variable '${original_owner_list}' not found.</status>
</kw>
<kw name="Get OpenFlow Entity Owner Status For One Device" owner="ClusterOpenFlow">
<msg time="2026-04-08T01:00:29.932813" level="FAIL">Variable '${original_owner_list}' not found.</msg>
<arg>openflow:1</arg>
<arg>1</arg>
<arg>${original_owner_list}</arg>
<arg>after_stop=True</arg>
<doc>Check Entity Owner Status and identify owner and successors for the device ${device}. Request is sent to controller ${controller_index}.</doc>
<status status="FAIL" start="2026-04-08T01:00:29.928388" elapsed="0.004475">Variable '${original_owner_list}' not found.</status>
</kw>
<kw name="Get OpenFlow Entity Owner Status For One Device" owner="ClusterOpenFlow">
<msg time="2026-04-08T01:00:30.953470" level="FAIL">Variable '${original_owner_list}' not found.</msg>
<arg>openflow:1</arg>
<arg>1</arg>
<arg>${original_owner_list}</arg>
<arg>after_stop=True</arg>
<doc>Check Entity Owner Status and identify owner and successors for the device ${device}. Request is sent to controller ${controller_index}.</doc>
<status status="FAIL" start="2026-04-08T01:00:30.949335" elapsed="0.004191">Variable '${original_owner_list}' not found.</status>
</kw>
<kw name="Get OpenFlow Entity Owner Status For One Device" owner="ClusterOpenFlow">
<msg time="2026-04-08T01:00:31.973839" level="FAIL">Variable '${original_owner_list}' not found.</msg>
<arg>openflow:1</arg>
<arg>1</arg>
<arg>${original_owner_list}</arg>
<arg>after_stop=True</arg>
<doc>Check Entity Owner Status and identify owner and successors for the device ${device}. Request is sent to controller ${controller_index}.</doc>
<status status="FAIL" start="2026-04-08T01:00:31.969108" elapsed="0.004790">Variable '${original_owner_list}' not found.</status>
</kw>
<kw name="Get OpenFlow Entity Owner Status For One Device" owner="ClusterOpenFlow">
<msg time="2026-04-08T01:00:32.991721" level="FAIL">Variable '${original_owner_list}' not found.</msg>
<arg>openflow:1</arg>
<arg>1</arg>
<arg>${original_owner_list}</arg>
<arg>after_stop=True</arg>
<doc>Check Entity Owner Status and identify owner and successors for the device ${device}. Request is sent to controller ${controller_index}.</doc>
<status status="FAIL" start="2026-04-08T01:00:32.987351" elapsed="0.004431">Variable '${original_owner_list}' not found.</status>
</kw>
<kw name="Get OpenFlow Entity Owner Status For One Device" owner="ClusterOpenFlow">
<msg time="2026-04-08T01:00:34.010547" level="FAIL">Variable '${original_owner_list}' not found.</msg>
<arg>openflow:1</arg>
<arg>1</arg>
<arg>${original_owner_list}</arg>
<arg>after_stop=True</arg>
<doc>Check Entity Owner Status and identify owner and successors for the device ${device}. Request is sent to controller ${controller_index}.</doc>
<status status="FAIL" start="2026-04-08T01:00:34.006260" elapsed="0.004345">Variable '${original_owner_list}' not found.</status>
</kw>
<msg time="2026-04-08T01:00:34.010738" level="FAIL">Keyword 'ClusterOpenFlow.Get OpenFlow Entity Owner Status For One Device' failed after retrying for 10 seconds. The last error was: Variable '${original_owner_list}' not found.</msg>
<var>${current_new_owner}</var>
<var>${current_new_successor_list}</var>
<arg>10s</arg>
<arg>1s</arg>
<arg>ClusterOpenFlow.Get OpenFlow Entity Owner Status For One Device</arg>
<arg>openflow:1</arg>
<arg>1</arg>
<arg>${original_owner_list}</arg>
<arg>after_stop=True</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="FAIL" start="2026-04-08T01:00:23.802389" elapsed="10.208511">Keyword 'ClusterOpenFlow.Get OpenFlow Entity Owner Status For One Device' failed after retrying for 10 seconds. The last error was: Variable '${original_owner_list}' not found.</status>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<arg>${current_new_owner}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:34.011149" elapsed="0.000040"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<arg>${current_new_successor_list}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:34.011357" elapsed="0.000024"/>
</kw>
<doc>Check Entity Owner Status and identify owner and successor for first switch s1.</doc>
<status status="FAIL" start="2026-04-08T01:00:23.389077" elapsed="10.622469">Keyword 'ClusterOpenFlow.Get OpenFlow Entity Owner Status For One Device' failed after retrying for 10 seconds. The last error was: Variable '${original_owner_list}' not found.</status>
</test>
<test id="s1-s4-t30" name="Check Switch Moves To Current Master" line="229">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-08T01:00:34.014945" elapsed="0.000281"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-08T01:00:34.014669" elapsed="0.000614"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:00:34.016367" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:00:34.016223" elapsed="0.000194"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:34.016196" elapsed="0.000244"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:00:34.021689" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:00:34.021565" elapsed="0.000173"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:34.021545" elapsed="0.000215"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:00:34.023068" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:00:34.022642" elapsed="0.000455"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:00:34.023590" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:00:34.023278" elapsed="0.000339"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T01:00:34.023661" elapsed="0.000037"/>
</return>
<msg time="2026-04-08T01:00:34.023887" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T01:00:34.022240" elapsed="0.001681"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:00:34.029515" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:00:34.029397" elapsed="0.000166"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:34.029376" elapsed="0.000209"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:00:34.030784" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:00:34.030675" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:34.030657" elapsed="0.000195"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:00:34.031339" level="INFO">${karaf_connection_index} = 476</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:00:34.031001" elapsed="0.000365"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:00:34.031789" level="INFO">${current_connection_index} = 495</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:00:34.031532" elapsed="0.000284"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:00:34.068039" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:00:34.032339" elapsed="0.035959"/>
</kw>
<msg time="2026-04-08T01:00:34.068526" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T01:00:34.068576" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:34.031979" elapsed="0.036632"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T01:00:34.109055" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "S "w "i "t "c "h "[C "M "o "v "e "s "[C "T "o "[C "C "u "r "r "e "n "t "[C "M "a "s "t "e "r "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T01:00:34.069329" elapsed="0.039859"/>
</kw>
<msg time="2026-04-08T01:00:34.109366" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T01:00:34.109430" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "S "w "i "t "c "h...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:34.068865" elapsed="0.040606"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:34.109904" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:34.109579" elapsed="0.000387"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:34.109546" elapsed="0.000447"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:00:34.110533" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "S "w "i "t "c "h "[C "M "o "v "e "s "[C "T "o "[C "C "u "r "r "e "n "t "[C "M "a "s "t "e "r "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:00:34.110196" elapsed="0.000413"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:34.110912" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:34.110681" elapsed="0.000363"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:34.110662" elapsed="0.000408"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T01:00:34.111109" elapsed="0.000039"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:00:34.113822" elapsed="0.000190"/>
</kw>
<msg time="2026-04-08T01:00:34.114078" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:00:34.112779" elapsed="0.001547"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:34.114620" elapsed="0.000078"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:34.114964" elapsed="0.000347"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:00:34.112106" elapsed="0.003329"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T01:00:34.111513" elapsed="0.003990"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T01:00:34.030371" elapsed="0.085238"/>
</kw>
<msg time="2026-04-08T01:00:34.115705" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:00:34.115751" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "S "w "i "t "c "h...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:34.029743" elapsed="0.086046"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T01:00:34.115981" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-08T01:00:34.115869" elapsed="0.000172"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:34.115849" elapsed="0.000216"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:34.116497" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:34.116843" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T01:00:34.116916" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T01:00:34.029018" elapsed="0.088129"/>
</kw>
<msg time="2026-04-08T01:00:34.117261" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:00:34.117307" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "S "w "i "t "c "h...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:34.024427" elapsed="0.092917"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:34.117678" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:34.117420" elapsed="0.000314"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:34.117403" elapsed="0.000355"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T01:00:34.024256" elapsed="0.093526"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:00:34.123391" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:00:34.123281" elapsed="0.000156"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:34.123262" elapsed="0.000198"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:00:34.124616" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:00:34.124505" elapsed="0.000156"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:34.124487" elapsed="0.000196"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:00:34.125134" level="INFO">${karaf_connection_index} = 478</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:00:34.124831" elapsed="0.000345"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:00:34.125595" level="INFO">${current_connection_index} = 495</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:00:34.125343" elapsed="0.000278"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:00:34.158018" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:00:34.126125" elapsed="0.032057"/>
</kw>
<msg time="2026-04-08T01:00:34.158447" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T01:00:34.158497" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:34.125784" elapsed="0.032749"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T01:00:34.203889" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "S "w "i "t "c "h "[C "M "o "v "e "s "[C "T "o "[C "C "u "r "r "e "n "t "[C "M "a "s "t "e "r "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T01:00:34.159133" elapsed="0.044986"/>
</kw>
<msg time="2026-04-08T01:00:34.204370" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T01:00:34.204420" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "S "w "i "t "c "h...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:34.158742" elapsed="0.045715"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:34.204900" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:34.204573" elapsed="0.000434"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:34.204541" elapsed="0.000494"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:00:34.205604" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "S "w "i "t "c "h "[C "M "o "v "e "s "[C "T "o "[C "C "u "r "r "e "n "t "[C "M "a "s "t "e "r "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:00:34.205213" elapsed="0.000472"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:34.205979" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:34.205754" elapsed="0.000280"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:34.205735" elapsed="0.000323"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T01:00:34.206096" elapsed="0.000040"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:00:34.208806" elapsed="0.000216"/>
</kw>
<msg time="2026-04-08T01:00:34.209090" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:00:34.207684" elapsed="0.001577"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:34.209537" elapsed="0.000074"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:34.209867" elapsed="0.000073"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:00:34.207025" elapsed="0.003028"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T01:00:34.206445" elapsed="0.003673"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T01:00:34.124198" elapsed="0.086042"/>
</kw>
<msg time="2026-04-08T01:00:34.210346" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:00:34.210391" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "S "w "i "t "c "h...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:34.123613" elapsed="0.086819"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T01:00:34.210916" elapsed="0.000030"/>
</return>
<status status="PASS" start="2026-04-08T01:00:34.210524" elapsed="0.000458"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:34.210500" elapsed="0.000507"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 2,
close the previous connection. In any case create a new connection
to karaf console for 2, set correct prompt set and login to karaf console.
Store connection index for 2 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:34.211462" elapsed="0.000027"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:34.211805" elapsed="0.000029"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T01:00:34.211882" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T01:00:34.122894" elapsed="0.089097"/>
</kw>
<msg time="2026-04-08T01:00:34.212101" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:00:34.212176" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "S "w "i "t "c "h...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:34.118063" elapsed="0.094155"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:34.212664" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:34.212386" elapsed="0.000335"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:34.212366" elapsed="0.000397"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T01:00:34.117914" elapsed="0.094875"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:00:34.218869" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:00:34.218728" elapsed="0.000203"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:34.218703" elapsed="0.000251"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:00:34.220314" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:00:34.220200" elapsed="0.000160"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:34.220179" elapsed="0.000204"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:00:34.220889" level="INFO">${karaf_connection_index} = 480</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:00:34.220535" elapsed="0.000383"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:00:34.221367" level="INFO">${current_connection_index} = 495</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:00:34.221086" elapsed="0.000309"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:00:34.254381" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:00:34.221914" elapsed="0.032682"/>
</kw>
<msg time="2026-04-08T01:00:34.254816" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T01:00:34.254866" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:34.221560" elapsed="0.033343"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T01:00:34.298527" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "S "w "i "t "c "h "[C "M "o "v "e "s "[C "T "o "[C "C "u "r "r "e "n "t "[C "M "a "s "t "e "r "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T01:00:34.255639" elapsed="0.043315"/>
</kw>
<msg time="2026-04-08T01:00:34.299450" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T01:00:34.299557" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "S "w "i "t "c "h...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:34.255185" elapsed="0.044451"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:34.300208" elapsed="0.000028"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:34.299835" elapsed="0.000436"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:34.299795" elapsed="0.000505"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:00:34.300851" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "S "w "i "t "c "h "[C "M "o "v "e "s "[C "T "o "[C "C "u "r "r "e "n "t "[C "M "a "s "t "e "r "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:00:34.300452" elapsed="0.000474"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:34.301239" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:34.300995" elapsed="0.000301"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:34.300976" elapsed="0.000343"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T01:00:34.301357" elapsed="0.000040"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:00:34.304254" elapsed="0.000200"/>
</kw>
<msg time="2026-04-08T01:00:34.304523" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:00:34.303019" elapsed="0.001647"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:34.304942" elapsed="0.000075"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:34.305298" elapsed="0.000091"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:00:34.302311" elapsed="0.003197"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T01:00:34.301704" elapsed="0.003872"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T01:00:34.219869" elapsed="0.085880"/>
</kw>
<msg time="2026-04-08T01:00:34.305859" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:00:34.305903" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "S "w "i "t "c "h...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:34.219172" elapsed="0.086768"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T01:00:34.306170" elapsed="0.000031"/>
</return>
<status status="PASS" start="2026-04-08T01:00:34.306032" elapsed="0.000205"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:34.306007" elapsed="0.000255"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 3,
close the previous connection. In any case create a new connection
to karaf console for 3, set correct prompt set and login to karaf console.
Store connection index for 3 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:34.308580" elapsed="0.000042"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:34.308975" elapsed="0.000026"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T01:00:34.309053" elapsed="0.000019"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T01:00:34.218264" elapsed="0.090938"/>
</kw>
<msg time="2026-04-08T01:00:34.309317" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:00:34.309363" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "S "w "i "t "c "h...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:34.213082" elapsed="0.096317"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:34.309768" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:34.309483" elapsed="0.000339"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:34.309464" elapsed="0.000382"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T01:00:34.212930" elapsed="0.096940"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-08T01:00:34.023995" elapsed="0.285908"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-08T01:00:34.021141" elapsed="0.288820"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-08T01:00:34.015893" elapsed="0.294556"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:34.015439" elapsed="0.295058"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-08T01:00:34.012370" elapsed="0.298180"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:00:34.315211" level="FAIL">Variable '${current_new_owner}' not found.</msg>
<var>${current_new_master}</var>
<arg>${ODL_SYSTEM_${current_new_owner}_IP}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="FAIL" start="2026-04-08T01:00:34.310726" elapsed="0.004534">Variable '${current_new_owner}' not found.</status>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<arg>10s</arg>
<arg>1s</arg>
<arg>OvsManager.Should Be Master</arg>
<arg>s1</arg>
<arg>${current_new_master}</arg>
<arg>update_data=${True}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:34.315464" elapsed="0.000022"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<arg>${current_new_owner}</arg>
<arg>${original_owner}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:34.315651" elapsed="0.000021"/>
</kw>
<doc>Check switch s1 is connected to original Master.</doc>
<status status="FAIL" start="2026-04-08T01:00:34.011799" elapsed="0.304024">Variable '${current_new_owner}' not found.</status>
</test>
<test id="s1-s4-t31" name="Check Linear Topology After Owner Disconnect" line="241">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-08T01:00:34.319761" elapsed="0.000260"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-08T01:00:34.319483" elapsed="0.000598"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:00:34.321188" elapsed="0.000022"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:00:34.321026" elapsed="0.000220"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:34.321002" elapsed="0.000268"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:00:34.326531" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:00:34.326393" elapsed="0.000193"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:34.326370" elapsed="0.000238"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:00:34.327759" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:00:34.327309" elapsed="0.000478"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:00:34.328396" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:00:34.328055" elapsed="0.000368"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T01:00:34.328469" elapsed="0.000038"/>
</return>
<msg time="2026-04-08T01:00:34.328637" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T01:00:34.326886" elapsed="0.001777"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:00:34.334942" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:00:34.334803" elapsed="0.000200"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:34.334777" elapsed="0.000249"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:00:34.336384" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:00:34.336270" elapsed="0.000162"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:34.336249" elapsed="0.000206"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:00:34.336937" level="INFO">${karaf_connection_index} = 476</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:00:34.336606" elapsed="0.000359"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:00:34.337418" level="INFO">${current_connection_index} = 495</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:00:34.337136" elapsed="0.000310"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:00:34.376948" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:00:34.338198" elapsed="0.038992"/>
</kw>
<msg time="2026-04-08T01:00:34.377428" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T01:00:34.377478" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:34.337612" elapsed="0.039903"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T01:00:34.423223" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "L "i "n "e "a "r "[C "T "o "p "o "l "o "g "y "[C "A "f "t "e "r "[C "O "w "n "e "r "[C "D "i "s "c "o "n "n "e "c "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T01:00:34.378222" elapsed="0.045215"/>
</kw>
<msg time="2026-04-08T01:00:34.423683" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T01:00:34.423733" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "L "i "n "e "a "r...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:34.377763" elapsed="0.046007"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:34.424270" elapsed="0.000028"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:34.423900" elapsed="0.000433"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:34.423861" elapsed="0.000500"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:00:34.424893" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "L "i "n "e "a "r "[C "T "o "p "o "l "o "g "y "[C "A "f "t "e "r "[C "O "w "n "e "r "[C "D "i "s "c "o "n "n "e "c "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:00:34.424515" elapsed="0.000458"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:34.425287" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:34.425043" elapsed="0.000301"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:34.425024" elapsed="0.000344"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T01:00:34.425406" elapsed="0.000039"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:00:34.428126" elapsed="0.000216"/>
</kw>
<msg time="2026-04-08T01:00:34.428404" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:00:34.426983" elapsed="0.001556"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:34.428813" elapsed="0.000073"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:34.429145" elapsed="0.000155"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:00:34.426334" elapsed="0.003082"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T01:00:34.425735" elapsed="0.003747"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T01:00:34.335920" elapsed="0.093663"/>
</kw>
<msg time="2026-04-08T01:00:34.429681" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:00:34.429726" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "L "i "n "e "a "r...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:34.335235" elapsed="0.094527"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T01:00:34.429951" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-08T01:00:34.429843" elapsed="0.000167"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:34.429823" elapsed="0.000210"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:34.430454" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:34.430798" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T01:00:34.430869" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T01:00:34.334369" elapsed="0.096611"/>
</kw>
<msg time="2026-04-08T01:00:34.431078" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:00:34.431124" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "L "i "n "e "a "r...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:34.329080" elapsed="0.102094"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:34.431520" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:34.431256" elapsed="0.000318"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:34.431238" elapsed="0.000359"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T01:00:34.328908" elapsed="0.102713"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:00:34.437318" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:00:34.437111" elapsed="0.000253"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:34.437092" elapsed="0.000294"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:00:34.438833" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:00:34.438724" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:34.438706" elapsed="0.000195"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:00:34.439393" level="INFO">${karaf_connection_index} = 478</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:00:34.439049" elapsed="0.000371"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:00:34.439833" level="INFO">${current_connection_index} = 495</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:00:34.439584" elapsed="0.000275"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:00:34.469591" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:00:34.440380" elapsed="0.029318"/>
</kw>
<msg time="2026-04-08T01:00:34.469865" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T01:00:34.469912" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:34.440022" elapsed="0.029925"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T01:00:34.509637" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "L "i "n "e "a "r "[C "T "o "p "o "l "o "g "y "[C "A "f "t "e "r "[C "O "w "n "e "r "[C "D "i "s "c "o "n "n "e "c "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T01:00:34.470568" elapsed="0.039189"/>
</kw>
<msg time="2026-04-08T01:00:34.509919" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T01:00:34.509965" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "L "i "n "e "a "r...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:34.470203" elapsed="0.039858"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:34.510433" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:34.510179" elapsed="0.000310"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:34.510126" elapsed="0.000390"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:00:34.510997" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "L "i "n "e "a "r "[C "T "o "p "o "l "o "g "y "[C "A "f "t "e "r "[C "O "w "n "e "r "[C "D "i "s "c "o "n "n "e "c "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:00:34.510662" elapsed="0.000411"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:34.511386" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:34.511143" elapsed="0.000298"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:34.511124" elapsed="0.000340"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T01:00:34.511499" elapsed="0.000032"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:00:34.514171" elapsed="0.000190"/>
</kw>
<msg time="2026-04-08T01:00:34.514424" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:00:34.513031" elapsed="0.001531"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:34.514848" elapsed="0.000088"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:34.515227" elapsed="0.000074"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:00:34.512373" elapsed="0.003041"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T01:00:34.511797" elapsed="0.003681"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T01:00:34.438420" elapsed="0.077158"/>
</kw>
<msg time="2026-04-08T01:00:34.515711" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:00:34.515759" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "L "i "n "e "a "r...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:34.437538" elapsed="0.078260"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T01:00:34.515987" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-08T01:00:34.515878" elapsed="0.000169"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:34.515858" elapsed="0.000212"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 2,
close the previous connection. In any case create a new connection
to karaf console for 2, set correct prompt set and login to karaf console.
Store connection index for 2 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:34.516483" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:34.516816" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T01:00:34.516888" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T01:00:34.436768" elapsed="0.080228"/>
</kw>
<msg time="2026-04-08T01:00:34.517091" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:00:34.517136" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "L "i "n "e "a "r...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:34.431901" elapsed="0.085289"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:34.517537" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:34.517271" elapsed="0.000321"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:34.517253" elapsed="0.000363"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T01:00:34.431751" elapsed="0.085889"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:00:34.525203" elapsed="0.000027"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:00:34.525007" elapsed="0.000276"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:34.524978" elapsed="0.000338"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:00:34.527020" elapsed="0.000177"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:00:34.526883" elapsed="0.000369"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:34.526859" elapsed="0.000429"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:00:34.527961" level="INFO">${karaf_connection_index} = 480</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:00:34.527518" elapsed="0.000481"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:00:34.528637" level="INFO">${current_connection_index} = 495</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:00:34.528269" elapsed="0.000407"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:00:34.562355" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:00:34.529471" elapsed="0.033163"/>
</kw>
<msg time="2026-04-08T01:00:34.562954" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T01:00:34.563031" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:34.528914" elapsed="0.034174"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T01:00:34.606372" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "L "i "n "e "a "r "[C "T "o "p "o "l "o "g "y "[C "A "f "t "e "r "[C "O "w "n "e "r "[C "D "i "s "c "o "n "n "e "c "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T01:00:34.564108" elapsed="0.042556"/>
</kw>
<msg time="2026-04-08T01:00:34.606974" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T01:00:34.607046" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "L "i "n "e "a "r...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:34.563498" elapsed="0.043602"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:34.607758" elapsed="0.000028"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:34.607324" elapsed="0.000496"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:34.607276" elapsed="0.000571"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:00:34.608415" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "L "i "n "e "a "r "[C "T "o "p "o "l "o "g "y "[C "A "f "t "e "r "[C "O "w "n "e "r "[C "D "i "s "c "o "n "n "e "c "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:00:34.607997" elapsed="0.000500"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:34.608792" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:34.608567" elapsed="0.000280"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:34.608548" elapsed="0.000322"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T01:00:34.608908" elapsed="0.000039"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:00:34.611725" elapsed="0.000221"/>
</kw>
<msg time="2026-04-08T01:00:34.612014" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:00:34.610550" elapsed="0.001626"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:34.612459" elapsed="0.000077"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:34.612799" elapsed="0.000076"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:00:34.609873" elapsed="0.003146"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T01:00:34.609260" elapsed="0.003832"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T01:00:34.526459" elapsed="0.086756"/>
</kw>
<msg time="2026-04-08T01:00:34.613316" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:00:34.613363" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "L "i "n "e "a "r...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:34.525566" elapsed="0.087836"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T01:00:34.613602" elapsed="0.000028"/>
</return>
<status status="PASS" start="2026-04-08T01:00:34.613485" elapsed="0.000179"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:34.613465" elapsed="0.000224"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 3,
close the previous connection. In any case create a new connection
to karaf console for 3, set correct prompt set and login to karaf console.
Store connection index for 3 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:34.614144" elapsed="0.000046"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:34.614588" elapsed="0.000026"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T01:00:34.614663" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T01:00:34.524489" elapsed="0.090287"/>
</kw>
<msg time="2026-04-08T01:00:34.614875" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:00:34.614921" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "L "i "n "e "a "r...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:34.517958" elapsed="0.097011"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:34.615405" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:34.615094" elapsed="0.000368"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:34.615066" elapsed="0.000420"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T01:00:34.517807" elapsed="0.097704"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-08T01:00:34.328722" elapsed="0.286825"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-08T01:00:34.325905" elapsed="0.289705"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-08T01:00:34.320718" elapsed="0.294952"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:34.320253" elapsed="0.295465"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-08T01:00:34.316844" elapsed="0.298931"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Check Linear Topology On Member" owner="ClusterOpenFlow">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:00:34.618342" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:00:34.617733" elapsed="0.000638"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T01:00:34.618419" elapsed="0.000032"/>
</return>
<msg time="2026-04-08T01:00:34.618574" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T01:00:34.617367" elapsed="0.001232"/>
</kw>
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T01:00:34.633325" level="INFO">GET Request : url=http://10.30.170.48:8181/rests/data/network-topology:network-topology?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01s3bfo0y24i1es90l47mavglv0.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T01:00:34.633858" level="INFO">GET Response : url=http://10.30.170.48:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '2973'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}} 
 </msg>
<msg time="2026-04-08T01:00:34.634711" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${RFC8040_OPERATIONAL_TOPO_API}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T01:00:34.618761" elapsed="0.016036"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:00:34.641218" level="INFO">{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}}</msg>
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:00:34.635335" elapsed="0.006039"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"node-id":"openflow:${switch}"</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-08T01:00:34.645047" elapsed="0.002742"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-08T01:00:34.648001" elapsed="0.002671"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-08T01:00:34.650868" elapsed="0.002669"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-08T01:00:34.653726" elapsed="0.002656"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-08T01:00:34.656582" elapsed="0.002624"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:00:34.659894" level="INFO">${edge} = True</msg>
<var>${edge}</var>
<arg>${switch}==1 or ${switch}==${switches}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:00:34.659409" elapsed="0.000514"/>
</kw>
<if>
<branch type="IF" condition="not ${edge}">
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:3"</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:34.660283" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:34.660021" elapsed="0.000320"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:34.659991" elapsed="0.000381"/>
</if>
<if>
<branch type="IF" condition="not ${edge}">
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:3"</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:34.660655" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:34.660428" elapsed="0.000283"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:34.660413" elapsed="0.000320"/>
</if>
<if>
<branch type="IF" condition="not ${edge}">
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:3</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:34.661010" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:34.660786" elapsed="0.000279"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:34.660770" elapsed="0.000317"/>
</if>
<var name="${switch}">1</var>
<status status="PASS" start="2026-04-08T01:00:34.644828" elapsed="0.016283"/>
</iter>
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"node-id":"openflow:${switch}"</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-08T01:00:34.661529" elapsed="0.002615"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-08T01:00:34.664403" elapsed="0.002886"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-08T01:00:34.667481" elapsed="0.002528"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-08T01:00:34.670239" elapsed="0.002515"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-08T01:00:34.672944" elapsed="0.002584"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:00:34.676432" level="INFO">${edge} = False</msg>
<var>${edge}</var>
<arg>${switch}==1 or ${switch}==${switches}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:00:34.675886" elapsed="0.000575"/>
</kw>
<if>
<branch type="IF" condition="not ${edge}">
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:3"</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-08T01:00:34.676783" elapsed="0.002614"/>
</kw>
<status status="PASS" start="2026-04-08T01:00:34.676542" elapsed="0.002896"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:34.676519" elapsed="0.002949"/>
</if>
<if>
<branch type="IF" condition="not ${edge}">
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:3"</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-08T01:00:34.679790" elapsed="0.002657"/>
</kw>
<status status="PASS" start="2026-04-08T01:00:34.679526" elapsed="0.002963"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:34.679509" elapsed="0.003005"/>
</if>
<if>
<branch type="IF" condition="not ${edge}">
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:3</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-08T01:00:34.682807" elapsed="0.002778"/>
</kw>
<status status="PASS" start="2026-04-08T01:00:34.682570" elapsed="0.003058"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:34.682554" elapsed="0.003100"/>
</if>
<var name="${switch}">2</var>
<status status="PASS" start="2026-04-08T01:00:34.661373" elapsed="0.024306"/>
</iter>
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"node-id":"openflow:${switch}"</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-08T01:00:34.686079" elapsed="0.002573"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-08T01:00:34.688842" elapsed="0.002661"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-08T01:00:34.691690" elapsed="0.003048"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-08T01:00:34.694923" elapsed="0.002537"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-08T01:00:34.697659" elapsed="0.002541"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:00:34.700850" level="INFO">${edge} = True</msg>
<var>${edge}</var>
<arg>${switch}==1 or ${switch}==${switches}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:00:34.700390" elapsed="0.000489"/>
</kw>
<if>
<branch type="IF" condition="not ${edge}">
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:3"</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:34.701256" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:34.700968" elapsed="0.000350"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:34.700946" elapsed="0.000396"/>
</if>
<if>
<branch type="IF" condition="not ${edge}">
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:3"</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:34.701630" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:34.701399" elapsed="0.000288"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:34.701383" elapsed="0.000327"/>
</if>
<if>
<branch type="IF" condition="not ${edge}">
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:3</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:34.701995" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:34.701763" elapsed="0.000292"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:34.701748" elapsed="0.000330"/>
</if>
<var name="${switch}">3</var>
<status status="PASS" start="2026-04-08T01:00:34.685918" elapsed="0.016183"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="PASS" start="2026-04-08T01:00:34.641501" elapsed="0.060629"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check Linear topology.</doc>
<status status="PASS" start="2026-04-08T01:00:34.616895" elapsed="0.085327"/>
</kw>
<arg>30s</arg>
<arg>1s</arg>
<arg>ClusterOpenFlow.Check Linear Topology On Member</arg>
<arg>${SWITCHES}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-08T01:00:34.615959" elapsed="0.086321"/>
</kw>
<doc>Check Linear Topology.</doc>
<status status="PASS" start="2026-04-08T01:00:34.316264" elapsed="0.386152"/>
</test>
<test id="s1-s4-t32" name="Check Stats Are Not Frozen After Owner Disconnect" line="245">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-08T01:00:34.706075" elapsed="0.000233"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-08T01:00:34.705781" elapsed="0.000627"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:00:34.707440" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:00:34.707324" elapsed="0.000165"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:34.707305" elapsed="0.000206"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:00:34.712488" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:00:34.712379" elapsed="0.000156"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:34.712361" elapsed="0.000203"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:00:34.713785" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:00:34.713298" elapsed="0.000522"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:00:34.714452" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:00:34.714037" elapsed="0.000450"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T01:00:34.714654" elapsed="0.000053"/>
</return>
<msg time="2026-04-08T01:00:34.714885" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T01:00:34.712867" elapsed="0.002052"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:00:34.721281" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:00:34.721131" elapsed="0.000208"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:34.721110" elapsed="0.000253"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:00:34.722579" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:00:34.722469" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:34.722451" elapsed="0.000195"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:00:34.723099" level="INFO">${karaf_connection_index} = 476</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:00:34.722794" elapsed="0.000332"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:00:34.723570" level="INFO">${current_connection_index} = 495</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:00:34.723311" elapsed="0.000286"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:00:34.772918" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:00:34.724098" elapsed="0.049037"/>
</kw>
<msg time="2026-04-08T01:00:34.773387" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T01:00:34.773435" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:34.723758" elapsed="0.049712"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T01:00:34.834261" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "S "t "a "t "s "[C "A "r "e "[C "N "o "t "[C "F "r "o "z "e "n "[C "A "f "t "e "r "[C "O "w "n "e "r "[C "D "i "s "c "o "n "n "e "c "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T01:00:34.774197" elapsed="0.060265"/>
</kw>
<msg time="2026-04-08T01:00:34.834675" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T01:00:34.834723" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "S "t "a "t "s "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:34.773727" elapsed="0.061034"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:34.835230" elapsed="0.000027"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:34.834879" elapsed="0.000412"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:34.834846" elapsed="0.000473"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:00:34.835830" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "S "t "a "t "s "[C "A "r "e "[C "N "o "t "[C "F "r "o "z "e "n "[C "A "f "t "e "r "[C "O "w "n "e "r "[C "D "i "s "c "o "n "n "e "c "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:00:34.835469" elapsed="0.000443"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:34.836218" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:34.835979" elapsed="0.000296"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:34.835961" elapsed="0.000337"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T01:00:34.836336" elapsed="0.000040"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:00:34.838983" elapsed="0.000211"/>
</kw>
<msg time="2026-04-08T01:00:34.839258" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:00:34.837935" elapsed="0.001459"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:34.839672" elapsed="0.000076"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:34.840005" elapsed="0.000075"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:00:34.837267" elapsed="0.002945"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T01:00:34.836672" elapsed="0.003669"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T01:00:34.722138" elapsed="0.118307"/>
</kw>
<msg time="2026-04-08T01:00:34.840565" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:00:34.840622" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "S "t "a "t "s "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:34.721525" elapsed="0.119135"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T01:00:34.840851" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-08T01:00:34.840743" elapsed="0.000167"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:34.840723" elapsed="0.000211"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:34.841360" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:34.841712" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T01:00:34.841784" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T01:00:34.720723" elapsed="0.121169"/>
</kw>
<msg time="2026-04-08T01:00:34.841990" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:00:34.842034" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "S "t "a "t "s "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:34.715459" elapsed="0.126611"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:34.842422" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:34.842170" elapsed="0.000306"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:34.842130" elapsed="0.000368"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T01:00:34.715252" elapsed="0.127270"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:00:34.848102" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:00:34.847994" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:34.847975" elapsed="0.000238"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:00:34.849438" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:00:34.849318" elapsed="0.000166"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:34.849300" elapsed="0.000206"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:00:34.849954" level="INFO">${karaf_connection_index} = 478</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:00:34.849653" elapsed="0.000328"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:00:34.850412" level="INFO">${current_connection_index} = 495</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:00:34.850142" elapsed="0.000297"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:00:34.880227" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:00:34.850940" elapsed="0.029419"/>
</kw>
<msg time="2026-04-08T01:00:34.880530" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T01:00:34.880579" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:34.850602" elapsed="0.030013"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T01:00:34.925678" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "S "t "a "t "s "[C "A "r "e "[C "N "o "t "[C "F "r "o "z "e "n "[C "A "f "t "e "r "[C "O "w "n "e "r "[C "D "i "s "c "o "n "n "e "c "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T01:00:34.881220" elapsed="0.044588"/>
</kw>
<msg time="2026-04-08T01:00:34.925972" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T01:00:34.926019" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "S "t "a "t "s "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:34.880821" elapsed="0.045236"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:34.926506" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:34.926246" elapsed="0.000317"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:34.926218" elapsed="0.000372"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:00:34.927050" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "S "t "a "t "s "[C "A "r "e "[C "N "o "t "[C "F "r "o "z "e "n "[C "A "f "t "e "r "[C "O "w "n "e "r "[C "D "i "s "c "o "n "n "e "c "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:00:34.926737" elapsed="0.000394"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:34.927440" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:34.927219" elapsed="0.000275"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:34.927199" elapsed="0.000318"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T01:00:34.927553" elapsed="0.000036"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:00:34.930266" elapsed="0.000186"/>
</kw>
<msg time="2026-04-08T01:00:34.930514" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:00:34.929141" elapsed="0.001508"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:34.930957" elapsed="0.000078"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:34.931316" elapsed="0.000072"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:00:34.928467" elapsed="0.003030"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T01:00:34.927883" elapsed="0.003678"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T01:00:34.848923" elapsed="0.082753"/>
</kw>
<msg time="2026-04-08T01:00:34.931770" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:00:34.931816" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "S "t "a "t "s "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:34.848367" elapsed="0.083486"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T01:00:34.932040" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-08T01:00:34.931932" elapsed="0.000166"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:34.931913" elapsed="0.000208"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 2,
close the previous connection. In any case create a new connection
to karaf console for 2, set correct prompt set and login to karaf console.
Store connection index for 2 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:34.932543" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:34.932877" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T01:00:34.932947" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T01:00:34.847647" elapsed="0.085406"/>
</kw>
<msg time="2026-04-08T01:00:34.933148" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:00:34.933210" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "S "t "a "t "s "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:34.842799" elapsed="0.090450"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:34.933618" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:34.933327" elapsed="0.000346"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:34.933309" elapsed="0.000387"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T01:00:34.842655" elapsed="0.091064"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:00:34.939543" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:00:34.939420" elapsed="0.000168"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:34.939400" elapsed="0.000210"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:00:34.940753" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:00:34.940645" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:34.940627" elapsed="0.000193"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:00:34.941333" level="INFO">${karaf_connection_index} = 480</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:00:34.941007" elapsed="0.000354"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:00:34.941774" level="INFO">${current_connection_index} = 495</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:00:34.941523" elapsed="0.000278"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:00:34.974927" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:00:34.942322" elapsed="0.032706"/>
</kw>
<msg time="2026-04-08T01:00:34.975210" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T01:00:34.975259" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:34.941964" elapsed="0.033330"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T01:00:35.025994" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "S "t "a "t "s "[C "A "r "e "[C "N "o "t "[C "F "r "o "z "e "n "[C "A "f "t "e "r "[C "O "w "n "e "r "[C "D "i "s "c "o "n "n "e "c "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T01:00:34.975817" elapsed="0.050357"/>
</kw>
<msg time="2026-04-08T01:00:35.026362" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T01:00:35.026408" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "S "t "a "t "s "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:34.975470" elapsed="0.050977"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:35.026823" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:35.026547" elapsed="0.000332"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:35.026518" elapsed="0.000387"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:00:35.027403" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "S "t "a "t "s "[C "A "r "e "[C "N "o "t "[C "F "r "o "z "e "n "[C "A "f "t "e "r "[C "O "w "n "e "r "[C "D "i "s "c "o "n "n "e "c "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:00:35.027051" elapsed="0.000429"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:35.027764" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:35.027546" elapsed="0.000271"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:35.027528" elapsed="0.000315"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T01:00:35.027879" elapsed="0.000037"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:00:35.030560" elapsed="0.000188"/>
</kw>
<msg time="2026-04-08T01:00:35.030808" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:00:35.029416" elapsed="0.001529"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:35.031237" elapsed="0.000076"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:35.031576" elapsed="0.000074"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:00:35.028767" elapsed="0.002991"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T01:00:35.028208" elapsed="0.003614"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T01:00:34.940344" elapsed="0.091575"/>
</kw>
<msg time="2026-04-08T01:00:35.032013" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:00:35.032057" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "S "t "a "t "s "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:34.939761" elapsed="0.092335"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T01:00:35.032299" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-08T01:00:35.032191" elapsed="0.000167"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:35.032170" elapsed="0.000211"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 3,
close the previous connection. In any case create a new connection
to karaf console for 3, set correct prompt set and login to karaf console.
Store connection index for 3 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:35.032774" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:35.033184" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T01:00:35.033256" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T01:00:34.938970" elapsed="0.094393"/>
</kw>
<msg time="2026-04-08T01:00:35.033465" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:00:35.033511" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "S "t "a "t "s "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:34.934009" elapsed="0.099538"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:35.033871" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:35.033623" elapsed="0.000300"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:35.033606" elapsed="0.000339"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T01:00:34.933859" elapsed="0.100109"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-08T01:00:34.714994" elapsed="0.319008"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-08T01:00:34.711996" elapsed="0.322065"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-08T01:00:34.707016" elapsed="0.327104"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:34.706572" elapsed="0.327616"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-08T01:00:34.703344" elapsed="0.330902"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Check Flow Stats Are Not Frozen">
<kw name="Extract Flow Duration">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:00:35.036472" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:00:35.036171" elapsed="0.000329"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T01:00:35.036544" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T01:00:35.036697" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T01:00:35.035803" elapsed="0.000919"/>
</kw>
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T01:00:35.053132" level="INFO">GET Request : url=http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0/flow=1?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0/flow=1?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node01s3bfo0y24i1es90l47mavglv0.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T01:00:35.053639" level="INFO">GET Response : url=http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0/flow=1?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '487'} 
 body={"flow-node-inventory:flow":[{"id":"1","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.1/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":1}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":30,"nanosecond":198000000}},"flags":""}]} 
 </msg>
<msg time="2026-04-08T01:00:35.053740" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${RFC8040_NODES_API}/node=openflow%3A1/flow-node-inventory:table=0/flow=1?content=nonconfig</arg>
<arg>headers=${headers}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T01:00:35.036883" elapsed="0.016883"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:00:35.059483" level="INFO">{"flow-node-inventory:flow":[{"id":"1","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.1/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":1}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":30,"nanosecond":198000000}},"flags":""}]}</msg>
<arg>${resp.content}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:00:35.054101" elapsed="0.005494"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:00:35.063922" level="INFO">${json_data} = {'flow-node-inventory:flow': [{'id': '1', 'table_id': 0, 'priority': 100, 'cookie_mask': '0', 'idle-timeout': 0, 'match': {'ethernet-match': {'ethernet-type': {'type': 2048}}, 'ipv4-destination': '10....</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:00:35.063495" elapsed="0.000455"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-08T01:00:35.063998" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T01:00:35.064180" level="INFO">${json_resp} = {'flow-node-inventory:flow': [{'id': '1', 'table_id': 0, 'priority': 100, 'cookie_mask': '0', 'idle-timeout': 0, 'match': {'ethernet-match': {'ethernet-type': {'type': 2048}}, 'ipv4-destination': '10....</msg>
<var>${json_resp}</var>
<arg>${resp.content}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-08T01:00:35.060075" elapsed="0.004134"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:00:35.064605" level="INFO">${flow_list} = [{'id': '1', 'table_id': 0, 'priority': 100, 'cookie_mask': '0', 'idle-timeout': 0, 'match': {'ethernet-match': {'ethernet-type': {'type': 2048}}, 'ipv4-destination': '10.0.10.1/32'}, 'cookie': '0', '...</msg>
<var>${flow_list}</var>
<arg>${json_resp}</arg>
<arg>flow-node-inventory:flow</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:00:35.064404" elapsed="0.000228"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:00:35.064987" level="INFO">${flow_stats} = {'packet-count': '0', 'byte-count': '0', 'duration': {'second': 30, 'nanosecond': 198000000}}</msg>
<var>${flow_stats}</var>
<arg>${flow_list}[0]</arg>
<arg>opendaylight-flow-statistics:flow-statistics</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:00:35.064786" elapsed="0.000227"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:00:35.065375" level="INFO">${duration} = 30</msg>
<var>${duration}</var>
<arg>${flow_stats}[duration]</arg>
<arg>second</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:00:35.065193" elapsed="0.000207"/>
</kw>
<return>
<value>${duration}</value>
<status status="PASS" start="2026-04-08T01:00:35.065446" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T01:00:35.065593" level="INFO">${duration_1} = 30</msg>
<var>${duration_1}</var>
<arg>${member_index}</arg>
<doc>Extract duration for flow 1 in switch 1.</doc>
<status status="PASS" start="2026-04-08T01:00:35.035244" elapsed="0.030374"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:00:35.066082" level="INFO">${duration_1} = 30</msg>
<var>${duration_1}</var>
<arg>${duration_1}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:00:35.065772" elapsed="0.000335"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-08T01:00:40.066725" level="INFO">Slept 5 seconds.</msg>
<arg>${period_in_seconds}</arg>
<doc>Pauses the test executed for the given time.</doc>
<status status="PASS" start="2026-04-08T01:00:35.066279" elapsed="5.000680"/>
</kw>
<kw name="Extract Flow Duration">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:00:40.070289" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:00:40.069450" elapsed="0.000916"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T01:00:40.070509" elapsed="0.000090"/>
</return>
<msg time="2026-04-08T01:00:40.070886" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T01:00:40.068580" elapsed="0.002363"/>
</kw>
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T01:00:40.081703" level="INFO">GET Request : url=http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0/flow=1?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0/flow=1?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node01s3bfo0y24i1es90l47mavglv0.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T01:00:40.082368" level="INFO">GET Response : url=http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0/flow=1?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '487'} 
 body={"flow-node-inventory:flow":[{"id":"1","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.1/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":1}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":36,"nanosecond":290000000}},"flags":""}]} 
 </msg>
<msg time="2026-04-08T01:00:40.082513" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${RFC8040_NODES_API}/node=openflow%3A1/flow-node-inventory:table=0/flow=1?content=nonconfig</arg>
<arg>headers=${headers}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T01:00:40.071339" elapsed="0.011207"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:00:40.086440" level="INFO">{"flow-node-inventory:flow":[{"id":"1","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.1/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":1}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":36,"nanosecond":290000000}},"flags":""}]}</msg>
<arg>${resp.content}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:00:40.082867" elapsed="0.003649"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:00:40.091117" level="INFO">${json_data} = {'flow-node-inventory:flow': [{'id': '1', 'table_id': 0, 'priority': 100, 'cookie_mask': '0', 'idle-timeout': 0, 'match': {'ethernet-match': {'ethernet-type': {'type': 2048}}, 'ipv4-destination': '10....</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:00:40.090474" elapsed="0.000707"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-08T01:00:40.091256" elapsed="0.000052"/>
</return>
<msg time="2026-04-08T01:00:40.091511" level="INFO">${json_resp} = {'flow-node-inventory:flow': [{'id': '1', 'table_id': 0, 'priority': 100, 'cookie_mask': '0', 'idle-timeout': 0, 'match': {'ethernet-match': {'ethernet-type': {'type': 2048}}, 'ipv4-destination': '10....</msg>
<var>${json_resp}</var>
<arg>${resp.content}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-08T01:00:40.086894" elapsed="0.004655"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:00:40.092052" level="INFO">${flow_list} = [{'id': '1', 'table_id': 0, 'priority': 100, 'cookie_mask': '0', 'idle-timeout': 0, 'match': {'ethernet-match': {'ethernet-type': {'type': 2048}}, 'ipv4-destination': '10.0.10.1/32'}, 'cookie': '0', '...</msg>
<var>${flow_list}</var>
<arg>${json_resp}</arg>
<arg>flow-node-inventory:flow</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:00:40.091771" elapsed="0.000321"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:00:40.092611" level="INFO">${flow_stats} = {'packet-count': '0', 'byte-count': '0', 'duration': {'second': 36, 'nanosecond': 290000000}}</msg>
<var>${flow_stats}</var>
<arg>${flow_list}[0]</arg>
<arg>opendaylight-flow-statistics:flow-statistics</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:00:40.092333" elapsed="0.000316"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:00:40.093301" level="INFO">${duration} = 36</msg>
<var>${duration}</var>
<arg>${flow_stats}[duration]</arg>
<arg>second</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:00:40.093009" elapsed="0.000328"/>
</kw>
<return>
<value>${duration}</value>
<status status="PASS" start="2026-04-08T01:00:40.093403" elapsed="0.000040"/>
</return>
<msg time="2026-04-08T01:00:40.093611" level="INFO">${duration_2} = 36</msg>
<var>${duration_2}</var>
<arg>${member_index}</arg>
<doc>Extract duration for flow 1 in switch 1.</doc>
<status status="PASS" start="2026-04-08T01:00:40.067574" elapsed="0.026086"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:00:40.094351" level="INFO">${duration_2} = 36</msg>
<var>${duration_2}</var>
<arg>${duration_2}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:00:40.093883" elapsed="0.000505"/>
</kw>
<kw name="Should Not Be Equal As Integers" owner="BuiltIn">
<arg>${duration_1}</arg>
<arg>${duration_2}</arg>
<doc>Fails if objects are equal after converting them to integers.</doc>
<status status="PASS" start="2026-04-08T01:00:40.094646" elapsed="0.000453"/>
</kw>
<doc>Verify flow stats are not frozen for flow 1 and switch 1.</doc>
<status status="PASS" start="2026-04-08T01:00:35.034891" elapsed="5.060322"/>
</kw>
<arg>30s</arg>
<arg>1s</arg>
<arg>Check Flow Stats Are Not Frozen</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-08T01:00:35.034424" elapsed="5.060856"/>
</kw>
<doc>Check that duration flow stat is increasing.</doc>
<status status="PASS" start="2026-04-08T01:00:34.702748" elapsed="5.392696"/>
</test>
<test id="s1-s4-t33" name="Remove Flows And Groups After Owner Disconnected" line="249">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-08T01:00:40.099381" elapsed="0.000211"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-08T01:00:40.099092" elapsed="0.000556"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:00:40.100701" elapsed="0.000020"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:00:40.100576" elapsed="0.000184"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:40.100555" elapsed="0.000229"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:00:40.105751" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:00:40.105639" elapsed="0.000157"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:40.105620" elapsed="0.000199"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:00:40.106848" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:00:40.106458" elapsed="0.000425"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:00:40.107391" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:00:40.107060" elapsed="0.000357"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T01:00:40.107463" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T01:00:40.107620" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T01:00:40.106054" elapsed="0.001592"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:00:40.113306" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:00:40.113191" elapsed="0.000162"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:40.113169" elapsed="0.000206"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:00:40.114616" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:00:40.114506" elapsed="0.000157"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:40.114487" elapsed="0.000199"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:00:40.115182" level="INFO">${karaf_connection_index} = 476</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:00:40.114836" elapsed="0.000375"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:00:40.115646" level="INFO">${current_connection_index} = 495</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:00:40.115377" elapsed="0.000296"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:00:40.164437" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:00:40.116237" elapsed="0.048313"/>
</kw>
<msg time="2026-04-08T01:00:40.164720" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T01:00:40.164767" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:40.115838" elapsed="0.048965"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T01:00:40.215932" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "R "e "m "o "v "e "[C "F "l "o "w "s "[C "A "n "d "[C "G "r "o "u "p "s "[C "A "f "t "e "r "[C "O "w "n "e "r "[C "D "i "s "c "o "n "n "e "c "t "e "d "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T01:00:40.165403" elapsed="0.050706"/>
</kw>
<msg time="2026-04-08T01:00:40.216305" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T01:00:40.216369" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "R "e "m "o "v "e "[C "F "l "o "w "s...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:40.165018" elapsed="0.051389"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:40.216742" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:40.216496" elapsed="0.000302"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:40.216472" elapsed="0.000352"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:00:40.217300" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "R "e "m "o "v "e "[C "F "l "o "w "s "[C "A "n "d "[C "G "r "o "u "p "s "[C "A "f "t "e "r "[C "O "w "n "e "r "[C "D "i "s "c "o "n "n "e "c "t "e "d "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:00:40.216970" elapsed="0.000406"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:40.217668" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:40.217444" elapsed="0.000278"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:40.217426" elapsed="0.000319"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T01:00:40.217779" elapsed="0.000032"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:00:40.220310" elapsed="0.000185"/>
</kw>
<msg time="2026-04-08T01:00:40.220555" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:00:40.219286" elapsed="0.001404"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:40.220963" elapsed="0.000074"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:40.221314" elapsed="0.000073"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:00:40.218646" elapsed="0.002849"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T01:00:40.218071" elapsed="0.003488"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T01:00:40.114194" elapsed="0.107461"/>
</kw>
<msg time="2026-04-08T01:00:40.221747" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:00:40.221791" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "R "e "m "o "v "e "[C "F "l "o "w "s...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:40.113547" elapsed="0.108279"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T01:00:40.222011" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-08T01:00:40.221903" elapsed="0.000166"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:40.221885" elapsed="0.000208"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:40.222503" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:40.222840" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T01:00:40.222910" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T01:00:40.112828" elapsed="0.110189"/>
</kw>
<msg time="2026-04-08T01:00:40.223110" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:00:40.223153" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "R "e "m "o "v "e "[C "F "l "o "w "s...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:40.108077" elapsed="0.115128"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:40.223532" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:40.223281" elapsed="0.000303"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:40.223264" elapsed="0.000343"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T01:00:40.107880" elapsed="0.115749"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:00:40.230833" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:00:40.230723" elapsed="0.000192"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:40.230704" elapsed="0.000234"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:00:40.232091" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:00:40.231981" elapsed="0.000156"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:40.231963" elapsed="0.000230"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:00:40.232646" level="INFO">${karaf_connection_index} = 478</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:00:40.232345" elapsed="0.000328"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:00:40.233086" level="INFO">${current_connection_index} = 495</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:00:40.232836" elapsed="0.000277"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:00:40.265124" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:00:40.233649" elapsed="0.031656"/>
</kw>
<msg time="2026-04-08T01:00:40.265556" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T01:00:40.265630" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:40.233306" elapsed="0.032380"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T01:00:40.309637" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "R "e "m "o "v "e "[C "F "l "o "w "s "[C "A "n "d "[C "G "r "o "u "p "s "[C "A "f "t "e "r "[C "O "w "n "e "r "[C "D "i "s "c "o "n "n "e "c "t "e "d "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T01:00:40.266525" elapsed="0.043235"/>
</kw>
<msg time="2026-04-08T01:00:40.309926" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T01:00:40.309977" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "R "e "m "o "v "e "[C "F "l "o "w "s...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:40.265955" elapsed="0.044058"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:40.310364" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:40.310099" elapsed="0.000321"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:40.310075" elapsed="0.000370"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:00:40.310894" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "R "e "m "o "v "e "[C "F "l "o "w "s "[C "A "n "d "[C "G "r "o "u "p "s "[C "A "f "t "e "r "[C "O "w "n "e "r "[C "D "i "s "c "o "n "n "e "c "t "e "d "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:00:40.310589" elapsed="0.000380"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:40.311273" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:40.311036" elapsed="0.000291"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:40.311018" elapsed="0.000345"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T01:00:40.311396" elapsed="0.000034"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:00:40.313984" elapsed="0.000202"/>
</kw>
<msg time="2026-04-08T01:00:40.314248" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:00:40.312873" elapsed="0.001507"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:40.314650" elapsed="0.000075"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:40.314995" elapsed="0.000073"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:00:40.312250" elapsed="0.002946"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T01:00:40.311686" elapsed="0.003574"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T01:00:40.231676" elapsed="0.083714"/>
</kw>
<msg time="2026-04-08T01:00:40.315483" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:00:40.315526" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "R "e "m "o "v "e "[C "F "l "o "w "s...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:40.231094" elapsed="0.084468"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T01:00:40.315808" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-08T01:00:40.315700" elapsed="0.000166"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:40.315679" elapsed="0.000210"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 2,
close the previous connection. In any case create a new connection
to karaf console for 2, set correct prompt set and login to karaf console.
Store connection index for 2 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:40.316297" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:40.316629" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T01:00:40.316699" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T01:00:40.230374" elapsed="0.086431"/>
</kw>
<msg time="2026-04-08T01:00:40.316899" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:00:40.316943" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "R "e "m "o "v "e "[C "F "l "o "w "s...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:40.223896" elapsed="0.093081"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:40.317330" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:40.317052" elapsed="0.000332"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:40.317035" elapsed="0.000372"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T01:00:40.223754" elapsed="0.093677"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:00:40.323072" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:00:40.322965" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:40.322946" elapsed="0.000193"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:00:40.324308" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:00:40.324199" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:40.324179" elapsed="0.000197"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:00:40.324818" level="INFO">${karaf_connection_index} = 480</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:00:40.324521" elapsed="0.000323"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:00:40.325276" level="INFO">${current_connection_index} = 495</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:00:40.325008" elapsed="0.000295"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:00:40.358034" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:00:40.325799" elapsed="0.032489"/>
</kw>
<msg time="2026-04-08T01:00:40.358654" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T01:00:40.358772" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:40.325463" elapsed="0.033437"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T01:00:40.407295" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "R "e "m "o "v "e "[C "F "l "o "w "s "[C "A "n "d "[C "G "r "o "u "p "s "[C "A "f "t "e "r "[C "O "w "n "e "r "[C "D "i "s "c "o "n "n "e "c "t "e "d "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T01:00:40.360235" elapsed="0.047193"/>
</kw>
<msg time="2026-04-08T01:00:40.407600" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T01:00:40.407647" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "R "e "m "o "v "e "[C "F "l "o "w "s...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:40.359355" elapsed="0.048328"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:40.408027" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:40.407775" elapsed="0.000310"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:40.407751" elapsed="0.000361"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:00:40.408615" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "R "e "m "o "v "e "[C "F "l "o "w "s "[C "A "n "d "[C "G "r "o "u "p "s "[C "A "f "t "e "r "[C "O "w "n "e "r "[C "D "i "s "c "o "n "n "e "c "t "e "d "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:00:40.408282" elapsed="0.000410"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:40.409085" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:40.408850" elapsed="0.000292"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:40.408829" elapsed="0.000356"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T01:00:40.409223" elapsed="0.000034"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:00:40.411878" elapsed="0.000188"/>
</kw>
<msg time="2026-04-08T01:00:40.412129" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:00:40.410820" elapsed="0.001466"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:40.412576" elapsed="0.000078"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:40.412917" elapsed="0.000076"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:00:40.410110" elapsed="0.002998"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T01:00:40.409537" elapsed="0.003662"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T01:00:40.323874" elapsed="0.089430"/>
</kw>
<msg time="2026-04-08T01:00:40.413402" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:00:40.413449" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "R "e "m "o "v "e "[C "F "l "o "w "s...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:40.323319" elapsed="0.090178"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T01:00:40.413692" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-08T01:00:40.413580" elapsed="0.000173"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:40.413560" elapsed="0.000217"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 3,
close the previous connection. In any case create a new connection
to karaf console for 3, set correct prompt set and login to karaf console.
Store connection index for 3 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:40.414253" elapsed="0.000027"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:40.414610" elapsed="0.000026"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T01:00:40.414684" elapsed="0.000017"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T01:00:40.322624" elapsed="0.092171"/>
</kw>
<msg time="2026-04-08T01:00:40.414891" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:00:40.414943" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "R "e "m "o "v "e "[C "F "l "o "w "s...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:40.317696" elapsed="0.097293"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:40.415364" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:40.415087" elapsed="0.000331"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:40.415065" elapsed="0.000378"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T01:00:40.317555" elapsed="0.097912"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-08T01:00:40.107702" elapsed="0.307806"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-08T01:00:40.105253" elapsed="0.310317"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-08T01:00:40.100274" elapsed="0.315354"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:40.099809" elapsed="0.315866"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-08T01:00:40.096482" elapsed="0.319250"/>
</kw>
<kw name="Remove Single Group And Flow On Member">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:00:40.416955" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:00:40.416645" elapsed="0.000337"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T01:00:40.417027" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T01:00:40.417200" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T01:00:40.416279" elapsed="0.000948"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="DELETE On Session" owner="RequestsLibrary">
<msg time="2026-04-08T01:00:40.430856" level="INFO">DELETE Request : url=http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0/flow=1 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0/flow=1 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01s3bfo0y24i1es90l47mavglv0.node0', 'Content-Length': '0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T01:00:40.430903" level="INFO">DELETE Response : url=http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0/flow=1 
 status=204, reason=No Content 
 headers={} 
 body=None 
 </msg>
<arg>${session}</arg>
<arg>url=${RFC8040_NODES_API}/node=openflow%3A${switch}/flow-node-inventory:table=0/flow=1</arg>
<doc>Sends a DELETE request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T01:00:40.420016" elapsed="0.010959"/>
</kw>
<kw name="DELETE On Session" owner="RequestsLibrary">
<msg time="2026-04-08T01:00:40.443851" level="INFO">DELETE Request : url=http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:group=1 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:group=1 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01s3bfo0y24i1es90l47mavglv0.node0', 'Content-Length': '0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T01:00:40.443896" level="INFO">DELETE Response : url=http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:group=1 
 status=204, reason=No Content 
 headers={} 
 body=None 
 </msg>
<arg>${session}</arg>
<arg>url=${RFC8040_NODES_API}/node=openflow%3A${switch}/flow-node-inventory:group=1</arg>
<doc>Sends a DELETE request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T01:00:40.431138" elapsed="0.012816"/>
</kw>
<kw name="DELETE On Session" owner="RequestsLibrary">
<msg time="2026-04-08T01:00:40.452008" level="INFO">DELETE Request : url=http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:group=1000 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:group=1000 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01s3bfo0y24i1es90l47mavglv0.node0', 'Content-Length': '0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T01:00:40.452052" level="INFO">DELETE Response : url=http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:group=1000 
 status=204, reason=No Content 
 headers={} 
 body=None 
 </msg>
<arg>${session}</arg>
<arg>url=${RFC8040_NODES_API}/node=openflow%3A${switch}/flow-node-inventory:group=1000</arg>
<doc>Sends a DELETE request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T01:00:40.444115" elapsed="0.007994"/>
</kw>
<var name="${switch}">1</var>
<status status="PASS" start="2026-04-08T01:00:40.419867" elapsed="0.032282"/>
</iter>
<iter>
<kw name="DELETE On Session" owner="RequestsLibrary">
<msg time="2026-04-08T01:00:40.460779" level="INFO">DELETE Request : url=http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A2/flow-node-inventory:table=0/flow=1 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A2/flow-node-inventory:table=0/flow=1 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01s3bfo0y24i1es90l47mavglv0.node0', 'Content-Length': '0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T01:00:40.460823" level="INFO">DELETE Response : url=http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A2/flow-node-inventory:table=0/flow=1 
 status=204, reason=No Content 
 headers={} 
 body=None 
 </msg>
<arg>${session}</arg>
<arg>url=${RFC8040_NODES_API}/node=openflow%3A${switch}/flow-node-inventory:table=0/flow=1</arg>
<doc>Sends a DELETE request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T01:00:40.452408" elapsed="0.008472"/>
</kw>
<kw name="DELETE On Session" owner="RequestsLibrary">
<msg time="2026-04-08T01:00:40.468968" level="INFO">DELETE Request : url=http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A2/flow-node-inventory:group=1 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A2/flow-node-inventory:group=1 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01s3bfo0y24i1es90l47mavglv0.node0', 'Content-Length': '0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T01:00:40.469013" level="INFO">DELETE Response : url=http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A2/flow-node-inventory:group=1 
 status=204, reason=No Content 
 headers={} 
 body=None 
 </msg>
<arg>${session}</arg>
<arg>url=${RFC8040_NODES_API}/node=openflow%3A${switch}/flow-node-inventory:group=1</arg>
<doc>Sends a DELETE request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T01:00:40.461040" elapsed="0.008031"/>
</kw>
<kw name="DELETE On Session" owner="RequestsLibrary">
<msg time="2026-04-08T01:00:40.475975" level="INFO">DELETE Request : url=http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A2/flow-node-inventory:group=1000 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A2/flow-node-inventory:group=1000 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01s3bfo0y24i1es90l47mavglv0.node0', 'Content-Length': '0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T01:00:40.476019" level="INFO">DELETE Response : url=http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A2/flow-node-inventory:group=1000 
 status=204, reason=No Content 
 headers={} 
 body=None 
 </msg>
<arg>${session}</arg>
<arg>url=${RFC8040_NODES_API}/node=openflow%3A${switch}/flow-node-inventory:group=1000</arg>
<doc>Sends a DELETE request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T01:00:40.469255" elapsed="0.006821"/>
</kw>
<var name="${switch}">2</var>
<status status="PASS" start="2026-04-08T01:00:40.452271" elapsed="0.023845"/>
</iter>
<iter>
<kw name="DELETE On Session" owner="RequestsLibrary">
<msg time="2026-04-08T01:00:40.482623" level="INFO">DELETE Request : url=http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A3/flow-node-inventory:table=0/flow=1 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A3/flow-node-inventory:table=0/flow=1 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01s3bfo0y24i1es90l47mavglv0.node0', 'Content-Length': '0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T01:00:40.482668" level="INFO">DELETE Response : url=http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A3/flow-node-inventory:table=0/flow=1 
 status=204, reason=No Content 
 headers={} 
 body=None 
 </msg>
<arg>${session}</arg>
<arg>url=${RFC8040_NODES_API}/node=openflow%3A${switch}/flow-node-inventory:table=0/flow=1</arg>
<doc>Sends a DELETE request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T01:00:40.476380" elapsed="0.006344"/>
</kw>
<kw name="DELETE On Session" owner="RequestsLibrary">
<msg time="2026-04-08T01:00:40.489395" level="INFO">DELETE Request : url=http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A3/flow-node-inventory:group=1 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A3/flow-node-inventory:group=1 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01s3bfo0y24i1es90l47mavglv0.node0', 'Content-Length': '0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T01:00:40.489438" level="INFO">DELETE Response : url=http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A3/flow-node-inventory:group=1 
 status=204, reason=No Content 
 headers={} 
 body=None 
 </msg>
<arg>${session}</arg>
<arg>url=${RFC8040_NODES_API}/node=openflow%3A${switch}/flow-node-inventory:group=1</arg>
<doc>Sends a DELETE request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T01:00:40.482929" elapsed="0.006584"/>
</kw>
<kw name="DELETE On Session" owner="RequestsLibrary">
<msg time="2026-04-08T01:00:40.496572" level="INFO">DELETE Request : url=http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A3/flow-node-inventory:group=1000 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A3/flow-node-inventory:group=1000 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01s3bfo0y24i1es90l47mavglv0.node0', 'Content-Length': '0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T01:00:40.496616" level="INFO">DELETE Response : url=http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A3/flow-node-inventory:group=1000 
 status=204, reason=No Content 
 headers={} 
 body=None 
 </msg>
<arg>${session}</arg>
<arg>url=${RFC8040_NODES_API}/node=openflow%3A${switch}/flow-node-inventory:group=1000</arg>
<doc>Sends a DELETE request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T01:00:40.489674" elapsed="0.007000"/>
</kw>
<var name="${switch}">3</var>
<status status="PASS" start="2026-04-08T01:00:40.476240" elapsed="0.020473"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="PASS" start="2026-04-08T01:00:40.417326" elapsed="0.079418"/>
</for>
<doc>Remove 1 group 1&amp;2 and 1 flow in every switch.</doc>
<status status="PASS" start="2026-04-08T01:00:40.415925" elapsed="0.080885"/>
</kw>
<doc>Remove 1 group 1&amp;2 and 1 flow in every switch.</doc>
<status status="PASS" start="2026-04-08T01:00:40.095725" elapsed="0.401202"/>
</test>
<test id="s1-s4-t34" name="Check Flows In Operational DS After Owner Disconnected" line="253">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-08T01:00:40.500312" elapsed="0.000230"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-08T01:00:40.500028" elapsed="0.000569"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:00:40.501642" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:00:40.501516" elapsed="0.000174"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:40.501495" elapsed="0.000217"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:00:40.506526" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:00:40.506419" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:40.506401" elapsed="0.000192"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:00:40.507595" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:00:40.507211" elapsed="0.000411"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:00:40.508089" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:00:40.507783" elapsed="0.000331"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T01:00:40.508178" elapsed="0.000035"/>
</return>
<msg time="2026-04-08T01:00:40.508339" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T01:00:40.506821" elapsed="0.001543"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:00:40.514117" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:00:40.513952" elapsed="0.000232"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:40.513934" elapsed="0.000273"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:00:40.515574" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:00:40.515466" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:40.515448" elapsed="0.000194"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:00:40.516093" level="INFO">${karaf_connection_index} = 476</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:00:40.515790" elapsed="0.000331"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:00:40.516562" level="INFO">${current_connection_index} = 495</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:00:40.516305" elapsed="0.000284"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:00:40.549691" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:00:40.517091" elapsed="0.032701"/>
</kw>
<msg time="2026-04-08T01:00:40.550038" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T01:00:40.550086" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:40.516752" elapsed="0.033371"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T01:00:40.605667" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "[C "I "n "[C "O "p "e "r "a "t "i "o "n "a "l "[C "D "S "[C "A "f "t "e "r "[C "O "w "n "e "r "[C "D "i "s "c "o "n "n "e "c "[78Ct "[A[78Ce
 "d "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T01:00:40.550670" elapsed="0.055216"/>
</kw>
<msg time="2026-04-08T01:00:40.606114" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T01:00:40.606186" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:40.550322" elapsed="0.055904"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:40.606684" elapsed="0.000027"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:40.606346" elapsed="0.000399"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:40.606310" elapsed="0.000462"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:00:40.607324" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "[C "I "n "[C "O "p "e "r "a "t "i "o "n "a "l "[C "D "S "[C "A "f "t "e "r "[C "O "w "n "e "r "[C "D "i "s "c "o "n "n "e "c "[78Ct "[A[78Ce
 "d "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:00:40.606923" elapsed="0.000491"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:40.607705" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:40.607483" elapsed="0.000277"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:40.607464" elapsed="0.000319"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T01:00:40.607821" elapsed="0.000039"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:00:40.610621" elapsed="0.000192"/>
</kw>
<msg time="2026-04-08T01:00:40.610874" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:00:40.609486" elapsed="0.001524"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:40.611310" elapsed="0.000074"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:40.611645" elapsed="0.000071"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:00:40.608771" elapsed="0.003057"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T01:00:40.608153" elapsed="0.003741"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T01:00:40.515141" elapsed="0.096853"/>
</kw>
<msg time="2026-04-08T01:00:40.612091" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:00:40.612135" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:40.514558" elapsed="0.097646"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T01:00:40.612396" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-08T01:00:40.612286" elapsed="0.000170"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:40.612266" elapsed="0.000215"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:40.612892" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:40.613255" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T01:00:40.613327" elapsed="0.000017"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T01:00:40.513615" elapsed="0.099822"/>
</kw>
<msg time="2026-04-08T01:00:40.613533" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:00:40.613577" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:40.508907" elapsed="0.104761"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:40.614003" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:40.613748" elapsed="0.000309"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:40.613731" elapsed="0.000349"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T01:00:40.508755" elapsed="0.105349"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:00:40.620177" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:00:40.620029" elapsed="0.000197"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:40.620010" elapsed="0.000238"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:00:40.621391" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:00:40.621283" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:40.621265" elapsed="0.000193"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:00:40.621908" level="INFO">${karaf_connection_index} = 478</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:00:40.621604" elapsed="0.000331"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:00:40.622386" level="INFO">${current_connection_index} = 495</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:00:40.622098" elapsed="0.000315"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:00:40.656493" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:00:40.622923" elapsed="0.033684"/>
</kw>
<msg time="2026-04-08T01:00:40.656781" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T01:00:40.656830" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:40.622577" elapsed="0.034290"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T01:00:40.705806" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "[C "I "n "[C "O "p "e "r "a "t "i "o "n "a "l "[C "D "S "[C "A "f "t "e "r "[C "O "w "n "e "r "[C "D "i "s "c "o "n "n "e "c "[78Ct "[A[78Ce
 "d "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T01:00:40.657488" elapsed="0.048448"/>
</kw>
<msg time="2026-04-08T01:00:40.706121" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T01:00:40.706193" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:40.657060" elapsed="0.049173"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:40.706589" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:40.706329" elapsed="0.000317"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:40.706302" elapsed="0.000371"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:00:40.707187" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "[C "I "n "[C "O "p "e "r "a "t "i "o "n "a "l "[C "D "S "[C "A "f "t "e "r "[C "O "w "n "e "r "[C "D "i "s "c "o "n "n "e "c "[78Ct "[A[78Ce
 "d "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:00:40.706824" elapsed="0.000449"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:40.707573" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:40.707345" elapsed="0.000284"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:40.707326" elapsed="0.000327"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T01:00:40.707690" elapsed="0.000035"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:00:40.710585" elapsed="0.000196"/>
</kw>
<msg time="2026-04-08T01:00:40.710845" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:00:40.709294" elapsed="0.001690"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:40.711329" elapsed="0.000079"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:40.711680" elapsed="0.000076"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:00:40.708614" elapsed="0.003329"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T01:00:40.708006" elapsed="0.004007"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T01:00:40.620959" elapsed="0.091163"/>
</kw>
<msg time="2026-04-08T01:00:40.712243" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:00:40.712289" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:40.620402" elapsed="0.091925"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T01:00:40.712521" elapsed="0.000028"/>
</return>
<status status="PASS" start="2026-04-08T01:00:40.712409" elapsed="0.000174"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:40.712390" elapsed="0.000218"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 2,
close the previous connection. In any case create a new connection
to karaf console for 2, set correct prompt set and login to karaf console.
Store connection index for 2 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:40.713018" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:40.713398" elapsed="0.000026"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T01:00:40.713473" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T01:00:40.619678" elapsed="0.093909"/>
</kw>
<msg time="2026-04-08T01:00:40.713687" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:00:40.713733" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:40.614595" elapsed="0.099175"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:40.714145" elapsed="0.000049"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:40.713849" elapsed="0.000380"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:40.713831" elapsed="0.000422"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T01:00:40.614449" elapsed="0.099829"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:00:40.720196" elapsed="0.000019"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:00:40.720066" elapsed="0.000182"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:40.720046" elapsed="0.000224"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:00:40.721456" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:00:40.721345" elapsed="0.000157"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:40.721325" elapsed="0.000199"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:00:40.721977" level="INFO">${karaf_connection_index} = 480</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:00:40.721674" elapsed="0.000330"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:00:40.722486" level="INFO">${current_connection_index} = 495</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:00:40.722212" elapsed="0.000301"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:00:40.758869" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:00:40.723089" elapsed="0.035975"/>
</kw>
<msg time="2026-04-08T01:00:40.759351" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T01:00:40.759411" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:40.722681" elapsed="0.036775"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T01:00:40.818441" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "[C "I "n "[C "O "p "e "r "a "t "i "o "n "a "l "[C "D "S "[C "A "f "t "e "r "[C "O "w "n "e "r "[C "D "i "s "c "o "n "n "e "c "[78Ct "[A[78Ce
 "d "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T01:00:40.760363" elapsed="0.058264"/>
</kw>
<msg time="2026-04-08T01:00:40.818827" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T01:00:40.818876" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:40.759763" elapsed="0.059151"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:40.819461" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:40.819121" elapsed="0.000402"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:40.819086" elapsed="0.000464"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:00:40.820079" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "[C "I "n "[C "O "p "e "r "a "t "i "o "n "a "l "[C "D "S "[C "A "f "t "e "r "[C "O "w "n "e "r "[C "D "i "s "c "o "n "n "e "c "[78Ct "[A[78Ce
 "d "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:00:40.819701" elapsed="0.000474"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:40.820492" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:40.820258" elapsed="0.000291"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:40.820234" elapsed="0.000339"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T01:00:40.820610" elapsed="0.000042"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:00:40.823432" elapsed="0.000195"/>
</kw>
<msg time="2026-04-08T01:00:40.823692" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:00:40.822280" elapsed="0.001552"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:40.824223" elapsed="0.000087"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:40.824581" elapsed="0.000079"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:00:40.821562" elapsed="0.003212"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T01:00:40.820947" elapsed="0.003894"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T01:00:40.721007" elapsed="0.103935"/>
</kw>
<msg time="2026-04-08T01:00:40.825040" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:00:40.825085" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:40.720429" elapsed="0.104694"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T01:00:40.825341" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-08T01:00:40.825224" elapsed="0.000177"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:40.825201" elapsed="0.000223"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 3,
close the previous connection. In any case create a new connection
to karaf console for 3, set correct prompt set and login to karaf console.
Store connection index for 3 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:40.825833" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:40.826219" elapsed="0.000032"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T01:00:40.826301" elapsed="0.000017"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T01:00:40.719699" elapsed="0.106716"/>
</kw>
<msg time="2026-04-08T01:00:40.826510" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:00:40.826555" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:40.714559" elapsed="0.112033"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:40.826924" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:40.826670" elapsed="0.000306"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:40.826653" elapsed="0.000346"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T01:00:40.714411" elapsed="0.112612"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-08T01:00:40.508416" elapsed="0.318642"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-08T01:00:40.506045" elapsed="0.321073"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-08T01:00:40.501208" elapsed="0.325988"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:40.500752" elapsed="0.326493"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-08T01:00:40.497816" elapsed="0.329539"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Check Number Of Flows On Member" owner="ClusterOpenFlow">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:00:40.829151" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:00:40.828851" elapsed="0.000345"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T01:00:40.829241" elapsed="0.000259"/>
</return>
<msg time="2026-04-08T01:00:40.829629" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T01:00:40.828500" elapsed="0.001155"/>
</kw>
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T01:00:40.871385" level="INFO">GET Request : url=http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01s3bfo0y24i1es90l47mavglv0.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T01:00:40.875936" level="INFO">GET Response : url=http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Transfer-Encoding': 'chunked'} 
 body={"opendaylight-inventory:nodes":{"node":[{"id":"openflow:3","flow-node-inventory:port-number":54950,"flow-node-inventory:table":[{"id":62,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":28,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":2,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":224,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":181,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":147,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":106,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":61,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":27,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":1,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":223,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":182,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":148,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":105,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":60,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":30,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":0,"flow":[{"id":"71","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.71/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":71}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":256000000}},"flags":""},{"id":"11","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.11/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":11}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":256000000}},"flags":""},{"id":"70","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.70/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":70}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":256000000}},"flags":""},{"id":"10","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.10/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":10}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":256000000}},"flags":""},{"id":"60","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.60/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":60}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":256000000}},"flags":""},{"id":"13","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.13/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":13}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":256000000}},"flags":""},{"id":"12","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.12/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":12}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":256000000}},"flags":""},{"id":"80","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.80/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":80}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":256000000}},"flags":""},{"id":"93","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.93/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":93}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":256000000}},"flags":""},{"id":"92","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.92/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":92}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":256000000}},"flags":""},{"id":"82","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.82/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":82}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":256000000}},"flags":""},{"id":"91","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.91/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":91}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":256000000}},"flags":""},{"id":"81","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.81/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":81}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":256000000}},"flags":""},{"id":"90","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.90/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":90}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":256000000}},"flags":""},{"id":"9","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.9/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":9}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":255000000}},"flags":""},{"id":"84","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.84/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":84}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":256000000}},"flags":""},{"id":"97","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.97/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":97}}]}}]},"hard-timeout":0,"opendaylight-flo... (set the log level to DEBUG or TRACE to see the full content) 
 </msg>
<msg time="2026-04-08T01:00:40.876465" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${RFC8040_OPERATIONAL_NODES_API}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T01:00:40.829816" elapsed="0.046711"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:00:40.882777" level="INFO">{"opendaylight-inventory:nodes":{"node":[{"id":"openflow:3","flow-node-inventory:port-number":54950,"flow-node-inventory:table":[{"id":62,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":28,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":2,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":224,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":181,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":147,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":106,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":61,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":27,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":1,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":223,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":182,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":148,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":105,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":60,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":30,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":0,"flow":[{"id":"71","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.71/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":71}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":256000000}},"flags":""},{"id":"11","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.11/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":11}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":256000000}},"flags":""},{"id":"70","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.70/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":70}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":256000000}},"flags":""},{"id":"10","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.10/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":10}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":256000000}},"flags":""},{"id":"60","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.60/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":60}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":256000000}},"flags":""},{"id":"13","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.13/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":13}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":256000000}},"flags":""},{"id":"12","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.12/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":12}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":256000000}},"flags":""},{"id":"80","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.80/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":80}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":256000000}},"flags":""},{"id":"93","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.93/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":93}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":256000000}},"flags":""},{"id":"92","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.92/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":92}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":256000000}},"flags":""},{"id":"82","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.82/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":82}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":256000000}},"flags":""},{"id":"91","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.91/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":91}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":256000000}},"flags":""},{"id":"81","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.81/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":81}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":256000000}},"flags":""},{"id":"90","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.90/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":90}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":256000000}},"flags":""},{"id":"9","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.9/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":9}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":255000000}},"flags":""},{"id":"84","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.84/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":84}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":256000000}},"flags":""},{"id":"97","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.97/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":97}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":256000000}},"flags":""},{"id":"66","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.66/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":66}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":256000000}},"flags":""},{"id":"79","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.79/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":79}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":256000000}},"flags":""},{"id":"54","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.54/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":54}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":255000000}},"flags":""},{"id":"45","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.45/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":45}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":255000000}},"flags":""},{"id":"83","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.83/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":83}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":256000000}},"flags":""},{"id":"96","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.96/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":96}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":255000000}},"flags":""},{"id":"65","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.65/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":65}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":256000000}},"flags":""},{"id":"78","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.78/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":78}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":256000000}},"flags":""},{"id":"20","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.20/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":20}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":255000000}},"flags":""},{"id":"55","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.55/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":55}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":255000000}},"flags":""},{"id":"46","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.46/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":46}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":255000000}},"flags":""},{"id":"7","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.7/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":7}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":255000000}},"flags":""},{"id":"86","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.86/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":86}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":256000000}},"flags":""},{"id":"95","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.95/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":95}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":255000000}},"flags":""},{"id":"68","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.68/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":68}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":256000000}},"flags":""},{"id":"77","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.77/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":77}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":256000000}},"flags":""},{"id":"30","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.30/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":30}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":255000000}},"flags":""},{"id":"56","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.56/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":56}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":255000000}},"flags":""},{"id":"43","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.43/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":43}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":255000000}},"flags":""},{"id":"8","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.8/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":8}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":255000000}},"flags":""},{"id":"85","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.85/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":85}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":256000000}},"flags":""},{"id":"94","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.94/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":94}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":255000000}},"flags":""},{"id":"67","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.67/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":67}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":256000000}},"flags":""},{"id":"76","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.76/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":76}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":256000000}},"flags":""},{"id":"31","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.31/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":31}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":255000000}},"flags":""},{"id":"57","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.57/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":57}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":255000000}},"flags":""},{"id":"44","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.44/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":44}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":255000000}},"flags":""},{"id":"5","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.5/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":5}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":255000000}},"flags":""},{"id":"88","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.88/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":88}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":256000000}},"flags":""},{"id":"62","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.62/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":62}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":256000000}},"flags":""},{"id":"75","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.75/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":75}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":256000000}},"flags":""},{"id":"32","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.32/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":32}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":255000000}},"flags":""},{"id":"23","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.23/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":23}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":255000000}},"flags":""},{"id":"50","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.50/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":50}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":252000000}},"flags":""},{"id":"41","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.41/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":41}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":255000000}},"flags":""},{"id":"6","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.6/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":6}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":255000000}},"flags":""},{"id":"100","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.100/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":100}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":256000000}},"flags":""},{"id":"87","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.87/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":87}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":256000000}},"flags":""},{"id":"61","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.61/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":61}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":256000000}},"flags":""},{"id":"74","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.74/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":74}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":256000000}},"flags":""},{"id":"33","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.33/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":33}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":255000000}},"flags":""},{"id":"24","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.24/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":24}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":255000000}},"flags":""},{"id":"51","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.51/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":51}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":252000000}},"flags":""},{"id":"42","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.42/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":42}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":255000000}},"flags":""},{"id":"3","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.3/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":3}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":255000000}},"flags":""},{"id":"99","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.99/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":99}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":256000000}},"flags":""},{"id":"64","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.64/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":64}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":256000000}},"flags":""},{"id":"73","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.73/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":73}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":256000000}},"flags":""},{"id":"34","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.34/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":34}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":255000000}},"flags":""},{"id":"21","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.21/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":21}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":255000000}},"flags":""},{"id":"52","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.52/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":52}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":255000000}},"flags":""},{"id":"#UF$TABLE*0-3","table_id":0,"priority":0,"cookie_mask":"0","idle-timeout":0,"cookie":"10","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"output-action":{"max-length":65535,"output-node-connector":"CONTROLLER"}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"35","byte-count":"2840","duration":{"second":128,"nanosecond":127000000}},"flags":"SEND_FLOW_REM"},{"id":"4","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.4/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":4}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":255000000}},"flags":""},{"id":"89","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.89/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":89}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":256000000}},"flags":""},{"id":"98","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.98/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":98}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":256000000}},"flags":""},{"id":"63","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.63/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":63}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":256000000}},"flags":""},{"id":"72","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.72/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":72}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":256000000}},"flags":""},{"id":"35","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.35/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":35}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":255000000}},"flags":""},{"id":"22","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.22/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":22}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":255000000}},"flags":""},{"id":"53","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.53/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":53}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":255000000}},"flags":""},{"id":"40","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.40/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":40}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":255000000}},"flags":""},{"id":"37","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.37/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":37}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":255000000}},"flags":""},{"id":"28","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.28/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":28}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":255000000}},"flags":""},{"id":"36","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.36/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":36}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":255000000}},"flags":""},{"id":"27","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.27/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":27}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":255000000}},"flags":""},{"id":"39","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.39/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":39}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":255000000}},"flags":""},{"id":"26","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.26/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":26}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":255000000}},"flags":""},{"id":"38","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.38/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":38}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":255000000}},"flags":""},{"id":"25","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.25/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":25}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":255000000}},"flags":""},{"id":"69","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.69/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":69}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":256000000}},"flags":""},{"id":"59","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.59/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":59}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":255000000}},"flags":""},{"id":"58","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.58/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":58}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":255000000}},"flags":""},{"id":"49","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.49/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":49}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":255000000}},"flags":""},{"id":"48","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.48/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":48}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":255000000}},"flags":""},{"id":"29","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.29/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":29}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":255000000}},"flags":""},{"id":"47","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.47/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":47}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":255000000}},"flags":""},{"id":"18","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.18/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":18}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":256000000}},"flags":""},{"id":"19","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.19/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":19}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":256000000}},"flags":""},{"id":"14","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.14/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":14}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":256000000}},"flags":""},{"id":"15","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.15/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":15}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":256000000}},"flags":""},{"id":"1","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.1/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":1}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":35,"nanosecond":4000000}},"flags":""},{"id":"16","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.16/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":16}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":256000000}},"flags":""},{"id":"2","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.2/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":2}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":256000000}},"flags":""},{"id":"17","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.17/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":17}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":256000000}},"flags":""}],"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"53","active-flows":101,"packets-matched":"45"}},{"id":226,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":179,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":149,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":104,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":59,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":29,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":225,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":180,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":150,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":103,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":66,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":32,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":220,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":185,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":151,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":102,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":65,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":31,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":253,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":219,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":186,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":152,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":101,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":64,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":34,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":252,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":222,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":183,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":153,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":100,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":63,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":33,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":251,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":221,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":184,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":154,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":99,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":54,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":20,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":250,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":216,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":189,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":155,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":129,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":114,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":53,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":19,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":249,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":215,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":190,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":156,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":130,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":113,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":52,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":22,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":248,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":218,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":187,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":157,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":112,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":51,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":21,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":247,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":217,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":188,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":158,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":128,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":111,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":58,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":24,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":246,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":212,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":193,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":159,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":110,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":57,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":23,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":245,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":211,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":194,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":160,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":109,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":56,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":26,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":244,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":214,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":191,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":161,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":108,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":55,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":25,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":243,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":213,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":192,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":162,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":107,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":77,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":43,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":17,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":239,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":198,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":164,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":138,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":119,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":89,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":78,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":44,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":18,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":240,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":197,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":163,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":137,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":120,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":90,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":75,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":45,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":15,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":241,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":196,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":166,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":136,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":121,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":87,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":76,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":46,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":16,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":242,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":195,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":165,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":135,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":122,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":88,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":81,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":47,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":13,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":235,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":202,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":168,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":134,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":115,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":85,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":82,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":48,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":14,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":236,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":201,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":167,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":133,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":116,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":86,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":79,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":49,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":11,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":237,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":200,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":170,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":132,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":117,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":83,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":80,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":50,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":12,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":238,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":199,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":169,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":131,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":118,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":84,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":69,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":35,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":9,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":231,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":206,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":172,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":146,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":127,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":97,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":70,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":36,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":10,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":232,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":205,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":171,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":145,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":98,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":67,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":37,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":7,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":233,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":204,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":174,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":144,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":95,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":68,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":38,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":8,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":234,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":203,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":173,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":143,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":96,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":73,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":39,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":5,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":227,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":210,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":176,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":142,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":123,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":93,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":74,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":40,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":6,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":228,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":209,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":175,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":141,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":124,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":94,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":71,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":41,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":3,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":229,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":208,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":178,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":140,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":125,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":91,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":72,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":42,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":4,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":230,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":207,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":177,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":139,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":126,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":92,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}}],"opendaylight-group-statistics:group-features":{"max-groups":[4294967040],"group-types-supported":["opendaylight-group-types:group-all","opendaylight-group-types:group-ff","opendaylight-group-types:group-select","opendaylight-group-types:group-indirect"],"group-capabilities-supported":["opendaylight-group-types:chaining","opendaylight-group-types:select-weight","opendaylight-group-types:select-liveness"],"actions":[67076097]},"flow-node-inventory:manufacturer":"Nicira, Inc.","flow-node-inventory:description":"s3","flow-node-inventory:hardware":"Open vSwitch","flow-node-inventory:switch-features":{"max_tables":254,"capabilities":["flow-node-inventory:flow-feature-capability-table-stats","flow-node-inventory:flow-feature-capability-group-stats","flow-node-inventory:flow-feature-capability-queue-stats","flow-node-inventory:flow-feature-capability-flow-stats","flow-node-inventory:flow-feature-capability-port-stats"],"max_buffers":0},"flow-node-inventory:snapshot-gathering-status-start":{"begin":"2026-04-08T01:00:38.139Z"},"flow-node-inventory:software":"2.17.11","node-connector":[{"id":"openflow:3:LOCAL","flow-node-inventory:port-number":4294967294,"flow-node-inventory:hardware-address":"c2:87:c1:60:0d:43","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s3","flow-node-inventory:current-feature":"","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":0,"flow-node-inventory:state":{"live":false,"blocked":false,"link-down":true},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"PORT-DOWN","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"0","received":"0"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":133,"nanosecond":455000000},"bytes":{"transmitted":"0","received":"0"},"receive-crc-error":"0"}},{"id":"openflow:3:2","flow-node-inventory:port-number":2,"flow-node-inventory:hardware-address":"9e:72:98:8c:46:72","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s3-eth2","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"39","received":"44"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":133,"nanosecond":458000000},"bytes":{"transmitted":"3267","received":"3689"},"receive-crc-error":"0"}},{"id":"openflow:3:1","flow-node-inventory:port-number":1,"flow-node-inventory:hardware-address":"ca:ac:9a:41:42:1c","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s3-eth1","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"46","received":"11"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":133,"nanosecond":458000000},"bytes":{"transmitted":"3865","received":"866"},"receive-crc-error":"0"}}],"flow-node-inventory:ip-address":"10.30.170.192","flow-node-inventory:serial-number":"None","flow-node-inventory:group":[{"group-id":56,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":56000}}],"watch_group":56000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":56,"duration":{"second":129,"nanosecond":276000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":22,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":22000}}],"watch_group":22000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":22,"duration":{"second":129,"nanosecond":276000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":99,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":99000}}],"watch_group":99000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":99,"duration":{"second":129,"nanosecond":276000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":34000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":34000,"duration":{"second":132,"nanosecond":106000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":89000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":89000,"duration":{"second":132,"nanosecond":105000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":60000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":60000,"duration":{"second":132,"nanosecond":102000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":91000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":91000,"duration":{"second":132,"nanosecond":102000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":57,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":57000}}],"watch_group":57000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":57,"duration":{"second":129,"nanosecond":276000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":23,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":23000}}],"watch_group":23000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":23,"duration":{"second":128,"nanosecond":779000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":14000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":14000,"duration":{"second":132,"nanosecond":102000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":98,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":98000}}],"watch_group":98000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":98,"duration":{"second":128,"nanosecond":778000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":56000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":56000,"duration":{"second":132,"nanosecond":102000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":85000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":85000,"duration":{"second":132,"nanosecond":102000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":54,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":54000}}],"watch_group":54000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":54,"duration":{"second":128,"nanosecond":778000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":24,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":24000}}],"watch_group":24000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":24,"duration":{"second":128,"nanosecond":778000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":36000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":36000,"duration":{"second":132,"nanosecond":102000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":87000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":87000,"duration":{"second":132,"nanosecond":102000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":59000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":59000,"duration":{"second":132,"nanosecond":102000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":25000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":25000,"duration":{"second":132,"nanosecond":102000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":43000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":43000,"duration":{"second":132,"nanosecond":101000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":55,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":55000}}],"watch_group":55000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":55,"duration":{"second":128,"nanosecond":778000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":25,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":25000}}],"watch_group":25000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":25,"duration":{"second":131,"nanosecond":784000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":100,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":100000}}],"watch_group":100000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":100,"duration":{"second":128,"nanosecond":778000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":58000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":58000,"duration":{"second":131,"nanosecond":784000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":86000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":86000,"duration":{"second":131,"nanosecond":784000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":60,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":60000}}],"watch_group":60000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":60,"duration":{"second":131,"nanosecond":784000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":26,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":26000}}],"watch_group":26000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":26,"duration":{"second":128,"nanosecond":778000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":41000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":41000,"duration":{"second":131,"nanosecond":783000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":95,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":95000}}],"watch_group":95000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":95,"duration":{"second":128,"nanosecond":778000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":82000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":82000,"duration":{"second":131,"nanosecond":783000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":61,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":61000}}],"watch_group":61000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":61,"duration":{"second":128,"nanosecond":778000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":27,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":27000}}],"watch_group":27000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":27,"duration":{"second":128,"nanosecond":773000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":94,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":94000}}],"watch_group":94000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":94,"duration":{"second":128,"nanosecond":773000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":98000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":98000,"duration":{"second":131,"nanosecond":782000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":27000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":27000,"duration":{"second":131,"nanosecond":782000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":57000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":57000,"duration":{"second":131,"nanosecond":781000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":16000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":16000,"duration":{"second":131,"nanosecond":780000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":83000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":83000,"duration":{"second":131,"nanosecond":780000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":58,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":58000}}],"watch_group":58000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":58,"duration":{"second":131,"nanosecond":281000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":28,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":28000}}],"watch_group":28000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":28,"duration":{"second":128,"nanosecond":773000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":97,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":97000}}],"watch_group":97000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":97,"duration":{"second":128,"nanosecond":773000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":100000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":100000,"duration":{"second":131,"nanosecond":281000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":59,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":59000}}],"watch_group":59000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":59,"duration":{"second":131,"nanosecond":281000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":38000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":38000,"duration":{"second":131,"nanosecond":281000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":29,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":29000}}],"watch_group":29000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":29,"duration":{"second":128,"nanosecond":773000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":96,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":96000}}],"watch_group":96000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":96,"duration":{"second":128,"nanosecond":773000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":84000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":84000,"duration":{"second":131,"nanosecond":281000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":64,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":64000}}],"watch_group":64000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":64,"duration":{"second":128,"nanosecond":773000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":30,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":30000}}],"watch_group":30000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":30,"duration":{"second":128,"nanosecond":773000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":4,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":4000}}],"watch_group":4000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":4,"duration":{"second":128,"nanosecond":773000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":91,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":91000}}],"watch_group":91000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":91,"duration":{"second":131,"nanosecond":281000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":7000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":7000,"duration":{"second":131,"nanosecond":281000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":29000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":29000,"duration":{"second":131,"nanosecond":281000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":65,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":65000}}],"watch_group":65000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":65,"duration":{"second":128,"nanosecond":773000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":31,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":31000}}],"watch_group":31000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":31,"duration":{"second":128,"nanosecond":773000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":5,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":5000}}],"watch_group":5000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":5,"duration":{"second":128,"nanosecond":773000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":90,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":90000}}],"watch_group":90000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":90,"duration":{"second":128,"nanosecond":773000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":18000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":18000,"duration":{"second":131,"nanosecond":280000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":62,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":62000}}],"watch_group":62000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":62,"duration":{"second":128,"nanosecond":773000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":65000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":65000,"duration":{"second":131,"nanosecond":280000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":32,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":32000}}],"watch_group":32000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":32,"duration":{"second":128,"nanosecond":773000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":2,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":2000}}],"watch_group":2000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":2,"duration":{"second":128,"nanosecond":773000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":93,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":93000}}],"watch_group":93000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":93,"duration":{"second":128,"nanosecond":773000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":64000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":64000,"duration":{"second":131,"nanosecond":279000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":63,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":63000}}],"watch_group":63000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":63,"duration":{"second":128,"nanosecond":773000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":33,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":33000}}],"watch_group":33000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":33,"duration":{"second":128,"nanosecond":773000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":3,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":3000}}],"watch_group":3000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":3,"duration":{"second":128,"nanosecond":773000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":80000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":80000,"duration":{"second":131,"nanosecond":278000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":9000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":9000,"duration":{"second":131,"nanosecond":278000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":92,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":92000}}],"watch_group":92000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":92,"duration":{"second":128,"nanosecond":773000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":5000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":5000,"duration":{"second":131,"nanosecond":278000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":20000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":20000,"duration":{"second":131,"nanosecond":278000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":81000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":81000,"duration":{"second":131,"nanosecond":278000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":97000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":97000,"duration":{"second":131,"nanosecond":278000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":31000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":31000,"duration":{"second":131,"nanosecond":278000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":68,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":68000}}],"watch_group":68000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":68,"duration":{"second":128,"nanosecond":773000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":11000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":11000,"duration":{"second":131,"nanosecond":278000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":34,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":34000}}],"watch_group":34000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":34,"duration":{"second":131,"nanosecond":278000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":78000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":78000,"duration":{"second":131,"nanosecond":277000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":87,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":87000}}],"watch_group":87000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":87,"duration":{"second":131,"nanosecond":277000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":93000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":93000,"duration":{"second":131,"nanosecond":277000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":63000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":63000,"duration":{"second":131,"nanosecond":277000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":69,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":69000}}],"watch_group":69000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":69,"duration":{"second":128,"nanosecond":773000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":35,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":35000}}],"watch_group":35000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":35,"duration":{"second":128,"nanosecond":773000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":1,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":1000}}],"watch_group":1000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":1,"duration":{"second":35,"nanosecond":213000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":33000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":33000,"duration":{"second":131,"nanosecond":273000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":79000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":79000,"duration":{"second":131,"nanosecond":273000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":86,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":86000}}],"watch_group":86000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":86,"duration":{"second":131,"nanosecond":273000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":62000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":62000,"duration":{"second":131,"nanosecond":273000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":66,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":66000}}],"watch_group":66000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":66,"duration":{"second":128,"nanosecond":773000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":77000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":77000,"duration":{"second":131,"nanosecond":273000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":36,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":36000}}],"watch_group":36000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":36,"duration":{"second":131,"nanosecond":273000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":89,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":89000}}],"watch_group":89000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":89,"duration":{"second":131,"nanosecond":273000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":22000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":22000,"duration":{"second":131,"nanosecond":273000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":95000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":95000,"duration":{"second":131,"nanosecond":273000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":67,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":67000}}],"watch_group":67000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":67,"duration":{"second":128,"nanosecond":773000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":37,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":37000}}],"watch_group":37000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":37,"duration":{"second":128,"nanosecond":773000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":1000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":1000,"duration":{"second":35,"nanosecond":425000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":88,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":88000}}],"watch_group":88000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":88,"duration":{"second":128,"nanosecond":773000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":61000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":61000,"duration":{"second":131,"nanosecond":272000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":3000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":3000,"duration":{"second":131,"nanosecond":272000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":73,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":73000}}],"watch_group":73000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":73,"duration":{"second":128,"nanosecond":773000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":39,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":39000}}],"watch_group":39000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":39,"duration":{"second":128,"nanosecond":768000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":13,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":13000}}],"watch_group":13000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":13,"duration":{"second":128,"nanosecond":768000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":74000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":74000,"duration":{"second":131,"nanosecond":272000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":15000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":15000,"duration":{"second":131,"nanosecond":272000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":44000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":44000,"duration":{"second":131,"nanosecond":272000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":45000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":45000,"duration":{"second":131,"nanosecond":272000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":68000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":68000,"duration":{"second":131,"nanosecond":272000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":72,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":72000}}],"watch_group":72000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":72,"duration":{"second":128,"nanosecond":768000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":38,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":38000}}],"watch_group":38000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":38,"duration":{"second":130,"nanosecond":782000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":75000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":75000,"duration":{"second":130,"nanosecond":782000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":12,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":12000}}],"watch_group":12000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":12,"duration":{"second":128,"nanosecond":768000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":35000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":35000,"duration":{"second":130,"nanosecond":782000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":24000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":24000,"duration":{"second":130,"nanosecond":782000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":90000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":90000,"duration":{"second":130,"nanosecond":782000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":71,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":71000}}],"watch_group":71000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":71,"duration":{"second":128,"nanosecond":768000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":41,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":41000}}],"watch_group":41000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":41,"duration":{"second":130,"nanosecond":781000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":42000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":42000,"duration":{"second":130,"nanosecond":781000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":11,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":11000}}],"watch_group":11000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":11,"duration":{"second":130,"nanosecond":781000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":92000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":92000,"duration":{"second":130,"nanosecond":780000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":46000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":46000,"duration":{"second":130,"nanosecond":780000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":67000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":67000,"duration":{"second":130,"nanosecond":780000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":70,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":70000}}],"watch_group":70000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":70,"duration":{"second":128,"nanosecond":768000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":76000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":76000,"duration":{"second":130,"nanosecond":779000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":40,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":40000}}],"watch_group":40000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":40,"duration":{"second":128,"nanosecond":768000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":13000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":13000,"duration":{"second":130,"nanosecond":779000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":10,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":10000}}],"watch_group":10000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":10,"duration":{"second":128,"nanosecond":768000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":88000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":88000,"duration":{"second":130,"nanosecond":779000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":47000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":47000,"duration":{"second":130,"nanosecond":779000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":66000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":66000,"duration":{"second":130,"nanosecond":779000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":77,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":77000}}],"watch_group":77000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":77,"duration":{"second":130,"nanosecond":779000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":43,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":43000}}],"watch_group":43000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":43,"duration":{"second":130,"nanosecond":778000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":9,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":9000}}],"watch_group":9000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":9,"duration":{"second":130,"nanosecond":778000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":99000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":99000,"duration":{"second":130,"nanosecond":778000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":26000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":26000,"duration":{"second":130,"nanosecond":778000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":70000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":70000,"duration":{"second":130,"nanosecond":777000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":76,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":76000}}],"watch_group":76000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":76,"duration":{"second":130,"nanosecond":281000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":42,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":42000}}],"watch_group":42000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":42,"duration":{"second":130,"nanosecond":280000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":8,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":8000}}],"watch_group":8000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":8,"duration":{"second":128,"nanosecond":768000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":37000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":37000,"duration":{"second":130,"nanosecond":280000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":49000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":49000,"duration":{"second":130,"nanosecond":280000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":71000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":71000,"duration":{"second":130,"nanosecond":280000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":48000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":48000,"duration":{"second":130,"nanosecond":279000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":75,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":75000}}],"watch_group":75000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":75,"duration":{"second":130,"nanosecond":275000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":45,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":45000}}],"watch_group":45000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":45,"duration":{"second":130,"nanosecond":275000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":7,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":7000}}],"watch_group":7000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":7,"duration":{"second":130,"nanosecond":275000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":39000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":39000,"duration":{"second":130,"nanosecond":275000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":73000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":73000,"duration":{"second":130,"nanosecond":275000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":69000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":69000,"duration":{"second":130,"nanosecond":275000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":17000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":17000,"duration":{"second":130,"nanosecond":275000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":28000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":28000,"duration":{"second":130,"nanosecond":275000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":74,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":74000}}],"watch_group":74000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":74,"duration":{"second":130,"nanosecond":275000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":44,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":44000}}],"watch_group":44000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":44,"duration":{"second":130,"nanosecond":275000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":6,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":6000}}],"watch_group":6000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":6,"duration":{"second":128,"nanosecond":768000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":40000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":40000,"duration":{"second":130,"nanosecond":275000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":81,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":81000}}],"watch_group":81000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":81,"duration":{"second":130,"nanosecond":275000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":47,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":47000}}],"watch_group":47000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":47,"duration":{"second":130,"nanosecond":275000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":21,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":21000}}],"watch_group":21000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":21,"duration":{"second":128,"nanosecond":768000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":8000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":8000,"duration":{"second":130,"nanosecond":275000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":19000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":19000,"duration":{"second":130,"nanosecond":274000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":96000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":96000,"duration":{"second":130,"nanosecond":274000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":80,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":80000}}],"watch_group":80000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":80,"duration":{"second":130,"nanosecond":274000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":46,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":46000}}],"watch_group":46000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":46,"duration":{"second":130,"nanosecond":274000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":20,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":20000}}],"watch_group":20000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":20,"duration":{"second":130,"nanosecond":274000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":52000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":52000,"duration":{"second":130,"nanosecond":274000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":6000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":6000,"duration":{"second":130,"nanosecond":274000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":79,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":79000}}],"watch_group":79000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":79,"duration":{"second":130,"nanosecond":273000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":49,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":49000}}],"watch_group":49000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":49,"duration":{"second":129,"nanosecond":781000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":19,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":19000}}],"watch_group":19000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":19,"duration":{"second":129,"nanosecond":780000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":50000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":50000,"duration":{"second":129,"nanosecond":780000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":72000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":72000,"duration":{"second":129,"nanosecond":780000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":30000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":30000,"duration":{"second":129,"nanosecond":780000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":78,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":78000}}],"watch_group":78000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":78,"duration":{"second":129,"nanosecond":780000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":48,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":48000}}],"watch_group":48000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":48,"duration":{"second":129,"nanosecond":779000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":18,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":18000}}],"watch_group":18000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":18,"duration":{"second":129,"nanosecond":779000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":51000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":51000,"duration":{"second":129,"nanosecond":779000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":85,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":85000}}],"watch_group":85000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":85,"duration":{"second":129,"nanosecond":779000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":55000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":55000,"duration":{"second":129,"nanosecond":779000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":51,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":51000}}],"watch_group":51000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":51,"duration":{"second":129,"nanosecond":280000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":17,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":17000}}],"watch_group":17000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":17,"duration":{"second":129,"nanosecond":280000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":21000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":21000,"duration":{"second":129,"nanosecond":280000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":4000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":4000,"duration":{"second":129,"nanosecond":280000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":84,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":84000}}],"watch_group":84000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":84,"duration":{"second":129,"nanosecond":280000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":50,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":50000}}],"watch_group":50000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":50,"duration":{"second":129,"nanosecond":280000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":16,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":16000}}],"watch_group":16000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":16,"duration":{"second":129,"nanosecond":279000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":10000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":10000,"duration":{"second":129,"nanosecond":279000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":54000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":54000,"duration":{"second":129,"nanosecond":279000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":83,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":83000}}],"watch_group":83000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":83,"duration":{"second":129,"nanosecond":279000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":32000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":32000,"duration":{"second":129,"nanosecond":279000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":53,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":53000}}],"watch_group":53000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":53,"duration":{"second":128,"nanosecond":768000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":15,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":15000}}],"watch_group":15000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":15,"duration":{"second":129,"nanosecond":278000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":2000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":2000,"duration":{"second":129,"nanosecond":278000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":82,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":82000}}],"watch_group":82000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":82,"duration":{"second":129,"nanosecond":278000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":52,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":52000}}],"watch_group":52000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":52,"duration":{"second":129,"nanosecond":278000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":14,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":14000}}],"watch_group":14000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":14,"duration":{"second":129,"nanosecond":278000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":53000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":53000,"duration":{"second":129,"nanosecond":277000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":12000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":12000,"duration":{"second":129,"nanosecond":277000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":23000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":23000,"duration":{"second":129,"nanosecond":276000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":94000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":94000,"duration":{"second":129,"nanosecond":276000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}}],"flow-node-inventory:snapshot-gathering-status-end":{"succeeded":true,"end":"2026-04-08T01:00:38.174Z"}},{"id":"openflow:1","flow-node-inventory:port-number":54934,"flow-node-inventory:table":[{"id":62,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":28,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":2,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":224,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":181,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":147,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":106,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":61,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":27,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":1,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":223,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":182,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":148,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":105,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":60,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":30,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":0,"flow":[{"id":"71","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.71/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":71}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":244000000}},"flags":""},{"id":"11","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.11/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":11}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":243000000}},"flags":""},{"id":"70","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.70/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":70}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":244000000}},"flags":""},{"id":"10","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.10/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":10}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":243000000}},"flags":""},{"id":"60","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.60/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":60}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":244000000}},"flags":""},{"id":"13","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.13/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":13}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":243000000}},"flags":""},{"id":"12","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.12/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":12}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":243000000}},"flags":""},{"id":"80","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.80/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":80}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":244000000}},"flags":""},{"id":"93","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.93/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":93}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":243000000}},"flags":""},{"id":"92","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.92/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":92}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":243000000}},"flags":""},{"id":"82","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.82/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":82}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":244000000}},"flags":""},{"id":"91","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.91/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":91}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":243000000}},"flags":""},{"id":"81","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.81/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":81}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":244000000}},"flags":""},{"id":"90","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.90/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":90}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":243000000}},"flags":""},{"id":"9","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.9/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":9}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":243000000}},"flags":""},{"id":"84","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.84/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":84}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":243000000}},"flags":""},{"id":"97","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.97/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":97}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":243000000}},"flags":""},{"id":"66","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.66/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":66}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":244000000}},"flags":""},{"id":"79","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.79/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":79}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":244000000}},"flags":""},{"id":"54","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.54/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":54}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":242000000}},"flags":""},{"id":"45","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.45/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":45}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":242000000}},"flags":""},{"id":"83","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.83/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":83}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":243000000}},"flags":""},{"id":"96","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.96/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":96}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":243000000}},"flags":""},{"id":"65","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.65/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":65}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":244000000}},"flags":""},{"id":"78","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.78/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":78}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":244000000}},"flags":""},{"id":"20","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.20/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":20}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":243000000}},"flags":""},{"id":"55","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.55/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":55}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":242000000}},"flags":""},{"id":"46","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.46/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":46}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":242000000}},"flags":""},{"id":"7","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.7/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":7}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":243000000}},"flags":""},{"id":"86","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.86/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":86}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":244000000}},"flags":""},{"id":"95","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.95/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":95}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":243000000}},"flags":""},{"id":"68","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.68/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":68}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":244000000}},"flags":""},{"id":"77","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.77/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":77}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":244000000}},"flags":""},{"id":"30","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.30/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":30}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":243000000}},"flags":""},{"id":"56","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.56/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":56}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":242000000}},"flags":""},{"id":"43","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.43/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":43}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":242000000}},"flags":""},{"id":"8","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.8/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":8}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":243000000}},"flags":""},{"id":"85","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.85/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":85}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":244000000}},"flags":""},{"id":"94","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.94/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":94}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":243000000}},"flags":""},{"id":"67","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.67/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":67}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":244000000}},"flags":""},{"id":"76","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.76/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":76}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":244000000}},"flags":""},{"id":"31","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.31/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":31}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":243000000}},"flags":""},{"id":"57","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.57/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":57}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":242000000}},"flags":""},{"id":"44","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.44/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":44}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":242000000}},"flags":""},{"id":"5","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.5/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":5}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":243000000}},"flags":""},{"id":"88","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.88/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":88}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":244000000}},"flags":""},{"id":"62","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.62/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":62}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":244000000}},"flags":""},{"id":"75","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.75/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":75}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":244000000}},"flags":""},{"id":"32","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.32/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":32}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":243000000}},"flags":""},{"id":"23","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.23/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":23}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":243000000}},"flags":""},{"id":"50","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.50/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":50}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":242000000}},"flags":""},{"id":"41","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.41/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":41}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":242000000}},"flags":""},{"id":"#UF$TABLE*0-1","table_id":0,"priority":0,"cookie_mask":"0","idle-timeout":0,"cookie":"10","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"output-action":{"max-length":65535,"output-node-connector":"CONTROLLER"}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"34","byte-count":"2770","duration":{"second":128,"nanosecond":133000000}},"flags":"SEND_FLOW_REM"},{"id":"6","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.6/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":6}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":243000000}},"flags":""},{"id":"100","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.100/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":100}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":244000000}},"flags":""},{"id":"87","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.87/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":87}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":244000000}},"flags":""},{"id":"61","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.61/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":61}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":244000000}},"flags":""},{"id":"74","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.74/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":74}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":244000000}},"flags":""},{"id":"33","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.33/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":33}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":243000000}},"flags":""},{"id":"24","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.24/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":24}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":243000000}},"flags":""},{"id":"51","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.51/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":51}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":242000000}},"flags":""},{"id":"42","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.42/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":42}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":242000000}},"flags":""},{"id":"3","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.3/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":3}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":243000000}},"flags":""},{"id":"99","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.99/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":99}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":243000000}},"flags":""},{"id":"64","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.64/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":64}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":244000000}},"flags":""},{"id":"73","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.73/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":73}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":244000000}},"flags":""},{"id":"34","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.34/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":34}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":243000000}},"flags":""},{"id":"21","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.21/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":21}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":243000000}},"flags":""},{"id":"52","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.52/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":52}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":242000000}},"flags":""},{"id":"4","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.4/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":4}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":243000000}},"flags":""},{"id":"89","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.89/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":89}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":244000000}},"flags":""},{"id":"98","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.98/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":98}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":243000000}},"flags":""},{"id":"63","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.63/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":63}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":244000000}},"flags":""},{"id":"72","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.72/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":72}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":244000000}},"flags":""},{"id":"35","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.35/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":35}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":243000000}},"flags":""},{"id":"22","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.22/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":22}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":243000000}},"flags":""},{"id":"53","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.53/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":53}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":242000000}},"flags":""},{"id":"40","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.40/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":40}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":242000000}},"flags":""},{"id":"37","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.37/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":37}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":243000000}},"flags":""},{"id":"28","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.28/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":28}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":243000000}},"flags":""},{"id":"36","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.36/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":36}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":243000000}},"flags":""},{"id":"27","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.27/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":27}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":243000000}},"flags":""},{"id":"39","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.39/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":39}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":243000000}},"flags":""},{"id":"26","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.26/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":26}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":243000000}},"flags":""},{"id":"38","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.38/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":38}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":243000000}},"flags":""},{"id":"25","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.25/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":25}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":243000000}},"flags":""},{"id":"69","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.69/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":69}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":244000000}},"flags":""},{"id":"59","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.59/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":59}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":242000000}},"flags":""},{"id":"58","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.58/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":58}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":242000000}},"flags":""},{"id":"49","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.49/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":49}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":243000000}},"flags":""},{"id":"48","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.48/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":48}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":242000000}},"flags":""},{"id":"29","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.29/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":29}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":243000000}},"flags":""},{"id":"47","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.47/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":47}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":242000000}},"flags":""},{"id":"18","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.18/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":18}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":243000000}},"flags":""},{"id":"19","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.19/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":19}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":243000000}},"flags":""},{"id":"14","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.14/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":14}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":243000000}},"flags":""},{"id":"15","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.15/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":15}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":243000000}},"flags":""},{"id":"1","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.1/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":1}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":36,"nanosecond":290000000}},"flags":""},{"id":"16","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.16/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":16}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":243000000}},"flags":""},{"id":"2","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.2/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":2}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":243000000}},"flags":""},{"id":"17","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.17/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":17}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":243000000}},"flags":""}],"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"51","active-flows":101,"packets-matched":"44"}},{"id":226,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":179,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":149,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":104,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":59,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":29,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":225,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":180,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":150,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":103,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":66,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":32,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":220,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":185,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":151,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":102,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":65,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":31,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":253,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":219,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":186,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":152,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":101,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":64,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":34,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":252,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":222,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":183,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":153,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":100,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":63,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":33,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":251,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":221,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":184,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":154,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":99,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":54,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":20,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":250,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":216,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":189,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":155,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":129,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":114,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":53,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":19,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":249,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":215,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":190,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":156,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":130,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":113,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":52,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":22,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":248,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":218,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":187,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":157,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":112,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":51,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":21,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":247,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":217,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":188,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":158,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":128,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":111,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":58,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":24,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":246,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":212,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":193,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":159,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":110,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":57,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":23,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":245,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":211,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":194,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":160,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":109,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":56,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":26,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":244,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":214,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":191,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":161,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":108,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":55,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":25,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":243,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":213,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":192,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":162,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":107,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":77,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":43,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":17,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":239,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":198,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":164,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":138,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":119,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":89,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":78,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":44,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":18,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":240,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":197,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":163,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":137,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":120,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":90,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":75,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":45,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":15,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":241,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":196,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":166,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":136,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":121,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":87,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":76,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":46,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":16,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":242,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":195,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":165,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":135,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":122,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":88,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":81,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":47,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":13,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":235,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":202,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":168,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":134,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":115,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":85,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":82,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":48,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":14,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":236,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":201,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":167,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":133,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":116,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":86,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":79,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":49,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":11,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":237,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":200,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":170,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":132,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":117,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":83,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":80,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":50,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":12,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":238,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":199,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":169,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":131,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":118,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":84,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":69,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":35,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":9,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":231,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":206,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":172,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":146,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":127,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":97,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":70,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":36,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":10,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":232,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":205,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":171,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":145,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":98,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":67,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":37,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":7,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":233,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":204,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":174,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":144,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":95,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":68,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":38,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":8,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":234,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":203,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":173,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":143,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":96,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":73,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":39,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":5,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":227,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":210,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":176,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":142,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":123,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":93,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":74,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":40,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":6,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":228,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":209,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":175,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":141,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":124,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":94,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":71,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":41,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":3,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":229,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":208,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":178,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":140,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":125,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":91,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":72,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":42,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":4,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":230,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":207,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":177,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":139,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":126,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":92,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}}],"opendaylight-group-statistics:group-features":{"max-groups":[4294967040],"group-types-supported":["opendaylight-group-types:group-all","opendaylight-group-types:group-ff","opendaylight-group-types:group-select","opendaylight-group-types:group-indirect"],"group-capabilities-supported":["opendaylight-group-types:chaining","opendaylight-group-types:select-weight","opendaylight-group-types:select-liveness"],"actions":[67076097]},"flow-node-inventory:manufacturer":"Nicira, Inc.","flow-node-inventory:description":"s1","flow-node-inventory:hardware":"Open vSwitch","flow-node-inventory:switch-features":{"max_tables":254,"capabilities":["flow-node-inventory:flow-feature-capability-table-stats","flow-node-inventory:flow-feature-capability-group-stats","flow-node-inventory:flow-feature-capability-queue-stats","flow-node-inventory:flow-feature-capability-flow-stats","flow-node-inventory:flow-feature-capability-port-stats"],"max_buffers":0},"flow-node-inventory:snapshot-gathering-status-start":{"begin":"2026-04-08T01:00:38.140Z"},"flow-node-inventory:software":"2.17.11","node-connector":[{"id":"openflow:1:1","flow-node-inventory:port-number":1,"flow-node-inventory:hardware-address":"92:f4:e8:ea:c6:ad","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s1-eth1","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"45","received":"10"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":133,"nanosecond":465000000},"bytes":{"transmitted":"3795","received":"796"},"receive-crc-error":"0"}},{"id":"openflow:1:LOCAL","flow-node-inventory:port-number":4294967294,"flow-node-inventory:hardware-address":"e6:45:d0:5b:c7:49","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s1","flow-node-inventory:current-feature":"","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":0,"flow-node-inventory:state":{"live":false,"blocked":false,"link-down":true},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"PORT-DOWN","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"0","received":"0"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":133,"nanosecond":461000000},"bytes":{"transmitted":"0","received":"0"},"receive-crc-error":"0"}},{"id":"openflow:1:2","flow-node-inventory:port-number":2,"flow-node-inventory:hardware-address":"42:46:a8:4b:8b:86","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s1-eth2","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"39","received":"43"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":133,"nanosecond":465000000},"bytes":{"transmitted":"3267","received":"3619"},"receive-crc-error":"0"}}],"flow-node-inventory:ip-address":"10.30.170.192","flow-node-inventory:serial-number":"None","flow-node-inventory:group":[{"group-id":56,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":56000}}],"watch_group":56000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":56,"duration":{"second":129,"nanosecond":412000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":22,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":22000}}],"watch_group":22000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":22,"duration":{"second":129,"nanosecond":412000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":99,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":99000}}],"watch_group":99000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":99,"duration":{"second":129,"nanosecond":412000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":34000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":34000,"duration":{"second":132,"nanosecond":105000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":89000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":89000,"duration":{"second":132,"nanosecond":105000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":60000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":60000,"duration":{"second":132,"nanosecond":105000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":91000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":91000,"duration":{"second":132,"nanosecond":105000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":57,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":57000}}],"watch_group":57000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":57,"duration":{"second":129,"nanosecond":412000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":23,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":23000}}],"watch_group":23000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":23,"duration":{"second":128,"nanosecond":912000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":14000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":14000,"duration":{"second":132,"nanosecond":105000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":98,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":98000}}],"watch_group":98000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":98,"duration":{"second":128,"nanosecond":912000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":56000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":56000,"duration":{"second":132,"nanosecond":105000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":85000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":85000,"duration":{"second":132,"nanosecond":105000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":54,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":54000}}],"watch_group":54000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":54,"duration":{"second":128,"nanosecond":912000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":24,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":24000}}],"watch_group":24000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":24,"duration":{"second":128,"nanosecond":912000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":36000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":36000,"duration":{"second":132,"nanosecond":105000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":87000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":87000,"duration":{"second":132,"nanosecond":105000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":59000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":59000,"duration":{"second":132,"nanosecond":105000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":25000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":25000,"duration":{"second":132,"nanosecond":105000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":43000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":43000,"duration":{"second":132,"nanosecond":105000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":55,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":55000}}],"watch_group":55000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":55,"duration":{"second":128,"nanosecond":912000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":25,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":25000}}],"watch_group":25000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":25,"duration":{"second":131,"nanosecond":919000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":100,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":100000}}],"watch_group":100000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":100,"duration":{"second":128,"nanosecond":912000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":58000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":58000,"duration":{"second":131,"nanosecond":916000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":86000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":86000,"duration":{"second":131,"nanosecond":916000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":60,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":60000}}],"watch_group":60000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":60,"duration":{"second":131,"nanosecond":916000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":26,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":26000}}],"watch_group":26000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":26,"duration":{"second":128,"nanosecond":912000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":41000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":41000,"duration":{"second":131,"nanosecond":916000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":95,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":95000}}],"watch_group":95000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":95,"duration":{"second":128,"nanosecond":912000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":82000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":82000,"duration":{"second":131,"nanosecond":916000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":61,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":61000}}],"watch_group":61000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":61,"duration":{"second":128,"nanosecond":912000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":27,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":27000}}],"watch_group":27000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":27,"duration":{"second":128,"nanosecond":912000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":94,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":94000}}],"watch_group":94000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":94,"duration":{"second":128,"nanosecond":912000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":98000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":98000,"duration":{"second":131,"nanosecond":916000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":27000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":27000,"duration":{"second":131,"nanosecond":916000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":57000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":57000,"duration":{"second":131,"nanosecond":916000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":16000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":16000,"duration":{"second":131,"nanosecond":916000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":83000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":83000,"duration":{"second":131,"nanosecond":916000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":58,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":58000}}],"watch_group":58000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":58,"duration":{"second":131,"nanosecond":413000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":28,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":28000}}],"watch_group":28000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":28,"duration":{"second":128,"nanosecond":912000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":97,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":97000}}],"watch_group":97000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":97,"duration":{"second":128,"nanosecond":912000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":100000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":100000,"duration":{"second":131,"nanosecond":413000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":59,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":59000}}],"watch_group":59000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":59,"duration":{"second":131,"nanosecond":413000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":38000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":38000,"duration":{"second":131,"nanosecond":413000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":29,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":29000}}],"watch_group":29000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":29,"duration":{"second":128,"nanosecond":912000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":96,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":96000}}],"watch_group":96000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":96,"duration":{"second":128,"nanosecond":912000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":84000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":84000,"duration":{"second":131,"nanosecond":413000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":64,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":64000}}],"watch_group":64000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":64,"duration":{"second":128,"nanosecond":912000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":30,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":30000}}],"watch_group":30000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":30,"duration":{"second":128,"nanosecond":912000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":4,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":4000}}],"watch_group":4000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":4,"duration":{"second":128,"nanosecond":912000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":91,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":91000}}],"watch_group":91000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":91,"duration":{"second":131,"nanosecond":413000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":7000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":7000,"duration":{"second":131,"nanosecond":413000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":29000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":29000,"duration":{"second":131,"nanosecond":413000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":65,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":65000}}],"watch_group":65000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":65,"duration":{"second":128,"nanosecond":912000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":31,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":31000}}],"watch_group":31000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":31,"duration":{"second":128,"nanosecond":912000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":5,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":5000}}],"watch_group":5000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":5,"duration":{"second":128,"nanosecond":912000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":90,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":90000}}],"watch_group":90000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":90,"duration":{"second":128,"nanosecond":912000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":18000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":18000,"duration":{"second":131,"nanosecond":413000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":62,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":62000}}],"watch_group":62000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":62,"duration":{"second":128,"nanosecond":912000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":65000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":65000,"duration":{"second":131,"nanosecond":413000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":32,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":32000}}],"watch_group":32000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":32,"duration":{"second":128,"nanosecond":912000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":2,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":2000}}],"watch_group":2000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":2,"duration":{"second":128,"nanosecond":912000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":93,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":93000}}],"watch_group":93000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":93,"duration":{"second":128,"nanosecond":912000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":64000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":64000,"duration":{"second":131,"nanosecond":413000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":63,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":63000}}],"watch_group":63000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":63,"duration":{"second":128,"nanosecond":912000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":33,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":33000}}],"watch_group":33000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":33,"duration":{"second":128,"nanosecond":912000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":3,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":3000}}],"watch_group":3000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":3,"duration":{"second":128,"nanosecond":907000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":80000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":80000,"duration":{"second":131,"nanosecond":413000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":9000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":9000,"duration":{"second":131,"nanosecond":413000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":92,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":92000}}],"watch_group":92000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":92,"duration":{"second":128,"nanosecond":907000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":5000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":5000,"duration":{"second":131,"nanosecond":413000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":20000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":20000,"duration":{"second":131,"nanosecond":413000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":81000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":81000,"duration":{"second":131,"nanosecond":413000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":97000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":97000,"duration":{"second":131,"nanosecond":413000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":31000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":31000,"duration":{"second":131,"nanosecond":413000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":68,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":68000}}],"watch_group":68000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":68,"duration":{"second":128,"nanosecond":907000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":11000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":11000,"duration":{"second":131,"nanosecond":413000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":34,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":34000}}],"watch_group":34000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":34,"duration":{"second":131,"nanosecond":413000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":78000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":78000,"duration":{"second":131,"nanosecond":413000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":87,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":87000}}],"watch_group":87000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":87,"duration":{"second":131,"nanosecond":413000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":93000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":93000,"duration":{"second":131,"nanosecond":413000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":63000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":63000,"duration":{"second":131,"nanosecond":413000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":69,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":69000}}],"watch_group":69000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":69,"duration":{"second":128,"nanosecond":907000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":35,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":35000}}],"watch_group":35000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":35,"duration":{"second":128,"nanosecond":907000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":1,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":1000}}],"watch_group":1000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":1,"duration":{"second":36,"nanosecond":498000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":33000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":33000,"duration":{"second":131,"nanosecond":413000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":79000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":79000,"duration":{"second":131,"nanosecond":411000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":86,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":86000}}],"watch_group":86000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":86,"duration":{"second":131,"nanosecond":411000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":62000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":62000,"duration":{"second":131,"nanosecond":411000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":66,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":66000}}],"watch_group":66000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":66,"duration":{"second":128,"nanosecond":907000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":77000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":77000,"duration":{"second":131,"nanosecond":411000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":36,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":36000}}],"watch_group":36000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":36,"duration":{"second":131,"nanosecond":411000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":89,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":89000}}],"watch_group":89000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":89,"duration":{"second":131,"nanosecond":410000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":22000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":22000,"duration":{"second":131,"nanosecond":410000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":95000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":95000,"duration":{"second":131,"nanosecond":410000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":67,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":67000}}],"watch_group":67000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":67,"duration":{"second":128,"nanosecond":907000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":37,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":37000}}],"watch_group":37000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":37,"duration":{"second":128,"nanosecond":907000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":1000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":1000,"duration":{"second":36,"nanosecond":711000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":88,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":88000}}],"watch_group":88000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":88,"duration":{"second":128,"nanosecond":907000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":61000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":61000,"duration":{"second":131,"nanosecond":410000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":3000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":3000,"duration":{"second":131,"nanosecond":409000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":73,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":73000}}],"watch_group":73000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":73,"duration":{"second":128,"nanosecond":907000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":39,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":39000}}],"watch_group":39000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":39,"duration":{"second":128,"nanosecond":907000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":13,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":13000}}],"watch_group":13000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":13,"duration":{"second":128,"nanosecond":907000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":74000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":74000,"duration":{"second":131,"nanosecond":409000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":15000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":15000,"duration":{"second":131,"nanosecond":409000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":44000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":44000,"duration":{"second":131,"nanosecond":409000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":45000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":45000,"duration":{"second":131,"nanosecond":409000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":68000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":68000,"duration":{"second":131,"nanosecond":409000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":72,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":72000}}],"watch_group":72000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":72,"duration":{"second":128,"nanosecond":907000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":38,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":38000}}],"watch_group":38000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":38,"duration":{"second":130,"nanosecond":921000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":75000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":75000,"duration":{"second":130,"nanosecond":921000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":12,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":12000}}],"watch_group":12000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":12,"duration":{"second":128,"nanosecond":907000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":35000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":35000,"duration":{"second":130,"nanosecond":921000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":24000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":24000,"duration":{"second":130,"nanosecond":920000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":90000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":90000,"duration":{"second":130,"nanosecond":920000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":71,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":71000}}],"watch_group":71000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":71,"duration":{"second":128,"nanosecond":907000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":41,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":41000}}],"watch_group":41000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":41,"duration":{"second":130,"nanosecond":920000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":42000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":42000,"duration":{"second":130,"nanosecond":920000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":11,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":11000}}],"watch_group":11000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":11,"duration":{"second":130,"nanosecond":919000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":92000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":92000,"duration":{"second":130,"nanosecond":919000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":46000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":46000,"duration":{"second":130,"nanosecond":919000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":67000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":67000,"duration":{"second":130,"nanosecond":919000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":70,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":70000}}],"watch_group":70000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":70,"duration":{"second":128,"nanosecond":907000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":76000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":76000,"duration":{"second":130,"nanosecond":918000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":40,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":40000}}],"watch_group":40000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":40,"duration":{"second":128,"nanosecond":907000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":13000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":13000,"duration":{"second":130,"nanosecond":915000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":10,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":10000}}],"watch_group":10000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":10,"duration":{"second":128,"nanosecond":907000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":88000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":88000,"duration":{"second":130,"nanosecond":915000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":47000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":47000,"duration":{"second":130,"nanosecond":915000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":66000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":66000,"duration":{"second":130,"nanosecond":914000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":77,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":77000}}],"watch_group":77000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":77,"duration":{"second":130,"nanosecond":914000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":43,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":43000}}],"watch_group":43000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":43,"duration":{"second":130,"nanosecond":914000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":9,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":9000}}],"watch_group":9000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":9,"duration":{"second":130,"nanosecond":914000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":99000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":99000,"duration":{"second":130,"nanosecond":914000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":26000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":26000,"duration":{"second":130,"nanosecond":914000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":70000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":70000,"duration":{"second":130,"nanosecond":914000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":76,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":76000}}],"watch_group":76000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":76,"duration":{"second":130,"nanosecond":420000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":42,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":42000}}],"watch_group":42000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":42,"duration":{"second":130,"nanosecond":418000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":8,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":8000}}],"watch_group":8000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":8,"duration":{"second":128,"nanosecond":907000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":37000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":37000,"duration":{"second":130,"nanosecond":418000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":49000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":49000,"duration":{"second":130,"nanosecond":418000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":71000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":71000,"duration":{"second":130,"nanosecond":418000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":48000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":48000,"duration":{"second":130,"nanosecond":418000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":75,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":75000}}],"watch_group":75000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":75,"duration":{"second":130,"nanosecond":418000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":45,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":45000}}],"watch_group":45000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":45,"duration":{"second":130,"nanosecond":415000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":7,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":7000}}],"watch_group":7000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":7,"duration":{"second":130,"nanosecond":415000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":39000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":39000,"duration":{"second":130,"nanosecond":415000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":73000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":73000,"duration":{"second":130,"nanosecond":414000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":69000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":69000,"duration":{"second":130,"nanosecond":414000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":17000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":17000,"duration":{"second":130,"nanosecond":414000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":28000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":28000,"duration":{"second":130,"nanosecond":414000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":74,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":74000}}],"watch_group":74000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":74,"duration":{"second":130,"nanosecond":414000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":44,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":44000}}],"watch_group":44000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":44,"duration":{"second":130,"nanosecond":414000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":6,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":6000}}],"watch_group":6000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":6,"duration":{"second":128,"nanosecond":907000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":40000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":40000,"duration":{"second":130,"nanosecond":414000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":81,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":81000}}],"watch_group":81000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":81,"duration":{"second":130,"nanosecond":414000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":47,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":47000}}],"watch_group":47000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":47,"duration":{"second":130,"nanosecond":414000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":21,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":21000}}],"watch_group":21000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":21,"duration":{"second":128,"nanosecond":907000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":8000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":8000,"duration":{"second":130,"nanosecond":414000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":19000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":19000,"duration":{"second":130,"nanosecond":414000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":96000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":96000,"duration":{"second":130,"nanosecond":414000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":80,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":80000}}],"watch_group":80000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":80,"duration":{"second":130,"nanosecond":412000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":46,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":46000}}],"watch_group":46000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":46,"duration":{"second":130,"nanosecond":412000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":20,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":20000}}],"watch_group":20000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":20,"duration":{"second":130,"nanosecond":412000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":52000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":52000,"duration":{"second":130,"nanosecond":412000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":6000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":6000,"duration":{"second":130,"nanosecond":412000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":79,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":79000}}],"watch_group":79000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":79,"duration":{"second":130,"nanosecond":412000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":49,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":49000}}],"watch_group":49000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":49,"duration":{"second":129,"nanosecond":919000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":19,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":19000}}],"watch_group":19000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":19,"duration":{"second":129,"nanosecond":919000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":50000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":50000,"duration":{"second":129,"nanosecond":919000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":72000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":72000,"duration":{"second":129,"nanosecond":919000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":30000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":30000,"duration":{"second":129,"nanosecond":918000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":78,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":78000}}],"watch_group":78000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":78,"duration":{"second":129,"nanosecond":918000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":48,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":48000}}],"watch_group":48000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":48,"duration":{"second":129,"nanosecond":917000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":18,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":18000}}],"watch_group":18000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":18,"duration":{"second":129,"nanosecond":917000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":51000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":51000,"duration":{"second":129,"nanosecond":917000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":85,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":85000}}],"watch_group":85000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":85,"duration":{"second":129,"nanosecond":917000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":55000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":55000,"duration":{"second":129,"nanosecond":916000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":51,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":51000}}],"watch_group":51000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":51,"duration":{"second":129,"nanosecond":412000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":17,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":17000}}],"watch_group":17000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":17,"duration":{"second":129,"nanosecond":412000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":21000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":21000,"duration":{"second":129,"nanosecond":412000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":4000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":4000,"duration":{"second":129,"nanosecond":412000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":84,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":84000}}],"watch_group":84000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":84,"duration":{"second":129,"nanosecond":412000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":50,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":50000}}],"watch_group":50000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":50,"duration":{"second":129,"nanosecond":412000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":16,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":16000}}],"watch_group":16000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":16,"duration":{"second":129,"nanosecond":412000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":10000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":10000,"duration":{"second":129,"nanosecond":412000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":54000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":54000,"duration":{"second":129,"nanosecond":412000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":83,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":83000}}],"watch_group":83000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":83,"duration":{"second":129,"nanosecond":412000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":32000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":32000,"duration":{"second":129,"nanosecond":412000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":53,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":53000}}],"watch_group":53000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":53,"duration":{"second":128,"nanosecond":907000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":15,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":15000}}],"watch_group":15000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":15,"duration":{"second":129,"nanosecond":412000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":2000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":2000,"duration":{"second":129,"nanosecond":412000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":82,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":82000}}],"watch_group":82000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":82,"duration":{"second":129,"nanosecond":412000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":52,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":52000}}],"watch_group":52000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":52,"duration":{"second":129,"nanosecond":412000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":14,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":14000}}],"watch_group":14000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":14,"duration":{"second":129,"nanosecond":412000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":53000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":53000,"duration":{"second":129,"nanosecond":412000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":12000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":12000,"duration":{"second":129,"nanosecond":412000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":23000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":23000,"duration":{"second":129,"nanosecond":412000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":94000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":94000,"duration":{"second":129,"nanosecond":412000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}}],"flow-node-inventory:snapshot-gathering-status-end":{"succeeded":true,"end":"2026-04-08T01:00:38.176Z"}},{"id":"openflow:2","flow-node-inventory:port-number":54944,"flow-node-inventory:table":[{"id":62,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":28,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":2,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":224,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":181,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":147,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":106,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":61,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":27,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":1,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":223,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":182,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":148,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":105,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":60,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":30,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":0,"flow":[{"id":"71","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.71/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":71}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":249000000}},"flags":""},{"id":"11","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.11/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":11}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":248000000}},"flags":""},{"id":"70","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.70/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":70}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":249000000}},"flags":""},{"id":"10","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.10/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":10}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":248000000}},"flags":""},{"id":"60","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.60/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":60}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":249000000}},"flags":""},{"id":"13","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.13/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":13}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":248000000}},"flags":""},{"id":"12","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.12/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":12}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":248000000}},"flags":""},{"id":"80","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.80/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":80}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":249000000}},"flags":""},{"id":"93","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.93/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":93}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":248000000}},"flags":""},{"id":"92","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.92/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":92}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":248000000}},"flags":""},{"id":"82","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.82/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":82}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":249000000}},"flags":""},{"id":"91","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.91/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":91}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":248000000}},"flags":""},{"id":"81","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.81/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":81}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":249000000}},"flags":""},{"id":"90","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.90/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":90}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":248000000}},"flags":""},{"id":"9","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.9/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":9}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":248000000}},"flags":""},{"id":"84","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.84/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":84}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":249000000}},"flags":""},{"id":"97","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.97/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":97}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":248000000}},"flags":""},{"id":"66","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.66/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":66}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":249000000}},"flags":""},{"id":"79","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.79/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":79}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":249000000}},"flags":""},{"id":"54","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.54/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":54}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":249000000}},"flags":""},{"id":"45","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.45/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":45}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":249000000}},"flags":""},{"id":"83","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.83/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":83}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":249000000}},"flags":""},{"id":"96","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.96/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":96}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":248000000}},"flags":""},{"id":"65","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.65/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":65}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":249000000}},"flags":""},{"id":"78","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.78/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":78}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":249000000}},"flags":""},{"id":"20","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.20/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":20}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":248000000}},"flags":""},{"id":"55","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.55/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":55}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":249000000}},"flags":""},{"id":"46","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.46/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":46}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":249000000}},"flags":""},{"id":"7","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.7/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":7}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":248000000}},"flags":""},{"id":"86","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.86/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":86}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":249000000}},"flags":""},{"id":"95","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.95/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":95}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":248000000}},"flags":""},{"id":"68","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.68/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":68}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":249000000}},"flags":""},{"id":"77","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.77/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":77}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":249000000}},"flags":""},{"id":"30","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.30/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":30}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":248000000}},"flags":""},{"id":"56","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.56/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":56}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":249000000}},"flags":""},{"id":"43","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.43/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":43}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":249000000}},"flags":""},{"id":"8","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.8/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":8}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":248000000}},"flags":""},{"id":"85","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.85/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":85}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":249000000}},"flags":""},{"id":"94","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.94/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":94}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":248000000}},"flags":""},{"id":"67","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.67/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":67}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":249000000}},"flags":""},{"id":"76","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.76/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":76}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":249000000}},"flags":""},{"id":"31","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.31/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":31}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":248000000}},"flags":""},{"id":"57","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.57/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":57}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":249000000}},"flags":""},{"id":"44","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.44/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":44}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":249000000}},"flags":""},{"id":"5","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.5/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":5}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":248000000}},"flags":""},{"id":"88","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.88/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":88}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":249000000}},"flags":""},{"id":"62","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.62/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":62}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":249000000}},"flags":""},{"id":"75","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.75/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":75}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":249000000}},"flags":""},{"id":"32","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.32/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":32}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":248000000}},"flags":""},{"id":"23","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.23/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":23}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":248000000}},"flags":""},{"id":"50","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.50/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":50}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":248000000}},"flags":""},{"id":"41","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.41/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":41}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":249000000}},"flags":""},{"id":"6","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.6/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":6}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":248000000}},"flags":""},{"id":"100","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.100/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":100}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":249000000}},"flags":""},{"id":"87","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.87/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":87}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":249000000}},"flags":""},{"id":"61","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.61/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":61}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":249000000}},"flags":""},{"id":"74","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.74/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":74}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":249000000}},"flags":""},{"id":"33","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.33/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":33}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":248000000}},"flags":""},{"id":"24","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.24/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":24}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":248000000}},"flags":""},{"id":"51","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.51/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":51}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":248000000}},"flags":""},{"id":"42","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.42/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":42}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":249000000}},"flags":""},{"id":"3","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.3/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":3}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":248000000}},"flags":""},{"id":"99","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.99/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":99}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":248000000}},"flags":""},{"id":"64","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.64/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":64}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":249000000}},"flags":""},{"id":"73","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.73/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":73}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":249000000}},"flags":""},{"id":"34","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.34/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":34}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":248000000}},"flags":""},{"id":"21","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.21/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":21}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":248000000}},"flags":""},{"id":"52","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.52/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":52}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":248000000}},"flags":""},{"id":"4","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.4/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":4}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":248000000}},"flags":""},{"id":"89","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.89/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":89}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":249000000}},"flags":""},{"id":"98","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.98/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":98}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":248000000}},"flags":""},{"id":"63","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.63/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":63}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":249000000}},"flags":""},{"id":"72","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.72/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":72}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":249000000}},"flags":""},{"id":"35","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.35/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":35}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":248000000}},"flags":""},{"id":"22","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.22/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":22}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":248000000}},"flags":""},{"id":"53","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.53/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":53}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":249000000}},"flags":""},{"id":"40","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.40/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":40}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":249000000}},"flags":""},{"id":"#UF$TABLE*0-2","table_id":0,"priority":0,"cookie_mask":"0","idle-timeout":0,"cookie":"10","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"output-action":{"max-length":65535,"output-node-connector":"CONTROLLER"}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"64","byte-count":"5260","duration":{"second":128,"nanosecond":128000000}},"flags":"SEND_FLOW_REM"},{"id":"37","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.37/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":37}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":248000000}},"flags":""},{"id":"28","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.28/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":28}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":248000000}},"flags":""},{"id":"36","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.36/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":36}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":248000000}},"flags":""},{"id":"27","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.27/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":27}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":248000000}},"flags":""},{"id":"39","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.39/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":39}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":248000000}},"flags":""},{"id":"26","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.26/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":26}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":248000000}},"flags":""},{"id":"38","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.38/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":38}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":248000000}},"flags":""},{"id":"25","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.25/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":25}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":248000000}},"flags":""},{"id":"69","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.69/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":69}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":249000000}},"flags":""},{"id":"59","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.59/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":59}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":249000000}},"flags":""},{"id":"58","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.58/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":58}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":249000000}},"flags":""},{"id":"49","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.49/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":49}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":249000000}},"flags":""},{"id":"48","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.48/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":48}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":249000000}},"flags":""},{"id":"29","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.29/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":29}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":248000000}},"flags":""},{"id":"47","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.47/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":47}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":249000000}},"flags":""},{"id":"18","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.18/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":18}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":249000000}},"flags":""},{"id":"19","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.19/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":19}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":249000000}},"flags":""},{"id":"14","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.14/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":14}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":249000000}},"flags":""},{"id":"15","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.15/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":15}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":249000000}},"flags":""},{"id":"1","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.1/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":1}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":35,"nanosecond":642000000}},"flags":""},{"id":"16","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.16/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":16}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":249000000}},"flags":""},{"id":"2","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.2/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":2}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":249000000}},"flags":""},{"id":"17","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.17/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":17}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":128,"nanosecond":249000000}},"flags":""}],"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"86","active-flows":101,"packets-matched":"74"}},{"id":226,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":179,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":149,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":104,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":59,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":29,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":225,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":180,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":150,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":103,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":66,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":32,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":220,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":185,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":151,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":102,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":65,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":31,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":253,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":219,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":186,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":152,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":101,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":64,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":34,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":252,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":222,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":183,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":153,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":100,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":63,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":33,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":251,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":221,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":184,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":154,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":99,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":54,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":20,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":250,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":216,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":189,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":155,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":129,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":114,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":53,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":19,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":249,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":215,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":190,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":156,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":130,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":113,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":52,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":22,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":248,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":218,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":187,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":157,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":112,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":51,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":21,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":247,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":217,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":188,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":158,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":128,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":111,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":58,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":24,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":246,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":212,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":193,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":159,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":110,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":57,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":23,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":245,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":211,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":194,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":160,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":109,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":56,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":26,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":244,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":214,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":191,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":161,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":108,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":55,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":25,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":243,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":213,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":192,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":162,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":107,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":77,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":43,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":17,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":239,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":198,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":164,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":138,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":119,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":89,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":78,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":44,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":18,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":240,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":197,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":163,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":137,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":120,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":90,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":75,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":45,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":15,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":241,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":196,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":166,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":136,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":121,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":87,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":76,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":46,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":16,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":242,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":195,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":165,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":135,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":122,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":88,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":81,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":47,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":13,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":235,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":202,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":168,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":134,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":115,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":85,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":82,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":48,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":14,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":236,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":201,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":167,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":133,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":116,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":86,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":79,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":49,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":11,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":237,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":200,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":170,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":132,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":117,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":83,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":80,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":50,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":12,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":238,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":199,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":169,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":131,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":118,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":84,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":69,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":35,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":9,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":231,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":206,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":172,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":146,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":127,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":97,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":70,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":36,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":10,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":232,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":205,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":171,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":145,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":98,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":67,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":37,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":7,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":233,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":204,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":174,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":144,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":95,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":68,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":38,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":8,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":234,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":203,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":173,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":143,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":96,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":73,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":39,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":5,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":227,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":210,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":176,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":142,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":123,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":93,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":74,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":40,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":6,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":228,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":209,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":175,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":141,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":124,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":94,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":71,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":41,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":3,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":229,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":208,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":178,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":140,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":125,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":91,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":72,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":42,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":4,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":230,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":207,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":177,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":139,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":126,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":92,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}}],"opendaylight-group-statistics:group-features":{"max-groups":[4294967040],"group-types-supported":["opendaylight-group-types:group-all","opendaylight-group-types:group-ff","opendaylight-group-types:group-select","opendaylight-group-types:group-indirect"],"group-capabilities-supported":["opendaylight-group-types:chaining","opendaylight-group-types:select-weight","opendaylight-group-types:select-liveness"],"actions":[67076097]},"flow-node-inventory:manufacturer":"Nicira, Inc.","flow-node-inventory:description":"s2","flow-node-inventory:hardware":"Open vSwitch","flow-node-inventory:switch-features":{"max_tables":254,"capabilities":["flow-node-inventory:flow-feature-capability-table-stats","flow-node-inventory:flow-feature-capability-group-stats","flow-node-inventory:flow-feature-capability-queue-stats","flow-node-inventory:flow-feature-capability-flow-stats","flow-node-inventory:flow-feature-capability-port-stats"],"max_buffers":0},"flow-node-inventory:snapshot-gathering-status-start":{"begin":"2026-04-08T01:00:38.138Z"},"flow-node-inventory:software":"2.17.11","node-connector":[{"id":"openflow:2:3","flow-node-inventory:port-number":3,"flow-node-inventory:hardware-address":"da:7c:fc:7d:24:d4","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s2-eth3","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"44","received":"39"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":133,"nanosecond":454000000},"bytes":{"transmitted":"3689","received":"3267"},"receive-crc-error":"0"}},{"id":"openflow:2:LOCAL","flow-node-inventory:port-number":4294967294,"flow-node-inventory:hardware-address":"ee:be:cf:9b:06:44","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s2","flow-node-inventory:current-feature":"","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":0,"flow-node-inventory:state":{"live":false,"blocked":false,"link-down":true},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"PORT-DOWN","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"0","received":"0"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":133,"nanosecond":449000000},"bytes":{"transmitted":"0","received":"0"},"receive-crc-error":"0"}},{"id":"openflow:2:2","flow-node-inventory:port-number":2,"flow-node-inventory:hardware-address":"76:f5:91:ad:d8:c6","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s2-eth2","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"43","received":"39"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":133,"nanosecond":454000000},"bytes":{"transmitted":"3619","received":"3267"},"receive-crc-error":"0"}},{"id":"openflow:2:1","flow-node-inventory:port-number":1,"flow-node-inventory:hardware-address":"96:61:91:36:76:0b","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s2-eth1","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"45","received":"11"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":133,"nanosecond":454000000},"bytes":{"transmitted":"3795","received":"866"},"receive-crc-error":"0"}}],"flow-node-inventory:ip-address":"10.30.170.192","flow-node-inventory:serial-number":"None","flow-node-inventory:group":[{"group-id":56,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":56000}}],"watch_group":56000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":56,"duration":{"second":129,"nanosecond":409000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":22,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":22000}}],"watch_group":22000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":22,"duration":{"second":129,"nanosecond":409000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":99,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":99000}}],"watch_group":99000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":99,"duration":{"second":129,"nanosecond":409000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":34000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":34000,"duration":{"second":132,"nanosecond":102000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":89000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":89000,"duration":{"second":132,"nanosecond":102000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":60000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":60000,"duration":{"second":132,"nanosecond":102000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":91000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":91000,"duration":{"second":132,"nanosecond":102000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":57,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":57000}}],"watch_group":57000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":57,"duration":{"second":129,"nanosecond":409000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":23,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":23000}}],"watch_group":23000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":23,"duration":{"second":128,"nanosecond":912000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":14000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":14000,"duration":{"second":132,"nanosecond":102000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":98,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":98000}}],"watch_group":98000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":98,"duration":{"second":128,"nanosecond":912000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":56000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":56000,"duration":{"second":132,"nanosecond":102000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":85000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":85000,"duration":{"second":132,"nanosecond":102000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":54,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":54000}}],"watch_group":54000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":54,"duration":{"second":128,"nanosecond":912000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":24,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":24000}}],"watch_group":24000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":24,"duration":{"second":128,"nanosecond":912000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":36000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":36000,"duration":{"second":132,"nanosecond":102000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":87000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":87000,"duration":{"second":132,"nanosecond":102000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":59000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":59000,"duration":{"second":132,"nanosecond":102000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":25000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":25000,"duration":{"second":132,"nanosecond":102000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":43000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":43000,"duration":{"second":132,"nanosecond":102000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":55,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":55000}}],"watch_group":55000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":55,"duration":{"second":128,"nanosecond":912000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":25,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":25000}}],"watch_group":25000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":25,"duration":{"second":131,"nanosecond":918000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":100,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":100000}}],"watch_group":100000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":100,"duration":{"second":128,"nanosecond":912000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":58000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":58000,"duration":{"second":131,"nanosecond":918000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":86000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":86000,"duration":{"second":131,"nanosecond":918000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":60,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":60000}}],"watch_group":60000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":60,"duration":{"second":131,"nanosecond":917000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":26,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":26000}}],"watch_group":26000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":26,"duration":{"second":128,"nanosecond":912000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":41000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":41000,"duration":{"second":131,"nanosecond":917000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":95,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":95000}}],"watch_group":95000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":95,"duration":{"second":128,"nanosecond":912000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":82000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":82000,"duration":{"second":131,"nanosecond":917000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":61,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":61000}}],"watch_group":61000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":61,"duration":{"second":128,"nanosecond":912000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":27,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":27000}}],"watch_group":27000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":27,"duration":{"second":128,"nanosecond":912000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":94,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":94000}}],"watch_group":94000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":94,"duration":{"second":128,"nanosecond":912000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":98000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":98000,"duration":{"second":131,"nanosecond":917000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":27000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":27000,"duration":{"second":131,"nanosecond":917000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":57000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":57000,"duration":{"second":131,"nanosecond":917000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":16000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":16000,"duration":{"second":131,"nanosecond":917000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":83000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":83000,"duration":{"second":131,"nanosecond":917000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":58,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":58000}}],"watch_group":58000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":58,"duration":{"second":131,"nanosecond":417000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":28,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":28000}}],"watch_group":28000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":28,"duration":{"second":128,"nanosecond":912000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":97,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":97000}}],"watch_group":97000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":97,"duration":{"second":128,"nanosecond":912000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":100000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":100000,"duration":{"second":131,"nanosecond":417000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":59,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":59000}}],"watch_group":59000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":59,"duration":{"second":131,"nanosecond":417000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":38000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":38000,"duration":{"second":131,"nanosecond":417000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":29,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":29000}}],"watch_group":29000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":29,"duration":{"second":128,"nanosecond":912000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":96,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":96000}}],"watch_group":96000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":96,"duration":{"second":128,"nanosecond":912000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":84000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":84000,"duration":{"second":131,"nanosecond":417000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":64,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":64000}}],"watch_group":64000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":64,"duration":{"second":128,"nanosecond":912000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":30,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":30000}}],"watch_group":30000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":30,"duration":{"second":128,"nanosecond":912000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":4,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":4000}}],"watch_group":4000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":4,"duration":{"second":128,"nanosecond":908000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":91,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":91000}}],"watch_group":91000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":91,"duration":{"second":131,"nanosecond":417000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":7000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":7000,"duration":{"second":131,"nanosecond":417000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":29000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":29000,"duration":{"second":131,"nanosecond":416000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":65,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":65000}}],"watch_group":65000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":65,"duration":{"second":128,"nanosecond":908000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":31,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":31000}}],"watch_group":31000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":31,"duration":{"second":128,"nanosecond":908000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":5,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":5000}}],"watch_group":5000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":5,"duration":{"second":128,"nanosecond":908000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":90,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":90000}}],"watch_group":90000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":90,"duration":{"second":128,"nanosecond":908000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":18000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":18000,"duration":{"second":131,"nanosecond":416000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":62,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":62000}}],"watch_group":62000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":62,"duration":{"second":128,"nanosecond":908000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":65000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":65000,"duration":{"second":131,"nanosecond":416000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":32,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":32000}}],"watch_group":32000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":32,"duration":{"second":128,"nanosecond":908000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":2,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":2000}}],"watch_group":2000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":2,"duration":{"second":128,"nanosecond":908000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":93,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":93000}}],"watch_group":93000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":93,"duration":{"second":128,"nanosecond":908000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":64000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":64000,"duration":{"second":131,"nanosecond":415000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":63,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":63000}}],"watch_group":63000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":63,"duration":{"second":128,"nanosecond":908000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":33,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":33000}}],"watch_group":33000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":33,"duration":{"second":128,"nanosecond":908000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":3,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":3000}}],"watch_group":3000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":3,"duration":{"second":128,"nanosecond":908000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":80000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":80000,"duration":{"second":131,"nanosecond":415000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":9000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":9000,"duration":{"second":131,"nanosecond":415000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":92,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":92000}}],"watch_group":92000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":92,"duration":{"second":128,"nanosecond":908000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":5000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":5000,"duration":{"second":131,"nanosecond":411000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":20000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":20000,"duration":{"second":131,"nanosecond":411000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":81000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":81000,"duration":{"second":131,"nanosecond":411000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":97000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":97000,"duration":{"second":131,"nanosecond":411000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":31000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":31000,"duration":{"second":131,"nanosecond":411000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":68,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":68000}}],"watch_group":68000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":68,"duration":{"second":128,"nanosecond":908000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":11000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":11000,"duration":{"second":131,"nanosecond":411000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":34,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":34000}}],"watch_group":34000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":34,"duration":{"second":131,"nanosecond":411000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":78000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":78000,"duration":{"second":131,"nanosecond":411000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":87,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":87000}}],"watch_group":87000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":87,"duration":{"second":131,"nanosecond":411000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":93000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":93000,"duration":{"second":131,"nanosecond":411000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":63000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":63000,"duration":{"second":131,"nanosecond":411000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":69,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":69000}}],"watch_group":69000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":69,"duration":{"second":128,"nanosecond":908000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":35,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":35000}}],"watch_group":35000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":35,"duration":{"second":128,"nanosecond":908000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":1,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":1000}}],"watch_group":1000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":1,"duration":{"second":35,"nanosecond":849000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":33000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":33000,"duration":{"second":131,"nanosecond":411000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":79000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":79000,"duration":{"second":131,"nanosecond":411000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":86,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":86000}}],"watch_group":86000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":86,"duration":{"second":131,"nanosecond":411000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":62000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":62000,"duration":{"second":131,"nanosecond":411000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":66,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":66000}}],"watch_group":66000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":66,"duration":{"second":128,"nanosecond":908000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":77000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":77000,"duration":{"second":131,"nanosecond":411000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":36,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":36000}}],"watch_group":36000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":36,"duration":{"second":131,"nanosecond":411000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":89,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":89000}}],"watch_group":89000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":89,"duration":{"second":131,"nanosecond":411000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":22000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":22000,"duration":{"second":131,"nanosecond":409000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":95000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":95000,"duration":{"second":131,"nanosecond":409000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":67,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":67000}}],"watch_group":67000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":67,"duration":{"second":128,"nanosecond":908000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":37,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":37000}}],"watch_group":37000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":37,"duration":{"second":128,"nanosecond":908000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":1000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":1000,"duration":{"second":36,"nanosecond":62000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":88,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":88000}}],"watch_group":88000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":88,"duration":{"second":128,"nanosecond":906000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":61000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":61000,"duration":{"second":131,"nanosecond":407000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":3000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":3000,"duration":{"second":131,"nanosecond":407000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":73,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":73000}}],"watch_group":73000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":73,"duration":{"second":128,"nanosecond":906000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":39,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":39000}}],"watch_group":39000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":39,"duration":{"second":128,"nanosecond":906000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":13,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":13000}}],"watch_group":13000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":13,"duration":{"second":128,"nanosecond":906000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":74000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":74000,"duration":{"second":131,"nanosecond":407000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":15000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":15000,"duration":{"second":131,"nanosecond":407000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":44000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":44000,"duration":{"second":131,"nanosecond":407000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":45000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":45000,"duration":{"second":131,"nanosecond":407000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":68000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":68000,"duration":{"second":131,"nanosecond":407000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":72,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":72000}}],"watch_group":72000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":72,"duration":{"second":128,"nanosecond":906000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":38,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":38000}}],"watch_group":38000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":38,"duration":{"second":130,"nanosecond":911000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":75000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":75000,"duration":{"second":130,"nanosecond":911000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":12,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":12000}}],"watch_group":12000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":12,"duration":{"second":128,"nanosecond":906000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":35000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":35000,"duration":{"second":130,"nanosecond":911000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":24000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":24000,"duration":{"second":130,"nanosecond":911000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":90000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":90000,"duration":{"second":130,"nanosecond":911000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":71,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":71000}}],"watch_group":71000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":71,"duration":{"second":128,"nanosecond":906000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":41,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":41000}}],"watch_group":41000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":41,"duration":{"second":130,"nanosecond":911000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":42000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":42000,"duration":{"second":130,"nanosecond":911000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":11,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":11000}}],"watch_group":11000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":11,"duration":{"second":130,"nanosecond":911000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":92000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":92000,"duration":{"second":130,"nanosecond":911000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":46000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":46000,"duration":{"second":130,"nanosecond":911000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":67000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":67000,"duration":{"second":130,"nanosecond":911000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":70,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":70000}}],"watch_group":70000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":70,"duration":{"second":128,"nanosecond":906000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":76000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":76000,"duration":{"second":130,"nanosecond":911000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":40,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":40000}}],"watch_group":40000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":40,"duration":{"second":128,"nanosecond":906000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":13000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":13000,"duration":{"second":130,"nanosecond":911000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":10,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":10000}}],"watch_group":10000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":10,"duration":{"second":128,"nanosecond":906000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":88000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":88000,"duration":{"second":130,"nanosecond":911000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":47000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":47000,"duration":{"second":130,"nanosecond":911000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":66000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":66000,"duration":{"second":130,"nanosecond":911000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":77,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":77000}}],"watch_group":77000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":77,"duration":{"second":130,"nanosecond":911000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":43,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":43000}}],"watch_group":43000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":43,"duration":{"second":130,"nanosecond":911000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":9,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":9000}}],"watch_group":9000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":9,"duration":{"second":130,"nanosecond":911000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":99000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":99000,"duration":{"second":130,"nanosecond":911000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":26000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":26000,"duration":{"second":130,"nanosecond":911000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":70000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":70000,"duration":{"second":130,"nanosecond":911000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":76,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":76000}}],"watch_group":76000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":76,"duration":{"second":130,"nanosecond":407000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":42,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":42000}}],"watch_group":42000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":42,"duration":{"second":130,"nanosecond":407000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":8,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":8000}}],"watch_group":8000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":8,"duration":{"second":128,"nanosecond":906000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":37000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":37000,"duration":{"second":130,"nanosecond":407000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":49000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":49000,"duration":{"second":130,"nanosecond":407000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":71000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":71000,"duration":{"second":130,"nanosecond":407000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":48000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":48000,"duration":{"second":130,"nanosecond":407000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":75,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":75000}}],"watch_group":75000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":75,"duration":{"second":130,"nanosecond":407000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":45,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":45000}}],"watch_group":45000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":45,"duration":{"second":130,"nanosecond":407000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":7,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":7000}}],"watch_group":7000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":7,"duration":{"second":130,"nanosecond":407000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":39000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":39000,"duration":{"second":130,"nanosecond":407000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":73000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":73000,"duration":{"second":130,"nanosecond":407000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":69000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":69000,"duration":{"second":130,"nanosecond":407000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":17000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":17000,"duration":{"second":130,"nanosecond":407000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":28000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":28000,"duration":{"second":130,"nanosecond":407000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":74,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":74000}}],"watch_group":74000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":74,"duration":{"second":130,"nanosecond":407000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":44,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":44000}}],"watch_group":44000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":44,"duration":{"second":130,"nanosecond":407000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":6,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":6000}}],"watch_group":6000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":6,"duration":{"second":128,"nanosecond":906000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":40000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":40000,"duration":{"second":130,"nanosecond":407000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":81,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":81000}}],"watch_group":81000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":81,"duration":{"second":130,"nanosecond":407000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":47,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":47000}}],"watch_group":47000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":47,"duration":{"second":130,"nanosecond":407000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":21,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":21000}}],"watch_group":21000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":21,"duration":{"second":128,"nanosecond":906000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":8000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":8000,"duration":{"second":130,"nanosecond":407000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":19000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":19000,"duration":{"second":130,"nanosecond":407000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":96000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":96000,"duration":{"second":130,"nanosecond":407000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":80,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":80000}}],"watch_group":80000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":80,"duration":{"second":130,"nanosecond":407000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":46,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":46000}}],"watch_group":46000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":46,"duration":{"second":130,"nanosecond":407000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":20,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":20000}}],"watch_group":20000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":20,"duration":{"second":130,"nanosecond":407000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":52000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":52000,"duration":{"second":130,"nanosecond":407000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":6000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":6000,"duration":{"second":130,"nanosecond":407000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":79,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":79000}}],"watch_group":79000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":79,"duration":{"second":130,"nanosecond":407000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":49,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":49000}}],"watch_group":49000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":49,"duration":{"second":129,"nanosecond":916000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":19,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":19000}}],"watch_group":19000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":19,"duration":{"second":129,"nanosecond":916000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":50000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":50000,"duration":{"second":129,"nanosecond":915000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":72000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":72000,"duration":{"second":129,"nanosecond":915000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":30000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":30000,"duration":{"second":129,"nanosecond":915000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":78,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":78000}}],"watch_group":78000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":78,"duration":{"second":129,"nanosecond":914000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":48,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":48000}}],"watch_group":48000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":48,"duration":{"second":129,"nanosecond":913000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":18,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":18000}}],"watch_group":18000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":18,"duration":{"second":129,"nanosecond":913000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":51000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":51000,"duration":{"second":129,"nanosecond":912000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":85,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":85000}}],"watch_group":85000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":85,"duration":{"second":129,"nanosecond":912000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":55000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":55000,"duration":{"second":129,"nanosecond":912000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":51,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":51000}}],"watch_group":51000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":51,"duration":{"second":129,"nanosecond":415000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":17,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":17000}}],"watch_group":17000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":17,"duration":{"second":129,"nanosecond":415000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":21000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":21000,"duration":{"second":129,"nanosecond":415000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":4000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":4000,"duration":{"second":129,"nanosecond":415000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":84,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":84000}}],"watch_group":84000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":84,"duration":{"second":129,"nanosecond":415000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":50,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":50000}}],"watch_group":50000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":50,"duration":{"second":129,"nanosecond":414000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":16,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":16000}}],"watch_group":16000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":16,"duration":{"second":129,"nanosecond":414000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":10000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":10000,"duration":{"second":129,"nanosecond":414000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":54000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":54000,"duration":{"second":129,"nanosecond":409000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":83,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":83000}}],"watch_group":83000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":83,"duration":{"second":129,"nanosecond":409000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":32000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":32000,"duration":{"second":129,"nanosecond":409000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":53,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":53000}}],"watch_group":53000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":53,"duration":{"second":128,"nanosecond":906000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":15,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":15000}}],"watch_group":15000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":15,"duration":{"second":129,"nanosecond":409000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":2000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":2000,"duration":{"second":129,"nanosecond":409000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":82,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":82000}}],"watch_group":82000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":82,"duration":{"second":129,"nanosecond":409000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":52,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":52000}}],"watch_group":52000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":52,"duration":{"second":129,"nanosecond":409000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":14,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":14000}}],"watch_group":14000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":14,"duration":{"second":129,"nanosecond":409000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":53000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":53000,"duration":{"second":129,"nanosecond":409000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":12000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":12000,"duration":{"second":129,"nanosecond":409000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":23000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":23000,"duration":{"second":129,"nanosecond":409000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":94000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":94000,"duration":{"second":129,"nanosecond":409000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}}],"flow-node-inventory:snapshot-gathering-status-end":{"succeeded":true,"end":"2026-04-08T01:00:38.173Z"}}]}}</msg>
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:00:40.876967" elapsed="0.010342"/>
</kw>
<kw name="Get Count" owner="BuiltIn">
<msg time="2026-04-08T01:00:40.890575" level="INFO">Item found from container 303 times.</msg>
<msg time="2026-04-08T01:00:40.890657" level="INFO">${count} = 303</msg>
<var>${count}</var>
<arg>${resp.text}</arg>
<arg>"priority"</arg>
<doc>Returns and logs how many times ``item`` is found from ``container``.</doc>
<status status="PASS" start="2026-04-08T01:00:40.887498" elapsed="0.003184"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-04-08T01:00:40.891251" level="FAIL">303 != 300</msg>
<arg>${count}</arg>
<arg>${flows}</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="FAIL" start="2026-04-08T01:00:40.890872" elapsed="0.000454">303 != 300</status>
</kw>
<arg>${less_flows}</arg>
<doc>Check number of flows in the inventory.</doc>
<status status="FAIL" start="2026-04-08T01:00:40.828089" elapsed="0.063349">303 != 300</status>
</kw>
<kw name="Check Number Of Flows On Member" owner="ClusterOpenFlow">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:00:41.895040" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:00:41.894281" elapsed="0.000827"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T01:00:41.895258" elapsed="0.000083"/>
</return>
<msg time="2026-04-08T01:00:41.895618" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T01:00:41.893405" elapsed="0.002270"/>
</kw>
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T01:00:41.937863" level="INFO">GET Request : url=http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01s3bfo0y24i1es90l47mavglv0.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T01:00:41.942916" level="INFO">GET Response : url=http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Transfer-Encoding': 'chunked'} 
 body={"opendaylight-inventory:nodes":{"node":[{"id":"openflow:3","flow-node-inventory:port-number":54950,"flow-node-inventory:table":[{"id":62,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":28,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":2,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":224,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":181,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":147,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":106,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":61,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":27,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":1,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":223,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":182,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":148,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":105,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":60,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":30,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":0,"flow":[{"id":"69","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.69/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":69}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":315000000}},"flags":""},{"id":"60","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.60/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":60}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":315000000}},"flags":""},{"id":"68","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.68/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":68}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":315000000}},"flags":""},{"id":"67","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.67/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":67}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":315000000}},"flags":""},{"id":"66","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.66/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":66}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":315000000}},"flags":""},{"id":"65","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.65/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":65}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":315000000}},"flags":""},{"id":"64","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.64/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":64}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":315000000}},"flags":""},{"id":"63","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.63/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":63}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":315000000}},"flags":""},{"id":"62","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.62/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":62}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":315000000}},"flags":""},{"id":"61","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.61/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":61}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":315000000}},"flags":""},{"id":"100","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.100/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":100}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":315000000}},"flags":""},{"id":"71","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.71/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":71}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":315000000}},"flags":""},{"id":"70","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.70/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":70}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":315000000}},"flags":""},{"id":"79","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.79/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":79}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":315000000}},"flags":""},{"id":"78","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.78/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":78}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":315000000}},"flags":""},{"id":"77","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.77/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":77}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":315000000}},"flags":""},{"id":"76","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.76/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":76}}]}}]},"hard-timeout":0,"opendaylig... (set the log level to DEBUG or TRACE to see the full content) 
 </msg>
<msg time="2026-04-08T01:00:41.943584" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${RFC8040_OPERATIONAL_NODES_API}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T01:00:41.896031" elapsed="0.047624"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:00:41.950143" level="INFO">{"opendaylight-inventory:nodes":{"node":[{"id":"openflow:3","flow-node-inventory:port-number":54950,"flow-node-inventory:table":[{"id":62,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":28,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":2,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":224,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":181,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":147,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":106,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":61,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":27,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":1,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":223,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":182,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":148,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":105,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":60,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":30,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":0,"flow":[{"id":"69","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.69/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":69}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":315000000}},"flags":""},{"id":"60","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.60/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":60}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":315000000}},"flags":""},{"id":"68","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.68/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":68}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":315000000}},"flags":""},{"id":"67","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.67/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":67}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":315000000}},"flags":""},{"id":"66","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.66/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":66}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":315000000}},"flags":""},{"id":"65","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.65/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":65}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":315000000}},"flags":""},{"id":"64","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.64/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":64}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":315000000}},"flags":""},{"id":"63","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.63/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":63}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":315000000}},"flags":""},{"id":"62","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.62/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":62}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":315000000}},"flags":""},{"id":"61","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.61/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":61}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":315000000}},"flags":""},{"id":"100","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.100/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":100}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":315000000}},"flags":""},{"id":"71","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.71/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":71}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":315000000}},"flags":""},{"id":"70","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.70/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":70}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":315000000}},"flags":""},{"id":"79","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.79/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":79}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":315000000}},"flags":""},{"id":"78","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.78/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":78}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":315000000}},"flags":""},{"id":"77","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.77/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":77}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":315000000}},"flags":""},{"id":"76","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.76/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":76}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":315000000}},"flags":""},{"id":"75","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.75/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":75}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":315000000}},"flags":""},{"id":"74","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.74/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":74}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":315000000}},"flags":""},{"id":"73","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.73/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":73}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":315000000}},"flags":""},{"id":"72","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.72/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":72}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":315000000}},"flags":""},{"id":"82","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.82/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":82}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":315000000}},"flags":""},{"id":"81","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.81/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":81}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":315000000}},"flags":""},{"id":"80","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.80/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":80}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":315000000}},"flags":""},{"id":"89","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.89/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":89}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":315000000}},"flags":""},{"id":"88","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.88/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":88}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":315000000}},"flags":""},{"id":"87","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.87/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":87}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":315000000}},"flags":""},{"id":"86","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.86/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":86}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":315000000}},"flags":""},{"id":"85","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.85/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":85}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":315000000}},"flags":""},{"id":"84","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.84/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":84}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":315000000}},"flags":""},{"id":"83","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.83/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":83}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":315000000}},"flags":""},{"id":"19","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.19/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":19}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":315000000}},"flags":""},{"id":"18","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.18/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":18}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":315000000}},"flags":""},{"id":"17","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.17/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":17}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":315000000}},"flags":""},{"id":"16","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.16/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":16}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":315000000}},"flags":""},{"id":"15","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.15/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":15}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":315000000}},"flags":""},{"id":"14","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.14/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":14}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":315000000}},"flags":""},{"id":"2","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.2/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":2}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":315000000}},"flags":""},{"id":"93","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.93/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":93}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":315000000}},"flags":""},{"id":"92","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.92/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":92}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":315000000}},"flags":""},{"id":"91","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.91/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":91}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":315000000}},"flags":""},{"id":"90","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.90/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":90}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":315000000}},"flags":""},{"id":"13","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.13/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":13}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":315000000}},"flags":""},{"id":"12","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.12/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":12}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":315000000}},"flags":""},{"id":"11","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.11/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":11}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":315000000}},"flags":""},{"id":"99","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.99/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":99}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":315000000}},"flags":""},{"id":"10","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.10/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":10}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":315000000}},"flags":""},{"id":"98","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.98/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":98}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":315000000}},"flags":""},{"id":"97","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.97/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":97}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":315000000}},"flags":""},{"id":"96","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.96/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":96}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":314000000}},"flags":""},{"id":"95","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.95/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":95}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":314000000}},"flags":""},{"id":"94","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.94/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":94}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":314000000}},"flags":""},{"id":"29","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.29/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":29}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":314000000}},"flags":""},{"id":"28","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.28/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":28}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":314000000}},"flags":""},{"id":"27","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.27/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":27}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":314000000}},"flags":""},{"id":"26","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.26/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":26}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":314000000}},"flags":""},{"id":"25","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.25/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":25}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":314000000}},"flags":""},{"id":"9","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.9/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":9}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":314000000}},"flags":""},{"id":"8","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.8/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":8}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":314000000}},"flags":""},{"id":"7","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.7/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":7}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":314000000}},"flags":""},{"id":"6","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.6/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":6}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":314000000}},"flags":""},{"id":"5","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.5/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":5}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":314000000}},"flags":""},{"id":"4","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.4/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":4}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":314000000}},"flags":""},{"id":"3","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.3/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":3}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":314000000}},"flags":""},{"id":"24","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.24/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":24}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":314000000}},"flags":""},{"id":"23","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.23/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":23}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":314000000}},"flags":""},{"id":"22","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.22/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":22}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":314000000}},"flags":""},{"id":"21","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.21/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":21}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":314000000}},"flags":""},{"id":"20","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.20/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":20}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":314000000}},"flags":""},{"id":"39","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.39/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":39}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":314000000}},"flags":""},{"id":"38","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.38/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":38}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":314000000}},"flags":""},{"id":"37","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.37/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":37}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":314000000}},"flags":""},{"id":"36","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.36/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":36}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":314000000}},"flags":""},{"id":"35","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.35/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":35}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":314000000}},"flags":""},{"id":"34","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.34/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":34}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":314000000}},"flags":""},{"id":"33","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.33/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":33}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":314000000}},"flags":""},{"id":"32","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.32/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":32}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":314000000}},"flags":""},{"id":"31","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.31/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":31}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":314000000}},"flags":""},{"id":"30","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.30/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":30}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":314000000}},"flags":""},{"id":"49","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.49/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":49}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":314000000}},"flags":""},{"id":"48","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.48/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":48}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":314000000}},"flags":""},{"id":"47","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.47/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":47}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":314000000}},"flags":""},{"id":"#UF$TABLE*0-3","table_id":0,"priority":0,"cookie_mask":"0","idle-timeout":0,"cookie":"10","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"output-action":{"max-length":65535,"output-node-connector":"CONTROLLER"}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"35","byte-count":"2840","duration":{"second":131,"nanosecond":187000000}},"flags":"SEND_FLOW_REM"},{"id":"46","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.46/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":46}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":314000000}},"flags":""},{"id":"45","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.45/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":45}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":314000000}},"flags":""},{"id":"44","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.44/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":44}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":314000000}},"flags":""},{"id":"43","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.43/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":43}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":314000000}},"flags":""},{"id":"42","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.42/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":42}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":315000000}},"flags":""},{"id":"41","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.41/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":41}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":315000000}},"flags":""},{"id":"40","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.40/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":40}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":315000000}},"flags":""},{"id":"59","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.59/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":59}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":315000000}},"flags":""},{"id":"58","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.58/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":58}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":315000000}},"flags":""},{"id":"57","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.57/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":57}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":315000000}},"flags":""},{"id":"56","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.56/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":56}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":315000000}},"flags":""},{"id":"55","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.55/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":55}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":315000000}},"flags":""},{"id":"54","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.54/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":54}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":315000000}},"flags":""},{"id":"53","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.53/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":53}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":315000000}},"flags":""},{"id":"52","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.52/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":52}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":315000000}},"flags":""},{"id":"51","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.51/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":51}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":312000000}},"flags":""},{"id":"50","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.50/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":50}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":312000000}},"flags":""}],"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"53","active-flows":100,"packets-matched":"45"}},{"id":226,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":179,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":149,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":104,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":59,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":29,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":225,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":180,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":150,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":103,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":66,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":32,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":220,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":185,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":151,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":102,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":65,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":31,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":253,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":219,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":186,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":152,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":101,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":64,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":34,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":252,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":222,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":183,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":153,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":100,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":63,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":33,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":251,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":221,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":184,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":154,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":99,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":54,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":20,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":250,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":216,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":189,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":155,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":129,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":114,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":53,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":19,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":249,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":215,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":190,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":156,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":130,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":113,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":52,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":22,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":248,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":218,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":187,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":157,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":112,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":51,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":21,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":247,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":217,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":188,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":158,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":128,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":111,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":58,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":24,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":246,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":212,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":193,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":159,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":110,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":57,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":23,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":245,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":211,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":194,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":160,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":109,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":56,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":26,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":244,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":214,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":191,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":161,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":108,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":55,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":25,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":243,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":213,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":192,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":162,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":107,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":77,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":43,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":17,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":239,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":198,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":164,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":138,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":119,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":89,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":78,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":44,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":18,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":240,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":197,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":163,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":137,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":120,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":90,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":75,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":45,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":15,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":241,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":196,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":166,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":136,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":121,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":87,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":76,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":46,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":16,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":242,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":195,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":165,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":135,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":122,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":88,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":81,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":47,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":13,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":235,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":202,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":168,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":134,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":115,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":85,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":82,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":48,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":14,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":236,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":201,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":167,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":133,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":116,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":86,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":79,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":49,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":11,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":237,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":200,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":170,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":132,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":117,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":83,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":80,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":50,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":12,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":238,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":199,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":169,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":131,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":118,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":84,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":69,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":35,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":9,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":231,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":206,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":172,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":146,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":127,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":97,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":70,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":36,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":10,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":232,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":205,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":171,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":145,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":98,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":67,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":37,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":7,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":233,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":204,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":174,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":144,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":95,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":68,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":38,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":8,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":234,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":203,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":173,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":143,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":96,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":73,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":39,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":5,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":227,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":210,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":176,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":142,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":123,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":93,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":74,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":40,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":6,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":228,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":209,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":175,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":141,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":124,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":94,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":71,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":41,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":3,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":229,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":208,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":178,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":140,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":125,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":91,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":72,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":42,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":4,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":230,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":207,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":177,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":139,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":126,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":92,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}}],"opendaylight-group-statistics:group-features":{"max-groups":[4294967040],"group-types-supported":["opendaylight-group-types:group-all","opendaylight-group-types:group-ff","opendaylight-group-types:group-select","opendaylight-group-types:group-indirect"],"group-capabilities-supported":["opendaylight-group-types:chaining","opendaylight-group-types:select-weight","opendaylight-group-types:select-liveness"],"actions":[67076097]},"flow-node-inventory:manufacturer":"Nicira, Inc.","flow-node-inventory:description":"s3","flow-node-inventory:hardware":"Open vSwitch","flow-node-inventory:switch-features":{"max_tables":254,"capabilities":["flow-node-inventory:flow-feature-capability-table-stats","flow-node-inventory:flow-feature-capability-group-stats","flow-node-inventory:flow-feature-capability-queue-stats","flow-node-inventory:flow-feature-capability-flow-stats","flow-node-inventory:flow-feature-capability-port-stats"],"max_buffers":0},"flow-node-inventory:snapshot-gathering-status-start":{"begin":"2026-04-08T01:00:41.176Z"},"flow-node-inventory:software":"2.17.11","node-connector":[{"id":"openflow:3:LOCAL","flow-node-inventory:port-number":4294967294,"flow-node-inventory:hardware-address":"c2:87:c1:60:0d:43","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s3","flow-node-inventory:current-feature":"","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":0,"flow-node-inventory:state":{"live":false,"blocked":false,"link-down":true},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"PORT-DOWN","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"0","received":"0"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":136,"nanosecond":516000000},"bytes":{"transmitted":"0","received":"0"},"receive-crc-error":"0"}},{"id":"openflow:3:2","flow-node-inventory:port-number":2,"flow-node-inventory:hardware-address":"9e:72:98:8c:46:72","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s3-eth2","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"39","received":"44"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":136,"nanosecond":520000000},"bytes":{"transmitted":"3267","received":"3689"},"receive-crc-error":"0"}},{"id":"openflow:3:1","flow-node-inventory:port-number":1,"flow-node-inventory:hardware-address":"ca:ac:9a:41:42:1c","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s3-eth1","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"46","received":"11"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":136,"nanosecond":519000000},"bytes":{"transmitted":"3865","received":"866"},"receive-crc-error":"0"}}],"flow-node-inventory:ip-address":"10.30.170.192","flow-node-inventory:serial-number":"None","flow-node-inventory:group":[{"group-id":56,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":56000}}],"watch_group":56000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":56,"duration":{"second":132,"nanosecond":314000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":22,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":22000}}],"watch_group":22000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":22,"duration":{"second":132,"nanosecond":314000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":99,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":99000}}],"watch_group":99000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":99,"duration":{"second":132,"nanosecond":314000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":34000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":34000,"duration":{"second":135,"nanosecond":144000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":89000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":89000,"duration":{"second":135,"nanosecond":143000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":60000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":60000,"duration":{"second":135,"nanosecond":140000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":91000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":91000,"duration":{"second":135,"nanosecond":140000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":57,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":57000}}],"watch_group":57000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":57,"duration":{"second":132,"nanosecond":314000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":23,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":23000}}],"watch_group":23000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":23,"duration":{"second":131,"nanosecond":817000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":14000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":14000,"duration":{"second":135,"nanosecond":140000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":98,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":98000}}],"watch_group":98000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":98,"duration":{"second":131,"nanosecond":816000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":56000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":56000,"duration":{"second":135,"nanosecond":140000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":85000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":85000,"duration":{"second":135,"nanosecond":140000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":54,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":54000}}],"watch_group":54000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":54,"duration":{"second":131,"nanosecond":816000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":24,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":24000}}],"watch_group":24000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":24,"duration":{"second":131,"nanosecond":816000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":36000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":36000,"duration":{"second":135,"nanosecond":140000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":87000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":87000,"duration":{"second":135,"nanosecond":140000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":59000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":59000,"duration":{"second":135,"nanosecond":140000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":25000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":25000,"duration":{"second":135,"nanosecond":140000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":43000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":43000,"duration":{"second":135,"nanosecond":139000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":55,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":55000}}],"watch_group":55000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":55,"duration":{"second":131,"nanosecond":816000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":25,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":25000}}],"watch_group":25000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":25,"duration":{"second":134,"nanosecond":822000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":100,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":100000}}],"watch_group":100000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":100,"duration":{"second":131,"nanosecond":816000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":58000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":58000,"duration":{"second":134,"nanosecond":822000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":86000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":86000,"duration":{"second":134,"nanosecond":822000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":60,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":60000}}],"watch_group":60000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":60,"duration":{"second":134,"nanosecond":822000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":26,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":26000}}],"watch_group":26000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":26,"duration":{"second":131,"nanosecond":816000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":41000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":41000,"duration":{"second":134,"nanosecond":821000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":95,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":95000}}],"watch_group":95000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":95,"duration":{"second":131,"nanosecond":816000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":82000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":82000,"duration":{"second":134,"nanosecond":821000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":61,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":61000}}],"watch_group":61000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":61,"duration":{"second":131,"nanosecond":816000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":27,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":27000}}],"watch_group":27000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":27,"duration":{"second":131,"nanosecond":811000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":94,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":94000}}],"watch_group":94000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":94,"duration":{"second":131,"nanosecond":811000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":98000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":98000,"duration":{"second":134,"nanosecond":820000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":27000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":27000,"duration":{"second":134,"nanosecond":820000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":57000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":57000,"duration":{"second":134,"nanosecond":819000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":16000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":16000,"duration":{"second":134,"nanosecond":818000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":83000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":83000,"duration":{"second":134,"nanosecond":818000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":58,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":58000}}],"watch_group":58000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":58,"duration":{"second":134,"nanosecond":319000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":28,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":28000}}],"watch_group":28000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":28,"duration":{"second":131,"nanosecond":811000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":97,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":97000}}],"watch_group":97000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":97,"duration":{"second":131,"nanosecond":811000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":100000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":100000,"duration":{"second":134,"nanosecond":319000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":59,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":59000}}],"watch_group":59000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":59,"duration":{"second":134,"nanosecond":319000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":38000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":38000,"duration":{"second":134,"nanosecond":319000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":29,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":29000}}],"watch_group":29000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":29,"duration":{"second":131,"nanosecond":811000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":96,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":96000}}],"watch_group":96000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":96,"duration":{"second":131,"nanosecond":811000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":84000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":84000,"duration":{"second":134,"nanosecond":319000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":64,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":64000}}],"watch_group":64000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":64,"duration":{"second":131,"nanosecond":811000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":30,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":30000}}],"watch_group":30000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":30,"duration":{"second":131,"nanosecond":811000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":4,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":4000}}],"watch_group":4000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":4,"duration":{"second":131,"nanosecond":811000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":91,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":91000}}],"watch_group":91000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":91,"duration":{"second":134,"nanosecond":319000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":7000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":7000,"duration":{"second":134,"nanosecond":319000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":29000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":29000,"duration":{"second":134,"nanosecond":319000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":65,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":65000}}],"watch_group":65000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":65,"duration":{"second":131,"nanosecond":811000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":31,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":31000}}],"watch_group":31000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":31,"duration":{"second":131,"nanosecond":811000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":5,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":5000}}],"watch_group":5000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":5,"duration":{"second":131,"nanosecond":811000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":90,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":90000}}],"watch_group":90000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":90,"duration":{"second":131,"nanosecond":811000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":18000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":18000,"duration":{"second":134,"nanosecond":318000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":62,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":62000}}],"watch_group":62000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":62,"duration":{"second":131,"nanosecond":811000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":65000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":65000,"duration":{"second":134,"nanosecond":318000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":32,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":32000}}],"watch_group":32000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":32,"duration":{"second":131,"nanosecond":811000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":2,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":2000}}],"watch_group":2000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":2,"duration":{"second":131,"nanosecond":811000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":93,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":93000}}],"watch_group":93000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":93,"duration":{"second":131,"nanosecond":811000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":64000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":64000,"duration":{"second":134,"nanosecond":317000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":63,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":63000}}],"watch_group":63000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":63,"duration":{"second":131,"nanosecond":811000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":33,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":33000}}],"watch_group":33000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":33,"duration":{"second":131,"nanosecond":811000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":3,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":3000}}],"watch_group":3000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":3,"duration":{"second":131,"nanosecond":811000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":80000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":80000,"duration":{"second":134,"nanosecond":316000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":9000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":9000,"duration":{"second":134,"nanosecond":316000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":92,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":92000}}],"watch_group":92000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":92,"duration":{"second":131,"nanosecond":811000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":5000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":5000,"duration":{"second":134,"nanosecond":316000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":20000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":20000,"duration":{"second":134,"nanosecond":316000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":81000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":81000,"duration":{"second":134,"nanosecond":316000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":97000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":97000,"duration":{"second":134,"nanosecond":316000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":31000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":31000,"duration":{"second":134,"nanosecond":316000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":68,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":68000}}],"watch_group":68000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":68,"duration":{"second":131,"nanosecond":811000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":11000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":11000,"duration":{"second":134,"nanosecond":316000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":34,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":34000}}],"watch_group":34000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":34,"duration":{"second":134,"nanosecond":316000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":78000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":78000,"duration":{"second":134,"nanosecond":315000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":87,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":87000}}],"watch_group":87000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":87,"duration":{"second":134,"nanosecond":315000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":93000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":93000,"duration":{"second":134,"nanosecond":315000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":63000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":63000,"duration":{"second":134,"nanosecond":315000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":69,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":69000}}],"watch_group":69000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":69,"duration":{"second":131,"nanosecond":811000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":35,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":35000}}],"watch_group":35000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":35,"duration":{"second":131,"nanosecond":811000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":33000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":33000,"duration":{"second":134,"nanosecond":311000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":79000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":79000,"duration":{"second":134,"nanosecond":311000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":86,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":86000}}],"watch_group":86000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":86,"duration":{"second":134,"nanosecond":311000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":62000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":62000,"duration":{"second":134,"nanosecond":311000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":66,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":66000}}],"watch_group":66000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":66,"duration":{"second":131,"nanosecond":811000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":77000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":77000,"duration":{"second":134,"nanosecond":311000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":36,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":36000}}],"watch_group":36000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":36,"duration":{"second":134,"nanosecond":311000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":89,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":89000}}],"watch_group":89000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":89,"duration":{"second":134,"nanosecond":311000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":22000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":22000,"duration":{"second":134,"nanosecond":311000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":95000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":95000,"duration":{"second":134,"nanosecond":311000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":67,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":67000}}],"watch_group":67000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":67,"duration":{"second":131,"nanosecond":811000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":37,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":37000}}],"watch_group":37000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":37,"duration":{"second":131,"nanosecond":811000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":88,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":88000}}],"watch_group":88000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":88,"duration":{"second":131,"nanosecond":811000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":61000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":61000,"duration":{"second":134,"nanosecond":310000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":3000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":3000,"duration":{"second":134,"nanosecond":310000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":73,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":73000}}],"watch_group":73000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":73,"duration":{"second":131,"nanosecond":811000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":39,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":39000}}],"watch_group":39000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":39,"duration":{"second":131,"nanosecond":806000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":13,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":13000}}],"watch_group":13000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":13,"duration":{"second":131,"nanosecond":806000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":74000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":74000,"duration":{"second":134,"nanosecond":310000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":15000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":15000,"duration":{"second":134,"nanosecond":310000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":44000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":44000,"duration":{"second":134,"nanosecond":310000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":45000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":45000,"duration":{"second":134,"nanosecond":310000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":68000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":68000,"duration":{"second":134,"nanosecond":310000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":72,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":72000}}],"watch_group":72000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":72,"duration":{"second":131,"nanosecond":806000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":38,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":38000}}],"watch_group":38000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":38,"duration":{"second":133,"nanosecond":820000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":75000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":75000,"duration":{"second":133,"nanosecond":820000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":12,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":12000}}],"watch_group":12000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":12,"duration":{"second":131,"nanosecond":806000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":35000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":35000,"duration":{"second":133,"nanosecond":820000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":24000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":24000,"duration":{"second":133,"nanosecond":820000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":90000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":90000,"duration":{"second":133,"nanosecond":820000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":71,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":71000}}],"watch_group":71000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":71,"duration":{"second":131,"nanosecond":806000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":41,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":41000}}],"watch_group":41000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":41,"duration":{"second":133,"nanosecond":819000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":42000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":42000,"duration":{"second":133,"nanosecond":819000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":11,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":11000}}],"watch_group":11000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":11,"duration":{"second":133,"nanosecond":819000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":92000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":92000,"duration":{"second":133,"nanosecond":818000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":46000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":46000,"duration":{"second":133,"nanosecond":818000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":67000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":67000,"duration":{"second":133,"nanosecond":818000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":70,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":70000}}],"watch_group":70000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":70,"duration":{"second":131,"nanosecond":806000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":76000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":76000,"duration":{"second":133,"nanosecond":817000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":40,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":40000}}],"watch_group":40000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":40,"duration":{"second":131,"nanosecond":806000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":13000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":13000,"duration":{"second":133,"nanosecond":817000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":10,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":10000}}],"watch_group":10000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":10,"duration":{"second":131,"nanosecond":806000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":88000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":88000,"duration":{"second":133,"nanosecond":817000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":47000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":47000,"duration":{"second":133,"nanosecond":817000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":66000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":66000,"duration":{"second":133,"nanosecond":817000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":77,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":77000}}],"watch_group":77000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":77,"duration":{"second":133,"nanosecond":817000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":43,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":43000}}],"watch_group":43000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":43,"duration":{"second":133,"nanosecond":816000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":9,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":9000}}],"watch_group":9000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":9,"duration":{"second":133,"nanosecond":816000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":99000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":99000,"duration":{"second":133,"nanosecond":816000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":26000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":26000,"duration":{"second":133,"nanosecond":816000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":70000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":70000,"duration":{"second":133,"nanosecond":815000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":76,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":76000}}],"watch_group":76000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":76,"duration":{"second":133,"nanosecond":319000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":42,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":42000}}],"watch_group":42000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":42,"duration":{"second":133,"nanosecond":318000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":8,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":8000}}],"watch_group":8000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":8,"duration":{"second":131,"nanosecond":806000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":37000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":37000,"duration":{"second":133,"nanosecond":318000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":49000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":49000,"duration":{"second":133,"nanosecond":318000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":71000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":71000,"duration":{"second":133,"nanosecond":318000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":48000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":48000,"duration":{"second":133,"nanosecond":317000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":75,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":75000}}],"watch_group":75000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":75,"duration":{"second":133,"nanosecond":313000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":45,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":45000}}],"watch_group":45000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":45,"duration":{"second":133,"nanosecond":313000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":7,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":7000}}],"watch_group":7000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":7,"duration":{"second":133,"nanosecond":313000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":39000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":39000,"duration":{"second":133,"nanosecond":313000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":73000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":73000,"duration":{"second":133,"nanosecond":313000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":69000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":69000,"duration":{"second":133,"nanosecond":313000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":17000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":17000,"duration":{"second":133,"nanosecond":313000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":28000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":28000,"duration":{"second":133,"nanosecond":313000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":74,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":74000}}],"watch_group":74000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":74,"duration":{"second":133,"nanosecond":313000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":44,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":44000}}],"watch_group":44000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":44,"duration":{"second":133,"nanosecond":313000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":6,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":6000}}],"watch_group":6000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":6,"duration":{"second":131,"nanosecond":806000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":40000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":40000,"duration":{"second":133,"nanosecond":313000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":81,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":81000}}],"watch_group":81000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":81,"duration":{"second":133,"nanosecond":313000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":47,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":47000}}],"watch_group":47000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":47,"duration":{"second":133,"nanosecond":313000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":21,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":21000}}],"watch_group":21000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":21,"duration":{"second":131,"nanosecond":806000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":8000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":8000,"duration":{"second":133,"nanosecond":313000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":19000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":19000,"duration":{"second":133,"nanosecond":312000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":96000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":96000,"duration":{"second":133,"nanosecond":312000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":80,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":80000}}],"watch_group":80000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":80,"duration":{"second":133,"nanosecond":312000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":46,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":46000}}],"watch_group":46000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":46,"duration":{"second":133,"nanosecond":312000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":20,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":20000}}],"watch_group":20000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":20,"duration":{"second":133,"nanosecond":312000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":52000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":52000,"duration":{"second":133,"nanosecond":312000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":6000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":6000,"duration":{"second":133,"nanosecond":312000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":79,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":79000}}],"watch_group":79000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":79,"duration":{"second":133,"nanosecond":311000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":49,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":49000}}],"watch_group":49000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":49,"duration":{"second":132,"nanosecond":819000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":19,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":19000}}],"watch_group":19000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":19,"duration":{"second":132,"nanosecond":818000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":50000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":50000,"duration":{"second":132,"nanosecond":818000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":72000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":72000,"duration":{"second":132,"nanosecond":818000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":30000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":30000,"duration":{"second":132,"nanosecond":818000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":78,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":78000}}],"watch_group":78000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":78,"duration":{"second":132,"nanosecond":818000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":48,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":48000}}],"watch_group":48000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":48,"duration":{"second":132,"nanosecond":817000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":18,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":18000}}],"watch_group":18000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":18,"duration":{"second":132,"nanosecond":817000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":51000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":51000,"duration":{"second":132,"nanosecond":817000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":85,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":85000}}],"watch_group":85000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":85,"duration":{"second":132,"nanosecond":817000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":55000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":55000,"duration":{"second":132,"nanosecond":817000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":51,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":51000}}],"watch_group":51000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":51,"duration":{"second":132,"nanosecond":318000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":17,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":17000}}],"watch_group":17000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":17,"duration":{"second":132,"nanosecond":318000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":21000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":21000,"duration":{"second":132,"nanosecond":318000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":4000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":4000,"duration":{"second":132,"nanosecond":318000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":84,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":84000}}],"watch_group":84000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":84,"duration":{"second":132,"nanosecond":318000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":50,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":50000}}],"watch_group":50000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":50,"duration":{"second":132,"nanosecond":318000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":16,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":16000}}],"watch_group":16000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":16,"duration":{"second":132,"nanosecond":317000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":10000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":10000,"duration":{"second":132,"nanosecond":317000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":54000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":54000,"duration":{"second":132,"nanosecond":317000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":83,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":83000}}],"watch_group":83000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":83,"duration":{"second":132,"nanosecond":317000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":32000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":32000,"duration":{"second":132,"nanosecond":317000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":53,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":53000}}],"watch_group":53000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":53,"duration":{"second":131,"nanosecond":806000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":15,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":15000}}],"watch_group":15000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":15,"duration":{"second":132,"nanosecond":316000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":2000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":2000,"duration":{"second":132,"nanosecond":316000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":82,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":82000}}],"watch_group":82000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":82,"duration":{"second":132,"nanosecond":316000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":52,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":52000}}],"watch_group":52000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":52,"duration":{"second":132,"nanosecond":316000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":14,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":14000}}],"watch_group":14000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":14,"duration":{"second":132,"nanosecond":316000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":53000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":53000,"duration":{"second":132,"nanosecond":315000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":12000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":12000,"duration":{"second":132,"nanosecond":315000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":23000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":23000,"duration":{"second":132,"nanosecond":314000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":94000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":94000,"duration":{"second":132,"nanosecond":314000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}}],"flow-node-inventory:snapshot-gathering-status-end":{"succeeded":true,"end":"2026-04-08T01:00:41.235Z"}},{"id":"openflow:1","flow-node-inventory:port-number":54934,"flow-node-inventory:table":[{"id":62,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":28,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":2,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":224,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":181,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":147,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":106,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":61,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":27,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":1,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":223,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":182,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":148,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":105,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":60,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":30,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":0,"flow":[{"id":"69","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.69/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":69}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":276000000}},"flags":""},{"id":"60","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.60/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":60}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":276000000}},"flags":""},{"id":"68","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.68/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":68}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":276000000}},"flags":""},{"id":"67","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.67/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":67}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":276000000}},"flags":""},{"id":"66","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.66/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":66}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":276000000}},"flags":""},{"id":"65","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.65/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":65}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":276000000}},"flags":""},{"id":"64","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.64/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":64}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":276000000}},"flags":""},{"id":"63","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.63/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":63}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":276000000}},"flags":""},{"id":"62","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.62/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":62}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":276000000}},"flags":""},{"id":"61","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.61/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":61}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":276000000}},"flags":""},{"id":"100","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.100/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":100}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":276000000}},"flags":""},{"id":"71","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.71/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":71}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":276000000}},"flags":""},{"id":"70","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.70/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":70}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":276000000}},"flags":""},{"id":"79","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.79/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":79}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":276000000}},"flags":""},{"id":"78","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.78/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":78}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":276000000}},"flags":""},{"id":"77","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.77/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":77}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":276000000}},"flags":""},{"id":"76","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.76/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":76}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":276000000}},"flags":""},{"id":"75","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.75/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":75}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":276000000}},"flags":""},{"id":"74","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.74/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":74}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":276000000}},"flags":""},{"id":"73","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.73/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":73}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":276000000}},"flags":""},{"id":"72","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.72/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":72}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":276000000}},"flags":""},{"id":"82","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.82/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":82}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":276000000}},"flags":""},{"id":"81","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.81/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":81}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":276000000}},"flags":""},{"id":"80","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.80/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":80}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":276000000}},"flags":""},{"id":"89","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.89/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":89}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":276000000}},"flags":""},{"id":"88","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.88/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":88}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":276000000}},"flags":""},{"id":"87","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.87/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":87}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":276000000}},"flags":""},{"id":"86","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.86/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":86}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":276000000}},"flags":""},{"id":"85","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.85/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":85}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":276000000}},"flags":""},{"id":"84","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.84/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":84}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":275000000}},"flags":""},{"id":"83","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.83/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":83}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":276000000}},"flags":""},{"id":"19","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.19/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":19}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":276000000}},"flags":""},{"id":"18","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.18/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":18}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":276000000}},"flags":""},{"id":"17","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.17/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":17}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":276000000}},"flags":""},{"id":"16","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.16/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":16}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":276000000}},"flags":""},{"id":"15","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.15/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":15}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":276000000}},"flags":""},{"id":"14","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.14/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":14}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":276000000}},"flags":""},{"id":"2","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.2/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":2}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":276000000}},"flags":""},{"id":"93","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.93/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":93}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":276000000}},"flags":""},{"id":"92","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.92/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":92}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":276000000}},"flags":""},{"id":"91","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.91/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":91}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":276000000}},"flags":""},{"id":"90","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.90/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":90}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":276000000}},"flags":""},{"id":"13","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.13/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":13}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":276000000}},"flags":""},{"id":"12","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.12/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":12}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":276000000}},"flags":""},{"id":"11","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.11/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":11}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":276000000}},"flags":""},{"id":"99","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.99/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":99}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":276000000}},"flags":""},{"id":"10","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.10/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":10}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":276000000}},"flags":""},{"id":"98","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.98/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":98}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":276000000}},"flags":""},{"id":"97","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.97/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":97}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":276000000}},"flags":""},{"id":"96","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.96/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":96}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":276000000}},"flags":""},{"id":"95","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.95/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":95}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":276000000}},"flags":""},{"id":"94","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.94/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":94}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":276000000}},"flags":""},{"id":"29","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.29/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":29}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":276000000}},"flags":""},{"id":"28","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.28/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":28}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":276000000}},"flags":""},{"id":"27","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.27/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":27}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":276000000}},"flags":""},{"id":"26","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.26/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":26}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":276000000}},"flags":""},{"id":"25","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.25/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":25}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":276000000}},"flags":""},{"id":"9","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.9/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":9}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":276000000}},"flags":""},{"id":"8","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.8/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":8}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":276000000}},"flags":""},{"id":"7","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.7/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":7}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":276000000}},"flags":""},{"id":"6","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.6/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":6}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":276000000}},"flags":""},{"id":"5","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.5/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":5}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":276000000}},"flags":""},{"id":"4","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.4/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":4}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":276000000}},"flags":""},{"id":"3","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.3/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":3}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":276000000}},"flags":""},{"id":"24","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.24/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":24}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":276000000}},"flags":""},{"id":"23","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.23/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":23}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":276000000}},"flags":""},{"id":"22","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.22/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":22}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":276000000}},"flags":""},{"id":"21","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.21/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":21}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":276000000}},"flags":""},{"id":"20","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.20/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":20}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":276000000}},"flags":""},{"id":"39","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.39/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":39}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":276000000}},"flags":""},{"id":"38","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.38/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":38}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":276000000}},"flags":""},{"id":"37","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.37/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":37}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":276000000}},"flags":""},{"id":"36","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.36/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":36}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":276000000}},"flags":""},{"id":"35","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.35/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":35}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":276000000}},"flags":""},{"id":"34","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.34/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":34}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":276000000}},"flags":""},{"id":"33","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.33/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":33}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":276000000}},"flags":""},{"id":"32","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.32/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":32}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":276000000}},"flags":""},{"id":"31","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.31/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":31}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":276000000}},"flags":""},{"id":"30","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.30/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":30}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":276000000}},"flags":""},{"id":"49","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.49/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":49}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":276000000}},"flags":""},{"id":"48","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.48/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":48}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":275000000}},"flags":""},{"id":"47","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.47/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":47}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":275000000}},"flags":""},{"id":"#UF$TABLE*0-1","table_id":0,"priority":0,"cookie_mask":"0","idle-timeout":0,"cookie":"10","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"output-action":{"max-length":65535,"output-node-connector":"CONTROLLER"}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"34","byte-count":"2770","duration":{"second":131,"nanosecond":166000000}},"flags":"SEND_FLOW_REM"},{"id":"46","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.46/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":46}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":275000000}},"flags":""},{"id":"45","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.45/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":45}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":275000000}},"flags":""},{"id":"44","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.44/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":44}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":275000000}},"flags":""},{"id":"43","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.43/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":43}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":275000000}},"flags":""},{"id":"42","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.42/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":42}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":275000000}},"flags":""},{"id":"41","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.41/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":41}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":275000000}},"flags":""},{"id":"40","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.40/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":40}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":275000000}},"flags":""},{"id":"59","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.59/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":59}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":275000000}},"flags":""},{"id":"58","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.58/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":58}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":275000000}},"flags":""},{"id":"57","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.57/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":57}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":275000000}},"flags":""},{"id":"56","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.56/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":56}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":275000000}},"flags":""},{"id":"55","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.55/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":55}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":275000000}},"flags":""},{"id":"54","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.54/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":54}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":275000000}},"flags":""},{"id":"53","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.53/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":53}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":275000000}},"flags":""},{"id":"52","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.52/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":52}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":275000000}},"flags":""},{"id":"51","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.51/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":51}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":275000000}},"flags":""},{"id":"50","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.50/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":50}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":275000000}},"flags":""}],"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"51","active-flows":100,"packets-matched":"44"}},{"id":226,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":179,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":149,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":104,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":59,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":29,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":225,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":180,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":150,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":103,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":66,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":32,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":220,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":185,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":151,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":102,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":65,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":31,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":253,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":219,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":186,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":152,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":101,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":64,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":34,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":252,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":222,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":183,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":153,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":100,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":63,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":33,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":251,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":221,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":184,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":154,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":99,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":54,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":20,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":250,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":216,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":189,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":155,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":129,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":114,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":53,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":19,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":249,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":215,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":190,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":156,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":130,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":113,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":52,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":22,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":248,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":218,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":187,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":157,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":112,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":51,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":21,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":247,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":217,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":188,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":158,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":128,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":111,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":58,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":24,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":246,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":212,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":193,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":159,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":110,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":57,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":23,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":245,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":211,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":194,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":160,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":109,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":56,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":26,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":244,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":214,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":191,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":161,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":108,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":55,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":25,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":243,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":213,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":192,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":162,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":107,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":77,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":43,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":17,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":239,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":198,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":164,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":138,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":119,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":89,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":78,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":44,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":18,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":240,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":197,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":163,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":137,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":120,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":90,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":75,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":45,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":15,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":241,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":196,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":166,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":136,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":121,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":87,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":76,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":46,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":16,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":242,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":195,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":165,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":135,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":122,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":88,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":81,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":47,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":13,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":235,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":202,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":168,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":134,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":115,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":85,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":82,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":48,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":14,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":236,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":201,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":167,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":133,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":116,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":86,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":79,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":49,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":11,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":237,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":200,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":170,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":132,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":117,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":83,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":80,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":50,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":12,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":238,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":199,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":169,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":131,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":118,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":84,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":69,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":35,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":9,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":231,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":206,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":172,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":146,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":127,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":97,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":70,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":36,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":10,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":232,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":205,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":171,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":145,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":98,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":67,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":37,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":7,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":233,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":204,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":174,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":144,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":95,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":68,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":38,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":8,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":234,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":203,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":173,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":143,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":96,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":73,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":39,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":5,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":227,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":210,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":176,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":142,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":123,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":93,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":74,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":40,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":6,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":228,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":209,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":175,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":141,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":124,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":94,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":71,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":41,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":3,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":229,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":208,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":178,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":140,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":125,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":91,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":72,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":42,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":4,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":230,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":207,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":177,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":139,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":126,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":92,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}}],"opendaylight-group-statistics:group-features":{"max-groups":[4294967040],"group-types-supported":["opendaylight-group-types:group-all","opendaylight-group-types:group-ff","opendaylight-group-types:group-select","opendaylight-group-types:group-indirect"],"group-capabilities-supported":["opendaylight-group-types:chaining","opendaylight-group-types:select-weight","opendaylight-group-types:select-liveness"],"actions":[67076097]},"flow-node-inventory:manufacturer":"Nicira, Inc.","flow-node-inventory:description":"s1","flow-node-inventory:hardware":"Open vSwitch","flow-node-inventory:switch-features":{"max_tables":254,"capabilities":["flow-node-inventory:flow-feature-capability-table-stats","flow-node-inventory:flow-feature-capability-group-stats","flow-node-inventory:flow-feature-capability-queue-stats","flow-node-inventory:flow-feature-capability-flow-stats","flow-node-inventory:flow-feature-capability-port-stats"],"max_buffers":0},"flow-node-inventory:snapshot-gathering-status-start":{"begin":"2026-04-08T01:00:41.177Z"},"flow-node-inventory:software":"2.17.11","node-connector":[{"id":"openflow:1:1","flow-node-inventory:port-number":1,"flow-node-inventory:hardware-address":"92:f4:e8:ea:c6:ad","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s1-eth1","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"45","received":"10"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":136,"nanosecond":525000000},"bytes":{"transmitted":"3795","received":"796"},"receive-crc-error":"0"}},{"id":"openflow:1:LOCAL","flow-node-inventory:port-number":4294967294,"flow-node-inventory:hardware-address":"e6:45:d0:5b:c7:49","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s1","flow-node-inventory:current-feature":"","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":0,"flow-node-inventory:state":{"live":false,"blocked":false,"link-down":true},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"PORT-DOWN","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"0","received":"0"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":136,"nanosecond":521000000},"bytes":{"transmitted":"0","received":"0"},"receive-crc-error":"0"}},{"id":"openflow:1:2","flow-node-inventory:port-number":2,"flow-node-inventory:hardware-address":"42:46:a8:4b:8b:86","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s1-eth2","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"39","received":"43"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":136,"nanosecond":525000000},"bytes":{"transmitted":"3267","received":"3619"},"receive-crc-error":"0"}}],"flow-node-inventory:ip-address":"10.30.170.192","flow-node-inventory:serial-number":"None","flow-node-inventory:group":[{"group-id":56,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":56000}}],"watch_group":56000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":56,"duration":{"second":132,"nanosecond":449000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":22,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":22000}}],"watch_group":22000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":22,"duration":{"second":132,"nanosecond":449000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":99,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":99000}}],"watch_group":99000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":99,"duration":{"second":132,"nanosecond":449000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":34000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":34000,"duration":{"second":135,"nanosecond":142000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":89000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":89000,"duration":{"second":135,"nanosecond":142000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":60000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":60000,"duration":{"second":135,"nanosecond":142000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":91000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":91000,"duration":{"second":135,"nanosecond":142000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":57,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":57000}}],"watch_group":57000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":57,"duration":{"second":132,"nanosecond":449000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":23,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":23000}}],"watch_group":23000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":23,"duration":{"second":131,"nanosecond":949000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":14000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":14000,"duration":{"second":135,"nanosecond":142000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":98,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":98000}}],"watch_group":98000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":98,"duration":{"second":131,"nanosecond":949000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":56000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":56000,"duration":{"second":135,"nanosecond":142000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":85000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":85000,"duration":{"second":135,"nanosecond":142000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":54,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":54000}}],"watch_group":54000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":54,"duration":{"second":131,"nanosecond":949000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":24,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":24000}}],"watch_group":24000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":24,"duration":{"second":131,"nanosecond":949000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":36000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":36000,"duration":{"second":135,"nanosecond":142000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":87000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":87000,"duration":{"second":135,"nanosecond":142000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":59000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":59000,"duration":{"second":135,"nanosecond":142000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":25000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":25000,"duration":{"second":135,"nanosecond":142000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":43000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":43000,"duration":{"second":135,"nanosecond":142000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":55,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":55000}}],"watch_group":55000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":55,"duration":{"second":131,"nanosecond":949000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":25,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":25000}}],"watch_group":25000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":25,"duration":{"second":134,"nanosecond":956000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":100,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":100000}}],"watch_group":100000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":100,"duration":{"second":131,"nanosecond":949000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":58000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":58000,"duration":{"second":134,"nanosecond":953000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":86000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":86000,"duration":{"second":134,"nanosecond":953000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":60,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":60000}}],"watch_group":60000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":60,"duration":{"second":134,"nanosecond":953000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":26,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":26000}}],"watch_group":26000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":26,"duration":{"second":131,"nanosecond":949000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":41000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":41000,"duration":{"second":134,"nanosecond":953000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":95,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":95000}}],"watch_group":95000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":95,"duration":{"second":131,"nanosecond":949000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":82000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":82000,"duration":{"second":134,"nanosecond":953000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":61,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":61000}}],"watch_group":61000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":61,"duration":{"second":131,"nanosecond":949000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":27,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":27000}}],"watch_group":27000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":27,"duration":{"second":131,"nanosecond":949000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":94,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":94000}}],"watch_group":94000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":94,"duration":{"second":131,"nanosecond":949000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":98000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":98000,"duration":{"second":134,"nanosecond":953000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":27000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":27000,"duration":{"second":134,"nanosecond":953000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":57000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":57000,"duration":{"second":134,"nanosecond":953000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":16000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":16000,"duration":{"second":134,"nanosecond":953000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":83000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":83000,"duration":{"second":134,"nanosecond":953000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":58,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":58000}}],"watch_group":58000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":58,"duration":{"second":134,"nanosecond":450000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":28,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":28000}}],"watch_group":28000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":28,"duration":{"second":131,"nanosecond":949000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":97,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":97000}}],"watch_group":97000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":97,"duration":{"second":131,"nanosecond":949000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":100000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":100000,"duration":{"second":134,"nanosecond":450000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":59,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":59000}}],"watch_group":59000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":59,"duration":{"second":134,"nanosecond":450000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":38000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":38000,"duration":{"second":134,"nanosecond":450000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":29,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":29000}}],"watch_group":29000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":29,"duration":{"second":131,"nanosecond":949000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":96,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":96000}}],"watch_group":96000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":96,"duration":{"second":131,"nanosecond":949000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":84000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":84000,"duration":{"second":134,"nanosecond":450000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":64,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":64000}}],"watch_group":64000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":64,"duration":{"second":131,"nanosecond":949000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":30,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":30000}}],"watch_group":30000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":30,"duration":{"second":131,"nanosecond":949000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":4,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":4000}}],"watch_group":4000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":4,"duration":{"second":131,"nanosecond":949000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":91,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":91000}}],"watch_group":91000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":91,"duration":{"second":134,"nanosecond":450000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":7000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":7000,"duration":{"second":134,"nanosecond":450000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":29000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":29000,"duration":{"second":134,"nanosecond":450000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":65,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":65000}}],"watch_group":65000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":65,"duration":{"second":131,"nanosecond":949000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":31,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":31000}}],"watch_group":31000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":31,"duration":{"second":131,"nanosecond":949000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":5,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":5000}}],"watch_group":5000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":5,"duration":{"second":131,"nanosecond":949000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":90,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":90000}}],"watch_group":90000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":90,"duration":{"second":131,"nanosecond":949000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":18000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":18000,"duration":{"second":134,"nanosecond":450000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":62,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":62000}}],"watch_group":62000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":62,"duration":{"second":131,"nanosecond":949000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":65000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":65000,"duration":{"second":134,"nanosecond":450000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":32,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":32000}}],"watch_group":32000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":32,"duration":{"second":131,"nanosecond":949000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":2,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":2000}}],"watch_group":2000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":2,"duration":{"second":131,"nanosecond":949000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":93,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":93000}}],"watch_group":93000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":93,"duration":{"second":131,"nanosecond":949000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":64000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":64000,"duration":{"second":134,"nanosecond":450000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":63,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":63000}}],"watch_group":63000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":63,"duration":{"second":131,"nanosecond":949000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":33,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":33000}}],"watch_group":33000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":33,"duration":{"second":131,"nanosecond":949000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":3,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":3000}}],"watch_group":3000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":3,"duration":{"second":131,"nanosecond":944000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":80000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":80000,"duration":{"second":134,"nanosecond":450000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":9000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":9000,"duration":{"second":134,"nanosecond":450000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":92,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":92000}}],"watch_group":92000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":92,"duration":{"second":131,"nanosecond":944000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":5000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":5000,"duration":{"second":134,"nanosecond":450000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":20000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":20000,"duration":{"second":134,"nanosecond":450000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":81000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":81000,"duration":{"second":134,"nanosecond":450000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":97000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":97000,"duration":{"second":134,"nanosecond":450000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":31000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":31000,"duration":{"second":134,"nanosecond":450000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":68,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":68000}}],"watch_group":68000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":68,"duration":{"second":131,"nanosecond":944000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":11000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":11000,"duration":{"second":134,"nanosecond":450000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":34,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":34000}}],"watch_group":34000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":34,"duration":{"second":134,"nanosecond":450000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":78000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":78000,"duration":{"second":134,"nanosecond":450000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":87,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":87000}}],"watch_group":87000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":87,"duration":{"second":134,"nanosecond":450000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":93000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":93000,"duration":{"second":134,"nanosecond":450000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":63000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":63000,"duration":{"second":134,"nanosecond":450000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":69,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":69000}}],"watch_group":69000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":69,"duration":{"second":131,"nanosecond":944000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":35,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":35000}}],"watch_group":35000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":35,"duration":{"second":131,"nanosecond":944000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":33000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":33000,"duration":{"second":134,"nanosecond":450000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":79000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":79000,"duration":{"second":134,"nanosecond":448000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":86,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":86000}}],"watch_group":86000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":86,"duration":{"second":134,"nanosecond":448000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":62000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":62000,"duration":{"second":134,"nanosecond":448000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":66,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":66000}}],"watch_group":66000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":66,"duration":{"second":131,"nanosecond":944000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":77000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":77000,"duration":{"second":134,"nanosecond":448000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":36,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":36000}}],"watch_group":36000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":36,"duration":{"second":134,"nanosecond":448000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":89,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":89000}}],"watch_group":89000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":89,"duration":{"second":134,"nanosecond":447000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":22000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":22000,"duration":{"second":134,"nanosecond":447000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":95000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":95000,"duration":{"second":134,"nanosecond":447000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":67,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":67000}}],"watch_group":67000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":67,"duration":{"second":131,"nanosecond":944000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":37,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":37000}}],"watch_group":37000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":37,"duration":{"second":131,"nanosecond":944000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":88,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":88000}}],"watch_group":88000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":88,"duration":{"second":131,"nanosecond":944000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":61000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":61000,"duration":{"second":134,"nanosecond":447000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":3000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":3000,"duration":{"second":134,"nanosecond":446000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":73,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":73000}}],"watch_group":73000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":73,"duration":{"second":131,"nanosecond":944000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":39,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":39000}}],"watch_group":39000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":39,"duration":{"second":131,"nanosecond":944000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":13,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":13000}}],"watch_group":13000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":13,"duration":{"second":131,"nanosecond":944000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":74000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":74000,"duration":{"second":134,"nanosecond":446000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":15000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":15000,"duration":{"second":134,"nanosecond":446000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":44000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":44000,"duration":{"second":134,"nanosecond":446000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":45000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":45000,"duration":{"second":134,"nanosecond":446000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":68000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":68000,"duration":{"second":134,"nanosecond":446000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":72,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":72000}}],"watch_group":72000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":72,"duration":{"second":131,"nanosecond":944000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":38,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":38000}}],"watch_group":38000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":38,"duration":{"second":133,"nanosecond":958000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":75000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":75000,"duration":{"second":133,"nanosecond":958000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":12,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":12000}}],"watch_group":12000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":12,"duration":{"second":131,"nanosecond":944000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":35000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":35000,"duration":{"second":133,"nanosecond":958000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":24000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":24000,"duration":{"second":133,"nanosecond":957000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":90000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":90000,"duration":{"second":133,"nanosecond":957000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":71,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":71000}}],"watch_group":71000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":71,"duration":{"second":131,"nanosecond":944000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":41,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":41000}}],"watch_group":41000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":41,"duration":{"second":133,"nanosecond":957000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":42000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":42000,"duration":{"second":133,"nanosecond":957000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":11,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":11000}}],"watch_group":11000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":11,"duration":{"second":133,"nanosecond":956000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":92000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":92000,"duration":{"second":133,"nanosecond":956000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":46000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":46000,"duration":{"second":133,"nanosecond":956000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":67000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":67000,"duration":{"second":133,"nanosecond":956000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":70,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":70000}}],"watch_group":70000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":70,"duration":{"second":131,"nanosecond":944000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":76000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":76000,"duration":{"second":133,"nanosecond":955000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":40,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":40000}}],"watch_group":40000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":40,"duration":{"second":131,"nanosecond":944000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":13000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":13000,"duration":{"second":133,"nanosecond":952000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":10,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":10000}}],"watch_group":10000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":10,"duration":{"second":131,"nanosecond":944000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":88000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":88000,"duration":{"second":133,"nanosecond":952000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":47000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":47000,"duration":{"second":133,"nanosecond":952000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":66000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":66000,"duration":{"second":133,"nanosecond":951000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":77,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":77000}}],"watch_group":77000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":77,"duration":{"second":133,"nanosecond":951000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":43,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":43000}}],"watch_group":43000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":43,"duration":{"second":133,"nanosecond":951000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":9,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":9000}}],"watch_group":9000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":9,"duration":{"second":133,"nanosecond":951000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":99000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":99000,"duration":{"second":133,"nanosecond":951000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":26000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":26000,"duration":{"second":133,"nanosecond":951000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":70000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":70000,"duration":{"second":133,"nanosecond":951000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":76,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":76000}}],"watch_group":76000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":76,"duration":{"second":133,"nanosecond":457000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":42,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":42000}}],"watch_group":42000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":42,"duration":{"second":133,"nanosecond":455000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":8,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":8000}}],"watch_group":8000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":8,"duration":{"second":131,"nanosecond":944000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":37000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":37000,"duration":{"second":133,"nanosecond":455000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":49000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":49000,"duration":{"second":133,"nanosecond":455000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":71000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":71000,"duration":{"second":133,"nanosecond":455000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":48000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":48000,"duration":{"second":133,"nanosecond":455000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":75,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":75000}}],"watch_group":75000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":75,"duration":{"second":133,"nanosecond":455000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":45,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":45000}}],"watch_group":45000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":45,"duration":{"second":133,"nanosecond":452000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":7,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":7000}}],"watch_group":7000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":7,"duration":{"second":133,"nanosecond":452000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":39000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":39000,"duration":{"second":133,"nanosecond":452000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":73000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":73000,"duration":{"second":133,"nanosecond":451000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":69000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":69000,"duration":{"second":133,"nanosecond":451000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":17000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":17000,"duration":{"second":133,"nanosecond":451000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":28000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":28000,"duration":{"second":133,"nanosecond":451000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":74,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":74000}}],"watch_group":74000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":74,"duration":{"second":133,"nanosecond":451000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":44,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":44000}}],"watch_group":44000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":44,"duration":{"second":133,"nanosecond":451000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":6,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":6000}}],"watch_group":6000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":6,"duration":{"second":131,"nanosecond":944000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":40000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":40000,"duration":{"second":133,"nanosecond":451000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":81,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":81000}}],"watch_group":81000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":81,"duration":{"second":133,"nanosecond":451000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":47,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":47000}}],"watch_group":47000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":47,"duration":{"second":133,"nanosecond":451000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":21,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":21000}}],"watch_group":21000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":21,"duration":{"second":131,"nanosecond":944000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":8000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":8000,"duration":{"second":133,"nanosecond":451000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":19000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":19000,"duration":{"second":133,"nanosecond":451000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":96000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":96000,"duration":{"second":133,"nanosecond":451000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":80,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":80000}}],"watch_group":80000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":80,"duration":{"second":133,"nanosecond":449000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":46,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":46000}}],"watch_group":46000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":46,"duration":{"second":133,"nanosecond":449000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":20,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":20000}}],"watch_group":20000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":20,"duration":{"second":133,"nanosecond":449000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":52000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":52000,"duration":{"second":133,"nanosecond":449000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":6000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":6000,"duration":{"second":133,"nanosecond":449000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":79,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":79000}}],"watch_group":79000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":79,"duration":{"second":133,"nanosecond":449000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":49,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":49000}}],"watch_group":49000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":49,"duration":{"second":132,"nanosecond":956000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":19,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":19000}}],"watch_group":19000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":19,"duration":{"second":132,"nanosecond":956000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":50000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":50000,"duration":{"second":132,"nanosecond":956000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":72000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":72000,"duration":{"second":132,"nanosecond":956000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":30000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":30000,"duration":{"second":132,"nanosecond":955000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":78,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":78000}}],"watch_group":78000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":78,"duration":{"second":132,"nanosecond":955000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":48,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":48000}}],"watch_group":48000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":48,"duration":{"second":132,"nanosecond":954000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":18,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":18000}}],"watch_group":18000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":18,"duration":{"second":132,"nanosecond":954000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":51000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":51000,"duration":{"second":132,"nanosecond":954000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":85,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":85000}}],"watch_group":85000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":85,"duration":{"second":132,"nanosecond":954000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":55000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":55000,"duration":{"second":132,"nanosecond":953000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":51,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":51000}}],"watch_group":51000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":51,"duration":{"second":132,"nanosecond":449000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":17,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":17000}}],"watch_group":17000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":17,"duration":{"second":132,"nanosecond":449000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":21000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":21000,"duration":{"second":132,"nanosecond":449000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":4000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":4000,"duration":{"second":132,"nanosecond":449000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":84,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":84000}}],"watch_group":84000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":84,"duration":{"second":132,"nanosecond":449000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":50,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":50000}}],"watch_group":50000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":50,"duration":{"second":132,"nanosecond":449000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":16,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":16000}}],"watch_group":16000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":16,"duration":{"second":132,"nanosecond":449000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":10000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":10000,"duration":{"second":132,"nanosecond":449000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":54000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":54000,"duration":{"second":132,"nanosecond":449000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":83,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":83000}}],"watch_group":83000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":83,"duration":{"second":132,"nanosecond":449000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":32000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":32000,"duration":{"second":132,"nanosecond":449000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":53,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":53000}}],"watch_group":53000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":53,"duration":{"second":131,"nanosecond":944000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":15,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":15000}}],"watch_group":15000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":15,"duration":{"second":132,"nanosecond":449000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":2000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":2000,"duration":{"second":132,"nanosecond":449000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":82,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":82000}}],"watch_group":82000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":82,"duration":{"second":132,"nanosecond":449000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":52,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":52000}}],"watch_group":52000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":52,"duration":{"second":132,"nanosecond":449000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":14,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":14000}}],"watch_group":14000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":14,"duration":{"second":132,"nanosecond":449000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":53000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":53000,"duration":{"second":132,"nanosecond":449000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":12000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":12000,"duration":{"second":132,"nanosecond":449000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":23000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":23000,"duration":{"second":132,"nanosecond":449000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":94000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":94000,"duration":{"second":132,"nanosecond":449000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}}],"flow-node-inventory:snapshot-gathering-status-end":{"succeeded":true,"end":"2026-04-08T01:00:41.236Z"}},{"id":"openflow:2","flow-node-inventory:port-number":54944,"flow-node-inventory:table":[{"id":62,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":28,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":2,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":224,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":181,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":147,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":106,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":61,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":27,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":1,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":223,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":182,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":148,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":105,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":60,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":30,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":0,"flow":[{"id":"69","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.69/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":69}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":288000000}},"flags":""},{"id":"60","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.60/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":60}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":288000000}},"flags":""},{"id":"68","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.68/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":68}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":288000000}},"flags":""},{"id":"67","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.67/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":67}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":288000000}},"flags":""},{"id":"66","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.66/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":66}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":288000000}},"flags":""},{"id":"65","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.65/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":65}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":288000000}},"flags":""},{"id":"64","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.64/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":64}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":288000000}},"flags":""},{"id":"63","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.63/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":63}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":288000000}},"flags":""},{"id":"62","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.62/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":62}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":288000000}},"flags":""},{"id":"61","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.61/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":61}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":288000000}},"flags":""},{"id":"100","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.100/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":100}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":288000000}},"flags":""},{"id":"71","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.71/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":71}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":288000000}},"flags":""},{"id":"70","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.70/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":70}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":288000000}},"flags":""},{"id":"79","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.79/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":79}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":288000000}},"flags":""},{"id":"78","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.78/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":78}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":288000000}},"flags":""},{"id":"77","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.77/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":77}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":288000000}},"flags":""},{"id":"76","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.76/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":76}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":288000000}},"flags":""},{"id":"75","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.75/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":75}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":288000000}},"flags":""},{"id":"74","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.74/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":74}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":288000000}},"flags":""},{"id":"73","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.73/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":73}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":288000000}},"flags":""},{"id":"72","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.72/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":72}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":288000000}},"flags":""},{"id":"82","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.82/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":82}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":288000000}},"flags":""},{"id":"81","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.81/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":81}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":288000000}},"flags":""},{"id":"80","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.80/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":80}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":288000000}},"flags":""},{"id":"89","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.89/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":89}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":288000000}},"flags":""},{"id":"88","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.88/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":88}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":288000000}},"flags":""},{"id":"87","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.87/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":87}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":288000000}},"flags":""},{"id":"86","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.86/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":86}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":288000000}},"flags":""},{"id":"85","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.85/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":85}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":288000000}},"flags":""},{"id":"84","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.84/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":84}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":288000000}},"flags":""},{"id":"83","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.83/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":83}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":288000000}},"flags":""},{"id":"19","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.19/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":19}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":288000000}},"flags":""},{"id":"18","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.18/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":18}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":288000000}},"flags":""},{"id":"17","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.17/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":17}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":288000000}},"flags":""},{"id":"16","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.16/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":16}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":288000000}},"flags":""},{"id":"15","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.15/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":15}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":288000000}},"flags":""},{"id":"14","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.14/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":14}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":288000000}},"flags":""},{"id":"2","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.2/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":2}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":288000000}},"flags":""},{"id":"93","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.93/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":93}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":287000000}},"flags":""},{"id":"92","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.92/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":92}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":287000000}},"flags":""},{"id":"91","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.91/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":91}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":287000000}},"flags":""},{"id":"90","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.90/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":90}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":287000000}},"flags":""},{"id":"13","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.13/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":13}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":287000000}},"flags":""},{"id":"12","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.12/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":12}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":287000000}},"flags":""},{"id":"11","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.11/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":11}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":287000000}},"flags":""},{"id":"99","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.99/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":99}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":287000000}},"flags":""},{"id":"10","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.10/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":10}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":287000000}},"flags":""},{"id":"98","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.98/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":98}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":287000000}},"flags":""},{"id":"97","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.97/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":97}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":287000000}},"flags":""},{"id":"96","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.96/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":96}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":287000000}},"flags":""},{"id":"95","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.95/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":95}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":287000000}},"flags":""},{"id":"94","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.94/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":94}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":287000000}},"flags":""},{"id":"29","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.29/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":29}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":287000000}},"flags":""},{"id":"28","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.28/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":28}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":287000000}},"flags":""},{"id":"27","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.27/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":27}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":287000000}},"flags":""},{"id":"26","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.26/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":26}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":287000000}},"flags":""},{"id":"25","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.25/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":25}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":287000000}},"flags":""},{"id":"9","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.9/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":9}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":287000000}},"flags":""},{"id":"8","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.8/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":8}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":287000000}},"flags":""},{"id":"7","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.7/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":7}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":287000000}},"flags":""},{"id":"6","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.6/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":6}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":287000000}},"flags":""},{"id":"5","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.5/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":5}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":287000000}},"flags":""},{"id":"4","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.4/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":4}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":287000000}},"flags":""},{"id":"3","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.3/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":3}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":287000000}},"flags":""},{"id":"24","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.24/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":24}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":287000000}},"flags":""},{"id":"23","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.23/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":23}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":287000000}},"flags":""},{"id":"22","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.22/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":22}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":287000000}},"flags":""},{"id":"21","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.21/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":21}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":287000000}},"flags":""},{"id":"20","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.20/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":20}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":287000000}},"flags":""},{"id":"39","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.39/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":39}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":287000000}},"flags":""},{"id":"38","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.38/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":38}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":287000000}},"flags":""},{"id":"37","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.37/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":37}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":287000000}},"flags":""},{"id":"36","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.36/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":36}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":287000000}},"flags":""},{"id":"35","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.35/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":35}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":287000000}},"flags":""},{"id":"34","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.34/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":34}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":287000000}},"flags":""},{"id":"33","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.33/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":33}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":287000000}},"flags":""},{"id":"32","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.32/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":32}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":287000000}},"flags":""},{"id":"31","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.31/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":31}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":287000000}},"flags":""},{"id":"30","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.30/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":30}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":287000000}},"flags":""},{"id":"49","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.49/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":49}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":287000000}},"flags":""},{"id":"48","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.48/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":48}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":287000000}},"flags":""},{"id":"47","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.47/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":47}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":287000000}},"flags":""},{"id":"#UF$TABLE*0-2","table_id":0,"priority":0,"cookie_mask":"0","idle-timeout":0,"cookie":"10","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"output-action":{"max-length":65535,"output-node-connector":"CONTROLLER"}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"64","byte-count":"5260","duration":{"second":131,"nanosecond":166000000}},"flags":"SEND_FLOW_REM"},{"id":"46","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.46/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":46}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":287000000}},"flags":""},{"id":"45","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.45/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":45}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":287000000}},"flags":""},{"id":"44","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.44/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":44}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":287000000}},"flags":""},{"id":"43","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.43/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":43}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":287000000}},"flags":""},{"id":"42","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.42/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":42}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":287000000}},"flags":""},{"id":"41","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.41/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":41}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":287000000}},"flags":""},{"id":"40","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.40/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":40}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":287000000}},"flags":""},{"id":"59","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.59/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":59}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":287000000}},"flags":""},{"id":"58","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.58/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":58}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":287000000}},"flags":""},{"id":"57","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.57/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":57}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":287000000}},"flags":""},{"id":"56","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.56/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":56}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":287000000}},"flags":""},{"id":"55","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.55/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":55}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":287000000}},"flags":""},{"id":"54","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.54/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":54}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":287000000}},"flags":""},{"id":"53","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.53/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":53}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":287000000}},"flags":""},{"id":"52","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.52/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":52}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":286000000}},"flags":""},{"id":"51","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.51/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":51}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":286000000}},"flags":""},{"id":"50","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.50/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":50}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":286000000}},"flags":""}],"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"86","active-flows":100,"packets-matched":"74"}},{"id":226,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":179,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":149,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":104,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":59,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":29,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":225,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":180,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":150,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":103,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":66,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":32,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":220,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":185,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":151,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":102,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":65,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":31,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":253,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":219,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":186,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":152,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":101,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":64,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":34,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":252,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":222,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":183,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":153,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":100,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":63,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":33,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":251,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":221,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":184,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":154,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":99,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":54,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":20,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":250,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":216,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":189,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":155,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":129,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":114,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":53,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":19,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":249,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":215,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":190,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":156,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":130,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":113,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":52,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":22,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":248,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":218,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":187,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":157,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":112,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":51,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":21,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":247,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":217,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":188,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":158,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":128,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":111,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":58,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":24,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":246,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":212,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":193,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":159,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":110,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":57,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":23,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":245,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":211,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":194,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":160,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":109,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":56,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":26,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":244,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":214,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":191,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":161,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":108,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":55,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":25,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":243,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":213,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":192,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":162,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":107,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":77,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":43,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":17,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":239,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":198,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":164,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":138,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":119,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":89,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":78,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":44,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":18,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":240,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":197,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":163,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":137,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":120,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":90,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":75,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":45,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":15,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":241,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":196,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":166,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":136,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":121,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":87,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":76,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":46,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":16,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":242,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":195,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":165,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":135,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":122,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":88,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":81,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":47,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":13,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":235,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":202,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":168,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":134,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":115,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":85,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":82,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":48,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":14,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":236,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":201,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":167,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":133,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":116,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":86,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":79,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":49,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":11,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":237,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":200,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":170,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":132,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":117,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":83,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":80,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":50,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":12,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":238,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":199,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":169,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":131,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":118,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":84,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":69,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":35,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":9,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":231,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":206,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":172,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":146,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":127,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":97,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":70,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":36,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":10,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":232,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":205,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":171,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":145,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":98,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":67,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":37,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":7,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":233,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":204,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":174,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":144,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":95,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":68,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":38,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":8,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":234,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":203,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":173,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":143,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":96,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":73,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":39,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":5,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":227,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":210,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":176,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":142,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":123,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":93,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":74,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":40,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":6,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":228,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":209,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":175,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":141,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":124,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":94,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":71,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":41,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":3,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":229,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":208,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":178,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":140,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":125,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":91,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":72,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":42,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":4,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":230,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":207,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":177,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":139,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":126,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":92,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}}],"opendaylight-group-statistics:group-features":{"max-groups":[4294967040],"group-types-supported":["opendaylight-group-types:group-all","opendaylight-group-types:group-ff","opendaylight-group-types:group-select","opendaylight-group-types:group-indirect"],"group-capabilities-supported":["opendaylight-group-types:chaining","opendaylight-group-types:select-weight","opendaylight-group-types:select-liveness"],"actions":[67076097]},"flow-node-inventory:manufacturer":"Nicira, Inc.","flow-node-inventory:description":"s2","flow-node-inventory:hardware":"Open vSwitch","flow-node-inventory:switch-features":{"max_tables":254,"capabilities":["flow-node-inventory:flow-feature-capability-table-stats","flow-node-inventory:flow-feature-capability-group-stats","flow-node-inventory:flow-feature-capability-queue-stats","flow-node-inventory:flow-feature-capability-flow-stats","flow-node-inventory:flow-feature-capability-port-stats"],"max_buffers":0},"flow-node-inventory:snapshot-gathering-status-start":{"begin":"2026-04-08T01:00:41.174Z"},"flow-node-inventory:software":"2.17.11","node-connector":[{"id":"openflow:2:3","flow-node-inventory:port-number":3,"flow-node-inventory:hardware-address":"da:7c:fc:7d:24:d4","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s2-eth3","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"44","received":"39"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":136,"nanosecond":505000000},"bytes":{"transmitted":"3689","received":"3267"},"receive-crc-error":"0"}},{"id":"openflow:2:LOCAL","flow-node-inventory:port-number":4294967294,"flow-node-inventory:hardware-address":"ee:be:cf:9b:06:44","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s2","flow-node-inventory:current-feature":"","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":0,"flow-node-inventory:state":{"live":false,"blocked":false,"link-down":true},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"PORT-DOWN","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"0","received":"0"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":136,"nanosecond":500000000},"bytes":{"transmitted":"0","received":"0"},"receive-crc-error":"0"}},{"id":"openflow:2:2","flow-node-inventory:port-number":2,"flow-node-inventory:hardware-address":"76:f5:91:ad:d8:c6","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s2-eth2","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"43","received":"39"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":136,"nanosecond":505000000},"bytes":{"transmitted":"3619","received":"3267"},"receive-crc-error":"0"}},{"id":"openflow:2:1","flow-node-inventory:port-number":1,"flow-node-inventory:hardware-address":"96:61:91:36:76:0b","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s2-eth1","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"45","received":"11"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":136,"nanosecond":505000000},"bytes":{"transmitted":"3795","received":"866"},"receive-crc-error":"0"}}],"flow-node-inventory:ip-address":"10.30.170.192","flow-node-inventory:serial-number":"None","flow-node-inventory:group":[{"group-id":56,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":56000}}],"watch_group":56000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":56,"duration":{"second":132,"nanosecond":448000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":22,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":22000}}],"watch_group":22000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":22,"duration":{"second":132,"nanosecond":448000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":99,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":99000}}],"watch_group":99000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":99,"duration":{"second":132,"nanosecond":448000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":34000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":34000,"duration":{"second":135,"nanosecond":141000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":89000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":89000,"duration":{"second":135,"nanosecond":141000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":60000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":60000,"duration":{"second":135,"nanosecond":141000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":91000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":91000,"duration":{"second":135,"nanosecond":141000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":57,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":57000}}],"watch_group":57000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":57,"duration":{"second":132,"nanosecond":448000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":23,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":23000}}],"watch_group":23000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":23,"duration":{"second":131,"nanosecond":951000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":14000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":14000,"duration":{"second":135,"nanosecond":141000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":98,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":98000}}],"watch_group":98000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":98,"duration":{"second":131,"nanosecond":951000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":56000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":56000,"duration":{"second":135,"nanosecond":141000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":85000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":85000,"duration":{"second":135,"nanosecond":141000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":54,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":54000}}],"watch_group":54000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":54,"duration":{"second":131,"nanosecond":951000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":24,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":24000}}],"watch_group":24000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":24,"duration":{"second":131,"nanosecond":951000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":36000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":36000,"duration":{"second":135,"nanosecond":141000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":87000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":87000,"duration":{"second":135,"nanosecond":141000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":59000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":59000,"duration":{"second":135,"nanosecond":141000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":25000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":25000,"duration":{"second":135,"nanosecond":141000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":43000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":43000,"duration":{"second":135,"nanosecond":141000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":55,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":55000}}],"watch_group":55000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":55,"duration":{"second":131,"nanosecond":951000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":25,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":25000}}],"watch_group":25000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":25,"duration":{"second":134,"nanosecond":957000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":100,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":100000}}],"watch_group":100000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":100,"duration":{"second":131,"nanosecond":951000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":58000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":58000,"duration":{"second":134,"nanosecond":957000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":86000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":86000,"duration":{"second":134,"nanosecond":957000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":60,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":60000}}],"watch_group":60000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":60,"duration":{"second":134,"nanosecond":956000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":26,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":26000}}],"watch_group":26000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":26,"duration":{"second":131,"nanosecond":951000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":41000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":41000,"duration":{"second":134,"nanosecond":956000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":95,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":95000}}],"watch_group":95000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":95,"duration":{"second":131,"nanosecond":951000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":82000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":82000,"duration":{"second":134,"nanosecond":956000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":61,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":61000}}],"watch_group":61000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":61,"duration":{"second":131,"nanosecond":951000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":27,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":27000}}],"watch_group":27000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":27,"duration":{"second":131,"nanosecond":951000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":94,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":94000}}],"watch_group":94000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":94,"duration":{"second":131,"nanosecond":951000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":98000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":98000,"duration":{"second":134,"nanosecond":956000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":27000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":27000,"duration":{"second":134,"nanosecond":956000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":57000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":57000,"duration":{"second":134,"nanosecond":956000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":16000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":16000,"duration":{"second":134,"nanosecond":956000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":83000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":83000,"duration":{"second":134,"nanosecond":956000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":58,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":58000}}],"watch_group":58000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":58,"duration":{"second":134,"nanosecond":456000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":28,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":28000}}],"watch_group":28000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":28,"duration":{"second":131,"nanosecond":951000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":97,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":97000}}],"watch_group":97000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":97,"duration":{"second":131,"nanosecond":951000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":100000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":100000,"duration":{"second":134,"nanosecond":456000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":59,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":59000}}],"watch_group":59000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":59,"duration":{"second":134,"nanosecond":456000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":38000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":38000,"duration":{"second":134,"nanosecond":456000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":29,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":29000}}],"watch_group":29000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":29,"duration":{"second":131,"nanosecond":951000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":96,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":96000}}],"watch_group":96000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":96,"duration":{"second":131,"nanosecond":951000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":84000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":84000,"duration":{"second":134,"nanosecond":456000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":64,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":64000}}],"watch_group":64000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":64,"duration":{"second":131,"nanosecond":951000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":30,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":30000}}],"watch_group":30000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":30,"duration":{"second":131,"nanosecond":951000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":4,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":4000}}],"watch_group":4000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":4,"duration":{"second":131,"nanosecond":947000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":91,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":91000}}],"watch_group":91000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":91,"duration":{"second":134,"nanosecond":456000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":7000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":7000,"duration":{"second":134,"nanosecond":456000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":29000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":29000,"duration":{"second":134,"nanosecond":455000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":65,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":65000}}],"watch_group":65000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":65,"duration":{"second":131,"nanosecond":947000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":31,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":31000}}],"watch_group":31000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":31,"duration":{"second":131,"nanosecond":947000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":5,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":5000}}],"watch_group":5000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":5,"duration":{"second":131,"nanosecond":947000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":90,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":90000}}],"watch_group":90000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":90,"duration":{"second":131,"nanosecond":947000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":18000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":18000,"duration":{"second":134,"nanosecond":455000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":62,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":62000}}],"watch_group":62000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":62,"duration":{"second":131,"nanosecond":947000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":65000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":65000,"duration":{"second":134,"nanosecond":455000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":32,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":32000}}],"watch_group":32000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":32,"duration":{"second":131,"nanosecond":947000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":2,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":2000}}],"watch_group":2000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":2,"duration":{"second":131,"nanosecond":947000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":93,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":93000}}],"watch_group":93000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":93,"duration":{"second":131,"nanosecond":947000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":64000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":64000,"duration":{"second":134,"nanosecond":454000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":63,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":63000}}],"watch_group":63000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":63,"duration":{"second":131,"nanosecond":947000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":33,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":33000}}],"watch_group":33000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":33,"duration":{"second":131,"nanosecond":947000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":3,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":3000}}],"watch_group":3000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":3,"duration":{"second":131,"nanosecond":947000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":80000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":80000,"duration":{"second":134,"nanosecond":454000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":9000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":9000,"duration":{"second":134,"nanosecond":454000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":92,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":92000}}],"watch_group":92000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":92,"duration":{"second":131,"nanosecond":947000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":5000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":5000,"duration":{"second":134,"nanosecond":450000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":20000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":20000,"duration":{"second":134,"nanosecond":450000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":81000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":81000,"duration":{"second":134,"nanosecond":450000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":97000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":97000,"duration":{"second":134,"nanosecond":450000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":31000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":31000,"duration":{"second":134,"nanosecond":450000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":68,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":68000}}],"watch_group":68000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":68,"duration":{"second":131,"nanosecond":947000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":11000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":11000,"duration":{"second":134,"nanosecond":450000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":34,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":34000}}],"watch_group":34000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":34,"duration":{"second":134,"nanosecond":450000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":78000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":78000,"duration":{"second":134,"nanosecond":450000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":87,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":87000}}],"watch_group":87000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":87,"duration":{"second":134,"nanosecond":450000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":93000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":93000,"duration":{"second":134,"nanosecond":450000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":63000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":63000,"duration":{"second":134,"nanosecond":450000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":69,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":69000}}],"watch_group":69000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":69,"duration":{"second":131,"nanosecond":947000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":35,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":35000}}],"watch_group":35000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":35,"duration":{"second":131,"nanosecond":947000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":33000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":33000,"duration":{"second":134,"nanosecond":450000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":79000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":79000,"duration":{"second":134,"nanosecond":450000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":86,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":86000}}],"watch_group":86000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":86,"duration":{"second":134,"nanosecond":450000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":62000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":62000,"duration":{"second":134,"nanosecond":450000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":66,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":66000}}],"watch_group":66000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":66,"duration":{"second":131,"nanosecond":947000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":77000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":77000,"duration":{"second":134,"nanosecond":450000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":36,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":36000}}],"watch_group":36000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":36,"duration":{"second":134,"nanosecond":450000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":89,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":89000}}],"watch_group":89000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":89,"duration":{"second":134,"nanosecond":450000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":22000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":22000,"duration":{"second":134,"nanosecond":448000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":95000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":95000,"duration":{"second":134,"nanosecond":448000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":67,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":67000}}],"watch_group":67000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":67,"duration":{"second":131,"nanosecond":947000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":37,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":37000}}],"watch_group":37000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":37,"duration":{"second":131,"nanosecond":947000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":88,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":88000}}],"watch_group":88000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":88,"duration":{"second":131,"nanosecond":945000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":61000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":61000,"duration":{"second":134,"nanosecond":446000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":3000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":3000,"duration":{"second":134,"nanosecond":446000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":73,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":73000}}],"watch_group":73000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":73,"duration":{"second":131,"nanosecond":945000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":39,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":39000}}],"watch_group":39000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":39,"duration":{"second":131,"nanosecond":945000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":13,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":13000}}],"watch_group":13000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":13,"duration":{"second":131,"nanosecond":945000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":74000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":74000,"duration":{"second":134,"nanosecond":446000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":15000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":15000,"duration":{"second":134,"nanosecond":446000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":44000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":44000,"duration":{"second":134,"nanosecond":446000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":45000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":45000,"duration":{"second":134,"nanosecond":446000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":68000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":68000,"duration":{"second":134,"nanosecond":446000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":72,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":72000}}],"watch_group":72000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":72,"duration":{"second":131,"nanosecond":945000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":38,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":38000}}],"watch_group":38000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":38,"duration":{"second":133,"nanosecond":950000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":75000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":75000,"duration":{"second":133,"nanosecond":950000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":12,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":12000}}],"watch_group":12000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":12,"duration":{"second":131,"nanosecond":945000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":35000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":35000,"duration":{"second":133,"nanosecond":950000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":24000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":24000,"duration":{"second":133,"nanosecond":950000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":90000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":90000,"duration":{"second":133,"nanosecond":950000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":71,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":71000}}],"watch_group":71000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":71,"duration":{"second":131,"nanosecond":945000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":41,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":41000}}],"watch_group":41000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":41,"duration":{"second":133,"nanosecond":950000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":42000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":42000,"duration":{"second":133,"nanosecond":950000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":11,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":11000}}],"watch_group":11000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":11,"duration":{"second":133,"nanosecond":950000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":92000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":92000,"duration":{"second":133,"nanosecond":950000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":46000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":46000,"duration":{"second":133,"nanosecond":950000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":67000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":67000,"duration":{"second":133,"nanosecond":950000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":70,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":70000}}],"watch_group":70000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":70,"duration":{"second":131,"nanosecond":945000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":76000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":76000,"duration":{"second":133,"nanosecond":950000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":40,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":40000}}],"watch_group":40000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":40,"duration":{"second":131,"nanosecond":945000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":13000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":13000,"duration":{"second":133,"nanosecond":950000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":10,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":10000}}],"watch_group":10000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":10,"duration":{"second":131,"nanosecond":945000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":88000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":88000,"duration":{"second":133,"nanosecond":950000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":47000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":47000,"duration":{"second":133,"nanosecond":950000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":66000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":66000,"duration":{"second":133,"nanosecond":950000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":77,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":77000}}],"watch_group":77000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":77,"duration":{"second":133,"nanosecond":950000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":43,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":43000}}],"watch_group":43000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":43,"duration":{"second":133,"nanosecond":950000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":9,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":9000}}],"watch_group":9000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":9,"duration":{"second":133,"nanosecond":950000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":99000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":99000,"duration":{"second":133,"nanosecond":950000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":26000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":26000,"duration":{"second":133,"nanosecond":950000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":70000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":70000,"duration":{"second":133,"nanosecond":950000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":76,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":76000}}],"watch_group":76000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":76,"duration":{"second":133,"nanosecond":446000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":42,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":42000}}],"watch_group":42000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":42,"duration":{"second":133,"nanosecond":446000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":8,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":8000}}],"watch_group":8000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":8,"duration":{"second":131,"nanosecond":945000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":37000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":37000,"duration":{"second":133,"nanosecond":446000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":49000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":49000,"duration":{"second":133,"nanosecond":446000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":71000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":71000,"duration":{"second":133,"nanosecond":446000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":48000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":48000,"duration":{"second":133,"nanosecond":446000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":75,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":75000}}],"watch_group":75000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":75,"duration":{"second":133,"nanosecond":446000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":45,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":45000}}],"watch_group":45000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":45,"duration":{"second":133,"nanosecond":446000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":7,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":7000}}],"watch_group":7000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":7,"duration":{"second":133,"nanosecond":446000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":39000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":39000,"duration":{"second":133,"nanosecond":446000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":73000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":73000,"duration":{"second":133,"nanosecond":446000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":69000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":69000,"duration":{"second":133,"nanosecond":446000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":17000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":17000,"duration":{"second":133,"nanosecond":446000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":28000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":28000,"duration":{"second":133,"nanosecond":446000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":74,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":74000}}],"watch_group":74000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":74,"duration":{"second":133,"nanosecond":446000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":44,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":44000}}],"watch_group":44000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":44,"duration":{"second":133,"nanosecond":446000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":6,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":6000}}],"watch_group":6000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":6,"duration":{"second":131,"nanosecond":945000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":40000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":40000,"duration":{"second":133,"nanosecond":446000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":81,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":81000}}],"watch_group":81000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":81,"duration":{"second":133,"nanosecond":446000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":47,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":47000}}],"watch_group":47000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":47,"duration":{"second":133,"nanosecond":446000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":21,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":21000}}],"watch_group":21000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":21,"duration":{"second":131,"nanosecond":945000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":8000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":8000,"duration":{"second":133,"nanosecond":446000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":19000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":19000,"duration":{"second":133,"nanosecond":446000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":96000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":96000,"duration":{"second":133,"nanosecond":446000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":80,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":80000}}],"watch_group":80000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":80,"duration":{"second":133,"nanosecond":446000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":46,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":46000}}],"watch_group":46000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":46,"duration":{"second":133,"nanosecond":446000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":20,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":20000}}],"watch_group":20000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":20,"duration":{"second":133,"nanosecond":446000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":52000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":52000,"duration":{"second":133,"nanosecond":446000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":6000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":6000,"duration":{"second":133,"nanosecond":446000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":79,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":79000}}],"watch_group":79000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":79,"duration":{"second":133,"nanosecond":446000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":49,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":49000}}],"watch_group":49000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":49,"duration":{"second":132,"nanosecond":955000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":19,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":19000}}],"watch_group":19000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":19,"duration":{"second":132,"nanosecond":955000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":50000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":50000,"duration":{"second":132,"nanosecond":954000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":72000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":72000,"duration":{"second":132,"nanosecond":954000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":30000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":30000,"duration":{"second":132,"nanosecond":954000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":78,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":78000}}],"watch_group":78000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":78,"duration":{"second":132,"nanosecond":953000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":48,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":48000}}],"watch_group":48000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":48,"duration":{"second":132,"nanosecond":952000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":18,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":18000}}],"watch_group":18000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":18,"duration":{"second":132,"nanosecond":952000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":51000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":51000,"duration":{"second":132,"nanosecond":951000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":85,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":85000}}],"watch_group":85000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":85,"duration":{"second":132,"nanosecond":951000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":55000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":55000,"duration":{"second":132,"nanosecond":951000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":51,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":51000}}],"watch_group":51000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":51,"duration":{"second":132,"nanosecond":454000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":17,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":17000}}],"watch_group":17000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":17,"duration":{"second":132,"nanosecond":454000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":21000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":21000,"duration":{"second":132,"nanosecond":454000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":4000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":4000,"duration":{"second":132,"nanosecond":454000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":84,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":84000}}],"watch_group":84000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":84,"duration":{"second":132,"nanosecond":454000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":50,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":50000}}],"watch_group":50000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":50,"duration":{"second":132,"nanosecond":453000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":16,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":16000}}],"watch_group":16000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":16,"duration":{"second":132,"nanosecond":453000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":10000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":10000,"duration":{"second":132,"nanosecond":453000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":54000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":54000,"duration":{"second":132,"nanosecond":448000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":83,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":83000}}],"watch_group":83000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":83,"duration":{"second":132,"nanosecond":448000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":32000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":32000,"duration":{"second":132,"nanosecond":448000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":53,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":53000}}],"watch_group":53000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":53,"duration":{"second":131,"nanosecond":945000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":15,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":15000}}],"watch_group":15000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":15,"duration":{"second":132,"nanosecond":448000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":2000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":2000,"duration":{"second":132,"nanosecond":448000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":82,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":82000}}],"watch_group":82000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":82,"duration":{"second":132,"nanosecond":448000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":52,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":52000}}],"watch_group":52000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":52,"duration":{"second":132,"nanosecond":448000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":14,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":14000}}],"watch_group":14000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":14,"duration":{"second":132,"nanosecond":448000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":53000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":53000,"duration":{"second":132,"nanosecond":448000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":12000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":12000,"duration":{"second":132,"nanosecond":448000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":23000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":23000,"duration":{"second":132,"nanosecond":448000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":94000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":94000,"duration":{"second":132,"nanosecond":448000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}}],"flow-node-inventory:snapshot-gathering-status-end":{"succeeded":true,"end":"2026-04-08T01:00:41.225Z"}}]}}</msg>
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:00:41.944290" elapsed="0.010400"/>
</kw>
<kw name="Get Count" owner="BuiltIn">
<msg time="2026-04-08T01:00:41.957973" level="INFO">Item found from container 300 times.</msg>
<msg time="2026-04-08T01:00:41.958055" level="INFO">${count} = 300</msg>
<var>${count}</var>
<arg>${resp.text}</arg>
<arg>"priority"</arg>
<doc>Returns and logs how many times ``item`` is found from ``container``.</doc>
<status status="PASS" start="2026-04-08T01:00:41.954888" elapsed="0.003192"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${count}</arg>
<arg>${flows}</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="PASS" start="2026-04-08T01:00:41.958297" elapsed="0.000318"/>
</kw>
<arg>${less_flows}</arg>
<doc>Check number of flows in the inventory.</doc>
<status status="PASS" start="2026-04-08T01:00:41.892245" elapsed="0.066441"/>
</kw>
<arg>30s</arg>
<arg>1s</arg>
<arg>ClusterOpenFlow.Check Number Of Flows On Member</arg>
<arg>${less_flows}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-08T01:00:40.827536" elapsed="1.131201"/>
</kw>
<doc>Check Flows in Operational DS.</doc>
<status status="PASS" start="2026-04-08T01:00:40.497258" elapsed="1.461604"/>
</test>
<test id="s1-s4-t35" name="Check Groups In Operational DS After Owner Disconnected" line="261">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-08T01:00:41.962244" elapsed="0.000209"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-08T01:00:41.961967" elapsed="0.000539"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:00:41.963565" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:00:41.963440" elapsed="0.000174"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:41.963415" elapsed="0.000222"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:00:41.968790" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:00:41.968682" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:41.968663" elapsed="0.000195"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:00:41.969880" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:00:41.969494" elapsed="0.000412"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:00:41.970392" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:00:41.970069" elapsed="0.000349"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T01:00:41.970461" elapsed="0.000035"/>
</return>
<msg time="2026-04-08T01:00:41.970621" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T01:00:41.969097" elapsed="0.001549"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:00:41.976077" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:00:41.975968" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:41.975949" elapsed="0.000194"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:00:41.977330" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:00:41.977220" elapsed="0.000156"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:41.977201" elapsed="0.000196"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:00:41.977845" level="INFO">${karaf_connection_index} = 476</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:00:41.977546" elapsed="0.000326"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:00:41.978311" level="INFO">${current_connection_index} = 495</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:00:41.978035" elapsed="0.000303"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:00:42.014329" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:00:41.978844" elapsed="0.035588"/>
</kw>
<msg time="2026-04-08T01:00:42.014597" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T01:00:42.014644" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:41.978501" elapsed="0.036179"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T01:00:42.073173" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "G "r "o "u "p "s "[C "I "n "[C "O "p "e "r "a "t "i "o "n "a "l "[C "D "S "[C "A "f "t "e "r "[C "O "w "n "e "r "[C "D "i "s "c "o "n "n "e "[78Cc "[A[78Ct
 "e "d "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T01:00:42.015233" elapsed="0.058068"/>
</kw>
<msg time="2026-04-08T01:00:42.073465" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T01:00:42.073511" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "G "r "o "u "p "s...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:42.014858" elapsed="0.058764"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:42.073982" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:42.073714" elapsed="0.000329"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:42.073688" elapsed="0.000381"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:00:42.074558" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "G "r "o "u "p "s "[C "I "n "[C "O "p "e "r "a "t "i "o "n "a "l "[C "D "S "[C "A "f "t "e "r "[C "O "w "n "e "r "[C "D "i "s "c "o "n "n "e "[78Cc "[A[78Ct
 "e "d "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:00:42.074240" elapsed="0.000421"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:42.074980" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:42.074732" elapsed="0.000305"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:42.074714" elapsed="0.000346"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T01:00:42.075095" elapsed="0.000035"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:00:42.077688" elapsed="0.000185"/>
</kw>
<msg time="2026-04-08T01:00:42.077933" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:00:42.076613" elapsed="0.001459"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:42.078370" elapsed="0.000258"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:42.078909" elapsed="0.000075"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:00:42.075972" elapsed="0.003124"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T01:00:42.075416" elapsed="0.003764"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T01:00:41.976897" elapsed="0.102385"/>
</kw>
<msg time="2026-04-08T01:00:42.079373" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:00:42.079416" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "G "r "o "u "p "s...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:41.976317" elapsed="0.103138"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T01:00:42.079638" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-08T01:00:42.079531" elapsed="0.000166"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:42.079513" elapsed="0.000208"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:42.080114" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:42.080461" elapsed="0.000023"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T01:00:42.080531" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T01:00:41.975611" elapsed="0.105025"/>
</kw>
<msg time="2026-04-08T01:00:42.080728" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:00:42.080773" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "G "r "o "u "p "s...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:41.971021" elapsed="0.109790"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:42.081135" elapsed="0.000034"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:42.080885" elapsed="0.000318"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:42.080868" elapsed="0.000360"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T01:00:41.970875" elapsed="0.110376"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:00:42.086650" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:00:42.086542" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:42.086523" elapsed="0.000193"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:00:42.087925" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:00:42.087814" elapsed="0.000157"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:42.087796" elapsed="0.000197"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:00:42.088466" level="INFO">${karaf_connection_index} = 478</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:00:42.088144" elapsed="0.000348"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:00:42.088901" level="INFO">${current_connection_index} = 495</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:00:42.088653" elapsed="0.000274"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:00:42.119973" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:00:42.089451" elapsed="0.030622"/>
</kw>
<msg time="2026-04-08T01:00:42.120255" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T01:00:42.120302" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:42.089089" elapsed="0.031250"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T01:00:42.197614" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "G "r "o "u "p "s "[C "I "n "[C "O "p "e "r "a "t "i "o "n "a "l "[C "D "S "[C "A "f "t "e "r "[C "O "w "n "e "r "[C "D "i "s "c "o "n "n "e "[78Cc "[A[78Ct
 "e "d "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T01:00:42.120860" elapsed="0.076934"/>
</kw>
<msg time="2026-04-08T01:00:42.198043" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T01:00:42.198113" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "G "r "o "u "p "s...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:42.120515" elapsed="0.077680"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:42.198657" elapsed="0.000032"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:42.198318" elapsed="0.000418"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:42.198286" elapsed="0.000484"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:00:42.199473" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "G "r "o "u "p "s "[C "I "n "[C "O "p "e "r "a "t "i "o "n "a "l "[C "D "S "[C "A "f "t "e "r "[C "O "w "n "e "r "[C "D "i "s "c "o "n "n "e "[78Cc "[A[78Ct
 "e "d "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:00:42.198978" elapsed="0.000612"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:42.200006" elapsed="0.000032"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:42.199688" elapsed="0.000405"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:42.199662" elapsed="0.000466"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T01:00:42.200204" elapsed="0.000046"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:00:42.203881" elapsed="0.000191"/>
</kw>
<msg time="2026-04-08T01:00:42.204134" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:00:42.202348" elapsed="0.001941"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:42.204568" elapsed="0.000076"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:42.204905" elapsed="0.000074"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:00:42.201395" elapsed="0.003695"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T01:00:42.200600" elapsed="0.004554"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T01:00:42.087510" elapsed="0.117762"/>
</kw>
<msg time="2026-04-08T01:00:42.205367" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:00:42.205411" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "G "r "o "u "p "s...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:42.086893" elapsed="0.118557"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T01:00:42.205638" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-08T01:00:42.205528" elapsed="0.000169"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:42.205509" elapsed="0.000482"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 2,
close the previous connection. In any case create a new connection
to karaf console for 2, set correct prompt set and login to karaf console.
Store connection index for 2 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:42.206437" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:42.206777" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T01:00:42.206849" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T01:00:42.086109" elapsed="0.120848"/>
</kw>
<msg time="2026-04-08T01:00:42.207052" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:00:42.207095" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "G "r "o "u "p "s...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:42.081519" elapsed="0.125614"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:42.207488" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:42.207231" elapsed="0.000311"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:42.207214" elapsed="0.000351"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T01:00:42.081376" elapsed="0.126212"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:00:42.212963" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:00:42.212852" elapsed="0.000156"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:42.212833" elapsed="0.000197"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:00:42.214246" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:00:42.214115" elapsed="0.000177"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:42.214097" elapsed="0.000216"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:00:42.214763" level="INFO">${karaf_connection_index} = 480</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:00:42.214462" elapsed="0.000327"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:00:42.215268" level="INFO">${current_connection_index} = 495</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:00:42.214951" elapsed="0.000344"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:00:42.247836" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:00:42.215801" elapsed="0.032135"/>
</kw>
<msg time="2026-04-08T01:00:42.248096" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T01:00:42.248142" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:42.215460" elapsed="0.032743"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T01:00:42.332987" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "G "r "o "u "p "s "[C "I "n "[C "O "p "e "r "a "t "i "o "n "a "l "[C "D "S "[C "A "f "t "e "r "[C "O "w "n "e "r "[C "D "i "s "c "o "n "n "e "[78Cc "[A[78Ct
 "e "d "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T01:00:42.248729" elapsed="0.084382"/>
</kw>
<msg time="2026-04-08T01:00:42.333300" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T01:00:42.333347" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "G "r "o "u "p "s...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:42.248380" elapsed="0.085004"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:42.333691" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:42.333463" elapsed="0.000285"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:42.333443" elapsed="0.000328"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:00:42.334233" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "G "r "o "u "p "s "[C "I "n "[C "O "p "e "r "a "t "i "o "n "a "l "[C "D "S "[C "A "f "t "e "r "[C "O "w "n "e "r "[C "D "i "s "c "o "n "n "e "[78Cc "[A[78Ct
 "e "d "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:00:42.333917" elapsed="0.000399"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:42.334605" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:42.334384" elapsed="0.000323"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:42.334366" elapsed="0.000366"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T01:00:42.334765" elapsed="0.000028"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:00:42.337333" elapsed="0.000183"/>
</kw>
<msg time="2026-04-08T01:00:42.337576" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:00:42.336220" elapsed="0.001484"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:42.337976" elapsed="0.000074"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:42.338331" elapsed="0.000073"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:00:42.335590" elapsed="0.002921"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T01:00:42.335033" elapsed="0.003542"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T01:00:42.213785" elapsed="0.124887"/>
</kw>
<msg time="2026-04-08T01:00:42.338763" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:00:42.338807" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "G "r "o "u "p "s...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:42.213218" elapsed="0.125626"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T01:00:42.339028" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-08T01:00:42.338921" elapsed="0.000164"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:42.338902" elapsed="0.000206"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 3,
close the previous connection. In any case create a new connection
to karaf console for 3, set correct prompt set and login to karaf console.
Store connection index for 3 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:42.339691" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:42.340025" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T01:00:42.340097" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T01:00:42.212507" elapsed="0.127712"/>
</kw>
<msg time="2026-04-08T01:00:42.340314" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:00:42.340357" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "G "r "o "u "p "s...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:42.207857" elapsed="0.132537"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:42.340721" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:42.340469" elapsed="0.000305"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:42.340452" elapsed="0.000345"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T01:00:42.207714" elapsed="0.133132"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-08T01:00:41.970701" elapsed="0.370176"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-08T01:00:41.968317" elapsed="0.372618"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-08T01:00:41.963114" elapsed="0.377879"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:41.962663" elapsed="0.378376"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-08T01:00:41.959800" elapsed="0.381293"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Check Number Of Groups On Member" owner="ClusterOpenFlow">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:00:42.342990" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:00:42.342630" elapsed="0.000387"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T01:00:42.343061" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T01:00:42.343225" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T01:00:42.342244" elapsed="0.001006"/>
</kw>
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T01:00:42.396961" level="INFO">GET Request : url=http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01s3bfo0y24i1es90l47mavglv0.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T01:00:42.399230" level="INFO">GET Response : url=http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Transfer-Encoding': 'chunked'} 
 body={"opendaylight-inventory:nodes":{"node":[{"id":"openflow:3","flow-node-inventory:port-number":54950,"flow-node-inventory:table":[{"id":62,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":28,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":2,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":224,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":181,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":147,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":106,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":61,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":27,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":1,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":223,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":182,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":148,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":105,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":60,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":30,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":0,"flow":[{"id":"69","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.69/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":69}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":315000000}},"flags":""},{"id":"60","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.60/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":60}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":315000000}},"flags":""},{"id":"68","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.68/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":68}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":315000000}},"flags":""},{"id":"67","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.67/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":67}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":315000000}},"flags":""},{"id":"66","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.66/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":66}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":315000000}},"flags":""},{"id":"65","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.65/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":65}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":315000000}},"flags":""},{"id":"64","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.64/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":64}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":315000000}},"flags":""},{"id":"63","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.63/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":63}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":315000000}},"flags":""},{"id":"62","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.62/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":62}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":315000000}},"flags":""},{"id":"61","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.61/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":61}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":315000000}},"flags":""},{"id":"100","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.100/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":100}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":315000000}},"flags":""},{"id":"71","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.71/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":71}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":315000000}},"flags":""},{"id":"70","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.70/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":70}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":315000000}},"flags":""},{"id":"79","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.79/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":79}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":315000000}},"flags":""},{"id":"78","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.78/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":78}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":315000000}},"flags":""},{"id":"77","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.77/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":77}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":315000000}},"flags":""},{"id":"76","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.76/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":76}}]}}]},"hard-timeout":0,"opendaylig... (set the log level to DEBUG or TRACE to see the full content) 
 </msg>
<msg time="2026-04-08T01:00:42.399714" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${RFC8040_OPERATIONAL_NODES_API}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T01:00:42.343407" elapsed="0.056367"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:00:42.405801" level="INFO">{"opendaylight-inventory:nodes":{"node":[{"id":"openflow:3","flow-node-inventory:port-number":54950,"flow-node-inventory:table":[{"id":62,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":28,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":2,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":224,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":181,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":147,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":106,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":61,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":27,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":1,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":223,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":182,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":148,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":105,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":60,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":30,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":0,"flow":[{"id":"69","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.69/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":69}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":315000000}},"flags":""},{"id":"60","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.60/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":60}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":315000000}},"flags":""},{"id":"68","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.68/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":68}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":315000000}},"flags":""},{"id":"67","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.67/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":67}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":315000000}},"flags":""},{"id":"66","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.66/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":66}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":315000000}},"flags":""},{"id":"65","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.65/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":65}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":315000000}},"flags":""},{"id":"64","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.64/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":64}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":315000000}},"flags":""},{"id":"63","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.63/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":63}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":315000000}},"flags":""},{"id":"62","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.62/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":62}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":315000000}},"flags":""},{"id":"61","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.61/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":61}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":315000000}},"flags":""},{"id":"100","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.100/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":100}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":315000000}},"flags":""},{"id":"71","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.71/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":71}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":315000000}},"flags":""},{"id":"70","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.70/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":70}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":315000000}},"flags":""},{"id":"79","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.79/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":79}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":315000000}},"flags":""},{"id":"78","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.78/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":78}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":315000000}},"flags":""},{"id":"77","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.77/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":77}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":315000000}},"flags":""},{"id":"76","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.76/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":76}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":315000000}},"flags":""},{"id":"75","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.75/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":75}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":315000000}},"flags":""},{"id":"74","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.74/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":74}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":315000000}},"flags":""},{"id":"73","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.73/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":73}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":315000000}},"flags":""},{"id":"72","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.72/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":72}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":315000000}},"flags":""},{"id":"82","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.82/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":82}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":315000000}},"flags":""},{"id":"81","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.81/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":81}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":315000000}},"flags":""},{"id":"80","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.80/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":80}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":315000000}},"flags":""},{"id":"89","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.89/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":89}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":315000000}},"flags":""},{"id":"88","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.88/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":88}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":315000000}},"flags":""},{"id":"87","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.87/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":87}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":315000000}},"flags":""},{"id":"86","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.86/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":86}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":315000000}},"flags":""},{"id":"85","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.85/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":85}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":315000000}},"flags":""},{"id":"84","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.84/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":84}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":315000000}},"flags":""},{"id":"83","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.83/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":83}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":315000000}},"flags":""},{"id":"19","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.19/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":19}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":315000000}},"flags":""},{"id":"18","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.18/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":18}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":315000000}},"flags":""},{"id":"17","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.17/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":17}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":315000000}},"flags":""},{"id":"16","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.16/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":16}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":315000000}},"flags":""},{"id":"15","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.15/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":15}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":315000000}},"flags":""},{"id":"14","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.14/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":14}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":315000000}},"flags":""},{"id":"2","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.2/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":2}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":315000000}},"flags":""},{"id":"93","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.93/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":93}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":315000000}},"flags":""},{"id":"92","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.92/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":92}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":315000000}},"flags":""},{"id":"91","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.91/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":91}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":315000000}},"flags":""},{"id":"90","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.90/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":90}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":315000000}},"flags":""},{"id":"13","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.13/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":13}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":315000000}},"flags":""},{"id":"12","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.12/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":12}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":315000000}},"flags":""},{"id":"11","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.11/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":11}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":315000000}},"flags":""},{"id":"99","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.99/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":99}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":315000000}},"flags":""},{"id":"10","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.10/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":10}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":315000000}},"flags":""},{"id":"98","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.98/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":98}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":315000000}},"flags":""},{"id":"97","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.97/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":97}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":315000000}},"flags":""},{"id":"96","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.96/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":96}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":314000000}},"flags":""},{"id":"95","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.95/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":95}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":314000000}},"flags":""},{"id":"94","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.94/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":94}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":314000000}},"flags":""},{"id":"29","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.29/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":29}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":314000000}},"flags":""},{"id":"28","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.28/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":28}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":314000000}},"flags":""},{"id":"27","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.27/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":27}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":314000000}},"flags":""},{"id":"26","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.26/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":26}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":314000000}},"flags":""},{"id":"25","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.25/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":25}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":314000000}},"flags":""},{"id":"9","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.9/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":9}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":314000000}},"flags":""},{"id":"8","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.8/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":8}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":314000000}},"flags":""},{"id":"7","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.7/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":7}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":314000000}},"flags":""},{"id":"6","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.6/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":6}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":314000000}},"flags":""},{"id":"5","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.5/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":5}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":314000000}},"flags":""},{"id":"4","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.4/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":4}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":314000000}},"flags":""},{"id":"3","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.3/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":3}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":314000000}},"flags":""},{"id":"24","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.24/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":24}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":314000000}},"flags":""},{"id":"23","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.23/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":23}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":314000000}},"flags":""},{"id":"22","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.22/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":22}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":314000000}},"flags":""},{"id":"21","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.21/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":21}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":314000000}},"flags":""},{"id":"20","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.20/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":20}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":314000000}},"flags":""},{"id":"39","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.39/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":39}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":314000000}},"flags":""},{"id":"38","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.38/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":38}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":314000000}},"flags":""},{"id":"37","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.37/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":37}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":314000000}},"flags":""},{"id":"36","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.36/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":36}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":314000000}},"flags":""},{"id":"35","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.35/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":35}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":314000000}},"flags":""},{"id":"34","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.34/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":34}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":314000000}},"flags":""},{"id":"33","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.33/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":33}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":314000000}},"flags":""},{"id":"32","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.32/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":32}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":314000000}},"flags":""},{"id":"31","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.31/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":31}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":314000000}},"flags":""},{"id":"30","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.30/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":30}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":314000000}},"flags":""},{"id":"49","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.49/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":49}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":314000000}},"flags":""},{"id":"48","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.48/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":48}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":314000000}},"flags":""},{"id":"47","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.47/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":47}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":314000000}},"flags":""},{"id":"#UF$TABLE*0-3","table_id":0,"priority":0,"cookie_mask":"0","idle-timeout":0,"cookie":"10","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"output-action":{"max-length":65535,"output-node-connector":"CONTROLLER"}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"35","byte-count":"2840","duration":{"second":131,"nanosecond":187000000}},"flags":"SEND_FLOW_REM"},{"id":"46","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.46/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":46}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":314000000}},"flags":""},{"id":"45","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.45/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":45}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":314000000}},"flags":""},{"id":"44","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.44/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":44}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":314000000}},"flags":""},{"id":"43","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.43/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":43}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":314000000}},"flags":""},{"id":"42","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.42/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":42}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":315000000}},"flags":""},{"id":"41","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.41/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":41}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":315000000}},"flags":""},{"id":"40","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.40/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":40}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":315000000}},"flags":""},{"id":"59","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.59/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":59}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":315000000}},"flags":""},{"id":"58","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.58/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":58}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":315000000}},"flags":""},{"id":"57","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.57/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":57}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":315000000}},"flags":""},{"id":"56","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.56/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":56}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":315000000}},"flags":""},{"id":"55","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.55/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":55}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":315000000}},"flags":""},{"id":"54","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.54/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":54}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":315000000}},"flags":""},{"id":"53","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.53/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":53}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":315000000}},"flags":""},{"id":"52","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.52/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":52}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":315000000}},"flags":""},{"id":"51","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.51/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":51}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":312000000}},"flags":""},{"id":"50","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.50/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":50}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":312000000}},"flags":""}],"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"53","active-flows":100,"packets-matched":"45"}},{"id":226,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":179,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":149,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":104,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":59,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":29,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":225,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":180,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":150,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":103,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":66,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":32,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":220,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":185,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":151,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":102,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":65,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":31,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":253,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":219,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":186,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":152,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":101,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":64,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":34,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":252,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":222,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":183,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":153,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":100,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":63,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":33,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":251,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":221,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":184,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":154,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":99,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":54,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":20,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":250,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":216,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":189,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":155,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":129,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":114,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":53,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":19,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":249,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":215,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":190,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":156,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":130,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":113,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":52,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":22,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":248,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":218,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":187,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":157,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":112,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":51,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":21,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":247,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":217,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":188,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":158,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":128,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":111,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":58,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":24,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":246,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":212,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":193,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":159,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":110,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":57,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":23,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":245,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":211,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":194,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":160,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":109,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":56,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":26,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":244,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":214,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":191,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":161,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":108,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":55,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":25,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":243,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":213,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":192,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":162,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":107,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":77,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":43,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":17,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":239,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":198,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":164,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":138,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":119,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":89,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":78,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":44,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":18,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":240,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":197,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":163,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":137,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":120,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":90,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":75,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":45,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":15,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":241,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":196,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":166,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":136,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":121,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":87,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":76,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":46,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":16,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":242,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":195,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":165,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":135,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":122,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":88,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":81,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":47,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":13,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":235,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":202,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":168,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":134,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":115,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":85,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":82,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":48,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":14,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":236,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":201,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":167,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":133,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":116,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":86,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":79,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":49,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":11,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":237,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":200,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":170,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":132,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":117,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":83,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":80,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":50,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":12,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":238,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":199,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":169,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":131,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":118,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":84,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":69,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":35,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":9,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":231,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":206,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":172,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":146,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":127,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":97,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":70,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":36,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":10,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":232,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":205,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":171,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":145,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":98,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":67,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":37,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":7,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":233,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":204,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":174,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":144,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":95,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":68,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":38,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":8,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":234,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":203,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":173,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":143,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":96,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":73,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":39,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":5,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":227,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":210,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":176,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":142,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":123,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":93,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":74,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":40,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":6,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":228,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":209,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":175,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":141,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":124,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":94,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":71,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":41,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":3,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":229,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":208,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":178,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":140,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":125,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":91,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":72,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":42,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":4,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":230,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":207,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":177,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":139,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":126,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":92,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}}],"opendaylight-group-statistics:group-features":{"max-groups":[4294967040],"group-types-supported":["opendaylight-group-types:group-all","opendaylight-group-types:group-ff","opendaylight-group-types:group-select","opendaylight-group-types:group-indirect"],"group-capabilities-supported":["opendaylight-group-types:chaining","opendaylight-group-types:select-weight","opendaylight-group-types:select-liveness"],"actions":[67076097]},"flow-node-inventory:manufacturer":"Nicira, Inc.","flow-node-inventory:description":"s3","flow-node-inventory:hardware":"Open vSwitch","flow-node-inventory:switch-features":{"max_tables":254,"capabilities":["flow-node-inventory:flow-feature-capability-table-stats","flow-node-inventory:flow-feature-capability-group-stats","flow-node-inventory:flow-feature-capability-queue-stats","flow-node-inventory:flow-feature-capability-flow-stats","flow-node-inventory:flow-feature-capability-port-stats"],"max_buffers":0},"flow-node-inventory:snapshot-gathering-status-start":{"begin":"2026-04-08T01:00:41.176Z"},"flow-node-inventory:software":"2.17.11","node-connector":[{"id":"openflow:3:LOCAL","flow-node-inventory:port-number":4294967294,"flow-node-inventory:hardware-address":"c2:87:c1:60:0d:43","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s3","flow-node-inventory:current-feature":"","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":0,"flow-node-inventory:state":{"live":false,"blocked":false,"link-down":true},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"PORT-DOWN","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"0","received":"0"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":136,"nanosecond":516000000},"bytes":{"transmitted":"0","received":"0"},"receive-crc-error":"0"}},{"id":"openflow:3:2","flow-node-inventory:port-number":2,"flow-node-inventory:hardware-address":"9e:72:98:8c:46:72","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s3-eth2","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"39","received":"44"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":136,"nanosecond":520000000},"bytes":{"transmitted":"3267","received":"3689"},"receive-crc-error":"0"}},{"id":"openflow:3:1","flow-node-inventory:port-number":1,"flow-node-inventory:hardware-address":"ca:ac:9a:41:42:1c","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s3-eth1","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"46","received":"11"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":136,"nanosecond":519000000},"bytes":{"transmitted":"3865","received":"866"},"receive-crc-error":"0"}}],"flow-node-inventory:ip-address":"10.30.170.192","flow-node-inventory:serial-number":"None","flow-node-inventory:group":[{"group-id":56,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":56000}}],"watch_group":56000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":56,"duration":{"second":132,"nanosecond":314000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":22,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":22000}}],"watch_group":22000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":22,"duration":{"second":132,"nanosecond":314000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":99,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":99000}}],"watch_group":99000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":99,"duration":{"second":132,"nanosecond":314000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":34000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":34000,"duration":{"second":135,"nanosecond":144000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":89000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":89000,"duration":{"second":135,"nanosecond":143000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":60000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":60000,"duration":{"second":135,"nanosecond":140000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":91000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":91000,"duration":{"second":135,"nanosecond":140000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":57,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":57000}}],"watch_group":57000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":57,"duration":{"second":132,"nanosecond":314000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":23,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":23000}}],"watch_group":23000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":23,"duration":{"second":131,"nanosecond":817000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":14000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":14000,"duration":{"second":135,"nanosecond":140000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":98,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":98000}}],"watch_group":98000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":98,"duration":{"second":131,"nanosecond":816000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":56000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":56000,"duration":{"second":135,"nanosecond":140000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":85000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":85000,"duration":{"second":135,"nanosecond":140000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":54,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":54000}}],"watch_group":54000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":54,"duration":{"second":131,"nanosecond":816000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":24,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":24000}}],"watch_group":24000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":24,"duration":{"second":131,"nanosecond":816000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":36000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":36000,"duration":{"second":135,"nanosecond":140000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":87000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":87000,"duration":{"second":135,"nanosecond":140000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":59000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":59000,"duration":{"second":135,"nanosecond":140000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":25000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":25000,"duration":{"second":135,"nanosecond":140000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":43000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":43000,"duration":{"second":135,"nanosecond":139000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":55,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":55000}}],"watch_group":55000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":55,"duration":{"second":131,"nanosecond":816000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":25,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":25000}}],"watch_group":25000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":25,"duration":{"second":134,"nanosecond":822000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":100,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":100000}}],"watch_group":100000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":100,"duration":{"second":131,"nanosecond":816000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":58000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":58000,"duration":{"second":134,"nanosecond":822000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":86000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":86000,"duration":{"second":134,"nanosecond":822000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":60,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":60000}}],"watch_group":60000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":60,"duration":{"second":134,"nanosecond":822000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":26,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":26000}}],"watch_group":26000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":26,"duration":{"second":131,"nanosecond":816000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":41000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":41000,"duration":{"second":134,"nanosecond":821000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":95,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":95000}}],"watch_group":95000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":95,"duration":{"second":131,"nanosecond":816000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":82000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":82000,"duration":{"second":134,"nanosecond":821000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":61,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":61000}}],"watch_group":61000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":61,"duration":{"second":131,"nanosecond":816000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":27,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":27000}}],"watch_group":27000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":27,"duration":{"second":131,"nanosecond":811000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":94,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":94000}}],"watch_group":94000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":94,"duration":{"second":131,"nanosecond":811000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":98000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":98000,"duration":{"second":134,"nanosecond":820000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":27000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":27000,"duration":{"second":134,"nanosecond":820000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":57000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":57000,"duration":{"second":134,"nanosecond":819000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":16000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":16000,"duration":{"second":134,"nanosecond":818000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":83000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":83000,"duration":{"second":134,"nanosecond":818000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":58,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":58000}}],"watch_group":58000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":58,"duration":{"second":134,"nanosecond":319000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":28,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":28000}}],"watch_group":28000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":28,"duration":{"second":131,"nanosecond":811000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":97,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":97000}}],"watch_group":97000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":97,"duration":{"second":131,"nanosecond":811000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":100000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":100000,"duration":{"second":134,"nanosecond":319000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":59,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":59000}}],"watch_group":59000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":59,"duration":{"second":134,"nanosecond":319000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":38000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":38000,"duration":{"second":134,"nanosecond":319000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":29,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":29000}}],"watch_group":29000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":29,"duration":{"second":131,"nanosecond":811000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":96,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":96000}}],"watch_group":96000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":96,"duration":{"second":131,"nanosecond":811000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":84000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":84000,"duration":{"second":134,"nanosecond":319000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":64,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":64000}}],"watch_group":64000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":64,"duration":{"second":131,"nanosecond":811000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":30,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":30000}}],"watch_group":30000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":30,"duration":{"second":131,"nanosecond":811000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":4,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":4000}}],"watch_group":4000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":4,"duration":{"second":131,"nanosecond":811000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":91,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":91000}}],"watch_group":91000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":91,"duration":{"second":134,"nanosecond":319000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":7000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":7000,"duration":{"second":134,"nanosecond":319000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":29000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":29000,"duration":{"second":134,"nanosecond":319000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":65,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":65000}}],"watch_group":65000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":65,"duration":{"second":131,"nanosecond":811000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":31,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":31000}}],"watch_group":31000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":31,"duration":{"second":131,"nanosecond":811000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":5,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":5000}}],"watch_group":5000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":5,"duration":{"second":131,"nanosecond":811000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":90,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":90000}}],"watch_group":90000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":90,"duration":{"second":131,"nanosecond":811000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":18000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":18000,"duration":{"second":134,"nanosecond":318000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":62,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":62000}}],"watch_group":62000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":62,"duration":{"second":131,"nanosecond":811000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":65000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":65000,"duration":{"second":134,"nanosecond":318000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":32,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":32000}}],"watch_group":32000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":32,"duration":{"second":131,"nanosecond":811000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":2,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":2000}}],"watch_group":2000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":2,"duration":{"second":131,"nanosecond":811000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":93,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":93000}}],"watch_group":93000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":93,"duration":{"second":131,"nanosecond":811000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":64000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":64000,"duration":{"second":134,"nanosecond":317000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":63,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":63000}}],"watch_group":63000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":63,"duration":{"second":131,"nanosecond":811000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":33,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":33000}}],"watch_group":33000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":33,"duration":{"second":131,"nanosecond":811000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":3,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":3000}}],"watch_group":3000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":3,"duration":{"second":131,"nanosecond":811000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":80000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":80000,"duration":{"second":134,"nanosecond":316000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":9000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":9000,"duration":{"second":134,"nanosecond":316000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":92,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":92000}}],"watch_group":92000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":92,"duration":{"second":131,"nanosecond":811000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":5000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":5000,"duration":{"second":134,"nanosecond":316000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":20000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":20000,"duration":{"second":134,"nanosecond":316000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":81000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":81000,"duration":{"second":134,"nanosecond":316000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":97000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":97000,"duration":{"second":134,"nanosecond":316000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":31000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":31000,"duration":{"second":134,"nanosecond":316000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":68,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":68000}}],"watch_group":68000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":68,"duration":{"second":131,"nanosecond":811000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":11000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":11000,"duration":{"second":134,"nanosecond":316000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":34,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":34000}}],"watch_group":34000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":34,"duration":{"second":134,"nanosecond":316000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":78000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":78000,"duration":{"second":134,"nanosecond":315000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":87,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":87000}}],"watch_group":87000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":87,"duration":{"second":134,"nanosecond":315000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":93000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":93000,"duration":{"second":134,"nanosecond":315000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":63000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":63000,"duration":{"second":134,"nanosecond":315000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":69,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":69000}}],"watch_group":69000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":69,"duration":{"second":131,"nanosecond":811000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":35,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":35000}}],"watch_group":35000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":35,"duration":{"second":131,"nanosecond":811000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":33000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":33000,"duration":{"second":134,"nanosecond":311000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":79000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":79000,"duration":{"second":134,"nanosecond":311000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":86,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":86000}}],"watch_group":86000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":86,"duration":{"second":134,"nanosecond":311000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":62000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":62000,"duration":{"second":134,"nanosecond":311000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":66,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":66000}}],"watch_group":66000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":66,"duration":{"second":131,"nanosecond":811000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":77000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":77000,"duration":{"second":134,"nanosecond":311000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":36,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":36000}}],"watch_group":36000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":36,"duration":{"second":134,"nanosecond":311000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":89,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":89000}}],"watch_group":89000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":89,"duration":{"second":134,"nanosecond":311000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":22000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":22000,"duration":{"second":134,"nanosecond":311000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":95000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":95000,"duration":{"second":134,"nanosecond":311000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":67,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":67000}}],"watch_group":67000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":67,"duration":{"second":131,"nanosecond":811000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":37,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":37000}}],"watch_group":37000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":37,"duration":{"second":131,"nanosecond":811000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":88,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":88000}}],"watch_group":88000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":88,"duration":{"second":131,"nanosecond":811000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":61000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":61000,"duration":{"second":134,"nanosecond":310000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":3000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":3000,"duration":{"second":134,"nanosecond":310000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":73,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":73000}}],"watch_group":73000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":73,"duration":{"second":131,"nanosecond":811000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":39,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":39000}}],"watch_group":39000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":39,"duration":{"second":131,"nanosecond":806000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":13,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":13000}}],"watch_group":13000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":13,"duration":{"second":131,"nanosecond":806000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":74000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":74000,"duration":{"second":134,"nanosecond":310000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":15000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":15000,"duration":{"second":134,"nanosecond":310000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":44000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":44000,"duration":{"second":134,"nanosecond":310000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":45000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":45000,"duration":{"second":134,"nanosecond":310000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":68000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":68000,"duration":{"second":134,"nanosecond":310000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":72,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":72000}}],"watch_group":72000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":72,"duration":{"second":131,"nanosecond":806000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":38,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":38000}}],"watch_group":38000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":38,"duration":{"second":133,"nanosecond":820000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":75000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":75000,"duration":{"second":133,"nanosecond":820000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":12,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":12000}}],"watch_group":12000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":12,"duration":{"second":131,"nanosecond":806000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":35000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":35000,"duration":{"second":133,"nanosecond":820000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":24000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":24000,"duration":{"second":133,"nanosecond":820000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":90000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":90000,"duration":{"second":133,"nanosecond":820000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":71,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":71000}}],"watch_group":71000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":71,"duration":{"second":131,"nanosecond":806000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":41,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":41000}}],"watch_group":41000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":41,"duration":{"second":133,"nanosecond":819000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":42000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":42000,"duration":{"second":133,"nanosecond":819000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":11,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":11000}}],"watch_group":11000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":11,"duration":{"second":133,"nanosecond":819000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":92000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":92000,"duration":{"second":133,"nanosecond":818000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":46000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":46000,"duration":{"second":133,"nanosecond":818000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":67000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":67000,"duration":{"second":133,"nanosecond":818000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":70,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":70000}}],"watch_group":70000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":70,"duration":{"second":131,"nanosecond":806000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":76000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":76000,"duration":{"second":133,"nanosecond":817000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":40,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":40000}}],"watch_group":40000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":40,"duration":{"second":131,"nanosecond":806000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":13000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":13000,"duration":{"second":133,"nanosecond":817000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":10,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":10000}}],"watch_group":10000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":10,"duration":{"second":131,"nanosecond":806000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":88000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":88000,"duration":{"second":133,"nanosecond":817000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":47000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":47000,"duration":{"second":133,"nanosecond":817000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":66000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":66000,"duration":{"second":133,"nanosecond":817000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":77,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":77000}}],"watch_group":77000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":77,"duration":{"second":133,"nanosecond":817000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":43,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":43000}}],"watch_group":43000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":43,"duration":{"second":133,"nanosecond":816000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":9,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":9000}}],"watch_group":9000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":9,"duration":{"second":133,"nanosecond":816000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":99000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":99000,"duration":{"second":133,"nanosecond":816000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":26000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":26000,"duration":{"second":133,"nanosecond":816000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":70000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":70000,"duration":{"second":133,"nanosecond":815000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":76,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":76000}}],"watch_group":76000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":76,"duration":{"second":133,"nanosecond":319000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":42,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":42000}}],"watch_group":42000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":42,"duration":{"second":133,"nanosecond":318000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":8,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":8000}}],"watch_group":8000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":8,"duration":{"second":131,"nanosecond":806000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":37000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":37000,"duration":{"second":133,"nanosecond":318000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":49000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":49000,"duration":{"second":133,"nanosecond":318000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":71000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":71000,"duration":{"second":133,"nanosecond":318000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":48000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":48000,"duration":{"second":133,"nanosecond":317000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":75,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":75000}}],"watch_group":75000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":75,"duration":{"second":133,"nanosecond":313000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":45,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":45000}}],"watch_group":45000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":45,"duration":{"second":133,"nanosecond":313000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":7,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":7000}}],"watch_group":7000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":7,"duration":{"second":133,"nanosecond":313000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":39000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":39000,"duration":{"second":133,"nanosecond":313000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":73000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":73000,"duration":{"second":133,"nanosecond":313000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":69000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":69000,"duration":{"second":133,"nanosecond":313000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":17000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":17000,"duration":{"second":133,"nanosecond":313000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":28000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":28000,"duration":{"second":133,"nanosecond":313000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":74,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":74000}}],"watch_group":74000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":74,"duration":{"second":133,"nanosecond":313000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":44,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":44000}}],"watch_group":44000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":44,"duration":{"second":133,"nanosecond":313000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":6,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":6000}}],"watch_group":6000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":6,"duration":{"second":131,"nanosecond":806000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":40000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":40000,"duration":{"second":133,"nanosecond":313000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":81,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":81000}}],"watch_group":81000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":81,"duration":{"second":133,"nanosecond":313000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":47,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":47000}}],"watch_group":47000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":47,"duration":{"second":133,"nanosecond":313000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":21,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":21000}}],"watch_group":21000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":21,"duration":{"second":131,"nanosecond":806000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":8000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":8000,"duration":{"second":133,"nanosecond":313000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":19000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":19000,"duration":{"second":133,"nanosecond":312000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":96000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":96000,"duration":{"second":133,"nanosecond":312000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":80,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":80000}}],"watch_group":80000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":80,"duration":{"second":133,"nanosecond":312000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":46,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":46000}}],"watch_group":46000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":46,"duration":{"second":133,"nanosecond":312000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":20,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":20000}}],"watch_group":20000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":20,"duration":{"second":133,"nanosecond":312000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":52000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":52000,"duration":{"second":133,"nanosecond":312000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":6000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":6000,"duration":{"second":133,"nanosecond":312000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":79,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":79000}}],"watch_group":79000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":79,"duration":{"second":133,"nanosecond":311000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":49,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":49000}}],"watch_group":49000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":49,"duration":{"second":132,"nanosecond":819000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":19,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":19000}}],"watch_group":19000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":19,"duration":{"second":132,"nanosecond":818000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":50000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":50000,"duration":{"second":132,"nanosecond":818000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":72000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":72000,"duration":{"second":132,"nanosecond":818000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":30000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":30000,"duration":{"second":132,"nanosecond":818000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":78,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":78000}}],"watch_group":78000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":78,"duration":{"second":132,"nanosecond":818000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":48,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":48000}}],"watch_group":48000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":48,"duration":{"second":132,"nanosecond":817000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":18,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":18000}}],"watch_group":18000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":18,"duration":{"second":132,"nanosecond":817000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":51000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":51000,"duration":{"second":132,"nanosecond":817000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":85,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":85000}}],"watch_group":85000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":85,"duration":{"second":132,"nanosecond":817000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":55000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":55000,"duration":{"second":132,"nanosecond":817000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":51,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":51000}}],"watch_group":51000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":51,"duration":{"second":132,"nanosecond":318000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":17,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":17000}}],"watch_group":17000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":17,"duration":{"second":132,"nanosecond":318000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":21000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":21000,"duration":{"second":132,"nanosecond":318000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":4000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":4000,"duration":{"second":132,"nanosecond":318000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":84,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":84000}}],"watch_group":84000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":84,"duration":{"second":132,"nanosecond":318000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":50,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":50000}}],"watch_group":50000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":50,"duration":{"second":132,"nanosecond":318000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":16,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":16000}}],"watch_group":16000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":16,"duration":{"second":132,"nanosecond":317000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":10000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":10000,"duration":{"second":132,"nanosecond":317000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":54000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":54000,"duration":{"second":132,"nanosecond":317000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":83,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":83000}}],"watch_group":83000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":83,"duration":{"second":132,"nanosecond":317000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":32000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":32000,"duration":{"second":132,"nanosecond":317000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":53,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":53000}}],"watch_group":53000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":53,"duration":{"second":131,"nanosecond":806000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":15,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":15000}}],"watch_group":15000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":15,"duration":{"second":132,"nanosecond":316000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":2000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":2000,"duration":{"second":132,"nanosecond":316000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":82,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":82000}}],"watch_group":82000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":82,"duration":{"second":132,"nanosecond":316000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":52,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":52000}}],"watch_group":52000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":52,"duration":{"second":132,"nanosecond":316000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":14,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":14000}}],"watch_group":14000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":14,"duration":{"second":132,"nanosecond":316000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":53000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":53000,"duration":{"second":132,"nanosecond":315000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":12000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":12000,"duration":{"second":132,"nanosecond":315000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":23000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":23000,"duration":{"second":132,"nanosecond":314000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":94000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":94000,"duration":{"second":132,"nanosecond":314000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}}],"flow-node-inventory:snapshot-gathering-status-end":{"succeeded":true,"end":"2026-04-08T01:00:41.235Z"}},{"id":"openflow:1","flow-node-inventory:port-number":54934,"flow-node-inventory:table":[{"id":62,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":28,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":2,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":224,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":181,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":147,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":106,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":61,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":27,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":1,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":223,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":182,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":148,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":105,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":60,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":30,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":0,"flow":[{"id":"69","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.69/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":69}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":276000000}},"flags":""},{"id":"60","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.60/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":60}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":276000000}},"flags":""},{"id":"68","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.68/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":68}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":276000000}},"flags":""},{"id":"67","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.67/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":67}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":276000000}},"flags":""},{"id":"66","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.66/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":66}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":276000000}},"flags":""},{"id":"65","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.65/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":65}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":276000000}},"flags":""},{"id":"64","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.64/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":64}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":276000000}},"flags":""},{"id":"63","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.63/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":63}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":276000000}},"flags":""},{"id":"62","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.62/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":62}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":276000000}},"flags":""},{"id":"61","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.61/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":61}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":276000000}},"flags":""},{"id":"100","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.100/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":100}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":276000000}},"flags":""},{"id":"71","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.71/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":71}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":276000000}},"flags":""},{"id":"70","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.70/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":70}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":276000000}},"flags":""},{"id":"79","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.79/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":79}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":276000000}},"flags":""},{"id":"78","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.78/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":78}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":276000000}},"flags":""},{"id":"77","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.77/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":77}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":276000000}},"flags":""},{"id":"76","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.76/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":76}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":276000000}},"flags":""},{"id":"75","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.75/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":75}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":276000000}},"flags":""},{"id":"74","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.74/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":74}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":276000000}},"flags":""},{"id":"73","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.73/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":73}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":276000000}},"flags":""},{"id":"72","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.72/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":72}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":276000000}},"flags":""},{"id":"82","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.82/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":82}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":276000000}},"flags":""},{"id":"81","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.81/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":81}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":276000000}},"flags":""},{"id":"80","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.80/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":80}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":276000000}},"flags":""},{"id":"89","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.89/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":89}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":276000000}},"flags":""},{"id":"88","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.88/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":88}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":276000000}},"flags":""},{"id":"87","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.87/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":87}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":276000000}},"flags":""},{"id":"86","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.86/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":86}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":276000000}},"flags":""},{"id":"85","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.85/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":85}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":276000000}},"flags":""},{"id":"84","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.84/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":84}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":275000000}},"flags":""},{"id":"83","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.83/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":83}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":276000000}},"flags":""},{"id":"19","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.19/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":19}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":276000000}},"flags":""},{"id":"18","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.18/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":18}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":276000000}},"flags":""},{"id":"17","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.17/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":17}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":276000000}},"flags":""},{"id":"16","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.16/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":16}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":276000000}},"flags":""},{"id":"15","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.15/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":15}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":276000000}},"flags":""},{"id":"14","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.14/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":14}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":276000000}},"flags":""},{"id":"2","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.2/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":2}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":276000000}},"flags":""},{"id":"93","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.93/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":93}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":276000000}},"flags":""},{"id":"92","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.92/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":92}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":276000000}},"flags":""},{"id":"91","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.91/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":91}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":276000000}},"flags":""},{"id":"90","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.90/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":90}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":276000000}},"flags":""},{"id":"13","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.13/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":13}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":276000000}},"flags":""},{"id":"12","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.12/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":12}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":276000000}},"flags":""},{"id":"11","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.11/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":11}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":276000000}},"flags":""},{"id":"99","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.99/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":99}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":276000000}},"flags":""},{"id":"10","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.10/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":10}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":276000000}},"flags":""},{"id":"98","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.98/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":98}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":276000000}},"flags":""},{"id":"97","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.97/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":97}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":276000000}},"flags":""},{"id":"96","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.96/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":96}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":276000000}},"flags":""},{"id":"95","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.95/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":95}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":276000000}},"flags":""},{"id":"94","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.94/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":94}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":276000000}},"flags":""},{"id":"29","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.29/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":29}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":276000000}},"flags":""},{"id":"28","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.28/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":28}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":276000000}},"flags":""},{"id":"27","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.27/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":27}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":276000000}},"flags":""},{"id":"26","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.26/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":26}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":276000000}},"flags":""},{"id":"25","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.25/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":25}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":276000000}},"flags":""},{"id":"9","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.9/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":9}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":276000000}},"flags":""},{"id":"8","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.8/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":8}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":276000000}},"flags":""},{"id":"7","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.7/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":7}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":276000000}},"flags":""},{"id":"6","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.6/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":6}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":276000000}},"flags":""},{"id":"5","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.5/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":5}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":276000000}},"flags":""},{"id":"4","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.4/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":4}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":276000000}},"flags":""},{"id":"3","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.3/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":3}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":276000000}},"flags":""},{"id":"24","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.24/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":24}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":276000000}},"flags":""},{"id":"23","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.23/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":23}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":276000000}},"flags":""},{"id":"22","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.22/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":22}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":276000000}},"flags":""},{"id":"21","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.21/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":21}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":276000000}},"flags":""},{"id":"20","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.20/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":20}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":276000000}},"flags":""},{"id":"39","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.39/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":39}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":276000000}},"flags":""},{"id":"38","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.38/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":38}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":276000000}},"flags":""},{"id":"37","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.37/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":37}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":276000000}},"flags":""},{"id":"36","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.36/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":36}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":276000000}},"flags":""},{"id":"35","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.35/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":35}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":276000000}},"flags":""},{"id":"34","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.34/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":34}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":276000000}},"flags":""},{"id":"33","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.33/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":33}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":276000000}},"flags":""},{"id":"32","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.32/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":32}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":276000000}},"flags":""},{"id":"31","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.31/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":31}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":276000000}},"flags":""},{"id":"30","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.30/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":30}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":276000000}},"flags":""},{"id":"49","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.49/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":49}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":276000000}},"flags":""},{"id":"48","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.48/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":48}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":275000000}},"flags":""},{"id":"47","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.47/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":47}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":275000000}},"flags":""},{"id":"#UF$TABLE*0-1","table_id":0,"priority":0,"cookie_mask":"0","idle-timeout":0,"cookie":"10","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"output-action":{"max-length":65535,"output-node-connector":"CONTROLLER"}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"34","byte-count":"2770","duration":{"second":131,"nanosecond":166000000}},"flags":"SEND_FLOW_REM"},{"id":"46","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.46/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":46}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":275000000}},"flags":""},{"id":"45","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.45/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":45}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":275000000}},"flags":""},{"id":"44","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.44/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":44}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":275000000}},"flags":""},{"id":"43","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.43/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":43}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":275000000}},"flags":""},{"id":"42","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.42/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":42}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":275000000}},"flags":""},{"id":"41","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.41/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":41}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":275000000}},"flags":""},{"id":"40","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.40/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":40}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":275000000}},"flags":""},{"id":"59","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.59/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":59}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":275000000}},"flags":""},{"id":"58","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.58/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":58}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":275000000}},"flags":""},{"id":"57","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.57/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":57}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":275000000}},"flags":""},{"id":"56","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.56/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":56}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":275000000}},"flags":""},{"id":"55","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.55/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":55}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":275000000}},"flags":""},{"id":"54","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.54/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":54}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":275000000}},"flags":""},{"id":"53","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.53/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":53}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":275000000}},"flags":""},{"id":"52","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.52/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":52}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":275000000}},"flags":""},{"id":"51","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.51/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":51}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":275000000}},"flags":""},{"id":"50","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.50/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":50}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":275000000}},"flags":""}],"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"51","active-flows":100,"packets-matched":"44"}},{"id":226,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":179,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":149,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":104,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":59,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":29,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":225,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":180,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":150,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":103,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":66,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":32,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":220,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":185,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":151,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":102,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":65,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":31,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":253,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":219,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":186,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":152,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":101,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":64,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":34,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":252,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":222,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":183,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":153,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":100,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":63,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":33,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":251,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":221,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":184,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":154,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":99,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":54,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":20,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":250,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":216,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":189,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":155,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":129,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":114,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":53,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":19,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":249,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":215,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":190,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":156,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":130,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":113,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":52,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":22,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":248,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":218,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":187,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":157,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":112,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":51,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":21,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":247,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":217,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":188,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":158,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":128,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":111,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":58,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":24,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":246,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":212,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":193,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":159,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":110,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":57,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":23,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":245,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":211,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":194,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":160,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":109,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":56,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":26,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":244,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":214,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":191,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":161,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":108,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":55,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":25,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":243,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":213,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":192,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":162,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":107,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":77,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":43,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":17,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":239,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":198,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":164,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":138,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":119,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":89,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":78,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":44,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":18,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":240,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":197,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":163,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":137,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":120,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":90,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":75,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":45,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":15,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":241,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":196,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":166,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":136,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":121,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":87,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":76,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":46,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":16,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":242,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":195,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":165,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":135,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":122,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":88,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":81,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":47,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":13,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":235,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":202,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":168,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":134,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":115,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":85,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":82,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":48,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":14,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":236,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":201,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":167,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":133,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":116,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":86,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":79,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":49,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":11,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":237,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":200,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":170,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":132,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":117,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":83,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":80,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":50,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":12,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":238,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":199,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":169,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":131,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":118,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":84,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":69,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":35,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":9,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":231,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":206,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":172,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":146,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":127,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":97,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":70,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":36,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":10,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":232,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":205,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":171,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":145,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":98,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":67,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":37,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":7,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":233,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":204,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":174,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":144,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":95,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":68,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":38,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":8,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":234,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":203,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":173,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":143,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":96,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":73,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":39,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":5,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":227,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":210,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":176,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":142,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":123,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":93,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":74,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":40,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":6,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":228,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":209,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":175,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":141,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":124,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":94,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":71,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":41,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":3,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":229,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":208,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":178,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":140,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":125,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":91,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":72,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":42,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":4,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":230,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":207,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":177,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":139,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":126,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":92,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}}],"opendaylight-group-statistics:group-features":{"max-groups":[4294967040],"group-types-supported":["opendaylight-group-types:group-all","opendaylight-group-types:group-ff","opendaylight-group-types:group-select","opendaylight-group-types:group-indirect"],"group-capabilities-supported":["opendaylight-group-types:chaining","opendaylight-group-types:select-weight","opendaylight-group-types:select-liveness"],"actions":[67076097]},"flow-node-inventory:manufacturer":"Nicira, Inc.","flow-node-inventory:description":"s1","flow-node-inventory:hardware":"Open vSwitch","flow-node-inventory:switch-features":{"max_tables":254,"capabilities":["flow-node-inventory:flow-feature-capability-table-stats","flow-node-inventory:flow-feature-capability-group-stats","flow-node-inventory:flow-feature-capability-queue-stats","flow-node-inventory:flow-feature-capability-flow-stats","flow-node-inventory:flow-feature-capability-port-stats"],"max_buffers":0},"flow-node-inventory:snapshot-gathering-status-start":{"begin":"2026-04-08T01:00:41.177Z"},"flow-node-inventory:software":"2.17.11","node-connector":[{"id":"openflow:1:1","flow-node-inventory:port-number":1,"flow-node-inventory:hardware-address":"92:f4:e8:ea:c6:ad","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s1-eth1","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"45","received":"10"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":136,"nanosecond":525000000},"bytes":{"transmitted":"3795","received":"796"},"receive-crc-error":"0"}},{"id":"openflow:1:LOCAL","flow-node-inventory:port-number":4294967294,"flow-node-inventory:hardware-address":"e6:45:d0:5b:c7:49","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s1","flow-node-inventory:current-feature":"","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":0,"flow-node-inventory:state":{"live":false,"blocked":false,"link-down":true},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"PORT-DOWN","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"0","received":"0"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":136,"nanosecond":521000000},"bytes":{"transmitted":"0","received":"0"},"receive-crc-error":"0"}},{"id":"openflow:1:2","flow-node-inventory:port-number":2,"flow-node-inventory:hardware-address":"42:46:a8:4b:8b:86","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s1-eth2","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"39","received":"43"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":136,"nanosecond":525000000},"bytes":{"transmitted":"3267","received":"3619"},"receive-crc-error":"0"}}],"flow-node-inventory:ip-address":"10.30.170.192","flow-node-inventory:serial-number":"None","flow-node-inventory:group":[{"group-id":56,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":56000}}],"watch_group":56000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":56,"duration":{"second":132,"nanosecond":449000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":22,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":22000}}],"watch_group":22000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":22,"duration":{"second":132,"nanosecond":449000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":99,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":99000}}],"watch_group":99000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":99,"duration":{"second":132,"nanosecond":449000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":34000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":34000,"duration":{"second":135,"nanosecond":142000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":89000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":89000,"duration":{"second":135,"nanosecond":142000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":60000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":60000,"duration":{"second":135,"nanosecond":142000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":91000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":91000,"duration":{"second":135,"nanosecond":142000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":57,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":57000}}],"watch_group":57000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":57,"duration":{"second":132,"nanosecond":449000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":23,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":23000}}],"watch_group":23000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":23,"duration":{"second":131,"nanosecond":949000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":14000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":14000,"duration":{"second":135,"nanosecond":142000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":98,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":98000}}],"watch_group":98000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":98,"duration":{"second":131,"nanosecond":949000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":56000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":56000,"duration":{"second":135,"nanosecond":142000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":85000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":85000,"duration":{"second":135,"nanosecond":142000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":54,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":54000}}],"watch_group":54000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":54,"duration":{"second":131,"nanosecond":949000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":24,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":24000}}],"watch_group":24000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":24,"duration":{"second":131,"nanosecond":949000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":36000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":36000,"duration":{"second":135,"nanosecond":142000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":87000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":87000,"duration":{"second":135,"nanosecond":142000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":59000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":59000,"duration":{"second":135,"nanosecond":142000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":25000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":25000,"duration":{"second":135,"nanosecond":142000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":43000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":43000,"duration":{"second":135,"nanosecond":142000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":55,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":55000}}],"watch_group":55000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":55,"duration":{"second":131,"nanosecond":949000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":25,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":25000}}],"watch_group":25000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":25,"duration":{"second":134,"nanosecond":956000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":100,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":100000}}],"watch_group":100000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":100,"duration":{"second":131,"nanosecond":949000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":58000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":58000,"duration":{"second":134,"nanosecond":953000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":86000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":86000,"duration":{"second":134,"nanosecond":953000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":60,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":60000}}],"watch_group":60000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":60,"duration":{"second":134,"nanosecond":953000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":26,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":26000}}],"watch_group":26000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":26,"duration":{"second":131,"nanosecond":949000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":41000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":41000,"duration":{"second":134,"nanosecond":953000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":95,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":95000}}],"watch_group":95000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":95,"duration":{"second":131,"nanosecond":949000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":82000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":82000,"duration":{"second":134,"nanosecond":953000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":61,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":61000}}],"watch_group":61000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":61,"duration":{"second":131,"nanosecond":949000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":27,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":27000}}],"watch_group":27000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":27,"duration":{"second":131,"nanosecond":949000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":94,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":94000}}],"watch_group":94000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":94,"duration":{"second":131,"nanosecond":949000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":98000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":98000,"duration":{"second":134,"nanosecond":953000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":27000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":27000,"duration":{"second":134,"nanosecond":953000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":57000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":57000,"duration":{"second":134,"nanosecond":953000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":16000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":16000,"duration":{"second":134,"nanosecond":953000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":83000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":83000,"duration":{"second":134,"nanosecond":953000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":58,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":58000}}],"watch_group":58000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":58,"duration":{"second":134,"nanosecond":450000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":28,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":28000}}],"watch_group":28000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":28,"duration":{"second":131,"nanosecond":949000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":97,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":97000}}],"watch_group":97000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":97,"duration":{"second":131,"nanosecond":949000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":100000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":100000,"duration":{"second":134,"nanosecond":450000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":59,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":59000}}],"watch_group":59000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":59,"duration":{"second":134,"nanosecond":450000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":38000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":38000,"duration":{"second":134,"nanosecond":450000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":29,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":29000}}],"watch_group":29000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":29,"duration":{"second":131,"nanosecond":949000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":96,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":96000}}],"watch_group":96000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":96,"duration":{"second":131,"nanosecond":949000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":84000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":84000,"duration":{"second":134,"nanosecond":450000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":64,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":64000}}],"watch_group":64000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":64,"duration":{"second":131,"nanosecond":949000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":30,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":30000}}],"watch_group":30000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":30,"duration":{"second":131,"nanosecond":949000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":4,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":4000}}],"watch_group":4000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":4,"duration":{"second":131,"nanosecond":949000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":91,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":91000}}],"watch_group":91000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":91,"duration":{"second":134,"nanosecond":450000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":7000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":7000,"duration":{"second":134,"nanosecond":450000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":29000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":29000,"duration":{"second":134,"nanosecond":450000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":65,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":65000}}],"watch_group":65000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":65,"duration":{"second":131,"nanosecond":949000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":31,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":31000}}],"watch_group":31000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":31,"duration":{"second":131,"nanosecond":949000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":5,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":5000}}],"watch_group":5000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":5,"duration":{"second":131,"nanosecond":949000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":90,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":90000}}],"watch_group":90000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":90,"duration":{"second":131,"nanosecond":949000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":18000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":18000,"duration":{"second":134,"nanosecond":450000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":62,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":62000}}],"watch_group":62000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":62,"duration":{"second":131,"nanosecond":949000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":65000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":65000,"duration":{"second":134,"nanosecond":450000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":32,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":32000}}],"watch_group":32000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":32,"duration":{"second":131,"nanosecond":949000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":2,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":2000}}],"watch_group":2000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":2,"duration":{"second":131,"nanosecond":949000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":93,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":93000}}],"watch_group":93000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":93,"duration":{"second":131,"nanosecond":949000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":64000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":64000,"duration":{"second":134,"nanosecond":450000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":63,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":63000}}],"watch_group":63000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":63,"duration":{"second":131,"nanosecond":949000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":33,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":33000}}],"watch_group":33000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":33,"duration":{"second":131,"nanosecond":949000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":3,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":3000}}],"watch_group":3000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":3,"duration":{"second":131,"nanosecond":944000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":80000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":80000,"duration":{"second":134,"nanosecond":450000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":9000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":9000,"duration":{"second":134,"nanosecond":450000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":92,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":92000}}],"watch_group":92000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":92,"duration":{"second":131,"nanosecond":944000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":5000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":5000,"duration":{"second":134,"nanosecond":450000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":20000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":20000,"duration":{"second":134,"nanosecond":450000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":81000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":81000,"duration":{"second":134,"nanosecond":450000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":97000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":97000,"duration":{"second":134,"nanosecond":450000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":31000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":31000,"duration":{"second":134,"nanosecond":450000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":68,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":68000}}],"watch_group":68000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":68,"duration":{"second":131,"nanosecond":944000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":11000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":11000,"duration":{"second":134,"nanosecond":450000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":34,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":34000}}],"watch_group":34000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":34,"duration":{"second":134,"nanosecond":450000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":78000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":78000,"duration":{"second":134,"nanosecond":450000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":87,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":87000}}],"watch_group":87000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":87,"duration":{"second":134,"nanosecond":450000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":93000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":93000,"duration":{"second":134,"nanosecond":450000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":63000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":63000,"duration":{"second":134,"nanosecond":450000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":69,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":69000}}],"watch_group":69000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":69,"duration":{"second":131,"nanosecond":944000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":35,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":35000}}],"watch_group":35000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":35,"duration":{"second":131,"nanosecond":944000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":33000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":33000,"duration":{"second":134,"nanosecond":450000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":79000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":79000,"duration":{"second":134,"nanosecond":448000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":86,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":86000}}],"watch_group":86000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":86,"duration":{"second":134,"nanosecond":448000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":62000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":62000,"duration":{"second":134,"nanosecond":448000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":66,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":66000}}],"watch_group":66000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":66,"duration":{"second":131,"nanosecond":944000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":77000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":77000,"duration":{"second":134,"nanosecond":448000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":36,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":36000}}],"watch_group":36000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":36,"duration":{"second":134,"nanosecond":448000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":89,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":89000}}],"watch_group":89000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":89,"duration":{"second":134,"nanosecond":447000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":22000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":22000,"duration":{"second":134,"nanosecond":447000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":95000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":95000,"duration":{"second":134,"nanosecond":447000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":67,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":67000}}],"watch_group":67000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":67,"duration":{"second":131,"nanosecond":944000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":37,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":37000}}],"watch_group":37000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":37,"duration":{"second":131,"nanosecond":944000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":88,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":88000}}],"watch_group":88000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":88,"duration":{"second":131,"nanosecond":944000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":61000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":61000,"duration":{"second":134,"nanosecond":447000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":3000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":3000,"duration":{"second":134,"nanosecond":446000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":73,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":73000}}],"watch_group":73000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":73,"duration":{"second":131,"nanosecond":944000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":39,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":39000}}],"watch_group":39000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":39,"duration":{"second":131,"nanosecond":944000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":13,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":13000}}],"watch_group":13000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":13,"duration":{"second":131,"nanosecond":944000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":74000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":74000,"duration":{"second":134,"nanosecond":446000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":15000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":15000,"duration":{"second":134,"nanosecond":446000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":44000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":44000,"duration":{"second":134,"nanosecond":446000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":45000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":45000,"duration":{"second":134,"nanosecond":446000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":68000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":68000,"duration":{"second":134,"nanosecond":446000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":72,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":72000}}],"watch_group":72000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":72,"duration":{"second":131,"nanosecond":944000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":38,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":38000}}],"watch_group":38000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":38,"duration":{"second":133,"nanosecond":958000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":75000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":75000,"duration":{"second":133,"nanosecond":958000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":12,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":12000}}],"watch_group":12000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":12,"duration":{"second":131,"nanosecond":944000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":35000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":35000,"duration":{"second":133,"nanosecond":958000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":24000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":24000,"duration":{"second":133,"nanosecond":957000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":90000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":90000,"duration":{"second":133,"nanosecond":957000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":71,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":71000}}],"watch_group":71000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":71,"duration":{"second":131,"nanosecond":944000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":41,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":41000}}],"watch_group":41000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":41,"duration":{"second":133,"nanosecond":957000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":42000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":42000,"duration":{"second":133,"nanosecond":957000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":11,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":11000}}],"watch_group":11000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":11,"duration":{"second":133,"nanosecond":956000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":92000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":92000,"duration":{"second":133,"nanosecond":956000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":46000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":46000,"duration":{"second":133,"nanosecond":956000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":67000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":67000,"duration":{"second":133,"nanosecond":956000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":70,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":70000}}],"watch_group":70000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":70,"duration":{"second":131,"nanosecond":944000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":76000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":76000,"duration":{"second":133,"nanosecond":955000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":40,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":40000}}],"watch_group":40000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":40,"duration":{"second":131,"nanosecond":944000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":13000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":13000,"duration":{"second":133,"nanosecond":952000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":10,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":10000}}],"watch_group":10000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":10,"duration":{"second":131,"nanosecond":944000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":88000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":88000,"duration":{"second":133,"nanosecond":952000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":47000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":47000,"duration":{"second":133,"nanosecond":952000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":66000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":66000,"duration":{"second":133,"nanosecond":951000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":77,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":77000}}],"watch_group":77000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":77,"duration":{"second":133,"nanosecond":951000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":43,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":43000}}],"watch_group":43000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":43,"duration":{"second":133,"nanosecond":951000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":9,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":9000}}],"watch_group":9000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":9,"duration":{"second":133,"nanosecond":951000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":99000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":99000,"duration":{"second":133,"nanosecond":951000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":26000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":26000,"duration":{"second":133,"nanosecond":951000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":70000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":70000,"duration":{"second":133,"nanosecond":951000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":76,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":76000}}],"watch_group":76000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":76,"duration":{"second":133,"nanosecond":457000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":42,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":42000}}],"watch_group":42000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":42,"duration":{"second":133,"nanosecond":455000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":8,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":8000}}],"watch_group":8000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":8,"duration":{"second":131,"nanosecond":944000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":37000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":37000,"duration":{"second":133,"nanosecond":455000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":49000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":49000,"duration":{"second":133,"nanosecond":455000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":71000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":71000,"duration":{"second":133,"nanosecond":455000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":48000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":48000,"duration":{"second":133,"nanosecond":455000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":75,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":75000}}],"watch_group":75000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":75,"duration":{"second":133,"nanosecond":455000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":45,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":45000}}],"watch_group":45000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":45,"duration":{"second":133,"nanosecond":452000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":7,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":7000}}],"watch_group":7000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":7,"duration":{"second":133,"nanosecond":452000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":39000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":39000,"duration":{"second":133,"nanosecond":452000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":73000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":73000,"duration":{"second":133,"nanosecond":451000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":69000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":69000,"duration":{"second":133,"nanosecond":451000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":17000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":17000,"duration":{"second":133,"nanosecond":451000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":28000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":28000,"duration":{"second":133,"nanosecond":451000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":74,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":74000}}],"watch_group":74000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":74,"duration":{"second":133,"nanosecond":451000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":44,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":44000}}],"watch_group":44000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":44,"duration":{"second":133,"nanosecond":451000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":6,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":6000}}],"watch_group":6000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":6,"duration":{"second":131,"nanosecond":944000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":40000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":40000,"duration":{"second":133,"nanosecond":451000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":81,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":81000}}],"watch_group":81000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":81,"duration":{"second":133,"nanosecond":451000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":47,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":47000}}],"watch_group":47000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":47,"duration":{"second":133,"nanosecond":451000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":21,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":21000}}],"watch_group":21000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":21,"duration":{"second":131,"nanosecond":944000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":8000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":8000,"duration":{"second":133,"nanosecond":451000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":19000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":19000,"duration":{"second":133,"nanosecond":451000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":96000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":96000,"duration":{"second":133,"nanosecond":451000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":80,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":80000}}],"watch_group":80000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":80,"duration":{"second":133,"nanosecond":449000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":46,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":46000}}],"watch_group":46000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":46,"duration":{"second":133,"nanosecond":449000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":20,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":20000}}],"watch_group":20000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":20,"duration":{"second":133,"nanosecond":449000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":52000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":52000,"duration":{"second":133,"nanosecond":449000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":6000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":6000,"duration":{"second":133,"nanosecond":449000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":79,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":79000}}],"watch_group":79000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":79,"duration":{"second":133,"nanosecond":449000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":49,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":49000}}],"watch_group":49000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":49,"duration":{"second":132,"nanosecond":956000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":19,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":19000}}],"watch_group":19000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":19,"duration":{"second":132,"nanosecond":956000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":50000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":50000,"duration":{"second":132,"nanosecond":956000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":72000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":72000,"duration":{"second":132,"nanosecond":956000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":30000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":30000,"duration":{"second":132,"nanosecond":955000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":78,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":78000}}],"watch_group":78000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":78,"duration":{"second":132,"nanosecond":955000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":48,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":48000}}],"watch_group":48000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":48,"duration":{"second":132,"nanosecond":954000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":18,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":18000}}],"watch_group":18000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":18,"duration":{"second":132,"nanosecond":954000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":51000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":51000,"duration":{"second":132,"nanosecond":954000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":85,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":85000}}],"watch_group":85000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":85,"duration":{"second":132,"nanosecond":954000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":55000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":55000,"duration":{"second":132,"nanosecond":953000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":51,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":51000}}],"watch_group":51000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":51,"duration":{"second":132,"nanosecond":449000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":17,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":17000}}],"watch_group":17000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":17,"duration":{"second":132,"nanosecond":449000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":21000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":21000,"duration":{"second":132,"nanosecond":449000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":4000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":4000,"duration":{"second":132,"nanosecond":449000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":84,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":84000}}],"watch_group":84000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":84,"duration":{"second":132,"nanosecond":449000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":50,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":50000}}],"watch_group":50000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":50,"duration":{"second":132,"nanosecond":449000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":16,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":16000}}],"watch_group":16000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":16,"duration":{"second":132,"nanosecond":449000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":10000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":10000,"duration":{"second":132,"nanosecond":449000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":54000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":54000,"duration":{"second":132,"nanosecond":449000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":83,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":83000}}],"watch_group":83000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":83,"duration":{"second":132,"nanosecond":449000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":32000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":32000,"duration":{"second":132,"nanosecond":449000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":53,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":53000}}],"watch_group":53000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":53,"duration":{"second":131,"nanosecond":944000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":15,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":15000}}],"watch_group":15000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":15,"duration":{"second":132,"nanosecond":449000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":2000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":2000,"duration":{"second":132,"nanosecond":449000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":82,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":82000}}],"watch_group":82000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":82,"duration":{"second":132,"nanosecond":449000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":52,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":52000}}],"watch_group":52000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":52,"duration":{"second":132,"nanosecond":449000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":14,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":14000}}],"watch_group":14000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":14,"duration":{"second":132,"nanosecond":449000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":53000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":53000,"duration":{"second":132,"nanosecond":449000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":12000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":12000,"duration":{"second":132,"nanosecond":449000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":23000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":23000,"duration":{"second":132,"nanosecond":449000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":94000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":94000,"duration":{"second":132,"nanosecond":449000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}}],"flow-node-inventory:snapshot-gathering-status-end":{"succeeded":true,"end":"2026-04-08T01:00:41.236Z"}},{"id":"openflow:2","flow-node-inventory:port-number":54944,"flow-node-inventory:table":[{"id":62,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":28,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":2,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":224,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":181,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":147,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":106,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":61,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":27,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":1,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":223,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":182,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":148,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":105,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":60,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":30,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":0,"flow":[{"id":"69","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.69/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":69}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":288000000}},"flags":""},{"id":"60","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.60/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":60}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":288000000}},"flags":""},{"id":"68","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.68/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":68}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":288000000}},"flags":""},{"id":"67","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.67/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":67}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":288000000}},"flags":""},{"id":"66","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.66/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":66}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":288000000}},"flags":""},{"id":"65","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.65/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":65}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":288000000}},"flags":""},{"id":"64","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.64/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":64}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":288000000}},"flags":""},{"id":"63","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.63/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":63}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":288000000}},"flags":""},{"id":"62","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.62/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":62}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":288000000}},"flags":""},{"id":"61","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.61/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":61}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":288000000}},"flags":""},{"id":"100","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.100/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":100}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":288000000}},"flags":""},{"id":"71","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.71/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":71}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":288000000}},"flags":""},{"id":"70","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.70/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":70}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":288000000}},"flags":""},{"id":"79","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.79/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":79}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":288000000}},"flags":""},{"id":"78","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.78/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":78}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":288000000}},"flags":""},{"id":"77","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.77/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":77}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":288000000}},"flags":""},{"id":"76","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.76/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":76}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":288000000}},"flags":""},{"id":"75","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.75/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":75}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":288000000}},"flags":""},{"id":"74","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.74/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":74}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":288000000}},"flags":""},{"id":"73","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.73/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":73}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":288000000}},"flags":""},{"id":"72","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.72/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":72}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":288000000}},"flags":""},{"id":"82","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.82/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":82}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":288000000}},"flags":""},{"id":"81","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.81/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":81}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":288000000}},"flags":""},{"id":"80","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.80/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":80}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":288000000}},"flags":""},{"id":"89","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.89/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":89}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":288000000}},"flags":""},{"id":"88","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.88/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":88}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":288000000}},"flags":""},{"id":"87","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.87/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":87}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":288000000}},"flags":""},{"id":"86","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.86/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":86}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":288000000}},"flags":""},{"id":"85","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.85/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":85}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":288000000}},"flags":""},{"id":"84","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.84/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":84}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":288000000}},"flags":""},{"id":"83","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.83/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":83}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":288000000}},"flags":""},{"id":"19","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.19/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":19}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":288000000}},"flags":""},{"id":"18","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.18/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":18}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":288000000}},"flags":""},{"id":"17","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.17/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":17}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":288000000}},"flags":""},{"id":"16","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.16/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":16}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":288000000}},"flags":""},{"id":"15","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.15/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":15}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":288000000}},"flags":""},{"id":"14","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.14/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":14}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":288000000}},"flags":""},{"id":"2","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.2/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":2}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":288000000}},"flags":""},{"id":"93","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.93/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":93}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":287000000}},"flags":""},{"id":"92","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.92/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":92}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":287000000}},"flags":""},{"id":"91","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.91/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":91}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":287000000}},"flags":""},{"id":"90","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.90/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":90}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":287000000}},"flags":""},{"id":"13","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.13/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":13}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":287000000}},"flags":""},{"id":"12","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.12/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":12}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":287000000}},"flags":""},{"id":"11","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.11/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":11}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":287000000}},"flags":""},{"id":"99","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.99/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":99}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":287000000}},"flags":""},{"id":"10","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.10/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":10}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":287000000}},"flags":""},{"id":"98","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.98/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":98}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":287000000}},"flags":""},{"id":"97","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.97/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":97}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":287000000}},"flags":""},{"id":"96","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.96/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":96}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":287000000}},"flags":""},{"id":"95","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.95/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":95}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":287000000}},"flags":""},{"id":"94","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.94/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":94}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":287000000}},"flags":""},{"id":"29","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.29/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":29}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":287000000}},"flags":""},{"id":"28","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.28/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":28}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":287000000}},"flags":""},{"id":"27","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.27/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":27}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":287000000}},"flags":""},{"id":"26","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.26/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":26}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":287000000}},"flags":""},{"id":"25","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.25/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":25}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":287000000}},"flags":""},{"id":"9","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.9/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":9}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":287000000}},"flags":""},{"id":"8","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.8/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":8}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":287000000}},"flags":""},{"id":"7","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.7/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":7}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":287000000}},"flags":""},{"id":"6","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.6/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":6}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":287000000}},"flags":""},{"id":"5","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.5/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":5}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":287000000}},"flags":""},{"id":"4","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.4/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":4}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":287000000}},"flags":""},{"id":"3","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.3/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":3}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":287000000}},"flags":""},{"id":"24","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.24/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":24}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":287000000}},"flags":""},{"id":"23","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.23/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":23}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":287000000}},"flags":""},{"id":"22","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.22/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":22}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":287000000}},"flags":""},{"id":"21","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.21/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":21}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":287000000}},"flags":""},{"id":"20","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.20/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":20}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":287000000}},"flags":""},{"id":"39","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.39/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":39}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":287000000}},"flags":""},{"id":"38","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.38/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":38}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":287000000}},"flags":""},{"id":"37","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.37/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":37}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":287000000}},"flags":""},{"id":"36","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.36/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":36}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":287000000}},"flags":""},{"id":"35","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.35/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":35}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":287000000}},"flags":""},{"id":"34","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.34/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":34}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":287000000}},"flags":""},{"id":"33","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.33/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":33}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":287000000}},"flags":""},{"id":"32","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.32/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":32}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":287000000}},"flags":""},{"id":"31","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.31/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":31}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":287000000}},"flags":""},{"id":"30","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.30/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":30}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":287000000}},"flags":""},{"id":"49","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.49/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":49}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":287000000}},"flags":""},{"id":"48","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.48/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":48}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":287000000}},"flags":""},{"id":"47","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.47/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":47}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":287000000}},"flags":""},{"id":"#UF$TABLE*0-2","table_id":0,"priority":0,"cookie_mask":"0","idle-timeout":0,"cookie":"10","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"output-action":{"max-length":65535,"output-node-connector":"CONTROLLER"}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"64","byte-count":"5260","duration":{"second":131,"nanosecond":166000000}},"flags":"SEND_FLOW_REM"},{"id":"46","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.46/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":46}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":287000000}},"flags":""},{"id":"45","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.45/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":45}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":287000000}},"flags":""},{"id":"44","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.44/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":44}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":287000000}},"flags":""},{"id":"43","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.43/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":43}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":287000000}},"flags":""},{"id":"42","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.42/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":42}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":287000000}},"flags":""},{"id":"41","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.41/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":41}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":287000000}},"flags":""},{"id":"40","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.40/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":40}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":287000000}},"flags":""},{"id":"59","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.59/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":59}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":287000000}},"flags":""},{"id":"58","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.58/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":58}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":287000000}},"flags":""},{"id":"57","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.57/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":57}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":287000000}},"flags":""},{"id":"56","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.56/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":56}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":287000000}},"flags":""},{"id":"55","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.55/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":55}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":287000000}},"flags":""},{"id":"54","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.54/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":54}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":287000000}},"flags":""},{"id":"53","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.53/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":53}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":287000000}},"flags":""},{"id":"52","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.52/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":52}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":286000000}},"flags":""},{"id":"51","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.51/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":51}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":286000000}},"flags":""},{"id":"50","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.50/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":50}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":131,"nanosecond":286000000}},"flags":""}],"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"86","active-flows":100,"packets-matched":"74"}},{"id":226,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":179,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":149,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":104,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":59,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":29,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":225,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":180,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":150,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":103,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":66,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":32,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":220,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":185,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":151,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":102,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":65,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":31,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":253,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":219,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":186,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":152,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":101,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":64,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":34,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":252,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":222,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":183,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":153,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":100,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":63,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":33,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":251,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":221,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":184,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":154,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":99,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":54,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":20,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":250,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":216,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":189,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":155,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":129,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":114,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":53,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":19,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":249,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":215,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":190,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":156,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":130,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":113,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":52,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":22,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":248,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":218,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":187,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":157,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":112,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":51,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":21,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":247,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":217,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":188,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":158,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":128,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":111,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":58,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":24,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":246,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":212,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":193,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":159,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":110,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":57,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":23,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":245,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":211,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":194,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":160,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":109,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":56,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":26,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":244,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":214,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":191,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":161,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":108,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":55,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":25,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":243,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":213,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":192,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":162,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":107,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":77,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":43,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":17,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":239,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":198,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":164,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":138,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":119,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":89,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":78,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":44,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":18,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":240,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":197,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":163,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":137,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":120,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":90,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":75,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":45,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":15,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":241,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":196,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":166,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":136,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":121,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":87,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":76,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":46,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":16,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":242,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":195,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":165,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":135,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":122,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":88,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":81,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":47,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":13,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":235,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":202,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":168,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":134,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":115,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":85,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":82,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":48,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":14,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":236,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":201,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":167,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":133,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":116,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":86,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":79,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":49,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":11,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":237,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":200,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":170,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":132,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":117,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":83,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":80,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":50,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":12,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":238,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":199,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":169,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":131,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":118,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":84,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":69,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":35,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":9,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":231,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":206,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":172,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":146,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":127,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":97,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":70,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":36,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":10,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":232,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":205,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":171,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":145,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":98,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":67,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":37,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":7,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":233,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":204,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":174,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":144,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":95,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":68,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":38,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":8,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":234,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":203,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":173,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":143,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":96,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":73,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":39,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":5,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":227,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":210,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":176,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":142,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":123,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":93,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":74,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":40,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":6,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":228,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":209,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":175,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":141,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":124,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":94,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":71,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":41,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":3,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":229,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":208,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":178,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":140,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":125,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":91,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":72,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":42,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":4,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":230,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":207,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":177,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":139,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":126,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":92,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}}],"opendaylight-group-statistics:group-features":{"max-groups":[4294967040],"group-types-supported":["opendaylight-group-types:group-all","opendaylight-group-types:group-ff","opendaylight-group-types:group-select","opendaylight-group-types:group-indirect"],"group-capabilities-supported":["opendaylight-group-types:chaining","opendaylight-group-types:select-weight","opendaylight-group-types:select-liveness"],"actions":[67076097]},"flow-node-inventory:manufacturer":"Nicira, Inc.","flow-node-inventory:description":"s2","flow-node-inventory:hardware":"Open vSwitch","flow-node-inventory:switch-features":{"max_tables":254,"capabilities":["flow-node-inventory:flow-feature-capability-table-stats","flow-node-inventory:flow-feature-capability-group-stats","flow-node-inventory:flow-feature-capability-queue-stats","flow-node-inventory:flow-feature-capability-flow-stats","flow-node-inventory:flow-feature-capability-port-stats"],"max_buffers":0},"flow-node-inventory:snapshot-gathering-status-start":{"begin":"2026-04-08T01:00:41.174Z"},"flow-node-inventory:software":"2.17.11","node-connector":[{"id":"openflow:2:3","flow-node-inventory:port-number":3,"flow-node-inventory:hardware-address":"da:7c:fc:7d:24:d4","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s2-eth3","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"44","received":"39"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":136,"nanosecond":505000000},"bytes":{"transmitted":"3689","received":"3267"},"receive-crc-error":"0"}},{"id":"openflow:2:LOCAL","flow-node-inventory:port-number":4294967294,"flow-node-inventory:hardware-address":"ee:be:cf:9b:06:44","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s2","flow-node-inventory:current-feature":"","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":0,"flow-node-inventory:state":{"live":false,"blocked":false,"link-down":true},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"PORT-DOWN","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"0","received":"0"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":136,"nanosecond":500000000},"bytes":{"transmitted":"0","received":"0"},"receive-crc-error":"0"}},{"id":"openflow:2:2","flow-node-inventory:port-number":2,"flow-node-inventory:hardware-address":"76:f5:91:ad:d8:c6","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s2-eth2","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"43","received":"39"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":136,"nanosecond":505000000},"bytes":{"transmitted":"3619","received":"3267"},"receive-crc-error":"0"}},{"id":"openflow:2:1","flow-node-inventory:port-number":1,"flow-node-inventory:hardware-address":"96:61:91:36:76:0b","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s2-eth1","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"45","received":"11"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":136,"nanosecond":505000000},"bytes":{"transmitted":"3795","received":"866"},"receive-crc-error":"0"}}],"flow-node-inventory:ip-address":"10.30.170.192","flow-node-inventory:serial-number":"None","flow-node-inventory:group":[{"group-id":56,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":56000}}],"watch_group":56000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":56,"duration":{"second":132,"nanosecond":448000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":22,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":22000}}],"watch_group":22000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":22,"duration":{"second":132,"nanosecond":448000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":99,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":99000}}],"watch_group":99000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":99,"duration":{"second":132,"nanosecond":448000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":34000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":34000,"duration":{"second":135,"nanosecond":141000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":89000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":89000,"duration":{"second":135,"nanosecond":141000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":60000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":60000,"duration":{"second":135,"nanosecond":141000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":91000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":91000,"duration":{"second":135,"nanosecond":141000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":57,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":57000}}],"watch_group":57000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":57,"duration":{"second":132,"nanosecond":448000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":23,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":23000}}],"watch_group":23000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":23,"duration":{"second":131,"nanosecond":951000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":14000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":14000,"duration":{"second":135,"nanosecond":141000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":98,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":98000}}],"watch_group":98000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":98,"duration":{"second":131,"nanosecond":951000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":56000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":56000,"duration":{"second":135,"nanosecond":141000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":85000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":85000,"duration":{"second":135,"nanosecond":141000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":54,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":54000}}],"watch_group":54000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":54,"duration":{"second":131,"nanosecond":951000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":24,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":24000}}],"watch_group":24000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":24,"duration":{"second":131,"nanosecond":951000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":36000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":36000,"duration":{"second":135,"nanosecond":141000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":87000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":87000,"duration":{"second":135,"nanosecond":141000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":59000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":59000,"duration":{"second":135,"nanosecond":141000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":25000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":25000,"duration":{"second":135,"nanosecond":141000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":43000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":43000,"duration":{"second":135,"nanosecond":141000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":55,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":55000}}],"watch_group":55000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":55,"duration":{"second":131,"nanosecond":951000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":25,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":25000}}],"watch_group":25000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":25,"duration":{"second":134,"nanosecond":957000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":100,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":100000}}],"watch_group":100000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":100,"duration":{"second":131,"nanosecond":951000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":58000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":58000,"duration":{"second":134,"nanosecond":957000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":86000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":86000,"duration":{"second":134,"nanosecond":957000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":60,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":60000}}],"watch_group":60000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":60,"duration":{"second":134,"nanosecond":956000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":26,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":26000}}],"watch_group":26000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":26,"duration":{"second":131,"nanosecond":951000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":41000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":41000,"duration":{"second":134,"nanosecond":956000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":95,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":95000}}],"watch_group":95000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":95,"duration":{"second":131,"nanosecond":951000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":82000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":82000,"duration":{"second":134,"nanosecond":956000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":61,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":61000}}],"watch_group":61000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":61,"duration":{"second":131,"nanosecond":951000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":27,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":27000}}],"watch_group":27000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":27,"duration":{"second":131,"nanosecond":951000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":94,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":94000}}],"watch_group":94000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":94,"duration":{"second":131,"nanosecond":951000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":98000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":98000,"duration":{"second":134,"nanosecond":956000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":27000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":27000,"duration":{"second":134,"nanosecond":956000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":57000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":57000,"duration":{"second":134,"nanosecond":956000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":16000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":16000,"duration":{"second":134,"nanosecond":956000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":83000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":83000,"duration":{"second":134,"nanosecond":956000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":58,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":58000}}],"watch_group":58000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":58,"duration":{"second":134,"nanosecond":456000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":28,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":28000}}],"watch_group":28000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":28,"duration":{"second":131,"nanosecond":951000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":97,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":97000}}],"watch_group":97000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":97,"duration":{"second":131,"nanosecond":951000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":100000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":100000,"duration":{"second":134,"nanosecond":456000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":59,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":59000}}],"watch_group":59000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":59,"duration":{"second":134,"nanosecond":456000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":38000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":38000,"duration":{"second":134,"nanosecond":456000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":29,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":29000}}],"watch_group":29000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":29,"duration":{"second":131,"nanosecond":951000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":96,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":96000}}],"watch_group":96000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":96,"duration":{"second":131,"nanosecond":951000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":84000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":84000,"duration":{"second":134,"nanosecond":456000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":64,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":64000}}],"watch_group":64000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":64,"duration":{"second":131,"nanosecond":951000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":30,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":30000}}],"watch_group":30000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":30,"duration":{"second":131,"nanosecond":951000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":4,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":4000}}],"watch_group":4000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":4,"duration":{"second":131,"nanosecond":947000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":91,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":91000}}],"watch_group":91000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":91,"duration":{"second":134,"nanosecond":456000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":7000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":7000,"duration":{"second":134,"nanosecond":456000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":29000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":29000,"duration":{"second":134,"nanosecond":455000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":65,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":65000}}],"watch_group":65000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":65,"duration":{"second":131,"nanosecond":947000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":31,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":31000}}],"watch_group":31000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":31,"duration":{"second":131,"nanosecond":947000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":5,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":5000}}],"watch_group":5000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":5,"duration":{"second":131,"nanosecond":947000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":90,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":90000}}],"watch_group":90000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":90,"duration":{"second":131,"nanosecond":947000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":18000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":18000,"duration":{"second":134,"nanosecond":455000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":62,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":62000}}],"watch_group":62000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":62,"duration":{"second":131,"nanosecond":947000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":65000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":65000,"duration":{"second":134,"nanosecond":455000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":32,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":32000}}],"watch_group":32000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":32,"duration":{"second":131,"nanosecond":947000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":2,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":2000}}],"watch_group":2000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":2,"duration":{"second":131,"nanosecond":947000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":93,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":93000}}],"watch_group":93000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":93,"duration":{"second":131,"nanosecond":947000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":64000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":64000,"duration":{"second":134,"nanosecond":454000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":63,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":63000}}],"watch_group":63000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":63,"duration":{"second":131,"nanosecond":947000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":33,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":33000}}],"watch_group":33000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":33,"duration":{"second":131,"nanosecond":947000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":3,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":3000}}],"watch_group":3000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":3,"duration":{"second":131,"nanosecond":947000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":80000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":80000,"duration":{"second":134,"nanosecond":454000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":9000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":9000,"duration":{"second":134,"nanosecond":454000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":92,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":92000}}],"watch_group":92000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":92,"duration":{"second":131,"nanosecond":947000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":5000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":5000,"duration":{"second":134,"nanosecond":450000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":20000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":20000,"duration":{"second":134,"nanosecond":450000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":81000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":81000,"duration":{"second":134,"nanosecond":450000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":97000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":97000,"duration":{"second":134,"nanosecond":450000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":31000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":31000,"duration":{"second":134,"nanosecond":450000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":68,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":68000}}],"watch_group":68000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":68,"duration":{"second":131,"nanosecond":947000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":11000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":11000,"duration":{"second":134,"nanosecond":450000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":34,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":34000}}],"watch_group":34000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":34,"duration":{"second":134,"nanosecond":450000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":78000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":78000,"duration":{"second":134,"nanosecond":450000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":87,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":87000}}],"watch_group":87000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":87,"duration":{"second":134,"nanosecond":450000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":93000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":93000,"duration":{"second":134,"nanosecond":450000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":63000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":63000,"duration":{"second":134,"nanosecond":450000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":69,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":69000}}],"watch_group":69000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":69,"duration":{"second":131,"nanosecond":947000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":35,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":35000}}],"watch_group":35000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":35,"duration":{"second":131,"nanosecond":947000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":33000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":33000,"duration":{"second":134,"nanosecond":450000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":79000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":79000,"duration":{"second":134,"nanosecond":450000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":86,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":86000}}],"watch_group":86000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":86,"duration":{"second":134,"nanosecond":450000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":62000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":62000,"duration":{"second":134,"nanosecond":450000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":66,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":66000}}],"watch_group":66000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":66,"duration":{"second":131,"nanosecond":947000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":77000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":77000,"duration":{"second":134,"nanosecond":450000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":36,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":36000}}],"watch_group":36000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":36,"duration":{"second":134,"nanosecond":450000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":89,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":89000}}],"watch_group":89000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":89,"duration":{"second":134,"nanosecond":450000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":22000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":22000,"duration":{"second":134,"nanosecond":448000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":95000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":95000,"duration":{"second":134,"nanosecond":448000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":67,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":67000}}],"watch_group":67000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":67,"duration":{"second":131,"nanosecond":947000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":37,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":37000}}],"watch_group":37000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":37,"duration":{"second":131,"nanosecond":947000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":88,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":88000}}],"watch_group":88000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":88,"duration":{"second":131,"nanosecond":945000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":61000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":61000,"duration":{"second":134,"nanosecond":446000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":3000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":3000,"duration":{"second":134,"nanosecond":446000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":73,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":73000}}],"watch_group":73000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":73,"duration":{"second":131,"nanosecond":945000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":39,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":39000}}],"watch_group":39000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":39,"duration":{"second":131,"nanosecond":945000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":13,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":13000}}],"watch_group":13000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":13,"duration":{"second":131,"nanosecond":945000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":74000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":74000,"duration":{"second":134,"nanosecond":446000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":15000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":15000,"duration":{"second":134,"nanosecond":446000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":44000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":44000,"duration":{"second":134,"nanosecond":446000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":45000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":45000,"duration":{"second":134,"nanosecond":446000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":68000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":68000,"duration":{"second":134,"nanosecond":446000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":72,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":72000}}],"watch_group":72000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":72,"duration":{"second":131,"nanosecond":945000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":38,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":38000}}],"watch_group":38000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":38,"duration":{"second":133,"nanosecond":950000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":75000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":75000,"duration":{"second":133,"nanosecond":950000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":12,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":12000}}],"watch_group":12000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":12,"duration":{"second":131,"nanosecond":945000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":35000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":35000,"duration":{"second":133,"nanosecond":950000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":24000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":24000,"duration":{"second":133,"nanosecond":950000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":90000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":90000,"duration":{"second":133,"nanosecond":950000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":71,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":71000}}],"watch_group":71000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":71,"duration":{"second":131,"nanosecond":945000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":41,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":41000}}],"watch_group":41000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":41,"duration":{"second":133,"nanosecond":950000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":42000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":42000,"duration":{"second":133,"nanosecond":950000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":11,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":11000}}],"watch_group":11000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":11,"duration":{"second":133,"nanosecond":950000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":92000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":92000,"duration":{"second":133,"nanosecond":950000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":46000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":46000,"duration":{"second":133,"nanosecond":950000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":67000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":67000,"duration":{"second":133,"nanosecond":950000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":70,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":70000}}],"watch_group":70000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":70,"duration":{"second":131,"nanosecond":945000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":76000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":76000,"duration":{"second":133,"nanosecond":950000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":40,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":40000}}],"watch_group":40000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":40,"duration":{"second":131,"nanosecond":945000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":13000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":13000,"duration":{"second":133,"nanosecond":950000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":10,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":10000}}],"watch_group":10000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":10,"duration":{"second":131,"nanosecond":945000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":88000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":88000,"duration":{"second":133,"nanosecond":950000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":47000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":47000,"duration":{"second":133,"nanosecond":950000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":66000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":66000,"duration":{"second":133,"nanosecond":950000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":77,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":77000}}],"watch_group":77000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":77,"duration":{"second":133,"nanosecond":950000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":43,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":43000}}],"watch_group":43000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":43,"duration":{"second":133,"nanosecond":950000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":9,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":9000}}],"watch_group":9000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":9,"duration":{"second":133,"nanosecond":950000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":99000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":99000,"duration":{"second":133,"nanosecond":950000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":26000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":26000,"duration":{"second":133,"nanosecond":950000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":70000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":70000,"duration":{"second":133,"nanosecond":950000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":76,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":76000}}],"watch_group":76000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":76,"duration":{"second":133,"nanosecond":446000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":42,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":42000}}],"watch_group":42000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":42,"duration":{"second":133,"nanosecond":446000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":8,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":8000}}],"watch_group":8000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":8,"duration":{"second":131,"nanosecond":945000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":37000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":37000,"duration":{"second":133,"nanosecond":446000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":49000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":49000,"duration":{"second":133,"nanosecond":446000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":71000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":71000,"duration":{"second":133,"nanosecond":446000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":48000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":48000,"duration":{"second":133,"nanosecond":446000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":75,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":75000}}],"watch_group":75000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":75,"duration":{"second":133,"nanosecond":446000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":45,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":45000}}],"watch_group":45000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":45,"duration":{"second":133,"nanosecond":446000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":7,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":7000}}],"watch_group":7000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":7,"duration":{"second":133,"nanosecond":446000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":39000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":39000,"duration":{"second":133,"nanosecond":446000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":73000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":73000,"duration":{"second":133,"nanosecond":446000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":69000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":69000,"duration":{"second":133,"nanosecond":446000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":17000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":17000,"duration":{"second":133,"nanosecond":446000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":28000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":28000,"duration":{"second":133,"nanosecond":446000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":74,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":74000}}],"watch_group":74000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":74,"duration":{"second":133,"nanosecond":446000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":44,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":44000}}],"watch_group":44000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":44,"duration":{"second":133,"nanosecond":446000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":6,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":6000}}],"watch_group":6000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":6,"duration":{"second":131,"nanosecond":945000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":40000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":40000,"duration":{"second":133,"nanosecond":446000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":81,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":81000}}],"watch_group":81000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":81,"duration":{"second":133,"nanosecond":446000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":47,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":47000}}],"watch_group":47000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":47,"duration":{"second":133,"nanosecond":446000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":21,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":21000}}],"watch_group":21000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":21,"duration":{"second":131,"nanosecond":945000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":8000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":8000,"duration":{"second":133,"nanosecond":446000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":19000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":19000,"duration":{"second":133,"nanosecond":446000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":96000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":96000,"duration":{"second":133,"nanosecond":446000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":80,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":80000}}],"watch_group":80000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":80,"duration":{"second":133,"nanosecond":446000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":46,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":46000}}],"watch_group":46000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":46,"duration":{"second":133,"nanosecond":446000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":20,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":20000}}],"watch_group":20000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":20,"duration":{"second":133,"nanosecond":446000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":52000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":52000,"duration":{"second":133,"nanosecond":446000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":6000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":6000,"duration":{"second":133,"nanosecond":446000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":79,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":79000}}],"watch_group":79000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":79,"duration":{"second":133,"nanosecond":446000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":49,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":49000}}],"watch_group":49000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":49,"duration":{"second":132,"nanosecond":955000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":19,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":19000}}],"watch_group":19000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":19,"duration":{"second":132,"nanosecond":955000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":50000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":50000,"duration":{"second":132,"nanosecond":954000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":72000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":72000,"duration":{"second":132,"nanosecond":954000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":30000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":30000,"duration":{"second":132,"nanosecond":954000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":78,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":78000}}],"watch_group":78000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":78,"duration":{"second":132,"nanosecond":953000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":48,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":48000}}],"watch_group":48000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":48,"duration":{"second":132,"nanosecond":952000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":18,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":18000}}],"watch_group":18000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":18,"duration":{"second":132,"nanosecond":952000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":51000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":51000,"duration":{"second":132,"nanosecond":951000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":85,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":85000}}],"watch_group":85000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":85,"duration":{"second":132,"nanosecond":951000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":55000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":55000,"duration":{"second":132,"nanosecond":951000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":51,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":51000}}],"watch_group":51000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":51,"duration":{"second":132,"nanosecond":454000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":17,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":17000}}],"watch_group":17000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":17,"duration":{"second":132,"nanosecond":454000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":21000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":21000,"duration":{"second":132,"nanosecond":454000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":4000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":4000,"duration":{"second":132,"nanosecond":454000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":84,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":84000}}],"watch_group":84000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":84,"duration":{"second":132,"nanosecond":454000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":50,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":50000}}],"watch_group":50000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":50,"duration":{"second":132,"nanosecond":453000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":16,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":16000}}],"watch_group":16000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":16,"duration":{"second":132,"nanosecond":453000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":10000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":10000,"duration":{"second":132,"nanosecond":453000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":54000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":54000,"duration":{"second":132,"nanosecond":448000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":83,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":83000}}],"watch_group":83000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":83,"duration":{"second":132,"nanosecond":448000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":32000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":32000,"duration":{"second":132,"nanosecond":448000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":53,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":53000}}],"watch_group":53000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":53,"duration":{"second":131,"nanosecond":945000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":15,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":15000}}],"watch_group":15000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":15,"duration":{"second":132,"nanosecond":448000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":2000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":2000,"duration":{"second":132,"nanosecond":448000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":82,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":82000}}],"watch_group":82000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":82,"duration":{"second":132,"nanosecond":448000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":52,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":52000}}],"watch_group":52000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":52,"duration":{"second":132,"nanosecond":448000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":14,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":14000}}],"watch_group":14000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":14,"duration":{"second":132,"nanosecond":448000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":53000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":53000,"duration":{"second":132,"nanosecond":448000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":12000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":12000,"duration":{"second":132,"nanosecond":448000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":23000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":23000,"duration":{"second":132,"nanosecond":448000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":94000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":94000,"duration":{"second":132,"nanosecond":448000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}}],"flow-node-inventory:snapshot-gathering-status-end":{"succeeded":true,"end":"2026-04-08T01:00:41.225Z"}}]}}</msg>
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:00:42.400237" elapsed="0.009915"/>
</kw>
<kw name="Get Count" owner="BuiltIn">
<msg time="2026-04-08T01:00:42.413703" level="INFO">Item found from container 594 times.</msg>
<msg time="2026-04-08T01:00:42.413790" level="INFO">${group_count} = 594</msg>
<var>${group_count}</var>
<arg>${resp.text}</arg>
<arg>"group-type"</arg>
<doc>Returns and logs how many times ``item`` is found from ``container``.</doc>
<status status="PASS" start="2026-04-08T01:00:42.410360" elapsed="0.003454"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${group_count}</arg>
<arg>${groups}</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="PASS" start="2026-04-08T01:00:42.414003" elapsed="0.000344"/>
</kw>
<arg>${less_groups}</arg>
<doc>Check number of groups in the inventory.</doc>
<status status="PASS" start="2026-04-08T01:00:42.341839" elapsed="0.072572"/>
</kw>
<arg>10s</arg>
<arg>1s</arg>
<arg>ClusterOpenFlow.Check Number Of Groups On Member</arg>
<arg>${less_groups}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-08T01:00:42.341295" elapsed="0.073163"/>
</kw>
<doc>Check Groups in Operational DS.</doc>
<status status="PASS" start="2026-04-08T01:00:41.959220" elapsed="0.455360"/>
</test>
<test id="s1-s4-t36" name="Check Flows In Switch After Owner Disconnected" line="269">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-08T01:00:42.417803" elapsed="0.000205"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-08T01:00:42.417539" elapsed="0.000524"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:00:42.419075" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:00:42.418960" elapsed="0.000162"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:42.418938" elapsed="0.000207"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:00:42.424350" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:00:42.424240" elapsed="0.000156"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:42.424222" elapsed="0.000197"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:00:42.425610" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:00:42.425030" elapsed="0.000607"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:00:42.426105" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:00:42.425801" elapsed="0.000330"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T01:00:42.426195" elapsed="0.000032"/>
</return>
<msg time="2026-04-08T01:00:42.426354" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T01:00:42.424648" elapsed="0.001731"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:00:42.431673" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:00:42.431565" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:42.431547" elapsed="0.000192"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:00:42.432901" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:00:42.432793" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:42.432775" elapsed="0.000193"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:00:42.433444" level="INFO">${karaf_connection_index} = 476</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:00:42.433120" elapsed="0.000352"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:00:42.433887" level="INFO">${current_connection_index} = 495</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:00:42.433633" elapsed="0.000280"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:00:42.482675" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:00:42.434435" elapsed="0.048376"/>
</kw>
<msg time="2026-04-08T01:00:42.482984" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T01:00:42.483032" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:42.434077" elapsed="0.048991"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T01:00:42.537306" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "[C "I "n "[C "S "w "i "t "c "h "[C "A "f "t "e "r "[C "O "w "n "e "r "[C "D "i "s "c "o "n "n "e "c "t "e "d "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T01:00:42.483645" elapsed="0.053784"/>
</kw>
<msg time="2026-04-08T01:00:42.537590" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T01:00:42.537636" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:42.483280" elapsed="0.054504"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:42.538129" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:42.537881" elapsed="0.000329"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:42.537855" elapsed="0.000382"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:00:42.538692" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "[C "I "n "[C "S "w "i "t "c "h "[C "A "f "t "e "r "[C "O "w "n "e "r "[C "D "i "s "c "o "n "n "e "c "t "e "d "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:00:42.538384" elapsed="0.000389"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:42.539063" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:42.538841" elapsed="0.000277"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:42.538823" elapsed="0.000319"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T01:00:42.539195" elapsed="0.000059"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:00:42.541827" elapsed="0.000187"/>
</kw>
<msg time="2026-04-08T01:00:42.542075" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:00:42.540730" elapsed="0.001501"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:42.544518" elapsed="0.000078"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:42.544862" elapsed="0.000073"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:00:42.540083" elapsed="0.004962"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T01:00:42.539529" elapsed="0.005580"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T01:00:42.432490" elapsed="0.112734"/>
</kw>
<msg time="2026-04-08T01:00:42.545317" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:00:42.545361" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:42.431891" elapsed="0.113509"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T01:00:42.545585" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-08T01:00:42.545477" elapsed="0.000167"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:42.545458" elapsed="0.000210"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:42.546062" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:42.546464" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T01:00:42.546537" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T01:00:42.431232" elapsed="0.115412"/>
</kw>
<msg time="2026-04-08T01:00:42.546737" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:00:42.546781" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:42.426748" elapsed="0.120071"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:42.547148" elapsed="0.000048"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:42.546895" elapsed="0.000335"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:42.546878" elapsed="0.000376"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T01:00:42.426604" elapsed="0.120674"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:00:42.552620" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:00:42.552513" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:42.552494" elapsed="0.000191"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:00:42.553856" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:00:42.553748" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:42.553730" elapsed="0.000193"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:00:42.554422" level="INFO">${karaf_connection_index} = 478</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:00:42.554070" elapsed="0.000379"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:00:42.554861" level="INFO">${current_connection_index} = 495</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:00:42.554613" elapsed="0.000281"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:00:42.586565" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:00:42.555563" elapsed="0.031104"/>
</kw>
<msg time="2026-04-08T01:00:42.586825" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T01:00:42.586898" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:42.555090" elapsed="0.031847"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T01:00:42.633197" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "[C "I "n "[C "S "w "i "t "c "h "[C "A "f "t "e "r "[C "O "w "n "e "r "[C "D "i "s "c "o "n "n "e "c "t "e "d "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T01:00:42.587482" elapsed="0.045826"/>
</kw>
<msg time="2026-04-08T01:00:42.633463" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T01:00:42.633508" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:42.587111" elapsed="0.046435"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:42.633849" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:42.633624" elapsed="0.000279"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:42.633604" elapsed="0.000322"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:00:42.634391" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "[C "I "n "[C "S "w "i "t "c "h "[C "A "f "t "e "r "[C "O "w "n "e "r "[C "D "i "s "c "o "n "n "e "c "t "e "d "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:00:42.634071" elapsed="0.000420"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:42.634778" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:42.634560" elapsed="0.000271"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:42.634541" elapsed="0.000313"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T01:00:42.634885" elapsed="0.000028"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:00:42.637470" elapsed="0.000180"/>
</kw>
<msg time="2026-04-08T01:00:42.637710" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:00:42.636319" elapsed="0.001517"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:42.638110" elapsed="0.000104"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:42.638490" elapsed="0.000074"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:00:42.635697" elapsed="0.002976"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T01:00:42.635169" elapsed="0.003567"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T01:00:42.553406" elapsed="0.085428"/>
</kw>
<msg time="2026-04-08T01:00:42.638924" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:00:42.638967" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:42.552838" elapsed="0.086167"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T01:00:42.639384" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-08T01:00:42.639082" elapsed="0.000361"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:42.639063" elapsed="0.000403"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 2,
close the previous connection. In any case create a new connection
to karaf console for 2, set correct prompt set and login to karaf console.
Store connection index for 2 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:42.686716" elapsed="0.000133"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:42.687242" elapsed="0.000026"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T01:00:42.687319" elapsed="0.000021"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T01:00:42.552166" elapsed="0.135286"/>
</kw>
<msg time="2026-04-08T01:00:42.687560" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:00:42.687607" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:42.547545" elapsed="0.140099"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:42.688029" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:42.687729" elapsed="0.000356"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:42.687710" elapsed="0.000399"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T01:00:42.547401" elapsed="0.140732"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:00:42.693534" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:00:42.693426" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:42.693408" elapsed="0.000193"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:00:42.694801" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:00:42.694693" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:42.694676" elapsed="0.000193"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:00:42.695357" level="INFO">${karaf_connection_index} = 480</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:00:42.695018" elapsed="0.000366"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:00:42.695803" level="INFO">${current_connection_index} = 495</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:00:42.695547" elapsed="0.000283"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:00:42.727486" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:00:42.696349" elapsed="0.031238"/>
</kw>
<msg time="2026-04-08T01:00:42.727745" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T01:00:42.727794" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:42.695992" elapsed="0.031837"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T01:00:42.779510" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "[C "I "n "[C "S "w "i "t "c "h "[C "A "f "t "e "r "[C "O "w "n "e "r "[C "D "i "s "c "o "n "n "e "c "t "e "d "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T01:00:42.728373" elapsed="0.051254"/>
</kw>
<msg time="2026-04-08T01:00:42.779786" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T01:00:42.779833" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:42.728002" elapsed="0.051866"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:42.780203" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:42.779948" elapsed="0.000312"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:42.779927" elapsed="0.000357"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:00:42.780730" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "[C "I "n "[C "S "w "i "t "c "h "[C "A "f "t "e "r "[C "O "w "n "e "r "[C "D "i "s "c "o "n "n "e "c "t "e "d "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:00:42.780431" elapsed="0.000375"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:42.781092" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:42.780873" elapsed="0.000273"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:42.780855" elapsed="0.000332"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T01:00:42.781315" elapsed="0.000051"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:00:42.784064" elapsed="0.000203"/>
</kw>
<msg time="2026-04-08T01:00:42.784329" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:00:42.782926" elapsed="0.001537"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:42.784738" elapsed="0.000075"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:42.785072" elapsed="0.000074"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:00:42.782192" elapsed="0.003088"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T01:00:42.781629" elapsed="0.003745"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T01:00:42.694391" elapsed="0.091083"/>
</kw>
<msg time="2026-04-08T01:00:42.785567" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:00:42.785611" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:42.693754" elapsed="0.091892"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T01:00:42.785831" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-08T01:00:42.785724" elapsed="0.000165"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:42.785705" elapsed="0.000208"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 3,
close the previous connection. In any case create a new connection
to karaf console for 3, set correct prompt set and login to karaf console.
Store connection index for 3 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:42.786319" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:42.786649" elapsed="0.000023"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T01:00:42.786718" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T01:00:42.693056" elapsed="0.093767"/>
</kw>
<msg time="2026-04-08T01:00:42.786915" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:00:42.786958" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:42.688427" elapsed="0.098566"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:42.787346" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:42.787067" elapsed="0.000332"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:42.787050" elapsed="0.000372"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T01:00:42.688278" elapsed="0.099167"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-08T01:00:42.426432" elapsed="0.361044"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-08T01:00:42.423843" elapsed="0.363690"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-08T01:00:42.418666" elapsed="0.368923"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:42.418234" elapsed="0.369401"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-08T01:00:42.415433" elapsed="0.372255"/>
</kw>
<kw name="Check Flows In Mininet" owner="MininetKeywords">
<if>
<branch type="IF" condition="&quot;&quot;&quot;${mininet_conn}&quot;&quot;&quot; != &quot;&quot;">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${mininet_conn}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:00:42.788508" elapsed="0.000174"/>
</kw>
<status status="PASS" start="2026-04-08T01:00:42.788286" elapsed="0.000432"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:42.788267" elapsed="0.000477"/>
</if>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:00:42.789190" level="INFO">${cmd} = dpctl dump-aggregate -O OpenFlow13</msg>
<var>${cmd}</var>
<arg>dpctl dump-aggregate -O OpenFlow13</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:00:42.788915" elapsed="0.000303"/>
</kw>
<kw name="Send Mininet Command" owner="MininetKeywords">
<if>
<branch type="IF" condition="&quot;&quot;&quot;${mininet_conn}&quot;&quot;&quot; != &quot;&quot;">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${mininet_conn}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:00:42.790075" elapsed="0.000186"/>
</kw>
<status status="PASS" start="2026-04-08T01:00:42.789853" elapsed="0.000444"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:42.789835" elapsed="0.000523"/>
</if>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:00:42.794240" level="INFO">dpctl dump-aggregate -O OpenFlow13</msg>
<arg>${cmd}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:00:42.790503" elapsed="0.003796"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-08T01:00:42.882562" level="INFO">*** s1 ------------------------------------------------------------------------
OFPST_AGGREGATE reply (OF1.3) (xid=0x2): packet_count=37 byte_count=2995 flow_count=100
*** s2 ------------------------------------------------------------------------
OFPST_AGGREGATE reply (OF1.3) (xid=0x2): packet_count=68 byte_count=5570 flow_count=100
*** s3 ------------------------------------------------------------------------
OFPST_AGGREGATE reply (OF1.3) (xid=0x2): packet_count=36 byte_count=2925 flow_count=100
mininet&gt;</msg>
<msg time="2026-04-08T01:00:42.882816" level="INFO">${output} = *** s1 ------------------------------------------------------------------------
OFPST_AGGREGATE reply (OF1.3) (xid=0x2): packet_count=37 byte_count=2995 flow_count=100
*** s2 ----------------------...</msg>
<var>${output}</var>
<arg>mininet&gt;</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-08T01:00:42.794462" elapsed="0.088386"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-08T01:00:42.882942" elapsed="0.000067"/>
</return>
<msg time="2026-04-08T01:00:42.883208" level="INFO">${output} = *** s1 ------------------------------------------------------------------------
OFPST_AGGREGATE reply (OF1.3) (xid=0x2): packet_count=37 byte_count=2995 flow_count=100
*** s2 ----------------------...</msg>
<var>${output}</var>
<arg>${mininet_conn}</arg>
<arg>${cmd}</arg>
<doc>Sends Command dpctl dump-aggregate -O OpenFlow13 to Mininet session 495 and returns read buffer response.</doc>
<status status="PASS" start="2026-04-08T01:00:42.789554" elapsed="0.093687"/>
</kw>
<kw name="Get Regexp Matches" owner="String">
<msg time="2026-04-08T01:00:42.883855" level="INFO">${flows} = ['100', '100', '100']</msg>
<var>${flows}</var>
<arg>${output}</arg>
<arg>(?&lt;=flow_count\=).*?(?=\r)</arg>
<doc>Returns a list of all non-overlapping matches in the given string.</doc>
<status status="PASS" start="2026-04-08T01:00:42.883509" elapsed="0.000373"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:00:42.884569" level="INFO">${total_flows} = 300</msg>
<var>${total_flows}</var>
<arg>sum(map(int, ${flows}))</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:00:42.884057" elapsed="0.000539"/>
</kw>
<kw name="Should Be Equal As Numbers" owner="BuiltIn">
<arg>${total_flows}</arg>
<arg>${flow_count}</arg>
<doc>Fails if objects are unequal after converting them to real numbers.</doc>
<status status="PASS" start="2026-04-08T01:00:42.884867" elapsed="0.000363"/>
</kw>
<arg>${mininet_conn_id}</arg>
<arg>${less_flows}</arg>
<doc>Sync with mininet to match exact number of flows</doc>
<status status="PASS" start="2026-04-08T01:00:42.787953" elapsed="0.097346"/>
</kw>
<doc>Check Flows in switch.</doc>
<status status="PASS" start="2026-04-08T01:00:42.414880" elapsed="0.470548"/>
</test>
<test id="s1-s4-t37" name="Disconnect Mininet From Cluster" line="273">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-08T01:00:42.889258" elapsed="0.000211"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-08T01:00:42.888965" elapsed="0.000561"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:00:42.890657" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:00:42.890535" elapsed="0.000167"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:42.890513" elapsed="0.000213"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:00:42.895539" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:00:42.895432" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:42.895413" elapsed="0.000194"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:00:42.896654" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:00:42.896240" elapsed="0.000442"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:00:42.897151" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:00:42.896847" elapsed="0.000348"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T01:00:42.897239" elapsed="0.000031"/>
</return>
<msg time="2026-04-08T01:00:42.897395" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T01:00:42.895835" elapsed="0.001585"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:00:42.902879" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:00:42.902770" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:42.902751" elapsed="0.000196"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:00:42.904152" elapsed="0.000037"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:00:42.904043" elapsed="0.000179"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:42.904025" elapsed="0.000219"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:00:42.904772" level="INFO">${karaf_connection_index} = 476</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:00:42.904395" elapsed="0.000406"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:00:42.905261" level="INFO">${current_connection_index} = 495</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:00:42.904973" elapsed="0.000315"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:00:42.942040" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:00:42.905872" elapsed="0.036360"/>
</kw>
<msg time="2026-04-08T01:00:42.942495" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T01:00:42.942562" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:42.905521" elapsed="0.037090"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T01:00:42.981907" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "D "i "s "c "o "n "n "e "c "t "[C "M "i "n "i "n "e "t "[C "F "r "o "m "[C "C "l "u "s "t "e "r "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T01:00:42.943388" elapsed="0.038629"/>
</kw>
<msg time="2026-04-08T01:00:42.982199" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T01:00:42.982247" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "D "i "s "c "o "n "n "e "c "t "[C "M...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:42.942860" elapsed="0.039423"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:42.982599" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:42.982364" elapsed="0.000291"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:42.982343" elapsed="0.000336"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:00:42.983130" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "D "i "s "c "o "n "n "e "c "t "[C "M "i "n "i "n "e "t "[C "F "r "o "m "[C "C "l "u "s "t "e "r "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:00:42.982825" elapsed="0.000395"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:42.983509" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:42.983288" elapsed="0.000275"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:42.983270" elapsed="0.000317"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T01:00:42.983620" elapsed="0.000028"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:00:42.986444" elapsed="0.000185"/>
</kw>
<msg time="2026-04-08T01:00:42.986691" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:00:42.985093" elapsed="0.001731"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:42.987105" elapsed="0.000099"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:42.987464" elapsed="0.000076"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:00:42.984477" elapsed="0.003171"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T01:00:42.983898" elapsed="0.003814"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T01:00:42.903740" elapsed="0.084069"/>
</kw>
<msg time="2026-04-08T01:00:42.987899" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:00:42.987965" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "D "i "s "c "o "n "n "e "c "t "[C "M...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:42.903116" elapsed="0.084886"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T01:00:42.988214" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-08T01:00:42.988079" elapsed="0.000204"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:42.988060" elapsed="0.000247"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:42.988701" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:42.989032" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T01:00:42.989107" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T01:00:42.902418" elapsed="0.086821"/>
</kw>
<msg time="2026-04-08T01:00:42.989379" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:00:42.989422" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "D "i "s "c "o "n "n "e "c "t "[C "M...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:42.897808" elapsed="0.091650"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:42.989788" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:42.989534" elapsed="0.000307"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:42.989516" elapsed="0.000349"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T01:00:42.897662" elapsed="0.092226"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:00:42.995281" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:00:42.995171" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:42.995137" elapsed="0.000211"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:00:42.996533" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:00:42.996424" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:42.996405" elapsed="0.000194"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:00:42.997040" level="INFO">${karaf_connection_index} = 478</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:00:42.996746" elapsed="0.000321"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:00:42.997497" level="INFO">${current_connection_index} = 495</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:00:42.997248" elapsed="0.000275"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:00:43.029790" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:00:42.998024" elapsed="0.031865"/>
</kw>
<msg time="2026-04-08T01:00:43.030048" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T01:00:43.030096" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:42.997686" elapsed="0.032445"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T01:00:43.065519" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "D "i "s "c "o "n "n "e "c "t "[C "M "i "n "i "n "e "t "[C "F "r "o "m "[C "C "l "u "s "t "e "r "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T01:00:43.030818" elapsed="0.034805"/>
</kw>
<msg time="2026-04-08T01:00:43.065782" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T01:00:43.065828" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "D "i "s "c "o "n "n "e "c "t "[C "M...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:43.030329" elapsed="0.035534"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:43.066193" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:43.065942" elapsed="0.000309"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:43.065922" elapsed="0.000352"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:00:43.066714" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "D "i "s "c "o "n "n "e "c "t "[C "M "i "n "i "n "e "t "[C "F "r "o "m "[C "C "l "u "s "t "e "r "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:00:43.066418" elapsed="0.000365"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:43.067069" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:43.066849" elapsed="0.000274"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:43.066832" elapsed="0.000315"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T01:00:43.067198" elapsed="0.000029"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:00:43.069671" elapsed="0.000183"/>
</kw>
<msg time="2026-04-08T01:00:43.069914" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:00:43.068640" elapsed="0.001401"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:43.070334" elapsed="0.000077"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:43.070705" elapsed="0.000073"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:00:43.068006" elapsed="0.002880"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T01:00:43.067477" elapsed="0.003472"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T01:00:42.996094" elapsed="0.074952"/>
</kw>
<msg time="2026-04-08T01:00:43.071138" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:00:43.071206" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "D "i "s "c "o "n "n "e "c "t "[C "M...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:42.995502" elapsed="0.075743"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T01:00:43.071455" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-08T01:00:43.071323" elapsed="0.000191"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:43.071304" elapsed="0.000233"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 2,
close the previous connection. In any case create a new connection
to karaf console for 2, set correct prompt set and login to karaf console.
Store connection index for 2 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:43.071918" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:43.072268" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T01:00:43.072340" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T01:00:42.994820" elapsed="0.077624"/>
</kw>
<msg time="2026-04-08T01:00:43.072537" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:00:43.072580" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "D "i "s "c "o "n "n "e "c "t "[C "M...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:42.990153" elapsed="0.082462"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:43.072939" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:43.072690" elapsed="0.000302"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:43.072672" elapsed="0.000343"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T01:00:42.990012" elapsed="0.083026"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:00:43.078372" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:00:43.078261" elapsed="0.000157"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:43.078146" elapsed="0.000293"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:00:43.079587" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:00:43.079481" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:43.079463" elapsed="0.000191"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:00:43.080094" level="INFO">${karaf_connection_index} = 480</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:00:43.079800" elapsed="0.000321"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:00:43.080548" level="INFO">${current_connection_index} = 495</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:00:43.080299" elapsed="0.000275"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:00:43.116628" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:00:43.081068" elapsed="0.035666"/>
</kw>
<msg time="2026-04-08T01:00:43.116898" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T01:00:43.116946" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:43.080736" elapsed="0.036245"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T01:00:43.153234" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "D "i "s "c "o "n "n "e "c "t "[C "M "i "n "i "n "e "t "[C "F "r "o "m "[C "C "l "u "s "t "e "r "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T01:00:43.117533" elapsed="0.035900"/>
</kw>
<msg time="2026-04-08T01:00:43.153648" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T01:00:43.153696" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "D "i "s "c "o "n "n "e "c "t "[C "M...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:43.117182" elapsed="0.036626"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:43.154276" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:43.153926" elapsed="0.000412"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:43.153891" elapsed="0.000474"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:00:43.154914" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "D "i "s "c "o "n "n "e "c "t "[C "M "i "n "i "n "e "t "[C "F "r "o "m "[C "C "l "u "s "t "e "r "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:00:43.154514" elapsed="0.000473"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:43.155305" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:43.155057" elapsed="0.000304"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:43.155037" elapsed="0.000348"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T01:00:43.155424" elapsed="0.000038"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:00:43.158003" elapsed="0.000209"/>
</kw>
<msg time="2026-04-08T01:00:43.158275" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:00:43.156979" elapsed="0.001431"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:43.158685" elapsed="0.000090"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:43.159053" elapsed="0.000074"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:00:43.156338" elapsed="0.002930"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T01:00:43.155748" elapsed="0.003585"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T01:00:43.079140" elapsed="0.080292"/>
</kw>
<msg time="2026-04-08T01:00:43.159526" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:00:43.159571" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "D "i "s "c "o "n "n "e "c "t "[C "M...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:43.078592" elapsed="0.081017"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T01:00:43.159795" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-08T01:00:43.159688" elapsed="0.000166"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:43.159669" elapsed="0.000209"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 3,
close the previous connection. In any case create a new connection
to karaf console for 3, set correct prompt set and login to karaf console.
Store connection index for 3 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:43.160297" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:43.160633" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T01:00:43.160704" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T01:00:43.077832" elapsed="0.082976"/>
</kw>
<msg time="2026-04-08T01:00:43.160902" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:00:43.160947" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "D "i "s "c "o "n "n "e "c "t "[C "M...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:43.073316" elapsed="0.087666"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:43.161325" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:43.161059" elapsed="0.000318"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:43.161042" elapsed="0.000358"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T01:00:43.073171" elapsed="0.088252"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-08T01:00:42.897480" elapsed="0.263977"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-08T01:00:42.895057" elapsed="0.266456"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-08T01:00:42.890227" elapsed="0.271343"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:42.889728" elapsed="0.271889"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-08T01:00:42.886338" elapsed="0.275375"/>
</kw>
<kw name="Disconnect Cluster Mininet" owner="MininetKeywords">
<msg time="2026-04-08T01:00:43.166397" level="FAIL">Variable '${original_owner_list}' not found.</msg>
<arg>break</arg>
<arg>${original_owner_list}</arg>
<doc>Break and restore controller to mininet connection via iptables.</doc>
<status status="FAIL" start="2026-04-08T01:00:43.161995" elapsed="0.004442">Variable '${original_owner_list}' not found.</status>
</kw>
<doc>Disconnect Mininet from Cluster.</doc>
<status status="FAIL" start="2026-04-08T01:00:42.885788" elapsed="0.280807">Variable '${original_owner_list}' not found.</status>
</test>
<test id="s1-s4-t38" name="Check No Switches After Disconnect" line="277">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-08T01:00:43.170014" elapsed="0.000234"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-08T01:00:43.169750" elapsed="0.000553"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:00:43.171326" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:00:43.171208" elapsed="0.000164"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:43.171187" elapsed="0.000208"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:00:43.176546" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:00:43.176436" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:43.176418" elapsed="0.000195"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:00:43.177648" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:00:43.177256" elapsed="0.000419"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:00:43.178141" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:00:43.177837" elapsed="0.000348"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T01:00:43.178231" elapsed="0.000033"/>
</return>
<msg time="2026-04-08T01:00:43.178391" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T01:00:43.176849" elapsed="0.001567"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:00:43.183792" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:00:43.183683" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:43.183664" elapsed="0.000196"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:00:43.185032" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:00:43.184925" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:43.184907" elapsed="0.000192"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:00:43.185582" level="INFO">${karaf_connection_index} = 476</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:00:43.185276" elapsed="0.000333"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:00:43.186031" level="INFO">${current_connection_index} = 495</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:00:43.185773" elapsed="0.000284"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:00:43.220381" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:00:43.186616" elapsed="0.033870"/>
</kw>
<msg time="2026-04-08T01:00:43.220651" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T01:00:43.220698" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:43.186238" elapsed="0.034496"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T01:00:43.263150" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "N "o "[C "S "w "i "t "c "h "e "s "[C "A "f "t "e "r "[C "D "i "s "c "o "n "n "e "c "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T01:00:43.221282" elapsed="0.041989"/>
</kw>
<msg time="2026-04-08T01:00:43.263429" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T01:00:43.263474" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "N "o "[C "S "w "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:43.220910" elapsed="0.042599"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:43.263894" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:43.263658" elapsed="0.000292"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:43.263634" elapsed="0.000342"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:00:43.264588" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "N "o "[C "S "w "i "t "c "h "e "s "[C "A "f "t "e "r "[C "D "i "s "c "o "n "n "e "c "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:00:43.264122" elapsed="0.000537"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:43.264946" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:43.264727" elapsed="0.000273"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:43.264708" elapsed="0.000315"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T01:00:43.265057" elapsed="0.000033"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:00:43.267819" elapsed="0.000183"/>
</kw>
<msg time="2026-04-08T01:00:43.268063" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:00:43.266709" elapsed="0.001507"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:43.268655" elapsed="0.000079"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:43.268995" elapsed="0.000073"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:00:43.266073" elapsed="0.003129"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T01:00:43.265521" elapsed="0.003747"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T01:00:43.184625" elapsed="0.084742"/>
</kw>
<msg time="2026-04-08T01:00:43.269458" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:00:43.269503" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "N "o "[C "S "w "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:43.184013" elapsed="0.085525"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T01:00:43.269722" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-08T01:00:43.269616" elapsed="0.000163"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:43.269597" elapsed="0.000206"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:43.270234" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:43.270566" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T01:00:43.270636" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T01:00:43.183346" elapsed="0.087395"/>
</kw>
<msg time="2026-04-08T01:00:43.270834" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:00:43.270879" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "N "o "[C "S "w "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:43.178834" elapsed="0.092080"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:43.271251" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:43.270988" elapsed="0.000317"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:43.270971" elapsed="0.000357"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T01:00:43.178673" elapsed="0.092678"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:00:43.276851" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:00:43.276742" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:43.276723" elapsed="0.000196"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:00:43.278196" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:00:43.278058" elapsed="0.000185"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:43.278039" elapsed="0.000226"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:00:43.278762" level="INFO">${karaf_connection_index} = 478</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:00:43.278411" elapsed="0.000379"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:00:43.279224" level="INFO">${current_connection_index} = 495</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:00:43.278952" elapsed="0.000299"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:00:43.310358" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:00:43.279747" elapsed="0.030713"/>
</kw>
<msg time="2026-04-08T01:00:43.310620" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T01:00:43.310667" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:43.279413" elapsed="0.031289"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T01:00:43.344559" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "N "o "[C "S "w "i "t "c "h "e "s "[C "A "f "t "e "r "[C "D "i "s "c "o "n "n "e "c "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T01:00:43.311242" elapsed="0.033424"/>
</kw>
<msg time="2026-04-08T01:00:43.344825" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T01:00:43.344870" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "N "o "[C "S "w "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:43.310875" elapsed="0.034030"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:43.345235" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:43.344985" elapsed="0.000306"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:43.344965" elapsed="0.000350"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:00:43.345781" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "N "o "[C "S "w "i "t "c "h "e "s "[C "A "f "t "e "r "[C "D "i "s "c "o "n "n "e "c "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:00:43.345485" elapsed="0.000366"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:43.346135" elapsed="0.000038"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:43.345918" elapsed="0.000290"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:43.345900" elapsed="0.000332"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T01:00:43.346265" elapsed="0.000028"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:00:43.348770" elapsed="0.000182"/>
</kw>
<msg time="2026-04-08T01:00:43.349013" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:00:43.347703" elapsed="0.001438"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:43.349452" elapsed="0.000243"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:43.349962" elapsed="0.000072"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:00:43.347076" elapsed="0.003066"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T01:00:43.346530" elapsed="0.003702"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T01:00:43.277738" elapsed="0.072593"/>
</kw>
<msg time="2026-04-08T01:00:43.350421" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:00:43.350464" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "N "o "[C "S "w "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:43.277071" elapsed="0.073429"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T01:00:43.350683" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-08T01:00:43.350576" elapsed="0.000165"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:43.350557" elapsed="0.000208"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 2,
close the previous connection. In any case create a new connection
to karaf console for 2, set correct prompt set and login to karaf console.
Store connection index for 2 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:43.351146" elapsed="0.000041"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:43.351529" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T01:00:43.351601" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T01:00:43.276391" elapsed="0.075315"/>
</kw>
<msg time="2026-04-08T01:00:43.351798" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:00:43.351842" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "N "o "[C "S "w "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:43.271617" elapsed="0.080260"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:43.352218" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:43.351950" elapsed="0.000322"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:43.351934" elapsed="0.000362"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T01:00:43.271475" elapsed="0.080843"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:00:43.357637" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:00:43.357468" elapsed="0.000214"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:43.357449" elapsed="0.000255"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:00:43.358909" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:00:43.358801" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:43.358783" elapsed="0.000192"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:00:43.359439" level="INFO">${karaf_connection_index} = 480</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:00:43.359122" elapsed="0.000345"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:00:43.359873" level="INFO">${current_connection_index} = 495</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:00:43.359626" elapsed="0.000273"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:00:43.394825" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:00:43.360417" elapsed="0.034515"/>
</kw>
<msg time="2026-04-08T01:00:43.395098" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T01:00:43.395145" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:43.360061" elapsed="0.035142"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T01:00:43.436468" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "N "o "[C "S "w "i "t "c "h "e "s "[C "A "f "t "e "r "[C "D "i "s "c "o "n "n "e "c "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T01:00:43.395735" elapsed="0.040956"/>
</kw>
<msg time="2026-04-08T01:00:43.437049" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T01:00:43.437128" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "N "o "[C "S "w "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:43.395384" elapsed="0.041823"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:43.437675" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:43.437330" elapsed="0.000422"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:43.437299" elapsed="0.000488"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:00:43.438457" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "N "o "[C "S "w "i "t "c "h "e "s "[C "A "f "t "e "r "[C "D "i "s "c "o "n "n "e "c "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:00:43.438000" elapsed="0.000560"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:43.438961" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:43.438653" elapsed="0.000385"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:43.438627" elapsed="0.000444"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T01:00:43.439119" elapsed="0.000063"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:00:43.442816" elapsed="0.000254"/>
</kw>
<msg time="2026-04-08T01:00:43.443238" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:00:43.441275" elapsed="0.002155"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:43.443822" elapsed="0.000370"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:43.444554" elapsed="0.000096"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:00:43.440364" elapsed="0.004467"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T01:00:43.439563" elapsed="0.005358"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T01:00:43.358500" elapsed="0.086559"/>
</kw>
<msg time="2026-04-08T01:00:43.445217" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:00:43.445280" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "N "o "[C "S "w "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:43.357857" elapsed="0.087475"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T01:00:43.445582" elapsed="0.000034"/>
</return>
<status status="PASS" start="2026-04-08T01:00:43.445439" elapsed="0.000222"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:43.445414" elapsed="0.000279"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 3,
close the previous connection. In any case create a new connection
to karaf console for 3, set correct prompt set and login to karaf console.
Store connection index for 3 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:43.446254" elapsed="0.000036"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:43.446724" elapsed="0.000032"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T01:00:43.446819" elapsed="0.000022"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T01:00:43.357090" elapsed="0.089874"/>
</kw>
<msg time="2026-04-08T01:00:43.447091" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:00:43.447152" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "N "o "[C "S "w "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:43.352575" elapsed="0.094649"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:00:43.447679" elapsed="0.000029"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:00:43.447332" elapsed="0.000422"/>
</branch>
<status status="PASS" start="2026-04-08T01:00:43.447308" elapsed="0.000479"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T01:00:43.352436" elapsed="0.095385"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-08T01:00:43.178471" elapsed="0.269397"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-08T01:00:43.176053" elapsed="0.271899"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-08T01:00:43.170895" elapsed="0.277138"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:00:43.170455" elapsed="0.277646"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-08T01:00:43.167612" elapsed="0.280585"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Check No Switches On Member" owner="ClusterOpenFlow">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:00:43.450831" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:00:43.450429" elapsed="0.000438"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T01:00:43.450927" elapsed="0.000038"/>
</return>
<msg time="2026-04-08T01:00:43.451121" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T01:00:43.449848" elapsed="0.001323"/>
</kw>
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T01:00:43.466561" level="INFO">GET Request : url=http://10.30.170.48:8181/rests/data/network-topology:network-topology?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01s3bfo0y24i1es90l47mavglv0.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T01:00:43.466811" level="INFO">GET Response : url=http://10.30.170.48:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '2973'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}} 
 </msg>
<msg time="2026-04-08T01:00:43.467545" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${RFC8040_OPERATIONAL_TOPO_API}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T01:00:43.451395" elapsed="0.016191"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:00:43.471415" level="INFO">{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}}</msg>
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:00:43.467865" elapsed="0.003645"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Should Not Contain" owner="BuiltIn">
<msg time="2026-04-08T01:00:43.478518" level="FAIL">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}}' contains 'openflow:1'</msg>
<arg>${resp.text}</arg>
<arg>openflow:${switch}</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="FAIL" start="2026-04-08T01:00:43.474941" elapsed="0.003680">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}}' contains 'openflow:1'</status>
</kw>
<var name="${switch}">1</var>
<status status="FAIL" start="2026-04-08T01:00:43.474715" elapsed="0.004030">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}}' contains 'openflow:1'</status>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="FAIL" start="2026-04-08T01:00:43.471586" elapsed="0.007241">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}}' contains 'openflow:1'</status>
</for>
<arg>${SWITCHES}</arg>
<doc>Check no switch is in topology</doc>
<status status="FAIL" start="2026-04-08T01:00:43.449339" elapsed="0.029614">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}}' contains 'openflow:1'</status>
</kw>
<kw name="Check No Switches On Member" owner="ClusterOpenFlow">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:00:44.482610" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:00:44.481771" elapsed="0.000908"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T01:00:44.482812" elapsed="0.000090"/>
</return>
<msg time="2026-04-08T01:00:44.483186" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T01:00:44.480937" elapsed="0.002289"/>
</kw>
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T01:00:44.492927" level="INFO">GET Request : url=http://10.30.170.48:8181/rests/data/network-topology:network-topology?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01s3bfo0y24i1es90l47mavglv0.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T01:00:44.493318" level="INFO">GET Response : url=http://10.30.170.48:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '2973'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}} 
 </msg>
<msg time="2026-04-08T01:00:44.493501" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${RFC8040_OPERATIONAL_TOPO_API}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T01:00:44.483465" elapsed="0.010074"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:00:44.498121" level="INFO">{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}}</msg>
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:00:44.493857" elapsed="0.004478"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Should Not Contain" owner="BuiltIn">
<msg time="2026-04-08T01:00:44.505086" level="FAIL">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}}' contains 'openflow:1'</msg>
<arg>${resp.text}</arg>
<arg>openflow:${switch}</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="FAIL" start="2026-04-08T01:00:44.502048" elapsed="0.003167">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}}' contains 'openflow:1'</status>
</kw>
<var name="${switch}">1</var>
<status status="FAIL" start="2026-04-08T01:00:44.501788" elapsed="0.003522">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}}' contains 'openflow:1'</status>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="FAIL" start="2026-04-08T01:00:44.498421" elapsed="0.007012">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}}' contains 'openflow:1'</status>
</for>
<arg>${SWITCHES}</arg>
<doc>Check no switch is in topology</doc>
<status status="FAIL" start="2026-04-08T01:00:44.479920" elapsed="0.025648">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}}' contains 'openflow:1'</status>
</kw>
<kw name="Check No Switches On Member" owner="ClusterOpenFlow">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:00:45.509444" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:00:45.508603" elapsed="0.000911"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T01:00:45.509633" elapsed="0.000078"/>
</return>
<msg time="2026-04-08T01:00:45.509987" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T01:00:45.507701" elapsed="0.002348"/>
</kw>
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T01:00:45.520432" level="INFO">GET Request : url=http://10.30.170.48:8181/rests/data/network-topology:network-topology?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01s3bfo0y24i1es90l47mavglv0.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T01:00:45.520777" level="INFO">GET Response : url=http://10.30.170.48:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '2973'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}} 
 </msg>
<msg time="2026-04-08T01:00:45.521022" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${RFC8040_OPERATIONAL_TOPO_API}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T01:00:45.510556" elapsed="0.010512"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:00:45.524993" level="INFO">{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}}</msg>
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:00:45.521388" elapsed="0.003707"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Should Not Contain" owner="BuiltIn">
<msg time="2026-04-08T01:00:45.532409" level="FAIL">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}}' contains 'openflow:1'</msg>
<arg>${resp.text}</arg>
<arg>openflow:${switch}</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="FAIL" start="2026-04-08T01:00:45.528574" elapsed="0.003977">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}}' contains 'openflow:1'</status>
</kw>
<var name="${switch}">1</var>
<status status="FAIL" start="2026-04-08T01:00:45.528342" elapsed="0.004455">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}}' contains 'openflow:1'</status>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="FAIL" start="2026-04-08T01:00:45.525202" elapsed="0.007717">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}}' contains 'openflow:1'</status>
</for>
<arg>${SWITCHES}</arg>
<doc>Check no switch is in topology</doc>
<status status="FAIL" start="2026-04-08T01:00:45.506597" elapsed="0.026516">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}}' contains 'openflow:1'</status>
</kw>
<kw name="Check No Switches On Member" owner="ClusterOpenFlow">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:00:46.537042" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:00:46.536262" elapsed="0.000853"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T01:00:46.537292" elapsed="0.000083"/>
</return>
<msg time="2026-04-08T01:00:46.537909" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T01:00:46.535347" elapsed="0.002629"/>
</kw>
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T01:00:46.547244" level="INFO">GET Request : url=http://10.30.170.48:8181/rests/data/network-topology:network-topology?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01s3bfo0y24i1es90l47mavglv0.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T01:00:46.547499" level="INFO">GET Response : url=http://10.30.170.48:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '2973'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}} 
 </msg>
<msg time="2026-04-08T01:00:46.547622" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${RFC8040_OPERATIONAL_TOPO_API}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T01:00:46.538426" elapsed="0.009223"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:00:46.550944" level="INFO">{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}}</msg>
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:00:46.547885" elapsed="0.003189"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Should Not Contain" owner="BuiltIn">
<msg time="2026-04-08T01:00:46.557724" level="FAIL">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}}' contains 'openflow:1'</msg>
<arg>${resp.text}</arg>
<arg>openflow:${switch}</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="FAIL" start="2026-04-08T01:00:46.553933" elapsed="0.003959">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}}' contains 'openflow:1'</status>
</kw>
<var name="${switch}">1</var>
<status status="FAIL" start="2026-04-08T01:00:46.553694" elapsed="0.004332">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}}' contains 'openflow:1'</status>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="FAIL" start="2026-04-08T01:00:46.551134" elapsed="0.007077">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}}' contains 'openflow:1'</status>
</for>
<arg>${SWITCHES}</arg>
<doc>Check no switch is in topology</doc>
<status status="FAIL" start="2026-04-08T01:00:46.534090" elapsed="0.024358">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}}' contains 'openflow:1'</status>
</kw>
<kw name="Check No Switches On Member" owner="ClusterOpenFlow">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:00:47.562031" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:00:47.561291" elapsed="0.000808"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T01:00:47.562246" elapsed="0.000078"/>
</return>
<msg time="2026-04-08T01:00:47.562596" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T01:00:47.560468" elapsed="0.002185"/>
</kw>
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T01:00:47.572441" level="INFO">GET Request : url=http://10.30.170.48:8181/rests/data/network-topology:network-topology?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01s3bfo0y24i1es90l47mavglv0.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T01:00:47.572803" level="INFO">GET Response : url=http://10.30.170.48:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '2973'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}} 
 </msg>
<msg time="2026-04-08T01:00:47.573057" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${RFC8040_OPERATIONAL_TOPO_API}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T01:00:47.563002" elapsed="0.010096"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:00:47.577381" level="INFO">{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}}</msg>
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:00:47.573441" elapsed="0.004042"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Should Not Contain" owner="BuiltIn">
<msg time="2026-04-08T01:00:47.585118" level="FAIL">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}}' contains 'openflow:1'</msg>
<arg>${resp.text}</arg>
<arg>openflow:${switch}</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="FAIL" start="2026-04-08T01:00:47.581234" elapsed="0.004050">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}}' contains 'openflow:1'</status>
</kw>
<var name="${switch}">1</var>
<status status="FAIL" start="2026-04-08T01:00:47.580937" elapsed="0.004543">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}}' contains 'openflow:1'</status>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="FAIL" start="2026-04-08T01:00:47.577567" elapsed="0.008034">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}}' contains 'openflow:1'</status>
</for>
<arg>${SWITCHES}</arg>
<doc>Check no switch is in topology</doc>
<status status="FAIL" start="2026-04-08T01:00:47.559414" elapsed="0.026378">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}}' contains 'openflow:1'</status>
</kw>
<kw name="Check No Switches On Member" owner="ClusterOpenFlow">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:00:48.589709" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:00:48.588854" elapsed="0.000967"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T01:00:48.589986" elapsed="0.000097"/>
</return>
<msg time="2026-04-08T01:00:48.590494" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T01:00:48.587969" elapsed="0.002608"/>
</kw>
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T01:00:48.599361" level="INFO">GET Request : url=http://10.30.170.48:8181/rests/data/network-topology:network-topology?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01s3bfo0y24i1es90l47mavglv0.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T01:00:48.599693" level="INFO">GET Response : url=http://10.30.170.48:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '2973'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}} 
 </msg>
<msg time="2026-04-08T01:00:48.599862" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${RFC8040_OPERATIONAL_TOPO_API}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T01:00:48.590997" elapsed="0.008903"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:00:48.606479" level="INFO">{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}}</msg>
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:00:48.600213" elapsed="0.006438"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Should Not Contain" owner="BuiltIn">
<msg time="2026-04-08T01:00:48.614108" level="FAIL">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}}' contains 'openflow:1'</msg>
<arg>${resp.text}</arg>
<arg>openflow:${switch}</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="FAIL" start="2026-04-08T01:00:48.610417" elapsed="0.003861">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}}' contains 'openflow:1'</status>
</kw>
<var name="${switch}">1</var>
<status status="FAIL" start="2026-04-08T01:00:48.610128" elapsed="0.004289">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}}' contains 'openflow:1'</status>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="FAIL" start="2026-04-08T01:00:48.606734" elapsed="0.007833">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}}' contains 'openflow:1'</status>
</for>
<arg>${SWITCHES}</arg>
<doc>Check no switch is in topology</doc>
<status status="FAIL" start="2026-04-08T01:00:48.586893" elapsed="0.027854">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}}' contains 'openflow:1'</status>
</kw>
<kw name="Check No Switches On Member" owner="ClusterOpenFlow">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:00:49.618533" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:00:49.617748" elapsed="0.000855"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T01:00:49.618721" elapsed="0.000081"/>
</return>
<msg time="2026-04-08T01:00:49.619077" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T01:00:49.616849" elapsed="0.002284"/>
</kw>
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T01:00:49.628543" level="INFO">GET Request : url=http://10.30.170.48:8181/rests/data/network-topology:network-topology?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01s3bfo0y24i1es90l47mavglv0.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T01:00:49.629046" level="INFO">GET Response : url=http://10.30.170.48:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '2973'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}} 
 </msg>
<msg time="2026-04-08T01:00:49.629438" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${RFC8040_OPERATIONAL_TOPO_API}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T01:00:49.619523" elapsed="0.009976"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:00:49.635976" level="INFO">{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}}</msg>
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:00:49.629960" elapsed="0.006279"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Should Not Contain" owner="BuiltIn">
<msg time="2026-04-08T01:00:49.643266" level="FAIL">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}}' contains 'openflow:1'</msg>
<arg>${resp.text}</arg>
<arg>openflow:${switch}</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="FAIL" start="2026-04-08T01:00:49.640374" elapsed="0.003029">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}}' contains 'openflow:1'</status>
</kw>
<var name="${switch}">1</var>
<status status="FAIL" start="2026-04-08T01:00:49.640173" elapsed="0.003383">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}}' contains 'openflow:1'</status>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="FAIL" start="2026-04-08T01:00:49.636403" elapsed="0.007239">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}}' contains 'openflow:1'</status>
</for>
<arg>${SWITCHES}</arg>
<doc>Check no switch is in topology</doc>
<status status="FAIL" start="2026-04-08T01:00:49.615769" elapsed="0.028032">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}}' contains 'openflow:1'</status>
</kw>
<kw name="Check No Switches On Member" owner="ClusterOpenFlow">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:00:50.647908" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:00:50.646968" elapsed="0.001015"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T01:00:50.648107" elapsed="0.000116"/>
</return>
<msg time="2026-04-08T01:00:50.648517" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T01:00:50.646034" elapsed="0.002541"/>
</kw>
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T01:00:50.657370" level="INFO">GET Request : url=http://10.30.170.48:8181/rests/data/network-topology:network-topology?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01s3bfo0y24i1es90l47mavglv0.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T01:00:50.657633" level="INFO">GET Response : url=http://10.30.170.48:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '2973'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}} 
 </msg>
<msg time="2026-04-08T01:00:50.657755" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${RFC8040_OPERATIONAL_TOPO_API}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T01:00:50.648931" elapsed="0.008850"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:00:50.660899" level="INFO">{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}}</msg>
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:00:50.658007" elapsed="0.003040"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Should Not Contain" owner="BuiltIn">
<msg time="2026-04-08T01:00:50.668099" level="FAIL">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}}' contains 'openflow:1'</msg>
<arg>${resp.text}</arg>
<arg>openflow:${switch}</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="FAIL" start="2026-04-08T01:00:50.664361" elapsed="0.003900">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}}' contains 'openflow:1'</status>
</kw>
<var name="${switch}">1</var>
<status status="FAIL" start="2026-04-08T01:00:50.664058" elapsed="0.004333">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}}' contains 'openflow:1'</status>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="FAIL" start="2026-04-08T01:00:50.661113" elapsed="0.007430">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}}' contains 'openflow:1'</status>
</for>
<arg>${SWITCHES}</arg>
<doc>Check no switch is in topology</doc>
<status status="FAIL" start="2026-04-08T01:00:50.644870" elapsed="0.023857">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}}' contains 'openflow:1'</status>
</kw>
<kw name="Check No Switches On Member" owner="ClusterOpenFlow">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:00:51.672420" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:00:51.671647" elapsed="0.000841"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T01:00:51.672602" elapsed="0.000079"/>
</return>
<msg time="2026-04-08T01:00:51.672953" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T01:00:51.670812" elapsed="0.002220"/>
</kw>
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T01:00:51.682514" level="INFO">GET Request : url=http://10.30.170.48:8181/rests/data/network-topology:network-topology?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01s3bfo0y24i1es90l47mavglv0.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T01:00:51.682842" level="INFO">GET Response : url=http://10.30.170.48:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '2973'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}} 
 </msg>
<msg time="2026-04-08T01:00:51.683077" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${RFC8040_OPERATIONAL_TOPO_API}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T01:00:51.673418" elapsed="0.009696"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:00:51.686890" level="INFO">{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}}</msg>
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:00:51.683416" elapsed="0.003568"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Should Not Contain" owner="BuiltIn">
<msg time="2026-04-08T01:00:51.694051" level="FAIL">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}}' contains 'openflow:1'</msg>
<arg>${resp.text}</arg>
<arg>openflow:${switch}</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="FAIL" start="2026-04-08T01:00:51.690438" elapsed="0.003771">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}}' contains 'openflow:1'</status>
</kw>
<var name="${switch}">1</var>
<status status="FAIL" start="2026-04-08T01:00:51.690208" elapsed="0.004168">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}}' contains 'openflow:1'</status>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="FAIL" start="2026-04-08T01:00:51.687060" elapsed="0.007429">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}}' contains 'openflow:1'</status>
</for>
<arg>${SWITCHES}</arg>
<doc>Check no switch is in topology</doc>
<status status="FAIL" start="2026-04-08T01:00:51.669754" elapsed="0.024907">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}}' contains 'openflow:1'</status>
</kw>
<kw name="Check No Switches On Member" owner="ClusterOpenFlow">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:00:52.698465" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:00:52.697687" elapsed="0.000847"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T01:00:52.698651" elapsed="0.000080"/>
</return>
<msg time="2026-04-08T01:00:52.699003" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T01:00:52.696845" elapsed="0.002216"/>
</kw>
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T01:00:52.707625" level="INFO">GET Request : url=http://10.30.170.48:8181/rests/data/network-topology:network-topology?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01s3bfo0y24i1es90l47mavglv0.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T01:00:52.707955" level="INFO">GET Response : url=http://10.30.170.48:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '2973'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}} 
 </msg>
<msg time="2026-04-08T01:00:52.708117" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${RFC8040_OPERATIONAL_TOPO_API}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T01:00:52.699473" elapsed="0.008700"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:00:52.712354" level="INFO">{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}}</msg>
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:00:52.708459" elapsed="0.004062"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Should Not Contain" owner="BuiltIn">
<msg time="2026-04-08T01:00:52.719569" level="FAIL">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}}' contains 'openflow:1'</msg>
<arg>${resp.text}</arg>
<arg>openflow:${switch}</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="FAIL" start="2026-04-08T01:00:52.715964" elapsed="0.003740">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}}' contains 'openflow:1'</status>
</kw>
<var name="${switch}">1</var>
<status status="FAIL" start="2026-04-08T01:00:52.715734" elapsed="0.004096">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}}' contains 'openflow:1'</status>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="FAIL" start="2026-04-08T01:00:52.712598" elapsed="0.007387">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}}' contains 'openflow:1'</status>
</for>
<arg>${SWITCHES}</arg>
<doc>Check no switch is in topology</doc>
<status status="FAIL" start="2026-04-08T01:00:52.695753" elapsed="0.024428">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}}' contains 'openflow:1'</status>
</kw>
<kw name="Check No Switches On Member" owner="ClusterOpenFlow">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:00:53.724265" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:00:53.723451" elapsed="0.000889"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T01:00:53.724466" elapsed="0.000081"/>
</return>
<msg time="2026-04-08T01:00:53.724822" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T01:00:53.722543" elapsed="0.002336"/>
</kw>
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T01:00:53.734855" level="INFO">GET Request : url=http://10.30.170.48:8181/rests/data/network-topology:network-topology?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01s3bfo0y24i1es90l47mavglv0.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T01:00:53.735116" level="INFO">GET Response : url=http://10.30.170.48:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '2973'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}} 
 </msg>
<msg time="2026-04-08T01:00:53.735322" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${RFC8040_OPERATIONAL_TOPO_API}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T01:00:53.725261" elapsed="0.010089"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:00:53.738188" level="INFO">{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}}</msg>
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:00:53.735569" elapsed="0.002690"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Should Not Contain" owner="BuiltIn">
<msg time="2026-04-08T01:00:53.745453" level="FAIL">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}}' contains 'openflow:1'</msg>
<arg>${resp.text}</arg>
<arg>openflow:${switch}</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="FAIL" start="2026-04-08T01:00:53.741700" elapsed="0.003890">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}}' contains 'openflow:1'</status>
</kw>
<var name="${switch}">1</var>
<status status="FAIL" start="2026-04-08T01:00:53.741465" elapsed="0.004312">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}}' contains 'openflow:1'</status>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="FAIL" start="2026-04-08T01:00:53.738319" elapsed="0.007576">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}}' contains 'openflow:1'</status>
</for>
<arg>${SWITCHES}</arg>
<doc>Check no switch is in topology</doc>
<status status="FAIL" start="2026-04-08T01:00:53.721313" elapsed="0.024766">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}}' contains 'openflow:1'</status>
</kw>
<kw name="Check No Switches On Member" owner="ClusterOpenFlow">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:00:54.750004" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:00:54.749211" elapsed="0.000865"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T01:00:54.750235" elapsed="0.000087"/>
</return>
<msg time="2026-04-08T01:00:54.750630" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T01:00:54.748287" elapsed="0.002444"/>
</kw>
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T01:00:54.760569" level="INFO">GET Request : url=http://10.30.170.48:8181/rests/data/network-topology:network-topology?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01s3bfo0y24i1es90l47mavglv0.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T01:00:54.760926" level="INFO">GET Response : url=http://10.30.170.48:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '2973'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}} 
 </msg>
<msg time="2026-04-08T01:00:54.761105" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${RFC8040_OPERATIONAL_TOPO_API}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T01:00:54.751132" elapsed="0.010013"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:00:54.768019" level="INFO">{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}}</msg>
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:00:54.761549" elapsed="0.006765"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Should Not Contain" owner="BuiltIn">
<msg time="2026-04-08T01:00:54.776213" level="FAIL">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}}' contains 'openflow:1'</msg>
<arg>${resp.text}</arg>
<arg>openflow:${switch}</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="FAIL" start="2026-04-08T01:00:54.772399" elapsed="0.003952">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}}' contains 'openflow:1'</status>
</kw>
<var name="${switch}">1</var>
<status status="FAIL" start="2026-04-08T01:00:54.772139" elapsed="0.004341">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}}' contains 'openflow:1'</status>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="FAIL" start="2026-04-08T01:00:54.768440" elapsed="0.008212">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}}' contains 'openflow:1'</status>
</for>
<arg>${SWITCHES}</arg>
<doc>Check no switch is in topology</doc>
<status status="FAIL" start="2026-04-08T01:00:54.747255" elapsed="0.029582">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}}' contains 'openflow:1'</status>
</kw>
<kw name="Check No Switches On Member" owner="ClusterOpenFlow">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:00:55.779938" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:00:55.779346" elapsed="0.000649"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T01:00:55.780078" elapsed="0.000057"/>
</return>
<msg time="2026-04-08T01:00:55.780356" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T01:00:55.778659" elapsed="0.001735"/>
</kw>
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T01:00:55.788388" level="INFO">GET Request : url=http://10.30.170.48:8181/rests/data/network-topology:network-topology?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01s3bfo0y24i1es90l47mavglv0.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T01:00:55.788731" level="INFO">GET Response : url=http://10.30.170.48:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '2973'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}} 
 </msg>
<msg time="2026-04-08T01:00:55.788977" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${RFC8040_OPERATIONAL_TOPO_API}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T01:00:55.780633" elapsed="0.008383"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:00:55.793265" level="INFO">{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}}</msg>
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:00:55.789394" elapsed="0.003997"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Should Not Contain" owner="BuiltIn">
<msg time="2026-04-08T01:00:55.801792" level="FAIL">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}}' contains 'openflow:1'</msg>
<arg>${resp.text}</arg>
<arg>openflow:${switch}</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="FAIL" start="2026-04-08T01:00:55.797388" elapsed="0.004581">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}}' contains 'openflow:1'</status>
</kw>
<var name="${switch}">1</var>
<status status="FAIL" start="2026-04-08T01:00:55.797118" elapsed="0.005080">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}}' contains 'openflow:1'</status>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="FAIL" start="2026-04-08T01:00:55.793472" elapsed="0.008848">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}}' contains 'openflow:1'</status>
</for>
<arg>${SWITCHES}</arg>
<doc>Check no switch is in topology</doc>
<status status="FAIL" start="2026-04-08T01:00:55.777783" elapsed="0.024727">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}}' contains 'openflow:1'</status>
</kw>
<kw name="Check No Switches On Member" owner="ClusterOpenFlow">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:00:56.806519" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:00:56.805668" elapsed="0.000922"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T01:00:56.806707" elapsed="0.000148"/>
</return>
<msg time="2026-04-08T01:00:56.807252" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T01:00:56.804789" elapsed="0.002525"/>
</kw>
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T01:00:56.815803" level="INFO">GET Request : url=http://10.30.170.48:8181/rests/data/network-topology:network-topology?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01s3bfo0y24i1es90l47mavglv0.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T01:00:56.816140" level="INFO">GET Response : url=http://10.30.170.48:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '2973'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}} 
 </msg>
<msg time="2026-04-08T01:00:56.816340" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${RFC8040_OPERATIONAL_TOPO_API}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T01:00:56.807669" elapsed="0.008708"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:00:56.820670" level="INFO">{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}}</msg>
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:00:56.816669" elapsed="0.004164"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Should Not Contain" owner="BuiltIn">
<msg time="2026-04-08T01:00:56.828669" level="FAIL">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}}' contains 'openflow:1'</msg>
<arg>${resp.text}</arg>
<arg>openflow:${switch}</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="FAIL" start="2026-04-08T01:00:56.824546" elapsed="0.004267">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}}' contains 'openflow:1'</status>
</kw>
<var name="${switch}">1</var>
<status status="FAIL" start="2026-04-08T01:00:56.824309" elapsed="0.004633">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}}' contains 'openflow:1'</status>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="FAIL" start="2026-04-08T01:00:56.820916" elapsed="0.008194">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}}' contains 'openflow:1'</status>
</for>
<arg>${SWITCHES}</arg>
<doc>Check no switch is in topology</doc>
<status status="FAIL" start="2026-04-08T01:00:56.803639" elapsed="0.025680">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}}' contains 'openflow:1'</status>
</kw>
<kw name="Check No Switches On Member" owner="ClusterOpenFlow">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:00:57.833116" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:00:57.832393" elapsed="0.000819"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T01:00:57.833328" elapsed="0.000078"/>
</return>
<msg time="2026-04-08T01:00:57.833679" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T01:00:57.831544" elapsed="0.002201"/>
</kw>
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T01:00:57.843319" level="INFO">GET Request : url=http://10.30.170.48:8181/rests/data/network-topology:network-topology?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01s3bfo0y24i1es90l47mavglv0.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T01:00:57.843831" level="INFO">GET Response : url=http://10.30.170.48:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '2973'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}} 
 </msg>
<msg time="2026-04-08T01:00:57.844217" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${RFC8040_OPERATIONAL_TOPO_API}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T01:00:57.834146" elapsed="0.010132"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:00:57.849074" level="INFO">{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}}</msg>
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:00:57.844713" elapsed="0.004481"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Should Not Contain" owner="BuiltIn">
<msg time="2026-04-08T01:00:57.856753" level="FAIL">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}}' contains 'openflow:1'</msg>
<arg>${resp.text}</arg>
<arg>openflow:${switch}</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="FAIL" start="2026-04-08T01:00:57.852849" elapsed="0.004048">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}}' contains 'openflow:1'</status>
</kw>
<var name="${switch}">1</var>
<status status="FAIL" start="2026-04-08T01:00:57.852608" elapsed="0.004467">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}}' contains 'openflow:1'</status>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="FAIL" start="2026-04-08T01:00:57.849278" elapsed="0.007939">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}}' contains 'openflow:1'</status>
</for>
<arg>${SWITCHES}</arg>
<doc>Check no switch is in topology</doc>
<status status="FAIL" start="2026-04-08T01:00:57.830428" elapsed="0.026978">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}}' contains 'openflow:1'</status>
</kw>
<kw name="Check No Switches On Member" owner="ClusterOpenFlow">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:00:58.861271" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:00:58.860497" elapsed="0.000844"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T01:00:58.861455" elapsed="0.000077"/>
</return>
<msg time="2026-04-08T01:00:58.861827" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T01:00:58.859661" elapsed="0.002224"/>
</kw>
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T01:00:58.870664" level="INFO">GET Request : url=http://10.30.170.48:8181/rests/data/network-topology:network-topology?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01s3bfo0y24i1es90l47mavglv0.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T01:00:58.870911" level="INFO">GET Response : url=http://10.30.170.48:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '2973'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}} 
 </msg>
<msg time="2026-04-08T01:00:58.871029" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${RFC8040_OPERATIONAL_TOPO_API}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T01:00:58.862268" elapsed="0.008787"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:00:58.874080" level="INFO">{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}}</msg>
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:00:58.871279" elapsed="0.002943"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Should Not Contain" owner="BuiltIn">
<msg time="2026-04-08T01:00:58.879711" level="FAIL">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}}' contains 'openflow:1'</msg>
<arg>${resp.text}</arg>
<arg>openflow:${switch}</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="FAIL" start="2026-04-08T01:00:58.876720" elapsed="0.003152">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}}' contains 'openflow:1'</status>
</kw>
<var name="${switch}">1</var>
<status status="FAIL" start="2026-04-08T01:00:58.876551" elapsed="0.003469">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}}' contains 'openflow:1'</status>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="FAIL" start="2026-04-08T01:00:58.874288" elapsed="0.005894">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}}' contains 'openflow:1'</status>
</for>
<arg>${SWITCHES}</arg>
<doc>Check no switch is in topology</doc>
<status status="FAIL" start="2026-04-08T01:00:58.858562" elapsed="0.021799">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}}' contains 'openflow:1'</status>
</kw>
<kw name="Check No Switches On Member" owner="ClusterOpenFlow">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:00:59.884352" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:00:59.883533" elapsed="0.000890"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T01:00:59.884542" elapsed="0.000095"/>
</return>
<msg time="2026-04-08T01:00:59.884930" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T01:00:59.882666" elapsed="0.002323"/>
</kw>
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T01:00:59.894240" level="INFO">GET Request : url=http://10.30.170.48:8181/rests/data/network-topology:network-topology?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01s3bfo0y24i1es90l47mavglv0.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T01:00:59.894556" level="INFO">GET Response : url=http://10.30.170.48:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '2973'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}} 
 </msg>
<msg time="2026-04-08T01:00:59.894774" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${RFC8040_OPERATIONAL_TOPO_API}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T01:00:59.885408" elapsed="0.009395"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:00:59.898541" level="INFO">{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}}</msg>
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:00:59.895066" elapsed="0.003597"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Should Not Contain" owner="BuiltIn">
<msg time="2026-04-08T01:00:59.906068" level="FAIL">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}}' contains 'openflow:1'</msg>
<arg>${resp.text}</arg>
<arg>openflow:${switch}</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="FAIL" start="2026-04-08T01:00:59.902427" elapsed="0.003755">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}}' contains 'openflow:1'</status>
</kw>
<var name="${switch}">1</var>
<status status="FAIL" start="2026-04-08T01:00:59.902179" elapsed="0.004124">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}}' contains 'openflow:1'</status>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="FAIL" start="2026-04-08T01:00:59.898759" elapsed="0.007625">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}}' contains 'openflow:1'</status>
</for>
<arg>${SWITCHES}</arg>
<doc>Check no switch is in topology</doc>
<status status="FAIL" start="2026-04-08T01:00:59.881447" elapsed="0.025064">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}}' contains 'openflow:1'</status>
</kw>
<kw name="Check No Switches On Member" owner="ClusterOpenFlow">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:01:00.910391" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:01:00.909538" elapsed="0.000923"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T01:01:00.910579" elapsed="0.000082"/>
</return>
<msg time="2026-04-08T01:01:00.910961" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T01:01:00.908528" elapsed="0.002490"/>
</kw>
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T01:01:00.919591" level="INFO">GET Request : url=http://10.30.170.48:8181/rests/data/network-topology:network-topology?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01s3bfo0y24i1es90l47mavglv0.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T01:01:00.919919" level="INFO">GET Response : url=http://10.30.170.48:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '2973'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}} 
 </msg>
<msg time="2026-04-08T01:01:00.920083" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${RFC8040_OPERATIONAL_TOPO_API}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T01:01:00.911404" elapsed="0.008715"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:00.924314" level="INFO">{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}}</msg>
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:00.920425" elapsed="0.004117"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Should Not Contain" owner="BuiltIn">
<msg time="2026-04-08T01:01:00.931666" level="FAIL">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}}' contains 'openflow:1'</msg>
<arg>${resp.text}</arg>
<arg>openflow:${switch}</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="FAIL" start="2026-04-08T01:01:00.928022" elapsed="0.003779">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}}' contains 'openflow:1'</status>
</kw>
<var name="${switch}">1</var>
<status status="FAIL" start="2026-04-08T01:01:00.927789" elapsed="0.004139">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}}' contains 'openflow:1'</status>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="FAIL" start="2026-04-08T01:01:00.924622" elapsed="0.007449">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}}' contains 'openflow:1'</status>
</for>
<arg>${SWITCHES}</arg>
<doc>Check no switch is in topology</doc>
<status status="FAIL" start="2026-04-08T01:01:00.907504" elapsed="0.024762">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}}' contains 'openflow:1'</status>
</kw>
<kw name="Check No Switches On Member" owner="ClusterOpenFlow">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:01:01.936126" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:01:01.935338" elapsed="0.000891"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T01:01:01.936366" elapsed="0.000084"/>
</return>
<msg time="2026-04-08T01:01:01.936754" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T01:01:01.934439" elapsed="0.002380"/>
</kw>
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T01:01:01.944357" level="INFO">GET Request : url=http://10.30.170.48:8181/rests/data/network-topology:network-topology?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01s3bfo0y24i1es90l47mavglv0.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T01:01:01.944679" level="INFO">GET Response : url=http://10.30.170.48:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '2973'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}} 
 </msg>
<msg time="2026-04-08T01:01:01.944914" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${RFC8040_OPERATIONAL_TOPO_API}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T01:01:01.937314" elapsed="0.007637"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:01.948792" level="INFO">{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}}</msg>
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:01.945302" elapsed="0.003584"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Should Not Contain" owner="BuiltIn">
<msg time="2026-04-08T01:01:01.956124" level="FAIL">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}}' contains 'openflow:1'</msg>
<arg>${resp.text}</arg>
<arg>openflow:${switch}</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="FAIL" start="2026-04-08T01:01:01.952537" elapsed="0.003743">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}}' contains 'openflow:1'</status>
</kw>
<var name="${switch}">1</var>
<status status="FAIL" start="2026-04-08T01:01:01.952305" elapsed="0.004139">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}}' contains 'openflow:1'</status>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="FAIL" start="2026-04-08T01:01:01.948965" elapsed="0.007591">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}}' contains 'openflow:1'</status>
</for>
<arg>${SWITCHES}</arg>
<doc>Check no switch is in topology</doc>
<status status="FAIL" start="2026-04-08T01:01:01.933329" elapsed="0.023405">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}}' contains 'openflow:1'</status>
</kw>
<kw name="Check No Switches On Member" owner="ClusterOpenFlow">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:01:02.961328" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:01:02.960195" elapsed="0.001211"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T01:01:02.961531" elapsed="0.000084"/>
</return>
<msg time="2026-04-08T01:01:02.961910" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T01:01:02.959229" elapsed="0.002743"/>
</kw>
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T01:01:02.976685" level="INFO">GET Request : url=http://10.30.170.48:8181/rests/data/network-topology:network-topology?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01s3bfo0y24i1es90l47mavglv0.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T01:01:02.977248" level="INFO">GET Response : url=http://10.30.170.48:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '2973'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}} 
 </msg>
<msg time="2026-04-08T01:01:02.977510" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${RFC8040_OPERATIONAL_TOPO_API}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T01:01:02.962449" elapsed="0.015118"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:02.984098" level="INFO">{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}}</msg>
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:02.978010" elapsed="0.006358"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Should Not Contain" owner="BuiltIn">
<msg time="2026-04-08T01:01:02.991950" level="FAIL">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}}' contains 'openflow:1'</msg>
<arg>${resp.text}</arg>
<arg>openflow:${switch}</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="FAIL" start="2026-04-08T01:01:02.988359" elapsed="0.003727">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}}' contains 'openflow:1'</status>
</kw>
<var name="${switch}">1</var>
<status status="FAIL" start="2026-04-08T01:01:02.988106" elapsed="0.004127">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}}' contains 'openflow:1'</status>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="FAIL" start="2026-04-08T01:01:02.984492" elapsed="0.008063">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}}' contains 'openflow:1'</status>
</for>
<arg>${SWITCHES}</arg>
<doc>Check no switch is in topology</doc>
<status status="FAIL" start="2026-04-08T01:01:02.957936" elapsed="0.034863">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}}' contains 'openflow:1'</status>
</kw>
<kw name="Check No Switches On Member" owner="ClusterOpenFlow">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:01:03.995334" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:01:03.994826" elapsed="0.000554"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T01:01:03.995457" elapsed="0.000054"/>
</return>
<msg time="2026-04-08T01:01:03.995684" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T01:01:03.994313" elapsed="0.001406"/>
</kw>
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T01:01:04.003545" level="INFO">GET Request : url=http://10.30.170.48:8181/rests/data/network-topology:network-topology?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01s3bfo0y24i1es90l47mavglv0.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T01:01:04.003872" level="INFO">GET Response : url=http://10.30.170.48:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '2973'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}} 
 </msg>
<msg time="2026-04-08T01:01:04.004102" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${RFC8040_OPERATIONAL_TOPO_API}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T01:01:03.995942" elapsed="0.008197"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:04.007943" level="INFO">{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}}</msg>
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:04.004439" elapsed="0.003598"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Should Not Contain" owner="BuiltIn">
<msg time="2026-04-08T01:01:04.015599" level="FAIL">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}}' contains 'openflow:1'</msg>
<arg>${resp.text}</arg>
<arg>openflow:${switch}</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="FAIL" start="2026-04-08T01:01:04.011587" elapsed="0.004148">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}}' contains 'openflow:1'</status>
</kw>
<var name="${switch}">1</var>
<status status="FAIL" start="2026-04-08T01:01:04.011347" elapsed="0.004602">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}}' contains 'openflow:1'</status>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="FAIL" start="2026-04-08T01:01:04.008116" elapsed="0.007959">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}}' contains 'openflow:1'</status>
</for>
<arg>${SWITCHES}</arg>
<doc>Check no switch is in topology</doc>
<status status="FAIL" start="2026-04-08T01:01:03.993600" elapsed="0.022676">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}}' contains 'openflow:1'</status>
</kw>
<kw name="Check No Switches On Member" owner="ClusterOpenFlow">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:01:05.021464" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:01:05.020594" elapsed="0.000939"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T01:01:05.021653" elapsed="0.000082"/>
</return>
<msg time="2026-04-08T01:01:05.022095" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T01:01:05.019751" elapsed="0.002403"/>
</kw>
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T01:01:05.032019" level="INFO">GET Request : url=http://10.30.170.48:8181/rests/data/network-topology:network-topology?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01s3bfo0y24i1es90l47mavglv0.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T01:01:05.032692" level="INFO">GET Response : url=http://10.30.170.48:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '2973'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}} 
 </msg>
<msg time="2026-04-08T01:01:05.032992" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${RFC8040_OPERATIONAL_TOPO_API}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T01:01:05.022556" elapsed="0.010538"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:05.040631" level="INFO">{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}}</msg>
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:05.033605" elapsed="0.007278"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Should Not Contain" owner="BuiltIn">
<msg time="2026-04-08T01:01:05.047041" level="FAIL">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}}' contains 'openflow:1'</msg>
<arg>${resp.text}</arg>
<arg>openflow:${switch}</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="FAIL" start="2026-04-08T01:01:05.044002" elapsed="0.003201">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}}' contains 'openflow:1'</status>
</kw>
<var name="${switch}">1</var>
<status status="FAIL" start="2026-04-08T01:01:05.043830" elapsed="0.003506">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}}' contains 'openflow:1'</status>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="FAIL" start="2026-04-08T01:01:05.041016" elapsed="0.006479">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}}' contains 'openflow:1'</status>
</for>
<arg>${SWITCHES}</arg>
<doc>Check no switch is in topology</doc>
<status status="FAIL" start="2026-04-08T01:01:05.018670" elapsed="0.029010">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}}' contains 'openflow:1'</status>
</kw>
<kw name="Check No Switches On Member" owner="ClusterOpenFlow">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:01:06.051410" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:01:06.050603" elapsed="0.000874"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T01:01:06.051595" elapsed="0.000078"/>
</return>
<msg time="2026-04-08T01:01:06.051945" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T01:01:06.049775" elapsed="0.002225"/>
</kw>
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T01:01:06.061035" level="INFO">GET Request : url=http://10.30.170.48:8181/rests/data/network-topology:network-topology?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01s3bfo0y24i1es90l47mavglv0.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T01:01:06.061308" level="INFO">GET Response : url=http://10.30.170.48:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '2973'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}} 
 </msg>
<msg time="2026-04-08T01:01:06.061484" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${RFC8040_OPERATIONAL_TOPO_API}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T01:01:06.052384" elapsed="0.009126"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:06.064235" level="INFO">{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}}</msg>
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:06.061719" elapsed="0.002584"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Should Not Contain" owner="BuiltIn">
<msg time="2026-04-08T01:01:06.070433" level="FAIL">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}}' contains 'openflow:1'</msg>
<arg>${resp.text}</arg>
<arg>openflow:${switch}</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="FAIL" start="2026-04-08T01:01:06.066766" elapsed="0.003800">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}}' contains 'openflow:1'</status>
</kw>
<var name="${switch}">1</var>
<status status="FAIL" start="2026-04-08T01:01:06.066599" elapsed="0.004156">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}}' contains 'openflow:1'</status>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="FAIL" start="2026-04-08T01:01:06.064361" elapsed="0.006507">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}}' contains 'openflow:1'</status>
</for>
<arg>${SWITCHES}</arg>
<doc>Check no switch is in topology</doc>
<status status="FAIL" start="2026-04-08T01:01:06.048728" elapsed="0.022314">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}}' contains 'openflow:1'</status>
</kw>
<kw name="Check No Switches On Member" owner="ClusterOpenFlow">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:01:07.074715" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:01:07.073923" elapsed="0.000859"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T01:01:07.074899" elapsed="0.000079"/>
</return>
<msg time="2026-04-08T01:01:07.075288" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T01:01:07.073081" elapsed="0.002264"/>
</kw>
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T01:01:07.084363" level="INFO">GET Request : url=http://10.30.170.48:8181/rests/data/network-topology:network-topology?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01s3bfo0y24i1es90l47mavglv0.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T01:01:07.084691" level="INFO">GET Response : url=http://10.30.170.48:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '2973'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}} 
 </msg>
<msg time="2026-04-08T01:01:07.084855" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${RFC8040_OPERATIONAL_TOPO_API}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T01:01:07.075730" elapsed="0.009162"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:07.089220" level="INFO">{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}}</msg>
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:07.085202" elapsed="0.004168"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Should Not Contain" owner="BuiltIn">
<msg time="2026-04-08T01:01:07.096531" level="FAIL">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}}' contains 'openflow:1'</msg>
<arg>${resp.text}</arg>
<arg>openflow:${switch}</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="FAIL" start="2026-04-08T01:01:07.092891" elapsed="0.003775">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}}' contains 'openflow:1'</status>
</kw>
<var name="${switch}">1</var>
<status status="FAIL" start="2026-04-08T01:01:07.092659" elapsed="0.004134">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}}' contains 'openflow:1'</status>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="FAIL" start="2026-04-08T01:01:07.089449" elapsed="0.007491">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}}' contains 'openflow:1'</status>
</for>
<arg>${SWITCHES}</arg>
<doc>Check no switch is in topology</doc>
<status status="FAIL" start="2026-04-08T01:01:07.071989" elapsed="0.025341">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}}' contains 'openflow:1'</status>
</kw>
<kw name="Check No Switches On Member" owner="ClusterOpenFlow">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:01:08.099982" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:01:08.099475" elapsed="0.000555"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T01:01:08.100112" elapsed="0.000078"/>
</return>
<msg time="2026-04-08T01:01:08.100376" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T01:01:08.098912" elapsed="0.001501"/>
</kw>
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T01:01:08.108278" level="INFO">GET Request : url=http://10.30.170.48:8181/rests/data/network-topology:network-topology?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01s3bfo0y24i1es90l47mavglv0.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T01:01:08.108626" level="INFO">GET Response : url=http://10.30.170.48:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '2973'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}} 
 </msg>
<msg time="2026-04-08T01:01:08.108879" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${RFC8040_OPERATIONAL_TOPO_API}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T01:01:08.100650" elapsed="0.008268"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:08.112972" level="INFO">{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}}</msg>
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:08.109236" elapsed="0.003838"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Should Not Contain" owner="BuiltIn">
<msg time="2026-04-08T01:01:08.120833" level="FAIL">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}}' contains 'openflow:1'</msg>
<arg>${resp.text}</arg>
<arg>openflow:${switch}</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="FAIL" start="2026-04-08T01:01:08.116828" elapsed="0.004144">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}}' contains 'openflow:1'</status>
</kw>
<var name="${switch}">1</var>
<status status="FAIL" start="2026-04-08T01:01:08.116528" elapsed="0.004618">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}}' contains 'openflow:1'</status>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="FAIL" start="2026-04-08T01:01:08.113175" elapsed="0.008113">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}}' contains 'openflow:1'</status>
</for>
<arg>${SWITCHES}</arg>
<doc>Check no switch is in topology</doc>
<status status="FAIL" start="2026-04-08T01:01:08.098144" elapsed="0.023345">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}}' contains 'openflow:1'</status>
</kw>
<kw name="Check No Switches On Member" owner="ClusterOpenFlow">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:01:09.125266" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:01:09.124490" elapsed="0.000846"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T01:01:09.125457" elapsed="0.000080"/>
</return>
<msg time="2026-04-08T01:01:09.125808" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T01:01:09.123642" elapsed="0.002222"/>
</kw>
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T01:01:09.134512" level="INFO">GET Request : url=http://10.30.170.48:8181/rests/data/network-topology:network-topology?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01s3bfo0y24i1es90l47mavglv0.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T01:01:09.134941" level="INFO">GET Response : url=http://10.30.170.48:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '2973'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}} 
 </msg>
<msg time="2026-04-08T01:01:09.135133" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${RFC8040_OPERATIONAL_TOPO_API}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T01:01:09.126243" elapsed="0.008952"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:09.139844" level="INFO">{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}}</msg>
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:09.135627" elapsed="0.004417"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Should Not Contain" owner="BuiltIn">
<msg time="2026-04-08T01:01:09.147983" level="FAIL">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}}' contains 'openflow:1'</msg>
<arg>${resp.text}</arg>
<arg>openflow:${switch}</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="FAIL" start="2026-04-08T01:01:09.144081" elapsed="0.004049">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}}' contains 'openflow:1'</status>
</kw>
<var name="${switch}">1</var>
<status status="FAIL" start="2026-04-08T01:01:09.143802" elapsed="0.004497">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}}' contains 'openflow:1'</status>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="FAIL" start="2026-04-08T01:01:09.140172" elapsed="0.008296">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}}' contains 'openflow:1'</status>
</for>
<arg>${SWITCHES}</arg>
<doc>Check no switch is in topology</doc>
<status status="FAIL" start="2026-04-08T01:01:09.122580" elapsed="0.026086">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}}' contains 'openflow:1'</status>
</kw>
<kw name="Check No Switches On Member" owner="ClusterOpenFlow">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:01:10.152456" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:01:10.151652" elapsed="0.000873"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T01:01:10.152644" elapsed="0.000080"/>
</return>
<msg time="2026-04-08T01:01:10.152999" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T01:01:10.150779" elapsed="0.002278"/>
</kw>
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T01:01:10.161753" level="INFO">GET Request : url=http://10.30.170.48:8181/rests/data/network-topology:network-topology?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01s3bfo0y24i1es90l47mavglv0.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T01:01:10.161999" level="INFO">GET Response : url=http://10.30.170.48:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '2973'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}} 
 </msg>
<msg time="2026-04-08T01:01:10.162201" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${RFC8040_OPERATIONAL_TOPO_API}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T01:01:10.153466" elapsed="0.008763"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:10.164950" level="INFO">{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}}</msg>
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:10.162444" elapsed="0.002575"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Should Not Contain" owner="BuiltIn">
<msg time="2026-04-08T01:01:10.172155" level="FAIL">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}}' contains 'openflow:1'</msg>
<arg>${resp.text}</arg>
<arg>openflow:${switch}</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="FAIL" start="2026-04-08T01:01:10.168211" elapsed="0.004102">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}}' contains 'openflow:1'</status>
</kw>
<var name="${switch}">1</var>
<status status="FAIL" start="2026-04-08T01:01:10.167958" elapsed="0.004519">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}}' contains 'openflow:1'</status>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="FAIL" start="2026-04-08T01:01:10.165078" elapsed="0.007511">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}}' contains 'openflow:1'</status>
</for>
<arg>${SWITCHES}</arg>
<doc>Check no switch is in topology</doc>
<status status="FAIL" start="2026-04-08T01:01:10.149668" elapsed="0.023096">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}}' contains 'openflow:1'</status>
</kw>
<kw name="Check No Switches On Member" owner="ClusterOpenFlow">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:01:11.175536" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:01:11.174998" elapsed="0.000584"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T01:01:11.175661" elapsed="0.000056"/>
</return>
<msg time="2026-04-08T01:01:11.175888" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T01:01:11.174484" elapsed="0.001439"/>
</kw>
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T01:01:11.183275" level="INFO">GET Request : url=http://10.30.170.48:8181/rests/data/network-topology:network-topology?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01s3bfo0y24i1es90l47mavglv0.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T01:01:11.183597" level="INFO">GET Response : url=http://10.30.170.48:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '2973'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}} 
 </msg>
<msg time="2026-04-08T01:01:11.183759" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${RFC8040_OPERATIONAL_TOPO_API}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T01:01:11.176145" elapsed="0.007650"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:11.187937" level="INFO">{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}}</msg>
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:11.184077" elapsed="0.004023"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Should Not Contain" owner="BuiltIn">
<msg time="2026-04-08T01:01:11.194569" level="FAIL">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}}' contains 'openflow:1'</msg>
<arg>${resp.text}</arg>
<arg>openflow:${switch}</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="FAIL" start="2026-04-08T01:01:11.191564" elapsed="0.003102">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}}' contains 'openflow:1'</status>
</kw>
<var name="${switch}">1</var>
<status status="FAIL" start="2026-04-08T01:01:11.191337" elapsed="0.003420">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}}' contains 'openflow:1'</status>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="FAIL" start="2026-04-08T01:01:11.188196" elapsed="0.006664">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}}' contains 'openflow:1'</status>
</for>
<arg>${SWITCHES}</arg>
<doc>Check no switch is in topology</doc>
<status status="FAIL" start="2026-04-08T01:01:11.173620" elapsed="0.021363">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}}' contains 'openflow:1'</status>
</kw>
<kw name="Check No Switches On Member" owner="ClusterOpenFlow">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:01:12.198814" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:01:12.198002" elapsed="0.000881"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T01:01:12.199005" elapsed="0.000084"/>
</return>
<msg time="2026-04-08T01:01:12.199398" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T01:01:12.197192" elapsed="0.002262"/>
</kw>
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T01:01:12.207969" level="INFO">GET Request : url=http://10.30.170.48:8181/rests/data/network-topology:network-topology?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01s3bfo0y24i1es90l47mavglv0.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T01:01:12.208232" level="INFO">GET Response : url=http://10.30.170.48:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '2973'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}} 
 </msg>
<msg time="2026-04-08T01:01:12.208410" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${RFC8040_OPERATIONAL_TOPO_API}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T01:01:12.199805" elapsed="0.008632"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:12.211166" level="INFO">{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}}</msg>
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:12.208642" elapsed="0.002594"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Should Not Contain" owner="BuiltIn">
<msg time="2026-04-08T01:01:12.216901" level="FAIL">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}}' contains 'openflow:1'</msg>
<arg>${resp.text}</arg>
<arg>openflow:${switch}</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="FAIL" start="2026-04-08T01:01:12.213734" elapsed="0.003300">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}}' contains 'openflow:1'</status>
</kw>
<var name="${switch}">1</var>
<status status="FAIL" start="2026-04-08T01:01:12.213557" elapsed="0.003674">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}}' contains 'openflow:1'</status>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="FAIL" start="2026-04-08T01:01:12.211295" elapsed="0.006050">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}}' contains 'openflow:1'</status>
</for>
<arg>${SWITCHES}</arg>
<doc>Check no switch is in topology</doc>
<status status="FAIL" start="2026-04-08T01:01:12.195948" elapsed="0.021571">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}}' contains 'openflow:1'</status>
</kw>
<kw name="Check No Switches On Member" owner="ClusterOpenFlow">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:01:13.221588" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:01:13.220673" elapsed="0.000984"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T01:01:13.221775" elapsed="0.000094"/>
</return>
<msg time="2026-04-08T01:01:13.222211" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T01:01:13.219806" elapsed="0.002468"/>
</kw>
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T01:01:13.231649" level="INFO">GET Request : url=http://10.30.170.48:8181/rests/data/network-topology:network-topology?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01s3bfo0y24i1es90l47mavglv0.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T01:01:13.231900" level="INFO">GET Response : url=http://10.30.170.48:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '2973'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}} 
 </msg>
<msg time="2026-04-08T01:01:13.232025" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${RFC8040_OPERATIONAL_TOPO_API}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T01:01:13.222638" elapsed="0.009418"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:13.236274" level="INFO">{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}}</msg>
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:13.232292" elapsed="0.004109"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Should Not Contain" owner="BuiltIn">
<msg time="2026-04-08T01:01:13.242617" level="FAIL">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}}' contains 'openflow:1'</msg>
<arg>${resp.text}</arg>
<arg>openflow:${switch}</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="FAIL" start="2026-04-08T01:01:13.238938" elapsed="0.003812">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}}' contains 'openflow:1'</status>
</kw>
<var name="${switch}">1</var>
<status status="FAIL" start="2026-04-08T01:01:13.238768" elapsed="0.004111">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}}' contains 'openflow:1'</status>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="FAIL" start="2026-04-08T01:01:13.236460" elapsed="0.006614">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}}' contains 'openflow:1'</status>
</for>
<arg>${SWITCHES}</arg>
<doc>Check no switch is in topology</doc>
<status status="FAIL" start="2026-04-08T01:01:13.218619" elapsed="0.024674">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}}' contains 'openflow:1'</status>
</kw>
<kw name="Check No Switches On Member" owner="ClusterOpenFlow">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:01:14.246934" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:01:14.246198" elapsed="0.000804"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T01:01:14.247179" elapsed="0.000084"/>
</return>
<msg time="2026-04-08T01:01:14.247538" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T01:01:14.245373" elapsed="0.002221"/>
</kw>
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T01:01:14.257021" level="INFO">GET Request : url=http://10.30.170.48:8181/rests/data/network-topology:network-topology?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01s3bfo0y24i1es90l47mavglv0.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T01:01:14.257633" level="INFO">GET Response : url=http://10.30.170.48:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '2973'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}} 
 </msg>
<msg time="2026-04-08T01:01:14.258144" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${RFC8040_OPERATIONAL_TOPO_API}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T01:01:14.247948" elapsed="0.010289"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:14.263270" level="INFO">{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}}</msg>
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:14.258815" elapsed="0.004556"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Should Not Contain" owner="BuiltIn">
<msg time="2026-04-08T01:01:14.270301" level="FAIL">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}}' contains 'openflow:1'</msg>
<arg>${resp.text}</arg>
<arg>openflow:${switch}</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="FAIL" start="2026-04-08T01:01:14.266890" elapsed="0.003520">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}}' contains 'openflow:1'</status>
</kw>
<var name="${switch}">1</var>
<status status="FAIL" start="2026-04-08T01:01:14.266642" elapsed="0.003902">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}}' contains 'openflow:1'</status>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="FAIL" start="2026-04-08T01:01:14.263460" elapsed="0.007167">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}}' contains 'openflow:1'</status>
</for>
<arg>${SWITCHES}</arg>
<doc>Check no switch is in topology</doc>
<status status="FAIL" start="2026-04-08T01:01:14.244278" elapsed="0.026495">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}}' contains 'openflow:1'</status>
</kw>
<msg time="2026-04-08T01:01:14.270948" level="FAIL">Keyword 'ClusterOpenFlow.Check No Switches On Member' failed after retrying for 30 seconds. The last error was: '{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}}' contains 'openflow:1'</msg>
<arg>30s</arg>
<arg>1s</arg>
<arg>ClusterOpenFlow.Check No Switches On Member</arg>
<arg>${SWITCHES}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="FAIL" start="2026-04-08T01:00:43.448453" elapsed="30.822625">Keyword 'ClusterOpenFlow.Check No Switches On Member' failed after retrying for 30 seconds. The last error was: '{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}}' contains 'openflow:1'</status>
</kw>
<doc>Check no switches in topology.</doc>
<status status="FAIL" start="2026-04-08T01:00:43.166969" elapsed="31.104333">Keyword 'ClusterOpenFlow.Check No Switches On Member' failed after retrying for 30 seconds. The last error was: '{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}}' contains 'openflow:1'</status>
</test>
<test id="s1-s4-t39" name="Check Switch Is Not Connected" line="281">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-08T01:01:14.274979" elapsed="0.000252"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-08T01:01:14.274638" elapsed="0.000652"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:01:14.276420" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:01:14.276288" elapsed="0.000183"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:14.276264" elapsed="0.000232"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:01:14.282621" elapsed="0.000019"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:01:14.282471" elapsed="0.000213"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:14.282445" elapsed="0.000361"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:01:14.284263" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:01:14.283700" elapsed="0.000600"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:01:14.284946" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:01:14.284527" elapsed="0.000455"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T01:01:14.285043" elapsed="0.000045"/>
</return>
<msg time="2026-04-08T01:01:14.285284" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T01:01:14.283138" elapsed="0.002181"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:01:14.292463" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:01:14.292353" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:14.292334" elapsed="0.000196"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:01:14.293717" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:01:14.293609" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:14.293592" elapsed="0.000193"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:01:14.294280" level="INFO">${karaf_connection_index} = 476</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:01:14.293949" elapsed="0.000358"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:01:14.294747" level="INFO">${current_connection_index} = 495</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:01:14.294470" elapsed="0.000303"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:01:14.331046" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:01:14.295312" elapsed="0.035840"/>
</kw>
<msg time="2026-04-08T01:01:14.331344" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T01:01:14.331391" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:01:14.294934" elapsed="0.036493"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T01:01:14.375241" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "S "w "i "t "c "h "[C "I "s "[C "N "o "t "[C "C "o "n "n "e "c "t "e "d "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T01:01:14.331953" elapsed="0.043397"/>
</kw>
<msg time="2026-04-08T01:01:14.375521" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T01:01:14.375568" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "S "w "i "t "c "h...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:01:14.331604" elapsed="0.044000"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:14.375938" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:01:14.375689" elapsed="0.000307"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:14.375666" elapsed="0.000354"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:14.376500" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "S "w "i "t "c "h "[C "I "s "[C "N "o "t "[C "C "o "n "n "e "c "t "e "d "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:14.376191" elapsed="0.000390"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:14.376943" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:01:14.376703" elapsed="0.000298"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:14.376682" elapsed="0.000343"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T01:01:14.377059" elapsed="0.000032"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:01:14.379667" elapsed="0.000189"/>
</kw>
<msg time="2026-04-08T01:01:14.379919" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:01:14.378621" elapsed="0.001440"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:14.380450" elapsed="0.000078"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:14.380791" elapsed="0.000075"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:01:14.377955" elapsed="0.003025"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T01:01:14.377377" elapsed="0.003673"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T01:01:14.293307" elapsed="0.087845"/>
</kw>
<msg time="2026-04-08T01:01:14.381277" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:01:14.381324" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "S "w "i "t "c "h...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:01:14.292682" elapsed="0.088678"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T01:01:14.381797" elapsed="0.000029"/>
</return>
<status status="PASS" start="2026-04-08T01:01:14.381443" elapsed="0.000422"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:14.381422" elapsed="0.000468"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:14.382318" elapsed="0.000027"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:14.382806" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T01:01:14.382881" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T01:01:14.292003" elapsed="0.090987"/>
</kw>
<msg time="2026-04-08T01:01:14.383085" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:01:14.383130" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "S "w "i "t "c "h...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:01:14.285827" elapsed="0.097355"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:14.383517" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:01:14.383262" elapsed="0.000310"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:14.383244" elapsed="0.000352"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T01:01:14.285627" elapsed="0.097994"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:01:14.389096" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:01:14.388988" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:14.388968" elapsed="0.000291"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:01:14.390443" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:01:14.390333" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:14.390315" elapsed="0.000195"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:01:14.390954" level="INFO">${karaf_connection_index} = 478</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:01:14.390658" elapsed="0.000324"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:01:14.391413" level="INFO">${current_connection_index} = 495</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:01:14.391143" elapsed="0.000296"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:01:14.420831" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:01:14.391937" elapsed="0.029082"/>
</kw>
<msg time="2026-04-08T01:01:14.421366" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T01:01:14.421417" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:01:14.391601" elapsed="0.029853"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T01:01:14.454266" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "S "w "i "t "c "h "[C "I "s "[C "N "o "t "[C "C "o "n "n "e "c "t "e "d "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T01:01:14.422199" elapsed="0.032179"/>
</kw>
<msg time="2026-04-08T01:01:14.454541" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T01:01:14.454588" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "S "w "i "t "c "h...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:01:14.421713" elapsed="0.032911"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:14.455012" elapsed="0.000029"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:01:14.454729" elapsed="0.000351"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:14.454699" elapsed="0.000414"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:14.455652" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "S "w "i "t "c "h "[C "I "s "[C "N "o "t "[C "C "o "n "n "e "c "t "e "d "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:14.455326" elapsed="0.000398"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:14.456018" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:01:14.455795" elapsed="0.000277"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:14.455775" elapsed="0.000321"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T01:01:14.456134" elapsed="0.000058"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:01:14.458925" elapsed="0.000192"/>
</kw>
<msg time="2026-04-08T01:01:14.459195" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:01:14.457772" elapsed="0.001565"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:14.459639" elapsed="0.000077"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:14.459980" elapsed="0.000074"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:01:14.457093" elapsed="0.003095"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T01:01:14.456493" elapsed="0.003764"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T01:01:14.390002" elapsed="0.070356"/>
</kw>
<msg time="2026-04-08T01:01:14.460455" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:01:14.460500" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "S "w "i "t "c "h...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:01:14.389421" elapsed="0.071116"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T01:01:14.460725" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-08T01:01:14.460617" elapsed="0.000167"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:14.460597" elapsed="0.000211"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 2,
close the previous connection. In any case create a new connection
to karaf console for 2, set correct prompt set and login to karaf console.
Store connection index for 2 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:14.461550" elapsed="0.000029"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:14.461899" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T01:01:14.461970" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T01:01:14.388642" elapsed="0.073435"/>
</kw>
<msg time="2026-04-08T01:01:14.462198" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:01:14.462245" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "S "w "i "t "c "h...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:01:14.383896" elapsed="0.078384"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:14.462654" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:01:14.462400" elapsed="0.000307"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:14.462381" elapsed="0.000348"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T01:01:14.383750" elapsed="0.079003"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:01:14.468271" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:01:14.468147" elapsed="0.000168"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:14.468128" elapsed="0.000209"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:01:14.469501" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:01:14.469392" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:14.469373" elapsed="0.000195"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:01:14.470017" level="INFO">${karaf_connection_index} = 480</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:01:14.469715" elapsed="0.000335"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:01:14.470498" level="INFO">${current_connection_index} = 495</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:01:14.470238" elapsed="0.000287"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:01:14.503219" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:01:14.471038" elapsed="0.032305"/>
</kw>
<msg time="2026-04-08T01:01:14.503509" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T01:01:14.503556" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:01:14.470698" elapsed="0.032892"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T01:01:14.542195" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "S "w "i "t "c "h "[C "I "s "[C "N "o "t "[C "C "o "n "n "e "c "t "e "d "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T01:01:14.504130" elapsed="0.038188"/>
</kw>
<msg time="2026-04-08T01:01:14.542488" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T01:01:14.542534" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "S "w "i "t "c "h...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:01:14.503773" elapsed="0.038799"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:14.542927" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:01:14.542665" elapsed="0.000320"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:14.542637" elapsed="0.000374"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:14.543514" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "S "w "i "t "c "h "[C "I "s "[C "N "o "t "[C "C "o "n "n "e "c "t "e "d "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:14.543190" elapsed="0.000395"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:14.543872" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:01:14.543653" elapsed="0.000272"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:14.543634" elapsed="0.000314"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T01:01:14.543984" elapsed="0.000037"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:01:14.546669" elapsed="0.000188"/>
</kw>
<msg time="2026-04-08T01:01:14.546918" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:01:14.545572" elapsed="0.001482"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:14.547356" elapsed="0.000075"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:14.547684" elapsed="0.000074"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:01:14.544912" elapsed="0.002956"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T01:01:14.544347" elapsed="0.003584"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T01:01:14.469061" elapsed="0.079064"/>
</kw>
<msg time="2026-04-08T01:01:14.548249" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:01:14.548293" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "S "w "i "t "c "h...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:01:14.468490" elapsed="0.079840"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T01:01:14.548519" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-08T01:01:14.548410" elapsed="0.000168"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:14.548389" elapsed="0.000213"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 3,
close the previous connection. In any case create a new connection
to karaf console for 3, set correct prompt set and login to karaf console.
Store connection index for 3 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:14.549002" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:14.549361" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T01:01:14.549433" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T01:01:14.467800" elapsed="0.081741"/>
</kw>
<msg time="2026-04-08T01:01:14.549638" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:01:14.549682" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "S "w "i "t "c "h...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:01:14.463034" elapsed="0.086684"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:14.550287" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:01:14.549794" elapsed="0.000549"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:14.549777" elapsed="0.000590"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T01:01:14.462887" elapsed="0.087503"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-08T01:01:14.285393" elapsed="0.265032"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-08T01:01:14.281944" elapsed="0.268544"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-08T01:01:14.275949" elapsed="0.274599"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:01:14.275456" elapsed="0.275170"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-08T01:01:14.272361" elapsed="0.278322"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Should Be Disconnected" owner="OvsManager">
<kw name="OvsManager__Is_Connected" owner="OvsManager">
<if>
<branch type="IF" condition="${update_data}==${True}">
<kw name="Get Ovsdb Data" owner="OvsManager">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:01:14.556470" level="INFO">sh ovs-vsctl list Bridge</msg>
<arg>${lcmd_prefix} ${SH_BR_CMD}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:01:14.553262" elapsed="0.003264"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-08T01:01:14.637264" level="INFO">_uuid               : 9bcfbeed-47e0-4406-b63a-1c7efd018616
auto_attach         : []
controller          : [243fe3ab-9d09-4f6a-95c7-66f44ce44370, 42dcabae-83d0-4b2e-85c3-6afd38cf9dbe, 62c52bac-35ce-4da8-8345-1607faceb933]
datapath_id         : "0000000000000002"
datapath_type       : ""
datapath_version    : "&lt;unknown&gt;"
external_ids        : {}
fail_mode           : standalone
flood_vlans         : []
flow_tables         : {}
ipfix               : []
mcast_snooping_enable: false
mirrors             : []
name                : s2
netflow             : []
other_config        : {datapath-id="0000000000000002", disable-in-band="true", dp-desc=s2}
ports               : [3cf70080-6935-4da8-954a-60707cd2aa95, 6731aacc-32ec-4fcd-b0fb-8f97da3f3aaa, ce33b3d8-209b-438d-83d6-c050bc8aee26, d86f10c2-9d40-484c-a7d6-6e88fed82e11]
protocols           : [OpenFlow13]
rstp_enable         : false
rstp_status         : {}
sflow               : []
status              : {}
stp_enable          : false

_uuid               : 60c187c3-58d7-430d-bef7-bbbc3131fa87
auto_attach         : []
controller          : [1968464f-4637-41c7-a481-9eba89956be9, d41b7df8-53ff-40ff-acd4-14e5125234e4, f2bbc0c3-faee-4472-91b2-cdaff2b5204c]
datapath_id         : "0000000000000003"
datapath_type       : ""
datapath_version    : "&lt;unknown&gt;"
external_ids        : {}
fail_mode           : standalone
flood_vlans         : []
flow_tables         : {}
ipfix               : []
mcast_snooping_enable: false
mirrors             : []
name                : s3
netflow             : []
other_config        : {datapath-id="0000000000000003", disable-in-band="true", dp-desc=s3}
ports               : [7915a530-8449-433a-9306-00cddaf3116b, 8069abcf-4250-428c-858a-bf539517ea14, e98007ce-09cd-4834-83d3-70a858f2f481]
protocols           : [OpenFlow13]
rstp_enable         : false
rstp_status         : {}
sflow               : []
status              : {}
stp_enable          : false

_uuid               : 5bd045e7-95e2-49c7-a6be-cc2541636f0b
auto_attach         : []
controller          : [90572501-522a-42c1-ae3d-252f978971ed, b82e7dd4-18f4-4c87-9075-dd7aeb12e9e8, ef6c3b9f-b37d-44ed-b461-11afe8598daf]
datapath_id         : "0000000000000001"
datapath_type       : ""
datapath_version    : "&lt;unknown&gt;"
external_ids        : {}
fail_mode           : standalone
flood_vlans         : []
flow_tables         : {}
ipfix               : []
mcast_snooping_enable: false
mirrors             : []
name                : s1
netflow             : []
other_config        : {datapath-id="0000000000000001", disable-in-band="true", dp-desc=s1}
ports               : [00da38e5-71ff-48bc-bf39-436bd14bfea5, 32ff594e-effb-41a0-aa0f-1df856411422, f9c97d36-c254-491b-a311-602fd640aa36]
protocols           : [OpenFlow13]
rstp_enable         : false
rstp_status         : {}
sflow               : []
status              : {}
stp_enable          : false
mininet&gt;</msg>
<msg time="2026-04-08T01:01:14.637591" level="INFO">${brstdout} = _uuid               : 9bcfbeed-47e0-4406-b63a-1c7efd018616
auto_attach         : []
controller          : [243fe3ab-9d09-4f6a-95c7-66f44ce44370, 42dcabae-83d0-4b2e-85c3-6afd38cf9dbe, 62c52bac-35ce-4...</msg>
<var>${brstdout}</var>
<arg>${lprompt}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-08T01:01:14.556692" elapsed="0.080930"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:14.638335" level="INFO">_uuid               : 9bcfbeed-47e0-4406-b63a-1c7efd018616
auto_attach         : []
controller          : [243fe3ab-9d09-4f6a-95c7-66f44ce44370, 42dcabae-83d0-4b2e-85c3-6afd38cf9dbe, 62c52bac-35ce-4da8-8345-1607faceb933]
datapath_id         : "0000000000000002"
datapath_type       : ""
datapath_version    : "&lt;unknown&gt;"
external_ids        : {}
fail_mode           : standalone
flood_vlans         : []
flow_tables         : {}
ipfix               : []
mcast_snooping_enable: false
mirrors             : []
name                : s2
netflow             : []
other_config        : {datapath-id="0000000000000002", disable-in-band="true", dp-desc=s2}
ports               : [3cf70080-6935-4da8-954a-60707cd2aa95, 6731aacc-32ec-4fcd-b0fb-8f97da3f3aaa, ce33b3d8-209b-438d-83d6-c050bc8aee26, d86f10c2-9d40-484c-a7d6-6e88fed82e11]
protocols           : [OpenFlow13]
rstp_enable         : false
rstp_status         : {}
sflow               : []
status              : {}
stp_enable          : false

_uuid               : 60c187c3-58d7-430d-bef7-bbbc3131fa87
auto_attach         : []
controller          : [1968464f-4637-41c7-a481-9eba89956be9, d41b7df8-53ff-40ff-acd4-14e5125234e4, f2bbc0c3-faee-4472-91b2-cdaff2b5204c]
datapath_id         : "0000000000000003"
datapath_type       : ""
datapath_version    : "&lt;unknown&gt;"
external_ids        : {}
fail_mode           : standalone
flood_vlans         : []
flow_tables         : {}
ipfix               : []
mcast_snooping_enable: false
mirrors             : []
name                : s3
netflow             : []
other_config        : {datapath-id="0000000000000003", disable-in-band="true", dp-desc=s3}
ports               : [7915a530-8449-433a-9306-00cddaf3116b, 8069abcf-4250-428c-858a-bf539517ea14, e98007ce-09cd-4834-83d3-70a858f2f481]
protocols           : [OpenFlow13]
rstp_enable         : false
rstp_status         : {}
sflow               : []
status              : {}
stp_enable          : false

_uuid               : 5bd045e7-95e2-49c7-a6be-cc2541636f0b
auto_attach         : []
controller          : [90572501-522a-42c1-ae3d-252f978971ed, b82e7dd4-18f4-4c87-9075-dd7aeb12e9e8, ef6c3b9f-b37d-44ed-b461-11afe8598daf]
datapath_id         : "0000000000000001"
datapath_type       : ""
datapath_version    : "&lt;unknown&gt;"
external_ids        : {}
fail_mode           : standalone
flood_vlans         : []
flow_tables         : {}
ipfix               : []
mcast_snooping_enable: false
mirrors             : []
name                : s1
netflow             : []
other_config        : {datapath-id="0000000000000001", disable-in-band="true", dp-desc=s1}
ports               : [00da38e5-71ff-48bc-bf39-436bd14bfea5, 32ff594e-effb-41a0-aa0f-1df856411422, f9c97d36-c254-491b-a311-602fd640aa36]
protocols           : [OpenFlow13]
rstp_enable         : false
rstp_status         : {}
sflow               : []
status              : {}
stp_enable          : false
mininet&gt;</msg>
<arg>${brstdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:14.637948" elapsed="0.000466"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:01:14.640367" level="INFO">sh ovs-vsctl list Controller</msg>
<arg>${lcmd_prefix} ${SH_CNTL_CMD}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:01:14.638590" elapsed="0.001834"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-08T01:01:14.697354" level="INFO">_uuid               : d41b7df8-53ff-40ff-acd4-14e5125234e4
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : true
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : slave
status              : {sec_since_connect="164", state=ACTIVE}
target              : "tcp:10.30.171.110:6633"
type                : []

_uuid               : 90572501-522a-42c1-ae3d-252f978971ed
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : true
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : slave
status              : {sec_since_connect="165", state=ACTIVE}
target              : "tcp:10.30.170.131:6633"
type                : []

_uuid               : 243fe3ab-9d09-4f6a-95c7-66f44ce44370
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : true
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : slave
status              : {sec_since_connect="165", state=ACTIVE}
target              : "tcp:10.30.171.110:6633"
type                : []

_uuid               : f2bbc0c3-faee-4472-91b2-cdaff2b5204c
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : true
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : master
status              : {sec_since_connect="164", state=ACTIVE}
target              : "tcp:10.30.170.48:6633"
type                : []

_uuid               : b82e7dd4-18f4-4c87-9075-dd7aeb12e9e8
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : true
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : slave
status              : {sec_since_connect="165", state=ACTIVE}
target              : "tcp:10.30.171.110:6633"
type                : []

_uuid               : 62c52bac-35ce-4da8-8345-1607faceb933
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : true
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : master
status              : {sec_since_connect="165", state=ACTIVE}
target              : "tcp:10.30.170.48:6633"
type                : []

_uuid               : 42dcabae-83d0-4b2e-85c3-6afd38cf9dbe
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : true
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : slave
status              : {sec_since_connect="165", state=ACTIVE}
target              : "tcp:10.30.170.131:6633"
type                : []

_uuid               : ef6c3b9f-b37d-44ed-b461-11afe8598daf
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : true
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : master
status              : {sec_since_connect="165", state=ACTIVE}
target              : "tcp:10.30.170.48:6633"
type                : []

_uuid               : 1968464f-4637-41c7-a481-9eba89956be9
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : true
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : slave
status              : {sec_since_connect="164", state=ACTIVE}
target              : "tcp:10.30.170.131:6633"
type                : []
mininet&gt;</msg>
<msg time="2026-04-08T01:01:14.697670" level="INFO">${cntlstdout} = _uuid               : d41b7df8-53ff-40ff-acd4-14e5125234e4
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
exter...</msg>
<var>${cntlstdout}</var>
<arg>${lprompt}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-08T01:01:14.640590" elapsed="0.057111"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:14.698412" level="INFO">_uuid               : d41b7df8-53ff-40ff-acd4-14e5125234e4
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : true
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : slave
status              : {sec_since_connect="164", state=ACTIVE}
target              : "tcp:10.30.171.110:6633"
type                : []

_uuid               : 90572501-522a-42c1-ae3d-252f978971ed
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : true
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : slave
status              : {sec_since_connect="165", state=ACTIVE}
target              : "tcp:10.30.170.131:6633"
type                : []

_uuid               : 243fe3ab-9d09-4f6a-95c7-66f44ce44370
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : true
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : slave
status              : {sec_since_connect="165", state=ACTIVE}
target              : "tcp:10.30.171.110:6633"
type                : []

_uuid               : f2bbc0c3-faee-4472-91b2-cdaff2b5204c
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : true
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : master
status              : {sec_since_connect="164", state=ACTIVE}
target              : "tcp:10.30.170.48:6633"
type                : []

_uuid               : b82e7dd4-18f4-4c87-9075-dd7aeb12e9e8
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : true
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : slave
status              : {sec_since_connect="165", state=ACTIVE}
target              : "tcp:10.30.171.110:6633"
type                : []

_uuid               : 62c52bac-35ce-4da8-8345-1607faceb933
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : true
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : master
status              : {sec_since_connect="165", state=ACTIVE}
target              : "tcp:10.30.170.48:6633"
type                : []

_uuid               : 42dcabae-83d0-4b2e-85c3-6afd38cf9dbe
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : true
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : slave
status              : {sec_since_connect="165", state=ACTIVE}
target              : "tcp:10.30.170.131:6633"
type                : []

_uuid               : ef6c3b9f-b37d-44ed-b461-11afe8598daf
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : true
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : master
status              : {sec_since_connect="165", state=ACTIVE}
target              : "tcp:10.30.170.48:6633"
type                : []

_uuid               : 1968464f-4637-41c7-a481-9eba89956be9
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : true
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : slave
status              : {sec_since_connect="164", state=ACTIVE}
target              : "tcp:10.30.170.131:6633"
type                : []
mininet&gt;</msg>
<arg>${cntlstdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:14.698007" elapsed="0.000499"/>
</kw>
<kw name="Parse" owner="VsctlListParser">
<msg time="2026-04-08T01:01:14.699924" level="INFO">_uuid:9bcfbeed-47e0-4406-b63a-1c7efd018616
auto_attach:[]
controller:[243fe3ab-9d09-4f6a-95c7-66f44ce44370,42dcabae-83d0-4b2e-85c3-6afd38cf9dbe,62c52bac-35ce-4da8-8345-1607faceb933]
datapath_id:"0000000000000002"
datapath_type:""
datapath_version:"&lt;unknown&gt;"
external_ids:{}
fail_mode:standalone
flood_vlans:[]
flow_tables:{}
ipfix:[]
mcast_snooping_enable:false
mirrors:[]
name:s2
netflow:[]
other_config:{datapath-id="0000000000000002",disable-in-band="true",dp-desc=s2}
ports:[3cf70080-6935-4da8-954a-60707cd2aa95,6731aacc-32ec-4fcd-b0fb-8f97da3f3aaa,ce33b3d8-209b-438d-83d6-c050bc8aee26,d86f10c2-9d40-484c-a7d6-6e88fed82e11]
protocols:[OpenFlow13]
rstp_enable:false
rstp_status:{}
sflow:[]
status:{}
stp_enable:false
_uuid:60c187c3-58d7-430d-bef7-bbbc3131fa87
auto_attach:[]
controller:[1968464f-4637-41c7-a481-9eba89956be9,d41b7df8-53ff-40ff-acd4-14e5125234e4,f2bbc0c3-faee-4472-91b2-cdaff2b5204c]
datapath_id:"0000000000000003"
datapath_type:""
datapath_version:"&lt;unknown&gt;"
external_ids:{}
fail_mode:standalone
flood_vlans:[]
flow_tables:{}
ipfix:[]
mcast_snooping_enable:false
mirrors:[]
name:s3
netflow:[]
other_config:{datapath-id="0000000000000003",disable-in-band="true",dp-desc=s3}
ports:[7915a530-8449-433a-9306-00cddaf3116b,8069abcf-4250-428c-858a-bf539517ea14,e98007ce-09cd-4834-83d3-70a858f2f481]
protocols:[OpenFlow13]
rstp_enable:false
rstp_status:{}
sflow:[]
status:{}
stp_enable:false
_uuid:5bd045e7-95e2-49c7-a6be-cc2541636f0b
auto_attach:[]
controller:[90572501-522a-42c1-ae3d-252f978971ed,b82e7dd4-18f4-4c87-9075-dd7aeb12e9e8,ef6c3b9f-b37d-44ed-b461-11afe8598daf]
datapath_id:"0000000000000001"
datapath_type:""
datapath_version:"&lt;unknown&gt;"
external_ids:{}
fail_mode:standalone
flood_vlans:[]
flow_tables:{}
ipfix:[]
mcast_snooping_enable:false
mirrors:[]
name:s1
netflow:[]
other_config:{datapath-id="0000000000000001",disable-in-band="true",dp-desc=s1}
ports:[00da38e5-71ff-48bc-bf39-436bd14bfea5,32ff594e-effb-41a0-aa0f-1df856411422,f9c97d36-c254-491b-a311-602fd640aa36]
protocols:[OpenFlow13]
rstp_enable:false
rstp_status:{}
sflow:[]
status:{}
stp_enable:false
_uuid:d41b7df8-53ff-40ff-acd4-14e5125234e4
connection_mode:[]
controller_burst_limit:[]
controller_queue_size:[]
controller_rate_limit:[]
enable_async_messages:[]
external_ids:{}
inactivity_probe:[]
is_connected:true
local_gateway:[]
local_ip:[]
local_netmask:[]
max_backoff:[]
other_config:{}
role:slave
status:{sec_since_connect="164",state=ACTIVE}
target:"tcp:10.30.171.110:6633"
type:[]
_uuid:90572501-522a-42c1-ae3d-252f978971ed
connection_mode:[]
controller_burst_limit:[]
controller_queue_size:[]
controller_rate_limit:[]
enable_async_messages:[]
external_ids:{}
inactivity_probe:[]
is_connected:true
local_gateway:[]
local_ip:[]
local_netmask:[]
max_backoff:[]
other_config:{}
role:slave
status:{sec_since_connect="165",state=ACTIVE}
target:"tcp:10.30.170.131:6633"
type:[]
_uuid:243fe3ab-9d09-4f6a-95c7-66f44ce44370
connection_mode:[]
controller_burst_limit:[]
controller_queue_size:[]
controller_rate_limit:[]
enable_async_messages:[]
external_ids:{}
inactivity_probe:[]
is_connected:true
local_gateway:[]
local_ip:[]
local_netmask:[]
max_backoff:[]
other_config:{}
role:slave
status:{sec_since_connect="165",state=ACTIVE}
target:"tcp:10.30.171.110:6633"
type:[]
_uuid:f2bbc0c3-faee-4472-91b2-cdaff2b5204c
connection_mode:[]
controller_burst_limit:[]
controller_queue_size:[]
controller_rate_limit:[]
enable_async_messages:[]
external_ids:{}
inactivity_probe:[]
is_connected:true
local_gateway:[]
local_ip:[]
local_netmask:[]
max_backoff:[]
other_config:{}
role:master
status:{sec_since_connect="164",state=ACTIVE}
target:"tcp:10.30.170.48:6633"
type:[]
_uuid:b82e7dd4-18f4-4c87-9075-dd7aeb12e9e8
connection_mode:[]
controller_burst_limit:[]
controller_queue_size:[]
controller_rate_limit:[]
enable_async_messages:[]
external_ids:{}
inactivity_probe:[]
is_connected:true
local_gateway:[]
local_ip:[]
local_netmask:[]
max_backoff:[]
other_config:{}
role:slave
status:{sec_since_connect="165",state=ACTIVE}
target:"tcp:10.30.171.110:6633"
type:[]
_uuid:62c52bac-35ce-4da8-8345-1607faceb933
connection_mode:[]
controller_burst_limit:[]
controller_queue_size:[]
controller_rate_limit:[]
enable_async_messages:[]
external_ids:{}
inactivity_probe:[]
is_connected:true
local_gateway:[]
local_ip:[]
local_netmask:[]
max_backoff:[]
other_config:{}
role:master
status:{sec_since_connect="165",state=ACTIVE}
target:"tcp:10.30.170.48:6633"
type:[]
_uuid:42dcabae-83d0-4b2e-85c3-6afd38cf9dbe
connection_mode:[]
controller_burst_limit:[]
controller_queue_size:[]
controller_rate_limit:[]
enable_async_messages:[]
external_ids:{}
inactivity_probe:[]
is_connected:true
local_gateway:[]
local_ip:[]
local_netmask:[]
max_backoff:[]
other_config:{}
role:slave
status:{sec_since_connect="165",state=ACTIVE}
target:"tcp:10.30.170.131:6633"
type:[]
_uuid:ef6c3b9f-b37d-44ed-b461-11afe8598daf
connection_mode:[]
controller_burst_limit:[]
controller_queue_size:[]
controller_rate_limit:[]
enable_async_messages:[]
external_ids:{}
inactivity_probe:[]
is_connected:true
local_gateway:[]
local_ip:[]
local_netmask:[]
max_backoff:[]
other_config:{}
role:master
status:{sec_since_connect="165",state=ACTIVE}
target:"tcp:10.30.170.48:6633"
type:[]
_uuid:1968464f-4637-41c7-a481-9eba89956be9
connection_mode:[]
controller_burst_limit:[]
controller_queue_size:[]
controller_rate_limit:[]
enable_async_messages:[]
external_ids:{}
inactivity_probe:[]
is_connected:true
local_gateway:[]
local_ip:[]
local_netmask:[]
max_backoff:[]
other_config:{}
role:slave
status:{sec_since_connect="164",state=ACTIVE}
target:"tcp:10.30.170.131:6633"
type:[]</msg>
<msg time="2026-04-08T01:01:14.700141" level="INFO">${data} = {'': {'_uuid': '5bd045e7-95e2-49c7-a6be-cc2541636f0b', 'auto_attach': '[]', 'controller': {'10.30.170.131': {'_uuid': '90572501-522a-42c1-ae3d-252f978971ed', 'connection_mode': '[]', 'controller_burst...</msg>
<msg time="2026-04-08T01:01:14.700232" level="INFO">${bridegs} = {'9bcfbeed-47e0-4406-b63a-1c7efd018616': {'_uuid': '9bcfbeed-47e0-4406-b63a-1c7efd018616', 'auto_attach': '[]', 'controller': '[243fe3ab-9d09-4f6a-95c7-66f44ce44370,42dcabae-83d0-4b2e-85c3-6afd38cf9db...</msg>
<msg time="2026-04-08T01:01:14.700335" level="INFO">${controllers} = {'d41b7df8-53ff-40ff-acd4-14e5125234e4': {'_uuid': 'd41b7df8-53ff-40ff-acd4-14e5125234e4', 'connection_mode': '[]', 'controller_burst_limit': '[]', 'controller_queue_size': '[]', 'controller_rate_limi...</msg>
<var>${data}</var>
<var>${bridegs}</var>
<var>${controllers}</var>
<arg>${brstdout}</arg>
<arg>${cntlstdout}</arg>
<doc>Produces dictionary with data for future usege</doc>
<status status="PASS" start="2026-04-08T01:01:14.698699" elapsed="0.001662"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:14.700808" level="INFO">{'': {'_uuid': '5bd045e7-95e2-49c7-a6be-cc2541636f0b', 'auto_attach': '[]', 'controller': {'10.30.170.131': {'_uuid': '90572501-522a-42c1-ae3d-252f978971ed', 'connection_mode': '[]', 'controller_burst_limit': '[]', 'controller_queue_size': '[]', 'controller_rate_limit': '[]', 'enable_async_messages': '[]', 'external_ids': '{}', 'inactivity_probe': '[]', 'is_connected': True, 'local_gateway': '[]', 'local_ip': '[]', 'local_netmask': '[]', 'max_backoff': '[]', 'other_config': '{}', 'role': 'slave', 'status': '{sec_since_connect="165",state=ACTIVE}', 'target': '"tcp:10.30.170.131:6633"', 'type': '[]'}, '10.30.171.110': {'_uuid': 'b82e7dd4-18f4-4c87-9075-dd7aeb12e9e8', 'connection_mode': '[]', 'controller_burst_limit': '[]', 'controller_queue_size': '[]', 'controller_rate_limit': '[]', 'enable_async_messages': '[]', 'external_ids': '{}', 'inactivity_probe': '[]', 'is_connected': True, 'local_gateway': '[]', 'local_ip': '[]', 'local_netmask': '[]', 'max_backoff': '[]', 'other_config': '{}', 'role': 'slave', 'status': '{sec_since_connect="165",state=ACTIVE}', 'target': '"tcp:10.30.171.110:6633"', 'type': '[]'}, '10.30.170.48': {'_uuid': 'ef6c3b9f-b37d-44ed-b461-11afe8598daf', 'connection_mode': '[]', 'controller_burst_limit': '[]', 'controller_queue_size': '[]', 'controller_rate_limit': '[]', 'enable_async_messages': '[]', 'external_ids': '{}', 'inactivity_probe': '[]', 'is_connected': True, 'local_gateway': '[]', 'local_ip': '[]', 'local_netmask': '[]', 'max_backoff': '[]', 'other_config': '{}', 'role': 'master', 'status': '{sec_since_connect="165",state=ACTIVE}', 'target': '"tcp:10.30.170.48:6633"', 'type': '[]'}}, 'datapath_id': '"0000000000000001"', 'datapath_type': '""', 'datapath_version': '"&lt;unknown&gt;"', 'external_ids': '{}', 'fail_mode': 'standalone', 'flood_vlans': '[]', 'flow_tables': '{}', 'ipfix': '[]', 'mcast_snooping_enable': 'false', 'mirrors': '[]', 'name': 's1', 'netflow': '[]', 'other_config': '{datapath-id="0000000000000001",disable-in-band="true",dp-desc=s1}', 'ports': '[00da38e5-71ff-48bc-bf39-436bd14bfea5,32ff594e-effb-41a0-aa0f-1df856411422,f9c97d36-c254-491b-a311-602fd640aa36]', 'protocols': '[OpenFlow13]', 'rstp_enable': 'false', 'rstp_status': '{}', 'sflow': '[]', 'status': '{}', 'stp_enable': 'false'}}</msg>
<arg>${data}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:14.700531" elapsed="0.000341"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-08T01:01:14.701493" level="INFO">${ovs_switch_data} = {'': {'_uuid': '5bd045e7-95e2-49c7-a6be-cc2541636f0b', 'auto_attach': '[]', 'controller': {'10.30.170.131': {'_uuid': '90572501-522a-42c1-ae3d-252f978971ed', 'connection_mode': '[]', 'controller_burst...</msg>
<arg>${ovs_switch_data}</arg>
<arg>${data}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-08T01:01:14.701045" elapsed="0.000492"/>
</kw>
<return>
<value>${data}</value>
<status status="PASS" start="2026-04-08T01:01:14.701590" elapsed="0.000049"/>
</return>
<doc>Gets ovs data and parse them.</doc>
<status status="PASS" start="2026-04-08T01:01:14.552950" elapsed="0.148803"/>
</kw>
<status status="PASS" start="2026-04-08T01:01:14.552639" elapsed="0.149148"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:14.552622" elapsed="0.149200"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:01:14.702228" level="FAIL">Dictionary does not contain key 's1'.</msg>
<var>${bridge}</var>
<arg>${ovs_switch_data}</arg>
<arg>${switch}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="FAIL" start="2026-04-08T01:01:14.701979" elapsed="0.000366">Dictionary does not contain key 's1'.</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${cntls}</var>
<arg>${bridge}</arg>
<arg>controller</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:14.702516" elapsed="0.000021"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${cntl}</var>
<arg>${cntls}</arg>
<arg>${controller}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:14.702711" elapsed="0.000021"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${connected}</var>
<arg>${cntl}</arg>
<arg>is_connected</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:14.702881" elapsed="0.000020"/>
</kw>
<return>
<value>${connected}</value>
<status status="NOT RUN" start="2026-04-08T01:01:14.702947" elapsed="0.000016"/>
</return>
<kw name="Execute OvsVsctl Show Command" owner="OvsManager" type="TEARDOWN">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:01:14.705281" level="INFO">sh ovs-vsctl show</msg>
<arg>${lcmd_prefix} ovs-vsctl show</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:01:14.703605" elapsed="0.001732"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-08T01:01:14.725738" level="INFO">9a5df812-eb49-4477-a37e-2d464c02791d
    Bridge s1
        Controller "tcp:10.30.170.131:6633"
            is_connected: true
        Controller "tcp:10.30.171.110:6633"
            is_connected: true
        Controller "tcp:10.30.170.48:6633"
            is_connected: true
        fail_mode: standalone
        Port s1-eth1
            Interface s1-eth1
        Port s1-eth2
            Interface s1-eth2
        Port s1
            Interface s1
                type: internal
    Bridge s3
        Controller "tcp:10.30.170.131:6633"
            is_connected: true
        Controller "tcp:10.30.171.110:6633"
            is_connected: true
        Controller "tcp:10.30.170.48:6633"
            is_connected: true
        fail_mode: standalone
        Port s3-eth2
            Interface s3-eth2
        Port s3-eth1
            Interface s3-eth1
        Port s3
            Interface s3
                type: internal
    Bridge s2
        Controller "tcp:10.30.171.110:6633"
            is_connected: true
        Controller "tcp:10.30.170.131:6633"
            is_connected: true
        Controller "tcp:10.30.170.48:6633"
            is_connected: true
        fail_mode: standalone
        Port s2-eth1
            Interface s2-eth1
        Port s2-eth2
            Interface s2-eth2
        Port s2-eth3
            Interface s2-eth3
        Port s2
            Interface s2
                type: internal
    ovs_version: "2.17.11"
mininet&gt;</msg>
<msg time="2026-04-08T01:01:14.725847" level="INFO">${output} = 9a5df812-eb49-4477-a37e-2d464c02791d
    Bridge s1
        Controller "tcp:10.30.170.131:6633"
            is_connected: true
        Controller "tcp:10.30.171.110:6633"
            is_connected:...</msg>
<var>${output}</var>
<arg>${lprompt}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-08T01:01:14.705495" elapsed="0.020407"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:14.726364" level="INFO">9a5df812-eb49-4477-a37e-2d464c02791d
    Bridge s1
        Controller "tcp:10.30.170.131:6633"
            is_connected: true
        Controller "tcp:10.30.171.110:6633"
            is_connected: true
        Controller "tcp:10.30.170.48:6633"
            is_connected: true
        fail_mode: standalone
        Port s1-eth1
            Interface s1-eth1
        Port s1-eth2
            Interface s1-eth2
        Port s1
            Interface s1
                type: internal
    Bridge s3
        Controller "tcp:10.30.170.131:6633"
            is_connected: true
        Controller "tcp:10.30.171.110:6633"
            is_connected: true
        Controller "tcp:10.30.170.48:6633"
            is_connected: true
        fail_mode: standalone
        Port s3-eth2
            Interface s3-eth2
        Port s3-eth1
            Interface s3-eth1
        Port s3
            Interface s3
                type: internal
    Bridge s2
        Controller "tcp:10.30.171.110:6633"
            is_connected: true
        Controller "tcp:10.30.170.131:6633"
            is_connected: true
        Controller "tcp:10.30.170.48:6633"
            is_connected: true
        fail_mode: standalone
        Port s2-eth1
            Interface s2-eth1
        Port s2-eth2
            Interface s2-eth2
        Port s2-eth3
            Interface s2-eth3
        Port s2
            Interface s2
                type: internal
    ovs_version: "2.17.11"
mininet&gt;</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:14.726081" elapsed="0.000367"/>
</kw>
<doc>Executes ovs-vsctl show command and returns stdout, no check nor change is performed</doc>
<status status="PASS" start="2026-04-08T01:01:14.703268" elapsed="0.023234"/>
</kw>
<var>${connected}</var>
<arg>${switch}</arg>
<arg>${controller}</arg>
<arg>update_data=${update_data}</arg>
<doc>Return is_connected boolean value</doc>
<status status="FAIL" start="2026-04-08T01:01:14.552279" elapsed="0.174307">Dictionary does not contain key 's1'.</status>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<arg>${connected}</arg>
<arg>${False}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:14.726763" elapsed="0.000022"/>
</kw>
<arg>s1</arg>
<arg>${ODL_SYSTEM_${index}_IP}</arg>
<arg>update_data=${True}</arg>
<doc>Check if the switch is disconnected</doc>
<status status="FAIL" start="2026-04-08T01:01:14.551649" elapsed="0.175223">Dictionary does not contain key 's1'.</status>
</kw>
<kw name="Should Be Disconnected" owner="OvsManager">
<kw name="OvsManager__Is_Connected" owner="OvsManager">
<if>
<branch type="IF" condition="${update_data}==${True}">
<kw name="Get Ovsdb Data" owner="OvsManager">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:01:15.734786" level="INFO">sh ovs-vsctl list Bridge</msg>
<arg>${lcmd_prefix} ${SH_BR_CMD}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:01:15.732072" elapsed="0.002856"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-08T01:01:15.812144" level="INFO">_uuid               : 9bcfbeed-47e0-4406-b63a-1c7efd018616
auto_attach         : []
controller          : [243fe3ab-9d09-4f6a-95c7-66f44ce44370, 42dcabae-83d0-4b2e-85c3-6afd38cf9dbe, 62c52bac-35ce-4da8-8345-1607faceb933]
datapath_id         : "0000000000000002"
datapath_type       : ""
datapath_version    : "&lt;unknown&gt;"
external_ids        : {}
fail_mode           : standalone
flood_vlans         : []
flow_tables         : {}
ipfix               : []
mcast_snooping_enable: false
mirrors             : []
name                : s2
netflow             : []
other_config        : {datapath-id="0000000000000002", disable-in-band="true", dp-desc=s2}
ports               : [3cf70080-6935-4da8-954a-60707cd2aa95, 6731aacc-32ec-4fcd-b0fb-8f97da3f3aaa, ce33b3d8-209b-438d-83d6-c050bc8aee26, d86f10c2-9d40-484c-a7d6-6e88fed82e11]
protocols           : [OpenFlow13]
rstp_enable         : false
rstp_status         : {}
sflow               : []
status              : {}
stp_enable          : false

_uuid               : 60c187c3-58d7-430d-bef7-bbbc3131fa87
auto_attach         : []
controller          : [1968464f-4637-41c7-a481-9eba89956be9, d41b7df8-53ff-40ff-acd4-14e5125234e4, f2bbc0c3-faee-4472-91b2-cdaff2b5204c]
datapath_id         : "0000000000000003"
datapath_type       : ""
datapath_version    : "&lt;unknown&gt;"
external_ids        : {}
fail_mode           : standalone
flood_vlans         : []
flow_tables         : {}
ipfix               : []
mcast_snooping_enable: false
mirrors             : []
name                : s3
netflow             : []
other_config        : {datapath-id="0000000000000003", disable-in-band="true", dp-desc=s3}
ports               : [7915a530-8449-433a-9306-00cddaf3116b, 8069abcf-4250-428c-858a-bf539517ea14, e98007ce-09cd-4834-83d3-70a858f2f481]
protocols           : [OpenFlow13]
rstp_enable         : false
rstp_status         : {}
sflow               : []
status              : {}
stp_enable          : false

_uuid               : 5bd045e7-95e2-49c7-a6be-cc2541636f0b
auto_attach         : []
controller          : [90572501-522a-42c1-ae3d-252f978971ed, b82e7dd4-18f4-4c87-9075-dd7aeb12e9e8, ef6c3b9f-b37d-44ed-b461-11afe8598daf]
datapath_id         : "0000000000000001"
datapath_type       : ""
datapath_version    : "&lt;unknown&gt;"
external_ids        : {}
fail_mode           : standalone
flood_vlans         : []
flow_tables         : {}
ipfix               : []
mcast_snooping_enable: false
mirrors             : []
name                : s1
netflow             : []
other_config        : {datapath-id="0000000000000001", disable-in-band="true", dp-desc=s1}
ports               : [00da38e5-71ff-48bc-bf39-436bd14bfea5, 32ff594e-effb-41a0-aa0f-1df856411422, f9c97d36-c254-491b-a311-602fd640aa36]
protocols           : [OpenFlow13]
rstp_enable         : false
rstp_status         : {}
sflow               : []
status              : {}
stp_enable          : false
mininet&gt;</msg>
<msg time="2026-04-08T01:01:15.812322" level="INFO">${brstdout} = _uuid               : 9bcfbeed-47e0-4406-b63a-1c7efd018616
auto_attach         : []
controller          : [243fe3ab-9d09-4f6a-95c7-66f44ce44370, 42dcabae-83d0-4b2e-85c3-6afd38cf9dbe, 62c52bac-35ce-4...</msg>
<var>${brstdout}</var>
<arg>${lprompt}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-08T01:01:15.735339" elapsed="0.077012"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:15.812934" level="INFO">_uuid               : 9bcfbeed-47e0-4406-b63a-1c7efd018616
auto_attach         : []
controller          : [243fe3ab-9d09-4f6a-95c7-66f44ce44370, 42dcabae-83d0-4b2e-85c3-6afd38cf9dbe, 62c52bac-35ce-4da8-8345-1607faceb933]
datapath_id         : "0000000000000002"
datapath_type       : ""
datapath_version    : "&lt;unknown&gt;"
external_ids        : {}
fail_mode           : standalone
flood_vlans         : []
flow_tables         : {}
ipfix               : []
mcast_snooping_enable: false
mirrors             : []
name                : s2
netflow             : []
other_config        : {datapath-id="0000000000000002", disable-in-band="true", dp-desc=s2}
ports               : [3cf70080-6935-4da8-954a-60707cd2aa95, 6731aacc-32ec-4fcd-b0fb-8f97da3f3aaa, ce33b3d8-209b-438d-83d6-c050bc8aee26, d86f10c2-9d40-484c-a7d6-6e88fed82e11]
protocols           : [OpenFlow13]
rstp_enable         : false
rstp_status         : {}
sflow               : []
status              : {}
stp_enable          : false

_uuid               : 60c187c3-58d7-430d-bef7-bbbc3131fa87
auto_attach         : []
controller          : [1968464f-4637-41c7-a481-9eba89956be9, d41b7df8-53ff-40ff-acd4-14e5125234e4, f2bbc0c3-faee-4472-91b2-cdaff2b5204c]
datapath_id         : "0000000000000003"
datapath_type       : ""
datapath_version    : "&lt;unknown&gt;"
external_ids        : {}
fail_mode           : standalone
flood_vlans         : []
flow_tables         : {}
ipfix               : []
mcast_snooping_enable: false
mirrors             : []
name                : s3
netflow             : []
other_config        : {datapath-id="0000000000000003", disable-in-band="true", dp-desc=s3}
ports               : [7915a530-8449-433a-9306-00cddaf3116b, 8069abcf-4250-428c-858a-bf539517ea14, e98007ce-09cd-4834-83d3-70a858f2f481]
protocols           : [OpenFlow13]
rstp_enable         : false
rstp_status         : {}
sflow               : []
status              : {}
stp_enable          : false

_uuid               : 5bd045e7-95e2-49c7-a6be-cc2541636f0b
auto_attach         : []
controller          : [90572501-522a-42c1-ae3d-252f978971ed, b82e7dd4-18f4-4c87-9075-dd7aeb12e9e8, ef6c3b9f-b37d-44ed-b461-11afe8598daf]
datapath_id         : "0000000000000001"
datapath_type       : ""
datapath_version    : "&lt;unknown&gt;"
external_ids        : {}
fail_mode           : standalone
flood_vlans         : []
flow_tables         : {}
ipfix               : []
mcast_snooping_enable: false
mirrors             : []
name                : s1
netflow             : []
other_config        : {datapath-id="0000000000000001", disable-in-band="true", dp-desc=s1}
ports               : [00da38e5-71ff-48bc-bf39-436bd14bfea5, 32ff594e-effb-41a0-aa0f-1df856411422, f9c97d36-c254-491b-a311-602fd640aa36]
protocols           : [OpenFlow13]
rstp_enable         : false
rstp_status         : {}
sflow               : []
status              : {}
stp_enable          : false
mininet&gt;</msg>
<arg>${brstdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:15.812594" elapsed="0.000487"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:01:15.814770" level="INFO">sh ovs-vsctl list Controller</msg>
<arg>${lcmd_prefix} ${SH_CNTL_CMD}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:01:15.813265" elapsed="0.001561"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-08T01:01:15.869626" level="INFO">_uuid               : d41b7df8-53ff-40ff-acd4-14e5125234e4
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : true
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : slave
status              : {sec_since_connect="169", state=ACTIVE}
target              : "tcp:10.30.171.110:6633"
type                : []

_uuid               : 90572501-522a-42c1-ae3d-252f978971ed
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : true
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : slave
status              : {sec_since_connect="170", state=ACTIVE}
target              : "tcp:10.30.170.131:6633"
type                : []

_uuid               : 243fe3ab-9d09-4f6a-95c7-66f44ce44370
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : true
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : slave
status              : {sec_since_connect="170", state=ACTIVE}
target              : "tcp:10.30.171.110:6633"
type                : []

_uuid               : f2bbc0c3-faee-4472-91b2-cdaff2b5204c
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : true
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : master
status              : {sec_since_connect="169", state=ACTIVE}
target              : "tcp:10.30.170.48:6633"
type                : []

_uuid               : b82e7dd4-18f4-4c87-9075-dd7aeb12e9e8
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : true
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : slave
status              : {sec_since_connect="170", state=ACTIVE}
target              : "tcp:10.30.171.110:6633"
type                : []

_uuid               : 62c52bac-35ce-4da8-8345-1607faceb933
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : true
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : master
status              : {sec_since_connect="170", state=ACTIVE}
target              : "tcp:10.30.170.48:6633"
type                : []

_uuid               : 42dcabae-83d0-4b2e-85c3-6afd38cf9dbe
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : true
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : slave
status              : {sec_since_connect="170", state=ACTIVE}
target              : "tcp:10.30.170.131:6633"
type                : []

_uuid               : ef6c3b9f-b37d-44ed-b461-11afe8598daf
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : true
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : master
status              : {sec_since_connect="170", state=ACTIVE}
target              : "tcp:10.30.170.48:6633"
type                : []

_uuid               : 1968464f-4637-41c7-a481-9eba89956be9
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : true
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : slave
status              : {sec_since_connect="169", state=ACTIVE}
target              : "tcp:10.30.170.131:6633"
type                : []
mininet&gt;</msg>
<msg time="2026-04-08T01:01:15.869769" level="INFO">${cntlstdout} = _uuid               : d41b7df8-53ff-40ff-acd4-14e5125234e4
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
exter...</msg>
<var>${cntlstdout}</var>
<arg>${lprompt}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-08T01:01:15.814987" elapsed="0.054810"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:15.870254" level="INFO">_uuid               : d41b7df8-53ff-40ff-acd4-14e5125234e4
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : true
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : slave
status              : {sec_since_connect="169", state=ACTIVE}
target              : "tcp:10.30.171.110:6633"
type                : []

_uuid               : 90572501-522a-42c1-ae3d-252f978971ed
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : true
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : slave
status              : {sec_since_connect="170", state=ACTIVE}
target              : "tcp:10.30.170.131:6633"
type                : []

_uuid               : 243fe3ab-9d09-4f6a-95c7-66f44ce44370
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : true
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : slave
status              : {sec_since_connect="170", state=ACTIVE}
target              : "tcp:10.30.171.110:6633"
type                : []

_uuid               : f2bbc0c3-faee-4472-91b2-cdaff2b5204c
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : true
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : master
status              : {sec_since_connect="169", state=ACTIVE}
target              : "tcp:10.30.170.48:6633"
type                : []

_uuid               : b82e7dd4-18f4-4c87-9075-dd7aeb12e9e8
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : true
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : slave
status              : {sec_since_connect="170", state=ACTIVE}
target              : "tcp:10.30.171.110:6633"
type                : []

_uuid               : 62c52bac-35ce-4da8-8345-1607faceb933
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : true
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : master
status              : {sec_since_connect="170", state=ACTIVE}
target              : "tcp:10.30.170.48:6633"
type                : []

_uuid               : 42dcabae-83d0-4b2e-85c3-6afd38cf9dbe
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : true
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : slave
status              : {sec_since_connect="170", state=ACTIVE}
target              : "tcp:10.30.170.131:6633"
type                : []

_uuid               : ef6c3b9f-b37d-44ed-b461-11afe8598daf
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : true
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : master
status              : {sec_since_connect="170", state=ACTIVE}
target              : "tcp:10.30.170.48:6633"
type                : []

_uuid               : 1968464f-4637-41c7-a481-9eba89956be9
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : true
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : slave
status              : {sec_since_connect="169", state=ACTIVE}
target              : "tcp:10.30.170.131:6633"
type                : []
mininet&gt;</msg>
<arg>${cntlstdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:15.869976" elapsed="0.000400"/>
</kw>
<kw name="Parse" owner="VsctlListParser">
<msg time="2026-04-08T01:01:15.871533" level="INFO">_uuid:9bcfbeed-47e0-4406-b63a-1c7efd018616
auto_attach:[]
controller:[243fe3ab-9d09-4f6a-95c7-66f44ce44370,42dcabae-83d0-4b2e-85c3-6afd38cf9dbe,62c52bac-35ce-4da8-8345-1607faceb933]
datapath_id:"0000000000000002"
datapath_type:""
datapath_version:"&lt;unknown&gt;"
external_ids:{}
fail_mode:standalone
flood_vlans:[]
flow_tables:{}
ipfix:[]
mcast_snooping_enable:false
mirrors:[]
name:s2
netflow:[]
other_config:{datapath-id="0000000000000002",disable-in-band="true",dp-desc=s2}
ports:[3cf70080-6935-4da8-954a-60707cd2aa95,6731aacc-32ec-4fcd-b0fb-8f97da3f3aaa,ce33b3d8-209b-438d-83d6-c050bc8aee26,d86f10c2-9d40-484c-a7d6-6e88fed82e11]
protocols:[OpenFlow13]
rstp_enable:false
rstp_status:{}
sflow:[]
status:{}
stp_enable:false
_uuid:60c187c3-58d7-430d-bef7-bbbc3131fa87
auto_attach:[]
controller:[1968464f-4637-41c7-a481-9eba89956be9,d41b7df8-53ff-40ff-acd4-14e5125234e4,f2bbc0c3-faee-4472-91b2-cdaff2b5204c]
datapath_id:"0000000000000003"
datapath_type:""
datapath_version:"&lt;unknown&gt;"
external_ids:{}
fail_mode:standalone
flood_vlans:[]
flow_tables:{}
ipfix:[]
mcast_snooping_enable:false
mirrors:[]
name:s3
netflow:[]
other_config:{datapath-id="0000000000000003",disable-in-band="true",dp-desc=s3}
ports:[7915a530-8449-433a-9306-00cddaf3116b,8069abcf-4250-428c-858a-bf539517ea14,e98007ce-09cd-4834-83d3-70a858f2f481]
protocols:[OpenFlow13]
rstp_enable:false
rstp_status:{}
sflow:[]
status:{}
stp_enable:false
_uuid:5bd045e7-95e2-49c7-a6be-cc2541636f0b
auto_attach:[]
controller:[90572501-522a-42c1-ae3d-252f978971ed,b82e7dd4-18f4-4c87-9075-dd7aeb12e9e8,ef6c3b9f-b37d-44ed-b461-11afe8598daf]
datapath_id:"0000000000000001"
datapath_type:""
datapath_version:"&lt;unknown&gt;"
external_ids:{}
fail_mode:standalone
flood_vlans:[]
flow_tables:{}
ipfix:[]
mcast_snooping_enable:false
mirrors:[]
name:s1
netflow:[]
other_config:{datapath-id="0000000000000001",disable-in-band="true",dp-desc=s1}
ports:[00da38e5-71ff-48bc-bf39-436bd14bfea5,32ff594e-effb-41a0-aa0f-1df856411422,f9c97d36-c254-491b-a311-602fd640aa36]
protocols:[OpenFlow13]
rstp_enable:false
rstp_status:{}
sflow:[]
status:{}
stp_enable:false
_uuid:d41b7df8-53ff-40ff-acd4-14e5125234e4
connection_mode:[]
controller_burst_limit:[]
controller_queue_size:[]
controller_rate_limit:[]
enable_async_messages:[]
external_ids:{}
inactivity_probe:[]
is_connected:true
local_gateway:[]
local_ip:[]
local_netmask:[]
max_backoff:[]
other_config:{}
role:slave
status:{sec_since_connect="169",state=ACTIVE}
target:"tcp:10.30.171.110:6633"
type:[]
_uuid:90572501-522a-42c1-ae3d-252f978971ed
connection_mode:[]
controller_burst_limit:[]
controller_queue_size:[]
controller_rate_limit:[]
enable_async_messages:[]
external_ids:{}
inactivity_probe:[]
is_connected:true
local_gateway:[]
local_ip:[]
local_netmask:[]
max_backoff:[]
other_config:{}
role:slave
status:{sec_since_connect="170",state=ACTIVE}
target:"tcp:10.30.170.131:6633"
type:[]
_uuid:243fe3ab-9d09-4f6a-95c7-66f44ce44370
connection_mode:[]
controller_burst_limit:[]
controller_queue_size:[]
controller_rate_limit:[]
enable_async_messages:[]
external_ids:{}
inactivity_probe:[]
is_connected:true
local_gateway:[]
local_ip:[]
local_netmask:[]
max_backoff:[]
other_config:{}
role:slave
status:{sec_since_connect="170",state=ACTIVE}
target:"tcp:10.30.171.110:6633"
type:[]
_uuid:f2bbc0c3-faee-4472-91b2-cdaff2b5204c
connection_mode:[]
controller_burst_limit:[]
controller_queue_size:[]
controller_rate_limit:[]
enable_async_messages:[]
external_ids:{}
inactivity_probe:[]
is_connected:true
local_gateway:[]
local_ip:[]
local_netmask:[]
max_backoff:[]
other_config:{}
role:master
status:{sec_since_connect="169",state=ACTIVE}
target:"tcp:10.30.170.48:6633"
type:[]
_uuid:b82e7dd4-18f4-4c87-9075-dd7aeb12e9e8
connection_mode:[]
controller_burst_limit:[]
controller_queue_size:[]
controller_rate_limit:[]
enable_async_messages:[]
external_ids:{}
inactivity_probe:[]
is_connected:true
local_gateway:[]
local_ip:[]
local_netmask:[]
max_backoff:[]
other_config:{}
role:slave
status:{sec_since_connect="170",state=ACTIVE}
target:"tcp:10.30.171.110:6633"
type:[]
_uuid:62c52bac-35ce-4da8-8345-1607faceb933
connection_mode:[]
controller_burst_limit:[]
controller_queue_size:[]
controller_rate_limit:[]
enable_async_messages:[]
external_ids:{}
inactivity_probe:[]
is_connected:true
local_gateway:[]
local_ip:[]
local_netmask:[]
max_backoff:[]
other_config:{}
role:master
status:{sec_since_connect="170",state=ACTIVE}
target:"tcp:10.30.170.48:6633"
type:[]
_uuid:42dcabae-83d0-4b2e-85c3-6afd38cf9dbe
connection_mode:[]
controller_burst_limit:[]
controller_queue_size:[]
controller_rate_limit:[]
enable_async_messages:[]
external_ids:{}
inactivity_probe:[]
is_connected:true
local_gateway:[]
local_ip:[]
local_netmask:[]
max_backoff:[]
other_config:{}
role:slave
status:{sec_since_connect="170",state=ACTIVE}
target:"tcp:10.30.170.131:6633"
type:[]
_uuid:ef6c3b9f-b37d-44ed-b461-11afe8598daf
connection_mode:[]
controller_burst_limit:[]
controller_queue_size:[]
controller_rate_limit:[]
enable_async_messages:[]
external_ids:{}
inactivity_probe:[]
is_connected:true
local_gateway:[]
local_ip:[]
local_netmask:[]
max_backoff:[]
other_config:{}
role:master
status:{sec_since_connect="170",state=ACTIVE}
target:"tcp:10.30.170.48:6633"
type:[]
_uuid:1968464f-4637-41c7-a481-9eba89956be9
connection_mode:[]
controller_burst_limit:[]
controller_queue_size:[]
controller_rate_limit:[]
enable_async_messages:[]
external_ids:{}
inactivity_probe:[]
is_connected:true
local_gateway:[]
local_ip:[]
local_netmask:[]
max_backoff:[]
other_config:{}
role:slave
status:{sec_since_connect="169",state=ACTIVE}
target:"tcp:10.30.170.131:6633"
type:[]</msg>
<msg time="2026-04-08T01:01:15.871709" level="INFO">${data} = {'': {'_uuid': '5bd045e7-95e2-49c7-a6be-cc2541636f0b', 'auto_attach': '[]', 'controller': {'10.30.170.131': {'_uuid': '90572501-522a-42c1-ae3d-252f978971ed', 'connection_mode': '[]', 'controller_burst...</msg>
<msg time="2026-04-08T01:01:15.871783" level="INFO">${bridegs} = {'9bcfbeed-47e0-4406-b63a-1c7efd018616': {'_uuid': '9bcfbeed-47e0-4406-b63a-1c7efd018616', 'auto_attach': '[]', 'controller': '[243fe3ab-9d09-4f6a-95c7-66f44ce44370,42dcabae-83d0-4b2e-85c3-6afd38cf9db...</msg>
<msg time="2026-04-08T01:01:15.871882" level="INFO">${controllers} = {'d41b7df8-53ff-40ff-acd4-14e5125234e4': {'_uuid': 'd41b7df8-53ff-40ff-acd4-14e5125234e4', 'connection_mode': '[]', 'controller_burst_limit': '[]', 'controller_queue_size': '[]', 'controller_rate_limi...</msg>
<var>${data}</var>
<var>${bridegs}</var>
<var>${controllers}</var>
<arg>${brstdout}</arg>
<arg>${cntlstdout}</arg>
<doc>Produces dictionary with data for future usege</doc>
<status status="PASS" start="2026-04-08T01:01:15.870537" elapsed="0.001424"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:15.872442" level="INFO">{'': {'_uuid': '5bd045e7-95e2-49c7-a6be-cc2541636f0b', 'auto_attach': '[]', 'controller': {'10.30.170.131': {'_uuid': '90572501-522a-42c1-ae3d-252f978971ed', 'connection_mode': '[]', 'controller_burst_limit': '[]', 'controller_queue_size': '[]', 'controller_rate_limit': '[]', 'enable_async_messages': '[]', 'external_ids': '{}', 'inactivity_probe': '[]', 'is_connected': True, 'local_gateway': '[]', 'local_ip': '[]', 'local_netmask': '[]', 'max_backoff': '[]', 'other_config': '{}', 'role': 'slave', 'status': '{sec_since_connect="170",state=ACTIVE}', 'target': '"tcp:10.30.170.131:6633"', 'type': '[]'}, '10.30.171.110': {'_uuid': 'b82e7dd4-18f4-4c87-9075-dd7aeb12e9e8', 'connection_mode': '[]', 'controller_burst_limit': '[]', 'controller_queue_size': '[]', 'controller_rate_limit': '[]', 'enable_async_messages': '[]', 'external_ids': '{}', 'inactivity_probe': '[]', 'is_connected': True, 'local_gateway': '[]', 'local_ip': '[]', 'local_netmask': '[]', 'max_backoff': '[]', 'other_config': '{}', 'role': 'slave', 'status': '{sec_since_connect="170",state=ACTIVE}', 'target': '"tcp:10.30.171.110:6633"', 'type': '[]'}, '10.30.170.48': {'_uuid': 'ef6c3b9f-b37d-44ed-b461-11afe8598daf', 'connection_mode': '[]', 'controller_burst_limit': '[]', 'controller_queue_size': '[]', 'controller_rate_limit': '[]', 'enable_async_messages': '[]', 'external_ids': '{}', 'inactivity_probe': '[]', 'is_connected': True, 'local_gateway': '[]', 'local_ip': '[]', 'local_netmask': '[]', 'max_backoff': '[]', 'other_config': '{}', 'role': 'master', 'status': '{sec_since_connect="170",state=ACTIVE}', 'target': '"tcp:10.30.170.48:6633"', 'type': '[]'}}, 'datapath_id': '"0000000000000001"', 'datapath_type': '""', 'datapath_version': '"&lt;unknown&gt;"', 'external_ids': '{}', 'fail_mode': 'standalone', 'flood_vlans': '[]', 'flow_tables': '{}', 'ipfix': '[]', 'mcast_snooping_enable': 'false', 'mirrors': '[]', 'name': 's1', 'netflow': '[]', 'other_config': '{datapath-id="0000000000000001",disable-in-band="true",dp-desc=s1}', 'ports': '[00da38e5-71ff-48bc-bf39-436bd14bfea5,32ff594e-effb-41a0-aa0f-1df856411422,f9c97d36-c254-491b-a311-602fd640aa36]', 'protocols': '[OpenFlow13]', 'rstp_enable': 'false', 'rstp_status': '{}', 'sflow': '[]', 'status': '{}', 'stp_enable': 'false'}}</msg>
<arg>${data}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:15.872132" elapsed="0.000405"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-08T01:01:15.873184" level="INFO">${ovs_switch_data} = {'': {'_uuid': '5bd045e7-95e2-49c7-a6be-cc2541636f0b', 'auto_attach': '[]', 'controller': {'10.30.170.131': {'_uuid': '90572501-522a-42c1-ae3d-252f978971ed', 'connection_mode': '[]', 'controller_burst...</msg>
<arg>${ovs_switch_data}</arg>
<arg>${data}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-08T01:01:15.872707" elapsed="0.000524"/>
</kw>
<return>
<value>${data}</value>
<status status="PASS" start="2026-04-08T01:01:15.873282" elapsed="0.000045"/>
</return>
<doc>Gets ovs data and parse them.</doc>
<status status="PASS" start="2026-04-08T01:01:15.731401" elapsed="0.142034"/>
</kw>
<status status="PASS" start="2026-04-08T01:01:15.730627" elapsed="0.142840"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:15.730001" elapsed="0.143495"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:01:15.873886" level="FAIL">Dictionary does not contain key 's1'.</msg>
<var>${bridge}</var>
<arg>${ovs_switch_data}</arg>
<arg>${switch}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="FAIL" start="2026-04-08T01:01:15.873647" elapsed="0.000347">Dictionary does not contain key 's1'.</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${cntls}</var>
<arg>${bridge}</arg>
<arg>controller</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:15.874177" elapsed="0.000022"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${cntl}</var>
<arg>${cntls}</arg>
<arg>${controller}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:15.874352" elapsed="0.000020"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${connected}</var>
<arg>${cntl}</arg>
<arg>is_connected</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:15.874521" elapsed="0.000020"/>
</kw>
<return>
<value>${connected}</value>
<status status="NOT RUN" start="2026-04-08T01:01:15.874585" elapsed="0.000015"/>
</return>
<kw name="Execute OvsVsctl Show Command" owner="OvsManager" type="TEARDOWN">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:01:15.876684" level="INFO">sh ovs-vsctl show</msg>
<arg>${lcmd_prefix} ovs-vsctl show</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:01:15.875191" elapsed="0.001551"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-08T01:01:15.896566" level="INFO">9a5df812-eb49-4477-a37e-2d464c02791d
    Bridge s1
        Controller "tcp:10.30.170.131:6633"
            is_connected: true
        Controller "tcp:10.30.171.110:6633"
            is_connected: true
        Controller "tcp:10.30.170.48:6633"
            is_connected: true
        fail_mode: standalone
        Port s1-eth1
            Interface s1-eth1
        Port s1-eth2
            Interface s1-eth2
        Port s1
            Interface s1
                type: internal
    Bridge s3
        Controller "tcp:10.30.170.131:6633"
            is_connected: true
        Controller "tcp:10.30.171.110:6633"
            is_connected: true
        Controller "tcp:10.30.170.48:6633"
            is_connected: true
        fail_mode: standalone
        Port s3-eth2
            Interface s3-eth2
        Port s3-eth1
            Interface s3-eth1
        Port s3
            Interface s3
                type: internal
    Bridge s2
        Controller "tcp:10.30.171.110:6633"
            is_connected: true
        Controller "tcp:10.30.170.131:6633"
            is_connected: true
        Controller "tcp:10.30.170.48:6633"
            is_connected: true
        fail_mode: standalone
        Port s2-eth1
            Interface s2-eth1
        Port s2-eth2
            Interface s2-eth2
        Port s2-eth3
            Interface s2-eth3
        Port s2
            Interface s2
                type: internal
    ovs_version: "2.17.11"
mininet&gt;</msg>
<msg time="2026-04-08T01:01:15.896674" level="INFO">${output} = 9a5df812-eb49-4477-a37e-2d464c02791d
    Bridge s1
        Controller "tcp:10.30.170.131:6633"
            is_connected: true
        Controller "tcp:10.30.171.110:6633"
            is_connected:...</msg>
<var>${output}</var>
<arg>${lprompt}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-08T01:01:15.876900" elapsed="0.019802"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:15.897127" level="INFO">9a5df812-eb49-4477-a37e-2d464c02791d
    Bridge s1
        Controller "tcp:10.30.170.131:6633"
            is_connected: true
        Controller "tcp:10.30.171.110:6633"
            is_connected: true
        Controller "tcp:10.30.170.48:6633"
            is_connected: true
        fail_mode: standalone
        Port s1-eth1
            Interface s1-eth1
        Port s1-eth2
            Interface s1-eth2
        Port s1
            Interface s1
                type: internal
    Bridge s3
        Controller "tcp:10.30.170.131:6633"
            is_connected: true
        Controller "tcp:10.30.171.110:6633"
            is_connected: true
        Controller "tcp:10.30.170.48:6633"
            is_connected: true
        fail_mode: standalone
        Port s3-eth2
            Interface s3-eth2
        Port s3-eth1
            Interface s3-eth1
        Port s3
            Interface s3
                type: internal
    Bridge s2
        Controller "tcp:10.30.171.110:6633"
            is_connected: true
        Controller "tcp:10.30.170.131:6633"
            is_connected: true
        Controller "tcp:10.30.170.48:6633"
            is_connected: true
        fail_mode: standalone
        Port s2-eth1
            Interface s2-eth1
        Port s2-eth2
            Interface s2-eth2
        Port s2-eth3
            Interface s2-eth3
        Port s2
            Interface s2
                type: internal
    ovs_version: "2.17.11"
mininet&gt;</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:15.896877" elapsed="0.000332"/>
</kw>
<doc>Executes ovs-vsctl show command and returns stdout, no check nor change is performed</doc>
<status status="PASS" start="2026-04-08T01:01:15.874865" elapsed="0.022399"/>
</kw>
<var>${connected}</var>
<arg>${switch}</arg>
<arg>${controller}</arg>
<arg>update_data=${update_data}</arg>
<doc>Return is_connected boolean value</doc>
<status status="FAIL" start="2026-04-08T01:01:15.729194" elapsed="0.168144">Dictionary does not contain key 's1'.</status>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<arg>${connected}</arg>
<arg>${False}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:15.897508" elapsed="0.000020"/>
</kw>
<arg>s1</arg>
<arg>${ODL_SYSTEM_${index}_IP}</arg>
<arg>update_data=${True}</arg>
<doc>Check if the switch is disconnected</doc>
<status status="FAIL" start="2026-04-08T01:01:15.727714" elapsed="0.169900">Dictionary does not contain key 's1'.</status>
</kw>
<kw name="Should Be Disconnected" owner="OvsManager">
<kw name="OvsManager__Is_Connected" owner="OvsManager">
<if>
<branch type="IF" condition="${update_data}==${True}">
<kw name="Get Ovsdb Data" owner="OvsManager">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:01:16.905022" level="INFO">sh ovs-vsctl list Bridge</msg>
<arg>${lcmd_prefix} ${SH_BR_CMD}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:01:16.902278" elapsed="0.002931"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-08T01:01:16.978018" level="INFO">_uuid               : 9bcfbeed-47e0-4406-b63a-1c7efd018616
auto_attach         : []
controller          : [243fe3ab-9d09-4f6a-95c7-66f44ce44370, 42dcabae-83d0-4b2e-85c3-6afd38cf9dbe, 62c52bac-35ce-4da8-8345-1607faceb933]
datapath_id         : "0000000000000002"
datapath_type       : ""
datapath_version    : "&lt;unknown&gt;"
external_ids        : {}
fail_mode           : standalone
flood_vlans         : []
flow_tables         : {}
ipfix               : []
mcast_snooping_enable: false
mirrors             : []
name                : s2
netflow             : []
other_config        : {datapath-id="0000000000000002", disable-in-band="true", dp-desc=s2}
ports               : [3cf70080-6935-4da8-954a-60707cd2aa95, 6731aacc-32ec-4fcd-b0fb-8f97da3f3aaa, ce33b3d8-209b-438d-83d6-c050bc8aee26, d86f10c2-9d40-484c-a7d6-6e88fed82e11]
protocols           : [OpenFlow13]
rstp_enable         : false
rstp_status         : {}
sflow               : []
status              : {}
stp_enable          : false

_uuid               : 60c187c3-58d7-430d-bef7-bbbc3131fa87
auto_attach         : []
controller          : [1968464f-4637-41c7-a481-9eba89956be9, d41b7df8-53ff-40ff-acd4-14e5125234e4, f2bbc0c3-faee-4472-91b2-cdaff2b5204c]
datapath_id         : "0000000000000003"
datapath_type       : ""
datapath_version    : "&lt;unknown&gt;"
external_ids        : {}
fail_mode           : standalone
flood_vlans         : []
flow_tables         : {}
ipfix               : []
mcast_snooping_enable: false
mirrors             : []
name                : s3
netflow             : []
other_config        : {datapath-id="0000000000000003", disable-in-band="true", dp-desc=s3}
ports               : [7915a530-8449-433a-9306-00cddaf3116b, 8069abcf-4250-428c-858a-bf539517ea14, e98007ce-09cd-4834-83d3-70a858f2f481]
protocols           : [OpenFlow13]
rstp_enable         : false
rstp_status         : {}
sflow               : []
status              : {}
stp_enable          : false

_uuid               : 5bd045e7-95e2-49c7-a6be-cc2541636f0b
auto_attach         : []
controller          : [90572501-522a-42c1-ae3d-252f978971ed, b82e7dd4-18f4-4c87-9075-dd7aeb12e9e8, ef6c3b9f-b37d-44ed-b461-11afe8598daf]
datapath_id         : "0000000000000001"
datapath_type       : ""
datapath_version    : "&lt;unknown&gt;"
external_ids        : {}
fail_mode           : standalone
flood_vlans         : []
flow_tables         : {}
ipfix               : []
mcast_snooping_enable: false
mirrors             : []
name                : s1
netflow             : []
other_config        : {datapath-id="0000000000000001", disable-in-band="true", dp-desc=s1}
ports               : [00da38e5-71ff-48bc-bf39-436bd14bfea5, 32ff594e-effb-41a0-aa0f-1df856411422, f9c97d36-c254-491b-a311-602fd640aa36]
protocols           : [OpenFlow13]
rstp_enable         : false
rstp_status         : {}
sflow               : []
status              : {}
stp_enable          : false
mininet&gt;</msg>
<msg time="2026-04-08T01:01:16.978150" level="INFO">${brstdout} = _uuid               : 9bcfbeed-47e0-4406-b63a-1c7efd018616
auto_attach         : []
controller          : [243fe3ab-9d09-4f6a-95c7-66f44ce44370, 42dcabae-83d0-4b2e-85c3-6afd38cf9dbe, 62c52bac-35ce-4...</msg>
<var>${brstdout}</var>
<arg>${lprompt}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-08T01:01:16.905592" elapsed="0.072598"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:16.978691" level="INFO">_uuid               : 9bcfbeed-47e0-4406-b63a-1c7efd018616
auto_attach         : []
controller          : [243fe3ab-9d09-4f6a-95c7-66f44ce44370, 42dcabae-83d0-4b2e-85c3-6afd38cf9dbe, 62c52bac-35ce-4da8-8345-1607faceb933]
datapath_id         : "0000000000000002"
datapath_type       : ""
datapath_version    : "&lt;unknown&gt;"
external_ids        : {}
fail_mode           : standalone
flood_vlans         : []
flow_tables         : {}
ipfix               : []
mcast_snooping_enable: false
mirrors             : []
name                : s2
netflow             : []
other_config        : {datapath-id="0000000000000002", disable-in-band="true", dp-desc=s2}
ports               : [3cf70080-6935-4da8-954a-60707cd2aa95, 6731aacc-32ec-4fcd-b0fb-8f97da3f3aaa, ce33b3d8-209b-438d-83d6-c050bc8aee26, d86f10c2-9d40-484c-a7d6-6e88fed82e11]
protocols           : [OpenFlow13]
rstp_enable         : false
rstp_status         : {}
sflow               : []
status              : {}
stp_enable          : false

_uuid               : 60c187c3-58d7-430d-bef7-bbbc3131fa87
auto_attach         : []
controller          : [1968464f-4637-41c7-a481-9eba89956be9, d41b7df8-53ff-40ff-acd4-14e5125234e4, f2bbc0c3-faee-4472-91b2-cdaff2b5204c]
datapath_id         : "0000000000000003"
datapath_type       : ""
datapath_version    : "&lt;unknown&gt;"
external_ids        : {}
fail_mode           : standalone
flood_vlans         : []
flow_tables         : {}
ipfix               : []
mcast_snooping_enable: false
mirrors             : []
name                : s3
netflow             : []
other_config        : {datapath-id="0000000000000003", disable-in-band="true", dp-desc=s3}
ports               : [7915a530-8449-433a-9306-00cddaf3116b, 8069abcf-4250-428c-858a-bf539517ea14, e98007ce-09cd-4834-83d3-70a858f2f481]
protocols           : [OpenFlow13]
rstp_enable         : false
rstp_status         : {}
sflow               : []
status              : {}
stp_enable          : false

_uuid               : 5bd045e7-95e2-49c7-a6be-cc2541636f0b
auto_attach         : []
controller          : [90572501-522a-42c1-ae3d-252f978971ed, b82e7dd4-18f4-4c87-9075-dd7aeb12e9e8, ef6c3b9f-b37d-44ed-b461-11afe8598daf]
datapath_id         : "0000000000000001"
datapath_type       : ""
datapath_version    : "&lt;unknown&gt;"
external_ids        : {}
fail_mode           : standalone
flood_vlans         : []
flow_tables         : {}
ipfix               : []
mcast_snooping_enable: false
mirrors             : []
name                : s1
netflow             : []
other_config        : {datapath-id="0000000000000001", disable-in-band="true", dp-desc=s1}
ports               : [00da38e5-71ff-48bc-bf39-436bd14bfea5, 32ff594e-effb-41a0-aa0f-1df856411422, f9c97d36-c254-491b-a311-602fd640aa36]
protocols           : [OpenFlow13]
rstp_enable         : false
rstp_status         : {}
sflow               : []
status              : {}
stp_enable          : false
mininet&gt;</msg>
<arg>${brstdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:16.978391" elapsed="0.000374"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:01:16.980674" level="INFO">sh ovs-vsctl list Controller</msg>
<arg>${lcmd_prefix} ${SH_CNTL_CMD}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:01:16.978917" elapsed="0.001812"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-08T01:01:17.040204" level="INFO">_uuid               : d41b7df8-53ff-40ff-acd4-14e5125234e4
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : true
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : slave
status              : {sec_since_connect="169", state=ACTIVE}
target              : "tcp:10.30.171.110:6633"
type                : []

_uuid               : 90572501-522a-42c1-ae3d-252f978971ed
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : true
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : slave
status              : {sec_since_connect="170", state=ACTIVE}
target              : "tcp:10.30.170.131:6633"
type                : []

_uuid               : 243fe3ab-9d09-4f6a-95c7-66f44ce44370
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : true
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : slave
status              : {sec_since_connect="170", state=ACTIVE}
target              : "tcp:10.30.171.110:6633"
type                : []

_uuid               : f2bbc0c3-faee-4472-91b2-cdaff2b5204c
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : true
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : master
status              : {sec_since_connect="169", state=ACTIVE}
target              : "tcp:10.30.170.48:6633"
type                : []

_uuid               : b82e7dd4-18f4-4c87-9075-dd7aeb12e9e8
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : true
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : slave
status              : {sec_since_connect="170", state=ACTIVE}
target              : "tcp:10.30.171.110:6633"
type                : []

_uuid               : 62c52bac-35ce-4da8-8345-1607faceb933
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : true
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : master
status              : {sec_since_connect="170", state=ACTIVE}
target              : "tcp:10.30.170.48:6633"
type                : []

_uuid               : 42dcabae-83d0-4b2e-85c3-6afd38cf9dbe
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : true
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : slave
status              : {sec_since_connect="170", state=ACTIVE}
target              : "tcp:10.30.170.131:6633"
type                : []

_uuid               : ef6c3b9f-b37d-44ed-b461-11afe8598daf
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : true
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : master
status              : {sec_since_connect="170", state=ACTIVE}
target              : "tcp:10.30.170.48:6633"
type                : []

_uuid               : 1968464f-4637-41c7-a481-9eba89956be9
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : true
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : slave
status              : {sec_since_connect="169", state=ACTIVE}
target              : "tcp:10.30.170.131:6633"
type                : []
mininet&gt;</msg>
<msg time="2026-04-08T01:01:17.040394" level="INFO">${cntlstdout} = _uuid               : d41b7df8-53ff-40ff-acd4-14e5125234e4
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
exter...</msg>
<var>${cntlstdout}</var>
<arg>${lprompt}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-08T01:01:16.980887" elapsed="0.059535"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:17.041183" level="INFO">_uuid               : d41b7df8-53ff-40ff-acd4-14e5125234e4
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : true
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : slave
status              : {sec_since_connect="169", state=ACTIVE}
target              : "tcp:10.30.171.110:6633"
type                : []

_uuid               : 90572501-522a-42c1-ae3d-252f978971ed
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : true
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : slave
status              : {sec_since_connect="170", state=ACTIVE}
target              : "tcp:10.30.170.131:6633"
type                : []

_uuid               : 243fe3ab-9d09-4f6a-95c7-66f44ce44370
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : true
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : slave
status              : {sec_since_connect="170", state=ACTIVE}
target              : "tcp:10.30.171.110:6633"
type                : []

_uuid               : f2bbc0c3-faee-4472-91b2-cdaff2b5204c
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : true
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : master
status              : {sec_since_connect="169", state=ACTIVE}
target              : "tcp:10.30.170.48:6633"
type                : []

_uuid               : b82e7dd4-18f4-4c87-9075-dd7aeb12e9e8
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : true
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : slave
status              : {sec_since_connect="170", state=ACTIVE}
target              : "tcp:10.30.171.110:6633"
type                : []

_uuid               : 62c52bac-35ce-4da8-8345-1607faceb933
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : true
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : master
status              : {sec_since_connect="170", state=ACTIVE}
target              : "tcp:10.30.170.48:6633"
type                : []

_uuid               : 42dcabae-83d0-4b2e-85c3-6afd38cf9dbe
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : true
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : slave
status              : {sec_since_connect="170", state=ACTIVE}
target              : "tcp:10.30.170.131:6633"
type                : []

_uuid               : ef6c3b9f-b37d-44ed-b461-11afe8598daf
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : true
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : master
status              : {sec_since_connect="170", state=ACTIVE}
target              : "tcp:10.30.170.48:6633"
type                : []

_uuid               : 1968464f-4637-41c7-a481-9eba89956be9
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : true
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : slave
status              : {sec_since_connect="169", state=ACTIVE}
target              : "tcp:10.30.170.131:6633"
type                : []
mininet&gt;</msg>
<arg>${cntlstdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:17.040619" elapsed="0.000657"/>
</kw>
<kw name="Parse" owner="VsctlListParser">
<msg time="2026-04-08T01:01:17.042433" level="INFO">_uuid:9bcfbeed-47e0-4406-b63a-1c7efd018616
auto_attach:[]
controller:[243fe3ab-9d09-4f6a-95c7-66f44ce44370,42dcabae-83d0-4b2e-85c3-6afd38cf9dbe,62c52bac-35ce-4da8-8345-1607faceb933]
datapath_id:"0000000000000002"
datapath_type:""
datapath_version:"&lt;unknown&gt;"
external_ids:{}
fail_mode:standalone
flood_vlans:[]
flow_tables:{}
ipfix:[]
mcast_snooping_enable:false
mirrors:[]
name:s2
netflow:[]
other_config:{datapath-id="0000000000000002",disable-in-band="true",dp-desc=s2}
ports:[3cf70080-6935-4da8-954a-60707cd2aa95,6731aacc-32ec-4fcd-b0fb-8f97da3f3aaa,ce33b3d8-209b-438d-83d6-c050bc8aee26,d86f10c2-9d40-484c-a7d6-6e88fed82e11]
protocols:[OpenFlow13]
rstp_enable:false
rstp_status:{}
sflow:[]
status:{}
stp_enable:false
_uuid:60c187c3-58d7-430d-bef7-bbbc3131fa87
auto_attach:[]
controller:[1968464f-4637-41c7-a481-9eba89956be9,d41b7df8-53ff-40ff-acd4-14e5125234e4,f2bbc0c3-faee-4472-91b2-cdaff2b5204c]
datapath_id:"0000000000000003"
datapath_type:""
datapath_version:"&lt;unknown&gt;"
external_ids:{}
fail_mode:standalone
flood_vlans:[]
flow_tables:{}
ipfix:[]
mcast_snooping_enable:false
mirrors:[]
name:s3
netflow:[]
other_config:{datapath-id="0000000000000003",disable-in-band="true",dp-desc=s3}
ports:[7915a530-8449-433a-9306-00cddaf3116b,8069abcf-4250-428c-858a-bf539517ea14,e98007ce-09cd-4834-83d3-70a858f2f481]
protocols:[OpenFlow13]
rstp_enable:false
rstp_status:{}
sflow:[]
status:{}
stp_enable:false
_uuid:5bd045e7-95e2-49c7-a6be-cc2541636f0b
auto_attach:[]
controller:[90572501-522a-42c1-ae3d-252f978971ed,b82e7dd4-18f4-4c87-9075-dd7aeb12e9e8,ef6c3b9f-b37d-44ed-b461-11afe8598daf]
datapath_id:"0000000000000001"
datapath_type:""
datapath_version:"&lt;unknown&gt;"
external_ids:{}
fail_mode:standalone
flood_vlans:[]
flow_tables:{}
ipfix:[]
mcast_snooping_enable:false
mirrors:[]
name:s1
netflow:[]
other_config:{datapath-id="0000000000000001",disable-in-band="true",dp-desc=s1}
ports:[00da38e5-71ff-48bc-bf39-436bd14bfea5,32ff594e-effb-41a0-aa0f-1df856411422,f9c97d36-c254-491b-a311-602fd640aa36]
protocols:[OpenFlow13]
rstp_enable:false
rstp_status:{}
sflow:[]
status:{}
stp_enable:false
_uuid:d41b7df8-53ff-40ff-acd4-14e5125234e4
connection_mode:[]
controller_burst_limit:[]
controller_queue_size:[]
controller_rate_limit:[]
enable_async_messages:[]
external_ids:{}
inactivity_probe:[]
is_connected:true
local_gateway:[]
local_ip:[]
local_netmask:[]
max_backoff:[]
other_config:{}
role:slave
status:{sec_since_connect="169",state=ACTIVE}
target:"tcp:10.30.171.110:6633"
type:[]
_uuid:90572501-522a-42c1-ae3d-252f978971ed
connection_mode:[]
controller_burst_limit:[]
controller_queue_size:[]
controller_rate_limit:[]
enable_async_messages:[]
external_ids:{}
inactivity_probe:[]
is_connected:true
local_gateway:[]
local_ip:[]
local_netmask:[]
max_backoff:[]
other_config:{}
role:slave
status:{sec_since_connect="170",state=ACTIVE}
target:"tcp:10.30.170.131:6633"
type:[]
_uuid:243fe3ab-9d09-4f6a-95c7-66f44ce44370
connection_mode:[]
controller_burst_limit:[]
controller_queue_size:[]
controller_rate_limit:[]
enable_async_messages:[]
external_ids:{}
inactivity_probe:[]
is_connected:true
local_gateway:[]
local_ip:[]
local_netmask:[]
max_backoff:[]
other_config:{}
role:slave
status:{sec_since_connect="170",state=ACTIVE}
target:"tcp:10.30.171.110:6633"
type:[]
_uuid:f2bbc0c3-faee-4472-91b2-cdaff2b5204c
connection_mode:[]
controller_burst_limit:[]
controller_queue_size:[]
controller_rate_limit:[]
enable_async_messages:[]
external_ids:{}
inactivity_probe:[]
is_connected:true
local_gateway:[]
local_ip:[]
local_netmask:[]
max_backoff:[]
other_config:{}
role:master
status:{sec_since_connect="169",state=ACTIVE}
target:"tcp:10.30.170.48:6633"
type:[]
_uuid:b82e7dd4-18f4-4c87-9075-dd7aeb12e9e8
connection_mode:[]
controller_burst_limit:[]
controller_queue_size:[]
controller_rate_limit:[]
enable_async_messages:[]
external_ids:{}
inactivity_probe:[]
is_connected:true
local_gateway:[]
local_ip:[]
local_netmask:[]
max_backoff:[]
other_config:{}
role:slave
status:{sec_since_connect="170",state=ACTIVE}
target:"tcp:10.30.171.110:6633"
type:[]
_uuid:62c52bac-35ce-4da8-8345-1607faceb933
connection_mode:[]
controller_burst_limit:[]
controller_queue_size:[]
controller_rate_limit:[]
enable_async_messages:[]
external_ids:{}
inactivity_probe:[]
is_connected:true
local_gateway:[]
local_ip:[]
local_netmask:[]
max_backoff:[]
other_config:{}
role:master
status:{sec_since_connect="170",state=ACTIVE}
target:"tcp:10.30.170.48:6633"
type:[]
_uuid:42dcabae-83d0-4b2e-85c3-6afd38cf9dbe
connection_mode:[]
controller_burst_limit:[]
controller_queue_size:[]
controller_rate_limit:[]
enable_async_messages:[]
external_ids:{}
inactivity_probe:[]
is_connected:true
local_gateway:[]
local_ip:[]
local_netmask:[]
max_backoff:[]
other_config:{}
role:slave
status:{sec_since_connect="170",state=ACTIVE}
target:"tcp:10.30.170.131:6633"
type:[]
_uuid:ef6c3b9f-b37d-44ed-b461-11afe8598daf
connection_mode:[]
controller_burst_limit:[]
controller_queue_size:[]
controller_rate_limit:[]
enable_async_messages:[]
external_ids:{}
inactivity_probe:[]
is_connected:true
local_gateway:[]
local_ip:[]
local_netmask:[]
max_backoff:[]
other_config:{}
role:master
status:{sec_since_connect="170",state=ACTIVE}
target:"tcp:10.30.170.48:6633"
type:[]
_uuid:1968464f-4637-41c7-a481-9eba89956be9
connection_mode:[]
controller_burst_limit:[]
controller_queue_size:[]
controller_rate_limit:[]
enable_async_messages:[]
external_ids:{}
inactivity_probe:[]
is_connected:true
local_gateway:[]
local_ip:[]
local_netmask:[]
max_backoff:[]
other_config:{}
role:slave
status:{sec_since_connect="169",state=ACTIVE}
target:"tcp:10.30.170.131:6633"
type:[]</msg>
<msg time="2026-04-08T01:01:17.042638" level="INFO">${data} = {'': {'_uuid': '5bd045e7-95e2-49c7-a6be-cc2541636f0b', 'auto_attach': '[]', 'controller': {'10.30.170.131': {'_uuid': '90572501-522a-42c1-ae3d-252f978971ed', 'connection_mode': '[]', 'controller_burst...</msg>
<msg time="2026-04-08T01:01:17.042714" level="INFO">${bridegs} = {'9bcfbeed-47e0-4406-b63a-1c7efd018616': {'_uuid': '9bcfbeed-47e0-4406-b63a-1c7efd018616', 'auto_attach': '[]', 'controller': '[243fe3ab-9d09-4f6a-95c7-66f44ce44370,42dcabae-83d0-4b2e-85c3-6afd38cf9db...</msg>
<msg time="2026-04-08T01:01:17.042815" level="INFO">${controllers} = {'d41b7df8-53ff-40ff-acd4-14e5125234e4': {'_uuid': 'd41b7df8-53ff-40ff-acd4-14e5125234e4', 'connection_mode': '[]', 'controller_burst_limit': '[]', 'controller_queue_size': '[]', 'controller_rate_limi...</msg>
<var>${data}</var>
<var>${bridegs}</var>
<var>${controllers}</var>
<arg>${brstdout}</arg>
<arg>${cntlstdout}</arg>
<doc>Produces dictionary with data for future usege</doc>
<status status="PASS" start="2026-04-08T01:01:17.041436" elapsed="0.001405"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:17.043305" level="INFO">{'': {'_uuid': '5bd045e7-95e2-49c7-a6be-cc2541636f0b', 'auto_attach': '[]', 'controller': {'10.30.170.131': {'_uuid': '90572501-522a-42c1-ae3d-252f978971ed', 'connection_mode': '[]', 'controller_burst_limit': '[]', 'controller_queue_size': '[]', 'controller_rate_limit': '[]', 'enable_async_messages': '[]', 'external_ids': '{}', 'inactivity_probe': '[]', 'is_connected': True, 'local_gateway': '[]', 'local_ip': '[]', 'local_netmask': '[]', 'max_backoff': '[]', 'other_config': '{}', 'role': 'slave', 'status': '{sec_since_connect="170",state=ACTIVE}', 'target': '"tcp:10.30.170.131:6633"', 'type': '[]'}, '10.30.171.110': {'_uuid': 'b82e7dd4-18f4-4c87-9075-dd7aeb12e9e8', 'connection_mode': '[]', 'controller_burst_limit': '[]', 'controller_queue_size': '[]', 'controller_rate_limit': '[]', 'enable_async_messages': '[]', 'external_ids': '{}', 'inactivity_probe': '[]', 'is_connected': True, 'local_gateway': '[]', 'local_ip': '[]', 'local_netmask': '[]', 'max_backoff': '[]', 'other_config': '{}', 'role': 'slave', 'status': '{sec_since_connect="170",state=ACTIVE}', 'target': '"tcp:10.30.171.110:6633"', 'type': '[]'}, '10.30.170.48': {'_uuid': 'ef6c3b9f-b37d-44ed-b461-11afe8598daf', 'connection_mode': '[]', 'controller_burst_limit': '[]', 'controller_queue_size': '[]', 'controller_rate_limit': '[]', 'enable_async_messages': '[]', 'external_ids': '{}', 'inactivity_probe': '[]', 'is_connected': True, 'local_gateway': '[]', 'local_ip': '[]', 'local_netmask': '[]', 'max_backoff': '[]', 'other_config': '{}', 'role': 'master', 'status': '{sec_since_connect="170",state=ACTIVE}', 'target': '"tcp:10.30.170.48:6633"', 'type': '[]'}}, 'datapath_id': '"0000000000000001"', 'datapath_type': '""', 'datapath_version': '"&lt;unknown&gt;"', 'external_ids': '{}', 'fail_mode': 'standalone', 'flood_vlans': '[]', 'flow_tables': '{}', 'ipfix': '[]', 'mcast_snooping_enable': 'false', 'mirrors': '[]', 'name': 's1', 'netflow': '[]', 'other_config': '{datapath-id="0000000000000001",disable-in-band="true",dp-desc=s1}', 'ports': '[00da38e5-71ff-48bc-bf39-436bd14bfea5,32ff594e-effb-41a0-aa0f-1df856411422,f9c97d36-c254-491b-a311-602fd640aa36]', 'protocols': '[OpenFlow13]', 'rstp_enable': 'false', 'rstp_status': '{}', 'sflow': '[]', 'status': '{}', 'stp_enable': 'false'}}</msg>
<arg>${data}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:17.043010" elapsed="0.000359"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-08T01:01:17.043995" level="INFO">${ovs_switch_data} = {'': {'_uuid': '5bd045e7-95e2-49c7-a6be-cc2541636f0b', 'auto_attach': '[]', 'controller': {'10.30.170.131': {'_uuid': '90572501-522a-42c1-ae3d-252f978971ed', 'connection_mode': '[]', 'controller_burst...</msg>
<arg>${ovs_switch_data}</arg>
<arg>${data}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-08T01:01:17.043552" elapsed="0.000487"/>
</kw>
<return>
<value>${data}</value>
<status status="PASS" start="2026-04-08T01:01:17.044088" elapsed="0.000040"/>
</return>
<doc>Gets ovs data and parse them.</doc>
<status status="PASS" start="2026-04-08T01:01:16.901591" elapsed="0.142655"/>
</kw>
<status status="PASS" start="2026-04-08T01:01:16.900845" elapsed="0.143433"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:16.900797" elapsed="0.143508"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:01:17.044670" level="FAIL">Dictionary does not contain key 's1'.</msg>
<var>${bridge}</var>
<arg>${ovs_switch_data}</arg>
<arg>${switch}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="FAIL" start="2026-04-08T01:01:17.044452" elapsed="0.000319">Dictionary does not contain key 's1'.</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${cntls}</var>
<arg>${bridge}</arg>
<arg>controller</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:17.044940" elapsed="0.000022"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${cntl}</var>
<arg>${cntls}</arg>
<arg>${controller}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:17.045113" elapsed="0.000020"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${connected}</var>
<arg>${cntl}</arg>
<arg>is_connected</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:17.045301" elapsed="0.000033"/>
</kw>
<return>
<value>${connected}</value>
<status status="NOT RUN" start="2026-04-08T01:01:17.045382" elapsed="0.000017"/>
</return>
<kw name="Execute OvsVsctl Show Command" owner="OvsManager" type="TEARDOWN">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:01:17.047398" level="INFO">sh ovs-vsctl show</msg>
<arg>${lcmd_prefix} ovs-vsctl show</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:01:17.045967" elapsed="0.001499"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-08T01:01:17.068383" level="INFO">9a5df812-eb49-4477-a37e-2d464c02791d
    Bridge s1
        Controller "tcp:10.30.170.131:6633"
            is_connected: true
        Controller "tcp:10.30.171.110:6633"
            is_connected: true
        Controller "tcp:10.30.170.48:6633"
            is_connected: true
        fail_mode: standalone
        Port s1-eth1
            Interface s1-eth1
        Port s1-eth2
            Interface s1-eth2
        Port s1
            Interface s1
                type: internal
    Bridge s3
        Controller "tcp:10.30.170.131:6633"
            is_connected: true
        Controller "tcp:10.30.171.110:6633"
            is_connected: true
        Controller "tcp:10.30.170.48:6633"
            is_connected: true
        fail_mode: standalone
        Port s3-eth2
            Interface s3-eth2
        Port s3-eth1
            Interface s3-eth1
        Port s3
            Interface s3
                type: internal
    Bridge s2
        Controller "tcp:10.30.171.110:6633"
            is_connected: true
        Controller "tcp:10.30.170.131:6633"
            is_connected: true
        Controller "tcp:10.30.170.48:6633"
            is_connected: true
        fail_mode: standalone
        Port s2-eth1
            Interface s2-eth1
        Port s2-eth2
            Interface s2-eth2
        Port s2-eth3
            Interface s2-eth3
        Port s2
            Interface s2
                type: internal
    ovs_version: "2.17.11"
mininet&gt;</msg>
<msg time="2026-04-08T01:01:17.068490" level="INFO">${output} = 9a5df812-eb49-4477-a37e-2d464c02791d
    Bridge s1
        Controller "tcp:10.30.170.131:6633"
            is_connected: true
        Controller "tcp:10.30.171.110:6633"
            is_connected:...</msg>
<var>${output}</var>
<arg>${lprompt}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-08T01:01:17.047623" elapsed="0.020932"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:17.068988" level="INFO">9a5df812-eb49-4477-a37e-2d464c02791d
    Bridge s1
        Controller "tcp:10.30.170.131:6633"
            is_connected: true
        Controller "tcp:10.30.171.110:6633"
            is_connected: true
        Controller "tcp:10.30.170.48:6633"
            is_connected: true
        fail_mode: standalone
        Port s1-eth1
            Interface s1-eth1
        Port s1-eth2
            Interface s1-eth2
        Port s1
            Interface s1
                type: internal
    Bridge s3
        Controller "tcp:10.30.170.131:6633"
            is_connected: true
        Controller "tcp:10.30.171.110:6633"
            is_connected: true
        Controller "tcp:10.30.170.48:6633"
            is_connected: true
        fail_mode: standalone
        Port s3-eth2
            Interface s3-eth2
        Port s3-eth1
            Interface s3-eth1
        Port s3
            Interface s3
                type: internal
    Bridge s2
        Controller "tcp:10.30.171.110:6633"
            is_connected: true
        Controller "tcp:10.30.170.131:6633"
            is_connected: true
        Controller "tcp:10.30.170.48:6633"
            is_connected: true
        fail_mode: standalone
        Port s2-eth1
            Interface s2-eth1
        Port s2-eth2
            Interface s2-eth2
        Port s2-eth3
            Interface s2-eth3
        Port s2
            Interface s2
                type: internal
    ovs_version: "2.17.11"
mininet&gt;</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:17.068735" elapsed="0.000313"/>
</kw>
<doc>Executes ovs-vsctl show command and returns stdout, no check nor change is performed</doc>
<status status="PASS" start="2026-04-08T01:01:17.045654" elapsed="0.023449"/>
</kw>
<var>${connected}</var>
<arg>${switch}</arg>
<arg>${controller}</arg>
<arg>update_data=${update_data}</arg>
<doc>Return is_connected boolean value</doc>
<status status="FAIL" start="2026-04-08T01:01:16.899957" elapsed="0.169236">Dictionary does not contain key 's1'.</status>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<arg>${connected}</arg>
<arg>${False}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:17.069368" elapsed="0.000021"/>
</kw>
<arg>s1</arg>
<arg>${ODL_SYSTEM_${index}_IP}</arg>
<arg>update_data=${True}</arg>
<doc>Check if the switch is disconnected</doc>
<status status="FAIL" start="2026-04-08T01:01:16.898516" elapsed="0.170959">Dictionary does not contain key 's1'.</status>
</kw>
<kw name="Should Be Disconnected" owner="OvsManager">
<kw name="OvsManager__Is_Connected" owner="OvsManager">
<if>
<branch type="IF" condition="${update_data}==${True}">
<kw name="Get Ovsdb Data" owner="OvsManager">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:01:18.077098" level="INFO">sh ovs-vsctl list Bridge</msg>
<arg>${lcmd_prefix} ${SH_BR_CMD}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:01:18.074117" elapsed="0.003163"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-08T01:01:18.141935" level="INFO">_uuid               : 9bcfbeed-47e0-4406-b63a-1c7efd018616
auto_attach         : []
controller          : [243fe3ab-9d09-4f6a-95c7-66f44ce44370, 42dcabae-83d0-4b2e-85c3-6afd38cf9dbe, 62c52bac-35ce-4da8-8345-1607faceb933]
datapath_id         : "0000000000000002"
datapath_type       : ""
datapath_version    : "&lt;unknown&gt;"
external_ids        : {}
fail_mode           : standalone
flood_vlans         : []
flow_tables         : {}
ipfix               : []
mcast_snooping_enable: false
mirrors             : []
name                : s2
netflow             : []
other_config        : {datapath-id="0000000000000002", disable-in-band="true", dp-desc=s2}
ports               : [3cf70080-6935-4da8-954a-60707cd2aa95, 6731aacc-32ec-4fcd-b0fb-8f97da3f3aaa, ce33b3d8-209b-438d-83d6-c050bc8aee26, d86f10c2-9d40-484c-a7d6-6e88fed82e11]
protocols           : [OpenFlow13]
rstp_enable         : false
rstp_status         : {}
sflow               : []
status              : {}
stp_enable          : false

_uuid               : 60c187c3-58d7-430d-bef7-bbbc3131fa87
auto_attach         : []
controller          : [1968464f-4637-41c7-a481-9eba89956be9, d41b7df8-53ff-40ff-acd4-14e5125234e4, f2bbc0c3-faee-4472-91b2-cdaff2b5204c]
datapath_id         : "0000000000000003"
datapath_type       : ""
datapath_version    : "&lt;unknown&gt;"
external_ids        : {}
fail_mode           : standalone
flood_vlans         : []
flow_tables         : {}
ipfix               : []
mcast_snooping_enable: false
mirrors             : []
name                : s3
netflow             : []
other_config        : {datapath-id="0000000000000003", disable-in-band="true", dp-desc=s3}
ports               : [7915a530-8449-433a-9306-00cddaf3116b, 8069abcf-4250-428c-858a-bf539517ea14, e98007ce-09cd-4834-83d3-70a858f2f481]
protocols           : [OpenFlow13]
rstp_enable         : false
rstp_status         : {}
sflow               : []
status              : {}
stp_enable          : false

_uuid               : 5bd045e7-95e2-49c7-a6be-cc2541636f0b
auto_attach         : []
controller          : [90572501-522a-42c1-ae3d-252f978971ed, b82e7dd4-18f4-4c87-9075-dd7aeb12e9e8, ef6c3b9f-b37d-44ed-b461-11afe8598daf]
datapath_id         : "0000000000000001"
datapath_type       : ""
datapath_version    : "&lt;unknown&gt;"
external_ids        : {}
fail_mode           : standalone
flood_vlans         : []
flow_tables         : {}
ipfix               : []
mcast_snooping_enable: false
mirrors             : []
name                : s1
netflow             : []
other_config        : {datapath-id="0000000000000001", disable-in-band="true", dp-desc=s1}
ports               : [00da38e5-71ff-48bc-bf39-436bd14bfea5, 32ff594e-effb-41a0-aa0f-1df856411422, f9c97d36-c254-491b-a311-602fd640aa36]
protocols           : [OpenFlow13]
rstp_enable         : false
rstp_status         : {}
sflow               : []
status              : {}
stp_enable          : false
mininet&gt;</msg>
<msg time="2026-04-08T01:01:18.142066" level="INFO">${brstdout} = _uuid               : 9bcfbeed-47e0-4406-b63a-1c7efd018616
auto_attach         : []
controller          : [243fe3ab-9d09-4f6a-95c7-66f44ce44370, 42dcabae-83d0-4b2e-85c3-6afd38cf9dbe, 62c52bac-35ce-4...</msg>
<var>${brstdout}</var>
<arg>${lprompt}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-08T01:01:18.077650" elapsed="0.064444"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:18.142617" level="INFO">_uuid               : 9bcfbeed-47e0-4406-b63a-1c7efd018616
auto_attach         : []
controller          : [243fe3ab-9d09-4f6a-95c7-66f44ce44370, 42dcabae-83d0-4b2e-85c3-6afd38cf9dbe, 62c52bac-35ce-4da8-8345-1607faceb933]
datapath_id         : "0000000000000002"
datapath_type       : ""
datapath_version    : "&lt;unknown&gt;"
external_ids        : {}
fail_mode           : standalone
flood_vlans         : []
flow_tables         : {}
ipfix               : []
mcast_snooping_enable: false
mirrors             : []
name                : s2
netflow             : []
other_config        : {datapath-id="0000000000000002", disable-in-band="true", dp-desc=s2}
ports               : [3cf70080-6935-4da8-954a-60707cd2aa95, 6731aacc-32ec-4fcd-b0fb-8f97da3f3aaa, ce33b3d8-209b-438d-83d6-c050bc8aee26, d86f10c2-9d40-484c-a7d6-6e88fed82e11]
protocols           : [OpenFlow13]
rstp_enable         : false
rstp_status         : {}
sflow               : []
status              : {}
stp_enable          : false

_uuid               : 60c187c3-58d7-430d-bef7-bbbc3131fa87
auto_attach         : []
controller          : [1968464f-4637-41c7-a481-9eba89956be9, d41b7df8-53ff-40ff-acd4-14e5125234e4, f2bbc0c3-faee-4472-91b2-cdaff2b5204c]
datapath_id         : "0000000000000003"
datapath_type       : ""
datapath_version    : "&lt;unknown&gt;"
external_ids        : {}
fail_mode           : standalone
flood_vlans         : []
flow_tables         : {}
ipfix               : []
mcast_snooping_enable: false
mirrors             : []
name                : s3
netflow             : []
other_config        : {datapath-id="0000000000000003", disable-in-band="true", dp-desc=s3}
ports               : [7915a530-8449-433a-9306-00cddaf3116b, 8069abcf-4250-428c-858a-bf539517ea14, e98007ce-09cd-4834-83d3-70a858f2f481]
protocols           : [OpenFlow13]
rstp_enable         : false
rstp_status         : {}
sflow               : []
status              : {}
stp_enable          : false

_uuid               : 5bd045e7-95e2-49c7-a6be-cc2541636f0b
auto_attach         : []
controller          : [90572501-522a-42c1-ae3d-252f978971ed, b82e7dd4-18f4-4c87-9075-dd7aeb12e9e8, ef6c3b9f-b37d-44ed-b461-11afe8598daf]
datapath_id         : "0000000000000001"
datapath_type       : ""
datapath_version    : "&lt;unknown&gt;"
external_ids        : {}
fail_mode           : standalone
flood_vlans         : []
flow_tables         : {}
ipfix               : []
mcast_snooping_enable: false
mirrors             : []
name                : s1
netflow             : []
other_config        : {datapath-id="0000000000000001", disable-in-band="true", dp-desc=s1}
ports               : [00da38e5-71ff-48bc-bf39-436bd14bfea5, 32ff594e-effb-41a0-aa0f-1df856411422, f9c97d36-c254-491b-a311-602fd640aa36]
protocols           : [OpenFlow13]
rstp_enable         : false
rstp_status         : {}
sflow               : []
status              : {}
stp_enable          : false
mininet&gt;</msg>
<arg>${brstdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:18.142322" elapsed="0.000436"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:01:18.144584" level="INFO">sh ovs-vsctl list Controller</msg>
<arg>${lcmd_prefix} ${SH_CNTL_CMD}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:01:18.142914" elapsed="0.001727"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-08T01:01:18.201305" level="INFO">_uuid               : d41b7df8-53ff-40ff-acd4-14e5125234e4
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : true
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : slave
status              : {sec_since_connect="169", state=ACTIVE}
target              : "tcp:10.30.171.110:6633"
type                : []

_uuid               : 90572501-522a-42c1-ae3d-252f978971ed
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : true
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : slave
status              : {sec_since_connect="170", state=ACTIVE}
target              : "tcp:10.30.170.131:6633"
type                : []

_uuid               : 243fe3ab-9d09-4f6a-95c7-66f44ce44370
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : true
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : slave
status              : {sec_since_connect="170", state=ACTIVE}
target              : "tcp:10.30.171.110:6633"
type                : []

_uuid               : f2bbc0c3-faee-4472-91b2-cdaff2b5204c
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : true
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : master
status              : {sec_since_connect="169", state=ACTIVE}
target              : "tcp:10.30.170.48:6633"
type                : []

_uuid               : b82e7dd4-18f4-4c87-9075-dd7aeb12e9e8
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : true
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : slave
status              : {sec_since_connect="170", state=ACTIVE}
target              : "tcp:10.30.171.110:6633"
type                : []

_uuid               : 62c52bac-35ce-4da8-8345-1607faceb933
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : true
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : master
status              : {sec_since_connect="170", state=ACTIVE}
target              : "tcp:10.30.170.48:6633"
type                : []

_uuid               : 42dcabae-83d0-4b2e-85c3-6afd38cf9dbe
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : true
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : slave
status              : {sec_since_connect="170", state=ACTIVE}
target              : "tcp:10.30.170.131:6633"
type                : []

_uuid               : ef6c3b9f-b37d-44ed-b461-11afe8598daf
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : true
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : master
status              : {sec_since_connect="170", state=ACTIVE}
target              : "tcp:10.30.170.48:6633"
type                : []

_uuid               : 1968464f-4637-41c7-a481-9eba89956be9
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : true
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : slave
status              : {sec_since_connect="169", state=ACTIVE}
target              : "tcp:10.30.170.131:6633"
type                : []
mininet&gt;</msg>
<msg time="2026-04-08T01:01:18.201448" level="INFO">${cntlstdout} = _uuid               : d41b7df8-53ff-40ff-acd4-14e5125234e4
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
exter...</msg>
<var>${cntlstdout}</var>
<arg>${lprompt}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-08T01:01:18.144801" elapsed="0.056676"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:18.201908" level="INFO">_uuid               : d41b7df8-53ff-40ff-acd4-14e5125234e4
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : true
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : slave
status              : {sec_since_connect="169", state=ACTIVE}
target              : "tcp:10.30.171.110:6633"
type                : []

_uuid               : 90572501-522a-42c1-ae3d-252f978971ed
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : true
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : slave
status              : {sec_since_connect="170", state=ACTIVE}
target              : "tcp:10.30.170.131:6633"
type                : []

_uuid               : 243fe3ab-9d09-4f6a-95c7-66f44ce44370
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : true
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : slave
status              : {sec_since_connect="170", state=ACTIVE}
target              : "tcp:10.30.171.110:6633"
type                : []

_uuid               : f2bbc0c3-faee-4472-91b2-cdaff2b5204c
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : true
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : master
status              : {sec_since_connect="169", state=ACTIVE}
target              : "tcp:10.30.170.48:6633"
type                : []

_uuid               : b82e7dd4-18f4-4c87-9075-dd7aeb12e9e8
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : true
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : slave
status              : {sec_since_connect="170", state=ACTIVE}
target              : "tcp:10.30.171.110:6633"
type                : []

_uuid               : 62c52bac-35ce-4da8-8345-1607faceb933
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : true
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : master
status              : {sec_since_connect="170", state=ACTIVE}
target              : "tcp:10.30.170.48:6633"
type                : []

_uuid               : 42dcabae-83d0-4b2e-85c3-6afd38cf9dbe
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : true
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : slave
status              : {sec_since_connect="170", state=ACTIVE}
target              : "tcp:10.30.170.131:6633"
type                : []

_uuid               : ef6c3b9f-b37d-44ed-b461-11afe8598daf
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : true
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : master
status              : {sec_since_connect="170", state=ACTIVE}
target              : "tcp:10.30.170.48:6633"
type                : []

_uuid               : 1968464f-4637-41c7-a481-9eba89956be9
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : true
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : slave
status              : {sec_since_connect="169", state=ACTIVE}
target              : "tcp:10.30.170.131:6633"
type                : []
mininet&gt;</msg>
<arg>${cntlstdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:18.201655" elapsed="0.000416"/>
</kw>
<kw name="Parse" owner="VsctlListParser">
<msg time="2026-04-08T01:01:18.203240" level="INFO">_uuid:9bcfbeed-47e0-4406-b63a-1c7efd018616
auto_attach:[]
controller:[243fe3ab-9d09-4f6a-95c7-66f44ce44370,42dcabae-83d0-4b2e-85c3-6afd38cf9dbe,62c52bac-35ce-4da8-8345-1607faceb933]
datapath_id:"0000000000000002"
datapath_type:""
datapath_version:"&lt;unknown&gt;"
external_ids:{}
fail_mode:standalone
flood_vlans:[]
flow_tables:{}
ipfix:[]
mcast_snooping_enable:false
mirrors:[]
name:s2
netflow:[]
other_config:{datapath-id="0000000000000002",disable-in-band="true",dp-desc=s2}
ports:[3cf70080-6935-4da8-954a-60707cd2aa95,6731aacc-32ec-4fcd-b0fb-8f97da3f3aaa,ce33b3d8-209b-438d-83d6-c050bc8aee26,d86f10c2-9d40-484c-a7d6-6e88fed82e11]
protocols:[OpenFlow13]
rstp_enable:false
rstp_status:{}
sflow:[]
status:{}
stp_enable:false
_uuid:60c187c3-58d7-430d-bef7-bbbc3131fa87
auto_attach:[]
controller:[1968464f-4637-41c7-a481-9eba89956be9,d41b7df8-53ff-40ff-acd4-14e5125234e4,f2bbc0c3-faee-4472-91b2-cdaff2b5204c]
datapath_id:"0000000000000003"
datapath_type:""
datapath_version:"&lt;unknown&gt;"
external_ids:{}
fail_mode:standalone
flood_vlans:[]
flow_tables:{}
ipfix:[]
mcast_snooping_enable:false
mirrors:[]
name:s3
netflow:[]
other_config:{datapath-id="0000000000000003",disable-in-band="true",dp-desc=s3}
ports:[7915a530-8449-433a-9306-00cddaf3116b,8069abcf-4250-428c-858a-bf539517ea14,e98007ce-09cd-4834-83d3-70a858f2f481]
protocols:[OpenFlow13]
rstp_enable:false
rstp_status:{}
sflow:[]
status:{}
stp_enable:false
_uuid:5bd045e7-95e2-49c7-a6be-cc2541636f0b
auto_attach:[]
controller:[90572501-522a-42c1-ae3d-252f978971ed,b82e7dd4-18f4-4c87-9075-dd7aeb12e9e8,ef6c3b9f-b37d-44ed-b461-11afe8598daf]
datapath_id:"0000000000000001"
datapath_type:""
datapath_version:"&lt;unknown&gt;"
external_ids:{}
fail_mode:standalone
flood_vlans:[]
flow_tables:{}
ipfix:[]
mcast_snooping_enable:false
mirrors:[]
name:s1
netflow:[]
other_config:{datapath-id="0000000000000001",disable-in-band="true",dp-desc=s1}
ports:[00da38e5-71ff-48bc-bf39-436bd14bfea5,32ff594e-effb-41a0-aa0f-1df856411422,f9c97d36-c254-491b-a311-602fd640aa36]
protocols:[OpenFlow13]
rstp_enable:false
rstp_status:{}
sflow:[]
status:{}
stp_enable:false
_uuid:d41b7df8-53ff-40ff-acd4-14e5125234e4
connection_mode:[]
controller_burst_limit:[]
controller_queue_size:[]
controller_rate_limit:[]
enable_async_messages:[]
external_ids:{}
inactivity_probe:[]
is_connected:true
local_gateway:[]
local_ip:[]
local_netmask:[]
max_backoff:[]
other_config:{}
role:slave
status:{sec_since_connect="169",state=ACTIVE}
target:"tcp:10.30.171.110:6633"
type:[]
_uuid:90572501-522a-42c1-ae3d-252f978971ed
connection_mode:[]
controller_burst_limit:[]
controller_queue_size:[]
controller_rate_limit:[]
enable_async_messages:[]
external_ids:{}
inactivity_probe:[]
is_connected:true
local_gateway:[]
local_ip:[]
local_netmask:[]
max_backoff:[]
other_config:{}
role:slave
status:{sec_since_connect="170",state=ACTIVE}
target:"tcp:10.30.170.131:6633"
type:[]
_uuid:243fe3ab-9d09-4f6a-95c7-66f44ce44370
connection_mode:[]
controller_burst_limit:[]
controller_queue_size:[]
controller_rate_limit:[]
enable_async_messages:[]
external_ids:{}
inactivity_probe:[]
is_connected:true
local_gateway:[]
local_ip:[]
local_netmask:[]
max_backoff:[]
other_config:{}
role:slave
status:{sec_since_connect="170",state=ACTIVE}
target:"tcp:10.30.171.110:6633"
type:[]
_uuid:f2bbc0c3-faee-4472-91b2-cdaff2b5204c
connection_mode:[]
controller_burst_limit:[]
controller_queue_size:[]
controller_rate_limit:[]
enable_async_messages:[]
external_ids:{}
inactivity_probe:[]
is_connected:true
local_gateway:[]
local_ip:[]
local_netmask:[]
max_backoff:[]
other_config:{}
role:master
status:{sec_since_connect="169",state=ACTIVE}
target:"tcp:10.30.170.48:6633"
type:[]
_uuid:b82e7dd4-18f4-4c87-9075-dd7aeb12e9e8
connection_mode:[]
controller_burst_limit:[]
controller_queue_size:[]
controller_rate_limit:[]
enable_async_messages:[]
external_ids:{}
inactivity_probe:[]
is_connected:true
local_gateway:[]
local_ip:[]
local_netmask:[]
max_backoff:[]
other_config:{}
role:slave
status:{sec_since_connect="170",state=ACTIVE}
target:"tcp:10.30.171.110:6633"
type:[]
_uuid:62c52bac-35ce-4da8-8345-1607faceb933
connection_mode:[]
controller_burst_limit:[]
controller_queue_size:[]
controller_rate_limit:[]
enable_async_messages:[]
external_ids:{}
inactivity_probe:[]
is_connected:true
local_gateway:[]
local_ip:[]
local_netmask:[]
max_backoff:[]
other_config:{}
role:master
status:{sec_since_connect="170",state=ACTIVE}
target:"tcp:10.30.170.48:6633"
type:[]
_uuid:42dcabae-83d0-4b2e-85c3-6afd38cf9dbe
connection_mode:[]
controller_burst_limit:[]
controller_queue_size:[]
controller_rate_limit:[]
enable_async_messages:[]
external_ids:{}
inactivity_probe:[]
is_connected:true
local_gateway:[]
local_ip:[]
local_netmask:[]
max_backoff:[]
other_config:{}
role:slave
status:{sec_since_connect="170",state=ACTIVE}
target:"tcp:10.30.170.131:6633"
type:[]
_uuid:ef6c3b9f-b37d-44ed-b461-11afe8598daf
connection_mode:[]
controller_burst_limit:[]
controller_queue_size:[]
controller_rate_limit:[]
enable_async_messages:[]
external_ids:{}
inactivity_probe:[]
is_connected:true
local_gateway:[]
local_ip:[]
local_netmask:[]
max_backoff:[]
other_config:{}
role:master
status:{sec_since_connect="170",state=ACTIVE}
target:"tcp:10.30.170.48:6633"
type:[]
_uuid:1968464f-4637-41c7-a481-9eba89956be9
connection_mode:[]
controller_burst_limit:[]
controller_queue_size:[]
controller_rate_limit:[]
enable_async_messages:[]
external_ids:{}
inactivity_probe:[]
is_connected:true
local_gateway:[]
local_ip:[]
local_netmask:[]
max_backoff:[]
other_config:{}
role:slave
status:{sec_since_connect="169",state=ACTIVE}
target:"tcp:10.30.170.131:6633"
type:[]</msg>
<msg time="2026-04-08T01:01:18.203414" level="INFO">${data} = {'': {'_uuid': '5bd045e7-95e2-49c7-a6be-cc2541636f0b', 'auto_attach': '[]', 'controller': {'10.30.170.131': {'_uuid': '90572501-522a-42c1-ae3d-252f978971ed', 'connection_mode': '[]', 'controller_burst...</msg>
<msg time="2026-04-08T01:01:18.203486" level="INFO">${bridegs} = {'9bcfbeed-47e0-4406-b63a-1c7efd018616': {'_uuid': '9bcfbeed-47e0-4406-b63a-1c7efd018616', 'auto_attach': '[]', 'controller': '[243fe3ab-9d09-4f6a-95c7-66f44ce44370,42dcabae-83d0-4b2e-85c3-6afd38cf9db...</msg>
<msg time="2026-04-08T01:01:18.203585" level="INFO">${controllers} = {'d41b7df8-53ff-40ff-acd4-14e5125234e4': {'_uuid': 'd41b7df8-53ff-40ff-acd4-14e5125234e4', 'connection_mode': '[]', 'controller_burst_limit': '[]', 'controller_queue_size': '[]', 'controller_rate_limi...</msg>
<var>${data}</var>
<var>${bridegs}</var>
<var>${controllers}</var>
<arg>${brstdout}</arg>
<arg>${cntlstdout}</arg>
<doc>Produces dictionary with data for future usege</doc>
<status status="PASS" start="2026-04-08T01:01:18.202246" elapsed="0.001363"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:18.204075" level="INFO">{'': {'_uuid': '5bd045e7-95e2-49c7-a6be-cc2541636f0b', 'auto_attach': '[]', 'controller': {'10.30.170.131': {'_uuid': '90572501-522a-42c1-ae3d-252f978971ed', 'connection_mode': '[]', 'controller_burst_limit': '[]', 'controller_queue_size': '[]', 'controller_rate_limit': '[]', 'enable_async_messages': '[]', 'external_ids': '{}', 'inactivity_probe': '[]', 'is_connected': True, 'local_gateway': '[]', 'local_ip': '[]', 'local_netmask': '[]', 'max_backoff': '[]', 'other_config': '{}', 'role': 'slave', 'status': '{sec_since_connect="170",state=ACTIVE}', 'target': '"tcp:10.30.170.131:6633"', 'type': '[]'}, '10.30.171.110': {'_uuid': 'b82e7dd4-18f4-4c87-9075-dd7aeb12e9e8', 'connection_mode': '[]', 'controller_burst_limit': '[]', 'controller_queue_size': '[]', 'controller_rate_limit': '[]', 'enable_async_messages': '[]', 'external_ids': '{}', 'inactivity_probe': '[]', 'is_connected': True, 'local_gateway': '[]', 'local_ip': '[]', 'local_netmask': '[]', 'max_backoff': '[]', 'other_config': '{}', 'role': 'slave', 'status': '{sec_since_connect="170",state=ACTIVE}', 'target': '"tcp:10.30.171.110:6633"', 'type': '[]'}, '10.30.170.48': {'_uuid': 'ef6c3b9f-b37d-44ed-b461-11afe8598daf', 'connection_mode': '[]', 'controller_burst_limit': '[]', 'controller_queue_size': '[]', 'controller_rate_limit': '[]', 'enable_async_messages': '[]', 'external_ids': '{}', 'inactivity_probe': '[]', 'is_connected': True, 'local_gateway': '[]', 'local_ip': '[]', 'local_netmask': '[]', 'max_backoff': '[]', 'other_config': '{}', 'role': 'master', 'status': '{sec_since_connect="170",state=ACTIVE}', 'target': '"tcp:10.30.170.48:6633"', 'type': '[]'}}, 'datapath_id': '"0000000000000001"', 'datapath_type': '""', 'datapath_version': '"&lt;unknown&gt;"', 'external_ids': '{}', 'fail_mode': 'standalone', 'flood_vlans': '[]', 'flow_tables': '{}', 'ipfix': '[]', 'mcast_snooping_enable': 'false', 'mirrors': '[]', 'name': 's1', 'netflow': '[]', 'other_config': '{datapath-id="0000000000000001",disable-in-band="true",dp-desc=s1}', 'ports': '[00da38e5-71ff-48bc-bf39-436bd14bfea5,32ff594e-effb-41a0-aa0f-1df856411422,f9c97d36-c254-491b-a311-602fd640aa36]', 'protocols': '[OpenFlow13]', 'rstp_enable': 'false', 'rstp_status': '{}', 'sflow': '[]', 'status': '{}', 'stp_enable': 'false'}}</msg>
<arg>${data}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:18.203775" elapsed="0.000413"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-08T01:01:18.204811" level="INFO">${ovs_switch_data} = {'': {'_uuid': '5bd045e7-95e2-49c7-a6be-cc2541636f0b', 'auto_attach': '[]', 'controller': {'10.30.170.131': {'_uuid': '90572501-522a-42c1-ae3d-252f978971ed', 'connection_mode': '[]', 'controller_burst...</msg>
<arg>${ovs_switch_data}</arg>
<arg>${data}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-08T01:01:18.204358" elapsed="0.000497"/>
</kw>
<return>
<value>${data}</value>
<status status="PASS" start="2026-04-08T01:01:18.204904" elapsed="0.000042"/>
</return>
<doc>Gets ovs data and parse them.</doc>
<status status="PASS" start="2026-04-08T01:01:18.073457" elapsed="0.131591"/>
</kw>
<status status="PASS" start="2026-04-08T01:01:18.072645" elapsed="0.132433"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:18.072599" elapsed="0.132505"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:01:18.205489" level="FAIL">Dictionary does not contain key 's1'.</msg>
<var>${bridge}</var>
<arg>${ovs_switch_data}</arg>
<arg>${switch}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="FAIL" start="2026-04-08T01:01:18.205267" elapsed="0.000335">Dictionary does not contain key 's1'.</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${cntls}</var>
<arg>${bridge}</arg>
<arg>controller</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:18.205769" elapsed="0.000021"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${cntl}</var>
<arg>${cntls}</arg>
<arg>${controller}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:18.205939" elapsed="0.000019"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${connected}</var>
<arg>${cntl}</arg>
<arg>is_connected</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:18.206104" elapsed="0.000020"/>
</kw>
<return>
<value>${connected}</value>
<status status="NOT RUN" start="2026-04-08T01:01:18.206182" elapsed="0.000016"/>
</return>
<kw name="Execute OvsVsctl Show Command" owner="OvsManager" type="TEARDOWN">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:01:18.208604" level="INFO">sh ovs-vsctl show</msg>
<arg>${lcmd_prefix} ovs-vsctl show</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:01:18.206979" elapsed="0.001683"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-08T01:01:18.228084" level="INFO">9a5df812-eb49-4477-a37e-2d464c02791d
    Bridge s1
        Controller "tcp:10.30.170.131:6633"
            is_connected: true
        Controller "tcp:10.30.171.110:6633"
            is_connected: true
        Controller "tcp:10.30.170.48:6633"
            is_connected: true
        fail_mode: standalone
        Port s1-eth1
            Interface s1-eth1
        Port s1-eth2
            Interface s1-eth2
        Port s1
            Interface s1
                type: internal
    Bridge s3
        Controller "tcp:10.30.170.131:6633"
            is_connected: true
        Controller "tcp:10.30.171.110:6633"
            is_connected: true
        Controller "tcp:10.30.170.48:6633"
            is_connected: true
        fail_mode: standalone
        Port s3-eth2
            Interface s3-eth2
        Port s3-eth1
            Interface s3-eth1
        Port s3
            Interface s3
                type: internal
    Bridge s2
        Controller "tcp:10.30.171.110:6633"
            is_connected: true
        Controller "tcp:10.30.170.131:6633"
            is_connected: true
        Controller "tcp:10.30.170.48:6633"
            is_connected: true
        fail_mode: standalone
        Port s2-eth1
            Interface s2-eth1
        Port s2-eth2
            Interface s2-eth2
        Port s2-eth3
            Interface s2-eth3
        Port s2
            Interface s2
                type: internal
    ovs_version: "2.17.11"
mininet&gt;</msg>
<msg time="2026-04-08T01:01:18.228206" level="INFO">${output} = 9a5df812-eb49-4477-a37e-2d464c02791d
    Bridge s1
        Controller "tcp:10.30.170.131:6633"
            is_connected: true
        Controller "tcp:10.30.171.110:6633"
            is_connected:...</msg>
<var>${output}</var>
<arg>${lprompt}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-08T01:01:18.208819" elapsed="0.019415"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:18.228653" level="INFO">9a5df812-eb49-4477-a37e-2d464c02791d
    Bridge s1
        Controller "tcp:10.30.170.131:6633"
            is_connected: true
        Controller "tcp:10.30.171.110:6633"
            is_connected: true
        Controller "tcp:10.30.170.48:6633"
            is_connected: true
        fail_mode: standalone
        Port s1-eth1
            Interface s1-eth1
        Port s1-eth2
            Interface s1-eth2
        Port s1
            Interface s1
                type: internal
    Bridge s3
        Controller "tcp:10.30.170.131:6633"
            is_connected: true
        Controller "tcp:10.30.171.110:6633"
            is_connected: true
        Controller "tcp:10.30.170.48:6633"
            is_connected: true
        fail_mode: standalone
        Port s3-eth2
            Interface s3-eth2
        Port s3-eth1
            Interface s3-eth1
        Port s3
            Interface s3
                type: internal
    Bridge s2
        Controller "tcp:10.30.171.110:6633"
            is_connected: true
        Controller "tcp:10.30.170.131:6633"
            is_connected: true
        Controller "tcp:10.30.170.48:6633"
            is_connected: true
        fail_mode: standalone
        Port s2-eth1
            Interface s2-eth1
        Port s2-eth2
            Interface s2-eth2
        Port s2-eth3
            Interface s2-eth3
        Port s2
            Interface s2
                type: internal
    ovs_version: "2.17.11"
mininet&gt;</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:18.228406" elapsed="0.000306"/>
</kw>
<doc>Executes ovs-vsctl show command and returns stdout, no check nor change is performed</doc>
<status status="PASS" start="2026-04-08T01:01:18.206456" elapsed="0.022310"/>
</kw>
<var>${connected}</var>
<arg>${switch}</arg>
<arg>${controller}</arg>
<arg>update_data=${update_data}</arg>
<doc>Return is_connected boolean value</doc>
<status status="FAIL" start="2026-04-08T01:01:18.071787" elapsed="0.157054">Dictionary does not contain key 's1'.</status>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<arg>${connected}</arg>
<arg>${False}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:18.229010" elapsed="0.000021"/>
</kw>
<arg>s1</arg>
<arg>${ODL_SYSTEM_${index}_IP}</arg>
<arg>update_data=${True}</arg>
<doc>Check if the switch is disconnected</doc>
<status status="FAIL" start="2026-04-08T01:01:18.070334" elapsed="0.158782">Dictionary does not contain key 's1'.</status>
</kw>
<kw name="Should Be Disconnected" owner="OvsManager">
<kw name="OvsManager__Is_Connected" owner="OvsManager">
<if>
<branch type="IF" condition="${update_data}==${True}">
<kw name="Get Ovsdb Data" owner="OvsManager">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:01:19.236863" level="INFO">sh ovs-vsctl list Bridge</msg>
<arg>${lcmd_prefix} ${SH_BR_CMD}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:01:19.233914" elapsed="0.003092"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-08T01:01:19.314099" level="INFO">_uuid               : 9bcfbeed-47e0-4406-b63a-1c7efd018616
auto_attach         : []
controller          : [243fe3ab-9d09-4f6a-95c7-66f44ce44370, 42dcabae-83d0-4b2e-85c3-6afd38cf9dbe, 62c52bac-35ce-4da8-8345-1607faceb933]
datapath_id         : "0000000000000002"
datapath_type       : ""
datapath_version    : "&lt;unknown&gt;"
external_ids        : {}
fail_mode           : standalone
flood_vlans         : []
flow_tables         : {}
ipfix               : []
mcast_snooping_enable: false
mirrors             : []
name                : s2
netflow             : []
other_config        : {datapath-id="0000000000000002", disable-in-band="true", dp-desc=s2}
ports               : [3cf70080-6935-4da8-954a-60707cd2aa95, 6731aacc-32ec-4fcd-b0fb-8f97da3f3aaa, ce33b3d8-209b-438d-83d6-c050bc8aee26, d86f10c2-9d40-484c-a7d6-6e88fed82e11]
protocols           : [OpenFlow13]
rstp_enable         : false
rstp_status         : {}
sflow               : []
status              : {}
stp_enable          : false

_uuid               : 60c187c3-58d7-430d-bef7-bbbc3131fa87
auto_attach         : []
controller          : [1968464f-4637-41c7-a481-9eba89956be9, d41b7df8-53ff-40ff-acd4-14e5125234e4, f2bbc0c3-faee-4472-91b2-cdaff2b5204c]
datapath_id         : "0000000000000003"
datapath_type       : ""
datapath_version    : "&lt;unknown&gt;"
external_ids        : {}
fail_mode           : standalone
flood_vlans         : []
flow_tables         : {}
ipfix               : []
mcast_snooping_enable: false
mirrors             : []
name                : s3
netflow             : []
other_config        : {datapath-id="0000000000000003", disable-in-band="true", dp-desc=s3}
ports               : [7915a530-8449-433a-9306-00cddaf3116b, 8069abcf-4250-428c-858a-bf539517ea14, e98007ce-09cd-4834-83d3-70a858f2f481]
protocols           : [OpenFlow13]
rstp_enable         : false
rstp_status         : {}
sflow               : []
status              : {}
stp_enable          : false

_uuid               : 5bd045e7-95e2-49c7-a6be-cc2541636f0b
auto_attach         : []
controller          : [90572501-522a-42c1-ae3d-252f978971ed, b82e7dd4-18f4-4c87-9075-dd7aeb12e9e8, ef6c3b9f-b37d-44ed-b461-11afe8598daf]
datapath_id         : "0000000000000001"
datapath_type       : ""
datapath_version    : "&lt;unknown&gt;"
external_ids        : {}
fail_mode           : standalone
flood_vlans         : []
flow_tables         : {}
ipfix               : []
mcast_snooping_enable: false
mirrors             : []
name                : s1
netflow             : []
other_config        : {datapath-id="0000000000000001", disable-in-band="true", dp-desc=s1}
ports               : [00da38e5-71ff-48bc-bf39-436bd14bfea5, 32ff594e-effb-41a0-aa0f-1df856411422, f9c97d36-c254-491b-a311-602fd640aa36]
protocols           : [OpenFlow13]
rstp_enable         : false
rstp_status         : {}
sflow               : []
status              : {}
stp_enable          : false
mininet&gt;</msg>
<msg time="2026-04-08T01:01:19.314246" level="INFO">${brstdout} = _uuid               : 9bcfbeed-47e0-4406-b63a-1c7efd018616
auto_attach         : []
controller          : [243fe3ab-9d09-4f6a-95c7-66f44ce44370, 42dcabae-83d0-4b2e-85c3-6afd38cf9dbe, 62c52bac-35ce-4...</msg>
<var>${brstdout}</var>
<arg>${lprompt}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-08T01:01:19.237405" elapsed="0.076868"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:19.314780" level="INFO">_uuid               : 9bcfbeed-47e0-4406-b63a-1c7efd018616
auto_attach         : []
controller          : [243fe3ab-9d09-4f6a-95c7-66f44ce44370, 42dcabae-83d0-4b2e-85c3-6afd38cf9dbe, 62c52bac-35ce-4da8-8345-1607faceb933]
datapath_id         : "0000000000000002"
datapath_type       : ""
datapath_version    : "&lt;unknown&gt;"
external_ids        : {}
fail_mode           : standalone
flood_vlans         : []
flow_tables         : {}
ipfix               : []
mcast_snooping_enable: false
mirrors             : []
name                : s2
netflow             : []
other_config        : {datapath-id="0000000000000002", disable-in-band="true", dp-desc=s2}
ports               : [3cf70080-6935-4da8-954a-60707cd2aa95, 6731aacc-32ec-4fcd-b0fb-8f97da3f3aaa, ce33b3d8-209b-438d-83d6-c050bc8aee26, d86f10c2-9d40-484c-a7d6-6e88fed82e11]
protocols           : [OpenFlow13]
rstp_enable         : false
rstp_status         : {}
sflow               : []
status              : {}
stp_enable          : false

_uuid               : 60c187c3-58d7-430d-bef7-bbbc3131fa87
auto_attach         : []
controller          : [1968464f-4637-41c7-a481-9eba89956be9, d41b7df8-53ff-40ff-acd4-14e5125234e4, f2bbc0c3-faee-4472-91b2-cdaff2b5204c]
datapath_id         : "0000000000000003"
datapath_type       : ""
datapath_version    : "&lt;unknown&gt;"
external_ids        : {}
fail_mode           : standalone
flood_vlans         : []
flow_tables         : {}
ipfix               : []
mcast_snooping_enable: false
mirrors             : []
name                : s3
netflow             : []
other_config        : {datapath-id="0000000000000003", disable-in-band="true", dp-desc=s3}
ports               : [7915a530-8449-433a-9306-00cddaf3116b, 8069abcf-4250-428c-858a-bf539517ea14, e98007ce-09cd-4834-83d3-70a858f2f481]
protocols           : [OpenFlow13]
rstp_enable         : false
rstp_status         : {}
sflow               : []
status              : {}
stp_enable          : false

_uuid               : 5bd045e7-95e2-49c7-a6be-cc2541636f0b
auto_attach         : []
controller          : [90572501-522a-42c1-ae3d-252f978971ed, b82e7dd4-18f4-4c87-9075-dd7aeb12e9e8, ef6c3b9f-b37d-44ed-b461-11afe8598daf]
datapath_id         : "0000000000000001"
datapath_type       : ""
datapath_version    : "&lt;unknown&gt;"
external_ids        : {}
fail_mode           : standalone
flood_vlans         : []
flow_tables         : {}
ipfix               : []
mcast_snooping_enable: false
mirrors             : []
name                : s1
netflow             : []
other_config        : {datapath-id="0000000000000001", disable-in-band="true", dp-desc=s1}
ports               : [00da38e5-71ff-48bc-bf39-436bd14bfea5, 32ff594e-effb-41a0-aa0f-1df856411422, f9c97d36-c254-491b-a311-602fd640aa36]
protocols           : [OpenFlow13]
rstp_enable         : false
rstp_status         : {}
sflow               : []
status              : {}
stp_enable          : false
mininet&gt;</msg>
<arg>${brstdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:19.314475" elapsed="0.000381"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:01:19.316645" level="INFO">sh ovs-vsctl list Controller</msg>
<arg>${lcmd_prefix} ${SH_CNTL_CMD}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:01:19.315017" elapsed="0.001683"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-08T01:01:19.370470" level="INFO">_uuid               : d41b7df8-53ff-40ff-acd4-14e5125234e4
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : true
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : slave
status              : {sec_since_connect="169", state=ACTIVE}
target              : "tcp:10.30.171.110:6633"
type                : []

_uuid               : 90572501-522a-42c1-ae3d-252f978971ed
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : true
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : slave
status              : {sec_since_connect="170", state=ACTIVE}
target              : "tcp:10.30.170.131:6633"
type                : []

_uuid               : 243fe3ab-9d09-4f6a-95c7-66f44ce44370
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : true
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : slave
status              : {sec_since_connect="170", state=ACTIVE}
target              : "tcp:10.30.171.110:6633"
type                : []

_uuid               : f2bbc0c3-faee-4472-91b2-cdaff2b5204c
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : true
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : master
status              : {sec_since_connect="169", state=ACTIVE}
target              : "tcp:10.30.170.48:6633"
type                : []

_uuid               : b82e7dd4-18f4-4c87-9075-dd7aeb12e9e8
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : true
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : slave
status              : {sec_since_connect="170", state=ACTIVE}
target              : "tcp:10.30.171.110:6633"
type                : []

_uuid               : 62c52bac-35ce-4da8-8345-1607faceb933
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : true
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : master
status              : {sec_since_connect="170", state=ACTIVE}
target              : "tcp:10.30.170.48:6633"
type                : []

_uuid               : 42dcabae-83d0-4b2e-85c3-6afd38cf9dbe
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : true
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : slave
status              : {sec_since_connect="170", state=ACTIVE}
target              : "tcp:10.30.170.131:6633"
type                : []

_uuid               : ef6c3b9f-b37d-44ed-b461-11afe8598daf
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : true
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : master
status              : {sec_since_connect="170", state=ACTIVE}
target              : "tcp:10.30.170.48:6633"
type                : []

_uuid               : 1968464f-4637-41c7-a481-9eba89956be9
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : true
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : slave
status              : {sec_since_connect="169", state=ACTIVE}
target              : "tcp:10.30.170.131:6633"
type                : []
mininet&gt;</msg>
<msg time="2026-04-08T01:01:19.370651" level="INFO">${cntlstdout} = _uuid               : d41b7df8-53ff-40ff-acd4-14e5125234e4
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
exter...</msg>
<var>${cntlstdout}</var>
<arg>${lprompt}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-08T01:01:19.316857" elapsed="0.053823"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:19.371120" level="INFO">_uuid               : d41b7df8-53ff-40ff-acd4-14e5125234e4
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : true
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : slave
status              : {sec_since_connect="169", state=ACTIVE}
target              : "tcp:10.30.171.110:6633"
type                : []

_uuid               : 90572501-522a-42c1-ae3d-252f978971ed
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : true
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : slave
status              : {sec_since_connect="170", state=ACTIVE}
target              : "tcp:10.30.170.131:6633"
type                : []

_uuid               : 243fe3ab-9d09-4f6a-95c7-66f44ce44370
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : true
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : slave
status              : {sec_since_connect="170", state=ACTIVE}
target              : "tcp:10.30.171.110:6633"
type                : []

_uuid               : f2bbc0c3-faee-4472-91b2-cdaff2b5204c
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : true
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : master
status              : {sec_since_connect="169", state=ACTIVE}
target              : "tcp:10.30.170.48:6633"
type                : []

_uuid               : b82e7dd4-18f4-4c87-9075-dd7aeb12e9e8
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : true
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : slave
status              : {sec_since_connect="170", state=ACTIVE}
target              : "tcp:10.30.171.110:6633"
type                : []

_uuid               : 62c52bac-35ce-4da8-8345-1607faceb933
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : true
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : master
status              : {sec_since_connect="170", state=ACTIVE}
target              : "tcp:10.30.170.48:6633"
type                : []

_uuid               : 42dcabae-83d0-4b2e-85c3-6afd38cf9dbe
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : true
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : slave
status              : {sec_since_connect="170", state=ACTIVE}
target              : "tcp:10.30.170.131:6633"
type                : []

_uuid               : ef6c3b9f-b37d-44ed-b461-11afe8598daf
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : true
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : master
status              : {sec_since_connect="170", state=ACTIVE}
target              : "tcp:10.30.170.48:6633"
type                : []

_uuid               : 1968464f-4637-41c7-a481-9eba89956be9
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : true
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : slave
status              : {sec_since_connect="169", state=ACTIVE}
target              : "tcp:10.30.170.131:6633"
type                : []
mininet&gt;</msg>
<arg>${cntlstdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:19.370858" elapsed="0.000373"/>
</kw>
<kw name="Parse" owner="VsctlListParser">
<msg time="2026-04-08T01:01:19.372388" level="INFO">_uuid:9bcfbeed-47e0-4406-b63a-1c7efd018616
auto_attach:[]
controller:[243fe3ab-9d09-4f6a-95c7-66f44ce44370,42dcabae-83d0-4b2e-85c3-6afd38cf9dbe,62c52bac-35ce-4da8-8345-1607faceb933]
datapath_id:"0000000000000002"
datapath_type:""
datapath_version:"&lt;unknown&gt;"
external_ids:{}
fail_mode:standalone
flood_vlans:[]
flow_tables:{}
ipfix:[]
mcast_snooping_enable:false
mirrors:[]
name:s2
netflow:[]
other_config:{datapath-id="0000000000000002",disable-in-band="true",dp-desc=s2}
ports:[3cf70080-6935-4da8-954a-60707cd2aa95,6731aacc-32ec-4fcd-b0fb-8f97da3f3aaa,ce33b3d8-209b-438d-83d6-c050bc8aee26,d86f10c2-9d40-484c-a7d6-6e88fed82e11]
protocols:[OpenFlow13]
rstp_enable:false
rstp_status:{}
sflow:[]
status:{}
stp_enable:false
_uuid:60c187c3-58d7-430d-bef7-bbbc3131fa87
auto_attach:[]
controller:[1968464f-4637-41c7-a481-9eba89956be9,d41b7df8-53ff-40ff-acd4-14e5125234e4,f2bbc0c3-faee-4472-91b2-cdaff2b5204c]
datapath_id:"0000000000000003"
datapath_type:""
datapath_version:"&lt;unknown&gt;"
external_ids:{}
fail_mode:standalone
flood_vlans:[]
flow_tables:{}
ipfix:[]
mcast_snooping_enable:false
mirrors:[]
name:s3
netflow:[]
other_config:{datapath-id="0000000000000003",disable-in-band="true",dp-desc=s3}
ports:[7915a530-8449-433a-9306-00cddaf3116b,8069abcf-4250-428c-858a-bf539517ea14,e98007ce-09cd-4834-83d3-70a858f2f481]
protocols:[OpenFlow13]
rstp_enable:false
rstp_status:{}
sflow:[]
status:{}
stp_enable:false
_uuid:5bd045e7-95e2-49c7-a6be-cc2541636f0b
auto_attach:[]
controller:[90572501-522a-42c1-ae3d-252f978971ed,b82e7dd4-18f4-4c87-9075-dd7aeb12e9e8,ef6c3b9f-b37d-44ed-b461-11afe8598daf]
datapath_id:"0000000000000001"
datapath_type:""
datapath_version:"&lt;unknown&gt;"
external_ids:{}
fail_mode:standalone
flood_vlans:[]
flow_tables:{}
ipfix:[]
mcast_snooping_enable:false
mirrors:[]
name:s1
netflow:[]
other_config:{datapath-id="0000000000000001",disable-in-band="true",dp-desc=s1}
ports:[00da38e5-71ff-48bc-bf39-436bd14bfea5,32ff594e-effb-41a0-aa0f-1df856411422,f9c97d36-c254-491b-a311-602fd640aa36]
protocols:[OpenFlow13]
rstp_enable:false
rstp_status:{}
sflow:[]
status:{}
stp_enable:false
_uuid:d41b7df8-53ff-40ff-acd4-14e5125234e4
connection_mode:[]
controller_burst_limit:[]
controller_queue_size:[]
controller_rate_limit:[]
enable_async_messages:[]
external_ids:{}
inactivity_probe:[]
is_connected:true
local_gateway:[]
local_ip:[]
local_netmask:[]
max_backoff:[]
other_config:{}
role:slave
status:{sec_since_connect="169",state=ACTIVE}
target:"tcp:10.30.171.110:6633"
type:[]
_uuid:90572501-522a-42c1-ae3d-252f978971ed
connection_mode:[]
controller_burst_limit:[]
controller_queue_size:[]
controller_rate_limit:[]
enable_async_messages:[]
external_ids:{}
inactivity_probe:[]
is_connected:true
local_gateway:[]
local_ip:[]
local_netmask:[]
max_backoff:[]
other_config:{}
role:slave
status:{sec_since_connect="170",state=ACTIVE}
target:"tcp:10.30.170.131:6633"
type:[]
_uuid:243fe3ab-9d09-4f6a-95c7-66f44ce44370
connection_mode:[]
controller_burst_limit:[]
controller_queue_size:[]
controller_rate_limit:[]
enable_async_messages:[]
external_ids:{}
inactivity_probe:[]
is_connected:true
local_gateway:[]
local_ip:[]
local_netmask:[]
max_backoff:[]
other_config:{}
role:slave
status:{sec_since_connect="170",state=ACTIVE}
target:"tcp:10.30.171.110:6633"
type:[]
_uuid:f2bbc0c3-faee-4472-91b2-cdaff2b5204c
connection_mode:[]
controller_burst_limit:[]
controller_queue_size:[]
controller_rate_limit:[]
enable_async_messages:[]
external_ids:{}
inactivity_probe:[]
is_connected:true
local_gateway:[]
local_ip:[]
local_netmask:[]
max_backoff:[]
other_config:{}
role:master
status:{sec_since_connect="169",state=ACTIVE}
target:"tcp:10.30.170.48:6633"
type:[]
_uuid:b82e7dd4-18f4-4c87-9075-dd7aeb12e9e8
connection_mode:[]
controller_burst_limit:[]
controller_queue_size:[]
controller_rate_limit:[]
enable_async_messages:[]
external_ids:{}
inactivity_probe:[]
is_connected:true
local_gateway:[]
local_ip:[]
local_netmask:[]
max_backoff:[]
other_config:{}
role:slave
status:{sec_since_connect="170",state=ACTIVE}
target:"tcp:10.30.171.110:6633"
type:[]
_uuid:62c52bac-35ce-4da8-8345-1607faceb933
connection_mode:[]
controller_burst_limit:[]
controller_queue_size:[]
controller_rate_limit:[]
enable_async_messages:[]
external_ids:{}
inactivity_probe:[]
is_connected:true
local_gateway:[]
local_ip:[]
local_netmask:[]
max_backoff:[]
other_config:{}
role:master
status:{sec_since_connect="170",state=ACTIVE}
target:"tcp:10.30.170.48:6633"
type:[]
_uuid:42dcabae-83d0-4b2e-85c3-6afd38cf9dbe
connection_mode:[]
controller_burst_limit:[]
controller_queue_size:[]
controller_rate_limit:[]
enable_async_messages:[]
external_ids:{}
inactivity_probe:[]
is_connected:true
local_gateway:[]
local_ip:[]
local_netmask:[]
max_backoff:[]
other_config:{}
role:slave
status:{sec_since_connect="170",state=ACTIVE}
target:"tcp:10.30.170.131:6633"
type:[]
_uuid:ef6c3b9f-b37d-44ed-b461-11afe8598daf
connection_mode:[]
controller_burst_limit:[]
controller_queue_size:[]
controller_rate_limit:[]
enable_async_messages:[]
external_ids:{}
inactivity_probe:[]
is_connected:true
local_gateway:[]
local_ip:[]
local_netmask:[]
max_backoff:[]
other_config:{}
role:master
status:{sec_since_connect="170",state=ACTIVE}
target:"tcp:10.30.170.48:6633"
type:[]
_uuid:1968464f-4637-41c7-a481-9eba89956be9
connection_mode:[]
controller_burst_limit:[]
controller_queue_size:[]
controller_rate_limit:[]
enable_async_messages:[]
external_ids:{}
inactivity_probe:[]
is_connected:true
local_gateway:[]
local_ip:[]
local_netmask:[]
max_backoff:[]
other_config:{}
role:slave
status:{sec_since_connect="169",state=ACTIVE}
target:"tcp:10.30.170.131:6633"
type:[]</msg>
<msg time="2026-04-08T01:01:19.372596" level="INFO">${data} = {'': {'_uuid': '5bd045e7-95e2-49c7-a6be-cc2541636f0b', 'auto_attach': '[]', 'controller': {'10.30.170.131': {'_uuid': '90572501-522a-42c1-ae3d-252f978971ed', 'connection_mode': '[]', 'controller_burst...</msg>
<msg time="2026-04-08T01:01:19.372669" level="INFO">${bridegs} = {'9bcfbeed-47e0-4406-b63a-1c7efd018616': {'_uuid': '9bcfbeed-47e0-4406-b63a-1c7efd018616', 'auto_attach': '[]', 'controller': '[243fe3ab-9d09-4f6a-95c7-66f44ce44370,42dcabae-83d0-4b2e-85c3-6afd38cf9db...</msg>
<msg time="2026-04-08T01:01:19.372769" level="INFO">${controllers} = {'d41b7df8-53ff-40ff-acd4-14e5125234e4': {'_uuid': 'd41b7df8-53ff-40ff-acd4-14e5125234e4', 'connection_mode': '[]', 'controller_burst_limit': '[]', 'controller_queue_size': '[]', 'controller_rate_limi...</msg>
<var>${data}</var>
<var>${bridegs}</var>
<var>${controllers}</var>
<arg>${brstdout}</arg>
<arg>${cntlstdout}</arg>
<doc>Produces dictionary with data for future usege</doc>
<status status="PASS" start="2026-04-08T01:01:19.371390" elapsed="0.001404"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:19.373269" level="INFO">{'': {'_uuid': '5bd045e7-95e2-49c7-a6be-cc2541636f0b', 'auto_attach': '[]', 'controller': {'10.30.170.131': {'_uuid': '90572501-522a-42c1-ae3d-252f978971ed', 'connection_mode': '[]', 'controller_burst_limit': '[]', 'controller_queue_size': '[]', 'controller_rate_limit': '[]', 'enable_async_messages': '[]', 'external_ids': '{}', 'inactivity_probe': '[]', 'is_connected': True, 'local_gateway': '[]', 'local_ip': '[]', 'local_netmask': '[]', 'max_backoff': '[]', 'other_config': '{}', 'role': 'slave', 'status': '{sec_since_connect="170",state=ACTIVE}', 'target': '"tcp:10.30.170.131:6633"', 'type': '[]'}, '10.30.171.110': {'_uuid': 'b82e7dd4-18f4-4c87-9075-dd7aeb12e9e8', 'connection_mode': '[]', 'controller_burst_limit': '[]', 'controller_queue_size': '[]', 'controller_rate_limit': '[]', 'enable_async_messages': '[]', 'external_ids': '{}', 'inactivity_probe': '[]', 'is_connected': True, 'local_gateway': '[]', 'local_ip': '[]', 'local_netmask': '[]', 'max_backoff': '[]', 'other_config': '{}', 'role': 'slave', 'status': '{sec_since_connect="170",state=ACTIVE}', 'target': '"tcp:10.30.171.110:6633"', 'type': '[]'}, '10.30.170.48': {'_uuid': 'ef6c3b9f-b37d-44ed-b461-11afe8598daf', 'connection_mode': '[]', 'controller_burst_limit': '[]', 'controller_queue_size': '[]', 'controller_rate_limit': '[]', 'enable_async_messages': '[]', 'external_ids': '{}', 'inactivity_probe': '[]', 'is_connected': True, 'local_gateway': '[]', 'local_ip': '[]', 'local_netmask': '[]', 'max_backoff': '[]', 'other_config': '{}', 'role': 'master', 'status': '{sec_since_connect="170",state=ACTIVE}', 'target': '"tcp:10.30.170.48:6633"', 'type': '[]'}}, 'datapath_id': '"0000000000000001"', 'datapath_type': '""', 'datapath_version': '"&lt;unknown&gt;"', 'external_ids': '{}', 'fail_mode': 'standalone', 'flood_vlans': '[]', 'flow_tables': '{}', 'ipfix': '[]', 'mcast_snooping_enable': 'false', 'mirrors': '[]', 'name': 's1', 'netflow': '[]', 'other_config': '{datapath-id="0000000000000001",disable-in-band="true",dp-desc=s1}', 'ports': '[00da38e5-71ff-48bc-bf39-436bd14bfea5,32ff594e-effb-41a0-aa0f-1df856411422,f9c97d36-c254-491b-a311-602fd640aa36]', 'protocols': '[OpenFlow13]', 'rstp_enable': 'false', 'rstp_status': '{}', 'sflow': '[]', 'status': '{}', 'stp_enable': 'false'}}</msg>
<arg>${data}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:19.372959" elapsed="0.000376"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-08T01:01:19.373954" level="INFO">${ovs_switch_data} = {'': {'_uuid': '5bd045e7-95e2-49c7-a6be-cc2541636f0b', 'auto_attach': '[]', 'controller': {'10.30.170.131': {'_uuid': '90572501-522a-42c1-ae3d-252f978971ed', 'connection_mode': '[]', 'controller_burst...</msg>
<arg>${ovs_switch_data}</arg>
<arg>${data}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-08T01:01:19.373504" elapsed="0.000494"/>
</kw>
<return>
<value>${data}</value>
<status status="PASS" start="2026-04-08T01:01:19.374047" elapsed="0.000043"/>
</return>
<doc>Gets ovs data and parse them.</doc>
<status status="PASS" start="2026-04-08T01:01:19.233242" elapsed="0.140978"/>
</kw>
<status status="PASS" start="2026-04-08T01:01:19.232375" elapsed="0.141881"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:19.232326" elapsed="0.141960"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:01:19.374658" level="FAIL">Dictionary does not contain key 's1'.</msg>
<var>${bridge}</var>
<arg>${ovs_switch_data}</arg>
<arg>${switch}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="FAIL" start="2026-04-08T01:01:19.374434" elapsed="0.000333">Dictionary does not contain key 's1'.</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${cntls}</var>
<arg>${bridge}</arg>
<arg>controller</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:19.374935" elapsed="0.000021"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${cntl}</var>
<arg>${cntls}</arg>
<arg>${controller}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:19.375105" elapsed="0.000020"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${connected}</var>
<arg>${cntl}</arg>
<arg>is_connected</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:19.375308" elapsed="0.000022"/>
</kw>
<return>
<value>${connected}</value>
<status status="NOT RUN" start="2026-04-08T01:01:19.375377" elapsed="0.000016"/>
</return>
<kw name="Execute OvsVsctl Show Command" owner="OvsManager" type="TEARDOWN">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:01:19.377608" level="INFO">sh ovs-vsctl show</msg>
<arg>${lcmd_prefix} ovs-vsctl show</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:01:19.375958" elapsed="0.001708"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-08T01:01:19.397691" level="INFO">9a5df812-eb49-4477-a37e-2d464c02791d
    Bridge s1
        Controller "tcp:10.30.170.131:6633"
            is_connected: true
        Controller "tcp:10.30.171.110:6633"
            is_connected: true
        Controller "tcp:10.30.170.48:6633"
            is_connected: true
        fail_mode: standalone
        Port s1-eth1
            Interface s1-eth1
        Port s1-eth2
            Interface s1-eth2
        Port s1
            Interface s1
                type: internal
    Bridge s3
        Controller "tcp:10.30.170.131:6633"
            is_connected: true
        Controller "tcp:10.30.171.110:6633"
            is_connected: true
        Controller "tcp:10.30.170.48:6633"
            is_connected: true
        fail_mode: standalone
        Port s3-eth2
            Interface s3-eth2
        Port s3-eth1
            Interface s3-eth1
        Port s3
            Interface s3
                type: internal
    Bridge s2
        Controller "tcp:10.30.171.110:6633"
            is_connected: true
        Controller "tcp:10.30.170.131:6633"
            is_connected: true
        Controller "tcp:10.30.170.48:6633"
            is_connected: true
        fail_mode: standalone
        Port s2-eth1
            Interface s2-eth1
        Port s2-eth2
            Interface s2-eth2
        Port s2-eth3
            Interface s2-eth3
        Port s2
            Interface s2
                type: internal
    ovs_version: "2.17.11"
mininet&gt;</msg>
<msg time="2026-04-08T01:01:19.397797" level="INFO">${output} = 9a5df812-eb49-4477-a37e-2d464c02791d
    Bridge s1
        Controller "tcp:10.30.170.131:6633"
            is_connected: true
        Controller "tcp:10.30.171.110:6633"
            is_connected:...</msg>
<var>${output}</var>
<arg>${lprompt}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-08T01:01:19.377826" elapsed="0.020028"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:19.398313" level="INFO">9a5df812-eb49-4477-a37e-2d464c02791d
    Bridge s1
        Controller "tcp:10.30.170.131:6633"
            is_connected: true
        Controller "tcp:10.30.171.110:6633"
            is_connected: true
        Controller "tcp:10.30.170.48:6633"
            is_connected: true
        fail_mode: standalone
        Port s1-eth1
            Interface s1-eth1
        Port s1-eth2
            Interface s1-eth2
        Port s1
            Interface s1
                type: internal
    Bridge s3
        Controller "tcp:10.30.170.131:6633"
            is_connected: true
        Controller "tcp:10.30.171.110:6633"
            is_connected: true
        Controller "tcp:10.30.170.48:6633"
            is_connected: true
        fail_mode: standalone
        Port s3-eth2
            Interface s3-eth2
        Port s3-eth1
            Interface s3-eth1
        Port s3
            Interface s3
                type: internal
    Bridge s2
        Controller "tcp:10.30.171.110:6633"
            is_connected: true
        Controller "tcp:10.30.170.131:6633"
            is_connected: true
        Controller "tcp:10.30.170.48:6633"
            is_connected: true
        fail_mode: standalone
        Port s2-eth1
            Interface s2-eth1
        Port s2-eth2
            Interface s2-eth2
        Port s2-eth3
            Interface s2-eth3
        Port s2
            Interface s2
                type: internal
    ovs_version: "2.17.11"
mininet&gt;</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:19.398033" elapsed="0.000339"/>
</kw>
<doc>Executes ovs-vsctl show command and returns stdout, no check nor change is performed</doc>
<status status="PASS" start="2026-04-08T01:01:19.375652" elapsed="0.022775"/>
</kw>
<var>${connected}</var>
<arg>${switch}</arg>
<arg>${controller}</arg>
<arg>update_data=${update_data}</arg>
<doc>Return is_connected boolean value</doc>
<status status="FAIL" start="2026-04-08T01:01:19.231510" elapsed="0.166999">Dictionary does not contain key 's1'.</status>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<arg>${connected}</arg>
<arg>${False}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:19.398684" elapsed="0.000022"/>
</kw>
<arg>s1</arg>
<arg>${ODL_SYSTEM_${index}_IP}</arg>
<arg>update_data=${True}</arg>
<doc>Check if the switch is disconnected</doc>
<status status="FAIL" start="2026-04-08T01:01:19.230004" elapsed="0.168788">Dictionary does not contain key 's1'.</status>
</kw>
<kw name="Should Be Disconnected" owner="OvsManager">
<kw name="OvsManager__Is_Connected" owner="OvsManager">
<if>
<branch type="IF" condition="${update_data}==${True}">
<kw name="Get Ovsdb Data" owner="OvsManager">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:01:20.407344" level="INFO">sh ovs-vsctl list Bridge</msg>
<arg>${lcmd_prefix} ${SH_BR_CMD}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:01:20.404013" elapsed="0.003476"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-08T01:01:20.483699" level="INFO">_uuid               : 9bcfbeed-47e0-4406-b63a-1c7efd018616
auto_attach         : []
controller          : [243fe3ab-9d09-4f6a-95c7-66f44ce44370, 42dcabae-83d0-4b2e-85c3-6afd38cf9dbe, 62c52bac-35ce-4da8-8345-1607faceb933]
datapath_id         : "0000000000000002"
datapath_type       : ""
datapath_version    : "&lt;unknown&gt;"
external_ids        : {}
fail_mode           : standalone
flood_vlans         : []
flow_tables         : {}
ipfix               : []
mcast_snooping_enable: false
mirrors             : []
name                : s2
netflow             : []
other_config        : {datapath-id="0000000000000002", disable-in-band="true", dp-desc=s2}
ports               : [3cf70080-6935-4da8-954a-60707cd2aa95, 6731aacc-32ec-4fcd-b0fb-8f97da3f3aaa, ce33b3d8-209b-438d-83d6-c050bc8aee26, d86f10c2-9d40-484c-a7d6-6e88fed82e11]
protocols           : [OpenFlow13]
rstp_enable         : false
rstp_status         : {}
sflow               : []
status              : {}
stp_enable          : false

_uuid               : 60c187c3-58d7-430d-bef7-bbbc3131fa87
auto_attach         : []
controller          : [1968464f-4637-41c7-a481-9eba89956be9, d41b7df8-53ff-40ff-acd4-14e5125234e4, f2bbc0c3-faee-4472-91b2-cdaff2b5204c]
datapath_id         : "0000000000000003"
datapath_type       : ""
datapath_version    : "&lt;unknown&gt;"
external_ids        : {}
fail_mode           : standalone
flood_vlans         : []
flow_tables         : {}
ipfix               : []
mcast_snooping_enable: false
mirrors             : []
name                : s3
netflow             : []
other_config        : {datapath-id="0000000000000003", disable-in-band="true", dp-desc=s3}
ports               : [7915a530-8449-433a-9306-00cddaf3116b, 8069abcf-4250-428c-858a-bf539517ea14, e98007ce-09cd-4834-83d3-70a858f2f481]
protocols           : [OpenFlow13]
rstp_enable         : false
rstp_status         : {}
sflow               : []
status              : {}
stp_enable          : false

_uuid               : 5bd045e7-95e2-49c7-a6be-cc2541636f0b
auto_attach         : []
controller          : [90572501-522a-42c1-ae3d-252f978971ed, b82e7dd4-18f4-4c87-9075-dd7aeb12e9e8, ef6c3b9f-b37d-44ed-b461-11afe8598daf]
datapath_id         : "0000000000000001"
datapath_type       : ""
datapath_version    : "&lt;unknown&gt;"
external_ids        : {}
fail_mode           : standalone
flood_vlans         : []
flow_tables         : {}
ipfix               : []
mcast_snooping_enable: false
mirrors             : []
name                : s1
netflow             : []
other_config        : {datapath-id="0000000000000001", disable-in-band="true", dp-desc=s1}
ports               : [00da38e5-71ff-48bc-bf39-436bd14bfea5, 32ff594e-effb-41a0-aa0f-1df856411422, f9c97d36-c254-491b-a311-602fd640aa36]
protocols           : [OpenFlow13]
rstp_enable         : false
rstp_status         : {}
sflow               : []
status              : {}
stp_enable          : false
mininet&gt;</msg>
<msg time="2026-04-08T01:01:20.483832" level="INFO">${brstdout} = _uuid               : 9bcfbeed-47e0-4406-b63a-1c7efd018616
auto_attach         : []
controller          : [243fe3ab-9d09-4f6a-95c7-66f44ce44370, 42dcabae-83d0-4b2e-85c3-6afd38cf9dbe, 62c52bac-35ce-4...</msg>
<var>${brstdout}</var>
<arg>${lprompt}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-08T01:01:20.407861" elapsed="0.075998"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:20.484377" level="INFO">_uuid               : 9bcfbeed-47e0-4406-b63a-1c7efd018616
auto_attach         : []
controller          : [243fe3ab-9d09-4f6a-95c7-66f44ce44370, 42dcabae-83d0-4b2e-85c3-6afd38cf9dbe, 62c52bac-35ce-4da8-8345-1607faceb933]
datapath_id         : "0000000000000002"
datapath_type       : ""
datapath_version    : "&lt;unknown&gt;"
external_ids        : {}
fail_mode           : standalone
flood_vlans         : []
flow_tables         : {}
ipfix               : []
mcast_snooping_enable: false
mirrors             : []
name                : s2
netflow             : []
other_config        : {datapath-id="0000000000000002", disable-in-band="true", dp-desc=s2}
ports               : [3cf70080-6935-4da8-954a-60707cd2aa95, 6731aacc-32ec-4fcd-b0fb-8f97da3f3aaa, ce33b3d8-209b-438d-83d6-c050bc8aee26, d86f10c2-9d40-484c-a7d6-6e88fed82e11]
protocols           : [OpenFlow13]
rstp_enable         : false
rstp_status         : {}
sflow               : []
status              : {}
stp_enable          : false

_uuid               : 60c187c3-58d7-430d-bef7-bbbc3131fa87
auto_attach         : []
controller          : [1968464f-4637-41c7-a481-9eba89956be9, d41b7df8-53ff-40ff-acd4-14e5125234e4, f2bbc0c3-faee-4472-91b2-cdaff2b5204c]
datapath_id         : "0000000000000003"
datapath_type       : ""
datapath_version    : "&lt;unknown&gt;"
external_ids        : {}
fail_mode           : standalone
flood_vlans         : []
flow_tables         : {}
ipfix               : []
mcast_snooping_enable: false
mirrors             : []
name                : s3
netflow             : []
other_config        : {datapath-id="0000000000000003", disable-in-band="true", dp-desc=s3}
ports               : [7915a530-8449-433a-9306-00cddaf3116b, 8069abcf-4250-428c-858a-bf539517ea14, e98007ce-09cd-4834-83d3-70a858f2f481]
protocols           : [OpenFlow13]
rstp_enable         : false
rstp_status         : {}
sflow               : []
status              : {}
stp_enable          : false

_uuid               : 5bd045e7-95e2-49c7-a6be-cc2541636f0b
auto_attach         : []
controller          : [90572501-522a-42c1-ae3d-252f978971ed, b82e7dd4-18f4-4c87-9075-dd7aeb12e9e8, ef6c3b9f-b37d-44ed-b461-11afe8598daf]
datapath_id         : "0000000000000001"
datapath_type       : ""
datapath_version    : "&lt;unknown&gt;"
external_ids        : {}
fail_mode           : standalone
flood_vlans         : []
flow_tables         : {}
ipfix               : []
mcast_snooping_enable: false
mirrors             : []
name                : s1
netflow             : []
other_config        : {datapath-id="0000000000000001", disable-in-band="true", dp-desc=s1}
ports               : [00da38e5-71ff-48bc-bf39-436bd14bfea5, 32ff594e-effb-41a0-aa0f-1df856411422, f9c97d36-c254-491b-a311-602fd640aa36]
protocols           : [OpenFlow13]
rstp_enable         : false
rstp_status         : {}
sflow               : []
status              : {}
stp_enable          : false
mininet&gt;</msg>
<arg>${brstdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:20.484059" elapsed="0.000454"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:01:20.486232" level="INFO">sh ovs-vsctl list Controller</msg>
<arg>${lcmd_prefix} ${SH_CNTL_CMD}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:01:20.484667" elapsed="0.001621"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-08T01:01:20.541699" level="INFO">_uuid               : d41b7df8-53ff-40ff-acd4-14e5125234e4
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : true
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : slave
status              : {sec_since_connect="169", state=ACTIVE}
target              : "tcp:10.30.171.110:6633"
type                : []

_uuid               : 90572501-522a-42c1-ae3d-252f978971ed
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : true
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : slave
status              : {sec_since_connect="170", state=ACTIVE}
target              : "tcp:10.30.170.131:6633"
type                : []

_uuid               : 243fe3ab-9d09-4f6a-95c7-66f44ce44370
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : true
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : slave
status              : {sec_since_connect="170", state=ACTIVE}
target              : "tcp:10.30.171.110:6633"
type                : []

_uuid               : f2bbc0c3-faee-4472-91b2-cdaff2b5204c
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : true
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : master
status              : {sec_since_connect="169", state=ACTIVE}
target              : "tcp:10.30.170.48:6633"
type                : []

_uuid               : b82e7dd4-18f4-4c87-9075-dd7aeb12e9e8
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : true
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : slave
status              : {sec_since_connect="170", state=ACTIVE}
target              : "tcp:10.30.171.110:6633"
type                : []

_uuid               : 62c52bac-35ce-4da8-8345-1607faceb933
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : true
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : master
status              : {sec_since_connect="170", state=ACTIVE}
target              : "tcp:10.30.170.48:6633"
type                : []

_uuid               : 42dcabae-83d0-4b2e-85c3-6afd38cf9dbe
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : true
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : slave
status              : {sec_since_connect="170", state=ACTIVE}
target              : "tcp:10.30.170.131:6633"
type                : []

_uuid               : ef6c3b9f-b37d-44ed-b461-11afe8598daf
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : true
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : master
status              : {sec_since_connect="170", state=ACTIVE}
target              : "tcp:10.30.170.48:6633"
type                : []

_uuid               : 1968464f-4637-41c7-a481-9eba89956be9
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : true
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : slave
status              : {sec_since_connect="169", state=ACTIVE}
target              : "tcp:10.30.170.131:6633"
type                : []
mininet&gt;</msg>
<msg time="2026-04-08T01:01:20.541841" level="INFO">${cntlstdout} = _uuid               : d41b7df8-53ff-40ff-acd4-14e5125234e4
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
exter...</msg>
<var>${cntlstdout}</var>
<arg>${lprompt}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-08T01:01:20.486445" elapsed="0.055423"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:20.542311" level="INFO">_uuid               : d41b7df8-53ff-40ff-acd4-14e5125234e4
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : true
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : slave
status              : {sec_since_connect="169", state=ACTIVE}
target              : "tcp:10.30.171.110:6633"
type                : []

_uuid               : 90572501-522a-42c1-ae3d-252f978971ed
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : true
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : slave
status              : {sec_since_connect="170", state=ACTIVE}
target              : "tcp:10.30.170.131:6633"
type                : []

_uuid               : 243fe3ab-9d09-4f6a-95c7-66f44ce44370
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : true
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : slave
status              : {sec_since_connect="170", state=ACTIVE}
target              : "tcp:10.30.171.110:6633"
type                : []

_uuid               : f2bbc0c3-faee-4472-91b2-cdaff2b5204c
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : true
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : master
status              : {sec_since_connect="169", state=ACTIVE}
target              : "tcp:10.30.170.48:6633"
type                : []

_uuid               : b82e7dd4-18f4-4c87-9075-dd7aeb12e9e8
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : true
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : slave
status              : {sec_since_connect="170", state=ACTIVE}
target              : "tcp:10.30.171.110:6633"
type                : []

_uuid               : 62c52bac-35ce-4da8-8345-1607faceb933
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : true
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : master
status              : {sec_since_connect="170", state=ACTIVE}
target              : "tcp:10.30.170.48:6633"
type                : []

_uuid               : 42dcabae-83d0-4b2e-85c3-6afd38cf9dbe
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : true
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : slave
status              : {sec_since_connect="170", state=ACTIVE}
target              : "tcp:10.30.170.131:6633"
type                : []

_uuid               : ef6c3b9f-b37d-44ed-b461-11afe8598daf
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : true
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : master
status              : {sec_since_connect="170", state=ACTIVE}
target              : "tcp:10.30.170.48:6633"
type                : []

_uuid               : 1968464f-4637-41c7-a481-9eba89956be9
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : true
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : slave
status              : {sec_since_connect="169", state=ACTIVE}
target              : "tcp:10.30.170.131:6633"
type                : []
mininet&gt;</msg>
<arg>${cntlstdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:20.542043" elapsed="0.000387"/>
</kw>
<kw name="Parse" owner="VsctlListParser">
<msg time="2026-04-08T01:01:20.543567" level="INFO">_uuid:9bcfbeed-47e0-4406-b63a-1c7efd018616
auto_attach:[]
controller:[243fe3ab-9d09-4f6a-95c7-66f44ce44370,42dcabae-83d0-4b2e-85c3-6afd38cf9dbe,62c52bac-35ce-4da8-8345-1607faceb933]
datapath_id:"0000000000000002"
datapath_type:""
datapath_version:"&lt;unknown&gt;"
external_ids:{}
fail_mode:standalone
flood_vlans:[]
flow_tables:{}
ipfix:[]
mcast_snooping_enable:false
mirrors:[]
name:s2
netflow:[]
other_config:{datapath-id="0000000000000002",disable-in-band="true",dp-desc=s2}
ports:[3cf70080-6935-4da8-954a-60707cd2aa95,6731aacc-32ec-4fcd-b0fb-8f97da3f3aaa,ce33b3d8-209b-438d-83d6-c050bc8aee26,d86f10c2-9d40-484c-a7d6-6e88fed82e11]
protocols:[OpenFlow13]
rstp_enable:false
rstp_status:{}
sflow:[]
status:{}
stp_enable:false
_uuid:60c187c3-58d7-430d-bef7-bbbc3131fa87
auto_attach:[]
controller:[1968464f-4637-41c7-a481-9eba89956be9,d41b7df8-53ff-40ff-acd4-14e5125234e4,f2bbc0c3-faee-4472-91b2-cdaff2b5204c]
datapath_id:"0000000000000003"
datapath_type:""
datapath_version:"&lt;unknown&gt;"
external_ids:{}
fail_mode:standalone
flood_vlans:[]
flow_tables:{}
ipfix:[]
mcast_snooping_enable:false
mirrors:[]
name:s3
netflow:[]
other_config:{datapath-id="0000000000000003",disable-in-band="true",dp-desc=s3}
ports:[7915a530-8449-433a-9306-00cddaf3116b,8069abcf-4250-428c-858a-bf539517ea14,e98007ce-09cd-4834-83d3-70a858f2f481]
protocols:[OpenFlow13]
rstp_enable:false
rstp_status:{}
sflow:[]
status:{}
stp_enable:false
_uuid:5bd045e7-95e2-49c7-a6be-cc2541636f0b
auto_attach:[]
controller:[90572501-522a-42c1-ae3d-252f978971ed,b82e7dd4-18f4-4c87-9075-dd7aeb12e9e8,ef6c3b9f-b37d-44ed-b461-11afe8598daf]
datapath_id:"0000000000000001"
datapath_type:""
datapath_version:"&lt;unknown&gt;"
external_ids:{}
fail_mode:standalone
flood_vlans:[]
flow_tables:{}
ipfix:[]
mcast_snooping_enable:false
mirrors:[]
name:s1
netflow:[]
other_config:{datapath-id="0000000000000001",disable-in-band="true",dp-desc=s1}
ports:[00da38e5-71ff-48bc-bf39-436bd14bfea5,32ff594e-effb-41a0-aa0f-1df856411422,f9c97d36-c254-491b-a311-602fd640aa36]
protocols:[OpenFlow13]
rstp_enable:false
rstp_status:{}
sflow:[]
status:{}
stp_enable:false
_uuid:d41b7df8-53ff-40ff-acd4-14e5125234e4
connection_mode:[]
controller_burst_limit:[]
controller_queue_size:[]
controller_rate_limit:[]
enable_async_messages:[]
external_ids:{}
inactivity_probe:[]
is_connected:true
local_gateway:[]
local_ip:[]
local_netmask:[]
max_backoff:[]
other_config:{}
role:slave
status:{sec_since_connect="169",state=ACTIVE}
target:"tcp:10.30.171.110:6633"
type:[]
_uuid:90572501-522a-42c1-ae3d-252f978971ed
connection_mode:[]
controller_burst_limit:[]
controller_queue_size:[]
controller_rate_limit:[]
enable_async_messages:[]
external_ids:{}
inactivity_probe:[]
is_connected:true
local_gateway:[]
local_ip:[]
local_netmask:[]
max_backoff:[]
other_config:{}
role:slave
status:{sec_since_connect="170",state=ACTIVE}
target:"tcp:10.30.170.131:6633"
type:[]
_uuid:243fe3ab-9d09-4f6a-95c7-66f44ce44370
connection_mode:[]
controller_burst_limit:[]
controller_queue_size:[]
controller_rate_limit:[]
enable_async_messages:[]
external_ids:{}
inactivity_probe:[]
is_connected:true
local_gateway:[]
local_ip:[]
local_netmask:[]
max_backoff:[]
other_config:{}
role:slave
status:{sec_since_connect="170",state=ACTIVE}
target:"tcp:10.30.171.110:6633"
type:[]
_uuid:f2bbc0c3-faee-4472-91b2-cdaff2b5204c
connection_mode:[]
controller_burst_limit:[]
controller_queue_size:[]
controller_rate_limit:[]
enable_async_messages:[]
external_ids:{}
inactivity_probe:[]
is_connected:true
local_gateway:[]
local_ip:[]
local_netmask:[]
max_backoff:[]
other_config:{}
role:master
status:{sec_since_connect="169",state=ACTIVE}
target:"tcp:10.30.170.48:6633"
type:[]
_uuid:b82e7dd4-18f4-4c87-9075-dd7aeb12e9e8
connection_mode:[]
controller_burst_limit:[]
controller_queue_size:[]
controller_rate_limit:[]
enable_async_messages:[]
external_ids:{}
inactivity_probe:[]
is_connected:true
local_gateway:[]
local_ip:[]
local_netmask:[]
max_backoff:[]
other_config:{}
role:slave
status:{sec_since_connect="170",state=ACTIVE}
target:"tcp:10.30.171.110:6633"
type:[]
_uuid:62c52bac-35ce-4da8-8345-1607faceb933
connection_mode:[]
controller_burst_limit:[]
controller_queue_size:[]
controller_rate_limit:[]
enable_async_messages:[]
external_ids:{}
inactivity_probe:[]
is_connected:true
local_gateway:[]
local_ip:[]
local_netmask:[]
max_backoff:[]
other_config:{}
role:master
status:{sec_since_connect="170",state=ACTIVE}
target:"tcp:10.30.170.48:6633"
type:[]
_uuid:42dcabae-83d0-4b2e-85c3-6afd38cf9dbe
connection_mode:[]
controller_burst_limit:[]
controller_queue_size:[]
controller_rate_limit:[]
enable_async_messages:[]
external_ids:{}
inactivity_probe:[]
is_connected:true
local_gateway:[]
local_ip:[]
local_netmask:[]
max_backoff:[]
other_config:{}
role:slave
status:{sec_since_connect="170",state=ACTIVE}
target:"tcp:10.30.170.131:6633"
type:[]
_uuid:ef6c3b9f-b37d-44ed-b461-11afe8598daf
connection_mode:[]
controller_burst_limit:[]
controller_queue_size:[]
controller_rate_limit:[]
enable_async_messages:[]
external_ids:{}
inactivity_probe:[]
is_connected:true
local_gateway:[]
local_ip:[]
local_netmask:[]
max_backoff:[]
other_config:{}
role:master
status:{sec_since_connect="170",state=ACTIVE}
target:"tcp:10.30.170.48:6633"
type:[]
_uuid:1968464f-4637-41c7-a481-9eba89956be9
connection_mode:[]
controller_burst_limit:[]
controller_queue_size:[]
controller_rate_limit:[]
enable_async_messages:[]
external_ids:{}
inactivity_probe:[]
is_connected:true
local_gateway:[]
local_ip:[]
local_netmask:[]
max_backoff:[]
other_config:{}
role:slave
status:{sec_since_connect="169",state=ACTIVE}
target:"tcp:10.30.170.131:6633"
type:[]</msg>
<msg time="2026-04-08T01:01:20.543738" level="INFO">${data} = {'': {'_uuid': '5bd045e7-95e2-49c7-a6be-cc2541636f0b', 'auto_attach': '[]', 'controller': {'10.30.170.131': {'_uuid': '90572501-522a-42c1-ae3d-252f978971ed', 'connection_mode': '[]', 'controller_burst...</msg>
<msg time="2026-04-08T01:01:20.543811" level="INFO">${bridegs} = {'9bcfbeed-47e0-4406-b63a-1c7efd018616': {'_uuid': '9bcfbeed-47e0-4406-b63a-1c7efd018616', 'auto_attach': '[]', 'controller': '[243fe3ab-9d09-4f6a-95c7-66f44ce44370,42dcabae-83d0-4b2e-85c3-6afd38cf9db...</msg>
<msg time="2026-04-08T01:01:20.543909" level="INFO">${controllers} = {'d41b7df8-53ff-40ff-acd4-14e5125234e4': {'_uuid': 'd41b7df8-53ff-40ff-acd4-14e5125234e4', 'connection_mode': '[]', 'controller_burst_limit': '[]', 'controller_queue_size': '[]', 'controller_rate_limi...</msg>
<var>${data}</var>
<var>${bridegs}</var>
<var>${controllers}</var>
<arg>${brstdout}</arg>
<arg>${cntlstdout}</arg>
<doc>Produces dictionary with data for future usege</doc>
<status status="PASS" start="2026-04-08T01:01:20.542585" elapsed="0.001348"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:20.544393" level="INFO">{'': {'_uuid': '5bd045e7-95e2-49c7-a6be-cc2541636f0b', 'auto_attach': '[]', 'controller': {'10.30.170.131': {'_uuid': '90572501-522a-42c1-ae3d-252f978971ed', 'connection_mode': '[]', 'controller_burst_limit': '[]', 'controller_queue_size': '[]', 'controller_rate_limit': '[]', 'enable_async_messages': '[]', 'external_ids': '{}', 'inactivity_probe': '[]', 'is_connected': True, 'local_gateway': '[]', 'local_ip': '[]', 'local_netmask': '[]', 'max_backoff': '[]', 'other_config': '{}', 'role': 'slave', 'status': '{sec_since_connect="170",state=ACTIVE}', 'target': '"tcp:10.30.170.131:6633"', 'type': '[]'}, '10.30.171.110': {'_uuid': 'b82e7dd4-18f4-4c87-9075-dd7aeb12e9e8', 'connection_mode': '[]', 'controller_burst_limit': '[]', 'controller_queue_size': '[]', 'controller_rate_limit': '[]', 'enable_async_messages': '[]', 'external_ids': '{}', 'inactivity_probe': '[]', 'is_connected': True, 'local_gateway': '[]', 'local_ip': '[]', 'local_netmask': '[]', 'max_backoff': '[]', 'other_config': '{}', 'role': 'slave', 'status': '{sec_since_connect="170",state=ACTIVE}', 'target': '"tcp:10.30.171.110:6633"', 'type': '[]'}, '10.30.170.48': {'_uuid': 'ef6c3b9f-b37d-44ed-b461-11afe8598daf', 'connection_mode': '[]', 'controller_burst_limit': '[]', 'controller_queue_size': '[]', 'controller_rate_limit': '[]', 'enable_async_messages': '[]', 'external_ids': '{}', 'inactivity_probe': '[]', 'is_connected': True, 'local_gateway': '[]', 'local_ip': '[]', 'local_netmask': '[]', 'max_backoff': '[]', 'other_config': '{}', 'role': 'master', 'status': '{sec_since_connect="170",state=ACTIVE}', 'target': '"tcp:10.30.170.48:6633"', 'type': '[]'}}, 'datapath_id': '"0000000000000001"', 'datapath_type': '""', 'datapath_version': '"&lt;unknown&gt;"', 'external_ids': '{}', 'fail_mode': 'standalone', 'flood_vlans': '[]', 'flow_tables': '{}', 'ipfix': '[]', 'mcast_snooping_enable': 'false', 'mirrors': '[]', 'name': 's1', 'netflow': '[]', 'other_config': '{datapath-id="0000000000000001",disable-in-band="true",dp-desc=s1}', 'ports': '[00da38e5-71ff-48bc-bf39-436bd14bfea5,32ff594e-effb-41a0-aa0f-1df856411422,f9c97d36-c254-491b-a311-602fd640aa36]', 'protocols': '[OpenFlow13]', 'rstp_enable': 'false', 'rstp_status': '{}', 'sflow': '[]', 'status': '{}', 'stp_enable': 'false'}}</msg>
<arg>${data}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:20.544098" elapsed="0.000395"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-08T01:01:20.545109" level="INFO">${ovs_switch_data} = {'': {'_uuid': '5bd045e7-95e2-49c7-a6be-cc2541636f0b', 'auto_attach': '[]', 'controller': {'10.30.170.131': {'_uuid': '90572501-522a-42c1-ae3d-252f978971ed', 'connection_mode': '[]', 'controller_burst...</msg>
<arg>${ovs_switch_data}</arg>
<arg>${data}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-08T01:01:20.544663" elapsed="0.000490"/>
</kw>
<return>
<value>${data}</value>
<status status="PASS" start="2026-04-08T01:01:20.545218" elapsed="0.000042"/>
</return>
<doc>Gets ovs data and parse them.</doc>
<status status="PASS" start="2026-04-08T01:01:20.403350" elapsed="0.142010"/>
</kw>
<status status="PASS" start="2026-04-08T01:01:20.402574" elapsed="0.142816"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:20.401985" elapsed="0.143431"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:01:20.545782" level="FAIL">Dictionary does not contain key 's1'.</msg>
<var>${bridge}</var>
<arg>${ovs_switch_data}</arg>
<arg>${switch}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="FAIL" start="2026-04-08T01:01:20.545564" elapsed="0.000326">Dictionary does not contain key 's1'.</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${cntls}</var>
<arg>${bridge}</arg>
<arg>controller</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:20.546057" elapsed="0.000020"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${cntl}</var>
<arg>${cntls}</arg>
<arg>${controller}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:20.546241" elapsed="0.000021"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${connected}</var>
<arg>${cntl}</arg>
<arg>is_connected</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:20.546409" elapsed="0.000020"/>
</kw>
<return>
<value>${connected}</value>
<status status="NOT RUN" start="2026-04-08T01:01:20.546472" elapsed="0.000015"/>
</return>
<kw name="Execute OvsVsctl Show Command" owner="OvsManager" type="TEARDOWN">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:01:20.548515" level="INFO">sh ovs-vsctl show</msg>
<arg>${lcmd_prefix} ovs-vsctl show</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:01:20.547043" elapsed="0.001526"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-08T01:01:20.568607" level="INFO">9a5df812-eb49-4477-a37e-2d464c02791d
    Bridge s1
        Controller "tcp:10.30.170.131:6633"
            is_connected: true
        Controller "tcp:10.30.171.110:6633"
            is_connected: true
        Controller "tcp:10.30.170.48:6633"
            is_connected: true
        fail_mode: standalone
        Port s1-eth1
            Interface s1-eth1
        Port s1-eth2
            Interface s1-eth2
        Port s1
            Interface s1
                type: internal
    Bridge s3
        Controller "tcp:10.30.170.131:6633"
            is_connected: true
        Controller "tcp:10.30.171.110:6633"
            is_connected: true
        Controller "tcp:10.30.170.48:6633"
            is_connected: true
        fail_mode: standalone
        Port s3-eth2
            Interface s3-eth2
        Port s3-eth1
            Interface s3-eth1
        Port s3
            Interface s3
                type: internal
    Bridge s2
        Controller "tcp:10.30.171.110:6633"
            is_connected: true
        Controller "tcp:10.30.170.131:6633"
            is_connected: true
        Controller "tcp:10.30.170.48:6633"
            is_connected: true
        fail_mode: standalone
        Port s2-eth1
            Interface s2-eth1
        Port s2-eth2
            Interface s2-eth2
        Port s2-eth3
            Interface s2-eth3
        Port s2
            Interface s2
                type: internal
    ovs_version: "2.17.11"
mininet&gt;</msg>
<msg time="2026-04-08T01:01:20.568717" level="INFO">${output} = 9a5df812-eb49-4477-a37e-2d464c02791d
    Bridge s1
        Controller "tcp:10.30.170.131:6633"
            is_connected: true
        Controller "tcp:10.30.171.110:6633"
            is_connected:...</msg>
<var>${output}</var>
<arg>${lprompt}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-08T01:01:20.548724" elapsed="0.020020"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:20.569189" level="INFO">9a5df812-eb49-4477-a37e-2d464c02791d
    Bridge s1
        Controller "tcp:10.30.170.131:6633"
            is_connected: true
        Controller "tcp:10.30.171.110:6633"
            is_connected: true
        Controller "tcp:10.30.170.48:6633"
            is_connected: true
        fail_mode: standalone
        Port s1-eth1
            Interface s1-eth1
        Port s1-eth2
            Interface s1-eth2
        Port s1
            Interface s1
                type: internal
    Bridge s3
        Controller "tcp:10.30.170.131:6633"
            is_connected: true
        Controller "tcp:10.30.171.110:6633"
            is_connected: true
        Controller "tcp:10.30.170.48:6633"
            is_connected: true
        fail_mode: standalone
        Port s3-eth2
            Interface s3-eth2
        Port s3-eth1
            Interface s3-eth1
        Port s3
            Interface s3
                type: internal
    Bridge s2
        Controller "tcp:10.30.171.110:6633"
            is_connected: true
        Controller "tcp:10.30.170.131:6633"
            is_connected: true
        Controller "tcp:10.30.170.48:6633"
            is_connected: true
        fail_mode: standalone
        Port s2-eth1
            Interface s2-eth1
        Port s2-eth2
            Interface s2-eth2
        Port s2-eth3
            Interface s2-eth3
        Port s2
            Interface s2
                type: internal
    ovs_version: "2.17.11"
mininet&gt;</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:20.568920" elapsed="0.000330"/>
</kw>
<doc>Executes ovs-vsctl show command and returns stdout, no check nor change is performed</doc>
<status status="PASS" start="2026-04-08T01:01:20.546742" elapsed="0.022565"/>
</kw>
<var>${connected}</var>
<arg>${switch}</arg>
<arg>${controller}</arg>
<arg>update_data=${update_data}</arg>
<doc>Return is_connected boolean value</doc>
<status status="FAIL" start="2026-04-08T01:01:20.401209" elapsed="0.168174">Dictionary does not contain key 's1'.</status>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<arg>${connected}</arg>
<arg>${False}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:20.569552" elapsed="0.000021"/>
</kw>
<arg>s1</arg>
<arg>${ODL_SYSTEM_${index}_IP}</arg>
<arg>update_data=${True}</arg>
<doc>Check if the switch is disconnected</doc>
<status status="FAIL" start="2026-04-08T01:01:20.399628" elapsed="0.170029">Dictionary does not contain key 's1'.</status>
</kw>
<kw name="Should Be Disconnected" owner="OvsManager">
<kw name="OvsManager__Is_Connected" owner="OvsManager">
<if>
<branch type="IF" condition="${update_data}==${True}">
<kw name="Get Ovsdb Data" owner="OvsManager">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:01:21.576813" level="INFO">sh ovs-vsctl list Bridge</msg>
<arg>${lcmd_prefix} ${SH_BR_CMD}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:01:21.574486" elapsed="0.002429"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-08T01:01:21.645802" level="INFO">_uuid               : 9bcfbeed-47e0-4406-b63a-1c7efd018616
auto_attach         : []
controller          : [243fe3ab-9d09-4f6a-95c7-66f44ce44370, 42dcabae-83d0-4b2e-85c3-6afd38cf9dbe, 62c52bac-35ce-4da8-8345-1607faceb933]
datapath_id         : "0000000000000002"
datapath_type       : ""
datapath_version    : "&lt;unknown&gt;"
external_ids        : {}
fail_mode           : standalone
flood_vlans         : []
flow_tables         : {}
ipfix               : []
mcast_snooping_enable: false
mirrors             : []
name                : s2
netflow             : []
other_config        : {datapath-id="0000000000000002", disable-in-band="true", dp-desc=s2}
ports               : [3cf70080-6935-4da8-954a-60707cd2aa95, 6731aacc-32ec-4fcd-b0fb-8f97da3f3aaa, ce33b3d8-209b-438d-83d6-c050bc8aee26, d86f10c2-9d40-484c-a7d6-6e88fed82e11]
protocols           : [OpenFlow13]
rstp_enable         : false
rstp_status         : {}
sflow               : []
status              : {}
stp_enable          : false

_uuid               : 60c187c3-58d7-430d-bef7-bbbc3131fa87
auto_attach         : []
controller          : [1968464f-4637-41c7-a481-9eba89956be9, d41b7df8-53ff-40ff-acd4-14e5125234e4, f2bbc0c3-faee-4472-91b2-cdaff2b5204c]
datapath_id         : "0000000000000003"
datapath_type       : ""
datapath_version    : "&lt;unknown&gt;"
external_ids        : {}
fail_mode           : standalone
flood_vlans         : []
flow_tables         : {}
ipfix               : []
mcast_snooping_enable: false
mirrors             : []
name                : s3
netflow             : []
other_config        : {datapath-id="0000000000000003", disable-in-band="true", dp-desc=s3}
ports               : [7915a530-8449-433a-9306-00cddaf3116b, 8069abcf-4250-428c-858a-bf539517ea14, e98007ce-09cd-4834-83d3-70a858f2f481]
protocols           : [OpenFlow13]
rstp_enable         : false
rstp_status         : {}
sflow               : []
status              : {}
stp_enable          : false

_uuid               : 5bd045e7-95e2-49c7-a6be-cc2541636f0b
auto_attach         : []
controller          : [90572501-522a-42c1-ae3d-252f978971ed, b82e7dd4-18f4-4c87-9075-dd7aeb12e9e8, ef6c3b9f-b37d-44ed-b461-11afe8598daf]
datapath_id         : "0000000000000001"
datapath_type       : ""
datapath_version    : "&lt;unknown&gt;"
external_ids        : {}
fail_mode           : standalone
flood_vlans         : []
flow_tables         : {}
ipfix               : []
mcast_snooping_enable: false
mirrors             : []
name                : s1
netflow             : []
other_config        : {datapath-id="0000000000000001", disable-in-band="true", dp-desc=s1}
ports               : [00da38e5-71ff-48bc-bf39-436bd14bfea5, 32ff594e-effb-41a0-aa0f-1df856411422, f9c97d36-c254-491b-a311-602fd640aa36]
protocols           : [OpenFlow13]
rstp_enable         : false
rstp_status         : {}
sflow               : []
status              : {}
stp_enable          : false
mininet&gt;</msg>
<msg time="2026-04-08T01:01:21.645960" level="INFO">${brstdout} = _uuid               : 9bcfbeed-47e0-4406-b63a-1c7efd018616
auto_attach         : []
controller          : [243fe3ab-9d09-4f6a-95c7-66f44ce44370, 42dcabae-83d0-4b2e-85c3-6afd38cf9dbe, 62c52bac-35ce-4...</msg>
<var>${brstdout}</var>
<arg>${lprompt}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-08T01:01:21.577188" elapsed="0.068801"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:21.646561" level="INFO">_uuid               : 9bcfbeed-47e0-4406-b63a-1c7efd018616
auto_attach         : []
controller          : [243fe3ab-9d09-4f6a-95c7-66f44ce44370, 42dcabae-83d0-4b2e-85c3-6afd38cf9dbe, 62c52bac-35ce-4da8-8345-1607faceb933]
datapath_id         : "0000000000000002"
datapath_type       : ""
datapath_version    : "&lt;unknown&gt;"
external_ids        : {}
fail_mode           : standalone
flood_vlans         : []
flow_tables         : {}
ipfix               : []
mcast_snooping_enable: false
mirrors             : []
name                : s2
netflow             : []
other_config        : {datapath-id="0000000000000002", disable-in-band="true", dp-desc=s2}
ports               : [3cf70080-6935-4da8-954a-60707cd2aa95, 6731aacc-32ec-4fcd-b0fb-8f97da3f3aaa, ce33b3d8-209b-438d-83d6-c050bc8aee26, d86f10c2-9d40-484c-a7d6-6e88fed82e11]
protocols           : [OpenFlow13]
rstp_enable         : false
rstp_status         : {}
sflow               : []
status              : {}
stp_enable          : false

_uuid               : 60c187c3-58d7-430d-bef7-bbbc3131fa87
auto_attach         : []
controller          : [1968464f-4637-41c7-a481-9eba89956be9, d41b7df8-53ff-40ff-acd4-14e5125234e4, f2bbc0c3-faee-4472-91b2-cdaff2b5204c]
datapath_id         : "0000000000000003"
datapath_type       : ""
datapath_version    : "&lt;unknown&gt;"
external_ids        : {}
fail_mode           : standalone
flood_vlans         : []
flow_tables         : {}
ipfix               : []
mcast_snooping_enable: false
mirrors             : []
name                : s3
netflow             : []
other_config        : {datapath-id="0000000000000003", disable-in-band="true", dp-desc=s3}
ports               : [7915a530-8449-433a-9306-00cddaf3116b, 8069abcf-4250-428c-858a-bf539517ea14, e98007ce-09cd-4834-83d3-70a858f2f481]
protocols           : [OpenFlow13]
rstp_enable         : false
rstp_status         : {}
sflow               : []
status              : {}
stp_enable          : false

_uuid               : 5bd045e7-95e2-49c7-a6be-cc2541636f0b
auto_attach         : []
controller          : [90572501-522a-42c1-ae3d-252f978971ed, b82e7dd4-18f4-4c87-9075-dd7aeb12e9e8, ef6c3b9f-b37d-44ed-b461-11afe8598daf]
datapath_id         : "0000000000000001"
datapath_type       : ""
datapath_version    : "&lt;unknown&gt;"
external_ids        : {}
fail_mode           : standalone
flood_vlans         : []
flow_tables         : {}
ipfix               : []
mcast_snooping_enable: false
mirrors             : []
name                : s1
netflow             : []
other_config        : {datapath-id="0000000000000001", disable-in-band="true", dp-desc=s1}
ports               : [00da38e5-71ff-48bc-bf39-436bd14bfea5, 32ff594e-effb-41a0-aa0f-1df856411422, f9c97d36-c254-491b-a311-602fd640aa36]
protocols           : [OpenFlow13]
rstp_enable         : false
rstp_status         : {}
sflow               : []
status              : {}
stp_enable          : false
mininet&gt;</msg>
<arg>${brstdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:21.646238" elapsed="0.000399"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:01:21.648514" level="INFO">sh ovs-vsctl list Controller</msg>
<arg>${lcmd_prefix} ${SH_CNTL_CMD}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:01:21.646826" elapsed="0.001746"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-08T01:01:21.702906" level="INFO">_uuid               : d41b7df8-53ff-40ff-acd4-14e5125234e4
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : true
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : slave
status              : {sec_since_connect="174", state=ACTIVE}
target              : "tcp:10.30.171.110:6633"
type                : []

_uuid               : 90572501-522a-42c1-ae3d-252f978971ed
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : true
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : slave
status              : {sec_since_connect="175", state=ACTIVE}
target              : "tcp:10.30.170.131:6633"
type                : []

_uuid               : 243fe3ab-9d09-4f6a-95c7-66f44ce44370
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : true
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : slave
status              : {sec_since_connect="175", state=ACTIVE}
target              : "tcp:10.30.171.110:6633"
type                : []

_uuid               : f2bbc0c3-faee-4472-91b2-cdaff2b5204c
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : true
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : master
status              : {sec_since_connect="174", state=ACTIVE}
target              : "tcp:10.30.170.48:6633"
type                : []

_uuid               : b82e7dd4-18f4-4c87-9075-dd7aeb12e9e8
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : true
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : slave
status              : {sec_since_connect="175", state=ACTIVE}
target              : "tcp:10.30.171.110:6633"
type                : []

_uuid               : 62c52bac-35ce-4da8-8345-1607faceb933
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : true
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : master
status              : {sec_since_connect="175", state=ACTIVE}
target              : "tcp:10.30.170.48:6633"
type                : []

_uuid               : 42dcabae-83d0-4b2e-85c3-6afd38cf9dbe
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : true
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : slave
status              : {sec_since_connect="175", state=ACTIVE}
target              : "tcp:10.30.170.131:6633"
type                : []

_uuid               : ef6c3b9f-b37d-44ed-b461-11afe8598daf
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : true
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : master
status              : {sec_since_connect="175", state=ACTIVE}
target              : "tcp:10.30.170.48:6633"
type                : []

_uuid               : 1968464f-4637-41c7-a481-9eba89956be9
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : true
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : slave
status              : {sec_since_connect="174", state=ACTIVE}
target              : "tcp:10.30.170.131:6633"
type                : []
mininet&gt;</msg>
<msg time="2026-04-08T01:01:21.703484" level="INFO">${cntlstdout} = _uuid               : d41b7df8-53ff-40ff-acd4-14e5125234e4
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
exter...</msg>
<var>${cntlstdout}</var>
<arg>${lprompt}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-08T01:01:21.648732" elapsed="0.054781"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:21.704056" level="INFO">_uuid               : d41b7df8-53ff-40ff-acd4-14e5125234e4
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : true
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : slave
status              : {sec_since_connect="174", state=ACTIVE}
target              : "tcp:10.30.171.110:6633"
type                : []

_uuid               : 90572501-522a-42c1-ae3d-252f978971ed
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : true
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : slave
status              : {sec_since_connect="175", state=ACTIVE}
target              : "tcp:10.30.170.131:6633"
type                : []

_uuid               : 243fe3ab-9d09-4f6a-95c7-66f44ce44370
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : true
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : slave
status              : {sec_since_connect="175", state=ACTIVE}
target              : "tcp:10.30.171.110:6633"
type                : []

_uuid               : f2bbc0c3-faee-4472-91b2-cdaff2b5204c
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : true
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : master
status              : {sec_since_connect="174", state=ACTIVE}
target              : "tcp:10.30.170.48:6633"
type                : []

_uuid               : b82e7dd4-18f4-4c87-9075-dd7aeb12e9e8
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : true
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : slave
status              : {sec_since_connect="175", state=ACTIVE}
target              : "tcp:10.30.171.110:6633"
type                : []

_uuid               : 62c52bac-35ce-4da8-8345-1607faceb933
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : true
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : master
status              : {sec_since_connect="175", state=ACTIVE}
target              : "tcp:10.30.170.48:6633"
type                : []

_uuid               : 42dcabae-83d0-4b2e-85c3-6afd38cf9dbe
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : true
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : slave
status              : {sec_since_connect="175", state=ACTIVE}
target              : "tcp:10.30.170.131:6633"
type                : []

_uuid               : ef6c3b9f-b37d-44ed-b461-11afe8598daf
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : true
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : master
status              : {sec_since_connect="175", state=ACTIVE}
target              : "tcp:10.30.170.48:6633"
type                : []

_uuid               : 1968464f-4637-41c7-a481-9eba89956be9
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : true
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : slave
status              : {sec_since_connect="174", state=ACTIVE}
target              : "tcp:10.30.170.131:6633"
type                : []
mininet&gt;</msg>
<arg>${cntlstdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:21.703748" elapsed="0.000400"/>
</kw>
<kw name="Parse" owner="VsctlListParser">
<msg time="2026-04-08T01:01:21.705288" level="INFO">_uuid:9bcfbeed-47e0-4406-b63a-1c7efd018616
auto_attach:[]
controller:[243fe3ab-9d09-4f6a-95c7-66f44ce44370,42dcabae-83d0-4b2e-85c3-6afd38cf9dbe,62c52bac-35ce-4da8-8345-1607faceb933]
datapath_id:"0000000000000002"
datapath_type:""
datapath_version:"&lt;unknown&gt;"
external_ids:{}
fail_mode:standalone
flood_vlans:[]
flow_tables:{}
ipfix:[]
mcast_snooping_enable:false
mirrors:[]
name:s2
netflow:[]
other_config:{datapath-id="0000000000000002",disable-in-band="true",dp-desc=s2}
ports:[3cf70080-6935-4da8-954a-60707cd2aa95,6731aacc-32ec-4fcd-b0fb-8f97da3f3aaa,ce33b3d8-209b-438d-83d6-c050bc8aee26,d86f10c2-9d40-484c-a7d6-6e88fed82e11]
protocols:[OpenFlow13]
rstp_enable:false
rstp_status:{}
sflow:[]
status:{}
stp_enable:false
_uuid:60c187c3-58d7-430d-bef7-bbbc3131fa87
auto_attach:[]
controller:[1968464f-4637-41c7-a481-9eba89956be9,d41b7df8-53ff-40ff-acd4-14e5125234e4,f2bbc0c3-faee-4472-91b2-cdaff2b5204c]
datapath_id:"0000000000000003"
datapath_type:""
datapath_version:"&lt;unknown&gt;"
external_ids:{}
fail_mode:standalone
flood_vlans:[]
flow_tables:{}
ipfix:[]
mcast_snooping_enable:false
mirrors:[]
name:s3
netflow:[]
other_config:{datapath-id="0000000000000003",disable-in-band="true",dp-desc=s3}
ports:[7915a530-8449-433a-9306-00cddaf3116b,8069abcf-4250-428c-858a-bf539517ea14,e98007ce-09cd-4834-83d3-70a858f2f481]
protocols:[OpenFlow13]
rstp_enable:false
rstp_status:{}
sflow:[]
status:{}
stp_enable:false
_uuid:5bd045e7-95e2-49c7-a6be-cc2541636f0b
auto_attach:[]
controller:[90572501-522a-42c1-ae3d-252f978971ed,b82e7dd4-18f4-4c87-9075-dd7aeb12e9e8,ef6c3b9f-b37d-44ed-b461-11afe8598daf]
datapath_id:"0000000000000001"
datapath_type:""
datapath_version:"&lt;unknown&gt;"
external_ids:{}
fail_mode:standalone
flood_vlans:[]
flow_tables:{}
ipfix:[]
mcast_snooping_enable:false
mirrors:[]
name:s1
netflow:[]
other_config:{datapath-id="0000000000000001",disable-in-band="true",dp-desc=s1}
ports:[00da38e5-71ff-48bc-bf39-436bd14bfea5,32ff594e-effb-41a0-aa0f-1df856411422,f9c97d36-c254-491b-a311-602fd640aa36]
protocols:[OpenFlow13]
rstp_enable:false
rstp_status:{}
sflow:[]
status:{}
stp_enable:false
_uuid:d41b7df8-53ff-40ff-acd4-14e5125234e4
connection_mode:[]
controller_burst_limit:[]
controller_queue_size:[]
controller_rate_limit:[]
enable_async_messages:[]
external_ids:{}
inactivity_probe:[]
is_connected:true
local_gateway:[]
local_ip:[]
local_netmask:[]
max_backoff:[]
other_config:{}
role:slave
status:{sec_since_connect="174",state=ACTIVE}
target:"tcp:10.30.171.110:6633"
type:[]
_uuid:90572501-522a-42c1-ae3d-252f978971ed
connection_mode:[]
controller_burst_limit:[]
controller_queue_size:[]
controller_rate_limit:[]
enable_async_messages:[]
external_ids:{}
inactivity_probe:[]
is_connected:true
local_gateway:[]
local_ip:[]
local_netmask:[]
max_backoff:[]
other_config:{}
role:slave
status:{sec_since_connect="175",state=ACTIVE}
target:"tcp:10.30.170.131:6633"
type:[]
_uuid:243fe3ab-9d09-4f6a-95c7-66f44ce44370
connection_mode:[]
controller_burst_limit:[]
controller_queue_size:[]
controller_rate_limit:[]
enable_async_messages:[]
external_ids:{}
inactivity_probe:[]
is_connected:true
local_gateway:[]
local_ip:[]
local_netmask:[]
max_backoff:[]
other_config:{}
role:slave
status:{sec_since_connect="175",state=ACTIVE}
target:"tcp:10.30.171.110:6633"
type:[]
_uuid:f2bbc0c3-faee-4472-91b2-cdaff2b5204c
connection_mode:[]
controller_burst_limit:[]
controller_queue_size:[]
controller_rate_limit:[]
enable_async_messages:[]
external_ids:{}
inactivity_probe:[]
is_connected:true
local_gateway:[]
local_ip:[]
local_netmask:[]
max_backoff:[]
other_config:{}
role:master
status:{sec_since_connect="174",state=ACTIVE}
target:"tcp:10.30.170.48:6633"
type:[]
_uuid:b82e7dd4-18f4-4c87-9075-dd7aeb12e9e8
connection_mode:[]
controller_burst_limit:[]
controller_queue_size:[]
controller_rate_limit:[]
enable_async_messages:[]
external_ids:{}
inactivity_probe:[]
is_connected:true
local_gateway:[]
local_ip:[]
local_netmask:[]
max_backoff:[]
other_config:{}
role:slave
status:{sec_since_connect="175",state=ACTIVE}
target:"tcp:10.30.171.110:6633"
type:[]
_uuid:62c52bac-35ce-4da8-8345-1607faceb933
connection_mode:[]
controller_burst_limit:[]
controller_queue_size:[]
controller_rate_limit:[]
enable_async_messages:[]
external_ids:{}
inactivity_probe:[]
is_connected:true
local_gateway:[]
local_ip:[]
local_netmask:[]
max_backoff:[]
other_config:{}
role:master
status:{sec_since_connect="175",state=ACTIVE}
target:"tcp:10.30.170.48:6633"
type:[]
_uuid:42dcabae-83d0-4b2e-85c3-6afd38cf9dbe
connection_mode:[]
controller_burst_limit:[]
controller_queue_size:[]
controller_rate_limit:[]
enable_async_messages:[]
external_ids:{}
inactivity_probe:[]
is_connected:true
local_gateway:[]
local_ip:[]
local_netmask:[]
max_backoff:[]
other_config:{}
role:slave
status:{sec_since_connect="175",state=ACTIVE}
target:"tcp:10.30.170.131:6633"
type:[]
_uuid:ef6c3b9f-b37d-44ed-b461-11afe8598daf
connection_mode:[]
controller_burst_limit:[]
controller_queue_size:[]
controller_rate_limit:[]
enable_async_messages:[]
external_ids:{}
inactivity_probe:[]
is_connected:true
local_gateway:[]
local_ip:[]
local_netmask:[]
max_backoff:[]
other_config:{}
role:master
status:{sec_since_connect="175",state=ACTIVE}
target:"tcp:10.30.170.48:6633"
type:[]
_uuid:1968464f-4637-41c7-a481-9eba89956be9
connection_mode:[]
controller_burst_limit:[]
controller_queue_size:[]
controller_rate_limit:[]
enable_async_messages:[]
external_ids:{}
inactivity_probe:[]
is_connected:true
local_gateway:[]
local_ip:[]
local_netmask:[]
max_backoff:[]
other_config:{}
role:slave
status:{sec_since_connect="174",state=ACTIVE}
target:"tcp:10.30.170.131:6633"
type:[]</msg>
<msg time="2026-04-08T01:01:21.705497" level="INFO">${data} = {'': {'_uuid': '5bd045e7-95e2-49c7-a6be-cc2541636f0b', 'auto_attach': '[]', 'controller': {'10.30.170.131': {'_uuid': '90572501-522a-42c1-ae3d-252f978971ed', 'connection_mode': '[]', 'controller_burst...</msg>
<msg time="2026-04-08T01:01:21.705574" level="INFO">${bridegs} = {'9bcfbeed-47e0-4406-b63a-1c7efd018616': {'_uuid': '9bcfbeed-47e0-4406-b63a-1c7efd018616', 'auto_attach': '[]', 'controller': '[243fe3ab-9d09-4f6a-95c7-66f44ce44370,42dcabae-83d0-4b2e-85c3-6afd38cf9db...</msg>
<msg time="2026-04-08T01:01:21.705673" level="INFO">${controllers} = {'d41b7df8-53ff-40ff-acd4-14e5125234e4': {'_uuid': 'd41b7df8-53ff-40ff-acd4-14e5125234e4', 'connection_mode': '[]', 'controller_burst_limit': '[]', 'controller_queue_size': '[]', 'controller_rate_limi...</msg>
<var>${data}</var>
<var>${bridegs}</var>
<var>${controllers}</var>
<arg>${brstdout}</arg>
<arg>${cntlstdout}</arg>
<doc>Produces dictionary with data for future usege</doc>
<status status="PASS" start="2026-04-08T01:01:21.704330" elapsed="0.001370"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:21.706211" level="INFO">{'': {'_uuid': '5bd045e7-95e2-49c7-a6be-cc2541636f0b', 'auto_attach': '[]', 'controller': {'10.30.170.131': {'_uuid': '90572501-522a-42c1-ae3d-252f978971ed', 'connection_mode': '[]', 'controller_burst_limit': '[]', 'controller_queue_size': '[]', 'controller_rate_limit': '[]', 'enable_async_messages': '[]', 'external_ids': '{}', 'inactivity_probe': '[]', 'is_connected': True, 'local_gateway': '[]', 'local_ip': '[]', 'local_netmask': '[]', 'max_backoff': '[]', 'other_config': '{}', 'role': 'slave', 'status': '{sec_since_connect="175",state=ACTIVE}', 'target': '"tcp:10.30.170.131:6633"', 'type': '[]'}, '10.30.171.110': {'_uuid': 'b82e7dd4-18f4-4c87-9075-dd7aeb12e9e8', 'connection_mode': '[]', 'controller_burst_limit': '[]', 'controller_queue_size': '[]', 'controller_rate_limit': '[]', 'enable_async_messages': '[]', 'external_ids': '{}', 'inactivity_probe': '[]', 'is_connected': True, 'local_gateway': '[]', 'local_ip': '[]', 'local_netmask': '[]', 'max_backoff': '[]', 'other_config': '{}', 'role': 'slave', 'status': '{sec_since_connect="175",state=ACTIVE}', 'target': '"tcp:10.30.171.110:6633"', 'type': '[]'}, '10.30.170.48': {'_uuid': 'ef6c3b9f-b37d-44ed-b461-11afe8598daf', 'connection_mode': '[]', 'controller_burst_limit': '[]', 'controller_queue_size': '[]', 'controller_rate_limit': '[]', 'enable_async_messages': '[]', 'external_ids': '{}', 'inactivity_probe': '[]', 'is_connected': True, 'local_gateway': '[]', 'local_ip': '[]', 'local_netmask': '[]', 'max_backoff': '[]', 'other_config': '{}', 'role': 'master', 'status': '{sec_since_connect="175",state=ACTIVE}', 'target': '"tcp:10.30.170.48:6633"', 'type': '[]'}}, 'datapath_id': '"0000000000000001"', 'datapath_type': '""', 'datapath_version': '"&lt;unknown&gt;"', 'external_ids': '{}', 'fail_mode': 'standalone', 'flood_vlans': '[]', 'flow_tables': '{}', 'ipfix': '[]', 'mcast_snooping_enable': 'false', 'mirrors': '[]', 'name': 's1', 'netflow': '[]', 'other_config': '{datapath-id="0000000000000001",disable-in-band="true",dp-desc=s1}', 'ports': '[00da38e5-71ff-48bc-bf39-436bd14bfea5,32ff594e-effb-41a0-aa0f-1df856411422,f9c97d36-c254-491b-a311-602fd640aa36]', 'protocols': '[OpenFlow13]', 'rstp_enable': 'false', 'rstp_status': '{}', 'sflow': '[]', 'status': '{}', 'stp_enable': 'false'}}</msg>
<arg>${data}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:21.705879" elapsed="0.000405"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-08T01:01:21.706957" level="INFO">${ovs_switch_data} = {'': {'_uuid': '5bd045e7-95e2-49c7-a6be-cc2541636f0b', 'auto_attach': '[]', 'controller': {'10.30.170.131': {'_uuid': '90572501-522a-42c1-ae3d-252f978971ed', 'connection_mode': '[]', 'controller_burst...</msg>
<arg>${ovs_switch_data}</arg>
<arg>${data}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-08T01:01:21.706492" elapsed="0.000511"/>
</kw>
<return>
<value>${data}</value>
<status status="PASS" start="2026-04-08T01:01:21.707054" elapsed="0.000045"/>
</return>
<doc>Gets ovs data and parse them.</doc>
<status status="PASS" start="2026-04-08T01:01:21.573799" elapsed="0.133440"/>
</kw>
<status status="PASS" start="2026-04-08T01:01:21.573051" elapsed="0.134222"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:21.573002" elapsed="0.134301"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:01:21.707736" level="FAIL">Dictionary does not contain key 's1'.</msg>
<var>${bridge}</var>
<arg>${ovs_switch_data}</arg>
<arg>${switch}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="FAIL" start="2026-04-08T01:01:21.707484" elapsed="0.000365">Dictionary does not contain key 's1'.</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${cntls}</var>
<arg>${bridge}</arg>
<arg>controller</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:21.708025" elapsed="0.000023"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${cntl}</var>
<arg>${cntls}</arg>
<arg>${controller}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:21.708222" elapsed="0.000021"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${connected}</var>
<arg>${cntl}</arg>
<arg>is_connected</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:21.708395" elapsed="0.000020"/>
</kw>
<return>
<value>${connected}</value>
<status status="NOT RUN" start="2026-04-08T01:01:21.708459" elapsed="0.000015"/>
</return>
<kw name="Execute OvsVsctl Show Command" owner="OvsManager" type="TEARDOWN">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:01:21.710934" level="INFO">sh ovs-vsctl show</msg>
<arg>${lcmd_prefix} ovs-vsctl show</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:01:21.709071" elapsed="0.001929"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-08T01:01:21.731885" level="INFO">9a5df812-eb49-4477-a37e-2d464c02791d
    Bridge s1
        Controller "tcp:10.30.170.131:6633"
            is_connected: true
        Controller "tcp:10.30.171.110:6633"
            is_connected: true
        Controller "tcp:10.30.170.48:6633"
            is_connected: true
        fail_mode: standalone
        Port s1-eth1
            Interface s1-eth1
        Port s1-eth2
            Interface s1-eth2
        Port s1
            Interface s1
                type: internal
    Bridge s3
        Controller "tcp:10.30.170.131:6633"
            is_connected: true
        Controller "tcp:10.30.171.110:6633"
            is_connected: true
        Controller "tcp:10.30.170.48:6633"
            is_connected: true
        fail_mode: standalone
        Port s3-eth2
            Interface s3-eth2
        Port s3-eth1
            Interface s3-eth1
        Port s3
            Interface s3
                type: internal
    Bridge s2
        Controller "tcp:10.30.171.110:6633"
            is_connected: true
        Controller "tcp:10.30.170.131:6633"
            is_connected: true
        Controller "tcp:10.30.170.48:6633"
            is_connected: true
        fail_mode: standalone
        Port s2-eth1
            Interface s2-eth1
        Port s2-eth2
            Interface s2-eth2
        Port s2-eth3
            Interface s2-eth3
        Port s2
            Interface s2
                type: internal
    ovs_version: "2.17.11"
mininet&gt;</msg>
<msg time="2026-04-08T01:01:21.732029" level="INFO">${output} = 9a5df812-eb49-4477-a37e-2d464c02791d
    Bridge s1
        Controller "tcp:10.30.170.131:6633"
            is_connected: true
        Controller "tcp:10.30.171.110:6633"
            is_connected:...</msg>
<var>${output}</var>
<arg>${lprompt}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-08T01:01:21.711220" elapsed="0.020893"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:21.732731" level="INFO">9a5df812-eb49-4477-a37e-2d464c02791d
    Bridge s1
        Controller "tcp:10.30.170.131:6633"
            is_connected: true
        Controller "tcp:10.30.171.110:6633"
            is_connected: true
        Controller "tcp:10.30.170.48:6633"
            is_connected: true
        fail_mode: standalone
        Port s1-eth1
            Interface s1-eth1
        Port s1-eth2
            Interface s1-eth2
        Port s1
            Interface s1
                type: internal
    Bridge s3
        Controller "tcp:10.30.170.131:6633"
            is_connected: true
        Controller "tcp:10.30.171.110:6633"
            is_connected: true
        Controller "tcp:10.30.170.48:6633"
            is_connected: true
        fail_mode: standalone
        Port s3-eth2
            Interface s3-eth2
        Port s3-eth1
            Interface s3-eth1
        Port s3
            Interface s3
                type: internal
    Bridge s2
        Controller "tcp:10.30.171.110:6633"
            is_connected: true
        Controller "tcp:10.30.170.131:6633"
            is_connected: true
        Controller "tcp:10.30.170.48:6633"
            is_connected: true
        fail_mode: standalone
        Port s2-eth1
            Interface s2-eth1
        Port s2-eth2
            Interface s2-eth2
        Port s2-eth3
            Interface s2-eth3
        Port s2
            Interface s2
                type: internal
    ovs_version: "2.17.11"
mininet&gt;</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:21.732401" elapsed="0.000398"/>
</kw>
<doc>Executes ovs-vsctl show command and returns stdout, no check nor change is performed</doc>
<status status="PASS" start="2026-04-08T01:01:21.708749" elapsed="0.024118"/>
</kw>
<var>${connected}</var>
<arg>${switch}</arg>
<arg>${controller}</arg>
<arg>update_data=${update_data}</arg>
<doc>Return is_connected boolean value</doc>
<status status="FAIL" start="2026-04-08T01:01:21.572017" elapsed="0.160952">Dictionary does not contain key 's1'.</status>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<arg>${connected}</arg>
<arg>${False}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:21.733197" elapsed="0.000027"/>
</kw>
<arg>s1</arg>
<arg>${ODL_SYSTEM_${index}_IP}</arg>
<arg>update_data=${True}</arg>
<doc>Check if the switch is disconnected</doc>
<status status="FAIL" start="2026-04-08T01:01:21.570501" elapsed="0.162828">Dictionary does not contain key 's1'.</status>
</kw>
<kw name="Should Be Disconnected" owner="OvsManager">
<kw name="OvsManager__Is_Connected" owner="OvsManager">
<if>
<branch type="IF" condition="${update_data}==${True}">
<kw name="Get Ovsdb Data" owner="OvsManager">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:01:22.741063" level="INFO">sh ovs-vsctl list Bridge</msg>
<arg>${lcmd_prefix} ${SH_BR_CMD}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:01:22.738029" elapsed="0.003212"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-08T01:01:22.812560" level="INFO">_uuid               : 9bcfbeed-47e0-4406-b63a-1c7efd018616
auto_attach         : []
controller          : [243fe3ab-9d09-4f6a-95c7-66f44ce44370, 42dcabae-83d0-4b2e-85c3-6afd38cf9dbe, 62c52bac-35ce-4da8-8345-1607faceb933]
datapath_id         : "0000000000000002"
datapath_type       : ""
datapath_version    : "&lt;unknown&gt;"
external_ids        : {}
fail_mode           : standalone
flood_vlans         : []
flow_tables         : {}
ipfix               : []
mcast_snooping_enable: false
mirrors             : []
name                : s2
netflow             : []
other_config        : {datapath-id="0000000000000002", disable-in-band="true", dp-desc=s2}
ports               : [3cf70080-6935-4da8-954a-60707cd2aa95, 6731aacc-32ec-4fcd-b0fb-8f97da3f3aaa, ce33b3d8-209b-438d-83d6-c050bc8aee26, d86f10c2-9d40-484c-a7d6-6e88fed82e11]
protocols           : [OpenFlow13]
rstp_enable         : false
rstp_status         : {}
sflow               : []
status              : {}
stp_enable          : false

_uuid               : 60c187c3-58d7-430d-bef7-bbbc3131fa87
auto_attach         : []
controller          : [1968464f-4637-41c7-a481-9eba89956be9, d41b7df8-53ff-40ff-acd4-14e5125234e4, f2bbc0c3-faee-4472-91b2-cdaff2b5204c]
datapath_id         : "0000000000000003"
datapath_type       : ""
datapath_version    : "&lt;unknown&gt;"
external_ids        : {}
fail_mode           : standalone
flood_vlans         : []
flow_tables         : {}
ipfix               : []
mcast_snooping_enable: false
mirrors             : []
name                : s3
netflow             : []
other_config        : {datapath-id="0000000000000003", disable-in-band="true", dp-desc=s3}
ports               : [7915a530-8449-433a-9306-00cddaf3116b, 8069abcf-4250-428c-858a-bf539517ea14, e98007ce-09cd-4834-83d3-70a858f2f481]
protocols           : [OpenFlow13]
rstp_enable         : false
rstp_status         : {}
sflow               : []
status              : {}
stp_enable          : false

_uuid               : 5bd045e7-95e2-49c7-a6be-cc2541636f0b
auto_attach         : []
controller          : [90572501-522a-42c1-ae3d-252f978971ed, b82e7dd4-18f4-4c87-9075-dd7aeb12e9e8, ef6c3b9f-b37d-44ed-b461-11afe8598daf]
datapath_id         : "0000000000000001"
datapath_type       : ""
datapath_version    : "&lt;unknown&gt;"
external_ids        : {}
fail_mode           : standalone
flood_vlans         : []
flow_tables         : {}
ipfix               : []
mcast_snooping_enable: false
mirrors             : []
name                : s1
netflow             : []
other_config        : {datapath-id="0000000000000001", disable-in-band="true", dp-desc=s1}
ports               : [00da38e5-71ff-48bc-bf39-436bd14bfea5, 32ff594e-effb-41a0-aa0f-1df856411422, f9c97d36-c254-491b-a311-602fd640aa36]
protocols           : [OpenFlow13]
rstp_enable         : false
rstp_status         : {}
sflow               : []
status              : {}
stp_enable          : false
mininet&gt;</msg>
<msg time="2026-04-08T01:01:22.812722" level="INFO">${brstdout} = _uuid               : 9bcfbeed-47e0-4406-b63a-1c7efd018616
auto_attach         : []
controller          : [243fe3ab-9d09-4f6a-95c7-66f44ce44370, 42dcabae-83d0-4b2e-85c3-6afd38cf9dbe, 62c52bac-35ce-4...</msg>
<var>${brstdout}</var>
<arg>${lprompt}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-08T01:01:22.741616" elapsed="0.071134"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:22.813335" level="INFO">_uuid               : 9bcfbeed-47e0-4406-b63a-1c7efd018616
auto_attach         : []
controller          : [243fe3ab-9d09-4f6a-95c7-66f44ce44370, 42dcabae-83d0-4b2e-85c3-6afd38cf9dbe, 62c52bac-35ce-4da8-8345-1607faceb933]
datapath_id         : "0000000000000002"
datapath_type       : ""
datapath_version    : "&lt;unknown&gt;"
external_ids        : {}
fail_mode           : standalone
flood_vlans         : []
flow_tables         : {}
ipfix               : []
mcast_snooping_enable: false
mirrors             : []
name                : s2
netflow             : []
other_config        : {datapath-id="0000000000000002", disable-in-band="true", dp-desc=s2}
ports               : [3cf70080-6935-4da8-954a-60707cd2aa95, 6731aacc-32ec-4fcd-b0fb-8f97da3f3aaa, ce33b3d8-209b-438d-83d6-c050bc8aee26, d86f10c2-9d40-484c-a7d6-6e88fed82e11]
protocols           : [OpenFlow13]
rstp_enable         : false
rstp_status         : {}
sflow               : []
status              : {}
stp_enable          : false

_uuid               : 60c187c3-58d7-430d-bef7-bbbc3131fa87
auto_attach         : []
controller          : [1968464f-4637-41c7-a481-9eba89956be9, d41b7df8-53ff-40ff-acd4-14e5125234e4, f2bbc0c3-faee-4472-91b2-cdaff2b5204c]
datapath_id         : "0000000000000003"
datapath_type       : ""
datapath_version    : "&lt;unknown&gt;"
external_ids        : {}
fail_mode           : standalone
flood_vlans         : []
flow_tables         : {}
ipfix               : []
mcast_snooping_enable: false
mirrors             : []
name                : s3
netflow             : []
other_config        : {datapath-id="0000000000000003", disable-in-band="true", dp-desc=s3}
ports               : [7915a530-8449-433a-9306-00cddaf3116b, 8069abcf-4250-428c-858a-bf539517ea14, e98007ce-09cd-4834-83d3-70a858f2f481]
protocols           : [OpenFlow13]
rstp_enable         : false
rstp_status         : {}
sflow               : []
status              : {}
stp_enable          : false

_uuid               : 5bd045e7-95e2-49c7-a6be-cc2541636f0b
auto_attach         : []
controller          : [90572501-522a-42c1-ae3d-252f978971ed, b82e7dd4-18f4-4c87-9075-dd7aeb12e9e8, ef6c3b9f-b37d-44ed-b461-11afe8598daf]
datapath_id         : "0000000000000001"
datapath_type       : ""
datapath_version    : "&lt;unknown&gt;"
external_ids        : {}
fail_mode           : standalone
flood_vlans         : []
flow_tables         : {}
ipfix               : []
mcast_snooping_enable: false
mirrors             : []
name                : s1
netflow             : []
other_config        : {datapath-id="0000000000000001", disable-in-band="true", dp-desc=s1}
ports               : [00da38e5-71ff-48bc-bf39-436bd14bfea5, 32ff594e-effb-41a0-aa0f-1df856411422, f9c97d36-c254-491b-a311-602fd640aa36]
protocols           : [OpenFlow13]
rstp_enable         : false
rstp_status         : {}
sflow               : []
status              : {}
stp_enable          : false
mininet&gt;</msg>
<arg>${brstdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:22.812986" elapsed="0.000495"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:01:22.815359" level="INFO">sh ovs-vsctl list Controller</msg>
<arg>${lcmd_prefix} ${SH_CNTL_CMD}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:01:22.813642" elapsed="0.001780"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-08T01:01:22.872125" level="INFO">_uuid               : d41b7df8-53ff-40ff-acd4-14e5125234e4
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : true
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : slave
status              : {sec_since_connect="174", state=ACTIVE}
target              : "tcp:10.30.171.110:6633"
type                : []

_uuid               : 90572501-522a-42c1-ae3d-252f978971ed
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : true
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : slave
status              : {sec_since_connect="175", state=ACTIVE}
target              : "tcp:10.30.170.131:6633"
type                : []

_uuid               : 243fe3ab-9d09-4f6a-95c7-66f44ce44370
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : true
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : slave
status              : {sec_since_connect="175", state=ACTIVE}
target              : "tcp:10.30.171.110:6633"
type                : []

_uuid               : f2bbc0c3-faee-4472-91b2-cdaff2b5204c
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : true
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : master
status              : {sec_since_connect="174", state=ACTIVE}
target              : "tcp:10.30.170.48:6633"
type                : []

_uuid               : b82e7dd4-18f4-4c87-9075-dd7aeb12e9e8
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : true
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : slave
status              : {sec_since_connect="175", state=ACTIVE}
target              : "tcp:10.30.171.110:6633"
type                : []

_uuid               : 62c52bac-35ce-4da8-8345-1607faceb933
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : true
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : master
status              : {sec_since_connect="175", state=ACTIVE}
target              : "tcp:10.30.170.48:6633"
type                : []

_uuid               : 42dcabae-83d0-4b2e-85c3-6afd38cf9dbe
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : true
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : slave
status              : {sec_since_connect="175", state=ACTIVE}
target              : "tcp:10.30.170.131:6633"
type                : []

_uuid               : ef6c3b9f-b37d-44ed-b461-11afe8598daf
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : true
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : master
status              : {sec_since_connect="175", state=ACTIVE}
target              : "tcp:10.30.170.48:6633"
type                : []

_uuid               : 1968464f-4637-41c7-a481-9eba89956be9
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : true
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : slave
status              : {sec_since_connect="174", state=ACTIVE}
target              : "tcp:10.30.170.131:6633"
type                : []
mininet&gt;</msg>
<msg time="2026-04-08T01:01:22.872297" level="INFO">${cntlstdout} = _uuid               : d41b7df8-53ff-40ff-acd4-14e5125234e4
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
exter...</msg>
<var>${cntlstdout}</var>
<arg>${lprompt}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-08T01:01:22.815586" elapsed="0.056739"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:22.872827" level="INFO">_uuid               : d41b7df8-53ff-40ff-acd4-14e5125234e4
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : true
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : slave
status              : {sec_since_connect="174", state=ACTIVE}
target              : "tcp:10.30.171.110:6633"
type                : []

_uuid               : 90572501-522a-42c1-ae3d-252f978971ed
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : true
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : slave
status              : {sec_since_connect="175", state=ACTIVE}
target              : "tcp:10.30.170.131:6633"
type                : []

_uuid               : 243fe3ab-9d09-4f6a-95c7-66f44ce44370
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : true
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : slave
status              : {sec_since_connect="175", state=ACTIVE}
target              : "tcp:10.30.171.110:6633"
type                : []

_uuid               : f2bbc0c3-faee-4472-91b2-cdaff2b5204c
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : true
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : master
status              : {sec_since_connect="174", state=ACTIVE}
target              : "tcp:10.30.170.48:6633"
type                : []

_uuid               : b82e7dd4-18f4-4c87-9075-dd7aeb12e9e8
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : true
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : slave
status              : {sec_since_connect="175", state=ACTIVE}
target              : "tcp:10.30.171.110:6633"
type                : []

_uuid               : 62c52bac-35ce-4da8-8345-1607faceb933
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : true
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : master
status              : {sec_since_connect="175", state=ACTIVE}
target              : "tcp:10.30.170.48:6633"
type                : []

_uuid               : 42dcabae-83d0-4b2e-85c3-6afd38cf9dbe
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : true
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : slave
status              : {sec_since_connect="175", state=ACTIVE}
target              : "tcp:10.30.170.131:6633"
type                : []

_uuid               : ef6c3b9f-b37d-44ed-b461-11afe8598daf
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : true
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : master
status              : {sec_since_connect="175", state=ACTIVE}
target              : "tcp:10.30.170.48:6633"
type                : []

_uuid               : 1968464f-4637-41c7-a481-9eba89956be9
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : true
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : slave
status              : {sec_since_connect="174", state=ACTIVE}
target              : "tcp:10.30.170.131:6633"
type                : []
mininet&gt;</msg>
<arg>${cntlstdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:22.872547" elapsed="0.000414"/>
</kw>
<kw name="Parse" owner="VsctlListParser">
<msg time="2026-04-08T01:01:22.874091" level="INFO">_uuid:9bcfbeed-47e0-4406-b63a-1c7efd018616
auto_attach:[]
controller:[243fe3ab-9d09-4f6a-95c7-66f44ce44370,42dcabae-83d0-4b2e-85c3-6afd38cf9dbe,62c52bac-35ce-4da8-8345-1607faceb933]
datapath_id:"0000000000000002"
datapath_type:""
datapath_version:"&lt;unknown&gt;"
external_ids:{}
fail_mode:standalone
flood_vlans:[]
flow_tables:{}
ipfix:[]
mcast_snooping_enable:false
mirrors:[]
name:s2
netflow:[]
other_config:{datapath-id="0000000000000002",disable-in-band="true",dp-desc=s2}
ports:[3cf70080-6935-4da8-954a-60707cd2aa95,6731aacc-32ec-4fcd-b0fb-8f97da3f3aaa,ce33b3d8-209b-438d-83d6-c050bc8aee26,d86f10c2-9d40-484c-a7d6-6e88fed82e11]
protocols:[OpenFlow13]
rstp_enable:false
rstp_status:{}
sflow:[]
status:{}
stp_enable:false
_uuid:60c187c3-58d7-430d-bef7-bbbc3131fa87
auto_attach:[]
controller:[1968464f-4637-41c7-a481-9eba89956be9,d41b7df8-53ff-40ff-acd4-14e5125234e4,f2bbc0c3-faee-4472-91b2-cdaff2b5204c]
datapath_id:"0000000000000003"
datapath_type:""
datapath_version:"&lt;unknown&gt;"
external_ids:{}
fail_mode:standalone
flood_vlans:[]
flow_tables:{}
ipfix:[]
mcast_snooping_enable:false
mirrors:[]
name:s3
netflow:[]
other_config:{datapath-id="0000000000000003",disable-in-band="true",dp-desc=s3}
ports:[7915a530-8449-433a-9306-00cddaf3116b,8069abcf-4250-428c-858a-bf539517ea14,e98007ce-09cd-4834-83d3-70a858f2f481]
protocols:[OpenFlow13]
rstp_enable:false
rstp_status:{}
sflow:[]
status:{}
stp_enable:false
_uuid:5bd045e7-95e2-49c7-a6be-cc2541636f0b
auto_attach:[]
controller:[90572501-522a-42c1-ae3d-252f978971ed,b82e7dd4-18f4-4c87-9075-dd7aeb12e9e8,ef6c3b9f-b37d-44ed-b461-11afe8598daf]
datapath_id:"0000000000000001"
datapath_type:""
datapath_version:"&lt;unknown&gt;"
external_ids:{}
fail_mode:standalone
flood_vlans:[]
flow_tables:{}
ipfix:[]
mcast_snooping_enable:false
mirrors:[]
name:s1
netflow:[]
other_config:{datapath-id="0000000000000001",disable-in-band="true",dp-desc=s1}
ports:[00da38e5-71ff-48bc-bf39-436bd14bfea5,32ff594e-effb-41a0-aa0f-1df856411422,f9c97d36-c254-491b-a311-602fd640aa36]
protocols:[OpenFlow13]
rstp_enable:false
rstp_status:{}
sflow:[]
status:{}
stp_enable:false
_uuid:d41b7df8-53ff-40ff-acd4-14e5125234e4
connection_mode:[]
controller_burst_limit:[]
controller_queue_size:[]
controller_rate_limit:[]
enable_async_messages:[]
external_ids:{}
inactivity_probe:[]
is_connected:true
local_gateway:[]
local_ip:[]
local_netmask:[]
max_backoff:[]
other_config:{}
role:slave
status:{sec_since_connect="174",state=ACTIVE}
target:"tcp:10.30.171.110:6633"
type:[]
_uuid:90572501-522a-42c1-ae3d-252f978971ed
connection_mode:[]
controller_burst_limit:[]
controller_queue_size:[]
controller_rate_limit:[]
enable_async_messages:[]
external_ids:{}
inactivity_probe:[]
is_connected:true
local_gateway:[]
local_ip:[]
local_netmask:[]
max_backoff:[]
other_config:{}
role:slave
status:{sec_since_connect="175",state=ACTIVE}
target:"tcp:10.30.170.131:6633"
type:[]
_uuid:243fe3ab-9d09-4f6a-95c7-66f44ce44370
connection_mode:[]
controller_burst_limit:[]
controller_queue_size:[]
controller_rate_limit:[]
enable_async_messages:[]
external_ids:{}
inactivity_probe:[]
is_connected:true
local_gateway:[]
local_ip:[]
local_netmask:[]
max_backoff:[]
other_config:{}
role:slave
status:{sec_since_connect="175",state=ACTIVE}
target:"tcp:10.30.171.110:6633"
type:[]
_uuid:f2bbc0c3-faee-4472-91b2-cdaff2b5204c
connection_mode:[]
controller_burst_limit:[]
controller_queue_size:[]
controller_rate_limit:[]
enable_async_messages:[]
external_ids:{}
inactivity_probe:[]
is_connected:true
local_gateway:[]
local_ip:[]
local_netmask:[]
max_backoff:[]
other_config:{}
role:master
status:{sec_since_connect="174",state=ACTIVE}
target:"tcp:10.30.170.48:6633"
type:[]
_uuid:b82e7dd4-18f4-4c87-9075-dd7aeb12e9e8
connection_mode:[]
controller_burst_limit:[]
controller_queue_size:[]
controller_rate_limit:[]
enable_async_messages:[]
external_ids:{}
inactivity_probe:[]
is_connected:true
local_gateway:[]
local_ip:[]
local_netmask:[]
max_backoff:[]
other_config:{}
role:slave
status:{sec_since_connect="175",state=ACTIVE}
target:"tcp:10.30.171.110:6633"
type:[]
_uuid:62c52bac-35ce-4da8-8345-1607faceb933
connection_mode:[]
controller_burst_limit:[]
controller_queue_size:[]
controller_rate_limit:[]
enable_async_messages:[]
external_ids:{}
inactivity_probe:[]
is_connected:true
local_gateway:[]
local_ip:[]
local_netmask:[]
max_backoff:[]
other_config:{}
role:master
status:{sec_since_connect="175",state=ACTIVE}
target:"tcp:10.30.170.48:6633"
type:[]
_uuid:42dcabae-83d0-4b2e-85c3-6afd38cf9dbe
connection_mode:[]
controller_burst_limit:[]
controller_queue_size:[]
controller_rate_limit:[]
enable_async_messages:[]
external_ids:{}
inactivity_probe:[]
is_connected:true
local_gateway:[]
local_ip:[]
local_netmask:[]
max_backoff:[]
other_config:{}
role:slave
status:{sec_since_connect="175",state=ACTIVE}
target:"tcp:10.30.170.131:6633"
type:[]
_uuid:ef6c3b9f-b37d-44ed-b461-11afe8598daf
connection_mode:[]
controller_burst_limit:[]
controller_queue_size:[]
controller_rate_limit:[]
enable_async_messages:[]
external_ids:{}
inactivity_probe:[]
is_connected:true
local_gateway:[]
local_ip:[]
local_netmask:[]
max_backoff:[]
other_config:{}
role:master
status:{sec_since_connect="175",state=ACTIVE}
target:"tcp:10.30.170.48:6633"
type:[]
_uuid:1968464f-4637-41c7-a481-9eba89956be9
connection_mode:[]
controller_burst_limit:[]
controller_queue_size:[]
controller_rate_limit:[]
enable_async_messages:[]
external_ids:{}
inactivity_probe:[]
is_connected:true
local_gateway:[]
local_ip:[]
local_netmask:[]
max_backoff:[]
other_config:{}
role:slave
status:{sec_since_connect="174",state=ACTIVE}
target:"tcp:10.30.170.131:6633"
type:[]</msg>
<msg time="2026-04-08T01:01:22.874319" level="INFO">${data} = {'': {'_uuid': '5bd045e7-95e2-49c7-a6be-cc2541636f0b', 'auto_attach': '[]', 'controller': {'10.30.170.131': {'_uuid': '90572501-522a-42c1-ae3d-252f978971ed', 'connection_mode': '[]', 'controller_burst...</msg>
<msg time="2026-04-08T01:01:22.874393" level="INFO">${bridegs} = {'9bcfbeed-47e0-4406-b63a-1c7efd018616': {'_uuid': '9bcfbeed-47e0-4406-b63a-1c7efd018616', 'auto_attach': '[]', 'controller': '[243fe3ab-9d09-4f6a-95c7-66f44ce44370,42dcabae-83d0-4b2e-85c3-6afd38cf9db...</msg>
<msg time="2026-04-08T01:01:22.874491" level="INFO">${controllers} = {'d41b7df8-53ff-40ff-acd4-14e5125234e4': {'_uuid': 'd41b7df8-53ff-40ff-acd4-14e5125234e4', 'connection_mode': '[]', 'controller_burst_limit': '[]', 'controller_queue_size': '[]', 'controller_rate_limi...</msg>
<var>${data}</var>
<var>${bridegs}</var>
<var>${controllers}</var>
<arg>${brstdout}</arg>
<arg>${cntlstdout}</arg>
<doc>Produces dictionary with data for future usege</doc>
<status status="PASS" start="2026-04-08T01:01:22.873123" elapsed="0.001392"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:22.874955" level="INFO">{'': {'_uuid': '5bd045e7-95e2-49c7-a6be-cc2541636f0b', 'auto_attach': '[]', 'controller': {'10.30.170.131': {'_uuid': '90572501-522a-42c1-ae3d-252f978971ed', 'connection_mode': '[]', 'controller_burst_limit': '[]', 'controller_queue_size': '[]', 'controller_rate_limit': '[]', 'enable_async_messages': '[]', 'external_ids': '{}', 'inactivity_probe': '[]', 'is_connected': True, 'local_gateway': '[]', 'local_ip': '[]', 'local_netmask': '[]', 'max_backoff': '[]', 'other_config': '{}', 'role': 'slave', 'status': '{sec_since_connect="175",state=ACTIVE}', 'target': '"tcp:10.30.170.131:6633"', 'type': '[]'}, '10.30.171.110': {'_uuid': 'b82e7dd4-18f4-4c87-9075-dd7aeb12e9e8', 'connection_mode': '[]', 'controller_burst_limit': '[]', 'controller_queue_size': '[]', 'controller_rate_limit': '[]', 'enable_async_messages': '[]', 'external_ids': '{}', 'inactivity_probe': '[]', 'is_connected': True, 'local_gateway': '[]', 'local_ip': '[]', 'local_netmask': '[]', 'max_backoff': '[]', 'other_config': '{}', 'role': 'slave', 'status': '{sec_since_connect="175",state=ACTIVE}', 'target': '"tcp:10.30.171.110:6633"', 'type': '[]'}, '10.30.170.48': {'_uuid': 'ef6c3b9f-b37d-44ed-b461-11afe8598daf', 'connection_mode': '[]', 'controller_burst_limit': '[]', 'controller_queue_size': '[]', 'controller_rate_limit': '[]', 'enable_async_messages': '[]', 'external_ids': '{}', 'inactivity_probe': '[]', 'is_connected': True, 'local_gateway': '[]', 'local_ip': '[]', 'local_netmask': '[]', 'max_backoff': '[]', 'other_config': '{}', 'role': 'master', 'status': '{sec_since_connect="175",state=ACTIVE}', 'target': '"tcp:10.30.170.48:6633"', 'type': '[]'}}, 'datapath_id': '"0000000000000001"', 'datapath_type': '""', 'datapath_version': '"&lt;unknown&gt;"', 'external_ids': '{}', 'fail_mode': 'standalone', 'flood_vlans': '[]', 'flow_tables': '{}', 'ipfix': '[]', 'mcast_snooping_enable': 'false', 'mirrors': '[]', 'name': 's1', 'netflow': '[]', 'other_config': '{datapath-id="0000000000000001",disable-in-band="true",dp-desc=s1}', 'ports': '[00da38e5-71ff-48bc-bf39-436bd14bfea5,32ff594e-effb-41a0-aa0f-1df856411422,f9c97d36-c254-491b-a311-602fd640aa36]', 'protocols': '[OpenFlow13]', 'rstp_enable': 'false', 'rstp_status': '{}', 'sflow': '[]', 'status': '{}', 'stp_enable': 'false'}}</msg>
<arg>${data}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:22.874683" elapsed="0.000370"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-08T01:01:22.875703" level="INFO">${ovs_switch_data} = {'': {'_uuid': '5bd045e7-95e2-49c7-a6be-cc2541636f0b', 'auto_attach': '[]', 'controller': {'10.30.170.131': {'_uuid': '90572501-522a-42c1-ae3d-252f978971ed', 'connection_mode': '[]', 'controller_burst...</msg>
<arg>${ovs_switch_data}</arg>
<arg>${data}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-08T01:01:22.875239" elapsed="0.000508"/>
</kw>
<return>
<value>${data}</value>
<status status="PASS" start="2026-04-08T01:01:22.875797" elapsed="0.000047"/>
</return>
<doc>Gets ovs data and parse them.</doc>
<status status="PASS" start="2026-04-08T01:01:22.737367" elapsed="0.138584"/>
</kw>
<status status="PASS" start="2026-04-08T01:01:22.736622" elapsed="0.139361"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:22.736575" elapsed="0.139438"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:01:22.876403" level="FAIL">Dictionary does not contain key 's1'.</msg>
<var>${bridge}</var>
<arg>${ovs_switch_data}</arg>
<arg>${switch}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="FAIL" start="2026-04-08T01:01:22.876177" elapsed="0.000332">Dictionary does not contain key 's1'.</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${cntls}</var>
<arg>${bridge}</arg>
<arg>controller</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:22.876679" elapsed="0.000021"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${cntl}</var>
<arg>${cntls}</arg>
<arg>${controller}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:22.876852" elapsed="0.000020"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${connected}</var>
<arg>${cntl}</arg>
<arg>is_connected</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:22.877021" elapsed="0.000020"/>
</kw>
<return>
<value>${connected}</value>
<status status="NOT RUN" start="2026-04-08T01:01:22.877085" elapsed="0.000016"/>
</return>
<kw name="Execute OvsVsctl Show Command" owner="OvsManager" type="TEARDOWN">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:01:22.879573" level="INFO">sh ovs-vsctl show</msg>
<arg>${lcmd_prefix} ovs-vsctl show</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:01:22.877931" elapsed="0.001699"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-08T01:01:22.899747" level="INFO">9a5df812-eb49-4477-a37e-2d464c02791d
    Bridge s1
        Controller "tcp:10.30.170.131:6633"
            is_connected: true
        Controller "tcp:10.30.171.110:6633"
            is_connected: true
        Controller "tcp:10.30.170.48:6633"
            is_connected: true
        fail_mode: standalone
        Port s1-eth1
            Interface s1-eth1
        Port s1-eth2
            Interface s1-eth2
        Port s1
            Interface s1
                type: internal
    Bridge s3
        Controller "tcp:10.30.170.131:6633"
            is_connected: true
        Controller "tcp:10.30.171.110:6633"
            is_connected: true
        Controller "tcp:10.30.170.48:6633"
            is_connected: true
        fail_mode: standalone
        Port s3-eth2
            Interface s3-eth2
        Port s3-eth1
            Interface s3-eth1
        Port s3
            Interface s3
                type: internal
    Bridge s2
        Controller "tcp:10.30.171.110:6633"
            is_connected: true
        Controller "tcp:10.30.170.131:6633"
            is_connected: true
        Controller "tcp:10.30.170.48:6633"
            is_connected: true
        fail_mode: standalone
        Port s2-eth1
            Interface s2-eth1
        Port s2-eth2
            Interface s2-eth2
        Port s2-eth3
            Interface s2-eth3
        Port s2
            Interface s2
                type: internal
    ovs_version: "2.17.11"
mininet&gt;</msg>
<msg time="2026-04-08T01:01:22.899853" level="INFO">${output} = 9a5df812-eb49-4477-a37e-2d464c02791d
    Bridge s1
        Controller "tcp:10.30.170.131:6633"
            is_connected: true
        Controller "tcp:10.30.171.110:6633"
            is_connected:...</msg>
<var>${output}</var>
<arg>${lprompt}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-08T01:01:22.879791" elapsed="0.020088"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:22.900321" level="INFO">9a5df812-eb49-4477-a37e-2d464c02791d
    Bridge s1
        Controller "tcp:10.30.170.131:6633"
            is_connected: true
        Controller "tcp:10.30.171.110:6633"
            is_connected: true
        Controller "tcp:10.30.170.48:6633"
            is_connected: true
        fail_mode: standalone
        Port s1-eth1
            Interface s1-eth1
        Port s1-eth2
            Interface s1-eth2
        Port s1
            Interface s1
                type: internal
    Bridge s3
        Controller "tcp:10.30.170.131:6633"
            is_connected: true
        Controller "tcp:10.30.171.110:6633"
            is_connected: true
        Controller "tcp:10.30.170.48:6633"
            is_connected: true
        fail_mode: standalone
        Port s3-eth2
            Interface s3-eth2
        Port s3-eth1
            Interface s3-eth1
        Port s3
            Interface s3
                type: internal
    Bridge s2
        Controller "tcp:10.30.171.110:6633"
            is_connected: true
        Controller "tcp:10.30.170.131:6633"
            is_connected: true
        Controller "tcp:10.30.170.48:6633"
            is_connected: true
        fail_mode: standalone
        Port s2-eth1
            Interface s2-eth1
        Port s2-eth2
            Interface s2-eth2
        Port s2-eth3
            Interface s2-eth3
        Port s2
            Interface s2
                type: internal
    ovs_version: "2.17.11"
mininet&gt;</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:22.900056" elapsed="0.000325"/>
</kw>
<doc>Executes ovs-vsctl show command and returns stdout, no check nor change is performed</doc>
<status status="PASS" start="2026-04-08T01:01:22.877385" elapsed="0.023049"/>
</kw>
<var>${connected}</var>
<arg>${switch}</arg>
<arg>${controller}</arg>
<arg>update_data=${update_data}</arg>
<doc>Return is_connected boolean value</doc>
<status status="FAIL" start="2026-04-08T01:01:22.735767" elapsed="0.164741">Dictionary does not contain key 's1'.</status>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<arg>${connected}</arg>
<arg>${False}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:22.900678" elapsed="0.000021"/>
</kw>
<arg>s1</arg>
<arg>${ODL_SYSTEM_${index}_IP}</arg>
<arg>update_data=${True}</arg>
<doc>Check if the switch is disconnected</doc>
<status status="FAIL" start="2026-04-08T01:01:22.734243" elapsed="0.166540">Dictionary does not contain key 's1'.</status>
</kw>
<kw name="Should Be Disconnected" owner="OvsManager">
<kw name="OvsManager__Is_Connected" owner="OvsManager">
<if>
<branch type="IF" condition="${update_data}==${True}">
<kw name="Get Ovsdb Data" owner="OvsManager">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:01:23.908368" level="INFO">sh ovs-vsctl list Bridge</msg>
<arg>${lcmd_prefix} ${SH_BR_CMD}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:01:23.905702" elapsed="0.002768"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-08T01:01:23.987419" level="INFO">_uuid               : 9bcfbeed-47e0-4406-b63a-1c7efd018616
auto_attach         : []
controller          : [243fe3ab-9d09-4f6a-95c7-66f44ce44370, 42dcabae-83d0-4b2e-85c3-6afd38cf9dbe, 62c52bac-35ce-4da8-8345-1607faceb933]
datapath_id         : "0000000000000002"
datapath_type       : ""
datapath_version    : "&lt;unknown&gt;"
external_ids        : {}
fail_mode           : standalone
flood_vlans         : []
flow_tables         : {}
ipfix               : []
mcast_snooping_enable: false
mirrors             : []
name                : s2
netflow             : []
other_config        : {datapath-id="0000000000000002", disable-in-band="true", dp-desc=s2}
ports               : [3cf70080-6935-4da8-954a-60707cd2aa95, 6731aacc-32ec-4fcd-b0fb-8f97da3f3aaa, ce33b3d8-209b-438d-83d6-c050bc8aee26, d86f10c2-9d40-484c-a7d6-6e88fed82e11]
protocols           : [OpenFlow13]
rstp_enable         : false
rstp_status         : {}
sflow               : []
status              : {}
stp_enable          : false

_uuid               : 60c187c3-58d7-430d-bef7-bbbc3131fa87
auto_attach         : []
controller          : [1968464f-4637-41c7-a481-9eba89956be9, d41b7df8-53ff-40ff-acd4-14e5125234e4, f2bbc0c3-faee-4472-91b2-cdaff2b5204c]
datapath_id         : "0000000000000003"
datapath_type       : ""
datapath_version    : "&lt;unknown&gt;"
external_ids        : {}
fail_mode           : standalone
flood_vlans         : []
flow_tables         : {}
ipfix               : []
mcast_snooping_enable: false
mirrors             : []
name                : s3
netflow             : []
other_config        : {datapath-id="0000000000000003", disable-in-band="true", dp-desc=s3}
ports               : [7915a530-8449-433a-9306-00cddaf3116b, 8069abcf-4250-428c-858a-bf539517ea14, e98007ce-09cd-4834-83d3-70a858f2f481]
protocols           : [OpenFlow13]
rstp_enable         : false
rstp_status         : {}
sflow               : []
status              : {}
stp_enable          : false

_uuid               : 5bd045e7-95e2-49c7-a6be-cc2541636f0b
auto_attach         : []
controller          : [90572501-522a-42c1-ae3d-252f978971ed, b82e7dd4-18f4-4c87-9075-dd7aeb12e9e8, ef6c3b9f-b37d-44ed-b461-11afe8598daf]
datapath_id         : "0000000000000001"
datapath_type       : ""
datapath_version    : "&lt;unknown&gt;"
external_ids        : {}
fail_mode           : standalone
flood_vlans         : []
flow_tables         : {}
ipfix               : []
mcast_snooping_enable: false
mirrors             : []
name                : s1
netflow             : []
other_config        : {datapath-id="0000000000000001", disable-in-band="true", dp-desc=s1}
ports               : [00da38e5-71ff-48bc-bf39-436bd14bfea5, 32ff594e-effb-41a0-aa0f-1df856411422, f9c97d36-c254-491b-a311-602fd640aa36]
protocols           : [OpenFlow13]
rstp_enable         : false
rstp_status         : {}
sflow               : []
status              : {}
stp_enable          : false
mininet&gt;</msg>
<msg time="2026-04-08T01:01:23.987667" level="INFO">${brstdout} = _uuid               : 9bcfbeed-47e0-4406-b63a-1c7efd018616
auto_attach         : []
controller          : [243fe3ab-9d09-4f6a-95c7-66f44ce44370, 42dcabae-83d0-4b2e-85c3-6afd38cf9dbe, 62c52bac-35ce-4...</msg>
<var>${brstdout}</var>
<arg>${lprompt}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-08T01:01:23.908723" elapsed="0.078976"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:23.988395" level="INFO">_uuid               : 9bcfbeed-47e0-4406-b63a-1c7efd018616
auto_attach         : []
controller          : [243fe3ab-9d09-4f6a-95c7-66f44ce44370, 42dcabae-83d0-4b2e-85c3-6afd38cf9dbe, 62c52bac-35ce-4da8-8345-1607faceb933]
datapath_id         : "0000000000000002"
datapath_type       : ""
datapath_version    : "&lt;unknown&gt;"
external_ids        : {}
fail_mode           : standalone
flood_vlans         : []
flow_tables         : {}
ipfix               : []
mcast_snooping_enable: false
mirrors             : []
name                : s2
netflow             : []
other_config        : {datapath-id="0000000000000002", disable-in-band="true", dp-desc=s2}
ports               : [3cf70080-6935-4da8-954a-60707cd2aa95, 6731aacc-32ec-4fcd-b0fb-8f97da3f3aaa, ce33b3d8-209b-438d-83d6-c050bc8aee26, d86f10c2-9d40-484c-a7d6-6e88fed82e11]
protocols           : [OpenFlow13]
rstp_enable         : false
rstp_status         : {}
sflow               : []
status              : {}
stp_enable          : false

_uuid               : 60c187c3-58d7-430d-bef7-bbbc3131fa87
auto_attach         : []
controller          : [1968464f-4637-41c7-a481-9eba89956be9, d41b7df8-53ff-40ff-acd4-14e5125234e4, f2bbc0c3-faee-4472-91b2-cdaff2b5204c]
datapath_id         : "0000000000000003"
datapath_type       : ""
datapath_version    : "&lt;unknown&gt;"
external_ids        : {}
fail_mode           : standalone
flood_vlans         : []
flow_tables         : {}
ipfix               : []
mcast_snooping_enable: false
mirrors             : []
name                : s3
netflow             : []
other_config        : {datapath-id="0000000000000003", disable-in-band="true", dp-desc=s3}
ports               : [7915a530-8449-433a-9306-00cddaf3116b, 8069abcf-4250-428c-858a-bf539517ea14, e98007ce-09cd-4834-83d3-70a858f2f481]
protocols           : [OpenFlow13]
rstp_enable         : false
rstp_status         : {}
sflow               : []
status              : {}
stp_enable          : false

_uuid               : 5bd045e7-95e2-49c7-a6be-cc2541636f0b
auto_attach         : []
controller          : [90572501-522a-42c1-ae3d-252f978971ed, b82e7dd4-18f4-4c87-9075-dd7aeb12e9e8, ef6c3b9f-b37d-44ed-b461-11afe8598daf]
datapath_id         : "0000000000000001"
datapath_type       : ""
datapath_version    : "&lt;unknown&gt;"
external_ids        : {}
fail_mode           : standalone
flood_vlans         : []
flow_tables         : {}
ipfix               : []
mcast_snooping_enable: false
mirrors             : []
name                : s1
netflow             : []
other_config        : {datapath-id="0000000000000001", disable-in-band="true", dp-desc=s1}
ports               : [00da38e5-71ff-48bc-bf39-436bd14bfea5, 32ff594e-effb-41a0-aa0f-1df856411422, f9c97d36-c254-491b-a311-602fd640aa36]
protocols           : [OpenFlow13]
rstp_enable         : false
rstp_status         : {}
sflow               : []
status              : {}
stp_enable          : false
mininet&gt;</msg>
<arg>${brstdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:23.988009" elapsed="0.000463"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:01:23.990341" level="INFO">sh ovs-vsctl list Controller</msg>
<arg>${lcmd_prefix} ${SH_CNTL_CMD}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:01:23.988643" elapsed="0.001755"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-08T01:01:24.043121" level="INFO">_uuid               : d41b7df8-53ff-40ff-acd4-14e5125234e4
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : true
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : slave
status              : {sec_since_connect="174", state=ACTIVE}
target              : "tcp:10.30.171.110:6633"
type                : []

_uuid               : 90572501-522a-42c1-ae3d-252f978971ed
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : true
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : slave
status              : {sec_since_connect="175", state=ACTIVE}
target              : "tcp:10.30.170.131:6633"
type                : []

_uuid               : 243fe3ab-9d09-4f6a-95c7-66f44ce44370
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : true
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : slave
status              : {sec_since_connect="175", state=ACTIVE}
target              : "tcp:10.30.171.110:6633"
type                : []

_uuid               : f2bbc0c3-faee-4472-91b2-cdaff2b5204c
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : true
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : master
status              : {sec_since_connect="174", state=ACTIVE}
target              : "tcp:10.30.170.48:6633"
type                : []

_uuid               : b82e7dd4-18f4-4c87-9075-dd7aeb12e9e8
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : true
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : slave
status              : {sec_since_connect="175", state=ACTIVE}
target              : "tcp:10.30.171.110:6633"
type                : []

_uuid               : 62c52bac-35ce-4da8-8345-1607faceb933
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : true
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : master
status              : {sec_since_connect="175", state=ACTIVE}
target              : "tcp:10.30.170.48:6633"
type                : []

_uuid               : 42dcabae-83d0-4b2e-85c3-6afd38cf9dbe
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : true
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : slave
status              : {sec_since_connect="175", state=ACTIVE}
target              : "tcp:10.30.170.131:6633"
type                : []

_uuid               : ef6c3b9f-b37d-44ed-b461-11afe8598daf
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : true
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : master
status              : {sec_since_connect="175", state=ACTIVE}
target              : "tcp:10.30.170.48:6633"
type                : []

_uuid               : 1968464f-4637-41c7-a481-9eba89956be9
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : true
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : slave
status              : {sec_since_connect="174", state=ACTIVE}
target              : "tcp:10.30.170.131:6633"
type                : []
mininet&gt;</msg>
<msg time="2026-04-08T01:01:24.043475" level="INFO">${cntlstdout} = _uuid               : d41b7df8-53ff-40ff-acd4-14e5125234e4
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
exter...</msg>
<var>${cntlstdout}</var>
<arg>${lprompt}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-08T01:01:23.990579" elapsed="0.052927"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:24.044198" level="INFO">_uuid               : d41b7df8-53ff-40ff-acd4-14e5125234e4
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : true
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : slave
status              : {sec_since_connect="174", state=ACTIVE}
target              : "tcp:10.30.171.110:6633"
type                : []

_uuid               : 90572501-522a-42c1-ae3d-252f978971ed
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : true
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : slave
status              : {sec_since_connect="175", state=ACTIVE}
target              : "tcp:10.30.170.131:6633"
type                : []

_uuid               : 243fe3ab-9d09-4f6a-95c7-66f44ce44370
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : true
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : slave
status              : {sec_since_connect="175", state=ACTIVE}
target              : "tcp:10.30.171.110:6633"
type                : []

_uuid               : f2bbc0c3-faee-4472-91b2-cdaff2b5204c
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : true
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : master
status              : {sec_since_connect="174", state=ACTIVE}
target              : "tcp:10.30.170.48:6633"
type                : []

_uuid               : b82e7dd4-18f4-4c87-9075-dd7aeb12e9e8
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : true
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : slave
status              : {sec_since_connect="175", state=ACTIVE}
target              : "tcp:10.30.171.110:6633"
type                : []

_uuid               : 62c52bac-35ce-4da8-8345-1607faceb933
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : true
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : master
status              : {sec_since_connect="175", state=ACTIVE}
target              : "tcp:10.30.170.48:6633"
type                : []

_uuid               : 42dcabae-83d0-4b2e-85c3-6afd38cf9dbe
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : true
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : slave
status              : {sec_since_connect="175", state=ACTIVE}
target              : "tcp:10.30.170.131:6633"
type                : []

_uuid               : ef6c3b9f-b37d-44ed-b461-11afe8598daf
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : true
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : master
status              : {sec_since_connect="175", state=ACTIVE}
target              : "tcp:10.30.170.48:6633"
type                : []

_uuid               : 1968464f-4637-41c7-a481-9eba89956be9
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : true
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : slave
status              : {sec_since_connect="174", state=ACTIVE}
target              : "tcp:10.30.170.131:6633"
type                : []
mininet&gt;</msg>
<arg>${cntlstdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:24.043821" elapsed="0.000474"/>
</kw>
<kw name="Parse" owner="VsctlListParser">
<msg time="2026-04-08T01:01:24.045449" level="INFO">_uuid:9bcfbeed-47e0-4406-b63a-1c7efd018616
auto_attach:[]
controller:[243fe3ab-9d09-4f6a-95c7-66f44ce44370,42dcabae-83d0-4b2e-85c3-6afd38cf9dbe,62c52bac-35ce-4da8-8345-1607faceb933]
datapath_id:"0000000000000002"
datapath_type:""
datapath_version:"&lt;unknown&gt;"
external_ids:{}
fail_mode:standalone
flood_vlans:[]
flow_tables:{}
ipfix:[]
mcast_snooping_enable:false
mirrors:[]
name:s2
netflow:[]
other_config:{datapath-id="0000000000000002",disable-in-band="true",dp-desc=s2}
ports:[3cf70080-6935-4da8-954a-60707cd2aa95,6731aacc-32ec-4fcd-b0fb-8f97da3f3aaa,ce33b3d8-209b-438d-83d6-c050bc8aee26,d86f10c2-9d40-484c-a7d6-6e88fed82e11]
protocols:[OpenFlow13]
rstp_enable:false
rstp_status:{}
sflow:[]
status:{}
stp_enable:false
_uuid:60c187c3-58d7-430d-bef7-bbbc3131fa87
auto_attach:[]
controller:[1968464f-4637-41c7-a481-9eba89956be9,d41b7df8-53ff-40ff-acd4-14e5125234e4,f2bbc0c3-faee-4472-91b2-cdaff2b5204c]
datapath_id:"0000000000000003"
datapath_type:""
datapath_version:"&lt;unknown&gt;"
external_ids:{}
fail_mode:standalone
flood_vlans:[]
flow_tables:{}
ipfix:[]
mcast_snooping_enable:false
mirrors:[]
name:s3
netflow:[]
other_config:{datapath-id="0000000000000003",disable-in-band="true",dp-desc=s3}
ports:[7915a530-8449-433a-9306-00cddaf3116b,8069abcf-4250-428c-858a-bf539517ea14,e98007ce-09cd-4834-83d3-70a858f2f481]
protocols:[OpenFlow13]
rstp_enable:false
rstp_status:{}
sflow:[]
status:{}
stp_enable:false
_uuid:5bd045e7-95e2-49c7-a6be-cc2541636f0b
auto_attach:[]
controller:[90572501-522a-42c1-ae3d-252f978971ed,b82e7dd4-18f4-4c87-9075-dd7aeb12e9e8,ef6c3b9f-b37d-44ed-b461-11afe8598daf]
datapath_id:"0000000000000001"
datapath_type:""
datapath_version:"&lt;unknown&gt;"
external_ids:{}
fail_mode:standalone
flood_vlans:[]
flow_tables:{}
ipfix:[]
mcast_snooping_enable:false
mirrors:[]
name:s1
netflow:[]
other_config:{datapath-id="0000000000000001",disable-in-band="true",dp-desc=s1}
ports:[00da38e5-71ff-48bc-bf39-436bd14bfea5,32ff594e-effb-41a0-aa0f-1df856411422,f9c97d36-c254-491b-a311-602fd640aa36]
protocols:[OpenFlow13]
rstp_enable:false
rstp_status:{}
sflow:[]
status:{}
stp_enable:false
_uuid:d41b7df8-53ff-40ff-acd4-14e5125234e4
connection_mode:[]
controller_burst_limit:[]
controller_queue_size:[]
controller_rate_limit:[]
enable_async_messages:[]
external_ids:{}
inactivity_probe:[]
is_connected:true
local_gateway:[]
local_ip:[]
local_netmask:[]
max_backoff:[]
other_config:{}
role:slave
status:{sec_since_connect="174",state=ACTIVE}
target:"tcp:10.30.171.110:6633"
type:[]
_uuid:90572501-522a-42c1-ae3d-252f978971ed
connection_mode:[]
controller_burst_limit:[]
controller_queue_size:[]
controller_rate_limit:[]
enable_async_messages:[]
external_ids:{}
inactivity_probe:[]
is_connected:true
local_gateway:[]
local_ip:[]
local_netmask:[]
max_backoff:[]
other_config:{}
role:slave
status:{sec_since_connect="175",state=ACTIVE}
target:"tcp:10.30.170.131:6633"
type:[]
_uuid:243fe3ab-9d09-4f6a-95c7-66f44ce44370
connection_mode:[]
controller_burst_limit:[]
controller_queue_size:[]
controller_rate_limit:[]
enable_async_messages:[]
external_ids:{}
inactivity_probe:[]
is_connected:true
local_gateway:[]
local_ip:[]
local_netmask:[]
max_backoff:[]
other_config:{}
role:slave
status:{sec_since_connect="175",state=ACTIVE}
target:"tcp:10.30.171.110:6633"
type:[]
_uuid:f2bbc0c3-faee-4472-91b2-cdaff2b5204c
connection_mode:[]
controller_burst_limit:[]
controller_queue_size:[]
controller_rate_limit:[]
enable_async_messages:[]
external_ids:{}
inactivity_probe:[]
is_connected:true
local_gateway:[]
local_ip:[]
local_netmask:[]
max_backoff:[]
other_config:{}
role:master
status:{sec_since_connect="174",state=ACTIVE}
target:"tcp:10.30.170.48:6633"
type:[]
_uuid:b82e7dd4-18f4-4c87-9075-dd7aeb12e9e8
connection_mode:[]
controller_burst_limit:[]
controller_queue_size:[]
controller_rate_limit:[]
enable_async_messages:[]
external_ids:{}
inactivity_probe:[]
is_connected:true
local_gateway:[]
local_ip:[]
local_netmask:[]
max_backoff:[]
other_config:{}
role:slave
status:{sec_since_connect="175",state=ACTIVE}
target:"tcp:10.30.171.110:6633"
type:[]
_uuid:62c52bac-35ce-4da8-8345-1607faceb933
connection_mode:[]
controller_burst_limit:[]
controller_queue_size:[]
controller_rate_limit:[]
enable_async_messages:[]
external_ids:{}
inactivity_probe:[]
is_connected:true
local_gateway:[]
local_ip:[]
local_netmask:[]
max_backoff:[]
other_config:{}
role:master
status:{sec_since_connect="175",state=ACTIVE}
target:"tcp:10.30.170.48:6633"
type:[]
_uuid:42dcabae-83d0-4b2e-85c3-6afd38cf9dbe
connection_mode:[]
controller_burst_limit:[]
controller_queue_size:[]
controller_rate_limit:[]
enable_async_messages:[]
external_ids:{}
inactivity_probe:[]
is_connected:true
local_gateway:[]
local_ip:[]
local_netmask:[]
max_backoff:[]
other_config:{}
role:slave
status:{sec_since_connect="175",state=ACTIVE}
target:"tcp:10.30.170.131:6633"
type:[]
_uuid:ef6c3b9f-b37d-44ed-b461-11afe8598daf
connection_mode:[]
controller_burst_limit:[]
controller_queue_size:[]
controller_rate_limit:[]
enable_async_messages:[]
external_ids:{}
inactivity_probe:[]
is_connected:true
local_gateway:[]
local_ip:[]
local_netmask:[]
max_backoff:[]
other_config:{}
role:master
status:{sec_since_connect="175",state=ACTIVE}
target:"tcp:10.30.170.48:6633"
type:[]
_uuid:1968464f-4637-41c7-a481-9eba89956be9
connection_mode:[]
controller_burst_limit:[]
controller_queue_size:[]
controller_rate_limit:[]
enable_async_messages:[]
external_ids:{}
inactivity_probe:[]
is_connected:true
local_gateway:[]
local_ip:[]
local_netmask:[]
max_backoff:[]
other_config:{}
role:slave
status:{sec_since_connect="174",state=ACTIVE}
target:"tcp:10.30.170.131:6633"
type:[]</msg>
<msg time="2026-04-08T01:01:24.045651" level="INFO">${data} = {'': {'_uuid': '5bd045e7-95e2-49c7-a6be-cc2541636f0b', 'auto_attach': '[]', 'controller': {'10.30.170.131': {'_uuid': '90572501-522a-42c1-ae3d-252f978971ed', 'connection_mode': '[]', 'controller_burst...</msg>
<msg time="2026-04-08T01:01:24.045728" level="INFO">${bridegs} = {'9bcfbeed-47e0-4406-b63a-1c7efd018616': {'_uuid': '9bcfbeed-47e0-4406-b63a-1c7efd018616', 'auto_attach': '[]', 'controller': '[243fe3ab-9d09-4f6a-95c7-66f44ce44370,42dcabae-83d0-4b2e-85c3-6afd38cf9db...</msg>
<msg time="2026-04-08T01:01:24.045830" level="INFO">${controllers} = {'d41b7df8-53ff-40ff-acd4-14e5125234e4': {'_uuid': 'd41b7df8-53ff-40ff-acd4-14e5125234e4', 'connection_mode': '[]', 'controller_burst_limit': '[]', 'controller_queue_size': '[]', 'controller_rate_limi...</msg>
<var>${data}</var>
<var>${bridegs}</var>
<var>${controllers}</var>
<arg>${brstdout}</arg>
<arg>${cntlstdout}</arg>
<doc>Produces dictionary with data for future usege</doc>
<status status="PASS" start="2026-04-08T01:01:24.044469" elapsed="0.001387"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:24.046332" level="INFO">{'': {'_uuid': '5bd045e7-95e2-49c7-a6be-cc2541636f0b', 'auto_attach': '[]', 'controller': {'10.30.170.131': {'_uuid': '90572501-522a-42c1-ae3d-252f978971ed', 'connection_mode': '[]', 'controller_burst_limit': '[]', 'controller_queue_size': '[]', 'controller_rate_limit': '[]', 'enable_async_messages': '[]', 'external_ids': '{}', 'inactivity_probe': '[]', 'is_connected': True, 'local_gateway': '[]', 'local_ip': '[]', 'local_netmask': '[]', 'max_backoff': '[]', 'other_config': '{}', 'role': 'slave', 'status': '{sec_since_connect="175",state=ACTIVE}', 'target': '"tcp:10.30.170.131:6633"', 'type': '[]'}, '10.30.171.110': {'_uuid': 'b82e7dd4-18f4-4c87-9075-dd7aeb12e9e8', 'connection_mode': '[]', 'controller_burst_limit': '[]', 'controller_queue_size': '[]', 'controller_rate_limit': '[]', 'enable_async_messages': '[]', 'external_ids': '{}', 'inactivity_probe': '[]', 'is_connected': True, 'local_gateway': '[]', 'local_ip': '[]', 'local_netmask': '[]', 'max_backoff': '[]', 'other_config': '{}', 'role': 'slave', 'status': '{sec_since_connect="175",state=ACTIVE}', 'target': '"tcp:10.30.171.110:6633"', 'type': '[]'}, '10.30.170.48': {'_uuid': 'ef6c3b9f-b37d-44ed-b461-11afe8598daf', 'connection_mode': '[]', 'controller_burst_limit': '[]', 'controller_queue_size': '[]', 'controller_rate_limit': '[]', 'enable_async_messages': '[]', 'external_ids': '{}', 'inactivity_probe': '[]', 'is_connected': True, 'local_gateway': '[]', 'local_ip': '[]', 'local_netmask': '[]', 'max_backoff': '[]', 'other_config': '{}', 'role': 'master', 'status': '{sec_since_connect="175",state=ACTIVE}', 'target': '"tcp:10.30.170.48:6633"', 'type': '[]'}}, 'datapath_id': '"0000000000000001"', 'datapath_type': '""', 'datapath_version': '"&lt;unknown&gt;"', 'external_ids': '{}', 'fail_mode': 'standalone', 'flood_vlans': '[]', 'flow_tables': '{}', 'ipfix': '[]', 'mcast_snooping_enable': 'false', 'mirrors': '[]', 'name': 's1', 'netflow': '[]', 'other_config': '{datapath-id="0000000000000001",disable-in-band="true",dp-desc=s1}', 'ports': '[00da38e5-71ff-48bc-bf39-436bd14bfea5,32ff594e-effb-41a0-aa0f-1df856411422,f9c97d36-c254-491b-a311-602fd640aa36]', 'protocols': '[OpenFlow13]', 'rstp_enable': 'false', 'rstp_status': '{}', 'sflow': '[]', 'status': '{}', 'stp_enable': 'false'}}</msg>
<arg>${data}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:24.046025" elapsed="0.000374"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-08T01:01:24.047025" level="INFO">${ovs_switch_data} = {'': {'_uuid': '5bd045e7-95e2-49c7-a6be-cc2541636f0b', 'auto_attach': '[]', 'controller': {'10.30.170.131': {'_uuid': '90572501-522a-42c1-ae3d-252f978971ed', 'connection_mode': '[]', 'controller_burst...</msg>
<arg>${ovs_switch_data}</arg>
<arg>${data}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-08T01:01:24.046572" elapsed="0.000499"/>
</kw>
<return>
<value>${data}</value>
<status status="PASS" start="2026-04-08T01:01:24.047120" elapsed="0.000057"/>
</return>
<doc>Gets ovs data and parse them.</doc>
<status status="PASS" start="2026-04-08T01:01:23.904992" elapsed="0.142295"/>
</kw>
<status status="PASS" start="2026-04-08T01:01:23.904277" elapsed="0.143042"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:23.904227" elapsed="0.143122"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:01:24.047721" level="FAIL">Dictionary does not contain key 's1'.</msg>
<var>${bridge}</var>
<arg>${ovs_switch_data}</arg>
<arg>${switch}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="FAIL" start="2026-04-08T01:01:24.047499" elapsed="0.000328">Dictionary does not contain key 's1'.</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${cntls}</var>
<arg>${bridge}</arg>
<arg>controller</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:24.047993" elapsed="0.000022"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${cntl}</var>
<arg>${cntls}</arg>
<arg>${controller}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:24.048184" elapsed="0.000021"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${connected}</var>
<arg>${cntl}</arg>
<arg>is_connected</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:24.048352" elapsed="0.000019"/>
</kw>
<return>
<value>${connected}</value>
<status status="NOT RUN" start="2026-04-08T01:01:24.048417" elapsed="0.000017"/>
</return>
<kw name="Execute OvsVsctl Show Command" owner="OvsManager" type="TEARDOWN">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:01:24.050719" level="INFO">sh ovs-vsctl show</msg>
<arg>${lcmd_prefix} ovs-vsctl show</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:01:24.049023" elapsed="0.001752"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-08T01:01:24.071123" level="INFO">9a5df812-eb49-4477-a37e-2d464c02791d
    Bridge s1
        Controller "tcp:10.30.170.131:6633"
            is_connected: true
        Controller "tcp:10.30.171.110:6633"
            is_connected: true
        Controller "tcp:10.30.170.48:6633"
            is_connected: true
        fail_mode: standalone
        Port s1-eth1
            Interface s1-eth1
        Port s1-eth2
            Interface s1-eth2
        Port s1
            Interface s1
                type: internal
    Bridge s3
        Controller "tcp:10.30.170.131:6633"
            is_connected: true
        Controller "tcp:10.30.171.110:6633"
            is_connected: true
        Controller "tcp:10.30.170.48:6633"
            is_connected: true
        fail_mode: standalone
        Port s3-eth2
            Interface s3-eth2
        Port s3-eth1
            Interface s3-eth1
        Port s3
            Interface s3
                type: internal
    Bridge s2
        Controller "tcp:10.30.171.110:6633"
            is_connected: true
        Controller "tcp:10.30.170.131:6633"
            is_connected: true
        Controller "tcp:10.30.170.48:6633"
            is_connected: true
        fail_mode: standalone
        Port s2-eth1
            Interface s2-eth1
        Port s2-eth2
            Interface s2-eth2
        Port s2-eth3
            Interface s2-eth3
        Port s2
            Interface s2
                type: internal
    ovs_version: "2.17.11"
mininet&gt;</msg>
<msg time="2026-04-08T01:01:24.071252" level="INFO">${output} = 9a5df812-eb49-4477-a37e-2d464c02791d
    Bridge s1
        Controller "tcp:10.30.170.131:6633"
            is_connected: true
        Controller "tcp:10.30.171.110:6633"
            is_connected:...</msg>
<var>${output}</var>
<arg>${lprompt}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-08T01:01:24.050934" elapsed="0.020375"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:24.071744" level="INFO">9a5df812-eb49-4477-a37e-2d464c02791d
    Bridge s1
        Controller "tcp:10.30.170.131:6633"
            is_connected: true
        Controller "tcp:10.30.171.110:6633"
            is_connected: true
        Controller "tcp:10.30.170.48:6633"
            is_connected: true
        fail_mode: standalone
        Port s1-eth1
            Interface s1-eth1
        Port s1-eth2
            Interface s1-eth2
        Port s1
            Interface s1
                type: internal
    Bridge s3
        Controller "tcp:10.30.170.131:6633"
            is_connected: true
        Controller "tcp:10.30.171.110:6633"
            is_connected: true
        Controller "tcp:10.30.170.48:6633"
            is_connected: true
        fail_mode: standalone
        Port s3-eth2
            Interface s3-eth2
        Port s3-eth1
            Interface s3-eth1
        Port s3
            Interface s3
                type: internal
    Bridge s2
        Controller "tcp:10.30.171.110:6633"
            is_connected: true
        Controller "tcp:10.30.170.131:6633"
            is_connected: true
        Controller "tcp:10.30.170.48:6633"
            is_connected: true
        fail_mode: standalone
        Port s2-eth1
            Interface s2-eth1
        Port s2-eth2
            Interface s2-eth2
        Port s2-eth3
            Interface s2-eth3
        Port s2
            Interface s2
                type: internal
    ovs_version: "2.17.11"
mininet&gt;</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:24.071492" elapsed="0.000311"/>
</kw>
<doc>Executes ovs-vsctl show command and returns stdout, no check nor change is performed</doc>
<status status="PASS" start="2026-04-08T01:01:24.048702" elapsed="0.023155"/>
</kw>
<var>${connected}</var>
<arg>${switch}</arg>
<arg>${controller}</arg>
<arg>update_data=${update_data}</arg>
<doc>Return is_connected boolean value</doc>
<status status="FAIL" start="2026-04-08T01:01:23.903322" elapsed="0.168610">Dictionary does not contain key 's1'.</status>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<arg>${connected}</arg>
<arg>${False}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:24.072105" elapsed="0.000022"/>
</kw>
<arg>s1</arg>
<arg>${ODL_SYSTEM_${index}_IP}</arg>
<arg>update_data=${True}</arg>
<doc>Check if the switch is disconnected</doc>
<status status="FAIL" start="2026-04-08T01:01:23.901730" elapsed="0.170500">Dictionary does not contain key 's1'.</status>
</kw>
<kw name="Should Be Disconnected" owner="OvsManager">
<kw name="OvsManager__Is_Connected" owner="OvsManager">
<if>
<branch type="IF" condition="${update_data}==${True}">
<kw name="Get Ovsdb Data" owner="OvsManager">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:01:25.080879" level="INFO">sh ovs-vsctl list Bridge</msg>
<arg>${lcmd_prefix} ${SH_BR_CMD}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:01:25.077848" elapsed="0.003175"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-08T01:01:25.156340" level="INFO">_uuid               : 9bcfbeed-47e0-4406-b63a-1c7efd018616
auto_attach         : []
controller          : [243fe3ab-9d09-4f6a-95c7-66f44ce44370, 42dcabae-83d0-4b2e-85c3-6afd38cf9dbe, 62c52bac-35ce-4da8-8345-1607faceb933]
datapath_id         : "0000000000000002"
datapath_type       : ""
datapath_version    : "&lt;unknown&gt;"
external_ids        : {}
fail_mode           : standalone
flood_vlans         : []
flow_tables         : {}
ipfix               : []
mcast_snooping_enable: false
mirrors             : []
name                : s2
netflow             : []
other_config        : {datapath-id="0000000000000002", disable-in-band="true", dp-desc=s2}
ports               : [3cf70080-6935-4da8-954a-60707cd2aa95, 6731aacc-32ec-4fcd-b0fb-8f97da3f3aaa, ce33b3d8-209b-438d-83d6-c050bc8aee26, d86f10c2-9d40-484c-a7d6-6e88fed82e11]
protocols           : [OpenFlow13]
rstp_enable         : false
rstp_status         : {}
sflow               : []
status              : {}
stp_enable          : false

_uuid               : 60c187c3-58d7-430d-bef7-bbbc3131fa87
auto_attach         : []
controller          : [1968464f-4637-41c7-a481-9eba89956be9, d41b7df8-53ff-40ff-acd4-14e5125234e4, f2bbc0c3-faee-4472-91b2-cdaff2b5204c]
datapath_id         : "0000000000000003"
datapath_type       : ""
datapath_version    : "&lt;unknown&gt;"
external_ids        : {}
fail_mode           : standalone
flood_vlans         : []
flow_tables         : {}
ipfix               : []
mcast_snooping_enable: false
mirrors             : []
name                : s3
netflow             : []
other_config        : {datapath-id="0000000000000003", disable-in-band="true", dp-desc=s3}
ports               : [7915a530-8449-433a-9306-00cddaf3116b, 8069abcf-4250-428c-858a-bf539517ea14, e98007ce-09cd-4834-83d3-70a858f2f481]
protocols           : [OpenFlow13]
rstp_enable         : false
rstp_status         : {}
sflow               : []
status              : {}
stp_enable          : false

_uuid               : 5bd045e7-95e2-49c7-a6be-cc2541636f0b
auto_attach         : []
controller          : [90572501-522a-42c1-ae3d-252f978971ed, b82e7dd4-18f4-4c87-9075-dd7aeb12e9e8, ef6c3b9f-b37d-44ed-b461-11afe8598daf]
datapath_id         : "0000000000000001"
datapath_type       : ""
datapath_version    : "&lt;unknown&gt;"
external_ids        : {}
fail_mode           : standalone
flood_vlans         : []
flow_tables         : {}
ipfix               : []
mcast_snooping_enable: false
mirrors             : []
name                : s1
netflow             : []
other_config        : {datapath-id="0000000000000001", disable-in-band="true", dp-desc=s1}
ports               : [00da38e5-71ff-48bc-bf39-436bd14bfea5, 32ff594e-effb-41a0-aa0f-1df856411422, f9c97d36-c254-491b-a311-602fd640aa36]
protocols           : [OpenFlow13]
rstp_enable         : false
rstp_status         : {}
sflow               : []
status              : {}
stp_enable          : false
mininet&gt;</msg>
<msg time="2026-04-08T01:01:25.156479" level="INFO">${brstdout} = _uuid               : 9bcfbeed-47e0-4406-b63a-1c7efd018616
auto_attach         : []
controller          : [243fe3ab-9d09-4f6a-95c7-66f44ce44370, 42dcabae-83d0-4b2e-85c3-6afd38cf9dbe, 62c52bac-35ce-4...</msg>
<var>${brstdout}</var>
<arg>${lprompt}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-08T01:01:25.081459" elapsed="0.075047"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:25.157020" level="INFO">_uuid               : 9bcfbeed-47e0-4406-b63a-1c7efd018616
auto_attach         : []
controller          : [243fe3ab-9d09-4f6a-95c7-66f44ce44370, 42dcabae-83d0-4b2e-85c3-6afd38cf9dbe, 62c52bac-35ce-4da8-8345-1607faceb933]
datapath_id         : "0000000000000002"
datapath_type       : ""
datapath_version    : "&lt;unknown&gt;"
external_ids        : {}
fail_mode           : standalone
flood_vlans         : []
flow_tables         : {}
ipfix               : []
mcast_snooping_enable: false
mirrors             : []
name                : s2
netflow             : []
other_config        : {datapath-id="0000000000000002", disable-in-band="true", dp-desc=s2}
ports               : [3cf70080-6935-4da8-954a-60707cd2aa95, 6731aacc-32ec-4fcd-b0fb-8f97da3f3aaa, ce33b3d8-209b-438d-83d6-c050bc8aee26, d86f10c2-9d40-484c-a7d6-6e88fed82e11]
protocols           : [OpenFlow13]
rstp_enable         : false
rstp_status         : {}
sflow               : []
status              : {}
stp_enable          : false

_uuid               : 60c187c3-58d7-430d-bef7-bbbc3131fa87
auto_attach         : []
controller          : [1968464f-4637-41c7-a481-9eba89956be9, d41b7df8-53ff-40ff-acd4-14e5125234e4, f2bbc0c3-faee-4472-91b2-cdaff2b5204c]
datapath_id         : "0000000000000003"
datapath_type       : ""
datapath_version    : "&lt;unknown&gt;"
external_ids        : {}
fail_mode           : standalone
flood_vlans         : []
flow_tables         : {}
ipfix               : []
mcast_snooping_enable: false
mirrors             : []
name                : s3
netflow             : []
other_config        : {datapath-id="0000000000000003", disable-in-band="true", dp-desc=s3}
ports               : [7915a530-8449-433a-9306-00cddaf3116b, 8069abcf-4250-428c-858a-bf539517ea14, e98007ce-09cd-4834-83d3-70a858f2f481]
protocols           : [OpenFlow13]
rstp_enable         : false
rstp_status         : {}
sflow               : []
status              : {}
stp_enable          : false

_uuid               : 5bd045e7-95e2-49c7-a6be-cc2541636f0b
auto_attach         : []
controller          : [90572501-522a-42c1-ae3d-252f978971ed, b82e7dd4-18f4-4c87-9075-dd7aeb12e9e8, ef6c3b9f-b37d-44ed-b461-11afe8598daf]
datapath_id         : "0000000000000001"
datapath_type       : ""
datapath_version    : "&lt;unknown&gt;"
external_ids        : {}
fail_mode           : standalone
flood_vlans         : []
flow_tables         : {}
ipfix               : []
mcast_snooping_enable: false
mirrors             : []
name                : s1
netflow             : []
other_config        : {datapath-id="0000000000000001", disable-in-band="true", dp-desc=s1}
ports               : [00da38e5-71ff-48bc-bf39-436bd14bfea5, 32ff594e-effb-41a0-aa0f-1df856411422, f9c97d36-c254-491b-a311-602fd640aa36]
protocols           : [OpenFlow13]
rstp_enable         : false
rstp_status         : {}
sflow               : []
status              : {}
stp_enable          : false
mininet&gt;</msg>
<arg>${brstdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:25.156713" elapsed="0.000438"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:01:25.159008" level="INFO">sh ovs-vsctl list Controller</msg>
<arg>${lcmd_prefix} ${SH_CNTL_CMD}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:01:25.157325" elapsed="0.001738"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-08T01:01:25.216986" level="INFO">_uuid               : d41b7df8-53ff-40ff-acd4-14e5125234e4
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : true
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : slave
status              : {sec_since_connect="174", state=ACTIVE}
target              : "tcp:10.30.171.110:6633"
type                : []

_uuid               : 90572501-522a-42c1-ae3d-252f978971ed
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : true
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : slave
status              : {sec_since_connect="175", state=ACTIVE}
target              : "tcp:10.30.170.131:6633"
type                : []

_uuid               : 243fe3ab-9d09-4f6a-95c7-66f44ce44370
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : true
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : slave
status              : {sec_since_connect="175", state=ACTIVE}
target              : "tcp:10.30.171.110:6633"
type                : []

_uuid               : f2bbc0c3-faee-4472-91b2-cdaff2b5204c
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : true
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : master
status              : {sec_since_connect="174", state=ACTIVE}
target              : "tcp:10.30.170.48:6633"
type                : []

_uuid               : b82e7dd4-18f4-4c87-9075-dd7aeb12e9e8
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : true
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : slave
status              : {sec_since_connect="175", state=ACTIVE}
target              : "tcp:10.30.171.110:6633"
type                : []

_uuid               : 62c52bac-35ce-4da8-8345-1607faceb933
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : true
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : master
status              : {sec_since_connect="175", state=ACTIVE}
target              : "tcp:10.30.170.48:6633"
type                : []

_uuid               : 42dcabae-83d0-4b2e-85c3-6afd38cf9dbe
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : true
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : slave
status              : {sec_since_connect="175", state=ACTIVE}
target              : "tcp:10.30.170.131:6633"
type                : []

_uuid               : ef6c3b9f-b37d-44ed-b461-11afe8598daf
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : true
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : master
status              : {sec_since_connect="175", state=ACTIVE}
target              : "tcp:10.30.170.48:6633"
type                : []

_uuid               : 1968464f-4637-41c7-a481-9eba89956be9
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : true
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : slave
status              : {sec_since_connect="174", state=ACTIVE}
target              : "tcp:10.30.170.131:6633"
type                : []
mininet&gt;</msg>
<msg time="2026-04-08T01:01:25.217145" level="INFO">${cntlstdout} = _uuid               : d41b7df8-53ff-40ff-acd4-14e5125234e4
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
exter...</msg>
<var>${cntlstdout}</var>
<arg>${lprompt}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-08T01:01:25.159254" elapsed="0.057933"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:25.217678" level="INFO">_uuid               : d41b7df8-53ff-40ff-acd4-14e5125234e4
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : true
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : slave
status              : {sec_since_connect="174", state=ACTIVE}
target              : "tcp:10.30.171.110:6633"
type                : []

_uuid               : 90572501-522a-42c1-ae3d-252f978971ed
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : true
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : slave
status              : {sec_since_connect="175", state=ACTIVE}
target              : "tcp:10.30.170.131:6633"
type                : []

_uuid               : 243fe3ab-9d09-4f6a-95c7-66f44ce44370
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : true
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : slave
status              : {sec_since_connect="175", state=ACTIVE}
target              : "tcp:10.30.171.110:6633"
type                : []

_uuid               : f2bbc0c3-faee-4472-91b2-cdaff2b5204c
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : true
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : master
status              : {sec_since_connect="174", state=ACTIVE}
target              : "tcp:10.30.170.48:6633"
type                : []

_uuid               : b82e7dd4-18f4-4c87-9075-dd7aeb12e9e8
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : true
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : slave
status              : {sec_since_connect="175", state=ACTIVE}
target              : "tcp:10.30.171.110:6633"
type                : []

_uuid               : 62c52bac-35ce-4da8-8345-1607faceb933
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : true
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : master
status              : {sec_since_connect="175", state=ACTIVE}
target              : "tcp:10.30.170.48:6633"
type                : []

_uuid               : 42dcabae-83d0-4b2e-85c3-6afd38cf9dbe
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : true
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : slave
status              : {sec_since_connect="175", state=ACTIVE}
target              : "tcp:10.30.170.131:6633"
type                : []

_uuid               : ef6c3b9f-b37d-44ed-b461-11afe8598daf
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : true
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : master
status              : {sec_since_connect="175", state=ACTIVE}
target              : "tcp:10.30.170.48:6633"
type                : []

_uuid               : 1968464f-4637-41c7-a481-9eba89956be9
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : true
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : slave
status              : {sec_since_connect="174", state=ACTIVE}
target              : "tcp:10.30.170.131:6633"
type                : []
mininet&gt;</msg>
<arg>${cntlstdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:25.217393" elapsed="0.000423"/>
</kw>
<kw name="Parse" owner="VsctlListParser">
<msg time="2026-04-08T01:01:25.218953" level="INFO">_uuid:9bcfbeed-47e0-4406-b63a-1c7efd018616
auto_attach:[]
controller:[243fe3ab-9d09-4f6a-95c7-66f44ce44370,42dcabae-83d0-4b2e-85c3-6afd38cf9dbe,62c52bac-35ce-4da8-8345-1607faceb933]
datapath_id:"0000000000000002"
datapath_type:""
datapath_version:"&lt;unknown&gt;"
external_ids:{}
fail_mode:standalone
flood_vlans:[]
flow_tables:{}
ipfix:[]
mcast_snooping_enable:false
mirrors:[]
name:s2
netflow:[]
other_config:{datapath-id="0000000000000002",disable-in-band="true",dp-desc=s2}
ports:[3cf70080-6935-4da8-954a-60707cd2aa95,6731aacc-32ec-4fcd-b0fb-8f97da3f3aaa,ce33b3d8-209b-438d-83d6-c050bc8aee26,d86f10c2-9d40-484c-a7d6-6e88fed82e11]
protocols:[OpenFlow13]
rstp_enable:false
rstp_status:{}
sflow:[]
status:{}
stp_enable:false
_uuid:60c187c3-58d7-430d-bef7-bbbc3131fa87
auto_attach:[]
controller:[1968464f-4637-41c7-a481-9eba89956be9,d41b7df8-53ff-40ff-acd4-14e5125234e4,f2bbc0c3-faee-4472-91b2-cdaff2b5204c]
datapath_id:"0000000000000003"
datapath_type:""
datapath_version:"&lt;unknown&gt;"
external_ids:{}
fail_mode:standalone
flood_vlans:[]
flow_tables:{}
ipfix:[]
mcast_snooping_enable:false
mirrors:[]
name:s3
netflow:[]
other_config:{datapath-id="0000000000000003",disable-in-band="true",dp-desc=s3}
ports:[7915a530-8449-433a-9306-00cddaf3116b,8069abcf-4250-428c-858a-bf539517ea14,e98007ce-09cd-4834-83d3-70a858f2f481]
protocols:[OpenFlow13]
rstp_enable:false
rstp_status:{}
sflow:[]
status:{}
stp_enable:false
_uuid:5bd045e7-95e2-49c7-a6be-cc2541636f0b
auto_attach:[]
controller:[90572501-522a-42c1-ae3d-252f978971ed,b82e7dd4-18f4-4c87-9075-dd7aeb12e9e8,ef6c3b9f-b37d-44ed-b461-11afe8598daf]
datapath_id:"0000000000000001"
datapath_type:""
datapath_version:"&lt;unknown&gt;"
external_ids:{}
fail_mode:standalone
flood_vlans:[]
flow_tables:{}
ipfix:[]
mcast_snooping_enable:false
mirrors:[]
name:s1
netflow:[]
other_config:{datapath-id="0000000000000001",disable-in-band="true",dp-desc=s1}
ports:[00da38e5-71ff-48bc-bf39-436bd14bfea5,32ff594e-effb-41a0-aa0f-1df856411422,f9c97d36-c254-491b-a311-602fd640aa36]
protocols:[OpenFlow13]
rstp_enable:false
rstp_status:{}
sflow:[]
status:{}
stp_enable:false
_uuid:d41b7df8-53ff-40ff-acd4-14e5125234e4
connection_mode:[]
controller_burst_limit:[]
controller_queue_size:[]
controller_rate_limit:[]
enable_async_messages:[]
external_ids:{}
inactivity_probe:[]
is_connected:true
local_gateway:[]
local_ip:[]
local_netmask:[]
max_backoff:[]
other_config:{}
role:slave
status:{sec_since_connect="174",state=ACTIVE}
target:"tcp:10.30.171.110:6633"
type:[]
_uuid:90572501-522a-42c1-ae3d-252f978971ed
connection_mode:[]
controller_burst_limit:[]
controller_queue_size:[]
controller_rate_limit:[]
enable_async_messages:[]
external_ids:{}
inactivity_probe:[]
is_connected:true
local_gateway:[]
local_ip:[]
local_netmask:[]
max_backoff:[]
other_config:{}
role:slave
status:{sec_since_connect="175",state=ACTIVE}
target:"tcp:10.30.170.131:6633"
type:[]
_uuid:243fe3ab-9d09-4f6a-95c7-66f44ce44370
connection_mode:[]
controller_burst_limit:[]
controller_queue_size:[]
controller_rate_limit:[]
enable_async_messages:[]
external_ids:{}
inactivity_probe:[]
is_connected:true
local_gateway:[]
local_ip:[]
local_netmask:[]
max_backoff:[]
other_config:{}
role:slave
status:{sec_since_connect="175",state=ACTIVE}
target:"tcp:10.30.171.110:6633"
type:[]
_uuid:f2bbc0c3-faee-4472-91b2-cdaff2b5204c
connection_mode:[]
controller_burst_limit:[]
controller_queue_size:[]
controller_rate_limit:[]
enable_async_messages:[]
external_ids:{}
inactivity_probe:[]
is_connected:true
local_gateway:[]
local_ip:[]
local_netmask:[]
max_backoff:[]
other_config:{}
role:master
status:{sec_since_connect="174",state=ACTIVE}
target:"tcp:10.30.170.48:6633"
type:[]
_uuid:b82e7dd4-18f4-4c87-9075-dd7aeb12e9e8
connection_mode:[]
controller_burst_limit:[]
controller_queue_size:[]
controller_rate_limit:[]
enable_async_messages:[]
external_ids:{}
inactivity_probe:[]
is_connected:true
local_gateway:[]
local_ip:[]
local_netmask:[]
max_backoff:[]
other_config:{}
role:slave
status:{sec_since_connect="175",state=ACTIVE}
target:"tcp:10.30.171.110:6633"
type:[]
_uuid:62c52bac-35ce-4da8-8345-1607faceb933
connection_mode:[]
controller_burst_limit:[]
controller_queue_size:[]
controller_rate_limit:[]
enable_async_messages:[]
external_ids:{}
inactivity_probe:[]
is_connected:true
local_gateway:[]
local_ip:[]
local_netmask:[]
max_backoff:[]
other_config:{}
role:master
status:{sec_since_connect="175",state=ACTIVE}
target:"tcp:10.30.170.48:6633"
type:[]
_uuid:42dcabae-83d0-4b2e-85c3-6afd38cf9dbe
connection_mode:[]
controller_burst_limit:[]
controller_queue_size:[]
controller_rate_limit:[]
enable_async_messages:[]
external_ids:{}
inactivity_probe:[]
is_connected:true
local_gateway:[]
local_ip:[]
local_netmask:[]
max_backoff:[]
other_config:{}
role:slave
status:{sec_since_connect="175",state=ACTIVE}
target:"tcp:10.30.170.131:6633"
type:[]
_uuid:ef6c3b9f-b37d-44ed-b461-11afe8598daf
connection_mode:[]
controller_burst_limit:[]
controller_queue_size:[]
controller_rate_limit:[]
enable_async_messages:[]
external_ids:{}
inactivity_probe:[]
is_connected:true
local_gateway:[]
local_ip:[]
local_netmask:[]
max_backoff:[]
other_config:{}
role:master
status:{sec_since_connect="175",state=ACTIVE}
target:"tcp:10.30.170.48:6633"
type:[]
_uuid:1968464f-4637-41c7-a481-9eba89956be9
connection_mode:[]
controller_burst_limit:[]
controller_queue_size:[]
controller_rate_limit:[]
enable_async_messages:[]
external_ids:{}
inactivity_probe:[]
is_connected:true
local_gateway:[]
local_ip:[]
local_netmask:[]
max_backoff:[]
other_config:{}
role:slave
status:{sec_since_connect="174",state=ACTIVE}
target:"tcp:10.30.170.131:6633"
type:[]</msg>
<msg time="2026-04-08T01:01:25.219169" level="INFO">${data} = {'': {'_uuid': '5bd045e7-95e2-49c7-a6be-cc2541636f0b', 'auto_attach': '[]', 'controller': {'10.30.170.131': {'_uuid': '90572501-522a-42c1-ae3d-252f978971ed', 'connection_mode': '[]', 'controller_burst...</msg>
<msg time="2026-04-08T01:01:25.219247" level="INFO">${bridegs} = {'9bcfbeed-47e0-4406-b63a-1c7efd018616': {'_uuid': '9bcfbeed-47e0-4406-b63a-1c7efd018616', 'auto_attach': '[]', 'controller': '[243fe3ab-9d09-4f6a-95c7-66f44ce44370,42dcabae-83d0-4b2e-85c3-6afd38cf9db...</msg>
<msg time="2026-04-08T01:01:25.219347" level="INFO">${controllers} = {'d41b7df8-53ff-40ff-acd4-14e5125234e4': {'_uuid': 'd41b7df8-53ff-40ff-acd4-14e5125234e4', 'connection_mode': '[]', 'controller_burst_limit': '[]', 'controller_queue_size': '[]', 'controller_rate_limi...</msg>
<var>${data}</var>
<var>${bridegs}</var>
<var>${controllers}</var>
<arg>${brstdout}</arg>
<arg>${cntlstdout}</arg>
<doc>Produces dictionary with data for future usege</doc>
<status status="PASS" start="2026-04-08T01:01:25.217979" elapsed="0.001392"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:25.219811" level="INFO">{'': {'_uuid': '5bd045e7-95e2-49c7-a6be-cc2541636f0b', 'auto_attach': '[]', 'controller': {'10.30.170.131': {'_uuid': '90572501-522a-42c1-ae3d-252f978971ed', 'connection_mode': '[]', 'controller_burst_limit': '[]', 'controller_queue_size': '[]', 'controller_rate_limit': '[]', 'enable_async_messages': '[]', 'external_ids': '{}', 'inactivity_probe': '[]', 'is_connected': True, 'local_gateway': '[]', 'local_ip': '[]', 'local_netmask': '[]', 'max_backoff': '[]', 'other_config': '{}', 'role': 'slave', 'status': '{sec_since_connect="175",state=ACTIVE}', 'target': '"tcp:10.30.170.131:6633"', 'type': '[]'}, '10.30.171.110': {'_uuid': 'b82e7dd4-18f4-4c87-9075-dd7aeb12e9e8', 'connection_mode': '[]', 'controller_burst_limit': '[]', 'controller_queue_size': '[]', 'controller_rate_limit': '[]', 'enable_async_messages': '[]', 'external_ids': '{}', 'inactivity_probe': '[]', 'is_connected': True, 'local_gateway': '[]', 'local_ip': '[]', 'local_netmask': '[]', 'max_backoff': '[]', 'other_config': '{}', 'role': 'slave', 'status': '{sec_since_connect="175",state=ACTIVE}', 'target': '"tcp:10.30.171.110:6633"', 'type': '[]'}, '10.30.170.48': {'_uuid': 'ef6c3b9f-b37d-44ed-b461-11afe8598daf', 'connection_mode': '[]', 'controller_burst_limit': '[]', 'controller_queue_size': '[]', 'controller_rate_limit': '[]', 'enable_async_messages': '[]', 'external_ids': '{}', 'inactivity_probe': '[]', 'is_connected': True, 'local_gateway': '[]', 'local_ip': '[]', 'local_netmask': '[]', 'max_backoff': '[]', 'other_config': '{}', 'role': 'master', 'status': '{sec_since_connect="175",state=ACTIVE}', 'target': '"tcp:10.30.170.48:6633"', 'type': '[]'}}, 'datapath_id': '"0000000000000001"', 'datapath_type': '""', 'datapath_version': '"&lt;unknown&gt;"', 'external_ids': '{}', 'fail_mode': 'standalone', 'flood_vlans': '[]', 'flow_tables': '{}', 'ipfix': '[]', 'mcast_snooping_enable': 'false', 'mirrors': '[]', 'name': 's1', 'netflow': '[]', 'other_config': '{datapath-id="0000000000000001",disable-in-band="true",dp-desc=s1}', 'ports': '[00da38e5-71ff-48bc-bf39-436bd14bfea5,32ff594e-effb-41a0-aa0f-1df856411422,f9c97d36-c254-491b-a311-602fd640aa36]', 'protocols': '[OpenFlow13]', 'rstp_enable': 'false', 'rstp_status': '{}', 'sflow': '[]', 'status': '{}', 'stp_enable': 'false'}}</msg>
<arg>${data}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:25.219537" elapsed="0.000370"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-08T01:01:25.220555" level="INFO">${ovs_switch_data} = {'': {'_uuid': '5bd045e7-95e2-49c7-a6be-cc2541636f0b', 'auto_attach': '[]', 'controller': {'10.30.170.131': {'_uuid': '90572501-522a-42c1-ae3d-252f978971ed', 'connection_mode': '[]', 'controller_burst...</msg>
<arg>${ovs_switch_data}</arg>
<arg>${data}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-08T01:01:25.220079" elapsed="0.000520"/>
</kw>
<return>
<value>${data}</value>
<status status="PASS" start="2026-04-08T01:01:25.220649" elapsed="0.000043"/>
</return>
<doc>Gets ovs data and parse them.</doc>
<status status="PASS" start="2026-04-08T01:01:25.077022" elapsed="0.143773"/>
</kw>
<status status="PASS" start="2026-04-08T01:01:25.076284" elapsed="0.144544"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:25.076234" elapsed="0.144623"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:01:25.221252" level="FAIL">Dictionary does not contain key 's1'.</msg>
<var>${bridge}</var>
<arg>${ovs_switch_data}</arg>
<arg>${switch}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="FAIL" start="2026-04-08T01:01:25.221007" elapsed="0.000352">Dictionary does not contain key 's1'.</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${cntls}</var>
<arg>${bridge}</arg>
<arg>controller</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:25.221531" elapsed="0.000021"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${cntl}</var>
<arg>${cntls}</arg>
<arg>${controller}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:25.221702" elapsed="0.000020"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${connected}</var>
<arg>${cntl}</arg>
<arg>is_connected</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:25.221870" elapsed="0.000020"/>
</kw>
<return>
<value>${connected}</value>
<status status="NOT RUN" start="2026-04-08T01:01:25.221933" elapsed="0.000015"/>
</return>
<kw name="Execute OvsVsctl Show Command" owner="OvsManager" type="TEARDOWN">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:01:25.224241" level="INFO">sh ovs-vsctl show</msg>
<arg>${lcmd_prefix} ovs-vsctl show</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:01:25.222533" elapsed="0.001765"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-08T01:01:25.243926" level="INFO">9a5df812-eb49-4477-a37e-2d464c02791d
    Bridge s1
        Controller "tcp:10.30.170.131:6633"
            is_connected: true
        Controller "tcp:10.30.171.110:6633"
            is_connected: true
        Controller "tcp:10.30.170.48:6633"
            is_connected: true
        fail_mode: standalone
        Port s1-eth1
            Interface s1-eth1
        Port s1-eth2
            Interface s1-eth2
        Port s1
            Interface s1
                type: internal
    Bridge s3
        Controller "tcp:10.30.170.131:6633"
            is_connected: true
        Controller "tcp:10.30.171.110:6633"
            is_connected: true
        Controller "tcp:10.30.170.48:6633"
            is_connected: true
        fail_mode: standalone
        Port s3-eth2
            Interface s3-eth2
        Port s3-eth1
            Interface s3-eth1
        Port s3
            Interface s3
                type: internal
    Bridge s2
        Controller "tcp:10.30.171.110:6633"
            is_connected: true
        Controller "tcp:10.30.170.131:6633"
            is_connected: true
        Controller "tcp:10.30.170.48:6633"
            is_connected: true
        fail_mode: standalone
        Port s2-eth1
            Interface s2-eth1
        Port s2-eth2
            Interface s2-eth2
        Port s2-eth3
            Interface s2-eth3
        Port s2
            Interface s2
                type: internal
    ovs_version: "2.17.11"
mininet&gt;</msg>
<msg time="2026-04-08T01:01:25.244035" level="INFO">${output} = 9a5df812-eb49-4477-a37e-2d464c02791d
    Bridge s1
        Controller "tcp:10.30.170.131:6633"
            is_connected: true
        Controller "tcp:10.30.171.110:6633"
            is_connected:...</msg>
<var>${output}</var>
<arg>${lprompt}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-08T01:01:25.224460" elapsed="0.019602"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:25.244503" level="INFO">9a5df812-eb49-4477-a37e-2d464c02791d
    Bridge s1
        Controller "tcp:10.30.170.131:6633"
            is_connected: true
        Controller "tcp:10.30.171.110:6633"
            is_connected: true
        Controller "tcp:10.30.170.48:6633"
            is_connected: true
        fail_mode: standalone
        Port s1-eth1
            Interface s1-eth1
        Port s1-eth2
            Interface s1-eth2
        Port s1
            Interface s1
                type: internal
    Bridge s3
        Controller "tcp:10.30.170.131:6633"
            is_connected: true
        Controller "tcp:10.30.171.110:6633"
            is_connected: true
        Controller "tcp:10.30.170.48:6633"
            is_connected: true
        fail_mode: standalone
        Port s3-eth2
            Interface s3-eth2
        Port s3-eth1
            Interface s3-eth1
        Port s3
            Interface s3
                type: internal
    Bridge s2
        Controller "tcp:10.30.171.110:6633"
            is_connected: true
        Controller "tcp:10.30.170.131:6633"
            is_connected: true
        Controller "tcp:10.30.170.48:6633"
            is_connected: true
        fail_mode: standalone
        Port s2-eth1
            Interface s2-eth1
        Port s2-eth2
            Interface s2-eth2
        Port s2-eth3
            Interface s2-eth3
        Port s2
            Interface s2
                type: internal
    ovs_version: "2.17.11"
mininet&gt;</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:25.244254" elapsed="0.000309"/>
</kw>
<doc>Executes ovs-vsctl show command and returns stdout, no check nor change is performed</doc>
<status status="PASS" start="2026-04-08T01:01:25.222221" elapsed="0.022395"/>
</kw>
<var>${connected}</var>
<arg>${switch}</arg>
<arg>${controller}</arg>
<arg>update_data=${update_data}</arg>
<doc>Return is_connected boolean value</doc>
<status status="FAIL" start="2026-04-08T01:01:25.074735" elapsed="0.169956">Dictionary does not contain key 's1'.</status>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<arg>${connected}</arg>
<arg>${False}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:25.244862" elapsed="0.000021"/>
</kw>
<arg>s1</arg>
<arg>${ODL_SYSTEM_${index}_IP}</arg>
<arg>update_data=${True}</arg>
<doc>Check if the switch is disconnected</doc>
<status status="FAIL" start="2026-04-08T01:01:25.073107" elapsed="0.171862">Dictionary does not contain key 's1'.</status>
</kw>
<msg time="2026-04-08T01:01:25.245062" level="FAIL">Keyword 'OvsManager.Should Be Disconnected' failed after retrying for 10 seconds. The last error was: Dictionary does not contain key 's1'.</msg>
<arg>10s</arg>
<arg>1s</arg>
<arg>OvsManager.Should Be Disconnected</arg>
<arg>s1</arg>
<arg>${ODL_SYSTEM_${index}_IP}</arg>
<arg>update_data=${True}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="FAIL" start="2026-04-08T01:01:14.551051" elapsed="10.694101">Keyword 'OvsManager.Should Be Disconnected' failed after retrying for 10 seconds. The last error was: Dictionary does not contain key 's1'.</status>
</kw>
<var name="${index}">1</var>
<status status="FAIL" start="2026-04-08T01:01:14.550904" elapsed="10.694373">Keyword 'OvsManager.Should Be Disconnected' failed after retrying for 10 seconds. The last error was: Dictionary does not contain key 's1'.</status>
</iter>
<var>${index}</var>
<value>@{cluster_index_list}</value>
<status status="FAIL" start="2026-04-08T01:01:14.550755" elapsed="10.694587">Keyword 'OvsManager.Should Be Disconnected' failed after retrying for 10 seconds. The last error was: Dictionary does not contain key 's1'.</status>
</for>
<doc>Check switch s1 is not connected to any controller.</doc>
<status status="FAIL" start="2026-04-08T01:01:14.271664" elapsed="10.973834">Keyword 'OvsManager.Should Be Disconnected' failed after retrying for 10 seconds. The last error was: Dictionary does not contain key 's1'.</status>
</test>
<test id="s1-s4-t40" name="Reconnect Mininet To Cluster" line="293">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-08T01:01:25.251594" elapsed="0.000221"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-08T01:01:25.251284" elapsed="0.000605"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:01:25.252948" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:01:25.252814" elapsed="0.000180"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:25.252792" elapsed="0.000225"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:01:25.257800" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:01:25.257693" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:25.257675" elapsed="0.000191"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:01:25.258896" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:01:25.258486" elapsed="0.000438"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:01:25.259407" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:01:25.259089" elapsed="0.000344"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T01:01:25.259481" elapsed="0.000032"/>
</return>
<msg time="2026-04-08T01:01:25.259637" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T01:01:25.258095" elapsed="0.001566"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:01:25.264957" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:01:25.264851" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:25.264832" elapsed="0.000191"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:01:25.266210" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:01:25.266081" elapsed="0.000175"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:25.266063" elapsed="0.000215"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:01:25.266723" level="INFO">${karaf_connection_index} = 476</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:01:25.266424" elapsed="0.000325"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:01:25.267211" level="INFO">${current_connection_index} = 495</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:01:25.266919" elapsed="0.000320"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:01:25.297974" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:01:25.267734" elapsed="0.030351"/>
</kw>
<msg time="2026-04-08T01:01:25.298285" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T01:01:25.298332" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:01:25.267400" elapsed="0.030975"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T01:01:25.335009" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "R "e "c "o "n "n "e "c "t "[C "M "i "n "i "n "e "t "[C "T "o "[C "C "l "u "s "t "e "r "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T01:01:25.298940" elapsed="0.036245"/>
</kw>
<msg time="2026-04-08T01:01:25.335416" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T01:01:25.335475" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "R "e "c "o "n "n "e "c "t "[C "M "i...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:01:25.298558" elapsed="0.036953"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:25.335832" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:01:25.335595" elapsed="0.000349"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:25.335572" elapsed="0.000401"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:25.336445" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "R "e "c "o "n "n "e "c "t "[C "M "i "n "i "n "e "t "[C "T "o "[C "C "l "u "s "t "e "r "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:25.336118" elapsed="0.000411"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:25.336836" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:01:25.336613" elapsed="0.000276"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:25.336591" elapsed="0.000321"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T01:01:25.336945" elapsed="0.000032"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:01:25.339523" elapsed="0.000185"/>
</kw>
<msg time="2026-04-08T01:01:25.339770" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:01:25.338445" elapsed="0.001456"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:25.340200" elapsed="0.000077"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:25.340541" elapsed="0.000074"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:01:25.337808" elapsed="0.003061"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T01:01:25.337255" elapsed="0.003677"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T01:01:25.265782" elapsed="0.075248"/>
</kw>
<msg time="2026-04-08T01:01:25.341122" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:01:25.341241" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "R "e "c "o "n "n "e "c "t "[C "M "i...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:01:25.265190" elapsed="0.076100"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T01:01:25.341482" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-08T01:01:25.341373" elapsed="0.000167"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:25.341353" elapsed="0.000210"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:25.342098" elapsed="0.000024"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:25.342449" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T01:01:25.342521" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T01:01:25.264519" elapsed="0.078128"/>
</kw>
<msg time="2026-04-08T01:01:25.342739" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:01:25.342806" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "R "e "c "o "n "n "e "c "t "[C "M "i...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:01:25.260030" elapsed="0.082825"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:25.343235" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:01:25.342935" elapsed="0.000367"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:25.342917" elapsed="0.000409"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T01:01:25.259887" elapsed="0.083462"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:01:25.349036" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:01:25.348928" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:25.348909" elapsed="0.000194"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:01:25.350320" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:01:25.350209" elapsed="0.000156"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:25.350189" elapsed="0.000198"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:01:25.350847" level="INFO">${karaf_connection_index} = 478</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:01:25.350534" elapsed="0.000340"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:01:25.351498" level="INFO">${current_connection_index} = 495</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:01:25.351233" elapsed="0.000292"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:01:25.384415" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:01:25.352024" elapsed="0.032525"/>
</kw>
<msg time="2026-04-08T01:01:25.384720" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T01:01:25.384767" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:01:25.351687" elapsed="0.033115"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T01:01:25.419139" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "R "e "c "o "n "n "e "c "t "[C "M "i "n "i "n "e "t "[C "T "o "[C "C "l "u "s "t "e "r "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T01:01:25.385393" elapsed="0.033908"/>
</kw>
<msg time="2026-04-08T01:01:25.419523" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T01:01:25.419587" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "R "e "c "o "n "n "e "c "t "[C "M "i...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:01:25.384998" elapsed="0.034638"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:25.420078" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:01:25.419751" elapsed="0.000430"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:25.419720" elapsed="0.000500"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:25.421123" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "R "e "c "o "n "n "e "c "t "[C "M "i "n "i "n "e "t "[C "T "o "[C "C "l "u "s "t "e "r "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:25.420423" elapsed="0.000823"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:25.421654" elapsed="0.000029"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:01:25.421344" elapsed="0.000385"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:25.421319" elapsed="0.000442"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T01:01:25.421808" elapsed="0.000042"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:01:25.424842" elapsed="0.000182"/>
</kw>
<msg time="2026-04-08T01:01:25.425086" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:01:25.423785" elapsed="0.001454"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:25.425512" elapsed="0.000073"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:25.425840" elapsed="0.000072"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:01:25.423022" elapsed="0.002998"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T01:01:25.422216" elapsed="0.003867"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T01:01:25.349884" elapsed="0.076312"/>
</kw>
<msg time="2026-04-08T01:01:25.426289" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:01:25.426332" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "R "e "c "o "n "n "e "c "t "[C "M "i...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:01:25.349297" elapsed="0.077071"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T01:01:25.426568" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-08T01:01:25.426461" elapsed="0.000164"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:25.426442" elapsed="0.000205"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 2,
close the previous connection. In any case create a new connection
to karaf console for 2, set correct prompt set and login to karaf console.
Store connection index for 2 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:25.427031" elapsed="0.000024"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:25.427372" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T01:01:25.427486" elapsed="0.000017"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T01:01:25.348558" elapsed="0.079037"/>
</kw>
<msg time="2026-04-08T01:01:25.427687" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:01:25.427730" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "R "e "c "o "n "n "e "c "t "[C "M "i...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:01:25.343619" elapsed="0.084146"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:25.428086" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:01:25.427839" elapsed="0.000299"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:25.427823" elapsed="0.000353"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T01:01:25.343475" elapsed="0.084726"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:01:25.433786" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:01:25.433677" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:25.433658" elapsed="0.000195"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:01:25.435037" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:01:25.434928" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:25.434910" elapsed="0.000195"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:01:25.435573" level="INFO">${karaf_connection_index} = 480</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:01:25.435273" elapsed="0.000327"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:01:25.436008" level="INFO">${current_connection_index} = 495</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:01:25.435761" elapsed="0.000274"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:01:25.470054" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:01:25.436602" elapsed="0.033581"/>
</kw>
<msg time="2026-04-08T01:01:25.470383" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T01:01:25.470430" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:01:25.436212" elapsed="0.034254"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T01:01:25.504743" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "R "e "c "o "n "n "e "c "t "[C "M "i "n "i "n "e "t "[C "T "o "[C "C "l "u "s "t "e "r "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T01:01:25.470998" elapsed="0.033851"/>
</kw>
<msg time="2026-04-08T01:01:25.505010" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T01:01:25.505056" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "R "e "c "o "n "n "e "c "t "[C "M "i...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:01:25.470646" elapsed="0.034445"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:25.505444" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:01:25.505198" elapsed="0.000302"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:25.505151" elapsed="0.000373"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:25.505972" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "R "e "c "o "n "n "e "c "t "[C "M "i "n "i "n "e "t "[C "T "o "[C "C "l "u "s "t "e "r "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:25.505669" elapsed="0.000374"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:25.506386" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:01:25.506112" elapsed="0.000330"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:25.506093" elapsed="0.000373"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T01:01:25.506499" elapsed="0.000032"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:01:25.509333" elapsed="0.000185"/>
</kw>
<msg time="2026-04-08T01:01:25.509580" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:01:25.508211" elapsed="0.001501"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:25.510030" elapsed="0.000074"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:25.510434" elapsed="0.000076"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:01:25.507580" elapsed="0.003044"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T01:01:25.506785" elapsed="0.003912"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T01:01:25.434626" elapsed="0.076172"/>
</kw>
<msg time="2026-04-08T01:01:25.510896" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:01:25.510947" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "R "e "c "o "n "n "e "c "t "[C "M "i...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:01:25.434003" elapsed="0.076980"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T01:01:25.511188" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-08T01:01:25.511063" elapsed="0.000185"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:25.511044" elapsed="0.000228"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 3,
close the previous connection. In any case create a new connection
to karaf console for 3, set correct prompt set and login to karaf console.
Store connection index for 3 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:25.511661" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:25.511990" elapsed="0.000023"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T01:01:25.512059" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T01:01:25.433286" elapsed="0.078903"/>
</kw>
<msg time="2026-04-08T01:01:25.512284" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:01:25.512328" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "R "e "c "o "n "n "e "c "t "[C "M "i...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:01:25.428469" elapsed="0.083895"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:25.512689" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:01:25.512439" elapsed="0.000303"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:25.512422" elapsed="0.000343"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T01:01:25.428327" elapsed="0.084460"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-08T01:01:25.259716" elapsed="0.253103"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-08T01:01:25.257334" elapsed="0.255544"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-08T01:01:25.252514" elapsed="0.260420"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:01:25.252042" elapsed="0.260937"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-08T01:01:25.246732" elapsed="0.266301"/>
</kw>
<kw name="Disconnect Cluster Mininet" owner="MininetKeywords">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:01:25.516449" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:01:25.515963" elapsed="0.000513"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:01:25.516940" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:01:25.516638" elapsed="0.000328"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T01:01:25.517009" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T01:01:25.517176" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T01:01:25.515585" elapsed="0.001617"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:01:25.517908" level="INFO">${rule} = OUTPUT -p all --source 10.30.170.48 --destination 10.30.170.192 -j DROP</msg>
<var>${rule}</var>
<arg>OUTPUT -p all --source ${ODL_SYSTEM_${index}_IP} --destination ${TOOLS_SYSTEM_IP} -j DROP</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:01:25.517557" elapsed="0.000377"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:01:25.518498" level="INFO">${command} = sudo /sbin/iptables -D OUTPUT -p all --source 10.30.170.48 --destination 10.30.170.192 -j DROP</msg>
<var>${command}</var>
<arg>'${action}'=='restore'</arg>
<arg>sudo /sbin/iptables -D ${rule}</arg>
<arg>sudo /sbin/iptables -I ${rule}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:01:25.518094" elapsed="0.000473"/>
</kw>
<kw name="Log To Console" owner="BuiltIn">
<arg>${ODL_SYSTEM_${index}_IP}</arg>
<doc>Logs the given message to the console.</doc>
<status status="PASS" start="2026-04-08T01:01:25.518760" elapsed="0.000325"/>
</kw>
<kw name="Run Command On Controller" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:25.521701" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:01:25.521409" elapsed="0.000349"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:25.521386" elapsed="0.000397"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:01:25.522223" level="INFO">index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-08T01:01:25.522361" level="INFO">${current_ssh_connection} = index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T01:01:25.521980" elapsed="0.000416"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:25.523006" level="INFO">Attempting to execute command "sudo /sbin/iptables -D OUTPUT -p all --source 10.30.170.48 --destination 10.30.170.192 -j DROP" on remote system "10.30.170.48" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:25.522604" elapsed="0.000457"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:01:25.523849" level="INFO">${conn_id} = 520</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T01:01:25.523244" elapsed="0.000631"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T01:01:25.524937" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T01:01:25.525013" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T01:01:25.524653" elapsed="0.000383"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:01:25.525215" elapsed="0.000316"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T01:01:25.526424" level="INFO">Logging into '10.30.170.48:22' as 'jenkins'.</msg>
<msg time="2026-04-08T01:01:26.177634" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 01:01:25 UTC 2026

  System load:  0.16               Processes:             121
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 7%                 IPv4 address for ens3: 10.30.170.48
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 00:58:14 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-0-builder-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T01:01:25.526055" elapsed="0.651759"/>
</kw>
<msg time="2026-04-08T01:01:26.177925" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:01:25.525703" elapsed="0.652329"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T01:01:25.524093" elapsed="0.654114"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T01:01:26.178899" level="INFO">Executing command 'sudo /sbin/iptables -D OUTPUT -p all --source 10.30.170.48 --destination 10.30.170.192 -j DROP'.</msg>
<msg time="2026-04-08T01:01:26.201667" level="INFO">Command exited with return code 1.</msg>
<msg time="2026-04-08T01:01:26.201917" level="INFO">${stdout} = </msg>
<msg time="2026-04-08T01:01:26.202014" level="INFO">${stderr} = iptables: Bad rule (does a matching rule exist in that chain?).</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T01:01:26.178553" elapsed="0.023512"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T01:01:26.202475" elapsed="0.000475"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:26.204028" level="INFO">iptables: Bad rule (does a matching rule exist in that chain?).</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:26.203409" elapsed="0.000717"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T01:01:26.204677" elapsed="0.000034"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:01:26.204331" elapsed="0.000450"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:26.204278" elapsed="0.000552"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T01:01:26.205205" elapsed="0.000060"/>
</return>
<status status="PASS" start="2026-04-08T01:01:26.204946" elapsed="0.000392"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:26.204914" elapsed="0.000476"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T01:01:26.205462" elapsed="0.000035"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:01:26.210102" elapsed="0.000236"/>
</kw>
<msg time="2026-04-08T01:01:26.210398" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:01:26.209440" elapsed="0.001069"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:26.210751" elapsed="0.000030"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:26.210982" elapsed="0.000027"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:01:26.206024" elapsed="0.005070"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T01:01:25.520751" elapsed="0.690497"/>
</kw>
<msg time="2026-04-08T01:01:26.211324" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:01:25.520009" elapsed="0.691380"/>
</kw>
<arg>${ODL_SYSTEM_${index}_IP}</arg>
<arg>cmd=${command}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-08T01:01:25.519305" elapsed="0.692195"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:01:26.212091" level="INFO">${command} = sudo /sbin/iptables -L -n</msg>
<var>${command}</var>
<arg>sudo /sbin/iptables -L -n</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:01:26.211726" elapsed="0.000401"/>
</kw>
<kw name="Run Command On Controller" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:26.215414" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:01:26.215007" elapsed="0.000487"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:26.214981" elapsed="0.000546"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:01:26.215956" level="INFO">index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-08T01:01:26.216096" level="INFO">${current_ssh_connection} = index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T01:01:26.215738" elapsed="0.000403"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:26.217025" level="INFO">Attempting to execute command "sudo /sbin/iptables -L -n" on remote system "10.30.170.48" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:26.216405" elapsed="0.000688"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:01:26.217763" level="INFO">${conn_id} = 521</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T01:01:26.217345" elapsed="0.000444"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T01:01:26.218691" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T01:01:26.218766" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T01:01:26.218413" elapsed="0.000377"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:01:26.218952" elapsed="0.000327"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T01:01:26.220106" level="INFO">Logging into '10.30.170.48:22' as 'jenkins'.</msg>
<msg time="2026-04-08T01:01:26.543603" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 01:01:25 UTC 2026

  System load:  0.16               Processes:             121
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 7%                 IPv4 address for ens3: 10.30.170.48
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 01:01:26 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-0-builder-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T01:01:26.219797" elapsed="0.324021"/>
</kw>
<msg time="2026-04-08T01:01:26.543922" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:01:26.219446" elapsed="0.324578"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T01:01:26.218006" elapsed="0.326279"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T01:01:26.544840" level="INFO">Executing command 'sudo /sbin/iptables -L -n'.</msg>
<msg time="2026-04-08T01:01:26.577613" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-08T01:01:26.577885" level="INFO">${stdout} = Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain FORWARD (policy DROP)
target     prot opt source               destination         
DOCKER-USER  all  -...</msg>
<msg time="2026-04-08T01:01:26.577995" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T01:01:26.544576" elapsed="0.033474"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T01:01:26.578508" elapsed="0.000499"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:26.580220" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:26.579494" elapsed="0.000829"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T01:01:26.580789" elapsed="0.000035"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:01:26.580508" elapsed="0.000383"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:26.580452" elapsed="0.000490"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T01:01:26.581318" elapsed="0.000062"/>
</return>
<status status="PASS" start="2026-04-08T01:01:26.581057" elapsed="0.000398"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:26.581025" elapsed="0.000488"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T01:01:26.581595" elapsed="0.000033"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:01:26.588811" elapsed="0.000153"/>
</kw>
<msg time="2026-04-08T01:01:26.589037" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:01:26.588083" elapsed="0.001027"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:26.589383" elapsed="0.000024"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:26.589556" elapsed="0.000020"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:01:26.582312" elapsed="0.007326"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T01:01:26.213979" elapsed="0.375750"/>
</kw>
<msg time="2026-04-08T01:01:26.589790" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:01:26.213210" elapsed="0.376627"/>
</kw>
<msg time="2026-04-08T01:01:26.589952" level="INFO">${output} = Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain FORWARD (policy DROP)
target     prot opt source               destination         
DOCKER-USER  all  -...</msg>
<var>${output}</var>
<arg>cmd=${command}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-08T01:01:26.212430" elapsed="0.377548"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:26.590406" level="INFO">Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain FORWARD (policy DROP)
target     prot opt source               destination         
DOCKER-USER  all  --  0.0.0.0/0            0.0.0.0/0           
DOCKER-FORWARD  all  --  0.0.0.0/0            0.0.0.0/0           

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         

Chain DOCKER (1 references)
target     prot opt source               destination         
DROP       all  --  0.0.0.0/0            0.0.0.0/0           

Chain DOCKER-BRIDGE (1 references)
target     prot opt source               destination         
DOCKER     all  --  0.0.0.0/0            0.0.0.0/0           

Chain DOCKER-CT (1 references)
target     prot opt source               destination         
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0            ctstate RELATED,ESTABLISHED

Chain DOCKER-FORWARD (1 references)
target     prot opt source               destination         
DOCKER-CT  all  --  0.0.0.0/0            0.0.0.0/0           
DOCKER-INTERNAL  all  --  0.0.0.0/0            0.0.0.0/0           
DOCKER-BRIDGE  all  --  0.0.0.0/0            0.0.0.0/0           
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           

Chain DOCKER-INTERNAL (1 references)
target     prot opt source               destination         

Chain DOCKER-USER (1 references)
target     prot opt source               destination         </msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:26.590139" elapsed="0.000321"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T01:01:25.517419" elapsed="1.073075"/>
</iter>
<iter>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:01:26.591113" level="INFO">${rule} = OUTPUT -p all --source 10.30.170.131 --destination 10.30.170.192 -j DROP</msg>
<var>${rule}</var>
<arg>OUTPUT -p all --source ${ODL_SYSTEM_${index}_IP} --destination ${TOOLS_SYSTEM_IP} -j DROP</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:01:26.590761" elapsed="0.000377"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:01:26.591703" level="INFO">${command} = sudo /sbin/iptables -D OUTPUT -p all --source 10.30.170.131 --destination 10.30.170.192 -j DROP</msg>
<var>${command}</var>
<arg>'${action}'=='restore'</arg>
<arg>sudo /sbin/iptables -D ${rule}</arg>
<arg>sudo /sbin/iptables -I ${rule}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:01:26.591320" elapsed="0.000409"/>
</kw>
<kw name="Log To Console" owner="BuiltIn">
<arg>${ODL_SYSTEM_${index}_IP}</arg>
<doc>Logs the given message to the console.</doc>
<status status="PASS" start="2026-04-08T01:01:26.591975" elapsed="0.000383"/>
</kw>
<kw name="Run Command On Controller" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:26.594574" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:01:26.594299" elapsed="0.000333"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:26.594281" elapsed="0.000376"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:01:26.594969" level="INFO">index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-08T01:01:26.595069" level="INFO">${current_ssh_connection} = index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T01:01:26.594811" elapsed="0.000285"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:26.595669" level="INFO">Attempting to execute command "sudo /sbin/iptables -D OUTPUT -p all --source 10.30.170.131 --destination 10.30.170.192 -j DROP" on remote system "10.30.170.131" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:26.595265" elapsed="0.000450"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:01:26.596273" level="INFO">${conn_id} = 522</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T01:01:26.595877" elapsed="0.000421"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T01:01:26.597200" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T01:01:26.597276" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T01:01:26.596910" elapsed="0.000390"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:01:26.597461" elapsed="0.000315"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T01:01:26.598631" level="INFO">Logging into '10.30.170.131:22' as 'jenkins'.</msg>
<msg time="2026-04-08T01:01:27.188875" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 01:01:26 UTC 2026

  System load:  0.35               Processes:             122
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 7%                 IPv4 address for ens3: 10.30.170.131
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 00:58:15 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-0-builder-1 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T01:01:26.598318" elapsed="0.590719"/>
</kw>
<msg time="2026-04-08T01:01:27.189128" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:01:26.597946" elapsed="0.591291"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T01:01:26.596518" elapsed="0.592843"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T01:01:27.189917" level="INFO">Executing command 'sudo /sbin/iptables -D OUTPUT -p all --source 10.30.170.131 --destination 10.30.170.192 -j DROP'.</msg>
<msg time="2026-04-08T01:01:27.211959" level="INFO">Command exited with return code 1.</msg>
<msg time="2026-04-08T01:01:27.212300" level="INFO">${stdout} = </msg>
<msg time="2026-04-08T01:01:27.212405" level="INFO">${stderr} = iptables: Bad rule (does a matching rule exist in that chain?).</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T01:01:27.189635" elapsed="0.022821"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T01:01:27.212839" elapsed="0.000551"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:27.214538" level="INFO">iptables: Bad rule (does a matching rule exist in that chain?).</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:27.213835" elapsed="0.000806"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T01:01:27.215112" elapsed="0.000036"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:01:27.214817" elapsed="0.000438"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:27.214765" elapsed="0.000540"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T01:01:27.215657" elapsed="0.000058"/>
</return>
<status status="PASS" start="2026-04-08T01:01:27.215424" elapsed="0.000362"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:27.215391" elapsed="0.000447"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T01:01:27.215909" elapsed="0.000030"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:01:27.223291" elapsed="0.000157"/>
</kw>
<msg time="2026-04-08T01:01:27.223493" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:01:27.222579" elapsed="0.000976"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:27.223715" elapsed="0.000022"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:27.223878" elapsed="0.000020"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:01:27.216640" elapsed="0.007318"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T01:01:26.593756" elapsed="0.630292"/>
</kw>
<msg time="2026-04-08T01:01:27.224101" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:01:26.593196" elapsed="0.630952"/>
</kw>
<arg>${ODL_SYSTEM_${index}_IP}</arg>
<arg>cmd=${command}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-08T01:01:26.592573" elapsed="0.631678"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:01:27.224693" level="INFO">${command} = sudo /sbin/iptables -L -n</msg>
<var>${command}</var>
<arg>sudo /sbin/iptables -L -n</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:01:27.224413" elapsed="0.000306"/>
</kw>
<kw name="Run Command On Controller" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:27.226872" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:01:27.226590" elapsed="0.000339"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:27.226572" elapsed="0.000381"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:01:27.227282" level="INFO">index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-08T01:01:27.227385" level="INFO">${current_ssh_connection} = index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T01:01:27.227106" elapsed="0.000306"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:27.227947" level="INFO">Attempting to execute command "sudo /sbin/iptables -L -n" on remote system "10.30.170.48" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:27.227567" elapsed="0.000427"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:01:27.228540" level="INFO">${conn_id} = 523</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T01:01:27.228150" elapsed="0.000416"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T01:01:27.229469" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T01:01:27.229546" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T01:01:27.229191" elapsed="0.000379"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:01:27.229730" elapsed="0.000316"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T01:01:27.230923" level="INFO">Logging into '10.30.170.48:22' as 'jenkins'.</msg>
<msg time="2026-04-08T01:01:27.593411" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 01:01:25 UTC 2026

  System load:  0.16               Processes:             121
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 7%                 IPv4 address for ens3: 10.30.170.48
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 01:01:26 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-0-builder-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T01:01:27.230610" elapsed="0.362944"/>
</kw>
<msg time="2026-04-08T01:01:27.593635" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:01:27.230249" elapsed="0.363467"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T01:01:27.228783" elapsed="0.365124"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T01:01:27.594417" level="INFO">Executing command 'sudo /sbin/iptables -L -n'.</msg>
<msg time="2026-04-08T01:01:27.617477" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-08T01:01:27.617769" level="INFO">${stdout} = Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain FORWARD (policy DROP)
target     prot opt source               destination         
DOCKER-USER  all  -...</msg>
<msg time="2026-04-08T01:01:27.617870" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T01:01:27.594151" elapsed="0.023770"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T01:01:27.618414" elapsed="0.000603"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:27.620137" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:27.619500" elapsed="0.000766"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T01:01:27.620767" elapsed="0.000037"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:01:27.620442" elapsed="0.000436"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:27.620390" elapsed="0.000542"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T01:01:27.621375" elapsed="0.000071"/>
</return>
<status status="PASS" start="2026-04-08T01:01:27.621061" elapsed="0.000463"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:27.621026" elapsed="0.000558"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T01:01:27.621664" elapsed="0.000032"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:01:27.627952" elapsed="0.000234"/>
</kw>
<msg time="2026-04-08T01:01:27.628248" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:01:27.627149" elapsed="0.001187"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:27.628562" elapsed="0.000030"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:27.628791" elapsed="0.000028"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:01:27.622461" elapsed="0.006442"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T01:01:27.226039" elapsed="0.402990"/>
</kw>
<msg time="2026-04-08T01:01:27.629112" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:01:27.225476" elapsed="0.403720"/>
</kw>
<msg time="2026-04-08T01:01:27.629387" level="INFO">${output} = Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain FORWARD (policy DROP)
target     prot opt source               destination         
DOCKER-USER  all  -...</msg>
<var>${output}</var>
<arg>cmd=${command}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-08T01:01:27.224924" elapsed="0.404503"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:27.629997" level="INFO">Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain FORWARD (policy DROP)
target     prot opt source               destination         
DOCKER-USER  all  --  0.0.0.0/0            0.0.0.0/0           
DOCKER-FORWARD  all  --  0.0.0.0/0            0.0.0.0/0           

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         

Chain DOCKER (1 references)
target     prot opt source               destination         
DROP       all  --  0.0.0.0/0            0.0.0.0/0           

Chain DOCKER-BRIDGE (1 references)
target     prot opt source               destination         
DOCKER     all  --  0.0.0.0/0            0.0.0.0/0           

Chain DOCKER-CT (1 references)
target     prot opt source               destination         
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0            ctstate RELATED,ESTABLISHED

Chain DOCKER-FORWARD (1 references)
target     prot opt source               destination         
DOCKER-CT  all  --  0.0.0.0/0            0.0.0.0/0           
DOCKER-INTERNAL  all  --  0.0.0.0/0            0.0.0.0/0           
DOCKER-BRIDGE  all  --  0.0.0.0/0            0.0.0.0/0           
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           

Chain DOCKER-INTERNAL (1 references)
target     prot opt source               destination         

Chain DOCKER-USER (1 references)
target     prot opt source               destination         </msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:27.629651" elapsed="0.000422"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T01:01:26.590622" elapsed="1.039498"/>
</iter>
<iter>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:01:27.631009" level="INFO">${rule} = OUTPUT -p all --source 10.30.171.110 --destination 10.30.170.192 -j DROP</msg>
<var>${rule}</var>
<arg>OUTPUT -p all --source ${ODL_SYSTEM_${index}_IP} --destination ${TOOLS_SYSTEM_IP} -j DROP</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:01:27.630515" elapsed="0.000532"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:01:27.631810" level="INFO">${command} = sudo /sbin/iptables -D OUTPUT -p all --source 10.30.171.110 --destination 10.30.170.192 -j DROP</msg>
<var>${command}</var>
<arg>'${action}'=='restore'</arg>
<arg>sudo /sbin/iptables -D ${rule}</arg>
<arg>sudo /sbin/iptables -I ${rule}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:01:27.631300" elapsed="0.000547"/>
</kw>
<kw name="Log To Console" owner="BuiltIn">
<arg>${ODL_SYSTEM_${index}_IP}</arg>
<doc>Logs the given message to the console.</doc>
<status status="PASS" start="2026-04-08T01:01:27.632214" elapsed="0.000508"/>
</kw>
<kw name="Run Command On Controller" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:27.635730" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:01:27.635455" elapsed="0.000331"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:27.635436" elapsed="0.000374"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:01:27.636125" level="INFO">index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-08T01:01:27.636245" level="INFO">${current_ssh_connection} = index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T01:01:27.635962" elapsed="0.000309"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:27.636808" level="INFO">Attempting to execute command "sudo /sbin/iptables -D OUTPUT -p all --source 10.30.171.110 --destination 10.30.170.192 -j DROP" on remote system "10.30.171.110" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:27.636421" elapsed="0.000435"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:01:27.637438" level="INFO">${conn_id} = 524</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T01:01:27.637011" elapsed="0.000453"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T01:01:27.638598" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T01:01:27.638674" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T01:01:27.638309" elapsed="0.000389"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:01:27.638858" elapsed="0.000333"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T01:01:27.640034" level="INFO">Logging into '10.30.171.110:22' as 'jenkins'.</msg>
<msg time="2026-04-08T01:01:28.212238" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 01:01:27 UTC 2026

  System load:  0.27               Processes:             120
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 7%                 IPv4 address for ens3: 10.30.171.110
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 00:58:16 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T01:01:27.639721" elapsed="0.572678"/>
</kw>
<msg time="2026-04-08T01:01:28.212487" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:01:27.639364" elapsed="0.573209"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T01:01:27.637686" elapsed="0.575005"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T01:01:28.213212" level="INFO">Executing command 'sudo /sbin/iptables -D OUTPUT -p all --source 10.30.171.110 --destination 10.30.170.192 -j DROP'.</msg>
<msg time="2026-04-08T01:01:28.235758" level="INFO">Command exited with return code 1.</msg>
<msg time="2026-04-08T01:01:28.236027" level="INFO">${stdout} = </msg>
<msg time="2026-04-08T01:01:28.236193" level="INFO">${stderr} = iptables: Bad rule (does a matching rule exist in that chain?).</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T01:01:28.212942" elapsed="0.023311"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T01:01:28.236664" elapsed="0.000535"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:28.238293" level="INFO">iptables: Bad rule (does a matching rule exist in that chain?).</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:28.237639" elapsed="0.000755"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T01:01:28.238860" elapsed="0.000035"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:01:28.238566" elapsed="0.000397"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:28.238516" elapsed="0.000496"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T01:01:28.239399" elapsed="0.000065"/>
</return>
<status status="PASS" start="2026-04-08T01:01:28.239132" elapsed="0.000404"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:28.239099" elapsed="0.000490"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T01:01:28.239663" elapsed="0.000031"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:01:28.245854" elapsed="0.000247"/>
</kw>
<msg time="2026-04-08T01:01:28.246146" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:01:28.245243" elapsed="0.000987"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:28.246396" elapsed="0.000021"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:28.246559" elapsed="0.000020"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:01:28.240440" elapsed="0.006201"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T01:01:27.634909" elapsed="0.611822"/>
</kw>
<msg time="2026-04-08T01:01:28.246785" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:01:27.633864" elapsed="0.612968"/>
</kw>
<arg>${ODL_SYSTEM_${index}_IP}</arg>
<arg>cmd=${command}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-08T01:01:27.633014" elapsed="0.613899"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:01:28.247354" level="INFO">${command} = sudo /sbin/iptables -L -n</msg>
<var>${command}</var>
<arg>sudo /sbin/iptables -L -n</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:01:28.247072" elapsed="0.000307"/>
</kw>
<kw name="Run Command On Controller" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:28.249576" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:01:28.249297" elapsed="0.000335"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:28.249279" elapsed="0.000377"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:01:28.249965" level="INFO">index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-08T01:01:28.250065" level="INFO">${current_ssh_connection} = index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T01:01:28.249805" elapsed="0.000287"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:28.250635" level="INFO">Attempting to execute command "sudo /sbin/iptables -L -n" on remote system "10.30.170.48" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:28.250259" elapsed="0.000424"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:01:28.251459" level="INFO">${conn_id} = 525</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T01:01:28.250838" elapsed="0.000648"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T01:01:28.252440" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T01:01:28.252518" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T01:01:28.252133" elapsed="0.000409"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:01:28.252702" elapsed="0.000315"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T01:01:28.253870" level="INFO">Logging into '10.30.170.48:22' as 'jenkins'.</msg>
<msg time="2026-04-08T01:01:28.572552" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 01:01:25 UTC 2026

  System load:  0.16               Processes:             121
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 7%                 IPv4 address for ens3: 10.30.170.48
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 01:01:27 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-0-builder-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T01:01:28.253558" elapsed="0.319124"/>
</kw>
<msg time="2026-04-08T01:01:28.572760" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:01:28.253203" elapsed="0.319633"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T01:01:28.251706" elapsed="0.321237"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T01:01:28.573534" level="INFO">Executing command 'sudo /sbin/iptables -L -n'.</msg>
<msg time="2026-04-08T01:01:28.596123" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-08T01:01:28.596426" level="INFO">${stdout} = Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain FORWARD (policy DROP)
target     prot opt source               destination         
DOCKER-USER  all  -...</msg>
<msg time="2026-04-08T01:01:28.596535" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T01:01:28.573292" elapsed="0.023298"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T01:01:28.596988" elapsed="0.000518"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:28.598645" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:28.597954" elapsed="0.000790"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T01:01:28.599265" elapsed="0.000039"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:01:28.598925" elapsed="0.000481"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:28.598872" elapsed="0.000591"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T01:01:28.599843" elapsed="0.000062"/>
</return>
<status status="PASS" start="2026-04-08T01:01:28.599591" elapsed="0.000390"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:28.599555" elapsed="0.000482"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T01:01:28.600115" elapsed="0.000033"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:01:28.607848" elapsed="0.000154"/>
</kw>
<msg time="2026-04-08T01:01:28.608045" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:01:28.606749" elapsed="0.001357"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:28.608283" elapsed="0.000022"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:28.608459" elapsed="0.000021"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:01:28.600899" elapsed="0.007642"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T01:01:28.248756" elapsed="0.359875"/>
</kw>
<msg time="2026-04-08T01:01:28.608691" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:01:28.248150" elapsed="0.360587"/>
</kw>
<msg time="2026-04-08T01:01:28.608849" level="INFO">${output} = Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain FORWARD (policy DROP)
target     prot opt source               destination         
DOCKER-USER  all  -...</msg>
<var>${output}</var>
<arg>cmd=${command}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-08T01:01:28.247579" elapsed="0.361297"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:28.609300" level="INFO">Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain FORWARD (policy DROP)
target     prot opt source               destination         
DOCKER-USER  all  --  0.0.0.0/0            0.0.0.0/0           
DOCKER-FORWARD  all  --  0.0.0.0/0            0.0.0.0/0           

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         

Chain DOCKER (1 references)
target     prot opt source               destination         
DROP       all  --  0.0.0.0/0            0.0.0.0/0           

Chain DOCKER-BRIDGE (1 references)
target     prot opt source               destination         
DOCKER     all  --  0.0.0.0/0            0.0.0.0/0           

Chain DOCKER-CT (1 references)
target     prot opt source               destination         
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0            ctstate RELATED,ESTABLISHED

Chain DOCKER-FORWARD (1 references)
target     prot opt source               destination         
DOCKER-CT  all  --  0.0.0.0/0            0.0.0.0/0           
DOCKER-INTERNAL  all  --  0.0.0.0/0            0.0.0.0/0           
DOCKER-BRIDGE  all  --  0.0.0.0/0            0.0.0.0/0           
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           

Chain DOCKER-INTERNAL (1 references)
target     prot opt source               destination         

Chain DOCKER-USER (1 references)
target     prot opt source               destination         </msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:28.609033" elapsed="0.000321"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T01:01:27.630321" elapsed="0.979066"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-08T01:01:25.517257" elapsed="3.092169"/>
</for>
<arg>restore</arg>
<doc>Break and restore controller to mininet connection via iptables.</doc>
<status status="PASS" start="2026-04-08T01:01:25.513331" elapsed="3.096155"/>
</kw>
<doc>Reconnect mininet to cluster by removing Iptables drop rules that were used to disconnect</doc>
<status status="PASS" start="2026-04-08T01:01:25.246079" elapsed="3.363524"/>
</test>
<test id="s1-s4-t41" name="Check Linear Topology After Mininet Reconnects" line="297">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-08T01:01:28.613368" elapsed="0.000206"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-08T01:01:28.613086" elapsed="0.000542"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:01:28.614786" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:01:28.614675" elapsed="0.000156"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:28.614657" elapsed="0.000196"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:01:28.619728" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:01:28.619622" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:28.619604" elapsed="0.000190"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:01:28.620791" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:01:28.620411" elapsed="0.000407"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:01:28.621334" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:01:28.620979" elapsed="0.000382"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T01:01:28.621406" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T01:01:28.621558" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T01:01:28.620017" elapsed="0.001565"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:01:28.626935" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:01:28.626829" elapsed="0.000150"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:28.626809" elapsed="0.000191"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:01:28.628218" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:01:28.628087" elapsed="0.000177"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:28.628069" elapsed="0.000217"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:01:28.628751" level="INFO">${karaf_connection_index} = 476</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:01:28.628435" elapsed="0.000344"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:01:28.629223" level="INFO">${current_connection_index} = 495</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:01:28.628941" elapsed="0.000309"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:01:28.665991" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:01:28.629755" elapsed="0.036386"/>
</kw>
<msg time="2026-04-08T01:01:28.666403" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T01:01:28.666470" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:01:28.629414" elapsed="0.037105"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T01:01:28.719883" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "L "i "n "e "a "r "[C "T "o "p "o "l "o "g "y "[C "A "f "t "e "r "[C "M "i "n "i "n "e "t "[C "R "e "c "o "n "n "e "c "t "s "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T01:01:28.667314" elapsed="0.052739"/>
</kw>
<msg time="2026-04-08T01:01:28.720328" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T01:01:28.720398" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "L "i "n "e "a "r...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:01:28.666766" elapsed="0.053685"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:28.720917" elapsed="0.000035"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:01:28.720573" elapsed="0.000427"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:28.720540" elapsed="0.000495"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:28.721722" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "L "i "n "e "a "r "[C "T "o "p "o "l "o "g "y "[C "A "f "t "e "r "[C "M "i "n "i "n "e "t "[C "R "e "c "o "n "n "e "c "t "s "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:28.721274" elapsed="0.000559"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:28.722282" elapsed="0.000033"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:01:28.721932" elapsed="0.000485"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:28.721905" elapsed="0.000551"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T01:01:28.722505" elapsed="0.000043"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:01:28.726236" elapsed="0.000269"/>
</kw>
<msg time="2026-04-08T01:01:28.726596" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:01:28.724662" elapsed="0.002122"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:28.727232" elapsed="0.000110"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:28.727722" elapsed="0.000107"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:01:28.723737" elapsed="0.004249"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T01:01:28.722911" elapsed="0.005169"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T01:01:28.627785" elapsed="0.100467"/>
</kw>
<msg time="2026-04-08T01:01:28.728389" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:01:28.728453" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "L "i "n "e "a "r...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:01:28.627152" elapsed="0.101353"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T01:01:28.728785" elapsed="0.000049"/>
</return>
<status status="PASS" start="2026-04-08T01:01:28.728619" elapsed="0.000278"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:28.728591" elapsed="0.000354"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:28.729591" elapsed="0.000037"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:28.730084" elapsed="0.000034"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T01:01:28.730210" elapsed="0.000025"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T01:01:28.626497" elapsed="0.103877"/>
</kw>
<msg time="2026-04-08T01:01:28.730518" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:01:28.730581" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "L "i "n "e "a "r...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:01:28.621956" elapsed="0.108678"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:28.731124" elapsed="0.000183"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:01:28.730746" elapsed="0.000617"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:28.730720" elapsed="0.000690"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T01:01:28.621812" elapsed="0.109640"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:01:28.736978" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:01:28.736869" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:28.736850" elapsed="0.000196"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:01:28.738234" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:01:28.738099" elapsed="0.000181"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:28.738080" elapsed="0.000223"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:01:28.738773" level="INFO">${karaf_connection_index} = 478</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:01:28.738469" elapsed="0.000330"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:01:28.739280" level="INFO">${current_connection_index} = 495</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:01:28.738965" elapsed="0.000342"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:01:28.772801" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:01:28.739828" elapsed="0.033260"/>
</kw>
<msg time="2026-04-08T01:01:28.773418" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T01:01:28.773485" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:01:28.739484" elapsed="0.034204"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T01:01:28.818462" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "L "i "n "e "a "r "[C "T "o "p "o "l "o "g "y "[C "A "f "t "e "r "[C "M "i "n "i "n "e "t "[C "R "e "c "o "n "n "e "c "t "s "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T01:01:28.774708" elapsed="0.043945"/>
</kw>
<msg time="2026-04-08T01:01:28.818870" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T01:01:28.818923" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "L "i "n "e "a "r...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:01:28.774052" elapsed="0.044938"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:28.819500" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:01:28.819124" elapsed="0.000438"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:28.819084" elapsed="0.000510"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:28.820131" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "L "i "n "e "a "r "[C "T "o "p "o "l "o "g "y "[C "A "f "t "e "r "[C "M "i "n "i "n "e "t "[C "R "e "c "o "n "n "e "c "t "s "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:28.819752" elapsed="0.000480"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:28.820908" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:01:28.820669" elapsed="0.000298"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:28.820284" elapsed="0.000707"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T01:01:28.821031" elapsed="0.000044"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:01:28.823974" elapsed="0.000218"/>
</kw>
<msg time="2026-04-08T01:01:28.824259" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:01:28.822714" elapsed="0.001681"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:28.824676" elapsed="0.000075"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:28.825013" elapsed="0.000073"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:01:28.822027" elapsed="0.003190"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T01:01:28.821411" elapsed="0.003875"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T01:01:28.737798" elapsed="0.087587"/>
</kw>
<msg time="2026-04-08T01:01:28.825481" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:01:28.825528" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "L "i "n "e "a "r...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:01:28.737219" elapsed="0.088353"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T01:01:28.825794" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-08T01:01:28.825670" elapsed="0.000183"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:28.825647" elapsed="0.000231"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 2,
close the previous connection. In any case create a new connection
to karaf console for 2, set correct prompt set and login to karaf console.
Store connection index for 2 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:28.826307" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:28.826683" elapsed="0.000028"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T01:01:28.826760" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T01:01:28.736523" elapsed="0.090344"/>
</kw>
<msg time="2026-04-08T01:01:28.827029" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:01:28.827090" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "L "i "n "e "a "r...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:01:28.731792" elapsed="0.095339"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:28.827555" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:01:28.827237" elapsed="0.000373"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:28.827217" elapsed="0.000417"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T01:01:28.731640" elapsed="0.096018"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:01:28.833271" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:01:28.833142" elapsed="0.000175"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:28.833123" elapsed="0.000216"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:01:28.834482" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:01:28.834373" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:28.834355" elapsed="0.000194"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:01:28.835025" level="INFO">${karaf_connection_index} = 480</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:01:28.834702" elapsed="0.000351"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:01:28.835485" level="INFO">${current_connection_index} = 495</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:01:28.835233" elapsed="0.000279"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:01:28.867705" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:01:28.836012" elapsed="0.031863"/>
</kw>
<msg time="2026-04-08T01:01:28.868084" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T01:01:28.868132" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:01:28.835674" elapsed="0.032516"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T01:01:28.911844" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "L "i "n "e "a "r "[C "T "o "p "o "l "o "g "y "[C "A "f "t "e "r "[C "M "i "n "i "n "e "t "[C "R "e "c "o "n "n "e "c "t "s "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T01:01:28.868873" elapsed="0.043086"/>
</kw>
<msg time="2026-04-08T01:01:28.912118" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T01:01:28.912185" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "L "i "n "e "a "r...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:01:28.868434" elapsed="0.043789"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:28.912575" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:01:28.912321" elapsed="0.000309"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:28.912294" elapsed="0.000363"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:28.913111" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "L "i "n "e "a "r "[C "T "o "p "o "l "o "g "y "[C "A "f "t "e "r "[C "M "i "n "i "n "e "t "[C "R "e "c "o "n "n "e "c "t "s "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:28.912806" elapsed="0.000402"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:28.913497" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:01:28.913277" elapsed="0.000274"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:28.913259" elapsed="0.000314"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T01:01:28.913609" elapsed="0.000041"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:01:28.916732" elapsed="0.000188"/>
</kw>
<msg time="2026-04-08T01:01:28.916981" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:01:28.915544" elapsed="0.001574"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:28.917421" elapsed="0.000079"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:28.917758" elapsed="0.000074"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:01:28.914877" elapsed="0.003065"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T01:01:28.913941" elapsed="0.004069"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T01:01:28.834053" elapsed="0.084058"/>
</kw>
<msg time="2026-04-08T01:01:28.918291" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:01:28.918336" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "L "i "n "e "a "r...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:01:28.833494" elapsed="0.084877"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T01:01:28.918557" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-08T01:01:28.918450" elapsed="0.000166"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:28.918431" elapsed="0.000209"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 3,
close the previous connection. In any case create a new connection
to karaf console for 3, set correct prompt set and login to karaf console.
Store connection index for 3 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:28.919061" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:28.919417" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T01:01:28.919489" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T01:01:28.832787" elapsed="0.086813"/>
</kw>
<msg time="2026-04-08T01:01:28.919696" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:01:28.919741" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "L "i "n "e "a "r...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:01:28.827952" elapsed="0.091824"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:28.920104" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:01:28.919853" elapsed="0.000318"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:28.919836" elapsed="0.000360"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T01:01:28.827801" elapsed="0.092418"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-08T01:01:28.621638" elapsed="0.298619"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-08T01:01:28.619237" elapsed="0.301081"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-08T01:01:28.614381" elapsed="0.305997"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:01:28.613819" elapsed="0.306607"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-08T01:01:28.610708" elapsed="0.309776"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Check Linear Topology On Member" owner="ClusterOpenFlow">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:01:28.922460" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:01:28.922143" elapsed="0.000344"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T01:01:28.922531" elapsed="0.000031"/>
</return>
<msg time="2026-04-08T01:01:28.922678" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T01:01:28.921791" elapsed="0.000913"/>
</kw>
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T01:01:28.936492" level="INFO">GET Request : url=http://10.30.170.48:8181/rests/data/network-topology:network-topology?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01s3bfo0y24i1es90l47mavglv0.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T01:01:28.936999" level="INFO">GET Response : url=http://10.30.170.48:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '2973'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}} 
 </msg>
<msg time="2026-04-08T01:01:28.937407" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${RFC8040_OPERATIONAL_TOPO_API}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T01:01:28.922876" elapsed="0.014592"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:28.943958" level="INFO">{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}}</msg>
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:28.937893" elapsed="0.006161"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"node-id":"openflow:${switch}"</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-08T01:01:28.947920" elapsed="0.004662"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-08T01:01:28.952880" elapsed="0.003579"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-08T01:01:28.956647" elapsed="0.002524"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-08T01:01:28.959357" elapsed="0.002479"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-08T01:01:28.962089" elapsed="0.002524"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:01:28.965284" level="INFO">${edge} = True</msg>
<var>${edge}</var>
<arg>${switch}==1 or ${switch}==${switches}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:01:28.964804" elapsed="0.000508"/>
</kw>
<if>
<branch type="IF" condition="not ${edge}">
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:3"</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:28.965642" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:01:28.965401" elapsed="0.000299"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:28.965374" elapsed="0.000357"/>
</if>
<if>
<branch type="IF" condition="not ${edge}">
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:3"</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:28.966011" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:01:28.965786" elapsed="0.000284"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:28.965771" elapsed="0.000330"/>
</if>
<if>
<branch type="IF" condition="not ${edge}">
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:3</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:28.966410" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:01:28.966176" elapsed="0.000292"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:28.966144" elapsed="0.000347"/>
</if>
<var name="${switch}">1</var>
<status status="PASS" start="2026-04-08T01:01:28.947654" elapsed="0.018860"/>
</iter>
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"node-id":"openflow:${switch}"</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-08T01:01:28.966931" elapsed="0.002576"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-08T01:01:28.969688" elapsed="0.002525"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-08T01:01:28.972396" elapsed="0.002491"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-08T01:01:28.975070" elapsed="0.002503"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-08T01:01:28.977754" elapsed="0.002583"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:01:28.981028" level="INFO">${edge} = False</msg>
<var>${edge}</var>
<arg>${switch}==1 or ${switch}==${switches}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:01:28.980585" elapsed="0.000470"/>
</kw>
<if>
<branch type="IF" condition="not ${edge}">
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:3"</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-08T01:01:28.981376" elapsed="0.002510"/>
</kw>
<status status="PASS" start="2026-04-08T01:01:28.981126" elapsed="0.002801"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:28.981108" elapsed="0.002845"/>
</if>
<if>
<branch type="IF" condition="not ${edge}">
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:3"</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-08T01:01:28.984258" elapsed="0.002502"/>
</kw>
<status status="PASS" start="2026-04-08T01:01:28.984009" elapsed="0.002793"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:28.983992" elapsed="0.002835"/>
</if>
<if>
<branch type="IF" condition="not ${edge}">
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:3</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-08T01:01:28.987121" elapsed="0.002508"/>
</kw>
<status status="PASS" start="2026-04-08T01:01:28.986883" elapsed="0.002787"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:28.986866" elapsed="0.002829"/>
</if>
<var name="${switch}">2</var>
<status status="PASS" start="2026-04-08T01:01:28.966772" elapsed="0.022947"/>
</iter>
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"node-id":"openflow:${switch}"</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-08T01:01:28.990100" elapsed="0.003031"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-08T01:01:28.993401" elapsed="0.003417"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-08T01:01:28.997044" elapsed="0.003475"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-08T01:01:29.000770" elapsed="0.003470"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-08T01:01:29.004496" elapsed="0.003779"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:01:29.009130" level="INFO">${edge} = True</msg>
<var>${edge}</var>
<arg>${switch}==1 or ${switch}==${switches}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:01:29.008513" elapsed="0.000675"/>
</kw>
<if>
<branch type="IF" condition="not ${edge}">
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:3"</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:29.009633" elapsed="0.000029"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:01:29.009304" elapsed="0.000406"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:29.009270" elapsed="0.000476"/>
</if>
<if>
<branch type="IF" condition="not ${edge}">
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:3"</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:29.010139" elapsed="0.000046"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:01:29.009824" elapsed="0.000408"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:29.009802" elapsed="0.000459"/>
</if>
<if>
<branch type="IF" condition="not ${edge}">
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:3</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:29.010551" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:01:29.010317" elapsed="0.000290"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:29.010302" elapsed="0.000348"/>
</if>
<var name="${switch}">3</var>
<status status="PASS" start="2026-04-08T01:01:28.989928" elapsed="0.020749"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="PASS" start="2026-04-08T01:01:28.944141" elapsed="0.066572"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check Linear topology.</doc>
<status status="PASS" start="2026-04-08T01:01:28.921404" elapsed="0.089389"/>
</kw>
<arg>10s</arg>
<arg>1s</arg>
<arg>ClusterOpenFlow.Check Linear Topology On Member</arg>
<arg>${SWITCHES}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-08T01:01:28.920669" elapsed="0.090179"/>
</kw>
<doc>Check Linear Topology.</doc>
<status status="PASS" start="2026-04-08T01:01:28.609832" elapsed="0.401154"/>
</test>
<test id="s1-s4-t42" name="Add Flows And Groups After Mininet Reconnects" line="301">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-08T01:01:29.014441" elapsed="0.000284"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-08T01:01:29.014150" elapsed="0.000635"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:01:29.015839" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:01:29.015721" elapsed="0.000168"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:29.015702" elapsed="0.000209"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:01:29.020772" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:01:29.020665" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:29.020646" elapsed="0.000195"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:01:29.022072" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:01:29.021666" elapsed="0.000433"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:01:29.022594" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:01:29.022290" elapsed="0.000347"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T01:01:29.022771" elapsed="0.000041"/>
</return>
<msg time="2026-04-08T01:01:29.022943" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T01:01:29.021079" elapsed="0.001889"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:01:29.028679" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:01:29.028458" elapsed="0.000270"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:29.028439" elapsed="0.000312"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:01:29.029946" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:01:29.029837" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:29.029818" elapsed="0.000195"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:01:29.030490" level="INFO">${karaf_connection_index} = 476</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:01:29.030187" elapsed="0.000330"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:01:29.030968" level="INFO">${current_connection_index} = 495</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:01:29.030705" elapsed="0.000289"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:01:29.064398" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:01:29.031516" elapsed="0.032986"/>
</kw>
<msg time="2026-04-08T01:01:29.064678" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T01:01:29.064726" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:01:29.031173" elapsed="0.033589"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T01:01:29.113437" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "A "d "d "[C "F "l "o "w "s "[C "A "n "d "[C "G "r "o "u "p "s "[C "A "f "t "e "r "[C "M "i "n "i "n "e "t "[C "R "e "c "o "n "n "e "c "t "s "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T01:01:29.065328" elapsed="0.048233"/>
</kw>
<msg time="2026-04-08T01:01:29.113731" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T01:01:29.113780" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "A "d "d "[C "F "l "o "w "s "[C "A "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:01:29.064940" elapsed="0.048877"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:29.114183" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:01:29.113907" elapsed="0.000337"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:29.113883" elapsed="0.000388"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:29.114783" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "A "d "d "[C "F "l "o "w "s "[C "A "n "d "[C "G "r "o "u "p "s "[C "A "f "t "e "r "[C "M "i "n "i "n "e "t "[C "R "e "c "o "n "n "e "c "t "s "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:29.114424" elapsed="0.000436"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:29.115175" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:01:29.114931" elapsed="0.000302"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:29.114912" elapsed="0.000345"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T01:01:29.115291" elapsed="0.000034"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:01:29.117861" elapsed="0.000187"/>
</kw>
<msg time="2026-04-08T01:01:29.118110" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:01:29.116821" elapsed="0.001599"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:29.118718" elapsed="0.000075"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:29.119049" elapsed="0.000074"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:01:29.116188" elapsed="0.003069"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T01:01:29.115604" elapsed="0.003720"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T01:01:29.029533" elapsed="0.089943"/>
</kw>
<msg time="2026-04-08T01:01:29.119571" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:01:29.119616" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "A "d "d "[C "F "l "o "w "s "[C "A "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:01:29.028906" elapsed="0.090746"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T01:01:29.119840" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-08T01:01:29.119730" elapsed="0.000168"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:29.119711" elapsed="0.000211"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:29.120350" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:29.120695" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T01:01:29.120766" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T01:01:29.028102" elapsed="0.092772"/>
</kw>
<msg time="2026-04-08T01:01:29.120970" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:01:29.121015" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "A "d "d "[C "F "l "o "w "s "[C "A "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:01:29.023378" elapsed="0.097672"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:29.121396" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:01:29.121126" elapsed="0.000324"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:29.121109" elapsed="0.000364"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T01:01:29.023232" elapsed="0.098264"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:01:29.127325" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:01:29.127116" elapsed="0.000255"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:29.127096" elapsed="0.000296"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:01:29.128549" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:01:29.128441" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:29.128423" elapsed="0.000195"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:01:29.129068" level="INFO">${karaf_connection_index} = 478</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:01:29.128764" elapsed="0.000331"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:01:29.129526" level="INFO">${current_connection_index} = 495</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:01:29.129274" elapsed="0.000278"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:01:29.161598" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:01:29.130054" elapsed="0.031643"/>
</kw>
<msg time="2026-04-08T01:01:29.161857" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T01:01:29.161904" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:01:29.129715" elapsed="0.032225"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T01:01:29.204490" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "A "d "d "[C "F "l "o "w "s "[C "A "n "d "[C "G "r "o "u "p "s "[C "A "f "t "e "r "[C "M "i "n "i "n "e "t "[C "R "e "c "o "n "n "e "c "t "s "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T01:01:29.162506" elapsed="0.042097"/>
</kw>
<msg time="2026-04-08T01:01:29.204763" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T01:01:29.204810" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "A "d "d "[C "F "l "o "w "s "[C "A "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:01:29.162113" elapsed="0.042732"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:29.205215" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:01:29.204961" elapsed="0.000312"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:29.204939" elapsed="0.000358"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:29.205745" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "A "d "d "[C "F "l "o "w "s "[C "A "n "d "[C "G "r "o "u "p "s "[C "A "f "t "e "r "[C "M "i "n "i "n "e "t "[C "R "e "c "o "n "n "e "c "t "s "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:29.205439" elapsed="0.000380"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:29.206107" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:01:29.205887" elapsed="0.000290"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:29.205869" elapsed="0.000334"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T01:01:29.206236" elapsed="0.000028"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:01:29.208747" elapsed="0.000183"/>
</kw>
<msg time="2026-04-08T01:01:29.208990" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:01:29.207681" elapsed="0.001437"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:29.209406" elapsed="0.000074"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:29.209737" elapsed="0.000072"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:01:29.207048" elapsed="0.002868"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T01:01:29.206509" elapsed="0.003471"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T01:01:29.128114" elapsed="0.081963"/>
</kw>
<msg time="2026-04-08T01:01:29.210189" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:01:29.210235" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "A "d "d "[C "F "l "o "w "s "[C "A "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:01:29.127547" elapsed="0.082750"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T01:01:29.210484" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-08T01:01:29.210378" elapsed="0.000164"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:29.210357" elapsed="0.000208"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 2,
close the previous connection. In any case create a new connection
to karaf console for 2, set correct prompt set and login to karaf console.
Store connection index for 2 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:29.210947" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:29.211296" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T01:01:29.211368" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T01:01:29.126622" elapsed="0.084850"/>
</kw>
<msg time="2026-04-08T01:01:29.211564" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:01:29.211608" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "A "d "d "[C "F "l "o "w "s "[C "A "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:01:29.121789" elapsed="0.089855"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:29.211967" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:01:29.211718" elapsed="0.000301"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:29.211701" elapsed="0.000341"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T01:01:29.121629" elapsed="0.090436"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:01:29.217696" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:01:29.217588" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:29.217569" elapsed="0.000195"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:01:29.218935" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:01:29.218827" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:29.218809" elapsed="0.000193"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:01:29.219532" level="INFO">${karaf_connection_index} = 480</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:01:29.219230" elapsed="0.000329"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:01:29.219971" level="INFO">${current_connection_index} = 495</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:01:29.219721" elapsed="0.000277"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:01:29.259688" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:01:29.220562" elapsed="0.039227"/>
</kw>
<msg time="2026-04-08T01:01:29.259948" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T01:01:29.259995" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:01:29.220219" elapsed="0.039811"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T01:01:29.309358" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "A "d "d "[C "F "l "o "w "s "[C "A "n "d "[C "G "r "o "u "p "s "[C "A "f "t "e "r "[C "M "i "n "i "n "e "t "[C "R "e "c "o "n "n "e "c "t "s "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T01:01:29.260574" elapsed="0.048895"/>
</kw>
<msg time="2026-04-08T01:01:29.309628" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T01:01:29.309674" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "A "d "d "[C "F "l "o "w "s "[C "A "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:01:29.260229" elapsed="0.049481"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:29.310019" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:01:29.309791" elapsed="0.000282"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:29.309769" elapsed="0.000343"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:29.310578" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "A "d "d "[C "F "l "o "w "s "[C "A "n "d "[C "G "r "o "u "p "s "[C "A "f "t "e "r "[C "M "i "n "i "n "e "t "[C "R "e "c "o "n "n "e "c "t "s "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:29.310280" elapsed="0.000372"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:29.310939" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:01:29.310719" elapsed="0.000274"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:29.310701" elapsed="0.000316"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T01:01:29.311049" elapsed="0.000028"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:01:29.313523" elapsed="0.000188"/>
</kw>
<msg time="2026-04-08T01:01:29.313771" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:01:29.312489" elapsed="0.001408"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:29.314202" elapsed="0.000075"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:29.314530" elapsed="0.000072"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:01:29.311862" elapsed="0.002851"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T01:01:29.311331" elapsed="0.003446"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T01:01:29.218525" elapsed="0.096348"/>
</kw>
<msg time="2026-04-08T01:01:29.314964" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:01:29.315008" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "A "d "d "[C "F "l "o "w "s "[C "A "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:01:29.217917" elapsed="0.097127"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T01:01:29.315250" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-08T01:01:29.315120" elapsed="0.000188"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:29.315102" elapsed="0.000231"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 3,
close the previous connection. In any case create a new connection
to karaf console for 3, set correct prompt set and login to karaf console.
Store connection index for 3 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:29.315714" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:29.316081" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T01:01:29.316152" elapsed="0.000031"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T01:01:29.217245" elapsed="0.099031"/>
</kw>
<msg time="2026-04-08T01:01:29.316368" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:01:29.316412" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "A "d "d "[C "F "l "o "w "s "[C "A "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:01:29.212343" elapsed="0.104103"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:29.316770" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:01:29.316519" elapsed="0.000304"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:29.316503" elapsed="0.000344"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T01:01:29.212202" elapsed="0.104667"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-08T01:01:29.023028" elapsed="0.293872"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-08T01:01:29.020299" elapsed="0.296658"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-08T01:01:29.015427" elapsed="0.301588"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:01:29.014951" elapsed="0.302110"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-08T01:01:29.012003" elapsed="0.305112"/>
</kw>
<kw name="Add Single Group And Flow On Member">
<kw name="Add Groups And Flows On Member">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:01:29.318947" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:01:29.318431" elapsed="0.000543"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T01:01:29.319021" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T01:01:29.319197" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T01:01:29.318035" elapsed="0.001189"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-08T01:01:29.322200" level="INFO">&amp;{mapping} = { NODE=openflow:1 }</msg>
<var>&amp;{mapping}</var>
<arg>NODE=openflow:${switch}</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-08T01:01:29.321697" elapsed="0.000532"/>
</kw>
<kw name="Post_As_Json_Templated" owner="TemplatedRequests">
<kw name="Post_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:01:29.365151" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1.vanadium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:01:29.364774" elapsed="0.000421"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T01:01:29.366059" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-1.vanadium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T01:01:29.365700" elapsed="0.000445">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-1.vanadium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-08T01:01:29.366266" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T01:01:29.365362" elapsed="0.000930"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:01:29.366851" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:01:29.366461" elapsed="0.000418"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T01:01:29.367198" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-1/location.uri"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-1/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-08T01:01:29.367364" level="INFO">${template} = /rests/data/opendaylight-inventory:nodes/node=$NODE
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T01:01:29.367042" elapsed="0.000348"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:29.367795" level="INFO">/rests/data/opendaylight-inventory:nodes/node=$NODE
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:29.367550" elapsed="0.000289"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:29.369053" level="INFO">mapping: {'NODE': 'openflow:1'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:29.368588" elapsed="0.000511"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-08T01:01:29.369695" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-08T01:01:29.369280" elapsed="0.000442"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-08T01:01:29.370795" level="INFO">${value} = openflow:1</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-08T01:01:29.370125" elapsed="0.000711"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-08T01:01:29.372669" level="INFO">${encoded} = openflow%3A1</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-08T01:01:29.372116" elapsed="0.000589"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-08T01:01:29.372784" elapsed="0.000073"/>
</return>
<msg time="2026-04-08T01:01:29.373118" level="INFO">${encoded_value} = openflow%3A1</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-08T01:01:29.371322" elapsed="0.001851"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:01:29.373406" elapsed="0.000524"/>
</kw>
<var name="${key}">NODE</var>
<var name="${value}">openflow:1</var>
<status status="PASS" start="2026-04-08T01:01:29.369937" elapsed="0.004117"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-08T01:01:29.369771" elapsed="0.004323"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-08T01:01:29.374139" elapsed="0.000045"/>
</return>
<msg time="2026-04-08T01:01:29.374317" level="INFO">${mapping_to_use} = {'NODE': 'openflow%3A1'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-08T01:01:29.368259" elapsed="0.006085"/>
</kw>
<status status="PASS" start="2026-04-08T01:01:29.367945" elapsed="0.006432"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:29.374556" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:01:29.374402" elapsed="0.000212"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:29.367924" elapsed="0.006711"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:01:29.375359" level="INFO">${final_text} = /rests/data/opendaylight-inventory:nodes/node=openflow%3A1</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:01:29.374781" elapsed="0.000606"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T01:01:29.375436" 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-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1/${file_name}.</doc>
<status status="PASS" start="2026-04-08T01:01:29.364150" elapsed="0.011409"/>
</kw>
<msg time="2026-04-08T01:01:29.375612" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:01:29.351779" elapsed="0.023881"/>
</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-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:29.388002" 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-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:29.400098" 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-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:29.412333" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:29.412572" elapsed="0.000022"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:29.412824" elapsed="0.000023"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:29.413215" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:01:29.413050" elapsed="0.000222"/>
</branch>
<status status="NOT RUN" start="2026-04-08T01:01:29.413036" elapsed="0.000259"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:29.413437" elapsed="0.000020"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:29.413605" elapsed="0.000019"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:29.413772" elapsed="0.000020"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-08T01:01:29.413007" elapsed="0.000818"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-08T01:01:29.412903" elapsed="0.000948"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:29.414025" elapsed="0.000021"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-08T01:01:29.414102" elapsed="0.000015"/>
</return>
<msg time="2026-04-08T01:01:29.414233" level="INFO">${uri} = /rests/data/opendaylight-inventory:nodes/node=openflow%3A1</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one 1 times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-08T01:01:29.347582" elapsed="0.066678"/>
</kw>
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:01:29.424953" elapsed="0.000352"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:01:29.438653" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1.vanadium/post_data.prolog.json</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:01:29.438279" elapsed="0.000402"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T01:01:29.439412" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-1.vanadium/post_data.prolog.json' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T01:01:29.439189" elapsed="0.000292">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-1.vanadium/post_data.prolog.json' does not exist.</status>
</kw>
<msg time="2026-04-08T01:01:29.439573" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T01:01:29.438843" elapsed="0.000755"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:01:29.440143" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1/post_data.prolog.json</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:01:29.439763" elapsed="0.000425"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T01:01:29.440483" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-1/post_data.prolog.json"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-1/post_data.prolog.json&lt;/a&gt;'.</msg>
<msg time="2026-04-08T01:01:29.440670" level="INFO">${template} = {
  "flow-node-inventory:group": [
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T01:01:29.440350" elapsed="0.000346"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:29.441097" level="INFO">{
  "flow-node-inventory:group": [
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:29.440856" elapsed="0.000284"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="NOT RUN" start="2026-04-08T01:01:29.441517" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:01:29.441231" elapsed="0.000343"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:01:29.442210" level="INFO">${mapping_to_use} = {'NODE': 'openflow:1'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:01:29.441748" elapsed="0.000489"/>
</kw>
<status status="PASS" start="2026-04-08T01:01:29.441601" elapsed="0.000707"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:29.441211" elapsed="0.001122"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:01:29.442909" level="INFO">${final_text} = {
  "flow-node-inventory:group": [</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:01:29.442482" elapsed="0.000454"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T01:01:29.442984" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T01:01:29.443135" level="INFO">${prolog} = {
  "flow-node-inventory:group": [</msg>
<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-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1/${file_name}.</doc>
<status status="PASS" start="2026-04-08T01:01:29.437444" elapsed="0.005731"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:01:29.456638" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1.vanadium/post_data.epilog.json</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:01:29.456265" elapsed="0.000401"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T01:01:29.457384" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-1.vanadium/post_data.epilog.json' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T01:01:29.457177" elapsed="0.000271">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-1.vanadium/post_data.epilog.json' does not exist.</status>
</kw>
<msg time="2026-04-08T01:01:29.457540" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T01:01:29.456829" elapsed="0.000736"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:01:29.458124" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1/post_data.epilog.json</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:01:29.457731" elapsed="0.000420"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T01:01:29.458462" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-1/post_data.epilog.json"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-1/post_data.epilog.json&lt;/a&gt;'.</msg>
<msg time="2026-04-08T01:01:29.458583" level="INFO">${template} =   ]
}
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T01:01:29.458330" elapsed="0.000278"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:29.459121" level="INFO">  ]
}
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:29.458764" elapsed="0.000415"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="NOT RUN" start="2026-04-08T01:01:29.459540" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:01:29.459252" elapsed="0.000346"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:01:29.460058" level="INFO">${mapping_to_use} = {'NODE': 'openflow:1'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:01:29.459769" elapsed="0.000314"/>
</kw>
<status status="PASS" start="2026-04-08T01:01:29.459622" elapsed="0.000497"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:29.459233" elapsed="0.000907"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:01:29.460725" level="INFO">${final_text} =   ]
}</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:01:29.460303" elapsed="0.000449"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T01:01:29.460800" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T01:01:29.460948" level="INFO">${epilog} =   ]
}</msg>
<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-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1/${file_name}.</doc>
<status status="PASS" start="2026-04-08T01:01:29.455637" elapsed="0.005335"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:01:29.474173" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1.vanadium/data.item.json</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:01:29.473752" elapsed="0.000451"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T01:01:29.474948" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-1.vanadium/data.item.json' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T01:01:29.474741" elapsed="0.000269">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-1.vanadium/data.item.json' does not exist.</status>
</kw>
<msg time="2026-04-08T01:01:29.475101" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T01:01:29.474367" elapsed="0.000758"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:01:29.475691" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1/data.item.json</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:01:29.475310" elapsed="0.000412"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T01:01:29.476017" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-1/data.item.json"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-1/data.item.json&lt;/a&gt;'.</msg>
<msg time="2026-04-08T01:01:29.476140" level="INFO">${template} =         {
          "group-id": ${i}000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
       ...</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T01:01:29.475885" elapsed="0.000296"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:29.476580" level="INFO">        {
          "group-id": ${i}000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-${i}",
          "group-type": "group-select"
        }
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:29.476339" elapsed="0.000288"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="NOT RUN" start="2026-04-08T01:01:29.476979" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:01:29.476695" elapsed="0.000342"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:01:29.477515" level="INFO">${mapping_to_use} = {'NODE': 'openflow:1'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:01:29.477224" elapsed="0.000317"/>
</kw>
<status status="PASS" start="2026-04-08T01:01:29.477061" elapsed="0.000515"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:29.476677" elapsed="0.000921"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:01:29.478342" level="INFO">${final_text} =         {
          "group-id": ${i}000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
       ...</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:01:29.477744" elapsed="0.000626"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T01:01:29.478419" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T01:01:29.478572" level="INFO">${item_template} =         {
          "group-id": ${i}000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
       ...</msg>
<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-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1/${file_name}.</doc>
<status status="PASS" start="2026-04-08T01:01:29.473167" elapsed="0.005435"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:01:29.479008" level="INFO">${items} = []</msg>
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:01:29.478768" elapsed="0.000265"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:01:29.479569" level="INFO">${separator} = ,
</msg>
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:01:29.479208" elapsed="0.000387"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:29.480222" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:01:29.479968" elapsed="0.000312"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:29.479953" elapsed="0.000359"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:01:29.480801" level="INFO">${j} = 1</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:01:29.480454" elapsed="0.000373"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:01:29.481570" level="INFO">${item} =         {
          "group-id": 1000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
          ...</msg>
<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="PASS" start="2026-04-08T01:01:29.480981" elapsed="0.000618"/>
</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="PASS" start="2026-04-08T01:01:29.481753" elapsed="0.000210"/>
</kw>
<var name="${iteration}">1</var>
<status status="PASS" start="2026-04-08T01:01:29.479921" elapsed="0.002118"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="PASS" start="2026-04-08T01:01:29.479650" elapsed="0.002421"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:01:29.482840" level="INFO">${final_text} = {
  "flow-node-inventory:group": [
        {
          "group-id": 1000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
   ...</msg>
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:01:29.482243" elapsed="0.000624"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T01:01:29.482926" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T01:01:29.483076" level="INFO">${data} = {
  "flow-node-inventory:group": [
        {
          "group-id": 1000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
   ...</msg>
<var>${data}</var>
<arg>folder=${folder}</arg>
<arg>name_prefix=post_</arg>
<arg>base_name=${base_name}</arg>
<arg>extension=${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>endline=${endline}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one 1 times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-08T01:01:29.424095" elapsed="0.059007"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T01:01:29.484358" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-1/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T01:01:29.484111" elapsed="0.000310">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-1/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-08T01:01:29.484512" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T01:01:29.483777" elapsed="0.000759"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:29.484853" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:01:29.484607" elapsed="0.000303"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:01:29.485413" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:01:29.485110" elapsed="0.000329"/>
</kw>
<status status="PASS" start="2026-04-08T01:01:29.484934" elapsed="0.000540"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:29.484589" elapsed="0.000907"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:01:29.487839" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:01:29.485652" elapsed="0.002213"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-08T01:01:29.487926" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T01:01:29.488076" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T01:01:29.483453" elapsed="0.004648"/>
</kw>
<kw name="Post_To_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:29.489619" level="INFO">/rests/data/opendaylight-inventory:nodes/node=openflow%3A1</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:29.489375" elapsed="0.000290"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:29.490073" level="INFO">{
  "flow-node-inventory:group": [
        {
          "group-id": 1000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-1",
          "group-type": "group-select"
        }
  ]
}</msg>
<arg>${data}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:29.489839" elapsed="0.000281"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:29.490527" level="INFO">{'Content-Type': 'application/json'}</msg>
<arg>${content_type}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:29.490288" elapsed="0.000282"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:29.490961" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:29.490726" elapsed="0.000276"/>
</kw>
<kw name="Join_Two_Headers" owner="TemplatedRequests">
<kw name="Copy Dictionary" owner="Collections">
<msg time="2026-04-08T01:01:29.491818" level="INFO">${accumulator} = {'Content-Type': 'application/json'}</msg>
<var>${accumulator}</var>
<arg>${first}</arg>
<doc>Returns a copy of the given dictionary.</doc>
<status status="PASS" start="2026-04-08T01:01:29.491623" elapsed="0.000221"/>
</kw>
<kw name="Get Dictionary Items" owner="Collections">
<msg time="2026-04-08T01:01:29.492180" level="INFO">${items_to_add} = []</msg>
<var>${items_to_add}</var>
<arg>${second}</arg>
<doc>Returns items of the given ``dictionary`` as a list.</doc>
<status status="PASS" start="2026-04-08T01:01:29.491997" elapsed="0.000210"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${accumulator}</arg>
<arg>@{items_to_add}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:01:29.492356" elapsed="0.000220"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:29.493034" level="INFO">{'Content-Type': 'application/json'}</msg>
<arg>${accumulator}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:29.492777" elapsed="0.000301"/>
</kw>
<return>
<value>${accumulator}</value>
<status status="PASS" start="2026-04-08T01:01:29.493120" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T01:01:29.493291" level="INFO">${headers} = {'Content-Type': 'application/json'}</msg>
<var>${headers}</var>
<arg>first=${content_type}</arg>
<arg>second=${accept}</arg>
<doc>Take two dicts, join them, return result. Second argument values take precedence.</doc>
<status status="PASS" start="2026-04-08T01:01:29.491214" elapsed="0.002102"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="POST On Session" owner="RequestsLibrary">
<msg time="2026-04-08T01:01:29.512557" level="INFO">POST Request : url=http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node01s3bfo0y24i1es90l47mavglv0.node0', 'Content-Length': '560', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body={
  "flow-node-inventory:group": [
        {
          "group-id": 1000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-1",
          "group-type": "group-select"
        }
  ]
} 
 </msg>
<msg time="2026-04-08T01:01:29.512676" level="INFO">POST Response : url=http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 
 status=201, reason=Created 
 headers={'Location': 'http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:group=1000', 'Content-Length': '0'} 
 body=None 
 </msg>
<msg time="2026-04-08T01:01:29.512984" level="INFO">${response} = &lt;Response [201]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T01:01:29.496761" elapsed="0.016283"/>
</kw>
<status status="PASS" start="2026-04-08T01:01:29.493386" elapsed="0.019759"/>
</branch>
<branch type="ELSE">
<kw name="POST On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:29.513663" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:01:29.513241" elapsed="0.000596"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:29.493368" elapsed="0.020518"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:29.521507" level="INFO"/>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:29.516224" elapsed="0.005379"/>
</kw>
<status status="PASS" start="2026-04-08T01:01:29.515702" elapsed="0.005979"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:29.515660" elapsed="0.006129"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:29.525685" level="INFO">201</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:29.522454" elapsed="0.003310"/>
</kw>
<status status="PASS" start="2026-04-08T01:01:29.521918" elapsed="0.003898"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:29.521881" elapsed="0.003969"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:01:29.526640" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:01:29.526085" elapsed="0.000593"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:29.527110" elapsed="0.000029"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:01:29.526776" elapsed="0.000435"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:01:29.527894" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:01:29.527475" elapsed="0.000454"/>
</kw>
<status status="PASS" start="2026-04-08T01:01:29.527245" elapsed="0.000734"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:29.526750" elapsed="0.001259"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:01:29.528766" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:01:29.528261" elapsed="0.000542"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:29.529255" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:01:29.528901" elapsed="0.000434"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:01:29.530019" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:01:29.529597" elapsed="0.000458"/>
</kw>
<status status="PASS" start="2026-04-08T01:01:29.529368" elapsed="0.000736"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:29.528876" elapsed="0.001258"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:01:29.530368" elapsed="0.000480"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T01:01:29.531489" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:01:29.531080" elapsed="0.000446"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T01:01:29.531743" elapsed="0.002675"/>
</kw>
<arg>${response}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T01:01:29.514700" elapsed="0.019822"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T01:01:29.534701" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:01:29.534594" elapsed="0.000150"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:29.534576" elapsed="0.000189"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T01:01:29.537252" level="INFO">${text_normalized} = </msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T01:01:29.534912" elapsed="0.002366"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T01:01:29.537326" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T01:01:29.537479" level="INFO">${response_text} = </msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>data=${data}</arg>
<arg>content_type=${content_type}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>POST data to given URI, check status code and return response text.
${content_type} and ${accept} are mandatory Python objects with headers to use.
If ${normalize_json}, normalize text before returning.</doc>
<status status="PASS" start="2026-04-08T01:01:29.488444" elapsed="0.049059"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T01:01:29.537571" elapsed="0.000025"/>
</return>
<msg time="2026-04-08T01:01:29.537730" level="INFO">${response_text} = </msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>extension=json</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>content_type=${HEADERS_YANG_JSON}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>endline=${\n}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve URI and data from folder, call Post_To_Uri, return response text.</doc>
<status status="PASS" start="2026-04-08T01:01:29.336324" elapsed="0.201431"/>
</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=response</arg>
<arg>mapping=${mapping}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:29.538093" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:01:29.537859" elapsed="0.000321"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:29.537842" elapsed="0.000363"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T01:01:29.538238" elapsed="0.000026"/>
</return>
<arg>folder=${VAR_DIR}/add-group-1</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<arg>iterations=${iter}</arg>
<doc>Add arguments sensible for JSON data, return Post_Templated response text.
Optionally, verification against response.json (no iteration) is called.
Only subset of JSON data is verified and returned if JMES path is specified in
file ${folder}/jmespath.expr.
Response status code must be one of values from ${explicit_status_codes} if specified or one of set
created from all positive HTTP status codes together with ${additional_allowed_status_codes}.</doc>
<status status="PASS" start="2026-04-08T01:01:29.333711" elapsed="0.204647"/>
</kw>
<kw name="Post_As_Json_Templated" owner="TemplatedRequests">
<kw name="Post_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:01:29.580873" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2.vanadium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:01:29.580492" elapsed="0.000409"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T01:01:29.581749" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-2.vanadium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T01:01:29.581420" elapsed="0.000399">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-2.vanadium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-08T01:01:29.581913" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T01:01:29.581064" elapsed="0.000873"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:01:29.582512" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:01:29.582103" elapsed="0.000437"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T01:01:29.582839" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-2/location.uri"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-2/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-08T01:01:29.582968" level="INFO">${template} = /rests/data/opendaylight-inventory:nodes/node=$NODE
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T01:01:29.582707" elapsed="0.000286"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:29.583410" level="INFO">/rests/data/opendaylight-inventory:nodes/node=$NODE
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:29.583148" elapsed="0.000305"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:29.584665" level="INFO">mapping: {'NODE': 'openflow:1'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:29.584203" elapsed="0.000508"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-08T01:01:29.585312" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-08T01:01:29.584880" elapsed="0.000459"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-08T01:01:29.586421" level="INFO">${value} = openflow:1</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-08T01:01:29.585748" elapsed="0.000714"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-08T01:01:29.588103" level="INFO">${encoded} = openflow%3A1</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-08T01:01:29.587728" elapsed="0.000411"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-08T01:01:29.588235" elapsed="0.000073"/>
</return>
<msg time="2026-04-08T01:01:29.588566" level="INFO">${encoded_value} = openflow%3A1</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-08T01:01:29.586910" elapsed="0.001699"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:01:29.588838" elapsed="0.000520"/>
</kw>
<var name="${key}">NODE</var>
<var name="${value}">openflow:1</var>
<status status="PASS" start="2026-04-08T01:01:29.585562" elapsed="0.003894"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-08T01:01:29.585388" elapsed="0.004107"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-08T01:01:29.589539" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T01:01:29.589722" level="INFO">${mapping_to_use} = {'NODE': 'openflow%3A1'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-08T01:01:29.583859" elapsed="0.005888"/>
</kw>
<status status="PASS" start="2026-04-08T01:01:29.583557" elapsed="0.006349"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:29.590082" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:01:29.589930" elapsed="0.000211"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:29.583538" elapsed="0.006640"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:01:29.590859" level="INFO">${final_text} = /rests/data/opendaylight-inventory:nodes/node=openflow%3A1</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:01:29.590324" elapsed="0.000562"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T01:01:29.590934" 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-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2/${file_name}.</doc>
<status status="PASS" start="2026-04-08T01:01:29.579867" elapsed="0.011188"/>
</kw>
<msg time="2026-04-08T01:01:29.591108" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:01:29.567487" elapsed="0.023685"/>
</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-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:29.603768" elapsed="0.000029"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:29.618559" elapsed="0.000068"/>
</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-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:29.635219" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:29.635466" elapsed="0.000023"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:29.635644" elapsed="0.000021"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:29.636010" elapsed="0.000019"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:01:29.635864" elapsed="0.000200"/>
</branch>
<status status="NOT RUN" start="2026-04-08T01:01:29.635849" elapsed="0.000238"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:29.636243" elapsed="0.000022"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:29.636415" elapsed="0.000020"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:29.636581" elapsed="0.000021"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-08T01:01:29.635821" elapsed="0.000817"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-08T01:01:29.635718" elapsed="0.000946"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:29.636809" elapsed="0.000020"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-08T01:01:29.636884" elapsed="0.000014"/>
</return>
<msg time="2026-04-08T01:01:29.637000" level="INFO">${uri} = /rests/data/opendaylight-inventory:nodes/node=openflow%3A1</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one 1 times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-08T01:01:29.563272" elapsed="0.073754"/>
</kw>
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:01:29.647855" elapsed="0.000360"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:01:29.661538" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2.vanadium/post_data.prolog.json</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:01:29.661131" elapsed="0.000436"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T01:01:29.662291" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-2.vanadium/post_data.prolog.json' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T01:01:29.662064" elapsed="0.000293">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-2.vanadium/post_data.prolog.json' does not exist.</status>
</kw>
<msg time="2026-04-08T01:01:29.662450" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T01:01:29.661731" elapsed="0.000743"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:01:29.663018" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2/post_data.prolog.json</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:01:29.662638" elapsed="0.000407"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T01:01:29.663361" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-2/post_data.prolog.json"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-2/post_data.prolog.json&lt;/a&gt;'.</msg>
<msg time="2026-04-08T01:01:29.663486" level="INFO">${template} = {
  "flow-node-inventory:group": [
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T01:01:29.663226" elapsed="0.000285"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:29.663909" level="INFO">{
  "flow-node-inventory:group": [
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:29.663669" elapsed="0.000283"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="NOT RUN" start="2026-04-08T01:01:29.664324" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:01:29.664019" elapsed="0.000363"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:01:29.664850" level="INFO">${mapping_to_use} = {'NODE': 'openflow:1'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:01:29.664552" elapsed="0.000324"/>
</kw>
<status status="PASS" start="2026-04-08T01:01:29.664406" elapsed="0.000541"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:29.664000" elapsed="0.000971"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:01:29.665577" level="INFO">${final_text} = {
  "flow-node-inventory:group": [</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:01:29.665119" elapsed="0.000485"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T01:01:29.665653" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T01:01:29.665802" level="INFO">${prolog} = {
  "flow-node-inventory:group": [</msg>
<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-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2/${file_name}.</doc>
<status status="PASS" start="2026-04-08T01:01:29.660521" elapsed="0.005306"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:01:29.679217" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2.vanadium/post_data.epilog.json</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:01:29.678829" elapsed="0.000416"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T01:01:29.679946" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-2.vanadium/post_data.epilog.json' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T01:01:29.679743" elapsed="0.000266">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-2.vanadium/post_data.epilog.json' does not exist.</status>
</kw>
<msg time="2026-04-08T01:01:29.680100" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T01:01:29.679410" elapsed="0.000714"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:01:29.680690" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2/post_data.epilog.json</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:01:29.680308" elapsed="0.000409"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T01:01:29.681011" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-2/post_data.epilog.json"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-2/post_data.epilog.json&lt;/a&gt;'.</msg>
<msg time="2026-04-08T01:01:29.681134" level="INFO">${template} =   ]
}
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T01:01:29.680879" elapsed="0.000294"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:29.681600" level="INFO">  ]
}
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:29.681335" elapsed="0.000308"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="NOT RUN" start="2026-04-08T01:01:29.681994" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:01:29.681710" elapsed="0.000342"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:01:29.682527" level="INFO">${mapping_to_use} = {'NODE': 'openflow:1'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:01:29.682238" elapsed="0.000314"/>
</kw>
<status status="PASS" start="2026-04-08T01:01:29.682076" elapsed="0.000512"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:29.681691" elapsed="0.000918"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:01:29.683184" level="INFO">${final_text} =   ]
}</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:01:29.682755" elapsed="0.000457"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T01:01:29.683260" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T01:01:29.683411" level="INFO">${epilog} =   ]
}</msg>
<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-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2/${file_name}.</doc>
<status status="PASS" start="2026-04-08T01:01:29.678213" elapsed="0.005222"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:01:29.696569" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2.vanadium/data.item.json</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:01:29.696199" elapsed="0.000398"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T01:01:29.697352" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-2.vanadium/data.item.json' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T01:01:29.697130" elapsed="0.000285">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-2.vanadium/data.item.json' does not exist.</status>
</kw>
<msg time="2026-04-08T01:01:29.697521" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T01:01:29.696759" elapsed="0.000787"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:01:29.698091" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2/data.item.json</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:01:29.697712" elapsed="0.000406"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T01:01:29.698430" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-2/data.item.json"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-2/data.item.json&lt;/a&gt;'.</msg>
<msg time="2026-04-08T01:01:29.698554" level="INFO">${template} =     {
      "group-id": ${i},
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": ${i}000,
            "action": [
              {
               ...</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T01:01:29.698296" elapsed="0.000284"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:29.698976" level="INFO">    {
      "group-id": ${i},
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": ${i}000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": ${i}000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-${i}",
      "group-type": "group-ff"
    }
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:29.698737" elapsed="0.000285"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="NOT RUN" start="2026-04-08T01:01:29.699396" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:01:29.699090" elapsed="0.000364"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:01:29.699914" level="INFO">${mapping_to_use} = {'NODE': 'openflow:1'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:01:29.699625" elapsed="0.000315"/>
</kw>
<status status="PASS" start="2026-04-08T01:01:29.699478" elapsed="0.000497"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:29.699071" elapsed="0.000925"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:01:29.700722" level="INFO">${final_text} =     {
      "group-id": ${i},
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": ${i}000,
            "action": [
              {
               ...</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:01:29.700142" elapsed="0.000608"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T01:01:29.700798" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T01:01:29.700949" level="INFO">${item_template} =     {
      "group-id": ${i},
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": ${i}000,
            "action": [
              {
               ...</msg>
<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-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2/${file_name}.</doc>
<status status="PASS" start="2026-04-08T01:01:29.695643" elapsed="0.005333"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:01:29.701395" level="INFO">${items} = []</msg>
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:01:29.701139" elapsed="0.000290"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:01:29.701947" level="INFO">${separator} = ,
</msg>
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:01:29.701589" elapsed="0.000383"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:29.702598" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:01:29.702363" elapsed="0.000291"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:29.702349" elapsed="0.000329"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:01:29.703182" level="INFO">${j} = 1</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:01:29.702818" elapsed="0.000390"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:01:29.704106" level="INFO">${item} =     {
      "group-id": 1,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 1000,
            "action": [
              {
                "orde...</msg>
<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="PASS" start="2026-04-08T01:01:29.703364" elapsed="0.000770"/>
</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="PASS" start="2026-04-08T01:01:29.704309" elapsed="0.000190"/>
</kw>
<var name="${iteration}">1</var>
<status status="PASS" start="2026-04-08T01:01:29.702317" elapsed="0.002251"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="PASS" start="2026-04-08T01:01:29.702027" elapsed="0.002574"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:01:29.705194" level="INFO">${final_text} = {
  "flow-node-inventory:group": [
    {
      "group-id": 1,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 1000,
            "action": [
  ...</msg>
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:01:29.704756" elapsed="0.000466"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T01:01:29.705279" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T01:01:29.705451" level="INFO">${data} = {
  "flow-node-inventory:group": [
    {
      "group-id": 1,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 1000,
            "action": [
  ...</msg>
<var>${data}</var>
<arg>folder=${folder}</arg>
<arg>name_prefix=post_</arg>
<arg>base_name=${base_name}</arg>
<arg>extension=${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>endline=${endline}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one 1 times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-08T01:01:29.646996" elapsed="0.058482"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T01:01:29.706712" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-2/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T01:01:29.706479" elapsed="0.000295">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-2/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-08T01:01:29.706865" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T01:01:29.706129" elapsed="0.000760"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:29.707220" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:01:29.706961" elapsed="0.000318"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:01:29.707762" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:01:29.707476" elapsed="0.000311"/>
</kw>
<status status="PASS" start="2026-04-08T01:01:29.707304" elapsed="0.000517"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:29.706943" elapsed="0.000900"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:01:29.710180" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:01:29.707995" elapsed="0.002213"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-08T01:01:29.710259" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T01:01:29.710411" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T01:01:29.705808" elapsed="0.004628"/>
</kw>
<kw name="Post_To_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:29.711941" level="INFO">/rests/data/opendaylight-inventory:nodes/node=openflow%3A1</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:29.711697" elapsed="0.000289"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:29.712393" level="INFO">{
  "flow-node-inventory:group": [
    {
      "group-id": 1,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 1000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 1000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-1",
      "group-type": "group-ff"
    }
  ]
}</msg>
<arg>${data}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:29.712140" elapsed="0.000299"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:29.712827" level="INFO">{'Content-Type': 'application/json'}</msg>
<arg>${content_type}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:29.712590" elapsed="0.000280"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:29.713272" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:29.713021" elapsed="0.000293"/>
</kw>
<kw name="Join_Two_Headers" owner="TemplatedRequests">
<kw name="Copy Dictionary" owner="Collections">
<msg time="2026-04-08T01:01:29.714113" level="INFO">${accumulator} = {'Content-Type': 'application/json'}</msg>
<var>${accumulator}</var>
<arg>${first}</arg>
<doc>Returns a copy of the given dictionary.</doc>
<status status="PASS" start="2026-04-08T01:01:29.713924" elapsed="0.000215"/>
</kw>
<kw name="Get Dictionary Items" owner="Collections">
<msg time="2026-04-08T01:01:29.714482" level="INFO">${items_to_add} = []</msg>
<var>${items_to_add}</var>
<arg>${second}</arg>
<doc>Returns items of the given ``dictionary`` as a list.</doc>
<status status="PASS" start="2026-04-08T01:01:29.714312" elapsed="0.000195"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${accumulator}</arg>
<arg>@{items_to_add}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:01:29.714655" elapsed="0.000186"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:29.715261" level="INFO">{'Content-Type': 'application/json'}</msg>
<arg>${accumulator}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:29.714995" elapsed="0.000309"/>
</kw>
<return>
<value>${accumulator}</value>
<status status="PASS" start="2026-04-08T01:01:29.715390" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T01:01:29.715547" level="INFO">${headers} = {'Content-Type': 'application/json'}</msg>
<var>${headers}</var>
<arg>first=${content_type}</arg>
<arg>second=${accept}</arg>
<doc>Take two dicts, join them, return result. Second argument values take precedence.</doc>
<status status="PASS" start="2026-04-08T01:01:29.713525" elapsed="0.002046"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="POST On Session" owner="RequestsLibrary">
<msg time="2026-04-08T01:01:29.737687" level="INFO">POST Request : url=http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node01s3bfo0y24i1es90l47mavglv0.node0', 'Content-Length': '460', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body={
  "flow-node-inventory:group": [
    {
      "group-id": 1,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 1000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 1000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-1",
      "group-type": "group-ff"
    }
  ]
} 
 </msg>
<msg time="2026-04-08T01:01:29.737808" level="INFO">POST Response : url=http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 
 status=201, reason=Created 
 headers={'Location': 'http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:group=1', 'Content-Length': '0'} 
 body=None 
 </msg>
<msg time="2026-04-08T01:01:29.738018" level="INFO">${response} = &lt;Response [201]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T01:01:29.717885" elapsed="0.020190"/>
</kw>
<status status="PASS" start="2026-04-08T01:01:29.715641" elapsed="0.022571"/>
</branch>
<branch type="ELSE">
<kw name="POST On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:29.738645" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:01:29.738278" elapsed="0.000519"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:29.715623" elapsed="0.023223"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:29.744705" level="INFO"/>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:29.741218" elapsed="0.003548"/>
</kw>
<status status="PASS" start="2026-04-08T01:01:29.740693" elapsed="0.004121"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:29.740650" elapsed="0.004199"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:29.748529" level="INFO">201</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:29.745254" elapsed="0.003339"/>
</kw>
<status status="PASS" start="2026-04-08T01:01:29.744926" elapsed="0.003714"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:29.744903" elapsed="0.003771"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:01:29.749490" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:01:29.748910" elapsed="0.000618"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:29.749965" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:01:29.749630" elapsed="0.000415"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:01:29.750746" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:01:29.750326" elapsed="0.000456"/>
</kw>
<status status="PASS" start="2026-04-08T01:01:29.750077" elapsed="0.000753"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:29.749602" elapsed="0.001259"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:01:29.751615" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:01:29.751090" elapsed="0.000563"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:29.752077" elapsed="0.000028"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:01:29.751749" elapsed="0.000406"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:01:29.752857" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:01:29.752440" elapsed="0.000453"/>
</kw>
<status status="PASS" start="2026-04-08T01:01:29.752210" elapsed="0.000732"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:29.751723" elapsed="0.001248"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:01:29.753206" elapsed="0.000604"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T01:01:29.754298" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:01:29.753984" elapsed="0.000340"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T01:01:29.754481" elapsed="0.002331"/>
</kw>
<arg>${response}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T01:01:29.739668" elapsed="0.017208"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T01:01:29.757116" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:01:29.757007" elapsed="0.000171"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:29.756988" elapsed="0.000214"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T01:01:29.759677" level="INFO">${text_normalized} = </msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T01:01:29.757363" elapsed="0.002341"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T01:01:29.759751" elapsed="0.000033"/>
</return>
<msg time="2026-04-08T01:01:29.759911" level="INFO">${response_text} = </msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>data=${data}</arg>
<arg>content_type=${content_type}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>POST data to given URI, check status code and return response text.
${content_type} and ${accept} are mandatory Python objects with headers to use.
If ${normalize_json}, normalize text before returning.</doc>
<status status="PASS" start="2026-04-08T01:01:29.710758" elapsed="0.049177"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T01:01:29.760003" elapsed="0.000026"/>
</return>
<msg time="2026-04-08T01:01:29.760152" level="INFO">${response_text} = </msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>extension=json</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>content_type=${HEADERS_YANG_JSON}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>endline=${\n}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve URI and data from folder, call Post_To_Uri, return response text.</doc>
<status status="PASS" start="2026-04-08T01:01:29.552312" elapsed="0.207880"/>
</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=response</arg>
<arg>mapping=${mapping}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:29.760536" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:01:29.760298" elapsed="0.000305"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:29.760281" elapsed="0.000476"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T01:01:29.760798" elapsed="0.000027"/>
</return>
<arg>folder=${VAR_DIR}/add-group-2</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<arg>iterations=${iter}</arg>
<doc>Add arguments sensible for JSON data, return Post_Templated response text.
Optionally, verification against response.json (no iteration) is called.
Only subset of JSON data is verified and returned if JMES path is specified in
file ${folder}/jmespath.expr.
Response status code must be one of values from ${explicit_status_codes} if specified or one of set
created from all positive HTTP status codes together with ${additional_allowed_status_codes}.</doc>
<status status="PASS" start="2026-04-08T01:01:29.549695" elapsed="0.211229"/>
</kw>
<kw name="Post_As_Json_Templated" owner="TemplatedRequests">
<kw name="Post_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:01:29.803590" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow.vanadium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:01:29.803139" elapsed="0.000491"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T01:01:29.804572" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-flow.vanadium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T01:01:29.804177" elapsed="0.000476">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-flow.vanadium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-08T01:01:29.804750" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T01:01:29.803811" elapsed="0.000965"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:01:29.805396" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:01:29.804947" elapsed="0.000477"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T01:01:29.805730" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-flow/location.uri"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-flow/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-08T01:01:29.805902" level="INFO">${template} = /rests/data/opendaylight-inventory:nodes/node=$NODE/flow-node-inventory:table=0
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T01:01:29.805588" elapsed="0.000339"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:29.806357" level="INFO">/rests/data/opendaylight-inventory:nodes/node=$NODE/flow-node-inventory:table=0
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:29.806086" elapsed="0.000315"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:29.807754" level="INFO">mapping: {'NODE': 'openflow:1'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:29.807205" elapsed="0.000595"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-08T01:01:29.808420" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-08T01:01:29.807968" elapsed="0.000479"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-08T01:01:29.809576" level="INFO">${value} = openflow:1</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-08T01:01:29.808873" elapsed="0.000747"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-08T01:01:29.811328" level="INFO">${encoded} = openflow%3A1</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-08T01:01:29.810924" elapsed="0.000441"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-08T01:01:29.811446" elapsed="0.000080"/>
</return>
<msg time="2026-04-08T01:01:29.811799" level="INFO">${encoded_value} = openflow%3A1</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-08T01:01:29.810086" elapsed="0.001753"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:01:29.812072" elapsed="0.000550"/>
</kw>
<var name="${key}">NODE</var>
<var name="${value}">openflow:1</var>
<status status="PASS" start="2026-04-08T01:01:29.808699" elapsed="0.004022"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-08T01:01:29.808508" elapsed="0.004255"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-08T01:01:29.812808" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T01:01:29.812967" level="INFO">${mapping_to_use} = {'NODE': 'openflow%3A1'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-08T01:01:29.806857" elapsed="0.006137"/>
</kw>
<status status="PASS" start="2026-04-08T01:01:29.806491" elapsed="0.006535"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:29.813223" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:01:29.813053" elapsed="0.000265"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:29.806462" elapsed="0.006878"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:01:29.814079" level="INFO">${final_text} = /rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:01:29.813490" elapsed="0.000617"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T01:01:29.814170" elapsed="0.000030"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow/${file_name}.</doc>
<status status="PASS" start="2026-04-08T01:01:29.802413" elapsed="0.011884"/>
</kw>
<msg time="2026-04-08T01:01:29.814353" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:01:29.789922" elapsed="0.024484"/>
</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-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:29.827191" elapsed="0.000032"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:29.839369" 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-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:29.851498" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:29.851792" elapsed="0.000023"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:29.851979" elapsed="0.000020"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:29.852412" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:01:29.852258" elapsed="0.000209"/>
</branch>
<status status="NOT RUN" start="2026-04-08T01:01:29.852241" elapsed="0.000252"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:29.852635" elapsed="0.000020"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:29.852800" elapsed="0.000019"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:29.852963" elapsed="0.000020"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-08T01:01:29.852198" elapsed="0.000817"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-08T01:01:29.852062" elapsed="0.000981"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:29.853218" elapsed="0.000022"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-08T01:01:29.853297" elapsed="0.000017"/>
</return>
<msg time="2026-04-08T01:01:29.853444" level="INFO">${uri} = /rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one 1 times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-08T01:01:29.785724" elapsed="0.067747"/>
</kw>
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:01:29.864446" elapsed="0.000441"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:01:29.878018" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow.vanadium/post_data.prolog.json</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:01:29.877636" elapsed="0.000410"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T01:01:29.878836" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-flow.vanadium/post_data.prolog.json' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T01:01:29.878574" elapsed="0.000346">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-flow.vanadium/post_data.prolog.json' does not exist.</status>
</kw>
<msg time="2026-04-08T01:01:29.879013" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T01:01:29.878232" elapsed="0.000805"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:01:29.879600" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow/post_data.prolog.json</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:01:29.879217" elapsed="0.000410"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T01:01:29.879928" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-flow/post_data.prolog.json"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-flow/post_data.prolog.json&lt;/a&gt;'.</msg>
<msg time="2026-04-08T01:01:29.880089" level="INFO">${template} = {
  "flow": [
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T01:01:29.879788" elapsed="0.000325"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:29.880532" level="INFO">{
  "flow": [
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:29.880285" elapsed="0.000291"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="NOT RUN" start="2026-04-08T01:01:29.880938" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:01:29.880645" elapsed="0.000349"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:01:29.881507" level="INFO">${mapping_to_use} = {'NODE': 'openflow:1'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:01:29.881212" elapsed="0.000322"/>
</kw>
<status status="PASS" start="2026-04-08T01:01:29.881018" elapsed="0.000551"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:29.880626" elapsed="0.001005"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:01:29.882235" level="INFO">${final_text} = {
  "flow": [</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:01:29.881781" elapsed="0.000480"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T01:01:29.882310" elapsed="0.000034"/>
</return>
<msg time="2026-04-08T01:01:29.882464" level="INFO">${prolog} = {
  "flow": [</msg>
<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-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow/${file_name}.</doc>
<status status="PASS" start="2026-04-08T01:01:29.876998" elapsed="0.005490"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:01:29.895779" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow.vanadium/post_data.epilog.json</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:01:29.895410" elapsed="0.000397"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T01:01:29.896521" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-flow.vanadium/post_data.epilog.json' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T01:01:29.896317" elapsed="0.000267">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-flow.vanadium/post_data.epilog.json' does not exist.</status>
</kw>
<msg time="2026-04-08T01:01:29.896675" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T01:01:29.895969" elapsed="0.000730"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:01:29.897272" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow/post_data.epilog.json</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:01:29.896862" elapsed="0.000438"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T01:01:29.897592" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-flow/post_data.epilog.json"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-flow/post_data.epilog.json&lt;/a&gt;'.</msg>
<msg time="2026-04-08T01:01:29.897719" level="INFO">${template} =   ]
}
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T01:01:29.897461" elapsed="0.000282"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:29.898138" level="INFO">  ]
}
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:29.897898" elapsed="0.000301"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="NOT RUN" start="2026-04-08T01:01:29.898550" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:01:29.898266" elapsed="0.000341"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:01:29.899189" level="INFO">${mapping_to_use} = {'NODE': 'openflow:1'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:01:29.898777" elapsed="0.000439"/>
</kw>
<status status="PASS" start="2026-04-08T01:01:29.898631" elapsed="0.000619"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:29.898247" elapsed="0.001026"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:01:29.899831" level="INFO">${final_text} =   ]
}</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:01:29.899417" elapsed="0.000440"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T01:01:29.899904" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T01:01:29.900053" level="INFO">${epilog} =   ]
}</msg>
<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-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow/${file_name}.</doc>
<status status="PASS" start="2026-04-08T01:01:29.894780" elapsed="0.005297"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:01:29.913240" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow.vanadium/data.item.json</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:01:29.912839" elapsed="0.000429"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T01:01:29.913962" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-flow.vanadium/data.item.json' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T01:01:29.913758" elapsed="0.000300">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-flow.vanadium/data.item.json' does not exist.</status>
</kw>
<msg time="2026-04-08T01:01:29.914152" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T01:01:29.913430" elapsed="0.000763"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:01:29.914741" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow/data.item.json</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:01:29.914360" elapsed="0.000409"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T01:01:29.915063" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-flow/data.item.json"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-flow/data.item.json&lt;/a&gt;'.</msg>
<msg time="2026-04-08T01:01:29.915203" level="INFO">${template} =         {
          "id": "${i}",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048...</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T01:01:29.914930" elapsed="0.000301"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:29.915626" level="INFO">        {
          "id": "${i}",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.${i}/32"
          },
          "flow-name": "Flow-${i}",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": ${i}
                      }
                    }
                  ]
                }
              }
            ]
          }
        }
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:29.915387" elapsed="0.000289"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="NOT RUN" start="2026-04-08T01:01:29.916027" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:01:29.915743" elapsed="0.000341"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:01:29.916564" level="INFO">${mapping_to_use} = {'NODE': 'openflow:1'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:01:29.916271" elapsed="0.000319"/>
</kw>
<status status="PASS" start="2026-04-08T01:01:29.916109" elapsed="0.000515"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:29.915724" elapsed="0.000925"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:01:29.917453" level="INFO">${final_text} =         {
          "id": "${i}",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048...</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:01:29.916796" elapsed="0.000687"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T01:01:29.917531" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T01:01:29.917684" level="INFO">${item_template} =         {
          "id": "${i}",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048...</msg>
<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-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow/${file_name}.</doc>
<status status="PASS" start="2026-04-08T01:01:29.912301" elapsed="0.005410"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:01:29.918113" level="INFO">${items} = []</msg>
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:01:29.917873" elapsed="0.000266"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:01:29.918678" level="INFO">${separator} = ,
</msg>
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:01:29.918313" elapsed="0.000391"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:29.919334" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:01:29.919084" elapsed="0.000306"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:29.919070" elapsed="0.000343"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:01:29.919901" level="INFO">${j} = 1</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:01:29.919555" elapsed="0.000372"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:01:29.920862" level="INFO">${item} =         {
          "id": "1",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
  ...</msg>
<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="PASS" start="2026-04-08T01:01:29.920081" elapsed="0.000810"/>
</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="PASS" start="2026-04-08T01:01:29.921048" elapsed="0.000232"/>
</kw>
<var name="${iteration}">1</var>
<status status="PASS" start="2026-04-08T01:01:29.919038" elapsed="0.002313"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="PASS" start="2026-04-08T01:01:29.918761" elapsed="0.002622"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:01:29.921959" level="INFO">${final_text} = {
  "flow": [
        {
          "id": "1",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "...</msg>
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:01:29.921538" elapsed="0.000448"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T01:01:29.922043" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T01:01:29.922209" level="INFO">${data} = {
  "flow": [
        {
          "id": "1",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "...</msg>
<var>${data}</var>
<arg>folder=${folder}</arg>
<arg>name_prefix=post_</arg>
<arg>base_name=${base_name}</arg>
<arg>extension=${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>endline=${endline}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one 1 times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-08T01:01:29.863404" elapsed="0.058832"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T01:01:29.923472" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-flow/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T01:01:29.923243" elapsed="0.000292">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-flow/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-08T01:01:29.923630" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T01:01:29.922892" elapsed="0.000763"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:29.923969" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:01:29.923725" elapsed="0.000300"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:01:29.924533" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:01:29.924249" elapsed="0.000310"/>
</kw>
<status status="PASS" start="2026-04-08T01:01:29.924049" elapsed="0.000545"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:29.923707" elapsed="0.000909"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:01:29.926922" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:01:29.924767" elapsed="0.002182"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-08T01:01:29.926999" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T01:01:29.927149" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T01:01:29.922566" elapsed="0.004623"/>
</kw>
<kw name="Post_To_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:29.928695" level="INFO">/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:29.928451" elapsed="0.000290"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:29.929174" level="INFO">{
  "flow": [
        {
          "id": "1",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.1/32"
          },
          "flow-name": "Flow-1",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 1
                      }
                    }
                  ]
                }
              }
            ]
          }
        }
  ]
}</msg>
<arg>${data}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:29.928894" elapsed="0.000332"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:29.929622" level="INFO">{'Content-Type': 'application/json'}</msg>
<arg>${content_type}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:29.929377" elapsed="0.000288"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:29.930048" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:29.929815" elapsed="0.000276"/>
</kw>
<kw name="Join_Two_Headers" owner="TemplatedRequests">
<kw name="Copy Dictionary" owner="Collections">
<msg time="2026-04-08T01:01:29.931034" level="INFO">${accumulator} = {'Content-Type': 'application/json'}</msg>
<var>${accumulator}</var>
<arg>${first}</arg>
<doc>Returns a copy of the given dictionary.</doc>
<status status="PASS" start="2026-04-08T01:01:29.930841" elapsed="0.000219"/>
</kw>
<kw name="Get Dictionary Items" owner="Collections">
<msg time="2026-04-08T01:01:29.931405" level="INFO">${items_to_add} = []</msg>
<var>${items_to_add}</var>
<arg>${second}</arg>
<doc>Returns items of the given ``dictionary`` as a list.</doc>
<status status="PASS" start="2026-04-08T01:01:29.931235" elapsed="0.000196"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${accumulator}</arg>
<arg>@{items_to_add}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:01:29.931580" elapsed="0.000232"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:29.932246" level="INFO">{'Content-Type': 'application/json'}</msg>
<arg>${accumulator}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:29.931968" elapsed="0.000322"/>
</kw>
<return>
<value>${accumulator}</value>
<status status="PASS" start="2026-04-08T01:01:29.932331" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T01:01:29.932484" level="INFO">${headers} = {'Content-Type': 'application/json'}</msg>
<var>${headers}</var>
<arg>first=${content_type}</arg>
<arg>second=${accept}</arg>
<doc>Take two dicts, join them, return result. Second argument values take precedence.</doc>
<status status="PASS" start="2026-04-08T01:01:29.930435" elapsed="0.002073"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="POST On Session" owner="RequestsLibrary">
<msg time="2026-04-08T01:01:29.947628" level="INFO">POST Request : url=http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node01s3bfo0y24i1es90l47mavglv0.node0', 'Content-Length': '777', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body={
  "flow": [
        {
          "id": "1",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.1/32"
          },
          "flow-name": "Flow-1",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 1
                      }
                    }
                  ]
                }
              }
            ]
          }
        }
  ]
} 
 </msg>
<msg time="2026-04-08T01:01:29.947707" level="INFO">POST Response : url=http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0 
 status=201, reason=Created 
 headers={'Location': 'http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0/flow=1', 'Content-Length': '0'} 
 body=None 
 </msg>
<msg time="2026-04-08T01:01:29.947830" level="INFO">${response} = &lt;Response [201]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T01:01:29.934825" elapsed="0.013041"/>
</kw>
<status status="PASS" start="2026-04-08T01:01:29.932578" elapsed="0.015351"/>
</branch>
<branch type="ELSE">
<kw name="POST On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:29.948212" elapsed="0.000040"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:01:29.947966" elapsed="0.000350"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:29.932560" elapsed="0.015786"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:29.953052" level="INFO"/>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:29.949799" elapsed="0.003318"/>
</kw>
<status status="PASS" start="2026-04-08T01:01:29.949487" elapsed="0.003701"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:29.949461" elapsed="0.003763"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:29.956820" level="INFO">201</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:29.953606" elapsed="0.003278"/>
</kw>
<status status="PASS" start="2026-04-08T01:01:29.953301" elapsed="0.003629"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:29.953278" elapsed="0.003686"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:01:29.957781" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:01:29.957255" elapsed="0.000564"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:29.958279" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:01:29.957917" elapsed="0.000441"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:01:29.959027" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:01:29.958617" elapsed="0.000445"/>
</kw>
<status status="PASS" start="2026-04-08T01:01:29.958391" elapsed="0.000720"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:29.957891" elapsed="0.001249"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:01:29.959876" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:01:29.959385" elapsed="0.000528"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:29.960359" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:01:29.960009" elapsed="0.000429"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:01:29.961128" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:01:29.960699" elapsed="0.000486"/>
</kw>
<status status="PASS" start="2026-04-08T01:01:29.960472" elapsed="0.000763"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:29.959984" elapsed="0.001281"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:01:29.961474" elapsed="0.000501"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T01:01:29.962705" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:01:29.962301" elapsed="0.000442"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T01:01:29.962973" elapsed="0.003176"/>
</kw>
<arg>${response}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T01:01:29.948829" elapsed="0.017398"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T01:01:29.966404" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:01:29.966300" elapsed="0.000146"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:29.966282" elapsed="0.000186"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T01:01:29.969124" level="INFO">${text_normalized} = </msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T01:01:29.966612" elapsed="0.002539"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T01:01:29.969214" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T01:01:29.969368" level="INFO">${response_text} = </msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>data=${data}</arg>
<arg>content_type=${content_type}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>POST data to given URI, check status code and return response text.
${content_type} and ${accept} are mandatory Python objects with headers to use.
If ${normalize_json}, normalize text before returning.</doc>
<status status="PASS" start="2026-04-08T01:01:29.927511" elapsed="0.041881"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T01:01:29.969459" elapsed="0.000025"/>
</return>
<msg time="2026-04-08T01:01:29.969605" level="INFO">${response_text} = </msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>extension=json</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>content_type=${HEADERS_YANG_JSON}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>endline=${\n}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve URI and data from folder, call Post_To_Uri, return response text.</doc>
<status status="PASS" start="2026-04-08T01:01:29.774739" elapsed="0.194891"/>
</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=response</arg>
<arg>mapping=${mapping}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:29.969969" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:01:29.969735" elapsed="0.000301"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:29.969717" elapsed="0.000342"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T01:01:29.970091" elapsed="0.000026"/>
</return>
<arg>folder=${VAR_DIR}/add-flow</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<arg>iterations=${iter}</arg>
<doc>Add arguments sensible for JSON data, return Post_Templated response text.
Optionally, verification against response.json (no iteration) is called.
Only subset of JSON data is verified and returned if JMES path is specified in
file ${folder}/jmespath.expr.
Response status code must be one of values from ${explicit_status_codes} if specified or one of set
created from all positive HTTP status codes together with ${additional_allowed_status_codes}.</doc>
<status status="PASS" start="2026-04-08T01:01:29.772149" elapsed="0.198080"/>
</kw>
<var name="${switch}">1</var>
<status status="PASS" start="2026-04-08T01:01:29.321548" elapsed="0.648727"/>
</iter>
<iter>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-08T01:01:29.970924" level="INFO">&amp;{mapping} = { NODE=openflow:2 }</msg>
<var>&amp;{mapping}</var>
<arg>NODE=openflow:${switch}</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-08T01:01:29.970526" elapsed="0.000425"/>
</kw>
<kw name="Post_As_Json_Templated" owner="TemplatedRequests">
<kw name="Post_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:01:30.013114" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1.vanadium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:01:30.012714" elapsed="0.000428"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T01:01:30.013982" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-1.vanadium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T01:01:30.013662" elapsed="0.000386">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-1.vanadium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-08T01:01:30.014140" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T01:01:30.013324" elapsed="0.000862"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:01:30.014740" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:01:30.014356" elapsed="0.000412"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T01:01:30.015104" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-1/location.uri"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-1/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-08T01:01:30.015258" level="INFO">${template} = /rests/data/opendaylight-inventory:nodes/node=$NODE
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T01:01:30.014968" elapsed="0.000316"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:30.015686" level="INFO">/rests/data/opendaylight-inventory:nodes/node=$NODE
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:30.015442" elapsed="0.000288"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:30.016900" level="INFO">mapping: {'NODE': 'openflow:2'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:30.016439" elapsed="0.000522"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-08T01:01:30.017552" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-08T01:01:30.017125" elapsed="0.000453"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-08T01:01:30.018636" level="INFO">${value} = openflow:2</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-08T01:01:30.017971" elapsed="0.000707"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-08T01:01:30.020330" level="INFO">${encoded} = openflow%3A2</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-08T01:01:30.019939" elapsed="0.000427"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-08T01:01:30.020441" elapsed="0.000073"/>
</return>
<msg time="2026-04-08T01:01:30.020774" level="INFO">${encoded_value} = openflow%3A2</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-08T01:01:30.019124" elapsed="0.001689"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:01:30.021067" elapsed="0.000524"/>
</kw>
<var name="${key}">NODE</var>
<var name="${value}">openflow:2</var>
<status status="PASS" start="2026-04-08T01:01:30.017802" elapsed="0.003891"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-08T01:01:30.017633" elapsed="0.004097"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-08T01:01:30.021773" elapsed="0.000027"/>
</return>
<msg time="2026-04-08T01:01:30.021929" level="INFO">${mapping_to_use} = {'NODE': 'openflow%3A2'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-08T01:01:30.016089" elapsed="0.005866"/>
</kw>
<status status="PASS" start="2026-04-08T01:01:30.015797" elapsed="0.006189"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:30.022246" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:01:30.022011" elapsed="0.000295"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:30.015779" elapsed="0.006547"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:01:30.024298" level="INFO">${final_text} = /rests/data/opendaylight-inventory:nodes/node=openflow%3A2</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:01:30.022470" elapsed="0.001856"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T01:01:30.024376" elapsed="0.000028"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1/${file_name}.</doc>
<status status="PASS" start="2026-04-08T01:01:30.012087" elapsed="0.012412"/>
</kw>
<msg time="2026-04-08T01:01:30.024553" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:01:29.999829" elapsed="0.024772"/>
</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-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:30.037030" 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-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:30.049302" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:30.061562" elapsed="0.000027"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:30.061827" elapsed="0.000023"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:30.062006" elapsed="0.000020"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:30.062394" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:01:30.062247" elapsed="0.000203"/>
</branch>
<status status="NOT RUN" start="2026-04-08T01:01:30.062232" elapsed="0.000241"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:30.062616" elapsed="0.000023"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:30.062788" elapsed="0.000020"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:30.062956" elapsed="0.000020"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-08T01:01:30.062202" elapsed="0.000808"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-08T01:01:30.062079" elapsed="0.000957"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:30.063197" elapsed="0.000022"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-08T01:01:30.063275" elapsed="0.000014"/>
</return>
<msg time="2026-04-08T01:01:30.063388" level="INFO">${uri} = /rests/data/opendaylight-inventory:nodes/node=openflow%3A2</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one 1 times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-08T01:01:29.995680" elapsed="0.067733"/>
</kw>
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:01:30.074303" elapsed="0.000341"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:01:30.087975" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1.vanadium/post_data.prolog.json</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:01:30.087593" elapsed="0.000410"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T01:01:30.088777" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-1.vanadium/post_data.prolog.json' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T01:01:30.088567" elapsed="0.000286">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-1.vanadium/post_data.prolog.json' does not exist.</status>
</kw>
<msg time="2026-04-08T01:01:30.088946" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T01:01:30.088232" elapsed="0.000739"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:01:30.089536" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1/post_data.prolog.json</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:01:30.089135" elapsed="0.000428"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T01:01:30.089864" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-1/post_data.prolog.json"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-1/post_data.prolog.json&lt;/a&gt;'.</msg>
<msg time="2026-04-08T01:01:30.089990" level="INFO">${template} = {
  "flow-node-inventory:group": [
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T01:01:30.089731" elapsed="0.000284"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:30.090469" level="INFO">{
  "flow-node-inventory:group": [
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:30.090224" elapsed="0.000289"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="NOT RUN" start="2026-04-08T01:01:30.090872" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:01:30.090581" elapsed="0.000348"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:01:30.091409" level="INFO">${mapping_to_use} = {'NODE': 'openflow:2'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:01:30.091100" elapsed="0.000335"/>
</kw>
<status status="PASS" start="2026-04-08T01:01:30.090953" elapsed="0.000517"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:30.090562" elapsed="0.000929"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:01:30.092062" level="INFO">${final_text} = {
  "flow-node-inventory:group": [</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:01:30.091638" elapsed="0.000451"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T01:01:30.092137" elapsed="0.000043"/>
</return>
<msg time="2026-04-08T01:01:30.092304" level="INFO">${prolog} = {
  "flow-node-inventory:group": [</msg>
<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-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1/${file_name}.</doc>
<status status="PASS" start="2026-04-08T01:01:30.086963" elapsed="0.005366"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:01:30.105738" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1.vanadium/post_data.epilog.json</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:01:30.105363" elapsed="0.000403"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T01:01:30.106487" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-1.vanadium/post_data.epilog.json' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T01:01:30.106275" elapsed="0.000275">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-1.vanadium/post_data.epilog.json' does not exist.</status>
</kw>
<msg time="2026-04-08T01:01:30.106641" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T01:01:30.105929" elapsed="0.000735"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:01:30.107226" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1/post_data.epilog.json</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:01:30.106830" elapsed="0.000423"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T01:01:30.107553" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-1/post_data.epilog.json"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-1/post_data.epilog.json&lt;/a&gt;'.</msg>
<msg time="2026-04-08T01:01:30.107678" level="INFO">${template} =   ]
}
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T01:01:30.107419" elapsed="0.000283"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:30.108115" level="INFO">  ]
}
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:30.107860" elapsed="0.000313"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="NOT RUN" start="2026-04-08T01:01:30.108529" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:01:30.108241" elapsed="0.000345"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:01:30.109073" level="INFO">${mapping_to_use} = {'NODE': 'openflow:2'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:01:30.108778" elapsed="0.000321"/>
</kw>
<status status="PASS" start="2026-04-08T01:01:30.108610" elapsed="0.000523"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:30.108222" elapsed="0.000947"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:01:30.109738" level="INFO">${final_text} =   ]
}</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:01:30.109318" elapsed="0.000446"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T01:01:30.109812" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T01:01:30.109960" level="INFO">${epilog} =   ]
}</msg>
<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-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1/${file_name}.</doc>
<status status="PASS" start="2026-04-08T01:01:30.104718" elapsed="0.005267"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:01:30.123246" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1.vanadium/data.item.json</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:01:30.122861" elapsed="0.000413"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T01:01:30.124101" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-1.vanadium/data.item.json' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T01:01:30.123767" elapsed="0.000412">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-1.vanadium/data.item.json' does not exist.</status>
</kw>
<msg time="2026-04-08T01:01:30.124272" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T01:01:30.123436" elapsed="0.000861"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:01:30.124860" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1/data.item.json</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:01:30.124462" elapsed="0.000425"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T01:01:30.125197" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-1/data.item.json"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-1/data.item.json&lt;/a&gt;'.</msg>
<msg time="2026-04-08T01:01:30.125324" level="INFO">${template} =         {
          "group-id": ${i}000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
       ...</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T01:01:30.125048" elapsed="0.000303"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:30.125757" level="INFO">        {
          "group-id": ${i}000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-${i}",
          "group-type": "group-select"
        }
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:30.125512" elapsed="0.000292"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="NOT RUN" start="2026-04-08T01:01:30.126170" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:01:30.125871" elapsed="0.000359"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:01:30.126689" level="INFO">${mapping_to_use} = {'NODE': 'openflow:2'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:01:30.126400" elapsed="0.000315"/>
</kw>
<status status="PASS" start="2026-04-08T01:01:30.126254" elapsed="0.000495"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:30.125853" elapsed="0.000917"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:01:30.127501" level="INFO">${final_text} =         {
          "group-id": ${i}000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
       ...</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:01:30.126917" elapsed="0.000613"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T01:01:30.127577" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T01:01:30.127729" level="INFO">${item_template} =         {
          "group-id": ${i}000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
       ...</msg>
<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-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1/${file_name}.</doc>
<status status="PASS" start="2026-04-08T01:01:30.122321" elapsed="0.005435"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:01:30.128172" level="INFO">${items} = []</msg>
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:01:30.127919" elapsed="0.000280"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:01:30.128737" level="INFO">${separator} = ,
</msg>
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:01:30.128357" elapsed="0.000407"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:30.129407" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:01:30.129151" elapsed="0.000313"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:30.129137" elapsed="0.000350"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:01:30.129980" level="INFO">${j} = 1</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:01:30.129630" elapsed="0.000376"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:01:30.130968" level="INFO">${item} =         {
          "group-id": 1000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
          ...</msg>
<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="PASS" start="2026-04-08T01:01:30.130214" elapsed="0.000782"/>
</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="PASS" start="2026-04-08T01:01:30.131174" elapsed="0.000202"/>
</kw>
<var name="${iteration}">1</var>
<status status="PASS" start="2026-04-08T01:01:30.129105" elapsed="0.002309"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="PASS" start="2026-04-08T01:01:30.128820" elapsed="0.002624"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:01:30.132027" level="INFO">${final_text} = {
  "flow-node-inventory:group": [
        {
          "group-id": 1000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
   ...</msg>
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:01:30.131599" elapsed="0.000456"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T01:01:30.132111" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T01:01:30.132276" level="INFO">${data} = {
  "flow-node-inventory:group": [
        {
          "group-id": 1000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
   ...</msg>
<var>${data}</var>
<arg>folder=${folder}</arg>
<arg>name_prefix=post_</arg>
<arg>base_name=${base_name}</arg>
<arg>extension=${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>endline=${endline}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one 1 times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-08T01:01:30.073439" elapsed="0.058864"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T01:01:30.133581" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-1/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T01:01:30.133353" elapsed="0.000289">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-1/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-08T01:01:30.133732" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T01:01:30.132992" elapsed="0.000764"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:30.134195" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:01:30.133825" elapsed="0.000427"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:01:30.134743" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:01:30.134451" elapsed="0.000317"/>
</kw>
<status status="PASS" start="2026-04-08T01:01:30.134276" elapsed="0.000527"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:30.133807" elapsed="0.001017"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:01:30.137145" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:01:30.134976" elapsed="0.002210"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-08T01:01:30.137237" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T01:01:30.137388" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T01:01:30.132635" elapsed="0.004777"/>
</kw>
<kw name="Post_To_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:30.138916" level="INFO">/rests/data/opendaylight-inventory:nodes/node=openflow%3A2</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:30.138671" elapsed="0.000290"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:30.139368" level="INFO">{
  "flow-node-inventory:group": [
        {
          "group-id": 1000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-1",
          "group-type": "group-select"
        }
  ]
}</msg>
<arg>${data}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:30.139115" elapsed="0.000300"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:30.139806" level="INFO">{'Content-Type': 'application/json'}</msg>
<arg>${content_type}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:30.139566" elapsed="0.000283"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:30.140255" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:30.140000" elapsed="0.000298"/>
</kw>
<kw name="Join_Two_Headers" owner="TemplatedRequests">
<kw name="Copy Dictionary" owner="Collections">
<msg time="2026-04-08T01:01:30.141217" level="INFO">${accumulator} = {'Content-Type': 'application/json'}</msg>
<var>${accumulator}</var>
<arg>${first}</arg>
<doc>Returns a copy of the given dictionary.</doc>
<status status="PASS" start="2026-04-08T01:01:30.140917" elapsed="0.000360"/>
</kw>
<kw name="Get Dictionary Items" owner="Collections">
<msg time="2026-04-08T01:01:30.141611" level="INFO">${items_to_add} = []</msg>
<var>${items_to_add}</var>
<arg>${second}</arg>
<doc>Returns items of the given ``dictionary`` as a list.</doc>
<status status="PASS" start="2026-04-08T01:01:30.141436" elapsed="0.000201"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${accumulator}</arg>
<arg>@{items_to_add}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:01:30.141816" elapsed="0.000193"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:30.142428" level="INFO">{'Content-Type': 'application/json'}</msg>
<arg>${accumulator}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:30.142180" elapsed="0.000291"/>
</kw>
<return>
<value>${accumulator}</value>
<status status="PASS" start="2026-04-08T01:01:30.142512" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T01:01:30.142666" level="INFO">${headers} = {'Content-Type': 'application/json'}</msg>
<var>${headers}</var>
<arg>first=${content_type}</arg>
<arg>second=${accept}</arg>
<doc>Take two dicts, join them, return result. Second argument values take precedence.</doc>
<status status="PASS" start="2026-04-08T01:01:30.140495" elapsed="0.002195"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="POST On Session" owner="RequestsLibrary">
<msg time="2026-04-08T01:01:30.157898" level="INFO">POST Request : url=http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A2 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A2 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node01s3bfo0y24i1es90l47mavglv0.node0', 'Content-Length': '560', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body={
  "flow-node-inventory:group": [
        {
          "group-id": 1000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-1",
          "group-type": "group-select"
        }
  ]
} 
 </msg>
<msg time="2026-04-08T01:01:30.158016" level="INFO">POST Response : url=http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A2 
 status=201, reason=Created 
 headers={'Location': 'http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A2/flow-node-inventory:group=1000', 'Content-Length': '0'} 
 body=None 
 </msg>
<msg time="2026-04-08T01:01:30.158284" level="INFO">${response} = &lt;Response [201]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T01:01:30.144988" elapsed="0.013356"/>
</kw>
<status status="PASS" start="2026-04-08T01:01:30.142760" elapsed="0.015689"/>
</branch>
<branch type="ELSE">
<kw name="POST On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:30.158860" elapsed="0.000047"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:01:30.158510" elapsed="0.000495"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:30.142742" elapsed="0.016311"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:30.166376" level="INFO"/>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:30.161436" elapsed="0.005003"/>
</kw>
<status status="PASS" start="2026-04-08T01:01:30.160912" elapsed="0.005577"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:30.160871" elapsed="0.005654"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:30.170493" level="INFO">201</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:30.166930" elapsed="0.003630"/>
</kw>
<status status="PASS" start="2026-04-08T01:01:30.166606" elapsed="0.004004"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:30.166583" elapsed="0.004065"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:01:30.171502" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:01:30.170905" elapsed="0.000637"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:30.171996" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:01:30.171644" elapsed="0.000433"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:01:30.172862" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:01:30.172375" elapsed="0.000525"/>
</kw>
<status status="PASS" start="2026-04-08T01:01:30.172112" elapsed="0.000839"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:30.171616" elapsed="0.001368"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:01:30.173774" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:01:30.173241" elapsed="0.000571"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:30.174279" elapsed="0.000032"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:01:30.173912" elapsed="0.000451"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:01:30.175065" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:01:30.174636" elapsed="0.000465"/>
</kw>
<status status="PASS" start="2026-04-08T01:01:30.174397" elapsed="0.000774"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:30.173886" elapsed="0.001319"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:01:30.175430" elapsed="0.000507"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T01:01:30.176743" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:01:30.176284" elapsed="0.000498"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T01:01:30.177014" elapsed="0.002616"/>
</kw>
<arg>${response}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T01:01:30.159872" elapsed="0.019821"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T01:01:30.179873" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:01:30.179766" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:30.179748" elapsed="0.000190"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T01:01:30.182427" level="INFO">${text_normalized} = </msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T01:01:30.180086" elapsed="0.002368"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T01:01:30.182501" elapsed="0.000032"/>
</return>
<msg time="2026-04-08T01:01:30.182659" level="INFO">${response_text} = </msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>data=${data}</arg>
<arg>content_type=${content_type}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>POST data to given URI, check status code and return response text.
${content_type} and ${accept} are mandatory Python objects with headers to use.
If ${normalize_json}, normalize text before returning.</doc>
<status status="PASS" start="2026-04-08T01:01:30.137735" elapsed="0.044948"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T01:01:30.182751" elapsed="0.000026"/>
</return>
<msg time="2026-04-08T01:01:30.182900" level="INFO">${response_text} = </msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>extension=json</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>content_type=${HEADERS_YANG_JSON}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>endline=${\n}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve URI and data from folder, call Post_To_Uri, return response text.</doc>
<status status="PASS" start="2026-04-08T01:01:29.984915" elapsed="0.198009"/>
</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=response</arg>
<arg>mapping=${mapping}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:30.183282" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:01:30.183027" elapsed="0.000322"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:30.183010" elapsed="0.000363"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T01:01:30.183405" elapsed="0.000025"/>
</return>
<arg>folder=${VAR_DIR}/add-group-1</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<arg>iterations=${iter}</arg>
<doc>Add arguments sensible for JSON data, return Post_Templated response text.
Optionally, verification against response.json (no iteration) is called.
Only subset of JSON data is verified and returned if JMES path is specified in
file ${folder}/jmespath.expr.
Response status code must be one of values from ${explicit_status_codes} if specified or one of set
created from all positive HTTP status codes together with ${additional_allowed_status_codes}.</doc>
<status status="PASS" start="2026-04-08T01:01:29.982225" elapsed="0.201299"/>
</kw>
<kw name="Post_As_Json_Templated" owner="TemplatedRequests">
<kw name="Post_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:01:30.226006" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2.vanadium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:01:30.225623" elapsed="0.000412"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T01:01:30.226914" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-2.vanadium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T01:01:30.226559" elapsed="0.000435">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-2.vanadium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-08T01:01:30.227087" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T01:01:30.226220" elapsed="0.000892"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:01:30.227691" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:01:30.227305" elapsed="0.000412"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T01:01:30.228018" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-2/location.uri"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-2/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-08T01:01:30.228233" level="INFO">${template} = /rests/data/opendaylight-inventory:nodes/node=$NODE
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T01:01:30.227880" elapsed="0.000380"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:30.228684" level="INFO">/rests/data/opendaylight-inventory:nodes/node=$NODE
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:30.228418" elapsed="0.000309"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:30.229906" level="INFO">mapping: {'NODE': 'openflow:2'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:30.229437" elapsed="0.000514"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-08T01:01:30.230558" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-08T01:01:30.230114" elapsed="0.000471"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-08T01:01:30.231661" level="INFO">${value} = openflow:2</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-08T01:01:30.230995" elapsed="0.000706"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-08T01:01:30.233393" level="INFO">${encoded} = openflow%3A2</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-08T01:01:30.233000" elapsed="0.000429"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-08T01:01:30.233504" elapsed="0.000074"/>
</return>
<msg time="2026-04-08T01:01:30.233837" level="INFO">${encoded_value} = openflow%3A2</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-08T01:01:30.232150" elapsed="0.001728"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:01:30.234101" elapsed="0.000685"/>
</kw>
<var name="${key}">NODE</var>
<var name="${value}">openflow:2</var>
<status status="PASS" start="2026-04-08T01:01:30.230825" elapsed="0.004058"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-08T01:01:30.230646" elapsed="0.004277"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-08T01:01:30.234967" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T01:01:30.235124" level="INFO">${mapping_to_use} = {'NODE': 'openflow%3A2'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-08T01:01:30.229090" elapsed="0.006060"/>
</kw>
<status status="PASS" start="2026-04-08T01:01:30.228797" elapsed="0.006401"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:30.235376" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:01:30.235223" elapsed="0.000210"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:30.228777" elapsed="0.006676"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:01:30.236133" level="INFO">${final_text} = /rests/data/opendaylight-inventory:nodes/node=openflow%3A2</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:01:30.235596" elapsed="0.000581"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T01:01:30.236226" 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-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2/${file_name}.</doc>
<status status="PASS" start="2026-04-08T01:01:30.224996" elapsed="0.011354"/>
</kw>
<msg time="2026-04-08T01:01:30.236404" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:01:30.212619" elapsed="0.023834"/>
</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-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:30.249106" 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-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:30.261346" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:30.273525" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:30.273725" elapsed="0.000021"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:30.273901" elapsed="0.000020"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:30.274283" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:01:30.274120" elapsed="0.000220"/>
</branch>
<status status="NOT RUN" start="2026-04-08T01:01:30.274106" elapsed="0.000257"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:30.274505" elapsed="0.000020"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:30.274674" elapsed="0.000020"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:30.274840" elapsed="0.000020"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-08T01:01:30.274077" elapsed="0.000816"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-08T01:01:30.273974" elapsed="0.000944"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:30.275066" elapsed="0.000020"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-08T01:01:30.275140" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T01:01:30.275271" level="INFO">${uri} = /rests/data/opendaylight-inventory:nodes/node=openflow%3A2</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one 1 times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-08T01:01:30.208409" elapsed="0.066889"/>
</kw>
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:01:30.286079" elapsed="0.000349"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:01:30.299710" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2.vanadium/post_data.prolog.json</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:01:30.299332" elapsed="0.000407"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T01:01:30.300694" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-2.vanadium/post_data.prolog.json' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T01:01:30.300251" elapsed="0.000547">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-2.vanadium/post_data.prolog.json' does not exist.</status>
</kw>
<msg time="2026-04-08T01:01:30.300926" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T01:01:30.299902" elapsed="0.001050"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:01:30.301542" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2/post_data.prolog.json</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:01:30.301130" elapsed="0.000439"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T01:01:30.301865" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-2/post_data.prolog.json"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-2/post_data.prolog.json&lt;/a&gt;'.</msg>
<msg time="2026-04-08T01:01:30.302457" level="INFO">${template} = {
  "flow-node-inventory:group": [
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T01:01:30.301731" elapsed="0.000752"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:30.302895" level="INFO">{
  "flow-node-inventory:group": [
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:30.302648" elapsed="0.000327"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="NOT RUN" start="2026-04-08T01:01:30.303363" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:01:30.303052" elapsed="0.000369"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:01:30.303885" level="INFO">${mapping_to_use} = {'NODE': 'openflow:2'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:01:30.303593" elapsed="0.000318"/>
</kw>
<status status="PASS" start="2026-04-08T01:01:30.303446" elapsed="0.000500"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:30.303026" elapsed="0.000941"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:01:30.304577" level="INFO">${final_text} = {
  "flow-node-inventory:group": [</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:01:30.304113" elapsed="0.000491"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T01:01:30.304657" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T01:01:30.304806" level="INFO">${prolog} = {
  "flow-node-inventory:group": [</msg>
<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-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2/${file_name}.</doc>
<status status="PASS" start="2026-04-08T01:01:30.298644" elapsed="0.006188"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:01:30.318151" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2.vanadium/post_data.epilog.json</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:01:30.317780" elapsed="0.000414"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T01:01:30.318902" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-2.vanadium/post_data.epilog.json' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T01:01:30.318689" elapsed="0.000275">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-2.vanadium/post_data.epilog.json' does not exist.</status>
</kw>
<msg time="2026-04-08T01:01:30.319056" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T01:01:30.318359" elapsed="0.000721"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:01:30.319635" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2/post_data.epilog.json</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:01:30.319258" elapsed="0.000404"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T01:01:30.319954" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-2/post_data.epilog.json"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-2/post_data.epilog.json&lt;/a&gt;'.</msg>
<msg time="2026-04-08T01:01:30.320076" level="INFO">${template} =   ]
}
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T01:01:30.319822" elapsed="0.000278"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:30.320531" level="INFO">  ]
}
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:30.320269" elapsed="0.000305"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="NOT RUN" start="2026-04-08T01:01:30.320924" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:01:30.320641" elapsed="0.000339"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:01:30.321455" level="INFO">${mapping_to_use} = {'NODE': 'openflow:2'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:01:30.321149" elapsed="0.000333"/>
</kw>
<status status="PASS" start="2026-04-08T01:01:30.321004" elapsed="0.000513"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:30.320622" elapsed="0.000916"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:01:30.322094" level="INFO">${final_text} =   ]
}</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:01:30.321681" elapsed="0.000439"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T01:01:30.322184" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T01:01:30.322333" level="INFO">${epilog} =   ]
}</msg>
<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-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2/${file_name}.</doc>
<status status="PASS" start="2026-04-08T01:01:30.317151" elapsed="0.005206"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:01:30.335474" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2.vanadium/data.item.json</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:01:30.335090" elapsed="0.000412"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T01:01:30.336207" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-2.vanadium/data.item.json' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T01:01:30.335988" elapsed="0.000282">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-2.vanadium/data.item.json' does not exist.</status>
</kw>
<msg time="2026-04-08T01:01:30.336362" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T01:01:30.335662" elapsed="0.000741"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:01:30.336981" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2/data.item.json</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:01:30.336569" elapsed="0.000439"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T01:01:30.337319" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-2/data.item.json"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-2/data.item.json&lt;/a&gt;'.</msg>
<msg time="2026-04-08T01:01:30.337443" level="INFO">${template} =     {
      "group-id": ${i},
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": ${i}000,
            "action": [
              {
               ...</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T01:01:30.337184" elapsed="0.000286"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:30.337867" level="INFO">    {
      "group-id": ${i},
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": ${i}000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": ${i}000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-${i}",
      "group-type": "group-ff"
    }
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:30.337626" elapsed="0.000288"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="NOT RUN" start="2026-04-08T01:01:30.338282" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:01:30.337982" elapsed="0.000358"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:01:30.338800" level="INFO">${mapping_to_use} = {'NODE': 'openflow:2'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:01:30.338510" elapsed="0.000316"/>
</kw>
<status status="PASS" start="2026-04-08T01:01:30.338364" elapsed="0.000496"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:30.337963" elapsed="0.000918"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:01:30.339623" level="INFO">${final_text} =     {
      "group-id": ${i},
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": ${i}000,
            "action": [
              {
               ...</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:01:30.339027" elapsed="0.000624"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T01:01:30.339699" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T01:01:30.339850" level="INFO">${item_template} =     {
      "group-id": ${i},
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": ${i}000,
            "action": [
              {
               ...</msg>
<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-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2/${file_name}.</doc>
<status status="PASS" start="2026-04-08T01:01:30.334552" elapsed="0.005324"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:01:30.340293" level="INFO">${items} = []</msg>
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:01:30.340037" elapsed="0.000281"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:01:30.340848" level="INFO">${separator} = ,
</msg>
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:01:30.340490" elapsed="0.000383"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:30.341519" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:01:30.341285" elapsed="0.000291"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:30.341271" elapsed="0.000328"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:01:30.342085" level="INFO">${j} = 1</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:01:30.341739" elapsed="0.000373"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:01:30.343064" level="INFO">${item} =     {
      "group-id": 1,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 1000,
            "action": [
              {
                "orde...</msg>
<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="PASS" start="2026-04-08T01:01:30.342281" elapsed="0.000812"/>
</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="PASS" start="2026-04-08T01:01:30.343267" elapsed="0.000202"/>
</kw>
<var name="${iteration}">1</var>
<status status="PASS" start="2026-04-08T01:01:30.341238" elapsed="0.002270"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="PASS" start="2026-04-08T01:01:30.340930" elapsed="0.002608"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:01:30.344115" level="INFO">${final_text} = {
  "flow-node-inventory:group": [
    {
      "group-id": 1,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 1000,
            "action": [
  ...</msg>
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:01:30.343691" elapsed="0.000451"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T01:01:30.344216" elapsed="0.000031"/>
</return>
<msg time="2026-04-08T01:01:30.344392" level="INFO">${data} = {
  "flow-node-inventory:group": [
    {
      "group-id": 1,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 1000,
            "action": [
  ...</msg>
<var>${data}</var>
<arg>folder=${folder}</arg>
<arg>name_prefix=post_</arg>
<arg>base_name=${base_name}</arg>
<arg>extension=${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>endline=${endline}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one 1 times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-08T01:01:30.285231" elapsed="0.059190"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T01:01:30.345665" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-2/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T01:01:30.345435" elapsed="0.000298">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-2/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-08T01:01:30.345823" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T01:01:30.345084" elapsed="0.000763"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:30.346175" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:01:30.345917" elapsed="0.000317"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:01:30.346724" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:01:30.346439" elapsed="0.000310"/>
</kw>
<status status="PASS" start="2026-04-08T01:01:30.346258" elapsed="0.000526"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:30.345899" elapsed="0.000906"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:01:30.349124" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:01:30.346954" elapsed="0.002196"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-08T01:01:30.349213" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T01:01:30.349363" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T01:01:30.344762" elapsed="0.004626"/>
</kw>
<kw name="Post_To_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:30.350919" level="INFO">/rests/data/opendaylight-inventory:nodes/node=openflow%3A2</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:30.350676" elapsed="0.000288"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:30.351369" level="INFO">{
  "flow-node-inventory:group": [
    {
      "group-id": 1,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 1000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 1000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-1",
      "group-type": "group-ff"
    }
  ]
}</msg>
<arg>${data}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:30.351117" elapsed="0.000298"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:30.352080" level="INFO">{'Content-Type': 'application/json'}</msg>
<arg>${content_type}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:30.351564" elapsed="0.000561"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:30.352549" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:30.352300" elapsed="0.000292"/>
</kw>
<kw name="Join_Two_Headers" owner="TemplatedRequests">
<kw name="Copy Dictionary" owner="Collections">
<msg time="2026-04-08T01:01:30.353406" level="INFO">${accumulator} = {'Content-Type': 'application/json'}</msg>
<var>${accumulator}</var>
<arg>${first}</arg>
<doc>Returns a copy of the given dictionary.</doc>
<status status="PASS" start="2026-04-08T01:01:30.353209" elapsed="0.000222"/>
</kw>
<kw name="Get Dictionary Items" owner="Collections">
<msg time="2026-04-08T01:01:30.353839" level="INFO">${items_to_add} = []</msg>
<var>${items_to_add}</var>
<arg>${second}</arg>
<doc>Returns items of the given ``dictionary`` as a list.</doc>
<status status="PASS" start="2026-04-08T01:01:30.353662" elapsed="0.000202"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${accumulator}</arg>
<arg>@{items_to_add}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:01:30.354014" elapsed="0.000210"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:30.354630" level="INFO">{'Content-Type': 'application/json'}</msg>
<arg>${accumulator}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:30.354380" elapsed="0.000296"/>
</kw>
<return>
<value>${accumulator}</value>
<status status="PASS" start="2026-04-08T01:01:30.354717" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T01:01:30.354868" level="INFO">${headers} = {'Content-Type': 'application/json'}</msg>
<var>${headers}</var>
<arg>first=${content_type}</arg>
<arg>second=${accept}</arg>
<doc>Take two dicts, join them, return result. Second argument values take precedence.</doc>
<status status="PASS" start="2026-04-08T01:01:30.352791" elapsed="0.002101"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="POST On Session" owner="RequestsLibrary">
<msg time="2026-04-08T01:01:30.368513" level="INFO">POST Request : url=http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A2 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A2 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node01s3bfo0y24i1es90l47mavglv0.node0', 'Content-Length': '460', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body={
  "flow-node-inventory:group": [
    {
      "group-id": 1,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 1000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 1000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-1",
      "group-type": "group-ff"
    }
  ]
} 
 </msg>
<msg time="2026-04-08T01:01:30.368578" level="INFO">POST Response : url=http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A2 
 status=201, reason=Created 
 headers={'Location': 'http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A2/flow-node-inventory:group=1', 'Content-Length': '0'} 
 body=None 
 </msg>
<msg time="2026-04-08T01:01:30.368770" level="INFO">${response} = &lt;Response [201]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T01:01:30.357233" elapsed="0.011596"/>
</kw>
<status status="PASS" start="2026-04-08T01:01:30.354963" elapsed="0.013972"/>
</branch>
<branch type="ELSE">
<kw name="POST On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:30.369395" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:01:30.368998" elapsed="0.000550"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:30.354945" elapsed="0.014651"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:30.376926" level="INFO"/>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:30.371957" elapsed="0.005012"/>
</kw>
<status status="PASS" start="2026-04-08T01:01:30.371450" elapsed="0.005554"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:30.371408" elapsed="0.005620"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:30.379665" level="INFO">201</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:30.377318" elapsed="0.002392"/>
</kw>
<status status="PASS" start="2026-04-08T01:01:30.377082" elapsed="0.002662"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:30.377066" elapsed="0.002702"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:01:30.380370" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:01:30.379948" elapsed="0.000449"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:30.380708" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:01:30.380466" elapsed="0.000298"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:01:30.381264" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:01:30.380951" elapsed="0.000339"/>
</kw>
<status status="PASS" start="2026-04-08T01:01:30.380787" elapsed="0.000538"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:30.380449" elapsed="0.000898"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:01:30.381863" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:01:30.381506" elapsed="0.000383"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:30.382208" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:01:30.381957" elapsed="0.000308"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:01:30.382741" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:01:30.382449" elapsed="0.000318"/>
</kw>
<status status="PASS" start="2026-04-08T01:01:30.382288" elapsed="0.000515"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:30.381939" elapsed="0.000885"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:01:30.382978" elapsed="0.000360"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T01:01:30.383862" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:01:30.383572" elapsed="0.000316"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T01:01:30.384043" elapsed="0.002290"/>
</kw>
<arg>${response}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T01:01:30.370429" elapsed="0.015967"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T01:01:30.386574" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:01:30.386468" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:30.386450" elapsed="0.000191"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T01:01:30.389239" level="INFO">${text_normalized} = </msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T01:01:30.386792" elapsed="0.002474"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T01:01:30.389313" elapsed="0.000033"/>
</return>
<msg time="2026-04-08T01:01:30.389472" level="INFO">${response_text} = </msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>data=${data}</arg>
<arg>content_type=${content_type}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>POST data to given URI, check status code and return response text.
${content_type} and ${accept} are mandatory Python objects with headers to use.
If ${normalize_json}, normalize text before returning.</doc>
<status status="PASS" start="2026-04-08T01:01:30.349727" elapsed="0.039769"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T01:01:30.389563" elapsed="0.000026"/>
</return>
<msg time="2026-04-08T01:01:30.389715" level="INFO">${response_text} = </msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>extension=json</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>content_type=${HEADERS_YANG_JSON}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>endline=${\n}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve URI and data from folder, call Post_To_Uri, return response text.</doc>
<status status="PASS" start="2026-04-08T01:01:30.197400" elapsed="0.192339"/>
</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=response</arg>
<arg>mapping=${mapping}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:30.390078" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:01:30.389845" elapsed="0.000299"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:30.389827" elapsed="0.000357"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T01:01:30.390218" elapsed="0.000025"/>
</return>
<arg>folder=${VAR_DIR}/add-group-2</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<arg>iterations=${iter}</arg>
<doc>Add arguments sensible for JSON data, return Post_Templated response text.
Optionally, verification against response.json (no iteration) is called.
Only subset of JSON data is verified and returned if JMES path is specified in
file ${folder}/jmespath.expr.
Response status code must be one of values from ${explicit_status_codes} if specified or one of set
created from all positive HTTP status codes together with ${additional_allowed_status_codes}.</doc>
<status status="PASS" start="2026-04-08T01:01:30.194806" elapsed="0.195533"/>
</kw>
<kw name="Post_As_Json_Templated" owner="TemplatedRequests">
<kw name="Post_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:01:30.432788" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow.vanadium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:01:30.432415" elapsed="0.000401"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T01:01:30.433677" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-flow.vanadium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T01:01:30.433328" elapsed="0.000428">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-flow.vanadium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-08T01:01:30.433848" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T01:01:30.432978" elapsed="0.000895"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:01:30.434448" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:01:30.434037" elapsed="0.000438"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T01:01:30.434772" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-flow/location.uri"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-flow/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-08T01:01:30.434922" level="INFO">${template} = /rests/data/opendaylight-inventory:nodes/node=$NODE/flow-node-inventory:table=0
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T01:01:30.434637" elapsed="0.000343"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:30.435407" level="INFO">/rests/data/opendaylight-inventory:nodes/node=$NODE/flow-node-inventory:table=0
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:30.435139" elapsed="0.000312"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:30.436654" level="INFO">mapping: {'NODE': 'openflow:2'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:30.436142" elapsed="0.000557"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-08T01:01:30.437300" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-08T01:01:30.436865" elapsed="0.000461"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-08T01:01:30.438393" level="INFO">${value} = openflow:2</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-08T01:01:30.437727" elapsed="0.000707"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-08T01:01:30.440080" level="INFO">${encoded} = openflow%3A2</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-08T01:01:30.439705" elapsed="0.000410"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-08T01:01:30.440225" elapsed="0.000084"/>
</return>
<msg time="2026-04-08T01:01:30.440571" level="INFO">${encoded_value} = openflow%3A2</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-08T01:01:30.438886" elapsed="0.001725"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:01:30.440838" elapsed="0.000527"/>
</kw>
<var name="${key}">NODE</var>
<var name="${value}">openflow:2</var>
<status status="PASS" start="2026-04-08T01:01:30.437557" elapsed="0.003907"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-08T01:01:30.437381" elapsed="0.004122"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-08T01:01:30.441547" elapsed="0.000027"/>
</return>
<msg time="2026-04-08T01:01:30.441703" level="INFO">${mapping_to_use} = {'NODE': 'openflow%3A2'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-08T01:01:30.435815" elapsed="0.005913"/>
</kw>
<status status="PASS" start="2026-04-08T01:01:30.435520" elapsed="0.006241"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:30.441937" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:01:30.441786" elapsed="0.000206"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:30.435501" elapsed="0.006513"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:01:30.442708" level="INFO">${final_text} = /rests/data/opendaylight-inventory:nodes/node=openflow%3A2/flow-node-inventory:table=0</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:01:30.442171" elapsed="0.000565"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T01:01:30.442783" elapsed="0.000028"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow/${file_name}.</doc>
<status status="PASS" start="2026-04-08T01:01:30.431776" elapsed="0.011128"/>
</kw>
<msg time="2026-04-08T01:01:30.442957" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:01:30.419511" elapsed="0.023494"/>
</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-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:30.455487" 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-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:30.467722" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:30.480553" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:30.480753" elapsed="0.000022"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:30.480928" elapsed="0.000020"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:30.481329" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:01:30.481150" elapsed="0.000237"/>
</branch>
<status status="NOT RUN" start="2026-04-08T01:01:30.481135" elapsed="0.000275"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:30.481551" elapsed="0.000021"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:30.481722" elapsed="0.000019"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:30.481888" elapsed="0.000019"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-08T01:01:30.481105" elapsed="0.000835"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-08T01:01:30.481002" elapsed="0.000964"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:30.482113" elapsed="0.000020"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-08T01:01:30.482205" elapsed="0.000016"/>
</return>
<msg time="2026-04-08T01:01:30.482325" level="INFO">${uri} = /rests/data/opendaylight-inventory:nodes/node=openflow%3A2/flow-node-inventory:table=0</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one 1 times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-08T01:01:30.415334" elapsed="0.067017"/>
</kw>
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:01:30.493114" elapsed="0.000356"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:01:30.506762" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow.vanadium/post_data.prolog.json</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:01:30.506392" elapsed="0.000399"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T01:01:30.507520" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-flow.vanadium/post_data.prolog.json' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T01:01:30.507296" elapsed="0.000292">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-flow.vanadium/post_data.prolog.json' does not exist.</status>
</kw>
<msg time="2026-04-08T01:01:30.507678" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T01:01:30.506951" elapsed="0.000752"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:01:30.508275" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow/post_data.prolog.json</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:01:30.507865" elapsed="0.000437"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T01:01:30.508598" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-flow/post_data.prolog.json"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-flow/post_data.prolog.json&lt;/a&gt;'.</msg>
<msg time="2026-04-08T01:01:30.508798" level="INFO">${template} = {
  "flow": [
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T01:01:30.508464" elapsed="0.000359"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:30.509246" level="INFO">{
  "flow": [
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:30.508980" elapsed="0.000346"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="NOT RUN" start="2026-04-08T01:01:30.509683" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:01:30.509395" elapsed="0.000344"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:01:30.510217" level="INFO">${mapping_to_use} = {'NODE': 'openflow:2'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:01:30.509909" elapsed="0.000334"/>
</kw>
<status status="PASS" start="2026-04-08T01:01:30.509763" elapsed="0.000516"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:30.509376" elapsed="0.000924"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:01:30.510873" level="INFO">${final_text} = {
  "flow": [</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:01:30.510446" elapsed="0.000454"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T01:01:30.510948" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T01:01:30.511095" level="INFO">${prolog} = {
  "flow": [</msg>
<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-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow/${file_name}.</doc>
<status status="PASS" start="2026-04-08T01:01:30.505760" elapsed="0.005359"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:01:30.524636" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow.vanadium/post_data.epilog.json</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:01:30.524265" elapsed="0.000399"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T01:01:30.525374" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-flow.vanadium/post_data.epilog.json' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T01:01:30.525168" elapsed="0.000269">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-flow.vanadium/post_data.epilog.json' does not exist.</status>
</kw>
<msg time="2026-04-08T01:01:30.525528" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T01:01:30.524825" elapsed="0.000727"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:01:30.526092" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow/post_data.epilog.json</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:01:30.525716" elapsed="0.000402"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T01:01:30.526427" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-flow/post_data.epilog.json"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-flow/post_data.epilog.json&lt;/a&gt;'.</msg>
<msg time="2026-04-08T01:01:30.526549" level="INFO">${template} =   ]
}
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T01:01:30.526294" elapsed="0.000279"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:30.526967" level="INFO">  ]
}
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:30.526728" elapsed="0.000283"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="NOT RUN" start="2026-04-08T01:01:30.527378" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:01:30.527076" elapsed="0.000358"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:01:30.527890" level="INFO">${mapping_to_use} = {'NODE': 'openflow:2'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:01:30.527603" elapsed="0.000313"/>
</kw>
<status status="PASS" start="2026-04-08T01:01:30.527458" elapsed="0.000492"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:30.527058" elapsed="0.000914"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:01:30.528573" level="INFO">${final_text} =   ]
}</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:01:30.528137" elapsed="0.000462"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T01:01:30.528651" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T01:01:30.528799" level="INFO">${epilog} =   ]
}</msg>
<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-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow/${file_name}.</doc>
<status status="PASS" start="2026-04-08T01:01:30.523602" elapsed="0.005221"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:01:30.541958" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow.vanadium/data.item.json</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:01:30.541588" elapsed="0.000398"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T01:01:30.542692" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-flow.vanadium/data.item.json' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T01:01:30.542490" elapsed="0.000265">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-flow.vanadium/data.item.json' does not exist.</status>
</kw>
<msg time="2026-04-08T01:01:30.542845" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T01:01:30.542145" elapsed="0.000724"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:01:30.543426" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow/data.item.json</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:01:30.543032" elapsed="0.000421"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T01:01:30.543743" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-flow/data.item.json"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-flow/data.item.json&lt;/a&gt;'.</msg>
<msg time="2026-04-08T01:01:30.543866" level="INFO">${template} =         {
          "id": "${i}",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048...</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T01:01:30.543613" elapsed="0.000279"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:30.544324" level="INFO">        {
          "id": "${i}",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.${i}/32"
          },
          "flow-name": "Flow-${i}",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": ${i}
                      }
                    }
                  ]
                }
              }
            ]
          }
        }
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:30.544049" elapsed="0.000324"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="NOT RUN" start="2026-04-08T01:01:30.544733" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:01:30.544441" elapsed="0.000349"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:01:30.545268" level="INFO">${mapping_to_use} = {'NODE': 'openflow:2'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:01:30.544961" elapsed="0.000333"/>
</kw>
<status status="PASS" start="2026-04-08T01:01:30.544815" elapsed="0.000514"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:30.544422" elapsed="0.000929"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:01:30.546089" level="INFO">${final_text} =         {
          "id": "${i}",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048...</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:01:30.545497" elapsed="0.000626"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T01:01:30.546186" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T01:01:30.546341" level="INFO">${item_template} =         {
          "id": "${i}",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048...</msg>
<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-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow/${file_name}.</doc>
<status status="PASS" start="2026-04-08T01:01:30.541036" elapsed="0.005332"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:01:30.546766" level="INFO">${items} = []</msg>
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:01:30.546529" elapsed="0.000262"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:01:30.547321" level="INFO">${separator} = ,
</msg>
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:01:30.546947" elapsed="0.000399"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:30.547955" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:01:30.547723" elapsed="0.000288"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:30.547709" elapsed="0.000325"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:01:30.548607" level="INFO">${j} = 1</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:01:30.548222" elapsed="0.000411"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:01:30.550552" level="INFO">${item} =         {
          "id": "1",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
  ...</msg>
<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="PASS" start="2026-04-08T01:01:30.548788" elapsed="0.001792"/>
</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="PASS" start="2026-04-08T01:01:30.550738" elapsed="0.000194"/>
</kw>
<var name="${iteration}">1</var>
<status status="PASS" start="2026-04-08T01:01:30.547678" elapsed="0.003291"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="PASS" start="2026-04-08T01:01:30.547400" elapsed="0.003599"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:01:30.551594" level="INFO">${final_text} = {
  "flow": [
        {
          "id": "1",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "...</msg>
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:01:30.551150" elapsed="0.000472"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T01:01:30.551679" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T01:01:30.551826" level="INFO">${data} = {
  "flow": [
        {
          "id": "1",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "...</msg>
<var>${data}</var>
<arg>folder=${folder}</arg>
<arg>name_prefix=post_</arg>
<arg>base_name=${base_name}</arg>
<arg>extension=${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>endline=${endline}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one 1 times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-08T01:01:30.492268" elapsed="0.059583"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T01:01:30.553102" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-flow/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T01:01:30.552873" elapsed="0.000309">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-flow/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-08T01:01:30.553275" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T01:01:30.552537" elapsed="0.000763"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:30.553616" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:01:30.553372" elapsed="0.000300"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:01:30.554178" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:01:30.553872" elapsed="0.000334"/>
</kw>
<status status="PASS" start="2026-04-08T01:01:30.553696" elapsed="0.000545"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:30.553353" elapsed="0.000910"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:01:30.556614" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:01:30.554417" elapsed="0.002224"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-08T01:01:30.556692" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T01:01:30.556845" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T01:01:30.552211" elapsed="0.004659"/>
</kw>
<kw name="Post_To_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:30.558411" level="INFO">/rests/data/opendaylight-inventory:nodes/node=openflow%3A2/flow-node-inventory:table=0</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:30.558143" elapsed="0.000314"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:30.558843" level="INFO">{
  "flow": [
        {
          "id": "1",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.1/32"
          },
          "flow-name": "Flow-1",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 1
                      }
                    }
                  ]
                }
              }
            ]
          }
        }
  ]
}</msg>
<arg>${data}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:30.558609" elapsed="0.000283"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:30.559302" level="INFO">{'Content-Type': 'application/json'}</msg>
<arg>${content_type}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:30.559041" elapsed="0.000306"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:30.559782" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:30.559541" elapsed="0.000283"/>
</kw>
<kw name="Join_Two_Headers" owner="TemplatedRequests">
<kw name="Copy Dictionary" owner="Collections">
<msg time="2026-04-08T01:01:30.560663" level="INFO">${accumulator} = {'Content-Type': 'application/json'}</msg>
<var>${accumulator}</var>
<arg>${first}</arg>
<doc>Returns a copy of the given dictionary.</doc>
<status status="PASS" start="2026-04-08T01:01:30.560471" elapsed="0.000218"/>
</kw>
<kw name="Get Dictionary Items" owner="Collections">
<msg time="2026-04-08T01:01:30.561012" level="INFO">${items_to_add} = []</msg>
<var>${items_to_add}</var>
<arg>${second}</arg>
<doc>Returns items of the given ``dictionary`` as a list.</doc>
<status status="PASS" start="2026-04-08T01:01:30.560842" elapsed="0.000195"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${accumulator}</arg>
<arg>@{items_to_add}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:01:30.561202" elapsed="0.000190"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:30.561790" level="INFO">{'Content-Type': 'application/json'}</msg>
<arg>${accumulator}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:30.561547" elapsed="0.000287"/>
</kw>
<return>
<value>${accumulator}</value>
<status status="PASS" start="2026-04-08T01:01:30.561875" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T01:01:30.562026" level="INFO">${headers} = {'Content-Type': 'application/json'}</msg>
<var>${headers}</var>
<arg>first=${content_type}</arg>
<arg>second=${accept}</arg>
<doc>Take two dicts, join them, return result. Second argument values take precedence.</doc>
<status status="PASS" start="2026-04-08T01:01:30.560021" elapsed="0.002030"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="POST On Session" owner="RequestsLibrary">
<msg time="2026-04-08T01:01:30.576658" level="INFO">POST Request : url=http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A2/flow-node-inventory:table=0 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A2/flow-node-inventory:table=0 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node01s3bfo0y24i1es90l47mavglv0.node0', 'Content-Length': '777', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body={
  "flow": [
        {
          "id": "1",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.1/32"
          },
          "flow-name": "Flow-1",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 1
                      }
                    }
                  ]
                }
              }
            ]
          }
        }
  ]
} 
 </msg>
<msg time="2026-04-08T01:01:30.576734" level="INFO">POST Response : url=http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A2/flow-node-inventory:table=0 
 status=201, reason=Created 
 headers={'Location': 'http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A2/flow-node-inventory:table=0/flow=1', 'Content-Length': '0'} 
 body=None 
 </msg>
<msg time="2026-04-08T01:01:30.576870" level="INFO">${response} = &lt;Response [201]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T01:01:30.564525" elapsed="0.012381"/>
</kw>
<status status="PASS" start="2026-04-08T01:01:30.562122" elapsed="0.014848"/>
</branch>
<branch type="ELSE">
<kw name="POST On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:30.577250" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:01:30.577008" elapsed="0.000336"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:30.562105" elapsed="0.015270"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:30.582085" level="INFO"/>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:30.578803" elapsed="0.003343"/>
</kw>
<status status="PASS" start="2026-04-08T01:01:30.578490" elapsed="0.003725"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:30.578464" elapsed="0.003787"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:30.585819" level="INFO">201</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:30.582644" elapsed="0.003240"/>
</kw>
<status status="PASS" start="2026-04-08T01:01:30.582329" elapsed="0.003602"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:30.582306" elapsed="0.003659"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:01:30.586729" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:01:30.586211" elapsed="0.000557"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:30.587231" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:01:30.586865" elapsed="0.000447"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:01:30.588011" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:01:30.587577" elapsed="0.000472"/>
</kw>
<status status="PASS" start="2026-04-08T01:01:30.587345" elapsed="0.000753"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:30.586840" elapsed="0.001288"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:01:30.588967" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:01:30.588456" elapsed="0.000548"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:30.589464" elapsed="0.000029"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:01:30.589100" elapsed="0.000489"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:01:30.590299" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:01:30.589863" elapsed="0.000472"/>
</kw>
<status status="PASS" start="2026-04-08T01:01:30.589627" elapsed="0.000758"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:30.589075" elapsed="0.001340"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:01:30.590625" elapsed="0.000479"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T01:01:30.591742" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:01:30.591358" elapsed="0.000420"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T01:01:30.592028" elapsed="0.002459"/>
</kw>
<arg>${response}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T01:01:30.577862" elapsed="0.016688"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T01:01:30.594726" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:01:30.594623" elapsed="0.000146"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:30.594604" elapsed="0.000187"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T01:01:30.597291" level="INFO">${text_normalized} = </msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T01:01:30.594937" elapsed="0.002380"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T01:01:30.597365" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T01:01:30.597516" level="INFO">${response_text} = </msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>data=${data}</arg>
<arg>content_type=${content_type}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>POST data to given URI, check status code and return response text.
${content_type} and ${accept} are mandatory Python objects with headers to use.
If ${normalize_json}, normalize text before returning.</doc>
<status status="PASS" start="2026-04-08T01:01:30.557222" elapsed="0.040324"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T01:01:30.597612" elapsed="0.000025"/>
</return>
<msg time="2026-04-08T01:01:30.597756" level="INFO">${response_text} = </msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>extension=json</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>content_type=${HEADERS_YANG_JSON}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>endline=${\n}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve URI and data from folder, call Post_To_Uri, return response text.</doc>
<status status="PASS" start="2026-04-08T01:01:30.404386" elapsed="0.193394"/>
</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=response</arg>
<arg>mapping=${mapping}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:30.598112" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:01:30.597881" elapsed="0.000314"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:30.597865" elapsed="0.000355"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T01:01:30.598252" elapsed="0.000025"/>
</return>
<arg>folder=${VAR_DIR}/add-flow</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<arg>iterations=${iter}</arg>
<doc>Add arguments sensible for JSON data, return Post_Templated response text.
Optionally, verification against response.json (no iteration) is called.
Only subset of JSON data is verified and returned if JMES path is specified in
file ${folder}/jmespath.expr.
Response status code must be one of values from ${explicit_status_codes} if specified or one of set
created from all positive HTTP status codes together with ${additional_allowed_status_codes}.</doc>
<status status="PASS" start="2026-04-08T01:01:30.401674" elapsed="0.196697"/>
</kw>
<var name="${switch}">2</var>
<status status="PASS" start="2026-04-08T01:01:29.970379" elapsed="0.628039"/>
</iter>
<iter>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-08T01:01:30.599061" level="INFO">&amp;{mapping} = { NODE=openflow:3 }</msg>
<var>&amp;{mapping}</var>
<arg>NODE=openflow:${switch}</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-08T01:01:30.598665" elapsed="0.000423"/>
</kw>
<kw name="Post_As_Json_Templated" owner="TemplatedRequests">
<kw name="Post_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:01:30.641831" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1.vanadium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:01:30.641457" elapsed="0.000403"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T01:01:30.642697" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-1.vanadium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T01:01:30.642378" elapsed="0.000389">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-1.vanadium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-08T01:01:30.642898" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T01:01:30.642027" elapsed="0.000896"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:01:30.643508" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:01:30.643091" elapsed="0.000445"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T01:01:30.643832" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-1/location.uri"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-1/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-08T01:01:30.643985" level="INFO">${template} = /rests/data/opendaylight-inventory:nodes/node=$NODE
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T01:01:30.643698" elapsed="0.000313"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:30.644438" level="INFO">/rests/data/opendaylight-inventory:nodes/node=$NODE
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:30.644185" elapsed="0.000297"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:30.645669" level="INFO">mapping: {'NODE': 'openflow:3'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:30.645196" elapsed="0.000518"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-08T01:01:30.646306" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-08T01:01:30.645879" elapsed="0.000454"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-08T01:01:30.647388" level="INFO">${value} = openflow:3</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-08T01:01:30.646721" elapsed="0.000708"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-08T01:01:30.649088" level="INFO">${encoded} = openflow%3A3</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-08T01:01:30.648717" elapsed="0.000407"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-08T01:01:30.649218" elapsed="0.000075"/>
</return>
<msg time="2026-04-08T01:01:30.649552" level="INFO">${encoded_value} = openflow%3A3</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-08T01:01:30.647879" elapsed="0.001714"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:01:30.649817" elapsed="0.000517"/>
</kw>
<var name="${key}">NODE</var>
<var name="${value}">openflow:3</var>
<status status="PASS" start="2026-04-08T01:01:30.646554" elapsed="0.003877"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-08T01:01:30.646383" elapsed="0.004084"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-08T01:01:30.650511" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T01:01:30.650668" level="INFO">${mapping_to_use} = {'NODE': 'openflow%3A3'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-08T01:01:30.644853" elapsed="0.005840"/>
</kw>
<status status="PASS" start="2026-04-08T01:01:30.644557" elapsed="0.006169"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:30.650900" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:01:30.650750" elapsed="0.000204"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:30.644537" elapsed="0.006438"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:01:30.651670" level="INFO">${final_text} = /rests/data/opendaylight-inventory:nodes/node=openflow%3A3</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:01:30.651118" elapsed="0.000580"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T01:01:30.651746" elapsed="0.000028"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1/${file_name}.</doc>
<status status="PASS" start="2026-04-08T01:01:30.640832" elapsed="0.011035"/>
</kw>
<msg time="2026-04-08T01:01:30.651948" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:01:30.628409" elapsed="0.023590"/>
</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-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:30.664501" 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-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:30.676811" 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-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:30.688986" elapsed="0.000026"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:30.689196" elapsed="0.000021"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:30.689372" elapsed="0.000020"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:30.689731" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:01:30.689586" elapsed="0.000200"/>
</branch>
<status status="NOT RUN" start="2026-04-08T01:01:30.689573" elapsed="0.000236"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:30.689950" elapsed="0.000020"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:30.690118" elapsed="0.000020"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:30.690302" elapsed="0.000021"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-08T01:01:30.689544" elapsed="0.000811"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-08T01:01:30.689445" elapsed="0.000935"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:30.690524" elapsed="0.000020"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-08T01:01:30.690599" elapsed="0.000015"/>
</return>
<msg time="2026-04-08T01:01:30.690712" level="INFO">${uri} = /rests/data/opendaylight-inventory:nodes/node=openflow%3A3</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one 1 times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-08T01:01:30.624179" elapsed="0.066558"/>
</kw>
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:01:30.701598" elapsed="0.000331"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:01:30.715385" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1.vanadium/post_data.prolog.json</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:01:30.714839" elapsed="0.000574"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T01:01:30.716296" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-1.vanadium/post_data.prolog.json' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T01:01:30.716074" elapsed="0.000286">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-1.vanadium/post_data.prolog.json' does not exist.</status>
</kw>
<msg time="2026-04-08T01:01:30.716452" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T01:01:30.715578" elapsed="0.000898"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:01:30.717028" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1/post_data.prolog.json</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:01:30.716641" elapsed="0.000448"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T01:01:30.717416" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-1/post_data.prolog.json"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-1/post_data.prolog.json&lt;/a&gt;'.</msg>
<msg time="2026-04-08T01:01:30.717540" level="INFO">${template} = {
  "flow-node-inventory:group": [
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T01:01:30.717270" elapsed="0.000296"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:30.717971" level="INFO">{
  "flow-node-inventory:group": [
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:30.717729" elapsed="0.000286"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="NOT RUN" start="2026-04-08T01:01:30.718393" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:01:30.718082" elapsed="0.000369"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:01:30.718920" level="INFO">${mapping_to_use} = {'NODE': 'openflow:3'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:01:30.718625" elapsed="0.000321"/>
</kw>
<status status="PASS" start="2026-04-08T01:01:30.718476" elapsed="0.000505"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:30.718064" elapsed="0.000938"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:01:30.719596" level="INFO">${final_text} = {
  "flow-node-inventory:group": [</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:01:30.719172" elapsed="0.000452"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T01:01:30.719677" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T01:01:30.719844" level="INFO">${prolog} = {
  "flow-node-inventory:group": [</msg>
<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-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1/${file_name}.</doc>
<status status="PASS" start="2026-04-08T01:01:30.714226" elapsed="0.005643"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:01:30.733396" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1.vanadium/post_data.epilog.json</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:01:30.733008" elapsed="0.000416"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T01:01:30.734131" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-1.vanadium/post_data.epilog.json' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T01:01:30.733929" elapsed="0.000283">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-1.vanadium/post_data.epilog.json' does not exist.</status>
</kw>
<msg time="2026-04-08T01:01:30.734305" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T01:01:30.733587" elapsed="0.000742"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:01:30.734871" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1/post_data.epilog.json</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:01:30.734493" elapsed="0.000405"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T01:01:30.735206" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-1/post_data.epilog.json"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-1/post_data.epilog.json&lt;/a&gt;'.</msg>
<msg time="2026-04-08T01:01:30.735328" level="INFO">${template} =   ]
}
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T01:01:30.735059" elapsed="0.000294"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:30.735753" level="INFO">  ]
}
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:30.735513" elapsed="0.000301"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="NOT RUN" start="2026-04-08T01:01:30.736189" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:01:30.735881" elapsed="0.000368"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:01:30.736708" level="INFO">${mapping_to_use} = {'NODE': 'openflow:3'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:01:30.736419" elapsed="0.000315"/>
</kw>
<status status="PASS" start="2026-04-08T01:01:30.736273" elapsed="0.000496"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:30.735862" elapsed="0.000928"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:01:30.737368" level="INFO">${final_text} =   ]
}</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:01:30.736936" elapsed="0.000459"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T01:01:30.737477" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T01:01:30.737630" level="INFO">${epilog} =   ]
}</msg>
<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-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1/${file_name}.</doc>
<status status="PASS" start="2026-04-08T01:01:30.732384" elapsed="0.005271"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:01:30.750799" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1.vanadium/data.item.json</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:01:30.750429" elapsed="0.000398"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T01:01:30.751553" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-1.vanadium/data.item.json' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T01:01:30.751349" elapsed="0.000267">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-1.vanadium/data.item.json' does not exist.</status>
</kw>
<msg time="2026-04-08T01:01:30.751708" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T01:01:30.750989" elapsed="0.000743"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:01:30.752325" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1/data.item.json</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:01:30.751925" elapsed="0.000427"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T01:01:30.752662" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-1/data.item.json"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-1/data.item.json&lt;/a&gt;'.</msg>
<msg time="2026-04-08T01:01:30.752786" level="INFO">${template} =         {
          "group-id": ${i}000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
       ...</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T01:01:30.752528" elapsed="0.000284"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:30.753227" level="INFO">        {
          "group-id": ${i}000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-${i}",
          "group-type": "group-select"
        }
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:30.752970" elapsed="0.000304"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="NOT RUN" start="2026-04-08T01:01:30.753631" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:01:30.753342" elapsed="0.000347"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:01:30.754150" level="INFO">${mapping_to_use} = {'NODE': 'openflow:3'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:01:30.753860" elapsed="0.000332"/>
</kw>
<status status="PASS" start="2026-04-08T01:01:30.753713" elapsed="0.000515"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:30.753323" elapsed="0.000927"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:01:30.754962" level="INFO">${final_text} =         {
          "group-id": ${i}000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
       ...</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:01:30.754398" elapsed="0.000592"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T01:01:30.755039" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T01:01:30.755217" level="INFO">${item_template} =         {
          "group-id": ${i}000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
       ...</msg>
<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-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1/${file_name}.</doc>
<status status="PASS" start="2026-04-08T01:01:30.749872" elapsed="0.005373"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:01:30.755650" level="INFO">${items} = []</msg>
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:01:30.755411" elapsed="0.000295"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:01:30.756277" level="INFO">${separator} = ,
</msg>
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:01:30.755893" elapsed="0.000410"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:30.756918" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:01:30.756682" elapsed="0.000294"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:30.756667" elapsed="0.000332"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:01:30.757510" level="INFO">${j} = 1</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:01:30.757142" elapsed="0.000394"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:01:30.758475" level="INFO">${item} =         {
          "group-id": 1000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
          ...</msg>
<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="PASS" start="2026-04-08T01:01:30.757694" elapsed="0.000810"/>
</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="PASS" start="2026-04-08T01:01:30.758665" elapsed="0.000192"/>
</kw>
<var name="${iteration}">1</var>
<status status="PASS" start="2026-04-08T01:01:30.756635" elapsed="0.002261"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="PASS" start="2026-04-08T01:01:30.756359" elapsed="0.002568"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:01:30.759529" level="INFO">${final_text} = {
  "flow-node-inventory:group": [
        {
          "group-id": 1000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
   ...</msg>
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:01:30.759082" elapsed="0.000475"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T01:01:30.759615" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T01:01:30.759785" level="INFO">${data} = {
  "flow-node-inventory:group": [
        {
          "group-id": 1000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
   ...</msg>
<var>${data}</var>
<arg>folder=${folder}</arg>
<arg>name_prefix=post_</arg>
<arg>base_name=${base_name}</arg>
<arg>extension=${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>endline=${endline}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one 1 times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-08T01:01:30.700744" elapsed="0.059068"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T01:01:30.761057" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-1/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T01:01:30.760827" elapsed="0.000292">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-1/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-08T01:01:30.761227" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T01:01:30.760494" elapsed="0.000758"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:30.761571" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:01:30.761324" elapsed="0.000303"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:01:30.762119" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:01:30.761832" elapsed="0.000312"/>
</kw>
<status status="PASS" start="2026-04-08T01:01:30.761651" elapsed="0.000544"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:30.761306" elapsed="0.000911"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:01:30.764552" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:01:30.762370" elapsed="0.002208"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-08T01:01:30.764629" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T01:01:30.764780" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-1/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T01:01:30.760144" elapsed="0.004660"/>
</kw>
<kw name="Post_To_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:30.766348" level="INFO">/rests/data/opendaylight-inventory:nodes/node=openflow%3A3</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:30.766085" elapsed="0.000307"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:30.766780" level="INFO">{
  "flow-node-inventory:group": [
        {
          "group-id": 1000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-1",
          "group-type": "group-select"
        }
  ]
}</msg>
<arg>${data}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:30.766546" elapsed="0.000322"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:30.767285" level="INFO">{'Content-Type': 'application/json'}</msg>
<arg>${content_type}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:30.767024" elapsed="0.000305"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:30.767757" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:30.767482" elapsed="0.000320"/>
</kw>
<kw name="Join_Two_Headers" owner="TemplatedRequests">
<kw name="Copy Dictionary" owner="Collections">
<msg time="2026-04-08T01:01:30.768614" level="INFO">${accumulator} = {'Content-Type': 'application/json'}</msg>
<var>${accumulator}</var>
<arg>${first}</arg>
<doc>Returns a copy of the given dictionary.</doc>
<status status="PASS" start="2026-04-08T01:01:30.768426" elapsed="0.000214"/>
</kw>
<kw name="Get Dictionary Items" owner="Collections">
<msg time="2026-04-08T01:01:30.768963" level="INFO">${items_to_add} = []</msg>
<var>${items_to_add}</var>
<arg>${second}</arg>
<doc>Returns items of the given ``dictionary`` as a list.</doc>
<status status="PASS" start="2026-04-08T01:01:30.768794" elapsed="0.000195"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${accumulator}</arg>
<arg>@{items_to_add}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:01:30.769138" elapsed="0.000204"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:30.769750" level="INFO">{'Content-Type': 'application/json'}</msg>
<arg>${accumulator}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:30.769500" elapsed="0.000293"/>
</kw>
<return>
<value>${accumulator}</value>
<status status="PASS" start="2026-04-08T01:01:30.769834" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T01:01:30.769987" level="INFO">${headers} = {'Content-Type': 'application/json'}</msg>
<var>${headers}</var>
<arg>first=${content_type}</arg>
<arg>second=${accept}</arg>
<doc>Take two dicts, join them, return result. Second argument values take precedence.</doc>
<status status="PASS" start="2026-04-08T01:01:30.767999" elapsed="0.002013"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="POST On Session" owner="RequestsLibrary">
<msg time="2026-04-08T01:01:30.785469" level="INFO">POST Request : url=http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A3 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A3 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node01s3bfo0y24i1es90l47mavglv0.node0', 'Content-Length': '560', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body={
  "flow-node-inventory:group": [
        {
          "group-id": 1000,
          "buckets": {
            "bucket": [
              {
                "bucket-id": 1,
                "weight": 1,
                "action": [
                  {
                    "order": 1,
                    "output-action": {
                      "output-node-connector": "1"
                    }
                  }
                ]
              }
            ]
          },
          "group-name": "Select-1",
          "group-type": "group-select"
        }
  ]
} 
 </msg>
<msg time="2026-04-08T01:01:30.785587" level="INFO">POST Response : url=http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A3 
 status=201, reason=Created 
 headers={'Location': 'http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A3/flow-node-inventory:group=1000', 'Content-Length': '0'} 
 body=None 
 </msg>
<msg time="2026-04-08T01:01:30.785784" level="INFO">${response} = &lt;Response [201]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T01:01:30.772312" elapsed="0.013530"/>
</kw>
<status status="PASS" start="2026-04-08T01:01:30.770082" elapsed="0.015861"/>
</branch>
<branch type="ELSE">
<kw name="POST On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:30.786377" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:01:30.786002" elapsed="0.000527"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:30.770065" elapsed="0.016512"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:30.793599" level="INFO"/>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:30.788917" elapsed="0.004747"/>
</kw>
<status status="PASS" start="2026-04-08T01:01:30.788426" elapsed="0.005287"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:30.788385" elapsed="0.005362"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:30.797296" level="INFO">201</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:30.794127" elapsed="0.003233"/>
</kw>
<status status="PASS" start="2026-04-08T01:01:30.793824" elapsed="0.003583"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:30.793801" elapsed="0.003639"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:01:30.798205" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:01:30.797666" elapsed="0.000578"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:30.798670" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:01:30.798339" elapsed="0.000410"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:01:30.799517" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:01:30.799067" elapsed="0.000487"/>
</kw>
<status status="PASS" start="2026-04-08T01:01:30.798781" elapsed="0.000821"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:30.798315" elapsed="0.001320"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:01:30.800420" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:01:30.799897" elapsed="0.000560"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:30.800880" elapsed="0.000029"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:01:30.800551" elapsed="0.000455"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:01:30.801706" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:01:30.801292" elapsed="0.000451"/>
</kw>
<status status="PASS" start="2026-04-08T01:01:30.801041" elapsed="0.000750"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:30.800527" elapsed="0.001295"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:01:30.802032" elapsed="0.000501"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T01:01:30.803151" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:01:30.802769" elapsed="0.000440"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T01:01:30.803427" elapsed="0.002632"/>
</kw>
<arg>${response}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T01:01:30.787386" elapsed="0.018734"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T01:01:30.806318" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:01:30.806214" elapsed="0.000148"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:30.806194" elapsed="0.000189"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T01:01:30.808841" level="INFO">${text_normalized} = </msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T01:01:30.806529" elapsed="0.002338"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T01:01:30.808914" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T01:01:30.809066" level="INFO">${response_text} = </msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>data=${data}</arg>
<arg>content_type=${content_type}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>POST data to given URI, check status code and return response text.
${content_type} and ${accept} are mandatory Python objects with headers to use.
If ${normalize_json}, normalize text before returning.</doc>
<status status="PASS" start="2026-04-08T01:01:30.765124" elapsed="0.043966"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T01:01:30.809171" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T01:01:30.809322" level="INFO">${response_text} = </msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>extension=json</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>content_type=${HEADERS_YANG_JSON}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>endline=${\n}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve URI and data from folder, call Post_To_Uri, return response text.</doc>
<status status="PASS" start="2026-04-08T01:01:30.613181" elapsed="0.196166"/>
</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=response</arg>
<arg>mapping=${mapping}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:30.809701" elapsed="0.000029"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:01:30.809449" elapsed="0.000335"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:30.809432" elapsed="0.000379"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T01:01:30.809843" elapsed="0.000025"/>
</return>
<arg>folder=${VAR_DIR}/add-group-1</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<arg>iterations=${iter}</arg>
<doc>Add arguments sensible for JSON data, return Post_Templated response text.
Optionally, verification against response.json (no iteration) is called.
Only subset of JSON data is verified and returned if JMES path is specified in
file ${folder}/jmespath.expr.
Response status code must be one of values from ${explicit_status_codes} if specified or one of set
created from all positive HTTP status codes together with ${additional_allowed_status_codes}.</doc>
<status status="PASS" start="2026-04-08T01:01:30.610570" elapsed="0.199462"/>
</kw>
<kw name="Post_As_Json_Templated" owner="TemplatedRequests">
<kw name="Post_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:01:30.852391" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2.vanadium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:01:30.852000" elapsed="0.000419"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T01:01:30.853229" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-2.vanadium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T01:01:30.852915" elapsed="0.000381">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-2.vanadium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-08T01:01:30.853390" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T01:01:30.852582" elapsed="0.000832"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:01:30.854005" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:01:30.853621" elapsed="0.000411"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T01:01:30.854346" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-2/location.uri"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-2/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-08T01:01:30.854471" level="INFO">${template} = /rests/data/opendaylight-inventory:nodes/node=$NODE
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T01:01:30.854211" elapsed="0.000285"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:30.854894" level="INFO">/rests/data/opendaylight-inventory:nodes/node=$NODE
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:30.854653" elapsed="0.000286"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:30.856114" level="INFO">mapping: {'NODE': 'openflow:3'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:30.855652" elapsed="0.000522"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-08T01:01:30.856750" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-08T01:01:30.856341" elapsed="0.000441"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-08T01:01:30.857831" level="INFO">${value} = openflow:3</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-08T01:01:30.857181" elapsed="0.000690"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-08T01:01:30.859536" level="INFO">${encoded} = openflow%3A3</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-08T01:01:30.859168" elapsed="0.000403"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-08T01:01:30.859661" elapsed="0.000071"/>
</return>
<msg time="2026-04-08T01:01:30.859988" level="INFO">${encoded_value} = openflow%3A3</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-08T01:01:30.858357" elapsed="0.001670"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:01:30.860267" elapsed="0.000499"/>
</kw>
<var name="${key}">NODE</var>
<var name="${value}">openflow:3</var>
<status status="PASS" start="2026-04-08T01:01:30.856999" elapsed="0.003864"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-08T01:01:30.856831" elapsed="0.004068"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-08T01:01:30.860943" elapsed="0.000027"/>
</return>
<msg time="2026-04-08T01:01:30.861099" level="INFO">${mapping_to_use} = {'NODE': 'openflow%3A3'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-08T01:01:30.855310" elapsed="0.005814"/>
</kw>
<status status="PASS" start="2026-04-08T01:01:30.855007" elapsed="0.006163"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:30.861347" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:01:30.861197" elapsed="0.000206"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:30.854988" elapsed="0.006435"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:01:30.862086" level="INFO">${final_text} = /rests/data/opendaylight-inventory:nodes/node=openflow%3A3</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:01:30.861564" elapsed="0.000549"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T01:01:30.862177" elapsed="0.000030"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2/${file_name}.</doc>
<status status="PASS" start="2026-04-08T01:01:30.851371" elapsed="0.010930"/>
</kw>
<msg time="2026-04-08T01:01:30.862354" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:01:30.839106" elapsed="0.023296"/>
</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-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:30.874746" 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-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:30.886950" 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-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:30.898959" elapsed="0.000027"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:30.899153" elapsed="0.000037"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:30.899344" elapsed="0.000021"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:30.899735" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:01:30.899584" elapsed="0.000205"/>
</branch>
<status status="NOT RUN" start="2026-04-08T01:01:30.899569" elapsed="0.000244"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:30.899956" elapsed="0.000020"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:30.900125" elapsed="0.000020"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:30.900312" elapsed="0.000021"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-08T01:01:30.899516" elapsed="0.000848"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-08T01:01:30.899418" elapsed="0.000972"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:30.900535" elapsed="0.000020"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-08T01:01:30.900609" elapsed="0.000015"/>
</return>
<msg time="2026-04-08T01:01:30.900722" level="INFO">${uri} = /rests/data/opendaylight-inventory:nodes/node=openflow%3A3</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one 1 times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-08T01:01:30.834940" elapsed="0.065808"/>
</kw>
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:01:30.911412" elapsed="0.000357"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:01:30.924969" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2.vanadium/post_data.prolog.json</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:01:30.924602" elapsed="0.000395"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T01:01:30.925823" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-2.vanadium/post_data.prolog.json' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T01:01:30.925505" elapsed="0.000383">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-2.vanadium/post_data.prolog.json' does not exist.</status>
</kw>
<msg time="2026-04-08T01:01:30.925978" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T01:01:30.925174" elapsed="0.000829"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:01:30.926571" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2/post_data.prolog.json</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:01:30.926190" elapsed="0.000440"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T01:01:30.926932" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-2/post_data.prolog.json"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-2/post_data.prolog.json&lt;/a&gt;'.</msg>
<msg time="2026-04-08T01:01:30.927054" level="INFO">${template} = {
  "flow-node-inventory:group": [
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T01:01:30.926798" elapsed="0.000281"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:30.927515" level="INFO">{
  "flow-node-inventory:group": [
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:30.927259" elapsed="0.000300"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="NOT RUN" start="2026-04-08T01:01:30.927913" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:01:30.927627" elapsed="0.000343"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:01:30.928449" level="INFO">${mapping_to_use} = {'NODE': 'openflow:3'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:01:30.928141" elapsed="0.000333"/>
</kw>
<status status="PASS" start="2026-04-08T01:01:30.927995" elapsed="0.000514"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:30.927607" elapsed="0.000923"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:01:30.929094" level="INFO">${final_text} = {
  "flow-node-inventory:group": [</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:01:30.928676" elapsed="0.000445"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T01:01:30.929185" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T01:01:30.929335" level="INFO">${prolog} = {
  "flow-node-inventory:group": [</msg>
<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-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2/${file_name}.</doc>
<status status="PASS" start="2026-04-08T01:01:30.923981" elapsed="0.005379"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:01:30.942818" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2.vanadium/post_data.epilog.json</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:01:30.942449" elapsed="0.000397"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T01:01:30.943569" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-2.vanadium/post_data.epilog.json' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T01:01:30.943351" elapsed="0.000286">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-2.vanadium/post_data.epilog.json' does not exist.</status>
</kw>
<msg time="2026-04-08T01:01:30.943728" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T01:01:30.943006" elapsed="0.000746"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:01:30.944307" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2/post_data.epilog.json</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:01:30.943915" elapsed="0.000420"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T01:01:30.944623" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-2/post_data.epilog.json"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-2/post_data.epilog.json&lt;/a&gt;'.</msg>
<msg time="2026-04-08T01:01:30.944744" level="INFO">${template} =   ]
}
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T01:01:30.944494" elapsed="0.000275"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:30.945177" level="INFO">  ]
}
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:30.944924" elapsed="0.000298"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="NOT RUN" start="2026-04-08T01:01:30.945570" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:01:30.945288" elapsed="0.000340"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:01:30.946091" level="INFO">${mapping_to_use} = {'NODE': 'openflow:3'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:01:30.945803" elapsed="0.000313"/>
</kw>
<status status="PASS" start="2026-04-08T01:01:30.945655" elapsed="0.000495"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:30.945270" elapsed="0.000917"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:01:30.946749" level="INFO">${final_text} =   ]
}</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:01:30.946335" elapsed="0.000440"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T01:01:30.946860" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T01:01:30.947010" level="INFO">${epilog} =   ]
}</msg>
<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-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2/${file_name}.</doc>
<status status="PASS" start="2026-04-08T01:01:30.941645" elapsed="0.005389"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:01:30.960194" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2.vanadium/data.item.json</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:01:30.959811" elapsed="0.000412"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T01:01:30.960916" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-2.vanadium/data.item.json' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T01:01:30.960714" elapsed="0.000264">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-2.vanadium/data.item.json' does not exist.</status>
</kw>
<msg time="2026-04-08T01:01:30.961069" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T01:01:30.960384" elapsed="0.000709"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:01:30.961653" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2/data.item.json</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:01:30.961272" elapsed="0.000413"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T01:01:30.961976" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-2/data.item.json"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-2/data.item.json&lt;/a&gt;'.</msg>
<msg time="2026-04-08T01:01:30.962099" level="INFO">${template} =     {
      "group-id": ${i},
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": ${i}000,
            "action": [
              {
               ...</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T01:01:30.961845" elapsed="0.000280"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:30.962539" level="INFO">    {
      "group-id": ${i},
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": ${i}000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": ${i}000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-${i}",
      "group-type": "group-ff"
    }
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:30.962299" elapsed="0.000287"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="NOT RUN" start="2026-04-08T01:01:30.962936" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:01:30.962652" elapsed="0.000341"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:01:30.963490" level="INFO">${mapping_to_use} = {'NODE': 'openflow:3'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:01:30.963176" elapsed="0.000340"/>
</kw>
<status status="PASS" start="2026-04-08T01:01:30.963017" elapsed="0.000534"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:30.962634" elapsed="0.000939"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:01:30.964289" level="INFO">${final_text} =     {
      "group-id": ${i},
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": ${i}000,
            "action": [
              {
               ...</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:01:30.963718" elapsed="0.000600"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T01:01:30.964366" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T01:01:30.964515" level="INFO">${item_template} =     {
      "group-id": ${i},
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": ${i}000,
            "action": [
              {
               ...</msg>
<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-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2/${file_name}.</doc>
<status status="PASS" start="2026-04-08T01:01:30.959246" elapsed="0.005295"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:01:30.964942" level="INFO">${items} = []</msg>
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:01:30.964704" elapsed="0.000264"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:01:30.965539" level="INFO">${separator} = ,
</msg>
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:01:30.965173" elapsed="0.000392"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:30.966184" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:01:30.965935" elapsed="0.000308"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:30.965921" elapsed="0.000345"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:01:30.966756" level="INFO">${j} = 1</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:01:30.966409" elapsed="0.000373"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:01:30.967712" level="INFO">${item} =     {
      "group-id": 1,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 1000,
            "action": [
              {
                "orde...</msg>
<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="PASS" start="2026-04-08T01:01:30.966941" elapsed="0.000800"/>
</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="PASS" start="2026-04-08T01:01:30.967899" elapsed="0.000185"/>
</kw>
<var name="${iteration}">1</var>
<status status="PASS" start="2026-04-08T01:01:30.965889" elapsed="0.002233"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="PASS" start="2026-04-08T01:01:30.965621" elapsed="0.002530"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:01:30.968741" level="INFO">${final_text} = {
  "flow-node-inventory:group": [
    {
      "group-id": 1,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 1000,
            "action": [
  ...</msg>
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:01:30.968321" elapsed="0.000447"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T01:01:30.968824" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T01:01:30.968972" level="INFO">${data} = {
  "flow-node-inventory:group": [
    {
      "group-id": 1,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 1000,
            "action": [
  ...</msg>
<var>${data}</var>
<arg>folder=${folder}</arg>
<arg>name_prefix=post_</arg>
<arg>base_name=${base_name}</arg>
<arg>extension=${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>endline=${endline}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one 1 times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-08T01:01:30.910547" elapsed="0.058452"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T01:01:30.970242" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-2/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T01:01:30.969991" elapsed="0.000316">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-group-2/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-08T01:01:30.970397" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T01:01:30.969658" elapsed="0.000763"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:30.970735" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:01:30.970491" elapsed="0.000300"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:01:30.971285" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:01:30.970982" elapsed="0.000329"/>
</kw>
<status status="PASS" start="2026-04-08T01:01:30.970815" elapsed="0.000532"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:30.970473" elapsed="0.000896"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:01:30.973846" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:01:30.971554" elapsed="0.002318"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-08T01:01:30.973922" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T01:01:30.974073" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-group-2/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T01:01:30.969339" elapsed="0.004759"/>
</kw>
<kw name="Post_To_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:30.975619" level="INFO">/rests/data/opendaylight-inventory:nodes/node=openflow%3A3</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:30.975356" elapsed="0.000308"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:30.976053" level="INFO">{
  "flow-node-inventory:group": [
    {
      "group-id": 1,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 1000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 1000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-1",
      "group-type": "group-ff"
    }
  ]
}</msg>
<arg>${data}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:30.975816" elapsed="0.000318"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:30.976546" level="INFO">{'Content-Type': 'application/json'}</msg>
<arg>${content_type}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:30.976304" elapsed="0.000285"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:30.976982" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:30.976746" elapsed="0.000278"/>
</kw>
<kw name="Join_Two_Headers" owner="TemplatedRequests">
<kw name="Copy Dictionary" owner="Collections">
<msg time="2026-04-08T01:01:30.977823" level="INFO">${accumulator} = {'Content-Type': 'application/json'}</msg>
<var>${accumulator}</var>
<arg>${first}</arg>
<doc>Returns a copy of the given dictionary.</doc>
<status status="PASS" start="2026-04-08T01:01:30.977636" elapsed="0.000213"/>
</kw>
<kw name="Get Dictionary Items" owner="Collections">
<msg time="2026-04-08T01:01:30.978190" level="INFO">${items_to_add} = []</msg>
<var>${items_to_add}</var>
<arg>${second}</arg>
<doc>Returns items of the given ``dictionary`` as a list.</doc>
<status status="PASS" start="2026-04-08T01:01:30.978008" elapsed="0.000208"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${accumulator}</arg>
<arg>@{items_to_add}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:01:30.978365" elapsed="0.000187"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:30.978948" level="INFO">{'Content-Type': 'application/json'}</msg>
<arg>${accumulator}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:30.978707" elapsed="0.000284"/>
</kw>
<return>
<value>${accumulator}</value>
<status status="PASS" start="2026-04-08T01:01:30.979032" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T01:01:30.979199" level="INFO">${headers} = {'Content-Type': 'application/json'}</msg>
<var>${headers}</var>
<arg>first=${content_type}</arg>
<arg>second=${accept}</arg>
<doc>Take two dicts, join them, return result. Second argument values take precedence.</doc>
<status status="PASS" start="2026-04-08T01:01:30.977233" elapsed="0.001992"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="POST On Session" owner="RequestsLibrary">
<msg time="2026-04-08T01:01:30.992838" level="INFO">POST Request : url=http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A3 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A3 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node01s3bfo0y24i1es90l47mavglv0.node0', 'Content-Length': '460', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body={
  "flow-node-inventory:group": [
    {
      "group-id": 1,
      "buckets": {
        "bucket": [
          {
            "bucket-id": 1,
            "watch_group": 1000,
            "action": [
              {
                "order": 1,
                "group-action": {
                  "group-id": 1000
                }
              }
            ]
          }
        ]
      },
      "group-name": "FF-1",
      "group-type": "group-ff"
    }
  ]
} 
 </msg>
<msg time="2026-04-08T01:01:30.992977" level="INFO">POST Response : url=http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A3 
 status=201, reason=Created 
 headers={'Location': 'http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A3/flow-node-inventory:group=1', 'Content-Length': '0'} 
 body=None 
 </msg>
<msg time="2026-04-08T01:01:30.993235" level="INFO">${response} = &lt;Response [201]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T01:01:30.981516" elapsed="0.011780"/>
</kw>
<status status="PASS" start="2026-04-08T01:01:30.979297" elapsed="0.014100"/>
</branch>
<branch type="ELSE">
<kw name="POST On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:30.993803" elapsed="0.000047"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:01:30.993459" elapsed="0.000490"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:30.979279" elapsed="0.014718"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:31.000507" level="INFO"/>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:30.996347" elapsed="0.004203"/>
</kw>
<status status="PASS" start="2026-04-08T01:01:30.995824" elapsed="0.004760"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:30.995782" elapsed="0.004827"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:31.003106" level="INFO">201</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:31.000881" elapsed="0.002270"/>
</kw>
<status status="PASS" start="2026-04-08T01:01:31.000663" elapsed="0.002537"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:31.000647" elapsed="0.002578"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:01:31.003772" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:01:31.003399" elapsed="0.000400"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:31.004104" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:01:31.003867" elapsed="0.000309"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:01:31.004660" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:01:31.004366" elapsed="0.000320"/>
</kw>
<status status="PASS" start="2026-04-08T01:01:31.004201" elapsed="0.000520"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:31.003849" elapsed="0.000893"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:01:31.005275" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:01:31.004903" elapsed="0.000398"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:31.005605" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:01:31.005370" elapsed="0.000333"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:01:31.006208" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:01:31.005898" elapsed="0.000336"/>
</kw>
<status status="PASS" start="2026-04-08T01:01:31.005731" elapsed="0.000538"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:31.005353" elapsed="0.000938"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:01:31.006440" elapsed="0.000342"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T01:01:31.007233" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:01:31.006948" elapsed="0.000311"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T01:01:31.007426" elapsed="0.002264"/>
</kw>
<arg>${response}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T01:01:30.994789" elapsed="0.014963"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T01:01:31.009927" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:01:31.009824" elapsed="0.000146"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:31.009806" elapsed="0.000185"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T01:01:31.012551" level="INFO">${text_normalized} = </msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T01:01:31.010137" elapsed="0.002440"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T01:01:31.012625" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T01:01:31.012775" level="INFO">${response_text} = </msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>data=${data}</arg>
<arg>content_type=${content_type}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>POST data to given URI, check status code and return response text.
${content_type} and ${accept} are mandatory Python objects with headers to use.
If ${normalize_json}, normalize text before returning.</doc>
<status status="PASS" start="2026-04-08T01:01:30.974424" elapsed="0.038376"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T01:01:31.012865" elapsed="0.000026"/>
</return>
<msg time="2026-04-08T01:01:31.013010" level="INFO">${response_text} = </msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>extension=json</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>content_type=${HEADERS_YANG_JSON}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>endline=${\n}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve URI and data from folder, call Post_To_Uri, return response text.</doc>
<status status="PASS" start="2026-04-08T01:01:30.824041" elapsed="0.188993"/>
</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=response</arg>
<arg>mapping=${mapping}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:31.013380" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:01:31.013134" elapsed="0.000313"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:31.013117" elapsed="0.000354"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T01:01:31.013503" elapsed="0.000024"/>
</return>
<arg>folder=${VAR_DIR}/add-group-2</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<arg>iterations=${iter}</arg>
<doc>Add arguments sensible for JSON data, return Post_Templated response text.
Optionally, verification against response.json (no iteration) is called.
Only subset of JSON data is verified and returned if JMES path is specified in
file ${folder}/jmespath.expr.
Response status code must be one of values from ${explicit_status_codes} if specified or one of set
created from all positive HTTP status codes together with ${additional_allowed_status_codes}.</doc>
<status status="PASS" start="2026-04-08T01:01:30.821473" elapsed="0.192148"/>
</kw>
<kw name="Post_As_Json_Templated" owner="TemplatedRequests">
<kw name="Post_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:01:31.056652" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow.vanadium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:01:31.056274" elapsed="0.000406"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T01:01:31.057485" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-flow.vanadium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T01:01:31.057194" elapsed="0.000357">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-flow.vanadium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-08T01:01:31.057643" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T01:01:31.056844" elapsed="0.000823"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:01:31.058285" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:01:31.057870" elapsed="0.000443"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T01:01:31.058609" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-flow/location.uri"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-flow/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-08T01:01:31.058734" level="INFO">${template} = /rests/data/opendaylight-inventory:nodes/node=$NODE/flow-node-inventory:table=0
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T01:01:31.058475" elapsed="0.000285"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:31.059178" level="INFO">/rests/data/opendaylight-inventory:nodes/node=$NODE/flow-node-inventory:table=0
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:31.058918" elapsed="0.000307"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:31.060404" level="INFO">mapping: {'NODE': 'openflow:3'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:31.059925" elapsed="0.000524"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-08T01:01:31.061026" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-08T01:01:31.060612" elapsed="0.000440"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-08T01:01:31.062100" level="INFO">${value} = openflow:3</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-08T01:01:31.061456" elapsed="0.000685"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-08T01:01:31.063791" level="INFO">${encoded} = openflow%3A3</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-08T01:01:31.063419" elapsed="0.000407"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-08T01:01:31.063901" elapsed="0.000071"/>
</return>
<msg time="2026-04-08T01:01:31.064245" level="INFO">${encoded_value} = openflow%3A3</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-08T01:01:31.062601" elapsed="0.001684"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:01:31.064509" elapsed="0.000495"/>
</kw>
<var name="${key}">NODE</var>
<var name="${value}">openflow:3</var>
<status status="PASS" start="2026-04-08T01:01:31.061289" elapsed="0.003810"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-08T01:01:31.061108" elapsed="0.004029"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-08T01:01:31.065196" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T01:01:31.065355" level="INFO">${mapping_to_use} = {'NODE': 'openflow%3A3'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-08T01:01:31.059597" elapsed="0.005783"/>
</kw>
<status status="PASS" start="2026-04-08T01:01:31.059305" elapsed="0.006107"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:31.065586" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:01:31.065437" elapsed="0.000205"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:31.059274" elapsed="0.006393"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:01:31.066350" level="INFO">${final_text} = /rests/data/opendaylight-inventory:nodes/node=openflow%3A3/flow-node-inventory:table=0</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:01:31.065810" elapsed="0.000567"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T01:01:31.066425" elapsed="0.000028"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow/${file_name}.</doc>
<status status="PASS" start="2026-04-08T01:01:31.055649" elapsed="0.010900"/>
</kw>
<msg time="2026-04-08T01:01:31.066601" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:01:31.043362" elapsed="0.023287"/>
</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-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:31.079076" 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-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:31.091351" 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-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:31.103461" elapsed="0.000027"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:31.103656" elapsed="0.000021"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:31.103830" elapsed="0.000020"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:31.104204" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:01:31.104045" elapsed="0.000215"/>
</branch>
<status status="NOT RUN" start="2026-04-08T01:01:31.104031" elapsed="0.000252"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:31.104424" elapsed="0.000020"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:31.104591" elapsed="0.000019"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:31.104755" elapsed="0.000020"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-08T01:01:31.104003" elapsed="0.000805"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-08T01:01:31.103903" elapsed="0.000930"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:31.104977" elapsed="0.000020"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-08T01:01:31.105051" elapsed="0.000015"/>
</return>
<msg time="2026-04-08T01:01:31.105179" level="INFO">${uri} = /rests/data/opendaylight-inventory:nodes/node=openflow%3A3/flow-node-inventory:table=0</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one 1 times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-08T01:01:31.039165" elapsed="0.066042"/>
</kw>
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:01:31.115851" elapsed="0.000428"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:01:31.129452" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow.vanadium/post_data.prolog.json</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:01:31.129061" elapsed="0.000418"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T01:01:31.130193" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-flow.vanadium/post_data.prolog.json' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T01:01:31.129972" elapsed="0.000286">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-flow.vanadium/post_data.prolog.json' does not exist.</status>
</kw>
<msg time="2026-04-08T01:01:31.130350" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T01:01:31.129642" elapsed="0.000732"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:01:31.130919" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow/post_data.prolog.json</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:01:31.130538" elapsed="0.000441"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T01:01:31.131317" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-flow/post_data.prolog.json"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-flow/post_data.prolog.json&lt;/a&gt;'.</msg>
<msg time="2026-04-08T01:01:31.131493" level="INFO">${template} = {
  "flow": [
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T01:01:31.131180" elapsed="0.000338"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:31.131922" level="INFO">{
  "flow": [
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:31.131679" elapsed="0.000286"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="NOT RUN" start="2026-04-08T01:01:31.132343" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:01:31.132032" elapsed="0.000369"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:01:31.132864" level="INFO">${mapping_to_use} = {'NODE': 'openflow:3'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:01:31.132573" elapsed="0.000317"/>
</kw>
<status status="PASS" start="2026-04-08T01:01:31.132426" elapsed="0.000499"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:31.132013" elapsed="0.000933"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:01:31.133533" level="INFO">${final_text} = {
  "flow": [</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:01:31.133095" elapsed="0.000464"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T01:01:31.133607" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T01:01:31.133756" level="INFO">${prolog} = {
  "flow": [</msg>
<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-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow/${file_name}.</doc>
<status status="PASS" start="2026-04-08T01:01:31.128449" elapsed="0.005331"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:01:31.147259" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow.vanadium/post_data.epilog.json</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:01:31.146834" elapsed="0.000453"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T01:01:31.147983" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-flow.vanadium/post_data.epilog.json' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T01:01:31.147781" elapsed="0.000264">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-flow.vanadium/post_data.epilog.json' does not exist.</status>
</kw>
<msg time="2026-04-08T01:01:31.148136" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T01:01:31.147451" elapsed="0.000725"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:01:31.148721" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow/post_data.epilog.json</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:01:31.148343" elapsed="0.000404"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T01:01:31.149039" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-flow/post_data.epilog.json"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-flow/post_data.epilog.json&lt;/a&gt;'.</msg>
<msg time="2026-04-08T01:01:31.149177" level="INFO">${template} =   ]
}
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T01:01:31.148908" elapsed="0.000295"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:31.149602" level="INFO">  ]
}
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:31.149361" elapsed="0.000283"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="NOT RUN" start="2026-04-08T01:01:31.149997" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:01:31.149711" elapsed="0.000344"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:01:31.150534" level="INFO">${mapping_to_use} = {'NODE': 'openflow:3'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:01:31.150242" elapsed="0.000318"/>
</kw>
<status status="PASS" start="2026-04-08T01:01:31.150080" elapsed="0.000515"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:31.149692" elapsed="0.000924"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:01:31.151207" level="INFO">${final_text} =   ]
}</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:01:31.150763" elapsed="0.000472"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T01:01:31.151318" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T01:01:31.151472" level="INFO">${epilog} =   ]
}</msg>
<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-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow/${file_name}.</doc>
<status status="PASS" start="2026-04-08T01:01:31.146218" elapsed="0.005279"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:01:31.164613" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow.vanadium/data.item.json</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:01:31.164242" elapsed="0.000398"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T01:01:31.165351" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-flow.vanadium/data.item.json' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T01:01:31.165131" elapsed="0.000283">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-flow.vanadium/data.item.json' does not exist.</status>
</kw>
<msg time="2026-04-08T01:01:31.165505" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T01:01:31.164802" elapsed="0.000727"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:01:31.166070" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow/data.item.json</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:01:31.165692" elapsed="0.000405"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T01:01:31.166407" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-flow/data.item.json"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-flow/data.item.json&lt;/a&gt;'.</msg>
<msg time="2026-04-08T01:01:31.166530" level="INFO">${template} =         {
          "id": "${i}",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048...</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T01:01:31.166274" elapsed="0.000282"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:31.166952" level="INFO">        {
          "id": "${i}",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.${i}/32"
          },
          "flow-name": "Flow-${i}",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": ${i}
                      }
                    }
                  ]
                }
              }
            ]
          }
        }
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:31.166712" elapsed="0.000289"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="NOT RUN" start="2026-04-08T01:01:31.167441" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:01:31.167067" elapsed="0.000433"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:01:31.167965" level="INFO">${mapping_to_use} = {'NODE': 'openflow:3'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:01:31.167675" elapsed="0.000315"/>
</kw>
<status status="PASS" start="2026-04-08T01:01:31.167524" elapsed="0.000501"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:31.167049" elapsed="0.000998"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:01:31.168793" level="INFO">${final_text} =         {
          "id": "${i}",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048...</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:01:31.168206" elapsed="0.000615"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T01:01:31.168869" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T01:01:31.169021" level="INFO">${item_template} =         {
          "id": "${i}",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048...</msg>
<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-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow/${file_name}.</doc>
<status status="PASS" start="2026-04-08T01:01:31.163688" elapsed="0.005359"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:01:31.169464" level="INFO">${items} = []</msg>
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:01:31.169224" elapsed="0.000294"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:01:31.170045" level="INFO">${separator} = ,
</msg>
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:01:31.169680" elapsed="0.000391"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:31.170692" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:01:31.170458" elapsed="0.000290"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:31.170444" elapsed="0.000327"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:01:31.171310" level="INFO">${j} = 1</msg>
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:01:31.170913" elapsed="0.000424"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:01:31.172272" level="INFO">${item} =         {
          "id": "1",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
  ...</msg>
<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="PASS" start="2026-04-08T01:01:31.171492" elapsed="0.000810"/>
</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="PASS" start="2026-04-08T01:01:31.172459" elapsed="0.000187"/>
</kw>
<var name="${iteration}">1</var>
<status status="PASS" start="2026-04-08T01:01:31.170412" elapsed="0.002271"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="PASS" start="2026-04-08T01:01:31.170127" elapsed="0.002587"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:01:31.173303" level="INFO">${final_text} = {
  "flow": [
        {
          "id": "1",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "...</msg>
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:01:31.172865" elapsed="0.000466"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T01:01:31.173389" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T01:01:31.173536" level="INFO">${data} = {
  "flow": [
        {
          "id": "1",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "...</msg>
<var>${data}</var>
<arg>folder=${folder}</arg>
<arg>name_prefix=post_</arg>
<arg>base_name=${base_name}</arg>
<arg>extension=${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>endline=${endline}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one 1 times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-08T01:01:31.114978" elapsed="0.058585"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T01:01:31.174792" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-flow/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T01:01:31.174565" elapsed="0.000423">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/openflowplugin/add-flow/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-08T01:01:31.175078" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T01:01:31.174225" elapsed="0.000877"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:31.175454" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:01:31.175209" elapsed="0.000301"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:01:31.175983" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:01:31.175699" elapsed="0.000311"/>
</kw>
<status status="PASS" start="2026-04-08T01:01:31.175533" elapsed="0.000511"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:31.175189" elapsed="0.000876"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:01:31.178372" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:01:31.176232" elapsed="0.002166"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-08T01:01:31.178449" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T01:01:31.178600" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Clustered_Reconciliation/../../../variables/openflowplugin/add-flow/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T01:01:31.173886" elapsed="0.004740"/>
</kw>
<kw name="Post_To_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:31.180145" level="INFO">/rests/data/opendaylight-inventory:nodes/node=openflow%3A3/flow-node-inventory:table=0</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:31.179902" elapsed="0.000310"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:31.180602" level="INFO">{
  "flow": [
        {
          "id": "1",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.1/32"
          },
          "flow-name": "Flow-1",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 1
                      }
                    }
                  ]
                }
              }
            ]
          }
        }
  ]
}</msg>
<arg>${data}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:31.180368" elapsed="0.000320"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:31.181087" level="INFO">{'Content-Type': 'application/json'}</msg>
<arg>${content_type}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:31.180845" elapsed="0.000286"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:31.181540" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:31.181302" elapsed="0.000281"/>
</kw>
<kw name="Join_Two_Headers" owner="TemplatedRequests">
<kw name="Copy Dictionary" owner="Collections">
<msg time="2026-04-08T01:01:31.182388" level="INFO">${accumulator} = {'Content-Type': 'application/json'}</msg>
<var>${accumulator}</var>
<arg>${first}</arg>
<doc>Returns a copy of the given dictionary.</doc>
<status status="PASS" start="2026-04-08T01:01:31.182201" elapsed="0.000213"/>
</kw>
<kw name="Get Dictionary Items" owner="Collections">
<msg time="2026-04-08T01:01:31.182736" level="INFO">${items_to_add} = []</msg>
<var>${items_to_add}</var>
<arg>${second}</arg>
<doc>Returns items of the given ``dictionary`` as a list.</doc>
<status status="PASS" start="2026-04-08T01:01:31.182569" elapsed="0.000193"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${accumulator}</arg>
<arg>@{items_to_add}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:01:31.183011" elapsed="0.000230"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:31.183643" level="INFO">{'Content-Type': 'application/json'}</msg>
<arg>${accumulator}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:31.183400" elapsed="0.000287"/>
</kw>
<return>
<value>${accumulator}</value>
<status status="PASS" start="2026-04-08T01:01:31.183729" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T01:01:31.183879" level="INFO">${headers} = {'Content-Type': 'application/json'}</msg>
<var>${headers}</var>
<arg>first=${content_type}</arg>
<arg>second=${accept}</arg>
<doc>Take two dicts, join them, return result. Second argument values take precedence.</doc>
<status status="PASS" start="2026-04-08T01:01:31.181785" elapsed="0.002120"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="POST On Session" owner="RequestsLibrary">
<msg time="2026-04-08T01:01:31.198649" level="INFO">POST Request : url=http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A3/flow-node-inventory:table=0 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A3/flow-node-inventory:table=0 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node01s3bfo0y24i1es90l47mavglv0.node0', 'Content-Length': '777', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body={
  "flow": [
        {
          "id": "1",
          "priority": 100,
          "table_id": 0,
          "match": {
            "ethernet-match": {
              "ethernet-type": {
                "type": 2048
              }
            },
            "ipv4-destination": "10.0.10.1/32"
          },
          "flow-name": "Flow-1",
          "instructions": {
            "instruction": [
              {
                "order": 1,
                "apply-actions": {
                  "action": [
                    {
                      "order": 1,
                      "group-action": {
                        "group-id": 1
                      }
                    }
                  ]
                }
              }
            ]
          }
        }
  ]
} 
 </msg>
<msg time="2026-04-08T01:01:31.198727" level="INFO">POST Response : url=http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A3/flow-node-inventory:table=0 
 status=201, reason=Created 
 headers={'Location': 'http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A3/flow-node-inventory:table=0/flow=1', 'Content-Length': '0'} 
 body=None 
 </msg>
<msg time="2026-04-08T01:01:31.198864" level="INFO">${response} = &lt;Response [201]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T01:01:31.186183" elapsed="0.012717"/>
</kw>
<status status="PASS" start="2026-04-08T01:01:31.183974" elapsed="0.014988"/>
</branch>
<branch type="ELSE">
<kw name="POST On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:31.199280" elapsed="0.000034"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:01:31.198999" elapsed="0.000380"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:31.183957" elapsed="0.015453"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:31.204091" level="INFO"/>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:31.200828" elapsed="0.003324"/>
</kw>
<status status="PASS" start="2026-04-08T01:01:31.200522" elapsed="0.003698"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:31.200496" elapsed="0.003759"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:31.207825" level="INFO">201</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:31.204645" elapsed="0.003242"/>
</kw>
<status status="PASS" start="2026-04-08T01:01:31.204333" elapsed="0.003602"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:31.204310" elapsed="0.003658"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:01:31.208731" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:01:31.208216" elapsed="0.000553"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:31.209217" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:01:31.208865" elapsed="0.000434"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:01:31.209977" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:01:31.209558" elapsed="0.000454"/>
</kw>
<status status="PASS" start="2026-04-08T01:01:31.209332" elapsed="0.000728"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:31.208840" elapsed="0.001250"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:01:31.210837" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:01:31.210338" elapsed="0.000535"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:31.211416" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:01:31.211018" elapsed="0.000479"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:01:31.212193" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:01:31.211759" elapsed="0.000472"/>
</kw>
<status status="PASS" start="2026-04-08T01:01:31.211530" elapsed="0.000751"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:31.210992" elapsed="0.001320"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:01:31.212522" elapsed="0.000529"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T01:01:31.213691" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:01:31.213312" elapsed="0.000416"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T01:01:31.213946" elapsed="0.003183"/>
</kw>
<arg>${response}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T01:01:31.199887" elapsed="0.017350"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T01:01:31.217487" elapsed="0.000019"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:01:31.217341" elapsed="0.000205"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:31.217314" elapsed="0.000263"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T01:01:31.220719" level="INFO">${text_normalized} = </msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T01:01:31.217780" elapsed="0.002966"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T01:01:31.220794" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T01:01:31.220944" level="INFO">${response_text} = </msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>data=${data}</arg>
<arg>content_type=${content_type}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>POST data to given URI, check status code and return response text.
${content_type} and ${accept} are mandatory Python objects with headers to use.
If ${normalize_json}, normalize text before returning.</doc>
<status status="PASS" start="2026-04-08T01:01:31.178947" elapsed="0.042021"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T01:01:31.221033" elapsed="0.000027"/>
</return>
<msg time="2026-04-08T01:01:31.221194" level="INFO">${response_text} = </msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>extension=json</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>content_type=${HEADERS_YANG_JSON}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>endline=${\n}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve URI and data from folder, call Post_To_Uri, return response text.</doc>
<status status="PASS" start="2026-04-08T01:01:31.027444" elapsed="0.193776"/>
</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=response</arg>
<arg>mapping=${mapping}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:31.221642" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:01:31.221322" elapsed="0.000388"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:31.221305" elapsed="0.000429"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T01:01:31.221766" elapsed="0.000025"/>
</return>
<arg>folder=${VAR_DIR}/add-flow</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<arg>iterations=${iter}</arg>
<doc>Add arguments sensible for JSON data, return Post_Templated response text.
Optionally, verification against response.json (no iteration) is called.
Only subset of JSON data is verified and returned if JMES path is specified in
file ${folder}/jmespath.expr.
Response status code must be one of values from ${explicit_status_codes} if specified or one of set
created from all positive HTTP status codes together with ${additional_allowed_status_codes}.</doc>
<status status="PASS" start="2026-04-08T01:01:31.024863" elapsed="0.197023"/>
</kw>
<var name="${switch}">3</var>
<status status="PASS" start="2026-04-08T01:01:30.598521" elapsed="0.623408"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="PASS" start="2026-04-08T01:01:29.319280" elapsed="1.902681"/>
</for>
<arg>1</arg>
<arg>${member_index}</arg>
<doc>Add 100 groups type 1 &amp; 2 and flows in every switch.</doc>
<status status="PASS" start="2026-04-08T01:01:29.317644" elapsed="1.904374"/>
</kw>
<doc>Add 1 group 1&amp;2 and 1 flow in every switch.</doc>
<status status="PASS" start="2026-04-08T01:01:29.317286" elapsed="1.904789"/>
</kw>
<doc>Add 1 group type 1&amp;2 and 1 flow in every switch.</doc>
<status status="PASS" start="2026-04-08T01:01:29.011415" elapsed="2.210801"/>
</test>
<test id="s1-s4-t43" name="Check Flows In Operational DS After Mininet Reconnects" line="305">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-08T01:01:31.225541" elapsed="0.000205"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-08T01:01:31.225275" elapsed="0.000524"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:01:31.226829" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:01:31.226720" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:31.226702" elapsed="0.000194"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:01:31.232022" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:01:31.231917" elapsed="0.000150"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:31.231900" elapsed="0.000189"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:01:31.233081" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:01:31.232708" elapsed="0.000400"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:01:31.233589" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:01:31.233287" elapsed="0.000328"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T01:01:31.233658" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T01:01:31.233810" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T01:01:31.232336" elapsed="0.001498"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:01:31.239199" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:01:31.239071" elapsed="0.000175"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:31.239052" elapsed="0.000216"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:01:31.240426" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:01:31.240318" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:31.240299" elapsed="0.000195"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:01:31.240941" level="INFO">${karaf_connection_index} = 476</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:01:31.240644" elapsed="0.000325"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:01:31.241408" level="INFO">${current_connection_index} = 495</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:01:31.241132" elapsed="0.000303"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:01:31.272581" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:01:31.242031" elapsed="0.030653"/>
</kw>
<msg time="2026-04-08T01:01:31.272850" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T01:01:31.272897" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:01:31.241598" elapsed="0.031337"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T01:01:31.335411" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "[C "I "n "[C "O "p "e "r "a "t "i "o "n "a "l "[C "D "S "[C "A "f "t "e "r "[C "M "i "n "i "n "e "t "[C "R "e "c "o "n "n "e "[78Cc "[A[78Ct
 "s "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T01:01:31.273482" elapsed="0.062051"/>
</kw>
<msg time="2026-04-08T01:01:31.335693" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T01:01:31.335739" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:01:31.273109" elapsed="0.062668"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:31.336087" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:01:31.335857" elapsed="0.000287"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:31.335836" elapsed="0.000356"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:31.336686" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "[C "I "n "[C "O "p "e "r "a "t "i "o "n "a "l "[C "D "S "[C "A "f "t "e "r "[C "M "i "n "i "n "e "t "[C "R "e "c "o "n "n "e "[78Cc "[A[78Ct
 "s "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:31.336383" elapsed="0.000384"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:31.337055" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:01:31.336835" elapsed="0.000274"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:31.336816" elapsed="0.000317"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T01:01:31.337220" elapsed="0.000030"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:01:31.339783" elapsed="0.000190"/>
</kw>
<msg time="2026-04-08T01:01:31.340033" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:01:31.338694" elapsed="0.001481"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:31.340587" elapsed="0.000075"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:31.340922" elapsed="0.000073"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:01:31.338067" elapsed="0.003036"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T01:01:31.337493" elapsed="0.003705"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T01:01:31.239987" elapsed="0.101320"/>
</kw>
<msg time="2026-04-08T01:01:31.341418" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:01:31.341464" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:01:31.239420" elapsed="0.102081"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T01:01:31.341698" elapsed="0.000034"/>
</return>
<status status="PASS" start="2026-04-08T01:01:31.341584" elapsed="0.000184"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:31.341561" elapsed="0.000232"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:31.342211" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:31.342544" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T01:01:31.342614" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T01:01:31.238722" elapsed="0.103997"/>
</kw>
<msg time="2026-04-08T01:01:31.342811" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:01:31.342854" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:01:31.234216" elapsed="0.108689"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:31.343268" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:01:31.342980" elapsed="0.000343"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:31.342963" elapsed="0.000383"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T01:01:31.234050" elapsed="0.109319"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:01:31.348848" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:01:31.348742" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:31.348724" elapsed="0.000190"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:01:31.350041" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:01:31.349935" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:31.349916" elapsed="0.000191"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:01:31.350574" level="INFO">${karaf_connection_index} = 478</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:01:31.350278" elapsed="0.000323"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:01:31.351077" level="INFO">${current_connection_index} = 495</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:01:31.350770" elapsed="0.000336"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:01:31.381150" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:01:31.351642" elapsed="0.029625"/>
</kw>
<msg time="2026-04-08T01:01:31.381426" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T01:01:31.381473" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:01:31.351289" elapsed="0.030221"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T01:01:31.444608" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "[C "I "n "[C "O "p "e "r "a "t "i "o "n "a "l "[C "D "S "[C "A "f "t "e "r "[C "M "i "n "i "n "e "t "[C "R "e "c "o "n "n "e "[78Cc "[A[78Ct
 "s "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T01:01:31.382073" elapsed="0.062655"/>
</kw>
<msg time="2026-04-08T01:01:31.444889" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T01:01:31.444936" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:01:31.381729" elapsed="0.063244"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:31.445302" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:01:31.445052" elapsed="0.000340"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:31.445032" elapsed="0.000385"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:31.445874" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "[C "I "n "[C "O "p "e "r "a "t "i "o "n "a "l "[C "D "S "[C "A "f "t "e "r "[C "M "i "n "i "n "e "t "[C "R "e "c "o "n "n "e "[78Cc "[A[78Ct
 "s "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:31.445565" elapsed="0.000393"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:31.446266" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:01:31.446027" elapsed="0.000295"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:31.446008" elapsed="0.000337"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T01:01:31.446377" elapsed="0.000027"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:01:31.449180" elapsed="0.000190"/>
</kw>
<msg time="2026-04-08T01:01:31.449441" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:01:31.447877" elapsed="0.001693"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:31.449853" elapsed="0.000080"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:31.450217" elapsed="0.000074"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:01:31.447242" elapsed="0.003157"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T01:01:31.446676" elapsed="0.003786"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T01:01:31.349635" elapsed="0.100926"/>
</kw>
<msg time="2026-04-08T01:01:31.450652" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:01:31.450730" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:01:31.349066" elapsed="0.101716"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T01:01:31.451144" elapsed="0.000049"/>
</return>
<status status="PASS" start="2026-04-08T01:01:31.450860" elapsed="0.000371"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:31.450841" elapsed="0.000415"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 2,
close the previous connection. In any case create a new connection
to karaf console for 2, set correct prompt set and login to karaf console.
Store connection index for 2 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:31.451654" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:31.451999" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T01:01:31.452072" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T01:01:31.348407" elapsed="0.103787"/>
</kw>
<msg time="2026-04-08T01:01:31.452289" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:01:31.452346" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:01:31.343629" elapsed="0.108756"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:31.452746" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:01:31.452462" elapsed="0.000339"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:31.452444" elapsed="0.000380"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T01:01:31.343488" elapsed="0.109359"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:01:31.458378" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:01:31.458267" elapsed="0.000156"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:31.458151" elapsed="0.000293"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:01:31.459608" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:01:31.459500" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:31.459481" elapsed="0.000197"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:01:31.460115" level="INFO">${karaf_connection_index} = 480</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:01:31.459825" elapsed="0.000316"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:01:31.460570" level="INFO">${current_connection_index} = 495</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:01:31.460322" elapsed="0.000274"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:01:31.492245" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:01:31.461122" elapsed="0.031223"/>
</kw>
<msg time="2026-04-08T01:01:31.492504" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T01:01:31.492550" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:01:31.460771" elapsed="0.031815"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T01:01:31.548384" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "[C "I "n "[C "O "p "e "r "a "t "i "o "n "a "l "[C "D "S "[C "A "f "t "e "r "[C "M "i "n "i "n "e "t "[C "R "e "c "o "n "n "e "[78Cc "[A[78Ct
 "s "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T01:01:31.493095" elapsed="0.055467"/>
</kw>
<msg time="2026-04-08T01:01:31.548756" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T01:01:31.548802" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:01:31.492757" elapsed="0.056082"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:31.549258" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:01:31.548941" elapsed="0.000375"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:31.548912" elapsed="0.000430"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:31.549840" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "[C "I "n "[C "O "p "e "r "a "t "i "o "n "a "l "[C "D "S "[C "A "f "t "e "r "[C "M "i "n "i "n "e "t "[C "R "e "c "o "n "n "e "[78Cc "[A[78Ct
 "s "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:31.549488" elapsed="0.000435"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:31.550224" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:01:31.549989" elapsed="0.000290"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:31.549971" elapsed="0.000331"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T01:01:31.550337" elapsed="0.000036"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:01:31.553205" elapsed="0.000187"/>
</kw>
<msg time="2026-04-08T01:01:31.553462" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:01:31.551897" elapsed="0.001700"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:31.553872" elapsed="0.000074"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:31.554228" elapsed="0.000073"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:01:31.551261" elapsed="0.003150"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T01:01:31.550675" elapsed="0.003803"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T01:01:31.459188" elapsed="0.095459"/>
</kw>
<msg time="2026-04-08T01:01:31.554747" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:01:31.554790" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:01:31.458595" elapsed="0.096233"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T01:01:31.555019" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-08T01:01:31.554913" elapsed="0.000164"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:31.554895" elapsed="0.000205"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 3,
close the previous connection. In any case create a new connection
to karaf console for 3, set correct prompt set and login to karaf console.
Store connection index for 3 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:31.555735" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:31.556070" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T01:01:31.556140" elapsed="0.000030"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T01:01:31.457832" elapsed="0.098431"/>
</kw>
<msg time="2026-04-08T01:01:31.556359" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:01:31.556402" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:01:31.453107" elapsed="0.103332"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:31.556764" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:01:31.556515" elapsed="0.000302"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:31.556498" elapsed="0.000342"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T01:01:31.452967" elapsed="0.103896"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-08T01:01:31.233884" elapsed="0.323013"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-08T01:01:31.231559" elapsed="0.325398"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-08T01:01:31.226388" elapsed="0.330628"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:01:31.225951" elapsed="0.331112"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-08T01:01:31.223149" elapsed="0.333968"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Check Number Of Flows On Member" owner="ClusterOpenFlow">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:01:31.559127" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:01:31.558777" elapsed="0.000392"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T01:01:31.559221" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T01:01:31.559368" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T01:01:31.558255" elapsed="0.001138"/>
</kw>
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T01:01:31.601876" level="INFO">GET Request : url=http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01s3bfo0y24i1es90l47mavglv0.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T01:01:31.606439" level="INFO">GET Response : url=http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Transfer-Encoding': 'chunked'} 
 body={"opendaylight-inventory:nodes":{"node":[{"id":"openflow:3","flow-node-inventory:port-number":54950,"flow-node-inventory:table":[{"id":62,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":28,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":2,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":224,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":181,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":147,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":106,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":61,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":27,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":1,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":223,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":182,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":148,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":105,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":60,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":30,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":0,"flow":[{"id":"69","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.69/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":69}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":884000000}},"flags":""},{"id":"60","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.60/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":60}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":884000000}},"flags":""},{"id":"68","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.68/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":68}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":884000000}},"flags":""},{"id":"67","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.67/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":67}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":884000000}},"flags":""},{"id":"66","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.66/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":66}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":884000000}},"flags":""},{"id":"65","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.65/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":65}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":884000000}},"flags":""},{"id":"64","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.64/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":64}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":884000000}},"flags":""},{"id":"63","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.63/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":63}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":884000000}},"flags":""},{"id":"62","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.62/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":62}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":884000000}},"flags":""},{"id":"61","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.61/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":61}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":884000000}},"flags":""},{"id":"100","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.100/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":100}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":884000000}},"flags":""},{"id":"71","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.71/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":71}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":884000000}},"flags":""},{"id":"70","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.70/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":70}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":884000000}},"flags":""},{"id":"79","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.79/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":79}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":884000000}},"flags":""},{"id":"78","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.78/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":78}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":884000000}},"flags":""},{"id":"77","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.77/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":77}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":884000000}},"flags":""},{"id":"76","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.76/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":76}}]}}]},"hard-timeout":0,"opendaylig... (set the log level to DEBUG or TRACE to see the full content) 
 </msg>
<msg time="2026-04-08T01:01:31.607061" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${RFC8040_OPERATIONAL_NODES_API}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T01:01:31.559550" elapsed="0.047575"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:31.613478" level="INFO">{"opendaylight-inventory:nodes":{"node":[{"id":"openflow:3","flow-node-inventory:port-number":54950,"flow-node-inventory:table":[{"id":62,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":28,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":2,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":224,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":181,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":147,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":106,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":61,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":27,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":1,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":223,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":182,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":148,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":105,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":60,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":30,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":0,"flow":[{"id":"69","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.69/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":69}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":884000000}},"flags":""},{"id":"60","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.60/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":60}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":884000000}},"flags":""},{"id":"68","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.68/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":68}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":884000000}},"flags":""},{"id":"67","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.67/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":67}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":884000000}},"flags":""},{"id":"66","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.66/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":66}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":884000000}},"flags":""},{"id":"65","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.65/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":65}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":884000000}},"flags":""},{"id":"64","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.64/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":64}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":884000000}},"flags":""},{"id":"63","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.63/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":63}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":884000000}},"flags":""},{"id":"62","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.62/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":62}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":884000000}},"flags":""},{"id":"61","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.61/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":61}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":884000000}},"flags":""},{"id":"100","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.100/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":100}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":884000000}},"flags":""},{"id":"71","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.71/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":71}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":884000000}},"flags":""},{"id":"70","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.70/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":70}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":884000000}},"flags":""},{"id":"79","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.79/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":79}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":884000000}},"flags":""},{"id":"78","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.78/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":78}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":884000000}},"flags":""},{"id":"77","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.77/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":77}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":884000000}},"flags":""},{"id":"76","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.76/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":76}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":884000000}},"flags":""},{"id":"75","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.75/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":75}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":884000000}},"flags":""},{"id":"74","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.74/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":74}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":884000000}},"flags":""},{"id":"73","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.73/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":73}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":884000000}},"flags":""},{"id":"72","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.72/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":72}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":884000000}},"flags":""},{"id":"82","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.82/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":82}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":884000000}},"flags":""},{"id":"81","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.81/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":81}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":884000000}},"flags":""},{"id":"80","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.80/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":80}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":884000000}},"flags":""},{"id":"89","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.89/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":89}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":884000000}},"flags":""},{"id":"88","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.88/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":88}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":884000000}},"flags":""},{"id":"87","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.87/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":87}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":884000000}},"flags":""},{"id":"86","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.86/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":86}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":884000000}},"flags":""},{"id":"85","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.85/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":85}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":884000000}},"flags":""},{"id":"84","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.84/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":84}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":884000000}},"flags":""},{"id":"83","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.83/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":83}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":884000000}},"flags":""},{"id":"19","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.19/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":19}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":884000000}},"flags":""},{"id":"18","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.18/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":18}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":884000000}},"flags":""},{"id":"17","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.17/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":17}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":884000000}},"flags":""},{"id":"16","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.16/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":16}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":884000000}},"flags":""},{"id":"15","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.15/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":15}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":884000000}},"flags":""},{"id":"14","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.14/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":14}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":884000000}},"flags":""},{"id":"2","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.2/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":2}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":884000000}},"flags":""},{"id":"93","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.93/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":93}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":884000000}},"flags":""},{"id":"92","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.92/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":92}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":884000000}},"flags":""},{"id":"91","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.91/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":91}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":884000000}},"flags":""},{"id":"90","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.90/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":90}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":884000000}},"flags":""},{"id":"13","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.13/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":13}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":884000000}},"flags":""},{"id":"12","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.12/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":12}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":884000000}},"flags":""},{"id":"11","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.11/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":11}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":884000000}},"flags":""},{"id":"99","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.99/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":99}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":884000000}},"flags":""},{"id":"10","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.10/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":10}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":884000000}},"flags":""},{"id":"98","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.98/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":98}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":884000000}},"flags":""},{"id":"97","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.97/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":97}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":884000000}},"flags":""},{"id":"96","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.96/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":96}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":883000000}},"flags":""},{"id":"95","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.95/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":95}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":883000000}},"flags":""},{"id":"94","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.94/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":94}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":883000000}},"flags":""},{"id":"29","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.29/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":29}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":883000000}},"flags":""},{"id":"28","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.28/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":28}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":883000000}},"flags":""},{"id":"27","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.27/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":27}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":883000000}},"flags":""},{"id":"26","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.26/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":26}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":883000000}},"flags":""},{"id":"25","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.25/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":25}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":883000000}},"flags":""},{"id":"9","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.9/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":9}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":883000000}},"flags":""},{"id":"8","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.8/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":8}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":883000000}},"flags":""},{"id":"7","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.7/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":7}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":883000000}},"flags":""},{"id":"6","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.6/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":6}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":883000000}},"flags":""},{"id":"5","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.5/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":5}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":883000000}},"flags":""},{"id":"4","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.4/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":4}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":883000000}},"flags":""},{"id":"3","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.3/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":3}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":883000000}},"flags":""},{"id":"24","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.24/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":24}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":883000000}},"flags":""},{"id":"23","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.23/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":23}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":883000000}},"flags":""},{"id":"22","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.22/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":22}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":883000000}},"flags":""},{"id":"21","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.21/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":21}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":883000000}},"flags":""},{"id":"20","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.20/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":20}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":883000000}},"flags":""},{"id":"39","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.39/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":39}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":883000000}},"flags":""},{"id":"38","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.38/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":38}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":883000000}},"flags":""},{"id":"37","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.37/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":37}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":883000000}},"flags":""},{"id":"36","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.36/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":36}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":883000000}},"flags":""},{"id":"35","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.35/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":35}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":883000000}},"flags":""},{"id":"34","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.34/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":34}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":883000000}},"flags":""},{"id":"33","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.33/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":33}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":883000000}},"flags":""},{"id":"32","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.32/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":32}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":883000000}},"flags":""},{"id":"31","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.31/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":31}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":883000000}},"flags":""},{"id":"30","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.30/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":30}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":883000000}},"flags":""},{"id":"49","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.49/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":49}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":883000000}},"flags":""},{"id":"48","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.48/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":48}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":883000000}},"flags":""},{"id":"47","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.47/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":47}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":883000000}},"flags":""},{"id":"#UF$TABLE*0-3","table_id":0,"priority":0,"cookie_mask":"0","idle-timeout":0,"cookie":"10","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"output-action":{"max-length":65535,"output-node-connector":"CONTROLLER"}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"45","byte-count":"3690","duration":{"second":179,"nanosecond":755000000}},"flags":"SEND_FLOW_REM"},{"id":"46","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.46/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":46}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":883000000}},"flags":""},{"id":"45","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.45/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":45}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":883000000}},"flags":""},{"id":"44","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.44/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":44}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":883000000}},"flags":""},{"id":"43","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.43/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":43}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":883000000}},"flags":""},{"id":"42","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.42/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":42}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":883000000}},"flags":""},{"id":"41","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.41/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":41}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":883000000}},"flags":""},{"id":"40","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.40/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":40}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":883000000}},"flags":""},{"id":"59","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.59/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":59}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":883000000}},"flags":""},{"id":"58","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.58/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":58}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":883000000}},"flags":""},{"id":"57","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.57/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":57}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":883000000}},"flags":""},{"id":"56","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.56/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":56}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":883000000}},"flags":""},{"id":"55","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.55/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":55}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":883000000}},"flags":""},{"id":"54","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.54/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":54}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":883000000}},"flags":""},{"id":"53","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.53/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":53}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":883000000}},"flags":""},{"id":"52","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.52/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":52}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":883000000}},"flags":""},{"id":"51","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.51/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":51}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":880000000}},"flags":""},{"id":"50","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.50/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":50}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":880000000}},"flags":""}],"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"63","active-flows":100,"packets-matched":"55"}},{"id":226,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":179,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":149,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":104,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":59,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":29,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":225,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":180,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":150,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":103,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":66,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":32,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":220,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":185,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":151,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":102,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":65,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":31,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":253,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":219,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":186,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":152,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":101,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":64,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":34,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":252,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":222,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":183,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":153,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":100,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":63,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":33,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":251,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":221,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":184,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":154,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":99,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":54,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":20,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":250,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":216,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":189,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":155,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":129,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":114,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":53,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":19,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":249,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":215,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":190,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":156,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":130,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":113,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":52,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":22,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":248,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":218,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":187,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":157,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":112,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":51,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":21,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":247,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":217,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":188,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":158,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":128,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":111,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":58,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":24,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":246,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":212,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":193,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":159,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":110,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":57,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":23,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":245,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":211,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":194,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":160,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":109,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":56,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":26,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":244,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":214,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":191,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":161,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":108,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":55,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":25,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":243,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":213,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":192,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":162,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":107,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":77,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":43,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":17,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":239,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":198,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":164,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":138,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":119,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":89,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":78,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":44,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":18,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":240,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":197,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":163,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":137,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":120,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":90,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":75,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":45,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":15,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":241,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":196,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":166,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":136,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":121,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":87,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":76,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":46,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":16,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":242,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":195,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":165,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":135,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":122,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":88,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":81,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":47,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":13,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":235,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":202,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":168,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":134,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":115,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":85,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":82,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":48,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":14,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":236,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":201,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":167,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":133,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":116,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":86,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":79,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":49,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":11,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":237,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":200,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":170,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":132,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":117,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":83,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":80,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":50,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":12,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":238,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":199,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":169,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":131,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":118,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":84,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":69,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":35,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":9,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":231,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":206,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":172,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":146,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":127,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":97,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":70,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":36,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":10,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":232,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":205,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":171,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":145,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":98,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":67,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":37,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":7,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":233,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":204,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":174,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":144,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":95,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":68,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":38,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":8,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":234,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":203,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":173,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":143,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":96,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":73,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":39,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":5,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":227,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":210,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":176,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":142,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":123,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":93,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":74,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":40,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":6,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":228,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":209,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":175,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":141,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":124,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":94,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":71,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":41,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":3,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":229,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":208,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":178,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":140,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":125,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":91,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":72,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":42,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":4,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":230,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":207,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":177,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":139,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":126,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":92,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}}],"opendaylight-group-statistics:group-features":{"max-groups":[4294967040],"group-types-supported":["opendaylight-group-types:group-all","opendaylight-group-types:group-ff","opendaylight-group-types:group-select","opendaylight-group-types:group-indirect"],"group-capabilities-supported":["opendaylight-group-types:chaining","opendaylight-group-types:select-weight","opendaylight-group-types:select-liveness"],"actions":[67076097]},"flow-node-inventory:manufacturer":"Nicira, Inc.","flow-node-inventory:description":"s3","flow-node-inventory:hardware":"Open vSwitch","flow-node-inventory:switch-features":{"max_tables":254,"capabilities":["flow-node-inventory:flow-feature-capability-table-stats","flow-node-inventory:flow-feature-capability-group-stats","flow-node-inventory:flow-feature-capability-queue-stats","flow-node-inventory:flow-feature-capability-flow-stats","flow-node-inventory:flow-feature-capability-port-stats"],"max_buffers":0},"flow-node-inventory:snapshot-gathering-status-start":{"begin":"2026-04-08T01:01:29.773Z"},"flow-node-inventory:software":"2.17.11","node-connector":[{"id":"openflow:3:LOCAL","flow-node-inventory:port-number":4294967294,"flow-node-inventory:hardware-address":"c2:87:c1:60:0d:43","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s3","flow-node-inventory:current-feature":"","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":0,"flow-node-inventory:state":{"live":false,"blocked":false,"link-down":true},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"PORT-DOWN","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"0","received":"0"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":185,"nanosecond":83000000},"bytes":{"transmitted":"0","received":"0"},"receive-crc-error":"0"}},{"id":"openflow:3:2","flow-node-inventory:port-number":2,"flow-node-inventory:hardware-address":"9e:72:98:8c:46:72","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s3-eth2","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"50","received":"54"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":185,"nanosecond":87000000},"bytes":{"transmitted":"4187","received":"4539"},"receive-crc-error":"0"}},{"id":"openflow:3:1","flow-node-inventory:port-number":1,"flow-node-inventory:hardware-address":"ca:ac:9a:41:42:1c","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s3-eth1","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"56","received":"11"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":185,"nanosecond":87000000},"bytes":{"transmitted":"4715","received":"866"},"receive-crc-error":"0"}}],"flow-node-inventory:ip-address":"10.30.170.192","flow-node-inventory:serial-number":"None","flow-node-inventory:group":[{"group-id":56,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":56000}}],"watch_group":56000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":56,"duration":{"second":180,"nanosecond":906000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":22,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":22000}}],"watch_group":22000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":22,"duration":{"second":180,"nanosecond":906000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":99,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":99000}}],"watch_group":99000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":99,"duration":{"second":180,"nanosecond":906000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":34000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":34000,"duration":{"second":183,"nanosecond":736000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":89000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":89000,"duration":{"second":183,"nanosecond":735000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":60000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":60000,"duration":{"second":183,"nanosecond":732000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":91000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":91000,"duration":{"second":183,"nanosecond":732000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":57,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":57000}}],"watch_group":57000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":57,"duration":{"second":180,"nanosecond":906000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":23,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":23000}}],"watch_group":23000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":23,"duration":{"second":180,"nanosecond":409000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":14000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":14000,"duration":{"second":183,"nanosecond":732000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":98,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":98000}}],"watch_group":98000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":98,"duration":{"second":180,"nanosecond":408000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":56000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":56000,"duration":{"second":183,"nanosecond":732000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":85000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":85000,"duration":{"second":183,"nanosecond":732000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":54,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":54000}}],"watch_group":54000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":54,"duration":{"second":180,"nanosecond":408000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":24,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":24000}}],"watch_group":24000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":24,"duration":{"second":180,"nanosecond":408000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":36000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":36000,"duration":{"second":183,"nanosecond":732000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":87000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":87000,"duration":{"second":183,"nanosecond":732000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":59000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":59000,"duration":{"second":183,"nanosecond":732000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":25000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":25000,"duration":{"second":183,"nanosecond":732000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":43000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":43000,"duration":{"second":183,"nanosecond":731000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":55,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":55000}}],"watch_group":55000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":55,"duration":{"second":180,"nanosecond":408000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":25,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":25000}}],"watch_group":25000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":25,"duration":{"second":183,"nanosecond":414000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":100,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":100000}}],"watch_group":100000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":100,"duration":{"second":180,"nanosecond":408000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":58000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":58000,"duration":{"second":183,"nanosecond":414000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":86000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":86000,"duration":{"second":183,"nanosecond":414000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":60,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":60000}}],"watch_group":60000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":60,"duration":{"second":183,"nanosecond":414000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":26,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":26000}}],"watch_group":26000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":26,"duration":{"second":180,"nanosecond":408000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":41000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":41000,"duration":{"second":183,"nanosecond":413000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":95,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":95000}}],"watch_group":95000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":95,"duration":{"second":180,"nanosecond":408000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":82000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":82000,"duration":{"second":183,"nanosecond":413000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":61,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":61000}}],"watch_group":61000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":61,"duration":{"second":180,"nanosecond":408000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":27,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":27000}}],"watch_group":27000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":27,"duration":{"second":180,"nanosecond":403000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":94,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":94000}}],"watch_group":94000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":94,"duration":{"second":180,"nanosecond":403000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":98000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":98000,"duration":{"second":183,"nanosecond":412000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":27000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":27000,"duration":{"second":183,"nanosecond":412000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":57000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":57000,"duration":{"second":183,"nanosecond":411000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":16000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":16000,"duration":{"second":183,"nanosecond":410000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":83000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":83000,"duration":{"second":183,"nanosecond":410000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":58,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":58000}}],"watch_group":58000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":58,"duration":{"second":182,"nanosecond":911000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":28,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":28000}}],"watch_group":28000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":28,"duration":{"second":180,"nanosecond":403000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":97,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":97000}}],"watch_group":97000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":97,"duration":{"second":180,"nanosecond":403000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":100000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":100000,"duration":{"second":182,"nanosecond":911000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":59,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":59000}}],"watch_group":59000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":59,"duration":{"second":182,"nanosecond":911000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":38000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":38000,"duration":{"second":182,"nanosecond":911000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":29,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":29000}}],"watch_group":29000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":29,"duration":{"second":180,"nanosecond":403000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":96,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":96000}}],"watch_group":96000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":96,"duration":{"second":180,"nanosecond":403000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":84000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":84000,"duration":{"second":182,"nanosecond":911000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":64,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":64000}}],"watch_group":64000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":64,"duration":{"second":180,"nanosecond":403000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":30,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":30000}}],"watch_group":30000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":30,"duration":{"second":180,"nanosecond":403000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":4,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":4000}}],"watch_group":4000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":4,"duration":{"second":180,"nanosecond":403000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":91,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":91000}}],"watch_group":91000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":91,"duration":{"second":182,"nanosecond":911000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":7000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":7000,"duration":{"second":182,"nanosecond":911000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":29000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":29000,"duration":{"second":182,"nanosecond":911000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":65,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":65000}}],"watch_group":65000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":65,"duration":{"second":180,"nanosecond":403000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":31,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":31000}}],"watch_group":31000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":31,"duration":{"second":180,"nanosecond":403000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":5,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":5000}}],"watch_group":5000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":5,"duration":{"second":180,"nanosecond":403000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":90,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":90000}}],"watch_group":90000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":90,"duration":{"second":180,"nanosecond":403000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":18000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":18000,"duration":{"second":182,"nanosecond":910000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":62,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":62000}}],"watch_group":62000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":62,"duration":{"second":180,"nanosecond":403000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":65000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":65000,"duration":{"second":182,"nanosecond":910000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":32,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":32000}}],"watch_group":32000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":32,"duration":{"second":180,"nanosecond":403000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":2,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":2000}}],"watch_group":2000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":2,"duration":{"second":180,"nanosecond":403000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":93,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":93000}}],"watch_group":93000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":93,"duration":{"second":180,"nanosecond":403000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":64000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":64000,"duration":{"second":182,"nanosecond":909000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":63,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":63000}}],"watch_group":63000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":63,"duration":{"second":180,"nanosecond":403000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":33,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":33000}}],"watch_group":33000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":33,"duration":{"second":180,"nanosecond":403000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":3,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":3000}}],"watch_group":3000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":3,"duration":{"second":180,"nanosecond":403000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":80000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":80000,"duration":{"second":182,"nanosecond":908000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":9000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":9000,"duration":{"second":182,"nanosecond":908000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":92,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":92000}}],"watch_group":92000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":92,"duration":{"second":180,"nanosecond":403000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":5000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":5000,"duration":{"second":182,"nanosecond":908000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":20000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":20000,"duration":{"second":182,"nanosecond":908000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":81000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":81000,"duration":{"second":182,"nanosecond":908000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":97000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":97000,"duration":{"second":182,"nanosecond":908000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":31000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":31000,"duration":{"second":182,"nanosecond":908000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":68,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":68000}}],"watch_group":68000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":68,"duration":{"second":180,"nanosecond":403000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":11000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":11000,"duration":{"second":182,"nanosecond":908000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":34,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":34000}}],"watch_group":34000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":34,"duration":{"second":182,"nanosecond":908000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":78000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":78000,"duration":{"second":182,"nanosecond":907000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":87,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":87000}}],"watch_group":87000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":87,"duration":{"second":182,"nanosecond":907000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":93000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":93000,"duration":{"second":182,"nanosecond":907000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":63000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":63000,"duration":{"second":182,"nanosecond":907000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":69,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":69000}}],"watch_group":69000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":69,"duration":{"second":180,"nanosecond":403000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":35,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":35000}}],"watch_group":35000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":35,"duration":{"second":180,"nanosecond":403000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":33000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":33000,"duration":{"second":182,"nanosecond":903000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":79000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":79000,"duration":{"second":182,"nanosecond":903000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":86,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":86000}}],"watch_group":86000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":86,"duration":{"second":182,"nanosecond":903000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":62000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":62000,"duration":{"second":182,"nanosecond":903000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":66,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":66000}}],"watch_group":66000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":66,"duration":{"second":180,"nanosecond":403000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":77000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":77000,"duration":{"second":182,"nanosecond":903000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":36,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":36000}}],"watch_group":36000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":36,"duration":{"second":182,"nanosecond":903000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":89,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":89000}}],"watch_group":89000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":89,"duration":{"second":182,"nanosecond":903000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":22000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":22000,"duration":{"second":182,"nanosecond":903000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":95000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":95000,"duration":{"second":182,"nanosecond":903000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":67,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":67000}}],"watch_group":67000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":67,"duration":{"second":180,"nanosecond":403000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":37,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":37000}}],"watch_group":37000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":37,"duration":{"second":180,"nanosecond":403000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":88,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":88000}}],"watch_group":88000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":88,"duration":{"second":180,"nanosecond":403000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":61000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":61000,"duration":{"second":182,"nanosecond":902000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":3000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":3000,"duration":{"second":182,"nanosecond":902000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":73,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":73000}}],"watch_group":73000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":73,"duration":{"second":180,"nanosecond":403000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":39,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":39000}}],"watch_group":39000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":39,"duration":{"second":180,"nanosecond":398000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":13,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":13000}}],"watch_group":13000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":13,"duration":{"second":180,"nanosecond":398000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":74000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":74000,"duration":{"second":182,"nanosecond":902000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":15000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":15000,"duration":{"second":182,"nanosecond":902000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":44000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":44000,"duration":{"second":182,"nanosecond":902000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":45000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":45000,"duration":{"second":182,"nanosecond":902000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":68000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":68000,"duration":{"second":182,"nanosecond":902000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":72,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":72000}}],"watch_group":72000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":72,"duration":{"second":180,"nanosecond":398000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":38,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":38000}}],"watch_group":38000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":38,"duration":{"second":182,"nanosecond":412000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":75000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":75000,"duration":{"second":182,"nanosecond":412000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":12,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":12000}}],"watch_group":12000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":12,"duration":{"second":180,"nanosecond":398000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":35000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":35000,"duration":{"second":182,"nanosecond":412000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":24000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":24000,"duration":{"second":182,"nanosecond":412000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":90000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":90000,"duration":{"second":182,"nanosecond":412000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":71,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":71000}}],"watch_group":71000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":71,"duration":{"second":180,"nanosecond":398000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":41,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":41000}}],"watch_group":41000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":41,"duration":{"second":182,"nanosecond":411000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":42000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":42000,"duration":{"second":182,"nanosecond":411000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":11,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":11000}}],"watch_group":11000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":11,"duration":{"second":182,"nanosecond":411000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":92000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":92000,"duration":{"second":182,"nanosecond":410000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":46000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":46000,"duration":{"second":182,"nanosecond":410000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":67000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":67000,"duration":{"second":182,"nanosecond":410000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":70,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":70000}}],"watch_group":70000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":70,"duration":{"second":180,"nanosecond":398000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":76000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":76000,"duration":{"second":182,"nanosecond":409000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":40,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":40000}}],"watch_group":40000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":40,"duration":{"second":180,"nanosecond":398000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":13000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":13000,"duration":{"second":182,"nanosecond":409000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":10,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":10000}}],"watch_group":10000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":10,"duration":{"second":180,"nanosecond":398000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":88000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":88000,"duration":{"second":182,"nanosecond":409000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":47000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":47000,"duration":{"second":182,"nanosecond":409000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":66000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":66000,"duration":{"second":182,"nanosecond":409000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":77,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":77000}}],"watch_group":77000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":77,"duration":{"second":182,"nanosecond":409000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":43,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":43000}}],"watch_group":43000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":43,"duration":{"second":182,"nanosecond":408000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":9,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":9000}}],"watch_group":9000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":9,"duration":{"second":182,"nanosecond":408000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":99000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":99000,"duration":{"second":182,"nanosecond":408000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":26000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":26000,"duration":{"second":182,"nanosecond":408000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":70000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":70000,"duration":{"second":182,"nanosecond":407000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":76,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":76000}}],"watch_group":76000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":76,"duration":{"second":181,"nanosecond":911000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":42,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":42000}}],"watch_group":42000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":42,"duration":{"second":181,"nanosecond":910000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":8,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":8000}}],"watch_group":8000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":8,"duration":{"second":180,"nanosecond":398000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":37000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":37000,"duration":{"second":181,"nanosecond":910000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":49000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":49000,"duration":{"second":181,"nanosecond":910000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":71000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":71000,"duration":{"second":181,"nanosecond":910000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":48000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":48000,"duration":{"second":181,"nanosecond":909000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":75,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":75000}}],"watch_group":75000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":75,"duration":{"second":181,"nanosecond":905000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":45,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":45000}}],"watch_group":45000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":45,"duration":{"second":181,"nanosecond":905000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":7,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":7000}}],"watch_group":7000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":7,"duration":{"second":181,"nanosecond":905000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":39000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":39000,"duration":{"second":181,"nanosecond":905000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":73000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":73000,"duration":{"second":181,"nanosecond":905000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":69000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":69000,"duration":{"second":181,"nanosecond":905000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":17000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":17000,"duration":{"second":181,"nanosecond":905000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":28000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":28000,"duration":{"second":181,"nanosecond":905000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":74,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":74000}}],"watch_group":74000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":74,"duration":{"second":181,"nanosecond":905000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":44,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":44000}}],"watch_group":44000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":44,"duration":{"second":181,"nanosecond":905000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":6,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":6000}}],"watch_group":6000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":6,"duration":{"second":180,"nanosecond":398000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":40000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":40000,"duration":{"second":181,"nanosecond":905000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":81,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":81000}}],"watch_group":81000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":81,"duration":{"second":181,"nanosecond":905000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":47,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":47000}}],"watch_group":47000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":47,"duration":{"second":181,"nanosecond":905000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":21,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":21000}}],"watch_group":21000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":21,"duration":{"second":180,"nanosecond":398000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":8000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":8000,"duration":{"second":181,"nanosecond":905000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":19000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":19000,"duration":{"second":181,"nanosecond":904000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":96000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":96000,"duration":{"second":181,"nanosecond":904000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":80,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":80000}}],"watch_group":80000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":80,"duration":{"second":181,"nanosecond":904000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":46,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":46000}}],"watch_group":46000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":46,"duration":{"second":181,"nanosecond":904000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":20,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":20000}}],"watch_group":20000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":20,"duration":{"second":181,"nanosecond":904000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":52000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":52000,"duration":{"second":181,"nanosecond":904000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":6000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":6000,"duration":{"second":181,"nanosecond":904000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":79,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":79000}}],"watch_group":79000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":79,"duration":{"second":181,"nanosecond":903000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":49,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":49000}}],"watch_group":49000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":49,"duration":{"second":181,"nanosecond":411000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":19,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":19000}}],"watch_group":19000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":19,"duration":{"second":181,"nanosecond":410000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":50000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":50000,"duration":{"second":181,"nanosecond":410000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":72000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":72000,"duration":{"second":181,"nanosecond":410000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":30000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":30000,"duration":{"second":181,"nanosecond":410000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":78,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":78000}}],"watch_group":78000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":78,"duration":{"second":181,"nanosecond":410000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":48,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":48000}}],"watch_group":48000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":48,"duration":{"second":181,"nanosecond":409000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":18,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":18000}}],"watch_group":18000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":18,"duration":{"second":181,"nanosecond":409000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":51000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":51000,"duration":{"second":181,"nanosecond":409000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":85,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":85000}}],"watch_group":85000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":85,"duration":{"second":181,"nanosecond":409000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":55000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":55000,"duration":{"second":181,"nanosecond":409000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":51,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":51000}}],"watch_group":51000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":51,"duration":{"second":180,"nanosecond":910000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":17,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":17000}}],"watch_group":17000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":17,"duration":{"second":180,"nanosecond":910000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":21000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":21000,"duration":{"second":180,"nanosecond":910000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":4000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":4000,"duration":{"second":180,"nanosecond":910000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":84,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":84000}}],"watch_group":84000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":84,"duration":{"second":180,"nanosecond":910000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":50,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":50000}}],"watch_group":50000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":50,"duration":{"second":180,"nanosecond":910000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":16,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":16000}}],"watch_group":16000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":16,"duration":{"second":180,"nanosecond":909000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":10000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":10000,"duration":{"second":180,"nanosecond":909000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":54000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":54000,"duration":{"second":180,"nanosecond":909000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":83,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":83000}}],"watch_group":83000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":83,"duration":{"second":180,"nanosecond":909000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":32000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":32000,"duration":{"second":180,"nanosecond":909000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":53,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":53000}}],"watch_group":53000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":53,"duration":{"second":180,"nanosecond":398000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":15,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":15000}}],"watch_group":15000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":15,"duration":{"second":180,"nanosecond":908000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":2000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":2000,"duration":{"second":180,"nanosecond":908000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":82,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":82000}}],"watch_group":82000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":82,"duration":{"second":180,"nanosecond":908000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":52,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":52000}}],"watch_group":52000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":52,"duration":{"second":180,"nanosecond":908000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":14,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":14000}}],"watch_group":14000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":14,"duration":{"second":180,"nanosecond":908000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":53000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":53000,"duration":{"second":180,"nanosecond":907000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":12000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":12000,"duration":{"second":180,"nanosecond":907000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":23000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":23000,"duration":{"second":180,"nanosecond":906000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":94000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":94000,"duration":{"second":180,"nanosecond":906000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}}],"flow-node-inventory:snapshot-gathering-status-end":{"succeeded":true,"end":"2026-04-08T01:01:29.803Z"}},{"id":"openflow:1","flow-node-inventory:port-number":54934,"flow-node-inventory:table":[{"id":62,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":28,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":2,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":224,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":181,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":147,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":106,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":61,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":27,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":1,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":223,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":182,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":148,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":105,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":60,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":30,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":0,"flow":[{"id":"69","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.69/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":69}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":885000000}},"flags":""},{"id":"60","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.60/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":60}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":885000000}},"flags":""},{"id":"68","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.68/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":68}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":885000000}},"flags":""},{"id":"67","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.67/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":67}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":885000000}},"flags":""},{"id":"66","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.66/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":66}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":885000000}},"flags":""},{"id":"65","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.65/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":65}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":885000000}},"flags":""},{"id":"64","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.64/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":64}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":885000000}},"flags":""},{"id":"63","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.63/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":63}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":885000000}},"flags":""},{"id":"62","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.62/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":62}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":885000000}},"flags":""},{"id":"61","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.61/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":61}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":885000000}},"flags":""},{"id":"100","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.100/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":100}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":885000000}},"flags":""},{"id":"71","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.71/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":71}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":885000000}},"flags":""},{"id":"70","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.70/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":70}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":885000000}},"flags":""},{"id":"79","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.79/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":79}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":885000000}},"flags":""},{"id":"78","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.78/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":78}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":885000000}},"flags":""},{"id":"77","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.77/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":77}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":885000000}},"flags":""},{"id":"76","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.76/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":76}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":885000000}},"flags":""},{"id":"75","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.75/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":75}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":885000000}},"flags":""},{"id":"74","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.74/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":74}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":885000000}},"flags":""},{"id":"73","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.73/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":73}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":885000000}},"flags":""},{"id":"72","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.72/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":72}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":885000000}},"flags":""},{"id":"82","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.82/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":82}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":885000000}},"flags":""},{"id":"81","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.81/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":81}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":885000000}},"flags":""},{"id":"80","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.80/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":80}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":885000000}},"flags":""},{"id":"89","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.89/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":89}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":885000000}},"flags":""},{"id":"88","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.88/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":88}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":885000000}},"flags":""},{"id":"87","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.87/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":87}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":885000000}},"flags":""},{"id":"86","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.86/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":86}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":886000000}},"flags":""},{"id":"85","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.85/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":85}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":886000000}},"flags":""},{"id":"84","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.84/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":84}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":885000000}},"flags":""},{"id":"83","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.83/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":83}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":885000000}},"flags":""},{"id":"19","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.19/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":19}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":885000000}},"flags":""},{"id":"18","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.18/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":18}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":885000000}},"flags":""},{"id":"17","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.17/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":17}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":885000000}},"flags":""},{"id":"16","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.16/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":16}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":885000000}},"flags":""},{"id":"15","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.15/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":15}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":885000000}},"flags":""},{"id":"14","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.14/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":14}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":885000000}},"flags":""},{"id":"2","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.2/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":2}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":885000000}},"flags":""},{"id":"93","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.93/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":93}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":885000000}},"flags":""},{"id":"92","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.92/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":92}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":885000000}},"flags":""},{"id":"91","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.91/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":91}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":885000000}},"flags":""},{"id":"90","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.90/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":90}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":885000000}},"flags":""},{"id":"13","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.13/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":13}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":885000000}},"flags":""},{"id":"12","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.12/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":12}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":885000000}},"flags":""},{"id":"11","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.11/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":11}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":885000000}},"flags":""},{"id":"99","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.99/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":99}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":885000000}},"flags":""},{"id":"10","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.10/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":10}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":885000000}},"flags":""},{"id":"98","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.98/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":98}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":885000000}},"flags":""},{"id":"97","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.97/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":97}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":885000000}},"flags":""},{"id":"96","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.96/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":96}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":885000000}},"flags":""},{"id":"95","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.95/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":95}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":885000000}},"flags":""},{"id":"94","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.94/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":94}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":885000000}},"flags":""},{"id":"29","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.29/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":29}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":885000000}},"flags":""},{"id":"28","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.28/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":28}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":885000000}},"flags":""},{"id":"27","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.27/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":27}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":885000000}},"flags":""},{"id":"26","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.26/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":26}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":885000000}},"flags":""},{"id":"25","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.25/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":25}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":885000000}},"flags":""},{"id":"9","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.9/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":9}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":885000000}},"flags":""},{"id":"8","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.8/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":8}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":885000000}},"flags":""},{"id":"7","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.7/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":7}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":885000000}},"flags":""},{"id":"6","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.6/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":6}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":885000000}},"flags":""},{"id":"5","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.5/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":5}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":885000000}},"flags":""},{"id":"4","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.4/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":4}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":885000000}},"flags":""},{"id":"3","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.3/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":3}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":885000000}},"flags":""},{"id":"24","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.24/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":24}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":885000000}},"flags":""},{"id":"23","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.23/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":23}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":885000000}},"flags":""},{"id":"22","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.22/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":22}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":885000000}},"flags":""},{"id":"21","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.21/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":21}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":885000000}},"flags":""},{"id":"20","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.20/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":20}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":885000000}},"flags":""},{"id":"39","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.39/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":39}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":885000000}},"flags":""},{"id":"38","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.38/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":38}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":885000000}},"flags":""},{"id":"37","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.37/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":37}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":885000000}},"flags":""},{"id":"36","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.36/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":36}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":885000000}},"flags":""},{"id":"35","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.35/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":35}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":885000000}},"flags":""},{"id":"34","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.34/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":34}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":885000000}},"flags":""},{"id":"33","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.33/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":33}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":885000000}},"flags":""},{"id":"32","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.32/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":32}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":885000000}},"flags":""},{"id":"31","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.31/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":31}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":885000000}},"flags":""},{"id":"30","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.30/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":30}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":885000000}},"flags":""},{"id":"49","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.49/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":49}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":885000000}},"flags":""},{"id":"48","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.48/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":48}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":884000000}},"flags":""},{"id":"47","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.47/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":47}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":884000000}},"flags":""},{"id":"#UF$TABLE*0-1","table_id":0,"priority":0,"cookie_mask":"0","idle-timeout":0,"cookie":"10","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"output-action":{"max-length":65535,"output-node-connector":"CONTROLLER"}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"46","byte-count":"3760","duration":{"second":179,"nanosecond":775000000}},"flags":"SEND_FLOW_REM"},{"id":"46","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.46/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":46}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":884000000}},"flags":""},{"id":"45","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.45/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":45}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":884000000}},"flags":""},{"id":"44","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.44/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":44}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":884000000}},"flags":""},{"id":"43","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.43/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":43}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":884000000}},"flags":""},{"id":"42","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.42/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":42}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":884000000}},"flags":""},{"id":"41","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.41/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":41}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":884000000}},"flags":""},{"id":"40","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.40/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":40}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":884000000}},"flags":""},{"id":"59","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.59/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":59}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":884000000}},"flags":""},{"id":"58","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.58/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":58}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":884000000}},"flags":""},{"id":"57","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.57/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":57}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":884000000}},"flags":""},{"id":"56","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.56/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":56}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":884000000}},"flags":""},{"id":"55","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.55/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":55}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":884000000}},"flags":""},{"id":"54","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.54/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":54}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":884000000}},"flags":""},{"id":"53","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.53/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":53}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":884000000}},"flags":""},{"id":"52","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.52/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":52}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":884000000}},"flags":""},{"id":"51","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.51/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":51}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":884000000}},"flags":""},{"id":"50","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.50/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":50}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":884000000}},"flags":""}],"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"63","active-flows":100,"packets-matched":"56"}},{"id":226,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":179,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":149,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":104,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":59,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":29,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":225,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":180,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":150,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":103,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":66,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":32,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":220,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":185,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":151,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":102,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":65,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":31,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":253,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":219,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":186,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":152,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":101,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":64,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":34,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":252,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":222,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":183,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":153,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":100,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":63,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":33,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":251,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":221,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":184,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":154,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":99,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":54,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":20,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":250,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":216,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":189,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":155,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":129,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":114,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":53,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":19,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":249,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":215,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":190,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":156,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":130,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":113,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":52,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":22,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":248,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":218,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":187,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":157,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":112,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":51,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":21,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":247,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":217,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":188,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":158,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":128,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":111,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":58,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":24,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":246,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":212,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":193,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":159,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":110,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":57,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":23,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":245,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":211,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":194,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":160,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":109,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":56,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":26,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":244,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":214,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":191,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":161,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":108,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":55,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":25,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":243,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":213,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":192,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":162,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":107,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":77,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":43,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":17,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":239,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":198,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":164,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":138,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":119,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":89,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":78,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":44,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":18,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":240,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":197,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":163,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":137,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":120,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":90,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":75,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":45,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":15,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":241,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":196,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":166,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":136,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":121,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":87,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":76,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":46,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":16,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":242,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":195,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":165,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":135,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":122,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":88,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":81,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":47,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":13,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":235,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":202,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":168,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":134,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":115,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":85,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":82,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":48,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":14,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":236,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":201,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":167,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":133,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":116,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":86,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":79,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":49,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":11,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":237,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":200,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":170,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":132,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":117,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":83,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":80,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":50,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":12,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":238,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":199,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":169,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":131,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":118,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":84,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":69,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":35,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":9,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":231,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":206,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":172,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":146,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":127,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":97,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":70,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":36,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":10,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":232,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":205,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":171,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":145,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":98,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":67,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":37,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":7,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":233,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":204,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":174,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":144,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":95,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":68,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":38,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":8,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":234,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":203,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":173,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":143,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":96,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":73,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":39,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":5,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":227,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":210,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":176,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":142,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":123,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":93,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":74,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":40,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":6,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":228,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":209,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":175,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":141,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":124,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":94,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":71,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":41,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":3,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":229,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":208,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":178,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":140,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":125,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":91,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":72,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":42,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":4,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":230,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":207,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":177,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":139,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":126,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":92,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}}],"opendaylight-group-statistics:group-features":{"max-groups":[4294967040],"group-types-supported":["opendaylight-group-types:group-all","opendaylight-group-types:group-ff","opendaylight-group-types:group-select","opendaylight-group-types:group-indirect"],"group-capabilities-supported":["opendaylight-group-types:chaining","opendaylight-group-types:select-weight","opendaylight-group-types:select-liveness"],"actions":[67076097]},"flow-node-inventory:manufacturer":"Nicira, Inc.","flow-node-inventory:description":"s1","flow-node-inventory:hardware":"Open vSwitch","flow-node-inventory:switch-features":{"max_tables":254,"capabilities":["flow-node-inventory:flow-feature-capability-table-stats","flow-node-inventory:flow-feature-capability-group-stats","flow-node-inventory:flow-feature-capability-queue-stats","flow-node-inventory:flow-feature-capability-flow-stats","flow-node-inventory:flow-feature-capability-port-stats"],"max_buffers":0},"flow-node-inventory:snapshot-gathering-status-start":{"begin":"2026-04-08T01:01:29.785Z"},"flow-node-inventory:software":"2.17.11","node-connector":[{"id":"openflow:1:1","flow-node-inventory:port-number":1,"flow-node-inventory:hardware-address":"92:f4:e8:ea:c6:ad","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s1-eth1","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"56","received":"11"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":185,"nanosecond":109000000},"bytes":{"transmitted":"4715","received":"866"},"receive-crc-error":"0"}},{"id":"openflow:1:LOCAL","flow-node-inventory:port-number":4294967294,"flow-node-inventory:hardware-address":"e6:45:d0:5b:c7:49","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s1","flow-node-inventory:current-feature":"","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":0,"flow-node-inventory:state":{"live":false,"blocked":false,"link-down":true},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"PORT-DOWN","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"0","received":"0"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":185,"nanosecond":105000000},"bytes":{"transmitted":"0","received":"0"},"receive-crc-error":"0"}},{"id":"openflow:1:2","flow-node-inventory:port-number":2,"flow-node-inventory:hardware-address":"42:46:a8:4b:8b:86","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s1-eth2","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"50","received":"54"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":185,"nanosecond":109000000},"bytes":{"transmitted":"4187","received":"4539"},"receive-crc-error":"0"}}],"flow-node-inventory:ip-address":"10.30.170.192","flow-node-inventory:serial-number":"None","flow-node-inventory:group":[{"group-id":56,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":56000}}],"watch_group":56000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":56,"duration":{"second":181,"nanosecond":56000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":22,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":22000}}],"watch_group":22000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":22,"duration":{"second":181,"nanosecond":56000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":99,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":99000}}],"watch_group":99000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":99,"duration":{"second":181,"nanosecond":56000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":34000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":34000,"duration":{"second":183,"nanosecond":749000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":89000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":89000,"duration":{"second":183,"nanosecond":749000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":60000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":60000,"duration":{"second":183,"nanosecond":749000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":91000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":91000,"duration":{"second":183,"nanosecond":749000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":57,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":57000}}],"watch_group":57000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":57,"duration":{"second":181,"nanosecond":56000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":23,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":23000}}],"watch_group":23000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":23,"duration":{"second":180,"nanosecond":556000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":14000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":14000,"duration":{"second":183,"nanosecond":749000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":98,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":98000}}],"watch_group":98000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":98,"duration":{"second":180,"nanosecond":556000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":56000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":56000,"duration":{"second":183,"nanosecond":749000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":85000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":85000,"duration":{"second":183,"nanosecond":749000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":54,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":54000}}],"watch_group":54000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":54,"duration":{"second":180,"nanosecond":556000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":24,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":24000}}],"watch_group":24000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":24,"duration":{"second":180,"nanosecond":556000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":36000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":36000,"duration":{"second":183,"nanosecond":749000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":87000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":87000,"duration":{"second":183,"nanosecond":749000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":59000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":59000,"duration":{"second":183,"nanosecond":749000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":25000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":25000,"duration":{"second":183,"nanosecond":749000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":43000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":43000,"duration":{"second":183,"nanosecond":749000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":55,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":55000}}],"watch_group":55000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":55,"duration":{"second":180,"nanosecond":556000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":25,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":25000}}],"watch_group":25000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":25,"duration":{"second":183,"nanosecond":563000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":100,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":100000}}],"watch_group":100000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":100,"duration":{"second":180,"nanosecond":556000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":58000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":58000,"duration":{"second":183,"nanosecond":560000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":86000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":86000,"duration":{"second":183,"nanosecond":560000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":60,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":60000}}],"watch_group":60000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":60,"duration":{"second":183,"nanosecond":560000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":26,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":26000}}],"watch_group":26000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":26,"duration":{"second":180,"nanosecond":556000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":41000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":41000,"duration":{"second":183,"nanosecond":560000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":95,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":95000}}],"watch_group":95000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":95,"duration":{"second":180,"nanosecond":556000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":82000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":82000,"duration":{"second":183,"nanosecond":560000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":61,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":61000}}],"watch_group":61000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":61,"duration":{"second":180,"nanosecond":556000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":27,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":27000}}],"watch_group":27000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":27,"duration":{"second":180,"nanosecond":556000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":94,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":94000}}],"watch_group":94000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":94,"duration":{"second":180,"nanosecond":556000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":98000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":98000,"duration":{"second":183,"nanosecond":560000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":27000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":27000,"duration":{"second":183,"nanosecond":560000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":57000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":57000,"duration":{"second":183,"nanosecond":560000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":16000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":16000,"duration":{"second":183,"nanosecond":560000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":83000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":83000,"duration":{"second":183,"nanosecond":560000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":58,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":58000}}],"watch_group":58000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":58,"duration":{"second":183,"nanosecond":57000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":28,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":28000}}],"watch_group":28000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":28,"duration":{"second":180,"nanosecond":556000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":97,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":97000}}],"watch_group":97000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":97,"duration":{"second":180,"nanosecond":556000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":100000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":100000,"duration":{"second":183,"nanosecond":57000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":59,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":59000}}],"watch_group":59000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":59,"duration":{"second":183,"nanosecond":57000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":38000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":38000,"duration":{"second":183,"nanosecond":57000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":29,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":29000}}],"watch_group":29000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":29,"duration":{"second":180,"nanosecond":556000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":96,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":96000}}],"watch_group":96000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":96,"duration":{"second":180,"nanosecond":556000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":84000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":84000,"duration":{"second":183,"nanosecond":57000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":64,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":64000}}],"watch_group":64000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":64,"duration":{"second":180,"nanosecond":556000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":30,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":30000}}],"watch_group":30000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":30,"duration":{"second":180,"nanosecond":556000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":4,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":4000}}],"watch_group":4000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":4,"duration":{"second":180,"nanosecond":556000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":91,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":91000}}],"watch_group":91000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":91,"duration":{"second":183,"nanosecond":57000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":7000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":7000,"duration":{"second":183,"nanosecond":57000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":29000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":29000,"duration":{"second":183,"nanosecond":57000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":65,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":65000}}],"watch_group":65000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":65,"duration":{"second":180,"nanosecond":556000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":31,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":31000}}],"watch_group":31000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":31,"duration":{"second":180,"nanosecond":556000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":5,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":5000}}],"watch_group":5000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":5,"duration":{"second":180,"nanosecond":556000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":90,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":90000}}],"watch_group":90000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":90,"duration":{"second":180,"nanosecond":556000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":18000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":18000,"duration":{"second":183,"nanosecond":57000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":62,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":62000}}],"watch_group":62000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":62,"duration":{"second":180,"nanosecond":556000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":65000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":65000,"duration":{"second":183,"nanosecond":57000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":32,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":32000}}],"watch_group":32000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":32,"duration":{"second":180,"nanosecond":556000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":2,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":2000}}],"watch_group":2000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":2,"duration":{"second":180,"nanosecond":556000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":93,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":93000}}],"watch_group":93000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":93,"duration":{"second":180,"nanosecond":556000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":64000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":64000,"duration":{"second":183,"nanosecond":57000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":63,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":63000}}],"watch_group":63000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":63,"duration":{"second":180,"nanosecond":556000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":33,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":33000}}],"watch_group":33000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":33,"duration":{"second":180,"nanosecond":556000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":3,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":3000}}],"watch_group":3000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":3,"duration":{"second":180,"nanosecond":551000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":80000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":80000,"duration":{"second":183,"nanosecond":57000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":9000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":9000,"duration":{"second":183,"nanosecond":57000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":92,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":92000}}],"watch_group":92000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":92,"duration":{"second":180,"nanosecond":551000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":5000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":5000,"duration":{"second":183,"nanosecond":57000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":20000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":20000,"duration":{"second":183,"nanosecond":57000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":81000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":81000,"duration":{"second":183,"nanosecond":57000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":97000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":97000,"duration":{"second":183,"nanosecond":57000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":31000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":31000,"duration":{"second":183,"nanosecond":57000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":68,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":68000}}],"watch_group":68000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":68,"duration":{"second":180,"nanosecond":551000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":11000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":11000,"duration":{"second":183,"nanosecond":57000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":34,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":34000}}],"watch_group":34000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":34,"duration":{"second":183,"nanosecond":57000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":78000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":78000,"duration":{"second":183,"nanosecond":57000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":87,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":87000}}],"watch_group":87000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":87,"duration":{"second":183,"nanosecond":57000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":93000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":93000,"duration":{"second":183,"nanosecond":57000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":63000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":63000,"duration":{"second":183,"nanosecond":57000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":69,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":69000}}],"watch_group":69000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":69,"duration":{"second":180,"nanosecond":551000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":35,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":35000}}],"watch_group":35000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":35,"duration":{"second":180,"nanosecond":551000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":1,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":1000}}],"watch_group":1000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":1,"duration":{"second":0,"nanosecond":62000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":33000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":33000,"duration":{"second":183,"nanosecond":57000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":79000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":79000,"duration":{"second":183,"nanosecond":55000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":86,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":86000}}],"watch_group":86000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":86,"duration":{"second":183,"nanosecond":55000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":62000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":62000,"duration":{"second":183,"nanosecond":55000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":66,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":66000}}],"watch_group":66000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":66,"duration":{"second":180,"nanosecond":551000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":77000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":77000,"duration":{"second":183,"nanosecond":55000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":36,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":36000}}],"watch_group":36000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":36,"duration":{"second":183,"nanosecond":55000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":89,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":89000}}],"watch_group":89000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":89,"duration":{"second":183,"nanosecond":54000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":22000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":22000,"duration":{"second":183,"nanosecond":54000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":95000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":95000,"duration":{"second":183,"nanosecond":54000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":67,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":67000}}],"watch_group":67000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":67,"duration":{"second":180,"nanosecond":551000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":37,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":37000}}],"watch_group":37000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":37,"duration":{"second":180,"nanosecond":551000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":1000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":1000,"duration":{"second":0,"nanosecond":286000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":88,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":88000}}],"watch_group":88000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":88,"duration":{"second":180,"nanosecond":551000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":61000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":61000,"duration":{"second":183,"nanosecond":54000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":3000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":3000,"duration":{"second":183,"nanosecond":53000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":73,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":73000}}],"watch_group":73000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":73,"duration":{"second":180,"nanosecond":551000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":39,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":39000}}],"watch_group":39000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":39,"duration":{"second":180,"nanosecond":551000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":13,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":13000}}],"watch_group":13000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":13,"duration":{"second":180,"nanosecond":551000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":74000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":74000,"duration":{"second":183,"nanosecond":53000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":15000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":15000,"duration":{"second":183,"nanosecond":53000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":44000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":44000,"duration":{"second":183,"nanosecond":53000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":45000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":45000,"duration":{"second":183,"nanosecond":53000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":68000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":68000,"duration":{"second":183,"nanosecond":53000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":72,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":72000}}],"watch_group":72000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":72,"duration":{"second":180,"nanosecond":551000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":38,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":38000}}],"watch_group":38000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":38,"duration":{"second":182,"nanosecond":565000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":75000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":75000,"duration":{"second":182,"nanosecond":565000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":12,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":12000}}],"watch_group":12000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":12,"duration":{"second":180,"nanosecond":551000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":35000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":35000,"duration":{"second":182,"nanosecond":565000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":24000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":24000,"duration":{"second":182,"nanosecond":564000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":90000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":90000,"duration":{"second":182,"nanosecond":564000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":71,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":71000}}],"watch_group":71000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":71,"duration":{"second":180,"nanosecond":551000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":41,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":41000}}],"watch_group":41000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":41,"duration":{"second":182,"nanosecond":564000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":42000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":42000,"duration":{"second":182,"nanosecond":564000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":11,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":11000}}],"watch_group":11000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":11,"duration":{"second":182,"nanosecond":563000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":92000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":92000,"duration":{"second":182,"nanosecond":563000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":46000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":46000,"duration":{"second":182,"nanosecond":563000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":67000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":67000,"duration":{"second":182,"nanosecond":563000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":70,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":70000}}],"watch_group":70000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":70,"duration":{"second":180,"nanosecond":551000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":76000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":76000,"duration":{"second":182,"nanosecond":562000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":40,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":40000}}],"watch_group":40000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":40,"duration":{"second":180,"nanosecond":551000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":13000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":13000,"duration":{"second":182,"nanosecond":559000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":10,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":10000}}],"watch_group":10000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":10,"duration":{"second":180,"nanosecond":551000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":88000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":88000,"duration":{"second":182,"nanosecond":559000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":47000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":47000,"duration":{"second":182,"nanosecond":559000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":66000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":66000,"duration":{"second":182,"nanosecond":558000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":77,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":77000}}],"watch_group":77000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":77,"duration":{"second":182,"nanosecond":558000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":43,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":43000}}],"watch_group":43000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":43,"duration":{"second":182,"nanosecond":558000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":9,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":9000}}],"watch_group":9000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":9,"duration":{"second":182,"nanosecond":558000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":99000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":99000,"duration":{"second":182,"nanosecond":558000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":26000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":26000,"duration":{"second":182,"nanosecond":558000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":70000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":70000,"duration":{"second":182,"nanosecond":558000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":76,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":76000}}],"watch_group":76000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":76,"duration":{"second":182,"nanosecond":64000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":42,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":42000}}],"watch_group":42000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":42,"duration":{"second":182,"nanosecond":62000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":8,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":8000}}],"watch_group":8000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":8,"duration":{"second":180,"nanosecond":551000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":37000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":37000,"duration":{"second":182,"nanosecond":62000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":49000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":49000,"duration":{"second":182,"nanosecond":62000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":71000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":71000,"duration":{"second":182,"nanosecond":62000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":48000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":48000,"duration":{"second":182,"nanosecond":62000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":75,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":75000}}],"watch_group":75000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":75,"duration":{"second":182,"nanosecond":62000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":45,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":45000}}],"watch_group":45000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":45,"duration":{"second":182,"nanosecond":59000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":7,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":7000}}],"watch_group":7000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":7,"duration":{"second":182,"nanosecond":59000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":39000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":39000,"duration":{"second":182,"nanosecond":59000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":73000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":73000,"duration":{"second":182,"nanosecond":58000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":69000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":69000,"duration":{"second":182,"nanosecond":58000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":17000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":17000,"duration":{"second":182,"nanosecond":58000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":28000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":28000,"duration":{"second":182,"nanosecond":58000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":74,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":74000}}],"watch_group":74000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":74,"duration":{"second":182,"nanosecond":58000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":44,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":44000}}],"watch_group":44000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":44,"duration":{"second":182,"nanosecond":58000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":6,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":6000}}],"watch_group":6000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":6,"duration":{"second":180,"nanosecond":551000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":40000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":40000,"duration":{"second":182,"nanosecond":58000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":81,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":81000}}],"watch_group":81000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":81,"duration":{"second":182,"nanosecond":58000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":47,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":47000}}],"watch_group":47000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":47,"duration":{"second":182,"nanosecond":58000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":21,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":21000}}],"watch_group":21000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":21,"duration":{"second":180,"nanosecond":551000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":8000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":8000,"duration":{"second":182,"nanosecond":58000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":19000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":19000,"duration":{"second":182,"nanosecond":58000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":96000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":96000,"duration":{"second":182,"nanosecond":58000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":80,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":80000}}],"watch_group":80000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":80,"duration":{"second":182,"nanosecond":56000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":46,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":46000}}],"watch_group":46000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":46,"duration":{"second":182,"nanosecond":56000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":20,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":20000}}],"watch_group":20000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":20,"duration":{"second":182,"nanosecond":56000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":52000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":52000,"duration":{"second":182,"nanosecond":56000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":6000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":6000,"duration":{"second":182,"nanosecond":56000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":79,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":79000}}],"watch_group":79000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":79,"duration":{"second":182,"nanosecond":56000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":49,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":49000}}],"watch_group":49000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":49,"duration":{"second":181,"nanosecond":563000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":19,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":19000}}],"watch_group":19000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":19,"duration":{"second":181,"nanosecond":563000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":50000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":50000,"duration":{"second":181,"nanosecond":563000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":72000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":72000,"duration":{"second":181,"nanosecond":563000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":30000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":30000,"duration":{"second":181,"nanosecond":562000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":78,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":78000}}],"watch_group":78000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":78,"duration":{"second":181,"nanosecond":562000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":48,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":48000}}],"watch_group":48000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":48,"duration":{"second":181,"nanosecond":561000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":18,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":18000}}],"watch_group":18000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":18,"duration":{"second":181,"nanosecond":561000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":51000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":51000,"duration":{"second":181,"nanosecond":561000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":85,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":85000}}],"watch_group":85000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":85,"duration":{"second":181,"nanosecond":561000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":55000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":55000,"duration":{"second":181,"nanosecond":560000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":51,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":51000}}],"watch_group":51000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":51,"duration":{"second":181,"nanosecond":56000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":17,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":17000}}],"watch_group":17000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":17,"duration":{"second":181,"nanosecond":56000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":21000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":21000,"duration":{"second":181,"nanosecond":56000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":4000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":4000,"duration":{"second":181,"nanosecond":56000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":84,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":84000}}],"watch_group":84000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":84,"duration":{"second":181,"nanosecond":56000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":50,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":50000}}],"watch_group":50000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":50,"duration":{"second":181,"nanosecond":56000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":16,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":16000}}],"watch_group":16000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":16,"duration":{"second":181,"nanosecond":56000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":10000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":10000,"duration":{"second":181,"nanosecond":56000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":54000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":54000,"duration":{"second":181,"nanosecond":56000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":83,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":83000}}],"watch_group":83000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":83,"duration":{"second":181,"nanosecond":56000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":32000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":32000,"duration":{"second":181,"nanosecond":56000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":53,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":53000}}],"watch_group":53000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":53,"duration":{"second":180,"nanosecond":551000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":15,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":15000}}],"watch_group":15000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":15,"duration":{"second":181,"nanosecond":56000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":2000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":2000,"duration":{"second":181,"nanosecond":56000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":82,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":82000}}],"watch_group":82000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":82,"duration":{"second":181,"nanosecond":56000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":52,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":52000}}],"watch_group":52000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":52,"duration":{"second":181,"nanosecond":56000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":14,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":14000}}],"watch_group":14000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":14,"duration":{"second":181,"nanosecond":56000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":53000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":53000,"duration":{"second":181,"nanosecond":56000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":12000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":12000,"duration":{"second":181,"nanosecond":56000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":23000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":23000,"duration":{"second":181,"nanosecond":56000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":94000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":94000,"duration":{"second":181,"nanosecond":56000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}}],"flow-node-inventory:snapshot-gathering-status-end":{"succeeded":true,"end":"2026-04-08T01:01:29.821Z"}},{"id":"openflow:2","flow-node-inventory:port-number":54944,"flow-node-inventory:table":[{"id":62,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":28,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":2,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":224,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":181,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":147,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":106,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":61,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":27,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":1,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":223,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":182,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":148,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":105,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":60,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":30,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":0,"flow":[{"id":"69","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.69/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":69}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":881000000}},"flags":""},{"id":"60","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.60/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":60}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":881000000}},"flags":""},{"id":"68","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.68/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":68}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":881000000}},"flags":""},{"id":"67","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.67/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":67}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":881000000}},"flags":""},{"id":"66","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.66/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":66}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":881000000}},"flags":""},{"id":"65","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.65/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":65}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":881000000}},"flags":""},{"id":"64","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.64/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":64}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":881000000}},"flags":""},{"id":"63","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.63/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":63}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":881000000}},"flags":""},{"id":"62","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.62/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":62}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":881000000}},"flags":""},{"id":"61","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.61/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":61}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":881000000}},"flags":""},{"id":"100","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.100/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":100}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":881000000}},"flags":""},{"id":"71","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.71/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":71}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":881000000}},"flags":""},{"id":"70","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.70/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":70}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":881000000}},"flags":""},{"id":"79","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.79/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":79}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":881000000}},"flags":""},{"id":"78","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.78/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":78}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":881000000}},"flags":""},{"id":"77","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.77/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":77}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":881000000}},"flags":""},{"id":"76","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.76/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":76}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":881000000}},"flags":""},{"id":"75","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.75/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":75}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":881000000}},"flags":""},{"id":"74","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.74/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":74}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":881000000}},"flags":""},{"id":"73","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.73/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":73}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":881000000}},"flags":""},{"id":"72","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.72/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":72}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":881000000}},"flags":""},{"id":"82","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.82/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":82}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":881000000}},"flags":""},{"id":"81","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.81/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":81}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":881000000}},"flags":""},{"id":"80","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.80/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":80}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":881000000}},"flags":""},{"id":"89","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.89/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":89}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":881000000}},"flags":""},{"id":"88","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.88/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":88}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":881000000}},"flags":""},{"id":"87","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.87/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":87}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":881000000}},"flags":""},{"id":"86","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.86/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":86}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":881000000}},"flags":""},{"id":"85","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.85/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":85}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":881000000}},"flags":""},{"id":"84","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.84/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":84}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":881000000}},"flags":""},{"id":"83","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.83/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":83}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":881000000}},"flags":""},{"id":"19","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.19/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":19}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":881000000}},"flags":""},{"id":"18","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.18/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":18}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":881000000}},"flags":""},{"id":"17","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.17/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":17}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":881000000}},"flags":""},{"id":"16","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.16/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":16}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":881000000}},"flags":""},{"id":"15","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.15/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":15}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":881000000}},"flags":""},{"id":"14","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.14/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":14}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":881000000}},"flags":""},{"id":"2","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.2/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":2}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":881000000}},"flags":""},{"id":"93","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.93/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":93}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":880000000}},"flags":""},{"id":"92","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.92/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":92}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":880000000}},"flags":""},{"id":"91","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.91/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":91}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":880000000}},"flags":""},{"id":"90","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.90/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":90}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":880000000}},"flags":""},{"id":"13","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.13/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":13}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":880000000}},"flags":""},{"id":"12","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.12/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":12}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":880000000}},"flags":""},{"id":"11","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.11/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":11}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":880000000}},"flags":""},{"id":"99","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.99/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":99}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":880000000}},"flags":""},{"id":"10","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.10/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":10}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":880000000}},"flags":""},{"id":"98","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.98/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":98}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":880000000}},"flags":""},{"id":"97","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.97/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":97}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":880000000}},"flags":""},{"id":"96","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.96/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":96}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":880000000}},"flags":""},{"id":"95","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.95/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":95}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":880000000}},"flags":""},{"id":"94","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.94/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":94}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":880000000}},"flags":""},{"id":"29","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.29/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":29}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":880000000}},"flags":""},{"id":"28","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.28/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":28}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":880000000}},"flags":""},{"id":"27","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.27/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":27}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":880000000}},"flags":""},{"id":"26","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.26/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":26}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":880000000}},"flags":""},{"id":"25","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.25/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":25}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":880000000}},"flags":""},{"id":"9","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.9/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":9}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":880000000}},"flags":""},{"id":"8","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.8/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":8}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":880000000}},"flags":""},{"id":"7","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.7/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":7}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":880000000}},"flags":""},{"id":"6","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.6/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":6}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":880000000}},"flags":""},{"id":"5","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.5/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":5}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":880000000}},"flags":""},{"id":"4","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.4/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":4}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":880000000}},"flags":""},{"id":"3","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.3/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":3}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":880000000}},"flags":""},{"id":"24","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.24/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":24}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":880000000}},"flags":""},{"id":"23","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.23/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":23}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":880000000}},"flags":""},{"id":"22","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.22/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":22}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":880000000}},"flags":""},{"id":"21","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.21/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":21}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":880000000}},"flags":""},{"id":"20","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.20/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":20}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":880000000}},"flags":""},{"id":"39","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.39/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":39}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":880000000}},"flags":""},{"id":"38","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.38/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":38}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":880000000}},"flags":""},{"id":"37","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.37/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":37}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":880000000}},"flags":""},{"id":"36","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.36/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":36}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":880000000}},"flags":""},{"id":"35","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.35/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":35}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":880000000}},"flags":""},{"id":"34","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.34/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":34}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":880000000}},"flags":""},{"id":"33","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.33/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":33}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":880000000}},"flags":""},{"id":"32","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.32/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":32}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":880000000}},"flags":""},{"id":"31","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.31/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":31}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":880000000}},"flags":""},{"id":"30","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.30/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":30}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":880000000}},"flags":""},{"id":"49","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.49/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":49}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":880000000}},"flags":""},{"id":"48","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.48/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":48}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":880000000}},"flags":""},{"id":"47","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.47/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":47}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":880000000}},"flags":""},{"id":"#UF$TABLE*0-2","table_id":0,"priority":0,"cookie_mask":"0","idle-timeout":0,"cookie":"10","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"output-action":{"max-length":65535,"output-node-connector":"CONTROLLER"}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"86","byte-count":"7100","duration":{"second":179,"nanosecond":760000000}},"flags":"SEND_FLOW_REM"},{"id":"46","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.46/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":46}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":880000000}},"flags":""},{"id":"45","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.45/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":45}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":880000000}},"flags":""},{"id":"44","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.44/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":44}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":880000000}},"flags":""},{"id":"43","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.43/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":43}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":880000000}},"flags":""},{"id":"42","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.42/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":42}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":880000000}},"flags":""},{"id":"41","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.41/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":41}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":880000000}},"flags":""},{"id":"40","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.40/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":40}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":880000000}},"flags":""},{"id":"59","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.59/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":59}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":880000000}},"flags":""},{"id":"58","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.58/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":58}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":880000000}},"flags":""},{"id":"57","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.57/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":57}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":880000000}},"flags":""},{"id":"56","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.56/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":56}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":880000000}},"flags":""},{"id":"55","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.55/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":55}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":880000000}},"flags":""},{"id":"54","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.54/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":54}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":881000000}},"flags":""},{"id":"53","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.53/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":53}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":881000000}},"flags":""},{"id":"52","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.52/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":52}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":880000000}},"flags":""},{"id":"51","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.51/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":51}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":880000000}},"flags":""},{"id":"50","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.50/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":50}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":880000000}},"flags":""}],"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"108","active-flows":100,"packets-matched":"96"}},{"id":226,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":179,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":149,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":104,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":59,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":29,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":225,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":180,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":150,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":103,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":66,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":32,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":220,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":185,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":151,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":102,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":65,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":31,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":253,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":219,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":186,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":152,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":101,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":64,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":34,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":252,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":222,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":183,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":153,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":100,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":63,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":33,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":251,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":221,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":184,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":154,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":99,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":54,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":20,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":250,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":216,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":189,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":155,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":129,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":114,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":53,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":19,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":249,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":215,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":190,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":156,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":130,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":113,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":52,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":22,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":248,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":218,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":187,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":157,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":112,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":51,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":21,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":247,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":217,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":188,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":158,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":128,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":111,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":58,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":24,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":246,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":212,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":193,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":159,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":110,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":57,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":23,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":245,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":211,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":194,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":160,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":109,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":56,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":26,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":244,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":214,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":191,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":161,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":108,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":55,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":25,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":243,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":213,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":192,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":162,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":107,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":77,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":43,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":17,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":239,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":198,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":164,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":138,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":119,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":89,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":78,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":44,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":18,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":240,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":197,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":163,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":137,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":120,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":90,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":75,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":45,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":15,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":241,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":196,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":166,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":136,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":121,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":87,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":76,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":46,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":16,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":242,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":195,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":165,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":135,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":122,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":88,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":81,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":47,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":13,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":235,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":202,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":168,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":134,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":115,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":85,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":82,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":48,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":14,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":236,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":201,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":167,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":133,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":116,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":86,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":79,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":49,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":11,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":237,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":200,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":170,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":132,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":117,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":83,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":80,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":50,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":12,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":238,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":199,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":169,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":131,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":118,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":84,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":69,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":35,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":9,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":231,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":206,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":172,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":146,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":127,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":97,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":70,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":36,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":10,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":232,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":205,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":171,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":145,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":98,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":67,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":37,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":7,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":233,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":204,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":174,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":144,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":95,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":68,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":38,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":8,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":234,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":203,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":173,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":143,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":96,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":73,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":39,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":5,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":227,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":210,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":176,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":142,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":123,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":93,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":74,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":40,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":6,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":228,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":209,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":175,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":141,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":124,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":94,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":71,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":41,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":3,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":229,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":208,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":178,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":140,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":125,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":91,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":72,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":42,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":4,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":230,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":207,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":177,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":139,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":126,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":92,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}}],"opendaylight-group-statistics:group-features":{"max-groups":[4294967040],"group-types-supported":["opendaylight-group-types:group-all","opendaylight-group-types:group-ff","opendaylight-group-types:group-select","opendaylight-group-types:group-indirect"],"group-capabilities-supported":["opendaylight-group-types:chaining","opendaylight-group-types:select-weight","opendaylight-group-types:select-liveness"],"actions":[67076097]},"flow-node-inventory:manufacturer":"Nicira, Inc.","flow-node-inventory:description":"s2","flow-node-inventory:hardware":"Open vSwitch","flow-node-inventory:switch-features":{"max_tables":254,"capabilities":["flow-node-inventory:flow-feature-capability-table-stats","flow-node-inventory:flow-feature-capability-group-stats","flow-node-inventory:flow-feature-capability-queue-stats","flow-node-inventory:flow-feature-capability-flow-stats","flow-node-inventory:flow-feature-capability-port-stats"],"max_buffers":0},"flow-node-inventory:snapshot-gathering-status-start":{"begin":"2026-04-08T01:01:29.771Z"},"flow-node-inventory:software":"2.17.11","node-connector":[{"id":"openflow:2:3","flow-node-inventory:port-number":3,"flow-node-inventory:hardware-address":"da:7c:fc:7d:24:d4","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s2-eth3","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"54","received":"50"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":185,"nanosecond":84000000},"bytes":{"transmitted":"4539","received":"4187"},"receive-crc-error":"0"}},{"id":"openflow:2:LOCAL","flow-node-inventory:port-number":4294967294,"flow-node-inventory:hardware-address":"ee:be:cf:9b:06:44","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s2","flow-node-inventory:current-feature":"","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":0,"flow-node-inventory:state":{"live":false,"blocked":false,"link-down":true},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"PORT-DOWN","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"0","received":"0"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":185,"nanosecond":79000000},"bytes":{"transmitted":"0","received":"0"},"receive-crc-error":"0"}},{"id":"openflow:2:2","flow-node-inventory:port-number":2,"flow-node-inventory:hardware-address":"76:f5:91:ad:d8:c6","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s2-eth2","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"54","received":"50"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":185,"nanosecond":84000000},"bytes":{"transmitted":"4539","received":"4187"},"receive-crc-error":"0"}},{"id":"openflow:2:1","flow-node-inventory:port-number":1,"flow-node-inventory:hardware-address":"96:61:91:36:76:0b","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s2-eth1","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"56","received":"11"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":185,"nanosecond":84000000},"bytes":{"transmitted":"4715","received":"866"},"receive-crc-error":"0"}}],"flow-node-inventory:ip-address":"10.30.170.192","flow-node-inventory:serial-number":"None","flow-node-inventory:group":[{"group-id":56,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":56000}}],"watch_group":56000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":56,"duration":{"second":181,"nanosecond":40000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":22,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":22000}}],"watch_group":22000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":22,"duration":{"second":181,"nanosecond":40000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":99,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":99000}}],"watch_group":99000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":99,"duration":{"second":181,"nanosecond":40000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":34000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":34000,"duration":{"second":183,"nanosecond":733000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":89000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":89000,"duration":{"second":183,"nanosecond":733000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":60000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":60000,"duration":{"second":183,"nanosecond":733000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":91000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":91000,"duration":{"second":183,"nanosecond":733000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":57,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":57000}}],"watch_group":57000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":57,"duration":{"second":181,"nanosecond":40000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":23,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":23000}}],"watch_group":23000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":23,"duration":{"second":180,"nanosecond":543000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":14000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":14000,"duration":{"second":183,"nanosecond":733000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":98,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":98000}}],"watch_group":98000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":98,"duration":{"second":180,"nanosecond":543000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":56000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":56000,"duration":{"second":183,"nanosecond":733000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":85000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":85000,"duration":{"second":183,"nanosecond":733000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":54,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":54000}}],"watch_group":54000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":54,"duration":{"second":180,"nanosecond":543000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":24,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":24000}}],"watch_group":24000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":24,"duration":{"second":180,"nanosecond":543000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":36000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":36000,"duration":{"second":183,"nanosecond":733000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":87000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":87000,"duration":{"second":183,"nanosecond":733000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":59000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":59000,"duration":{"second":183,"nanosecond":733000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":25000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":25000,"duration":{"second":183,"nanosecond":733000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":43000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":43000,"duration":{"second":183,"nanosecond":733000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":55,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":55000}}],"watch_group":55000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":55,"duration":{"second":180,"nanosecond":543000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":25,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":25000}}],"watch_group":25000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":25,"duration":{"second":183,"nanosecond":549000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":100,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":100000}}],"watch_group":100000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":100,"duration":{"second":180,"nanosecond":543000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":58000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":58000,"duration":{"second":183,"nanosecond":549000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":86000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":86000,"duration":{"second":183,"nanosecond":549000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":60,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":60000}}],"watch_group":60000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":60,"duration":{"second":183,"nanosecond":548000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":26,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":26000}}],"watch_group":26000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":26,"duration":{"second":180,"nanosecond":543000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":41000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":41000,"duration":{"second":183,"nanosecond":548000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":95,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":95000}}],"watch_group":95000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":95,"duration":{"second":180,"nanosecond":543000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":82000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":82000,"duration":{"second":183,"nanosecond":548000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":61,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":61000}}],"watch_group":61000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":61,"duration":{"second":180,"nanosecond":543000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":27,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":27000}}],"watch_group":27000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":27,"duration":{"second":180,"nanosecond":543000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":94,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":94000}}],"watch_group":94000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":94,"duration":{"second":180,"nanosecond":543000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":98000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":98000,"duration":{"second":183,"nanosecond":548000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":27000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":27000,"duration":{"second":183,"nanosecond":548000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":57000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":57000,"duration":{"second":183,"nanosecond":548000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":16000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":16000,"duration":{"second":183,"nanosecond":548000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":83000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":83000,"duration":{"second":183,"nanosecond":548000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":58,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":58000}}],"watch_group":58000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":58,"duration":{"second":183,"nanosecond":48000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":28,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":28000}}],"watch_group":28000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":28,"duration":{"second":180,"nanosecond":543000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":97,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":97000}}],"watch_group":97000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":97,"duration":{"second":180,"nanosecond":543000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":100000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":100000,"duration":{"second":183,"nanosecond":48000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":59,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":59000}}],"watch_group":59000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":59,"duration":{"second":183,"nanosecond":48000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":38000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":38000,"duration":{"second":183,"nanosecond":48000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":29,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":29000}}],"watch_group":29000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":29,"duration":{"second":180,"nanosecond":543000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":96,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":96000}}],"watch_group":96000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":96,"duration":{"second":180,"nanosecond":543000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":84000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":84000,"duration":{"second":183,"nanosecond":48000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":64,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":64000}}],"watch_group":64000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":64,"duration":{"second":180,"nanosecond":543000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":30,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":30000}}],"watch_group":30000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":30,"duration":{"second":180,"nanosecond":543000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":4,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":4000}}],"watch_group":4000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":4,"duration":{"second":180,"nanosecond":539000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":91,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":91000}}],"watch_group":91000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":91,"duration":{"second":183,"nanosecond":48000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":7000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":7000,"duration":{"second":183,"nanosecond":48000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":29000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":29000,"duration":{"second":183,"nanosecond":47000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":65,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":65000}}],"watch_group":65000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":65,"duration":{"second":180,"nanosecond":539000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":31,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":31000}}],"watch_group":31000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":31,"duration":{"second":180,"nanosecond":539000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":5,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":5000}}],"watch_group":5000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":5,"duration":{"second":180,"nanosecond":539000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":90,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":90000}}],"watch_group":90000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":90,"duration":{"second":180,"nanosecond":539000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":18000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":18000,"duration":{"second":183,"nanosecond":47000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":62,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":62000}}],"watch_group":62000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":62,"duration":{"second":180,"nanosecond":539000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":65000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":65000,"duration":{"second":183,"nanosecond":47000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":32,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":32000}}],"watch_group":32000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":32,"duration":{"second":180,"nanosecond":539000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":2,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":2000}}],"watch_group":2000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":2,"duration":{"second":180,"nanosecond":539000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":93,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":93000}}],"watch_group":93000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":93,"duration":{"second":180,"nanosecond":539000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":64000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":64000,"duration":{"second":183,"nanosecond":46000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":63,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":63000}}],"watch_group":63000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":63,"duration":{"second":180,"nanosecond":539000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":33,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":33000}}],"watch_group":33000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":33,"duration":{"second":180,"nanosecond":539000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":3,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":3000}}],"watch_group":3000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":3,"duration":{"second":180,"nanosecond":539000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":80000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":80000,"duration":{"second":183,"nanosecond":46000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":9000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":9000,"duration":{"second":183,"nanosecond":46000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":92,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":92000}}],"watch_group":92000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":92,"duration":{"second":180,"nanosecond":539000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":5000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":5000,"duration":{"second":183,"nanosecond":42000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":20000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":20000,"duration":{"second":183,"nanosecond":42000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":81000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":81000,"duration":{"second":183,"nanosecond":42000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":97000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":97000,"duration":{"second":183,"nanosecond":42000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":31000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":31000,"duration":{"second":183,"nanosecond":42000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":68,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":68000}}],"watch_group":68000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":68,"duration":{"second":180,"nanosecond":539000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":11000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":11000,"duration":{"second":183,"nanosecond":42000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":34,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":34000}}],"watch_group":34000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":34,"duration":{"second":183,"nanosecond":42000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":78000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":78000,"duration":{"second":183,"nanosecond":42000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":87,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":87000}}],"watch_group":87000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":87,"duration":{"second":183,"nanosecond":42000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":93000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":93000,"duration":{"second":183,"nanosecond":42000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":63000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":63000,"duration":{"second":183,"nanosecond":42000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":69,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":69000}}],"watch_group":69000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":69,"duration":{"second":180,"nanosecond":539000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":35,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":35000}}],"watch_group":35000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":35,"duration":{"second":180,"nanosecond":539000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":33000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":33000,"duration":{"second":183,"nanosecond":42000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":79000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":79000,"duration":{"second":183,"nanosecond":42000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":86,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":86000}}],"watch_group":86000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":86,"duration":{"second":183,"nanosecond":42000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":62000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":62000,"duration":{"second":183,"nanosecond":42000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":66,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":66000}}],"watch_group":66000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":66,"duration":{"second":180,"nanosecond":539000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":77000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":77000,"duration":{"second":183,"nanosecond":42000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":36,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":36000}}],"watch_group":36000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":36,"duration":{"second":183,"nanosecond":42000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":89,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":89000}}],"watch_group":89000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":89,"duration":{"second":183,"nanosecond":42000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":22000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":22000,"duration":{"second":183,"nanosecond":40000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":95000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":95000,"duration":{"second":183,"nanosecond":40000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":67,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":67000}}],"watch_group":67000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":67,"duration":{"second":180,"nanosecond":539000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":37,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":37000}}],"watch_group":37000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":37,"duration":{"second":180,"nanosecond":539000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":88,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":88000}}],"watch_group":88000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":88,"duration":{"second":180,"nanosecond":537000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":61000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":61000,"duration":{"second":183,"nanosecond":38000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":3000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":3000,"duration":{"second":183,"nanosecond":38000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":73,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":73000}}],"watch_group":73000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":73,"duration":{"second":180,"nanosecond":537000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":39,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":39000}}],"watch_group":39000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":39,"duration":{"second":180,"nanosecond":537000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":13,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":13000}}],"watch_group":13000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":13,"duration":{"second":180,"nanosecond":537000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":74000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":74000,"duration":{"second":183,"nanosecond":38000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":15000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":15000,"duration":{"second":183,"nanosecond":38000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":44000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":44000,"duration":{"second":183,"nanosecond":38000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":45000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":45000,"duration":{"second":183,"nanosecond":38000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":68000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":68000,"duration":{"second":183,"nanosecond":38000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":72,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":72000}}],"watch_group":72000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":72,"duration":{"second":180,"nanosecond":537000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":38,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":38000}}],"watch_group":38000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":38,"duration":{"second":182,"nanosecond":542000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":75000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":75000,"duration":{"second":182,"nanosecond":542000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":12,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":12000}}],"watch_group":12000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":12,"duration":{"second":180,"nanosecond":537000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":35000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":35000,"duration":{"second":182,"nanosecond":542000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":24000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":24000,"duration":{"second":182,"nanosecond":542000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":90000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":90000,"duration":{"second":182,"nanosecond":542000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":71,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":71000}}],"watch_group":71000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":71,"duration":{"second":180,"nanosecond":537000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":41,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":41000}}],"watch_group":41000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":41,"duration":{"second":182,"nanosecond":542000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":42000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":42000,"duration":{"second":182,"nanosecond":542000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":11,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":11000}}],"watch_group":11000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":11,"duration":{"second":182,"nanosecond":542000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":92000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":92000,"duration":{"second":182,"nanosecond":542000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":46000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":46000,"duration":{"second":182,"nanosecond":542000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":67000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":67000,"duration":{"second":182,"nanosecond":542000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":70,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":70000}}],"watch_group":70000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":70,"duration":{"second":180,"nanosecond":537000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":76000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":76000,"duration":{"second":182,"nanosecond":542000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":40,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":40000}}],"watch_group":40000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":40,"duration":{"second":180,"nanosecond":537000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":13000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":13000,"duration":{"second":182,"nanosecond":542000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":10,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":10000}}],"watch_group":10000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":10,"duration":{"second":180,"nanosecond":537000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":88000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":88000,"duration":{"second":182,"nanosecond":542000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":47000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":47000,"duration":{"second":182,"nanosecond":542000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":66000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":66000,"duration":{"second":182,"nanosecond":542000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":77,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":77000}}],"watch_group":77000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":77,"duration":{"second":182,"nanosecond":542000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":43,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":43000}}],"watch_group":43000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":43,"duration":{"second":182,"nanosecond":542000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":9,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":9000}}],"watch_group":9000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":9,"duration":{"second":182,"nanosecond":542000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":99000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":99000,"duration":{"second":182,"nanosecond":542000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":26000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":26000,"duration":{"second":182,"nanosecond":542000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":70000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":70000,"duration":{"second":182,"nanosecond":542000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":76,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":76000}}],"watch_group":76000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":76,"duration":{"second":182,"nanosecond":38000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":42,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":42000}}],"watch_group":42000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":42,"duration":{"second":182,"nanosecond":38000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":8,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":8000}}],"watch_group":8000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":8,"duration":{"second":180,"nanosecond":537000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":37000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":37000,"duration":{"second":182,"nanosecond":38000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":49000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":49000,"duration":{"second":182,"nanosecond":38000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":71000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":71000,"duration":{"second":182,"nanosecond":38000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":48000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":48000,"duration":{"second":182,"nanosecond":38000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":75,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":75000}}],"watch_group":75000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":75,"duration":{"second":182,"nanosecond":38000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":45,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":45000}}],"watch_group":45000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":45,"duration":{"second":182,"nanosecond":38000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":7,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":7000}}],"watch_group":7000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":7,"duration":{"second":182,"nanosecond":38000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":39000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":39000,"duration":{"second":182,"nanosecond":38000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":73000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":73000,"duration":{"second":182,"nanosecond":38000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":69000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":69000,"duration":{"second":182,"nanosecond":38000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":17000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":17000,"duration":{"second":182,"nanosecond":38000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":28000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":28000,"duration":{"second":182,"nanosecond":38000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":74,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":74000}}],"watch_group":74000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":74,"duration":{"second":182,"nanosecond":38000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":44,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":44000}}],"watch_group":44000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":44,"duration":{"second":182,"nanosecond":38000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":6,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":6000}}],"watch_group":6000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":6,"duration":{"second":180,"nanosecond":537000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":40000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":40000,"duration":{"second":182,"nanosecond":38000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":81,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":81000}}],"watch_group":81000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":81,"duration":{"second":182,"nanosecond":38000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":47,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":47000}}],"watch_group":47000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":47,"duration":{"second":182,"nanosecond":38000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":21,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":21000}}],"watch_group":21000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":21,"duration":{"second":180,"nanosecond":537000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":8000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":8000,"duration":{"second":182,"nanosecond":38000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":19000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":19000,"duration":{"second":182,"nanosecond":38000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":96000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":96000,"duration":{"second":182,"nanosecond":38000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":80,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":80000}}],"watch_group":80000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":80,"duration":{"second":182,"nanosecond":38000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":46,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":46000}}],"watch_group":46000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":46,"duration":{"second":182,"nanosecond":38000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":20,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":20000}}],"watch_group":20000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":20,"duration":{"second":182,"nanosecond":38000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":52000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":52000,"duration":{"second":182,"nanosecond":38000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":6000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":6000,"duration":{"second":182,"nanosecond":38000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":79,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":79000}}],"watch_group":79000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":79,"duration":{"second":182,"nanosecond":38000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":49,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":49000}}],"watch_group":49000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":49,"duration":{"second":181,"nanosecond":547000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":19,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":19000}}],"watch_group":19000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":19,"duration":{"second":181,"nanosecond":547000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":50000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":50000,"duration":{"second":181,"nanosecond":546000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":72000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":72000,"duration":{"second":181,"nanosecond":546000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":30000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":30000,"duration":{"second":181,"nanosecond":546000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":78,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":78000}}],"watch_group":78000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":78,"duration":{"second":181,"nanosecond":545000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":48,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":48000}}],"watch_group":48000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":48,"duration":{"second":181,"nanosecond":544000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":18,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":18000}}],"watch_group":18000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":18,"duration":{"second":181,"nanosecond":544000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":51000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":51000,"duration":{"second":181,"nanosecond":543000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":85,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":85000}}],"watch_group":85000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":85,"duration":{"second":181,"nanosecond":543000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":55000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":55000,"duration":{"second":181,"nanosecond":543000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":51,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":51000}}],"watch_group":51000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":51,"duration":{"second":181,"nanosecond":46000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":17,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":17000}}],"watch_group":17000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":17,"duration":{"second":181,"nanosecond":46000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":21000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":21000,"duration":{"second":181,"nanosecond":46000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":4000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":4000,"duration":{"second":181,"nanosecond":46000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":84,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":84000}}],"watch_group":84000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":84,"duration":{"second":181,"nanosecond":46000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":50,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":50000}}],"watch_group":50000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":50,"duration":{"second":181,"nanosecond":45000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":16,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":16000}}],"watch_group":16000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":16,"duration":{"second":181,"nanosecond":45000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":10000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":10000,"duration":{"second":181,"nanosecond":45000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":54000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":54000,"duration":{"second":181,"nanosecond":40000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":83,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":83000}}],"watch_group":83000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":83,"duration":{"second":181,"nanosecond":40000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":32000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":32000,"duration":{"second":181,"nanosecond":40000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":53,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":53000}}],"watch_group":53000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":53,"duration":{"second":180,"nanosecond":537000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":15,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":15000}}],"watch_group":15000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":15,"duration":{"second":181,"nanosecond":40000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":2000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":2000,"duration":{"second":181,"nanosecond":40000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":82,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":82000}}],"watch_group":82000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":82,"duration":{"second":181,"nanosecond":40000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":52,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":52000}}],"watch_group":52000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":52,"duration":{"second":181,"nanosecond":40000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":14,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":14000}}],"watch_group":14000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":14,"duration":{"second":181,"nanosecond":40000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":53000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":53000,"duration":{"second":181,"nanosecond":40000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":12000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":12000,"duration":{"second":181,"nanosecond":40000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":23000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":23000,"duration":{"second":181,"nanosecond":40000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":94000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":94000,"duration":{"second":181,"nanosecond":40000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}}],"flow-node-inventory:snapshot-gathering-status-end":{"succeeded":true,"end":"2026-04-08T01:01:29.807Z"}}]}}</msg>
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:31.607682" elapsed="0.012653"/>
</kw>
<kw name="Get Count" owner="BuiltIn">
<msg time="2026-04-08T01:01:31.625510" level="INFO">Item found from container 300 times.</msg>
<msg time="2026-04-08T01:01:31.625641" level="INFO">${count} = 300</msg>
<var>${count}</var>
<arg>${resp.text}</arg>
<arg>"priority"</arg>
<doc>Returns and logs how many times ``item`` is found from ``container``.</doc>
<status status="PASS" start="2026-04-08T01:01:31.620702" elapsed="0.004975"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-04-08T01:01:31.626568" level="FAIL">300 != 303</msg>
<arg>${count}</arg>
<arg>${flows}</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="FAIL" start="2026-04-08T01:01:31.625971" elapsed="0.000706">300 != 303</status>
</kw>
<arg>${all_flows}</arg>
<doc>Check number of flows in the inventory.</doc>
<status status="FAIL" start="2026-04-08T01:01:31.557853" elapsed="0.069000">300 != 303</status>
</kw>
<kw name="Check Number Of Flows On Member" owner="ClusterOpenFlow">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:01:32.630552" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:01:32.629784" elapsed="0.000836"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T01:01:32.630740" elapsed="0.000081"/>
</return>
<msg time="2026-04-08T01:01:32.631102" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T01:01:32.628906" elapsed="0.002302"/>
</kw>
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T01:01:32.676441" level="INFO">GET Request : url=http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01s3bfo0y24i1es90l47mavglv0.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T01:01:32.678530" level="INFO">GET Response : url=http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Transfer-Encoding': 'chunked'} 
 body={"opendaylight-inventory:nodes":{"node":[{"id":"openflow:3","flow-node-inventory:port-number":54950,"flow-node-inventory:table":[{"id":62,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":28,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":2,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":224,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":181,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":147,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":106,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":61,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":27,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":1,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":223,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":182,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":148,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":105,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":60,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":30,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":0,"flow":[{"id":"69","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.69/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":69}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":884000000}},"flags":""},{"id":"60","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.60/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":60}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":884000000}},"flags":""},{"id":"68","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.68/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":68}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":884000000}},"flags":""},{"id":"67","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.67/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":67}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":884000000}},"flags":""},{"id":"66","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.66/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":66}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":884000000}},"flags":""},{"id":"65","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.65/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":65}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":884000000}},"flags":""},{"id":"64","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.64/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":64}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":884000000}},"flags":""},{"id":"63","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.63/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":63}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":884000000}},"flags":""},{"id":"62","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.62/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":62}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":884000000}},"flags":""},{"id":"61","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.61/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":61}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":884000000}},"flags":""},{"id":"100","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.100/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":100}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":884000000}},"flags":""},{"id":"71","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.71/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":71}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":884000000}},"flags":""},{"id":"70","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.70/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":70}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":884000000}},"flags":""},{"id":"79","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.79/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":79}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":884000000}},"flags":""},{"id":"78","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.78/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":78}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":884000000}},"flags":""},{"id":"77","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.77/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":77}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":884000000}},"flags":""},{"id":"76","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.76/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":76}}]}}]},"hard-timeout":0,"opendaylig... (set the log level to DEBUG or TRACE to see the full content) 
 </msg>
<msg time="2026-04-08T01:01:32.679018" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${RFC8040_OPERATIONAL_NODES_API}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T01:01:32.631574" elapsed="0.047504"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:32.686178" level="INFO">{"opendaylight-inventory:nodes":{"node":[{"id":"openflow:3","flow-node-inventory:port-number":54950,"flow-node-inventory:table":[{"id":62,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":28,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":2,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":224,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":181,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":147,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":106,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":61,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":27,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":1,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":223,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":182,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":148,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":105,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":60,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":30,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":0,"flow":[{"id":"69","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.69/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":69}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":884000000}},"flags":""},{"id":"60","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.60/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":60}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":884000000}},"flags":""},{"id":"68","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.68/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":68}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":884000000}},"flags":""},{"id":"67","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.67/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":67}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":884000000}},"flags":""},{"id":"66","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.66/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":66}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":884000000}},"flags":""},{"id":"65","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.65/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":65}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":884000000}},"flags":""},{"id":"64","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.64/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":64}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":884000000}},"flags":""},{"id":"63","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.63/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":63}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":884000000}},"flags":""},{"id":"62","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.62/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":62}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":884000000}},"flags":""},{"id":"61","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.61/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":61}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":884000000}},"flags":""},{"id":"100","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.100/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":100}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":884000000}},"flags":""},{"id":"71","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.71/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":71}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":884000000}},"flags":""},{"id":"70","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.70/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":70}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":884000000}},"flags":""},{"id":"79","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.79/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":79}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":884000000}},"flags":""},{"id":"78","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.78/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":78}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":884000000}},"flags":""},{"id":"77","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.77/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":77}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":884000000}},"flags":""},{"id":"76","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.76/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":76}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":884000000}},"flags":""},{"id":"75","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.75/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":75}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":884000000}},"flags":""},{"id":"74","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.74/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":74}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":884000000}},"flags":""},{"id":"73","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.73/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":73}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":884000000}},"flags":""},{"id":"72","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.72/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":72}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":884000000}},"flags":""},{"id":"82","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.82/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":82}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":884000000}},"flags":""},{"id":"81","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.81/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":81}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":884000000}},"flags":""},{"id":"80","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.80/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":80}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":884000000}},"flags":""},{"id":"89","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.89/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":89}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":884000000}},"flags":""},{"id":"88","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.88/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":88}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":884000000}},"flags":""},{"id":"87","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.87/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":87}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":884000000}},"flags":""},{"id":"86","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.86/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":86}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":884000000}},"flags":""},{"id":"85","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.85/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":85}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":884000000}},"flags":""},{"id":"84","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.84/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":84}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":884000000}},"flags":""},{"id":"83","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.83/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":83}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":884000000}},"flags":""},{"id":"19","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.19/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":19}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":884000000}},"flags":""},{"id":"18","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.18/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":18}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":884000000}},"flags":""},{"id":"17","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.17/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":17}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":884000000}},"flags":""},{"id":"16","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.16/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":16}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":884000000}},"flags":""},{"id":"15","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.15/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":15}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":884000000}},"flags":""},{"id":"14","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.14/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":14}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":884000000}},"flags":""},{"id":"2","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.2/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":2}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":884000000}},"flags":""},{"id":"93","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.93/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":93}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":884000000}},"flags":""},{"id":"92","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.92/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":92}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":884000000}},"flags":""},{"id":"91","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.91/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":91}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":884000000}},"flags":""},{"id":"90","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.90/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":90}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":884000000}},"flags":""},{"id":"13","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.13/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":13}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":884000000}},"flags":""},{"id":"12","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.12/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":12}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":884000000}},"flags":""},{"id":"11","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.11/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":11}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":884000000}},"flags":""},{"id":"99","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.99/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":99}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":884000000}},"flags":""},{"id":"10","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.10/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":10}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":884000000}},"flags":""},{"id":"98","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.98/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":98}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":884000000}},"flags":""},{"id":"97","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.97/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":97}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":884000000}},"flags":""},{"id":"96","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.96/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":96}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":883000000}},"flags":""},{"id":"95","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.95/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":95}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":883000000}},"flags":""},{"id":"94","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.94/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":94}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":883000000}},"flags":""},{"id":"29","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.29/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":29}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":883000000}},"flags":""},{"id":"28","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.28/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":28}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":883000000}},"flags":""},{"id":"27","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.27/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":27}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":883000000}},"flags":""},{"id":"26","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.26/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":26}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":883000000}},"flags":""},{"id":"25","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.25/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":25}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":883000000}},"flags":""},{"id":"9","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.9/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":9}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":883000000}},"flags":""},{"id":"8","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.8/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":8}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":883000000}},"flags":""},{"id":"7","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.7/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":7}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":883000000}},"flags":""},{"id":"6","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.6/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":6}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":883000000}},"flags":""},{"id":"5","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.5/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":5}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":883000000}},"flags":""},{"id":"4","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.4/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":4}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":883000000}},"flags":""},{"id":"3","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.3/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":3}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":883000000}},"flags":""},{"id":"24","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.24/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":24}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":883000000}},"flags":""},{"id":"23","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.23/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":23}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":883000000}},"flags":""},{"id":"22","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.22/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":22}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":883000000}},"flags":""},{"id":"21","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.21/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":21}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":883000000}},"flags":""},{"id":"20","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.20/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":20}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":883000000}},"flags":""},{"id":"39","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.39/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":39}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":883000000}},"flags":""},{"id":"38","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.38/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":38}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":883000000}},"flags":""},{"id":"37","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.37/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":37}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":883000000}},"flags":""},{"id":"36","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.36/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":36}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":883000000}},"flags":""},{"id":"35","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.35/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":35}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":883000000}},"flags":""},{"id":"34","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.34/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":34}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":883000000}},"flags":""},{"id":"33","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.33/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":33}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":883000000}},"flags":""},{"id":"32","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.32/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":32}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":883000000}},"flags":""},{"id":"31","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.31/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":31}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":883000000}},"flags":""},{"id":"30","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.30/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":30}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":883000000}},"flags":""},{"id":"49","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.49/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":49}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":883000000}},"flags":""},{"id":"48","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.48/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":48}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":883000000}},"flags":""},{"id":"47","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.47/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":47}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":883000000}},"flags":""},{"id":"#UF$TABLE*0-3","table_id":0,"priority":0,"cookie_mask":"0","idle-timeout":0,"cookie":"10","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"output-action":{"max-length":65535,"output-node-connector":"CONTROLLER"}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"45","byte-count":"3690","duration":{"second":179,"nanosecond":755000000}},"flags":"SEND_FLOW_REM"},{"id":"46","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.46/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":46}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":883000000}},"flags":""},{"id":"45","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.45/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":45}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":883000000}},"flags":""},{"id":"44","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.44/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":44}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":883000000}},"flags":""},{"id":"43","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.43/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":43}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":883000000}},"flags":""},{"id":"42","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.42/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":42}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":883000000}},"flags":""},{"id":"41","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.41/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":41}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":883000000}},"flags":""},{"id":"40","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.40/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":40}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":883000000}},"flags":""},{"id":"59","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.59/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":59}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":883000000}},"flags":""},{"id":"58","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.58/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":58}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":883000000}},"flags":""},{"id":"57","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.57/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":57}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":883000000}},"flags":""},{"id":"56","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.56/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":56}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":883000000}},"flags":""},{"id":"55","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.55/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":55}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":883000000}},"flags":""},{"id":"54","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.54/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":54}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":883000000}},"flags":""},{"id":"53","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.53/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":53}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":883000000}},"flags":""},{"id":"52","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.52/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":52}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":883000000}},"flags":""},{"id":"51","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.51/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":51}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":880000000}},"flags":""},{"id":"50","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.50/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":50}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":880000000}},"flags":""}],"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"63","active-flows":100,"packets-matched":"55"}},{"id":226,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":179,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":149,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":104,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":59,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":29,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":225,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":180,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":150,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":103,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":66,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":32,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":220,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":185,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":151,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":102,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":65,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":31,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":253,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":219,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":186,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":152,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":101,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":64,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":34,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":252,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":222,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":183,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":153,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":100,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":63,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":33,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":251,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":221,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":184,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":154,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":99,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":54,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":20,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":250,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":216,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":189,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":155,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":129,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":114,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":53,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":19,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":249,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":215,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":190,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":156,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":130,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":113,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":52,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":22,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":248,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":218,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":187,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":157,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":112,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":51,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":21,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":247,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":217,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":188,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":158,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":128,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":111,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":58,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":24,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":246,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":212,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":193,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":159,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":110,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":57,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":23,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":245,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":211,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":194,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":160,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":109,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":56,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":26,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":244,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":214,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":191,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":161,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":108,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":55,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":25,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":243,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":213,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":192,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":162,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":107,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":77,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":43,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":17,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":239,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":198,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":164,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":138,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":119,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":89,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":78,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":44,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":18,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":240,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":197,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":163,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":137,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":120,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":90,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":75,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":45,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":15,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":241,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":196,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":166,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":136,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":121,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":87,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":76,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":46,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":16,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":242,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":195,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":165,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":135,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":122,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":88,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":81,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":47,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":13,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":235,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":202,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":168,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":134,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":115,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":85,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":82,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":48,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":14,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":236,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":201,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":167,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":133,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":116,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":86,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":79,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":49,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":11,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":237,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":200,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":170,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":132,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":117,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":83,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":80,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":50,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":12,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":238,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":199,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":169,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":131,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":118,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":84,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":69,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":35,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":9,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":231,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":206,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":172,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":146,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":127,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":97,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":70,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":36,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":10,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":232,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":205,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":171,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":145,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":98,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":67,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":37,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":7,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":233,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":204,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":174,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":144,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":95,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":68,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":38,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":8,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":234,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":203,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":173,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":143,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":96,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":73,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":39,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":5,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":227,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":210,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":176,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":142,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":123,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":93,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":74,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":40,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":6,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":228,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":209,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":175,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":141,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":124,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":94,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":71,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":41,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":3,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":229,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":208,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":178,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":140,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":125,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":91,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":72,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":42,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":4,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":230,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":207,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":177,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":139,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":126,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":92,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}}],"opendaylight-group-statistics:group-features":{"max-groups":[4294967040],"group-types-supported":["opendaylight-group-types:group-all","opendaylight-group-types:group-ff","opendaylight-group-types:group-select","opendaylight-group-types:group-indirect"],"group-capabilities-supported":["opendaylight-group-types:chaining","opendaylight-group-types:select-weight","opendaylight-group-types:select-liveness"],"actions":[67076097]},"flow-node-inventory:manufacturer":"Nicira, Inc.","flow-node-inventory:description":"s3","flow-node-inventory:hardware":"Open vSwitch","flow-node-inventory:switch-features":{"max_tables":254,"capabilities":["flow-node-inventory:flow-feature-capability-table-stats","flow-node-inventory:flow-feature-capability-group-stats","flow-node-inventory:flow-feature-capability-queue-stats","flow-node-inventory:flow-feature-capability-flow-stats","flow-node-inventory:flow-feature-capability-port-stats"],"max_buffers":0},"flow-node-inventory:snapshot-gathering-status-start":{"begin":"2026-04-08T01:01:29.773Z"},"flow-node-inventory:software":"2.17.11","node-connector":[{"id":"openflow:3:LOCAL","flow-node-inventory:port-number":4294967294,"flow-node-inventory:hardware-address":"c2:87:c1:60:0d:43","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s3","flow-node-inventory:current-feature":"","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":0,"flow-node-inventory:state":{"live":false,"blocked":false,"link-down":true},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"PORT-DOWN","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"0","received":"0"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":185,"nanosecond":83000000},"bytes":{"transmitted":"0","received":"0"},"receive-crc-error":"0"}},{"id":"openflow:3:2","flow-node-inventory:port-number":2,"flow-node-inventory:hardware-address":"9e:72:98:8c:46:72","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s3-eth2","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"50","received":"54"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":185,"nanosecond":87000000},"bytes":{"transmitted":"4187","received":"4539"},"receive-crc-error":"0"}},{"id":"openflow:3:1","flow-node-inventory:port-number":1,"flow-node-inventory:hardware-address":"ca:ac:9a:41:42:1c","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s3-eth1","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"56","received":"11"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":185,"nanosecond":87000000},"bytes":{"transmitted":"4715","received":"866"},"receive-crc-error":"0"}}],"flow-node-inventory:ip-address":"10.30.170.192","flow-node-inventory:serial-number":"None","flow-node-inventory:group":[{"group-id":56,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":56000}}],"watch_group":56000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":56,"duration":{"second":180,"nanosecond":906000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":22,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":22000}}],"watch_group":22000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":22,"duration":{"second":180,"nanosecond":906000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":99,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":99000}}],"watch_group":99000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":99,"duration":{"second":180,"nanosecond":906000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":34000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":34000,"duration":{"second":183,"nanosecond":736000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":89000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":89000,"duration":{"second":183,"nanosecond":735000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":60000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":60000,"duration":{"second":183,"nanosecond":732000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":91000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":91000,"duration":{"second":183,"nanosecond":732000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":57,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":57000}}],"watch_group":57000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":57,"duration":{"second":180,"nanosecond":906000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":23,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":23000}}],"watch_group":23000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":23,"duration":{"second":180,"nanosecond":409000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":14000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":14000,"duration":{"second":183,"nanosecond":732000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":98,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":98000}}],"watch_group":98000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":98,"duration":{"second":180,"nanosecond":408000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":56000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":56000,"duration":{"second":183,"nanosecond":732000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":85000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":85000,"duration":{"second":183,"nanosecond":732000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":54,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":54000}}],"watch_group":54000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":54,"duration":{"second":180,"nanosecond":408000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":24,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":24000}}],"watch_group":24000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":24,"duration":{"second":180,"nanosecond":408000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":36000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":36000,"duration":{"second":183,"nanosecond":732000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":87000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":87000,"duration":{"second":183,"nanosecond":732000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":59000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":59000,"duration":{"second":183,"nanosecond":732000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":25000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":25000,"duration":{"second":183,"nanosecond":732000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":43000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":43000,"duration":{"second":183,"nanosecond":731000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":55,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":55000}}],"watch_group":55000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":55,"duration":{"second":180,"nanosecond":408000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":25,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":25000}}],"watch_group":25000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":25,"duration":{"second":183,"nanosecond":414000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":100,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":100000}}],"watch_group":100000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":100,"duration":{"second":180,"nanosecond":408000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":58000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":58000,"duration":{"second":183,"nanosecond":414000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":86000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":86000,"duration":{"second":183,"nanosecond":414000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":60,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":60000}}],"watch_group":60000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":60,"duration":{"second":183,"nanosecond":414000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":26,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":26000}}],"watch_group":26000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":26,"duration":{"second":180,"nanosecond":408000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":41000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":41000,"duration":{"second":183,"nanosecond":413000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":95,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":95000}}],"watch_group":95000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":95,"duration":{"second":180,"nanosecond":408000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":82000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":82000,"duration":{"second":183,"nanosecond":413000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":61,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":61000}}],"watch_group":61000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":61,"duration":{"second":180,"nanosecond":408000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":27,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":27000}}],"watch_group":27000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":27,"duration":{"second":180,"nanosecond":403000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":94,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":94000}}],"watch_group":94000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":94,"duration":{"second":180,"nanosecond":403000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":98000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":98000,"duration":{"second":183,"nanosecond":412000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":27000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":27000,"duration":{"second":183,"nanosecond":412000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":57000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":57000,"duration":{"second":183,"nanosecond":411000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":16000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":16000,"duration":{"second":183,"nanosecond":410000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":83000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":83000,"duration":{"second":183,"nanosecond":410000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":58,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":58000}}],"watch_group":58000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":58,"duration":{"second":182,"nanosecond":911000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":28,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":28000}}],"watch_group":28000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":28,"duration":{"second":180,"nanosecond":403000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":97,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":97000}}],"watch_group":97000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":97,"duration":{"second":180,"nanosecond":403000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":100000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":100000,"duration":{"second":182,"nanosecond":911000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":59,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":59000}}],"watch_group":59000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":59,"duration":{"second":182,"nanosecond":911000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":38000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":38000,"duration":{"second":182,"nanosecond":911000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":29,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":29000}}],"watch_group":29000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":29,"duration":{"second":180,"nanosecond":403000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":96,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":96000}}],"watch_group":96000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":96,"duration":{"second":180,"nanosecond":403000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":84000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":84000,"duration":{"second":182,"nanosecond":911000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":64,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":64000}}],"watch_group":64000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":64,"duration":{"second":180,"nanosecond":403000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":30,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":30000}}],"watch_group":30000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":30,"duration":{"second":180,"nanosecond":403000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":4,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":4000}}],"watch_group":4000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":4,"duration":{"second":180,"nanosecond":403000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":91,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":91000}}],"watch_group":91000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":91,"duration":{"second":182,"nanosecond":911000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":7000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":7000,"duration":{"second":182,"nanosecond":911000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":29000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":29000,"duration":{"second":182,"nanosecond":911000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":65,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":65000}}],"watch_group":65000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":65,"duration":{"second":180,"nanosecond":403000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":31,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":31000}}],"watch_group":31000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":31,"duration":{"second":180,"nanosecond":403000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":5,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":5000}}],"watch_group":5000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":5,"duration":{"second":180,"nanosecond":403000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":90,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":90000}}],"watch_group":90000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":90,"duration":{"second":180,"nanosecond":403000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":18000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":18000,"duration":{"second":182,"nanosecond":910000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":62,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":62000}}],"watch_group":62000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":62,"duration":{"second":180,"nanosecond":403000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":65000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":65000,"duration":{"second":182,"nanosecond":910000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":32,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":32000}}],"watch_group":32000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":32,"duration":{"second":180,"nanosecond":403000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":2,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":2000}}],"watch_group":2000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":2,"duration":{"second":180,"nanosecond":403000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":93,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":93000}}],"watch_group":93000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":93,"duration":{"second":180,"nanosecond":403000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":64000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":64000,"duration":{"second":182,"nanosecond":909000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":63,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":63000}}],"watch_group":63000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":63,"duration":{"second":180,"nanosecond":403000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":33,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":33000}}],"watch_group":33000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":33,"duration":{"second":180,"nanosecond":403000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":3,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":3000}}],"watch_group":3000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":3,"duration":{"second":180,"nanosecond":403000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":80000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":80000,"duration":{"second":182,"nanosecond":908000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":9000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":9000,"duration":{"second":182,"nanosecond":908000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":92,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":92000}}],"watch_group":92000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":92,"duration":{"second":180,"nanosecond":403000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":5000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":5000,"duration":{"second":182,"nanosecond":908000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":20000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":20000,"duration":{"second":182,"nanosecond":908000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":81000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":81000,"duration":{"second":182,"nanosecond":908000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":97000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":97000,"duration":{"second":182,"nanosecond":908000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":31000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":31000,"duration":{"second":182,"nanosecond":908000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":68,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":68000}}],"watch_group":68000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":68,"duration":{"second":180,"nanosecond":403000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":11000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":11000,"duration":{"second":182,"nanosecond":908000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":34,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":34000}}],"watch_group":34000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":34,"duration":{"second":182,"nanosecond":908000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":78000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":78000,"duration":{"second":182,"nanosecond":907000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":87,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":87000}}],"watch_group":87000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":87,"duration":{"second":182,"nanosecond":907000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":93000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":93000,"duration":{"second":182,"nanosecond":907000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":63000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":63000,"duration":{"second":182,"nanosecond":907000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":69,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":69000}}],"watch_group":69000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":69,"duration":{"second":180,"nanosecond":403000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":35,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":35000}}],"watch_group":35000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":35,"duration":{"second":180,"nanosecond":403000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":33000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":33000,"duration":{"second":182,"nanosecond":903000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":79000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":79000,"duration":{"second":182,"nanosecond":903000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":86,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":86000}}],"watch_group":86000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":86,"duration":{"second":182,"nanosecond":903000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":62000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":62000,"duration":{"second":182,"nanosecond":903000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":66,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":66000}}],"watch_group":66000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":66,"duration":{"second":180,"nanosecond":403000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":77000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":77000,"duration":{"second":182,"nanosecond":903000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":36,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":36000}}],"watch_group":36000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":36,"duration":{"second":182,"nanosecond":903000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":89,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":89000}}],"watch_group":89000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":89,"duration":{"second":182,"nanosecond":903000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":22000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":22000,"duration":{"second":182,"nanosecond":903000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":95000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":95000,"duration":{"second":182,"nanosecond":903000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":67,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":67000}}],"watch_group":67000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":67,"duration":{"second":180,"nanosecond":403000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":37,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":37000}}],"watch_group":37000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":37,"duration":{"second":180,"nanosecond":403000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":88,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":88000}}],"watch_group":88000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":88,"duration":{"second":180,"nanosecond":403000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":61000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":61000,"duration":{"second":182,"nanosecond":902000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":3000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":3000,"duration":{"second":182,"nanosecond":902000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":73,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":73000}}],"watch_group":73000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":73,"duration":{"second":180,"nanosecond":403000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":39,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":39000}}],"watch_group":39000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":39,"duration":{"second":180,"nanosecond":398000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":13,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":13000}}],"watch_group":13000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":13,"duration":{"second":180,"nanosecond":398000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":74000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":74000,"duration":{"second":182,"nanosecond":902000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":15000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":15000,"duration":{"second":182,"nanosecond":902000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":44000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":44000,"duration":{"second":182,"nanosecond":902000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":45000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":45000,"duration":{"second":182,"nanosecond":902000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":68000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":68000,"duration":{"second":182,"nanosecond":902000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":72,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":72000}}],"watch_group":72000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":72,"duration":{"second":180,"nanosecond":398000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":38,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":38000}}],"watch_group":38000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":38,"duration":{"second":182,"nanosecond":412000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":75000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":75000,"duration":{"second":182,"nanosecond":412000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":12,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":12000}}],"watch_group":12000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":12,"duration":{"second":180,"nanosecond":398000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":35000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":35000,"duration":{"second":182,"nanosecond":412000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":24000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":24000,"duration":{"second":182,"nanosecond":412000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":90000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":90000,"duration":{"second":182,"nanosecond":412000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":71,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":71000}}],"watch_group":71000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":71,"duration":{"second":180,"nanosecond":398000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":41,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":41000}}],"watch_group":41000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":41,"duration":{"second":182,"nanosecond":411000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":42000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":42000,"duration":{"second":182,"nanosecond":411000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":11,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":11000}}],"watch_group":11000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":11,"duration":{"second":182,"nanosecond":411000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":92000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":92000,"duration":{"second":182,"nanosecond":410000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":46000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":46000,"duration":{"second":182,"nanosecond":410000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":67000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":67000,"duration":{"second":182,"nanosecond":410000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":70,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":70000}}],"watch_group":70000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":70,"duration":{"second":180,"nanosecond":398000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":76000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":76000,"duration":{"second":182,"nanosecond":409000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":40,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":40000}}],"watch_group":40000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":40,"duration":{"second":180,"nanosecond":398000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":13000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":13000,"duration":{"second":182,"nanosecond":409000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":10,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":10000}}],"watch_group":10000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":10,"duration":{"second":180,"nanosecond":398000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":88000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":88000,"duration":{"second":182,"nanosecond":409000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":47000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":47000,"duration":{"second":182,"nanosecond":409000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":66000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":66000,"duration":{"second":182,"nanosecond":409000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":77,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":77000}}],"watch_group":77000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":77,"duration":{"second":182,"nanosecond":409000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":43,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":43000}}],"watch_group":43000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":43,"duration":{"second":182,"nanosecond":408000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":9,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":9000}}],"watch_group":9000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":9,"duration":{"second":182,"nanosecond":408000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":99000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":99000,"duration":{"second":182,"nanosecond":408000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":26000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":26000,"duration":{"second":182,"nanosecond":408000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":70000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":70000,"duration":{"second":182,"nanosecond":407000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":76,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":76000}}],"watch_group":76000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":76,"duration":{"second":181,"nanosecond":911000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":42,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":42000}}],"watch_group":42000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":42,"duration":{"second":181,"nanosecond":910000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":8,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":8000}}],"watch_group":8000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":8,"duration":{"second":180,"nanosecond":398000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":37000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":37000,"duration":{"second":181,"nanosecond":910000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":49000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":49000,"duration":{"second":181,"nanosecond":910000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":71000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":71000,"duration":{"second":181,"nanosecond":910000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":48000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":48000,"duration":{"second":181,"nanosecond":909000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":75,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":75000}}],"watch_group":75000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":75,"duration":{"second":181,"nanosecond":905000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":45,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":45000}}],"watch_group":45000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":45,"duration":{"second":181,"nanosecond":905000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":7,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":7000}}],"watch_group":7000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":7,"duration":{"second":181,"nanosecond":905000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":39000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":39000,"duration":{"second":181,"nanosecond":905000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":73000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":73000,"duration":{"second":181,"nanosecond":905000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":69000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":69000,"duration":{"second":181,"nanosecond":905000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":17000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":17000,"duration":{"second":181,"nanosecond":905000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":28000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":28000,"duration":{"second":181,"nanosecond":905000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":74,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":74000}}],"watch_group":74000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":74,"duration":{"second":181,"nanosecond":905000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":44,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":44000}}],"watch_group":44000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":44,"duration":{"second":181,"nanosecond":905000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":6,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":6000}}],"watch_group":6000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":6,"duration":{"second":180,"nanosecond":398000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":40000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":40000,"duration":{"second":181,"nanosecond":905000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":81,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":81000}}],"watch_group":81000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":81,"duration":{"second":181,"nanosecond":905000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":47,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":47000}}],"watch_group":47000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":47,"duration":{"second":181,"nanosecond":905000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":21,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":21000}}],"watch_group":21000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":21,"duration":{"second":180,"nanosecond":398000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":8000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":8000,"duration":{"second":181,"nanosecond":905000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":19000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":19000,"duration":{"second":181,"nanosecond":904000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":96000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":96000,"duration":{"second":181,"nanosecond":904000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":80,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":80000}}],"watch_group":80000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":80,"duration":{"second":181,"nanosecond":904000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":46,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":46000}}],"watch_group":46000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":46,"duration":{"second":181,"nanosecond":904000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":20,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":20000}}],"watch_group":20000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":20,"duration":{"second":181,"nanosecond":904000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":52000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":52000,"duration":{"second":181,"nanosecond":904000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":6000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":6000,"duration":{"second":181,"nanosecond":904000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":79,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":79000}}],"watch_group":79000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":79,"duration":{"second":181,"nanosecond":903000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":49,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":49000}}],"watch_group":49000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":49,"duration":{"second":181,"nanosecond":411000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":19,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":19000}}],"watch_group":19000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":19,"duration":{"second":181,"nanosecond":410000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":50000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":50000,"duration":{"second":181,"nanosecond":410000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":72000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":72000,"duration":{"second":181,"nanosecond":410000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":30000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":30000,"duration":{"second":181,"nanosecond":410000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":78,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":78000}}],"watch_group":78000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":78,"duration":{"second":181,"nanosecond":410000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":48,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":48000}}],"watch_group":48000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":48,"duration":{"second":181,"nanosecond":409000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":18,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":18000}}],"watch_group":18000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":18,"duration":{"second":181,"nanosecond":409000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":51000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":51000,"duration":{"second":181,"nanosecond":409000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":85,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":85000}}],"watch_group":85000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":85,"duration":{"second":181,"nanosecond":409000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":55000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":55000,"duration":{"second":181,"nanosecond":409000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":51,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":51000}}],"watch_group":51000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":51,"duration":{"second":180,"nanosecond":910000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":17,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":17000}}],"watch_group":17000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":17,"duration":{"second":180,"nanosecond":910000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":21000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":21000,"duration":{"second":180,"nanosecond":910000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":4000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":4000,"duration":{"second":180,"nanosecond":910000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":84,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":84000}}],"watch_group":84000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":84,"duration":{"second":180,"nanosecond":910000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":50,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":50000}}],"watch_group":50000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":50,"duration":{"second":180,"nanosecond":910000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":16,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":16000}}],"watch_group":16000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":16,"duration":{"second":180,"nanosecond":909000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":10000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":10000,"duration":{"second":180,"nanosecond":909000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":54000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":54000,"duration":{"second":180,"nanosecond":909000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":83,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":83000}}],"watch_group":83000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":83,"duration":{"second":180,"nanosecond":909000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":32000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":32000,"duration":{"second":180,"nanosecond":909000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":53,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":53000}}],"watch_group":53000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":53,"duration":{"second":180,"nanosecond":398000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":15,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":15000}}],"watch_group":15000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":15,"duration":{"second":180,"nanosecond":908000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":2000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":2000,"duration":{"second":180,"nanosecond":908000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":82,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":82000}}],"watch_group":82000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":82,"duration":{"second":180,"nanosecond":908000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":52,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":52000}}],"watch_group":52000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":52,"duration":{"second":180,"nanosecond":908000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":14,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":14000}}],"watch_group":14000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":14,"duration":{"second":180,"nanosecond":908000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":53000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":53000,"duration":{"second":180,"nanosecond":907000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":12000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":12000,"duration":{"second":180,"nanosecond":907000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":23000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":23000,"duration":{"second":180,"nanosecond":906000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":94000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":94000,"duration":{"second":180,"nanosecond":906000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}}],"flow-node-inventory:snapshot-gathering-status-end":{"succeeded":true,"end":"2026-04-08T01:01:29.803Z"}},{"id":"openflow:1","flow-node-inventory:port-number":54934,"flow-node-inventory:table":[{"id":62,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":28,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":2,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":224,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":181,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":147,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":106,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":61,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":27,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":1,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":223,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":182,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":148,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":105,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":60,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":30,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":0,"flow":[{"id":"69","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.69/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":69}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":885000000}},"flags":""},{"id":"60","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.60/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":60}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":885000000}},"flags":""},{"id":"68","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.68/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":68}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":885000000}},"flags":""},{"id":"67","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.67/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":67}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":885000000}},"flags":""},{"id":"66","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.66/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":66}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":885000000}},"flags":""},{"id":"65","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.65/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":65}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":885000000}},"flags":""},{"id":"64","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.64/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":64}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":885000000}},"flags":""},{"id":"63","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.63/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":63}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":885000000}},"flags":""},{"id":"62","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.62/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":62}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":885000000}},"flags":""},{"id":"61","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.61/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":61}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":885000000}},"flags":""},{"id":"100","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.100/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":100}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":885000000}},"flags":""},{"id":"71","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.71/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":71}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":885000000}},"flags":""},{"id":"70","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.70/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":70}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":885000000}},"flags":""},{"id":"79","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.79/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":79}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":885000000}},"flags":""},{"id":"78","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.78/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":78}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":885000000}},"flags":""},{"id":"77","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.77/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":77}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":885000000}},"flags":""},{"id":"76","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.76/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":76}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":885000000}},"flags":""},{"id":"75","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.75/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":75}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":885000000}},"flags":""},{"id":"74","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.74/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":74}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":885000000}},"flags":""},{"id":"73","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.73/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":73}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":885000000}},"flags":""},{"id":"72","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.72/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":72}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":885000000}},"flags":""},{"id":"82","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.82/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":82}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":885000000}},"flags":""},{"id":"81","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.81/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":81}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":885000000}},"flags":""},{"id":"80","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.80/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":80}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":885000000}},"flags":""},{"id":"89","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.89/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":89}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":885000000}},"flags":""},{"id":"88","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.88/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":88}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":885000000}},"flags":""},{"id":"87","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.87/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":87}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":885000000}},"flags":""},{"id":"86","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.86/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":86}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":886000000}},"flags":""},{"id":"85","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.85/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":85}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":886000000}},"flags":""},{"id":"84","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.84/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":84}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":885000000}},"flags":""},{"id":"83","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.83/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":83}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":885000000}},"flags":""},{"id":"19","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.19/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":19}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":885000000}},"flags":""},{"id":"18","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.18/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":18}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":885000000}},"flags":""},{"id":"17","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.17/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":17}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":885000000}},"flags":""},{"id":"16","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.16/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":16}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":885000000}},"flags":""},{"id":"15","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.15/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":15}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":885000000}},"flags":""},{"id":"14","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.14/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":14}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":885000000}},"flags":""},{"id":"2","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.2/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":2}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":885000000}},"flags":""},{"id":"93","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.93/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":93}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":885000000}},"flags":""},{"id":"92","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.92/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":92}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":885000000}},"flags":""},{"id":"91","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.91/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":91}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":885000000}},"flags":""},{"id":"90","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.90/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":90}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":885000000}},"flags":""},{"id":"13","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.13/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":13}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":885000000}},"flags":""},{"id":"12","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.12/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":12}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":885000000}},"flags":""},{"id":"11","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.11/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":11}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":885000000}},"flags":""},{"id":"99","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.99/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":99}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":885000000}},"flags":""},{"id":"10","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.10/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":10}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":885000000}},"flags":""},{"id":"98","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.98/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":98}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":885000000}},"flags":""},{"id":"97","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.97/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":97}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":885000000}},"flags":""},{"id":"96","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.96/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":96}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":885000000}},"flags":""},{"id":"95","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.95/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":95}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":885000000}},"flags":""},{"id":"94","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.94/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":94}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":885000000}},"flags":""},{"id":"29","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.29/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":29}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":885000000}},"flags":""},{"id":"28","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.28/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":28}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":885000000}},"flags":""},{"id":"27","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.27/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":27}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":885000000}},"flags":""},{"id":"26","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.26/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":26}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":885000000}},"flags":""},{"id":"25","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.25/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":25}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":885000000}},"flags":""},{"id":"9","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.9/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":9}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":885000000}},"flags":""},{"id":"8","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.8/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":8}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":885000000}},"flags":""},{"id":"7","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.7/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":7}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":885000000}},"flags":""},{"id":"6","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.6/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":6}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":885000000}},"flags":""},{"id":"5","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.5/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":5}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":885000000}},"flags":""},{"id":"4","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.4/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":4}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":885000000}},"flags":""},{"id":"3","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.3/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":3}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":885000000}},"flags":""},{"id":"24","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.24/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":24}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":885000000}},"flags":""},{"id":"23","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.23/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":23}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":885000000}},"flags":""},{"id":"22","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.22/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":22}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":885000000}},"flags":""},{"id":"21","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.21/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":21}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":885000000}},"flags":""},{"id":"20","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.20/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":20}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":885000000}},"flags":""},{"id":"39","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.39/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":39}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":885000000}},"flags":""},{"id":"38","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.38/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":38}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":885000000}},"flags":""},{"id":"37","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.37/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":37}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":885000000}},"flags":""},{"id":"36","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.36/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":36}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":885000000}},"flags":""},{"id":"35","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.35/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":35}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":885000000}},"flags":""},{"id":"34","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.34/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":34}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":885000000}},"flags":""},{"id":"33","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.33/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":33}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":885000000}},"flags":""},{"id":"32","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.32/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":32}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":885000000}},"flags":""},{"id":"31","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.31/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":31}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":885000000}},"flags":""},{"id":"30","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.30/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":30}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":885000000}},"flags":""},{"id":"49","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.49/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":49}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":885000000}},"flags":""},{"id":"48","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.48/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":48}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":884000000}},"flags":""},{"id":"47","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.47/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":47}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":884000000}},"flags":""},{"id":"#UF$TABLE*0-1","table_id":0,"priority":0,"cookie_mask":"0","idle-timeout":0,"cookie":"10","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"output-action":{"max-length":65535,"output-node-connector":"CONTROLLER"}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"46","byte-count":"3760","duration":{"second":179,"nanosecond":775000000}},"flags":"SEND_FLOW_REM"},{"id":"46","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.46/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":46}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":884000000}},"flags":""},{"id":"45","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.45/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":45}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":884000000}},"flags":""},{"id":"44","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.44/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":44}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":884000000}},"flags":""},{"id":"43","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.43/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":43}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":884000000}},"flags":""},{"id":"42","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.42/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":42}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":884000000}},"flags":""},{"id":"41","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.41/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":41}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":884000000}},"flags":""},{"id":"40","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.40/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":40}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":884000000}},"flags":""},{"id":"59","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.59/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":59}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":884000000}},"flags":""},{"id":"58","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.58/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":58}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":884000000}},"flags":""},{"id":"57","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.57/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":57}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":884000000}},"flags":""},{"id":"56","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.56/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":56}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":884000000}},"flags":""},{"id":"55","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.55/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":55}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":884000000}},"flags":""},{"id":"54","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.54/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":54}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":884000000}},"flags":""},{"id":"53","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.53/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":53}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":884000000}},"flags":""},{"id":"52","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.52/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":52}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":884000000}},"flags":""},{"id":"51","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.51/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":51}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":884000000}},"flags":""},{"id":"50","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.50/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":50}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":884000000}},"flags":""}],"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"63","active-flows":100,"packets-matched":"56"}},{"id":226,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":179,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":149,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":104,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":59,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":29,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":225,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":180,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":150,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":103,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":66,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":32,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":220,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":185,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":151,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":102,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":65,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":31,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":253,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":219,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":186,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":152,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":101,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":64,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":34,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":252,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":222,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":183,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":153,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":100,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":63,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":33,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":251,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":221,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":184,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":154,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":99,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":54,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":20,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":250,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":216,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":189,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":155,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":129,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":114,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":53,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":19,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":249,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":215,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":190,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":156,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":130,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":113,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":52,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":22,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":248,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":218,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":187,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":157,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":112,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":51,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":21,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":247,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":217,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":188,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":158,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":128,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":111,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":58,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":24,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":246,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":212,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":193,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":159,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":110,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":57,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":23,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":245,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":211,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":194,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":160,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":109,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":56,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":26,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":244,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":214,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":191,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":161,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":108,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":55,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":25,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":243,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":213,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":192,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":162,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":107,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":77,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":43,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":17,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":239,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":198,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":164,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":138,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":119,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":89,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":78,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":44,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":18,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":240,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":197,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":163,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":137,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":120,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":90,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":75,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":45,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":15,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":241,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":196,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":166,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":136,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":121,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":87,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":76,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":46,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":16,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":242,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":195,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":165,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":135,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":122,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":88,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":81,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":47,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":13,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":235,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":202,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":168,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":134,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":115,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":85,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":82,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":48,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":14,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":236,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":201,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":167,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":133,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":116,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":86,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":79,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":49,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":11,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":237,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":200,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":170,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":132,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":117,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":83,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":80,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":50,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":12,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":238,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":199,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":169,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":131,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":118,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":84,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":69,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":35,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":9,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":231,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":206,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":172,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":146,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":127,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":97,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":70,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":36,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":10,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":232,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":205,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":171,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":145,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":98,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":67,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":37,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":7,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":233,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":204,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":174,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":144,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":95,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":68,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":38,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":8,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":234,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":203,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":173,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":143,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":96,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":73,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":39,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":5,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":227,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":210,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":176,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":142,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":123,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":93,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":74,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":40,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":6,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":228,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":209,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":175,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":141,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":124,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":94,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":71,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":41,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":3,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":229,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":208,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":178,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":140,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":125,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":91,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":72,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":42,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":4,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":230,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":207,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":177,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":139,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":126,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":92,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}}],"opendaylight-group-statistics:group-features":{"max-groups":[4294967040],"group-types-supported":["opendaylight-group-types:group-all","opendaylight-group-types:group-ff","opendaylight-group-types:group-select","opendaylight-group-types:group-indirect"],"group-capabilities-supported":["opendaylight-group-types:chaining","opendaylight-group-types:select-weight","opendaylight-group-types:select-liveness"],"actions":[67076097]},"flow-node-inventory:manufacturer":"Nicira, Inc.","flow-node-inventory:description":"s1","flow-node-inventory:hardware":"Open vSwitch","flow-node-inventory:switch-features":{"max_tables":254,"capabilities":["flow-node-inventory:flow-feature-capability-table-stats","flow-node-inventory:flow-feature-capability-group-stats","flow-node-inventory:flow-feature-capability-queue-stats","flow-node-inventory:flow-feature-capability-flow-stats","flow-node-inventory:flow-feature-capability-port-stats"],"max_buffers":0},"flow-node-inventory:snapshot-gathering-status-start":{"begin":"2026-04-08T01:01:29.785Z"},"flow-node-inventory:software":"2.17.11","node-connector":[{"id":"openflow:1:1","flow-node-inventory:port-number":1,"flow-node-inventory:hardware-address":"92:f4:e8:ea:c6:ad","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s1-eth1","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"56","received":"11"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":185,"nanosecond":109000000},"bytes":{"transmitted":"4715","received":"866"},"receive-crc-error":"0"}},{"id":"openflow:1:LOCAL","flow-node-inventory:port-number":4294967294,"flow-node-inventory:hardware-address":"e6:45:d0:5b:c7:49","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s1","flow-node-inventory:current-feature":"","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":0,"flow-node-inventory:state":{"live":false,"blocked":false,"link-down":true},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"PORT-DOWN","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"0","received":"0"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":185,"nanosecond":105000000},"bytes":{"transmitted":"0","received":"0"},"receive-crc-error":"0"}},{"id":"openflow:1:2","flow-node-inventory:port-number":2,"flow-node-inventory:hardware-address":"42:46:a8:4b:8b:86","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s1-eth2","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"50","received":"54"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":185,"nanosecond":109000000},"bytes":{"transmitted":"4187","received":"4539"},"receive-crc-error":"0"}}],"flow-node-inventory:ip-address":"10.30.170.192","flow-node-inventory:serial-number":"None","flow-node-inventory:group":[{"group-id":56,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":56000}}],"watch_group":56000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":56,"duration":{"second":181,"nanosecond":56000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":22,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":22000}}],"watch_group":22000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":22,"duration":{"second":181,"nanosecond":56000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":99,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":99000}}],"watch_group":99000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":99,"duration":{"second":181,"nanosecond":56000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":34000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":34000,"duration":{"second":183,"nanosecond":749000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":89000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":89000,"duration":{"second":183,"nanosecond":749000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":60000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":60000,"duration":{"second":183,"nanosecond":749000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":91000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":91000,"duration":{"second":183,"nanosecond":749000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":57,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":57000}}],"watch_group":57000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":57,"duration":{"second":181,"nanosecond":56000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":23,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":23000}}],"watch_group":23000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":23,"duration":{"second":180,"nanosecond":556000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":14000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":14000,"duration":{"second":183,"nanosecond":749000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":98,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":98000}}],"watch_group":98000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":98,"duration":{"second":180,"nanosecond":556000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":56000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":56000,"duration":{"second":183,"nanosecond":749000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":85000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":85000,"duration":{"second":183,"nanosecond":749000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":54,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":54000}}],"watch_group":54000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":54,"duration":{"second":180,"nanosecond":556000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":24,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":24000}}],"watch_group":24000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":24,"duration":{"second":180,"nanosecond":556000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":36000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":36000,"duration":{"second":183,"nanosecond":749000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":87000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":87000,"duration":{"second":183,"nanosecond":749000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":59000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":59000,"duration":{"second":183,"nanosecond":749000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":25000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":25000,"duration":{"second":183,"nanosecond":749000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":43000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":43000,"duration":{"second":183,"nanosecond":749000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":55,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":55000}}],"watch_group":55000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":55,"duration":{"second":180,"nanosecond":556000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":25,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":25000}}],"watch_group":25000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":25,"duration":{"second":183,"nanosecond":563000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":100,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":100000}}],"watch_group":100000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":100,"duration":{"second":180,"nanosecond":556000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":58000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":58000,"duration":{"second":183,"nanosecond":560000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":86000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":86000,"duration":{"second":183,"nanosecond":560000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":60,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":60000}}],"watch_group":60000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":60,"duration":{"second":183,"nanosecond":560000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":26,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":26000}}],"watch_group":26000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":26,"duration":{"second":180,"nanosecond":556000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":41000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":41000,"duration":{"second":183,"nanosecond":560000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":95,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":95000}}],"watch_group":95000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":95,"duration":{"second":180,"nanosecond":556000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":82000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":82000,"duration":{"second":183,"nanosecond":560000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":61,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":61000}}],"watch_group":61000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":61,"duration":{"second":180,"nanosecond":556000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":27,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":27000}}],"watch_group":27000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":27,"duration":{"second":180,"nanosecond":556000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":94,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":94000}}],"watch_group":94000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":94,"duration":{"second":180,"nanosecond":556000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":98000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":98000,"duration":{"second":183,"nanosecond":560000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":27000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":27000,"duration":{"second":183,"nanosecond":560000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":57000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":57000,"duration":{"second":183,"nanosecond":560000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":16000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":16000,"duration":{"second":183,"nanosecond":560000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":83000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":83000,"duration":{"second":183,"nanosecond":560000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":58,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":58000}}],"watch_group":58000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":58,"duration":{"second":183,"nanosecond":57000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":28,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":28000}}],"watch_group":28000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":28,"duration":{"second":180,"nanosecond":556000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":97,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":97000}}],"watch_group":97000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":97,"duration":{"second":180,"nanosecond":556000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":100000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":100000,"duration":{"second":183,"nanosecond":57000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":59,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":59000}}],"watch_group":59000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":59,"duration":{"second":183,"nanosecond":57000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":38000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":38000,"duration":{"second":183,"nanosecond":57000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":29,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":29000}}],"watch_group":29000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":29,"duration":{"second":180,"nanosecond":556000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":96,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":96000}}],"watch_group":96000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":96,"duration":{"second":180,"nanosecond":556000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":84000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":84000,"duration":{"second":183,"nanosecond":57000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":64,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":64000}}],"watch_group":64000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":64,"duration":{"second":180,"nanosecond":556000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":30,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":30000}}],"watch_group":30000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":30,"duration":{"second":180,"nanosecond":556000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":4,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":4000}}],"watch_group":4000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":4,"duration":{"second":180,"nanosecond":556000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":91,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":91000}}],"watch_group":91000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":91,"duration":{"second":183,"nanosecond":57000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":7000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":7000,"duration":{"second":183,"nanosecond":57000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":29000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":29000,"duration":{"second":183,"nanosecond":57000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":65,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":65000}}],"watch_group":65000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":65,"duration":{"second":180,"nanosecond":556000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":31,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":31000}}],"watch_group":31000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":31,"duration":{"second":180,"nanosecond":556000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":5,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":5000}}],"watch_group":5000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":5,"duration":{"second":180,"nanosecond":556000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":90,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":90000}}],"watch_group":90000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":90,"duration":{"second":180,"nanosecond":556000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":18000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":18000,"duration":{"second":183,"nanosecond":57000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":62,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":62000}}],"watch_group":62000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":62,"duration":{"second":180,"nanosecond":556000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":65000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":65000,"duration":{"second":183,"nanosecond":57000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":32,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":32000}}],"watch_group":32000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":32,"duration":{"second":180,"nanosecond":556000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":2,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":2000}}],"watch_group":2000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":2,"duration":{"second":180,"nanosecond":556000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":93,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":93000}}],"watch_group":93000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":93,"duration":{"second":180,"nanosecond":556000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":64000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":64000,"duration":{"second":183,"nanosecond":57000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":63,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":63000}}],"watch_group":63000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":63,"duration":{"second":180,"nanosecond":556000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":33,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":33000}}],"watch_group":33000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":33,"duration":{"second":180,"nanosecond":556000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":3,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":3000}}],"watch_group":3000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":3,"duration":{"second":180,"nanosecond":551000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":80000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":80000,"duration":{"second":183,"nanosecond":57000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":9000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":9000,"duration":{"second":183,"nanosecond":57000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":92,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":92000}}],"watch_group":92000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":92,"duration":{"second":180,"nanosecond":551000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":5000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":5000,"duration":{"second":183,"nanosecond":57000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":20000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":20000,"duration":{"second":183,"nanosecond":57000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":81000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":81000,"duration":{"second":183,"nanosecond":57000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":97000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":97000,"duration":{"second":183,"nanosecond":57000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":31000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":31000,"duration":{"second":183,"nanosecond":57000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":68,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":68000}}],"watch_group":68000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":68,"duration":{"second":180,"nanosecond":551000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":11000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":11000,"duration":{"second":183,"nanosecond":57000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":34,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":34000}}],"watch_group":34000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":34,"duration":{"second":183,"nanosecond":57000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":78000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":78000,"duration":{"second":183,"nanosecond":57000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":87,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":87000}}],"watch_group":87000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":87,"duration":{"second":183,"nanosecond":57000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":93000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":93000,"duration":{"second":183,"nanosecond":57000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":63000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":63000,"duration":{"second":183,"nanosecond":57000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":69,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":69000}}],"watch_group":69000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":69,"duration":{"second":180,"nanosecond":551000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":35,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":35000}}],"watch_group":35000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":35,"duration":{"second":180,"nanosecond":551000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":1,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":1000}}],"watch_group":1000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":1,"duration":{"second":0,"nanosecond":62000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":33000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":33000,"duration":{"second":183,"nanosecond":57000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":79000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":79000,"duration":{"second":183,"nanosecond":55000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":86,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":86000}}],"watch_group":86000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":86,"duration":{"second":183,"nanosecond":55000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":62000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":62000,"duration":{"second":183,"nanosecond":55000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":66,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":66000}}],"watch_group":66000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":66,"duration":{"second":180,"nanosecond":551000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":77000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":77000,"duration":{"second":183,"nanosecond":55000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":36,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":36000}}],"watch_group":36000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":36,"duration":{"second":183,"nanosecond":55000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":89,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":89000}}],"watch_group":89000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":89,"duration":{"second":183,"nanosecond":54000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":22000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":22000,"duration":{"second":183,"nanosecond":54000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":95000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":95000,"duration":{"second":183,"nanosecond":54000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":67,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":67000}}],"watch_group":67000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":67,"duration":{"second":180,"nanosecond":551000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":37,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":37000}}],"watch_group":37000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":37,"duration":{"second":180,"nanosecond":551000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":1000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":1000,"duration":{"second":0,"nanosecond":286000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":88,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":88000}}],"watch_group":88000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":88,"duration":{"second":180,"nanosecond":551000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":61000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":61000,"duration":{"second":183,"nanosecond":54000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":3000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":3000,"duration":{"second":183,"nanosecond":53000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":73,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":73000}}],"watch_group":73000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":73,"duration":{"second":180,"nanosecond":551000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":39,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":39000}}],"watch_group":39000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":39,"duration":{"second":180,"nanosecond":551000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":13,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":13000}}],"watch_group":13000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":13,"duration":{"second":180,"nanosecond":551000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":74000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":74000,"duration":{"second":183,"nanosecond":53000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":15000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":15000,"duration":{"second":183,"nanosecond":53000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":44000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":44000,"duration":{"second":183,"nanosecond":53000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":45000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":45000,"duration":{"second":183,"nanosecond":53000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":68000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":68000,"duration":{"second":183,"nanosecond":53000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":72,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":72000}}],"watch_group":72000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":72,"duration":{"second":180,"nanosecond":551000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":38,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":38000}}],"watch_group":38000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":38,"duration":{"second":182,"nanosecond":565000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":75000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":75000,"duration":{"second":182,"nanosecond":565000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":12,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":12000}}],"watch_group":12000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":12,"duration":{"second":180,"nanosecond":551000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":35000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":35000,"duration":{"second":182,"nanosecond":565000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":24000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":24000,"duration":{"second":182,"nanosecond":564000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":90000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":90000,"duration":{"second":182,"nanosecond":564000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":71,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":71000}}],"watch_group":71000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":71,"duration":{"second":180,"nanosecond":551000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":41,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":41000}}],"watch_group":41000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":41,"duration":{"second":182,"nanosecond":564000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":42000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":42000,"duration":{"second":182,"nanosecond":564000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":11,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":11000}}],"watch_group":11000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":11,"duration":{"second":182,"nanosecond":563000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":92000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":92000,"duration":{"second":182,"nanosecond":563000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":46000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":46000,"duration":{"second":182,"nanosecond":563000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":67000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":67000,"duration":{"second":182,"nanosecond":563000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":70,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":70000}}],"watch_group":70000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":70,"duration":{"second":180,"nanosecond":551000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":76000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":76000,"duration":{"second":182,"nanosecond":562000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":40,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":40000}}],"watch_group":40000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":40,"duration":{"second":180,"nanosecond":551000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":13000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":13000,"duration":{"second":182,"nanosecond":559000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":10,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":10000}}],"watch_group":10000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":10,"duration":{"second":180,"nanosecond":551000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":88000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":88000,"duration":{"second":182,"nanosecond":559000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":47000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":47000,"duration":{"second":182,"nanosecond":559000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":66000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":66000,"duration":{"second":182,"nanosecond":558000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":77,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":77000}}],"watch_group":77000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":77,"duration":{"second":182,"nanosecond":558000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":43,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":43000}}],"watch_group":43000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":43,"duration":{"second":182,"nanosecond":558000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":9,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":9000}}],"watch_group":9000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":9,"duration":{"second":182,"nanosecond":558000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":99000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":99000,"duration":{"second":182,"nanosecond":558000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":26000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":26000,"duration":{"second":182,"nanosecond":558000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":70000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":70000,"duration":{"second":182,"nanosecond":558000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":76,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":76000}}],"watch_group":76000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":76,"duration":{"second":182,"nanosecond":64000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":42,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":42000}}],"watch_group":42000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":42,"duration":{"second":182,"nanosecond":62000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":8,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":8000}}],"watch_group":8000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":8,"duration":{"second":180,"nanosecond":551000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":37000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":37000,"duration":{"second":182,"nanosecond":62000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":49000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":49000,"duration":{"second":182,"nanosecond":62000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":71000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":71000,"duration":{"second":182,"nanosecond":62000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":48000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":48000,"duration":{"second":182,"nanosecond":62000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":75,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":75000}}],"watch_group":75000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":75,"duration":{"second":182,"nanosecond":62000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":45,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":45000}}],"watch_group":45000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":45,"duration":{"second":182,"nanosecond":59000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":7,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":7000}}],"watch_group":7000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":7,"duration":{"second":182,"nanosecond":59000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":39000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":39000,"duration":{"second":182,"nanosecond":59000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":73000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":73000,"duration":{"second":182,"nanosecond":58000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":69000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":69000,"duration":{"second":182,"nanosecond":58000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":17000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":17000,"duration":{"second":182,"nanosecond":58000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":28000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":28000,"duration":{"second":182,"nanosecond":58000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":74,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":74000}}],"watch_group":74000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":74,"duration":{"second":182,"nanosecond":58000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":44,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":44000}}],"watch_group":44000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":44,"duration":{"second":182,"nanosecond":58000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":6,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":6000}}],"watch_group":6000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":6,"duration":{"second":180,"nanosecond":551000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":40000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":40000,"duration":{"second":182,"nanosecond":58000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":81,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":81000}}],"watch_group":81000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":81,"duration":{"second":182,"nanosecond":58000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":47,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":47000}}],"watch_group":47000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":47,"duration":{"second":182,"nanosecond":58000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":21,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":21000}}],"watch_group":21000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":21,"duration":{"second":180,"nanosecond":551000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":8000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":8000,"duration":{"second":182,"nanosecond":58000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":19000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":19000,"duration":{"second":182,"nanosecond":58000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":96000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":96000,"duration":{"second":182,"nanosecond":58000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":80,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":80000}}],"watch_group":80000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":80,"duration":{"second":182,"nanosecond":56000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":46,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":46000}}],"watch_group":46000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":46,"duration":{"second":182,"nanosecond":56000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":20,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":20000}}],"watch_group":20000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":20,"duration":{"second":182,"nanosecond":56000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":52000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":52000,"duration":{"second":182,"nanosecond":56000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":6000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":6000,"duration":{"second":182,"nanosecond":56000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":79,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":79000}}],"watch_group":79000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":79,"duration":{"second":182,"nanosecond":56000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":49,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":49000}}],"watch_group":49000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":49,"duration":{"second":181,"nanosecond":563000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":19,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":19000}}],"watch_group":19000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":19,"duration":{"second":181,"nanosecond":563000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":50000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":50000,"duration":{"second":181,"nanosecond":563000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":72000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":72000,"duration":{"second":181,"nanosecond":563000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":30000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":30000,"duration":{"second":181,"nanosecond":562000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":78,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":78000}}],"watch_group":78000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":78,"duration":{"second":181,"nanosecond":562000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":48,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":48000}}],"watch_group":48000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":48,"duration":{"second":181,"nanosecond":561000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":18,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":18000}}],"watch_group":18000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":18,"duration":{"second":181,"nanosecond":561000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":51000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":51000,"duration":{"second":181,"nanosecond":561000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":85,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":85000}}],"watch_group":85000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":85,"duration":{"second":181,"nanosecond":561000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":55000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":55000,"duration":{"second":181,"nanosecond":560000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":51,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":51000}}],"watch_group":51000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":51,"duration":{"second":181,"nanosecond":56000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":17,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":17000}}],"watch_group":17000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":17,"duration":{"second":181,"nanosecond":56000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":21000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":21000,"duration":{"second":181,"nanosecond":56000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":4000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":4000,"duration":{"second":181,"nanosecond":56000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":84,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":84000}}],"watch_group":84000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":84,"duration":{"second":181,"nanosecond":56000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":50,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":50000}}],"watch_group":50000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":50,"duration":{"second":181,"nanosecond":56000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":16,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":16000}}],"watch_group":16000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":16,"duration":{"second":181,"nanosecond":56000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":10000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":10000,"duration":{"second":181,"nanosecond":56000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":54000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":54000,"duration":{"second":181,"nanosecond":56000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":83,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":83000}}],"watch_group":83000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":83,"duration":{"second":181,"nanosecond":56000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":32000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":32000,"duration":{"second":181,"nanosecond":56000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":53,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":53000}}],"watch_group":53000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":53,"duration":{"second":180,"nanosecond":551000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":15,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":15000}}],"watch_group":15000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":15,"duration":{"second":181,"nanosecond":56000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":2000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":2000,"duration":{"second":181,"nanosecond":56000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":82,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":82000}}],"watch_group":82000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":82,"duration":{"second":181,"nanosecond":56000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":52,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":52000}}],"watch_group":52000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":52,"duration":{"second":181,"nanosecond":56000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":14,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":14000}}],"watch_group":14000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":14,"duration":{"second":181,"nanosecond":56000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":53000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":53000,"duration":{"second":181,"nanosecond":56000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":12000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":12000,"duration":{"second":181,"nanosecond":56000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":23000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":23000,"duration":{"second":181,"nanosecond":56000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":94000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":94000,"duration":{"second":181,"nanosecond":56000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}}],"flow-node-inventory:snapshot-gathering-status-end":{"succeeded":true,"end":"2026-04-08T01:01:29.821Z"}},{"id":"openflow:2","flow-node-inventory:port-number":54944,"flow-node-inventory:table":[{"id":62,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":28,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":2,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":224,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":181,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":147,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":106,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":61,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":27,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":1,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":223,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":182,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":148,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":105,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":60,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":30,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":0,"flow":[{"id":"69","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.69/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":69}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":881000000}},"flags":""},{"id":"60","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.60/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":60}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":881000000}},"flags":""},{"id":"68","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.68/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":68}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":881000000}},"flags":""},{"id":"67","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.67/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":67}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":881000000}},"flags":""},{"id":"66","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.66/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":66}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":881000000}},"flags":""},{"id":"65","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.65/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":65}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":881000000}},"flags":""},{"id":"64","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.64/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":64}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":881000000}},"flags":""},{"id":"63","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.63/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":63}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":881000000}},"flags":""},{"id":"62","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.62/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":62}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":881000000}},"flags":""},{"id":"61","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.61/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":61}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":881000000}},"flags":""},{"id":"100","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.100/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":100}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":881000000}},"flags":""},{"id":"71","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.71/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":71}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":881000000}},"flags":""},{"id":"70","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.70/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":70}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":881000000}},"flags":""},{"id":"79","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.79/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":79}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":881000000}},"flags":""},{"id":"78","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.78/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":78}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":881000000}},"flags":""},{"id":"77","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.77/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":77}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":881000000}},"flags":""},{"id":"76","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.76/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":76}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":881000000}},"flags":""},{"id":"75","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.75/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":75}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":881000000}},"flags":""},{"id":"74","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.74/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":74}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":881000000}},"flags":""},{"id":"73","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.73/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":73}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":881000000}},"flags":""},{"id":"72","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.72/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":72}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":881000000}},"flags":""},{"id":"82","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.82/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":82}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":881000000}},"flags":""},{"id":"81","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.81/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":81}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":881000000}},"flags":""},{"id":"80","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.80/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":80}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":881000000}},"flags":""},{"id":"89","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.89/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":89}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":881000000}},"flags":""},{"id":"88","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.88/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":88}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":881000000}},"flags":""},{"id":"87","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.87/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":87}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":881000000}},"flags":""},{"id":"86","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.86/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":86}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":881000000}},"flags":""},{"id":"85","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.85/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":85}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":881000000}},"flags":""},{"id":"84","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.84/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":84}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":881000000}},"flags":""},{"id":"83","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.83/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":83}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":881000000}},"flags":""},{"id":"19","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.19/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":19}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":881000000}},"flags":""},{"id":"18","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.18/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":18}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":881000000}},"flags":""},{"id":"17","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.17/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":17}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":881000000}},"flags":""},{"id":"16","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.16/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":16}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":881000000}},"flags":""},{"id":"15","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.15/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":15}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":881000000}},"flags":""},{"id":"14","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.14/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":14}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":881000000}},"flags":""},{"id":"2","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.2/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":2}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":881000000}},"flags":""},{"id":"93","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.93/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":93}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":880000000}},"flags":""},{"id":"92","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.92/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":92}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":880000000}},"flags":""},{"id":"91","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.91/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":91}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":880000000}},"flags":""},{"id":"90","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.90/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":90}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":880000000}},"flags":""},{"id":"13","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.13/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":13}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":880000000}},"flags":""},{"id":"12","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.12/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":12}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":880000000}},"flags":""},{"id":"11","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.11/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":11}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":880000000}},"flags":""},{"id":"99","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.99/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":99}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":880000000}},"flags":""},{"id":"10","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.10/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":10}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":880000000}},"flags":""},{"id":"98","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.98/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":98}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":880000000}},"flags":""},{"id":"97","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.97/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":97}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":880000000}},"flags":""},{"id":"96","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.96/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":96}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":880000000}},"flags":""},{"id":"95","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.95/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":95}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":880000000}},"flags":""},{"id":"94","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.94/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":94}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":880000000}},"flags":""},{"id":"29","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.29/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":29}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":880000000}},"flags":""},{"id":"28","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.28/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":28}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":880000000}},"flags":""},{"id":"27","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.27/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":27}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":880000000}},"flags":""},{"id":"26","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.26/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":26}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":880000000}},"flags":""},{"id":"25","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.25/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":25}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":880000000}},"flags":""},{"id":"9","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.9/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":9}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":880000000}},"flags":""},{"id":"8","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.8/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":8}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":880000000}},"flags":""},{"id":"7","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.7/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":7}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":880000000}},"flags":""},{"id":"6","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.6/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":6}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":880000000}},"flags":""},{"id":"5","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.5/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":5}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":880000000}},"flags":""},{"id":"4","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.4/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":4}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":880000000}},"flags":""},{"id":"3","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.3/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":3}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":880000000}},"flags":""},{"id":"24","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.24/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":24}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":880000000}},"flags":""},{"id":"23","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.23/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":23}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":880000000}},"flags":""},{"id":"22","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.22/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":22}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":880000000}},"flags":""},{"id":"21","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.21/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":21}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":880000000}},"flags":""},{"id":"20","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.20/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":20}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":880000000}},"flags":""},{"id":"39","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.39/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":39}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":880000000}},"flags":""},{"id":"38","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.38/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":38}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":880000000}},"flags":""},{"id":"37","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.37/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":37}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":880000000}},"flags":""},{"id":"36","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.36/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":36}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":880000000}},"flags":""},{"id":"35","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.35/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":35}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":880000000}},"flags":""},{"id":"34","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.34/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":34}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":880000000}},"flags":""},{"id":"33","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.33/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":33}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":880000000}},"flags":""},{"id":"32","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.32/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":32}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":880000000}},"flags":""},{"id":"31","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.31/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":31}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":880000000}},"flags":""},{"id":"30","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.30/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":30}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":880000000}},"flags":""},{"id":"49","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.49/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":49}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":880000000}},"flags":""},{"id":"48","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.48/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":48}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":880000000}},"flags":""},{"id":"47","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.47/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":47}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":880000000}},"flags":""},{"id":"#UF$TABLE*0-2","table_id":0,"priority":0,"cookie_mask":"0","idle-timeout":0,"cookie":"10","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"output-action":{"max-length":65535,"output-node-connector":"CONTROLLER"}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"86","byte-count":"7100","duration":{"second":179,"nanosecond":760000000}},"flags":"SEND_FLOW_REM"},{"id":"46","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.46/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":46}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":880000000}},"flags":""},{"id":"45","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.45/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":45}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":880000000}},"flags":""},{"id":"44","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.44/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":44}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":880000000}},"flags":""},{"id":"43","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.43/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":43}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":880000000}},"flags":""},{"id":"42","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.42/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":42}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":880000000}},"flags":""},{"id":"41","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.41/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":41}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":880000000}},"flags":""},{"id":"40","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.40/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":40}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":880000000}},"flags":""},{"id":"59","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.59/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":59}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":880000000}},"flags":""},{"id":"58","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.58/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":58}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":880000000}},"flags":""},{"id":"57","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.57/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":57}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":880000000}},"flags":""},{"id":"56","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.56/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":56}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":880000000}},"flags":""},{"id":"55","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.55/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":55}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":880000000}},"flags":""},{"id":"54","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.54/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":54}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":881000000}},"flags":""},{"id":"53","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.53/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":53}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":881000000}},"flags":""},{"id":"52","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.52/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":52}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":880000000}},"flags":""},{"id":"51","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.51/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":51}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":880000000}},"flags":""},{"id":"50","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.50/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":50}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":179,"nanosecond":880000000}},"flags":""}],"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"108","active-flows":100,"packets-matched":"96"}},{"id":226,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":179,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":149,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":104,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":59,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":29,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":225,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":180,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":150,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":103,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":66,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":32,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":220,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":185,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":151,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":102,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":65,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":31,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":253,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":219,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":186,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":152,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":101,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":64,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":34,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":252,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":222,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":183,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":153,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":100,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":63,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":33,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":251,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":221,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":184,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":154,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":99,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":54,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":20,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":250,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":216,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":189,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":155,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":129,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":114,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":53,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":19,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":249,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":215,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":190,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":156,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":130,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":113,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":52,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":22,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":248,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":218,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":187,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":157,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":112,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":51,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":21,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":247,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":217,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":188,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":158,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":128,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":111,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":58,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":24,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":246,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":212,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":193,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":159,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":110,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":57,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":23,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":245,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":211,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":194,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":160,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":109,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":56,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":26,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":244,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":214,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":191,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":161,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":108,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":55,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":25,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":243,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":213,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":192,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":162,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":107,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":77,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":43,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":17,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":239,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":198,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":164,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":138,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":119,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":89,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":78,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":44,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":18,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":240,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":197,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":163,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":137,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":120,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":90,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":75,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":45,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":15,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":241,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":196,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":166,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":136,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":121,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":87,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":76,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":46,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":16,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":242,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":195,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":165,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":135,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":122,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":88,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":81,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":47,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":13,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":235,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":202,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":168,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":134,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":115,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":85,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":82,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":48,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":14,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":236,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":201,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":167,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":133,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":116,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":86,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":79,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":49,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":11,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":237,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":200,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":170,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":132,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":117,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":83,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":80,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":50,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":12,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":238,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":199,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":169,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":131,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":118,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":84,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":69,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":35,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":9,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":231,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":206,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":172,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":146,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":127,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":97,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":70,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":36,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":10,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":232,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":205,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":171,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":145,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":98,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":67,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":37,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":7,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":233,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":204,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":174,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":144,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":95,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":68,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":38,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":8,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":234,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":203,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":173,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":143,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":96,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":73,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":39,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":5,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":227,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":210,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":176,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":142,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":123,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":93,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":74,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":40,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":6,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":228,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":209,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":175,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":141,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":124,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":94,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":71,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":41,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":3,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":229,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":208,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":178,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":140,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":125,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":91,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":72,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":42,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":4,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":230,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":207,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":177,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":139,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":126,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":92,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}}],"opendaylight-group-statistics:group-features":{"max-groups":[4294967040],"group-types-supported":["opendaylight-group-types:group-all","opendaylight-group-types:group-ff","opendaylight-group-types:group-select","opendaylight-group-types:group-indirect"],"group-capabilities-supported":["opendaylight-group-types:chaining","opendaylight-group-types:select-weight","opendaylight-group-types:select-liveness"],"actions":[67076097]},"flow-node-inventory:manufacturer":"Nicira, Inc.","flow-node-inventory:description":"s2","flow-node-inventory:hardware":"Open vSwitch","flow-node-inventory:switch-features":{"max_tables":254,"capabilities":["flow-node-inventory:flow-feature-capability-table-stats","flow-node-inventory:flow-feature-capability-group-stats","flow-node-inventory:flow-feature-capability-queue-stats","flow-node-inventory:flow-feature-capability-flow-stats","flow-node-inventory:flow-feature-capability-port-stats"],"max_buffers":0},"flow-node-inventory:snapshot-gathering-status-start":{"begin":"2026-04-08T01:01:29.771Z"},"flow-node-inventory:software":"2.17.11","node-connector":[{"id":"openflow:2:3","flow-node-inventory:port-number":3,"flow-node-inventory:hardware-address":"da:7c:fc:7d:24:d4","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s2-eth3","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"54","received":"50"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":185,"nanosecond":84000000},"bytes":{"transmitted":"4539","received":"4187"},"receive-crc-error":"0"}},{"id":"openflow:2:LOCAL","flow-node-inventory:port-number":4294967294,"flow-node-inventory:hardware-address":"ee:be:cf:9b:06:44","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s2","flow-node-inventory:current-feature":"","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":0,"flow-node-inventory:state":{"live":false,"blocked":false,"link-down":true},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"PORT-DOWN","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"0","received":"0"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":185,"nanosecond":79000000},"bytes":{"transmitted":"0","received":"0"},"receive-crc-error":"0"}},{"id":"openflow:2:2","flow-node-inventory:port-number":2,"flow-node-inventory:hardware-address":"76:f5:91:ad:d8:c6","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s2-eth2","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"54","received":"50"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":185,"nanosecond":84000000},"bytes":{"transmitted":"4539","received":"4187"},"receive-crc-error":"0"}},{"id":"openflow:2:1","flow-node-inventory:port-number":1,"flow-node-inventory:hardware-address":"96:61:91:36:76:0b","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s2-eth1","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"56","received":"11"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":185,"nanosecond":84000000},"bytes":{"transmitted":"4715","received":"866"},"receive-crc-error":"0"}}],"flow-node-inventory:ip-address":"10.30.170.192","flow-node-inventory:serial-number":"None","flow-node-inventory:group":[{"group-id":56,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":56000}}],"watch_group":56000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":56,"duration":{"second":181,"nanosecond":40000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":22,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":22000}}],"watch_group":22000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":22,"duration":{"second":181,"nanosecond":40000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":99,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":99000}}],"watch_group":99000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":99,"duration":{"second":181,"nanosecond":40000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":34000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":34000,"duration":{"second":183,"nanosecond":733000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":89000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":89000,"duration":{"second":183,"nanosecond":733000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":60000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":60000,"duration":{"second":183,"nanosecond":733000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":91000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":91000,"duration":{"second":183,"nanosecond":733000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":57,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":57000}}],"watch_group":57000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":57,"duration":{"second":181,"nanosecond":40000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":23,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":23000}}],"watch_group":23000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":23,"duration":{"second":180,"nanosecond":543000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":14000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":14000,"duration":{"second":183,"nanosecond":733000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":98,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":98000}}],"watch_group":98000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":98,"duration":{"second":180,"nanosecond":543000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":56000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":56000,"duration":{"second":183,"nanosecond":733000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":85000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":85000,"duration":{"second":183,"nanosecond":733000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":54,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":54000}}],"watch_group":54000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":54,"duration":{"second":180,"nanosecond":543000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":24,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":24000}}],"watch_group":24000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":24,"duration":{"second":180,"nanosecond":543000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":36000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":36000,"duration":{"second":183,"nanosecond":733000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":87000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":87000,"duration":{"second":183,"nanosecond":733000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":59000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":59000,"duration":{"second":183,"nanosecond":733000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":25000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":25000,"duration":{"second":183,"nanosecond":733000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":43000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":43000,"duration":{"second":183,"nanosecond":733000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":55,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":55000}}],"watch_group":55000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":55,"duration":{"second":180,"nanosecond":543000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":25,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":25000}}],"watch_group":25000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":25,"duration":{"second":183,"nanosecond":549000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":100,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":100000}}],"watch_group":100000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":100,"duration":{"second":180,"nanosecond":543000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":58000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":58000,"duration":{"second":183,"nanosecond":549000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":86000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":86000,"duration":{"second":183,"nanosecond":549000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":60,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":60000}}],"watch_group":60000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":60,"duration":{"second":183,"nanosecond":548000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":26,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":26000}}],"watch_group":26000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":26,"duration":{"second":180,"nanosecond":543000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":41000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":41000,"duration":{"second":183,"nanosecond":548000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":95,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":95000}}],"watch_group":95000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":95,"duration":{"second":180,"nanosecond":543000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":82000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":82000,"duration":{"second":183,"nanosecond":548000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":61,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":61000}}],"watch_group":61000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":61,"duration":{"second":180,"nanosecond":543000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":27,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":27000}}],"watch_group":27000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":27,"duration":{"second":180,"nanosecond":543000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":94,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":94000}}],"watch_group":94000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":94,"duration":{"second":180,"nanosecond":543000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":98000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":98000,"duration":{"second":183,"nanosecond":548000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":27000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":27000,"duration":{"second":183,"nanosecond":548000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":57000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":57000,"duration":{"second":183,"nanosecond":548000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":16000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":16000,"duration":{"second":183,"nanosecond":548000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":83000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":83000,"duration":{"second":183,"nanosecond":548000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":58,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":58000}}],"watch_group":58000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":58,"duration":{"second":183,"nanosecond":48000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":28,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":28000}}],"watch_group":28000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":28,"duration":{"second":180,"nanosecond":543000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":97,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":97000}}],"watch_group":97000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":97,"duration":{"second":180,"nanosecond":543000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":100000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":100000,"duration":{"second":183,"nanosecond":48000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":59,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":59000}}],"watch_group":59000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":59,"duration":{"second":183,"nanosecond":48000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":38000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":38000,"duration":{"second":183,"nanosecond":48000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":29,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":29000}}],"watch_group":29000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":29,"duration":{"second":180,"nanosecond":543000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":96,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":96000}}],"watch_group":96000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":96,"duration":{"second":180,"nanosecond":543000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":84000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":84000,"duration":{"second":183,"nanosecond":48000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":64,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":64000}}],"watch_group":64000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":64,"duration":{"second":180,"nanosecond":543000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":30,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":30000}}],"watch_group":30000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":30,"duration":{"second":180,"nanosecond":543000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":4,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":4000}}],"watch_group":4000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":4,"duration":{"second":180,"nanosecond":539000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":91,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":91000}}],"watch_group":91000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":91,"duration":{"second":183,"nanosecond":48000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":7000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":7000,"duration":{"second":183,"nanosecond":48000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":29000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":29000,"duration":{"second":183,"nanosecond":47000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":65,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":65000}}],"watch_group":65000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":65,"duration":{"second":180,"nanosecond":539000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":31,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":31000}}],"watch_group":31000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":31,"duration":{"second":180,"nanosecond":539000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":5,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":5000}}],"watch_group":5000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":5,"duration":{"second":180,"nanosecond":539000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":90,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":90000}}],"watch_group":90000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":90,"duration":{"second":180,"nanosecond":539000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":18000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":18000,"duration":{"second":183,"nanosecond":47000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":62,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":62000}}],"watch_group":62000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":62,"duration":{"second":180,"nanosecond":539000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":65000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":65000,"duration":{"second":183,"nanosecond":47000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":32,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":32000}}],"watch_group":32000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":32,"duration":{"second":180,"nanosecond":539000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":2,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":2000}}],"watch_group":2000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":2,"duration":{"second":180,"nanosecond":539000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":93,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":93000}}],"watch_group":93000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":93,"duration":{"second":180,"nanosecond":539000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":64000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":64000,"duration":{"second":183,"nanosecond":46000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":63,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":63000}}],"watch_group":63000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":63,"duration":{"second":180,"nanosecond":539000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":33,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":33000}}],"watch_group":33000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":33,"duration":{"second":180,"nanosecond":539000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":3,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":3000}}],"watch_group":3000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":3,"duration":{"second":180,"nanosecond":539000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":80000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":80000,"duration":{"second":183,"nanosecond":46000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":9000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":9000,"duration":{"second":183,"nanosecond":46000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":92,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":92000}}],"watch_group":92000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":92,"duration":{"second":180,"nanosecond":539000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":5000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":5000,"duration":{"second":183,"nanosecond":42000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":20000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":20000,"duration":{"second":183,"nanosecond":42000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":81000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":81000,"duration":{"second":183,"nanosecond":42000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":97000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":97000,"duration":{"second":183,"nanosecond":42000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":31000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":31000,"duration":{"second":183,"nanosecond":42000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":68,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":68000}}],"watch_group":68000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":68,"duration":{"second":180,"nanosecond":539000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":11000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":11000,"duration":{"second":183,"nanosecond":42000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":34,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":34000}}],"watch_group":34000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":34,"duration":{"second":183,"nanosecond":42000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":78000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":78000,"duration":{"second":183,"nanosecond":42000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":87,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":87000}}],"watch_group":87000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":87,"duration":{"second":183,"nanosecond":42000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":93000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":93000,"duration":{"second":183,"nanosecond":42000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":63000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":63000,"duration":{"second":183,"nanosecond":42000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":69,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":69000}}],"watch_group":69000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":69,"duration":{"second":180,"nanosecond":539000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":35,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":35000}}],"watch_group":35000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":35,"duration":{"second":180,"nanosecond":539000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":33000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":33000,"duration":{"second":183,"nanosecond":42000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":79000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":79000,"duration":{"second":183,"nanosecond":42000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":86,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":86000}}],"watch_group":86000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":86,"duration":{"second":183,"nanosecond":42000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":62000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":62000,"duration":{"second":183,"nanosecond":42000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":66,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":66000}}],"watch_group":66000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":66,"duration":{"second":180,"nanosecond":539000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":77000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":77000,"duration":{"second":183,"nanosecond":42000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":36,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":36000}}],"watch_group":36000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":36,"duration":{"second":183,"nanosecond":42000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":89,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":89000}}],"watch_group":89000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":89,"duration":{"second":183,"nanosecond":42000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":22000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":22000,"duration":{"second":183,"nanosecond":40000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":95000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":95000,"duration":{"second":183,"nanosecond":40000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":67,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":67000}}],"watch_group":67000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":67,"duration":{"second":180,"nanosecond":539000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":37,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":37000}}],"watch_group":37000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":37,"duration":{"second":180,"nanosecond":539000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":88,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":88000}}],"watch_group":88000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":88,"duration":{"second":180,"nanosecond":537000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":61000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":61000,"duration":{"second":183,"nanosecond":38000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":3000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":3000,"duration":{"second":183,"nanosecond":38000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":73,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":73000}}],"watch_group":73000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":73,"duration":{"second":180,"nanosecond":537000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":39,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":39000}}],"watch_group":39000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":39,"duration":{"second":180,"nanosecond":537000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":13,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":13000}}],"watch_group":13000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":13,"duration":{"second":180,"nanosecond":537000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":74000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":74000,"duration":{"second":183,"nanosecond":38000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":15000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":15000,"duration":{"second":183,"nanosecond":38000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":44000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":44000,"duration":{"second":183,"nanosecond":38000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":45000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":45000,"duration":{"second":183,"nanosecond":38000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":68000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":68000,"duration":{"second":183,"nanosecond":38000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":72,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":72000}}],"watch_group":72000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":72,"duration":{"second":180,"nanosecond":537000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":38,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":38000}}],"watch_group":38000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":38,"duration":{"second":182,"nanosecond":542000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":75000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":75000,"duration":{"second":182,"nanosecond":542000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":12,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":12000}}],"watch_group":12000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":12,"duration":{"second":180,"nanosecond":537000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":35000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":35000,"duration":{"second":182,"nanosecond":542000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":24000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":24000,"duration":{"second":182,"nanosecond":542000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":90000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":90000,"duration":{"second":182,"nanosecond":542000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":71,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":71000}}],"watch_group":71000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":71,"duration":{"second":180,"nanosecond":537000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":41,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":41000}}],"watch_group":41000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":41,"duration":{"second":182,"nanosecond":542000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":42000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":42000,"duration":{"second":182,"nanosecond":542000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":11,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":11000}}],"watch_group":11000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":11,"duration":{"second":182,"nanosecond":542000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":92000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":92000,"duration":{"second":182,"nanosecond":542000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":46000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":46000,"duration":{"second":182,"nanosecond":542000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":67000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":67000,"duration":{"second":182,"nanosecond":542000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":70,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":70000}}],"watch_group":70000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":70,"duration":{"second":180,"nanosecond":537000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":76000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":76000,"duration":{"second":182,"nanosecond":542000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":40,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":40000}}],"watch_group":40000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":40,"duration":{"second":180,"nanosecond":537000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":13000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":13000,"duration":{"second":182,"nanosecond":542000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":10,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":10000}}],"watch_group":10000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":10,"duration":{"second":180,"nanosecond":537000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":88000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":88000,"duration":{"second":182,"nanosecond":542000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":47000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":47000,"duration":{"second":182,"nanosecond":542000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":66000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":66000,"duration":{"second":182,"nanosecond":542000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":77,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":77000}}],"watch_group":77000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":77,"duration":{"second":182,"nanosecond":542000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":43,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":43000}}],"watch_group":43000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":43,"duration":{"second":182,"nanosecond":542000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":9,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":9000}}],"watch_group":9000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":9,"duration":{"second":182,"nanosecond":542000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":99000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":99000,"duration":{"second":182,"nanosecond":542000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":26000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":26000,"duration":{"second":182,"nanosecond":542000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":70000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":70000,"duration":{"second":182,"nanosecond":542000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":76,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":76000}}],"watch_group":76000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":76,"duration":{"second":182,"nanosecond":38000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":42,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":42000}}],"watch_group":42000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":42,"duration":{"second":182,"nanosecond":38000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":8,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":8000}}],"watch_group":8000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":8,"duration":{"second":180,"nanosecond":537000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":37000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":37000,"duration":{"second":182,"nanosecond":38000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":49000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":49000,"duration":{"second":182,"nanosecond":38000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":71000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":71000,"duration":{"second":182,"nanosecond":38000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":48000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":48000,"duration":{"second":182,"nanosecond":38000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":75,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":75000}}],"watch_group":75000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":75,"duration":{"second":182,"nanosecond":38000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":45,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":45000}}],"watch_group":45000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":45,"duration":{"second":182,"nanosecond":38000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":7,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":7000}}],"watch_group":7000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":7,"duration":{"second":182,"nanosecond":38000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":39000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":39000,"duration":{"second":182,"nanosecond":38000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":73000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":73000,"duration":{"second":182,"nanosecond":38000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":69000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":69000,"duration":{"second":182,"nanosecond":38000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":17000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":17000,"duration":{"second":182,"nanosecond":38000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":28000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":28000,"duration":{"second":182,"nanosecond":38000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":74,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":74000}}],"watch_group":74000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":74,"duration":{"second":182,"nanosecond":38000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":44,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":44000}}],"watch_group":44000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":44,"duration":{"second":182,"nanosecond":38000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":6,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":6000}}],"watch_group":6000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":6,"duration":{"second":180,"nanosecond":537000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":40000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":40000,"duration":{"second":182,"nanosecond":38000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":81,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":81000}}],"watch_group":81000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":81,"duration":{"second":182,"nanosecond":38000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":47,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":47000}}],"watch_group":47000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":47,"duration":{"second":182,"nanosecond":38000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":21,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":21000}}],"watch_group":21000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":21,"duration":{"second":180,"nanosecond":537000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":8000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":8000,"duration":{"second":182,"nanosecond":38000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":19000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":19000,"duration":{"second":182,"nanosecond":38000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":96000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":96000,"duration":{"second":182,"nanosecond":38000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":80,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":80000}}],"watch_group":80000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":80,"duration":{"second":182,"nanosecond":38000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":46,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":46000}}],"watch_group":46000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":46,"duration":{"second":182,"nanosecond":38000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":20,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":20000}}],"watch_group":20000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":20,"duration":{"second":182,"nanosecond":38000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":52000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":52000,"duration":{"second":182,"nanosecond":38000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":6000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":6000,"duration":{"second":182,"nanosecond":38000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":79,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":79000}}],"watch_group":79000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":79,"duration":{"second":182,"nanosecond":38000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":49,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":49000}}],"watch_group":49000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":49,"duration":{"second":181,"nanosecond":547000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":19,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":19000}}],"watch_group":19000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":19,"duration":{"second":181,"nanosecond":547000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":50000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":50000,"duration":{"second":181,"nanosecond":546000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":72000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":72000,"duration":{"second":181,"nanosecond":546000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":30000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":30000,"duration":{"second":181,"nanosecond":546000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":78,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":78000}}],"watch_group":78000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":78,"duration":{"second":181,"nanosecond":545000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":48,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":48000}}],"watch_group":48000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":48,"duration":{"second":181,"nanosecond":544000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":18,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":18000}}],"watch_group":18000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":18,"duration":{"second":181,"nanosecond":544000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":51000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":51000,"duration":{"second":181,"nanosecond":543000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":85,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":85000}}],"watch_group":85000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":85,"duration":{"second":181,"nanosecond":543000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":55000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":55000,"duration":{"second":181,"nanosecond":543000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":51,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":51000}}],"watch_group":51000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":51,"duration":{"second":181,"nanosecond":46000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":17,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":17000}}],"watch_group":17000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":17,"duration":{"second":181,"nanosecond":46000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":21000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":21000,"duration":{"second":181,"nanosecond":46000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":4000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":4000,"duration":{"second":181,"nanosecond":46000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":84,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":84000}}],"watch_group":84000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":84,"duration":{"second":181,"nanosecond":46000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":50,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":50000}}],"watch_group":50000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":50,"duration":{"second":181,"nanosecond":45000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":16,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":16000}}],"watch_group":16000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":16,"duration":{"second":181,"nanosecond":45000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":10000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":10000,"duration":{"second":181,"nanosecond":45000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":54000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":54000,"duration":{"second":181,"nanosecond":40000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":83,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":83000}}],"watch_group":83000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":83,"duration":{"second":181,"nanosecond":40000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":32000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":32000,"duration":{"second":181,"nanosecond":40000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":53,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":53000}}],"watch_group":53000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":53,"duration":{"second":180,"nanosecond":537000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":15,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":15000}}],"watch_group":15000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":15,"duration":{"second":181,"nanosecond":40000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":2000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":2000,"duration":{"second":181,"nanosecond":40000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":82,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":82000}}],"watch_group":82000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":82,"duration":{"second":181,"nanosecond":40000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":52,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":52000}}],"watch_group":52000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":52,"duration":{"second":181,"nanosecond":40000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":14,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":14000}}],"watch_group":14000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":14,"duration":{"second":181,"nanosecond":40000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":53000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":53000,"duration":{"second":181,"nanosecond":40000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":12000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":12000,"duration":{"second":181,"nanosecond":40000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":23000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":23000,"duration":{"second":181,"nanosecond":40000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":94000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":94000,"duration":{"second":181,"nanosecond":40000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}}],"flow-node-inventory:snapshot-gathering-status-end":{"succeeded":true,"end":"2026-04-08T01:01:29.807Z"}}]}}</msg>
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:32.679560" elapsed="0.010951"/>
</kw>
<kw name="Get Count" owner="BuiltIn">
<msg time="2026-04-08T01:01:32.694075" level="INFO">Item found from container 300 times.</msg>
<msg time="2026-04-08T01:01:32.694171" level="INFO">${count} = 300</msg>
<var>${count}</var>
<arg>${resp.text}</arg>
<arg>"priority"</arg>
<doc>Returns and logs how many times ``item`` is found from ``container``.</doc>
<status status="PASS" start="2026-04-08T01:01:32.690701" elapsed="0.003496"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-04-08T01:01:32.694739" level="FAIL">300 != 303</msg>
<arg>${count}</arg>
<arg>${flows}</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="FAIL" start="2026-04-08T01:01:32.694386" elapsed="0.000433">300 != 303</status>
</kw>
<arg>${all_flows}</arg>
<doc>Check number of flows in the inventory.</doc>
<status status="FAIL" start="2026-04-08T01:01:32.627833" elapsed="0.067093">300 != 303</status>
</kw>
<kw name="Check Number Of Flows On Member" owner="ClusterOpenFlow">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:01:33.698617" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:01:33.697834" elapsed="0.000852"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T01:01:33.698803" elapsed="0.000080"/>
</return>
<msg time="2026-04-08T01:01:33.699188" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T01:01:33.696992" elapsed="0.002256"/>
</kw>
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T01:01:33.761078" level="INFO">GET Request : url=http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01s3bfo0y24i1es90l47mavglv0.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T01:01:33.765632" level="INFO">GET Response : url=http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Transfer-Encoding': 'chunked'} 
 body={"opendaylight-inventory:nodes":{"node":[{"id":"openflow:3","flow-node-inventory:port-number":54950,"flow-node-inventory:table":[{"id":62,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":28,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":2,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":224,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":181,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":147,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":106,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":61,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":27,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":1,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":223,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":182,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":148,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":105,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":60,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":30,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":0,"flow":[{"id":"71","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.71/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":71}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":922000000}},"flags":""},{"id":"11","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.11/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":11}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":922000000}},"flags":""},{"id":"70","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.70/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":70}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":922000000}},"flags":""},{"id":"10","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.10/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":10}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":922000000}},"flags":""},{"id":"60","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.60/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":60}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":922000000}},"flags":""},{"id":"13","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.13/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":13}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":922000000}},"flags":""},{"id":"12","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.12/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":12}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":922000000}},"flags":""},{"id":"80","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.80/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":80}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":922000000}},"flags":""},{"id":"93","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.93/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":93}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":922000000}},"flags":""},{"id":"92","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.92/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":92}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":922000000}},"flags":""},{"id":"82","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.82/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":82}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":922000000}},"flags":""},{"id":"91","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.91/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":91}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":922000000}},"flags":""},{"id":"81","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.81/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":81}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":922000000}},"flags":""},{"id":"90","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.90/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":90}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":922000000}},"flags":""},{"id":"9","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.9/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":9}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":921000000}},"flags":""},{"id":"84","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.84/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":84}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":922000000}},"flags":""},{"id":"97","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.97/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":97}}]}}]},"hard-timeout":0,"opendaylight-flo... (set the log level to DEBUG or TRACE to see the full content) 
 </msg>
<msg time="2026-04-08T01:01:33.766208" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${RFC8040_OPERATIONAL_NODES_API}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T01:01:33.699608" elapsed="0.066666"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:33.771571" level="INFO">{"opendaylight-inventory:nodes":{"node":[{"id":"openflow:3","flow-node-inventory:port-number":54950,"flow-node-inventory:table":[{"id":62,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":28,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":2,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":224,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":181,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":147,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":106,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":61,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":27,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":1,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":223,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":182,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":148,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":105,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":60,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":30,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":0,"flow":[{"id":"71","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.71/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":71}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":922000000}},"flags":""},{"id":"11","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.11/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":11}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":922000000}},"flags":""},{"id":"70","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.70/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":70}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":922000000}},"flags":""},{"id":"10","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.10/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":10}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":922000000}},"flags":""},{"id":"60","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.60/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":60}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":922000000}},"flags":""},{"id":"13","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.13/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":13}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":922000000}},"flags":""},{"id":"12","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.12/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":12}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":922000000}},"flags":""},{"id":"80","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.80/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":80}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":922000000}},"flags":""},{"id":"93","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.93/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":93}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":922000000}},"flags":""},{"id":"92","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.92/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":92}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":922000000}},"flags":""},{"id":"82","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.82/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":82}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":922000000}},"flags":""},{"id":"91","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.91/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":91}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":922000000}},"flags":""},{"id":"81","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.81/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":81}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":922000000}},"flags":""},{"id":"90","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.90/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":90}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":922000000}},"flags":""},{"id":"9","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.9/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":9}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":921000000}},"flags":""},{"id":"84","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.84/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":84}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":922000000}},"flags":""},{"id":"97","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.97/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":97}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":922000000}},"flags":""},{"id":"66","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.66/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":66}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":922000000}},"flags":""},{"id":"79","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.79/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":79}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":922000000}},"flags":""},{"id":"54","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.54/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":54}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":921000000}},"flags":""},{"id":"45","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.45/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":45}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":921000000}},"flags":""},{"id":"83","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.83/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":83}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":922000000}},"flags":""},{"id":"96","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.96/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":96}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":921000000}},"flags":""},{"id":"65","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.65/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":65}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":922000000}},"flags":""},{"id":"78","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.78/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":78}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":922000000}},"flags":""},{"id":"20","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.20/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":20}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":921000000}},"flags":""},{"id":"55","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.55/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":55}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":921000000}},"flags":""},{"id":"46","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.46/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":46}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":921000000}},"flags":""},{"id":"7","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.7/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":7}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":921000000}},"flags":""},{"id":"86","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.86/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":86}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":922000000}},"flags":""},{"id":"95","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.95/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":95}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":921000000}},"flags":""},{"id":"68","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.68/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":68}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":922000000}},"flags":""},{"id":"77","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.77/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":77}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":922000000}},"flags":""},{"id":"30","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.30/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":30}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":921000000}},"flags":""},{"id":"56","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.56/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":56}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":921000000}},"flags":""},{"id":"43","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.43/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":43}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":921000000}},"flags":""},{"id":"8","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.8/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":8}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":921000000}},"flags":""},{"id":"85","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.85/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":85}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":922000000}},"flags":""},{"id":"94","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.94/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":94}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":921000000}},"flags":""},{"id":"67","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.67/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":67}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":922000000}},"flags":""},{"id":"76","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.76/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":76}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":922000000}},"flags":""},{"id":"31","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.31/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":31}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":921000000}},"flags":""},{"id":"57","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.57/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":57}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":921000000}},"flags":""},{"id":"44","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.44/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":44}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":921000000}},"flags":""},{"id":"5","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.5/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":5}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":921000000}},"flags":""},{"id":"88","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.88/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":88}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":922000000}},"flags":""},{"id":"62","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.62/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":62}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":922000000}},"flags":""},{"id":"75","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.75/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":75}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":922000000}},"flags":""},{"id":"32","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.32/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":32}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":921000000}},"flags":""},{"id":"23","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.23/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":23}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":921000000}},"flags":""},{"id":"50","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.50/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":50}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":918000000}},"flags":""},{"id":"41","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.41/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":41}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":921000000}},"flags":""},{"id":"6","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.6/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":6}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":921000000}},"flags":""},{"id":"100","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.100/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":100}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":922000000}},"flags":""},{"id":"87","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.87/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":87}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":922000000}},"flags":""},{"id":"61","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.61/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":61}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":922000000}},"flags":""},{"id":"74","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.74/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":74}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":922000000}},"flags":""},{"id":"33","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.33/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":33}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":921000000}},"flags":""},{"id":"24","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.24/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":24}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":921000000}},"flags":""},{"id":"51","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.51/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":51}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":918000000}},"flags":""},{"id":"42","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.42/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":42}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":921000000}},"flags":""},{"id":"3","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.3/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":3}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":921000000}},"flags":""},{"id":"99","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.99/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":99}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":922000000}},"flags":""},{"id":"64","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.64/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":64}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":922000000}},"flags":""},{"id":"73","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.73/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":73}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":922000000}},"flags":""},{"id":"34","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.34/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":34}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":921000000}},"flags":""},{"id":"21","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.21/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":21}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":921000000}},"flags":""},{"id":"52","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.52/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":52}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":921000000}},"flags":""},{"id":"#UF$TABLE*0-3","table_id":0,"priority":0,"cookie_mask":"0","idle-timeout":0,"cookie":"10","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"output-action":{"max-length":65535,"output-node-connector":"CONTROLLER"}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"46","byte-count":"3775","duration":{"second":182,"nanosecond":793000000}},"flags":"SEND_FLOW_REM"},{"id":"4","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.4/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":4}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":921000000}},"flags":""},{"id":"89","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.89/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":89}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":922000000}},"flags":""},{"id":"98","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.98/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":98}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":922000000}},"flags":""},{"id":"63","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.63/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":63}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":922000000}},"flags":""},{"id":"72","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.72/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":72}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":922000000}},"flags":""},{"id":"35","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.35/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":35}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":921000000}},"flags":""},{"id":"22","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.22/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":22}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":921000000}},"flags":""},{"id":"53","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.53/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":53}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":921000000}},"flags":""},{"id":"40","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.40/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":40}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":921000000}},"flags":""},{"id":"37","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.37/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":37}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":921000000}},"flags":""},{"id":"28","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.28/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":28}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":921000000}},"flags":""},{"id":"36","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.36/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":36}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":921000000}},"flags":""},{"id":"27","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.27/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":27}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":921000000}},"flags":""},{"id":"39","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.39/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":39}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":921000000}},"flags":""},{"id":"26","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.26/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":26}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":921000000}},"flags":""},{"id":"38","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.38/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":38}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":921000000}},"flags":""},{"id":"25","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.25/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":25}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":921000000}},"flags":""},{"id":"69","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.69/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":69}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":922000000}},"flags":""},{"id":"59","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.59/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":59}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":921000000}},"flags":""},{"id":"58","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.58/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":58}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":921000000}},"flags":""},{"id":"49","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.49/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":49}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":921000000}},"flags":""},{"id":"48","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.48/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":48}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":921000000}},"flags":""},{"id":"29","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.29/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":29}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":921000000}},"flags":""},{"id":"47","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.47/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":47}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":921000000}},"flags":""},{"id":"18","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.18/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":18}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":922000000}},"flags":""},{"id":"19","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.19/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":19}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":922000000}},"flags":""},{"id":"14","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.14/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":14}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":922000000}},"flags":""},{"id":"15","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.15/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":15}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":922000000}},"flags":""},{"id":"1","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.1/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":1}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":1,"nanosecond":629000000}},"flags":""},{"id":"16","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.16/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":16}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":922000000}},"flags":""},{"id":"2","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.2/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":2}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":922000000}},"flags":""},{"id":"17","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.17/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":17}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":922000000}},"flags":""}],"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"64","active-flows":101,"packets-matched":"56"}},{"id":226,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":179,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":149,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":104,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":59,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":29,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":225,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":180,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":150,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":103,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":66,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":32,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":220,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":185,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":151,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":102,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":65,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":31,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":253,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":219,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":186,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":152,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":101,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":64,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":34,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":252,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":222,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":183,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":153,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":100,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":63,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":33,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":251,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":221,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":184,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":154,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":99,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":54,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":20,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":250,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":216,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":189,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":155,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":129,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":114,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":53,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":19,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":249,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":215,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":190,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":156,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":130,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":113,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":52,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":22,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":248,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":218,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":187,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":157,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":112,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":51,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":21,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":247,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":217,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":188,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":158,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":128,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":111,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":58,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":24,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":246,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":212,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":193,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":159,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":110,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":57,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":23,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":245,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":211,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":194,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":160,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":109,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":56,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":26,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":244,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":214,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":191,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":161,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":108,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":55,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":25,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":243,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":213,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":192,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":162,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":107,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":77,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":43,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":17,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":239,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":198,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":164,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":138,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":119,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":89,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":78,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":44,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":18,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":240,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":197,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":163,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":137,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":120,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":90,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":75,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":45,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":15,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":241,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":196,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":166,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":136,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":121,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":87,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":76,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":46,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":16,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":242,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":195,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":165,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":135,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":122,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":88,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":81,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":47,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":13,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":235,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":202,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":168,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":134,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":115,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":85,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":82,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":48,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":14,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":236,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":201,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":167,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":133,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":116,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":86,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":79,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":49,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":11,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":237,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":200,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":170,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":132,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":117,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":83,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":80,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":50,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":12,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":238,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":199,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":169,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":131,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":118,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":84,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":69,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":35,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":9,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":231,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":206,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":172,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":146,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":127,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":97,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":70,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":36,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":10,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":232,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":205,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":171,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":145,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":98,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":67,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":37,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":7,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":233,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":204,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":174,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":144,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":95,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":68,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":38,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":8,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":234,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":203,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":173,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":143,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":96,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":73,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":39,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":5,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":227,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":210,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":176,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":142,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":123,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":93,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":74,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":40,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":6,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":228,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":209,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":175,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":141,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":124,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":94,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":71,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":41,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":3,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":229,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":208,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":178,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":140,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":125,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":91,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":72,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":42,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":4,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":230,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":207,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":177,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":139,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":126,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":92,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}}],"opendaylight-group-statistics:group-features":{"max-groups":[4294967040],"group-types-supported":["opendaylight-group-types:group-all","opendaylight-group-types:group-ff","opendaylight-group-types:group-select","opendaylight-group-types:group-indirect"],"group-capabilities-supported":["opendaylight-group-types:chaining","opendaylight-group-types:select-weight","opendaylight-group-types:select-liveness"],"actions":[67076097]},"flow-node-inventory:manufacturer":"Nicira, Inc.","flow-node-inventory:description":"s3","flow-node-inventory:hardware":"Open vSwitch","flow-node-inventory:switch-features":{"max_tables":254,"capabilities":["flow-node-inventory:flow-feature-capability-table-stats","flow-node-inventory:flow-feature-capability-group-stats","flow-node-inventory:flow-feature-capability-queue-stats","flow-node-inventory:flow-feature-capability-flow-stats","flow-node-inventory:flow-feature-capability-port-stats"],"max_buffers":0},"flow-node-inventory:snapshot-gathering-status-start":{"begin":"2026-04-08T01:01:32.805Z"},"flow-node-inventory:software":"2.17.11","node-connector":[{"id":"openflow:3:LOCAL","flow-node-inventory:port-number":4294967294,"flow-node-inventory:hardware-address":"c2:87:c1:60:0d:43","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s3","flow-node-inventory:current-feature":"","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":0,"flow-node-inventory:state":{"live":false,"blocked":false,"link-down":true},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"PORT-DOWN","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"0","received":"0"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":188,"nanosecond":122000000},"bytes":{"transmitted":"0","received":"0"},"receive-crc-error":"0"}},{"id":"openflow:3:2","flow-node-inventory:port-number":2,"flow-node-inventory:hardware-address":"9e:72:98:8c:46:72","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s3-eth2","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"51","received":"55"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":188,"nanosecond":125000000},"bytes":{"transmitted":"4272","received":"4624"},"receive-crc-error":"0"}},{"id":"openflow:3:1","flow-node-inventory:port-number":1,"flow-node-inventory:hardware-address":"ca:ac:9a:41:42:1c","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s3-eth1","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"57","received":"11"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":188,"nanosecond":125000000},"bytes":{"transmitted":"4800","received":"866"},"receive-crc-error":"0"}}],"flow-node-inventory:ip-address":"10.30.170.192","flow-node-inventory:serial-number":"None","flow-node-inventory:group":[{"group-id":56,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":56000}}],"watch_group":56000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":56,"duration":{"second":183,"nanosecond":942000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":22,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":22000}}],"watch_group":22000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":22,"duration":{"second":183,"nanosecond":942000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":99,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":99000}}],"watch_group":99000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":99,"duration":{"second":183,"nanosecond":942000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":34000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":34000,"duration":{"second":186,"nanosecond":772000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":89000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":89000,"duration":{"second":186,"nanosecond":771000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":60000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":60000,"duration":{"second":186,"nanosecond":768000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":91000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":91000,"duration":{"second":186,"nanosecond":768000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":57,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":57000}}],"watch_group":57000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":57,"duration":{"second":183,"nanosecond":942000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":23,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":23000}}],"watch_group":23000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":23,"duration":{"second":183,"nanosecond":445000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":14000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":14000,"duration":{"second":186,"nanosecond":768000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":98,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":98000}}],"watch_group":98000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":98,"duration":{"second":183,"nanosecond":444000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":56000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":56000,"duration":{"second":186,"nanosecond":768000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":85000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":85000,"duration":{"second":186,"nanosecond":768000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":54,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":54000}}],"watch_group":54000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":54,"duration":{"second":183,"nanosecond":444000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":24,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":24000}}],"watch_group":24000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":24,"duration":{"second":183,"nanosecond":444000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":36000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":36000,"duration":{"second":186,"nanosecond":768000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":87000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":87000,"duration":{"second":186,"nanosecond":768000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":59000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":59000,"duration":{"second":186,"nanosecond":768000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":25000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":25000,"duration":{"second":186,"nanosecond":768000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":43000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":43000,"duration":{"second":186,"nanosecond":767000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":55,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":55000}}],"watch_group":55000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":55,"duration":{"second":183,"nanosecond":444000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":25,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":25000}}],"watch_group":25000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":25,"duration":{"second":186,"nanosecond":450000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":100,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":100000}}],"watch_group":100000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":100,"duration":{"second":183,"nanosecond":444000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":58000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":58000,"duration":{"second":186,"nanosecond":450000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":86000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":86000,"duration":{"second":186,"nanosecond":450000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":60,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":60000}}],"watch_group":60000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":60,"duration":{"second":186,"nanosecond":450000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":26,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":26000}}],"watch_group":26000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":26,"duration":{"second":183,"nanosecond":444000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":41000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":41000,"duration":{"second":186,"nanosecond":449000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":95,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":95000}}],"watch_group":95000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":95,"duration":{"second":183,"nanosecond":444000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":82000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":82000,"duration":{"second":186,"nanosecond":449000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":61,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":61000}}],"watch_group":61000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":61,"duration":{"second":183,"nanosecond":444000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":27,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":27000}}],"watch_group":27000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":27,"duration":{"second":183,"nanosecond":439000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":94,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":94000}}],"watch_group":94000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":94,"duration":{"second":183,"nanosecond":439000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":98000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":98000,"duration":{"second":186,"nanosecond":448000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":27000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":27000,"duration":{"second":186,"nanosecond":448000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":57000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":57000,"duration":{"second":186,"nanosecond":447000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":16000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":16000,"duration":{"second":186,"nanosecond":446000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":83000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":83000,"duration":{"second":186,"nanosecond":446000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":58,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":58000}}],"watch_group":58000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":58,"duration":{"second":185,"nanosecond":947000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":28,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":28000}}],"watch_group":28000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":28,"duration":{"second":183,"nanosecond":439000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":97,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":97000}}],"watch_group":97000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":97,"duration":{"second":183,"nanosecond":439000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":100000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":100000,"duration":{"second":185,"nanosecond":947000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":59,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":59000}}],"watch_group":59000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":59,"duration":{"second":185,"nanosecond":947000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":38000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":38000,"duration":{"second":185,"nanosecond":947000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":29,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":29000}}],"watch_group":29000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":29,"duration":{"second":183,"nanosecond":439000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":96,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":96000}}],"watch_group":96000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":96,"duration":{"second":183,"nanosecond":439000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":84000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":84000,"duration":{"second":185,"nanosecond":947000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":64,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":64000}}],"watch_group":64000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":64,"duration":{"second":183,"nanosecond":439000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":30,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":30000}}],"watch_group":30000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":30,"duration":{"second":183,"nanosecond":439000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":4,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":4000}}],"watch_group":4000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":4,"duration":{"second":183,"nanosecond":439000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":91,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":91000}}],"watch_group":91000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":91,"duration":{"second":185,"nanosecond":947000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":7000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":7000,"duration":{"second":185,"nanosecond":947000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":29000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":29000,"duration":{"second":185,"nanosecond":947000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":65,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":65000}}],"watch_group":65000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":65,"duration":{"second":183,"nanosecond":439000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":31,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":31000}}],"watch_group":31000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":31,"duration":{"second":183,"nanosecond":439000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":5,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":5000}}],"watch_group":5000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":5,"duration":{"second":183,"nanosecond":439000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":90,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":90000}}],"watch_group":90000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":90,"duration":{"second":183,"nanosecond":439000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":18000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":18000,"duration":{"second":185,"nanosecond":946000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":62,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":62000}}],"watch_group":62000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":62,"duration":{"second":183,"nanosecond":439000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":65000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":65000,"duration":{"second":185,"nanosecond":946000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":32,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":32000}}],"watch_group":32000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":32,"duration":{"second":183,"nanosecond":439000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":2,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":2000}}],"watch_group":2000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":2,"duration":{"second":183,"nanosecond":439000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":93,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":93000}}],"watch_group":93000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":93,"duration":{"second":183,"nanosecond":439000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":64000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":64000,"duration":{"second":185,"nanosecond":945000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":63,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":63000}}],"watch_group":63000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":63,"duration":{"second":183,"nanosecond":439000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":33,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":33000}}],"watch_group":33000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":33,"duration":{"second":183,"nanosecond":439000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":3,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":3000}}],"watch_group":3000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":3,"duration":{"second":183,"nanosecond":439000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":80000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":80000,"duration":{"second":185,"nanosecond":944000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":9000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":9000,"duration":{"second":185,"nanosecond":944000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":92,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":92000}}],"watch_group":92000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":92,"duration":{"second":183,"nanosecond":439000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":5000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":5000,"duration":{"second":185,"nanosecond":944000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":20000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":20000,"duration":{"second":185,"nanosecond":944000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":81000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":81000,"duration":{"second":185,"nanosecond":944000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":97000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":97000,"duration":{"second":185,"nanosecond":944000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":31000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":31000,"duration":{"second":185,"nanosecond":944000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":68,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":68000}}],"watch_group":68000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":68,"duration":{"second":183,"nanosecond":439000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":11000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":11000,"duration":{"second":185,"nanosecond":944000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":34,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":34000}}],"watch_group":34000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":34,"duration":{"second":185,"nanosecond":944000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":78000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":78000,"duration":{"second":185,"nanosecond":943000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":87,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":87000}}],"watch_group":87000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":87,"duration":{"second":185,"nanosecond":943000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":93000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":93000,"duration":{"second":185,"nanosecond":943000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":63000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":63000,"duration":{"second":185,"nanosecond":943000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":69,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":69000}}],"watch_group":69000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":69,"duration":{"second":183,"nanosecond":439000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":35,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":35000}}],"watch_group":35000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":35,"duration":{"second":183,"nanosecond":439000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":1,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":1000}}],"watch_group":1000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":1,"duration":{"second":1,"nanosecond":827000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":33000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":33000,"duration":{"second":185,"nanosecond":939000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":79000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":79000,"duration":{"second":185,"nanosecond":939000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":86,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":86000}}],"watch_group":86000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":86,"duration":{"second":185,"nanosecond":939000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":62000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":62000,"duration":{"second":185,"nanosecond":939000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":66,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":66000}}],"watch_group":66000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":66,"duration":{"second":183,"nanosecond":439000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":77000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":77000,"duration":{"second":185,"nanosecond":939000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":36,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":36000}}],"watch_group":36000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":36,"duration":{"second":185,"nanosecond":939000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":89,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":89000}}],"watch_group":89000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":89,"duration":{"second":185,"nanosecond":939000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":22000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":22000,"duration":{"second":185,"nanosecond":939000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":95000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":95000,"duration":{"second":185,"nanosecond":939000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":67,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":67000}}],"watch_group":67000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":67,"duration":{"second":183,"nanosecond":439000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":37,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":37000}}],"watch_group":37000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":37,"duration":{"second":183,"nanosecond":439000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":1000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":1000,"duration":{"second":2,"nanosecond":35000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":88,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":88000}}],"watch_group":88000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":88,"duration":{"second":183,"nanosecond":439000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":61000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":61000,"duration":{"second":185,"nanosecond":938000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":3000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":3000,"duration":{"second":185,"nanosecond":938000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":73,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":73000}}],"watch_group":73000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":73,"duration":{"second":183,"nanosecond":439000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":39,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":39000}}],"watch_group":39000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":39,"duration":{"second":183,"nanosecond":434000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":13,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":13000}}],"watch_group":13000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":13,"duration":{"second":183,"nanosecond":434000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":74000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":74000,"duration":{"second":185,"nanosecond":938000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":15000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":15000,"duration":{"second":185,"nanosecond":938000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":44000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":44000,"duration":{"second":185,"nanosecond":938000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":45000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":45000,"duration":{"second":185,"nanosecond":938000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":68000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":68000,"duration":{"second":185,"nanosecond":938000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":72,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":72000}}],"watch_group":72000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":72,"duration":{"second":183,"nanosecond":434000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":38,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":38000}}],"watch_group":38000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":38,"duration":{"second":185,"nanosecond":448000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":75000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":75000,"duration":{"second":185,"nanosecond":448000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":12,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":12000}}],"watch_group":12000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":12,"duration":{"second":183,"nanosecond":434000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":35000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":35000,"duration":{"second":185,"nanosecond":448000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":24000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":24000,"duration":{"second":185,"nanosecond":448000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":90000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":90000,"duration":{"second":185,"nanosecond":448000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":71,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":71000}}],"watch_group":71000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":71,"duration":{"second":183,"nanosecond":434000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":41,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":41000}}],"watch_group":41000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":41,"duration":{"second":185,"nanosecond":447000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":42000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":42000,"duration":{"second":185,"nanosecond":447000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":11,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":11000}}],"watch_group":11000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":11,"duration":{"second":185,"nanosecond":447000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":92000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":92000,"duration":{"second":185,"nanosecond":446000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":46000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":46000,"duration":{"second":185,"nanosecond":446000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":67000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":67000,"duration":{"second":185,"nanosecond":446000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":70,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":70000}}],"watch_group":70000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":70,"duration":{"second":183,"nanosecond":434000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":76000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":76000,"duration":{"second":185,"nanosecond":445000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":40,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":40000}}],"watch_group":40000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":40,"duration":{"second":183,"nanosecond":434000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":13000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":13000,"duration":{"second":185,"nanosecond":445000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":10,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":10000}}],"watch_group":10000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":10,"duration":{"second":183,"nanosecond":434000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":88000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":88000,"duration":{"second":185,"nanosecond":445000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":47000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":47000,"duration":{"second":185,"nanosecond":445000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":66000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":66000,"duration":{"second":185,"nanosecond":445000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":77,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":77000}}],"watch_group":77000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":77,"duration":{"second":185,"nanosecond":445000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":43,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":43000}}],"watch_group":43000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":43,"duration":{"second":185,"nanosecond":444000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":9,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":9000}}],"watch_group":9000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":9,"duration":{"second":185,"nanosecond":444000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":99000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":99000,"duration":{"second":185,"nanosecond":444000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":26000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":26000,"duration":{"second":185,"nanosecond":444000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":70000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":70000,"duration":{"second":185,"nanosecond":443000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":76,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":76000}}],"watch_group":76000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":76,"duration":{"second":184,"nanosecond":947000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":42,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":42000}}],"watch_group":42000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":42,"duration":{"second":184,"nanosecond":946000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":8,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":8000}}],"watch_group":8000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":8,"duration":{"second":183,"nanosecond":434000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":37000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":37000,"duration":{"second":184,"nanosecond":946000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":49000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":49000,"duration":{"second":184,"nanosecond":946000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":71000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":71000,"duration":{"second":184,"nanosecond":946000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":48000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":48000,"duration":{"second":184,"nanosecond":945000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":75,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":75000}}],"watch_group":75000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":75,"duration":{"second":184,"nanosecond":941000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":45,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":45000}}],"watch_group":45000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":45,"duration":{"second":184,"nanosecond":941000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":7,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":7000}}],"watch_group":7000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":7,"duration":{"second":184,"nanosecond":941000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":39000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":39000,"duration":{"second":184,"nanosecond":941000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":73000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":73000,"duration":{"second":184,"nanosecond":941000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":69000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":69000,"duration":{"second":184,"nanosecond":941000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":17000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":17000,"duration":{"second":184,"nanosecond":941000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":28000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":28000,"duration":{"second":184,"nanosecond":941000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":74,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":74000}}],"watch_group":74000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":74,"duration":{"second":184,"nanosecond":941000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":44,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":44000}}],"watch_group":44000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":44,"duration":{"second":184,"nanosecond":941000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":6,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":6000}}],"watch_group":6000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":6,"duration":{"second":183,"nanosecond":434000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":40000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":40000,"duration":{"second":184,"nanosecond":941000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":81,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":81000}}],"watch_group":81000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":81,"duration":{"second":184,"nanosecond":941000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":47,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":47000}}],"watch_group":47000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":47,"duration":{"second":184,"nanosecond":941000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":21,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":21000}}],"watch_group":21000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":21,"duration":{"second":183,"nanosecond":434000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":8000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":8000,"duration":{"second":184,"nanosecond":941000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":19000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":19000,"duration":{"second":184,"nanosecond":940000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":96000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":96000,"duration":{"second":184,"nanosecond":940000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":80,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":80000}}],"watch_group":80000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":80,"duration":{"second":184,"nanosecond":940000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":46,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":46000}}],"watch_group":46000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":46,"duration":{"second":184,"nanosecond":940000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":20,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":20000}}],"watch_group":20000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":20,"duration":{"second":184,"nanosecond":940000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":52000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":52000,"duration":{"second":184,"nanosecond":940000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":6000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":6000,"duration":{"second":184,"nanosecond":940000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":79,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":79000}}],"watch_group":79000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":79,"duration":{"second":184,"nanosecond":939000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":49,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":49000}}],"watch_group":49000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":49,"duration":{"second":184,"nanosecond":447000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":19,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":19000}}],"watch_group":19000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":19,"duration":{"second":184,"nanosecond":446000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":50000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":50000,"duration":{"second":184,"nanosecond":446000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":72000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":72000,"duration":{"second":184,"nanosecond":446000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":30000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":30000,"duration":{"second":184,"nanosecond":446000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":78,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":78000}}],"watch_group":78000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":78,"duration":{"second":184,"nanosecond":446000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":48,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":48000}}],"watch_group":48000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":48,"duration":{"second":184,"nanosecond":445000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":18,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":18000}}],"watch_group":18000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":18,"duration":{"second":184,"nanosecond":445000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":51000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":51000,"duration":{"second":184,"nanosecond":445000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":85,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":85000}}],"watch_group":85000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":85,"duration":{"second":184,"nanosecond":445000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":55000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":55000,"duration":{"second":184,"nanosecond":445000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":51,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":51000}}],"watch_group":51000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":51,"duration":{"second":183,"nanosecond":946000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":17,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":17000}}],"watch_group":17000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":17,"duration":{"second":183,"nanosecond":946000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":21000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":21000,"duration":{"second":183,"nanosecond":946000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":4000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":4000,"duration":{"second":183,"nanosecond":946000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":84,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":84000}}],"watch_group":84000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":84,"duration":{"second":183,"nanosecond":946000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":50,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":50000}}],"watch_group":50000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":50,"duration":{"second":183,"nanosecond":946000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":16,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":16000}}],"watch_group":16000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":16,"duration":{"second":183,"nanosecond":945000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":10000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":10000,"duration":{"second":183,"nanosecond":945000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":54000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":54000,"duration":{"second":183,"nanosecond":945000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":83,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":83000}}],"watch_group":83000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":83,"duration":{"second":183,"nanosecond":945000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":32000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":32000,"duration":{"second":183,"nanosecond":945000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":53,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":53000}}],"watch_group":53000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":53,"duration":{"second":183,"nanosecond":434000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":15,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":15000}}],"watch_group":15000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":15,"duration":{"second":183,"nanosecond":944000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":2000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":2000,"duration":{"second":183,"nanosecond":944000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":82,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":82000}}],"watch_group":82000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":82,"duration":{"second":183,"nanosecond":944000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":52,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":52000}}],"watch_group":52000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":52,"duration":{"second":183,"nanosecond":944000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":14,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":14000}}],"watch_group":14000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":14,"duration":{"second":183,"nanosecond":944000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":53000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":53000,"duration":{"second":183,"nanosecond":943000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":12000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":12000,"duration":{"second":183,"nanosecond":943000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":23000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":23000,"duration":{"second":183,"nanosecond":942000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":94000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":94000,"duration":{"second":183,"nanosecond":942000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}}],"flow-node-inventory:snapshot-gathering-status-end":{"succeeded":true,"end":"2026-04-08T01:01:32.842Z"}},{"id":"openflow:1","flow-node-inventory:port-number":54934,"flow-node-inventory:table":[{"id":62,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":28,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":2,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":224,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":181,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":147,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":106,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":61,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":27,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":1,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":223,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":182,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":148,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":105,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":60,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":30,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":0,"flow":[{"id":"71","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.71/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":71}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":921000000}},"flags":""},{"id":"11","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.11/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":11}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":920000000}},"flags":""},{"id":"70","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.70/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":70}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":921000000}},"flags":""},{"id":"10","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.10/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":10}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":920000000}},"flags":""},{"id":"60","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.60/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":60}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":921000000}},"flags":""},{"id":"13","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.13/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":13}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":920000000}},"flags":""},{"id":"12","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.12/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":12}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":920000000}},"flags":""},{"id":"80","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.80/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":80}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":921000000}},"flags":""},{"id":"93","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.93/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":93}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":920000000}},"flags":""},{"id":"92","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.92/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":92}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":920000000}},"flags":""},{"id":"82","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.82/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":82}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":921000000}},"flags":""},{"id":"91","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.91/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":91}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":920000000}},"flags":""},{"id":"81","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.81/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":81}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":921000000}},"flags":""},{"id":"90","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.90/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":90}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":920000000}},"flags":""},{"id":"9","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.9/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":9}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":920000000}},"flags":""},{"id":"84","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.84/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":84}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":920000000}},"flags":""},{"id":"97","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.97/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":97}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":920000000}},"flags":""},{"id":"66","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.66/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":66}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":921000000}},"flags":""},{"id":"79","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.79/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":79}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":921000000}},"flags":""},{"id":"54","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.54/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":54}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":919000000}},"flags":""},{"id":"45","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.45/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":45}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":919000000}},"flags":""},{"id":"83","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.83/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":83}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":920000000}},"flags":""},{"id":"96","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.96/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":96}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":920000000}},"flags":""},{"id":"65","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.65/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":65}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":921000000}},"flags":""},{"id":"78","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.78/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":78}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":921000000}},"flags":""},{"id":"20","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.20/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":20}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":920000000}},"flags":""},{"id":"55","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.55/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":55}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":919000000}},"flags":""},{"id":"46","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.46/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":46}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":919000000}},"flags":""},{"id":"7","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.7/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":7}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":920000000}},"flags":""},{"id":"86","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.86/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":86}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":921000000}},"flags":""},{"id":"95","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.95/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":95}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":920000000}},"flags":""},{"id":"68","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.68/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":68}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":921000000}},"flags":""},{"id":"77","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.77/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":77}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":921000000}},"flags":""},{"id":"30","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.30/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":30}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":920000000}},"flags":""},{"id":"56","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.56/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":56}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":919000000}},"flags":""},{"id":"43","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.43/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":43}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":919000000}},"flags":""},{"id":"8","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.8/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":8}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":920000000}},"flags":""},{"id":"85","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.85/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":85}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":921000000}},"flags":""},{"id":"94","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.94/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":94}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":920000000}},"flags":""},{"id":"67","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.67/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":67}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":921000000}},"flags":""},{"id":"76","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.76/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":76}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":921000000}},"flags":""},{"id":"31","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.31/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":31}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":920000000}},"flags":""},{"id":"57","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.57/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":57}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":919000000}},"flags":""},{"id":"44","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.44/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":44}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":919000000}},"flags":""},{"id":"5","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.5/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":5}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":920000000}},"flags":""},{"id":"88","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.88/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":88}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":921000000}},"flags":""},{"id":"62","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.62/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":62}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":921000000}},"flags":""},{"id":"75","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.75/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":75}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":921000000}},"flags":""},{"id":"32","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.32/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":32}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":920000000}},"flags":""},{"id":"23","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.23/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":23}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":920000000}},"flags":""},{"id":"50","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.50/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":50}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":919000000}},"flags":""},{"id":"41","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.41/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":41}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":919000000}},"flags":""},{"id":"#UF$TABLE*0-1","table_id":0,"priority":0,"cookie_mask":"0","idle-timeout":0,"cookie":"10","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"output-action":{"max-length":65535,"output-node-connector":"CONTROLLER"}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"47","byte-count":"3845","duration":{"second":182,"nanosecond":810000000}},"flags":"SEND_FLOW_REM"},{"id":"6","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.6/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":6}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":920000000}},"flags":""},{"id":"100","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.100/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":100}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":921000000}},"flags":""},{"id":"87","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.87/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":87}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":921000000}},"flags":""},{"id":"61","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.61/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":61}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":921000000}},"flags":""},{"id":"74","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.74/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":74}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":921000000}},"flags":""},{"id":"33","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.33/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":33}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":920000000}},"flags":""},{"id":"24","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.24/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":24}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":920000000}},"flags":""},{"id":"51","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.51/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":51}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":919000000}},"flags":""},{"id":"42","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.42/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":42}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":919000000}},"flags":""},{"id":"3","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.3/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":3}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":920000000}},"flags":""},{"id":"99","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.99/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":99}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":920000000}},"flags":""},{"id":"64","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.64/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":64}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":921000000}},"flags":""},{"id":"73","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.73/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":73}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":921000000}},"flags":""},{"id":"34","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.34/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":34}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":920000000}},"flags":""},{"id":"21","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.21/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":21}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":920000000}},"flags":""},{"id":"52","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.52/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":52}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":919000000}},"flags":""},{"id":"4","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.4/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":4}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":920000000}},"flags":""},{"id":"89","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.89/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":89}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":921000000}},"flags":""},{"id":"98","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.98/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":98}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":920000000}},"flags":""},{"id":"63","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.63/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":63}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":921000000}},"flags":""},{"id":"72","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.72/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":72}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":921000000}},"flags":""},{"id":"35","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.35/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":35}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":920000000}},"flags":""},{"id":"22","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.22/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":22}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":920000000}},"flags":""},{"id":"53","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.53/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":53}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":919000000}},"flags":""},{"id":"40","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.40/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":40}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":919000000}},"flags":""},{"id":"37","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.37/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":37}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":920000000}},"flags":""},{"id":"28","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.28/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":28}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":920000000}},"flags":""},{"id":"36","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.36/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":36}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":920000000}},"flags":""},{"id":"27","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.27/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":27}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":920000000}},"flags":""},{"id":"39","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.39/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":39}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":920000000}},"flags":""},{"id":"26","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.26/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":26}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":920000000}},"flags":""},{"id":"38","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.38/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":38}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":920000000}},"flags":""},{"id":"25","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.25/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":25}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":920000000}},"flags":""},{"id":"69","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.69/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":69}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":921000000}},"flags":""},{"id":"59","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.59/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":59}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":919000000}},"flags":""},{"id":"58","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.58/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":58}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":919000000}},"flags":""},{"id":"49","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.49/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":49}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":920000000}},"flags":""},{"id":"48","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.48/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":48}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":919000000}},"flags":""},{"id":"29","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.29/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":29}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":920000000}},"flags":""},{"id":"47","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.47/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":47}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":919000000}},"flags":""},{"id":"18","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.18/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":18}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":920000000}},"flags":""},{"id":"19","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.19/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":19}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":920000000}},"flags":""},{"id":"14","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.14/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":14}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":920000000}},"flags":""},{"id":"15","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.15/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":15}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":920000000}},"flags":""},{"id":"1","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.1/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":1}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":2,"nanosecond":897000000}},"flags":""},{"id":"16","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.16/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":16}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":920000000}},"flags":""},{"id":"2","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.2/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":2}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":920000000}},"flags":""},{"id":"17","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.17/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":17}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":920000000}},"flags":""}],"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"64","active-flows":101,"packets-matched":"57"}},{"id":226,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":179,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":149,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":104,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":59,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":29,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":225,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":180,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":150,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":103,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":66,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":32,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":220,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":185,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":151,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":102,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":65,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":31,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":253,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":219,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":186,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":152,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":101,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":64,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":34,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":252,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":222,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":183,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":153,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":100,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":63,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":33,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":251,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":221,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":184,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":154,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":99,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":54,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":20,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":250,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":216,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":189,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":155,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":129,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":114,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":53,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":19,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":249,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":215,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":190,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":156,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":130,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":113,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":52,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":22,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":248,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":218,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":187,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":157,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":112,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":51,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":21,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":247,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":217,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":188,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":158,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":128,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":111,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":58,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":24,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":246,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":212,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":193,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":159,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":110,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":57,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":23,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":245,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":211,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":194,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":160,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":109,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":56,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":26,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":244,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":214,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":191,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":161,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":108,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":55,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":25,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":243,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":213,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":192,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":162,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":107,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":77,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":43,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":17,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":239,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":198,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":164,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":138,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":119,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":89,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":78,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":44,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":18,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":240,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":197,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":163,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":137,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":120,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":90,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":75,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":45,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":15,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":241,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":196,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":166,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":136,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":121,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":87,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":76,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":46,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":16,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":242,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":195,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":165,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":135,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":122,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":88,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":81,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":47,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":13,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":235,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":202,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":168,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":134,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":115,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":85,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":82,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":48,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":14,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":236,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":201,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":167,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":133,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":116,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":86,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":79,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":49,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":11,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":237,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":200,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":170,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":132,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":117,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":83,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":80,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":50,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":12,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":238,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":199,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":169,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":131,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":118,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":84,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":69,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":35,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":9,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":231,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":206,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":172,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":146,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":127,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":97,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":70,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":36,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":10,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":232,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":205,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":171,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":145,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":98,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":67,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":37,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":7,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":233,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":204,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":174,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":144,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":95,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":68,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":38,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":8,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":234,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":203,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":173,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":143,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":96,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":73,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":39,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":5,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":227,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":210,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":176,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":142,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":123,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":93,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":74,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":40,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":6,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":228,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":209,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":175,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":141,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":124,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":94,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":71,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":41,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":3,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":229,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":208,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":178,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":140,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":125,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":91,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":72,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":42,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":4,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":230,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":207,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":177,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":139,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":126,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":92,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}}],"opendaylight-group-statistics:group-features":{"max-groups":[4294967040],"group-types-supported":["opendaylight-group-types:group-all","opendaylight-group-types:group-ff","opendaylight-group-types:group-select","opendaylight-group-types:group-indirect"],"group-capabilities-supported":["opendaylight-group-types:chaining","opendaylight-group-types:select-weight","opendaylight-group-types:select-liveness"],"actions":[67076097]},"flow-node-inventory:manufacturer":"Nicira, Inc.","flow-node-inventory:description":"s1","flow-node-inventory:hardware":"Open vSwitch","flow-node-inventory:switch-features":{"max_tables":254,"capabilities":["flow-node-inventory:flow-feature-capability-table-stats","flow-node-inventory:flow-feature-capability-group-stats","flow-node-inventory:flow-feature-capability-queue-stats","flow-node-inventory:flow-feature-capability-flow-stats","flow-node-inventory:flow-feature-capability-port-stats"],"max_buffers":0},"flow-node-inventory:snapshot-gathering-status-start":{"begin":"2026-04-08T01:01:32.821Z"},"flow-node-inventory:software":"2.17.11","node-connector":[{"id":"openflow:1:1","flow-node-inventory:port-number":1,"flow-node-inventory:hardware-address":"92:f4:e8:ea:c6:ad","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s1-eth1","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"57","received":"11"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":188,"nanosecond":142000000},"bytes":{"transmitted":"4800","received":"866"},"receive-crc-error":"0"}},{"id":"openflow:1:LOCAL","flow-node-inventory:port-number":4294967294,"flow-node-inventory:hardware-address":"e6:45:d0:5b:c7:49","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s1","flow-node-inventory:current-feature":"","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":0,"flow-node-inventory:state":{"live":false,"blocked":false,"link-down":true},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"PORT-DOWN","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"0","received":"0"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":188,"nanosecond":138000000},"bytes":{"transmitted":"0","received":"0"},"receive-crc-error":"0"}},{"id":"openflow:1:2","flow-node-inventory:port-number":2,"flow-node-inventory:hardware-address":"42:46:a8:4b:8b:86","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s1-eth2","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"51","received":"55"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":188,"nanosecond":142000000},"bytes":{"transmitted":"4272","received":"4624"},"receive-crc-error":"0"}}],"flow-node-inventory:ip-address":"10.30.170.192","flow-node-inventory:serial-number":"None","flow-node-inventory:group":[{"group-id":56,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":56000}}],"watch_group":56000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":56,"duration":{"second":184,"nanosecond":94000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":22,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":22000}}],"watch_group":22000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":22,"duration":{"second":184,"nanosecond":94000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":99,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":99000}}],"watch_group":99000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":99,"duration":{"second":184,"nanosecond":94000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":34000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":34000,"duration":{"second":186,"nanosecond":787000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":89000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":89000,"duration":{"second":186,"nanosecond":787000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":60000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":60000,"duration":{"second":186,"nanosecond":787000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":91000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":91000,"duration":{"second":186,"nanosecond":787000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":57,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":57000}}],"watch_group":57000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":57,"duration":{"second":184,"nanosecond":94000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":23,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":23000}}],"watch_group":23000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":23,"duration":{"second":183,"nanosecond":594000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":14000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":14000,"duration":{"second":186,"nanosecond":787000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":98,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":98000}}],"watch_group":98000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":98,"duration":{"second":183,"nanosecond":594000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":56000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":56000,"duration":{"second":186,"nanosecond":787000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":85000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":85000,"duration":{"second":186,"nanosecond":787000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":54,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":54000}}],"watch_group":54000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":54,"duration":{"second":183,"nanosecond":594000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":24,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":24000}}],"watch_group":24000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":24,"duration":{"second":183,"nanosecond":594000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":36000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":36000,"duration":{"second":186,"nanosecond":787000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":87000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":87000,"duration":{"second":186,"nanosecond":787000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":59000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":59000,"duration":{"second":186,"nanosecond":787000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":25000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":25000,"duration":{"second":186,"nanosecond":787000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":43000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":43000,"duration":{"second":186,"nanosecond":787000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":55,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":55000}}],"watch_group":55000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":55,"duration":{"second":183,"nanosecond":594000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":25,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":25000}}],"watch_group":25000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":25,"duration":{"second":186,"nanosecond":601000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":100,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":100000}}],"watch_group":100000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":100,"duration":{"second":183,"nanosecond":594000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":58000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":58000,"duration":{"second":186,"nanosecond":598000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":86000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":86000,"duration":{"second":186,"nanosecond":598000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":60,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":60000}}],"watch_group":60000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":60,"duration":{"second":186,"nanosecond":598000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":26,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":26000}}],"watch_group":26000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":26,"duration":{"second":183,"nanosecond":594000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":41000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":41000,"duration":{"second":186,"nanosecond":598000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":95,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":95000}}],"watch_group":95000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":95,"duration":{"second":183,"nanosecond":594000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":82000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":82000,"duration":{"second":186,"nanosecond":598000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":61,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":61000}}],"watch_group":61000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":61,"duration":{"second":183,"nanosecond":594000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":27,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":27000}}],"watch_group":27000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":27,"duration":{"second":183,"nanosecond":594000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":94,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":94000}}],"watch_group":94000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":94,"duration":{"second":183,"nanosecond":594000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":98000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":98000,"duration":{"second":186,"nanosecond":598000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":27000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":27000,"duration":{"second":186,"nanosecond":598000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":57000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":57000,"duration":{"second":186,"nanosecond":598000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":16000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":16000,"duration":{"second":186,"nanosecond":598000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":83000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":83000,"duration":{"second":186,"nanosecond":598000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":58,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":58000}}],"watch_group":58000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":58,"duration":{"second":186,"nanosecond":95000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":28,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":28000}}],"watch_group":28000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":28,"duration":{"second":183,"nanosecond":594000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":97,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":97000}}],"watch_group":97000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":97,"duration":{"second":183,"nanosecond":594000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":100000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":100000,"duration":{"second":186,"nanosecond":95000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":59,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":59000}}],"watch_group":59000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":59,"duration":{"second":186,"nanosecond":95000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":38000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":38000,"duration":{"second":186,"nanosecond":95000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":29,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":29000}}],"watch_group":29000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":29,"duration":{"second":183,"nanosecond":594000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":96,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":96000}}],"watch_group":96000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":96,"duration":{"second":183,"nanosecond":594000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":84000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":84000,"duration":{"second":186,"nanosecond":95000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":64,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":64000}}],"watch_group":64000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":64,"duration":{"second":183,"nanosecond":594000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":30,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":30000}}],"watch_group":30000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":30,"duration":{"second":183,"nanosecond":594000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":4,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":4000}}],"watch_group":4000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":4,"duration":{"second":183,"nanosecond":594000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":91,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":91000}}],"watch_group":91000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":91,"duration":{"second":186,"nanosecond":95000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":7000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":7000,"duration":{"second":186,"nanosecond":95000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":29000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":29000,"duration":{"second":186,"nanosecond":95000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":65,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":65000}}],"watch_group":65000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":65,"duration":{"second":183,"nanosecond":594000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":31,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":31000}}],"watch_group":31000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":31,"duration":{"second":183,"nanosecond":594000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":5,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":5000}}],"watch_group":5000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":5,"duration":{"second":183,"nanosecond":594000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":90,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":90000}}],"watch_group":90000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":90,"duration":{"second":183,"nanosecond":594000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":18000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":18000,"duration":{"second":186,"nanosecond":95000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":62,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":62000}}],"watch_group":62000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":62,"duration":{"second":183,"nanosecond":594000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":65000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":65000,"duration":{"second":186,"nanosecond":95000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":32,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":32000}}],"watch_group":32000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":32,"duration":{"second":183,"nanosecond":594000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":2,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":2000}}],"watch_group":2000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":2,"duration":{"second":183,"nanosecond":594000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":93,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":93000}}],"watch_group":93000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":93,"duration":{"second":183,"nanosecond":594000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":64000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":64000,"duration":{"second":186,"nanosecond":95000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":63,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":63000}}],"watch_group":63000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":63,"duration":{"second":183,"nanosecond":594000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":33,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":33000}}],"watch_group":33000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":33,"duration":{"second":183,"nanosecond":594000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":3,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":3000}}],"watch_group":3000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":3,"duration":{"second":183,"nanosecond":589000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":80000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":80000,"duration":{"second":186,"nanosecond":95000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":9000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":9000,"duration":{"second":186,"nanosecond":95000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":92,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":92000}}],"watch_group":92000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":92,"duration":{"second":183,"nanosecond":589000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":5000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":5000,"duration":{"second":186,"nanosecond":95000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":20000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":20000,"duration":{"second":186,"nanosecond":95000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":81000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":81000,"duration":{"second":186,"nanosecond":95000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":97000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":97000,"duration":{"second":186,"nanosecond":95000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":31000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":31000,"duration":{"second":186,"nanosecond":95000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":68,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":68000}}],"watch_group":68000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":68,"duration":{"second":183,"nanosecond":589000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":11000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":11000,"duration":{"second":186,"nanosecond":95000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":34,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":34000}}],"watch_group":34000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":34,"duration":{"second":186,"nanosecond":95000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":78000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":78000,"duration":{"second":186,"nanosecond":95000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":87,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":87000}}],"watch_group":87000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":87,"duration":{"second":186,"nanosecond":95000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":93000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":93000,"duration":{"second":186,"nanosecond":95000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":63000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":63000,"duration":{"second":186,"nanosecond":95000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":69,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":69000}}],"watch_group":69000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":69,"duration":{"second":183,"nanosecond":589000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":35,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":35000}}],"watch_group":35000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":35,"duration":{"second":183,"nanosecond":589000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":1,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":1000}}],"watch_group":1000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":1,"duration":{"second":3,"nanosecond":100000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":33000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":33000,"duration":{"second":186,"nanosecond":95000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":79000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":79000,"duration":{"second":186,"nanosecond":93000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":86,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":86000}}],"watch_group":86000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":86,"duration":{"second":186,"nanosecond":93000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":62000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":62000,"duration":{"second":186,"nanosecond":93000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":66,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":66000}}],"watch_group":66000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":66,"duration":{"second":183,"nanosecond":589000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":77000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":77000,"duration":{"second":186,"nanosecond":93000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":36,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":36000}}],"watch_group":36000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":36,"duration":{"second":186,"nanosecond":93000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":89,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":89000}}],"watch_group":89000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":89,"duration":{"second":186,"nanosecond":92000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":22000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":22000,"duration":{"second":186,"nanosecond":92000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":95000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":95000,"duration":{"second":186,"nanosecond":92000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":67,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":67000}}],"watch_group":67000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":67,"duration":{"second":183,"nanosecond":589000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":37,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":37000}}],"watch_group":37000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":37,"duration":{"second":183,"nanosecond":589000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":1000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":1000,"duration":{"second":3,"nanosecond":324000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":88,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":88000}}],"watch_group":88000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":88,"duration":{"second":183,"nanosecond":589000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":61000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":61000,"duration":{"second":186,"nanosecond":92000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":3000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":3000,"duration":{"second":186,"nanosecond":91000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":73,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":73000}}],"watch_group":73000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":73,"duration":{"second":183,"nanosecond":589000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":39,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":39000}}],"watch_group":39000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":39,"duration":{"second":183,"nanosecond":589000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":13,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":13000}}],"watch_group":13000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":13,"duration":{"second":183,"nanosecond":589000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":74000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":74000,"duration":{"second":186,"nanosecond":91000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":15000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":15000,"duration":{"second":186,"nanosecond":91000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":44000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":44000,"duration":{"second":186,"nanosecond":91000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":45000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":45000,"duration":{"second":186,"nanosecond":91000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":68000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":68000,"duration":{"second":186,"nanosecond":91000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":72,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":72000}}],"watch_group":72000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":72,"duration":{"second":183,"nanosecond":589000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":38,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":38000}}],"watch_group":38000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":38,"duration":{"second":185,"nanosecond":603000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":75000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":75000,"duration":{"second":185,"nanosecond":603000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":12,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":12000}}],"watch_group":12000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":12,"duration":{"second":183,"nanosecond":589000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":35000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":35000,"duration":{"second":185,"nanosecond":603000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":24000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":24000,"duration":{"second":185,"nanosecond":602000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":90000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":90000,"duration":{"second":185,"nanosecond":602000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":71,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":71000}}],"watch_group":71000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":71,"duration":{"second":183,"nanosecond":589000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":41,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":41000}}],"watch_group":41000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":41,"duration":{"second":185,"nanosecond":602000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":42000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":42000,"duration":{"second":185,"nanosecond":602000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":11,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":11000}}],"watch_group":11000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":11,"duration":{"second":185,"nanosecond":601000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":92000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":92000,"duration":{"second":185,"nanosecond":601000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":46000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":46000,"duration":{"second":185,"nanosecond":601000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":67000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":67000,"duration":{"second":185,"nanosecond":601000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":70,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":70000}}],"watch_group":70000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":70,"duration":{"second":183,"nanosecond":589000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":76000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":76000,"duration":{"second":185,"nanosecond":600000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":40,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":40000}}],"watch_group":40000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":40,"duration":{"second":183,"nanosecond":589000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":13000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":13000,"duration":{"second":185,"nanosecond":597000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":10,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":10000}}],"watch_group":10000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":10,"duration":{"second":183,"nanosecond":589000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":88000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":88000,"duration":{"second":185,"nanosecond":597000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":47000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":47000,"duration":{"second":185,"nanosecond":597000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":66000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":66000,"duration":{"second":185,"nanosecond":596000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":77,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":77000}}],"watch_group":77000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":77,"duration":{"second":185,"nanosecond":596000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":43,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":43000}}],"watch_group":43000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":43,"duration":{"second":185,"nanosecond":596000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":9,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":9000}}],"watch_group":9000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":9,"duration":{"second":185,"nanosecond":596000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":99000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":99000,"duration":{"second":185,"nanosecond":596000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":26000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":26000,"duration":{"second":185,"nanosecond":596000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":70000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":70000,"duration":{"second":185,"nanosecond":596000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":76,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":76000}}],"watch_group":76000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":76,"duration":{"second":185,"nanosecond":102000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":42,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":42000}}],"watch_group":42000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":42,"duration":{"second":185,"nanosecond":100000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":8,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":8000}}],"watch_group":8000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":8,"duration":{"second":183,"nanosecond":589000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":37000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":37000,"duration":{"second":185,"nanosecond":100000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":49000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":49000,"duration":{"second":185,"nanosecond":100000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":71000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":71000,"duration":{"second":185,"nanosecond":100000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":48000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":48000,"duration":{"second":185,"nanosecond":100000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":75,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":75000}}],"watch_group":75000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":75,"duration":{"second":185,"nanosecond":100000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":45,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":45000}}],"watch_group":45000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":45,"duration":{"second":185,"nanosecond":97000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":7,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":7000}}],"watch_group":7000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":7,"duration":{"second":185,"nanosecond":97000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":39000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":39000,"duration":{"second":185,"nanosecond":97000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":73000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":73000,"duration":{"second":185,"nanosecond":96000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":69000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":69000,"duration":{"second":185,"nanosecond":96000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":17000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":17000,"duration":{"second":185,"nanosecond":96000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":28000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":28000,"duration":{"second":185,"nanosecond":96000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":74,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":74000}}],"watch_group":74000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":74,"duration":{"second":185,"nanosecond":96000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":44,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":44000}}],"watch_group":44000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":44,"duration":{"second":185,"nanosecond":96000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":6,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":6000}}],"watch_group":6000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":6,"duration":{"second":183,"nanosecond":589000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":40000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":40000,"duration":{"second":185,"nanosecond":96000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":81,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":81000}}],"watch_group":81000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":81,"duration":{"second":185,"nanosecond":96000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":47,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":47000}}],"watch_group":47000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":47,"duration":{"second":185,"nanosecond":96000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":21,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":21000}}],"watch_group":21000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":21,"duration":{"second":183,"nanosecond":589000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":8000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":8000,"duration":{"second":185,"nanosecond":96000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":19000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":19000,"duration":{"second":185,"nanosecond":96000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":96000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":96000,"duration":{"second":185,"nanosecond":96000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":80,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":80000}}],"watch_group":80000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":80,"duration":{"second":185,"nanosecond":94000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":46,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":46000}}],"watch_group":46000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":46,"duration":{"second":185,"nanosecond":94000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":20,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":20000}}],"watch_group":20000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":20,"duration":{"second":185,"nanosecond":94000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":52000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":52000,"duration":{"second":185,"nanosecond":94000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":6000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":6000,"duration":{"second":185,"nanosecond":94000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":79,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":79000}}],"watch_group":79000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":79,"duration":{"second":185,"nanosecond":94000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":49,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":49000}}],"watch_group":49000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":49,"duration":{"second":184,"nanosecond":601000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":19,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":19000}}],"watch_group":19000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":19,"duration":{"second":184,"nanosecond":601000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":50000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":50000,"duration":{"second":184,"nanosecond":601000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":72000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":72000,"duration":{"second":184,"nanosecond":601000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":30000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":30000,"duration":{"second":184,"nanosecond":600000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":78,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":78000}}],"watch_group":78000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":78,"duration":{"second":184,"nanosecond":600000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":48,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":48000}}],"watch_group":48000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":48,"duration":{"second":184,"nanosecond":599000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":18,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":18000}}],"watch_group":18000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":18,"duration":{"second":184,"nanosecond":599000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":51000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":51000,"duration":{"second":184,"nanosecond":599000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":85,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":85000}}],"watch_group":85000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":85,"duration":{"second":184,"nanosecond":599000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":55000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":55000,"duration":{"second":184,"nanosecond":598000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":51,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":51000}}],"watch_group":51000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":51,"duration":{"second":184,"nanosecond":94000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":17,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":17000}}],"watch_group":17000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":17,"duration":{"second":184,"nanosecond":94000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":21000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":21000,"duration":{"second":184,"nanosecond":94000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":4000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":4000,"duration":{"second":184,"nanosecond":94000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":84,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":84000}}],"watch_group":84000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":84,"duration":{"second":184,"nanosecond":94000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":50,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":50000}}],"watch_group":50000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":50,"duration":{"second":184,"nanosecond":94000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":16,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":16000}}],"watch_group":16000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":16,"duration":{"second":184,"nanosecond":94000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":10000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":10000,"duration":{"second":184,"nanosecond":94000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":54000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":54000,"duration":{"second":184,"nanosecond":94000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":83,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":83000}}],"watch_group":83000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":83,"duration":{"second":184,"nanosecond":94000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":32000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":32000,"duration":{"second":184,"nanosecond":94000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":53,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":53000}}],"watch_group":53000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":53,"duration":{"second":183,"nanosecond":589000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":15,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":15000}}],"watch_group":15000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":15,"duration":{"second":184,"nanosecond":94000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":2000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":2000,"duration":{"second":184,"nanosecond":94000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":82,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":82000}}],"watch_group":82000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":82,"duration":{"second":184,"nanosecond":94000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":52,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":52000}}],"watch_group":52000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":52,"duration":{"second":184,"nanosecond":94000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":14,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":14000}}],"watch_group":14000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":14,"duration":{"second":184,"nanosecond":94000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":53000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":53000,"duration":{"second":184,"nanosecond":94000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":12000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":12000,"duration":{"second":184,"nanosecond":94000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":23000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":23000,"duration":{"second":184,"nanosecond":94000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":94000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":94000,"duration":{"second":184,"nanosecond":94000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}}],"flow-node-inventory:snapshot-gathering-status-end":{"succeeded":true,"end":"2026-04-08T01:01:32.854Z"}},{"id":"openflow:2","flow-node-inventory:port-number":54944,"flow-node-inventory:table":[{"id":62,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":28,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":2,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":224,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":181,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":147,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":106,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":61,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":27,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":1,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":223,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":182,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":148,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":105,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":60,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":30,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":0,"flow":[{"id":"71","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.71/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":71}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":919000000}},"flags":""},{"id":"11","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.11/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":11}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":918000000}},"flags":""},{"id":"70","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.70/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":70}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":919000000}},"flags":""},{"id":"10","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.10/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":10}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":918000000}},"flags":""},{"id":"60","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.60/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":60}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":919000000}},"flags":""},{"id":"13","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.13/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":13}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":918000000}},"flags":""},{"id":"12","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.12/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":12}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":918000000}},"flags":""},{"id":"80","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.80/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":80}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":919000000}},"flags":""},{"id":"93","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.93/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":93}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":918000000}},"flags":""},{"id":"92","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.92/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":92}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":918000000}},"flags":""},{"id":"82","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.82/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":82}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":919000000}},"flags":""},{"id":"91","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.91/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":91}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":918000000}},"flags":""},{"id":"81","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.81/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":81}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":919000000}},"flags":""},{"id":"90","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.90/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":90}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":918000000}},"flags":""},{"id":"9","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.9/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":9}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":918000000}},"flags":""},{"id":"84","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.84/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":84}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":919000000}},"flags":""},{"id":"97","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.97/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":97}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":918000000}},"flags":""},{"id":"66","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.66/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":66}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":919000000}},"flags":""},{"id":"79","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.79/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":79}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":919000000}},"flags":""},{"id":"54","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.54/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":54}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":918000000}},"flags":""},{"id":"45","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.45/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":45}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":918000000}},"flags":""},{"id":"83","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.83/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":83}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":919000000}},"flags":""},{"id":"96","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.96/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":96}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":918000000}},"flags":""},{"id":"65","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.65/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":65}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":919000000}},"flags":""},{"id":"78","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.78/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":78}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":919000000}},"flags":""},{"id":"20","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.20/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":20}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":918000000}},"flags":""},{"id":"55","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.55/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":55}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":918000000}},"flags":""},{"id":"46","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.46/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":46}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":918000000}},"flags":""},{"id":"7","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.7/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":7}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":918000000}},"flags":""},{"id":"86","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.86/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":86}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":919000000}},"flags":""},{"id":"95","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.95/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":95}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":918000000}},"flags":""},{"id":"68","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.68/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":68}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":919000000}},"flags":""},{"id":"77","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.77/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":77}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":919000000}},"flags":""},{"id":"30","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.30/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":30}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":918000000}},"flags":""},{"id":"56","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.56/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":56}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":918000000}},"flags":""},{"id":"43","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.43/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":43}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":918000000}},"flags":""},{"id":"8","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.8/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":8}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":918000000}},"flags":""},{"id":"85","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.85/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":85}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":919000000}},"flags":""},{"id":"94","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.94/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":94}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":918000000}},"flags":""},{"id":"67","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.67/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":67}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":919000000}},"flags":""},{"id":"76","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.76/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":76}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":919000000}},"flags":""},{"id":"31","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.31/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":31}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":918000000}},"flags":""},{"id":"57","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.57/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":57}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":918000000}},"flags":""},{"id":"44","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.44/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":44}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":918000000}},"flags":""},{"id":"5","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.5/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":5}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":918000000}},"flags":""},{"id":"88","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.88/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":88}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":919000000}},"flags":""},{"id":"62","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.62/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":62}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":919000000}},"flags":""},{"id":"75","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.75/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":75}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":919000000}},"flags":""},{"id":"32","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.32/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":32}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":918000000}},"flags":""},{"id":"23","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.23/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":23}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":918000000}},"flags":""},{"id":"50","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.50/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":50}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":917000000}},"flags":""},{"id":"41","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.41/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":41}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":918000000}},"flags":""},{"id":"6","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.6/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":6}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":918000000}},"flags":""},{"id":"100","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.100/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":100}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":919000000}},"flags":""},{"id":"87","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.87/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":87}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":919000000}},"flags":""},{"id":"61","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.61/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":61}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":919000000}},"flags":""},{"id":"74","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.74/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":74}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":919000000}},"flags":""},{"id":"33","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.33/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":33}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":918000000}},"flags":""},{"id":"24","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.24/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":24}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":918000000}},"flags":""},{"id":"51","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.51/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":51}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":917000000}},"flags":""},{"id":"42","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.42/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":42}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":918000000}},"flags":""},{"id":"3","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.3/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":3}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":918000000}},"flags":""},{"id":"99","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.99/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":99}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":918000000}},"flags":""},{"id":"64","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.64/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":64}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":919000000}},"flags":""},{"id":"73","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.73/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":73}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":919000000}},"flags":""},{"id":"34","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.34/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":34}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":918000000}},"flags":""},{"id":"21","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.21/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":21}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":918000000}},"flags":""},{"id":"52","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.52/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":52}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":917000000}},"flags":""},{"id":"4","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.4/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":4}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":918000000}},"flags":""},{"id":"89","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.89/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":89}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":919000000}},"flags":""},{"id":"98","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.98/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":98}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":918000000}},"flags":""},{"id":"63","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.63/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":63}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":919000000}},"flags":""},{"id":"72","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.72/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":72}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":919000000}},"flags":""},{"id":"35","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.35/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":35}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":918000000}},"flags":""},{"id":"22","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.22/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":22}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":918000000}},"flags":""},{"id":"53","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.53/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":53}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":918000000}},"flags":""},{"id":"40","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.40/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":40}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":918000000}},"flags":""},{"id":"#UF$TABLE*0-2","table_id":0,"priority":0,"cookie_mask":"0","idle-timeout":0,"cookie":"10","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"output-action":{"max-length":65535,"output-node-connector":"CONTROLLER"}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"88","byte-count":"7270","duration":{"second":182,"nanosecond":797000000}},"flags":"SEND_FLOW_REM"},{"id":"37","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.37/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":37}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":918000000}},"flags":""},{"id":"28","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.28/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":28}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":918000000}},"flags":""},{"id":"36","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.36/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":36}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":918000000}},"flags":""},{"id":"27","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.27/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":27}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":918000000}},"flags":""},{"id":"39","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.39/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":39}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":918000000}},"flags":""},{"id":"26","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.26/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":26}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":918000000}},"flags":""},{"id":"38","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.38/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":38}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":918000000}},"flags":""},{"id":"25","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.25/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":25}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":918000000}},"flags":""},{"id":"69","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.69/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":69}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":919000000}},"flags":""},{"id":"59","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.59/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":59}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":918000000}},"flags":""},{"id":"58","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.58/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":58}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":918000000}},"flags":""},{"id":"49","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.49/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":49}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":918000000}},"flags":""},{"id":"48","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.48/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":48}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":918000000}},"flags":""},{"id":"29","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.29/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":29}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":918000000}},"flags":""},{"id":"47","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.47/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":47}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":918000000}},"flags":""},{"id":"18","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.18/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":18}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":919000000}},"flags":""},{"id":"19","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.19/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":19}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":919000000}},"flags":""},{"id":"14","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.14/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":14}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":919000000}},"flags":""},{"id":"15","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.15/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":15}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":919000000}},"flags":""},{"id":"1","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.1/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":1}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":2,"nanosecond":247000000}},"flags":""},{"id":"16","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.16/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":16}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":919000000}},"flags":""},{"id":"2","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.2/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":2}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":919000000}},"flags":""},{"id":"17","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.17/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":17}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":919000000}},"flags":""}],"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"110","active-flows":101,"packets-matched":"98"}},{"id":226,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":179,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":149,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":104,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":59,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":29,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":225,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":180,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":150,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":103,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":66,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":32,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":220,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":185,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":151,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":102,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":65,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":31,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":253,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":219,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":186,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":152,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":101,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":64,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":34,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":252,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":222,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":183,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":153,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":100,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":63,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":33,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":251,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":221,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":184,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":154,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":99,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":54,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":20,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":250,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":216,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":189,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":155,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":129,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":114,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":53,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":19,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":249,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":215,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":190,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":156,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":130,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":113,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":52,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":22,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":248,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":218,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":187,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":157,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":112,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":51,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":21,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":247,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":217,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":188,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":158,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":128,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":111,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":58,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":24,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":246,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":212,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":193,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":159,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":110,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":57,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":23,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":245,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":211,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":194,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":160,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":109,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":56,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":26,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":244,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":214,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":191,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":161,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":108,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":55,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":25,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":243,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":213,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":192,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":162,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":107,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":77,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":43,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":17,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":239,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":198,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":164,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":138,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":119,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":89,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":78,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":44,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":18,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":240,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":197,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":163,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":137,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":120,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":90,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":75,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":45,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":15,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":241,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":196,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":166,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":136,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":121,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":87,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":76,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":46,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":16,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":242,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":195,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":165,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":135,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":122,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":88,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":81,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":47,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":13,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":235,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":202,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":168,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":134,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":115,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":85,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":82,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":48,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":14,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":236,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":201,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":167,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":133,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":116,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":86,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":79,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":49,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":11,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":237,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":200,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":170,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":132,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":117,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":83,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":80,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":50,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":12,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":238,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":199,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":169,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":131,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":118,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":84,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":69,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":35,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":9,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":231,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":206,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":172,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":146,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":127,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":97,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":70,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":36,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":10,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":232,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":205,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":171,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":145,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":98,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":67,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":37,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":7,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":233,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":204,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":174,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":144,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":95,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":68,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":38,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":8,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":234,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":203,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":173,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":143,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":96,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":73,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":39,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":5,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":227,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":210,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":176,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":142,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":123,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":93,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":74,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":40,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":6,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":228,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":209,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":175,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":141,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":124,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":94,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":71,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":41,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":3,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":229,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":208,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":178,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":140,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":125,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":91,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":72,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":42,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":4,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":230,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":207,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":177,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":139,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":126,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":92,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}}],"opendaylight-group-statistics:group-features":{"max-groups":[4294967040],"group-types-supported":["opendaylight-group-types:group-all","opendaylight-group-types:group-ff","opendaylight-group-types:group-select","opendaylight-group-types:group-indirect"],"group-capabilities-supported":["opendaylight-group-types:chaining","opendaylight-group-types:select-weight","opendaylight-group-types:select-liveness"],"actions":[67076097]},"flow-node-inventory:manufacturer":"Nicira, Inc.","flow-node-inventory:description":"s2","flow-node-inventory:hardware":"Open vSwitch","flow-node-inventory:switch-features":{"max_tables":254,"capabilities":["flow-node-inventory:flow-feature-capability-table-stats","flow-node-inventory:flow-feature-capability-group-stats","flow-node-inventory:flow-feature-capability-queue-stats","flow-node-inventory:flow-feature-capability-flow-stats","flow-node-inventory:flow-feature-capability-port-stats"],"max_buffers":0},"flow-node-inventory:snapshot-gathering-status-start":{"begin":"2026-04-08T01:01:32.808Z"},"flow-node-inventory:software":"2.17.11","node-connector":[{"id":"openflow:2:3","flow-node-inventory:port-number":3,"flow-node-inventory:hardware-address":"da:7c:fc:7d:24:d4","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s2-eth3","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"55","received":"51"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":188,"nanosecond":123000000},"bytes":{"transmitted":"4624","received":"4272"},"receive-crc-error":"0"}},{"id":"openflow:2:LOCAL","flow-node-inventory:port-number":4294967294,"flow-node-inventory:hardware-address":"ee:be:cf:9b:06:44","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s2","flow-node-inventory:current-feature":"","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":0,"flow-node-inventory:state":{"live":false,"blocked":false,"link-down":true},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"PORT-DOWN","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"0","received":"0"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":188,"nanosecond":117000000},"bytes":{"transmitted":"0","received":"0"},"receive-crc-error":"0"}},{"id":"openflow:2:2","flow-node-inventory:port-number":2,"flow-node-inventory:hardware-address":"76:f5:91:ad:d8:c6","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s2-eth2","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"55","received":"51"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":188,"nanosecond":123000000},"bytes":{"transmitted":"4624","received":"4272"},"receive-crc-error":"0"}},{"id":"openflow:2:1","flow-node-inventory:port-number":1,"flow-node-inventory:hardware-address":"96:61:91:36:76:0b","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s2-eth1","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"57","received":"11"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":188,"nanosecond":122000000},"bytes":{"transmitted":"4800","received":"866"},"receive-crc-error":"0"}}],"flow-node-inventory:ip-address":"10.30.170.192","flow-node-inventory:serial-number":"None","flow-node-inventory:group":[{"group-id":56,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":56000}}],"watch_group":56000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":56,"duration":{"second":184,"nanosecond":78000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":22,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":22000}}],"watch_group":22000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":22,"duration":{"second":184,"nanosecond":78000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":99,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":99000}}],"watch_group":99000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":99,"duration":{"second":184,"nanosecond":78000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":34000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":34000,"duration":{"second":186,"nanosecond":771000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":89000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":89000,"duration":{"second":186,"nanosecond":771000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":60000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":60000,"duration":{"second":186,"nanosecond":771000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":91000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":91000,"duration":{"second":186,"nanosecond":771000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":57,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":57000}}],"watch_group":57000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":57,"duration":{"second":184,"nanosecond":78000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":23,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":23000}}],"watch_group":23000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":23,"duration":{"second":183,"nanosecond":581000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":14000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":14000,"duration":{"second":186,"nanosecond":771000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":98,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":98000}}],"watch_group":98000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":98,"duration":{"second":183,"nanosecond":581000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":56000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":56000,"duration":{"second":186,"nanosecond":771000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":85000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":85000,"duration":{"second":186,"nanosecond":771000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":54,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":54000}}],"watch_group":54000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":54,"duration":{"second":183,"nanosecond":581000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":24,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":24000}}],"watch_group":24000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":24,"duration":{"second":183,"nanosecond":581000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":36000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":36000,"duration":{"second":186,"nanosecond":771000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":87000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":87000,"duration":{"second":186,"nanosecond":771000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":59000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":59000,"duration":{"second":186,"nanosecond":771000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":25000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":25000,"duration":{"second":186,"nanosecond":771000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":43000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":43000,"duration":{"second":186,"nanosecond":771000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":55,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":55000}}],"watch_group":55000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":55,"duration":{"second":183,"nanosecond":581000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":25,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":25000}}],"watch_group":25000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":25,"duration":{"second":186,"nanosecond":587000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":100,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":100000}}],"watch_group":100000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":100,"duration":{"second":183,"nanosecond":581000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":58000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":58000,"duration":{"second":186,"nanosecond":587000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":86000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":86000,"duration":{"second":186,"nanosecond":587000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":60,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":60000}}],"watch_group":60000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":60,"duration":{"second":186,"nanosecond":586000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":26,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":26000}}],"watch_group":26000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":26,"duration":{"second":183,"nanosecond":581000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":41000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":41000,"duration":{"second":186,"nanosecond":586000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":95,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":95000}}],"watch_group":95000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":95,"duration":{"second":183,"nanosecond":581000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":82000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":82000,"duration":{"second":186,"nanosecond":586000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":61,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":61000}}],"watch_group":61000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":61,"duration":{"second":183,"nanosecond":581000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":27,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":27000}}],"watch_group":27000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":27,"duration":{"second":183,"nanosecond":581000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":94,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":94000}}],"watch_group":94000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":94,"duration":{"second":183,"nanosecond":581000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":98000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":98000,"duration":{"second":186,"nanosecond":586000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":27000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":27000,"duration":{"second":186,"nanosecond":586000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":57000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":57000,"duration":{"second":186,"nanosecond":586000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":16000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":16000,"duration":{"second":186,"nanosecond":586000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":83000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":83000,"duration":{"second":186,"nanosecond":586000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":58,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":58000}}],"watch_group":58000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":58,"duration":{"second":186,"nanosecond":86000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":28,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":28000}}],"watch_group":28000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":28,"duration":{"second":183,"nanosecond":581000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":97,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":97000}}],"watch_group":97000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":97,"duration":{"second":183,"nanosecond":581000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":100000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":100000,"duration":{"second":186,"nanosecond":86000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":59,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":59000}}],"watch_group":59000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":59,"duration":{"second":186,"nanosecond":86000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":38000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":38000,"duration":{"second":186,"nanosecond":86000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":29,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":29000}}],"watch_group":29000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":29,"duration":{"second":183,"nanosecond":581000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":96,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":96000}}],"watch_group":96000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":96,"duration":{"second":183,"nanosecond":581000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":84000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":84000,"duration":{"second":186,"nanosecond":86000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":64,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":64000}}],"watch_group":64000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":64,"duration":{"second":183,"nanosecond":581000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":30,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":30000}}],"watch_group":30000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":30,"duration":{"second":183,"nanosecond":581000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":4,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":4000}}],"watch_group":4000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":4,"duration":{"second":183,"nanosecond":577000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":91,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":91000}}],"watch_group":91000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":91,"duration":{"second":186,"nanosecond":86000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":7000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":7000,"duration":{"second":186,"nanosecond":86000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":29000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":29000,"duration":{"second":186,"nanosecond":85000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":65,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":65000}}],"watch_group":65000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":65,"duration":{"second":183,"nanosecond":577000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":31,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":31000}}],"watch_group":31000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":31,"duration":{"second":183,"nanosecond":577000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":5,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":5000}}],"watch_group":5000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":5,"duration":{"second":183,"nanosecond":577000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":90,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":90000}}],"watch_group":90000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":90,"duration":{"second":183,"nanosecond":577000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":18000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":18000,"duration":{"second":186,"nanosecond":85000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":62,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":62000}}],"watch_group":62000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":62,"duration":{"second":183,"nanosecond":577000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":65000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":65000,"duration":{"second":186,"nanosecond":85000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":32,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":32000}}],"watch_group":32000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":32,"duration":{"second":183,"nanosecond":577000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":2,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":2000}}],"watch_group":2000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":2,"duration":{"second":183,"nanosecond":577000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":93,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":93000}}],"watch_group":93000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":93,"duration":{"second":183,"nanosecond":577000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":64000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":64000,"duration":{"second":186,"nanosecond":84000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":63,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":63000}}],"watch_group":63000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":63,"duration":{"second":183,"nanosecond":577000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":33,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":33000}}],"watch_group":33000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":33,"duration":{"second":183,"nanosecond":577000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":3,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":3000}}],"watch_group":3000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":3,"duration":{"second":183,"nanosecond":577000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":80000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":80000,"duration":{"second":186,"nanosecond":84000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":9000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":9000,"duration":{"second":186,"nanosecond":84000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":92,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":92000}}],"watch_group":92000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":92,"duration":{"second":183,"nanosecond":577000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":5000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":5000,"duration":{"second":186,"nanosecond":80000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":20000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":20000,"duration":{"second":186,"nanosecond":80000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":81000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":81000,"duration":{"second":186,"nanosecond":80000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":97000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":97000,"duration":{"second":186,"nanosecond":80000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":31000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":31000,"duration":{"second":186,"nanosecond":80000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":68,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":68000}}],"watch_group":68000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":68,"duration":{"second":183,"nanosecond":577000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":11000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":11000,"duration":{"second":186,"nanosecond":80000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":34,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":34000}}],"watch_group":34000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":34,"duration":{"second":186,"nanosecond":80000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":78000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":78000,"duration":{"second":186,"nanosecond":80000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":87,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":87000}}],"watch_group":87000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":87,"duration":{"second":186,"nanosecond":80000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":93000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":93000,"duration":{"second":186,"nanosecond":80000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":63000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":63000,"duration":{"second":186,"nanosecond":80000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":69,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":69000}}],"watch_group":69000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":69,"duration":{"second":183,"nanosecond":577000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":35,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":35000}}],"watch_group":35000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":35,"duration":{"second":183,"nanosecond":577000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":1,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":1000}}],"watch_group":1000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":1,"duration":{"second":2,"nanosecond":452000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":33000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":33000,"duration":{"second":186,"nanosecond":80000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":79000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":79000,"duration":{"second":186,"nanosecond":80000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":86,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":86000}}],"watch_group":86000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":86,"duration":{"second":186,"nanosecond":80000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":62000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":62000,"duration":{"second":186,"nanosecond":80000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":66,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":66000}}],"watch_group":66000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":66,"duration":{"second":183,"nanosecond":577000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":77000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":77000,"duration":{"second":186,"nanosecond":80000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":36,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":36000}}],"watch_group":36000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":36,"duration":{"second":186,"nanosecond":80000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":89,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":89000}}],"watch_group":89000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":89,"duration":{"second":186,"nanosecond":80000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":22000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":22000,"duration":{"second":186,"nanosecond":78000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":95000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":95000,"duration":{"second":186,"nanosecond":78000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":67,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":67000}}],"watch_group":67000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":67,"duration":{"second":183,"nanosecond":577000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":37,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":37000}}],"watch_group":37000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":37,"duration":{"second":183,"nanosecond":577000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":1000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":1000,"duration":{"second":2,"nanosecond":663000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":88,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":88000}}],"watch_group":88000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":88,"duration":{"second":183,"nanosecond":575000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":61000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":61000,"duration":{"second":186,"nanosecond":76000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":3000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":3000,"duration":{"second":186,"nanosecond":76000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":73,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":73000}}],"watch_group":73000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":73,"duration":{"second":183,"nanosecond":575000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":39,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":39000}}],"watch_group":39000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":39,"duration":{"second":183,"nanosecond":575000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":13,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":13000}}],"watch_group":13000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":13,"duration":{"second":183,"nanosecond":575000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":74000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":74000,"duration":{"second":186,"nanosecond":76000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":15000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":15000,"duration":{"second":186,"nanosecond":76000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":44000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":44000,"duration":{"second":186,"nanosecond":76000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":45000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":45000,"duration":{"second":186,"nanosecond":76000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":68000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":68000,"duration":{"second":186,"nanosecond":76000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":72,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":72000}}],"watch_group":72000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":72,"duration":{"second":183,"nanosecond":575000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":38,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":38000}}],"watch_group":38000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":38,"duration":{"second":185,"nanosecond":580000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":75000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":75000,"duration":{"second":185,"nanosecond":580000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":12,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":12000}}],"watch_group":12000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":12,"duration":{"second":183,"nanosecond":575000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":35000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":35000,"duration":{"second":185,"nanosecond":580000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":24000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":24000,"duration":{"second":185,"nanosecond":580000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":90000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":90000,"duration":{"second":185,"nanosecond":580000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":71,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":71000}}],"watch_group":71000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":71,"duration":{"second":183,"nanosecond":575000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":41,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":41000}}],"watch_group":41000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":41,"duration":{"second":185,"nanosecond":580000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":42000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":42000,"duration":{"second":185,"nanosecond":580000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":11,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":11000}}],"watch_group":11000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":11,"duration":{"second":185,"nanosecond":580000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":92000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":92000,"duration":{"second":185,"nanosecond":580000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":46000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":46000,"duration":{"second":185,"nanosecond":580000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":67000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":67000,"duration":{"second":185,"nanosecond":580000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":70,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":70000}}],"watch_group":70000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":70,"duration":{"second":183,"nanosecond":575000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":76000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":76000,"duration":{"second":185,"nanosecond":580000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":40,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":40000}}],"watch_group":40000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":40,"duration":{"second":183,"nanosecond":575000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":13000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":13000,"duration":{"second":185,"nanosecond":580000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":10,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":10000}}],"watch_group":10000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":10,"duration":{"second":183,"nanosecond":575000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":88000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":88000,"duration":{"second":185,"nanosecond":580000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":47000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":47000,"duration":{"second":185,"nanosecond":580000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":66000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":66000,"duration":{"second":185,"nanosecond":580000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":77,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":77000}}],"watch_group":77000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":77,"duration":{"second":185,"nanosecond":580000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":43,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":43000}}],"watch_group":43000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":43,"duration":{"second":185,"nanosecond":580000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":9,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":9000}}],"watch_group":9000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":9,"duration":{"second":185,"nanosecond":580000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":99000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":99000,"duration":{"second":185,"nanosecond":580000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":26000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":26000,"duration":{"second":185,"nanosecond":580000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":70000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":70000,"duration":{"second":185,"nanosecond":580000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":76,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":76000}}],"watch_group":76000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":76,"duration":{"second":185,"nanosecond":76000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":42,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":42000}}],"watch_group":42000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":42,"duration":{"second":185,"nanosecond":76000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":8,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":8000}}],"watch_group":8000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":8,"duration":{"second":183,"nanosecond":575000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":37000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":37000,"duration":{"second":185,"nanosecond":76000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":49000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":49000,"duration":{"second":185,"nanosecond":76000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":71000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":71000,"duration":{"second":185,"nanosecond":76000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":48000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":48000,"duration":{"second":185,"nanosecond":76000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":75,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":75000}}],"watch_group":75000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":75,"duration":{"second":185,"nanosecond":76000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":45,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":45000}}],"watch_group":45000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":45,"duration":{"second":185,"nanosecond":76000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":7,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":7000}}],"watch_group":7000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":7,"duration":{"second":185,"nanosecond":76000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":39000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":39000,"duration":{"second":185,"nanosecond":76000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":73000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":73000,"duration":{"second":185,"nanosecond":76000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":69000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":69000,"duration":{"second":185,"nanosecond":76000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":17000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":17000,"duration":{"second":185,"nanosecond":76000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":28000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":28000,"duration":{"second":185,"nanosecond":76000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":74,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":74000}}],"watch_group":74000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":74,"duration":{"second":185,"nanosecond":76000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":44,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":44000}}],"watch_group":44000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":44,"duration":{"second":185,"nanosecond":76000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":6,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":6000}}],"watch_group":6000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":6,"duration":{"second":183,"nanosecond":575000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":40000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":40000,"duration":{"second":185,"nanosecond":76000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":81,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":81000}}],"watch_group":81000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":81,"duration":{"second":185,"nanosecond":76000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":47,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":47000}}],"watch_group":47000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":47,"duration":{"second":185,"nanosecond":76000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":21,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":21000}}],"watch_group":21000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":21,"duration":{"second":183,"nanosecond":575000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":8000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":8000,"duration":{"second":185,"nanosecond":76000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":19000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":19000,"duration":{"second":185,"nanosecond":76000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":96000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":96000,"duration":{"second":185,"nanosecond":76000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":80,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":80000}}],"watch_group":80000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":80,"duration":{"second":185,"nanosecond":76000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":46,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":46000}}],"watch_group":46000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":46,"duration":{"second":185,"nanosecond":76000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":20,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":20000}}],"watch_group":20000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":20,"duration":{"second":185,"nanosecond":76000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":52000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":52000,"duration":{"second":185,"nanosecond":76000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":6000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":6000,"duration":{"second":185,"nanosecond":76000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":79,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":79000}}],"watch_group":79000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":79,"duration":{"second":185,"nanosecond":76000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":49,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":49000}}],"watch_group":49000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":49,"duration":{"second":184,"nanosecond":585000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":19,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":19000}}],"watch_group":19000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":19,"duration":{"second":184,"nanosecond":585000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":50000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":50000,"duration":{"second":184,"nanosecond":584000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":72000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":72000,"duration":{"second":184,"nanosecond":584000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":30000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":30000,"duration":{"second":184,"nanosecond":584000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":78,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":78000}}],"watch_group":78000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":78,"duration":{"second":184,"nanosecond":583000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":48,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":48000}}],"watch_group":48000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":48,"duration":{"second":184,"nanosecond":582000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":18,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":18000}}],"watch_group":18000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":18,"duration":{"second":184,"nanosecond":582000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":51000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":51000,"duration":{"second":184,"nanosecond":581000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":85,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":85000}}],"watch_group":85000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":85,"duration":{"second":184,"nanosecond":581000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":55000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":55000,"duration":{"second":184,"nanosecond":581000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":51,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":51000}}],"watch_group":51000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":51,"duration":{"second":184,"nanosecond":84000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":17,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":17000}}],"watch_group":17000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":17,"duration":{"second":184,"nanosecond":84000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":21000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":21000,"duration":{"second":184,"nanosecond":84000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":4000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":4000,"duration":{"second":184,"nanosecond":84000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":84,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":84000}}],"watch_group":84000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":84,"duration":{"second":184,"nanosecond":84000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":50,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":50000}}],"watch_group":50000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":50,"duration":{"second":184,"nanosecond":83000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":16,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":16000}}],"watch_group":16000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":16,"duration":{"second":184,"nanosecond":83000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":10000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":10000,"duration":{"second":184,"nanosecond":83000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":54000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":54000,"duration":{"second":184,"nanosecond":78000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":83,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":83000}}],"watch_group":83000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":83,"duration":{"second":184,"nanosecond":78000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":32000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":32000,"duration":{"second":184,"nanosecond":78000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":53,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":53000}}],"watch_group":53000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":53,"duration":{"second":183,"nanosecond":575000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":15,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":15000}}],"watch_group":15000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":15,"duration":{"second":184,"nanosecond":78000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":2000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":2000,"duration":{"second":184,"nanosecond":78000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":82,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":82000}}],"watch_group":82000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":82,"duration":{"second":184,"nanosecond":78000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":52,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":52000}}],"watch_group":52000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":52,"duration":{"second":184,"nanosecond":78000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":14,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":14000}}],"watch_group":14000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":14,"duration":{"second":184,"nanosecond":78000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":53000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":53000,"duration":{"second":184,"nanosecond":78000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":12000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":12000,"duration":{"second":184,"nanosecond":78000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":23000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":23000,"duration":{"second":184,"nanosecond":78000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":94000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":94000,"duration":{"second":184,"nanosecond":78000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}}],"flow-node-inventory:snapshot-gathering-status-end":{"succeeded":true,"end":"2026-04-08T01:01:32.842Z"}}]}}</msg>
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:33.766765" elapsed="0.011121"/>
</kw>
<kw name="Get Count" owner="BuiltIn">
<msg time="2026-04-08T01:01:33.782070" level="INFO">Item found from container 303 times.</msg>
<msg time="2026-04-08T01:01:33.782153" level="INFO">${count} = 303</msg>
<var>${count}</var>
<arg>${resp.text}</arg>
<arg>"priority"</arg>
<doc>Returns and logs how many times ``item`` is found from ``container``.</doc>
<status status="PASS" start="2026-04-08T01:01:33.778153" elapsed="0.004041"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${count}</arg>
<arg>${flows}</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="PASS" start="2026-04-08T01:01:33.782386" elapsed="0.000316"/>
</kw>
<arg>${all_flows}</arg>
<doc>Check number of flows in the inventory.</doc>
<status status="PASS" start="2026-04-08T01:01:33.695890" elapsed="0.086885"/>
</kw>
<arg>30s</arg>
<arg>1s</arg>
<arg>ClusterOpenFlow.Check Number Of Flows On Member</arg>
<arg>${all_flows}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-08T01:01:31.557313" elapsed="2.225512"/>
</kw>
<doc>Check Flows in Operational DS.</doc>
<status status="PASS" start="2026-04-08T01:01:31.222565" elapsed="2.560383"/>
</test>
<test id="s1-s4-t44" name="Check Groups In Operational DS After Mininet Reconnects" line="309">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-08T01:01:33.786219" elapsed="0.000206"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-08T01:01:33.785938" elapsed="0.000541"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:01:33.787519" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:01:33.787395" elapsed="0.000173"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:33.787372" elapsed="0.000221"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:01:33.792758" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:01:33.792643" elapsed="0.000161"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:33.792624" elapsed="0.000205"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:01:33.793907" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:01:33.793526" elapsed="0.000408"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:01:33.794424" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:01:33.794098" elapsed="0.000352"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T01:01:33.794494" elapsed="0.000035"/>
</return>
<msg time="2026-04-08T01:01:33.794653" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T01:01:33.793113" elapsed="0.001564"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:01:33.800110" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:01:33.800002" elapsed="0.000167"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:33.799984" elapsed="0.000209"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:01:33.801358" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:01:33.801247" elapsed="0.000157"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:33.801228" elapsed="0.000198"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:01:33.801881" level="INFO">${karaf_connection_index} = 476</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:01:33.801576" elapsed="0.000331"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:01:33.802353" level="INFO">${current_connection_index} = 495</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:01:33.802072" elapsed="0.000307"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:01:33.835552" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:01:33.802880" elapsed="0.032822"/>
</kw>
<msg time="2026-04-08T01:01:33.835872" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T01:01:33.835918" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:01:33.802542" elapsed="0.033413"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T01:01:33.896348" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "G "r "o "u "p "s "[C "I "n "[C "O "p "e "r "a "t "i "o "n "a "l "[C "D "S "[C "A "f "t "e "r "[C "M "i "n "i "n "e "t "[C "R "e "c "o "n "n "[78Ce "[A[78Cc
 "t "s "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T01:01:33.836595" elapsed="0.060035"/>
</kw>
<msg time="2026-04-08T01:01:33.897065" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T01:01:33.897115" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "G "r "o "u "p "s...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:01:33.836193" elapsed="0.061084"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:33.897814" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:01:33.897428" elapsed="0.000451"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:33.897381" elapsed="0.000529"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:33.898520" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "G "r "o "u "p "s "[C "I "n "[C "O "p "e "r "a "t "i "o "n "a "l "[C "D "S "[C "A "f "t "e "r "[C "M "i "n "i "n "e "t "[C "R "e "c "o "n "n "[78Ce "[A[78Cc
 "t "s "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:33.898064" elapsed="0.000544"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:33.898900" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:01:33.898677" elapsed="0.000278"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:33.898658" elapsed="0.000321"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T01:01:33.899018" elapsed="0.000044"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:01:33.901724" elapsed="0.000402"/>
</kw>
<msg time="2026-04-08T01:01:33.902205" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:01:33.900704" elapsed="0.001650"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:33.902638" elapsed="0.000077"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:33.903116" elapsed="0.000097"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:01:33.900025" elapsed="0.003301"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T01:01:33.899396" elapsed="0.003995"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T01:01:33.800923" elapsed="0.102566"/>
</kw>
<msg time="2026-04-08T01:01:33.903614" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:01:33.903659" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "G "r "o "u "p "s...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:01:33.800347" elapsed="0.103349"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T01:01:33.903883" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-08T01:01:33.903775" elapsed="0.000167"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:33.903756" elapsed="0.000210"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:33.904393" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:33.904740" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T01:01:33.904810" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T01:01:33.799654" elapsed="0.105261"/>
</kw>
<msg time="2026-04-08T01:01:33.905009" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:01:33.905053" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "G "r "o "u "p "s...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:01:33.795052" elapsed="0.110038"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:33.905439" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:01:33.905184" elapsed="0.000307"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:33.905151" elapsed="0.000364"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T01:01:33.794907" elapsed="0.110631"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:01:33.911038" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:01:33.910932" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:33.910913" elapsed="0.000191"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:01:33.912335" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:01:33.912224" elapsed="0.000156"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:33.912205" elapsed="0.000197"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:01:33.912854" level="INFO">${karaf_connection_index} = 478</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:01:33.912551" elapsed="0.000330"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:01:33.913311" level="INFO">${current_connection_index} = 495</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:01:33.913043" elapsed="0.000294"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:01:33.944178" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:01:33.913838" elapsed="0.030448"/>
</kw>
<msg time="2026-04-08T01:01:33.944447" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T01:01:33.944493" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:01:33.913500" elapsed="0.031030"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T01:01:33.996458" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "G "r "o "u "p "s "[C "I "n "[C "O "p "e "r "a "t "i "o "n "a "l "[C "D "S "[C "A "f "t "e "r "[C "M "i "n "i "n "e "t "[C "R "e "c "o "n "n "[78Ce "[A[78Cc
 "t "s "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T01:01:33.945051" elapsed="0.051528"/>
</kw>
<msg time="2026-04-08T01:01:33.996739" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T01:01:33.996785" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "G "r "o "u "p "s...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:01:33.944703" elapsed="0.052119"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:33.997132" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:01:33.996903" elapsed="0.000309"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:33.996882" elapsed="0.000355"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:33.997683" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "G "r "o "u "p "s "[C "I "n "[C "O "p "e "r "a "t "i "o "n "a "l "[C "D "S "[C "A "f "t "e "r "[C "M "i "n "i "n "e "t "[C "R "e "c "o "n "n "[78Ce "[A[78Cc
 "t "s "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:33.997384" elapsed="0.000386"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:33.998061" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:01:33.997836" elapsed="0.000279"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:33.997818" elapsed="0.000320"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T01:01:33.998187" elapsed="0.000029"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:01:34.000671" elapsed="0.000188"/>
</kw>
<msg time="2026-04-08T01:01:34.000923" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:01:33.999636" elapsed="0.001415"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:34.001346" elapsed="0.000076"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:34.001680" elapsed="0.002329"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:01:33.998992" elapsed="0.005134"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T01:01:33.998459" elapsed="0.005762"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T01:01:33.911899" elapsed="0.092426"/>
</kw>
<msg time="2026-04-08T01:01:34.004416" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:01:34.004460" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "G "r "o "u "p "s...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:01:33.911273" elapsed="0.093224"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T01:01:34.004682" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-08T01:01:34.004575" elapsed="0.000167"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:34.004556" elapsed="0.000253"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 2,
close the previous connection. In any case create a new connection
to karaf console for 2, set correct prompt set and login to karaf console.
Store connection index for 2 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:34.005217" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:34.005549" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T01:01:34.005619" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T01:01:33.910585" elapsed="0.095145"/>
</kw>
<msg time="2026-04-08T01:01:34.005844" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:01:34.005893" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "G "r "o "u "p "s...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:01:33.905821" elapsed="0.100109"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:34.006271" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:01:34.006005" elapsed="0.000320"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:34.005988" elapsed="0.000360"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T01:01:33.905675" elapsed="0.100696"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:01:34.011956" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:01:34.011850" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:34.011831" elapsed="0.000192"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:01:34.013183" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:01:34.013056" elapsed="0.000175"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:34.013038" elapsed="0.000216"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:01:34.013693" level="INFO">${karaf_connection_index} = 480</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:01:34.013401" elapsed="0.000319"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:01:34.014128" level="INFO">${current_connection_index} = 495</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:01:34.013881" elapsed="0.000288"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:01:34.045505" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:01:34.014668" elapsed="0.031012"/>
</kw>
<msg time="2026-04-08T01:01:34.045928" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T01:01:34.045996" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:01:34.014333" elapsed="0.031723"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T01:01:34.106070" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "G "r "o "u "p "s "[C "I "n "[C "O "p "e "r "a "t "i "o "n "a "l "[C "D "S "[C "A "f "t "e "r "[C "M "i "n "i "n "e "t "[C "R "e "c "o "n "n "[78Ce "[A[78Cc
 "t "s "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T01:01:34.046931" elapsed="0.059576"/>
</kw>
<msg time="2026-04-08T01:01:34.106965" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T01:01:34.107081" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "G "r "o "u "p "s...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:01:34.046375" elapsed="0.060840"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:34.108014" elapsed="0.000035"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:01:34.107496" elapsed="0.000798"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:34.107430" elapsed="0.000903"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:34.109058" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "G "r "o "u "p "s "[C "I "n "[C "O "p "e "r "a "t "i "o "n "a "l "[C "D "S "[C "A "f "t "e "r "[C "M "i "n "i "n "e "t "[C "R "e "c "o "n "n "[78Ce "[A[78Cc
 "t "s "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:34.108541" elapsed="0.000658"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:34.109607" elapsed="0.000029"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:01:34.109296" elapsed="0.000485"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:34.109270" elapsed="0.000546"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T01:01:34.109868" elapsed="0.000049"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:01:34.113571" elapsed="0.000262"/>
</kw>
<msg time="2026-04-08T01:01:34.113918" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:01:34.112106" elapsed="0.001994"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:34.114506" elapsed="0.000104"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:34.114967" elapsed="0.000101"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:01:34.111196" elapsed="0.004057"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T01:01:34.110338" elapsed="0.005020"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T01:01:34.012757" elapsed="0.102741"/>
</kw>
<msg time="2026-04-08T01:01:34.115630" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:01:34.115691" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "G "r "o "u "p "s...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:01:34.012200" elapsed="0.103544"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T01:01:34.116011" elapsed="0.000036"/>
</return>
<status status="PASS" start="2026-04-08T01:01:34.115852" elapsed="0.000241"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:34.115826" elapsed="0.000301"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 3,
close the previous connection. In any case create a new connection
to karaf console for 3, set correct prompt set and login to karaf console.
Store connection index for 3 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:34.117001" elapsed="0.000036"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:34.117501" elapsed="0.000035"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T01:01:34.117601" elapsed="0.000022"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T01:01:34.011507" elapsed="0.106243"/>
</kw>
<msg time="2026-04-08T01:01:34.117881" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:01:34.117942" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "G "r "o "u "p "s...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:01:34.006635" elapsed="0.111359"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:34.118626" elapsed="0.000029"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:01:34.118098" elapsed="0.000604"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:34.118075" elapsed="0.000659"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T01:01:34.006494" elapsed="0.112271"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-08T01:01:33.794733" elapsed="0.324066"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-08T01:01:33.792262" elapsed="0.326595"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-08T01:01:33.787079" elapsed="0.331837"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:01:33.786636" elapsed="0.332326"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-08T01:01:33.783827" elapsed="0.335188"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Check Number Of Groups On Member" owner="ClusterOpenFlow">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:01:34.120811" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:01:34.120513" elapsed="0.000324"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T01:01:34.120882" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T01:01:34.121029" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T01:01:34.120147" elapsed="0.000907"/>
</kw>
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T01:01:34.165495" level="INFO">GET Request : url=http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01s3bfo0y24i1es90l47mavglv0.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T01:01:34.166989" level="INFO">GET Response : url=http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Transfer-Encoding': 'chunked'} 
 body={"opendaylight-inventory:nodes":{"node":[{"id":"openflow:3","flow-node-inventory:port-number":54950,"flow-node-inventory:table":[{"id":62,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":28,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":2,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":224,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":181,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":147,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":106,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":61,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":27,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":1,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":223,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":182,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":148,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":105,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":60,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":30,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":0,"flow":[{"id":"71","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.71/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":71}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":922000000}},"flags":""},{"id":"11","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.11/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":11}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":922000000}},"flags":""},{"id":"70","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.70/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":70}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":922000000}},"flags":""},{"id":"10","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.10/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":10}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":922000000}},"flags":""},{"id":"60","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.60/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":60}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":922000000}},"flags":""},{"id":"13","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.13/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":13}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":922000000}},"flags":""},{"id":"12","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.12/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":12}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":922000000}},"flags":""},{"id":"80","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.80/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":80}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":922000000}},"flags":""},{"id":"93","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.93/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":93}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":922000000}},"flags":""},{"id":"92","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.92/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":92}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":922000000}},"flags":""},{"id":"82","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.82/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":82}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":922000000}},"flags":""},{"id":"91","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.91/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":91}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":922000000}},"flags":""},{"id":"81","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.81/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":81}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":922000000}},"flags":""},{"id":"90","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.90/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":90}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":922000000}},"flags":""},{"id":"9","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.9/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":9}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":921000000}},"flags":""},{"id":"84","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.84/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":84}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":922000000}},"flags":""},{"id":"97","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.97/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":97}}]}}]},"hard-timeout":0,"opendaylight-flo... (set the log level to DEBUG or TRACE to see the full content) 
 </msg>
<msg time="2026-04-08T01:01:34.167968" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${RFC8040_OPERATIONAL_NODES_API}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T01:01:34.121223" elapsed="0.046809"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:34.175712" level="INFO">{"opendaylight-inventory:nodes":{"node":[{"id":"openflow:3","flow-node-inventory:port-number":54950,"flow-node-inventory:table":[{"id":62,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":28,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":2,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":224,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":181,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":147,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":106,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":61,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":27,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":1,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":223,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":182,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":148,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":105,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":60,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":30,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":0,"flow":[{"id":"71","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.71/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":71}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":922000000}},"flags":""},{"id":"11","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.11/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":11}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":922000000}},"flags":""},{"id":"70","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.70/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":70}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":922000000}},"flags":""},{"id":"10","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.10/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":10}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":922000000}},"flags":""},{"id":"60","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.60/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":60}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":922000000}},"flags":""},{"id":"13","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.13/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":13}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":922000000}},"flags":""},{"id":"12","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.12/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":12}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":922000000}},"flags":""},{"id":"80","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.80/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":80}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":922000000}},"flags":""},{"id":"93","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.93/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":93}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":922000000}},"flags":""},{"id":"92","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.92/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":92}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":922000000}},"flags":""},{"id":"82","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.82/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":82}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":922000000}},"flags":""},{"id":"91","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.91/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":91}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":922000000}},"flags":""},{"id":"81","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.81/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":81}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":922000000}},"flags":""},{"id":"90","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.90/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":90}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":922000000}},"flags":""},{"id":"9","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.9/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":9}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":921000000}},"flags":""},{"id":"84","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.84/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":84}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":922000000}},"flags":""},{"id":"97","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.97/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":97}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":922000000}},"flags":""},{"id":"66","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.66/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":66}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":922000000}},"flags":""},{"id":"79","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.79/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":79}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":922000000}},"flags":""},{"id":"54","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.54/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":54}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":921000000}},"flags":""},{"id":"45","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.45/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":45}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":921000000}},"flags":""},{"id":"83","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.83/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":83}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":922000000}},"flags":""},{"id":"96","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.96/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":96}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":921000000}},"flags":""},{"id":"65","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.65/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":65}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":922000000}},"flags":""},{"id":"78","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.78/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":78}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":922000000}},"flags":""},{"id":"20","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.20/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":20}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":921000000}},"flags":""},{"id":"55","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.55/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":55}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":921000000}},"flags":""},{"id":"46","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.46/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":46}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":921000000}},"flags":""},{"id":"7","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.7/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":7}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":921000000}},"flags":""},{"id":"86","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.86/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":86}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":922000000}},"flags":""},{"id":"95","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.95/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":95}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":921000000}},"flags":""},{"id":"68","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.68/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":68}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":922000000}},"flags":""},{"id":"77","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.77/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":77}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":922000000}},"flags":""},{"id":"30","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.30/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":30}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":921000000}},"flags":""},{"id":"56","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.56/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":56}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":921000000}},"flags":""},{"id":"43","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.43/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":43}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":921000000}},"flags":""},{"id":"8","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.8/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":8}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":921000000}},"flags":""},{"id":"85","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.85/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":85}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":922000000}},"flags":""},{"id":"94","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.94/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":94}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":921000000}},"flags":""},{"id":"67","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.67/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":67}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":922000000}},"flags":""},{"id":"76","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.76/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":76}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":922000000}},"flags":""},{"id":"31","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.31/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":31}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":921000000}},"flags":""},{"id":"57","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.57/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":57}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":921000000}},"flags":""},{"id":"44","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.44/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":44}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":921000000}},"flags":""},{"id":"5","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.5/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":5}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":921000000}},"flags":""},{"id":"88","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.88/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":88}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":922000000}},"flags":""},{"id":"62","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.62/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":62}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":922000000}},"flags":""},{"id":"75","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.75/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":75}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":922000000}},"flags":""},{"id":"32","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.32/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":32}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":921000000}},"flags":""},{"id":"23","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.23/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":23}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":921000000}},"flags":""},{"id":"50","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.50/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":50}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":918000000}},"flags":""},{"id":"41","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.41/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":41}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":921000000}},"flags":""},{"id":"6","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.6/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":6}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":921000000}},"flags":""},{"id":"100","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.100/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":100}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":922000000}},"flags":""},{"id":"87","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.87/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":87}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":922000000}},"flags":""},{"id":"61","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.61/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":61}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":922000000}},"flags":""},{"id":"74","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.74/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":74}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":922000000}},"flags":""},{"id":"33","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.33/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":33}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":921000000}},"flags":""},{"id":"24","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.24/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":24}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":921000000}},"flags":""},{"id":"51","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.51/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":51}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":918000000}},"flags":""},{"id":"42","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.42/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":42}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":921000000}},"flags":""},{"id":"3","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.3/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":3}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":921000000}},"flags":""},{"id":"99","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.99/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":99}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":922000000}},"flags":""},{"id":"64","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.64/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":64}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":922000000}},"flags":""},{"id":"73","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.73/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":73}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":922000000}},"flags":""},{"id":"34","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.34/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":34}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":921000000}},"flags":""},{"id":"21","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.21/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":21}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":921000000}},"flags":""},{"id":"52","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.52/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":52}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":921000000}},"flags":""},{"id":"#UF$TABLE*0-3","table_id":0,"priority":0,"cookie_mask":"0","idle-timeout":0,"cookie":"10","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"output-action":{"max-length":65535,"output-node-connector":"CONTROLLER"}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"46","byte-count":"3775","duration":{"second":182,"nanosecond":793000000}},"flags":"SEND_FLOW_REM"},{"id":"4","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.4/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":4}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":921000000}},"flags":""},{"id":"89","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.89/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":89}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":922000000}},"flags":""},{"id":"98","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.98/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":98}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":922000000}},"flags":""},{"id":"63","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.63/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":63}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":922000000}},"flags":""},{"id":"72","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.72/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":72}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":922000000}},"flags":""},{"id":"35","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.35/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":35}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":921000000}},"flags":""},{"id":"22","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.22/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":22}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":921000000}},"flags":""},{"id":"53","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.53/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":53}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":921000000}},"flags":""},{"id":"40","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.40/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":40}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":921000000}},"flags":""},{"id":"37","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.37/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":37}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":921000000}},"flags":""},{"id":"28","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.28/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":28}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":921000000}},"flags":""},{"id":"36","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.36/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":36}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":921000000}},"flags":""},{"id":"27","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.27/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":27}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":921000000}},"flags":""},{"id":"39","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.39/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":39}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":921000000}},"flags":""},{"id":"26","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.26/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":26}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":921000000}},"flags":""},{"id":"38","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.38/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":38}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":921000000}},"flags":""},{"id":"25","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.25/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":25}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":921000000}},"flags":""},{"id":"69","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.69/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":69}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":922000000}},"flags":""},{"id":"59","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.59/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":59}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":921000000}},"flags":""},{"id":"58","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.58/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":58}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":921000000}},"flags":""},{"id":"49","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.49/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":49}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":921000000}},"flags":""},{"id":"48","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.48/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":48}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":921000000}},"flags":""},{"id":"29","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.29/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":29}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":921000000}},"flags":""},{"id":"47","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.47/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":47}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":921000000}},"flags":""},{"id":"18","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.18/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":18}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":922000000}},"flags":""},{"id":"19","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.19/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":19}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":922000000}},"flags":""},{"id":"14","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.14/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":14}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":922000000}},"flags":""},{"id":"15","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.15/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":15}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":922000000}},"flags":""},{"id":"1","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.1/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":1}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":1,"nanosecond":629000000}},"flags":""},{"id":"16","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.16/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":16}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":922000000}},"flags":""},{"id":"2","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.2/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":2}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":922000000}},"flags":""},{"id":"17","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.17/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":17}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":922000000}},"flags":""}],"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"64","active-flows":101,"packets-matched":"56"}},{"id":226,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":179,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":149,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":104,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":59,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":29,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":225,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":180,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":150,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":103,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":66,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":32,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":220,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":185,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":151,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":102,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":65,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":31,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":253,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":219,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":186,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":152,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":101,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":64,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":34,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":252,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":222,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":183,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":153,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":100,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":63,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":33,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":251,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":221,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":184,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":154,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":99,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":54,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":20,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":250,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":216,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":189,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":155,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":129,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":114,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":53,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":19,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":249,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":215,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":190,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":156,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":130,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":113,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":52,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":22,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":248,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":218,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":187,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":157,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":112,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":51,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":21,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":247,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":217,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":188,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":158,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":128,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":111,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":58,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":24,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":246,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":212,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":193,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":159,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":110,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":57,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":23,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":245,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":211,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":194,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":160,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":109,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":56,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":26,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":244,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":214,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":191,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":161,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":108,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":55,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":25,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":243,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":213,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":192,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":162,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":107,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":77,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":43,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":17,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":239,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":198,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":164,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":138,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":119,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":89,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":78,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":44,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":18,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":240,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":197,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":163,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":137,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":120,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":90,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":75,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":45,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":15,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":241,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":196,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":166,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":136,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":121,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":87,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":76,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":46,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":16,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":242,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":195,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":165,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":135,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":122,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":88,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":81,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":47,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":13,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":235,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":202,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":168,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":134,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":115,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":85,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":82,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":48,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":14,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":236,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":201,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":167,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":133,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":116,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":86,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":79,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":49,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":11,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":237,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":200,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":170,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":132,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":117,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":83,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":80,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":50,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":12,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":238,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":199,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":169,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":131,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":118,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":84,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":69,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":35,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":9,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":231,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":206,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":172,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":146,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":127,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":97,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":70,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":36,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":10,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":232,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":205,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":171,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":145,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":98,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":67,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":37,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":7,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":233,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":204,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":174,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":144,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":95,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":68,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":38,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":8,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":234,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":203,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":173,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":143,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":96,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":73,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":39,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":5,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":227,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":210,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":176,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":142,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":123,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":93,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":74,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":40,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":6,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":228,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":209,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":175,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":141,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":124,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":94,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":71,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":41,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":3,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":229,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":208,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":178,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":140,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":125,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":91,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":72,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":42,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":4,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":230,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":207,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":177,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":139,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":126,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":92,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}}],"opendaylight-group-statistics:group-features":{"max-groups":[4294967040],"group-types-supported":["opendaylight-group-types:group-all","opendaylight-group-types:group-ff","opendaylight-group-types:group-select","opendaylight-group-types:group-indirect"],"group-capabilities-supported":["opendaylight-group-types:chaining","opendaylight-group-types:select-weight","opendaylight-group-types:select-liveness"],"actions":[67076097]},"flow-node-inventory:manufacturer":"Nicira, Inc.","flow-node-inventory:description":"s3","flow-node-inventory:hardware":"Open vSwitch","flow-node-inventory:switch-features":{"max_tables":254,"capabilities":["flow-node-inventory:flow-feature-capability-table-stats","flow-node-inventory:flow-feature-capability-group-stats","flow-node-inventory:flow-feature-capability-queue-stats","flow-node-inventory:flow-feature-capability-flow-stats","flow-node-inventory:flow-feature-capability-port-stats"],"max_buffers":0},"flow-node-inventory:snapshot-gathering-status-start":{"begin":"2026-04-08T01:01:32.805Z"},"flow-node-inventory:software":"2.17.11","node-connector":[{"id":"openflow:3:LOCAL","flow-node-inventory:port-number":4294967294,"flow-node-inventory:hardware-address":"c2:87:c1:60:0d:43","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s3","flow-node-inventory:current-feature":"","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":0,"flow-node-inventory:state":{"live":false,"blocked":false,"link-down":true},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"PORT-DOWN","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"0","received":"0"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":188,"nanosecond":122000000},"bytes":{"transmitted":"0","received":"0"},"receive-crc-error":"0"}},{"id":"openflow:3:2","flow-node-inventory:port-number":2,"flow-node-inventory:hardware-address":"9e:72:98:8c:46:72","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s3-eth2","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"51","received":"55"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":188,"nanosecond":125000000},"bytes":{"transmitted":"4272","received":"4624"},"receive-crc-error":"0"}},{"id":"openflow:3:1","flow-node-inventory:port-number":1,"flow-node-inventory:hardware-address":"ca:ac:9a:41:42:1c","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s3-eth1","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"57","received":"11"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":188,"nanosecond":125000000},"bytes":{"transmitted":"4800","received":"866"},"receive-crc-error":"0"}}],"flow-node-inventory:ip-address":"10.30.170.192","flow-node-inventory:serial-number":"None","flow-node-inventory:group":[{"group-id":56,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":56000}}],"watch_group":56000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":56,"duration":{"second":183,"nanosecond":942000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":22,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":22000}}],"watch_group":22000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":22,"duration":{"second":183,"nanosecond":942000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":99,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":99000}}],"watch_group":99000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":99,"duration":{"second":183,"nanosecond":942000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":34000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":34000,"duration":{"second":186,"nanosecond":772000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":89000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":89000,"duration":{"second":186,"nanosecond":771000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":60000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":60000,"duration":{"second":186,"nanosecond":768000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":91000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":91000,"duration":{"second":186,"nanosecond":768000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":57,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":57000}}],"watch_group":57000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":57,"duration":{"second":183,"nanosecond":942000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":23,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":23000}}],"watch_group":23000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":23,"duration":{"second":183,"nanosecond":445000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":14000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":14000,"duration":{"second":186,"nanosecond":768000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":98,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":98000}}],"watch_group":98000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":98,"duration":{"second":183,"nanosecond":444000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":56000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":56000,"duration":{"second":186,"nanosecond":768000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":85000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":85000,"duration":{"second":186,"nanosecond":768000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":54,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":54000}}],"watch_group":54000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":54,"duration":{"second":183,"nanosecond":444000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":24,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":24000}}],"watch_group":24000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":24,"duration":{"second":183,"nanosecond":444000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":36000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":36000,"duration":{"second":186,"nanosecond":768000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":87000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":87000,"duration":{"second":186,"nanosecond":768000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":59000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":59000,"duration":{"second":186,"nanosecond":768000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":25000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":25000,"duration":{"second":186,"nanosecond":768000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":43000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":43000,"duration":{"second":186,"nanosecond":767000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":55,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":55000}}],"watch_group":55000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":55,"duration":{"second":183,"nanosecond":444000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":25,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":25000}}],"watch_group":25000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":25,"duration":{"second":186,"nanosecond":450000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":100,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":100000}}],"watch_group":100000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":100,"duration":{"second":183,"nanosecond":444000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":58000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":58000,"duration":{"second":186,"nanosecond":450000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":86000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":86000,"duration":{"second":186,"nanosecond":450000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":60,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":60000}}],"watch_group":60000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":60,"duration":{"second":186,"nanosecond":450000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":26,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":26000}}],"watch_group":26000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":26,"duration":{"second":183,"nanosecond":444000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":41000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":41000,"duration":{"second":186,"nanosecond":449000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":95,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":95000}}],"watch_group":95000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":95,"duration":{"second":183,"nanosecond":444000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":82000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":82000,"duration":{"second":186,"nanosecond":449000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":61,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":61000}}],"watch_group":61000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":61,"duration":{"second":183,"nanosecond":444000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":27,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":27000}}],"watch_group":27000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":27,"duration":{"second":183,"nanosecond":439000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":94,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":94000}}],"watch_group":94000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":94,"duration":{"second":183,"nanosecond":439000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":98000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":98000,"duration":{"second":186,"nanosecond":448000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":27000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":27000,"duration":{"second":186,"nanosecond":448000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":57000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":57000,"duration":{"second":186,"nanosecond":447000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":16000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":16000,"duration":{"second":186,"nanosecond":446000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":83000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":83000,"duration":{"second":186,"nanosecond":446000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":58,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":58000}}],"watch_group":58000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":58,"duration":{"second":185,"nanosecond":947000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":28,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":28000}}],"watch_group":28000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":28,"duration":{"second":183,"nanosecond":439000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":97,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":97000}}],"watch_group":97000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":97,"duration":{"second":183,"nanosecond":439000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":100000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":100000,"duration":{"second":185,"nanosecond":947000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":59,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":59000}}],"watch_group":59000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":59,"duration":{"second":185,"nanosecond":947000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":38000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":38000,"duration":{"second":185,"nanosecond":947000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":29,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":29000}}],"watch_group":29000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":29,"duration":{"second":183,"nanosecond":439000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":96,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":96000}}],"watch_group":96000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":96,"duration":{"second":183,"nanosecond":439000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":84000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":84000,"duration":{"second":185,"nanosecond":947000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":64,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":64000}}],"watch_group":64000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":64,"duration":{"second":183,"nanosecond":439000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":30,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":30000}}],"watch_group":30000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":30,"duration":{"second":183,"nanosecond":439000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":4,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":4000}}],"watch_group":4000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":4,"duration":{"second":183,"nanosecond":439000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":91,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":91000}}],"watch_group":91000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":91,"duration":{"second":185,"nanosecond":947000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":7000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":7000,"duration":{"second":185,"nanosecond":947000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":29000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":29000,"duration":{"second":185,"nanosecond":947000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":65,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":65000}}],"watch_group":65000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":65,"duration":{"second":183,"nanosecond":439000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":31,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":31000}}],"watch_group":31000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":31,"duration":{"second":183,"nanosecond":439000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":5,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":5000}}],"watch_group":5000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":5,"duration":{"second":183,"nanosecond":439000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":90,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":90000}}],"watch_group":90000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":90,"duration":{"second":183,"nanosecond":439000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":18000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":18000,"duration":{"second":185,"nanosecond":946000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":62,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":62000}}],"watch_group":62000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":62,"duration":{"second":183,"nanosecond":439000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":65000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":65000,"duration":{"second":185,"nanosecond":946000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":32,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":32000}}],"watch_group":32000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":32,"duration":{"second":183,"nanosecond":439000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":2,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":2000}}],"watch_group":2000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":2,"duration":{"second":183,"nanosecond":439000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":93,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":93000}}],"watch_group":93000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":93,"duration":{"second":183,"nanosecond":439000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":64000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":64000,"duration":{"second":185,"nanosecond":945000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":63,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":63000}}],"watch_group":63000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":63,"duration":{"second":183,"nanosecond":439000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":33,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":33000}}],"watch_group":33000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":33,"duration":{"second":183,"nanosecond":439000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":3,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":3000}}],"watch_group":3000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":3,"duration":{"second":183,"nanosecond":439000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":80000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":80000,"duration":{"second":185,"nanosecond":944000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":9000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":9000,"duration":{"second":185,"nanosecond":944000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":92,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":92000}}],"watch_group":92000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":92,"duration":{"second":183,"nanosecond":439000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":5000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":5000,"duration":{"second":185,"nanosecond":944000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":20000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":20000,"duration":{"second":185,"nanosecond":944000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":81000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":81000,"duration":{"second":185,"nanosecond":944000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":97000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":97000,"duration":{"second":185,"nanosecond":944000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":31000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":31000,"duration":{"second":185,"nanosecond":944000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":68,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":68000}}],"watch_group":68000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":68,"duration":{"second":183,"nanosecond":439000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":11000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":11000,"duration":{"second":185,"nanosecond":944000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":34,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":34000}}],"watch_group":34000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":34,"duration":{"second":185,"nanosecond":944000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":78000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":78000,"duration":{"second":185,"nanosecond":943000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":87,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":87000}}],"watch_group":87000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":87,"duration":{"second":185,"nanosecond":943000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":93000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":93000,"duration":{"second":185,"nanosecond":943000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":63000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":63000,"duration":{"second":185,"nanosecond":943000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":69,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":69000}}],"watch_group":69000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":69,"duration":{"second":183,"nanosecond":439000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":35,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":35000}}],"watch_group":35000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":35,"duration":{"second":183,"nanosecond":439000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":1,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":1000}}],"watch_group":1000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":1,"duration":{"second":1,"nanosecond":827000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":33000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":33000,"duration":{"second":185,"nanosecond":939000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":79000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":79000,"duration":{"second":185,"nanosecond":939000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":86,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":86000}}],"watch_group":86000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":86,"duration":{"second":185,"nanosecond":939000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":62000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":62000,"duration":{"second":185,"nanosecond":939000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":66,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":66000}}],"watch_group":66000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":66,"duration":{"second":183,"nanosecond":439000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":77000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":77000,"duration":{"second":185,"nanosecond":939000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":36,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":36000}}],"watch_group":36000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":36,"duration":{"second":185,"nanosecond":939000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":89,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":89000}}],"watch_group":89000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":89,"duration":{"second":185,"nanosecond":939000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":22000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":22000,"duration":{"second":185,"nanosecond":939000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":95000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":95000,"duration":{"second":185,"nanosecond":939000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":67,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":67000}}],"watch_group":67000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":67,"duration":{"second":183,"nanosecond":439000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":37,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":37000}}],"watch_group":37000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":37,"duration":{"second":183,"nanosecond":439000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":1000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":1000,"duration":{"second":2,"nanosecond":35000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":88,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":88000}}],"watch_group":88000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":88,"duration":{"second":183,"nanosecond":439000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":61000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":61000,"duration":{"second":185,"nanosecond":938000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":3000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":3000,"duration":{"second":185,"nanosecond":938000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":73,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":73000}}],"watch_group":73000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":73,"duration":{"second":183,"nanosecond":439000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":39,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":39000}}],"watch_group":39000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":39,"duration":{"second":183,"nanosecond":434000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":13,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":13000}}],"watch_group":13000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":13,"duration":{"second":183,"nanosecond":434000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":74000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":74000,"duration":{"second":185,"nanosecond":938000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":15000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":15000,"duration":{"second":185,"nanosecond":938000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":44000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":44000,"duration":{"second":185,"nanosecond":938000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":45000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":45000,"duration":{"second":185,"nanosecond":938000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":68000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":68000,"duration":{"second":185,"nanosecond":938000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":72,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":72000}}],"watch_group":72000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":72,"duration":{"second":183,"nanosecond":434000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":38,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":38000}}],"watch_group":38000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":38,"duration":{"second":185,"nanosecond":448000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":75000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":75000,"duration":{"second":185,"nanosecond":448000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":12,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":12000}}],"watch_group":12000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":12,"duration":{"second":183,"nanosecond":434000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":35000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":35000,"duration":{"second":185,"nanosecond":448000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":24000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":24000,"duration":{"second":185,"nanosecond":448000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":90000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":90000,"duration":{"second":185,"nanosecond":448000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":71,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":71000}}],"watch_group":71000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":71,"duration":{"second":183,"nanosecond":434000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":41,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":41000}}],"watch_group":41000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":41,"duration":{"second":185,"nanosecond":447000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":42000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":42000,"duration":{"second":185,"nanosecond":447000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":11,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":11000}}],"watch_group":11000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":11,"duration":{"second":185,"nanosecond":447000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":92000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":92000,"duration":{"second":185,"nanosecond":446000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":46000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":46000,"duration":{"second":185,"nanosecond":446000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":67000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":67000,"duration":{"second":185,"nanosecond":446000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":70,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":70000}}],"watch_group":70000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":70,"duration":{"second":183,"nanosecond":434000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":76000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":76000,"duration":{"second":185,"nanosecond":445000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":40,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":40000}}],"watch_group":40000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":40,"duration":{"second":183,"nanosecond":434000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":13000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":13000,"duration":{"second":185,"nanosecond":445000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":10,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":10000}}],"watch_group":10000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":10,"duration":{"second":183,"nanosecond":434000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":88000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":88000,"duration":{"second":185,"nanosecond":445000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":47000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":47000,"duration":{"second":185,"nanosecond":445000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":66000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":66000,"duration":{"second":185,"nanosecond":445000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":77,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":77000}}],"watch_group":77000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":77,"duration":{"second":185,"nanosecond":445000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":43,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":43000}}],"watch_group":43000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":43,"duration":{"second":185,"nanosecond":444000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":9,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":9000}}],"watch_group":9000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":9,"duration":{"second":185,"nanosecond":444000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":99000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":99000,"duration":{"second":185,"nanosecond":444000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":26000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":26000,"duration":{"second":185,"nanosecond":444000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":70000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":70000,"duration":{"second":185,"nanosecond":443000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":76,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":76000}}],"watch_group":76000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":76,"duration":{"second":184,"nanosecond":947000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":42,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":42000}}],"watch_group":42000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":42,"duration":{"second":184,"nanosecond":946000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":8,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":8000}}],"watch_group":8000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":8,"duration":{"second":183,"nanosecond":434000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":37000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":37000,"duration":{"second":184,"nanosecond":946000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":49000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":49000,"duration":{"second":184,"nanosecond":946000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":71000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":71000,"duration":{"second":184,"nanosecond":946000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":48000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":48000,"duration":{"second":184,"nanosecond":945000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":75,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":75000}}],"watch_group":75000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":75,"duration":{"second":184,"nanosecond":941000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":45,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":45000}}],"watch_group":45000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":45,"duration":{"second":184,"nanosecond":941000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":7,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":7000}}],"watch_group":7000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":7,"duration":{"second":184,"nanosecond":941000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":39000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":39000,"duration":{"second":184,"nanosecond":941000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":73000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":73000,"duration":{"second":184,"nanosecond":941000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":69000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":69000,"duration":{"second":184,"nanosecond":941000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":17000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":17000,"duration":{"second":184,"nanosecond":941000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":28000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":28000,"duration":{"second":184,"nanosecond":941000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":74,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":74000}}],"watch_group":74000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":74,"duration":{"second":184,"nanosecond":941000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":44,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":44000}}],"watch_group":44000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":44,"duration":{"second":184,"nanosecond":941000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":6,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":6000}}],"watch_group":6000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":6,"duration":{"second":183,"nanosecond":434000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":40000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":40000,"duration":{"second":184,"nanosecond":941000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":81,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":81000}}],"watch_group":81000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":81,"duration":{"second":184,"nanosecond":941000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":47,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":47000}}],"watch_group":47000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":47,"duration":{"second":184,"nanosecond":941000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":21,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":21000}}],"watch_group":21000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":21,"duration":{"second":183,"nanosecond":434000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":8000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":8000,"duration":{"second":184,"nanosecond":941000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":19000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":19000,"duration":{"second":184,"nanosecond":940000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":96000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":96000,"duration":{"second":184,"nanosecond":940000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":80,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":80000}}],"watch_group":80000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":80,"duration":{"second":184,"nanosecond":940000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":46,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":46000}}],"watch_group":46000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":46,"duration":{"second":184,"nanosecond":940000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":20,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":20000}}],"watch_group":20000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":20,"duration":{"second":184,"nanosecond":940000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":52000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":52000,"duration":{"second":184,"nanosecond":940000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":6000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":6000,"duration":{"second":184,"nanosecond":940000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":79,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":79000}}],"watch_group":79000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":79,"duration":{"second":184,"nanosecond":939000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":49,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":49000}}],"watch_group":49000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":49,"duration":{"second":184,"nanosecond":447000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":19,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":19000}}],"watch_group":19000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":19,"duration":{"second":184,"nanosecond":446000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":50000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":50000,"duration":{"second":184,"nanosecond":446000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":72000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":72000,"duration":{"second":184,"nanosecond":446000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":30000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":30000,"duration":{"second":184,"nanosecond":446000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":78,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":78000}}],"watch_group":78000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":78,"duration":{"second":184,"nanosecond":446000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":48,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":48000}}],"watch_group":48000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":48,"duration":{"second":184,"nanosecond":445000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":18,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":18000}}],"watch_group":18000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":18,"duration":{"second":184,"nanosecond":445000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":51000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":51000,"duration":{"second":184,"nanosecond":445000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":85,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":85000}}],"watch_group":85000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":85,"duration":{"second":184,"nanosecond":445000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":55000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":55000,"duration":{"second":184,"nanosecond":445000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":51,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":51000}}],"watch_group":51000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":51,"duration":{"second":183,"nanosecond":946000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":17,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":17000}}],"watch_group":17000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":17,"duration":{"second":183,"nanosecond":946000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":21000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":21000,"duration":{"second":183,"nanosecond":946000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":4000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":4000,"duration":{"second":183,"nanosecond":946000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":84,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":84000}}],"watch_group":84000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":84,"duration":{"second":183,"nanosecond":946000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":50,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":50000}}],"watch_group":50000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":50,"duration":{"second":183,"nanosecond":946000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":16,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":16000}}],"watch_group":16000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":16,"duration":{"second":183,"nanosecond":945000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":10000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":10000,"duration":{"second":183,"nanosecond":945000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":54000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":54000,"duration":{"second":183,"nanosecond":945000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":83,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":83000}}],"watch_group":83000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":83,"duration":{"second":183,"nanosecond":945000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":32000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":32000,"duration":{"second":183,"nanosecond":945000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":53,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":53000}}],"watch_group":53000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":53,"duration":{"second":183,"nanosecond":434000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":15,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":15000}}],"watch_group":15000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":15,"duration":{"second":183,"nanosecond":944000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":2000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":2000,"duration":{"second":183,"nanosecond":944000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":82,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":82000}}],"watch_group":82000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":82,"duration":{"second":183,"nanosecond":944000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":52,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":52000}}],"watch_group":52000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":52,"duration":{"second":183,"nanosecond":944000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":14,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":14000}}],"watch_group":14000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":14,"duration":{"second":183,"nanosecond":944000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":53000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":53000,"duration":{"second":183,"nanosecond":943000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":12000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":12000,"duration":{"second":183,"nanosecond":943000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":23000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":23000,"duration":{"second":183,"nanosecond":942000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":94000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":94000,"duration":{"second":183,"nanosecond":942000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}}],"flow-node-inventory:snapshot-gathering-status-end":{"succeeded":true,"end":"2026-04-08T01:01:32.842Z"}},{"id":"openflow:1","flow-node-inventory:port-number":54934,"flow-node-inventory:table":[{"id":62,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":28,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":2,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":224,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":181,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":147,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":106,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":61,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":27,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":1,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":223,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":182,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":148,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":105,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":60,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":30,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":0,"flow":[{"id":"71","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.71/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":71}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":921000000}},"flags":""},{"id":"11","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.11/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":11}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":920000000}},"flags":""},{"id":"70","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.70/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":70}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":921000000}},"flags":""},{"id":"10","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.10/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":10}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":920000000}},"flags":""},{"id":"60","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.60/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":60}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":921000000}},"flags":""},{"id":"13","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.13/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":13}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":920000000}},"flags":""},{"id":"12","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.12/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":12}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":920000000}},"flags":""},{"id":"80","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.80/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":80}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":921000000}},"flags":""},{"id":"93","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.93/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":93}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":920000000}},"flags":""},{"id":"92","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.92/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":92}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":920000000}},"flags":""},{"id":"82","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.82/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":82}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":921000000}},"flags":""},{"id":"91","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.91/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":91}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":920000000}},"flags":""},{"id":"81","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.81/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":81}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":921000000}},"flags":""},{"id":"90","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.90/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":90}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":920000000}},"flags":""},{"id":"9","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.9/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":9}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":920000000}},"flags":""},{"id":"84","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.84/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":84}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":920000000}},"flags":""},{"id":"97","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.97/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":97}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":920000000}},"flags":""},{"id":"66","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.66/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":66}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":921000000}},"flags":""},{"id":"79","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.79/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":79}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":921000000}},"flags":""},{"id":"54","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.54/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":54}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":919000000}},"flags":""},{"id":"45","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.45/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":45}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":919000000}},"flags":""},{"id":"83","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.83/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":83}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":920000000}},"flags":""},{"id":"96","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.96/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":96}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":920000000}},"flags":""},{"id":"65","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.65/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":65}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":921000000}},"flags":""},{"id":"78","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.78/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":78}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":921000000}},"flags":""},{"id":"20","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.20/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":20}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":920000000}},"flags":""},{"id":"55","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.55/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":55}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":919000000}},"flags":""},{"id":"46","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.46/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":46}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":919000000}},"flags":""},{"id":"7","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.7/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":7}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":920000000}},"flags":""},{"id":"86","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.86/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":86}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":921000000}},"flags":""},{"id":"95","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.95/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":95}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":920000000}},"flags":""},{"id":"68","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.68/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":68}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":921000000}},"flags":""},{"id":"77","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.77/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":77}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":921000000}},"flags":""},{"id":"30","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.30/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":30}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":920000000}},"flags":""},{"id":"56","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.56/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":56}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":919000000}},"flags":""},{"id":"43","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.43/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":43}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":919000000}},"flags":""},{"id":"8","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.8/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":8}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":920000000}},"flags":""},{"id":"85","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.85/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":85}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":921000000}},"flags":""},{"id":"94","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.94/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":94}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":920000000}},"flags":""},{"id":"67","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.67/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":67}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":921000000}},"flags":""},{"id":"76","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.76/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":76}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":921000000}},"flags":""},{"id":"31","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.31/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":31}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":920000000}},"flags":""},{"id":"57","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.57/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":57}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":919000000}},"flags":""},{"id":"44","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.44/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":44}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":919000000}},"flags":""},{"id":"5","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.5/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":5}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":920000000}},"flags":""},{"id":"88","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.88/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":88}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":921000000}},"flags":""},{"id":"62","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.62/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":62}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":921000000}},"flags":""},{"id":"75","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.75/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":75}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":921000000}},"flags":""},{"id":"32","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.32/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":32}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":920000000}},"flags":""},{"id":"23","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.23/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":23}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":920000000}},"flags":""},{"id":"50","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.50/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":50}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":919000000}},"flags":""},{"id":"41","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.41/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":41}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":919000000}},"flags":""},{"id":"#UF$TABLE*0-1","table_id":0,"priority":0,"cookie_mask":"0","idle-timeout":0,"cookie":"10","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"output-action":{"max-length":65535,"output-node-connector":"CONTROLLER"}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"47","byte-count":"3845","duration":{"second":182,"nanosecond":810000000}},"flags":"SEND_FLOW_REM"},{"id":"6","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.6/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":6}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":920000000}},"flags":""},{"id":"100","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.100/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":100}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":921000000}},"flags":""},{"id":"87","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.87/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":87}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":921000000}},"flags":""},{"id":"61","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.61/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":61}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":921000000}},"flags":""},{"id":"74","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.74/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":74}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":921000000}},"flags":""},{"id":"33","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.33/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":33}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":920000000}},"flags":""},{"id":"24","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.24/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":24}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":920000000}},"flags":""},{"id":"51","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.51/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":51}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":919000000}},"flags":""},{"id":"42","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.42/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":42}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":919000000}},"flags":""},{"id":"3","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.3/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":3}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":920000000}},"flags":""},{"id":"99","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.99/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":99}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":920000000}},"flags":""},{"id":"64","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.64/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":64}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":921000000}},"flags":""},{"id":"73","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.73/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":73}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":921000000}},"flags":""},{"id":"34","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.34/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":34}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":920000000}},"flags":""},{"id":"21","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.21/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":21}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":920000000}},"flags":""},{"id":"52","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.52/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":52}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":919000000}},"flags":""},{"id":"4","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.4/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":4}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":920000000}},"flags":""},{"id":"89","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.89/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":89}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":921000000}},"flags":""},{"id":"98","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.98/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":98}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":920000000}},"flags":""},{"id":"63","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.63/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":63}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":921000000}},"flags":""},{"id":"72","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.72/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":72}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":921000000}},"flags":""},{"id":"35","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.35/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":35}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":920000000}},"flags":""},{"id":"22","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.22/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":22}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":920000000}},"flags":""},{"id":"53","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.53/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":53}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":919000000}},"flags":""},{"id":"40","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.40/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":40}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":919000000}},"flags":""},{"id":"37","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.37/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":37}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":920000000}},"flags":""},{"id":"28","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.28/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":28}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":920000000}},"flags":""},{"id":"36","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.36/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":36}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":920000000}},"flags":""},{"id":"27","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.27/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":27}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":920000000}},"flags":""},{"id":"39","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.39/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":39}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":920000000}},"flags":""},{"id":"26","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.26/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":26}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":920000000}},"flags":""},{"id":"38","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.38/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":38}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":920000000}},"flags":""},{"id":"25","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.25/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":25}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":920000000}},"flags":""},{"id":"69","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.69/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":69}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":921000000}},"flags":""},{"id":"59","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.59/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":59}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":919000000}},"flags":""},{"id":"58","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.58/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":58}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":919000000}},"flags":""},{"id":"49","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.49/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":49}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":920000000}},"flags":""},{"id":"48","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.48/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":48}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":919000000}},"flags":""},{"id":"29","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.29/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":29}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":920000000}},"flags":""},{"id":"47","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.47/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":47}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":919000000}},"flags":""},{"id":"18","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.18/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":18}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":920000000}},"flags":""},{"id":"19","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.19/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":19}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":920000000}},"flags":""},{"id":"14","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.14/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":14}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":920000000}},"flags":""},{"id":"15","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.15/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":15}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":920000000}},"flags":""},{"id":"1","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.1/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":1}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":2,"nanosecond":897000000}},"flags":""},{"id":"16","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.16/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":16}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":920000000}},"flags":""},{"id":"2","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.2/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":2}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":920000000}},"flags":""},{"id":"17","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.17/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":17}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":920000000}},"flags":""}],"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"64","active-flows":101,"packets-matched":"57"}},{"id":226,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":179,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":149,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":104,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":59,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":29,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":225,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":180,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":150,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":103,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":66,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":32,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":220,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":185,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":151,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":102,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":65,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":31,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":253,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":219,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":186,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":152,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":101,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":64,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":34,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":252,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":222,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":183,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":153,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":100,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":63,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":33,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":251,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":221,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":184,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":154,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":99,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":54,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":20,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":250,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":216,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":189,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":155,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":129,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":114,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":53,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":19,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":249,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":215,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":190,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":156,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":130,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":113,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":52,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":22,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":248,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":218,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":187,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":157,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":112,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":51,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":21,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":247,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":217,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":188,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":158,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":128,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":111,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":58,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":24,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":246,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":212,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":193,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":159,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":110,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":57,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":23,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":245,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":211,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":194,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":160,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":109,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":56,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":26,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":244,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":214,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":191,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":161,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":108,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":55,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":25,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":243,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":213,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":192,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":162,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":107,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":77,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":43,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":17,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":239,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":198,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":164,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":138,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":119,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":89,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":78,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":44,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":18,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":240,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":197,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":163,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":137,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":120,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":90,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":75,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":45,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":15,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":241,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":196,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":166,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":136,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":121,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":87,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":76,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":46,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":16,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":242,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":195,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":165,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":135,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":122,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":88,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":81,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":47,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":13,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":235,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":202,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":168,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":134,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":115,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":85,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":82,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":48,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":14,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":236,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":201,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":167,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":133,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":116,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":86,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":79,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":49,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":11,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":237,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":200,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":170,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":132,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":117,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":83,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":80,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":50,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":12,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":238,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":199,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":169,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":131,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":118,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":84,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":69,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":35,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":9,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":231,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":206,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":172,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":146,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":127,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":97,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":70,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":36,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":10,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":232,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":205,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":171,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":145,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":98,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":67,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":37,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":7,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":233,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":204,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":174,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":144,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":95,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":68,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":38,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":8,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":234,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":203,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":173,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":143,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":96,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":73,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":39,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":5,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":227,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":210,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":176,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":142,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":123,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":93,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":74,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":40,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":6,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":228,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":209,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":175,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":141,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":124,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":94,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":71,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":41,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":3,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":229,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":208,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":178,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":140,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":125,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":91,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":72,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":42,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":4,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":230,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":207,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":177,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":139,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":126,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":92,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}}],"opendaylight-group-statistics:group-features":{"max-groups":[4294967040],"group-types-supported":["opendaylight-group-types:group-all","opendaylight-group-types:group-ff","opendaylight-group-types:group-select","opendaylight-group-types:group-indirect"],"group-capabilities-supported":["opendaylight-group-types:chaining","opendaylight-group-types:select-weight","opendaylight-group-types:select-liveness"],"actions":[67076097]},"flow-node-inventory:manufacturer":"Nicira, Inc.","flow-node-inventory:description":"s1","flow-node-inventory:hardware":"Open vSwitch","flow-node-inventory:switch-features":{"max_tables":254,"capabilities":["flow-node-inventory:flow-feature-capability-table-stats","flow-node-inventory:flow-feature-capability-group-stats","flow-node-inventory:flow-feature-capability-queue-stats","flow-node-inventory:flow-feature-capability-flow-stats","flow-node-inventory:flow-feature-capability-port-stats"],"max_buffers":0},"flow-node-inventory:snapshot-gathering-status-start":{"begin":"2026-04-08T01:01:32.821Z"},"flow-node-inventory:software":"2.17.11","node-connector":[{"id":"openflow:1:1","flow-node-inventory:port-number":1,"flow-node-inventory:hardware-address":"92:f4:e8:ea:c6:ad","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s1-eth1","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"57","received":"11"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":188,"nanosecond":142000000},"bytes":{"transmitted":"4800","received":"866"},"receive-crc-error":"0"}},{"id":"openflow:1:LOCAL","flow-node-inventory:port-number":4294967294,"flow-node-inventory:hardware-address":"e6:45:d0:5b:c7:49","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s1","flow-node-inventory:current-feature":"","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":0,"flow-node-inventory:state":{"live":false,"blocked":false,"link-down":true},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"PORT-DOWN","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"0","received":"0"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":188,"nanosecond":138000000},"bytes":{"transmitted":"0","received":"0"},"receive-crc-error":"0"}},{"id":"openflow:1:2","flow-node-inventory:port-number":2,"flow-node-inventory:hardware-address":"42:46:a8:4b:8b:86","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s1-eth2","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"51","received":"55"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":188,"nanosecond":142000000},"bytes":{"transmitted":"4272","received":"4624"},"receive-crc-error":"0"}}],"flow-node-inventory:ip-address":"10.30.170.192","flow-node-inventory:serial-number":"None","flow-node-inventory:group":[{"group-id":56,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":56000}}],"watch_group":56000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":56,"duration":{"second":184,"nanosecond":94000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":22,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":22000}}],"watch_group":22000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":22,"duration":{"second":184,"nanosecond":94000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":99,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":99000}}],"watch_group":99000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":99,"duration":{"second":184,"nanosecond":94000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":34000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":34000,"duration":{"second":186,"nanosecond":787000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":89000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":89000,"duration":{"second":186,"nanosecond":787000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":60000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":60000,"duration":{"second":186,"nanosecond":787000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":91000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":91000,"duration":{"second":186,"nanosecond":787000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":57,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":57000}}],"watch_group":57000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":57,"duration":{"second":184,"nanosecond":94000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":23,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":23000}}],"watch_group":23000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":23,"duration":{"second":183,"nanosecond":594000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":14000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":14000,"duration":{"second":186,"nanosecond":787000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":98,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":98000}}],"watch_group":98000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":98,"duration":{"second":183,"nanosecond":594000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":56000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":56000,"duration":{"second":186,"nanosecond":787000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":85000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":85000,"duration":{"second":186,"nanosecond":787000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":54,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":54000}}],"watch_group":54000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":54,"duration":{"second":183,"nanosecond":594000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":24,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":24000}}],"watch_group":24000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":24,"duration":{"second":183,"nanosecond":594000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":36000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":36000,"duration":{"second":186,"nanosecond":787000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":87000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":87000,"duration":{"second":186,"nanosecond":787000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":59000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":59000,"duration":{"second":186,"nanosecond":787000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":25000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":25000,"duration":{"second":186,"nanosecond":787000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":43000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":43000,"duration":{"second":186,"nanosecond":787000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":55,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":55000}}],"watch_group":55000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":55,"duration":{"second":183,"nanosecond":594000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":25,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":25000}}],"watch_group":25000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":25,"duration":{"second":186,"nanosecond":601000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":100,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":100000}}],"watch_group":100000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":100,"duration":{"second":183,"nanosecond":594000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":58000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":58000,"duration":{"second":186,"nanosecond":598000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":86000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":86000,"duration":{"second":186,"nanosecond":598000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":60,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":60000}}],"watch_group":60000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":60,"duration":{"second":186,"nanosecond":598000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":26,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":26000}}],"watch_group":26000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":26,"duration":{"second":183,"nanosecond":594000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":41000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":41000,"duration":{"second":186,"nanosecond":598000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":95,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":95000}}],"watch_group":95000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":95,"duration":{"second":183,"nanosecond":594000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":82000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":82000,"duration":{"second":186,"nanosecond":598000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":61,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":61000}}],"watch_group":61000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":61,"duration":{"second":183,"nanosecond":594000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":27,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":27000}}],"watch_group":27000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":27,"duration":{"second":183,"nanosecond":594000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":94,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":94000}}],"watch_group":94000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":94,"duration":{"second":183,"nanosecond":594000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":98000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":98000,"duration":{"second":186,"nanosecond":598000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":27000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":27000,"duration":{"second":186,"nanosecond":598000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":57000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":57000,"duration":{"second":186,"nanosecond":598000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":16000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":16000,"duration":{"second":186,"nanosecond":598000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":83000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":83000,"duration":{"second":186,"nanosecond":598000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":58,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":58000}}],"watch_group":58000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":58,"duration":{"second":186,"nanosecond":95000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":28,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":28000}}],"watch_group":28000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":28,"duration":{"second":183,"nanosecond":594000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":97,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":97000}}],"watch_group":97000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":97,"duration":{"second":183,"nanosecond":594000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":100000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":100000,"duration":{"second":186,"nanosecond":95000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":59,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":59000}}],"watch_group":59000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":59,"duration":{"second":186,"nanosecond":95000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":38000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":38000,"duration":{"second":186,"nanosecond":95000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":29,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":29000}}],"watch_group":29000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":29,"duration":{"second":183,"nanosecond":594000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":96,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":96000}}],"watch_group":96000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":96,"duration":{"second":183,"nanosecond":594000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":84000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":84000,"duration":{"second":186,"nanosecond":95000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":64,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":64000}}],"watch_group":64000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":64,"duration":{"second":183,"nanosecond":594000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":30,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":30000}}],"watch_group":30000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":30,"duration":{"second":183,"nanosecond":594000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":4,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":4000}}],"watch_group":4000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":4,"duration":{"second":183,"nanosecond":594000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":91,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":91000}}],"watch_group":91000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":91,"duration":{"second":186,"nanosecond":95000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":7000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":7000,"duration":{"second":186,"nanosecond":95000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":29000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":29000,"duration":{"second":186,"nanosecond":95000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":65,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":65000}}],"watch_group":65000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":65,"duration":{"second":183,"nanosecond":594000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":31,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":31000}}],"watch_group":31000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":31,"duration":{"second":183,"nanosecond":594000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":5,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":5000}}],"watch_group":5000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":5,"duration":{"second":183,"nanosecond":594000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":90,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":90000}}],"watch_group":90000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":90,"duration":{"second":183,"nanosecond":594000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":18000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":18000,"duration":{"second":186,"nanosecond":95000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":62,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":62000}}],"watch_group":62000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":62,"duration":{"second":183,"nanosecond":594000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":65000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":65000,"duration":{"second":186,"nanosecond":95000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":32,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":32000}}],"watch_group":32000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":32,"duration":{"second":183,"nanosecond":594000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":2,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":2000}}],"watch_group":2000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":2,"duration":{"second":183,"nanosecond":594000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":93,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":93000}}],"watch_group":93000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":93,"duration":{"second":183,"nanosecond":594000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":64000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":64000,"duration":{"second":186,"nanosecond":95000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":63,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":63000}}],"watch_group":63000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":63,"duration":{"second":183,"nanosecond":594000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":33,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":33000}}],"watch_group":33000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":33,"duration":{"second":183,"nanosecond":594000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":3,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":3000}}],"watch_group":3000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":3,"duration":{"second":183,"nanosecond":589000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":80000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":80000,"duration":{"second":186,"nanosecond":95000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":9000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":9000,"duration":{"second":186,"nanosecond":95000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":92,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":92000}}],"watch_group":92000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":92,"duration":{"second":183,"nanosecond":589000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":5000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":5000,"duration":{"second":186,"nanosecond":95000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":20000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":20000,"duration":{"second":186,"nanosecond":95000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":81000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":81000,"duration":{"second":186,"nanosecond":95000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":97000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":97000,"duration":{"second":186,"nanosecond":95000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":31000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":31000,"duration":{"second":186,"nanosecond":95000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":68,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":68000}}],"watch_group":68000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":68,"duration":{"second":183,"nanosecond":589000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":11000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":11000,"duration":{"second":186,"nanosecond":95000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":34,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":34000}}],"watch_group":34000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":34,"duration":{"second":186,"nanosecond":95000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":78000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":78000,"duration":{"second":186,"nanosecond":95000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":87,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":87000}}],"watch_group":87000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":87,"duration":{"second":186,"nanosecond":95000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":93000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":93000,"duration":{"second":186,"nanosecond":95000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":63000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":63000,"duration":{"second":186,"nanosecond":95000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":69,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":69000}}],"watch_group":69000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":69,"duration":{"second":183,"nanosecond":589000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":35,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":35000}}],"watch_group":35000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":35,"duration":{"second":183,"nanosecond":589000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":1,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":1000}}],"watch_group":1000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":1,"duration":{"second":3,"nanosecond":100000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":33000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":33000,"duration":{"second":186,"nanosecond":95000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":79000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":79000,"duration":{"second":186,"nanosecond":93000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":86,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":86000}}],"watch_group":86000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":86,"duration":{"second":186,"nanosecond":93000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":62000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":62000,"duration":{"second":186,"nanosecond":93000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":66,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":66000}}],"watch_group":66000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":66,"duration":{"second":183,"nanosecond":589000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":77000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":77000,"duration":{"second":186,"nanosecond":93000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":36,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":36000}}],"watch_group":36000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":36,"duration":{"second":186,"nanosecond":93000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":89,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":89000}}],"watch_group":89000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":89,"duration":{"second":186,"nanosecond":92000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":22000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":22000,"duration":{"second":186,"nanosecond":92000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":95000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":95000,"duration":{"second":186,"nanosecond":92000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":67,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":67000}}],"watch_group":67000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":67,"duration":{"second":183,"nanosecond":589000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":37,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":37000}}],"watch_group":37000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":37,"duration":{"second":183,"nanosecond":589000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":1000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":1000,"duration":{"second":3,"nanosecond":324000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":88,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":88000}}],"watch_group":88000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":88,"duration":{"second":183,"nanosecond":589000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":61000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":61000,"duration":{"second":186,"nanosecond":92000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":3000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":3000,"duration":{"second":186,"nanosecond":91000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":73,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":73000}}],"watch_group":73000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":73,"duration":{"second":183,"nanosecond":589000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":39,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":39000}}],"watch_group":39000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":39,"duration":{"second":183,"nanosecond":589000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":13,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":13000}}],"watch_group":13000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":13,"duration":{"second":183,"nanosecond":589000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":74000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":74000,"duration":{"second":186,"nanosecond":91000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":15000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":15000,"duration":{"second":186,"nanosecond":91000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":44000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":44000,"duration":{"second":186,"nanosecond":91000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":45000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":45000,"duration":{"second":186,"nanosecond":91000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":68000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":68000,"duration":{"second":186,"nanosecond":91000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":72,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":72000}}],"watch_group":72000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":72,"duration":{"second":183,"nanosecond":589000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":38,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":38000}}],"watch_group":38000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":38,"duration":{"second":185,"nanosecond":603000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":75000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":75000,"duration":{"second":185,"nanosecond":603000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":12,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":12000}}],"watch_group":12000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":12,"duration":{"second":183,"nanosecond":589000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":35000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":35000,"duration":{"second":185,"nanosecond":603000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":24000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":24000,"duration":{"second":185,"nanosecond":602000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":90000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":90000,"duration":{"second":185,"nanosecond":602000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":71,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":71000}}],"watch_group":71000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":71,"duration":{"second":183,"nanosecond":589000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":41,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":41000}}],"watch_group":41000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":41,"duration":{"second":185,"nanosecond":602000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":42000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":42000,"duration":{"second":185,"nanosecond":602000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":11,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":11000}}],"watch_group":11000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":11,"duration":{"second":185,"nanosecond":601000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":92000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":92000,"duration":{"second":185,"nanosecond":601000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":46000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":46000,"duration":{"second":185,"nanosecond":601000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":67000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":67000,"duration":{"second":185,"nanosecond":601000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":70,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":70000}}],"watch_group":70000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":70,"duration":{"second":183,"nanosecond":589000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":76000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":76000,"duration":{"second":185,"nanosecond":600000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":40,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":40000}}],"watch_group":40000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":40,"duration":{"second":183,"nanosecond":589000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":13000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":13000,"duration":{"second":185,"nanosecond":597000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":10,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":10000}}],"watch_group":10000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":10,"duration":{"second":183,"nanosecond":589000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":88000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":88000,"duration":{"second":185,"nanosecond":597000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":47000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":47000,"duration":{"second":185,"nanosecond":597000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":66000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":66000,"duration":{"second":185,"nanosecond":596000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":77,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":77000}}],"watch_group":77000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":77,"duration":{"second":185,"nanosecond":596000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":43,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":43000}}],"watch_group":43000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":43,"duration":{"second":185,"nanosecond":596000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":9,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":9000}}],"watch_group":9000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":9,"duration":{"second":185,"nanosecond":596000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":99000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":99000,"duration":{"second":185,"nanosecond":596000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":26000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":26000,"duration":{"second":185,"nanosecond":596000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":70000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":70000,"duration":{"second":185,"nanosecond":596000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":76,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":76000}}],"watch_group":76000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":76,"duration":{"second":185,"nanosecond":102000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":42,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":42000}}],"watch_group":42000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":42,"duration":{"second":185,"nanosecond":100000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":8,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":8000}}],"watch_group":8000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":8,"duration":{"second":183,"nanosecond":589000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":37000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":37000,"duration":{"second":185,"nanosecond":100000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":49000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":49000,"duration":{"second":185,"nanosecond":100000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":71000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":71000,"duration":{"second":185,"nanosecond":100000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":48000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":48000,"duration":{"second":185,"nanosecond":100000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":75,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":75000}}],"watch_group":75000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":75,"duration":{"second":185,"nanosecond":100000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":45,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":45000}}],"watch_group":45000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":45,"duration":{"second":185,"nanosecond":97000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":7,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":7000}}],"watch_group":7000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":7,"duration":{"second":185,"nanosecond":97000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":39000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":39000,"duration":{"second":185,"nanosecond":97000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":73000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":73000,"duration":{"second":185,"nanosecond":96000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":69000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":69000,"duration":{"second":185,"nanosecond":96000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":17000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":17000,"duration":{"second":185,"nanosecond":96000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":28000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":28000,"duration":{"second":185,"nanosecond":96000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":74,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":74000}}],"watch_group":74000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":74,"duration":{"second":185,"nanosecond":96000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":44,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":44000}}],"watch_group":44000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":44,"duration":{"second":185,"nanosecond":96000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":6,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":6000}}],"watch_group":6000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":6,"duration":{"second":183,"nanosecond":589000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":40000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":40000,"duration":{"second":185,"nanosecond":96000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":81,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":81000}}],"watch_group":81000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":81,"duration":{"second":185,"nanosecond":96000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":47,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":47000}}],"watch_group":47000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":47,"duration":{"second":185,"nanosecond":96000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":21,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":21000}}],"watch_group":21000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":21,"duration":{"second":183,"nanosecond":589000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":8000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":8000,"duration":{"second":185,"nanosecond":96000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":19000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":19000,"duration":{"second":185,"nanosecond":96000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":96000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":96000,"duration":{"second":185,"nanosecond":96000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":80,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":80000}}],"watch_group":80000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":80,"duration":{"second":185,"nanosecond":94000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":46,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":46000}}],"watch_group":46000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":46,"duration":{"second":185,"nanosecond":94000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":20,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":20000}}],"watch_group":20000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":20,"duration":{"second":185,"nanosecond":94000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":52000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":52000,"duration":{"second":185,"nanosecond":94000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":6000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":6000,"duration":{"second":185,"nanosecond":94000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":79,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":79000}}],"watch_group":79000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":79,"duration":{"second":185,"nanosecond":94000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":49,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":49000}}],"watch_group":49000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":49,"duration":{"second":184,"nanosecond":601000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":19,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":19000}}],"watch_group":19000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":19,"duration":{"second":184,"nanosecond":601000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":50000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":50000,"duration":{"second":184,"nanosecond":601000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":72000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":72000,"duration":{"second":184,"nanosecond":601000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":30000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":30000,"duration":{"second":184,"nanosecond":600000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":78,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":78000}}],"watch_group":78000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":78,"duration":{"second":184,"nanosecond":600000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":48,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":48000}}],"watch_group":48000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":48,"duration":{"second":184,"nanosecond":599000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":18,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":18000}}],"watch_group":18000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":18,"duration":{"second":184,"nanosecond":599000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":51000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":51000,"duration":{"second":184,"nanosecond":599000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":85,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":85000}}],"watch_group":85000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":85,"duration":{"second":184,"nanosecond":599000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":55000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":55000,"duration":{"second":184,"nanosecond":598000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":51,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":51000}}],"watch_group":51000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":51,"duration":{"second":184,"nanosecond":94000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":17,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":17000}}],"watch_group":17000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":17,"duration":{"second":184,"nanosecond":94000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":21000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":21000,"duration":{"second":184,"nanosecond":94000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":4000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":4000,"duration":{"second":184,"nanosecond":94000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":84,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":84000}}],"watch_group":84000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":84,"duration":{"second":184,"nanosecond":94000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":50,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":50000}}],"watch_group":50000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":50,"duration":{"second":184,"nanosecond":94000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":16,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":16000}}],"watch_group":16000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":16,"duration":{"second":184,"nanosecond":94000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":10000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":10000,"duration":{"second":184,"nanosecond":94000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":54000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":54000,"duration":{"second":184,"nanosecond":94000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":83,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":83000}}],"watch_group":83000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":83,"duration":{"second":184,"nanosecond":94000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":32000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":32000,"duration":{"second":184,"nanosecond":94000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":53,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":53000}}],"watch_group":53000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":53,"duration":{"second":183,"nanosecond":589000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":15,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":15000}}],"watch_group":15000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":15,"duration":{"second":184,"nanosecond":94000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":2000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":2000,"duration":{"second":184,"nanosecond":94000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":82,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":82000}}],"watch_group":82000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":82,"duration":{"second":184,"nanosecond":94000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":52,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":52000}}],"watch_group":52000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":52,"duration":{"second":184,"nanosecond":94000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":14,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":14000}}],"watch_group":14000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":14,"duration":{"second":184,"nanosecond":94000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":53000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":53000,"duration":{"second":184,"nanosecond":94000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":12000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":12000,"duration":{"second":184,"nanosecond":94000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":23000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":23000,"duration":{"second":184,"nanosecond":94000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":94000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":94000,"duration":{"second":184,"nanosecond":94000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}}],"flow-node-inventory:snapshot-gathering-status-end":{"succeeded":true,"end":"2026-04-08T01:01:32.854Z"}},{"id":"openflow:2","flow-node-inventory:port-number":54944,"flow-node-inventory:table":[{"id":62,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":28,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":2,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":224,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":181,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":147,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":106,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":61,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":27,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":1,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":223,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":182,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":148,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":105,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":60,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":30,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":0,"flow":[{"id":"71","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.71/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":71}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":919000000}},"flags":""},{"id":"11","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.11/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":11}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":918000000}},"flags":""},{"id":"70","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.70/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":70}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":919000000}},"flags":""},{"id":"10","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.10/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":10}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":918000000}},"flags":""},{"id":"60","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.60/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":60}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":919000000}},"flags":""},{"id":"13","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.13/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":13}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":918000000}},"flags":""},{"id":"12","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.12/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":12}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":918000000}},"flags":""},{"id":"80","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.80/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":80}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":919000000}},"flags":""},{"id":"93","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.93/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":93}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":918000000}},"flags":""},{"id":"92","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.92/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":92}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":918000000}},"flags":""},{"id":"82","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.82/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":82}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":919000000}},"flags":""},{"id":"91","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.91/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":91}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":918000000}},"flags":""},{"id":"81","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.81/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":81}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":919000000}},"flags":""},{"id":"90","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.90/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":90}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":918000000}},"flags":""},{"id":"9","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.9/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":9}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":918000000}},"flags":""},{"id":"84","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.84/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":84}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":919000000}},"flags":""},{"id":"97","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.97/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":97}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":918000000}},"flags":""},{"id":"66","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.66/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":66}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":919000000}},"flags":""},{"id":"79","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.79/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":79}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":919000000}},"flags":""},{"id":"54","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.54/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":54}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":918000000}},"flags":""},{"id":"45","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.45/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":45}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":918000000}},"flags":""},{"id":"83","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.83/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":83}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":919000000}},"flags":""},{"id":"96","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.96/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":96}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":918000000}},"flags":""},{"id":"65","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.65/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":65}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":919000000}},"flags":""},{"id":"78","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.78/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":78}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":919000000}},"flags":""},{"id":"20","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.20/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":20}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":918000000}},"flags":""},{"id":"55","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.55/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":55}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":918000000}},"flags":""},{"id":"46","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.46/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":46}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":918000000}},"flags":""},{"id":"7","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.7/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":7}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":918000000}},"flags":""},{"id":"86","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.86/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":86}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":919000000}},"flags":""},{"id":"95","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.95/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":95}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":918000000}},"flags":""},{"id":"68","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.68/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":68}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":919000000}},"flags":""},{"id":"77","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.77/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":77}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":919000000}},"flags":""},{"id":"30","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.30/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":30}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":918000000}},"flags":""},{"id":"56","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.56/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":56}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":918000000}},"flags":""},{"id":"43","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.43/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":43}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":918000000}},"flags":""},{"id":"8","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.8/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":8}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":918000000}},"flags":""},{"id":"85","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.85/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":85}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":919000000}},"flags":""},{"id":"94","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.94/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":94}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":918000000}},"flags":""},{"id":"67","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.67/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":67}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":919000000}},"flags":""},{"id":"76","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.76/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":76}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":919000000}},"flags":""},{"id":"31","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.31/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":31}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":918000000}},"flags":""},{"id":"57","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.57/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":57}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":918000000}},"flags":""},{"id":"44","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.44/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":44}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":918000000}},"flags":""},{"id":"5","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.5/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":5}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":918000000}},"flags":""},{"id":"88","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.88/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":88}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":919000000}},"flags":""},{"id":"62","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.62/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":62}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":919000000}},"flags":""},{"id":"75","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.75/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":75}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":919000000}},"flags":""},{"id":"32","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.32/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":32}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":918000000}},"flags":""},{"id":"23","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.23/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":23}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":918000000}},"flags":""},{"id":"50","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.50/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":50}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":917000000}},"flags":""},{"id":"41","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.41/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":41}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":918000000}},"flags":""},{"id":"6","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.6/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":6}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":918000000}},"flags":""},{"id":"100","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.100/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":100}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":919000000}},"flags":""},{"id":"87","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.87/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":87}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":919000000}},"flags":""},{"id":"61","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.61/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":61}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":919000000}},"flags":""},{"id":"74","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.74/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":74}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":919000000}},"flags":""},{"id":"33","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.33/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":33}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":918000000}},"flags":""},{"id":"24","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.24/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":24}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":918000000}},"flags":""},{"id":"51","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.51/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":51}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":917000000}},"flags":""},{"id":"42","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.42/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":42}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":918000000}},"flags":""},{"id":"3","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.3/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":3}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":918000000}},"flags":""},{"id":"99","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.99/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":99}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":918000000}},"flags":""},{"id":"64","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.64/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":64}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":919000000}},"flags":""},{"id":"73","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.73/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":73}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":919000000}},"flags":""},{"id":"34","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.34/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":34}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":918000000}},"flags":""},{"id":"21","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.21/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":21}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":918000000}},"flags":""},{"id":"52","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.52/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":52}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":917000000}},"flags":""},{"id":"4","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.4/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":4}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":918000000}},"flags":""},{"id":"89","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.89/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":89}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":919000000}},"flags":""},{"id":"98","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.98/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":98}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":918000000}},"flags":""},{"id":"63","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.63/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":63}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":919000000}},"flags":""},{"id":"72","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.72/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":72}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":919000000}},"flags":""},{"id":"35","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.35/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":35}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":918000000}},"flags":""},{"id":"22","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.22/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":22}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":918000000}},"flags":""},{"id":"53","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.53/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":53}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":918000000}},"flags":""},{"id":"40","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.40/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":40}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":918000000}},"flags":""},{"id":"#UF$TABLE*0-2","table_id":0,"priority":0,"cookie_mask":"0","idle-timeout":0,"cookie":"10","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"output-action":{"max-length":65535,"output-node-connector":"CONTROLLER"}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"88","byte-count":"7270","duration":{"second":182,"nanosecond":797000000}},"flags":"SEND_FLOW_REM"},{"id":"37","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.37/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":37}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":918000000}},"flags":""},{"id":"28","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.28/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":28}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":918000000}},"flags":""},{"id":"36","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.36/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":36}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":918000000}},"flags":""},{"id":"27","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.27/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":27}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":918000000}},"flags":""},{"id":"39","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.39/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":39}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":918000000}},"flags":""},{"id":"26","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.26/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":26}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":918000000}},"flags":""},{"id":"38","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.38/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":38}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":918000000}},"flags":""},{"id":"25","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.25/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":25}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":918000000}},"flags":""},{"id":"69","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.69/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":69}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":919000000}},"flags":""},{"id":"59","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.59/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":59}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":918000000}},"flags":""},{"id":"58","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.58/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":58}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":918000000}},"flags":""},{"id":"49","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.49/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":49}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":918000000}},"flags":""},{"id":"48","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.48/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":48}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":918000000}},"flags":""},{"id":"29","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.29/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":29}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":918000000}},"flags":""},{"id":"47","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.47/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":47}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":918000000}},"flags":""},{"id":"18","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.18/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":18}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":919000000}},"flags":""},{"id":"19","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.19/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":19}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":919000000}},"flags":""},{"id":"14","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.14/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":14}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":919000000}},"flags":""},{"id":"15","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.15/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":15}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":919000000}},"flags":""},{"id":"1","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.1/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":1}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":2,"nanosecond":247000000}},"flags":""},{"id":"16","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.16/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":16}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":919000000}},"flags":""},{"id":"2","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.2/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":2}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":919000000}},"flags":""},{"id":"17","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.17/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":17}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":182,"nanosecond":919000000}},"flags":""}],"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"110","active-flows":101,"packets-matched":"98"}},{"id":226,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":179,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":149,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":104,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":59,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":29,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":225,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":180,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":150,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":103,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":66,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":32,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":220,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":185,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":151,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":102,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":65,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":31,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":253,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":219,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":186,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":152,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":101,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":64,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":34,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":252,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":222,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":183,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":153,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":100,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":63,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":33,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":251,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":221,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":184,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":154,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":99,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":54,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":20,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":250,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":216,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":189,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":155,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":129,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":114,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":53,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":19,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":249,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":215,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":190,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":156,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":130,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":113,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":52,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":22,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":248,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":218,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":187,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":157,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":112,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":51,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":21,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":247,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":217,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":188,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":158,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":128,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":111,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":58,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":24,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":246,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":212,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":193,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":159,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":110,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":57,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":23,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":245,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":211,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":194,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":160,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":109,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":56,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":26,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":244,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":214,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":191,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":161,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":108,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":55,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":25,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":243,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":213,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":192,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":162,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":107,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":77,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":43,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":17,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":239,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":198,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":164,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":138,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":119,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":89,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":78,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":44,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":18,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":240,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":197,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":163,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":137,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":120,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":90,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":75,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":45,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":15,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":241,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":196,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":166,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":136,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":121,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":87,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":76,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":46,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":16,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":242,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":195,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":165,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":135,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":122,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":88,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":81,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":47,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":13,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":235,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":202,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":168,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":134,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":115,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":85,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":82,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":48,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":14,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":236,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":201,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":167,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":133,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":116,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":86,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":79,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":49,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":11,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":237,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":200,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":170,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":132,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":117,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":83,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":80,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":50,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":12,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":238,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":199,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":169,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":131,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":118,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":84,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":69,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":35,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":9,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":231,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":206,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":172,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":146,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":127,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":97,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":70,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":36,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":10,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":232,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":205,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":171,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":145,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":98,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":67,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":37,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":7,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":233,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":204,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":174,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":144,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":95,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":68,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":38,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":8,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":234,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":203,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":173,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":143,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":96,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":73,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":39,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":5,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":227,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":210,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":176,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":142,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":123,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":93,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":74,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":40,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":6,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":228,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":209,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":175,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":141,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":124,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":94,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":71,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":41,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":3,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":229,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":208,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":178,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":140,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":125,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":91,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":72,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":42,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":4,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":230,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":207,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":177,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":139,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":126,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":92,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}}],"opendaylight-group-statistics:group-features":{"max-groups":[4294967040],"group-types-supported":["opendaylight-group-types:group-all","opendaylight-group-types:group-ff","opendaylight-group-types:group-select","opendaylight-group-types:group-indirect"],"group-capabilities-supported":["opendaylight-group-types:chaining","opendaylight-group-types:select-weight","opendaylight-group-types:select-liveness"],"actions":[67076097]},"flow-node-inventory:manufacturer":"Nicira, Inc.","flow-node-inventory:description":"s2","flow-node-inventory:hardware":"Open vSwitch","flow-node-inventory:switch-features":{"max_tables":254,"capabilities":["flow-node-inventory:flow-feature-capability-table-stats","flow-node-inventory:flow-feature-capability-group-stats","flow-node-inventory:flow-feature-capability-queue-stats","flow-node-inventory:flow-feature-capability-flow-stats","flow-node-inventory:flow-feature-capability-port-stats"],"max_buffers":0},"flow-node-inventory:snapshot-gathering-status-start":{"begin":"2026-04-08T01:01:32.808Z"},"flow-node-inventory:software":"2.17.11","node-connector":[{"id":"openflow:2:3","flow-node-inventory:port-number":3,"flow-node-inventory:hardware-address":"da:7c:fc:7d:24:d4","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s2-eth3","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"55","received":"51"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":188,"nanosecond":123000000},"bytes":{"transmitted":"4624","received":"4272"},"receive-crc-error":"0"}},{"id":"openflow:2:LOCAL","flow-node-inventory:port-number":4294967294,"flow-node-inventory:hardware-address":"ee:be:cf:9b:06:44","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s2","flow-node-inventory:current-feature":"","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":0,"flow-node-inventory:state":{"live":false,"blocked":false,"link-down":true},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"PORT-DOWN","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"0","received":"0"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":188,"nanosecond":117000000},"bytes":{"transmitted":"0","received":"0"},"receive-crc-error":"0"}},{"id":"openflow:2:2","flow-node-inventory:port-number":2,"flow-node-inventory:hardware-address":"76:f5:91:ad:d8:c6","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s2-eth2","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"55","received":"51"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":188,"nanosecond":123000000},"bytes":{"transmitted":"4624","received":"4272"},"receive-crc-error":"0"}},{"id":"openflow:2:1","flow-node-inventory:port-number":1,"flow-node-inventory:hardware-address":"96:61:91:36:76:0b","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s2-eth1","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"57","received":"11"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":188,"nanosecond":122000000},"bytes":{"transmitted":"4800","received":"866"},"receive-crc-error":"0"}}],"flow-node-inventory:ip-address":"10.30.170.192","flow-node-inventory:serial-number":"None","flow-node-inventory:group":[{"group-id":56,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":56000}}],"watch_group":56000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":56,"duration":{"second":184,"nanosecond":78000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":22,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":22000}}],"watch_group":22000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":22,"duration":{"second":184,"nanosecond":78000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":99,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":99000}}],"watch_group":99000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":99,"duration":{"second":184,"nanosecond":78000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":34000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":34000,"duration":{"second":186,"nanosecond":771000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":89000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":89000,"duration":{"second":186,"nanosecond":771000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":60000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":60000,"duration":{"second":186,"nanosecond":771000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":91000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":91000,"duration":{"second":186,"nanosecond":771000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":57,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":57000}}],"watch_group":57000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":57,"duration":{"second":184,"nanosecond":78000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":23,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":23000}}],"watch_group":23000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":23,"duration":{"second":183,"nanosecond":581000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":14000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":14000,"duration":{"second":186,"nanosecond":771000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":98,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":98000}}],"watch_group":98000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":98,"duration":{"second":183,"nanosecond":581000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":56000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":56000,"duration":{"second":186,"nanosecond":771000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":85000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":85000,"duration":{"second":186,"nanosecond":771000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":54,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":54000}}],"watch_group":54000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":54,"duration":{"second":183,"nanosecond":581000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":24,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":24000}}],"watch_group":24000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":24,"duration":{"second":183,"nanosecond":581000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":36000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":36000,"duration":{"second":186,"nanosecond":771000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":87000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":87000,"duration":{"second":186,"nanosecond":771000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":59000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":59000,"duration":{"second":186,"nanosecond":771000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":25000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":25000,"duration":{"second":186,"nanosecond":771000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":43000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":43000,"duration":{"second":186,"nanosecond":771000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":55,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":55000}}],"watch_group":55000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":55,"duration":{"second":183,"nanosecond":581000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":25,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":25000}}],"watch_group":25000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":25,"duration":{"second":186,"nanosecond":587000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":100,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":100000}}],"watch_group":100000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":100,"duration":{"second":183,"nanosecond":581000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":58000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":58000,"duration":{"second":186,"nanosecond":587000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":86000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":86000,"duration":{"second":186,"nanosecond":587000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":60,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":60000}}],"watch_group":60000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":60,"duration":{"second":186,"nanosecond":586000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":26,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":26000}}],"watch_group":26000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":26,"duration":{"second":183,"nanosecond":581000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":41000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":41000,"duration":{"second":186,"nanosecond":586000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":95,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":95000}}],"watch_group":95000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":95,"duration":{"second":183,"nanosecond":581000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":82000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":82000,"duration":{"second":186,"nanosecond":586000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":61,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":61000}}],"watch_group":61000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":61,"duration":{"second":183,"nanosecond":581000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":27,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":27000}}],"watch_group":27000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":27,"duration":{"second":183,"nanosecond":581000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":94,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":94000}}],"watch_group":94000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":94,"duration":{"second":183,"nanosecond":581000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":98000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":98000,"duration":{"second":186,"nanosecond":586000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":27000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":27000,"duration":{"second":186,"nanosecond":586000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":57000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":57000,"duration":{"second":186,"nanosecond":586000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":16000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":16000,"duration":{"second":186,"nanosecond":586000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":83000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":83000,"duration":{"second":186,"nanosecond":586000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":58,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":58000}}],"watch_group":58000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":58,"duration":{"second":186,"nanosecond":86000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":28,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":28000}}],"watch_group":28000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":28,"duration":{"second":183,"nanosecond":581000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":97,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":97000}}],"watch_group":97000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":97,"duration":{"second":183,"nanosecond":581000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":100000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":100000,"duration":{"second":186,"nanosecond":86000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":59,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":59000}}],"watch_group":59000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":59,"duration":{"second":186,"nanosecond":86000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":38000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":38000,"duration":{"second":186,"nanosecond":86000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":29,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":29000}}],"watch_group":29000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":29,"duration":{"second":183,"nanosecond":581000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":96,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":96000}}],"watch_group":96000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":96,"duration":{"second":183,"nanosecond":581000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":84000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":84000,"duration":{"second":186,"nanosecond":86000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":64,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":64000}}],"watch_group":64000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":64,"duration":{"second":183,"nanosecond":581000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":30,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":30000}}],"watch_group":30000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":30,"duration":{"second":183,"nanosecond":581000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":4,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":4000}}],"watch_group":4000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":4,"duration":{"second":183,"nanosecond":577000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":91,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":91000}}],"watch_group":91000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":91,"duration":{"second":186,"nanosecond":86000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":7000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":7000,"duration":{"second":186,"nanosecond":86000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":29000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":29000,"duration":{"second":186,"nanosecond":85000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":65,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":65000}}],"watch_group":65000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":65,"duration":{"second":183,"nanosecond":577000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":31,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":31000}}],"watch_group":31000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":31,"duration":{"second":183,"nanosecond":577000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":5,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":5000}}],"watch_group":5000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":5,"duration":{"second":183,"nanosecond":577000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":90,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":90000}}],"watch_group":90000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":90,"duration":{"second":183,"nanosecond":577000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":18000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":18000,"duration":{"second":186,"nanosecond":85000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":62,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":62000}}],"watch_group":62000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":62,"duration":{"second":183,"nanosecond":577000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":65000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":65000,"duration":{"second":186,"nanosecond":85000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":32,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":32000}}],"watch_group":32000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":32,"duration":{"second":183,"nanosecond":577000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":2,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":2000}}],"watch_group":2000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":2,"duration":{"second":183,"nanosecond":577000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":93,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":93000}}],"watch_group":93000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":93,"duration":{"second":183,"nanosecond":577000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":64000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":64000,"duration":{"second":186,"nanosecond":84000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":63,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":63000}}],"watch_group":63000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":63,"duration":{"second":183,"nanosecond":577000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":33,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":33000}}],"watch_group":33000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":33,"duration":{"second":183,"nanosecond":577000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":3,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":3000}}],"watch_group":3000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":3,"duration":{"second":183,"nanosecond":577000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":80000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":80000,"duration":{"second":186,"nanosecond":84000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":9000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":9000,"duration":{"second":186,"nanosecond":84000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":92,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":92000}}],"watch_group":92000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":92,"duration":{"second":183,"nanosecond":577000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":5000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":5000,"duration":{"second":186,"nanosecond":80000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":20000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":20000,"duration":{"second":186,"nanosecond":80000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":81000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":81000,"duration":{"second":186,"nanosecond":80000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":97000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":97000,"duration":{"second":186,"nanosecond":80000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":31000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":31000,"duration":{"second":186,"nanosecond":80000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":68,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":68000}}],"watch_group":68000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":68,"duration":{"second":183,"nanosecond":577000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":11000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":11000,"duration":{"second":186,"nanosecond":80000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":34,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":34000}}],"watch_group":34000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":34,"duration":{"second":186,"nanosecond":80000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":78000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":78000,"duration":{"second":186,"nanosecond":80000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":87,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":87000}}],"watch_group":87000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":87,"duration":{"second":186,"nanosecond":80000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":93000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":93000,"duration":{"second":186,"nanosecond":80000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":63000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":63000,"duration":{"second":186,"nanosecond":80000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":69,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":69000}}],"watch_group":69000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":69,"duration":{"second":183,"nanosecond":577000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":35,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":35000}}],"watch_group":35000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":35,"duration":{"second":183,"nanosecond":577000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":1,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":1000}}],"watch_group":1000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":1,"duration":{"second":2,"nanosecond":452000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":33000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":33000,"duration":{"second":186,"nanosecond":80000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":79000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":79000,"duration":{"second":186,"nanosecond":80000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":86,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":86000}}],"watch_group":86000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":86,"duration":{"second":186,"nanosecond":80000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":62000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":62000,"duration":{"second":186,"nanosecond":80000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":66,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":66000}}],"watch_group":66000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":66,"duration":{"second":183,"nanosecond":577000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":77000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":77000,"duration":{"second":186,"nanosecond":80000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":36,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":36000}}],"watch_group":36000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":36,"duration":{"second":186,"nanosecond":80000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":89,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":89000}}],"watch_group":89000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":89,"duration":{"second":186,"nanosecond":80000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":22000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":22000,"duration":{"second":186,"nanosecond":78000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":95000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":95000,"duration":{"second":186,"nanosecond":78000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":67,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":67000}}],"watch_group":67000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":67,"duration":{"second":183,"nanosecond":577000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":37,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":37000}}],"watch_group":37000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":37,"duration":{"second":183,"nanosecond":577000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":1000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":1000,"duration":{"second":2,"nanosecond":663000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":88,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":88000}}],"watch_group":88000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":88,"duration":{"second":183,"nanosecond":575000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":61000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":61000,"duration":{"second":186,"nanosecond":76000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":3000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":3000,"duration":{"second":186,"nanosecond":76000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":73,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":73000}}],"watch_group":73000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":73,"duration":{"second":183,"nanosecond":575000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":39,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":39000}}],"watch_group":39000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":39,"duration":{"second":183,"nanosecond":575000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":13,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":13000}}],"watch_group":13000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":13,"duration":{"second":183,"nanosecond":575000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":74000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":74000,"duration":{"second":186,"nanosecond":76000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":15000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":15000,"duration":{"second":186,"nanosecond":76000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":44000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":44000,"duration":{"second":186,"nanosecond":76000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":45000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":45000,"duration":{"second":186,"nanosecond":76000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":68000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":68000,"duration":{"second":186,"nanosecond":76000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":72,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":72000}}],"watch_group":72000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":72,"duration":{"second":183,"nanosecond":575000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":38,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":38000}}],"watch_group":38000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":38,"duration":{"second":185,"nanosecond":580000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":75000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":75000,"duration":{"second":185,"nanosecond":580000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":12,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":12000}}],"watch_group":12000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":12,"duration":{"second":183,"nanosecond":575000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":35000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":35000,"duration":{"second":185,"nanosecond":580000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":24000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":24000,"duration":{"second":185,"nanosecond":580000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":90000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":90000,"duration":{"second":185,"nanosecond":580000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":71,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":71000}}],"watch_group":71000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":71,"duration":{"second":183,"nanosecond":575000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":41,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":41000}}],"watch_group":41000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":41,"duration":{"second":185,"nanosecond":580000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":42000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":42000,"duration":{"second":185,"nanosecond":580000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":11,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":11000}}],"watch_group":11000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":11,"duration":{"second":185,"nanosecond":580000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":92000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":92000,"duration":{"second":185,"nanosecond":580000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":46000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":46000,"duration":{"second":185,"nanosecond":580000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":67000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":67000,"duration":{"second":185,"nanosecond":580000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":70,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":70000}}],"watch_group":70000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":70,"duration":{"second":183,"nanosecond":575000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":76000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":76000,"duration":{"second":185,"nanosecond":580000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":40,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":40000}}],"watch_group":40000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":40,"duration":{"second":183,"nanosecond":575000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":13000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":13000,"duration":{"second":185,"nanosecond":580000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":10,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":10000}}],"watch_group":10000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":10,"duration":{"second":183,"nanosecond":575000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":88000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":88000,"duration":{"second":185,"nanosecond":580000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":47000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":47000,"duration":{"second":185,"nanosecond":580000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":66000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":66000,"duration":{"second":185,"nanosecond":580000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":77,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":77000}}],"watch_group":77000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":77,"duration":{"second":185,"nanosecond":580000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":43,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":43000}}],"watch_group":43000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":43,"duration":{"second":185,"nanosecond":580000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":9,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":9000}}],"watch_group":9000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":9,"duration":{"second":185,"nanosecond":580000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":99000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":99000,"duration":{"second":185,"nanosecond":580000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":26000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":26000,"duration":{"second":185,"nanosecond":580000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":70000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":70000,"duration":{"second":185,"nanosecond":580000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":76,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":76000}}],"watch_group":76000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":76,"duration":{"second":185,"nanosecond":76000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":42,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":42000}}],"watch_group":42000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":42,"duration":{"second":185,"nanosecond":76000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":8,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":8000}}],"watch_group":8000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":8,"duration":{"second":183,"nanosecond":575000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":37000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":37000,"duration":{"second":185,"nanosecond":76000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":49000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":49000,"duration":{"second":185,"nanosecond":76000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":71000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":71000,"duration":{"second":185,"nanosecond":76000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":48000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":48000,"duration":{"second":185,"nanosecond":76000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":75,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":75000}}],"watch_group":75000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":75,"duration":{"second":185,"nanosecond":76000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":45,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":45000}}],"watch_group":45000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":45,"duration":{"second":185,"nanosecond":76000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":7,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":7000}}],"watch_group":7000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":7,"duration":{"second":185,"nanosecond":76000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":39000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":39000,"duration":{"second":185,"nanosecond":76000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":73000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":73000,"duration":{"second":185,"nanosecond":76000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":69000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":69000,"duration":{"second":185,"nanosecond":76000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":17000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":17000,"duration":{"second":185,"nanosecond":76000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":28000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":28000,"duration":{"second":185,"nanosecond":76000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":74,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":74000}}],"watch_group":74000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":74,"duration":{"second":185,"nanosecond":76000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":44,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":44000}}],"watch_group":44000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":44,"duration":{"second":185,"nanosecond":76000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":6,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":6000}}],"watch_group":6000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":6,"duration":{"second":183,"nanosecond":575000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":40000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":40000,"duration":{"second":185,"nanosecond":76000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":81,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":81000}}],"watch_group":81000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":81,"duration":{"second":185,"nanosecond":76000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":47,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":47000}}],"watch_group":47000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":47,"duration":{"second":185,"nanosecond":76000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":21,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":21000}}],"watch_group":21000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":21,"duration":{"second":183,"nanosecond":575000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":8000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":8000,"duration":{"second":185,"nanosecond":76000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":19000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":19000,"duration":{"second":185,"nanosecond":76000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":96000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":96000,"duration":{"second":185,"nanosecond":76000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":80,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":80000}}],"watch_group":80000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":80,"duration":{"second":185,"nanosecond":76000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":46,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":46000}}],"watch_group":46000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":46,"duration":{"second":185,"nanosecond":76000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":20,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":20000}}],"watch_group":20000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":20,"duration":{"second":185,"nanosecond":76000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":52000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":52000,"duration":{"second":185,"nanosecond":76000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":6000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":6000,"duration":{"second":185,"nanosecond":76000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":79,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":79000}}],"watch_group":79000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":79,"duration":{"second":185,"nanosecond":76000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":49,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":49000}}],"watch_group":49000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":49,"duration":{"second":184,"nanosecond":585000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":19,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":19000}}],"watch_group":19000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":19,"duration":{"second":184,"nanosecond":585000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":50000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":50000,"duration":{"second":184,"nanosecond":584000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":72000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":72000,"duration":{"second":184,"nanosecond":584000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":30000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":30000,"duration":{"second":184,"nanosecond":584000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":78,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":78000}}],"watch_group":78000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":78,"duration":{"second":184,"nanosecond":583000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":48,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":48000}}],"watch_group":48000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":48,"duration":{"second":184,"nanosecond":582000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":18,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":18000}}],"watch_group":18000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":18,"duration":{"second":184,"nanosecond":582000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":51000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":51000,"duration":{"second":184,"nanosecond":581000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":85,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":85000}}],"watch_group":85000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":85,"duration":{"second":184,"nanosecond":581000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":55000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":55000,"duration":{"second":184,"nanosecond":581000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":51,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":51000}}],"watch_group":51000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":51,"duration":{"second":184,"nanosecond":84000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":17,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":17000}}],"watch_group":17000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":17,"duration":{"second":184,"nanosecond":84000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":21000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":21000,"duration":{"second":184,"nanosecond":84000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":4000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":4000,"duration":{"second":184,"nanosecond":84000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":84,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":84000}}],"watch_group":84000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":84,"duration":{"second":184,"nanosecond":84000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":50,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":50000}}],"watch_group":50000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":50,"duration":{"second":184,"nanosecond":83000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":16,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":16000}}],"watch_group":16000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":16,"duration":{"second":184,"nanosecond":83000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":10000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":10000,"duration":{"second":184,"nanosecond":83000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":54000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":54000,"duration":{"second":184,"nanosecond":78000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":83,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":83000}}],"watch_group":83000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":83,"duration":{"second":184,"nanosecond":78000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":32000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":32000,"duration":{"second":184,"nanosecond":78000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":53,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":53000}}],"watch_group":53000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":53,"duration":{"second":183,"nanosecond":575000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":15,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":15000}}],"watch_group":15000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":15,"duration":{"second":184,"nanosecond":78000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":2000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":2000,"duration":{"second":184,"nanosecond":78000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":82,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":82000}}],"watch_group":82000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":82,"duration":{"second":184,"nanosecond":78000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":52,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":52000}}],"watch_group":52000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":52,"duration":{"second":184,"nanosecond":78000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":14,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":14000}}],"watch_group":14000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":14,"duration":{"second":184,"nanosecond":78000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":53000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":53000,"duration":{"second":184,"nanosecond":78000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":12000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":12000,"duration":{"second":184,"nanosecond":78000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":23000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":23000,"duration":{"second":184,"nanosecond":78000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":94000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":94000,"duration":{"second":184,"nanosecond":78000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}}],"flow-node-inventory:snapshot-gathering-status-end":{"succeeded":true,"end":"2026-04-08T01:01:32.842Z"}}]}}</msg>
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:34.168512" elapsed="0.011837"/>
</kw>
<kw name="Get Count" owner="BuiltIn">
<msg time="2026-04-08T01:01:34.183582" level="INFO">Item found from container 600 times.</msg>
<msg time="2026-04-08T01:01:34.183667" level="INFO">${group_count} = 600</msg>
<var>${group_count}</var>
<arg>${resp.text}</arg>
<arg>"group-type"</arg>
<doc>Returns and logs how many times ``item`` is found from ``container``.</doc>
<status status="PASS" start="2026-04-08T01:01:34.180537" elapsed="0.003155"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${group_count}</arg>
<arg>${groups}</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="PASS" start="2026-04-08T01:01:34.183882" elapsed="0.000335"/>
</kw>
<arg>${all_groups}</arg>
<doc>Check number of groups in the inventory.</doc>
<status status="PASS" start="2026-04-08T01:01:34.119768" elapsed="0.064513"/>
</kw>
<arg>10s</arg>
<arg>1s</arg>
<arg>ClusterOpenFlow.Check Number Of Groups On Member</arg>
<arg>${all_groups}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-08T01:01:34.119207" elapsed="0.065120"/>
</kw>
<doc>Check Groups in Operational DS.</doc>
<status status="PASS" start="2026-04-08T01:01:33.783282" elapsed="0.401163"/>
</test>
<test id="s1-s4-t45" name="Check Flows In Switch After Mininet Reconnects" line="317">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-08T01:01:34.187677" elapsed="0.000209"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-08T01:01:34.187411" elapsed="0.000528"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:01:34.188959" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:01:34.188841" elapsed="0.000165"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:34.188820" elapsed="0.000209"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:01:34.194172" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:01:34.194049" elapsed="0.000170"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:34.194030" elapsed="0.000212"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:01:34.195272" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:01:34.194849" elapsed="0.000451"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:01:34.195798" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:01:34.195462" elapsed="0.000368"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T01:01:34.195884" elapsed="0.000032"/>
</return>
<msg time="2026-04-08T01:01:34.196039" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T01:01:34.194473" elapsed="0.001590"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:01:34.201413" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:01:34.201306" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:34.201288" elapsed="0.000191"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:01:34.202679" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:01:34.202571" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:34.202553" elapsed="0.000193"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:01:34.203230" level="INFO">${karaf_connection_index} = 476</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:01:34.202895" elapsed="0.000364"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:01:34.203678" level="INFO">${current_connection_index} = 495</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:01:34.203422" elapsed="0.000283"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:01:34.234438" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:01:34.204225" elapsed="0.030315"/>
</kw>
<msg time="2026-04-08T01:01:34.234701" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T01:01:34.234748" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:01:34.203869" elapsed="0.030915"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T01:01:34.280963" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "[C "I "n "[C "S "w "i "t "c "h "[C "A "f "t "e "r "[C "M "i "n "i "n "e "t "[C "R "e "c "o "n "n "e "c "t "s "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T01:01:34.235345" elapsed="0.045967"/>
</kw>
<msg time="2026-04-08T01:01:34.281640" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T01:01:34.281713" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:01:34.234959" elapsed="0.046931"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:34.282578" elapsed="0.000039"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:01:34.282071" elapsed="0.000597"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:34.282018" elapsed="0.000692"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:34.283575" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "[C "I "n "[C "S "w "i "t "c "h "[C "A "f "t "e "r "[C "M "i "n "i "n "e "t "[C "R "e "c "o "n "n "e "c "t "s "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:34.282932" elapsed="0.000768"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:34.284140" elapsed="0.000059"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:01:34.283804" elapsed="0.000446"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:34.283776" elapsed="0.000509"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T01:01:34.284341" elapsed="0.000055"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:01:34.288441" elapsed="0.000285"/>
</kw>
<msg time="2026-04-08T01:01:34.288816" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:01:34.286661" elapsed="0.002354"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:34.289656" elapsed="0.000113"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:34.290175" elapsed="0.000110"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:01:34.285697" elapsed="0.004752"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T01:01:34.284821" elapsed="0.005722"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T01:01:34.202220" elapsed="0.088471"/>
</kw>
<msg time="2026-04-08T01:01:34.290839" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:01:34.290906" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:01:34.201631" elapsed="0.089335"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T01:01:34.291657" elapsed="0.000043"/>
</return>
<status status="PASS" start="2026-04-08T01:01:34.291084" elapsed="0.000672"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:34.291055" elapsed="0.000738"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:34.292504" elapsed="0.000039"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:34.293010" elapsed="0.000035"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T01:01:34.293114" elapsed="0.000023"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T01:01:34.200956" elapsed="0.092340"/>
</kw>
<msg time="2026-04-08T01:01:34.293434" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:01:34.293497" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:01:34.196457" elapsed="0.097095"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:34.294040" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:01:34.293665" elapsed="0.000453"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:34.293640" elapsed="0.000514"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T01:01:34.196312" elapsed="0.097899"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:01:34.300497" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:01:34.300387" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:34.300368" elapsed="0.000195"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:01:34.301781" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:01:34.301670" elapsed="0.000157"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:34.301652" elapsed="0.000197"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:01:34.302331" level="INFO">${karaf_connection_index} = 478</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:01:34.301999" elapsed="0.000359"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:01:34.302775" level="INFO">${current_connection_index} = 495</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:01:34.302520" elapsed="0.000281"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:01:34.334441" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:01:34.303334" elapsed="0.031304"/>
</kw>
<msg time="2026-04-08T01:01:34.334857" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T01:01:34.334905" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:01:34.302962" elapsed="0.031980"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T01:01:34.384504" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "[C "I "n "[C "S "w "i "t "c "h "[C "A "f "t "e "r "[C "M "i "n "i "n "e "t "[C "R "e "c "o "n "n "e "c "t "s "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T01:01:34.335686" elapsed="0.049090"/>
</kw>
<msg time="2026-04-08T01:01:34.385022" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T01:01:34.385076" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:01:34.335235" elapsed="0.049880"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:34.385633" elapsed="0.000027"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:01:34.385283" elapsed="0.000412"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:34.385243" elapsed="0.000480"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:34.386293" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "[C "I "n "[C "S "w "i "t "c "h "[C "A "f "t "e "r "[C "M "i "n "i "n "e "t "[C "R "e "c "o "n "n "e "c "t "s "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:34.385881" elapsed="0.000497"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:34.386667" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:01:34.386446" elapsed="0.000277"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:34.386427" elapsed="0.000323"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T01:01:34.386788" elapsed="0.000048"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:01:34.389925" elapsed="0.000193"/>
</kw>
<msg time="2026-04-08T01:01:34.390203" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:01:34.388474" elapsed="0.001869"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:34.390623" elapsed="0.000075"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:34.390958" elapsed="0.000103"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:01:34.387805" elapsed="0.003389"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T01:01:34.387205" elapsed="0.004059"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T01:01:34.301306" elapsed="0.090063"/>
</kw>
<msg time="2026-04-08T01:01:34.391595" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:01:34.391657" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:01:34.300716" elapsed="0.090985"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T01:01:34.391901" elapsed="0.000028"/>
</return>
<status status="PASS" start="2026-04-08T01:01:34.391787" elapsed="0.000176"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:34.391767" elapsed="0.000219"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 2,
close the previous connection. In any case create a new connection
to karaf console for 2, set correct prompt set and login to karaf console.
Store connection index for 2 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:34.392698" elapsed="0.000101"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:34.393126" elapsed="0.000026"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T01:01:34.393233" elapsed="0.000018"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T01:01:34.299849" elapsed="0.093495"/>
</kw>
<msg time="2026-04-08T01:01:34.393440" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:01:34.393484" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:01:34.294623" elapsed="0.098898"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:34.393855" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:01:34.393597" elapsed="0.000314"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:34.393580" elapsed="0.000354"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T01:01:34.294408" elapsed="0.099549"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:01:34.399577" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:01:34.399465" elapsed="0.000158"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:34.399446" elapsed="0.000199"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:01:34.400965" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:01:34.400854" elapsed="0.000158"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:34.400836" elapsed="0.000198"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:01:34.401536" level="INFO">${karaf_connection_index} = 480</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:01:34.401212" elapsed="0.000353"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:01:34.402211" level="INFO">${current_connection_index} = 495</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:01:34.401747" elapsed="0.000500"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:01:34.435037" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:01:34.402785" elapsed="0.032564"/>
</kw>
<msg time="2026-04-08T01:01:34.435661" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T01:01:34.435733" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:01:34.402435" elapsed="0.033355"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T01:01:34.497585" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "[C "I "n "[C "S "w "i "t "c "h "[C "A "f "t "e "r "[C "M "i "n "i "n "e "t "[C "R "e "c "o "n "n "e "c "t "s "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T01:01:34.436826" elapsed="0.061051"/>
</kw>
<msg time="2026-04-08T01:01:34.498150" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T01:01:34.498229" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:01:34.436193" elapsed="0.062077"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:34.498832" elapsed="0.000107"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:01:34.498423" elapsed="0.000575"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:34.498372" elapsed="0.000658"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:34.499703" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "[C "I "n "[C "S "w "i "t "c "h "[C "A "f "t "e "r "[C "M "i "n "i "n "e "t "[C "R "e "c "o "n "n "e "c "t "s "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:34.499224" elapsed="0.000573"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:34.500097" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:01:34.499869" elapsed="0.000284"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:34.499849" elapsed="0.000350"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T01:01:34.500323" elapsed="0.000044"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:01:34.503243" elapsed="0.000192"/>
</kw>
<msg time="2026-04-08T01:01:34.503499" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:01:34.501979" elapsed="0.001658"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:34.504098" elapsed="0.000102"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:34.504581" elapsed="0.000078"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:01:34.501322" elapsed="0.003453"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T01:01:34.500681" elapsed="0.004160"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T01:01:34.400543" elapsed="0.104581"/>
</kw>
<msg time="2026-04-08T01:01:34.505250" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:01:34.505295" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:01:34.399805" elapsed="0.105529"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T01:01:34.505527" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-08T01:01:34.505416" elapsed="0.000171"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:34.505396" elapsed="0.000214"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 3,
close the previous connection. In any case create a new connection
to karaf console for 3, set correct prompt set and login to karaf console.
Store connection index for 3 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:34.506024" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:34.506384" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T01:01:34.506456" elapsed="0.000017"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T01:01:34.399079" elapsed="0.107487"/>
</kw>
<msg time="2026-04-08T01:01:34.506664" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:01:34.506708" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:01:34.394317" elapsed="0.112430"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:34.507446" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:01:34.506827" elapsed="0.000675"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:34.506810" elapsed="0.000716"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T01:01:34.394090" elapsed="0.113460"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-08T01:01:34.196116" elapsed="0.311471"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-08T01:01:34.193684" elapsed="0.313968"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-08T01:01:34.188546" elapsed="0.319166"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:01:34.188093" elapsed="0.319668"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-08T01:01:34.185285" elapsed="0.322530"/>
</kw>
<kw name="Check Flows In Mininet" owner="MininetKeywords">
<if>
<branch type="IF" condition="&quot;&quot;&quot;${mininet_conn}&quot;&quot;&quot; != &quot;&quot;">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${mininet_conn}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:01:34.508680" elapsed="0.000185"/>
</kw>
<status status="PASS" start="2026-04-08T01:01:34.508457" elapsed="0.000443"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:34.508439" elapsed="0.000486"/>
</if>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:01:34.509415" level="INFO">${cmd} = dpctl dump-aggregate -O OpenFlow13</msg>
<var>${cmd}</var>
<arg>dpctl dump-aggregate -O OpenFlow13</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:01:34.509112" elapsed="0.000329"/>
</kw>
<kw name="Send Mininet Command" owner="MininetKeywords">
<if>
<branch type="IF" condition="&quot;&quot;&quot;${mininet_conn}&quot;&quot;&quot; != &quot;&quot;">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${mininet_conn}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:01:34.510318" elapsed="0.000191"/>
</kw>
<status status="PASS" start="2026-04-08T01:01:34.510063" elapsed="0.000488"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:34.510044" elapsed="0.000631"/>
</if>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:01:34.513299" level="INFO">dpctl dump-aggregate -O OpenFlow13</msg>
<arg>${cmd}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:01:34.510834" elapsed="0.002532"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-08T01:01:34.582890" level="INFO">*** s1 ------------------------------------------------------------------------
OFPST_AGGREGATE reply (OF1.3) (xid=0x2): packet_count=47 byte_count=3845 flow_count=101
*** s2 ------------------------------------------------------------------------
OFPST_AGGREGATE reply (OF1.3) (xid=0x2): packet_count=88 byte_count=7270 flow_count=101
*** s3 ------------------------------------------------------------------------
OFPST_AGGREGATE reply (OF1.3) (xid=0x2): packet_count=46 byte_count=3775 flow_count=101
mininet&gt;</msg>
<msg time="2026-04-08T01:01:34.583129" level="INFO">${output} = *** s1 ------------------------------------------------------------------------
OFPST_AGGREGATE reply (OF1.3) (xid=0x2): packet_count=47 byte_count=3845 flow_count=101
*** s2 ----------------------...</msg>
<var>${output}</var>
<arg>mininet&gt;</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-08T01:01:34.513535" elapsed="0.069637"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-08T01:01:34.583265" elapsed="0.000064"/>
</return>
<msg time="2026-04-08T01:01:34.583502" level="INFO">${output} = *** s1 ------------------------------------------------------------------------
OFPST_AGGREGATE reply (OF1.3) (xid=0x2): packet_count=47 byte_count=3845 flow_count=101
*** s2 ----------------------...</msg>
<var>${output}</var>
<arg>${mininet_conn}</arg>
<arg>${cmd}</arg>
<doc>Sends Command dpctl dump-aggregate -O OpenFlow13 to Mininet session 495 and returns read buffer response.</doc>
<status status="PASS" start="2026-04-08T01:01:34.509761" elapsed="0.073771"/>
</kw>
<kw name="Get Regexp Matches" owner="String">
<msg time="2026-04-08T01:01:34.584123" level="INFO">${flows} = ['101', '101', '101']</msg>
<var>${flows}</var>
<arg>${output}</arg>
<arg>(?&lt;=flow_count\=).*?(?=\r)</arg>
<doc>Returns a list of all non-overlapping matches in the given string.</doc>
<status status="PASS" start="2026-04-08T01:01:34.583788" elapsed="0.000361"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:01:34.584849" level="INFO">${total_flows} = 303</msg>
<var>${total_flows}</var>
<arg>sum(map(int, ${flows}))</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:01:34.584339" elapsed="0.000537"/>
</kw>
<kw name="Should Be Equal As Numbers" owner="BuiltIn">
<arg>${total_flows}</arg>
<arg>${flow_count}</arg>
<doc>Fails if objects are unequal after converting them to real numbers.</doc>
<status status="PASS" start="2026-04-08T01:01:34.585115" elapsed="0.000372"/>
</kw>
<arg>${mininet_conn_id}</arg>
<arg>${all_flows}</arg>
<doc>Sync with mininet to match exact number of flows</doc>
<status status="PASS" start="2026-04-08T01:01:34.508096" elapsed="0.077467"/>
</kw>
<doc>Check Flows in switch.</doc>
<status status="PASS" start="2026-04-08T01:01:34.184738" elapsed="0.400955"/>
</test>
<test id="s1-s4-t46" name="Check Entity Owner Status And Find Owner and Successor Before Owner Stop" line="321">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-08T01:01:34.589540" elapsed="0.000207"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-08T01:01:34.589270" elapsed="0.000530"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:01:34.590888" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:01:34.590728" elapsed="0.000206"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:34.590707" elapsed="0.000250"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:01:34.596039" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:01:34.595932" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:34.595914" elapsed="0.000193"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:01:34.597148" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:01:34.596754" elapsed="0.000437"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:01:34.597665" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:01:34.597360" elapsed="0.000330"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T01:01:34.597735" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T01:01:34.597889" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T01:01:34.596354" elapsed="0.001559"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:01:34.603407" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:01:34.603294" elapsed="0.000160"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:34.603272" elapsed="0.000204"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:01:34.604661" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:01:34.604553" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:34.604535" elapsed="0.000193"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:01:34.605369" level="INFO">${karaf_connection_index} = 476</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:01:34.604876" elapsed="0.000520"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:01:34.605825" level="INFO">${current_connection_index} = 495</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:01:34.605560" elapsed="0.000292"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:01:34.636757" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:01:34.606433" elapsed="0.030424"/>
</kw>
<msg time="2026-04-08T01:01:34.637037" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T01:01:34.637086" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:01:34.606072" elapsed="0.031052"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T01:01:34.714564" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "E "n "t "i "t "y "[C "O "w "n "e "r "[C "S "t "a "t "u "s "[C "A "n "d "[C "F "i "n "d "[C "O "w "n "e "r "[C "a "n "d "[C "S "u "c "c "e "s "[78Cs "[A[78Co
 "r "[C "B "e "f "o "r "e "[C "O "w "n "e "r "[C "S "t "o "p "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T01:01:34.637688" elapsed="0.077108"/>
</kw>
<msg time="2026-04-08T01:01:34.715005" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T01:01:34.715053" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "E "n "t "i "t "y...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:01:34.637327" elapsed="0.077764"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:34.715545" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:01:34.715229" elapsed="0.000376"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:34.715193" elapsed="0.000441"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:34.716196" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "E "n "t "i "t "y "[C "O "w "n "e "r "[C "S "t "a "t "u "s "[C "A "n "d "[C "F "i "n "d "[C "O "w "n "e "r "[C "a "n "d "[C "S "u "c "c "e "s "[78Cs "[A[78Co
 "r "[C "B "e "f "o "r "e "[C "O "w "n "e "r "[C "S "t "o "p "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:34.715785" elapsed="0.000510"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:34.716588" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:01:34.716364" elapsed="0.000278"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:34.716345" elapsed="0.000320"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T01:01:34.716702" elapsed="0.000040"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:01:34.719444" elapsed="0.000190"/>
</kw>
<msg time="2026-04-08T01:01:34.719696" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:01:34.718311" elapsed="0.001522"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:34.720107" elapsed="0.000102"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:34.720467" elapsed="0.000073"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:01:34.717641" elapsed="0.003008"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T01:01:34.717039" elapsed="0.003676"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T01:01:34.604251" elapsed="0.116564"/>
</kw>
<msg time="2026-04-08T01:01:34.720910" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:01:34.720956" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "E "n "t "i "t "y...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:01:34.603631" elapsed="0.117363"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T01:01:34.721445" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-08T01:01:34.721329" elapsed="0.000179"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:34.721053" elapsed="0.000479"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:34.721940" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:34.722301" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T01:01:34.722373" elapsed="0.000077"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T01:01:34.602894" elapsed="0.119668"/>
</kw>
<msg time="2026-04-08T01:01:34.722692" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:01:34.722748" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "E "n "t "i "t "y...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:01:34.598334" elapsed="0.124453"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:34.723123" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:01:34.722867" elapsed="0.000337"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:34.722848" elapsed="0.000389"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T01:01:34.598181" elapsed="0.125089"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:01:34.728819" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:01:34.728706" elapsed="0.000159"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:34.728687" elapsed="0.000199"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:01:34.730022" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:01:34.729914" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:34.729896" elapsed="0.000193"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:01:34.730560" level="INFO">${karaf_connection_index} = 478</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:01:34.730258" elapsed="0.000329"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:01:34.731011" level="INFO">${current_connection_index} = 495</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:01:34.730762" elapsed="0.000275"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:01:34.759081" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:01:34.731559" elapsed="0.027654"/>
</kw>
<msg time="2026-04-08T01:01:34.759384" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T01:01:34.759431" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:01:34.731218" elapsed="0.028250"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T01:01:34.849748" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "E "n "t "i "t "y "[C "O "w "n "e "r "[C "S "t "a "t "u "s "[C "A "n "d "[C "F "i "n "d "[C "O "w "n "e "r "[C "a "n "d "[C "S "u "c "c "e "s "[78Cs "[A[78Co
 "r "[C "B "e "f "o "r "e "[C "O "w "n "e "r "[C "S "t "o "p "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T01:01:34.760025" elapsed="0.090006"/>
</kw>
<msg time="2026-04-08T01:01:34.850308" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T01:01:34.850359" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "E "n "t "i "t "y...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:01:34.759657" elapsed="0.090741"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:34.850941" elapsed="0.000210"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:01:34.850566" elapsed="0.000638"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:34.850526" elapsed="0.000708"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:34.851821" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "E "n "t "i "t "y "[C "O "w "n "e "r "[C "S "t "a "t "u "s "[C "A "n "d "[C "F "i "n "d "[C "O "w "n "e "r "[C "a "n "d "[C "S "u "c "c "e "s "[78Cs "[A[78Co
 "r "[C "B "e "f "o "r "e "[C "O "w "n "e "r "[C "S "t "o "p "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:34.851389" elapsed="0.000525"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:34.852226" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:01:34.851982" elapsed="0.000302"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:34.851963" elapsed="0.000345"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T01:01:34.852347" elapsed="0.000042"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:01:34.855047" elapsed="0.000221"/>
</kw>
<msg time="2026-04-08T01:01:34.855400" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:01:34.853993" elapsed="0.001546"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:34.855822" elapsed="0.000077"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:34.856422" elapsed="0.000077"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:01:34.853331" elapsed="0.003283"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T01:01:34.852695" elapsed="0.003985"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T01:01:34.729612" elapsed="0.127171"/>
</kw>
<msg time="2026-04-08T01:01:34.856880" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:01:34.856925" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "E "n "t "i "t "y...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:01:34.729038" elapsed="0.127925"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T01:01:34.857152" elapsed="0.000044"/>
</return>
<status status="PASS" start="2026-04-08T01:01:34.857044" elapsed="0.000186"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:34.857024" elapsed="0.000230"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 2,
close the previous connection. In any case create a new connection
to karaf console for 2, set correct prompt set and login to karaf console.
Store connection index for 2 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:34.857928" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:34.858294" elapsed="0.000027"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T01:01:34.858368" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T01:01:34.728362" elapsed="0.130127"/>
</kw>
<msg time="2026-04-08T01:01:34.858587" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:01:34.858630" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "E "n "t "i "t "y...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:01:34.723590" elapsed="0.135078"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:34.859000" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:01:34.858744" elapsed="0.000310"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:34.858727" elapsed="0.000351"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T01:01:34.723412" elapsed="0.135689"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:01:34.864735" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:01:34.864628" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:34.864609" elapsed="0.000193"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:01:34.865940" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:01:34.865832" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:34.865814" elapsed="0.000193"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:01:34.866498" level="INFO">${karaf_connection_index} = 480</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:01:34.866176" elapsed="0.000349"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:01:34.866943" level="INFO">${current_connection_index} = 495</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:01:34.866687" elapsed="0.000282"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:01:34.904519" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:01:34.867487" elapsed="0.037266"/>
</kw>
<msg time="2026-04-08T01:01:34.904998" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T01:01:34.905068" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:01:34.867131" elapsed="0.037991"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T01:01:34.980464" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "E "n "t "i "t "y "[C "O "w "n "e "r "[C "S "t "a "t "u "s "[C "A "n "d "[C "F "i "n "d "[C "O "w "n "e "r "[C "a "n "d "[C "S "u "c "c "e "s "[78Cs "[A[78Co
 "r "[C "B "e "f "o "r "e "[C "O "w "n "e "r "[C "S "t "o "p "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T01:01:34.906071" elapsed="0.074786"/>
</kw>
<msg time="2026-04-08T01:01:34.981106" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T01:01:34.981179" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "E "n "t "i "t "y...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:01:34.905472" elapsed="0.075749"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:34.981720" elapsed="0.000029"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:01:34.981354" elapsed="0.000430"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:34.981313" elapsed="0.000499"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:34.982459" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "E "n "t "i "t "y "[C "O "w "n "e "r "[C "S "t "a "t "u "s "[C "A "n "d "[C "F "i "n "d "[C "O "w "n "e "r "[C "a "n "d "[C "S "u "c "c "e "s "[78Cs "[A[78Co
 "r "[C "B "e "f "o "r "e "[C "O "w "n "e "r "[C "S "t "o "p "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:34.981961" elapsed="0.000593"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:34.982853" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:01:34.982624" elapsed="0.000284"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:34.982604" elapsed="0.000327"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T01:01:34.982970" elapsed="0.000042"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:01:34.985836" elapsed="0.000195"/>
</kw>
<msg time="2026-04-08T01:01:34.986093" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:01:34.984645" elapsed="0.001610"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:34.986549" elapsed="0.000074"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:34.986881" elapsed="0.000072"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:01:34.983966" elapsed="0.003099"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T01:01:34.983344" elapsed="0.003788"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T01:01:34.865533" elapsed="0.121716"/>
</kw>
<msg time="2026-04-08T01:01:34.987349" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:01:34.987394" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "E "n "t "i "t "y...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:01:34.864955" elapsed="0.122477"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T01:01:34.987621" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-08T01:01:34.987512" elapsed="0.000169"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:34.987492" elapsed="0.000212"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 3,
close the previous connection. In any case create a new connection
to karaf console for 3, set correct prompt set and login to karaf console.
Store connection index for 3 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:34.988117" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:34.988726" elapsed="0.000026"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T01:01:34.988804" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T01:01:34.864276" elapsed="0.124636"/>
</kw>
<msg time="2026-04-08T01:01:34.989010" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:01:34.989054" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "E "n "t "i "t "y...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:01:34.859415" elapsed="0.129676"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:34.989468" elapsed="0.000029"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:01:34.989181" elapsed="0.000352"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:34.989149" elapsed="0.000408"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T01:01:34.859268" elapsed="0.130314"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-08T01:01:34.597972" elapsed="0.391645"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-08T01:01:34.595568" elapsed="0.394115"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-08T01:01:34.590426" elapsed="0.399368"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:01:34.589961" elapsed="0.399881"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-08T01:01:34.586866" elapsed="0.403034"/>
</kw>
<kw name="Get OpenFlow Entity Owner Status For One Device" owner="ClusterOpenFlow">
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:01:35.032423" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:01:35.031888" elapsed="0.000573"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:01:35.032968" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:01:35.032644" elapsed="0.000349"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T01:01:35.033044" elapsed="0.000047"/>
</return>
<msg time="2026-04-08T01:01:35.033246" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T01:01:35.031460" elapsed="0.001811"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T01:01:35.038022" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T01:01:35.037821" elapsed="0.000227"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:01:35.038220" elapsed="0.000221"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:01:35.038811" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:01:35.038600" elapsed="0.000236"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:35.039317" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:35.039035" elapsed="0.000323"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:01:35.039507" elapsed="0.000181"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:01:35.040064" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:01:35.039858" elapsed="0.000231"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:35.040525" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:35.040282" elapsed="0.000284"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:01:35.041064" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:01:35.040720" elapsed="0.000369"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:35.041518" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:35.041276" elapsed="0.000284"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:01:35.041992" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:01:35.041712" elapsed="0.000305"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:01:35.048862" elapsed="0.000215"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:01:35.058030" elapsed="0.000255"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:01:35.058844" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:01:35.058447" elapsed="0.000423"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:01:35.060030" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:01:35.059487" elapsed="0.000584"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:01:35.060225" elapsed="0.000033"/>
</return>
<msg time="2026-04-08T01:01:35.060381" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:01:35.059061" elapsed="0.001344"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:01:35.061078" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:01:35.060633" elapsed="0.000473"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:01:35.061720" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:01:35.061290" elapsed="0.000456"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:01:35.062285" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:01:35.077768" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:01:35.061914" elapsed="0.019928">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:35.082515" elapsed="0.000056"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:35.082922" elapsed="0.000047"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:35.083328" elapsed="0.000049"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:35.083708" elapsed="0.000046"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:35.084090" elapsed="0.000045"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:35.084499" elapsed="0.000047"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:35.085110" elapsed="0.000073"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:35.085652" elapsed="0.000047"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:35.086086" elapsed="0.000046"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:01:35.084813" elapsed="0.001547"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:01:35.084654" elapsed="0.001771"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:35.086755" elapsed="0.000040"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:01:35.086835" elapsed="0.000015"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:01:35.057535" elapsed="0.029421">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:01:35.087025" elapsed="0.000015"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T01:01:35.046571" elapsed="0.040553">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:35.087320" elapsed="0.000021"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:35.091925" elapsed="0.000028"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:35.092126" elapsed="0.000021"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T01:01:35.092241" elapsed="0.000018"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T01:01:35.037274" elapsed="0.055078">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:01:35.092467" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:01:35.092512" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:01:35.036687" elapsed="0.055848"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T01:01:35.092742" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:01:35.092627" elapsed="0.000157"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:35.092606" elapsed="0.000200"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:01:35.094140" elapsed="0.000327"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:01:35.094971" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:01:35.094639" elapsed="0.000358"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:01:35.095835" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:01:35.095562" elapsed="0.000300"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:01:35.095910" elapsed="0.000033"/>
</return>
<msg time="2026-04-08T01:01:35.096067" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:01:35.095208" elapsed="0.000883"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:01:35.096656" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:01:35.096274" elapsed="0.000408"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:01:35.097210" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:01:35.096845" elapsed="0.000392"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:01:35.097624" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:01:35.106096" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:01:35.097403" elapsed="0.010963">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:35.108633" elapsed="0.000033"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:35.108882" elapsed="0.000030"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:35.109121" elapsed="0.000028"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:35.109383" elapsed="0.000028"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:35.109624" elapsed="0.000030"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:35.109857" elapsed="0.000029"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:35.110311" elapsed="0.000033"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:35.110566" elapsed="0.000035"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:35.110800" elapsed="0.000029"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:01:35.110054" elapsed="0.000823"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:01:35.109953" elapsed="0.000961"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:35.111112" elapsed="0.000027"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:01:35.111222" elapsed="0.000022"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:01:35.093576" elapsed="0.017800">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:01:35.111600" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:01:35.111660" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:01:35.092959" elapsed="0.018734"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T01:01:35.112592" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T01:01:35.112126" elapsed="0.000551">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T01:01:35.111817" elapsed="0.000946">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T01:01:35.111788" elapsed="0.001019">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T01:01:35.112872" elapsed="0.000021"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:01:35.036118" elapsed="0.076891">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:35.113281" elapsed="0.000031"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:35.113521" elapsed="0.000028"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T01:01:35.113606" elapsed="0.000020"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T01:01:35.033576" elapsed="0.080166">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:35.113988" elapsed="0.000030"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:35.114279" elapsed="0.000031"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:35.114526" elapsed="0.000029"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:35.114755" elapsed="0.000028"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:35.114999" elapsed="0.000027"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:35.115250" elapsed="0.000028"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T01:01:35.115336" elapsed="0.000020"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T01:01:35.030502" elapsed="0.084971">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:01:36.153712" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:01:36.153242" elapsed="0.000502"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:01:36.154330" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:01:36.153922" elapsed="0.000435"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T01:01:36.154405" elapsed="0.000042"/>
</return>
<msg time="2026-04-08T01:01:36.154579" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T01:01:36.152798" elapsed="0.001807"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T01:01:36.159312" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T01:01:36.159107" elapsed="0.000233"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:01:36.159495" elapsed="0.000192"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:01:36.160053" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:01:36.159844" elapsed="0.000243"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:36.160574" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:36.160308" elapsed="0.000309"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:01:36.160773" elapsed="0.000306"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:01:36.161649" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:01:36.161348" elapsed="0.000338"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:36.162306" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:36.161932" elapsed="0.000433"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:01:36.163063" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:01:36.162585" elapsed="0.000515"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:36.163710" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:36.163371" elapsed="0.000402"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:01:36.164417" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:01:36.163990" elapsed="0.000465"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:01:36.171730" elapsed="0.000225"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:01:36.181023" elapsed="0.000253"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:01:36.181843" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:01:36.181441" elapsed="0.000429"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:01:36.183057" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:01:36.182501" elapsed="0.000599"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:01:36.183257" elapsed="0.000038"/>
</return>
<msg time="2026-04-08T01:01:36.183435" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:01:36.182064" elapsed="0.001399"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:01:36.184102" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:01:36.183634" elapsed="0.000496"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:01:36.184755" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:01:36.184315" elapsed="0.000468"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:01:36.185490" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:01:36.197773" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:01:36.184951" elapsed="0.016759">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:36.202141" elapsed="0.000170"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:36.202673" elapsed="0.000048"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:36.203058" elapsed="0.000046"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:36.203497" elapsed="0.000062"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:36.203921" elapsed="0.000047"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:36.204330" elapsed="0.000049"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:36.204942" elapsed="0.000047"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:36.205573" elapsed="0.000049"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:36.205953" elapsed="0.000029"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:01:36.204641" elapsed="0.001428"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:01:36.204486" elapsed="0.001622"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:36.206335" elapsed="0.000029"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:01:36.206421" elapsed="0.000022"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:01:36.180513" elapsed="0.026070">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:01:36.206683" elapsed="0.000022"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T01:01:36.169330" elapsed="0.037495">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:36.207075" elapsed="0.000029"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:36.213491" elapsed="0.000039"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:36.213770" elapsed="0.000029"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T01:01:36.213860" elapsed="0.000021"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T01:01:36.158567" elapsed="0.055439">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:01:36.214194" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:01:36.214260" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:01:36.157986" elapsed="0.056308"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T01:01:36.214583" elapsed="0.000019"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:01:36.214421" elapsed="0.000221"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:36.214392" elapsed="0.000280"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:01:36.216600" elapsed="0.000292"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:01:36.217618" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:01:36.217177" elapsed="0.000477"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:01:36.218510" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:01:36.218242" elapsed="0.000294"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:01:36.218583" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T01:01:36.218733" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:01:36.217886" elapsed="0.000872"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:01:36.219303" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:01:36.218918" elapsed="0.000411"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:01:36.219857" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:01:36.219503" elapsed="0.000380"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:01:36.220273" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:01:36.229712" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:01:36.220049" elapsed="0.012013">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:36.232350" elapsed="0.000033"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:36.232599" elapsed="0.000029"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:36.232837" elapsed="0.000028"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:36.233109" elapsed="0.000034"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:36.233387" elapsed="0.000030"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:36.233621" elapsed="0.000029"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:36.233990" elapsed="0.000029"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:36.234253" elapsed="0.000032"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:36.234489" elapsed="0.000031"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:01:36.233806" elapsed="0.000767"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:01:36.233713" elapsed="0.000898"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:36.234812" elapsed="0.000029"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:01:36.234895" elapsed="0.000022"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:01:36.215808" elapsed="0.019237">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:01:36.235232" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:01:36.235297" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:01:36.214886" elapsed="0.020443"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T01:01:36.236396" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T01:01:36.235803" elapsed="0.000708">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T01:01:36.235447" elapsed="0.001238">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T01:01:36.235421" elapsed="0.001329">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T01:01:36.236840" elapsed="0.000030"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:01:36.157434" elapsed="0.079595">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:36.237414" elapsed="0.000041"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:36.237704" elapsed="0.000031"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T01:01:36.237796" elapsed="0.000022"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T01:01:36.154910" elapsed="0.083031">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:36.238208" elapsed="0.000032"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:36.238472" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:36.238712" elapsed="0.000028"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:36.238942" elapsed="0.000028"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:36.239198" elapsed="0.000030"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:36.239434" elapsed="0.000028"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T01:01:36.239520" elapsed="0.000020"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T01:01:36.151893" elapsed="0.087767">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:01:37.273086" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:01:37.272604" elapsed="0.000515"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:01:37.273654" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:01:37.273330" elapsed="0.000351"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T01:01:37.273730" elapsed="0.000039"/>
</return>
<msg time="2026-04-08T01:01:37.273900" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T01:01:37.272209" elapsed="0.001717"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T01:01:37.278666" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T01:01:37.278478" elapsed="0.000215"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:01:37.278848" elapsed="0.000192"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:01:37.279532" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:01:37.279318" elapsed="0.000240"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:37.280013" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:37.279749" elapsed="0.000307"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:01:37.280263" elapsed="0.000183"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:01:37.280803" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:01:37.280600" elapsed="0.000229"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:37.281260" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:37.281000" elapsed="0.000301"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:01:37.281797" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:01:37.281456" elapsed="0.000368"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:37.282245" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:37.281992" elapsed="0.000298"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:01:37.282724" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:01:37.282442" elapsed="0.000308"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:01:37.289588" elapsed="0.000219"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:01:37.299180" elapsed="0.000224"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:01:37.300038" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:01:37.299567" elapsed="0.000520"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:01:37.301316" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:01:37.300736" elapsed="0.000622"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:01:37.301499" elapsed="0.000061"/>
</return>
<msg time="2026-04-08T01:01:37.301725" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:01:37.300320" elapsed="0.001432"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:01:37.302432" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:01:37.301931" elapsed="0.000529"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:01:37.303065" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:01:37.302624" elapsed="0.000469"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:01:37.303629" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:01:37.315767" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:01:37.303282" elapsed="0.016706">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:37.320557" elapsed="0.000062"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:37.321010" elapsed="0.000053"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:37.321502" elapsed="0.000054"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:37.322016" elapsed="0.000058"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:37.322509" elapsed="0.000049"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:37.322910" elapsed="0.000048"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:37.323609" elapsed="0.000050"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:37.324352" elapsed="0.000055"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:37.324851" elapsed="0.000051"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:01:37.323284" elapsed="0.001762"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:01:37.323073" elapsed="0.002042"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:37.325502" elapsed="0.000050"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:01:37.325648" elapsed="0.000039"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:01:37.298601" elapsed="0.027331">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:01:37.326103" elapsed="0.000037"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T01:01:37.287263" elapsed="0.039121">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:37.326814" elapsed="0.000050"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:37.335292" elapsed="0.000042"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:37.335575" elapsed="0.000029"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T01:01:37.335666" elapsed="0.000022"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T01:01:37.277919" elapsed="0.057902">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:01:37.336049" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:01:37.336116" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:01:37.277356" elapsed="0.058794"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T01:01:37.336481" elapsed="0.000019"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:01:37.336305" elapsed="0.000235"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:37.336274" elapsed="0.000297"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:01:37.338576" elapsed="0.000308"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:01:37.339616" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:01:37.339132" elapsed="0.000523"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:01:37.340864" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:01:37.340481" elapsed="0.000420"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:01:37.340971" elapsed="0.000044"/>
</return>
<msg time="2026-04-08T01:01:37.341205" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:01:37.339946" elapsed="0.001295"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:01:37.342005" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:01:37.341473" elapsed="0.000569"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:01:37.342850" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:01:37.342356" elapsed="0.000541"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:01:37.343466" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:01:37.352855" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:01:37.343134" elapsed="0.013647">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:37.357273" elapsed="0.000054"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:37.357674" elapsed="0.000047"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:37.358051" elapsed="0.000046"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:37.358472" elapsed="0.000048"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:37.358864" elapsed="0.000046"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:37.359266" elapsed="0.000047"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:37.359872" elapsed="0.000046"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:37.360323" elapsed="0.000048"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:37.360697" elapsed="0.000046"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:01:37.359573" elapsed="0.001245"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:01:37.359418" elapsed="0.001465"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:37.361229" elapsed="0.000053"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:01:37.361403" elapsed="0.000049"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:01:37.337729" elapsed="0.023993">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:01:37.361993" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:01:37.362094" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:01:37.336789" elapsed="0.025358"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T01:01:37.363643" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T01:01:37.362881" elapsed="0.000900">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T01:01:37.362383" elapsed="0.001559">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T01:01:37.362338" elapsed="0.001759">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T01:01:37.364246" elapsed="0.000039"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:01:37.276791" elapsed="0.087689">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:37.365021" elapsed="0.000030"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:37.365229" elapsed="0.000022"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T01:01:37.365334" elapsed="0.000016"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T01:01:37.274261" elapsed="0.091178">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:37.365617" elapsed="0.000022"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:37.365802" elapsed="0.000020"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:37.365977" elapsed="0.000021"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:37.366145" elapsed="0.000035"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:37.366336" elapsed="0.000021"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:37.366505" elapsed="0.000020"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T01:01:37.366568" elapsed="0.000015"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T01:01:37.271341" elapsed="0.095330">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:01:38.399907" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:01:38.399427" elapsed="0.000514"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:01:38.400448" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:01:38.400116" elapsed="0.000359"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T01:01:38.400524" elapsed="0.000040"/>
</return>
<msg time="2026-04-08T01:01:38.400695" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T01:01:38.398999" elapsed="0.001722"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T01:01:38.405499" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T01:01:38.405307" elapsed="0.000219"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:01:38.405681" elapsed="0.000193"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:01:38.406268" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:01:38.406034" elapsed="0.000260"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:38.406791" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:38.406488" elapsed="0.000345"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:01:38.406983" elapsed="0.000236"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:01:38.407586" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:01:38.407378" elapsed="0.000233"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:38.408028" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:38.407784" elapsed="0.000285"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:01:38.408580" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:01:38.408239" elapsed="0.000367"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:38.409100" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:38.408856" elapsed="0.000288"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:01:38.409597" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:01:38.409314" elapsed="0.000309"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:01:38.416487" elapsed="0.000219"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:01:38.425732" elapsed="0.000213"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:01:38.426505" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:01:38.426104" elapsed="0.000428"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:01:38.427704" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:01:38.427143" elapsed="0.000602"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:01:38.427877" elapsed="0.000035"/>
</return>
<msg time="2026-04-08T01:01:38.428040" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:01:38.426723" elapsed="0.001342"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:01:38.428691" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:01:38.428245" elapsed="0.000472"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:01:38.429319" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:01:38.428877" elapsed="0.000468"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:01:38.429842" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:01:38.440797" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:01:38.429511" elapsed="0.015287">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:38.445255" elapsed="0.000053"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:38.445648" elapsed="0.000046"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:38.446016" elapsed="0.000045"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:38.446429" elapsed="0.000049"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:38.446812" elapsed="0.000045"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:38.447223" elapsed="0.000048"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:38.447822" elapsed="0.000046"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:38.448376" elapsed="0.000048"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:38.448809" elapsed="0.000046"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:01:38.447533" elapsed="0.001453"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:01:38.447377" elapsed="0.001673"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:38.449400" elapsed="0.000047"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:01:38.449533" elapsed="0.000035"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:01:38.425232" elapsed="0.024554">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:01:38.450024" elapsed="0.000037"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T01:01:38.414131" elapsed="0.036159">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:38.450686" elapsed="0.000047"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:38.455897" elapsed="0.000030"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:38.456099" elapsed="0.000021"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T01:01:38.456180" elapsed="0.000016"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T01:01:38.404742" elapsed="0.051546">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:01:38.456401" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:01:38.456444" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:01:38.404182" elapsed="0.052285"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T01:01:38.456673" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:01:38.456558" elapsed="0.000158"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:38.456537" elapsed="0.000201"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:01:38.458052" elapsed="0.000226"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:01:38.458734" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:01:38.458433" elapsed="0.000326"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:01:38.459576" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:01:38.459312" elapsed="0.000290"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:01:38.459649" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T01:01:38.459797" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:01:38.458941" elapsed="0.000879"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:01:38.460363" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:01:38.459980" elapsed="0.000409"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:01:38.460891" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:01:38.460548" elapsed="0.000368"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:01:38.461291" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:01:38.469186" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:01:38.461077" elapsed="0.009810">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:38.471078" elapsed="0.000022"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:38.471296" elapsed="0.000026"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:38.471521" elapsed="0.000028"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:38.471708" elapsed="0.000021"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:38.471881" elapsed="0.000033"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:38.472285" elapsed="0.000048"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:38.472868" elapsed="0.000044"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:38.473281" elapsed="0.000046"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:38.473651" elapsed="0.000044"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:01:38.472579" elapsed="0.001187"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:01:38.472431" elapsed="0.001393"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:38.474134" elapsed="0.000078"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:01:38.474302" elapsed="0.000035"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:01:38.457511" elapsed="0.017034">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:01:38.474832" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:01:38.474930" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:01:38.456891" elapsed="0.018091"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T01:01:38.476442" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T01:01:38.475690" elapsed="0.000889">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T01:01:38.475204" elapsed="0.001511">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T01:01:38.475125" elapsed="0.001659">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T01:01:38.476889" elapsed="0.000042"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:01:38.403607" elapsed="0.073521">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:38.477559" elapsed="0.000051"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:38.477938" elapsed="0.000045"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T01:01:38.478076" elapsed="0.000033"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T01:01:38.401077" elapsed="0.077252">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:38.478757" elapsed="0.000050"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:38.479211" elapsed="0.000049"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:38.479672" elapsed="0.000058"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:38.480310" elapsed="0.000053"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:38.480706" elapsed="0.000045"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:38.481077" elapsed="0.000046"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T01:01:38.481248" elapsed="0.000035"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T01:01:38.398198" elapsed="0.083322">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:01:39.514469" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:01:39.513968" elapsed="0.000534"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:01:39.514988" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:01:39.514677" elapsed="0.000337"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T01:01:39.515061" elapsed="0.000044"/>
</return>
<msg time="2026-04-08T01:01:39.515254" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T01:01:39.513567" elapsed="0.001713"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T01:01:39.519973" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T01:01:39.519783" elapsed="0.000217"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:01:39.520153" elapsed="0.000211"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:01:39.520726" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:01:39.520518" elapsed="0.000233"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:39.521209" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:39.520941" elapsed="0.000318"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:01:39.521409" elapsed="0.000181"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:01:39.521948" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:01:39.521744" elapsed="0.000229"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:39.522404" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:39.522143" elapsed="0.000302"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:01:39.522937" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:01:39.522599" elapsed="0.000364"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:39.523381" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:39.523131" elapsed="0.000293"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:01:39.523856" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:01:39.523575" elapsed="0.000306"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:01:39.530605" elapsed="0.000217"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:01:39.541870" elapsed="0.000254"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:01:39.542990" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:01:39.542368" elapsed="0.000659"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:01:39.544537" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:01:39.543915" elapsed="0.000678"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:01:39.544790" elapsed="0.000055"/>
</return>
<msg time="2026-04-08T01:01:39.545017" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:01:39.543418" elapsed="0.001628"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:01:39.545780" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:01:39.545264" elapsed="0.000544"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:01:39.546450" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:01:39.545976" elapsed="0.000501"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:01:39.547015" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:01:39.560889" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:01:39.546649" elapsed="0.016788">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:39.563731" elapsed="0.000036"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:39.563986" elapsed="0.000029"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:39.564268" elapsed="0.000036"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:39.564530" elapsed="0.000031"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:39.564779" elapsed="0.000030"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:39.565023" elapsed="0.000031"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:39.565459" elapsed="0.000032"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:39.565787" elapsed="0.000029"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:39.566060" elapsed="0.000030"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:01:39.565253" elapsed="0.000960"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:01:39.565123" elapsed="0.001131"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:39.566474" elapsed="0.000032"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:01:39.566563" elapsed="0.000023"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:01:39.541214" elapsed="0.025515">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:01:39.566829" elapsed="0.000023"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T01:01:39.528267" elapsed="0.038703">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:39.567248" elapsed="0.000031"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:39.572384" elapsed="0.000032"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:39.572657" elapsed="0.000022"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T01:01:39.572724" elapsed="0.000017"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T01:01:39.519236" elapsed="0.053599">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:01:39.572959" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:01:39.573006" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:01:39.518661" elapsed="0.054368"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T01:01:39.573265" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:01:39.573124" elapsed="0.000185"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:39.573103" elapsed="0.000229"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:01:39.574728" elapsed="0.000217"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:01:39.575437" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:01:39.575103" elapsed="0.000364"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:01:39.576334" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:01:39.576030" elapsed="0.000331"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:01:39.576409" elapsed="0.000031"/>
</return>
<msg time="2026-04-08T01:01:39.576571" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:01:39.575662" elapsed="0.000934"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:01:39.577139" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:01:39.576763" elapsed="0.000419"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:01:39.577798" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:01:39.577345" elapsed="0.000481"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:01:39.578228" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:01:39.586759" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:01:39.577995" elapsed="0.012545">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:39.590973" elapsed="0.000053"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:39.591402" elapsed="0.000047"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:39.591839" elapsed="0.000051"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:39.592274" elapsed="0.000050"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:39.592676" elapsed="0.000047"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:39.593067" elapsed="0.000046"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:39.593694" elapsed="0.000045"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:39.594115" elapsed="0.000077"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:39.594674" elapsed="0.000049"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:01:39.593397" elapsed="0.001411"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:01:39.593248" elapsed="0.001629"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:39.595244" elapsed="0.000050"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:01:39.595380" elapsed="0.000081"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:01:39.574137" elapsed="0.021540">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:01:39.595939" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:01:39.595986" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:01:39.573508" elapsed="0.022502"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T01:01:39.596661" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T01:01:39.596340" elapsed="0.000383">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T01:01:39.596095" elapsed="0.000689">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T01:01:39.596076" elapsed="0.000740">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T01:01:39.596873" elapsed="0.000020"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:01:39.518089" elapsed="0.078889">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:39.597175" elapsed="0.000023"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:39.597351" elapsed="0.000020"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T01:01:39.597412" elapsed="0.000015"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T01:01:39.515575" elapsed="0.081937">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:39.597685" elapsed="0.000021"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:39.597873" elapsed="0.000022"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:39.598055" elapsed="0.000020"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:39.598235" elapsed="0.000022"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:39.598406" elapsed="0.000020"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:39.598572" elapsed="0.000020"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T01:01:39.598632" elapsed="0.000015"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T01:01:39.512720" elapsed="0.086013">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:01:40.635676" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:01:40.635189" elapsed="0.000521"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:01:40.636215" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:01:40.635885" elapsed="0.000358"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T01:01:40.636292" elapsed="0.000045"/>
</return>
<msg time="2026-04-08T01:01:40.636470" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T01:01:40.634764" elapsed="0.001732"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T01:01:40.641188" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T01:01:40.640983" elapsed="0.000232"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:01:40.641370" elapsed="0.000195"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:01:40.641929" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:01:40.641720" elapsed="0.000234"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:40.642434" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:40.642177" elapsed="0.000300"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:01:40.642624" elapsed="0.000180"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:01:40.643175" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:01:40.642956" elapsed="0.000246"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:40.643617" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:40.643375" elapsed="0.000283"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:01:40.644146" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:01:40.643810" elapsed="0.000377"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:40.644594" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:40.644359" elapsed="0.000279"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:01:40.645074" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:01:40.644789" elapsed="0.000311"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:01:40.696060" elapsed="0.000346"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:01:40.705710" elapsed="0.000239"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:01:40.706556" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:01:40.706118" elapsed="0.000466"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:01:40.707779" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:01:40.707236" elapsed="0.000585"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:01:40.707956" elapsed="0.000050"/>
</return>
<msg time="2026-04-08T01:01:40.708137" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:01:40.706799" elapsed="0.001381"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:01:40.708867" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:01:40.708353" elapsed="0.000542"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:01:40.709515" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:01:40.709057" elapsed="0.000485"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:01:40.710048" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:01:40.722280" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:01:40.709712" elapsed="0.015293">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:40.725377" elapsed="0.000042"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:40.725650" elapsed="0.000031"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:40.725902" elapsed="0.000031"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:40.726154" elapsed="0.000052"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:40.726438" elapsed="0.000030"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:40.726687" elapsed="0.000030"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:40.727112" elapsed="0.000029"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:40.727482" elapsed="0.000030"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:40.727767" elapsed="0.000031"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:01:40.726914" elapsed="0.000971"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:01:40.726794" elapsed="0.001135"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:40.728226" elapsed="0.000069"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:01:40.728363" elapsed="0.000027"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:01:40.705127" elapsed="0.023425">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:01:40.728663" elapsed="0.000022"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T01:01:40.693584" elapsed="0.035231">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:40.729085" elapsed="0.000031"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:40.736026" elapsed="0.000041"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:40.736361" elapsed="0.000034"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T01:01:40.736471" elapsed="0.000023"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T01:01:40.640445" elapsed="0.096180">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:01:40.736798" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:01:40.736860" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:01:40.639873" elapsed="0.097020"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T01:01:40.737294" elapsed="0.000020"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:01:40.737097" elapsed="0.000257"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:40.737066" elapsed="0.000319"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:01:40.739328" elapsed="0.000296"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:01:40.740377" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:01:40.739841" elapsed="0.000580"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:01:40.741431" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:01:40.741139" elapsed="0.000319"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:01:40.741506" elapsed="0.000032"/>
</return>
<msg time="2026-04-08T01:01:40.741659" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:01:40.740700" elapsed="0.000983"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:01:40.742238" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:01:40.741846" elapsed="0.000418"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:01:40.742773" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:01:40.742425" elapsed="0.000374"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:01:40.743194" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:01:40.752575" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:01:40.742963" elapsed="0.012094">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:40.755344" elapsed="0.000033"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:40.755590" elapsed="0.000030"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:40.755848" elapsed="0.000028"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:40.756083" elapsed="0.000029"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:40.756360" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:40.756592" elapsed="0.000028"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:40.756968" elapsed="0.000027"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:40.757229" elapsed="0.000029"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:40.757461" elapsed="0.000028"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:01:40.756785" elapsed="0.000749"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:01:40.756686" elapsed="0.000885"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:40.757769" elapsed="0.000028"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:01:40.757851" elapsed="0.000022"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:01:40.738525" elapsed="0.019478">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:01:40.758187" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:01:40.758252" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:01:40.737606" elapsed="0.020678"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T01:01:40.759250" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T01:01:40.758779" elapsed="0.000557">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T01:01:40.758471" elapsed="0.000951">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T01:01:40.758443" elapsed="0.001024">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T01:01:40.759532" elapsed="0.000022"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:01:40.639322" elapsed="0.120362">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:40.759938" elapsed="0.000029"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:40.760201" elapsed="0.000029"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T01:01:40.760290" elapsed="0.000021"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T01:01:40.636792" elapsed="0.123637">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:40.760668" elapsed="0.000028"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:40.760919" elapsed="0.000027"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:40.761175" elapsed="0.000029"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:40.761406" elapsed="0.000027"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:40.761641" elapsed="0.000027"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:40.761868" elapsed="0.000026"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T01:01:40.761973" elapsed="0.000038"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T01:01:40.633932" elapsed="0.128273">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:01:41.798353" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:01:41.797788" elapsed="0.000599"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:01:41.798897" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:01:41.798567" elapsed="0.000356"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T01:01:41.798975" elapsed="0.000044"/>
</return>
<msg time="2026-04-08T01:01:41.799183" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T01:01:41.797377" elapsed="0.001833"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T01:01:41.804286" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T01:01:41.804075" elapsed="0.000238"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:01:41.804474" elapsed="0.000260"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:01:41.805139" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:01:41.804922" elapsed="0.000260"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:41.805640" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:41.805380" elapsed="0.000304"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:01:41.805835" elapsed="0.000196"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:01:41.806424" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:01:41.806213" elapsed="0.000237"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:41.806873" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:41.806626" elapsed="0.000288"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:01:41.807431" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:01:41.807071" elapsed="0.000385"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:41.807862" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:41.807628" elapsed="0.000277"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:01:41.808464" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:01:41.808172" elapsed="0.000318"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:01:41.815373" elapsed="0.000220"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:01:41.825219" elapsed="0.000219"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:01:41.826077" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:01:41.825628" elapsed="0.000476"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:01:41.827389" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:01:41.826814" elapsed="0.000616"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:01:41.827568" elapsed="0.000039"/>
</return>
<msg time="2026-04-08T01:01:41.827762" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:01:41.826335" elapsed="0.001453"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:01:41.828485" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:01:41.827991" elapsed="0.000522"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:01:41.829113" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:01:41.828678" elapsed="0.000461"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:01:41.829686" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:01:41.841901" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:01:41.829324" elapsed="0.015070">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:41.844708" elapsed="0.000037"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:41.844963" elapsed="0.000029"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:41.845268" elapsed="0.000031"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:41.845521" elapsed="0.000038"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:41.845870" elapsed="0.000031"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:41.846139" elapsed="0.000056"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:41.846579" elapsed="0.000030"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:41.846916" elapsed="0.000040"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:41.847268" elapsed="0.000032"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:01:41.846384" elapsed="0.001005"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:01:41.846274" elapsed="0.001157"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:41.847641" elapsed="0.000030"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:01:41.847727" elapsed="0.000023"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:01:41.824690" elapsed="0.023209">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:01:41.848001" elapsed="0.000024"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T01:01:41.813011" elapsed="0.035179">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:41.848454" elapsed="0.000030"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:41.854993" elapsed="0.000041"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:41.855296" elapsed="0.000031"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T01:01:41.855391" elapsed="0.000021"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T01:01:41.803531" elapsed="0.052011">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:01:41.855711" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:01:41.855773" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:01:41.802937" elapsed="0.052869"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T01:01:41.856113" elapsed="0.000019"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:01:41.855939" elapsed="0.000260"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:41.855909" elapsed="0.000324"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:01:41.858259" elapsed="0.000213"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:01:41.858939" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:01:41.858628" elapsed="0.000336"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:01:41.859776" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:01:41.859504" elapsed="0.000300"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:01:41.859898" elapsed="0.000031"/>
</return>
<msg time="2026-04-08T01:01:41.860052" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:01:41.859148" elapsed="0.000929"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:01:41.860643" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:01:41.860259" elapsed="0.000421"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:01:41.861255" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:01:41.860868" elapsed="0.000414"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:01:41.861674" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:01:41.872693" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:01:41.861451" elapsed="0.014028">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:41.875764" elapsed="0.000034"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:41.876008" elapsed="0.000028"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:41.876260" elapsed="0.000030"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:41.876496" elapsed="0.000040"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:41.876756" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:41.876995" elapsed="0.000040"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:41.877444" elapsed="0.000031"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:41.877691" elapsed="0.000028"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:41.877961" elapsed="0.000040"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:01:41.877241" elapsed="0.000823"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:01:41.877107" elapsed="0.001010"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:41.878588" elapsed="0.000033"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:01:41.878684" elapsed="0.000023"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:01:41.857427" elapsed="0.021418">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:01:41.879016" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:01:41.879081" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:01:41.856457" elapsed="0.022657"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T01:01:41.880104" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T01:01:41.879629" elapsed="0.000595">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T01:01:41.879303" elapsed="0.001037">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T01:01:41.879270" elapsed="0.001118">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T01:01:41.880487" elapsed="0.000024"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:01:41.802377" elapsed="0.078257">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:41.880957" elapsed="0.000031"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:41.881145" elapsed="0.000039"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T01:01:41.881229" elapsed="0.000015"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T01:01:41.799513" elapsed="0.081822">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:41.881544" elapsed="0.000023"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:41.881736" elapsed="0.000021"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:41.881909" elapsed="0.000020"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:41.882072" elapsed="0.000019"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:41.882257" elapsed="0.000022"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:41.882427" elapsed="0.000020"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T01:01:41.882495" elapsed="0.000020"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T01:01:41.796522" elapsed="0.086085">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:01:42.923260" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:01:42.922765" elapsed="0.000528"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:01:42.923780" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:01:42.923467" elapsed="0.000339"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T01:01:42.923854" elapsed="0.000042"/>
</return>
<msg time="2026-04-08T01:01:42.924104" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T01:01:42.922338" elapsed="0.001792"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T01:01:42.928979" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T01:01:42.928792" elapsed="0.000215"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:01:42.929299" elapsed="0.000200"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:01:42.929942" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:01:42.929699" elapsed="0.000269"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:42.930488" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:42.930198" elapsed="0.000331"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:01:42.930681" elapsed="0.000181"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:01:42.931238" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:01:42.931016" elapsed="0.000253"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:42.931765" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:42.931516" elapsed="0.000290"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:01:42.932356" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:01:42.931963" elapsed="0.000420"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:42.932850" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:42.932571" elapsed="0.000324"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:01:42.933386" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:01:42.933050" elapsed="0.000362"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:01:42.940336" elapsed="0.000217"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:01:42.949653" elapsed="0.000212"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:01:42.950477" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:01:42.950026" elapsed="0.000478"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:01:42.951759" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:01:42.951149" elapsed="0.000653"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:01:42.951939" elapsed="0.000037"/>
</return>
<msg time="2026-04-08T01:01:42.952105" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:01:42.950696" elapsed="0.001434"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:01:42.952772" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:01:42.952314" elapsed="0.000486"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:01:42.953473" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:01:42.952962" elapsed="0.000539"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:01:42.954058" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:01:42.965311" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:01:42.953671" elapsed="0.015844">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:42.969961" elapsed="0.000055"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:42.970409" elapsed="0.000061"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:42.970844" elapsed="0.000050"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:42.971261" elapsed="0.000048"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:42.971651" elapsed="0.000044"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:42.972065" elapsed="0.000058"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:42.972764" elapsed="0.000046"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:42.973462" elapsed="0.000065"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:42.973951" elapsed="0.000049"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:01:42.972456" elapsed="0.001683"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:01:42.972277" elapsed="0.001914"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:42.974342" elapsed="0.000021"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:01:42.974405" elapsed="0.000016"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:01:42.949124" elapsed="0.025408">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:01:42.974669" elapsed="0.000016"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T01:01:42.937921" elapsed="0.036855">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:42.974959" elapsed="0.000021"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:42.979603" elapsed="0.000029"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:42.979807" elapsed="0.000021"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T01:01:42.979874" elapsed="0.000015"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T01:01:42.928248" elapsed="0.051734">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:01:42.980103" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:01:42.980147" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:01:42.927627" elapsed="0.052559"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T01:01:42.980412" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:01:42.980286" elapsed="0.000169"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:42.980263" elapsed="0.000214"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:01:42.981895" elapsed="0.000217"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:01:42.982642" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:01:42.982303" elapsed="0.000365"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:01:42.983516" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:01:42.983248" elapsed="0.000295"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:01:42.983590" elapsed="0.000031"/>
</return>
<msg time="2026-04-08T01:01:42.983738" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:01:42.982886" elapsed="0.000876"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:01:42.984309" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:01:42.983923" elapsed="0.000412"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:01:42.984862" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:01:42.984493" elapsed="0.000396"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:01:42.985305" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:01:42.996356" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:01:42.985055" elapsed="0.014421">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:42.999988" elapsed="0.000055"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:43.000430" elapsed="0.000081"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:43.000889" elapsed="0.000048"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:43.001373" elapsed="0.000058"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:43.001817" elapsed="0.000048"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:43.002238" elapsed="0.000048"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:43.002832" elapsed="0.000046"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:43.003253" elapsed="0.000047"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:43.003626" elapsed="0.000045"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:01:43.002536" elapsed="0.001207"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:01:43.002388" elapsed="0.001412"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:43.004124" elapsed="0.000074"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:01:43.004289" elapsed="0.000035"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:01:42.981337" elapsed="0.023251">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:01:43.004850" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:01:43.004948" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:01:42.980633" elapsed="0.024370"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T01:01:43.005896" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T01:01:43.005417" elapsed="0.000541">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T01:01:43.005191" elapsed="0.000829">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T01:01:43.005145" elapsed="0.000907">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T01:01:43.006099" elapsed="0.000018"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:01:42.927025" elapsed="0.079198">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:43.006407" elapsed="0.000022"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:43.006579" elapsed="0.000020"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T01:01:43.006640" elapsed="0.000015"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T01:01:42.924446" elapsed="0.082292">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:43.006911" elapsed="0.000021"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:43.007131" elapsed="0.000021"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:43.007453" elapsed="0.000020"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:43.007620" elapsed="0.000019"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:43.007789" elapsed="0.000019"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:43.007956" elapsed="0.000019"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T01:01:43.008017" elapsed="0.000015"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T01:01:42.921493" elapsed="0.086624">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:01:44.046407" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:01:44.045845" elapsed="0.000611"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:01:44.047018" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:01:44.046663" elapsed="0.000383"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T01:01:44.047097" elapsed="0.000044"/>
</return>
<msg time="2026-04-08T01:01:44.047293" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T01:01:44.045385" elapsed="0.001934"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T01:01:44.052505" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T01:01:44.052276" elapsed="0.000258"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:01:44.052719" elapsed="0.000203"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:01:44.053312" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:01:44.053082" elapsed="0.000256"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:44.053838" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:44.053564" elapsed="0.000358"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:01:44.054087" elapsed="0.000223"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:01:44.054746" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:01:44.054495" elapsed="0.000278"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:44.055216" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:44.054950" elapsed="0.000307"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:01:44.055809" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:01:44.055416" elapsed="0.000420"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:44.056284" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:44.056010" elapsed="0.000320"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:01:44.056832" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:01:44.056507" elapsed="0.000352"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:01:44.064294" elapsed="0.000243"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:01:44.074311" elapsed="0.000352"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:01:44.075290" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:01:44.074845" elapsed="0.000474"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:01:44.076577" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:01:44.075990" elapsed="0.000629"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:01:44.076765" elapsed="0.000047"/>
</return>
<msg time="2026-04-08T01:01:44.076945" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:01:44.075533" elapsed="0.001439"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:01:44.077679" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:01:44.077142" elapsed="0.000565"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:01:44.078463" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:01:44.077902" elapsed="0.000597"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:01:44.079078" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:01:44.090735" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:01:44.078722" elapsed="0.014786">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:44.093790" elapsed="0.000034"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:44.094127" elapsed="0.000054"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:44.094543" elapsed="0.000036"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:44.094822" elapsed="0.000032"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:44.095122" elapsed="0.000058"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:44.095404" elapsed="0.000030"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:44.095849" elapsed="0.000029"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:44.096216" elapsed="0.000032"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:44.096507" elapsed="0.000030"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:01:44.095655" elapsed="0.000965"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:01:44.095510" elapsed="0.001153"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:44.096874" elapsed="0.000030"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:01:44.096960" elapsed="0.000023"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:01:44.073684" elapsed="0.023456">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:01:44.097269" elapsed="0.000023"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T01:01:44.061785" elapsed="0.035675">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:44.097842" elapsed="0.000033"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:44.104502" elapsed="0.000040"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:44.104822" elapsed="0.000034"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T01:01:44.104922" elapsed="0.000027"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T01:01:44.051681" elapsed="0.053408">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:01:44.105287" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:01:44.105360" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:01:44.051043" elapsed="0.054378"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T01:01:44.105737" elapsed="0.000019"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:01:44.105563" elapsed="0.000234"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:44.105532" elapsed="0.000297"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:01:44.107789" elapsed="0.000309"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:01:44.108620" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:01:44.108308" elapsed="0.000338"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:01:44.109480" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:01:44.109188" elapsed="0.000319"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:01:44.109556" elapsed="0.000032"/>
</return>
<msg time="2026-04-08T01:01:44.109707" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:01:44.108828" elapsed="0.000904"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:01:44.110286" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:01:44.109896" elapsed="0.000416"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:01:44.110816" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:01:44.110472" elapsed="0.000370"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:01:44.111232" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:01:44.120082" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:01:44.111005" elapsed="0.010827">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:44.122026" elapsed="0.000024"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:44.122231" elapsed="0.000022"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:44.122402" elapsed="0.000021"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:44.122586" elapsed="0.000021"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:44.122761" elapsed="0.000021"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:44.122926" elapsed="0.000020"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:44.123243" elapsed="0.000115"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:44.123536" elapsed="0.000022"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:44.123733" elapsed="0.000022"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:01:44.123062" elapsed="0.000728"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:01:44.122992" elapsed="0.000824"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:44.123960" elapsed="0.000020"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:01:44.124020" elapsed="0.000016"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:01:44.106952" elapsed="0.017235">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:01:44.124381" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:01:44.124441" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:01:44.106048" elapsed="0.018445"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T01:01:44.125525" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T01:01:44.124988" elapsed="0.000659">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T01:01:44.124658" elapsed="0.001091">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T01:01:44.124621" elapsed="0.001174">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T01:01:44.125861" elapsed="0.000023"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:01:44.050451" elapsed="0.075552">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:44.126284" elapsed="0.000031"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:44.126547" elapsed="0.000038"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T01:01:44.126674" elapsed="0.000028"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T01:01:44.047698" elapsed="0.079129">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:44.127075" elapsed="0.000030"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:44.127386" elapsed="0.000030"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:44.127675" elapsed="0.000036"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:44.127929" elapsed="0.000028"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:44.128274" elapsed="0.000049"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:44.128586" elapsed="0.000045"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T01:01:44.128717" elapsed="0.000025"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T01:01:44.044321" elapsed="0.084548">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:01:45.161135" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:01:45.160665" elapsed="0.000518"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:01:45.161701" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:01:45.161372" elapsed="0.000356"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T01:01:45.161775" elapsed="0.000040"/>
</return>
<msg time="2026-04-08T01:01:45.161946" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T01:01:45.160262" elapsed="0.001710"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T01:01:45.166666" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T01:01:45.166478" elapsed="0.000215"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:01:45.166849" elapsed="0.000191"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:01:45.167423" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:01:45.167211" elapsed="0.000238"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:45.167898" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:45.167640" elapsed="0.000316"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:01:45.168112" elapsed="0.000206"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:01:45.168704" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:01:45.168491" elapsed="0.000239"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:45.169170" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:45.168905" elapsed="0.000311"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:01:45.169746" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:01:45.169399" elapsed="0.000374"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:45.170196" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:45.169941" elapsed="0.000300"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:01:45.170682" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:01:45.170394" elapsed="0.000314"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:01:45.178830" elapsed="0.000224"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:01:45.188063" elapsed="0.000234"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:01:45.188861" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:01:45.188460" elapsed="0.000428"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:01:45.190094" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:01:45.189551" elapsed="0.000592"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:01:45.190303" elapsed="0.000034"/>
</return>
<msg time="2026-04-08T01:01:45.190464" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:01:45.189105" elapsed="0.001384"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:01:45.191106" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:01:45.190654" elapsed="0.000479"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:01:45.191916" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:01:45.191463" elapsed="0.000482"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:01:45.192474" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:01:45.204528" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:01:45.192119" elapsed="0.016510">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:45.209091" elapsed="0.000053"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:45.209588" elapsed="0.000051"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:45.209978" elapsed="0.000091"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:45.210456" elapsed="0.000049"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:45.210852" elapsed="0.000045"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:45.211311" elapsed="0.000050"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:45.211921" elapsed="0.000047"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:45.212522" elapsed="0.000050"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:45.213022" elapsed="0.000048"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:01:45.211621" elapsed="0.001609"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:01:45.211467" elapsed="0.001805"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:45.213480" elapsed="0.000029"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:01:45.213563" elapsed="0.000022"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:01:45.187564" elapsed="0.026162">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:01:45.213862" elapsed="0.000023"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T01:01:45.176491" elapsed="0.037513">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:45.214290" elapsed="0.000031"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:45.220796" elapsed="0.000038"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:45.221072" elapsed="0.000030"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T01:01:45.221191" elapsed="0.000023"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T01:01:45.165917" elapsed="0.055426">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:01:45.221566" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:01:45.221628" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:01:45.165358" elapsed="0.056304"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T01:01:45.221944" elapsed="0.000019"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:01:45.221784" elapsed="0.000219"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:45.221756" elapsed="0.000277"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:01:45.223939" elapsed="0.000312"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:01:45.224931" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:01:45.224467" elapsed="0.000501"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:01:45.225817" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:01:45.225552" elapsed="0.000291"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:01:45.225891" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T01:01:45.226038" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:01:45.225212" elapsed="0.000850"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:01:45.226755" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:01:45.226246" elapsed="0.000536"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:01:45.227316" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:01:45.226944" elapsed="0.000398"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:01:45.227704" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:01:45.235058" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:01:45.227504" elapsed="0.009922">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:45.237687" elapsed="0.000032"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:45.237931" elapsed="0.000028"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:45.238185" elapsed="0.000030"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:45.238423" elapsed="0.000027"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:45.238661" elapsed="0.000027"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:45.238887" elapsed="0.000028"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:45.239274" elapsed="0.000029"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:45.239515" elapsed="0.000027"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:45.239740" elapsed="0.000027"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:01:45.239068" elapsed="0.000743"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:01:45.238975" elapsed="0.000872"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:45.240042" elapsed="0.000027"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:01:45.240125" elapsed="0.000022"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:01:45.223153" elapsed="0.017148">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:01:45.240548" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:01:45.240611" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:01:45.222312" elapsed="0.018332"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T01:01:45.241587" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T01:01:45.241062" elapsed="0.000615">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T01:01:45.240761" elapsed="0.001004">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T01:01:45.240735" elapsed="0.001076">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T01:01:45.241876" elapsed="0.000023"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:01:45.164779" elapsed="0.077237">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:45.242298" elapsed="0.000033"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:45.242542" elapsed="0.000029"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T01:01:45.242630" elapsed="0.000021"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T01:01:45.162288" elapsed="0.080483">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:45.243011" elapsed="0.000030"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:45.243287" elapsed="0.000030"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:45.243531" elapsed="0.000029"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:45.243763" elapsed="0.000028"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:45.243999" elapsed="0.000029"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:45.244279" elapsed="0.000035"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T01:01:45.244373" elapsed="0.000022"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T01:01:45.159395" elapsed="0.085120">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:01:46.276420" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:01:46.275837" elapsed="0.000619"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:01:46.276958" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:01:46.276639" elapsed="0.000346"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T01:01:46.277042" elapsed="0.000049"/>
</return>
<msg time="2026-04-08T01:01:46.277252" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T01:01:46.275419" elapsed="0.001930"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T01:01:46.282745" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T01:01:46.282548" elapsed="0.000224"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:01:46.282930" elapsed="0.000197"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:01:46.283525" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:01:46.283303" elapsed="0.000254"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:46.284104" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:46.283779" elapsed="0.000397"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:01:46.284387" elapsed="0.000197"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:01:46.284969" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:01:46.284742" elapsed="0.000253"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:46.285449" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:46.285191" elapsed="0.000311"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:01:46.286027" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:01:46.285661" elapsed="0.000393"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:46.286493" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:46.286250" elapsed="0.000286"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:01:46.287034" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:01:46.286699" elapsed="0.000362"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:01:46.294140" elapsed="0.000234"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:01:46.304606" elapsed="0.000218"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:01:46.305404" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:01:46.304985" elapsed="0.000448"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:01:46.306610" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:01:46.306048" elapsed="0.000603"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:01:46.306785" elapsed="0.000034"/>
</return>
<msg time="2026-04-08T01:01:46.306944" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:01:46.305639" elapsed="0.001330"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:01:46.307604" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:01:46.307135" elapsed="0.000497"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:01:46.308318" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:01:46.307795" elapsed="0.000553"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:01:46.308992" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:01:46.319614" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:01:46.308568" elapsed="0.014432">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:46.323463" elapsed="0.000055"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:46.323893" elapsed="0.000051"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:46.324417" elapsed="0.000052"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:46.324810" elapsed="0.000046"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:46.325242" elapsed="0.000049"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:46.325626" elapsed="0.000045"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:46.326269" elapsed="0.000048"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:46.326794" elapsed="0.000049"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:46.327499" elapsed="0.000056"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:01:46.325935" elapsed="0.001768"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:01:46.325778" elapsed="0.001992"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:46.328134" elapsed="0.000098"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:01:46.328332" elapsed="0.000039"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:01:46.304035" elapsed="0.024576">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:01:46.328781" elapsed="0.000037"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T01:01:46.291796" elapsed="0.037228">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:46.329533" elapsed="0.000054"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:46.335776" elapsed="0.000028"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:46.335976" elapsed="0.000021"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T01:01:46.336041" elapsed="0.000016"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T01:01:46.281943" elapsed="0.054206">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:01:46.336289" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:01:46.336334" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:01:46.281373" elapsed="0.054984"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T01:01:46.336576" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:01:46.336454" elapsed="0.000165"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:46.336431" elapsed="0.000212"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:01:46.337984" elapsed="0.000226"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:01:46.338738" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:01:46.338368" elapsed="0.000396"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:01:46.339634" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:01:46.339363" elapsed="0.000298"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:01:46.339720" elapsed="0.000031"/>
</return>
<msg time="2026-04-08T01:01:46.339871" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:01:46.338992" elapsed="0.000904"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:01:46.340451" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:01:46.340058" elapsed="0.000420"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:01:46.340984" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:01:46.340636" elapsed="0.000374"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:01:46.341408" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:01:46.350793" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:01:46.341204" elapsed="0.012018">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:46.353672" elapsed="0.000054"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:46.354089" elapsed="0.000048"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:46.354526" elapsed="0.000054"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:46.354969" elapsed="0.000050"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:46.355421" elapsed="0.000050"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:46.355852" elapsed="0.000048"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:46.356513" elapsed="0.000048"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:46.356926" elapsed="0.000046"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:46.357448" elapsed="0.000053"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:01:46.356196" elapsed="0.001389"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:01:46.356004" elapsed="0.001643"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:46.357988" elapsed="0.000047"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:01:46.358126" elapsed="0.000076"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:01:46.337431" elapsed="0.021001">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:01:46.358703" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:01:46.358808" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:01:46.336801" elapsed="0.022063"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T01:01:46.360612" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T01:01:46.359723" elapsed="0.001082">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T01:01:46.359063" elapsed="0.001962">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T01:01:46.359019" elapsed="0.002106">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T01:01:46.361283" elapsed="0.000041"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:01:46.280740" elapsed="0.080914">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:46.362229" elapsed="0.000070"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:46.362801" elapsed="0.000067"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T01:01:46.363006" elapsed="0.000052"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T01:01:46.277684" elapsed="0.085638">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:46.363832" elapsed="0.000066"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:46.364287" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:46.364469" elapsed="0.000020"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:46.364638" elapsed="0.000030"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:46.364852" elapsed="0.000023"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:46.365023" elapsed="0.000023"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T01:01:46.365098" elapsed="0.000016"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T01:01:46.274564" elapsed="0.090654">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:01:47.395967" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:01:47.395476" elapsed="0.000524"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:01:47.396525" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:01:47.396193" elapsed="0.000360"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T01:01:47.396600" elapsed="0.000040"/>
</return>
<msg time="2026-04-08T01:01:47.396774" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T01:01:47.395051" elapsed="0.001757"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T01:01:47.402000" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T01:01:47.401783" elapsed="0.000245"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:01:47.402205" elapsed="0.000200"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:01:47.402778" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:01:47.402564" elapsed="0.000248"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:47.403380" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:47.403017" elapsed="0.000406"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:01:47.403579" elapsed="0.000188"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:01:47.404151" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:01:47.403938" elapsed="0.000264"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:47.404632" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:47.404383" elapsed="0.000292"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:01:47.405233" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:01:47.404843" elapsed="0.000418"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:47.405676" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:47.405436" elapsed="0.000285"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:01:47.406190" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:01:47.405885" elapsed="0.000333"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:01:47.413002" elapsed="0.000251"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:01:47.422213" elapsed="0.000214"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:01:47.422975" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:01:47.422587" elapsed="0.000415"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:01:47.424171" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:01:47.423621" elapsed="0.000595"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:01:47.424350" elapsed="0.000035"/>
</return>
<msg time="2026-04-08T01:01:47.424511" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:01:47.423217" elapsed="0.001320"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:01:47.425183" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:01:47.424702" elapsed="0.000526"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:01:47.425839" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:01:47.425404" elapsed="0.000462"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:01:47.426391" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:01:47.436575" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:01:47.426033" elapsed="0.012430">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:47.438657" elapsed="0.000024"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:47.438837" elapsed="0.000022"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:47.439008" elapsed="0.000020"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:47.439199" elapsed="0.000023"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:47.439378" elapsed="0.000020"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:47.439547" elapsed="0.000021"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:47.439827" elapsed="0.000021"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:47.440057" elapsed="0.000021"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:47.440273" elapsed="0.000022"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:01:47.439694" elapsed="0.000716"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:01:47.439619" elapsed="0.000822"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:47.440591" elapsed="0.000021"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:01:47.440652" elapsed="0.000016"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:01:47.421700" elapsed="0.019093">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:01:47.440869" elapsed="0.000016"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T01:01:47.410690" elapsed="0.030283">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:47.441176" elapsed="0.000031"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:47.448110" elapsed="0.000042"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:47.448417" elapsed="0.000031"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T01:01:47.448512" elapsed="0.000021"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T01:01:47.400918" elapsed="0.047745">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:01:47.448858" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:01:47.448923" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:01:47.400340" elapsed="0.048617"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T01:01:47.449275" elapsed="0.000020"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:01:47.449087" elapsed="0.000250"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:47.449057" elapsed="0.000312"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:01:47.451340" elapsed="0.000383"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:01:47.452514" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:01:47.451998" elapsed="0.000554"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:01:47.453634" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:01:47.453360" elapsed="0.000301"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:01:47.453710" elapsed="0.000032"/>
</return>
<msg time="2026-04-08T01:01:47.453871" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:01:47.452874" elapsed="0.001023"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:01:47.454465" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:01:47.454065" elapsed="0.000428"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:01:47.455014" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:01:47.454655" elapsed="0.000385"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:01:47.455491" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:01:47.463345" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:01:47.455278" elapsed="0.010235">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:47.465793" elapsed="0.000049"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:47.466069" elapsed="0.000030"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:47.466336" elapsed="0.000029"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:47.466572" elapsed="0.000029"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:47.466819" elapsed="0.000031"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:47.467058" elapsed="0.000028"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:47.467455" elapsed="0.000027"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:47.467698" elapsed="0.000029"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:47.467936" elapsed="0.000030"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:01:47.467271" elapsed="0.000742"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:01:47.467151" elapsed="0.000898"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:47.468270" elapsed="0.000030"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:01:47.468355" elapsed="0.000022"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:01:47.450491" elapsed="0.018019">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:01:47.468698" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:01:47.468761" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:01:47.449588" elapsed="0.019215"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T01:01:47.469716" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T01:01:47.469269" elapsed="0.000532">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T01:01:47.468931" elapsed="0.000956">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T01:01:47.468903" elapsed="0.001027">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T01:01:47.469994" elapsed="0.000021"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:01:47.399758" elapsed="0.070371">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:47.470411" elapsed="0.000030"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:47.470646" elapsed="0.000027"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T01:01:47.470731" elapsed="0.000020"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T01:01:47.397117" elapsed="0.073748">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:47.471172" elapsed="0.000031"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:47.471429" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:47.471668" elapsed="0.000028"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:47.471894" elapsed="0.000027"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:47.472127" elapsed="0.000045"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:47.472380" elapsed="0.000027"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T01:01:47.472465" elapsed="0.000047"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T01:01:47.394234" elapsed="0.078406">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:01:48.505829" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:01:48.505362" elapsed="0.000499"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:01:48.506369" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:01:48.506035" elapsed="0.000361"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T01:01:48.506443" elapsed="0.000041"/>
</return>
<msg time="2026-04-08T01:01:48.506615" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T01:01:48.504942" elapsed="0.001699"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T01:01:48.511378" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T01:01:48.511187" elapsed="0.000218"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:01:48.511614" elapsed="0.000207"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:01:48.512210" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:01:48.511981" elapsed="0.000256"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:48.512689" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:48.512432" elapsed="0.000299"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:01:48.512880" elapsed="0.000185"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:01:48.513442" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:01:48.513235" elapsed="0.000233"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:48.513900" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:48.513654" elapsed="0.000287"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:01:48.514464" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:01:48.514098" elapsed="0.000392"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:48.514891" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:48.514659" elapsed="0.000275"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:01:48.515386" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:01:48.515086" elapsed="0.000327"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:01:48.522179" elapsed="0.000293"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:01:48.531635" elapsed="0.000215"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:01:48.532422" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:01:48.532010" elapsed="0.000439"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:01:48.533619" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:01:48.533048" elapsed="0.000613"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:01:48.533798" elapsed="0.000041"/>
</return>
<msg time="2026-04-08T01:01:48.533965" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:01:48.532642" elapsed="0.001348"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:01:48.534636" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:01:48.534172" elapsed="0.000492"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:01:48.535271" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:01:48.534827" elapsed="0.000471"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:01:48.535827" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:01:48.555872" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:01:48.535492" elapsed="0.024411">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:48.560368" elapsed="0.000054"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:48.560773" elapsed="0.000084"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:48.561327" elapsed="0.000054"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:48.561723" elapsed="0.000045"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:48.562104" elapsed="0.000045"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:48.562634" elapsed="0.000045"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:48.563290" elapsed="0.000050"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:48.563814" elapsed="0.000047"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:48.564336" elapsed="0.000023"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:01:48.562945" elapsed="0.001478"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:01:48.562786" elapsed="0.001668"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:48.564608" elapsed="0.000027"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:01:48.564679" elapsed="0.000017"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:01:48.531090" elapsed="0.033710">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:01:48.564875" elapsed="0.000016"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T01:01:48.519846" elapsed="0.045131">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:48.565236" elapsed="0.000023"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:48.569800" elapsed="0.000028"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:48.570001" elapsed="0.000020"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T01:01:48.570066" elapsed="0.000015"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T01:01:48.510631" elapsed="0.059563">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:01:48.570320" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:01:48.570364" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:01:48.510051" elapsed="0.060337"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T01:01:48.570610" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:01:48.570486" elapsed="0.000166"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:48.570464" elapsed="0.000212"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:01:48.572105" elapsed="0.000234"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:01:48.572839" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:01:48.572501" elapsed="0.000363"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:01:48.573692" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:01:48.573422" elapsed="0.000297"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:01:48.573767" elapsed="0.000031"/>
</return>
<msg time="2026-04-08T01:01:48.573918" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:01:48.573054" elapsed="0.000889"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:01:48.574521" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:01:48.574125" elapsed="0.000423"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:01:48.575084" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:01:48.574709" elapsed="0.000402"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:01:48.575514" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:01:48.583007" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:01:48.575296" elapsed="0.009502">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:48.584984" elapsed="0.000022"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:48.585175" elapsed="0.000022"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:48.585345" elapsed="0.000020"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:48.585511" elapsed="0.000020"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:48.585683" elapsed="0.000020"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:48.585846" elapsed="0.000020"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:48.586173" elapsed="0.000022"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:48.586353" elapsed="0.000020"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:48.586514" elapsed="0.000019"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:01:48.586028" elapsed="0.000538"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:01:48.585957" elapsed="0.000637"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:48.586735" elapsed="0.000020"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:01:48.586792" elapsed="0.000016"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:01:48.571541" elapsed="0.015358">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:01:48.587050" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:01:48.587095" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:01:48.570831" elapsed="0.016287"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T01:01:48.588008" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T01:01:48.587561" elapsed="0.000533">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T01:01:48.587237" elapsed="0.000970">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T01:01:48.587214" elapsed="0.001040">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T01:01:48.588320" elapsed="0.000022"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:01:48.509500" elapsed="0.078961">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:48.588744" elapsed="0.000033"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:48.588990" elapsed="0.000029"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T01:01:48.589076" elapsed="0.000021"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T01:01:48.506940" elapsed="0.082300">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:48.589485" elapsed="0.000030"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:48.589739" elapsed="0.000029"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:48.589978" elapsed="0.000029"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:48.590234" elapsed="0.000032"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:48.590477" elapsed="0.000029"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:48.590737" elapsed="0.000032"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T01:01:48.590878" elapsed="0.000039"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T01:01:48.504116" elapsed="0.086944">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:01:49.626553" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:01:49.626019" elapsed="0.000568"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:01:49.627077" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:01:49.626763" elapsed="0.000341"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T01:01:49.627191" elapsed="0.000041"/>
</return>
<msg time="2026-04-08T01:01:49.627366" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T01:01:49.625618" elapsed="0.001774"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T01:01:49.632204" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T01:01:49.631998" elapsed="0.000242"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:01:49.632449" elapsed="0.000230"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:01:49.633173" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:01:49.632892" elapsed="0.000311"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:49.633664" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:49.633403" elapsed="0.000303"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:01:49.633879" elapsed="0.000234"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:01:49.634503" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:01:49.634292" elapsed="0.000237"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:49.634950" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:49.634703" elapsed="0.000288"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:01:49.635548" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:01:49.635201" elapsed="0.000373"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:49.635979" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:49.635744" elapsed="0.000279"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:01:49.636477" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:01:49.636192" elapsed="0.000310"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:01:49.645175" elapsed="0.000224"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:01:49.654595" elapsed="0.000216"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:01:49.655404" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:01:49.654984" elapsed="0.000448"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:01:49.656617" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:01:49.656031" elapsed="0.000631"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:01:49.656798" elapsed="0.000035"/>
</return>
<msg time="2026-04-08T01:01:49.656959" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:01:49.655621" elapsed="0.001363"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:01:49.657624" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:01:49.657151" elapsed="0.000558"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:01:49.658329" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:01:49.657874" elapsed="0.000482"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:01:49.658859" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:01:49.670752" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:01:49.658523" elapsed="0.016534">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:49.675577" elapsed="0.000058"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:49.676014" elapsed="0.000050"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:49.676473" elapsed="0.000050"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:49.676886" elapsed="0.000051"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:49.677349" elapsed="0.000051"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:49.677759" elapsed="0.000049"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:49.678450" elapsed="0.000051"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:49.679063" elapsed="0.000053"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:49.679453" elapsed="0.000031"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:01:49.678091" elapsed="0.001478"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:01:49.677921" elapsed="0.001688"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:49.679813" elapsed="0.000029"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:01:49.679900" elapsed="0.000023"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:01:49.654063" elapsed="0.026004">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:01:49.680196" elapsed="0.000023"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T01:01:49.642597" elapsed="0.037745">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:49.680594" elapsed="0.000030"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:49.687144" elapsed="0.000061"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:49.687396" elapsed="0.000022"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T01:01:49.687463" elapsed="0.000015"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T01:01:49.631439" elapsed="0.056178">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:01:49.687740" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:01:49.687784" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:01:49.630817" elapsed="0.056991"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T01:01:49.688023" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:01:49.687901" elapsed="0.000165"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:49.687881" elapsed="0.000208"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:01:49.689475" elapsed="0.000211"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:01:49.690150" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:01:49.689842" elapsed="0.000349"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:01:49.691054" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:01:49.690735" elapsed="0.000346"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:01:49.691129" elapsed="0.000051"/>
</return>
<msg time="2026-04-08T01:01:49.691309" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:01:49.690377" elapsed="0.000957"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:01:49.691909" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:01:49.691500" elapsed="0.000436"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:01:49.692467" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:01:49.692096" elapsed="0.000398"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:01:49.692868" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:01:49.701388" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:01:49.692658" elapsed="0.010490">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:49.703385" elapsed="0.000031"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:49.703578" elapsed="0.000021"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:49.703746" elapsed="0.000019"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:49.703939" elapsed="0.000024"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:49.704118" elapsed="0.000019"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:49.704306" elapsed="0.000020"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:49.704569" elapsed="0.000020"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:49.704741" elapsed="0.000020"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:49.704912" elapsed="0.000022"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:01:49.704438" elapsed="0.000529"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:01:49.704371" elapsed="0.000622"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:49.705135" elapsed="0.000034"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:01:49.705213" elapsed="0.000016"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:01:49.688904" elapsed="0.016418">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:01:49.705477" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:01:49.705548" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:01:49.688267" elapsed="0.017309"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T01:01:49.706263" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T01:01:49.705911" elapsed="0.000415">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T01:01:49.705666" elapsed="0.000723">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T01:01:49.705645" elapsed="0.000776">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T01:01:49.706468" elapsed="0.000017"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:01:49.630225" elapsed="0.076343">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:49.706781" elapsed="0.000022"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:49.706962" elapsed="0.000021"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T01:01:49.707026" elapsed="0.000015"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T01:01:49.627691" elapsed="0.079435">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:49.707389" elapsed="0.000036"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:49.707663" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:49.707929" elapsed="0.000036"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:49.708202" elapsed="0.000030"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:49.708471" elapsed="0.000033"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:49.708718" elapsed="0.000027"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T01:01:49.708802" elapsed="0.000020"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T01:01:49.624791" elapsed="0.084177">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:01:50.743222" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:01:50.742718" elapsed="0.000538"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:01:50.743857" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:01:50.743437" elapsed="0.000447"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T01:01:50.743933" elapsed="0.000042"/>
</return>
<msg time="2026-04-08T01:01:50.744107" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T01:01:50.742306" elapsed="0.001825"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T01:01:50.748921" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T01:01:50.748728" elapsed="0.000220"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:01:50.749105" elapsed="0.000214"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:01:50.749688" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:01:50.749478" elapsed="0.000235"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:50.750305" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:50.749911" elapsed="0.000437"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:01:50.750498" elapsed="0.000180"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:01:50.751036" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:01:50.750833" elapsed="0.000228"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:50.751502" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:50.751257" elapsed="0.000285"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:01:50.752094" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:01:50.751698" elapsed="0.000422"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:50.752549" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:50.752313" elapsed="0.000278"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:01:50.753023" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:01:50.752744" elapsed="0.000304"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:01:50.759973" elapsed="0.000230"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:01:50.769237" elapsed="0.000213"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:01:50.770003" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:01:50.769612" elapsed="0.000417"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:01:50.771217" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:01:50.770650" elapsed="0.000609"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:01:50.771396" elapsed="0.000043"/>
</return>
<msg time="2026-04-08T01:01:50.771569" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:01:50.770246" elapsed="0.001348"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:01:50.772450" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:01:50.771825" elapsed="0.000653"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:01:50.773069" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:01:50.772642" elapsed="0.000454"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:01:50.773614" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:01:50.784743" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:01:50.773280" elapsed="0.013973">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:50.787551" elapsed="0.000107"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:50.787884" elapsed="0.000030"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:50.788123" elapsed="0.000028"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:50.788387" elapsed="0.000029"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:50.788633" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:50.788867" elapsed="0.000028"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:50.789283" elapsed="0.000031"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:50.789616" elapsed="0.000029"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:50.789889" elapsed="0.000029"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:01:50.789075" elapsed="0.000927"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:01:50.788968" elapsed="0.001075"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:50.790283" elapsed="0.000031"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:01:50.790370" elapsed="0.000022"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:01:50.768725" elapsed="0.021810">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:01:50.790634" elapsed="0.000021"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T01:01:50.757625" elapsed="0.033149">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:50.791025" elapsed="0.000030"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:50.797495" elapsed="0.000038"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:50.797777" elapsed="0.000029"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T01:01:50.797869" elapsed="0.000021"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T01:01:50.748182" elapsed="0.049838">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:01:50.798202" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:01:50.798267" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:01:50.747575" elapsed="0.050726"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T01:01:50.798594" elapsed="0.000019"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:01:50.798430" elapsed="0.000223"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:50.798401" elapsed="0.000283"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:01:50.800644" elapsed="0.000292"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:01:50.801606" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:01:50.801154" elapsed="0.000488"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:01:50.802762" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:01:50.802391" elapsed="0.000407"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:01:50.802864" elapsed="0.000042"/>
</return>
<msg time="2026-04-08T01:01:50.803070" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:01:50.801896" elapsed="0.001208"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:01:50.803901" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:01:50.803350" elapsed="0.000588"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:01:50.804639" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:01:50.804181" elapsed="0.000484"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:01:50.805033" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:01:50.813758" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:01:50.804827" elapsed="0.012184">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:50.817472" elapsed="0.000052"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:50.817863" elapsed="0.000044"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:50.818263" elapsed="0.000047"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:50.818642" elapsed="0.000044"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:50.819027" elapsed="0.000044"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:50.819451" elapsed="0.000049"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:50.820049" elapsed="0.000045"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:50.820469" elapsed="0.000047"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:50.820839" elapsed="0.000044"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:01:50.819758" elapsed="0.001197"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:01:50.819603" elapsed="0.001409"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:50.821358" elapsed="0.000046"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:01:50.821491" elapsed="0.000034"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:01:50.799848" elapsed="0.021892">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:01:50.822000" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:01:50.822097" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:01:50.798901" elapsed="0.023247"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T01:01:50.823694" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T01:01:50.822860" elapsed="0.000971">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T01:01:50.822370" elapsed="0.001689">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T01:01:50.822326" elapsed="0.001807">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T01:01:50.824274" elapsed="0.000041"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:01:50.746998" elapsed="0.077491">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:50.824673" elapsed="0.000021"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:50.824844" elapsed="0.000020"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T01:01:50.824905" elapsed="0.000014"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T01:01:50.744457" elapsed="0.080547">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:50.825189" elapsed="0.000022"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:50.825374" elapsed="0.000020"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:50.825547" elapsed="0.000019"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:50.825712" elapsed="0.000019"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:50.825880" elapsed="0.000019"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:50.826046" elapsed="0.000020"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T01:01:50.826106" elapsed="0.000015"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T01:01:50.741442" elapsed="0.084781">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:01:51.859609" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:01:51.859114" elapsed="0.000528"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:01:51.860131" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:01:51.859817" elapsed="0.000360"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T01:01:51.860228" elapsed="0.000041"/>
</return>
<msg time="2026-04-08T01:01:51.860401" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T01:01:51.858720" elapsed="0.001707"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T01:01:51.865179" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T01:01:51.864975" elapsed="0.000233"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:01:51.865363" elapsed="0.000202"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:01:51.866072" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:01:51.865857" elapsed="0.000243"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:51.866570" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:51.866312" elapsed="0.000301"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:01:51.866764" elapsed="0.000182"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:01:51.867328" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:01:51.867102" elapsed="0.000252"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:51.867770" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:51.867526" elapsed="0.000286"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:01:51.868329" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:01:51.867972" elapsed="0.000383"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:51.868763" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:51.868527" elapsed="0.000279"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:01:51.869256" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:01:51.868958" elapsed="0.000324"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:01:51.876237" elapsed="0.000219"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:01:51.886414" elapsed="0.000217"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:01:51.887272" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:01:51.886796" elapsed="0.000505"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:01:51.888490" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:01:51.887930" elapsed="0.000601"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:01:51.888668" elapsed="0.000043"/>
</return>
<msg time="2026-04-08T01:01:51.888839" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:01:51.887514" elapsed="0.001349"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:01:51.889542" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:01:51.889030" elapsed="0.000540"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:01:51.890183" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:01:51.889735" elapsed="0.000476"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:01:51.890718" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:01:51.901880" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:01:51.890385" elapsed="0.013268">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:51.903846" elapsed="0.000024"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:51.904027" elapsed="0.000021"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:51.904220" elapsed="0.000022"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:51.904395" elapsed="0.000021"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:51.904572" elapsed="0.000020"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:51.904740" elapsed="0.000021"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:51.905024" elapsed="0.000020"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:51.905370" elapsed="0.000029"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:51.905591" elapsed="0.000022"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:01:51.904892" elapsed="0.000783"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:01:51.904814" elapsed="0.000891"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:51.905855" elapsed="0.000022"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:01:51.905918" elapsed="0.000017"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:01:51.885869" elapsed="0.020170">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:01:51.906111" elapsed="0.000016"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T01:01:51.873841" elapsed="0.032389">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:51.906513" elapsed="0.000053"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:51.917086" elapsed="0.000127"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:51.917514" elapsed="0.000030"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T01:01:51.917606" elapsed="0.000022"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T01:01:51.864436" elapsed="0.053318">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:01:51.917913" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:01:51.917973" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:01:51.863854" elapsed="0.054151"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T01:01:51.918317" elapsed="0.000019"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:01:51.918131" elapsed="0.000245"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:51.918103" elapsed="0.000304"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:01:51.920253" elapsed="0.000301"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:01:51.921237" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:01:51.920772" elapsed="0.000502"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:01:51.922391" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:01:51.922001" elapsed="0.000426"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:01:51.922493" elapsed="0.000041"/>
</return>
<msg time="2026-04-08T01:01:51.922697" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:01:51.921529" elapsed="0.001201"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:01:51.923485" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:01:51.922951" elapsed="0.000571"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:01:51.924308" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:01:51.923797" elapsed="0.000548"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:01:51.924850" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:01:51.934509" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:01:51.924573" elapsed="0.011713">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:51.936474" elapsed="0.000023"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:51.936646" elapsed="0.000020"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:51.936813" elapsed="0.000020"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:51.936980" elapsed="0.000020"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:51.937198" elapsed="0.000021"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:51.937371" elapsed="0.000044"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:51.937955" elapsed="0.000044"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:51.938370" elapsed="0.000048"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:51.938742" elapsed="0.000044"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:01:51.937665" elapsed="0.001193"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:01:51.937515" elapsed="0.001401"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:51.939261" elapsed="0.000047"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:01:51.939395" elapsed="0.000032"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:01:51.919478" elapsed="0.020154">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:01:51.939886" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:01:51.939984" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:01:51.918620" elapsed="0.021416"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T01:01:51.941559" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T01:01:51.940750" elapsed="0.000944">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T01:01:51.940264" elapsed="0.001570">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T01:01:51.940219" elapsed="0.001684">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T01:01:51.942004" elapsed="0.000034"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:01:51.863268" elapsed="0.078989">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:51.942663" elapsed="0.000048"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:51.943039" elapsed="0.000044"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T01:01:51.943283" elapsed="0.000036"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T01:01:51.860724" elapsed="0.082785">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:51.943893" elapsed="0.000047"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:51.944323" elapsed="0.000046"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:51.944710" elapsed="0.000045"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:51.945098" elapsed="0.000046"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:51.945513" elapsed="0.000045"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:51.945885" elapsed="0.000044"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T01:01:51.946021" elapsed="0.000032"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T01:01:51.857899" elapsed="0.088381">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:01:52.982835" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:01:52.982357" elapsed="0.000512"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:01:52.983380" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:01:52.983044" elapsed="0.000363"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T01:01:52.983455" elapsed="0.000041"/>
</return>
<msg time="2026-04-08T01:01:52.983627" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T01:01:52.981915" elapsed="0.001737"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T01:01:52.988593" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T01:01:52.988404" elapsed="0.000216"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:01:52.988775" elapsed="0.000194"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:01:52.989351" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:01:52.989124" elapsed="0.000253"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:52.989900" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:52.989594" elapsed="0.000348"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:01:52.990107" elapsed="0.000211"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:01:52.990712" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:01:52.990500" elapsed="0.000237"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:52.991192" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:52.990926" elapsed="0.000309"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:01:52.991752" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:01:52.991390" elapsed="0.000403"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:52.992387" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:52.992099" elapsed="0.000333"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:01:52.992915" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:01:52.992600" elapsed="0.000342"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:01:52.999725" elapsed="0.000243"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:01:53.009262" elapsed="0.000217"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:01:53.010076" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:01:53.009669" elapsed="0.000438"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:01:53.011381" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:01:53.010781" elapsed="0.000643"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:01:53.011564" elapsed="0.000033"/>
</return>
<msg time="2026-04-08T01:01:53.011751" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:01:53.010358" elapsed="0.001419"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:01:53.012443" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:01:53.011961" elapsed="0.000517"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:01:53.013130" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:01:53.012643" elapsed="0.000540"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:01:53.013722" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:01:53.024688" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:01:53.013361" elapsed="0.013908">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:53.027579" elapsed="0.000068"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:53.027907" elapsed="0.000037"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:53.028229" elapsed="0.000043"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:53.028565" elapsed="0.000033"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:53.028822" elapsed="0.000030"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:53.029057" elapsed="0.000029"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:53.029466" elapsed="0.000029"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:53.029793" elapsed="0.000031"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:53.030068" elapsed="0.000030"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:01:53.029277" elapsed="0.000924"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:01:53.029173" elapsed="0.001070"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:53.030458" elapsed="0.000030"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:01:53.030542" elapsed="0.000022"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:01:53.008732" elapsed="0.021973">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:01:53.030881" elapsed="0.000025"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T01:01:52.997423" elapsed="0.033612">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:53.031324" elapsed="0.000032"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:53.037641" elapsed="0.000038"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:53.037921" elapsed="0.000030"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T01:01:53.038013" elapsed="0.000022"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T01:01:52.987825" elapsed="0.050356">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:01:53.038345" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:01:53.038407" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:01:52.987148" elapsed="0.051293"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T01:01:53.038725" elapsed="0.000020"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:01:53.038566" elapsed="0.000219"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:53.038538" elapsed="0.000278"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:01:53.040729" elapsed="0.000296"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:01:53.041703" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:01:53.041266" elapsed="0.000474"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:01:53.042879" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:01:53.042505" elapsed="0.000411"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:01:53.042982" elapsed="0.000043"/>
</return>
<msg time="2026-04-08T01:01:53.043215" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:01:53.042000" elapsed="0.001252"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:01:53.044041" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:01:53.043479" elapsed="0.000600"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:01:53.044709" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:01:53.044329" elapsed="0.000406"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:01:53.045102" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:01:53.052988" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:01:53.044898" elapsed="0.011465">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:53.056782" elapsed="0.000051"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:53.057204" elapsed="0.000050"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:53.057679" elapsed="0.000047"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:53.058061" elapsed="0.000045"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:53.058487" elapsed="0.000046"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:53.058860" elapsed="0.000045"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:53.059495" elapsed="0.000049"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:53.059890" elapsed="0.000045"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:53.060287" elapsed="0.000047"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:01:53.059151" elapsed="0.001259"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:01:53.059003" elapsed="0.001464"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:53.060786" elapsed="0.000045"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:01:53.060917" elapsed="0.000034"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:01:53.039928" elapsed="0.021255">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:01:53.061444" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:01:53.061544" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:01:53.039032" elapsed="0.022567"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T01:01:53.063011" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T01:01:53.062303" elapsed="0.000843">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T01:01:53.061786" elapsed="0.001534">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T01:01:53.061743" elapsed="0.001647">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T01:01:53.063545" elapsed="0.000039"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:01:52.986570" elapsed="0.077203">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:53.064202" elapsed="0.000052"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:53.064519" elapsed="0.000020"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T01:01:53.064581" elapsed="0.000015"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T01:01:52.983969" elapsed="0.080710">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:53.064851" elapsed="0.000020"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:53.065031" elapsed="0.000020"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:53.065218" elapsed="0.000020"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:53.065426" elapsed="0.000029"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:53.065654" elapsed="0.000024"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:53.065830" elapsed="0.000020"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T01:01:53.065892" elapsed="0.000015"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T01:01:52.980935" elapsed="0.085059">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:01:54.097293" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:01:54.096786" elapsed="0.000542"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:01:54.097815" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:01:54.097503" elapsed="0.000338"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T01:01:54.097887" elapsed="0.000042"/>
</return>
<msg time="2026-04-08T01:01:54.098060" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T01:01:54.096361" elapsed="0.001724"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T01:01:54.102826" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T01:01:54.102639" elapsed="0.000213"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:01:54.103032" elapsed="0.000214"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:01:54.103611" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:01:54.103404" elapsed="0.000233"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:54.104081" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:54.103827" elapsed="0.000295"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:01:54.104286" elapsed="0.000182"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:01:54.104831" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:01:54.104624" elapsed="0.000233"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:54.105290" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:54.105028" elapsed="0.000304"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:01:54.105829" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:01:54.105487" elapsed="0.000368"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:54.106297" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:54.106024" elapsed="0.000317"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:01:54.106976" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:01:54.106510" elapsed="0.000492"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:01:54.115544" elapsed="0.000231"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:01:54.124743" elapsed="0.000211"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:01:54.125528" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:01:54.125112" elapsed="0.000443"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:01:54.126774" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:01:54.126230" elapsed="0.000613"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:01:54.127017" elapsed="0.000036"/>
</return>
<msg time="2026-04-08T01:01:54.127200" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:01:54.125804" elapsed="0.001423"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:01:54.127834" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:01:54.127391" elapsed="0.000470"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:01:54.128468" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:01:54.128022" elapsed="0.000474"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:01:54.128993" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:01:54.138566" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:01:54.128663" elapsed="0.011754">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:54.140610" elapsed="0.000024"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:54.140789" elapsed="0.000021"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:54.140960" elapsed="0.000021"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:54.141129" elapsed="0.000021"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:54.141322" elapsed="0.000022"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:54.141491" elapsed="0.000021"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:54.141765" elapsed="0.000020"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:54.141995" elapsed="0.000021"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:54.142205" elapsed="0.000023"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:01:54.141631" elapsed="0.000669"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:01:54.141560" elapsed="0.000769"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:54.142476" elapsed="0.000021"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:01:54.142537" elapsed="0.000016"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:01:54.124248" elapsed="0.018405">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:01:54.142723" elapsed="0.000016"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T01:01:54.113213" elapsed="0.029653">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:54.143046" elapsed="0.000021"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:54.149194" elapsed="0.000039"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:54.149527" elapsed="0.000030"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T01:01:54.149621" elapsed="0.000022"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T01:01:54.102084" elapsed="0.047685">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:01:54.149924" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:01:54.149988" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:01:54.101528" elapsed="0.048493"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T01:01:54.150320" elapsed="0.000020"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:01:54.150140" elapsed="0.000242"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:54.150113" elapsed="0.000300"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:01:54.152284" elapsed="0.000295"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:01:54.153249" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:01:54.152800" elapsed="0.000487"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:01:54.154426" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:01:54.154028" elapsed="0.000445"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:01:54.154572" elapsed="0.000056"/>
</return>
<msg time="2026-04-08T01:01:54.154855" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:01:54.153548" elapsed="0.001344"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:01:54.155616" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:01:54.155134" elapsed="0.000509"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:01:54.156193" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:01:54.155818" elapsed="0.000403"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:01:54.156618" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:01:54.164795" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:01:54.156399" elapsed="0.010784">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:54.167490" elapsed="0.000035"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:54.167780" elapsed="0.000032"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:54.168052" elapsed="0.000031"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:54.168325" elapsed="0.000029"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:54.168571" elapsed="0.000029"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:54.168806" elapsed="0.000029"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:54.169255" elapsed="0.000032"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:54.169511" elapsed="0.000028"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:54.169816" elapsed="0.000029"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:01:54.169024" elapsed="0.000868"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:01:54.168904" elapsed="0.001025"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:54.170129" elapsed="0.000051"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:01:54.170257" elapsed="0.000032"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:01:54.151496" elapsed="0.018944">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:01:54.170615" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:01:54.170703" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:01:54.150628" elapsed="0.020111"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T01:01:54.171780" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T01:01:54.171249" elapsed="0.000631">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T01:01:54.170870" elapsed="0.001100">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T01:01:54.170840" elapsed="0.001177">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T01:01:54.172097" elapsed="0.000023"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:01:54.100956" elapsed="0.071305">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:54.172523" elapsed="0.000030"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:54.172760" elapsed="0.000028"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T01:01:54.172845" elapsed="0.000020"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T01:01:54.098401" elapsed="0.074580">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:54.173239" elapsed="0.000030"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:54.173499" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:54.173737" elapsed="0.000027"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:54.173964" elapsed="0.000027"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:54.174247" elapsed="0.000034"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:54.174507" elapsed="0.000030"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T01:01:54.174596" elapsed="0.000057"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T01:01:54.095475" elapsed="0.079303">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:01:55.208895" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:01:55.208429" elapsed="0.000500"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:01:55.209445" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:01:55.209104" elapsed="0.000368"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T01:01:55.209522" elapsed="0.000040"/>
</return>
<msg time="2026-04-08T01:01:55.209693" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T01:01:55.208014" elapsed="0.001706"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T01:01:55.214517" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T01:01:55.214317" elapsed="0.000228"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:01:55.214717" elapsed="0.000193"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:01:55.215295" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:01:55.215069" elapsed="0.000252"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:55.215767" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:55.215512" elapsed="0.000297"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:01:55.215959" elapsed="0.000179"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:01:55.216515" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:01:55.216309" elapsed="0.000231"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:55.217004" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:55.216759" elapsed="0.000286"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:01:55.217570" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:01:55.217223" elapsed="0.000372"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:55.217997" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:55.217763" elapsed="0.000277"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:01:55.218489" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:01:55.218207" elapsed="0.000307"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:01:55.225376" elapsed="0.000215"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:01:55.234521" elapsed="0.000247"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:01:55.235353" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:01:55.234929" elapsed="0.000450"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:01:55.236528" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:01:55.235970" elapsed="0.000599"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:01:55.236704" elapsed="0.000040"/>
</return>
<msg time="2026-04-08T01:01:55.236871" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:01:55.235570" elapsed="0.001327"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:01:55.237547" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:01:55.237064" elapsed="0.000510"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:01:55.238201" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:01:55.237737" elapsed="0.000493"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:01:55.238746" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:01:55.249704" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:01:55.238401" elapsed="0.013805">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:55.252478" elapsed="0.000034"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:55.252726" elapsed="0.000029"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:55.252962" elapsed="0.000030"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:55.253221" elapsed="0.000030"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:55.253467" elapsed="0.000029"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:55.253703" elapsed="0.000028"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:55.254088" elapsed="0.000029"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:55.254431" elapsed="0.000029"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:55.254748" elapsed="0.000030"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:01:55.253904" elapsed="0.000958"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:01:55.253801" elapsed="0.001101"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:55.255107" elapsed="0.000029"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:01:55.255213" elapsed="0.000023"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:01:55.234012" elapsed="0.021365">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:01:55.255477" elapsed="0.000022"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T01:01:55.223046" elapsed="0.032573">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:55.255871" elapsed="0.000030"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:55.262191" elapsed="0.000039"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:55.262470" elapsed="0.000040"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T01:01:55.262574" elapsed="0.000022"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T01:01:55.213754" elapsed="0.048969">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:01:55.262883" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:01:55.262944" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:01:55.213183" elapsed="0.049794"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T01:01:55.263353" elapsed="0.000019"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:01:55.263185" elapsed="0.000227"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:55.263134" elapsed="0.000309"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:01:55.265344" elapsed="0.000297"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:01:55.266319" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:01:55.265863" elapsed="0.000492"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:01:55.267520" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:01:55.267138" elapsed="0.000408"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:01:55.267594" elapsed="0.000032"/>
</return>
<msg time="2026-04-08T01:01:55.267746" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:01:55.266655" elapsed="0.001117"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:01:55.268328" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:01:55.267936" elapsed="0.000418"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:01:55.268857" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:01:55.268513" elapsed="0.000370"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:01:55.269279" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:01:55.278625" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:01:55.269048" elapsed="0.011838">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:55.281225" elapsed="0.000039"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:55.281480" elapsed="0.000030"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:55.281721" elapsed="0.000029"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:55.281960" elapsed="0.000029"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:55.282258" elapsed="0.000029"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:55.282509" elapsed="0.000031"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:55.282902" elapsed="0.000029"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:55.283142" elapsed="0.000047"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:55.283397" elapsed="0.000027"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:01:55.282720" elapsed="0.000750"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:01:55.282610" elapsed="0.000898"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:55.283708" elapsed="0.000027"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:01:55.283793" elapsed="0.000023"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:01:55.264543" elapsed="0.019417">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:01:55.284144" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:01:55.284232" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:01:55.263658" elapsed="0.020608"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T01:01:55.285390" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T01:01:55.284866" elapsed="0.000611">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T01:01:55.284536" elapsed="0.001029">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T01:01:55.284504" elapsed="0.001105">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T01:01:55.285674" elapsed="0.000022"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:01:55.212605" elapsed="0.073209">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:55.286071" elapsed="0.000030"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:55.286331" elapsed="0.000029"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T01:01:55.286453" elapsed="0.000023"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T01:01:55.210025" elapsed="0.076573">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:55.286842" elapsed="0.000029"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:55.287143" elapsed="0.000058"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:55.287427" elapsed="0.000028"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:55.287600" elapsed="0.000020"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:55.287768" elapsed="0.000020"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:55.287934" elapsed="0.000020"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T01:01:55.287995" elapsed="0.000015"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T01:01:55.207232" elapsed="0.080863">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:01:56.322119" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:01:56.321582" elapsed="0.000585"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:01:56.322663" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:01:56.322349" elapsed="0.000340"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T01:01:56.322738" elapsed="0.000047"/>
</return>
<msg time="2026-04-08T01:01:56.322917" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T01:01:56.321174" elapsed="0.001776"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T01:01:56.327865" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T01:01:56.327670" elapsed="0.000221"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:01:56.328045" elapsed="0.000208"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:01:56.328623" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:01:56.328407" elapsed="0.000242"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:56.329097" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:56.328841" elapsed="0.000298"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:01:56.329304" elapsed="0.000183"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:01:56.329852" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:01:56.329646" elapsed="0.000232"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:56.330319" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:56.330050" elapsed="0.000311"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:01:56.330856" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:01:56.330516" elapsed="0.000365"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:56.331337" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:56.331078" elapsed="0.000306"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:01:56.331814" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:01:56.331535" elapsed="0.000304"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:01:56.338550" elapsed="0.000214"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:01:56.347723" elapsed="0.000211"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:01:56.348500" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:01:56.348092" elapsed="0.000436"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:01:56.349692" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:01:56.349132" elapsed="0.000602"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:01:56.349866" elapsed="0.000031"/>
</return>
<msg time="2026-04-08T01:01:56.350021" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:01:56.348724" elapsed="0.001322"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:01:56.350671" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:01:56.350230" elapsed="0.000468"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:01:56.351323" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:01:56.350877" elapsed="0.000473"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:01:56.351844" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:01:56.363452" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:01:56.351515" elapsed="0.015971">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:56.367915" elapsed="0.000051"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:56.368356" elapsed="0.000049"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:56.368744" elapsed="0.000045"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:56.369122" elapsed="0.000076"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:56.369632" elapsed="0.000048"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:56.370011" elapsed="0.000047"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:56.370653" elapsed="0.000048"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:56.371257" elapsed="0.000050"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:56.371650" elapsed="0.000022"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:01:56.370350" elapsed="0.001381"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:01:56.370189" elapsed="0.001571"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:56.371908" elapsed="0.000020"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:01:56.371969" elapsed="0.000016"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:01:56.347227" elapsed="0.024861">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:01:56.372185" elapsed="0.000017"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T01:01:56.336255" elapsed="0.036036">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:56.372473" elapsed="0.000022"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:56.376951" elapsed="0.000027"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:56.377147" elapsed="0.000034"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T01:01:56.377226" elapsed="0.000016"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T01:01:56.327105" elapsed="0.050227">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:01:56.377444" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:01:56.377488" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:01:56.326524" elapsed="0.050987"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T01:01:56.377716" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:01:56.377601" elapsed="0.000159"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:56.377581" elapsed="0.000201"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:01:56.379105" elapsed="0.000225"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:01:56.379791" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:01:56.379484" elapsed="0.000332"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:01:56.380615" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:01:56.380351" elapsed="0.000291"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:01:56.380724" elapsed="0.000031"/>
</return>
<msg time="2026-04-08T01:01:56.380875" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:01:56.379996" elapsed="0.000904"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:01:56.381449" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:01:56.381062" elapsed="0.000414"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:01:56.381979" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:01:56.381635" elapsed="0.000370"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:01:56.382386" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:01:56.389283" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:01:56.382183" elapsed="0.008795">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:56.391182" elapsed="0.000024"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:56.391360" elapsed="0.000021"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:56.391527" elapsed="0.000020"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:56.391694" elapsed="0.000019"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:56.391872" elapsed="0.000020"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:56.392047" elapsed="0.000020"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:56.392323" elapsed="0.000020"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:56.392496" elapsed="0.000020"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:56.392659" elapsed="0.000020"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:01:56.392191" elapsed="0.000520"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:01:56.392111" elapsed="0.000627"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:56.392880" elapsed="0.000021"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:01:56.392939" elapsed="0.000014"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:01:56.378546" elapsed="0.014497">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:01:56.393174" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:01:56.393221" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:01:56.377933" elapsed="0.015311"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T01:01:56.393858" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T01:01:56.393544" elapsed="0.000378">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T01:01:56.393326" elapsed="0.000658">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T01:01:56.393308" elapsed="0.000707">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T01:01:56.394059" elapsed="0.000015"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:01:56.325938" elapsed="0.068234">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:56.394390" elapsed="0.000021"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:56.394561" elapsed="0.000020"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T01:01:56.394623" elapsed="0.000014"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T01:01:56.323265" elapsed="0.071456">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:56.394918" elapsed="0.000021"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:56.395100" elapsed="0.000020"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:56.395290" elapsed="0.000020"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:56.395455" elapsed="0.000020"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:56.395693" elapsed="0.000028"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:56.395922" elapsed="0.000028"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T01:01:56.396007" elapsed="0.000020"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T01:01:56.320279" elapsed="0.075862">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:01:57.428996" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:01:57.428495" elapsed="0.000534"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:01:57.429532" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:01:57.429221" elapsed="0.000337"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T01:01:57.429606" elapsed="0.000043"/>
</return>
<msg time="2026-04-08T01:01:57.429782" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T01:01:57.428070" elapsed="0.001737"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T01:01:57.434630" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T01:01:57.434431" elapsed="0.000231"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:01:57.434821" elapsed="0.000192"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:01:57.435395" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:01:57.435183" elapsed="0.000237"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:57.435879" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:57.435613" elapsed="0.000306"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:01:57.436067" elapsed="0.000198"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:01:57.436623" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:01:57.436418" elapsed="0.000230"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:57.437139" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:57.436893" elapsed="0.000303"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:01:57.437693" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:01:57.437352" elapsed="0.000367"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:57.438121" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:57.437888" elapsed="0.000291"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:01:57.438620" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:01:57.438333" elapsed="0.000313"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:01:57.445376" elapsed="0.000220"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:01:57.454610" elapsed="0.000214"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:01:57.455385" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:01:57.454985" elapsed="0.000427"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:01:57.456595" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:01:57.456028" elapsed="0.000608"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:01:57.456768" elapsed="0.000034"/>
</return>
<msg time="2026-04-08T01:01:57.456929" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:01:57.455599" elapsed="0.001355"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:01:57.457595" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:01:57.457128" elapsed="0.000495"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:01:57.458228" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:01:57.457785" elapsed="0.000470"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:01:57.458755" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:01:57.469494" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:01:57.458421" elapsed="0.013710">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:57.472436" elapsed="0.000034"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:57.472697" elapsed="0.000031"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:57.472946" elapsed="0.000030"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:57.473216" elapsed="0.000032"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:57.473482" elapsed="0.000029"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:57.473728" elapsed="0.000030"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:57.474134" elapsed="0.000052"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:57.474494" elapsed="0.000031"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:57.474784" elapsed="0.000030"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:01:57.473938" elapsed="0.000962"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:01:57.473832" elapsed="0.001111"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:57.475181" elapsed="0.000033"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:01:57.475272" elapsed="0.000023"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:01:57.454095" elapsed="0.021351">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:01:57.475640" elapsed="0.000025"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T01:01:57.443047" elapsed="0.032747">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:57.476060" elapsed="0.000031"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:57.482772" elapsed="0.000040"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:57.483064" elapsed="0.000031"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T01:01:57.483179" elapsed="0.000023"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T01:01:57.433871" elapsed="0.049467">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:01:57.483503" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:01:57.483586" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:01:57.433305" elapsed="0.050316"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T01:01:57.483918" elapsed="0.000020"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:01:57.483751" elapsed="0.000230"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:57.483721" elapsed="0.000293"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:01:57.485989" elapsed="0.000332"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:01:57.486997" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:01:57.486551" elapsed="0.000484"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:01:57.488323" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:01:57.487883" elapsed="0.000479"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:01:57.488431" elapsed="0.000044"/>
</return>
<msg time="2026-04-08T01:01:57.488631" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:01:57.487327" elapsed="0.001329"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:01:57.489199" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:01:57.488817" elapsed="0.000408"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:01:57.489777" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:01:57.489384" elapsed="0.000420"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:01:57.490189" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:01:57.498756" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:01:57.489976" elapsed="0.010915">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:57.501242" elapsed="0.000035"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:57.501506" elapsed="0.000030"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:57.501752" elapsed="0.000029"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:57.501997" elapsed="0.000029"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:57.502270" elapsed="0.000030"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:57.502517" elapsed="0.000029"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:57.502896" elapsed="0.000030"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:57.503171" elapsed="0.000032"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:57.503418" elapsed="0.000029"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:01:57.502705" elapsed="0.000811"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:01:57.502609" elapsed="0.000953"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:57.503776" elapsed="0.000030"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:01:57.503861" elapsed="0.000022"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:01:57.485179" elapsed="0.018839">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:01:57.504206" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:01:57.504273" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:01:57.484262" elapsed="0.020046"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T01:01:57.505235" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T01:01:57.504748" elapsed="0.000575">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T01:01:57.504428" elapsed="0.000984">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T01:01:57.504400" elapsed="0.001058">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T01:01:57.505524" elapsed="0.000022"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:01:57.432738" elapsed="0.072928">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:57.505928" elapsed="0.000031"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:57.506198" elapsed="0.000031"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T01:01:57.506290" elapsed="0.000021"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T01:01:57.430103" elapsed="0.076329">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:57.506682" elapsed="0.000031"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:57.507000" elapsed="0.000030"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:57.507277" elapsed="0.000030"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:57.507590" elapsed="0.000037"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:57.507868" elapsed="0.000030"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:57.508115" elapsed="0.000029"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T01:01:57.508229" elapsed="0.000023"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T01:01:57.427209" elapsed="0.081167">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:01:58.540052" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:01:58.539553" elapsed="0.000532"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:01:58.540588" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:01:58.540276" elapsed="0.000338"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T01:01:58.540662" elapsed="0.000042"/>
</return>
<msg time="2026-04-08T01:01:58.540860" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T01:01:58.539143" elapsed="0.001742"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T01:01:58.545561" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T01:01:58.545371" elapsed="0.000216"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:01:58.545741" elapsed="0.000191"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:01:58.546313" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:01:58.546086" elapsed="0.000253"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:58.546787" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:58.546529" elapsed="0.000299"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:01:58.546976" elapsed="0.000196"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:01:58.547535" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:01:58.547327" elapsed="0.000233"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:58.547974" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:58.547732" elapsed="0.000283"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:01:58.548525" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:01:58.548182" elapsed="0.000369"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:58.548966" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:58.548719" elapsed="0.000291"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:01:58.549468" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:01:58.549177" elapsed="0.000317"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:01:58.557552" elapsed="0.000216"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:01:58.566709" elapsed="0.000277"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:01:58.567548" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:01:58.567147" elapsed="0.000428"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:01:58.568732" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:01:58.568183" elapsed="0.000592"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:01:58.568910" elapsed="0.000033"/>
</return>
<msg time="2026-04-08T01:01:58.569069" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:01:58.567763" elapsed="0.001332"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:01:58.569715" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:01:58.569277" elapsed="0.000466"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:01:58.570356" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:01:58.569906" elapsed="0.000478"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:01:58.570880" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:01:58.583234" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:01:58.570550" elapsed="0.016229">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:58.587235" elapsed="0.000055"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:58.587636" elapsed="0.000047"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:58.588011" elapsed="0.000045"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:58.588429" elapsed="0.000047"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:58.588837" elapsed="0.000046"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:58.589240" elapsed="0.000047"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:58.589846" elapsed="0.000045"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:58.590397" elapsed="0.000049"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:58.590839" elapsed="0.000046"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:01:58.589549" elapsed="0.001469"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:01:58.589394" elapsed="0.001687"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:58.591442" elapsed="0.000048"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:01:58.591576" elapsed="0.000034"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:01:58.566207" elapsed="0.025618">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:01:58.591983" elapsed="0.000033"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T01:01:58.555250" elapsed="0.036985">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:58.592778" elapsed="0.000051"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:58.597748" elapsed="0.000028"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:58.597944" elapsed="0.000021"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T01:01:58.598009" elapsed="0.000015"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T01:01:58.544810" elapsed="0.053317">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:01:58.598284" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:01:58.598329" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:01:58.544239" elapsed="0.054113"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T01:01:58.598563" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:01:58.598445" elapsed="0.000164"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:58.598423" elapsed="0.000211"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:01:58.600062" elapsed="0.000228"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:01:58.600775" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:01:58.600448" elapsed="0.000353"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:01:58.601611" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:01:58.601348" elapsed="0.000289"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:01:58.601684" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T01:01:58.601830" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:01:58.600985" elapsed="0.000869"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:01:58.602431" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:01:58.602015" elapsed="0.000442"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:01:58.602962" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:01:58.602618" elapsed="0.000370"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:01:58.603363" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:01:58.612931" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:01:58.603150" elapsed="0.012745">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:58.616342" elapsed="0.000052"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:58.616761" elapsed="0.000047"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:58.617132" elapsed="0.000073"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:58.617536" elapsed="0.000045"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:58.617917" elapsed="0.000044"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:58.618318" elapsed="0.000046"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:58.618895" elapsed="0.000118"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:58.619395" elapsed="0.000047"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:58.619767" elapsed="0.000044"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:01:58.618608" elapsed="0.001274"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:01:58.618462" elapsed="0.001478"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:58.620285" elapsed="0.000047"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:01:58.620419" elapsed="0.000033"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:01:58.599519" elapsed="0.021158">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:01:58.620930" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:01:58.621027" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:01:58.598788" elapsed="0.022290"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T01:01:58.622536" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T01:01:58.621789" elapsed="0.000882">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T01:01:58.621297" elapsed="0.001512">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T01:01:58.621254" elapsed="0.001623">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T01:01:58.622978" elapsed="0.000034"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:01:58.543677" elapsed="0.079549">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:58.623628" elapsed="0.000047"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:58.624001" elapsed="0.000044"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T01:01:58.624137" elapsed="0.000060"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T01:01:58.541197" elapsed="0.083189">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:58.624811" elapsed="0.000049"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:58.625248" elapsed="0.000046"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:58.625646" elapsed="0.000026"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:58.625819" elapsed="0.000020"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:58.625984" elapsed="0.000020"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:58.626149" elapsed="0.000033"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T01:01:58.626225" elapsed="0.000015"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T01:01:58.538349" elapsed="0.087974">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:01:59.659733" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:01:59.659258" elapsed="0.000508"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:01:59.660270" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:01:59.659939" elapsed="0.000358"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T01:01:59.660344" elapsed="0.000039"/>
</return>
<msg time="2026-04-08T01:01:59.660514" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T01:01:59.658848" elapsed="0.001692"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T01:01:59.665274" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T01:01:59.665065" elapsed="0.000236"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:01:59.665457" elapsed="0.000192"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:01:59.666017" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:01:59.665805" elapsed="0.000238"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:59.666555" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:59.666283" elapsed="0.000314"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:01:59.666885" elapsed="0.000183"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:01:59.667450" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:01:59.667241" elapsed="0.000235"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:59.667894" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:59.667651" elapsed="0.000284"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:01:59.668446" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:01:59.668089" elapsed="0.000382"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:01:59.668882" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:01:59.668640" elapsed="0.000285"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:01:59.669375" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:01:59.669076" elapsed="0.000326"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:01:59.676248" elapsed="0.000218"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:01:59.685412" elapsed="0.000210"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:01:59.686280" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:01:59.685788" elapsed="0.000521"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:01:59.687467" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:01:59.686913" elapsed="0.000597"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:01:59.687641" elapsed="0.000032"/>
</return>
<msg time="2026-04-08T01:01:59.687797" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:01:59.686508" elapsed="0.001314"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:01:59.688442" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:01:59.687986" elapsed="0.000483"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:01:59.689128" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:01:59.688696" elapsed="0.000473"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:01:59.689672" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:01:59.700324" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:01:59.689340" elapsed="0.013537">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:59.703145" elapsed="0.000060"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:59.703424" elapsed="0.000030"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:59.703664" elapsed="0.000029"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:59.703901" elapsed="0.000028"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:59.704145" elapsed="0.000048"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:59.704402" elapsed="0.000029"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:59.704783" elapsed="0.000029"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:59.705113" elapsed="0.000030"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:59.705410" elapsed="0.000029"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:01:59.704596" elapsed="0.000930"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:01:59.704498" elapsed="0.001068"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:59.705771" elapsed="0.000029"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:01:59.705854" elapsed="0.000022"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:01:59.684902" elapsed="0.021117">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:01:59.706151" elapsed="0.000042"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T01:01:59.673893" elapsed="0.032424">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:59.706569" elapsed="0.000029"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:59.712963" elapsed="0.000038"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:59.713256" elapsed="0.000031"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T01:01:59.713351" elapsed="0.000022"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T01:01:59.664516" elapsed="0.048982">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:01:59.713710" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:01:59.713771" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:01:59.663941" elapsed="0.049863"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T01:01:59.714100" elapsed="0.000020"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:01:59.713925" elapsed="0.000280"/>
</branch>
<status status="PASS" start="2026-04-08T01:01:59.713897" elapsed="0.000344"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:01:59.716098" elapsed="0.000315"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:01:59.717056" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:01:59.716632" elapsed="0.000461"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:01:59.718346" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:01:59.717854" elapsed="0.000537"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:01:59.718459" elapsed="0.000042"/>
</return>
<msg time="2026-04-08T01:01:59.718683" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:01:59.717371" elapsed="0.001343"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:01:59.719273" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:01:59.718881" elapsed="0.000420"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:01:59.719804" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:01:59.719461" elapsed="0.000370"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:01:59.720210" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:01:59.728569" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:01:59.719993" elapsed="0.010973">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:59.731255" elapsed="0.000032"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:59.731499" elapsed="0.000029"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:59.731731" elapsed="0.000028"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:59.731962" elapsed="0.000028"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:59.732226" elapsed="0.000033"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:59.732467" elapsed="0.000028"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:59.732827" elapsed="0.000028"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:59.733065" elapsed="0.000027"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:59.733313" elapsed="0.000028"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:01:59.732648" elapsed="0.000738"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:01:59.732557" elapsed="0.000865"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:59.733617" elapsed="0.000027"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:01:59.733696" elapsed="0.000021"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:01:59.715330" elapsed="0.018517">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:01:59.734184" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:01:59.734250" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:01:59.714468" elapsed="0.019814"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T01:01:59.735152" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T01:01:59.734707" elapsed="0.000552">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T01:01:59.734401" elapsed="0.000944">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T01:01:59.734374" elapsed="0.001016">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T01:01:59.735454" elapsed="0.000021"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:01:59.663387" elapsed="0.072203">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:59.735838" elapsed="0.000029"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:59.736072" elapsed="0.000028"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T01:01:59.736177" elapsed="0.000022"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T01:01:59.660842" elapsed="0.075477">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:59.736557" elapsed="0.000029"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:59.736808" elapsed="0.000029"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:59.737060" elapsed="0.000029"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:59.737314" elapsed="0.000028"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:59.737552" elapsed="0.000027"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:01:59.737780" elapsed="0.000026"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T01:01:59.737863" elapsed="0.000020"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T01:01:59.657983" elapsed="0.080016">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:02:00.778387" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:02:00.777866" elapsed="0.000557"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:02:00.778928" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:02:00.778607" elapsed="0.000347"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T01:02:00.779002" elapsed="0.000045"/>
</return>
<msg time="2026-04-08T01:02:00.779198" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T01:02:00.777431" elapsed="0.001894"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T01:02:00.784081" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T01:02:00.783864" elapsed="0.000244"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:02:00.784280" elapsed="0.000197"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:02:00.784847" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:02:00.784636" elapsed="0.000236"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:02:00.785345" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:02:00.785069" elapsed="0.000318"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:02:00.785537" elapsed="0.000180"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:02:00.786075" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:02:00.785870" elapsed="0.000230"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:02:00.786530" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:02:00.786285" elapsed="0.000285"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:02:00.787065" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:02:00.786726" elapsed="0.000364"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:02:00.787511" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:02:00.787274" elapsed="0.000280"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:02:00.788001" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:02:00.787708" elapsed="0.000319"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:02:00.794818" elapsed="0.000213"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:02:00.804002" elapsed="0.000226"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:02:00.804782" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:02:00.804391" elapsed="0.000417"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:02:00.805977" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:02:00.805425" elapsed="0.000594"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:02:00.806170" elapsed="0.000034"/>
</return>
<msg time="2026-04-08T01:02:00.806330" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:02:00.804999" elapsed="0.001356"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:02:00.806972" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:02:00.806518" elapsed="0.000481"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:02:00.807612" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:02:00.807181" elapsed="0.000458"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:02:00.808200" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:02:00.820043" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:02:00.807808" elapsed="0.016175">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:00.824440" elapsed="0.000053"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:00.824839" elapsed="0.000046"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:00.825347" elapsed="0.000053"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:00.825741" elapsed="0.000047"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:00.826132" elapsed="0.000075"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:00.826545" elapsed="0.000046"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:00.827154" elapsed="0.000075"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:00.827711" elapsed="0.000047"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:00.828241" elapsed="0.000050"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:02:00.826857" elapsed="0.001574"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:02:00.826700" elapsed="0.001796"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:00.828816" elapsed="0.000030"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:02:00.828899" elapsed="0.000022"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:02:00.803493" elapsed="0.025572">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:02:00.829182" elapsed="0.000023"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T01:02:00.792516" elapsed="0.036811">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:00.829576" elapsed="0.000029"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:00.835817" elapsed="0.000038"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:00.836094" elapsed="0.000029"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T01:02:00.836203" elapsed="0.000022"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T01:02:00.783314" elapsed="0.053037">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:02:00.836507" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:02:00.836567" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:02:00.782731" elapsed="0.053868"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T01:02:00.836884" elapsed="0.000019"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:02:00.836725" elapsed="0.000218"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:00.836695" elapsed="0.000282"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:02:00.838848" elapsed="0.000289"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:02:00.839837" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:02:00.839381" elapsed="0.000494"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:02:00.841027" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:02:00.840721" elapsed="0.000332"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:02:00.841100" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T01:02:00.841276" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:02:00.840215" elapsed="0.001086"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:02:00.841830" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:02:00.841462" elapsed="0.000394"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:02:00.842380" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:02:00.842015" elapsed="0.000391"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:02:00.842767" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:02:00.852425" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:02:00.842570" elapsed="0.011520">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:00.854296" elapsed="0.000023"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:00.854470" elapsed="0.000020"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:00.854635" elapsed="0.000020"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:00.854801" elapsed="0.000020"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:00.854971" elapsed="0.000019"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:00.855134" elapsed="0.000033"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:00.855407" elapsed="0.000020"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:00.855578" elapsed="0.000019"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:00.855771" elapsed="0.000022"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:02:00.855278" elapsed="0.000548"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:02:00.855213" elapsed="0.000639"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:00.855994" elapsed="0.000020"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:02:00.856052" elapsed="0.000015"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:02:00.838055" elapsed="0.018119">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:02:00.856290" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:02:00.856333" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:02:00.837216" elapsed="0.019140"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T01:02:00.857100" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T01:02:00.856657" elapsed="0.000549">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T01:02:00.856438" elapsed="0.000854">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T01:02:00.856419" elapsed="0.000917">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T01:02:00.857398" elapsed="0.000022"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:02:00.782180" elapsed="0.075403">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:00.857844" elapsed="0.000029"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:00.858081" elapsed="0.000028"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T01:02:00.858190" elapsed="0.000022"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T01:02:00.779637" elapsed="0.078693">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:00.858569" elapsed="0.000029"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:00.858820" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:00.859059" elapsed="0.000028"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:00.859308" elapsed="0.000029"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:00.859551" elapsed="0.000027"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:00.859795" elapsed="0.000029"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T01:02:00.859882" elapsed="0.000020"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T01:02:00.776471" elapsed="0.083546">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:02:01.892151" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:02:01.891670" elapsed="0.000530"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:02:01.892692" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:02:01.892377" elapsed="0.000341"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T01:02:01.892766" elapsed="0.000041"/>
</return>
<msg time="2026-04-08T01:02:01.892936" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T01:02:01.891275" elapsed="0.001688"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T01:02:01.897670" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T01:02:01.897479" elapsed="0.000220"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:02:01.897867" elapsed="0.000192"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:02:01.898443" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:02:01.898231" elapsed="0.000240"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:02:01.898992" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:02:01.898661" elapsed="0.000374"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:02:01.899204" elapsed="0.000187"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:02:01.899758" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:02:01.899548" elapsed="0.000236"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:02:01.900221" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:02:01.899958" elapsed="0.000305"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:02:01.900769" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:02:01.900421" elapsed="0.000373"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:02:01.901214" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:02:01.900964" elapsed="0.000293"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:02:01.901692" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:02:01.901411" elapsed="0.000307"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:02:01.908456" elapsed="0.000215"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:02:01.917763" elapsed="0.000227"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:02:01.918558" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:02:01.918152" elapsed="0.000432"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:02:01.919749" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:02:01.919206" elapsed="0.000584"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:02:01.919927" elapsed="0.000034"/>
</return>
<msg time="2026-04-08T01:02:01.920084" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:02:01.918774" elapsed="0.001335"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:02:01.920734" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:02:01.920287" elapsed="0.000475"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:02:01.921370" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:02:01.920923" elapsed="0.000474"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:02:01.921912" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:02:01.932420" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:02:01.921563" elapsed="0.012713">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:01.934488" elapsed="0.000025"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:01.934667" elapsed="0.000040"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:01.935041" elapsed="0.000046"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:01.935461" elapsed="0.000048"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:01.935850" elapsed="0.000046"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:01.936252" elapsed="0.000048"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:01.936914" elapsed="0.000052"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:01.937467" elapsed="0.000048"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:01.937925" elapsed="0.000048"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:02:01.936568" elapsed="0.001682"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:02:01.936408" elapsed="0.001915"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:01.938657" elapsed="0.000046"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:02:01.938796" elapsed="0.000035"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:02:01.917265" elapsed="0.021790">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:02:01.939245" elapsed="0.000036"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T01:02:01.906147" elapsed="0.033327">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:01.939871" elapsed="0.000047"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:01.948827" elapsed="0.000034"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:01.949073" elapsed="0.000024"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T01:02:01.949152" elapsed="0.000038"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T01:02:01.896917" elapsed="0.052385">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:02:01.949446" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:02:01.949495" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:02:01.896357" elapsed="0.053164"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T01:02:01.949794" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:02:01.949636" elapsed="0.000206"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:01.949611" elapsed="0.000258"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:02:01.952465" elapsed="0.000581"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:02:01.954465" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:02:01.953531" elapsed="0.001008"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:02:01.956537" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:02:01.955910" elapsed="0.000685"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:02:01.956700" elapsed="0.000066"/>
</return>
<msg time="2026-04-08T01:02:01.957046" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:02:01.955064" elapsed="0.002039"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:02:01.958841" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:02:01.957619" elapsed="0.001260"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:02:01.959589" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:02:01.959101" elapsed="0.000524"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:02:01.960246" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:02:01.968700" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:02:01.959928" elapsed="0.010641">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:01.970772" elapsed="0.000025"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:01.970952" elapsed="0.000021"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:01.971127" elapsed="0.000021"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:01.971321" elapsed="0.000021"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:01.971497" elapsed="0.000020"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:01.971666" elapsed="0.000020"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:01.971953" elapsed="0.000020"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:01.972129" elapsed="0.000020"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:01.972313" elapsed="0.000021"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:02:01.971819" elapsed="0.000548"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:02:01.971739" elapsed="0.000655"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:01.972549" elapsed="0.000020"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:02:01.972610" elapsed="0.000016"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:02:01.950860" elapsed="0.021870">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:02:01.972855" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:02:01.972899" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:02:01.950054" elapsed="0.022869"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T01:02:01.973612" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T01:02:01.973266" elapsed="0.000408">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T01:02:01.973016" elapsed="0.000739">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T01:02:01.972994" elapsed="0.000796">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T01:02:01.973837" elapsed="0.000016"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:02:01.895785" elapsed="0.078153">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:01.974123" elapsed="0.000022"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:01.974318" elapsed="0.000021"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T01:02:01.974383" elapsed="0.000015"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T01:02:01.893278" elapsed="0.081205">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:01.974707" elapsed="0.000023"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:01.974897" elapsed="0.000020"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:01.975072" elapsed="0.000020"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:01.975256" elapsed="0.000022"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:01.975431" elapsed="0.000020"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:01.975601" elapsed="0.000021"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T01:02:01.975664" elapsed="0.000015"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T01:02:01.890469" elapsed="0.085298">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:02:03.007443" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:02:03.006944" elapsed="0.000532"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:02:03.008010" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:02:03.007653" elapsed="0.000387"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T01:02:03.008090" elapsed="0.000045"/>
</return>
<msg time="2026-04-08T01:02:03.008297" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T01:02:03.006534" elapsed="0.001789"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T01:02:03.013128" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T01:02:03.012930" elapsed="0.000240"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:02:03.013330" elapsed="0.000197"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:02:03.013910" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:02:03.013685" elapsed="0.000251"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:02:03.014409" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:02:03.014135" elapsed="0.000316"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:02:03.014605" elapsed="0.000184"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:02:03.015182" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:02:03.014956" elapsed="0.000254"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:02:03.015633" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:02:03.015383" elapsed="0.000291"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:02:03.016227" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:02:03.015831" elapsed="0.000426"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:02:03.016668" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:02:03.016431" elapsed="0.000281"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:02:03.017169" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:02:03.016867" elapsed="0.000331"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:02:03.025717" elapsed="0.000292"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:02:03.035135" elapsed="0.000233"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:02:03.035922" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:02:03.035531" elapsed="0.000435"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:02:03.037181" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:02:03.036609" elapsed="0.000623"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:02:03.037371" elapsed="0.000039"/>
</return>
<msg time="2026-04-08T01:02:03.037539" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:02:03.036200" elapsed="0.001365"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:02:03.038225" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:02:03.037732" elapsed="0.000520"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:02:03.038859" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:02:03.038418" elapsed="0.000469"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:02:03.039430" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:02:03.049757" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:02:03.039053" elapsed="0.015027">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:03.054590" elapsed="0.000057"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:03.055107" elapsed="0.000093"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:03.055577" elapsed="0.000051"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:03.056024" elapsed="0.000065"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:03.056551" elapsed="0.000052"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:03.056963" elapsed="0.000048"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:03.057795" elapsed="0.000061"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:03.058550" elapsed="0.000061"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:03.059115" elapsed="0.000107"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:02:03.057362" elapsed="0.002053"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:02:03.057123" elapsed="0.002367"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:03.059852" elapsed="0.000109"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:02:03.060065" elapsed="0.000040"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:02:03.034628" elapsed="0.025809">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:02:03.060625" elapsed="0.000041"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T01:02:03.023282" elapsed="0.037584">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:03.061118" elapsed="0.000023"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:03.065623" elapsed="0.000027"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:03.065821" elapsed="0.000021"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T01:02:03.065888" elapsed="0.000015"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T01:02:03.012370" elapsed="0.053623">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:02:03.066320" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:02:03.066373" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:02:03.011741" elapsed="0.054659"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T01:02:03.066642" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:02:03.066518" elapsed="0.000167"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:03.066494" elapsed="0.000217"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:02:03.068238" elapsed="0.000243"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:02:03.068950" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:02:03.068641" elapsed="0.000335"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:02:03.069782" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:02:03.069517" elapsed="0.000291"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:02:03.069855" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T01:02:03.070002" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:02:03.069174" elapsed="0.000852"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:02:03.070573" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:02:03.070202" elapsed="0.000398"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:02:03.071110" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:02:03.070760" elapsed="0.000376"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:02:03.071515" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:02:03.079142" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:02:03.071316" elapsed="0.009527">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:03.081031" elapsed="0.000022"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:03.081222" elapsed="0.000021"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:03.081391" elapsed="0.000020"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:03.081558" elapsed="0.000019"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:03.081728" elapsed="0.000020"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:03.081893" elapsed="0.000019"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:03.082213" elapsed="0.000021"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:03.082388" elapsed="0.000019"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:03.082550" elapsed="0.000020"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:02:03.082066" elapsed="0.000536"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:02:03.081997" elapsed="0.000632"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:03.082770" elapsed="0.000019"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:02:03.082827" elapsed="0.000016"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:02:03.067536" elapsed="0.015399">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:02:03.083049" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:02:03.083093" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:02:03.066886" elapsed="0.016230"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T01:02:03.083759" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T01:02:03.083438" elapsed="0.000383">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T01:02:03.083217" elapsed="0.000691">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T01:02:03.083198" elapsed="0.000744">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T01:02:03.083988" elapsed="0.000015"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:02:03.011184" elapsed="0.072902">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:03.084285" elapsed="0.000021"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:03.084456" elapsed="0.000020"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T01:02:03.084516" elapsed="0.000015"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T01:02:03.008630" elapsed="0.075983">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:03.084847" elapsed="0.000036"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:03.085116" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:03.085378" elapsed="0.000028"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:03.085605" elapsed="0.000027"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:03.085861" elapsed="0.000029"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:03.086094" elapsed="0.000028"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T01:02:03.086242" elapsed="0.000023"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T01:02:03.005723" elapsed="0.080661">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:02:04.120434" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:02:04.119766" elapsed="0.000712"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:02:04.121148" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:02:04.120719" elapsed="0.000487"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T01:02:04.121272" elapsed="0.000054"/>
</return>
<msg time="2026-04-08T01:02:04.121508" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T01:02:04.119215" elapsed="0.002329"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T01:02:04.128273" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T01:02:04.127987" elapsed="0.000323"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:02:04.128529" elapsed="0.000268"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:02:04.129333" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:02:04.129016" elapsed="0.000354"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:02:04.130013" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:02:04.129637" elapsed="0.000450"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:02:04.130407" elapsed="0.000330"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:02:04.131436" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:02:04.131110" elapsed="0.000362"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:02:04.132084" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:02:04.131723" elapsed="0.000418"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:02:04.132854" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:02:04.132380" elapsed="0.000510"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:02:04.133487" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:02:04.133129" elapsed="0.000418"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:02:04.134150" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:02:04.133760" elapsed="0.000449"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:02:04.142436" elapsed="0.000215"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:02:04.151610" elapsed="0.000211"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:02:04.152387" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:02:04.151981" elapsed="0.000432"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:02:04.153564" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:02:04.153002" elapsed="0.000603"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:02:04.153736" elapsed="0.000034"/>
</return>
<msg time="2026-04-08T01:02:04.153895" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:02:04.152602" elapsed="0.001319"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:02:04.154584" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:02:04.154087" elapsed="0.000584"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:02:04.155289" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:02:04.154839" elapsed="0.000477"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:02:04.155818" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:02:04.166840" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:02:04.155485" elapsed="0.013177">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:04.168869" elapsed="0.000025"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:04.169048" elapsed="0.000021"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:04.169238" elapsed="0.000022"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:04.169412" elapsed="0.000020"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:04.169588" elapsed="0.000020"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:04.169789" elapsed="0.000030"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:04.170206" elapsed="0.000030"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:04.170553" elapsed="0.000031"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:04.170886" elapsed="0.000043"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:02:04.170004" elapsed="0.001047"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:02:04.169894" elapsed="0.001214"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:04.171435" elapsed="0.000042"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:02:04.171556" elapsed="0.000034"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:02:04.151099" elapsed="0.020701">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:02:04.171945" elapsed="0.000031"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T01:02:04.140098" elapsed="0.032011">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:04.172487" elapsed="0.000040"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:04.180079" elapsed="0.000041"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:04.180395" elapsed="0.000031"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T01:02:04.180492" elapsed="0.000023"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T01:02:04.127227" elapsed="0.053495">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:02:04.180896" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:02:04.180962" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:02:04.126417" elapsed="0.054579"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T01:02:04.181499" elapsed="0.000020"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:02:04.181133" elapsed="0.000430"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:04.181102" elapsed="0.000496"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:02:04.183417" elapsed="0.000210"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:02:04.184094" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:02:04.183783" elapsed="0.000337"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:02:04.184932" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:02:04.184664" elapsed="0.000294"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:02:04.185005" elapsed="0.000031"/>
</return>
<msg time="2026-04-08T01:02:04.185169" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:02:04.184322" elapsed="0.000874"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:02:04.185729" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:02:04.185359" elapsed="0.000396"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:02:04.186284" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:02:04.185913" elapsed="0.000398"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:02:04.186689" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:02:04.196745" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:02:04.186476" elapsed="0.012874">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:04.199630" elapsed="0.000033"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:04.199890" elapsed="0.000030"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:04.200134" elapsed="0.000051"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:04.200408" elapsed="0.000029"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:04.200661" elapsed="0.000029"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:04.200905" elapsed="0.000029"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:04.201319" elapsed="0.000031"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:04.201578" elapsed="0.000029"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:04.201840" elapsed="0.000030"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:02:04.201104" elapsed="0.000814"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:02:04.201001" elapsed="0.000955"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:04.202188" elapsed="0.000061"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:02:04.202310" elapsed="0.000024"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:02:04.182838" elapsed="0.019635">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:02:04.202712" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:02:04.202780" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:02:04.181832" elapsed="0.020983"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T01:02:04.203774" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T01:02:04.203293" elapsed="0.000570">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T01:02:04.202943" elapsed="0.001011">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T01:02:04.202914" elapsed="0.001086">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T01:02:04.204068" elapsed="0.000023"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:02:04.125541" elapsed="0.078695">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:04.204503" elapsed="0.000031"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:04.204753" elapsed="0.000029"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T01:02:04.204843" elapsed="0.000021"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T01:02:04.121956" elapsed="0.083030">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:04.205276" elapsed="0.000032"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:04.205550" elapsed="0.000029"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:04.205807" elapsed="0.000030"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:04.206049" elapsed="0.000028"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:04.206356" elapsed="0.000031"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:04.206608" elapsed="0.000029"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T01:02:04.206698" elapsed="0.000020"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T01:02:04.118192" elapsed="0.088651">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:02:05.239676" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:02:05.239180" elapsed="0.000530"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:02:05.240291" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:02:05.239887" elapsed="0.000432"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T01:02:05.240367" elapsed="0.000041"/>
</return>
<msg time="2026-04-08T01:02:05.240541" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T01:02:05.238771" elapsed="0.001795"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T01:02:05.245303" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T01:02:05.245096" elapsed="0.000234"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:02:05.245485" elapsed="0.000191"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:02:05.246043" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:02:05.245833" elapsed="0.000236"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:02:05.246528" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:02:05.246273" elapsed="0.000297"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:02:05.246719" elapsed="0.000180"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:02:05.247277" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:02:05.247054" elapsed="0.000249"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:02:05.247726" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:02:05.247474" elapsed="0.000293"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:02:05.248281" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:02:05.247922" elapsed="0.000385"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:02:05.248713" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:02:05.248477" elapsed="0.000279"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:02:05.249234" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:02:05.248935" elapsed="0.000325"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:02:05.256037" elapsed="0.000237"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:02:05.265346" elapsed="0.000212"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:02:05.266115" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:02:05.265718" elapsed="0.000423"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:02:05.267338" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:02:05.266769" elapsed="0.000611"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:02:05.267516" elapsed="0.000039"/>
</return>
<msg time="2026-04-08T01:02:05.267684" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:02:05.266363" elapsed="0.001345"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:02:05.268425" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:02:05.267879" elapsed="0.000573"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:02:05.269053" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:02:05.268612" elapsed="0.000467"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:02:05.269602" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:02:05.281947" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:02:05.269264" elapsed="0.016576">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:05.286294" elapsed="0.000149"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:05.286799" elapsed="0.000048"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:05.287217" elapsed="0.000049"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:05.287608" elapsed="0.000046"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:05.287997" elapsed="0.000046"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:05.288407" elapsed="0.000048"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:05.289069" elapsed="0.000047"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:05.289622" elapsed="0.000048"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:05.289944" elapsed="0.000021"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:02:05.288721" elapsed="0.001303"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:02:05.288565" elapsed="0.001488"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:05.290220" elapsed="0.000022"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:02:05.290282" elapsed="0.000016"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:02:05.264829" elapsed="0.025572">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:02:05.290470" elapsed="0.000016"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T01:02:05.253690" elapsed="0.036880">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:05.290748" elapsed="0.000021"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:05.295216" elapsed="0.000026"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:05.295416" elapsed="0.000021"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T01:02:05.295480" elapsed="0.000015"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T01:02:05.244530" elapsed="0.051055">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:02:05.295700" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:02:05.295744" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:02:05.243956" elapsed="0.051811"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T01:02:05.295992" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:02:05.295858" elapsed="0.000177"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:05.295838" elapsed="0.000220"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:02:05.297474" elapsed="0.000211"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:02:05.298139" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:02:05.297839" elapsed="0.000340"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:02:05.298967" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:02:05.298701" elapsed="0.000292"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:02:05.299039" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T01:02:05.299202" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:02:05.298363" elapsed="0.000865"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:02:05.299756" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:02:05.299390" elapsed="0.000391"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:02:05.300299" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:02:05.299940" elapsed="0.000384"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:02:05.300699" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:02:05.307841" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:02:05.300500" elapsed="0.009072">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:05.309759" elapsed="0.000023"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:05.309937" elapsed="0.000020"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:05.310103" elapsed="0.000020"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:05.310287" elapsed="0.000021"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:05.310460" elapsed="0.000019"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:05.310623" elapsed="0.000019"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:05.310886" elapsed="0.000020"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:05.311058" elapsed="0.000020"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:05.311234" elapsed="0.000021"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:02:05.310752" elapsed="0.000535"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:02:05.310685" elapsed="0.000627"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:05.311453" elapsed="0.000020"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:02:05.311511" elapsed="0.000015"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:02:05.296875" elapsed="0.014742">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:02:05.311728" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:02:05.311772" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:02:05.296228" elapsed="0.015566"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T01:02:05.312435" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T01:02:05.312095" elapsed="0.000401">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T01:02:05.311877" elapsed="0.000717">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T01:02:05.311858" elapsed="0.000770">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T01:02:05.312674" elapsed="0.000015"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:02:05.243404" elapsed="0.069394">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:05.312981" elapsed="0.000021"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:05.313150" elapsed="0.000038"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T01:02:05.313232" elapsed="0.000014"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T01:02:05.240884" elapsed="0.072447">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:05.313502" elapsed="0.000021"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:05.313682" elapsed="0.000019"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:05.313898" elapsed="0.000028"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:05.314125" elapsed="0.000046"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:05.314384" elapsed="0.000028"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:05.314616" elapsed="0.000027"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T01:02:05.314700" elapsed="0.000020"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T01:02:05.237839" elapsed="0.076999">Could not parse owner and candidates for device openflow:1</status>
</kw>
<msg time="2026-04-08T01:02:05.314979" level="FAIL">Keyword 'ClusterManagement.Verify_Owner_And_Successors_For_Device' failed after retrying for 30 seconds. The last error was: Could not parse owner and candidates for device openflow:1</msg>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>30s</arg>
<arg>1s</arg>
<arg>ClusterManagement.Verify_Owner_And_Successors_For_Device</arg>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="FAIL" start="2026-04-08T01:01:35.000747" elapsed="30.314358">Keyword 'ClusterManagement.Verify_Owner_And_Successors_For_Device' failed after retrying for 30 seconds. The last error was: Could not parse owner and candidates for device openflow:1</status>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T01:02:05.315235" elapsed="0.000022"/>
</return>
<var>${original_owner}</var>
<var>${original_successor_list}</var>
<arg>openflow:1</arg>
<arg>1</arg>
<doc>Check Entity Owner Status and identify owner and successors for the device ${device}. Request is sent to controller ${controller_index}.</doc>
<status status="FAIL" start="2026-04-08T01:01:34.998135" elapsed="30.317238">Keyword 'ClusterManagement.Verify_Owner_And_Successors_For_Device' failed after retrying for 30 seconds. The last error was: Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Get From List" owner="Collections">
<var>${original_successor}</var>
<arg>${original_successor_list}</arg>
<arg>0</arg>
<doc>Returns the value specified with an ``index`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:05.315617" elapsed="0.000029"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<arg>${original_owner}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:05.315871" elapsed="0.000028"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<arg>${original_successor_list}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:05.316108" elapsed="0.000028"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<arg>${original_successor}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:05.316419" elapsed="0.000029"/>
</kw>
<doc>Check Entity Owner Status and identify owner and successor for first switch s1.</doc>
<status status="FAIL" start="2026-04-08T01:01:34.586215" elapsed="30.730426">Keyword 'ClusterManagement.Verify_Owner_And_Successors_For_Device' failed after retrying for 30 seconds. The last error was: Could not parse owner and candidates for device openflow:1</status>
</test>
<test id="s1-s4-t47" name="Check Switch Generates Slave Connection Before Owner Stop" line="331">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-08T01:02:05.321670" elapsed="0.000292"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-08T01:02:05.321297" elapsed="0.000742"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:02:05.323449" elapsed="0.000020"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:02:05.323296" elapsed="0.000215"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:05.323270" elapsed="0.000273"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:02:05.329098" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:02:05.328990" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:05.328972" elapsed="0.000209"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:02:05.330219" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:02:05.329798" elapsed="0.000449"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:02:05.330711" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:02:05.330408" elapsed="0.000329"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T01:02:05.330781" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T01:02:05.330934" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T01:02:05.329409" elapsed="0.001550"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:02:05.336260" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:02:05.336138" elapsed="0.000167"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:05.336119" elapsed="0.000207"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:02:05.337489" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:02:05.337383" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:05.337365" elapsed="0.000192"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:02:05.337993" level="INFO">${karaf_connection_index} = 476</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:02:05.337702" elapsed="0.000318"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:02:05.338481" level="INFO">${current_connection_index} = 495</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:02:05.338197" elapsed="0.000311"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:02:05.373574" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:02:05.339005" elapsed="0.034671"/>
</kw>
<msg time="2026-04-08T01:02:05.373837" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T01:02:05.373884" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:02:05.338668" elapsed="0.035253"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T01:02:05.427889" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "S "w "i "t "c "h "[C "G "e "n "e "r "a "t "e "s "[C "S "l "a "v "e "[C "C "o "n "n "e "c "t "i "o "n "[C "B "e "f "o "r "e "[C "O "w "n "e "[78Cr "[A[78C
 "S "t "o "p "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T01:02:05.374464" elapsed="0.053542"/>
</kw>
<msg time="2026-04-08T01:02:05.428181" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T01:02:05.428230" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "S "w "i "t "c "h...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:02:05.374094" elapsed="0.054173"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:05.428587" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:05.428345" elapsed="0.000336"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:05.428325" elapsed="0.000383"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:02:05.429187" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "S "w "i "t "c "h "[C "G "e "n "e "r "a "t "e "s "[C "S "l "a "v "e "[C "C "o "n "n "e "c "t "i "o "n "[C "B "e "f "o "r "e "[C "O "w "n "e "[78Cr "[A[78C
 "S "t "o "p "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:02:05.428856" elapsed="0.000418"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:05.429565" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:05.429343" elapsed="0.000275"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:05.429325" elapsed="0.000317"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T01:02:05.429675" elapsed="0.000028"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:02:05.432216" elapsed="0.000180"/>
</kw>
<msg time="2026-04-08T01:02:05.432457" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:02:05.431152" elapsed="0.001457"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:05.432883" elapsed="0.000074"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:05.433239" elapsed="0.000073"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:02:05.430504" elapsed="0.002915"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T01:02:05.429956" elapsed="0.003527"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T01:02:05.337061" elapsed="0.096520"/>
</kw>
<msg time="2026-04-08T01:02:05.433672" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:02:05.433715" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "S "w "i "t "c "h...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:02:05.336478" elapsed="0.097275"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T01:02:05.433934" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-08T01:02:05.433828" elapsed="0.000163"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:05.433810" elapsed="0.000205"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:05.434430" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:05.434752" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T01:02:05.434821" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T01:02:05.335805" elapsed="0.099119"/>
</kw>
<msg time="2026-04-08T01:02:05.435014" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:02:05.435057" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "S "w "i "t "c "h...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:02:05.331336" elapsed="0.103758"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:05.435430" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:05.435182" elapsed="0.000300"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:05.435150" elapsed="0.000355"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T01:02:05.331193" elapsed="0.104334"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:02:05.440903" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:02:05.440796" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:05.440775" elapsed="0.000195"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:02:05.442102" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:02:05.441996" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:05.441979" elapsed="0.000230"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:02:05.442652" level="INFO">${karaf_connection_index} = 478</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:02:05.442356" elapsed="0.000322"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:02:05.443135" level="INFO">${current_connection_index} = 495</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:02:05.442881" elapsed="0.000296"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:02:05.476942" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:02:05.443678" elapsed="0.033567"/>
</kw>
<msg time="2026-04-08T01:02:05.477553" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T01:02:05.477624" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:02:05.443342" elapsed="0.034338"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T01:02:05.527958" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "S "w "i "t "c "h "[C "G "e "n "e "r "a "t "e "s "[C "S "l "a "v "e "[C "C "o "n "n "e "c "t "i "o "n "[C "B "e "f "o "r "e "[C "O "w "n "e "[78Cr "[A[78C
 "S "t "o "p "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T01:02:05.479620" elapsed="0.048474"/>
</kw>
<msg time="2026-04-08T01:02:05.528275" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T01:02:05.528322" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "S "w "i "t "c "h...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:02:05.478006" elapsed="0.050354"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:05.528732" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:05.528467" elapsed="0.000322"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:05.528429" elapsed="0.000391"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:02:05.529304" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "S "w "i "t "c "h "[C "G "e "n "e "r "a "t "e "s "[C "S "l "a "v "e "[C "C "o "n "n "e "c "t "i "o "n "[C "B "e "f "o "r "e "[C "O "w "n "e "[78Cr "[A[78C
 "S "t "o "p "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:02:05.528967" elapsed="0.000423"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:05.529683" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:05.529459" elapsed="0.000278"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:05.529440" elapsed="0.000320"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T01:02:05.529796" elapsed="0.000050"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:02:05.532741" elapsed="0.000188"/>
</kw>
<msg time="2026-04-08T01:02:05.532991" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:02:05.531419" elapsed="0.001706"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:05.533430" elapsed="0.000076"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:05.533766" elapsed="0.000073"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:02:05.530716" elapsed="0.003234"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T01:02:05.530130" elapsed="0.003885"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T01:02:05.441698" elapsed="0.092416"/>
</kw>
<msg time="2026-04-08T01:02:05.534412" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:02:05.534463" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "S "w "i "t "c "h...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:02:05.441121" elapsed="0.093381"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T01:02:05.534691" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-08T01:02:05.534583" elapsed="0.000167"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:05.534564" elapsed="0.000212"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 2,
close the previous connection. In any case create a new connection
to karaf console for 2, set correct prompt set and login to karaf console.
Store connection index for 2 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:05.535198" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:05.535536" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T01:02:05.535684" elapsed="0.000017"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T01:02:05.440424" elapsed="0.095371"/>
</kw>
<msg time="2026-04-08T01:02:05.535890" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:02:05.535935" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "S "w "i "t "c "h...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:02:05.435785" elapsed="0.100188"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:05.536318" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:05.536049" elapsed="0.000324"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:05.536033" elapsed="0.000363"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T01:02:05.435646" elapsed="0.100774"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:02:05.541830" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:02:05.541722" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:05.541703" elapsed="0.000193"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:02:05.543063" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:02:05.542956" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:05.542938" elapsed="0.000192"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:02:05.543612" level="INFO">${karaf_connection_index} = 480</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:02:05.543303" elapsed="0.000336"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:02:05.544050" level="INFO">${current_connection_index} = 495</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:02:05.543800" elapsed="0.000277"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:02:05.580298" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:02:05.544625" elapsed="0.036237"/>
</kw>
<msg time="2026-04-08T01:02:05.581072" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T01:02:05.581121" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:02:05.544256" elapsed="0.036931"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T01:02:05.646695" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "S "w "i "t "c "h "[C "G "e "n "e "r "a "t "e "s "[C "S "l "a "v "e "[C "C "o "n "n "e "c "t "i "o "n "[C "B "e "f "o "r "e "[C "O "w "n "e "[78Cr "[A[78C
 "S "t "o "p "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T01:02:05.581835" elapsed="0.064980"/>
</kw>
<msg time="2026-04-08T01:02:05.646972" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T01:02:05.647018" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "S "w "i "t "c "h...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:02:05.581420" elapsed="0.065635"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:05.647558" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:05.647304" elapsed="0.000308"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:05.647277" elapsed="0.000362"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:02:05.648089" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "S "w "i "t "c "h "[C "G "e "n "e "r "a "t "e "s "[C "S "l "a "v "e "[C "C "o "n "n "e "c "t "i "o "n "[C "B "e "f "o "r "e "[C "O "w "n "e "[78Cr "[A[78C
 "S "t "o "p "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:02:05.647783" elapsed="0.000404"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:05.648506" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:05.648257" elapsed="0.000304"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:05.648238" elapsed="0.000346"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T01:02:05.648620" elapsed="0.000036"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:02:05.651364" elapsed="0.000187"/>
</kw>
<msg time="2026-04-08T01:02:05.651668" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:02:05.650146" elapsed="0.001661"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:05.652088" elapsed="0.000275"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:05.652647" elapsed="0.000074"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:02:05.649516" elapsed="0.003317"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T01:02:05.648936" elapsed="0.003963"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T01:02:05.542656" elapsed="0.110342"/>
</kw>
<msg time="2026-04-08T01:02:05.653089" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:02:05.653133" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "S "w "i "t "c "h...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:02:05.542050" elapsed="0.111160"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T01:02:05.653397" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-08T01:02:05.653289" elapsed="0.000166"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:05.653270" elapsed="0.000209"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 3,
close the previous connection. In any case create a new connection
to karaf console for 3, set correct prompt set and login to karaf console.
Store connection index for 3 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:05.653876" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:05.654232" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T01:02:05.654302" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T01:02:05.541379" elapsed="0.113028"/>
</kw>
<msg time="2026-04-08T01:02:05.654500" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:02:05.654543" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "S "w "i "t "c "h...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:02:05.536710" elapsed="0.117872"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:05.654909" elapsed="0.000019"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:05.654657" elapsed="0.000446"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:05.654640" elapsed="0.000486"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T01:02:05.536566" elapsed="0.118584"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-08T01:02:05.331010" elapsed="0.324190"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-08T01:02:05.328618" elapsed="0.326641"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-08T01:02:05.322874" elapsed="0.332453"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:02:05.322273" elapsed="0.333102"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-08T01:02:05.318296" elapsed="0.337135"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:02:05.659990" level="FAIL">Variable '${original_successor}' not found.</msg>
<var>${original_slave}</var>
<arg>${ODL_SYSTEM_${original_successor}_IP}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="FAIL" start="2026-04-08T01:02:05.655604" elapsed="0.004427">Variable '${original_successor}' not found.</status>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<arg>50s</arg>
<arg>1s</arg>
<arg>OvsManager.Should Be Slave</arg>
<arg>s1</arg>
<arg>${original_slave}</arg>
<arg>update_data=${True}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:05.660228" elapsed="0.000022"/>
</kw>
<doc>Check switch s1 is connected to Slave.</doc>
<status status="FAIL" start="2026-04-08T01:02:05.317142" elapsed="0.343271">Variable '${original_successor}' not found.</status>
</test>
<test id="s1-s4-t48" name="Check Shards Status Before Owner Stop" line="342">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-08T01:02:05.666088" elapsed="0.000230"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-08T01:02:05.665822" elapsed="0.000551"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:02:05.667364" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:02:05.667252" elapsed="0.000207"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:05.667233" elapsed="0.000252"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:02:05.672370" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:02:05.672240" elapsed="0.000176"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:05.672220" elapsed="0.000218"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:02:05.673474" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:02:05.673057" elapsed="0.000444"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:02:05.673966" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:02:05.673663" elapsed="0.000329"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T01:02:05.674035" elapsed="0.000032"/>
</return>
<msg time="2026-04-08T01:02:05.674209" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T01:02:05.672677" elapsed="0.001642"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:02:05.679652" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:02:05.679546" elapsed="0.000150"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:05.679527" elapsed="0.000191"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:02:05.680939" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:02:05.680832" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:05.680814" elapsed="0.000192"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:02:05.681521" level="INFO">${karaf_connection_index} = 476</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:02:05.681217" elapsed="0.000331"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:02:05.681975" level="INFO">${current_connection_index} = 495</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:02:05.681714" elapsed="0.000287"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:02:05.709716" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:02:05.682517" elapsed="0.027297"/>
</kw>
<msg time="2026-04-08T01:02:05.709973" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T01:02:05.710020" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:02:05.682177" elapsed="0.027880"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T01:02:05.742155" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "S "h "a "r "d "s "[C "S "t "a "t "u "s "[C "B "e "f "o "r "e "[C "O "w "n "e "r "[C "S "t "o "p "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T01:02:05.710588" elapsed="0.031685"/>
</kw>
<msg time="2026-04-08T01:02:05.742429" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T01:02:05.742476" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "S "h "a "r "d "s...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:02:05.710247" elapsed="0.032265"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:05.742816" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:05.742590" elapsed="0.000280"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:05.742570" elapsed="0.000324"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:02:05.743359" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "S "h "a "r "d "s "[C "S "t "a "t "u "s "[C "B "e "f "o "r "e "[C "O "w "n "e "r "[C "S "t "o "p "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:02:05.743038" elapsed="0.000394"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:05.743718" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:05.743499" elapsed="0.000273"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:05.743481" elapsed="0.000314"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T01:02:05.743827" elapsed="0.000031"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:02:05.746523" elapsed="0.000181"/>
</kw>
<msg time="2026-04-08T01:02:05.746766" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:02:05.745319" elapsed="0.001577"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:05.747194" elapsed="0.000077"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:05.747529" elapsed="0.000074"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:02:05.744691" elapsed="0.003018"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T01:02:05.744110" elapsed="0.003663"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T01:02:05.680524" elapsed="0.067346"/>
</kw>
<msg time="2026-04-08T01:02:05.747959" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:02:05.748002" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "S "h "a "r "d "s...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:02:05.679870" elapsed="0.068168"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T01:02:05.748268" elapsed="0.000051"/>
</return>
<status status="PASS" start="2026-04-08T01:02:05.748113" elapsed="0.000241"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:05.748095" elapsed="0.000283"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:05.748759" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:05.749085" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T01:02:05.749285" elapsed="0.000023"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T01:02:05.679213" elapsed="0.070196"/>
</kw>
<msg time="2026-04-08T01:02:05.749501" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:02:05.749547" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "S "h "a "r "d "s...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:02:05.674700" elapsed="0.074885"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:05.749914" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:05.749660" elapsed="0.000307"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:05.749642" elapsed="0.000348"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T01:02:05.674556" elapsed="0.075458"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:02:05.755734" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:02:05.755145" elapsed="0.000636"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:05.755125" elapsed="0.000677"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:02:05.756952" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:02:05.756845" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:05.756827" elapsed="0.000193"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:02:05.757483" level="INFO">${karaf_connection_index} = 478</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:02:05.757184" elapsed="0.000326"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:02:05.757920" level="INFO">${current_connection_index} = 495</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:02:05.757671" elapsed="0.000275"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:02:05.787892" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:02:05.758461" elapsed="0.029529"/>
</kw>
<msg time="2026-04-08T01:02:05.788189" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T01:02:05.788238" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:02:05.758108" elapsed="0.030167"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T01:02:05.827407" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "S "h "a "r "d "s "[C "S "t "a "t "u "s "[C "B "e "f "o "r "e "[C "O "w "n "e "r "[C "S "t "o "p "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T01:02:05.788789" elapsed="0.038724"/>
</kw>
<msg time="2026-04-08T01:02:05.827669" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T01:02:05.827715" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "S "h "a "r "d "s...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:02:05.788447" elapsed="0.039304"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:05.828052" elapsed="0.000039"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:05.827828" elapsed="0.000298"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:05.827808" elapsed="0.000341"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:02:05.828780" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "S "h "a "r "d "s "[C "S "t "a "t "u "s "[C "B "e "f "o "r "e "[C "O "w "n "e "r "[C "S "t "o "p "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:02:05.828314" elapsed="0.000540"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:05.829144" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:05.828922" elapsed="0.000295"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:05.828904" elapsed="0.000336"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T01:02:05.829273" elapsed="0.000029"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:02:05.831687" elapsed="0.000182"/>
</kw>
<msg time="2026-04-08T01:02:05.831930" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:02:05.830687" elapsed="0.001371"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:05.832487" elapsed="0.000079"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:05.832825" elapsed="0.000074"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:02:05.830064" elapsed="0.002942"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T01:02:05.829536" elapsed="0.003532"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T01:02:05.756545" elapsed="0.076641"/>
</kw>
<msg time="2026-04-08T01:02:05.833279" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:02:05.833322" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "S "h "a "r "d "s...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:02:05.755956" elapsed="0.077403"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T01:02:05.833540" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-08T01:02:05.833434" elapsed="0.000163"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:05.833416" elapsed="0.000204"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 2,
close the previous connection. In any case create a new connection
to karaf console for 2, set correct prompt set and login to karaf console.
Store connection index for 2 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:05.834119" elapsed="0.000027"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:05.834469" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T01:02:05.834539" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T01:02:05.754809" elapsed="0.079833"/>
</kw>
<msg time="2026-04-08T01:02:05.834733" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:02:05.834776" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "S "h "a "r "d "s...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:02:05.750292" elapsed="0.084525"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:05.835138" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:05.834890" elapsed="0.000318"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:05.834873" elapsed="0.000358"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T01:02:05.750133" elapsed="0.085163"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:02:05.840559" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:02:05.840453" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:05.840434" elapsed="0.000192"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:02:05.841835" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:02:05.841728" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:05.841710" elapsed="0.000192"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:02:05.842364" level="INFO">${karaf_connection_index} = 480</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:02:05.842047" elapsed="0.000344"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:02:05.842799" level="INFO">${current_connection_index} = 495</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:02:05.842552" elapsed="0.000273"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:02:05.879069" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:02:05.843340" elapsed="0.036000"/>
</kw>
<msg time="2026-04-08T01:02:05.879573" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T01:02:05.879625" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:02:05.842986" elapsed="0.036678"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T01:02:05.920648" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "S "h "a "r "d "s "[C "S "t "a "t "u "s "[C "B "e "f "o "r "e "[C "O "w "n "e "r "[C "S "t "o "p "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T01:02:05.880464" elapsed="0.040457"/>
</kw>
<msg time="2026-04-08T01:02:05.921356" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T01:02:05.921463" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "S "h "a "r "d "s...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:02:05.879916" elapsed="0.041633"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:05.922360" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:05.921749" elapsed="0.000731"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:05.921694" elapsed="0.000834"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:02:05.923503" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "S "h "a "r "d "s "[C "S "t "a "t "u "s "[C "B "e "f "o "r "e "[C "O "w "n "e "r "[C "S "t "o "p "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:02:05.922807" elapsed="0.000845"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:05.924275" elapsed="0.000047"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:05.923789" elapsed="0.000602"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:05.923752" elapsed="0.000689"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T01:02:05.924516" elapsed="0.000070"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:02:05.929924" elapsed="0.000271"/>
</kw>
<msg time="2026-04-08T01:02:05.930278" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:02:05.928070" elapsed="0.002394"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:05.930873" elapsed="0.000099"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:05.931576" elapsed="0.000098"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:02:05.926775" elapsed="0.005050"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T01:02:05.925131" elapsed="0.006786"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T01:02:05.841427" elapsed="0.090650"/>
</kw>
<msg time="2026-04-08T01:02:05.932233" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:02:05.932297" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "S "h "a "r "d "s...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:02:05.840778" elapsed="0.091636"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T01:02:05.932675" elapsed="0.000035"/>
</return>
<status status="PASS" start="2026-04-08T01:02:05.932528" elapsed="0.000228"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:05.932501" elapsed="0.000293"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 3,
close the previous connection. In any case create a new connection
to karaf console for 3, set correct prompt set and login to karaf console.
Store connection index for 3 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:05.933368" elapsed="0.000034"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:05.933836" elapsed="0.000034"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T01:02:05.933935" elapsed="0.000021"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T01:02:05.840093" elapsed="0.093983"/>
</kw>
<msg time="2026-04-08T01:02:05.934221" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:02:05.934284" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "S "h "a "r "d "s...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:02:05.835562" elapsed="0.098775"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:05.934790" elapsed="0.000029"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:05.934445" elapsed="0.000419"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:05.934420" elapsed="0.000479"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T01:02:05.835421" elapsed="0.099516"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-08T01:02:05.674378" elapsed="0.260611"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-08T01:02:05.671830" elapsed="0.263248"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-08T01:02:05.666945" elapsed="0.268243"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:02:05.666524" elapsed="0.268742"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-08T01:02:05.661516" elapsed="0.273838"/>
</kw>
<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-04-08T01:02:05.965129" elapsed="0.000262"/>
</kw>
<msg time="2026-04-08T01:02:05.965455" 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>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:02:05.964476" elapsed="0.001039"/>
</kw>
<arg>phosphorus</arg>
<arg>${kw_name}</arg>
<arg>@{varargs}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Compare ${lower_bound} to vanadium and in case vanadium 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-04-08T01:02:05.963981" elapsed="0.001612"/>
</kw>
<msg time="2026-04-08T01:02:05.965639" 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-04-08T01:02:05.954350" elapsed="0.011331"/>
</kw>
<arg>Collections.Remove Values From List</arg>
<arg>${SHARD_OPER_LIST}</arg>
<arg>entity-ownership</arg>
<doc>Compare phosphorus to vanadium and in case vanadium is at least phosphorus,
run ${kw_name} @{varargs} &amp;{kwargs} and return its value.</doc>
<status status="PASS" start="2026-04-08T01:02:05.953675" elapsed="0.012081"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:02:05.966232" 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-04-08T01:02:05.965961" elapsed="0.000317"/>
</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-04-08T01:02:05.971782" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:02:05.971391" elapsed="0.000418"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:02:05.972325" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:02:05.972000" elapsed="0.000352"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T01:02:05.972400" elapsed="0.000032"/>
</return>
<msg time="2026-04-08T01:02:05.972560" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T01:02:05.970998" elapsed="0.001587"/>
</kw>
<kw name="Sort List" owner="Collections">
<arg>${index_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="PASS" start="2026-04-08T01:02:05.972818" elapsed="0.000159"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:02:05.973497" level="INFO">${ds_type} = operational</msg>
<var>${ds_type}</var>
<arg>'${shard_type}' != 'config'</arg>
<arg>operational</arg>
<arg>config</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:02:05.973142" elapsed="0.000382"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:02:05.973929" level="INFO">${leader_list} = []</msg>
<var>${leader_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:02:05.973686" elapsed="0.000268"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:02:05.974361" level="INFO">${follower_list} = []</msg>
<var>${follower_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:02:05.974105" elapsed="0.000282"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_Raft_State_Of_Shard_At_Member" owner="ClusterManagement">
<kw name="Get_Raft_Property_From_Shard_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:02:05.976913" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:02:05.976564" elapsed="0.000377"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T01:02:05.976986" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T01:02:05.977133" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T01:02:05.976216" elapsed="0.000962"/>
</kw>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Get_As_Json_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:02:06.066620" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:02:06.066240" elapsed="0.000410"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T01:02:06.067434" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T01:02:06.067153" elapsed="0.000358">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-08T01:02:06.067604" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T01:02:06.066816" elapsed="0.000812"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:02:06.068221" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:02:06.067821" elapsed="0.000427"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T01:02:06.068552" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-08T01:02:06.068728" level="INFO">${template} = /rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T01:02:06.068413" elapsed="0.000342"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:02:06.069172" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:02:06.068913" elapsed="0.000305"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:02:06.070184" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:02:06.069917" elapsed="0.000314"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-08T01:02:06.070661" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-08T01:02:06.070394" elapsed="0.000293"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:06.071010" elapsed="0.000022"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:06.071229" elapsed="0.000025"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:06.071405" elapsed="0.000021"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-08T01:02:06.070873" elapsed="0.000590"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-08T01:02:06.070734" elapsed="0.000761"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-08T01:02:06.071539" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T01:02:06.071699" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-08T01:02:06.069588" elapsed="0.002137"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:06.069289" elapsed="0.002535"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:06.072007" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:06.071854" elapsed="0.000209"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:06.069268" elapsed="0.002816"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:02:06.072697" level="INFO">${final_text} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:02:06.072247" elapsed="0.000478"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T01:02:06.072773" elapsed="0.000028"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="PASS" start="2026-04-08T01:02:06.065606" elapsed="0.007289"/>
</kw>
<msg time="2026-04-08T01:02:06.072947" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:02:06.052739" elapsed="0.020288"/>
</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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:06.086120" elapsed="0.000068"/>
</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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:06.101124" elapsed="0.000060"/>
</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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:06.113818" elapsed="0.000042"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:06.114652" elapsed="0.000038"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:06.115467" elapsed="0.000038"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:06.116107" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:06.115950" elapsed="0.000233"/>
</branch>
<status status="NOT RUN" start="2026-04-08T01:02:06.115930" elapsed="0.000280"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:06.116376" elapsed="0.000023"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:06.116570" elapsed="0.000022"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:06.116759" elapsed="0.000021"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-08T01:02:06.115867" elapsed="0.000967"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-08T01:02:06.115594" elapsed="0.001284"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:06.117637" elapsed="0.000037"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-08T01:02:06.117759" elapsed="0.000048"/>
</return>
<msg time="2026-04-08T01:02:06.118007" level="INFO">${uri} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-08T01:02:06.044948" elapsed="0.073171"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T01:02:06.121186" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T01:02:06.120881" elapsed="0.000380">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-08T01:02:06.121455" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T01:02:06.120406" elapsed="0.001094"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:06.122040" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:06.121633" elapsed="0.000476"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:02:06.122753" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:02:06.122455" elapsed="0.000325"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:06.122150" elapsed="0.000676"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:06.121581" elapsed="0.001284"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:02:06.126184" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:02:06.123746" elapsed="0.002488"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-08T01:02:06.126312" elapsed="0.000066"/>
</return>
<msg time="2026-04-08T01:02:06.126635" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T01:02:06.119223" elapsed="0.007520"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T01:02:06.129667" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T01:02:06.129376" elapsed="0.000355">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-08T01:02:06.129920" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T01:02:06.128909" elapsed="0.001056"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-08T01:02:06.130376" elapsed="0.000082"/>
</return>
<status status="PASS" start="2026-04-08T01:02:06.130096" elapsed="0.000432"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:06.130045" elapsed="0.000523"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:06.131406" elapsed="0.000038"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:06.132299" elapsed="0.000039"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-08T01:02:06.132506" elapsed="0.000062"/>
</return>
<msg time="2026-04-08T01:02:06.135674" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T01:02:06.127753" elapsed="0.008076"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:02:06.141279" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:02:06.140727" elapsed="0.000802"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:02:06.142993" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:02:06.142456" elapsed="0.000847"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T01:02:06.158473" level="INFO">GET Request : url=http://10.30.170.48:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 path_url=/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01s3bfo0y24i1es90l47mavglv0.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T01:02:06.159518" level="INFO">GET Response : url=http://10.30.170.48:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Transfer-Encoding': 'chunked'} 
 body={"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","encrypted-passwords","hidden-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-private-keys","asymmetrically-encrypted-value-format","cleartext-private-keys","cms-encrypted-data-format","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["client-ident-hostbased","ssh-client-keepalives","client-ident-password","client-ident-publickey"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-ex... (set the log level to DEBUG or TRACE to see the full content) 
 </msg>
<msg time="2026-04-08T01:02:06.160136" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T01:02:06.145977" elapsed="0.014260"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:06.143449" elapsed="0.016916"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:06.161102" elapsed="0.000094"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:06.160466" elapsed="0.000856"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:06.143394" elapsed="0.018011"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:02:06.170247" level="INFO">{"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","encrypted-passwords","hidden-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-private-keys","asymmetrically-encrypted-value-format","cleartext-private-keys","cms-encrypted-data-format","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["client-ident-hostbased","ssh-client-keepalives","client-ident-password","client-ident-publickey"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-experimenter-types?revision=2015-10-20","namespace":"urn:opendaylight:openflowplugin:experimenter:types","conformance-type":"import"},{"name":"ietf-ip_2018-02-22","revision":"2018-02-22","schema":"/rests/modules/ietf-ip?revision=2018-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-ip","conformance-type":"import","feature":["ipv6-privacy-autoconf","ipv4-non-contiguous-netmasks"]},{"name":"ietf-tcp-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-client","conformance-type":"import","feature":["local-binding-supported","tcp-client-keepalives"]},{"name":"node-config_2014-10-15","revision":"2014-10-15","schema":"/rests/modules/node-config?revision=2014-10-15","namespace":"urn:opendaylight:module:config","conformance-type":"import"},{"name":"ietf-restconf_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf","conformance-type":"import"},{"name":"ietf-datastores_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-datastores?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-datastores","conformance-type":"import"},{"name":"ietf-yang-patch_2017-02-22","revision":"2017-02-22","schema":"/rests/modules/ietf-yang-patch?revision=2017-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-patch","conformance-type":"import"},{"name":"sal-group_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-group?revision=2013-09-18","namespace":"urn:opendaylight:group:service","conformance-type":"import"},{"name":"odl-codegen-extensions_2024-06-27","revision":"2024-06-27","schema":"/rests/modules/odl-codegen-extensions?revision=2024-06-27","namespace":"urn:opendaylight:yang:extension:codegen","conformance-type":"import"},{"name":"sal-meter_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-meter?revision=2013-09-18","namespace":"urn:opendaylight:meter:service","conformance-type":"import"},{"name":"ietf-interfaces_2018-02-20","revision":"2018-02-20","schema":"/rests/modules/ietf-interfaces?revision=2018-02-20","namespace":"urn:ietf:params:xml:ns:yang:ietf-interfaces","conformance-type":"import","feature":["pre-provisioning","if-mib","arbitrary-names"]},{"name":"opendaylight-l2-types_2013-08-27","revision":"2013-08-27","schema":"/rests/modules/opendaylight-l2-types?revision=2013-08-27","namespace":"urn:opendaylight:l2:types","conformance-type":"import"},{"name":"opendaylight-flow-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-flow-types?revision=2013-10-26","namespace":"urn:opendaylight:flow:types","conformance-type":"import"},{"name":"lldp-speaker-config_2016-05-12","revision":"2016-05-12","schema":"/rests/modules/lldp-speaker-config?revision=2016-05-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker:config","conformance-type":"import"},{"name":"aaa-cert_2015-11-26","revision":"2015-11-26","schema":"/rests/modules/aaa-cert?revision=2015-11-26","namespace":"urn:opendaylight:yang:aaa:cert","conformance-type":"import"},{"name":"openflow-action_2015-02-03","revision":"2015-02-03","schema":"/rests/modules/openflow-action?revision=2015-02-03","namespace":"urn:opendaylight:openflow:common:action","conformance-type":"import"},{"name":"openflow-approved-extensions_2016-08-02","revision":"2016-08-02","schema":"/rests/modules/openflow-approved-extensions?revision=2016-08-02","namespace":"urn:opendaylight:openflow:approved:extensions","conformance-type":"import"},{"name":"nc-notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/nc-notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netmod:notification","conformance-type":"import"},{"name":"ietf-netconf-nmda_2019-01-07","revision":"2019-01-07","schema":"/rests/modules/ietf-netconf-nmda?revision=2019-01-07","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-nmda","conformance-type":"import","feature":["with-defaults","origin"]},{"name":"ietf-tcp-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-common","conformance-type":"import","feature":["keepalives-supported"]},{"name":"network-topology_2013-10-21","revision":"2013-10-21","schema":"/rests/modules/network-topology?revision=2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:network-topology","conformance-type":"import"},{"name":"aaa-encrypt-service-config_2024-02-02","revision":"2024-02-02","schema":"/rests/modules/aaa-encrypt-service-config?revision=2024-02-02","namespace":"config:aaa:authn:encrypt:service:config","conformance-type":"import"},{"name":"openflow-instruction_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-instruction?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:instruction","conformance-type":"import"},{"name":"ietf-tls-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-client","conformance-type":"import","feature":["client-ident-x509-cert","server-auth-x509-cert"]},{"name":"opendaylight-group-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-group-statistics?revision=2013-11-11","namespace":"urn:opendaylight:group:statistics","conformance-type":"import"},{"name":"cluster-admin_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/cluster-admin?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:cluster:admin","conformance-type":"import"},{"name":"opendaylight-flow-statistics_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-flow-statistics?revision=2013-08-19","namespace":"urn:opendaylight:flow:statistics","conformance-type":"import"},{"name":"opendaylight-table-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-table-types?revision=2013-10-26","namespace":"urn:opendaylight:table:types","conformance-type":"import"},{"name":"forwarding-rules-manager-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/forwarding-rules-manager-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:forwardingrules-manager:config","conformance-type":"import"},{"name":"odl-srm-types_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-types?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:types","conformance-type":"import"},{"name":"ietf-x509-cert-to-name_2014-12-10","revision":"2014-12-10","schema":"/rests/modules/ietf-x509-cert-to-name?revision=2014-12-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-x509-cert-to-name","conformance-type":"import"},{"name":"flow-node-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-node-inventory?revision=2013-08-19","namespace":"urn:opendaylight:flow:inventory","conformance-type":"import"},{"name":"flow-errors_2013-11-16","revision":"2013-11-16","schema":"/rests/modules/flow-errors?revision=2013-11-16","namespace":"urn:opendaylight:flow:errors","conformance-type":"import"},{"name":"ietf-netconf_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:netconf:base:1.0","conformance-type":"import","feature":["xpath","url","rollback-on-error","validate","candidate","confirmed-commit","startup","writable-running"]},{"name":"iana-ssh-public-key-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-public-key-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-public-key-algs","conformance-type":"import"},{"name":"aaa-cert-mdsal_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/aaa-cert-mdsal?revision=2016-03-21","namespace":"urn:opendaylight:yang:aaa:cert:mdsal","conformance-type":"import"},{"name":"odl-device-notification_2024-02-18","revision":"2024-02-18","schema":"/rests/modules/odl-device-notification?revision=2024-02-18","namespace":"urn:opendaylight:device:notification","conformance-type":"import"},{"name":"ietf-origin_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-origin?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-origin","conformance-type":"import"},{"name":"openflow-augments_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-augments?revision=2015-02-25","namespace":"urn:opendaylight:openflow:augments","conformance-type":"import"},{"name":"iana-ssh-encryption-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-encryption-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-encryption-algs","conformance-type":"import"},{"name":"ietf-truststore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-truststore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-truststore","conformance-type":"import","feature":["inline-definitions-supported"]},{"name":"distributed-datastore-provider_2025-01-30","revision":"2025-01-30","schema":"/rests/modules/distributed-datastore-provider?revision=2025-01-30","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:distributed-datastore-provider","conformance-type":"import"},{"name":"opendaylight-group-types_2013-10-18","revision":"2013-10-18","schema":"/rests/modules/opendaylight-group-types?revision=2013-10-18","namespace":"urn:opendaylight:group:types","conformance-type":"import"},{"name":"sal-remote-augment_2023-11-03","revision":"2023-11-03","schema":"/rests/modules/sal-remote-augment?revision=2023-11-03","namespace":"urn:sal:restconf:event:subscription","conformance-type":"import"},{"name":"opendaylight-ipv6-arbitrary-bitmask-fields_2016-02-24","revision":"2016-02-24","schema":"/rests/modules/opendaylight-ipv6-arbitrary-bitmask-fields?revision=2016-02-24","namespace":"urn:opendaylight:opendaylight-ipv6-arbitrary-bitmask-fields","conformance-type":"import"},{"name":"sal-flows-batch_2016-03-14","revision":"2016-03-14","schema":"/rests/modules/sal-flows-batch?revision=2016-03-14","namespace":"urn:opendaylight:flows:service","conformance-type":"import"},{"name":"ietf-tls-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-common","conformance-type":"import","feature":["hello-params","tls12","tls13"]},{"name":"openflow-types_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-types?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:types","conformance-type":"import"},{"name":"ietf-netconf-with-defaults_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf-with-defaults?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults","conformance-type":"import"},{"name":"odl-srm-ops_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-ops?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:ops","conformance-type":"import"},{"name":"odl-general-entity_2015-09-30","revision":"2015-09-30","schema":"/rests/modules/odl-general-entity?revision=2015-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:mdsal:core:general-entity","conformance-type":"import"},{"name":"iana-ssh-key-exchange-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-key-exchange-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-key-exchange-algs","conformance-type":"import"},{"name":"node-ssl-connection-error_2019-07-23","revision":"2019-07-23","schema":"/rests/modules/node-ssl-connection-error?revision=2019-07-23","namespace":"urn:opendaylight:node-ssl-connection-error:service","conformance-type":"import"},{"name":"openflow-protocol_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-protocol?revision=2013-07-31","namespace":"urn:opendaylight:openflow:protocol","conformance-type":"import"},{"name":"ietf-udp-server_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-server?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-server","conformance-type":"import"},{"name":"ietf-keystore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-keystore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-keystore","conformance-type":"import","feature":["asymmetric-keys","inline-definitions-supported"]},{"name":"aaa_2016-12-14","revision":"2016-12-14","schema":"/rests/modules/aaa?revision=2016-12-14","namespace":"urn:opendaylight:params:xml:ns:yang:aaa","conformance-type":"import"},{"name":"aaa-cert-rpc_2015-12-15","revision":"2015-12-15","schema":"/rests/modules/aaa-cert-rpc?revision=2015-12-15","namespace":"urn:opendaylight:yang:aaa:cert:rpc","conformance-type":"import"},{"name":"system-notifications_2013-09-27","revision":"2013-09-27","schema":"/rests/modules/system-notifications?revision=2013-09-27","namespace":"urn:opendaylight:openflow:system","conformance-type":"import"},{"name":"sal-flat-batch_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/sal-flat-batch?revision=2016-03-21","namespace":"urn:opendaylight:flat-batch:service","conformance-type":"import"},{"name":"notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netconf:notification:1.0","conformance-type":"import"},{"name":"sal-remote_2014-01-14","revision":"2014-01-14","schema":"/rests/modules/sal-remote?revision=2014-01-14","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:remote","conformance-type":"import"},{"name":"yang-ext_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/yang-ext?revision=2013-07-09","namespace":"urn:opendaylight:yang:extension:yang-ext","conformance-type":"import"},{"name":"opendaylight-multipart-types_2017-01-12","revision":"2017-01-12","schema":"/rests/modules/opendaylight-multipart-types?revision=2017-01-12","namespace":"urn:opendaylight:multipart:types","conformance-type":"import"},{"name":"opendaylight-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-inventory?revision=2013-08-19","namespace":"urn:opendaylight:inventory","conformance-type":"import"},{"name":"sal-queue_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-queue?revision=2015-03-05","namespace":"urn:opendaylight:queue:service","conformance-type":"import"},{"name":"sal-groups-batch_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/sal-groups-batch?revision=2016-03-15","namespace":"urn:opendaylight:groups:service","conformance-type":"import"},{"name":"arbitrator-reconcile_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/arbitrator-reconcile?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:arbitrator-reconcile:service","conformance-type":"import"},{"name":"ietf-yang-metadata_2016-08-05","revision":"2016-08-05","schema":"/rests/modules/ietf-yang-metadata?revision=2016-08-05","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-metadata","conformance-type":"import"},{"name":"opendaylight-arbitrary-bitmask-fields_2016-01-30","revision":"2016-01-30","schema":"/rests/modules/opendaylight-arbitrary-bitmask-fields?revision=2016-01-30","namespace":"urn:opendaylight:arbitrary:bitmask:fields","conformance-type":"import"},{"name":"ietf-udp-client_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-client?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-client","conformance-type":"import","feature":["local-binding"]},{"name":"opendaylight-meter-types_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/opendaylight-meter-types?revision=2013-09-18","namespace":"urn:opendaylight:meter:types","conformance-type":"import"},{"name":"opendaylight-action-types_2013-11-12","revision":"2013-11-12","schema":"/rests/modules/opendaylight-action-types?revision=2013-11-12","namespace":"urn:opendaylight:action:types","conformance-type":"import"},{"name":"sal-role_2015-07-27","revision":"2015-07-27","schema":"/rests/modules/sal-role?revision=2015-07-27","namespace":"urn:opendaylight:role:service","conformance-type":"import"},{"name":"openflow-provider-config_2016-05-10","revision":"2016-05-10","schema":"/rests/modules/openflow-provider-config?revision=2016-05-10","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:provider:config","conformance-type":"import"},{"name":"odl-serviceutils-upgrade_2018-07-02","revision":"2018-07-02","schema":"/rests/modules/odl-serviceutils-upgrade?revision=2018-07-02","namespace":"urn:opendaylight:serviceutils:upgrade","conformance-type":"import"},{"name":"opendaylight-match-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-match-types?revision=2013-10-26","namespace":"urn:opendaylight:model:match:types","conformance-type":"import"},{"name":"ietf-restconf-server_2024-08-14","revision":"2024-08-14","schema":"/rests/modules/ietf-restconf-server?revision=2024-08-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-server","conformance-type":"import","feature":["http-listen","https-listen"]},{"name":"reconciliation-result-state_2017-07-13","revision":"2017-07-13","schema":"/rests/modules/reconciliation-result-state?revision=2017-07-13","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:rf:state","conformance-type":"import"},{"name":"onf-extensions_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/onf-extensions?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf","conformance-type":"import"},{"name":"sal-table_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/sal-table?revision=2013-10-26","namespace":"urn:opendaylight:table:service","conformance-type":"import"},{"name":"iana-http-versions_2026-02-04","revision":"2026-02-04","schema":"/rests/modules/iana-http-versions?revision=2026-02-04","namespace":"urn:ietf:params:xml:ns:yang:iana-http-versions","conformance-type":"import"},{"name":"opendaylight-direct-statistics_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/opendaylight-direct-statistics?revision=2016-05-11","namespace":"urn:opendaylight:direct:statistics","conformance-type":"import"},{"name":"opendaylight-port-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-port-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:port","conformance-type":"import"},{"name":"sal-async-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/sal-async-config?revision=2017-06-19","namespace":"urn:opendaylight:async-config:service","conformance-type":"import"},{"name":"aaa-password-service-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-password-service-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:password:service:config","conformance-type":"import"},{"name":"ietf-yang-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-yang-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-types","conformance-type":"import"},{"name":"opendaylight-queue-statistics_2013-12-16","revision":"2013-12-16","schema":"/rests/modules/opendaylight-queue-statistics?revision=2013-12-16","namespace":"urn:opendaylight:queue:statistics","conformance-type":"import"},{"name":"sal-bundle_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/sal-bundle?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf:bundle:service","conformance-type":"import"},{"name":"ietf-restconf-subscribed-notifications_2019-11-17","revision":"2019-11-17","schema":"/rests/modules/ietf-restconf-subscribed-notifications?revision=2019-11-17","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-subscribed-notifications","conformance-type":"import"},{"name":"sal-meters-batch_2016-03-16","revision":"2016-03-16","schema":"/rests/modules/sal-meters-batch?revision=2016-03-16","namespace":"urn:opendaylight:meters:service","conformance-type":"import"},{"name":"odl-entity-owners","revision":"","schema":"/rests/modules/odl-entity-owners","namespace":"urn:opendaylight:params:xml:ns:yang:controller:entity-owners","conformance-type":"import"},{"name":"sal-experimenter-mp-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-mp-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-mp-message:service","conformance-type":"import"},{"name":"packet-processing_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/packet-processing?revision=2013-07-09","namespace":"urn:opendaylight:packet:service","conformance-type":"import"},{"name":"openflow-configuration_2014-06-30","revision":"2014-06-30","schema":"/rests/modules/openflow-configuration?revision=2014-06-30","namespace":"urn:opendaylight:openflow:config","conformance-type":"import"},{"name":"odl-srm-rpcs_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-rpcs?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:rpc","conformance-type":"import"},{"name":"ietf-netconf-acm_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-netconf-acm?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-acm","conformance-type":"import"},{"name":"iana-crypt-hash_2014-08-06","revision":"2014-08-06","schema":"/rests/modules/iana-crypt-hash?revision=2014-08-06","namespace":"urn:ietf:params:xml:ns:yang:iana-crypt-hash","conformance-type":"import","feature":["crypt-hash-sha-512","crypt-hash-sha-256","crypt-hash-md5"]},{"name":"openflow-extensible-match_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-extensible-match?revision=2015-02-25","namespace":"urn:opendaylight:openflow:oxm","conformance-type":"import"}],"module-set-id":"2"}}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:02:06.165523" elapsed="0.005045"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:06.164972" elapsed="0.005632"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:06.164921" elapsed="0.005708"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:02:06.173190" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:02:06.170940" elapsed="0.002298"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:06.170710" elapsed="0.002563"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:06.170692" elapsed="0.002605"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:02:06.173897" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:02:06.173496" elapsed="0.000429"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:06.174301" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:06.174017" elapsed="0.000342"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:02:06.174947" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:02:06.174602" elapsed="0.000372"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:06.174383" elapsed="0.000627"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:06.173997" elapsed="0.001034"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:02:06.175662" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:02:06.175276" elapsed="0.000422"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:06.176084" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:06.175835" elapsed="0.000307"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:02:06.176715" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:02:06.176405" elapsed="0.000336"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:06.176181" elapsed="0.000594"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:06.175799" elapsed="0.000997"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:02:06.177008" elapsed="0.000387"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T01:02:06.177949" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:02:06.177616" elapsed="0.000359"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T01:02:06.178190" elapsed="0.002490"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T01:02:06.163258" elapsed="0.017547"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T01:02:06.181180" elapsed="0.000059"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:02:06.180935" elapsed="0.000399"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:06.180883" elapsed="0.000499"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T01:02:06.192563" level="INFO">${text_normalized} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T01:02:06.182209" elapsed="0.010466"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T01:02:06.192849" elapsed="0.000141"/>
</return>
<msg time="2026-04-08T01:02:06.193595" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T01:02:06.136824" elapsed="0.057010"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T01:02:06.194905" elapsed="0.000067"/>
</return>
<msg time="2026-04-08T01:02:06.195344" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="PASS" start="2026-04-08T01:02:05.985907" elapsed="0.209498"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Json_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:06.196237" elapsed="0.000058"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:06.195593" elapsed="0.001123"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:06.195553" elapsed="0.001228"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T01:02:06.196860" elapsed="0.000046"/>
</return>
<arg>session=${session}</arg>
<arg>folder=${RESTCONF_MODULES_DIR}</arg>
<arg>verify=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Add arguments sensible for JSON data, return Get_Templated response text.
Optionally, verification against JSON data (may be iterated) is called.
Only subset of JSON data is verified and returned if JMES path is specified in
file ${folder}/jmespath.expr.</doc>
<status status="PASS" start="2026-04-08T01:02:05.981610" elapsed="0.215445"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:05.977254" elapsed="0.219866"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:05.977234" elapsed="0.219943"/>
</if>
<kw name="Resolve_Shard_Type_Class" owner="ClusterManagement">
<if>
<branch type="IF" condition="'${shard_type}' == 'config'">
<return>
<value>DistributedConfigDatastore</value>
<status status="NOT RUN" start="2026-04-08T01:02:06.198080" elapsed="0.000021"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:02:06.197919" elapsed="0.000227"/>
</branch>
<branch type="ELSE IF" condition="'${shard_type}' == 'operational'">
<return>
<value>DistributedOperationalDatastore</value>
<status status="PASS" start="2026-04-08T01:02:06.198355" elapsed="0.000038"/>
</return>
<status status="PASS" start="2026-04-08T01:02:06.198201" elapsed="0.000239"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:06.197892" elapsed="0.000582"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized shard type: ${shard_type}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:06.198695" elapsed="0.000032"/>
</kw>
<msg time="2026-04-08T01:02:06.198875" level="INFO">${type_class} = DistributedOperationalDatastore</msg>
<var>${type_class}</var>
<arg>shard_type=${shard_type}</arg>
<doc>Simple lookup for class name corresponding to desired type.</doc>
<status status="PASS" start="2026-04-08T01:02:06.197523" elapsed="0.001389"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:02:06.199759" level="INFO">${cluster_index} = 1</msg>
<var>${cluster_index}</var>
<arg>${member_index}+${NODE_ROLE_INDEX_START}-1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:02:06.199187" elapsed="0.000611"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:02:06.200745" level="INFO">${uri} = jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-inventory-operational,type=DistributedOperationalDatastore</msg>
<var>${uri}</var>
<arg>${JOLOKIA_READ_URI}:Category=Shards,name=member-${cluster_index}-shard-${shard_name}-${shard_type},type=${type_class}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:02:06.200031" elapsed="0.000755"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:02:06.209289" level="INFO">jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-inventory-operational,type=DistributedOperationalDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:02:06.208825" elapsed="0.000512"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:02:06.209930" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:02:06.209495" elapsed="0.000481"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T01:02:06.233369" level="INFO">GET Request : url=http://10.30.170.48:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-inventory-operational,type=DistributedOperationalDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-inventory-operational,type=DistributedOperationalDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T01:02:06.233559" level="INFO">GET Response : url=http://10.30.170.48:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-inventory-operational,type=DistributedOperationalDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Wed, 08 Apr 2026 01:02:06 GMT', 'Expires': 'Wed, 08 Apr 2026 00:02:06 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-1-shard-inventory-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"ReadWriteTransactionCount":1241,"SnapshotIndex":2504,"InMemoryJournalLogSize":1,"ReplicatedToAllIndex":2504,"Leader":"member-1-shard-inventory-operational","LastIndex":2505,"RaftState":"Leader","LastApplied":2505,"LastCommittedTransactionTime":"2026-04-08 01:02:03.269","PeerAddresses":"member-3-shard-inventory-operational: pekko:\/\/opendaylight-cluster-data@10.30.171.110:2550\/user\/shardmanager-operational\/member-3-shard-inventory-operational, member-2-shard-inventory-operational: pekko:\/\/opendaylight-cluster-data@10.30.170.131:2550\/user\/shardmanager-operational\/member-2-shard-inventory-operational","LastLogIndex":2505,"LastLeadershipChangeTime":"2026-04-08 00:57:11.085","FollowerInitialSyncStatus":false,"FollowerInfo":[{"timeSinceLastActivity":"00:00:00.354","active":true,"matchIndex":2505,"voting":true,"id":"member-3-shard-inventory-operational","nextIndex":2506},{"timeSinceLastActivity":"00:00:00.354","active":true,"matchIndex":2505,"voting":true,"id":"member-2-shard-inventory-operational","nextIndex":2506}],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"1.679 ms","CurrentTerm":5,"LastTerm":5,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-inventory-operational","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":994,"TxCohortCacheSize":0,"PeerVotingStates":"member-3-shard-inventory-operational: true, member-2-shard-inventory-operational: true","LastLogTerm":5,"StatRetrievalError":null,"CommitIndex":2505,"SnapshotTerm":5,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":9,"ShardName":"member-1-shard-inventory-operational","LeadershipChangeCount":1,"InMemoryJournalDataSize":11780478},"timestamp":1775610126,"status":200} 
 </msg>
<msg time="2026-04-08T01:02:06.233828" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T01:02:06.221969" elapsed="0.012008"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:06.210044" elapsed="0.024319"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:06.234628" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:06.234406" elapsed="0.000713"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:06.210025" elapsed="0.025152"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:02:06.241929" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-1-shard-inventory-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"ReadWriteTransactionCount":1241,"SnapshotIndex":2504,"InMemoryJournalLogSize":1,"ReplicatedToAllIndex":2504,"Leader":"member-1-shard-inventory-operational","LastIndex":2505,"RaftState":"Leader","LastApplied":2505,"LastCommittedTransactionTime":"2026-04-08 01:02:03.269","PeerAddresses":"member-3-shard-inventory-operational: pekko:\/\/opendaylight-cluster-data@10.30.171.110:2550\/user\/shardmanager-operational\/member-3-shard-inventory-operational, member-2-shard-inventory-operational: pekko:\/\/opendaylight-cluster-data@10.30.170.131:2550\/user\/shardmanager-operational\/member-2-shard-inventory-operational","LastLogIndex":2505,"LastLeadershipChangeTime":"2026-04-08 00:57:11.085","FollowerInitialSyncStatus":false,"FollowerInfo":[{"timeSinceLastActivity":"00:00:00.354","active":true,"matchIndex":2505,"voting":true,"id":"member-3-shard-inventory-operational","nextIndex":2506},{"timeSinceLastActivity":"00:00:00.354","active":true,"matchIndex":2505,"voting":true,"id":"member-2-shard-inventory-operational","nextIndex":2506}],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"1.679 ms","CurrentTerm":5,"LastTerm":5,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-inventory-operational","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":994,"TxCohortCacheSize":0,"PeerVotingStates":"member-3-shard-inventory-operational: true, member-2-shard-inventory-operational: true","LastLogTerm":5,"StatRetrievalError":null,"CommitIndex":2505,"SnapshotTerm":5,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":9,"ShardName":"member-1-shard-inventory-operational","LeadershipChangeCount":1,"InMemoryJournalDataSize":11780478},"timestamp":1775610126,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:02:06.238133" elapsed="0.003955"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:06.236872" elapsed="0.005321"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:06.236844" elapsed="0.005426"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:02:06.247232" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:02:06.243736" elapsed="0.003680"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:06.242420" elapsed="0.005089"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:06.242389" elapsed="0.005247"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:02:06.249407" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:02:06.248581" elapsed="0.000890"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:06.250117" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:06.249641" elapsed="0.000676"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:02:06.251599" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:02:06.250830" elapsed="0.000843"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:06.250374" elapsed="0.001379"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:06.249620" elapsed="0.002196"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:02:06.253937" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:02:06.252784" elapsed="0.001243"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:06.255027" elapsed="0.000055"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:06.254298" elapsed="0.001017"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:02:06.256701" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:02:06.255918" elapsed="0.000857"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:06.255386" elapsed="0.001470"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:06.254267" elapsed="0.002649"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:02:06.257306" elapsed="0.000966"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T01:02:06.259513" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:02:06.258735" elapsed="0.000915"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T01:02:06.260362" elapsed="0.003657"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T01:02:06.235881" elapsed="0.028406"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T01:02:06.264613" elapsed="0.000026"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:02:06.264413" elapsed="0.000272"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:06.264381" elapsed="0.000341"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T01:02:06.270106" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-1-shard-inventory-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestam...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T01:02:06.264969" elapsed="0.005180"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T01:02:06.270344" elapsed="0.000051"/>
</return>
<msg time="2026-04-08T01:02:06.270578" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-1-shard-inventory-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestam...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T01:02:06.202294" elapsed="0.068326"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T01:02:06.270708" elapsed="0.000040"/>
</return>
<msg time="2026-04-08T01:02:06.270923" level="INFO">${data_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-1-shard-inventory-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestam...</msg>
<var>${data_text}</var>
<arg>uri=${uri}</arg>
<arg>session=${session}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-08T01:02:06.201107" elapsed="0.069856"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:02:06.273317" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-1-shard-inventory-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1775610...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:02:06.272217" elapsed="0.001167"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-08T01:02:06.273492" elapsed="0.000062"/>
</return>
<msg time="2026-04-08T01:02:06.273875" level="INFO">${data_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-1-shard-inventory-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1775610...</msg>
<var>${data_object}</var>
<arg>${data_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-08T01:02:06.271334" elapsed="0.002600"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:02:06.274758" level="INFO">${value} = {'AbortTransactionsCount': 0, 'CommitIndex': 2505, 'CommittedTransactionsCount': 994, 'CurrentTerm': 5, 'FailedReadTransactionsCount': 0, 'FailedTransactionsCount': 0, 'FollowerInfo': [{'active': True...</msg>
<var>${value}</var>
<arg>${data_object}</arg>
<arg>value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:02:06.274313" elapsed="0.000504"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:02:06.275818" level="INFO">${raft_property} = Leader</msg>
<var>${raft_property}</var>
<arg>${value}</arg>
<arg>${property}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:02:06.275310" elapsed="0.000546"/>
</kw>
<return>
<value>${raft_property}</value>
<status status="PASS" start="2026-04-08T01:02:06.275926" elapsed="0.000040"/>
</return>
<msg time="2026-04-08T01:02:06.276148" level="INFO">${raft_state} = Leader</msg>
<var>${raft_state}</var>
<arg>RaftState</arg>
<arg>${shard_name}</arg>
<arg>${shard_type}</arg>
<arg>${member_index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft property.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T01:02:05.975573" elapsed="0.300632"/>
</kw>
<return>
<value>${raft_state}</value>
<status status="PASS" start="2026-04-08T01:02:06.276290" elapsed="0.000037"/>
</return>
<msg time="2026-04-08T01:02:06.276507" level="INFO">${raft_state} = Leader</msg>
<var>${raft_state}</var>
<arg>shard_name=${shard_name}</arg>
<arg>shard_type=${ds_type}</arg>
<arg>member_index=${index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft status.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T01:02:05.974830" elapsed="0.301713"/>
</kw>
<if>
<branch type="IF" condition="'Follower' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${follower_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:06.276996" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:06.276665" elapsed="0.000571"/>
</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="PASS" start="2026-04-08T01:02:06.277580" elapsed="0.000287"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:06.277272" elapsed="0.000653"/>
</branch>
<branch type="ELSE IF" condition="${validate}">
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized Raft state: ${raft_state}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:06.278198" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:06.277960" elapsed="0.000315"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:06.276639" elapsed="0.001669"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T01:02:05.974650" elapsed="0.303693"/>
</iter>
<iter>
<kw name="Get_Raft_State_Of_Shard_At_Member" owner="ClusterManagement">
<kw name="Get_Raft_Property_From_Shard_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:02:06.282352" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:02:06.281511" elapsed="0.000884"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T01:02:06.282467" elapsed="0.000046"/>
</return>
<msg time="2026-04-08T01:02:06.282698" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T01:02:06.280972" elapsed="0.001764"/>
</kw>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Get_As_Json_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:02:06.373234" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:02:06.372774" elapsed="0.000591"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T01:02:06.374201" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T01:02:06.373909" elapsed="0.000375">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-08T01:02:06.374379" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T01:02:06.373554" elapsed="0.000850"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:02:06.374978" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:02:06.374576" elapsed="0.000430"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T01:02:06.375352" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-08T01:02:06.375532" level="INFO">${template} = /rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T01:02:06.375202" elapsed="0.000356"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:02:06.375972" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:02:06.375720" elapsed="0.000298"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:02:06.377222" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:02:06.376794" elapsed="0.000476"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-08T01:02:06.377711" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-08T01:02:06.377435" elapsed="0.000302"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:06.378073" elapsed="0.000023"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:06.378317" elapsed="0.000027"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:06.378500" elapsed="0.000022"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-08T01:02:06.377934" elapsed="0.000626"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-08T01:02:06.377791" elapsed="0.000801"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-08T01:02:06.378639" elapsed="0.000034"/>
</return>
<msg time="2026-04-08T01:02:06.378809" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-08T01:02:06.376465" elapsed="0.002370"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:06.376102" elapsed="0.002766"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:06.379047" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:06.378895" elapsed="0.000209"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:06.376077" elapsed="0.003049"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:02:06.379765" level="INFO">${final_text} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:02:06.379299" elapsed="0.000495"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T01:02:06.379841" elapsed="0.000030"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="PASS" start="2026-04-08T01:02:06.372041" elapsed="0.007926"/>
</kw>
<msg time="2026-04-08T01:02:06.380021" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:02:06.358877" elapsed="0.021234"/>
</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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:06.393078" elapsed="0.000043"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:06.405925" elapsed="0.000043"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:06.418670" elapsed="0.000043"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:06.419536" elapsed="0.000040"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:06.420362" elapsed="0.000039"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:06.420941" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:06.420786" elapsed="0.000213"/>
</branch>
<status status="NOT RUN" start="2026-04-08T01:02:06.420766" elapsed="0.000257"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:06.421210" elapsed="0.000023"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:06.421407" elapsed="0.000022"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:06.421597" elapsed="0.000022"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-08T01:02:06.420712" elapsed="0.000963"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-08T01:02:06.420486" elapsed="0.001230"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:06.422478" elapsed="0.000037"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-08T01:02:06.422600" elapsed="0.000051"/>
</return>
<msg time="2026-04-08T01:02:06.422838" level="INFO">${uri} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-08T01:02:06.352075" elapsed="0.070878"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T01:02:06.425933" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T01:02:06.425674" elapsed="0.000331">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-08T01:02:06.426215" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T01:02:06.425220" elapsed="0.001044"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:06.426789" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:06.426400" elapsed="0.000461"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:02:06.427527" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:02:06.427211" elapsed="0.000343"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:06.426908" elapsed="0.000693"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:06.426347" elapsed="0.001296"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:02:06.430946" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:02:06.428510" elapsed="0.002486"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-08T01:02:06.431073" elapsed="0.000065"/>
</return>
<msg time="2026-04-08T01:02:06.431443" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T01:02:06.424005" elapsed="0.007549"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T01:02:06.434466" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T01:02:06.434215" elapsed="0.000317">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-08T01:02:06.434726" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T01:02:06.433738" elapsed="0.001036"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-08T01:02:06.435203" elapsed="0.000080"/>
</return>
<status status="PASS" start="2026-04-08T01:02:06.434913" elapsed="0.000455"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:06.434861" elapsed="0.000551"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:06.436291" elapsed="0.000042"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:06.437057" elapsed="0.000038"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-08T01:02:06.437203" elapsed="0.000051"/>
</return>
<msg time="2026-04-08T01:02:06.441109" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T01:02:06.432580" elapsed="0.008663"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:02:06.445150" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:02:06.444743" elapsed="0.000598"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:02:06.446488" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:02:06.446064" elapsed="0.000524"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T01:02:06.496995" level="INFO">GET Request : url=http://10.30.170.131:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 path_url=/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T01:02:06.497982" level="INFO">GET Response : url=http://10.30.170.131:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 status=200, reason=OK 
 headers={'Set-Cookie': 'JSESSIONID=node01l7fnm4ypo6vn14692wsih5mir0.node0; Path=/rests; HttpOnly, rememberMe=deleteMe; Path=/rests; Max-Age=0; Expires=Tue, 07-Apr-2026 01:02:06 GMT; SameSite=lax', 'Expires': 'Thu, 01 Jan 1970 00:00:00 GMT', 'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Transfer-Encoding': 'chunked'} 
 body={"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","encrypted-passwords","hidden-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-private-keys","asymmetrically-encrypted-value-format","cleartext-private-keys","cms-encrypted-data-format","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["client-ident-hostbased","ssh-client-keepalives","client-ident-password","client-ident-publickey"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-ex... (set the log level to DEBUG or TRACE to see the full content) 
 </msg>
<msg time="2026-04-08T01:02:06.498527" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T01:02:06.448942" elapsed="0.049649"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:06.446720" elapsed="0.052000"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:06.499529" elapsed="0.000058"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:06.498825" elapsed="0.000882"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:06.446668" elapsed="0.053125"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:02:06.510543" level="INFO">{"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","encrypted-passwords","hidden-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-private-keys","asymmetrically-encrypted-value-format","cleartext-private-keys","cms-encrypted-data-format","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["client-ident-hostbased","ssh-client-keepalives","client-ident-password","client-ident-publickey"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-experimenter-types?revision=2015-10-20","namespace":"urn:opendaylight:openflowplugin:experimenter:types","conformance-type":"import"},{"name":"ietf-ip_2018-02-22","revision":"2018-02-22","schema":"/rests/modules/ietf-ip?revision=2018-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-ip","conformance-type":"import","feature":["ipv6-privacy-autoconf","ipv4-non-contiguous-netmasks"]},{"name":"ietf-tcp-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-client","conformance-type":"import","feature":["local-binding-supported","tcp-client-keepalives"]},{"name":"node-config_2014-10-15","revision":"2014-10-15","schema":"/rests/modules/node-config?revision=2014-10-15","namespace":"urn:opendaylight:module:config","conformance-type":"import"},{"name":"ietf-restconf_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf","conformance-type":"import"},{"name":"ietf-datastores_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-datastores?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-datastores","conformance-type":"import"},{"name":"ietf-yang-patch_2017-02-22","revision":"2017-02-22","schema":"/rests/modules/ietf-yang-patch?revision=2017-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-patch","conformance-type":"import"},{"name":"sal-group_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-group?revision=2013-09-18","namespace":"urn:opendaylight:group:service","conformance-type":"import"},{"name":"odl-codegen-extensions_2024-06-27","revision":"2024-06-27","schema":"/rests/modules/odl-codegen-extensions?revision=2024-06-27","namespace":"urn:opendaylight:yang:extension:codegen","conformance-type":"import"},{"name":"sal-meter_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-meter?revision=2013-09-18","namespace":"urn:opendaylight:meter:service","conformance-type":"import"},{"name":"ietf-interfaces_2018-02-20","revision":"2018-02-20","schema":"/rests/modules/ietf-interfaces?revision=2018-02-20","namespace":"urn:ietf:params:xml:ns:yang:ietf-interfaces","conformance-type":"import","feature":["pre-provisioning","if-mib","arbitrary-names"]},{"name":"opendaylight-l2-types_2013-08-27","revision":"2013-08-27","schema":"/rests/modules/opendaylight-l2-types?revision=2013-08-27","namespace":"urn:opendaylight:l2:types","conformance-type":"import"},{"name":"opendaylight-flow-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-flow-types?revision=2013-10-26","namespace":"urn:opendaylight:flow:types","conformance-type":"import"},{"name":"lldp-speaker-config_2016-05-12","revision":"2016-05-12","schema":"/rests/modules/lldp-speaker-config?revision=2016-05-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker:config","conformance-type":"import"},{"name":"aaa-cert_2015-11-26","revision":"2015-11-26","schema":"/rests/modules/aaa-cert?revision=2015-11-26","namespace":"urn:opendaylight:yang:aaa:cert","conformance-type":"import"},{"name":"openflow-action_2015-02-03","revision":"2015-02-03","schema":"/rests/modules/openflow-action?revision=2015-02-03","namespace":"urn:opendaylight:openflow:common:action","conformance-type":"import"},{"name":"openflow-approved-extensions_2016-08-02","revision":"2016-08-02","schema":"/rests/modules/openflow-approved-extensions?revision=2016-08-02","namespace":"urn:opendaylight:openflow:approved:extensions","conformance-type":"import"},{"name":"nc-notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/nc-notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netmod:notification","conformance-type":"import"},{"name":"ietf-netconf-nmda_2019-01-07","revision":"2019-01-07","schema":"/rests/modules/ietf-netconf-nmda?revision=2019-01-07","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-nmda","conformance-type":"import","feature":["with-defaults","origin"]},{"name":"ietf-tcp-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-common","conformance-type":"import","feature":["keepalives-supported"]},{"name":"network-topology_2013-10-21","revision":"2013-10-21","schema":"/rests/modules/network-topology?revision=2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:network-topology","conformance-type":"import"},{"name":"aaa-encrypt-service-config_2024-02-02","revision":"2024-02-02","schema":"/rests/modules/aaa-encrypt-service-config?revision=2024-02-02","namespace":"config:aaa:authn:encrypt:service:config","conformance-type":"import"},{"name":"openflow-instruction_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-instruction?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:instruction","conformance-type":"import"},{"name":"ietf-tls-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-client","conformance-type":"import","feature":["client-ident-x509-cert","server-auth-x509-cert"]},{"name":"opendaylight-group-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-group-statistics?revision=2013-11-11","namespace":"urn:opendaylight:group:statistics","conformance-type":"import"},{"name":"cluster-admin_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/cluster-admin?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:cluster:admin","conformance-type":"import"},{"name":"opendaylight-flow-statistics_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-flow-statistics?revision=2013-08-19","namespace":"urn:opendaylight:flow:statistics","conformance-type":"import"},{"name":"opendaylight-table-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-table-types?revision=2013-10-26","namespace":"urn:opendaylight:table:types","conformance-type":"import"},{"name":"forwarding-rules-manager-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/forwarding-rules-manager-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:forwardingrules-manager:config","conformance-type":"import"},{"name":"odl-srm-types_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-types?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:types","conformance-type":"import"},{"name":"ietf-x509-cert-to-name_2014-12-10","revision":"2014-12-10","schema":"/rests/modules/ietf-x509-cert-to-name?revision=2014-12-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-x509-cert-to-name","conformance-type":"import"},{"name":"flow-node-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-node-inventory?revision=2013-08-19","namespace":"urn:opendaylight:flow:inventory","conformance-type":"import"},{"name":"flow-errors_2013-11-16","revision":"2013-11-16","schema":"/rests/modules/flow-errors?revision=2013-11-16","namespace":"urn:opendaylight:flow:errors","conformance-type":"import"},{"name":"ietf-netconf_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:netconf:base:1.0","conformance-type":"import","feature":["xpath","url","rollback-on-error","validate","candidate","confirmed-commit","startup","writable-running"]},{"name":"iana-ssh-public-key-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-public-key-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-public-key-algs","conformance-type":"import"},{"name":"aaa-cert-mdsal_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/aaa-cert-mdsal?revision=2016-03-21","namespace":"urn:opendaylight:yang:aaa:cert:mdsal","conformance-type":"import"},{"name":"odl-device-notification_2024-02-18","revision":"2024-02-18","schema":"/rests/modules/odl-device-notification?revision=2024-02-18","namespace":"urn:opendaylight:device:notification","conformance-type":"import"},{"name":"ietf-origin_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-origin?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-origin","conformance-type":"import"},{"name":"openflow-augments_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-augments?revision=2015-02-25","namespace":"urn:opendaylight:openflow:augments","conformance-type":"import"},{"name":"iana-ssh-encryption-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-encryption-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-encryption-algs","conformance-type":"import"},{"name":"ietf-truststore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-truststore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-truststore","conformance-type":"import","feature":["inline-definitions-supported"]},{"name":"distributed-datastore-provider_2025-01-30","revision":"2025-01-30","schema":"/rests/modules/distributed-datastore-provider?revision=2025-01-30","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:distributed-datastore-provider","conformance-type":"import"},{"name":"opendaylight-group-types_2013-10-18","revision":"2013-10-18","schema":"/rests/modules/opendaylight-group-types?revision=2013-10-18","namespace":"urn:opendaylight:group:types","conformance-type":"import"},{"name":"sal-remote-augment_2023-11-03","revision":"2023-11-03","schema":"/rests/modules/sal-remote-augment?revision=2023-11-03","namespace":"urn:sal:restconf:event:subscription","conformance-type":"import"},{"name":"opendaylight-ipv6-arbitrary-bitmask-fields_2016-02-24","revision":"2016-02-24","schema":"/rests/modules/opendaylight-ipv6-arbitrary-bitmask-fields?revision=2016-02-24","namespace":"urn:opendaylight:opendaylight-ipv6-arbitrary-bitmask-fields","conformance-type":"import"},{"name":"sal-flows-batch_2016-03-14","revision":"2016-03-14","schema":"/rests/modules/sal-flows-batch?revision=2016-03-14","namespace":"urn:opendaylight:flows:service","conformance-type":"import"},{"name":"ietf-tls-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-common","conformance-type":"import","feature":["hello-params","tls12","tls13"]},{"name":"openflow-types_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-types?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:types","conformance-type":"import"},{"name":"ietf-netconf-with-defaults_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf-with-defaults?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults","conformance-type":"import"},{"name":"odl-srm-ops_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-ops?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:ops","conformance-type":"import"},{"name":"odl-general-entity_2015-09-30","revision":"2015-09-30","schema":"/rests/modules/odl-general-entity?revision=2015-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:mdsal:core:general-entity","conformance-type":"import"},{"name":"iana-ssh-key-exchange-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-key-exchange-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-key-exchange-algs","conformance-type":"import"},{"name":"node-ssl-connection-error_2019-07-23","revision":"2019-07-23","schema":"/rests/modules/node-ssl-connection-error?revision=2019-07-23","namespace":"urn:opendaylight:node-ssl-connection-error:service","conformance-type":"import"},{"name":"openflow-protocol_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-protocol?revision=2013-07-31","namespace":"urn:opendaylight:openflow:protocol","conformance-type":"import"},{"name":"ietf-udp-server_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-server?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-server","conformance-type":"import"},{"name":"ietf-keystore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-keystore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-keystore","conformance-type":"import","feature":["asymmetric-keys","inline-definitions-supported"]},{"name":"aaa_2016-12-14","revision":"2016-12-14","schema":"/rests/modules/aaa?revision=2016-12-14","namespace":"urn:opendaylight:params:xml:ns:yang:aaa","conformance-type":"import"},{"name":"aaa-cert-rpc_2015-12-15","revision":"2015-12-15","schema":"/rests/modules/aaa-cert-rpc?revision=2015-12-15","namespace":"urn:opendaylight:yang:aaa:cert:rpc","conformance-type":"import"},{"name":"system-notifications_2013-09-27","revision":"2013-09-27","schema":"/rests/modules/system-notifications?revision=2013-09-27","namespace":"urn:opendaylight:openflow:system","conformance-type":"import"},{"name":"sal-flat-batch_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/sal-flat-batch?revision=2016-03-21","namespace":"urn:opendaylight:flat-batch:service","conformance-type":"import"},{"name":"notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netconf:notification:1.0","conformance-type":"import"},{"name":"sal-remote_2014-01-14","revision":"2014-01-14","schema":"/rests/modules/sal-remote?revision=2014-01-14","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:remote","conformance-type":"import"},{"name":"yang-ext_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/yang-ext?revision=2013-07-09","namespace":"urn:opendaylight:yang:extension:yang-ext","conformance-type":"import"},{"name":"opendaylight-multipart-types_2017-01-12","revision":"2017-01-12","schema":"/rests/modules/opendaylight-multipart-types?revision=2017-01-12","namespace":"urn:opendaylight:multipart:types","conformance-type":"import"},{"name":"opendaylight-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-inventory?revision=2013-08-19","namespace":"urn:opendaylight:inventory","conformance-type":"import"},{"name":"sal-queue_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-queue?revision=2015-03-05","namespace":"urn:opendaylight:queue:service","conformance-type":"import"},{"name":"sal-groups-batch_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/sal-groups-batch?revision=2016-03-15","namespace":"urn:opendaylight:groups:service","conformance-type":"import"},{"name":"arbitrator-reconcile_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/arbitrator-reconcile?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:arbitrator-reconcile:service","conformance-type":"import"},{"name":"ietf-yang-metadata_2016-08-05","revision":"2016-08-05","schema":"/rests/modules/ietf-yang-metadata?revision=2016-08-05","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-metadata","conformance-type":"import"},{"name":"opendaylight-arbitrary-bitmask-fields_2016-01-30","revision":"2016-01-30","schema":"/rests/modules/opendaylight-arbitrary-bitmask-fields?revision=2016-01-30","namespace":"urn:opendaylight:arbitrary:bitmask:fields","conformance-type":"import"},{"name":"ietf-udp-client_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-client?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-client","conformance-type":"import","feature":["local-binding"]},{"name":"opendaylight-meter-types_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/opendaylight-meter-types?revision=2013-09-18","namespace":"urn:opendaylight:meter:types","conformance-type":"import"},{"name":"opendaylight-action-types_2013-11-12","revision":"2013-11-12","schema":"/rests/modules/opendaylight-action-types?revision=2013-11-12","namespace":"urn:opendaylight:action:types","conformance-type":"import"},{"name":"sal-role_2015-07-27","revision":"2015-07-27","schema":"/rests/modules/sal-role?revision=2015-07-27","namespace":"urn:opendaylight:role:service","conformance-type":"import"},{"name":"openflow-provider-config_2016-05-10","revision":"2016-05-10","schema":"/rests/modules/openflow-provider-config?revision=2016-05-10","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:provider:config","conformance-type":"import"},{"name":"odl-serviceutils-upgrade_2018-07-02","revision":"2018-07-02","schema":"/rests/modules/odl-serviceutils-upgrade?revision=2018-07-02","namespace":"urn:opendaylight:serviceutils:upgrade","conformance-type":"import"},{"name":"opendaylight-match-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-match-types?revision=2013-10-26","namespace":"urn:opendaylight:model:match:types","conformance-type":"import"},{"name":"ietf-restconf-server_2024-08-14","revision":"2024-08-14","schema":"/rests/modules/ietf-restconf-server?revision=2024-08-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-server","conformance-type":"import","feature":["http-listen","https-listen"]},{"name":"reconciliation-result-state_2017-07-13","revision":"2017-07-13","schema":"/rests/modules/reconciliation-result-state?revision=2017-07-13","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:rf:state","conformance-type":"import"},{"name":"onf-extensions_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/onf-extensions?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf","conformance-type":"import"},{"name":"sal-table_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/sal-table?revision=2013-10-26","namespace":"urn:opendaylight:table:service","conformance-type":"import"},{"name":"iana-http-versions_2026-02-04","revision":"2026-02-04","schema":"/rests/modules/iana-http-versions?revision=2026-02-04","namespace":"urn:ietf:params:xml:ns:yang:iana-http-versions","conformance-type":"import"},{"name":"opendaylight-direct-statistics_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/opendaylight-direct-statistics?revision=2016-05-11","namespace":"urn:opendaylight:direct:statistics","conformance-type":"import"},{"name":"opendaylight-port-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-port-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:port","conformance-type":"import"},{"name":"sal-async-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/sal-async-config?revision=2017-06-19","namespace":"urn:opendaylight:async-config:service","conformance-type":"import"},{"name":"aaa-password-service-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-password-service-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:password:service:config","conformance-type":"import"},{"name":"ietf-yang-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-yang-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-types","conformance-type":"import"},{"name":"opendaylight-queue-statistics_2013-12-16","revision":"2013-12-16","schema":"/rests/modules/opendaylight-queue-statistics?revision=2013-12-16","namespace":"urn:opendaylight:queue:statistics","conformance-type":"import"},{"name":"sal-bundle_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/sal-bundle?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf:bundle:service","conformance-type":"import"},{"name":"ietf-restconf-subscribed-notifications_2019-11-17","revision":"2019-11-17","schema":"/rests/modules/ietf-restconf-subscribed-notifications?revision=2019-11-17","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-subscribed-notifications","conformance-type":"import"},{"name":"sal-meters-batch_2016-03-16","revision":"2016-03-16","schema":"/rests/modules/sal-meters-batch?revision=2016-03-16","namespace":"urn:opendaylight:meters:service","conformance-type":"import"},{"name":"odl-entity-owners","revision":"","schema":"/rests/modules/odl-entity-owners","namespace":"urn:opendaylight:params:xml:ns:yang:controller:entity-owners","conformance-type":"import"},{"name":"sal-experimenter-mp-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-mp-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-mp-message:service","conformance-type":"import"},{"name":"packet-processing_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/packet-processing?revision=2013-07-09","namespace":"urn:opendaylight:packet:service","conformance-type":"import"},{"name":"openflow-configuration_2014-06-30","revision":"2014-06-30","schema":"/rests/modules/openflow-configuration?revision=2014-06-30","namespace":"urn:opendaylight:openflow:config","conformance-type":"import"},{"name":"odl-srm-rpcs_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-rpcs?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:rpc","conformance-type":"import"},{"name":"ietf-netconf-acm_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-netconf-acm?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-acm","conformance-type":"import"},{"name":"iana-crypt-hash_2014-08-06","revision":"2014-08-06","schema":"/rests/modules/iana-crypt-hash?revision=2014-08-06","namespace":"urn:ietf:params:xml:ns:yang:iana-crypt-hash","conformance-type":"import","feature":["crypt-hash-sha-512","crypt-hash-sha-256","crypt-hash-md5"]},{"name":"openflow-extensible-match_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-extensible-match?revision=2015-02-25","namespace":"urn:opendaylight:openflow:oxm","conformance-type":"import"}],"module-set-id":"2"}}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:02:06.504072" elapsed="0.007324"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:06.503517" elapsed="0.007967"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:06.503465" elapsed="0.008079"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:02:06.514449" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:02:06.512136" elapsed="0.002361"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:06.511730" elapsed="0.002802"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:06.511688" elapsed="0.002869"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:02:06.515186" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:02:06.514764" elapsed="0.000451"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:06.515584" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:06.515333" elapsed="0.000311"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:02:06.516148" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:02:06.515834" elapsed="0.000356"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:06.515667" elapsed="0.000561"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:06.515310" elapsed="0.000940"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:02:06.516818" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:02:06.516441" elapsed="0.000405"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:06.517204" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:06.516945" elapsed="0.000318"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:02:06.517822" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:02:06.517510" elapsed="0.000339"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:06.517287" elapsed="0.000599"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:06.516924" elapsed="0.000985"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:02:06.518088" elapsed="0.000393"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T01:02:06.518979" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:02:06.518675" elapsed="0.000331"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T01:02:06.519202" elapsed="0.002443"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T01:02:06.501637" elapsed="0.020138"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T01:02:06.522136" elapsed="0.000065"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:02:06.521910" elapsed="0.000357"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:06.521858" elapsed="0.000447"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T01:02:06.531637" level="INFO">${text_normalized} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T01:02:06.523072" elapsed="0.008617"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T01:02:06.531769" elapsed="0.000070"/>
</return>
<msg time="2026-04-08T01:02:06.532107" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T01:02:06.441918" elapsed="0.090316"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T01:02:06.532754" elapsed="0.000034"/>
</return>
<msg time="2026-04-08T01:02:06.532943" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="PASS" start="2026-04-08T01:02:06.293017" elapsed="0.239953"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Json_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:06.533330" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:06.533056" elapsed="0.000469"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:06.533039" elapsed="0.000520"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T01:02:06.533597" elapsed="0.000027"/>
</return>
<arg>session=${session}</arg>
<arg>folder=${RESTCONF_MODULES_DIR}</arg>
<arg>verify=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Add arguments sensible for JSON data, return Get_Templated response text.
Optionally, verification against JSON data (may be iterated) is called.
Only subset of JSON data is verified and returned if JMES path is specified in
file ${folder}/jmespath.expr.</doc>
<status status="PASS" start="2026-04-08T01:02:06.288662" elapsed="0.245065"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:06.282842" elapsed="0.250929"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:06.282813" elapsed="0.250983"/>
</if>
<kw name="Resolve_Shard_Type_Class" owner="ClusterManagement">
<if>
<branch type="IF" condition="'${shard_type}' == 'config'">
<return>
<value>DistributedConfigDatastore</value>
<status status="NOT RUN" start="2026-04-08T01:02:06.534431" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:02:06.534320" elapsed="0.000156"/>
</branch>
<branch type="ELSE IF" condition="'${shard_type}' == 'operational'">
<return>
<value>DistributedOperationalDatastore</value>
<status status="PASS" start="2026-04-08T01:02:06.534612" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-08T01:02:06.534500" elapsed="0.000173"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:06.534302" elapsed="0.000395"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized shard type: ${shard_type}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:06.534849" elapsed="0.000021"/>
</kw>
<msg time="2026-04-08T01:02:06.534970" level="INFO">${type_class} = DistributedOperationalDatastore</msg>
<var>${type_class}</var>
<arg>shard_type=${shard_type}</arg>
<doc>Simple lookup for class name corresponding to desired type.</doc>
<status status="PASS" start="2026-04-08T01:02:06.534028" elapsed="0.000968"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:02:06.535607" level="INFO">${cluster_index} = 2</msg>
<var>${cluster_index}</var>
<arg>${member_index}+${NODE_ROLE_INDEX_START}-1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:02:06.535192" elapsed="0.000443"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:02:06.536282" level="INFO">${uri} = jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-inventory-operational,type=DistributedOperationalDatastore</msg>
<var>${uri}</var>
<arg>${JOLOKIA_READ_URI}:Category=Shards,name=member-${cluster_index}-shard-${shard_name}-${shard_type},type=${type_class}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:02:06.535796" elapsed="0.000515"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:02:06.542125" level="INFO">jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-inventory-operational,type=DistributedOperationalDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:02:06.541654" elapsed="0.000536"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:02:06.542809" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:02:06.542353" elapsed="0.000502"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T01:02:06.568384" level="INFO">GET Request : url=http://10.30.170.131:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-inventory-operational,type=DistributedOperationalDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-inventory-operational,type=DistributedOperationalDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T01:02:06.568688" level="INFO">GET Response : url=http://10.30.170.131:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-inventory-operational,type=DistributedOperationalDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Wed, 08 Apr 2026 01:02:06 GMT', 'Expires': 'Wed, 08 Apr 2026 00:02:06 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-2-shard-inventory-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"ReadWriteTransactionCount":0,"SnapshotIndex":2528,"InMemoryJournalLogSize":7,"ReplicatedToAllIndex":2528,"Leader":"member-1-shard-inventory-operational","LastIndex":2535,"RaftState":"Follower","LastApplied":2535,"LastCommittedTransactionTime":"1970-01-01 00:00:00.000","PeerAddresses":"member-1-shard-inventory-operational: pekko:\/\/opendaylight-cluster-data@10.30.170.48:2550\/user\/shardmanager-operational\/member-1-shard-inventory-operational, member-3-shard-inventory-operational: pekko:\/\/opendaylight-cluster-data@10.30.171.110:2550\/user\/shardmanager-operational\/member-3-shard-inventory-operational","LastLogIndex":2535,"LastLeadershipChangeTime":"2026-04-08 00:57:11.085","FollowerInitialSyncStatus":true,"FollowerInfo":[],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"1.036 ms","CurrentTerm":5,"LastTerm":5,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-inventory-operational","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":0,"TxCohortCacheSize":0,"PeerVotingStates":"member-1-shard-inventory-operational: true, member-3-shard-inventory-operational: true","LastLogTerm":5,"StatRetrievalError":null,"CommitIndex":2535,"SnapshotTerm":5,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-2-shard-inventory-operational","LeadershipChangeCount":1,"InMemoryJournalDataSize":11939983},"timestamp":1775610126,"status":200} 
 </msg>
<msg time="2026-04-08T01:02:06.569131" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T01:02:06.554482" elapsed="0.014941"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:06.542926" elapsed="0.027146"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:06.570590" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:06.570219" elapsed="0.001186"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:06.542907" elapsed="0.028560"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:02:06.580114" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-2-shard-inventory-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"ReadWriteTransactionCount":0,"SnapshotIndex":2528,"InMemoryJournalLogSize":7,"ReplicatedToAllIndex":2528,"Leader":"member-1-shard-inventory-operational","LastIndex":2535,"RaftState":"Follower","LastApplied":2535,"LastCommittedTransactionTime":"1970-01-01 00:00:00.000","PeerAddresses":"member-1-shard-inventory-operational: pekko:\/\/opendaylight-cluster-data@10.30.170.48:2550\/user\/shardmanager-operational\/member-1-shard-inventory-operational, member-3-shard-inventory-operational: pekko:\/\/opendaylight-cluster-data@10.30.171.110:2550\/user\/shardmanager-operational\/member-3-shard-inventory-operational","LastLogIndex":2535,"LastLeadershipChangeTime":"2026-04-08 00:57:11.085","FollowerInitialSyncStatus":true,"FollowerInfo":[],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"1.036 ms","CurrentTerm":5,"LastTerm":5,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-inventory-operational","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":0,"TxCohortCacheSize":0,"PeerVotingStates":"member-1-shard-inventory-operational: true, member-3-shard-inventory-operational: true","LastLogTerm":5,"StatRetrievalError":null,"CommitIndex":2535,"SnapshotTerm":5,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-2-shard-inventory-operational","LeadershipChangeCount":1,"InMemoryJournalDataSize":11939983},"timestamp":1775610126,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:02:06.576291" elapsed="0.004006"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:06.574287" elapsed="0.006095"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:06.574229" elapsed="0.006215"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:02:06.585409" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:02:06.581894" elapsed="0.003671"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:06.580565" elapsed="0.005071"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:06.580539" elapsed="0.005154"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:02:06.587913" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:02:06.586704" elapsed="0.001306"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:06.588694" elapsed="0.000039"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:06.588204" elapsed="0.000583"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:02:06.589750" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:02:06.589224" elapsed="0.000574"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:06.588827" elapsed="0.001024"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:06.588181" elapsed="0.001707"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:02:06.591356" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:02:06.590564" elapsed="0.000857"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:06.592074" elapsed="0.000038"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:06.591597" elapsed="0.000583"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:02:06.593082" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:02:06.592569" elapsed="0.000561"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:06.592221" elapsed="0.001017"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:06.591576" elapsed="0.001700"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:02:06.593507" elapsed="0.000645"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T01:02:06.594999" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:02:06.594482" elapsed="0.000579"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T01:02:06.595393" elapsed="0.002540"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T01:02:06.572606" elapsed="0.025491"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T01:02:06.598467" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:02:06.598327" elapsed="0.000189"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:06.598153" elapsed="0.000385"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T01:02:06.602353" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-2-shard-inventory-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestam...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T01:02:06.598708" elapsed="0.003676"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T01:02:06.602437" elapsed="0.000034"/>
</return>
<msg time="2026-04-08T01:02:06.602604" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-2-shard-inventory-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestam...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T01:02:06.537303" elapsed="0.065363"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T01:02:06.602737" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T01:02:06.602894" level="INFO">${data_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-2-shard-inventory-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestam...</msg>
<var>${data_text}</var>
<arg>uri=${uri}</arg>
<arg>session=${session}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-08T01:02:06.536530" elapsed="0.066391"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:02:06.604020" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-2-shard-inventory-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1775610...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:02:06.603542" elapsed="0.000507"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-08T01:02:06.604100" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T01:02:06.604293" level="INFO">${data_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-2-shard-inventory-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1775610...</msg>
<var>${data_object}</var>
<arg>${data_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-08T01:02:06.603184" elapsed="0.001137"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:02:06.604685" level="INFO">${value} = {'AbortTransactionsCount': 0, 'CommitIndex': 2535, 'CommittedTransactionsCount': 0, 'CurrentTerm': 5, 'FailedReadTransactionsCount': 0, 'FailedTransactionsCount': 0, 'FollowerInfo': [], 'FollowerIniti...</msg>
<var>${value}</var>
<arg>${data_object}</arg>
<arg>value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:02:06.604483" elapsed="0.000230"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:02:06.605094" level="INFO">${raft_property} = Follower</msg>
<var>${raft_property}</var>
<arg>${value}</arg>
<arg>${property}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:02:06.604886" elapsed="0.000235"/>
</kw>
<return>
<value>${raft_property}</value>
<status status="PASS" start="2026-04-08T01:02:06.605276" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T01:02:06.605434" level="INFO">${raft_state} = Follower</msg>
<var>${raft_state}</var>
<arg>RaftState</arg>
<arg>${shard_name}</arg>
<arg>${shard_type}</arg>
<arg>${member_index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft property.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T01:02:06.280024" elapsed="0.325435"/>
</kw>
<return>
<value>${raft_state}</value>
<status status="PASS" start="2026-04-08T01:02:06.605517" elapsed="0.000026"/>
</return>
<msg time="2026-04-08T01:02:06.605666" level="INFO">${raft_state} = Follower</msg>
<var>${raft_state}</var>
<arg>shard_name=${shard_name}</arg>
<arg>shard_type=${ds_type}</arg>
<arg>member_index=${index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft status.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T01:02:06.278889" elapsed="0.326802"/>
</kw>
<if>
<branch type="IF" condition="'Follower' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${follower_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-08T01:02:06.606005" elapsed="0.000213"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:06.605778" elapsed="0.000479"/>
</branch>
<branch type="ELSE IF" condition="'Leader' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${leader_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:06.606432" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:06.606282" elapsed="0.000205"/>
</branch>
<branch type="ELSE IF" condition="${validate}">
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized Raft state: ${raft_state}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:06.606655" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:06.606511" elapsed="0.000196"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:06.605755" elapsed="0.000974"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T01:02:06.278590" elapsed="0.328164"/>
</iter>
<iter>
<kw name="Get_Raft_State_Of_Shard_At_Member" owner="ClusterManagement">
<kw name="Get_Raft_Property_From_Shard_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:02:06.609248" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:02:06.608894" elapsed="0.000382"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T01:02:06.609324" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T01:02:06.609475" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T01:02:06.608535" elapsed="0.000966"/>
</kw>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Get_As_Json_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:02:06.698500" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:02:06.698089" elapsed="0.000444"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T01:02:06.699495" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T01:02:06.699233" elapsed="0.000339">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-08T01:02:06.699741" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T01:02:06.698709" elapsed="0.001058"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:02:06.700337" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:02:06.699936" elapsed="0.000428"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T01:02:06.700669" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-08T01:02:06.700823" level="INFO">${template} = /rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T01:02:06.700529" elapsed="0.000319"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:02:06.701269" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:02:06.701006" elapsed="0.000307"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:02:06.702299" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:02:06.702028" elapsed="0.000315"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-08T01:02:06.702771" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-08T01:02:06.702503" elapsed="0.000294"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:06.703149" elapsed="0.000038"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:06.703372" elapsed="0.000024"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:06.703546" elapsed="0.000021"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-08T01:02:06.702996" elapsed="0.000607"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-08T01:02:06.702851" elapsed="0.000782"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-08T01:02:06.703681" elapsed="0.000033"/>
</return>
<msg time="2026-04-08T01:02:06.703850" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-08T01:02:06.701703" elapsed="0.002173"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:06.701394" elapsed="0.002514"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:06.704082" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:06.703934" elapsed="0.000203"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:06.701369" elapsed="0.002803"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:02:06.704758" level="INFO">${final_text} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:02:06.704318" elapsed="0.000467"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T01:02:06.704834" elapsed="0.000028"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="PASS" start="2026-04-08T01:02:06.697469" elapsed="0.007486"/>
</kw>
<msg time="2026-04-08T01:02:06.705009" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:02:06.684714" elapsed="0.020378"/>
</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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:06.718036" elapsed="0.000042"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:06.730642" elapsed="0.000041"/>
</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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:06.743224" elapsed="0.000042"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:06.744019" elapsed="0.000036"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:06.744813" elapsed="0.000036"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:06.745388" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:06.745238" elapsed="0.000207"/>
</branch>
<status status="NOT RUN" start="2026-04-08T01:02:06.745221" elapsed="0.000246"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:06.745626" elapsed="0.000021"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:06.745811" elapsed="0.000020"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:06.745995" elapsed="0.000021"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-08T01:02:06.745169" elapsed="0.000900"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-08T01:02:06.744932" elapsed="0.001176"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:06.746852" elapsed="0.000035"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-08T01:02:06.746970" elapsed="0.000075"/>
</return>
<msg time="2026-04-08T01:02:06.747237" level="INFO">${uri} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-08T01:02:06.677813" elapsed="0.069533"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T01:02:06.750211" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T01:02:06.749948" elapsed="0.000331">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-08T01:02:06.750466" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T01:02:06.749504" elapsed="0.001008"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:06.751037" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:06.750642" elapsed="0.000463"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:02:06.751735" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:02:06.751441" elapsed="0.000321"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:06.751144" elapsed="0.000664"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:06.750591" elapsed="0.001255"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:02:06.755093" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:02:06.752707" elapsed="0.002433"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-08T01:02:06.755234" elapsed="0.000064"/>
</return>
<msg time="2026-04-08T01:02:06.755549" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T01:02:06.748359" elapsed="0.007297"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T01:02:06.758583" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T01:02:06.758341" elapsed="0.000304">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-08T01:02:06.758868" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T01:02:06.757820" elapsed="0.001091"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-08T01:02:06.759337" elapsed="0.000079"/>
</return>
<status status="PASS" start="2026-04-08T01:02:06.759070" elapsed="0.000415"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:06.759017" elapsed="0.000506"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:06.760278" elapsed="0.000038"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:06.761041" elapsed="0.000036"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-08T01:02:06.761150" elapsed="0.000063"/>
</return>
<msg time="2026-04-08T01:02:06.763505" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T01:02:06.756698" elapsed="0.006914"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:02:06.767484" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:02:06.767080" elapsed="0.000503"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:02:06.768702" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:02:06.768323" elapsed="0.000474"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T01:02:06.805567" level="INFO">GET Request : url=http://10.30.171.110:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 path_url=/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T01:02:06.806023" level="INFO">GET Response : url=http://10.30.171.110:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 status=200, reason=OK 
 headers={'Set-Cookie': 'JSESSIONID=node0bpvxx3soilt318jo6w4kocddk0.node0; Path=/rests; HttpOnly, rememberMe=deleteMe; Path=/rests; Max-Age=0; Expires=Tue, 07-Apr-2026 01:02:06 GMT; SameSite=lax', 'Expires': 'Thu, 01 Jan 1970 00:00:00 GMT', 'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Transfer-Encoding': 'chunked'} 
 body={"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","encrypted-passwords","hidden-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-private-keys","asymmetrically-encrypted-value-format","cleartext-private-keys","cms-encrypted-data-format","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["client-ident-hostbased","ssh-client-keepalives","client-ident-password","client-ident-publickey"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-ex... (set the log level to DEBUG or TRACE to see the full content) 
 </msg>
<msg time="2026-04-08T01:02:06.806291" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T01:02:06.771294" elapsed="0.035026"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:06.768925" elapsed="0.037470"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:06.806749" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:06.806451" elapsed="0.000380"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:06.768874" elapsed="0.037994"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:02:06.811481" level="INFO">{"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","encrypted-passwords","hidden-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-private-keys","asymmetrically-encrypted-value-format","cleartext-private-keys","cms-encrypted-data-format","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["client-ident-hostbased","ssh-client-keepalives","client-ident-password","client-ident-publickey"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-experimenter-types?revision=2015-10-20","namespace":"urn:opendaylight:openflowplugin:experimenter:types","conformance-type":"import"},{"name":"ietf-ip_2018-02-22","revision":"2018-02-22","schema":"/rests/modules/ietf-ip?revision=2018-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-ip","conformance-type":"import","feature":["ipv6-privacy-autoconf","ipv4-non-contiguous-netmasks"]},{"name":"ietf-tcp-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-client","conformance-type":"import","feature":["local-binding-supported","tcp-client-keepalives"]},{"name":"node-config_2014-10-15","revision":"2014-10-15","schema":"/rests/modules/node-config?revision=2014-10-15","namespace":"urn:opendaylight:module:config","conformance-type":"import"},{"name":"ietf-restconf_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf","conformance-type":"import"},{"name":"ietf-datastores_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-datastores?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-datastores","conformance-type":"import"},{"name":"ietf-yang-patch_2017-02-22","revision":"2017-02-22","schema":"/rests/modules/ietf-yang-patch?revision=2017-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-patch","conformance-type":"import"},{"name":"sal-group_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-group?revision=2013-09-18","namespace":"urn:opendaylight:group:service","conformance-type":"import"},{"name":"odl-codegen-extensions_2024-06-27","revision":"2024-06-27","schema":"/rests/modules/odl-codegen-extensions?revision=2024-06-27","namespace":"urn:opendaylight:yang:extension:codegen","conformance-type":"import"},{"name":"sal-meter_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-meter?revision=2013-09-18","namespace":"urn:opendaylight:meter:service","conformance-type":"import"},{"name":"ietf-interfaces_2018-02-20","revision":"2018-02-20","schema":"/rests/modules/ietf-interfaces?revision=2018-02-20","namespace":"urn:ietf:params:xml:ns:yang:ietf-interfaces","conformance-type":"import","feature":["pre-provisioning","if-mib","arbitrary-names"]},{"name":"opendaylight-l2-types_2013-08-27","revision":"2013-08-27","schema":"/rests/modules/opendaylight-l2-types?revision=2013-08-27","namespace":"urn:opendaylight:l2:types","conformance-type":"import"},{"name":"opendaylight-flow-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-flow-types?revision=2013-10-26","namespace":"urn:opendaylight:flow:types","conformance-type":"import"},{"name":"lldp-speaker-config_2016-05-12","revision":"2016-05-12","schema":"/rests/modules/lldp-speaker-config?revision=2016-05-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker:config","conformance-type":"import"},{"name":"aaa-cert_2015-11-26","revision":"2015-11-26","schema":"/rests/modules/aaa-cert?revision=2015-11-26","namespace":"urn:opendaylight:yang:aaa:cert","conformance-type":"import"},{"name":"openflow-action_2015-02-03","revision":"2015-02-03","schema":"/rests/modules/openflow-action?revision=2015-02-03","namespace":"urn:opendaylight:openflow:common:action","conformance-type":"import"},{"name":"openflow-approved-extensions_2016-08-02","revision":"2016-08-02","schema":"/rests/modules/openflow-approved-extensions?revision=2016-08-02","namespace":"urn:opendaylight:openflow:approved:extensions","conformance-type":"import"},{"name":"nc-notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/nc-notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netmod:notification","conformance-type":"import"},{"name":"ietf-netconf-nmda_2019-01-07","revision":"2019-01-07","schema":"/rests/modules/ietf-netconf-nmda?revision=2019-01-07","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-nmda","conformance-type":"import","feature":["with-defaults","origin"]},{"name":"ietf-tcp-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-common","conformance-type":"import","feature":["keepalives-supported"]},{"name":"network-topology_2013-10-21","revision":"2013-10-21","schema":"/rests/modules/network-topology?revision=2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:network-topology","conformance-type":"import"},{"name":"aaa-encrypt-service-config_2024-02-02","revision":"2024-02-02","schema":"/rests/modules/aaa-encrypt-service-config?revision=2024-02-02","namespace":"config:aaa:authn:encrypt:service:config","conformance-type":"import"},{"name":"openflow-instruction_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-instruction?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:instruction","conformance-type":"import"},{"name":"ietf-tls-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-client","conformance-type":"import","feature":["client-ident-x509-cert","server-auth-x509-cert"]},{"name":"opendaylight-group-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-group-statistics?revision=2013-11-11","namespace":"urn:opendaylight:group:statistics","conformance-type":"import"},{"name":"cluster-admin_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/cluster-admin?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:cluster:admin","conformance-type":"import"},{"name":"opendaylight-flow-statistics_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-flow-statistics?revision=2013-08-19","namespace":"urn:opendaylight:flow:statistics","conformance-type":"import"},{"name":"opendaylight-table-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-table-types?revision=2013-10-26","namespace":"urn:opendaylight:table:types","conformance-type":"import"},{"name":"forwarding-rules-manager-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/forwarding-rules-manager-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:forwardingrules-manager:config","conformance-type":"import"},{"name":"odl-srm-types_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-types?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:types","conformance-type":"import"},{"name":"ietf-x509-cert-to-name_2014-12-10","revision":"2014-12-10","schema":"/rests/modules/ietf-x509-cert-to-name?revision=2014-12-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-x509-cert-to-name","conformance-type":"import"},{"name":"flow-node-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-node-inventory?revision=2013-08-19","namespace":"urn:opendaylight:flow:inventory","conformance-type":"import"},{"name":"flow-errors_2013-11-16","revision":"2013-11-16","schema":"/rests/modules/flow-errors?revision=2013-11-16","namespace":"urn:opendaylight:flow:errors","conformance-type":"import"},{"name":"ietf-netconf_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:netconf:base:1.0","conformance-type":"import","feature":["xpath","url","rollback-on-error","validate","candidate","confirmed-commit","startup","writable-running"]},{"name":"iana-ssh-public-key-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-public-key-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-public-key-algs","conformance-type":"import"},{"name":"aaa-cert-mdsal_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/aaa-cert-mdsal?revision=2016-03-21","namespace":"urn:opendaylight:yang:aaa:cert:mdsal","conformance-type":"import"},{"name":"odl-device-notification_2024-02-18","revision":"2024-02-18","schema":"/rests/modules/odl-device-notification?revision=2024-02-18","namespace":"urn:opendaylight:device:notification","conformance-type":"import"},{"name":"ietf-origin_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-origin?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-origin","conformance-type":"import"},{"name":"openflow-augments_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-augments?revision=2015-02-25","namespace":"urn:opendaylight:openflow:augments","conformance-type":"import"},{"name":"iana-ssh-encryption-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-encryption-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-encryption-algs","conformance-type":"import"},{"name":"ietf-truststore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-truststore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-truststore","conformance-type":"import","feature":["inline-definitions-supported"]},{"name":"distributed-datastore-provider_2025-01-30","revision":"2025-01-30","schema":"/rests/modules/distributed-datastore-provider?revision=2025-01-30","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:distributed-datastore-provider","conformance-type":"import"},{"name":"opendaylight-group-types_2013-10-18","revision":"2013-10-18","schema":"/rests/modules/opendaylight-group-types?revision=2013-10-18","namespace":"urn:opendaylight:group:types","conformance-type":"import"},{"name":"sal-remote-augment_2023-11-03","revision":"2023-11-03","schema":"/rests/modules/sal-remote-augment?revision=2023-11-03","namespace":"urn:sal:restconf:event:subscription","conformance-type":"import"},{"name":"opendaylight-ipv6-arbitrary-bitmask-fields_2016-02-24","revision":"2016-02-24","schema":"/rests/modules/opendaylight-ipv6-arbitrary-bitmask-fields?revision=2016-02-24","namespace":"urn:opendaylight:opendaylight-ipv6-arbitrary-bitmask-fields","conformance-type":"import"},{"name":"sal-flows-batch_2016-03-14","revision":"2016-03-14","schema":"/rests/modules/sal-flows-batch?revision=2016-03-14","namespace":"urn:opendaylight:flows:service","conformance-type":"import"},{"name":"ietf-tls-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-common","conformance-type":"import","feature":["hello-params","tls12","tls13"]},{"name":"openflow-types_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-types?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:types","conformance-type":"import"},{"name":"ietf-netconf-with-defaults_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf-with-defaults?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults","conformance-type":"import"},{"name":"odl-srm-ops_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-ops?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:ops","conformance-type":"import"},{"name":"odl-general-entity_2015-09-30","revision":"2015-09-30","schema":"/rests/modules/odl-general-entity?revision=2015-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:mdsal:core:general-entity","conformance-type":"import"},{"name":"iana-ssh-key-exchange-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-key-exchange-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-key-exchange-algs","conformance-type":"import"},{"name":"node-ssl-connection-error_2019-07-23","revision":"2019-07-23","schema":"/rests/modules/node-ssl-connection-error?revision=2019-07-23","namespace":"urn:opendaylight:node-ssl-connection-error:service","conformance-type":"import"},{"name":"openflow-protocol_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-protocol?revision=2013-07-31","namespace":"urn:opendaylight:openflow:protocol","conformance-type":"import"},{"name":"ietf-udp-server_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-server?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-server","conformance-type":"import"},{"name":"ietf-keystore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-keystore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-keystore","conformance-type":"import","feature":["asymmetric-keys","inline-definitions-supported"]},{"name":"aaa_2016-12-14","revision":"2016-12-14","schema":"/rests/modules/aaa?revision=2016-12-14","namespace":"urn:opendaylight:params:xml:ns:yang:aaa","conformance-type":"import"},{"name":"aaa-cert-rpc_2015-12-15","revision":"2015-12-15","schema":"/rests/modules/aaa-cert-rpc?revision=2015-12-15","namespace":"urn:opendaylight:yang:aaa:cert:rpc","conformance-type":"import"},{"name":"system-notifications_2013-09-27","revision":"2013-09-27","schema":"/rests/modules/system-notifications?revision=2013-09-27","namespace":"urn:opendaylight:openflow:system","conformance-type":"import"},{"name":"sal-flat-batch_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/sal-flat-batch?revision=2016-03-21","namespace":"urn:opendaylight:flat-batch:service","conformance-type":"import"},{"name":"notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netconf:notification:1.0","conformance-type":"import"},{"name":"sal-remote_2014-01-14","revision":"2014-01-14","schema":"/rests/modules/sal-remote?revision=2014-01-14","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:remote","conformance-type":"import"},{"name":"yang-ext_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/yang-ext?revision=2013-07-09","namespace":"urn:opendaylight:yang:extension:yang-ext","conformance-type":"import"},{"name":"opendaylight-multipart-types_2017-01-12","revision":"2017-01-12","schema":"/rests/modules/opendaylight-multipart-types?revision=2017-01-12","namespace":"urn:opendaylight:multipart:types","conformance-type":"import"},{"name":"opendaylight-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-inventory?revision=2013-08-19","namespace":"urn:opendaylight:inventory","conformance-type":"import"},{"name":"sal-queue_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-queue?revision=2015-03-05","namespace":"urn:opendaylight:queue:service","conformance-type":"import"},{"name":"sal-groups-batch_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/sal-groups-batch?revision=2016-03-15","namespace":"urn:opendaylight:groups:service","conformance-type":"import"},{"name":"arbitrator-reconcile_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/arbitrator-reconcile?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:arbitrator-reconcile:service","conformance-type":"import"},{"name":"ietf-yang-metadata_2016-08-05","revision":"2016-08-05","schema":"/rests/modules/ietf-yang-metadata?revision=2016-08-05","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-metadata","conformance-type":"import"},{"name":"opendaylight-arbitrary-bitmask-fields_2016-01-30","revision":"2016-01-30","schema":"/rests/modules/opendaylight-arbitrary-bitmask-fields?revision=2016-01-30","namespace":"urn:opendaylight:arbitrary:bitmask:fields","conformance-type":"import"},{"name":"ietf-udp-client_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-client?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-client","conformance-type":"import","feature":["local-binding"]},{"name":"opendaylight-meter-types_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/opendaylight-meter-types?revision=2013-09-18","namespace":"urn:opendaylight:meter:types","conformance-type":"import"},{"name":"opendaylight-action-types_2013-11-12","revision":"2013-11-12","schema":"/rests/modules/opendaylight-action-types?revision=2013-11-12","namespace":"urn:opendaylight:action:types","conformance-type":"import"},{"name":"sal-role_2015-07-27","revision":"2015-07-27","schema":"/rests/modules/sal-role?revision=2015-07-27","namespace":"urn:opendaylight:role:service","conformance-type":"import"},{"name":"openflow-provider-config_2016-05-10","revision":"2016-05-10","schema":"/rests/modules/openflow-provider-config?revision=2016-05-10","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:provider:config","conformance-type":"import"},{"name":"odl-serviceutils-upgrade_2018-07-02","revision":"2018-07-02","schema":"/rests/modules/odl-serviceutils-upgrade?revision=2018-07-02","namespace":"urn:opendaylight:serviceutils:upgrade","conformance-type":"import"},{"name":"opendaylight-match-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-match-types?revision=2013-10-26","namespace":"urn:opendaylight:model:match:types","conformance-type":"import"},{"name":"ietf-restconf-server_2024-08-14","revision":"2024-08-14","schema":"/rests/modules/ietf-restconf-server?revision=2024-08-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-server","conformance-type":"import","feature":["http-listen","https-listen"]},{"name":"reconciliation-result-state_2017-07-13","revision":"2017-07-13","schema":"/rests/modules/reconciliation-result-state?revision=2017-07-13","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:rf:state","conformance-type":"import"},{"name":"onf-extensions_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/onf-extensions?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf","conformance-type":"import"},{"name":"sal-table_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/sal-table?revision=2013-10-26","namespace":"urn:opendaylight:table:service","conformance-type":"import"},{"name":"iana-http-versions_2026-02-04","revision":"2026-02-04","schema":"/rests/modules/iana-http-versions?revision=2026-02-04","namespace":"urn:ietf:params:xml:ns:yang:iana-http-versions","conformance-type":"import"},{"name":"opendaylight-direct-statistics_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/opendaylight-direct-statistics?revision=2016-05-11","namespace":"urn:opendaylight:direct:statistics","conformance-type":"import"},{"name":"opendaylight-port-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-port-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:port","conformance-type":"import"},{"name":"sal-async-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/sal-async-config?revision=2017-06-19","namespace":"urn:opendaylight:async-config:service","conformance-type":"import"},{"name":"aaa-password-service-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-password-service-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:password:service:config","conformance-type":"import"},{"name":"ietf-yang-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-yang-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-types","conformance-type":"import"},{"name":"opendaylight-queue-statistics_2013-12-16","revision":"2013-12-16","schema":"/rests/modules/opendaylight-queue-statistics?revision=2013-12-16","namespace":"urn:opendaylight:queue:statistics","conformance-type":"import"},{"name":"sal-bundle_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/sal-bundle?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf:bundle:service","conformance-type":"import"},{"name":"ietf-restconf-subscribed-notifications_2019-11-17","revision":"2019-11-17","schema":"/rests/modules/ietf-restconf-subscribed-notifications?revision=2019-11-17","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-subscribed-notifications","conformance-type":"import"},{"name":"sal-meters-batch_2016-03-16","revision":"2016-03-16","schema":"/rests/modules/sal-meters-batch?revision=2016-03-16","namespace":"urn:opendaylight:meters:service","conformance-type":"import"},{"name":"odl-entity-owners","revision":"","schema":"/rests/modules/odl-entity-owners","namespace":"urn:opendaylight:params:xml:ns:yang:controller:entity-owners","conformance-type":"import"},{"name":"sal-experimenter-mp-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-mp-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-mp-message:service","conformance-type":"import"},{"name":"packet-processing_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/packet-processing?revision=2013-07-09","namespace":"urn:opendaylight:packet:service","conformance-type":"import"},{"name":"openflow-configuration_2014-06-30","revision":"2014-06-30","schema":"/rests/modules/openflow-configuration?revision=2014-06-30","namespace":"urn:opendaylight:openflow:config","conformance-type":"import"},{"name":"odl-srm-rpcs_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-rpcs?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:rpc","conformance-type":"import"},{"name":"ietf-netconf-acm_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-netconf-acm?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-acm","conformance-type":"import"},{"name":"iana-crypt-hash_2014-08-06","revision":"2014-08-06","schema":"/rests/modules/iana-crypt-hash?revision=2014-08-06","namespace":"urn:ietf:params:xml:ns:yang:iana-crypt-hash","conformance-type":"import","feature":["crypt-hash-sha-512","crypt-hash-sha-256","crypt-hash-md5"]},{"name":"openflow-extensible-match_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-extensible-match?revision=2015-02-25","namespace":"urn:opendaylight:openflow:oxm","conformance-type":"import"}],"module-set-id":"2"}}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:02:06.808738" elapsed="0.003068"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:06.808493" elapsed="0.003350"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:06.808469" elapsed="0.003398"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:02:06.814496" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:02:06.812210" elapsed="0.002332"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:06.811949" elapsed="0.002627"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:06.811931" elapsed="0.002668"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:02:06.815259" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:02:06.814810" elapsed="0.000477"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:06.815623" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:06.815379" elapsed="0.000301"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:02:06.816190" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:02:06.815870" elapsed="0.000347"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:06.815703" elapsed="0.000550"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:06.815359" elapsed="0.000915"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:02:06.816818" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:02:06.816456" elapsed="0.000391"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:06.817190" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:06.816937" elapsed="0.000311"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:02:06.817747" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:02:06.817434" elapsed="0.000338"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:06.817272" elapsed="0.000536"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:06.816918" elapsed="0.000911"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:02:06.818007" elapsed="0.000375"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T01:02:06.818868" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:02:06.818572" elapsed="0.000322"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T01:02:06.819083" elapsed="0.002400"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T01:02:06.807707" elapsed="0.013902"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T01:02:06.821960" elapsed="0.000051"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:02:06.821740" elapsed="0.000338"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:06.821690" elapsed="0.000424"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T01:02:06.831326" level="INFO">${text_normalized} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T01:02:06.823002" elapsed="0.008375"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T01:02:06.831455" elapsed="0.000069"/>
</return>
<msg time="2026-04-08T01:02:06.831784" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T01:02:06.764275" elapsed="0.067620"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T01:02:06.832386" elapsed="0.000031"/>
</return>
<msg time="2026-04-08T01:02:06.832566" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="PASS" start="2026-04-08T01:02:06.618409" elapsed="0.214185"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Json_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:06.832936" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:06.832679" elapsed="0.000470"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:06.832662" elapsed="0.000529"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T01:02:06.833226" elapsed="0.000027"/>
</return>
<arg>session=${session}</arg>
<arg>folder=${RESTCONF_MODULES_DIR}</arg>
<arg>verify=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Add arguments sensible for JSON data, return Get_Templated response text.
Optionally, verification against JSON data (may be iterated) is called.
Only subset of JSON data is verified and returned if JMES path is specified in
file ${folder}/jmespath.expr.</doc>
<status status="PASS" start="2026-04-08T01:02:06.614088" elapsed="0.219266"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:06.609570" elapsed="0.223828"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:06.609552" elapsed="0.223870"/>
</if>
<kw name="Resolve_Shard_Type_Class" owner="ClusterManagement">
<if>
<branch type="IF" condition="'${shard_type}' == 'config'">
<return>
<value>DistributedConfigDatastore</value>
<status status="NOT RUN" start="2026-04-08T01:02:06.834041" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:02:06.833931" elapsed="0.000154"/>
</branch>
<branch type="ELSE IF" condition="'${shard_type}' == 'operational'">
<return>
<value>DistributedOperationalDatastore</value>
<status status="PASS" start="2026-04-08T01:02:06.834225" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-08T01:02:06.834107" elapsed="0.000176"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:06.833913" elapsed="0.000393"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized shard type: ${shard_type}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:06.834455" elapsed="0.000022"/>
</kw>
<msg time="2026-04-08T01:02:06.834574" level="INFO">${type_class} = DistributedOperationalDatastore</msg>
<var>${type_class}</var>
<arg>shard_type=${shard_type}</arg>
<doc>Simple lookup for class name corresponding to desired type.</doc>
<status status="PASS" start="2026-04-08T01:02:06.833656" elapsed="0.000943"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:02:06.835183" level="INFO">${cluster_index} = 3</msg>
<var>${cluster_index}</var>
<arg>${member_index}+${NODE_ROLE_INDEX_START}-1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:02:06.834770" elapsed="0.000441"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:02:06.835833" level="INFO">${uri} = jolokia/read/org.opendaylight.controller:Category=Shards,name=member-3-shard-inventory-operational,type=DistributedOperationalDatastore</msg>
<var>${uri}</var>
<arg>${JOLOKIA_READ_URI}:Category=Shards,name=member-${cluster_index}-shard-${shard_name}-${shard_type},type=${type_class}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:02:06.835369" elapsed="0.000492"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:02:06.841653" level="INFO">jolokia/read/org.opendaylight.controller:Category=Shards,name=member-3-shard-inventory-operational,type=DistributedOperationalDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:02:06.841206" elapsed="0.000495"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:02:06.842317" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:02:06.841859" elapsed="0.000504"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T01:02:06.866989" level="INFO">GET Request : url=http://10.30.171.110:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-3-shard-inventory-operational,type=DistributedOperationalDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-3-shard-inventory-operational,type=DistributedOperationalDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T01:02:06.867130" level="INFO">GET Response : url=http://10.30.171.110:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-3-shard-inventory-operational,type=DistributedOperationalDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Wed, 08 Apr 2026 01:02:06 GMT', 'Expires': 'Wed, 08 Apr 2026 00:02:06 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-3-shard-inventory-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"ReadWriteTransactionCount":0,"SnapshotIndex":2532,"InMemoryJournalLogSize":3,"ReplicatedToAllIndex":2532,"Leader":"member-1-shard-inventory-operational","LastIndex":2535,"RaftState":"Follower","LastApplied":2535,"LastCommittedTransactionTime":"1970-01-01 00:00:00.000","PeerAddresses":"member-1-shard-inventory-operational: pekko:\/\/opendaylight-cluster-data@10.30.170.48:2550\/user\/shardmanager-operational\/member-1-shard-inventory-operational, member-2-shard-inventory-operational: pekko:\/\/opendaylight-cluster-data@10.30.170.131:2550\/user\/shardmanager-operational\/member-2-shard-inventory-operational","LastLogIndex":2535,"LastLeadershipChangeTime":"2026-04-08 00:57:11.086","FollowerInitialSyncStatus":true,"FollowerInfo":[],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"993.9 μs","CurrentTerm":5,"LastTerm":5,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-inventory-operational","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":0,"TxCohortCacheSize":0,"PeerVotingStates":"member-1-shard-inventory-operational: true, member-2-shard-inventory-operational: true","LastLogTerm":5,"StatRetrievalError":null,"CommitIndex":2535,"SnapshotTerm":5,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-3-shard-inventory-operational","LeadershipChangeCount":1,"InMemoryJournalDataSize":11939983},"timestamp":1775610126,"status":200} 
 </msg>
<msg time="2026-04-08T01:02:06.867355" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T01:02:06.854068" elapsed="0.013395"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:06.842432" elapsed="0.025288"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:06.867908" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:06.867750" elapsed="0.000489"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:06.842413" elapsed="0.025852"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:02:06.873049" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-3-shard-inventory-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"ReadWriteTransactionCount":0,"SnapshotIndex":2532,"InMemoryJournalLogSize":3,"ReplicatedToAllIndex":2532,"Leader":"member-1-shard-inventory-operational","LastIndex":2535,"RaftState":"Follower","LastApplied":2535,"LastCommittedTransactionTime":"1970-01-01 00:00:00.000","PeerAddresses":"member-1-shard-inventory-operational: pekko:\/\/opendaylight-cluster-data@10.30.170.48:2550\/user\/shardmanager-operational\/member-1-shard-inventory-operational, member-2-shard-inventory-operational: pekko:\/\/opendaylight-cluster-data@10.30.170.131:2550\/user\/shardmanager-operational\/member-2-shard-inventory-operational","LastLogIndex":2535,"LastLeadershipChangeTime":"2026-04-08 00:57:11.086","FollowerInitialSyncStatus":true,"FollowerInfo":[],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"993.9 μs","CurrentTerm":5,"LastTerm":5,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-inventory-operational","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":0,"TxCohortCacheSize":0,"PeerVotingStates":"member-1-shard-inventory-operational: true, member-2-shard-inventory-operational: true","LastLogTerm":5,"StatRetrievalError":null,"CommitIndex":2535,"SnapshotTerm":5,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-3-shard-inventory-operational","LeadershipChangeCount":1,"InMemoryJournalDataSize":11939983},"timestamp":1775610126,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:02:06.870412" elapsed="0.002766"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:06.869455" elapsed="0.003775"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:06.869435" elapsed="0.003834"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:02:06.876791" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:02:06.874248" elapsed="0.002642"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:06.873352" elapsed="0.003587"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:06.873334" elapsed="0.003643"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:02:06.878422" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:02:06.877643" elapsed="0.000840"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:06.879140" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:06.878650" elapsed="0.000593"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:02:06.880257" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:02:06.879613" elapsed="0.000692"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:06.879280" elapsed="0.001076"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:06.878630" elapsed="0.001762"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:02:06.881776" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:02:06.881028" elapsed="0.000808"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:06.882484" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:06.882002" elapsed="0.000569"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:02:06.883480" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:02:06.882970" elapsed="0.000555"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:06.882608" elapsed="0.000967"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:06.881982" elapsed="0.001628"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:02:06.883834" elapsed="0.000690"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T01:02:06.885335" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:02:06.884830" elapsed="0.000565"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T01:02:06.885677" elapsed="0.002382"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T01:02:06.868751" elapsed="0.019599"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T01:02:06.888551" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:02:06.888424" elapsed="0.000173"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:06.888405" elapsed="0.000213"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T01:02:06.892296" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-3-shard-inventory-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestam...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T01:02:06.888765" elapsed="0.003563"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T01:02:06.892380" elapsed="0.000032"/>
</return>
<msg time="2026-04-08T01:02:06.892541" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-3-shard-inventory-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestam...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T01:02:06.836825" elapsed="0.055773"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T01:02:06.892659" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T01:02:06.892811" level="INFO">${data_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-3-shard-inventory-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestam...</msg>
<var>${data_text}</var>
<arg>uri=${uri}</arg>
<arg>session=${session}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-08T01:02:06.836077" elapsed="0.056760"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:02:06.893915" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-3-shard-inventory-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1775610...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:02:06.893442" elapsed="0.000502"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-08T01:02:06.893993" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T01:02:06.894182" level="INFO">${data_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-3-shard-inventory-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1775610...</msg>
<var>${data_object}</var>
<arg>${data_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-08T01:02:06.893061" elapsed="0.001150"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:02:06.894572" level="INFO">${value} = {'AbortTransactionsCount': 0, 'CommitIndex': 2535, 'CommittedTransactionsCount': 0, 'CurrentTerm': 5, 'FailedReadTransactionsCount': 0, 'FailedTransactionsCount': 0, 'FollowerInfo': [], 'FollowerIniti...</msg>
<var>${value}</var>
<arg>${data_object}</arg>
<arg>value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:02:06.894371" elapsed="0.000228"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:02:06.894988" level="INFO">${raft_property} = Follower</msg>
<var>${raft_property}</var>
<arg>${value}</arg>
<arg>${property}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:02:06.894756" elapsed="0.000258"/>
</kw>
<return>
<value>${raft_property}</value>
<status status="PASS" start="2026-04-08T01:02:06.895060" elapsed="0.000027"/>
</return>
<msg time="2026-04-08T01:02:06.895228" level="INFO">${raft_state} = Follower</msg>
<var>${raft_state}</var>
<arg>RaftState</arg>
<arg>${shard_name}</arg>
<arg>${shard_type}</arg>
<arg>${member_index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft property.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T01:02:06.607905" elapsed="0.287349"/>
</kw>
<return>
<value>${raft_state}</value>
<status status="PASS" start="2026-04-08T01:02:06.895310" elapsed="0.000026"/>
</return>
<msg time="2026-04-08T01:02:06.895459" level="INFO">${raft_state} = Follower</msg>
<var>${raft_state}</var>
<arg>shard_name=${shard_name}</arg>
<arg>shard_type=${ds_type}</arg>
<arg>member_index=${index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft status.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T01:02:06.607138" elapsed="0.288346"/>
</kw>
<if>
<branch type="IF" condition="'Follower' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${follower_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-08T01:02:06.895782" elapsed="0.000190"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:06.895563" elapsed="0.000446"/>
</branch>
<branch type="ELSE IF" condition="'Leader' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${leader_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:06.896256" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:06.896033" elapsed="0.000279"/>
</branch>
<branch type="ELSE IF" condition="${validate}">
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized Raft state: ${raft_state}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:06.896478" elapsed="0.000019"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:06.896335" elapsed="0.000193"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:06.895546" elapsed="0.001004"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T01:02:06.606961" elapsed="0.289614"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-08T01:02:05.974433" elapsed="0.922177"/>
</for>
<return>
<value>${leader_list}</value>
<value>${follower_list}</value>
<status status="PASS" start="2026-04-08T01:02:06.896653" elapsed="0.000026"/>
</return>
<msg time="2026-04-08T01:02:06.896854" level="INFO">${leader_list} = [1]</msg>
<msg time="2026-04-08T01:02:06.896900" level="INFO">${follower_list} = [2, 3]</msg>
<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="PASS" start="2026-04-08T01:02:05.970289" elapsed="0.926634"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T01:02:06.897385" level="INFO">Length is 1.</msg>
<msg time="2026-04-08T01:02:06.897460" level="INFO">${leader_count} = 1</msg>
<var>${leader_count}</var>
<arg>${leader_list}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T01:02:06.897100" elapsed="0.000384"/>
</kw>
<if>
<branch type="IF" condition="${leader_count} &lt; 1">
<kw name="Fail" owner="BuiltIn">
<arg>No leader found.</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:06.897767" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:06.897552" elapsed="0.000268"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:06.897535" elapsed="0.000307"/>
</if>
<kw name="Length Should Be" owner="BuiltIn">
<msg time="2026-04-08T01:02:06.900026" level="INFO">Length is 1.</msg>
<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="PASS" start="2026-04-08T01:02:06.897980" elapsed="0.002093"/>
</kw>
<kw name="Get From List" owner="Collections">
<msg time="2026-04-08T01:02:06.900533" level="INFO">${leader} = 1</msg>
<var>${leader}</var>
<arg>${leader_list}</arg>
<arg>0</arg>
<doc>Returns the value specified with an ``index`` from ``list``.</doc>
<status status="PASS" start="2026-04-08T01:02:06.900343" elapsed="0.000216"/>
</kw>
<return>
<value>${leader}</value>
<value>${follower_list}</value>
<status status="PASS" start="2026-04-08T01:02:06.900606" elapsed="0.000028"/>
</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="PASS" start="2026-04-08T01:02:05.967304" elapsed="0.933457"/>
</kw>
<var name="${shard_name}">inventory</var>
<status status="PASS" start="2026-04-08T01:02:05.967055" elapsed="0.933753"/>
</iter>
<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-04-08T01:02:06.905209" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:02:06.904812" elapsed="0.000425"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:02:06.905699" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:02:06.905397" elapsed="0.000327"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T01:02:06.905767" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T01:02:06.905918" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T01:02:06.904442" elapsed="0.001501"/>
</kw>
<kw name="Sort List" owner="Collections">
<arg>${index_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="PASS" start="2026-04-08T01:02:06.906097" elapsed="0.000169"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:02:06.906755" level="INFO">${ds_type} = operational</msg>
<var>${ds_type}</var>
<arg>'${shard_type}' != 'config'</arg>
<arg>operational</arg>
<arg>config</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:02:06.906426" elapsed="0.000354"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:02:06.907223" level="INFO">${leader_list} = []</msg>
<var>${leader_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:02:06.906966" elapsed="0.000283"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:02:06.907629" level="INFO">${follower_list} = []</msg>
<var>${follower_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:02:06.907397" elapsed="0.000257"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_Raft_State_Of_Shard_At_Member" owner="ClusterManagement">
<kw name="Get_Raft_Property_From_Shard_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:02:06.910111" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:02:06.909792" elapsed="0.000346"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T01:02:06.910203" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T01:02:06.910352" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T01:02:06.909451" elapsed="0.000926"/>
</kw>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Get_As_Json_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:02:06.996210" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:02:06.995822" elapsed="0.000417"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T01:02:06.996987" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T01:02:06.996740" elapsed="0.000326">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-08T01:02:06.997172" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T01:02:06.996404" elapsed="0.000795"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:02:06.997743" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:02:06.997364" elapsed="0.000405"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T01:02:06.998065" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-08T01:02:06.998233" level="INFO">${template} = /rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T01:02:06.997930" elapsed="0.000328"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:02:06.998726" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:02:06.998454" elapsed="0.000321"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:02:06.999728" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:02:06.999478" elapsed="0.000294"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-08T01:02:07.000238" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-08T01:02:06.999951" elapsed="0.000313"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:07.000583" elapsed="0.000021"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:07.000787" elapsed="0.000023"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:07.000960" elapsed="0.000021"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-08T01:02:07.000446" elapsed="0.000570"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-08T01:02:07.000311" elapsed="0.000735"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-08T01:02:07.001089" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T01:02:07.001261" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-08T01:02:06.999140" elapsed="0.002146"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:06.998845" elapsed="0.002472"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:07.001490" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:07.001342" elapsed="0.000201"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:06.998825" elapsed="0.002739"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:02:07.002133" level="INFO">${final_text} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:02:07.001706" elapsed="0.000472"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T01:02:07.002228" 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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="PASS" start="2026-04-08T01:02:06.995214" elapsed="0.007137"/>
</kw>
<msg time="2026-04-08T01:02:07.002404" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:02:06.982687" elapsed="0.019799"/>
</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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:07.015089" elapsed="0.000040"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:07.027550" elapsed="0.000040"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:07.040054" elapsed="0.000041"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:07.040850" elapsed="0.000041"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:07.041633" elapsed="0.000036"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:07.042240" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:07.042036" elapsed="0.000263"/>
</branch>
<status status="NOT RUN" start="2026-04-08T01:02:07.042020" elapsed="0.000302"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:07.042485" elapsed="0.000022"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:07.042690" elapsed="0.000022"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:07.042877" elapsed="0.000021"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-08T01:02:07.041971" elapsed="0.000981"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-08T01:02:07.041750" elapsed="0.001241"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:07.043723" elapsed="0.000036"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-08T01:02:07.043841" elapsed="0.000052"/>
</return>
<msg time="2026-04-08T01:02:07.044065" level="INFO">${uri} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-08T01:02:06.976390" elapsed="0.067798"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T01:02:07.047236" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T01:02:07.046972" elapsed="0.000330">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-08T01:02:07.047502" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T01:02:07.046463" elapsed="0.001090"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:07.048209" elapsed="0.000032"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:07.047705" elapsed="0.001605"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:02:07.050205" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:02:07.049773" elapsed="0.000470"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:07.049384" elapsed="0.000920"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:07.047646" elapsed="0.002711"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:02:07.057256" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:02:07.052782" elapsed="0.004524"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-08T01:02:07.057389" elapsed="0.000070"/>
</return>
<msg time="2026-04-08T01:02:07.057717" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T01:02:07.045273" elapsed="0.012550"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T01:02:07.060789" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T01:02:07.060509" elapsed="0.000355">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-08T01:02:07.061052" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T01:02:07.060027" elapsed="0.001070"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-08T01:02:07.061514" elapsed="0.000080"/>
</return>
<status status="PASS" start="2026-04-08T01:02:07.061257" elapsed="0.000405"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:07.061202" elapsed="0.000499"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:07.062484" elapsed="0.000038"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:07.063300" elapsed="0.000037"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-08T01:02:07.063412" elapsed="0.000046"/>
</return>
<msg time="2026-04-08T01:02:07.065898" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T01:02:07.058750" elapsed="0.007321"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:02:07.069880" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:02:07.069487" elapsed="0.000493"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:02:07.071105" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:02:07.070723" elapsed="0.000612"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T01:02:07.089101" level="INFO">GET Request : url=http://10.30.170.48:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 path_url=/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01s3bfo0y24i1es90l47mavglv0.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T01:02:07.090092" level="INFO">GET Response : url=http://10.30.170.48:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Transfer-Encoding': 'chunked'} 
 body={"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","encrypted-passwords","hidden-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-private-keys","asymmetrically-encrypted-value-format","cleartext-private-keys","cms-encrypted-data-format","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["client-ident-hostbased","ssh-client-keepalives","client-ident-password","client-ident-publickey"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-ex... (set the log level to DEBUG or TRACE to see the full content) 
 </msg>
<msg time="2026-04-08T01:02:07.090548" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T01:02:07.073772" elapsed="0.016859"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:07.071466" elapsed="0.019291"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:07.091450" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:07.090855" elapsed="0.000762"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:07.071414" elapsed="0.020283"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:02:07.099190" level="INFO">{"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","encrypted-passwords","hidden-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-private-keys","asymmetrically-encrypted-value-format","cleartext-private-keys","cms-encrypted-data-format","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["client-ident-hostbased","ssh-client-keepalives","client-ident-password","client-ident-publickey"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-experimenter-types?revision=2015-10-20","namespace":"urn:opendaylight:openflowplugin:experimenter:types","conformance-type":"import"},{"name":"ietf-ip_2018-02-22","revision":"2018-02-22","schema":"/rests/modules/ietf-ip?revision=2018-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-ip","conformance-type":"import","feature":["ipv6-privacy-autoconf","ipv4-non-contiguous-netmasks"]},{"name":"ietf-tcp-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-client","conformance-type":"import","feature":["local-binding-supported","tcp-client-keepalives"]},{"name":"node-config_2014-10-15","revision":"2014-10-15","schema":"/rests/modules/node-config?revision=2014-10-15","namespace":"urn:opendaylight:module:config","conformance-type":"import"},{"name":"ietf-restconf_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf","conformance-type":"import"},{"name":"ietf-datastores_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-datastores?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-datastores","conformance-type":"import"},{"name":"ietf-yang-patch_2017-02-22","revision":"2017-02-22","schema":"/rests/modules/ietf-yang-patch?revision=2017-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-patch","conformance-type":"import"},{"name":"sal-group_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-group?revision=2013-09-18","namespace":"urn:opendaylight:group:service","conformance-type":"import"},{"name":"odl-codegen-extensions_2024-06-27","revision":"2024-06-27","schema":"/rests/modules/odl-codegen-extensions?revision=2024-06-27","namespace":"urn:opendaylight:yang:extension:codegen","conformance-type":"import"},{"name":"sal-meter_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-meter?revision=2013-09-18","namespace":"urn:opendaylight:meter:service","conformance-type":"import"},{"name":"ietf-interfaces_2018-02-20","revision":"2018-02-20","schema":"/rests/modules/ietf-interfaces?revision=2018-02-20","namespace":"urn:ietf:params:xml:ns:yang:ietf-interfaces","conformance-type":"import","feature":["pre-provisioning","if-mib","arbitrary-names"]},{"name":"opendaylight-l2-types_2013-08-27","revision":"2013-08-27","schema":"/rests/modules/opendaylight-l2-types?revision=2013-08-27","namespace":"urn:opendaylight:l2:types","conformance-type":"import"},{"name":"opendaylight-flow-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-flow-types?revision=2013-10-26","namespace":"urn:opendaylight:flow:types","conformance-type":"import"},{"name":"lldp-speaker-config_2016-05-12","revision":"2016-05-12","schema":"/rests/modules/lldp-speaker-config?revision=2016-05-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker:config","conformance-type":"import"},{"name":"aaa-cert_2015-11-26","revision":"2015-11-26","schema":"/rests/modules/aaa-cert?revision=2015-11-26","namespace":"urn:opendaylight:yang:aaa:cert","conformance-type":"import"},{"name":"openflow-action_2015-02-03","revision":"2015-02-03","schema":"/rests/modules/openflow-action?revision=2015-02-03","namespace":"urn:opendaylight:openflow:common:action","conformance-type":"import"},{"name":"openflow-approved-extensions_2016-08-02","revision":"2016-08-02","schema":"/rests/modules/openflow-approved-extensions?revision=2016-08-02","namespace":"urn:opendaylight:openflow:approved:extensions","conformance-type":"import"},{"name":"nc-notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/nc-notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netmod:notification","conformance-type":"import"},{"name":"ietf-netconf-nmda_2019-01-07","revision":"2019-01-07","schema":"/rests/modules/ietf-netconf-nmda?revision=2019-01-07","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-nmda","conformance-type":"import","feature":["with-defaults","origin"]},{"name":"ietf-tcp-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-common","conformance-type":"import","feature":["keepalives-supported"]},{"name":"network-topology_2013-10-21","revision":"2013-10-21","schema":"/rests/modules/network-topology?revision=2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:network-topology","conformance-type":"import"},{"name":"aaa-encrypt-service-config_2024-02-02","revision":"2024-02-02","schema":"/rests/modules/aaa-encrypt-service-config?revision=2024-02-02","namespace":"config:aaa:authn:encrypt:service:config","conformance-type":"import"},{"name":"openflow-instruction_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-instruction?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:instruction","conformance-type":"import"},{"name":"ietf-tls-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-client","conformance-type":"import","feature":["client-ident-x509-cert","server-auth-x509-cert"]},{"name":"opendaylight-group-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-group-statistics?revision=2013-11-11","namespace":"urn:opendaylight:group:statistics","conformance-type":"import"},{"name":"cluster-admin_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/cluster-admin?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:cluster:admin","conformance-type":"import"},{"name":"opendaylight-flow-statistics_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-flow-statistics?revision=2013-08-19","namespace":"urn:opendaylight:flow:statistics","conformance-type":"import"},{"name":"opendaylight-table-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-table-types?revision=2013-10-26","namespace":"urn:opendaylight:table:types","conformance-type":"import"},{"name":"forwarding-rules-manager-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/forwarding-rules-manager-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:forwardingrules-manager:config","conformance-type":"import"},{"name":"odl-srm-types_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-types?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:types","conformance-type":"import"},{"name":"ietf-x509-cert-to-name_2014-12-10","revision":"2014-12-10","schema":"/rests/modules/ietf-x509-cert-to-name?revision=2014-12-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-x509-cert-to-name","conformance-type":"import"},{"name":"flow-node-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-node-inventory?revision=2013-08-19","namespace":"urn:opendaylight:flow:inventory","conformance-type":"import"},{"name":"flow-errors_2013-11-16","revision":"2013-11-16","schema":"/rests/modules/flow-errors?revision=2013-11-16","namespace":"urn:opendaylight:flow:errors","conformance-type":"import"},{"name":"ietf-netconf_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:netconf:base:1.0","conformance-type":"import","feature":["xpath","url","rollback-on-error","validate","candidate","confirmed-commit","startup","writable-running"]},{"name":"iana-ssh-public-key-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-public-key-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-public-key-algs","conformance-type":"import"},{"name":"aaa-cert-mdsal_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/aaa-cert-mdsal?revision=2016-03-21","namespace":"urn:opendaylight:yang:aaa:cert:mdsal","conformance-type":"import"},{"name":"odl-device-notification_2024-02-18","revision":"2024-02-18","schema":"/rests/modules/odl-device-notification?revision=2024-02-18","namespace":"urn:opendaylight:device:notification","conformance-type":"import"},{"name":"ietf-origin_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-origin?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-origin","conformance-type":"import"},{"name":"openflow-augments_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-augments?revision=2015-02-25","namespace":"urn:opendaylight:openflow:augments","conformance-type":"import"},{"name":"iana-ssh-encryption-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-encryption-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-encryption-algs","conformance-type":"import"},{"name":"ietf-truststore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-truststore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-truststore","conformance-type":"import","feature":["inline-definitions-supported"]},{"name":"distributed-datastore-provider_2025-01-30","revision":"2025-01-30","schema":"/rests/modules/distributed-datastore-provider?revision=2025-01-30","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:distributed-datastore-provider","conformance-type":"import"},{"name":"opendaylight-group-types_2013-10-18","revision":"2013-10-18","schema":"/rests/modules/opendaylight-group-types?revision=2013-10-18","namespace":"urn:opendaylight:group:types","conformance-type":"import"},{"name":"sal-remote-augment_2023-11-03","revision":"2023-11-03","schema":"/rests/modules/sal-remote-augment?revision=2023-11-03","namespace":"urn:sal:restconf:event:subscription","conformance-type":"import"},{"name":"opendaylight-ipv6-arbitrary-bitmask-fields_2016-02-24","revision":"2016-02-24","schema":"/rests/modules/opendaylight-ipv6-arbitrary-bitmask-fields?revision=2016-02-24","namespace":"urn:opendaylight:opendaylight-ipv6-arbitrary-bitmask-fields","conformance-type":"import"},{"name":"sal-flows-batch_2016-03-14","revision":"2016-03-14","schema":"/rests/modules/sal-flows-batch?revision=2016-03-14","namespace":"urn:opendaylight:flows:service","conformance-type":"import"},{"name":"ietf-tls-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-common","conformance-type":"import","feature":["hello-params","tls12","tls13"]},{"name":"openflow-types_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-types?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:types","conformance-type":"import"},{"name":"ietf-netconf-with-defaults_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf-with-defaults?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults","conformance-type":"import"},{"name":"odl-srm-ops_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-ops?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:ops","conformance-type":"import"},{"name":"odl-general-entity_2015-09-30","revision":"2015-09-30","schema":"/rests/modules/odl-general-entity?revision=2015-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:mdsal:core:general-entity","conformance-type":"import"},{"name":"iana-ssh-key-exchange-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-key-exchange-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-key-exchange-algs","conformance-type":"import"},{"name":"node-ssl-connection-error_2019-07-23","revision":"2019-07-23","schema":"/rests/modules/node-ssl-connection-error?revision=2019-07-23","namespace":"urn:opendaylight:node-ssl-connection-error:service","conformance-type":"import"},{"name":"openflow-protocol_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-protocol?revision=2013-07-31","namespace":"urn:opendaylight:openflow:protocol","conformance-type":"import"},{"name":"ietf-udp-server_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-server?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-server","conformance-type":"import"},{"name":"ietf-keystore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-keystore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-keystore","conformance-type":"import","feature":["asymmetric-keys","inline-definitions-supported"]},{"name":"aaa_2016-12-14","revision":"2016-12-14","schema":"/rests/modules/aaa?revision=2016-12-14","namespace":"urn:opendaylight:params:xml:ns:yang:aaa","conformance-type":"import"},{"name":"aaa-cert-rpc_2015-12-15","revision":"2015-12-15","schema":"/rests/modules/aaa-cert-rpc?revision=2015-12-15","namespace":"urn:opendaylight:yang:aaa:cert:rpc","conformance-type":"import"},{"name":"system-notifications_2013-09-27","revision":"2013-09-27","schema":"/rests/modules/system-notifications?revision=2013-09-27","namespace":"urn:opendaylight:openflow:system","conformance-type":"import"},{"name":"sal-flat-batch_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/sal-flat-batch?revision=2016-03-21","namespace":"urn:opendaylight:flat-batch:service","conformance-type":"import"},{"name":"notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netconf:notification:1.0","conformance-type":"import"},{"name":"sal-remote_2014-01-14","revision":"2014-01-14","schema":"/rests/modules/sal-remote?revision=2014-01-14","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:remote","conformance-type":"import"},{"name":"yang-ext_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/yang-ext?revision=2013-07-09","namespace":"urn:opendaylight:yang:extension:yang-ext","conformance-type":"import"},{"name":"opendaylight-multipart-types_2017-01-12","revision":"2017-01-12","schema":"/rests/modules/opendaylight-multipart-types?revision=2017-01-12","namespace":"urn:opendaylight:multipart:types","conformance-type":"import"},{"name":"opendaylight-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-inventory?revision=2013-08-19","namespace":"urn:opendaylight:inventory","conformance-type":"import"},{"name":"sal-queue_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-queue?revision=2015-03-05","namespace":"urn:opendaylight:queue:service","conformance-type":"import"},{"name":"sal-groups-batch_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/sal-groups-batch?revision=2016-03-15","namespace":"urn:opendaylight:groups:service","conformance-type":"import"},{"name":"arbitrator-reconcile_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/arbitrator-reconcile?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:arbitrator-reconcile:service","conformance-type":"import"},{"name":"ietf-yang-metadata_2016-08-05","revision":"2016-08-05","schema":"/rests/modules/ietf-yang-metadata?revision=2016-08-05","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-metadata","conformance-type":"import"},{"name":"opendaylight-arbitrary-bitmask-fields_2016-01-30","revision":"2016-01-30","schema":"/rests/modules/opendaylight-arbitrary-bitmask-fields?revision=2016-01-30","namespace":"urn:opendaylight:arbitrary:bitmask:fields","conformance-type":"import"},{"name":"ietf-udp-client_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-client?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-client","conformance-type":"import","feature":["local-binding"]},{"name":"opendaylight-meter-types_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/opendaylight-meter-types?revision=2013-09-18","namespace":"urn:opendaylight:meter:types","conformance-type":"import"},{"name":"opendaylight-action-types_2013-11-12","revision":"2013-11-12","schema":"/rests/modules/opendaylight-action-types?revision=2013-11-12","namespace":"urn:opendaylight:action:types","conformance-type":"import"},{"name":"sal-role_2015-07-27","revision":"2015-07-27","schema":"/rests/modules/sal-role?revision=2015-07-27","namespace":"urn:opendaylight:role:service","conformance-type":"import"},{"name":"openflow-provider-config_2016-05-10","revision":"2016-05-10","schema":"/rests/modules/openflow-provider-config?revision=2016-05-10","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:provider:config","conformance-type":"import"},{"name":"odl-serviceutils-upgrade_2018-07-02","revision":"2018-07-02","schema":"/rests/modules/odl-serviceutils-upgrade?revision=2018-07-02","namespace":"urn:opendaylight:serviceutils:upgrade","conformance-type":"import"},{"name":"opendaylight-match-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-match-types?revision=2013-10-26","namespace":"urn:opendaylight:model:match:types","conformance-type":"import"},{"name":"ietf-restconf-server_2024-08-14","revision":"2024-08-14","schema":"/rests/modules/ietf-restconf-server?revision=2024-08-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-server","conformance-type":"import","feature":["http-listen","https-listen"]},{"name":"reconciliation-result-state_2017-07-13","revision":"2017-07-13","schema":"/rests/modules/reconciliation-result-state?revision=2017-07-13","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:rf:state","conformance-type":"import"},{"name":"onf-extensions_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/onf-extensions?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf","conformance-type":"import"},{"name":"sal-table_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/sal-table?revision=2013-10-26","namespace":"urn:opendaylight:table:service","conformance-type":"import"},{"name":"iana-http-versions_2026-02-04","revision":"2026-02-04","schema":"/rests/modules/iana-http-versions?revision=2026-02-04","namespace":"urn:ietf:params:xml:ns:yang:iana-http-versions","conformance-type":"import"},{"name":"opendaylight-direct-statistics_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/opendaylight-direct-statistics?revision=2016-05-11","namespace":"urn:opendaylight:direct:statistics","conformance-type":"import"},{"name":"opendaylight-port-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-port-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:port","conformance-type":"import"},{"name":"sal-async-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/sal-async-config?revision=2017-06-19","namespace":"urn:opendaylight:async-config:service","conformance-type":"import"},{"name":"aaa-password-service-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-password-service-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:password:service:config","conformance-type":"import"},{"name":"ietf-yang-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-yang-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-types","conformance-type":"import"},{"name":"opendaylight-queue-statistics_2013-12-16","revision":"2013-12-16","schema":"/rests/modules/opendaylight-queue-statistics?revision=2013-12-16","namespace":"urn:opendaylight:queue:statistics","conformance-type":"import"},{"name":"sal-bundle_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/sal-bundle?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf:bundle:service","conformance-type":"import"},{"name":"ietf-restconf-subscribed-notifications_2019-11-17","revision":"2019-11-17","schema":"/rests/modules/ietf-restconf-subscribed-notifications?revision=2019-11-17","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-subscribed-notifications","conformance-type":"import"},{"name":"sal-meters-batch_2016-03-16","revision":"2016-03-16","schema":"/rests/modules/sal-meters-batch?revision=2016-03-16","namespace":"urn:opendaylight:meters:service","conformance-type":"import"},{"name":"odl-entity-owners","revision":"","schema":"/rests/modules/odl-entity-owners","namespace":"urn:opendaylight:params:xml:ns:yang:controller:entity-owners","conformance-type":"import"},{"name":"sal-experimenter-mp-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-mp-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-mp-message:service","conformance-type":"import"},{"name":"packet-processing_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/packet-processing?revision=2013-07-09","namespace":"urn:opendaylight:packet:service","conformance-type":"import"},{"name":"openflow-configuration_2014-06-30","revision":"2014-06-30","schema":"/rests/modules/openflow-configuration?revision=2014-06-30","namespace":"urn:opendaylight:openflow:config","conformance-type":"import"},{"name":"odl-srm-rpcs_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-rpcs?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:rpc","conformance-type":"import"},{"name":"ietf-netconf-acm_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-netconf-acm?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-acm","conformance-type":"import"},{"name":"iana-crypt-hash_2014-08-06","revision":"2014-08-06","schema":"/rests/modules/iana-crypt-hash?revision=2014-08-06","namespace":"urn:ietf:params:xml:ns:yang:iana-crypt-hash","conformance-type":"import","feature":["crypt-hash-sha-512","crypt-hash-sha-256","crypt-hash-md5"]},{"name":"openflow-extensible-match_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-extensible-match?revision=2015-02-25","namespace":"urn:opendaylight:openflow:oxm","conformance-type":"import"}],"module-set-id":"2"}}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:02:07.095386" elapsed="0.004255"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:07.095049" elapsed="0.004641"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:07.095020" elapsed="0.004705"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:02:07.103388" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:02:07.100153" elapsed="0.003300"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:07.099837" elapsed="0.003663"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:07.099812" elapsed="0.003721"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:02:07.104376" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:02:07.103807" elapsed="0.000606"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:07.104876" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:07.104539" elapsed="0.000417"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:02:07.105670" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:02:07.105243" elapsed="0.000464"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:07.104989" elapsed="0.000767"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:07.104513" elapsed="0.001273"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:02:07.106568" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:02:07.106040" elapsed="0.000594"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:07.107102" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:07.106763" elapsed="0.000409"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:02:07.107662" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:02:07.107362" elapsed="0.000326"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:07.107198" elapsed="0.000524"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:07.106736" elapsed="0.001008"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:02:07.107917" elapsed="0.000378"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T01:02:07.108770" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:02:07.108483" elapsed="0.000313"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T01:02:07.108971" elapsed="0.003647"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T01:02:07.093415" elapsed="0.019327"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T01:02:07.113091" elapsed="0.000047"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:02:07.112871" elapsed="0.000354"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:07.112820" elapsed="0.000442"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T01:02:07.122230" level="INFO">${text_normalized} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T01:02:07.114000" elapsed="0.008279"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T01:02:07.122357" elapsed="0.000064"/>
</return>
<msg time="2026-04-08T01:02:07.122692" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T01:02:07.066785" elapsed="0.056014"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T01:02:07.123280" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T01:02:07.123456" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="PASS" start="2026-04-08T01:02:06.918883" elapsed="0.204601"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Json_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:07.123810" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:07.123568" elapsed="0.000429"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:07.123550" elapsed="0.000474"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T01:02:07.124057" elapsed="0.000027"/>
</return>
<arg>session=${session}</arg>
<arg>folder=${RESTCONF_MODULES_DIR}</arg>
<arg>verify=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Add arguments sensible for JSON data, return Get_Templated response text.
Optionally, verification against JSON data (may be iterated) is called.
Only subset of JSON data is verified and returned if JMES path is specified in
file ${folder}/jmespath.expr.</doc>
<status status="PASS" start="2026-04-08T01:02:06.914593" elapsed="0.209616"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:06.910444" elapsed="0.213810"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:06.910426" elapsed="0.213852"/>
</if>
<kw name="Resolve_Shard_Type_Class" owner="ClusterManagement">
<if>
<branch type="IF" condition="'${shard_type}' == 'config'">
<return>
<value>DistributedConfigDatastore</value>
<status status="NOT RUN" start="2026-04-08T01:02:07.124876" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:02:07.124767" elapsed="0.000154"/>
</branch>
<branch type="ELSE IF" condition="'${shard_type}' == 'operational'">
<return>
<value>DistributedOperationalDatastore</value>
<status status="PASS" start="2026-04-08T01:02:07.125044" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-08T01:02:07.124943" elapsed="0.000158"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:07.124749" elapsed="0.000375"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized shard type: ${shard_type}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:07.125298" elapsed="0.000022"/>
</kw>
<msg time="2026-04-08T01:02:07.125418" level="INFO">${type_class} = DistributedOperationalDatastore</msg>
<var>${type_class}</var>
<arg>shard_type=${shard_type}</arg>
<doc>Simple lookup for class name corresponding to desired type.</doc>
<status status="PASS" start="2026-04-08T01:02:07.124502" elapsed="0.000941"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:02:07.126018" level="INFO">${cluster_index} = 1</msg>
<var>${cluster_index}</var>
<arg>${member_index}+${NODE_ROLE_INDEX_START}-1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:02:07.125614" elapsed="0.000431"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:02:07.126693" level="INFO">${uri} = jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-topology-operational,type=DistributedOperationalDatastore</msg>
<var>${uri}</var>
<arg>${JOLOKIA_READ_URI}:Category=Shards,name=member-${cluster_index}-shard-${shard_name}-${shard_type},type=${type_class}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:02:07.126219" elapsed="0.000502"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:02:07.132569" level="INFO">jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-topology-operational,type=DistributedOperationalDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:02:07.132082" elapsed="0.000534"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:02:07.133234" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:02:07.132775" elapsed="0.000505"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T01:02:07.156949" level="INFO">GET Request : url=http://10.30.170.48:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-topology-operational,type=DistributedOperationalDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-topology-operational,type=DistributedOperationalDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T01:02:07.157310" level="INFO">GET Response : url=http://10.30.170.48:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-topology-operational,type=DistributedOperationalDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Wed, 08 Apr 2026 01:02:07 GMT', 'Expires': 'Wed, 08 Apr 2026 00:02:07 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-1-shard-topology-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"ReadWriteTransactionCount":47,"SnapshotIndex":94,"InMemoryJournalLogSize":1,"ReplicatedToAllIndex":94,"Leader":"member-1-shard-topology-operational","LastIndex":95,"RaftState":"Leader","LastApplied":95,"LastCommittedTransactionTime":"2026-04-08 00:58:31.488","PeerAddresses":"member-2-shard-topology-operational: pekko:\/\/opendaylight-cluster-data@10.30.170.131:2550\/user\/shardmanager-operational\/member-2-shard-topology-operational, member-3-shard-topology-operational: pekko:\/\/opendaylight-cluster-data@10.30.171.110:2550\/user\/shardmanager-operational\/member-3-shard-topology-operational","LastLogIndex":95,"LastLeadershipChangeTime":"2026-04-08 00:57:11.097","FollowerInitialSyncStatus":false,"FollowerInfo":[{"timeSinceLastActivity":"00:00:00.236","active":true,"matchIndex":95,"voting":true,"id":"member-2-shard-topology-operational","nextIndex":96},{"timeSinceLastActivity":"00:00:00.236","active":true,"matchIndex":95,"voting":true,"id":"member-3-shard-topology-operational","nextIndex":96}],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"1.628 ms","CurrentTerm":5,"LastTerm":5,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-topology-operational","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":11,"TxCohortCacheSize":0,"PeerVotingStates":"member-2-shard-topology-operational: true, member-3-shard-topology-operational: true","LastLogTerm":5,"StatRetrievalError":null,"CommitIndex":95,"SnapshotTerm":5,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-1-shard-topology-operational","LeadershipChangeCount":1,"InMemoryJournalDataSize":9271},"timestamp":1775610127,"status":200} 
 </msg>
<msg time="2026-04-08T01:02:07.157574" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T01:02:07.144998" elapsed="0.012724"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:07.133348" elapsed="0.024734"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:07.158381" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:07.158123" elapsed="0.000777"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:07.133330" elapsed="0.025617"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:02:07.165625" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-1-shard-topology-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"ReadWriteTransactionCount":47,"SnapshotIndex":94,"InMemoryJournalLogSize":1,"ReplicatedToAllIndex":94,"Leader":"member-1-shard-topology-operational","LastIndex":95,"RaftState":"Leader","LastApplied":95,"LastCommittedTransactionTime":"2026-04-08 00:58:31.488","PeerAddresses":"member-2-shard-topology-operational: pekko:\/\/opendaylight-cluster-data@10.30.170.131:2550\/user\/shardmanager-operational\/member-2-shard-topology-operational, member-3-shard-topology-operational: pekko:\/\/opendaylight-cluster-data@10.30.171.110:2550\/user\/shardmanager-operational\/member-3-shard-topology-operational","LastLogIndex":95,"LastLeadershipChangeTime":"2026-04-08 00:57:11.097","FollowerInitialSyncStatus":false,"FollowerInfo":[{"timeSinceLastActivity":"00:00:00.236","active":true,"matchIndex":95,"voting":true,"id":"member-2-shard-topology-operational","nextIndex":96},{"timeSinceLastActivity":"00:00:00.236","active":true,"matchIndex":95,"voting":true,"id":"member-3-shard-topology-operational","nextIndex":96}],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"1.628 ms","CurrentTerm":5,"LastTerm":5,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-topology-operational","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":11,"TxCohortCacheSize":0,"PeerVotingStates":"member-2-shard-topology-operational: true, member-3-shard-topology-operational: true","LastLogTerm":5,"StatRetrievalError":null,"CommitIndex":95,"SnapshotTerm":5,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-1-shard-topology-operational","LeadershipChangeCount":1,"InMemoryJournalDataSize":9271},"timestamp":1775610127,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:02:07.161847" elapsed="0.003934"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:07.160606" elapsed="0.005244"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:07.160579" elapsed="0.005330"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:02:07.170957" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:02:07.167446" elapsed="0.003650"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:07.166024" elapsed="0.005195"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:07.165999" elapsed="0.005281"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:02:07.173321" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:02:07.172240" elapsed="0.001166"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:07.174335" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:07.173637" elapsed="0.000820"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:02:07.175532" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:02:07.174965" elapsed="0.000612"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:07.174546" elapsed="0.001081"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:07.173607" elapsed="0.002055"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:02:07.177193" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:02:07.176312" elapsed="0.000943"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:07.177890" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:07.177422" elapsed="0.000553"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:02:07.178888" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:02:07.178375" elapsed="0.000559"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:07.178012" elapsed="0.000973"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:07.177402" elapsed="0.001619"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:02:07.179351" elapsed="0.000618"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T01:02:07.180781" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:02:07.180293" elapsed="0.000548"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T01:02:07.181127" elapsed="0.002557"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T01:02:07.159633" elapsed="0.024210"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T01:02:07.184043" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:02:07.183917" elapsed="0.000171"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:07.183898" elapsed="0.000211"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T01:02:07.187956" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-1-shard-topology-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T01:02:07.184273" elapsed="0.003712"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T01:02:07.188078" elapsed="0.000033"/>
</return>
<msg time="2026-04-08T01:02:07.188324" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-1-shard-topology-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T01:02:07.127692" elapsed="0.060659"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T01:02:07.188410" elapsed="0.000027"/>
</return>
<msg time="2026-04-08T01:02:07.188559" level="INFO">${data_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-1-shard-topology-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp...</msg>
<var>${data_text}</var>
<arg>uri=${uri}</arg>
<arg>session=${session}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-08T01:02:07.126940" elapsed="0.061646"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:02:07.189641" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-1-shard-topology-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 17756101...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:02:07.189174" elapsed="0.000496"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-08T01:02:07.189719" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T01:02:07.189899" level="INFO">${data_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-1-shard-topology-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 17756101...</msg>
<var>${data_object}</var>
<arg>${data_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-08T01:02:07.188810" elapsed="0.001115"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:02:07.190310" level="INFO">${value} = {'AbortTransactionsCount': 0, 'CommitIndex': 95, 'CommittedTransactionsCount': 11, 'CurrentTerm': 5, 'FailedReadTransactionsCount': 0, 'FailedTransactionsCount': 0, 'FollowerInfo': [{'active': True, '...</msg>
<var>${value}</var>
<arg>${data_object}</arg>
<arg>value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:02:07.190081" elapsed="0.000256"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:02:07.190707" level="INFO">${raft_property} = Leader</msg>
<var>${raft_property}</var>
<arg>${value}</arg>
<arg>${property}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:02:07.190505" elapsed="0.000227"/>
</kw>
<return>
<value>${raft_property}</value>
<status status="PASS" start="2026-04-08T01:02:07.190778" elapsed="0.000027"/>
</return>
<msg time="2026-04-08T01:02:07.190925" level="INFO">${raft_state} = Leader</msg>
<var>${raft_state}</var>
<arg>RaftState</arg>
<arg>${shard_name}</arg>
<arg>${shard_type}</arg>
<arg>${member_index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft property.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T01:02:06.908838" elapsed="0.282111"/>
</kw>
<return>
<value>${raft_state}</value>
<status status="PASS" start="2026-04-08T01:02:07.191004" elapsed="0.000026"/>
</return>
<msg time="2026-04-08T01:02:07.191146" level="INFO">${raft_state} = Leader</msg>
<var>${raft_state}</var>
<arg>shard_name=${shard_name}</arg>
<arg>shard_type=${ds_type}</arg>
<arg>member_index=${index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft status.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T01:02:06.908117" elapsed="0.283085"/>
</kw>
<if>
<branch type="IF" condition="'Follower' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${follower_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:07.191499" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:07.191281" elapsed="0.000274"/>
</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="PASS" start="2026-04-08T01:02:07.191786" elapsed="0.000187"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:07.191579" elapsed="0.000432"/>
</branch>
<branch type="ELSE IF" condition="${validate}">
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized Raft state: ${raft_state}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:07.192197" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:07.192035" elapsed="0.000214"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:07.191264" elapsed="0.001008"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T01:02:06.907942" elapsed="0.284353"/>
</iter>
<iter>
<kw name="Get_Raft_State_Of_Shard_At_Member" owner="ClusterManagement">
<kw name="Get_Raft_Property_From_Shard_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:02:07.194668" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:02:07.194319" elapsed="0.000377"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T01:02:07.194743" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T01:02:07.194890" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T01:02:07.193951" elapsed="0.000964"/>
</kw>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Get_As_Json_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:02:07.281754" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:02:07.281377" elapsed="0.000405"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T01:02:07.282640" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T01:02:07.282354" elapsed="0.000361">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-08T01:02:07.282809" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T01:02:07.281997" elapsed="0.000836"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:02:07.283408" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:02:07.283001" elapsed="0.000434"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T01:02:07.283737" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-08T01:02:07.283949" level="INFO">${template} = /rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T01:02:07.283600" elapsed="0.000376"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:02:07.284407" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:02:07.284138" elapsed="0.000313"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:02:07.285406" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:02:07.285134" elapsed="0.000316"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-08T01:02:07.285879" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-08T01:02:07.285612" elapsed="0.000293"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:07.286247" elapsed="0.000022"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:07.286463" elapsed="0.000024"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:07.286636" elapsed="0.000021"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-08T01:02:07.286094" elapsed="0.000599"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-08T01:02:07.285955" elapsed="0.000766"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-08T01:02:07.286764" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T01:02:07.286925" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-08T01:02:07.284811" elapsed="0.002140"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:07.284521" elapsed="0.002461"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:07.287167" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:07.287006" elapsed="0.000219"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:07.284501" elapsed="0.002745"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:02:07.287815" level="INFO">${final_text} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:02:07.287391" elapsed="0.000455"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T01:02:07.287894" elapsed="0.000028"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="PASS" start="2026-04-08T01:02:07.280737" elapsed="0.007278"/>
</kw>
<msg time="2026-04-08T01:02:07.288068" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:02:07.267932" elapsed="0.020216"/>
</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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:07.301311" elapsed="0.000042"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:07.313855" elapsed="0.000041"/>
</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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:07.326493" elapsed="0.000041"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:07.327290" elapsed="0.000037"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:07.328045" elapsed="0.000036"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:07.328612" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:07.328462" elapsed="0.000206"/>
</branch>
<status status="NOT RUN" start="2026-04-08T01:02:07.328446" elapsed="0.000245"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:07.328857" elapsed="0.000022"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:07.329048" elapsed="0.000021"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:07.329249" elapsed="0.000022"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-08T01:02:07.328398" elapsed="0.000927"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-08T01:02:07.328177" elapsed="0.001187"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:07.330067" elapsed="0.000035"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-08T01:02:07.330199" elapsed="0.000047"/>
</return>
<msg time="2026-04-08T01:02:07.330431" level="INFO">${uri} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-08T01:02:07.261735" elapsed="0.068802"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T01:02:07.333382" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T01:02:07.333125" elapsed="0.000322">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-08T01:02:07.333630" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T01:02:07.332689" elapsed="0.000984"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:07.334221" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:07.333800" elapsed="0.000490"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:02:07.334902" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:02:07.334602" elapsed="0.000327"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:07.334339" elapsed="0.000636"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:07.333750" elapsed="0.001264"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:02:07.338305" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:02:07.335777" elapsed="0.002598"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-08T01:02:07.338453" elapsed="0.000061"/>
</return>
<msg time="2026-04-08T01:02:07.338761" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T01:02:07.331532" elapsed="0.007333"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T01:02:07.341635" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T01:02:07.341391" elapsed="0.000306">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-08T01:02:07.341884" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T01:02:07.340942" elapsed="0.000985"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-08T01:02:07.342328" elapsed="0.000079"/>
</return>
<status status="PASS" start="2026-04-08T01:02:07.342055" elapsed="0.000421"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:07.342006" elapsed="0.000508"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:07.343266" elapsed="0.000037"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:07.344020" elapsed="0.000035"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-08T01:02:07.344139" elapsed="0.000149"/>
</return>
<msg time="2026-04-08T01:02:07.346523" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T01:02:07.339730" elapsed="0.006899"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:02:07.350652" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:02:07.350245" elapsed="0.000506"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:02:07.351884" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:02:07.351501" elapsed="0.000480"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T01:02:07.377747" level="INFO">GET Request : url=http://10.30.170.131:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 path_url=/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01l7fnm4ypo6vn14692wsih5mir0.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T01:02:07.378384" level="INFO">GET Response : url=http://10.30.170.131:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Transfer-Encoding': 'chunked'} 
 body={"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","encrypted-passwords","hidden-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-private-keys","asymmetrically-encrypted-value-format","cleartext-private-keys","cms-encrypted-data-format","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["client-ident-hostbased","ssh-client-keepalives","client-ident-password","client-ident-publickey"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-ex... (set the log level to DEBUG or TRACE to see the full content) 
 </msg>
<msg time="2026-04-08T01:02:07.378670" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T01:02:07.354392" elapsed="0.024315"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:07.352108" elapsed="0.026677"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:07.379224" elapsed="0.000035"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:07.378845" elapsed="0.000487"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:07.352058" elapsed="0.027324"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:02:07.385508" level="INFO">{"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","encrypted-passwords","hidden-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-private-keys","asymmetrically-encrypted-value-format","cleartext-private-keys","cms-encrypted-data-format","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["client-ident-hostbased","ssh-client-keepalives","client-ident-password","client-ident-publickey"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-experimenter-types?revision=2015-10-20","namespace":"urn:opendaylight:openflowplugin:experimenter:types","conformance-type":"import"},{"name":"ietf-ip_2018-02-22","revision":"2018-02-22","schema":"/rests/modules/ietf-ip?revision=2018-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-ip","conformance-type":"import","feature":["ipv6-privacy-autoconf","ipv4-non-contiguous-netmasks"]},{"name":"ietf-tcp-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-client","conformance-type":"import","feature":["local-binding-supported","tcp-client-keepalives"]},{"name":"node-config_2014-10-15","revision":"2014-10-15","schema":"/rests/modules/node-config?revision=2014-10-15","namespace":"urn:opendaylight:module:config","conformance-type":"import"},{"name":"ietf-restconf_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf","conformance-type":"import"},{"name":"ietf-datastores_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-datastores?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-datastores","conformance-type":"import"},{"name":"ietf-yang-patch_2017-02-22","revision":"2017-02-22","schema":"/rests/modules/ietf-yang-patch?revision=2017-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-patch","conformance-type":"import"},{"name":"sal-group_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-group?revision=2013-09-18","namespace":"urn:opendaylight:group:service","conformance-type":"import"},{"name":"odl-codegen-extensions_2024-06-27","revision":"2024-06-27","schema":"/rests/modules/odl-codegen-extensions?revision=2024-06-27","namespace":"urn:opendaylight:yang:extension:codegen","conformance-type":"import"},{"name":"sal-meter_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-meter?revision=2013-09-18","namespace":"urn:opendaylight:meter:service","conformance-type":"import"},{"name":"ietf-interfaces_2018-02-20","revision":"2018-02-20","schema":"/rests/modules/ietf-interfaces?revision=2018-02-20","namespace":"urn:ietf:params:xml:ns:yang:ietf-interfaces","conformance-type":"import","feature":["pre-provisioning","if-mib","arbitrary-names"]},{"name":"opendaylight-l2-types_2013-08-27","revision":"2013-08-27","schema":"/rests/modules/opendaylight-l2-types?revision=2013-08-27","namespace":"urn:opendaylight:l2:types","conformance-type":"import"},{"name":"opendaylight-flow-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-flow-types?revision=2013-10-26","namespace":"urn:opendaylight:flow:types","conformance-type":"import"},{"name":"lldp-speaker-config_2016-05-12","revision":"2016-05-12","schema":"/rests/modules/lldp-speaker-config?revision=2016-05-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker:config","conformance-type":"import"},{"name":"aaa-cert_2015-11-26","revision":"2015-11-26","schema":"/rests/modules/aaa-cert?revision=2015-11-26","namespace":"urn:opendaylight:yang:aaa:cert","conformance-type":"import"},{"name":"openflow-action_2015-02-03","revision":"2015-02-03","schema":"/rests/modules/openflow-action?revision=2015-02-03","namespace":"urn:opendaylight:openflow:common:action","conformance-type":"import"},{"name":"openflow-approved-extensions_2016-08-02","revision":"2016-08-02","schema":"/rests/modules/openflow-approved-extensions?revision=2016-08-02","namespace":"urn:opendaylight:openflow:approved:extensions","conformance-type":"import"},{"name":"nc-notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/nc-notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netmod:notification","conformance-type":"import"},{"name":"ietf-netconf-nmda_2019-01-07","revision":"2019-01-07","schema":"/rests/modules/ietf-netconf-nmda?revision=2019-01-07","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-nmda","conformance-type":"import","feature":["with-defaults","origin"]},{"name":"ietf-tcp-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-common","conformance-type":"import","feature":["keepalives-supported"]},{"name":"network-topology_2013-10-21","revision":"2013-10-21","schema":"/rests/modules/network-topology?revision=2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:network-topology","conformance-type":"import"},{"name":"aaa-encrypt-service-config_2024-02-02","revision":"2024-02-02","schema":"/rests/modules/aaa-encrypt-service-config?revision=2024-02-02","namespace":"config:aaa:authn:encrypt:service:config","conformance-type":"import"},{"name":"openflow-instruction_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-instruction?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:instruction","conformance-type":"import"},{"name":"ietf-tls-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-client","conformance-type":"import","feature":["client-ident-x509-cert","server-auth-x509-cert"]},{"name":"opendaylight-group-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-group-statistics?revision=2013-11-11","namespace":"urn:opendaylight:group:statistics","conformance-type":"import"},{"name":"cluster-admin_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/cluster-admin?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:cluster:admin","conformance-type":"import"},{"name":"opendaylight-flow-statistics_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-flow-statistics?revision=2013-08-19","namespace":"urn:opendaylight:flow:statistics","conformance-type":"import"},{"name":"opendaylight-table-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-table-types?revision=2013-10-26","namespace":"urn:opendaylight:table:types","conformance-type":"import"},{"name":"forwarding-rules-manager-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/forwarding-rules-manager-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:forwardingrules-manager:config","conformance-type":"import"},{"name":"odl-srm-types_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-types?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:types","conformance-type":"import"},{"name":"ietf-x509-cert-to-name_2014-12-10","revision":"2014-12-10","schema":"/rests/modules/ietf-x509-cert-to-name?revision=2014-12-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-x509-cert-to-name","conformance-type":"import"},{"name":"flow-node-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-node-inventory?revision=2013-08-19","namespace":"urn:opendaylight:flow:inventory","conformance-type":"import"},{"name":"flow-errors_2013-11-16","revision":"2013-11-16","schema":"/rests/modules/flow-errors?revision=2013-11-16","namespace":"urn:opendaylight:flow:errors","conformance-type":"import"},{"name":"ietf-netconf_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:netconf:base:1.0","conformance-type":"import","feature":["xpath","url","rollback-on-error","validate","candidate","confirmed-commit","startup","writable-running"]},{"name":"iana-ssh-public-key-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-public-key-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-public-key-algs","conformance-type":"import"},{"name":"aaa-cert-mdsal_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/aaa-cert-mdsal?revision=2016-03-21","namespace":"urn:opendaylight:yang:aaa:cert:mdsal","conformance-type":"import"},{"name":"odl-device-notification_2024-02-18","revision":"2024-02-18","schema":"/rests/modules/odl-device-notification?revision=2024-02-18","namespace":"urn:opendaylight:device:notification","conformance-type":"import"},{"name":"ietf-origin_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-origin?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-origin","conformance-type":"import"},{"name":"openflow-augments_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-augments?revision=2015-02-25","namespace":"urn:opendaylight:openflow:augments","conformance-type":"import"},{"name":"iana-ssh-encryption-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-encryption-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-encryption-algs","conformance-type":"import"},{"name":"ietf-truststore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-truststore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-truststore","conformance-type":"import","feature":["inline-definitions-supported"]},{"name":"distributed-datastore-provider_2025-01-30","revision":"2025-01-30","schema":"/rests/modules/distributed-datastore-provider?revision=2025-01-30","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:distributed-datastore-provider","conformance-type":"import"},{"name":"opendaylight-group-types_2013-10-18","revision":"2013-10-18","schema":"/rests/modules/opendaylight-group-types?revision=2013-10-18","namespace":"urn:opendaylight:group:types","conformance-type":"import"},{"name":"sal-remote-augment_2023-11-03","revision":"2023-11-03","schema":"/rests/modules/sal-remote-augment?revision=2023-11-03","namespace":"urn:sal:restconf:event:subscription","conformance-type":"import"},{"name":"opendaylight-ipv6-arbitrary-bitmask-fields_2016-02-24","revision":"2016-02-24","schema":"/rests/modules/opendaylight-ipv6-arbitrary-bitmask-fields?revision=2016-02-24","namespace":"urn:opendaylight:opendaylight-ipv6-arbitrary-bitmask-fields","conformance-type":"import"},{"name":"sal-flows-batch_2016-03-14","revision":"2016-03-14","schema":"/rests/modules/sal-flows-batch?revision=2016-03-14","namespace":"urn:opendaylight:flows:service","conformance-type":"import"},{"name":"ietf-tls-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-common","conformance-type":"import","feature":["hello-params","tls12","tls13"]},{"name":"openflow-types_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-types?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:types","conformance-type":"import"},{"name":"ietf-netconf-with-defaults_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf-with-defaults?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults","conformance-type":"import"},{"name":"odl-srm-ops_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-ops?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:ops","conformance-type":"import"},{"name":"odl-general-entity_2015-09-30","revision":"2015-09-30","schema":"/rests/modules/odl-general-entity?revision=2015-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:mdsal:core:general-entity","conformance-type":"import"},{"name":"iana-ssh-key-exchange-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-key-exchange-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-key-exchange-algs","conformance-type":"import"},{"name":"node-ssl-connection-error_2019-07-23","revision":"2019-07-23","schema":"/rests/modules/node-ssl-connection-error?revision=2019-07-23","namespace":"urn:opendaylight:node-ssl-connection-error:service","conformance-type":"import"},{"name":"openflow-protocol_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-protocol?revision=2013-07-31","namespace":"urn:opendaylight:openflow:protocol","conformance-type":"import"},{"name":"ietf-udp-server_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-server?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-server","conformance-type":"import"},{"name":"ietf-keystore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-keystore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-keystore","conformance-type":"import","feature":["asymmetric-keys","inline-definitions-supported"]},{"name":"aaa_2016-12-14","revision":"2016-12-14","schema":"/rests/modules/aaa?revision=2016-12-14","namespace":"urn:opendaylight:params:xml:ns:yang:aaa","conformance-type":"import"},{"name":"aaa-cert-rpc_2015-12-15","revision":"2015-12-15","schema":"/rests/modules/aaa-cert-rpc?revision=2015-12-15","namespace":"urn:opendaylight:yang:aaa:cert:rpc","conformance-type":"import"},{"name":"system-notifications_2013-09-27","revision":"2013-09-27","schema":"/rests/modules/system-notifications?revision=2013-09-27","namespace":"urn:opendaylight:openflow:system","conformance-type":"import"},{"name":"sal-flat-batch_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/sal-flat-batch?revision=2016-03-21","namespace":"urn:opendaylight:flat-batch:service","conformance-type":"import"},{"name":"notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netconf:notification:1.0","conformance-type":"import"},{"name":"sal-remote_2014-01-14","revision":"2014-01-14","schema":"/rests/modules/sal-remote?revision=2014-01-14","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:remote","conformance-type":"import"},{"name":"yang-ext_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/yang-ext?revision=2013-07-09","namespace":"urn:opendaylight:yang:extension:yang-ext","conformance-type":"import"},{"name":"opendaylight-multipart-types_2017-01-12","revision":"2017-01-12","schema":"/rests/modules/opendaylight-multipart-types?revision=2017-01-12","namespace":"urn:opendaylight:multipart:types","conformance-type":"import"},{"name":"opendaylight-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-inventory?revision=2013-08-19","namespace":"urn:opendaylight:inventory","conformance-type":"import"},{"name":"sal-queue_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-queue?revision=2015-03-05","namespace":"urn:opendaylight:queue:service","conformance-type":"import"},{"name":"sal-groups-batch_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/sal-groups-batch?revision=2016-03-15","namespace":"urn:opendaylight:groups:service","conformance-type":"import"},{"name":"arbitrator-reconcile_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/arbitrator-reconcile?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:arbitrator-reconcile:service","conformance-type":"import"},{"name":"ietf-yang-metadata_2016-08-05","revision":"2016-08-05","schema":"/rests/modules/ietf-yang-metadata?revision=2016-08-05","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-metadata","conformance-type":"import"},{"name":"opendaylight-arbitrary-bitmask-fields_2016-01-30","revision":"2016-01-30","schema":"/rests/modules/opendaylight-arbitrary-bitmask-fields?revision=2016-01-30","namespace":"urn:opendaylight:arbitrary:bitmask:fields","conformance-type":"import"},{"name":"ietf-udp-client_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-client?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-client","conformance-type":"import","feature":["local-binding"]},{"name":"opendaylight-meter-types_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/opendaylight-meter-types?revision=2013-09-18","namespace":"urn:opendaylight:meter:types","conformance-type":"import"},{"name":"opendaylight-action-types_2013-11-12","revision":"2013-11-12","schema":"/rests/modules/opendaylight-action-types?revision=2013-11-12","namespace":"urn:opendaylight:action:types","conformance-type":"import"},{"name":"sal-role_2015-07-27","revision":"2015-07-27","schema":"/rests/modules/sal-role?revision=2015-07-27","namespace":"urn:opendaylight:role:service","conformance-type":"import"},{"name":"openflow-provider-config_2016-05-10","revision":"2016-05-10","schema":"/rests/modules/openflow-provider-config?revision=2016-05-10","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:provider:config","conformance-type":"import"},{"name":"odl-serviceutils-upgrade_2018-07-02","revision":"2018-07-02","schema":"/rests/modules/odl-serviceutils-upgrade?revision=2018-07-02","namespace":"urn:opendaylight:serviceutils:upgrade","conformance-type":"import"},{"name":"opendaylight-match-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-match-types?revision=2013-10-26","namespace":"urn:opendaylight:model:match:types","conformance-type":"import"},{"name":"ietf-restconf-server_2024-08-14","revision":"2024-08-14","schema":"/rests/modules/ietf-restconf-server?revision=2024-08-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-server","conformance-type":"import","feature":["http-listen","https-listen"]},{"name":"reconciliation-result-state_2017-07-13","revision":"2017-07-13","schema":"/rests/modules/reconciliation-result-state?revision=2017-07-13","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:rf:state","conformance-type":"import"},{"name":"onf-extensions_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/onf-extensions?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf","conformance-type":"import"},{"name":"sal-table_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/sal-table?revision=2013-10-26","namespace":"urn:opendaylight:table:service","conformance-type":"import"},{"name":"iana-http-versions_2026-02-04","revision":"2026-02-04","schema":"/rests/modules/iana-http-versions?revision=2026-02-04","namespace":"urn:ietf:params:xml:ns:yang:iana-http-versions","conformance-type":"import"},{"name":"opendaylight-direct-statistics_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/opendaylight-direct-statistics?revision=2016-05-11","namespace":"urn:opendaylight:direct:statistics","conformance-type":"import"},{"name":"opendaylight-port-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-port-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:port","conformance-type":"import"},{"name":"sal-async-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/sal-async-config?revision=2017-06-19","namespace":"urn:opendaylight:async-config:service","conformance-type":"import"},{"name":"aaa-password-service-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-password-service-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:password:service:config","conformance-type":"import"},{"name":"ietf-yang-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-yang-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-types","conformance-type":"import"},{"name":"opendaylight-queue-statistics_2013-12-16","revision":"2013-12-16","schema":"/rests/modules/opendaylight-queue-statistics?revision=2013-12-16","namespace":"urn:opendaylight:queue:statistics","conformance-type":"import"},{"name":"sal-bundle_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/sal-bundle?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf:bundle:service","conformance-type":"import"},{"name":"ietf-restconf-subscribed-notifications_2019-11-17","revision":"2019-11-17","schema":"/rests/modules/ietf-restconf-subscribed-notifications?revision=2019-11-17","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-subscribed-notifications","conformance-type":"import"},{"name":"sal-meters-batch_2016-03-16","revision":"2016-03-16","schema":"/rests/modules/sal-meters-batch?revision=2016-03-16","namespace":"urn:opendaylight:meters:service","conformance-type":"import"},{"name":"odl-entity-owners","revision":"","schema":"/rests/modules/odl-entity-owners","namespace":"urn:opendaylight:params:xml:ns:yang:controller:entity-owners","conformance-type":"import"},{"name":"sal-experimenter-mp-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-mp-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-mp-message:service","conformance-type":"import"},{"name":"packet-processing_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/packet-processing?revision=2013-07-09","namespace":"urn:opendaylight:packet:service","conformance-type":"import"},{"name":"openflow-configuration_2014-06-30","revision":"2014-06-30","schema":"/rests/modules/openflow-configuration?revision=2014-06-30","namespace":"urn:opendaylight:openflow:config","conformance-type":"import"},{"name":"odl-srm-rpcs_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-rpcs?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:rpc","conformance-type":"import"},{"name":"ietf-netconf-acm_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-netconf-acm?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-acm","conformance-type":"import"},{"name":"iana-crypt-hash_2014-08-06","revision":"2014-08-06","schema":"/rests/modules/iana-crypt-hash?revision=2014-08-06","namespace":"urn:ietf:params:xml:ns:yang:iana-crypt-hash","conformance-type":"import","feature":["crypt-hash-sha-512","crypt-hash-sha-256","crypt-hash-md5"]},{"name":"openflow-extensible-match_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-extensible-match?revision=2015-02-25","namespace":"urn:opendaylight:openflow:oxm","conformance-type":"import"}],"module-set-id":"2"}}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:02:07.381735" elapsed="0.004301"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:07.381421" elapsed="0.004669"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:07.381391" elapsed="0.004735"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:02:07.388929" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:02:07.386596" elapsed="0.002379"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:07.386261" elapsed="0.002749"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:07.386234" elapsed="0.002800"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:02:07.389664" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:02:07.389282" elapsed="0.000408"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:07.390021" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:07.389782" elapsed="0.000297"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:02:07.390606" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:02:07.390295" elapsed="0.000337"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:07.390102" elapsed="0.000566"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:07.389762" elapsed="0.000927"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:02:07.391255" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:02:07.390872" elapsed="0.000409"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:07.391613" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:07.391374" elapsed="0.000295"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:02:07.392290" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:02:07.391855" elapsed="0.000461"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:07.391692" elapsed="0.000659"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:07.391354" elapsed="0.001019"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:02:07.392545" elapsed="0.000348"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T01:02:07.393380" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:02:07.393081" elapsed="0.000325"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T01:02:07.393582" elapsed="0.002366"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T01:02:07.380413" elapsed="0.015658"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T01:02:07.396586" elapsed="0.000045"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:02:07.396216" elapsed="0.000479"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:07.396149" elapsed="0.000581"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T01:02:07.405802" level="INFO">${text_normalized} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T01:02:07.397497" elapsed="0.008354"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T01:02:07.405929" elapsed="0.000064"/>
</return>
<msg time="2026-04-08T01:02:07.406364" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T01:02:07.347323" elapsed="0.059148"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T01:02:07.406930" elapsed="0.000031"/>
</return>
<msg time="2026-04-08T01:02:07.407108" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="PASS" start="2026-04-08T01:02:07.203581" elapsed="0.203554"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Json_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:07.407481" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:07.407236" elapsed="0.000432"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:07.407218" elapsed="0.000476"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T01:02:07.407729" elapsed="0.000026"/>
</return>
<arg>session=${session}</arg>
<arg>folder=${RESTCONF_MODULES_DIR}</arg>
<arg>verify=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Add arguments sensible for JSON data, return Get_Templated response text.
Optionally, verification against JSON data (may be iterated) is called.
Only subset of JSON data is verified and returned if JMES path is specified in
file ${folder}/jmespath.expr.</doc>
<status status="PASS" start="2026-04-08T01:02:07.199321" elapsed="0.208533"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:07.194983" elapsed="0.212915"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:07.194966" elapsed="0.212955"/>
</if>
<kw name="Resolve_Shard_Type_Class" owner="ClusterManagement">
<if>
<branch type="IF" condition="'${shard_type}' == 'config'">
<return>
<value>DistributedConfigDatastore</value>
<status status="NOT RUN" start="2026-04-08T01:02:07.408545" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:02:07.408435" elapsed="0.000155"/>
</branch>
<branch type="ELSE IF" condition="'${shard_type}' == 'operational'">
<return>
<value>DistributedOperationalDatastore</value>
<status status="PASS" start="2026-04-08T01:02:07.408713" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-08T01:02:07.408611" elapsed="0.000159"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:07.408417" elapsed="0.000376"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized shard type: ${shard_type}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:07.408941" elapsed="0.000022"/>
</kw>
<msg time="2026-04-08T01:02:07.409060" level="INFO">${type_class} = DistributedOperationalDatastore</msg>
<var>${type_class}</var>
<arg>shard_type=${shard_type}</arg>
<doc>Simple lookup for class name corresponding to desired type.</doc>
<status status="PASS" start="2026-04-08T01:02:07.408150" elapsed="0.000935"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:02:07.409644" level="INFO">${cluster_index} = 2</msg>
<var>${cluster_index}</var>
<arg>${member_index}+${NODE_ROLE_INDEX_START}-1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:02:07.409271" elapsed="0.000400"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:02:07.410330" level="INFO">${uri} = jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-topology-operational,type=DistributedOperationalDatastore</msg>
<var>${uri}</var>
<arg>${JOLOKIA_READ_URI}:Category=Shards,name=member-${cluster_index}-shard-${shard_name}-${shard_type},type=${type_class}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:02:07.409826" elapsed="0.000532"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:02:07.416045" level="INFO">jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-topology-operational,type=DistributedOperationalDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:02:07.415611" elapsed="0.000481"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:02:07.416698" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:02:07.416265" elapsed="0.000478"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T01:02:07.438609" level="INFO">GET Request : url=http://10.30.170.131:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-topology-operational,type=DistributedOperationalDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-topology-operational,type=DistributedOperationalDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T01:02:07.438743" level="INFO">GET Response : url=http://10.30.170.131:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-topology-operational,type=DistributedOperationalDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Wed, 08 Apr 2026 01:02:07 GMT', 'Expires': 'Wed, 08 Apr 2026 00:02:07 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-2-shard-topology-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"ReadWriteTransactionCount":0,"SnapshotIndex":94,"InMemoryJournalLogSize":1,"ReplicatedToAllIndex":94,"Leader":"member-1-shard-topology-operational","LastIndex":95,"RaftState":"Follower","LastApplied":95,"LastCommittedTransactionTime":"1970-01-01 00:00:00.000","PeerAddresses":"member-1-shard-topology-operational: pekko:\/\/opendaylight-cluster-data@10.30.170.48:2550\/user\/shardmanager-operational\/member-1-shard-topology-operational, member-3-shard-topology-operational: pekko:\/\/opendaylight-cluster-data@10.30.171.110:2550\/user\/shardmanager-operational\/member-3-shard-topology-operational","LastLogIndex":95,"LastLeadershipChangeTime":"2026-04-08 00:57:11.097","FollowerInitialSyncStatus":true,"FollowerInfo":[],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"720.0 μs","CurrentTerm":5,"LastTerm":5,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-topology-operational","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":0,"TxCohortCacheSize":0,"PeerVotingStates":"member-1-shard-topology-operational: true, member-3-shard-topology-operational: true","LastLogTerm":5,"StatRetrievalError":null,"CommitIndex":95,"SnapshotTerm":5,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-2-shard-topology-operational","LeadershipChangeCount":1,"InMemoryJournalDataSize":9271},"timestamp":1775610127,"status":200} 
 </msg>
<msg time="2026-04-08T01:02:07.438935" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T01:02:07.427990" elapsed="0.011050"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:07.416812" elapsed="0.022505"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:07.439507" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:07.439348" elapsed="0.000471"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:07.416793" elapsed="0.023052"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:02:07.445348" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-2-shard-topology-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"ReadWriteTransactionCount":0,"SnapshotIndex":94,"InMemoryJournalLogSize":1,"ReplicatedToAllIndex":94,"Leader":"member-1-shard-topology-operational","LastIndex":95,"RaftState":"Follower","LastApplied":95,"LastCommittedTransactionTime":"1970-01-01 00:00:00.000","PeerAddresses":"member-1-shard-topology-operational: pekko:\/\/opendaylight-cluster-data@10.30.170.48:2550\/user\/shardmanager-operational\/member-1-shard-topology-operational, member-3-shard-topology-operational: pekko:\/\/opendaylight-cluster-data@10.30.171.110:2550\/user\/shardmanager-operational\/member-3-shard-topology-operational","LastLogIndex":95,"LastLeadershipChangeTime":"2026-04-08 00:57:11.097","FollowerInitialSyncStatus":true,"FollowerInfo":[],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"720.0 μs","CurrentTerm":5,"LastTerm":5,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-topology-operational","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":0,"TxCohortCacheSize":0,"PeerVotingStates":"member-1-shard-topology-operational: true, member-3-shard-topology-operational: true","LastLogTerm":5,"StatRetrievalError":null,"CommitIndex":95,"SnapshotTerm":5,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-2-shard-topology-operational","LeadershipChangeCount":1,"InMemoryJournalDataSize":9271},"timestamp":1775610127,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:02:07.441925" elapsed="0.003583"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:07.441013" elapsed="0.004564"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:07.440994" elapsed="0.004636"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:02:07.450413" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:02:07.446985" elapsed="0.003566"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:07.445744" elapsed="0.004876"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:07.445718" elapsed="0.004956"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:02:07.452740" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:02:07.451598" elapsed="0.001228"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:07.453742" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:07.453059" elapsed="0.000805"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:02:07.455257" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:02:07.454445" elapsed="0.000859"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:07.453918" elapsed="0.001438"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:07.453031" elapsed="0.002361"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:02:07.456932" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:02:07.456041" elapsed="0.000952"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:07.457651" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:07.457179" elapsed="0.000559"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:02:07.458638" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:02:07.458110" elapsed="0.000574"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:07.457775" elapsed="0.000959"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:07.457139" elapsed="0.001629"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:02:07.458992" elapsed="0.000648"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T01:02:07.460651" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:02:07.460121" elapsed="0.000591"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T01:02:07.461005" elapsed="0.002496"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T01:02:07.440336" elapsed="0.023326"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T01:02:07.463862" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:02:07.463735" elapsed="0.000178"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:07.463715" elapsed="0.000219"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T01:02:07.467617" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-2-shard-topology-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T01:02:07.464081" elapsed="0.003566"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T01:02:07.467700" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T01:02:07.467866" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-2-shard-topology-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T01:02:07.411319" elapsed="0.056581"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T01:02:07.468006" elapsed="0.000027"/>
</return>
<msg time="2026-04-08T01:02:07.468172" level="INFO">${data_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-2-shard-topology-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp...</msg>
<var>${data_text}</var>
<arg>uri=${uri}</arg>
<arg>session=${session}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-08T01:02:07.410571" elapsed="0.057630"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:02:07.469258" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-2-shard-topology-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 17756101...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:02:07.468768" elapsed="0.000520"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-08T01:02:07.469337" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T01:02:07.469509" level="INFO">${data_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-2-shard-topology-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 17756101...</msg>
<var>${data_object}</var>
<arg>${data_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-08T01:02:07.468424" elapsed="0.001111"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:02:07.469891" level="INFO">${value} = {'AbortTransactionsCount': 0, 'CommitIndex': 95, 'CommittedTransactionsCount': 0, 'CurrentTerm': 5, 'FailedReadTransactionsCount': 0, 'FailedTransactionsCount': 0, 'FollowerInfo': [], 'FollowerInitial...</msg>
<var>${value}</var>
<arg>${data_object}</arg>
<arg>value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:02:07.469692" elapsed="0.000226"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:02:07.470304" level="INFO">${raft_property} = Follower</msg>
<var>${raft_property}</var>
<arg>${value}</arg>
<arg>${property}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:02:07.470074" elapsed="0.000255"/>
</kw>
<return>
<value>${raft_property}</value>
<status status="PASS" start="2026-04-08T01:02:07.470376" elapsed="0.000027"/>
</return>
<msg time="2026-04-08T01:02:07.470525" level="INFO">${raft_state} = Follower</msg>
<var>${raft_state}</var>
<arg>RaftState</arg>
<arg>${shard_name}</arg>
<arg>${shard_type}</arg>
<arg>${member_index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft property.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T01:02:07.193353" elapsed="0.277197"/>
</kw>
<return>
<value>${raft_state}</value>
<status status="PASS" start="2026-04-08T01:02:07.470607" elapsed="0.000025"/>
</return>
<msg time="2026-04-08T01:02:07.470753" level="INFO">${raft_state} = Follower</msg>
<var>${raft_state}</var>
<arg>shard_name=${shard_name}</arg>
<arg>shard_type=${ds_type}</arg>
<arg>member_index=${index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft status.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T01:02:07.192622" elapsed="0.278155"/>
</kw>
<if>
<branch type="IF" condition="'Follower' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${follower_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-08T01:02:07.471071" elapsed="0.000230"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:07.470856" elapsed="0.000483"/>
</branch>
<branch type="ELSE IF" condition="'Leader' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${leader_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:07.471509" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:07.471363" elapsed="0.000201"/>
</branch>
<branch type="ELSE IF" condition="${validate}">
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized Raft state: ${raft_state}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:07.471728" elapsed="0.000019"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:07.471586" elapsed="0.000192"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:07.470838" elapsed="0.000962"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T01:02:07.192453" elapsed="0.279371"/>
</iter>
<iter>
<kw name="Get_Raft_State_Of_Shard_At_Member" owner="ClusterManagement">
<kw name="Get_Raft_Property_From_Shard_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:02:07.474185" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:02:07.473842" elapsed="0.000372"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T01:02:07.474260" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T01:02:07.474407" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T01:02:07.473502" elapsed="0.000930"/>
</kw>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Get_As_Json_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:02:07.560751" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:02:07.560377" elapsed="0.000402"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T01:02:07.561574" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T01:02:07.561296" elapsed="0.000351">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-08T01:02:07.561789" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T01:02:07.560945" elapsed="0.000868"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:02:07.562406" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:02:07.561979" elapsed="0.000455"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T01:02:07.562732" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-08T01:02:07.562887" level="INFO">${template} = /rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T01:02:07.562598" elapsed="0.000314"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:02:07.563332" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:02:07.563068" elapsed="0.000308"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:02:07.564326" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:02:07.564055" elapsed="0.000314"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-08T01:02:07.564795" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-08T01:02:07.564529" elapsed="0.000292"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:07.565148" elapsed="0.000037"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:07.565367" elapsed="0.000024"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:07.565539" elapsed="0.000021"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-08T01:02:07.565013" elapsed="0.000582"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-08T01:02:07.564872" elapsed="0.000752"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-08T01:02:07.565666" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T01:02:07.565821" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-08T01:02:07.563735" elapsed="0.002111"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:07.563446" elapsed="0.002432"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:07.566049" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:07.565902" elapsed="0.000215"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:07.563427" elapsed="0.002711"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:02:07.566733" level="INFO">${final_text} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:02:07.566306" elapsed="0.000454"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T01:02:07.566809" elapsed="0.000028"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="PASS" start="2026-04-08T01:02:07.559591" elapsed="0.007337"/>
</kw>
<msg time="2026-04-08T01:02:07.566981" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:02:07.547084" elapsed="0.019976"/>
</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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:07.579779" elapsed="0.000041"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:07.592148" elapsed="0.000061"/>
</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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:07.604734" elapsed="0.000041"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:07.605539" elapsed="0.000037"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:07.606333" elapsed="0.000035"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:07.606885" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:07.606738" elapsed="0.000204"/>
</branch>
<status status="NOT RUN" start="2026-04-08T01:02:07.606721" elapsed="0.000244"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:07.607282" elapsed="0.000023"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:07.607477" elapsed="0.000021"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:07.607662" elapsed="0.000021"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-08T01:02:07.606672" elapsed="0.001066"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-08T01:02:07.606450" elapsed="0.001328"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:07.608536" elapsed="0.000036"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-08T01:02:07.608654" elapsed="0.000046"/>
</return>
<msg time="2026-04-08T01:02:07.608871" level="INFO">${uri} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-08T01:02:07.540576" elapsed="0.068407"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T01:02:07.611831" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T01:02:07.611582" elapsed="0.000314">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-08T01:02:07.612087" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T01:02:07.611131" elapsed="0.001000"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:07.612739" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:07.612361" elapsed="0.000444"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:02:07.613412" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:02:07.613104" elapsed="0.000334"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:07.612844" elapsed="0.000640"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:07.612309" elapsed="0.001213"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:02:07.616753" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:02:07.614299" elapsed="0.002499"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-08T01:02:07.616875" elapsed="0.000151"/>
</return>
<msg time="2026-04-08T01:02:07.617301" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T01:02:07.609976" elapsed="0.007431"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T01:02:07.620040" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T01:02:07.619801" elapsed="0.000302">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-08T01:02:07.620410" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T01:02:07.619368" elapsed="0.001088"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-08T01:02:07.620834" elapsed="0.000079"/>
</return>
<status status="PASS" start="2026-04-08T01:02:07.620587" elapsed="0.000394"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:07.620537" elapsed="0.000482"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:07.621784" elapsed="0.000036"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:07.622592" elapsed="0.000036"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-08T01:02:07.622702" elapsed="0.000049"/>
</return>
<msg time="2026-04-08T01:02:07.624993" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T01:02:07.618243" elapsed="0.006858"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:02:07.628963" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:02:07.628582" elapsed="0.000480"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:02:07.630251" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:02:07.629827" elapsed="0.000521"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T01:02:07.657685" level="INFO">GET Request : url=http://10.30.171.110:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 path_url=/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0bpvxx3soilt318jo6w4kocddk0.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T01:02:07.658645" level="INFO">GET Response : url=http://10.30.171.110:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Transfer-Encoding': 'chunked'} 
 body={"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","encrypted-passwords","hidden-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-private-keys","asymmetrically-encrypted-value-format","cleartext-private-keys","cms-encrypted-data-format","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["client-ident-hostbased","ssh-client-keepalives","client-ident-password","client-ident-publickey"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-ex... (set the log level to DEBUG or TRACE to see the full content) 
 </msg>
<msg time="2026-04-08T01:02:07.659101" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T01:02:07.632779" elapsed="0.026409"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:07.630478" elapsed="0.028840"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:07.659975" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:07.659417" elapsed="0.000731"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:07.630426" elapsed="0.029869"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:02:07.667878" level="INFO">{"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","encrypted-passwords","hidden-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-private-keys","asymmetrically-encrypted-value-format","cleartext-private-keys","cms-encrypted-data-format","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["client-ident-hostbased","ssh-client-keepalives","client-ident-password","client-ident-publickey"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-experimenter-types?revision=2015-10-20","namespace":"urn:opendaylight:openflowplugin:experimenter:types","conformance-type":"import"},{"name":"ietf-ip_2018-02-22","revision":"2018-02-22","schema":"/rests/modules/ietf-ip?revision=2018-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-ip","conformance-type":"import","feature":["ipv6-privacy-autoconf","ipv4-non-contiguous-netmasks"]},{"name":"ietf-tcp-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-client","conformance-type":"import","feature":["local-binding-supported","tcp-client-keepalives"]},{"name":"node-config_2014-10-15","revision":"2014-10-15","schema":"/rests/modules/node-config?revision=2014-10-15","namespace":"urn:opendaylight:module:config","conformance-type":"import"},{"name":"ietf-restconf_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf","conformance-type":"import"},{"name":"ietf-datastores_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-datastores?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-datastores","conformance-type":"import"},{"name":"ietf-yang-patch_2017-02-22","revision":"2017-02-22","schema":"/rests/modules/ietf-yang-patch?revision=2017-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-patch","conformance-type":"import"},{"name":"sal-group_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-group?revision=2013-09-18","namespace":"urn:opendaylight:group:service","conformance-type":"import"},{"name":"odl-codegen-extensions_2024-06-27","revision":"2024-06-27","schema":"/rests/modules/odl-codegen-extensions?revision=2024-06-27","namespace":"urn:opendaylight:yang:extension:codegen","conformance-type":"import"},{"name":"sal-meter_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-meter?revision=2013-09-18","namespace":"urn:opendaylight:meter:service","conformance-type":"import"},{"name":"ietf-interfaces_2018-02-20","revision":"2018-02-20","schema":"/rests/modules/ietf-interfaces?revision=2018-02-20","namespace":"urn:ietf:params:xml:ns:yang:ietf-interfaces","conformance-type":"import","feature":["pre-provisioning","if-mib","arbitrary-names"]},{"name":"opendaylight-l2-types_2013-08-27","revision":"2013-08-27","schema":"/rests/modules/opendaylight-l2-types?revision=2013-08-27","namespace":"urn:opendaylight:l2:types","conformance-type":"import"},{"name":"opendaylight-flow-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-flow-types?revision=2013-10-26","namespace":"urn:opendaylight:flow:types","conformance-type":"import"},{"name":"lldp-speaker-config_2016-05-12","revision":"2016-05-12","schema":"/rests/modules/lldp-speaker-config?revision=2016-05-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker:config","conformance-type":"import"},{"name":"aaa-cert_2015-11-26","revision":"2015-11-26","schema":"/rests/modules/aaa-cert?revision=2015-11-26","namespace":"urn:opendaylight:yang:aaa:cert","conformance-type":"import"},{"name":"openflow-action_2015-02-03","revision":"2015-02-03","schema":"/rests/modules/openflow-action?revision=2015-02-03","namespace":"urn:opendaylight:openflow:common:action","conformance-type":"import"},{"name":"openflow-approved-extensions_2016-08-02","revision":"2016-08-02","schema":"/rests/modules/openflow-approved-extensions?revision=2016-08-02","namespace":"urn:opendaylight:openflow:approved:extensions","conformance-type":"import"},{"name":"nc-notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/nc-notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netmod:notification","conformance-type":"import"},{"name":"ietf-netconf-nmda_2019-01-07","revision":"2019-01-07","schema":"/rests/modules/ietf-netconf-nmda?revision=2019-01-07","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-nmda","conformance-type":"import","feature":["with-defaults","origin"]},{"name":"ietf-tcp-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-common","conformance-type":"import","feature":["keepalives-supported"]},{"name":"network-topology_2013-10-21","revision":"2013-10-21","schema":"/rests/modules/network-topology?revision=2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:network-topology","conformance-type":"import"},{"name":"aaa-encrypt-service-config_2024-02-02","revision":"2024-02-02","schema":"/rests/modules/aaa-encrypt-service-config?revision=2024-02-02","namespace":"config:aaa:authn:encrypt:service:config","conformance-type":"import"},{"name":"openflow-instruction_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-instruction?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:instruction","conformance-type":"import"},{"name":"ietf-tls-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-client","conformance-type":"import","feature":["client-ident-x509-cert","server-auth-x509-cert"]},{"name":"opendaylight-group-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-group-statistics?revision=2013-11-11","namespace":"urn:opendaylight:group:statistics","conformance-type":"import"},{"name":"cluster-admin_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/cluster-admin?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:cluster:admin","conformance-type":"import"},{"name":"opendaylight-flow-statistics_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-flow-statistics?revision=2013-08-19","namespace":"urn:opendaylight:flow:statistics","conformance-type":"import"},{"name":"opendaylight-table-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-table-types?revision=2013-10-26","namespace":"urn:opendaylight:table:types","conformance-type":"import"},{"name":"forwarding-rules-manager-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/forwarding-rules-manager-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:forwardingrules-manager:config","conformance-type":"import"},{"name":"odl-srm-types_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-types?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:types","conformance-type":"import"},{"name":"ietf-x509-cert-to-name_2014-12-10","revision":"2014-12-10","schema":"/rests/modules/ietf-x509-cert-to-name?revision=2014-12-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-x509-cert-to-name","conformance-type":"import"},{"name":"flow-node-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-node-inventory?revision=2013-08-19","namespace":"urn:opendaylight:flow:inventory","conformance-type":"import"},{"name":"flow-errors_2013-11-16","revision":"2013-11-16","schema":"/rests/modules/flow-errors?revision=2013-11-16","namespace":"urn:opendaylight:flow:errors","conformance-type":"import"},{"name":"ietf-netconf_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:netconf:base:1.0","conformance-type":"import","feature":["xpath","url","rollback-on-error","validate","candidate","confirmed-commit","startup","writable-running"]},{"name":"iana-ssh-public-key-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-public-key-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-public-key-algs","conformance-type":"import"},{"name":"aaa-cert-mdsal_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/aaa-cert-mdsal?revision=2016-03-21","namespace":"urn:opendaylight:yang:aaa:cert:mdsal","conformance-type":"import"},{"name":"odl-device-notification_2024-02-18","revision":"2024-02-18","schema":"/rests/modules/odl-device-notification?revision=2024-02-18","namespace":"urn:opendaylight:device:notification","conformance-type":"import"},{"name":"ietf-origin_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-origin?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-origin","conformance-type":"import"},{"name":"openflow-augments_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-augments?revision=2015-02-25","namespace":"urn:opendaylight:openflow:augments","conformance-type":"import"},{"name":"iana-ssh-encryption-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-encryption-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-encryption-algs","conformance-type":"import"},{"name":"ietf-truststore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-truststore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-truststore","conformance-type":"import","feature":["inline-definitions-supported"]},{"name":"distributed-datastore-provider_2025-01-30","revision":"2025-01-30","schema":"/rests/modules/distributed-datastore-provider?revision=2025-01-30","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:distributed-datastore-provider","conformance-type":"import"},{"name":"opendaylight-group-types_2013-10-18","revision":"2013-10-18","schema":"/rests/modules/opendaylight-group-types?revision=2013-10-18","namespace":"urn:opendaylight:group:types","conformance-type":"import"},{"name":"sal-remote-augment_2023-11-03","revision":"2023-11-03","schema":"/rests/modules/sal-remote-augment?revision=2023-11-03","namespace":"urn:sal:restconf:event:subscription","conformance-type":"import"},{"name":"opendaylight-ipv6-arbitrary-bitmask-fields_2016-02-24","revision":"2016-02-24","schema":"/rests/modules/opendaylight-ipv6-arbitrary-bitmask-fields?revision=2016-02-24","namespace":"urn:opendaylight:opendaylight-ipv6-arbitrary-bitmask-fields","conformance-type":"import"},{"name":"sal-flows-batch_2016-03-14","revision":"2016-03-14","schema":"/rests/modules/sal-flows-batch?revision=2016-03-14","namespace":"urn:opendaylight:flows:service","conformance-type":"import"},{"name":"ietf-tls-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-common","conformance-type":"import","feature":["hello-params","tls12","tls13"]},{"name":"openflow-types_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-types?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:types","conformance-type":"import"},{"name":"ietf-netconf-with-defaults_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf-with-defaults?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults","conformance-type":"import"},{"name":"odl-srm-ops_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-ops?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:ops","conformance-type":"import"},{"name":"odl-general-entity_2015-09-30","revision":"2015-09-30","schema":"/rests/modules/odl-general-entity?revision=2015-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:mdsal:core:general-entity","conformance-type":"import"},{"name":"iana-ssh-key-exchange-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-key-exchange-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-key-exchange-algs","conformance-type":"import"},{"name":"node-ssl-connection-error_2019-07-23","revision":"2019-07-23","schema":"/rests/modules/node-ssl-connection-error?revision=2019-07-23","namespace":"urn:opendaylight:node-ssl-connection-error:service","conformance-type":"import"},{"name":"openflow-protocol_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-protocol?revision=2013-07-31","namespace":"urn:opendaylight:openflow:protocol","conformance-type":"import"},{"name":"ietf-udp-server_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-server?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-server","conformance-type":"import"},{"name":"ietf-keystore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-keystore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-keystore","conformance-type":"import","feature":["asymmetric-keys","inline-definitions-supported"]},{"name":"aaa_2016-12-14","revision":"2016-12-14","schema":"/rests/modules/aaa?revision=2016-12-14","namespace":"urn:opendaylight:params:xml:ns:yang:aaa","conformance-type":"import"},{"name":"aaa-cert-rpc_2015-12-15","revision":"2015-12-15","schema":"/rests/modules/aaa-cert-rpc?revision=2015-12-15","namespace":"urn:opendaylight:yang:aaa:cert:rpc","conformance-type":"import"},{"name":"system-notifications_2013-09-27","revision":"2013-09-27","schema":"/rests/modules/system-notifications?revision=2013-09-27","namespace":"urn:opendaylight:openflow:system","conformance-type":"import"},{"name":"sal-flat-batch_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/sal-flat-batch?revision=2016-03-21","namespace":"urn:opendaylight:flat-batch:service","conformance-type":"import"},{"name":"notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netconf:notification:1.0","conformance-type":"import"},{"name":"sal-remote_2014-01-14","revision":"2014-01-14","schema":"/rests/modules/sal-remote?revision=2014-01-14","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:remote","conformance-type":"import"},{"name":"yang-ext_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/yang-ext?revision=2013-07-09","namespace":"urn:opendaylight:yang:extension:yang-ext","conformance-type":"import"},{"name":"opendaylight-multipart-types_2017-01-12","revision":"2017-01-12","schema":"/rests/modules/opendaylight-multipart-types?revision=2017-01-12","namespace":"urn:opendaylight:multipart:types","conformance-type":"import"},{"name":"opendaylight-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-inventory?revision=2013-08-19","namespace":"urn:opendaylight:inventory","conformance-type":"import"},{"name":"sal-queue_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-queue?revision=2015-03-05","namespace":"urn:opendaylight:queue:service","conformance-type":"import"},{"name":"sal-groups-batch_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/sal-groups-batch?revision=2016-03-15","namespace":"urn:opendaylight:groups:service","conformance-type":"import"},{"name":"arbitrator-reconcile_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/arbitrator-reconcile?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:arbitrator-reconcile:service","conformance-type":"import"},{"name":"ietf-yang-metadata_2016-08-05","revision":"2016-08-05","schema":"/rests/modules/ietf-yang-metadata?revision=2016-08-05","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-metadata","conformance-type":"import"},{"name":"opendaylight-arbitrary-bitmask-fields_2016-01-30","revision":"2016-01-30","schema":"/rests/modules/opendaylight-arbitrary-bitmask-fields?revision=2016-01-30","namespace":"urn:opendaylight:arbitrary:bitmask:fields","conformance-type":"import"},{"name":"ietf-udp-client_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-client?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-client","conformance-type":"import","feature":["local-binding"]},{"name":"opendaylight-meter-types_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/opendaylight-meter-types?revision=2013-09-18","namespace":"urn:opendaylight:meter:types","conformance-type":"import"},{"name":"opendaylight-action-types_2013-11-12","revision":"2013-11-12","schema":"/rests/modules/opendaylight-action-types?revision=2013-11-12","namespace":"urn:opendaylight:action:types","conformance-type":"import"},{"name":"sal-role_2015-07-27","revision":"2015-07-27","schema":"/rests/modules/sal-role?revision=2015-07-27","namespace":"urn:opendaylight:role:service","conformance-type":"import"},{"name":"openflow-provider-config_2016-05-10","revision":"2016-05-10","schema":"/rests/modules/openflow-provider-config?revision=2016-05-10","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:provider:config","conformance-type":"import"},{"name":"odl-serviceutils-upgrade_2018-07-02","revision":"2018-07-02","schema":"/rests/modules/odl-serviceutils-upgrade?revision=2018-07-02","namespace":"urn:opendaylight:serviceutils:upgrade","conformance-type":"import"},{"name":"opendaylight-match-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-match-types?revision=2013-10-26","namespace":"urn:opendaylight:model:match:types","conformance-type":"import"},{"name":"ietf-restconf-server_2024-08-14","revision":"2024-08-14","schema":"/rests/modules/ietf-restconf-server?revision=2024-08-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-server","conformance-type":"import","feature":["http-listen","https-listen"]},{"name":"reconciliation-result-state_2017-07-13","revision":"2017-07-13","schema":"/rests/modules/reconciliation-result-state?revision=2017-07-13","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:rf:state","conformance-type":"import"},{"name":"onf-extensions_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/onf-extensions?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf","conformance-type":"import"},{"name":"sal-table_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/sal-table?revision=2013-10-26","namespace":"urn:opendaylight:table:service","conformance-type":"import"},{"name":"iana-http-versions_2026-02-04","revision":"2026-02-04","schema":"/rests/modules/iana-http-versions?revision=2026-02-04","namespace":"urn:ietf:params:xml:ns:yang:iana-http-versions","conformance-type":"import"},{"name":"opendaylight-direct-statistics_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/opendaylight-direct-statistics?revision=2016-05-11","namespace":"urn:opendaylight:direct:statistics","conformance-type":"import"},{"name":"opendaylight-port-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-port-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:port","conformance-type":"import"},{"name":"sal-async-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/sal-async-config?revision=2017-06-19","namespace":"urn:opendaylight:async-config:service","conformance-type":"import"},{"name":"aaa-password-service-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-password-service-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:password:service:config","conformance-type":"import"},{"name":"ietf-yang-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-yang-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-types","conformance-type":"import"},{"name":"opendaylight-queue-statistics_2013-12-16","revision":"2013-12-16","schema":"/rests/modules/opendaylight-queue-statistics?revision=2013-12-16","namespace":"urn:opendaylight:queue:statistics","conformance-type":"import"},{"name":"sal-bundle_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/sal-bundle?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf:bundle:service","conformance-type":"import"},{"name":"ietf-restconf-subscribed-notifications_2019-11-17","revision":"2019-11-17","schema":"/rests/modules/ietf-restconf-subscribed-notifications?revision=2019-11-17","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-subscribed-notifications","conformance-type":"import"},{"name":"sal-meters-batch_2016-03-16","revision":"2016-03-16","schema":"/rests/modules/sal-meters-batch?revision=2016-03-16","namespace":"urn:opendaylight:meters:service","conformance-type":"import"},{"name":"odl-entity-owners","revision":"","schema":"/rests/modules/odl-entity-owners","namespace":"urn:opendaylight:params:xml:ns:yang:controller:entity-owners","conformance-type":"import"},{"name":"sal-experimenter-mp-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-mp-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-mp-message:service","conformance-type":"import"},{"name":"packet-processing_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/packet-processing?revision=2013-07-09","namespace":"urn:opendaylight:packet:service","conformance-type":"import"},{"name":"openflow-configuration_2014-06-30","revision":"2014-06-30","schema":"/rests/modules/openflow-configuration?revision=2014-06-30","namespace":"urn:opendaylight:openflow:config","conformance-type":"import"},{"name":"odl-srm-rpcs_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-rpcs?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:rpc","conformance-type":"import"},{"name":"ietf-netconf-acm_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-netconf-acm?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-acm","conformance-type":"import"},{"name":"iana-crypt-hash_2014-08-06","revision":"2014-08-06","schema":"/rests/modules/iana-crypt-hash?revision=2014-08-06","namespace":"urn:ietf:params:xml:ns:yang:iana-crypt-hash","conformance-type":"import","feature":["crypt-hash-sha-512","crypt-hash-sha-256","crypt-hash-md5"]},{"name":"openflow-extensible-match_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-extensible-match?revision=2015-02-25","namespace":"urn:opendaylight:openflow:oxm","conformance-type":"import"}],"module-set-id":"2"}}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:02:07.663728" elapsed="0.004663"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:07.663407" elapsed="0.005037"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:07.663377" elapsed="0.005102"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:02:07.672084" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:02:07.668913" elapsed="0.003235"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:07.668591" elapsed="0.003624"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:07.668566" elapsed="0.003683"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:02:07.673041" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:02:07.672512" elapsed="0.000566"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:07.673593" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:07.673252" elapsed="0.000422"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:02:07.674459" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:02:07.673958" elapsed="0.000537"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:07.673706" elapsed="0.000839"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:07.673224" elapsed="0.001351"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:02:07.675228" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:02:07.674828" elapsed="0.000427"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:07.675583" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:07.675346" elapsed="0.000294"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:02:07.676132" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:02:07.675825" elapsed="0.000346"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:07.675663" elapsed="0.000546"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:07.675327" elapsed="0.000904"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:02:07.676401" elapsed="0.000348"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T01:02:07.677237" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:02:07.676933" elapsed="0.000330"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T01:02:07.677438" elapsed="0.002340"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T01:02:07.662073" elapsed="0.017827"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T01:02:07.680272" elapsed="0.000047"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:02:07.680029" elapsed="0.000353"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:07.679979" elapsed="0.000439"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T01:02:07.689290" level="INFO">${text_normalized} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T01:02:07.681144" elapsed="0.008195"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T01:02:07.689416" elapsed="0.000064"/>
</return>
<msg time="2026-04-08T01:02:07.689735" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T01:02:07.625762" elapsed="0.064079"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T01:02:07.690330" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T01:02:07.690507" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="PASS" start="2026-04-08T01:02:07.482946" elapsed="0.207588"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Json_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:07.690896" elapsed="0.000033"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:07.690618" elapsed="0.000474"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:07.690601" elapsed="0.000518"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T01:02:07.691153" elapsed="0.000041"/>
</return>
<arg>session=${session}</arg>
<arg>folder=${RESTCONF_MODULES_DIR}</arg>
<arg>verify=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Add arguments sensible for JSON data, return Get_Templated response text.
Optionally, verification against JSON data (may be iterated) is called.
Only subset of JSON data is verified and returned if JMES path is specified in
file ${folder}/jmespath.expr.</doc>
<status status="PASS" start="2026-04-08T01:02:07.478726" elapsed="0.212570"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:07.474498" elapsed="0.216842"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:07.474481" elapsed="0.216882"/>
</if>
<kw name="Resolve_Shard_Type_Class" owner="ClusterManagement">
<if>
<branch type="IF" condition="'${shard_type}' == 'config'">
<return>
<value>DistributedConfigDatastore</value>
<status status="NOT RUN" start="2026-04-08T01:02:07.691968" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:02:07.691859" elapsed="0.000153"/>
</branch>
<branch type="ELSE IF" condition="'${shard_type}' == 'operational'">
<return>
<value>DistributedOperationalDatastore</value>
<status status="PASS" start="2026-04-08T01:02:07.692136" elapsed="0.000050"/>
</return>
<status status="PASS" start="2026-04-08T01:02:07.692034" elapsed="0.000186"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:07.691839" elapsed="0.000406"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized shard type: ${shard_type}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:07.692392" elapsed="0.000021"/>
</kw>
<msg time="2026-04-08T01:02:07.692512" level="INFO">${type_class} = DistributedOperationalDatastore</msg>
<var>${type_class}</var>
<arg>shard_type=${shard_type}</arg>
<doc>Simple lookup for class name corresponding to desired type.</doc>
<status status="PASS" start="2026-04-08T01:02:07.691590" elapsed="0.000947"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:02:07.693079" level="INFO">${cluster_index} = 3</msg>
<var>${cluster_index}</var>
<arg>${member_index}+${NODE_ROLE_INDEX_START}-1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:02:07.692708" elapsed="0.000398"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:02:07.693751" level="INFO">${uri} = jolokia/read/org.opendaylight.controller:Category=Shards,name=member-3-shard-topology-operational,type=DistributedOperationalDatastore</msg>
<var>${uri}</var>
<arg>${JOLOKIA_READ_URI}:Category=Shards,name=member-${cluster_index}-shard-${shard_name}-${shard_type},type=${type_class}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:02:07.693281" elapsed="0.000497"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:02:07.699485" level="INFO">jolokia/read/org.opendaylight.controller:Category=Shards,name=member-3-shard-topology-operational,type=DistributedOperationalDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:02:07.699025" elapsed="0.000507"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:02:07.700135" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:02:07.699689" elapsed="0.000578"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T01:02:07.721724" level="INFO">GET Request : url=http://10.30.171.110:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-3-shard-topology-operational,type=DistributedOperationalDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-3-shard-topology-operational,type=DistributedOperationalDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T01:02:07.721941" level="INFO">GET Response : url=http://10.30.171.110:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-3-shard-topology-operational,type=DistributedOperationalDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Wed, 08 Apr 2026 01:02:07 GMT', 'Expires': 'Wed, 08 Apr 2026 00:02:07 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-3-shard-topology-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"ReadWriteTransactionCount":0,"SnapshotIndex":94,"InMemoryJournalLogSize":1,"ReplicatedToAllIndex":94,"Leader":"member-1-shard-topology-operational","LastIndex":95,"RaftState":"Follower","LastApplied":95,"LastCommittedTransactionTime":"1970-01-01 00:00:00.000","PeerAddresses":"member-1-shard-topology-operational: pekko:\/\/opendaylight-cluster-data@10.30.170.48:2550\/user\/shardmanager-operational\/member-1-shard-topology-operational, member-2-shard-topology-operational: pekko:\/\/opendaylight-cluster-data@10.30.170.131:2550\/user\/shardmanager-operational\/member-2-shard-topology-operational","LastLogIndex":95,"LastLeadershipChangeTime":"2026-04-08 00:57:11.095","FollowerInitialSyncStatus":true,"FollowerInfo":[],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"759.6 μs","CurrentTerm":5,"LastTerm":5,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-topology-operational","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":0,"TxCohortCacheSize":0,"PeerVotingStates":"member-1-shard-topology-operational: true, member-2-shard-topology-operational: true","LastLogTerm":5,"StatRetrievalError":null,"CommitIndex":95,"SnapshotTerm":5,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-3-shard-topology-operational","LeadershipChangeCount":1,"InMemoryJournalDataSize":9271},"timestamp":1775610127,"status":200} 
 </msg>
<msg time="2026-04-08T01:02:07.722251" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T01:02:07.712288" elapsed="0.010114"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:07.700337" elapsed="0.022423"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:07.723023" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:07.722803" elapsed="0.000689"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:07.700318" elapsed="0.023210"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:02:07.730297" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-3-shard-topology-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"ReadWriteTransactionCount":0,"SnapshotIndex":94,"InMemoryJournalLogSize":1,"ReplicatedToAllIndex":94,"Leader":"member-1-shard-topology-operational","LastIndex":95,"RaftState":"Follower","LastApplied":95,"LastCommittedTransactionTime":"1970-01-01 00:00:00.000","PeerAddresses":"member-1-shard-topology-operational: pekko:\/\/opendaylight-cluster-data@10.30.170.48:2550\/user\/shardmanager-operational\/member-1-shard-topology-operational, member-2-shard-topology-operational: pekko:\/\/opendaylight-cluster-data@10.30.170.131:2550\/user\/shardmanager-operational\/member-2-shard-topology-operational","LastLogIndex":95,"LastLeadershipChangeTime":"2026-04-08 00:57:11.095","FollowerInitialSyncStatus":true,"FollowerInfo":[],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"759.6 μs","CurrentTerm":5,"LastTerm":5,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-topology-operational","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":0,"TxCohortCacheSize":0,"PeerVotingStates":"member-1-shard-topology-operational: true, member-2-shard-topology-operational: true","LastLogTerm":5,"StatRetrievalError":null,"CommitIndex":95,"SnapshotTerm":5,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-3-shard-topology-operational","LeadershipChangeCount":1,"InMemoryJournalDataSize":9271},"timestamp":1775610127,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:02:07.726560" elapsed="0.003899"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:07.725223" elapsed="0.005307"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:07.725195" elapsed="0.005389"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:02:07.735479" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:02:07.732054" elapsed="0.003564"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:07.730701" elapsed="0.004986"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:07.730675" elapsed="0.005065"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:02:07.737753" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:02:07.736678" elapsed="0.001162"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:07.738780" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:07.738097" elapsed="0.000805"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:02:07.740203" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:02:07.739477" elapsed="0.000790"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:07.738954" elapsed="0.001384"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:07.738068" elapsed="0.002318"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:02:07.742408" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:02:07.741308" elapsed="0.001188"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:07.743292" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:07.742728" elapsed="0.000651"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:02:07.744259" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:02:07.743747" elapsed="0.000557"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:07.743416" elapsed="0.000938"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:07.742700" elapsed="0.001689"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:02:07.744611" elapsed="0.000643"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T01:02:07.746081" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:02:07.745564" elapsed="0.000842"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T01:02:07.746703" elapsed="0.002452"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T01:02:07.724233" elapsed="0.025099"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T01:02:07.749533" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:02:07.749405" elapsed="0.000175"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:07.749386" elapsed="0.000215"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T01:02:07.753313" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-3-shard-topology-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T01:02:07.749747" elapsed="0.003596"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T01:02:07.753395" elapsed="0.000033"/>
</return>
<msg time="2026-04-08T01:02:07.753554" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-3-shard-topology-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T01:02:07.694754" elapsed="0.058827"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T01:02:07.753673" elapsed="0.000027"/>
</return>
<msg time="2026-04-08T01:02:07.753823" level="INFO">${data_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-3-shard-topology-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp...</msg>
<var>${data_text}</var>
<arg>uri=${uri}</arg>
<arg>session=${session}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-08T01:02:07.694009" elapsed="0.059845"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:02:07.755019" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-3-shard-topology-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 17756101...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:02:07.754549" elapsed="0.000499"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-08T01:02:07.755097" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T01:02:07.755286" level="INFO">${data_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-3-shard-topology-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 17756101...</msg>
<var>${data_object}</var>
<arg>${data_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-08T01:02:07.754101" elapsed="0.001212"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:02:07.755670" level="INFO">${value} = {'AbortTransactionsCount': 0, 'CommitIndex': 95, 'CommittedTransactionsCount': 0, 'CurrentTerm': 5, 'FailedReadTransactionsCount': 0, 'FailedTransactionsCount': 0, 'FollowerInfo': [], 'FollowerInitial...</msg>
<var>${value}</var>
<arg>${data_object}</arg>
<arg>value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:02:07.755471" elapsed="0.000226"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:02:07.756050" level="INFO">${raft_property} = Follower</msg>
<var>${raft_property}</var>
<arg>${value}</arg>
<arg>${property}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:02:07.755851" elapsed="0.000224"/>
</kw>
<return>
<value>${raft_property}</value>
<status status="PASS" start="2026-04-08T01:02:07.756271" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T01:02:07.756421" level="INFO">${raft_state} = Follower</msg>
<var>${raft_state}</var>
<arg>RaftState</arg>
<arg>${shard_name}</arg>
<arg>${shard_type}</arg>
<arg>${member_index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft property.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T01:02:07.472886" elapsed="0.283559"/>
</kw>
<return>
<value>${raft_state}</value>
<status status="PASS" start="2026-04-08T01:02:07.756501" elapsed="0.000026"/>
</return>
<msg time="2026-04-08T01:02:07.756645" level="INFO">${raft_state} = Follower</msg>
<var>${raft_state}</var>
<arg>shard_name=${shard_name}</arg>
<arg>shard_type=${ds_type}</arg>
<arg>member_index=${index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft status.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T01:02:07.472149" elapsed="0.284520"/>
</kw>
<if>
<branch type="IF" condition="'Follower' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${follower_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-08T01:02:07.756964" elapsed="0.000187"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:07.756749" elapsed="0.000657"/>
</branch>
<branch type="ELSE IF" condition="'Leader' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${leader_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:07.757585" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:07.757433" elapsed="0.000207"/>
</branch>
<branch type="ELSE IF" condition="${validate}">
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized Raft state: ${raft_state}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:07.757804" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:07.757663" elapsed="0.000196"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:07.756732" elapsed="0.001160"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T01:02:07.471983" elapsed="0.285935"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-08T01:02:06.907703" elapsed="0.850249"/>
</for>
<return>
<value>${leader_list}</value>
<value>${follower_list}</value>
<status status="PASS" start="2026-04-08T01:02:07.757994" elapsed="0.000031"/>
</return>
<msg time="2026-04-08T01:02:07.758257" level="INFO">${leader_list} = [1]</msg>
<msg time="2026-04-08T01:02:07.758305" level="INFO">${follower_list} = [2, 3]</msg>
<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="PASS" start="2026-04-08T01:02:06.903719" elapsed="0.854610"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T01:02:07.758772" level="INFO">Length is 1.</msg>
<msg time="2026-04-08T01:02:07.758848" level="INFO">${leader_count} = 1</msg>
<var>${leader_count}</var>
<arg>${leader_list}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T01:02:07.758505" elapsed="0.000367"/>
</kw>
<if>
<branch type="IF" condition="${leader_count} &lt; 1">
<kw name="Fail" owner="BuiltIn">
<arg>No leader found.</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:07.759173" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:07.758942" elapsed="0.000295"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:07.758924" elapsed="0.000336"/>
</if>
<kw name="Length Should Be" owner="BuiltIn">
<msg time="2026-04-08T01:02:07.762792" level="INFO">Length is 1.</msg>
<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="PASS" start="2026-04-08T01:02:07.759398" elapsed="0.003442"/>
</kw>
<kw name="Get From List" owner="Collections">
<msg time="2026-04-08T01:02:07.763248" level="INFO">${leader} = 1</msg>
<var>${leader}</var>
<arg>${leader_list}</arg>
<arg>0</arg>
<doc>Returns the value specified with an ``index`` from ``list``.</doc>
<status status="PASS" start="2026-04-08T01:02:07.763044" elapsed="0.000230"/>
</kw>
<return>
<value>${leader}</value>
<value>${follower_list}</value>
<status status="PASS" start="2026-04-08T01:02:07.763321" elapsed="0.000028"/>
</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="PASS" start="2026-04-08T01:02:06.901120" elapsed="0.862355"/>
</kw>
<var name="${shard_name}">topology</var>
<status status="PASS" start="2026-04-08T01:02:06.900898" elapsed="0.862623"/>
</iter>
<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-04-08T01:02:07.767943" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:02:07.767560" elapsed="0.000410"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:02:07.768475" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:02:07.768129" elapsed="0.000372"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T01:02:07.768545" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T01:02:07.768697" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T01:02:07.767189" elapsed="0.001533"/>
</kw>
<kw name="Sort List" owner="Collections">
<arg>${index_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="PASS" start="2026-04-08T01:02:07.768875" elapsed="0.000151"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:02:07.769535" level="INFO">${ds_type} = operational</msg>
<var>${ds_type}</var>
<arg>'${shard_type}' != 'config'</arg>
<arg>operational</arg>
<arg>config</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:02:07.769202" elapsed="0.000359"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:02:07.769995" level="INFO">${leader_list} = []</msg>
<var>${leader_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:02:07.769721" elapsed="0.000300"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:02:07.770421" level="INFO">${follower_list} = []</msg>
<var>${follower_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:02:07.770186" elapsed="0.000261"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_Raft_State_Of_Shard_At_Member" owner="ClusterManagement">
<kw name="Get_Raft_Property_From_Shard_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:02:07.773184" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:02:07.772836" elapsed="0.000378"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T01:02:07.773261" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T01:02:07.773408" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T01:02:07.772495" elapsed="0.000938"/>
</kw>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Get_As_Json_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:02:07.860137" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:02:07.859761" elapsed="0.000419"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T01:02:07.860938" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T01:02:07.860688" elapsed="0.000327">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-08T01:02:07.861108" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T01:02:07.860350" elapsed="0.000783"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:02:07.861701" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:02:07.861316" elapsed="0.000412"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T01:02:07.862052" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-08T01:02:07.862219" level="INFO">${template} = /rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T01:02:07.861913" elapsed="0.000333"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:02:07.862701" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:02:07.862453" elapsed="0.000292"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:02:07.863707" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:02:07.863455" elapsed="0.000295"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-08T01:02:07.864195" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-08T01:02:07.863912" elapsed="0.000311"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:07.864545" 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-04-08T01:02:07.864747" elapsed="0.000024"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:07.864922" elapsed="0.000020"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-08T01:02:07.864409" elapsed="0.000569"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-08T01:02:07.864272" elapsed="0.000736"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-08T01:02:07.865051" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T01:02:07.865227" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-08T01:02:07.863114" elapsed="0.002138"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:07.862815" elapsed="0.002470"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:07.865458" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:07.865310" elapsed="0.000202"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:07.862796" elapsed="0.002737"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:02:07.866118" level="INFO">${final_text} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:02:07.865676" elapsed="0.000469"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T01:02:07.866209" 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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="PASS" start="2026-04-08T01:02:07.859138" elapsed="0.007194"/>
</kw>
<msg time="2026-04-08T01:02:07.866384" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:02:07.846302" elapsed="0.020161"/>
</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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:07.879409" elapsed="0.000041"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:07.892109" elapsed="0.000041"/>
</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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:07.904691" elapsed="0.000041"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:07.905492" elapsed="0.000036"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:07.906293" elapsed="0.000037"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:07.906847" elapsed="0.000054"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:07.906699" elapsed="0.000240"/>
</branch>
<status status="NOT RUN" start="2026-04-08T01:02:07.906683" elapsed="0.000280"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:07.907125" elapsed="0.000022"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:07.907331" elapsed="0.000021"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:07.907517" elapsed="0.000021"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-08T01:02:07.906633" elapsed="0.000959"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-08T01:02:07.906413" elapsed="0.001218"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:07.908385" elapsed="0.000035"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-08T01:02:07.908503" elapsed="0.000047"/>
</return>
<msg time="2026-04-08T01:02:07.908721" level="INFO">${uri} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-08T01:02:07.840123" elapsed="0.068704"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T01:02:07.911688" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T01:02:07.911434" elapsed="0.000319">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-08T01:02:07.911946" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T01:02:07.910981" elapsed="0.001009"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:07.912520" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:07.912123" elapsed="0.000465"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:02:07.913208" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:02:07.912898" elapsed="0.000337"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:07.912627" elapsed="0.000653"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:07.912072" elapsed="0.001246"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:02:07.916555" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:02:07.914074" elapsed="0.002527"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-08T01:02:07.916677" elapsed="0.000062"/>
</return>
<msg time="2026-04-08T01:02:07.917066" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T01:02:07.909836" elapsed="0.007354"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T01:02:07.920092" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T01:02:07.919839" elapsed="0.000331">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-08T01:02:07.920362" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T01:02:07.919395" elapsed="0.001012"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-08T01:02:07.920785" elapsed="0.000078"/>
</return>
<status status="PASS" start="2026-04-08T01:02:07.920537" elapsed="0.000392"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:07.920486" elapsed="0.000481"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:07.921757" elapsed="0.000042"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:07.922552" elapsed="0.000037"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-08T01:02:07.922662" elapsed="0.000047"/>
</return>
<msg time="2026-04-08T01:02:07.924987" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T01:02:07.918015" elapsed="0.007080"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:02:07.929208" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:02:07.928808" elapsed="0.000502"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:02:07.930451" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:02:07.930047" elapsed="0.000502"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T01:02:07.940334" level="INFO">GET Request : url=http://10.30.170.48:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 path_url=/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01s3bfo0y24i1es90l47mavglv0.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T01:02:07.940762" level="INFO">GET Response : url=http://10.30.170.48:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Transfer-Encoding': 'chunked'} 
 body={"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","encrypted-passwords","hidden-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-private-keys","asymmetrically-encrypted-value-format","cleartext-private-keys","cms-encrypted-data-format","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["client-ident-hostbased","ssh-client-keepalives","client-ident-password","client-ident-publickey"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-ex... (set the log level to DEBUG or TRACE to see the full content) 
 </msg>
<msg time="2026-04-08T01:02:07.940976" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T01:02:07.932842" elapsed="0.008161"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:07.930676" elapsed="0.010382"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:07.941369" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:07.941102" elapsed="0.000342"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:07.930625" elapsed="0.010856"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:02:07.946089" level="INFO">{"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","encrypted-passwords","hidden-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-private-keys","asymmetrically-encrypted-value-format","cleartext-private-keys","cms-encrypted-data-format","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["client-ident-hostbased","ssh-client-keepalives","client-ident-password","client-ident-publickey"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-experimenter-types?revision=2015-10-20","namespace":"urn:opendaylight:openflowplugin:experimenter:types","conformance-type":"import"},{"name":"ietf-ip_2018-02-22","revision":"2018-02-22","schema":"/rests/modules/ietf-ip?revision=2018-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-ip","conformance-type":"import","feature":["ipv6-privacy-autoconf","ipv4-non-contiguous-netmasks"]},{"name":"ietf-tcp-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-client","conformance-type":"import","feature":["local-binding-supported","tcp-client-keepalives"]},{"name":"node-config_2014-10-15","revision":"2014-10-15","schema":"/rests/modules/node-config?revision=2014-10-15","namespace":"urn:opendaylight:module:config","conformance-type":"import"},{"name":"ietf-restconf_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf","conformance-type":"import"},{"name":"ietf-datastores_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-datastores?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-datastores","conformance-type":"import"},{"name":"ietf-yang-patch_2017-02-22","revision":"2017-02-22","schema":"/rests/modules/ietf-yang-patch?revision=2017-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-patch","conformance-type":"import"},{"name":"sal-group_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-group?revision=2013-09-18","namespace":"urn:opendaylight:group:service","conformance-type":"import"},{"name":"odl-codegen-extensions_2024-06-27","revision":"2024-06-27","schema":"/rests/modules/odl-codegen-extensions?revision=2024-06-27","namespace":"urn:opendaylight:yang:extension:codegen","conformance-type":"import"},{"name":"sal-meter_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-meter?revision=2013-09-18","namespace":"urn:opendaylight:meter:service","conformance-type":"import"},{"name":"ietf-interfaces_2018-02-20","revision":"2018-02-20","schema":"/rests/modules/ietf-interfaces?revision=2018-02-20","namespace":"urn:ietf:params:xml:ns:yang:ietf-interfaces","conformance-type":"import","feature":["pre-provisioning","if-mib","arbitrary-names"]},{"name":"opendaylight-l2-types_2013-08-27","revision":"2013-08-27","schema":"/rests/modules/opendaylight-l2-types?revision=2013-08-27","namespace":"urn:opendaylight:l2:types","conformance-type":"import"},{"name":"opendaylight-flow-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-flow-types?revision=2013-10-26","namespace":"urn:opendaylight:flow:types","conformance-type":"import"},{"name":"lldp-speaker-config_2016-05-12","revision":"2016-05-12","schema":"/rests/modules/lldp-speaker-config?revision=2016-05-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker:config","conformance-type":"import"},{"name":"aaa-cert_2015-11-26","revision":"2015-11-26","schema":"/rests/modules/aaa-cert?revision=2015-11-26","namespace":"urn:opendaylight:yang:aaa:cert","conformance-type":"import"},{"name":"openflow-action_2015-02-03","revision":"2015-02-03","schema":"/rests/modules/openflow-action?revision=2015-02-03","namespace":"urn:opendaylight:openflow:common:action","conformance-type":"import"},{"name":"openflow-approved-extensions_2016-08-02","revision":"2016-08-02","schema":"/rests/modules/openflow-approved-extensions?revision=2016-08-02","namespace":"urn:opendaylight:openflow:approved:extensions","conformance-type":"import"},{"name":"nc-notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/nc-notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netmod:notification","conformance-type":"import"},{"name":"ietf-netconf-nmda_2019-01-07","revision":"2019-01-07","schema":"/rests/modules/ietf-netconf-nmda?revision=2019-01-07","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-nmda","conformance-type":"import","feature":["with-defaults","origin"]},{"name":"ietf-tcp-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-common","conformance-type":"import","feature":["keepalives-supported"]},{"name":"network-topology_2013-10-21","revision":"2013-10-21","schema":"/rests/modules/network-topology?revision=2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:network-topology","conformance-type":"import"},{"name":"aaa-encrypt-service-config_2024-02-02","revision":"2024-02-02","schema":"/rests/modules/aaa-encrypt-service-config?revision=2024-02-02","namespace":"config:aaa:authn:encrypt:service:config","conformance-type":"import"},{"name":"openflow-instruction_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-instruction?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:instruction","conformance-type":"import"},{"name":"ietf-tls-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-client","conformance-type":"import","feature":["client-ident-x509-cert","server-auth-x509-cert"]},{"name":"opendaylight-group-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-group-statistics?revision=2013-11-11","namespace":"urn:opendaylight:group:statistics","conformance-type":"import"},{"name":"cluster-admin_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/cluster-admin?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:cluster:admin","conformance-type":"import"},{"name":"opendaylight-flow-statistics_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-flow-statistics?revision=2013-08-19","namespace":"urn:opendaylight:flow:statistics","conformance-type":"import"},{"name":"opendaylight-table-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-table-types?revision=2013-10-26","namespace":"urn:opendaylight:table:types","conformance-type":"import"},{"name":"forwarding-rules-manager-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/forwarding-rules-manager-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:forwardingrules-manager:config","conformance-type":"import"},{"name":"odl-srm-types_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-types?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:types","conformance-type":"import"},{"name":"ietf-x509-cert-to-name_2014-12-10","revision":"2014-12-10","schema":"/rests/modules/ietf-x509-cert-to-name?revision=2014-12-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-x509-cert-to-name","conformance-type":"import"},{"name":"flow-node-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-node-inventory?revision=2013-08-19","namespace":"urn:opendaylight:flow:inventory","conformance-type":"import"},{"name":"flow-errors_2013-11-16","revision":"2013-11-16","schema":"/rests/modules/flow-errors?revision=2013-11-16","namespace":"urn:opendaylight:flow:errors","conformance-type":"import"},{"name":"ietf-netconf_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:netconf:base:1.0","conformance-type":"import","feature":["xpath","url","rollback-on-error","validate","candidate","confirmed-commit","startup","writable-running"]},{"name":"iana-ssh-public-key-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-public-key-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-public-key-algs","conformance-type":"import"},{"name":"aaa-cert-mdsal_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/aaa-cert-mdsal?revision=2016-03-21","namespace":"urn:opendaylight:yang:aaa:cert:mdsal","conformance-type":"import"},{"name":"odl-device-notification_2024-02-18","revision":"2024-02-18","schema":"/rests/modules/odl-device-notification?revision=2024-02-18","namespace":"urn:opendaylight:device:notification","conformance-type":"import"},{"name":"ietf-origin_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-origin?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-origin","conformance-type":"import"},{"name":"openflow-augments_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-augments?revision=2015-02-25","namespace":"urn:opendaylight:openflow:augments","conformance-type":"import"},{"name":"iana-ssh-encryption-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-encryption-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-encryption-algs","conformance-type":"import"},{"name":"ietf-truststore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-truststore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-truststore","conformance-type":"import","feature":["inline-definitions-supported"]},{"name":"distributed-datastore-provider_2025-01-30","revision":"2025-01-30","schema":"/rests/modules/distributed-datastore-provider?revision=2025-01-30","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:distributed-datastore-provider","conformance-type":"import"},{"name":"opendaylight-group-types_2013-10-18","revision":"2013-10-18","schema":"/rests/modules/opendaylight-group-types?revision=2013-10-18","namespace":"urn:opendaylight:group:types","conformance-type":"import"},{"name":"sal-remote-augment_2023-11-03","revision":"2023-11-03","schema":"/rests/modules/sal-remote-augment?revision=2023-11-03","namespace":"urn:sal:restconf:event:subscription","conformance-type":"import"},{"name":"opendaylight-ipv6-arbitrary-bitmask-fields_2016-02-24","revision":"2016-02-24","schema":"/rests/modules/opendaylight-ipv6-arbitrary-bitmask-fields?revision=2016-02-24","namespace":"urn:opendaylight:opendaylight-ipv6-arbitrary-bitmask-fields","conformance-type":"import"},{"name":"sal-flows-batch_2016-03-14","revision":"2016-03-14","schema":"/rests/modules/sal-flows-batch?revision=2016-03-14","namespace":"urn:opendaylight:flows:service","conformance-type":"import"},{"name":"ietf-tls-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-common","conformance-type":"import","feature":["hello-params","tls12","tls13"]},{"name":"openflow-types_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-types?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:types","conformance-type":"import"},{"name":"ietf-netconf-with-defaults_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf-with-defaults?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults","conformance-type":"import"},{"name":"odl-srm-ops_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-ops?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:ops","conformance-type":"import"},{"name":"odl-general-entity_2015-09-30","revision":"2015-09-30","schema":"/rests/modules/odl-general-entity?revision=2015-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:mdsal:core:general-entity","conformance-type":"import"},{"name":"iana-ssh-key-exchange-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-key-exchange-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-key-exchange-algs","conformance-type":"import"},{"name":"node-ssl-connection-error_2019-07-23","revision":"2019-07-23","schema":"/rests/modules/node-ssl-connection-error?revision=2019-07-23","namespace":"urn:opendaylight:node-ssl-connection-error:service","conformance-type":"import"},{"name":"openflow-protocol_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-protocol?revision=2013-07-31","namespace":"urn:opendaylight:openflow:protocol","conformance-type":"import"},{"name":"ietf-udp-server_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-server?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-server","conformance-type":"import"},{"name":"ietf-keystore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-keystore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-keystore","conformance-type":"import","feature":["asymmetric-keys","inline-definitions-supported"]},{"name":"aaa_2016-12-14","revision":"2016-12-14","schema":"/rests/modules/aaa?revision=2016-12-14","namespace":"urn:opendaylight:params:xml:ns:yang:aaa","conformance-type":"import"},{"name":"aaa-cert-rpc_2015-12-15","revision":"2015-12-15","schema":"/rests/modules/aaa-cert-rpc?revision=2015-12-15","namespace":"urn:opendaylight:yang:aaa:cert:rpc","conformance-type":"import"},{"name":"system-notifications_2013-09-27","revision":"2013-09-27","schema":"/rests/modules/system-notifications?revision=2013-09-27","namespace":"urn:opendaylight:openflow:system","conformance-type":"import"},{"name":"sal-flat-batch_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/sal-flat-batch?revision=2016-03-21","namespace":"urn:opendaylight:flat-batch:service","conformance-type":"import"},{"name":"notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netconf:notification:1.0","conformance-type":"import"},{"name":"sal-remote_2014-01-14","revision":"2014-01-14","schema":"/rests/modules/sal-remote?revision=2014-01-14","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:remote","conformance-type":"import"},{"name":"yang-ext_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/yang-ext?revision=2013-07-09","namespace":"urn:opendaylight:yang:extension:yang-ext","conformance-type":"import"},{"name":"opendaylight-multipart-types_2017-01-12","revision":"2017-01-12","schema":"/rests/modules/opendaylight-multipart-types?revision=2017-01-12","namespace":"urn:opendaylight:multipart:types","conformance-type":"import"},{"name":"opendaylight-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-inventory?revision=2013-08-19","namespace":"urn:opendaylight:inventory","conformance-type":"import"},{"name":"sal-queue_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-queue?revision=2015-03-05","namespace":"urn:opendaylight:queue:service","conformance-type":"import"},{"name":"sal-groups-batch_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/sal-groups-batch?revision=2016-03-15","namespace":"urn:opendaylight:groups:service","conformance-type":"import"},{"name":"arbitrator-reconcile_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/arbitrator-reconcile?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:arbitrator-reconcile:service","conformance-type":"import"},{"name":"ietf-yang-metadata_2016-08-05","revision":"2016-08-05","schema":"/rests/modules/ietf-yang-metadata?revision=2016-08-05","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-metadata","conformance-type":"import"},{"name":"opendaylight-arbitrary-bitmask-fields_2016-01-30","revision":"2016-01-30","schema":"/rests/modules/opendaylight-arbitrary-bitmask-fields?revision=2016-01-30","namespace":"urn:opendaylight:arbitrary:bitmask:fields","conformance-type":"import"},{"name":"ietf-udp-client_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-client?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-client","conformance-type":"import","feature":["local-binding"]},{"name":"opendaylight-meter-types_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/opendaylight-meter-types?revision=2013-09-18","namespace":"urn:opendaylight:meter:types","conformance-type":"import"},{"name":"opendaylight-action-types_2013-11-12","revision":"2013-11-12","schema":"/rests/modules/opendaylight-action-types?revision=2013-11-12","namespace":"urn:opendaylight:action:types","conformance-type":"import"},{"name":"sal-role_2015-07-27","revision":"2015-07-27","schema":"/rests/modules/sal-role?revision=2015-07-27","namespace":"urn:opendaylight:role:service","conformance-type":"import"},{"name":"openflow-provider-config_2016-05-10","revision":"2016-05-10","schema":"/rests/modules/openflow-provider-config?revision=2016-05-10","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:provider:config","conformance-type":"import"},{"name":"odl-serviceutils-upgrade_2018-07-02","revision":"2018-07-02","schema":"/rests/modules/odl-serviceutils-upgrade?revision=2018-07-02","namespace":"urn:opendaylight:serviceutils:upgrade","conformance-type":"import"},{"name":"opendaylight-match-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-match-types?revision=2013-10-26","namespace":"urn:opendaylight:model:match:types","conformance-type":"import"},{"name":"ietf-restconf-server_2024-08-14","revision":"2024-08-14","schema":"/rests/modules/ietf-restconf-server?revision=2024-08-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-server","conformance-type":"import","feature":["http-listen","https-listen"]},{"name":"reconciliation-result-state_2017-07-13","revision":"2017-07-13","schema":"/rests/modules/reconciliation-result-state?revision=2017-07-13","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:rf:state","conformance-type":"import"},{"name":"onf-extensions_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/onf-extensions?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf","conformance-type":"import"},{"name":"sal-table_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/sal-table?revision=2013-10-26","namespace":"urn:opendaylight:table:service","conformance-type":"import"},{"name":"iana-http-versions_2026-02-04","revision":"2026-02-04","schema":"/rests/modules/iana-http-versions?revision=2026-02-04","namespace":"urn:ietf:params:xml:ns:yang:iana-http-versions","conformance-type":"import"},{"name":"opendaylight-direct-statistics_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/opendaylight-direct-statistics?revision=2016-05-11","namespace":"urn:opendaylight:direct:statistics","conformance-type":"import"},{"name":"opendaylight-port-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-port-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:port","conformance-type":"import"},{"name":"sal-async-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/sal-async-config?revision=2017-06-19","namespace":"urn:opendaylight:async-config:service","conformance-type":"import"},{"name":"aaa-password-service-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-password-service-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:password:service:config","conformance-type":"import"},{"name":"ietf-yang-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-yang-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-types","conformance-type":"import"},{"name":"opendaylight-queue-statistics_2013-12-16","revision":"2013-12-16","schema":"/rests/modules/opendaylight-queue-statistics?revision=2013-12-16","namespace":"urn:opendaylight:queue:statistics","conformance-type":"import"},{"name":"sal-bundle_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/sal-bundle?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf:bundle:service","conformance-type":"import"},{"name":"ietf-restconf-subscribed-notifications_2019-11-17","revision":"2019-11-17","schema":"/rests/modules/ietf-restconf-subscribed-notifications?revision=2019-11-17","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-subscribed-notifications","conformance-type":"import"},{"name":"sal-meters-batch_2016-03-16","revision":"2016-03-16","schema":"/rests/modules/sal-meters-batch?revision=2016-03-16","namespace":"urn:opendaylight:meters:service","conformance-type":"import"},{"name":"odl-entity-owners","revision":"","schema":"/rests/modules/odl-entity-owners","namespace":"urn:opendaylight:params:xml:ns:yang:controller:entity-owners","conformance-type":"import"},{"name":"sal-experimenter-mp-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-mp-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-mp-message:service","conformance-type":"import"},{"name":"packet-processing_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/packet-processing?revision=2013-07-09","namespace":"urn:opendaylight:packet:service","conformance-type":"import"},{"name":"openflow-configuration_2014-06-30","revision":"2014-06-30","schema":"/rests/modules/openflow-configuration?revision=2014-06-30","namespace":"urn:opendaylight:openflow:config","conformance-type":"import"},{"name":"odl-srm-rpcs_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-rpcs?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:rpc","conformance-type":"import"},{"name":"ietf-netconf-acm_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-netconf-acm?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-acm","conformance-type":"import"},{"name":"iana-crypt-hash_2014-08-06","revision":"2014-08-06","schema":"/rests/modules/iana-crypt-hash?revision=2014-08-06","namespace":"urn:ietf:params:xml:ns:yang:iana-crypt-hash","conformance-type":"import","feature":["crypt-hash-sha-512","crypt-hash-sha-256","crypt-hash-md5"]},{"name":"openflow-extensible-match_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-extensible-match?revision=2015-02-25","namespace":"urn:opendaylight:openflow:oxm","conformance-type":"import"}],"module-set-id":"2"}}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:02:07.943397" elapsed="0.003031"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:07.942960" elapsed="0.003504"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:07.942939" elapsed="0.003550"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:02:07.950095" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:02:07.946794" elapsed="0.003383"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:07.946568" elapsed="0.003659"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:07.946550" elapsed="0.003710"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:02:07.951059" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:02:07.950527" elapsed="0.000570"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:07.951663" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:07.951322" elapsed="0.000421"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:02:07.952529" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:02:07.952002" elapsed="0.000592"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:07.951775" elapsed="0.000872"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:07.951293" elapsed="0.001384"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:02:07.953526" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:02:07.952933" elapsed="0.000630"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:07.954068" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:07.953715" elapsed="0.000433"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:02:07.954859" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:02:07.954437" elapsed="0.000458"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:07.954205" elapsed="0.000740"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:07.953665" elapsed="0.001309"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:02:07.955234" elapsed="0.000491"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T01:02:07.956405" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:02:07.955988" elapsed="0.000453"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T01:02:07.956689" elapsed="0.003011"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T01:02:07.942246" elapsed="0.017577"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T01:02:07.960183" elapsed="0.000047"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:02:07.959951" elapsed="0.000342"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:07.959901" elapsed="0.000427"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T01:02:07.969423" level="INFO">${text_normalized} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T01:02:07.961052" elapsed="0.008430"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T01:02:07.969561" elapsed="0.000063"/>
</return>
<msg time="2026-04-08T01:02:07.969926" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T01:02:07.925926" elapsed="0.044106"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T01:02:07.970577" elapsed="0.000031"/>
</return>
<msg time="2026-04-08T01:02:07.970756" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="PASS" start="2026-04-08T01:02:07.781930" elapsed="0.188853"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Json_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:07.971117" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:07.970868" elapsed="0.000460"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:07.970850" elapsed="0.000505"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T01:02:07.971390" elapsed="0.000027"/>
</return>
<arg>session=${session}</arg>
<arg>folder=${RESTCONF_MODULES_DIR}</arg>
<arg>verify=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Add arguments sensible for JSON data, return Get_Templated response text.
Optionally, verification against JSON data (may be iterated) is called.
Only subset of JSON data is verified and returned if JMES path is specified in
file ${folder}/jmespath.expr.</doc>
<status status="PASS" start="2026-04-08T01:02:07.777666" elapsed="0.193850"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:07.773502" elapsed="0.198057"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:07.773484" elapsed="0.198099"/>
</if>
<kw name="Resolve_Shard_Type_Class" owner="ClusterManagement">
<if>
<branch type="IF" condition="'${shard_type}' == 'config'">
<return>
<value>DistributedConfigDatastore</value>
<status status="NOT RUN" start="2026-04-08T01:02:07.972209" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:02:07.972083" elapsed="0.000170"/>
</branch>
<branch type="ELSE IF" condition="'${shard_type}' == 'operational'">
<return>
<value>DistributedOperationalDatastore</value>
<status status="PASS" start="2026-04-08T01:02:07.972380" elapsed="0.000032"/>
</return>
<status status="PASS" start="2026-04-08T01:02:07.972275" elapsed="0.000169"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:07.972065" elapsed="0.000402"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized shard type: ${shard_type}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:07.972620" elapsed="0.000021"/>
</kw>
<msg time="2026-04-08T01:02:07.972743" level="INFO">${type_class} = DistributedOperationalDatastore</msg>
<var>${type_class}</var>
<arg>shard_type=${shard_type}</arg>
<doc>Simple lookup for class name corresponding to desired type.</doc>
<status status="PASS" start="2026-04-08T01:02:07.971811" elapsed="0.000965"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:02:07.973334" level="INFO">${cluster_index} = 1</msg>
<var>${cluster_index}</var>
<arg>${member_index}+${NODE_ROLE_INDEX_START}-1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:02:07.972947" elapsed="0.000414"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:02:07.974003" level="INFO">${uri} = jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-default-operational,type=DistributedOperationalDatastore</msg>
<var>${uri}</var>
<arg>${JOLOKIA_READ_URI}:Category=Shards,name=member-${cluster_index}-shard-${shard_name}-${shard_type},type=${type_class}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:02:07.973517" elapsed="0.000513"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:02:07.979774" level="INFO">jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-default-operational,type=DistributedOperationalDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:02:07.979332" elapsed="0.000489"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:02:07.980432" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:02:07.979977" elapsed="0.000500"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T01:02:08.003527" level="INFO">GET Request : url=http://10.30.170.48:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-default-operational,type=DistributedOperationalDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-default-operational,type=DistributedOperationalDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T01:02:08.003712" level="INFO">GET Response : url=http://10.30.170.48:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-default-operational,type=DistributedOperationalDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Wed, 08 Apr 2026 01:02:07 GMT', 'Expires': 'Wed, 08 Apr 2026 00:02:07 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-1-shard-default-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"ReadWriteTransactionCount":16,"SnapshotIndex":49,"InMemoryJournalLogSize":1,"ReplicatedToAllIndex":49,"Leader":"member-1-shard-default-operational","LastIndex":50,"RaftState":"Leader","LastApplied":50,"LastCommittedTransactionTime":"2026-04-08 00:57:12.456","PeerAddresses":"member-3-shard-default-operational: pekko:\/\/opendaylight-cluster-data@10.30.171.110:2550\/user\/shardmanager-operational\/member-3-shard-default-operational, member-2-shard-default-operational: pekko:\/\/opendaylight-cluster-data@10.30.170.131:2550\/user\/shardmanager-operational\/member-2-shard-default-operational","LastLogIndex":50,"LastLeadershipChangeTime":"2026-04-08 00:57:11.071","FollowerInitialSyncStatus":false,"FollowerInfo":[{"timeSinceLastActivity":"00:00:00.037","active":true,"matchIndex":50,"voting":true,"id":"member-3-shard-default-operational","nextIndex":51},{"timeSinceLastActivity":"00:00:00.037","active":true,"matchIndex":50,"voting":true,"id":"member-2-shard-default-operational","nextIndex":51}],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"1.204 ms","CurrentTerm":4,"LastTerm":4,"FailedTransactionsCount":1,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-default-operational","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":10,"TxCohortCacheSize":0,"PeerVotingStates":"member-3-shard-default-operational: true, member-2-shard-default-operational: true","LastLogTerm":4,"StatRetrievalError":null,"CommitIndex":50,"SnapshotTerm":4,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":8,"ShardName":"member-1-shard-default-operational","LeadershipChangeCount":1,"InMemoryJournalDataSize":89969},"timestamp":1775610127,"status":200} 
 </msg>
<msg time="2026-04-08T01:02:08.003979" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T01:02:07.992335" elapsed="0.011792"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:07.980545" elapsed="0.023962"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:08.004767" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:08.004548" elapsed="0.000682"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:07.980526" elapsed="0.024784"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:02:08.011916" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-1-shard-default-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"ReadWriteTransactionCount":16,"SnapshotIndex":49,"InMemoryJournalLogSize":1,"ReplicatedToAllIndex":49,"Leader":"member-1-shard-default-operational","LastIndex":50,"RaftState":"Leader","LastApplied":50,"LastCommittedTransactionTime":"2026-04-08 00:57:12.456","PeerAddresses":"member-3-shard-default-operational: pekko:\/\/opendaylight-cluster-data@10.30.171.110:2550\/user\/shardmanager-operational\/member-3-shard-default-operational, member-2-shard-default-operational: pekko:\/\/opendaylight-cluster-data@10.30.170.131:2550\/user\/shardmanager-operational\/member-2-shard-default-operational","LastLogIndex":50,"LastLeadershipChangeTime":"2026-04-08 00:57:11.071","FollowerInitialSyncStatus":false,"FollowerInfo":[{"timeSinceLastActivity":"00:00:00.037","active":true,"matchIndex":50,"voting":true,"id":"member-3-shard-default-operational","nextIndex":51},{"timeSinceLastActivity":"00:00:00.037","active":true,"matchIndex":50,"voting":true,"id":"member-2-shard-default-operational","nextIndex":51}],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"1.204 ms","CurrentTerm":4,"LastTerm":4,"FailedTransactionsCount":1,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-default-operational","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":10,"TxCohortCacheSize":0,"PeerVotingStates":"member-3-shard-default-operational: true, member-2-shard-default-operational: true","LastLogTerm":4,"StatRetrievalError":null,"CommitIndex":50,"SnapshotTerm":4,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":8,"ShardName":"member-1-shard-default-operational","LeadershipChangeCount":1,"InMemoryJournalDataSize":89969},"timestamp":1775610127,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:02:08.008254" elapsed="0.003818"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:08.006989" elapsed="0.005152"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:08.006962" elapsed="0.005255"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:02:08.017101" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:02:08.013776" elapsed="0.003495"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:08.012335" elapsed="0.005005"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:08.012310" elapsed="0.005082"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:02:08.019409" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:02:08.018336" elapsed="0.001159"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:08.020401" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:08.019726" elapsed="0.000796"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:02:08.021880" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:02:08.021042" elapsed="0.000884"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:08.020574" elapsed="0.001403"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:08.019698" elapsed="0.002314"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:02:08.023602" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:02:08.022771" elapsed="0.000893"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:08.024315" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:08.023829" elapsed="0.000573"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:02:08.025285" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:02:08.024771" elapsed="0.000560"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:08.024440" elapsed="0.000951"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:08.023808" elapsed="0.001620"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:02:08.025665" elapsed="0.000646"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T01:02:08.027116" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:02:08.026621" elapsed="0.000598"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T01:02:08.027505" elapsed="0.002476"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T01:02:08.006012" elapsed="0.024127"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T01:02:08.030360" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:02:08.030230" elapsed="0.000177"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:08.030210" elapsed="0.000219"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T01:02:08.034252" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-1-shard-default-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp"...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T01:02:08.030655" elapsed="0.003626"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T01:02:08.034367" elapsed="0.000033"/>
</return>
<msg time="2026-04-08T01:02:08.034530" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-1-shard-default-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp"...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T01:02:07.974993" elapsed="0.059564"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T01:02:08.034615" elapsed="0.000026"/>
</return>
<msg time="2026-04-08T01:02:08.034762" level="INFO">${data_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-1-shard-default-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp"...</msg>
<var>${data_text}</var>
<arg>uri=${uri}</arg>
<arg>session=${session}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-08T01:02:07.974269" elapsed="0.060518"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:02:08.036006" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-1-shard-default-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 177561012...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:02:08.035538" elapsed="0.000497"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-08T01:02:08.036084" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T01:02:08.036275" level="INFO">${data_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-1-shard-default-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 177561012...</msg>
<var>${data_object}</var>
<arg>${data_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-08T01:02:08.035017" elapsed="0.001285"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:02:08.036661" level="INFO">${value} = {'AbortTransactionsCount': 0, 'CommitIndex': 50, 'CommittedTransactionsCount': 10, 'CurrentTerm': 4, 'FailedReadTransactionsCount': 0, 'FailedTransactionsCount': 1, 'FollowerInfo': [{'active': True, '...</msg>
<var>${value}</var>
<arg>${data_object}</arg>
<arg>value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:02:08.036461" elapsed="0.000227"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:02:08.037044" level="INFO">${raft_property} = Leader</msg>
<var>${raft_property}</var>
<arg>${value}</arg>
<arg>${property}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:02:08.036845" elapsed="0.000223"/>
</kw>
<return>
<value>${raft_property}</value>
<status status="PASS" start="2026-04-08T01:02:08.037114" elapsed="0.000027"/>
</return>
<msg time="2026-04-08T01:02:08.037296" level="INFO">${raft_state} = Leader</msg>
<var>${raft_state}</var>
<arg>RaftState</arg>
<arg>${shard_name}</arg>
<arg>${shard_type}</arg>
<arg>${member_index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft property.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T01:02:07.771864" elapsed="0.265457"/>
</kw>
<return>
<value>${raft_state}</value>
<status status="PASS" start="2026-04-08T01:02:08.037379" elapsed="0.000025"/>
</return>
<msg time="2026-04-08T01:02:08.037523" level="INFO">${raft_state} = Leader</msg>
<var>${raft_state}</var>
<arg>shard_name=${shard_name}</arg>
<arg>shard_type=${ds_type}</arg>
<arg>member_index=${index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft status.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T01:02:07.771133" elapsed="0.266415"/>
</kw>
<if>
<branch type="IF" condition="'Follower' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${follower_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:08.037865" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:08.037642" elapsed="0.000279"/>
</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="PASS" start="2026-04-08T01:02:08.038168" elapsed="0.000191"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:08.037945" elapsed="0.000452"/>
</branch>
<branch type="ELSE IF" condition="${validate}">
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized Raft state: ${raft_state}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:08.038568" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:08.038421" elapsed="0.000199"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:08.037625" elapsed="0.001017"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T01:02:07.770963" elapsed="0.267702"/>
</iter>
<iter>
<kw name="Get_Raft_State_Of_Shard_At_Member" owner="ClusterManagement">
<kw name="Get_Raft_Property_From_Shard_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:02:08.041029" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:02:08.040707" elapsed="0.000348"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T01:02:08.041102" elapsed="0.000027"/>
</return>
<msg time="2026-04-08T01:02:08.041263" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T01:02:08.040363" elapsed="0.000925"/>
</kw>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Get_As_Json_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:02:08.127746" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:02:08.127234" elapsed="0.000540"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T01:02:08.128580" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T01:02:08.128341" elapsed="0.000311">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-08T01:02:08.128745" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T01:02:08.127979" elapsed="0.000790"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:02:08.129332" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:02:08.128935" elapsed="0.000424"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T01:02:08.129674" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-08T01:02:08.129818" level="INFO">${template} = /rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T01:02:08.129535" elapsed="0.000308"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:02:08.130256" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:02:08.129998" elapsed="0.000302"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:02:08.131270" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:02:08.130999" elapsed="0.000315"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-08T01:02:08.131738" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-08T01:02:08.131474" elapsed="0.000289"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:08.132087" elapsed="0.000022"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:08.132304" elapsed="0.000024"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:08.132478" elapsed="0.000021"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-08T01:02:08.131953" elapsed="0.000582"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-08T01:02:08.131811" elapsed="0.000753"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-08T01:02:08.132607" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T01:02:08.132763" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-08T01:02:08.130669" elapsed="0.002120"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:08.130368" elapsed="0.002452"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:08.132991" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:08.132845" elapsed="0.000200"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:08.130349" elapsed="0.002717"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:02:08.133663" level="INFO">${final_text} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:02:08.133224" elapsed="0.000466"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T01:02:08.133737" elapsed="0.000028"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="PASS" start="2026-04-08T01:02:08.126607" elapsed="0.007250"/>
</kw>
<msg time="2026-04-08T01:02:08.133910" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:02:08.113877" elapsed="0.020113"/>
</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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:08.146826" elapsed="0.000041"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:08.159374" elapsed="0.000041"/>
</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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:08.171855" elapsed="0.000040"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:08.172643" elapsed="0.000037"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:08.173415" elapsed="0.000062"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:08.173995" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:08.173845" elapsed="0.000205"/>
</branch>
<status status="NOT RUN" start="2026-04-08T01:02:08.173829" elapsed="0.000245"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:08.174249" elapsed="0.000023"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:08.174441" elapsed="0.000020"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:08.174626" elapsed="0.000021"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-08T01:02:08.173779" elapsed="0.000920"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-08T01:02:08.173561" elapsed="0.001177"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:08.175462" elapsed="0.000035"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-08T01:02:08.175577" elapsed="0.000047"/>
</return>
<msg time="2026-04-08T01:02:08.175793" level="INFO">${uri} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-08T01:02:08.107632" elapsed="0.068266"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T01:02:08.178719" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T01:02:08.178480" elapsed="0.000302">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-08T01:02:08.178965" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T01:02:08.178028" elapsed="0.000981"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:08.179526" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:08.179137" elapsed="0.000455"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:02:08.180199" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:02:08.179891" elapsed="0.000335"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:08.179631" elapsed="0.000640"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:08.179088" elapsed="0.001220"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:02:08.183542" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:02:08.181049" elapsed="0.002538"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-08T01:02:08.183661" elapsed="0.000062"/>
</return>
<msg time="2026-04-08T01:02:08.183969" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T01:02:08.176875" elapsed="0.007198"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T01:02:08.186909" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T01:02:08.186664" elapsed="0.000308">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-08T01:02:08.187190" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T01:02:08.186230" elapsed="0.001006"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-08T01:02:08.187612" elapsed="0.000078"/>
</return>
<status status="PASS" start="2026-04-08T01:02:08.187365" elapsed="0.000392"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:08.187315" elapsed="0.000481"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:08.188557" elapsed="0.000037"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:08.189414" elapsed="0.000049"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-08T01:02:08.189534" elapsed="0.000048"/>
</return>
<msg time="2026-04-08T01:02:08.191752" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T01:02:08.184921" elapsed="0.006938"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:02:08.195814" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:02:08.195429" elapsed="0.000485"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:02:08.197024" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:02:08.196648" elapsed="0.000472"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T01:02:08.221252" level="INFO">GET Request : url=http://10.30.170.131:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 path_url=/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01l7fnm4ypo6vn14692wsih5mir0.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T01:02:08.221981" level="INFO">GET Response : url=http://10.30.170.131:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Transfer-Encoding': 'chunked'} 
 body={"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","encrypted-passwords","hidden-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-private-keys","asymmetrically-encrypted-value-format","cleartext-private-keys","cms-encrypted-data-format","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["client-ident-hostbased","ssh-client-keepalives","client-ident-password","client-ident-publickey"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-ex... (set the log level to DEBUG or TRACE to see the full content) 
 </msg>
<msg time="2026-04-08T01:02:08.222195" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T01:02:08.199609" elapsed="0.022614"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:08.197453" elapsed="0.024826"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:08.222570" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:08.222322" elapsed="0.000323"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:08.197374" elapsed="0.025306"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:02:08.227008" level="INFO">{"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","encrypted-passwords","hidden-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-private-keys","asymmetrically-encrypted-value-format","cleartext-private-keys","cms-encrypted-data-format","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["client-ident-hostbased","ssh-client-keepalives","client-ident-password","client-ident-publickey"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-experimenter-types?revision=2015-10-20","namespace":"urn:opendaylight:openflowplugin:experimenter:types","conformance-type":"import"},{"name":"ietf-ip_2018-02-22","revision":"2018-02-22","schema":"/rests/modules/ietf-ip?revision=2018-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-ip","conformance-type":"import","feature":["ipv6-privacy-autoconf","ipv4-non-contiguous-netmasks"]},{"name":"ietf-tcp-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-client","conformance-type":"import","feature":["local-binding-supported","tcp-client-keepalives"]},{"name":"node-config_2014-10-15","revision":"2014-10-15","schema":"/rests/modules/node-config?revision=2014-10-15","namespace":"urn:opendaylight:module:config","conformance-type":"import"},{"name":"ietf-restconf_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf","conformance-type":"import"},{"name":"ietf-datastores_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-datastores?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-datastores","conformance-type":"import"},{"name":"ietf-yang-patch_2017-02-22","revision":"2017-02-22","schema":"/rests/modules/ietf-yang-patch?revision=2017-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-patch","conformance-type":"import"},{"name":"sal-group_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-group?revision=2013-09-18","namespace":"urn:opendaylight:group:service","conformance-type":"import"},{"name":"odl-codegen-extensions_2024-06-27","revision":"2024-06-27","schema":"/rests/modules/odl-codegen-extensions?revision=2024-06-27","namespace":"urn:opendaylight:yang:extension:codegen","conformance-type":"import"},{"name":"sal-meter_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-meter?revision=2013-09-18","namespace":"urn:opendaylight:meter:service","conformance-type":"import"},{"name":"ietf-interfaces_2018-02-20","revision":"2018-02-20","schema":"/rests/modules/ietf-interfaces?revision=2018-02-20","namespace":"urn:ietf:params:xml:ns:yang:ietf-interfaces","conformance-type":"import","feature":["pre-provisioning","if-mib","arbitrary-names"]},{"name":"opendaylight-l2-types_2013-08-27","revision":"2013-08-27","schema":"/rests/modules/opendaylight-l2-types?revision=2013-08-27","namespace":"urn:opendaylight:l2:types","conformance-type":"import"},{"name":"opendaylight-flow-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-flow-types?revision=2013-10-26","namespace":"urn:opendaylight:flow:types","conformance-type":"import"},{"name":"lldp-speaker-config_2016-05-12","revision":"2016-05-12","schema":"/rests/modules/lldp-speaker-config?revision=2016-05-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker:config","conformance-type":"import"},{"name":"aaa-cert_2015-11-26","revision":"2015-11-26","schema":"/rests/modules/aaa-cert?revision=2015-11-26","namespace":"urn:opendaylight:yang:aaa:cert","conformance-type":"import"},{"name":"openflow-action_2015-02-03","revision":"2015-02-03","schema":"/rests/modules/openflow-action?revision=2015-02-03","namespace":"urn:opendaylight:openflow:common:action","conformance-type":"import"},{"name":"openflow-approved-extensions_2016-08-02","revision":"2016-08-02","schema":"/rests/modules/openflow-approved-extensions?revision=2016-08-02","namespace":"urn:opendaylight:openflow:approved:extensions","conformance-type":"import"},{"name":"nc-notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/nc-notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netmod:notification","conformance-type":"import"},{"name":"ietf-netconf-nmda_2019-01-07","revision":"2019-01-07","schema":"/rests/modules/ietf-netconf-nmda?revision=2019-01-07","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-nmda","conformance-type":"import","feature":["with-defaults","origin"]},{"name":"ietf-tcp-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-common","conformance-type":"import","feature":["keepalives-supported"]},{"name":"network-topology_2013-10-21","revision":"2013-10-21","schema":"/rests/modules/network-topology?revision=2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:network-topology","conformance-type":"import"},{"name":"aaa-encrypt-service-config_2024-02-02","revision":"2024-02-02","schema":"/rests/modules/aaa-encrypt-service-config?revision=2024-02-02","namespace":"config:aaa:authn:encrypt:service:config","conformance-type":"import"},{"name":"openflow-instruction_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-instruction?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:instruction","conformance-type":"import"},{"name":"ietf-tls-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-client","conformance-type":"import","feature":["client-ident-x509-cert","server-auth-x509-cert"]},{"name":"opendaylight-group-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-group-statistics?revision=2013-11-11","namespace":"urn:opendaylight:group:statistics","conformance-type":"import"},{"name":"cluster-admin_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/cluster-admin?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:cluster:admin","conformance-type":"import"},{"name":"opendaylight-flow-statistics_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-flow-statistics?revision=2013-08-19","namespace":"urn:opendaylight:flow:statistics","conformance-type":"import"},{"name":"opendaylight-table-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-table-types?revision=2013-10-26","namespace":"urn:opendaylight:table:types","conformance-type":"import"},{"name":"forwarding-rules-manager-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/forwarding-rules-manager-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:forwardingrules-manager:config","conformance-type":"import"},{"name":"odl-srm-types_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-types?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:types","conformance-type":"import"},{"name":"ietf-x509-cert-to-name_2014-12-10","revision":"2014-12-10","schema":"/rests/modules/ietf-x509-cert-to-name?revision=2014-12-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-x509-cert-to-name","conformance-type":"import"},{"name":"flow-node-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-node-inventory?revision=2013-08-19","namespace":"urn:opendaylight:flow:inventory","conformance-type":"import"},{"name":"flow-errors_2013-11-16","revision":"2013-11-16","schema":"/rests/modules/flow-errors?revision=2013-11-16","namespace":"urn:opendaylight:flow:errors","conformance-type":"import"},{"name":"ietf-netconf_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:netconf:base:1.0","conformance-type":"import","feature":["xpath","url","rollback-on-error","validate","candidate","confirmed-commit","startup","writable-running"]},{"name":"iana-ssh-public-key-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-public-key-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-public-key-algs","conformance-type":"import"},{"name":"aaa-cert-mdsal_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/aaa-cert-mdsal?revision=2016-03-21","namespace":"urn:opendaylight:yang:aaa:cert:mdsal","conformance-type":"import"},{"name":"odl-device-notification_2024-02-18","revision":"2024-02-18","schema":"/rests/modules/odl-device-notification?revision=2024-02-18","namespace":"urn:opendaylight:device:notification","conformance-type":"import"},{"name":"ietf-origin_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-origin?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-origin","conformance-type":"import"},{"name":"openflow-augments_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-augments?revision=2015-02-25","namespace":"urn:opendaylight:openflow:augments","conformance-type":"import"},{"name":"iana-ssh-encryption-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-encryption-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-encryption-algs","conformance-type":"import"},{"name":"ietf-truststore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-truststore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-truststore","conformance-type":"import","feature":["inline-definitions-supported"]},{"name":"distributed-datastore-provider_2025-01-30","revision":"2025-01-30","schema":"/rests/modules/distributed-datastore-provider?revision=2025-01-30","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:distributed-datastore-provider","conformance-type":"import"},{"name":"opendaylight-group-types_2013-10-18","revision":"2013-10-18","schema":"/rests/modules/opendaylight-group-types?revision=2013-10-18","namespace":"urn:opendaylight:group:types","conformance-type":"import"},{"name":"sal-remote-augment_2023-11-03","revision":"2023-11-03","schema":"/rests/modules/sal-remote-augment?revision=2023-11-03","namespace":"urn:sal:restconf:event:subscription","conformance-type":"import"},{"name":"opendaylight-ipv6-arbitrary-bitmask-fields_2016-02-24","revision":"2016-02-24","schema":"/rests/modules/opendaylight-ipv6-arbitrary-bitmask-fields?revision=2016-02-24","namespace":"urn:opendaylight:opendaylight-ipv6-arbitrary-bitmask-fields","conformance-type":"import"},{"name":"sal-flows-batch_2016-03-14","revision":"2016-03-14","schema":"/rests/modules/sal-flows-batch?revision=2016-03-14","namespace":"urn:opendaylight:flows:service","conformance-type":"import"},{"name":"ietf-tls-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-common","conformance-type":"import","feature":["hello-params","tls12","tls13"]},{"name":"openflow-types_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-types?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:types","conformance-type":"import"},{"name":"ietf-netconf-with-defaults_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf-with-defaults?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults","conformance-type":"import"},{"name":"odl-srm-ops_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-ops?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:ops","conformance-type":"import"},{"name":"odl-general-entity_2015-09-30","revision":"2015-09-30","schema":"/rests/modules/odl-general-entity?revision=2015-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:mdsal:core:general-entity","conformance-type":"import"},{"name":"iana-ssh-key-exchange-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-key-exchange-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-key-exchange-algs","conformance-type":"import"},{"name":"node-ssl-connection-error_2019-07-23","revision":"2019-07-23","schema":"/rests/modules/node-ssl-connection-error?revision=2019-07-23","namespace":"urn:opendaylight:node-ssl-connection-error:service","conformance-type":"import"},{"name":"openflow-protocol_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-protocol?revision=2013-07-31","namespace":"urn:opendaylight:openflow:protocol","conformance-type":"import"},{"name":"ietf-udp-server_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-server?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-server","conformance-type":"import"},{"name":"ietf-keystore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-keystore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-keystore","conformance-type":"import","feature":["asymmetric-keys","inline-definitions-supported"]},{"name":"aaa_2016-12-14","revision":"2016-12-14","schema":"/rests/modules/aaa?revision=2016-12-14","namespace":"urn:opendaylight:params:xml:ns:yang:aaa","conformance-type":"import"},{"name":"aaa-cert-rpc_2015-12-15","revision":"2015-12-15","schema":"/rests/modules/aaa-cert-rpc?revision=2015-12-15","namespace":"urn:opendaylight:yang:aaa:cert:rpc","conformance-type":"import"},{"name":"system-notifications_2013-09-27","revision":"2013-09-27","schema":"/rests/modules/system-notifications?revision=2013-09-27","namespace":"urn:opendaylight:openflow:system","conformance-type":"import"},{"name":"sal-flat-batch_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/sal-flat-batch?revision=2016-03-21","namespace":"urn:opendaylight:flat-batch:service","conformance-type":"import"},{"name":"notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netconf:notification:1.0","conformance-type":"import"},{"name":"sal-remote_2014-01-14","revision":"2014-01-14","schema":"/rests/modules/sal-remote?revision=2014-01-14","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:remote","conformance-type":"import"},{"name":"yang-ext_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/yang-ext?revision=2013-07-09","namespace":"urn:opendaylight:yang:extension:yang-ext","conformance-type":"import"},{"name":"opendaylight-multipart-types_2017-01-12","revision":"2017-01-12","schema":"/rests/modules/opendaylight-multipart-types?revision=2017-01-12","namespace":"urn:opendaylight:multipart:types","conformance-type":"import"},{"name":"opendaylight-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-inventory?revision=2013-08-19","namespace":"urn:opendaylight:inventory","conformance-type":"import"},{"name":"sal-queue_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-queue?revision=2015-03-05","namespace":"urn:opendaylight:queue:service","conformance-type":"import"},{"name":"sal-groups-batch_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/sal-groups-batch?revision=2016-03-15","namespace":"urn:opendaylight:groups:service","conformance-type":"import"},{"name":"arbitrator-reconcile_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/arbitrator-reconcile?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:arbitrator-reconcile:service","conformance-type":"import"},{"name":"ietf-yang-metadata_2016-08-05","revision":"2016-08-05","schema":"/rests/modules/ietf-yang-metadata?revision=2016-08-05","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-metadata","conformance-type":"import"},{"name":"opendaylight-arbitrary-bitmask-fields_2016-01-30","revision":"2016-01-30","schema":"/rests/modules/opendaylight-arbitrary-bitmask-fields?revision=2016-01-30","namespace":"urn:opendaylight:arbitrary:bitmask:fields","conformance-type":"import"},{"name":"ietf-udp-client_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-client?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-client","conformance-type":"import","feature":["local-binding"]},{"name":"opendaylight-meter-types_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/opendaylight-meter-types?revision=2013-09-18","namespace":"urn:opendaylight:meter:types","conformance-type":"import"},{"name":"opendaylight-action-types_2013-11-12","revision":"2013-11-12","schema":"/rests/modules/opendaylight-action-types?revision=2013-11-12","namespace":"urn:opendaylight:action:types","conformance-type":"import"},{"name":"sal-role_2015-07-27","revision":"2015-07-27","schema":"/rests/modules/sal-role?revision=2015-07-27","namespace":"urn:opendaylight:role:service","conformance-type":"import"},{"name":"openflow-provider-config_2016-05-10","revision":"2016-05-10","schema":"/rests/modules/openflow-provider-config?revision=2016-05-10","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:provider:config","conformance-type":"import"},{"name":"odl-serviceutils-upgrade_2018-07-02","revision":"2018-07-02","schema":"/rests/modules/odl-serviceutils-upgrade?revision=2018-07-02","namespace":"urn:opendaylight:serviceutils:upgrade","conformance-type":"import"},{"name":"opendaylight-match-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-match-types?revision=2013-10-26","namespace":"urn:opendaylight:model:match:types","conformance-type":"import"},{"name":"ietf-restconf-server_2024-08-14","revision":"2024-08-14","schema":"/rests/modules/ietf-restconf-server?revision=2024-08-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-server","conformance-type":"import","feature":["http-listen","https-listen"]},{"name":"reconciliation-result-state_2017-07-13","revision":"2017-07-13","schema":"/rests/modules/reconciliation-result-state?revision=2017-07-13","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:rf:state","conformance-type":"import"},{"name":"onf-extensions_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/onf-extensions?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf","conformance-type":"import"},{"name":"sal-table_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/sal-table?revision=2013-10-26","namespace":"urn:opendaylight:table:service","conformance-type":"import"},{"name":"iana-http-versions_2026-02-04","revision":"2026-02-04","schema":"/rests/modules/iana-http-versions?revision=2026-02-04","namespace":"urn:ietf:params:xml:ns:yang:iana-http-versions","conformance-type":"import"},{"name":"opendaylight-direct-statistics_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/opendaylight-direct-statistics?revision=2016-05-11","namespace":"urn:opendaylight:direct:statistics","conformance-type":"import"},{"name":"opendaylight-port-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-port-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:port","conformance-type":"import"},{"name":"sal-async-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/sal-async-config?revision=2017-06-19","namespace":"urn:opendaylight:async-config:service","conformance-type":"import"},{"name":"aaa-password-service-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-password-service-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:password:service:config","conformance-type":"import"},{"name":"ietf-yang-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-yang-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-types","conformance-type":"import"},{"name":"opendaylight-queue-statistics_2013-12-16","revision":"2013-12-16","schema":"/rests/modules/opendaylight-queue-statistics?revision=2013-12-16","namespace":"urn:opendaylight:queue:statistics","conformance-type":"import"},{"name":"sal-bundle_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/sal-bundle?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf:bundle:service","conformance-type":"import"},{"name":"ietf-restconf-subscribed-notifications_2019-11-17","revision":"2019-11-17","schema":"/rests/modules/ietf-restconf-subscribed-notifications?revision=2019-11-17","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-subscribed-notifications","conformance-type":"import"},{"name":"sal-meters-batch_2016-03-16","revision":"2016-03-16","schema":"/rests/modules/sal-meters-batch?revision=2016-03-16","namespace":"urn:opendaylight:meters:service","conformance-type":"import"},{"name":"odl-entity-owners","revision":"","schema":"/rests/modules/odl-entity-owners","namespace":"urn:opendaylight:params:xml:ns:yang:controller:entity-owners","conformance-type":"import"},{"name":"sal-experimenter-mp-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-mp-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-mp-message:service","conformance-type":"import"},{"name":"packet-processing_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/packet-processing?revision=2013-07-09","namespace":"urn:opendaylight:packet:service","conformance-type":"import"},{"name":"openflow-configuration_2014-06-30","revision":"2014-06-30","schema":"/rests/modules/openflow-configuration?revision=2014-06-30","namespace":"urn:opendaylight:openflow:config","conformance-type":"import"},{"name":"odl-srm-rpcs_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-rpcs?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:rpc","conformance-type":"import"},{"name":"ietf-netconf-acm_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-netconf-acm?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-acm","conformance-type":"import"},{"name":"iana-crypt-hash_2014-08-06","revision":"2014-08-06","schema":"/rests/modules/iana-crypt-hash?revision=2014-08-06","namespace":"urn:ietf:params:xml:ns:yang:iana-crypt-hash","conformance-type":"import","feature":["crypt-hash-sha-512","crypt-hash-sha-256","crypt-hash-md5"]},{"name":"openflow-extensible-match_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-extensible-match?revision=2015-02-25","namespace":"urn:opendaylight:openflow:oxm","conformance-type":"import"}],"module-set-id":"2"}}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:02:08.224380" elapsed="0.002966"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:08.224138" elapsed="0.003244"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:08.224117" elapsed="0.003290"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:02:08.229997" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:02:08.227713" elapsed="0.002330"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:08.227486" elapsed="0.002591"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:08.227468" elapsed="0.002633"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:02:08.230686" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:02:08.230304" elapsed="0.000409"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:08.231047" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:08.230805" elapsed="0.000299"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:02:08.231615" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:02:08.231307" elapsed="0.000333"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:08.231127" elapsed="0.000548"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:08.230785" elapsed="0.000911"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:02:08.232289" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:02:08.231878" elapsed="0.000438"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:08.232644" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:08.232407" elapsed="0.000295"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:02:08.233274" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:02:08.232953" elapsed="0.000348"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:08.232724" elapsed="0.000611"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:08.232388" elapsed="0.000968"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:02:08.233544" elapsed="0.000349"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T01:02:08.234378" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:02:08.234079" elapsed="0.000325"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T01:02:08.234580" elapsed="0.002342"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T01:02:08.223434" elapsed="0.013610"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T01:02:08.237419" elapsed="0.000047"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:02:08.237188" elapsed="0.000341"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:08.237121" elapsed="0.000444"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T01:02:08.246605" level="INFO">${text_normalized} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T01:02:08.238323" elapsed="0.008331"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T01:02:08.246731" elapsed="0.000063"/>
</return>
<msg time="2026-04-08T01:02:08.247049" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T01:02:08.192632" elapsed="0.054541"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T01:02:08.247639" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T01:02:08.247815" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="PASS" start="2026-04-08T01:02:08.049858" elapsed="0.197984"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Json_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:08.248177" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:08.247925" elapsed="0.000439"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:08.247908" elapsed="0.000483"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T01:02:08.248425" elapsed="0.000027"/>
</return>
<arg>session=${session}</arg>
<arg>folder=${RESTCONF_MODULES_DIR}</arg>
<arg>verify=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Add arguments sensible for JSON data, return Get_Templated response text.
Optionally, verification against JSON data (may be iterated) is called.
Only subset of JSON data is verified and returned if JMES path is specified in
file ${folder}/jmespath.expr.</doc>
<status status="PASS" start="2026-04-08T01:02:08.045628" elapsed="0.202921"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:08.041354" elapsed="0.207238"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:08.041337" elapsed="0.207278"/>
</if>
<kw name="Resolve_Shard_Type_Class" owner="ClusterManagement">
<if>
<branch type="IF" condition="'${shard_type}' == 'config'">
<return>
<value>DistributedConfigDatastore</value>
<status status="NOT RUN" start="2026-04-08T01:02:08.249227" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:02:08.249102" elapsed="0.000169"/>
</branch>
<branch type="ELSE IF" condition="'${shard_type}' == 'operational'">
<return>
<value>DistributedOperationalDatastore</value>
<status status="PASS" start="2026-04-08T01:02:08.249418" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-08T01:02:08.249293" elapsed="0.000183"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:08.249085" elapsed="0.000415"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized shard type: ${shard_type}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:08.249646" elapsed="0.000021"/>
</kw>
<msg time="2026-04-08T01:02:08.249763" level="INFO">${type_class} = DistributedOperationalDatastore</msg>
<var>${type_class}</var>
<arg>shard_type=${shard_type}</arg>
<doc>Simple lookup for class name corresponding to desired type.</doc>
<status status="PASS" start="2026-04-08T01:02:08.248838" elapsed="0.000950"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:02:08.250344" level="INFO">${cluster_index} = 2</msg>
<var>${cluster_index}</var>
<arg>${member_index}+${NODE_ROLE_INDEX_START}-1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:02:08.249958" elapsed="0.000412"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:02:08.250989" level="INFO">${uri} = jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-default-operational,type=DistributedOperationalDatastore</msg>
<var>${uri}</var>
<arg>${JOLOKIA_READ_URI}:Category=Shards,name=member-${cluster_index}-shard-${shard_name}-${shard_type},type=${type_class}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:02:08.250528" elapsed="0.000489"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:02:08.256806" level="INFO">jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-default-operational,type=DistributedOperationalDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:02:08.256368" elapsed="0.000485"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:02:08.257471" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:02:08.257009" elapsed="0.000506"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T01:02:08.279652" level="INFO">GET Request : url=http://10.30.170.131:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-default-operational,type=DistributedOperationalDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-default-operational,type=DistributedOperationalDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T01:02:08.279788" level="INFO">GET Response : url=http://10.30.170.131:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-default-operational,type=DistributedOperationalDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Wed, 08 Apr 2026 01:02:08 GMT', 'Expires': 'Wed, 08 Apr 2026 00:02:08 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-2-shard-default-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"ReadWriteTransactionCount":0,"SnapshotIndex":49,"InMemoryJournalLogSize":1,"ReplicatedToAllIndex":49,"Leader":"member-1-shard-default-operational","LastIndex":50,"RaftState":"Follower","LastApplied":50,"LastCommittedTransactionTime":"1970-01-01 00:00:00.000","PeerAddresses":"member-1-shard-default-operational: pekko:\/\/opendaylight-cluster-data@10.30.170.48:2550\/user\/shardmanager-operational\/member-1-shard-default-operational, member-3-shard-default-operational: pekko:\/\/opendaylight-cluster-data@10.30.171.110:2550\/user\/shardmanager-operational\/member-3-shard-default-operational","LastLogIndex":50,"LastLeadershipChangeTime":"2026-04-08 00:57:11.078","FollowerInitialSyncStatus":true,"FollowerInfo":[],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"815.4 μs","CurrentTerm":4,"LastTerm":4,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-default-operational","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":0,"TxCohortCacheSize":0,"PeerVotingStates":"member-1-shard-default-operational: true, member-3-shard-default-operational: true","LastLogTerm":4,"StatRetrievalError":null,"CommitIndex":50,"SnapshotTerm":4,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-2-shard-default-operational","LeadershipChangeCount":1,"InMemoryJournalDataSize":89969},"timestamp":1775610128,"status":200} 
 </msg>
<msg time="2026-04-08T01:02:08.280084" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T01:02:08.268889" elapsed="0.011472"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:08.257583" elapsed="0.023339"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:08.281447" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:08.280988" elapsed="0.001156"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:08.257564" elapsed="0.024668"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:02:08.291387" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-2-shard-default-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"ReadWriteTransactionCount":0,"SnapshotIndex":49,"InMemoryJournalLogSize":1,"ReplicatedToAllIndex":49,"Leader":"member-1-shard-default-operational","LastIndex":50,"RaftState":"Follower","LastApplied":50,"LastCommittedTransactionTime":"1970-01-01 00:00:00.000","PeerAddresses":"member-1-shard-default-operational: pekko:\/\/opendaylight-cluster-data@10.30.170.48:2550\/user\/shardmanager-operational\/member-1-shard-default-operational, member-3-shard-default-operational: pekko:\/\/opendaylight-cluster-data@10.30.171.110:2550\/user\/shardmanager-operational\/member-3-shard-default-operational","LastLogIndex":50,"LastLeadershipChangeTime":"2026-04-08 00:57:11.078","FollowerInitialSyncStatus":true,"FollowerInfo":[],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"815.4 μs","CurrentTerm":4,"LastTerm":4,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-default-operational","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":0,"TxCohortCacheSize":0,"PeerVotingStates":"member-1-shard-default-operational: true, member-3-shard-default-operational: true","LastLogTerm":4,"StatRetrievalError":null,"CommitIndex":50,"SnapshotTerm":4,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-2-shard-default-operational","LeadershipChangeCount":1,"InMemoryJournalDataSize":89969},"timestamp":1775610128,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:02:08.287015" elapsed="0.004484"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:08.284858" elapsed="0.006690"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:08.284816" elapsed="0.006771"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:02:08.295029" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:02:08.292569" elapsed="0.002556"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:08.291668" elapsed="0.003521"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:08.291650" elapsed="0.003579"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:02:08.296634" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:02:08.295874" elapsed="0.000821"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:08.297362" elapsed="0.000038"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:08.296860" elapsed="0.000592"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:02:08.298537" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:02:08.297937" elapsed="0.000645"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:08.297491" elapsed="0.001141"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:08.296841" elapsed="0.001826"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:02:08.300062" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:02:08.299325" elapsed="0.000798"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:08.300772" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:08.300305" elapsed="0.000554"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:02:08.301769" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:02:08.301242" elapsed="0.000573"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:08.300896" elapsed="0.000969"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:08.300285" elapsed="0.001615"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:02:08.302123" elapsed="0.000653"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T01:02:08.303699" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:02:08.303081" elapsed="0.000678"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T01:02:08.304040" elapsed="0.002381"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T01:02:08.283295" elapsed="0.023467"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T01:02:08.306969" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:02:08.306838" elapsed="0.000175"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:08.306819" elapsed="0.000215"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T01:02:08.310735" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-2-shard-default-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp"...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T01:02:08.307199" elapsed="0.003565"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T01:02:08.310816" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T01:02:08.310972" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-2-shard-default-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp"...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T01:02:08.252044" elapsed="0.058955"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T01:02:08.311087" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T01:02:08.311254" level="INFO">${data_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-2-shard-default-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp"...</msg>
<var>${data_text}</var>
<arg>uri=${uri}</arg>
<arg>session=${session}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-08T01:02:08.251322" elapsed="0.059958"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:02:08.312327" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-2-shard-default-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 177561012...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:02:08.311844" elapsed="0.000513"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-08T01:02:08.312405" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T01:02:08.312578" level="INFO">${data_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-2-shard-default-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 177561012...</msg>
<var>${data_object}</var>
<arg>${data_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-08T01:02:08.311500" elapsed="0.001104"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:02:08.312965" level="INFO">${value} = {'AbortTransactionsCount': 0, 'CommitIndex': 50, 'CommittedTransactionsCount': 0, 'CurrentTerm': 4, 'FailedReadTransactionsCount': 0, 'FailedTransactionsCount': 0, 'FollowerInfo': [], 'FollowerInitial...</msg>
<var>${value}</var>
<arg>${data_object}</arg>
<arg>value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:02:08.312762" elapsed="0.000231"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:02:08.313435" level="INFO">${raft_property} = Follower</msg>
<var>${raft_property}</var>
<arg>${value}</arg>
<arg>${property}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:02:08.313148" elapsed="0.000313"/>
</kw>
<return>
<value>${raft_property}</value>
<status status="PASS" start="2026-04-08T01:02:08.313507" elapsed="0.000027"/>
</return>
<msg time="2026-04-08T01:02:08.313656" level="INFO">${raft_state} = Follower</msg>
<var>${raft_state}</var>
<arg>RaftState</arg>
<arg>${shard_name}</arg>
<arg>${shard_type}</arg>
<arg>${member_index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft property.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T01:02:08.039748" elapsed="0.273933"/>
</kw>
<return>
<value>${raft_state}</value>
<status status="PASS" start="2026-04-08T01:02:08.313736" elapsed="0.000025"/>
</return>
<msg time="2026-04-08T01:02:08.313881" level="INFO">${raft_state} = Follower</msg>
<var>${raft_state}</var>
<arg>shard_name=${shard_name}</arg>
<arg>shard_type=${ds_type}</arg>
<arg>member_index=${index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft status.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T01:02:08.038999" elapsed="0.274907"/>
</kw>
<if>
<branch type="IF" condition="'Follower' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${follower_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-08T01:02:08.314219" elapsed="0.000191"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:08.313985" elapsed="0.000462"/>
</branch>
<branch type="ELSE IF" condition="'Leader' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${leader_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:08.314616" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:08.314471" 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 with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:08.314834" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:08.314692" elapsed="0.000191"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:08.313967" elapsed="0.000938"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T01:02:08.038827" elapsed="0.276102"/>
</iter>
<iter>
<kw name="Get_Raft_State_Of_Shard_At_Member" owner="ClusterManagement">
<kw name="Get_Raft_Property_From_Shard_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:02:08.317269" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:02:08.316933" elapsed="0.000384"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T01:02:08.317364" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T01:02:08.317510" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T01:02:08.316594" elapsed="0.000941"/>
</kw>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Get_As_Json_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:02:08.403582" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:02:08.403207" elapsed="0.000403"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T01:02:08.404344" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T01:02:08.404101" elapsed="0.000313">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-08T01:02:08.404546" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T01:02:08.403771" elapsed="0.000800"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:02:08.405117" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:02:08.404737" elapsed="0.000406"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T01:02:08.405481" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-08T01:02:08.405619" level="INFO">${template} = /rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T01:02:08.405346" elapsed="0.000308"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:02:08.406049" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:02:08.405810" elapsed="0.000283"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:02:08.407037" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:02:08.406786" elapsed="0.000295"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-08T01:02:08.407520" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-08T01:02:08.407258" elapsed="0.000288"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:08.407863" elapsed="0.000024"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:08.408066" elapsed="0.000024"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:08.408254" elapsed="0.000022"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-08T01:02:08.407730" elapsed="0.000582"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-08T01:02:08.407595" elapsed="0.000745"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-08T01:02:08.408382" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T01:02:08.408536" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-08T01:02:08.406465" elapsed="0.002096"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:08.406175" elapsed="0.002417"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:08.408764" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:08.408616" elapsed="0.000202"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:08.406141" elapsed="0.002697"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:02:08.409429" level="INFO">${final_text} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:02:08.408983" elapsed="0.000474"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T01:02:08.409504" elapsed="0.000028"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="PASS" start="2026-04-08T01:02:08.402517" elapsed="0.007107"/>
</kw>
<msg time="2026-04-08T01:02:08.409677" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:02:08.389765" elapsed="0.019991"/>
</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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:08.423815" elapsed="0.000041"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:08.436323" elapsed="0.000041"/>
</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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:08.448819" elapsed="0.000042"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:08.449646" elapsed="0.000038"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:08.450436" elapsed="0.000036"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:08.450991" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:08.450844" elapsed="0.000202"/>
</branch>
<status status="NOT RUN" start="2026-04-08T01:02:08.450828" elapsed="0.000242"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:08.451243" elapsed="0.000022"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:08.451433" elapsed="0.000020"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:08.451617" elapsed="0.000021"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-08T01:02:08.450779" elapsed="0.000912"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-08T01:02:08.450553" elapsed="0.001178"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:08.452574" elapsed="0.000035"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-08T01:02:08.452690" elapsed="0.000047"/>
</return>
<msg time="2026-04-08T01:02:08.452911" level="INFO">${uri} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-08T01:02:08.383629" elapsed="0.069394"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T01:02:08.455866" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T01:02:08.455612" elapsed="0.000320">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-08T01:02:08.456120" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T01:02:08.455168" elapsed="0.001013"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:08.456695" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:08.456315" elapsed="0.000445"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:02:08.457384" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:02:08.457064" elapsed="0.000345"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:08.456798" elapsed="0.000658"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:08.456262" elapsed="0.001232"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:02:08.460709" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:02:08.458344" elapsed="0.002411"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-08T01:02:08.460831" elapsed="0.000063"/>
</return>
<msg time="2026-04-08T01:02:08.461228" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T01:02:08.454025" elapsed="0.007310"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T01:02:08.464118" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T01:02:08.463877" elapsed="0.000319">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-08T01:02:08.464418" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T01:02:08.463441" elapsed="0.001021"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-08T01:02:08.464837" elapsed="0.000079"/>
</return>
<status status="PASS" start="2026-04-08T01:02:08.464592" elapsed="0.000396"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:08.464541" elapsed="0.000485"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:08.465788" elapsed="0.000038"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:08.466637" elapsed="0.000036"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-08T01:02:08.466745" elapsed="0.000047"/>
</return>
<msg time="2026-04-08T01:02:08.468967" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T01:02:08.462148" elapsed="0.006923"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:02:08.472862" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:02:08.472479" elapsed="0.000480"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:02:08.474086" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:02:08.473701" elapsed="0.000638"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T01:02:08.496124" level="INFO">GET Request : url=http://10.30.171.110:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 path_url=/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0bpvxx3soilt318jo6w4kocddk0.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T01:02:08.497062" level="INFO">GET Response : url=http://10.30.171.110:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Transfer-Encoding': 'chunked'} 
 body={"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","encrypted-passwords","hidden-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-private-keys","asymmetrically-encrypted-value-format","cleartext-private-keys","cms-encrypted-data-format","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["client-ident-hostbased","ssh-client-keepalives","client-ident-password","client-ident-publickey"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-ex... (set the log level to DEBUG or TRACE to see the full content) 
 </msg>
<msg time="2026-04-08T01:02:08.497579" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T01:02:08.476624" elapsed="0.021015"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:08.474466" elapsed="0.023294"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:08.498445" elapsed="0.000054"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:08.497854" elapsed="0.000759"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:08.474416" elapsed="0.024277"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:02:08.507046" level="INFO">{"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","encrypted-passwords","hidden-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-private-keys","asymmetrically-encrypted-value-format","cleartext-private-keys","cms-encrypted-data-format","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["client-ident-hostbased","ssh-client-keepalives","client-ident-password","client-ident-publickey"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-experimenter-types?revision=2015-10-20","namespace":"urn:opendaylight:openflowplugin:experimenter:types","conformance-type":"import"},{"name":"ietf-ip_2018-02-22","revision":"2018-02-22","schema":"/rests/modules/ietf-ip?revision=2018-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-ip","conformance-type":"import","feature":["ipv6-privacy-autoconf","ipv4-non-contiguous-netmasks"]},{"name":"ietf-tcp-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-client","conformance-type":"import","feature":["local-binding-supported","tcp-client-keepalives"]},{"name":"node-config_2014-10-15","revision":"2014-10-15","schema":"/rests/modules/node-config?revision=2014-10-15","namespace":"urn:opendaylight:module:config","conformance-type":"import"},{"name":"ietf-restconf_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf","conformance-type":"import"},{"name":"ietf-datastores_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-datastores?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-datastores","conformance-type":"import"},{"name":"ietf-yang-patch_2017-02-22","revision":"2017-02-22","schema":"/rests/modules/ietf-yang-patch?revision=2017-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-patch","conformance-type":"import"},{"name":"sal-group_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-group?revision=2013-09-18","namespace":"urn:opendaylight:group:service","conformance-type":"import"},{"name":"odl-codegen-extensions_2024-06-27","revision":"2024-06-27","schema":"/rests/modules/odl-codegen-extensions?revision=2024-06-27","namespace":"urn:opendaylight:yang:extension:codegen","conformance-type":"import"},{"name":"sal-meter_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-meter?revision=2013-09-18","namespace":"urn:opendaylight:meter:service","conformance-type":"import"},{"name":"ietf-interfaces_2018-02-20","revision":"2018-02-20","schema":"/rests/modules/ietf-interfaces?revision=2018-02-20","namespace":"urn:ietf:params:xml:ns:yang:ietf-interfaces","conformance-type":"import","feature":["pre-provisioning","if-mib","arbitrary-names"]},{"name":"opendaylight-l2-types_2013-08-27","revision":"2013-08-27","schema":"/rests/modules/opendaylight-l2-types?revision=2013-08-27","namespace":"urn:opendaylight:l2:types","conformance-type":"import"},{"name":"opendaylight-flow-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-flow-types?revision=2013-10-26","namespace":"urn:opendaylight:flow:types","conformance-type":"import"},{"name":"lldp-speaker-config_2016-05-12","revision":"2016-05-12","schema":"/rests/modules/lldp-speaker-config?revision=2016-05-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker:config","conformance-type":"import"},{"name":"aaa-cert_2015-11-26","revision":"2015-11-26","schema":"/rests/modules/aaa-cert?revision=2015-11-26","namespace":"urn:opendaylight:yang:aaa:cert","conformance-type":"import"},{"name":"openflow-action_2015-02-03","revision":"2015-02-03","schema":"/rests/modules/openflow-action?revision=2015-02-03","namespace":"urn:opendaylight:openflow:common:action","conformance-type":"import"},{"name":"openflow-approved-extensions_2016-08-02","revision":"2016-08-02","schema":"/rests/modules/openflow-approved-extensions?revision=2016-08-02","namespace":"urn:opendaylight:openflow:approved:extensions","conformance-type":"import"},{"name":"nc-notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/nc-notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netmod:notification","conformance-type":"import"},{"name":"ietf-netconf-nmda_2019-01-07","revision":"2019-01-07","schema":"/rests/modules/ietf-netconf-nmda?revision=2019-01-07","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-nmda","conformance-type":"import","feature":["with-defaults","origin"]},{"name":"ietf-tcp-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-common","conformance-type":"import","feature":["keepalives-supported"]},{"name":"network-topology_2013-10-21","revision":"2013-10-21","schema":"/rests/modules/network-topology?revision=2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:network-topology","conformance-type":"import"},{"name":"aaa-encrypt-service-config_2024-02-02","revision":"2024-02-02","schema":"/rests/modules/aaa-encrypt-service-config?revision=2024-02-02","namespace":"config:aaa:authn:encrypt:service:config","conformance-type":"import"},{"name":"openflow-instruction_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-instruction?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:instruction","conformance-type":"import"},{"name":"ietf-tls-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-client","conformance-type":"import","feature":["client-ident-x509-cert","server-auth-x509-cert"]},{"name":"opendaylight-group-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-group-statistics?revision=2013-11-11","namespace":"urn:opendaylight:group:statistics","conformance-type":"import"},{"name":"cluster-admin_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/cluster-admin?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:cluster:admin","conformance-type":"import"},{"name":"opendaylight-flow-statistics_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-flow-statistics?revision=2013-08-19","namespace":"urn:opendaylight:flow:statistics","conformance-type":"import"},{"name":"opendaylight-table-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-table-types?revision=2013-10-26","namespace":"urn:opendaylight:table:types","conformance-type":"import"},{"name":"forwarding-rules-manager-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/forwarding-rules-manager-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:forwardingrules-manager:config","conformance-type":"import"},{"name":"odl-srm-types_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-types?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:types","conformance-type":"import"},{"name":"ietf-x509-cert-to-name_2014-12-10","revision":"2014-12-10","schema":"/rests/modules/ietf-x509-cert-to-name?revision=2014-12-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-x509-cert-to-name","conformance-type":"import"},{"name":"flow-node-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-node-inventory?revision=2013-08-19","namespace":"urn:opendaylight:flow:inventory","conformance-type":"import"},{"name":"flow-errors_2013-11-16","revision":"2013-11-16","schema":"/rests/modules/flow-errors?revision=2013-11-16","namespace":"urn:opendaylight:flow:errors","conformance-type":"import"},{"name":"ietf-netconf_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:netconf:base:1.0","conformance-type":"import","feature":["xpath","url","rollback-on-error","validate","candidate","confirmed-commit","startup","writable-running"]},{"name":"iana-ssh-public-key-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-public-key-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-public-key-algs","conformance-type":"import"},{"name":"aaa-cert-mdsal_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/aaa-cert-mdsal?revision=2016-03-21","namespace":"urn:opendaylight:yang:aaa:cert:mdsal","conformance-type":"import"},{"name":"odl-device-notification_2024-02-18","revision":"2024-02-18","schema":"/rests/modules/odl-device-notification?revision=2024-02-18","namespace":"urn:opendaylight:device:notification","conformance-type":"import"},{"name":"ietf-origin_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-origin?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-origin","conformance-type":"import"},{"name":"openflow-augments_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-augments?revision=2015-02-25","namespace":"urn:opendaylight:openflow:augments","conformance-type":"import"},{"name":"iana-ssh-encryption-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-encryption-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-encryption-algs","conformance-type":"import"},{"name":"ietf-truststore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-truststore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-truststore","conformance-type":"import","feature":["inline-definitions-supported"]},{"name":"distributed-datastore-provider_2025-01-30","revision":"2025-01-30","schema":"/rests/modules/distributed-datastore-provider?revision=2025-01-30","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:distributed-datastore-provider","conformance-type":"import"},{"name":"opendaylight-group-types_2013-10-18","revision":"2013-10-18","schema":"/rests/modules/opendaylight-group-types?revision=2013-10-18","namespace":"urn:opendaylight:group:types","conformance-type":"import"},{"name":"sal-remote-augment_2023-11-03","revision":"2023-11-03","schema":"/rests/modules/sal-remote-augment?revision=2023-11-03","namespace":"urn:sal:restconf:event:subscription","conformance-type":"import"},{"name":"opendaylight-ipv6-arbitrary-bitmask-fields_2016-02-24","revision":"2016-02-24","schema":"/rests/modules/opendaylight-ipv6-arbitrary-bitmask-fields?revision=2016-02-24","namespace":"urn:opendaylight:opendaylight-ipv6-arbitrary-bitmask-fields","conformance-type":"import"},{"name":"sal-flows-batch_2016-03-14","revision":"2016-03-14","schema":"/rests/modules/sal-flows-batch?revision=2016-03-14","namespace":"urn:opendaylight:flows:service","conformance-type":"import"},{"name":"ietf-tls-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-common","conformance-type":"import","feature":["hello-params","tls12","tls13"]},{"name":"openflow-types_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-types?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:types","conformance-type":"import"},{"name":"ietf-netconf-with-defaults_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf-with-defaults?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults","conformance-type":"import"},{"name":"odl-srm-ops_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-ops?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:ops","conformance-type":"import"},{"name":"odl-general-entity_2015-09-30","revision":"2015-09-30","schema":"/rests/modules/odl-general-entity?revision=2015-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:mdsal:core:general-entity","conformance-type":"import"},{"name":"iana-ssh-key-exchange-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-key-exchange-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-key-exchange-algs","conformance-type":"import"},{"name":"node-ssl-connection-error_2019-07-23","revision":"2019-07-23","schema":"/rests/modules/node-ssl-connection-error?revision=2019-07-23","namespace":"urn:opendaylight:node-ssl-connection-error:service","conformance-type":"import"},{"name":"openflow-protocol_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-protocol?revision=2013-07-31","namespace":"urn:opendaylight:openflow:protocol","conformance-type":"import"},{"name":"ietf-udp-server_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-server?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-server","conformance-type":"import"},{"name":"ietf-keystore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-keystore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-keystore","conformance-type":"import","feature":["asymmetric-keys","inline-definitions-supported"]},{"name":"aaa_2016-12-14","revision":"2016-12-14","schema":"/rests/modules/aaa?revision=2016-12-14","namespace":"urn:opendaylight:params:xml:ns:yang:aaa","conformance-type":"import"},{"name":"aaa-cert-rpc_2015-12-15","revision":"2015-12-15","schema":"/rests/modules/aaa-cert-rpc?revision=2015-12-15","namespace":"urn:opendaylight:yang:aaa:cert:rpc","conformance-type":"import"},{"name":"system-notifications_2013-09-27","revision":"2013-09-27","schema":"/rests/modules/system-notifications?revision=2013-09-27","namespace":"urn:opendaylight:openflow:system","conformance-type":"import"},{"name":"sal-flat-batch_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/sal-flat-batch?revision=2016-03-21","namespace":"urn:opendaylight:flat-batch:service","conformance-type":"import"},{"name":"notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netconf:notification:1.0","conformance-type":"import"},{"name":"sal-remote_2014-01-14","revision":"2014-01-14","schema":"/rests/modules/sal-remote?revision=2014-01-14","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:remote","conformance-type":"import"},{"name":"yang-ext_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/yang-ext?revision=2013-07-09","namespace":"urn:opendaylight:yang:extension:yang-ext","conformance-type":"import"},{"name":"opendaylight-multipart-types_2017-01-12","revision":"2017-01-12","schema":"/rests/modules/opendaylight-multipart-types?revision=2017-01-12","namespace":"urn:opendaylight:multipart:types","conformance-type":"import"},{"name":"opendaylight-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-inventory?revision=2013-08-19","namespace":"urn:opendaylight:inventory","conformance-type":"import"},{"name":"sal-queue_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-queue?revision=2015-03-05","namespace":"urn:opendaylight:queue:service","conformance-type":"import"},{"name":"sal-groups-batch_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/sal-groups-batch?revision=2016-03-15","namespace":"urn:opendaylight:groups:service","conformance-type":"import"},{"name":"arbitrator-reconcile_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/arbitrator-reconcile?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:arbitrator-reconcile:service","conformance-type":"import"},{"name":"ietf-yang-metadata_2016-08-05","revision":"2016-08-05","schema":"/rests/modules/ietf-yang-metadata?revision=2016-08-05","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-metadata","conformance-type":"import"},{"name":"opendaylight-arbitrary-bitmask-fields_2016-01-30","revision":"2016-01-30","schema":"/rests/modules/opendaylight-arbitrary-bitmask-fields?revision=2016-01-30","namespace":"urn:opendaylight:arbitrary:bitmask:fields","conformance-type":"import"},{"name":"ietf-udp-client_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-client?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-client","conformance-type":"import","feature":["local-binding"]},{"name":"opendaylight-meter-types_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/opendaylight-meter-types?revision=2013-09-18","namespace":"urn:opendaylight:meter:types","conformance-type":"import"},{"name":"opendaylight-action-types_2013-11-12","revision":"2013-11-12","schema":"/rests/modules/opendaylight-action-types?revision=2013-11-12","namespace":"urn:opendaylight:action:types","conformance-type":"import"},{"name":"sal-role_2015-07-27","revision":"2015-07-27","schema":"/rests/modules/sal-role?revision=2015-07-27","namespace":"urn:opendaylight:role:service","conformance-type":"import"},{"name":"openflow-provider-config_2016-05-10","revision":"2016-05-10","schema":"/rests/modules/openflow-provider-config?revision=2016-05-10","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:provider:config","conformance-type":"import"},{"name":"odl-serviceutils-upgrade_2018-07-02","revision":"2018-07-02","schema":"/rests/modules/odl-serviceutils-upgrade?revision=2018-07-02","namespace":"urn:opendaylight:serviceutils:upgrade","conformance-type":"import"},{"name":"opendaylight-match-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-match-types?revision=2013-10-26","namespace":"urn:opendaylight:model:match:types","conformance-type":"import"},{"name":"ietf-restconf-server_2024-08-14","revision":"2024-08-14","schema":"/rests/modules/ietf-restconf-server?revision=2024-08-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-server","conformance-type":"import","feature":["http-listen","https-listen"]},{"name":"reconciliation-result-state_2017-07-13","revision":"2017-07-13","schema":"/rests/modules/reconciliation-result-state?revision=2017-07-13","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:rf:state","conformance-type":"import"},{"name":"onf-extensions_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/onf-extensions?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf","conformance-type":"import"},{"name":"sal-table_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/sal-table?revision=2013-10-26","namespace":"urn:opendaylight:table:service","conformance-type":"import"},{"name":"iana-http-versions_2026-02-04","revision":"2026-02-04","schema":"/rests/modules/iana-http-versions?revision=2026-02-04","namespace":"urn:ietf:params:xml:ns:yang:iana-http-versions","conformance-type":"import"},{"name":"opendaylight-direct-statistics_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/opendaylight-direct-statistics?revision=2016-05-11","namespace":"urn:opendaylight:direct:statistics","conformance-type":"import"},{"name":"opendaylight-port-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-port-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:port","conformance-type":"import"},{"name":"sal-async-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/sal-async-config?revision=2017-06-19","namespace":"urn:opendaylight:async-config:service","conformance-type":"import"},{"name":"aaa-password-service-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-password-service-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:password:service:config","conformance-type":"import"},{"name":"ietf-yang-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-yang-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-types","conformance-type":"import"},{"name":"opendaylight-queue-statistics_2013-12-16","revision":"2013-12-16","schema":"/rests/modules/opendaylight-queue-statistics?revision=2013-12-16","namespace":"urn:opendaylight:queue:statistics","conformance-type":"import"},{"name":"sal-bundle_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/sal-bundle?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf:bundle:service","conformance-type":"import"},{"name":"ietf-restconf-subscribed-notifications_2019-11-17","revision":"2019-11-17","schema":"/rests/modules/ietf-restconf-subscribed-notifications?revision=2019-11-17","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-subscribed-notifications","conformance-type":"import"},{"name":"sal-meters-batch_2016-03-16","revision":"2016-03-16","schema":"/rests/modules/sal-meters-batch?revision=2016-03-16","namespace":"urn:opendaylight:meters:service","conformance-type":"import"},{"name":"odl-entity-owners","revision":"","schema":"/rests/modules/odl-entity-owners","namespace":"urn:opendaylight:params:xml:ns:yang:controller:entity-owners","conformance-type":"import"},{"name":"sal-experimenter-mp-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-mp-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-mp-message:service","conformance-type":"import"},{"name":"packet-processing_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/packet-processing?revision=2013-07-09","namespace":"urn:opendaylight:packet:service","conformance-type":"import"},{"name":"openflow-configuration_2014-06-30","revision":"2014-06-30","schema":"/rests/modules/openflow-configuration?revision=2014-06-30","namespace":"urn:opendaylight:openflow:config","conformance-type":"import"},{"name":"odl-srm-rpcs_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-rpcs?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:rpc","conformance-type":"import"},{"name":"ietf-netconf-acm_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-netconf-acm?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-acm","conformance-type":"import"},{"name":"iana-crypt-hash_2014-08-06","revision":"2014-08-06","schema":"/rests/modules/iana-crypt-hash?revision=2014-08-06","namespace":"urn:ietf:params:xml:ns:yang:iana-crypt-hash","conformance-type":"import","feature":["crypt-hash-sha-512","crypt-hash-sha-256","crypt-hash-md5"]},{"name":"openflow-extensible-match_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-extensible-match?revision=2015-02-25","namespace":"urn:opendaylight:openflow:oxm","conformance-type":"import"}],"module-set-id":"2"}}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:02:08.502530" elapsed="0.004889"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:08.501998" elapsed="0.005458"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:08.501951" elapsed="0.005530"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:02:08.510007" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:02:08.507789" elapsed="0.002264"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:08.507562" elapsed="0.002524"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:08.507544" elapsed="0.002566"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:02:08.510688" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:02:08.510312" elapsed="0.000402"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:08.511046" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:08.510806" elapsed="0.000297"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:02:08.511639" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:02:08.511335" elapsed="0.000330"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:08.511127" elapsed="0.000573"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:08.510787" elapsed="0.000935"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:02:08.512287" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:02:08.511903" elapsed="0.000411"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:08.512832" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:08.512405" elapsed="0.000487"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:02:08.513414" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:02:08.513076" elapsed="0.000364"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:08.512915" elapsed="0.000560"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:08.512386" elapsed="0.001111"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:02:08.513668" elapsed="0.000348"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T01:02:08.514507" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:02:08.514220" elapsed="0.000312"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T01:02:08.514708" elapsed="0.002229"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T01:02:08.500381" elapsed="0.016677"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T01:02:08.517451" elapsed="0.000046"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:02:08.517236" elapsed="0.000324"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:08.517177" elapsed="0.000419"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T01:02:08.526589" level="INFO">${text_normalized} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T01:02:08.518335" elapsed="0.008303"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T01:02:08.526715" elapsed="0.000063"/>
</return>
<msg time="2026-04-08T01:02:08.527034" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T01:02:08.469738" elapsed="0.057402"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T01:02:08.527608" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T01:02:08.527785" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="PASS" start="2026-04-08T01:02:08.326060" elapsed="0.201752"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Json_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:08.528133" elapsed="0.000107"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:08.527896" elapsed="0.000506"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:08.527878" elapsed="0.000551"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T01:02:08.528462" elapsed="0.000028"/>
</return>
<arg>session=${session}</arg>
<arg>folder=${RESTCONF_MODULES_DIR}</arg>
<arg>verify=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Add arguments sensible for JSON data, return Get_Templated response text.
Optionally, verification against JSON data (may be iterated) is called.
Only subset of JSON data is verified and returned if JMES path is specified in
file ${folder}/jmespath.expr.</doc>
<status status="PASS" start="2026-04-08T01:02:08.321837" elapsed="0.206753"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:08.317601" elapsed="0.211032"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:08.317584" elapsed="0.211072"/>
</if>
<kw name="Resolve_Shard_Type_Class" owner="ClusterManagement">
<if>
<branch type="IF" condition="'${shard_type}' == 'config'">
<return>
<value>DistributedConfigDatastore</value>
<status status="NOT RUN" start="2026-04-08T01:02:08.529300" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:02:08.529188" elapsed="0.000156"/>
</branch>
<branch type="ELSE IF" condition="'${shard_type}' == 'operational'">
<return>
<value>DistributedOperationalDatastore</value>
<status status="PASS" start="2026-04-08T01:02:08.529467" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-08T01:02:08.529366" elapsed="0.000158"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:08.529149" elapsed="0.000398"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized shard type: ${shard_type}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:08.529693" elapsed="0.000022"/>
</kw>
<msg time="2026-04-08T01:02:08.529813" level="INFO">${type_class} = DistributedOperationalDatastore</msg>
<var>${type_class}</var>
<arg>shard_type=${shard_type}</arg>
<doc>Simple lookup for class name corresponding to desired type.</doc>
<status status="PASS" start="2026-04-08T01:02:08.528881" elapsed="0.000957"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:02:08.530392" level="INFO">${cluster_index} = 3</msg>
<var>${cluster_index}</var>
<arg>${member_index}+${NODE_ROLE_INDEX_START}-1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:02:08.530006" elapsed="0.000413"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:02:08.531041" level="INFO">${uri} = jolokia/read/org.opendaylight.controller:Category=Shards,name=member-3-shard-default-operational,type=DistributedOperationalDatastore</msg>
<var>${uri}</var>
<arg>${JOLOKIA_READ_URI}:Category=Shards,name=member-${cluster_index}-shard-${shard_name}-${shard_type},type=${type_class}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:02:08.530574" elapsed="0.000495"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:02:08.536855" level="INFO">jolokia/read/org.opendaylight.controller:Category=Shards,name=member-3-shard-default-operational,type=DistributedOperationalDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:02:08.536420" elapsed="0.000481"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:02:08.537525" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:02:08.537058" elapsed="0.000512"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T01:02:08.559300" level="INFO">GET Request : url=http://10.30.171.110:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-3-shard-default-operational,type=DistributedOperationalDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-3-shard-default-operational,type=DistributedOperationalDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T01:02:08.559435" level="INFO">GET Response : url=http://10.30.171.110:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-3-shard-default-operational,type=DistributedOperationalDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Wed, 08 Apr 2026 01:02:08 GMT', 'Expires': 'Wed, 08 Apr 2026 00:02:08 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-3-shard-default-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"ReadWriteTransactionCount":0,"SnapshotIndex":50,"InMemoryJournalLogSize":1,"ReplicatedToAllIndex":50,"Leader":"member-1-shard-default-operational","LastIndex":51,"RaftState":"Follower","LastApplied":51,"LastCommittedTransactionTime":"1970-01-01 00:00:00.000","PeerAddresses":"member-1-shard-default-operational: pekko:\/\/opendaylight-cluster-data@10.30.170.48:2550\/user\/shardmanager-operational\/member-1-shard-default-operational, member-2-shard-default-operational: pekko:\/\/opendaylight-cluster-data@10.30.170.131:2550\/user\/shardmanager-operational\/member-2-shard-default-operational","LastLogIndex":51,"LastLeadershipChangeTime":"2026-04-08 00:57:11.080","FollowerInitialSyncStatus":true,"FollowerInfo":[],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"731.9 μs","CurrentTerm":4,"LastTerm":4,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-default-operational","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":0,"TxCohortCacheSize":0,"PeerVotingStates":"member-1-shard-default-operational: true, member-2-shard-default-operational: true","LastLogTerm":4,"StatRetrievalError":null,"CommitIndex":51,"SnapshotTerm":4,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-3-shard-default-operational","LeadershipChangeCount":1,"InMemoryJournalDataSize":90011},"timestamp":1775610128,"status":200} 
 </msg>
<msg time="2026-04-08T01:02:08.559627" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T01:02:08.548960" elapsed="0.010775"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:08.537638" elapsed="0.022352"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:08.560193" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:08.560021" elapsed="0.000489"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:08.537620" elapsed="0.022915"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:02:08.569920" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-3-shard-default-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"ReadWriteTransactionCount":0,"SnapshotIndex":50,"InMemoryJournalLogSize":1,"ReplicatedToAllIndex":50,"Leader":"member-1-shard-default-operational","LastIndex":51,"RaftState":"Follower","LastApplied":51,"LastCommittedTransactionTime":"1970-01-01 00:00:00.000","PeerAddresses":"member-1-shard-default-operational: pekko:\/\/opendaylight-cluster-data@10.30.170.48:2550\/user\/shardmanager-operational\/member-1-shard-default-operational, member-2-shard-default-operational: pekko:\/\/opendaylight-cluster-data@10.30.170.131:2550\/user\/shardmanager-operational\/member-2-shard-default-operational","LastLogIndex":51,"LastLeadershipChangeTime":"2026-04-08 00:57:11.080","FollowerInitialSyncStatus":true,"FollowerInfo":[],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"731.9 μs","CurrentTerm":4,"LastTerm":4,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-default-operational","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":0,"TxCohortCacheSize":0,"PeerVotingStates":"member-1-shard-default-operational: true, member-2-shard-default-operational: true","LastLogTerm":4,"StatRetrievalError":null,"CommitIndex":51,"SnapshotTerm":4,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-3-shard-default-operational","LeadershipChangeCount":1,"InMemoryJournalDataSize":90011},"timestamp":1775610128,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:02:08.563711" elapsed="0.006348"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:08.561779" elapsed="0.008330"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:08.561760" elapsed="0.008388"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:02:08.573583" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:02:08.571120" elapsed="0.002561"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:08.570248" elapsed="0.003483"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:08.570230" elapsed="0.003539"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:02:08.575201" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:02:08.574433" elapsed="0.000830"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:08.575897" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:08.575431" elapsed="0.000553"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:02:08.576878" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:02:08.576378" elapsed="0.000545"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:08.576024" elapsed="0.000950"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:08.575412" elapsed="0.001597"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:02:08.578510" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:02:08.577681" elapsed="0.000889"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:08.579218" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:08.578738" elapsed="0.000568"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:02:08.580184" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:02:08.579674" elapsed="0.000558"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:08.579343" elapsed="0.000940"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:08.578719" elapsed="0.001598"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:02:08.580540" elapsed="0.000663"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T01:02:08.582019" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:02:08.581513" elapsed="0.000570"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T01:02:08.582561" elapsed="0.002388"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T01:02:08.561007" elapsed="0.024113"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T01:02:08.585336" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:02:08.585209" elapsed="0.000172"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:08.585190" elapsed="0.000213"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T01:02:08.589076" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-3-shard-default-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp"...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T01:02:08.585551" elapsed="0.003555"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T01:02:08.589178" elapsed="0.000031"/>
</return>
<msg time="2026-04-08T01:02:08.589338" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-3-shard-default-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp"...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T01:02:08.532024" elapsed="0.057340"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T01:02:08.589455" elapsed="0.000027"/>
</return>
<msg time="2026-04-08T01:02:08.589605" level="INFO">${data_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-3-shard-default-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp"...</msg>
<var>${data_text}</var>
<arg>uri=${uri}</arg>
<arg>session=${session}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-08T01:02:08.531299" elapsed="0.058332"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:02:08.590681" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-3-shard-default-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 177561012...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:02:08.590212" elapsed="0.000498"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-08T01:02:08.590759" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T01:02:08.590931" level="INFO">${data_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-3-shard-default-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 177561012...</msg>
<var>${data_object}</var>
<arg>${data_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-08T01:02:08.589854" elapsed="0.001107"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:02:08.591338" level="INFO">${value} = {'AbortTransactionsCount': 0, 'CommitIndex': 51, 'CommittedTransactionsCount': 0, 'CurrentTerm': 4, 'FailedReadTransactionsCount': 0, 'FailedTransactionsCount': 0, 'FollowerInfo': [], 'FollowerInitial...</msg>
<var>${value}</var>
<arg>${data_object}</arg>
<arg>value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:02:08.591120" elapsed="0.000245"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:02:08.591721" level="INFO">${raft_property} = Follower</msg>
<var>${raft_property}</var>
<arg>${value}</arg>
<arg>${property}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:02:08.591521" elapsed="0.000225"/>
</kw>
<return>
<value>${raft_property}</value>
<status status="PASS" start="2026-04-08T01:02:08.591792" elapsed="0.000027"/>
</return>
<msg time="2026-04-08T01:02:08.591940" level="INFO">${raft_state} = Follower</msg>
<var>${raft_state}</var>
<arg>RaftState</arg>
<arg>${shard_name}</arg>
<arg>${shard_type}</arg>
<arg>${member_index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft property.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T01:02:08.315981" elapsed="0.275984"/>
</kw>
<return>
<value>${raft_state}</value>
<status status="PASS" start="2026-04-08T01:02:08.592019" elapsed="0.000026"/>
</return>
<msg time="2026-04-08T01:02:08.592220" level="INFO">${raft_state} = Follower</msg>
<var>${raft_state}</var>
<arg>shard_name=${shard_name}</arg>
<arg>shard_type=${ds_type}</arg>
<arg>member_index=${index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft status.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T01:02:08.315272" elapsed="0.276975"/>
</kw>
<if>
<branch type="IF" condition="'Follower' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${follower_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-08T01:02:08.592544" elapsed="0.000188"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:08.592327" elapsed="0.000442"/>
</branch>
<branch type="ELSE IF" condition="'Leader' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${leader_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:08.592937" elapsed="0.000019"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:08.592793" elapsed="0.000196"/>
</branch>
<branch type="ELSE IF" condition="${validate}">
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized Raft state: ${raft_state}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:08.593194" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:08.593012" elapsed="0.000234"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:08.592310" elapsed="0.000958"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T01:02:08.315089" elapsed="0.278202"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-08T01:02:07.770494" elapsed="0.822828"/>
</for>
<return>
<value>${leader_list}</value>
<value>${follower_list}</value>
<status status="PASS" start="2026-04-08T01:02:08.593361" elapsed="0.000026"/>
</return>
<msg time="2026-04-08T01:02:08.593556" level="INFO">${leader_list} = [1]</msg>
<msg time="2026-04-08T01:02:08.593602" level="INFO">${follower_list} = [2, 3]</msg>
<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="PASS" start="2026-04-08T01:02:07.766463" elapsed="0.827162"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T01:02:08.594062" level="INFO">Length is 1.</msg>
<msg time="2026-04-08T01:02:08.594137" level="INFO">${leader_count} = 1</msg>
<var>${leader_count}</var>
<arg>${leader_list}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T01:02:08.593797" elapsed="0.000383"/>
</kw>
<if>
<branch type="IF" condition="${leader_count} &lt; 1">
<kw name="Fail" owner="BuiltIn">
<arg>No leader found.</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:08.594465" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:08.594251" elapsed="0.000267"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:08.594233" elapsed="0.000307"/>
</if>
<kw name="Length Should Be" owner="BuiltIn">
<msg time="2026-04-08T01:02:08.596679" level="INFO">Length is 1.</msg>
<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="PASS" start="2026-04-08T01:02:08.594677" elapsed="0.002047"/>
</kw>
<kw name="Get From List" owner="Collections">
<msg time="2026-04-08T01:02:08.597123" level="INFO">${leader} = 1</msg>
<var>${leader}</var>
<arg>${leader_list}</arg>
<arg>0</arg>
<doc>Returns the value specified with an ``index`` from ``list``.</doc>
<status status="PASS" start="2026-04-08T01:02:08.596925" elapsed="0.000224"/>
</kw>
<return>
<value>${leader}</value>
<value>${follower_list}</value>
<status status="PASS" start="2026-04-08T01:02:08.597262" elapsed="0.000030"/>
</return>
<arg>shard_name=${shard_name}</arg>
<arg>shard_type=${shard_type}</arg>
<arg>validate=True</arg>
<arg>member_index_list=${member_index_list}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<doc>Get role lists, validate there is one leader, return the leader and list of followers.
Optionally, issue GET to a simple restconf URL to make sure subsequent operations will not encounter 503.</doc>
<status status="PASS" start="2026-04-08T01:02:07.763830" elapsed="0.833587"/>
</kw>
<var name="${shard_name}">default</var>
<status status="PASS" start="2026-04-08T01:02:07.763608" elapsed="0.833855"/>
</iter>
<var>${shard_name}</var>
<value>@{shard_name_list}</value>
<status status="PASS" start="2026-04-08T01:02:05.966911" elapsed="2.630582"/>
</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="PASS" start="2026-04-08T01:02:05.966513" elapsed="2.631034"/>
</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-04-08T01:02:08.602603" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:02:08.602221" elapsed="0.000408"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:02:08.603089" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:02:08.602789" elapsed="0.000326"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T01:02:08.603174" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T01:02:08.603329" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T01:02:08.601833" elapsed="0.001520"/>
</kw>
<kw name="Sort List" owner="Collections">
<arg>${index_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="PASS" start="2026-04-08T01:02:08.603508" elapsed="0.000152"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:02:08.604169" level="INFO">${ds_type} = config</msg>
<var>${ds_type}</var>
<arg>'${shard_type}' != 'config'</arg>
<arg>operational</arg>
<arg>config</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:02:08.603821" elapsed="0.000375"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:02:08.604593" level="INFO">${leader_list} = []</msg>
<var>${leader_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:02:08.604358" elapsed="0.000260"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:02:08.605006" level="INFO">${follower_list} = []</msg>
<var>${follower_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:02:08.604767" elapsed="0.000287"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_Raft_State_Of_Shard_At_Member" owner="ClusterManagement">
<kw name="Get_Raft_Property_From_Shard_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:02:08.607485" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:02:08.607148" elapsed="0.000364"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T01:02:08.607558" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T01:02:08.607705" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T01:02:08.606801" elapsed="0.000928"/>
</kw>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Get_As_Json_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:02:08.694462" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:02:08.694074" elapsed="0.000416"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T01:02:08.695224" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T01:02:08.694984" elapsed="0.000312">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-08T01:02:08.695390" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T01:02:08.694653" elapsed="0.000761"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:02:08.695962" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:02:08.695579" elapsed="0.000412"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T01:02:08.696303" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-08T01:02:08.696484" level="INFO">${template} = /rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T01:02:08.696152" elapsed="0.000358"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:02:08.696912" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:02:08.696668" elapsed="0.000302"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:02:08.697915" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:02:08.697665" elapsed="0.000297"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-08T01:02:08.698404" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-08T01:02:08.698123" elapsed="0.000307"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:08.698742" elapsed="0.000021"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:08.698943" elapsed="0.000023"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:08.699116" elapsed="0.000020"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-08T01:02:08.698609" elapsed="0.000579"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-08T01:02:08.698477" elapsed="0.000741"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-08T01:02:08.699260" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T01:02:08.699417" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-08T01:02:08.697345" elapsed="0.002097"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:08.697039" elapsed="0.002434"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:08.699644" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:08.699497" elapsed="0.000201"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:08.697020" elapsed="0.002699"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:02:08.700300" level="INFO">${final_text} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:02:08.699859" elapsed="0.000469"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T01:02:08.700375" elapsed="0.000028"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="PASS" start="2026-04-08T01:02:08.693465" elapsed="0.007031"/>
</kw>
<msg time="2026-04-08T01:02:08.700548" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:02:08.680781" elapsed="0.019846"/>
</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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:08.713304" elapsed="0.000040"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:08.725926" elapsed="0.000041"/>
</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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:08.738543" elapsed="0.000040"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:08.739380" elapsed="0.000037"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:08.740151" elapsed="0.000051"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:08.740719" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:08.740573" elapsed="0.000203"/>
</branch>
<status status="NOT RUN" start="2026-04-08T01:02:08.740557" elapsed="0.000241"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:08.740972" elapsed="0.000022"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:08.741186" elapsed="0.000022"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:08.741377" elapsed="0.000021"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-08T01:02:08.740508" elapsed="0.000944"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-08T01:02:08.740285" elapsed="0.001206"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:08.742266" elapsed="0.000035"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-08T01:02:08.742384" elapsed="0.000048"/>
</return>
<msg time="2026-04-08T01:02:08.742602" level="INFO">${uri} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-08T01:02:08.674455" elapsed="0.068253"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T01:02:08.745698" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T01:02:08.745457" elapsed="0.000305">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-08T01:02:08.745953" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T01:02:08.745002" elapsed="0.000998"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:08.746599" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:08.746132" elapsed="0.000534"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:02:08.747278" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:02:08.746970" elapsed="0.000334"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:08.746705" elapsed="0.000645"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:08.746080" elapsed="0.001308"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:02:08.750579" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:02:08.748128" elapsed="0.002497"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-08T01:02:08.750701" elapsed="0.000061"/>
</return>
<msg time="2026-04-08T01:02:08.751012" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T01:02:08.743835" elapsed="0.007283"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T01:02:08.753770" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T01:02:08.753531" elapsed="0.000302">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-08T01:02:08.754021" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T01:02:08.753075" elapsed="0.000992"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-08T01:02:08.754617" elapsed="0.000077"/>
</return>
<status status="PASS" start="2026-04-08T01:02:08.754370" elapsed="0.000390"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:08.754146" elapsed="0.000652"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:08.755537" elapsed="0.000036"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:08.756364" elapsed="0.000036"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-08T01:02:08.756473" elapsed="0.000048"/>
</return>
<msg time="2026-04-08T01:02:08.758804" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T01:02:08.751939" elapsed="0.006973"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:02:08.762928" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:02:08.762544" elapsed="0.000482"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:02:08.764144" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:02:08.763762" elapsed="0.000495"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T01:02:08.774565" level="INFO">GET Request : url=http://10.30.170.48:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 path_url=/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01s3bfo0y24i1es90l47mavglv0.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T01:02:08.774981" level="INFO">GET Response : url=http://10.30.170.48:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Transfer-Encoding': 'chunked'} 
 body={"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","encrypted-passwords","hidden-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-private-keys","asymmetrically-encrypted-value-format","cleartext-private-keys","cms-encrypted-data-format","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["client-ident-hostbased","ssh-client-keepalives","client-ident-password","client-ident-publickey"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-ex... (set the log level to DEBUG or TRACE to see the full content) 
 </msg>
<msg time="2026-04-08T01:02:08.775197" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T01:02:08.766677" elapsed="0.008547"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:08.764384" elapsed="0.010896"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:08.775574" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:08.775324" elapsed="0.000325"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:08.764334" elapsed="0.011352"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:02:08.780937" level="INFO">{"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","encrypted-passwords","hidden-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-private-keys","asymmetrically-encrypted-value-format","cleartext-private-keys","cms-encrypted-data-format","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["client-ident-hostbased","ssh-client-keepalives","client-ident-password","client-ident-publickey"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-experimenter-types?revision=2015-10-20","namespace":"urn:opendaylight:openflowplugin:experimenter:types","conformance-type":"import"},{"name":"ietf-ip_2018-02-22","revision":"2018-02-22","schema":"/rests/modules/ietf-ip?revision=2018-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-ip","conformance-type":"import","feature":["ipv6-privacy-autoconf","ipv4-non-contiguous-netmasks"]},{"name":"ietf-tcp-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-client","conformance-type":"import","feature":["local-binding-supported","tcp-client-keepalives"]},{"name":"node-config_2014-10-15","revision":"2014-10-15","schema":"/rests/modules/node-config?revision=2014-10-15","namespace":"urn:opendaylight:module:config","conformance-type":"import"},{"name":"ietf-restconf_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf","conformance-type":"import"},{"name":"ietf-datastores_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-datastores?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-datastores","conformance-type":"import"},{"name":"ietf-yang-patch_2017-02-22","revision":"2017-02-22","schema":"/rests/modules/ietf-yang-patch?revision=2017-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-patch","conformance-type":"import"},{"name":"sal-group_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-group?revision=2013-09-18","namespace":"urn:opendaylight:group:service","conformance-type":"import"},{"name":"odl-codegen-extensions_2024-06-27","revision":"2024-06-27","schema":"/rests/modules/odl-codegen-extensions?revision=2024-06-27","namespace":"urn:opendaylight:yang:extension:codegen","conformance-type":"import"},{"name":"sal-meter_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-meter?revision=2013-09-18","namespace":"urn:opendaylight:meter:service","conformance-type":"import"},{"name":"ietf-interfaces_2018-02-20","revision":"2018-02-20","schema":"/rests/modules/ietf-interfaces?revision=2018-02-20","namespace":"urn:ietf:params:xml:ns:yang:ietf-interfaces","conformance-type":"import","feature":["pre-provisioning","if-mib","arbitrary-names"]},{"name":"opendaylight-l2-types_2013-08-27","revision":"2013-08-27","schema":"/rests/modules/opendaylight-l2-types?revision=2013-08-27","namespace":"urn:opendaylight:l2:types","conformance-type":"import"},{"name":"opendaylight-flow-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-flow-types?revision=2013-10-26","namespace":"urn:opendaylight:flow:types","conformance-type":"import"},{"name":"lldp-speaker-config_2016-05-12","revision":"2016-05-12","schema":"/rests/modules/lldp-speaker-config?revision=2016-05-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker:config","conformance-type":"import"},{"name":"aaa-cert_2015-11-26","revision":"2015-11-26","schema":"/rests/modules/aaa-cert?revision=2015-11-26","namespace":"urn:opendaylight:yang:aaa:cert","conformance-type":"import"},{"name":"openflow-action_2015-02-03","revision":"2015-02-03","schema":"/rests/modules/openflow-action?revision=2015-02-03","namespace":"urn:opendaylight:openflow:common:action","conformance-type":"import"},{"name":"openflow-approved-extensions_2016-08-02","revision":"2016-08-02","schema":"/rests/modules/openflow-approved-extensions?revision=2016-08-02","namespace":"urn:opendaylight:openflow:approved:extensions","conformance-type":"import"},{"name":"nc-notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/nc-notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netmod:notification","conformance-type":"import"},{"name":"ietf-netconf-nmda_2019-01-07","revision":"2019-01-07","schema":"/rests/modules/ietf-netconf-nmda?revision=2019-01-07","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-nmda","conformance-type":"import","feature":["with-defaults","origin"]},{"name":"ietf-tcp-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-common","conformance-type":"import","feature":["keepalives-supported"]},{"name":"network-topology_2013-10-21","revision":"2013-10-21","schema":"/rests/modules/network-topology?revision=2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:network-topology","conformance-type":"import"},{"name":"aaa-encrypt-service-config_2024-02-02","revision":"2024-02-02","schema":"/rests/modules/aaa-encrypt-service-config?revision=2024-02-02","namespace":"config:aaa:authn:encrypt:service:config","conformance-type":"import"},{"name":"openflow-instruction_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-instruction?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:instruction","conformance-type":"import"},{"name":"ietf-tls-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-client","conformance-type":"import","feature":["client-ident-x509-cert","server-auth-x509-cert"]},{"name":"opendaylight-group-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-group-statistics?revision=2013-11-11","namespace":"urn:opendaylight:group:statistics","conformance-type":"import"},{"name":"cluster-admin_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/cluster-admin?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:cluster:admin","conformance-type":"import"},{"name":"opendaylight-flow-statistics_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-flow-statistics?revision=2013-08-19","namespace":"urn:opendaylight:flow:statistics","conformance-type":"import"},{"name":"opendaylight-table-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-table-types?revision=2013-10-26","namespace":"urn:opendaylight:table:types","conformance-type":"import"},{"name":"forwarding-rules-manager-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/forwarding-rules-manager-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:forwardingrules-manager:config","conformance-type":"import"},{"name":"odl-srm-types_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-types?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:types","conformance-type":"import"},{"name":"ietf-x509-cert-to-name_2014-12-10","revision":"2014-12-10","schema":"/rests/modules/ietf-x509-cert-to-name?revision=2014-12-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-x509-cert-to-name","conformance-type":"import"},{"name":"flow-node-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-node-inventory?revision=2013-08-19","namespace":"urn:opendaylight:flow:inventory","conformance-type":"import"},{"name":"flow-errors_2013-11-16","revision":"2013-11-16","schema":"/rests/modules/flow-errors?revision=2013-11-16","namespace":"urn:opendaylight:flow:errors","conformance-type":"import"},{"name":"ietf-netconf_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:netconf:base:1.0","conformance-type":"import","feature":["xpath","url","rollback-on-error","validate","candidate","confirmed-commit","startup","writable-running"]},{"name":"iana-ssh-public-key-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-public-key-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-public-key-algs","conformance-type":"import"},{"name":"aaa-cert-mdsal_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/aaa-cert-mdsal?revision=2016-03-21","namespace":"urn:opendaylight:yang:aaa:cert:mdsal","conformance-type":"import"},{"name":"odl-device-notification_2024-02-18","revision":"2024-02-18","schema":"/rests/modules/odl-device-notification?revision=2024-02-18","namespace":"urn:opendaylight:device:notification","conformance-type":"import"},{"name":"ietf-origin_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-origin?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-origin","conformance-type":"import"},{"name":"openflow-augments_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-augments?revision=2015-02-25","namespace":"urn:opendaylight:openflow:augments","conformance-type":"import"},{"name":"iana-ssh-encryption-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-encryption-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-encryption-algs","conformance-type":"import"},{"name":"ietf-truststore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-truststore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-truststore","conformance-type":"import","feature":["inline-definitions-supported"]},{"name":"distributed-datastore-provider_2025-01-30","revision":"2025-01-30","schema":"/rests/modules/distributed-datastore-provider?revision=2025-01-30","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:distributed-datastore-provider","conformance-type":"import"},{"name":"opendaylight-group-types_2013-10-18","revision":"2013-10-18","schema":"/rests/modules/opendaylight-group-types?revision=2013-10-18","namespace":"urn:opendaylight:group:types","conformance-type":"import"},{"name":"sal-remote-augment_2023-11-03","revision":"2023-11-03","schema":"/rests/modules/sal-remote-augment?revision=2023-11-03","namespace":"urn:sal:restconf:event:subscription","conformance-type":"import"},{"name":"opendaylight-ipv6-arbitrary-bitmask-fields_2016-02-24","revision":"2016-02-24","schema":"/rests/modules/opendaylight-ipv6-arbitrary-bitmask-fields?revision=2016-02-24","namespace":"urn:opendaylight:opendaylight-ipv6-arbitrary-bitmask-fields","conformance-type":"import"},{"name":"sal-flows-batch_2016-03-14","revision":"2016-03-14","schema":"/rests/modules/sal-flows-batch?revision=2016-03-14","namespace":"urn:opendaylight:flows:service","conformance-type":"import"},{"name":"ietf-tls-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-common","conformance-type":"import","feature":["hello-params","tls12","tls13"]},{"name":"openflow-types_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-types?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:types","conformance-type":"import"},{"name":"ietf-netconf-with-defaults_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf-with-defaults?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults","conformance-type":"import"},{"name":"odl-srm-ops_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-ops?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:ops","conformance-type":"import"},{"name":"odl-general-entity_2015-09-30","revision":"2015-09-30","schema":"/rests/modules/odl-general-entity?revision=2015-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:mdsal:core:general-entity","conformance-type":"import"},{"name":"iana-ssh-key-exchange-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-key-exchange-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-key-exchange-algs","conformance-type":"import"},{"name":"node-ssl-connection-error_2019-07-23","revision":"2019-07-23","schema":"/rests/modules/node-ssl-connection-error?revision=2019-07-23","namespace":"urn:opendaylight:node-ssl-connection-error:service","conformance-type":"import"},{"name":"openflow-protocol_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-protocol?revision=2013-07-31","namespace":"urn:opendaylight:openflow:protocol","conformance-type":"import"},{"name":"ietf-udp-server_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-server?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-server","conformance-type":"import"},{"name":"ietf-keystore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-keystore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-keystore","conformance-type":"import","feature":["asymmetric-keys","inline-definitions-supported"]},{"name":"aaa_2016-12-14","revision":"2016-12-14","schema":"/rests/modules/aaa?revision=2016-12-14","namespace":"urn:opendaylight:params:xml:ns:yang:aaa","conformance-type":"import"},{"name":"aaa-cert-rpc_2015-12-15","revision":"2015-12-15","schema":"/rests/modules/aaa-cert-rpc?revision=2015-12-15","namespace":"urn:opendaylight:yang:aaa:cert:rpc","conformance-type":"import"},{"name":"system-notifications_2013-09-27","revision":"2013-09-27","schema":"/rests/modules/system-notifications?revision=2013-09-27","namespace":"urn:opendaylight:openflow:system","conformance-type":"import"},{"name":"sal-flat-batch_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/sal-flat-batch?revision=2016-03-21","namespace":"urn:opendaylight:flat-batch:service","conformance-type":"import"},{"name":"notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netconf:notification:1.0","conformance-type":"import"},{"name":"sal-remote_2014-01-14","revision":"2014-01-14","schema":"/rests/modules/sal-remote?revision=2014-01-14","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:remote","conformance-type":"import"},{"name":"yang-ext_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/yang-ext?revision=2013-07-09","namespace":"urn:opendaylight:yang:extension:yang-ext","conformance-type":"import"},{"name":"opendaylight-multipart-types_2017-01-12","revision":"2017-01-12","schema":"/rests/modules/opendaylight-multipart-types?revision=2017-01-12","namespace":"urn:opendaylight:multipart:types","conformance-type":"import"},{"name":"opendaylight-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-inventory?revision=2013-08-19","namespace":"urn:opendaylight:inventory","conformance-type":"import"},{"name":"sal-queue_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-queue?revision=2015-03-05","namespace":"urn:opendaylight:queue:service","conformance-type":"import"},{"name":"sal-groups-batch_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/sal-groups-batch?revision=2016-03-15","namespace":"urn:opendaylight:groups:service","conformance-type":"import"},{"name":"arbitrator-reconcile_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/arbitrator-reconcile?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:arbitrator-reconcile:service","conformance-type":"import"},{"name":"ietf-yang-metadata_2016-08-05","revision":"2016-08-05","schema":"/rests/modules/ietf-yang-metadata?revision=2016-08-05","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-metadata","conformance-type":"import"},{"name":"opendaylight-arbitrary-bitmask-fields_2016-01-30","revision":"2016-01-30","schema":"/rests/modules/opendaylight-arbitrary-bitmask-fields?revision=2016-01-30","namespace":"urn:opendaylight:arbitrary:bitmask:fields","conformance-type":"import"},{"name":"ietf-udp-client_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-client?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-client","conformance-type":"import","feature":["local-binding"]},{"name":"opendaylight-meter-types_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/opendaylight-meter-types?revision=2013-09-18","namespace":"urn:opendaylight:meter:types","conformance-type":"import"},{"name":"opendaylight-action-types_2013-11-12","revision":"2013-11-12","schema":"/rests/modules/opendaylight-action-types?revision=2013-11-12","namespace":"urn:opendaylight:action:types","conformance-type":"import"},{"name":"sal-role_2015-07-27","revision":"2015-07-27","schema":"/rests/modules/sal-role?revision=2015-07-27","namespace":"urn:opendaylight:role:service","conformance-type":"import"},{"name":"openflow-provider-config_2016-05-10","revision":"2016-05-10","schema":"/rests/modules/openflow-provider-config?revision=2016-05-10","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:provider:config","conformance-type":"import"},{"name":"odl-serviceutils-upgrade_2018-07-02","revision":"2018-07-02","schema":"/rests/modules/odl-serviceutils-upgrade?revision=2018-07-02","namespace":"urn:opendaylight:serviceutils:upgrade","conformance-type":"import"},{"name":"opendaylight-match-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-match-types?revision=2013-10-26","namespace":"urn:opendaylight:model:match:types","conformance-type":"import"},{"name":"ietf-restconf-server_2024-08-14","revision":"2024-08-14","schema":"/rests/modules/ietf-restconf-server?revision=2024-08-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-server","conformance-type":"import","feature":["http-listen","https-listen"]},{"name":"reconciliation-result-state_2017-07-13","revision":"2017-07-13","schema":"/rests/modules/reconciliation-result-state?revision=2017-07-13","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:rf:state","conformance-type":"import"},{"name":"onf-extensions_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/onf-extensions?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf","conformance-type":"import"},{"name":"sal-table_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/sal-table?revision=2013-10-26","namespace":"urn:opendaylight:table:service","conformance-type":"import"},{"name":"iana-http-versions_2026-02-04","revision":"2026-02-04","schema":"/rests/modules/iana-http-versions?revision=2026-02-04","namespace":"urn:ietf:params:xml:ns:yang:iana-http-versions","conformance-type":"import"},{"name":"opendaylight-direct-statistics_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/opendaylight-direct-statistics?revision=2016-05-11","namespace":"urn:opendaylight:direct:statistics","conformance-type":"import"},{"name":"opendaylight-port-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-port-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:port","conformance-type":"import"},{"name":"sal-async-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/sal-async-config?revision=2017-06-19","namespace":"urn:opendaylight:async-config:service","conformance-type":"import"},{"name":"aaa-password-service-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-password-service-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:password:service:config","conformance-type":"import"},{"name":"ietf-yang-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-yang-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-types","conformance-type":"import"},{"name":"opendaylight-queue-statistics_2013-12-16","revision":"2013-12-16","schema":"/rests/modules/opendaylight-queue-statistics?revision=2013-12-16","namespace":"urn:opendaylight:queue:statistics","conformance-type":"import"},{"name":"sal-bundle_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/sal-bundle?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf:bundle:service","conformance-type":"import"},{"name":"ietf-restconf-subscribed-notifications_2019-11-17","revision":"2019-11-17","schema":"/rests/modules/ietf-restconf-subscribed-notifications?revision=2019-11-17","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-subscribed-notifications","conformance-type":"import"},{"name":"sal-meters-batch_2016-03-16","revision":"2016-03-16","schema":"/rests/modules/sal-meters-batch?revision=2016-03-16","namespace":"urn:opendaylight:meters:service","conformance-type":"import"},{"name":"odl-entity-owners","revision":"","schema":"/rests/modules/odl-entity-owners","namespace":"urn:opendaylight:params:xml:ns:yang:controller:entity-owners","conformance-type":"import"},{"name":"sal-experimenter-mp-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-mp-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-mp-message:service","conformance-type":"import"},{"name":"packet-processing_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/packet-processing?revision=2013-07-09","namespace":"urn:opendaylight:packet:service","conformance-type":"import"},{"name":"openflow-configuration_2014-06-30","revision":"2014-06-30","schema":"/rests/modules/openflow-configuration?revision=2014-06-30","namespace":"urn:opendaylight:openflow:config","conformance-type":"import"},{"name":"odl-srm-rpcs_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-rpcs?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:rpc","conformance-type":"import"},{"name":"ietf-netconf-acm_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-netconf-acm?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-acm","conformance-type":"import"},{"name":"iana-crypt-hash_2014-08-06","revision":"2014-08-06","schema":"/rests/modules/iana-crypt-hash?revision=2014-08-06","namespace":"urn:ietf:params:xml:ns:yang:iana-crypt-hash","conformance-type":"import","feature":["crypt-hash-sha-512","crypt-hash-sha-256","crypt-hash-md5"]},{"name":"openflow-extensible-match_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-extensible-match?revision=2015-02-25","namespace":"urn:opendaylight:openflow:oxm","conformance-type":"import"}],"module-set-id":"2"}}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:02:08.777412" elapsed="0.003986"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:08.777185" elapsed="0.004263"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:08.777147" elapsed="0.004336"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:02:08.785118" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:02:08.781909" elapsed="0.003292"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:08.781595" elapsed="0.003655"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:08.781569" elapsed="0.003714"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:02:08.786271" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:02:08.785585" elapsed="0.000734"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:08.786810" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:08.786455" elapsed="0.000434"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:02:08.787601" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:02:08.787174" elapsed="0.000463"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:08.786926" elapsed="0.000759"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:08.786427" elapsed="0.001288"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:02:08.788540" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:02:08.787979" elapsed="0.000598"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:08.789098" elapsed="0.000032"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:08.788706" elapsed="0.000524"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:02:08.790003" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:02:08.789519" elapsed="0.000530"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:08.789271" elapsed="0.000824"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:08.788678" elapsed="0.001442"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:02:08.790313" elapsed="0.000369"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T01:02:08.791174" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:02:08.790870" elapsed="0.000332"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T01:02:08.791377" elapsed="0.002341"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T01:02:08.776425" elapsed="0.017415"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T01:02:08.794197" elapsed="0.000048"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:02:08.793967" elapsed="0.000341"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:08.793917" elapsed="0.000427"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T01:02:08.803338" level="INFO">${text_normalized} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T01:02:08.795079" elapsed="0.008309"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T01:02:08.803465" elapsed="0.000065"/>
</return>
<msg time="2026-04-08T01:02:08.803787" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T01:02:08.759690" elapsed="0.044205"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T01:02:08.804373" elapsed="0.000031"/>
</return>
<msg time="2026-04-08T01:02:08.804552" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="PASS" start="2026-04-08T01:02:08.616360" elapsed="0.188219"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Json_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:08.804916" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:08.804663" elapsed="0.000442"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:08.804645" elapsed="0.000487"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T01:02:08.805181" elapsed="0.000028"/>
</return>
<arg>session=${session}</arg>
<arg>folder=${RESTCONF_MODULES_DIR}</arg>
<arg>verify=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Add arguments sensible for JSON data, return Get_Templated response text.
Optionally, verification against JSON data (may be iterated) is called.
Only subset of JSON data is verified and returned if JMES path is specified in
file ${folder}/jmespath.expr.</doc>
<status status="PASS" start="2026-04-08T01:02:08.612047" elapsed="0.193261"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:08.607797" elapsed="0.197554"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:08.607779" elapsed="0.197597"/>
</if>
<kw name="Resolve_Shard_Type_Class" owner="ClusterManagement">
<if>
<branch type="IF" condition="'${shard_type}' == 'config'">
<return>
<value>DistributedConfigDatastore</value>
<status status="PASS" start="2026-04-08T01:02:08.805973" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-08T01:02:08.805866" elapsed="0.000166"/>
</branch>
<branch type="ELSE IF" condition="'${shard_type}' == 'operational'">
<return>
<value>DistributedOperationalDatastore</value>
<status status="NOT RUN" start="2026-04-08T01:02:08.806091" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:02:08.806055" elapsed="0.000074"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:08.805849" elapsed="0.000302"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized shard type: ${shard_type}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:08.806318" elapsed="0.000022"/>
</kw>
<msg time="2026-04-08T01:02:08.806436" level="INFO">${type_class} = DistributedConfigDatastore</msg>
<var>${type_class}</var>
<arg>shard_type=${shard_type}</arg>
<doc>Simple lookup for class name corresponding to desired type.</doc>
<status status="PASS" start="2026-04-08T01:02:08.805601" elapsed="0.000860"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:02:08.806995" level="INFO">${cluster_index} = 1</msg>
<var>${cluster_index}</var>
<arg>${member_index}+${NODE_ROLE_INDEX_START}-1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:02:08.806630" elapsed="0.000392"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:02:08.807662" level="INFO">${uri} = jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-inventory-config,type=DistributedConfigDatastore</msg>
<var>${uri}</var>
<arg>${JOLOKIA_READ_URI}:Category=Shards,name=member-${cluster_index}-shard-${shard_name}-${shard_type},type=${type_class}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:02:08.807199" elapsed="0.000491"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:02:08.813370" level="INFO">jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-inventory-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:02:08.812912" elapsed="0.000505"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:02:08.814004" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:02:08.813573" elapsed="0.000475"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T01:02:08.834889" level="INFO">GET Request : url=http://10.30.170.48:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-inventory-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-inventory-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T01:02:08.835086" level="INFO">GET Response : url=http://10.30.170.48:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-inventory-config,type=DistributedConfigDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Wed, 08 Apr 2026 01:02:08 GMT', 'Expires': 'Wed, 08 Apr 2026 00:02:08 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-1-shard-inventory-config,type=DistributedConfigDatastore","type":"read"},"value":{"ReadWriteTransactionCount":59,"SnapshotIndex":170,"InMemoryJournalLogSize":1,"ReplicatedToAllIndex":170,"Leader":"member-1-shard-inventory-config","LastIndex":171,"RaftState":"Leader","LastApplied":171,"LastCommittedTransactionTime":"2026-04-08 01:01:31.193","PeerAddresses":"member-2-shard-inventory-config: pekko:\/\/opendaylight-cluster-data@10.30.170.131:2550\/user\/shardmanager-config\/member-2-shard-inventory-config, member-3-shard-inventory-config: pekko:\/\/opendaylight-cluster-data@10.30.171.110:2550\/user\/shardmanager-config\/member-3-shard-inventory-config","LastLogIndex":171,"LastLeadershipChangeTime":"2026-04-08 00:57:11.121","FollowerInitialSyncStatus":false,"FollowerInfo":[{"timeSinceLastActivity":"00:00:00.356","active":true,"matchIndex":171,"voting":true,"id":"member-2-shard-inventory-config","nextIndex":172},{"timeSinceLastActivity":"00:00:00.356","active":true,"matchIndex":171,"voting":true,"id":"member-3-shard-inventory-config","nextIndex":172}],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"434.7 μs","CurrentTerm":4,"LastTerm":4,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-inventory-config","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":46,"TxCohortCacheSize":0,"PeerVotingStates":"member-2-shard-inventory-config: true, member-3-shard-inventory-config: true","LastLogTerm":4,"StatRetrievalError":null,"CommitIndex":171,"SnapshotTerm":4,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":4,"ShardName":"member-1-shard-inventory-config","LeadershipChangeCount":1,"InMemoryJournalDataSize":103247},"timestamp":1775610128,"status":200} 
 </msg>
<msg time="2026-04-08T01:02:08.835396" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T01:02:08.825678" elapsed="0.009884"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:08.814115" elapsed="0.021811"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:08.836247" elapsed="0.000034"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:08.835973" elapsed="0.000739"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:08.814097" elapsed="0.022655"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:02:08.844375" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-1-shard-inventory-config,type=DistributedConfigDatastore","type":"read"},"value":{"ReadWriteTransactionCount":59,"SnapshotIndex":170,"InMemoryJournalLogSize":1,"ReplicatedToAllIndex":170,"Leader":"member-1-shard-inventory-config","LastIndex":171,"RaftState":"Leader","LastApplied":171,"LastCommittedTransactionTime":"2026-04-08 01:01:31.193","PeerAddresses":"member-2-shard-inventory-config: pekko:\/\/opendaylight-cluster-data@10.30.170.131:2550\/user\/shardmanager-config\/member-2-shard-inventory-config, member-3-shard-inventory-config: pekko:\/\/opendaylight-cluster-data@10.30.171.110:2550\/user\/shardmanager-config\/member-3-shard-inventory-config","LastLogIndex":171,"LastLeadershipChangeTime":"2026-04-08 00:57:11.121","FollowerInitialSyncStatus":false,"FollowerInfo":[{"timeSinceLastActivity":"00:00:00.356","active":true,"matchIndex":171,"voting":true,"id":"member-2-shard-inventory-config","nextIndex":172},{"timeSinceLastActivity":"00:00:00.356","active":true,"matchIndex":171,"voting":true,"id":"member-3-shard-inventory-config","nextIndex":172}],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"434.7 μs","CurrentTerm":4,"LastTerm":4,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-inventory-config","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":46,"TxCohortCacheSize":0,"PeerVotingStates":"member-2-shard-inventory-config: true, member-3-shard-inventory-config: true","LastLogTerm":4,"StatRetrievalError":null,"CommitIndex":171,"SnapshotTerm":4,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":4,"ShardName":"member-1-shard-inventory-config","LeadershipChangeCount":1,"InMemoryJournalDataSize":103247},"timestamp":1775610128,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:02:08.839892" elapsed="0.004777"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:08.838618" elapsed="0.006221"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:08.838589" elapsed="0.006356"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:02:08.849127" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:02:08.846708" elapsed="0.002538"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:08.845141" elapsed="0.004155"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:08.845098" elapsed="0.004238"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:02:08.850785" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:02:08.850005" elapsed="0.000841"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:08.851501" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:08.851012" elapsed="0.000576"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:02:08.852494" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:02:08.851962" elapsed="0.000578"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:08.851625" elapsed="0.000966"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:08.850992" elapsed="0.001635"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:02:08.854104" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:02:08.853370" elapsed="0.000812"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:08.854816" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:08.854349" elapsed="0.000557"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:02:08.855791" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:02:08.855295" elapsed="0.000542"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:08.854944" elapsed="0.000944"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:08.854329" elapsed="0.001594"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:02:08.856148" elapsed="0.000671"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T01:02:08.857751" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:02:08.857130" elapsed="0.000682"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T01:02:08.858096" elapsed="0.002393"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T01:02:08.837573" elapsed="0.023075"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T01:02:08.860863" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:02:08.860722" elapsed="0.000188"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:08.860703" elapsed="0.000229"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T01:02:08.864729" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-1-shard-inventory-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 177561...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T01:02:08.861082" elapsed="0.003689"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T01:02:08.864926" elapsed="0.000036"/>
</return>
<msg time="2026-04-08T01:02:08.865141" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-1-shard-inventory-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 177561...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T01:02:08.808644" elapsed="0.056602"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T01:02:08.865308" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T01:02:08.865461" level="INFO">${data_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-1-shard-inventory-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 177561...</msg>
<var>${data_text}</var>
<arg>uri=${uri}</arg>
<arg>session=${session}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-08T01:02:08.807903" elapsed="0.057584"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:02:08.866568" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-1-shard-inventory-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1775610128, 'valu...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:02:08.866064" elapsed="0.000533"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-08T01:02:08.866645" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T01:02:08.866822" level="INFO">${data_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-1-shard-inventory-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1775610128, 'valu...</msg>
<var>${data_object}</var>
<arg>${data_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-08T01:02:08.865714" elapsed="0.001135"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:02:08.867232" level="INFO">${value} = {'AbortTransactionsCount': 0, 'CommitIndex': 171, 'CommittedTransactionsCount': 46, 'CurrentTerm': 4, 'FailedReadTransactionsCount': 0, 'FailedTransactionsCount': 0, 'FollowerInfo': [{'active': True, ...</msg>
<var>${value}</var>
<arg>${data_object}</arg>
<arg>value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:02:08.867007" elapsed="0.000253"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:02:08.867618" level="INFO">${raft_property} = Leader</msg>
<var>${raft_property}</var>
<arg>${value}</arg>
<arg>${property}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:02:08.867416" elapsed="0.000227"/>
</kw>
<return>
<value>${raft_property}</value>
<status status="PASS" start="2026-04-08T01:02:08.867689" elapsed="0.000027"/>
</return>
<msg time="2026-04-08T01:02:08.867839" level="INFO">${raft_state} = Leader</msg>
<var>${raft_state}</var>
<arg>RaftState</arg>
<arg>${shard_name}</arg>
<arg>${shard_type}</arg>
<arg>${member_index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft property.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T01:02:08.606203" elapsed="0.261661"/>
</kw>
<return>
<value>${raft_state}</value>
<status status="PASS" start="2026-04-08T01:02:08.867922" elapsed="0.000025"/>
</return>
<msg time="2026-04-08T01:02:08.868068" level="INFO">${raft_state} = Leader</msg>
<var>${raft_state}</var>
<arg>shard_name=${shard_name}</arg>
<arg>shard_type=${ds_type}</arg>
<arg>member_index=${index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft status.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T01:02:08.605481" elapsed="0.262612"/>
</kw>
<if>
<branch type="IF" condition="'Follower' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${follower_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:08.868423" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:08.868202" elapsed="0.000277"/>
</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="PASS" start="2026-04-08T01:02:08.868708" elapsed="0.000209"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:08.868502" elapsed="0.000453"/>
</branch>
<branch type="ELSE IF" condition="${validate}">
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized Raft state: ${raft_state}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:08.869125" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:08.868979" elapsed="0.000267"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:08.868182" elapsed="0.001088"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T01:02:08.605316" elapsed="0.263978"/>
</iter>
<iter>
<kw name="Get_Raft_State_Of_Shard_At_Member" owner="ClusterManagement">
<kw name="Get_Raft_Property_From_Shard_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:02:08.871773" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:02:08.871450" elapsed="0.000350"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T01:02:08.871846" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T01:02:08.871995" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T01:02:08.871083" elapsed="0.000936"/>
</kw>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Get_As_Json_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:02:08.972016" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:02:08.971619" elapsed="0.000431"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T01:02:08.972971" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T01:02:08.972709" elapsed="0.000340">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-08T01:02:08.973143" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T01:02:08.972353" elapsed="0.000837"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:02:08.973743" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:02:08.973358" elapsed="0.000412"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T01:02:08.974079" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-08T01:02:08.974252" level="INFO">${template} = /rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T01:02:08.973937" elapsed="0.000341"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:02:08.974684" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:02:08.974437" elapsed="0.000293"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:02:08.975711" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:02:08.975456" elapsed="0.000301"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-08T01:02:08.976200" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-08T01:02:08.975918" elapsed="0.000309"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:08.976557" elapsed="0.000022"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:08.976774" elapsed="0.000024"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:08.976950" elapsed="0.000021"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-08T01:02:08.976420" elapsed="0.000586"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-08T01:02:08.976280" elapsed="0.000756"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-08T01:02:08.977082" elapsed="0.000033"/>
</return>
<msg time="2026-04-08T01:02:08.977262" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-08T01:02:08.975115" elapsed="0.002174"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:08.974810" elapsed="0.002512"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:08.977496" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:08.977347" elapsed="0.000204"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:08.974786" elapsed="0.002785"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:02:08.978151" level="INFO">${final_text} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:02:08.977716" elapsed="0.000479"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T01:02:08.978244" 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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="PASS" start="2026-04-08T01:02:08.970971" elapsed="0.007396"/>
</kw>
<msg time="2026-04-08T01:02:08.978420" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:02:08.958145" elapsed="0.020358"/>
</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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:08.991359" elapsed="0.000043"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:09.003818" elapsed="0.000040"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:09.016318" elapsed="0.000042"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:09.017124" elapsed="0.000060"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:09.017910" elapsed="0.000036"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:09.018477" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:09.018330" elapsed="0.000203"/>
</branch>
<status status="NOT RUN" start="2026-04-08T01:02:09.018314" elapsed="0.000242"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:09.018715" elapsed="0.000021"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:09.018902" elapsed="0.000020"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:09.019086" elapsed="0.000021"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-08T01:02:09.018264" elapsed="0.000912"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-08T01:02:09.018026" elapsed="0.001192"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:09.019924" elapsed="0.000035"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-08T01:02:09.020040" elapsed="0.000047"/>
</return>
<msg time="2026-04-08T01:02:09.020273" level="INFO">${uri} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-08T01:02:08.951621" elapsed="0.068758"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T01:02:09.023265" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T01:02:09.023004" elapsed="0.000327">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-08T01:02:09.023514" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T01:02:09.022563" elapsed="0.000995"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:09.024059" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:09.023686" elapsed="0.000439"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:02:09.024762" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:02:09.024458" elapsed="0.000330"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:09.024178" elapsed="0.000655"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:09.023636" elapsed="0.001237"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:02:09.028134" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:02:09.025634" elapsed="0.002559"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-08T01:02:09.028270" elapsed="0.000062"/>
</return>
<msg time="2026-04-08T01:02:09.028580" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T01:02:09.021389" elapsed="0.007319"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T01:02:09.031495" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T01:02:09.031251" elapsed="0.000306">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-08T01:02:09.031742" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T01:02:09.030801" elapsed="0.000985"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-08T01:02:09.032175" elapsed="0.000080"/>
</return>
<status status="PASS" start="2026-04-08T01:02:09.031916" elapsed="0.000406"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:09.031865" elapsed="0.000495"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:09.033101" elapsed="0.000035"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:09.033917" elapsed="0.000036"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-08T01:02:09.034024" elapsed="0.000046"/>
</return>
<msg time="2026-04-08T01:02:09.037746" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T01:02:09.029571" elapsed="0.008282"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:02:09.041914" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:02:09.041525" elapsed="0.000487"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:02:09.043198" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:02:09.042798" elapsed="0.000498"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T01:02:09.064145" level="INFO">GET Request : url=http://10.30.170.131:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 path_url=/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01l7fnm4ypo6vn14692wsih5mir0.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T01:02:09.065122" level="INFO">GET Response : url=http://10.30.170.131:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Transfer-Encoding': 'chunked'} 
 body={"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","encrypted-passwords","hidden-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-private-keys","asymmetrically-encrypted-value-format","cleartext-private-keys","cms-encrypted-data-format","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["client-ident-hostbased","ssh-client-keepalives","client-ident-password","client-ident-publickey"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-ex... (set the log level to DEBUG or TRACE to see the full content) 
 </msg>
<msg time="2026-04-08T01:02:09.065627" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T01:02:09.045705" elapsed="0.019982"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:09.043423" elapsed="0.022387"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:09.066511" elapsed="0.000054"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:09.065907" elapsed="0.000773"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:09.043372" elapsed="0.023390"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:02:09.075365" level="INFO">{"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","encrypted-passwords","hidden-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-private-keys","asymmetrically-encrypted-value-format","cleartext-private-keys","cms-encrypted-data-format","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["client-ident-hostbased","ssh-client-keepalives","client-ident-password","client-ident-publickey"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-experimenter-types?revision=2015-10-20","namespace":"urn:opendaylight:openflowplugin:experimenter:types","conformance-type":"import"},{"name":"ietf-ip_2018-02-22","revision":"2018-02-22","schema":"/rests/modules/ietf-ip?revision=2018-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-ip","conformance-type":"import","feature":["ipv6-privacy-autoconf","ipv4-non-contiguous-netmasks"]},{"name":"ietf-tcp-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-client","conformance-type":"import","feature":["local-binding-supported","tcp-client-keepalives"]},{"name":"node-config_2014-10-15","revision":"2014-10-15","schema":"/rests/modules/node-config?revision=2014-10-15","namespace":"urn:opendaylight:module:config","conformance-type":"import"},{"name":"ietf-restconf_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf","conformance-type":"import"},{"name":"ietf-datastores_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-datastores?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-datastores","conformance-type":"import"},{"name":"ietf-yang-patch_2017-02-22","revision":"2017-02-22","schema":"/rests/modules/ietf-yang-patch?revision=2017-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-patch","conformance-type":"import"},{"name":"sal-group_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-group?revision=2013-09-18","namespace":"urn:opendaylight:group:service","conformance-type":"import"},{"name":"odl-codegen-extensions_2024-06-27","revision":"2024-06-27","schema":"/rests/modules/odl-codegen-extensions?revision=2024-06-27","namespace":"urn:opendaylight:yang:extension:codegen","conformance-type":"import"},{"name":"sal-meter_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-meter?revision=2013-09-18","namespace":"urn:opendaylight:meter:service","conformance-type":"import"},{"name":"ietf-interfaces_2018-02-20","revision":"2018-02-20","schema":"/rests/modules/ietf-interfaces?revision=2018-02-20","namespace":"urn:ietf:params:xml:ns:yang:ietf-interfaces","conformance-type":"import","feature":["pre-provisioning","if-mib","arbitrary-names"]},{"name":"opendaylight-l2-types_2013-08-27","revision":"2013-08-27","schema":"/rests/modules/opendaylight-l2-types?revision=2013-08-27","namespace":"urn:opendaylight:l2:types","conformance-type":"import"},{"name":"opendaylight-flow-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-flow-types?revision=2013-10-26","namespace":"urn:opendaylight:flow:types","conformance-type":"import"},{"name":"lldp-speaker-config_2016-05-12","revision":"2016-05-12","schema":"/rests/modules/lldp-speaker-config?revision=2016-05-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker:config","conformance-type":"import"},{"name":"aaa-cert_2015-11-26","revision":"2015-11-26","schema":"/rests/modules/aaa-cert?revision=2015-11-26","namespace":"urn:opendaylight:yang:aaa:cert","conformance-type":"import"},{"name":"openflow-action_2015-02-03","revision":"2015-02-03","schema":"/rests/modules/openflow-action?revision=2015-02-03","namespace":"urn:opendaylight:openflow:common:action","conformance-type":"import"},{"name":"openflow-approved-extensions_2016-08-02","revision":"2016-08-02","schema":"/rests/modules/openflow-approved-extensions?revision=2016-08-02","namespace":"urn:opendaylight:openflow:approved:extensions","conformance-type":"import"},{"name":"nc-notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/nc-notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netmod:notification","conformance-type":"import"},{"name":"ietf-netconf-nmda_2019-01-07","revision":"2019-01-07","schema":"/rests/modules/ietf-netconf-nmda?revision=2019-01-07","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-nmda","conformance-type":"import","feature":["with-defaults","origin"]},{"name":"ietf-tcp-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-common","conformance-type":"import","feature":["keepalives-supported"]},{"name":"network-topology_2013-10-21","revision":"2013-10-21","schema":"/rests/modules/network-topology?revision=2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:network-topology","conformance-type":"import"},{"name":"aaa-encrypt-service-config_2024-02-02","revision":"2024-02-02","schema":"/rests/modules/aaa-encrypt-service-config?revision=2024-02-02","namespace":"config:aaa:authn:encrypt:service:config","conformance-type":"import"},{"name":"openflow-instruction_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-instruction?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:instruction","conformance-type":"import"},{"name":"ietf-tls-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-client","conformance-type":"import","feature":["client-ident-x509-cert","server-auth-x509-cert"]},{"name":"opendaylight-group-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-group-statistics?revision=2013-11-11","namespace":"urn:opendaylight:group:statistics","conformance-type":"import"},{"name":"cluster-admin_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/cluster-admin?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:cluster:admin","conformance-type":"import"},{"name":"opendaylight-flow-statistics_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-flow-statistics?revision=2013-08-19","namespace":"urn:opendaylight:flow:statistics","conformance-type":"import"},{"name":"opendaylight-table-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-table-types?revision=2013-10-26","namespace":"urn:opendaylight:table:types","conformance-type":"import"},{"name":"forwarding-rules-manager-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/forwarding-rules-manager-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:forwardingrules-manager:config","conformance-type":"import"},{"name":"odl-srm-types_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-types?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:types","conformance-type":"import"},{"name":"ietf-x509-cert-to-name_2014-12-10","revision":"2014-12-10","schema":"/rests/modules/ietf-x509-cert-to-name?revision=2014-12-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-x509-cert-to-name","conformance-type":"import"},{"name":"flow-node-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-node-inventory?revision=2013-08-19","namespace":"urn:opendaylight:flow:inventory","conformance-type":"import"},{"name":"flow-errors_2013-11-16","revision":"2013-11-16","schema":"/rests/modules/flow-errors?revision=2013-11-16","namespace":"urn:opendaylight:flow:errors","conformance-type":"import"},{"name":"ietf-netconf_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:netconf:base:1.0","conformance-type":"import","feature":["xpath","url","rollback-on-error","validate","candidate","confirmed-commit","startup","writable-running"]},{"name":"iana-ssh-public-key-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-public-key-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-public-key-algs","conformance-type":"import"},{"name":"aaa-cert-mdsal_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/aaa-cert-mdsal?revision=2016-03-21","namespace":"urn:opendaylight:yang:aaa:cert:mdsal","conformance-type":"import"},{"name":"odl-device-notification_2024-02-18","revision":"2024-02-18","schema":"/rests/modules/odl-device-notification?revision=2024-02-18","namespace":"urn:opendaylight:device:notification","conformance-type":"import"},{"name":"ietf-origin_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-origin?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-origin","conformance-type":"import"},{"name":"openflow-augments_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-augments?revision=2015-02-25","namespace":"urn:opendaylight:openflow:augments","conformance-type":"import"},{"name":"iana-ssh-encryption-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-encryption-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-encryption-algs","conformance-type":"import"},{"name":"ietf-truststore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-truststore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-truststore","conformance-type":"import","feature":["inline-definitions-supported"]},{"name":"distributed-datastore-provider_2025-01-30","revision":"2025-01-30","schema":"/rests/modules/distributed-datastore-provider?revision=2025-01-30","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:distributed-datastore-provider","conformance-type":"import"},{"name":"opendaylight-group-types_2013-10-18","revision":"2013-10-18","schema":"/rests/modules/opendaylight-group-types?revision=2013-10-18","namespace":"urn:opendaylight:group:types","conformance-type":"import"},{"name":"sal-remote-augment_2023-11-03","revision":"2023-11-03","schema":"/rests/modules/sal-remote-augment?revision=2023-11-03","namespace":"urn:sal:restconf:event:subscription","conformance-type":"import"},{"name":"opendaylight-ipv6-arbitrary-bitmask-fields_2016-02-24","revision":"2016-02-24","schema":"/rests/modules/opendaylight-ipv6-arbitrary-bitmask-fields?revision=2016-02-24","namespace":"urn:opendaylight:opendaylight-ipv6-arbitrary-bitmask-fields","conformance-type":"import"},{"name":"sal-flows-batch_2016-03-14","revision":"2016-03-14","schema":"/rests/modules/sal-flows-batch?revision=2016-03-14","namespace":"urn:opendaylight:flows:service","conformance-type":"import"},{"name":"ietf-tls-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-common","conformance-type":"import","feature":["hello-params","tls12","tls13"]},{"name":"openflow-types_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-types?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:types","conformance-type":"import"},{"name":"ietf-netconf-with-defaults_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf-with-defaults?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults","conformance-type":"import"},{"name":"odl-srm-ops_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-ops?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:ops","conformance-type":"import"},{"name":"odl-general-entity_2015-09-30","revision":"2015-09-30","schema":"/rests/modules/odl-general-entity?revision=2015-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:mdsal:core:general-entity","conformance-type":"import"},{"name":"iana-ssh-key-exchange-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-key-exchange-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-key-exchange-algs","conformance-type":"import"},{"name":"node-ssl-connection-error_2019-07-23","revision":"2019-07-23","schema":"/rests/modules/node-ssl-connection-error?revision=2019-07-23","namespace":"urn:opendaylight:node-ssl-connection-error:service","conformance-type":"import"},{"name":"openflow-protocol_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-protocol?revision=2013-07-31","namespace":"urn:opendaylight:openflow:protocol","conformance-type":"import"},{"name":"ietf-udp-server_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-server?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-server","conformance-type":"import"},{"name":"ietf-keystore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-keystore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-keystore","conformance-type":"import","feature":["asymmetric-keys","inline-definitions-supported"]},{"name":"aaa_2016-12-14","revision":"2016-12-14","schema":"/rests/modules/aaa?revision=2016-12-14","namespace":"urn:opendaylight:params:xml:ns:yang:aaa","conformance-type":"import"},{"name":"aaa-cert-rpc_2015-12-15","revision":"2015-12-15","schema":"/rests/modules/aaa-cert-rpc?revision=2015-12-15","namespace":"urn:opendaylight:yang:aaa:cert:rpc","conformance-type":"import"},{"name":"system-notifications_2013-09-27","revision":"2013-09-27","schema":"/rests/modules/system-notifications?revision=2013-09-27","namespace":"urn:opendaylight:openflow:system","conformance-type":"import"},{"name":"sal-flat-batch_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/sal-flat-batch?revision=2016-03-21","namespace":"urn:opendaylight:flat-batch:service","conformance-type":"import"},{"name":"notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netconf:notification:1.0","conformance-type":"import"},{"name":"sal-remote_2014-01-14","revision":"2014-01-14","schema":"/rests/modules/sal-remote?revision=2014-01-14","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:remote","conformance-type":"import"},{"name":"yang-ext_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/yang-ext?revision=2013-07-09","namespace":"urn:opendaylight:yang:extension:yang-ext","conformance-type":"import"},{"name":"opendaylight-multipart-types_2017-01-12","revision":"2017-01-12","schema":"/rests/modules/opendaylight-multipart-types?revision=2017-01-12","namespace":"urn:opendaylight:multipart:types","conformance-type":"import"},{"name":"opendaylight-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-inventory?revision=2013-08-19","namespace":"urn:opendaylight:inventory","conformance-type":"import"},{"name":"sal-queue_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-queue?revision=2015-03-05","namespace":"urn:opendaylight:queue:service","conformance-type":"import"},{"name":"sal-groups-batch_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/sal-groups-batch?revision=2016-03-15","namespace":"urn:opendaylight:groups:service","conformance-type":"import"},{"name":"arbitrator-reconcile_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/arbitrator-reconcile?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:arbitrator-reconcile:service","conformance-type":"import"},{"name":"ietf-yang-metadata_2016-08-05","revision":"2016-08-05","schema":"/rests/modules/ietf-yang-metadata?revision=2016-08-05","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-metadata","conformance-type":"import"},{"name":"opendaylight-arbitrary-bitmask-fields_2016-01-30","revision":"2016-01-30","schema":"/rests/modules/opendaylight-arbitrary-bitmask-fields?revision=2016-01-30","namespace":"urn:opendaylight:arbitrary:bitmask:fields","conformance-type":"import"},{"name":"ietf-udp-client_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-client?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-client","conformance-type":"import","feature":["local-binding"]},{"name":"opendaylight-meter-types_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/opendaylight-meter-types?revision=2013-09-18","namespace":"urn:opendaylight:meter:types","conformance-type":"import"},{"name":"opendaylight-action-types_2013-11-12","revision":"2013-11-12","schema":"/rests/modules/opendaylight-action-types?revision=2013-11-12","namespace":"urn:opendaylight:action:types","conformance-type":"import"},{"name":"sal-role_2015-07-27","revision":"2015-07-27","schema":"/rests/modules/sal-role?revision=2015-07-27","namespace":"urn:opendaylight:role:service","conformance-type":"import"},{"name":"openflow-provider-config_2016-05-10","revision":"2016-05-10","schema":"/rests/modules/openflow-provider-config?revision=2016-05-10","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:provider:config","conformance-type":"import"},{"name":"odl-serviceutils-upgrade_2018-07-02","revision":"2018-07-02","schema":"/rests/modules/odl-serviceutils-upgrade?revision=2018-07-02","namespace":"urn:opendaylight:serviceutils:upgrade","conformance-type":"import"},{"name":"opendaylight-match-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-match-types?revision=2013-10-26","namespace":"urn:opendaylight:model:match:types","conformance-type":"import"},{"name":"ietf-restconf-server_2024-08-14","revision":"2024-08-14","schema":"/rests/modules/ietf-restconf-server?revision=2024-08-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-server","conformance-type":"import","feature":["http-listen","https-listen"]},{"name":"reconciliation-result-state_2017-07-13","revision":"2017-07-13","schema":"/rests/modules/reconciliation-result-state?revision=2017-07-13","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:rf:state","conformance-type":"import"},{"name":"onf-extensions_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/onf-extensions?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf","conformance-type":"import"},{"name":"sal-table_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/sal-table?revision=2013-10-26","namespace":"urn:opendaylight:table:service","conformance-type":"import"},{"name":"iana-http-versions_2026-02-04","revision":"2026-02-04","schema":"/rests/modules/iana-http-versions?revision=2026-02-04","namespace":"urn:ietf:params:xml:ns:yang:iana-http-versions","conformance-type":"import"},{"name":"opendaylight-direct-statistics_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/opendaylight-direct-statistics?revision=2016-05-11","namespace":"urn:opendaylight:direct:statistics","conformance-type":"import"},{"name":"opendaylight-port-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-port-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:port","conformance-type":"import"},{"name":"sal-async-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/sal-async-config?revision=2017-06-19","namespace":"urn:opendaylight:async-config:service","conformance-type":"import"},{"name":"aaa-password-service-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-password-service-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:password:service:config","conformance-type":"import"},{"name":"ietf-yang-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-yang-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-types","conformance-type":"import"},{"name":"opendaylight-queue-statistics_2013-12-16","revision":"2013-12-16","schema":"/rests/modules/opendaylight-queue-statistics?revision=2013-12-16","namespace":"urn:opendaylight:queue:statistics","conformance-type":"import"},{"name":"sal-bundle_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/sal-bundle?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf:bundle:service","conformance-type":"import"},{"name":"ietf-restconf-subscribed-notifications_2019-11-17","revision":"2019-11-17","schema":"/rests/modules/ietf-restconf-subscribed-notifications?revision=2019-11-17","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-subscribed-notifications","conformance-type":"import"},{"name":"sal-meters-batch_2016-03-16","revision":"2016-03-16","schema":"/rests/modules/sal-meters-batch?revision=2016-03-16","namespace":"urn:opendaylight:meters:service","conformance-type":"import"},{"name":"odl-entity-owners","revision":"","schema":"/rests/modules/odl-entity-owners","namespace":"urn:opendaylight:params:xml:ns:yang:controller:entity-owners","conformance-type":"import"},{"name":"sal-experimenter-mp-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-mp-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-mp-message:service","conformance-type":"import"},{"name":"packet-processing_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/packet-processing?revision=2013-07-09","namespace":"urn:opendaylight:packet:service","conformance-type":"import"},{"name":"openflow-configuration_2014-06-30","revision":"2014-06-30","schema":"/rests/modules/openflow-configuration?revision=2014-06-30","namespace":"urn:opendaylight:openflow:config","conformance-type":"import"},{"name":"odl-srm-rpcs_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-rpcs?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:rpc","conformance-type":"import"},{"name":"ietf-netconf-acm_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-netconf-acm?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-acm","conformance-type":"import"},{"name":"iana-crypt-hash_2014-08-06","revision":"2014-08-06","schema":"/rests/modules/iana-crypt-hash?revision=2014-08-06","namespace":"urn:ietf:params:xml:ns:yang:iana-crypt-hash","conformance-type":"import","feature":["crypt-hash-sha-512","crypt-hash-sha-256","crypt-hash-md5"]},{"name":"openflow-extensible-match_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-extensible-match?revision=2015-02-25","namespace":"urn:opendaylight:openflow:oxm","conformance-type":"import"}],"module-set-id":"2"}}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:02:09.070802" elapsed="0.005136"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:09.070297" elapsed="0.005692"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:09.070249" elapsed="0.005775"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:02:09.079720" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:02:09.076564" elapsed="0.003220"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:09.076136" elapsed="0.003695"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:09.076111" elapsed="0.003755"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:02:09.080735" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:02:09.080131" elapsed="0.000642"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:09.081264" elapsed="0.000032"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:09.080902" elapsed="0.000444"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:02:09.082034" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:02:09.081607" elapsed="0.000463"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:09.081379" elapsed="0.000739"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:09.080874" elapsed="0.001274"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:02:09.082934" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:02:09.082424" elapsed="0.000547"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:09.083456" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:09.083098" elapsed="0.000438"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:02:09.084265" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:02:09.083797" elapsed="0.000504"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:09.083569" elapsed="0.000781"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:09.083070" elapsed="0.001310"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:02:09.084660" elapsed="0.000432"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T01:02:09.085595" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:02:09.085299" elapsed="0.000322"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T01:02:09.085798" elapsed="0.002331"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T01:02:09.068645" elapsed="0.019633"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T01:02:09.088638" elapsed="0.000195"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:02:09.088407" elapsed="0.000500"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:09.088357" elapsed="0.000595"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T01:02:09.142662" level="INFO">${text_normalized} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T01:02:09.089738" elapsed="0.052990"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T01:02:09.142829" elapsed="0.000084"/>
</return>
<msg time="2026-04-08T01:02:09.143213" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T01:02:09.038658" elapsed="0.104665"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T01:02:09.143800" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T01:02:09.143979" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="PASS" start="2026-04-08T01:02:08.882350" elapsed="0.261656"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Json_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:09.144594" elapsed="0.000028"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:09.144102" elapsed="0.000750"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:09.144082" elapsed="0.000799"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T01:02:09.144916" elapsed="0.000027"/>
</return>
<arg>session=${session}</arg>
<arg>folder=${RESTCONF_MODULES_DIR}</arg>
<arg>verify=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Add arguments sensible for JSON data, return Get_Templated response text.
Optionally, verification against JSON data (may be iterated) is called.
Only subset of JSON data is verified and returned if JMES path is specified in
file ${folder}/jmespath.expr.</doc>
<status status="PASS" start="2026-04-08T01:02:08.876382" elapsed="0.268662"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:08.872086" elapsed="0.273002"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:08.872068" elapsed="0.273044"/>
</if>
<kw name="Resolve_Shard_Type_Class" owner="ClusterManagement">
<if>
<branch type="IF" condition="'${shard_type}' == 'config'">
<return>
<value>DistributedConfigDatastore</value>
<status status="PASS" start="2026-04-08T01:02:09.145797" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-08T01:02:09.145685" elapsed="0.000173"/>
</branch>
<branch type="ELSE IF" condition="'${shard_type}' == 'operational'">
<return>
<value>DistributedOperationalDatastore</value>
<status status="NOT RUN" start="2026-04-08T01:02:09.145921" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:02:09.145883" elapsed="0.000078"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:09.145667" elapsed="0.000317"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized shard type: ${shard_type}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:09.146149" elapsed="0.000042"/>
</kw>
<msg time="2026-04-08T01:02:09.146291" level="INFO">${type_class} = DistributedConfigDatastore</msg>
<var>${type_class}</var>
<arg>shard_type=${shard_type}</arg>
<doc>Simple lookup for class name corresponding to desired type.</doc>
<status status="PASS" start="2026-04-08T01:02:09.145384" elapsed="0.000933"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:02:09.146965" level="INFO">${cluster_index} = 2</msg>
<var>${cluster_index}</var>
<arg>${member_index}+${NODE_ROLE_INDEX_START}-1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:02:09.146541" elapsed="0.000451"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:02:09.147632" level="INFO">${uri} = jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-inventory-config,type=DistributedConfigDatastore</msg>
<var>${uri}</var>
<arg>${JOLOKIA_READ_URI}:Category=Shards,name=member-${cluster_index}-shard-${shard_name}-${shard_type},type=${type_class}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:02:09.147148" elapsed="0.000511"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:02:09.153638" level="INFO">jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-inventory-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:02:09.153186" elapsed="0.000499"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:02:09.154295" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:02:09.153843" elapsed="0.000497"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T01:02:09.174692" level="INFO">GET Request : url=http://10.30.170.131:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-inventory-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-inventory-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T01:02:09.174829" level="INFO">GET Response : url=http://10.30.170.131:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-inventory-config,type=DistributedConfigDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Wed, 08 Apr 2026 01:02:09 GMT', 'Expires': 'Wed, 08 Apr 2026 00:02:09 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-2-shard-inventory-config,type=DistributedConfigDatastore","type":"read"},"value":{"ReadWriteTransactionCount":0,"SnapshotIndex":170,"InMemoryJournalLogSize":1,"ReplicatedToAllIndex":170,"Leader":"member-1-shard-inventory-config","LastIndex":171,"RaftState":"Follower","LastApplied":171,"LastCommittedTransactionTime":"1970-01-01 00:00:00.000","PeerAddresses":"member-1-shard-inventory-config: pekko:\/\/opendaylight-cluster-data@10.30.170.48:2550\/user\/shardmanager-config\/member-1-shard-inventory-config, member-3-shard-inventory-config: pekko:\/\/opendaylight-cluster-data@10.30.171.110:2550\/user\/shardmanager-config\/member-3-shard-inventory-config","LastLogIndex":171,"LastLeadershipChangeTime":"2026-04-08 00:57:11.120","FollowerInitialSyncStatus":true,"FollowerInfo":[],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"210.5 μs","CurrentTerm":4,"LastTerm":4,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-inventory-config","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":0,"TxCohortCacheSize":0,"PeerVotingStates":"member-1-shard-inventory-config: true, member-3-shard-inventory-config: true","LastLogTerm":4,"StatRetrievalError":null,"CommitIndex":171,"SnapshotTerm":4,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-2-shard-inventory-config","LeadershipChangeCount":1,"InMemoryJournalDataSize":103247},"timestamp":1775610129,"status":200} 
 </msg>
<msg time="2026-04-08T01:02:09.175063" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T01:02:09.166178" elapsed="0.009066"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:09.154408" elapsed="0.021192"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:09.175865" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:09.175642" elapsed="0.000738"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:09.154389" elapsed="0.022029"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:02:09.183445" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-2-shard-inventory-config,type=DistributedConfigDatastore","type":"read"},"value":{"ReadWriteTransactionCount":0,"SnapshotIndex":170,"InMemoryJournalLogSize":1,"ReplicatedToAllIndex":170,"Leader":"member-1-shard-inventory-config","LastIndex":171,"RaftState":"Follower","LastApplied":171,"LastCommittedTransactionTime":"1970-01-01 00:00:00.000","PeerAddresses":"member-1-shard-inventory-config: pekko:\/\/opendaylight-cluster-data@10.30.170.48:2550\/user\/shardmanager-config\/member-1-shard-inventory-config, member-3-shard-inventory-config: pekko:\/\/opendaylight-cluster-data@10.30.171.110:2550\/user\/shardmanager-config\/member-3-shard-inventory-config","LastLogIndex":171,"LastLeadershipChangeTime":"2026-04-08 00:57:11.120","FollowerInitialSyncStatus":true,"FollowerInfo":[],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"210.5 μs","CurrentTerm":4,"LastTerm":4,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-inventory-config","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":0,"TxCohortCacheSize":0,"PeerVotingStates":"member-1-shard-inventory-config: true, member-3-shard-inventory-config: true","LastLogTerm":4,"StatRetrievalError":null,"CommitIndex":171,"SnapshotTerm":4,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-2-shard-inventory-config","LeadershipChangeCount":1,"InMemoryJournalDataSize":103247},"timestamp":1775610129,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:02:09.179383" elapsed="0.004273"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:09.178078" elapsed="0.005648"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:09.178050" elapsed="0.005732"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:02:09.187654" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:02:09.185205" elapsed="0.002549"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:09.183899" elapsed="0.003905"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:09.183873" elapsed="0.003970"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:02:09.189322" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:02:09.188518" elapsed="0.000867"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:09.190016" elapsed="0.000035"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:09.189550" elapsed="0.000552"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:02:09.190989" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:02:09.190486" elapsed="0.000549"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:09.190139" elapsed="0.000946"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:09.189529" elapsed="0.001591"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:02:09.192606" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:02:09.191845" elapsed="0.000822"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:09.193317" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:09.192833" elapsed="0.000571"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:02:09.194361" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:02:09.193771" elapsed="0.000637"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:09.193442" elapsed="0.001019"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:09.192812" elapsed="0.001684"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:02:09.194726" elapsed="0.000643"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T01:02:09.196333" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:02:09.195682" elapsed="0.000713"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T01:02:09.196710" elapsed="0.002396"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T01:02:09.177101" elapsed="0.022190"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T01:02:09.199495" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:02:09.199366" elapsed="0.000175"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:09.199347" elapsed="0.000216"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T01:02:09.203405" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-2-shard-inventory-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 177561...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T01:02:09.199713" elapsed="0.003722"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T01:02:09.203487" elapsed="0.000031"/>
</return>
<msg time="2026-04-08T01:02:09.203647" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-2-shard-inventory-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 177561...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T01:02:09.148659" elapsed="0.055015"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T01:02:09.203770" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T01:02:09.203922" level="INFO">${data_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-2-shard-inventory-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 177561...</msg>
<var>${data_text}</var>
<arg>uri=${uri}</arg>
<arg>session=${session}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-08T01:02:09.147873" elapsed="0.056076"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:02:09.205099" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-2-shard-inventory-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1775610129, 'valu...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:02:09.204618" elapsed="0.000511"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-08T01:02:09.205196" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T01:02:09.205373" level="INFO">${data_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-2-shard-inventory-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1775610129, 'valu...</msg>
<var>${data_object}</var>
<arg>${data_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-08T01:02:09.204189" elapsed="0.001211"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:02:09.205762" level="INFO">${value} = {'AbortTransactionsCount': 0, 'CommitIndex': 171, 'CommittedTransactionsCount': 0, 'CurrentTerm': 4, 'FailedReadTransactionsCount': 0, 'FailedTransactionsCount': 0, 'FollowerInfo': [], 'FollowerInitia...</msg>
<var>${value}</var>
<arg>${data_object}</arg>
<arg>value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:02:09.205559" elapsed="0.000230"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:02:09.206250" level="INFO">${raft_property} = Follower</msg>
<var>${raft_property}</var>
<arg>${value}</arg>
<arg>${property}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:02:09.205976" elapsed="0.000302"/>
</kw>
<return>
<value>${raft_property}</value>
<status status="PASS" start="2026-04-08T01:02:09.206326" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T01:02:09.206479" level="INFO">${raft_state} = Follower</msg>
<var>${raft_state}</var>
<arg>RaftState</arg>
<arg>${shard_name}</arg>
<arg>${shard_type}</arg>
<arg>${member_index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft property.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T01:02:08.870485" elapsed="0.336020"/>
</kw>
<return>
<value>${raft_state}</value>
<status status="PASS" start="2026-04-08T01:02:09.206560" elapsed="0.000026"/>
</return>
<msg time="2026-04-08T01:02:09.206707" level="INFO">${raft_state} = Follower</msg>
<var>${raft_state}</var>
<arg>shard_name=${shard_name}</arg>
<arg>shard_type=${ds_type}</arg>
<arg>member_index=${index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft status.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T01:02:08.869637" elapsed="0.337094"/>
</kw>
<if>
<branch type="IF" condition="'Follower' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${follower_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-08T01:02:09.207028" elapsed="0.000207"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:09.206809" elapsed="0.000464"/>
</branch>
<branch type="ELSE IF" condition="'Leader' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${leader_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:09.207444" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:09.207298" elapsed="0.000199"/>
</branch>
<branch type="ELSE IF" condition="${validate}">
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized Raft state: ${raft_state}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:09.207663" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:09.207520" elapsed="0.000193"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:09.206792" elapsed="0.000943"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T01:02:08.869462" elapsed="0.338297"/>
</iter>
<iter>
<kw name="Get_Raft_State_Of_Shard_At_Member" owner="ClusterManagement">
<kw name="Get_Raft_Property_From_Shard_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:02:09.210124" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:02:09.209796" elapsed="0.000355"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T01:02:09.210213" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T01:02:09.210360" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T01:02:09.209454" elapsed="0.000931"/>
</kw>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Get_As_Json_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:02:09.297433" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:02:09.297038" elapsed="0.000423"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T01:02:09.298233" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T01:02:09.297965" elapsed="0.000344">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-08T01:02:09.298453" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T01:02:09.297628" elapsed="0.000851"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:02:09.299034" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:02:09.298648" elapsed="0.000412"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T01:02:09.299384" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-08T01:02:09.299545" level="INFO">${template} = /rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T01:02:09.299246" elapsed="0.000325"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:02:09.299970" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:02:09.299727" elapsed="0.000286"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:02:09.300975" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:02:09.300725" elapsed="0.000294"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-08T01:02:09.301462" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-08T01:02:09.301194" elapsed="0.000293"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:09.301811" elapsed="0.000022"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:09.302010" elapsed="0.000023"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:09.302199" elapsed="0.000022"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-08T01:02:09.301676" elapsed="0.000581"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-08T01:02:09.301537" elapsed="0.000749"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-08T01:02:09.302329" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T01:02:09.302486" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-08T01:02:09.300402" elapsed="0.002109"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:09.300081" elapsed="0.002461"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:09.302712" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:09.302566" elapsed="0.000200"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:09.300062" elapsed="0.002724"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:02:09.303368" level="INFO">${final_text} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:02:09.302929" elapsed="0.000466"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T01:02:09.303443" elapsed="0.000028"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="PASS" start="2026-04-08T01:02:09.296417" elapsed="0.007147"/>
</kw>
<msg time="2026-04-08T01:02:09.303616" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:02:09.283610" elapsed="0.020087"/>
</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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:09.316694" elapsed="0.000041"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:09.329383" elapsed="0.000041"/>
</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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:09.342173" elapsed="0.000043"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:09.342945" elapsed="0.000037"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:09.343716" elapsed="0.000036"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:09.344278" elapsed="0.000044"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:09.344115" elapsed="0.000244"/>
</branch>
<status status="NOT RUN" start="2026-04-08T01:02:09.344098" elapsed="0.000285"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:09.344545" elapsed="0.000022"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:09.344733" elapsed="0.000021"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:09.344920" elapsed="0.000021"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-08T01:02:09.344050" elapsed="0.000944"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-08T01:02:09.343832" elapsed="0.001201"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:09.345751" elapsed="0.000036"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-08T01:02:09.345868" elapsed="0.000047"/>
</return>
<msg time="2026-04-08T01:02:09.346085" level="INFO">${uri} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-08T01:02:09.277229" elapsed="0.068978"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T01:02:09.349046" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T01:02:09.348802" elapsed="0.000309">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-08T01:02:09.349312" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T01:02:09.348364" elapsed="0.000994"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:09.349877" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:09.349487" elapsed="0.000462"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:02:09.350563" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:02:09.350268" elapsed="0.000321"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:09.349988" elapsed="0.000647"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:09.349438" elapsed="0.001235"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:02:09.353935" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:02:09.351532" elapsed="0.002449"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-08T01:02:09.354057" elapsed="0.000063"/>
</return>
<msg time="2026-04-08T01:02:09.354389" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T01:02:09.347195" elapsed="0.007300"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T01:02:09.357448" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T01:02:09.357198" elapsed="0.000314">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-08T01:02:09.357735" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T01:02:09.356744" elapsed="0.001036"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-08T01:02:09.358176" elapsed="0.000093"/>
</return>
<status status="PASS" start="2026-04-08T01:02:09.357911" elapsed="0.000427"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:09.357860" elapsed="0.000517"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:09.359122" elapsed="0.000126"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:09.359976" elapsed="0.000036"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-08T01:02:09.360084" elapsed="0.000048"/>
</return>
<msg time="2026-04-08T01:02:09.362367" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T01:02:09.355589" elapsed="0.006888"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:02:09.366431" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:02:09.366026" elapsed="0.000504"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:02:09.367785" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:02:09.367405" elapsed="0.000476"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T01:02:09.388669" level="INFO">GET Request : url=http://10.30.171.110:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 path_url=/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0bpvxx3soilt318jo6w4kocddk0.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T01:02:09.389487" level="INFO">GET Response : url=http://10.30.171.110:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Transfer-Encoding': 'chunked'} 
 body={"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","encrypted-passwords","hidden-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-private-keys","asymmetrically-encrypted-value-format","cleartext-private-keys","cms-encrypted-data-format","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["client-ident-hostbased","ssh-client-keepalives","client-ident-password","client-ident-publickey"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-ex... (set the log level to DEBUG or TRACE to see the full content) 
 </msg>
<msg time="2026-04-08T01:02:09.389936" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T01:02:09.370221" elapsed="0.019776"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:09.368008" elapsed="0.022115"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:09.390830" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:09.390266" elapsed="0.000734"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:09.367957" elapsed="0.023125"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:02:09.399054" level="INFO">{"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","encrypted-passwords","hidden-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-private-keys","asymmetrically-encrypted-value-format","cleartext-private-keys","cms-encrypted-data-format","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["client-ident-hostbased","ssh-client-keepalives","client-ident-password","client-ident-publickey"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-experimenter-types?revision=2015-10-20","namespace":"urn:opendaylight:openflowplugin:experimenter:types","conformance-type":"import"},{"name":"ietf-ip_2018-02-22","revision":"2018-02-22","schema":"/rests/modules/ietf-ip?revision=2018-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-ip","conformance-type":"import","feature":["ipv6-privacy-autoconf","ipv4-non-contiguous-netmasks"]},{"name":"ietf-tcp-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-client","conformance-type":"import","feature":["local-binding-supported","tcp-client-keepalives"]},{"name":"node-config_2014-10-15","revision":"2014-10-15","schema":"/rests/modules/node-config?revision=2014-10-15","namespace":"urn:opendaylight:module:config","conformance-type":"import"},{"name":"ietf-restconf_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf","conformance-type":"import"},{"name":"ietf-datastores_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-datastores?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-datastores","conformance-type":"import"},{"name":"ietf-yang-patch_2017-02-22","revision":"2017-02-22","schema":"/rests/modules/ietf-yang-patch?revision=2017-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-patch","conformance-type":"import"},{"name":"sal-group_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-group?revision=2013-09-18","namespace":"urn:opendaylight:group:service","conformance-type":"import"},{"name":"odl-codegen-extensions_2024-06-27","revision":"2024-06-27","schema":"/rests/modules/odl-codegen-extensions?revision=2024-06-27","namespace":"urn:opendaylight:yang:extension:codegen","conformance-type":"import"},{"name":"sal-meter_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-meter?revision=2013-09-18","namespace":"urn:opendaylight:meter:service","conformance-type":"import"},{"name":"ietf-interfaces_2018-02-20","revision":"2018-02-20","schema":"/rests/modules/ietf-interfaces?revision=2018-02-20","namespace":"urn:ietf:params:xml:ns:yang:ietf-interfaces","conformance-type":"import","feature":["pre-provisioning","if-mib","arbitrary-names"]},{"name":"opendaylight-l2-types_2013-08-27","revision":"2013-08-27","schema":"/rests/modules/opendaylight-l2-types?revision=2013-08-27","namespace":"urn:opendaylight:l2:types","conformance-type":"import"},{"name":"opendaylight-flow-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-flow-types?revision=2013-10-26","namespace":"urn:opendaylight:flow:types","conformance-type":"import"},{"name":"lldp-speaker-config_2016-05-12","revision":"2016-05-12","schema":"/rests/modules/lldp-speaker-config?revision=2016-05-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker:config","conformance-type":"import"},{"name":"aaa-cert_2015-11-26","revision":"2015-11-26","schema":"/rests/modules/aaa-cert?revision=2015-11-26","namespace":"urn:opendaylight:yang:aaa:cert","conformance-type":"import"},{"name":"openflow-action_2015-02-03","revision":"2015-02-03","schema":"/rests/modules/openflow-action?revision=2015-02-03","namespace":"urn:opendaylight:openflow:common:action","conformance-type":"import"},{"name":"openflow-approved-extensions_2016-08-02","revision":"2016-08-02","schema":"/rests/modules/openflow-approved-extensions?revision=2016-08-02","namespace":"urn:opendaylight:openflow:approved:extensions","conformance-type":"import"},{"name":"nc-notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/nc-notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netmod:notification","conformance-type":"import"},{"name":"ietf-netconf-nmda_2019-01-07","revision":"2019-01-07","schema":"/rests/modules/ietf-netconf-nmda?revision=2019-01-07","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-nmda","conformance-type":"import","feature":["with-defaults","origin"]},{"name":"ietf-tcp-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-common","conformance-type":"import","feature":["keepalives-supported"]},{"name":"network-topology_2013-10-21","revision":"2013-10-21","schema":"/rests/modules/network-topology?revision=2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:network-topology","conformance-type":"import"},{"name":"aaa-encrypt-service-config_2024-02-02","revision":"2024-02-02","schema":"/rests/modules/aaa-encrypt-service-config?revision=2024-02-02","namespace":"config:aaa:authn:encrypt:service:config","conformance-type":"import"},{"name":"openflow-instruction_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-instruction?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:instruction","conformance-type":"import"},{"name":"ietf-tls-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-client","conformance-type":"import","feature":["client-ident-x509-cert","server-auth-x509-cert"]},{"name":"opendaylight-group-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-group-statistics?revision=2013-11-11","namespace":"urn:opendaylight:group:statistics","conformance-type":"import"},{"name":"cluster-admin_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/cluster-admin?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:cluster:admin","conformance-type":"import"},{"name":"opendaylight-flow-statistics_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-flow-statistics?revision=2013-08-19","namespace":"urn:opendaylight:flow:statistics","conformance-type":"import"},{"name":"opendaylight-table-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-table-types?revision=2013-10-26","namespace":"urn:opendaylight:table:types","conformance-type":"import"},{"name":"forwarding-rules-manager-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/forwarding-rules-manager-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:forwardingrules-manager:config","conformance-type":"import"},{"name":"odl-srm-types_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-types?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:types","conformance-type":"import"},{"name":"ietf-x509-cert-to-name_2014-12-10","revision":"2014-12-10","schema":"/rests/modules/ietf-x509-cert-to-name?revision=2014-12-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-x509-cert-to-name","conformance-type":"import"},{"name":"flow-node-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-node-inventory?revision=2013-08-19","namespace":"urn:opendaylight:flow:inventory","conformance-type":"import"},{"name":"flow-errors_2013-11-16","revision":"2013-11-16","schema":"/rests/modules/flow-errors?revision=2013-11-16","namespace":"urn:opendaylight:flow:errors","conformance-type":"import"},{"name":"ietf-netconf_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:netconf:base:1.0","conformance-type":"import","feature":["xpath","url","rollback-on-error","validate","candidate","confirmed-commit","startup","writable-running"]},{"name":"iana-ssh-public-key-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-public-key-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-public-key-algs","conformance-type":"import"},{"name":"aaa-cert-mdsal_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/aaa-cert-mdsal?revision=2016-03-21","namespace":"urn:opendaylight:yang:aaa:cert:mdsal","conformance-type":"import"},{"name":"odl-device-notification_2024-02-18","revision":"2024-02-18","schema":"/rests/modules/odl-device-notification?revision=2024-02-18","namespace":"urn:opendaylight:device:notification","conformance-type":"import"},{"name":"ietf-origin_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-origin?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-origin","conformance-type":"import"},{"name":"openflow-augments_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-augments?revision=2015-02-25","namespace":"urn:opendaylight:openflow:augments","conformance-type":"import"},{"name":"iana-ssh-encryption-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-encryption-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-encryption-algs","conformance-type":"import"},{"name":"ietf-truststore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-truststore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-truststore","conformance-type":"import","feature":["inline-definitions-supported"]},{"name":"distributed-datastore-provider_2025-01-30","revision":"2025-01-30","schema":"/rests/modules/distributed-datastore-provider?revision=2025-01-30","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:distributed-datastore-provider","conformance-type":"import"},{"name":"opendaylight-group-types_2013-10-18","revision":"2013-10-18","schema":"/rests/modules/opendaylight-group-types?revision=2013-10-18","namespace":"urn:opendaylight:group:types","conformance-type":"import"},{"name":"sal-remote-augment_2023-11-03","revision":"2023-11-03","schema":"/rests/modules/sal-remote-augment?revision=2023-11-03","namespace":"urn:sal:restconf:event:subscription","conformance-type":"import"},{"name":"opendaylight-ipv6-arbitrary-bitmask-fields_2016-02-24","revision":"2016-02-24","schema":"/rests/modules/opendaylight-ipv6-arbitrary-bitmask-fields?revision=2016-02-24","namespace":"urn:opendaylight:opendaylight-ipv6-arbitrary-bitmask-fields","conformance-type":"import"},{"name":"sal-flows-batch_2016-03-14","revision":"2016-03-14","schema":"/rests/modules/sal-flows-batch?revision=2016-03-14","namespace":"urn:opendaylight:flows:service","conformance-type":"import"},{"name":"ietf-tls-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-common","conformance-type":"import","feature":["hello-params","tls12","tls13"]},{"name":"openflow-types_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-types?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:types","conformance-type":"import"},{"name":"ietf-netconf-with-defaults_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf-with-defaults?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults","conformance-type":"import"},{"name":"odl-srm-ops_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-ops?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:ops","conformance-type":"import"},{"name":"odl-general-entity_2015-09-30","revision":"2015-09-30","schema":"/rests/modules/odl-general-entity?revision=2015-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:mdsal:core:general-entity","conformance-type":"import"},{"name":"iana-ssh-key-exchange-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-key-exchange-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-key-exchange-algs","conformance-type":"import"},{"name":"node-ssl-connection-error_2019-07-23","revision":"2019-07-23","schema":"/rests/modules/node-ssl-connection-error?revision=2019-07-23","namespace":"urn:opendaylight:node-ssl-connection-error:service","conformance-type":"import"},{"name":"openflow-protocol_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-protocol?revision=2013-07-31","namespace":"urn:opendaylight:openflow:protocol","conformance-type":"import"},{"name":"ietf-udp-server_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-server?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-server","conformance-type":"import"},{"name":"ietf-keystore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-keystore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-keystore","conformance-type":"import","feature":["asymmetric-keys","inline-definitions-supported"]},{"name":"aaa_2016-12-14","revision":"2016-12-14","schema":"/rests/modules/aaa?revision=2016-12-14","namespace":"urn:opendaylight:params:xml:ns:yang:aaa","conformance-type":"import"},{"name":"aaa-cert-rpc_2015-12-15","revision":"2015-12-15","schema":"/rests/modules/aaa-cert-rpc?revision=2015-12-15","namespace":"urn:opendaylight:yang:aaa:cert:rpc","conformance-type":"import"},{"name":"system-notifications_2013-09-27","revision":"2013-09-27","schema":"/rests/modules/system-notifications?revision=2013-09-27","namespace":"urn:opendaylight:openflow:system","conformance-type":"import"},{"name":"sal-flat-batch_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/sal-flat-batch?revision=2016-03-21","namespace":"urn:opendaylight:flat-batch:service","conformance-type":"import"},{"name":"notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netconf:notification:1.0","conformance-type":"import"},{"name":"sal-remote_2014-01-14","revision":"2014-01-14","schema":"/rests/modules/sal-remote?revision=2014-01-14","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:remote","conformance-type":"import"},{"name":"yang-ext_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/yang-ext?revision=2013-07-09","namespace":"urn:opendaylight:yang:extension:yang-ext","conformance-type":"import"},{"name":"opendaylight-multipart-types_2017-01-12","revision":"2017-01-12","schema":"/rests/modules/opendaylight-multipart-types?revision=2017-01-12","namespace":"urn:opendaylight:multipart:types","conformance-type":"import"},{"name":"opendaylight-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-inventory?revision=2013-08-19","namespace":"urn:opendaylight:inventory","conformance-type":"import"},{"name":"sal-queue_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-queue?revision=2015-03-05","namespace":"urn:opendaylight:queue:service","conformance-type":"import"},{"name":"sal-groups-batch_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/sal-groups-batch?revision=2016-03-15","namespace":"urn:opendaylight:groups:service","conformance-type":"import"},{"name":"arbitrator-reconcile_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/arbitrator-reconcile?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:arbitrator-reconcile:service","conformance-type":"import"},{"name":"ietf-yang-metadata_2016-08-05","revision":"2016-08-05","schema":"/rests/modules/ietf-yang-metadata?revision=2016-08-05","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-metadata","conformance-type":"import"},{"name":"opendaylight-arbitrary-bitmask-fields_2016-01-30","revision":"2016-01-30","schema":"/rests/modules/opendaylight-arbitrary-bitmask-fields?revision=2016-01-30","namespace":"urn:opendaylight:arbitrary:bitmask:fields","conformance-type":"import"},{"name":"ietf-udp-client_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-client?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-client","conformance-type":"import","feature":["local-binding"]},{"name":"opendaylight-meter-types_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/opendaylight-meter-types?revision=2013-09-18","namespace":"urn:opendaylight:meter:types","conformance-type":"import"},{"name":"opendaylight-action-types_2013-11-12","revision":"2013-11-12","schema":"/rests/modules/opendaylight-action-types?revision=2013-11-12","namespace":"urn:opendaylight:action:types","conformance-type":"import"},{"name":"sal-role_2015-07-27","revision":"2015-07-27","schema":"/rests/modules/sal-role?revision=2015-07-27","namespace":"urn:opendaylight:role:service","conformance-type":"import"},{"name":"openflow-provider-config_2016-05-10","revision":"2016-05-10","schema":"/rests/modules/openflow-provider-config?revision=2016-05-10","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:provider:config","conformance-type":"import"},{"name":"odl-serviceutils-upgrade_2018-07-02","revision":"2018-07-02","schema":"/rests/modules/odl-serviceutils-upgrade?revision=2018-07-02","namespace":"urn:opendaylight:serviceutils:upgrade","conformance-type":"import"},{"name":"opendaylight-match-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-match-types?revision=2013-10-26","namespace":"urn:opendaylight:model:match:types","conformance-type":"import"},{"name":"ietf-restconf-server_2024-08-14","revision":"2024-08-14","schema":"/rests/modules/ietf-restconf-server?revision=2024-08-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-server","conformance-type":"import","feature":["http-listen","https-listen"]},{"name":"reconciliation-result-state_2017-07-13","revision":"2017-07-13","schema":"/rests/modules/reconciliation-result-state?revision=2017-07-13","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:rf:state","conformance-type":"import"},{"name":"onf-extensions_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/onf-extensions?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf","conformance-type":"import"},{"name":"sal-table_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/sal-table?revision=2013-10-26","namespace":"urn:opendaylight:table:service","conformance-type":"import"},{"name":"iana-http-versions_2026-02-04","revision":"2026-02-04","schema":"/rests/modules/iana-http-versions?revision=2026-02-04","namespace":"urn:ietf:params:xml:ns:yang:iana-http-versions","conformance-type":"import"},{"name":"opendaylight-direct-statistics_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/opendaylight-direct-statistics?revision=2016-05-11","namespace":"urn:opendaylight:direct:statistics","conformance-type":"import"},{"name":"opendaylight-port-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-port-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:port","conformance-type":"import"},{"name":"sal-async-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/sal-async-config?revision=2017-06-19","namespace":"urn:opendaylight:async-config:service","conformance-type":"import"},{"name":"aaa-password-service-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-password-service-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:password:service:config","conformance-type":"import"},{"name":"ietf-yang-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-yang-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-types","conformance-type":"import"},{"name":"opendaylight-queue-statistics_2013-12-16","revision":"2013-12-16","schema":"/rests/modules/opendaylight-queue-statistics?revision=2013-12-16","namespace":"urn:opendaylight:queue:statistics","conformance-type":"import"},{"name":"sal-bundle_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/sal-bundle?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf:bundle:service","conformance-type":"import"},{"name":"ietf-restconf-subscribed-notifications_2019-11-17","revision":"2019-11-17","schema":"/rests/modules/ietf-restconf-subscribed-notifications?revision=2019-11-17","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-subscribed-notifications","conformance-type":"import"},{"name":"sal-meters-batch_2016-03-16","revision":"2016-03-16","schema":"/rests/modules/sal-meters-batch?revision=2016-03-16","namespace":"urn:opendaylight:meters:service","conformance-type":"import"},{"name":"odl-entity-owners","revision":"","schema":"/rests/modules/odl-entity-owners","namespace":"urn:opendaylight:params:xml:ns:yang:controller:entity-owners","conformance-type":"import"},{"name":"sal-experimenter-mp-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-mp-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-mp-message:service","conformance-type":"import"},{"name":"packet-processing_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/packet-processing?revision=2013-07-09","namespace":"urn:opendaylight:packet:service","conformance-type":"import"},{"name":"openflow-configuration_2014-06-30","revision":"2014-06-30","schema":"/rests/modules/openflow-configuration?revision=2014-06-30","namespace":"urn:opendaylight:openflow:config","conformance-type":"import"},{"name":"odl-srm-rpcs_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-rpcs?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:rpc","conformance-type":"import"},{"name":"ietf-netconf-acm_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-netconf-acm?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-acm","conformance-type":"import"},{"name":"iana-crypt-hash_2014-08-06","revision":"2014-08-06","schema":"/rests/modules/iana-crypt-hash?revision=2014-08-06","namespace":"urn:ietf:params:xml:ns:yang:iana-crypt-hash","conformance-type":"import","feature":["crypt-hash-sha-512","crypt-hash-sha-256","crypt-hash-md5"]},{"name":"openflow-extensible-match_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-extensible-match?revision=2015-02-25","namespace":"urn:opendaylight:openflow:oxm","conformance-type":"import"}],"module-set-id":"2"}}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:02:09.394991" elapsed="0.004434"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:09.394487" elapsed="0.004975"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:09.394438" elapsed="0.005049"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:02:09.402049" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:02:09.399798" elapsed="0.002298"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:09.399568" elapsed="0.002563"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:09.399549" elapsed="0.002620"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:02:09.402740" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:02:09.402359" elapsed="0.000409"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:09.403102" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:09.402860" elapsed="0.000353"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:02:09.403715" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:02:09.403407" elapsed="0.000335"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:09.403239" elapsed="0.000539"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:09.402841" elapsed="0.000959"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:02:09.404382" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:02:09.403984" elapsed="0.000426"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:09.404744" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:09.404502" elapsed="0.000299"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:02:09.405312" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:02:09.404992" elapsed="0.000347"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:09.404825" elapsed="0.000549"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:09.404482" elapsed="0.000915"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:02:09.405570" elapsed="0.000356"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T01:02:09.406414" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:02:09.406115" elapsed="0.000326"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T01:02:09.406619" elapsed="0.002387"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T01:02:09.392811" elapsed="0.016320"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T01:02:09.409500" elapsed="0.000047"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:02:09.409279" elapsed="0.000333"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:09.409227" elapsed="0.000422"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T01:02:09.418832" level="INFO">${text_normalized} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T01:02:09.410538" elapsed="0.008343"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T01:02:09.418964" elapsed="0.000063"/>
</return>
<msg time="2026-04-08T01:02:09.419303" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T01:02:09.363125" elapsed="0.056285"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T01:02:09.419866" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T01:02:09.420044" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="PASS" start="2026-04-08T01:02:09.219005" elapsed="0.201066"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Json_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:09.420434" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:09.420168" elapsed="0.000454"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:09.420137" elapsed="0.000513"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T01:02:09.420684" elapsed="0.000028"/>
</return>
<arg>session=${session}</arg>
<arg>folder=${RESTCONF_MODULES_DIR}</arg>
<arg>verify=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Add arguments sensible for JSON data, return Get_Templated response text.
Optionally, verification against JSON data (may be iterated) is called.
Only subset of JSON data is verified and returned if JMES path is specified in
file ${folder}/jmespath.expr.</doc>
<status status="PASS" start="2026-04-08T01:02:09.214737" elapsed="0.206077"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:09.210613" elapsed="0.210244"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:09.210434" elapsed="0.210448"/>
</if>
<kw name="Resolve_Shard_Type_Class" owner="ClusterManagement">
<if>
<branch type="IF" condition="'${shard_type}' == 'config'">
<return>
<value>DistributedConfigDatastore</value>
<status status="PASS" start="2026-04-08T01:02:09.421504" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-08T01:02:09.421396" elapsed="0.000167"/>
</branch>
<branch type="ELSE IF" condition="'${shard_type}' == 'operational'">
<return>
<value>DistributedOperationalDatastore</value>
<status status="NOT RUN" start="2026-04-08T01:02:09.421624" elapsed="0.000012"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:02:09.421587" elapsed="0.000075"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:09.421377" elapsed="0.000308"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized shard type: ${shard_type}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:09.421833" elapsed="0.000021"/>
</kw>
<msg time="2026-04-08T01:02:09.421954" level="INFO">${type_class} = DistributedConfigDatastore</msg>
<var>${type_class}</var>
<arg>shard_type=${shard_type}</arg>
<doc>Simple lookup for class name corresponding to desired type.</doc>
<status status="PASS" start="2026-04-08T01:02:09.421110" elapsed="0.000870"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:02:09.422543" level="INFO">${cluster_index} = 3</msg>
<var>${cluster_index}</var>
<arg>${member_index}+${NODE_ROLE_INDEX_START}-1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:02:09.422151" elapsed="0.000419"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:02:09.423209" level="INFO">${uri} = jolokia/read/org.opendaylight.controller:Category=Shards,name=member-3-shard-inventory-config,type=DistributedConfigDatastore</msg>
<var>${uri}</var>
<arg>${JOLOKIA_READ_URI}:Category=Shards,name=member-${cluster_index}-shard-${shard_name}-${shard_type},type=${type_class}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:02:09.422728" elapsed="0.000511"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:02:09.428899" level="INFO">jolokia/read/org.opendaylight.controller:Category=Shards,name=member-3-shard-inventory-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:02:09.428467" elapsed="0.000479"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:02:09.429548" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:02:09.429105" elapsed="0.000487"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T01:02:09.449598" level="INFO">GET Request : url=http://10.30.171.110:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-3-shard-inventory-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-3-shard-inventory-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T01:02:09.449729" level="INFO">GET Response : url=http://10.30.171.110:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-3-shard-inventory-config,type=DistributedConfigDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Wed, 08 Apr 2026 01:02:09 GMT', 'Expires': 'Wed, 08 Apr 2026 00:02:09 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-3-shard-inventory-config,type=DistributedConfigDatastore","type":"read"},"value":{"ReadWriteTransactionCount":0,"SnapshotIndex":170,"InMemoryJournalLogSize":1,"ReplicatedToAllIndex":170,"Leader":"member-1-shard-inventory-config","LastIndex":171,"RaftState":"Follower","LastApplied":171,"LastCommittedTransactionTime":"1970-01-01 00:00:00.000","PeerAddresses":"member-1-shard-inventory-config: pekko:\/\/opendaylight-cluster-data@10.30.170.48:2550\/user\/shardmanager-config\/member-1-shard-inventory-config, member-2-shard-inventory-config: pekko:\/\/opendaylight-cluster-data@10.30.170.131:2550\/user\/shardmanager-config\/member-2-shard-inventory-config","LastLogIndex":171,"LastLeadershipChangeTime":"2026-04-08 00:57:11.121","FollowerInitialSyncStatus":true,"FollowerInfo":[],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"261.7 μs","CurrentTerm":4,"LastTerm":4,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-inventory-config","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":0,"TxCohortCacheSize":0,"PeerVotingStates":"member-1-shard-inventory-config: true, member-2-shard-inventory-config: true","LastLogTerm":4,"StatRetrievalError":null,"CommitIndex":171,"SnapshotTerm":4,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-3-shard-inventory-config","LeadershipChangeCount":1,"InMemoryJournalDataSize":103247},"timestamp":1775610129,"status":200} 
 </msg>
<msg time="2026-04-08T01:02:09.449916" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T01:02:09.440970" elapsed="0.009055"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:09.429661" elapsed="0.020642"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:09.450491" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:09.450333" elapsed="0.000470"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:09.429642" elapsed="0.021186"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:02:09.457006" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-3-shard-inventory-config,type=DistributedConfigDatastore","type":"read"},"value":{"ReadWriteTransactionCount":0,"SnapshotIndex":170,"InMemoryJournalLogSize":1,"ReplicatedToAllIndex":170,"Leader":"member-1-shard-inventory-config","LastIndex":171,"RaftState":"Follower","LastApplied":171,"LastCommittedTransactionTime":"1970-01-01 00:00:00.000","PeerAddresses":"member-1-shard-inventory-config: pekko:\/\/opendaylight-cluster-data@10.30.170.48:2550\/user\/shardmanager-config\/member-1-shard-inventory-config, member-2-shard-inventory-config: pekko:\/\/opendaylight-cluster-data@10.30.170.131:2550\/user\/shardmanager-config\/member-2-shard-inventory-config","LastLogIndex":171,"LastLeadershipChangeTime":"2026-04-08 00:57:11.121","FollowerInitialSyncStatus":true,"FollowerInfo":[],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"261.7 μs","CurrentTerm":4,"LastTerm":4,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-inventory-config","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":0,"TxCohortCacheSize":0,"PeerVotingStates":"member-1-shard-inventory-config: true, member-2-shard-inventory-config: true","LastLogTerm":4,"StatRetrievalError":null,"CommitIndex":171,"SnapshotTerm":4,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-3-shard-inventory-config","LeadershipChangeCount":1,"InMemoryJournalDataSize":103247},"timestamp":1775610129,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:02:09.453188" elapsed="0.004055"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:09.452185" elapsed="0.005129"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:09.452150" elapsed="0.005219"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:02:09.461935" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:02:09.458730" elapsed="0.003311"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:09.457486" elapsed="0.004604"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:09.457460" elapsed="0.004668"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:02:09.463550" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:02:09.462790" elapsed="0.000835"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:09.464284" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:09.463791" elapsed="0.000580"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:02:09.465326" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:02:09.464737" elapsed="0.000636"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:09.464408" elapsed="0.001015"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:09.463770" elapsed="0.001689"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:02:09.466839" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:02:09.466093" elapsed="0.000808"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:09.467551" elapsed="0.000035"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:09.467069" elapsed="0.000568"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:02:09.468531" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:02:09.468008" elapsed="0.000569"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:09.467674" elapsed="0.000955"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:09.467049" elapsed="0.001754"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:02:09.469037" elapsed="0.000641"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T01:02:09.470613" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:02:09.469989" elapsed="0.000685"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T01:02:09.470960" elapsed="0.002420"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T01:02:09.451498" elapsed="0.022042"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T01:02:09.473739" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:02:09.473612" elapsed="0.000172"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:09.473594" elapsed="0.000212"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T01:02:09.477551" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-3-shard-inventory-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 177561...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T01:02:09.473954" elapsed="0.003627"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T01:02:09.477632" elapsed="0.000031"/>
</return>
<msg time="2026-04-08T01:02:09.477789" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-3-shard-inventory-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 177561...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T01:02:09.424192" elapsed="0.053624"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T01:02:09.477907" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T01:02:09.478064" level="INFO">${data_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-3-shard-inventory-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 177561...</msg>
<var>${data_text}</var>
<arg>uri=${uri}</arg>
<arg>session=${session}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-08T01:02:09.423452" elapsed="0.054638"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:02:09.479147" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-3-shard-inventory-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1775610129, 'valu...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:02:09.478676" elapsed="0.000517"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-08T01:02:09.479243" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T01:02:09.479418" level="INFO">${data_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-3-shard-inventory-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1775610129, 'valu...</msg>
<var>${data_object}</var>
<arg>${data_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-08T01:02:09.478330" elapsed="0.001115"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:02:09.479805" level="INFO">${value} = {'AbortTransactionsCount': 0, 'CommitIndex': 171, 'CommittedTransactionsCount': 0, 'CurrentTerm': 4, 'FailedReadTransactionsCount': 0, 'FailedTransactionsCount': 0, 'FollowerInfo': [], 'FollowerInitia...</msg>
<var>${value}</var>
<arg>${data_object}</arg>
<arg>value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:02:09.479603" elapsed="0.000229"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:02:09.480277" level="INFO">${raft_property} = Follower</msg>
<var>${raft_property}</var>
<arg>${value}</arg>
<arg>${property}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:02:09.479990" elapsed="0.000314"/>
</kw>
<return>
<value>${raft_property}</value>
<status status="PASS" start="2026-04-08T01:02:09.480353" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T01:02:09.480505" level="INFO">${raft_state} = Follower</msg>
<var>${raft_state}</var>
<arg>RaftState</arg>
<arg>${shard_name}</arg>
<arg>${shard_type}</arg>
<arg>${member_index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft property.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T01:02:09.208838" elapsed="0.271692"/>
</kw>
<return>
<value>${raft_state}</value>
<status status="PASS" start="2026-04-08T01:02:09.480586" elapsed="0.000026"/>
</return>
<msg time="2026-04-08T01:02:09.480732" level="INFO">${raft_state} = Follower</msg>
<var>${raft_state}</var>
<arg>shard_name=${shard_name}</arg>
<arg>shard_type=${ds_type}</arg>
<arg>member_index=${index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft status.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T01:02:09.208088" elapsed="0.272668"/>
</kw>
<if>
<branch type="IF" condition="'Follower' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${follower_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-08T01:02:09.481054" elapsed="0.000214"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:09.480836" elapsed="0.000471"/>
</branch>
<branch type="ELSE IF" condition="'Leader' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${leader_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:09.481480" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:09.481332" elapsed="0.000201"/>
</branch>
<branch type="ELSE IF" condition="${validate}">
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized Raft state: ${raft_state}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:09.481698" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:09.481556" elapsed="0.000193"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:09.480818" elapsed="0.000953"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T01:02:09.207919" elapsed="0.273876"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-08T01:02:08.605100" elapsed="0.876726"/>
</for>
<return>
<value>${leader_list}</value>
<value>${follower_list}</value>
<status status="PASS" start="2026-04-08T01:02:09.481866" elapsed="0.000026"/>
</return>
<msg time="2026-04-08T01:02:09.482064" level="INFO">${leader_list} = [1]</msg>
<msg time="2026-04-08T01:02:09.482110" level="INFO">${follower_list} = [2, 3]</msg>
<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="PASS" start="2026-04-08T01:02:08.601112" elapsed="0.881021"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T01:02:09.482593" level="INFO">Length is 1.</msg>
<msg time="2026-04-08T01:02:09.482668" level="INFO">${leader_count} = 1</msg>
<var>${leader_count}</var>
<arg>${leader_list}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T01:02:09.482328" elapsed="0.000364"/>
</kw>
<if>
<branch type="IF" condition="${leader_count} &lt; 1">
<kw name="Fail" owner="BuiltIn">
<arg>No leader found.</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:09.482974" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:09.482759" elapsed="0.000268"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:09.482742" elapsed="0.000308"/>
</if>
<kw name="Length Should Be" owner="BuiltIn">
<msg time="2026-04-08T01:02:09.485271" level="INFO">Length is 1.</msg>
<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="PASS" start="2026-04-08T01:02:09.483203" elapsed="0.002116"/>
</kw>
<kw name="Get From List" owner="Collections">
<msg time="2026-04-08T01:02:09.485707" level="INFO">${leader} = 1</msg>
<var>${leader}</var>
<arg>${leader_list}</arg>
<arg>0</arg>
<doc>Returns the value specified with an ``index`` from ``list``.</doc>
<status status="PASS" start="2026-04-08T01:02:09.485520" elapsed="0.000213"/>
</kw>
<return>
<value>${leader}</value>
<value>${follower_list}</value>
<status status="PASS" start="2026-04-08T01:02:09.485780" elapsed="0.000028"/>
</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="PASS" start="2026-04-08T01:02:08.598530" elapsed="0.887403"/>
</kw>
<var name="${shard_name}">inventory</var>
<status status="PASS" start="2026-04-08T01:02:08.598313" elapsed="0.887667"/>
</iter>
<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-04-08T01:02:09.490388" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:02:09.489994" elapsed="0.000422"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:02:09.490878" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:02:09.490577" elapsed="0.000326"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T01:02:09.490948" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T01:02:09.491103" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T01:02:09.489623" elapsed="0.001504"/>
</kw>
<kw name="Sort List" owner="Collections">
<arg>${index_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="PASS" start="2026-04-08T01:02:09.491298" elapsed="0.000152"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:02:09.491941" level="INFO">${ds_type} = config</msg>
<var>${ds_type}</var>
<arg>'${shard_type}' != 'config'</arg>
<arg>operational</arg>
<arg>config</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:02:09.491612" elapsed="0.000451"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:02:09.492501" level="INFO">${leader_list} = []</msg>
<var>${leader_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:02:09.492260" elapsed="0.000266"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:02:09.492912" level="INFO">${follower_list} = []</msg>
<var>${follower_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:02:09.492675" elapsed="0.000262"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_Raft_State_Of_Shard_At_Member" owner="ClusterManagement">
<kw name="Get_Raft_Property_From_Shard_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:02:09.495355" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:02:09.495018" elapsed="0.000364"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T01:02:09.495428" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T01:02:09.495574" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T01:02:09.494676" elapsed="0.000923"/>
</kw>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Get_As_Json_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:02:09.581353" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:02:09.580966" elapsed="0.000415"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T01:02:09.582102" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T01:02:09.581874" elapsed="0.000315">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-08T01:02:09.582283" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T01:02:09.581543" elapsed="0.000764"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:02:09.582847" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:02:09.582472" elapsed="0.000401"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T01:02:09.583184" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-08T01:02:09.583324" level="INFO">${template} = /rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T01:02:09.583035" elapsed="0.000314"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:02:09.583745" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:02:09.583504" elapsed="0.000320"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:02:09.584789" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:02:09.584540" elapsed="0.000292"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-08T01:02:09.585273" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-08T01:02:09.584993" elapsed="0.000306"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:09.585612" elapsed="0.000022"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:09.585813" elapsed="0.000024"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:09.585988" elapsed="0.000020"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-08T01:02:09.585477" elapsed="0.000568"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-08T01:02:09.585345" elapsed="0.000729"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-08T01:02:09.586116" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T01:02:09.586292" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-08T01:02:09.584219" elapsed="0.002098"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:09.583895" elapsed="0.002454"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:09.586520" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:09.586372" elapsed="0.000202"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:09.583875" elapsed="0.002719"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:02:09.587174" level="INFO">${final_text} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:02:09.586735" elapsed="0.000467"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T01:02:09.587250" 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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="PASS" start="2026-04-08T01:02:09.580358" elapsed="0.007016"/>
</kw>
<msg time="2026-04-08T01:02:09.587425" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:02:09.567551" elapsed="0.019953"/>
</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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:09.600191" elapsed="0.000043"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:09.612806" elapsed="0.000041"/>
</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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:09.625559" elapsed="0.000042"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:09.626361" elapsed="0.000037"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:09.627126" elapsed="0.000051"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:09.627696" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:09.627547" elapsed="0.000238"/>
</branch>
<status status="NOT RUN" start="2026-04-08T01:02:09.627532" elapsed="0.000279"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:09.627976" elapsed="0.000021"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:09.628210" elapsed="0.000022"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:09.628400" elapsed="0.000021"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-08T01:02:09.627483" elapsed="0.000991"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-08T01:02:09.627263" elapsed="0.001250"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:09.629244" elapsed="0.000036"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-08T01:02:09.629365" elapsed="0.000047"/>
</return>
<msg time="2026-04-08T01:02:09.629584" level="INFO">${uri} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-08T01:02:09.561215" elapsed="0.068477"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T01:02:09.632576" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T01:02:09.632333" elapsed="0.000306">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-08T01:02:09.632825" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T01:02:09.631856" elapsed="0.001015"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:09.633396" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:09.633000" elapsed="0.000464"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:02:09.634065" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:02:09.633764" elapsed="0.000327"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:09.633502" elapsed="0.000635"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:09.632950" elapsed="0.001240"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:02:09.637402" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:02:09.634941" elapsed="0.002507"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-08T01:02:09.637525" elapsed="0.000063"/>
</return>
<msg time="2026-04-08T01:02:09.637839" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T01:02:09.630688" elapsed="0.007257"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T01:02:09.640744" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T01:02:09.640504" elapsed="0.000303">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-08T01:02:09.640994" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T01:02:09.639919" elapsed="0.001118"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-08T01:02:09.641429" elapsed="0.000080"/>
</return>
<status status="PASS" start="2026-04-08T01:02:09.641182" elapsed="0.000396"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:09.641117" elapsed="0.000500"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:09.642376" elapsed="0.000037"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:09.643139" elapsed="0.000168"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-08T01:02:09.643381" elapsed="0.000048"/>
</return>
<msg time="2026-04-08T01:02:09.645625" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T01:02:09.638764" elapsed="0.006969"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:02:09.649636" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:02:09.649255" elapsed="0.000480"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:02:09.650847" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:02:09.650468" elapsed="0.000473"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T01:02:09.677005" level="INFO">GET Request : url=http://10.30.170.48:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 path_url=/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01s3bfo0y24i1es90l47mavglv0.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T01:02:09.677964" level="INFO">GET Response : url=http://10.30.170.48:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Transfer-Encoding': 'chunked'} 
 body={"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","encrypted-passwords","hidden-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-private-keys","asymmetrically-encrypted-value-format","cleartext-private-keys","cms-encrypted-data-format","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["client-ident-hostbased","ssh-client-keepalives","client-ident-password","client-ident-publickey"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-ex... (set the log level to DEBUG or TRACE to see the full content) 
 </msg>
<msg time="2026-04-08T01:02:09.678433" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T01:02:09.653380" elapsed="0.025114"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:09.651068" elapsed="0.027550"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:09.679308" elapsed="0.000055"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:09.678716" elapsed="0.000761"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:09.651017" elapsed="0.028539"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:02:09.687016" level="INFO">{"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","encrypted-passwords","hidden-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-private-keys","asymmetrically-encrypted-value-format","cleartext-private-keys","cms-encrypted-data-format","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["client-ident-hostbased","ssh-client-keepalives","client-ident-password","client-ident-publickey"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-experimenter-types?revision=2015-10-20","namespace":"urn:opendaylight:openflowplugin:experimenter:types","conformance-type":"import"},{"name":"ietf-ip_2018-02-22","revision":"2018-02-22","schema":"/rests/modules/ietf-ip?revision=2018-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-ip","conformance-type":"import","feature":["ipv6-privacy-autoconf","ipv4-non-contiguous-netmasks"]},{"name":"ietf-tcp-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-client","conformance-type":"import","feature":["local-binding-supported","tcp-client-keepalives"]},{"name":"node-config_2014-10-15","revision":"2014-10-15","schema":"/rests/modules/node-config?revision=2014-10-15","namespace":"urn:opendaylight:module:config","conformance-type":"import"},{"name":"ietf-restconf_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf","conformance-type":"import"},{"name":"ietf-datastores_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-datastores?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-datastores","conformance-type":"import"},{"name":"ietf-yang-patch_2017-02-22","revision":"2017-02-22","schema":"/rests/modules/ietf-yang-patch?revision=2017-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-patch","conformance-type":"import"},{"name":"sal-group_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-group?revision=2013-09-18","namespace":"urn:opendaylight:group:service","conformance-type":"import"},{"name":"odl-codegen-extensions_2024-06-27","revision":"2024-06-27","schema":"/rests/modules/odl-codegen-extensions?revision=2024-06-27","namespace":"urn:opendaylight:yang:extension:codegen","conformance-type":"import"},{"name":"sal-meter_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-meter?revision=2013-09-18","namespace":"urn:opendaylight:meter:service","conformance-type":"import"},{"name":"ietf-interfaces_2018-02-20","revision":"2018-02-20","schema":"/rests/modules/ietf-interfaces?revision=2018-02-20","namespace":"urn:ietf:params:xml:ns:yang:ietf-interfaces","conformance-type":"import","feature":["pre-provisioning","if-mib","arbitrary-names"]},{"name":"opendaylight-l2-types_2013-08-27","revision":"2013-08-27","schema":"/rests/modules/opendaylight-l2-types?revision=2013-08-27","namespace":"urn:opendaylight:l2:types","conformance-type":"import"},{"name":"opendaylight-flow-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-flow-types?revision=2013-10-26","namespace":"urn:opendaylight:flow:types","conformance-type":"import"},{"name":"lldp-speaker-config_2016-05-12","revision":"2016-05-12","schema":"/rests/modules/lldp-speaker-config?revision=2016-05-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker:config","conformance-type":"import"},{"name":"aaa-cert_2015-11-26","revision":"2015-11-26","schema":"/rests/modules/aaa-cert?revision=2015-11-26","namespace":"urn:opendaylight:yang:aaa:cert","conformance-type":"import"},{"name":"openflow-action_2015-02-03","revision":"2015-02-03","schema":"/rests/modules/openflow-action?revision=2015-02-03","namespace":"urn:opendaylight:openflow:common:action","conformance-type":"import"},{"name":"openflow-approved-extensions_2016-08-02","revision":"2016-08-02","schema":"/rests/modules/openflow-approved-extensions?revision=2016-08-02","namespace":"urn:opendaylight:openflow:approved:extensions","conformance-type":"import"},{"name":"nc-notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/nc-notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netmod:notification","conformance-type":"import"},{"name":"ietf-netconf-nmda_2019-01-07","revision":"2019-01-07","schema":"/rests/modules/ietf-netconf-nmda?revision=2019-01-07","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-nmda","conformance-type":"import","feature":["with-defaults","origin"]},{"name":"ietf-tcp-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-common","conformance-type":"import","feature":["keepalives-supported"]},{"name":"network-topology_2013-10-21","revision":"2013-10-21","schema":"/rests/modules/network-topology?revision=2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:network-topology","conformance-type":"import"},{"name":"aaa-encrypt-service-config_2024-02-02","revision":"2024-02-02","schema":"/rests/modules/aaa-encrypt-service-config?revision=2024-02-02","namespace":"config:aaa:authn:encrypt:service:config","conformance-type":"import"},{"name":"openflow-instruction_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-instruction?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:instruction","conformance-type":"import"},{"name":"ietf-tls-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-client","conformance-type":"import","feature":["client-ident-x509-cert","server-auth-x509-cert"]},{"name":"opendaylight-group-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-group-statistics?revision=2013-11-11","namespace":"urn:opendaylight:group:statistics","conformance-type":"import"},{"name":"cluster-admin_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/cluster-admin?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:cluster:admin","conformance-type":"import"},{"name":"opendaylight-flow-statistics_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-flow-statistics?revision=2013-08-19","namespace":"urn:opendaylight:flow:statistics","conformance-type":"import"},{"name":"opendaylight-table-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-table-types?revision=2013-10-26","namespace":"urn:opendaylight:table:types","conformance-type":"import"},{"name":"forwarding-rules-manager-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/forwarding-rules-manager-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:forwardingrules-manager:config","conformance-type":"import"},{"name":"odl-srm-types_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-types?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:types","conformance-type":"import"},{"name":"ietf-x509-cert-to-name_2014-12-10","revision":"2014-12-10","schema":"/rests/modules/ietf-x509-cert-to-name?revision=2014-12-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-x509-cert-to-name","conformance-type":"import"},{"name":"flow-node-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-node-inventory?revision=2013-08-19","namespace":"urn:opendaylight:flow:inventory","conformance-type":"import"},{"name":"flow-errors_2013-11-16","revision":"2013-11-16","schema":"/rests/modules/flow-errors?revision=2013-11-16","namespace":"urn:opendaylight:flow:errors","conformance-type":"import"},{"name":"ietf-netconf_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:netconf:base:1.0","conformance-type":"import","feature":["xpath","url","rollback-on-error","validate","candidate","confirmed-commit","startup","writable-running"]},{"name":"iana-ssh-public-key-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-public-key-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-public-key-algs","conformance-type":"import"},{"name":"aaa-cert-mdsal_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/aaa-cert-mdsal?revision=2016-03-21","namespace":"urn:opendaylight:yang:aaa:cert:mdsal","conformance-type":"import"},{"name":"odl-device-notification_2024-02-18","revision":"2024-02-18","schema":"/rests/modules/odl-device-notification?revision=2024-02-18","namespace":"urn:opendaylight:device:notification","conformance-type":"import"},{"name":"ietf-origin_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-origin?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-origin","conformance-type":"import"},{"name":"openflow-augments_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-augments?revision=2015-02-25","namespace":"urn:opendaylight:openflow:augments","conformance-type":"import"},{"name":"iana-ssh-encryption-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-encryption-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-encryption-algs","conformance-type":"import"},{"name":"ietf-truststore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-truststore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-truststore","conformance-type":"import","feature":["inline-definitions-supported"]},{"name":"distributed-datastore-provider_2025-01-30","revision":"2025-01-30","schema":"/rests/modules/distributed-datastore-provider?revision=2025-01-30","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:distributed-datastore-provider","conformance-type":"import"},{"name":"opendaylight-group-types_2013-10-18","revision":"2013-10-18","schema":"/rests/modules/opendaylight-group-types?revision=2013-10-18","namespace":"urn:opendaylight:group:types","conformance-type":"import"},{"name":"sal-remote-augment_2023-11-03","revision":"2023-11-03","schema":"/rests/modules/sal-remote-augment?revision=2023-11-03","namespace":"urn:sal:restconf:event:subscription","conformance-type":"import"},{"name":"opendaylight-ipv6-arbitrary-bitmask-fields_2016-02-24","revision":"2016-02-24","schema":"/rests/modules/opendaylight-ipv6-arbitrary-bitmask-fields?revision=2016-02-24","namespace":"urn:opendaylight:opendaylight-ipv6-arbitrary-bitmask-fields","conformance-type":"import"},{"name":"sal-flows-batch_2016-03-14","revision":"2016-03-14","schema":"/rests/modules/sal-flows-batch?revision=2016-03-14","namespace":"urn:opendaylight:flows:service","conformance-type":"import"},{"name":"ietf-tls-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-common","conformance-type":"import","feature":["hello-params","tls12","tls13"]},{"name":"openflow-types_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-types?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:types","conformance-type":"import"},{"name":"ietf-netconf-with-defaults_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf-with-defaults?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults","conformance-type":"import"},{"name":"odl-srm-ops_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-ops?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:ops","conformance-type":"import"},{"name":"odl-general-entity_2015-09-30","revision":"2015-09-30","schema":"/rests/modules/odl-general-entity?revision=2015-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:mdsal:core:general-entity","conformance-type":"import"},{"name":"iana-ssh-key-exchange-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-key-exchange-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-key-exchange-algs","conformance-type":"import"},{"name":"node-ssl-connection-error_2019-07-23","revision":"2019-07-23","schema":"/rests/modules/node-ssl-connection-error?revision=2019-07-23","namespace":"urn:opendaylight:node-ssl-connection-error:service","conformance-type":"import"},{"name":"openflow-protocol_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-protocol?revision=2013-07-31","namespace":"urn:opendaylight:openflow:protocol","conformance-type":"import"},{"name":"ietf-udp-server_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-server?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-server","conformance-type":"import"},{"name":"ietf-keystore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-keystore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-keystore","conformance-type":"import","feature":["asymmetric-keys","inline-definitions-supported"]},{"name":"aaa_2016-12-14","revision":"2016-12-14","schema":"/rests/modules/aaa?revision=2016-12-14","namespace":"urn:opendaylight:params:xml:ns:yang:aaa","conformance-type":"import"},{"name":"aaa-cert-rpc_2015-12-15","revision":"2015-12-15","schema":"/rests/modules/aaa-cert-rpc?revision=2015-12-15","namespace":"urn:opendaylight:yang:aaa:cert:rpc","conformance-type":"import"},{"name":"system-notifications_2013-09-27","revision":"2013-09-27","schema":"/rests/modules/system-notifications?revision=2013-09-27","namespace":"urn:opendaylight:openflow:system","conformance-type":"import"},{"name":"sal-flat-batch_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/sal-flat-batch?revision=2016-03-21","namespace":"urn:opendaylight:flat-batch:service","conformance-type":"import"},{"name":"notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netconf:notification:1.0","conformance-type":"import"},{"name":"sal-remote_2014-01-14","revision":"2014-01-14","schema":"/rests/modules/sal-remote?revision=2014-01-14","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:remote","conformance-type":"import"},{"name":"yang-ext_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/yang-ext?revision=2013-07-09","namespace":"urn:opendaylight:yang:extension:yang-ext","conformance-type":"import"},{"name":"opendaylight-multipart-types_2017-01-12","revision":"2017-01-12","schema":"/rests/modules/opendaylight-multipart-types?revision=2017-01-12","namespace":"urn:opendaylight:multipart:types","conformance-type":"import"},{"name":"opendaylight-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-inventory?revision=2013-08-19","namespace":"urn:opendaylight:inventory","conformance-type":"import"},{"name":"sal-queue_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-queue?revision=2015-03-05","namespace":"urn:opendaylight:queue:service","conformance-type":"import"},{"name":"sal-groups-batch_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/sal-groups-batch?revision=2016-03-15","namespace":"urn:opendaylight:groups:service","conformance-type":"import"},{"name":"arbitrator-reconcile_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/arbitrator-reconcile?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:arbitrator-reconcile:service","conformance-type":"import"},{"name":"ietf-yang-metadata_2016-08-05","revision":"2016-08-05","schema":"/rests/modules/ietf-yang-metadata?revision=2016-08-05","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-metadata","conformance-type":"import"},{"name":"opendaylight-arbitrary-bitmask-fields_2016-01-30","revision":"2016-01-30","schema":"/rests/modules/opendaylight-arbitrary-bitmask-fields?revision=2016-01-30","namespace":"urn:opendaylight:arbitrary:bitmask:fields","conformance-type":"import"},{"name":"ietf-udp-client_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-client?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-client","conformance-type":"import","feature":["local-binding"]},{"name":"opendaylight-meter-types_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/opendaylight-meter-types?revision=2013-09-18","namespace":"urn:opendaylight:meter:types","conformance-type":"import"},{"name":"opendaylight-action-types_2013-11-12","revision":"2013-11-12","schema":"/rests/modules/opendaylight-action-types?revision=2013-11-12","namespace":"urn:opendaylight:action:types","conformance-type":"import"},{"name":"sal-role_2015-07-27","revision":"2015-07-27","schema":"/rests/modules/sal-role?revision=2015-07-27","namespace":"urn:opendaylight:role:service","conformance-type":"import"},{"name":"openflow-provider-config_2016-05-10","revision":"2016-05-10","schema":"/rests/modules/openflow-provider-config?revision=2016-05-10","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:provider:config","conformance-type":"import"},{"name":"odl-serviceutils-upgrade_2018-07-02","revision":"2018-07-02","schema":"/rests/modules/odl-serviceutils-upgrade?revision=2018-07-02","namespace":"urn:opendaylight:serviceutils:upgrade","conformance-type":"import"},{"name":"opendaylight-match-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-match-types?revision=2013-10-26","namespace":"urn:opendaylight:model:match:types","conformance-type":"import"},{"name":"ietf-restconf-server_2024-08-14","revision":"2024-08-14","schema":"/rests/modules/ietf-restconf-server?revision=2024-08-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-server","conformance-type":"import","feature":["http-listen","https-listen"]},{"name":"reconciliation-result-state_2017-07-13","revision":"2017-07-13","schema":"/rests/modules/reconciliation-result-state?revision=2017-07-13","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:rf:state","conformance-type":"import"},{"name":"onf-extensions_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/onf-extensions?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf","conformance-type":"import"},{"name":"sal-table_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/sal-table?revision=2013-10-26","namespace":"urn:opendaylight:table:service","conformance-type":"import"},{"name":"iana-http-versions_2026-02-04","revision":"2026-02-04","schema":"/rests/modules/iana-http-versions?revision=2026-02-04","namespace":"urn:ietf:params:xml:ns:yang:iana-http-versions","conformance-type":"import"},{"name":"opendaylight-direct-statistics_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/opendaylight-direct-statistics?revision=2016-05-11","namespace":"urn:opendaylight:direct:statistics","conformance-type":"import"},{"name":"opendaylight-port-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-port-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:port","conformance-type":"import"},{"name":"sal-async-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/sal-async-config?revision=2017-06-19","namespace":"urn:opendaylight:async-config:service","conformance-type":"import"},{"name":"aaa-password-service-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-password-service-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:password:service:config","conformance-type":"import"},{"name":"ietf-yang-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-yang-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-types","conformance-type":"import"},{"name":"opendaylight-queue-statistics_2013-12-16","revision":"2013-12-16","schema":"/rests/modules/opendaylight-queue-statistics?revision=2013-12-16","namespace":"urn:opendaylight:queue:statistics","conformance-type":"import"},{"name":"sal-bundle_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/sal-bundle?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf:bundle:service","conformance-type":"import"},{"name":"ietf-restconf-subscribed-notifications_2019-11-17","revision":"2019-11-17","schema":"/rests/modules/ietf-restconf-subscribed-notifications?revision=2019-11-17","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-subscribed-notifications","conformance-type":"import"},{"name":"sal-meters-batch_2016-03-16","revision":"2016-03-16","schema":"/rests/modules/sal-meters-batch?revision=2016-03-16","namespace":"urn:opendaylight:meters:service","conformance-type":"import"},{"name":"odl-entity-owners","revision":"","schema":"/rests/modules/odl-entity-owners","namespace":"urn:opendaylight:params:xml:ns:yang:controller:entity-owners","conformance-type":"import"},{"name":"sal-experimenter-mp-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-mp-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-mp-message:service","conformance-type":"import"},{"name":"packet-processing_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/packet-processing?revision=2013-07-09","namespace":"urn:opendaylight:packet:service","conformance-type":"import"},{"name":"openflow-configuration_2014-06-30","revision":"2014-06-30","schema":"/rests/modules/openflow-configuration?revision=2014-06-30","namespace":"urn:opendaylight:openflow:config","conformance-type":"import"},{"name":"odl-srm-rpcs_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-rpcs?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:rpc","conformance-type":"import"},{"name":"ietf-netconf-acm_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-netconf-acm?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-acm","conformance-type":"import"},{"name":"iana-crypt-hash_2014-08-06","revision":"2014-08-06","schema":"/rests/modules/iana-crypt-hash?revision=2014-08-06","namespace":"urn:ietf:params:xml:ns:yang:iana-crypt-hash","conformance-type":"import","feature":["crypt-hash-sha-512","crypt-hash-sha-256","crypt-hash-md5"]},{"name":"openflow-extensible-match_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-extensible-match?revision=2015-02-25","namespace":"urn:opendaylight:openflow:oxm","conformance-type":"import"}],"module-set-id":"2"}}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:02:09.683420" elapsed="0.003932"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:09.682884" elapsed="0.004504"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:09.682836" elapsed="0.004577"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:02:09.689991" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:02:09.687717" elapsed="0.002321"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:09.687492" elapsed="0.002580"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:09.687474" elapsed="0.002622"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:02:09.690678" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:02:09.690296" elapsed="0.000409"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:09.691038" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:09.690797" elapsed="0.000298"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:02:09.691602" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:02:09.691296" elapsed="0.000332"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:09.691118" elapsed="0.000547"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:09.690778" elapsed="0.000908"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:02:09.692289" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:02:09.691868" elapsed="0.000448"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:09.692644" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:09.692408" elapsed="0.000292"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:02:09.693196" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:02:09.692883" elapsed="0.000341"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:09.692723" elapsed="0.000537"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:09.692388" elapsed="0.000893"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:02:09.693451" elapsed="0.000346"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T01:02:09.694284" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:02:09.693984" elapsed="0.000326"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T01:02:09.694485" elapsed="0.002354"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T01:02:09.681281" elapsed="0.015679"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T01:02:09.697319" elapsed="0.000046"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:02:09.697087" elapsed="0.000341"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:09.697038" elapsed="0.000427"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T01:02:09.706487" level="INFO">${text_normalized} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T01:02:09.698221" elapsed="0.008316"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T01:02:09.706614" elapsed="0.000066"/>
</return>
<msg time="2026-04-08T01:02:09.706936" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T01:02:09.646434" elapsed="0.060609"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T01:02:09.707525" elapsed="0.000031"/>
</return>
<msg time="2026-04-08T01:02:09.707703" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="PASS" start="2026-04-08T01:02:09.504202" elapsed="0.203529"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Json_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:09.708093" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:09.707816" elapsed="0.000548"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:09.707798" elapsed="0.000594"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T01:02:09.708428" elapsed="0.000027"/>
</return>
<arg>session=${session}</arg>
<arg>folder=${RESTCONF_MODULES_DIR}</arg>
<arg>verify=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Add arguments sensible for JSON data, return Get_Templated response text.
Optionally, verification against JSON data (may be iterated) is called.
Only subset of JSON data is verified and returned if JMES path is specified in
file ${folder}/jmespath.expr.</doc>
<status status="PASS" start="2026-04-08T01:02:09.499939" elapsed="0.208616"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:09.495667" elapsed="0.212932"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:09.495649" elapsed="0.212974"/>
</if>
<kw name="Resolve_Shard_Type_Class" owner="ClusterManagement">
<if>
<branch type="IF" condition="'${shard_type}' == 'config'">
<return>
<value>DistributedConfigDatastore</value>
<status status="PASS" start="2026-04-08T01:02:09.709250" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-08T01:02:09.709120" elapsed="0.000189"/>
</branch>
<branch type="ELSE IF" condition="'${shard_type}' == 'operational'">
<return>
<value>DistributedOperationalDatastore</value>
<status status="NOT RUN" start="2026-04-08T01:02:09.709371" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:02:09.709333" elapsed="0.000077"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:09.709103" elapsed="0.000329"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized shard type: ${shard_type}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:09.709580" elapsed="0.000021"/>
</kw>
<msg time="2026-04-08T01:02:09.709699" level="INFO">${type_class} = DistributedConfigDatastore</msg>
<var>${type_class}</var>
<arg>shard_type=${shard_type}</arg>
<doc>Simple lookup for class name corresponding to desired type.</doc>
<status status="PASS" start="2026-04-08T01:02:09.708849" elapsed="0.000876"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:02:09.710289" level="INFO">${cluster_index} = 1</msg>
<var>${cluster_index}</var>
<arg>${member_index}+${NODE_ROLE_INDEX_START}-1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:02:09.709896" elapsed="0.000421"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:02:09.710939" level="INFO">${uri} = jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-topology-config,type=DistributedConfigDatastore</msg>
<var>${uri}</var>
<arg>${JOLOKIA_READ_URI}:Category=Shards,name=member-${cluster_index}-shard-${shard_name}-${shard_type},type=${type_class}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:02:09.710475" elapsed="0.000492"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:02:09.716880" level="INFO">jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-topology-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:02:09.716439" elapsed="0.000488"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:02:09.717535" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:02:09.717085" elapsed="0.000496"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T01:02:09.738479" level="INFO">GET Request : url=http://10.30.170.48:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-topology-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-topology-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T01:02:09.738614" level="INFO">GET Response : url=http://10.30.170.48:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-topology-config,type=DistributedConfigDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Wed, 08 Apr 2026 01:02:09 GMT', 'Expires': 'Wed, 08 Apr 2026 00:02:09 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-1-shard-topology-config,type=DistributedConfigDatastore","type":"read"},"value":{"ReadWriteTransactionCount":0,"SnapshotIndex":-1,"InMemoryJournalLogSize":0,"ReplicatedToAllIndex":-1,"Leader":"member-1-shard-topology-config","LastIndex":-1,"RaftState":"Leader","LastApplied":-1,"LastCommittedTransactionTime":"1970-01-01 00:00:00.000","PeerAddresses":"member-2-shard-topology-config: pekko:\/\/opendaylight-cluster-data@10.30.170.131:2550\/user\/shardmanager-config\/member-2-shard-topology-config, member-3-shard-topology-config: pekko:\/\/opendaylight-cluster-data@10.30.171.110:2550\/user\/shardmanager-config\/member-3-shard-topology-config","LastLogIndex":-1,"LastLeadershipChangeTime":"2026-04-08 00:57:11.071","FollowerInitialSyncStatus":false,"FollowerInfo":[{"timeSinceLastActivity":"00:00:00.219","active":true,"matchIndex":-1,"voting":true,"id":"member-2-shard-topology-config","nextIndex":0},{"timeSinceLastActivity":"00:00:00.221","active":true,"matchIndex":-1,"voting":true,"id":"member-3-shard-topology-config","nextIndex":0}],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"1.032 ms","CurrentTerm":4,"LastTerm":-1,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-topology-config","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":0,"TxCohortCacheSize":0,"PeerVotingStates":"member-2-shard-topology-config: true, member-3-shard-topology-config: true","LastLogTerm":-1,"StatRetrievalError":null,"CommitIndex":-1,"SnapshotTerm":-1,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-1-shard-topology-config","LeadershipChangeCount":1,"InMemoryJournalDataSize":0},"timestamp":1775610129,"status":200} 
 </msg>
<msg time="2026-04-08T01:02:09.738806" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T01:02:09.729582" elapsed="0.009330"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:09.717650" elapsed="0.021534"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:09.739373" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:09.739215" elapsed="0.000474"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:09.717631" elapsed="0.022082"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:02:09.750242" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-1-shard-topology-config,type=DistributedConfigDatastore","type":"read"},"value":{"ReadWriteTransactionCount":0,"SnapshotIndex":-1,"InMemoryJournalLogSize":0,"ReplicatedToAllIndex":-1,"Leader":"member-1-shard-topology-config","LastIndex":-1,"RaftState":"Leader","LastApplied":-1,"LastCommittedTransactionTime":"1970-01-01 00:00:00.000","PeerAddresses":"member-2-shard-topology-config: pekko:\/\/opendaylight-cluster-data@10.30.170.131:2550\/user\/shardmanager-config\/member-2-shard-topology-config, member-3-shard-topology-config: pekko:\/\/opendaylight-cluster-data@10.30.171.110:2550\/user\/shardmanager-config\/member-3-shard-topology-config","LastLogIndex":-1,"LastLeadershipChangeTime":"2026-04-08 00:57:11.071","FollowerInitialSyncStatus":false,"FollowerInfo":[{"timeSinceLastActivity":"00:00:00.219","active":true,"matchIndex":-1,"voting":true,"id":"member-2-shard-topology-config","nextIndex":0},{"timeSinceLastActivity":"00:00:00.221","active":true,"matchIndex":-1,"voting":true,"id":"member-3-shard-topology-config","nextIndex":0}],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"1.032 ms","CurrentTerm":4,"LastTerm":-1,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-topology-config","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":0,"TxCohortCacheSize":0,"PeerVotingStates":"member-2-shard-topology-config: true, member-3-shard-topology-config: true","LastLogTerm":-1,"StatRetrievalError":null,"CommitIndex":-1,"SnapshotTerm":-1,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-1-shard-topology-config","LeadershipChangeCount":1,"InMemoryJournalDataSize":0},"timestamp":1775610129,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:02:09.743139" elapsed="0.007217"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:09.740994" elapsed="0.009412"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:09.740968" elapsed="0.009476"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:02:09.753865" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:02:09.751477" elapsed="0.002488"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:09.750527" elapsed="0.003487"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:09.750508" elapsed="0.003544"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:02:09.755492" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:02:09.754719" elapsed="0.000834"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:09.756316" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:09.755720" elapsed="0.000685"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:02:09.757339" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:02:09.756774" elapsed="0.000611"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:09.756442" elapsed="0.000994"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:09.755700" elapsed="0.001771"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:02:09.758874" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:02:09.758116" elapsed="0.000821"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:09.759798" elapsed="0.000038"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:09.759102" elapsed="0.000785"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:02:09.760805" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:02:09.760304" elapsed="0.000548"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:09.759925" elapsed="0.000977"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:09.759082" elapsed="0.001855"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:02:09.761283" elapsed="0.000625"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T01:02:09.762731" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:02:09.762233" elapsed="0.000559"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T01:02:09.763076" elapsed="0.002567"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T01:02:09.740288" elapsed="0.025515"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T01:02:09.766007" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:02:09.765877" elapsed="0.000176"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:09.765858" elapsed="0.000217"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T01:02:09.769828" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-1-shard-topology-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1775610...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T01:02:09.766271" elapsed="0.003587"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T01:02:09.769909" elapsed="0.000033"/>
</return>
<msg time="2026-04-08T01:02:09.770119" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-1-shard-topology-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1775610...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T01:02:09.711935" elapsed="0.058211"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T01:02:09.770223" elapsed="0.000027"/>
</return>
<msg time="2026-04-08T01:02:09.770373" level="INFO">${data_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-1-shard-topology-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1775610...</msg>
<var>${data_text}</var>
<arg>uri=${uri}</arg>
<arg>session=${session}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-08T01:02:09.711196" elapsed="0.059203"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:02:09.771521" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-1-shard-topology-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1775610129, 'value...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:02:09.771005" elapsed="0.000545"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-08T01:02:09.771600" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T01:02:09.771777" level="INFO">${data_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-1-shard-topology-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1775610129, 'value...</msg>
<var>${data_object}</var>
<arg>${data_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-08T01:02:09.770624" elapsed="0.001179"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:02:09.772222" level="INFO">${value} = {'AbortTransactionsCount': 0, 'CommitIndex': -1, 'CommittedTransactionsCount': 0, 'CurrentTerm': 4, 'FailedReadTransactionsCount': 0, 'FailedTransactionsCount': 0, 'FollowerInfo': [{'active': True, 'i...</msg>
<var>${value}</var>
<arg>${data_object}</arg>
<arg>value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:02:09.771985" elapsed="0.000267"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:02:09.772616" level="INFO">${raft_property} = Leader</msg>
<var>${raft_property}</var>
<arg>${value}</arg>
<arg>${property}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:02:09.772414" elapsed="0.000227"/>
</kw>
<return>
<value>${raft_property}</value>
<status status="PASS" start="2026-04-08T01:02:09.772687" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T01:02:09.772835" level="INFO">${raft_state} = Leader</msg>
<var>${raft_state}</var>
<arg>RaftState</arg>
<arg>${shard_name}</arg>
<arg>${shard_type}</arg>
<arg>${member_index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft property.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T01:02:09.494065" elapsed="0.278794"/>
</kw>
<return>
<value>${raft_state}</value>
<status status="PASS" start="2026-04-08T01:02:09.772914" elapsed="0.000026"/>
</return>
<msg time="2026-04-08T01:02:09.773061" level="INFO">${raft_state} = Leader</msg>
<var>${raft_state}</var>
<arg>shard_name=${shard_name}</arg>
<arg>shard_type=${ds_type}</arg>
<arg>member_index=${index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft status.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T01:02:09.493363" elapsed="0.279721"/>
</kw>
<if>
<branch type="IF" condition="'Follower' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${follower_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:09.773408" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:09.773186" elapsed="0.000279"/>
</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="PASS" start="2026-04-08T01:02:09.773698" elapsed="0.000205"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:09.773488" elapsed="0.000454"/>
</branch>
<branch type="ELSE IF" condition="${validate}">
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized Raft state: ${raft_state}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:09.774132" elapsed="0.000041"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:09.773966" elapsed="0.000250"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:09.773145" elapsed="0.001099"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T01:02:09.493197" elapsed="0.281071"/>
</iter>
<iter>
<kw name="Get_Raft_State_Of_Shard_At_Member" owner="ClusterManagement">
<kw name="Get_Raft_Property_From_Shard_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:02:09.776933" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:02:09.776603" elapsed="0.000357"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T01:02:09.777006" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T01:02:09.777152" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T01:02:09.776257" elapsed="0.000941"/>
</kw>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Get_As_Json_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:02:09.864175" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:02:09.863760" elapsed="0.000444"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T01:02:09.865002" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T01:02:09.864756" elapsed="0.000321">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-08T01:02:09.865186" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T01:02:09.864373" elapsed="0.000839"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:02:09.865760" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:02:09.865379" elapsed="0.000408"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T01:02:09.866086" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-08T01:02:09.866243" level="INFO">${template} = /rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T01:02:09.865950" elapsed="0.000319"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:02:09.866669" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:02:09.866427" elapsed="0.000287"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:02:09.867673" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:02:09.867420" elapsed="0.000298"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-08T01:02:09.868173" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-08T01:02:09.867881" elapsed="0.000320"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:09.868527" elapsed="0.000021"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:09.868729" elapsed="0.000024"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:09.868903" elapsed="0.000021"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-08T01:02:09.868393" elapsed="0.000567"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-08T01:02:09.868252" elapsed="0.000736"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-08T01:02:09.869031" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T01:02:09.869203" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-08T01:02:09.867079" elapsed="0.002151"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:09.866784" elapsed="0.002478"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:09.869434" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:09.869286" elapsed="0.000202"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:09.866764" elapsed="0.002744"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:02:09.870084" level="INFO">${final_text} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:02:09.869651" elapsed="0.000460"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T01:02:09.870175" elapsed="0.000031"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="PASS" start="2026-04-08T01:02:09.863129" elapsed="0.007171"/>
</kw>
<msg time="2026-04-08T01:02:09.870354" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:02:09.850316" elapsed="0.020117"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:09.883356" elapsed="0.000042"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:09.895984" elapsed="0.000041"/>
</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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:09.908643" elapsed="0.000041"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:09.909447" elapsed="0.000037"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:09.910231" elapsed="0.000035"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:09.910780" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:09.910633" elapsed="0.000205"/>
</branch>
<status status="NOT RUN" start="2026-04-08T01:02:09.910617" elapsed="0.000244"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:09.911020" elapsed="0.000021"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:09.911223" elapsed="0.000021"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:09.911413" elapsed="0.000021"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-08T01:02:09.910569" elapsed="0.000919"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-08T01:02:09.910350" elapsed="0.001178"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:09.912273" elapsed="0.000036"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-08T01:02:09.912393" elapsed="0.000047"/>
</return>
<msg time="2026-04-08T01:02:09.912609" level="INFO">${uri} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-08T01:02:09.844056" elapsed="0.068659"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T01:02:09.915645" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T01:02:09.915395" elapsed="0.000314">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-08T01:02:09.915931" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T01:02:09.914944" elapsed="0.001037"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:09.916511" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:09.916115" elapsed="0.000463"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:02:09.917202" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:02:09.916880" elapsed="0.000350"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:09.916617" elapsed="0.000659"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:09.916063" elapsed="0.001251"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:02:09.920563" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:02:09.918063" elapsed="0.002546"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-08T01:02:09.920684" elapsed="0.000142"/>
</return>
<msg time="2026-04-08T01:02:09.921082" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T01:02:09.913795" elapsed="0.007413"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T01:02:09.924007" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T01:02:09.923749" elapsed="0.000321">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-08T01:02:09.924277" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T01:02:09.923315" elapsed="0.001007"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-08T01:02:09.924701" elapsed="0.000079"/>
</return>
<status status="PASS" start="2026-04-08T01:02:09.924452" elapsed="0.000396"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:09.924401" elapsed="0.000486"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:09.925643" elapsed="0.000037"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:09.926545" elapsed="0.000036"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-08T01:02:09.926655" elapsed="0.000047"/>
</return>
<msg time="2026-04-08T01:02:09.928958" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T01:02:09.922014" elapsed="0.007053"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:02:09.932903" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:02:09.932515" elapsed="0.000488"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:02:09.934125" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:02:09.933740" elapsed="0.000646"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T01:02:09.957856" level="INFO">GET Request : url=http://10.30.170.131:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 path_url=/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01l7fnm4ypo6vn14692wsih5mir0.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T01:02:09.958310" level="INFO">GET Response : url=http://10.30.170.131:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Transfer-Encoding': 'chunked'} 
 body={"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","encrypted-passwords","hidden-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-private-keys","asymmetrically-encrypted-value-format","cleartext-private-keys","cms-encrypted-data-format","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["client-ident-hostbased","ssh-client-keepalives","client-ident-password","client-ident-publickey"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-ex... (set the log level to DEBUG or TRACE to see the full content) 
 </msg>
<msg time="2026-04-08T01:02:09.958517" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T01:02:09.936778" elapsed="0.021766"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:09.934515" elapsed="0.024084"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:09.958893" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:09.958643" elapsed="0.000324"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:09.934464" elapsed="0.024538"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:02:09.963386" level="INFO">{"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","encrypted-passwords","hidden-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-private-keys","asymmetrically-encrypted-value-format","cleartext-private-keys","cms-encrypted-data-format","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["client-ident-hostbased","ssh-client-keepalives","client-ident-password","client-ident-publickey"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-experimenter-types?revision=2015-10-20","namespace":"urn:opendaylight:openflowplugin:experimenter:types","conformance-type":"import"},{"name":"ietf-ip_2018-02-22","revision":"2018-02-22","schema":"/rests/modules/ietf-ip?revision=2018-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-ip","conformance-type":"import","feature":["ipv6-privacy-autoconf","ipv4-non-contiguous-netmasks"]},{"name":"ietf-tcp-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-client","conformance-type":"import","feature":["local-binding-supported","tcp-client-keepalives"]},{"name":"node-config_2014-10-15","revision":"2014-10-15","schema":"/rests/modules/node-config?revision=2014-10-15","namespace":"urn:opendaylight:module:config","conformance-type":"import"},{"name":"ietf-restconf_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf","conformance-type":"import"},{"name":"ietf-datastores_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-datastores?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-datastores","conformance-type":"import"},{"name":"ietf-yang-patch_2017-02-22","revision":"2017-02-22","schema":"/rests/modules/ietf-yang-patch?revision=2017-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-patch","conformance-type":"import"},{"name":"sal-group_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-group?revision=2013-09-18","namespace":"urn:opendaylight:group:service","conformance-type":"import"},{"name":"odl-codegen-extensions_2024-06-27","revision":"2024-06-27","schema":"/rests/modules/odl-codegen-extensions?revision=2024-06-27","namespace":"urn:opendaylight:yang:extension:codegen","conformance-type":"import"},{"name":"sal-meter_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-meter?revision=2013-09-18","namespace":"urn:opendaylight:meter:service","conformance-type":"import"},{"name":"ietf-interfaces_2018-02-20","revision":"2018-02-20","schema":"/rests/modules/ietf-interfaces?revision=2018-02-20","namespace":"urn:ietf:params:xml:ns:yang:ietf-interfaces","conformance-type":"import","feature":["pre-provisioning","if-mib","arbitrary-names"]},{"name":"opendaylight-l2-types_2013-08-27","revision":"2013-08-27","schema":"/rests/modules/opendaylight-l2-types?revision=2013-08-27","namespace":"urn:opendaylight:l2:types","conformance-type":"import"},{"name":"opendaylight-flow-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-flow-types?revision=2013-10-26","namespace":"urn:opendaylight:flow:types","conformance-type":"import"},{"name":"lldp-speaker-config_2016-05-12","revision":"2016-05-12","schema":"/rests/modules/lldp-speaker-config?revision=2016-05-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker:config","conformance-type":"import"},{"name":"aaa-cert_2015-11-26","revision":"2015-11-26","schema":"/rests/modules/aaa-cert?revision=2015-11-26","namespace":"urn:opendaylight:yang:aaa:cert","conformance-type":"import"},{"name":"openflow-action_2015-02-03","revision":"2015-02-03","schema":"/rests/modules/openflow-action?revision=2015-02-03","namespace":"urn:opendaylight:openflow:common:action","conformance-type":"import"},{"name":"openflow-approved-extensions_2016-08-02","revision":"2016-08-02","schema":"/rests/modules/openflow-approved-extensions?revision=2016-08-02","namespace":"urn:opendaylight:openflow:approved:extensions","conformance-type":"import"},{"name":"nc-notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/nc-notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netmod:notification","conformance-type":"import"},{"name":"ietf-netconf-nmda_2019-01-07","revision":"2019-01-07","schema":"/rests/modules/ietf-netconf-nmda?revision=2019-01-07","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-nmda","conformance-type":"import","feature":["with-defaults","origin"]},{"name":"ietf-tcp-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-common","conformance-type":"import","feature":["keepalives-supported"]},{"name":"network-topology_2013-10-21","revision":"2013-10-21","schema":"/rests/modules/network-topology?revision=2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:network-topology","conformance-type":"import"},{"name":"aaa-encrypt-service-config_2024-02-02","revision":"2024-02-02","schema":"/rests/modules/aaa-encrypt-service-config?revision=2024-02-02","namespace":"config:aaa:authn:encrypt:service:config","conformance-type":"import"},{"name":"openflow-instruction_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-instruction?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:instruction","conformance-type":"import"},{"name":"ietf-tls-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-client","conformance-type":"import","feature":["client-ident-x509-cert","server-auth-x509-cert"]},{"name":"opendaylight-group-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-group-statistics?revision=2013-11-11","namespace":"urn:opendaylight:group:statistics","conformance-type":"import"},{"name":"cluster-admin_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/cluster-admin?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:cluster:admin","conformance-type":"import"},{"name":"opendaylight-flow-statistics_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-flow-statistics?revision=2013-08-19","namespace":"urn:opendaylight:flow:statistics","conformance-type":"import"},{"name":"opendaylight-table-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-table-types?revision=2013-10-26","namespace":"urn:opendaylight:table:types","conformance-type":"import"},{"name":"forwarding-rules-manager-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/forwarding-rules-manager-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:forwardingrules-manager:config","conformance-type":"import"},{"name":"odl-srm-types_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-types?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:types","conformance-type":"import"},{"name":"ietf-x509-cert-to-name_2014-12-10","revision":"2014-12-10","schema":"/rests/modules/ietf-x509-cert-to-name?revision=2014-12-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-x509-cert-to-name","conformance-type":"import"},{"name":"flow-node-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-node-inventory?revision=2013-08-19","namespace":"urn:opendaylight:flow:inventory","conformance-type":"import"},{"name":"flow-errors_2013-11-16","revision":"2013-11-16","schema":"/rests/modules/flow-errors?revision=2013-11-16","namespace":"urn:opendaylight:flow:errors","conformance-type":"import"},{"name":"ietf-netconf_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:netconf:base:1.0","conformance-type":"import","feature":["xpath","url","rollback-on-error","validate","candidate","confirmed-commit","startup","writable-running"]},{"name":"iana-ssh-public-key-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-public-key-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-public-key-algs","conformance-type":"import"},{"name":"aaa-cert-mdsal_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/aaa-cert-mdsal?revision=2016-03-21","namespace":"urn:opendaylight:yang:aaa:cert:mdsal","conformance-type":"import"},{"name":"odl-device-notification_2024-02-18","revision":"2024-02-18","schema":"/rests/modules/odl-device-notification?revision=2024-02-18","namespace":"urn:opendaylight:device:notification","conformance-type":"import"},{"name":"ietf-origin_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-origin?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-origin","conformance-type":"import"},{"name":"openflow-augments_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-augments?revision=2015-02-25","namespace":"urn:opendaylight:openflow:augments","conformance-type":"import"},{"name":"iana-ssh-encryption-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-encryption-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-encryption-algs","conformance-type":"import"},{"name":"ietf-truststore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-truststore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-truststore","conformance-type":"import","feature":["inline-definitions-supported"]},{"name":"distributed-datastore-provider_2025-01-30","revision":"2025-01-30","schema":"/rests/modules/distributed-datastore-provider?revision=2025-01-30","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:distributed-datastore-provider","conformance-type":"import"},{"name":"opendaylight-group-types_2013-10-18","revision":"2013-10-18","schema":"/rests/modules/opendaylight-group-types?revision=2013-10-18","namespace":"urn:opendaylight:group:types","conformance-type":"import"},{"name":"sal-remote-augment_2023-11-03","revision":"2023-11-03","schema":"/rests/modules/sal-remote-augment?revision=2023-11-03","namespace":"urn:sal:restconf:event:subscription","conformance-type":"import"},{"name":"opendaylight-ipv6-arbitrary-bitmask-fields_2016-02-24","revision":"2016-02-24","schema":"/rests/modules/opendaylight-ipv6-arbitrary-bitmask-fields?revision=2016-02-24","namespace":"urn:opendaylight:opendaylight-ipv6-arbitrary-bitmask-fields","conformance-type":"import"},{"name":"sal-flows-batch_2016-03-14","revision":"2016-03-14","schema":"/rests/modules/sal-flows-batch?revision=2016-03-14","namespace":"urn:opendaylight:flows:service","conformance-type":"import"},{"name":"ietf-tls-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-common","conformance-type":"import","feature":["hello-params","tls12","tls13"]},{"name":"openflow-types_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-types?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:types","conformance-type":"import"},{"name":"ietf-netconf-with-defaults_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf-with-defaults?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults","conformance-type":"import"},{"name":"odl-srm-ops_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-ops?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:ops","conformance-type":"import"},{"name":"odl-general-entity_2015-09-30","revision":"2015-09-30","schema":"/rests/modules/odl-general-entity?revision=2015-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:mdsal:core:general-entity","conformance-type":"import"},{"name":"iana-ssh-key-exchange-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-key-exchange-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-key-exchange-algs","conformance-type":"import"},{"name":"node-ssl-connection-error_2019-07-23","revision":"2019-07-23","schema":"/rests/modules/node-ssl-connection-error?revision=2019-07-23","namespace":"urn:opendaylight:node-ssl-connection-error:service","conformance-type":"import"},{"name":"openflow-protocol_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-protocol?revision=2013-07-31","namespace":"urn:opendaylight:openflow:protocol","conformance-type":"import"},{"name":"ietf-udp-server_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-server?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-server","conformance-type":"import"},{"name":"ietf-keystore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-keystore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-keystore","conformance-type":"import","feature":["asymmetric-keys","inline-definitions-supported"]},{"name":"aaa_2016-12-14","revision":"2016-12-14","schema":"/rests/modules/aaa?revision=2016-12-14","namespace":"urn:opendaylight:params:xml:ns:yang:aaa","conformance-type":"import"},{"name":"aaa-cert-rpc_2015-12-15","revision":"2015-12-15","schema":"/rests/modules/aaa-cert-rpc?revision=2015-12-15","namespace":"urn:opendaylight:yang:aaa:cert:rpc","conformance-type":"import"},{"name":"system-notifications_2013-09-27","revision":"2013-09-27","schema":"/rests/modules/system-notifications?revision=2013-09-27","namespace":"urn:opendaylight:openflow:system","conformance-type":"import"},{"name":"sal-flat-batch_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/sal-flat-batch?revision=2016-03-21","namespace":"urn:opendaylight:flat-batch:service","conformance-type":"import"},{"name":"notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netconf:notification:1.0","conformance-type":"import"},{"name":"sal-remote_2014-01-14","revision":"2014-01-14","schema":"/rests/modules/sal-remote?revision=2014-01-14","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:remote","conformance-type":"import"},{"name":"yang-ext_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/yang-ext?revision=2013-07-09","namespace":"urn:opendaylight:yang:extension:yang-ext","conformance-type":"import"},{"name":"opendaylight-multipart-types_2017-01-12","revision":"2017-01-12","schema":"/rests/modules/opendaylight-multipart-types?revision=2017-01-12","namespace":"urn:opendaylight:multipart:types","conformance-type":"import"},{"name":"opendaylight-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-inventory?revision=2013-08-19","namespace":"urn:opendaylight:inventory","conformance-type":"import"},{"name":"sal-queue_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-queue?revision=2015-03-05","namespace":"urn:opendaylight:queue:service","conformance-type":"import"},{"name":"sal-groups-batch_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/sal-groups-batch?revision=2016-03-15","namespace":"urn:opendaylight:groups:service","conformance-type":"import"},{"name":"arbitrator-reconcile_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/arbitrator-reconcile?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:arbitrator-reconcile:service","conformance-type":"import"},{"name":"ietf-yang-metadata_2016-08-05","revision":"2016-08-05","schema":"/rests/modules/ietf-yang-metadata?revision=2016-08-05","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-metadata","conformance-type":"import"},{"name":"opendaylight-arbitrary-bitmask-fields_2016-01-30","revision":"2016-01-30","schema":"/rests/modules/opendaylight-arbitrary-bitmask-fields?revision=2016-01-30","namespace":"urn:opendaylight:arbitrary:bitmask:fields","conformance-type":"import"},{"name":"ietf-udp-client_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-client?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-client","conformance-type":"import","feature":["local-binding"]},{"name":"opendaylight-meter-types_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/opendaylight-meter-types?revision=2013-09-18","namespace":"urn:opendaylight:meter:types","conformance-type":"import"},{"name":"opendaylight-action-types_2013-11-12","revision":"2013-11-12","schema":"/rests/modules/opendaylight-action-types?revision=2013-11-12","namespace":"urn:opendaylight:action:types","conformance-type":"import"},{"name":"sal-role_2015-07-27","revision":"2015-07-27","schema":"/rests/modules/sal-role?revision=2015-07-27","namespace":"urn:opendaylight:role:service","conformance-type":"import"},{"name":"openflow-provider-config_2016-05-10","revision":"2016-05-10","schema":"/rests/modules/openflow-provider-config?revision=2016-05-10","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:provider:config","conformance-type":"import"},{"name":"odl-serviceutils-upgrade_2018-07-02","revision":"2018-07-02","schema":"/rests/modules/odl-serviceutils-upgrade?revision=2018-07-02","namespace":"urn:opendaylight:serviceutils:upgrade","conformance-type":"import"},{"name":"opendaylight-match-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-match-types?revision=2013-10-26","namespace":"urn:opendaylight:model:match:types","conformance-type":"import"},{"name":"ietf-restconf-server_2024-08-14","revision":"2024-08-14","schema":"/rests/modules/ietf-restconf-server?revision=2024-08-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-server","conformance-type":"import","feature":["http-listen","https-listen"]},{"name":"reconciliation-result-state_2017-07-13","revision":"2017-07-13","schema":"/rests/modules/reconciliation-result-state?revision=2017-07-13","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:rf:state","conformance-type":"import"},{"name":"onf-extensions_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/onf-extensions?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf","conformance-type":"import"},{"name":"sal-table_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/sal-table?revision=2013-10-26","namespace":"urn:opendaylight:table:service","conformance-type":"import"},{"name":"iana-http-versions_2026-02-04","revision":"2026-02-04","schema":"/rests/modules/iana-http-versions?revision=2026-02-04","namespace":"urn:ietf:params:xml:ns:yang:iana-http-versions","conformance-type":"import"},{"name":"opendaylight-direct-statistics_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/opendaylight-direct-statistics?revision=2016-05-11","namespace":"urn:opendaylight:direct:statistics","conformance-type":"import"},{"name":"opendaylight-port-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-port-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:port","conformance-type":"import"},{"name":"sal-async-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/sal-async-config?revision=2017-06-19","namespace":"urn:opendaylight:async-config:service","conformance-type":"import"},{"name":"aaa-password-service-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-password-service-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:password:service:config","conformance-type":"import"},{"name":"ietf-yang-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-yang-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-types","conformance-type":"import"},{"name":"opendaylight-queue-statistics_2013-12-16","revision":"2013-12-16","schema":"/rests/modules/opendaylight-queue-statistics?revision=2013-12-16","namespace":"urn:opendaylight:queue:statistics","conformance-type":"import"},{"name":"sal-bundle_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/sal-bundle?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf:bundle:service","conformance-type":"import"},{"name":"ietf-restconf-subscribed-notifications_2019-11-17","revision":"2019-11-17","schema":"/rests/modules/ietf-restconf-subscribed-notifications?revision=2019-11-17","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-subscribed-notifications","conformance-type":"import"},{"name":"sal-meters-batch_2016-03-16","revision":"2016-03-16","schema":"/rests/modules/sal-meters-batch?revision=2016-03-16","namespace":"urn:opendaylight:meters:service","conformance-type":"import"},{"name":"odl-entity-owners","revision":"","schema":"/rests/modules/odl-entity-owners","namespace":"urn:opendaylight:params:xml:ns:yang:controller:entity-owners","conformance-type":"import"},{"name":"sal-experimenter-mp-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-mp-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-mp-message:service","conformance-type":"import"},{"name":"packet-processing_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/packet-processing?revision=2013-07-09","namespace":"urn:opendaylight:packet:service","conformance-type":"import"},{"name":"openflow-configuration_2014-06-30","revision":"2014-06-30","schema":"/rests/modules/openflow-configuration?revision=2014-06-30","namespace":"urn:opendaylight:openflow:config","conformance-type":"import"},{"name":"odl-srm-rpcs_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-rpcs?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:rpc","conformance-type":"import"},{"name":"ietf-netconf-acm_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-netconf-acm?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-acm","conformance-type":"import"},{"name":"iana-crypt-hash_2014-08-06","revision":"2014-08-06","schema":"/rests/modules/iana-crypt-hash?revision=2014-08-06","namespace":"urn:ietf:params:xml:ns:yang:iana-crypt-hash","conformance-type":"import","feature":["crypt-hash-sha-512","crypt-hash-sha-256","crypt-hash-md5"]},{"name":"openflow-extensible-match_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-extensible-match?revision=2015-02-25","namespace":"urn:opendaylight:openflow:oxm","conformance-type":"import"}],"module-set-id":"2"}}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:02:09.960725" elapsed="0.002982"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:09.960501" elapsed="0.003241"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:09.960479" elapsed="0.003288"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:02:09.966362" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:02:09.964097" elapsed="0.002311"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:09.963847" elapsed="0.002596"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:09.963829" elapsed="0.002638"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:02:09.967045" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:02:09.966665" elapsed="0.000407"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:09.967422" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:09.967178" elapsed="0.000302"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:02:09.968015" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:02:09.967674" elapsed="0.000367"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:09.967504" elapsed="0.000575"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:09.967144" elapsed="0.000956"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:02:09.968710" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:02:09.968344" elapsed="0.000393"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:09.969068" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:09.968829" elapsed="0.000296"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:02:09.969629" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:02:09.969328" elapsed="0.000327"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:09.969148" elapsed="0.000544"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:09.968810" elapsed="0.000903"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:02:09.969884" elapsed="0.000369"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T01:02:09.970724" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:02:09.970441" elapsed="0.000309"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T01:02:09.970929" elapsed="0.002385"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T01:02:09.959753" elapsed="0.013683"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T01:02:09.973779" elapsed="0.000046"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:02:09.973565" elapsed="0.000323"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:09.973514" elapsed="0.000410"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T01:02:09.982846" level="INFO">${text_normalized} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T01:02:09.974666" elapsed="0.008230"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T01:02:09.982977" elapsed="0.000068"/>
</return>
<msg time="2026-04-08T01:02:09.983322" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T01:02:09.929734" elapsed="0.053696"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T01:02:09.983908" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T01:02:09.984085" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="PASS" start="2026-04-08T01:02:09.785778" elapsed="0.198335"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Json_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:09.984525" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:09.984284" elapsed="0.000455"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:09.984265" elapsed="0.000501"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T01:02:09.984801" elapsed="0.000028"/>
</return>
<arg>session=${session}</arg>
<arg>folder=${RESTCONF_MODULES_DIR}</arg>
<arg>verify=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Add arguments sensible for JSON data, return Get_Templated response text.
Optionally, verification against JSON data (may be iterated) is called.
Only subset of JSON data is verified and returned if JMES path is specified in
file ${folder}/jmespath.expr.</doc>
<status status="PASS" start="2026-04-08T01:02:09.781499" elapsed="0.203431"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:09.777266" elapsed="0.207708"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:09.777249" elapsed="0.207749"/>
</if>
<kw name="Resolve_Shard_Type_Class" owner="ClusterManagement">
<if>
<branch type="IF" condition="'${shard_type}' == 'config'">
<return>
<value>DistributedConfigDatastore</value>
<status status="PASS" start="2026-04-08T01:02:09.985622" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-08T01:02:09.985513" elapsed="0.000169"/>
</branch>
<branch type="ELSE IF" condition="'${shard_type}' == 'operational'">
<return>
<value>DistributedOperationalDatastore</value>
<status status="NOT RUN" start="2026-04-08T01:02:09.985745" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:02:09.985706" elapsed="0.000078"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:09.985495" elapsed="0.000408"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized shard type: ${shard_type}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:09.986059" elapsed="0.000022"/>
</kw>
<msg time="2026-04-08T01:02:09.986198" level="INFO">${type_class} = DistributedConfigDatastore</msg>
<var>${type_class}</var>
<arg>shard_type=${shard_type}</arg>
<doc>Simple lookup for class name corresponding to desired type.</doc>
<status status="PASS" start="2026-04-08T01:02:09.985245" elapsed="0.000980"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:02:09.986766" level="INFO">${cluster_index} = 2</msg>
<var>${cluster_index}</var>
<arg>${member_index}+${NODE_ROLE_INDEX_START}-1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:02:09.986395" elapsed="0.000398"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:02:09.987427" level="INFO">${uri} = jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-topology-config,type=DistributedConfigDatastore</msg>
<var>${uri}</var>
<arg>${JOLOKIA_READ_URI}:Category=Shards,name=member-${cluster_index}-shard-${shard_name}-${shard_type},type=${type_class}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:02:09.986950" elapsed="0.000505"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:02:09.993313" level="INFO">jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-topology-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:02:09.992853" elapsed="0.000507"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:02:09.993952" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:02:09.993518" elapsed="0.000479"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T01:02:10.014661" level="INFO">GET Request : url=http://10.30.170.131:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-topology-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-topology-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T01:02:10.014797" level="INFO">GET Response : url=http://10.30.170.131:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-topology-config,type=DistributedConfigDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Wed, 08 Apr 2026 01:02:10 GMT', 'Expires': 'Wed, 08 Apr 2026 00:02:10 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-2-shard-topology-config,type=DistributedConfigDatastore","type":"read"},"value":{"ReadWriteTransactionCount":0,"SnapshotIndex":-1,"InMemoryJournalLogSize":0,"ReplicatedToAllIndex":-1,"Leader":"member-1-shard-topology-config","LastIndex":-1,"RaftState":"Follower","LastApplied":-1,"LastCommittedTransactionTime":"1970-01-01 00:00:00.000","PeerAddresses":"member-1-shard-topology-config: pekko:\/\/opendaylight-cluster-data@10.30.170.48:2550\/user\/shardmanager-config\/member-1-shard-topology-config, member-3-shard-topology-config: pekko:\/\/opendaylight-cluster-data@10.30.171.110:2550\/user\/shardmanager-config\/member-3-shard-topology-config","LastLogIndex":-1,"LastLeadershipChangeTime":"2026-04-08 00:57:11.074","FollowerInitialSyncStatus":true,"FollowerInfo":[],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"976.4 μs","CurrentTerm":4,"LastTerm":-1,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-topology-config","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":0,"TxCohortCacheSize":0,"PeerVotingStates":"member-1-shard-topology-config: true, member-3-shard-topology-config: true","LastLogTerm":-1,"StatRetrievalError":null,"CommitIndex":-1,"SnapshotTerm":-1,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-2-shard-topology-config","LeadershipChangeCount":1,"InMemoryJournalDataSize":0},"timestamp":1775610130,"status":200} 
 </msg>
<msg time="2026-04-08T01:02:10.014986" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T01:02:10.005597" elapsed="0.009497"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:09.994065" elapsed="0.021304"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:10.015558" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:10.015400" elapsed="0.000491"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:09.994046" elapsed="0.021874"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:02:10.020679" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-2-shard-topology-config,type=DistributedConfigDatastore","type":"read"},"value":{"ReadWriteTransactionCount":0,"SnapshotIndex":-1,"InMemoryJournalLogSize":0,"ReplicatedToAllIndex":-1,"Leader":"member-1-shard-topology-config","LastIndex":-1,"RaftState":"Follower","LastApplied":-1,"LastCommittedTransactionTime":"1970-01-01 00:00:00.000","PeerAddresses":"member-1-shard-topology-config: pekko:\/\/opendaylight-cluster-data@10.30.170.48:2550\/user\/shardmanager-config\/member-1-shard-topology-config, member-3-shard-topology-config: pekko:\/\/opendaylight-cluster-data@10.30.171.110:2550\/user\/shardmanager-config\/member-3-shard-topology-config","LastLogIndex":-1,"LastLeadershipChangeTime":"2026-04-08 00:57:11.074","FollowerInitialSyncStatus":true,"FollowerInfo":[],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"976.4 μs","CurrentTerm":4,"LastTerm":-1,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-topology-config","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":0,"TxCohortCacheSize":0,"PeerVotingStates":"member-1-shard-topology-config: true, member-3-shard-topology-config: true","LastLogTerm":-1,"StatRetrievalError":null,"CommitIndex":-1,"SnapshotTerm":-1,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-2-shard-topology-config","LeadershipChangeCount":1,"InMemoryJournalDataSize":0},"timestamp":1775610130,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:02:10.018044" elapsed="0.002781"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:10.017101" elapsed="0.003773"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:10.017082" elapsed="0.003834"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:02:10.024385" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:02:10.021919" elapsed="0.002564"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:10.021002" elapsed="0.003530"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:10.020984" elapsed="0.003587"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:02:10.025981" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:02:10.025233" elapsed="0.000944"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:10.026826" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:10.026353" elapsed="0.000561"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:02:10.027965" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:02:10.027420" elapsed="0.000592"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:10.026952" elapsed="0.001110"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:10.026332" elapsed="0.001766"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:02:10.029510" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:02:10.028758" elapsed="0.000813"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:10.030222" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:10.029738" elapsed="0.000572"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:02:10.031190" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:02:10.030678" elapsed="0.000559"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:10.030348" elapsed="0.000940"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:10.029717" elapsed="0.001606"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:02:10.031548" elapsed="0.000686"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T01:02:10.033027" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:02:10.032545" elapsed="0.000543"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T01:02:10.033418" elapsed="0.002495"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T01:02:10.016418" elapsed="0.019658"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T01:02:10.036292" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:02:10.036149" elapsed="0.000189"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:10.036131" elapsed="0.000229"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T01:02:10.041240" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-2-shard-topology-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1775610...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T01:02:10.036509" elapsed="0.004764"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T01:02:10.041330" elapsed="0.000038"/>
</return>
<msg time="2026-04-08T01:02:10.041508" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-2-shard-topology-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1775610...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T01:02:09.988456" elapsed="0.053079"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T01:02:10.041592" elapsed="0.000027"/>
</return>
<msg time="2026-04-08T01:02:10.041858" level="INFO">${data_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-2-shard-topology-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1775610...</msg>
<var>${data_text}</var>
<arg>uri=${uri}</arg>
<arg>session=${session}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-08T01:02:09.987668" elapsed="0.054219"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:02:10.043018" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-2-shard-topology-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1775610130, 'value...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:02:10.042529" elapsed="0.000518"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-08T01:02:10.043170" elapsed="0.000031"/>
</return>
<msg time="2026-04-08T01:02:10.043350" level="INFO">${data_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-2-shard-topology-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1775610130, 'value...</msg>
<var>${data_object}</var>
<arg>${data_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-08T01:02:10.042125" elapsed="0.001253"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:02:10.043735" level="INFO">${value} = {'AbortTransactionsCount': 0, 'CommitIndex': -1, 'CommittedTransactionsCount': 0, 'CurrentTerm': 4, 'FailedReadTransactionsCount': 0, 'FailedTransactionsCount': 0, 'FollowerInfo': [], 'FollowerInitial...</msg>
<var>${value}</var>
<arg>${data_object}</arg>
<arg>value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:02:10.043534" elapsed="0.000229"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:02:10.044147" level="INFO">${raft_property} = Follower</msg>
<var>${raft_property}</var>
<arg>${value}</arg>
<arg>${property}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:02:10.043940" elapsed="0.000249"/>
</kw>
<return>
<value>${raft_property}</value>
<status status="PASS" start="2026-04-08T01:02:10.044237" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T01:02:10.044387" level="INFO">${raft_state} = Follower</msg>
<var>${raft_state}</var>
<arg>RaftState</arg>
<arg>${shard_name}</arg>
<arg>${shard_type}</arg>
<arg>${member_index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft property.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T01:02:09.775539" elapsed="0.268873"/>
</kw>
<return>
<value>${raft_state}</value>
<status status="PASS" start="2026-04-08T01:02:10.044469" elapsed="0.000025"/>
</return>
<msg time="2026-04-08T01:02:10.044613" level="INFO">${raft_state} = Follower</msg>
<var>${raft_state}</var>
<arg>shard_name=${shard_name}</arg>
<arg>shard_type=${ds_type}</arg>
<arg>member_index=${index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft status.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T01:02:09.774600" elapsed="0.270039"/>
</kw>
<if>
<branch type="IF" condition="'Follower' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${follower_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-08T01:02:10.044939" elapsed="0.000193"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:10.044717" elapsed="0.000469"/>
</branch>
<branch type="ELSE IF" condition="'Leader' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${leader_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:10.045358" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:10.045211" elapsed="0.000201"/>
</branch>
<branch type="ELSE IF" condition="${validate}">
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized Raft state: ${raft_state}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:10.045576" elapsed="0.000019"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:10.045434" elapsed="0.000191"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:10.044700" elapsed="0.000947"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T01:02:09.774431" elapsed="0.271239"/>
</iter>
<iter>
<kw name="Get_Raft_State_Of_Shard_At_Member" owner="ClusterManagement">
<kw name="Get_Raft_Property_From_Shard_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:02:10.048079" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:02:10.047734" elapsed="0.000372"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T01:02:10.048151" elapsed="0.000043"/>
</return>
<msg time="2026-04-08T01:02:10.048314" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T01:02:10.047391" elapsed="0.000948"/>
</kw>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Get_As_Json_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:02:10.134631" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:02:10.134260" elapsed="0.000400"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T01:02:10.135438" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T01:02:10.135169" elapsed="0.000350">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-08T01:02:10.135612" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T01:02:10.134825" elapsed="0.000811"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:02:10.136214" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:02:10.135814" elapsed="0.000427"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T01:02:10.136539" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-08T01:02:10.136696" level="INFO">${template} = /rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T01:02:10.136404" elapsed="0.000352"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:02:10.137178" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:02:10.136917" elapsed="0.000309"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:02:10.138179" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:02:10.137911" elapsed="0.000315"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-08T01:02:10.138653" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-08T01:02:10.138389" elapsed="0.000291"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:10.139003" elapsed="0.000021"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:10.139219" elapsed="0.000024"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:10.139396" elapsed="0.000022"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-08T01:02:10.138865" elapsed="0.000589"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-08T01:02:10.138728" elapsed="0.000755"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-08T01:02:10.139525" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T01:02:10.139683" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-08T01:02:10.137587" elapsed="0.002122"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:10.137295" elapsed="0.002445"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:10.139927" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:10.139764" elapsed="0.000225"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:10.137276" elapsed="0.002736"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:02:10.140743" level="INFO">${final_text} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:02:10.140310" elapsed="0.000460"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T01:02:10.140818" elapsed="0.000028"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="PASS" start="2026-04-08T01:02:10.133624" elapsed="0.007315"/>
</kw>
<msg time="2026-04-08T01:02:10.140992" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:02:10.120890" elapsed="0.020183"/>
</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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:10.153945" elapsed="0.000041"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:10.166477" elapsed="0.000040"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:10.178915" elapsed="0.000040"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:10.179705" elapsed="0.000036"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:10.180497" elapsed="0.000036"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:10.181083" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:10.180934" elapsed="0.000206"/>
</branch>
<status status="NOT RUN" start="2026-04-08T01:02:10.180918" elapsed="0.000261"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:10.181342" elapsed="0.000022"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:10.181530" elapsed="0.000021"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:10.181716" elapsed="0.000021"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-08T01:02:10.180869" elapsed="0.000921"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-08T01:02:10.180648" elapsed="0.001181"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:10.182547" elapsed="0.000035"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-08T01:02:10.182665" elapsed="0.000046"/>
</return>
<msg time="2026-04-08T01:02:10.182881" level="INFO">${uri} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-08T01:02:10.114631" elapsed="0.068361"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T01:02:10.185895" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T01:02:10.185653" elapsed="0.000307">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-08T01:02:10.186145" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T01:02:10.185218" elapsed="0.000987"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:10.186710" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:10.186337" elapsed="0.000440"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:02:10.187391" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:02:10.187077" elapsed="0.000340"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:10.186815" elapsed="0.000647"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:10.186285" elapsed="0.001216"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:02:10.190854" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:02:10.188354" elapsed="0.002545"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-08T01:02:10.190974" elapsed="0.000061"/>
</return>
<msg time="2026-04-08T01:02:10.191297" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T01:02:10.183984" elapsed="0.007449"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T01:02:10.194096" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T01:02:10.193845" elapsed="0.000407">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-08T01:02:10.194443" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T01:02:10.193416" elapsed="0.001071"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-08T01:02:10.194863" elapsed="0.000079"/>
</return>
<status status="PASS" start="2026-04-08T01:02:10.194619" elapsed="0.000390"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:10.194569" elapsed="0.000478"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:10.195813" elapsed="0.000036"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:10.196597" elapsed="0.000035"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-08T01:02:10.196705" elapsed="0.000047"/>
</return>
<msg time="2026-04-08T01:02:10.198990" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T01:02:10.192310" elapsed="0.006788"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:02:10.203104" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:02:10.202723" elapsed="0.000501"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:02:10.204375" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:02:10.203974" elapsed="0.000499"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T01:02:10.225202" level="INFO">GET Request : url=http://10.30.171.110:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 path_url=/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0bpvxx3soilt318jo6w4kocddk0.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T01:02:10.225626" level="INFO">GET Response : url=http://10.30.171.110:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Transfer-Encoding': 'chunked'} 
 body={"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","encrypted-passwords","hidden-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-private-keys","asymmetrically-encrypted-value-format","cleartext-private-keys","cms-encrypted-data-format","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["client-ident-hostbased","ssh-client-keepalives","client-ident-password","client-ident-publickey"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-ex... (set the log level to DEBUG or TRACE to see the full content) 
 </msg>
<msg time="2026-04-08T01:02:10.225823" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T01:02:10.206799" elapsed="0.019051"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:10.204598" elapsed="0.021308"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:10.226223" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:10.225950" elapsed="0.000350"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:10.204548" elapsed="0.021787"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:02:10.230675" level="INFO">{"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","encrypted-passwords","hidden-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-private-keys","asymmetrically-encrypted-value-format","cleartext-private-keys","cms-encrypted-data-format","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["client-ident-hostbased","ssh-client-keepalives","client-ident-password","client-ident-publickey"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-experimenter-types?revision=2015-10-20","namespace":"urn:opendaylight:openflowplugin:experimenter:types","conformance-type":"import"},{"name":"ietf-ip_2018-02-22","revision":"2018-02-22","schema":"/rests/modules/ietf-ip?revision=2018-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-ip","conformance-type":"import","feature":["ipv6-privacy-autoconf","ipv4-non-contiguous-netmasks"]},{"name":"ietf-tcp-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-client","conformance-type":"import","feature":["local-binding-supported","tcp-client-keepalives"]},{"name":"node-config_2014-10-15","revision":"2014-10-15","schema":"/rests/modules/node-config?revision=2014-10-15","namespace":"urn:opendaylight:module:config","conformance-type":"import"},{"name":"ietf-restconf_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf","conformance-type":"import"},{"name":"ietf-datastores_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-datastores?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-datastores","conformance-type":"import"},{"name":"ietf-yang-patch_2017-02-22","revision":"2017-02-22","schema":"/rests/modules/ietf-yang-patch?revision=2017-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-patch","conformance-type":"import"},{"name":"sal-group_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-group?revision=2013-09-18","namespace":"urn:opendaylight:group:service","conformance-type":"import"},{"name":"odl-codegen-extensions_2024-06-27","revision":"2024-06-27","schema":"/rests/modules/odl-codegen-extensions?revision=2024-06-27","namespace":"urn:opendaylight:yang:extension:codegen","conformance-type":"import"},{"name":"sal-meter_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-meter?revision=2013-09-18","namespace":"urn:opendaylight:meter:service","conformance-type":"import"},{"name":"ietf-interfaces_2018-02-20","revision":"2018-02-20","schema":"/rests/modules/ietf-interfaces?revision=2018-02-20","namespace":"urn:ietf:params:xml:ns:yang:ietf-interfaces","conformance-type":"import","feature":["pre-provisioning","if-mib","arbitrary-names"]},{"name":"opendaylight-l2-types_2013-08-27","revision":"2013-08-27","schema":"/rests/modules/opendaylight-l2-types?revision=2013-08-27","namespace":"urn:opendaylight:l2:types","conformance-type":"import"},{"name":"opendaylight-flow-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-flow-types?revision=2013-10-26","namespace":"urn:opendaylight:flow:types","conformance-type":"import"},{"name":"lldp-speaker-config_2016-05-12","revision":"2016-05-12","schema":"/rests/modules/lldp-speaker-config?revision=2016-05-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker:config","conformance-type":"import"},{"name":"aaa-cert_2015-11-26","revision":"2015-11-26","schema":"/rests/modules/aaa-cert?revision=2015-11-26","namespace":"urn:opendaylight:yang:aaa:cert","conformance-type":"import"},{"name":"openflow-action_2015-02-03","revision":"2015-02-03","schema":"/rests/modules/openflow-action?revision=2015-02-03","namespace":"urn:opendaylight:openflow:common:action","conformance-type":"import"},{"name":"openflow-approved-extensions_2016-08-02","revision":"2016-08-02","schema":"/rests/modules/openflow-approved-extensions?revision=2016-08-02","namespace":"urn:opendaylight:openflow:approved:extensions","conformance-type":"import"},{"name":"nc-notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/nc-notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netmod:notification","conformance-type":"import"},{"name":"ietf-netconf-nmda_2019-01-07","revision":"2019-01-07","schema":"/rests/modules/ietf-netconf-nmda?revision=2019-01-07","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-nmda","conformance-type":"import","feature":["with-defaults","origin"]},{"name":"ietf-tcp-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-common","conformance-type":"import","feature":["keepalives-supported"]},{"name":"network-topology_2013-10-21","revision":"2013-10-21","schema":"/rests/modules/network-topology?revision=2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:network-topology","conformance-type":"import"},{"name":"aaa-encrypt-service-config_2024-02-02","revision":"2024-02-02","schema":"/rests/modules/aaa-encrypt-service-config?revision=2024-02-02","namespace":"config:aaa:authn:encrypt:service:config","conformance-type":"import"},{"name":"openflow-instruction_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-instruction?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:instruction","conformance-type":"import"},{"name":"ietf-tls-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-client","conformance-type":"import","feature":["client-ident-x509-cert","server-auth-x509-cert"]},{"name":"opendaylight-group-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-group-statistics?revision=2013-11-11","namespace":"urn:opendaylight:group:statistics","conformance-type":"import"},{"name":"cluster-admin_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/cluster-admin?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:cluster:admin","conformance-type":"import"},{"name":"opendaylight-flow-statistics_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-flow-statistics?revision=2013-08-19","namespace":"urn:opendaylight:flow:statistics","conformance-type":"import"},{"name":"opendaylight-table-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-table-types?revision=2013-10-26","namespace":"urn:opendaylight:table:types","conformance-type":"import"},{"name":"forwarding-rules-manager-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/forwarding-rules-manager-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:forwardingrules-manager:config","conformance-type":"import"},{"name":"odl-srm-types_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-types?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:types","conformance-type":"import"},{"name":"ietf-x509-cert-to-name_2014-12-10","revision":"2014-12-10","schema":"/rests/modules/ietf-x509-cert-to-name?revision=2014-12-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-x509-cert-to-name","conformance-type":"import"},{"name":"flow-node-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-node-inventory?revision=2013-08-19","namespace":"urn:opendaylight:flow:inventory","conformance-type":"import"},{"name":"flow-errors_2013-11-16","revision":"2013-11-16","schema":"/rests/modules/flow-errors?revision=2013-11-16","namespace":"urn:opendaylight:flow:errors","conformance-type":"import"},{"name":"ietf-netconf_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:netconf:base:1.0","conformance-type":"import","feature":["xpath","url","rollback-on-error","validate","candidate","confirmed-commit","startup","writable-running"]},{"name":"iana-ssh-public-key-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-public-key-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-public-key-algs","conformance-type":"import"},{"name":"aaa-cert-mdsal_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/aaa-cert-mdsal?revision=2016-03-21","namespace":"urn:opendaylight:yang:aaa:cert:mdsal","conformance-type":"import"},{"name":"odl-device-notification_2024-02-18","revision":"2024-02-18","schema":"/rests/modules/odl-device-notification?revision=2024-02-18","namespace":"urn:opendaylight:device:notification","conformance-type":"import"},{"name":"ietf-origin_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-origin?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-origin","conformance-type":"import"},{"name":"openflow-augments_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-augments?revision=2015-02-25","namespace":"urn:opendaylight:openflow:augments","conformance-type":"import"},{"name":"iana-ssh-encryption-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-encryption-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-encryption-algs","conformance-type":"import"},{"name":"ietf-truststore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-truststore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-truststore","conformance-type":"import","feature":["inline-definitions-supported"]},{"name":"distributed-datastore-provider_2025-01-30","revision":"2025-01-30","schema":"/rests/modules/distributed-datastore-provider?revision=2025-01-30","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:distributed-datastore-provider","conformance-type":"import"},{"name":"opendaylight-group-types_2013-10-18","revision":"2013-10-18","schema":"/rests/modules/opendaylight-group-types?revision=2013-10-18","namespace":"urn:opendaylight:group:types","conformance-type":"import"},{"name":"sal-remote-augment_2023-11-03","revision":"2023-11-03","schema":"/rests/modules/sal-remote-augment?revision=2023-11-03","namespace":"urn:sal:restconf:event:subscription","conformance-type":"import"},{"name":"opendaylight-ipv6-arbitrary-bitmask-fields_2016-02-24","revision":"2016-02-24","schema":"/rests/modules/opendaylight-ipv6-arbitrary-bitmask-fields?revision=2016-02-24","namespace":"urn:opendaylight:opendaylight-ipv6-arbitrary-bitmask-fields","conformance-type":"import"},{"name":"sal-flows-batch_2016-03-14","revision":"2016-03-14","schema":"/rests/modules/sal-flows-batch?revision=2016-03-14","namespace":"urn:opendaylight:flows:service","conformance-type":"import"},{"name":"ietf-tls-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-common","conformance-type":"import","feature":["hello-params","tls12","tls13"]},{"name":"openflow-types_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-types?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:types","conformance-type":"import"},{"name":"ietf-netconf-with-defaults_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf-with-defaults?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults","conformance-type":"import"},{"name":"odl-srm-ops_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-ops?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:ops","conformance-type":"import"},{"name":"odl-general-entity_2015-09-30","revision":"2015-09-30","schema":"/rests/modules/odl-general-entity?revision=2015-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:mdsal:core:general-entity","conformance-type":"import"},{"name":"iana-ssh-key-exchange-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-key-exchange-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-key-exchange-algs","conformance-type":"import"},{"name":"node-ssl-connection-error_2019-07-23","revision":"2019-07-23","schema":"/rests/modules/node-ssl-connection-error?revision=2019-07-23","namespace":"urn:opendaylight:node-ssl-connection-error:service","conformance-type":"import"},{"name":"openflow-protocol_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-protocol?revision=2013-07-31","namespace":"urn:opendaylight:openflow:protocol","conformance-type":"import"},{"name":"ietf-udp-server_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-server?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-server","conformance-type":"import"},{"name":"ietf-keystore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-keystore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-keystore","conformance-type":"import","feature":["asymmetric-keys","inline-definitions-supported"]},{"name":"aaa_2016-12-14","revision":"2016-12-14","schema":"/rests/modules/aaa?revision=2016-12-14","namespace":"urn:opendaylight:params:xml:ns:yang:aaa","conformance-type":"import"},{"name":"aaa-cert-rpc_2015-12-15","revision":"2015-12-15","schema":"/rests/modules/aaa-cert-rpc?revision=2015-12-15","namespace":"urn:opendaylight:yang:aaa:cert:rpc","conformance-type":"import"},{"name":"system-notifications_2013-09-27","revision":"2013-09-27","schema":"/rests/modules/system-notifications?revision=2013-09-27","namespace":"urn:opendaylight:openflow:system","conformance-type":"import"},{"name":"sal-flat-batch_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/sal-flat-batch?revision=2016-03-21","namespace":"urn:opendaylight:flat-batch:service","conformance-type":"import"},{"name":"notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netconf:notification:1.0","conformance-type":"import"},{"name":"sal-remote_2014-01-14","revision":"2014-01-14","schema":"/rests/modules/sal-remote?revision=2014-01-14","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:remote","conformance-type":"import"},{"name":"yang-ext_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/yang-ext?revision=2013-07-09","namespace":"urn:opendaylight:yang:extension:yang-ext","conformance-type":"import"},{"name":"opendaylight-multipart-types_2017-01-12","revision":"2017-01-12","schema":"/rests/modules/opendaylight-multipart-types?revision=2017-01-12","namespace":"urn:opendaylight:multipart:types","conformance-type":"import"},{"name":"opendaylight-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-inventory?revision=2013-08-19","namespace":"urn:opendaylight:inventory","conformance-type":"import"},{"name":"sal-queue_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-queue?revision=2015-03-05","namespace":"urn:opendaylight:queue:service","conformance-type":"import"},{"name":"sal-groups-batch_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/sal-groups-batch?revision=2016-03-15","namespace":"urn:opendaylight:groups:service","conformance-type":"import"},{"name":"arbitrator-reconcile_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/arbitrator-reconcile?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:arbitrator-reconcile:service","conformance-type":"import"},{"name":"ietf-yang-metadata_2016-08-05","revision":"2016-08-05","schema":"/rests/modules/ietf-yang-metadata?revision=2016-08-05","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-metadata","conformance-type":"import"},{"name":"opendaylight-arbitrary-bitmask-fields_2016-01-30","revision":"2016-01-30","schema":"/rests/modules/opendaylight-arbitrary-bitmask-fields?revision=2016-01-30","namespace":"urn:opendaylight:arbitrary:bitmask:fields","conformance-type":"import"},{"name":"ietf-udp-client_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-client?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-client","conformance-type":"import","feature":["local-binding"]},{"name":"opendaylight-meter-types_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/opendaylight-meter-types?revision=2013-09-18","namespace":"urn:opendaylight:meter:types","conformance-type":"import"},{"name":"opendaylight-action-types_2013-11-12","revision":"2013-11-12","schema":"/rests/modules/opendaylight-action-types?revision=2013-11-12","namespace":"urn:opendaylight:action:types","conformance-type":"import"},{"name":"sal-role_2015-07-27","revision":"2015-07-27","schema":"/rests/modules/sal-role?revision=2015-07-27","namespace":"urn:opendaylight:role:service","conformance-type":"import"},{"name":"openflow-provider-config_2016-05-10","revision":"2016-05-10","schema":"/rests/modules/openflow-provider-config?revision=2016-05-10","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:provider:config","conformance-type":"import"},{"name":"odl-serviceutils-upgrade_2018-07-02","revision":"2018-07-02","schema":"/rests/modules/odl-serviceutils-upgrade?revision=2018-07-02","namespace":"urn:opendaylight:serviceutils:upgrade","conformance-type":"import"},{"name":"opendaylight-match-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-match-types?revision=2013-10-26","namespace":"urn:opendaylight:model:match:types","conformance-type":"import"},{"name":"ietf-restconf-server_2024-08-14","revision":"2024-08-14","schema":"/rests/modules/ietf-restconf-server?revision=2024-08-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-server","conformance-type":"import","feature":["http-listen","https-listen"]},{"name":"reconciliation-result-state_2017-07-13","revision":"2017-07-13","schema":"/rests/modules/reconciliation-result-state?revision=2017-07-13","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:rf:state","conformance-type":"import"},{"name":"onf-extensions_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/onf-extensions?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf","conformance-type":"import"},{"name":"sal-table_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/sal-table?revision=2013-10-26","namespace":"urn:opendaylight:table:service","conformance-type":"import"},{"name":"iana-http-versions_2026-02-04","revision":"2026-02-04","schema":"/rests/modules/iana-http-versions?revision=2026-02-04","namespace":"urn:ietf:params:xml:ns:yang:iana-http-versions","conformance-type":"import"},{"name":"opendaylight-direct-statistics_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/opendaylight-direct-statistics?revision=2016-05-11","namespace":"urn:opendaylight:direct:statistics","conformance-type":"import"},{"name":"opendaylight-port-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-port-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:port","conformance-type":"import"},{"name":"sal-async-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/sal-async-config?revision=2017-06-19","namespace":"urn:opendaylight:async-config:service","conformance-type":"import"},{"name":"aaa-password-service-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-password-service-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:password:service:config","conformance-type":"import"},{"name":"ietf-yang-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-yang-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-types","conformance-type":"import"},{"name":"opendaylight-queue-statistics_2013-12-16","revision":"2013-12-16","schema":"/rests/modules/opendaylight-queue-statistics?revision=2013-12-16","namespace":"urn:opendaylight:queue:statistics","conformance-type":"import"},{"name":"sal-bundle_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/sal-bundle?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf:bundle:service","conformance-type":"import"},{"name":"ietf-restconf-subscribed-notifications_2019-11-17","revision":"2019-11-17","schema":"/rests/modules/ietf-restconf-subscribed-notifications?revision=2019-11-17","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-subscribed-notifications","conformance-type":"import"},{"name":"sal-meters-batch_2016-03-16","revision":"2016-03-16","schema":"/rests/modules/sal-meters-batch?revision=2016-03-16","namespace":"urn:opendaylight:meters:service","conformance-type":"import"},{"name":"odl-entity-owners","revision":"","schema":"/rests/modules/odl-entity-owners","namespace":"urn:opendaylight:params:xml:ns:yang:controller:entity-owners","conformance-type":"import"},{"name":"sal-experimenter-mp-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-mp-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-mp-message:service","conformance-type":"import"},{"name":"packet-processing_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/packet-processing?revision=2013-07-09","namespace":"urn:opendaylight:packet:service","conformance-type":"import"},{"name":"openflow-configuration_2014-06-30","revision":"2014-06-30","schema":"/rests/modules/openflow-configuration?revision=2014-06-30","namespace":"urn:opendaylight:openflow:config","conformance-type":"import"},{"name":"odl-srm-rpcs_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-rpcs?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:rpc","conformance-type":"import"},{"name":"ietf-netconf-acm_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-netconf-acm?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-acm","conformance-type":"import"},{"name":"iana-crypt-hash_2014-08-06","revision":"2014-08-06","schema":"/rests/modules/iana-crypt-hash?revision=2014-08-06","namespace":"urn:ietf:params:xml:ns:yang:iana-crypt-hash","conformance-type":"import","feature":["crypt-hash-sha-512","crypt-hash-sha-256","crypt-hash-md5"]},{"name":"openflow-extensible-match_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-extensible-match?revision=2015-02-25","namespace":"urn:opendaylight:openflow:oxm","conformance-type":"import"}],"module-set-id":"2"}}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:02:10.228030" elapsed="0.002964"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:10.227797" elapsed="0.003233"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:10.227775" elapsed="0.003279"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:02:10.233633" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:02:10.231386" elapsed="0.002292"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:10.231133" elapsed="0.002580"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:10.231116" elapsed="0.002620"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:02:10.234316" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:02:10.233922" elapsed="0.000421"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:10.234675" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:10.234435" elapsed="0.000298"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:02:10.235293" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:02:10.234919" elapsed="0.000400"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:10.234756" elapsed="0.000600"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:10.234415" elapsed="0.000961"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:02:10.235936" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:02:10.235561" elapsed="0.000401"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:10.236305" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:10.236053" elapsed="0.000311"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:02:10.236913" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:02:10.236548" elapsed="0.000391"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:10.236387" elapsed="0.000588"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:10.236034" elapsed="0.000962"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:02:10.237186" elapsed="0.000348"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T01:02:10.238004" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:02:10.237721" elapsed="0.000309"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T01:02:10.238220" elapsed="0.002342"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T01:02:10.227060" elapsed="0.013626"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T01:02:10.241031" elapsed="0.000046"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:02:10.240815" elapsed="0.000325"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:10.240765" elapsed="0.000427"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T01:02:10.250026" level="INFO">${text_normalized} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T01:02:10.241930" elapsed="0.008146"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T01:02:10.250234" elapsed="0.000068"/>
</return>
<msg time="2026-04-08T01:02:10.250563" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T01:02:10.199916" elapsed="0.050755"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T01:02:10.251136" elapsed="0.000044"/>
</return>
<msg time="2026-04-08T01:02:10.251331" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="PASS" start="2026-04-08T01:02:10.056869" elapsed="0.194489"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Json_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:10.251683" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:10.251442" elapsed="0.000466"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:10.251425" elapsed="0.000510"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T01:02:10.251969" elapsed="0.000028"/>
</return>
<arg>session=${session}</arg>
<arg>folder=${RESTCONF_MODULES_DIR}</arg>
<arg>verify=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Add arguments sensible for JSON data, return Get_Templated response text.
Optionally, verification against JSON data (may be iterated) is called.
Only subset of JSON data is verified and returned if JMES path is specified in
file ${folder}/jmespath.expr.</doc>
<status status="PASS" start="2026-04-08T01:02:10.052631" elapsed="0.199465"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:10.048406" elapsed="0.203734"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:10.048389" elapsed="0.203791"/>
</if>
<kw name="Resolve_Shard_Type_Class" owner="ClusterManagement">
<if>
<branch type="IF" condition="'${shard_type}' == 'config'">
<return>
<value>DistributedConfigDatastore</value>
<status status="PASS" start="2026-04-08T01:02:10.252784" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-08T01:02:10.252675" elapsed="0.000168"/>
</branch>
<branch type="ELSE IF" condition="'${shard_type}' == 'operational'">
<return>
<value>DistributedOperationalDatastore</value>
<status status="NOT RUN" start="2026-04-08T01:02:10.252905" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:02:10.252867" elapsed="0.000077"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:10.252657" elapsed="0.000309"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized shard type: ${shard_type}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:10.253113" elapsed="0.000022"/>
</kw>
<msg time="2026-04-08T01:02:10.253250" level="INFO">${type_class} = DistributedConfigDatastore</msg>
<var>${type_class}</var>
<arg>shard_type=${shard_type}</arg>
<doc>Simple lookup for class name corresponding to desired type.</doc>
<status status="PASS" start="2026-04-08T01:02:10.252408" elapsed="0.000869"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:02:10.253821" level="INFO">${cluster_index} = 3</msg>
<var>${cluster_index}</var>
<arg>${member_index}+${NODE_ROLE_INDEX_START}-1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:02:10.253448" elapsed="0.000400"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:02:10.254495" level="INFO">${uri} = jolokia/read/org.opendaylight.controller:Category=Shards,name=member-3-shard-topology-config,type=DistributedConfigDatastore</msg>
<var>${uri}</var>
<arg>${JOLOKIA_READ_URI}:Category=Shards,name=member-${cluster_index}-shard-${shard_name}-${shard_type},type=${type_class}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:02:10.254006" elapsed="0.000517"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:02:10.260327" level="INFO">jolokia/read/org.opendaylight.controller:Category=Shards,name=member-3-shard-topology-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:02:10.259864" elapsed="0.000511"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:02:10.260974" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:02:10.260535" elapsed="0.000484"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T01:02:10.281266" level="INFO">GET Request : url=http://10.30.171.110:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-3-shard-topology-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-3-shard-topology-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T01:02:10.281400" level="INFO">GET Response : url=http://10.30.171.110:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-3-shard-topology-config,type=DistributedConfigDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Wed, 08 Apr 2026 01:02:10 GMT', 'Expires': 'Wed, 08 Apr 2026 00:02:10 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-3-shard-topology-config,type=DistributedConfigDatastore","type":"read"},"value":{"ReadWriteTransactionCount":0,"SnapshotIndex":-1,"InMemoryJournalLogSize":0,"ReplicatedToAllIndex":-1,"Leader":"member-1-shard-topology-config","LastIndex":-1,"RaftState":"Follower","LastApplied":-1,"LastCommittedTransactionTime":"1970-01-01 00:00:00.000","PeerAddresses":"member-2-shard-topology-config: pekko:\/\/opendaylight-cluster-data@10.30.170.131:2550\/user\/shardmanager-config\/member-2-shard-topology-config, member-1-shard-topology-config: pekko:\/\/opendaylight-cluster-data@10.30.170.48:2550\/user\/shardmanager-config\/member-1-shard-topology-config","LastLogIndex":-1,"LastLeadershipChangeTime":"2026-04-08 00:57:11.079","FollowerInitialSyncStatus":true,"FollowerInfo":[],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"722.9 μs","CurrentTerm":4,"LastTerm":-1,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-topology-config","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":0,"TxCohortCacheSize":0,"PeerVotingStates":"member-2-shard-topology-config: true, member-1-shard-topology-config: true","LastLogTerm":-1,"StatRetrievalError":null,"CommitIndex":-1,"SnapshotTerm":-1,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-3-shard-topology-config","LeadershipChangeCount":1,"InMemoryJournalDataSize":0},"timestamp":1775610130,"status":200} 
 </msg>
<msg time="2026-04-08T01:02:10.281590" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T01:02:10.272551" elapsed="0.009143"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:10.261087" elapsed="0.020859"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:10.282132" elapsed="0.000068"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:10.281975" elapsed="0.000517"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:10.261069" elapsed="0.021449"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:02:10.287534" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-3-shard-topology-config,type=DistributedConfigDatastore","type":"read"},"value":{"ReadWriteTransactionCount":0,"SnapshotIndex":-1,"InMemoryJournalLogSize":0,"ReplicatedToAllIndex":-1,"Leader":"member-1-shard-topology-config","LastIndex":-1,"RaftState":"Follower","LastApplied":-1,"LastCommittedTransactionTime":"1970-01-01 00:00:00.000","PeerAddresses":"member-2-shard-topology-config: pekko:\/\/opendaylight-cluster-data@10.30.170.131:2550\/user\/shardmanager-config\/member-2-shard-topology-config, member-1-shard-topology-config: pekko:\/\/opendaylight-cluster-data@10.30.170.48:2550\/user\/shardmanager-config\/member-1-shard-topology-config","LastLogIndex":-1,"LastLeadershipChangeTime":"2026-04-08 00:57:11.079","FollowerInitialSyncStatus":true,"FollowerInfo":[],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"722.9 μs","CurrentTerm":4,"LastTerm":-1,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-topology-config","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":0,"TxCohortCacheSize":0,"PeerVotingStates":"member-2-shard-topology-config: true, member-1-shard-topology-config: true","LastLogTerm":-1,"StatRetrievalError":null,"CommitIndex":-1,"SnapshotTerm":-1,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-3-shard-topology-config","LeadershipChangeCount":1,"InMemoryJournalDataSize":0},"timestamp":1775610130,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:02:10.284889" elapsed="0.002795"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:10.283852" elapsed="0.003906"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:10.283832" elapsed="0.003966"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:02:10.291200" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:02:10.288762" elapsed="0.002537"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:10.287883" elapsed="0.003466"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:10.287865" elapsed="0.003522"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:02:10.292802" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:02:10.292040" elapsed="0.000823"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:10.293529" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:10.293036" elapsed="0.000581"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:02:10.294570" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:02:10.293987" elapsed="0.000629"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:10.293653" elapsed="0.001014"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:10.293016" elapsed="0.001686"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:02:10.296098" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:02:10.295353" elapsed="0.000821"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:10.296811" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:10.296343" elapsed="0.000556"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:02:10.297784" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:02:10.297287" elapsed="0.000542"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:10.296937" elapsed="0.000943"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:10.296323" elapsed="0.001592"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:02:10.298137" elapsed="0.000700"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T01:02:10.299677" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:02:10.299148" elapsed="0.000615"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T01:02:10.300053" elapsed="0.002516"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T01:02:10.282994" elapsed="0.019735"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T01:02:10.302927" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:02:10.302801" elapsed="0.000172"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:10.302783" elapsed="0.000211"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T01:02:10.306838" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-3-shard-topology-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1775610...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T01:02:10.303142" elapsed="0.003726"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T01:02:10.306920" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T01:02:10.307076" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-3-shard-topology-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1775610...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T01:02:10.255490" elapsed="0.051613"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T01:02:10.307176" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T01:02:10.307327" level="INFO">${data_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-3-shard-topology-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1775610...</msg>
<var>${data_text}</var>
<arg>uri=${uri}</arg>
<arg>session=${session}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-08T01:02:10.254739" elapsed="0.052614"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:02:10.308429" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-3-shard-topology-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1775610130, 'value...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:02:10.307944" elapsed="0.000515"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-08T01:02:10.308551" elapsed="0.000031"/>
</return>
<msg time="2026-04-08T01:02:10.308728" level="INFO">${data_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-3-shard-topology-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1775610130, 'value...</msg>
<var>${data_object}</var>
<arg>${data_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-08T01:02:10.307573" elapsed="0.001182"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:02:10.309115" level="INFO">${value} = {'AbortTransactionsCount': 0, 'CommitIndex': -1, 'CommittedTransactionsCount': 0, 'CurrentTerm': 4, 'FailedReadTransactionsCount': 0, 'FailedTransactionsCount': 0, 'FollowerInfo': [], 'FollowerInitial...</msg>
<var>${value}</var>
<arg>${data_object}</arg>
<arg>value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:02:10.308912" elapsed="0.000231"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:02:10.309521" level="INFO">${raft_property} = Follower</msg>
<var>${raft_property}</var>
<arg>${value}</arg>
<arg>${property}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:02:10.309317" elapsed="0.000230"/>
</kw>
<return>
<value>${raft_property}</value>
<status status="PASS" start="2026-04-08T01:02:10.309593" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T01:02:10.309744" level="INFO">${raft_state} = Follower</msg>
<var>${raft_state}</var>
<arg>RaftState</arg>
<arg>${shard_name}</arg>
<arg>${shard_type}</arg>
<arg>${member_index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft property.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T01:02:10.046726" elapsed="0.263043"/>
</kw>
<return>
<value>${raft_state}</value>
<status status="PASS" start="2026-04-08T01:02:10.309825" elapsed="0.000026"/>
</return>
<msg time="2026-04-08T01:02:10.309970" level="INFO">${raft_state} = Follower</msg>
<var>${raft_state}</var>
<arg>shard_name=${shard_name}</arg>
<arg>shard_type=${ds_type}</arg>
<arg>member_index=${index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft status.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T01:02:10.046002" elapsed="0.263993"/>
</kw>
<if>
<branch type="IF" condition="'Follower' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${follower_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-08T01:02:10.310381" elapsed="0.000192"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:10.310075" elapsed="0.000538"/>
</branch>
<branch type="ELSE IF" condition="'Leader' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${leader_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:10.310784" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:10.310637" elapsed="0.000201"/>
</branch>
<branch type="ELSE IF" condition="${validate}">
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized Raft state: ${raft_state}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:10.311004" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:10.310861" elapsed="0.000194"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:10.310058" elapsed="0.001019"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T01:02:10.045834" elapsed="0.265266"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-08T01:02:09.492983" elapsed="0.818149"/>
</for>
<return>
<value>${leader_list}</value>
<value>${follower_list}</value>
<status status="PASS" start="2026-04-08T01:02:10.311189" elapsed="0.000027"/>
</return>
<msg time="2026-04-08T01:02:10.311388" level="INFO">${leader_list} = [1]</msg>
<msg time="2026-04-08T01:02:10.311435" level="INFO">${follower_list} = [2, 3]</msg>
<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="PASS" start="2026-04-08T01:02:09.488898" elapsed="0.822560"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T01:02:10.311913" level="INFO">Length is 1.</msg>
<msg time="2026-04-08T01:02:10.311993" level="INFO">${leader_count} = 1</msg>
<var>${leader_count}</var>
<arg>${leader_list}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T01:02:10.311634" elapsed="0.000382"/>
</kw>
<if>
<branch type="IF" condition="${leader_count} &lt; 1">
<kw name="Fail" owner="BuiltIn">
<arg>No leader found.</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:10.312316" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:10.312084" elapsed="0.000286"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:10.312067" elapsed="0.000325"/>
</if>
<kw name="Length Should Be" owner="BuiltIn">
<msg time="2026-04-08T01:02:10.314616" level="INFO">Length is 1.</msg>
<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="PASS" start="2026-04-08T01:02:10.312530" elapsed="0.002133"/>
</kw>
<kw name="Get From List" owner="Collections">
<msg time="2026-04-08T01:02:10.315012" level="INFO">${leader} = 1</msg>
<var>${leader}</var>
<arg>${leader_list}</arg>
<arg>0</arg>
<doc>Returns the value specified with an ``index`` from ``list``.</doc>
<status status="PASS" start="2026-04-08T01:02:10.314829" elapsed="0.000208"/>
</kw>
<return>
<value>${leader}</value>
<value>${follower_list}</value>
<status status="PASS" start="2026-04-08T01:02:10.315083" elapsed="0.000027"/>
</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="PASS" start="2026-04-08T01:02:09.486303" elapsed="0.828948"/>
</kw>
<var name="${shard_name}">topology</var>
<status status="PASS" start="2026-04-08T01:02:09.486065" elapsed="0.829233"/>
</iter>
<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-04-08T01:02:10.319717" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:02:10.319318" elapsed="0.000428"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:02:10.320279" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:02:10.319957" elapsed="0.000349"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T01:02:10.320350" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T01:02:10.320501" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T01:02:10.318933" elapsed="0.001593"/>
</kw>
<kw name="Sort List" owner="Collections">
<arg>${index_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="PASS" start="2026-04-08T01:02:10.320681" elapsed="0.000151"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:02:10.321345" level="INFO">${ds_type} = config</msg>
<var>${ds_type}</var>
<arg>'${shard_type}' != 'config'</arg>
<arg>operational</arg>
<arg>config</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:02:10.320998" elapsed="0.000373"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:02:10.321766" level="INFO">${leader_list} = []</msg>
<var>${leader_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:02:10.321530" elapsed="0.000262"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:02:10.322191" level="INFO">${follower_list} = []</msg>
<var>${follower_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:02:10.321942" elapsed="0.000277"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_Raft_State_Of_Shard_At_Member" owner="ClusterManagement">
<kw name="Get_Raft_Property_From_Shard_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:02:10.324648" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:02:10.324325" elapsed="0.000350"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T01:02:10.324721" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T01:02:10.324866" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T01:02:10.323963" elapsed="0.000928"/>
</kw>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Get_As_Json_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:02:10.412400" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:02:10.412013" elapsed="0.000415"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T01:02:10.413182" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T01:02:10.412926" elapsed="0.000331">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-08T01:02:10.413349" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T01:02:10.412593" elapsed="0.000781"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:02:10.413916" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:02:10.413539" elapsed="0.000403"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T01:02:10.414257" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-08T01:02:10.414411" level="INFO">${template} = /rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T01:02:10.414105" elapsed="0.000332"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:02:10.414836" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:02:10.414594" elapsed="0.000287"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:02:10.415848" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:02:10.415579" elapsed="0.000314"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-08T01:02:10.416341" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-08T01:02:10.416058" elapsed="0.000308"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:10.416682" elapsed="0.000021"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:10.416882" elapsed="0.000023"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:10.417062" elapsed="0.000020"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-08T01:02:10.416546" elapsed="0.000632"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-08T01:02:10.416413" elapsed="0.000797"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-08T01:02:10.417252" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T01:02:10.417410" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-08T01:02:10.415258" elapsed="0.002178"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:10.414951" elapsed="0.002517"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:10.417641" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:10.417492" elapsed="0.000205"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:10.414931" elapsed="0.002786"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:02:10.418300" level="INFO">${final_text} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:02:10.417860" elapsed="0.000468"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T01:02:10.418376" elapsed="0.000028"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="PASS" start="2026-04-08T01:02:10.411386" elapsed="0.007112"/>
</kw>
<msg time="2026-04-08T01:02:10.418551" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:02:10.398623" elapsed="0.020007"/>
</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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:10.431579" elapsed="0.000041"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:10.444229" elapsed="0.000041"/>
</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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:10.456944" elapsed="0.000041"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:10.457746" elapsed="0.000037"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:10.458531" elapsed="0.000037"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:10.459087" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:10.458937" elapsed="0.000206"/>
</branch>
<status status="NOT RUN" start="2026-04-08T01:02:10.458921" elapsed="0.000260"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:10.459344" elapsed="0.000022"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:10.459536" elapsed="0.000020"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:10.459736" elapsed="0.000022"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-08T01:02:10.458872" elapsed="0.000940"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-08T01:02:10.458650" elapsed="0.001202"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:10.460585" elapsed="0.000036"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-08T01:02:10.460737" elapsed="0.000048"/>
</return>
<msg time="2026-04-08T01:02:10.460955" level="INFO">${uri} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-08T01:02:10.392349" elapsed="0.068715"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T01:02:10.463935" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T01:02:10.463685" elapsed="0.000313">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-08T01:02:10.464204" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T01:02:10.463223" elapsed="0.001027"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:10.464762" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:10.464382" elapsed="0.000447"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:02:10.465442" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:02:10.465130" elapsed="0.000338"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:10.464869" elapsed="0.000646"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:10.464331" elapsed="0.001223"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:02:10.468786" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:02:10.466407" elapsed="0.002425"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-08T01:02:10.468910" elapsed="0.000063"/>
</return>
<msg time="2026-04-08T01:02:10.469357" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T01:02:10.462054" elapsed="0.007410"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T01:02:10.472260" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T01:02:10.472006" elapsed="0.000318">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-08T01:02:10.472510" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T01:02:10.471561" elapsed="0.000993"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-08T01:02:10.472932" elapsed="0.000080"/>
</return>
<status status="PASS" start="2026-04-08T01:02:10.472684" elapsed="0.000394"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:10.472634" elapsed="0.000482"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:10.473866" elapsed="0.000036"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:10.474843" elapsed="0.000036"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-08T01:02:10.474957" elapsed="0.000047"/>
</return>
<msg time="2026-04-08T01:02:10.477233" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T01:02:10.470458" elapsed="0.006891"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:02:10.481281" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:02:10.480883" elapsed="0.000496"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:02:10.482480" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:02:10.482084" elapsed="0.000492"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T01:02:10.493554" level="INFO">GET Request : url=http://10.30.170.48:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 path_url=/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01s3bfo0y24i1es90l47mavglv0.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T01:02:10.493971" level="INFO">GET Response : url=http://10.30.170.48:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Transfer-Encoding': 'chunked'} 
 body={"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","encrypted-passwords","hidden-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-private-keys","asymmetrically-encrypted-value-format","cleartext-private-keys","cms-encrypted-data-format","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["client-ident-hostbased","ssh-client-keepalives","client-ident-password","client-ident-publickey"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-ex... (set the log level to DEBUG or TRACE to see the full content) 
 </msg>
<msg time="2026-04-08T01:02:10.494206" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T01:02:10.484965" elapsed="0.009270"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:10.482702" elapsed="0.011589"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:10.494581" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:10.494336" elapsed="0.000320"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:10.482652" elapsed="0.012040"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:02:10.499045" level="INFO">{"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","encrypted-passwords","hidden-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-private-keys","asymmetrically-encrypted-value-format","cleartext-private-keys","cms-encrypted-data-format","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["client-ident-hostbased","ssh-client-keepalives","client-ident-password","client-ident-publickey"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-experimenter-types?revision=2015-10-20","namespace":"urn:opendaylight:openflowplugin:experimenter:types","conformance-type":"import"},{"name":"ietf-ip_2018-02-22","revision":"2018-02-22","schema":"/rests/modules/ietf-ip?revision=2018-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-ip","conformance-type":"import","feature":["ipv6-privacy-autoconf","ipv4-non-contiguous-netmasks"]},{"name":"ietf-tcp-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-client","conformance-type":"import","feature":["local-binding-supported","tcp-client-keepalives"]},{"name":"node-config_2014-10-15","revision":"2014-10-15","schema":"/rests/modules/node-config?revision=2014-10-15","namespace":"urn:opendaylight:module:config","conformance-type":"import"},{"name":"ietf-restconf_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf","conformance-type":"import"},{"name":"ietf-datastores_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-datastores?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-datastores","conformance-type":"import"},{"name":"ietf-yang-patch_2017-02-22","revision":"2017-02-22","schema":"/rests/modules/ietf-yang-patch?revision=2017-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-patch","conformance-type":"import"},{"name":"sal-group_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-group?revision=2013-09-18","namespace":"urn:opendaylight:group:service","conformance-type":"import"},{"name":"odl-codegen-extensions_2024-06-27","revision":"2024-06-27","schema":"/rests/modules/odl-codegen-extensions?revision=2024-06-27","namespace":"urn:opendaylight:yang:extension:codegen","conformance-type":"import"},{"name":"sal-meter_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-meter?revision=2013-09-18","namespace":"urn:opendaylight:meter:service","conformance-type":"import"},{"name":"ietf-interfaces_2018-02-20","revision":"2018-02-20","schema":"/rests/modules/ietf-interfaces?revision=2018-02-20","namespace":"urn:ietf:params:xml:ns:yang:ietf-interfaces","conformance-type":"import","feature":["pre-provisioning","if-mib","arbitrary-names"]},{"name":"opendaylight-l2-types_2013-08-27","revision":"2013-08-27","schema":"/rests/modules/opendaylight-l2-types?revision=2013-08-27","namespace":"urn:opendaylight:l2:types","conformance-type":"import"},{"name":"opendaylight-flow-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-flow-types?revision=2013-10-26","namespace":"urn:opendaylight:flow:types","conformance-type":"import"},{"name":"lldp-speaker-config_2016-05-12","revision":"2016-05-12","schema":"/rests/modules/lldp-speaker-config?revision=2016-05-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker:config","conformance-type":"import"},{"name":"aaa-cert_2015-11-26","revision":"2015-11-26","schema":"/rests/modules/aaa-cert?revision=2015-11-26","namespace":"urn:opendaylight:yang:aaa:cert","conformance-type":"import"},{"name":"openflow-action_2015-02-03","revision":"2015-02-03","schema":"/rests/modules/openflow-action?revision=2015-02-03","namespace":"urn:opendaylight:openflow:common:action","conformance-type":"import"},{"name":"openflow-approved-extensions_2016-08-02","revision":"2016-08-02","schema":"/rests/modules/openflow-approved-extensions?revision=2016-08-02","namespace":"urn:opendaylight:openflow:approved:extensions","conformance-type":"import"},{"name":"nc-notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/nc-notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netmod:notification","conformance-type":"import"},{"name":"ietf-netconf-nmda_2019-01-07","revision":"2019-01-07","schema":"/rests/modules/ietf-netconf-nmda?revision=2019-01-07","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-nmda","conformance-type":"import","feature":["with-defaults","origin"]},{"name":"ietf-tcp-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-common","conformance-type":"import","feature":["keepalives-supported"]},{"name":"network-topology_2013-10-21","revision":"2013-10-21","schema":"/rests/modules/network-topology?revision=2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:network-topology","conformance-type":"import"},{"name":"aaa-encrypt-service-config_2024-02-02","revision":"2024-02-02","schema":"/rests/modules/aaa-encrypt-service-config?revision=2024-02-02","namespace":"config:aaa:authn:encrypt:service:config","conformance-type":"import"},{"name":"openflow-instruction_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-instruction?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:instruction","conformance-type":"import"},{"name":"ietf-tls-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-client","conformance-type":"import","feature":["client-ident-x509-cert","server-auth-x509-cert"]},{"name":"opendaylight-group-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-group-statistics?revision=2013-11-11","namespace":"urn:opendaylight:group:statistics","conformance-type":"import"},{"name":"cluster-admin_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/cluster-admin?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:cluster:admin","conformance-type":"import"},{"name":"opendaylight-flow-statistics_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-flow-statistics?revision=2013-08-19","namespace":"urn:opendaylight:flow:statistics","conformance-type":"import"},{"name":"opendaylight-table-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-table-types?revision=2013-10-26","namespace":"urn:opendaylight:table:types","conformance-type":"import"},{"name":"forwarding-rules-manager-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/forwarding-rules-manager-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:forwardingrules-manager:config","conformance-type":"import"},{"name":"odl-srm-types_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-types?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:types","conformance-type":"import"},{"name":"ietf-x509-cert-to-name_2014-12-10","revision":"2014-12-10","schema":"/rests/modules/ietf-x509-cert-to-name?revision=2014-12-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-x509-cert-to-name","conformance-type":"import"},{"name":"flow-node-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-node-inventory?revision=2013-08-19","namespace":"urn:opendaylight:flow:inventory","conformance-type":"import"},{"name":"flow-errors_2013-11-16","revision":"2013-11-16","schema":"/rests/modules/flow-errors?revision=2013-11-16","namespace":"urn:opendaylight:flow:errors","conformance-type":"import"},{"name":"ietf-netconf_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:netconf:base:1.0","conformance-type":"import","feature":["xpath","url","rollback-on-error","validate","candidate","confirmed-commit","startup","writable-running"]},{"name":"iana-ssh-public-key-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-public-key-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-public-key-algs","conformance-type":"import"},{"name":"aaa-cert-mdsal_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/aaa-cert-mdsal?revision=2016-03-21","namespace":"urn:opendaylight:yang:aaa:cert:mdsal","conformance-type":"import"},{"name":"odl-device-notification_2024-02-18","revision":"2024-02-18","schema":"/rests/modules/odl-device-notification?revision=2024-02-18","namespace":"urn:opendaylight:device:notification","conformance-type":"import"},{"name":"ietf-origin_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-origin?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-origin","conformance-type":"import"},{"name":"openflow-augments_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-augments?revision=2015-02-25","namespace":"urn:opendaylight:openflow:augments","conformance-type":"import"},{"name":"iana-ssh-encryption-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-encryption-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-encryption-algs","conformance-type":"import"},{"name":"ietf-truststore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-truststore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-truststore","conformance-type":"import","feature":["inline-definitions-supported"]},{"name":"distributed-datastore-provider_2025-01-30","revision":"2025-01-30","schema":"/rests/modules/distributed-datastore-provider?revision=2025-01-30","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:distributed-datastore-provider","conformance-type":"import"},{"name":"opendaylight-group-types_2013-10-18","revision":"2013-10-18","schema":"/rests/modules/opendaylight-group-types?revision=2013-10-18","namespace":"urn:opendaylight:group:types","conformance-type":"import"},{"name":"sal-remote-augment_2023-11-03","revision":"2023-11-03","schema":"/rests/modules/sal-remote-augment?revision=2023-11-03","namespace":"urn:sal:restconf:event:subscription","conformance-type":"import"},{"name":"opendaylight-ipv6-arbitrary-bitmask-fields_2016-02-24","revision":"2016-02-24","schema":"/rests/modules/opendaylight-ipv6-arbitrary-bitmask-fields?revision=2016-02-24","namespace":"urn:opendaylight:opendaylight-ipv6-arbitrary-bitmask-fields","conformance-type":"import"},{"name":"sal-flows-batch_2016-03-14","revision":"2016-03-14","schema":"/rests/modules/sal-flows-batch?revision=2016-03-14","namespace":"urn:opendaylight:flows:service","conformance-type":"import"},{"name":"ietf-tls-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-common","conformance-type":"import","feature":["hello-params","tls12","tls13"]},{"name":"openflow-types_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-types?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:types","conformance-type":"import"},{"name":"ietf-netconf-with-defaults_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf-with-defaults?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults","conformance-type":"import"},{"name":"odl-srm-ops_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-ops?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:ops","conformance-type":"import"},{"name":"odl-general-entity_2015-09-30","revision":"2015-09-30","schema":"/rests/modules/odl-general-entity?revision=2015-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:mdsal:core:general-entity","conformance-type":"import"},{"name":"iana-ssh-key-exchange-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-key-exchange-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-key-exchange-algs","conformance-type":"import"},{"name":"node-ssl-connection-error_2019-07-23","revision":"2019-07-23","schema":"/rests/modules/node-ssl-connection-error?revision=2019-07-23","namespace":"urn:opendaylight:node-ssl-connection-error:service","conformance-type":"import"},{"name":"openflow-protocol_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-protocol?revision=2013-07-31","namespace":"urn:opendaylight:openflow:protocol","conformance-type":"import"},{"name":"ietf-udp-server_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-server?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-server","conformance-type":"import"},{"name":"ietf-keystore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-keystore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-keystore","conformance-type":"import","feature":["asymmetric-keys","inline-definitions-supported"]},{"name":"aaa_2016-12-14","revision":"2016-12-14","schema":"/rests/modules/aaa?revision=2016-12-14","namespace":"urn:opendaylight:params:xml:ns:yang:aaa","conformance-type":"import"},{"name":"aaa-cert-rpc_2015-12-15","revision":"2015-12-15","schema":"/rests/modules/aaa-cert-rpc?revision=2015-12-15","namespace":"urn:opendaylight:yang:aaa:cert:rpc","conformance-type":"import"},{"name":"system-notifications_2013-09-27","revision":"2013-09-27","schema":"/rests/modules/system-notifications?revision=2013-09-27","namespace":"urn:opendaylight:openflow:system","conformance-type":"import"},{"name":"sal-flat-batch_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/sal-flat-batch?revision=2016-03-21","namespace":"urn:opendaylight:flat-batch:service","conformance-type":"import"},{"name":"notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netconf:notification:1.0","conformance-type":"import"},{"name":"sal-remote_2014-01-14","revision":"2014-01-14","schema":"/rests/modules/sal-remote?revision=2014-01-14","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:remote","conformance-type":"import"},{"name":"yang-ext_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/yang-ext?revision=2013-07-09","namespace":"urn:opendaylight:yang:extension:yang-ext","conformance-type":"import"},{"name":"opendaylight-multipart-types_2017-01-12","revision":"2017-01-12","schema":"/rests/modules/opendaylight-multipart-types?revision=2017-01-12","namespace":"urn:opendaylight:multipart:types","conformance-type":"import"},{"name":"opendaylight-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-inventory?revision=2013-08-19","namespace":"urn:opendaylight:inventory","conformance-type":"import"},{"name":"sal-queue_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-queue?revision=2015-03-05","namespace":"urn:opendaylight:queue:service","conformance-type":"import"},{"name":"sal-groups-batch_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/sal-groups-batch?revision=2016-03-15","namespace":"urn:opendaylight:groups:service","conformance-type":"import"},{"name":"arbitrator-reconcile_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/arbitrator-reconcile?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:arbitrator-reconcile:service","conformance-type":"import"},{"name":"ietf-yang-metadata_2016-08-05","revision":"2016-08-05","schema":"/rests/modules/ietf-yang-metadata?revision=2016-08-05","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-metadata","conformance-type":"import"},{"name":"opendaylight-arbitrary-bitmask-fields_2016-01-30","revision":"2016-01-30","schema":"/rests/modules/opendaylight-arbitrary-bitmask-fields?revision=2016-01-30","namespace":"urn:opendaylight:arbitrary:bitmask:fields","conformance-type":"import"},{"name":"ietf-udp-client_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-client?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-client","conformance-type":"import","feature":["local-binding"]},{"name":"opendaylight-meter-types_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/opendaylight-meter-types?revision=2013-09-18","namespace":"urn:opendaylight:meter:types","conformance-type":"import"},{"name":"opendaylight-action-types_2013-11-12","revision":"2013-11-12","schema":"/rests/modules/opendaylight-action-types?revision=2013-11-12","namespace":"urn:opendaylight:action:types","conformance-type":"import"},{"name":"sal-role_2015-07-27","revision":"2015-07-27","schema":"/rests/modules/sal-role?revision=2015-07-27","namespace":"urn:opendaylight:role:service","conformance-type":"import"},{"name":"openflow-provider-config_2016-05-10","revision":"2016-05-10","schema":"/rests/modules/openflow-provider-config?revision=2016-05-10","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:provider:config","conformance-type":"import"},{"name":"odl-serviceutils-upgrade_2018-07-02","revision":"2018-07-02","schema":"/rests/modules/odl-serviceutils-upgrade?revision=2018-07-02","namespace":"urn:opendaylight:serviceutils:upgrade","conformance-type":"import"},{"name":"opendaylight-match-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-match-types?revision=2013-10-26","namespace":"urn:opendaylight:model:match:types","conformance-type":"import"},{"name":"ietf-restconf-server_2024-08-14","revision":"2024-08-14","schema":"/rests/modules/ietf-restconf-server?revision=2024-08-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-server","conformance-type":"import","feature":["http-listen","https-listen"]},{"name":"reconciliation-result-state_2017-07-13","revision":"2017-07-13","schema":"/rests/modules/reconciliation-result-state?revision=2017-07-13","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:rf:state","conformance-type":"import"},{"name":"onf-extensions_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/onf-extensions?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf","conformance-type":"import"},{"name":"sal-table_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/sal-table?revision=2013-10-26","namespace":"urn:opendaylight:table:service","conformance-type":"import"},{"name":"iana-http-versions_2026-02-04","revision":"2026-02-04","schema":"/rests/modules/iana-http-versions?revision=2026-02-04","namespace":"urn:ietf:params:xml:ns:yang:iana-http-versions","conformance-type":"import"},{"name":"opendaylight-direct-statistics_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/opendaylight-direct-statistics?revision=2016-05-11","namespace":"urn:opendaylight:direct:statistics","conformance-type":"import"},{"name":"opendaylight-port-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-port-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:port","conformance-type":"import"},{"name":"sal-async-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/sal-async-config?revision=2017-06-19","namespace":"urn:opendaylight:async-config:service","conformance-type":"import"},{"name":"aaa-password-service-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-password-service-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:password:service:config","conformance-type":"import"},{"name":"ietf-yang-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-yang-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-types","conformance-type":"import"},{"name":"opendaylight-queue-statistics_2013-12-16","revision":"2013-12-16","schema":"/rests/modules/opendaylight-queue-statistics?revision=2013-12-16","namespace":"urn:opendaylight:queue:statistics","conformance-type":"import"},{"name":"sal-bundle_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/sal-bundle?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf:bundle:service","conformance-type":"import"},{"name":"ietf-restconf-subscribed-notifications_2019-11-17","revision":"2019-11-17","schema":"/rests/modules/ietf-restconf-subscribed-notifications?revision=2019-11-17","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-subscribed-notifications","conformance-type":"import"},{"name":"sal-meters-batch_2016-03-16","revision":"2016-03-16","schema":"/rests/modules/sal-meters-batch?revision=2016-03-16","namespace":"urn:opendaylight:meters:service","conformance-type":"import"},{"name":"odl-entity-owners","revision":"","schema":"/rests/modules/odl-entity-owners","namespace":"urn:opendaylight:params:xml:ns:yang:controller:entity-owners","conformance-type":"import"},{"name":"sal-experimenter-mp-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-mp-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-mp-message:service","conformance-type":"import"},{"name":"packet-processing_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/packet-processing?revision=2013-07-09","namespace":"urn:opendaylight:packet:service","conformance-type":"import"},{"name":"openflow-configuration_2014-06-30","revision":"2014-06-30","schema":"/rests/modules/openflow-configuration?revision=2014-06-30","namespace":"urn:opendaylight:openflow:config","conformance-type":"import"},{"name":"odl-srm-rpcs_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-rpcs?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:rpc","conformance-type":"import"},{"name":"ietf-netconf-acm_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-netconf-acm?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-acm","conformance-type":"import"},{"name":"iana-crypt-hash_2014-08-06","revision":"2014-08-06","schema":"/rests/modules/iana-crypt-hash?revision=2014-08-06","namespace":"urn:ietf:params:xml:ns:yang:iana-crypt-hash","conformance-type":"import","feature":["crypt-hash-sha-512","crypt-hash-sha-256","crypt-hash-md5"]},{"name":"openflow-extensible-match_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-extensible-match?revision=2015-02-25","namespace":"urn:opendaylight:openflow:oxm","conformance-type":"import"}],"module-set-id":"2"}}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:02:10.496420" elapsed="0.002960"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:10.496193" elapsed="0.003223"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:10.496143" elapsed="0.003298"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:02:10.502056" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:02:10.499762" elapsed="0.002340"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:10.499521" elapsed="0.002615"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:10.499502" elapsed="0.002678"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:02:10.502745" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:02:10.502368" elapsed="0.000404"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:10.503103" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:10.502863" elapsed="0.000313"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:02:10.503685" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:02:10.503366" elapsed="0.000345"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:10.503201" elapsed="0.000546"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:10.502844" elapsed="0.000924"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:02:10.504326" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:02:10.503951" elapsed="0.000402"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:10.504682" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:10.504444" elapsed="0.000295"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:02:10.505244" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:02:10.504926" elapsed="0.000345"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:10.504762" elapsed="0.000544"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:10.504425" elapsed="0.000902"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:02:10.505498" elapsed="0.000349"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T01:02:10.506335" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:02:10.506031" elapsed="0.000330"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T01:02:10.506536" elapsed="0.002273"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T01:02:10.495435" elapsed="0.013495"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T01:02:10.509289" elapsed="0.000047"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:02:10.509057" elapsed="0.000342"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:10.509007" elapsed="0.000428"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T01:02:10.518701" level="INFO">${text_normalized} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T01:02:10.510245" elapsed="0.008505"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T01:02:10.518828" elapsed="0.000063"/>
</return>
<msg time="2026-04-08T01:02:10.519148" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T01:02:10.477993" elapsed="0.041282"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T01:02:10.519771" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T01:02:10.519955" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="PASS" start="2026-04-08T01:02:10.334652" elapsed="0.185330"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Json_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:10.520325" elapsed="0.000154"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:10.520068" elapsed="0.000585"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:10.520050" elapsed="0.000631"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T01:02:10.520716" elapsed="0.000028"/>
</return>
<arg>session=${session}</arg>
<arg>folder=${RESTCONF_MODULES_DIR}</arg>
<arg>verify=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Add arguments sensible for JSON data, return Get_Templated response text.
Optionally, verification against JSON data (may be iterated) is called.
Only subset of JSON data is verified and returned if JMES path is specified in
file ${folder}/jmespath.expr.</doc>
<status status="PASS" start="2026-04-08T01:02:10.330372" elapsed="0.190472"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:10.325009" elapsed="0.195877"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:10.324990" elapsed="0.195920"/>
</if>
<kw name="Resolve_Shard_Type_Class" owner="ClusterManagement">
<if>
<branch type="IF" condition="'${shard_type}' == 'config'">
<return>
<value>DistributedConfigDatastore</value>
<status status="PASS" start="2026-04-08T01:02:10.521536" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-08T01:02:10.521427" elapsed="0.000170"/>
</branch>
<branch type="ELSE IF" condition="'${shard_type}' == 'operational'">
<return>
<value>DistributedOperationalDatastore</value>
<status status="NOT RUN" start="2026-04-08T01:02:10.521658" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:02:10.521620" elapsed="0.000077"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:10.521408" elapsed="0.000311"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized shard type: ${shard_type}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:10.521868" elapsed="0.000021"/>
</kw>
<msg time="2026-04-08T01:02:10.521986" level="INFO">${type_class} = DistributedConfigDatastore</msg>
<var>${type_class}</var>
<arg>shard_type=${shard_type}</arg>
<doc>Simple lookup for class name corresponding to desired type.</doc>
<status status="PASS" start="2026-04-08T01:02:10.521136" elapsed="0.000875"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:02:10.522570" level="INFO">${cluster_index} = 1</msg>
<var>${cluster_index}</var>
<arg>${member_index}+${NODE_ROLE_INDEX_START}-1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:02:10.522199" elapsed="0.000397"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:02:10.523232" level="INFO">${uri} = jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-default-config,type=DistributedConfigDatastore</msg>
<var>${uri}</var>
<arg>${JOLOKIA_READ_URI}:Category=Shards,name=member-${cluster_index}-shard-${shard_name}-${shard_type},type=${type_class}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:02:10.522753" elapsed="0.000507"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:02:10.528951" level="INFO">jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-default-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:02:10.528516" elapsed="0.000483"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:02:10.529669" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:02:10.529237" elapsed="0.000476"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T01:02:10.549669" level="INFO">GET Request : url=http://10.30.170.48:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-default-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-default-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T01:02:10.549799" level="INFO">GET Response : url=http://10.30.170.48:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-default-config,type=DistributedConfigDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Wed, 08 Apr 2026 01:02:10 GMT', 'Expires': 'Wed, 08 Apr 2026 00:02:10 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-1-shard-default-config,type=DistributedConfigDatastore","type":"read"},"value":{"ReadWriteTransactionCount":15,"SnapshotIndex":183,"InMemoryJournalLogSize":1,"ReplicatedToAllIndex":183,"Leader":"member-1-shard-default-config","LastIndex":184,"RaftState":"Leader","LastApplied":184,"LastCommittedTransactionTime":"1970-01-01 00:00:00.000","PeerAddresses":"member-3-shard-default-config: pekko:\/\/opendaylight-cluster-data@10.30.171.110:2550\/user\/shardmanager-config\/member-3-shard-default-config, member-2-shard-default-config: pekko:\/\/opendaylight-cluster-data@10.30.170.131:2550\/user\/shardmanager-config\/member-2-shard-default-config","LastLogIndex":184,"LastLeadershipChangeTime":"2026-04-08 00:57:11.158","FollowerInitialSyncStatus":false,"FollowerInfo":[{"timeSinceLastActivity":"00:00:00.472","active":true,"matchIndex":184,"voting":true,"id":"member-3-shard-default-config","nextIndex":185},{"timeSinceLastActivity":"00:00:00.473","active":true,"matchIndex":184,"voting":true,"id":"member-2-shard-default-config","nextIndex":185}],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"1.069 ms","CurrentTerm":4,"LastTerm":4,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-default-config","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":0,"TxCohortCacheSize":0,"PeerVotingStates":"member-3-shard-default-config: true, member-2-shard-default-config: true","LastLogTerm":4,"StatRetrievalError":null,"CommitIndex":184,"SnapshotTerm":4,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":18,"ShardName":"member-1-shard-default-config","LeadershipChangeCount":1,"InMemoryJournalDataSize":14735},"timestamp":1775610130,"status":200} 
 </msg>
<msg time="2026-04-08T01:02:10.549987" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T01:02:10.541031" elapsed="0.009062"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:10.529781" elapsed="0.020613"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:10.550580" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:10.550424" elapsed="0.000473"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:10.529763" elapsed="0.021159"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:02:10.555719" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-1-shard-default-config,type=DistributedConfigDatastore","type":"read"},"value":{"ReadWriteTransactionCount":15,"SnapshotIndex":183,"InMemoryJournalLogSize":1,"ReplicatedToAllIndex":183,"Leader":"member-1-shard-default-config","LastIndex":184,"RaftState":"Leader","LastApplied":184,"LastCommittedTransactionTime":"1970-01-01 00:00:00.000","PeerAddresses":"member-3-shard-default-config: pekko:\/\/opendaylight-cluster-data@10.30.171.110:2550\/user\/shardmanager-config\/member-3-shard-default-config, member-2-shard-default-config: pekko:\/\/opendaylight-cluster-data@10.30.170.131:2550\/user\/shardmanager-config\/member-2-shard-default-config","LastLogIndex":184,"LastLeadershipChangeTime":"2026-04-08 00:57:11.158","FollowerInitialSyncStatus":false,"FollowerInfo":[{"timeSinceLastActivity":"00:00:00.472","active":true,"matchIndex":184,"voting":true,"id":"member-3-shard-default-config","nextIndex":185},{"timeSinceLastActivity":"00:00:00.473","active":true,"matchIndex":184,"voting":true,"id":"member-2-shard-default-config","nextIndex":185}],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"1.069 ms","CurrentTerm":4,"LastTerm":4,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-default-config","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":0,"TxCohortCacheSize":0,"PeerVotingStates":"member-3-shard-default-config: true, member-2-shard-default-config: true","LastLogTerm":4,"StatRetrievalError":null,"CommitIndex":184,"SnapshotTerm":4,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":18,"ShardName":"member-1-shard-default-config","LeadershipChangeCount":1,"InMemoryJournalDataSize":14735},"timestamp":1775610130,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:02:10.553108" elapsed="0.002721"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:10.552240" elapsed="0.003639"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:10.552220" elapsed="0.003698"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:02:10.559286" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:02:10.556914" elapsed="0.002472"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:10.556001" elapsed="0.003433"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:10.555983" elapsed="0.003488"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:02:10.560957" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:02:10.560150" elapsed="0.000868"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:10.561670" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:10.561199" elapsed="0.000559"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:02:10.562644" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:02:10.562127" elapsed="0.000563"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:10.561795" elapsed="0.000947"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:10.561178" elapsed="0.001599"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:02:10.564341" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:02:10.563435" elapsed="0.000969"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:10.565037" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:10.564570" elapsed="0.000554"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:02:10.566007" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:02:10.565510" elapsed="0.000543"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:10.565175" elapsed="0.000929"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:10.564550" elapsed="0.001589"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:02:10.566378" elapsed="0.000620"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T01:02:10.567819" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:02:10.567323" elapsed="0.000556"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T01:02:10.568233" elapsed="0.002380"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T01:02:10.551519" elapsed="0.019252"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T01:02:10.570977" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:02:10.570844" elapsed="0.000178"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:10.570825" elapsed="0.000219"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T01:02:10.574891" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-1-shard-default-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 17756101...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T01:02:10.571209" elapsed="0.003712"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T01:02:10.574973" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T01:02:10.575188" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-1-shard-default-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 17756101...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T01:02:10.524230" elapsed="0.050987"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T01:02:10.575276" elapsed="0.000027"/>
</return>
<msg time="2026-04-08T01:02:10.575424" level="INFO">${data_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-1-shard-default-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 17756101...</msg>
<var>${data_text}</var>
<arg>uri=${uri}</arg>
<arg>session=${session}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-08T01:02:10.523474" elapsed="0.051977"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:02:10.576627" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-1-shard-default-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1775610130, 'value'...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:02:10.576033" elapsed="0.000623"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-08T01:02:10.576706" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T01:02:10.576880" level="INFO">${data_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-1-shard-default-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1775610130, 'value'...</msg>
<var>${data_object}</var>
<arg>${data_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-08T01:02:10.575688" elapsed="0.001219"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:02:10.577283" level="INFO">${value} = {'AbortTransactionsCount': 0, 'CommitIndex': 184, 'CommittedTransactionsCount': 0, 'CurrentTerm': 4, 'FailedReadTransactionsCount': 0, 'FailedTransactionsCount': 0, 'FollowerInfo': [{'active': True, '...</msg>
<var>${value}</var>
<arg>${data_object}</arg>
<arg>value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:02:10.577064" elapsed="0.000246"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:02:10.577666" level="INFO">${raft_property} = Leader</msg>
<var>${raft_property}</var>
<arg>${value}</arg>
<arg>${property}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:02:10.577467" elapsed="0.000225"/>
</kw>
<return>
<value>${raft_property}</value>
<status status="PASS" start="2026-04-08T01:02:10.577738" elapsed="0.000027"/>
</return>
<msg time="2026-04-08T01:02:10.577886" level="INFO">${raft_state} = Leader</msg>
<var>${raft_state}</var>
<arg>RaftState</arg>
<arg>${shard_name}</arg>
<arg>${shard_type}</arg>
<arg>${member_index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft property.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T01:02:10.323352" elapsed="0.254558"/>
</kw>
<return>
<value>${raft_state}</value>
<status status="PASS" start="2026-04-08T01:02:10.577971" elapsed="0.000026"/>
</return>
<msg time="2026-04-08T01:02:10.578114" level="INFO">${raft_state} = Leader</msg>
<var>${raft_state}</var>
<arg>shard_name=${shard_name}</arg>
<arg>shard_type=${ds_type}</arg>
<arg>member_index=${index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft status.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T01:02:10.322634" elapsed="0.255504"/>
</kw>
<if>
<branch type="IF" condition="'Follower' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${follower_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:10.578449" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:10.578234" elapsed="0.000272"/>
</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="PASS" start="2026-04-08T01:02:10.578738" elapsed="0.000185"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:10.578530" elapsed="0.000430"/>
</branch>
<branch type="ELSE IF" condition="${validate}">
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized Raft state: ${raft_state}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:10.579130" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:10.578984" elapsed="0.000213"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:10.578215" elapsed="0.001006"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T01:02:10.322469" elapsed="0.256775"/>
</iter>
<iter>
<kw name="Get_Raft_State_Of_Shard_At_Member" owner="ClusterManagement">
<kw name="Get_Raft_Property_From_Shard_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:02:10.581612" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:02:10.581288" elapsed="0.000351"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T01:02:10.581684" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T01:02:10.581831" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T01:02:10.580927" elapsed="0.000929"/>
</kw>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Get_As_Json_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:02:10.668046" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:02:10.667651" elapsed="0.000430"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T01:02:10.668863" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T01:02:10.668644" elapsed="0.000286">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-08T01:02:10.669022" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T01:02:10.668268" elapsed="0.000779"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:02:10.669609" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:02:10.669227" elapsed="0.000409"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T01:02:10.669930" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-08T01:02:10.670063" level="INFO">${template} = /rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T01:02:10.669796" elapsed="0.000292"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:02:10.670503" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:02:10.670259" elapsed="0.000288"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:02:10.671488" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:02:10.671235" elapsed="0.000320"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-08T01:02:10.671976" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-08T01:02:10.671716" elapsed="0.000286"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:10.672333" elapsed="0.000021"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:10.672543" elapsed="0.000024"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:10.672715" elapsed="0.000020"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-08T01:02:10.672198" elapsed="0.000572"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-08T01:02:10.672049" elapsed="0.000750"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-08T01:02:10.672841" elapsed="0.000027"/>
</return>
<msg time="2026-04-08T01:02:10.672995" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-08T01:02:10.670899" elapsed="0.002121"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:10.670613" elapsed="0.002438"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:10.673237" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:10.673075" elapsed="0.000216"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:10.670595" elapsed="0.002717"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:02:10.673871" level="INFO">${final_text} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:02:10.673453" elapsed="0.000446"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T01:02:10.673945" elapsed="0.000028"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="PASS" start="2026-04-08T01:02:10.667014" elapsed="0.007051"/>
</kw>
<msg time="2026-04-08T01:02:10.674116" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:02:10.654494" elapsed="0.019723"/>
</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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:10.686949" elapsed="0.000045"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:10.699686" elapsed="0.000041"/>
</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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:10.712214" elapsed="0.000041"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:10.712989" elapsed="0.000035"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:10.713767" elapsed="0.000036"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:10.714332" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:10.714185" elapsed="0.000204"/>
</branch>
<status status="NOT RUN" start="2026-04-08T01:02:10.714167" elapsed="0.000245"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:10.714573" elapsed="0.000021"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:10.714759" elapsed="0.000021"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:10.714944" elapsed="0.000021"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-08T01:02:10.714105" elapsed="0.000913"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-08T01:02:10.713884" elapsed="0.001173"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:10.715799" elapsed="0.000035"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-08T01:02:10.715918" elapsed="0.000052"/>
</return>
<msg time="2026-04-08T01:02:10.716141" level="INFO">${uri} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-08T01:02:10.648112" elapsed="0.068152"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T01:02:10.719058" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T01:02:10.718818" elapsed="0.000303">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-08T01:02:10.719322" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T01:02:10.718383" elapsed="0.000984"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:10.719900" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:10.719498" elapsed="0.000473"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:02:10.720580" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:02:10.720288" elapsed="0.000319"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:10.720010" elapsed="0.000655"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:10.719446" elapsed="0.001259"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:02:10.723986" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:02:10.721614" elapsed="0.002417"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-08T01:02:10.724106" elapsed="0.000076"/>
</return>
<msg time="2026-04-08T01:02:10.724432" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T01:02:10.717257" elapsed="0.007279"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T01:02:10.727556" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T01:02:10.727289" elapsed="0.000331">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-08T01:02:10.727808" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T01:02:10.726839" elapsed="0.001014"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-08T01:02:10.728290" elapsed="0.000080"/>
</return>
<status status="PASS" start="2026-04-08T01:02:10.728000" elapsed="0.000437"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:10.727938" elapsed="0.000538"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:10.729306" elapsed="0.000037"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:10.730066" elapsed="0.000036"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-08T01:02:10.730189" elapsed="0.000049"/>
</return>
<msg time="2026-04-08T01:02:10.732435" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T01:02:10.725501" elapsed="0.007043"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:02:10.736379" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:02:10.735980" elapsed="0.000498"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:02:10.737722" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:02:10.737342" elapsed="0.000475"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T01:02:10.759241" level="INFO">GET Request : url=http://10.30.170.131:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 path_url=/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01l7fnm4ypo6vn14692wsih5mir0.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T01:02:10.759665" level="INFO">GET Response : url=http://10.30.170.131:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Transfer-Encoding': 'chunked'} 
 body={"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","encrypted-passwords","hidden-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-private-keys","asymmetrically-encrypted-value-format","cleartext-private-keys","cms-encrypted-data-format","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["client-ident-hostbased","ssh-client-keepalives","client-ident-password","client-ident-publickey"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-ex... (set the log level to DEBUG or TRACE to see the full content) 
 </msg>
<msg time="2026-04-08T01:02:10.759863" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T01:02:10.740117" elapsed="0.019772"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:10.737944" elapsed="0.022001"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:10.760361" elapsed="0.000027"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:10.759994" elapsed="0.000447"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:10.737894" elapsed="0.022583"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:02:10.764794" level="INFO">{"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","encrypted-passwords","hidden-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-private-keys","asymmetrically-encrypted-value-format","cleartext-private-keys","cms-encrypted-data-format","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["client-ident-hostbased","ssh-client-keepalives","client-ident-password","client-ident-publickey"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-experimenter-types?revision=2015-10-20","namespace":"urn:opendaylight:openflowplugin:experimenter:types","conformance-type":"import"},{"name":"ietf-ip_2018-02-22","revision":"2018-02-22","schema":"/rests/modules/ietf-ip?revision=2018-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-ip","conformance-type":"import","feature":["ipv6-privacy-autoconf","ipv4-non-contiguous-netmasks"]},{"name":"ietf-tcp-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-client","conformance-type":"import","feature":["local-binding-supported","tcp-client-keepalives"]},{"name":"node-config_2014-10-15","revision":"2014-10-15","schema":"/rests/modules/node-config?revision=2014-10-15","namespace":"urn:opendaylight:module:config","conformance-type":"import"},{"name":"ietf-restconf_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf","conformance-type":"import"},{"name":"ietf-datastores_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-datastores?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-datastores","conformance-type":"import"},{"name":"ietf-yang-patch_2017-02-22","revision":"2017-02-22","schema":"/rests/modules/ietf-yang-patch?revision=2017-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-patch","conformance-type":"import"},{"name":"sal-group_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-group?revision=2013-09-18","namespace":"urn:opendaylight:group:service","conformance-type":"import"},{"name":"odl-codegen-extensions_2024-06-27","revision":"2024-06-27","schema":"/rests/modules/odl-codegen-extensions?revision=2024-06-27","namespace":"urn:opendaylight:yang:extension:codegen","conformance-type":"import"},{"name":"sal-meter_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-meter?revision=2013-09-18","namespace":"urn:opendaylight:meter:service","conformance-type":"import"},{"name":"ietf-interfaces_2018-02-20","revision":"2018-02-20","schema":"/rests/modules/ietf-interfaces?revision=2018-02-20","namespace":"urn:ietf:params:xml:ns:yang:ietf-interfaces","conformance-type":"import","feature":["pre-provisioning","if-mib","arbitrary-names"]},{"name":"opendaylight-l2-types_2013-08-27","revision":"2013-08-27","schema":"/rests/modules/opendaylight-l2-types?revision=2013-08-27","namespace":"urn:opendaylight:l2:types","conformance-type":"import"},{"name":"opendaylight-flow-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-flow-types?revision=2013-10-26","namespace":"urn:opendaylight:flow:types","conformance-type":"import"},{"name":"lldp-speaker-config_2016-05-12","revision":"2016-05-12","schema":"/rests/modules/lldp-speaker-config?revision=2016-05-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker:config","conformance-type":"import"},{"name":"aaa-cert_2015-11-26","revision":"2015-11-26","schema":"/rests/modules/aaa-cert?revision=2015-11-26","namespace":"urn:opendaylight:yang:aaa:cert","conformance-type":"import"},{"name":"openflow-action_2015-02-03","revision":"2015-02-03","schema":"/rests/modules/openflow-action?revision=2015-02-03","namespace":"urn:opendaylight:openflow:common:action","conformance-type":"import"},{"name":"openflow-approved-extensions_2016-08-02","revision":"2016-08-02","schema":"/rests/modules/openflow-approved-extensions?revision=2016-08-02","namespace":"urn:opendaylight:openflow:approved:extensions","conformance-type":"import"},{"name":"nc-notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/nc-notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netmod:notification","conformance-type":"import"},{"name":"ietf-netconf-nmda_2019-01-07","revision":"2019-01-07","schema":"/rests/modules/ietf-netconf-nmda?revision=2019-01-07","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-nmda","conformance-type":"import","feature":["with-defaults","origin"]},{"name":"ietf-tcp-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-common","conformance-type":"import","feature":["keepalives-supported"]},{"name":"network-topology_2013-10-21","revision":"2013-10-21","schema":"/rests/modules/network-topology?revision=2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:network-topology","conformance-type":"import"},{"name":"aaa-encrypt-service-config_2024-02-02","revision":"2024-02-02","schema":"/rests/modules/aaa-encrypt-service-config?revision=2024-02-02","namespace":"config:aaa:authn:encrypt:service:config","conformance-type":"import"},{"name":"openflow-instruction_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-instruction?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:instruction","conformance-type":"import"},{"name":"ietf-tls-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-client","conformance-type":"import","feature":["client-ident-x509-cert","server-auth-x509-cert"]},{"name":"opendaylight-group-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-group-statistics?revision=2013-11-11","namespace":"urn:opendaylight:group:statistics","conformance-type":"import"},{"name":"cluster-admin_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/cluster-admin?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:cluster:admin","conformance-type":"import"},{"name":"opendaylight-flow-statistics_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-flow-statistics?revision=2013-08-19","namespace":"urn:opendaylight:flow:statistics","conformance-type":"import"},{"name":"opendaylight-table-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-table-types?revision=2013-10-26","namespace":"urn:opendaylight:table:types","conformance-type":"import"},{"name":"forwarding-rules-manager-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/forwarding-rules-manager-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:forwardingrules-manager:config","conformance-type":"import"},{"name":"odl-srm-types_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-types?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:types","conformance-type":"import"},{"name":"ietf-x509-cert-to-name_2014-12-10","revision":"2014-12-10","schema":"/rests/modules/ietf-x509-cert-to-name?revision=2014-12-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-x509-cert-to-name","conformance-type":"import"},{"name":"flow-node-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-node-inventory?revision=2013-08-19","namespace":"urn:opendaylight:flow:inventory","conformance-type":"import"},{"name":"flow-errors_2013-11-16","revision":"2013-11-16","schema":"/rests/modules/flow-errors?revision=2013-11-16","namespace":"urn:opendaylight:flow:errors","conformance-type":"import"},{"name":"ietf-netconf_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:netconf:base:1.0","conformance-type":"import","feature":["xpath","url","rollback-on-error","validate","candidate","confirmed-commit","startup","writable-running"]},{"name":"iana-ssh-public-key-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-public-key-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-public-key-algs","conformance-type":"import"},{"name":"aaa-cert-mdsal_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/aaa-cert-mdsal?revision=2016-03-21","namespace":"urn:opendaylight:yang:aaa:cert:mdsal","conformance-type":"import"},{"name":"odl-device-notification_2024-02-18","revision":"2024-02-18","schema":"/rests/modules/odl-device-notification?revision=2024-02-18","namespace":"urn:opendaylight:device:notification","conformance-type":"import"},{"name":"ietf-origin_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-origin?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-origin","conformance-type":"import"},{"name":"openflow-augments_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-augments?revision=2015-02-25","namespace":"urn:opendaylight:openflow:augments","conformance-type":"import"},{"name":"iana-ssh-encryption-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-encryption-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-encryption-algs","conformance-type":"import"},{"name":"ietf-truststore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-truststore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-truststore","conformance-type":"import","feature":["inline-definitions-supported"]},{"name":"distributed-datastore-provider_2025-01-30","revision":"2025-01-30","schema":"/rests/modules/distributed-datastore-provider?revision=2025-01-30","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:distributed-datastore-provider","conformance-type":"import"},{"name":"opendaylight-group-types_2013-10-18","revision":"2013-10-18","schema":"/rests/modules/opendaylight-group-types?revision=2013-10-18","namespace":"urn:opendaylight:group:types","conformance-type":"import"},{"name":"sal-remote-augment_2023-11-03","revision":"2023-11-03","schema":"/rests/modules/sal-remote-augment?revision=2023-11-03","namespace":"urn:sal:restconf:event:subscription","conformance-type":"import"},{"name":"opendaylight-ipv6-arbitrary-bitmask-fields_2016-02-24","revision":"2016-02-24","schema":"/rests/modules/opendaylight-ipv6-arbitrary-bitmask-fields?revision=2016-02-24","namespace":"urn:opendaylight:opendaylight-ipv6-arbitrary-bitmask-fields","conformance-type":"import"},{"name":"sal-flows-batch_2016-03-14","revision":"2016-03-14","schema":"/rests/modules/sal-flows-batch?revision=2016-03-14","namespace":"urn:opendaylight:flows:service","conformance-type":"import"},{"name":"ietf-tls-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-common","conformance-type":"import","feature":["hello-params","tls12","tls13"]},{"name":"openflow-types_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-types?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:types","conformance-type":"import"},{"name":"ietf-netconf-with-defaults_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf-with-defaults?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults","conformance-type":"import"},{"name":"odl-srm-ops_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-ops?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:ops","conformance-type":"import"},{"name":"odl-general-entity_2015-09-30","revision":"2015-09-30","schema":"/rests/modules/odl-general-entity?revision=2015-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:mdsal:core:general-entity","conformance-type":"import"},{"name":"iana-ssh-key-exchange-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-key-exchange-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-key-exchange-algs","conformance-type":"import"},{"name":"node-ssl-connection-error_2019-07-23","revision":"2019-07-23","schema":"/rests/modules/node-ssl-connection-error?revision=2019-07-23","namespace":"urn:opendaylight:node-ssl-connection-error:service","conformance-type":"import"},{"name":"openflow-protocol_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-protocol?revision=2013-07-31","namespace":"urn:opendaylight:openflow:protocol","conformance-type":"import"},{"name":"ietf-udp-server_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-server?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-server","conformance-type":"import"},{"name":"ietf-keystore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-keystore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-keystore","conformance-type":"import","feature":["asymmetric-keys","inline-definitions-supported"]},{"name":"aaa_2016-12-14","revision":"2016-12-14","schema":"/rests/modules/aaa?revision=2016-12-14","namespace":"urn:opendaylight:params:xml:ns:yang:aaa","conformance-type":"import"},{"name":"aaa-cert-rpc_2015-12-15","revision":"2015-12-15","schema":"/rests/modules/aaa-cert-rpc?revision=2015-12-15","namespace":"urn:opendaylight:yang:aaa:cert:rpc","conformance-type":"import"},{"name":"system-notifications_2013-09-27","revision":"2013-09-27","schema":"/rests/modules/system-notifications?revision=2013-09-27","namespace":"urn:opendaylight:openflow:system","conformance-type":"import"},{"name":"sal-flat-batch_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/sal-flat-batch?revision=2016-03-21","namespace":"urn:opendaylight:flat-batch:service","conformance-type":"import"},{"name":"notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netconf:notification:1.0","conformance-type":"import"},{"name":"sal-remote_2014-01-14","revision":"2014-01-14","schema":"/rests/modules/sal-remote?revision=2014-01-14","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:remote","conformance-type":"import"},{"name":"yang-ext_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/yang-ext?revision=2013-07-09","namespace":"urn:opendaylight:yang:extension:yang-ext","conformance-type":"import"},{"name":"opendaylight-multipart-types_2017-01-12","revision":"2017-01-12","schema":"/rests/modules/opendaylight-multipart-types?revision=2017-01-12","namespace":"urn:opendaylight:multipart:types","conformance-type":"import"},{"name":"opendaylight-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-inventory?revision=2013-08-19","namespace":"urn:opendaylight:inventory","conformance-type":"import"},{"name":"sal-queue_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-queue?revision=2015-03-05","namespace":"urn:opendaylight:queue:service","conformance-type":"import"},{"name":"sal-groups-batch_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/sal-groups-batch?revision=2016-03-15","namespace":"urn:opendaylight:groups:service","conformance-type":"import"},{"name":"arbitrator-reconcile_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/arbitrator-reconcile?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:arbitrator-reconcile:service","conformance-type":"import"},{"name":"ietf-yang-metadata_2016-08-05","revision":"2016-08-05","schema":"/rests/modules/ietf-yang-metadata?revision=2016-08-05","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-metadata","conformance-type":"import"},{"name":"opendaylight-arbitrary-bitmask-fields_2016-01-30","revision":"2016-01-30","schema":"/rests/modules/opendaylight-arbitrary-bitmask-fields?revision=2016-01-30","namespace":"urn:opendaylight:arbitrary:bitmask:fields","conformance-type":"import"},{"name":"ietf-udp-client_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-client?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-client","conformance-type":"import","feature":["local-binding"]},{"name":"opendaylight-meter-types_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/opendaylight-meter-types?revision=2013-09-18","namespace":"urn:opendaylight:meter:types","conformance-type":"import"},{"name":"opendaylight-action-types_2013-11-12","revision":"2013-11-12","schema":"/rests/modules/opendaylight-action-types?revision=2013-11-12","namespace":"urn:opendaylight:action:types","conformance-type":"import"},{"name":"sal-role_2015-07-27","revision":"2015-07-27","schema":"/rests/modules/sal-role?revision=2015-07-27","namespace":"urn:opendaylight:role:service","conformance-type":"import"},{"name":"openflow-provider-config_2016-05-10","revision":"2016-05-10","schema":"/rests/modules/openflow-provider-config?revision=2016-05-10","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:provider:config","conformance-type":"import"},{"name":"odl-serviceutils-upgrade_2018-07-02","revision":"2018-07-02","schema":"/rests/modules/odl-serviceutils-upgrade?revision=2018-07-02","namespace":"urn:opendaylight:serviceutils:upgrade","conformance-type":"import"},{"name":"opendaylight-match-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-match-types?revision=2013-10-26","namespace":"urn:opendaylight:model:match:types","conformance-type":"import"},{"name":"ietf-restconf-server_2024-08-14","revision":"2024-08-14","schema":"/rests/modules/ietf-restconf-server?revision=2024-08-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-server","conformance-type":"import","feature":["http-listen","https-listen"]},{"name":"reconciliation-result-state_2017-07-13","revision":"2017-07-13","schema":"/rests/modules/reconciliation-result-state?revision=2017-07-13","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:rf:state","conformance-type":"import"},{"name":"onf-extensions_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/onf-extensions?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf","conformance-type":"import"},{"name":"sal-table_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/sal-table?revision=2013-10-26","namespace":"urn:opendaylight:table:service","conformance-type":"import"},{"name":"iana-http-versions_2026-02-04","revision":"2026-02-04","schema":"/rests/modules/iana-http-versions?revision=2026-02-04","namespace":"urn:ietf:params:xml:ns:yang:iana-http-versions","conformance-type":"import"},{"name":"opendaylight-direct-statistics_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/opendaylight-direct-statistics?revision=2016-05-11","namespace":"urn:opendaylight:direct:statistics","conformance-type":"import"},{"name":"opendaylight-port-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-port-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:port","conformance-type":"import"},{"name":"sal-async-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/sal-async-config?revision=2017-06-19","namespace":"urn:opendaylight:async-config:service","conformance-type":"import"},{"name":"aaa-password-service-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-password-service-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:password:service:config","conformance-type":"import"},{"name":"ietf-yang-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-yang-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-types","conformance-type":"import"},{"name":"opendaylight-queue-statistics_2013-12-16","revision":"2013-12-16","schema":"/rests/modules/opendaylight-queue-statistics?revision=2013-12-16","namespace":"urn:opendaylight:queue:statistics","conformance-type":"import"},{"name":"sal-bundle_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/sal-bundle?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf:bundle:service","conformance-type":"import"},{"name":"ietf-restconf-subscribed-notifications_2019-11-17","revision":"2019-11-17","schema":"/rests/modules/ietf-restconf-subscribed-notifications?revision=2019-11-17","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-subscribed-notifications","conformance-type":"import"},{"name":"sal-meters-batch_2016-03-16","revision":"2016-03-16","schema":"/rests/modules/sal-meters-batch?revision=2016-03-16","namespace":"urn:opendaylight:meters:service","conformance-type":"import"},{"name":"odl-entity-owners","revision":"","schema":"/rests/modules/odl-entity-owners","namespace":"urn:opendaylight:params:xml:ns:yang:controller:entity-owners","conformance-type":"import"},{"name":"sal-experimenter-mp-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-mp-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-mp-message:service","conformance-type":"import"},{"name":"packet-processing_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/packet-processing?revision=2013-07-09","namespace":"urn:opendaylight:packet:service","conformance-type":"import"},{"name":"openflow-configuration_2014-06-30","revision":"2014-06-30","schema":"/rests/modules/openflow-configuration?revision=2014-06-30","namespace":"urn:opendaylight:openflow:config","conformance-type":"import"},{"name":"odl-srm-rpcs_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-rpcs?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:rpc","conformance-type":"import"},{"name":"ietf-netconf-acm_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-netconf-acm?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-acm","conformance-type":"import"},{"name":"iana-crypt-hash_2014-08-06","revision":"2014-08-06","schema":"/rests/modules/iana-crypt-hash?revision=2014-08-06","namespace":"urn:ietf:params:xml:ns:yang:iana-crypt-hash","conformance-type":"import","feature":["crypt-hash-sha-512","crypt-hash-sha-256","crypt-hash-md5"]},{"name":"openflow-extensible-match_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-extensible-match?revision=2015-02-25","namespace":"urn:opendaylight:openflow:oxm","conformance-type":"import"}],"module-set-id":"2"}}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:02:10.762172" elapsed="0.002940"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:10.761935" elapsed="0.003212"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:10.761914" elapsed="0.003283"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:02:10.767747" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:02:10.765505" elapsed="0.002286"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:10.765280" elapsed="0.002545"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:10.765261" elapsed="0.002588"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:02:10.768426" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:02:10.768037" elapsed="0.000416"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:10.768783" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:10.768544" elapsed="0.000295"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:02:10.769398" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:02:10.769022" elapsed="0.000402"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:10.768863" elapsed="0.000597"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:10.768525" elapsed="0.000957"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:02:10.770022" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:02:10.769664" elapsed="0.000384"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:10.770393" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:10.770139" elapsed="0.000311"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:02:10.770933" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:02:10.770634" elapsed="0.000324"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:10.770473" elapsed="0.000520"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:10.770120" elapsed="0.000894"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:02:10.771201" elapsed="0.000361"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T01:02:10.772026" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:02:10.771750" elapsed="0.000302"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T01:02:10.772241" elapsed="0.002333"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T01:02:10.761224" elapsed="0.013470"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T01:02:10.775036" elapsed="0.000045"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:02:10.774821" elapsed="0.000323"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:10.774771" elapsed="0.000424"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T01:02:10.784097" level="INFO">${text_normalized} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T01:02:10.775930" elapsed="0.008217"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T01:02:10.784241" elapsed="0.000064"/>
</return>
<msg time="2026-04-08T01:02:10.784563" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T01:02:10.733288" elapsed="0.051383"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T01:02:10.785315" elapsed="0.000032"/>
</return>
<msg time="2026-04-08T01:02:10.785496" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="PASS" start="2026-04-08T01:02:10.590406" elapsed="0.195117"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Json_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:10.785843" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:10.785607" elapsed="0.000421"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:10.785589" elapsed="0.000467"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T01:02:10.786126" elapsed="0.000040"/>
</return>
<arg>session=${session}</arg>
<arg>folder=${RESTCONF_MODULES_DIR}</arg>
<arg>verify=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Add arguments sensible for JSON data, return Get_Templated response text.
Optionally, verification against JSON data (may be iterated) is called.
Only subset of JSON data is verified and returned if JMES path is specified in
file ${folder}/jmespath.expr.</doc>
<status status="PASS" start="2026-04-08T01:02:10.586188" elapsed="0.200082"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:10.581922" elapsed="0.204392"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:10.581905" elapsed="0.204433"/>
</if>
<kw name="Resolve_Shard_Type_Class" owner="ClusterManagement">
<if>
<branch type="IF" condition="'${shard_type}' == 'config'">
<return>
<value>DistributedConfigDatastore</value>
<status status="PASS" start="2026-04-08T01:02:10.786932" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-08T01:02:10.786825" elapsed="0.000165"/>
</branch>
<branch type="ELSE IF" condition="'${shard_type}' == 'operational'">
<return>
<value>DistributedOperationalDatastore</value>
<status status="NOT RUN" start="2026-04-08T01:02:10.787050" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:02:10.787013" elapsed="0.000075"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:10.786808" elapsed="0.000302"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized shard type: ${shard_type}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:10.787270" elapsed="0.000022"/>
</kw>
<msg time="2026-04-08T01:02:10.787390" level="INFO">${type_class} = DistributedConfigDatastore</msg>
<var>${type_class}</var>
<arg>shard_type=${shard_type}</arg>
<doc>Simple lookup for class name corresponding to desired type.</doc>
<status status="PASS" start="2026-04-08T01:02:10.786561" elapsed="0.000854"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:02:10.787984" level="INFO">${cluster_index} = 2</msg>
<var>${cluster_index}</var>
<arg>${member_index}+${NODE_ROLE_INDEX_START}-1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:02:10.787610" elapsed="0.000400"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:02:10.788639" level="INFO">${uri} = jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-default-config,type=DistributedConfigDatastore</msg>
<var>${uri}</var>
<arg>${JOLOKIA_READ_URI}:Category=Shards,name=member-${cluster_index}-shard-${shard_name}-${shard_type},type=${type_class}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:02:10.788180" elapsed="0.000487"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:02:10.794395" level="INFO">jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-default-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:02:10.793939" elapsed="0.000503"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:02:10.795031" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:02:10.794599" elapsed="0.000476"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T01:02:10.814385" level="INFO">GET Request : url=http://10.30.170.131:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-default-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-default-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T01:02:10.814518" level="INFO">GET Response : url=http://10.30.170.131:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-default-config,type=DistributedConfigDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Wed, 08 Apr 2026 01:02:10 GMT', 'Expires': 'Wed, 08 Apr 2026 00:02:10 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-2-shard-default-config,type=DistributedConfigDatastore","type":"read"},"value":{"ReadWriteTransactionCount":0,"SnapshotIndex":183,"InMemoryJournalLogSize":1,"ReplicatedToAllIndex":183,"Leader":"member-1-shard-default-config","LastIndex":184,"RaftState":"Follower","LastApplied":184,"LastCommittedTransactionTime":"1970-01-01 00:00:00.000","PeerAddresses":"member-1-shard-default-config: pekko:\/\/opendaylight-cluster-data@10.30.170.48:2550\/user\/shardmanager-config\/member-1-shard-default-config, member-3-shard-default-config: pekko:\/\/opendaylight-cluster-data@10.30.171.110:2550\/user\/shardmanager-config\/member-3-shard-default-config","LastLogIndex":184,"LastLeadershipChangeTime":"2026-04-08 00:57:11.157","FollowerInitialSyncStatus":true,"FollowerInfo":[],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"575.1 μs","CurrentTerm":4,"LastTerm":4,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-default-config","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":0,"TxCohortCacheSize":0,"PeerVotingStates":"member-1-shard-default-config: true, member-3-shard-default-config: true","LastLogTerm":4,"StatRetrievalError":null,"CommitIndex":184,"SnapshotTerm":4,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-2-shard-default-config","LeadershipChangeCount":1,"InMemoryJournalDataSize":14735},"timestamp":1775610130,"status":200} 
 </msg>
<msg time="2026-04-08T01:02:10.814707" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T01:02:10.806518" elapsed="0.008295"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:10.795143" elapsed="0.019925"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:10.815269" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:10.815097" elapsed="0.000507"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:10.795124" elapsed="0.020506"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:02:10.820480" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-2-shard-default-config,type=DistributedConfigDatastore","type":"read"},"value":{"ReadWriteTransactionCount":0,"SnapshotIndex":183,"InMemoryJournalLogSize":1,"ReplicatedToAllIndex":183,"Leader":"member-1-shard-default-config","LastIndex":184,"RaftState":"Follower","LastApplied":184,"LastCommittedTransactionTime":"1970-01-01 00:00:00.000","PeerAddresses":"member-1-shard-default-config: pekko:\/\/opendaylight-cluster-data@10.30.170.48:2550\/user\/shardmanager-config\/member-1-shard-default-config, member-3-shard-default-config: pekko:\/\/opendaylight-cluster-data@10.30.171.110:2550\/user\/shardmanager-config\/member-3-shard-default-config","LastLogIndex":184,"LastLeadershipChangeTime":"2026-04-08 00:57:11.157","FollowerInitialSyncStatus":true,"FollowerInfo":[],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"575.1 μs","CurrentTerm":4,"LastTerm":4,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-default-config","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":0,"TxCohortCacheSize":0,"PeerVotingStates":"member-1-shard-default-config: true, member-3-shard-default-config: true","LastLogTerm":4,"StatRetrievalError":null,"CommitIndex":184,"SnapshotTerm":4,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-2-shard-default-config","LeadershipChangeCount":1,"InMemoryJournalDataSize":14735},"timestamp":1775610130,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:02:10.817740" elapsed="0.002885"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:10.816823" elapsed="0.003851"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:10.816804" elapsed="0.003909"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:02:10.824198" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:02:10.821715" elapsed="0.002583"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:10.820796" elapsed="0.003550"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:10.820778" elapsed="0.003606"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:02:10.825769" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:02:10.825016" elapsed="0.000815"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:10.826593" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:10.826000" elapsed="0.000682"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:02:10.827591" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:02:10.827051" elapsed="0.000586"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:10.826720" elapsed="0.000968"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:10.825980" elapsed="0.001744"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:02:10.829133" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:02:10.828391" elapsed="0.000819"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:10.829846" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:10.829377" elapsed="0.000555"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:02:10.830814" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:02:10.830318" elapsed="0.000541"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:10.829969" elapsed="0.000942"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:10.829358" elapsed="0.001588"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:02:10.831271" elapsed="0.000740"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T01:02:10.832813" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:02:10.832336" elapsed="0.000537"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T01:02:10.833152" elapsed="0.002402"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T01:02:10.816107" elapsed="0.019606"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T01:02:10.835908" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:02:10.835784" elapsed="0.000168"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:10.835766" elapsed="0.000208"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T01:02:10.839786" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-2-shard-default-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 17756101...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T01:02:10.836120" elapsed="0.003695"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T01:02:10.839866" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T01:02:10.840023" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-2-shard-default-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 17756101...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T01:02:10.789622" elapsed="0.050428"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T01:02:10.840106" elapsed="0.000027"/>
</return>
<msg time="2026-04-08T01:02:10.840339" level="INFO">${data_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-2-shard-default-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 17756101...</msg>
<var>${data_text}</var>
<arg>uri=${uri}</arg>
<arg>session=${session}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-08T01:02:10.788877" elapsed="0.051488"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:02:10.841425" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-2-shard-default-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1775610130, 'value'...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:02:10.840927" elapsed="0.000528"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-08T01:02:10.841544" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T01:02:10.841841" level="INFO">${data_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-2-shard-default-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1775610130, 'value'...</msg>
<var>${data_object}</var>
<arg>${data_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-08T01:02:10.840583" elapsed="0.001291"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:02:10.842260" level="INFO">${value} = {'AbortTransactionsCount': 0, 'CommitIndex': 184, 'CommittedTransactionsCount': 0, 'CurrentTerm': 4, 'FailedReadTransactionsCount': 0, 'FailedTransactionsCount': 0, 'FollowerInfo': [], 'FollowerInitia...</msg>
<var>${value}</var>
<arg>${data_object}</arg>
<arg>value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:02:10.842041" elapsed="0.000247"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:02:10.842644" level="INFO">${raft_property} = Follower</msg>
<var>${raft_property}</var>
<arg>${value}</arg>
<arg>${property}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:02:10.842446" elapsed="0.000223"/>
</kw>
<return>
<value>${raft_property}</value>
<status status="PASS" start="2026-04-08T01:02:10.842715" elapsed="0.000027"/>
</return>
<msg time="2026-04-08T01:02:10.842863" level="INFO">${raft_state} = Follower</msg>
<var>${raft_state}</var>
<arg>RaftState</arg>
<arg>${shard_name}</arg>
<arg>${shard_type}</arg>
<arg>${member_index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft property.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T01:02:10.580327" elapsed="0.262560"/>
</kw>
<return>
<value>${raft_state}</value>
<status status="PASS" start="2026-04-08T01:02:10.842942" elapsed="0.000025"/>
</return>
<msg time="2026-04-08T01:02:10.843086" level="INFO">${raft_state} = Follower</msg>
<var>${raft_state}</var>
<arg>shard_name=${shard_name}</arg>
<arg>shard_type=${ds_type}</arg>
<arg>member_index=${index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft status.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T01:02:10.579567" elapsed="0.263543"/>
</kw>
<if>
<branch type="IF" condition="'Follower' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${follower_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-08T01:02:10.843420" elapsed="0.000207"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:10.843204" elapsed="0.000461"/>
</branch>
<branch type="ELSE IF" condition="'Leader' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${leader_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:10.843834" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:10.843690" elapsed="0.000197"/>
</branch>
<branch type="ELSE IF" condition="${validate}">
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized Raft state: ${raft_state}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:10.844054" elapsed="0.000019"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:10.843911" elapsed="0.000192"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:10.843186" elapsed="0.000939"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T01:02:10.579400" elapsed="0.264748"/>
</iter>
<iter>
<kw name="Get_Raft_State_Of_Shard_At_Member" owner="ClusterManagement">
<kw name="Get_Raft_Property_From_Shard_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:02:10.846514" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:02:10.846191" elapsed="0.000350"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T01:02:10.846586" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T01:02:10.846731" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T01:02:10.845838" elapsed="0.000918"/>
</kw>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Get_As_Json_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:02:10.933195" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:02:10.932811" elapsed="0.000413"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T01:02:10.933969" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T01:02:10.933721" elapsed="0.000316">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-08T01:02:10.934128" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T01:02:10.933387" elapsed="0.000765"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:02:10.934713" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:02:10.934334" elapsed="0.000406"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T01:02:10.935031" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-08T01:02:10.935179" level="INFO">${template} = /rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T01:02:10.934899" elapsed="0.000341"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:02:10.935658" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:02:10.935414" elapsed="0.000288"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:02:10.936644" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:02:10.936393" elapsed="0.000294"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-08T01:02:10.937110" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-08T01:02:10.936847" elapsed="0.000288"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:10.937555" elapsed="0.000024"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:10.937762" elapsed="0.000023"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:10.937935" elapsed="0.000020"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-08T01:02:10.937337" elapsed="0.000654"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-08T01:02:10.937201" elapsed="0.000820"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-08T01:02:10.938063" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T01:02:10.938237" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-08T01:02:10.936056" elapsed="0.002205"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:10.935770" elapsed="0.002523"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:10.938465" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:10.938317" elapsed="0.000201"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:10.935751" elapsed="0.002788"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:02:10.939105" level="INFO">${final_text} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:02:10.938680" elapsed="0.000452"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T01:02:10.939196" elapsed="0.000030"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="PASS" start="2026-04-08T01:02:10.932200" elapsed="0.007120"/>
</kw>
<msg time="2026-04-08T01:02:10.939372" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:02:10.919391" elapsed="0.020071"/>
</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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:10.952228" elapsed="0.000043"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:10.964906" elapsed="0.000042"/>
</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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:10.977393" elapsed="0.000041"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:10.978179" elapsed="0.000039"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:10.978932" elapsed="0.000036"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:10.979560" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:10.979407" elapsed="0.000210"/>
</branch>
<status status="NOT RUN" start="2026-04-08T01:02:10.979369" elapsed="0.000271"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:10.979799" elapsed="0.000022"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:10.979985" elapsed="0.000021"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:10.980187" elapsed="0.000022"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-08T01:02:10.979321" elapsed="0.000943"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-08T01:02:10.979082" elapsed="0.001221"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:10.981010" elapsed="0.000035"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-08T01:02:10.981126" elapsed="0.000062"/>
</return>
<msg time="2026-04-08T01:02:10.981360" level="INFO">${uri} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-08T01:02:10.913196" elapsed="0.068269"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T01:02:10.984314" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T01:02:10.984056" elapsed="0.000322">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-08T01:02:10.984561" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T01:02:10.983616" elapsed="0.000988"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:10.985105" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:10.984733" elapsed="0.000453"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:02:10.985781" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:02:10.985487" elapsed="0.000320"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:10.985226" elapsed="0.000625"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:10.984683" elapsed="0.001207"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:02:10.989071" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:02:10.986639" elapsed="0.002478"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-08T01:02:10.989207" elapsed="0.000063"/>
</return>
<msg time="2026-04-08T01:02:10.989519" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T01:02:10.982447" elapsed="0.007177"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T01:02:10.992432" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T01:02:10.992175" elapsed="0.000320">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-08T01:02:10.992683" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T01:02:10.991727" elapsed="0.001000"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-08T01:02:10.993103" elapsed="0.000096"/>
</return>
<status status="PASS" start="2026-04-08T01:02:10.992858" elapsed="0.000411"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:10.992808" elapsed="0.000499"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:10.994044" elapsed="0.000036"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:10.994821" elapsed="0.000036"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-08T01:02:10.994928" elapsed="0.000047"/>
</return>
<msg time="2026-04-08T01:02:10.998504" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T01:02:10.990450" elapsed="0.008159"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:02:11.002514" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:02:11.002116" elapsed="0.000496"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:02:11.003892" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:02:11.003511" elapsed="0.000477"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T01:02:11.027630" level="INFO">GET Request : url=http://10.30.171.110:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 path_url=/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0bpvxx3soilt318jo6w4kocddk0.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T01:02:11.028044" level="INFO">GET Response : url=http://10.30.171.110:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Transfer-Encoding': 'chunked'} 
 body={"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","encrypted-passwords","hidden-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-private-keys","asymmetrically-encrypted-value-format","cleartext-private-keys","cms-encrypted-data-format","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["client-ident-hostbased","ssh-client-keepalives","client-ident-password","client-ident-publickey"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-ex... (set the log level to DEBUG or TRACE to see the full content) 
 </msg>
<msg time="2026-04-08T01:02:11.028272" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T01:02:11.006338" elapsed="0.021961"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:11.004114" elapsed="0.024239"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:11.028643" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:11.028397" elapsed="0.000319"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:11.004064" elapsed="0.024687"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:02:11.033076" level="INFO">{"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","encrypted-passwords","hidden-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-private-keys","asymmetrically-encrypted-value-format","cleartext-private-keys","cms-encrypted-data-format","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["client-ident-hostbased","ssh-client-keepalives","client-ident-password","client-ident-publickey"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-experimenter-types?revision=2015-10-20","namespace":"urn:opendaylight:openflowplugin:experimenter:types","conformance-type":"import"},{"name":"ietf-ip_2018-02-22","revision":"2018-02-22","schema":"/rests/modules/ietf-ip?revision=2018-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-ip","conformance-type":"import","feature":["ipv6-privacy-autoconf","ipv4-non-contiguous-netmasks"]},{"name":"ietf-tcp-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-client","conformance-type":"import","feature":["local-binding-supported","tcp-client-keepalives"]},{"name":"node-config_2014-10-15","revision":"2014-10-15","schema":"/rests/modules/node-config?revision=2014-10-15","namespace":"urn:opendaylight:module:config","conformance-type":"import"},{"name":"ietf-restconf_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf","conformance-type":"import"},{"name":"ietf-datastores_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-datastores?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-datastores","conformance-type":"import"},{"name":"ietf-yang-patch_2017-02-22","revision":"2017-02-22","schema":"/rests/modules/ietf-yang-patch?revision=2017-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-patch","conformance-type":"import"},{"name":"sal-group_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-group?revision=2013-09-18","namespace":"urn:opendaylight:group:service","conformance-type":"import"},{"name":"odl-codegen-extensions_2024-06-27","revision":"2024-06-27","schema":"/rests/modules/odl-codegen-extensions?revision=2024-06-27","namespace":"urn:opendaylight:yang:extension:codegen","conformance-type":"import"},{"name":"sal-meter_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-meter?revision=2013-09-18","namespace":"urn:opendaylight:meter:service","conformance-type":"import"},{"name":"ietf-interfaces_2018-02-20","revision":"2018-02-20","schema":"/rests/modules/ietf-interfaces?revision=2018-02-20","namespace":"urn:ietf:params:xml:ns:yang:ietf-interfaces","conformance-type":"import","feature":["pre-provisioning","if-mib","arbitrary-names"]},{"name":"opendaylight-l2-types_2013-08-27","revision":"2013-08-27","schema":"/rests/modules/opendaylight-l2-types?revision=2013-08-27","namespace":"urn:opendaylight:l2:types","conformance-type":"import"},{"name":"opendaylight-flow-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-flow-types?revision=2013-10-26","namespace":"urn:opendaylight:flow:types","conformance-type":"import"},{"name":"lldp-speaker-config_2016-05-12","revision":"2016-05-12","schema":"/rests/modules/lldp-speaker-config?revision=2016-05-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker:config","conformance-type":"import"},{"name":"aaa-cert_2015-11-26","revision":"2015-11-26","schema":"/rests/modules/aaa-cert?revision=2015-11-26","namespace":"urn:opendaylight:yang:aaa:cert","conformance-type":"import"},{"name":"openflow-action_2015-02-03","revision":"2015-02-03","schema":"/rests/modules/openflow-action?revision=2015-02-03","namespace":"urn:opendaylight:openflow:common:action","conformance-type":"import"},{"name":"openflow-approved-extensions_2016-08-02","revision":"2016-08-02","schema":"/rests/modules/openflow-approved-extensions?revision=2016-08-02","namespace":"urn:opendaylight:openflow:approved:extensions","conformance-type":"import"},{"name":"nc-notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/nc-notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netmod:notification","conformance-type":"import"},{"name":"ietf-netconf-nmda_2019-01-07","revision":"2019-01-07","schema":"/rests/modules/ietf-netconf-nmda?revision=2019-01-07","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-nmda","conformance-type":"import","feature":["with-defaults","origin"]},{"name":"ietf-tcp-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-common","conformance-type":"import","feature":["keepalives-supported"]},{"name":"network-topology_2013-10-21","revision":"2013-10-21","schema":"/rests/modules/network-topology?revision=2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:network-topology","conformance-type":"import"},{"name":"aaa-encrypt-service-config_2024-02-02","revision":"2024-02-02","schema":"/rests/modules/aaa-encrypt-service-config?revision=2024-02-02","namespace":"config:aaa:authn:encrypt:service:config","conformance-type":"import"},{"name":"openflow-instruction_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-instruction?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:instruction","conformance-type":"import"},{"name":"ietf-tls-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-client","conformance-type":"import","feature":["client-ident-x509-cert","server-auth-x509-cert"]},{"name":"opendaylight-group-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-group-statistics?revision=2013-11-11","namespace":"urn:opendaylight:group:statistics","conformance-type":"import"},{"name":"cluster-admin_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/cluster-admin?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:cluster:admin","conformance-type":"import"},{"name":"opendaylight-flow-statistics_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-flow-statistics?revision=2013-08-19","namespace":"urn:opendaylight:flow:statistics","conformance-type":"import"},{"name":"opendaylight-table-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-table-types?revision=2013-10-26","namespace":"urn:opendaylight:table:types","conformance-type":"import"},{"name":"forwarding-rules-manager-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/forwarding-rules-manager-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:forwardingrules-manager:config","conformance-type":"import"},{"name":"odl-srm-types_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-types?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:types","conformance-type":"import"},{"name":"ietf-x509-cert-to-name_2014-12-10","revision":"2014-12-10","schema":"/rests/modules/ietf-x509-cert-to-name?revision=2014-12-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-x509-cert-to-name","conformance-type":"import"},{"name":"flow-node-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-node-inventory?revision=2013-08-19","namespace":"urn:opendaylight:flow:inventory","conformance-type":"import"},{"name":"flow-errors_2013-11-16","revision":"2013-11-16","schema":"/rests/modules/flow-errors?revision=2013-11-16","namespace":"urn:opendaylight:flow:errors","conformance-type":"import"},{"name":"ietf-netconf_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:netconf:base:1.0","conformance-type":"import","feature":["xpath","url","rollback-on-error","validate","candidate","confirmed-commit","startup","writable-running"]},{"name":"iana-ssh-public-key-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-public-key-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-public-key-algs","conformance-type":"import"},{"name":"aaa-cert-mdsal_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/aaa-cert-mdsal?revision=2016-03-21","namespace":"urn:opendaylight:yang:aaa:cert:mdsal","conformance-type":"import"},{"name":"odl-device-notification_2024-02-18","revision":"2024-02-18","schema":"/rests/modules/odl-device-notification?revision=2024-02-18","namespace":"urn:opendaylight:device:notification","conformance-type":"import"},{"name":"ietf-origin_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-origin?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-origin","conformance-type":"import"},{"name":"openflow-augments_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-augments?revision=2015-02-25","namespace":"urn:opendaylight:openflow:augments","conformance-type":"import"},{"name":"iana-ssh-encryption-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-encryption-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-encryption-algs","conformance-type":"import"},{"name":"ietf-truststore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-truststore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-truststore","conformance-type":"import","feature":["inline-definitions-supported"]},{"name":"distributed-datastore-provider_2025-01-30","revision":"2025-01-30","schema":"/rests/modules/distributed-datastore-provider?revision=2025-01-30","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:distributed-datastore-provider","conformance-type":"import"},{"name":"opendaylight-group-types_2013-10-18","revision":"2013-10-18","schema":"/rests/modules/opendaylight-group-types?revision=2013-10-18","namespace":"urn:opendaylight:group:types","conformance-type":"import"},{"name":"sal-remote-augment_2023-11-03","revision":"2023-11-03","schema":"/rests/modules/sal-remote-augment?revision=2023-11-03","namespace":"urn:sal:restconf:event:subscription","conformance-type":"import"},{"name":"opendaylight-ipv6-arbitrary-bitmask-fields_2016-02-24","revision":"2016-02-24","schema":"/rests/modules/opendaylight-ipv6-arbitrary-bitmask-fields?revision=2016-02-24","namespace":"urn:opendaylight:opendaylight-ipv6-arbitrary-bitmask-fields","conformance-type":"import"},{"name":"sal-flows-batch_2016-03-14","revision":"2016-03-14","schema":"/rests/modules/sal-flows-batch?revision=2016-03-14","namespace":"urn:opendaylight:flows:service","conformance-type":"import"},{"name":"ietf-tls-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-common","conformance-type":"import","feature":["hello-params","tls12","tls13"]},{"name":"openflow-types_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-types?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:types","conformance-type":"import"},{"name":"ietf-netconf-with-defaults_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf-with-defaults?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults","conformance-type":"import"},{"name":"odl-srm-ops_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-ops?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:ops","conformance-type":"import"},{"name":"odl-general-entity_2015-09-30","revision":"2015-09-30","schema":"/rests/modules/odl-general-entity?revision=2015-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:mdsal:core:general-entity","conformance-type":"import"},{"name":"iana-ssh-key-exchange-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-key-exchange-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-key-exchange-algs","conformance-type":"import"},{"name":"node-ssl-connection-error_2019-07-23","revision":"2019-07-23","schema":"/rests/modules/node-ssl-connection-error?revision=2019-07-23","namespace":"urn:opendaylight:node-ssl-connection-error:service","conformance-type":"import"},{"name":"openflow-protocol_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-protocol?revision=2013-07-31","namespace":"urn:opendaylight:openflow:protocol","conformance-type":"import"},{"name":"ietf-udp-server_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-server?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-server","conformance-type":"import"},{"name":"ietf-keystore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-keystore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-keystore","conformance-type":"import","feature":["asymmetric-keys","inline-definitions-supported"]},{"name":"aaa_2016-12-14","revision":"2016-12-14","schema":"/rests/modules/aaa?revision=2016-12-14","namespace":"urn:opendaylight:params:xml:ns:yang:aaa","conformance-type":"import"},{"name":"aaa-cert-rpc_2015-12-15","revision":"2015-12-15","schema":"/rests/modules/aaa-cert-rpc?revision=2015-12-15","namespace":"urn:opendaylight:yang:aaa:cert:rpc","conformance-type":"import"},{"name":"system-notifications_2013-09-27","revision":"2013-09-27","schema":"/rests/modules/system-notifications?revision=2013-09-27","namespace":"urn:opendaylight:openflow:system","conformance-type":"import"},{"name":"sal-flat-batch_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/sal-flat-batch?revision=2016-03-21","namespace":"urn:opendaylight:flat-batch:service","conformance-type":"import"},{"name":"notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netconf:notification:1.0","conformance-type":"import"},{"name":"sal-remote_2014-01-14","revision":"2014-01-14","schema":"/rests/modules/sal-remote?revision=2014-01-14","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:remote","conformance-type":"import"},{"name":"yang-ext_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/yang-ext?revision=2013-07-09","namespace":"urn:opendaylight:yang:extension:yang-ext","conformance-type":"import"},{"name":"opendaylight-multipart-types_2017-01-12","revision":"2017-01-12","schema":"/rests/modules/opendaylight-multipart-types?revision=2017-01-12","namespace":"urn:opendaylight:multipart:types","conformance-type":"import"},{"name":"opendaylight-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-inventory?revision=2013-08-19","namespace":"urn:opendaylight:inventory","conformance-type":"import"},{"name":"sal-queue_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-queue?revision=2015-03-05","namespace":"urn:opendaylight:queue:service","conformance-type":"import"},{"name":"sal-groups-batch_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/sal-groups-batch?revision=2016-03-15","namespace":"urn:opendaylight:groups:service","conformance-type":"import"},{"name":"arbitrator-reconcile_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/arbitrator-reconcile?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:arbitrator-reconcile:service","conformance-type":"import"},{"name":"ietf-yang-metadata_2016-08-05","revision":"2016-08-05","schema":"/rests/modules/ietf-yang-metadata?revision=2016-08-05","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-metadata","conformance-type":"import"},{"name":"opendaylight-arbitrary-bitmask-fields_2016-01-30","revision":"2016-01-30","schema":"/rests/modules/opendaylight-arbitrary-bitmask-fields?revision=2016-01-30","namespace":"urn:opendaylight:arbitrary:bitmask:fields","conformance-type":"import"},{"name":"ietf-udp-client_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-client?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-client","conformance-type":"import","feature":["local-binding"]},{"name":"opendaylight-meter-types_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/opendaylight-meter-types?revision=2013-09-18","namespace":"urn:opendaylight:meter:types","conformance-type":"import"},{"name":"opendaylight-action-types_2013-11-12","revision":"2013-11-12","schema":"/rests/modules/opendaylight-action-types?revision=2013-11-12","namespace":"urn:opendaylight:action:types","conformance-type":"import"},{"name":"sal-role_2015-07-27","revision":"2015-07-27","schema":"/rests/modules/sal-role?revision=2015-07-27","namespace":"urn:opendaylight:role:service","conformance-type":"import"},{"name":"openflow-provider-config_2016-05-10","revision":"2016-05-10","schema":"/rests/modules/openflow-provider-config?revision=2016-05-10","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:provider:config","conformance-type":"import"},{"name":"odl-serviceutils-upgrade_2018-07-02","revision":"2018-07-02","schema":"/rests/modules/odl-serviceutils-upgrade?revision=2018-07-02","namespace":"urn:opendaylight:serviceutils:upgrade","conformance-type":"import"},{"name":"opendaylight-match-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-match-types?revision=2013-10-26","namespace":"urn:opendaylight:model:match:types","conformance-type":"import"},{"name":"ietf-restconf-server_2024-08-14","revision":"2024-08-14","schema":"/rests/modules/ietf-restconf-server?revision=2024-08-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-server","conformance-type":"import","feature":["http-listen","https-listen"]},{"name":"reconciliation-result-state_2017-07-13","revision":"2017-07-13","schema":"/rests/modules/reconciliation-result-state?revision=2017-07-13","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:rf:state","conformance-type":"import"},{"name":"onf-extensions_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/onf-extensions?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf","conformance-type":"import"},{"name":"sal-table_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/sal-table?revision=2013-10-26","namespace":"urn:opendaylight:table:service","conformance-type":"import"},{"name":"iana-http-versions_2026-02-04","revision":"2026-02-04","schema":"/rests/modules/iana-http-versions?revision=2026-02-04","namespace":"urn:ietf:params:xml:ns:yang:iana-http-versions","conformance-type":"import"},{"name":"opendaylight-direct-statistics_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/opendaylight-direct-statistics?revision=2016-05-11","namespace":"urn:opendaylight:direct:statistics","conformance-type":"import"},{"name":"opendaylight-port-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-port-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:port","conformance-type":"import"},{"name":"sal-async-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/sal-async-config?revision=2017-06-19","namespace":"urn:opendaylight:async-config:service","conformance-type":"import"},{"name":"aaa-password-service-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-password-service-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:password:service:config","conformance-type":"import"},{"name":"ietf-yang-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-yang-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-types","conformance-type":"import"},{"name":"opendaylight-queue-statistics_2013-12-16","revision":"2013-12-16","schema":"/rests/modules/opendaylight-queue-statistics?revision=2013-12-16","namespace":"urn:opendaylight:queue:statistics","conformance-type":"import"},{"name":"sal-bundle_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/sal-bundle?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf:bundle:service","conformance-type":"import"},{"name":"ietf-restconf-subscribed-notifications_2019-11-17","revision":"2019-11-17","schema":"/rests/modules/ietf-restconf-subscribed-notifications?revision=2019-11-17","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-subscribed-notifications","conformance-type":"import"},{"name":"sal-meters-batch_2016-03-16","revision":"2016-03-16","schema":"/rests/modules/sal-meters-batch?revision=2016-03-16","namespace":"urn:opendaylight:meters:service","conformance-type":"import"},{"name":"odl-entity-owners","revision":"","schema":"/rests/modules/odl-entity-owners","namespace":"urn:opendaylight:params:xml:ns:yang:controller:entity-owners","conformance-type":"import"},{"name":"sal-experimenter-mp-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-mp-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-mp-message:service","conformance-type":"import"},{"name":"packet-processing_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/packet-processing?revision=2013-07-09","namespace":"urn:opendaylight:packet:service","conformance-type":"import"},{"name":"openflow-configuration_2014-06-30","revision":"2014-06-30","schema":"/rests/modules/openflow-configuration?revision=2014-06-30","namespace":"urn:opendaylight:openflow:config","conformance-type":"import"},{"name":"odl-srm-rpcs_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-rpcs?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:rpc","conformance-type":"import"},{"name":"ietf-netconf-acm_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-netconf-acm?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-acm","conformance-type":"import"},{"name":"iana-crypt-hash_2014-08-06","revision":"2014-08-06","schema":"/rests/modules/iana-crypt-hash?revision=2014-08-06","namespace":"urn:ietf:params:xml:ns:yang:iana-crypt-hash","conformance-type":"import","feature":["crypt-hash-sha-512","crypt-hash-sha-256","crypt-hash-md5"]},{"name":"openflow-extensible-match_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-extensible-match?revision=2015-02-25","namespace":"urn:opendaylight:openflow:oxm","conformance-type":"import"}],"module-set-id":"2"}}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:02:11.030431" elapsed="0.002986"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:11.030207" elapsed="0.003246"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:11.030186" elapsed="0.003292"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:02:11.036067" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:02:11.033782" elapsed="0.002331"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:11.033557" elapsed="0.002630"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:11.033539" elapsed="0.002674"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:02:11.036778" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:02:11.036404" elapsed="0.000401"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:11.037134" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:11.036895" elapsed="0.000312"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:02:11.037694" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:02:11.037394" elapsed="0.000326"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:11.037231" elapsed="0.000523"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:11.036876" elapsed="0.000899"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:02:11.038371" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:02:11.037960" elapsed="0.000438"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:11.038726" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:11.038488" elapsed="0.000294"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:02:11.039328" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:02:11.038966" elapsed="0.000398"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:11.038805" elapsed="0.000596"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:11.038469" elapsed="0.000954"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:02:11.039598" elapsed="0.000346"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T01:02:11.040424" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:02:11.040130" elapsed="0.000320"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T01:02:11.040624" elapsed="0.002226"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T01:02:11.029492" elapsed="0.013480"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T01:02:11.043332" elapsed="0.000072"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:02:11.043099" elapsed="0.000373"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:11.043049" elapsed="0.000459"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T01:02:11.052940" level="INFO">${text_normalized} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T01:02:11.044262" elapsed="0.008727"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T01:02:11.053067" elapsed="0.000063"/>
</return>
<msg time="2026-04-08T01:02:11.053407" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T01:02:10.999360" elapsed="0.054154"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T01:02:11.053980" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T01:02:11.054171" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="PASS" start="2026-04-08T01:02:10.855426" elapsed="0.198774"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Json_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:11.054525" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:11.054286" elapsed="0.000450"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:11.054268" elapsed="0.000496"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T01:02:11.054798" elapsed="0.000026"/>
</return>
<arg>session=${session}</arg>
<arg>folder=${RESTCONF_MODULES_DIR}</arg>
<arg>verify=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Add arguments sensible for JSON data, return Get_Templated response text.
Optionally, verification against JSON data (may be iterated) is called.
Only subset of JSON data is verified and returned if JMES path is specified in
file ${folder}/jmespath.expr.</doc>
<status status="PASS" start="2026-04-08T01:02:10.851205" elapsed="0.203718"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:10.846821" elapsed="0.208145"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:10.846804" elapsed="0.208186"/>
</if>
<kw name="Resolve_Shard_Type_Class" owner="ClusterManagement">
<if>
<branch type="IF" condition="'${shard_type}' == 'config'">
<return>
<value>DistributedConfigDatastore</value>
<status status="PASS" start="2026-04-08T01:02:11.055633" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-08T01:02:11.055526" elapsed="0.000167"/>
</branch>
<branch type="ELSE IF" condition="'${shard_type}' == 'operational'">
<return>
<value>DistributedOperationalDatastore</value>
<status status="NOT RUN" start="2026-04-08T01:02:11.055755" elapsed="0.000012"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:02:11.055717" elapsed="0.000076"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:11.055508" elapsed="0.000307"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized shard type: ${shard_type}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:11.055962" elapsed="0.000021"/>
</kw>
<msg time="2026-04-08T01:02:11.056080" level="INFO">${type_class} = DistributedConfigDatastore</msg>
<var>${type_class}</var>
<arg>shard_type=${shard_type}</arg>
<doc>Simple lookup for class name corresponding to desired type.</doc>
<status status="PASS" start="2026-04-08T01:02:11.055230" elapsed="0.000876"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:02:11.056663" level="INFO">${cluster_index} = 3</msg>
<var>${cluster_index}</var>
<arg>${member_index}+${NODE_ROLE_INDEX_START}-1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:02:11.056293" elapsed="0.000398"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:02:11.057337" level="INFO">${uri} = jolokia/read/org.opendaylight.controller:Category=Shards,name=member-3-shard-default-config,type=DistributedConfigDatastore</msg>
<var>${uri}</var>
<arg>${JOLOKIA_READ_URI}:Category=Shards,name=member-${cluster_index}-shard-${shard_name}-${shard_type},type=${type_class}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:02:11.056849" elapsed="0.000515"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:02:11.063256" level="INFO">jolokia/read/org.opendaylight.controller:Category=Shards,name=member-3-shard-default-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:02:11.062799" elapsed="0.000503"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:02:11.063928" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:02:11.063471" elapsed="0.000501"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T01:02:11.083628" level="INFO">GET Request : url=http://10.30.171.110:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-3-shard-default-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-3-shard-default-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T01:02:11.083760" level="INFO">GET Response : url=http://10.30.171.110:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-3-shard-default-config,type=DistributedConfigDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Wed, 08 Apr 2026 01:02:11 GMT', 'Expires': 'Wed, 08 Apr 2026 00:02:11 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-3-shard-default-config,type=DistributedConfigDatastore","type":"read"},"value":{"ReadWriteTransactionCount":0,"SnapshotIndex":183,"InMemoryJournalLogSize":1,"ReplicatedToAllIndex":183,"Leader":"member-1-shard-default-config","LastIndex":184,"RaftState":"Follower","LastApplied":184,"LastCommittedTransactionTime":"1970-01-01 00:00:00.000","PeerAddresses":"member-1-shard-default-config: pekko:\/\/opendaylight-cluster-data@10.30.170.48:2550\/user\/shardmanager-config\/member-1-shard-default-config, member-2-shard-default-config: pekko:\/\/opendaylight-cluster-data@10.30.170.131:2550\/user\/shardmanager-config\/member-2-shard-default-config","LastLogIndex":184,"LastLeadershipChangeTime":"2026-04-08 00:57:11.156","FollowerInitialSyncStatus":true,"FollowerInfo":[],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"654.0 μs","CurrentTerm":4,"LastTerm":4,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-default-config","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":0,"TxCohortCacheSize":0,"PeerVotingStates":"member-1-shard-default-config: true, member-2-shard-default-config: true","LastLogTerm":4,"StatRetrievalError":null,"CommitIndex":184,"SnapshotTerm":4,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-3-shard-default-config","LeadershipChangeCount":1,"InMemoryJournalDataSize":14735},"timestamp":1775610131,"status":200} 
 </msg>
<msg time="2026-04-08T01:02:11.083948" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T01:02:11.075358" elapsed="0.008695"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:11.064040" elapsed="0.020289"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:11.084515" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:11.084358" elapsed="0.000467"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:11.064022" elapsed="0.020828"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:02:11.089559" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-3-shard-default-config,type=DistributedConfigDatastore","type":"read"},"value":{"ReadWriteTransactionCount":0,"SnapshotIndex":183,"InMemoryJournalLogSize":1,"ReplicatedToAllIndex":183,"Leader":"member-1-shard-default-config","LastIndex":184,"RaftState":"Follower","LastApplied":184,"LastCommittedTransactionTime":"1970-01-01 00:00:00.000","PeerAddresses":"member-1-shard-default-config: pekko:\/\/opendaylight-cluster-data@10.30.170.48:2550\/user\/shardmanager-config\/member-1-shard-default-config, member-2-shard-default-config: pekko:\/\/opendaylight-cluster-data@10.30.170.131:2550\/user\/shardmanager-config\/member-2-shard-default-config","LastLogIndex":184,"LastLeadershipChangeTime":"2026-04-08 00:57:11.156","FollowerInitialSyncStatus":true,"FollowerInfo":[],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"654.0 μs","CurrentTerm":4,"LastTerm":4,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-1-shard-default-config","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":0,"TxCohortCacheSize":0,"PeerVotingStates":"member-1-shard-default-config: true, member-2-shard-default-config: true","LastLogTerm":4,"StatRetrievalError":null,"CommitIndex":184,"SnapshotTerm":4,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-3-shard-default-config","LeadershipChangeCount":1,"InMemoryJournalDataSize":14735},"timestamp":1775610131,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:02:11.086894" elapsed="0.002810"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:11.086022" elapsed="0.003732"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:11.086002" elapsed="0.003791"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:02:11.093319" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:02:11.090749" elapsed="0.002668"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:11.089875" elapsed="0.003591"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:11.089857" elapsed="0.003647"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:02:11.094893" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:02:11.094136" elapsed="0.000821"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:11.095620" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:11.095124" elapsed="0.000583"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:02:11.096596" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:02:11.096077" elapsed="0.000564"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:11.095745" elapsed="0.000947"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:11.095103" elapsed="0.001623"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:02:11.098171" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:02:11.097431" elapsed="0.000803"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:11.098861" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:11.098400" elapsed="0.000548"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:02:11.099851" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:02:11.099355" elapsed="0.000541"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:11.098984" elapsed="0.000962"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:11.098380" elapsed="0.001600"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:02:11.100221" elapsed="0.000618"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T01:02:11.101726" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:02:11.101238" elapsed="0.000549"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T01:02:11.102073" elapsed="0.002409"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T01:02:11.085347" elapsed="0.019296"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T01:02:11.104843" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:02:11.104716" elapsed="0.000172"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:11.104697" elapsed="0.000212"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T01:02:11.108749" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-3-shard-default-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 17756101...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T01:02:11.105058" elapsed="0.003721"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T01:02:11.108831" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T01:02:11.108989" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-3-shard-default-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 17756101...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T01:02:11.058442" elapsed="0.050576"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T01:02:11.109078" elapsed="0.000027"/>
</return>
<msg time="2026-04-08T01:02:11.109413" level="INFO">${data_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-3-shard-default-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 17756101...</msg>
<var>${data_text}</var>
<arg>uri=${uri}</arg>
<arg>session=${session}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-08T01:02:11.057577" elapsed="0.051862"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:02:11.110495" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-3-shard-default-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1775610131, 'value'...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:02:11.110012" elapsed="0.000513"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-08T01:02:11.110610" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T01:02:11.110787" level="INFO">${data_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-3-shard-default-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1775610131, 'value'...</msg>
<var>${data_object}</var>
<arg>${data_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-08T01:02:11.109660" elapsed="0.001154"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:02:11.111188" level="INFO">${value} = {'AbortTransactionsCount': 0, 'CommitIndex': 184, 'CommittedTransactionsCount': 0, 'CurrentTerm': 4, 'FailedReadTransactionsCount': 0, 'FailedTransactionsCount': 0, 'FollowerInfo': [], 'FollowerInitia...</msg>
<var>${value}</var>
<arg>${data_object}</arg>
<arg>value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:02:11.110972" elapsed="0.000245"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:02:11.111604" level="INFO">${raft_property} = Follower</msg>
<var>${raft_property}</var>
<arg>${value}</arg>
<arg>${property}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:02:11.111400" elapsed="0.000230"/>
</kw>
<return>
<value>${raft_property}</value>
<status status="PASS" start="2026-04-08T01:02:11.111677" elapsed="0.000027"/>
</return>
<msg time="2026-04-08T01:02:11.111827" level="INFO">${raft_state} = Follower</msg>
<var>${raft_state}</var>
<arg>RaftState</arg>
<arg>${shard_name}</arg>
<arg>${shard_type}</arg>
<arg>${member_index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft property.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T01:02:10.845241" elapsed="0.266611"/>
</kw>
<return>
<value>${raft_state}</value>
<status status="PASS" start="2026-04-08T01:02:11.111911" elapsed="0.000032"/>
</return>
<msg time="2026-04-08T01:02:11.112090" level="INFO">${raft_state} = Follower</msg>
<var>${raft_state}</var>
<arg>shard_name=${shard_name}</arg>
<arg>shard_type=${ds_type}</arg>
<arg>member_index=${index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft status.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-08T01:02:10.844513" elapsed="0.267607"/>
</kw>
<if>
<branch type="IF" condition="'Follower' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${follower_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-08T01:02:11.112441" elapsed="0.000189"/>
</kw>
<status status="PASS" start="2026-04-08T01:02:11.112223" elapsed="0.000445"/>
</branch>
<branch type="ELSE IF" condition="'Leader' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${leader_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:11.112838" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:11.112692" elapsed="0.000200"/>
</branch>
<branch type="ELSE IF" condition="${validate}">
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized Raft state: ${raft_state}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:11.113057" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:11.112915" elapsed="0.000193"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:11.112205" elapsed="0.000925"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T01:02:10.844346" elapsed="0.268822"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-08T01:02:10.322267" elapsed="0.790935"/>
</for>
<return>
<value>${leader_list}</value>
<value>${follower_list}</value>
<status status="PASS" start="2026-04-08T01:02:11.113243" elapsed="0.000026"/>
</return>
<msg time="2026-04-08T01:02:11.113441" level="INFO">${leader_list} = [1]</msg>
<msg time="2026-04-08T01:02:11.113487" level="INFO">${follower_list} = [2, 3]</msg>
<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="PASS" start="2026-04-08T01:02:10.318227" elapsed="0.795284"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T01:02:11.113952" level="INFO">Length is 1.</msg>
<msg time="2026-04-08T01:02:11.114030" level="INFO">${leader_count} = 1</msg>
<var>${leader_count}</var>
<arg>${leader_list}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T01:02:11.113686" elapsed="0.000368"/>
</kw>
<if>
<branch type="IF" condition="${leader_count} &lt; 1">
<kw name="Fail" owner="BuiltIn">
<arg>No leader found.</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:11.114412" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:11.114122" elapsed="0.000344"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:11.114105" elapsed="0.000383"/>
</if>
<kw name="Length Should Be" owner="BuiltIn">
<msg time="2026-04-08T01:02:11.116653" level="INFO">Length is 1.</msg>
<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="PASS" start="2026-04-08T01:02:11.114625" elapsed="0.002075"/>
</kw>
<kw name="Get From List" owner="Collections">
<msg time="2026-04-08T01:02:11.117045" level="INFO">${leader} = 1</msg>
<var>${leader}</var>
<arg>${leader_list}</arg>
<arg>0</arg>
<doc>Returns the value specified with an ``index`` from ``list``.</doc>
<status status="PASS" start="2026-04-08T01:02:11.116863" elapsed="0.000206"/>
</kw>
<return>
<value>${leader}</value>
<value>${follower_list}</value>
<status status="PASS" start="2026-04-08T01:02:11.117114" elapsed="0.000028"/>
</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="PASS" start="2026-04-08T01:02:10.315605" elapsed="0.801677"/>
</kw>
<var name="${shard_name}">default</var>
<status status="PASS" start="2026-04-08T01:02:10.315385" elapsed="0.801942"/>
</iter>
<var>${shard_name}</var>
<value>@{shard_name_list}</value>
<status status="PASS" start="2026-04-08T01:02:08.598177" elapsed="2.519181"/>
</for>
<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="PASS" start="2026-04-08T01:02:08.597778" elapsed="2.519635"/>
</kw>
<doc>Check Status for all shards in OpenFlow application.</doc>
<status status="PASS" start="2026-04-08T01:02:05.935672" elapsed="5.181848"/>
</kw>
<doc>Check Status for all shards in OpenFlow application.</doc>
<status status="PASS" start="2026-04-08T01:02:05.660878" elapsed="5.456765"/>
</test>
<test id="s1-s4-t49" name="Stop Owner Instance" line="346">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-08T01:02:11.121135" elapsed="0.000219"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-08T01:02:11.120872" elapsed="0.000537"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:02:11.122393" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:02:11.122285" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:11.122266" elapsed="0.000193"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:02:11.127550" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:02:11.127444" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:11.127426" elapsed="0.000192"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:02:11.128614" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:02:11.128235" elapsed="0.000406"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:02:11.129102" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:02:11.128803" elapsed="0.000325"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T01:02:11.129188" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T01:02:11.129343" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T01:02:11.127843" elapsed="0.001524"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:02:11.134859" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:02:11.134751" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:11.134731" elapsed="0.000197"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:02:11.136093" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:02:11.135985" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:11.135967" elapsed="0.000218"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:02:11.136632" level="INFO">${karaf_connection_index} = 476</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:02:11.136338" elapsed="0.000321"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:02:11.137078" level="INFO">${current_connection_index} = 495</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:02:11.136822" elapsed="0.000283"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:02:11.169706" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:02:11.137630" elapsed="0.032176"/>
</kw>
<msg time="2026-04-08T01:02:11.169968" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T01:02:11.170020" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:02:11.137287" elapsed="0.032769"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T01:02:11.200577" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "S "t "o "p "[C "O "w "n "e "r "[C "I "n "s "t "a "n "c "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T01:02:11.170605" elapsed="0.030079"/>
</kw>
<msg time="2026-04-08T01:02:11.200846" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T01:02:11.200893" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "S "t "o "p "[C "O "w "n "e "r "[C "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:02:11.170257" elapsed="0.030671"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:11.201259" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:11.201005" elapsed="0.000312"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:11.200986" elapsed="0.000355"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:02:11.201783" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "S "t "o "p "[C "O "w "n "e "r "[C "I "n "s "t "a "n "c "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:02:11.201488" elapsed="0.000400"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:11.202196" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:11.201957" elapsed="0.000296"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:11.201939" elapsed="0.000337"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T01:02:11.202309" elapsed="0.000028"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:02:11.204846" elapsed="0.000181"/>
</kw>
<msg time="2026-04-08T01:02:11.205089" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:02:11.203754" elapsed="0.001484"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:11.205512" elapsed="0.000075"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:11.205848" elapsed="0.000075"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:02:11.203113" elapsed="0.002923"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T01:02:11.202578" elapsed="0.003523"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T01:02:11.135680" elapsed="0.070546"/>
</kw>
<msg time="2026-04-08T01:02:11.206318" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:02:11.206361" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "S "t "o "p "[C "O "w "n "e "r "[C "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:02:11.135083" elapsed="0.071313"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T01:02:11.206580" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-08T01:02:11.206474" elapsed="0.000163"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:11.206455" elapsed="0.000206"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:11.207052" elapsed="0.000024"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:11.207424" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T01:02:11.207496" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T01:02:11.134410" elapsed="0.073192"/>
</kw>
<msg time="2026-04-08T01:02:11.207694" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:02:11.207737" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "S "t "o "p "[C "O "w "n "e "r "[C "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:02:11.129732" elapsed="0.078039"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:11.208099" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:11.207846" elapsed="0.000441"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:11.207829" elapsed="0.000485"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T01:02:11.129589" elapsed="0.078749"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:02:11.213812" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:02:11.213706" elapsed="0.000150"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:11.213687" elapsed="0.000191"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:02:11.215008" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:02:11.214901" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:11.214883" elapsed="0.000192"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:02:11.215624" level="INFO">${karaf_connection_index} = 478</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:02:11.215242" elapsed="0.000410"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:02:11.216065" level="INFO">${current_connection_index} = 495</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:02:11.215815" elapsed="0.000276"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:02:11.250581" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:02:11.216608" elapsed="0.034106"/>
</kw>
<msg time="2026-04-08T01:02:11.250877" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T01:02:11.250924" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:02:11.216270" elapsed="0.034689"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T01:02:11.282508" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "S "t "o "p "[C "O "w "n "e "r "[C "I "n "s "t "a "n "c "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T01:02:11.251529" elapsed="0.031082"/>
</kw>
<msg time="2026-04-08T01:02:11.282768" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T01:02:11.282814" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "S "t "o "p "[C "O "w "n "e "r "[C "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:02:11.251131" elapsed="0.031718"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:11.283153" elapsed="0.000049"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:11.282927" elapsed="0.000320"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:11.282907" elapsed="0.000364"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:02:11.283709" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "S "t "o "p "[C "O "w "n "e "r "[C "I "n "s "t "a "n "c "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:02:11.283415" elapsed="0.000360"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:11.284090" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:11.283842" elapsed="0.000303"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:11.283824" elapsed="0.000361"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T01:02:11.284219" elapsed="0.000028"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:02:11.286764" elapsed="0.000183"/>
</kw>
<msg time="2026-04-08T01:02:11.287007" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:02:11.285624" elapsed="0.001510"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:11.287449" elapsed="0.000193"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:11.287911" elapsed="0.000074"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:02:11.285003" elapsed="0.003090"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T01:02:11.284479" elapsed="0.003695"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T01:02:11.214602" elapsed="0.073675"/>
</kw>
<msg time="2026-04-08T01:02:11.288368" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:02:11.288411" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "S "t "o "p "[C "O "w "n "e "r "[C "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:02:11.214030" elapsed="0.074417"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T01:02:11.288630" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-08T01:02:11.288524" elapsed="0.000164"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:11.288505" elapsed="0.000206"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 2,
close the previous connection. In any case create a new connection
to karaf console for 2, set correct prompt set and login to karaf console.
Store connection index for 2 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:11.289092" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:11.289442" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T01:02:11.289513" elapsed="0.000018"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T01:02:11.213368" elapsed="0.076256"/>
</kw>
<msg time="2026-04-08T01:02:11.289715" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:02:11.289758" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "S "t "o "p "[C "O "w "n "e "r "[C "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:02:11.208606" elapsed="0.081187"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:11.290176" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:11.289906" elapsed="0.000325"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:11.289888" elapsed="0.000366"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T01:02:11.208464" elapsed="0.081814"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:02:11.295822" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:02:11.295714" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:11.295695" elapsed="0.000194"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:02:11.297043" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:02:11.296931" elapsed="0.000157"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:11.296913" elapsed="0.000197"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:02:11.297580" level="INFO">${karaf_connection_index} = 480</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:02:11.297283" elapsed="0.000325"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:02:11.298019" level="INFO">${current_connection_index} = 495</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:02:11.297769" elapsed="0.000276"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:02:11.329008" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:02:11.298562" elapsed="0.030545"/>
</kw>
<msg time="2026-04-08T01:02:11.329298" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T01:02:11.329345" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:02:11.298225" elapsed="0.031156"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T01:02:11.359956" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "S "t "o "p "[C "O "w "n "e "r "[C "I "n "s "t "a "n "c "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T01:02:11.329898" elapsed="0.030159"/>
</kw>
<msg time="2026-04-08T01:02:11.360234" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T01:02:11.360280" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "S "t "o "p "[C "O "w "n "e "r "[C "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:02:11.329556" elapsed="0.030760"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:11.360620" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:11.360395" elapsed="0.000280"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:11.360375" elapsed="0.000324"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:02:11.361137" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "S "t "o "p "[C "O "w "n "e "r "[C "I "n "s "t "a "n "c "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:02:11.360843" elapsed="0.000379"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:11.361509" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:11.361290" elapsed="0.000274"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:11.361272" elapsed="0.000315"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T01:02:11.361619" elapsed="0.000027"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:02:11.364121" elapsed="0.000200"/>
</kw>
<msg time="2026-04-08T01:02:11.364382" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:02:11.363029" elapsed="0.001480"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:11.364778" elapsed="0.000075"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:11.365107" elapsed="0.000204"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:02:11.362423" elapsed="0.003010"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T01:02:11.361878" elapsed="0.003620"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T01:02:11.296632" elapsed="0.069004"/>
</kw>
<msg time="2026-04-08T01:02:11.365728" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:02:11.365771" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "S "t "o "p "[C "O "w "n "e "r "[C "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:02:11.296042" elapsed="0.069765"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T01:02:11.365992" elapsed="0.000028"/>
</return>
<status status="PASS" start="2026-04-08T01:02:11.365884" elapsed="0.000170"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:11.365866" elapsed="0.000212"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 3,
close the previous connection. In any case create a new connection
to karaf console for 3, set correct prompt set and login to karaf console.
Store connection index for 3 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:11.366475" elapsed="0.000024"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:11.366800" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T01:02:11.366871" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T01:02:11.295371" elapsed="0.071606"/>
</kw>
<msg time="2026-04-08T01:02:11.367068" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:02:11.367112" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "S "t "o "p "[C "O "w "n "e "r "[C "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:02:11.290539" elapsed="0.076608"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:11.367500" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:11.367251" elapsed="0.000302"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:11.367233" elapsed="0.000343"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T01:02:11.290398" elapsed="0.077201"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-08T01:02:11.129420" elapsed="0.238207"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-08T01:02:11.127050" elapsed="0.240631"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-08T01:02:11.121983" elapsed="0.245755"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:02:11.121562" elapsed="0.246222"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-08T01:02:11.118589" elapsed="0.249247"/>
</kw>
<kw name="Stop_Single_Member" owner="ClusterManagement">
<msg time="2026-04-08T01:02:11.372348" level="FAIL">Variable '${original_owner}' not found.</msg>
<arg>${original_owner}</arg>
<doc>Convenience keyword that stops the specified member of the cluster.
The KW will return a list of available members: ${updated index_list}=${original_index_list}-${member}</doc>
<status status="FAIL" start="2026-04-08T01:02:11.368088" elapsed="0.004300">Variable '${original_owner}' not found.</status>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<arg>${new_cluster_list}</arg>
<arg>${original_successor_list}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:11.372565" elapsed="0.000022"/>
</kw>
<doc>Stop Owner Instance and verify it is shutdown</doc>
<status status="FAIL" start="2026-04-08T01:02:11.118117" elapsed="0.254611">Variable '${original_owner}' not found.</status>
</test>
<test id="s1-s4-t50" name="Check Shards Status After Stop" line="351">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-08T01:02:11.376487" elapsed="0.000213"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-08T01:02:11.375995" elapsed="0.000759"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:02:11.377845" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:02:11.377739" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:11.377720" elapsed="0.000192"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:02:11.382688" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:02:11.382584" elapsed="0.000148"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:11.382566" elapsed="0.000188"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:02:11.383766" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:02:11.383389" elapsed="0.000404"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:02:11.384268" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:02:11.383954" elapsed="0.000384"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T01:02:11.384386" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T01:02:11.384541" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T01:02:11.382976" elapsed="0.001590"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:02:11.390111" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:02:11.390002" elapsed="0.000175"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:11.389983" elapsed="0.000218"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:02:11.391358" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:02:11.391245" elapsed="0.000158"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:11.391226" elapsed="0.000199"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:02:11.391864" level="INFO">${karaf_connection_index} = 476</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:02:11.391571" elapsed="0.000321"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:02:11.392318" level="INFO">${current_connection_index} = 495</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:02:11.392051" elapsed="0.000293"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:02:11.422044" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:02:11.392841" elapsed="0.029301"/>
</kw>
<msg time="2026-04-08T01:02:11.422324" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T01:02:11.422371" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:02:11.392506" elapsed="0.029899"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T01:02:11.475656" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "S "h "a "r "d "s "[C "S "t "a "t "u "s "[C "A "f "t "e "r "[C "S "t "o "p "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T01:02:11.422918" elapsed="0.052845"/>
</kw>
<msg time="2026-04-08T01:02:11.475922" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T01:02:11.475967" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "S "h "a "r "d "s...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:02:11.422576" elapsed="0.053426"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:11.476335" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:11.476081" elapsed="0.000310"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:11.476060" elapsed="0.000355"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:02:11.476854" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "S "h "a "r "d "s "[C "S "t "a "t "u "s "[C "A "f "t "e "r "[C "S "t "o "p "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:02:11.476559" elapsed="0.000364"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:11.477233" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:11.476994" elapsed="0.000295"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:11.476975" elapsed="0.000337"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T01:02:11.477344" elapsed="0.000027"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:02:11.479892" elapsed="0.000187"/>
</kw>
<msg time="2026-04-08T01:02:11.480140" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:02:11.478760" elapsed="0.001533"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:11.480565" elapsed="0.000074"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:11.480925" elapsed="0.000199"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:02:11.478137" elapsed="0.003127"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T01:02:11.477605" elapsed="0.003722"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T01:02:11.390911" elapsed="0.090554"/>
</kw>
<msg time="2026-04-08T01:02:11.481556" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:02:11.481599" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "S "h "a "r "d "s...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:02:11.390360" elapsed="0.091275"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T01:02:11.481817" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-08T01:02:11.481711" elapsed="0.000165"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:11.481693" elapsed="0.000206"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:11.482293" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:11.482621" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T01:02:11.482692" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T01:02:11.389664" elapsed="0.093133"/>
</kw>
<msg time="2026-04-08T01:02:11.482888" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:02:11.482932" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "S "h "a "r "d "s...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:02:11.384930" elapsed="0.098036"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:11.483331" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:11.483044" elapsed="0.000340"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:11.483024" elapsed="0.000384"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T01:02:11.384785" elapsed="0.098645"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:02:11.488935" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:02:11.488827" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:11.488808" elapsed="0.000193"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:02:11.490127" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:02:11.490021" elapsed="0.000181"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:11.490004" elapsed="0.000222"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:02:11.490666" level="INFO">${karaf_connection_index} = 478</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:02:11.490372" elapsed="0.000320"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:02:11.491096" level="INFO">${current_connection_index} = 495</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:02:11.490849" elapsed="0.000274"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:02:11.521478" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:02:11.491661" elapsed="0.029917"/>
</kw>
<msg time="2026-04-08T01:02:11.521737" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T01:02:11.521783" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:02:11.491325" elapsed="0.030493"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T01:02:11.556239" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "S "h "a "r "d "s "[C "S "t "a "t "u "s "[C "A "f "t "e "r "[C "S "t "o "p "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T01:02:11.522355" elapsed="0.034121"/>
</kw>
<msg time="2026-04-08T01:02:11.556835" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T01:02:11.556941" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "S "h "a "r "d "s...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:02:11.521989" elapsed="0.035033"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:11.557833" elapsed="0.000124"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:11.557238" elapsed="0.000804"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:11.557150" elapsed="0.000947"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:02:11.559182" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "S "h "a "r "d "s "[C "S "t "a "t "u "s "[C "A "f "t "e "r "[C "S "t "o "p "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:02:11.558457" elapsed="0.000890"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:11.559993" elapsed="0.000047"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:11.559496" elapsed="0.000616"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:11.559457" elapsed="0.000737"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T01:02:11.560271" elapsed="0.000060"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:02:11.565009" elapsed="0.000203"/>
</kw>
<msg time="2026-04-08T01:02:11.565275" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:02:11.563669" elapsed="0.001735"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:11.565679" elapsed="0.000076"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:11.566011" elapsed="0.000074"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:02:11.562257" elapsed="0.003955"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T01:02:11.560847" elapsed="0.005461"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T01:02:11.489722" elapsed="0.076685"/>
</kw>
<msg time="2026-04-08T01:02:11.566497" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:02:11.566540" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "S "h "a "r "d "s...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:02:11.489153" elapsed="0.077422"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T01:02:11.566757" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-08T01:02:11.566651" elapsed="0.000164"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:11.566633" elapsed="0.000205"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 2,
close the previous connection. In any case create a new connection
to karaf console for 2, set correct prompt set and login to karaf console.
Store connection index for 2 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:11.567287" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:11.567616" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T01:02:11.567687" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T01:02:11.488490" elapsed="0.079303"/>
</kw>
<msg time="2026-04-08T01:02:11.567885" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:02:11.567929" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "S "h "a "r "d "s...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:02:11.483688" elapsed="0.084277"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:11.568410" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:11.568044" elapsed="0.000421"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:11.568027" elapsed="0.000461"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T01:02:11.483548" elapsed="0.084963"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:02:11.573965" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:02:11.573858" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:11.573839" elapsed="0.000192"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:02:11.575304" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:02:11.575194" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:11.575152" elapsed="0.000219"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:02:11.575808" level="INFO">${karaf_connection_index} = 480</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:02:11.575516" elapsed="0.000361"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:02:11.576314" level="INFO">${current_connection_index} = 495</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:02:11.576043" elapsed="0.000298"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:02:11.610024" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:02:11.576844" elapsed="0.033282"/>
</kw>
<msg time="2026-04-08T01:02:11.610310" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T01:02:11.610357" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:02:11.576504" elapsed="0.033889"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T01:02:11.656600" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "S "h "a "r "d "s "[C "S "t "a "t "u "s "[C "A "f "t "e "r "[C "S "t "o "p "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T01:02:11.610908" elapsed="0.045801"/>
</kw>
<msg time="2026-04-08T01:02:11.656869" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T01:02:11.656916" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "S "h "a "r "d "s...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:02:11.610566" elapsed="0.046385"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:11.657282" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:11.657036" elapsed="0.000302"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:11.657013" elapsed="0.000349"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:02:11.657802" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "S "h "a "r "d "s "[C "S "t "a "t "u "s "[C "A "f "t "e "r "[C "S "t "o "p "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:02:11.657507" elapsed="0.000364"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:11.658176" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:11.657938" elapsed="0.000295"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:11.657920" elapsed="0.000336"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T01:02:11.658288" elapsed="0.000027"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:02:11.660721" elapsed="0.000177"/>
</kw>
<msg time="2026-04-08T01:02:11.660957" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:02:11.659725" elapsed="0.001358"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:11.661504" elapsed="0.000080"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:11.661842" elapsed="0.000072"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:02:11.659094" elapsed="0.002928"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T01:02:11.658546" elapsed="0.003538"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T01:02:11.574836" elapsed="0.087379"/>
</kw>
<msg time="2026-04-08T01:02:11.662306" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:02:11.662349" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "S "h "a "r "d "s...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:02:11.574272" elapsed="0.088112"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T01:02:11.662687" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-08T01:02:11.662460" elapsed="0.000288"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:11.662442" elapsed="0.000330"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 3,
close the previous connection. In any case create a new connection
to karaf console for 3, set correct prompt set and login to karaf console.
Store connection index for 3 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:11.663195" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:11.663525" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T01:02:11.663633" elapsed="0.000017"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T01:02:11.573519" elapsed="0.090223"/>
</kw>
<msg time="2026-04-08T01:02:11.663834" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:02:11.663878" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "S "h "a "r "d "s...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:02:11.568773" elapsed="0.095140"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:11.664257" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:11.663987" elapsed="0.000325"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:11.663970" elapsed="0.000365"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T01:02:11.568633" elapsed="0.095725"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-08T01:02:11.384617" elapsed="0.279770"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-08T01:02:11.382227" elapsed="0.282215"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-08T01:02:11.377457" elapsed="0.287040"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:02:11.377022" elapsed="0.287520"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-08T01:02:11.373864" elapsed="0.290730"/>
</kw>
<kw name="Check OpenFlow Shards Status After Cluster Event" owner="ClusterOpenFlow">
<msg time="2026-04-08T01:02:11.669106" level="FAIL">Variable '${new_cluster_list}' not found.</msg>
<arg>${new_cluster_list}</arg>
<doc>Check Shards Status after some cluster event.</doc>
<status status="FAIL" start="2026-04-08T01:02:11.664797" elapsed="0.004349">Variable '${new_cluster_list}' not found.</status>
</kw>
<doc>Check Status for all shards in OpenFlow application.</doc>
<status status="FAIL" start="2026-04-08T01:02:11.373142" elapsed="0.296209">Variable '${new_cluster_list}' not found.</status>
</test>
<test id="s1-s4-t51" name="Check Entity Owner Status And Find Owner and Successor After Stop" line="355">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-08T01:02:11.673388" elapsed="0.000223"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-08T01:02:11.673108" elapsed="0.000557"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:02:11.674657" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:02:11.674548" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:11.674530" elapsed="0.000194"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:02:11.679505" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:02:11.679399" elapsed="0.000150"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:11.679381" elapsed="0.000190"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:02:11.680568" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:02:11.680188" elapsed="0.000407"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:02:11.681057" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:02:11.680758" elapsed="0.000325"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T01:02:11.681127" elapsed="0.000043"/>
</return>
<msg time="2026-04-08T01:02:11.681296" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T01:02:11.679794" elapsed="0.001527"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:02:11.688133" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:02:11.688023" elapsed="0.000170"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:11.688003" elapsed="0.000213"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:02:11.689352" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:02:11.689244" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:11.689226" elapsed="0.000193"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:02:11.689861" level="INFO">${karaf_connection_index} = 476</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:02:11.689565" elapsed="0.000322"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:02:11.690354" level="INFO">${current_connection_index} = 495</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:02:11.690084" elapsed="0.000297"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:02:11.724842" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:02:11.690878" elapsed="0.034066"/>
</kw>
<msg time="2026-04-08T01:02:11.725115" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T01:02:11.725182" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:02:11.690542" elapsed="0.034678"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T01:02:11.787461" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "E "n "t "i "t "y "[C "O "w "n "e "r "[C "S "t "a "t "u "s "[C "A "n "d "[C "F "i "n "d "[C "O "w "n "e "r "[C "a "n "d "[C "S "u "c "c "e "s "[78Cs "[A[78Co
 "r "[C "A "f "t "e "r "[C "S "t "o "p "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T01:02:11.725732" elapsed="0.061858"/>
</kw>
<msg time="2026-04-08T01:02:11.787752" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T01:02:11.787798" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "E "n "t "i "t "y...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:02:11.725393" elapsed="0.062439"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:11.788152" elapsed="0.000049"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:11.787916" elapsed="0.000319"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:11.787894" elapsed="0.000366"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:02:11.788708" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "E "n "t "i "t "y "[C "O "w "n "e "r "[C "S "t "a "t "u "s "[C "A "n "d "[C "F "i "n "d "[C "O "w "n "e "r "[C "a "n "d "[C "S "u "c "c "e "s "[78Cs "[A[78Co
 "r "[C "A "f "t "e "r "[C "S "t "o "p "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:02:11.788406" elapsed="0.000381"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:11.789080" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:11.788856" elapsed="0.000277"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:11.788837" elapsed="0.000335"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T01:02:11.789207" elapsed="0.000030"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:02:11.791783" elapsed="0.000182"/>
</kw>
<msg time="2026-04-08T01:02:11.792031" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:02:11.790637" elapsed="0.001536"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:11.792470" elapsed="0.000081"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:11.792808" elapsed="0.000224"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:02:11.790017" elapsed="0.003132"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T01:02:11.789488" elapsed="0.003747"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T01:02:11.688921" elapsed="0.104414"/>
</kw>
<msg time="2026-04-08T01:02:11.793426" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:02:11.793470" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "E "n "t "i "t "y...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:02:11.688369" elapsed="0.105138"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T01:02:11.793690" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-08T01:02:11.793584" elapsed="0.000163"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:11.793565" elapsed="0.000205"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:11.794150" elapsed="0.000041"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:11.794496" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T01:02:11.794603" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T01:02:11.687685" elapsed="0.107024"/>
</kw>
<msg time="2026-04-08T01:02:11.794802" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:02:11.794846" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "E "n "t "i "t "y...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:02:11.681682" elapsed="0.113199"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:11.795237" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:11.794956" elapsed="0.000336"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:11.794939" elapsed="0.000376"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T01:02:11.681540" elapsed="0.113798"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:02:11.800766" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:02:11.800660" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:11.800641" elapsed="0.000191"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:02:11.802037" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:02:11.801925" elapsed="0.000157"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:11.801907" elapsed="0.000197"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:02:11.802563" level="INFO">${karaf_connection_index} = 478</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:02:11.802271" elapsed="0.000318"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:02:11.803006" level="INFO">${current_connection_index} = 495</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:02:11.802749" elapsed="0.000284"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:02:11.836807" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:02:11.803550" elapsed="0.033358"/>
</kw>
<msg time="2026-04-08T01:02:11.837068" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T01:02:11.837115" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:02:11.803212" elapsed="0.033938"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T01:02:11.899261" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "E "n "t "i "t "y "[C "O "w "n "e "r "[C "S "t "a "t "u "s "[C "A "n "d "[C "F "i "n "d "[C "O "w "n "e "r "[C "a "n "d "[C "S "u "c "c "e "s "[78Cs "[A[78Co
 "r "[C "A "f "t "e "r "[C "S "t "o "p "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T01:02:11.837686" elapsed="0.061858"/>
</kw>
<msg time="2026-04-08T01:02:11.899786" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T01:02:11.899836" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "E "n "t "i "t "y...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:02:11.837346" elapsed="0.062527"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:11.900408" elapsed="0.000029"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:11.900013" elapsed="0.000459"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:11.899968" elapsed="0.000533"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:02:11.901075" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "E "n "t "i "t "y "[C "O "w "n "e "r "[C "S "t "a "t "u "s "[C "A "n "d "[C "F "i "n "d "[C "O "w "n "e "r "[C "a "n "d "[C "S "u "c "c "e "s "[78Cs "[A[78Co
 "r "[C "A "f "t "e "r "[C "S "t "o "p "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:02:11.900656" elapsed="0.000528"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:11.901484" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:11.901256" elapsed="0.000282"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:11.901237" elapsed="0.000325"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T01:02:11.901602" elapsed="0.000066"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:02:11.904492" elapsed="0.000272"/>
</kw>
<msg time="2026-04-08T01:02:11.904829" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:02:11.903450" elapsed="0.001519"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:11.905265" elapsed="0.000076"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:11.905598" elapsed="0.000075"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:02:11.902676" elapsed="0.003109"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T01:02:11.902034" elapsed="0.003816"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T01:02:11.801627" elapsed="0.104325"/>
</kw>
<msg time="2026-04-08T01:02:11.906052" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:02:11.906097" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "E "n "t "i "t "y...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:02:11.800982" elapsed="0.105152"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T01:02:11.906355" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-08T01:02:11.906245" elapsed="0.000170"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:11.906225" elapsed="0.000213"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 2,
close the previous connection. In any case create a new connection
to karaf console for 2, set correct prompt set and login to karaf console.
Store connection index for 2 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:11.906853" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:11.907235" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T01:02:11.907308" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T01:02:11.800325" elapsed="0.107094"/>
</kw>
<msg time="2026-04-08T01:02:11.907516" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:02:11.907563" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "E "n "t "i "t "y...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:02:11.795603" elapsed="0.111997"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:11.907933" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:11.907678" elapsed="0.000308"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:11.907661" elapsed="0.000348"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T01:02:11.795461" elapsed="0.112572"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:02:11.914051" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:02:11.913935" elapsed="0.000165"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:11.913915" elapsed="0.000207"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:02:11.915350" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:02:11.915241" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:11.915223" elapsed="0.000194"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:02:11.915880" level="INFO">${karaf_connection_index} = 480</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:02:11.915567" elapsed="0.000341"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:02:11.916415" level="INFO">${current_connection_index} = 495</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:02:11.916113" elapsed="0.000329"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:02:11.947842" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:02:11.916969" elapsed="0.031051"/>
</kw>
<msg time="2026-04-08T01:02:11.948259" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T01:02:11.948310" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:02:11.916625" elapsed="0.031723"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T01:02:12.011830" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "E "n "t "i "t "y "[C "O "w "n "e "r "[C "S "t "a "t "u "s "[C "A "n "d "[C "F "i "n "d "[C "O "w "n "e "r "[C "a "n "d "[C "S "u "c "c "e "s "[78Cs "[A[78Co
 "r "[C "A "f "t "e "r "[C "S "t "o "p "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T01:02:11.949039" elapsed="0.063192"/>
</kw>
<msg time="2026-04-08T01:02:12.012473" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T01:02:12.012528" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "E "n "t "i "t "y...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:02:11.948585" elapsed="0.064005"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:12.013174" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:12.012755" elapsed="0.000484"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:12.012702" elapsed="0.000567"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:02:12.013841" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "E "n "t "i "t "y "[C "O "w "n "e "r "[C "S "t "a "t "u "s "[C "A "n "d "[C "F "i "n "d "[C "O "w "n "e "r "[C "a "n "d "[C "S "u "c "c "e "s "[78Cs "[A[78Co
 "r "[C "A "f "t "e "r "[C "S "t "o "p "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:02:12.013419" elapsed="0.000506"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:12.014297" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:12.014010" elapsed="0.000349"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:12.013985" elapsed="0.000398"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T01:02:12.014423" elapsed="0.000045"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:02:12.017223" elapsed="0.000193"/>
</kw>
<msg time="2026-04-08T01:02:12.017479" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:02:12.016149" elapsed="0.001470"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:12.017899" elapsed="0.000080"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:12.018266" elapsed="0.000076"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:02:12.015466" elapsed="0.002988"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T01:02:12.014781" elapsed="0.003741"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T01:02:11.914902" elapsed="0.103719"/>
</kw>
<msg time="2026-04-08T01:02:12.018720" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:02:12.018766" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "E "n "t "i "t "y...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:02:11.914304" elapsed="0.104500"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T01:02:12.019012" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-08T01:02:12.018901" elapsed="0.000170"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:12.018865" elapsed="0.000229"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 3,
close the previous connection. In any case create a new connection
to karaf console for 3, set correct prompt set and login to karaf console.
Store connection index for 3 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:12.019522" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:12.019869" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T01:02:12.019940" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T01:02:11.913537" elapsed="0.106511"/>
</kw>
<msg time="2026-04-08T01:02:12.020147" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:02:12.020213" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "E "n "t "i "t "y...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:02:11.908333" elapsed="0.111919"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:12.020583" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:12.020331" elapsed="0.000304"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:12.020313" elapsed="0.000383"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T01:02:11.908186" elapsed="0.112538"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-08T01:02:11.681374" elapsed="0.339388"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-08T01:02:11.679009" elapsed="0.341815"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-08T01:02:11.674257" elapsed="0.346628"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:02:11.673812" elapsed="0.347120"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-08T01:02:11.670740" elapsed="0.350249"/>
</kw>
<kw name="Get OpenFlow Entity Owner Status For One Device" owner="ClusterOpenFlow">
<msg time="2026-04-08T01:02:12.033374" level="FAIL">Variable '${original_successor}' not found.</msg>
<var>${new_owner}</var>
<var>${new_successor_list}</var>
<arg>openflow:1</arg>
<arg>${original_successor}</arg>
<arg>${new_cluster_list}</arg>
<arg>after_stop=True</arg>
<doc>Check Entity Owner Status and identify owner and successors for the device ${device}. Request is sent to controller ${controller_index}.</doc>
<status status="FAIL" start="2026-04-08T01:02:12.029267" elapsed="0.004157">Variable '${original_successor}' not found.</status>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<arg>${new_owner}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:12.033655" elapsed="0.000023"/>
</kw>
<doc>Check Entity Owner Status and identify owner and successor.</doc>
<status status="FAIL" start="2026-04-08T01:02:11.669844" elapsed="0.363996">Variable '${original_successor}' not found.</status>
</test>
<test id="s1-s4-t52" name="Check Stats Are Not Frozen After Owner Stop" line="364">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-08T01:02:12.037121" elapsed="0.000283"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-08T01:02:12.036849" elapsed="0.000611"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:02:12.038547" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:02:12.038416" elapsed="0.000181"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:12.038393" elapsed="0.000226"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:02:12.043498" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:02:12.043387" elapsed="0.000156"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:12.043368" elapsed="0.000197"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:02:12.044603" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:02:12.044203" elapsed="0.000427"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:02:12.045099" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:02:12.044793" elapsed="0.000331"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T01:02:12.045183" elapsed="0.000035"/>
</return>
<msg time="2026-04-08T01:02:12.045408" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T01:02:12.043799" elapsed="0.001635"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:02:12.051064" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:02:12.050952" elapsed="0.000158"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:12.050931" elapsed="0.000201"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:02:12.052363" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:02:12.052254" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:12.052236" elapsed="0.000196"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:02:12.052893" level="INFO">${karaf_connection_index} = 476</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:02:12.052584" elapsed="0.000337"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:02:12.053366" level="INFO">${current_connection_index} = 495</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:02:12.053087" elapsed="0.000305"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:02:12.088830" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:02:12.053897" elapsed="0.035184"/>
</kw>
<msg time="2026-04-08T01:02:12.089500" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T01:02:12.089550" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:02:12.053556" elapsed="0.036030"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T01:02:12.136725" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "S "t "a "t "s "[C "A "r "e "[C "N "o "t "[C "F "r "o "z "e "n "[C "A "f "t "e "r "[C "O "w "n "e "r "[C "S "t "o "p "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T01:02:12.090586" elapsed="0.046402"/>
</kw>
<msg time="2026-04-08T01:02:12.137266" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T01:02:12.137316" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "S "t "a "t "s "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:02:12.090050" elapsed="0.047304"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:12.137858" elapsed="0.000029"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:12.137490" elapsed="0.000432"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:12.137448" elapsed="0.000504"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:02:12.138562" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "S "t "a "t "s "[C "A "r "e "[C "N "o "t "[C "F "r "o "z "e "n "[C "A "f "t "e "r "[C "O "w "n "e "r "[C "S "t "o "p "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:02:12.138110" elapsed="0.000531"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:12.138977" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:12.138710" elapsed="0.000324"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:12.138692" elapsed="0.000365"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T01:02:12.139097" elapsed="0.000046"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:02:12.141814" elapsed="0.000188"/>
</kw>
<msg time="2026-04-08T01:02:12.142065" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:02:12.140774" elapsed="0.001449"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:12.142505" elapsed="0.000076"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:12.142855" elapsed="0.000075"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:02:12.140091" elapsed="0.002951"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T01:02:12.139482" elapsed="0.003627"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T01:02:12.051918" elapsed="0.091309"/>
</kw>
<msg time="2026-04-08T01:02:12.143329" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:02:12.143373" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "S "t "a "t "s "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:02:12.051308" elapsed="0.092106"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T01:02:12.143603" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-08T01:02:12.143495" elapsed="0.000167"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:12.143475" elapsed="0.000212"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:12.144103" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:12.144467" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T01:02:12.144540" elapsed="0.000017"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T01:02:12.050570" elapsed="0.094079"/>
</kw>
<msg time="2026-04-08T01:02:12.144748" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:02:12.144793" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "S "t "a "t "s "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:02:12.045825" elapsed="0.099007"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:12.145228" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:12.144912" elapsed="0.000372"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:12.144894" elapsed="0.000414"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T01:02:12.045677" elapsed="0.099656"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:02:12.151131" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:02:12.151017" elapsed="0.000263"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:12.150998" elapsed="0.000306"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:02:12.152609" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:02:12.152500" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:12.152481" elapsed="0.000195"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:02:12.153125" level="INFO">${karaf_connection_index} = 478</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:02:12.152823" elapsed="0.000329"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:02:12.153584" level="INFO">${current_connection_index} = 495</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:02:12.153333" elapsed="0.000278"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:02:12.189202" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:02:12.154109" elapsed="0.035193"/>
</kw>
<msg time="2026-04-08T01:02:12.189478" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T01:02:12.189525" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:02:12.153773" elapsed="0.035788"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T01:02:12.239220" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "S "t "a "t "s "[C "A "r "e "[C "N "o "t "[C "F "r "o "z "e "n "[C "A "f "t "e "r "[C "O "w "n "e "r "[C "S "t "o "p "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T01:02:12.190080" elapsed="0.049353"/>
</kw>
<msg time="2026-04-08T01:02:12.239650" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T01:02:12.239698" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "S "t "a "t "s "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:02:12.189738" elapsed="0.049997"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:12.240196" elapsed="0.000028"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:12.239851" elapsed="0.000408"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:12.239817" elapsed="0.000470"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:02:12.240814" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "S "t "a "t "s "[C "A "r "e "[C "N "o "t "[C "F "r "o "z "e "n "[C "A "f "t "e "r "[C "O "w "n "e "r "[C "S "t "o "p "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:02:12.240440" elapsed="0.000453"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:12.241200" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:12.240961" elapsed="0.000294"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:12.240942" elapsed="0.000336"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T01:02:12.241315" elapsed="0.000040"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:02:12.243970" elapsed="0.000184"/>
</kw>
<msg time="2026-04-08T01:02:12.244232" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:02:12.242911" elapsed="0.001457"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:12.244643" elapsed="0.000074"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:12.244972" elapsed="0.000072"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:02:12.242243" elapsed="0.002909"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T01:02:12.241644" elapsed="0.003596"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T01:02:12.152192" elapsed="0.093149"/>
</kw>
<msg time="2026-04-08T01:02:12.245502" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:02:12.245547" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "S "t "a "t "s "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:02:12.151460" elapsed="0.094123"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T01:02:12.245770" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-08T01:02:12.245663" elapsed="0.000166"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:12.245643" elapsed="0.000210"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 2,
close the previous connection. In any case create a new connection
to karaf console for 2, set correct prompt set and login to karaf console.
Store connection index for 2 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:12.246314" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:12.246655" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T01:02:12.246728" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T01:02:12.150541" elapsed="0.096325"/>
</kw>
<msg time="2026-04-08T01:02:12.246967" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:02:12.247013" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "S "t "a "t "s "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:02:12.145621" elapsed="0.101428"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:12.247412" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:12.247133" elapsed="0.000333"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:12.247115" elapsed="0.000374"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T01:02:12.145474" elapsed="0.102039"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:02:12.253288" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:02:12.253178" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:12.253145" elapsed="0.000210"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:02:12.254497" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:02:12.254388" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:12.254368" elapsed="0.000196"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:02:12.255028" level="INFO">${karaf_connection_index} = 480</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:02:12.254711" elapsed="0.000345"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:02:12.255489" level="INFO">${current_connection_index} = 495</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:02:12.255237" elapsed="0.000279"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:02:12.289078" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:02:12.256194" elapsed="0.033110"/>
</kw>
<msg time="2026-04-08T01:02:12.289524" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T01:02:12.289573" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:02:12.255677" elapsed="0.033934"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T01:02:12.338471" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "S "t "a "t "s "[C "A "r "e "[C "N "o "t "[C "F "r "o "z "e "n "[C "A "f "t "e "r "[C "O "w "n "e "r "[C "S "t "o "p "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T01:02:12.290315" elapsed="0.048381"/>
</kw>
<msg time="2026-04-08T01:02:12.338949" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T01:02:12.339013" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "S "t "a "t "s "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:02:12.289861" elapsed="0.049200"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:12.339601" elapsed="0.000027"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:12.339246" elapsed="0.000418"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:12.339204" elapsed="0.000616"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:02:12.340541" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "S "t "a "t "s "[C "A "r "e "[C "N "o "t "[C "F "r "o "z "e "n "[C "A "f "t "e "r "[C "O "w "n "e "r "[C "S "t "o "p "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:02:12.340008" elapsed="0.000638"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:12.340972" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:12.340724" elapsed="0.000306"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:12.340703" elapsed="0.000351"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T01:02:12.341094" elapsed="0.000041"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:02:12.344120" elapsed="0.000217"/>
</kw>
<msg time="2026-04-08T01:02:12.344405" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:02:12.342903" elapsed="0.001642"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:12.344825" elapsed="0.000079"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:12.345181" elapsed="0.000078"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:02:12.342068" elapsed="0.003307"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T01:02:12.341464" elapsed="0.003983"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T01:02:12.254061" elapsed="0.091529"/>
</kw>
<msg time="2026-04-08T01:02:12.345735" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:02:12.345794" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "S "t "a "t "s "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:02:12.253507" elapsed="0.092335"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T01:02:12.346046" elapsed="0.000028"/>
</return>
<status status="PASS" start="2026-04-08T01:02:12.345928" elapsed="0.000180"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:12.345907" elapsed="0.000225"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 3,
close the previous connection. In any case create a new connection
to karaf console for 3, set correct prompt set and login to karaf console.
Store connection index for 3 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:12.346570" elapsed="0.000027"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:12.346940" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T01:02:12.347018" elapsed="0.000018"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T01:02:12.252817" elapsed="0.094317"/>
</kw>
<msg time="2026-04-08T01:02:12.347253" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:02:12.347300" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "S "t "a "t "s "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:02:12.247794" elapsed="0.099545"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:12.347679" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:12.347419" elapsed="0.000313"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:12.347401" elapsed="0.000356"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T01:02:12.247648" elapsed="0.100133"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-08T01:02:12.045497" elapsed="0.302321"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-08T01:02:12.043005" elapsed="0.304874"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-08T01:02:12.038054" elapsed="0.309884"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:02:12.037610" elapsed="0.310396"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-08T01:02:12.034665" elapsed="0.313445"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Check Flow Stats Are Not Frozen">
<msg time="2026-04-08T01:02:12.353610" level="FAIL">Variable '${new_owner}' not found.</msg>
<arg>${new_owner}</arg>
<doc>Verify flow stats are not frozen for flow 1 and switch 1.</doc>
<status status="FAIL" start="2026-04-08T01:02:12.348936" elapsed="0.004770">Variable '${new_owner}' not found.</status>
</kw>
<kw name="Check Flow Stats Are Not Frozen">
<msg time="2026-04-08T01:02:13.363443" level="FAIL">Variable '${new_owner}' not found.</msg>
<arg>${new_owner}</arg>
<doc>Verify flow stats are not frozen for flow 1 and switch 1.</doc>
<status status="FAIL" start="2026-04-08T01:02:13.354498" elapsed="0.009004">Variable '${new_owner}' not found.</status>
</kw>
<kw name="Check Flow Stats Are Not Frozen">
<msg time="2026-04-08T01:02:14.372356" level="FAIL">Variable '${new_owner}' not found.</msg>
<arg>${new_owner}</arg>
<doc>Verify flow stats are not frozen for flow 1 and switch 1.</doc>
<status status="FAIL" start="2026-04-08T01:02:14.364294" elapsed="0.008139">Variable '${new_owner}' not found.</status>
</kw>
<kw name="Check Flow Stats Are Not Frozen">
<msg time="2026-04-08T01:02:15.380749" level="FAIL">Variable '${new_owner}' not found.</msg>
<arg>${new_owner}</arg>
<doc>Verify flow stats are not frozen for flow 1 and switch 1.</doc>
<status status="FAIL" start="2026-04-08T01:02:15.373189" elapsed="0.007627">Variable '${new_owner}' not found.</status>
</kw>
<kw name="Check Flow Stats Are Not Frozen">
<msg time="2026-04-08T01:02:16.388833" level="FAIL">Variable '${new_owner}' not found.</msg>
<arg>${new_owner}</arg>
<doc>Verify flow stats are not frozen for flow 1 and switch 1.</doc>
<status status="FAIL" start="2026-04-08T01:02:16.381548" elapsed="0.007358">Variable '${new_owner}' not found.</status>
</kw>
<kw name="Check Flow Stats Are Not Frozen">
<msg time="2026-04-08T01:02:17.393556" level="FAIL">Variable '${new_owner}' not found.</msg>
<arg>${new_owner}</arg>
<doc>Verify flow stats are not frozen for flow 1 and switch 1.</doc>
<status status="FAIL" start="2026-04-08T01:02:17.389453" elapsed="0.004156">Variable '${new_owner}' not found.</status>
</kw>
<kw name="Check Flow Stats Are Not Frozen">
<msg time="2026-04-08T01:02:18.400267" level="FAIL">Variable '${new_owner}' not found.</msg>
<arg>${new_owner}</arg>
<doc>Verify flow stats are not frozen for flow 1 and switch 1.</doc>
<status status="FAIL" start="2026-04-08T01:02:18.394215" elapsed="0.006121">Variable '${new_owner}' not found.</status>
</kw>
<kw name="Check Flow Stats Are Not Frozen">
<msg time="2026-04-08T01:02:19.410010" level="FAIL">Variable '${new_owner}' not found.</msg>
<arg>${new_owner}</arg>
<doc>Verify flow stats are not frozen for flow 1 and switch 1.</doc>
<status status="FAIL" start="2026-04-08T01:02:19.401045" elapsed="0.009067">Variable '${new_owner}' not found.</status>
</kw>
<kw name="Check Flow Stats Are Not Frozen">
<msg time="2026-04-08T01:02:20.416436" level="FAIL">Variable '${new_owner}' not found.</msg>
<arg>${new_owner}</arg>
<doc>Verify flow stats are not frozen for flow 1 and switch 1.</doc>
<status status="FAIL" start="2026-04-08T01:02:20.410760" elapsed="0.005744">Variable '${new_owner}' not found.</status>
</kw>
<kw name="Check Flow Stats Are Not Frozen">
<msg time="2026-04-08T01:02:21.426694" level="FAIL">Variable '${new_owner}' not found.</msg>
<arg>${new_owner}</arg>
<doc>Verify flow stats are not frozen for flow 1 and switch 1.</doc>
<status status="FAIL" start="2026-04-08T01:02:21.417302" elapsed="0.009498">Variable '${new_owner}' not found.</status>
</kw>
<kw name="Check Flow Stats Are Not Frozen">
<msg time="2026-04-08T01:02:22.435848" level="FAIL">Variable '${new_owner}' not found.</msg>
<arg>${new_owner}</arg>
<doc>Verify flow stats are not frozen for flow 1 and switch 1.</doc>
<status status="FAIL" start="2026-04-08T01:02:22.427724" elapsed="0.008198">Variable '${new_owner}' not found.</status>
</kw>
<kw name="Check Flow Stats Are Not Frozen">
<msg time="2026-04-08T01:02:23.442741" level="FAIL">Variable '${new_owner}' not found.</msg>
<arg>${new_owner}</arg>
<doc>Verify flow stats are not frozen for flow 1 and switch 1.</doc>
<status status="FAIL" start="2026-04-08T01:02:23.436579" elapsed="0.006254">Variable '${new_owner}' not found.</status>
</kw>
<kw name="Check Flow Stats Are Not Frozen">
<msg time="2026-04-08T01:02:24.453057" level="FAIL">Variable '${new_owner}' not found.</msg>
<arg>${new_owner}</arg>
<doc>Verify flow stats are not frozen for flow 1 and switch 1.</doc>
<status status="FAIL" start="2026-04-08T01:02:24.443624" elapsed="0.009557">Variable '${new_owner}' not found.</status>
</kw>
<kw name="Check Flow Stats Are Not Frozen">
<msg time="2026-04-08T01:02:25.463120" level="FAIL">Variable '${new_owner}' not found.</msg>
<arg>${new_owner}</arg>
<doc>Verify flow stats are not frozen for flow 1 and switch 1.</doc>
<status status="FAIL" start="2026-04-08T01:02:25.453946" elapsed="0.009319">Variable '${new_owner}' not found.</status>
</kw>
<kw name="Check Flow Stats Are Not Frozen">
<msg time="2026-04-08T01:02:26.472941" level="FAIL">Variable '${new_owner}' not found.</msg>
<arg>${new_owner}</arg>
<doc>Verify flow stats are not frozen for flow 1 and switch 1.</doc>
<status status="FAIL" start="2026-04-08T01:02:26.464080" elapsed="0.008929">Variable '${new_owner}' not found.</status>
</kw>
<kw name="Check Flow Stats Are Not Frozen">
<msg time="2026-04-08T01:02:27.482830" level="FAIL">Variable '${new_owner}' not found.</msg>
<arg>${new_owner}</arg>
<doc>Verify flow stats are not frozen for flow 1 and switch 1.</doc>
<status status="FAIL" start="2026-04-08T01:02:27.473793" elapsed="0.009136">Variable '${new_owner}' not found.</status>
</kw>
<kw name="Check Flow Stats Are Not Frozen">
<msg time="2026-04-08T01:02:28.492913" level="FAIL">Variable '${new_owner}' not found.</msg>
<arg>${new_owner}</arg>
<doc>Verify flow stats are not frozen for flow 1 and switch 1.</doc>
<status status="FAIL" start="2026-04-08T01:02:28.483677" elapsed="0.009345">Variable '${new_owner}' not found.</status>
</kw>
<kw name="Check Flow Stats Are Not Frozen">
<msg time="2026-04-08T01:02:29.501662" level="FAIL">Variable '${new_owner}' not found.</msg>
<arg>${new_owner}</arg>
<doc>Verify flow stats are not frozen for flow 1 and switch 1.</doc>
<status status="FAIL" start="2026-04-08T01:02:29.493824" elapsed="0.007909">Variable '${new_owner}' not found.</status>
</kw>
<kw name="Check Flow Stats Are Not Frozen">
<msg time="2026-04-08T01:02:30.511645" level="FAIL">Variable '${new_owner}' not found.</msg>
<arg>${new_owner}</arg>
<doc>Verify flow stats are not frozen for flow 1 and switch 1.</doc>
<status status="FAIL" start="2026-04-08T01:02:30.502562" elapsed="0.009144">Variable '${new_owner}' not found.</status>
</kw>
<kw name="Check Flow Stats Are Not Frozen">
<msg time="2026-04-08T01:02:31.521464" level="FAIL">Variable '${new_owner}' not found.</msg>
<arg>${new_owner}</arg>
<doc>Verify flow stats are not frozen for flow 1 and switch 1.</doc>
<status status="FAIL" start="2026-04-08T01:02:31.512475" elapsed="0.009133">Variable '${new_owner}' not found.</status>
</kw>
<kw name="Check Flow Stats Are Not Frozen">
<msg time="2026-04-08T01:02:32.531420" level="FAIL">Variable '${new_owner}' not found.</msg>
<arg>${new_owner}</arg>
<doc>Verify flow stats are not frozen for flow 1 and switch 1.</doc>
<status status="FAIL" start="2026-04-08T01:02:32.522398" elapsed="0.009127">Variable '${new_owner}' not found.</status>
</kw>
<kw name="Check Flow Stats Are Not Frozen">
<msg time="2026-04-08T01:02:33.541063" level="FAIL">Variable '${new_owner}' not found.</msg>
<arg>${new_owner}</arg>
<doc>Verify flow stats are not frozen for flow 1 and switch 1.</doc>
<status status="FAIL" start="2026-04-08T01:02:33.532401" elapsed="0.008737">Variable '${new_owner}' not found.</status>
</kw>
<kw name="Check Flow Stats Are Not Frozen">
<msg time="2026-04-08T01:02:34.550886" level="FAIL">Variable '${new_owner}' not found.</msg>
<arg>${new_owner}</arg>
<doc>Verify flow stats are not frozen for flow 1 and switch 1.</doc>
<status status="FAIL" start="2026-04-08T01:02:34.541921" elapsed="0.009067">Variable '${new_owner}' not found.</status>
</kw>
<kw name="Check Flow Stats Are Not Frozen">
<msg time="2026-04-08T01:02:35.559682" level="FAIL">Variable '${new_owner}' not found.</msg>
<arg>${new_owner}</arg>
<doc>Verify flow stats are not frozen for flow 1 and switch 1.</doc>
<status status="FAIL" start="2026-04-08T01:02:35.551758" elapsed="0.008081">Variable '${new_owner}' not found.</status>
</kw>
<kw name="Check Flow Stats Are Not Frozen">
<msg time="2026-04-08T01:02:36.567896" level="FAIL">Variable '${new_owner}' not found.</msg>
<arg>${new_owner}</arg>
<doc>Verify flow stats are not frozen for flow 1 and switch 1.</doc>
<status status="FAIL" start="2026-04-08T01:02:36.560568" elapsed="0.007398">Variable '${new_owner}' not found.</status>
</kw>
<kw name="Check Flow Stats Are Not Frozen">
<msg time="2026-04-08T01:02:37.577564" level="FAIL">Variable '${new_owner}' not found.</msg>
<arg>${new_owner}</arg>
<doc>Verify flow stats are not frozen for flow 1 and switch 1.</doc>
<status status="FAIL" start="2026-04-08T01:02:37.568723" elapsed="0.008945">Variable '${new_owner}' not found.</status>
</kw>
<kw name="Check Flow Stats Are Not Frozen">
<msg time="2026-04-08T01:02:38.587302" level="FAIL">Variable '${new_owner}' not found.</msg>
<arg>${new_owner}</arg>
<doc>Verify flow stats are not frozen for flow 1 and switch 1.</doc>
<status status="FAIL" start="2026-04-08T01:02:38.578521" elapsed="0.008835">Variable '${new_owner}' not found.</status>
</kw>
<kw name="Check Flow Stats Are Not Frozen">
<msg time="2026-04-08T01:02:39.597276" level="FAIL">Variable '${new_owner}' not found.</msg>
<arg>${new_owner}</arg>
<doc>Verify flow stats are not frozen for flow 1 and switch 1.</doc>
<status status="FAIL" start="2026-04-08T01:02:39.588115" elapsed="0.009264">Variable '${new_owner}' not found.</status>
</kw>
<kw name="Check Flow Stats Are Not Frozen">
<msg time="2026-04-08T01:02:40.607061" level="FAIL">Variable '${new_owner}' not found.</msg>
<arg>${new_owner}</arg>
<doc>Verify flow stats are not frozen for flow 1 and switch 1.</doc>
<status status="FAIL" start="2026-04-08T01:02:40.598125" elapsed="0.009066">Variable '${new_owner}' not found.</status>
</kw>
<kw name="Check Flow Stats Are Not Frozen">
<msg time="2026-04-08T01:02:41.617186" level="FAIL">Variable '${new_owner}' not found.</msg>
<arg>${new_owner}</arg>
<doc>Verify flow stats are not frozen for flow 1 and switch 1.</doc>
<status status="FAIL" start="2026-04-08T01:02:41.607915" elapsed="0.009326">Variable '${new_owner}' not found.</status>
</kw>
<kw name="Check Flow Stats Are Not Frozen">
<msg time="2026-04-08T01:02:42.628950" level="FAIL">Variable '${new_owner}' not found.</msg>
<arg>${new_owner}</arg>
<doc>Verify flow stats are not frozen for flow 1 and switch 1.</doc>
<status status="FAIL" start="2026-04-08T01:02:42.617905" elapsed="0.011121">Variable '${new_owner}' not found.</status>
</kw>
<msg time="2026-04-08T01:02:42.629191" level="FAIL">Keyword 'Check Flow Stats Are Not Frozen' failed after retrying for 30 seconds. The last error was: Variable '${new_owner}' not found.</msg>
<arg>30s</arg>
<arg>1s</arg>
<arg>Check Flow Stats Are Not Frozen</arg>
<arg>${new_owner}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="FAIL" start="2026-04-08T01:02:12.348390" elapsed="30.280999">Keyword 'Check Flow Stats Are Not Frozen' failed after retrying for 30 seconds. The last error was: Variable '${new_owner}' not found.</status>
</kw>
<doc>Check that duration flow stat is increasing in new owner.</doc>
<status status="FAIL" start="2026-04-08T01:02:12.034079" elapsed="30.595541">Keyword 'Check Flow Stats Are Not Frozen' failed after retrying for 30 seconds. The last error was: Variable '${new_owner}' not found.</status>
</test>
<test id="s1-s4-t53" name="Remove Configuration In Owner and Verify After Owner Stop" line="368">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-08T01:02:42.633659" elapsed="0.000254"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-08T01:02:42.633381" elapsed="0.000589"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:02:42.635050" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:02:42.634902" elapsed="0.000198"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:42.634878" elapsed="0.000245"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:02:42.639996" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:02:42.639890" elapsed="0.000150"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:42.639872" elapsed="0.000190"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:02:42.641078" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:02:42.640689" elapsed="0.000416"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:02:42.641583" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:02:42.641282" elapsed="0.000326"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T01:02:42.641652" elapsed="0.000032"/>
</return>
<msg time="2026-04-08T01:02:42.641808" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T01:02:42.640307" elapsed="0.001525"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:02:42.647485" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:02:42.647376" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:42.647357" elapsed="0.000195"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:02:42.648736" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:02:42.648628" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:42.648611" elapsed="0.000194"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:02:42.649312" level="INFO">${karaf_connection_index} = 476</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:02:42.648987" elapsed="0.000386"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:02:42.649800" level="INFO">${current_connection_index} = 495</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:02:42.649542" elapsed="0.000340"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:02:42.684350" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:02:42.650413" elapsed="0.034054"/>
</kw>
<msg time="2026-04-08T01:02:42.684637" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T01:02:42.684686" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:02:42.650050" elapsed="0.034671"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T01:02:42.752572" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "R "e "m "o "v "e "[C "C "o "n "f "i "g "u "r "a "t "i "o "n "[C "I "n "[C "O "w "n "e "r "[C "a "n "d "[C "V "e "r "i "f "y "[C "A "f "t "e "r "[C "O "w "n "e "[78Cr "[A[78C
 "S "t "o "p "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T01:02:42.685284" elapsed="0.067482"/>
</kw>
<msg time="2026-04-08T01:02:42.752972" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T01:02:42.753020" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "R "e "m "o "v "e "[C "C "o "n "f "i...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:02:42.684901" elapsed="0.068155"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:42.753494" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:42.753184" elapsed="0.000370"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:42.753134" elapsed="0.000446"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:02:42.754089" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "R "e "m "o "v "e "[C "C "o "n "f "i "g "u "r "a "t "i "o "n "[C "I "n "[C "O "w "n "e "r "[C "a "n "d "[C "V "e "r "i "f "y "[C "A "f "t "e "r "[C "O "w "n "e "[78Cr "[A[78C
 "S "t "o "p "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:02:42.753730" elapsed="0.000462"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:42.754488" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:42.754262" elapsed="0.000282"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:42.754244" elapsed="0.000324"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T01:02:42.754603" elapsed="0.000037"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:02:42.757280" elapsed="0.000184"/>
</kw>
<msg time="2026-04-08T01:02:42.757526" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:02:42.756219" elapsed="0.001439"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:42.757936" elapsed="0.000075"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:42.758295" elapsed="0.000073"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:02:42.755552" elapsed="0.002928"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T01:02:42.754927" elapsed="0.003617"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T01:02:42.648322" elapsed="0.110322"/>
</kw>
<msg time="2026-04-08T01:02:42.758739" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:02:42.758784" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "R "e "m "o "v "e "[C "C "o "n "f "i...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:02:42.647705" elapsed="0.111116"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T01:02:42.759007" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-08T01:02:42.758900" elapsed="0.000165"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:42.758881" elapsed="0.000207"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:42.759520" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:42.759861" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T01:02:42.760052" elapsed="0.000018"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T01:02:42.647004" elapsed="0.113188"/>
</kw>
<msg time="2026-04-08T01:02:42.760292" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:02:42.760337" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "R "e "m "o "v "e "[C "C "o "n "f "i...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:02:42.642222" elapsed="0.118151"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:42.760705" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:42.760450" elapsed="0.000310"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:42.760433" elapsed="0.000351"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T01:02:42.642061" elapsed="0.118747"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:02:42.766429" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:02:42.766320" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:42.766301" elapsed="0.000196"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:02:42.767684" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:02:42.767574" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:42.767556" elapsed="0.000196"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:02:42.768231" level="INFO">${karaf_connection_index} = 478</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:02:42.767900" elapsed="0.000358"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:02:42.768670" level="INFO">${current_connection_index} = 495</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:02:42.768419" elapsed="0.000278"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:02:42.811572" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:02:42.769217" elapsed="0.042600"/>
</kw>
<msg time="2026-04-08T01:02:42.812099" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T01:02:42.812151" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:02:42.768861" elapsed="0.043354"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T01:02:42.870368" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "R "e "m "o "v "e "[C "C "o "n "f "i "g "u "r "a "t "i "o "n "[C "I "n "[C "O "w "n "e "r "[C "a "n "d "[C "V "e "r "i "f "y "[C "A "f "t "e "r "[C "O "w "n "e "[78Cr "[A[78C
 "S "t "o "p "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T01:02:42.813014" elapsed="0.057657"/>
</kw>
<msg time="2026-04-08T01:02:42.870965" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T01:02:42.871033" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "R "e "m "o "v "e "[C "C "o "n "f "i...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:02:42.812508" elapsed="0.058576"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:42.871724" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:42.871275" elapsed="0.000533"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:42.871227" elapsed="0.000621"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:02:42.872662" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "R "e "m "o "v "e "[C "C "o "n "f "i "g "u "r "a "t "i "o "n "[C "I "n "[C "O "w "n "e "r "[C "a "n "d "[C "V "e "r "i "f "y "[C "A "f "t "e "r "[C "O "w "n "e "[78Cr "[A[78C
 "S "t "o "p "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:02:42.872059" elapsed="0.000720"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:42.873239" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:42.872875" elapsed="0.000420"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:42.872849" elapsed="0.000470"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T01:02:42.873359" elapsed="0.000044"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:02:42.876228" elapsed="0.000219"/>
</kw>
<msg time="2026-04-08T01:02:42.876512" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:02:42.875066" elapsed="0.001673"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:42.877026" elapsed="0.000077"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:42.877402" elapsed="0.000076"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:02:42.874387" elapsed="0.003207"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T01:02:42.873722" elapsed="0.003940"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T01:02:42.767269" elapsed="0.110496"/>
</kw>
<msg time="2026-04-08T01:02:42.877880" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:02:42.877927" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "R "e "m "o "v "e "[C "C "o "n "f "i...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:02:42.766652" elapsed="0.111313"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T01:02:42.878189" elapsed="0.000030"/>
</return>
<status status="PASS" start="2026-04-08T01:02:42.878051" elapsed="0.000224"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:42.878028" elapsed="0.000275"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 2,
close the previous connection. In any case create a new connection
to karaf console for 2, set correct prompt set and login to karaf console.
Store connection index for 2 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:42.878735" elapsed="0.000027"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:42.879090" elapsed="0.000026"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T01:02:42.879186" elapsed="0.000017"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T01:02:42.765935" elapsed="0.113367"/>
</kw>
<msg time="2026-04-08T01:02:42.879405" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:02:42.879451" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "R "e "m "o "v "e "[C "C "o "n "f "i...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:02:42.761084" elapsed="0.118402"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:42.879825" elapsed="0.000027"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:42.879568" elapsed="0.000337"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:42.879549" elapsed="0.000383"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T01:02:42.760939" elapsed="0.119022"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:02:42.886081" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:02:42.885970" elapsed="0.000158"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:42.885950" elapsed="0.000200"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:02:42.887341" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:02:42.887230" elapsed="0.000158"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:42.887210" elapsed="0.000200"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:02:42.887888" level="INFO">${karaf_connection_index} = 480</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:02:42.887559" elapsed="0.000357"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:02:42.888363" level="INFO">${current_connection_index} = 495</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:02:42.888081" elapsed="0.000310"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:02:42.920094" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:02:42.888900" elapsed="0.031384"/>
</kw>
<msg time="2026-04-08T01:02:42.920537" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T01:02:42.920607" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:02:42.888556" elapsed="0.032108"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T01:02:42.982834" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "R "e "m "o "v "e "[C "C "o "n "f "i "g "u "r "a "t "i "o "n "[C "I "n "[C "O "w "n "e "r "[C "a "n "d "[C "V "e "r "i "f "y "[C "A "f "t "e "r "[C "O "w "n "e "[78Cr "[A[78C
 "S "t "o "p "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T01:02:42.921522" elapsed="0.061725"/>
</kw>
<msg time="2026-04-08T01:02:42.983476" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T01:02:42.983525" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "R "e "m "o "v "e "[C "C "o "n "f "i...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:02:42.920949" elapsed="0.062614"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:42.984024" elapsed="0.000028"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:42.983688" elapsed="0.000398"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:42.983650" elapsed="0.000465"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:02:42.984672" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "R "e "m "o "v "e "[C "C "o "n "f "i "g "u "r "a "t "i "o "n "[C "I "n "[C "O "w "n "e "r "[C "a "n "d "[C "V "e "r "i "f "y "[C "A "f "t "e "r "[C "O "w "n "e "[78Cr "[A[78C
 "S "t "o "p "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:02:42.984289" elapsed="0.000463"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:42.985078" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:42.984823" elapsed="0.000328"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:42.984804" elapsed="0.000388"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T01:02:42.985232" elapsed="0.000041"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:02:42.987897" elapsed="0.000198"/>
</kw>
<msg time="2026-04-08T01:02:42.988181" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:02:42.986841" elapsed="0.001485"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:42.988606" elapsed="0.000077"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:42.988978" elapsed="0.000092"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:02:42.986179" elapsed="0.003134"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T01:02:42.985564" elapsed="0.003822"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T01:02:42.886892" elapsed="0.102598"/>
</kw>
<msg time="2026-04-08T01:02:42.989592" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:02:42.989638" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "R "e "m "o "v "e "[C "C "o "n "f "i...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:02:42.886324" elapsed="0.103351"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T01:02:42.989867" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-08T01:02:42.989756" elapsed="0.000172"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:42.989737" elapsed="0.000221"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 3,
close the previous connection. In any case create a new connection
to karaf console for 3, set correct prompt set and login to karaf console.
Store connection index for 3 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:42.990435" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:42.990785" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T01:02:42.990858" elapsed="0.000017"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T01:02:42.885610" elapsed="0.105359"/>
</kw>
<msg time="2026-04-08T01:02:42.991077" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:02:42.991130" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "R "e "m "o "v "e "[C "C "o "n "f "i...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:02:42.880419" elapsed="0.110768"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:42.991532" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:42.991271" elapsed="0.000315"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:42.991251" elapsed="0.000358"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T01:02:42.880260" elapsed="0.111372"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-08T01:02:42.641888" elapsed="0.349781"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-08T01:02:42.639530" elapsed="0.352198"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-08T01:02:42.634595" elapsed="0.357234"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:02:42.634128" elapsed="0.357751"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-08T01:02:42.630742" elapsed="0.361196"/>
</kw>
<kw name="Remove Single Group And Flow On Member">
<msg time="2026-04-08T01:02:42.996538" level="FAIL">Variable '${new_owner}' not found.</msg>
<arg>${new_owner}</arg>
<doc>Remove 1 group 1&amp;2 and 1 flow in every switch.</doc>
<status status="FAIL" start="2026-04-08T01:02:42.992149" elapsed="0.004430">Variable '${new_owner}' not found.</status>
</kw>
<doc>Remove 1 group 1&amp;2 and 1 flow in every switch.</doc>
<status status="FAIL" start="2026-04-08T01:02:42.629938" elapsed="0.366814">Variable '${new_owner}' not found.</status>
</test>
<test id="s1-s4-t54" name="Check Flows After Owner Stop In Operational DS" line="372">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-08T01:02:43.000121" elapsed="0.000236"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-08T01:02:42.999854" elapsed="0.000558"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:02:43.001451" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:02:43.001341" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:43.001323" elapsed="0.000195"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:02:43.006367" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:02:43.006254" elapsed="0.000158"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:43.006230" elapsed="0.000204"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:02:43.007469" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:02:43.007047" elapsed="0.000450"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:02:43.007970" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:02:43.007662" elapsed="0.000334"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T01:02:43.008041" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T01:02:43.008214" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T01:02:43.006664" elapsed="0.001577"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:02:43.013788" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:02:43.013678" elapsed="0.000156"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:43.013659" elapsed="0.000197"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:02:43.015012" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:02:43.014903" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:43.014884" elapsed="0.000196"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:02:43.015573" level="INFO">${karaf_connection_index} = 476</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:02:43.015250" elapsed="0.000350"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:02:43.016020" level="INFO">${current_connection_index} = 495</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:02:43.015764" elapsed="0.000283"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:02:43.048401" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:02:43.016606" elapsed="0.031899"/>
</kw>
<msg time="2026-04-08T01:02:43.048671" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T01:02:43.048719" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:02:43.016252" elapsed="0.032502"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T01:02:43.100205" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "[C "A "f "t "e "r "[C "O "w "n "e "r "[C "S "t "o "p "[C "I "n "[C "O "p "e "r "a "t "i "o "n "a "l "[C "D "S "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T01:02:43.049305" elapsed="0.051014"/>
</kw>
<msg time="2026-04-08T01:02:43.100526" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T01:02:43.100574" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:02:43.048931" elapsed="0.051679"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:43.100925" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:43.100691" elapsed="0.000290"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:43.100670" elapsed="0.000335"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:02:43.101494" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "[C "A "f "t "e "r "[C "O "w "n "e "r "[C "S "t "o "p "[C "I "n "[C "O "p "e "r "a "t "i "o "n "a "l "[C "D "S "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:02:43.101149" elapsed="0.000421"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:43.101862" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:43.101639" elapsed="0.000277"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:43.101621" elapsed="0.000318"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T01:02:43.102003" elapsed="0.000032"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:02:43.104541" elapsed="0.000180"/>
</kw>
<msg time="2026-04-08T01:02:43.104783" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:02:43.103488" elapsed="0.001427"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:43.105221" elapsed="0.000074"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:43.105551" elapsed="0.000077"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:02:43.102857" elapsed="0.002880"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T01:02:43.102319" elapsed="0.003482"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T01:02:43.014595" elapsed="0.091313"/>
</kw>
<msg time="2026-04-08T01:02:43.106000" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:02:43.106044" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:02:43.014010" elapsed="0.092071"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T01:02:43.106300" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-08T01:02:43.106192" elapsed="0.000166"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:43.106152" elapsed="0.000230"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:43.106770" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:43.107098" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T01:02:43.107185" elapsed="0.000017"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T01:02:43.013335" elapsed="0.093959"/>
</kw>
<msg time="2026-04-08T01:02:43.107387" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:02:43.107431" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:02:43.008645" elapsed="0.098821"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:43.107790" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:43.107540" elapsed="0.000303"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:43.107523" elapsed="0.000343"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T01:02:43.008500" elapsed="0.099389"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:02:43.113385" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:02:43.113278" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:43.113259" elapsed="0.000192"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:02:43.114733" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:02:43.114623" elapsed="0.000156"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:43.114605" elapsed="0.000196"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:02:43.115260" level="INFO">${karaf_connection_index} = 478</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:02:43.114947" elapsed="0.000340"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:02:43.115696" level="INFO">${current_connection_index} = 495</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:02:43.115448" elapsed="0.000274"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:02:43.147399" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:02:43.116236" elapsed="0.031274"/>
</kw>
<msg time="2026-04-08T01:02:43.147670" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T01:02:43.147717" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:02:43.115885" elapsed="0.031868"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T01:02:43.194652" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "[C "A "f "t "e "r "[C "O "w "n "e "r "[C "S "t "o "p "[C "I "n "[C "O "p "e "r "a "t "i "o "n "a "l "[C "D "S "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T01:02:43.148303" elapsed="0.046490"/>
</kw>
<msg time="2026-04-08T01:02:43.194970" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T01:02:43.195017" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:02:43.147931" elapsed="0.047123"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:43.195464" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:43.195151" elapsed="0.000371"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:43.195123" elapsed="0.000427"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:02:43.196073" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "[C "A "f "t "e "r "[C "O "w "n "e "r "[C "S "t "o "p "[C "I "n "[C "O "p "e "r "a "t "i "o "n "a "l "[C "D "S "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:02:43.195721" elapsed="0.000456"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:43.196618" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:43.196398" elapsed="0.000275"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:43.196229" elapsed="0.000467"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T01:02:43.196732" elapsed="0.000036"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:02:43.199396" elapsed="0.000203"/>
</kw>
<msg time="2026-04-08T01:02:43.199660" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:02:43.198290" elapsed="0.001504"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:43.200068" elapsed="0.000074"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:43.200431" elapsed="0.000074"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:02:43.197638" elapsed="0.002977"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T01:02:43.197048" elapsed="0.003632"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T01:02:43.114322" elapsed="0.086458"/>
</kw>
<msg time="2026-04-08T01:02:43.200875" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:02:43.200920" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:02:43.113642" elapsed="0.087315"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T01:02:43.201143" elapsed="0.000043"/>
</return>
<status status="PASS" start="2026-04-08T01:02:43.201035" elapsed="0.000185"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:43.201017" elapsed="0.000318"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 2,
close the previous connection. In any case create a new connection
to karaf console for 2, set correct prompt set and login to karaf console.
Store connection index for 2 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:43.201744" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:43.202083" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T01:02:43.202153" elapsed="0.000043"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T01:02:43.112922" elapsed="0.089369"/>
</kw>
<msg time="2026-04-08T01:02:43.202386" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:02:43.202430" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:02:43.108174" elapsed="0.094292"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:43.202792" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:43.202542" elapsed="0.000303"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:43.202525" elapsed="0.000343"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T01:02:43.108018" elapsed="0.094874"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:02:43.208490" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:02:43.208383" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:43.208364" elapsed="0.000191"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:02:43.209690" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:02:43.209584" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:43.209566" elapsed="0.000191"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:02:43.210311" level="INFO">${karaf_connection_index} = 480</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:02:43.209900" elapsed="0.000438"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:02:43.210748" level="INFO">${current_connection_index} = 495</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:02:43.210499" elapsed="0.000275"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:02:43.246348" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:02:43.211294" elapsed="0.035150"/>
</kw>
<msg time="2026-04-08T01:02:43.246622" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T01:02:43.246669" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:02:43.210936" elapsed="0.035768"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T01:02:43.294871" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "[C "A "f "t "e "r "[C "O "w "n "e "r "[C "S "t "o "p "[C "I "n "[C "O "p "e "r "a "t "i "o "n "a "l "[C "D "S "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T01:02:43.247251" elapsed="0.047742"/>
</kw>
<msg time="2026-04-08T01:02:43.295153" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T01:02:43.295222" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:02:43.246878" elapsed="0.048380"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:43.295568" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:43.295338" elapsed="0.000285"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:43.295317" elapsed="0.000330"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:02:43.296085" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "[C "A "f "t "e "r "[C "O "w "n "e "r "[C "S "t "o "p "[C "I "n "[C "O "p "e "r "a "t "i "o "n "a "l "[C "D "S "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:02:43.295790" elapsed="0.000557"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:43.296634" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:43.296417" elapsed="0.000316"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:43.296398" elapsed="0.000362"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T01:02:43.296794" elapsed="0.000032"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:02:43.299327" elapsed="0.000183"/>
</kw>
<msg time="2026-04-08T01:02:43.299571" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:02:43.298268" elapsed="0.001431"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:43.299967" elapsed="0.000079"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:43.300328" elapsed="0.000073"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:02:43.297647" elapsed="0.002864"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T01:02:43.297087" elapsed="0.003487"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T01:02:43.209284" elapsed="0.091388"/>
</kw>
<msg time="2026-04-08T01:02:43.300765" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:02:43.300809" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:02:43.208707" elapsed="0.092137"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T01:02:43.301052" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-08T01:02:43.300922" elapsed="0.000187"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:43.300903" elapsed="0.000229"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 3,
close the previous connection. In any case create a new connection
to karaf console for 3, set correct prompt set and login to karaf console.
Store connection index for 3 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:43.301569" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:43.301898" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T01:02:43.301968" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T01:02:43.208020" elapsed="0.094054"/>
</kw>
<msg time="2026-04-08T01:02:43.302180" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:02:43.302226" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:02:43.203186" elapsed="0.099077"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:02:43.302588" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:02:43.302339" elapsed="0.000302"/>
</branch>
<status status="PASS" start="2026-04-08T01:02:43.302322" elapsed="0.000342"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T01:02:43.203022" elapsed="0.099664"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-08T01:02:43.008319" elapsed="0.294399"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-08T01:02:43.005868" elapsed="0.296925"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-08T01:02:43.001015" elapsed="0.301837"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:02:43.000590" elapsed="0.302309"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-08T01:02:42.997691" elapsed="0.305264"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Check Number Of Flows On Member" owner="ClusterOpenFlow">
<msg time="2026-04-08T01:02:43.307823" level="FAIL">Variable '${new_owner}' not found.</msg>
<arg>${less_flows}</arg>
<arg>${new_owner}</arg>
<doc>Check number of flows in the inventory.</doc>
<status status="FAIL" start="2026-04-08T01:02:43.303706" elapsed="0.004157">Variable '${new_owner}' not found.</status>
</kw>
<kw name="Check Number Of Flows On Member" owner="ClusterOpenFlow">
<msg time="2026-04-08T01:02:44.317423" level="FAIL">Variable '${new_owner}' not found.</msg>
<arg>${less_flows}</arg>
<arg>${new_owner}</arg>
<doc>Check number of flows in the inventory.</doc>
<status status="FAIL" start="2026-04-08T01:02:44.308838" elapsed="0.008638">Variable '${new_owner}' not found.</status>
</kw>
<kw name="Check Number Of Flows On Member" owner="ClusterOpenFlow">
<msg time="2026-04-08T01:02:45.327426" level="FAIL">Variable '${new_owner}' not found.</msg>
<arg>${less_flows}</arg>
<arg>${new_owner}</arg>
<doc>Check number of flows in the inventory.</doc>
<status status="FAIL" start="2026-04-08T01:02:45.318439" elapsed="0.009090">Variable '${new_owner}' not found.</status>
</kw>
<kw name="Check Number Of Flows On Member" owner="ClusterOpenFlow">
<msg time="2026-04-08T01:02:46.337415" level="FAIL">Variable '${new_owner}' not found.</msg>
<arg>${less_flows}</arg>
<arg>${new_owner}</arg>
<doc>Check number of flows in the inventory.</doc>
<status status="FAIL" start="2026-04-08T01:02:46.328748" elapsed="0.008722">Variable '${new_owner}' not found.</status>
</kw>
<kw name="Check Number Of Flows On Member" owner="ClusterOpenFlow">
<msg time="2026-04-08T01:02:47.347415" level="FAIL">Variable '${new_owner}' not found.</msg>
<arg>${less_flows}</arg>
<arg>${new_owner}</arg>
<doc>Check number of flows in the inventory.</doc>
<status status="FAIL" start="2026-04-08T01:02:47.338491" elapsed="0.009025">Variable '${new_owner}' not found.</status>
</kw>
<kw name="Check Number Of Flows On Member" owner="ClusterOpenFlow">
<msg time="2026-04-08T01:02:48.356263" level="FAIL">Variable '${new_owner}' not found.</msg>
<arg>${less_flows}</arg>
<arg>${new_owner}</arg>
<doc>Check number of flows in the inventory.</doc>
<status status="FAIL" start="2026-04-08T01:02:48.348493" elapsed="0.007840">Variable '${new_owner}' not found.</status>
</kw>
<kw name="Check Number Of Flows On Member" owner="ClusterOpenFlow">
<msg time="2026-04-08T01:02:49.367237" level="FAIL">Variable '${new_owner}' not found.</msg>
<arg>${less_flows}</arg>
<arg>${new_owner}</arg>
<doc>Check number of flows in the inventory.</doc>
<status status="FAIL" start="2026-04-08T01:02:49.357311" elapsed="0.010088">Variable '${new_owner}' not found.</status>
</kw>
<kw name="Check Number Of Flows On Member" owner="ClusterOpenFlow">
<msg time="2026-04-08T01:02:50.377209" level="FAIL">Variable '${new_owner}' not found.</msg>
<arg>${less_flows}</arg>
<arg>${new_owner}</arg>
<doc>Check number of flows in the inventory.</doc>
<status status="FAIL" start="2026-04-08T01:02:50.368341" elapsed="0.008966">Variable '${new_owner}' not found.</status>
</kw>
<kw name="Check Number Of Flows On Member" owner="ClusterOpenFlow">
<msg time="2026-04-08T01:02:51.387590" level="FAIL">Variable '${new_owner}' not found.</msg>
<arg>${less_flows}</arg>
<arg>${new_owner}</arg>
<doc>Check number of flows in the inventory.</doc>
<status status="FAIL" start="2026-04-08T01:02:51.378350" elapsed="0.009345">Variable '${new_owner}' not found.</status>
</kw>
<kw name="Check Number Of Flows On Member" owner="ClusterOpenFlow">
<msg time="2026-04-08T01:02:52.395952" level="FAIL">Variable '${new_owner}' not found.</msg>
<arg>${less_flows}</arg>
<arg>${new_owner}</arg>
<doc>Check number of flows in the inventory.</doc>
<status status="FAIL" start="2026-04-08T01:02:52.388696" elapsed="0.007323">Variable '${new_owner}' not found.</status>
</kw>
<kw name="Check Number Of Flows On Member" owner="ClusterOpenFlow">
<msg time="2026-04-08T01:02:53.405742" level="FAIL">Variable '${new_owner}' not found.</msg>
<arg>${less_flows}</arg>
<arg>${new_owner}</arg>
<doc>Check number of flows in the inventory.</doc>
<status status="FAIL" start="2026-04-08T01:02:53.396950" elapsed="0.008847">Variable '${new_owner}' not found.</status>
</kw>
<kw name="Check Number Of Flows On Member" owner="ClusterOpenFlow">
<msg time="2026-04-08T01:02:54.415414" level="FAIL">Variable '${new_owner}' not found.</msg>
<arg>${less_flows}</arg>
<arg>${new_owner}</arg>
<doc>Check number of flows in the inventory.</doc>
<status status="FAIL" start="2026-04-08T01:02:54.406745" elapsed="0.008724">Variable '${new_owner}' not found.</status>
</kw>
<kw name="Check Number Of Flows On Member" owner="ClusterOpenFlow">
<msg time="2026-04-08T01:02:55.425887" level="FAIL">Variable '${new_owner}' not found.</msg>
<arg>${less_flows}</arg>
<arg>${new_owner}</arg>
<doc>Check number of flows in the inventory.</doc>
<status status="FAIL" start="2026-04-08T01:02:55.416415" elapsed="0.009577">Variable '${new_owner}' not found.</status>
</kw>
<kw name="Check Number Of Flows On Member" owner="ClusterOpenFlow">
<msg time="2026-04-08T01:02:56.435754" level="FAIL">Variable '${new_owner}' not found.</msg>
<arg>${less_flows}</arg>
<arg>${new_owner}</arg>
<doc>Check number of flows in the inventory.</doc>
<status status="FAIL" start="2026-04-08T01:02:56.426881" elapsed="0.008925">Variable '${new_owner}' not found.</status>
</kw>
<kw name="Check Number Of Flows On Member" owner="ClusterOpenFlow">
<msg time="2026-04-08T01:02:57.445587" level="FAIL">Variable '${new_owner}' not found.</msg>
<arg>${less_flows}</arg>
<arg>${new_owner}</arg>
<doc>Check number of flows in the inventory.</doc>
<status status="FAIL" start="2026-04-08T01:02:57.436731" elapsed="0.008961">Variable '${new_owner}' not found.</status>
</kw>
<kw name="Check Number Of Flows On Member" owner="ClusterOpenFlow">
<msg time="2026-04-08T01:02:58.454186" level="FAIL">Variable '${new_owner}' not found.</msg>
<arg>${less_flows}</arg>
<arg>${new_owner}</arg>
<doc>Check number of flows in the inventory.</doc>
<status status="FAIL" start="2026-04-08T01:02:58.446715" elapsed="0.007544">Variable '${new_owner}' not found.</status>
</kw>
<kw name="Check Number Of Flows On Member" owner="ClusterOpenFlow">
<msg time="2026-04-08T01:02:59.462545" level="FAIL">Variable '${new_owner}' not found.</msg>
<arg>${less_flows}</arg>
<arg>${new_owner}</arg>
<doc>Check number of flows in the inventory.</doc>
<status status="FAIL" start="2026-04-08T01:02:59.455303" elapsed="0.007316">Variable '${new_owner}' not found.</status>
</kw>
<kw name="Check Number Of Flows On Member" owner="ClusterOpenFlow">
<msg time="2026-04-08T01:03:00.472442" level="FAIL">Variable '${new_owner}' not found.</msg>
<arg>${less_flows}</arg>
<arg>${new_owner}</arg>
<doc>Check number of flows in the inventory.</doc>
<status status="FAIL" start="2026-04-08T01:03:00.463624" elapsed="0.008924">Variable '${new_owner}' not found.</status>
</kw>
<kw name="Check Number Of Flows On Member" owner="ClusterOpenFlow">
<msg time="2026-04-08T01:03:01.482993" level="FAIL">Variable '${new_owner}' not found.</msg>
<arg>${less_flows}</arg>
<arg>${new_owner}</arg>
<doc>Check number of flows in the inventory.</doc>
<status status="FAIL" start="2026-04-08T01:03:01.473594" elapsed="0.009455">Variable '${new_owner}' not found.</status>
</kw>
<kw name="Check Number Of Flows On Member" owner="ClusterOpenFlow">
<msg time="2026-04-08T01:03:02.493189" level="FAIL">Variable '${new_owner}' not found.</msg>
<arg>${less_flows}</arg>
<arg>${new_owner}</arg>
<doc>Check number of flows in the inventory.</doc>
<status status="FAIL" start="2026-04-08T01:03:02.483935" elapsed="0.009361">Variable '${new_owner}' not found.</status>
</kw>
<kw name="Check Number Of Flows On Member" owner="ClusterOpenFlow">
<msg time="2026-04-08T01:03:03.503471" level="FAIL">Variable '${new_owner}' not found.</msg>
<arg>${less_flows}</arg>
<arg>${new_owner}</arg>
<doc>Check number of flows in the inventory.</doc>
<status status="FAIL" start="2026-04-08T01:03:03.494382" elapsed="0.009212">Variable '${new_owner}' not found.</status>
</kw>
<kw name="Check Number Of Flows On Member" owner="ClusterOpenFlow">
<msg time="2026-04-08T01:03:04.515869" level="FAIL">Variable '${new_owner}' not found.</msg>
<arg>${less_flows}</arg>
<arg>${new_owner}</arg>
<doc>Check number of flows in the inventory.</doc>
<status status="FAIL" start="2026-04-08T01:03:04.504847" elapsed="0.011102">Variable '${new_owner}' not found.</status>
</kw>
<kw name="Check Number Of Flows On Member" owner="ClusterOpenFlow">
<msg time="2026-04-08T01:03:05.525447" level="FAIL">Variable '${new_owner}' not found.</msg>
<arg>${less_flows}</arg>
<arg>${new_owner}</arg>
<doc>Check number of flows in the inventory.</doc>
<status status="FAIL" start="2026-04-08T01:03:05.517098" elapsed="0.008402">Variable '${new_owner}' not found.</status>
</kw>
<kw name="Check Number Of Flows On Member" owner="ClusterOpenFlow">
<msg time="2026-04-08T01:03:06.535257" level="FAIL">Variable '${new_owner}' not found.</msg>
<arg>${less_flows}</arg>
<arg>${new_owner}</arg>
<doc>Check number of flows in the inventory.</doc>
<status status="FAIL" start="2026-04-08T01:03:06.526573" elapsed="0.008737">Variable '${new_owner}' not found.</status>
</kw>
<kw name="Check Number Of Flows On Member" owner="ClusterOpenFlow">
<msg time="2026-04-08T01:03:07.546595" level="FAIL">Variable '${new_owner}' not found.</msg>
<arg>${less_flows}</arg>
<arg>${new_owner}</arg>
<doc>Check number of flows in the inventory.</doc>
<status status="FAIL" start="2026-04-08T01:03:07.536314" elapsed="0.010343">Variable '${new_owner}' not found.</status>
</kw>
<kw name="Check Number Of Flows On Member" owner="ClusterOpenFlow">
<msg time="2026-04-08T01:03:08.556407" level="FAIL">Variable '${new_owner}' not found.</msg>
<arg>${less_flows}</arg>
<arg>${new_owner}</arg>
<doc>Check number of flows in the inventory.</doc>
<status status="FAIL" start="2026-04-08T01:03:08.547660" elapsed="0.008801">Variable '${new_owner}' not found.</status>
</kw>
<kw name="Check Number Of Flows On Member" owner="ClusterOpenFlow">
<msg time="2026-04-08T01:03:09.566348" level="FAIL">Variable '${new_owner}' not found.</msg>
<arg>${less_flows}</arg>
<arg>${new_owner}</arg>
<doc>Check number of flows in the inventory.</doc>
<status status="FAIL" start="2026-04-08T01:03:09.557418" elapsed="0.009035">Variable '${new_owner}' not found.</status>
</kw>
<kw name="Check Number Of Flows On Member" owner="ClusterOpenFlow">
<msg time="2026-04-08T01:03:10.576328" level="FAIL">Variable '${new_owner}' not found.</msg>
<arg>${less_flows}</arg>
<arg>${new_owner}</arg>
<doc>Check number of flows in the inventory.</doc>
<status status="FAIL" start="2026-04-08T01:03:10.567442" elapsed="0.008990">Variable '${new_owner}' not found.</status>
</kw>
<kw name="Check Number Of Flows On Member" owner="ClusterOpenFlow">
<msg time="2026-04-08T01:03:11.586757" level="FAIL">Variable '${new_owner}' not found.</msg>
<arg>${less_flows}</arg>
<arg>${new_owner}</arg>
<doc>Check number of flows in the inventory.</doc>
<status status="FAIL" start="2026-04-08T01:03:11.577479" elapsed="0.009381">Variable '${new_owner}' not found.</status>
</kw>
<kw name="Check Number Of Flows On Member" owner="ClusterOpenFlow">
<msg time="2026-04-08T01:03:12.596933" level="FAIL">Variable '${new_owner}' not found.</msg>
<arg>${less_flows}</arg>
<arg>${new_owner}</arg>
<doc>Check number of flows in the inventory.</doc>
<status status="FAIL" start="2026-04-08T01:03:12.587882" elapsed="0.009153">Variable '${new_owner}' not found.</status>
</kw>
<kw name="Check Number Of Flows On Member" owner="ClusterOpenFlow">
<msg time="2026-04-08T01:03:13.607295" level="FAIL">Variable '${new_owner}' not found.</msg>
<arg>${less_flows}</arg>
<arg>${new_owner}</arg>
<doc>Check number of flows in the inventory.</doc>
<status status="FAIL" start="2026-04-08T01:03:13.598017" elapsed="0.009333">Variable '${new_owner}' not found.</status>
</kw>
<msg time="2026-04-08T01:03:13.607463" level="FAIL">Keyword 'ClusterOpenFlow.Check Number Of Flows On Member' failed after retrying for 30 seconds. The last error was: Variable '${new_owner}' not found.</msg>
<arg>30s</arg>
<arg>1s</arg>
<arg>ClusterOpenFlow.Check Number Of Flows On Member</arg>
<arg>${less_flows}</arg>
<arg>${new_owner}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="FAIL" start="2026-04-08T01:02:43.303136" elapsed="30.304472">Keyword 'ClusterOpenFlow.Check Number Of Flows On Member' failed after retrying for 30 seconds. The last error was: Variable '${new_owner}' not found.</status>
</kw>
<doc>Check Flows in Operational DS in new owner.</doc>
<status status="FAIL" start="2026-04-08T01:02:42.997081" elapsed="30.610706">Keyword 'ClusterOpenFlow.Check Number Of Flows On Member' failed after retrying for 30 seconds. The last error was: Variable '${new_owner}' not found.</status>
</test>
<test id="s1-s4-t55" name="Check Groups After Owner Stop In Operational DS" line="381">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-08T01:03:13.611261" elapsed="0.000262"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-08T01:03:13.610961" elapsed="0.000620"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:03:13.612658" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:03:13.612516" elapsed="0.000190"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:13.612493" elapsed="0.000235"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:03:13.617634" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:03:13.617524" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:13.617506" elapsed="0.000195"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:03:13.618737" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:03:13.618350" elapsed="0.000414"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:03:13.619245" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:03:13.618926" elapsed="0.000344"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T01:03:13.619314" elapsed="0.000032"/>
</return>
<msg time="2026-04-08T01:03:13.619469" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T01:03:13.617932" elapsed="0.001561"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:03:13.624931" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:03:13.624822" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:13.624802" elapsed="0.000195"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:03:13.626232" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:03:13.626101" elapsed="0.000176"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:13.626082" elapsed="0.000217"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:03:13.626753" level="INFO">${karaf_connection_index} = 476</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:03:13.626450" elapsed="0.000330"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:03:13.627222" level="INFO">${current_connection_index} = 495</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:03:13.626946" elapsed="0.000358"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:03:13.658662" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:03:13.627813" elapsed="0.030958"/>
</kw>
<msg time="2026-04-08T01:03:13.658940" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T01:03:13.658988" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:03:13.627471" elapsed="0.031577"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T01:03:13.711183" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "G "r "o "u "p "s "[C "A "f "t "e "r "[C "O "w "n "e "r "[C "S "t "o "p "[C "I "n "[C "O "p "e "r "a "t "i "o "n "a "l "[C "D "S "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T01:03:13.660311" elapsed="0.050991"/>
</kw>
<msg time="2026-04-08T01:03:13.711465" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T01:03:13.711512" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "G "r "o "u "p "s...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:03:13.659489" elapsed="0.052059"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:13.711883" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:03:13.711637" elapsed="0.000302"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:13.711613" elapsed="0.000351"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:03:13.712461" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "G "r "o "u "p "s "[C "A "f "t "e "r "[C "O "w "n "e "r "[C "S "t "o "p "[C "I "n "[C "O "p "e "r "a "t "i "o "n "a "l "[C "D "S "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:03:13.712112" elapsed="0.000425"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:13.712825" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:03:13.712605" elapsed="0.000275"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:13.712586" elapsed="0.000317"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T01:03:13.712938" elapsed="0.000036"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:03:13.715789" elapsed="0.000189"/>
</kw>
<msg time="2026-04-08T01:03:13.716044" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:03:13.714518" elapsed="0.001679"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:13.716479" elapsed="0.000077"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:13.716813" elapsed="0.000075"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:03:13.713819" elapsed="0.003181"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T01:03:13.713268" elapsed="0.003797"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T01:03:13.625774" elapsed="0.091420"/>
</kw>
<msg time="2026-04-08T01:03:13.717293" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:03:13.717337" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "G "r "o "u "p "s...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:03:13.625152" elapsed="0.092222"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T01:03:13.717559" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-08T01:03:13.717452" elapsed="0.000164"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:13.717434" elapsed="0.000206"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:13.718051" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:13.718409" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T01:03:13.718481" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T01:03:13.624483" elapsed="0.094154"/>
</kw>
<msg time="2026-04-08T01:03:13.718731" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:03:13.718774" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "G "r "o "u "p "s...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:03:13.619870" elapsed="0.098939"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:13.719138" elapsed="0.000035"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:03:13.718885" elapsed="0.000322"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:13.718869" elapsed="0.000362"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T01:03:13.619723" elapsed="0.099531"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:03:13.724837" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:03:13.724729" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:13.724710" elapsed="0.000193"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:03:13.726058" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:03:13.725949" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:13.725930" elapsed="0.000195"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:03:13.726600" level="INFO">${karaf_connection_index} = 478</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:03:13.726301" elapsed="0.000326"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:03:13.727052" level="INFO">${current_connection_index} = 495</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:03:13.726787" elapsed="0.000293"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:03:13.757060" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:03:13.727595" elapsed="0.029585"/>
</kw>
<msg time="2026-04-08T01:03:13.757353" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T01:03:13.757400" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:03:13.727259" elapsed="0.030175"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T01:03:13.805837" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "G "r "o "u "p "s "[C "A "f "t "e "r "[C "O "w "n "e "r "[C "S "t "o "p "[C "I "n "[C "O "p "e "r "a "t "i "o "n "a "l "[C "D "S "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T01:03:13.757968" elapsed="0.048000"/>
</kw>
<msg time="2026-04-08T01:03:13.806146" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T01:03:13.806214" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "G "r "o "u "p "s...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:03:13.757608" elapsed="0.048645"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:13.806592" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:03:13.806341" elapsed="0.000308"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:13.806317" elapsed="0.000358"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:03:13.807146" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "G "r "o "u "p "s "[C "A "f "t "e "r "[C "O "w "n "e "r "[C "S "t "o "p "[C "I "n "[C "O "p "e "r "a "t "i "o "n "a "l "[C "D "S "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:03:13.806822" elapsed="0.000433"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:13.807548" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:03:13.807325" elapsed="0.000278"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:13.807306" elapsed="0.000320"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T01:03:13.807660" elapsed="0.000032"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:03:13.810318" elapsed="0.000185"/>
</kw>
<msg time="2026-04-08T01:03:13.810564" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:03:13.809133" elapsed="0.001560"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:13.811025" elapsed="0.000076"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:13.811392" elapsed="0.000074"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:03:13.808516" elapsed="0.003059"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T01:03:13.807951" elapsed="0.003688"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T01:03:13.725623" elapsed="0.086114"/>
</kw>
<msg time="2026-04-08T01:03:13.811828" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:03:13.811872" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "G "r "o "u "p "s...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:03:13.725056" elapsed="0.086851"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T01:03:13.812093" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-08T01:03:13.811986" elapsed="0.000165"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:13.811966" elapsed="0.000233"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 2,
close the previous connection. In any case create a new connection
to karaf console for 2, set correct prompt set and login to karaf console.
Store connection index for 2 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:13.812586" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:13.812915" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T01:03:13.812985" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T01:03:13.724386" elapsed="0.088706"/>
</kw>
<msg time="2026-04-08T01:03:13.813203" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:03:13.813249" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "G "r "o "u "p "s...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:03:13.719525" elapsed="0.093758"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:13.813608" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:03:13.813359" elapsed="0.000301"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:13.813342" elapsed="0.000341"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T01:03:13.719382" elapsed="0.094324"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:03:13.819436" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:03:13.819328" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:13.819307" elapsed="0.000196"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:03:13.820666" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:03:13.820558" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:13.820540" elapsed="0.000194"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:03:13.821194" level="INFO">${karaf_connection_index} = 480</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:03:13.820880" elapsed="0.000342"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:03:13.821633" level="INFO">${current_connection_index} = 495</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:03:13.821383" elapsed="0.000277"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:03:13.856148" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:03:13.822220" elapsed="0.034046"/>
</kw>
<msg time="2026-04-08T01:03:13.856439" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T01:03:13.856489" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:03:13.821862" elapsed="0.034672"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T01:03:13.907567" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "G "r "o "u "p "s "[C "A "f "t "e "r "[C "O "w "n "e "r "[C "S "t "o "p "[C "I "n "[C "O "p "e "r "a "t "i "o "n "a "l "[C "D "S "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T01:03:13.857088" elapsed="0.050619"/>
</kw>
<msg time="2026-04-08T01:03:13.907944" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T01:03:13.907992" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "G "r "o "u "p "s...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:03:13.856720" elapsed="0.051309"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:13.908412" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:03:13.908123" elapsed="0.000346"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:13.908097" elapsed="0.000397"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:03:13.908966" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "G "r "o "u "p "s "[C "A "f "t "e "r "[C "O "w "n "e "r "[C "S "t "o "p "[C "I "n "[C "O "p "e "r "a "t "i "o "n "a "l "[C "D "S "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:03:13.908640" elapsed="0.000402"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:13.909350" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:03:13.909110" elapsed="0.000295"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:13.909092" elapsed="0.000336"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T01:03:13.909464" elapsed="0.000036"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:03:13.912171" elapsed="0.000185"/>
</kw>
<msg time="2026-04-08T01:03:13.912419" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:03:13.911001" elapsed="0.001549"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:13.912823" elapsed="0.000074"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:13.913152" elapsed="0.000089"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:03:13.910368" elapsed="0.002982"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T01:03:13.909787" elapsed="0.003626"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T01:03:13.820257" elapsed="0.093255"/>
</kw>
<msg time="2026-04-08T01:03:13.913607" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:03:13.913650" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "G "r "o "u "p "s...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:03:13.819657" elapsed="0.094029"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T01:03:13.913885" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-08T01:03:13.913779" elapsed="0.000163"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:13.913760" elapsed="0.000206"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 3,
close the previous connection. In any case create a new connection
to karaf console for 3, set correct prompt set and login to karaf console.
Store connection index for 3 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:13.914391" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:13.914729" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T01:03:13.914800" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T01:03:13.818960" elapsed="0.095946"/>
</kw>
<msg time="2026-04-08T01:03:13.915001" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:03:13.915045" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "G "r "o "u "p "s...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:03:13.813993" elapsed="0.101088"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:13.915428" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:03:13.915176" elapsed="0.000305"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:13.915139" elapsed="0.000366"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T01:03:13.813849" elapsed="0.101679"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-08T01:03:13.619550" elapsed="0.296011"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-08T01:03:13.617138" elapsed="0.298481"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-08T01:03:13.612211" elapsed="0.303502"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:03:13.611740" elapsed="0.304021"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-08T01:03:13.608789" elapsed="0.307030"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Check Number Of Groups On Member" owner="ClusterOpenFlow">
<msg time="2026-04-08T01:03:13.920695" level="FAIL">Variable '${new_owner}' not found.</msg>
<arg>${less_groups}</arg>
<arg>${new_owner}</arg>
<doc>Check number of groups in the inventory.</doc>
<status status="FAIL" start="2026-04-08T01:03:13.916559" elapsed="0.004175">Variable '${new_owner}' not found.</status>
</kw>
<kw name="Check Number Of Groups On Member" owner="ClusterOpenFlow">
<msg time="2026-04-08T01:03:14.930926" level="FAIL">Variable '${new_owner}' not found.</msg>
<arg>${less_groups}</arg>
<arg>${new_owner}</arg>
<doc>Check number of groups in the inventory.</doc>
<status status="FAIL" start="2026-04-08T01:03:14.921735" elapsed="0.009295">Variable '${new_owner}' not found.</status>
</kw>
<kw name="Check Number Of Groups On Member" owner="ClusterOpenFlow">
<msg time="2026-04-08T01:03:15.941103" level="FAIL">Variable '${new_owner}' not found.</msg>
<arg>${less_groups}</arg>
<arg>${new_owner}</arg>
<doc>Check number of groups in the inventory.</doc>
<status status="FAIL" start="2026-04-08T01:03:15.932008" elapsed="0.009231">Variable '${new_owner}' not found.</status>
</kw>
<kw name="Check Number Of Groups On Member" owner="ClusterOpenFlow">
<msg time="2026-04-08T01:03:16.951361" level="FAIL">Variable '${new_owner}' not found.</msg>
<arg>${less_groups}</arg>
<arg>${new_owner}</arg>
<doc>Check number of groups in the inventory.</doc>
<status status="FAIL" start="2026-04-08T01:03:16.942241" elapsed="0.009227">Variable '${new_owner}' not found.</status>
</kw>
<kw name="Check Number Of Groups On Member" owner="ClusterOpenFlow">
<msg time="2026-04-08T01:03:17.961544" level="FAIL">Variable '${new_owner}' not found.</msg>
<arg>${less_groups}</arg>
<arg>${new_owner}</arg>
<doc>Check number of groups in the inventory.</doc>
<status status="FAIL" start="2026-04-08T01:03:17.952454" elapsed="0.009150">Variable '${new_owner}' not found.</status>
</kw>
<kw name="Check Number Of Groups On Member" owner="ClusterOpenFlow">
<msg time="2026-04-08T01:03:18.971371" level="FAIL">Variable '${new_owner}' not found.</msg>
<arg>${less_groups}</arg>
<arg>${new_owner}</arg>
<doc>Check number of groups in the inventory.</doc>
<status status="FAIL" start="2026-04-08T01:03:18.962666" elapsed="0.008791">Variable '${new_owner}' not found.</status>
</kw>
<kw name="Check Number Of Groups On Member" owner="ClusterOpenFlow">
<msg time="2026-04-08T01:03:19.977437" level="FAIL">Variable '${new_owner}' not found.</msg>
<arg>${less_groups}</arg>
<arg>${new_owner}</arg>
<doc>Check number of groups in the inventory.</doc>
<status status="FAIL" start="2026-04-08T01:03:19.972206" elapsed="0.005287">Variable '${new_owner}' not found.</status>
</kw>
<kw name="Check Number Of Groups On Member" owner="ClusterOpenFlow">
<msg time="2026-04-08T01:03:20.987391" level="FAIL">Variable '${new_owner}' not found.</msg>
<arg>${less_groups}</arg>
<arg>${new_owner}</arg>
<doc>Check number of groups in the inventory.</doc>
<status status="FAIL" start="2026-04-08T01:03:20.978531" elapsed="0.008959">Variable '${new_owner}' not found.</status>
</kw>
<kw name="Check Number Of Groups On Member" owner="ClusterOpenFlow">
<msg time="2026-04-08T01:03:21.997403" level="FAIL">Variable '${new_owner}' not found.</msg>
<arg>${less_groups}</arg>
<arg>${new_owner}</arg>
<doc>Check number of groups in the inventory.</doc>
<status status="FAIL" start="2026-04-08T01:03:21.988531" elapsed="0.008969">Variable '${new_owner}' not found.</status>
</kw>
<kw name="Check Number Of Groups On Member" owner="ClusterOpenFlow">
<msg time="2026-04-08T01:03:23.006895" level="FAIL">Variable '${new_owner}' not found.</msg>
<arg>${less_groups}</arg>
<arg>${new_owner}</arg>
<doc>Check number of groups in the inventory.</doc>
<status status="FAIL" start="2026-04-08T01:03:22.998543" elapsed="0.008404">Variable '${new_owner}' not found.</status>
</kw>
<kw name="Check Number Of Groups On Member" owner="ClusterOpenFlow">
<msg time="2026-04-08T01:03:24.016793" level="FAIL">Variable '${new_owner}' not found.</msg>
<arg>${less_groups}</arg>
<arg>${new_owner}</arg>
<doc>Check number of groups in the inventory.</doc>
<status status="FAIL" start="2026-04-08T01:03:24.007896" elapsed="0.008969">Variable '${new_owner}' not found.</status>
</kw>
<msg time="2026-04-08T01:03:24.016993" level="FAIL">Keyword 'ClusterOpenFlow.Check Number Of Groups On Member' failed after retrying for 10 seconds. The last error was: Variable '${new_owner}' not found.</msg>
<arg>10s</arg>
<arg>1s</arg>
<arg>ClusterOpenFlow.Check Number Of Groups On Member</arg>
<arg>${less_groups}</arg>
<arg>${new_owner}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="FAIL" start="2026-04-08T01:03:13.915996" elapsed="10.101193">Keyword 'ClusterOpenFlow.Check Number Of Groups On Member' failed after retrying for 10 seconds. The last error was: Variable '${new_owner}' not found.</status>
</kw>
<doc>Check Groups in Operational DS in new owner.</doc>
<status status="FAIL" start="2026-04-08T01:03:13.608214" elapsed="10.409167">Keyword 'ClusterOpenFlow.Check Number Of Groups On Member' failed after retrying for 10 seconds. The last error was: Variable '${new_owner}' not found.</status>
</test>
<test id="s1-s4-t56" name="Check Flows In Switch After Owner Stop" line="390">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-08T01:03:24.020885" elapsed="0.000317"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-08T01:03:24.020607" elapsed="0.000655"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:03:24.022370" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:03:24.022227" elapsed="0.000191"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:24.022201" elapsed="0.000241"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:03:24.027832" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:03:24.027721" elapsed="0.000156"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:24.027703" elapsed="0.000196"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:03:24.028942" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:03:24.028543" elapsed="0.000427"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:03:24.029628" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:03:24.029318" elapsed="0.000427"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T01:03:24.029794" elapsed="0.000034"/>
</return>
<msg time="2026-04-08T01:03:24.029957" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T01:03:24.028143" elapsed="0.001839"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:03:24.035368" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:03:24.035259" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:24.035240" elapsed="0.000195"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:03:24.036620" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:03:24.036512" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:24.036493" elapsed="0.000194"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:03:24.037140" level="INFO">${karaf_connection_index} = 476</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:03:24.036836" elapsed="0.000363"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:03:24.037650" level="INFO">${current_connection_index} = 495</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:03:24.037377" elapsed="0.000303"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:03:24.068683" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:03:24.038209" elapsed="0.030603"/>
</kw>
<msg time="2026-04-08T01:03:24.069001" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T01:03:24.069051" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:03:24.037849" elapsed="0.031238"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T01:03:24.113734" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "[C "I "n "[C "S "w "i "t "c "h "[C "A "f "t "e "r "[C "O "w "n "e "r "[C "S "t "o "p "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T01:03:24.069716" elapsed="0.044131"/>
</kw>
<msg time="2026-04-08T01:03:24.114009" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T01:03:24.114057" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:03:24.069324" elapsed="0.044768"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:24.114470" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:03:24.114213" elapsed="0.000316"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:24.114185" elapsed="0.000371"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:03:24.115021" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "[C "I "n "[C "S "w "i "t "c "h "[C "A "f "t "e "r "[C "O "w "n "e "r "[C "S "t "o "p "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:03:24.114708" elapsed="0.000388"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:24.115448" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:03:24.115182" elapsed="0.000325"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:24.115146" elapsed="0.000385"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T01:03:24.115567" elapsed="0.000038"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:03:24.118245" elapsed="0.000187"/>
</kw>
<msg time="2026-04-08T01:03:24.118496" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:03:24.117102" elapsed="0.001527"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:24.118905" elapsed="0.000074"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:24.119259" elapsed="0.000289"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:03:24.116473" elapsed="0.003195"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T01:03:24.115888" elapsed="0.003896"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T01:03:24.036207" elapsed="0.083680"/>
</kw>
<msg time="2026-04-08T01:03:24.119980" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:03:24.120024" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:03:24.035597" elapsed="0.084463"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T01:03:24.120265" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-08T01:03:24.120137" elapsed="0.000188"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:24.120118" elapsed="0.000231"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:24.120746" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:24.121083" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T01:03:24.121168" elapsed="0.000017"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T01:03:24.034908" elapsed="0.086370"/>
</kw>
<msg time="2026-04-08T01:03:24.121373" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:03:24.121417" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:03:24.030381" elapsed="0.091071"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:24.121778" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:03:24.121527" elapsed="0.000306"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:24.121510" elapsed="0.000346"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T01:03:24.030233" elapsed="0.091646"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:03:24.127423" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:03:24.127287" elapsed="0.000181"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:24.127267" elapsed="0.000223"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:03:24.128646" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:03:24.128535" elapsed="0.000157"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:24.128517" elapsed="0.000197"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:03:24.129177" level="INFO">${karaf_connection_index} = 478</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:03:24.128862" elapsed="0.000343"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:03:24.129625" level="INFO">${current_connection_index} = 495</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:03:24.129370" elapsed="0.000281"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:03:24.161567" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:03:24.130170" elapsed="0.031499"/>
</kw>
<msg time="2026-04-08T01:03:24.161842" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T01:03:24.161890" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:03:24.129814" elapsed="0.032112"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T01:03:24.206412" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "[C "I "n "[C "S "w "i "t "c "h "[C "A "f "t "e "r "[C "O "w "n "e "r "[C "S "t "o "p "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T01:03:24.162486" elapsed="0.044062"/>
</kw>
<msg time="2026-04-08T01:03:24.206715" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T01:03:24.206760" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:03:24.162102" elapsed="0.044694"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:24.207250" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:03:24.206881" elapsed="0.000429"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:24.206857" elapsed="0.000479"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:03:24.207795" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "[C "I "n "[C "S "w "i "t "c "h "[C "A "f "t "e "r "[C "O "w "n "e "r "[C "S "t "o "p "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:03:24.207484" elapsed="0.000384"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:24.208175" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:03:24.207937" elapsed="0.000294"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:24.207918" elapsed="0.000337"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T01:03:24.208290" elapsed="0.000039"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:03:24.210856" elapsed="0.000186"/>
</kw>
<msg time="2026-04-08T01:03:24.211103" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:03:24.209774" elapsed="0.001506"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:24.211557" elapsed="0.000074"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:24.211887" elapsed="0.000072"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:03:24.209138" elapsed="0.002929"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T01:03:24.208594" elapsed="0.003539"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T01:03:24.128232" elapsed="0.084025"/>
</kw>
<msg time="2026-04-08T01:03:24.212351" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:03:24.212395" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:03:24.127645" elapsed="0.084787"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T01:03:24.212849" elapsed="0.000028"/>
</return>
<status status="PASS" start="2026-04-08T01:03:24.212510" elapsed="0.000402"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:24.212491" elapsed="0.000446"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 2,
close the previous connection. In any case create a new connection
to karaf console for 2, set correct prompt set and login to karaf console.
Store connection index for 2 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:24.213353" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:24.213691" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T01:03:24.213763" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T01:03:24.126883" elapsed="0.086986"/>
</kw>
<msg time="2026-04-08T01:03:24.213964" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:03:24.214007" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:03:24.122152" elapsed="0.091890"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:24.214387" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:03:24.214117" elapsed="0.000323"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:24.214100" elapsed="0.000363"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T01:03:24.122009" elapsed="0.092477"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:03:24.219956" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:03:24.219848" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:24.219829" elapsed="0.000194"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:03:24.221213" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:03:24.221078" elapsed="0.000181"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:24.221060" elapsed="0.000220"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:03:24.221741" level="INFO">${karaf_connection_index} = 480</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:03:24.221428" elapsed="0.000379"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:03:24.222247" level="INFO">${current_connection_index} = 495</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:03:24.221975" elapsed="0.000299"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:03:24.253455" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:03:24.222778" elapsed="0.030788"/>
</kw>
<msg time="2026-04-08T01:03:24.253732" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T01:03:24.253780" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:03:24.222437" elapsed="0.031379"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T01:03:24.306086" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "[C "I "n "[C "S "w "i "t "c "h "[C "A "f "t "e "r "[C "O "w "n "e "r "[C "S "t "o "p "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T01:03:24.254401" elapsed="0.051888"/>
</kw>
<msg time="2026-04-08T01:03:24.306515" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T01:03:24.306577" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:03:24.254002" elapsed="0.052616"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:24.307078" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:03:24.306729" elapsed="0.000419"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:24.306696" elapsed="0.000518"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:03:24.307872" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "[C "I "n "[C "S "w "i "t "c "h "[C "A "f "t "e "r "[C "O "w "n "e "r "[C "S "t "o "p "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:03:24.307425" elapsed="0.000552"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:24.308317" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:03:24.308071" elapsed="0.000302"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:24.308046" elapsed="0.000350"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T01:03:24.308434" elapsed="0.000041"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:03:24.311717" elapsed="0.000196"/>
</kw>
<msg time="2026-04-08T01:03:24.311976" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:03:24.310362" elapsed="0.001752"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:24.312419" elapsed="0.000075"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:24.312754" elapsed="0.000075"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:03:24.309599" elapsed="0.003344"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T01:03:24.308832" elapsed="0.004180"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T01:03:24.220779" elapsed="0.092334"/>
</kw>
<msg time="2026-04-08T01:03:24.313228" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:03:24.313275" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:03:24.220224" elapsed="0.093093"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T01:03:24.313506" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-08T01:03:24.313399" elapsed="0.000166"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:24.313379" elapsed="0.000210"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 3,
close the previous connection. In any case create a new connection
to karaf console for 3, set correct prompt set and login to karaf console.
Store connection index for 3 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:24.314289" elapsed="0.000027"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:24.314639" elapsed="0.000080"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T01:03:24.314768" elapsed="0.000017"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T01:03:24.219508" elapsed="0.095371"/>
</kw>
<msg time="2026-04-08T01:03:24.314977" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:03:24.315043" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:03:24.214756" elapsed="0.100324"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:24.315449" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:03:24.315190" elapsed="0.000314"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:24.315142" elapsed="0.000386"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T01:03:24.214613" elapsed="0.100940"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-08T01:03:24.030039" elapsed="0.285550"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-08T01:03:24.027314" elapsed="0.288341"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-08T01:03:24.021896" elapsed="0.293819"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:03:24.021427" elapsed="0.294337"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-08T01:03:24.018370" elapsed="0.297450"/>
</kw>
<kw name="Check Flows In Mininet" owner="MininetKeywords">
<if>
<branch type="IF" condition="&quot;&quot;&quot;${mininet_conn}&quot;&quot;&quot; != &quot;&quot;">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${mininet_conn}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:03:24.316708" elapsed="0.000175"/>
</kw>
<status status="PASS" start="2026-04-08T01:03:24.316486" elapsed="0.000434"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:24.316468" elapsed="0.000477"/>
</if>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:03:24.317411" level="INFO">${cmd} = dpctl dump-aggregate -O OpenFlow13</msg>
<var>${cmd}</var>
<arg>dpctl dump-aggregate -O OpenFlow13</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:03:24.317129" elapsed="0.000308"/>
</kw>
<kw name="Send Mininet Command" owner="MininetKeywords">
<if>
<branch type="IF" condition="&quot;&quot;&quot;${mininet_conn}&quot;&quot;&quot; != &quot;&quot;">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${mininet_conn}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:03:24.318297" elapsed="0.000175"/>
</kw>
<status status="PASS" start="2026-04-08T01:03:24.318062" elapsed="0.000446"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:24.318044" elapsed="0.000488"/>
</if>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:03:24.321508" level="INFO">dpctl dump-aggregate -O OpenFlow13</msg>
<arg>${cmd}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:03:24.318672" elapsed="0.002892"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-08T01:03:24.387714" level="INFO">*** s1 ------------------------------------------------------------------------
OFPST_AGGREGATE reply (OF1.3) (xid=0x2): packet_count=71 byte_count=5855 flow_count=101
*** s2 ------------------------------------------------------------------------
OFPST_AGGREGATE reply (OF1.3) (xid=0x2): packet_count=135 byte_count=11220 flow_count=101
*** s3 ------------------------------------------------------------------------
OFPST_AGGREGATE reply (OF1.3) (xid=0x2): packet_count=70 byte_count=5785 flow_count=101
mininet&gt;</msg>
<msg time="2026-04-08T01:03:24.387887" level="INFO">${output} = *** s1 ------------------------------------------------------------------------
OFPST_AGGREGATE reply (OF1.3) (xid=0x2): packet_count=71 byte_count=5855 flow_count=101
*** s2 ----------------------...</msg>
<var>${output}</var>
<arg>mininet&gt;</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-08T01:03:24.321730" elapsed="0.066185"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-08T01:03:24.387988" elapsed="0.000053"/>
</return>
<msg time="2026-04-08T01:03:24.388220" level="INFO">${output} = *** s1 ------------------------------------------------------------------------
OFPST_AGGREGATE reply (OF1.3) (xid=0x2): packet_count=71 byte_count=5855 flow_count=101
*** s2 ----------------------...</msg>
<var>${output}</var>
<arg>${mininet_conn}</arg>
<arg>${cmd}</arg>
<doc>Sends Command dpctl dump-aggregate -O OpenFlow13 to Mininet session 495 and returns read buffer response.</doc>
<status status="PASS" start="2026-04-08T01:03:24.317761" elapsed="0.070488"/>
</kw>
<kw name="Get Regexp Matches" owner="String">
<msg time="2026-04-08T01:03:24.388778" level="INFO">${flows} = ['101', '101', '101']</msg>
<var>${flows}</var>
<arg>${output}</arg>
<arg>(?&lt;=flow_count\=).*?(?=\r)</arg>
<doc>Returns a list of all non-overlapping matches in the given string.</doc>
<status status="PASS" start="2026-04-08T01:03:24.388462" elapsed="0.000342"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:03:24.389431" level="INFO">${total_flows} = 303</msg>
<var>${total_flows}</var>
<arg>sum(map(int, ${flows}))</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:03:24.388969" elapsed="0.000490"/>
</kw>
<kw name="Should Be Equal As Numbers" owner="BuiltIn">
<msg time="2026-04-08T01:03:24.390043" level="FAIL">303.0 != 300.0</msg>
<arg>${total_flows}</arg>
<arg>${flow_count}</arg>
<doc>Fails if objects are unequal after converting them to real numbers.</doc>
<status status="FAIL" start="2026-04-08T01:03:24.389668" elapsed="0.000449">303.0 != 300.0</status>
</kw>
<arg>${mininet_conn_id}</arg>
<arg>${less_flows}</arg>
<doc>Sync with mininet to match exact number of flows</doc>
<status status="FAIL" start="2026-04-08T01:03:24.316099" elapsed="0.074169">303.0 != 300.0</status>
</kw>
<doc>Check Flows in switch.</doc>
<status status="FAIL" start="2026-04-08T01:03:24.017774" elapsed="0.372650">303.0 != 300.0</status>
</test>
<test id="s1-s4-t57" name="Start Old Owner Instance" line="394">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-08T01:03:24.393894" elapsed="0.000213"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-08T01:03:24.393622" elapsed="0.000556"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:03:24.395216" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:03:24.395083" elapsed="0.000180"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:24.395064" elapsed="0.000221"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:03:24.400367" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:03:24.400260" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:24.400242" elapsed="0.000192"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:03:24.401440" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:03:24.401040" elapsed="0.000427"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:03:24.401938" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:03:24.401630" elapsed="0.000334"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T01:03:24.402008" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T01:03:24.402178" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T01:03:24.400662" elapsed="0.001543"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:03:24.407638" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:03:24.407531" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:24.407511" elapsed="0.000194"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:03:24.408868" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:03:24.408760" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:24.408742" elapsed="0.000193"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:03:24.409420" level="INFO">${karaf_connection_index} = 476</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:03:24.409082" elapsed="0.000365"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:03:24.409871" level="INFO">${current_connection_index} = 495</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:03:24.409611" elapsed="0.000287"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:03:24.443105" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:03:24.410539" elapsed="0.032792"/>
</kw>
<msg time="2026-04-08T01:03:24.443576" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T01:03:24.443646" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:03:24.410061" elapsed="0.033638"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T01:03:24.507644" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "S "t "a "r "t "[C "O "l "d "[C "O "w "n "e "r "[C "I "n "s "t "a "n "c "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T01:03:24.444532" elapsed="0.063238"/>
</kw>
<msg time="2026-04-08T01:03:24.507941" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T01:03:24.507988" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "S "t "a "r "t "[C "O "l "d "[C "O "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:03:24.443965" elapsed="0.064058"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:24.508397" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:03:24.508119" elapsed="0.000335"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:24.508092" elapsed="0.000387"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:03:24.508945" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "S "t "a "r "t "[C "O "l "d "[C "O "w "n "e "r "[C "I "n "s "t "a "n "c "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:03:24.508625" elapsed="0.000388"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:24.509322" elapsed="0.000080"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:03:24.509082" elapsed="0.000357"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:24.509064" elapsed="0.000399"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T01:03:24.509498" elapsed="0.000036"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:03:24.512189" elapsed="0.000189"/>
</kw>
<msg time="2026-04-08T01:03:24.512438" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:03:24.511053" elapsed="0.001517"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:24.512844" elapsed="0.001675"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:24.514815" elapsed="0.000078"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:03:24.510388" elapsed="0.004619"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T01:03:24.509807" elapsed="0.005265"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T01:03:24.408458" elapsed="0.106731"/>
</kw>
<msg time="2026-04-08T01:03:24.515283" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:03:24.515327" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "S "t "a "r "t "[C "O "l "d "[C "O "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:03:24.407857" elapsed="0.107505"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T01:03:24.515560" elapsed="0.000029"/>
</return>
<status status="PASS" start="2026-04-08T01:03:24.515439" elapsed="0.000184"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:24.515420" elapsed="0.000226"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:24.516046" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:24.516399" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T01:03:24.516471" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T01:03:24.407195" elapsed="0.109381"/>
</kw>
<msg time="2026-04-08T01:03:24.516666" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:03:24.516710" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "S "t "a "r "t "[C "O "l "d "[C "O "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:03:24.402590" elapsed="0.114155"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:24.517189" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:03:24.516818" elapsed="0.000428"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:24.516802" elapsed="0.000467"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T01:03:24.402445" elapsed="0.114847"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:03:24.522708" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:03:24.522588" elapsed="0.000166"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:24.522569" elapsed="0.000207"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:03:24.523940" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:03:24.523831" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:24.523812" elapsed="0.000195"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:03:24.524482" level="INFO">${karaf_connection_index} = 478</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:03:24.524178" elapsed="0.000331"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:03:24.524922" level="INFO">${current_connection_index} = 495</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:03:24.524670" elapsed="0.000279"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:03:24.553542" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:03:24.525470" elapsed="0.028171"/>
</kw>
<msg time="2026-04-08T01:03:24.554004" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T01:03:24.554053" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:03:24.525111" elapsed="0.028979"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T01:03:24.582192" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "S "t "a "r "t "[C "O "l "d "[C "O "w "n "e "r "[C "I "n "s "t "a "n "c "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T01:03:24.554656" elapsed="0.027643"/>
</kw>
<msg time="2026-04-08T01:03:24.582459" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T01:03:24.582520" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "S "t "a "r "t "[C "O "l "d "[C "O "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:03:24.554293" elapsed="0.028265"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:24.582871" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:03:24.582639" elapsed="0.000287"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:24.582618" elapsed="0.000333"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:03:24.583424" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "S "t "a "r "t "[C "O "l "d "[C "O "w "n "e "r "[C "I "n "s "t "a "n "c "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:03:24.583099" elapsed="0.000393"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:24.583780" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:03:24.583560" elapsed="0.000274"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:24.583542" elapsed="0.000315"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T01:03:24.583889" elapsed="0.000032"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:03:24.586448" elapsed="0.000214"/>
</kw>
<msg time="2026-04-08T01:03:24.586724" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:03:24.585372" elapsed="0.001483"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:24.587169" elapsed="0.000079"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:24.587505" elapsed="0.000075"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:03:24.584733" elapsed="0.002957"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T01:03:24.584190" elapsed="0.003563"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T01:03:24.523497" elapsed="0.064354"/>
</kw>
<msg time="2026-04-08T01:03:24.587943" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:03:24.587986" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "S "t "a "r "t "[C "O "l "d "[C "O "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:03:24.522929" elapsed="0.065093"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T01:03:24.588230" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-08T01:03:24.588100" elapsed="0.000189"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:24.588081" elapsed="0.000236"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 2,
close the previous connection. In any case create a new connection
to karaf console for 2, set correct prompt set and login to karaf console.
Store connection index for 2 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:24.588899" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:24.589250" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T01:03:24.589322" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T01:03:24.522237" elapsed="0.067189"/>
</kw>
<msg time="2026-04-08T01:03:24.589519" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:03:24.589561" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "S "t "a "r "t "[C "O "l "d "[C "O "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:03:24.517563" elapsed="0.072033"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:24.589992" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:03:24.589738" elapsed="0.000307"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:24.589720" elapsed="0.000348"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T01:03:24.517418" elapsed="0.072673"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:03:24.595454" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:03:24.595345" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:24.595326" elapsed="0.000195"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:03:24.596748" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:03:24.596639" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:24.596621" elapsed="0.000194"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:03:24.597272" level="INFO">${karaf_connection_index} = 480</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:03:24.596961" elapsed="0.000338"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:03:24.597708" level="INFO">${current_connection_index} = 495</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:03:24.597460" elapsed="0.000273"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:03:24.631367" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:03:24.598244" elapsed="0.033240"/>
</kw>
<msg time="2026-04-08T01:03:24.631644" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T01:03:24.631691" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:03:24.597895" elapsed="0.033831"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T01:03:24.662265" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "S "t "a "r "t "[C "O "l "d "[C "O "w "n "e "r "[C "I "n "s "t "a "n "c "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T01:03:24.632268" elapsed="0.030119"/>
</kw>
<msg time="2026-04-08T01:03:24.662548" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T01:03:24.662595" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "S "t "a "r "t "[C "O "l "d "[C "O "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:03:24.631901" elapsed="0.030729"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:24.662939" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:03:24.662711" elapsed="0.000283"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:24.662690" elapsed="0.000328"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:03:24.663487" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "S "t "a "r "t "[C "O "l "d "[C "O "w "n "e "r "[C "I "n "s "t "a "n "c "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:03:24.663186" elapsed="0.000367"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:24.663836" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:03:24.663620" elapsed="0.000269"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:24.663601" elapsed="0.000311"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T01:03:24.663945" elapsed="0.000030"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:03:24.666561" elapsed="0.000184"/>
</kw>
<msg time="2026-04-08T01:03:24.666806" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:03:24.665463" elapsed="0.001472"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:24.667231" elapsed="0.000075"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:24.667568" elapsed="0.000073"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:03:24.664782" elapsed="0.002969"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T01:03:24.664240" elapsed="0.003575"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T01:03:24.596336" elapsed="0.071622"/>
</kw>
<msg time="2026-04-08T01:03:24.668053" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:03:24.668097" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "S "t "a "r "t "[C "O "l "d "[C "O "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:03:24.595676" elapsed="0.072457"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T01:03:24.668337" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-08T01:03:24.668230" elapsed="0.000165"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:24.668211" elapsed="0.000208"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 3,
close the previous connection. In any case create a new connection
to karaf console for 3, set correct prompt set and login to karaf console.
Store connection index for 3 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:24.668807" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:24.669349" elapsed="0.000026"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T01:03:24.669423" elapsed="0.000017"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T01:03:24.594989" elapsed="0.074542"/>
</kw>
<msg time="2026-04-08T01:03:24.669625" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:03:24.669668" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "S "t "a "r "t "[C "O "l "d "[C "O "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:03:24.590381" elapsed="0.079322"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:24.670025" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:03:24.669778" elapsed="0.000300"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:24.669761" elapsed="0.000340"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T01:03:24.590234" elapsed="0.079891"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-08T01:03:24.402263" elapsed="0.267909"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-08T01:03:24.399884" elapsed="0.270351"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-08T01:03:24.394776" elapsed="0.275519"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:03:24.394337" elapsed="0.276005"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-08T01:03:24.391432" elapsed="0.279002"/>
</kw>
<kw name="Start_Single_Member" owner="ClusterManagement">
<msg time="2026-04-08T01:03:24.674710" level="FAIL">Variable '${original_owner}' not found.</msg>
<arg>${original_owner}</arg>
<doc>Convenience keyword that starts the specified member of the cluster.</doc>
<status status="FAIL" start="2026-04-08T01:03:24.670675" elapsed="0.004073">Variable '${original_owner}' not found.</status>
</kw>
<doc>Start old Owner Instance and verify it is up.</doc>
<status status="FAIL" start="2026-04-08T01:03:24.390777" elapsed="0.284119">Variable '${original_owner}' not found.</status>
</test>
<test id="s1-s4-t58" name="Check Entity Owner Status And Find Owner and Successor After Start Owner" line="398">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-08T01:03:24.678129" elapsed="0.000242"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-08T01:03:24.677865" elapsed="0.000563"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:03:24.679443" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:03:24.679334" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:24.679316" elapsed="0.000194"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:03:24.684577" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:03:24.684465" elapsed="0.000158"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:24.684445" elapsed="0.000201"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:03:24.685784" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:03:24.685277" elapsed="0.000534"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:03:24.686302" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:03:24.685974" elapsed="0.000368"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T01:03:24.686387" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T01:03:24.686539" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T01:03:24.684876" elapsed="0.001688"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:03:24.692137" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:03:24.692029" elapsed="0.000171"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:24.692010" elapsed="0.000213"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:03:24.693370" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:03:24.693262" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:24.693244" elapsed="0.000194"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:03:24.693886" level="INFO">${karaf_connection_index} = 476</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:03:24.693586" elapsed="0.000327"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:03:24.694371" level="INFO">${current_connection_index} = 495</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:03:24.694073" elapsed="0.000325"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:03:24.730479" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:03:24.694953" elapsed="0.035632"/>
</kw>
<msg time="2026-04-08T01:03:24.730749" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T01:03:24.730796" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:03:24.694562" elapsed="0.036269"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T01:03:24.803453" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "E "n "t "i "t "y "[C "O "w "n "e "r "[C "S "t "a "t "u "s "[C "A "n "d "[C "F "i "n "d "[C "O "w "n "e "r "[C "a "n "d "[C "S "u "c "c "e "s "[78Cs "[A[78Co
 "r "[C "A "f "t "e "r "[C "S "t "a "r "t "[C "O "w "n "e "r "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T01:03:24.731389" elapsed="0.072204"/>
</kw>
<msg time="2026-04-08T01:03:24.803764" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T01:03:24.803811" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "E "n "t "i "t "y...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:03:24.731009" elapsed="0.072838"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:24.804222" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:03:24.803942" elapsed="0.000337"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:24.803915" elapsed="0.000391"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:03:24.804783" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "E "n "t "i "t "y "[C "O "w "n "e "r "[C "S "t "a "t "u "s "[C "A "n "d "[C "F "i "n "d "[C "O "w "n "e "r "[C "a "n "d "[C "S "u "c "c "e "s "[78Cs "[A[78Co
 "r "[C "A "f "t "e "r "[C "S "t "a "r "t "[C "O "w "n "e "r "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:03:24.804454" elapsed="0.000416"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:24.805176" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:03:24.804937" elapsed="0.000297"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:24.804919" elapsed="0.000338"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T01:03:24.805291" elapsed="0.000034"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:03:24.807863" elapsed="0.000186"/>
</kw>
<msg time="2026-04-08T01:03:24.808112" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:03:24.806849" elapsed="0.001492"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:24.808621" elapsed="0.000074"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:24.808949" elapsed="0.000074"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:03:24.806185" elapsed="0.002949"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T01:03:24.805599" elapsed="0.003617"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T01:03:24.692937" elapsed="0.116380"/>
</kw>
<msg time="2026-04-08T01:03:24.809462" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:03:24.809507" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "E "n "t "i "t "y...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:03:24.692377" elapsed="0.117166"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T01:03:24.809729" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-08T01:03:24.809621" elapsed="0.000167"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:24.809602" elapsed="0.000209"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:24.810251" elapsed="0.000027"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:24.810591" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T01:03:24.810663" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T01:03:24.691694" elapsed="0.119078"/>
</kw>
<msg time="2026-04-08T01:03:24.810867" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:03:24.810912" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "E "n "t "i "t "y...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:03:24.686981" elapsed="0.123966"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:24.811340" elapsed="0.000027"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:03:24.811024" elapsed="0.000383"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:24.811007" elapsed="0.000427"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T01:03:24.686835" elapsed="0.124626"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:03:24.817317" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:03:24.817208" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:24.817186" elapsed="0.000199"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:03:24.818554" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:03:24.818446" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:24.818428" elapsed="0.000194"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:03:24.819067" level="INFO">${karaf_connection_index} = 478</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:03:24.818767" elapsed="0.000328"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:03:24.819526" level="INFO">${current_connection_index} = 495</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:03:24.819275" elapsed="0.000278"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:03:24.852996" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:03:24.820053" elapsed="0.033221"/>
</kw>
<msg time="2026-04-08T01:03:24.853654" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T01:03:24.853762" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:03:24.819716" elapsed="0.034127"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T01:03:24.929467" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "E "n "t "i "t "y "[C "O "w "n "e "r "[C "S "t "a "t "u "s "[C "A "n "d "[C "F "i "n "d "[C "O "w "n "e "r "[C "a "n "d "[C "S "u "c "c "e "s "[78Cs "[A[78Co
 "r "[C "A "f "t "e "r "[C "S "t "a "r "t "[C "O "w "n "e "r "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T01:03:24.854721" elapsed="0.074881"/>
</kw>
<msg time="2026-04-08T01:03:24.929765" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T01:03:24.929813" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "E "n "t "i "t "y...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:03:24.854339" elapsed="0.075510"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:24.930235" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:03:24.929961" elapsed="0.000331"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:24.929934" elapsed="0.000384"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:03:24.930863" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "E "n "t "i "t "y "[C "O "w "n "e "r "[C "S "t "a "t "u "s "[C "A "n "d "[C "F "i "n "d "[C "O "w "n "e "r "[C "a "n "d "[C "S "u "c "c "e "s "[78Cs "[A[78Co
 "r "[C "A "f "t "e "r "[C "S "t "a "r "t "[C "O "w "n "e "r "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:03:24.930550" elapsed="0.000397"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:24.931258" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:03:24.931015" elapsed="0.000300"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:24.930997" elapsed="0.000341"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T01:03:24.931374" elapsed="0.000037"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:03:24.933985" elapsed="0.000214"/>
</kw>
<msg time="2026-04-08T01:03:24.934267" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:03:24.932882" elapsed="0.001518"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:24.934673" elapsed="0.000075"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:24.935003" elapsed="0.000073"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:03:24.932261" elapsed="0.002945"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T01:03:24.931684" elapsed="0.003588"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T01:03:24.818113" elapsed="0.117259"/>
</kw>
<msg time="2026-04-08T01:03:24.935465" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:03:24.935510" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "E "n "t "i "t "y...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:03:24.817538" elapsed="0.118008"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T01:03:24.935732" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-08T01:03:24.935624" elapsed="0.000165"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:24.935606" elapsed="0.000206"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 2,
close the previous connection. In any case create a new connection
to karaf console for 2, set correct prompt set and login to karaf console.
Store connection index for 2 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:24.936228" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:24.936574" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T01:03:24.936644" elapsed="0.000017"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T01:03:24.816848" elapsed="0.119904"/>
</kw>
<msg time="2026-04-08T01:03:24.936847" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:03:24.936891" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "E "n "t "i "t "y...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:03:24.811778" elapsed="0.125150"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:24.937274" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:03:24.937005" elapsed="0.000323"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:24.936987" elapsed="0.000364"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T01:03:24.811608" elapsed="0.125768"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:03:24.942986" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:03:24.942877" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:24.942858" elapsed="0.000194"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:03:24.944289" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:03:24.944177" elapsed="0.000159"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:24.944138" elapsed="0.000220"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:03:24.944807" level="INFO">${karaf_connection_index} = 480</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:03:24.944505" elapsed="0.000346"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:03:24.945349" level="INFO">${current_connection_index} = 495</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:03:24.945065" elapsed="0.000311"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:03:24.976251" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:03:24.945896" elapsed="0.030566"/>
</kw>
<msg time="2026-04-08T01:03:24.976807" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T01:03:24.976912" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:03:24.945541" elapsed="0.031450"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T01:03:25.046202" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "E "n "t "i "t "y "[C "O "w "n "e "r "[C "S "t "a "t "u "s "[C "A "n "d "[C "F "i "n "d "[C "O "w "n "e "r "[C "a "n "d "[C "S "u "c "c "e "s "[78Cs "[A[78Co
 "r "[C "A "f "t "e "r "[C "S "t "a "r "t "[C "O "w "n "e "r "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T01:03:24.978274" elapsed="0.068050"/>
</kw>
<msg time="2026-04-08T01:03:25.046485" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T01:03:25.046531" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "E "n "t "i "t "y...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:03:24.977422" elapsed="0.069144"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:25.046879" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:03:25.046648" elapsed="0.000286"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:25.046627" elapsed="0.000332"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:03:25.047429" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "E "n "t "i "t "y "[C "O "w "n "e "r "[C "S "t "a "t "u "s "[C "A "n "d "[C "F "i "n "d "[C "O "w "n "e "r "[C "a "n "d "[C "S "u "c "c "e "s "[78Cs "[A[78Co
 "r "[C "A "f "t "e "r "[C "S "t "a "r "t "[C "O "w "n "e "r "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:03:25.047106" elapsed="0.000404"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:25.047816" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:03:25.047579" elapsed="0.000291"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:25.047560" elapsed="0.000333"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T01:03:25.047925" elapsed="0.000029"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:03:25.050586" elapsed="0.000184"/>
</kw>
<msg time="2026-04-08T01:03:25.050831" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:03:25.049385" elapsed="0.001578"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:25.051267" elapsed="0.000074"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:25.051631" elapsed="0.000076"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:03:25.048750" elapsed="0.003066"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T01:03:25.048217" elapsed="0.003662"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T01:03:24.943856" elapsed="0.108121"/>
</kw>
<msg time="2026-04-08T01:03:25.052067" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:03:25.052110" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "E "n "t "i "t "y...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:03:24.943305" elapsed="0.108840"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T01:03:25.052427" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-08T01:03:25.052316" elapsed="0.000169"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:25.052293" elapsed="0.000215"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 3,
close the previous connection. In any case create a new connection
to karaf console for 3, set correct prompt set and login to karaf console.
Store connection index for 3 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:25.052889" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:25.053235" elapsed="0.000074"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T01:03:25.053360" elapsed="0.000017"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T01:03:24.942529" elapsed="0.110941"/>
</kw>
<msg time="2026-04-08T01:03:25.053564" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:03:25.053607" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "E "n "t "i "t "y...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:03:24.937650" elapsed="0.115992"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:25.054003" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:03:25.053746" elapsed="0.000312"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:25.053728" elapsed="0.000352"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T01:03:24.937506" elapsed="0.116597"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-08T01:03:24.686658" elapsed="0.367476"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-08T01:03:24.683997" elapsed="0.370214"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-08T01:03:24.679023" elapsed="0.375249"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:03:24.678581" elapsed="0.375740"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-08T01:03:24.675702" elapsed="0.378674"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Get OpenFlow Entity Owner Status For One Device" owner="ClusterOpenFlow">
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:03:25.091034" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:03:25.090653" elapsed="0.000409"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:03:25.091545" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:03:25.091241" elapsed="0.000330"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T01:03:25.091616" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T01:03:25.091769" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T01:03:25.090278" elapsed="0.001516"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T01:03:25.096509" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T01:03:25.096325" elapsed="0.000211"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:03:25.096689" elapsed="0.000190"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:03:25.097260" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:03:25.097034" elapsed="0.000252"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:03:25.097723" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:03:25.097462" elapsed="0.000302"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:03:25.097914" elapsed="0.000199"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:03:25.098540" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:03:25.098326" elapsed="0.000240"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:03:25.098984" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:03:25.098738" elapsed="0.000288"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:03:25.099537" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:03:25.099196" elapsed="0.000367"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:03:25.099964" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:03:25.099731" elapsed="0.000276"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:03:25.100495" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:03:25.100209" elapsed="0.000348"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:03:25.107421" elapsed="0.000273"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:03:25.116928" elapsed="0.000447"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:03:25.118255" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:03:25.117653" elapsed="0.000717"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:03:25.120691" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:03:25.120227" elapsed="0.000510"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:03:25.120810" elapsed="0.000064"/>
</return>
<msg time="2026-04-08T01:03:25.121113" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:03:25.118701" elapsed="0.002536"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:03:25.122421" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:03:25.121545" elapsed="0.000984"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:03:25.123841" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:03:25.122911" elapsed="0.001039"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:03:25.124866" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:03:25.149401" level="INFO">Response &lt;Response [200]&gt;</msg>
<msg time="2026-04-08T01:03:25.149735" level="INFO">Response JSON {'odl-entity-owners:output': {'candidate-nodes': ['member-1', 'member-2', 'member-3'], 'owner-node': 'member-1'}}</msg>
<msg time="2026-04-08T01:03:25.150223" level="INFO">${entity_result} = {'candidates': ['member-1', 'member-2', 'member-3'], 'owner': 'member-1'}</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="PASS" start="2026-04-08T01:03:25.124435" elapsed="0.026057"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:03:25.152222" level="INFO">${entity_candidates} = ['member-1', 'member-2', 'member-3']</msg>
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:03:25.151451" elapsed="0.001009"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:03:25.154019" level="INFO">${entity_owner} = member-1</msg>
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:03:25.153246" elapsed="0.001044"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-04-08T01:03:25.155883" level="INFO">Length is 8.</msg>
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-04-08T01:03:25.154789" elapsed="0.001246"/>
</kw>
<kw name="Replace String" owner="String">
<msg time="2026-04-08T01:03:25.160033" level="INFO">${owner} = 1</msg>
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-08T01:03:25.156559" elapsed="0.003654"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:03:25.161792" level="INFO">${owner} = 1</msg>
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:03:25.160783" elapsed="0.001169"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:03:25.163069" level="INFO">${candidate_list} = []</msg>
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:03:25.162426" elapsed="0.000823"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<msg time="2026-04-08T01:03:25.168571" level="INFO">${candidate} = 1</msg>
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-08T01:03:25.166007" elapsed="0.002612"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:03:25.170590" level="INFO">${candidate} = 1</msg>
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:03:25.169962" elapsed="0.000674"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-08T01:03:25.171912" elapsed="0.000407"/>
</kw>
<var name="${entity_candidate}">member-1</var>
<status status="PASS" start="2026-04-08T01:03:25.164003" elapsed="0.008373"/>
</iter>
<iter>
<kw name="Replace String" owner="String">
<msg time="2026-04-08T01:03:25.176255" level="INFO">${candidate} = 2</msg>
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-08T01:03:25.173963" elapsed="0.002339"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:03:25.178314" level="INFO">${candidate} = 2</msg>
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:03:25.177691" elapsed="0.000669"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-08T01:03:25.179624" elapsed="0.000386"/>
</kw>
<var name="${entity_candidate}">member-2</var>
<status status="PASS" start="2026-04-08T01:03:25.172603" elapsed="0.007459"/>
</iter>
<iter>
<kw name="Replace String" owner="String">
<msg time="2026-04-08T01:03:25.184079" level="INFO">${candidate} = 3</msg>
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-08T01:03:25.181806" elapsed="0.002320"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:03:25.186273" level="INFO">${candidate} = 3</msg>
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:03:25.185643" elapsed="0.000678"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-08T01:03:25.187581" elapsed="0.000384"/>
</kw>
<var name="${entity_candidate}">member-3</var>
<status status="PASS" start="2026-04-08T01:03:25.180352" elapsed="0.007667"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="PASS" start="2026-04-08T01:03:25.163516" elapsed="0.024589"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="PASS" start="2026-04-08T01:03:25.188338" elapsed="0.000240"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="PASS" start="2026-04-08T01:03:25.188733" elapsed="0.000035"/>
</return>
<msg time="2026-04-08T01:03:25.188938" level="INFO">${owner} = 1</msg>
<msg time="2026-04-08T01:03:25.188986" level="INFO">${candidates} = [1, 2, 3]</msg>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="PASS" start="2026-04-08T01:03:25.116166" elapsed="0.072844"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="PASS" start="2026-04-08T01:03:25.189068" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T01:03:25.189497" level="INFO">${owner_1} = 1</msg>
<msg time="2026-04-08T01:03:25.189547" level="INFO">${candidate_list_1} = [1, 2, 3]</msg>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="PASS" start="2026-04-08T01:03:25.105067" elapsed="0.084503"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:03:25.190038" level="INFO">${type} = org.opendaylight.mdsal.AsyncServiceCloseEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:03:25.189744" elapsed="0.000320"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:03:25.196824" elapsed="0.000268"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:03:25.206583" elapsed="0.000416"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:03:25.207894" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:03:25.207280" elapsed="0.000720"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:03:25.210349" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:03:25.209877" elapsed="0.000517"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:03:25.210467" elapsed="0.000061"/>
</return>
<msg time="2026-04-08T01:03:25.210761" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:03:25.208388" elapsed="0.002477"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:03:25.211984" level="INFO">${entity_type} = org.opendaylight.mdsal.AsyncServiceCloseEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:03:25.211197" elapsed="0.000893"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:03:25.213464" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:03:25.212483" elapsed="0.001093"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:03:25.214462" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.AsyncServiceCloseEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:03:25.228250" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:03:25.214039" elapsed="0.017690">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:25.232372" elapsed="0.000036"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:25.232902" elapsed="0.000032"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:25.233606" elapsed="0.000034"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:25.234085" elapsed="0.000032"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:25.234727" elapsed="0.000030"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:25.235186" elapsed="0.000031"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:25.236927" elapsed="0.000077"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:25.238551" elapsed="0.000078"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:25.240091" elapsed="0.000095"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:03:25.235615" elapsed="0.004644"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:03:25.235428" elapsed="0.004916"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:25.240630" elapsed="0.000030"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:03:25.240861" elapsed="0.000254"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:03:25.205765" elapsed="0.035526">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:03:25.241418" elapsed="0.000024"/>
</return>
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.AsyncServiceCloseEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T01:03:25.194540" elapsed="0.047026">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:25.241818" elapsed="0.000031"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T01:03:25.241911" elapsed="0.000021"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T01:03:25.095770" elapsed="0.146281">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:03:25.242229" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:03:25.242294" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:03:25.095220" elapsed="0.147107"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T01:03:25.242608" elapsed="0.000019"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:03:25.242450" elapsed="0.000217"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:25.242422" elapsed="0.000276"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:03:25.244754" elapsed="0.000292"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:03:25.245814" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:03:25.245285" elapsed="0.000567"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:03:25.247013" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:03:25.246611" elapsed="0.000429"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:03:25.247087" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T01:03:25.247297" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:03:25.246117" elapsed="0.001207"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:03:25.247906" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:03:25.247533" elapsed="0.000400"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:03:25.248462" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:03:25.248093" elapsed="0.000395"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:03:25.248847" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:03:25.257424" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:03:25.248652" elapsed="0.010447">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:25.259317" elapsed="0.000025"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:25.259499" elapsed="0.000020"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:25.259666" elapsed="0.000020"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:25.259831" elapsed="0.000020"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:25.260003" elapsed="0.000019"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:25.260183" elapsed="0.000022"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:25.260451" elapsed="0.000022"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:25.260628" elapsed="0.000020"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:25.260793" elapsed="0.000019"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:03:25.260315" elapsed="0.000530"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:03:25.260250" elapsed="0.000620"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:25.261011" elapsed="0.000020"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:03:25.261068" elapsed="0.000016"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:03:25.243973" elapsed="0.017217">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:03:25.261305" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:03:25.261375" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:03:25.242909" elapsed="0.018490"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T01:03:25.262022" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T01:03:25.261703" elapsed="0.000380">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T01:03:25.261487" elapsed="0.000657">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T01:03:25.261467" elapsed="0.000726">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T01:03:25.262240" elapsed="0.000016"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:03:25.094638" elapsed="0.167701">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:25.262519" elapsed="0.000021"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:25.262727" elapsed="0.000021"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T01:03:25.262789" elapsed="0.000014"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T01:03:25.092087" elapsed="0.170800">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:25.263060" elapsed="0.000020"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:25.263261" elapsed="0.000021"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:25.263441" elapsed="0.000020"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:25.263605" elapsed="0.000020"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:25.263773" elapsed="0.000020"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:25.263938" elapsed="0.000019"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T01:03:25.263997" elapsed="0.000015"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T01:03:25.089589" elapsed="0.174507">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:03:26.297536" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:03:26.297039" elapsed="0.000530"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:03:26.298057" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:03:26.297743" elapsed="0.000340"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T01:03:26.298129" elapsed="0.000055"/>
</return>
<msg time="2026-04-08T01:03:26.298317" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T01:03:26.296640" elapsed="0.001703"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T01:03:26.303066" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T01:03:26.302876" elapsed="0.000216"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:03:26.303261" elapsed="0.000195"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:03:26.303837" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:03:26.303626" elapsed="0.000236"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:03:26.304332" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:03:26.304055" elapsed="0.000318"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:03:26.304522" elapsed="0.000181"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:03:26.305062" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:03:26.304857" elapsed="0.000230"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:03:26.305525" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:03:26.305276" elapsed="0.000289"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:03:26.306147" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:03:26.305802" elapsed="0.000386"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:03:26.306602" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:03:26.306360" elapsed="0.000285"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:03:26.307084" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:03:26.306797" elapsed="0.000312"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:03:26.314180" elapsed="0.000303"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:03:26.323808" elapsed="0.000442"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:03:26.325104" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:03:26.324524" elapsed="0.000706"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:03:26.327561" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:03:26.327061" elapsed="0.000546"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:03:26.327683" elapsed="0.000068"/>
</return>
<msg time="2026-04-08T01:03:26.327991" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:03:26.325563" elapsed="0.002533"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:03:26.329255" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:03:26.328434" elapsed="0.000928"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:03:26.330652" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:03:26.329746" elapsed="0.001012"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:03:26.331689" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:03:26.346789" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:03:26.331234" elapsed="0.020826">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:26.353067" elapsed="0.000055"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:26.353908" elapsed="0.000049"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:26.354730" elapsed="0.000050"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:26.355464" elapsed="0.000093"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:26.356446" elapsed="0.000038"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:26.356895" elapsed="0.000030"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:26.358838" elapsed="0.000100"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:26.360466" elapsed="0.000080"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:26.361912" elapsed="0.000078"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:03:26.357368" elapsed="0.004691"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:03:26.357144" elapsed="0.005002"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:26.362452" elapsed="0.000030"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:03:26.362686" elapsed="0.000026"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:03:26.323000" elapsed="0.039860">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:03:26.363094" elapsed="0.000029"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T01:03:26.311794" elapsed="0.051520">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:26.363604" elapsed="0.000032"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:26.371079" elapsed="0.000031"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:26.371298" elapsed="0.000022"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T01:03:26.371366" elapsed="0.000018"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T01:03:26.302331" elapsed="0.070156">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:03:26.372621" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:03:26.372667" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:03:26.301753" elapsed="0.070938"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T01:03:26.372910" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:03:26.372786" elapsed="0.000167"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:26.372763" elapsed="0.000213"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:03:26.374572" elapsed="0.000218"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:03:26.375288" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:03:26.374949" elapsed="0.000366"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:03:26.376314" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:03:26.375869" elapsed="0.000473"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:03:26.376390" elapsed="0.000032"/>
</return>
<msg time="2026-04-08T01:03:26.376545" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:03:26.375521" elapsed="0.001049"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:03:26.377109" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:03:26.376734" elapsed="0.000402"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:03:26.377670" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:03:26.377316" elapsed="0.000380"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:03:26.378080" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:03:26.387045" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:03:26.377860" elapsed="0.010969">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:26.389020" elapsed="0.000023"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:26.389217" elapsed="0.000072"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:26.389448" elapsed="0.000021"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:26.389618" elapsed="0.000020"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:26.389790" elapsed="0.000020"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:26.389956" elapsed="0.000020"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:26.390249" elapsed="0.000021"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:26.390431" elapsed="0.000021"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:26.390597" elapsed="0.000020"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:03:26.390098" elapsed="0.000552"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:03:26.390025" elapsed="0.000653"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:26.390823" elapsed="0.000020"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:03:26.390881" elapsed="0.000015"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:03:26.373987" elapsed="0.017003">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:03:26.391104" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:03:26.391147" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:03:26.373135" elapsed="0.018051"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T01:03:26.391859" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T01:03:26.391531" elapsed="0.000388">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T01:03:26.391273" elapsed="0.000708">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T01:03:26.391254" elapsed="0.000758">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T01:03:26.392058" elapsed="0.000015"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:03:26.301204" elapsed="0.090950">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:26.392358" elapsed="0.000033"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:26.392634" elapsed="0.000027"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T01:03:26.392717" elapsed="0.000020"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T01:03:26.298644" elapsed="0.094208">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:26.393087" elapsed="0.000029"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:26.393370" elapsed="0.000032"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:26.393611" elapsed="0.000072"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:26.393890" elapsed="0.000028"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:26.394123" elapsed="0.000028"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:26.394378" elapsed="0.000027"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T01:03:26.394461" elapsed="0.000022"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T01:03:26.295820" elapsed="0.098779">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:03:27.427949" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:03:27.427470" elapsed="0.000512"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:03:27.428489" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:03:27.428171" elapsed="0.000345"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T01:03:27.428563" elapsed="0.000042"/>
</return>
<msg time="2026-04-08T01:03:27.428739" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T01:03:27.427058" elapsed="0.001706"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T01:03:27.433480" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T01:03:27.433288" elapsed="0.000219"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:03:27.433662" elapsed="0.000208"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:03:27.434256" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:03:27.434026" elapsed="0.000256"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:03:27.434735" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:03:27.434476" elapsed="0.000301"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:03:27.434927" elapsed="0.000182"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:03:27.435490" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:03:27.435280" elapsed="0.000236"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:03:27.435935" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:03:27.435690" elapsed="0.000286"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:03:27.436490" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:03:27.436132" elapsed="0.000384"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:03:27.436920" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:03:27.436687" elapsed="0.000277"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:03:27.437416" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:03:27.437116" elapsed="0.000326"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:03:27.444271" elapsed="0.000309"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:03:27.453881" elapsed="0.000450"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:03:27.455205" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:03:27.454605" elapsed="0.000711"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:03:27.457747" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:03:27.457265" elapsed="0.000529"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:03:27.457869" elapsed="0.000066"/>
</return>
<msg time="2026-04-08T01:03:27.458194" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:03:27.455719" elapsed="0.002586"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:03:27.459479" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:03:27.458617" elapsed="0.000994"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:03:27.460908" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:03:27.459990" elapsed="0.001024"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:03:27.461941" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:03:27.477720" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:03:27.461488" elapsed="0.019477">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:27.481606" elapsed="0.000036"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:27.482281" elapsed="0.000034"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:27.482797" elapsed="0.000031"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:27.483261" elapsed="0.000031"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:27.483816" elapsed="0.000031"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:27.484277" elapsed="0.000032"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:27.486099" elapsed="0.000097"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:27.487654" elapsed="0.000078"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:27.489096" elapsed="0.000159"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:03:27.484727" elapsed="0.004601"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:03:27.484527" elapsed="0.004889"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:27.489807" elapsed="0.000040"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:03:27.490068" elapsed="0.000027"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:03:27.453071" elapsed="0.037203">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:03:27.490380" elapsed="0.000028"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T01:03:27.441948" elapsed="0.048593">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:27.490740" elapsed="0.000022"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:27.495557" elapsed="0.000028"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:27.495812" elapsed="0.000021"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T01:03:27.495879" elapsed="0.000015"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T01:03:27.432729" elapsed="0.063257">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:03:27.496107" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:03:27.496152" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:03:27.432152" elapsed="0.064040"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T01:03:27.496413" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:03:27.496289" elapsed="0.000167"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:27.496267" elapsed="0.000212"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:03:27.498010" elapsed="0.000229"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:03:27.498882" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:03:27.498402" elapsed="0.000515"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:03:27.500266" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:03:27.499679" elapsed="0.000625"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:03:27.500371" elapsed="0.000042"/>
</return>
<msg time="2026-04-08T01:03:27.500582" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:03:27.499197" elapsed="0.001419"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:03:27.501413" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:03:27.500843" elapsed="0.000609"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:03:27.502225" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:03:27.501709" elapsed="0.000554"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:03:27.502786" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:03:27.513734" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:03:27.502495" elapsed="0.012994">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:27.515678" elapsed="0.000023"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:27.515854" elapsed="0.000020"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:27.516019" elapsed="0.000020"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:27.516204" elapsed="0.000021"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:27.516378" elapsed="0.000020"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:27.516547" elapsed="0.000019"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:27.516812" elapsed="0.000020"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:27.516985" elapsed="0.000020"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:27.517207" elapsed="0.000022"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:03:27.516680" elapsed="0.000584"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:03:27.516612" elapsed="0.000678"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:27.517430" elapsed="0.000021"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:03:27.517489" elapsed="0.000015"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:03:27.497410" elapsed="0.020185">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:03:27.517743" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:03:27.517787" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:03:27.496634" elapsed="0.021176"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T01:03:27.518504" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T01:03:27.518114" elapsed="0.000494">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T01:03:27.517894" elapsed="0.000808">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T01:03:27.517875" elapsed="0.000870">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T01:03:27.518809" elapsed="0.000022"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:03:27.431602" elapsed="0.087345">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:27.519224" elapsed="0.000031"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:27.519471" elapsed="0.000028"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T01:03:27.519556" elapsed="0.000020"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T01:03:27.429063" elapsed="0.090631">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:27.519935" elapsed="0.000029"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:27.520208" elapsed="0.000029"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:27.520449" elapsed="0.000028"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:27.520678" elapsed="0.000027"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:27.520911" elapsed="0.000027"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:27.521142" elapsed="0.000046"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T01:03:27.521247" elapsed="0.000021"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T01:03:27.426259" elapsed="0.095124">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:03:28.554982" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:03:28.554501" elapsed="0.000514"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:03:28.555536" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:03:28.555215" elapsed="0.000347"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T01:03:28.555610" elapsed="0.000041"/>
</return>
<msg time="2026-04-08T01:03:28.555780" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T01:03:28.553997" elapsed="0.001809"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T01:03:28.560582" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T01:03:28.560392" elapsed="0.000217"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:03:28.560763" elapsed="0.000193"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:03:28.561338" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:03:28.561111" elapsed="0.000253"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:03:28.561892" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:03:28.561557" elapsed="0.000385"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:03:28.562096" elapsed="0.000200"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:03:28.562657" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:03:28.562451" elapsed="0.000231"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:03:28.563099" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:03:28.562853" elapsed="0.000287"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:03:28.563653" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:03:28.563312" elapsed="0.000366"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:03:28.564148" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:03:28.563850" elapsed="0.000367"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:03:28.564670" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:03:28.564378" elapsed="0.000318"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:03:28.571518" elapsed="0.000420"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:03:28.582391" elapsed="0.000426"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:03:28.583686" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:03:28.583085" elapsed="0.000710"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:03:28.586124" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:03:28.585660" elapsed="0.000524"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:03:28.586260" elapsed="0.000071"/>
</return>
<msg time="2026-04-08T01:03:28.586575" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:03:28.584146" elapsed="0.002537"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:03:28.587820" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:03:28.586988" elapsed="0.000941"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:03:28.589283" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:03:28.588352" elapsed="0.001038"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:03:28.590301" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:03:28.606018" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:03:28.589849" elapsed="0.018549">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:28.608833" elapsed="0.000024"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:28.609212" elapsed="0.000022"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:28.609572" elapsed="0.000022"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:28.609891" elapsed="0.000022"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:28.610309" elapsed="0.000021"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:28.610625" elapsed="0.000021"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:28.611905" elapsed="0.000055"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:28.612969" elapsed="0.000055"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:28.614011" elapsed="0.000057"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:03:28.610948" elapsed="0.003170"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:03:28.610805" elapsed="0.003406"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:28.614428" elapsed="0.000021"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:03:28.614598" elapsed="0.000018"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:03:28.581598" elapsed="0.033124">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:03:28.614793" elapsed="0.000016"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T01:03:28.569217" elapsed="0.045678">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:28.615077" elapsed="0.000021"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:28.619935" elapsed="0.000041"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:28.620167" elapsed="0.000022"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T01:03:28.620238" elapsed="0.000015"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T01:03:28.559806" elapsed="0.060539">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:03:28.620465" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:03:28.620510" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:03:28.559243" elapsed="0.061291"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T01:03:28.620786" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:03:28.620667" elapsed="0.000161"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:28.620645" elapsed="0.000206"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:03:28.622199" elapsed="0.000217"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:03:28.622881" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:03:28.622572" elapsed="0.000335"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:03:28.624002" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:03:28.623583" elapsed="0.000449"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:03:28.624081" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T01:03:28.624254" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:03:28.623092" elapsed="0.001187"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:03:28.624820" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:03:28.624447" elapsed="0.000399"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:03:28.625369" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:03:28.625007" elapsed="0.000388"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:03:28.625762" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:03:28.636371" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:03:28.625559" elapsed="0.012550">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:28.638321" elapsed="0.000024"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:28.638500" elapsed="0.000025"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:28.638679" elapsed="0.000022"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:28.638849" elapsed="0.000021"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:28.639024" elapsed="0.000020"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:28.639206" elapsed="0.000022"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:28.639474" elapsed="0.000021"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:28.639658" elapsed="0.000022"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:28.639828" elapsed="0.000022"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:03:28.639341" elapsed="0.000542"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:03:28.639274" elapsed="0.000636"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:28.640093" elapsed="0.000021"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:03:28.640171" elapsed="0.000017"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:03:28.621633" elapsed="0.018651">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:03:28.640398" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:03:28.640445" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:03:28.621006" elapsed="0.019477"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T01:03:28.641502" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T01:03:28.641014" elapsed="0.000581">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T01:03:28.640701" elapsed="0.000996">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T01:03:28.640671" elapsed="0.001072">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T01:03:28.641807" elapsed="0.000022"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:03:28.558678" elapsed="0.083269">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:28.642226" elapsed="0.000032"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:28.642468" elapsed="0.000030"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T01:03:28.642557" elapsed="0.000021"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T01:03:28.556125" elapsed="0.086583">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:28.642951" elapsed="0.000029"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:28.643226" elapsed="0.000030"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:28.643471" elapsed="0.000029"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:28.643714" elapsed="0.000030"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:28.643971" elapsed="0.000033"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:28.644234" elapsed="0.000030"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T01:03:28.644323" elapsed="0.000021"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T01:03:28.553132" elapsed="0.091330">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:03:29.677203" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:03:29.676723" elapsed="0.000513"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:03:29.677718" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:03:29.677408" elapsed="0.000336"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T01:03:29.677791" elapsed="0.000040"/>
</return>
<msg time="2026-04-08T01:03:29.677961" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T01:03:29.676329" elapsed="0.001657"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T01:03:29.682937" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T01:03:29.682747" elapsed="0.000216"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:03:29.683117" elapsed="0.000211"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:03:29.683694" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:03:29.683484" elapsed="0.000235"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:03:29.684180" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:03:29.683912" elapsed="0.000313"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:03:29.684387" elapsed="0.000198"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:03:29.684948" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:03:29.684740" elapsed="0.000234"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:03:29.685410" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:03:29.685147" elapsed="0.000305"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:03:29.685949" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:03:29.685608" elapsed="0.000367"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:03:29.686397" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:03:29.686144" elapsed="0.000309"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:03:29.686895" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:03:29.686605" elapsed="0.000317"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:03:29.693707" elapsed="0.000298"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:03:29.703404" elapsed="0.000441"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:03:29.704720" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:03:29.704115" elapsed="0.000715"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:03:29.707277" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:03:29.706780" elapsed="0.000544"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:03:29.707402" elapsed="0.000071"/>
</return>
<msg time="2026-04-08T01:03:29.707718" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:03:29.705188" elapsed="0.002641"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:03:29.709005" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:03:29.708143" elapsed="0.000974"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:03:29.710460" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:03:29.709520" elapsed="0.001049"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:03:29.711479" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:03:29.727585" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:03:29.711029" elapsed="0.021896">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:29.733946" elapsed="0.000053"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:29.734890" elapsed="0.000050"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:29.735667" elapsed="0.000030"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:29.736106" elapsed="0.000030"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:29.736746" elapsed="0.000032"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:29.737334" elapsed="0.000033"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:29.739195" elapsed="0.000088"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:29.740657" elapsed="0.000076"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:29.742185" elapsed="0.000090"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:03:29.737790" elapsed="0.004572"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:03:29.737594" elapsed="0.004857"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:29.742741" elapsed="0.000030"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:03:29.742976" elapsed="0.000025"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:03:29.702515" elapsed="0.040632">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:03:29.743270" elapsed="0.000022"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T01:03:29.691410" elapsed="0.052003">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:29.743666" elapsed="0.000030"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:29.749584" elapsed="0.000027"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:29.749785" elapsed="0.000021"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T01:03:29.749850" elapsed="0.000016"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T01:03:29.682187" elapsed="0.067772">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:03:29.750075" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:03:29.750120" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:03:29.681614" elapsed="0.068530"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T01:03:29.750397" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:03:29.750264" elapsed="0.000176"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:29.750240" elapsed="0.000224"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:03:29.751881" elapsed="0.000209"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:03:29.752568" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:03:29.752260" elapsed="0.000334"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:03:29.753613" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:03:29.753118" elapsed="0.000523"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:03:29.753725" elapsed="0.000032"/>
</return>
<msg time="2026-04-08T01:03:29.753879" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:03:29.752776" elapsed="0.001128"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:03:29.754489" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:03:29.754065" elapsed="0.000451"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:03:29.755027" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:03:29.754678" elapsed="0.000375"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:03:29.755443" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:03:29.764881" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:03:29.755237" elapsed="0.011490">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:29.766917" elapsed="0.000023"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:29.767091" elapsed="0.000020"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:29.767286" elapsed="0.000021"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:29.767462" elapsed="0.000036"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:29.767862" elapsed="0.000045"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:29.768267" elapsed="0.000047"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:29.768879" elapsed="0.000045"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:29.769320" elapsed="0.000049"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:29.769706" elapsed="0.000060"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:03:29.768578" elapsed="0.001278"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:03:29.768413" elapsed="0.001512"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:29.770336" elapsed="0.000052"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:03:29.770480" elapsed="0.000034"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:03:29.751337" elapsed="0.019382">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:03:29.771041" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:03:29.771153" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:03:29.750618" elapsed="0.020665"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T01:03:29.772721" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T01:03:29.771970" elapsed="0.000886">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T01:03:29.771475" elapsed="0.001520">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T01:03:29.771432" elapsed="0.001632">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T01:03:29.773196" elapsed="0.000037"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:03:29.681045" elapsed="0.092376">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:29.773904" elapsed="0.000050"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:29.774334" elapsed="0.000049"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T01:03:29.774478" elapsed="0.000033"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T01:03:29.678299" elapsed="0.096402">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:29.775083" elapsed="0.000047"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:29.775548" elapsed="0.000048"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:29.775941" elapsed="0.000045"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:29.776341" elapsed="0.000045"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:29.776719" elapsed="0.000044"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:29.777086" elapsed="0.000043"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T01:03:29.777252" elapsed="0.000035"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T01:03:29.675532" elapsed="0.101943">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:03:30.811665" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:03:30.811119" elapsed="0.000579"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:03:30.812199" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:03:30.811871" elapsed="0.000355"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T01:03:30.812322" elapsed="0.000045"/>
</return>
<msg time="2026-04-08T01:03:30.812502" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T01:03:30.810733" elapsed="0.001793"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T01:03:30.817224" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T01:03:30.817019" elapsed="0.000232"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:03:30.817406" elapsed="0.000192"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:03:30.817960" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:03:30.817752" elapsed="0.000236"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:03:30.818449" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:03:30.818194" elapsed="0.000296"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:03:30.818639" elapsed="0.000179"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:03:30.819190" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:03:30.818971" elapsed="0.000246"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:03:30.819710" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:03:30.819463" elapsed="0.000289"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:03:30.820267" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:03:30.819907" elapsed="0.000386"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:03:30.820703" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:03:30.820465" elapsed="0.000282"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:03:30.821232" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:03:30.820926" elapsed="0.000332"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:03:30.828014" elapsed="0.000321"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:03:30.837511" elapsed="0.000420"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:03:30.838874" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:03:30.838284" elapsed="0.000698"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:03:30.841410" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:03:30.840915" elapsed="0.000541"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:03:30.841539" elapsed="0.000073"/>
</return>
<msg time="2026-04-08T01:03:30.841856" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:03:30.839342" elapsed="0.002621"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:03:30.843133" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:03:30.842292" elapsed="0.000969"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:03:30.846555" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:03:30.844383" elapsed="0.002411"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:03:30.849086" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:03:30.866487" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:03:30.847895" elapsed="0.021920">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:30.870456" elapsed="0.000036"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:30.870978" elapsed="0.000032"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:30.871504" elapsed="0.000033"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:30.871958" elapsed="0.000031"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:30.872564" elapsed="0.000032"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:30.873051" elapsed="0.000032"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:30.874917" elapsed="0.000080"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:30.876419" elapsed="0.000079"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:30.877925" elapsed="0.000078"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:03:30.873567" elapsed="0.004507"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:03:30.873357" elapsed="0.004827"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:30.878478" elapsed="0.000032"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:03:30.878729" elapsed="0.000034"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:03:30.836710" elapsed="0.042234">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:03:30.879149" elapsed="0.000050"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T01:03:30.825723" elapsed="0.053629">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:30.879663" elapsed="0.000033"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:30.886823" elapsed="0.000035"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:30.887036" elapsed="0.000022"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T01:03:30.887105" elapsed="0.000016"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T01:03:30.816467" elapsed="0.070772">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:03:30.887371" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:03:30.887417" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:03:30.815896" elapsed="0.071544"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T01:03:30.887665" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:03:30.887535" elapsed="0.000174"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:30.887512" elapsed="0.000221"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:03:30.889248" elapsed="0.000226"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:03:30.889970" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:03:30.889636" elapsed="0.000361"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:03:30.890975" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:03:30.890558" elapsed="0.000444"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:03:30.891051" elapsed="0.000034"/>
</return>
<msg time="2026-04-08T01:03:30.891241" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:03:30.890206" elapsed="0.001061"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:03:30.891821" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:03:30.891434" elapsed="0.000414"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:03:30.892447" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:03:30.892067" elapsed="0.000407"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:03:30.892894" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:03:30.902707" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:03:30.892641" elapsed="0.014169">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:30.907439" elapsed="0.000062"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:30.907861" elapsed="0.000047"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:30.908280" elapsed="0.000049"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:30.908670" elapsed="0.000047"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:30.909091" elapsed="0.000047"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:30.909503" elapsed="0.000065"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:30.910148" elapsed="0.000078"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:30.910607" elapsed="0.000048"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:30.911008" elapsed="0.000048"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:03:30.909839" elapsed="0.001293"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:03:30.909675" elapsed="0.001550"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:30.911566" elapsed="0.000047"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:03:30.911706" elapsed="0.000037"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:03:30.888638" elapsed="0.023326">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:03:30.912268" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:03:30.912375" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:03:30.887894" elapsed="0.024552"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T01:03:30.913754" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T01:03:30.913270" elapsed="0.000547">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T01:03:30.912676" elapsed="0.001204">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T01:03:30.912627" elapsed="0.001287">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T01:03:30.913961" elapsed="0.000016"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:03:30.815351" elapsed="0.098710">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:30.914257" elapsed="0.000024"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:30.914432" elapsed="0.000021"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T01:03:30.914495" elapsed="0.000017"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T01:03:30.812822" elapsed="0.101776">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:30.914785" elapsed="0.000022"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:30.915038" elapsed="0.000023"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:30.915234" elapsed="0.000022"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:30.915403" elapsed="0.000020"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:30.915576" elapsed="0.000020"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:30.915743" elapsed="0.000020"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T01:03:30.915806" elapsed="0.000015"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T01:03:30.809947" elapsed="0.105960">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:03:31.949903" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:03:31.949418" elapsed="0.000518"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:03:31.950450" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:03:31.950112" elapsed="0.000364"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T01:03:31.950526" elapsed="0.000039"/>
</return>
<msg time="2026-04-08T01:03:31.950697" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T01:03:31.948995" elapsed="0.001728"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T01:03:31.955613" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T01:03:31.955315" elapsed="0.000328"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:03:31.955800" elapsed="0.000200"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:03:31.956395" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:03:31.956179" elapsed="0.000243"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:03:31.956880" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:03:31.956622" elapsed="0.000299"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:03:31.957072" elapsed="0.000201"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:03:31.957637" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:03:31.957430" elapsed="0.000232"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:03:31.958082" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:03:31.957836" elapsed="0.000287"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:03:31.958633" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:03:31.958293" elapsed="0.000366"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:03:31.959067" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:03:31.958831" elapsed="0.000280"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:03:31.959576" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:03:31.959279" elapsed="0.000322"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:03:31.966638" elapsed="0.000324"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:03:31.976462" elapsed="0.000520"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:03:31.977886" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:03:31.977268" elapsed="0.000728"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:03:31.980418" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:03:31.979919" elapsed="0.000554"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:03:31.980551" elapsed="0.000072"/>
</return>
<msg time="2026-04-08T01:03:31.980866" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:03:31.978353" elapsed="0.002622"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:03:31.982173" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:03:31.981321" elapsed="0.000965"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:03:31.983630" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:03:31.982678" elapsed="0.001063"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:03:31.984672" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:03:31.998659" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:03:31.984217" elapsed="0.017749">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:32.002598" elapsed="0.000035"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:32.003122" elapsed="0.000032"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:32.003671" elapsed="0.000031"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:32.004139" elapsed="0.000064"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:32.004735" elapsed="0.000039"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:32.005229" elapsed="0.000033"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:32.007056" elapsed="0.000080"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:32.008672" elapsed="0.000078"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:32.010147" elapsed="0.000101"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:03:32.005687" elapsed="0.004631"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:03:32.005485" elapsed="0.004920"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:32.010697" elapsed="0.000030"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:03:32.010947" elapsed="0.000027"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:03:31.975645" elapsed="0.035484">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:03:32.011253" elapsed="0.000025"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T01:03:31.964300" elapsed="0.047121">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:32.011795" elapsed="0.000031"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:32.018740" elapsed="0.000040"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:32.019031" elapsed="0.000033"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T01:03:32.019130" elapsed="0.000022"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T01:03:31.954754" elapsed="0.064585">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:03:32.019514" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:03:32.019577" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:03:31.954193" elapsed="0.065410"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T01:03:32.019829" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:03:32.019703" elapsed="0.000170"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:32.019680" elapsed="0.000218"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:03:32.021398" elapsed="0.000223"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:03:32.022116" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:03:32.021782" elapsed="0.000363"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:03:32.023194" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:03:32.022728" elapsed="0.000495"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:03:32.023284" elapsed="0.000034"/>
</return>
<msg time="2026-04-08T01:03:32.023441" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:03:32.022377" elapsed="0.001090"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:03:32.024012" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:03:32.023634" elapsed="0.000405"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:03:32.024583" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:03:32.024226" elapsed="0.000384"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:03:32.024990" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:03:32.032621" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:03:32.024776" elapsed="0.009601">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:32.034573" elapsed="0.000023"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:32.034750" elapsed="0.000021"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:32.034918" elapsed="0.000021"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:32.035087" elapsed="0.000021"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:32.035311" elapsed="0.000023"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:32.035487" elapsed="0.000020"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:32.035755" elapsed="0.000064"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:32.035981" elapsed="0.000021"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:32.036148" elapsed="0.000037"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:03:32.035622" elapsed="0.000597"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:03:32.035554" elapsed="0.000692"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:32.036401" elapsed="0.000022"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:03:32.036463" elapsed="0.000016"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:03:32.020766" elapsed="0.015806">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:03:32.036689" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:03:32.036734" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:03:32.020065" elapsed="0.016693"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T01:03:32.037428" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T01:03:32.037067" elapsed="0.000424">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T01:03:32.036846" elapsed="0.000714">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T01:03:32.036826" elapsed="0.000767">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T01:03:32.037639" elapsed="0.000015"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:03:31.953626" elapsed="0.084113">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:32.037922" elapsed="0.000022"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:32.038094" elapsed="0.000019"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T01:03:32.038173" elapsed="0.000018"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T01:03:31.951026" elapsed="0.087251">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:32.038466" elapsed="0.000022"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:32.038654" elapsed="0.000021"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:32.038827" elapsed="0.000020"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:32.038991" elapsed="0.000020"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:32.039177" elapsed="0.000022"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:32.039385" elapsed="0.000021"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T01:03:32.039451" elapsed="0.000015"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T01:03:31.948140" elapsed="0.091428">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:03:33.075302" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:03:33.074794" elapsed="0.000542"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:03:33.075829" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:03:33.075512" elapsed="0.000344"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T01:03:33.075904" elapsed="0.000044"/>
</return>
<msg time="2026-04-08T01:03:33.076080" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T01:03:33.074378" elapsed="0.001727"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T01:03:33.081039" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T01:03:33.080845" elapsed="0.000221"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:03:33.081239" elapsed="0.000199"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:03:33.081811" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:03:33.081599" elapsed="0.000237"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:03:33.082340" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:03:33.082063" elapsed="0.000320"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:03:33.082533" elapsed="0.000183"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:03:33.083074" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:03:33.082869" elapsed="0.000231"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:03:33.083534" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:03:33.083288" elapsed="0.000288"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:03:33.084070" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:03:33.083730" elapsed="0.000366"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:03:33.084523" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:03:33.084281" elapsed="0.000286"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:03:33.085005" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:03:33.084720" elapsed="0.000312"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:03:33.091873" elapsed="0.000333"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:03:33.101596" elapsed="0.000450"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:03:33.102923" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:03:33.102337" elapsed="0.000697"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:03:33.105412" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:03:33.104930" elapsed="0.000529"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:03:33.105534" elapsed="0.000066"/>
</return>
<msg time="2026-04-08T01:03:33.105844" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:03:33.103389" elapsed="0.002587"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:03:33.107126" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:03:33.106319" elapsed="0.000933"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:03:33.108633" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:03:33.107704" elapsed="0.001039"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:03:33.109662" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:03:33.124097" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:03:33.109224" elapsed="0.019483">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:33.129709" elapsed="0.000055"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:33.130564" elapsed="0.000064"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:33.131412" elapsed="0.000051"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:33.132123" elapsed="0.000078"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:33.133032" elapsed="0.000049"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:33.134012" elapsed="0.000067"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:33.135637" elapsed="0.000056"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:33.136679" elapsed="0.000055"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:33.137748" elapsed="0.000055"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:03:33.134683" elapsed="0.003171"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:03:33.134493" elapsed="0.003440"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:33.138143" elapsed="0.000037"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:03:33.138327" elapsed="0.000019"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:03:33.100671" elapsed="0.037789">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:03:33.138531" elapsed="0.000017"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T01:03:33.089551" elapsed="0.049089">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:33.138823" elapsed="0.000022"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:33.143486" elapsed="0.000028"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:33.143685" elapsed="0.000022"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T01:03:33.143752" elapsed="0.000016"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T01:03:33.080298" elapsed="0.063561">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:03:33.144027" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:03:33.144073" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:03:33.079709" elapsed="0.064387"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T01:03:33.144330" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:03:33.144209" elapsed="0.000164"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:33.144184" elapsed="0.000212"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:03:33.145937" elapsed="0.000214"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:03:33.146636" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:03:33.146324" elapsed="0.000338"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:03:33.147617" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:03:33.147209" elapsed="0.000434"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:03:33.147691" elapsed="0.000031"/>
</return>
<msg time="2026-04-08T01:03:33.147842" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:03:33.146846" elapsed="0.001021"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:03:33.148419" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:03:33.148030" elapsed="0.000415"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:03:33.148950" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:03:33.148607" elapsed="0.000369"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:03:33.149434" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:03:33.157625" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:03:33.149140" elapsed="0.010226">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:33.159556" elapsed="0.000023"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:33.159732" elapsed="0.000020"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:33.159898" elapsed="0.000020"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:33.160065" elapsed="0.000020"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:33.160256" elapsed="0.000021"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:33.160422" elapsed="0.000020"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:33.160690" elapsed="0.000020"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:33.160863" elapsed="0.000020"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:33.161028" elapsed="0.000020"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:03:33.160554" elapsed="0.000526"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:03:33.160487" elapsed="0.000619"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:33.161263" elapsed="0.000021"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:03:33.161323" elapsed="0.000015"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:03:33.145367" elapsed="0.016065">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:03:33.161586" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:03:33.161630" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:03:33.144551" elapsed="0.017102"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T01:03:33.162427" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T01:03:33.162049" elapsed="0.000443">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T01:03:33.161757" elapsed="0.000798">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T01:03:33.161731" elapsed="0.000856">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T01:03:33.162634" elapsed="0.000016"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:03:33.079138" elapsed="0.083595">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:33.162914" elapsed="0.000021"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:33.163084" elapsed="0.000020"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T01:03:33.163145" elapsed="0.000033"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T01:03:33.076421" elapsed="0.086846">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:33.163441" elapsed="0.000021"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:33.163628" elapsed="0.000020"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:33.163798" elapsed="0.000020"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:33.163961" elapsed="0.000019"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:33.164126" elapsed="0.000020"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:33.164308" elapsed="0.000020"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T01:03:33.164369" elapsed="0.000014"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T01:03:33.073483" elapsed="0.090986">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:03:34.200952" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:03:34.200434" elapsed="0.000550"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:03:34.201490" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:03:34.201173" elapsed="0.000343"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T01:03:34.201564" elapsed="0.000043"/>
</return>
<msg time="2026-04-08T01:03:34.201737" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T01:03:34.200023" elapsed="0.001817"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T01:03:34.206580" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T01:03:34.206389" elapsed="0.000218"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:03:34.206760" elapsed="0.000194"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:03:34.207336" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:03:34.207109" elapsed="0.000253"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:03:34.207814" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:03:34.207556" elapsed="0.000299"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:03:34.208093" elapsed="0.000210"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:03:34.208681" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:03:34.208460" elapsed="0.000247"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:03:34.209127" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:03:34.208880" elapsed="0.000306"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:03:34.209683" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:03:34.209341" elapsed="0.000368"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:03:34.210116" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:03:34.209880" elapsed="0.000293"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:03:34.210611" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:03:34.210327" elapsed="0.000310"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:03:34.217451" elapsed="0.000295"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:03:34.226879" elapsed="0.000444"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:03:34.228182" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:03:34.227589" elapsed="0.000705"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:03:34.230626" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:03:34.230146" elapsed="0.000526"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:03:34.230746" elapsed="0.000066"/>
</return>
<msg time="2026-04-08T01:03:34.231049" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:03:34.228638" elapsed="0.002536"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:03:34.232346" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:03:34.231488" elapsed="0.000964"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:03:34.233835" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:03:34.232924" elapsed="0.001017"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:03:34.234839" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:03:34.249730" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:03:34.234411" elapsed="0.018557">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:34.253586" elapsed="0.000033"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:34.254088" elapsed="0.000031"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:34.254671" elapsed="0.000031"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:34.255139" elapsed="0.000062"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:34.255733" elapsed="0.000029"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:34.256190" elapsed="0.000031"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:34.258020" elapsed="0.000079"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:34.259521" elapsed="0.000078"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:34.260988" elapsed="0.000080"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:03:34.256675" elapsed="0.004461"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:03:34.256439" elapsed="0.004806"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:34.261535" elapsed="0.000030"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:03:34.261769" elapsed="0.000025"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:03:34.226111" elapsed="0.035827">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:03:34.262036" elapsed="0.000021"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T01:03:34.215107" elapsed="0.047289">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:34.262659" elapsed="0.000031"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:34.269390" elapsed="0.000040"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:34.269653" elapsed="0.000021"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T01:03:34.269718" elapsed="0.000015"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T01:03:34.205831" elapsed="0.063993">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:03:34.269940" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:03:34.269991" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:03:34.205269" elapsed="0.064746"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T01:03:34.270307" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:03:34.270112" elapsed="0.000238"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:34.270091" elapsed="0.000281"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:03:34.271713" elapsed="0.000210"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:03:34.272405" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:03:34.272078" elapsed="0.000353"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:03:34.273468" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:03:34.273042" elapsed="0.000453"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:03:34.273543" elapsed="0.000031"/>
</return>
<msg time="2026-04-08T01:03:34.273694" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:03:34.272696" elapsed="0.001023"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:03:34.274275" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:03:34.273880" elapsed="0.000422"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:03:34.274806" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:03:34.274461" elapsed="0.000371"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:03:34.275214" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:03:34.284969" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:03:34.274994" elapsed="0.011967">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:34.287412" elapsed="0.000052"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:34.287803" elapsed="0.000046"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:34.288212" elapsed="0.000048"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:34.288645" elapsed="0.000049"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:34.289036" elapsed="0.000045"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:34.289436" elapsed="0.000045"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:34.290015" elapsed="0.000045"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:34.290441" elapsed="0.000047"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:34.290810" elapsed="0.000045"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:03:34.289723" elapsed="0.001206"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:03:34.289578" elapsed="0.001430"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:34.291353" elapsed="0.000047"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:03:34.291487" elapsed="0.000033"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:03:34.271142" elapsed="0.020587">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:03:34.291982" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:03:34.292082" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:03:34.270525" elapsed="0.021609"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T01:03:34.293605" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T01:03:34.292867" elapsed="0.000875">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T01:03:34.292353" elapsed="0.001526">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T01:03:34.292309" elapsed="0.001639">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T01:03:34.294050" elapsed="0.000033"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:03:34.204700" elapsed="0.089676">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:34.294784" elapsed="0.000048"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:34.295188" elapsed="0.000049"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T01:03:34.295331" elapsed="0.000033"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T01:03:34.202144" elapsed="0.093408">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:34.295931" elapsed="0.000046"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:34.296367" elapsed="0.000047"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:34.296806" elapsed="0.000046"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:34.297202" elapsed="0.000046"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:34.297585" elapsed="0.000051"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:34.297853" elapsed="0.000020"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T01:03:34.297915" elapsed="0.000015"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T01:03:34.199222" elapsed="0.098791">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:03:35.334388" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:03:35.333830" elapsed="0.000598"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:03:35.334995" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:03:35.334647" elapsed="0.000382"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T01:03:35.335089" elapsed="0.000053"/>
</return>
<msg time="2026-04-08T01:03:35.335334" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T01:03:35.333422" elapsed="0.001940"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T01:03:35.340102" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T01:03:35.339909" elapsed="0.000220"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:03:35.340305" elapsed="0.000197"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:03:35.340868" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:03:35.340659" elapsed="0.000235"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:03:35.341451" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:03:35.341090" elapsed="0.000403"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:03:35.341646" elapsed="0.000184"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:03:35.342210" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:03:35.341986" elapsed="0.000250"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:03:35.342656" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:03:35.342409" elapsed="0.000288"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:03:35.343212" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:03:35.342853" elapsed="0.000385"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:03:35.343692" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:03:35.343452" elapsed="0.000284"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:03:35.344190" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:03:35.343891" elapsed="0.000327"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:03:35.351048" elapsed="0.000344"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:03:35.360641" elapsed="0.000424"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:03:35.361991" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:03:35.361393" elapsed="0.000710"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:03:35.364757" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:03:35.364125" elapsed="0.000693"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:03:35.364900" elapsed="0.000069"/>
</return>
<msg time="2026-04-08T01:03:35.365254" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:03:35.362467" elapsed="0.002897"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:03:35.366590" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:03:35.365718" elapsed="0.000995"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:03:35.368092" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:03:35.367112" elapsed="0.001108"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:03:35.369277" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:03:35.385500" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:03:35.368709" elapsed="0.022603">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:35.392379" elapsed="0.000064"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:35.393253" elapsed="0.000052"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:35.394065" elapsed="0.000052"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:35.394828" elapsed="0.000051"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:35.395809" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:35.396140" elapsed="0.000037"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:35.397508" elapsed="0.000059"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:35.398607" elapsed="0.000064"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:35.399766" elapsed="0.000061"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:03:35.396507" elapsed="0.003444"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:03:35.396346" elapsed="0.003673"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:35.400252" elapsed="0.000023"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:03:35.400431" elapsed="0.000021"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:03:35.359771" elapsed="0.040803">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:03:35.400649" elapsed="0.000017"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T01:03:35.348748" elapsed="0.052007">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:35.400941" elapsed="0.000021"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:35.407622" elapsed="0.000033"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:35.407830" elapsed="0.000021"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T01:03:35.407897" elapsed="0.000016"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T01:03:35.339363" elapsed="0.068644">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:03:35.408135" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:03:35.408199" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:03:35.338740" elapsed="0.069484"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T01:03:35.408452" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:03:35.408323" elapsed="0.000171"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:35.408300" elapsed="0.000218"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:03:35.410060" elapsed="0.000235"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:03:35.410775" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:03:35.410451" elapsed="0.000350"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:03:35.411792" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:03:35.411376" elapsed="0.000443"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:03:35.411866" elapsed="0.000033"/>
</return>
<msg time="2026-04-08T01:03:35.412019" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:03:35.410986" elapsed="0.001058"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:03:35.412610" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:03:35.412233" elapsed="0.000404"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:03:35.413143" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:03:35.412795" elapsed="0.000393"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:03:35.413618" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:03:35.423801" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:03:35.413393" elapsed="0.012158">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:35.425742" elapsed="0.000023"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:35.425916" elapsed="0.000020"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:35.426083" elapsed="0.000020"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:35.426267" elapsed="0.000021"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:35.426443" elapsed="0.000020"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:35.426608" elapsed="0.000020"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:35.426879" elapsed="0.000020"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:35.427053" elapsed="0.000020"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:35.427251" elapsed="0.000022"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:03:35.426747" elapsed="0.000560"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:03:35.426677" elapsed="0.000657"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:35.427477" elapsed="0.000020"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:03:35.427535" elapsed="0.000015"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:03:35.409489" elapsed="0.018152">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:03:35.427754" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:03:35.427797" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:03:35.408681" elapsed="0.019139"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T01:03:35.428463" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T01:03:35.428120" elapsed="0.000405">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T01:03:35.427903" elapsed="0.000684">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T01:03:35.427884" elapsed="0.000734">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T01:03:35.428663" elapsed="0.000016"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:03:35.338185" elapsed="0.090575">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:35.428939" elapsed="0.000022"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:35.429107" elapsed="0.000020"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T01:03:35.429188" elapsed="0.000016"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T01:03:35.335667" elapsed="0.093622">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:35.429496" elapsed="0.000021"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:35.429678" elapsed="0.000019"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:35.429849" elapsed="0.000020"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:35.430012" elapsed="0.000019"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:35.430195" elapsed="0.000021"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:35.430364" elapsed="0.000020"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T01:03:35.430425" elapsed="0.000015"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T01:03:35.332563" elapsed="0.097960">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:03:36.464255" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:03:36.463561" elapsed="0.000741"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:03:36.464990" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:03:36.464546" elapsed="0.000482"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T01:03:36.465093" elapsed="0.000055"/>
</return>
<msg time="2026-04-08T01:03:36.465358" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T01:03:36.463141" elapsed="0.002255"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T01:03:36.472040" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T01:03:36.471779" elapsed="0.000298"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:03:36.472314" elapsed="0.000274"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:03:36.473097" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:03:36.472805" elapsed="0.000328"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:03:36.473772" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:03:36.473416" elapsed="0.000414"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:03:36.474072" elapsed="0.000282"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:03:36.474855" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:03:36.474573" elapsed="0.000307"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:03:36.475316" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:03:36.475053" elapsed="0.000304"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:03:36.475854" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:03:36.475514" elapsed="0.000366"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:03:36.476302" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:03:36.476048" elapsed="0.000298"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:03:36.476779" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:03:36.476497" elapsed="0.000309"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:03:36.483784" elapsed="0.000393"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:03:36.493479" elapsed="0.000424"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:03:36.494790" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:03:36.494201" elapsed="0.000696"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:03:36.497366" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:03:36.496882" elapsed="0.000531"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:03:36.497490" elapsed="0.000068"/>
</return>
<msg time="2026-04-08T01:03:36.497801" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:03:36.495251" elapsed="0.002658"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:03:36.499103" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:03:36.498288" elapsed="0.000943"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:03:36.500552" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:03:36.499619" elapsed="0.001043"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:03:36.501574" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:03:36.516447" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:03:36.501126" elapsed="0.020536">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:36.522660" elapsed="0.000053"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:36.523486" elapsed="0.000049"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:36.524294" elapsed="0.000049"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:36.525105" elapsed="0.000050"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:36.526091" elapsed="0.000050"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:36.526845" elapsed="0.000026"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:36.528134" elapsed="0.000068"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:36.529196" elapsed="0.000055"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:36.530297" elapsed="0.000055"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:03:36.527198" elapsed="0.003202"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:03:36.527029" elapsed="0.003435"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:36.530667" elapsed="0.000021"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:03:36.530833" elapsed="0.000019"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:03:36.492687" elapsed="0.038272">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:03:36.531030" elapsed="0.000016"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T01:03:36.481469" elapsed="0.049662">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:36.531403" elapsed="0.000022"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:36.536067" elapsed="0.000028"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:36.536284" elapsed="0.000022"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T01:03:36.536353" elapsed="0.000016"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T01:03:36.470991" elapsed="0.065471">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:03:36.536580" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:03:36.536624" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:03:36.470208" elapsed="0.066439"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T01:03:36.536863" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:03:36.536742" elapsed="0.000163"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:36.536721" elapsed="0.000207"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:03:36.538691" elapsed="0.000239"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:03:36.539497" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:03:36.539114" elapsed="0.000414"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:03:36.540599" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:03:36.540134" elapsed="0.000496"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:03:36.540684" elapsed="0.000037"/>
</return>
<msg time="2026-04-08T01:03:36.540856" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:03:36.539743" elapsed="0.001141"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:03:36.541522" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:03:36.541074" elapsed="0.000478"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:03:36.542206" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:03:36.541739" elapsed="0.000501"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:03:36.542679" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:03:36.555284" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:03:36.542435" elapsed="0.016773">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:36.559772" elapsed="0.000074"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:36.560230" elapsed="0.000050"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:36.560626" elapsed="0.000046"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:36.561007" elapsed="0.000044"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:36.561430" elapsed="0.000047"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:36.561805" elapsed="0.000044"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:36.562648" elapsed="0.000046"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:36.563040" elapsed="0.000046"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:36.563444" elapsed="0.000049"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:03:36.562345" elapsed="0.001225"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:03:36.562124" elapsed="0.001508"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:36.563960" elapsed="0.000045"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:03:36.564098" elapsed="0.000040"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:03:36.537749" elapsed="0.026658">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:03:36.564714" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:03:36.564816" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:03:36.537080" elapsed="0.027788"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T01:03:36.566573" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T01:03:36.565629" elapsed="0.001091">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T01:03:36.565075" elapsed="0.001734">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T01:03:36.565028" elapsed="0.001820">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T01:03:36.566895" elapsed="0.000017"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:03:36.469405" elapsed="0.097596">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:36.567201" elapsed="0.000022"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:36.567375" elapsed="0.000020"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T01:03:36.567436" elapsed="0.000016"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T01:03:36.465819" elapsed="0.101720">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:36.567716" elapsed="0.000021"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:36.567909" elapsed="0.000020"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:36.568082" elapsed="0.000021"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:36.568264" elapsed="0.000021"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:36.568440" elapsed="0.000020"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:36.568608" elapsed="0.000019"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T01:03:36.568707" elapsed="0.000019"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T01:03:36.462273" elapsed="0.106544">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:03:37.601828" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:03:37.601332" elapsed="0.000529"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:03:37.602364" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:03:37.602034" elapsed="0.000356"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T01:03:37.602438" elapsed="0.000042"/>
</return>
<msg time="2026-04-08T01:03:37.602613" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T01:03:37.600919" elapsed="0.001719"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T01:03:37.607469" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T01:03:37.607276" elapsed="0.000220"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:03:37.607652" elapsed="0.000193"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:03:37.608249" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:03:37.608003" elapsed="0.000273"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:03:37.608727" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:03:37.608469" elapsed="0.000300"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:03:37.608944" elapsed="0.000186"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:03:37.609517" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:03:37.609304" elapsed="0.000238"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:03:37.609969" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:03:37.609719" elapsed="0.000292"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:03:37.610540" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:03:37.610187" elapsed="0.000379"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:03:37.610980" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:03:37.610740" elapsed="0.000285"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:03:37.611485" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:03:37.611194" elapsed="0.000317"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:03:37.618344" elapsed="0.000308"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:03:37.627871" elapsed="0.000454"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:03:37.629207" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:03:37.628594" elapsed="0.000725"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:03:37.631679" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:03:37.631207" elapsed="0.000518"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:03:37.631798" elapsed="0.000065"/>
</return>
<msg time="2026-04-08T01:03:37.632213" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:03:37.629653" elapsed="0.002674"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:03:37.633551" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:03:37.632643" elapsed="0.001231"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:03:37.635215" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:03:37.634279" elapsed="0.001047"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:03:37.636242" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:03:37.651311" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:03:37.635796" elapsed="0.020592">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:37.657458" elapsed="0.000058"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:37.658323" elapsed="0.000049"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:37.659107" elapsed="0.000048"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:37.659837" elapsed="0.000048"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:37.660760" elapsed="0.000100"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:37.661596" elapsed="0.000049"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:37.663139" elapsed="0.000069"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:37.664249" elapsed="0.000055"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:37.665292" elapsed="0.000056"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:03:37.662199" elapsed="0.003199"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:03:37.662027" elapsed="0.003434"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:37.665668" elapsed="0.000021"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:03:37.665844" elapsed="0.000022"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:03:37.627089" elapsed="0.038889">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:03:37.666052" elapsed="0.000017"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T01:03:37.616000" elapsed="0.050172">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:37.666360" elapsed="0.000021"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:37.671077" elapsed="0.000029"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:37.671292" elapsed="0.000021"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T01:03:37.671358" elapsed="0.000016"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T01:03:37.606710" elapsed="0.064812">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:03:37.671644" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:03:37.671690" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:03:37.606122" elapsed="0.065594"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T01:03:37.671935" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:03:37.671815" elapsed="0.000163"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:37.671794" elapsed="0.000206"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:03:37.673551" elapsed="0.000215"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:03:37.674256" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:03:37.673922" elapsed="0.000361"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:03:37.675242" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:03:37.674814" elapsed="0.000456"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:03:37.675317" elapsed="0.000031"/>
</return>
<msg time="2026-04-08T01:03:37.675470" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:03:37.674470" elapsed="0.001025"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:03:37.676035" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:03:37.675659" elapsed="0.000402"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:03:37.676628" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:03:37.676275" elapsed="0.000380"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:03:37.677052" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:03:37.688431" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:03:37.676837" elapsed="0.015490">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:37.692769" elapsed="0.000051"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:37.693186" elapsed="0.000048"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:37.693563" elapsed="0.000044"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:37.693970" elapsed="0.000044"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:37.694482" elapsed="0.000046"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:37.694882" elapsed="0.000045"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:37.695496" elapsed="0.000046"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:37.695883" elapsed="0.000045"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:37.696333" elapsed="0.000050"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:03:37.695200" elapsed="0.001258"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:03:37.695024" elapsed="0.001493"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:37.696889" elapsed="0.000047"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:03:37.697024" elapsed="0.000035"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:03:37.672977" elapsed="0.024321">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:03:37.697720" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:03:37.697834" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:03:37.672303" elapsed="0.025562"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T01:03:37.698534" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T01:03:37.698205" elapsed="0.000390">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T01:03:37.697964" elapsed="0.000693">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T01:03:37.697944" elapsed="0.000745">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T01:03:37.698739" elapsed="0.000022"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:03:37.605565" elapsed="0.093302">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:37.699100" elapsed="0.000028"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:37.699351" elapsed="0.000026"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T01:03:37.699430" elapsed="0.000022"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T01:03:37.603007" elapsed="0.096556">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:37.699796" elapsed="0.000027"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:37.700034" elapsed="0.000027"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:37.700283" elapsed="0.000030"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:37.700514" elapsed="0.000027"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:37.700753" elapsed="0.000027"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:37.700978" elapsed="0.000027"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T01:03:37.701063" elapsed="0.000021"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T01:03:37.600059" elapsed="0.101158">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:03:38.736683" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:03:38.736180" elapsed="0.000536"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:03:38.737373" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:03:38.736891" elapsed="0.000510"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T01:03:38.737450" elapsed="0.000040"/>
</return>
<msg time="2026-04-08T01:03:38.737623" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T01:03:38.735738" elapsed="0.001911"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T01:03:38.742436" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T01:03:38.742244" elapsed="0.000219"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:03:38.742620" elapsed="0.000194"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:03:38.743211" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:03:38.742973" elapsed="0.000264"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:03:38.743701" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:03:38.743433" elapsed="0.000311"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:03:38.743900" elapsed="0.000185"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:03:38.744471" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:03:38.744259" elapsed="0.000237"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:03:38.744918" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:03:38.744670" elapsed="0.000290"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:03:38.745483" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:03:38.745116" elapsed="0.000394"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:03:38.745919" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:03:38.745682" elapsed="0.000282"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:03:38.746420" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:03:38.746117" elapsed="0.000329"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:03:38.753316" elapsed="0.000297"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:03:38.762798" elapsed="0.000434"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:03:38.764103" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:03:38.763496" elapsed="0.000737"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:03:38.766611" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:03:38.766129" elapsed="0.000527"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:03:38.766730" elapsed="0.000065"/>
</return>
<msg time="2026-04-08T01:03:38.767043" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:03:38.764570" elapsed="0.002580"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:03:38.768336" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:03:38.767477" elapsed="0.000972"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:03:38.769882" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:03:38.768833" elapsed="0.001158"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:03:38.771012" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:03:38.787669" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:03:38.770538" elapsed="0.022392">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:38.793919" elapsed="0.000131"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:38.794845" elapsed="0.000050"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:38.795719" elapsed="0.000050"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:38.796455" elapsed="0.000050"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:38.797131" elapsed="0.000064"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:38.797604" elapsed="0.000030"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:38.799471" elapsed="0.000077"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:38.800970" elapsed="0.000075"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:38.802400" elapsed="0.000076"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:03:38.798036" elapsed="0.004509"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:03:38.797845" elapsed="0.004786"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:38.802914" elapsed="0.000029"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:03:38.803151" elapsed="0.000265"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:03:38.762015" elapsed="0.041553">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:03:38.803686" elapsed="0.000023"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T01:03:38.750959" elapsed="0.052871">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:38.804081" elapsed="0.000029"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:38.810048" elapsed="0.000026"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:38.810258" elapsed="0.000022"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T01:03:38.810325" elapsed="0.000015"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T01:03:38.741644" elapsed="0.068787">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:03:38.810545" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:03:38.810589" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:03:38.741071" elapsed="0.069541"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T01:03:38.810818" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:03:38.810703" elapsed="0.000157"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:38.810683" elapsed="0.000200"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:03:38.812421" elapsed="0.000211"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:03:38.813097" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:03:38.812793" elapsed="0.000329"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:03:38.814065" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:03:38.813661" elapsed="0.000431"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:03:38.814139" elapsed="0.000052"/>
</return>
<msg time="2026-04-08T01:03:38.814316" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:03:38.813320" elapsed="0.001022"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:03:38.814878" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:03:38.814505" elapsed="0.000399"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:03:38.815440" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:03:38.815071" elapsed="0.000395"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:03:38.815859" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:03:38.822726" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:03:38.815645" elapsed="0.008785">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:38.824618" elapsed="0.000023"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:38.824795" elapsed="0.000020"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:38.824962" elapsed="0.000020"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:38.825128" elapsed="0.000019"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:38.825318" elapsed="0.000020"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:38.825483" elapsed="0.000020"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:38.825744" elapsed="0.000024"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:38.825920" elapsed="0.000020"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:38.826083" elapsed="0.000020"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:03:38.825611" elapsed="0.000524"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:03:38.825546" elapsed="0.000632"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:38.826322" elapsed="0.000020"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:03:38.826380" elapsed="0.000015"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:03:38.811859" elapsed="0.014627">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:03:38.826599" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:03:38.826643" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:03:38.811035" elapsed="0.015631"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T01:03:38.827294" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T01:03:38.826963" elapsed="0.000391">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T01:03:38.826748" elapsed="0.000703">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T01:03:38.826729" elapsed="0.000756">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T01:03:38.827531" elapsed="0.000016"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:03:38.740487" elapsed="0.087172">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:38.827841" elapsed="0.000022"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:38.828010" elapsed="0.000020"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T01:03:38.828071" elapsed="0.000014"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T01:03:38.737950" elapsed="0.090238">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:38.828363" elapsed="0.000021"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:38.828545" elapsed="0.000020"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:38.828717" elapsed="0.000019"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:38.828942" elapsed="0.000027"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:38.829196" elapsed="0.000029"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:38.829430" elapsed="0.000027"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T01:03:38.829513" elapsed="0.000020"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T01:03:38.734911" elapsed="0.094736">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:03:39.861440" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:03:39.860901" elapsed="0.000577"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:03:39.861972" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:03:39.861658" elapsed="0.000340"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T01:03:39.862047" elapsed="0.000048"/>
</return>
<msg time="2026-04-08T01:03:39.862250" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T01:03:39.860497" elapsed="0.001778"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T01:03:39.867055" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T01:03:39.866859" elapsed="0.000223"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:03:39.867255" elapsed="0.000200"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:03:39.867906" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:03:39.867693" elapsed="0.000239"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:03:39.868402" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:03:39.868128" elapsed="0.000316"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:03:39.868594" elapsed="0.000182"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:03:39.869138" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:03:39.868931" elapsed="0.000247"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:03:39.869598" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:03:39.869353" elapsed="0.000286"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:03:39.870131" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:03:39.869793" elapsed="0.000378"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:03:39.870590" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:03:39.870344" elapsed="0.000290"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:03:39.871065" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:03:39.870785" elapsed="0.000305"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:03:39.877912" elapsed="0.000321"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:03:39.887384" elapsed="0.000418"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:03:39.888662" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:03:39.888065" elapsed="0.000705"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:03:39.891131" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:03:39.890658" elapsed="0.000536"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:03:39.891270" elapsed="0.000069"/>
</return>
<msg time="2026-04-08T01:03:39.891581" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:03:39.889105" elapsed="0.002584"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:03:39.892838" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:03:39.892000" elapsed="0.000948"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:03:39.894348" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:03:39.893351" elapsed="0.001105"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:03:39.895383" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:03:39.911055" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:03:39.894926" elapsed="0.018453">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:39.913804" elapsed="0.000024"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:39.914182" elapsed="0.000022"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:39.914552" elapsed="0.000022"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:39.914874" elapsed="0.000021"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:39.915284" elapsed="0.000021"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:39.915597" elapsed="0.000022"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:39.916964" elapsed="0.000056"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:39.918067" elapsed="0.000056"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:39.919144" elapsed="0.000073"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:03:39.915921" elapsed="0.003346"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:03:39.915776" elapsed="0.003556"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:39.919538" elapsed="0.000021"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:03:39.919706" elapsed="0.000019"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:03:39.886605" elapsed="0.033230">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:03:39.919904" elapsed="0.000016"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T01:03:39.875535" elapsed="0.044470">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:39.920237" elapsed="0.000022"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:39.926661" elapsed="0.000030"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:39.926864" elapsed="0.000021"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T01:03:39.926930" elapsed="0.000015"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T01:03:39.866245" elapsed="0.060792">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:03:39.927171" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:03:39.927218" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:03:39.865657" elapsed="0.061584"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T01:03:39.927465" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:03:39.927338" elapsed="0.000169"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:39.927315" elapsed="0.000217"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:03:39.929094" elapsed="0.000232"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:03:39.929796" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:03:39.929484" elapsed="0.000338"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:03:39.930811" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:03:39.930365" elapsed="0.000473"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:03:39.930886" elapsed="0.000031"/>
</return>
<msg time="2026-04-08T01:03:39.931037" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:03:39.930006" elapsed="0.001056"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:03:39.931623" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:03:39.931246" elapsed="0.000403"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:03:39.932222" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:03:39.931853" elapsed="0.000396"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:03:39.932625" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:03:39.941372" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:03:39.932414" elapsed="0.011370">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:39.944055" elapsed="0.000032"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:39.944323" elapsed="0.000030"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:39.944561" elapsed="0.000028"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:39.944793" elapsed="0.000028"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:39.945031" elapsed="0.000027"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:39.945282" elapsed="0.000029"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:39.945661" elapsed="0.000028"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:39.945903" elapsed="0.000028"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:39.946133" elapsed="0.000056"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:03:39.945476" elapsed="0.000763"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:03:39.945377" elapsed="0.000900"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:39.946479" elapsed="0.000045"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:03:39.946580" elapsed="0.000021"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:03:39.928535" elapsed="0.018198">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:03:39.946925" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:03:39.947001" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:03:39.927712" elapsed="0.019327"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T01:03:39.947932" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T01:03:39.947484" elapsed="0.000533">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T01:03:39.947175" elapsed="0.000927">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T01:03:39.947130" elapsed="0.001016">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T01:03:39.948233" elapsed="0.000023"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:03:39.865093" elapsed="0.083277">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:39.948616" elapsed="0.000029"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:39.948849" elapsed="0.000028"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T01:03:39.948996" elapsed="0.000023"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T01:03:39.862586" elapsed="0.086550">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:39.949399" elapsed="0.000030"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:39.949654" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:39.950039" elapsed="0.000029"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:39.950296" elapsed="0.000030"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:39.950553" elapsed="0.000028"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:39.950795" elapsed="0.000033"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T01:03:39.950894" elapsed="0.000018"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T01:03:39.859642" elapsed="0.091369">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:03:41.031572" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:03:41.031046" elapsed="0.000561"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:03:41.032119" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:03:41.031784" elapsed="0.000364"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T01:03:41.032216" elapsed="0.000041"/>
</return>
<msg time="2026-04-08T01:03:41.032393" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T01:03:41.030579" elapsed="0.001840"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T01:03:41.037236" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T01:03:41.037016" elapsed="0.000248"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:03:41.037423" elapsed="0.000215"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:03:41.038013" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:03:41.037798" elapsed="0.000241"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:03:41.038517" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:03:41.038251" elapsed="0.000308"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:03:41.038713" elapsed="0.000186"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:03:41.039293" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:03:41.039057" elapsed="0.000262"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:03:41.039769" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:03:41.039494" elapsed="0.000321"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:03:41.040373" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:03:41.039973" elapsed="0.000428"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:03:41.040938" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:03:41.040648" elapsed="0.000337"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:03:41.041507" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:03:41.041141" elapsed="0.000395"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:03:41.048857" elapsed="0.000347"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:03:41.058765" elapsed="0.000454"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:03:41.060089" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:03:41.059488" elapsed="0.000729"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:03:41.062637" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:03:41.062137" elapsed="0.000549"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:03:41.062764" elapsed="0.000071"/>
</return>
<msg time="2026-04-08T01:03:41.063086" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:03:41.060561" elapsed="0.002658"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:03:41.064380" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:03:41.063533" elapsed="0.000957"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:03:41.065868" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:03:41.064879" elapsed="0.001101"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:03:41.066938" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:03:41.081003" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:03:41.066463" elapsed="0.018252">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:41.085468" elapsed="0.000041"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:41.085992" elapsed="0.000032"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:41.086541" elapsed="0.000033"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:41.087007" elapsed="0.000031"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:41.087584" elapsed="0.000030"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:41.088022" elapsed="0.000030"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:41.089897" elapsed="0.000096"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:41.090994" elapsed="0.000056"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:41.092030" elapsed="0.000057"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:03:41.088496" elapsed="0.003640"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:03:41.088293" elapsed="0.003923"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:41.092427" elapsed="0.000022"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:03:41.092597" elapsed="0.000020"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:03:41.057923" elapsed="0.034808">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:03:41.092864" elapsed="0.000017"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T01:03:41.046372" elapsed="0.046610">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:41.093201" elapsed="0.000024"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:41.098069" elapsed="0.000030"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:41.098503" elapsed="0.000023"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T01:03:41.098574" elapsed="0.000017"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T01:03:41.036462" elapsed="0.062223">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:03:41.098809" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:03:41.098855" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:03:41.035871" elapsed="0.063010"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T01:03:41.099102" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:03:41.098977" elapsed="0.000169"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:41.098955" elapsed="0.000232"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:03:41.100621" elapsed="0.000231"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:03:41.101349" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:03:41.101011" elapsed="0.000364"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:03:41.102412" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:03:41.101950" elapsed="0.000489"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:03:41.102486" elapsed="0.000032"/>
</return>
<msg time="2026-04-08T01:03:41.102641" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:03:41.101601" elapsed="0.001065"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:03:41.103256" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:03:41.102832" elapsed="0.000458"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:03:41.103842" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:03:41.103480" elapsed="0.000388"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:03:41.104332" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:03:41.111997" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:03:41.104093" elapsed="0.010459">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:41.114817" elapsed="0.000037"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:41.115068" elapsed="0.000030"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:41.115388" elapsed="0.000031"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:41.115629" elapsed="0.000028"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:41.115871" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:41.116102" elapsed="0.000029"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:41.116496" elapsed="0.000029"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:41.116743" elapsed="0.000029"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:41.117002" elapsed="0.000032"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:03:41.116310" elapsed="0.000774"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:03:41.116216" elapsed="0.000905"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:41.117354" elapsed="0.000051"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:03:41.117480" elapsed="0.000029"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:03:41.100012" elapsed="0.017632">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:03:41.117812" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:03:41.117891" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:03:41.099350" elapsed="0.018582"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T01:03:41.118866" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T01:03:41.118412" elapsed="0.000538">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T01:03:41.118069" elapsed="0.000968">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T01:03:41.118042" elapsed="0.001041">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T01:03:41.119150" elapsed="0.000045"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:03:41.035310" elapsed="0.084007">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:41.119573" elapsed="0.000032"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:41.119815" elapsed="0.000028"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T01:03:41.119902" elapsed="0.000022"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T01:03:41.032722" elapsed="0.087322">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:41.120308" elapsed="0.000031"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:41.120569" elapsed="0.000029"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:41.120813" elapsed="0.000028"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:41.121110" elapsed="0.000029"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:41.121379" elapsed="0.000081"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:41.121680" elapsed="0.000029"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T01:03:41.121767" elapsed="0.000022"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T01:03:41.029696" elapsed="0.092191">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:03:42.152992" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:03:42.152489" elapsed="0.000535"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:03:42.153536" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:03:42.153216" elapsed="0.000347"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T01:03:42.153610" elapsed="0.000040"/>
</return>
<msg time="2026-04-08T01:03:42.153784" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T01:03:42.152065" elapsed="0.001745"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T01:03:42.158623" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T01:03:42.158433" elapsed="0.000217"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:03:42.158803" elapsed="0.000234"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:03:42.159421" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:03:42.159208" elapsed="0.000239"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:03:42.159898" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:03:42.159641" elapsed="0.000298"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:03:42.160088" elapsed="0.000200"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:03:42.160665" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:03:42.160456" elapsed="0.000235"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:03:42.161108" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:03:42.160863" elapsed="0.000286"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:03:42.161665" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:03:42.161321" elapsed="0.000370"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:03:42.162094" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:03:42.161860" elapsed="0.000278"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:03:42.162593" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:03:42.162308" elapsed="0.000310"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:03:42.169501" elapsed="0.000311"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:03:42.179009" elapsed="0.000446"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:03:42.180321" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:03:42.179722" elapsed="0.000738"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:03:42.182868" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:03:42.182402" elapsed="0.000514"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:03:42.182994" elapsed="0.000069"/>
</return>
<msg time="2026-04-08T01:03:42.183324" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:03:42.180870" elapsed="0.002560"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:03:42.184581" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:03:42.183738" elapsed="0.000950"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:03:42.185990" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:03:42.185074" elapsed="0.001024"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:03:42.187074" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:03:42.201832" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:03:42.186644" elapsed="0.020955">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:42.208745" elapsed="0.000059"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:42.209226" elapsed="0.000022"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:42.209580" elapsed="0.000021"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:42.209892" elapsed="0.000022"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:42.210297" elapsed="0.000022"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:42.210609" elapsed="0.000021"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:42.212081" elapsed="0.000058"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:42.213199" elapsed="0.000055"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:42.214233" elapsed="0.000056"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:03:42.210934" elapsed="0.003406"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:03:42.210785" elapsed="0.003618"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:42.214616" elapsed="0.000024"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:03:42.214788" elapsed="0.000019"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:03:42.178249" elapsed="0.036669">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:03:42.214991" elapsed="0.000016"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T01:03:42.167087" elapsed="0.048007">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:42.215294" elapsed="0.000023"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:42.219950" elapsed="0.000029"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:42.220344" elapsed="0.000024"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T01:03:42.220446" elapsed="0.000016"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T01:03:42.157870" elapsed="0.062688">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:03:42.220678" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:03:42.220723" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:03:42.157313" elapsed="0.063434"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T01:03:42.220961" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:03:42.220841" elapsed="0.000163"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:42.220819" elapsed="0.000208"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:03:42.222406" elapsed="0.000215"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:03:42.223096" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:03:42.222778" elapsed="0.000344"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:03:42.224084" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:03:42.223671" elapsed="0.000440"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:03:42.224324" elapsed="0.000033"/>
</return>
<msg time="2026-04-08T01:03:42.224496" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:03:42.223324" elapsed="0.001198"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:03:42.225063" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:03:42.224687" elapsed="0.000403"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:03:42.225694" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:03:42.225342" elapsed="0.000378"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:03:42.226101" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:03:42.235959" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:03:42.225884" elapsed="0.011820">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:42.237894" elapsed="0.000022"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:42.238070" elapsed="0.000020"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:42.238258" elapsed="0.000021"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:42.238431" elapsed="0.000020"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:42.238602" elapsed="0.000020"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:42.238766" elapsed="0.000020"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:42.239036" elapsed="0.000020"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:42.239228" elapsed="0.000022"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:42.239447" elapsed="0.000022"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:03:42.238901" elapsed="0.000603"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:03:42.238831" elapsed="0.000700"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:42.239675" elapsed="0.000020"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:03:42.239734" elapsed="0.000016"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:03:42.221834" elapsed="0.018008">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:03:42.239955" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:03:42.239998" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:03:42.221197" elapsed="0.018824"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T01:03:42.240684" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T01:03:42.240338" elapsed="0.000406">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T01:03:42.240104" elapsed="0.000702">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T01:03:42.240086" elapsed="0.000759">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T01:03:42.240902" elapsed="0.000021"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:03:42.156713" elapsed="0.084353">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:42.241340" elapsed="0.000031"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:42.241577" elapsed="0.000028"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T01:03:42.241662" elapsed="0.000020"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T01:03:42.154117" elapsed="0.087682">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:42.242038" elapsed="0.000029"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:42.242312" elapsed="0.000031"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:42.242554" elapsed="0.000028"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:42.242780" elapsed="0.000027"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:42.243014" elapsed="0.000027"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:42.243264" elapsed="0.000029"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T01:03:42.243350" elapsed="0.000021"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T01:03:42.151282" elapsed="0.092207">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:03:43.280284" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:03:43.279763" elapsed="0.000556"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:03:43.280809" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:03:43.280494" elapsed="0.000341"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T01:03:43.280884" elapsed="0.000044"/>
</return>
<msg time="2026-04-08T01:03:43.281062" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T01:03:43.279344" elapsed="0.001743"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T01:03:43.285793" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T01:03:43.285604" elapsed="0.000216"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:03:43.285974" elapsed="0.000208"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:03:43.286552" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:03:43.286341" elapsed="0.000237"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:03:43.287024" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:03:43.286768" elapsed="0.000297"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:03:43.287230" elapsed="0.000185"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:03:43.287795" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:03:43.287587" elapsed="0.000234"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:03:43.288255" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:03:43.287992" elapsed="0.000304"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:03:43.288793" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:03:43.288451" elapsed="0.000367"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:03:43.289237" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:03:43.288986" elapsed="0.000295"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:03:43.289713" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:03:43.289432" elapsed="0.000306"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:03:43.296715" elapsed="0.000320"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:03:43.306364" elapsed="0.000418"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:03:43.307681" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:03:43.307052" elapsed="0.000737"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:03:43.310106" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:03:43.309637" elapsed="0.000515"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:03:43.310245" elapsed="0.000072"/>
</return>
<msg time="2026-04-08T01:03:43.310562" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:03:43.308125" elapsed="0.002546"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:03:43.311832" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:03:43.310977" elapsed="0.000965"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:03:43.313246" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:03:43.312334" elapsed="0.001020"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:03:43.314330" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:03:43.329021" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:03:43.313811" elapsed="0.020005">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:43.334627" elapsed="0.000048"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:43.335323" elapsed="0.000041"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:43.336050" elapsed="0.000045"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:43.336702" elapsed="0.000043"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:43.337398" elapsed="0.000039"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:43.337910" elapsed="0.000033"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:43.339314" elapsed="0.000057"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:43.340411" elapsed="0.000056"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:43.341472" elapsed="0.000058"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:03:43.338279" elapsed="0.003312"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:03:43.338109" elapsed="0.003552"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:43.341871" elapsed="0.000022"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:03:43.342043" elapsed="0.000021"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:03:43.305566" elapsed="0.036634">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:03:43.342275" elapsed="0.000018"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T01:03:43.294312" elapsed="0.048070">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:43.342573" elapsed="0.000024"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:43.348194" elapsed="0.000029"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:43.348395" elapsed="0.000021"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T01:03:43.348462" elapsed="0.000015"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T01:03:43.285040" elapsed="0.063529">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:03:43.348694" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:03:43.348739" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:03:43.284480" elapsed="0.064282"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T01:03:43.349042" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:03:43.348915" elapsed="0.000169"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:43.348892" elapsed="0.000216"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:03:43.350517" elapsed="0.000215"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:03:43.351321" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:03:43.350890" elapsed="0.000458"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:03:43.352334" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:03:43.351897" elapsed="0.000465"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:03:43.352410" elapsed="0.000032"/>
</return>
<msg time="2026-04-08T01:03:43.352564" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:03:43.351551" elapsed="0.001038"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:03:43.353125" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:03:43.352753" elapsed="0.000399"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:03:43.353676" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:03:43.353332" elapsed="0.000370"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:03:43.354087" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:03:43.362698" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:03:43.353865" elapsed="0.010570">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:43.364623" elapsed="0.000023"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:43.364799" elapsed="0.000021"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:43.364967" elapsed="0.000020"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:43.365133" elapsed="0.000020"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:43.365328" elapsed="0.000021"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:43.365492" elapsed="0.000021"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:43.365756" elapsed="0.000020"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:43.365934" elapsed="0.000020"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:43.366098" elapsed="0.000020"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:03:43.365625" elapsed="0.000526"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:03:43.365557" elapsed="0.000636"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:43.366335" elapsed="0.000020"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:03:43.366394" elapsed="0.000015"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:03:43.349937" elapsed="0.016562">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:03:43.366611" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:03:43.366655" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:03:43.349281" elapsed="0.017396"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T01:03:43.367351" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T01:03:43.367016" elapsed="0.000419">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T01:03:43.366800" elapsed="0.000698">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T01:03:43.366780" elapsed="0.000749">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T01:03:43.367575" elapsed="0.000015"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:03:43.283916" elapsed="0.083757">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:43.367851" elapsed="0.000025"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:43.368248" elapsed="0.000032"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T01:03:43.368342" elapsed="0.000022"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T01:03:43.281405" elapsed="0.087082">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:43.368739" elapsed="0.000031"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:43.369005" elapsed="0.000030"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:43.369285" elapsed="0.000031"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:43.369529" elapsed="0.000029"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:43.369775" elapsed="0.000028"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:43.370021" elapsed="0.000026"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T01:03:43.370105" elapsed="0.000019"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T01:03:43.278507" elapsed="0.091754">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:03:44.404259" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:03:44.403761" elapsed="0.000531"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:03:44.404774" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:03:44.404461" elapsed="0.000340"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T01:03:44.404848" elapsed="0.000040"/>
</return>
<msg time="2026-04-08T01:03:44.405019" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T01:03:44.403362" elapsed="0.001682"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T01:03:44.409820" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T01:03:44.409630" elapsed="0.000218"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:03:44.410001" elapsed="0.000212"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:03:44.410613" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:03:44.410372" elapsed="0.000267"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:03:44.411089" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:03:44.410835" elapsed="0.000297"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:03:44.411296" elapsed="0.000181"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:03:44.411838" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:03:44.411631" elapsed="0.000232"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:03:44.412295" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:03:44.412034" elapsed="0.000302"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:03:44.412827" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:03:44.412488" elapsed="0.000365"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:03:44.413273" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:03:44.413021" elapsed="0.000296"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:03:44.413751" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:03:44.413468" elapsed="0.000308"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:03:44.420619" elapsed="0.000300"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:03:44.430312" elapsed="0.000448"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:03:44.431631" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:03:44.431028" elapsed="0.000712"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:03:44.434109" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:03:44.433639" elapsed="0.000529"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:03:44.434245" elapsed="0.000206"/>
</return>
<msg time="2026-04-08T01:03:44.434714" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:03:44.432073" elapsed="0.002751"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:03:44.435969" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:03:44.435136" elapsed="0.000948"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:03:44.437410" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:03:44.436485" elapsed="0.001033"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:03:44.438439" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:03:44.460939" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:03:44.437987" elapsed="0.025279">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:44.463692" elapsed="0.000024"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:44.464056" elapsed="0.000021"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:44.464428" elapsed="0.000022"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:44.464743" elapsed="0.000021"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:44.465195" elapsed="0.000023"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:44.465513" elapsed="0.000022"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:44.466792" elapsed="0.000057"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:44.467833" elapsed="0.000054"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:44.468863" elapsed="0.000055"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:03:44.465832" elapsed="0.003135"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:03:44.465690" elapsed="0.003341"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:44.469249" elapsed="0.000022"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:03:44.469420" elapsed="0.000019"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:03:44.429517" elapsed="0.040029">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:03:44.469617" elapsed="0.000016"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T01:03:44.418305" elapsed="0.051414">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:44.469899" elapsed="0.000021"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:44.474660" elapsed="0.000027"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:44.474857" elapsed="0.000021"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T01:03:44.474922" elapsed="0.000014"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T01:03:44.409071" elapsed="0.065955">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:03:44.475138" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:03:44.475198" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:03:44.408513" elapsed="0.066709"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T01:03:44.475430" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:03:44.475315" elapsed="0.000157"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:44.475294" elapsed="0.000202"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:03:44.476817" elapsed="0.000210"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:03:44.477504" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:03:44.477198" elapsed="0.000331"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:03:44.478606" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:03:44.478053" elapsed="0.000581"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:03:44.478715" elapsed="0.000031"/>
</return>
<msg time="2026-04-08T01:03:44.478870" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:03:44.477711" elapsed="0.001184"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:03:44.479455" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:03:44.479056" elapsed="0.000426"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:03:44.479986" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:03:44.479641" elapsed="0.000372"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:03:44.480401" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:03:44.487565" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:03:44.480198" elapsed="0.009046">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:44.489432" elapsed="0.000023"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:44.489608" elapsed="0.000021"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:44.489778" elapsed="0.000021"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:44.489952" elapsed="0.000020"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:44.490125" elapsed="0.000020"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:44.490310" elapsed="0.000021"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:44.490602" elapsed="0.000020"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:44.490780" elapsed="0.000020"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:44.490946" elapsed="0.000020"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:03:44.490467" elapsed="0.000531"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:03:44.490374" elapsed="0.000650"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:44.491182" elapsed="0.000021"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:03:44.491243" elapsed="0.000015"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:03:44.476271" elapsed="0.015079">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:03:44.491464" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:03:44.491509" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:03:44.475647" elapsed="0.015885"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T01:03:44.492197" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T01:03:44.491852" elapsed="0.000407">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T01:03:44.491615" elapsed="0.000707">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T01:03:44.491596" elapsed="0.000758">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T01:03:44.492400" elapsed="0.000015"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:03:44.407946" elapsed="0.084551">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:44.492713" elapsed="0.000022"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:44.492882" elapsed="0.000020"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T01:03:44.492944" elapsed="0.000015"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T01:03:44.405358" elapsed="0.087685">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:44.493236" elapsed="0.000022"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:44.493422" elapsed="0.000020"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:44.493596" elapsed="0.000020"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:44.493761" elapsed="0.000020"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:44.493931" elapsed="0.000020"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:44.494099" elapsed="0.000020"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T01:03:44.494180" elapsed="0.000016"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T01:03:44.402525" elapsed="0.091756">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:03:45.531340" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:03:45.530836" elapsed="0.000537"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:03:45.531877" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:03:45.531550" elapsed="0.000355"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T01:03:45.531954" elapsed="0.000042"/>
</return>
<msg time="2026-04-08T01:03:45.532128" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T01:03:45.530423" elapsed="0.001746"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T01:03:45.536942" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T01:03:45.536752" elapsed="0.000218"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:03:45.537131" elapsed="0.000211"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:03:45.537727" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:03:45.537499" elapsed="0.000255"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:03:45.538215" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:03:45.537944" elapsed="0.000314"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:03:45.538409" elapsed="0.000183"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:03:45.538957" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:03:45.538747" elapsed="0.000235"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:03:45.539519" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:03:45.539265" elapsed="0.000297"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:03:45.540072" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:03:45.539719" elapsed="0.000380"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:03:45.540530" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:03:45.540287" elapsed="0.000288"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:03:45.541019" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:03:45.540730" elapsed="0.000316"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:03:45.547927" elapsed="0.000322"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:03:45.557455" elapsed="0.000442"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:03:45.558765" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:03:45.558184" elapsed="0.000689"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:03:45.561348" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:03:45.560821" elapsed="0.000575"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:03:45.561474" elapsed="0.000086"/>
</return>
<msg time="2026-04-08T01:03:45.561832" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:03:45.559229" elapsed="0.002711"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:03:45.563142" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:03:45.562299" elapsed="0.000973"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:03:45.564740" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:03:45.563675" elapsed="0.001180"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:03:45.565814" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:03:45.579388" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:03:45.565341" elapsed="0.017326">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:45.583277" elapsed="0.000034"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:45.583777" elapsed="0.000031"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:45.584286" elapsed="0.000031"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:45.584725" elapsed="0.000029"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:45.585290" elapsed="0.000030"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:45.585738" elapsed="0.000029"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:45.587538" elapsed="0.000077"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:45.588970" elapsed="0.000075"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:45.590416" elapsed="0.000075"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:03:45.586189" elapsed="0.004370"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:03:45.585976" elapsed="0.004670"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:45.590927" elapsed="0.000030"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:03:45.591252" elapsed="0.000027"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:03:45.556662" elapsed="0.034769">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:03:45.591594" elapsed="0.000023"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T01:03:45.545610" elapsed="0.046130">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:45.591995" elapsed="0.000029"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:45.597230" elapsed="0.000028"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:45.597431" elapsed="0.000021"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T01:03:45.597498" elapsed="0.000026"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T01:03:45.536203" elapsed="0.061414">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:03:45.597732" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:03:45.597778" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:03:45.535633" elapsed="0.062169"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T01:03:45.598011" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:03:45.597892" elapsed="0.000162"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:45.597872" elapsed="0.000205"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:03:45.599590" elapsed="0.000222"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:03:45.600293" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:03:45.599968" elapsed="0.000351"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:03:45.601316" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:03:45.600889" elapsed="0.000455"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:03:45.601392" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T01:03:45.601554" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:03:45.600534" elapsed="0.001045"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:03:45.602212" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:03:45.601768" elapsed="0.000474"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:03:45.602795" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:03:45.602438" elapsed="0.000384"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:03:45.603218" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:03:45.610018" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:03:45.602992" elapsed="0.008758">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:45.611984" elapsed="0.000023"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:45.612184" elapsed="0.000022"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:45.612355" elapsed="0.000021"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:45.612522" elapsed="0.000020"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:45.612692" elapsed="0.000020"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:45.612856" elapsed="0.000020"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:45.613122" elapsed="0.000020"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:45.613317" elapsed="0.000021"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:45.613484" elapsed="0.000050"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:03:45.612989" elapsed="0.000579"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:03:45.612922" elapsed="0.000673"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:45.613741" elapsed="0.000021"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:03:45.613800" elapsed="0.000016"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:03:45.598867" elapsed="0.015043">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:03:45.614057" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:03:45.614133" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:03:45.598249" elapsed="0.015950"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T01:03:45.615066" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T01:03:45.614625" elapsed="0.000525">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T01:03:45.614319" elapsed="0.000940">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T01:03:45.614292" elapsed="0.001011">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T01:03:45.615366" elapsed="0.000022"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:03:45.535059" elapsed="0.080444">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:45.615752" elapsed="0.000029"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:45.615988" elapsed="0.000028"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T01:03:45.616073" elapsed="0.000021"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T01:03:45.532476" elapsed="0.083759">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:45.616480" elapsed="0.000030"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:45.616785" elapsed="0.000030"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:45.617027" elapsed="0.000028"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:45.617276" elapsed="0.000029"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:45.617530" elapsed="0.000029"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:45.617765" elapsed="0.000027"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T01:03:45.617849" elapsed="0.000021"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T01:03:45.529606" elapsed="0.088381">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:03:46.651529" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:03:46.651021" elapsed="0.000542"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:03:46.652056" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:03:46.651740" elapsed="0.000342"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T01:03:46.652131" elapsed="0.000060"/>
</return>
<msg time="2026-04-08T01:03:46.652326" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T01:03:46.650611" elapsed="0.001740"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T01:03:46.657224" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T01:03:46.656999" elapsed="0.000254"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:03:46.657411" elapsed="0.000200"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:03:46.657979" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:03:46.657768" elapsed="0.000241"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:03:46.658552" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:03:46.658264" elapsed="0.000331"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:03:46.658746" elapsed="0.000183"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:03:46.659315" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:03:46.659089" elapsed="0.000252"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:03:46.659763" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:03:46.659516" elapsed="0.000288"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:03:46.660317" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:03:46.659959" elapsed="0.000384"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:03:46.660768" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:03:46.660515" elapsed="0.000297"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:03:46.661302" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:03:46.660990" elapsed="0.000338"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:03:46.669347" elapsed="0.000430"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:03:46.679429" elapsed="0.000541"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:03:46.680983" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:03:46.680300" elapsed="0.000795"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:03:46.683610" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:03:46.683073" elapsed="0.000586"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:03:46.683740" elapsed="0.000080"/>
</return>
<msg time="2026-04-08T01:03:46.684071" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:03:46.681469" elapsed="0.002748"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:03:46.685442" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:03:46.684535" elapsed="0.001019"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:03:46.687002" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:03:46.685961" elapsed="0.001151"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:03:46.688041" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:03:46.707632" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:03:46.687595" elapsed="0.026546">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:46.714955" elapsed="0.000065"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:46.715507" elapsed="0.000030"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:46.715902" elapsed="0.000023"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:46.716267" elapsed="0.000025"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:46.716693" elapsed="0.000023"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:46.717013" elapsed="0.000023"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:46.718347" elapsed="0.000057"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:46.719382" elapsed="0.000056"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:46.720532" elapsed="0.000089"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:03:46.717377" elapsed="0.003315"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:03:46.717214" elapsed="0.003558"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:46.721029" elapsed="0.000027"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:03:46.721230" elapsed="0.000024"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:03:46.678523" elapsed="0.042858">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:03:46.721459" elapsed="0.000018"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T01:03:46.666045" elapsed="0.055522">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:46.721827" elapsed="0.000024"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:46.726847" elapsed="0.000030"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:46.727054" elapsed="0.000023"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T01:03:46.727124" elapsed="0.000016"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T01:03:46.656386" elapsed="0.070865">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:03:46.727415" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:03:46.727464" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:03:46.655759" elapsed="0.071729"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T01:03:46.727724" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:03:46.727591" elapsed="0.000177"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:46.727567" elapsed="0.000224"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:03:46.729482" elapsed="0.000222"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:03:46.730238" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:03:46.729866" elapsed="0.000401"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:03:46.731260" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:03:46.730817" elapsed="0.000473"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:03:46.731340" elapsed="0.000033"/>
</return>
<msg time="2026-04-08T01:03:46.731500" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:03:46.730460" elapsed="0.001067"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:03:46.732086" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:03:46.731694" elapsed="0.000420"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:03:46.732829" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:03:46.732450" elapsed="0.000407"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:03:46.733270" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:03:46.740691" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:03:46.733026" elapsed="0.009472">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:46.742690" elapsed="0.000023"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:46.742868" elapsed="0.000021"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:46.743041" elapsed="0.000021"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:46.743231" elapsed="0.000023"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:46.743412" elapsed="0.000021"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:46.743580" elapsed="0.000021"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:46.743852" elapsed="0.000061"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:46.744077" elapsed="0.000021"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:46.744262" elapsed="0.000023"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:03:46.743719" elapsed="0.000600"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:03:46.743648" elapsed="0.000698"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:46.744490" elapsed="0.000020"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:03:46.744550" elapsed="0.000015"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:03:46.728885" elapsed="0.015815">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:03:46.744819" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:03:46.744865" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:03:46.727953" elapsed="0.016936"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T01:03:46.745824" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T01:03:46.745339" elapsed="0.000574">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T01:03:46.744978" elapsed="0.001024">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T01:03:46.744957" elapsed="0.001090">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T01:03:46.746113" elapsed="0.000021"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:03:46.655209" elapsed="0.091074">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:46.746538" elapsed="0.000030"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:46.746819" elapsed="0.000033"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T01:03:46.746914" elapsed="0.000022"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T01:03:46.652651" elapsed="0.094404">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:46.747322" elapsed="0.000030"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:46.747582" elapsed="0.000029"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:46.747863" elapsed="0.000035"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:46.748112" elapsed="0.000028"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:46.748377" elapsed="0.000028"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:46.748634" elapsed="0.000030"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T01:03:46.748726" elapsed="0.000022"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T01:03:46.649747" elapsed="0.099125">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:03:47.782084" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:03:47.781568" elapsed="0.000551"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:03:47.782673" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:03:47.782340" elapsed="0.000361"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T01:03:47.782751" elapsed="0.000041"/>
</return>
<msg time="2026-04-08T01:03:47.782951" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T01:03:47.781173" elapsed="0.001807"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T01:03:47.788023" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T01:03:47.787826" elapsed="0.000227"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:03:47.788227" elapsed="0.000202"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:03:47.788807" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:03:47.788588" elapsed="0.000245"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:03:47.789313" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:03:47.789031" elapsed="0.000325"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:03:47.789510" elapsed="0.000188"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:03:47.790071" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:03:47.789857" elapsed="0.000240"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:03:47.790547" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:03:47.790290" elapsed="0.000300"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:03:47.791134" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:03:47.790750" elapsed="0.000426"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:03:47.791602" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:03:47.791354" elapsed="0.000294"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:03:47.792116" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:03:47.791819" elapsed="0.000323"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:03:47.799291" elapsed="0.000321"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:03:47.808992" elapsed="0.000506"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:03:47.810406" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:03:47.809779" elapsed="0.000738"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:03:47.812982" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:03:47.812500" elapsed="0.000535"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:03:47.813142" elapsed="0.000108"/>
</return>
<msg time="2026-04-08T01:03:47.813505" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:03:47.810867" elapsed="0.002744"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:03:47.814791" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:03:47.813929" elapsed="0.000971"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:03:47.816332" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:03:47.815377" elapsed="0.001063"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:03:47.817376" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:03:47.831666" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:03:47.816904" elapsed="0.018122">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:47.835645" elapsed="0.000035"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:47.836203" elapsed="0.000039"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:47.836717" elapsed="0.000032"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:47.837196" elapsed="0.000033"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:47.837750" elapsed="0.000031"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:47.838208" elapsed="0.000032"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:47.840084" elapsed="0.000108"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:47.841627" elapsed="0.000091"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:47.843125" elapsed="0.000101"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:03:47.838654" elapsed="0.004645"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:03:47.838455" elapsed="0.004934"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:47.843697" elapsed="0.000051"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:03:47.843985" elapsed="0.000119"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:03:47.808138" elapsed="0.036337">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:03:47.844581" elapsed="0.000024"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T01:03:47.796702" elapsed="0.048030">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:47.844997" elapsed="0.000032"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:47.851799" elapsed="0.000048"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:47.852105" elapsed="0.000027"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T01:03:47.852207" elapsed="0.000017"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T01:03:47.787251" elapsed="0.065065">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:03:47.852485" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:03:47.852530" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:03:47.786626" elapsed="0.065928"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T01:03:47.852769" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:03:47.852649" elapsed="0.000163"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:47.852627" elapsed="0.000208"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:03:47.854258" elapsed="0.000213"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:03:47.854933" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:03:47.854627" elapsed="0.000332"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:03:47.855914" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:03:47.855499" elapsed="0.000441"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:03:47.855987" elapsed="0.000031"/>
</return>
<msg time="2026-04-08T01:03:47.856138" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:03:47.855141" elapsed="0.001041"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:03:47.856729" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:03:47.856357" elapsed="0.000398"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:03:47.857277" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:03:47.856915" elapsed="0.000389"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:03:47.857670" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:03:47.864122" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:03:47.857468" elapsed="0.008353">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:47.866009" elapsed="0.000023"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:47.866204" elapsed="0.000021"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:47.866373" elapsed="0.000020"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:47.866539" elapsed="0.000020"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:47.866709" elapsed="0.000020"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:47.866873" elapsed="0.000019"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:47.867137" elapsed="0.000036"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:47.867331" elapsed="0.000020"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:47.867496" elapsed="0.000020"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:03:47.867001" elapsed="0.000547"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:03:47.866935" elapsed="0.000639"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:47.867740" elapsed="0.000022"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:03:47.867803" elapsed="0.000015"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:03:47.853688" elapsed="0.014222">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:03:47.868064" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:03:47.868108" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:03:47.852989" elapsed="0.015143"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T01:03:47.868773" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T01:03:47.868453" elapsed="0.000381">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T01:03:47.868232" elapsed="0.000663">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T01:03:47.868213" elapsed="0.000714">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T01:03:47.868973" elapsed="0.000015"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:03:47.786034" elapsed="0.083038">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:47.869269" elapsed="0.000031"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:47.869451" elapsed="0.000020"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T01:03:47.869512" elapsed="0.000015"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T01:03:47.783306" elapsed="0.086306">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:47.869785" elapsed="0.000020"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:47.869964" elapsed="0.000019"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:47.870138" elapsed="0.000037"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:47.870322" elapsed="0.000020"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:47.870490" elapsed="0.000019"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:47.870654" elapsed="0.000019"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T01:03:47.870714" elapsed="0.000014"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T01:03:47.780365" elapsed="0.090446">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:03:48.903249" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:03:48.902699" elapsed="0.000586"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:03:48.903786" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:03:48.903466" elapsed="0.000347"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T01:03:48.903863" elapsed="0.000053"/>
</return>
<msg time="2026-04-08T01:03:48.904063" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T01:03:48.902294" elapsed="0.001889"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T01:03:48.909119" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T01:03:48.908923" elapsed="0.000224"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:03:48.909323" elapsed="0.000239"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:03:48.910006" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:03:48.909773" elapsed="0.000270"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:03:48.910549" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:03:48.910282" elapsed="0.000310"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:03:48.910745" elapsed="0.000202"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:03:48.911338" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:03:48.911106" elapsed="0.000258"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:03:48.911787" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:03:48.911538" elapsed="0.000291"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:03:48.912350" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:03:48.911987" elapsed="0.000390"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:03:48.912792" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:03:48.912553" elapsed="0.000284"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:03:48.913295" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:03:48.912992" elapsed="0.000330"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:03:48.920410" elapsed="0.000306"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:03:48.930126" elapsed="0.000440"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:03:48.931475" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:03:48.930836" elapsed="0.000899"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:03:48.934115" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:03:48.933646" elapsed="0.000529"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:03:48.934256" elapsed="0.000070"/>
</return>
<msg time="2026-04-08T01:03:48.934572" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:03:48.932079" elapsed="0.002601"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:03:48.935878" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:03:48.935009" elapsed="0.000981"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:03:48.937335" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:03:48.936398" elapsed="0.001058"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:03:48.938398" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:03:48.953028" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:03:48.937922" elapsed="0.021163">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:48.960218" elapsed="0.000067"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:48.961334" elapsed="0.000082"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:48.962587" elapsed="0.000061"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:48.963523" elapsed="0.000056"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:48.964260" elapsed="0.000023"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:48.964583" elapsed="0.000022"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:48.965936" elapsed="0.000059"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:48.967015" elapsed="0.000055"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:48.968121" elapsed="0.000072"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:03:48.964916" elapsed="0.003330"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:03:48.964765" elapsed="0.003545"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:48.968519" elapsed="0.000021"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:03:48.968712" elapsed="0.000027"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:03:48.929360" elapsed="0.039514">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:03:48.968955" elapsed="0.000017"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T01:03:48.918010" elapsed="0.051056">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:48.969272" elapsed="0.000023"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:48.974072" elapsed="0.000029"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:48.974289" elapsed="0.000022"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T01:03:48.974357" elapsed="0.000015"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T01:03:48.908368" elapsed="0.066099">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:03:48.974587" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:03:48.974632" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:03:48.907742" elapsed="0.066914"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T01:03:48.974902" elapsed="0.000020"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:03:48.974753" elapsed="0.000200"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:48.974731" elapsed="0.000245"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:03:48.976576" elapsed="0.000218"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:03:48.977289" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:03:48.976954" elapsed="0.000361"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:03:48.978351" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:03:48.977918" elapsed="0.000460"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:03:48.978426" elapsed="0.000031"/>
</return>
<msg time="2026-04-08T01:03:48.978578" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:03:48.977569" elapsed="0.001034"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:03:48.979296" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:03:48.978766" elapsed="0.000561"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:03:48.979846" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:03:48.979493" elapsed="0.000386"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:03:48.980293" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:03:48.988211" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:03:48.980059" elapsed="0.010670">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:48.991021" elapsed="0.000033"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:48.991290" elapsed="0.000030"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:48.991528" elapsed="0.000027"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:48.991759" elapsed="0.000027"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:48.991994" elapsed="0.000027"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:48.992242" elapsed="0.000030"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:48.992613" elapsed="0.000028"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:48.992856" elapsed="0.000028"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:48.993084" elapsed="0.000028"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:03:48.992428" elapsed="0.000753"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:03:48.992334" elapsed="0.000886"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:48.993420" elapsed="0.000028"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:03:48.993501" elapsed="0.000022"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:03:48.975947" elapsed="0.017704">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:03:48.993808" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:03:48.993869" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:03:48.975139" elapsed="0.018763"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T01:03:48.994798" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T01:03:48.994350" elapsed="0.000580">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T01:03:48.994019" elapsed="0.001002">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T01:03:48.993993" elapsed="0.001072">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T01:03:48.995129" elapsed="0.000022"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:03:48.907176" elapsed="0.088169">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:48.995606" elapsed="0.000030"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:48.995845" elapsed="0.000029"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T01:03:48.995932" elapsed="0.000021"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T01:03:48.904494" elapsed="0.091578">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:48.996336" elapsed="0.000030"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:48.996591" elapsed="0.000029"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:48.996868" elapsed="0.000031"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:48.997105" elapsed="0.000028"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:48.997368" elapsed="0.000028"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:48.997600" elapsed="0.000027"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T01:03:48.997685" elapsed="0.000021"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T01:03:48.901423" elapsed="0.096401">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:03:50.030686" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:03:50.030201" elapsed="0.000519"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:03:50.031234" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:03:50.030897" elapsed="0.000364"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T01:03:50.031311" elapsed="0.000041"/>
</return>
<msg time="2026-04-08T01:03:50.031484" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T01:03:50.029756" elapsed="0.001755"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T01:03:50.036412" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T01:03:50.036218" elapsed="0.000221"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:03:50.036612" elapsed="0.000201"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:03:50.037200" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:03:50.036972" elapsed="0.000256"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:03:50.037772" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:03:50.037423" elapsed="0.000391"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:03:50.037967" elapsed="0.000217"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:03:50.038562" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:03:50.038346" elapsed="0.000247"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:03:50.039029" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:03:50.038773" elapsed="0.000299"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:03:50.039608" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:03:50.039246" elapsed="0.000390"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:03:50.040052" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:03:50.039810" elapsed="0.000287"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:03:50.040570" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:03:50.040277" elapsed="0.000323"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:03:50.047597" elapsed="0.000346"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:03:50.057524" elapsed="0.000444"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:03:50.058946" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:03:50.058272" elapsed="0.000791"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:03:50.061600" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:03:50.061047" elapsed="0.000612"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:03:50.061739" elapsed="0.000075"/>
</return>
<msg time="2026-04-08T01:03:50.062094" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:03:50.059421" elapsed="0.002825"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:03:50.063472" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:03:50.062564" elapsed="0.001020"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:03:50.065052" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:03:50.063972" elapsed="0.001207"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:03:50.066132" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:03:50.079694" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:03:50.065658" elapsed="0.019177">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:50.085847" elapsed="0.000054"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:50.087678" elapsed="0.000057"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:50.088512" elapsed="0.000050"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:50.089294" elapsed="0.000062"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:50.090294" elapsed="0.000054"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:50.091044" elapsed="0.000049"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:50.092444" elapsed="0.000069"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:50.093554" elapsed="0.000056"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:50.094683" elapsed="0.000059"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:03:50.091491" elapsed="0.003369"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:03:50.091336" elapsed="0.003591"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:50.095140" elapsed="0.000036"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:03:50.095326" elapsed="0.000019"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:03:50.056703" elapsed="0.038773">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:03:50.095550" elapsed="0.000015"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T01:03:50.045208" elapsed="0.050445">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:50.095837" elapsed="0.000021"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:50.100558" elapsed="0.000028"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:50.100757" elapsed="0.000021"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T01:03:50.100824" elapsed="0.000016"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T01:03:50.035651" elapsed="0.065282">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:03:50.101052" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:03:50.101097" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:03:50.035041" elapsed="0.066080"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T01:03:50.101505" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:03:50.101378" elapsed="0.000170"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:50.101353" elapsed="0.000219"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:03:50.102999" elapsed="0.000229"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:03:50.103697" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:03:50.103387" elapsed="0.000336"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:03:50.104679" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:03:50.104271" elapsed="0.000435"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:03:50.104753" elapsed="0.000032"/>
</return>
<msg time="2026-04-08T01:03:50.104906" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:03:50.103906" elapsed="0.001024"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:03:50.105600" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:03:50.105094" elapsed="0.000533"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:03:50.106171" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:03:50.105787" elapsed="0.000413"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:03:50.106619" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:03:50.114205" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:03:50.106405" elapsed="0.010238">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:50.116910" elapsed="0.000033"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:50.117176" elapsed="0.000032"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:50.117416" elapsed="0.000029"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:50.117649" elapsed="0.000028"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:50.117888" elapsed="0.000029"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:50.118140" elapsed="0.000053"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:50.118541" elapsed="0.000028"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:50.118782" elapsed="0.000028"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:50.119010" elapsed="0.000028"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:03:50.118355" elapsed="0.000728"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:03:50.118261" elapsed="0.000858"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:50.119345" elapsed="0.000028"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:03:50.119428" elapsed="0.000021"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:03:50.102439" elapsed="0.017142">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:03:50.119739" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:03:50.119800" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:03:50.101730" elapsed="0.018102"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T01:03:50.120721" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T01:03:50.120274" elapsed="0.000530">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T01:03:50.119949" elapsed="0.000942">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T01:03:50.119922" elapsed="0.001012">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T01:03:50.120997" elapsed="0.000022"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:03:50.034462" elapsed="0.086670">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:50.121403" elapsed="0.000037"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:50.121672" elapsed="0.000030"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T01:03:50.121761" elapsed="0.000021"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T01:03:50.031829" elapsed="0.090071">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:50.122247" elapsed="0.000032"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:50.122506" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:50.122746" elapsed="0.000028"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:50.122973" elapsed="0.000028"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:50.123227" elapsed="0.000031"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:50.123462" elapsed="0.000028"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T01:03:50.123546" elapsed="0.000021"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T01:03:50.028924" elapsed="0.094761">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:03:51.162484" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:03:51.161963" elapsed="0.000554"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:03:51.163009" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:03:51.162693" elapsed="0.000342"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T01:03:51.163083" elapsed="0.000044"/>
</return>
<msg time="2026-04-08T01:03:51.163279" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T01:03:51.161550" elapsed="0.001754"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T01:03:51.168062" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T01:03:51.167871" elapsed="0.000218"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:03:51.168264" elapsed="0.000197"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:03:51.168830" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:03:51.168620" elapsed="0.000236"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:03:51.169362" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:03:51.169050" elapsed="0.000356"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:03:51.169557" elapsed="0.000185"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:03:51.170106" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:03:51.169897" elapsed="0.000234"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:03:51.170567" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:03:51.170321" elapsed="0.000288"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:03:51.171204" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:03:51.170764" elapsed="0.000472"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:03:51.171708" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:03:51.171447" elapsed="0.000306"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:03:51.172213" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:03:51.171907" elapsed="0.000333"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:03:51.179306" elapsed="0.000380"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:03:51.189454" elapsed="0.000430"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:03:51.190755" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:03:51.190168" elapsed="0.000697"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:03:51.193277" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:03:51.192758" elapsed="0.000570"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:03:51.193408" elapsed="0.000071"/>
</return>
<msg time="2026-04-08T01:03:51.193729" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:03:51.191219" elapsed="0.002622"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:03:51.195053" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:03:51.194191" elapsed="0.000993"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:03:51.196551" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:03:51.195580" elapsed="0.001084"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:03:51.197622" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:03:51.210796" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:03:51.197138" elapsed="0.018833">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:51.216972" elapsed="0.000058"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:51.217869" elapsed="0.000054"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:51.218721" elapsed="0.000052"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:51.219557" elapsed="0.000055"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:51.220753" elapsed="0.000072"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:51.221782" elapsed="0.000057"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:51.223359" elapsed="0.000058"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:51.224403" elapsed="0.000056"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:51.225477" elapsed="0.000059"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:03:51.222393" elapsed="0.003194"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:03:51.222239" elapsed="0.003414"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:51.225893" elapsed="0.000024"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:03:51.226068" elapsed="0.000021"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:03:51.188442" elapsed="0.037848">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:03:51.226368" elapsed="0.000018"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T01:03:51.176852" elapsed="0.049624">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:51.226722" elapsed="0.000022"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:51.231606" elapsed="0.000029"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:51.231814" elapsed="0.000023"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T01:03:51.231885" elapsed="0.000017"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T01:03:51.167313" elapsed="0.064685">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:03:51.232123" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:03:51.232184" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:03:51.166706" elapsed="0.065505"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T01:03:51.232439" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:03:51.232311" elapsed="0.000172"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:51.232287" elapsed="0.000220"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:03:51.233974" elapsed="0.000329"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:03:51.234787" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:03:51.234463" elapsed="0.000350"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:03:51.235771" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:03:51.235363" elapsed="0.000435"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:03:51.235845" elapsed="0.000032"/>
</return>
<msg time="2026-04-08T01:03:51.235998" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:03:51.235001" elapsed="0.001022"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:03:51.236585" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:03:51.236206" elapsed="0.000405"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:03:51.237127" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:03:51.236771" elapsed="0.000398"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:03:51.237572" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:03:51.244544" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:03:51.237350" elapsed="0.008950">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:51.246487" elapsed="0.000023"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:51.246663" elapsed="0.000020"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:51.246829" elapsed="0.000021"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:51.246996" elapsed="0.000020"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:51.247183" elapsed="0.000022"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:51.247352" elapsed="0.000019"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:51.247698" elapsed="0.000034"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:51.247904" elapsed="0.000021"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:51.248073" elapsed="0.000020"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:03:51.247540" elapsed="0.000587"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:03:51.247467" elapsed="0.000725"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:51.248400" elapsed="0.000030"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:03:51.248502" elapsed="0.000029"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:03:51.233404" elapsed="0.015262">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:03:51.248873" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:03:51.248953" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:03:51.232666" elapsed="0.016323"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T01:03:51.250009" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T01:03:51.249556" elapsed="0.000540">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T01:03:51.249132" elapsed="0.001078">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T01:03:51.249101" elapsed="0.001157">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T01:03:51.250323" elapsed="0.000023"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:03:51.166128" elapsed="0.084336">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:51.250717" elapsed="0.000030"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:51.250955" elapsed="0.000028"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T01:03:51.251041" elapsed="0.000021"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T01:03:51.163605" elapsed="0.087594">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:51.251441" elapsed="0.000031"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:51.251698" elapsed="0.000029"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:51.251938" elapsed="0.000028"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:51.252189" elapsed="0.000029"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:51.252430" elapsed="0.000028"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:51.252663" elapsed="0.000027"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T01:03:51.252797" elapsed="0.000023"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T01:03:51.160504" elapsed="0.092439">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:03:52.290791" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:03:52.290302" elapsed="0.000522"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:03:52.291342" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:03:52.290999" elapsed="0.000369"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T01:03:52.291416" elapsed="0.000041"/>
</return>
<msg time="2026-04-08T01:03:52.291633" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T01:03:52.289839" elapsed="0.001820"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T01:03:52.296515" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T01:03:52.296312" elapsed="0.000230"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:03:52.296699" elapsed="0.000198"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:03:52.297285" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:03:52.297056" elapsed="0.000255"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:03:52.297765" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:03:52.297507" elapsed="0.000300"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:03:52.297957" elapsed="0.000183"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:03:52.298522" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:03:52.298312" elapsed="0.000236"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:03:52.298968" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:03:52.298721" elapsed="0.000288"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:03:52.299526" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:03:52.299180" elapsed="0.000371"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:03:52.299958" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:03:52.299722" elapsed="0.000280"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:03:52.300454" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:03:52.300168" elapsed="0.000324"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:03:52.307408" elapsed="0.000313"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:03:52.317127" elapsed="0.000447"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:03:52.318449" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:03:52.317846" elapsed="0.000713"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:03:52.320950" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:03:52.320480" elapsed="0.000519"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:03:52.321075" elapsed="0.000066"/>
</return>
<msg time="2026-04-08T01:03:52.321401" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:03:52.318910" elapsed="0.002600"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:03:52.322674" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:03:52.321826" elapsed="0.001027"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:03:52.324233" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:03:52.323285" elapsed="0.001055"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:03:52.325278" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:03:52.338860" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:03:52.324830" elapsed="0.017777">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:52.343303" elapsed="0.000037"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:52.343843" elapsed="0.000033"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:52.344392" elapsed="0.000033"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:52.344912" elapsed="0.000034"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:52.345528" elapsed="0.000031"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:52.345994" elapsed="0.000039"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:52.347969" elapsed="0.000083"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:52.349604" elapsed="0.000083"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:52.351209" elapsed="0.000095"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:03:52.346541" elapsed="0.004837"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:03:52.346325" elapsed="0.005145"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:52.351771" elapsed="0.000032"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:03:52.352021" elapsed="0.000028"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:03:52.316340" elapsed="0.036001">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:03:52.352472" elapsed="0.000025"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T01:03:52.304995" elapsed="0.047638">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:52.352908" elapsed="0.000032"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:52.359235" elapsed="0.000029"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:52.359436" elapsed="0.000022"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T01:03:52.359503" elapsed="0.000016"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T01:03:52.295750" elapsed="0.063920">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:03:52.359798" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:03:52.359843" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:03:52.295126" elapsed="0.064741"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T01:03:52.360097" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:03:52.359967" elapsed="0.000173"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:52.359944" elapsed="0.000336"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:03:52.361719" elapsed="0.000217"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:03:52.362435" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:03:52.362094" elapsed="0.000367"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:03:52.363453" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:03:52.363013" elapsed="0.000468"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:03:52.363530" elapsed="0.000032"/>
</return>
<msg time="2026-04-08T01:03:52.363685" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:03:52.362648" elapsed="0.001063"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:03:52.364275" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:03:52.363876" elapsed="0.000426"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:03:52.364831" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:03:52.364479" elapsed="0.000379"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:03:52.365264" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:03:52.372889" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:03:52.365023" elapsed="0.009759">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:52.375021" elapsed="0.000028"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:52.375249" elapsed="0.000024"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:52.375427" elapsed="0.000021"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:52.375597" elapsed="0.000021"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:52.375769" elapsed="0.000019"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:52.375935" elapsed="0.000020"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:52.376226" elapsed="0.000021"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:52.376402" elapsed="0.000053"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:52.376609" elapsed="0.000021"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:03:52.376074" elapsed="0.000589"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:03:52.376003" elapsed="0.000688"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:52.376834" elapsed="0.000021"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:03:52.376895" elapsed="0.000016"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:03:52.361130" elapsed="0.015875">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:03:52.377206" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:03:52.377275" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:03:52.360460" elapsed="0.016850"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T01:03:52.378292" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T01:03:52.377770" elapsed="0.000626">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T01:03:52.377440" elapsed="0.001048">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T01:03:52.377411" elapsed="0.001137">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T01:03:52.378629" elapsed="0.000024"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:03:52.294567" elapsed="0.084211">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:52.379087" elapsed="0.000035"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:52.379426" elapsed="0.000035"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T01:03:52.379526" elapsed="0.000022"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T01:03:52.291965" elapsed="0.087711">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:52.379933" elapsed="0.000032"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:52.380229" elapsed="0.000032"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:52.380706" elapsed="0.000054"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:52.381002" elapsed="0.000030"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:52.381273" elapsed="0.000031"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:52.381522" elapsed="0.000029"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T01:03:52.381611" elapsed="0.000022"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T01:03:52.288932" elapsed="0.092852">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:03:53.419087" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:03:53.418572" elapsed="0.000552"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:03:53.419795" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:03:53.419327" elapsed="0.000495"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T01:03:53.419873" elapsed="0.000048"/>
</return>
<msg time="2026-04-08T01:03:53.420057" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T01:03:53.418120" elapsed="0.001963"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T01:03:53.424826" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T01:03:53.424619" elapsed="0.000234"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:03:53.425011" elapsed="0.000223"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:03:53.425604" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:03:53.425391" elapsed="0.000238"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:03:53.426086" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:03:53.425827" elapsed="0.000301"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:03:53.426291" elapsed="0.000184"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:03:53.426836" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:03:53.426629" elapsed="0.000233"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:03:53.427298" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:03:53.427034" elapsed="0.000306"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:03:53.427870" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:03:53.427496" elapsed="0.000400"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:03:53.428321" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:03:53.428066" elapsed="0.000298"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:03:53.428800" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:03:53.428517" elapsed="0.000309"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:03:53.435620" elapsed="0.000308"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:03:53.445081" elapsed="0.000446"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:03:53.446387" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:03:53.445796" elapsed="0.000699"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:03:53.448826" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:03:53.448361" elapsed="0.000512"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:03:53.448946" elapsed="0.000062"/>
</return>
<msg time="2026-04-08T01:03:53.449263" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:03:53.446826" elapsed="0.002542"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:03:53.450504" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:03:53.449676" elapsed="0.000933"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:03:53.451930" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:03:53.450988" elapsed="0.001048"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:03:53.452934" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:03:53.466137" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:03:53.452503" elapsed="0.016181">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:53.469105" elapsed="0.000077"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:53.469529" elapsed="0.000023"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:53.469881" elapsed="0.000021"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:53.470210" elapsed="0.000022"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:53.470600" elapsed="0.000021"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:53.470914" elapsed="0.000021"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:53.472246" elapsed="0.000055"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:53.473285" elapsed="0.000055"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:53.474316" elapsed="0.000055"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:03:53.471261" elapsed="0.003159"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:03:53.471093" elapsed="0.003390"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:53.474689" elapsed="0.000021"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:03:53.474855" elapsed="0.000018"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:03:53.444317" elapsed="0.030663">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:03:53.475050" elapsed="0.000016"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T01:03:53.433319" elapsed="0.041832">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:53.475348" elapsed="0.000022"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:53.480100" elapsed="0.000028"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:53.480488" elapsed="0.000022"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T01:03:53.480555" elapsed="0.000016"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T01:03:53.424056" elapsed="0.056606">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:03:53.480776" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:03:53.480852" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:03:53.423474" elapsed="0.057403"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T01:03:53.481088" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:03:53.480971" elapsed="0.000159"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:53.480949" elapsed="0.000204"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:03:53.482529" elapsed="0.000210"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:03:53.483219" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:03:53.482896" elapsed="0.000349"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:03:53.484260" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:03:53.483799" elapsed="0.000489"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:03:53.484336" elapsed="0.000031"/>
</return>
<msg time="2026-04-08T01:03:53.484487" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:03:53.483428" elapsed="0.001083"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:03:53.485042" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:03:53.484673" elapsed="0.000395"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:03:53.485588" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:03:53.485242" elapsed="0.000372"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:03:53.485977" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:03:53.494100" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:03:53.485776" elapsed="0.010046">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:53.496011" elapsed="0.000023"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:53.496205" elapsed="0.000021"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:53.496374" elapsed="0.000021"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:53.496541" elapsed="0.000019"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:53.496712" elapsed="0.000020"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:53.496875" elapsed="0.000020"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:53.497138" elapsed="0.000036"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:53.497336" elapsed="0.000021"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:53.497501" elapsed="0.000020"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:03:53.497007" elapsed="0.000546"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:03:53.496940" elapsed="0.000640"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:53.497722" elapsed="0.000020"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:03:53.497781" elapsed="0.000016"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:03:53.481965" elapsed="0.015922">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:03:53.498000" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:03:53.498044" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:03:53.481323" elapsed="0.016744"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T01:03:53.498711" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T01:03:53.498390" elapsed="0.000381">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T01:03:53.498150" elapsed="0.000728">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T01:03:53.498132" elapsed="0.000781">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T01:03:53.498960" elapsed="0.000016"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:03:53.422906" elapsed="0.076153">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:53.499258" elapsed="0.000022"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:53.499429" elapsed="0.000021"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T01:03:53.499491" elapsed="0.000015"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T01:03:53.420403" elapsed="0.079188">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:53.499776" elapsed="0.000021"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:53.499959" elapsed="0.000020"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:53.500133" elapsed="0.000034"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:53.500317" elapsed="0.000020"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:53.500487" elapsed="0.000019"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:53.500652" elapsed="0.000020"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T01:03:53.500712" elapsed="0.000015"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T01:03:53.417147" elapsed="0.083664">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:03:54.536798" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:03:54.536311" elapsed="0.000520"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:03:54.537340" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:03:54.537004" elapsed="0.000363"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T01:03:54.537415" elapsed="0.000039"/>
</return>
<msg time="2026-04-08T01:03:54.537585" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T01:03:54.535900" elapsed="0.001711"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T01:03:54.542322" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T01:03:54.542113" elapsed="0.000236"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:03:54.542504" elapsed="0.000197"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:03:54.543184" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:03:54.542928" elapsed="0.000287"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:03:54.543678" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:03:54.543413" elapsed="0.000308"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:03:54.543873" elapsed="0.000185"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:03:54.544442" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:03:54.544229" elapsed="0.000239"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:03:54.544896" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:03:54.544643" elapsed="0.000295"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:03:54.545461" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:03:54.545093" elapsed="0.000395"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:03:54.545902" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:03:54.545660" elapsed="0.000286"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:03:54.546405" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:03:54.546100" elapsed="0.000332"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:03:54.553254" elapsed="0.000303"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:03:54.562779" elapsed="0.000453"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:03:54.564080" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:03:54.563498" elapsed="0.000710"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:03:54.566531" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:03:54.566049" elapsed="0.000528"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:03:54.566651" elapsed="0.000067"/>
</return>
<msg time="2026-04-08T01:03:54.566970" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:03:54.564543" elapsed="0.002534"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:03:54.568235" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:03:54.567415" elapsed="0.000928"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:03:54.569637" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:03:54.568722" elapsed="0.001026"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:03:54.570654" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:03:54.583831" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:03:54.570224" elapsed="0.016859">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:54.587713" elapsed="0.000035"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:54.588281" elapsed="0.000037"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:54.588796" elapsed="0.000031"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:54.589263" elapsed="0.000033"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:54.589817" elapsed="0.000030"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:54.590293" elapsed="0.000031"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:54.592189" elapsed="0.000088"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:54.593750" elapsed="0.000077"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:54.595345" elapsed="0.000078"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:03:54.590737" elapsed="0.004755"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:03:54.590542" elapsed="0.005036"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:54.595865" elapsed="0.000031"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:03:54.596098" elapsed="0.000025"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:03:54.561984" elapsed="0.034315">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:03:54.596497" elapsed="0.000023"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T01:03:54.550924" elapsed="0.045720">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:54.596899" elapsed="0.000030"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:54.603651" elapsed="0.000039"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:54.603930" elapsed="0.000029"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T01:03:54.604022" elapsed="0.000022"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T01:03:54.541570" elapsed="0.062620">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:03:54.604361" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:03:54.604422" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:03:54.540990" elapsed="0.063464"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T01:03:54.604746" elapsed="0.000019"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:03:54.604582" elapsed="0.000223"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:54.604553" elapsed="0.000283"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:03:54.606735" elapsed="0.000356"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:03:54.607647" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:03:54.607329" elapsed="0.000344"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:03:54.608630" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:03:54.608222" elapsed="0.000435"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:03:54.608706" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T01:03:54.608858" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:03:54.607859" elapsed="0.001023"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:03:54.609447" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:03:54.609046" elapsed="0.000427"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:03:54.610031" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:03:54.609683" elapsed="0.000375"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:03:54.610453" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:03:54.618861" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:03:54.610241" elapsed="0.011039">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:54.621546" elapsed="0.000032"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:54.621795" elapsed="0.000029"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:54.622032" elapsed="0.000027"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:54.622288" elapsed="0.000030"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:54.622535" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:54.622765" elapsed="0.000028"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:54.623192" elapsed="0.000032"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:54.623443" elapsed="0.000029"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:54.623675" elapsed="0.000028"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:03:54.622976" elapsed="0.000773"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:03:54.622853" elapsed="0.000932"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:54.623983" elapsed="0.000028"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:03:54.624064" elapsed="0.000022"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:03:54.605941" elapsed="0.018307">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:03:54.624445" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:03:54.624510" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:03:54.605050" elapsed="0.019492"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T01:03:54.625478" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T01:03:54.624962" elapsed="0.000604">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T01:03:54.624658" elapsed="0.000994">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T01:03:54.624632" elapsed="0.001064">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T01:03:54.625759" elapsed="0.000022"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:03:54.540436" elapsed="0.085459">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:54.626145" elapsed="0.000051"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:54.626404" elapsed="0.000028"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T01:03:54.626549" elapsed="0.000022"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T01:03:54.537908" elapsed="0.088782">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:54.626964" elapsed="0.000031"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:54.627251" elapsed="0.000037"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:54.627537" elapsed="0.000029"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:54.627767" elapsed="0.000027"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:54.628001" elapsed="0.000027"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:54.628250" elapsed="0.000029"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T01:03:54.628338" elapsed="0.000021"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T01:03:54.535088" elapsed="0.093387">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:03:55.667761" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:03:55.667284" elapsed="0.000510"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:03:55.668295" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:03:55.667969" elapsed="0.000353"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T01:03:55.668370" elapsed="0.000040"/>
</return>
<msg time="2026-04-08T01:03:55.668540" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T01:03:55.666876" elapsed="0.001689"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T01:03:55.673750" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T01:03:55.673551" elapsed="0.000225"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:03:55.673929" elapsed="0.000193"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:03:55.674526" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:03:55.674312" elapsed="0.000239"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:03:55.674997" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:03:55.674742" elapsed="0.000296"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:03:55.675204" elapsed="0.000183"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:03:55.675749" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:03:55.675543" elapsed="0.000231"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:03:55.676204" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:03:55.675947" elapsed="0.000299"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:03:55.676745" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:03:55.676406" elapsed="0.000365"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:03:55.677263" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:03:55.677007" elapsed="0.000301"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:03:55.677750" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:03:55.677463" elapsed="0.000313"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:03:55.684908" elapsed="0.000416"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:03:55.694697" elapsed="0.000433"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:03:55.696014" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:03:55.695420" elapsed="0.000704"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:03:55.698565" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:03:55.698037" elapsed="0.000592"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:03:55.698722" elapsed="0.000069"/>
</return>
<msg time="2026-04-08T01:03:55.699042" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:03:55.696495" elapsed="0.002658"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:03:55.700390" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:03:55.699529" elapsed="0.000972"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:03:55.701905" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:03:55.700893" elapsed="0.001125"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:03:55.703018" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:03:55.718720" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:03:55.702582" elapsed="0.021350">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:55.725039" elapsed="0.000054"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:55.725879" elapsed="0.000049"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:55.726753" elapsed="0.000048"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:55.727396" elapsed="0.000022"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:55.727797" elapsed="0.000022"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:55.728113" elapsed="0.000021"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:55.729402" elapsed="0.000054"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:55.730482" elapsed="0.000055"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:55.731520" elapsed="0.000055"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:03:55.728446" elapsed="0.003179"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:03:55.728304" elapsed="0.003384"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:55.731892" elapsed="0.000021"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:03:55.732059" elapsed="0.000017"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:03:55.693840" elapsed="0.038356">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:03:55.732315" elapsed="0.000017"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T01:03:55.682552" elapsed="0.049869">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:55.732605" elapsed="0.000021"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:55.737197" elapsed="0.000028"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:55.737400" elapsed="0.000021"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T01:03:55.737466" elapsed="0.000016"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T01:03:55.672893" elapsed="0.064679">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:03:55.737685" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:03:55.737730" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:03:55.672331" elapsed="0.065423"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T01:03:55.737956" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:03:55.737842" elapsed="0.000156"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:55.737822" elapsed="0.000199"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:03:55.739527" elapsed="0.000214"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:03:55.740223" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:03:55.739899" elapsed="0.000351"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:03:55.741243" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:03:55.740780" elapsed="0.000490"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:03:55.741318" elapsed="0.000031"/>
</return>
<msg time="2026-04-08T01:03:55.741471" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:03:55.740434" elapsed="0.001062"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:03:55.742032" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:03:55.741660" elapsed="0.000399"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:03:55.742698" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:03:55.742347" elapsed="0.000377"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:03:55.743089" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:03:55.752247" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:03:55.742889" elapsed="0.011895">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:55.755057" elapsed="0.000033"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:55.755376" elapsed="0.000046"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:55.755831" elapsed="0.000046"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:55.756233" elapsed="0.000048"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:55.756658" elapsed="0.000044"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:55.757023" elapsed="0.000045"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:55.757671" elapsed="0.000045"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:55.758056" elapsed="0.000044"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:55.758470" elapsed="0.000045"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:03:55.757359" elapsed="0.001229"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:03:55.757194" elapsed="0.001452"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:55.758962" elapsed="0.000043"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:03:55.759092" elapsed="0.000033"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:03:55.738962" elapsed="0.020397">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:03:55.759607" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:03:55.759704" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:03:55.738351" elapsed="0.021406"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T01:03:55.761140" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T01:03:55.760446" elapsed="0.000858">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T01:03:55.759938" elapsed="0.001502">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T01:03:55.759898" elapsed="0.001609">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T01:03:55.761607" elapsed="0.000035"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:03:55.671748" elapsed="0.090073">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:55.762255" elapsed="0.000050"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:55.762633" elapsed="0.000043"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T01:03:55.762767" elapsed="0.000032"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T01:03:55.668862" elapsed="0.094120">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:55.763386" elapsed="0.000047"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:55.763786" elapsed="0.000043"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:55.764190" elapsed="0.000046"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:55.764637" elapsed="0.000045"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:55.765011" elapsed="0.000043"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:55.765407" elapsed="0.000044"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T01:03:55.765542" elapsed="0.000032"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T01:03:55.666069" elapsed="0.099690">Could not parse owner and candidates for device openflow:1</status>
</kw>
<msg time="2026-04-08T01:03:55.765975" level="FAIL">Keyword 'ClusterManagement.Verify_Owner_And_Successors_For_Device' failed after retrying for 30 seconds. The last error was: Could not parse owner and candidates for device openflow:1</msg>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>30s</arg>
<arg>1s</arg>
<arg>ClusterManagement.Verify_Owner_And_Successors_For_Device</arg>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="FAIL" start="2026-04-08T01:03:25.065279" elapsed="30.700960">Keyword 'ClusterManagement.Verify_Owner_And_Successors_For_Device' failed after retrying for 30 seconds. The last error was: Could not parse owner and candidates for device openflow:1</status>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T01:03:55.766439" elapsed="0.000041"/>
</return>
<arg>openflow:1</arg>
<arg>1</arg>
<doc>Check Entity Owner Status and identify owner and successors for the device ${device}. Request is sent to controller ${controller_index}.</doc>
<status status="FAIL" start="2026-04-08T01:03:25.063051" elapsed="30.703620">Keyword 'ClusterManagement.Verify_Owner_And_Successors_For_Device' failed after retrying for 30 seconds. The last error was: Could not parse owner and candidates for device openflow:1</status>
</kw>
<msg time="2026-04-08T01:03:55.766859" level="FAIL">Keyword 'ClusterOpenFlow.Get OpenFlow Entity Owner Status For One Device' failed after retrying for 10 seconds. The last error was: Keyword 'ClusterManagement.Verify_Owner_And_Successors_For_Device' failed after retrying for 30 seconds. The last error was: Could not parse owner and candidates for device openflow:1</msg>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>10s</arg>
<arg>1s</arg>
<arg>ClusterOpenFlow.Get OpenFlow Entity Owner Status For One Device</arg>
<arg>openflow:1</arg>
<arg>1</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="FAIL" start="2026-04-08T01:03:25.054560" elapsed="30.712491">Keyword 'ClusterOpenFlow.Get OpenFlow Entity Owner Status For One Device' failed after retrying for 10 seconds. The last error was: Keyword 'ClusterManagement.Verify_Owner_And_Successors_For_Device' failed after retrying for 30 seconds. The last error was: Could not parse owner and candidates for device openflow:1</status>
</kw>
<doc>Check Entity Owner Status and identify owner and successor for first switch s1.</doc>
<status status="FAIL" start="2026-04-08T01:03:24.675129" elapsed="31.092328">Keyword 'ClusterOpenFlow.Get OpenFlow Entity Owner Status For One Device' failed after retrying for 10 seconds. The last error was: Keyword 'ClusterManagement.Verify_Owner_And_Successors_For_Device' failed after retrying for 30 seconds. The last error was: Could not parse owner and candidates for device openflow:1</status>
</test>
<test id="s1-s4-t59" name="Check Linear Topology After Owner Restart" line="407">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-08T01:03:55.771808" elapsed="0.000211"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-08T01:03:55.771540" elapsed="0.000534"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:03:55.773067" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:03:55.772958" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:55.772940" elapsed="0.000193"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:03:55.777925" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:03:55.777817" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:55.777800" elapsed="0.000193"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:03:55.779021" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:03:55.778639" elapsed="0.000409"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:03:55.779540" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:03:55.779228" elapsed="0.000338"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T01:03:55.779610" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T01:03:55.779766" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T01:03:55.778259" elapsed="0.001532"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:03:55.785191" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:03:55.785067" elapsed="0.000171"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:55.785049" elapsed="0.000210"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:03:55.786428" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:03:55.786314" elapsed="0.000159"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:55.786295" elapsed="0.000200"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:03:55.786937" level="INFO">${karaf_connection_index} = 476</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:03:55.786642" elapsed="0.000322"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:03:55.787404" level="INFO">${current_connection_index} = 495</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:03:55.787128" elapsed="0.000303"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:03:55.823655" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:03:55.787935" elapsed="0.035834"/>
</kw>
<msg time="2026-04-08T01:03:55.823937" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T01:03:55.823984" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:03:55.787596" elapsed="0.036425"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T01:03:55.884235" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "L "i "n "e "a "r "[C "T "o "p "o "l "o "g "y "[C "A "f "t "e "r "[C "O "w "n "e "r "[C "R "e "s "t "a "r "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T01:03:55.824562" elapsed="0.059975"/>
</kw>
<msg time="2026-04-08T01:03:55.884847" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T01:03:55.884917" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "L "i "n "e "a "r...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:03:55.824215" elapsed="0.060756"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:55.885619" elapsed="0.000039"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:03:55.885139" elapsed="0.000567"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:55.885089" elapsed="0.000654"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:03:55.886494" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "L "i "n "e "a "r "[C "T "o "p "o "l "o "g "y "[C "A "f "t "e "r "[C "O "w "n "e "r "[C "R "e "s "t "a "r "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:03:55.885959" elapsed="0.000620"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:55.886875" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:03:55.886648" elapsed="0.000284"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:55.886629" elapsed="0.000326"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T01:03:55.886994" elapsed="0.000047"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:03:55.889887" elapsed="0.000210"/>
</kw>
<msg time="2026-04-08T01:03:55.890182" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:03:55.888635" elapsed="0.001690"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:55.890609" elapsed="0.000076"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:55.890948" elapsed="0.000075"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:03:55.887947" elapsed="0.003245"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T01:03:55.887358" elapsed="0.003903"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T01:03:55.785977" elapsed="0.105385"/>
</kw>
<msg time="2026-04-08T01:03:55.891464" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:03:55.891510" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "L "i "n "e "a "r...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:03:55.785414" elapsed="0.106138"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T01:03:55.891808" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-08T01:03:55.891698" elapsed="0.000168"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:55.891678" elapsed="0.000211"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:55.892316" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:55.892663" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T01:03:55.892734" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T01:03:55.784728" elapsed="0.108116"/>
</kw>
<msg time="2026-04-08T01:03:55.892943" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:03:55.892988" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "L "i "n "e "a "r...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:03:55.780216" elapsed="0.112810"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:55.893386" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:03:55.893105" elapsed="0.000335"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:55.893087" elapsed="0.000376"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T01:03:55.780054" elapsed="0.113432"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:03:55.898977" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:03:55.898867" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:55.898848" elapsed="0.000196"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:03:55.900197" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:03:55.900071" elapsed="0.000172"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:55.900053" elapsed="0.000212"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:03:55.900725" level="INFO">${karaf_connection_index} = 478</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:03:55.900422" elapsed="0.000330"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:03:55.901176" level="INFO">${current_connection_index} = 495</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:03:55.900912" elapsed="0.000291"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:03:55.932967" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:03:55.901705" elapsed="0.031424"/>
</kw>
<msg time="2026-04-08T01:03:55.933366" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T01:03:55.933416" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:03:55.901367" elapsed="0.032088"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T01:03:55.996060" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "L "i "n "e "a "r "[C "T "o "p "o "l "o "g "y "[C "A "f "t "e "r "[C "O "w "n "e "r "[C "R "e "s "t "a "r "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T01:03:55.934106" elapsed="0.062091"/>
</kw>
<msg time="2026-04-08T01:03:55.996361" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T01:03:55.996410" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "L "i "n "e "a "r...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:03:55.933675" elapsed="0.062773"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:55.996789" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:03:55.996539" elapsed="0.000308"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:55.996512" elapsed="0.000363"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:03:55.997358" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "L "i "n "e "a "r "[C "T "o "p "o "l "o "g "y "[C "A "f "t "e "r "[C "O "w "n "e "r "[C "R "e "s "t "a "r "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:03:55.997025" elapsed="0.000465"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:55.997788" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:03:55.997561" elapsed="0.000282"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:55.997542" elapsed="0.000324"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T01:03:55.997902" elapsed="0.000036"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:03:56.000535" elapsed="0.000190"/>
</kw>
<msg time="2026-04-08T01:03:56.000787" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:03:55.999475" elapsed="0.001444"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:56.001282" elapsed="0.000089"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:56.001636" elapsed="0.000075"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:03:55.998823" elapsed="0.002999"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T01:03:55.998257" elapsed="0.003631"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T01:03:55.899769" elapsed="0.102236"/>
</kw>
<msg time="2026-04-08T01:03:56.002100" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:03:56.002144" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "L "i "n "e "a "r...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:03:55.899213" elapsed="0.102989"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T01:03:56.002389" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-08T01:03:56.002282" elapsed="0.000164"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:56.002263" elapsed="0.000207"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 2,
close the previous connection. In any case create a new connection
to karaf console for 2, set correct prompt set and login to karaf console.
Store connection index for 2 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:56.002874" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:56.003233" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T01:03:56.003304" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T01:03:55.898522" elapsed="0.104889"/>
</kw>
<msg time="2026-04-08T01:03:56.003506" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:03:56.003550" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "L "i "n "e "a "r...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:03:55.893768" elapsed="0.109818"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:56.004030" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:03:56.003662" elapsed="0.000428"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:56.003645" elapsed="0.000468"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T01:03:55.893624" elapsed="0.110512"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:03:56.009652" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:03:56.009544" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:56.009525" elapsed="0.000193"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:03:56.010905" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:03:56.010798" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:56.010780" elapsed="0.000193"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:03:56.011486" level="INFO">${karaf_connection_index} = 480</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:03:56.011118" elapsed="0.000395"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:03:56.011923" level="INFO">${current_connection_index} = 495</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:03:56.011674" elapsed="0.000276"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:03:56.044915" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:03:56.012465" elapsed="0.032601"/>
</kw>
<msg time="2026-04-08T01:03:56.045265" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T01:03:56.045313" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:03:56.012110" elapsed="0.033240"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T01:03:56.095237" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "L "i "n "e "a "r "[C "T "o "p "o "l "o "g "y "[C "A "f "t "e "r "[C "O "w "n "e "r "[C "R "e "s "t "a "r "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T01:03:56.045866" elapsed="0.049648"/>
</kw>
<msg time="2026-04-08T01:03:56.095674" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T01:03:56.095720" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "L "i "n "e "a "r...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:03:56.045524" elapsed="0.050234"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:56.096061" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:03:56.095835" elapsed="0.000281"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:56.095816" elapsed="0.000324"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:03:56.096611" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "L "i "n "e "a "r "[C "T "o "p "o "l "o "g "y "[C "A "f "t "e "r "[C "O "w "n "e "r "[C "R "e "s "t "a "r "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:03:56.096314" elapsed="0.000374"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:56.096976" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:03:56.096755" elapsed="0.000276"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:56.096737" elapsed="0.000317"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T01:03:56.097086" elapsed="0.000028"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:03:56.099588" elapsed="0.000187"/>
</kw>
<msg time="2026-04-08T01:03:56.099834" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:03:56.098561" elapsed="0.001400"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:56.100263" elapsed="0.000076"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:56.100596" elapsed="0.000073"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:03:56.097891" elapsed="0.002888"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T01:03:56.097366" elapsed="0.003476"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T01:03:56.010495" elapsed="0.090444"/>
</kw>
<msg time="2026-04-08T01:03:56.101028" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:03:56.101071" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "L "i "n "e "a "r...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:03:56.009871" elapsed="0.091237"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T01:03:56.101313" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-08T01:03:56.101206" elapsed="0.000165"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:56.101186" elapsed="0.000208"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 3,
close the previous connection. In any case create a new connection
to karaf console for 3, set correct prompt set and login to karaf console.
Store connection index for 3 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:56.101775" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:56.102122" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T01:03:56.102210" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T01:03:56.009089" elapsed="0.093227"/>
</kw>
<msg time="2026-04-08T01:03:56.102408" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:03:56.102452" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "L "i "n "e "a "r...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:03:56.004432" elapsed="0.098105"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:56.102868" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:03:56.102616" elapsed="0.000304"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:56.102598" elapsed="0.000346"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T01:03:56.004288" elapsed="0.098679"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-08T01:03:55.779878" elapsed="0.323118"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-08T01:03:55.777458" elapsed="0.325597"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-08T01:03:55.772670" elapsed="0.330442"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:03:55.772243" elapsed="0.330934"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-08T01:03:55.768785" elapsed="0.334452"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Check Linear Topology On Member" owner="ClusterOpenFlow">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:03:56.105242" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:03:56.104865" elapsed="0.000406"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T01:03:56.105316" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T01:03:56.105462" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T01:03:56.104515" elapsed="0.000972"/>
</kw>
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T01:03:56.112117" level="INFO">GET Request : url=http://10.30.170.48:8181/rests/data/network-topology:network-topology?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01s3bfo0y24i1es90l47mavglv0.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T01:03:56.112395" level="INFO">GET Response : url=http://10.30.170.48:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '2973'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}} 
 </msg>
<msg time="2026-04-08T01:03:56.112536" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${RFC8040_OPERATIONAL_TOPO_API}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T01:03:56.105644" elapsed="0.006918"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:03:56.115430" level="INFO">{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}}</msg>
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:03:56.112748" elapsed="0.002789"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"node-id":"openflow:${switch}"</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-08T01:03:56.118141" elapsed="0.003761"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-08T01:03:56.122214" elapsed="0.003540"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-08T01:03:56.126037" elapsed="0.003521"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-08T01:03:56.129813" elapsed="0.002781"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-08T01:03:56.132779" elapsed="0.002493"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:03:56.135892" level="INFO">${edge} = True</msg>
<var>${edge}</var>
<arg>${switch}==1 or ${switch}==${switches}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:03:56.135458" elapsed="0.000461"/>
</kw>
<if>
<branch type="IF" condition="not ${edge}">
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:3"</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:56.136236" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:03:56.135989" elapsed="0.000304"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:56.135971" elapsed="0.000346"/>
</if>
<if>
<branch type="IF" condition="not ${edge}">
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:3"</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:56.136594" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:03:56.136371" elapsed="0.000278"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:56.136356" elapsed="0.000316"/>
</if>
<if>
<branch type="IF" condition="not ${edge}">
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:3</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:56.136944" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:03:56.136723" elapsed="0.000275"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:56.136708" elapsed="0.000313"/>
</if>
<var name="${switch}">1</var>
<status status="PASS" start="2026-04-08T01:03:56.117972" elapsed="0.019071"/>
</iter>
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"node-id":"openflow:${switch}"</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-08T01:03:56.137415" elapsed="0.002538"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-08T01:03:56.140135" elapsed="0.002493"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-08T01:03:56.142808" elapsed="0.002468"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-08T01:03:56.145462" elapsed="0.002469"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-08T01:03:56.148110" elapsed="0.002492"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:03:56.151227" level="INFO">${edge} = False</msg>
<var>${edge}</var>
<arg>${switch}==1 or ${switch}==${switches}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:03:56.150781" elapsed="0.000473"/>
</kw>
<if>
<branch type="IF" condition="not ${edge}">
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:3"</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-08T01:03:56.151552" elapsed="0.002481"/>
</kw>
<status status="PASS" start="2026-04-08T01:03:56.151323" elapsed="0.002750"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:56.151305" elapsed="0.002793"/>
</if>
<if>
<branch type="IF" condition="not ${edge}">
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:3"</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-08T01:03:56.154401" elapsed="0.002450"/>
</kw>
<status status="PASS" start="2026-04-08T01:03:56.154153" elapsed="0.002737"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:56.154137" elapsed="0.002777"/>
</if>
<if>
<branch type="IF" condition="not ${edge}">
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:3</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-08T01:03:56.157216" elapsed="0.002520"/>
</kw>
<status status="PASS" start="2026-04-08T01:03:56.156970" elapsed="0.002805"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:56.156954" elapsed="0.002845"/>
</if>
<var name="${switch}">2</var>
<status status="PASS" start="2026-04-08T01:03:56.137264" elapsed="0.022558"/>
</iter>
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"node-id":"openflow:${switch}"</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-08T01:03:56.160202" elapsed="0.002566"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-08T01:03:56.162948" elapsed="0.002467"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-08T01:03:56.165592" elapsed="0.002475"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-08T01:03:56.168270" elapsed="0.002472"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-08T01:03:56.170920" elapsed="0.002463"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:03:56.174051" level="INFO">${edge} = True</msg>
<var>${edge}</var>
<arg>${switch}==1 or ${switch}==${switches}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:03:56.173599" elapsed="0.000479"/>
</kw>
<if>
<branch type="IF" condition="not ${edge}">
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:3"</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:56.174396" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:03:56.174148" elapsed="0.000304"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:56.174129" elapsed="0.000347"/>
</if>
<if>
<branch type="IF" condition="not ${edge}">
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:3"</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:56.174754" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:03:56.174529" elapsed="0.000280"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:56.174514" elapsed="0.000318"/>
</if>
<if>
<branch type="IF" condition="not ${edge}">
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:3</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:56.175107" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:03:56.174885" elapsed="0.000292"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:56.174870" elapsed="0.000331"/>
</if>
<var name="${switch}">3</var>
<status status="PASS" start="2026-04-08T01:03:56.160030" elapsed="0.015195"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="PASS" start="2026-04-08T01:03:56.115593" elapsed="0.059659"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check Linear topology.</doc>
<status status="PASS" start="2026-04-08T01:03:56.104103" elapsed="0.071206"/>
</kw>
<arg>10s</arg>
<arg>1s</arg>
<arg>ClusterOpenFlow.Check Linear Topology On Member</arg>
<arg>${SWITCHES}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-08T01:03:56.103410" elapsed="0.071946"/>
</kw>
<doc>Check Linear Topology.</doc>
<status status="PASS" start="2026-04-08T01:03:55.768203" elapsed="0.407267"/>
</test>
<test id="s1-s4-t60" name="Add Configuration In Owner and Verify After Owner Restart" line="411">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-08T01:03:56.178668" elapsed="0.000203"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-08T01:03:56.178406" elapsed="0.000519"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:03:56.179899" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:03:56.179791" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:56.179773" elapsed="0.000192"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:03:56.184786" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:03:56.184680" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:56.184662" elapsed="0.000190"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:03:56.185851" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:03:56.185472" elapsed="0.000418"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:03:56.186371" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:03:56.186053" elapsed="0.000343"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T01:03:56.186439" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T01:03:56.186591" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T01:03:56.185077" elapsed="0.001539"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:03:56.193625" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:03:56.193517" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:56.193498" elapsed="0.000193"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:03:56.194879" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:03:56.194754" elapsed="0.000170"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:56.194736" elapsed="0.000210"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:03:56.195590" level="INFO">${karaf_connection_index} = 476</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:03:56.195091" elapsed="0.000526"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:03:56.196028" level="INFO">${current_connection_index} = 495</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:03:56.195778" elapsed="0.000276"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:03:56.227544" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:03:56.196571" elapsed="0.031327"/>
</kw>
<msg time="2026-04-08T01:03:56.228375" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T01:03:56.228482" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:03:56.196233" elapsed="0.032571"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T01:03:56.283351" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "A "d "d "[C "C "o "n "f "i "g "u "r "a "t "i "o "n "[C "I "n "[C "O "w "n "e "r "[C "a "n "d "[C "V "e "r "i "f "y "[C "A "f "t "e "r "[C "O "w "n "e "r "[C "R "[78Ce "[A[78Cs
 "t "a "r "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T01:03:56.230302" elapsed="0.053352"/>
</kw>
<msg time="2026-04-08T01:03:56.284034" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T01:03:56.284140" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "A "d "d "[C "C "o "n "f "i "g "u "r...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:03:56.229335" elapsed="0.054926"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:56.285036" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:03:56.284470" elapsed="0.000718"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:56.284414" elapsed="0.000835"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:03:56.286541" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "A "d "d "[C "C "o "n "f "i "g "u "r "a "t "i "o "n "[C "I "n "[C "O "w "n "e "r "[C "a "n "d "[C "V "e "r "i "f "y "[C "A "f "t "e "r "[C "O "w "n "e "r "[C "R "[78Ce "[A[78Cs
 "t "a "r "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:03:56.285609" elapsed="0.001125"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:56.287426" elapsed="0.000049"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:03:56.286888" elapsed="0.000663"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:56.286845" elapsed="0.000757"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T01:03:56.287689" elapsed="0.000099"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:03:56.292046" elapsed="0.000209"/>
</kw>
<msg time="2026-04-08T01:03:56.292319" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:03:56.290835" elapsed="0.001625"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:56.292737" elapsed="0.000077"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:56.293269" elapsed="0.000079"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:03:56.289873" elapsed="0.003592"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T01:03:56.288486" elapsed="0.005047"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T01:03:56.194454" elapsed="0.099179"/>
</kw>
<msg time="2026-04-08T01:03:56.293730" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:03:56.293775" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "A "d "d "[C "C "o "n "f "i "g "u "r...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:03:56.193842" elapsed="0.099986"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T01:03:56.294020" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-08T01:03:56.293912" elapsed="0.000166"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:56.293893" elapsed="0.000209"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:56.294555" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:56.294902" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T01:03:56.294974" elapsed="0.000017"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T01:03:56.193177" elapsed="0.101908"/>
</kw>
<msg time="2026-04-08T01:03:56.295207" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:03:56.295253" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "A "d "d "[C "C "o "n "f "i "g "u "r...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:03:56.186970" elapsed="0.108326"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:56.295693" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:03:56.295438" elapsed="0.000308"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:56.295405" elapsed="0.000364"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T01:03:56.186828" elapsed="0.108964"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:03:56.301631" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:03:56.301523" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:56.301504" elapsed="0.000194"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:03:56.302877" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:03:56.302769" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:56.302750" elapsed="0.000195"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:03:56.303429" level="INFO">${karaf_connection_index} = 478</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:03:56.303092" elapsed="0.000364"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:03:56.303865" level="INFO">${current_connection_index} = 495</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:03:56.303616" elapsed="0.000275"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:03:56.333735" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:03:56.304408" elapsed="0.029517"/>
</kw>
<msg time="2026-04-08T01:03:56.334132" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T01:03:56.334205" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:03:56.304052" elapsed="0.030194"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T01:03:56.391615" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "A "d "d "[C "C "o "n "f "i "g "u "r "a "t "i "o "n "[C "I "n "[C "O "w "n "e "r "[C "a "n "d "[C "V "e "r "i "f "y "[C "A "f "t "e "r "[C "O "w "n "e "r "[C "R "[78Ce "[A[78Cs
 "t "a "r "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T01:03:56.334898" elapsed="0.056856"/>
</kw>
<msg time="2026-04-08T01:03:56.391915" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T01:03:56.391961" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "A "d "d "[C "C "o "n "f "i "g "u "r...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:03:56.334472" elapsed="0.057527"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:56.392372" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:03:56.392090" elapsed="0.000339"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:56.392063" elapsed="0.000393"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:03:56.392908" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "A "d "d "[C "C "o "n "f "i "g "u "r "a "t "i "o "n "[C "I "n "[C "O "w "n "e "r "[C "a "n "d "[C "V "e "r "i "f "y "[C "A "f "t "e "r "[C "O "w "n "e "r "[C "R "[78Ce "[A[78Cs
 "t "a "r "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:03:56.392603" elapsed="0.000391"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:56.393302" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:03:56.393062" elapsed="0.000295"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:56.393043" elapsed="0.000338"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T01:03:56.393417" elapsed="0.000035"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:03:56.396056" elapsed="0.000212"/>
</kw>
<msg time="2026-04-08T01:03:56.396331" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:03:56.394954" elapsed="0.001510"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:56.396742" elapsed="0.000074"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:56.397072" elapsed="0.000076"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:03:56.394318" elapsed="0.002959"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T01:03:56.393724" elapsed="0.003618"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T01:03:56.302468" elapsed="0.095025"/>
</kw>
<msg time="2026-04-08T01:03:56.397591" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:03:56.397636" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "A "d "d "[C "C "o "n "f "i "g "u "r...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:03:56.301888" elapsed="0.095787"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T01:03:56.397880" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-08T01:03:56.397771" elapsed="0.000167"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:56.397751" elapsed="0.000211"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 2,
close the previous connection. In any case create a new connection
to karaf console for 2, set correct prompt set and login to karaf console.
Store connection index for 2 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:56.398382" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:56.398718" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T01:03:56.398788" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T01:03:56.301144" elapsed="0.097755"/>
</kw>
<msg time="2026-04-08T01:03:56.398999" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:03:56.399043" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "A "d "d "[C "C "o "n "f "i "g "u "r...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:03:56.296076" elapsed="0.103004"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:56.399428" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:03:56.399172" elapsed="0.000310"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:56.399141" elapsed="0.000364"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T01:03:56.295930" elapsed="0.103599"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:03:56.405117" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:03:56.405010" elapsed="0.000166"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:56.404991" elapsed="0.000209"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:03:56.406464" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:03:56.406244" elapsed="0.000267"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:56.406226" elapsed="0.000307"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:03:56.406979" level="INFO">${karaf_connection_index} = 480</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:03:56.406680" elapsed="0.000326"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:03:56.407435" level="INFO">${current_connection_index} = 495</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:03:56.407182" elapsed="0.000279"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:03:56.445035" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:03:56.407960" elapsed="0.037180"/>
</kw>
<msg time="2026-04-08T01:03:56.445320" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T01:03:56.445367" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:03:56.407623" elapsed="0.037781"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T01:03:56.514903" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "A "d "d "[C "C "o "n "f "i "g "u "r "a "t "i "o "n "[C "I "n "[C "O "w "n "e "r "[C "a "n "d "[C "V "e "r "i "f "y "[C "A "f "t "e "r "[C "O "w "n "e "r "[C "R "[78Ce "[A[78Cs
 "t "a "r "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T01:03:56.445961" elapsed="0.069312"/>
</kw>
<msg time="2026-04-08T01:03:56.515672" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T01:03:56.515779" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "A "d "d "[C "C "o "n "f "i "g "u "r...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:03:56.445578" elapsed="0.070284"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:56.516602" elapsed="0.000122"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:03:56.516041" elapsed="0.000763"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:56.515994" elapsed="0.000865"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:03:56.517938" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "A "d "d "[C "C "o "n "f "i "g "u "r "a "t "i "o "n "[C "I "n "[C "O "w "n "e "r "[C "a "n "d "[C "V "e "r "i "f "y "[C "A "f "t "e "r "[C "O "w "n "e "r "[C "R "[78Ce "[A[78Cs
 "t "a "r "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:03:56.517212" elapsed="0.000914"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:56.518641" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:03:56.518306" elapsed="0.000414"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:56.518275" elapsed="0.000480"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T01:03:56.518804" elapsed="0.000041"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:03:56.522605" elapsed="0.000185"/>
</kw>
<msg time="2026-04-08T01:03:56.522852" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:03:56.520950" elapsed="0.002031"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:56.523279" elapsed="0.000082"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:56.523618" elapsed="0.000073"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:03:56.520020" elapsed="0.003779"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T01:03:56.519221" elapsed="0.004641"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T01:03:56.405922" elapsed="0.118038"/>
</kw>
<msg time="2026-04-08T01:03:56.524052" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:03:56.524095" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "A "d "d "[C "C "o "n "f "i "g "u "r...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:03:56.405353" elapsed="0.118834"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T01:03:56.524377" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-08T01:03:56.524268" elapsed="0.000168"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:56.524249" elapsed="0.000210"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 3,
close the previous connection. In any case create a new connection
to karaf console for 3, set correct prompt set and login to karaf console.
Store connection index for 3 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:56.524845" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:56.525198" elapsed="0.000026"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T01:03:56.525271" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T01:03:56.404651" elapsed="0.120726"/>
</kw>
<msg time="2026-04-08T01:03:56.525470" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:03:56.525514" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "A "d "d "[C "C "o "n "f "i "g "u "r...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:03:56.399802" elapsed="0.125749"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:56.525889" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:03:56.525626" elapsed="0.000317"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:56.525609" elapsed="0.000356"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T01:03:56.399659" elapsed="0.126329"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-08T01:03:56.186664" elapsed="0.339355"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-08T01:03:56.184326" elapsed="0.341751"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-08T01:03:56.179509" elapsed="0.346626"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:03:56.179074" elapsed="0.347128"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-08T01:03:56.176279" elapsed="0.349977"/>
</kw>
<kw name="Add Single Group And Flow On Member">
<msg time="2026-04-08T01:03:56.530626" level="FAIL">Variable '${new_owner}' not found.</msg>
<arg>${new_owner}</arg>
<doc>Add 1 group 1&amp;2 and 1 flow in every switch.</doc>
<status status="FAIL" start="2026-04-08T01:03:56.526489" elapsed="0.004178">Variable '${new_owner}' not found.</status>
</kw>
<doc>Add 1 group type 1&amp;2 and 1 flow in every switch.</doc>
<status status="FAIL" start="2026-04-08T01:03:56.175671" elapsed="0.355149">Variable '${new_owner}' not found.</status>
</test>
<test id="s1-s4-t61" name="Check Stats Are Not Frozen After Owner Restart" line="415">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-08T01:03:56.534325" elapsed="0.000222"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-08T01:03:56.534043" elapsed="0.000558"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:03:56.535589" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:03:56.535482" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:56.535463" elapsed="0.000194"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:03:56.540494" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:03:56.540389" elapsed="0.000150"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:56.540371" elapsed="0.000190"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:03:56.541561" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:03:56.541178" elapsed="0.000410"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:03:56.542065" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:03:56.541764" elapsed="0.000327"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T01:03:56.542135" elapsed="0.000045"/>
</return>
<msg time="2026-04-08T01:03:56.542307" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T01:03:56.540787" elapsed="0.001545"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:03:56.547923" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:03:56.547815" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:56.547795" elapsed="0.000196"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:03:56.549136" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:03:56.549027" elapsed="0.000181"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:56.549009" elapsed="0.000222"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:03:56.549729" level="INFO">${karaf_connection_index} = 476</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:03:56.549402" elapsed="0.000354"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:03:56.550189" level="INFO">${current_connection_index} = 495</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:03:56.549919" elapsed="0.000297"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:03:56.581310" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:03:56.550759" elapsed="0.030654"/>
</kw>
<msg time="2026-04-08T01:03:56.581584" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T01:03:56.581656" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:03:56.550409" elapsed="0.031286"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T01:03:56.625273" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "S "t "a "t "s "[C "A "r "e "[C "N "o "t "[C "F "r "o "z "e "n "[C "A "f "t "e "r "[C "O "w "n "e "r "[C "R "e "s "t "a "r "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T01:03:56.582246" elapsed="0.043146"/>
</kw>
<msg time="2026-04-08T01:03:56.625551" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T01:03:56.625611" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "S "t "a "t "s "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:03:56.581870" elapsed="0.043780"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:56.625965" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:03:56.625732" elapsed="0.000287"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:56.625710" elapsed="0.000381"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:03:56.626581" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "S "t "a "t "s "[C "A "r "e "[C "N "o "t "[C "F "r "o "z "e "n "[C "A "f "t "e "r "[C "O "w "n "e "r "[C "R "e "s "t "a "r "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:03:56.626262" elapsed="0.000398"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:56.626949" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:03:56.626729" elapsed="0.000274"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:56.626710" elapsed="0.000317"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T01:03:56.627060" elapsed="0.000029"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:03:56.629766" elapsed="0.000190"/>
</kw>
<msg time="2026-04-08T01:03:56.630018" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:03:56.628553" elapsed="0.001596"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:56.630444" elapsed="0.000076"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:56.630776" elapsed="0.000074"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:03:56.627914" elapsed="0.003045"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T01:03:56.627369" elapsed="0.003654"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T01:03:56.548727" elapsed="0.082393"/>
</kw>
<msg time="2026-04-08T01:03:56.631235" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:03:56.631279" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "S "t "a "t "s "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:03:56.548143" elapsed="0.083174"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T01:03:56.631501" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-08T01:03:56.631394" elapsed="0.000164"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:56.631376" elapsed="0.000206"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:56.631977" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:56.632326" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T01:03:56.632397" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T01:03:56.547476" elapsed="0.085028"/>
</kw>
<msg time="2026-04-08T01:03:56.632597" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:03:56.632640" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "S "t "a "t "s "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:03:56.542709" elapsed="0.089968"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:56.633002" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:03:56.632752" elapsed="0.000303"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:56.632736" elapsed="0.000342"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T01:03:56.542562" elapsed="0.090567"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:03:56.638705" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:03:56.638597" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:56.638578" elapsed="0.000194"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:03:56.639990" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:03:56.639883" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:56.639864" elapsed="0.000193"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:03:56.640522" level="INFO">${karaf_connection_index} = 478</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:03:56.640225" elapsed="0.000324"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:03:56.641000" level="INFO">${current_connection_index} = 495</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:03:56.640749" elapsed="0.000277"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:03:56.671117" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:03:56.641548" elapsed="0.029693"/>
</kw>
<msg time="2026-04-08T01:03:56.671411" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T01:03:56.671457" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:03:56.641208" elapsed="0.030287"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T01:03:56.724758" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "S "t "a "t "s "[C "A "r "e "[C "N "o "t "[C "F "r "o "z "e "n "[C "A "f "t "e "r "[C "O "w "n "e "r "[C "R "e "s "t "a "r "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T01:03:56.672048" elapsed="0.052834"/>
</kw>
<msg time="2026-04-08T01:03:56.725045" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T01:03:56.725092" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "S "t "a "t "s "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:03:56.671683" elapsed="0.053446"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:56.725490" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:03:56.725241" elapsed="0.000319"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:56.725216" elapsed="0.000371"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:03:56.726040" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "S "t "a "t "s "[C "A "r "e "[C "N "o "t "[C "F "r "o "z "e "n "[C "A "f "t "e "r "[C "O "w "n "e "r "[C "R "e "s "t "a "r "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:03:56.725734" elapsed="0.000385"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:56.726433" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:03:56.726204" elapsed="0.000284"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:56.726185" elapsed="0.000326"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T01:03:56.726547" elapsed="0.000036"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:03:56.729173" elapsed="0.000188"/>
</kw>
<msg time="2026-04-08T01:03:56.729422" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:03:56.728059" elapsed="0.001530"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:56.729870" elapsed="0.000075"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:56.730225" elapsed="0.000074"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:03:56.727422" elapsed="0.002987"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T01:03:56.726849" elapsed="0.003625"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T01:03:56.639580" elapsed="0.090995"/>
</kw>
<msg time="2026-04-08T01:03:56.730669" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:03:56.730713" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "S "t "a "t "s "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:03:56.638925" elapsed="0.091829"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T01:03:56.730939" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-08T01:03:56.730833" elapsed="0.000164"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:56.730814" elapsed="0.000207"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 2,
close the previous connection. In any case create a new connection
to karaf console for 2, set correct prompt set and login to karaf console.
Store connection index for 2 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:56.731437" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:56.731776" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T01:03:56.731902" elapsed="0.000018"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T01:03:56.638256" elapsed="0.093759"/>
</kw>
<msg time="2026-04-08T01:03:56.732111" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:03:56.732170" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "S "t "a "t "s "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:03:56.633418" elapsed="0.098792"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:56.732538" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:03:56.732287" elapsed="0.000303"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:56.732270" elapsed="0.000344"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T01:03:56.633275" elapsed="0.099363"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:03:56.738427" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:03:56.738314" elapsed="0.000158"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:56.738290" elapsed="0.000204"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:03:56.739637" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:03:56.739530" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:56.739511" elapsed="0.000194"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:03:56.740151" level="INFO">${karaf_connection_index} = 480</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:03:56.739851" elapsed="0.000345"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:03:56.740608" level="INFO">${current_connection_index} = 495</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:03:56.740358" elapsed="0.000277"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:03:56.775496" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:03:56.741137" elapsed="0.034530"/>
</kw>
<msg time="2026-04-08T01:03:56.775862" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T01:03:56.775911" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:03:56.740797" elapsed="0.035152"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T01:03:56.822621" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "S "t "a "t "s "[C "A "r "e "[C "N "o "t "[C "F "r "o "z "e "n "[C "A "f "t "e "r "[C "O "w "n "e "r "[C "R "e "s "t "a "r "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T01:03:56.776635" elapsed="0.046108"/>
</kw>
<msg time="2026-04-08T01:03:56.822904" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T01:03:56.822952" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "S "t "a "t "s "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:03:56.776201" elapsed="0.046789"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:56.823347" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:03:56.823079" elapsed="0.000323"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:56.823054" elapsed="0.000374"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:03:56.823876" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "S "t "a "t "s "[C "A "r "e "[C "N "o "t "[C "F "r "o "z "e "n "[C "A "f "t "e "r "[C "O "w "n "e "r "[C "R "e "s "t "a "r "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:03:56.823574" elapsed="0.000383"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:56.824265" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:03:56.824025" elapsed="0.000295"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:56.824006" elapsed="0.000337"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T01:03:56.824377" elapsed="0.000035"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:03:56.827130" elapsed="0.000203"/>
</kw>
<msg time="2026-04-08T01:03:56.827396" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:03:56.825908" elapsed="0.001625"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:56.827884" elapsed="0.000076"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:56.828242" elapsed="0.000073"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:03:56.825254" elapsed="0.003171"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T01:03:56.824682" elapsed="0.003809"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T01:03:56.739227" elapsed="0.089383"/>
</kw>
<msg time="2026-04-08T01:03:56.828711" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:03:56.828756" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "S "t "a "t "s "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:03:56.738647" elapsed="0.090148"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T01:03:56.828979" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-08T01:03:56.828872" elapsed="0.000165"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:56.828854" elapsed="0.000207"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 3,
close the previous connection. In any case create a new connection
to karaf console for 3, set correct prompt set and login to karaf console.
Store connection index for 3 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:56.829495" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:56.829829" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T01:03:56.829899" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T01:03:56.737859" elapsed="0.092147"/>
</kw>
<msg time="2026-04-08T01:03:56.830100" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:03:56.830144" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "S "t "a "t "s "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:03:56.732913" elapsed="0.097284"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:56.830523" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:03:56.830274" elapsed="0.000301"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:56.830257" elapsed="0.000341"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T01:03:56.732770" elapsed="0.097851"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-08T01:03:56.542386" elapsed="0.288270"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-08T01:03:56.540016" elapsed="0.290700"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-08T01:03:56.535189" elapsed="0.295587"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:03:56.534752" elapsed="0.296072"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-08T01:03:56.531748" elapsed="0.299131"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:03:56.835407" level="FAIL">Variable '${new_owner}' not found.</msg>
<arg>${new_owner}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="FAIL" start="2026-04-08T01:03:56.831071" elapsed="0.004377">Variable '${new_owner}' not found.</status>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<arg>30s</arg>
<arg>1s</arg>
<arg>Check Flow Stats Are Not Frozen</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:56.835628" elapsed="0.000022"/>
</kw>
<doc>Check that duration flow stat is increasing.</doc>
<status status="FAIL" start="2026-04-08T01:03:56.531122" elapsed="0.304679">Variable '${new_owner}' not found.</status>
</test>
<test id="s1-s4-t62" name="Check Flows In Operational DS After Owner Restart" line="420">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-08T01:03:56.839472" elapsed="0.000204"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-08T01:03:56.839197" elapsed="0.000534"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:03:56.840708" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:03:56.840602" elapsed="0.000150"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:56.840584" elapsed="0.000189"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:03:56.845706" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:03:56.845586" elapsed="0.000205"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:56.845561" elapsed="0.000256"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:03:56.846837" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:03:56.846454" elapsed="0.000409"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:03:56.847346" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:03:56.847026" elapsed="0.000345"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T01:03:56.847415" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T01:03:56.847568" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T01:03:56.846053" elapsed="0.001540"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:03:56.853109" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:03:56.853003" elapsed="0.000165"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:56.852985" elapsed="0.000207"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:03:56.854350" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:03:56.854242" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:56.854224" elapsed="0.000194"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:03:56.854862" level="INFO">${karaf_connection_index} = 476</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:03:56.854563" elapsed="0.000326"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:03:56.855313" level="INFO">${current_connection_index} = 495</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:03:56.855049" elapsed="0.000291"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:03:56.888022" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:03:56.855837" elapsed="0.032533"/>
</kw>
<msg time="2026-04-08T01:03:56.888694" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T01:03:56.888763" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:03:56.855501" elapsed="0.033314"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T01:03:56.947694" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "[C "I "n "[C "O "p "e "r "a "t "i "o "n "a "l "[C "D "S "[C "A "f "t "e "r "[C "O "w "n "e "r "[C "R "e "s "t "a "r "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T01:03:56.889921" elapsed="0.057899"/>
</kw>
<msg time="2026-04-08T01:03:56.947984" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T01:03:56.948032" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:03:56.889217" elapsed="0.058851"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:56.948480" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:03:56.948201" elapsed="0.000337"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:56.948146" elapsed="0.000422"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:03:56.949032" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "[C "I "n "[C "O "p "e "r "a "t "i "o "n "a "l "[C "D "S "[C "A "f "t "e "r "[C "O "w "n "e "r "[C "R "e "s "t "a "r "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:03:56.948719" elapsed="0.000392"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:56.949436" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:03:56.949197" elapsed="0.000297"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:56.949176" elapsed="0.000341"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T01:03:56.949555" elapsed="0.000044"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:03:56.952266" elapsed="0.000209"/>
</kw>
<msg time="2026-04-08T01:03:56.952538" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:03:56.951227" elapsed="0.001451"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:56.953032" elapsed="0.000074"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:56.953415" elapsed="0.000074"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:03:56.950536" elapsed="0.003065"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T01:03:56.949911" elapsed="0.003756"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T01:03:56.853917" elapsed="0.099851"/>
</kw>
<msg time="2026-04-08T01:03:56.953867" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:03:56.953913" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:03:56.853345" elapsed="0.100607"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T01:03:56.954141" elapsed="0.000047"/>
</return>
<status status="PASS" start="2026-04-08T01:03:56.954032" elapsed="0.000191"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:56.954013" elapsed="0.000234"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:56.954694" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:56.955048" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T01:03:56.955120" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T01:03:56.852666" elapsed="0.102584"/>
</kw>
<msg time="2026-04-08T01:03:56.955352" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:03:56.955397" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:03:56.847996" elapsed="0.107437"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:56.955768" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:03:56.955514" elapsed="0.000308"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:56.955496" elapsed="0.000350"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T01:03:56.847822" elapsed="0.108049"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:03:56.961693" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:03:56.961585" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:56.961565" elapsed="0.000195"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:03:56.962893" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:03:56.962786" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:56.962768" elapsed="0.000191"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:03:56.963431" level="INFO">${karaf_connection_index} = 478</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:03:56.963106" elapsed="0.000352"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:03:56.963867" level="INFO">${current_connection_index} = 495</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:03:56.963619" elapsed="0.000274"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:03:56.992996" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:03:56.964422" elapsed="0.028688"/>
</kw>
<msg time="2026-04-08T01:03:56.993293" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T01:03:56.993341" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:03:56.964056" elapsed="0.029347"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T01:03:57.039794" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "[C "I "n "[C "O "p "e "r "a "t "i "o "n "a "l "[C "D "S "[C "A "f "t "e "r "[C "O "w "n "e "r "[C "R "e "s "t "a "r "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T01:03:56.993926" elapsed="0.046020"/>
</kw>
<msg time="2026-04-08T01:03:57.040116" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T01:03:57.040188" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:03:56.993583" elapsed="0.046644"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:57.040542" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:03:57.040309" elapsed="0.000290"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:57.040289" elapsed="0.000334"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:03:57.041079" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "[C "I "n "[C "O "p "e "r "a "t "i "o "n "a "l "[C "D "S "[C "A "f "t "e "r "[C "O "w "n "e "r "[C "R "e "s "t "a "r "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:03:57.040768" elapsed="0.000404"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:57.041499" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:03:57.041243" elapsed="0.000311"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:57.041225" elapsed="0.000353"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T01:03:57.041610" elapsed="0.000028"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:03:57.044116" elapsed="0.000195"/>
</kw>
<msg time="2026-04-08T01:03:57.044374" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:03:57.043073" elapsed="0.001437"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:57.044783" elapsed="0.000074"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:57.045113" elapsed="0.000095"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:03:57.042452" elapsed="0.002878"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T01:03:57.041881" elapsed="0.003527"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T01:03:56.962484" elapsed="0.083024"/>
</kw>
<msg time="2026-04-08T01:03:57.045600" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:03:57.045644" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:03:56.961914" elapsed="0.083767"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T01:03:57.045866" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-08T01:03:57.045759" elapsed="0.000164"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:57.045740" elapsed="0.000207"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 2,
close the previous connection. In any case create a new connection
to karaf console for 2, set correct prompt set and login to karaf console.
Store connection index for 2 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:57.046351" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:57.046686" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T01:03:57.046757" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T01:03:56.961203" elapsed="0.085660"/>
</kw>
<msg time="2026-04-08T01:03:57.046957" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:03:57.047001" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:03:56.956175" elapsed="0.090862"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:57.047394" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:03:57.047123" elapsed="0.000326"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:57.047106" elapsed="0.000366"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T01:03:56.956014" elapsed="0.091480"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:03:57.053152" elapsed="0.000029"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:03:57.053044" elapsed="0.000204"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:57.053025" elapsed="0.000247"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:03:57.054461" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:03:57.054351" elapsed="0.000156"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:57.054333" elapsed="0.000197"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:03:57.054973" level="INFO">${karaf_connection_index} = 480</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:03:57.054676" elapsed="0.000325"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:03:57.055436" level="INFO">${current_connection_index} = 495</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:03:57.055183" elapsed="0.000280"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:03:57.086236" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:03:57.055968" elapsed="0.030456"/>
</kw>
<msg time="2026-04-08T01:03:57.086590" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T01:03:57.086639" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:03:57.055628" elapsed="0.031046"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T01:03:57.134071" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "[C "I "n "[C "O "p "e "r "a "t "i "o "n "a "l "[C "D "S "[C "A "f "t "e "r "[C "O "w "n "e "r "[C "R "e "s "t "a "r "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T01:03:57.087230" elapsed="0.046969"/>
</kw>
<msg time="2026-04-08T01:03:57.134364" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T01:03:57.134411" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:03:57.086852" elapsed="0.047595"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:57.134759" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:03:57.134527" elapsed="0.000288"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:57.134507" elapsed="0.000332"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:03:57.135310" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "[C "I "n "[C "O "p "e "r "a "t "i "o "n "a "l "[C "D "S "[C "A "f "t "e "r "[C "O "w "n "e "r "[C "R "e "s "t "a "r "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:03:57.134981" elapsed="0.000406"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:57.135676" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:03:57.135455" elapsed="0.000275"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:57.135437" elapsed="0.000317"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T01:03:57.135786" elapsed="0.000027"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:03:57.138274" elapsed="0.000180"/>
</kw>
<msg time="2026-04-08T01:03:57.138515" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:03:57.137231" elapsed="0.001411"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:57.138912" elapsed="0.000073"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:57.139275" elapsed="0.000074"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:03:57.136602" elapsed="0.002876"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T01:03:57.136048" elapsed="0.003494"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T01:03:57.054024" elapsed="0.085619"/>
</kw>
<msg time="2026-04-08T01:03:57.139736" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:03:57.139781" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:03:57.053457" elapsed="0.086361"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T01:03:57.140050" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-08T01:03:57.139939" elapsed="0.000169"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:57.139919" elapsed="0.000213"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 3,
close the previous connection. In any case create a new connection
to karaf console for 3, set correct prompt set and login to karaf console.
Store connection index for 3 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:57.140536" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:57.140867" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T01:03:57.140938" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T01:03:57.052703" elapsed="0.088340"/>
</kw>
<msg time="2026-04-08T01:03:57.141137" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:03:57.141197" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:03:57.047757" elapsed="0.093479"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:57.141588" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:03:57.141338" elapsed="0.000304"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:57.141319" elapsed="0.000346"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T01:03:57.047615" elapsed="0.094074"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-08T01:03:56.847647" elapsed="0.294072"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-08T01:03:56.845172" elapsed="0.296607"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-08T01:03:56.840314" elapsed="0.301526"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:03:56.839882" elapsed="0.302006"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-08T01:03:56.836944" elapsed="0.305001"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Check Number Of Flows On Member" owner="ClusterOpenFlow">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:03:57.143984" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:03:57.143441" elapsed="0.000573"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T01:03:57.144060" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T01:03:57.144232" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T01:03:57.143062" elapsed="0.001196"/>
</kw>
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T01:03:57.188959" level="INFO">GET Request : url=http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01s3bfo0y24i1es90l47mavglv0.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T01:03:57.193399" level="INFO">GET Response : url=http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Transfer-Encoding': 'chunked'} 
 body={"opendaylight-inventory:nodes":{"node":[{"id":"openflow:3","flow-node-inventory:port-number":54950,"flow-node-inventory:table":[{"id":62,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":28,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":2,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":224,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":181,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":147,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":106,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":61,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":27,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":1,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":223,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":182,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":148,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":105,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":60,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":30,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":0,"flow":[{"id":"71","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.71/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":71}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":902000000}},"flags":""},{"id":"11","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.11/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":11}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":902000000}},"flags":""},{"id":"70","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.70/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":70}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":902000000}},"flags":""},{"id":"10","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.10/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":10}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":902000000}},"flags":""},{"id":"60","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.60/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":60}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":902000000}},"flags":""},{"id":"13","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.13/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":13}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":902000000}},"flags":""},{"id":"12","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.12/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":12}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":902000000}},"flags":""},{"id":"80","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.80/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":80}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":902000000}},"flags":""},{"id":"93","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.93/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":93}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":902000000}},"flags":""},{"id":"92","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.92/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":92}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":902000000}},"flags":""},{"id":"82","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.82/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":82}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":902000000}},"flags":""},{"id":"91","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.91/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":91}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":902000000}},"flags":""},{"id":"81","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.81/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":81}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":902000000}},"flags":""},{"id":"90","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.90/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":90}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":902000000}},"flags":""},{"id":"9","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.9/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":9}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":901000000}},"flags":""},{"id":"84","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.84/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":84}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":902000000}},"flags":""},{"id":"97","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.97/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":97}}]}}]},"hard-timeout":0,"opendaylight-flo... (set the log level to DEBUG or TRACE to see the full content) 
 </msg>
<msg time="2026-04-08T01:03:57.193931" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${RFC8040_OPERATIONAL_NODES_API}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T01:03:57.144417" elapsed="0.049577"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:03:57.199629" level="INFO">{"opendaylight-inventory:nodes":{"node":[{"id":"openflow:3","flow-node-inventory:port-number":54950,"flow-node-inventory:table":[{"id":62,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":28,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":2,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":224,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":181,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":147,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":106,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":61,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":27,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":1,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":223,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":182,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":148,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":105,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":60,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":30,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":0,"flow":[{"id":"71","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.71/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":71}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":902000000}},"flags":""},{"id":"11","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.11/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":11}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":902000000}},"flags":""},{"id":"70","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.70/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":70}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":902000000}},"flags":""},{"id":"10","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.10/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":10}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":902000000}},"flags":""},{"id":"60","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.60/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":60}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":902000000}},"flags":""},{"id":"13","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.13/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":13}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":902000000}},"flags":""},{"id":"12","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.12/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":12}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":902000000}},"flags":""},{"id":"80","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.80/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":80}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":902000000}},"flags":""},{"id":"93","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.93/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":93}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":902000000}},"flags":""},{"id":"92","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.92/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":92}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":902000000}},"flags":""},{"id":"82","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.82/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":82}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":902000000}},"flags":""},{"id":"91","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.91/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":91}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":902000000}},"flags":""},{"id":"81","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.81/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":81}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":902000000}},"flags":""},{"id":"90","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.90/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":90}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":902000000}},"flags":""},{"id":"9","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.9/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":9}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":901000000}},"flags":""},{"id":"84","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.84/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":84}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":902000000}},"flags":""},{"id":"97","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.97/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":97}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":902000000}},"flags":""},{"id":"66","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.66/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":66}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":902000000}},"flags":""},{"id":"79","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.79/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":79}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":902000000}},"flags":""},{"id":"54","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.54/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":54}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":901000000}},"flags":""},{"id":"45","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.45/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":45}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":901000000}},"flags":""},{"id":"83","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.83/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":83}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":902000000}},"flags":""},{"id":"96","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.96/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":96}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":901000000}},"flags":""},{"id":"65","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.65/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":65}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":902000000}},"flags":""},{"id":"78","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.78/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":78}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":902000000}},"flags":""},{"id":"20","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.20/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":20}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":901000000}},"flags":""},{"id":"55","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.55/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":55}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":901000000}},"flags":""},{"id":"46","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.46/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":46}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":901000000}},"flags":""},{"id":"7","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.7/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":7}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":901000000}},"flags":""},{"id":"86","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.86/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":86}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":902000000}},"flags":""},{"id":"95","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.95/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":95}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":901000000}},"flags":""},{"id":"68","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.68/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":68}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":902000000}},"flags":""},{"id":"77","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.77/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":77}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":902000000}},"flags":""},{"id":"30","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.30/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":30}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":901000000}},"flags":""},{"id":"56","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.56/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":56}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":901000000}},"flags":""},{"id":"43","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.43/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":43}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":901000000}},"flags":""},{"id":"8","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.8/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":8}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":901000000}},"flags":""},{"id":"85","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.85/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":85}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":902000000}},"flags":""},{"id":"94","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.94/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":94}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":901000000}},"flags":""},{"id":"67","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.67/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":67}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":902000000}},"flags":""},{"id":"76","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.76/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":76}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":902000000}},"flags":""},{"id":"31","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.31/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":31}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":901000000}},"flags":""},{"id":"57","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.57/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":57}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":901000000}},"flags":""},{"id":"44","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.44/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":44}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":901000000}},"flags":""},{"id":"5","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.5/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":5}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":901000000}},"flags":""},{"id":"88","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.88/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":88}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":902000000}},"flags":""},{"id":"62","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.62/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":62}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":902000000}},"flags":""},{"id":"75","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.75/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":75}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":902000000}},"flags":""},{"id":"32","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.32/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":32}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":901000000}},"flags":""},{"id":"23","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.23/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":23}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":901000000}},"flags":""},{"id":"50","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.50/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":50}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":898000000}},"flags":""},{"id":"41","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.41/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":41}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":901000000}},"flags":""},{"id":"6","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.6/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":6}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":901000000}},"flags":""},{"id":"100","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.100/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":100}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":902000000}},"flags":""},{"id":"87","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.87/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":87}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":902000000}},"flags":""},{"id":"61","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.61/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":61}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":902000000}},"flags":""},{"id":"74","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.74/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":74}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":902000000}},"flags":""},{"id":"33","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.33/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":33}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":901000000}},"flags":""},{"id":"24","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.24/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":24}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":901000000}},"flags":""},{"id":"51","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.51/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":51}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":898000000}},"flags":""},{"id":"42","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.42/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":42}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":901000000}},"flags":""},{"id":"3","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.3/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":3}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":901000000}},"flags":""},{"id":"99","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.99/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":99}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":902000000}},"flags":""},{"id":"64","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.64/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":64}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":902000000}},"flags":""},{"id":"73","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.73/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":73}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":902000000}},"flags":""},{"id":"34","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.34/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":34}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":901000000}},"flags":""},{"id":"21","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.21/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":21}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":901000000}},"flags":""},{"id":"52","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.52/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":52}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":901000000}},"flags":""},{"id":"#UF$TABLE*0-3","table_id":0,"priority":0,"cookie_mask":"0","idle-timeout":0,"cookie":"10","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"output-action":{"max-length":65535,"output-node-connector":"CONTROLLER"}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"76","byte-count":"6295","duration":{"second":325,"nanosecond":773000000}},"flags":"SEND_FLOW_REM"},{"id":"4","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.4/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":4}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":901000000}},"flags":""},{"id":"89","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.89/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":89}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":902000000}},"flags":""},{"id":"98","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.98/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":98}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":902000000}},"flags":""},{"id":"63","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.63/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":63}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":902000000}},"flags":""},{"id":"72","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.72/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":72}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":902000000}},"flags":""},{"id":"35","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.35/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":35}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":901000000}},"flags":""},{"id":"22","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.22/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":22}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":901000000}},"flags":""},{"id":"53","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.53/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":53}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":901000000}},"flags":""},{"id":"40","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.40/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":40}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":901000000}},"flags":""},{"id":"37","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.37/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":37}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":901000000}},"flags":""},{"id":"28","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.28/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":28}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":901000000}},"flags":""},{"id":"36","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.36/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":36}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":901000000}},"flags":""},{"id":"27","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.27/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":27}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":901000000}},"flags":""},{"id":"39","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.39/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":39}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":901000000}},"flags":""},{"id":"26","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.26/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":26}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":901000000}},"flags":""},{"id":"38","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.38/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":38}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":901000000}},"flags":""},{"id":"25","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.25/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":25}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":901000000}},"flags":""},{"id":"69","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.69/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":69}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":902000000}},"flags":""},{"id":"59","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.59/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":59}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":901000000}},"flags":""},{"id":"58","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.58/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":58}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":901000000}},"flags":""},{"id":"49","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.49/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":49}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":901000000}},"flags":""},{"id":"48","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.48/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":48}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":901000000}},"flags":""},{"id":"29","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.29/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":29}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":901000000}},"flags":""},{"id":"47","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.47/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":47}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":901000000}},"flags":""},{"id":"18","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.18/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":18}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":902000000}},"flags":""},{"id":"19","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.19/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":19}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":902000000}},"flags":""},{"id":"14","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.14/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":14}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":902000000}},"flags":""},{"id":"15","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.15/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":15}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":902000000}},"flags":""},{"id":"1","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.1/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":1}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":144,"nanosecond":609000000}},"flags":""},{"id":"16","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.16/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":16}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":902000000}},"flags":""},{"id":"2","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.2/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":2}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":902000000}},"flags":""},{"id":"17","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.17/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":17}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":902000000}},"flags":""}],"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"94","active-flows":101,"packets-matched":"86"}},{"id":226,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":179,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":149,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":104,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":59,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":29,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":225,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":180,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":150,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":103,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":66,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":32,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":220,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":185,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":151,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":102,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":65,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":31,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":253,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":219,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":186,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":152,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":101,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":64,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":34,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":252,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":222,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":183,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":153,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":100,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":63,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":33,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":251,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":221,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":184,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":154,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":99,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":54,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":20,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":250,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":216,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":189,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":155,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":129,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":114,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":53,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":19,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":249,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":215,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":190,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":156,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":130,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":113,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":52,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":22,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":248,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":218,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":187,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":157,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":112,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":51,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":21,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":247,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":217,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":188,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":158,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":128,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":111,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":58,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":24,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":246,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":212,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":193,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":159,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":110,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":57,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":23,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":245,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":211,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":194,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":160,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":109,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":56,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":26,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":244,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":214,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":191,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":161,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":108,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":55,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":25,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":243,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":213,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":192,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":162,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":107,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":77,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":43,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":17,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":239,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":198,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":164,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":138,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":119,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":89,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":78,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":44,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":18,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":240,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":197,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":163,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":137,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":120,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":90,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":75,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":45,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":15,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":241,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":196,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":166,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":136,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":121,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":87,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":76,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":46,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":16,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":242,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":195,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":165,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":135,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":122,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":88,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":81,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":47,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":13,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":235,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":202,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":168,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":134,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":115,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":85,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":82,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":48,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":14,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":236,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":201,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":167,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":133,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":116,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":86,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":79,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":49,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":11,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":237,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":200,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":170,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":132,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":117,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":83,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":80,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":50,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":12,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":238,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":199,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":169,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":131,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":118,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":84,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":69,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":35,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":9,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":231,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":206,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":172,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":146,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":127,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":97,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":70,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":36,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":10,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":232,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":205,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":171,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":145,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":98,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":67,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":37,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":7,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":233,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":204,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":174,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":144,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":95,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":68,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":38,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":8,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":234,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":203,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":173,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":143,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":96,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":73,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":39,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":5,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":227,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":210,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":176,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":142,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":123,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":93,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":74,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":40,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":6,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":228,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":209,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":175,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":141,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":124,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":94,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":71,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":41,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":3,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":229,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":208,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":178,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":140,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":125,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":91,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":72,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":42,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":4,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":230,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":207,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":177,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":139,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":126,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":92,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}}],"opendaylight-group-statistics:group-features":{"max-groups":[4294967040],"group-types-supported":["opendaylight-group-types:group-all","opendaylight-group-types:group-ff","opendaylight-group-types:group-select","opendaylight-group-types:group-indirect"],"group-capabilities-supported":["opendaylight-group-types:chaining","opendaylight-group-types:select-weight","opendaylight-group-types:select-liveness"],"actions":[67076097]},"flow-node-inventory:manufacturer":"Nicira, Inc.","flow-node-inventory:description":"s3","flow-node-inventory:hardware":"Open vSwitch","flow-node-inventory:switch-features":{"max_tables":254,"capabilities":["flow-node-inventory:flow-feature-capability-table-stats","flow-node-inventory:flow-feature-capability-group-stats","flow-node-inventory:flow-feature-capability-queue-stats","flow-node-inventory:flow-feature-capability-flow-stats","flow-node-inventory:flow-feature-capability-port-stats"],"max_buffers":0},"flow-node-inventory:snapshot-gathering-status-start":{"begin":"2026-04-08T01:03:55.784Z"},"flow-node-inventory:software":"2.17.11","node-connector":[{"id":"openflow:3:LOCAL","flow-node-inventory:port-number":4294967294,"flow-node-inventory:hardware-address":"c2:87:c1:60:0d:43","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s3","flow-node-inventory:current-feature":"","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":0,"flow-node-inventory:state":{"live":false,"blocked":false,"link-down":true},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"PORT-DOWN","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"0","received":"0"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":331,"nanosecond":100000000},"bytes":{"transmitted":"0","received":"0"},"receive-crc-error":"0"}},{"id":"openflow:3:2","flow-node-inventory:port-number":2,"flow-node-inventory:hardware-address":"9e:72:98:8c:46:72","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s3-eth2","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"80","received":"84"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":331,"nanosecond":103000000},"bytes":{"transmitted":"6722","received":"7074"},"receive-crc-error":"0"}},{"id":"openflow:3:1","flow-node-inventory:port-number":1,"flow-node-inventory:hardware-address":"ca:ac:9a:41:42:1c","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s3-eth1","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"86","received":"12"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":331,"nanosecond":103000000},"bytes":{"transmitted":"7250","received":"936"},"receive-crc-error":"0"}}],"flow-node-inventory:ip-address":"10.30.170.192","flow-node-inventory:serial-number":"None","flow-node-inventory:group":[{"group-id":56,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":56000}}],"watch_group":56000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":56,"duration":{"second":326,"nanosecond":919000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":22,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":22000}}],"watch_group":22000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":22,"duration":{"second":326,"nanosecond":920000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":99,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":99000}}],"watch_group":99000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":99,"duration":{"second":326,"nanosecond":919000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":34000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":34000,"duration":{"second":329,"nanosecond":749000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":89000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":89000,"duration":{"second":329,"nanosecond":748000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":60000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":60000,"duration":{"second":329,"nanosecond":746000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":91000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":91000,"duration":{"second":329,"nanosecond":745000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":57,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":57000}}],"watch_group":57000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":57,"duration":{"second":326,"nanosecond":919000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":23,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":23000}}],"watch_group":23000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":23,"duration":{"second":326,"nanosecond":423000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":14000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":14000,"duration":{"second":329,"nanosecond":745000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":98,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":98000}}],"watch_group":98000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":98,"duration":{"second":326,"nanosecond":422000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":56000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":56000,"duration":{"second":329,"nanosecond":745000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":85000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":85000,"duration":{"second":329,"nanosecond":746000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":54,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":54000}}],"watch_group":54000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":54,"duration":{"second":326,"nanosecond":422000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":24,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":24000}}],"watch_group":24000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":24,"duration":{"second":326,"nanosecond":421000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":36000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":36000,"duration":{"second":329,"nanosecond":746000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":87000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":87000,"duration":{"second":329,"nanosecond":746000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":59000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":59000,"duration":{"second":329,"nanosecond":746000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":25000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":25000,"duration":{"second":329,"nanosecond":746000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":43000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":43000,"duration":{"second":329,"nanosecond":745000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":55,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":55000}}],"watch_group":55000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":55,"duration":{"second":326,"nanosecond":421000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":25,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":25000}}],"watch_group":25000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":25,"duration":{"second":329,"nanosecond":428000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":100,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":100000}}],"watch_group":100000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":100,"duration":{"second":326,"nanosecond":421000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":58000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":58000,"duration":{"second":329,"nanosecond":427000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":86000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":86000,"duration":{"second":329,"nanosecond":427000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":60,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":60000}}],"watch_group":60000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":60,"duration":{"second":329,"nanosecond":427000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":26,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":26000}}],"watch_group":26000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":26,"duration":{"second":326,"nanosecond":422000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":41000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":41000,"duration":{"second":329,"nanosecond":426000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":95,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":95000}}],"watch_group":95000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":95,"duration":{"second":326,"nanosecond":422000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":82000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":82000,"duration":{"second":329,"nanosecond":426000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":61,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":61000}}],"watch_group":61000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":61,"duration":{"second":326,"nanosecond":422000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":27,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":27000}}],"watch_group":27000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":27,"duration":{"second":326,"nanosecond":416000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":94,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":94000}}],"watch_group":94000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":94,"duration":{"second":326,"nanosecond":417000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":98000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":98000,"duration":{"second":329,"nanosecond":426000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":27000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":27000,"duration":{"second":329,"nanosecond":425000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":57000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":57000,"duration":{"second":329,"nanosecond":425000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":16000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":16000,"duration":{"second":329,"nanosecond":423000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":83000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":83000,"duration":{"second":329,"nanosecond":424000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":58,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":58000}}],"watch_group":58000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":58,"duration":{"second":328,"nanosecond":924000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":28,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":28000}}],"watch_group":28000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":28,"duration":{"second":326,"nanosecond":417000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":97,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":97000}}],"watch_group":97000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":97,"duration":{"second":326,"nanosecond":416000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":100000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":100000,"duration":{"second":328,"nanosecond":924000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":59,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":59000}}],"watch_group":59000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":59,"duration":{"second":328,"nanosecond":924000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":38000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":38000,"duration":{"second":328,"nanosecond":924000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":29,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":29000}}],"watch_group":29000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":29,"duration":{"second":326,"nanosecond":417000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":96,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":96000}}],"watch_group":96000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":96,"duration":{"second":326,"nanosecond":416000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":84000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":84000,"duration":{"second":328,"nanosecond":925000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":64,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":64000}}],"watch_group":64000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":64,"duration":{"second":326,"nanosecond":417000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":30,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":30000}}],"watch_group":30000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":30,"duration":{"second":326,"nanosecond":417000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":4,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":4000}}],"watch_group":4000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":4,"duration":{"second":326,"nanosecond":417000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":91,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":91000}}],"watch_group":91000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":91,"duration":{"second":328,"nanosecond":924000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":7000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":7000,"duration":{"second":328,"nanosecond":924000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":29000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":29000,"duration":{"second":328,"nanosecond":925000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":65,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":65000}}],"watch_group":65000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":65,"duration":{"second":326,"nanosecond":417000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":31,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":31000}}],"watch_group":31000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":31,"duration":{"second":326,"nanosecond":416000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":5,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":5000}}],"watch_group":5000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":5,"duration":{"second":326,"nanosecond":416000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":90,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":90000}}],"watch_group":90000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":90,"duration":{"second":326,"nanosecond":416000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":18000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":18000,"duration":{"second":328,"nanosecond":923000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":62,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":62000}}],"watch_group":62000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":62,"duration":{"second":326,"nanosecond":417000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":65000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":65000,"duration":{"second":328,"nanosecond":924000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":32,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":32000}}],"watch_group":32000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":32,"duration":{"second":326,"nanosecond":417000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":2,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":2000}}],"watch_group":2000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":2,"duration":{"second":326,"nanosecond":417000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":93,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":93000}}],"watch_group":93000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":93,"duration":{"second":326,"nanosecond":417000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":64000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":64000,"duration":{"second":328,"nanosecond":923000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":63,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":63000}}],"watch_group":63000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":63,"duration":{"second":326,"nanosecond":417000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":33,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":33000}}],"watch_group":33000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":33,"duration":{"second":326,"nanosecond":416000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":3,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":3000}}],"watch_group":3000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":3,"duration":{"second":326,"nanosecond":417000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":80000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":80000,"duration":{"second":328,"nanosecond":921000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":9000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":9000,"duration":{"second":328,"nanosecond":921000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":92,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":92000}}],"watch_group":92000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":92,"duration":{"second":326,"nanosecond":416000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":5000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":5000,"duration":{"second":328,"nanosecond":922000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":20000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":20000,"duration":{"second":328,"nanosecond":922000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":81000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":81000,"duration":{"second":328,"nanosecond":922000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":97000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":97000,"duration":{"second":328,"nanosecond":921000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":31000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":31000,"duration":{"second":328,"nanosecond":922000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":68,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":68000}}],"watch_group":68000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":68,"duration":{"second":326,"nanosecond":417000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":11000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":11000,"duration":{"second":328,"nanosecond":921000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":34,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":34000}}],"watch_group":34000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":34,"duration":{"second":328,"nanosecond":922000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":78000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":78000,"duration":{"second":328,"nanosecond":920000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":87,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":87000}}],"watch_group":87000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":87,"duration":{"second":328,"nanosecond":920000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":93000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":93000,"duration":{"second":328,"nanosecond":921000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":63000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":63000,"duration":{"second":328,"nanosecond":920000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":69,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":69000}}],"watch_group":69000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":69,"duration":{"second":326,"nanosecond":417000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":35,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":35000}}],"watch_group":35000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":35,"duration":{"second":326,"nanosecond":416000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":1,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":1000}}],"watch_group":1000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":1,"duration":{"second":144,"nanosecond":804000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":33000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":33000,"duration":{"second":328,"nanosecond":917000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":79000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":79000,"duration":{"second":328,"nanosecond":917000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":86,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":86000}}],"watch_group":86000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":86,"duration":{"second":328,"nanosecond":916000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":62000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":62000,"duration":{"second":328,"nanosecond":917000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":66,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":66000}}],"watch_group":66000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":66,"duration":{"second":326,"nanosecond":417000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":77000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":77000,"duration":{"second":328,"nanosecond":916000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":36,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":36000}}],"watch_group":36000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":36,"duration":{"second":328,"nanosecond":916000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":89,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":89000}}],"watch_group":89000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":89,"duration":{"second":328,"nanosecond":916000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":22000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":22000,"duration":{"second":328,"nanosecond":917000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":95000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":95000,"duration":{"second":328,"nanosecond":917000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":67,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":67000}}],"watch_group":67000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":67,"duration":{"second":326,"nanosecond":416000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":37,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":37000}}],"watch_group":37000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":37,"duration":{"second":326,"nanosecond":416000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":1000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":1000,"duration":{"second":145,"nanosecond":13000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":88,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":88000}}],"watch_group":88000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":88,"duration":{"second":326,"nanosecond":416000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":61000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":61000,"duration":{"second":328,"nanosecond":916000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":3000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":3000,"duration":{"second":328,"nanosecond":916000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":73,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":73000}}],"watch_group":73000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":73,"duration":{"second":326,"nanosecond":416000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":39,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":39000}}],"watch_group":39000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":39,"duration":{"second":326,"nanosecond":412000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":13,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":13000}}],"watch_group":13000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":13,"duration":{"second":326,"nanosecond":411000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":74000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":74000,"duration":{"second":328,"nanosecond":916000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":15000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":15000,"duration":{"second":328,"nanosecond":915000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":44000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":44000,"duration":{"second":328,"nanosecond":915000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":45000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":45000,"duration":{"second":328,"nanosecond":916000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":68000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":68000,"duration":{"second":328,"nanosecond":916000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":72,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":72000}}],"watch_group":72000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":72,"duration":{"second":326,"nanosecond":411000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":38,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":38000}}],"watch_group":38000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":38,"duration":{"second":328,"nanosecond":426000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":75000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":75000,"duration":{"second":328,"nanosecond":426000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":12,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":12000}}],"watch_group":12000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":12,"duration":{"second":326,"nanosecond":411000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":35000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":35000,"duration":{"second":328,"nanosecond":425000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":24000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":24000,"duration":{"second":328,"nanosecond":425000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":90000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":90000,"duration":{"second":328,"nanosecond":426000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":71,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":71000}}],"watch_group":71000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":71,"duration":{"second":326,"nanosecond":411000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":41,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":41000}}],"watch_group":41000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":41,"duration":{"second":328,"nanosecond":425000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":42000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":42000,"duration":{"second":328,"nanosecond":424000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":11,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":11000}}],"watch_group":11000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":11,"duration":{"second":328,"nanosecond":425000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":92000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":92000,"duration":{"second":328,"nanosecond":423000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":46000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":46000,"duration":{"second":328,"nanosecond":423000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":67000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":67000,"duration":{"second":328,"nanosecond":424000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":70,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":70000}}],"watch_group":70000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":70,"duration":{"second":326,"nanosecond":411000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":76000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":76000,"duration":{"second":328,"nanosecond":422000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":40,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":40000}}],"watch_group":40000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":40,"duration":{"second":326,"nanosecond":412000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":13000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":13000,"duration":{"second":328,"nanosecond":423000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":10,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":10000}}],"watch_group":10000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":10,"duration":{"second":326,"nanosecond":411000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":88000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":88000,"duration":{"second":328,"nanosecond":422000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":47000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":47000,"duration":{"second":328,"nanosecond":423000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":66000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":66000,"duration":{"second":328,"nanosecond":423000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":77,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":77000}}],"watch_group":77000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":77,"duration":{"second":328,"nanosecond":423000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":43,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":43000}}],"watch_group":43000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":43,"duration":{"second":328,"nanosecond":421000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":9,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":9000}}],"watch_group":9000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":9,"duration":{"second":328,"nanosecond":422000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":99000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":99000,"duration":{"second":328,"nanosecond":421000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":26000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":26000,"duration":{"second":328,"nanosecond":422000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":70000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":70000,"duration":{"second":328,"nanosecond":420000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":76,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":76000}}],"watch_group":76000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":76,"duration":{"second":327,"nanosecond":925000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":42,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":42000}}],"watch_group":42000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":42,"duration":{"second":327,"nanosecond":923000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":8,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":8000}}],"watch_group":8000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":8,"duration":{"second":326,"nanosecond":411000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":37000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":37000,"duration":{"second":327,"nanosecond":924000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":49000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":49000,"duration":{"second":327,"nanosecond":924000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":71000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":71000,"duration":{"second":327,"nanosecond":924000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":48000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":48000,"duration":{"second":327,"nanosecond":923000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":75,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":75000}}],"watch_group":75000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":75,"duration":{"second":327,"nanosecond":919000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":45,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":45000}}],"watch_group":45000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":45,"duration":{"second":327,"nanosecond":918000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":7,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":7000}}],"watch_group":7000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":7,"duration":{"second":327,"nanosecond":918000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":39000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":39000,"duration":{"second":327,"nanosecond":919000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":73000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":73000,"duration":{"second":327,"nanosecond":919000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":69000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":69000,"duration":{"second":327,"nanosecond":919000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":17000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":17000,"duration":{"second":327,"nanosecond":918000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":28000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":28000,"duration":{"second":327,"nanosecond":918000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":74,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":74000}}],"watch_group":74000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":74,"duration":{"second":327,"nanosecond":919000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":44,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":44000}}],"watch_group":44000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":44,"duration":{"second":327,"nanosecond":919000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":6,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":6000}}],"watch_group":6000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":6,"duration":{"second":326,"nanosecond":412000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":40000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":40000,"duration":{"second":327,"nanosecond":918000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":81,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":81000}}],"watch_group":81000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":81,"duration":{"second":327,"nanosecond":918000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":47,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":47000}}],"watch_group":47000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":47,"duration":{"second":327,"nanosecond":918000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":21,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":21000}}],"watch_group":21000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":21,"duration":{"second":326,"nanosecond":412000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":8000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":8000,"duration":{"second":327,"nanosecond":919000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":19000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":19000,"duration":{"second":327,"nanosecond":918000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":96000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":96000,"duration":{"second":327,"nanosecond":918000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":80,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":80000}}],"watch_group":80000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":80,"duration":{"second":327,"nanosecond":917000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":46,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":46000}}],"watch_group":46000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":46,"duration":{"second":327,"nanosecond":917000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":20,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":20000}}],"watch_group":20000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":20,"duration":{"second":327,"nanosecond":918000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":52000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":52000,"duration":{"second":327,"nanosecond":918000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":6000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":6000,"duration":{"second":327,"nanosecond":918000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":79,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":79000}}],"watch_group":79000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":79,"duration":{"second":327,"nanosecond":917000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":49,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":49000}}],"watch_group":49000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":49,"duration":{"second":327,"nanosecond":425000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":19,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":19000}}],"watch_group":19000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":19,"duration":{"second":327,"nanosecond":424000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":50000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":50000,"duration":{"second":327,"nanosecond":424000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":72000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":72000,"duration":{"second":327,"nanosecond":424000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":30000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":30000,"duration":{"second":327,"nanosecond":424000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":78,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":78000}}],"watch_group":78000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":78,"duration":{"second":327,"nanosecond":424000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":48,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":48000}}],"watch_group":48000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":48,"duration":{"second":327,"nanosecond":422000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":18,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":18000}}],"watch_group":18000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":18,"duration":{"second":327,"nanosecond":422000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":51000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":51000,"duration":{"second":327,"nanosecond":422000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":85,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":85000}}],"watch_group":85000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":85,"duration":{"second":327,"nanosecond":423000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":55000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":55000,"duration":{"second":327,"nanosecond":423000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":51,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":51000}}],"watch_group":51000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":51,"duration":{"second":326,"nanosecond":924000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":17,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":17000}}],"watch_group":17000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":17,"duration":{"second":326,"nanosecond":924000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":21000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":21000,"duration":{"second":326,"nanosecond":923000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":4000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":4000,"duration":{"second":326,"nanosecond":924000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":84,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":84000}}],"watch_group":84000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":84,"duration":{"second":326,"nanosecond":924000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":50,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":50000}}],"watch_group":50000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":50,"duration":{"second":326,"nanosecond":924000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":16,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":16000}}],"watch_group":16000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":16,"duration":{"second":326,"nanosecond":923000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":10000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":10000,"duration":{"second":326,"nanosecond":923000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":54000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":54000,"duration":{"second":326,"nanosecond":922000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":83,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":83000}}],"watch_group":83000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":83,"duration":{"second":326,"nanosecond":922000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":32000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":32000,"duration":{"second":326,"nanosecond":923000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":53,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":53000}}],"watch_group":53000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":53,"duration":{"second":326,"nanosecond":412000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":15,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":15000}}],"watch_group":15000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":15,"duration":{"second":326,"nanosecond":922000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":2000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":2000,"duration":{"second":326,"nanosecond":921000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":82,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":82000}}],"watch_group":82000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":82,"duration":{"second":326,"nanosecond":922000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":52,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":52000}}],"watch_group":52000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":52,"duration":{"second":326,"nanosecond":921000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":14,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":14000}}],"watch_group":14000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":14,"duration":{"second":326,"nanosecond":921000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":53000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":53000,"duration":{"second":326,"nanosecond":921000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":12000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":12000,"duration":{"second":326,"nanosecond":921000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":23000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":23000,"duration":{"second":326,"nanosecond":919000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":94000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":94000,"duration":{"second":326,"nanosecond":919000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}}],"flow-node-inventory:snapshot-gathering-status-end":{"succeeded":true,"end":"2026-04-08T01:03:55.817Z"}},{"id":"openflow:1","flow-node-inventory:port-number":54934,"flow-node-inventory:table":[{"id":62,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":28,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":2,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":224,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":181,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":147,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":106,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":61,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":27,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":1,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":223,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":182,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":148,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":105,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":60,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":30,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":0,"flow":[{"id":"71","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.71/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":71}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":886000000}},"flags":""},{"id":"11","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.11/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":11}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":885000000}},"flags":""},{"id":"70","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.70/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":70}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":886000000}},"flags":""},{"id":"10","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.10/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":10}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":885000000}},"flags":""},{"id":"60","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.60/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":60}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":886000000}},"flags":""},{"id":"13","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.13/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":13}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":885000000}},"flags":""},{"id":"12","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.12/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":12}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":885000000}},"flags":""},{"id":"80","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.80/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":80}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":886000000}},"flags":""},{"id":"93","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.93/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":93}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":885000000}},"flags":""},{"id":"92","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.92/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":92}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":885000000}},"flags":""},{"id":"82","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.82/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":82}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":886000000}},"flags":""},{"id":"91","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.91/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":91}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":885000000}},"flags":""},{"id":"81","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.81/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":81}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":886000000}},"flags":""},{"id":"90","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.90/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":90}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":885000000}},"flags":""},{"id":"9","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.9/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":9}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":885000000}},"flags":""},{"id":"84","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.84/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":84}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":885000000}},"flags":""},{"id":"97","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.97/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":97}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":885000000}},"flags":""},{"id":"66","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.66/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":66}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":886000000}},"flags":""},{"id":"79","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.79/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":79}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":886000000}},"flags":""},{"id":"54","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.54/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":54}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":884000000}},"flags":""},{"id":"45","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.45/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":45}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":884000000}},"flags":""},{"id":"83","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.83/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":83}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":885000000}},"flags":""},{"id":"96","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.96/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":96}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":885000000}},"flags":""},{"id":"65","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.65/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":65}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":886000000}},"flags":""},{"id":"78","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.78/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":78}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":886000000}},"flags":""},{"id":"20","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.20/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":20}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":885000000}},"flags":""},{"id":"55","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.55/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":55}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":884000000}},"flags":""},{"id":"46","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.46/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":46}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":884000000}},"flags":""},{"id":"7","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.7/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":7}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":885000000}},"flags":""},{"id":"86","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.86/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":86}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":886000000}},"flags":""},{"id":"95","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.95/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":95}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":885000000}},"flags":""},{"id":"68","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.68/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":68}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":886000000}},"flags":""},{"id":"77","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.77/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":77}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":886000000}},"flags":""},{"id":"30","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.30/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":30}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":885000000}},"flags":""},{"id":"56","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.56/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":56}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":884000000}},"flags":""},{"id":"43","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.43/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":43}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":884000000}},"flags":""},{"id":"8","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.8/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":8}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":885000000}},"flags":""},{"id":"85","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.85/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":85}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":886000000}},"flags":""},{"id":"94","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.94/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":94}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":885000000}},"flags":""},{"id":"67","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.67/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":67}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":886000000}},"flags":""},{"id":"76","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.76/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":76}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":886000000}},"flags":""},{"id":"31","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.31/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":31}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":885000000}},"flags":""},{"id":"57","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.57/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":57}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":884000000}},"flags":""},{"id":"44","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.44/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":44}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":884000000}},"flags":""},{"id":"5","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.5/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":5}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":885000000}},"flags":""},{"id":"88","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.88/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":88}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":886000000}},"flags":""},{"id":"62","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.62/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":62}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":886000000}},"flags":""},{"id":"75","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.75/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":75}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":886000000}},"flags":""},{"id":"32","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.32/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":32}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":885000000}},"flags":""},{"id":"23","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.23/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":23}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":885000000}},"flags":""},{"id":"50","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.50/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":50}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":884000000}},"flags":""},{"id":"41","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.41/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":41}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":884000000}},"flags":""},{"id":"#UF$TABLE*0-1","table_id":0,"priority":0,"cookie_mask":"0","idle-timeout":0,"cookie":"10","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"output-action":{"max-length":65535,"output-node-connector":"CONTROLLER"}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"77","byte-count":"6365","duration":{"second":325,"nanosecond":775000000}},"flags":"SEND_FLOW_REM"},{"id":"6","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.6/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":6}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":885000000}},"flags":""},{"id":"100","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.100/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":100}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":886000000}},"flags":""},{"id":"87","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.87/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":87}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":886000000}},"flags":""},{"id":"61","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.61/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":61}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":886000000}},"flags":""},{"id":"74","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.74/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":74}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":886000000}},"flags":""},{"id":"33","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.33/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":33}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":885000000}},"flags":""},{"id":"24","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.24/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":24}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":885000000}},"flags":""},{"id":"51","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.51/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":51}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":884000000}},"flags":""},{"id":"42","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.42/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":42}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":884000000}},"flags":""},{"id":"3","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.3/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":3}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":885000000}},"flags":""},{"id":"99","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.99/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":99}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":885000000}},"flags":""},{"id":"64","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.64/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":64}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":886000000}},"flags":""},{"id":"73","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.73/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":73}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":886000000}},"flags":""},{"id":"34","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.34/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":34}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":885000000}},"flags":""},{"id":"21","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.21/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":21}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":885000000}},"flags":""},{"id":"52","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.52/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":52}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":884000000}},"flags":""},{"id":"4","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.4/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":4}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":885000000}},"flags":""},{"id":"89","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.89/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":89}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":886000000}},"flags":""},{"id":"98","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.98/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":98}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":885000000}},"flags":""},{"id":"63","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.63/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":63}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":886000000}},"flags":""},{"id":"72","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.72/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":72}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":886000000}},"flags":""},{"id":"35","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.35/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":35}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":885000000}},"flags":""},{"id":"22","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.22/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":22}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":885000000}},"flags":""},{"id":"53","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.53/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":53}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":884000000}},"flags":""},{"id":"40","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.40/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":40}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":884000000}},"flags":""},{"id":"37","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.37/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":37}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":885000000}},"flags":""},{"id":"28","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.28/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":28}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":885000000}},"flags":""},{"id":"36","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.36/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":36}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":885000000}},"flags":""},{"id":"27","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.27/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":27}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":885000000}},"flags":""},{"id":"39","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.39/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":39}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":885000000}},"flags":""},{"id":"26","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.26/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":26}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":885000000}},"flags":""},{"id":"38","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.38/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":38}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":885000000}},"flags":""},{"id":"25","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.25/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":25}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":885000000}},"flags":""},{"id":"69","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.69/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":69}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":886000000}},"flags":""},{"id":"59","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.59/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":59}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":884000000}},"flags":""},{"id":"58","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.58/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":58}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":884000000}},"flags":""},{"id":"49","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.49/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":49}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":885000000}},"flags":""},{"id":"48","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.48/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":48}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":884000000}},"flags":""},{"id":"29","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.29/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":29}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":885000000}},"flags":""},{"id":"47","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.47/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":47}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":884000000}},"flags":""},{"id":"18","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.18/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":18}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":885000000}},"flags":""},{"id":"19","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.19/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":19}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":885000000}},"flags":""},{"id":"14","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.14/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":14}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":885000000}},"flags":""},{"id":"15","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.15/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":15}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":885000000}},"flags":""},{"id":"1","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.1/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":1}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":145,"nanosecond":862000000}},"flags":""},{"id":"16","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.16/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":16}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":885000000}},"flags":""},{"id":"2","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.2/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":2}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":885000000}},"flags":""},{"id":"17","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.17/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":17}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":885000000}},"flags":""}],"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"94","active-flows":101,"packets-matched":"87"}},{"id":226,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":179,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":149,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":104,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":59,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":29,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":225,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":180,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":150,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":103,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":66,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":32,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":220,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":185,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":151,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":102,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":65,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":31,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":253,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":219,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":186,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":152,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":101,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":64,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":34,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":252,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":222,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":183,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":153,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":100,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":63,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":33,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":251,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":221,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":184,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":154,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":99,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":54,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":20,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":250,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":216,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":189,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":155,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":129,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":114,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":53,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":19,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":249,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":215,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":190,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":156,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":130,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":113,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":52,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":22,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":248,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":218,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":187,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":157,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":112,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":51,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":21,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":247,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":217,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":188,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":158,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":128,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":111,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":58,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":24,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":246,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":212,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":193,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":159,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":110,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":57,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":23,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":245,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":211,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":194,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":160,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":109,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":56,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":26,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":244,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":214,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":191,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":161,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":108,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":55,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":25,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":243,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":213,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":192,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":162,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":107,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":77,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":43,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":17,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":239,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":198,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":164,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":138,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":119,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":89,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":78,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":44,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":18,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":240,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":197,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":163,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":137,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":120,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":90,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":75,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":45,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":15,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":241,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":196,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":166,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":136,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":121,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":87,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":76,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":46,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":16,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":242,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":195,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":165,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":135,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":122,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":88,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":81,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":47,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":13,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":235,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":202,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":168,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":134,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":115,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":85,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":82,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":48,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":14,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":236,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":201,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":167,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":133,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":116,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":86,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":79,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":49,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":11,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":237,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":200,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":170,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":132,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":117,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":83,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":80,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":50,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":12,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":238,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":199,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":169,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":131,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":118,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":84,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":69,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":35,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":9,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":231,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":206,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":172,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":146,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":127,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":97,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":70,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":36,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":10,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":232,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":205,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":171,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":145,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":98,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":67,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":37,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":7,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":233,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":204,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":174,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":144,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":95,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":68,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":38,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":8,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":234,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":203,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":173,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":143,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":96,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":73,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":39,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":5,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":227,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":210,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":176,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":142,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":123,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":93,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":74,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":40,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":6,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":228,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":209,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":175,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":141,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":124,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":94,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":71,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":41,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":3,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":229,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":208,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":178,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":140,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":125,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":91,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":72,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":42,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":4,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":230,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":207,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":177,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":139,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":126,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":92,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}}],"opendaylight-group-statistics:group-features":{"max-groups":[4294967040],"group-types-supported":["opendaylight-group-types:group-all","opendaylight-group-types:group-ff","opendaylight-group-types:group-select","opendaylight-group-types:group-indirect"],"group-capabilities-supported":["opendaylight-group-types:chaining","opendaylight-group-types:select-weight","opendaylight-group-types:select-liveness"],"actions":[67076097]},"flow-node-inventory:manufacturer":"Nicira, Inc.","flow-node-inventory:description":"s1","flow-node-inventory:hardware":"Open vSwitch","flow-node-inventory:switch-features":{"max_tables":254,"capabilities":["flow-node-inventory:flow-feature-capability-table-stats","flow-node-inventory:flow-feature-capability-group-stats","flow-node-inventory:flow-feature-capability-queue-stats","flow-node-inventory:flow-feature-capability-flow-stats","flow-node-inventory:flow-feature-capability-port-stats"],"max_buffers":0},"flow-node-inventory:snapshot-gathering-status-start":{"begin":"2026-04-08T01:03:55.790Z"},"flow-node-inventory:software":"2.17.11","node-connector":[{"id":"openflow:1:1","flow-node-inventory:port-number":1,"flow-node-inventory:hardware-address":"92:f4:e8:ea:c6:ad","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s1-eth1","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"86","received":"12"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":331,"nanosecond":107000000},"bytes":{"transmitted":"7250","received":"936"},"receive-crc-error":"0"}},{"id":"openflow:1:LOCAL","flow-node-inventory:port-number":4294967294,"flow-node-inventory:hardware-address":"e6:45:d0:5b:c7:49","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s1","flow-node-inventory:current-feature":"","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":0,"flow-node-inventory:state":{"live":false,"blocked":false,"link-down":true},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"PORT-DOWN","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"0","received":"0"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":331,"nanosecond":103000000},"bytes":{"transmitted":"0","received":"0"},"receive-crc-error":"0"}},{"id":"openflow:1:2","flow-node-inventory:port-number":2,"flow-node-inventory:hardware-address":"42:46:a8:4b:8b:86","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s1-eth2","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"80","received":"84"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":331,"nanosecond":107000000},"bytes":{"transmitted":"6722","received":"7074"},"receive-crc-error":"0"}}],"flow-node-inventory:ip-address":"10.30.170.192","flow-node-inventory:serial-number":"None","flow-node-inventory:group":[{"group-id":56,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":56000}}],"watch_group":56000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":56,"duration":{"second":327,"nanosecond":60000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":22,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":22000}}],"watch_group":22000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":22,"duration":{"second":327,"nanosecond":60000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":99,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":99000}}],"watch_group":99000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":99,"duration":{"second":327,"nanosecond":60000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":34000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":34000,"duration":{"second":329,"nanosecond":753000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":89000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":89000,"duration":{"second":329,"nanosecond":753000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":60000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":60000,"duration":{"second":329,"nanosecond":753000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":91000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":91000,"duration":{"second":329,"nanosecond":753000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":57,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":57000}}],"watch_group":57000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":57,"duration":{"second":327,"nanosecond":60000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":23,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":23000}}],"watch_group":23000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":23,"duration":{"second":326,"nanosecond":560000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":14000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":14000,"duration":{"second":329,"nanosecond":753000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":98,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":98000}}],"watch_group":98000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":98,"duration":{"second":326,"nanosecond":560000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":56000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":56000,"duration":{"second":329,"nanosecond":753000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":85000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":85000,"duration":{"second":329,"nanosecond":753000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":54,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":54000}}],"watch_group":54000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":54,"duration":{"second":326,"nanosecond":560000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":24,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":24000}}],"watch_group":24000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":24,"duration":{"second":326,"nanosecond":560000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":36000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":36000,"duration":{"second":329,"nanosecond":753000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":87000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":87000,"duration":{"second":329,"nanosecond":753000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":59000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":59000,"duration":{"second":329,"nanosecond":753000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":25000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":25000,"duration":{"second":329,"nanosecond":753000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":43000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":43000,"duration":{"second":329,"nanosecond":753000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":55,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":55000}}],"watch_group":55000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":55,"duration":{"second":326,"nanosecond":560000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":25,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":25000}}],"watch_group":25000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":25,"duration":{"second":329,"nanosecond":567000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":100,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":100000}}],"watch_group":100000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":100,"duration":{"second":326,"nanosecond":560000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":58000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":58000,"duration":{"second":329,"nanosecond":564000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":86000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":86000,"duration":{"second":329,"nanosecond":564000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":60,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":60000}}],"watch_group":60000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":60,"duration":{"second":329,"nanosecond":564000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":26,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":26000}}],"watch_group":26000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":26,"duration":{"second":326,"nanosecond":560000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":41000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":41000,"duration":{"second":329,"nanosecond":564000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":95,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":95000}}],"watch_group":95000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":95,"duration":{"second":326,"nanosecond":560000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":82000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":82000,"duration":{"second":329,"nanosecond":564000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":61,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":61000}}],"watch_group":61000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":61,"duration":{"second":326,"nanosecond":560000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":27,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":27000}}],"watch_group":27000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":27,"duration":{"second":326,"nanosecond":560000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":94,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":94000}}],"watch_group":94000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":94,"duration":{"second":326,"nanosecond":560000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":98000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":98000,"duration":{"second":329,"nanosecond":564000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":27000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":27000,"duration":{"second":329,"nanosecond":564000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":57000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":57000,"duration":{"second":329,"nanosecond":564000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":16000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":16000,"duration":{"second":329,"nanosecond":564000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":83000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":83000,"duration":{"second":329,"nanosecond":564000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":58,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":58000}}],"watch_group":58000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":58,"duration":{"second":329,"nanosecond":61000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":28,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":28000}}],"watch_group":28000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":28,"duration":{"second":326,"nanosecond":560000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":97,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":97000}}],"watch_group":97000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":97,"duration":{"second":326,"nanosecond":560000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":100000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":100000,"duration":{"second":329,"nanosecond":61000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":59,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":59000}}],"watch_group":59000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":59,"duration":{"second":329,"nanosecond":61000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":38000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":38000,"duration":{"second":329,"nanosecond":61000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":29,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":29000}}],"watch_group":29000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":29,"duration":{"second":326,"nanosecond":560000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":96,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":96000}}],"watch_group":96000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":96,"duration":{"second":326,"nanosecond":560000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":84000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":84000,"duration":{"second":329,"nanosecond":61000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":64,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":64000}}],"watch_group":64000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":64,"duration":{"second":326,"nanosecond":560000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":30,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":30000}}],"watch_group":30000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":30,"duration":{"second":326,"nanosecond":560000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":4,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":4000}}],"watch_group":4000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":4,"duration":{"second":326,"nanosecond":560000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":91,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":91000}}],"watch_group":91000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":91,"duration":{"second":329,"nanosecond":61000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":7000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":7000,"duration":{"second":329,"nanosecond":61000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":29000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":29000,"duration":{"second":329,"nanosecond":61000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":65,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":65000}}],"watch_group":65000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":65,"duration":{"second":326,"nanosecond":560000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":31,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":31000}}],"watch_group":31000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":31,"duration":{"second":326,"nanosecond":560000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":5,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":5000}}],"watch_group":5000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":5,"duration":{"second":326,"nanosecond":560000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":90,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":90000}}],"watch_group":90000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":90,"duration":{"second":326,"nanosecond":560000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":18000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":18000,"duration":{"second":329,"nanosecond":61000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":62,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":62000}}],"watch_group":62000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":62,"duration":{"second":326,"nanosecond":560000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":65000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":65000,"duration":{"second":329,"nanosecond":61000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":32,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":32000}}],"watch_group":32000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":32,"duration":{"second":326,"nanosecond":560000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":2,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":2000}}],"watch_group":2000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":2,"duration":{"second":326,"nanosecond":560000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":93,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":93000}}],"watch_group":93000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":93,"duration":{"second":326,"nanosecond":560000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":64000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":64000,"duration":{"second":329,"nanosecond":61000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":63,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":63000}}],"watch_group":63000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":63,"duration":{"second":326,"nanosecond":560000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":33,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":33000}}],"watch_group":33000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":33,"duration":{"second":326,"nanosecond":560000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":3,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":3000}}],"watch_group":3000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":3,"duration":{"second":326,"nanosecond":555000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":80000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":80000,"duration":{"second":329,"nanosecond":61000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":9000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":9000,"duration":{"second":329,"nanosecond":61000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":92,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":92000}}],"watch_group":92000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":92,"duration":{"second":326,"nanosecond":555000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":5000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":5000,"duration":{"second":329,"nanosecond":61000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":20000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":20000,"duration":{"second":329,"nanosecond":61000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":81000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":81000,"duration":{"second":329,"nanosecond":61000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":97000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":97000,"duration":{"second":329,"nanosecond":61000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":31000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":31000,"duration":{"second":329,"nanosecond":61000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":68,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":68000}}],"watch_group":68000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":68,"duration":{"second":326,"nanosecond":555000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":11000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":11000,"duration":{"second":329,"nanosecond":61000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":34,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":34000}}],"watch_group":34000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":34,"duration":{"second":329,"nanosecond":61000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":78000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":78000,"duration":{"second":329,"nanosecond":61000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":87,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":87000}}],"watch_group":87000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":87,"duration":{"second":329,"nanosecond":61000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":93000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":93000,"duration":{"second":329,"nanosecond":61000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":63000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":63000,"duration":{"second":329,"nanosecond":61000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":69,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":69000}}],"watch_group":69000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":69,"duration":{"second":326,"nanosecond":555000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":35,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":35000}}],"watch_group":35000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":35,"duration":{"second":326,"nanosecond":555000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":1,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":1000}}],"watch_group":1000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":1,"duration":{"second":146,"nanosecond":66000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":33000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":33000,"duration":{"second":329,"nanosecond":61000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":79000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":79000,"duration":{"second":329,"nanosecond":59000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":86,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":86000}}],"watch_group":86000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":86,"duration":{"second":329,"nanosecond":59000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":62000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":62000,"duration":{"second":329,"nanosecond":59000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":66,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":66000}}],"watch_group":66000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":66,"duration":{"second":326,"nanosecond":555000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":77000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":77000,"duration":{"second":329,"nanosecond":59000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":36,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":36000}}],"watch_group":36000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":36,"duration":{"second":329,"nanosecond":59000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":89,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":89000}}],"watch_group":89000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":89,"duration":{"second":329,"nanosecond":58000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":22000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":22000,"duration":{"second":329,"nanosecond":58000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":95000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":95000,"duration":{"second":329,"nanosecond":58000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":67,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":67000}}],"watch_group":67000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":67,"duration":{"second":326,"nanosecond":555000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":37,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":37000}}],"watch_group":37000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":37,"duration":{"second":326,"nanosecond":555000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":1000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":1000,"duration":{"second":146,"nanosecond":290000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":88,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":88000}}],"watch_group":88000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":88,"duration":{"second":326,"nanosecond":555000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":61000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":61000,"duration":{"second":329,"nanosecond":58000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":3000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":3000,"duration":{"second":329,"nanosecond":57000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":73,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":73000}}],"watch_group":73000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":73,"duration":{"second":326,"nanosecond":555000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":39,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":39000}}],"watch_group":39000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":39,"duration":{"second":326,"nanosecond":555000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":13,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":13000}}],"watch_group":13000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":13,"duration":{"second":326,"nanosecond":555000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":74000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":74000,"duration":{"second":329,"nanosecond":57000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":15000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":15000,"duration":{"second":329,"nanosecond":57000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":44000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":44000,"duration":{"second":329,"nanosecond":57000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":45000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":45000,"duration":{"second":329,"nanosecond":57000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":68000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":68000,"duration":{"second":329,"nanosecond":57000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":72,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":72000}}],"watch_group":72000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":72,"duration":{"second":326,"nanosecond":555000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":38,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":38000}}],"watch_group":38000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":38,"duration":{"second":328,"nanosecond":569000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":75000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":75000,"duration":{"second":328,"nanosecond":569000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":12,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":12000}}],"watch_group":12000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":12,"duration":{"second":326,"nanosecond":555000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":35000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":35000,"duration":{"second":328,"nanosecond":569000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":24000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":24000,"duration":{"second":328,"nanosecond":568000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":90000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":90000,"duration":{"second":328,"nanosecond":568000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":71,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":71000}}],"watch_group":71000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":71,"duration":{"second":326,"nanosecond":555000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":41,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":41000}}],"watch_group":41000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":41,"duration":{"second":328,"nanosecond":568000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":42000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":42000,"duration":{"second":328,"nanosecond":568000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":11,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":11000}}],"watch_group":11000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":11,"duration":{"second":328,"nanosecond":567000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":92000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":92000,"duration":{"second":328,"nanosecond":567000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":46000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":46000,"duration":{"second":328,"nanosecond":567000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":67000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":67000,"duration":{"second":328,"nanosecond":567000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":70,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":70000}}],"watch_group":70000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":70,"duration":{"second":326,"nanosecond":555000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":76000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":76000,"duration":{"second":328,"nanosecond":566000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":40,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":40000}}],"watch_group":40000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":40,"duration":{"second":326,"nanosecond":555000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":13000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":13000,"duration":{"second":328,"nanosecond":563000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":10,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":10000}}],"watch_group":10000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":10,"duration":{"second":326,"nanosecond":555000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":88000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":88000,"duration":{"second":328,"nanosecond":563000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":47000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":47000,"duration":{"second":328,"nanosecond":563000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":66000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":66000,"duration":{"second":328,"nanosecond":562000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":77,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":77000}}],"watch_group":77000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":77,"duration":{"second":328,"nanosecond":562000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":43,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":43000}}],"watch_group":43000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":43,"duration":{"second":328,"nanosecond":562000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":9,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":9000}}],"watch_group":9000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":9,"duration":{"second":328,"nanosecond":562000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":99000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":99000,"duration":{"second":328,"nanosecond":562000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":26000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":26000,"duration":{"second":328,"nanosecond":562000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":70000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":70000,"duration":{"second":328,"nanosecond":562000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":76,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":76000}}],"watch_group":76000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":76,"duration":{"second":328,"nanosecond":68000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":42,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":42000}}],"watch_group":42000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":42,"duration":{"second":328,"nanosecond":66000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":8,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":8000}}],"watch_group":8000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":8,"duration":{"second":326,"nanosecond":555000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":37000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":37000,"duration":{"second":328,"nanosecond":66000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":49000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":49000,"duration":{"second":328,"nanosecond":66000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":71000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":71000,"duration":{"second":328,"nanosecond":66000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":48000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":48000,"duration":{"second":328,"nanosecond":66000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":75,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":75000}}],"watch_group":75000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":75,"duration":{"second":328,"nanosecond":66000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":45,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":45000}}],"watch_group":45000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":45,"duration":{"second":328,"nanosecond":63000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":7,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":7000}}],"watch_group":7000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":7,"duration":{"second":328,"nanosecond":63000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":39000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":39000,"duration":{"second":328,"nanosecond":63000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":73000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":73000,"duration":{"second":328,"nanosecond":62000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":69000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":69000,"duration":{"second":328,"nanosecond":62000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":17000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":17000,"duration":{"second":328,"nanosecond":62000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":28000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":28000,"duration":{"second":328,"nanosecond":62000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":74,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":74000}}],"watch_group":74000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":74,"duration":{"second":328,"nanosecond":62000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":44,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":44000}}],"watch_group":44000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":44,"duration":{"second":328,"nanosecond":62000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":6,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":6000}}],"watch_group":6000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":6,"duration":{"second":326,"nanosecond":555000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":40000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":40000,"duration":{"second":328,"nanosecond":62000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":81,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":81000}}],"watch_group":81000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":81,"duration":{"second":328,"nanosecond":62000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":47,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":47000}}],"watch_group":47000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":47,"duration":{"second":328,"nanosecond":62000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":21,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":21000}}],"watch_group":21000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":21,"duration":{"second":326,"nanosecond":555000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":8000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":8000,"duration":{"second":328,"nanosecond":62000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":19000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":19000,"duration":{"second":328,"nanosecond":62000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":96000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":96000,"duration":{"second":328,"nanosecond":62000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":80,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":80000}}],"watch_group":80000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":80,"duration":{"second":328,"nanosecond":60000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":46,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":46000}}],"watch_group":46000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":46,"duration":{"second":328,"nanosecond":60000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":20,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":20000}}],"watch_group":20000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":20,"duration":{"second":328,"nanosecond":60000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":52000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":52000,"duration":{"second":328,"nanosecond":60000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":6000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":6000,"duration":{"second":328,"nanosecond":60000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":79,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":79000}}],"watch_group":79000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":79,"duration":{"second":328,"nanosecond":60000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":49,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":49000}}],"watch_group":49000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":49,"duration":{"second":327,"nanosecond":567000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":19,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":19000}}],"watch_group":19000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":19,"duration":{"second":327,"nanosecond":567000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":50000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":50000,"duration":{"second":327,"nanosecond":567000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":72000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":72000,"duration":{"second":327,"nanosecond":567000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":30000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":30000,"duration":{"second":327,"nanosecond":566000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":78,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":78000}}],"watch_group":78000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":78,"duration":{"second":327,"nanosecond":566000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":48,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":48000}}],"watch_group":48000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":48,"duration":{"second":327,"nanosecond":565000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":18,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":18000}}],"watch_group":18000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":18,"duration":{"second":327,"nanosecond":565000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":51000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":51000,"duration":{"second":327,"nanosecond":565000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":85,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":85000}}],"watch_group":85000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":85,"duration":{"second":327,"nanosecond":565000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":55000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":55000,"duration":{"second":327,"nanosecond":564000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":51,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":51000}}],"watch_group":51000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":51,"duration":{"second":327,"nanosecond":60000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":17,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":17000}}],"watch_group":17000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":17,"duration":{"second":327,"nanosecond":60000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":21000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":21000,"duration":{"second":327,"nanosecond":60000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":4000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":4000,"duration":{"second":327,"nanosecond":60000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":84,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":84000}}],"watch_group":84000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":84,"duration":{"second":327,"nanosecond":60000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":50,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":50000}}],"watch_group":50000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":50,"duration":{"second":327,"nanosecond":60000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":16,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":16000}}],"watch_group":16000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":16,"duration":{"second":327,"nanosecond":60000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":10000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":10000,"duration":{"second":327,"nanosecond":60000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":54000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":54000,"duration":{"second":327,"nanosecond":60000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":83,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":83000}}],"watch_group":83000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":83,"duration":{"second":327,"nanosecond":60000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":32000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":32000,"duration":{"second":327,"nanosecond":60000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":53,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":53000}}],"watch_group":53000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":53,"duration":{"second":326,"nanosecond":555000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":15,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":15000}}],"watch_group":15000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":15,"duration":{"second":327,"nanosecond":60000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":2000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":2000,"duration":{"second":327,"nanosecond":60000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":82,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":82000}}],"watch_group":82000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":82,"duration":{"second":327,"nanosecond":60000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":52,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":52000}}],"watch_group":52000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":52,"duration":{"second":327,"nanosecond":60000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":14,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":14000}}],"watch_group":14000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":14,"duration":{"second":327,"nanosecond":60000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":53000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":53000,"duration":{"second":327,"nanosecond":60000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":12000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":12000,"duration":{"second":327,"nanosecond":60000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":23000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":23000,"duration":{"second":327,"nanosecond":60000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":94000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":94000,"duration":{"second":327,"nanosecond":60000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}}],"flow-node-inventory:snapshot-gathering-status-end":{"succeeded":true,"end":"2026-04-08T01:03:55.818Z"}},{"id":"openflow:2","flow-node-inventory:port-number":54944,"flow-node-inventory:table":[{"id":62,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":28,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":2,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":224,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":181,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":147,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":106,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":61,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":27,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":1,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":223,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":182,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":148,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":105,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":60,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":30,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":0,"flow":[{"id":"71","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.71/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":71}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":889000000}},"flags":""},{"id":"11","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.11/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":11}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":888000000}},"flags":""},{"id":"70","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.70/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":70}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":889000000}},"flags":""},{"id":"10","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.10/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":10}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":888000000}},"flags":""},{"id":"60","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.60/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":60}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":889000000}},"flags":""},{"id":"13","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.13/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":13}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":888000000}},"flags":""},{"id":"12","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.12/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":12}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":888000000}},"flags":""},{"id":"80","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.80/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":80}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":889000000}},"flags":""},{"id":"93","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.93/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":93}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":888000000}},"flags":""},{"id":"92","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.92/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":92}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":888000000}},"flags":""},{"id":"82","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.82/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":82}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":889000000}},"flags":""},{"id":"91","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.91/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":91}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":888000000}},"flags":""},{"id":"81","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.81/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":81}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":889000000}},"flags":""},{"id":"90","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.90/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":90}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":888000000}},"flags":""},{"id":"9","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.9/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":9}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":888000000}},"flags":""},{"id":"84","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.84/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":84}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":889000000}},"flags":""},{"id":"97","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.97/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":97}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":888000000}},"flags":""},{"id":"66","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.66/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":66}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":889000000}},"flags":""},{"id":"79","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.79/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":79}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":889000000}},"flags":""},{"id":"54","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.54/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":54}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":888000000}},"flags":""},{"id":"45","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.45/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":45}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":888000000}},"flags":""},{"id":"83","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.83/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":83}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":889000000}},"flags":""},{"id":"96","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.96/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":96}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":888000000}},"flags":""},{"id":"65","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.65/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":65}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":889000000}},"flags":""},{"id":"78","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.78/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":78}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":889000000}},"flags":""},{"id":"20","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.20/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":20}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":888000000}},"flags":""},{"id":"55","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.55/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":55}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":888000000}},"flags":""},{"id":"46","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.46/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":46}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":888000000}},"flags":""},{"id":"7","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.7/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":7}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":888000000}},"flags":""},{"id":"86","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.86/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":86}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":889000000}},"flags":""},{"id":"95","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.95/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":95}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":888000000}},"flags":""},{"id":"68","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.68/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":68}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":889000000}},"flags":""},{"id":"77","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.77/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":77}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":889000000}},"flags":""},{"id":"30","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.30/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":30}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":888000000}},"flags":""},{"id":"56","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.56/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":56}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":888000000}},"flags":""},{"id":"43","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.43/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":43}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":888000000}},"flags":""},{"id":"8","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.8/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":8}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":888000000}},"flags":""},{"id":"85","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.85/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":85}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":889000000}},"flags":""},{"id":"94","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.94/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":94}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":888000000}},"flags":""},{"id":"67","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.67/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":67}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":889000000}},"flags":""},{"id":"76","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.76/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":76}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":889000000}},"flags":""},{"id":"31","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.31/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":31}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":888000000}},"flags":""},{"id":"57","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.57/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":57}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":888000000}},"flags":""},{"id":"44","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.44/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":44}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":888000000}},"flags":""},{"id":"5","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.5/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":5}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":888000000}},"flags":""},{"id":"88","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.88/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":88}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":889000000}},"flags":""},{"id":"62","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.62/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":62}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":889000000}},"flags":""},{"id":"75","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.75/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":75}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":889000000}},"flags":""},{"id":"32","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.32/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":32}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":888000000}},"flags":""},{"id":"23","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.23/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":23}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":888000000}},"flags":""},{"id":"50","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.50/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":50}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":887000000}},"flags":""},{"id":"41","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.41/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":41}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":888000000}},"flags":""},{"id":"6","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.6/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":6}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":888000000}},"flags":""},{"id":"100","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.100/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":100}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":889000000}},"flags":""},{"id":"87","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.87/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":87}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":889000000}},"flags":""},{"id":"61","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.61/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":61}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":889000000}},"flags":""},{"id":"74","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.74/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":74}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":889000000}},"flags":""},{"id":"33","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.33/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":33}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":888000000}},"flags":""},{"id":"24","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.24/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":24}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":888000000}},"flags":""},{"id":"51","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.51/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":51}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":887000000}},"flags":""},{"id":"42","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.42/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":42}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":888000000}},"flags":""},{"id":"3","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.3/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":3}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":888000000}},"flags":""},{"id":"99","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.99/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":99}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":888000000}},"flags":""},{"id":"64","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.64/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":64}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":889000000}},"flags":""},{"id":"73","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.73/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":73}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":889000000}},"flags":""},{"id":"34","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.34/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":34}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":888000000}},"flags":""},{"id":"21","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.21/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":21}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":888000000}},"flags":""},{"id":"52","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.52/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":52}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":887000000}},"flags":""},{"id":"4","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.4/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":4}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":888000000}},"flags":""},{"id":"89","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.89/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":89}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":889000000}},"flags":""},{"id":"98","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.98/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":98}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":888000000}},"flags":""},{"id":"63","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.63/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":63}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":889000000}},"flags":""},{"id":"72","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.72/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":72}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":889000000}},"flags":""},{"id":"35","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.35/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":35}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":888000000}},"flags":""},{"id":"22","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.22/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":22}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":888000000}},"flags":""},{"id":"53","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.53/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":53}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":888000000}},"flags":""},{"id":"40","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.40/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":40}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":888000000}},"flags":""},{"id":"#UF$TABLE*0-2","table_id":0,"priority":0,"cookie_mask":"0","idle-timeout":0,"cookie":"10","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"output-action":{"max-length":65535,"output-node-connector":"CONTROLLER"}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"147","byte-count":"12240","duration":{"second":325,"nanosecond":767000000}},"flags":"SEND_FLOW_REM"},{"id":"37","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.37/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":37}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":888000000}},"flags":""},{"id":"28","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.28/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":28}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":888000000}},"flags":""},{"id":"36","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.36/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":36}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":888000000}},"flags":""},{"id":"27","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.27/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":27}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":888000000}},"flags":""},{"id":"39","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.39/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":39}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":888000000}},"flags":""},{"id":"26","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.26/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":26}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":888000000}},"flags":""},{"id":"38","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.38/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":38}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":888000000}},"flags":""},{"id":"25","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.25/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":25}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":888000000}},"flags":""},{"id":"69","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.69/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":69}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":888000000}},"flags":""},{"id":"59","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.59/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":59}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":888000000}},"flags":""},{"id":"58","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.58/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":58}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":888000000}},"flags":""},{"id":"49","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.49/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":49}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":888000000}},"flags":""},{"id":"48","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.48/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":48}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":888000000}},"flags":""},{"id":"29","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.29/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":29}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":888000000}},"flags":""},{"id":"47","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.47/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":47}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":888000000}},"flags":""},{"id":"18","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.18/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":18}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":889000000}},"flags":""},{"id":"19","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.19/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":19}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":889000000}},"flags":""},{"id":"14","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.14/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":14}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":889000000}},"flags":""},{"id":"15","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.15/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":15}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":889000000}},"flags":""},{"id":"1","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.1/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":1}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":145,"nanosecond":217000000}},"flags":""},{"id":"16","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.16/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":16}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":889000000}},"flags":""},{"id":"2","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.2/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":2}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":889000000}},"flags":""},{"id":"17","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.17/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":17}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":889000000}},"flags":""}],"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"169","active-flows":101,"packets-matched":"157"}},{"id":226,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":179,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":149,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":104,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":59,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":29,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":225,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":180,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":150,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":103,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":66,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":32,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":220,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":185,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":151,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":102,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":65,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":31,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":253,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":219,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":186,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":152,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":101,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":64,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":34,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":252,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":222,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":183,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":153,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":100,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":63,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":33,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":251,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":221,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":184,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":154,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":99,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":54,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":20,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":250,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":216,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":189,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":155,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":129,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":114,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":53,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":19,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":249,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":215,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":190,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":156,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":130,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":113,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":52,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":22,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":248,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":218,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":187,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":157,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":112,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":51,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":21,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":247,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":217,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":188,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":158,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":128,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":111,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":58,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":24,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":246,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":212,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":193,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":159,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":110,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":57,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":23,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":245,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":211,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":194,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":160,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":109,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":56,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":26,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":244,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":214,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":191,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":161,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":108,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":55,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":25,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":243,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":213,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":192,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":162,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":107,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":77,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":43,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":17,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":239,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":198,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":164,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":138,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":119,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":89,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":78,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":44,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":18,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":240,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":197,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":163,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":137,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":120,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":90,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":75,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":45,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":15,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":241,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":196,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":166,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":136,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":121,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":87,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":76,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":46,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":16,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":242,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":195,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":165,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":135,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":122,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":88,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":81,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":47,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":13,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":235,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":202,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":168,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":134,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":115,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":85,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":82,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":48,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":14,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":236,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":201,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":167,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":133,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":116,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":86,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":79,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":49,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":11,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":237,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":200,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":170,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":132,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":117,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":83,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":80,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":50,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":12,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":238,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":199,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":169,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":131,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":118,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":84,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":69,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":35,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":9,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":231,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":206,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":172,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":146,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":127,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":97,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":70,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":36,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":10,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":232,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":205,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":171,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":145,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":98,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":67,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":37,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":7,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":233,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":204,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":174,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":144,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":95,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":68,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":38,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":8,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":234,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":203,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":173,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":143,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":96,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":73,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":39,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":5,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":227,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":210,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":176,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":142,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":123,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":93,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":74,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":40,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":6,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":228,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":209,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":175,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":141,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":124,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":94,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":71,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":41,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":3,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":229,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":208,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":178,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":140,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":125,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":91,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":72,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":42,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":4,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":230,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":207,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":177,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":139,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":126,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":92,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}}],"opendaylight-group-statistics:group-features":{"max-groups":[4294967040],"group-types-supported":["opendaylight-group-types:group-all","opendaylight-group-types:group-ff","opendaylight-group-types:group-select","opendaylight-group-types:group-indirect"],"group-capabilities-supported":["opendaylight-group-types:chaining","opendaylight-group-types:select-weight","opendaylight-group-types:select-liveness"],"actions":[67076097]},"flow-node-inventory:manufacturer":"Nicira, Inc.","flow-node-inventory:description":"s2","flow-node-inventory:hardware":"Open vSwitch","flow-node-inventory:switch-features":{"max_tables":254,"capabilities":["flow-node-inventory:flow-feature-capability-table-stats","flow-node-inventory:flow-feature-capability-group-stats","flow-node-inventory:flow-feature-capability-queue-stats","flow-node-inventory:flow-feature-capability-flow-stats","flow-node-inventory:flow-feature-capability-port-stats"],"max_buffers":0},"flow-node-inventory:snapshot-gathering-status-start":{"begin":"2026-04-08T01:03:55.779Z"},"flow-node-inventory:software":"2.17.11","node-connector":[{"id":"openflow:2:3","flow-node-inventory:port-number":3,"flow-node-inventory:hardware-address":"da:7c:fc:7d:24:d4","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s2-eth3","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"84","received":"80"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":331,"nanosecond":88000000},"bytes":{"transmitted":"7074","received":"6722"},"receive-crc-error":"0"}},{"id":"openflow:2:LOCAL","flow-node-inventory:port-number":4294967294,"flow-node-inventory:hardware-address":"ee:be:cf:9b:06:44","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s2","flow-node-inventory:current-feature":"","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":0,"flow-node-inventory:state":{"live":false,"blocked":false,"link-down":true},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"PORT-DOWN","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"0","received":"0"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":331,"nanosecond":82000000},"bytes":{"transmitted":"0","received":"0"},"receive-crc-error":"0"}},{"id":"openflow:2:2","flow-node-inventory:port-number":2,"flow-node-inventory:hardware-address":"76:f5:91:ad:d8:c6","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s2-eth2","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"84","received":"80"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":331,"nanosecond":88000000},"bytes":{"transmitted":"7074","received":"6722"},"receive-crc-error":"0"}},{"id":"openflow:2:1","flow-node-inventory:port-number":1,"flow-node-inventory:hardware-address":"96:61:91:36:76:0b","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s2-eth1","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"86","received":"12"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":331,"nanosecond":88000000},"bytes":{"transmitted":"7250","received":"936"},"receive-crc-error":"0"}}],"flow-node-inventory:ip-address":"10.30.170.192","flow-node-inventory:serial-number":"None","flow-node-inventory:group":[{"group-id":56,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":56000}}],"watch_group":56000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":56,"duration":{"second":327,"nanosecond":47000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":22,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":22000}}],"watch_group":22000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":22,"duration":{"second":327,"nanosecond":47000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":99,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":99000}}],"watch_group":99000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":99,"duration":{"second":327,"nanosecond":47000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":34000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":34000,"duration":{"second":329,"nanosecond":740000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":89000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":89000,"duration":{"second":329,"nanosecond":740000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":60000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":60000,"duration":{"second":329,"nanosecond":740000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":91000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":91000,"duration":{"second":329,"nanosecond":740000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":57,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":57000}}],"watch_group":57000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":57,"duration":{"second":327,"nanosecond":47000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":23,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":23000}}],"watch_group":23000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":23,"duration":{"second":326,"nanosecond":550000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":14000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":14000,"duration":{"second":329,"nanosecond":740000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":98,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":98000}}],"watch_group":98000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":98,"duration":{"second":326,"nanosecond":550000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":56000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":56000,"duration":{"second":329,"nanosecond":740000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":85000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":85000,"duration":{"second":329,"nanosecond":740000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":54,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":54000}}],"watch_group":54000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":54,"duration":{"second":326,"nanosecond":550000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":24,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":24000}}],"watch_group":24000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":24,"duration":{"second":326,"nanosecond":550000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":36000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":36000,"duration":{"second":329,"nanosecond":740000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":87000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":87000,"duration":{"second":329,"nanosecond":740000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":59000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":59000,"duration":{"second":329,"nanosecond":740000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":25000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":25000,"duration":{"second":329,"nanosecond":740000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":43000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":43000,"duration":{"second":329,"nanosecond":740000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":55,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":55000}}],"watch_group":55000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":55,"duration":{"second":326,"nanosecond":550000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":25,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":25000}}],"watch_group":25000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":25,"duration":{"second":329,"nanosecond":556000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":100,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":100000}}],"watch_group":100000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":100,"duration":{"second":326,"nanosecond":550000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":58000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":58000,"duration":{"second":329,"nanosecond":556000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":86000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":86000,"duration":{"second":329,"nanosecond":556000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":60,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":60000}}],"watch_group":60000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":60,"duration":{"second":329,"nanosecond":555000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":26,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":26000}}],"watch_group":26000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":26,"duration":{"second":326,"nanosecond":550000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":41000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":41000,"duration":{"second":329,"nanosecond":555000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":95,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":95000}}],"watch_group":95000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":95,"duration":{"second":326,"nanosecond":550000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":82000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":82000,"duration":{"second":329,"nanosecond":555000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":61,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":61000}}],"watch_group":61000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":61,"duration":{"second":326,"nanosecond":550000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":27,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":27000}}],"watch_group":27000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":27,"duration":{"second":326,"nanosecond":550000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":94,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":94000}}],"watch_group":94000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":94,"duration":{"second":326,"nanosecond":550000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":98000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":98000,"duration":{"second":329,"nanosecond":555000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":27000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":27000,"duration":{"second":329,"nanosecond":555000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":57000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":57000,"duration":{"second":329,"nanosecond":555000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":16000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":16000,"duration":{"second":329,"nanosecond":555000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":83000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":83000,"duration":{"second":329,"nanosecond":555000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":58,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":58000}}],"watch_group":58000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":58,"duration":{"second":329,"nanosecond":55000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":28,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":28000}}],"watch_group":28000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":28,"duration":{"second":326,"nanosecond":550000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":97,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":97000}}],"watch_group":97000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":97,"duration":{"second":326,"nanosecond":550000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":100000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":100000,"duration":{"second":329,"nanosecond":55000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":59,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":59000}}],"watch_group":59000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":59,"duration":{"second":329,"nanosecond":55000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":38000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":38000,"duration":{"second":329,"nanosecond":55000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":29,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":29000}}],"watch_group":29000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":29,"duration":{"second":326,"nanosecond":550000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":96,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":96000}}],"watch_group":96000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":96,"duration":{"second":326,"nanosecond":550000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":84000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":84000,"duration":{"second":329,"nanosecond":55000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":64,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":64000}}],"watch_group":64000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":64,"duration":{"second":326,"nanosecond":550000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":30,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":30000}}],"watch_group":30000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":30,"duration":{"second":326,"nanosecond":550000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":4,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":4000}}],"watch_group":4000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":4,"duration":{"second":326,"nanosecond":546000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":91,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":91000}}],"watch_group":91000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":91,"duration":{"second":329,"nanosecond":55000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":7000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":7000,"duration":{"second":329,"nanosecond":55000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":29000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":29000,"duration":{"second":329,"nanosecond":54000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":65,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":65000}}],"watch_group":65000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":65,"duration":{"second":326,"nanosecond":546000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":31,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":31000}}],"watch_group":31000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":31,"duration":{"second":326,"nanosecond":546000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":5,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":5000}}],"watch_group":5000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":5,"duration":{"second":326,"nanosecond":546000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":90,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":90000}}],"watch_group":90000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":90,"duration":{"second":326,"nanosecond":546000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":18000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":18000,"duration":{"second":329,"nanosecond":54000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":62,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":62000}}],"watch_group":62000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":62,"duration":{"second":326,"nanosecond":546000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":65000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":65000,"duration":{"second":329,"nanosecond":54000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":32,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":32000}}],"watch_group":32000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":32,"duration":{"second":326,"nanosecond":546000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":2,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":2000}}],"watch_group":2000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":2,"duration":{"second":326,"nanosecond":546000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":93,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":93000}}],"watch_group":93000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":93,"duration":{"second":326,"nanosecond":546000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":64000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":64000,"duration":{"second":329,"nanosecond":53000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":63,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":63000}}],"watch_group":63000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":63,"duration":{"second":326,"nanosecond":546000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":33,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":33000}}],"watch_group":33000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":33,"duration":{"second":326,"nanosecond":546000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":3,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":3000}}],"watch_group":3000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":3,"duration":{"second":326,"nanosecond":546000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":80000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":80000,"duration":{"second":329,"nanosecond":53000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":9000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":9000,"duration":{"second":329,"nanosecond":53000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":92,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":92000}}],"watch_group":92000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":92,"duration":{"second":326,"nanosecond":546000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":5000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":5000,"duration":{"second":329,"nanosecond":49000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":20000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":20000,"duration":{"second":329,"nanosecond":49000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":81000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":81000,"duration":{"second":329,"nanosecond":49000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":97000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":97000,"duration":{"second":329,"nanosecond":49000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":31000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":31000,"duration":{"second":329,"nanosecond":49000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":68,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":68000}}],"watch_group":68000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":68,"duration":{"second":326,"nanosecond":546000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":11000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":11000,"duration":{"second":329,"nanosecond":49000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":34,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":34000}}],"watch_group":34000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":34,"duration":{"second":329,"nanosecond":49000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":78000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":78000,"duration":{"second":329,"nanosecond":49000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":87,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":87000}}],"watch_group":87000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":87,"duration":{"second":329,"nanosecond":49000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":93000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":93000,"duration":{"second":329,"nanosecond":49000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":63000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":63000,"duration":{"second":329,"nanosecond":49000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":69,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":69000}}],"watch_group":69000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":69,"duration":{"second":326,"nanosecond":546000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":35,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":35000}}],"watch_group":35000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":35,"duration":{"second":326,"nanosecond":546000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":1,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":1000}}],"watch_group":1000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":1,"duration":{"second":145,"nanosecond":421000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":33000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":33000,"duration":{"second":329,"nanosecond":49000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":79000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":79000,"duration":{"second":329,"nanosecond":49000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":86,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":86000}}],"watch_group":86000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":86,"duration":{"second":329,"nanosecond":49000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":62000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":62000,"duration":{"second":329,"nanosecond":49000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":66,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":66000}}],"watch_group":66000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":66,"duration":{"second":326,"nanosecond":546000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":77000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":77000,"duration":{"second":329,"nanosecond":49000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":36,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":36000}}],"watch_group":36000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":36,"duration":{"second":329,"nanosecond":49000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":89,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":89000}}],"watch_group":89000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":89,"duration":{"second":329,"nanosecond":49000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":22000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":22000,"duration":{"second":329,"nanosecond":47000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":95000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":95000,"duration":{"second":329,"nanosecond":47000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":67,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":67000}}],"watch_group":67000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":67,"duration":{"second":326,"nanosecond":546000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":37,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":37000}}],"watch_group":37000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":37,"duration":{"second":326,"nanosecond":546000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":1000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":1000,"duration":{"second":145,"nanosecond":632000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":88,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":88000}}],"watch_group":88000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":88,"duration":{"second":326,"nanosecond":544000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":61000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":61000,"duration":{"second":329,"nanosecond":45000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":3000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":3000,"duration":{"second":329,"nanosecond":45000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":73,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":73000}}],"watch_group":73000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":73,"duration":{"second":326,"nanosecond":544000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":39,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":39000}}],"watch_group":39000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":39,"duration":{"second":326,"nanosecond":544000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":13,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":13000}}],"watch_group":13000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":13,"duration":{"second":326,"nanosecond":544000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":74000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":74000,"duration":{"second":329,"nanosecond":45000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":15000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":15000,"duration":{"second":329,"nanosecond":45000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":44000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":44000,"duration":{"second":329,"nanosecond":45000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":45000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":45000,"duration":{"second":329,"nanosecond":45000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":68000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":68000,"duration":{"second":329,"nanosecond":45000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":72,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":72000}}],"watch_group":72000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":72,"duration":{"second":326,"nanosecond":544000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":38,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":38000}}],"watch_group":38000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":38,"duration":{"second":328,"nanosecond":549000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":75000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":75000,"duration":{"second":328,"nanosecond":549000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":12,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":12000}}],"watch_group":12000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":12,"duration":{"second":326,"nanosecond":544000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":35000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":35000,"duration":{"second":328,"nanosecond":549000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":24000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":24000,"duration":{"second":328,"nanosecond":549000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":90000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":90000,"duration":{"second":328,"nanosecond":549000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":71,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":71000}}],"watch_group":71000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":71,"duration":{"second":326,"nanosecond":544000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":41,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":41000}}],"watch_group":41000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":41,"duration":{"second":328,"nanosecond":549000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":42000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":42000,"duration":{"second":328,"nanosecond":549000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":11,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":11000}}],"watch_group":11000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":11,"duration":{"second":328,"nanosecond":549000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":92000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":92000,"duration":{"second":328,"nanosecond":549000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":46000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":46000,"duration":{"second":328,"nanosecond":549000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":67000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":67000,"duration":{"second":328,"nanosecond":549000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":70,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":70000}}],"watch_group":70000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":70,"duration":{"second":326,"nanosecond":544000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":76000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":76000,"duration":{"second":328,"nanosecond":549000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":40,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":40000}}],"watch_group":40000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":40,"duration":{"second":326,"nanosecond":544000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":13000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":13000,"duration":{"second":328,"nanosecond":549000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":10,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":10000}}],"watch_group":10000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":10,"duration":{"second":326,"nanosecond":544000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":88000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":88000,"duration":{"second":328,"nanosecond":549000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":47000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":47000,"duration":{"second":328,"nanosecond":549000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":66000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":66000,"duration":{"second":328,"nanosecond":549000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":77,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":77000}}],"watch_group":77000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":77,"duration":{"second":328,"nanosecond":549000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":43,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":43000}}],"watch_group":43000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":43,"duration":{"second":328,"nanosecond":549000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":9,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":9000}}],"watch_group":9000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":9,"duration":{"second":328,"nanosecond":549000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":99000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":99000,"duration":{"second":328,"nanosecond":549000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":26000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":26000,"duration":{"second":328,"nanosecond":549000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":70000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":70000,"duration":{"second":328,"nanosecond":549000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":76,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":76000}}],"watch_group":76000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":76,"duration":{"second":328,"nanosecond":45000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":42,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":42000}}],"watch_group":42000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":42,"duration":{"second":328,"nanosecond":45000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":8,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":8000}}],"watch_group":8000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":8,"duration":{"second":326,"nanosecond":544000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":37000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":37000,"duration":{"second":328,"nanosecond":45000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":49000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":49000,"duration":{"second":328,"nanosecond":45000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":71000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":71000,"duration":{"second":328,"nanosecond":45000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":48000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":48000,"duration":{"second":328,"nanosecond":45000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":75,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":75000}}],"watch_group":75000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":75,"duration":{"second":328,"nanosecond":45000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":45,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":45000}}],"watch_group":45000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":45,"duration":{"second":328,"nanosecond":45000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":7,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":7000}}],"watch_group":7000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":7,"duration":{"second":328,"nanosecond":45000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":39000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":39000,"duration":{"second":328,"nanosecond":45000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":73000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":73000,"duration":{"second":328,"nanosecond":45000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":69000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":69000,"duration":{"second":328,"nanosecond":45000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":17000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":17000,"duration":{"second":328,"nanosecond":45000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":28000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":28000,"duration":{"second":328,"nanosecond":45000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":74,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":74000}}],"watch_group":74000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":74,"duration":{"second":328,"nanosecond":45000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":44,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":44000}}],"watch_group":44000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":44,"duration":{"second":328,"nanosecond":45000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":6,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":6000}}],"watch_group":6000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":6,"duration":{"second":326,"nanosecond":544000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":40000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":40000,"duration":{"second":328,"nanosecond":45000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":81,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":81000}}],"watch_group":81000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":81,"duration":{"second":328,"nanosecond":45000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":47,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":47000}}],"watch_group":47000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":47,"duration":{"second":328,"nanosecond":45000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":21,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":21000}}],"watch_group":21000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":21,"duration":{"second":326,"nanosecond":544000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":8000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":8000,"duration":{"second":328,"nanosecond":45000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":19000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":19000,"duration":{"second":328,"nanosecond":45000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":96000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":96000,"duration":{"second":328,"nanosecond":45000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":80,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":80000}}],"watch_group":80000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":80,"duration":{"second":328,"nanosecond":45000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":46,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":46000}}],"watch_group":46000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":46,"duration":{"second":328,"nanosecond":45000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":20,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":20000}}],"watch_group":20000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":20,"duration":{"second":328,"nanosecond":45000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":52000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":52000,"duration":{"second":328,"nanosecond":45000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":6000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":6000,"duration":{"second":328,"nanosecond":45000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":79,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":79000}}],"watch_group":79000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":79,"duration":{"second":328,"nanosecond":45000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":49,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":49000}}],"watch_group":49000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":49,"duration":{"second":327,"nanosecond":554000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":19,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":19000}}],"watch_group":19000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":19,"duration":{"second":327,"nanosecond":554000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":50000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":50000,"duration":{"second":327,"nanosecond":553000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":72000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":72000,"duration":{"second":327,"nanosecond":553000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":30000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":30000,"duration":{"second":327,"nanosecond":553000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":78,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":78000}}],"watch_group":78000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":78,"duration":{"second":327,"nanosecond":552000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":48,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":48000}}],"watch_group":48000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":48,"duration":{"second":327,"nanosecond":551000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":18,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":18000}}],"watch_group":18000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":18,"duration":{"second":327,"nanosecond":551000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":51000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":51000,"duration":{"second":327,"nanosecond":550000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":85,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":85000}}],"watch_group":85000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":85,"duration":{"second":327,"nanosecond":550000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":55000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":55000,"duration":{"second":327,"nanosecond":550000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":51,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":51000}}],"watch_group":51000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":51,"duration":{"second":327,"nanosecond":53000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":17,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":17000}}],"watch_group":17000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":17,"duration":{"second":327,"nanosecond":53000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":21000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":21000,"duration":{"second":327,"nanosecond":53000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":4000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":4000,"duration":{"second":327,"nanosecond":53000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":84,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":84000}}],"watch_group":84000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":84,"duration":{"second":327,"nanosecond":53000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":50,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":50000}}],"watch_group":50000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":50,"duration":{"second":327,"nanosecond":52000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":16,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":16000}}],"watch_group":16000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":16,"duration":{"second":327,"nanosecond":52000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":10000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":10000,"duration":{"second":327,"nanosecond":52000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":54000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":54000,"duration":{"second":327,"nanosecond":47000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":83,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":83000}}],"watch_group":83000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":83,"duration":{"second":327,"nanosecond":47000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":32000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":32000,"duration":{"second":327,"nanosecond":47000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":53,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":53000}}],"watch_group":53000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":53,"duration":{"second":326,"nanosecond":544000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":15,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":15000}}],"watch_group":15000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":15,"duration":{"second":327,"nanosecond":47000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":2000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":2000,"duration":{"second":327,"nanosecond":47000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":82,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":82000}}],"watch_group":82000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":82,"duration":{"second":327,"nanosecond":47000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":52,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":52000}}],"watch_group":52000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":52,"duration":{"second":327,"nanosecond":47000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":14,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":14000}}],"watch_group":14000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":14,"duration":{"second":327,"nanosecond":47000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":53000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":53000,"duration":{"second":327,"nanosecond":47000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":12000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":12000,"duration":{"second":327,"nanosecond":47000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":23000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":23000,"duration":{"second":327,"nanosecond":47000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":94000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":94000,"duration":{"second":327,"nanosecond":47000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}}],"flow-node-inventory:snapshot-gathering-status-end":{"succeeded":true,"end":"2026-04-08T01:03:55.816Z"}}]}}</msg>
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:03:57.194497" elapsed="0.009713"/>
</kw>
<kw name="Get Count" owner="BuiltIn">
<msg time="2026-04-08T01:03:57.207483" level="INFO">Item found from container 303 times.</msg>
<msg time="2026-04-08T01:03:57.207579" level="INFO">${count} = 303</msg>
<var>${count}</var>
<arg>${resp.text}</arg>
<arg>"priority"</arg>
<doc>Returns and logs how many times ``item`` is found from ``container``.</doc>
<status status="PASS" start="2026-04-08T01:03:57.204400" elapsed="0.003206"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${count}</arg>
<arg>${flows}</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="PASS" start="2026-04-08T01:03:57.207797" elapsed="0.000316"/>
</kw>
<arg>${all_flows}</arg>
<doc>Check number of flows in the inventory.</doc>
<status status="PASS" start="2026-04-08T01:03:57.142679" elapsed="0.065520"/>
</kw>
<arg>30s</arg>
<arg>1s</arg>
<arg>ClusterOpenFlow.Check Number Of Flows On Member</arg>
<arg>${all_flows}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-08T01:03:57.142122" elapsed="0.066127"/>
</kw>
<doc>Check Flows in Operational DS.</doc>
<status status="PASS" start="2026-04-08T01:03:56.836348" elapsed="0.372026"/>
</test>
<test id="s1-s4-t63" name="Check Groups In Operational DS After Owner Restart" line="424">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-08T01:03:57.211553" elapsed="0.000202"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-08T01:03:57.211290" elapsed="0.000518"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:03:57.212829" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:03:57.212711" elapsed="0.000167"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:57.212687" elapsed="0.000214"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:03:57.217816" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:03:57.217710" elapsed="0.000150"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:57.217692" elapsed="0.000190"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:03:57.218913" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:03:57.218507" elapsed="0.000433"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:03:57.219425" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:03:57.219104" elapsed="0.000346"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T01:03:57.219495" elapsed="0.000034"/>
</return>
<msg time="2026-04-08T01:03:57.219653" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T01:03:57.218111" elapsed="0.001567"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:03:57.226834" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:03:57.226725" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:57.226705" elapsed="0.000197"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:03:57.228071" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:03:57.227965" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:57.227947" elapsed="0.000191"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:03:57.228598" level="INFO">${karaf_connection_index} = 476</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:03:57.228300" elapsed="0.000324"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:03:57.229037" level="INFO">${current_connection_index} = 495</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:03:57.228782" elapsed="0.000281"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:03:57.259907" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:03:57.229588" elapsed="0.030421"/>
</kw>
<msg time="2026-04-08T01:03:57.260198" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T01:03:57.260247" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:03:57.229251" elapsed="0.031031"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T01:03:57.310115" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "G "r "o "u "p "s "[C "I "n "[C "O "p "e "r "a "t "i "o "n "a "l "[C "D "S "[C "A "f "t "e "r "[C "O "w "n "e "r "[C "R "e "s "t "a "r "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T01:03:57.260805" elapsed="0.049440"/>
</kw>
<msg time="2026-04-08T01:03:57.310412" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T01:03:57.310459" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "G "r "o "u "p "s...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:03:57.260460" elapsed="0.050082"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:57.310860" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:03:57.310625" elapsed="0.000290"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:57.310605" elapsed="0.000334"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:03:57.311402" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "G "r "o "u "p "s "[C "I "n "[C "O "p "e "r "a "t "i "o "n "a "l "[C "D "S "[C "A "f "t "e "r "[C "O "w "n "e "r "[C "R "e "s "t "a "r "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:03:57.311081" elapsed="0.000396"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:57.311763" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:03:57.311545" elapsed="0.000272"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:57.311527" elapsed="0.000314"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T01:03:57.311873" elapsed="0.000029"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:03:57.314353" elapsed="0.000179"/>
</kw>
<msg time="2026-04-08T01:03:57.314592" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:03:57.313332" elapsed="0.001392"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:57.314997" elapsed="0.000074"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:57.315355" elapsed="0.000072"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:03:57.312697" elapsed="0.002837"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T01:03:57.312140" elapsed="0.003457"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T01:03:57.227665" elapsed="0.088029"/>
</kw>
<msg time="2026-04-08T01:03:57.315784" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:03:57.315827" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "G "r "o "u "p "s...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:03:57.227054" elapsed="0.088808"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T01:03:57.316043" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-08T01:03:57.315938" elapsed="0.000163"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:57.315920" elapsed="0.000204"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:57.316531" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:57.316859" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T01:03:57.316929" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T01:03:57.226385" elapsed="0.090648"/>
</kw>
<msg time="2026-04-08T01:03:57.317123" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:03:57.317282" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "G "r "o "u "p "s...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:03:57.220055" elapsed="0.097267"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:57.317651" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:03:57.317401" elapsed="0.000302"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:57.317382" elapsed="0.000344"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T01:03:57.219909" elapsed="0.097840"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:03:57.323329" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:03:57.323222" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:57.323202" elapsed="0.000194"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:03:57.324585" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:03:57.324476" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:57.324458" elapsed="0.000194"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:03:57.325096" level="INFO">${karaf_connection_index} = 478</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:03:57.324801" elapsed="0.000322"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:03:57.325570" level="INFO">${current_connection_index} = 495</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:03:57.325318" elapsed="0.000278"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:03:57.358599" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:03:57.326098" elapsed="0.032600"/>
</kw>
<msg time="2026-04-08T01:03:57.358856" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T01:03:57.358904" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:03:57.325760" elapsed="0.033179"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T01:03:57.404547" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "G "r "o "u "p "s "[C "I "n "[C "O "p "e "r "a "t "i "o "n "a "l "[C "D "S "[C "A "f "t "e "r "[C "O "w "n "e "r "[C "R "e "s "t "a "r "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T01:03:57.359488" elapsed="0.045172"/>
</kw>
<msg time="2026-04-08T01:03:57.404818" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T01:03:57.404864" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "G "r "o "u "p "s...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:03:57.359114" elapsed="0.045786"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:57.405248" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:03:57.404979" elapsed="0.000327"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:57.404958" elapsed="0.000371"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:03:57.405768" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "G "r "o "u "p "s "[C "I "n "[C "O "p "e "r "a "t "i "o "n "a "l "[C "D "S "[C "A "f "t "e "r "[C "O "w "n "e "r "[C "R "e "s "t "a "r "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:03:57.405475" elapsed="0.000368"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:57.406127" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:03:57.405910" elapsed="0.000289"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:57.405892" elapsed="0.000330"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T01:03:57.406255" elapsed="0.000027"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:03:57.408655" elapsed="0.000179"/>
</kw>
<msg time="2026-04-08T01:03:57.408895" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:03:57.407658" elapsed="0.001363"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:57.409349" elapsed="0.000077"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:57.409681" elapsed="0.000073"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:03:57.407035" elapsed="0.002826"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T01:03:57.406513" elapsed="0.003410"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T01:03:57.324148" elapsed="0.085873"/>
</kw>
<msg time="2026-04-08T01:03:57.410112" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:03:57.410176" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "G "r "o "u "p "s...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:03:57.323548" elapsed="0.086666"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T01:03:57.410397" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-08T01:03:57.410292" elapsed="0.000162"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:57.410274" elapsed="0.000244"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 2,
close the previous connection. In any case create a new connection
to karaf console for 2, set correct prompt set and login to karaf console.
Store connection index for 2 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:57.410906" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:57.411257" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T01:03:57.411328" elapsed="0.000018"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T01:03:57.322871" elapsed="0.088568"/>
</kw>
<msg time="2026-04-08T01:03:57.411531" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:03:57.411574" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "G "r "o "u "p "s...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:03:57.318011" elapsed="0.093598"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:57.411932" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:03:57.411684" elapsed="0.000301"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:57.411667" elapsed="0.000341"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T01:03:57.317871" elapsed="0.094159"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:03:57.417612" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:03:57.417504" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:57.417484" elapsed="0.000195"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:03:57.418898" elapsed="0.000020"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:03:57.418756" elapsed="0.000202"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:57.418737" elapsed="0.000249"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:03:57.419474" level="INFO">${karaf_connection_index} = 480</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:03:57.419149" elapsed="0.000353"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:03:57.419914" level="INFO">${current_connection_index} = 495</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:03:57.419663" elapsed="0.000277"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:03:57.450984" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:03:57.420459" elapsed="0.030771"/>
</kw>
<msg time="2026-04-08T01:03:57.451585" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T01:03:57.451688" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:03:57.420102" elapsed="0.031665"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T01:03:57.500497" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "G "r "o "u "p "s "[C "I "n "[C "O "p "e "r "a "t "i "o "n "a "l "[C "D "S "[C "A "f "t "e "r "[C "O "w "n "e "r "[C "R "e "s "t "a "r "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T01:03:57.452949" elapsed="0.047665"/>
</kw>
<msg time="2026-04-08T01:03:57.500773" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T01:03:57.500819" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "G "r "o "u "p "s...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:03:57.452150" elapsed="0.048706"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:57.501209" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:03:57.500935" elapsed="0.000332"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:57.500915" elapsed="0.000375"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:03:57.501730" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "G "r "o "u "p "s "[C "I "n "[C "O "p "e "r "a "t "i "o "n "a "l "[C "D "S "[C "A "f "t "e "r "[C "O "w "n "e "r "[C "R "e "s "t "a "r "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:03:57.501434" elapsed="0.000375"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:57.502095" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:03:57.501876" elapsed="0.000341"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:57.501858" elapsed="0.000385"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T01:03:57.502277" elapsed="0.000029"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:03:57.504718" elapsed="0.000181"/>
</kw>
<msg time="2026-04-08T01:03:57.504959" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:03:57.503696" elapsed="0.001405"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:57.505389" elapsed="0.000074"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:57.505717" elapsed="0.000072"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:03:57.503068" elapsed="0.002828"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T01:03:57.502538" elapsed="0.003422"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T01:03:57.418455" elapsed="0.087603"/>
</kw>
<msg time="2026-04-08T01:03:57.506149" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:03:57.506210" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "G "r "o "u "p "s...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:03:57.417833" elapsed="0.088415"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T01:03:57.506430" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-08T01:03:57.506325" elapsed="0.000162"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:57.506307" elapsed="0.000204"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 3,
close the previous connection. In any case create a new connection
to karaf console for 3, set correct prompt set and login to karaf console.
Store connection index for 3 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:57.506892" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:57.507250" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T01:03:57.507322" elapsed="0.000017"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T01:03:57.417152" elapsed="0.090278"/>
</kw>
<msg time="2026-04-08T01:03:57.507521" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:03:57.507563" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "G "r "o "u "p "s...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:03:57.412303" elapsed="0.095296"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:57.507919" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:03:57.507673" elapsed="0.000299"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:57.507656" elapsed="0.000339"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T01:03:57.412147" elapsed="0.095870"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-08T01:03:57.219733" elapsed="0.288313"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-08T01:03:57.217350" elapsed="0.290752"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-08T01:03:57.212415" elapsed="0.295756"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:03:57.211962" elapsed="0.296257"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-08T01:03:57.209133" elapsed="0.299139"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Check Number Of Groups On Member" owner="ClusterOpenFlow">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:03:57.510112" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:03:57.509814" elapsed="0.000324"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T01:03:57.510200" elapsed="0.000225"/>
</return>
<msg time="2026-04-08T01:03:57.510550" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T01:03:57.509417" elapsed="0.001158"/>
</kw>
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T01:03:57.568337" level="INFO">GET Request : url=http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01s3bfo0y24i1es90l47mavglv0.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T01:03:57.570439" level="INFO">GET Response : url=http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Transfer-Encoding': 'chunked'} 
 body={"opendaylight-inventory:nodes":{"node":[{"id":"openflow:3","flow-node-inventory:port-number":54950,"flow-node-inventory:table":[{"id":62,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":28,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":2,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":224,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":181,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":147,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":106,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":61,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":27,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":1,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":223,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":182,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":148,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":105,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":60,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":30,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":0,"flow":[{"id":"71","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.71/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":71}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":902000000}},"flags":""},{"id":"11","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.11/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":11}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":902000000}},"flags":""},{"id":"70","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.70/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":70}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":902000000}},"flags":""},{"id":"10","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.10/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":10}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":902000000}},"flags":""},{"id":"60","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.60/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":60}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":902000000}},"flags":""},{"id":"13","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.13/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":13}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":902000000}},"flags":""},{"id":"12","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.12/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":12}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":902000000}},"flags":""},{"id":"80","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.80/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":80}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":902000000}},"flags":""},{"id":"93","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.93/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":93}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":902000000}},"flags":""},{"id":"92","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.92/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":92}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":902000000}},"flags":""},{"id":"82","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.82/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":82}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":902000000}},"flags":""},{"id":"91","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.91/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":91}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":902000000}},"flags":""},{"id":"81","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.81/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":81}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":902000000}},"flags":""},{"id":"90","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.90/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":90}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":902000000}},"flags":""},{"id":"9","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.9/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":9}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":901000000}},"flags":""},{"id":"84","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.84/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":84}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":902000000}},"flags":""},{"id":"97","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.97/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":97}}]}}]},"hard-timeout":0,"opendaylight-flo... (set the log level to DEBUG or TRACE to see the full content) 
 </msg>
<msg time="2026-04-08T01:03:57.570904" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${RFC8040_OPERATIONAL_NODES_API}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T01:03:57.510731" elapsed="0.060233"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:03:57.577786" level="INFO">{"opendaylight-inventory:nodes":{"node":[{"id":"openflow:3","flow-node-inventory:port-number":54950,"flow-node-inventory:table":[{"id":62,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":28,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":2,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":224,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":181,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":147,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":106,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":61,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":27,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":1,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":223,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":182,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":148,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":105,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":60,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":30,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":0,"flow":[{"id":"71","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.71/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":71}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":902000000}},"flags":""},{"id":"11","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.11/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":11}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":902000000}},"flags":""},{"id":"70","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.70/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":70}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":902000000}},"flags":""},{"id":"10","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.10/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":10}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":902000000}},"flags":""},{"id":"60","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.60/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":60}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":902000000}},"flags":""},{"id":"13","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.13/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":13}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":902000000}},"flags":""},{"id":"12","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.12/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":12}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":902000000}},"flags":""},{"id":"80","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.80/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":80}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":902000000}},"flags":""},{"id":"93","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.93/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":93}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":902000000}},"flags":""},{"id":"92","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.92/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":92}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":902000000}},"flags":""},{"id":"82","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.82/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":82}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":902000000}},"flags":""},{"id":"91","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.91/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":91}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":902000000}},"flags":""},{"id":"81","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.81/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":81}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":902000000}},"flags":""},{"id":"90","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.90/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":90}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":902000000}},"flags":""},{"id":"9","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.9/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":9}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":901000000}},"flags":""},{"id":"84","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.84/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":84}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":902000000}},"flags":""},{"id":"97","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.97/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":97}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":902000000}},"flags":""},{"id":"66","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.66/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":66}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":902000000}},"flags":""},{"id":"79","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.79/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":79}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":902000000}},"flags":""},{"id":"54","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.54/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":54}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":901000000}},"flags":""},{"id":"45","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.45/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":45}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":901000000}},"flags":""},{"id":"83","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.83/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":83}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":902000000}},"flags":""},{"id":"96","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.96/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":96}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":901000000}},"flags":""},{"id":"65","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.65/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":65}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":902000000}},"flags":""},{"id":"78","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.78/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":78}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":902000000}},"flags":""},{"id":"20","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.20/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":20}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":901000000}},"flags":""},{"id":"55","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.55/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":55}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":901000000}},"flags":""},{"id":"46","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.46/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":46}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":901000000}},"flags":""},{"id":"7","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.7/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":7}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":901000000}},"flags":""},{"id":"86","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.86/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":86}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":902000000}},"flags":""},{"id":"95","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.95/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":95}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":901000000}},"flags":""},{"id":"68","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.68/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":68}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":902000000}},"flags":""},{"id":"77","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.77/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":77}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":902000000}},"flags":""},{"id":"30","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.30/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":30}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":901000000}},"flags":""},{"id":"56","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.56/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":56}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":901000000}},"flags":""},{"id":"43","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.43/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":43}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":901000000}},"flags":""},{"id":"8","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.8/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":8}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":901000000}},"flags":""},{"id":"85","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.85/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":85}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":902000000}},"flags":""},{"id":"94","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.94/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":94}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":901000000}},"flags":""},{"id":"67","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.67/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":67}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":902000000}},"flags":""},{"id":"76","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.76/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":76}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":902000000}},"flags":""},{"id":"31","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.31/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":31}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":901000000}},"flags":""},{"id":"57","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.57/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":57}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":901000000}},"flags":""},{"id":"44","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.44/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":44}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":901000000}},"flags":""},{"id":"5","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.5/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":5}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":901000000}},"flags":""},{"id":"88","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.88/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":88}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":902000000}},"flags":""},{"id":"62","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.62/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":62}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":902000000}},"flags":""},{"id":"75","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.75/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":75}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":902000000}},"flags":""},{"id":"32","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.32/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":32}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":901000000}},"flags":""},{"id":"23","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.23/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":23}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":901000000}},"flags":""},{"id":"50","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.50/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":50}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":898000000}},"flags":""},{"id":"41","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.41/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":41}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":901000000}},"flags":""},{"id":"6","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.6/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":6}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":901000000}},"flags":""},{"id":"100","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.100/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":100}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":902000000}},"flags":""},{"id":"87","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.87/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":87}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":902000000}},"flags":""},{"id":"61","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.61/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":61}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":902000000}},"flags":""},{"id":"74","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.74/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":74}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":902000000}},"flags":""},{"id":"33","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.33/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":33}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":901000000}},"flags":""},{"id":"24","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.24/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":24}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":901000000}},"flags":""},{"id":"51","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.51/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":51}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":898000000}},"flags":""},{"id":"42","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.42/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":42}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":901000000}},"flags":""},{"id":"3","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.3/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":3}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":901000000}},"flags":""},{"id":"99","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.99/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":99}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":902000000}},"flags":""},{"id":"64","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.64/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":64}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":902000000}},"flags":""},{"id":"73","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.73/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":73}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":902000000}},"flags":""},{"id":"34","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.34/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":34}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":901000000}},"flags":""},{"id":"21","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.21/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":21}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":901000000}},"flags":""},{"id":"52","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.52/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":52}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":901000000}},"flags":""},{"id":"#UF$TABLE*0-3","table_id":0,"priority":0,"cookie_mask":"0","idle-timeout":0,"cookie":"10","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"output-action":{"max-length":65535,"output-node-connector":"CONTROLLER"}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"76","byte-count":"6295","duration":{"second":325,"nanosecond":773000000}},"flags":"SEND_FLOW_REM"},{"id":"4","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.4/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":4}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":901000000}},"flags":""},{"id":"89","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.89/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":89}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":902000000}},"flags":""},{"id":"98","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.98/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":98}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":902000000}},"flags":""},{"id":"63","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.63/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":63}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":902000000}},"flags":""},{"id":"72","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.72/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":72}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":902000000}},"flags":""},{"id":"35","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.35/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":35}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":901000000}},"flags":""},{"id":"22","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.22/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":22}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":901000000}},"flags":""},{"id":"53","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.53/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":53}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":901000000}},"flags":""},{"id":"40","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.40/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":40}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":901000000}},"flags":""},{"id":"37","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.37/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":37}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":901000000}},"flags":""},{"id":"28","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.28/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":28}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":901000000}},"flags":""},{"id":"36","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.36/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":36}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":901000000}},"flags":""},{"id":"27","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.27/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":27}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":901000000}},"flags":""},{"id":"39","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.39/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":39}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":901000000}},"flags":""},{"id":"26","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.26/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":26}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":901000000}},"flags":""},{"id":"38","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.38/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":38}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":901000000}},"flags":""},{"id":"25","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.25/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":25}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":901000000}},"flags":""},{"id":"69","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.69/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":69}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":902000000}},"flags":""},{"id":"59","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.59/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":59}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":901000000}},"flags":""},{"id":"58","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.58/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":58}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":901000000}},"flags":""},{"id":"49","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.49/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":49}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":901000000}},"flags":""},{"id":"48","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.48/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":48}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":901000000}},"flags":""},{"id":"29","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.29/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":29}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":901000000}},"flags":""},{"id":"47","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.47/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":47}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":901000000}},"flags":""},{"id":"18","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.18/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":18}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":902000000}},"flags":""},{"id":"19","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.19/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":19}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":902000000}},"flags":""},{"id":"14","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.14/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":14}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":902000000}},"flags":""},{"id":"15","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.15/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":15}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":902000000}},"flags":""},{"id":"1","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.1/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":1}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":144,"nanosecond":609000000}},"flags":""},{"id":"16","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.16/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":16}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":902000000}},"flags":""},{"id":"2","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.2/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":2}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":902000000}},"flags":""},{"id":"17","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.17/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":17}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":902000000}},"flags":""}],"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"94","active-flows":101,"packets-matched":"86"}},{"id":226,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":179,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":149,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":104,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":59,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":29,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":225,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":180,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":150,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":103,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":66,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":32,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":220,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":185,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":151,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":102,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":65,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":31,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":253,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":219,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":186,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":152,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":101,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":64,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":34,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":252,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":222,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":183,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":153,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":100,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":63,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":33,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":251,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":221,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":184,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":154,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":99,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":54,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":20,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":250,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":216,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":189,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":155,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":129,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":114,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":53,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":19,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":249,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":215,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":190,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":156,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":130,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":113,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":52,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":22,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":248,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":218,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":187,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":157,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":112,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":51,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":21,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":247,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":217,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":188,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":158,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":128,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":111,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":58,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":24,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":246,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":212,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":193,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":159,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":110,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":57,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":23,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":245,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":211,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":194,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":160,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":109,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":56,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":26,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":244,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":214,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":191,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":161,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":108,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":55,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":25,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":243,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":213,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":192,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":162,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":107,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":77,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":43,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":17,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":239,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":198,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":164,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":138,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":119,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":89,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":78,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":44,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":18,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":240,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":197,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":163,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":137,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":120,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":90,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":75,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":45,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":15,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":241,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":196,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":166,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":136,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":121,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":87,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":76,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":46,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":16,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":242,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":195,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":165,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":135,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":122,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":88,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":81,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":47,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":13,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":235,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":202,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":168,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":134,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":115,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":85,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":82,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":48,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":14,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":236,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":201,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":167,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":133,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":116,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":86,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":79,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":49,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":11,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":237,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":200,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":170,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":132,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":117,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":83,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":80,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":50,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":12,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":238,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":199,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":169,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":131,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":118,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":84,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":69,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":35,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":9,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":231,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":206,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":172,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":146,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":127,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":97,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":70,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":36,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":10,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":232,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":205,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":171,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":145,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":98,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":67,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":37,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":7,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":233,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":204,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":174,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":144,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":95,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":68,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":38,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":8,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":234,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":203,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":173,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":143,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":96,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":73,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":39,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":5,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":227,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":210,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":176,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":142,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":123,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":93,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":74,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":40,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":6,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":228,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":209,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":175,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":141,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":124,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":94,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":71,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":41,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":3,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":229,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":208,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":178,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":140,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":125,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":91,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":72,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":42,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":4,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":230,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":207,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":177,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":139,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":126,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":92,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}}],"opendaylight-group-statistics:group-features":{"max-groups":[4294967040],"group-types-supported":["opendaylight-group-types:group-all","opendaylight-group-types:group-ff","opendaylight-group-types:group-select","opendaylight-group-types:group-indirect"],"group-capabilities-supported":["opendaylight-group-types:chaining","opendaylight-group-types:select-weight","opendaylight-group-types:select-liveness"],"actions":[67076097]},"flow-node-inventory:manufacturer":"Nicira, Inc.","flow-node-inventory:description":"s3","flow-node-inventory:hardware":"Open vSwitch","flow-node-inventory:switch-features":{"max_tables":254,"capabilities":["flow-node-inventory:flow-feature-capability-table-stats","flow-node-inventory:flow-feature-capability-group-stats","flow-node-inventory:flow-feature-capability-queue-stats","flow-node-inventory:flow-feature-capability-flow-stats","flow-node-inventory:flow-feature-capability-port-stats"],"max_buffers":0},"flow-node-inventory:snapshot-gathering-status-start":{"begin":"2026-04-08T01:03:55.784Z"},"flow-node-inventory:software":"2.17.11","node-connector":[{"id":"openflow:3:LOCAL","flow-node-inventory:port-number":4294967294,"flow-node-inventory:hardware-address":"c2:87:c1:60:0d:43","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s3","flow-node-inventory:current-feature":"","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":0,"flow-node-inventory:state":{"live":false,"blocked":false,"link-down":true},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"PORT-DOWN","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"0","received":"0"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":331,"nanosecond":100000000},"bytes":{"transmitted":"0","received":"0"},"receive-crc-error":"0"}},{"id":"openflow:3:2","flow-node-inventory:port-number":2,"flow-node-inventory:hardware-address":"9e:72:98:8c:46:72","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s3-eth2","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"80","received":"84"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":331,"nanosecond":103000000},"bytes":{"transmitted":"6722","received":"7074"},"receive-crc-error":"0"}},{"id":"openflow:3:1","flow-node-inventory:port-number":1,"flow-node-inventory:hardware-address":"ca:ac:9a:41:42:1c","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s3-eth1","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"86","received":"12"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":331,"nanosecond":103000000},"bytes":{"transmitted":"7250","received":"936"},"receive-crc-error":"0"}}],"flow-node-inventory:ip-address":"10.30.170.192","flow-node-inventory:serial-number":"None","flow-node-inventory:group":[{"group-id":56,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":56000}}],"watch_group":56000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":56,"duration":{"second":326,"nanosecond":919000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":22,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":22000}}],"watch_group":22000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":22,"duration":{"second":326,"nanosecond":920000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":99,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":99000}}],"watch_group":99000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":99,"duration":{"second":326,"nanosecond":919000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":34000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":34000,"duration":{"second":329,"nanosecond":749000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":89000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":89000,"duration":{"second":329,"nanosecond":748000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":60000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":60000,"duration":{"second":329,"nanosecond":746000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":91000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":91000,"duration":{"second":329,"nanosecond":745000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":57,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":57000}}],"watch_group":57000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":57,"duration":{"second":326,"nanosecond":919000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":23,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":23000}}],"watch_group":23000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":23,"duration":{"second":326,"nanosecond":423000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":14000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":14000,"duration":{"second":329,"nanosecond":745000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":98,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":98000}}],"watch_group":98000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":98,"duration":{"second":326,"nanosecond":422000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":56000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":56000,"duration":{"second":329,"nanosecond":745000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":85000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":85000,"duration":{"second":329,"nanosecond":746000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":54,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":54000}}],"watch_group":54000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":54,"duration":{"second":326,"nanosecond":422000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":24,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":24000}}],"watch_group":24000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":24,"duration":{"second":326,"nanosecond":421000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":36000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":36000,"duration":{"second":329,"nanosecond":746000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":87000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":87000,"duration":{"second":329,"nanosecond":746000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":59000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":59000,"duration":{"second":329,"nanosecond":746000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":25000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":25000,"duration":{"second":329,"nanosecond":746000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":43000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":43000,"duration":{"second":329,"nanosecond":745000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":55,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":55000}}],"watch_group":55000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":55,"duration":{"second":326,"nanosecond":421000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":25,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":25000}}],"watch_group":25000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":25,"duration":{"second":329,"nanosecond":428000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":100,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":100000}}],"watch_group":100000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":100,"duration":{"second":326,"nanosecond":421000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":58000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":58000,"duration":{"second":329,"nanosecond":427000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":86000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":86000,"duration":{"second":329,"nanosecond":427000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":60,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":60000}}],"watch_group":60000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":60,"duration":{"second":329,"nanosecond":427000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":26,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":26000}}],"watch_group":26000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":26,"duration":{"second":326,"nanosecond":422000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":41000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":41000,"duration":{"second":329,"nanosecond":426000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":95,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":95000}}],"watch_group":95000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":95,"duration":{"second":326,"nanosecond":422000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":82000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":82000,"duration":{"second":329,"nanosecond":426000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":61,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":61000}}],"watch_group":61000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":61,"duration":{"second":326,"nanosecond":422000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":27,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":27000}}],"watch_group":27000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":27,"duration":{"second":326,"nanosecond":416000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":94,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":94000}}],"watch_group":94000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":94,"duration":{"second":326,"nanosecond":417000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":98000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":98000,"duration":{"second":329,"nanosecond":426000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":27000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":27000,"duration":{"second":329,"nanosecond":425000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":57000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":57000,"duration":{"second":329,"nanosecond":425000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":16000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":16000,"duration":{"second":329,"nanosecond":423000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":83000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":83000,"duration":{"second":329,"nanosecond":424000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":58,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":58000}}],"watch_group":58000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":58,"duration":{"second":328,"nanosecond":924000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":28,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":28000}}],"watch_group":28000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":28,"duration":{"second":326,"nanosecond":417000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":97,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":97000}}],"watch_group":97000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":97,"duration":{"second":326,"nanosecond":416000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":100000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":100000,"duration":{"second":328,"nanosecond":924000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":59,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":59000}}],"watch_group":59000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":59,"duration":{"second":328,"nanosecond":924000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":38000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":38000,"duration":{"second":328,"nanosecond":924000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":29,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":29000}}],"watch_group":29000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":29,"duration":{"second":326,"nanosecond":417000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":96,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":96000}}],"watch_group":96000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":96,"duration":{"second":326,"nanosecond":416000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":84000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":84000,"duration":{"second":328,"nanosecond":925000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":64,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":64000}}],"watch_group":64000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":64,"duration":{"second":326,"nanosecond":417000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":30,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":30000}}],"watch_group":30000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":30,"duration":{"second":326,"nanosecond":417000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":4,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":4000}}],"watch_group":4000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":4,"duration":{"second":326,"nanosecond":417000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":91,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":91000}}],"watch_group":91000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":91,"duration":{"second":328,"nanosecond":924000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":7000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":7000,"duration":{"second":328,"nanosecond":924000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":29000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":29000,"duration":{"second":328,"nanosecond":925000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":65,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":65000}}],"watch_group":65000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":65,"duration":{"second":326,"nanosecond":417000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":31,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":31000}}],"watch_group":31000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":31,"duration":{"second":326,"nanosecond":416000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":5,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":5000}}],"watch_group":5000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":5,"duration":{"second":326,"nanosecond":416000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":90,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":90000}}],"watch_group":90000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":90,"duration":{"second":326,"nanosecond":416000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":18000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":18000,"duration":{"second":328,"nanosecond":923000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":62,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":62000}}],"watch_group":62000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":62,"duration":{"second":326,"nanosecond":417000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":65000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":65000,"duration":{"second":328,"nanosecond":924000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":32,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":32000}}],"watch_group":32000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":32,"duration":{"second":326,"nanosecond":417000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":2,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":2000}}],"watch_group":2000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":2,"duration":{"second":326,"nanosecond":417000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":93,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":93000}}],"watch_group":93000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":93,"duration":{"second":326,"nanosecond":417000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":64000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":64000,"duration":{"second":328,"nanosecond":923000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":63,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":63000}}],"watch_group":63000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":63,"duration":{"second":326,"nanosecond":417000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":33,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":33000}}],"watch_group":33000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":33,"duration":{"second":326,"nanosecond":416000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":3,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":3000}}],"watch_group":3000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":3,"duration":{"second":326,"nanosecond":417000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":80000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":80000,"duration":{"second":328,"nanosecond":921000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":9000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":9000,"duration":{"second":328,"nanosecond":921000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":92,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":92000}}],"watch_group":92000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":92,"duration":{"second":326,"nanosecond":416000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":5000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":5000,"duration":{"second":328,"nanosecond":922000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":20000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":20000,"duration":{"second":328,"nanosecond":922000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":81000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":81000,"duration":{"second":328,"nanosecond":922000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":97000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":97000,"duration":{"second":328,"nanosecond":921000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":31000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":31000,"duration":{"second":328,"nanosecond":922000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":68,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":68000}}],"watch_group":68000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":68,"duration":{"second":326,"nanosecond":417000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":11000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":11000,"duration":{"second":328,"nanosecond":921000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":34,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":34000}}],"watch_group":34000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":34,"duration":{"second":328,"nanosecond":922000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":78000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":78000,"duration":{"second":328,"nanosecond":920000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":87,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":87000}}],"watch_group":87000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":87,"duration":{"second":328,"nanosecond":920000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":93000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":93000,"duration":{"second":328,"nanosecond":921000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":63000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":63000,"duration":{"second":328,"nanosecond":920000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":69,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":69000}}],"watch_group":69000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":69,"duration":{"second":326,"nanosecond":417000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":35,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":35000}}],"watch_group":35000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":35,"duration":{"second":326,"nanosecond":416000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":1,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":1000}}],"watch_group":1000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":1,"duration":{"second":144,"nanosecond":804000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":33000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":33000,"duration":{"second":328,"nanosecond":917000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":79000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":79000,"duration":{"second":328,"nanosecond":917000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":86,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":86000}}],"watch_group":86000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":86,"duration":{"second":328,"nanosecond":916000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":62000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":62000,"duration":{"second":328,"nanosecond":917000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":66,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":66000}}],"watch_group":66000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":66,"duration":{"second":326,"nanosecond":417000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":77000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":77000,"duration":{"second":328,"nanosecond":916000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":36,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":36000}}],"watch_group":36000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":36,"duration":{"second":328,"nanosecond":916000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":89,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":89000}}],"watch_group":89000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":89,"duration":{"second":328,"nanosecond":916000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":22000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":22000,"duration":{"second":328,"nanosecond":917000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":95000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":95000,"duration":{"second":328,"nanosecond":917000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":67,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":67000}}],"watch_group":67000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":67,"duration":{"second":326,"nanosecond":416000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":37,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":37000}}],"watch_group":37000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":37,"duration":{"second":326,"nanosecond":416000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":1000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":1000,"duration":{"second":145,"nanosecond":13000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":88,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":88000}}],"watch_group":88000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":88,"duration":{"second":326,"nanosecond":416000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":61000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":61000,"duration":{"second":328,"nanosecond":916000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":3000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":3000,"duration":{"second":328,"nanosecond":916000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":73,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":73000}}],"watch_group":73000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":73,"duration":{"second":326,"nanosecond":416000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":39,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":39000}}],"watch_group":39000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":39,"duration":{"second":326,"nanosecond":412000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":13,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":13000}}],"watch_group":13000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":13,"duration":{"second":326,"nanosecond":411000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":74000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":74000,"duration":{"second":328,"nanosecond":916000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":15000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":15000,"duration":{"second":328,"nanosecond":915000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":44000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":44000,"duration":{"second":328,"nanosecond":915000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":45000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":45000,"duration":{"second":328,"nanosecond":916000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":68000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":68000,"duration":{"second":328,"nanosecond":916000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":72,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":72000}}],"watch_group":72000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":72,"duration":{"second":326,"nanosecond":411000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":38,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":38000}}],"watch_group":38000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":38,"duration":{"second":328,"nanosecond":426000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":75000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":75000,"duration":{"second":328,"nanosecond":426000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":12,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":12000}}],"watch_group":12000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":12,"duration":{"second":326,"nanosecond":411000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":35000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":35000,"duration":{"second":328,"nanosecond":425000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":24000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":24000,"duration":{"second":328,"nanosecond":425000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":90000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":90000,"duration":{"second":328,"nanosecond":426000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":71,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":71000}}],"watch_group":71000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":71,"duration":{"second":326,"nanosecond":411000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":41,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":41000}}],"watch_group":41000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":41,"duration":{"second":328,"nanosecond":425000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":42000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":42000,"duration":{"second":328,"nanosecond":424000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":11,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":11000}}],"watch_group":11000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":11,"duration":{"second":328,"nanosecond":425000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":92000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":92000,"duration":{"second":328,"nanosecond":423000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":46000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":46000,"duration":{"second":328,"nanosecond":423000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":67000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":67000,"duration":{"second":328,"nanosecond":424000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":70,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":70000}}],"watch_group":70000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":70,"duration":{"second":326,"nanosecond":411000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":76000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":76000,"duration":{"second":328,"nanosecond":422000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":40,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":40000}}],"watch_group":40000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":40,"duration":{"second":326,"nanosecond":412000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":13000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":13000,"duration":{"second":328,"nanosecond":423000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":10,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":10000}}],"watch_group":10000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":10,"duration":{"second":326,"nanosecond":411000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":88000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":88000,"duration":{"second":328,"nanosecond":422000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":47000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":47000,"duration":{"second":328,"nanosecond":423000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":66000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":66000,"duration":{"second":328,"nanosecond":423000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":77,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":77000}}],"watch_group":77000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":77,"duration":{"second":328,"nanosecond":423000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":43,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":43000}}],"watch_group":43000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":43,"duration":{"second":328,"nanosecond":421000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":9,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":9000}}],"watch_group":9000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":9,"duration":{"second":328,"nanosecond":422000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":99000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":99000,"duration":{"second":328,"nanosecond":421000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":26000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":26000,"duration":{"second":328,"nanosecond":422000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":70000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":70000,"duration":{"second":328,"nanosecond":420000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":76,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":76000}}],"watch_group":76000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":76,"duration":{"second":327,"nanosecond":925000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":42,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":42000}}],"watch_group":42000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":42,"duration":{"second":327,"nanosecond":923000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":8,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":8000}}],"watch_group":8000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":8,"duration":{"second":326,"nanosecond":411000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":37000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":37000,"duration":{"second":327,"nanosecond":924000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":49000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":49000,"duration":{"second":327,"nanosecond":924000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":71000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":71000,"duration":{"second":327,"nanosecond":924000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":48000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":48000,"duration":{"second":327,"nanosecond":923000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":75,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":75000}}],"watch_group":75000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":75,"duration":{"second":327,"nanosecond":919000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":45,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":45000}}],"watch_group":45000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":45,"duration":{"second":327,"nanosecond":918000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":7,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":7000}}],"watch_group":7000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":7,"duration":{"second":327,"nanosecond":918000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":39000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":39000,"duration":{"second":327,"nanosecond":919000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":73000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":73000,"duration":{"second":327,"nanosecond":919000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":69000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":69000,"duration":{"second":327,"nanosecond":919000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":17000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":17000,"duration":{"second":327,"nanosecond":918000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":28000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":28000,"duration":{"second":327,"nanosecond":918000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":74,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":74000}}],"watch_group":74000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":74,"duration":{"second":327,"nanosecond":919000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":44,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":44000}}],"watch_group":44000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":44,"duration":{"second":327,"nanosecond":919000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":6,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":6000}}],"watch_group":6000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":6,"duration":{"second":326,"nanosecond":412000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":40000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":40000,"duration":{"second":327,"nanosecond":918000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":81,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":81000}}],"watch_group":81000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":81,"duration":{"second":327,"nanosecond":918000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":47,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":47000}}],"watch_group":47000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":47,"duration":{"second":327,"nanosecond":918000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":21,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":21000}}],"watch_group":21000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":21,"duration":{"second":326,"nanosecond":412000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":8000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":8000,"duration":{"second":327,"nanosecond":919000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":19000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":19000,"duration":{"second":327,"nanosecond":918000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":96000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":96000,"duration":{"second":327,"nanosecond":918000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":80,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":80000}}],"watch_group":80000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":80,"duration":{"second":327,"nanosecond":917000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":46,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":46000}}],"watch_group":46000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":46,"duration":{"second":327,"nanosecond":917000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":20,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":20000}}],"watch_group":20000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":20,"duration":{"second":327,"nanosecond":918000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":52000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":52000,"duration":{"second":327,"nanosecond":918000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":6000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":6000,"duration":{"second":327,"nanosecond":918000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":79,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":79000}}],"watch_group":79000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":79,"duration":{"second":327,"nanosecond":917000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":49,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":49000}}],"watch_group":49000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":49,"duration":{"second":327,"nanosecond":425000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":19,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":19000}}],"watch_group":19000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":19,"duration":{"second":327,"nanosecond":424000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":50000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":50000,"duration":{"second":327,"nanosecond":424000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":72000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":72000,"duration":{"second":327,"nanosecond":424000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":30000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":30000,"duration":{"second":327,"nanosecond":424000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":78,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":78000}}],"watch_group":78000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":78,"duration":{"second":327,"nanosecond":424000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":48,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":48000}}],"watch_group":48000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":48,"duration":{"second":327,"nanosecond":422000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":18,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":18000}}],"watch_group":18000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":18,"duration":{"second":327,"nanosecond":422000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":51000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":51000,"duration":{"second":327,"nanosecond":422000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":85,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":85000}}],"watch_group":85000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":85,"duration":{"second":327,"nanosecond":423000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":55000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":55000,"duration":{"second":327,"nanosecond":423000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":51,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":51000}}],"watch_group":51000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":51,"duration":{"second":326,"nanosecond":924000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":17,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":17000}}],"watch_group":17000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":17,"duration":{"second":326,"nanosecond":924000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":21000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":21000,"duration":{"second":326,"nanosecond":923000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":4000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":4000,"duration":{"second":326,"nanosecond":924000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":84,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":84000}}],"watch_group":84000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":84,"duration":{"second":326,"nanosecond":924000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":50,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":50000}}],"watch_group":50000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":50,"duration":{"second":326,"nanosecond":924000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":16,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":16000}}],"watch_group":16000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":16,"duration":{"second":326,"nanosecond":923000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":10000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":10000,"duration":{"second":326,"nanosecond":923000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":54000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":54000,"duration":{"second":326,"nanosecond":922000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":83,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":83000}}],"watch_group":83000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":83,"duration":{"second":326,"nanosecond":922000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":32000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":32000,"duration":{"second":326,"nanosecond":923000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":53,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":53000}}],"watch_group":53000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":53,"duration":{"second":326,"nanosecond":412000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":15,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":15000}}],"watch_group":15000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":15,"duration":{"second":326,"nanosecond":922000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":2000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":2000,"duration":{"second":326,"nanosecond":921000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":82,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":82000}}],"watch_group":82000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":82,"duration":{"second":326,"nanosecond":922000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":52,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":52000}}],"watch_group":52000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":52,"duration":{"second":326,"nanosecond":921000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":14,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":14000}}],"watch_group":14000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":14,"duration":{"second":326,"nanosecond":921000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":53000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":53000,"duration":{"second":326,"nanosecond":921000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":12000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":12000,"duration":{"second":326,"nanosecond":921000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":23000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":23000,"duration":{"second":326,"nanosecond":919000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":94000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":94000,"duration":{"second":326,"nanosecond":919000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}}],"flow-node-inventory:snapshot-gathering-status-end":{"succeeded":true,"end":"2026-04-08T01:03:55.817Z"}},{"id":"openflow:1","flow-node-inventory:port-number":54934,"flow-node-inventory:table":[{"id":62,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":28,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":2,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":224,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":181,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":147,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":106,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":61,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":27,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":1,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":223,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":182,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":148,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":105,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":60,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":30,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":0,"flow":[{"id":"71","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.71/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":71}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":886000000}},"flags":""},{"id":"11","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.11/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":11}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":885000000}},"flags":""},{"id":"70","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.70/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":70}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":886000000}},"flags":""},{"id":"10","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.10/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":10}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":885000000}},"flags":""},{"id":"60","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.60/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":60}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":886000000}},"flags":""},{"id":"13","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.13/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":13}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":885000000}},"flags":""},{"id":"12","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.12/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":12}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":885000000}},"flags":""},{"id":"80","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.80/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":80}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":886000000}},"flags":""},{"id":"93","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.93/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":93}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":885000000}},"flags":""},{"id":"92","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.92/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":92}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":885000000}},"flags":""},{"id":"82","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.82/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":82}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":886000000}},"flags":""},{"id":"91","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.91/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":91}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":885000000}},"flags":""},{"id":"81","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.81/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":81}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":886000000}},"flags":""},{"id":"90","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.90/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":90}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":885000000}},"flags":""},{"id":"9","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.9/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":9}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":885000000}},"flags":""},{"id":"84","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.84/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":84}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":885000000}},"flags":""},{"id":"97","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.97/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":97}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":885000000}},"flags":""},{"id":"66","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.66/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":66}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":886000000}},"flags":""},{"id":"79","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.79/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":79}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":886000000}},"flags":""},{"id":"54","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.54/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":54}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":884000000}},"flags":""},{"id":"45","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.45/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":45}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":884000000}},"flags":""},{"id":"83","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.83/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":83}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":885000000}},"flags":""},{"id":"96","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.96/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":96}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":885000000}},"flags":""},{"id":"65","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.65/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":65}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":886000000}},"flags":""},{"id":"78","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.78/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":78}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":886000000}},"flags":""},{"id":"20","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.20/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":20}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":885000000}},"flags":""},{"id":"55","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.55/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":55}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":884000000}},"flags":""},{"id":"46","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.46/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":46}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":884000000}},"flags":""},{"id":"7","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.7/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":7}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":885000000}},"flags":""},{"id":"86","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.86/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":86}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":886000000}},"flags":""},{"id":"95","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.95/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":95}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":885000000}},"flags":""},{"id":"68","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.68/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":68}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":886000000}},"flags":""},{"id":"77","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.77/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":77}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":886000000}},"flags":""},{"id":"30","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.30/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":30}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":885000000}},"flags":""},{"id":"56","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.56/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":56}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":884000000}},"flags":""},{"id":"43","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.43/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":43}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":884000000}},"flags":""},{"id":"8","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.8/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":8}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":885000000}},"flags":""},{"id":"85","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.85/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":85}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":886000000}},"flags":""},{"id":"94","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.94/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":94}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":885000000}},"flags":""},{"id":"67","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.67/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":67}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":886000000}},"flags":""},{"id":"76","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.76/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":76}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":886000000}},"flags":""},{"id":"31","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.31/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":31}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":885000000}},"flags":""},{"id":"57","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.57/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":57}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":884000000}},"flags":""},{"id":"44","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.44/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":44}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":884000000}},"flags":""},{"id":"5","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.5/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":5}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":885000000}},"flags":""},{"id":"88","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.88/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":88}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":886000000}},"flags":""},{"id":"62","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.62/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":62}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":886000000}},"flags":""},{"id":"75","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.75/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":75}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":886000000}},"flags":""},{"id":"32","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.32/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":32}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":885000000}},"flags":""},{"id":"23","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.23/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":23}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":885000000}},"flags":""},{"id":"50","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.50/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":50}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":884000000}},"flags":""},{"id":"41","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.41/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":41}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":884000000}},"flags":""},{"id":"#UF$TABLE*0-1","table_id":0,"priority":0,"cookie_mask":"0","idle-timeout":0,"cookie":"10","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"output-action":{"max-length":65535,"output-node-connector":"CONTROLLER"}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"77","byte-count":"6365","duration":{"second":325,"nanosecond":775000000}},"flags":"SEND_FLOW_REM"},{"id":"6","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.6/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":6}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":885000000}},"flags":""},{"id":"100","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.100/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":100}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":886000000}},"flags":""},{"id":"87","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.87/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":87}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":886000000}},"flags":""},{"id":"61","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.61/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":61}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":886000000}},"flags":""},{"id":"74","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.74/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":74}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":886000000}},"flags":""},{"id":"33","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.33/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":33}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":885000000}},"flags":""},{"id":"24","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.24/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":24}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":885000000}},"flags":""},{"id":"51","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.51/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":51}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":884000000}},"flags":""},{"id":"42","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.42/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":42}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":884000000}},"flags":""},{"id":"3","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.3/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":3}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":885000000}},"flags":""},{"id":"99","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.99/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":99}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":885000000}},"flags":""},{"id":"64","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.64/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":64}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":886000000}},"flags":""},{"id":"73","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.73/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":73}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":886000000}},"flags":""},{"id":"34","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.34/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":34}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":885000000}},"flags":""},{"id":"21","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.21/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":21}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":885000000}},"flags":""},{"id":"52","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.52/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":52}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":884000000}},"flags":""},{"id":"4","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.4/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":4}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":885000000}},"flags":""},{"id":"89","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.89/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":89}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":886000000}},"flags":""},{"id":"98","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.98/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":98}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":885000000}},"flags":""},{"id":"63","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.63/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":63}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":886000000}},"flags":""},{"id":"72","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.72/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":72}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":886000000}},"flags":""},{"id":"35","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.35/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":35}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":885000000}},"flags":""},{"id":"22","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.22/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":22}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":885000000}},"flags":""},{"id":"53","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.53/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":53}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":884000000}},"flags":""},{"id":"40","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.40/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":40}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":884000000}},"flags":""},{"id":"37","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.37/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":37}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":885000000}},"flags":""},{"id":"28","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.28/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":28}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":885000000}},"flags":""},{"id":"36","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.36/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":36}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":885000000}},"flags":""},{"id":"27","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.27/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":27}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":885000000}},"flags":""},{"id":"39","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.39/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":39}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":885000000}},"flags":""},{"id":"26","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.26/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":26}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":885000000}},"flags":""},{"id":"38","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.38/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":38}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":885000000}},"flags":""},{"id":"25","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.25/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":25}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":885000000}},"flags":""},{"id":"69","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.69/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":69}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":886000000}},"flags":""},{"id":"59","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.59/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":59}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":884000000}},"flags":""},{"id":"58","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.58/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":58}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":884000000}},"flags":""},{"id":"49","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.49/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":49}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":885000000}},"flags":""},{"id":"48","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.48/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":48}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":884000000}},"flags":""},{"id":"29","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.29/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":29}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":885000000}},"flags":""},{"id":"47","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.47/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":47}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":884000000}},"flags":""},{"id":"18","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.18/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":18}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":885000000}},"flags":""},{"id":"19","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.19/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":19}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":885000000}},"flags":""},{"id":"14","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.14/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":14}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":885000000}},"flags":""},{"id":"15","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.15/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":15}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":885000000}},"flags":""},{"id":"1","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.1/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":1}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":145,"nanosecond":862000000}},"flags":""},{"id":"16","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.16/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":16}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":885000000}},"flags":""},{"id":"2","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.2/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":2}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":885000000}},"flags":""},{"id":"17","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.17/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":17}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":885000000}},"flags":""}],"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"94","active-flows":101,"packets-matched":"87"}},{"id":226,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":179,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":149,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":104,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":59,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":29,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":225,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":180,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":150,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":103,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":66,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":32,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":220,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":185,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":151,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":102,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":65,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":31,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":253,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":219,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":186,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":152,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":101,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":64,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":34,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":252,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":222,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":183,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":153,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":100,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":63,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":33,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":251,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":221,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":184,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":154,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":99,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":54,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":20,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":250,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":216,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":189,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":155,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":129,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":114,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":53,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":19,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":249,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":215,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":190,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":156,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":130,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":113,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":52,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":22,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":248,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":218,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":187,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":157,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":112,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":51,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":21,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":247,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":217,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":188,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":158,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":128,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":111,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":58,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":24,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":246,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":212,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":193,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":159,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":110,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":57,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":23,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":245,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":211,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":194,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":160,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":109,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":56,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":26,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":244,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":214,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":191,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":161,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":108,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":55,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":25,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":243,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":213,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":192,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":162,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":107,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":77,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":43,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":17,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":239,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":198,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":164,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":138,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":119,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":89,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":78,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":44,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":18,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":240,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":197,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":163,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":137,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":120,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":90,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":75,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":45,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":15,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":241,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":196,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":166,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":136,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":121,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":87,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":76,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":46,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":16,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":242,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":195,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":165,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":135,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":122,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":88,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":81,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":47,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":13,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":235,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":202,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":168,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":134,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":115,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":85,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":82,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":48,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":14,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":236,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":201,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":167,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":133,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":116,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":86,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":79,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":49,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":11,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":237,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":200,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":170,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":132,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":117,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":83,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":80,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":50,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":12,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":238,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":199,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":169,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":131,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":118,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":84,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":69,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":35,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":9,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":231,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":206,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":172,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":146,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":127,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":97,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":70,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":36,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":10,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":232,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":205,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":171,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":145,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":98,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":67,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":37,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":7,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":233,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":204,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":174,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":144,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":95,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":68,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":38,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":8,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":234,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":203,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":173,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":143,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":96,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":73,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":39,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":5,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":227,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":210,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":176,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":142,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":123,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":93,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":74,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":40,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":6,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":228,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":209,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":175,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":141,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":124,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":94,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":71,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":41,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":3,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":229,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":208,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":178,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":140,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":125,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":91,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":72,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":42,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":4,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":230,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":207,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":177,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":139,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":126,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":92,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}}],"opendaylight-group-statistics:group-features":{"max-groups":[4294967040],"group-types-supported":["opendaylight-group-types:group-all","opendaylight-group-types:group-ff","opendaylight-group-types:group-select","opendaylight-group-types:group-indirect"],"group-capabilities-supported":["opendaylight-group-types:chaining","opendaylight-group-types:select-weight","opendaylight-group-types:select-liveness"],"actions":[67076097]},"flow-node-inventory:manufacturer":"Nicira, Inc.","flow-node-inventory:description":"s1","flow-node-inventory:hardware":"Open vSwitch","flow-node-inventory:switch-features":{"max_tables":254,"capabilities":["flow-node-inventory:flow-feature-capability-table-stats","flow-node-inventory:flow-feature-capability-group-stats","flow-node-inventory:flow-feature-capability-queue-stats","flow-node-inventory:flow-feature-capability-flow-stats","flow-node-inventory:flow-feature-capability-port-stats"],"max_buffers":0},"flow-node-inventory:snapshot-gathering-status-start":{"begin":"2026-04-08T01:03:55.790Z"},"flow-node-inventory:software":"2.17.11","node-connector":[{"id":"openflow:1:1","flow-node-inventory:port-number":1,"flow-node-inventory:hardware-address":"92:f4:e8:ea:c6:ad","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s1-eth1","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"86","received":"12"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":331,"nanosecond":107000000},"bytes":{"transmitted":"7250","received":"936"},"receive-crc-error":"0"}},{"id":"openflow:1:LOCAL","flow-node-inventory:port-number":4294967294,"flow-node-inventory:hardware-address":"e6:45:d0:5b:c7:49","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s1","flow-node-inventory:current-feature":"","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":0,"flow-node-inventory:state":{"live":false,"blocked":false,"link-down":true},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"PORT-DOWN","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"0","received":"0"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":331,"nanosecond":103000000},"bytes":{"transmitted":"0","received":"0"},"receive-crc-error":"0"}},{"id":"openflow:1:2","flow-node-inventory:port-number":2,"flow-node-inventory:hardware-address":"42:46:a8:4b:8b:86","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s1-eth2","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"80","received":"84"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":331,"nanosecond":107000000},"bytes":{"transmitted":"6722","received":"7074"},"receive-crc-error":"0"}}],"flow-node-inventory:ip-address":"10.30.170.192","flow-node-inventory:serial-number":"None","flow-node-inventory:group":[{"group-id":56,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":56000}}],"watch_group":56000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":56,"duration":{"second":327,"nanosecond":60000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":22,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":22000}}],"watch_group":22000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":22,"duration":{"second":327,"nanosecond":60000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":99,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":99000}}],"watch_group":99000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":99,"duration":{"second":327,"nanosecond":60000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":34000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":34000,"duration":{"second":329,"nanosecond":753000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":89000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":89000,"duration":{"second":329,"nanosecond":753000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":60000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":60000,"duration":{"second":329,"nanosecond":753000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":91000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":91000,"duration":{"second":329,"nanosecond":753000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":57,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":57000}}],"watch_group":57000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":57,"duration":{"second":327,"nanosecond":60000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":23,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":23000}}],"watch_group":23000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":23,"duration":{"second":326,"nanosecond":560000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":14000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":14000,"duration":{"second":329,"nanosecond":753000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":98,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":98000}}],"watch_group":98000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":98,"duration":{"second":326,"nanosecond":560000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":56000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":56000,"duration":{"second":329,"nanosecond":753000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":85000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":85000,"duration":{"second":329,"nanosecond":753000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":54,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":54000}}],"watch_group":54000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":54,"duration":{"second":326,"nanosecond":560000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":24,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":24000}}],"watch_group":24000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":24,"duration":{"second":326,"nanosecond":560000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":36000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":36000,"duration":{"second":329,"nanosecond":753000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":87000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":87000,"duration":{"second":329,"nanosecond":753000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":59000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":59000,"duration":{"second":329,"nanosecond":753000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":25000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":25000,"duration":{"second":329,"nanosecond":753000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":43000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":43000,"duration":{"second":329,"nanosecond":753000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":55,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":55000}}],"watch_group":55000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":55,"duration":{"second":326,"nanosecond":560000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":25,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":25000}}],"watch_group":25000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":25,"duration":{"second":329,"nanosecond":567000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":100,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":100000}}],"watch_group":100000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":100,"duration":{"second":326,"nanosecond":560000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":58000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":58000,"duration":{"second":329,"nanosecond":564000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":86000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":86000,"duration":{"second":329,"nanosecond":564000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":60,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":60000}}],"watch_group":60000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":60,"duration":{"second":329,"nanosecond":564000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":26,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":26000}}],"watch_group":26000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":26,"duration":{"second":326,"nanosecond":560000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":41000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":41000,"duration":{"second":329,"nanosecond":564000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":95,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":95000}}],"watch_group":95000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":95,"duration":{"second":326,"nanosecond":560000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":82000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":82000,"duration":{"second":329,"nanosecond":564000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":61,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":61000}}],"watch_group":61000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":61,"duration":{"second":326,"nanosecond":560000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":27,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":27000}}],"watch_group":27000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":27,"duration":{"second":326,"nanosecond":560000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":94,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":94000}}],"watch_group":94000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":94,"duration":{"second":326,"nanosecond":560000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":98000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":98000,"duration":{"second":329,"nanosecond":564000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":27000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":27000,"duration":{"second":329,"nanosecond":564000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":57000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":57000,"duration":{"second":329,"nanosecond":564000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":16000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":16000,"duration":{"second":329,"nanosecond":564000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":83000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":83000,"duration":{"second":329,"nanosecond":564000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":58,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":58000}}],"watch_group":58000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":58,"duration":{"second":329,"nanosecond":61000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":28,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":28000}}],"watch_group":28000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":28,"duration":{"second":326,"nanosecond":560000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":97,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":97000}}],"watch_group":97000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":97,"duration":{"second":326,"nanosecond":560000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":100000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":100000,"duration":{"second":329,"nanosecond":61000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":59,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":59000}}],"watch_group":59000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":59,"duration":{"second":329,"nanosecond":61000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":38000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":38000,"duration":{"second":329,"nanosecond":61000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":29,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":29000}}],"watch_group":29000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":29,"duration":{"second":326,"nanosecond":560000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":96,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":96000}}],"watch_group":96000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":96,"duration":{"second":326,"nanosecond":560000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":84000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":84000,"duration":{"second":329,"nanosecond":61000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":64,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":64000}}],"watch_group":64000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":64,"duration":{"second":326,"nanosecond":560000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":30,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":30000}}],"watch_group":30000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":30,"duration":{"second":326,"nanosecond":560000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":4,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":4000}}],"watch_group":4000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":4,"duration":{"second":326,"nanosecond":560000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":91,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":91000}}],"watch_group":91000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":91,"duration":{"second":329,"nanosecond":61000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":7000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":7000,"duration":{"second":329,"nanosecond":61000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":29000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":29000,"duration":{"second":329,"nanosecond":61000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":65,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":65000}}],"watch_group":65000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":65,"duration":{"second":326,"nanosecond":560000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":31,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":31000}}],"watch_group":31000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":31,"duration":{"second":326,"nanosecond":560000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":5,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":5000}}],"watch_group":5000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":5,"duration":{"second":326,"nanosecond":560000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":90,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":90000}}],"watch_group":90000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":90,"duration":{"second":326,"nanosecond":560000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":18000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":18000,"duration":{"second":329,"nanosecond":61000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":62,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":62000}}],"watch_group":62000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":62,"duration":{"second":326,"nanosecond":560000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":65000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":65000,"duration":{"second":329,"nanosecond":61000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":32,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":32000}}],"watch_group":32000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":32,"duration":{"second":326,"nanosecond":560000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":2,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":2000}}],"watch_group":2000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":2,"duration":{"second":326,"nanosecond":560000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":93,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":93000}}],"watch_group":93000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":93,"duration":{"second":326,"nanosecond":560000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":64000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":64000,"duration":{"second":329,"nanosecond":61000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":63,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":63000}}],"watch_group":63000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":63,"duration":{"second":326,"nanosecond":560000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":33,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":33000}}],"watch_group":33000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":33,"duration":{"second":326,"nanosecond":560000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":3,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":3000}}],"watch_group":3000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":3,"duration":{"second":326,"nanosecond":555000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":80000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":80000,"duration":{"second":329,"nanosecond":61000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":9000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":9000,"duration":{"second":329,"nanosecond":61000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":92,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":92000}}],"watch_group":92000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":92,"duration":{"second":326,"nanosecond":555000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":5000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":5000,"duration":{"second":329,"nanosecond":61000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":20000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":20000,"duration":{"second":329,"nanosecond":61000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":81000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":81000,"duration":{"second":329,"nanosecond":61000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":97000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":97000,"duration":{"second":329,"nanosecond":61000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":31000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":31000,"duration":{"second":329,"nanosecond":61000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":68,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":68000}}],"watch_group":68000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":68,"duration":{"second":326,"nanosecond":555000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":11000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":11000,"duration":{"second":329,"nanosecond":61000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":34,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":34000}}],"watch_group":34000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":34,"duration":{"second":329,"nanosecond":61000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":78000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":78000,"duration":{"second":329,"nanosecond":61000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":87,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":87000}}],"watch_group":87000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":87,"duration":{"second":329,"nanosecond":61000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":93000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":93000,"duration":{"second":329,"nanosecond":61000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":63000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":63000,"duration":{"second":329,"nanosecond":61000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":69,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":69000}}],"watch_group":69000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":69,"duration":{"second":326,"nanosecond":555000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":35,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":35000}}],"watch_group":35000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":35,"duration":{"second":326,"nanosecond":555000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":1,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":1000}}],"watch_group":1000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":1,"duration":{"second":146,"nanosecond":66000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":33000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":33000,"duration":{"second":329,"nanosecond":61000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":79000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":79000,"duration":{"second":329,"nanosecond":59000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":86,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":86000}}],"watch_group":86000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":86,"duration":{"second":329,"nanosecond":59000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":62000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":62000,"duration":{"second":329,"nanosecond":59000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":66,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":66000}}],"watch_group":66000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":66,"duration":{"second":326,"nanosecond":555000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":77000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":77000,"duration":{"second":329,"nanosecond":59000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":36,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":36000}}],"watch_group":36000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":36,"duration":{"second":329,"nanosecond":59000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":89,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":89000}}],"watch_group":89000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":89,"duration":{"second":329,"nanosecond":58000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":22000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":22000,"duration":{"second":329,"nanosecond":58000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":95000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":95000,"duration":{"second":329,"nanosecond":58000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":67,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":67000}}],"watch_group":67000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":67,"duration":{"second":326,"nanosecond":555000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":37,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":37000}}],"watch_group":37000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":37,"duration":{"second":326,"nanosecond":555000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":1000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":1000,"duration":{"second":146,"nanosecond":290000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":88,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":88000}}],"watch_group":88000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":88,"duration":{"second":326,"nanosecond":555000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":61000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":61000,"duration":{"second":329,"nanosecond":58000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":3000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":3000,"duration":{"second":329,"nanosecond":57000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":73,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":73000}}],"watch_group":73000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":73,"duration":{"second":326,"nanosecond":555000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":39,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":39000}}],"watch_group":39000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":39,"duration":{"second":326,"nanosecond":555000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":13,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":13000}}],"watch_group":13000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":13,"duration":{"second":326,"nanosecond":555000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":74000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":74000,"duration":{"second":329,"nanosecond":57000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":15000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":15000,"duration":{"second":329,"nanosecond":57000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":44000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":44000,"duration":{"second":329,"nanosecond":57000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":45000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":45000,"duration":{"second":329,"nanosecond":57000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":68000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":68000,"duration":{"second":329,"nanosecond":57000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":72,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":72000}}],"watch_group":72000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":72,"duration":{"second":326,"nanosecond":555000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":38,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":38000}}],"watch_group":38000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":38,"duration":{"second":328,"nanosecond":569000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":75000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":75000,"duration":{"second":328,"nanosecond":569000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":12,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":12000}}],"watch_group":12000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":12,"duration":{"second":326,"nanosecond":555000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":35000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":35000,"duration":{"second":328,"nanosecond":569000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":24000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":24000,"duration":{"second":328,"nanosecond":568000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":90000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":90000,"duration":{"second":328,"nanosecond":568000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":71,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":71000}}],"watch_group":71000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":71,"duration":{"second":326,"nanosecond":555000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":41,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":41000}}],"watch_group":41000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":41,"duration":{"second":328,"nanosecond":568000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":42000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":42000,"duration":{"second":328,"nanosecond":568000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":11,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":11000}}],"watch_group":11000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":11,"duration":{"second":328,"nanosecond":567000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":92000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":92000,"duration":{"second":328,"nanosecond":567000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":46000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":46000,"duration":{"second":328,"nanosecond":567000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":67000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":67000,"duration":{"second":328,"nanosecond":567000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":70,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":70000}}],"watch_group":70000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":70,"duration":{"second":326,"nanosecond":555000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":76000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":76000,"duration":{"second":328,"nanosecond":566000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":40,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":40000}}],"watch_group":40000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":40,"duration":{"second":326,"nanosecond":555000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":13000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":13000,"duration":{"second":328,"nanosecond":563000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":10,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":10000}}],"watch_group":10000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":10,"duration":{"second":326,"nanosecond":555000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":88000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":88000,"duration":{"second":328,"nanosecond":563000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":47000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":47000,"duration":{"second":328,"nanosecond":563000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":66000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":66000,"duration":{"second":328,"nanosecond":562000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":77,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":77000}}],"watch_group":77000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":77,"duration":{"second":328,"nanosecond":562000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":43,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":43000}}],"watch_group":43000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":43,"duration":{"second":328,"nanosecond":562000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":9,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":9000}}],"watch_group":9000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":9,"duration":{"second":328,"nanosecond":562000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":99000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":99000,"duration":{"second":328,"nanosecond":562000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":26000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":26000,"duration":{"second":328,"nanosecond":562000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":70000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":70000,"duration":{"second":328,"nanosecond":562000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":76,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":76000}}],"watch_group":76000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":76,"duration":{"second":328,"nanosecond":68000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":42,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":42000}}],"watch_group":42000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":42,"duration":{"second":328,"nanosecond":66000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":8,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":8000}}],"watch_group":8000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":8,"duration":{"second":326,"nanosecond":555000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":37000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":37000,"duration":{"second":328,"nanosecond":66000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":49000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":49000,"duration":{"second":328,"nanosecond":66000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":71000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":71000,"duration":{"second":328,"nanosecond":66000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":48000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":48000,"duration":{"second":328,"nanosecond":66000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":75,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":75000}}],"watch_group":75000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":75,"duration":{"second":328,"nanosecond":66000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":45,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":45000}}],"watch_group":45000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":45,"duration":{"second":328,"nanosecond":63000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":7,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":7000}}],"watch_group":7000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":7,"duration":{"second":328,"nanosecond":63000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":39000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":39000,"duration":{"second":328,"nanosecond":63000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":73000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":73000,"duration":{"second":328,"nanosecond":62000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":69000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":69000,"duration":{"second":328,"nanosecond":62000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":17000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":17000,"duration":{"second":328,"nanosecond":62000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":28000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":28000,"duration":{"second":328,"nanosecond":62000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":74,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":74000}}],"watch_group":74000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":74,"duration":{"second":328,"nanosecond":62000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":44,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":44000}}],"watch_group":44000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":44,"duration":{"second":328,"nanosecond":62000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":6,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":6000}}],"watch_group":6000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":6,"duration":{"second":326,"nanosecond":555000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":40000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":40000,"duration":{"second":328,"nanosecond":62000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":81,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":81000}}],"watch_group":81000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":81,"duration":{"second":328,"nanosecond":62000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":47,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":47000}}],"watch_group":47000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":47,"duration":{"second":328,"nanosecond":62000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":21,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":21000}}],"watch_group":21000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":21,"duration":{"second":326,"nanosecond":555000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":8000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":8000,"duration":{"second":328,"nanosecond":62000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":19000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":19000,"duration":{"second":328,"nanosecond":62000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":96000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":96000,"duration":{"second":328,"nanosecond":62000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":80,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":80000}}],"watch_group":80000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":80,"duration":{"second":328,"nanosecond":60000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":46,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":46000}}],"watch_group":46000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":46,"duration":{"second":328,"nanosecond":60000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":20,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":20000}}],"watch_group":20000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":20,"duration":{"second":328,"nanosecond":60000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":52000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":52000,"duration":{"second":328,"nanosecond":60000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":6000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":6000,"duration":{"second":328,"nanosecond":60000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":79,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":79000}}],"watch_group":79000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":79,"duration":{"second":328,"nanosecond":60000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":49,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":49000}}],"watch_group":49000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":49,"duration":{"second":327,"nanosecond":567000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":19,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":19000}}],"watch_group":19000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":19,"duration":{"second":327,"nanosecond":567000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":50000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":50000,"duration":{"second":327,"nanosecond":567000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":72000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":72000,"duration":{"second":327,"nanosecond":567000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":30000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":30000,"duration":{"second":327,"nanosecond":566000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":78,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":78000}}],"watch_group":78000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":78,"duration":{"second":327,"nanosecond":566000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":48,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":48000}}],"watch_group":48000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":48,"duration":{"second":327,"nanosecond":565000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":18,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":18000}}],"watch_group":18000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":18,"duration":{"second":327,"nanosecond":565000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":51000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":51000,"duration":{"second":327,"nanosecond":565000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":85,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":85000}}],"watch_group":85000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":85,"duration":{"second":327,"nanosecond":565000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":55000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":55000,"duration":{"second":327,"nanosecond":564000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":51,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":51000}}],"watch_group":51000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":51,"duration":{"second":327,"nanosecond":60000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":17,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":17000}}],"watch_group":17000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":17,"duration":{"second":327,"nanosecond":60000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":21000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":21000,"duration":{"second":327,"nanosecond":60000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":4000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":4000,"duration":{"second":327,"nanosecond":60000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":84,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":84000}}],"watch_group":84000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":84,"duration":{"second":327,"nanosecond":60000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":50,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":50000}}],"watch_group":50000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":50,"duration":{"second":327,"nanosecond":60000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":16,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":16000}}],"watch_group":16000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":16,"duration":{"second":327,"nanosecond":60000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":10000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":10000,"duration":{"second":327,"nanosecond":60000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":54000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":54000,"duration":{"second":327,"nanosecond":60000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":83,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":83000}}],"watch_group":83000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":83,"duration":{"second":327,"nanosecond":60000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":32000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":32000,"duration":{"second":327,"nanosecond":60000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":53,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":53000}}],"watch_group":53000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":53,"duration":{"second":326,"nanosecond":555000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":15,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":15000}}],"watch_group":15000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":15,"duration":{"second":327,"nanosecond":60000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":2000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":2000,"duration":{"second":327,"nanosecond":60000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":82,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":82000}}],"watch_group":82000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":82,"duration":{"second":327,"nanosecond":60000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":52,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":52000}}],"watch_group":52000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":52,"duration":{"second":327,"nanosecond":60000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":14,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":14000}}],"watch_group":14000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":14,"duration":{"second":327,"nanosecond":60000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":53000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":53000,"duration":{"second":327,"nanosecond":60000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":12000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":12000,"duration":{"second":327,"nanosecond":60000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":23000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":23000,"duration":{"second":327,"nanosecond":60000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":94000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":94000,"duration":{"second":327,"nanosecond":60000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}}],"flow-node-inventory:snapshot-gathering-status-end":{"succeeded":true,"end":"2026-04-08T01:03:55.818Z"}},{"id":"openflow:2","flow-node-inventory:port-number":54944,"flow-node-inventory:table":[{"id":62,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":28,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":2,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":224,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":181,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":147,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":106,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":61,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":27,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":1,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":223,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":182,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":148,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":105,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":60,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":30,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":0,"flow":[{"id":"71","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.71/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":71}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":889000000}},"flags":""},{"id":"11","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.11/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":11}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":888000000}},"flags":""},{"id":"70","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.70/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":70}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":889000000}},"flags":""},{"id":"10","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.10/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":10}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":888000000}},"flags":""},{"id":"60","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.60/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":60}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":889000000}},"flags":""},{"id":"13","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.13/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":13}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":888000000}},"flags":""},{"id":"12","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.12/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":12}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":888000000}},"flags":""},{"id":"80","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.80/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":80}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":889000000}},"flags":""},{"id":"93","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.93/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":93}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":888000000}},"flags":""},{"id":"92","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.92/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":92}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":888000000}},"flags":""},{"id":"82","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.82/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":82}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":889000000}},"flags":""},{"id":"91","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.91/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":91}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":888000000}},"flags":""},{"id":"81","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.81/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":81}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":889000000}},"flags":""},{"id":"90","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.90/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":90}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":888000000}},"flags":""},{"id":"9","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.9/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":9}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":888000000}},"flags":""},{"id":"84","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.84/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":84}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":889000000}},"flags":""},{"id":"97","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.97/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":97}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":888000000}},"flags":""},{"id":"66","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.66/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":66}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":889000000}},"flags":""},{"id":"79","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.79/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":79}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":889000000}},"flags":""},{"id":"54","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.54/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":54}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":888000000}},"flags":""},{"id":"45","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.45/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":45}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":888000000}},"flags":""},{"id":"83","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.83/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":83}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":889000000}},"flags":""},{"id":"96","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.96/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":96}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":888000000}},"flags":""},{"id":"65","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.65/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":65}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":889000000}},"flags":""},{"id":"78","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.78/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":78}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":889000000}},"flags":""},{"id":"20","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.20/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":20}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":888000000}},"flags":""},{"id":"55","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.55/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":55}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":888000000}},"flags":""},{"id":"46","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.46/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":46}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":888000000}},"flags":""},{"id":"7","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.7/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":7}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":888000000}},"flags":""},{"id":"86","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.86/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":86}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":889000000}},"flags":""},{"id":"95","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.95/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":95}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":888000000}},"flags":""},{"id":"68","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.68/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":68}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":889000000}},"flags":""},{"id":"77","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.77/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":77}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":889000000}},"flags":""},{"id":"30","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.30/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":30}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":888000000}},"flags":""},{"id":"56","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.56/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":56}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":888000000}},"flags":""},{"id":"43","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.43/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":43}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":888000000}},"flags":""},{"id":"8","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.8/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":8}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":888000000}},"flags":""},{"id":"85","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.85/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":85}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":889000000}},"flags":""},{"id":"94","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.94/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":94}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":888000000}},"flags":""},{"id":"67","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.67/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":67}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":889000000}},"flags":""},{"id":"76","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.76/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":76}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":889000000}},"flags":""},{"id":"31","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.31/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":31}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":888000000}},"flags":""},{"id":"57","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.57/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":57}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":888000000}},"flags":""},{"id":"44","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.44/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":44}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":888000000}},"flags":""},{"id":"5","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.5/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":5}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":888000000}},"flags":""},{"id":"88","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.88/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":88}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":889000000}},"flags":""},{"id":"62","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.62/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":62}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":889000000}},"flags":""},{"id":"75","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.75/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":75}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":889000000}},"flags":""},{"id":"32","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.32/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":32}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":888000000}},"flags":""},{"id":"23","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.23/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":23}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":888000000}},"flags":""},{"id":"50","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.50/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":50}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":887000000}},"flags":""},{"id":"41","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.41/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":41}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":888000000}},"flags":""},{"id":"6","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.6/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":6}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":888000000}},"flags":""},{"id":"100","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.100/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":100}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":889000000}},"flags":""},{"id":"87","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.87/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":87}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":889000000}},"flags":""},{"id":"61","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.61/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":61}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":889000000}},"flags":""},{"id":"74","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.74/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":74}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":889000000}},"flags":""},{"id":"33","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.33/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":33}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":888000000}},"flags":""},{"id":"24","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.24/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":24}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":888000000}},"flags":""},{"id":"51","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.51/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":51}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":887000000}},"flags":""},{"id":"42","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.42/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":42}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":888000000}},"flags":""},{"id":"3","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.3/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":3}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":888000000}},"flags":""},{"id":"99","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.99/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":99}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":888000000}},"flags":""},{"id":"64","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.64/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":64}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":889000000}},"flags":""},{"id":"73","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.73/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":73}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":889000000}},"flags":""},{"id":"34","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.34/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":34}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":888000000}},"flags":""},{"id":"21","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.21/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":21}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":888000000}},"flags":""},{"id":"52","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.52/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":52}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":887000000}},"flags":""},{"id":"4","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.4/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":4}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":888000000}},"flags":""},{"id":"89","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.89/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":89}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":889000000}},"flags":""},{"id":"98","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.98/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":98}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":888000000}},"flags":""},{"id":"63","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.63/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":63}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":889000000}},"flags":""},{"id":"72","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.72/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":72}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":889000000}},"flags":""},{"id":"35","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.35/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":35}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":888000000}},"flags":""},{"id":"22","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.22/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":22}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":888000000}},"flags":""},{"id":"53","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.53/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":53}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":888000000}},"flags":""},{"id":"40","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.40/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":40}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":888000000}},"flags":""},{"id":"#UF$TABLE*0-2","table_id":0,"priority":0,"cookie_mask":"0","idle-timeout":0,"cookie":"10","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"output-action":{"max-length":65535,"output-node-connector":"CONTROLLER"}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"147","byte-count":"12240","duration":{"second":325,"nanosecond":767000000}},"flags":"SEND_FLOW_REM"},{"id":"37","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.37/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":37}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":888000000}},"flags":""},{"id":"28","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.28/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":28}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":888000000}},"flags":""},{"id":"36","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.36/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":36}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":888000000}},"flags":""},{"id":"27","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.27/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":27}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":888000000}},"flags":""},{"id":"39","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.39/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":39}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":888000000}},"flags":""},{"id":"26","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.26/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":26}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":888000000}},"flags":""},{"id":"38","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.38/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":38}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":888000000}},"flags":""},{"id":"25","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.25/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":25}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":888000000}},"flags":""},{"id":"69","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.69/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":69}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":888000000}},"flags":""},{"id":"59","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.59/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":59}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":888000000}},"flags":""},{"id":"58","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.58/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":58}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":888000000}},"flags":""},{"id":"49","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.49/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":49}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":888000000}},"flags":""},{"id":"48","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.48/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":48}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":888000000}},"flags":""},{"id":"29","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.29/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":29}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":888000000}},"flags":""},{"id":"47","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.47/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":47}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":888000000}},"flags":""},{"id":"18","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.18/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":18}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":889000000}},"flags":""},{"id":"19","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.19/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":19}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":889000000}},"flags":""},{"id":"14","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.14/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":14}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":889000000}},"flags":""},{"id":"15","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.15/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":15}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":889000000}},"flags":""},{"id":"1","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.1/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":1}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":145,"nanosecond":217000000}},"flags":""},{"id":"16","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.16/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":16}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":889000000}},"flags":""},{"id":"2","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.2/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":2}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":889000000}},"flags":""},{"id":"17","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.17/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":17}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":325,"nanosecond":889000000}},"flags":""}],"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"169","active-flows":101,"packets-matched":"157"}},{"id":226,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":179,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":149,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":104,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":59,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":29,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":225,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":180,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":150,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":103,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":66,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":32,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":220,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":185,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":151,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":102,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":65,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":31,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":253,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":219,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":186,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":152,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":101,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":64,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":34,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":252,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":222,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":183,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":153,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":100,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":63,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":33,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":251,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":221,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":184,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":154,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":99,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":54,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":20,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":250,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":216,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":189,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":155,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":129,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":114,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":53,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":19,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":249,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":215,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":190,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":156,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":130,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":113,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":52,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":22,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":248,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":218,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":187,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":157,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":112,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":51,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":21,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":247,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":217,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":188,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":158,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":128,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":111,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":58,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":24,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":246,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":212,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":193,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":159,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":110,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":57,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":23,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":245,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":211,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":194,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":160,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":109,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":56,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":26,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":244,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":214,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":191,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":161,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":108,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":55,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":25,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":243,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":213,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":192,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":162,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":107,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":77,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":43,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":17,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":239,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":198,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":164,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":138,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":119,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":89,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":78,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":44,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":18,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":240,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":197,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":163,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":137,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":120,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":90,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":75,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":45,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":15,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":241,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":196,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":166,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":136,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":121,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":87,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":76,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":46,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":16,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":242,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":195,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":165,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":135,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":122,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":88,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":81,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":47,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":13,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":235,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":202,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":168,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":134,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":115,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":85,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":82,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":48,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":14,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":236,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":201,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":167,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":133,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":116,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":86,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":79,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":49,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":11,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":237,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":200,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":170,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":132,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":117,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":83,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":80,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":50,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":12,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":238,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":199,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":169,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":131,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":118,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":84,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":69,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":35,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":9,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":231,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":206,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":172,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":146,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":127,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":97,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":70,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":36,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":10,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":232,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":205,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":171,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":145,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":98,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":67,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":37,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":7,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":233,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":204,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":174,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":144,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":95,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":68,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":38,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":8,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":234,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":203,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":173,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":143,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":96,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":73,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":39,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":5,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":227,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":210,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":176,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":142,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":123,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":93,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":74,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":40,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":6,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":228,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":209,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":175,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":141,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":124,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":94,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":71,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":41,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":3,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":229,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":208,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":178,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":140,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":125,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":91,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":72,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":42,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":4,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":230,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":207,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":177,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":139,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":126,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":92,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}}],"opendaylight-group-statistics:group-features":{"max-groups":[4294967040],"group-types-supported":["opendaylight-group-types:group-all","opendaylight-group-types:group-ff","opendaylight-group-types:group-select","opendaylight-group-types:group-indirect"],"group-capabilities-supported":["opendaylight-group-types:chaining","opendaylight-group-types:select-weight","opendaylight-group-types:select-liveness"],"actions":[67076097]},"flow-node-inventory:manufacturer":"Nicira, Inc.","flow-node-inventory:description":"s2","flow-node-inventory:hardware":"Open vSwitch","flow-node-inventory:switch-features":{"max_tables":254,"capabilities":["flow-node-inventory:flow-feature-capability-table-stats","flow-node-inventory:flow-feature-capability-group-stats","flow-node-inventory:flow-feature-capability-queue-stats","flow-node-inventory:flow-feature-capability-flow-stats","flow-node-inventory:flow-feature-capability-port-stats"],"max_buffers":0},"flow-node-inventory:snapshot-gathering-status-start":{"begin":"2026-04-08T01:03:55.779Z"},"flow-node-inventory:software":"2.17.11","node-connector":[{"id":"openflow:2:3","flow-node-inventory:port-number":3,"flow-node-inventory:hardware-address":"da:7c:fc:7d:24:d4","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s2-eth3","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"84","received":"80"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":331,"nanosecond":88000000},"bytes":{"transmitted":"7074","received":"6722"},"receive-crc-error":"0"}},{"id":"openflow:2:LOCAL","flow-node-inventory:port-number":4294967294,"flow-node-inventory:hardware-address":"ee:be:cf:9b:06:44","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s2","flow-node-inventory:current-feature":"","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":0,"flow-node-inventory:state":{"live":false,"blocked":false,"link-down":true},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"PORT-DOWN","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"0","received":"0"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":331,"nanosecond":82000000},"bytes":{"transmitted":"0","received":"0"},"receive-crc-error":"0"}},{"id":"openflow:2:2","flow-node-inventory:port-number":2,"flow-node-inventory:hardware-address":"76:f5:91:ad:d8:c6","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s2-eth2","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"84","received":"80"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":331,"nanosecond":88000000},"bytes":{"transmitted":"7074","received":"6722"},"receive-crc-error":"0"}},{"id":"openflow:2:1","flow-node-inventory:port-number":1,"flow-node-inventory:hardware-address":"96:61:91:36:76:0b","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s2-eth1","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"86","received":"12"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":331,"nanosecond":88000000},"bytes":{"transmitted":"7250","received":"936"},"receive-crc-error":"0"}}],"flow-node-inventory:ip-address":"10.30.170.192","flow-node-inventory:serial-number":"None","flow-node-inventory:group":[{"group-id":56,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":56000}}],"watch_group":56000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":56,"duration":{"second":327,"nanosecond":47000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":22,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":22000}}],"watch_group":22000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":22,"duration":{"second":327,"nanosecond":47000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":99,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":99000}}],"watch_group":99000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":99,"duration":{"second":327,"nanosecond":47000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":34000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":34000,"duration":{"second":329,"nanosecond":740000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":89000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":89000,"duration":{"second":329,"nanosecond":740000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":60000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":60000,"duration":{"second":329,"nanosecond":740000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":91000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":91000,"duration":{"second":329,"nanosecond":740000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":57,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":57000}}],"watch_group":57000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":57,"duration":{"second":327,"nanosecond":47000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":23,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":23000}}],"watch_group":23000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":23,"duration":{"second":326,"nanosecond":550000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":14000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":14000,"duration":{"second":329,"nanosecond":740000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":98,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":98000}}],"watch_group":98000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":98,"duration":{"second":326,"nanosecond":550000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":56000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":56000,"duration":{"second":329,"nanosecond":740000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":85000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":85000,"duration":{"second":329,"nanosecond":740000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":54,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":54000}}],"watch_group":54000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":54,"duration":{"second":326,"nanosecond":550000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":24,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":24000}}],"watch_group":24000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":24,"duration":{"second":326,"nanosecond":550000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":36000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":36000,"duration":{"second":329,"nanosecond":740000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":87000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":87000,"duration":{"second":329,"nanosecond":740000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":59000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":59000,"duration":{"second":329,"nanosecond":740000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":25000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":25000,"duration":{"second":329,"nanosecond":740000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":43000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":43000,"duration":{"second":329,"nanosecond":740000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":55,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":55000}}],"watch_group":55000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":55,"duration":{"second":326,"nanosecond":550000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":25,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":25000}}],"watch_group":25000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":25,"duration":{"second":329,"nanosecond":556000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":100,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":100000}}],"watch_group":100000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":100,"duration":{"second":326,"nanosecond":550000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":58000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":58000,"duration":{"second":329,"nanosecond":556000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":86000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":86000,"duration":{"second":329,"nanosecond":556000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":60,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":60000}}],"watch_group":60000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":60,"duration":{"second":329,"nanosecond":555000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":26,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":26000}}],"watch_group":26000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":26,"duration":{"second":326,"nanosecond":550000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":41000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":41000,"duration":{"second":329,"nanosecond":555000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":95,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":95000}}],"watch_group":95000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":95,"duration":{"second":326,"nanosecond":550000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":82000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":82000,"duration":{"second":329,"nanosecond":555000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":61,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":61000}}],"watch_group":61000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":61,"duration":{"second":326,"nanosecond":550000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":27,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":27000}}],"watch_group":27000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":27,"duration":{"second":326,"nanosecond":550000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":94,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":94000}}],"watch_group":94000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":94,"duration":{"second":326,"nanosecond":550000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":98000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":98000,"duration":{"second":329,"nanosecond":555000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":27000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":27000,"duration":{"second":329,"nanosecond":555000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":57000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":57000,"duration":{"second":329,"nanosecond":555000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":16000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":16000,"duration":{"second":329,"nanosecond":555000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":83000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":83000,"duration":{"second":329,"nanosecond":555000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":58,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":58000}}],"watch_group":58000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":58,"duration":{"second":329,"nanosecond":55000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":28,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":28000}}],"watch_group":28000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":28,"duration":{"second":326,"nanosecond":550000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":97,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":97000}}],"watch_group":97000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":97,"duration":{"second":326,"nanosecond":550000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":100000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":100000,"duration":{"second":329,"nanosecond":55000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":59,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":59000}}],"watch_group":59000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":59,"duration":{"second":329,"nanosecond":55000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":38000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":38000,"duration":{"second":329,"nanosecond":55000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":29,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":29000}}],"watch_group":29000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":29,"duration":{"second":326,"nanosecond":550000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":96,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":96000}}],"watch_group":96000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":96,"duration":{"second":326,"nanosecond":550000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":84000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":84000,"duration":{"second":329,"nanosecond":55000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":64,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":64000}}],"watch_group":64000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":64,"duration":{"second":326,"nanosecond":550000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":30,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":30000}}],"watch_group":30000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":30,"duration":{"second":326,"nanosecond":550000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":4,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":4000}}],"watch_group":4000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":4,"duration":{"second":326,"nanosecond":546000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":91,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":91000}}],"watch_group":91000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":91,"duration":{"second":329,"nanosecond":55000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":7000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":7000,"duration":{"second":329,"nanosecond":55000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":29000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":29000,"duration":{"second":329,"nanosecond":54000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":65,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":65000}}],"watch_group":65000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":65,"duration":{"second":326,"nanosecond":546000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":31,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":31000}}],"watch_group":31000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":31,"duration":{"second":326,"nanosecond":546000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":5,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":5000}}],"watch_group":5000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":5,"duration":{"second":326,"nanosecond":546000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":90,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":90000}}],"watch_group":90000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":90,"duration":{"second":326,"nanosecond":546000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":18000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":18000,"duration":{"second":329,"nanosecond":54000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":62,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":62000}}],"watch_group":62000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":62,"duration":{"second":326,"nanosecond":546000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":65000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":65000,"duration":{"second":329,"nanosecond":54000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":32,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":32000}}],"watch_group":32000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":32,"duration":{"second":326,"nanosecond":546000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":2,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":2000}}],"watch_group":2000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":2,"duration":{"second":326,"nanosecond":546000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":93,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":93000}}],"watch_group":93000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":93,"duration":{"second":326,"nanosecond":546000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":64000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":64000,"duration":{"second":329,"nanosecond":53000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":63,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":63000}}],"watch_group":63000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":63,"duration":{"second":326,"nanosecond":546000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":33,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":33000}}],"watch_group":33000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":33,"duration":{"second":326,"nanosecond":546000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":3,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":3000}}],"watch_group":3000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":3,"duration":{"second":326,"nanosecond":546000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":80000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":80000,"duration":{"second":329,"nanosecond":53000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":9000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":9000,"duration":{"second":329,"nanosecond":53000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":92,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":92000}}],"watch_group":92000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":92,"duration":{"second":326,"nanosecond":546000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":5000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":5000,"duration":{"second":329,"nanosecond":49000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":20000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":20000,"duration":{"second":329,"nanosecond":49000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":81000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":81000,"duration":{"second":329,"nanosecond":49000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":97000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":97000,"duration":{"second":329,"nanosecond":49000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":31000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":31000,"duration":{"second":329,"nanosecond":49000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":68,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":68000}}],"watch_group":68000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":68,"duration":{"second":326,"nanosecond":546000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":11000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":11000,"duration":{"second":329,"nanosecond":49000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":34,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":34000}}],"watch_group":34000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":34,"duration":{"second":329,"nanosecond":49000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":78000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":78000,"duration":{"second":329,"nanosecond":49000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":87,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":87000}}],"watch_group":87000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":87,"duration":{"second":329,"nanosecond":49000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":93000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":93000,"duration":{"second":329,"nanosecond":49000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":63000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":63000,"duration":{"second":329,"nanosecond":49000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":69,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":69000}}],"watch_group":69000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":69,"duration":{"second":326,"nanosecond":546000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":35,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":35000}}],"watch_group":35000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":35,"duration":{"second":326,"nanosecond":546000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":1,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":1000}}],"watch_group":1000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":1,"duration":{"second":145,"nanosecond":421000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":33000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":33000,"duration":{"second":329,"nanosecond":49000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":79000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":79000,"duration":{"second":329,"nanosecond":49000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":86,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":86000}}],"watch_group":86000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":86,"duration":{"second":329,"nanosecond":49000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":62000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":62000,"duration":{"second":329,"nanosecond":49000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":66,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":66000}}],"watch_group":66000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":66,"duration":{"second":326,"nanosecond":546000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":77000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":77000,"duration":{"second":329,"nanosecond":49000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":36,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":36000}}],"watch_group":36000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":36,"duration":{"second":329,"nanosecond":49000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":89,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":89000}}],"watch_group":89000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":89,"duration":{"second":329,"nanosecond":49000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":22000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":22000,"duration":{"second":329,"nanosecond":47000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":95000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":95000,"duration":{"second":329,"nanosecond":47000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":67,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":67000}}],"watch_group":67000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":67,"duration":{"second":326,"nanosecond":546000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":37,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":37000}}],"watch_group":37000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":37,"duration":{"second":326,"nanosecond":546000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":1000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":1000,"duration":{"second":145,"nanosecond":632000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":88,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":88000}}],"watch_group":88000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":88,"duration":{"second":326,"nanosecond":544000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":61000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":61000,"duration":{"second":329,"nanosecond":45000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":3000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":3000,"duration":{"second":329,"nanosecond":45000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":73,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":73000}}],"watch_group":73000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":73,"duration":{"second":326,"nanosecond":544000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":39,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":39000}}],"watch_group":39000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":39,"duration":{"second":326,"nanosecond":544000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":13,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":13000}}],"watch_group":13000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":13,"duration":{"second":326,"nanosecond":544000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":74000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":74000,"duration":{"second":329,"nanosecond":45000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":15000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":15000,"duration":{"second":329,"nanosecond":45000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":44000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":44000,"duration":{"second":329,"nanosecond":45000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":45000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":45000,"duration":{"second":329,"nanosecond":45000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":68000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":68000,"duration":{"second":329,"nanosecond":45000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":72,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":72000}}],"watch_group":72000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":72,"duration":{"second":326,"nanosecond":544000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":38,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":38000}}],"watch_group":38000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":38,"duration":{"second":328,"nanosecond":549000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":75000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":75000,"duration":{"second":328,"nanosecond":549000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":12,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":12000}}],"watch_group":12000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":12,"duration":{"second":326,"nanosecond":544000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":35000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":35000,"duration":{"second":328,"nanosecond":549000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":24000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":24000,"duration":{"second":328,"nanosecond":549000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":90000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":90000,"duration":{"second":328,"nanosecond":549000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":71,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":71000}}],"watch_group":71000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":71,"duration":{"second":326,"nanosecond":544000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":41,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":41000}}],"watch_group":41000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":41,"duration":{"second":328,"nanosecond":549000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":42000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":42000,"duration":{"second":328,"nanosecond":549000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":11,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":11000}}],"watch_group":11000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":11,"duration":{"second":328,"nanosecond":549000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":92000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":92000,"duration":{"second":328,"nanosecond":549000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":46000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":46000,"duration":{"second":328,"nanosecond":549000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":67000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":67000,"duration":{"second":328,"nanosecond":549000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":70,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":70000}}],"watch_group":70000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":70,"duration":{"second":326,"nanosecond":544000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":76000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":76000,"duration":{"second":328,"nanosecond":549000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":40,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":40000}}],"watch_group":40000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":40,"duration":{"second":326,"nanosecond":544000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":13000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":13000,"duration":{"second":328,"nanosecond":549000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":10,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":10000}}],"watch_group":10000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":10,"duration":{"second":326,"nanosecond":544000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":88000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":88000,"duration":{"second":328,"nanosecond":549000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":47000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":47000,"duration":{"second":328,"nanosecond":549000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":66000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":66000,"duration":{"second":328,"nanosecond":549000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":77,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":77000}}],"watch_group":77000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":77,"duration":{"second":328,"nanosecond":549000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":43,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":43000}}],"watch_group":43000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":43,"duration":{"second":328,"nanosecond":549000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":9,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":9000}}],"watch_group":9000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":9,"duration":{"second":328,"nanosecond":549000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":99000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":99000,"duration":{"second":328,"nanosecond":549000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":26000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":26000,"duration":{"second":328,"nanosecond":549000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":70000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":70000,"duration":{"second":328,"nanosecond":549000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":76,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":76000}}],"watch_group":76000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":76,"duration":{"second":328,"nanosecond":45000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":42,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":42000}}],"watch_group":42000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":42,"duration":{"second":328,"nanosecond":45000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":8,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":8000}}],"watch_group":8000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":8,"duration":{"second":326,"nanosecond":544000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":37000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":37000,"duration":{"second":328,"nanosecond":45000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":49000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":49000,"duration":{"second":328,"nanosecond":45000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":71000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":71000,"duration":{"second":328,"nanosecond":45000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":48000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":48000,"duration":{"second":328,"nanosecond":45000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":75,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":75000}}],"watch_group":75000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":75,"duration":{"second":328,"nanosecond":45000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":45,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":45000}}],"watch_group":45000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":45,"duration":{"second":328,"nanosecond":45000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":7,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":7000}}],"watch_group":7000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":7,"duration":{"second":328,"nanosecond":45000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":39000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":39000,"duration":{"second":328,"nanosecond":45000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":73000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":73000,"duration":{"second":328,"nanosecond":45000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":69000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":69000,"duration":{"second":328,"nanosecond":45000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":17000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":17000,"duration":{"second":328,"nanosecond":45000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":28000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":28000,"duration":{"second":328,"nanosecond":45000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":74,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":74000}}],"watch_group":74000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":74,"duration":{"second":328,"nanosecond":45000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":44,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":44000}}],"watch_group":44000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":44,"duration":{"second":328,"nanosecond":45000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":6,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":6000}}],"watch_group":6000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":6,"duration":{"second":326,"nanosecond":544000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":40000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":40000,"duration":{"second":328,"nanosecond":45000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":81,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":81000}}],"watch_group":81000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":81,"duration":{"second":328,"nanosecond":45000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":47,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":47000}}],"watch_group":47000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":47,"duration":{"second":328,"nanosecond":45000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":21,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":21000}}],"watch_group":21000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":21,"duration":{"second":326,"nanosecond":544000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":8000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":8000,"duration":{"second":328,"nanosecond":45000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":19000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":19000,"duration":{"second":328,"nanosecond":45000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":96000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":96000,"duration":{"second":328,"nanosecond":45000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":80,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":80000}}],"watch_group":80000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":80,"duration":{"second":328,"nanosecond":45000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":46,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":46000}}],"watch_group":46000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":46,"duration":{"second":328,"nanosecond":45000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":20,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":20000}}],"watch_group":20000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":20,"duration":{"second":328,"nanosecond":45000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":52000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":52000,"duration":{"second":328,"nanosecond":45000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":6000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":6000,"duration":{"second":328,"nanosecond":45000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":79,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":79000}}],"watch_group":79000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":79,"duration":{"second":328,"nanosecond":45000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":49,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":49000}}],"watch_group":49000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":49,"duration":{"second":327,"nanosecond":554000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":19,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":19000}}],"watch_group":19000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":19,"duration":{"second":327,"nanosecond":554000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":50000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":50000,"duration":{"second":327,"nanosecond":553000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":72000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":72000,"duration":{"second":327,"nanosecond":553000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":30000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":30000,"duration":{"second":327,"nanosecond":553000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":78,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":78000}}],"watch_group":78000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":78,"duration":{"second":327,"nanosecond":552000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":48,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":48000}}],"watch_group":48000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":48,"duration":{"second":327,"nanosecond":551000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":18,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":18000}}],"watch_group":18000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":18,"duration":{"second":327,"nanosecond":551000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":51000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":51000,"duration":{"second":327,"nanosecond":550000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":85,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":85000}}],"watch_group":85000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":85,"duration":{"second":327,"nanosecond":550000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":55000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":55000,"duration":{"second":327,"nanosecond":550000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":51,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":51000}}],"watch_group":51000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":51,"duration":{"second":327,"nanosecond":53000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":17,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":17000}}],"watch_group":17000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":17,"duration":{"second":327,"nanosecond":53000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":21000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":21000,"duration":{"second":327,"nanosecond":53000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":4000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":4000,"duration":{"second":327,"nanosecond":53000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":84,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":84000}}],"watch_group":84000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":84,"duration":{"second":327,"nanosecond":53000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":50,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":50000}}],"watch_group":50000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":50,"duration":{"second":327,"nanosecond":52000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":16,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":16000}}],"watch_group":16000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":16,"duration":{"second":327,"nanosecond":52000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":10000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":10000,"duration":{"second":327,"nanosecond":52000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":54000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":54000,"duration":{"second":327,"nanosecond":47000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":83,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":83000}}],"watch_group":83000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":83,"duration":{"second":327,"nanosecond":47000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":32000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":32000,"duration":{"second":327,"nanosecond":47000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":53,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":53000}}],"watch_group":53000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":53,"duration":{"second":326,"nanosecond":544000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":15,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":15000}}],"watch_group":15000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":15,"duration":{"second":327,"nanosecond":47000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":2000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":2000,"duration":{"second":327,"nanosecond":47000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":82,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":82000}}],"watch_group":82000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":82,"duration":{"second":327,"nanosecond":47000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":52,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":52000}}],"watch_group":52000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":52,"duration":{"second":327,"nanosecond":47000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":14,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":14000}}],"watch_group":14000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":14,"duration":{"second":327,"nanosecond":47000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":53000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":53000,"duration":{"second":327,"nanosecond":47000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":12000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":12000,"duration":{"second":327,"nanosecond":47000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":23000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":23000,"duration":{"second":327,"nanosecond":47000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":94000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":94000,"duration":{"second":327,"nanosecond":47000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}}],"flow-node-inventory:snapshot-gathering-status-end":{"succeeded":true,"end":"2026-04-08T01:03:55.816Z"}}]}}</msg>
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:03:57.571401" elapsed="0.012621"/>
</kw>
<kw name="Get Count" owner="BuiltIn">
<msg time="2026-04-08T01:03:57.587550" level="INFO">Item found from container 600 times.</msg>
<msg time="2026-04-08T01:03:57.587633" level="INFO">${group_count} = 600</msg>
<var>${group_count}</var>
<arg>${resp.text}</arg>
<arg>"group-type"</arg>
<doc>Returns and logs how many times ``item`` is found from ``container``.</doc>
<status status="PASS" start="2026-04-08T01:03:57.584218" elapsed="0.003439"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${group_count}</arg>
<arg>${groups}</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="PASS" start="2026-04-08T01:03:57.587845" elapsed="0.000324"/>
</kw>
<arg>${all_groups}</arg>
<doc>Check number of groups in the inventory.</doc>
<status status="PASS" start="2026-04-08T01:03:57.508981" elapsed="0.079252"/>
</kw>
<arg>10s</arg>
<arg>1s</arg>
<arg>ClusterOpenFlow.Check Number Of Groups On Member</arg>
<arg>${all_groups}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-08T01:03:57.508445" elapsed="0.079832"/>
</kw>
<doc>Check Groups in Operational DS.</doc>
<status status="PASS" start="2026-04-08T01:03:57.208594" elapsed="0.379800"/>
</test>
<test id="s1-s4-t64" name="Check Flows In Switch After Owner Restart" line="432">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-08T01:03:57.591469" elapsed="0.000207"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-08T01:03:57.591207" elapsed="0.000524"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:03:57.592723" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:03:57.592612" elapsed="0.000157"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:57.592592" elapsed="0.000200"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:03:57.597631" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:03:57.597525" elapsed="0.000150"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:57.597507" elapsed="0.000190"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:03:57.598702" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:03:57.598321" elapsed="0.000407"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:03:57.599207" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:03:57.598889" elapsed="0.000345"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T01:03:57.599279" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T01:03:57.599433" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T01:03:57.597924" elapsed="0.001533"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:03:57.605128" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:03:57.605016" elapsed="0.000178"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:57.604995" elapsed="0.000222"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:03:57.606369" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:03:57.606262" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:57.606244" elapsed="0.000192"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:03:57.606878" level="INFO">${karaf_connection_index} = 476</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:03:57.606582" elapsed="0.000323"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:03:57.607348" level="INFO">${current_connection_index} = 495</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:03:57.607064" elapsed="0.000310"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:03:57.648019" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:03:57.607880" elapsed="0.040241"/>
</kw>
<msg time="2026-04-08T01:03:57.648308" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T01:03:57.648356" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:03:57.607538" elapsed="0.040855"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T01:03:57.690482" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "[C "I "n "[C "S "w "i "t "c "h "[C "A "f "t "e "r "[C "O "w "n "e "r "[C "R "e "s "t "a "r "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T01:03:57.648912" elapsed="0.041681"/>
</kw>
<msg time="2026-04-08T01:03:57.690752" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T01:03:57.690797" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:03:57.648569" elapsed="0.042302"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:57.691211" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:03:57.690955" elapsed="0.000314"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:57.690933" elapsed="0.000360"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:03:57.691736" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "[C "I "n "[C "S "w "i "t "c "h "[C "A "f "t "e "r "[C "O "w "n "e "r "[C "R "e "s "t "a "r "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:03:57.691438" elapsed="0.000372"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:57.692096" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:03:57.691878" elapsed="0.000272"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:57.691859" elapsed="0.000331"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T01:03:57.692224" elapsed="0.000028"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:03:57.694663" elapsed="0.000182"/>
</kw>
<msg time="2026-04-08T01:03:57.694905" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:03:57.693660" elapsed="0.001371"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:57.695322" elapsed="0.000075"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:57.695650" elapsed="0.000073"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:03:57.693029" elapsed="0.002802"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T01:03:57.692486" elapsed="0.003407"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T01:03:57.605940" elapsed="0.090050"/>
</kw>
<msg time="2026-04-08T01:03:57.696080" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:03:57.696122" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:03:57.605371" elapsed="0.090809"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T01:03:57.696365" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-08T01:03:57.696259" elapsed="0.000164"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:57.696241" elapsed="0.000206"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:57.696834" elapsed="0.000024"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:57.697214" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T01:03:57.697286" elapsed="0.000017"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T01:03:57.604539" elapsed="0.092860"/>
</kw>
<msg time="2026-04-08T01:03:57.697490" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:03:57.697533" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:03:57.599829" elapsed="0.097741"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:57.697895" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:03:57.697645" elapsed="0.000301"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:57.697628" elapsed="0.000341"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T01:03:57.599684" elapsed="0.098308"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:03:57.703508" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:03:57.703401" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:57.703382" elapsed="0.000193"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:03:57.704712" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:03:57.704605" elapsed="0.000188"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:57.704587" elapsed="0.000230"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:03:57.705334" level="INFO">${karaf_connection_index} = 478</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:03:57.705008" elapsed="0.000354"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:03:57.705777" level="INFO">${current_connection_index} = 495</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:03:57.705524" elapsed="0.000280"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:03:57.736500" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:03:57.706330" elapsed="0.030275"/>
</kw>
<msg time="2026-04-08T01:03:57.736766" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T01:03:57.736814" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:03:57.705965" elapsed="0.030885"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T01:03:57.780579" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "[C "I "n "[C "S "w "i "t "c "h "[C "A "f "t "e "r "[C "O "w "n "e "r "[C "R "e "s "t "a "r "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T01:03:57.737449" elapsed="0.043244"/>
</kw>
<msg time="2026-04-08T01:03:57.780879" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T01:03:57.780928" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:03:57.737074" elapsed="0.043893"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:57.781295" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:03:57.781049" elapsed="0.000302"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:57.781028" elapsed="0.000346"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:03:57.781814" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "[C "I "n "[C "S "w "i "t "c "h "[C "A "f "t "e "r "[C "O "w "n "e "r "[C "R "e "s "t "a "r "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:03:57.781518" elapsed="0.000372"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:57.782192" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:03:57.781957" elapsed="0.000290"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:57.781939" elapsed="0.000331"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T01:03:57.782302" elapsed="0.000028"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:03:57.784731" elapsed="0.000220"/>
</kw>
<msg time="2026-04-08T01:03:57.785013" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:03:57.783718" elapsed="0.001423"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:57.785431" elapsed="0.000076"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:57.785759" elapsed="0.000071"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:03:57.783091" elapsed="0.002845"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T01:03:57.782563" elapsed="0.003436"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T01:03:57.704302" elapsed="0.081793"/>
</kw>
<msg time="2026-04-08T01:03:57.786210" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:03:57.786278" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:03:57.703730" elapsed="0.082587"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T01:03:57.786507" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-08T01:03:57.786399" elapsed="0.000166"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:57.786377" elapsed="0.000211"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 2,
close the previous connection. In any case create a new connection
to karaf console for 2, set correct prompt set and login to karaf console.
Store connection index for 2 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:57.786969" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:57.787358" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T01:03:57.787429" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T01:03:57.703047" elapsed="0.084488"/>
</kw>
<msg time="2026-04-08T01:03:57.787626" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:03:57.787669" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:03:57.698271" elapsed="0.089435"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:57.788028" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:03:57.787780" elapsed="0.000300"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:57.787763" elapsed="0.000340"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T01:03:57.698114" elapsed="0.090012"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:03:57.793699" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:03:57.793591" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:57.793572" elapsed="0.000194"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:03:57.795078" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:03:57.794970" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:57.794953" elapsed="0.000193"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:03:57.795620" level="INFO">${karaf_connection_index} = 480</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:03:57.795319" elapsed="0.000328"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:03:57.796058" level="INFO">${current_connection_index} = 495</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:03:57.795808" elapsed="0.000276"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:03:57.827140" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:03:57.796603" elapsed="0.030662"/>
</kw>
<msg time="2026-04-08T01:03:57.827424" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T01:03:57.827471" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:03:57.796265" elapsed="0.031242"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T01:03:57.884080" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "[C "I "n "[C "S "w "i "t "c "h "[C "A "f "t "e "r "[C "O "w "n "e "r "[C "R "e "s "t "a "r "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T01:03:57.828026" elapsed="0.056465"/>
</kw>
<msg time="2026-04-08T01:03:57.884970" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T01:03:57.885087" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:03:57.827683" elapsed="0.057527"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:57.886108" elapsed="0.000106"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:03:57.885452" elapsed="0.000850"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:57.885386" elapsed="0.000977"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:03:57.887582" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "[C "I "n "[C "S "w "i "t "c "h "[C "A "f "t "e "r "[C "O "w "n "e "r "[C "R "e "s "t "a "r "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:03:57.886727" elapsed="0.001044"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:57.888511" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:03:57.887937" elapsed="0.000707"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:57.887893" elapsed="0.000808"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T01:03:57.888835" elapsed="0.000086"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:03:57.891889" elapsed="0.000189"/>
</kw>
<msg time="2026-04-08T01:03:57.892140" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:03:57.890776" elapsed="0.001537"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:57.892622" elapsed="0.000076"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:57.892972" elapsed="0.000075"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:03:57.890094" elapsed="0.003078"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T01:03:57.889474" elapsed="0.003768"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T01:03:57.794668" elapsed="0.098680"/>
</kw>
<msg time="2026-04-08T01:03:57.893451" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:03:57.893498" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:03:57.793920" elapsed="0.099616"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T01:03:57.893731" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-08T01:03:57.893620" elapsed="0.000170"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:57.893600" elapsed="0.000214"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 3,
close the previous connection. In any case create a new connection
to karaf console for 3, set correct prompt set and login to karaf console.
Store connection index for 3 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:57.894255" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:57.894604" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T01:03:57.894676" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T01:03:57.793249" elapsed="0.101571"/>
</kw>
<msg time="2026-04-08T01:03:57.894922" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:03:57.894969" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:03:57.788412" elapsed="0.106598"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:57.895365" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:03:57.895090" elapsed="0.000328"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:57.895072" elapsed="0.000371"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T01:03:57.788263" elapsed="0.107205"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-08T01:03:57.599511" elapsed="0.295994"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-08T01:03:57.597164" elapsed="0.298407"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-08T01:03:57.592323" elapsed="0.303309"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:03:57.591882" elapsed="0.303799"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-08T01:03:57.589081" elapsed="0.306660"/>
</kw>
<kw name="Check Flows In Mininet" owner="MininetKeywords">
<if>
<branch type="IF" condition="&quot;&quot;&quot;${mininet_conn}&quot;&quot;&quot; != &quot;&quot;">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${mininet_conn}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:03:57.896600" elapsed="0.000192"/>
</kw>
<status status="PASS" start="2026-04-08T01:03:57.896371" elapsed="0.000457"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:57.896350" elapsed="0.000504"/>
</if>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:03:57.897312" level="INFO">${cmd} = dpctl dump-aggregate -O OpenFlow13</msg>
<var>${cmd}</var>
<arg>dpctl dump-aggregate -O OpenFlow13</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:03:57.897030" elapsed="0.000308"/>
</kw>
<kw name="Send Mininet Command" owner="MininetKeywords">
<if>
<branch type="IF" condition="&quot;&quot;&quot;${mininet_conn}&quot;&quot;&quot; != &quot;&quot;">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${mininet_conn}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:03:57.898476" elapsed="0.000176"/>
</kw>
<status status="PASS" start="2026-04-08T01:03:57.898245" elapsed="0.000443"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:57.897944" elapsed="0.000769"/>
</if>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:03:57.902865" level="INFO">dpctl dump-aggregate -O OpenFlow13</msg>
<arg>${cmd}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:03:57.898855" elapsed="0.004070"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-08T01:03:57.968114" level="INFO">*** s1 ------------------------------------------------------------------------
OFPST_AGGREGATE reply (OF1.3) (xid=0x2): packet_count=78 byte_count=6450 flow_count=101
*** s2 ------------------------------------------------------------------------
OFPST_AGGREGATE reply (OF1.3) (xid=0x2): packet_count=149 byte_count=12410 flow_count=101
*** s3 ------------------------------------------------------------------------
OFPST_AGGREGATE reply (OF1.3) (xid=0x2): packet_count=77 byte_count=6380 flow_count=101
mininet&gt;</msg>
<msg time="2026-04-08T01:03:57.968377" level="INFO">${output} = *** s1 ------------------------------------------------------------------------
OFPST_AGGREGATE reply (OF1.3) (xid=0x2): packet_count=78 byte_count=6450 flow_count=101
*** s2 ----------------------...</msg>
<var>${output}</var>
<arg>mininet&gt;</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-08T01:03:57.903233" elapsed="0.065185"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-08T01:03:57.968519" elapsed="0.000081"/>
</return>
<msg time="2026-04-08T01:03:57.968855" level="INFO">${output} = *** s1 ------------------------------------------------------------------------
OFPST_AGGREGATE reply (OF1.3) (xid=0x2): packet_count=78 byte_count=6450 flow_count=101
*** s2 ----------------------...</msg>
<var>${output}</var>
<arg>${mininet_conn}</arg>
<arg>${cmd}</arg>
<doc>Sends Command dpctl dump-aggregate -O OpenFlow13 to Mininet session 495 and returns read buffer response.</doc>
<status status="PASS" start="2026-04-08T01:03:57.897661" elapsed="0.071237"/>
</kw>
<kw name="Get Regexp Matches" owner="String">
<msg time="2026-04-08T01:03:57.969661" level="INFO">${flows} = ['101', '101', '101']</msg>
<var>${flows}</var>
<arg>${output}</arg>
<arg>(?&lt;=flow_count\=).*?(?=\r)</arg>
<doc>Returns a list of all non-overlapping matches in the given string.</doc>
<status status="PASS" start="2026-04-08T01:03:57.969226" elapsed="0.000472"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:03:57.970605" level="INFO">${total_flows} = 303</msg>
<var>${total_flows}</var>
<arg>sum(map(int, ${flows}))</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:03:57.969937" elapsed="0.000705"/>
</kw>
<kw name="Should Be Equal As Numbers" owner="BuiltIn">
<arg>${total_flows}</arg>
<arg>${flow_count}</arg>
<doc>Fails if objects are unequal after converting them to real numbers.</doc>
<status status="PASS" start="2026-04-08T01:03:57.970954" elapsed="0.000467"/>
</kw>
<arg>${mininet_conn_id}</arg>
<arg>${all_flows}</arg>
<doc>Sync with mininet to match exact number of flows</doc>
<status status="PASS" start="2026-04-08T01:03:57.896024" elapsed="0.075487"/>
</kw>
<doc>Check Flows in switch.</doc>
<status status="PASS" start="2026-04-08T01:03:57.588595" elapsed="0.383086"/>
</test>
<test id="s1-s4-t65" name="Restart Cluster" line="436">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-08T01:03:57.975657" elapsed="0.000211"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-08T01:03:57.975384" elapsed="0.000540"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:03:57.977116" elapsed="0.000021"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:03:57.976954" elapsed="0.000245"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:57.976924" elapsed="0.000309"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:03:57.982608" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:03:57.982498" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:57.982479" elapsed="0.000203"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:03:57.983830" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:03:57.983434" elapsed="0.000424"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:03:57.984464" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:03:57.984036" elapsed="0.000466"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T01:03:57.984556" elapsed="0.000042"/>
</return>
<msg time="2026-04-08T01:03:57.984761" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T01:03:57.982945" elapsed="0.001849"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:03:57.991349" elapsed="0.000023"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:03:57.991207" elapsed="0.000205"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:57.991142" elapsed="0.000299"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:03:57.992970" elapsed="0.000020"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:03:57.992831" elapsed="0.000198"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:57.992807" elapsed="0.000249"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:03:57.993657" level="INFO">${karaf_connection_index} = 476</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:03:57.993281" elapsed="0.000409"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:03:57.994258" level="INFO">${current_connection_index} = 495</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:03:57.993905" elapsed="0.000390"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:03:58.024789" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:03:57.994948" elapsed="0.030175"/>
</kw>
<msg time="2026-04-08T01:03:58.025406" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T01:03:58.025469" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:03:57.994510" elapsed="0.031009"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T01:03:58.048106" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "R "e "s "t "a "r "t "[C "C "l "u "s "t "e "r "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T01:03:58.026305" elapsed="0.021934"/>
</kw>
<msg time="2026-04-08T01:03:58.048439" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T01:03:58.048488" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "R "e "s "t "a "r "t "[C "C "l "u "s...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:03:58.025782" elapsed="0.022744"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:58.048988" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:03:58.048639" elapsed="0.000409"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:58.048603" elapsed="0.000473"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:03:58.049598" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "R "e "s "t "a "r "t "[C "C "l "u "s "t "e "r "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:03:58.049254" elapsed="0.000416"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:58.049967" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:03:58.049739" elapsed="0.000282"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:58.049721" elapsed="0.000324"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T01:03:58.050083" elapsed="0.000039"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:03:58.052955" elapsed="0.000190"/>
</kw>
<msg time="2026-04-08T01:03:58.053226" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:03:58.051894" elapsed="0.001469"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:58.053723" elapsed="0.000077"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:58.054067" elapsed="0.000074"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:03:58.051150" elapsed="0.003128"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T01:03:58.050439" elapsed="0.003905"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T01:03:57.992423" elapsed="0.062022"/>
</kw>
<msg time="2026-04-08T01:03:58.054541" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:03:58.054587" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "R "e "s "t "a "r "t "[C "C "l "u "s...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:03:57.991647" elapsed="0.062981"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T01:03:58.054817" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-08T01:03:58.054708" elapsed="0.000169"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:58.054689" elapsed="0.000213"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:58.055326" elapsed="0.000027"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:58.055674" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T01:03:58.055745" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T01:03:57.990728" elapsed="0.065128"/>
</kw>
<msg time="2026-04-08T01:03:58.055953" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:03:58.055998" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "R "e "s "t "a "r "t "[C "C "l "u "s...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:03:57.985291" elapsed="0.070748"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:58.056445" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:03:58.056183" elapsed="0.000317"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:58.056149" elapsed="0.000375"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T01:03:57.985086" elapsed="0.071464"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:03:58.062501" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:03:58.062377" elapsed="0.000171"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:58.062348" elapsed="0.000222"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:03:58.063909" elapsed="0.000019"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:03:58.063772" elapsed="0.000195"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:58.063753" elapsed="0.000242"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:03:58.064570" level="INFO">${karaf_connection_index} = 478</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:03:58.064207" elapsed="0.000396"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:03:58.065172" level="INFO">${current_connection_index} = 495</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:03:58.064843" elapsed="0.000364"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:03:58.110575" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:03:58.065847" elapsed="0.044999"/>
</kw>
<msg time="2026-04-08T01:03:58.111265" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T01:03:58.111374" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:03:58.065421" elapsed="0.046040"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T01:03:58.136178" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "R "e "s "t "a "r "t "[C "C "l "u "s "t "e "r "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T01:03:58.112880" elapsed="0.023427"/>
</kw>
<msg time="2026-04-08T01:03:58.136517" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T01:03:58.136563" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "R "e "s "t "a "r "t "[C "C "l "u "s...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:03:58.111929" elapsed="0.024671"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:58.137818" elapsed="0.000065"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:03:58.136729" elapsed="0.001263"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:58.136697" elapsed="0.001360"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:03:58.139362" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "R "e "s "t "a "r "t "[C "C "l "u "s "t "e "r "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:03:58.138442" elapsed="0.001092"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:58.140239" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:03:58.139702" elapsed="0.000663"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:58.139657" elapsed="0.000763"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T01:03:58.140498" elapsed="0.000075"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:03:58.146288" elapsed="0.000412"/>
</kw>
<msg time="2026-04-08T01:03:58.146838" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:03:58.143992" elapsed="0.003146"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:58.147794" elapsed="0.000166"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:58.148592" elapsed="0.000179"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:03:58.142555" elapsed="0.006460"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T01:03:58.141259" elapsed="0.007928"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T01:03:58.063435" elapsed="0.086169"/>
</kw>
<msg time="2026-04-08T01:03:58.149823" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:03:58.149923" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "R "e "s "t "a "r "t "[C "C "l "u "s...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:03:58.062727" elapsed="0.087281"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T01:03:58.150470" elapsed="0.000058"/>
</return>
<status status="PASS" start="2026-04-08T01:03:58.150222" elapsed="0.000379"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:58.150140" elapsed="0.000514"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 2,
close the previous connection. In any case create a new connection
to karaf console for 2, set correct prompt set and login to karaf console.
Store connection index for 2 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:58.151612" elapsed="0.000057"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:58.152398" elapsed="0.000055"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T01:03:58.152557" elapsed="0.000036"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T01:03:58.061871" elapsed="0.091005"/>
</kw>
<msg time="2026-04-08T01:03:58.153090" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:03:58.153220" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "R "e "s "t "a "r "t "[C "C "l "u "s...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:03:58.056858" elapsed="0.096451"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:58.153716" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:03:58.153454" elapsed="0.000314"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:58.153432" elapsed="0.000359"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T01:03:58.056708" elapsed="0.097107"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:03:58.159525" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:03:58.159416" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:58.159396" elapsed="0.000196"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:03:58.160756" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:03:58.160646" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:58.160627" elapsed="0.000197"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:03:58.161293" level="INFO">${karaf_connection_index} = 480</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:03:58.160971" elapsed="0.000350"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:03:58.161736" level="INFO">${current_connection_index} = 495</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:03:58.161482" elapsed="0.000280"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:03:58.187757" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:03:58.162281" elapsed="0.025595"/>
</kw>
<msg time="2026-04-08T01:03:58.188038" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T01:03:58.188084" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:03:58.161925" elapsed="0.026196"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T01:03:58.210102" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "R "e "s "t "a "r "t "[C "C "l "u "s "t "e "r "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T01:03:58.188697" elapsed="0.021524"/>
</kw>
<msg time="2026-04-08T01:03:58.210381" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T01:03:58.210427" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "R "e "s "t "a "r "t "[C "C "l "u "s...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:03:58.188323" elapsed="0.022140"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:58.210773" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:03:58.210545" elapsed="0.000321"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:58.210523" elapsed="0.000371"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:03:58.211460" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "R "e "s "t "a "r "t "[C "C "l "u "s "t "e "r "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:03:58.211040" elapsed="0.000495"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:58.211829" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:03:58.211606" elapsed="0.000276"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:58.211587" elapsed="0.000318"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T01:03:58.211938" elapsed="0.000029"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:03:58.214448" elapsed="0.000181"/>
</kw>
<msg time="2026-04-08T01:03:58.214689" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:03:58.213446" elapsed="0.001370"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:58.215088" elapsed="0.000093"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:58.215439" elapsed="0.000073"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:03:58.212801" elapsed="0.002817"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T01:03:58.212225" elapsed="0.003455"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T01:03:58.160331" elapsed="0.055447"/>
</kw>
<msg time="2026-04-08T01:03:58.215869" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:03:58.215912" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "R "e "s "t "a "r "t "[C "C "l "u "s...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:03:58.159745" elapsed="0.056204"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T01:03:58.216130" elapsed="0.000041"/>
</return>
<status status="PASS" start="2026-04-08T01:03:58.216024" elapsed="0.000182"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:58.216006" elapsed="0.000224"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 3,
close the previous connection. In any case create a new connection
to karaf console for 3, set correct prompt set and login to karaf console.
Store connection index for 3 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:58.216654" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:58.216988" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T01:03:58.217059" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T01:03:58.159029" elapsed="0.058158"/>
</kw>
<msg time="2026-04-08T01:03:58.217281" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:03:58.217324" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "R "e "s "t "a "r "t "[C "C "l "u "s...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:03:58.154100" elapsed="0.063261"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:58.217683" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:03:58.217435" elapsed="0.000301"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:58.217418" elapsed="0.000340"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T01:03:58.153953" elapsed="0.063828"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-08T01:03:57.984870" elapsed="0.232942"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-08T01:03:57.982107" elapsed="0.235766"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-08T01:03:57.976589" elapsed="0.241342"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:03:57.976085" elapsed="0.241895"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-08T01:03:57.972644" elapsed="0.245392"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Stop_Members_From_List_Or_All" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:03:58.223781" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:03:58.223398" elapsed="0.000409"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:03:58.224290" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:03:58.223970" elapsed="0.000346"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T01:03:58.224360" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T01:03:58.224513" level="INFO">${stop_index_list} = [1, 2, 3]</msg>
<var>${stop_index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T01:03:58.222944" elapsed="0.001593"/>
</kw>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:03:58.225532" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:03:58.225137" elapsed="0.000421"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:03:58.226046" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:03:58.225721" elapsed="0.000359"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T01:03:58.226130" elapsed="0.000047"/>
</return>
<msg time="2026-04-08T01:03:58.226308" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${original_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T01:03:58.224762" elapsed="0.001571"/>
</kw>
<kw name="Run_Bash_Command_On_List_Or_All" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:03:58.227789" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:03:58.227414" elapsed="0.000402"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:03:58.228364" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:03:58.227976" elapsed="0.000415"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T01:03:58.228434" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T01:03:58.228603" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T01:03:58.227021" elapsed="0.001621"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:03:58.229791" level="INFO">${member_ip} = 10.30.170.48</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:03:58.229524" elapsed="0.000293"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:03:58.230624" level="INFO">index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-08T01:03:58.230722" level="INFO">${current_connection} = index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T01:03:58.230461" elapsed="0.000287"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Controller" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:58.236147" elapsed="0.000083"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:03:58.235061" elapsed="0.001268"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:58.233420" elapsed="0.002937"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:03:58.236674" level="INFO">index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-08T01:03:58.236842" level="INFO">${current_ssh_connection} = index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T01:03:58.236511" elapsed="0.000374"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:03:58.238147" level="INFO">Attempting to execute command "/tmp/karaf-0.23.1/bin/stop" on remote system "10.30.170.48" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:03:58.237096" elapsed="0.001153"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:03:58.239242" level="INFO">${conn_id} = 526</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T01:03:58.238470" elapsed="0.000814"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T01:03:58.241493" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T01:03:58.241666" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T01:03:58.240934" elapsed="0.000837"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:03:58.242659" elapsed="0.000635"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T01:03:58.245317" level="INFO">Logging into '10.30.170.48:22' as 'jenkins'.</msg>
<msg time="2026-04-08T01:03:58.849316" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 01:03:58 UTC 2026

  System load:  0.38               Processes:             121
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 7%                 IPv4 address for ens3: 10.30.170.48
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 01:01:28 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-0-builder-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T01:03:58.244977" elapsed="0.604588"/>
</kw>
<msg time="2026-04-08T01:03:58.849715" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:03:58.244255" elapsed="0.605584"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T01:03:58.239631" elapsed="0.610384"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T01:03:58.850788" level="INFO">Executing command '/tmp/karaf-0.23.1/bin/stop'.</msg>
<msg time="2026-04-08T01:03:59.228726" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-08T01:03:59.229240" level="INFO">${stdout} = </msg>
<msg time="2026-04-08T01:03:59.229417" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T01:03:58.850385" elapsed="0.379126"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T01:03:59.230254" elapsed="0.000582"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:03:59.232847" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:03:59.231459" elapsed="0.001551"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T01:03:59.233875" elapsed="0.000037"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:03:59.233386" elapsed="0.000812"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:59.233327" elapsed="0.000938"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T01:03:59.234818" elapsed="0.000069"/>
</return>
<status status="PASS" start="2026-04-08T01:03:59.234391" elapsed="0.000753"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:59.234356" elapsed="0.000893"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T01:03:59.235331" elapsed="0.000035"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:03:59.242069" elapsed="0.000346"/>
</kw>
<msg time="2026-04-08T01:03:59.242521" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:03:59.240566" elapsed="0.002139"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:59.243082" elapsed="0.000120"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:59.243556" elapsed="0.000099"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:03:59.236105" elapsed="0.007696"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T01:03:58.232696" elapsed="1.011254"/>
</kw>
<msg time="2026-04-08T01:03:59.244027" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:03:58.231981" elapsed="1.012125"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-08T01:03:58.231455" elapsed="1.012788"/>
</kw>
<msg time="2026-04-08T01:03:59.244300" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:03:58.230905" elapsed="1.013459"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:03:59.248822" elapsed="0.000179"/>
</kw>
<msg time="2026-04-08T01:03:59.249044" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:03:59.248260" elapsed="0.000845"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:59.249365" elapsed="0.000023"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:59.249533" elapsed="0.000020"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:03:59.244845" elapsed="0.004769"/>
</kw>
<msg time="2026-04-08T01:03:59.249705" level="INFO">${output} = </msg>
<var>${output}</var>
<arg>Utils.Run_Command_On_Controller</arg>
<arg>${member_ip}</arg>
<arg>${command}</arg>
<doc>Store current connection index, run keyword returning its result, restore connection in teardown.
Note that in order to avoid "got positional argument after named arguments", it is safer to use positional (not named) arguments on call.</doc>
<status status="PASS" start="2026-04-08T01:03:58.230035" elapsed="1.019695"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:03:59.250176" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:03:59.249913" elapsed="0.000307"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-08T01:03:59.250262" elapsed="0.000028"/>
</return>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-08T01:03:58.229014" elapsed="1.021371"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T01:03:58.228839" elapsed="1.021588"/>
</iter>
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:03:59.251447" level="INFO">${member_ip} = 10.30.170.131</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:03:59.251106" elapsed="0.000367"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:03:59.252283" level="INFO">index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-08T01:03:59.252382" level="INFO">${current_connection} = index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T01:03:59.252110" elapsed="0.000299"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Controller" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:03:59.256227" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:03:59.255043" elapsed="0.001346"/>
</branch>
<status status="PASS" start="2026-04-08T01:03:59.255023" elapsed="0.001393"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:03:59.256718" level="INFO">index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-08T01:03:59.256893" level="INFO">${current_ssh_connection} = index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T01:03:59.256571" elapsed="0.000366"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:03:59.258281" level="INFO">Attempting to execute command "/tmp/karaf-0.23.1/bin/stop" on remote system "10.30.170.131" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:03:59.257173" elapsed="0.001199"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:03:59.259427" level="INFO">${conn_id} = 527</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T01:03:59.258601" elapsed="0.000872"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T01:03:59.262041" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T01:03:59.262251" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T01:03:59.261459" elapsed="0.000917"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:03:59.263506" elapsed="0.000697"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T01:03:59.266332" level="INFO">Logging into '10.30.170.131:22' as 'jenkins'.</msg>
<msg time="2026-04-08T01:04:00.193015" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 01:03:59 UTC 2026

  System load:  0.1                Processes:             122
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 7%                 IPv4 address for ens3: 10.30.170.131
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 01:01:27 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-0-builder-1 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T01:03:59.265996" elapsed="0.927278"/>
</kw>
<msg time="2026-04-08T01:04:00.193403" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:03:59.265240" elapsed="0.928273"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T01:03:59.259797" elapsed="0.933877"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T01:04:00.194413" level="INFO">Executing command '/tmp/karaf-0.23.1/bin/stop'.</msg>
<msg time="2026-04-08T01:04:01.393475" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-08T01:04:01.393945" level="INFO">${stdout} = </msg>
<msg time="2026-04-08T01:04:01.394111" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T01:04:00.194020" elapsed="1.200230"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T01:04:01.394950" elapsed="0.000541"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:04:01.397309" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:04:01.396038" elapsed="0.001431"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T01:04:01.398262" elapsed="0.000037"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:04:01.397780" elapsed="0.000742"/>
</branch>
<status status="PASS" start="2026-04-08T01:04:01.397728" elapsed="0.000853"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T01:04:01.399202" elapsed="0.000080"/>
</return>
<status status="PASS" start="2026-04-08T01:04:01.398759" elapsed="0.000747"/>
</branch>
<status status="PASS" start="2026-04-08T01:04:01.398722" elapsed="0.000833"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T01:04:01.399605" elapsed="0.000020"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:04:01.405251" elapsed="0.000230"/>
</kw>
<msg time="2026-04-08T01:04:01.405580" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:04:01.403871" elapsed="0.001880"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:04:01.406107" elapsed="0.000182"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:04:01.406638" elapsed="0.000097"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:04:01.400060" elapsed="0.006815"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T01:03:59.254281" elapsed="2.152727"/>
</kw>
<msg time="2026-04-08T01:04:01.407082" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:03:59.253609" elapsed="2.153542"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-08T01:03:59.253062" elapsed="2.154224"/>
</kw>
<msg time="2026-04-08T01:04:01.407344" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:03:59.252564" elapsed="2.154844"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:04:01.412059" elapsed="0.000198"/>
</kw>
<msg time="2026-04-08T01:04:01.412301" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:04:01.411575" elapsed="0.000789"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:04:01.412525" elapsed="0.000022"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:04:01.412690" elapsed="0.000020"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:04:01.407817" elapsed="0.004953"/>
</kw>
<msg time="2026-04-08T01:04:01.412862" level="INFO">${output} = </msg>
<var>${output}</var>
<arg>Utils.Run_Command_On_Controller</arg>
<arg>${member_ip}</arg>
<arg>${command}</arg>
<doc>Store current connection index, run keyword returning its result, restore connection in teardown.
Note that in order to avoid "got positional argument after named arguments", it is safer to use positional (not named) arguments on call.</doc>
<status status="PASS" start="2026-04-08T01:03:59.251690" elapsed="2.161197"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:04:01.413389" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:04:01.413067" elapsed="0.000365"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-08T01:04:01.413480" elapsed="0.000032"/>
</return>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-08T01:03:59.250700" elapsed="2.162965"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T01:03:59.250521" elapsed="2.163181"/>
</iter>
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:04:01.414719" level="INFO">${member_ip} = 10.30.171.110</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:04:01.414431" elapsed="0.000314"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:04:01.415570" level="INFO">index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-08T01:04:01.415671" level="INFO">${current_connection} = index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T01:04:01.415415" elapsed="0.000283"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Controller" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:04:01.419220" elapsed="0.000048"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:04:01.418324" elapsed="0.001041"/>
</branch>
<status status="PASS" start="2026-04-08T01:04:01.418305" elapsed="0.001089"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:04:01.419697" level="INFO">index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-08T01:04:01.419862" level="INFO">${current_ssh_connection} = index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T01:04:01.419550" elapsed="0.000354"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:04:01.421108" level="INFO">Attempting to execute command "/tmp/karaf-0.23.1/bin/stop" on remote system "10.30.171.110" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:04:01.420118" elapsed="0.001089"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:04:01.422195" level="INFO">${conn_id} = 528</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T01:04:01.421435" elapsed="0.000803"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T01:04:01.424365" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T01:04:01.424540" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T01:04:01.423819" elapsed="0.000827"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:04:01.425545" elapsed="0.000692"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T01:04:01.428169" level="INFO">Logging into '10.30.171.110:22' as 'jenkins'.</msg>
<msg time="2026-04-08T01:04:02.723360" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 01:04:01 UTC 2026

  System load:  1.18               Processes:             121
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 7%                 IPv4 address for ens3: 10.30.171.110
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 01:01:28 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T01:04:01.427831" elapsed="1.295675"/>
</kw>
<msg time="2026-04-08T01:04:02.723620" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:04:01.427122" elapsed="1.296609"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T01:04:01.422542" elapsed="1.301347"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T01:04:02.724590" level="INFO">Executing command '/tmp/karaf-0.23.1/bin/stop'.</msg>
<msg time="2026-04-08T01:04:03.130839" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-08T01:04:03.131391" level="INFO">${stdout} = </msg>
<msg time="2026-04-08T01:04:03.131569" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T01:04:02.724225" elapsed="0.407434"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T01:04:03.132400" elapsed="0.000620"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:04:03.134992" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:04:03.133670" elapsed="0.001515"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T01:04:03.136276" elapsed="0.000042"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:04:03.135733" elapsed="0.000825"/>
</branch>
<status status="PASS" start="2026-04-08T01:04:03.135670" elapsed="0.000953"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T01:04:03.137224" elapsed="0.000077"/>
</return>
<status status="PASS" start="2026-04-08T01:04:03.136759" elapsed="0.000785"/>
</branch>
<status status="PASS" start="2026-04-08T01:04:03.136721" elapsed="0.000918"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T01:04:03.137728" elapsed="0.000037"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:04:03.144773" elapsed="0.000159"/>
</kw>
<msg time="2026-04-08T01:04:03.145006" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:04:03.143648" elapsed="0.001482"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:04:03.145406" elapsed="0.000064"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:04:03.145720" elapsed="0.000063"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:04:03.138533" elapsed="0.007352"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T01:04:01.417572" elapsed="1.728410"/>
</kw>
<msg time="2026-04-08T01:04:03.146037" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:04:01.416914" elapsed="1.729173"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-08T01:04:01.416376" elapsed="1.729810"/>
</kw>
<msg time="2026-04-08T01:04:03.146229" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:04:01.415854" elapsed="1.730421"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:04:03.149489" elapsed="0.000200"/>
</kw>
<msg time="2026-04-08T01:04:03.149733" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:04:03.148969" elapsed="0.000826"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:04:03.149959" elapsed="0.000022"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:04:03.150125" elapsed="0.000020"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:04:03.146569" elapsed="0.003657"/>
</kw>
<msg time="2026-04-08T01:04:03.150327" level="INFO">${output} = </msg>
<var>${output}</var>
<arg>Utils.Run_Command_On_Controller</arg>
<arg>${member_ip}</arg>
<arg>${command}</arg>
<doc>Store current connection index, run keyword returning its result, restore connection in teardown.
Note that in order to avoid "got positional argument after named arguments", it is safer to use positional (not named) arguments on call.</doc>
<status status="PASS" start="2026-04-08T01:04:01.414964" elapsed="1.735390"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:04:03.150805" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:04:03.150548" elapsed="0.000299"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-08T01:04:03.150890" elapsed="0.000028"/>
</return>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-08T01:04:01.413973" elapsed="1.737040"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T01:04:01.413793" elapsed="1.737257"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-08T01:03:58.228702" elapsed="4.922384"/>
</for>
<arg>command=${NODE_STOP_COMMAND}</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Cycle through indices (or all), run command on each.</doc>
<status status="PASS" start="2026-04-08T01:03:58.226542" elapsed="4.924604"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:04:03.151646" level="INFO">${updated_index_list} = [1, 2, 3]</msg>
<var>${updated_index_list}</var>
<arg>@{index_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:04:03.151326" elapsed="0.000347"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${updated_index_list}</arg>
<arg>@{stop_index_list}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="PASS" start="2026-04-08T01:04:03.151827" elapsed="0.000224"/>
</kw>
<if>
<branch type="IF" condition="not ${confirm}">
<return>
<value>${updated_index_list}</value>
<status status="NOT RUN" start="2026-04-08T01:04:03.152293" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:04:03.152125" elapsed="0.000211"/>
</branch>
<status status="PASS" start="2026-04-08T01:04:03.152106" elapsed="0.000252"/>
</if>
<for flavor="IN">
<iter>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:04:03.154568" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:04:03.154258" elapsed="0.000377"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:04:03.155545" level="INFO">${member_ip} = 10.30.170.48</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:04:03.155270" elapsed="0.000302"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:04:03.156416" level="INFO">index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-08T01:04:03.156518" level="INFO">${current_connection} = index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

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

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-08T01:04:03.160933" level="INFO">${current_ssh_connection} = index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T01:04:03.160685" elapsed="0.000275"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:04:03.161535" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.170.48" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:04:03.161132" elapsed="0.000462"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:04:03.162168" level="INFO">${conn_id} = 529</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T01:04:03.161775" elapsed="0.000421"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T01:04:03.163103" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T01:04:03.163210" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T01:04:03.162834" elapsed="0.000403"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:04:03.163397" elapsed="0.000316"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T01:04:03.164568" level="INFO">Logging into '10.30.170.48:22' as 'jenkins'.</msg>
<msg time="2026-04-08T01:04:03.486395" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 01:03:58 UTC 2026

  System load:  0.38               Processes:             121
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 7%                 IPv4 address for ens3: 10.30.170.48
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 01:03:58 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-0-builder-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T01:04:03.164254" elapsed="0.322303"/>
</kw>
<msg time="2026-04-08T01:04:03.486643" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:04:03.163882" elapsed="0.322855"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T01:04:03.162435" elapsed="0.324416"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T01:04:03.487419" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-08T01:04:03.510057" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-08T01:04:03.510336" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-08T01:04:03.510435" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T01:04:03.487147" elapsed="0.023339"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T01:04:03.510907" elapsed="0.000513"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:04:03.512584" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:04:03.511891" elapsed="0.000785"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T01:04:03.513347" elapsed="0.000063"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:04:03.513009" elapsed="0.000475"/>
</branch>
<status status="PASS" start="2026-04-08T01:04:03.512954" elapsed="0.000583"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T01:04:03.513953" elapsed="0.000060"/>
</return>
<status status="PASS" start="2026-04-08T01:04:03.513706" elapsed="0.000381"/>
</branch>
<status status="PASS" start="2026-04-08T01:04:03.513668" elapsed="0.000474"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T01:04:03.514296" elapsed="0.000037"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:04:03.522121" elapsed="0.000374"/>
</kw>
<msg time="2026-04-08T01:04:03.522608" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:04:03.520818" elapsed="0.001910"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:04:03.522892" elapsed="0.000021"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:04:03.523057" elapsed="0.000020"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:04:03.515257" elapsed="0.007881"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T01:04:03.159100" elapsed="0.364243"/>
</kw>
<msg time="2026-04-08T01:04:03.523413" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:04:03.157916" elapsed="0.365563"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-08T01:04:03.157234" elapsed="0.366618"/>
</kw>
<msg time="2026-04-08T01:04:03.523897" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:04:03.156703" elapsed="0.367242"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:04:03.527375" elapsed="0.000219"/>
</kw>
<msg time="2026-04-08T01:04:03.527695" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:04:03.526667" elapsed="0.001092"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:04:03.527920" elapsed="0.000022"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:04:03.528086" elapsed="0.000020"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:04:03.524269" elapsed="0.003928"/>
</kw>
<msg time="2026-04-08T01:04:03.528293" level="INFO">${output} = 1</msg>
<var>${output}</var>
<arg>Utils.Run_Command_On_Controller</arg>
<arg>${member_ip}</arg>
<arg>${command}</arg>
<doc>Store current connection index, run keyword returning its result, restore connection in teardown.
Note that in order to avoid "got positional argument after named arguments", it is safer to use positional (not named) arguments on call.</doc>
<status status="PASS" start="2026-04-08T01:04:03.155793" elapsed="0.372526"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:04:03.528750" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:04:03.528500" elapsed="0.000296"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-08T01:04:03.528838" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T01:04:03.528988" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-08T01:04:03.154841" elapsed="0.374173"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-08T01:04:03.529062" elapsed="0.000026"/>
</return>
<msg time="2026-04-08T01:04:03.529264" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-08T01:04:03.153632" elapsed="0.375658"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-08T01:04:03.529868" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-08T01:04:03.529476" elapsed="0.000467">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-08T01:04:03.153220" elapsed="0.376835">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:04:05.533570" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:04:05.532746" elapsed="0.000894"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:04:05.536280" level="INFO">${member_ip} = 10.30.170.48</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:04:05.535524" elapsed="0.000825"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:04:05.538844" level="INFO">index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-08T01:04:05.539086" level="INFO">${current_connection} = index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

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

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-08T01:04:05.546136" level="INFO">${current_ssh_connection} = index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T01:04:05.545785" elapsed="0.000428"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:04:05.547007" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.170.48" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:04:05.546462" elapsed="0.000610"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:04:05.547896" level="INFO">${conn_id} = 530</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T01:04:05.547363" elapsed="0.000569"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T01:04:05.549314" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T01:04:05.549420" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T01:04:05.548903" elapsed="0.000550"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:04:05.549676" elapsed="0.000477"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T01:04:05.551519" level="INFO">Logging into '10.30.170.48:22' as 'jenkins'.</msg>
<msg time="2026-04-08T01:04:05.872424" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 01:03:58 UTC 2026

  System load:  0.38               Processes:             121
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 7%                 IPv4 address for ens3: 10.30.170.48
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 01:04:03 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-0-builder-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T01:04:05.550926" elapsed="0.321591"/>
</kw>
<msg time="2026-04-08T01:04:05.872581" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:04:05.550429" elapsed="0.322229"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T01:04:05.548295" elapsed="0.324451"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T01:04:05.873192" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-08T01:04:05.896061" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-08T01:04:05.896345" level="INFO">${stdout} = 0</msg>
<msg time="2026-04-08T01:04:05.896444" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T01:04:05.872961" elapsed="0.023533"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T01:04:05.896921" elapsed="0.000507"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:04:05.898547" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:04:05.897875" elapsed="0.000768"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T01:04:05.899131" elapsed="0.000075"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:04:05.898852" elapsed="0.000429"/>
</branch>
<status status="PASS" start="2026-04-08T01:04:05.898802" elapsed="0.000528"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T01:04:05.899833" elapsed="0.000060"/>
</return>
<status status="PASS" start="2026-04-08T01:04:05.899584" elapsed="0.000382"/>
</branch>
<status status="PASS" start="2026-04-08T01:04:05.899544" elapsed="0.000498"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T01:04:05.900191" elapsed="0.000038"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:04:05.906546" elapsed="0.000211"/>
</kw>
<msg time="2026-04-08T01:04:05.906816" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:04:05.905770" elapsed="0.001133"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:04:05.907122" elapsed="0.000064"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:04:05.907391" elapsed="0.000029"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:04:05.901112" elapsed="0.006389"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T01:04:05.543442" elapsed="0.364314"/>
</kw>
<msg time="2026-04-08T01:04:05.907851" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:04:05.541731" elapsed="0.366211"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-08T01:04:05.540764" elapsed="0.367736"/>
</kw>
<msg time="2026-04-08T01:04:05.908562" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:04:05.539577" elapsed="0.369060"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:04:05.913325" elapsed="0.000301"/>
</kw>
<msg time="2026-04-08T01:04:05.913764" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:04:05.912514" elapsed="0.001342"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:04:05.914081" elapsed="0.000032"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:04:05.914342" elapsed="0.000030"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:04:05.909070" elapsed="0.005386"/>
</kw>
<msg time="2026-04-08T01:04:05.914582" level="INFO">${output} = 0</msg>
<var>${output}</var>
<arg>Utils.Run_Command_On_Controller</arg>
<arg>${member_ip}</arg>
<arg>${command}</arg>
<doc>Store current connection index, run keyword returning its result, restore connection in teardown.
Note that in order to avoid "got positional argument after named arguments", it is safer to use positional (not named) arguments on call.</doc>
<status status="PASS" start="2026-04-08T01:04:05.536890" elapsed="0.377726"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:04:05.915230" level="INFO">0</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:04:05.914862" elapsed="0.000429"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-08T01:04:05.915349" elapsed="0.000039"/>
</return>
<msg time="2026-04-08T01:04:05.915556" level="INFO">${count} = 0</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-08T01:04:05.534096" elapsed="0.381494"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-08T01:04:05.915654" elapsed="0.000036"/>
</return>
<msg time="2026-04-08T01:04:05.915850" level="INFO">${count} = 0</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-08T01:04:05.531884" elapsed="0.384000"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="PASS" start="2026-04-08T01:04:05.916137" elapsed="0.000548"/>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="PASS" start="2026-04-08T01:04:05.530828" elapsed="0.385955"/>
</kw>
<arg>${timeout}</arg>
<arg>2s</arg>
<arg>Verify_Karaf_Is_Not_Running_On_Member</arg>
<arg>member_index=${index}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-08T01:04:03.152680" elapsed="2.764157"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T01:04:03.152534" elapsed="2.764342"/>
</iter>
<iter>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:04:05.918875" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:04:05.918584" elapsed="0.000318"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:04:05.919782" level="INFO">${member_ip} = 10.30.170.131</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:04:05.919511" elapsed="0.000331"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:04:05.920662" level="INFO">index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-08T01:04:05.920760" level="INFO">${current_connection} = index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

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

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-08T01:04:05.925394" level="INFO">${current_ssh_connection} = index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T01:04:05.925133" elapsed="0.000288"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:04:05.925972" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.170.131" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:04:05.925592" elapsed="0.000426"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:04:05.926594" level="INFO">${conn_id} = 531</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T01:04:05.926225" elapsed="0.000397"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T01:04:05.927554" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T01:04:05.927629" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T01:04:05.927281" elapsed="0.000372"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:04:05.927812" elapsed="0.000340"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T01:04:05.929003" level="INFO">Logging into '10.30.170.131:22' as 'jenkins'.</msg>
<msg time="2026-04-08T01:04:06.243548" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 01:03:59 UTC 2026

  System load:  0.1                Processes:             122
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 7%                 IPv4 address for ens3: 10.30.170.131
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 01:04:00 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-0-builder-1 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T01:04:05.928695" elapsed="0.314968"/>
</kw>
<msg time="2026-04-08T01:04:06.243728" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:04:05.928340" elapsed="0.315455"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T01:04:05.926859" elapsed="0.317043"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T01:04:06.244340" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-08T01:04:06.266737" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-08T01:04:06.266985" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-08T01:04:06.267078" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T01:04:06.244120" elapsed="0.023009"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T01:04:06.267586" elapsed="0.000488"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:04:06.269127" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:04:06.268544" elapsed="0.000715"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T01:04:06.269728" elapsed="0.000034"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:04:06.269463" elapsed="0.000365"/>
</branch>
<status status="PASS" start="2026-04-08T01:04:06.269415" elapsed="0.000461"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T01:04:06.270386" elapsed="0.000062"/>
</return>
<status status="PASS" start="2026-04-08T01:04:06.270035" elapsed="0.000487"/>
</branch>
<status status="PASS" start="2026-04-08T01:04:06.270000" elapsed="0.000576"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T01:04:06.270691" elapsed="0.000034"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:04:06.276504" elapsed="0.000220"/>
</kw>
<msg time="2026-04-08T01:04:06.276786" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:04:06.275716" elapsed="0.001171"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:04:06.277121" elapsed="0.000052"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:04:06.277388" elapsed="0.000030"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:04:06.271620" elapsed="0.005886"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T01:04:05.923554" elapsed="0.354216"/>
</kw>
<msg time="2026-04-08T01:04:06.277870" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:04:05.922354" elapsed="0.355609"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-08T01:04:05.921672" elapsed="0.356860"/>
</kw>
<msg time="2026-04-08T01:04:06.278595" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:04:05.920941" elapsed="0.357722"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:04:06.283553" elapsed="0.000352"/>
</kw>
<msg time="2026-04-08T01:04:06.284052" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:04:06.282717" elapsed="0.001430"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:04:06.284408" elapsed="0.000031"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:04:06.284648" elapsed="0.000022"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:04:06.279087" elapsed="0.005642"/>
</kw>
<msg time="2026-04-08T01:04:06.284818" level="INFO">${output} = 1</msg>
<var>${output}</var>
<arg>Utils.Run_Command_On_Controller</arg>
<arg>${member_ip}</arg>
<arg>${command}</arg>
<doc>Store current connection index, run keyword returning its result, restore connection in teardown.
Note that in order to avoid "got positional argument after named arguments", it is safer to use positional (not named) arguments on call.</doc>
<status status="PASS" start="2026-04-08T01:04:05.920078" elapsed="0.364764"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:04:06.285303" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:04:06.285018" elapsed="0.000329"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-08T01:04:06.285388" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T01:04:06.285534" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-08T01:04:05.919095" elapsed="0.366464"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-08T01:04:06.285604" elapsed="0.000025"/>
</return>
<msg time="2026-04-08T01:04:06.285744" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-08T01:04:05.918241" elapsed="0.367527"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-08T01:04:06.286328" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-08T01:04:06.285925" elapsed="0.000479">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-08T01:04:05.917840" elapsed="0.368673">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:04:08.290078" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:04:08.289343" elapsed="0.000803"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:04:08.292304" level="INFO">${member_ip} = 10.30.170.131</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:04:08.291662" elapsed="0.000702"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:04:08.294591" level="INFO">index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-08T01:04:08.294869" level="INFO">${current_connection} = index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T01:04:08.294209" elapsed="0.000720"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Controller" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:04:08.301510" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:04:08.301059" elapsed="0.000529"/>
</branch>
<status status="PASS" start="2026-04-08T01:04:08.301024" elapsed="0.000600"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:04:08.302064" level="INFO">index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-08T01:04:08.302238" level="INFO">${current_ssh_connection} = index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T01:04:08.301857" elapsed="0.000420"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:04:08.303070" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.170.131" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:04:08.302517" elapsed="0.000617"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:04:08.303934" level="INFO">${conn_id} = 532</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T01:04:08.303404" elapsed="0.000566"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T01:04:08.305281" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T01:04:08.305386" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T01:04:08.304879" elapsed="0.000540"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:04:08.305642" elapsed="0.000442"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T01:04:08.307394" level="INFO">Logging into '10.30.170.131:22' as 'jenkins'.</msg>
<msg time="2026-04-08T01:04:08.618114" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 01:03:59 UTC 2026

  System load:  0.1                Processes:             122
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 7%                 IPv4 address for ens3: 10.30.170.131
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 01:04:06 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-0-builder-1 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T01:04:08.306937" elapsed="0.311269"/>
</kw>
<msg time="2026-04-08T01:04:08.618265" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:04:08.306404" elapsed="0.311931"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T01:04:08.304324" elapsed="0.314095"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T01:04:08.618836" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-08T01:04:08.641099" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-08T01:04:08.641365" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-08T01:04:08.641461" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T01:04:08.618647" elapsed="0.022863"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T01:04:08.641924" elapsed="0.000480"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:04:08.643505" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:04:08.642882" elapsed="0.000716"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T01:04:08.644065" elapsed="0.000035"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:04:08.643799" elapsed="0.000403"/>
</branch>
<status status="PASS" start="2026-04-08T01:04:08.643752" elapsed="0.000504"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T01:04:08.644656" elapsed="0.000059"/>
</return>
<status status="PASS" start="2026-04-08T01:04:08.644418" elapsed="0.000367"/>
</branch>
<status status="PASS" start="2026-04-08T01:04:08.644381" elapsed="0.000456"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T01:04:08.644950" elapsed="0.000035"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:04:08.652690" elapsed="0.000217"/>
</kw>
<msg time="2026-04-08T01:04:08.652967" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:04:08.651929" elapsed="0.001131"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:04:08.653305" elapsed="0.000031"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:04:08.653537" elapsed="0.000029"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:04:08.645975" elapsed="0.007674"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T01:04:08.299573" elapsed="0.354332"/>
</kw>
<msg time="2026-04-08T01:04:08.653999" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:04:08.297246" elapsed="0.356843"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-08T01:04:08.296286" elapsed="0.358346"/>
</kw>
<msg time="2026-04-08T01:04:08.654692" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:04:08.295322" elapsed="0.359434"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:04:08.659249" elapsed="0.000222"/>
</kw>
<msg time="2026-04-08T01:04:08.659571" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:04:08.658570" elapsed="0.001066"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:04:08.659797" elapsed="0.000022"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:04:08.659961" elapsed="0.000020"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:04:08.655201" elapsed="0.004840"/>
</kw>
<msg time="2026-04-08T01:04:08.660129" level="INFO">${output} = 1</msg>
<var>${output}</var>
<arg>Utils.Run_Command_On_Controller</arg>
<arg>${member_ip}</arg>
<arg>${command}</arg>
<doc>Store current connection index, run keyword returning its result, restore connection in teardown.
Note that in order to avoid "got positional argument after named arguments", it is safer to use positional (not named) arguments on call.</doc>
<status status="PASS" start="2026-04-08T01:04:08.292852" elapsed="0.367357"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:04:08.660643" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:04:08.660396" elapsed="0.000291"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-08T01:04:08.660728" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T01:04:08.660874" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-08T01:04:08.290679" elapsed="0.370219"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-08T01:04:08.660942" elapsed="0.000025"/>
</return>
<msg time="2026-04-08T01:04:08.661080" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-08T01:04:08.288496" elapsed="0.372608"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-08T01:04:08.661656" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-08T01:04:08.661273" elapsed="0.000457">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-08T01:04:08.287390" elapsed="0.374449">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:04:10.665399" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:04:10.664608" elapsed="0.000871"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:04:10.667631" level="INFO">${member_ip} = 10.30.170.131</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:04:10.666998" elapsed="0.000704"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:04:10.669571" level="INFO">index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-08T01:04:10.670112" level="INFO">${current_connection} = index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

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

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-08T01:04:10.677090" level="INFO">${current_ssh_connection} = index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T01:04:10.676838" elapsed="0.000280"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:04:10.677726" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.170.131" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:04:10.677315" elapsed="0.000469"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:04:10.678423" level="INFO">${conn_id} = 533</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T01:04:10.678011" elapsed="0.000442"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T01:04:10.679427" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T01:04:10.679504" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T01:04:10.679104" elapsed="0.000425"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:04:10.679708" elapsed="0.000324"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T01:04:10.680901" level="INFO">Logging into '10.30.170.131:22' as 'jenkins'.</msg>
<msg time="2026-04-08T01:04:10.993706" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 01:03:59 UTC 2026

  System load:  0.1                Processes:             122
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 7%                 IPv4 address for ens3: 10.30.170.131
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 01:04:08 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-0-builder-1 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T01:04:10.680587" elapsed="0.313268"/>
</kw>
<msg time="2026-04-08T01:04:10.993935" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:04:10.680227" elapsed="0.313797"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T01:04:10.678698" elapsed="0.315440"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T01:04:10.994701" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-08T01:04:11.016785" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-08T01:04:11.016905" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-08T01:04:11.016948" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T01:04:10.994452" elapsed="0.022519"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T01:04:11.017198" elapsed="0.000221"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:04:11.017981" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:04:11.017664" elapsed="0.000359"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T01:04:11.018309" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:04:11.018132" elapsed="0.000228"/>
</branch>
<status status="PASS" start="2026-04-08T01:04:11.018103" elapsed="0.000281"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T01:04:11.018571" elapsed="0.000028"/>
</return>
<status status="PASS" start="2026-04-08T01:04:11.018461" elapsed="0.000170"/>
</branch>
<status status="PASS" start="2026-04-08T01:04:11.018443" elapsed="0.000212"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T01:04:11.018706" elapsed="0.000016"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:04:11.022436" elapsed="0.000218"/>
</kw>
<msg time="2026-04-08T01:04:11.022699" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:04:11.021854" elapsed="0.000912"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:04:11.022929" elapsed="0.000022"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:04:11.023094" elapsed="0.000021"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:04:11.019143" elapsed="0.004054"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T01:04:10.675187" elapsed="0.348194"/>
</kw>
<msg time="2026-04-08T01:04:11.023451" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:04:10.673540" elapsed="0.349977"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-08T01:04:10.671769" elapsed="0.352114"/>
</kw>
<msg time="2026-04-08T01:04:11.023927" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:04:10.670577" elapsed="0.353397"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:04:11.027294" elapsed="0.000215"/>
</kw>
<msg time="2026-04-08T01:04:11.027607" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:04:11.026699" elapsed="0.000973"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:04:11.027833" elapsed="0.000022"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:04:11.027996" elapsed="0.000020"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:04:11.024286" elapsed="0.003790"/>
</kw>
<msg time="2026-04-08T01:04:11.028184" level="INFO">${output} = 1</msg>
<var>${output}</var>
<arg>Utils.Run_Command_On_Controller</arg>
<arg>${member_ip}</arg>
<arg>${command}</arg>
<doc>Store current connection index, run keyword returning its result, restore connection in teardown.
Note that in order to avoid "got positional argument after named arguments", it is safer to use positional (not named) arguments on call.</doc>
<status status="PASS" start="2026-04-08T01:04:10.668226" elapsed="0.359985"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:04:11.028645" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:04:11.028396" elapsed="0.000293"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-08T01:04:11.028730" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T01:04:11.028880" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-08T01:04:10.665955" elapsed="0.362950"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-08T01:04:11.028951" elapsed="0.000026"/>
</return>
<msg time="2026-04-08T01:04:11.029094" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-08T01:04:10.663767" elapsed="0.365351"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-08T01:04:11.029735" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-08T01:04:11.029342" elapsed="0.000468">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-08T01:04:10.662700" elapsed="0.367222">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:04:13.032734" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:04:13.032176" elapsed="0.000605"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:04:13.034524" level="INFO">${member_ip} = 10.30.170.131</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:04:13.034105" elapsed="0.000458"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:04:13.035728" level="INFO">index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-08T01:04:13.035870" level="INFO">${current_connection} = index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

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

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-08T01:04:13.042426" level="INFO">${current_ssh_connection} = index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T01:04:13.042149" elapsed="0.000304"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:04:13.043024" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.170.131" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:04:13.042629" elapsed="0.000443"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:04:13.043669" level="INFO">${conn_id} = 534</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T01:04:13.043270" elapsed="0.000426"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T01:04:13.044686" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T01:04:13.044763" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T01:04:13.044400" elapsed="0.000387"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:04:13.044952" elapsed="0.000344"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T01:04:13.046337" level="INFO">Logging into '10.30.170.131:22' as 'jenkins'.</msg>
<msg time="2026-04-08T01:04:13.363910" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 01:03:59 UTC 2026

  System load:  0.1                Processes:             122
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 7%                 IPv4 address for ens3: 10.30.170.131
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 01:04:10 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-0-builder-1 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T01:04:13.045829" elapsed="0.318269"/>
</kw>
<msg time="2026-04-08T01:04:13.364213" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:04:13.045469" elapsed="0.318847"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T01:04:13.043965" elapsed="0.320474"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T01:04:13.365025" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-08T01:04:13.387240" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-08T01:04:13.387387" level="INFO">${stdout} = 0</msg>
<msg time="2026-04-08T01:04:13.387432" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T01:04:13.364753" elapsed="0.022702"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T01:04:13.387696" elapsed="0.000324"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:04:13.388634" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:04:13.388298" elapsed="0.000379"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T01:04:13.389072" elapsed="0.000036"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:04:13.388791" elapsed="0.000434"/>
</branch>
<status status="PASS" start="2026-04-08T01:04:13.388762" elapsed="0.000519"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T01:04:13.389702" elapsed="0.000065"/>
</return>
<status status="PASS" start="2026-04-08T01:04:13.389452" elapsed="0.000389"/>
</branch>
<status status="PASS" start="2026-04-08T01:04:13.389414" elapsed="0.000482"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T01:04:13.390012" elapsed="0.000037"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:04:13.397544" elapsed="0.000158"/>
</kw>
<msg time="2026-04-08T01:04:13.397747" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:04:13.396933" elapsed="0.000946"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:04:13.398046" elapsed="0.000022"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:04:13.398267" elapsed="0.000024"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:04:13.391028" elapsed="0.007329"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T01:04:13.040056" elapsed="0.358640"/>
</kw>
<msg time="2026-04-08T01:04:13.398772" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:04:13.038002" elapsed="0.360841"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-08T01:04:13.037032" elapsed="0.362213"/>
</kw>
<msg time="2026-04-08T01:04:13.399290" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:04:13.036293" elapsed="0.363045"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:04:13.402657" elapsed="0.000219"/>
</kw>
<msg time="2026-04-08T01:04:13.402976" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:04:13.402059" elapsed="0.000984"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:04:13.403222" elapsed="0.000023"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:04:13.403447" elapsed="0.000023"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:04:13.399635" elapsed="0.003898"/>
</kw>
<msg time="2026-04-08T01:04:13.403627" level="INFO">${output} = 0</msg>
<var>${output}</var>
<arg>Utils.Run_Command_On_Controller</arg>
<arg>${member_ip}</arg>
<arg>${command}</arg>
<doc>Store current connection index, run keyword returning its result, restore connection in teardown.
Note that in order to avoid "got positional argument after named arguments", it is safer to use positional (not named) arguments on call.</doc>
<status status="PASS" start="2026-04-08T01:04:13.034878" elapsed="0.368774"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:04:13.404121" level="INFO">0</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:04:13.403836" elapsed="0.000388"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-08T01:04:13.404267" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T01:04:13.404422" level="INFO">${count} = 0</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-08T01:04:13.033093" elapsed="0.371354"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-08T01:04:13.404495" elapsed="0.000026"/>
</return>
<msg time="2026-04-08T01:04:13.404640" level="INFO">${count} = 0</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-08T01:04:13.031593" elapsed="0.373071"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="PASS" start="2026-04-08T01:04:13.404823" elapsed="0.000512"/>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="PASS" start="2026-04-08T01:04:13.030849" elapsed="0.374552"/>
</kw>
<arg>${timeout}</arg>
<arg>2s</arg>
<arg>Verify_Karaf_Is_Not_Running_On_Member</arg>
<arg>member_index=${index}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-08T01:04:05.917115" elapsed="7.488334"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T01:04:05.916971" elapsed="7.488517"/>
</iter>
<iter>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:04:13.407338" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:04:13.407026" elapsed="0.000339"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:04:13.408291" level="INFO">${member_ip} = 10.30.171.110</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:04:13.407994" elapsed="0.000323"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:04:13.409098" level="INFO">index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-08T01:04:13.409216" level="INFO">${current_connection} = index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

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

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-08T01:04:13.413936" level="INFO">${current_ssh_connection} = index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T01:04:13.413686" elapsed="0.000277"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:04:13.414592" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.110" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:04:13.414134" elapsed="0.000505"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:04:13.415246" level="INFO">${conn_id} = 535</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T01:04:13.414823" elapsed="0.000449"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T01:04:13.416242" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T01:04:13.416320" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T01:04:13.415941" elapsed="0.000403"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:04:13.416505" elapsed="0.000320"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T01:04:13.417742" level="INFO">Logging into '10.30.171.110:22' as 'jenkins'.</msg>
<msg time="2026-04-08T01:04:13.735109" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 01:04:01 UTC 2026

  System load:  1.18               Processes:             121
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 7%                 IPv4 address for ens3: 10.30.171.110
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 01:04:02 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T01:04:13.417427" elapsed="0.317859"/>
</kw>
<msg time="2026-04-08T01:04:13.735373" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:04:13.416995" elapsed="0.318473"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T01:04:13.415513" elapsed="0.320075"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T01:04:13.736265" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-08T01:04:13.758218" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-08T01:04:13.758488" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-08T01:04:13.758589" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T01:04:13.735955" elapsed="0.022684"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T01:04:13.759080" elapsed="0.000522"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:04:13.760811" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:04:13.760119" elapsed="0.000787"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T01:04:13.761475" elapsed="0.000040"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:04:13.761133" elapsed="0.000456"/>
</branch>
<status status="PASS" start="2026-04-08T01:04:13.761076" elapsed="0.000565"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T01:04:13.762051" elapsed="0.000061"/>
</return>
<status status="PASS" start="2026-04-08T01:04:13.761808" elapsed="0.000412"/>
</branch>
<status status="PASS" start="2026-04-08T01:04:13.761770" elapsed="0.000513"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T01:04:13.762398" elapsed="0.000037"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:04:13.768492" elapsed="0.000215"/>
</kw>
<msg time="2026-04-08T01:04:13.768768" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:04:13.767646" elapsed="0.001216"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:04:13.769189" elapsed="0.000034"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:04:13.769426" elapsed="0.000029"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:04:13.763374" elapsed="0.006168"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T01:04:13.412056" elapsed="0.357777"/>
</kw>
<msg time="2026-04-08T01:04:13.769933" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:04:13.410645" elapsed="0.359382"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-08T01:04:13.409964" elapsed="0.360593"/>
</kw>
<msg time="2026-04-08T01:04:13.770620" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:04:13.409445" elapsed="0.361241"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:04:13.775318" elapsed="0.000303"/>
</kw>
<msg time="2026-04-08T01:04:13.775857" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:04:13.774516" elapsed="0.001727"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:04:13.776496" elapsed="0.000033"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:04:13.776732" elapsed="0.000028"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:04:13.771097" elapsed="0.005769"/>
</kw>
<msg time="2026-04-08T01:04:13.777001" level="INFO">${output} = 1</msg>
<var>${output}</var>
<arg>Utils.Run_Command_On_Controller</arg>
<arg>${member_ip}</arg>
<arg>${command}</arg>
<doc>Store current connection index, run keyword returning its result, restore connection in teardown.
Note that in order to avoid "got positional argument after named arguments", it is safer to use positional (not named) arguments on call.</doc>
<status status="PASS" start="2026-04-08T01:04:13.408536" elapsed="0.368497"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:04:13.777499" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:04:13.777241" elapsed="0.000303"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-08T01:04:13.777585" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T01:04:13.777736" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-08T01:04:13.407563" elapsed="0.370198"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-08T01:04:13.777808" elapsed="0.000026"/>
</return>
<msg time="2026-04-08T01:04:13.777958" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-08T01:04:13.406679" elapsed="0.371304"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-08T01:04:13.778560" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-08T01:04:13.778141" elapsed="0.000494">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-08T01:04:13.406286" elapsed="0.372465">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:04:15.782134" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:04:15.781347" elapsed="0.000882"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:04:15.784232" level="INFO">${member_ip} = 10.30.171.110</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:04:15.783718" elapsed="0.000557"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:04:15.785569" level="INFO">index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-08T01:04:15.785723" level="INFO">${current_connection} = index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T01:04:15.785246" elapsed="0.000517"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Controller" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:04:15.792194" elapsed="0.000033"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:04:15.791731" elapsed="0.000546"/>
</branch>
<status status="PASS" start="2026-04-08T01:04:15.791697" elapsed="0.000616"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:04:15.792762" level="INFO">index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-08T01:04:15.792904" level="INFO">${current_ssh_connection} = index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T01:04:15.792551" elapsed="0.000390"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:04:15.793757" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.110" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:04:15.793203" elapsed="0.000620"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:04:15.794669" level="INFO">${conn_id} = 536</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T01:04:15.794075" elapsed="0.000633"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T01:04:15.795777" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T01:04:15.795852" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T01:04:15.795490" elapsed="0.000386"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:04:15.796036" elapsed="0.000356"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T01:04:15.797255" level="INFO">Logging into '10.30.171.110:22' as 'jenkins'.</msg>
<msg time="2026-04-08T01:04:16.122016" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 01:04:01 UTC 2026

  System load:  1.18               Processes:             121
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 7%                 IPv4 address for ens3: 10.30.171.110
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 01:04:13 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T01:04:15.796920" elapsed="0.325233"/>
</kw>
<msg time="2026-04-08T01:04:16.122252" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:04:15.796562" elapsed="0.325778"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T01:04:15.795062" elapsed="0.327434"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T01:04:16.123061" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-08T01:04:16.145218" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-08T01:04:16.145382" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-08T01:04:16.145458" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T01:04:16.122788" elapsed="0.022712"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T01:04:16.145801" elapsed="0.000303"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:04:16.146897" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:04:16.146471" elapsed="0.000498"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T01:04:16.147381" elapsed="0.000030"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:04:16.147141" elapsed="0.000317"/>
</branch>
<status status="PASS" start="2026-04-08T01:04:16.147103" elapsed="0.000387"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T01:04:16.147753" elapsed="0.000041"/>
</return>
<status status="PASS" start="2026-04-08T01:04:16.147598" elapsed="0.000246"/>
</branch>
<status status="PASS" start="2026-04-08T01:04:16.147574" elapsed="0.000316"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T01:04:16.147969" elapsed="0.000023"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:04:16.154783" elapsed="0.000272"/>
</kw>
<msg time="2026-04-08T01:04:16.155119" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:04:16.153453" elapsed="0.001824"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:04:16.155575" elapsed="0.000101"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:04:16.155892" elapsed="0.000030"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:04:16.148685" elapsed="0.007327"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T01:04:15.790217" elapsed="0.366125"/>
</kw>
<msg time="2026-04-08T01:04:16.156443" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:04:15.787860" elapsed="0.368679"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-08T01:04:15.786822" elapsed="0.370240"/>
</kw>
<msg time="2026-04-08T01:04:16.157134" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:04:15.786003" elapsed="0.371253"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:04:16.162328" elapsed="0.000322"/>
</kw>
<msg time="2026-04-08T01:04:16.162791" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:04:16.161475" elapsed="0.001409"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:04:16.163113" elapsed="0.000033"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:04:16.163429" elapsed="0.000029"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:04:16.157761" elapsed="0.005783"/>
</kw>
<msg time="2026-04-08T01:04:16.163671" level="INFO">${output} = 1</msg>
<var>${output}</var>
<arg>Utils.Run_Command_On_Controller</arg>
<arg>${member_ip}</arg>
<arg>${command}</arg>
<doc>Store current connection index, run keyword returning its result, restore connection in teardown.
Note that in order to avoid "got positional argument after named arguments", it is safer to use positional (not named) arguments on call.</doc>
<status status="PASS" start="2026-04-08T01:04:15.784604" elapsed="0.379102"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:04:16.164351" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:04:16.163973" elapsed="0.000442"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-08T01:04:16.164475" elapsed="0.000041"/>
</return>
<msg time="2026-04-08T01:04:16.164752" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-08T01:04:15.782753" elapsed="0.382043"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-08T01:04:16.164864" elapsed="0.000039"/>
</return>
<msg time="2026-04-08T01:04:16.165072" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-08T01:04:15.780512" elapsed="0.384596"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-08T01:04:16.165975" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-08T01:04:16.165367" elapsed="0.000725">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-08T01:04:15.779410" elapsed="0.386902">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:04:18.169790" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:04:18.168992" elapsed="0.000865"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:04:18.171888" level="INFO">${member_ip} = 10.30.171.110</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:04:18.171287" elapsed="0.000663"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:04:18.173816" level="INFO">index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-08T01:04:18.174023" level="INFO">${current_connection} = index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

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

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-08T01:04:18.180875" level="INFO">${current_ssh_connection} = index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T01:04:18.180518" elapsed="0.000397"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:04:18.181755" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.110" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:04:18.181182" elapsed="0.000640"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:04:18.182639" level="INFO">${conn_id} = 537</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T01:04:18.182077" elapsed="0.000599"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T01:04:18.183975" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T01:04:18.184082" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T01:04:18.183591" elapsed="0.000524"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:04:18.184412" elapsed="0.000446"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T01:04:18.186147" level="INFO">Logging into '10.30.171.110:22' as 'jenkins'.</msg>
<msg time="2026-04-08T01:04:18.496211" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 01:04:01 UTC 2026

  System load:  1.18               Processes:             121
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 7%                 IPv4 address for ens3: 10.30.171.110
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 01:04:16 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T01:04:18.185674" elapsed="0.310626"/>
</kw>
<msg time="2026-04-08T01:04:18.496364" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:04:18.185097" elapsed="0.311339"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T01:04:18.183008" elapsed="0.313519"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T01:04:18.496936" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-08T01:04:18.519186" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-08T01:04:18.519421" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-08T01:04:18.519515" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T01:04:18.496741" elapsed="0.022824"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T01:04:18.519978" elapsed="0.000500"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:04:18.521569" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:04:18.520917" elapsed="0.000745"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T01:04:18.522138" elapsed="0.000068"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:04:18.521867" elapsed="0.000411"/>
</branch>
<status status="PASS" start="2026-04-08T01:04:18.521817" elapsed="0.000510"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T01:04:18.522726" elapsed="0.000057"/>
</return>
<status status="PASS" start="2026-04-08T01:04:18.522489" elapsed="0.000365"/>
</branch>
<status status="PASS" start="2026-04-08T01:04:18.522452" elapsed="0.000453"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T01:04:18.523019" elapsed="0.000036"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:04:18.530465" elapsed="0.000152"/>
</kw>
<msg time="2026-04-08T01:04:18.530660" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:04:18.529744" elapsed="0.000980"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:04:18.530884" elapsed="0.000022"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:04:18.531047" elapsed="0.000020"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:04:18.523949" elapsed="0.007240"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T01:04:18.178093" elapsed="0.353280"/>
</kw>
<msg time="2026-04-08T01:04:18.531440" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:04:18.176009" elapsed="0.355496"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-08T01:04:18.175032" elapsed="0.356832"/>
</kw>
<msg time="2026-04-08T01:04:18.531908" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:04:18.174305" elapsed="0.357651"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:04:18.535234" elapsed="0.000220"/>
</kw>
<msg time="2026-04-08T01:04:18.535553" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:04:18.534667" elapsed="0.000952"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:04:18.535780" elapsed="0.000022"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:04:18.535946" elapsed="0.000021"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:04:18.532266" elapsed="0.003761"/>
</kw>
<msg time="2026-04-08T01:04:18.536116" level="INFO">${output} = 1</msg>
<var>${output}</var>
<arg>Utils.Run_Command_On_Controller</arg>
<arg>${member_ip}</arg>
<arg>${command}</arg>
<doc>Store current connection index, run keyword returning its result, restore connection in teardown.
Note that in order to avoid "got positional argument after named arguments", it is safer to use positional (not named) arguments on call.</doc>
<status status="PASS" start="2026-04-08T01:04:18.172466" elapsed="0.363675"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:04:18.536585" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:04:18.536337" elapsed="0.000294"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-08T01:04:18.536672" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T01:04:18.536818" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-08T01:04:18.170341" elapsed="0.366502"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-08T01:04:18.536888" elapsed="0.000025"/>
</return>
<msg time="2026-04-08T01:04:18.537027" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-08T01:04:18.168149" elapsed="0.368902"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-08T01:04:18.537661" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-08T01:04:18.537275" elapsed="0.000459">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-08T01:04:18.167109" elapsed="0.370734">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:04:20.541206" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:04:20.540446" elapsed="0.000831"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:04:20.543278" level="INFO">${member_ip} = 10.30.171.110</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:04:20.542651" elapsed="0.000685"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:04:20.545316" level="INFO">index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-08T01:04:20.545459" level="INFO">${current_connection} = index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T01:04:20.545017" elapsed="0.000479"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Controller" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:04:20.551719" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:04:20.551301" elapsed="0.000496"/>
</branch>
<status status="PASS" start="2026-04-08T01:04:20.551266" elapsed="0.000568"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:04:20.552439" level="INFO">index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-08T01:04:20.552581" level="INFO">${current_ssh_connection} = index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T01:04:20.552206" elapsed="0.000413"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:04:20.553425" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.110" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:04:20.552864" elapsed="0.000626"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:04:20.554292" level="INFO">${conn_id} = 538</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T01:04:20.553741" elapsed="0.000588"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T01:04:20.555622" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T01:04:20.555727" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T01:04:20.555236" elapsed="0.000523"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:04:20.555982" elapsed="0.000560"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T01:04:20.557626" level="INFO">Logging into '10.30.171.110:22' as 'jenkins'.</msg>
<msg time="2026-04-08T01:04:20.870871" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 01:04:01 UTC 2026

  System load:  1.18               Processes:             121
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 7%                 IPv4 address for ens3: 10.30.171.110
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 01:04:18 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T01:04:20.557313" elapsed="0.313740"/>
</kw>
<msg time="2026-04-08T01:04:20.871146" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:04:20.556780" elapsed="0.314488"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T01:04:20.554658" elapsed="0.316742"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T01:04:20.872112" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-08T01:04:20.894414" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-08T01:04:20.894667" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-08T01:04:20.894764" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T01:04:20.871754" elapsed="0.023061"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T01:04:20.895282" elapsed="0.000504"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:04:20.897020" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:04:20.896346" elapsed="0.000771"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T01:04:20.897690" elapsed="0.000035"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:04:20.897384" elapsed="0.000411"/>
</branch>
<status status="PASS" start="2026-04-08T01:04:20.897327" elapsed="0.000518"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T01:04:20.898314" elapsed="0.000061"/>
</return>
<status status="PASS" start="2026-04-08T01:04:20.898006" elapsed="0.000442"/>
</branch>
<status status="PASS" start="2026-04-08T01:04:20.897970" elapsed="0.000530"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T01:04:20.898615" elapsed="0.000036"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:04:20.907113" elapsed="0.000238"/>
</kw>
<msg time="2026-04-08T01:04:20.907414" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:04:20.906326" elapsed="0.001178"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:04:20.907724" elapsed="0.000030"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:04:20.907949" elapsed="0.000028"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:04:20.899595" elapsed="0.008482"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T01:04:20.549635" elapsed="0.358737"/>
</kw>
<msg time="2026-04-08T01:04:20.908532" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:04:20.547411" elapsed="0.361213"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-08T01:04:20.546458" elapsed="0.362667"/>
</kw>
<msg time="2026-04-08T01:04:20.909209" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:04:20.545720" elapsed="0.363554"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:04:20.913676" elapsed="0.000214"/>
</kw>
<msg time="2026-04-08T01:04:20.913992" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:04:20.913069" elapsed="0.000989"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:04:20.914238" elapsed="0.000022"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:04:20.914516" elapsed="0.000023"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:04:20.909680" elapsed="0.004923"/>
</kw>
<msg time="2026-04-08T01:04:20.914692" level="INFO">${output} = 1</msg>
<var>${output}</var>
<arg>Utils.Run_Command_On_Controller</arg>
<arg>${member_ip}</arg>
<arg>${command}</arg>
<doc>Store current connection index, run keyword returning its result, restore connection in teardown.
Note that in order to avoid "got positional argument after named arguments", it is safer to use positional (not named) arguments on call.</doc>
<status status="PASS" start="2026-04-08T01:04:20.543919" elapsed="0.370797"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:04:20.915145" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:04:20.914898" elapsed="0.000312"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-08T01:04:20.915251" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T01:04:20.915401" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-08T01:04:20.541722" elapsed="0.373703"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-08T01:04:20.915471" elapsed="0.000026"/>
</return>
<msg time="2026-04-08T01:04:20.915615" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-08T01:04:20.539597" elapsed="0.376042"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-08T01:04:20.916228" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-08T01:04:20.915795" elapsed="0.000514">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-08T01:04:20.538557" elapsed="0.377866">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:04:22.919945" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:04:22.919211" elapsed="0.000802"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:04:22.922048" level="INFO">${member_ip} = 10.30.171.110</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:04:22.921449" elapsed="0.000658"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:04:22.924075" level="INFO">index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-08T01:04:22.924322" level="INFO">${current_connection} = index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

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

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-08T01:04:22.931132" level="INFO">${current_ssh_connection} = index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T01:04:22.930675" elapsed="0.000534"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:04:22.932010" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.110" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:04:22.931460" elapsed="0.000618"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:04:22.932883" level="INFO">${conn_id} = 539</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T01:04:22.932352" elapsed="0.000569"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T01:04:22.934242" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T01:04:22.934350" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T01:04:22.933835" elapsed="0.000549"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:04:22.934609" elapsed="0.000447"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T01:04:22.936466" level="INFO">Logging into '10.30.171.110:22' as 'jenkins'.</msg>
<msg time="2026-04-08T01:04:23.247541" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 01:04:01 UTC 2026

  System load:  1.18               Processes:             121
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 7%                 IPv4 address for ens3: 10.30.171.110
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 01:04:20 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T01:04:22.935918" elapsed="0.311778"/>
</kw>
<msg time="2026-04-08T01:04:23.247782" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:04:22.935413" elapsed="0.312463"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T01:04:22.933275" elapsed="0.314718"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T01:04:23.248604" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-08T01:04:23.270853" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-08T01:04:23.270988" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-08T01:04:23.271033" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T01:04:23.248324" elapsed="0.022732"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T01:04:23.271271" elapsed="0.000246"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:04:23.272060" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:04:23.271755" elapsed="0.000346"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T01:04:23.272391" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:04:23.272237" elapsed="0.000205"/>
</branch>
<status status="PASS" start="2026-04-08T01:04:23.272208" elapsed="0.000257"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T01:04:23.272650" elapsed="0.000028"/>
</return>
<status status="PASS" start="2026-04-08T01:04:23.272540" elapsed="0.000170"/>
</branch>
<status status="PASS" start="2026-04-08T01:04:23.272523" elapsed="0.000211"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T01:04:23.272786" elapsed="0.000015"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:04:23.276550" elapsed="0.000154"/>
</kw>
<msg time="2026-04-08T01:04:23.276747" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:04:23.275945" elapsed="0.000868"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:04:23.276974" elapsed="0.000022"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:04:23.277140" elapsed="0.000037"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:04:23.273244" elapsed="0.003997"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T01:04:22.928363" elapsed="0.349061"/>
</kw>
<msg time="2026-04-08T01:04:23.277548" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:04:22.926315" elapsed="0.351301"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-08T01:04:22.925336" elapsed="0.352639"/>
</kw>
<msg time="2026-04-08T01:04:23.278018" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:04:22.924593" elapsed="0.353473"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:04:23.281403" elapsed="0.000211"/>
</kw>
<msg time="2026-04-08T01:04:23.281716" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:04:23.280877" elapsed="0.000908"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:04:23.281950" elapsed="0.000022"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:04:23.282115" elapsed="0.000020"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:04:23.278380" elapsed="0.003838"/>
</kw>
<msg time="2026-04-08T01:04:23.282311" level="INFO">${output} = 1</msg>
<var>${output}</var>
<arg>Utils.Run_Command_On_Controller</arg>
<arg>${member_ip}</arg>
<arg>${command}</arg>
<doc>Store current connection index, run keyword returning its result, restore connection in teardown.
Note that in order to avoid "got positional argument after named arguments", it is safer to use positional (not named) arguments on call.</doc>
<status status="PASS" start="2026-04-08T01:04:22.922630" elapsed="0.359705"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:04:23.282763" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:04:23.282514" elapsed="0.000294"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-08T01:04:23.282849" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T01:04:23.283021" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-08T01:04:22.920498" elapsed="0.362547"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-08T01:04:23.283091" elapsed="0.000026"/>
</return>
<msg time="2026-04-08T01:04:23.283254" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-08T01:04:22.918337" elapsed="0.364943"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-08T01:04:23.283825" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-08T01:04:23.283435" elapsed="0.000465">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-08T01:04:22.917276" elapsed="0.366736">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:04:25.287724" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:04:25.286859" elapsed="0.000953"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:04:25.290262" level="INFO">${member_ip} = 10.30.171.110</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:04:25.289529" elapsed="0.000798"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:04:25.292203" level="INFO">index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-08T01:04:25.292433" level="INFO">${current_connection} = index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T01:04:25.291811" elapsed="0.000683"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Controller" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:04:25.298285" elapsed="0.000029"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:04:25.297846" elapsed="0.000512"/>
</branch>
<status status="PASS" start="2026-04-08T01:04:25.297811" elapsed="0.000574"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:04:25.298713" level="INFO">index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-08T01:04:25.298819" level="INFO">${current_ssh_connection} = index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T01:04:25.298560" elapsed="0.000286"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:04:25.299441" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.110" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:04:25.299022" elapsed="0.000552"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:04:25.300187" level="INFO">${conn_id} = 540</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T01:04:25.299764" elapsed="0.000452"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T01:04:25.301154" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T01:04:25.301254" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T01:04:25.300866" elapsed="0.000412"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:04:25.301438" elapsed="0.000351"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T01:04:25.302861" level="INFO">Logging into '10.30.171.110:22' as 'jenkins'.</msg>
<msg time="2026-04-08T01:04:25.608531" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 01:04:01 UTC 2026

  System load:  1.18               Processes:             121
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 7%                 IPv4 address for ens3: 10.30.171.110
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 01:04:23 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T01:04:25.302375" elapsed="0.306314"/>
</kw>
<msg time="2026-04-08T01:04:25.608772" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:04:25.301989" elapsed="0.306871"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T01:04:25.300461" elapsed="0.308511"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T01:04:25.609544" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-08T01:04:25.631870" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-08T01:04:25.632138" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-08T01:04:25.632288" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T01:04:25.609289" elapsed="0.023055"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T01:04:25.632804" elapsed="0.000559"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:04:25.634643" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:04:25.633891" elapsed="0.000851"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T01:04:25.635329" elapsed="0.000039"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:04:25.634973" elapsed="0.000474"/>
</branch>
<status status="PASS" start="2026-04-08T01:04:25.634917" elapsed="0.000585"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T01:04:25.635933" elapsed="0.000066"/>
</return>
<status status="PASS" start="2026-04-08T01:04:25.635676" elapsed="0.000400"/>
</branch>
<status status="PASS" start="2026-04-08T01:04:25.635636" elapsed="0.000497"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T01:04:25.636291" elapsed="0.000039"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:04:25.643734" elapsed="0.000214"/>
</kw>
<msg time="2026-04-08T01:04:25.644009" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:04:25.642936" elapsed="0.001166"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:04:25.644356" elapsed="0.000031"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:04:25.644588" elapsed="0.000029"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:04:25.637319" elapsed="0.007386"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T01:04:25.296618" elapsed="0.348342"/>
</kw>
<msg time="2026-04-08T01:04:25.645057" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:04:25.295059" elapsed="0.350088"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-08T01:04:25.294105" elapsed="0.351639"/>
</kw>
<msg time="2026-04-08T01:04:25.645822" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:04:25.292848" elapsed="0.353043"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:04:25.650466" elapsed="0.000297"/>
</kw>
<msg time="2026-04-08T01:04:25.650899" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:04:25.649711" elapsed="0.001280"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:04:25.651314" elapsed="0.000033"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:04:25.651549" elapsed="0.000029"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:04:25.646347" elapsed="0.005315"/>
</kw>
<msg time="2026-04-08T01:04:25.651788" level="INFO">${output} = 1</msg>
<var>${output}</var>
<arg>Utils.Run_Command_On_Controller</arg>
<arg>${member_ip}</arg>
<arg>${command}</arg>
<doc>Store current connection index, run keyword returning its result, restore connection in teardown.
Note that in order to avoid "got positional argument after named arguments", it is safer to use positional (not named) arguments on call.</doc>
<status status="PASS" start="2026-04-08T01:04:25.290858" elapsed="0.360964"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:04:25.652456" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:04:25.652081" elapsed="0.000438"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-08T01:04:25.652578" elapsed="0.000039"/>
</return>
<msg time="2026-04-08T01:04:25.652916" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-08T01:04:25.288421" elapsed="0.364531"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-08T01:04:25.653019" elapsed="0.000036"/>
</return>
<msg time="2026-04-08T01:04:25.653245" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-08T01:04:25.285911" elapsed="0.367369"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-08T01:04:25.654304" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-08T01:04:25.653648" elapsed="0.000738">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-08T01:04:25.284820" elapsed="0.369825">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:04:27.658515" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:04:27.657624" elapsed="0.000970"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:04:27.661011" level="INFO">${member_ip} = 10.30.171.110</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:04:27.660259" elapsed="0.000821"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:04:27.662553" level="INFO">index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-08T01:04:27.662717" level="INFO">${current_connection} = index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T01:04:27.662271" elapsed="0.000491"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Controller" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:04:27.669746" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:04:27.669315" elapsed="0.000496"/>
</branch>
<status status="PASS" start="2026-04-08T01:04:27.669266" elapsed="0.000577"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:04:27.670238" level="INFO">index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-08T01:04:27.670359" level="INFO">${current_ssh_connection} = index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T01:04:27.670047" elapsed="0.000343"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:04:27.671039" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.110" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:04:27.670595" elapsed="0.000497"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:04:27.671844" level="INFO">${conn_id} = 541</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T01:04:27.671392" elapsed="0.000482"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T01:04:27.672977" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T01:04:27.673063" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T01:04:27.672635" elapsed="0.000454"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:04:27.673358" elapsed="0.000373"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T01:04:27.674734" level="INFO">Logging into '10.30.171.110:22' as 'jenkins'.</msg>
<msg time="2026-04-08T01:04:27.986272" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 01:04:01 UTC 2026

  System load:  1.18               Processes:             121
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 7%                 IPv4 address for ens3: 10.30.171.110
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 01:04:25 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T01:04:27.674373" elapsed="0.312075"/>
</kw>
<msg time="2026-04-08T01:04:27.986555" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:04:27.673934" elapsed="0.312734"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T01:04:27.672153" elapsed="0.314660"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T01:04:27.987509" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-08T01:04:28.010488" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-08T01:04:28.010825" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-08T01:04:28.010923" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T01:04:27.987205" elapsed="0.023769"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T01:04:28.011698" elapsed="0.000645"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:04:28.013624" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:04:28.012886" elapsed="0.000839"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T01:04:28.014307" elapsed="0.000039"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:04:28.013958" elapsed="0.000463"/>
</branch>
<status status="PASS" start="2026-04-08T01:04:28.013901" elapsed="0.000571"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T01:04:28.014895" elapsed="0.000072"/>
</return>
<status status="PASS" start="2026-04-08T01:04:28.014646" elapsed="0.000398"/>
</branch>
<status status="PASS" start="2026-04-08T01:04:28.014606" elapsed="0.000493"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T01:04:28.015256" elapsed="0.000039"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:04:28.022393" elapsed="0.000159"/>
</kw>
<msg time="2026-04-08T01:04:28.022598" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:04:28.021844" elapsed="0.000825"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:04:28.022834" elapsed="0.000022"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:04:28.023006" elapsed="0.000021"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:04:28.016265" elapsed="0.006829"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T01:04:27.667546" elapsed="0.355771"/>
</kw>
<msg time="2026-04-08T01:04:28.023391" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:04:27.665024" elapsed="0.358438"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-08T01:04:27.663900" elapsed="0.359930"/>
</kw>
<msg time="2026-04-08T01:04:28.023935" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:04:27.663027" elapsed="0.360962"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:04:28.028120" elapsed="0.000293"/>
</kw>
<msg time="2026-04-08T01:04:28.028538" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:04:28.027317" elapsed="0.001303"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:04:28.028848" elapsed="0.000026"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:04:28.029033" elapsed="0.000022"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:04:28.024312" elapsed="0.004808"/>
</kw>
<msg time="2026-04-08T01:04:28.029238" level="INFO">${output} = 1</msg>
<var>${output}</var>
<arg>Utils.Run_Command_On_Controller</arg>
<arg>${member_ip}</arg>
<arg>${command}</arg>
<doc>Store current connection index, run keyword returning its result, restore connection in teardown.
Note that in order to avoid "got positional argument after named arguments", it is safer to use positional (not named) arguments on call.</doc>
<status status="PASS" start="2026-04-08T01:04:27.661547" elapsed="0.367718"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:04:28.029744" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:04:28.029474" elapsed="0.000319"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-08T01:04:28.029836" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T01:04:28.029994" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-08T01:04:27.659128" elapsed="0.370898"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-08T01:04:28.030094" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T01:04:28.030266" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-08T01:04:27.656519" elapsed="0.373773"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-08T01:04:28.030862" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-08T01:04:28.030456" elapsed="0.000485">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-08T01:04:27.655477" elapsed="0.375583">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:04:30.034793" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:04:30.033977" elapsed="0.000887"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:04:30.037291" level="INFO">${member_ip} = 10.30.171.110</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:04:30.036618" elapsed="0.000735"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:04:30.039213" level="INFO">index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-08T01:04:30.039447" level="INFO">${current_connection} = index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T01:04:30.038822" elapsed="0.000686"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Controller" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:04:30.049422" elapsed="0.000049"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:04:30.048739" elapsed="0.000816"/>
</branch>
<status status="PASS" start="2026-04-08T01:04:30.048688" elapsed="0.000923"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:04:30.050354" level="INFO">index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-08T01:04:30.050583" level="INFO">${current_ssh_connection} = index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T01:04:30.049992" elapsed="0.000651"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:04:30.052019" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.110" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:04:30.051029" elapsed="0.001095"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:04:30.052856" level="INFO">${conn_id} = 542</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T01:04:30.052461" elapsed="0.000421"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T01:04:30.053908" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T01:04:30.053986" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T01:04:30.053624" elapsed="0.000386"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:04:30.054257" elapsed="0.000333"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T01:04:30.055468" level="INFO">Logging into '10.30.171.110:22' as 'jenkins'.</msg>
<msg time="2026-04-08T01:04:30.356380" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 01:04:01 UTC 2026

  System load:  1.18               Processes:             121
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 7%                 IPv4 address for ens3: 10.30.171.110
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 01:04:27 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T01:04:30.055126" elapsed="0.301440"/>
</kw>
<msg time="2026-04-08T01:04:30.356661" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:04:30.054764" elapsed="0.302003"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T01:04:30.053209" elapsed="0.303688"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T01:04:30.357581" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-08T01:04:30.379957" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-08T01:04:30.380247" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-08T01:04:30.380347" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T01:04:30.357274" elapsed="0.023124"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T01:04:30.380823" elapsed="0.000532"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:04:30.382547" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:04:30.381848" elapsed="0.000793"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T01:04:30.383206" elapsed="0.000041"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:04:30.382868" elapsed="0.000456"/>
</branch>
<status status="PASS" start="2026-04-08T01:04:30.382809" elapsed="0.000567"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T01:04:30.383846" elapsed="0.000060"/>
</return>
<status status="PASS" start="2026-04-08T01:04:30.383598" elapsed="0.000379"/>
</branch>
<status status="PASS" start="2026-04-08T01:04:30.383552" elapsed="0.000478"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T01:04:30.384144" elapsed="0.000066"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:04:30.392233" elapsed="0.000340"/>
</kw>
<msg time="2026-04-08T01:04:30.392668" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:04:30.391066" elapsed="0.001743"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:04:30.393199" elapsed="0.000052"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:04:30.393569" elapsed="0.000044"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:04:30.385125" elapsed="0.008622"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T01:04:30.046293" elapsed="0.347856"/>
</kw>
<msg time="2026-04-08T01:04:30.394367" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:04:30.042988" elapsed="0.351525"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-08T01:04:30.041416" elapsed="0.353922"/>
</kw>
<msg time="2026-04-08T01:04:30.395433" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:04:30.039879" elapsed="0.355701"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:04:30.399354" elapsed="0.000226"/>
</kw>
<msg time="2026-04-08T01:04:30.399678" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:04:30.398818" elapsed="0.000925"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:04:30.399909" elapsed="0.000022"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:04:30.400071" elapsed="0.000021"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:04:30.396378" elapsed="0.003798"/>
</kw>
<msg time="2026-04-08T01:04:30.400273" level="INFO">${output} = 1</msg>
<var>${output}</var>
<arg>Utils.Run_Command_On_Controller</arg>
<arg>${member_ip}</arg>
<arg>${command}</arg>
<doc>Store current connection index, run keyword returning its result, restore connection in teardown.
Note that in order to avoid "got positional argument after named arguments", it is safer to use positional (not named) arguments on call.</doc>
<status status="PASS" start="2026-04-08T01:04:30.037847" elapsed="0.362451"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:04:30.400724" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:04:30.400476" elapsed="0.000291"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-08T01:04:30.400808" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T01:04:30.400957" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-08T01:04:30.035498" elapsed="0.365484"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-08T01:04:30.401027" elapsed="0.000026"/>
</return>
<msg time="2026-04-08T01:04:30.401218" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-08T01:04:30.033126" elapsed="0.368119"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-08T01:04:30.401808" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-08T01:04:30.401406" elapsed="0.000483">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-08T01:04:30.032032" elapsed="0.369974">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:04:32.405657" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:04:32.404867" elapsed="0.000859"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:04:32.407858" level="INFO">${member_ip} = 10.30.171.110</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:04:32.407141" elapsed="0.000778"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:04:32.409751" level="INFO">index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-08T01:04:32.409973" level="INFO">${current_connection} = index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

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

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-08T01:04:32.415753" level="INFO">${current_ssh_connection} = index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T01:04:32.415502" elapsed="0.000278"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:04:32.416375" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.110" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:04:32.415952" elapsed="0.000492"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:04:32.417049" level="INFO">${conn_id} = 543</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T01:04:32.416642" elapsed="0.000433"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T01:04:32.418017" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T01:04:32.418200" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T01:04:32.417737" elapsed="0.000491"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:04:32.418393" elapsed="0.000338"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T01:04:32.419599" level="INFO">Logging into '10.30.171.110:22' as 'jenkins'.</msg>
<msg time="2026-04-08T01:04:32.730522" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 01:04:01 UTC 2026

  System load:  1.18               Processes:             121
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 7%                 IPv4 address for ens3: 10.30.171.110
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 01:04:30 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T01:04:32.419280" elapsed="0.311593"/>
</kw>
<msg time="2026-04-08T01:04:32.730956" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:04:32.418904" elapsed="0.312142"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T01:04:32.417339" elapsed="0.313834"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T01:04:32.731716" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-08T01:04:32.753734" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-08T01:04:32.753998" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-08T01:04:32.754103" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T01:04:32.731462" elapsed="0.022732"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T01:04:32.754702" elapsed="0.000541"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:04:32.756453" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:04:32.755750" elapsed="0.000803"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T01:04:32.757096" elapsed="0.000039"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:04:32.756783" elapsed="0.000462"/>
</branch>
<status status="PASS" start="2026-04-08T01:04:32.756727" elapsed="0.000574"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T01:04:32.757735" elapsed="0.000064"/>
</return>
<status status="PASS" start="2026-04-08T01:04:32.757478" elapsed="0.000398"/>
</branch>
<status status="PASS" start="2026-04-08T01:04:32.757436" elapsed="0.000496"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T01:04:32.758054" elapsed="0.000037"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:04:32.764828" elapsed="0.000152"/>
</kw>
<msg time="2026-04-08T01:04:32.765023" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:04:32.764331" elapsed="0.000758"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:04:32.765269" elapsed="0.000023"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:04:32.765440" elapsed="0.000022"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:04:32.759110" elapsed="0.006413"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T01:04:32.413829" elapsed="0.351886"/>
</kw>
<msg time="2026-04-08T01:04:32.765785" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:04:32.412344" elapsed="0.353508"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-08T01:04:32.411607" elapsed="0.354626"/>
</kw>
<msg time="2026-04-08T01:04:32.766276" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:04:32.410416" elapsed="0.355908"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:04:32.769547" elapsed="0.000211"/>
</kw>
<msg time="2026-04-08T01:04:32.769922" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:04:32.769019" elapsed="0.000971"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:04:32.770169" elapsed="0.000023"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:04:32.770338" elapsed="0.000040"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:04:32.766640" elapsed="0.003805"/>
</kw>
<msg time="2026-04-08T01:04:32.770537" level="INFO">${output} = 1</msg>
<var>${output}</var>
<arg>Utils.Run_Command_On_Controller</arg>
<arg>${member_ip}</arg>
<arg>${command}</arg>
<doc>Store current connection index, run keyword returning its result, restore connection in teardown.
Note that in order to avoid "got positional argument after named arguments", it is safer to use positional (not named) arguments on call.</doc>
<status status="PASS" start="2026-04-08T01:04:32.408444" elapsed="0.362119"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:04:32.770994" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:04:32.770746" elapsed="0.000293"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-08T01:04:32.771080" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T01:04:32.771246" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-08T01:04:32.406210" elapsed="0.365062"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-08T01:04:32.771317" elapsed="0.000026"/>
</return>
<msg time="2026-04-08T01:04:32.771462" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-08T01:04:32.404013" elapsed="0.367472"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-08T01:04:32.772027" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-08T01:04:32.771640" elapsed="0.000459">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-08T01:04:32.402910" elapsed="0.369316">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:04:34.775788" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:04:34.775015" elapsed="0.000842"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:04:34.777971" level="INFO">${member_ip} = 10.30.171.110</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:04:34.777272" elapsed="0.000760"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:04:34.779387" level="INFO">index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-08T01:04:34.779547" level="INFO">${current_connection} = index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T01:04:34.779122" elapsed="0.000471"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Controller" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:04:34.785656" elapsed="0.000032"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:04:34.785209" elapsed="0.000528"/>
</branch>
<status status="PASS" start="2026-04-08T01:04:34.785174" elapsed="0.000598"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:04:34.786254" level="INFO">index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-08T01:04:34.786397" level="INFO">${current_ssh_connection} = index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T01:04:34.786014" elapsed="0.000421"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:04:34.787243" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.110" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:04:34.786677" elapsed="0.000633"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:04:34.788093" level="INFO">${conn_id} = 544</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T01:04:34.787562" elapsed="0.000568"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T01:04:34.789565" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T01:04:34.789675" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T01:04:34.789047" elapsed="0.000662"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:04:34.790085" elapsed="0.000475"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T01:04:34.791427" level="INFO">Logging into '10.30.171.110:22' as 'jenkins'.</msg>
<msg time="2026-04-08T01:04:35.103238" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 01:04:01 UTC 2026

  System load:  1.18               Processes:             121
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 7%                 IPv4 address for ens3: 10.30.171.110
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 01:04:32 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T01:04:34.791096" elapsed="0.312293"/>
</kw>
<msg time="2026-04-08T01:04:35.103474" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:04:34.790735" elapsed="0.312832"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T01:04:34.788484" elapsed="0.315198"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T01:04:35.104252" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-08T01:04:35.126565" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-08T01:04:35.126830" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-08T01:04:35.126933" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T01:04:35.103972" elapsed="0.023016"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T01:04:35.127490" elapsed="0.000478"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:04:35.129202" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:04:35.128509" elapsed="0.000844"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T01:04:35.129907" elapsed="0.000038"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:04:35.129595" elapsed="0.000425"/>
</branch>
<status status="PASS" start="2026-04-08T01:04:35.129539" elapsed="0.000535"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T01:04:35.130545" elapsed="0.000084"/>
</return>
<status status="PASS" start="2026-04-08T01:04:35.130281" elapsed="0.000445"/>
</branch>
<status status="PASS" start="2026-04-08T01:04:35.130240" elapsed="0.000545"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T01:04:35.130930" elapsed="0.000040"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:04:35.139700" elapsed="0.000155"/>
</kw>
<msg time="2026-04-08T01:04:35.139902" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:04:35.139187" elapsed="0.000787"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:04:35.140139" elapsed="0.000046"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:04:35.140331" elapsed="0.000020"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:04:35.131973" elapsed="0.008440"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T01:04:34.783682" elapsed="0.356916"/>
</kw>
<msg time="2026-04-08T01:04:35.140665" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:04:34.781553" elapsed="0.359177"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-08T01:04:34.780563" elapsed="0.360528"/>
</kw>
<msg time="2026-04-08T01:04:35.141133" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:04:34.779825" elapsed="0.361375"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:04:35.144463" elapsed="0.000212"/>
</kw>
<msg time="2026-04-08T01:04:35.144774" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:04:35.143900" elapsed="0.000939"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:04:35.145044" elapsed="0.000022"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:04:35.145258" elapsed="0.000028"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:04:35.141514" elapsed="0.003841"/>
</kw>
<msg time="2026-04-08T01:04:35.145447" level="INFO">${output} = 1</msg>
<var>${output}</var>
<arg>Utils.Run_Command_On_Controller</arg>
<arg>${member_ip}</arg>
<arg>${command}</arg>
<doc>Store current connection index, run keyword returning its result, restore connection in teardown.
Note that in order to avoid "got positional argument after named arguments", it is safer to use positional (not named) arguments on call.</doc>
<status status="PASS" start="2026-04-08T01:04:34.778552" elapsed="0.366919"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:04:35.145916" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:04:35.145667" elapsed="0.000293"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-08T01:04:35.146003" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T01:04:35.146150" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-08T01:04:34.776337" elapsed="0.369862"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-08T01:04:35.146248" elapsed="0.000027"/>
</return>
<msg time="2026-04-08T01:04:35.146389" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-08T01:04:34.774204" elapsed="0.372209"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-08T01:04:35.146948" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-08T01:04:35.146567" elapsed="0.000455">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-08T01:04:34.773030" elapsed="0.374101">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:04:37.150642" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:04:37.149869" elapsed="0.000842"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:04:37.152795" level="INFO">${member_ip} = 10.30.171.110</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:04:37.152139" elapsed="0.000717"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:04:37.154695" level="INFO">index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-08T01:04:37.154918" level="INFO">${current_connection} = index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T01:04:37.154331" elapsed="0.000647"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Controller" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:04:37.160869" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:04:37.160489" elapsed="0.000450"/>
</branch>
<status status="PASS" start="2026-04-08T01:04:37.160459" elapsed="0.000509"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:04:37.161383" level="INFO">index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-08T01:04:37.161496" level="INFO">${current_ssh_connection} = index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T01:04:37.161195" elapsed="0.000331"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:04:37.162145" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.110" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:04:37.161727" elapsed="0.000494"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:04:37.162836" level="INFO">${conn_id} = 545</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T01:04:37.162404" elapsed="0.000458"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T01:04:37.163841" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T01:04:37.163916" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T01:04:37.163519" elapsed="0.000420"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:04:37.164100" elapsed="0.000352"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T01:04:37.165384" level="INFO">Logging into '10.30.171.110:22' as 'jenkins'.</msg>
<msg time="2026-04-08T01:04:37.469138" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 01:04:01 UTC 2026

  System load:  1.18               Processes:             121
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 7%                 IPv4 address for ens3: 10.30.171.110
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 01:04:35 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T01:04:37.165049" elapsed="0.304289"/>
</kw>
<msg time="2026-04-08T01:04:37.469428" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:04:37.164687" elapsed="0.304846"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T01:04:37.163101" elapsed="0.306565"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T01:04:37.470274" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-08T01:04:37.492558" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-08T01:04:37.492829" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-08T01:04:37.492930" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T01:04:37.469986" elapsed="0.022996"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T01:04:37.493480" elapsed="0.000538"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:04:37.495270" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:04:37.494565" elapsed="0.000802"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T01:04:37.495942" elapsed="0.000042"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:04:37.495586" elapsed="0.000471"/>
</branch>
<status status="PASS" start="2026-04-08T01:04:37.495533" elapsed="0.000606"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T01:04:37.496598" elapsed="0.000064"/>
</return>
<status status="PASS" start="2026-04-08T01:04:37.496345" elapsed="0.000391"/>
</branch>
<status status="PASS" start="2026-04-08T01:04:37.496306" elapsed="0.000483"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T01:04:37.496903" elapsed="0.000036"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:04:37.504731" elapsed="0.000154"/>
</kw>
<msg time="2026-04-08T01:04:37.504930" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:04:37.503759" elapsed="0.001240"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:04:37.505178" elapsed="0.000023"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:04:37.505347" elapsed="0.000020"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:04:37.497869" elapsed="0.007560"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T01:04:37.159240" elapsed="0.346377"/>
</kw>
<msg time="2026-04-08T01:04:37.505686" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:04:37.157628" elapsed="0.348124"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-08T01:04:37.156598" elapsed="0.349521"/>
</kw>
<msg time="2026-04-08T01:04:37.506195" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:04:37.155365" elapsed="0.350881"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:04:37.509594" elapsed="0.000217"/>
</kw>
<msg time="2026-04-08T01:04:37.509928" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:04:37.508966" elapsed="0.001028"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:04:37.510228" elapsed="0.000024"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:04:37.510453" elapsed="0.000022"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:04:37.506541" elapsed="0.003997"/>
</kw>
<msg time="2026-04-08T01:04:37.510631" level="INFO">${output} = 1</msg>
<var>${output}</var>
<arg>Utils.Run_Command_On_Controller</arg>
<arg>${member_ip}</arg>
<arg>${command}</arg>
<doc>Store current connection index, run keyword returning its result, restore connection in teardown.
Note that in order to avoid "got positional argument after named arguments", it is safer to use positional (not named) arguments on call.</doc>
<status status="PASS" start="2026-04-08T01:04:37.153380" elapsed="0.357277"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:04:37.511093" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:04:37.510839" elapsed="0.000300"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-08T01:04:37.511198" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T01:04:37.511352" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-08T01:04:37.151192" elapsed="0.360186"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-08T01:04:37.511426" elapsed="0.000027"/>
</return>
<msg time="2026-04-08T01:04:37.511571" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-08T01:04:37.149021" elapsed="0.362575"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-08T01:04:37.512172" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-08T01:04:37.511754" elapsed="0.000493">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-08T01:04:37.147914" elapsed="0.364446">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:04:39.516089" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:04:39.515217" elapsed="0.001003"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:04:39.518783" level="INFO">${member_ip} = 10.30.171.110</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:04:39.518033" elapsed="0.000830"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:04:39.520564" level="INFO">index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-08T01:04:39.520717" level="INFO">${current_connection} = index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T01:04:39.520311" elapsed="0.000446"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Controller" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:04:39.527090" elapsed="0.000048"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:04:39.526658" elapsed="0.000566"/>
</branch>
<status status="PASS" start="2026-04-08T01:04:39.526622" elapsed="0.000640"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:04:39.527715" level="INFO">index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-08T01:04:39.527857" level="INFO">${current_ssh_connection} = index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T01:04:39.527504" elapsed="0.000391"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:04:39.528715" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.110" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:04:39.528138" elapsed="0.000643"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:04:39.529595" level="INFO">${conn_id} = 546</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T01:04:39.529034" elapsed="0.000598"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T01:04:39.530998" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T01:04:39.531107" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T01:04:39.530605" elapsed="0.000651"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:04:39.531489" elapsed="0.000406"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T01:04:39.532798" level="INFO">Logging into '10.30.171.110:22' as 'jenkins'.</msg>
<msg time="2026-04-08T01:04:39.845841" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 01:04:01 UTC 2026

  System load:  1.18               Processes:             121
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 7%                 IPv4 address for ens3: 10.30.171.110
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 01:04:37 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T01:04:39.532470" elapsed="0.313657"/>
</kw>
<msg time="2026-04-08T01:04:39.846232" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:04:39.532068" elapsed="0.314272"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T01:04:39.529970" elapsed="0.316491"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T01:04:39.847071" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-08T01:04:39.869715" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-08T01:04:39.869844" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-08T01:04:39.869890" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T01:04:39.846758" elapsed="0.023155"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T01:04:39.870107" elapsed="0.000261"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:04:39.870925" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:04:39.870608" elapsed="0.000375"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T01:04:39.871282" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:04:39.871099" elapsed="0.000236"/>
</branch>
<status status="PASS" start="2026-04-08T01:04:39.871069" elapsed="0.000291"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T01:04:39.871548" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-08T01:04:39.871437" elapsed="0.000172"/>
</branch>
<status status="PASS" start="2026-04-08T01:04:39.871419" elapsed="0.000214"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T01:04:39.871685" elapsed="0.000016"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:04:39.875428" elapsed="0.000163"/>
</kw>
<msg time="2026-04-08T01:04:39.875635" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:04:39.874901" elapsed="0.000800"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:04:39.875866" elapsed="0.000022"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:04:39.876034" elapsed="0.000021"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:04:39.872129" elapsed="0.003988"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T01:04:39.525022" elapsed="0.351305"/>
</kw>
<msg time="2026-04-08T01:04:39.876397" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:04:39.522877" elapsed="0.353587"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-08T01:04:39.521805" elapsed="0.355029"/>
</kw>
<msg time="2026-04-08T01:04:39.876879" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:04:39.520987" elapsed="0.355940"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:04:39.880430" elapsed="0.000222"/>
</kw>
<msg time="2026-04-08T01:04:39.880755" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:04:39.879849" elapsed="0.000972"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:04:39.880984" elapsed="0.000022"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:04:39.881148" elapsed="0.000085"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:04:39.877339" elapsed="0.003958"/>
</kw>
<msg time="2026-04-08T01:04:39.881390" level="INFO">${output} = 1</msg>
<var>${output}</var>
<arg>Utils.Run_Command_On_Controller</arg>
<arg>${member_ip}</arg>
<arg>${command}</arg>
<doc>Store current connection index, run keyword returning its result, restore connection in teardown.
Note that in order to avoid "got positional argument after named arguments", it is safer to use positional (not named) arguments on call.</doc>
<status status="PASS" start="2026-04-08T01:04:39.519572" elapsed="0.361843"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:04:39.881843" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:04:39.881592" elapsed="0.000297"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-08T01:04:39.881930" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T01:04:39.882122" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-08T01:04:39.516839" elapsed="0.365308"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-08T01:04:39.882214" elapsed="0.000027"/>
</return>
<msg time="2026-04-08T01:04:39.882364" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-08T01:04:39.514333" elapsed="0.368056"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-08T01:04:39.882959" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-08T01:04:39.882549" elapsed="0.000487">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-08T01:04:39.513212" elapsed="0.369937">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:04:41.886727" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:04:41.885897" elapsed="0.000903"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:04:41.888918" level="INFO">${member_ip} = 10.30.171.110</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:04:41.888308" elapsed="0.000669"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:04:41.890893" level="INFO">index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-08T01:04:41.891119" level="INFO">${current_connection} = index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

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

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-08T01:04:41.900344" level="INFO">${current_ssh_connection} = index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T01:04:41.900077" elapsed="0.000293"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:04:41.900934" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.110" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:04:41.900547" elapsed="0.000434"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:04:41.901570" level="INFO">${conn_id} = 547</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T01:04:41.901175" elapsed="0.000421"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T01:04:41.902574" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T01:04:41.902650" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T01:04:41.902290" elapsed="0.000383"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:04:41.902835" elapsed="0.000336"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T01:04:41.904015" level="INFO">Logging into '10.30.171.110:22' as 'jenkins'.</msg>
<msg time="2026-04-08T01:04:42.218155" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 01:04:01 UTC 2026

  System load:  1.18               Processes:             121
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 7%                 IPv4 address for ens3: 10.30.171.110
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 01:04:39 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T01:04:41.903700" elapsed="0.314655"/>
</kw>
<msg time="2026-04-08T01:04:42.218456" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:04:41.903343" elapsed="0.315325"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T01:04:41.901842" elapsed="0.316955"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T01:04:42.219395" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-08T01:04:42.241906" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-08T01:04:42.242304" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-08T01:04:42.242439" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T01:04:42.219108" elapsed="0.023404"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T01:04:42.243131" elapsed="0.000588"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:04:42.244914" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:04:42.244239" elapsed="0.000770"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T01:04:42.245603" elapsed="0.000039"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:04:42.245265" elapsed="0.000454"/>
</branch>
<status status="PASS" start="2026-04-08T01:04:42.245208" elapsed="0.000564"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T01:04:42.246339" elapsed="0.000071"/>
</return>
<status status="PASS" start="2026-04-08T01:04:42.246002" elapsed="0.000488"/>
</branch>
<status status="PASS" start="2026-04-08T01:04:42.245961" elapsed="0.000585"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T01:04:42.246672" elapsed="0.000037"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:04:42.252062" elapsed="0.000256"/>
</kw>
<msg time="2026-04-08T01:04:42.252380" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:04:42.251090" elapsed="0.001384"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:04:42.252701" elapsed="0.000030"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:04:42.252931" elapsed="0.000028"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:04:42.247333" elapsed="0.005711"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T01:04:41.897573" elapsed="0.355750"/>
</kw>
<msg time="2026-04-08T01:04:42.253421" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:04:41.894389" elapsed="0.359166"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-08T01:04:41.892777" elapsed="0.361320"/>
</kw>
<msg time="2026-04-08T01:04:42.254181" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:04:41.891567" elapsed="0.362684"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:04:42.259331" elapsed="0.000267"/>
</kw>
<msg time="2026-04-08T01:04:42.259717" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:04:42.258471" elapsed="0.001318"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:04:42.259956" elapsed="0.000022"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:04:42.260122" elapsed="0.000021"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:04:42.254661" elapsed="0.005572"/>
</kw>
<msg time="2026-04-08T01:04:42.260329" level="INFO">${output} = 1</msg>
<var>${output}</var>
<arg>Utils.Run_Command_On_Controller</arg>
<arg>${member_ip}</arg>
<arg>${command}</arg>
<doc>Store current connection index, run keyword returning its result, restore connection in teardown.
Note that in order to avoid "got positional argument after named arguments", it is safer to use positional (not named) arguments on call.</doc>
<status status="PASS" start="2026-04-08T01:04:41.889500" elapsed="0.370855"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:04:42.260817" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:04:42.260548" elapsed="0.000315"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-08T01:04:42.260906" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T01:04:42.261060" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-08T01:04:41.887295" elapsed="0.373791"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-08T01:04:42.261313" elapsed="0.000031"/>
</return>
<msg time="2026-04-08T01:04:42.261473" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-08T01:04:41.885051" elapsed="0.376447"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-08T01:04:42.262110" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-08T01:04:42.261672" elapsed="0.000536">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-08T01:04:41.883983" elapsed="0.378345">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:04:44.265967" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:04:44.265127" elapsed="0.000909"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:04:44.268088" level="INFO">${member_ip} = 10.30.171.110</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:04:44.267493" elapsed="0.000656"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:04:44.270026" level="INFO">index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-08T01:04:44.270282" level="INFO">${current_connection} = index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

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

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-08T01:04:44.276227" level="INFO">${current_ssh_connection} = index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T01:04:44.275952" elapsed="0.000303"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:04:44.276826" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.110" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:04:44.276432" elapsed="0.000459"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:04:44.277486" level="INFO">${conn_id} = 548</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T01:04:44.277072" elapsed="0.000441"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T01:04:44.278456" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T01:04:44.278532" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T01:04:44.278169" elapsed="0.000387"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:04:44.278717" elapsed="0.000320"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T01:04:44.279896" level="INFO">Logging into '10.30.171.110:22' as 'jenkins'.</msg>
<msg time="2026-04-08T01:04:44.602414" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 01:04:01 UTC 2026

  System load:  1.18               Processes:             121
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 7%                 IPv4 address for ens3: 10.30.171.110
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 01:04:42 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T01:04:44.279584" elapsed="0.323076"/>
</kw>
<msg time="2026-04-08T01:04:44.602814" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:04:44.279225" elapsed="0.323772"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T01:04:44.277754" elapsed="0.325607"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T01:04:44.604407" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-08T01:04:44.627257" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-08T01:04:44.627451" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-08T01:04:44.627517" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T01:04:44.603891" elapsed="0.023661"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T01:04:44.627886" elapsed="0.000390"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:04:44.629108" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:04:44.628635" elapsed="0.000579"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T01:04:44.629628" elapsed="0.000027"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:04:44.629399" elapsed="0.000306"/>
</branch>
<status status="PASS" start="2026-04-08T01:04:44.629349" elapsed="0.000391"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T01:04:44.630015" elapsed="0.000045"/>
</return>
<status status="PASS" start="2026-04-08T01:04:44.629853" elapsed="0.000257"/>
</branch>
<status status="PASS" start="2026-04-08T01:04:44.629827" elapsed="0.000319"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T01:04:44.630251" elapsed="0.000024"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:04:44.635899" elapsed="0.000229"/>
</kw>
<msg time="2026-04-08T01:04:44.636216" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:04:44.635027" elapsed="0.001291"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:04:44.636558" elapsed="0.000032"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:04:44.636840" elapsed="0.000033"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:04:44.630898" elapsed="0.006069"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T01:04:44.274202" elapsed="0.363076"/>
</kw>
<msg time="2026-04-08T01:04:44.637408" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:04:44.272663" elapsed="0.364847"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-08T01:04:44.271940" elapsed="0.366027"/>
</kw>
<msg time="2026-04-08T01:04:44.638011" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:04:44.270825" elapsed="0.367235"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:04:44.641404" elapsed="0.000223"/>
</kw>
<msg time="2026-04-08T01:04:44.641727" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:04:44.640812" elapsed="0.000982"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:04:44.641971" elapsed="0.000024"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:04:44.642139" elapsed="0.000043"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:04:44.638393" elapsed="0.003854"/>
</kw>
<msg time="2026-04-08T01:04:44.642340" level="INFO">${output} = 1</msg>
<var>${output}</var>
<arg>Utils.Run_Command_On_Controller</arg>
<arg>${member_ip}</arg>
<arg>${command}</arg>
<doc>Store current connection index, run keyword returning its result, restore connection in teardown.
Note that in order to avoid "got positional argument after named arguments", it is safer to use positional (not named) arguments on call.</doc>
<status status="PASS" start="2026-04-08T01:04:44.268665" elapsed="0.373700"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:04:44.642846" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:04:44.642561" elapsed="0.000341"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-08T01:04:44.642956" elapsed="0.000039"/>
</return>
<msg time="2026-04-08T01:04:44.643177" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-08T01:04:44.266521" elapsed="0.376692"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-08T01:04:44.643272" elapsed="0.000034"/>
</return>
<msg time="2026-04-08T01:04:44.643459" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-08T01:04:44.264271" elapsed="0.379219"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-08T01:04:44.644383" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-08T01:04:44.643772" elapsed="0.000689">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-08T01:04:44.263212" elapsed="0.381367">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:04:46.648310" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:04:46.647373" elapsed="0.001009"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:04:46.650468" level="INFO">${member_ip} = 10.30.171.110</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:04:46.649828" elapsed="0.000703"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:04:46.652445" level="INFO">index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-08T01:04:46.652674" level="INFO">${current_connection} = index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

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

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-08T01:04:46.659722" level="INFO">${current_ssh_connection} = index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T01:04:46.659347" elapsed="0.000419"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:04:46.660641" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.110" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:04:46.660014" elapsed="0.000718"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:04:46.661674" level="INFO">${conn_id} = 549</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T01:04:46.660999" elapsed="0.000723"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T01:04:46.663277" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T01:04:46.663386" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T01:04:46.662831" elapsed="0.000587"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:04:46.663739" elapsed="0.000534"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T01:04:46.665122" level="INFO">Logging into '10.30.171.110:22' as 'jenkins'.</msg>
<msg time="2026-04-08T01:04:46.993779" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 01:04:01 UTC 2026

  System load:  1.18               Processes:             121
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 7%                 IPv4 address for ens3: 10.30.171.110
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 01:04:44 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T01:04:46.664803" elapsed="0.329145"/>
</kw>
<msg time="2026-04-08T01:04:46.994038" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:04:46.664446" elapsed="0.329690"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T01:04:46.662223" elapsed="0.332060"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T01:04:46.994923" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-08T01:04:47.017398" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-08T01:04:47.017654" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-08T01:04:47.017751" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T01:04:46.994629" elapsed="0.023172"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T01:04:47.018300" elapsed="0.000487"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:04:47.019966" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:04:47.019297" elapsed="0.000762"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T01:04:47.020617" elapsed="0.000036"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:04:47.020313" elapsed="0.000415"/>
</branch>
<status status="PASS" start="2026-04-08T01:04:47.020258" elapsed="0.000519"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T01:04:47.021213" elapsed="0.000065"/>
</return>
<status status="PASS" start="2026-04-08T01:04:47.020942" elapsed="0.000409"/>
</branch>
<status status="PASS" start="2026-04-08T01:04:47.020904" elapsed="0.000499"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T01:04:47.021520" elapsed="0.000035"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:04:47.028816" elapsed="0.000154"/>
</kw>
<msg time="2026-04-08T01:04:47.029014" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:04:47.028225" elapsed="0.000855"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:04:47.029255" elapsed="0.000022"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:04:47.029419" elapsed="0.000020"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:04:47.022504" elapsed="0.006996"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T01:04:46.657026" elapsed="0.372657"/>
</kw>
<msg time="2026-04-08T01:04:47.029750" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:04:46.654918" elapsed="0.374899"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-08T01:04:46.653928" elapsed="0.376274"/>
</kw>
<msg time="2026-04-08T01:04:47.030247" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:04:46.653009" elapsed="0.377286"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:04:47.033568" elapsed="0.000215"/>
</kw>
<msg time="2026-04-08T01:04:47.033880" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:04:47.033001" elapsed="0.000944"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:04:47.034104" elapsed="0.000022"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:04:47.034286" elapsed="0.000021"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:04:47.030584" elapsed="0.003784"/>
</kw>
<msg time="2026-04-08T01:04:47.034459" level="INFO">${output} = 1</msg>
<var>${output}</var>
<arg>Utils.Run_Command_On_Controller</arg>
<arg>${member_ip}</arg>
<arg>${command}</arg>
<doc>Store current connection index, run keyword returning its result, restore connection in teardown.
Note that in order to avoid "got positional argument after named arguments", it is safer to use positional (not named) arguments on call.</doc>
<status status="PASS" start="2026-04-08T01:04:46.651024" elapsed="0.383459"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:04:47.034913" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:04:47.034665" elapsed="0.000293"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-08T01:04:47.034999" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T01:04:47.035146" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-08T01:04:46.648846" elapsed="0.386342"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-08T01:04:47.035236" elapsed="0.000026"/>
</return>
<msg time="2026-04-08T01:04:47.035379" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-08T01:04:46.646511" elapsed="0.388893"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-08T01:04:47.035965" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-08T01:04:47.035569" elapsed="0.000469">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-08T01:04:46.645433" elapsed="0.390840">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:04:49.039745" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:04:49.038973" elapsed="0.000842"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:04:49.041889" level="INFO">${member_ip} = 10.30.171.110</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:04:49.041287" elapsed="0.000662"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:04:49.043525" level="INFO">index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-08T01:04:49.043669" level="INFO">${current_connection} = index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T01:04:49.043291" elapsed="0.000417"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Controller" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:04:49.049713" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:04:49.049280" elapsed="0.000513"/>
</branch>
<status status="PASS" start="2026-04-08T01:04:49.049246" elapsed="0.000582"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:04:49.050314" level="INFO">index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-08T01:04:49.050488" level="INFO">${current_ssh_connection} = index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T01:04:49.050071" elapsed="0.000456"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:04:49.051364" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.110" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:04:49.050788" elapsed="0.000643"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:04:49.052235" level="INFO">${conn_id} = 550</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T01:04:49.051682" elapsed="0.000590"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T01:04:49.053586" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T01:04:49.053693" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T01:04:49.053204" elapsed="0.000522"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:04:49.053949" elapsed="0.000523"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T01:04:49.055492" level="INFO">Logging into '10.30.171.110:22' as 'jenkins'.</msg>
<msg time="2026-04-08T01:04:49.366117" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 01:04:01 UTC 2026

  System load:  1.18               Processes:             121
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 7%                 IPv4 address for ens3: 10.30.171.110
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 01:04:46 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T01:04:49.055174" elapsed="0.311096"/>
</kw>
<msg time="2026-04-08T01:04:49.366349" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:04:49.054742" elapsed="0.311720"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T01:04:49.052608" elapsed="0.313966"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T01:04:49.367087" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-08T01:04:49.389273" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-08T01:04:49.389518" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-08T01:04:49.389627" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T01:04:49.366846" elapsed="0.022940"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T01:04:49.390259" elapsed="0.000490"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:04:49.391892" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:04:49.391260" elapsed="0.000731"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T01:04:49.392539" elapsed="0.000035"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:04:49.392242" elapsed="0.000404"/>
</branch>
<status status="PASS" start="2026-04-08T01:04:49.392187" elapsed="0.000509"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T01:04:49.393098" elapsed="0.000088"/>
</return>
<status status="PASS" start="2026-04-08T01:04:49.392860" elapsed="0.000404"/>
</branch>
<status status="PASS" start="2026-04-08T01:04:49.392822" elapsed="0.000496"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T01:04:49.393434" elapsed="0.000034"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:04:49.401590" elapsed="0.000156"/>
</kw>
<msg time="2026-04-08T01:04:49.401791" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:04:49.401005" elapsed="0.000853"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:04:49.402020" elapsed="0.000021"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:04:49.402201" elapsed="0.000021"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:04:49.394424" elapsed="0.007860"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T01:04:49.047783" elapsed="0.354707"/>
</kw>
<msg time="2026-04-08T01:04:49.402558" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:04:49.045755" elapsed="0.356869"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-08T01:04:49.044677" elapsed="0.358311"/>
</kw>
<msg time="2026-04-08T01:04:49.403030" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:04:49.043932" elapsed="0.359145"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:04:49.406360" elapsed="0.000228"/>
</kw>
<msg time="2026-04-08T01:04:49.406688" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:04:49.405789" elapsed="0.000965"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:04:49.406916" elapsed="0.000021"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:04:49.407078" elapsed="0.000021"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:04:49.403404" elapsed="0.003770"/>
</kw>
<msg time="2026-04-08T01:04:49.407267" level="INFO">${output} = 1</msg>
<var>${output}</var>
<arg>Utils.Run_Command_On_Controller</arg>
<arg>${member_ip}</arg>
<arg>${command}</arg>
<doc>Store current connection index, run keyword returning its result, restore connection in teardown.
Note that in order to avoid "got positional argument after named arguments", it is safer to use positional (not named) arguments on call.</doc>
<status status="PASS" start="2026-04-08T01:04:49.042471" elapsed="0.364820"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:04:49.407726" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:04:49.407476" elapsed="0.000295"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-08T01:04:49.407813" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T01:04:49.407960" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-08T01:04:49.040307" elapsed="0.367677"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-08T01:04:49.408029" elapsed="0.000025"/>
</return>
<msg time="2026-04-08T01:04:49.408231" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-08T01:04:49.038101" elapsed="0.370156"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-08T01:04:49.408821" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-08T01:04:49.408418" elapsed="0.000474">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-08T01:04:49.037036" elapsed="0.371964">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:04:51.412506" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:04:51.411743" elapsed="0.000831"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:04:51.414511" level="INFO">${member_ip} = 10.30.171.110</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:04:51.414084" elapsed="0.000465"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:04:51.415696" level="INFO">index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-08T01:04:51.415836" level="INFO">${current_connection} = index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

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

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-08T01:04:51.422624" level="INFO">${current_ssh_connection} = index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T01:04:51.422274" elapsed="0.000386"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:04:51.423489" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.110" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:04:51.422919" elapsed="0.000635"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:04:51.424361" level="INFO">${conn_id} = 551</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T01:04:51.423805" elapsed="0.000592"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T01:04:51.425742" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T01:04:51.425821" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T01:04:51.425460" elapsed="0.000386"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:04:51.426009" elapsed="0.000396"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T01:04:51.427265" level="INFO">Logging into '10.30.171.110:22' as 'jenkins'.</msg>
<msg time="2026-04-08T01:04:51.731406" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 01:04:01 UTC 2026

  System load:  1.18               Processes:             121
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 7%                 IPv4 address for ens3: 10.30.171.110
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 01:04:49 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T01:04:51.426935" elapsed="0.304634"/>
</kw>
<msg time="2026-04-08T01:04:51.731658" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:04:51.426578" elapsed="0.305177"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T01:04:51.424730" elapsed="0.307145"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T01:04:51.732515" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-08T01:04:51.755116" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-08T01:04:51.755397" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-08T01:04:51.755494" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T01:04:51.732231" elapsed="0.023314"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T01:04:51.755992" elapsed="0.000508"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:04:51.757744" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:04:51.757064" elapsed="0.000774"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T01:04:51.758422" elapsed="0.000038"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:04:51.758064" elapsed="0.000469"/>
</branch>
<status status="PASS" start="2026-04-08T01:04:51.758001" elapsed="0.000583"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T01:04:51.758994" elapsed="0.000061"/>
</return>
<status status="PASS" start="2026-04-08T01:04:51.758751" elapsed="0.000378"/>
</branch>
<status status="PASS" start="2026-04-08T01:04:51.758713" elapsed="0.000502"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T01:04:51.759335" elapsed="0.000035"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:04:51.766243" elapsed="0.000157"/>
</kw>
<msg time="2026-04-08T01:04:51.766445" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:04:51.765645" elapsed="0.000868"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:04:51.766671" elapsed="0.000021"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:04:51.766834" elapsed="0.000020"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:04:51.760315" elapsed="0.006601"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T01:04:51.419850" elapsed="0.347248"/>
</kw>
<msg time="2026-04-08T01:04:51.767199" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:04:51.417835" elapsed="0.349434"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-08T01:04:51.416839" elapsed="0.350795"/>
</kw>
<msg time="2026-04-08T01:04:51.767679" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:04:51.416096" elapsed="0.351630"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:04:51.771009" elapsed="0.000250"/>
</kw>
<msg time="2026-04-08T01:04:51.771361" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:04:51.770456" elapsed="0.000970"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:04:51.771590" elapsed="0.000022"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:04:51.771756" elapsed="0.000021"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:04:51.768035" elapsed="0.003803"/>
</kw>
<msg time="2026-04-08T01:04:51.771942" level="INFO">${output} = 1</msg>
<var>${output}</var>
<arg>Utils.Run_Command_On_Controller</arg>
<arg>${member_ip}</arg>
<arg>${command}</arg>
<doc>Store current connection index, run keyword returning its result, restore connection in teardown.
Note that in order to avoid "got positional argument after named arguments", it is safer to use positional (not named) arguments on call.</doc>
<status status="PASS" start="2026-04-08T01:04:51.414855" elapsed="0.357113"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:04:51.772424" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:04:51.772148" elapsed="0.000322"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-08T01:04:51.772512" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T01:04:51.772666" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-08T01:04:51.413086" elapsed="0.359605"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-08T01:04:51.772738" elapsed="0.000026"/>
</return>
<msg time="2026-04-08T01:04:51.772881" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-08T01:04:51.410899" elapsed="0.362007"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-08T01:04:51.773478" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-08T01:04:51.773064" elapsed="0.000488">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-08T01:04:51.409845" elapsed="0.363820">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:04:53.777374" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:04:53.776569" elapsed="0.001022"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:04:53.779880" level="INFO">${member_ip} = 10.30.171.110</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:04:53.779229" elapsed="0.000714"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:04:53.781216" level="INFO">index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-08T01:04:53.781364" level="INFO">${current_connection} = index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T01:04:53.780946" elapsed="0.000455"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Controller" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:04:53.787600" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:04:53.787135" elapsed="0.000546"/>
</branch>
<status status="PASS" start="2026-04-08T01:04:53.787098" elapsed="0.000620"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:04:53.788222" level="INFO">index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-08T01:04:53.788389" level="INFO">${current_ssh_connection} = index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T01:04:53.787955" elapsed="0.000472"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:04:53.789258" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.110" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:04:53.788670" elapsed="0.000656"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:04:53.790119" level="INFO">${conn_id} = 552</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T01:04:53.789579" elapsed="0.000606"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T01:04:53.791527" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T01:04:53.791633" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T01:04:53.791114" elapsed="0.000552"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:04:53.791892" elapsed="0.000461"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T01:04:53.793225" level="INFO">Logging into '10.30.171.110:22' as 'jenkins'.</msg>
<msg time="2026-04-08T01:04:54.103292" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 01:04:01 UTC 2026

  System load:  1.18               Processes:             121
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 7%                 IPv4 address for ens3: 10.30.171.110
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 01:04:51 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T01:04:53.792880" elapsed="0.310574"/>
</kw>
<msg time="2026-04-08T01:04:54.103542" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:04:53.792523" elapsed="0.311116"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T01:04:53.790525" elapsed="0.313231"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T01:04:54.104328" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-08T01:04:54.127096" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-08T01:04:54.127395" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-08T01:04:54.127493" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T01:04:54.104052" elapsed="0.023490"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T01:04:54.127986" elapsed="0.000540"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:04:54.129778" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:04:54.129001" elapsed="0.000873"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T01:04:54.130798" elapsed="0.000065"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:04:54.130482" elapsed="0.000495"/>
</branch>
<status status="PASS" start="2026-04-08T01:04:54.130410" elapsed="0.000630"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T01:04:54.131622" elapsed="0.000077"/>
</return>
<status status="PASS" start="2026-04-08T01:04:54.131310" elapsed="0.000478"/>
</branch>
<status status="PASS" start="2026-04-08T01:04:54.131261" elapsed="0.000589"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T01:04:54.131983" elapsed="0.000041"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:04:54.140055" elapsed="0.000175"/>
</kw>
<msg time="2026-04-08T01:04:54.140276" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:04:54.139467" elapsed="0.000879"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:04:54.140506" elapsed="0.000021"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:04:54.140668" elapsed="0.000020"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:04:54.133258" elapsed="0.007491"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T01:04:53.785626" elapsed="0.355306"/>
</kw>
<msg time="2026-04-08T01:04:54.141001" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:04:53.783358" elapsed="0.357707"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-08T01:04:53.782375" elapsed="0.359083"/>
</kw>
<msg time="2026-04-08T01:04:54.141501" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:04:53.781628" elapsed="0.359921"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:04:54.144982" elapsed="0.000248"/>
</kw>
<msg time="2026-04-08T01:04:54.145334" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:04:54.144294" elapsed="0.001106"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:04:54.145597" elapsed="0.000024"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:04:54.145766" elapsed="0.000020"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:04:54.141841" elapsed="0.004007"/>
</kw>
<msg time="2026-04-08T01:04:54.145941" level="INFO">${output} = 1</msg>
<var>${output}</var>
<arg>Utils.Run_Command_On_Controller</arg>
<arg>${member_ip}</arg>
<arg>${command}</arg>
<doc>Store current connection index, run keyword returning its result, restore connection in teardown.
Note that in order to avoid "got positional argument after named arguments", it is safer to use positional (not named) arguments on call.</doc>
<status status="PASS" start="2026-04-08T01:04:53.780318" elapsed="0.365647"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:04:54.146464" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:04:54.146209" elapsed="0.000300"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-08T01:04:54.146550" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T01:04:54.146702" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-08T01:04:53.778085" elapsed="0.368643"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-08T01:04:54.146774" elapsed="0.000026"/>
</return>
<msg time="2026-04-08T01:04:54.146917" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-08T01:04:53.775678" elapsed="0.371264"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-08T01:04:54.147510" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-08T01:04:54.147100" elapsed="0.000483">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-08T01:04:53.774526" elapsed="0.373169">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:04:56.151372" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:04:56.150592" elapsed="0.000850"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:04:56.153663" level="INFO">${member_ip} = 10.30.171.110</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:04:56.153250" elapsed="0.000451"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:04:56.154933" level="INFO">index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-08T01:04:56.155076" level="INFO">${current_connection} = index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T01:04:56.154680" elapsed="0.000434"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Controller" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:04:56.161369" elapsed="0.000033"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:04:56.160900" elapsed="0.000553"/>
</branch>
<status status="PASS" start="2026-04-08T01:04:56.160861" elapsed="0.000629"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:04:56.162001" level="INFO">index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-08T01:04:56.162153" level="INFO">${current_ssh_connection} = index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T01:04:56.161735" elapsed="0.000511"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:04:56.162867" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.110" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:04:56.162468" elapsed="0.000447"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:04:56.163574" level="INFO">${conn_id} = 553</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T01:04:56.163107" elapsed="0.000494"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T01:04:56.164579" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T01:04:56.164658" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T01:04:56.164284" elapsed="0.000398"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:04:56.164846" elapsed="0.000373"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T01:04:56.166099" level="INFO">Logging into '10.30.171.110:22' as 'jenkins'.</msg>
<msg time="2026-04-08T01:04:56.474900" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 01:04:01 UTC 2026

  System load:  1.18               Processes:             121
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 7%                 IPv4 address for ens3: 10.30.171.110
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 01:04:54 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T01:04:56.165754" elapsed="0.309348"/>
</kw>
<msg time="2026-04-08T01:04:56.475244" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:04:56.165395" elapsed="0.309972"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T01:04:56.163846" elapsed="0.311676"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T01:04:56.476276" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-08T01:04:56.498613" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-08T01:04:56.498863" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-08T01:04:56.498960" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T01:04:56.475912" elapsed="0.023098"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T01:04:56.499490" elapsed="0.000478"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:04:56.501196" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:04:56.500506" elapsed="0.000825"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T01:04:56.501910" elapsed="0.000037"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:04:56.501604" elapsed="0.000415"/>
</branch>
<status status="PASS" start="2026-04-08T01:04:56.501543" elapsed="0.000525"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T01:04:56.502661" elapsed="0.000062"/>
</return>
<status status="PASS" start="2026-04-08T01:04:56.502415" elapsed="0.000382"/>
</branch>
<status status="PASS" start="2026-04-08T01:04:56.502374" elapsed="0.000476"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T01:04:56.502964" elapsed="0.000035"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:04:56.510666" elapsed="0.000158"/>
</kw>
<msg time="2026-04-08T01:04:56.510869" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:04:56.509791" elapsed="0.001147"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:04:56.511101" elapsed="0.000023"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:04:56.511287" elapsed="0.000021"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:04:56.503912" elapsed="0.007459"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T01:04:56.159379" elapsed="0.352211"/>
</kw>
<msg time="2026-04-08T01:04:56.511667" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:04:56.157212" elapsed="0.354524"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-08T01:04:56.156217" elapsed="0.355885"/>
</kw>
<msg time="2026-04-08T01:04:56.512147" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:04:56.155407" elapsed="0.356808"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:04:56.515596" elapsed="0.000221"/>
</kw>
<msg time="2026-04-08T01:04:56.515917" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:04:56.515019" elapsed="0.000965"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:04:56.516147" elapsed="0.000040"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:04:56.516334" elapsed="0.000021"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:04:56.512531" elapsed="0.003885"/>
</kw>
<msg time="2026-04-08T01:04:56.516516" level="INFO">${output} = 1</msg>
<var>${output}</var>
<arg>Utils.Run_Command_On_Controller</arg>
<arg>${member_ip}</arg>
<arg>${command}</arg>
<doc>Store current connection index, run keyword returning its result, restore connection in teardown.
Note that in order to avoid "got positional argument after named arguments", it is safer to use positional (not named) arguments on call.</doc>
<status status="PASS" start="2026-04-08T01:04:56.154069" elapsed="0.362474"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:04:56.516978" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:04:56.516726" elapsed="0.000297"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-08T01:04:56.517081" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T01:04:56.517259" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-08T01:04:56.151895" elapsed="0.365390"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-08T01:04:56.517332" elapsed="0.000026"/>
</return>
<msg time="2026-04-08T01:04:56.517518" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-08T01:04:56.149701" elapsed="0.367849"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-08T01:04:56.518113" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-08T01:04:56.517714" elapsed="0.000548">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-08T01:04:56.148540" elapsed="0.369837">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:04:58.522309" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:04:58.521283" elapsed="0.001098"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:04:58.524687" level="INFO">${member_ip} = 10.30.171.110</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:04:58.524042" elapsed="0.000706"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:04:58.526845" level="INFO">index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-08T01:04:58.527085" level="INFO">${current_connection} = index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T01:04:58.526421" elapsed="0.000725"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Controller" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:04:58.537875" elapsed="0.000034"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:04:58.537397" elapsed="0.000566"/>
</branch>
<status status="PASS" start="2026-04-08T01:04:58.537344" elapsed="0.000657"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:04:58.538531" level="INFO">index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-08T01:04:58.538682" level="INFO">${current_ssh_connection} = index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T01:04:58.538300" elapsed="0.000425"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:04:58.539611" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.110" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:04:58.538995" elapsed="0.000684"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:04:58.540541" level="INFO">${conn_id} = 554</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T01:04:58.539948" elapsed="0.000632"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T01:04:58.542010" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T01:04:58.542125" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T01:04:58.541597" elapsed="0.000653"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:04:58.542422" elapsed="0.000340"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T01:04:58.543640" level="INFO">Logging into '10.30.171.110:22' as 'jenkins'.</msg>
<msg time="2026-04-08T01:04:58.848265" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 01:04:01 UTC 2026

  System load:  1.18               Processes:             121
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 7%                 IPv4 address for ens3: 10.30.171.110
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 01:04:56 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T01:04:58.543319" elapsed="0.305437"/>
</kw>
<msg time="2026-04-08T01:04:58.848913" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:04:58.542939" elapsed="0.306136"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T01:04:58.540937" elapsed="0.308367"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T01:04:58.850074" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-08T01:04:58.872412" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-08T01:04:58.872553" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-08T01:04:58.872599" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T01:04:58.849710" elapsed="0.022912"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T01:04:58.872828" elapsed="0.000261"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:04:58.874120" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:04:58.873467" elapsed="0.000793"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T01:04:58.874791" elapsed="0.000036"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:04:58.874484" elapsed="0.000416"/>
</branch>
<status status="PASS" start="2026-04-08T01:04:58.874429" elapsed="0.000521"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T01:04:58.875391" elapsed="0.000061"/>
</return>
<status status="PASS" start="2026-04-08T01:04:58.875112" elapsed="0.000413"/>
</branch>
<status status="PASS" start="2026-04-08T01:04:58.875075" elapsed="0.000612"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T01:04:58.875814" elapsed="0.000036"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:04:58.882692" elapsed="0.000158"/>
</kw>
<msg time="2026-04-08T01:04:58.882895" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:04:58.882066" elapsed="0.000898"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:04:58.883125" elapsed="0.000022"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:04:58.883310" elapsed="0.000021"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:04:58.876810" elapsed="0.006583"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T01:04:58.533968" elapsed="0.349607"/>
</kw>
<msg time="2026-04-08T01:04:58.883644" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:04:58.530343" elapsed="0.353368"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-08T01:04:58.528749" elapsed="0.355325"/>
</kw>
<msg time="2026-04-08T01:04:58.884118" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:04:58.527552" elapsed="0.356645"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:04:58.887460" elapsed="0.000216"/>
</kw>
<msg time="2026-04-08T01:04:58.887773" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:04:58.886897" elapsed="0.000942"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:04:58.887998" elapsed="0.000021"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:04:58.888176" elapsed="0.000022"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:04:58.884498" elapsed="0.003762"/>
</kw>
<msg time="2026-04-08T01:04:58.888353" level="INFO">${output} = 1</msg>
<var>${output}</var>
<arg>Utils.Run_Command_On_Controller</arg>
<arg>${member_ip}</arg>
<arg>${command}</arg>
<doc>Store current connection index, run keyword returning its result, restore connection in teardown.
Note that in order to avoid "got positional argument after named arguments", it is safer to use positional (not named) arguments on call.</doc>
<status status="PASS" start="2026-04-08T01:04:58.525448" elapsed="0.362930"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:04:58.888846" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:04:58.888594" elapsed="0.000297"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-08T01:04:58.888932" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T01:04:58.889082" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-08T01:04:58.522892" elapsed="0.366215"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-08T01:04:58.889216" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T01:04:58.889370" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-08T01:04:58.520374" elapsed="0.369021"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-08T01:04:58.889950" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-08T01:04:58.889553" elapsed="0.000473">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-08T01:04:58.519286" elapsed="0.370854">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:05:00.893698" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:05:00.892892" elapsed="0.000874"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:05:00.895792" level="INFO">${member_ip} = 10.30.171.110</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:05:00.895155" elapsed="0.000697"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:05:00.897705" level="INFO">index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-08T01:05:00.898070" level="INFO">${current_connection} = index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T01:05:00.897343" elapsed="0.000790"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Controller" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:05:00.907080" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:05:00.906652" elapsed="0.000529"/>
</branch>
<status status="PASS" start="2026-04-08T01:05:00.906618" elapsed="0.000600"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:05:00.907673" level="INFO">index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-08T01:05:00.907817" level="INFO">${current_ssh_connection} = index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T01:05:00.907461" elapsed="0.000394"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:05:00.908667" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.110" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:05:00.908098" elapsed="0.000637"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:05:00.909593" level="INFO">${conn_id} = 555</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T01:05:00.908987" elapsed="0.000633"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T01:05:00.910561" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T01:05:00.910639" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T01:05:00.910278" elapsed="0.000385"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:05:00.910823" elapsed="0.000320"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T01:05:00.911999" level="INFO">Logging into '10.30.171.110:22' as 'jenkins'.</msg>
<msg time="2026-04-08T01:05:01.227727" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 01:04:01 UTC 2026

  System load:  1.18               Processes:             121
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 7%                 IPv4 address for ens3: 10.30.171.110
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 01:04:58 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T01:05:00.911686" elapsed="0.316212"/>
</kw>
<msg time="2026-04-08T01:05:01.227981" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:05:00.911328" elapsed="0.316745"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T01:05:00.909861" elapsed="0.318343"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T01:05:01.228795" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-08T01:05:01.251024" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-08T01:05:01.251305" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-08T01:05:01.251403" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T01:05:01.228537" elapsed="0.022916"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T01:05:01.251876" elapsed="0.000497"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:05:01.253537" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:05:01.252872" elapsed="0.000759"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T01:05:01.254147" elapsed="0.000072"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:05:01.253848" elapsed="0.000443"/>
</branch>
<status status="PASS" start="2026-04-08T01:05:01.253795" elapsed="0.000548"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T01:05:01.254752" elapsed="0.000059"/>
</return>
<status status="PASS" start="2026-04-08T01:05:01.254509" elapsed="0.000375"/>
</branch>
<status status="PASS" start="2026-04-08T01:05:01.254471" elapsed="0.000466"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T01:05:01.255052" elapsed="0.000034"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:05:01.262289" elapsed="0.000217"/>
</kw>
<msg time="2026-04-08T01:05:01.262550" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:05:01.261625" elapsed="0.000991"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:05:01.262777" elapsed="0.000022"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:05:01.262942" elapsed="0.000020"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:05:01.256002" elapsed="0.007021"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T01:05:00.904654" elapsed="0.358585"/>
</kw>
<msg time="2026-04-08T01:05:01.263311" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:05:00.901303" elapsed="0.362076"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-08T01:05:00.899724" elapsed="0.364015"/>
</kw>
<msg time="2026-04-08T01:05:01.263784" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:05:00.898527" elapsed="0.365304"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:05:01.267130" elapsed="0.000232"/>
</kw>
<msg time="2026-04-08T01:05:01.267462" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:05:01.266568" elapsed="0.000959"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:05:01.267688" elapsed="0.000022"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:05:01.267854" elapsed="0.000020"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:05:01.264126" elapsed="0.003809"/>
</kw>
<msg time="2026-04-08T01:05:01.268026" level="INFO">${output} = 1</msg>
<var>${output}</var>
<arg>Utils.Run_Command_On_Controller</arg>
<arg>${member_ip}</arg>
<arg>${command}</arg>
<doc>Store current connection index, run keyword returning its result, restore connection in teardown.
Note that in order to avoid "got positional argument after named arguments", it is safer to use positional (not named) arguments on call.</doc>
<status status="PASS" start="2026-04-08T01:05:00.896377" elapsed="0.371674"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:05:01.268515" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:05:01.268248" elapsed="0.000312"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-08T01:05:01.268602" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T01:05:01.268751" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-08T01:05:00.894247" elapsed="0.374529"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-08T01:05:01.268822" elapsed="0.000025"/>
</return>
<msg time="2026-04-08T01:05:01.268963" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-08T01:05:00.892057" elapsed="0.376930"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-08T01:05:01.269552" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-08T01:05:01.269143" elapsed="0.000483">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-08T01:05:00.890971" elapsed="0.378764">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:05:03.273399" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:05:03.272554" elapsed="0.000919"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:05:03.275734" level="INFO">${member_ip} = 10.30.171.110</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:05:03.275086" elapsed="0.000706"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:05:03.277681" level="INFO">index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-08T01:05:03.277904" level="INFO">${current_connection} = index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T01:05:03.277249" elapsed="0.001040"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Controller" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:05:03.284321" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:05:03.283874" elapsed="0.000527"/>
</branch>
<status status="PASS" start="2026-04-08T01:05:03.283841" elapsed="0.000596"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:05:03.284884" level="INFO">index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-08T01:05:03.285027" level="INFO">${current_ssh_connection} = index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T01:05:03.284673" elapsed="0.000394"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:05:03.285925" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.110" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:05:03.285364" elapsed="0.000628"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:05:03.286802" level="INFO">${conn_id} = 556</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T01:05:03.286269" elapsed="0.000569"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T01:05:03.288134" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T01:05:03.288266" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T01:05:03.287750" elapsed="0.000550"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:05:03.288520" elapsed="0.000446"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T01:05:03.290386" level="INFO">Logging into '10.30.171.110:22' as 'jenkins'.</msg>
<msg time="2026-04-08T01:05:03.851045" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 01:05:03 UTC 2026

  System load:  0.5                Processes:             125
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 7%                 IPv4 address for ens3: 10.30.171.110
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 01:05:01 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T01:05:03.289866" elapsed="0.561349"/>
</kw>
<msg time="2026-04-08T01:05:03.851306" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:05:03.289261" elapsed="0.562144"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T01:05:03.287189" elapsed="0.564336"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T01:05:03.852095" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-08T01:05:03.875055" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-08T01:05:03.875408" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-08T01:05:03.875516" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T01:05:03.851822" elapsed="0.023745"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T01:05:03.876017" elapsed="0.000585"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:05:03.877782" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:05:03.877088" elapsed="0.000791"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T01:05:03.878453" elapsed="0.000037"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:05:03.878109" elapsed="0.000456"/>
</branch>
<status status="PASS" start="2026-04-08T01:05:03.878053" elapsed="0.000562"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T01:05:03.879079" elapsed="0.000073"/>
</return>
<status status="PASS" start="2026-04-08T01:05:03.878785" elapsed="0.000495"/>
</branch>
<status status="PASS" start="2026-04-08T01:05:03.878745" elapsed="0.000600"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T01:05:03.879482" elapsed="0.000041"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:05:03.889188" elapsed="0.000225"/>
</kw>
<msg time="2026-04-08T01:05:03.889479" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:05:03.888340" elapsed="0.001300"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:05:03.889871" elapsed="0.000032"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:05:03.890107" elapsed="0.000030"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:05:03.880622" elapsed="0.009629"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T01:05:03.282400" elapsed="0.608113"/>
</kw>
<msg time="2026-04-08T01:05:03.890611" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:05:03.280362" elapsed="0.610343"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-08T01:05:03.279389" elapsed="0.611848"/>
</kw>
<msg time="2026-04-08T01:05:03.891301" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:05:03.278607" elapsed="0.612763"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:05:03.895992" elapsed="0.000383"/>
</kw>
<msg time="2026-04-08T01:05:03.896572" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:05:03.895211" elapsed="0.001457"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:05:03.896900" elapsed="0.000032"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:05:03.897134" elapsed="0.000051"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:05:03.891791" elapsed="0.005483"/>
</kw>
<msg time="2026-04-08T01:05:03.897413" level="INFO">${output} = 1</msg>
<var>${output}</var>
<arg>Utils.Run_Command_On_Controller</arg>
<arg>${member_ip}</arg>
<arg>${command}</arg>
<doc>Store current connection index, run keyword returning its result, restore connection in teardown.
Note that in order to avoid "got positional argument after named arguments", it is safer to use positional (not named) arguments on call.</doc>
<status status="PASS" start="2026-04-08T01:05:03.276314" elapsed="0.621141"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:05:03.897955" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:05:03.897699" elapsed="0.000303"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-08T01:05:03.898045" elapsed="0.000032"/>
</return>
<msg time="2026-04-08T01:05:03.898218" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-08T01:05:03.274083" elapsed="0.624161"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-08T01:05:03.898291" elapsed="0.000027"/>
</return>
<msg time="2026-04-08T01:05:03.898436" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-08T01:05:03.271711" elapsed="0.626750"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-08T01:05:03.899015" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-08T01:05:03.898620" elapsed="0.000472">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-08T01:05:03.270611" elapsed="0.628611">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:05:05.902836" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:05:05.902073" elapsed="0.000833"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:05:05.904933" level="INFO">${member_ip} = 10.30.171.110</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:05:05.904329" elapsed="0.000663"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:05:05.907062" level="INFO">index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-08T01:05:05.907322" level="INFO">${current_connection} = index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T01:05:05.906693" elapsed="0.000692"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Controller" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:05:05.959842" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:05:05.959495" elapsed="0.000422"/>
</branch>
<status status="PASS" start="2026-04-08T01:05:05.959469" elapsed="0.000474"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:05:05.960328" level="INFO">index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-08T01:05:05.960442" level="INFO">${current_ssh_connection} = index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T01:05:05.960127" elapsed="0.000346"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:05:05.961146" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.110" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:05:05.960712" elapsed="0.000500"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:05:05.961800" level="INFO">${conn_id} = 557</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T01:05:05.961394" elapsed="0.000432"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T01:05:05.962775" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T01:05:05.962856" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T01:05:05.962491" elapsed="0.000396"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:05:05.963092" elapsed="0.000406"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T01:05:05.964411" level="INFO">Logging into '10.30.171.110:22' as 'jenkins'.</msg>
<msg time="2026-04-08T01:05:06.266039" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 01:05:03 UTC 2026

  System load:  0.5                Processes:             125
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 7%                 IPv4 address for ens3: 10.30.171.110
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 01:05:03 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T01:05:05.964032" elapsed="0.302226"/>
</kw>
<msg time="2026-04-08T01:05:06.266373" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:05:05.963674" elapsed="0.302811"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T01:05:05.962071" elapsed="0.304572"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T01:05:06.267345" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-08T01:05:06.289565" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-08T01:05:06.289818" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-08T01:05:06.289915" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T01:05:06.266988" elapsed="0.022978"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T01:05:06.290449" elapsed="0.000493"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:05:06.292136" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:05:06.291477" elapsed="0.000789"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T01:05:06.292815" elapsed="0.000037"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:05:06.292500" elapsed="0.000428"/>
</branch>
<status status="PASS" start="2026-04-08T01:05:06.292442" elapsed="0.000538"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T01:05:06.293455" elapsed="0.000061"/>
</return>
<status status="PASS" start="2026-04-08T01:05:06.293201" elapsed="0.000389"/>
</branch>
<status status="PASS" start="2026-04-08T01:05:06.293110" elapsed="0.000533"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T01:05:06.293764" elapsed="0.000036"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:05:06.301829" elapsed="0.000157"/>
</kw>
<msg time="2026-04-08T01:05:06.302030" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:05:06.300711" elapsed="0.001382"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:05:06.302276" elapsed="0.000082"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:05:06.302512" elapsed="0.000021"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:05:06.294748" elapsed="0.007847"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T01:05:05.958280" elapsed="0.344501"/>
</kw>
<msg time="2026-04-08T01:05:06.302852" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:05:05.910500" elapsed="0.392420"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-08T01:05:05.908918" elapsed="0.394404"/>
</kw>
<msg time="2026-04-08T01:05:06.303367" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:05:05.907741" elapsed="0.395674"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:05:06.306688" elapsed="0.000224"/>
</kw>
<msg time="2026-04-08T01:05:06.307012" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:05:06.306116" elapsed="0.000960"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:05:06.307256" elapsed="0.000023"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:05:06.307423" elapsed="0.000020"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:05:06.303712" elapsed="0.003791"/>
</kw>
<msg time="2026-04-08T01:05:06.307595" level="INFO">${output} = 1</msg>
<var>${output}</var>
<arg>Utils.Run_Command_On_Controller</arg>
<arg>${member_ip}</arg>
<arg>${command}</arg>
<doc>Store current connection index, run keyword returning its result, restore connection in teardown.
Note that in order to avoid "got positional argument after named arguments", it is safer to use positional (not named) arguments on call.</doc>
<status status="PASS" start="2026-04-08T01:05:05.905523" elapsed="0.402097"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:05:06.308051" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:05:06.307802" elapsed="0.000296"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-08T01:05:06.308139" elapsed="0.000068"/>
</return>
<msg time="2026-04-08T01:05:06.308336" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-08T01:05:05.903389" elapsed="0.404971"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-08T01:05:06.308408" elapsed="0.000025"/>
</return>
<msg time="2026-04-08T01:05:06.308552" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-08T01:05:05.901206" elapsed="0.407371"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-08T01:05:06.309150" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-08T01:05:06.308737" elapsed="0.000512">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-08T01:05:05.900074" elapsed="0.409295">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:05:08.312871" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:05:08.312115" elapsed="0.000824"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:05:08.315013" level="INFO">${member_ip} = 10.30.171.110</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:05:08.314355" elapsed="0.000718"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:05:08.316460" level="INFO">index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-08T01:05:08.316600" level="INFO">${current_connection} = index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T01:05:08.316224" elapsed="0.000414"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Controller" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:05:08.322789" elapsed="0.000032"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:05:08.322340" elapsed="0.000608"/>
</branch>
<status status="PASS" start="2026-04-08T01:05:08.322302" elapsed="0.000684"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:05:08.323475" level="INFO">index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-08T01:05:08.323619" level="INFO">${current_ssh_connection} = index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T01:05:08.323263" elapsed="0.000394"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:05:08.324467" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.110" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:05:08.323902" elapsed="0.000631"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:05:08.325347" level="INFO">${conn_id} = 558</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T01:05:08.324787" elapsed="0.000597"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T01:05:08.326712" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T01:05:08.326820" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T01:05:08.326293" elapsed="0.000560"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:05:08.327078" elapsed="0.000550"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T01:05:08.328526" level="INFO">Logging into '10.30.171.110:22' as 'jenkins'.</msg>
<msg time="2026-04-08T01:05:08.634800" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 01:05:03 UTC 2026

  System load:  0.5                Processes:             125
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 7%                 IPv4 address for ens3: 10.30.171.110
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 01:05:06 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T01:05:08.328209" elapsed="0.306742"/>
</kw>
<msg time="2026-04-08T01:05:08.635033" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:05:08.327839" elapsed="0.307283"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T01:05:08.325715" elapsed="0.309543"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T01:05:08.635802" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-08T01:05:08.657859" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-08T01:05:08.657979" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-08T01:05:08.658022" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T01:05:08.635551" elapsed="0.022493"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T01:05:08.658275" elapsed="0.000223"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:05:08.659057" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:05:08.658740" elapsed="0.000359"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T01:05:08.659385" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:05:08.659230" elapsed="0.000207"/>
</branch>
<status status="PASS" start="2026-04-08T01:05:08.659200" elapsed="0.000260"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T01:05:08.659642" elapsed="0.000029"/>
</return>
<status status="PASS" start="2026-04-08T01:05:08.659534" elapsed="0.000169"/>
</branch>
<status status="PASS" start="2026-04-08T01:05:08.659517" elapsed="0.000209"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T01:05:08.659778" elapsed="0.000016"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:05:08.663453" elapsed="0.000156"/>
</kw>
<msg time="2026-04-08T01:05:08.663653" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:05:08.662866" elapsed="0.000855"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:05:08.663883" elapsed="0.000021"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:05:08.664048" elapsed="0.000020"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:05:08.660226" elapsed="0.003977"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T01:05:08.320666" elapsed="0.343725"/>
</kw>
<msg time="2026-04-08T01:05:08.664460" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:05:08.318576" elapsed="0.345951"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-08T01:05:08.317597" elapsed="0.347301"/>
</kw>
<msg time="2026-04-08T01:05:08.664942" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:05:08.316862" elapsed="0.348127"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:05:08.668300" elapsed="0.000217"/>
</kw>
<msg time="2026-04-08T01:05:08.668619" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:05:08.667738" elapsed="0.000947"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:05:08.668848" elapsed="0.000022"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:05:08.669014" elapsed="0.000021"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:05:08.665299" elapsed="0.003797"/>
</kw>
<msg time="2026-04-08T01:05:08.669205" level="INFO">${output} = 1</msg>
<var>${output}</var>
<arg>Utils.Run_Command_On_Controller</arg>
<arg>${member_ip}</arg>
<arg>${command}</arg>
<doc>Store current connection index, run keyword returning its result, restore connection in teardown.
Note that in order to avoid "got positional argument after named arguments", it is safer to use positional (not named) arguments on call.</doc>
<status status="PASS" start="2026-04-08T01:05:08.315601" elapsed="0.353631"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:05:08.669670" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:05:08.669418" elapsed="0.000298"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-08T01:05:08.669759" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T01:05:08.669908" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-08T01:05:08.313418" elapsed="0.356515"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-08T01:05:08.669980" elapsed="0.000025"/>
</return>
<msg time="2026-04-08T01:05:08.670122" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-08T01:05:08.311305" elapsed="0.358840"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-08T01:05:08.670770" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-08T01:05:08.670378" elapsed="0.000466">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-08T01:05:08.310211" elapsed="0.360742">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:05:10.674466" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:05:10.673684" elapsed="0.000851"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:05:10.676705" level="INFO">${member_ip} = 10.30.171.110</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:05:10.675963" elapsed="0.000805"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:05:10.678823" level="INFO">index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-08T01:05:10.679050" level="INFO">${current_connection} = index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T01:05:10.678463" elapsed="0.000648"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Controller" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:05:10.684785" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:05:10.684462" elapsed="0.000380"/>
</branch>
<status status="PASS" start="2026-04-08T01:05:10.684436" elapsed="0.000432"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:05:10.685328" level="INFO">index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-08T01:05:10.685429" level="INFO">${current_ssh_connection} = index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T01:05:10.685173" elapsed="0.000284"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:05:10.686026" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.110" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:05:10.685634" elapsed="0.000440"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:05:10.686659" level="INFO">${conn_id} = 559</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T01:05:10.686271" elapsed="0.000418"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T01:05:10.687648" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T01:05:10.687723" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T01:05:10.687366" elapsed="0.000381"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:05:10.687933" elapsed="0.000411"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T01:05:10.689212" level="INFO">Logging into '10.30.171.110:22' as 'jenkins'.</msg>
<msg time="2026-04-08T01:05:11.000267" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 01:05:03 UTC 2026

  System load:  0.5                Processes:             125
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 7%                 IPv4 address for ens3: 10.30.171.110
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 01:05:08 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T01:05:10.688884" elapsed="0.311565"/>
</kw>
<msg time="2026-04-08T01:05:11.000557" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:05:10.688521" elapsed="0.312147"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T01:05:10.686930" elapsed="0.313886"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T01:05:11.001543" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-08T01:05:11.023773" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-08T01:05:11.024085" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-08T01:05:11.024244" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T01:05:11.001220" elapsed="0.023091"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T01:05:11.024835" elapsed="0.000556"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:05:11.026672" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:05:11.025892" elapsed="0.000886"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T01:05:11.027366" elapsed="0.000041"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:05:11.027011" elapsed="0.000471"/>
</branch>
<status status="PASS" start="2026-04-08T01:05:11.026958" elapsed="0.000608"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T01:05:11.028055" elapsed="0.000072"/>
</return>
<status status="PASS" start="2026-04-08T01:05:11.027749" elapsed="0.000499"/>
</branch>
<status status="PASS" start="2026-04-08T01:05:11.027709" elapsed="0.000598"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T01:05:11.028436" elapsed="0.000039"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:05:11.037082" elapsed="0.000195"/>
</kw>
<msg time="2026-04-08T01:05:11.037324" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:05:11.036005" elapsed="0.001392"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:05:11.037561" elapsed="0.000022"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:05:11.037726" elapsed="0.000021"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:05:11.029479" elapsed="0.008332"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T01:05:10.683370" elapsed="0.354627"/>
</kw>
<msg time="2026-04-08T01:05:11.038122" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:05:10.681836" elapsed="0.356390"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-08T01:05:10.680735" elapsed="0.357895"/>
</kw>
<msg time="2026-04-08T01:05:11.038675" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:05:10.679499" elapsed="0.359224"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:05:11.042319" elapsed="0.000226"/>
</kw>
<msg time="2026-04-08T01:05:11.042648" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:05:11.041627" elapsed="0.001106"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:05:11.043038" elapsed="0.000027"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:05:11.043236" elapsed="0.000022"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:05:11.039020" elapsed="0.004303"/>
</kw>
<msg time="2026-04-08T01:05:11.043418" level="INFO">${output} = 1</msg>
<var>${output}</var>
<arg>Utils.Run_Command_On_Controller</arg>
<arg>${member_ip}</arg>
<arg>${command}</arg>
<doc>Store current connection index, run keyword returning its result, restore connection in teardown.
Note that in order to avoid "got positional argument after named arguments", it is safer to use positional (not named) arguments on call.</doc>
<status status="PASS" start="2026-04-08T01:05:10.677383" elapsed="0.366060"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:05:11.043901" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:05:11.043646" elapsed="0.000301"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-08T01:05:11.043990" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T01:05:11.044139" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-08T01:05:10.674987" elapsed="0.369194"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-08T01:05:11.044229" elapsed="0.000027"/>
</return>
<msg time="2026-04-08T01:05:11.044375" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-08T01:05:10.672833" elapsed="0.371566"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-08T01:05:11.044962" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-08T01:05:11.044560" elapsed="0.000479">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-08T01:05:10.671759" elapsed="0.373393">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:05:13.048702" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:05:13.047934" elapsed="0.000836"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:05:13.050466" level="INFO">${member_ip} = 10.30.171.110</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:05:13.050067" elapsed="0.000435"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:05:13.051785" level="INFO">index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-08T01:05:13.051928" level="INFO">${current_connection} = index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T01:05:13.051541" elapsed="0.000424"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Controller" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:05:13.057985" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:05:13.057557" elapsed="0.000508"/>
</branch>
<status status="PASS" start="2026-04-08T01:05:13.057524" elapsed="0.000577"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:05:13.058566" level="INFO">index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-08T01:05:13.058790" level="INFO">${current_ssh_connection} = index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T01:05:13.058358" elapsed="0.000471"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:05:13.059646" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.110" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:05:13.059071" elapsed="0.000641"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:05:13.060522" level="INFO">${conn_id} = 560</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T01:05:13.059962" elapsed="0.000596"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T01:05:13.061918" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T01:05:13.061994" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T01:05:13.061503" elapsed="0.000515"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:05:13.062192" elapsed="0.000325"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T01:05:13.063432" level="INFO">Logging into '10.30.171.110:22' as 'jenkins'.</msg>
<msg time="2026-04-08T01:05:13.381643" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 01:05:03 UTC 2026

  System load:  0.5                Processes:             125
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 7%                 IPv4 address for ens3: 10.30.171.110
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 01:05:10 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T01:05:13.063044" elapsed="0.318759"/>
</kw>
<msg time="2026-04-08T01:05:13.381894" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:05:13.062688" elapsed="0.319321"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T01:05:13.060890" elapsed="0.321256"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T01:05:13.382749" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-08T01:05:13.404637" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-08T01:05:13.404886" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-08T01:05:13.404983" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T01:05:13.382474" elapsed="0.022578"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T01:05:13.405524" elapsed="0.000439"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:05:13.407087" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:05:13.406451" elapsed="0.000757"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T01:05:13.407710" elapsed="0.000034"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:05:13.407423" elapsed="0.000388"/>
</branch>
<status status="PASS" start="2026-04-08T01:05:13.407373" elapsed="0.000487"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T01:05:13.408285" elapsed="0.000059"/>
</return>
<status status="PASS" start="2026-04-08T01:05:13.408019" elapsed="0.000398"/>
</branch>
<status status="PASS" start="2026-04-08T01:05:13.407983" elapsed="0.000487"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T01:05:13.408583" elapsed="0.000033"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:05:13.415171" elapsed="0.000174"/>
</kw>
<msg time="2026-04-08T01:05:13.415394" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:05:13.414484" elapsed="0.000991"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:05:13.415657" elapsed="0.000023"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:05:13.415828" elapsed="0.000022"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:05:13.409546" elapsed="0.006365"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T01:05:13.055972" elapsed="0.360130"/>
</kw>
<msg time="2026-04-08T01:05:13.416264" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:05:13.053931" elapsed="0.362403"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-08T01:05:13.052942" elapsed="0.363769"/>
</kw>
<msg time="2026-04-08T01:05:13.416754" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:05:13.052215" elapsed="0.364587"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:05:13.420229" elapsed="0.000243"/>
</kw>
<msg time="2026-04-08T01:05:13.420599" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:05:13.419663" elapsed="0.001019"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:05:13.420903" elapsed="0.000026"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:05:13.421107" elapsed="0.000023"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:05:13.417126" elapsed="0.004086"/>
</kw>
<msg time="2026-04-08T01:05:13.421307" level="INFO">${output} = 1</msg>
<var>${output}</var>
<arg>Utils.Run_Command_On_Controller</arg>
<arg>${member_ip}</arg>
<arg>${command}</arg>
<doc>Store current connection index, run keyword returning its result, restore connection in teardown.
Note that in order to avoid "got positional argument after named arguments", it is safer to use positional (not named) arguments on call.</doc>
<status status="PASS" start="2026-04-08T01:05:13.050810" elapsed="0.370521"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:05:13.421784" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:05:13.421522" elapsed="0.000307"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-08T01:05:13.421872" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T01:05:13.422025" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-08T01:05:13.049250" elapsed="0.372801"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-08T01:05:13.422096" elapsed="0.000027"/>
</return>
<msg time="2026-04-08T01:05:13.422259" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-08T01:05:13.047085" elapsed="0.375198"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-08T01:05:13.422854" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-08T01:05:13.422443" elapsed="0.000487">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-08T01:05:13.046019" elapsed="0.377024">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:05:15.426492" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:05:15.425718" elapsed="0.000841"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:05:15.428498" level="INFO">${member_ip} = 10.30.171.110</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:05:15.428061" elapsed="0.000477"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:05:15.429749" level="INFO">index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-08T01:05:15.429925" level="INFO">${current_connection} = index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T01:05:15.429510" elapsed="0.000462"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Controller" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:05:15.436363" elapsed="0.000032"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:05:15.435862" elapsed="0.000586"/>
</branch>
<status status="PASS" start="2026-04-08T01:05:15.435820" elapsed="0.000666"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:05:15.437001" level="INFO">index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-08T01:05:15.437141" level="INFO">${current_ssh_connection} = index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T01:05:15.436741" elapsed="0.000459"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:05:15.438036" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.110" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:05:15.437442" elapsed="0.000764"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:05:15.439036" level="INFO">${conn_id} = 561</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T01:05:15.438473" elapsed="0.000632"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T01:05:15.440301" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T01:05:15.440378" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T01:05:15.439980" elapsed="0.000422"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:05:15.440561" elapsed="0.000319"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T01:05:15.441736" level="INFO">Logging into '10.30.171.110:22' as 'jenkins'.</msg>
<msg time="2026-04-08T01:05:15.733404" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 01:05:03 UTC 2026

  System load:  0.5                Processes:             125
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 7%                 IPv4 address for ens3: 10.30.171.110
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 01:05:13 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T01:05:15.441426" elapsed="0.292115"/>
</kw>
<msg time="2026-04-08T01:05:15.733619" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:05:15.441050" elapsed="0.292661"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T01:05:15.439484" elapsed="0.294343"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T01:05:15.734356" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-08T01:05:15.756404" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-08T01:05:15.756675" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-08T01:05:15.756777" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T01:05:15.734099" elapsed="0.022728"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T01:05:15.757299" elapsed="0.000456"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:05:15.758933" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:05:15.758272" elapsed="0.000755"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T01:05:15.759584" elapsed="0.000037"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:05:15.759283" elapsed="0.000412"/>
</branch>
<status status="PASS" start="2026-04-08T01:05:15.759227" elapsed="0.000517"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T01:05:15.760148" elapsed="0.000092"/>
</return>
<status status="PASS" start="2026-04-08T01:05:15.759910" elapsed="0.000403"/>
</branch>
<status status="PASS" start="2026-04-08T01:05:15.759872" elapsed="0.000492"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T01:05:15.760477" elapsed="0.000035"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:05:15.768142" elapsed="0.000171"/>
</kw>
<msg time="2026-04-08T01:05:15.768355" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:05:15.767283" elapsed="0.001137"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:05:15.768579" elapsed="0.000022"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:05:15.768743" elapsed="0.000019"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:05:15.761449" elapsed="0.007373"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T01:05:15.434243" elapsed="0.334764"/>
</kw>
<msg time="2026-04-08T01:05:15.769075" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:05:15.432079" elapsed="0.337062"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-08T01:05:15.430991" elapsed="0.338583"/>
</kw>
<msg time="2026-04-08T01:05:15.769618" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:05:15.430228" elapsed="0.339445"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:05:15.772931" elapsed="0.000208"/>
</kw>
<msg time="2026-04-08T01:05:15.773330" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:05:15.772427" elapsed="0.000981"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:05:15.773581" elapsed="0.000022"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:05:15.773745" elapsed="0.000021"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:05:15.769978" elapsed="0.003848"/>
</kw>
<msg time="2026-04-08T01:05:15.773918" level="INFO">${output} = 1</msg>
<var>${output}</var>
<arg>Utils.Run_Command_On_Controller</arg>
<arg>${member_ip}</arg>
<arg>${command}</arg>
<doc>Store current connection index, run keyword returning its result, restore connection in teardown.
Note that in order to avoid "got positional argument after named arguments", it is safer to use positional (not named) arguments on call.</doc>
<status status="PASS" start="2026-04-08T01:05:15.428888" elapsed="0.345054"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:05:15.774387" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:05:15.774118" elapsed="0.000315"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-08T01:05:15.774474" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T01:05:15.774624" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-08T01:05:15.427150" elapsed="0.347499"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-08T01:05:15.774695" elapsed="0.000026"/>
</return>
<msg time="2026-04-08T01:05:15.774847" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-08T01:05:15.424870" elapsed="0.350002"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-08T01:05:15.775455" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-08T01:05:15.775034" elapsed="0.000497">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-08T01:05:15.423795" elapsed="0.351850">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:05:17.779256" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:05:17.778480" elapsed="0.000846"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:05:17.781392" level="INFO">${member_ip} = 10.30.171.110</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:05:17.780715" elapsed="0.000737"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:05:17.782783" level="INFO">index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-08T01:05:17.782925" level="INFO">${current_connection} = index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T01:05:17.782550" elapsed="0.000414"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Controller" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:05:17.788828" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:05:17.788402" elapsed="0.000505"/>
</branch>
<status status="PASS" start="2026-04-08T01:05:17.788369" elapsed="0.000573"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:05:17.789446" level="INFO">index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-08T01:05:17.789588" level="INFO">${current_ssh_connection} = index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T01:05:17.789236" elapsed="0.000389"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:05:17.790431" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.110" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:05:17.789863" elapsed="0.000634"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:05:17.791378" level="INFO">${conn_id} = 562</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T01:05:17.790823" elapsed="0.000591"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T01:05:17.792708" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T01:05:17.792814" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T01:05:17.792325" elapsed="0.000522"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:05:17.793101" elapsed="0.000510"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T01:05:17.794815" level="INFO">Logging into '10.30.171.110:22' as 'jenkins'.</msg>
<msg time="2026-04-08T01:05:18.109972" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 01:05:03 UTC 2026

  System load:  0.5                Processes:             125
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 7%                 IPv4 address for ens3: 10.30.171.110
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 01:05:15 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T01:05:17.794404" elapsed="0.315743"/>
</kw>
<msg time="2026-04-08T01:05:18.110256" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:05:17.793851" elapsed="0.316520"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T01:05:17.791746" elapsed="0.318758"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T01:05:18.111090" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-08T01:05:18.133506" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-08T01:05:18.133757" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-08T01:05:18.133854" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T01:05:18.110809" elapsed="0.023095"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T01:05:18.134397" elapsed="0.000485"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:05:18.136064" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:05:18.135424" elapsed="0.000763"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T01:05:18.136767" elapsed="0.000038"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:05:18.136437" elapsed="0.000439"/>
</branch>
<status status="PASS" start="2026-04-08T01:05:18.136377" elapsed="0.000549"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T01:05:18.137401" elapsed="0.000061"/>
</return>
<status status="PASS" start="2026-04-08T01:05:18.137099" elapsed="0.000440"/>
</branch>
<status status="PASS" start="2026-04-08T01:05:18.137062" elapsed="0.000532"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T01:05:18.137711" elapsed="0.000037"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:05:18.146049" elapsed="0.000192"/>
</kw>
<msg time="2026-04-08T01:05:18.146285" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:05:18.144748" elapsed="0.001601"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:05:18.146510" elapsed="0.000023"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:05:18.146704" elapsed="0.000023"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:05:18.138705" elapsed="0.008085"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T01:05:17.786913" elapsed="0.360064"/>
</kw>
<msg time="2026-04-08T01:05:18.147047" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:05:17.784896" elapsed="0.362217"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-08T01:05:17.783932" elapsed="0.363617"/>
</kw>
<msg time="2026-04-08T01:05:18.147684" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:05:17.783210" elapsed="0.364529"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:05:18.151103" elapsed="0.000248"/>
</kw>
<msg time="2026-04-08T01:05:18.151454" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:05:18.150504" elapsed="0.001016"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:05:18.151704" elapsed="0.000027"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:05:18.151881" elapsed="0.000021"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:05:18.148040" elapsed="0.003944"/>
</kw>
<msg time="2026-04-08T01:05:18.152095" level="INFO">${output} = 1</msg>
<var>${output}</var>
<arg>Utils.Run_Command_On_Controller</arg>
<arg>${member_ip}</arg>
<arg>${command}</arg>
<doc>Store current connection index, run keyword returning its result, restore connection in teardown.
Note that in order to avoid "got positional argument after named arguments", it is safer to use positional (not named) arguments on call.</doc>
<status status="PASS" start="2026-04-08T01:05:17.781948" elapsed="0.370174"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:05:18.152591" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:05:18.152335" elapsed="0.000328"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-08T01:05:18.152720" elapsed="0.000031"/>
</return>
<msg time="2026-04-08T01:05:18.152882" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-08T01:05:17.779778" elapsed="0.373129"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-08T01:05:18.153086" elapsed="0.000034"/>
</return>
<msg time="2026-04-08T01:05:18.153265" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-08T01:05:17.777637" elapsed="0.375653"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-08T01:05:18.153859" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-08T01:05:18.153452" elapsed="0.000481">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-08T01:05:17.776520" elapsed="0.377526">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:05:20.157856" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:05:20.157013" elapsed="0.000915"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:05:20.160151" level="INFO">${member_ip} = 10.30.171.110</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:05:20.159500" elapsed="0.000748"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:05:20.162519" level="INFO">index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-08T01:05:20.163226" level="INFO">${current_connection} = index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T01:05:20.161973" elapsed="0.001330"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Controller" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:05:20.170532" elapsed="0.000029"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:05:20.170082" elapsed="0.000524"/>
</branch>
<status status="PASS" start="2026-04-08T01:05:20.170047" elapsed="0.000591"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:05:20.171044" level="INFO">index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-08T01:05:20.171198" level="INFO">${current_ssh_connection} = index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T01:05:20.170820" elapsed="0.000412"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:05:20.171955" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.110" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:05:20.171464" elapsed="0.000552"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:05:20.172755" level="INFO">${conn_id} = 563</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T01:05:20.172271" elapsed="0.000518"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T01:05:20.173911" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T01:05:20.173992" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T01:05:20.173623" elapsed="0.000394"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:05:20.174211" elapsed="0.000351"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T01:05:20.175594" level="INFO">Logging into '10.30.171.110:22' as 'jenkins'.</msg>
<msg time="2026-04-08T01:05:20.534523" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 01:05:03 UTC 2026

  System load:  0.5                Processes:             125
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 7%                 IPv4 address for ens3: 10.30.171.110
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 01:05:18 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T01:05:20.175269" elapsed="0.359448"/>
</kw>
<msg time="2026-04-08T01:05:20.534806" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:05:20.174740" elapsed="0.360173"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T01:05:20.173180" elapsed="0.361857"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T01:05:20.535656" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-08T01:05:20.558073" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-08T01:05:20.558371" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-08T01:05:20.558472" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T01:05:20.535379" elapsed="0.023144"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T01:05:20.559021" elapsed="0.000611"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:05:20.560848" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:05:20.560142" elapsed="0.000802"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T01:05:20.561499" elapsed="0.000036"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:05:20.561197" elapsed="0.000411"/>
</branch>
<status status="PASS" start="2026-04-08T01:05:20.561110" elapsed="0.000549"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T01:05:20.562060" elapsed="0.000059"/>
</return>
<status status="PASS" start="2026-04-08T01:05:20.561822" elapsed="0.000420"/>
</branch>
<status status="PASS" start="2026-04-08T01:05:20.561785" elapsed="0.000538"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T01:05:20.562496" elapsed="0.000044"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:05:20.569747" elapsed="0.000218"/>
</kw>
<msg time="2026-04-08T01:05:20.570027" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:05:20.568858" elapsed="0.001261"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:05:20.570382" elapsed="0.000031"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:05:20.570611" elapsed="0.000085"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:05:20.563998" elapsed="0.006784"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T01:05:20.168801" elapsed="0.402256"/>
</kw>
<msg time="2026-04-08T01:05:20.571150" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:05:20.165059" elapsed="0.406215"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-08T01:05:20.164365" elapsed="0.407411"/>
</kw>
<msg time="2026-04-08T01:05:20.571837" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:05:20.163698" elapsed="0.408204"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:05:20.576867" elapsed="0.000259"/>
</kw>
<msg time="2026-04-08T01:05:20.577251" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:05:20.575902" elapsed="0.001415"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:05:20.577479" elapsed="0.000022"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:05:20.577642" elapsed="0.000021"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:05:20.572438" elapsed="0.005284"/>
</kw>
<msg time="2026-04-08T01:05:20.577813" level="INFO">${output} = 1</msg>
<var>${output}</var>
<arg>Utils.Run_Command_On_Controller</arg>
<arg>${member_ip}</arg>
<arg>${command}</arg>
<doc>Store current connection index, run keyword returning its result, restore connection in teardown.
Note that in order to avoid "got positional argument after named arguments", it is safer to use positional (not named) arguments on call.</doc>
<status status="PASS" start="2026-04-08T01:05:20.160825" elapsed="0.417012"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:05:20.578330" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:05:20.578033" elapsed="0.000342"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-08T01:05:20.578415" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T01:05:20.578575" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-08T01:05:20.158455" elapsed="0.420146"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-08T01:05:20.578672" elapsed="0.000036"/>
</return>
<msg time="2026-04-08T01:05:20.578839" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-08T01:05:20.156104" elapsed="0.422760"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-08T01:05:20.579439" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-08T01:05:20.579022" elapsed="0.000504">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-08T01:05:20.154883" elapsed="0.424759">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:05:22.583461" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:05:22.582618" elapsed="0.000915"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:05:22.585800" level="INFO">${member_ip} = 10.30.171.110</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:05:22.585087" elapsed="0.000777"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:05:22.587276" level="INFO">index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-08T01:05:22.587420" level="INFO">${current_connection} = index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T01:05:22.587005" elapsed="0.000452"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Controller" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:05:22.593514" elapsed="0.000033"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:05:22.593012" elapsed="0.000586"/>
</branch>
<status status="PASS" start="2026-04-08T01:05:22.592977" elapsed="0.000657"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:05:22.594085" level="INFO">index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-08T01:05:22.594262" level="INFO">${current_ssh_connection} = index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T01:05:22.593875" elapsed="0.000427"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:05:22.595087" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.110" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:05:22.594545" elapsed="0.000608"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:05:22.595958" level="INFO">${conn_id} = 564</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T01:05:22.595424" elapsed="0.000569"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T01:05:22.597385" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T01:05:22.597574" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T01:05:22.596934" elapsed="0.000674"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:05:22.597834" elapsed="0.000439"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T01:05:22.599121" level="INFO">Logging into '10.30.171.110:22' as 'jenkins'.</msg>
<msg time="2026-04-08T01:05:22.909253" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 01:05:03 UTC 2026

  System load:  0.5                Processes:             125
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 7%                 IPv4 address for ens3: 10.30.171.110
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 01:05:20 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T01:05:22.598803" elapsed="0.310590"/>
</kw>
<msg time="2026-04-08T01:05:22.909472" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:05:22.598446" elapsed="0.311114"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T01:05:22.596348" elapsed="0.313325"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T01:05:22.910252" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-08T01:05:22.932557" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-08T01:05:22.932832" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-08T01:05:22.932933" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T01:05:22.909963" elapsed="0.023019"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T01:05:22.933443" elapsed="0.000475"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:05:22.935065" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:05:22.934436" elapsed="0.000750"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T01:05:22.935704" elapsed="0.000035"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:05:22.935410" elapsed="0.000399"/>
</branch>
<status status="PASS" start="2026-04-08T01:05:22.935357" elapsed="0.000502"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T01:05:22.936292" elapsed="0.000060"/>
</return>
<status status="PASS" start="2026-04-08T01:05:22.936019" elapsed="0.000408"/>
</branch>
<status status="PASS" start="2026-04-08T01:05:22.935982" elapsed="0.000499"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T01:05:22.936595" elapsed="0.000035"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:05:22.942681" elapsed="0.000157"/>
</kw>
<msg time="2026-04-08T01:05:22.942882" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:05:22.942079" elapsed="0.000870"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:05:22.943111" elapsed="0.000022"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:05:22.943298" elapsed="0.000020"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:05:22.937567" elapsed="0.005812"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T01:05:22.591501" elapsed="0.352061"/>
</kw>
<msg time="2026-04-08T01:05:22.943632" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:05:22.589453" elapsed="0.354245"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-08T01:05:22.588430" elapsed="0.355633"/>
</kw>
<msg time="2026-04-08T01:05:22.944106" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:05:22.587683" elapsed="0.356485"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:05:22.947412" elapsed="0.000218"/>
</kw>
<msg time="2026-04-08T01:05:22.947781" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:05:22.946889" elapsed="0.000959"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:05:22.948011" elapsed="0.000022"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:05:22.948234" elapsed="0.000025"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:05:22.944463" elapsed="0.003860"/>
</kw>
<msg time="2026-04-08T01:05:22.948415" level="INFO">${output} = 1</msg>
<var>${output}</var>
<arg>Utils.Run_Command_On_Controller</arg>
<arg>${member_ip}</arg>
<arg>${command}</arg>
<doc>Store current connection index, run keyword returning its result, restore connection in teardown.
Note that in order to avoid "got positional argument after named arguments", it is safer to use positional (not named) arguments on call.</doc>
<status status="PASS" start="2026-04-08T01:05:22.586234" elapsed="0.362206"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:05:22.948880" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:05:22.948620" elapsed="0.000305"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-08T01:05:22.948967" elapsed="0.000033"/>
</return>
<msg time="2026-04-08T01:05:22.949121" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-08T01:05:22.584017" elapsed="0.365128"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-08T01:05:22.949210" elapsed="0.000027"/>
</return>
<msg time="2026-04-08T01:05:22.949356" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-08T01:05:22.581700" elapsed="0.367681"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-08T01:05:22.949933" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-08T01:05:22.949539" elapsed="0.000468">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-08T01:05:22.580481" elapsed="0.369638">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:05:24.953658" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:05:24.952879" elapsed="0.000849"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:05:24.955776" level="INFO">${member_ip} = 10.30.171.110</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:05:24.955123" elapsed="0.000712"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:05:24.957700" level="INFO">index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-08T01:05:24.957923" level="INFO">${current_connection} = index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T01:05:24.957333" elapsed="0.000650"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Controller" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:05:24.964960" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:05:24.964525" elapsed="0.000516"/>
</branch>
<status status="PASS" start="2026-04-08T01:05:24.964490" elapsed="0.000587"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:05:24.965563" level="INFO">index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-08T01:05:24.965704" level="INFO">${current_ssh_connection} = index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T01:05:24.965350" elapsed="0.000391"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:05:24.966553" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.110" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:05:24.965983" elapsed="0.000636"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:05:24.967441" level="INFO">${conn_id} = 565</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T01:05:24.966868" elapsed="0.000610"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T01:05:24.968789" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T01:05:24.968895" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T01:05:24.968396" elapsed="0.000532"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:05:24.969309" elapsed="0.000455"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T01:05:24.970999" level="INFO">Logging into '10.30.171.110:22' as 'jenkins'.</msg>
<msg time="2026-04-08T01:05:25.289176" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 01:05:03 UTC 2026

  System load:  0.5                Processes:             125
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 7%                 IPv4 address for ens3: 10.30.171.110
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 01:05:22 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T01:05:24.970563" elapsed="0.318792"/>
</kw>
<msg time="2026-04-08T01:05:25.289449" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:05:24.970032" elapsed="0.319545"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T01:05:24.967812" elapsed="0.321917"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T01:05:25.290427" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-08T01:05:25.312942" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-08T01:05:25.313256" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-08T01:05:25.313360" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T01:05:25.290085" elapsed="0.023327"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T01:05:25.313837" elapsed="0.000522"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:05:25.315541" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:05:25.314830" elapsed="0.000805"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T01:05:25.316191" elapsed="0.000041"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:05:25.315857" elapsed="0.000448"/>
</branch>
<status status="PASS" start="2026-04-08T01:05:25.315803" elapsed="0.000554"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T01:05:25.316765" elapsed="0.000060"/>
</return>
<status status="PASS" start="2026-04-08T01:05:25.316523" elapsed="0.000373"/>
</branch>
<status status="PASS" start="2026-04-08T01:05:25.316485" elapsed="0.000464"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T01:05:25.317065" elapsed="0.000035"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:05:25.324749" elapsed="0.000154"/>
</kw>
<msg time="2026-04-08T01:05:25.324946" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:05:25.324029" elapsed="0.000981"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:05:25.325186" elapsed="0.000023"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:05:25.325362" elapsed="0.000022"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:05:25.318077" elapsed="0.007369"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T01:05:24.963018" elapsed="0.362627"/>
</kw>
<msg time="2026-04-08T01:05:25.325712" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:05:24.960726" elapsed="0.365052"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-08T01:05:24.959589" elapsed="0.366558"/>
</kw>
<msg time="2026-04-08T01:05:25.326208" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:05:24.958366" elapsed="0.367893"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:05:25.329613" elapsed="0.000217"/>
</kw>
<msg time="2026-04-08T01:05:25.329927" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:05:25.329033" elapsed="0.000958"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:05:25.330330" elapsed="0.000024"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:05:25.330496" elapsed="0.000021"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:05:25.326549" elapsed="0.004029"/>
</kw>
<msg time="2026-04-08T01:05:25.330668" level="INFO">${output} = 1</msg>
<var>${output}</var>
<arg>Utils.Run_Command_On_Controller</arg>
<arg>${member_ip}</arg>
<arg>${command}</arg>
<doc>Store current connection index, run keyword returning its result, restore connection in teardown.
Note that in order to avoid "got positional argument after named arguments", it is safer to use positional (not named) arguments on call.</doc>
<status status="PASS" start="2026-04-08T01:05:24.956387" elapsed="0.374305"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:05:25.331138" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:05:25.330871" elapsed="0.000330"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-08T01:05:25.331243" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T01:05:25.331394" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-08T01:05:24.954208" elapsed="0.377211"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-08T01:05:25.331466" elapsed="0.000026"/>
</return>
<msg time="2026-04-08T01:05:25.331609" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-08T01:05:24.952026" elapsed="0.379607"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-08T01:05:25.332272" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-08T01:05:25.331792" elapsed="0.000563">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-08T01:05:24.950916" elapsed="0.381556">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:05:27.336121" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:05:27.335362" elapsed="0.000860"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:05:27.338306" level="INFO">${member_ip} = 10.30.171.110</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:05:27.337701" elapsed="0.000643"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:05:27.339486" level="INFO">index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-08T01:05:27.339626" level="INFO">${current_connection} = index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T01:05:27.339244" elapsed="0.000419"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Controller" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:05:27.345943" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:05:27.345457" elapsed="0.000566"/>
</branch>
<status status="PASS" start="2026-04-08T01:05:27.345422" elapsed="0.000637"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:05:27.346542" level="INFO">index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-08T01:05:27.346683" level="INFO">${current_ssh_connection} = index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T01:05:27.346332" elapsed="0.000388"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:05:27.347526" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.110" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:05:27.346962" elapsed="0.000630"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:05:27.348401" level="INFO">${conn_id} = 566</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T01:05:27.347840" elapsed="0.000598"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T01:05:27.349764" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T01:05:27.349870" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T01:05:27.349344" elapsed="0.000558"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:05:27.350138" elapsed="0.000483"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T01:05:27.351561" level="INFO">Logging into '10.30.171.110:22' as 'jenkins'.</msg>
<msg time="2026-04-08T01:05:27.677392" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 01:05:03 UTC 2026

  System load:  0.5                Processes:             125
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 7%                 IPv4 address for ens3: 10.30.171.110
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 01:05:25 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T01:05:27.351243" elapsed="0.326337"/>
</kw>
<msg time="2026-04-08T01:05:27.677684" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:05:27.350862" elapsed="0.326945"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T01:05:27.348769" elapsed="0.329181"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T01:05:27.678686" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-08T01:05:27.702069" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-08T01:05:27.702524" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-08T01:05:27.702627" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T01:05:27.678352" elapsed="0.024331"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T01:05:27.703337" elapsed="0.000562"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:05:27.705245" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:05:27.704472" elapsed="0.000946"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T01:05:27.705976" elapsed="0.000044"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:05:27.705662" elapsed="0.000441"/>
</branch>
<status status="PASS" start="2026-04-08T01:05:27.705603" elapsed="0.000636"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T01:05:27.706678" elapsed="0.000076"/>
</return>
<status status="PASS" start="2026-04-08T01:05:27.706428" elapsed="0.000400"/>
</branch>
<status status="PASS" start="2026-04-08T01:05:27.706387" elapsed="0.000495"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T01:05:27.706998" elapsed="0.000045"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:05:27.715026" elapsed="0.000178"/>
</kw>
<msg time="2026-04-08T01:05:27.715255" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:05:27.714349" elapsed="0.000992"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:05:27.715512" elapsed="0.000023"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:05:27.715681" elapsed="0.000020"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:05:27.708045" elapsed="0.007721"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T01:05:27.343862" elapsed="0.372090"/>
</kw>
<msg time="2026-04-08T01:05:27.716023" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:05:27.341805" elapsed="0.374286"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-08T01:05:27.340771" elapsed="0.375733"/>
</kw>
<msg time="2026-04-08T01:05:27.716549" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:05:27.340014" elapsed="0.376585"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:05:27.720320" elapsed="0.000234"/>
</kw>
<msg time="2026-04-08T01:05:27.720655" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:05:27.719695" elapsed="0.001027"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:05:27.720887" elapsed="0.000022"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:05:27.721133" elapsed="0.000049"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:05:27.716895" elapsed="0.004355"/>
</kw>
<msg time="2026-04-08T01:05:27.721380" level="INFO">${output} = 1</msg>
<var>${output}</var>
<arg>Utils.Run_Command_On_Controller</arg>
<arg>${member_ip}</arg>
<arg>${command}</arg>
<doc>Store current connection index, run keyword returning its result, restore connection in teardown.
Note that in order to avoid "got positional argument after named arguments", it is safer to use positional (not named) arguments on call.</doc>
<status status="PASS" start="2026-04-08T01:05:27.338650" elapsed="0.382762"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:05:27.721929" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:05:27.721608" elapsed="0.000490"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-08T01:05:27.722146" elapsed="0.000050"/>
</return>
<msg time="2026-04-08T01:05:27.722334" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-08T01:05:27.336683" elapsed="0.385688"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-08T01:05:27.722432" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T01:05:27.722588" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-08T01:05:27.334485" elapsed="0.388128"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-08T01:05:27.723214" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-08T01:05:27.722784" elapsed="0.000513">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-08T01:05:27.333330" elapsed="0.390101">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:05:29.726937" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:05:29.726196" elapsed="0.000810"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:05:29.728835" level="INFO">${member_ip} = 10.30.171.110</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:05:29.728457" elapsed="0.000415"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:05:29.730012" level="INFO">index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-08T01:05:29.730151" level="INFO">${current_connection} = index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T01:05:29.729778" elapsed="0.000431"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Controller" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:05:29.736109" elapsed="0.000033"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:05:29.735655" elapsed="0.000557"/>
</branch>
<status status="PASS" start="2026-04-08T01:05:29.735622" elapsed="0.000628"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:05:29.736698" level="INFO">index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-08T01:05:29.736838" level="INFO">${current_ssh_connection} = index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T01:05:29.736490" elapsed="0.000385"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:05:29.737696" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.110" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:05:29.737117" elapsed="0.000644"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:05:29.738599" level="INFO">${conn_id} = 567</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T01:05:29.738011" elapsed="0.000625"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T01:05:29.739937" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T01:05:29.740082" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T01:05:29.739551" elapsed="0.000564"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:05:29.740395" elapsed="0.000328"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T01:05:29.741600" level="INFO">Logging into '10.30.171.110:22' as 'jenkins'.</msg>
<msg time="2026-04-08T01:05:30.058873" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 01:05:03 UTC 2026

  System load:  0.5                Processes:             125
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 7%                 IPv4 address for ens3: 10.30.171.110
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 01:05:27 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T01:05:29.741284" elapsed="0.317819"/>
</kw>
<msg time="2026-04-08T01:05:30.059207" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:05:29.740895" elapsed="0.318399"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T01:05:29.738970" elapsed="0.320434"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T01:05:30.059966" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-08T01:05:30.082185" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-08T01:05:30.082430" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-08T01:05:30.082528" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T01:05:30.059686" elapsed="0.022892"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T01:05:30.083004" elapsed="0.000512"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:05:30.084729" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:05:30.084020" elapsed="0.000804"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T01:05:30.085392" elapsed="0.000037"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:05:30.085045" elapsed="0.000458"/>
</branch>
<status status="PASS" start="2026-04-08T01:05:30.084990" elapsed="0.000563"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T01:05:30.085957" elapsed="0.000060"/>
</return>
<status status="PASS" start="2026-04-08T01:05:30.085717" elapsed="0.000373"/>
</branch>
<status status="PASS" start="2026-04-08T01:05:30.085680" elapsed="0.000462"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T01:05:30.086323" elapsed="0.000035"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:05:30.093457" elapsed="0.000158"/>
</kw>
<msg time="2026-04-08T01:05:30.093657" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:05:30.092772" elapsed="0.000950"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:05:30.093880" elapsed="0.000022"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:05:30.094044" elapsed="0.000021"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:05:30.087274" elapsed="0.006850"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T01:05:29.734206" elapsed="0.360125"/>
</kw>
<msg time="2026-04-08T01:05:30.094399" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:05:29.732145" elapsed="0.362321"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-08T01:05:29.731152" elapsed="0.363848"/>
</kw>
<msg time="2026-04-08T01:05:30.095046" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:05:29.730435" elapsed="0.364660"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:05:30.098438" elapsed="0.000224"/>
</kw>
<msg time="2026-04-08T01:05:30.098762" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:05:30.097833" elapsed="0.000995"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:05:30.098990" elapsed="0.000022"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:05:30.099303" elapsed="0.000023"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:05:30.095417" elapsed="0.003972"/>
</kw>
<msg time="2026-04-08T01:05:30.099483" level="INFO">${output} = 1</msg>
<var>${output}</var>
<arg>Utils.Run_Command_On_Controller</arg>
<arg>${member_ip}</arg>
<arg>${command}</arg>
<doc>Store current connection index, run keyword returning its result, restore connection in teardown.
Note that in order to avoid "got positional argument after named arguments", it is safer to use positional (not named) arguments on call.</doc>
<status status="PASS" start="2026-04-08T01:05:29.729198" elapsed="0.370310"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:05:30.099948" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:05:30.099688" elapsed="0.000305"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-08T01:05:30.100034" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T01:05:30.100287" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-08T01:05:29.727521" elapsed="0.372792"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-08T01:05:30.100360" elapsed="0.000027"/>
</return>
<msg time="2026-04-08T01:05:30.100506" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-08T01:05:29.725353" elapsed="0.375177"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-08T01:05:30.101083" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-08T01:05:30.100688" elapsed="0.000485">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-08T01:05:29.724271" elapsed="0.377015">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:05:32.104877" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:05:32.104107" elapsed="0.000841"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:05:32.107065" level="INFO">${member_ip} = 10.30.171.110</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:05:32.106378" elapsed="0.000748"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:05:32.108620" level="INFO">index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-08T01:05:32.108801" level="INFO">${current_connection} = index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T01:05:32.108320" elapsed="0.000529"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Controller" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:05:32.115236" elapsed="0.000032"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:05:32.114722" elapsed="0.000598"/>
</branch>
<status status="PASS" start="2026-04-08T01:05:32.114689" elapsed="0.000667"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:05:32.115803" level="INFO">index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-08T01:05:32.115977" level="INFO">${current_ssh_connection} = index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T01:05:32.115592" elapsed="0.000430"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:05:32.116856" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.110" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:05:32.116300" elapsed="0.000623"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:05:32.117747" level="INFO">${conn_id} = 568</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T01:05:32.117200" elapsed="0.000585"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T01:05:32.119226" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T01:05:32.119364" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T01:05:32.118760" elapsed="0.000635"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:05:32.119561" elapsed="0.000328"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T01:05:32.120770" level="INFO">Logging into '10.30.171.110:22' as 'jenkins'.</msg>
<msg time="2026-04-08T01:05:32.429087" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 01:05:03 UTC 2026

  System load:  0.5                Processes:             125
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 7%                 IPv4 address for ens3: 10.30.171.110
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 01:05:30 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T01:05:32.120452" elapsed="0.308813"/>
</kw>
<msg time="2026-04-08T01:05:32.429349" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:05:32.120062" elapsed="0.309467"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T01:05:32.118127" elapsed="0.311519"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T01:05:32.430230" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-08T01:05:32.452791" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-08T01:05:32.453042" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-08T01:05:32.453138" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T01:05:32.429933" elapsed="0.023325"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T01:05:32.453684" elapsed="0.000602"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:05:32.455479" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:05:32.454803" elapsed="0.000772"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T01:05:32.456094" elapsed="0.000035"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:05:32.455797" elapsed="0.000443"/>
</branch>
<status status="PASS" start="2026-04-08T01:05:32.455743" elapsed="0.000549"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T01:05:32.456697" elapsed="0.000058"/>
</return>
<status status="PASS" start="2026-04-08T01:05:32.456457" elapsed="0.000373"/>
</branch>
<status status="PASS" start="2026-04-08T01:05:32.456419" elapsed="0.000463"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T01:05:32.456996" elapsed="0.000036"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:05:32.465410" elapsed="0.000348"/>
</kw>
<msg time="2026-04-08T01:05:32.465855" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:05:32.463994" elapsed="0.002004"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:05:32.466607" elapsed="0.000059"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:05:32.466996" elapsed="0.000079"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:05:32.458107" elapsed="0.009147"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T01:05:32.113203" elapsed="0.354371"/>
</kw>
<msg time="2026-04-08T01:05:32.467643" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:05:32.111051" elapsed="0.356659"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-08T01:05:32.110043" elapsed="0.358232"/>
</kw>
<msg time="2026-04-08T01:05:32.468321" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:05:32.109147" elapsed="0.359222"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:05:32.471683" elapsed="0.000218"/>
</kw>
<msg time="2026-04-08T01:05:32.472003" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:05:32.471074" elapsed="0.000994"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:05:32.472245" elapsed="0.000022"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:05:32.472411" elapsed="0.000021"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:05:32.468668" elapsed="0.003824"/>
</kw>
<msg time="2026-04-08T01:05:32.472582" level="INFO">${output} = 1</msg>
<var>${output}</var>
<arg>Utils.Run_Command_On_Controller</arg>
<arg>${member_ip}</arg>
<arg>${command}</arg>
<doc>Store current connection index, run keyword returning its result, restore connection in teardown.
Note that in order to avoid "got positional argument after named arguments", it is safer to use positional (not named) arguments on call.</doc>
<status status="PASS" start="2026-04-08T01:05:32.107564" elapsed="0.365043"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:05:32.473208" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:05:32.472786" elapsed="0.000471"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-08T01:05:32.473300" elapsed="0.000032"/>
</return>
<msg time="2026-04-08T01:05:32.473455" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-08T01:05:32.105437" elapsed="0.368043"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-08T01:05:32.473566" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T01:05:32.473714" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-08T01:05:32.103285" elapsed="0.370454"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-08T01:05:32.474318" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-08T01:05:32.473898" elapsed="0.000492">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-08T01:05:32.102104" elapsed="0.372396">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:05:34.478093" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:05:34.477341" elapsed="0.000849"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:05:34.480338" level="INFO">${member_ip} = 10.30.171.110</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:05:34.479664" elapsed="0.000737"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:05:34.482278" level="INFO">index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-08T01:05:34.482505" level="INFO">${current_connection} = index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T01:05:34.481885" elapsed="0.000680"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Controller" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:05:34.490813" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:05:34.490493" elapsed="0.000379"/>
</branch>
<status status="PASS" start="2026-04-08T01:05:34.490468" elapsed="0.000430"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:05:34.491240" level="INFO">index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-08T01:05:34.491343" level="INFO">${current_ssh_connection} = index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T01:05:34.491071" elapsed="0.000299"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:05:34.491931" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.110" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:05:34.491545" elapsed="0.000432"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:05:34.492560" level="INFO">${conn_id} = 569</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T01:05:34.492168" elapsed="0.000418"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T01:05:34.493539" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T01:05:34.493615" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T01:05:34.493251" elapsed="0.000388"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:05:34.493797" elapsed="0.000316"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T01:05:34.494965" level="INFO">Logging into '10.30.171.110:22' as 'jenkins'.</msg>
<msg time="2026-04-08T01:05:34.811840" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 01:05:03 UTC 2026

  System load:  0.5                Processes:             125
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 7%                 IPv4 address for ens3: 10.30.171.110
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 01:05:32 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T01:05:34.494653" elapsed="0.317340"/>
</kw>
<msg time="2026-04-08T01:05:34.812075" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:05:34.494301" elapsed="0.317883"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T01:05:34.492822" elapsed="0.319555"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T01:05:34.812930" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-08T01:05:34.834912" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-08T01:05:34.835548" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-08T01:05:34.835773" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T01:05:34.812659" elapsed="0.023168"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T01:05:34.836419" elapsed="0.000574"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:05:34.838223" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:05:34.837545" elapsed="0.000778"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T01:05:34.838880" elapsed="0.000036"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:05:34.838576" elapsed="0.000412"/>
</branch>
<status status="PASS" start="2026-04-08T01:05:34.838514" elapsed="0.000524"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T01:05:34.839509" elapsed="0.000070"/>
</return>
<status status="PASS" start="2026-04-08T01:05:34.839240" elapsed="0.000412"/>
</branch>
<status status="PASS" start="2026-04-08T01:05:34.839199" elapsed="0.000538"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T01:05:34.839860" elapsed="0.000036"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:05:34.852509" elapsed="0.000162"/>
</kw>
<msg time="2026-04-08T01:05:34.852733" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:05:34.851788" elapsed="0.001026"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:05:34.852979" elapsed="0.000021"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:05:34.853142" elapsed="0.000035"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:05:34.840849" elapsed="0.012393"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T01:05:34.489389" elapsed="0.364046"/>
</kw>
<msg time="2026-04-08T01:05:34.853504" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:05:34.486026" elapsed="0.367544"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-08T01:05:34.484099" elapsed="0.370018"/>
</kw>
<msg time="2026-04-08T01:05:34.854187" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:05:34.482916" elapsed="0.371324"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:05:34.857568" elapsed="0.000220"/>
</kw>
<msg time="2026-04-08T01:05:34.857890" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:05:34.856955" elapsed="0.001000"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:05:34.858117" elapsed="0.000021"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:05:34.858310" elapsed="0.000021"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:05:34.854547" elapsed="0.003844"/>
</kw>
<msg time="2026-04-08T01:05:34.858486" level="INFO">${output} = 1</msg>
<var>${output}</var>
<arg>Utils.Run_Command_On_Controller</arg>
<arg>${member_ip}</arg>
<arg>${command}</arg>
<doc>Store current connection index, run keyword returning its result, restore connection in teardown.
Note that in order to avoid "got positional argument after named arguments", it is safer to use positional (not named) arguments on call.</doc>
<status status="PASS" start="2026-04-08T01:05:34.480886" elapsed="0.377624"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:05:34.859082" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:05:34.858712" elapsed="0.000417"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-08T01:05:34.859227" elapsed="0.000033"/>
</return>
<msg time="2026-04-08T01:05:34.859386" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-08T01:05:34.478663" elapsed="0.380749"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-08T01:05:34.859459" elapsed="0.000026"/>
</return>
<msg time="2026-04-08T01:05:34.859604" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-08T01:05:34.476404" elapsed="0.383224"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-08T01:05:34.860252" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-08T01:05:34.859841" elapsed="0.000489">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-08T01:05:34.475319" elapsed="0.385147">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:05:36.863936" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:05:36.863116" elapsed="0.000889"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:05:36.865440" level="INFO">${member_ip} = 10.30.171.110</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:05:36.865039" elapsed="0.000439"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:05:36.866618" level="INFO">index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-08T01:05:36.866763" level="INFO">${current_connection} = index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T01:05:36.866382" elapsed="0.000420"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Controller" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:05:36.872779" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:05:36.872346" elapsed="0.000513"/>
</branch>
<status status="PASS" start="2026-04-08T01:05:36.872310" elapsed="0.000585"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:05:36.873367" level="INFO">index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-08T01:05:36.873509" level="INFO">${current_ssh_connection} = index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T01:05:36.873136" elapsed="0.000410"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:05:36.874376" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.110" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:05:36.873791" elapsed="0.000651"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:05:36.875250" level="INFO">${conn_id} = 570</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T01:05:36.874691" elapsed="0.000595"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T01:05:36.876648" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T01:05:36.876722" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T01:05:36.876229" elapsed="0.000516"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:05:36.876906" elapsed="0.000336"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T01:05:36.878087" level="INFO">Logging into '10.30.171.110:22' as 'jenkins'.</msg>
<msg time="2026-04-08T01:05:37.201774" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 01:05:03 UTC 2026

  System load:  0.5                Processes:             125
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 7%                 IPv4 address for ens3: 10.30.171.110
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 01:05:34 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T01:05:36.877776" elapsed="0.324190"/>
</kw>
<msg time="2026-04-08T01:05:37.202059" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:05:36.877416" elapsed="0.324758"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T01:05:36.875649" elapsed="0.326659"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T01:05:37.202954" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-08T01:05:37.225769" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-08T01:05:37.226131" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-08T01:05:37.226283" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T01:05:37.202648" elapsed="0.023693"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T01:05:37.226919" elapsed="0.000724"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:05:37.229112" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:05:37.228250" elapsed="0.001038"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T01:05:37.229888" elapsed="0.000038"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:05:37.229572" elapsed="0.000447"/>
</branch>
<status status="PASS" start="2026-04-08T01:05:37.229510" elapsed="0.000562"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T01:05:37.230603" elapsed="0.000071"/>
</return>
<status status="PASS" start="2026-04-08T01:05:37.230311" elapsed="0.000455"/>
</branch>
<status status="PASS" start="2026-04-08T01:05:37.230270" elapsed="0.000549"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T01:05:37.230955" elapsed="0.000037"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:05:37.238109" elapsed="0.000182"/>
</kw>
<msg time="2026-04-08T01:05:37.238338" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:05:37.237490" elapsed="0.000922"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:05:37.238579" elapsed="0.000022"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:05:37.238744" elapsed="0.000021"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:05:37.232147" elapsed="0.006683"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T01:05:36.870795" elapsed="0.368228"/>
</kw>
<msg time="2026-04-08T01:05:37.239096" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:05:36.868769" elapsed="0.370413"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-08T01:05:36.867788" elapsed="0.371793"/>
</kw>
<msg time="2026-04-08T01:05:37.239629" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:05:36.867024" elapsed="0.372655"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:05:37.243241" elapsed="0.000244"/>
</kw>
<msg time="2026-04-08T01:05:37.243588" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:05:37.242469" elapsed="0.001187"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:05:37.243818" elapsed="0.000024"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:05:37.243985" elapsed="0.000021"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:05:37.239976" elapsed="0.004090"/>
</kw>
<msg time="2026-04-08T01:05:37.244176" level="INFO">${output} = 1</msg>
<var>${output}</var>
<arg>Utils.Run_Command_On_Controller</arg>
<arg>${member_ip}</arg>
<arg>${command}</arg>
<doc>Store current connection index, run keyword returning its result, restore connection in teardown.
Note that in order to avoid "got positional argument after named arguments", it is safer to use positional (not named) arguments on call.</doc>
<status status="PASS" start="2026-04-08T01:05:36.865783" elapsed="0.378422"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:05:37.244651" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:05:37.244396" elapsed="0.000301"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-08T01:05:37.244740" elapsed="0.000034"/>
</return>
<msg time="2026-04-08T01:05:37.244911" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-08T01:05:36.864462" elapsed="0.380510"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-08T01:05:37.245021" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T01:05:37.245198" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-08T01:05:36.862308" elapsed="0.382918"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-08T01:05:37.245808" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-08T01:05:37.245389" elapsed="0.000498">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-08T01:05:36.861267" elapsed="0.384805">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:05:39.249807" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:05:39.248982" elapsed="0.000898"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:05:39.251446" level="INFO">${member_ip} = 10.30.171.110</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:05:39.251040" elapsed="0.000443"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:05:39.252835" level="INFO">index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-08T01:05:39.252977" level="INFO">${current_connection} = index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T01:05:39.252591" elapsed="0.000424"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Controller" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:05:39.258956" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:05:39.258525" elapsed="0.000512"/>
</branch>
<status status="PASS" start="2026-04-08T01:05:39.258490" elapsed="0.000582"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:05:39.259546" level="INFO">index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-08T01:05:39.259686" level="INFO">${current_ssh_connection} = index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T01:05:39.259336" elapsed="0.000387"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:05:39.260560" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.110" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:05:39.259992" elapsed="0.000634"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:05:39.261432" level="INFO">${conn_id} = 571</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T01:05:39.260878" elapsed="0.000591"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T01:05:39.262789" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T01:05:39.262865" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T01:05:39.262424" elapsed="0.000465"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:05:39.263051" elapsed="0.000397"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T01:05:39.264303" level="INFO">Logging into '10.30.171.110:22' as 'jenkins'.</msg>
<msg time="2026-04-08T01:05:39.574232" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 01:05:03 UTC 2026

  System load:  0.5                Processes:             125
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 7%                 IPv4 address for ens3: 10.30.171.110
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 01:05:37 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T01:05:39.263973" elapsed="0.310435"/>
</kw>
<msg time="2026-04-08T01:05:39.574499" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:05:39.263618" elapsed="0.310980"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T01:05:39.261804" elapsed="0.312915"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T01:05:39.575346" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-08T01:05:39.597841" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-08T01:05:39.598143" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-08T01:05:39.598297" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T01:05:39.575036" elapsed="0.023475"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T01:05:39.599033" elapsed="0.000605"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:05:39.600896" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:05:39.600152" elapsed="0.000845"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T01:05:39.601593" elapsed="0.000038"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:05:39.601268" elapsed="0.000442"/>
</branch>
<status status="PASS" start="2026-04-08T01:05:39.601206" elapsed="0.000559"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T01:05:39.602264" elapsed="0.000073"/>
</return>
<status status="PASS" start="2026-04-08T01:05:39.601968" elapsed="0.000448"/>
</branch>
<status status="PASS" start="2026-04-08T01:05:39.601925" elapsed="0.000548"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T01:05:39.602599" elapsed="0.000038"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:05:39.608843" elapsed="0.000162"/>
</kw>
<msg time="2026-04-08T01:05:39.609051" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:05:39.608130" elapsed="0.000992"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:05:39.609303" elapsed="0.000022"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:05:39.609468" elapsed="0.000020"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:05:39.603643" elapsed="0.005914"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T01:05:39.256997" elapsed="0.352745"/>
</kw>
<msg time="2026-04-08T01:05:39.609813" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:05:39.254978" elapsed="0.354902"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-08T01:05:39.253987" elapsed="0.356291"/>
</kw>
<msg time="2026-04-08T01:05:39.610322" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:05:39.253265" elapsed="0.357106"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:05:39.613877" elapsed="0.000235"/>
</kw>
<msg time="2026-04-08T01:05:39.614228" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:05:39.613314" elapsed="0.000981"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:05:39.614458" elapsed="0.000022"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:05:39.614627" elapsed="0.000021"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:05:39.610846" elapsed="0.003863"/>
</kw>
<msg time="2026-04-08T01:05:39.614802" level="INFO">${output} = 1</msg>
<var>${output}</var>
<arg>Utils.Run_Command_On_Controller</arg>
<arg>${member_ip}</arg>
<arg>${command}</arg>
<doc>Store current connection index, run keyword returning its result, restore connection in teardown.
Note that in order to avoid "got positional argument after named arguments", it is safer to use positional (not named) arguments on call.</doc>
<status status="PASS" start="2026-04-08T01:05:39.251959" elapsed="0.362867"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:05:39.615285" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:05:39.615018" elapsed="0.000313"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-08T01:05:39.615373" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T01:05:39.615530" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-08T01:05:39.250455" elapsed="0.365100"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-08T01:05:39.615602" elapsed="0.000025"/>
</return>
<msg time="2026-04-08T01:05:39.615747" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-08T01:05:39.248079" elapsed="0.367693"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-08T01:05:39.616342" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-08T01:05:39.615928" elapsed="0.000491">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-08T01:05:39.246920" elapsed="0.369613">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:05:41.620443" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:05:41.619614" elapsed="0.000900"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:05:41.622744" level="INFO">${member_ip} = 10.30.171.110</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:05:41.622080" elapsed="0.000726"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:05:41.624925" level="INFO">index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-08T01:05:41.625223" level="INFO">${current_connection} = index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T01:05:41.624494" elapsed="0.000794"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Controller" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:05:41.631753" elapsed="0.000032"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:05:41.631313" elapsed="0.000525"/>
</branch>
<status status="PASS" start="2026-04-08T01:05:41.631275" elapsed="0.000600"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:05:41.632377" level="INFO">index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-08T01:05:41.632523" level="INFO">${current_ssh_connection} = index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T01:05:41.632117" elapsed="0.000445"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:05:41.633460" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.110" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:05:41.632828" elapsed="0.000702"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:05:41.634380" level="INFO">${conn_id} = 572</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T01:05:41.633792" elapsed="0.000626"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T01:05:41.635775" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T01:05:41.635894" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T01:05:41.635375" elapsed="0.000553"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:05:41.636244" elapsed="0.000527"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T01:05:41.637979" level="INFO">Logging into '10.30.171.110:22' as 'jenkins'.</msg>
<msg time="2026-04-08T01:05:41.953368" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 01:05:03 UTC 2026

  System load:  0.5                Processes:             125
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 7%                 IPv4 address for ens3: 10.30.171.110
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 01:05:39 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T01:05:41.637610" elapsed="0.315919"/>
</kw>
<msg time="2026-04-08T01:05:41.953619" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:05:41.637037" elapsed="0.316679"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T01:05:41.634764" elapsed="0.319071"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T01:05:41.954458" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-08T01:05:41.977219" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-08T01:05:41.977486" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-08T01:05:41.977591" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T01:05:41.954179" elapsed="0.023466"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T01:05:41.978071" elapsed="0.000534"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:05:41.979865" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:05:41.979224" elapsed="0.000736"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T01:05:41.980514" elapsed="0.000057"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:05:41.980214" elapsed="0.000435"/>
</branch>
<status status="PASS" start="2026-04-08T01:05:41.980127" elapsed="0.000572"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T01:05:41.981109" elapsed="0.000091"/>
</return>
<status status="PASS" start="2026-04-08T01:05:41.980867" elapsed="0.000411"/>
</branch>
<status status="PASS" start="2026-04-08T01:05:41.980829" elapsed="0.000502"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T01:05:41.981449" elapsed="0.000035"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:05:41.988042" elapsed="0.000240"/>
</kw>
<msg time="2026-04-08T01:05:41.988343" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:05:41.987273" elapsed="0.001162"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:05:41.988673" elapsed="0.000030"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:05:41.988901" elapsed="0.000027"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:05:41.982410" elapsed="0.006602"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T01:05:41.629736" elapsed="0.359556"/>
</kw>
<msg time="2026-04-08T01:05:41.989390" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:05:41.627431" elapsed="0.362050"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-08T01:05:41.626417" elapsed="0.363606"/>
</kw>
<msg time="2026-04-08T01:05:41.990085" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:05:41.625646" elapsed="0.364505"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:05:41.994799" elapsed="0.000304"/>
</kw>
<msg time="2026-04-08T01:05:41.995332" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:05:41.994010" elapsed="0.001415"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:05:41.995656" elapsed="0.000031"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:05:41.995887" elapsed="0.000028"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:05:41.990600" elapsed="0.005399"/>
</kw>
<msg time="2026-04-08T01:05:41.996124" level="INFO">${output} = 1</msg>
<var>${output}</var>
<arg>Utils.Run_Command_On_Controller</arg>
<arg>${member_ip}</arg>
<arg>${command}</arg>
<doc>Store current connection index, run keyword returning its result, restore connection in teardown.
Note that in order to avoid "got positional argument after named arguments", it is safer to use positional (not named) arguments on call.</doc>
<status status="PASS" start="2026-04-08T01:05:41.623360" elapsed="0.372819"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:05:41.996818" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:05:41.996435" elapsed="0.000445"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-08T01:05:41.996937" elapsed="0.000039"/>
</return>
<msg time="2026-04-08T01:05:41.997150" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-08T01:05:41.621033" elapsed="0.376175"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-08T01:05:41.997275" elapsed="0.000037"/>
</return>
<msg time="2026-04-08T01:05:41.997478" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-08T01:05:41.618719" elapsed="0.378793"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-08T01:05:41.998255" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-08T01:05:41.997692" elapsed="0.000650">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-08T01:05:41.617552" elapsed="0.380908">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:05:44.002505" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:05:44.001515" elapsed="0.001298"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:05:44.004623" level="INFO">${member_ip} = 10.30.171.110</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:05:44.004194" elapsed="0.000468"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:05:44.005922" level="INFO">index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-08T01:05:44.006105" level="INFO">${current_connection} = index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T01:05:44.005632" elapsed="0.000515"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Controller" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:05:44.012914" elapsed="0.000042"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:05:44.012444" elapsed="0.000646"/>
</branch>
<status status="PASS" start="2026-04-08T01:05:44.012407" elapsed="0.000739"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:05:44.013744" level="INFO">index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-08T01:05:44.013852" level="INFO">${current_ssh_connection} = index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T01:05:44.013530" elapsed="0.000349"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:05:44.014521" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.110" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:05:44.014058" elapsed="0.000513"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:05:44.015200" level="INFO">${conn_id} = 573</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T01:05:44.014763" elapsed="0.000473"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T01:05:44.016256" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T01:05:44.016340" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T01:05:44.015917" elapsed="0.000447"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:05:44.016530" elapsed="0.000329"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T01:05:44.017775" level="INFO">Logging into '10.30.171.110:22' as 'jenkins'.</msg>
<msg time="2026-04-08T01:05:44.327215" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 01:05:03 UTC 2026

  System load:  0.5                Processes:             125
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 7%                 IPv4 address for ens3: 10.30.171.110
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 01:05:41 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T01:05:44.017455" elapsed="0.309927"/>
</kw>
<msg time="2026-04-08T01:05:44.327466" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:05:44.017030" elapsed="0.310528"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T01:05:44.015505" elapsed="0.312163"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T01:05:44.328237" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-08T01:05:44.350616" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-08T01:05:44.350868" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-08T01:05:44.350965" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T01:05:44.327963" elapsed="0.023053"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T01:05:44.351517" elapsed="0.000460"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:05:44.353144" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:05:44.352500" elapsed="0.000773"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T01:05:44.353955" elapsed="0.000037"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:05:44.353620" elapsed="0.000444"/>
</branch>
<status status="PASS" start="2026-04-08T01:05:44.353559" elapsed="0.000557"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T01:05:44.354568" elapsed="0.000062"/>
</return>
<status status="PASS" start="2026-04-08T01:05:44.354320" elapsed="0.000384"/>
</branch>
<status status="PASS" start="2026-04-08T01:05:44.354280" elapsed="0.000478"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T01:05:44.354874" elapsed="0.000036"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:05:44.361435" elapsed="0.000219"/>
</kw>
<msg time="2026-04-08T01:05:44.361717" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:05:44.360637" elapsed="0.001174"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:05:44.362037" elapsed="0.000031"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:05:44.362306" elapsed="0.000029"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:05:44.356908" elapsed="0.005514"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T01:05:44.010651" elapsed="0.352028"/>
</kw>
<msg time="2026-04-08T01:05:44.362775" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:05:44.008385" elapsed="0.354483"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-08T01:05:44.007223" elapsed="0.356193"/>
</kw>
<msg time="2026-04-08T01:05:44.363477" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:05:44.006408" elapsed="0.357135"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:05:44.367995" elapsed="0.000249"/>
</kw>
<msg time="2026-04-08T01:05:44.368344" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:05:44.367346" elapsed="0.001063"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:05:44.368572" elapsed="0.000022"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:05:44.368735" elapsed="0.000020"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:05:44.363950" elapsed="0.004865"/>
</kw>
<msg time="2026-04-08T01:05:44.368908" level="INFO">${output} = 1</msg>
<var>${output}</var>
<arg>Utils.Run_Command_On_Controller</arg>
<arg>${member_ip}</arg>
<arg>${command}</arg>
<doc>Store current connection index, run keyword returning its result, restore connection in teardown.
Note that in order to avoid "got positional argument after named arguments", it is safer to use positional (not named) arguments on call.</doc>
<status status="PASS" start="2026-04-08T01:05:44.005001" elapsed="0.363932"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:05:44.369396" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:05:44.369127" elapsed="0.000316"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-08T01:05:44.369485" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T01:05:44.369634" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-08T01:05:44.003393" elapsed="0.366266"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-08T01:05:44.369706" elapsed="0.000025"/>
</return>
<msg time="2026-04-08T01:05:44.369849" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-08T01:05:44.000610" elapsed="0.369263"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-08T01:05:44.370481" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-08T01:05:44.370030" elapsed="0.000526">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-08T01:05:43.999403" elapsed="0.371267">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:05:46.374327" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:05:46.373445" elapsed="0.000952"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:05:46.376810" level="INFO">${member_ip} = 10.30.171.110</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:05:46.376120" elapsed="0.000754"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:05:46.378825" level="INFO">index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-08T01:05:46.378967" level="INFO">${current_connection} = index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T01:05:46.378490" elapsed="0.000514"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Controller" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:05:46.385153" elapsed="0.000056"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:05:46.384712" elapsed="0.000549"/>
</branch>
<status status="PASS" start="2026-04-08T01:05:46.384676" elapsed="0.000622"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:05:46.385745" level="INFO">index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-08T01:05:46.385885" level="INFO">${current_ssh_connection} = index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T01:05:46.385537" elapsed="0.000386"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:05:46.386749" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.110" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:05:46.386197" elapsed="0.000618"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:05:46.387621" level="INFO">${conn_id} = 574</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T01:05:46.387065" elapsed="0.000594"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T01:05:46.388957" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T01:05:46.389063" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T01:05:46.388571" elapsed="0.000525"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:05:46.389374" elapsed="0.000452"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T01:05:46.391039" level="INFO">Logging into '10.30.171.110:22' as 'jenkins'.</msg>
<msg time="2026-04-08T01:05:46.721074" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 01:05:03 UTC 2026

  System load:  0.5                Processes:             125
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 7%                 IPv4 address for ens3: 10.30.171.110
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 01:05:44 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T01:05:46.390618" elapsed="0.330643"/>
</kw>
<msg time="2026-04-08T01:05:46.721351" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:05:46.390064" elapsed="0.331382"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T01:05:46.387991" elapsed="0.333574"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T01:05:46.722181" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-08T01:05:46.744400" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-08T01:05:46.744558" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-08T01:05:46.744619" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T01:05:46.721868" elapsed="0.022782"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T01:05:46.744916" elapsed="0.000351"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:05:46.746024" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:05:46.745584" elapsed="0.000500"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T01:05:46.746465" elapsed="0.000022"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:05:46.746259" elapsed="0.000274"/>
</branch>
<status status="PASS" start="2026-04-08T01:05:46.746220" elapsed="0.000345"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T01:05:46.746904" elapsed="0.000038"/>
</return>
<status status="PASS" start="2026-04-08T01:05:46.746750" elapsed="0.000239"/>
</branch>
<status status="PASS" start="2026-04-08T01:05:46.746724" elapsed="0.000299"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T01:05:46.747095" elapsed="0.000021"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:05:46.752288" elapsed="0.000218"/>
</kw>
<msg time="2026-04-08T01:05:46.752567" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:05:46.751372" elapsed="0.001285"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:05:46.752879" elapsed="0.000030"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:05:46.753106" elapsed="0.000028"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:05:46.747710" elapsed="0.005531"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T01:05:46.383212" elapsed="0.370345"/>
</kw>
<msg time="2026-04-08T01:05:46.753656" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:05:46.380952" elapsed="0.372797"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-08T01:05:46.379982" elapsed="0.374458"/>
</kw>
<msg time="2026-04-08T01:05:46.754502" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:05:46.379249" elapsed="0.375321"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:05:46.757998" elapsed="0.000249"/>
</kw>
<msg time="2026-04-08T01:05:46.758348" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:05:46.757389" elapsed="0.001024"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:05:46.758575" elapsed="0.000022"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:05:46.758739" elapsed="0.000096"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:05:46.754986" elapsed="0.003925"/>
</kw>
<msg time="2026-04-08T01:05:46.759004" level="INFO">${output} = 1</msg>
<var>${output}</var>
<arg>Utils.Run_Command_On_Controller</arg>
<arg>${member_ip}</arg>
<arg>${command}</arg>
<doc>Store current connection index, run keyword returning its result, restore connection in teardown.
Note that in order to avoid "got positional argument after named arguments", it is safer to use positional (not named) arguments on call.</doc>
<status status="PASS" start="2026-04-08T01:05:46.377433" elapsed="0.381596"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:05:46.759482" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:05:46.759230" elapsed="0.000297"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-08T01:05:46.759569" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T01:05:46.759725" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-08T01:05:46.374888" elapsed="0.384863"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-08T01:05:46.759797" elapsed="0.000025"/>
</return>
<msg time="2026-04-08T01:05:46.759940" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-08T01:05:46.372599" elapsed="0.387364"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-08T01:05:46.760532" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-08T01:05:46.760120" elapsed="0.000489">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-08T01:05:46.371548" elapsed="0.389174">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:05:48.764212" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:05:48.763449" elapsed="0.000833"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:05:48.766366" level="INFO">${member_ip} = 10.30.171.110</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:05:48.765734" elapsed="0.000691"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:05:48.768378" level="INFO">index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-08T01:05:48.768609" level="INFO">${current_connection} = index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T01:05:48.767991" elapsed="0.000679"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Controller" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:05:48.779591" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:05:48.779268" elapsed="0.000381"/>
</branch>
<status status="PASS" start="2026-04-08T01:05:48.779240" elapsed="0.000433"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:05:48.780003" level="INFO">index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-08T01:05:48.780105" level="INFO">${current_ssh_connection} = index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T01:05:48.779849" elapsed="0.000282"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:05:48.780713" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.110" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:05:48.780322" elapsed="0.000438"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:05:48.781393" level="INFO">${conn_id} = 575</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T01:05:48.780973" elapsed="0.000446"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T01:05:48.782358" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T01:05:48.782434" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T01:05:48.782059" elapsed="0.000398"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:05:48.782616" elapsed="0.000322"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T01:05:48.783809" level="INFO">Logging into '10.30.171.110:22' as 'jenkins'.</msg>
<msg time="2026-04-08T01:05:49.106694" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 01:05:03 UTC 2026

  System load:  0.5                Processes:             125
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 7%                 IPv4 address for ens3: 10.30.171.110
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 01:05:46 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T01:05:48.783496" elapsed="0.323358"/>
</kw>
<msg time="2026-04-08T01:05:49.106938" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:05:48.783107" elapsed="0.323929"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T01:05:48.781659" elapsed="0.325493"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T01:05:49.107755" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-08T01:05:49.129879" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-08T01:05:49.130147" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-08T01:05:49.130288" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T01:05:49.107486" elapsed="0.022855"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T01:05:49.130805" elapsed="0.000561"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:05:49.132866" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:05:49.131869" elapsed="0.001175"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T01:05:49.133702" elapsed="0.000040"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:05:49.133367" elapsed="0.000457"/>
</branch>
<status status="PASS" start="2026-04-08T01:05:49.133301" elapsed="0.000577"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T01:05:49.134513" elapsed="0.000075"/>
</return>
<status status="PASS" start="2026-04-08T01:05:49.134111" elapsed="0.000574"/>
</branch>
<status status="PASS" start="2026-04-08T01:05:49.134052" elapsed="0.000809"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T01:05:49.135004" elapsed="0.000049"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:05:49.142943" elapsed="0.000194"/>
</kw>
<msg time="2026-04-08T01:05:49.143212" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:05:49.142122" elapsed="0.001171"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:05:49.143459" elapsed="0.000023"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:05:49.143629" elapsed="0.000022"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:05:49.136370" elapsed="0.007345"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T01:05:48.778143" elapsed="0.365762"/>
</kw>
<msg time="2026-04-08T01:05:49.143976" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:05:48.771861" elapsed="0.372183"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-08T01:05:48.770303" elapsed="0.374242"/>
</kw>
<msg time="2026-04-08T01:05:49.144592" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:05:48.769045" elapsed="0.375616"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:05:49.148055" elapsed="0.000237"/>
</kw>
<msg time="2026-04-08T01:05:49.148395" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:05:49.147414" elapsed="0.001047"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:05:49.148624" elapsed="0.000050"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:05:49.148820" elapsed="0.000021"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:05:49.144968" elapsed="0.003934"/>
</kw>
<msg time="2026-04-08T01:05:49.149076" level="INFO">${output} = 1</msg>
<var>${output}</var>
<arg>Utils.Run_Command_On_Controller</arg>
<arg>${member_ip}</arg>
<arg>${command}</arg>
<doc>Store current connection index, run keyword returning its result, restore connection in teardown.
Note that in order to avoid "got positional argument after named arguments", it is safer to use positional (not named) arguments on call.</doc>
<status status="PASS" start="2026-04-08T01:05:48.767049" elapsed="0.382059"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:05:49.149588" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:05:49.149335" elapsed="0.000299"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-08T01:05:49.149676" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T01:05:49.149828" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-08T01:05:48.764730" elapsed="0.385124"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-08T01:05:49.149901" elapsed="0.000026"/>
</return>
<msg time="2026-04-08T01:05:49.150045" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-08T01:05:48.762613" elapsed="0.387457"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-08T01:05:49.150635" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-08T01:05:49.150245" elapsed="0.000462">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-08T01:05:48.761571" elapsed="0.389246">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:05:51.154451" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:05:51.153684" elapsed="0.000836"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:05:51.156343" level="INFO">${member_ip} = 10.30.171.110</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:05:51.155943" elapsed="0.000437"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:05:51.157647" level="INFO">index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-08T01:05:51.157903" level="INFO">${current_connection} = index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T01:05:51.157404" elapsed="0.000538"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Controller" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:05:51.163878" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:05:51.163436" elapsed="0.000523"/>
</branch>
<status status="PASS" start="2026-04-08T01:05:51.163401" elapsed="0.000593"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:05:51.164473" level="INFO">index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-08T01:05:51.164614" level="INFO">${current_ssh_connection} = index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T01:05:51.164262" elapsed="0.000390"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:05:51.165457" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.110" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:05:51.164893" elapsed="0.000630"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:05:51.166395" level="INFO">${conn_id} = 576</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T01:05:51.165773" elapsed="0.000660"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T01:05:51.167778" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T01:05:51.167909" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T01:05:51.167353" elapsed="0.000596"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:05:51.168142" elapsed="0.000384"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T01:05:51.169386" level="INFO">Logging into '10.30.171.110:22' as 'jenkins'.</msg>
<msg time="2026-04-08T01:05:51.490880" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 01:05:03 UTC 2026

  System load:  0.5                Processes:             125
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 7%                 IPv4 address for ens3: 10.30.171.110
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 01:05:49 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T01:05:51.169055" elapsed="0.321978"/>
</kw>
<msg time="2026-04-08T01:05:51.491119" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:05:51.168699" elapsed="0.322531"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T01:05:51.166773" elapsed="0.324579"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T01:05:51.491923" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-08T01:05:51.513718" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-08T01:05:51.513965" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-08T01:05:51.514061" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T01:05:51.491659" elapsed="0.022452"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T01:05:51.514571" elapsed="0.000443"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:05:51.516207" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:05:51.515546" elapsed="0.000759"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T01:05:51.516817" elapsed="0.000034"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:05:51.516525" elapsed="0.000398"/>
</branch>
<status status="PASS" start="2026-04-08T01:05:51.516471" elapsed="0.000503"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T01:05:51.517407" elapsed="0.000057"/>
</return>
<status status="PASS" start="2026-04-08T01:05:51.517136" elapsed="0.000400"/>
</branch>
<status status="PASS" start="2026-04-08T01:05:51.517099" elapsed="0.000489"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T01:05:51.517700" elapsed="0.000034"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:05:51.525016" elapsed="0.000240"/>
</kw>
<msg time="2026-04-08T01:05:51.525301" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:05:51.524321" elapsed="0.001049"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:05:51.525534" elapsed="0.000022"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:05:51.525722" elapsed="0.000022"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:05:51.518668" elapsed="0.007139"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T01:05:51.161929" elapsed="0.364144"/>
</kw>
<msg time="2026-04-08T01:05:51.526176" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:05:51.159912" elapsed="0.366335"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-08T01:05:51.158916" elapsed="0.367700"/>
</kw>
<msg time="2026-04-08T01:05:51.526673" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:05:51.158187" elapsed="0.368536"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:05:51.530072" elapsed="0.000236"/>
</kw>
<msg time="2026-04-08T01:05:51.530407" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:05:51.529476" elapsed="0.000997"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:05:51.530635" elapsed="0.000022"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:05:51.530798" elapsed="0.000021"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:05:51.527031" elapsed="0.003847"/>
</kw>
<msg time="2026-04-08T01:05:51.530975" level="INFO">${output} = 1</msg>
<var>${output}</var>
<arg>Utils.Run_Command_On_Controller</arg>
<arg>${member_ip}</arg>
<arg>${command}</arg>
<doc>Store current connection index, run keyword returning its result, restore connection in teardown.
Note that in order to avoid "got positional argument after named arguments", it is safer to use positional (not named) arguments on call.</doc>
<status status="PASS" start="2026-04-08T01:05:51.156684" elapsed="0.374316"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:05:51.531544" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:05:51.531274" elapsed="0.000316"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-08T01:05:51.531632" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T01:05:51.531784" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-08T01:05:51.154978" elapsed="0.376831"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-08T01:05:51.531874" elapsed="0.000026"/>
</return>
<msg time="2026-04-08T01:05:51.532113" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-08T01:05:51.152845" elapsed="0.379296"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-08T01:05:51.532729" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-08T01:05:51.532319" elapsed="0.000484">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-08T01:05:51.151774" elapsed="0.381139">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:05:53.536533" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:05:53.535760" elapsed="0.000842"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:05:53.538757" level="INFO">${member_ip} = 10.30.171.110</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:05:53.538076" elapsed="0.000742"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:05:53.540788" level="INFO">index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-08T01:05:53.541014" level="INFO">${current_connection} = index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T01:05:53.540418" elapsed="0.000854"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Controller" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:05:53.549474" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:05:53.549018" elapsed="0.000537"/>
</branch>
<status status="PASS" start="2026-04-08T01:05:53.548983" elapsed="0.000608"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:05:53.550042" level="INFO">index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-08T01:05:53.550202" level="INFO">${current_ssh_connection} = index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T01:05:53.549831" elapsed="0.000410"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:05:53.551096" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.110" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:05:53.550518" elapsed="0.000630"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:05:53.551740" level="INFO">${conn_id} = 577</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T01:05:53.551347" elapsed="0.000420"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T01:05:53.552759" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T01:05:53.552835" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T01:05:53.552475" elapsed="0.000385"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:05:53.553018" elapsed="0.000340"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T01:05:53.554227" level="INFO">Logging into '10.30.171.110:22' as 'jenkins'.</msg>
<msg time="2026-04-08T01:05:53.863843" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 01:05:03 UTC 2026

  System load:  0.5                Processes:             125
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 7%                 IPv4 address for ens3: 10.30.171.110
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 01:05:51 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T01:05:53.553890" elapsed="0.310106"/>
</kw>
<msg time="2026-04-08T01:05:53.864083" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:05:53.553531" elapsed="0.310666"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T01:05:53.552006" elapsed="0.312311"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T01:05:53.864914" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-08T01:05:53.887135" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-08T01:05:53.887415" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-08T01:05:53.887514" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T01:05:53.864635" elapsed="0.022930"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T01:05:53.887979" elapsed="0.000506"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:05:53.889650" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:05:53.888986" elapsed="0.000758"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T01:05:53.890311" elapsed="0.000037"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:05:53.889960" elapsed="0.000460"/>
</branch>
<status status="PASS" start="2026-04-08T01:05:53.889907" elapsed="0.000563"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T01:05:53.890886" elapsed="0.000060"/>
</return>
<status status="PASS" start="2026-04-08T01:05:53.890639" elapsed="0.000379"/>
</branch>
<status status="PASS" start="2026-04-08T01:05:53.890601" elapsed="0.000470"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T01:05:53.891221" elapsed="0.000037"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:05:53.899338" elapsed="0.000157"/>
</kw>
<msg time="2026-04-08T01:05:53.899541" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:05:53.898007" elapsed="0.001696"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:05:53.899869" elapsed="0.000022"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:05:53.900057" elapsed="0.000022"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:05:53.892205" elapsed="0.007936"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T01:05:53.547439" elapsed="0.352903"/>
</kw>
<msg time="2026-04-08T01:05:53.900412" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:05:53.544448" elapsed="0.356030"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-08T01:05:53.542851" elapsed="0.358095"/>
</kw>
<msg time="2026-04-08T01:05:53.900992" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:05:53.541648" elapsed="0.359394"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:05:53.904422" elapsed="0.000219"/>
</kw>
<msg time="2026-04-08T01:05:53.904740" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:05:53.903779" elapsed="0.001044"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:05:53.904986" elapsed="0.000023"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:05:53.905246" elapsed="0.000027"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:05:53.901373" elapsed="0.003972"/>
</kw>
<msg time="2026-04-08T01:05:53.905441" level="INFO">${output} = 1</msg>
<var>${output}</var>
<arg>Utils.Run_Command_On_Controller</arg>
<arg>${member_ip}</arg>
<arg>${command}</arg>
<doc>Store current connection index, run keyword returning its result, restore connection in teardown.
Note that in order to avoid "got positional argument after named arguments", it is safer to use positional (not named) arguments on call.</doc>
<status status="PASS" start="2026-04-08T01:05:53.539464" elapsed="0.366002"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:05:53.905907" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:05:53.905654" elapsed="0.000298"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-08T01:05:53.905994" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T01:05:53.906226" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-08T01:05:53.537052" elapsed="0.369203"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-08T01:05:53.906303" elapsed="0.000027"/>
</return>
<msg time="2026-04-08T01:05:53.906450" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-08T01:05:53.534906" elapsed="0.371568"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-08T01:05:53.907027" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-08T01:05:53.906632" elapsed="0.000471">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-08T01:05:53.533764" elapsed="0.373475">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:05:55.910764" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:05:55.909992" elapsed="0.000842"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:05:55.912919" level="INFO">${member_ip} = 10.30.171.110</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:05:55.912295" elapsed="0.000697"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:05:55.914564" level="INFO">index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-08T01:05:55.914705" level="INFO">${current_connection} = index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T01:05:55.914321" elapsed="0.000422"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Controller" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:05:55.920883" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:05:55.920454" elapsed="0.000508"/>
</branch>
<status status="PASS" start="2026-04-08T01:05:55.920420" elapsed="0.000577"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:05:55.921504" level="INFO">index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-08T01:05:55.921645" level="INFO">${current_ssh_connection} = index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T01:05:55.921293" elapsed="0.000390"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:05:55.922490" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.110" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:05:55.921926" elapsed="0.000630"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:05:55.923355" level="INFO">${conn_id} = 578</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T01:05:55.922806" elapsed="0.000585"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T01:05:55.924692" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T01:05:55.924798" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T01:05:55.924303" elapsed="0.000531"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:05:55.925094" elapsed="0.000558"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T01:05:55.926775" level="INFO">Logging into '10.30.171.110:22' as 'jenkins'.</msg>
<msg time="2026-04-08T01:05:56.234287" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 01:05:03 UTC 2026

  System load:  0.5                Processes:             125
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 7%                 IPv4 address for ens3: 10.30.171.110
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 01:05:53 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T01:05:55.926461" elapsed="0.307995"/>
</kw>
<msg time="2026-04-08T01:05:56.234544" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:05:55.925913" elapsed="0.308728"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T01:05:55.923726" elapsed="0.311051"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T01:05:56.235381" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-08T01:05:56.257773" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-08T01:05:56.258052" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-08T01:05:56.258149" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T01:05:56.235090" elapsed="0.023157"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T01:05:56.258702" elapsed="0.000568"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:05:56.260479" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:05:56.259759" elapsed="0.000816"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T01:05:56.261256" elapsed="0.000039"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:05:56.260806" elapsed="0.000564"/>
</branch>
<status status="PASS" start="2026-04-08T01:05:56.260749" elapsed="0.000674"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T01:05:56.261844" elapsed="0.000062"/>
</return>
<status status="PASS" start="2026-04-08T01:05:56.261596" elapsed="0.000402"/>
</branch>
<status status="PASS" start="2026-04-08T01:05:56.261557" elapsed="0.000502"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T01:05:56.262220" elapsed="0.000040"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:05:56.268663" elapsed="0.000223"/>
</kw>
<msg time="2026-04-08T01:05:56.268949" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:05:56.267794" elapsed="0.001250"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:05:56.269323" elapsed="0.000102"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:05:56.269638" elapsed="0.000030"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:05:56.263258" elapsed="0.006497"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T01:05:55.918955" elapsed="0.351060"/>
</kw>
<msg time="2026-04-08T01:05:56.270121" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:05:55.916683" elapsed="0.353565"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-08T01:05:55.915708" elapsed="0.355051"/>
</kw>
<msg time="2026-04-08T01:05:56.270823" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:05:55.914966" elapsed="0.355924"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:05:56.275682" elapsed="0.000311"/>
</kw>
<msg time="2026-04-08T01:05:56.276135" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:05:56.274852" elapsed="0.001508"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:05:56.276598" elapsed="0.000032"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:05:56.276828" elapsed="0.000030"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:05:56.271369" elapsed="0.005574"/>
</kw>
<msg time="2026-04-08T01:05:56.277061" level="INFO">${output} = 1</msg>
<var>${output}</var>
<arg>Utils.Run_Command_On_Controller</arg>
<arg>${member_ip}</arg>
<arg>${command}</arg>
<doc>Store current connection index, run keyword returning its result, restore connection in teardown.
Note that in order to avoid "got positional argument after named arguments", it is safer to use positional (not named) arguments on call.</doc>
<status status="PASS" start="2026-04-08T01:05:55.913555" elapsed="0.363531"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:05:56.277587" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:05:56.277306" elapsed="0.000326"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-08T01:05:56.277674" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T01:05:56.277828" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-08T01:05:55.911324" elapsed="0.366528"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-08T01:05:56.277899" elapsed="0.000026"/>
</return>
<msg time="2026-04-08T01:05:56.278044" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-08T01:05:55.909129" elapsed="0.368940"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-08T01:05:56.278663" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-08T01:05:56.278258" elapsed="0.000480">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-08T01:05:55.908028" elapsed="0.370826">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:05:58.282396" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:05:58.281605" elapsed="0.000863"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:05:58.284520" level="INFO">${member_ip} = 10.30.171.110</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:05:58.283882" elapsed="0.000701"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:05:58.286486" level="INFO">index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-08T01:05:58.286720" level="INFO">${current_connection} = index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T01:05:58.286053" elapsed="0.000729"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Controller" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:05:58.293496" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:05:58.293152" elapsed="0.000465"/>
</branch>
<status status="PASS" start="2026-04-08T01:05:58.293125" elapsed="0.000520"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:05:58.293975" level="INFO">index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-08T01:05:58.294101" level="INFO">${current_ssh_connection} = index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T01:05:58.293822" elapsed="0.000306"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:05:58.294731" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.110" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:05:58.294337" elapsed="0.000441"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:05:58.295362" level="INFO">${conn_id} = 579</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T01:05:58.294958" elapsed="0.000431"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T01:05:58.296333" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T01:05:58.296410" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T01:05:58.296031" elapsed="0.000403"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:05:58.296595" elapsed="0.000323"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T01:05:58.297780" level="INFO">Logging into '10.30.171.110:22' as 'jenkins'.</msg>
<msg time="2026-04-08T01:05:58.599176" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 01:05:03 UTC 2026

  System load:  0.5                Processes:             125
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 7%                 IPv4 address for ens3: 10.30.171.110
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 01:05:56 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T01:05:58.297465" elapsed="0.301893"/>
</kw>
<msg time="2026-04-08T01:05:58.599459" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:05:58.297089" elapsed="0.302472"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T01:05:58.295630" elapsed="0.304057"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T01:05:58.600315" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-08T01:05:58.622753" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-08T01:05:58.623014" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-08T01:05:58.623112" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T01:05:58.600008" elapsed="0.023196"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T01:05:58.623677" elapsed="0.000475"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:05:58.625396" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:05:58.624689" elapsed="0.000804"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T01:05:58.626077" elapsed="0.000039"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:05:58.625722" elapsed="0.000509"/>
</branch>
<status status="PASS" start="2026-04-08T01:05:58.625665" elapsed="0.000621"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T01:05:58.626717" elapsed="0.000061"/>
</return>
<status status="PASS" start="2026-04-08T01:05:58.626463" elapsed="0.000387"/>
</branch>
<status status="PASS" start="2026-04-08T01:05:58.626423" elapsed="0.000479"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T01:05:58.627030" elapsed="0.000050"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:05:58.634755" elapsed="0.000158"/>
</kw>
<msg time="2026-04-08T01:05:58.634958" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:05:58.634138" elapsed="0.000887"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:05:58.635213" elapsed="0.000024"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:05:58.635383" elapsed="0.000020"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:05:58.628094" elapsed="0.007439"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T01:05:58.292087" elapsed="0.343636"/>
</kw>
<msg time="2026-04-08T01:05:58.635792" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:05:58.290024" elapsed="0.345837"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-08T01:05:58.288484" elapsed="0.347780"/>
</kw>
<msg time="2026-04-08T01:05:58.636322" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:05:58.287139" elapsed="0.349235"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:05:58.639808" elapsed="0.000218"/>
</kw>
<msg time="2026-04-08T01:05:58.640126" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:05:58.639253" elapsed="0.000970"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:05:58.640401" elapsed="0.000023"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:05:58.640572" elapsed="0.000021"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:05:58.636700" elapsed="0.003964"/>
</kw>
<msg time="2026-04-08T01:05:58.640778" level="INFO">${output} = 1</msg>
<var>${output}</var>
<arg>Utils.Run_Command_On_Controller</arg>
<arg>${member_ip}</arg>
<arg>${command}</arg>
<doc>Store current connection index, run keyword returning its result, restore connection in teardown.
Note that in order to avoid "got positional argument after named arguments", it is safer to use positional (not named) arguments on call.</doc>
<status status="PASS" start="2026-04-08T01:05:58.285074" elapsed="0.355742"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:05:58.641319" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:05:58.641030" elapsed="0.000334"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-08T01:05:58.641407" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T01:05:58.641560" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-08T01:05:58.282923" elapsed="0.358662"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-08T01:05:58.641632" elapsed="0.000025"/>
</return>
<msg time="2026-04-08T01:05:58.641775" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-08T01:05:58.280758" elapsed="0.361041"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-08T01:05:58.642393" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-08T01:05:58.641959" elapsed="0.000514">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-08T01:05:58.279675" elapsed="0.362915">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:06:00.646129" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:06:00.645382" elapsed="0.000847"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:06:00.648269" level="INFO">${member_ip} = 10.30.171.110</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:06:00.647617" elapsed="0.000712"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:06:00.650119" level="INFO">index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-08T01:06:00.650380" level="INFO">${current_connection} = index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

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

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-08T01:06:00.656587" level="INFO">${current_ssh_connection} = index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T01:06:00.656327" elapsed="0.000287"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:06:00.657200" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.110" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:06:00.656792" elapsed="0.000464"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:06:00.657819" level="INFO">${conn_id} = 580</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T01:06:00.657438" elapsed="0.000407"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T01:06:00.658793" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T01:06:00.658870" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T01:06:00.658512" elapsed="0.000382"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:06:00.659056" elapsed="0.000349"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T01:06:00.660288" level="INFO">Logging into '10.30.171.110:22' as 'jenkins'.</msg>
<msg time="2026-04-08T01:06:00.978561" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 01:05:03 UTC 2026

  System load:  0.5                Processes:             125
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 7%                 IPv4 address for ens3: 10.30.171.110
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 01:05:58 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T01:06:00.659949" elapsed="0.318750"/>
</kw>
<msg time="2026-04-08T01:06:00.978777" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:06:00.659592" elapsed="0.319269"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T01:06:00.658083" elapsed="0.320886"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T01:06:00.979536" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-08T01:06:01.001938" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-08T01:06:01.002212" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-08T01:06:01.002318" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T01:06:00.979278" elapsed="0.023091"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T01:06:01.002782" elapsed="0.000481"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:06:01.004402" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:06:01.003736" elapsed="0.000758"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T01:06:01.005050" elapsed="0.000035"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:06:01.004752" elapsed="0.000455"/>
</branch>
<status status="PASS" start="2026-04-08T01:06:01.004658" elapsed="0.000615"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T01:06:01.005686" elapsed="0.000058"/>
</return>
<status status="PASS" start="2026-04-08T01:06:01.005445" elapsed="0.000372"/>
</branch>
<status status="PASS" start="2026-04-08T01:06:01.005407" elapsed="0.000462"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T01:06:01.005981" elapsed="0.000035"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:06:01.013680" elapsed="0.000153"/>
</kw>
<msg time="2026-04-08T01:06:01.013876" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:06:01.012787" elapsed="0.001153"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:06:01.014098" elapsed="0.000022"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:06:01.014279" elapsed="0.000022"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:06:01.006933" elapsed="0.007431"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T01:06:00.654459" elapsed="0.360087"/>
</kw>
<msg time="2026-04-08T01:06:01.014669" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:06:00.652946" elapsed="0.361790"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-08T01:06:00.652134" elapsed="0.362964"/>
</kw>
<msg time="2026-04-08T01:06:01.015142" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:06:00.650805" elapsed="0.364401"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:06:01.018446" elapsed="0.000211"/>
</kw>
<msg time="2026-04-08T01:06:01.018754" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:06:01.017921" elapsed="0.000899"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:06:01.018982" elapsed="0.000022"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:06:01.019148" elapsed="0.000037"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:06:01.015508" elapsed="0.003740"/>
</kw>
<msg time="2026-04-08T01:06:01.019338" level="INFO">${output} = 1</msg>
<var>${output}</var>
<arg>Utils.Run_Command_On_Controller</arg>
<arg>${member_ip}</arg>
<arg>${command}</arg>
<doc>Store current connection index, run keyword returning its result, restore connection in teardown.
Note that in order to avoid "got positional argument after named arguments", it is safer to use positional (not named) arguments on call.</doc>
<status status="PASS" start="2026-04-08T01:06:00.648815" elapsed="0.370547"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:06:01.019786" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:06:01.019541" elapsed="0.000290"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-08T01:06:01.019872" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T01:06:01.020021" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-08T01:06:00.646683" elapsed="0.373363"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-08T01:06:01.020091" elapsed="0.000025"/>
</return>
<msg time="2026-04-08T01:06:01.020251" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-08T01:06:00.644538" elapsed="0.375737"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-08T01:06:01.020828" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-08T01:06:01.020441" elapsed="0.000460">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-08T01:06:00.643406" elapsed="0.377607">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:06:03.024736" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:06:03.023896" elapsed="0.000974"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:06:03.027056" level="INFO">${member_ip} = 10.30.171.110</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:06:03.026407" elapsed="0.000712"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:06:03.029103" level="INFO">index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-08T01:06:03.029385" level="INFO">${current_connection} = index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

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

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-08T01:06:03.037681" level="INFO">${current_ssh_connection} = index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T01:06:03.037343" elapsed="0.000366"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:06:03.038309" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.110" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:06:03.037885" elapsed="0.000472"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:06:03.038931" level="INFO">${conn_id} = 581</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T01:06:03.038537" elapsed="0.000420"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T01:06:03.039913" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T01:06:03.039988" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T01:06:03.039628" elapsed="0.000385"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:06:03.040192" elapsed="0.000324"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T01:06:03.041374" level="INFO">Logging into '10.30.171.110:22' as 'jenkins'.</msg>
<msg time="2026-04-08T01:06:03.354509" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 01:05:03 UTC 2026

  System load:  0.5                Processes:             125
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 7%                 IPv4 address for ens3: 10.30.171.110
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 01:06:00 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T01:06:03.041043" elapsed="0.313620"/>
</kw>
<msg time="2026-04-08T01:06:03.354747" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:06:03.040688" elapsed="0.314151"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T01:06:03.039212" elapsed="0.315745"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T01:06:03.355564" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-08T01:06:03.377797" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-08T01:06:03.378114" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-08T01:06:03.378273" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T01:06:03.355298" elapsed="0.023036"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T01:06:03.378867" elapsed="0.000575"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:06:03.380819" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:06:03.380022" elapsed="0.000930"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T01:06:03.381592" elapsed="0.000038"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:06:03.381246" elapsed="0.000461"/>
</branch>
<status status="PASS" start="2026-04-08T01:06:03.381144" elapsed="0.000617"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T01:06:03.382231" elapsed="0.000071"/>
</return>
<status status="PASS" start="2026-04-08T01:06:03.381939" elapsed="0.000444"/>
</branch>
<status status="PASS" start="2026-04-08T01:06:03.381899" elapsed="0.000540"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T01:06:03.382564" elapsed="0.000037"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:06:03.388112" elapsed="0.000247"/>
</kw>
<msg time="2026-04-08T01:06:03.388422" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:06:03.387431" elapsed="0.001088"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:06:03.388744" elapsed="0.000032"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:06:03.388977" elapsed="0.000028"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:06:03.383632" elapsed="0.005461"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T01:06:03.035647" elapsed="0.353925"/>
</kw>
<msg time="2026-04-08T01:06:03.389736" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:06:03.032138" elapsed="0.357695"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-08T01:06:03.031387" elapsed="0.359004"/>
</kw>
<msg time="2026-04-08T01:06:03.390452" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:06:03.029833" elapsed="0.360686"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:06:03.395433" elapsed="0.000309"/>
</kw>
<msg time="2026-04-08T01:06:03.395882" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:06:03.394564" elapsed="0.001564"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:06:03.396393" elapsed="0.000032"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:06:03.396625" elapsed="0.000028"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:06:03.391169" elapsed="0.005570"/>
</kw>
<msg time="2026-04-08T01:06:03.396866" level="INFO">${output} = 1</msg>
<var>${output}</var>
<arg>Utils.Run_Command_On_Controller</arg>
<arg>${member_ip}</arg>
<arg>${command}</arg>
<doc>Store current connection index, run keyword returning its result, restore connection in teardown.
Note that in order to avoid "got positional argument after named arguments", it is safer to use positional (not named) arguments on call.</doc>
<status status="PASS" start="2026-04-08T01:06:03.027693" elapsed="0.369206"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:06:03.397531" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:06:03.397152" elapsed="0.000441"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-08T01:06:03.397652" elapsed="0.000040"/>
</return>
<msg time="2026-04-08T01:06:03.397860" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-08T01:06:03.025395" elapsed="0.372500"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-08T01:06:03.397959" elapsed="0.000036"/>
</return>
<msg time="2026-04-08T01:06:03.398177" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-08T01:06:03.022965" elapsed="0.375249"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-08T01:06:03.399018" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-08T01:06:03.398468" elapsed="0.000650">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-08T01:06:03.021844" elapsed="0.377438">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:06:05.403146" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:06:05.402334" elapsed="0.000938"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:06:05.405280" level="INFO">${member_ip} = 10.30.171.110</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:06:05.404651" elapsed="0.000687"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:06:05.407141" level="INFO">index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-08T01:06:05.407390" level="INFO">${current_connection} = index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T01:06:05.406764" elapsed="0.000684"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Controller" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:06:05.413872" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:06:05.413550" elapsed="0.000379"/>
</branch>
<status status="PASS" start="2026-04-08T01:06:05.413524" elapsed="0.000431"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:06:05.414302" level="INFO">index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-08T01:06:05.414403" level="INFO">${current_ssh_connection} = index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T01:06:05.414128" elapsed="0.000302"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:06:05.414996" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.110" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:06:05.414605" elapsed="0.000512"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:06:05.415735" level="INFO">${conn_id} = 582</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T01:06:05.415345" elapsed="0.000417"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T01:06:05.416714" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T01:06:05.416792" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T01:06:05.416425" elapsed="0.000391"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:06:05.416975" elapsed="0.000362"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T01:06:05.418221" level="INFO">Logging into '10.30.171.110:22' as 'jenkins'.</msg>
<msg time="2026-04-08T01:06:05.987594" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 01:06:05 UTC 2026

  System load:  0.24               Processes:             127
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 7%                 IPv4 address for ens3: 10.30.171.110
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 01:06:03 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T01:06:05.417868" elapsed="0.569901"/>
</kw>
<msg time="2026-04-08T01:06:05.987856" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:06:05.417512" elapsed="0.570443"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T01:06:05.416003" elapsed="0.572074"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T01:06:05.988755" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-08T01:06:06.010778" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-08T01:06:06.011061" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-08T01:06:06.011211" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T01:06:05.988429" elapsed="0.022842"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T01:06:06.011747" elapsed="0.000590"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:06:06.013531" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:06:06.012833" elapsed="0.000791"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T01:06:06.014132" elapsed="0.000067"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:06:06.013839" elapsed="0.000438"/>
</branch>
<status status="PASS" start="2026-04-08T01:06:06.013787" elapsed="0.000547"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T01:06:06.014769" elapsed="0.000062"/>
</return>
<status status="PASS" start="2026-04-08T01:06:06.014527" elapsed="0.000377"/>
</branch>
<status status="PASS" start="2026-04-08T01:06:06.014485" elapsed="0.000473"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T01:06:06.015072" elapsed="0.000034"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:06:06.021093" elapsed="0.000276"/>
</kw>
<msg time="2026-04-08T01:06:06.021445" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:06:06.020210" elapsed="0.001348"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:06:06.021796" elapsed="0.000032"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:06:06.022040" elapsed="0.000030"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:06:06.016090" elapsed="0.006092"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T01:06:05.412474" elapsed="0.609982"/>
</kw>
<msg time="2026-04-08T01:06:06.022558" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:06:05.410632" elapsed="0.612022"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-08T01:06:05.409056" elapsed="0.614260"/>
</kw>
<msg time="2026-04-08T01:06:06.023378" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:06:05.407794" elapsed="0.615651"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:06:06.028068" elapsed="0.000365"/>
</kw>
<msg time="2026-04-08T01:06:06.028547" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:06:06.027268" elapsed="0.001350"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:06:06.028780" elapsed="0.000021"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:06:06.028945" elapsed="0.000020"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:06:06.023855" elapsed="0.005171"/>
</kw>
<msg time="2026-04-08T01:06:06.029119" level="INFO">${output} = 1</msg>
<var>${output}</var>
<arg>Utils.Run_Command_On_Controller</arg>
<arg>${member_ip}</arg>
<arg>${command}</arg>
<doc>Store current connection index, run keyword returning its result, restore connection in teardown.
Note that in order to avoid "got positional argument after named arguments", it is safer to use positional (not named) arguments on call.</doc>
<status status="PASS" start="2026-04-08T01:06:05.405813" elapsed="0.623331"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:06:06.029596" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:06:06.029344" elapsed="0.000297"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-08T01:06:06.029683" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T01:06:06.029833" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-08T01:06:05.403718" elapsed="0.626140"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-08T01:06:06.029905" elapsed="0.000026"/>
</return>
<msg time="2026-04-08T01:06:06.030051" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-08T01:06:05.401486" elapsed="0.628589"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-08T01:06:06.030684" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-08T01:06:06.030283" elapsed="0.000477">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-08T01:06:05.400359" elapsed="0.630515">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:06:08.034459" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:06:08.033682" elapsed="0.000847"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:06:08.036606" level="INFO">${member_ip} = 10.30.171.110</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:06:08.035965" elapsed="0.000701"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:06:08.038494" level="INFO">index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-08T01:06:08.038739" level="INFO">${current_connection} = index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T01:06:08.038101" elapsed="0.000702"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Controller" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:06:08.045756" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:06:08.045433" elapsed="0.000381"/>
</branch>
<status status="PASS" start="2026-04-08T01:06:08.045405" elapsed="0.000434"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:06:08.046186" level="INFO">index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-08T01:06:08.046290" level="INFO">${current_ssh_connection} = index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T01:06:08.046009" elapsed="0.000308"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:06:08.046896" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.110" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:06:08.046492" elapsed="0.000451"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:06:08.047601" level="INFO">${conn_id} = 583</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T01:06:08.047206" elapsed="0.000421"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T01:06:08.048571" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T01:06:08.048646" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T01:06:08.048281" elapsed="0.000389"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:06:08.048829" elapsed="0.000319"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T01:06:08.050006" level="INFO">Logging into '10.30.171.110:22' as 'jenkins'.</msg>
<msg time="2026-04-08T01:06:08.364905" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 01:06:05 UTC 2026

  System load:  0.24               Processes:             127
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 7%                 IPv4 address for ens3: 10.30.171.110
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 01:06:05 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T01:06:08.049696" elapsed="0.315336"/>
</kw>
<msg time="2026-04-08T01:06:08.365108" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:06:08.049337" elapsed="0.315877"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T01:06:08.047866" elapsed="0.317456"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T01:06:08.365839" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-08T01:06:08.388077" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-08T01:06:08.388374" level="INFO">${stdout} = 0</msg>
<msg time="2026-04-08T01:06:08.388471" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T01:06:08.365590" elapsed="0.022931"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T01:06:08.388938" elapsed="0.000531"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:06:08.390604" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:06:08.389953" elapsed="0.000743"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T01:06:08.391230" elapsed="0.000040"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:06:08.390909" elapsed="0.000434"/>
</branch>
<status status="PASS" start="2026-04-08T01:06:08.390856" elapsed="0.000537"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T01:06:08.391796" elapsed="0.000058"/>
</return>
<status status="PASS" start="2026-04-08T01:06:08.391557" elapsed="0.000369"/>
</branch>
<status status="PASS" start="2026-04-08T01:06:08.391520" elapsed="0.000459"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T01:06:08.392091" elapsed="0.000053"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:06:08.398235" elapsed="0.000155"/>
</kw>
<msg time="2026-04-08T01:06:08.398436" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:06:08.397630" elapsed="0.000871"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:06:08.398659" elapsed="0.000021"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:06:08.398822" elapsed="0.000021"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:06:08.393072" elapsed="0.005830"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T01:06:08.044361" elapsed="0.354722"/>
</kw>
<msg time="2026-04-08T01:06:08.399153" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:06:08.041921" elapsed="0.357324"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-08T01:06:08.040383" elapsed="0.359226"/>
</kw>
<msg time="2026-04-08T01:06:08.399705" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:06:08.039199" elapsed="0.360557"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:06:08.403060" elapsed="0.000236"/>
</kw>
<msg time="2026-04-08T01:06:08.403396" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:06:08.402508" elapsed="0.000953"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:06:08.403620" elapsed="0.000022"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:06:08.403785" elapsed="0.000021"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:06:08.400064" elapsed="0.003802"/>
</kw>
<msg time="2026-04-08T01:06:08.403957" level="INFO">${output} = 0</msg>
<var>${output}</var>
<arg>Utils.Run_Command_On_Controller</arg>
<arg>${member_ip}</arg>
<arg>${command}</arg>
<doc>Store current connection index, run keyword returning its result, restore connection in teardown.
Note that in order to avoid "got positional argument after named arguments", it is safer to use positional (not named) arguments on call.</doc>
<status status="PASS" start="2026-04-08T01:06:08.037149" elapsed="0.366834"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:06:08.404441" level="INFO">0</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:06:08.404190" elapsed="0.000295"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-08T01:06:08.404527" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T01:06:08.404675" level="INFO">${count} = 0</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-08T01:06:08.035005" elapsed="0.369694"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-08T01:06:08.404744" elapsed="0.000025"/>
</return>
<msg time="2026-04-08T01:06:08.404885" level="INFO">${count} = 0</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-08T01:06:08.032836" elapsed="0.372073"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="PASS" start="2026-04-08T01:06:08.405065" elapsed="0.000375"/>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="PASS" start="2026-04-08T01:06:08.031765" elapsed="0.373739"/>
</kw>
<arg>${timeout}</arg>
<arg>2s</arg>
<arg>Verify_Karaf_Is_Not_Running_On_Member</arg>
<arg>member_index=${index}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-08T01:04:13.405735" elapsed="114.999816"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T01:04:13.405587" elapsed="115.000002"/>
</iter>
<var>${index}</var>
<value>@{stop_index_list}</value>
<status status="PASS" start="2026-04-08T01:04:03.152398" elapsed="125.253229"/>
</for>
<kw name="Run_Bash_Command_On_List_Or_All" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:06:08.408871" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:06:08.408489" elapsed="0.000409"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:06:08.409383" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:06:08.409061" elapsed="0.000347"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T01:06:08.409452" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T01:06:08.409603" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T01:06:08.408081" elapsed="0.001546"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:06:08.410703" level="INFO">${member_ip} = 10.30.170.48</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:06:08.410434" elapsed="0.000296"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:06:08.411528" level="INFO">index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-08T01:06:08.411626" level="INFO">${current_connection} = index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T01:06:08.411373" elapsed="0.000279"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Controller" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:06:08.415465" elapsed="0.000047"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:06:08.414568" elapsed="0.001042"/>
</branch>
<status status="PASS" start="2026-04-08T01:06:08.414550" elapsed="0.001087"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:06:08.415953" level="INFO">index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-08T01:06:08.416182" level="INFO">${current_ssh_connection} = index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T01:06:08.415790" elapsed="0.000437"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:06:08.417439" level="INFO">Attempting to execute command "netstat -pnatu | grep 2550" on remote system "10.30.170.48" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:06:08.416440" elapsed="0.001083"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:06:08.418486" level="INFO">${conn_id} = 584</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T01:06:08.417738" elapsed="0.000789"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T01:06:08.420684" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T01:06:08.420860" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T01:06:08.420128" elapsed="0.000840"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:06:08.421890" elapsed="0.000631"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T01:06:08.424535" level="INFO">Logging into '10.30.170.48:22' as 'jenkins'.</msg>
<msg time="2026-04-08T01:06:09.092724" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 01:06:08 UTC 2026

  System load:  0.05               Processes:             120
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.170.48
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 01:04:05 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-0-builder-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T01:06:08.424215" elapsed="0.668670"/>
</kw>
<msg time="2026-04-08T01:06:09.093026" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:06:08.423454" elapsed="0.669688"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T01:06:08.418832" elapsed="0.674578"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T01:06:09.094259" level="INFO">Executing command 'netstat -pnatu | grep 2550'.</msg>
<msg time="2026-04-08T01:06:09.107039" level="INFO">Command exited with return code 1.</msg>
<msg time="2026-04-08T01:06:09.107229" level="INFO">${stdout} = </msg>
<msg time="2026-04-08T01:06:09.107303" level="INFO">${stderr} = bash: line 1: netstat: command not found</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T01:06:09.093741" elapsed="0.013601"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T01:06:09.107834" elapsed="0.000514"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:06:09.110235" level="INFO">bash: line 1: netstat: command not found</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:06:09.108924" elapsed="0.001504"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T01:06:09.111289" elapsed="0.000038"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:06:09.110759" elapsed="0.000795"/>
</branch>
<status status="PASS" start="2026-04-08T01:06:09.110687" elapsed="0.000927"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T01:06:09.112206" elapsed="0.000066"/>
</return>
<status status="PASS" start="2026-04-08T01:06:09.111756" elapsed="0.000745"/>
</branch>
<status status="PASS" start="2026-04-08T01:06:09.111708" elapsed="0.000856"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T01:06:09.112644" elapsed="0.000033"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:06:09.118791" elapsed="0.000158"/>
</kw>
<msg time="2026-04-08T01:06:09.119021" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:06:09.117725" elapsed="0.001447"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:06:09.119497" elapsed="0.000066"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:06:09.119803" elapsed="0.000064"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:06:09.113445" elapsed="0.006521"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T01:06:08.413812" elapsed="0.706249"/>
</kw>
<msg time="2026-04-08T01:06:09.120187" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:06:08.412941" elapsed="0.707300"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-08T01:06:08.412417" elapsed="0.707906"/>
</kw>
<msg time="2026-04-08T01:06:09.120364" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:06:08.411807" elapsed="0.708601"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:06:09.123671" elapsed="0.000181"/>
</kw>
<msg time="2026-04-08T01:06:09.123895" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:06:09.123176" elapsed="0.000779"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:06:09.124113" elapsed="0.000021"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:06:09.124294" elapsed="0.000021"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:06:09.120708" elapsed="0.003667"/>
</kw>
<msg time="2026-04-08T01:06:09.124468" level="INFO">${output} = </msg>
<var>${output}</var>
<arg>Utils.Run_Command_On_Controller</arg>
<arg>${member_ip}</arg>
<arg>${command}</arg>
<doc>Store current connection index, run keyword returning its result, restore connection in teardown.
Note that in order to avoid "got positional argument after named arguments", it is safer to use positional (not named) arguments on call.</doc>
<status status="PASS" start="2026-04-08T01:06:08.410948" elapsed="0.713545"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:06:09.124920" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:06:09.124675" elapsed="0.000286"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-08T01:06:09.125003" elapsed="0.000029"/>
</return>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-08T01:06:08.410004" elapsed="0.715122"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T01:06:08.409825" elapsed="0.715395"/>
</iter>
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:06:09.126291" level="INFO">${member_ip} = 10.30.170.131</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:06:09.126002" elapsed="0.000316"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:06:09.127128" level="INFO">index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-08T01:06:09.127251" level="INFO">${current_connection} = index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T01:06:09.126950" elapsed="0.000329"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Controller" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:06:09.130768" elapsed="0.000045"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:06:09.129893" elapsed="0.001018"/>
</branch>
<status status="PASS" start="2026-04-08T01:06:09.129874" elapsed="0.001064"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:06:09.131270" level="INFO">index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-08T01:06:09.131435" level="INFO">${current_ssh_connection} = index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T01:06:09.131101" elapsed="0.000375"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:06:09.132658" level="INFO">Attempting to execute command "netstat -pnatu | grep 2550" on remote system "10.30.170.131" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:06:09.131684" elapsed="0.001057"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:06:09.133730" level="INFO">${conn_id} = 585</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T01:06:09.132954" elapsed="0.000818"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T01:06:09.136102" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T01:06:09.136305" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T01:06:09.135560" elapsed="0.000852"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:06:09.137300" elapsed="0.000621"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T01:06:09.139981" level="INFO">Logging into '10.30.170.131:22' as 'jenkins'.</msg>
<msg time="2026-04-08T01:06:09.821973" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 01:06:09 UTC 2026

  System load:  0.07               Processes:             121
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.170.131
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 01:04:13 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-0-builder-1 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T01:06:09.139659" elapsed="0.682481"/>
</kw>
<msg time="2026-04-08T01:06:09.822307" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:06:09.138912" elapsed="0.683518"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T01:06:09.134074" elapsed="0.688540"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T01:06:09.823425" level="INFO">Executing command 'netstat -pnatu | grep 2550'.</msg>
<msg time="2026-04-08T01:06:09.836276" level="INFO">Command exited with return code 1.</msg>
<msg time="2026-04-08T01:06:09.836577" level="INFO">${stdout} = </msg>
<msg time="2026-04-08T01:06:09.836751" level="INFO">${stderr} = bash: line 1: netstat: command not found</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T01:06:09.822970" elapsed="0.013867"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T01:06:09.837531" elapsed="0.000492"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:06:09.839996" level="INFO">bash: line 1: netstat: command not found</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:06:09.838721" elapsed="0.001510"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T01:06:09.841023" elapsed="0.000040"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:06:09.840559" elapsed="0.000781"/>
</branch>
<status status="PASS" start="2026-04-08T01:06:09.840502" elapsed="0.000907"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T01:06:09.841956" elapsed="0.000064"/>
</return>
<status status="PASS" start="2026-04-08T01:06:09.841540" elapsed="0.000783"/>
</branch>
<status status="PASS" start="2026-04-08T01:06:09.841504" elapsed="0.000933"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T01:06:09.842558" elapsed="0.000036"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:06:09.849739" elapsed="0.000161"/>
</kw>
<msg time="2026-04-08T01:06:09.849972" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:06:09.848554" elapsed="0.001543"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:06:09.850429" elapsed="0.000096"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:06:09.850775" elapsed="0.000065"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:06:09.843361" elapsed="0.007578"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T01:06:09.129118" elapsed="0.721920"/>
</kw>
<msg time="2026-04-08T01:06:09.851093" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:06:09.128480" elapsed="0.722665"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-08T01:06:09.127935" elapsed="0.723312"/>
</kw>
<msg time="2026-04-08T01:06:09.851309" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:06:09.127434" elapsed="0.723928"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:06:09.854883" elapsed="0.000192"/>
</kw>
<msg time="2026-04-08T01:06:09.855119" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:06:09.854332" elapsed="0.000870"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:06:09.855366" elapsed="0.000074"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:06:09.855616" elapsed="0.000026"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:06:09.851677" elapsed="0.004031"/>
</kw>
<msg time="2026-04-08T01:06:09.855801" level="INFO">${output} = </msg>
<var>${output}</var>
<arg>Utils.Run_Command_On_Controller</arg>
<arg>${member_ip}</arg>
<arg>${command}</arg>
<doc>Store current connection index, run keyword returning its result, restore connection in teardown.
Note that in order to avoid "got positional argument after named arguments", it is safer to use positional (not named) arguments on call.</doc>
<status status="PASS" start="2026-04-08T01:06:09.126542" elapsed="0.729285"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:06:09.856335" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:06:09.856057" elapsed="0.000319"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-08T01:06:09.856421" elapsed="0.000029"/>
</return>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-08T01:06:09.125502" elapsed="0.731045"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T01:06:09.125319" elapsed="0.731284"/>
</iter>
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:06:09.857608" level="INFO">${member_ip} = 10.30.171.110</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:06:09.857330" elapsed="0.000306"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:06:09.858537" level="INFO">index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-08T01:06:09.858647" level="INFO">${current_connection} = index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T01:06:09.858345" elapsed="0.000331"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Controller" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:06:09.862310" elapsed="0.000067"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:06:09.861363" elapsed="0.001112"/>
</branch>
<status status="PASS" start="2026-04-08T01:06:09.861343" elapsed="0.001160"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:06:09.862831" level="INFO">index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-08T01:06:09.863003" level="INFO">${current_ssh_connection} = index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T01:06:09.862668" elapsed="0.000377"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:06:09.864270" level="INFO">Attempting to execute command "netstat -pnatu | grep 2550" on remote system "10.30.171.110" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:06:09.863273" elapsed="0.001080"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:06:09.865351" level="INFO">${conn_id} = 586</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T01:06:09.864571" elapsed="0.000822"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T01:06:09.867599" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T01:06:09.867781" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T01:06:09.866974" elapsed="0.000938"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:06:09.868819" elapsed="0.000640"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T01:06:09.871539" level="INFO">Logging into '10.30.171.110:22' as 'jenkins'.</msg>
<msg time="2026-04-08T01:06:10.187045" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 01:06:05 UTC 2026

  System load:  0.24               Processes:             127
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 7%                 IPv4 address for ens3: 10.30.171.110
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 01:06:08 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T01:06:09.871111" elapsed="0.316105"/>
</kw>
<msg time="2026-04-08T01:06:10.187350" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:06:09.870402" elapsed="0.317063"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T01:06:09.865699" elapsed="0.322013"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T01:06:10.188436" level="INFO">Executing command 'netstat -pnatu | grep 2550'.</msg>
<msg time="2026-04-08T01:06:10.200777" level="INFO">Command exited with return code 1.</msg>
<msg time="2026-04-08T01:06:10.200990" level="INFO">${stdout} = </msg>
<msg time="2026-04-08T01:06:10.201089" level="INFO">${stderr} = bash: line 1: netstat: command not found</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T01:06:10.188039" elapsed="0.013102"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T01:06:10.201526" elapsed="0.000293"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:06:10.202957" level="INFO">bash: line 1: netstat: command not found</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:06:10.202206" elapsed="0.000870"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T01:06:10.203591" elapsed="0.000025"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:06:10.203300" elapsed="0.000454"/>
</branch>
<status status="PASS" start="2026-04-08T01:06:10.203261" elapsed="0.000531"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T01:06:10.204121" elapsed="0.000061"/>
</return>
<status status="PASS" start="2026-04-08T01:06:10.203872" elapsed="0.000456"/>
</branch>
<status status="PASS" start="2026-04-08T01:06:10.203849" elapsed="0.000520"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T01:06:10.204452" elapsed="0.000023"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:06:10.210406" elapsed="0.000221"/>
</kw>
<msg time="2026-04-08T01:06:10.210729" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:06:10.208743" elapsed="0.002159"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:06:10.211289" elapsed="0.000093"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:06:10.211714" elapsed="0.000091"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:06:10.204912" elapsed="0.007040"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T01:06:09.860607" elapsed="0.351479"/>
</kw>
<msg time="2026-04-08T01:06:10.212181" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:06:09.859947" elapsed="0.352308"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-08T01:06:09.859358" elapsed="0.353030"/>
</kw>
<msg time="2026-04-08T01:06:10.212449" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:06:09.858832" elapsed="0.353682"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:06:10.217302" elapsed="0.000294"/>
</kw>
<msg time="2026-04-08T01:06:10.217647" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:06:10.216573" elapsed="0.001135"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:06:10.217867" elapsed="0.000022"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:06:10.218039" elapsed="0.000021"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:06:10.212931" elapsed="0.005192"/>
</kw>
<msg time="2026-04-08T01:06:10.218268" level="INFO">${output} = </msg>
<var>${output}</var>
<arg>Utils.Run_Command_On_Controller</arg>
<arg>${member_ip}</arg>
<arg>${command}</arg>
<doc>Store current connection index, run keyword returning its result, restore connection in teardown.
Note that in order to avoid "got positional argument after named arguments", it is safer to use positional (not named) arguments on call.</doc>
<status status="PASS" start="2026-04-08T01:06:09.857860" elapsed="0.360433"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:06:10.218777" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:06:10.218480" elapsed="0.000339"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-08T01:06:10.218864" elapsed="0.000028"/>
</return>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-08T01:06:09.856899" elapsed="0.362089"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T01:06:09.856711" elapsed="0.362320"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-08T01:06:08.409686" elapsed="1.809386"/>
</for>
<arg>command=netstat -pnatu | grep 2550</arg>
<doc>Cycle through indices (or all), run command on each.</doc>
<status status="PASS" start="2026-04-08T01:06:08.405847" elapsed="1.813357"/>
</kw>
<return>
<value>${updated_index_list}</value>
<status status="PASS" start="2026-04-08T01:06:10.219249" elapsed="0.000028"/>
</return>
<doc>If the list is empty, stops all ODL instances. Otherwise stop members based on ${stop_index_list}
If ${confirm} is True, verify stopped instances are not there anymore.
The KW will return a list of available members: ${updated index_list}=${original_index_list}-${member_index_list}</doc>
<status status="PASS" start="2026-04-08T01:03:58.218742" elapsed="132.000660"/>
</kw>
<msg time="2026-04-08T01:06:10.219500" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:06:10.219547" level="INFO">${result} = []</msg>
<var>${status}</var>
<var>${result}</var>
<arg>ClusterManagement.Stop_Members_From_List_Or_All</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:03:58.218233" elapsed="132.001338"/>
</kw>
<if>
<branch type="IF" condition="'${status}' != 'PASS'">
<kw name="Kill_Members_From_List_Or_All" owner="ClusterManagement">
<doc>If the list is empty, kill all ODL instances. Otherwise, kill members based on ${kill_index_list}
If ${confirm} is True, sleep 1 second and verify killed instances are not there anymore.
The KW will return a list of available members: ${updated index_list}=${original_index_list}-${member_index_list}</doc>
<status status="NOT RUN" start="2026-04-08T01:06:10.220076" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:06:10.219651" elapsed="0.000484"/>
</branch>
<status status="PASS" start="2026-04-08T01:06:10.219631" elapsed="0.000545"/>
</if>
<kw name="Start_Members_From_List_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:06:10.232971" level="INFO">${base_command} = /tmp/karaf-0.23.1/bin/start</msg>
<var>${base_command}</var>
<arg>"""${karaf_home}""" != ""</arg>
<arg>${karaf_home}/bin/start</arg>
<arg>${NODE_START_COMMAND}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:06:10.232585" elapsed="0.000414"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:06:10.233574" level="INFO">${command} = /tmp/karaf-0.23.1/bin/start</msg>
<var>${command}</var>
<arg>"""${export_java_home}""" != ""</arg>
<arg>export JAVA_HOME="${export_java_home}"; ${base_command}</arg>
<arg>${base_command}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:06:10.233193" elapsed="0.000407"/>
</kw>
<kw name="Get Current Date" owner="DateTime">
<msg time="2026-04-08T01:06:10.234038" level="INFO">${epoch} = 1775610370.23396</msg>
<var>${epoch}</var>
<arg>time_zone=UTC</arg>
<arg>result_format=epoch</arg>
<arg>exclude_millis=False</arg>
<doc>Returns current local or UTC time with an optional increment.</doc>
<status status="PASS" start="2026-04-08T01:06:10.233766" elapsed="0.000299"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:06:10.234668" level="INFO">${gc_filepath} = /tmp/karaf-0.23.1/data/log/gc_1775610370.23396.log</msg>
<var>${gc_filepath}</var>
<arg>"""${karaf_home}""" != ""</arg>
<arg>${karaf_home}/data/log/gc_${epoch}.log</arg>
<arg>${GC_LOG_PATH}/gc_${epoch}.log</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:06:10.234259" elapsed="0.000436"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:06:10.235257" level="INFO">${gc_options} = -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:/tmp/karaf-0.23.1/data/log/gc_1775610370.23396.log</msg>
<var>${gc_options}</var>
<arg>"docker" not in """${node_start_command}"""</arg>
<arg>-XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:${gc_filepath}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:06:10.234866" elapsed="0.000422"/>
</kw>
<kw name="Run_Bash_Command_On_List_Or_All" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:06:10.236826" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:06:10.236446" elapsed="0.000406"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:06:10.237346" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:06:10.237016" elapsed="0.000356"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T01:06:10.237417" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T01:06:10.237572" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T01:06:10.236025" elapsed="0.001571"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:06:10.238667" level="INFO">${member_ip} = 10.30.170.48</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:06:10.238395" elapsed="0.000298"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:06:10.239514" level="INFO">index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-08T01:06:10.239614" level="INFO">${current_connection} = index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T01:06:10.239346" elapsed="0.000294"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Controller" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:06:10.242328" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:06:10.242022" elapsed="0.000376"/>
</branch>
<status status="PASS" start="2026-04-08T01:06:10.242003" elapsed="0.000421"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:06:10.242734" level="INFO">index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-08T01:06:10.243020" level="INFO">${current_ssh_connection} = index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T01:06:10.242585" elapsed="0.000464"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:06:10.243710" level="INFO">Attempting to execute command "/tmp/karaf-0.23.1/bin/start -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:/tmp/karaf-0.23.1/data/log/gc_1775610370.23396.log" on remote system "10.30.170.48" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:06:10.243226" elapsed="0.000533"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:06:10.244392" level="INFO">${conn_id} = 587</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T01:06:10.243923" elapsed="0.000503"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T01:06:10.247450" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T01:06:10.247582" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T01:06:10.246875" elapsed="0.000733"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:06:10.247801" elapsed="0.000711"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T01:06:10.250711" level="INFO">Logging into '10.30.170.48:22' as 'jenkins'.</msg>
<msg time="2026-04-08T01:06:10.576126" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 01:06:08 UTC 2026

  System load:  0.05               Processes:             120
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.170.48
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 01:06:09 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-0-builder-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T01:06:10.250114" elapsed="0.326282"/>
</kw>
<msg time="2026-04-08T01:06:10.576530" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:06:10.248749" elapsed="0.327956"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T01:06:10.244652" elapsed="0.332226"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T01:06:10.577438" level="INFO">Executing command '/tmp/karaf-0.23.1/bin/start -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:/tmp/karaf-0.23.1/data/log/gc_1775610370.23396.log'.</msg>
<msg time="2026-04-08T01:06:10.599741" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-08T01:06:10.599999" level="INFO">${stdout} = </msg>
<msg time="2026-04-08T01:06:10.600098" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T01:06:10.577130" elapsed="0.023019"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T01:06:10.600598" elapsed="0.000461"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:06:10.602297" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:06:10.601539" elapsed="0.000864"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T01:06:10.602901" elapsed="0.000037"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:06:10.602587" elapsed="0.000423"/>
</branch>
<status status="PASS" start="2026-04-08T01:06:10.602533" elapsed="0.000527"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T01:06:10.603460" elapsed="0.000063"/>
</return>
<status status="PASS" start="2026-04-08T01:06:10.603213" elapsed="0.000384"/>
</branch>
<status status="PASS" start="2026-04-08T01:06:10.603144" elapsed="0.000507"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T01:06:10.603725" elapsed="0.000032"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:06:10.620629" elapsed="0.000382"/>
</kw>
<msg time="2026-04-08T01:06:10.621098" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:06:10.619765" elapsed="0.001504"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:06:10.621439" elapsed="0.000022"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:06:10.621611" elapsed="0.000020"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:06:10.604458" elapsed="0.017235"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T01:06:10.241490" elapsed="0.380298"/>
</kw>
<msg time="2026-04-08T01:06:10.621901" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:06:10.240890" elapsed="0.381062"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-08T01:06:10.240357" elapsed="0.381674"/>
</kw>
<msg time="2026-04-08T01:06:10.622096" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:06:10.239797" elapsed="0.382345"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:06:10.625808" elapsed="0.000182"/>
</kw>
<msg time="2026-04-08T01:06:10.626045" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:06:10.625315" elapsed="0.000793"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:06:10.626289" elapsed="0.000022"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:06:10.626455" elapsed="0.000020"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:06:10.622461" elapsed="0.004073"/>
</kw>
<msg time="2026-04-08T01:06:10.626628" level="INFO">${output} = </msg>
<var>${output}</var>
<arg>Utils.Run_Command_On_Controller</arg>
<arg>${member_ip}</arg>
<arg>${command}</arg>
<doc>Store current connection index, run keyword returning its result, restore connection in teardown.
Note that in order to avoid "got positional argument after named arguments", it is safer to use positional (not named) arguments on call.</doc>
<status status="PASS" start="2026-04-08T01:06:10.238912" elapsed="0.387741"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:06:10.627097" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:06:10.626848" elapsed="0.000290"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-08T01:06:10.627460" elapsed="0.000032"/>
</return>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-08T01:06:10.237962" elapsed="0.389630"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T01:06:10.237786" elapsed="0.389843"/>
</iter>
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:06:10.628604" level="INFO">${member_ip} = 10.30.170.131</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:06:10.628336" elapsed="0.000294"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:06:10.629473" level="INFO">index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-08T01:06:10.629577" level="INFO">${current_connection} = index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T01:06:10.629271" elapsed="0.000332"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Controller" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:06:10.632343" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:06:10.632035" elapsed="0.000366"/>
</branch>
<status status="PASS" start="2026-04-08T01:06:10.632014" elapsed="0.000412"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:06:10.632727" level="INFO">index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-08T01:06:10.632828" level="INFO">${current_ssh_connection} = index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T01:06:10.632578" elapsed="0.000277"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:06:10.633507" level="INFO">Attempting to execute command "/tmp/karaf-0.23.1/bin/start -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:/tmp/karaf-0.23.1/data/log/gc_1775610370.23396.log" on remote system "10.30.170.131" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:06:10.633009" elapsed="0.000548"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:06:10.634195" level="INFO">${conn_id} = 588</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T01:06:10.633717" elapsed="0.000507"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T01:06:10.635437" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T01:06:10.635566" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T01:06:10.634885" elapsed="0.000706"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:06:10.635782" elapsed="0.000670"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T01:06:10.638621" level="INFO">Logging into '10.30.170.131:22' as 'jenkins'.</msg>
<msg time="2026-04-08T01:06:10.955875" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 01:06:09 UTC 2026

  System load:  0.07               Processes:             121
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.170.131
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 01:06:09 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-0-builder-1 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T01:06:10.638042" elapsed="0.318054"/>
</kw>
<msg time="2026-04-08T01:06:10.956261" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:06:10.636741" elapsed="0.319692"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T01:06:10.634446" elapsed="0.322165"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T01:06:10.957112" level="INFO">Executing command '/tmp/karaf-0.23.1/bin/start -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:/tmp/karaf-0.23.1/data/log/gc_1775610370.23396.log'.</msg>
<msg time="2026-04-08T01:06:10.979685" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-08T01:06:10.979943" level="INFO">${stdout} = </msg>
<msg time="2026-04-08T01:06:10.980043" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T01:06:10.956851" elapsed="0.023243"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T01:06:10.980528" elapsed="0.000458"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:06:10.982430" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:06:10.981459" elapsed="0.001069"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T01:06:10.983004" elapsed="0.000039"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:06:10.982705" elapsed="0.000408"/>
</branch>
<status status="PASS" start="2026-04-08T01:06:10.982654" elapsed="0.000549"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T01:06:10.983574" elapsed="0.000062"/>
</return>
<status status="PASS" start="2026-04-08T01:06:10.983333" elapsed="0.000376"/>
</branch>
<status status="PASS" start="2026-04-08T01:06:10.983297" elapsed="0.000465"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T01:06:10.983836" elapsed="0.000031"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:06:11.000393" elapsed="0.000381"/>
</kw>
<msg time="2026-04-08T01:06:11.000863" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:06:10.999542" elapsed="0.001470"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:06:11.001224" elapsed="0.000025"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:06:11.001438" elapsed="0.000022"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:06:10.984611" elapsed="0.016913"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T01:06:10.631498" elapsed="0.370120"/>
</kw>
<msg time="2026-04-08T01:06:11.001673" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:06:10.630825" elapsed="0.370899"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-08T01:06:10.630296" elapsed="0.371510"/>
</kw>
<msg time="2026-04-08T01:06:11.001846" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:06:10.629760" elapsed="0.372132"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:06:11.005575" elapsed="0.000185"/>
</kw>
<msg time="2026-04-08T01:06:11.005802" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:06:11.004753" elapsed="0.001110"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:06:11.006080" elapsed="0.000021"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:06:11.006264" elapsed="0.000021"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:06:11.002305" elapsed="0.004042"/>
</kw>
<msg time="2026-04-08T01:06:11.006440" level="INFO">${output} = </msg>
<var>${output}</var>
<arg>Utils.Run_Command_On_Controller</arg>
<arg>${member_ip}</arg>
<arg>${command}</arg>
<doc>Store current connection index, run keyword returning its result, restore connection in teardown.
Note that in order to avoid "got positional argument after named arguments", it is safer to use positional (not named) arguments on call.</doc>
<status status="PASS" start="2026-04-08T01:06:10.628848" elapsed="0.377618"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:06:11.006903" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:06:11.006651" elapsed="0.000295"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-08T01:06:11.006989" elapsed="0.000029"/>
</return>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-08T01:06:10.627910" elapsed="0.379204"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T01:06:10.627726" elapsed="0.379425"/>
</iter>
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:06:11.008173" level="INFO">${member_ip} = 10.30.171.110</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:06:11.007855" elapsed="0.000348"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:06:11.008986" level="INFO">index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-08T01:06:11.009085" level="INFO">${current_connection} = index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T01:06:11.008833" elapsed="0.000280"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Controller" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:06:11.012028" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:06:11.011738" elapsed="0.000348"/>
</branch>
<status status="PASS" start="2026-04-08T01:06:11.011720" elapsed="0.000391"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:06:11.012434" level="INFO">index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-08T01:06:11.012536" level="INFO">${current_ssh_connection} = index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T01:06:11.012284" elapsed="0.000280"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:06:11.013203" level="INFO">Attempting to execute command "/tmp/karaf-0.23.1/bin/start -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:/tmp/karaf-0.23.1/data/log/gc_1775610370.23396.log" on remote system "10.30.171.110" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:06:11.012719" elapsed="0.000535"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:06:11.013928" level="INFO">${conn_id} = 589</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T01:06:11.013430" elapsed="0.000526"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T01:06:11.015199" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T01:06:11.015367" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T01:06:11.014672" elapsed="0.000720"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:06:11.015583" elapsed="0.000676"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T01:06:11.018298" level="INFO">Logging into '10.30.171.110:22' as 'jenkins'.</msg>
<msg time="2026-04-08T01:06:11.318526" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 01:06:05 UTC 2026

  System load:  0.24               Processes:             127
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 7%                 IPv4 address for ens3: 10.30.171.110
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 01:06:10 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T01:06:11.017738" elapsed="0.300998"/>
</kw>
<msg time="2026-04-08T01:06:11.318939" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:06:11.016490" elapsed="0.302614"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T01:06:11.014227" elapsed="0.305079"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T01:06:11.319784" level="INFO">Executing command '/tmp/karaf-0.23.1/bin/start -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:/tmp/karaf-0.23.1/data/log/gc_1775610370.23396.log'.</msg>
<msg time="2026-04-08T01:06:11.341994" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-08T01:06:11.342280" level="INFO">${stdout} = </msg>
<msg time="2026-04-08T01:06:11.342406" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T01:06:11.319533" elapsed="0.022926"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T01:06:11.342838" elapsed="0.000479"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:06:11.344437" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:06:11.343746" elapsed="0.000788"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T01:06:11.344995" elapsed="0.000037"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:06:11.344706" elapsed="0.000397"/>
</branch>
<status status="PASS" start="2026-04-08T01:06:11.344657" elapsed="0.000497"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T01:06:11.345571" elapsed="0.000060"/>
</return>
<status status="PASS" start="2026-04-08T01:06:11.345326" elapsed="0.000378"/>
</branch>
<status status="PASS" start="2026-04-08T01:06:11.345290" elapsed="0.000467"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T01:06:11.345831" elapsed="0.000031"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:06:11.361367" elapsed="0.000384"/>
</kw>
<msg time="2026-04-08T01:06:11.361845" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:06:11.360590" elapsed="0.001408"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:06:11.362396" elapsed="0.000025"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:06:11.362573" elapsed="0.000021"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:06:11.346586" elapsed="0.016071"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T01:06:11.011193" elapsed="0.351556"/>
</kw>
<msg time="2026-04-08T01:06:11.362803" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:06:11.010597" elapsed="0.352255"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-08T01:06:11.010033" elapsed="0.352898"/>
</kw>
<msg time="2026-04-08T01:06:11.362971" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:06:11.009286" elapsed="0.353729"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:06:11.366669" elapsed="0.000181"/>
</kw>
<msg time="2026-04-08T01:06:11.366893" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:06:11.366147" elapsed="0.000806"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:06:11.367111" elapsed="0.000021"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:06:11.367289" elapsed="0.000021"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:06:11.363338" elapsed="0.004032"/>
</kw>
<msg time="2026-04-08T01:06:11.367462" level="INFO">${output} = </msg>
<var>${output}</var>
<arg>Utils.Run_Command_On_Controller</arg>
<arg>${member_ip}</arg>
<arg>${command}</arg>
<doc>Store current connection index, run keyword returning its result, restore connection in teardown.
Note that in order to avoid "got positional argument after named arguments", it is safer to use positional (not named) arguments on call.</doc>
<status status="PASS" start="2026-04-08T01:06:11.008423" elapsed="0.359064"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:06:11.367957" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:06:11.367696" elapsed="0.000302"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-08T01:06:11.368042" elapsed="0.000030"/>
</return>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-08T01:06:11.007443" elapsed="0.360740"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T01:06:11.007262" elapsed="0.361015"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-08T01:06:10.237649" elapsed="1.130666"/>
</for>
<arg>command=${command} ${gc_options}</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Cycle through indices (or all), run command on each.</doc>
<status status="PASS" start="2026-04-08T01:06:10.235507" elapsed="1.132868"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Verify_Members_Are_Ready" owner="ClusterManagement">
<if>
<branch type="IF" condition="${verify_cluster_sync}">
<kw name="Check_Cluster_Is_In_Sync" owner="ClusterManagement">
<arg>${member_index_list}</arg>
<doc>Fail if no-sync is detected on a member from list (or any).</doc>
<status status="NOT RUN" start="2026-04-08T01:06:11.378574" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:06:11.378248" elapsed="0.000385"/>
</branch>
<status status="PASS" start="2026-04-08T01:06:11.378225" elapsed="0.000434"/>
</if>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Verify_Restconf_Is_Available" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:06:11.380146" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:06:11.379762" elapsed="0.000439"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:06:11.380681" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:06:11.380371" elapsed="0.000335"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T01:06:11.380751" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T01:06:11.380906" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T01:06:11.379376" elapsed="0.001554"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:06:11.381973" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:06:11.381675" elapsed="0.000326"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T01:06:11.382046" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T01:06:11.382247" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T01:06:11.381320" elapsed="0.000955"/>
</kw>
<kw name="Get_As_Json_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:06:11.471351" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:06:11.470592" elapsed="0.000859"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T01:06:11.472602" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T01:06:11.472346" elapsed="0.000332">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-08T01:06:11.472868" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T01:06:11.471708" elapsed="0.001255"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:06:11.474365" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:06:11.473503" elapsed="0.000958"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T01:06:11.475025" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-08T01:06:11.475312" level="INFO">${template} = /rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T01:06:11.474698" elapsed="0.000709"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:06:11.476175" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:06:11.475638" elapsed="0.000677"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:06:11.477983" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:06:11.477716" elapsed="0.000312"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-08T01:06:11.478598" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-08T01:06:11.478325" elapsed="0.000299"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-04-08T01:06:11.478945" elapsed="0.000022"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-04-08T01:06:11.479149" elapsed="0.000041"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-04-08T01:06:11.479396" elapsed="0.000022"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-08T01:06:11.478809" elapsed="0.000645"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-08T01:06:11.478671" elapsed="0.000814"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-08T01:06:11.479528" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T01:06:11.479834" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-08T01:06:11.477197" elapsed="0.002671"/>
</kw>
<status status="PASS" start="2026-04-08T01:06:11.476426" elapsed="0.003487"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T01:06:11.480301" elapsed="0.000035"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:06:11.479998" elapsed="0.000388"/>
</branch>
<status status="PASS" start="2026-04-08T01:06:11.476393" elapsed="0.004073"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:06:11.481668" level="INFO">${final_text} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:06:11.480673" elapsed="0.001092"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T01:06:11.481838" elapsed="0.000030"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="PASS" start="2026-04-08T01:06:11.469509" elapsed="0.012581"/>
</kw>
<msg time="2026-04-08T01:06:11.482146" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:06:11.419110" elapsed="0.063107"/>
</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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T01:06:11.494974" elapsed="0.000029"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T01:06:11.507241" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T01:06:11.519470" elapsed="0.000030"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:06:11.519669" elapsed="0.000022"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T01:06:11.519847" elapsed="0.000021"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:06:11.520284" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:06:11.520105" elapsed="0.000369"/>
</branch>
<status status="NOT RUN" start="2026-04-08T01:06:11.520090" elapsed="0.000412"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T01:06:11.520649" elapsed="0.000021"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T01:06:11.520820" elapsed="0.000020"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:06:11.520990" elapsed="0.000020"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-08T01:06:11.520060" elapsed="0.000983"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-08T01:06:11.519922" elapsed="0.001147"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-08T01:06:11.521271" elapsed="0.000022"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-08T01:06:11.521349" elapsed="0.000016"/>
</return>
<msg time="2026-04-08T01:06:11.521477" level="INFO">${uri} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-08T01:06:11.414874" elapsed="0.106629"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T01:06:11.522871" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T01:06:11.522523" elapsed="0.000414">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-08T01:06:11.523029" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T01:06:11.522168" elapsed="0.000886"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T01:06:11.523392" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:06:11.523126" elapsed="0.000323"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:06:11.524052" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:06:11.523651" elapsed="0.000428"/>
</kw>
<status status="PASS" start="2026-04-08T01:06:11.523473" elapsed="0.000641"/>
</branch>
<status status="PASS" start="2026-04-08T01:06:11.523107" elapsed="0.001029"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:06:11.526536" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:06:11.524308" elapsed="0.002255"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-08T01:06:11.526614" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T01:06:11.526765" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T01:06:11.521826" elapsed="0.004963"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T01:06:11.528124" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T01:06:11.527784" elapsed="0.000420">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-08T01:06:11.528297" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T01:06:11.527442" elapsed="0.000880"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-08T01:06:11.528529" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-08T01:06:11.528393" elapsed="0.000195"/>
</branch>
<status status="PASS" start="2026-04-08T01:06:11.528373" elapsed="0.000239"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T01:06:11.528760" elapsed="0.000021"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-08T01:06:11.528932" elapsed="0.000020"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-08T01:06:11.528997" elapsed="0.000014"/>
</return>
<msg time="2026-04-08T01:06:11.531078" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T01:06:11.527090" elapsed="0.004015"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:06:11.532522" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:06:11.532272" elapsed="0.000297"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:06:11.532964" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:06:11.532722" elapsed="0.000286"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T01:06:11.538470" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.170.48', port=8181): Max retries exceeded with url: /rests/data/ietf-yang-library:modules-state?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.170.48', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-08T01:06:11.535152" elapsed="0.005077">ConnectionError: HTTPConnectionPool(host='10.30.170.48', port=8181): Max retries exceeded with url: /rests/data/ietf-yang-library:modules-state?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.170.48', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<status status="FAIL" start="2026-04-08T01:06:11.533074" elapsed="0.007243">ConnectionError: HTTPConnectionPool(host='10.30.170.48', port=8181): Max retries exceeded with url: /rests/data/ietf-yang-library:modules-state?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.170.48', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T01:06:11.540516" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:06:11.540353" elapsed="0.000228"/>
</branch>
<status status="FAIL" start="2026-04-08T01:06:11.533055" elapsed="0.007550">ConnectionError: HTTPConnectionPool(host='10.30.170.48', port=8181): Max retries exceeded with url: /rests/data/ietf-yang-library:modules-state?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.170.48', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-08T01:06:11.541126" elapsed="0.000059"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T01:06:11.541316" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:06:11.541262" elapsed="0.000097"/>
</branch>
<status status="NOT RUN" start="2026-04-08T01:06:11.541244" elapsed="0.000138"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-08T01:06:11.541545" elapsed="0.000022"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-08T01:06:11.541616" elapsed="0.000015"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-08T01:06:11.531446" elapsed="0.010279">ConnectionError: HTTPConnectionPool(host='10.30.170.48', port=8181): Max retries exceeded with url: /rests/data/ietf-yang-library:modules-state?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.170.48', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-08T01:06:11.541800" elapsed="0.000016"/>
</return>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="FAIL" start="2026-04-08T01:06:11.392748" elapsed="0.149150">ConnectionError: HTTPConnectionPool(host='10.30.170.48', port=8181): Max retries exceeded with url: /rests/data/ietf-yang-library:modules-state?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.170.48', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Json_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="NOT RUN" start="2026-04-08T01:06:11.542184" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:06:11.541991" elapsed="0.000266"/>
</branch>
<status status="NOT RUN" start="2026-04-08T01:06:11.541974" elapsed="0.000306"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-08T01:06:11.542312" elapsed="0.000014"/>
</return>
<arg>session=${session}</arg>
<arg>folder=${RESTCONF_MODULES_DIR}</arg>
<arg>verify=False</arg>
<doc>Add arguments sensible for JSON data, return Get_Templated response text.
Optionally, verification against JSON data (may be iterated) is called.
Only subset of JSON data is verified and returned if JMES path is specified in
file ${folder}/jmespath.expr.</doc>
<status status="FAIL" start="2026-04-08T01:06:11.386569" elapsed="0.155840">ConnectionError: HTTPConnectionPool(host='10.30.170.48', port=8181): Max retries exceeded with url: /rests/data/ietf-yang-library:modules-state?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.170.48', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<var name="${index}">1</var>
<status status="FAIL" start="2026-04-08T01:06:11.381124" elapsed="0.161351">ConnectionError: HTTPConnectionPool(host='10.30.170.48', port=8181): Max retries exceeded with url: /rests/data/ietf-yang-library:modules-state?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.170.48', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-04-08T01:06:11.380983" elapsed="0.161548">ConnectionError: HTTPConnectionPool(host='10.30.170.48', port=8181): Max retries exceeded with url: /rests/data/ietf-yang-library:modules-state?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.170.48', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</for>
<arg>${member_index_list}</arg>
<status status="FAIL" start="2026-04-08T01:06:11.378967" elapsed="0.163662">ConnectionError: HTTPConnectionPool(host='10.30.170.48', port=8181): Max retries exceeded with url: /rests/data/ietf-yang-library:modules-state?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.170.48', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<status status="FAIL" start="2026-04-08T01:06:11.378714" elapsed="0.163969">ConnectionError: HTTPConnectionPool(host='10.30.170.48', port=8181): Max retries exceeded with url: /rests/data/ietf-yang-library:modules-state?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.170.48', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</branch>
<status status="FAIL" start="2026-04-08T01:06:11.378699" elapsed="0.164050">ConnectionError: HTTPConnectionPool(host='10.30.170.48', port=8181): Max retries exceeded with url: /rests/data/ietf-yang-library:modules-state?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.170.48', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</if>
<if>
<branch type="IF" condition="${verify_system_status} and (&quot;${service_list}&quot; != &quot;[[]]&quot;)">
<kw name="Check Status Of Services Is OPERATIONAL" owner="ClusterManagement">
<arg>@{service_list}</arg>
<doc>This keyword will verify whether all the services are operational in all the ODL nodes</doc>
<status status="NOT RUN" start="2026-04-08T01:06:11.543039" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:06:11.542821" elapsed="0.000274"/>
</branch>
<status status="NOT RUN" start="2026-04-08T01:06:11.542805" elapsed="0.000313"/>
</if>
<arg>${member_index_list}</arg>
<arg>${wait_for_sync}</arg>
<arg>${verify_restconf}</arg>
<arg>${check_system_status}</arg>
<arg>${service_list}</arg>
<doc>Verifies the specified readiness conditions for the given listed members after startup.
If ${verify_cluster_sync}, verifies the datastores have synced with the rest of the cluster.
If True, verifies RESTCONF is available.
If ${verify_system_status}, verifies the system services are OPERATIONAL.</doc>
<status status="FAIL" start="2026-04-08T01:06:11.377746" elapsed="0.165466">ConnectionError: HTTPConnectionPool(host='10.30.170.48', port=8181): Max retries exceeded with url: /rests/data/ietf-yang-library:modules-state?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.170.48', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Verify_Members_Are_Ready" owner="ClusterManagement">
<if>
<branch type="IF" condition="${verify_cluster_sync}">
<kw name="Check_Cluster_Is_In_Sync" owner="ClusterManagement">
<arg>${member_index_list}</arg>
<doc>Fail if no-sync is detected on a member from list (or any).</doc>
<status status="NOT RUN" start="2026-04-08T01:06:21.557390" elapsed="0.000035"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:06:21.556892" elapsed="0.000604"/>
</branch>
<status status="PASS" start="2026-04-08T01:06:21.556854" elapsed="0.000691"/>
</if>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Verify_Restconf_Is_Available" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:06:21.559931" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:06:21.559231" elapsed="0.000742"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:06:21.561066" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:06:21.560242" elapsed="0.000865"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T01:06:21.561199" elapsed="0.000055"/>
</return>
<msg time="2026-04-08T01:06:21.561450" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T01:06:21.558599" elapsed="0.002890"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:06:21.563000" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:06:21.562536" elapsed="0.000502"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T01:06:21.563100" elapsed="0.000035"/>
</return>
<msg time="2026-04-08T01:06:21.563284" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T01:06:21.562004" elapsed="0.001307"/>
</kw>
<kw name="Get_As_Json_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:06:21.665435" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:06:21.664644" elapsed="0.000894"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T01:06:21.666730" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T01:06:21.666450" elapsed="0.000364">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-08T01:06:21.667011" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T01:06:21.665804" elapsed="0.001302"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:06:21.668514" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:06:21.667650" elapsed="0.000959"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T01:06:21.669191" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-08T01:06:21.669494" level="INFO">${template} = /rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T01:06:21.668845" elapsed="0.000744"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:06:21.670368" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:06:21.669820" elapsed="0.000684"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:06:21.672428" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:06:21.672147" elapsed="0.000327"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-08T01:06:21.673098" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-08T01:06:21.672639" elapsed="0.000486"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-04-08T01:06:21.673480" elapsed="0.000021"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-04-08T01:06:21.673685" elapsed="0.000023"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-04-08T01:06:21.673860" elapsed="0.000021"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-08T01:06:21.673340" elapsed="0.000578"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-08T01:06:21.673192" elapsed="0.000757"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-08T01:06:21.673995" elapsed="0.000032"/>
</return>
<msg time="2026-04-08T01:06:21.674323" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-08T01:06:21.671631" elapsed="0.002728"/>
</kw>
<status status="PASS" start="2026-04-08T01:06:21.670710" elapsed="0.003696"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T01:06:21.674777" elapsed="0.000034"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:06:21.674491" elapsed="0.000369"/>
</branch>
<status status="PASS" start="2026-04-08T01:06:21.670670" elapsed="0.004272"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:06:21.676135" level="INFO">${final_text} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:06:21.675148" elapsed="0.001101"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T01:06:21.676323" elapsed="0.000031"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="PASS" start="2026-04-08T01:06:21.663466" elapsed="0.013108"/>
</kw>
<msg time="2026-04-08T01:06:21.676631" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:06:21.606217" elapsed="0.070466"/>
</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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T01:06:21.689389" elapsed="0.000039"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T01:06:21.701526" 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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T01:06:21.713653" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:06:21.713858" elapsed="0.000022"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T01:06:21.714037" elapsed="0.000021"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:06:21.714540" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:06:21.714388" elapsed="0.000402"/>
</branch>
<status status="NOT RUN" start="2026-04-08T01:06:21.714372" elapsed="0.000450"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T01:06:21.715022" elapsed="0.000032"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T01:06:21.715243" elapsed="0.000022"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:06:21.715415" elapsed="0.000021"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-08T01:06:21.714338" elapsed="0.001131"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-08T01:06:21.714191" elapsed="0.001305"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-08T01:06:21.715645" elapsed="0.000021"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-08T01:06:21.715722" elapsed="0.000016"/>
</return>
<msg time="2026-04-08T01:06:21.715860" level="INFO">${uri} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-08T01:06:21.600335" elapsed="0.115553"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T01:06:21.717406" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T01:06:21.716983" elapsed="0.000501">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-08T01:06:21.717578" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T01:06:21.716600" elapsed="0.001004"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T01:06:21.717940" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:06:21.717676" elapsed="0.000322"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:06:21.718650" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:06:21.718239" elapsed="0.000440"/>
</kw>
<status status="PASS" start="2026-04-08T01:06:21.718022" elapsed="0.000694"/>
</branch>
<status status="PASS" start="2026-04-08T01:06:21.717658" elapsed="0.001079"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:06:21.721287" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:06:21.718890" elapsed="0.002424"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-08T01:06:21.721365" elapsed="0.000031"/>
</return>
<msg time="2026-04-08T01:06:21.721519" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T01:06:21.716257" elapsed="0.005287"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T01:06:21.722869" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T01:06:21.722530" elapsed="0.000402">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-08T01:06:21.723025" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T01:06:21.722188" elapsed="0.000862"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-08T01:06:21.723275" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-08T01:06:21.723121" elapsed="0.000214"/>
</branch>
<status status="PASS" start="2026-04-08T01:06:21.723103" elapsed="0.000255"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T01:06:21.723504" elapsed="0.000021"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-08T01:06:21.723675" elapsed="0.000021"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-08T01:06:21.723740" elapsed="0.000014"/>
</return>
<msg time="2026-04-08T01:06:21.725661" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T01:06:21.721840" elapsed="0.003847"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:06:21.727134" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:06:21.726880" elapsed="0.000316"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:06:21.727597" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:06:21.727352" elapsed="0.000288"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T01:06:21.786652" level="INFO">GET Request : url=http://10.30.170.48:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 path_url=/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01s3bfo0y24i1es90l47mavglv0.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T01:06:21.786760" level="INFO">GET Response : url=http://10.30.170.48:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 status=401, reason=Unauthorized 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '414'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 401 Unauthorized&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 401 Unauthorized&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/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;401&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Unauthorized&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-04-08T01:06:21.787116" level="FAIL">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.170.48: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-04-08T01:06:21.729767" elapsed="0.057924">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.170.48:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<status status="FAIL" start="2026-04-08T01:06:21.727707" elapsed="0.060106">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.170.48: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-04-08T01:06:21.788104" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:06:21.787880" elapsed="0.000339"/>
</branch>
<status status="FAIL" start="2026-04-08T01:06:21.727689" elapsed="0.060565">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.170.48: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-04-08T01:06:21.788979" elapsed="0.000037"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T01:06:21.789188" elapsed="0.000021"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:06:21.789116" elapsed="0.000132"/>
</branch>
<status status="NOT RUN" start="2026-04-08T01:06:21.789092" elapsed="0.000186"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-08T01:06:21.789485" elapsed="0.000030"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-08T01:06:21.789581" elapsed="0.000020"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-08T01:06:21.726039" elapsed="0.063691">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.170.48:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-08T01:06:21.789833" elapsed="0.000020"/>
</return>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="FAIL" start="2026-04-08T01:06:21.573959" elapsed="0.216005">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.170.48: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-04-08T01:06:21.790371" elapsed="0.000033"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:06:21.790094" elapsed="0.000377"/>
</branch>
<status status="NOT RUN" start="2026-04-08T01:06:21.790072" elapsed="0.000431"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-08T01:06:21.790548" elapsed="0.000019"/>
</return>
<arg>session=${session}</arg>
<arg>folder=${RESTCONF_MODULES_DIR}</arg>
<arg>verify=False</arg>
<doc>Add arguments sensible for JSON data, return Get_Templated response text.
Optionally, verification against JSON data (may be iterated) is called.
Only subset of JSON data is verified and returned if JMES path is specified in
file ${folder}/jmespath.expr.</doc>
<status status="FAIL" start="2026-04-08T01:06:21.567295" elapsed="0.223392">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.170.48:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<var name="${index}">1</var>
<status status="FAIL" start="2026-04-08T01:06:21.561769" elapsed="0.229010">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.170.48:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-04-08T01:06:21.561572" elapsed="0.229337">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.170.48:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</for>
<arg>${member_index_list}</arg>
<status status="FAIL" start="2026-04-08T01:06:21.558011" elapsed="0.233035">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.170.48:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<status status="FAIL" start="2026-04-08T01:06:21.557636" elapsed="0.233486">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.170.48:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</branch>
<status status="FAIL" start="2026-04-08T01:06:21.557611" elapsed="0.233576">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.170.48:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</if>
<if>
<branch type="IF" condition="${verify_system_status} and (&quot;${service_list}&quot; != &quot;[[]]&quot;)">
<kw name="Check Status Of Services Is OPERATIONAL" owner="ClusterManagement">
<arg>@{service_list}</arg>
<doc>This keyword will verify whether all the services are operational in all the ODL nodes</doc>
<status status="NOT RUN" start="2026-04-08T01:06:21.791594" elapsed="0.000033"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:06:21.791285" elapsed="0.000388"/>
</branch>
<status status="NOT RUN" start="2026-04-08T01:06:21.791262" elapsed="0.000443"/>
</if>
<arg>${member_index_list}</arg>
<arg>${wait_for_sync}</arg>
<arg>${verify_restconf}</arg>
<arg>${check_system_status}</arg>
<arg>${service_list}</arg>
<doc>Verifies the specified readiness conditions for the given listed members after startup.
If ${verify_cluster_sync}, verifies the datastores have synced with the rest of the cluster.
If True, verifies RESTCONF is available.
If ${verify_system_status}, verifies the system services are OPERATIONAL.</doc>
<status status="FAIL" start="2026-04-08T01:06:21.556146" elapsed="0.235667">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.170.48:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<kw name="Verify_Members_Are_Ready" owner="ClusterManagement">
<if>
<branch type="IF" condition="${verify_cluster_sync}">
<kw name="Check_Cluster_Is_In_Sync" owner="ClusterManagement">
<arg>${member_index_list}</arg>
<doc>Fail if no-sync is detected on a member from list (or any).</doc>
<status status="NOT RUN" start="2026-04-08T01:06:31.807360" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:06:31.806978" elapsed="0.000458"/>
</branch>
<status status="PASS" start="2026-04-08T01:06:31.806948" elapsed="0.000515"/>
</if>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Verify_Restconf_Is_Available" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:06:31.809119" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:06:31.808651" elapsed="0.000497"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:06:31.809646" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:06:31.809333" elapsed="0.000339"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T01:06:31.809720" elapsed="0.000036"/>
</return>
<msg time="2026-04-08T01:06:31.809885" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T01:06:31.808193" elapsed="0.001717"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:06:31.810939" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:06:31.810643" elapsed="0.000323"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T01:06:31.811012" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T01:06:31.811161" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T01:06:31.810292" elapsed="0.000908"/>
</kw>
<kw name="Get_As_Json_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:06:31.904409" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:06:31.903491" elapsed="0.001023"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T01:06:31.905696" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T01:06:31.905438" elapsed="0.000335">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-08T01:06:31.905965" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T01:06:31.904780" elapsed="0.001282"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:06:31.907497" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:06:31.906373" elapsed="0.001223"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T01:06:31.908188" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-08T01:06:31.908538" level="INFO">${template} = /rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T01:06:31.907835" elapsed="0.000801"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:06:31.909416" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:06:31.908865" elapsed="0.000692"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:06:31.911571" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:06:31.911296" elapsed="0.000321"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-08T01:06:31.912051" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-08T01:06:31.911783" elapsed="0.000294"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-04-08T01:06:31.912534" elapsed="0.000022"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-04-08T01:06:31.912739" elapsed="0.000024"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-04-08T01:06:31.912915" elapsed="0.000021"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-08T01:06:31.912397" elapsed="0.000574"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-08T01:06:31.912130" elapsed="0.000873"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-08T01:06:31.913050" elapsed="0.000034"/>
</return>
<msg time="2026-04-08T01:06:31.913386" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-08T01:06:31.910767" elapsed="0.002653"/>
</kw>
<status status="PASS" start="2026-04-08T01:06:31.909678" elapsed="0.003788"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T01:06:31.913843" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:06:31.913553" elapsed="0.000375"/>
</branch>
<status status="PASS" start="2026-04-08T01:06:31.909639" elapsed="0.004372"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:06:31.915129" level="INFO">${final_text} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:06:31.914236" elapsed="0.001009"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T01:06:31.915321" elapsed="0.000030"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="PASS" start="2026-04-08T01:06:31.902110" elapsed="0.013467"/>
</kw>
<msg time="2026-04-08T01:06:31.915634" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:06:31.850282" elapsed="0.065407"/>
</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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T01:06:31.928390" elapsed="0.000029"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T01:06:31.940671" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T01:06:31.952996" elapsed="0.000030"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:06:31.953216" elapsed="0.000023"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T01:06:31.953398" elapsed="0.000021"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:06:31.953855" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:06:31.953705" elapsed="0.000338"/>
</branch>
<status status="NOT RUN" start="2026-04-08T01:06:31.953690" elapsed="0.000381"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T01:06:31.954244" elapsed="0.000022"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T01:06:31.954419" elapsed="0.000020"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:06:31.954592" elapsed="0.000021"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-08T01:06:31.953656" elapsed="0.000991"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-08T01:06:31.953517" elapsed="0.001157"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-08T01:06:31.954823" elapsed="0.000020"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-08T01:06:31.954898" elapsed="0.000016"/>
</return>
<msg time="2026-04-08T01:06:31.955016" level="INFO">${uri} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-08T01:06:31.845780" elapsed="0.109262"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T01:06:31.956482" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T01:06:31.956094" elapsed="0.000461">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-08T01:06:31.956648" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T01:06:31.955747" elapsed="0.000926"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T01:06:31.956995" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:06:31.956744" elapsed="0.000308"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:06:31.957686" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:06:31.957278" elapsed="0.000435"/>
</kw>
<status status="PASS" start="2026-04-08T01:06:31.957075" elapsed="0.000675"/>
</branch>
<status status="PASS" start="2026-04-08T01:06:31.956724" elapsed="0.001048"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:06:31.960156" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:06:31.957927" elapsed="0.002272"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-08T01:06:31.960254" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T01:06:31.960410" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T01:06:31.955388" elapsed="0.005047"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T01:06:31.961784" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T01:06:31.961438" elapsed="0.000410">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-08T01:06:31.961943" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T01:06:31.961068" elapsed="0.000900"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-08T01:06:31.962195" elapsed="0.000028"/>
</return>
<status status="PASS" start="2026-04-08T01:06:31.962040" elapsed="0.000217"/>
</branch>
<status status="PASS" start="2026-04-08T01:06:31.962022" elapsed="0.000259"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T01:06:31.962430" elapsed="0.000022"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-08T01:06:31.962604" elapsed="0.000021"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-08T01:06:31.962707" elapsed="0.000016"/>
</return>
<msg time="2026-04-08T01:06:31.964819" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T01:06:31.960740" elapsed="0.004107"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:06:31.966263" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:06:31.965990" elapsed="0.000322"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:06:31.966720" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:06:31.966471" elapsed="0.000294"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T01:06:31.973344" level="INFO">GET Request : url=http://10.30.170.48:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 path_url=/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01s3bfo0y24i1es90l47mavglv0.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T01:06:31.973419" level="INFO">GET Response : url=http://10.30.170.48:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 status=401, reason=Unauthorized 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '414'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 401 Unauthorized&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 401 Unauthorized&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/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;401&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Unauthorized&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-04-08T01:06:31.973552" level="FAIL">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.170.48: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-04-08T01:06:31.968925" elapsed="0.005018">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.170.48:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<status status="FAIL" start="2026-04-08T01:06:31.966834" elapsed="0.007194">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.170.48: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-04-08T01:06:31.974235" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:06:31.974060" elapsed="0.000243"/>
</branch>
<status status="FAIL" start="2026-04-08T01:06:31.966815" elapsed="0.007512">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.170.48: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-04-08T01:06:31.974836" elapsed="0.000026"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T01:06:31.974971" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:06:31.974935" elapsed="0.000076"/>
</branch>
<status status="NOT RUN" start="2026-04-08T01:06:31.974918" elapsed="0.000115"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-08T01:06:31.975198" elapsed="0.000022"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-08T01:06:31.975269" elapsed="0.000015"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-08T01:06:31.965159" elapsed="0.010215">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.170.48:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-08T01:06:31.975449" elapsed="0.000015"/>
</return>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="FAIL" start="2026-04-08T01:06:31.821252" elapsed="0.154292">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.170.48: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-04-08T01:06:31.975835" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:06:31.975636" elapsed="0.000271"/>
</branch>
<status status="NOT RUN" start="2026-04-08T01:06:31.975620" elapsed="0.000310"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-08T01:06:31.975962" elapsed="0.000014"/>
</return>
<arg>session=${session}</arg>
<arg>folder=${RESTCONF_MODULES_DIR}</arg>
<arg>verify=False</arg>
<doc>Add arguments sensible for JSON data, return Get_Templated response text.
Optionally, verification against JSON data (may be iterated) is called.
Only subset of JSON data is verified and returned if JMES path is specified in
file ${folder}/jmespath.expr.</doc>
<status status="FAIL" start="2026-04-08T01:06:31.815072" elapsed="0.160986">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.170.48:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<var name="${index}">1</var>
<status status="FAIL" start="2026-04-08T01:06:31.810105" elapsed="0.166061">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.170.48:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-04-08T01:06:31.809965" elapsed="0.166327">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.170.48:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</for>
<arg>${member_index_list}</arg>
<status status="FAIL" start="2026-04-08T01:06:31.807776" elapsed="0.168607">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.170.48:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<status status="FAIL" start="2026-04-08T01:06:31.807520" elapsed="0.168916">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.170.48:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</branch>
<status status="FAIL" start="2026-04-08T01:06:31.807504" elapsed="0.168962">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.170.48:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</if>
<if>
<branch type="IF" condition="${verify_system_status} and (&quot;${service_list}&quot; != &quot;[[]]&quot;)">
<kw name="Check Status Of Services Is OPERATIONAL" owner="ClusterManagement">
<arg>@{service_list}</arg>
<doc>This keyword will verify whether all the services are operational in all the ODL nodes</doc>
<status status="NOT RUN" start="2026-04-08T01:06:31.976752" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:06:31.976532" elapsed="0.000276"/>
</branch>
<status status="NOT RUN" start="2026-04-08T01:06:31.976516" elapsed="0.000315"/>
</if>
<arg>${member_index_list}</arg>
<arg>${wait_for_sync}</arg>
<arg>${verify_restconf}</arg>
<arg>${check_system_status}</arg>
<arg>${service_list}</arg>
<doc>Verifies the specified readiness conditions for the given listed members after startup.
If ${verify_cluster_sync}, verifies the datastores have synced with the rest of the cluster.
If True, verifies RESTCONF is available.
If ${verify_system_status}, verifies the system services are OPERATIONAL.</doc>
<status status="FAIL" start="2026-04-08T01:06:31.806435" elapsed="0.170473">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.170.48:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<kw name="Verify_Members_Are_Ready" owner="ClusterManagement">
<if>
<branch type="IF" condition="${verify_cluster_sync}">
<kw name="Check_Cluster_Is_In_Sync" owner="ClusterManagement">
<arg>${member_index_list}</arg>
<doc>Fail if no-sync is detected on a member from list (or any).</doc>
<status status="NOT RUN" start="2026-04-08T01:06:41.993288" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:06:41.992921" elapsed="0.000443"/>
</branch>
<status status="PASS" start="2026-04-08T01:06:41.992896" elapsed="0.000497"/>
</if>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Verify_Restconf_Is_Available" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:06:41.994978" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:06:41.994529" elapsed="0.000477"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:06:41.995512" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:06:41.995190" elapsed="0.000366"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T01:06:41.995606" elapsed="0.000036"/>
</return>
<msg time="2026-04-08T01:06:41.995773" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T01:06:41.994090" elapsed="0.001708"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:06:41.997104" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:06:41.996529" elapsed="0.000604"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T01:06:41.997197" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T01:06:41.997348" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T01:06:41.996178" elapsed="0.001195"/>
</kw>
<kw name="Get_As_Json_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:06:42.087642" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:06:42.086880" elapsed="0.000860"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T01:06:42.088929" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T01:06:42.088674" elapsed="0.000332">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-08T01:06:42.089212" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T01:06:42.087999" elapsed="0.001309"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:06:42.090408" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:06:42.089566" elapsed="0.000998"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T01:06:42.091142" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-08T01:06:42.091470" level="INFO">${template} = /rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T01:06:42.090806" elapsed="0.000759"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:06:42.092397" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:06:42.091795" elapsed="0.000741"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:06:42.094142" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:06:42.093874" elapsed="0.000331"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-08T01:06:42.094639" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-08T01:06:42.094369" elapsed="0.000296"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-04-08T01:06:42.094987" elapsed="0.000021"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-04-08T01:06:42.095209" elapsed="0.000024"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-04-08T01:06:42.095387" elapsed="0.000020"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-08T01:06:42.094850" elapsed="0.000593"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-08T01:06:42.094713" elapsed="0.000761"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-08T01:06:42.095516" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T01:06:42.095821" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-08T01:06:42.093384" elapsed="0.002471"/>
</kw>
<status status="PASS" start="2026-04-08T01:06:42.092646" elapsed="0.003254"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T01:06:42.096377" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:06:42.095986" elapsed="0.000477"/>
</branch>
<status status="PASS" start="2026-04-08T01:06:42.092613" elapsed="0.003932"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:06:42.097622" level="INFO">${final_text} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:06:42.096751" elapsed="0.000967"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T01:06:42.097793" elapsed="0.000030"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="PASS" start="2026-04-08T01:06:42.085800" elapsed="0.012245"/>
</kw>
<msg time="2026-04-08T01:06:42.098101" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:06:42.033950" elapsed="0.064201"/>
</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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T01:06:42.110965" 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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T01:06:42.123501" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T01:06:42.135819" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:06:42.136057" elapsed="0.000023"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T01:06:42.136252" elapsed="0.000023"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:06:42.136690" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:06:42.136538" elapsed="0.000337"/>
</branch>
<status status="NOT RUN" start="2026-04-08T01:06:42.136524" elapsed="0.000378"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T01:06:42.137052" elapsed="0.000022"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T01:06:42.137253" elapsed="0.000022"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:06:42.137426" elapsed="0.000021"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-08T01:06:42.136492" elapsed="0.000993"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-08T01:06:42.136353" elapsed="0.001158"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-08T01:06:42.137659" elapsed="0.000020"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-08T01:06:42.137734" elapsed="0.000015"/>
</return>
<msg time="2026-04-08T01:06:42.137850" level="INFO">${uri} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-08T01:06:42.029604" elapsed="0.108271"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T01:06:42.139255" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T01:06:42.138891" elapsed="0.000430">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-08T01:06:42.139412" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T01:06:42.138546" elapsed="0.000891"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T01:06:42.139757" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:06:42.139507" elapsed="0.000306"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:06:42.140522" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:06:42.140024" elapsed="0.000526"/>
</kw>
<status status="PASS" start="2026-04-08T01:06:42.139837" elapsed="0.000750"/>
</branch>
<status status="PASS" start="2026-04-08T01:06:42.139489" elapsed="0.001120"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:06:42.142984" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:06:42.140766" elapsed="0.002245"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-08T01:06:42.143063" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T01:06:42.143235" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T01:06:42.138217" elapsed="0.005043"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T01:06:42.144622" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T01:06:42.144250" elapsed="0.000436">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-08T01:06:42.144779" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T01:06:42.143891" elapsed="0.000912"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-08T01:06:42.145011" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-08T01:06:42.144875" elapsed="0.000195"/>
</branch>
<status status="PASS" start="2026-04-08T01:06:42.144857" elapsed="0.000236"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T01:06:42.145258" elapsed="0.000057"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-08T01:06:42.145473" elapsed="0.000021"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-08T01:06:42.145539" elapsed="0.000015"/>
</return>
<msg time="2026-04-08T01:06:42.147619" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T01:06:42.143563" elapsed="0.004085"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:06:42.149053" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:06:42.148802" elapsed="0.000297"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:06:42.149532" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:06:42.149281" elapsed="0.000295"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T01:06:43.172487" level="INFO">GET Request : url=http://10.30.170.48:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 path_url=/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01s3bfo0y24i1es90l47mavglv0.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T01:06:43.173545" level="INFO">GET Response : url=http://10.30.170.48:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 status=200, reason=OK 
 headers={'Set-Cookie': 'JSESSIONID=node01s3bfo0y24i1es90l47mavglv0.node0; Path=/rests; HttpOnly, rememberMe=deleteMe; Path=/rests; Max-Age=0; Expires=Tue, 07-Apr-2026 01:06:43 GMT; SameSite=lax', 'Expires': 'Thu, 01 Jan 1970 00:00:00 GMT', 'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Transfer-Encoding': 'chunked'} 
 body={"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","cms-enveloped-data-format","encrypted-passwords","hidden-symmetric-keys","csr-generation","encrypted-private-keys","asymmetrically-encrypted-value-format","cleartext-private-keys","cms-encrypted-data-format","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","ssh-server-keepalives","local-user-auth-hostbased"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["ssh-client-keepalives","client-ident-hostbased","client-ident-publickey","client-ident-password"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-supported","client-auth-x509-cert"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-ex... (set the log level to DEBUG or TRACE to see the full content) 
 </msg>
<msg time="2026-04-08T01:06:43.174241" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T01:06:42.151786" elapsed="1.022527"/>
</kw>
<status status="PASS" start="2026-04-08T01:06:42.149644" elapsed="1.024782"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T01:06:43.174779" elapsed="0.000035"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:06:43.174479" elapsed="0.000398"/>
</branch>
<status status="PASS" start="2026-04-08T01:06:42.149625" elapsed="1.025283"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:06:43.181027" level="INFO">{"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","cms-enveloped-data-format","encrypted-passwords","hidden-symmetric-keys","csr-generation","encrypted-private-keys","asymmetrically-encrypted-value-format","cleartext-private-keys","cms-encrypted-data-format","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","ssh-server-keepalives","local-user-auth-hostbased"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["ssh-client-keepalives","client-ident-hostbased","client-ident-publickey","client-ident-password"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-supported","client-auth-x509-cert"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-experimenter-types?revision=2015-10-20","namespace":"urn:opendaylight:openflowplugin:experimenter:types","conformance-type":"import"},{"name":"ietf-ip_2018-02-22","revision":"2018-02-22","schema":"/rests/modules/ietf-ip?revision=2018-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-ip","conformance-type":"import","feature":["ipv6-privacy-autoconf","ipv4-non-contiguous-netmasks"]},{"name":"ietf-tcp-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-client","conformance-type":"import","feature":["local-binding-supported","tcp-client-keepalives"]},{"name":"node-config_2014-10-15","revision":"2014-10-15","schema":"/rests/modules/node-config?revision=2014-10-15","namespace":"urn:opendaylight:module:config","conformance-type":"import"},{"name":"ietf-restconf_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf","conformance-type":"import"},{"name":"ietf-datastores_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-datastores?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-datastores","conformance-type":"import"},{"name":"ietf-yang-patch_2017-02-22","revision":"2017-02-22","schema":"/rests/modules/ietf-yang-patch?revision=2017-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-patch","conformance-type":"import"},{"name":"sal-group_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-group?revision=2013-09-18","namespace":"urn:opendaylight:group:service","conformance-type":"import"},{"name":"odl-codegen-extensions_2024-06-27","revision":"2024-06-27","schema":"/rests/modules/odl-codegen-extensions?revision=2024-06-27","namespace":"urn:opendaylight:yang:extension:codegen","conformance-type":"import"},{"name":"sal-meter_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-meter?revision=2013-09-18","namespace":"urn:opendaylight:meter:service","conformance-type":"import"},{"name":"ietf-interfaces_2018-02-20","revision":"2018-02-20","schema":"/rests/modules/ietf-interfaces?revision=2018-02-20","namespace":"urn:ietf:params:xml:ns:yang:ietf-interfaces","conformance-type":"import","feature":["pre-provisioning","if-mib","arbitrary-names"]},{"name":"opendaylight-l2-types_2013-08-27","revision":"2013-08-27","schema":"/rests/modules/opendaylight-l2-types?revision=2013-08-27","namespace":"urn:opendaylight:l2:types","conformance-type":"import"},{"name":"opendaylight-flow-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-flow-types?revision=2013-10-26","namespace":"urn:opendaylight:flow:types","conformance-type":"import"},{"name":"lldp-speaker-config_2016-05-12","revision":"2016-05-12","schema":"/rests/modules/lldp-speaker-config?revision=2016-05-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker:config","conformance-type":"import"},{"name":"aaa-cert_2015-11-26","revision":"2015-11-26","schema":"/rests/modules/aaa-cert?revision=2015-11-26","namespace":"urn:opendaylight:yang:aaa:cert","conformance-type":"import"},{"name":"openflow-action_2015-02-03","revision":"2015-02-03","schema":"/rests/modules/openflow-action?revision=2015-02-03","namespace":"urn:opendaylight:openflow:common:action","conformance-type":"import"},{"name":"openflow-approved-extensions_2016-08-02","revision":"2016-08-02","schema":"/rests/modules/openflow-approved-extensions?revision=2016-08-02","namespace":"urn:opendaylight:openflow:approved:extensions","conformance-type":"import"},{"name":"nc-notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/nc-notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netmod:notification","conformance-type":"import"},{"name":"ietf-netconf-nmda_2019-01-07","revision":"2019-01-07","schema":"/rests/modules/ietf-netconf-nmda?revision=2019-01-07","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-nmda","conformance-type":"import","feature":["with-defaults","origin"]},{"name":"ietf-tcp-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-common","conformance-type":"import","feature":["keepalives-supported"]},{"name":"network-topology_2013-10-21","revision":"2013-10-21","schema":"/rests/modules/network-topology?revision=2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:network-topology","conformance-type":"import"},{"name":"aaa-encrypt-service-config_2024-02-02","revision":"2024-02-02","schema":"/rests/modules/aaa-encrypt-service-config?revision=2024-02-02","namespace":"config:aaa:authn:encrypt:service:config","conformance-type":"import"},{"name":"openflow-instruction_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-instruction?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:instruction","conformance-type":"import"},{"name":"ietf-tls-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-client","conformance-type":"import","feature":["client-ident-x509-cert","server-auth-x509-cert"]},{"name":"opendaylight-group-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-group-statistics?revision=2013-11-11","namespace":"urn:opendaylight:group:statistics","conformance-type":"import"},{"name":"cluster-admin_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/cluster-admin?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:cluster:admin","conformance-type":"import"},{"name":"opendaylight-flow-statistics_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-flow-statistics?revision=2013-08-19","namespace":"urn:opendaylight:flow:statistics","conformance-type":"import"},{"name":"opendaylight-table-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-table-types?revision=2013-10-26","namespace":"urn:opendaylight:table:types","conformance-type":"import"},{"name":"forwarding-rules-manager-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/forwarding-rules-manager-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:forwardingrules-manager:config","conformance-type":"import"},{"name":"odl-srm-types_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-types?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:types","conformance-type":"import"},{"name":"ietf-x509-cert-to-name_2014-12-10","revision":"2014-12-10","schema":"/rests/modules/ietf-x509-cert-to-name?revision=2014-12-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-x509-cert-to-name","conformance-type":"import"},{"name":"flow-node-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-node-inventory?revision=2013-08-19","namespace":"urn:opendaylight:flow:inventory","conformance-type":"import"},{"name":"flow-errors_2013-11-16","revision":"2013-11-16","schema":"/rests/modules/flow-errors?revision=2013-11-16","namespace":"urn:opendaylight:flow:errors","conformance-type":"import"},{"name":"ietf-netconf_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:netconf:base:1.0","conformance-type":"import","feature":["xpath","url","rollback-on-error","validate","startup","candidate","confirmed-commit","writable-running"]},{"name":"iana-ssh-public-key-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-public-key-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-public-key-algs","conformance-type":"import"},{"name":"aaa-cert-mdsal_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/aaa-cert-mdsal?revision=2016-03-21","namespace":"urn:opendaylight:yang:aaa:cert:mdsal","conformance-type":"import"},{"name":"odl-device-notification_2024-02-18","revision":"2024-02-18","schema":"/rests/modules/odl-device-notification?revision=2024-02-18","namespace":"urn:opendaylight:device:notification","conformance-type":"import"},{"name":"ietf-origin_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-origin?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-origin","conformance-type":"import"},{"name":"openflow-augments_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-augments?revision=2015-02-25","namespace":"urn:opendaylight:openflow:augments","conformance-type":"import"},{"name":"iana-ssh-encryption-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-encryption-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-encryption-algs","conformance-type":"import"},{"name":"ietf-truststore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-truststore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-truststore","conformance-type":"import","feature":["inline-definitions-supported"]},{"name":"distributed-datastore-provider_2025-01-30","revision":"2025-01-30","schema":"/rests/modules/distributed-datastore-provider?revision=2025-01-30","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:distributed-datastore-provider","conformance-type":"import"},{"name":"opendaylight-group-types_2013-10-18","revision":"2013-10-18","schema":"/rests/modules/opendaylight-group-types?revision=2013-10-18","namespace":"urn:opendaylight:group:types","conformance-type":"import"},{"name":"sal-remote-augment_2023-11-03","revision":"2023-11-03","schema":"/rests/modules/sal-remote-augment?revision=2023-11-03","namespace":"urn:sal:restconf:event:subscription","conformance-type":"import"},{"name":"opendaylight-ipv6-arbitrary-bitmask-fields_2016-02-24","revision":"2016-02-24","schema":"/rests/modules/opendaylight-ipv6-arbitrary-bitmask-fields?revision=2016-02-24","namespace":"urn:opendaylight:opendaylight-ipv6-arbitrary-bitmask-fields","conformance-type":"import"},{"name":"sal-flows-batch_2016-03-14","revision":"2016-03-14","schema":"/rests/modules/sal-flows-batch?revision=2016-03-14","namespace":"urn:opendaylight:flows:service","conformance-type":"import"},{"name":"ietf-tls-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-common","conformance-type":"import","feature":["tls12","hello-params","tls13"]},{"name":"openflow-types_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-types?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:types","conformance-type":"import"},{"name":"ietf-netconf-with-defaults_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf-with-defaults?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults","conformance-type":"import"},{"name":"odl-srm-ops_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-ops?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:ops","conformance-type":"import"},{"name":"odl-general-entity_2015-09-30","revision":"2015-09-30","schema":"/rests/modules/odl-general-entity?revision=2015-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:mdsal:core:general-entity","conformance-type":"import"},{"name":"iana-ssh-key-exchange-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-key-exchange-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-key-exchange-algs","conformance-type":"import"},{"name":"node-ssl-connection-error_2019-07-23","revision":"2019-07-23","schema":"/rests/modules/node-ssl-connection-error?revision=2019-07-23","namespace":"urn:opendaylight:node-ssl-connection-error:service","conformance-type":"import"},{"name":"openflow-protocol_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-protocol?revision=2013-07-31","namespace":"urn:opendaylight:openflow:protocol","conformance-type":"import"},{"name":"ietf-udp-server_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-server?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-server","conformance-type":"import"},{"name":"ietf-keystore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-keystore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-keystore","conformance-type":"import","feature":["asymmetric-keys","inline-definitions-supported"]},{"name":"aaa_2016-12-14","revision":"2016-12-14","schema":"/rests/modules/aaa?revision=2016-12-14","namespace":"urn:opendaylight:params:xml:ns:yang:aaa","conformance-type":"import"},{"name":"aaa-cert-rpc_2015-12-15","revision":"2015-12-15","schema":"/rests/modules/aaa-cert-rpc?revision=2015-12-15","namespace":"urn:opendaylight:yang:aaa:cert:rpc","conformance-type":"import"},{"name":"system-notifications_2013-09-27","revision":"2013-09-27","schema":"/rests/modules/system-notifications?revision=2013-09-27","namespace":"urn:opendaylight:openflow:system","conformance-type":"import"},{"name":"sal-flat-batch_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/sal-flat-batch?revision=2016-03-21","namespace":"urn:opendaylight:flat-batch:service","conformance-type":"import"},{"name":"notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netconf:notification:1.0","conformance-type":"import"},{"name":"sal-remote_2014-01-14","revision":"2014-01-14","schema":"/rests/modules/sal-remote?revision=2014-01-14","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:remote","conformance-type":"import"},{"name":"yang-ext_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/yang-ext?revision=2013-07-09","namespace":"urn:opendaylight:yang:extension:yang-ext","conformance-type":"import"},{"name":"opendaylight-multipart-types_2017-01-12","revision":"2017-01-12","schema":"/rests/modules/opendaylight-multipart-types?revision=2017-01-12","namespace":"urn:opendaylight:multipart:types","conformance-type":"import"},{"name":"opendaylight-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-inventory?revision=2013-08-19","namespace":"urn:opendaylight:inventory","conformance-type":"import"},{"name":"sal-queue_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-queue?revision=2015-03-05","namespace":"urn:opendaylight:queue:service","conformance-type":"import"},{"name":"sal-groups-batch_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/sal-groups-batch?revision=2016-03-15","namespace":"urn:opendaylight:groups:service","conformance-type":"import"},{"name":"arbitrator-reconcile_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/arbitrator-reconcile?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:arbitrator-reconcile:service","conformance-type":"import"},{"name":"ietf-yang-metadata_2016-08-05","revision":"2016-08-05","schema":"/rests/modules/ietf-yang-metadata?revision=2016-08-05","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-metadata","conformance-type":"import"},{"name":"opendaylight-arbitrary-bitmask-fields_2016-01-30","revision":"2016-01-30","schema":"/rests/modules/opendaylight-arbitrary-bitmask-fields?revision=2016-01-30","namespace":"urn:opendaylight:arbitrary:bitmask:fields","conformance-type":"import"},{"name":"ietf-udp-client_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-client?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-client","conformance-type":"import","feature":["local-binding"]},{"name":"opendaylight-meter-types_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/opendaylight-meter-types?revision=2013-09-18","namespace":"urn:opendaylight:meter:types","conformance-type":"import"},{"name":"opendaylight-action-types_2013-11-12","revision":"2013-11-12","schema":"/rests/modules/opendaylight-action-types?revision=2013-11-12","namespace":"urn:opendaylight:action:types","conformance-type":"import"},{"name":"sal-role_2015-07-27","revision":"2015-07-27","schema":"/rests/modules/sal-role?revision=2015-07-27","namespace":"urn:opendaylight:role:service","conformance-type":"import"},{"name":"openflow-provider-config_2016-05-10","revision":"2016-05-10","schema":"/rests/modules/openflow-provider-config?revision=2016-05-10","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:provider:config","conformance-type":"import"},{"name":"odl-serviceutils-upgrade_2018-07-02","revision":"2018-07-02","schema":"/rests/modules/odl-serviceutils-upgrade?revision=2018-07-02","namespace":"urn:opendaylight:serviceutils:upgrade","conformance-type":"import"},{"name":"opendaylight-match-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-match-types?revision=2013-10-26","namespace":"urn:opendaylight:model:match:types","conformance-type":"import"},{"name":"ietf-restconf-server_2024-08-14","revision":"2024-08-14","schema":"/rests/modules/ietf-restconf-server?revision=2024-08-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-server","conformance-type":"import","feature":["http-listen","https-listen"]},{"name":"reconciliation-result-state_2017-07-13","revision":"2017-07-13","schema":"/rests/modules/reconciliation-result-state?revision=2017-07-13","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:rf:state","conformance-type":"import"},{"name":"onf-extensions_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/onf-extensions?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf","conformance-type":"import"},{"name":"sal-table_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/sal-table?revision=2013-10-26","namespace":"urn:opendaylight:table:service","conformance-type":"import"},{"name":"iana-http-versions_2026-02-04","revision":"2026-02-04","schema":"/rests/modules/iana-http-versions?revision=2026-02-04","namespace":"urn:ietf:params:xml:ns:yang:iana-http-versions","conformance-type":"import"},{"name":"opendaylight-direct-statistics_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/opendaylight-direct-statistics?revision=2016-05-11","namespace":"urn:opendaylight:direct:statistics","conformance-type":"import"},{"name":"opendaylight-port-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-port-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:port","conformance-type":"import"},{"name":"sal-async-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/sal-async-config?revision=2017-06-19","namespace":"urn:opendaylight:async-config:service","conformance-type":"import"},{"name":"aaa-password-service-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-password-service-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:password:service:config","conformance-type":"import"},{"name":"ietf-yang-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-yang-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-types","conformance-type":"import"},{"name":"opendaylight-queue-statistics_2013-12-16","revision":"2013-12-16","schema":"/rests/modules/opendaylight-queue-statistics?revision=2013-12-16","namespace":"urn:opendaylight:queue:statistics","conformance-type":"import"},{"name":"sal-bundle_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/sal-bundle?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf:bundle:service","conformance-type":"import"},{"name":"ietf-restconf-subscribed-notifications_2019-11-17","revision":"2019-11-17","schema":"/rests/modules/ietf-restconf-subscribed-notifications?revision=2019-11-17","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-subscribed-notifications","conformance-type":"import"},{"name":"sal-meters-batch_2016-03-16","revision":"2016-03-16","schema":"/rests/modules/sal-meters-batch?revision=2016-03-16","namespace":"urn:opendaylight:meters:service","conformance-type":"import"},{"name":"odl-entity-owners","revision":"","schema":"/rests/modules/odl-entity-owners","namespace":"urn:opendaylight:params:xml:ns:yang:controller:entity-owners","conformance-type":"import"},{"name":"sal-experimenter-mp-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-mp-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-mp-message:service","conformance-type":"import"},{"name":"packet-processing_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/packet-processing?revision=2013-07-09","namespace":"urn:opendaylight:packet:service","conformance-type":"import"},{"name":"openflow-configuration_2014-06-30","revision":"2014-06-30","schema":"/rests/modules/openflow-configuration?revision=2014-06-30","namespace":"urn:opendaylight:openflow:config","conformance-type":"import"},{"name":"odl-srm-rpcs_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-rpcs?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:rpc","conformance-type":"import"},{"name":"ietf-netconf-acm_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-netconf-acm?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-acm","conformance-type":"import"},{"name":"iana-crypt-hash_2014-08-06","revision":"2014-08-06","schema":"/rests/modules/iana-crypt-hash?revision=2014-08-06","namespace":"urn:ietf:params:xml:ns:yang:iana-crypt-hash","conformance-type":"import","feature":["crypt-hash-sha-512","crypt-hash-sha-256","crypt-hash-md5"]},{"name":"openflow-extensible-match_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-extensible-match?revision=2015-02-25","namespace":"urn:opendaylight:openflow:oxm","conformance-type":"import"}],"module-set-id":"2"}}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:06:43.176787" elapsed="0.004777"/>
</kw>
<status status="PASS" start="2026-04-08T01:06:43.176415" elapsed="0.005302"/>
</branch>
<status status="PASS" start="2026-04-08T01:06:43.176384" elapsed="0.005372"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:06:43.184849" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:06:43.182274" elapsed="0.002667"/>
</kw>
<status status="PASS" start="2026-04-08T01:06:43.181842" elapsed="0.003203"/>
</branch>
<status status="PASS" start="2026-04-08T01:06:43.181816" elapsed="0.003256"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:06:43.185864" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:06:43.185276" elapsed="0.000616"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:06:43.186278" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:06:43.185989" elapsed="0.000468"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:06:43.187263" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:06:43.186664" elapsed="0.000680"/>
</kw>
<status status="PASS" start="2026-04-08T01:06:43.186490" elapsed="0.001001"/>
</branch>
<status status="PASS" start="2026-04-08T01:06:43.185968" elapsed="0.001549"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:06:43.188238" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:06:43.187685" elapsed="0.000582"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:06:43.188604" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:06:43.188339" elapsed="0.000437"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:06:43.189565" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:06:43.188971" elapsed="0.000673"/>
</kw>
<status status="PASS" start="2026-04-08T01:06:43.188804" elapsed="0.000989"/>
</branch>
<status status="PASS" start="2026-04-08T01:06:43.188321" elapsed="0.001497"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:06:43.190847" elapsed="0.000705"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T01:06:43.192608" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:06:43.191738" elapsed="0.000898"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T01:06:43.192799" elapsed="0.002952"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T01:06:43.175706" elapsed="0.020114"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T01:06:43.196003" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:06:43.195891" elapsed="0.000159"/>
</branch>
<status status="PASS" start="2026-04-08T01:06:43.195872" elapsed="0.000200"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T01:06:43.213590" level="INFO">${text_normalized} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T01:06:43.196333" elapsed="0.017289"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T01:06:43.213675" elapsed="0.000038"/>
</return>
<msg time="2026-04-08T01:06:43.213846" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T01:06:42.147953" elapsed="1.065919"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T01:06:43.213935" elapsed="0.000027"/>
</return>
<msg time="2026-04-08T01:06:43.214112" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="PASS" start="2026-04-08T01:06:42.007259" elapsed="1.206881"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Json_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="NOT RUN" start="2026-04-08T01:06:43.214504" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:06:43.214242" elapsed="0.000379"/>
</branch>
<status status="PASS" start="2026-04-08T01:06:43.214223" elapsed="0.000423"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T01:06:43.214680" elapsed="0.000026"/>
</return>
<arg>session=${session}</arg>
<arg>folder=${RESTCONF_MODULES_DIR}</arg>
<arg>verify=False</arg>
<doc>Add arguments sensible for JSON data, return Get_Templated response text.
Optionally, verification against JSON data (may be iterated) is called.
Only subset of JSON data is verified and returned if JMES path is specified in
file ${folder}/jmespath.expr.</doc>
<status status="PASS" start="2026-04-08T01:06:42.001286" elapsed="1.213519"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T01:06:41.995995" elapsed="1.218852"/>
</iter>
<iter>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:06:43.215806" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:06:43.215499" elapsed="0.000334"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T01:06:43.215879" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T01:06:43.216028" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>member_index=${index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T01:06:43.215117" elapsed="0.000936"/>
</kw>
<kw name="Get_As_Json_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:06:43.306749" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:06:43.305962" elapsed="0.000886"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T01:06:43.308287" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T01:06:43.308003" elapsed="0.000363">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-08T01:06:43.308556" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T01:06:43.307106" elapsed="0.001544"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:06:43.309746" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:06:43.308907" elapsed="0.000935"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T01:06:43.310427" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-08T01:06:43.310745" level="INFO">${template} = /rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T01:06:43.310076" elapsed="0.000764"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:06:43.311646" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:06:43.311070" elapsed="0.000712"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:06:43.313606" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:06:43.313337" elapsed="0.000313"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-08T01:06:43.314080" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-08T01:06:43.313813" elapsed="0.000293"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-04-08T01:06:43.314455" elapsed="0.000021"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-04-08T01:06:43.314688" elapsed="0.000024"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-04-08T01:06:43.314866" elapsed="0.000021"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-08T01:06:43.314318" elapsed="0.000604"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-08T01:06:43.314175" elapsed="0.000776"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-08T01:06:43.314994" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T01:06:43.315393" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-08T01:06:43.312828" elapsed="0.002598"/>
</kw>
<status status="PASS" start="2026-04-08T01:06:43.311894" elapsed="0.003578"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T01:06:43.315840" elapsed="0.000034"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:06:43.315557" elapsed="0.000365"/>
</branch>
<status status="PASS" start="2026-04-08T01:06:43.311860" elapsed="0.004144"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:06:43.317117" level="INFO">${final_text} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:06:43.316271" elapsed="0.000960"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T01:06:43.317305" elapsed="0.000031"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="PASS" start="2026-04-08T01:06:43.304888" elapsed="0.012671"/>
</kw>
<msg time="2026-04-08T01:06:43.317616" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:06:43.253328" elapsed="0.064339"/>
</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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T01:06:43.330206" 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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T01:06:43.342470" 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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T01:06:43.355063" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:06:43.355282" elapsed="0.000023"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T01:06:43.355470" elapsed="0.000024"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:06:43.355887" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:06:43.355735" elapsed="0.000338"/>
</branch>
<status status="NOT RUN" start="2026-04-08T01:06:43.355720" elapsed="0.000380"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T01:06:43.356275" elapsed="0.000023"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T01:06:43.356453" elapsed="0.000021"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:06:43.356631" elapsed="0.000022"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-08T01:06:43.355689" elapsed="0.000998"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-08T01:06:43.355552" elapsed="0.001161"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-08T01:06:43.356863" elapsed="0.000021"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-08T01:06:43.356939" elapsed="0.000015"/>
</return>
<msg time="2026-04-08T01:06:43.357054" level="INFO">${uri} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-08T01:06:43.249037" elapsed="0.108043"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T01:06:43.358514" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T01:06:43.358148" elapsed="0.000431">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-08T01:06:43.358673" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T01:06:43.357798" elapsed="0.000906"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T01:06:43.359068" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:06:43.358811" elapsed="0.000316"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:06:43.359762" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:06:43.359354" elapsed="0.000440"/>
</kw>
<status status="PASS" start="2026-04-08T01:06:43.359151" elapsed="0.000684"/>
</branch>
<status status="PASS" start="2026-04-08T01:06:43.358764" elapsed="0.001093"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:06:43.362261" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:06:43.360013" elapsed="0.002275"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-08T01:06:43.362340" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T01:06:43.362494" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T01:06:43.357458" elapsed="0.005061"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T01:06:43.363878" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T01:06:43.363527" elapsed="0.000415">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-08T01:06:43.364034" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T01:06:43.363180" elapsed="0.000879"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-08T01:06:43.364296" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-08T01:06:43.364135" elapsed="0.000221"/>
</branch>
<status status="PASS" start="2026-04-08T01:06:43.364113" elapsed="0.000267"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T01:06:43.364527" elapsed="0.000022"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-08T01:06:43.364701" elapsed="0.000020"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-08T01:06:43.364766" elapsed="0.000015"/>
</return>
<msg time="2026-04-08T01:06:43.366705" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T01:06:43.362832" elapsed="0.003899"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:06:43.368149" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:06:43.367899" elapsed="0.000314"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:06:43.368628" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:06:43.368369" elapsed="0.000303"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T01:06:44.348113" level="INFO">GET Request : url=http://10.30.170.131:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 path_url=/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01l7fnm4ypo6vn14692wsih5mir0.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T01:06:44.349194" level="INFO">GET Response : url=http://10.30.170.131:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 status=200, reason=OK 
 headers={'Set-Cookie': 'JSESSIONID=node01l7fnm4ypo6vn14692wsih5mir0.node0; Path=/rests; HttpOnly, rememberMe=deleteMe; Path=/rests; Max-Age=0; Expires=Tue, 07-Apr-2026 01:06:44 GMT; SameSite=lax', 'Expires': 'Thu, 01 Jan 1970 00:00:00 GMT', 'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Transfer-Encoding': 'chunked'} 
 body={"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","cms-enveloped-data-format","encrypted-passwords","hidden-symmetric-keys","csr-generation","encrypted-private-keys","asymmetrically-encrypted-value-format","cleartext-private-keys","cms-encrypted-data-format","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","ssh-server-keepalives","local-user-auth-hostbased"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["ssh-client-keepalives","client-ident-hostbased","client-ident-publickey","client-ident-password"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-supported","client-auth-x509-cert"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-ex... (set the log level to DEBUG or TRACE to see the full content) 
 </msg>
<msg time="2026-04-08T01:06:44.349790" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T01:06:43.371064" elapsed="0.978792"/>
</kw>
<status status="PASS" start="2026-04-08T01:06:43.368739" elapsed="0.981232"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T01:06:44.350499" elapsed="0.000070"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:06:44.350042" elapsed="0.000628"/>
</branch>
<status status="PASS" start="2026-04-08T01:06:43.368721" elapsed="0.981998"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:06:44.358391" level="INFO">{"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","cms-enveloped-data-format","encrypted-passwords","hidden-symmetric-keys","csr-generation","encrypted-private-keys","asymmetrically-encrypted-value-format","cleartext-private-keys","cms-encrypted-data-format","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","ssh-server-keepalives","local-user-auth-hostbased"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["ssh-client-keepalives","client-ident-hostbased","client-ident-publickey","client-ident-password"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-supported","client-auth-x509-cert"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-experimenter-types?revision=2015-10-20","namespace":"urn:opendaylight:openflowplugin:experimenter:types","conformance-type":"import"},{"name":"ietf-ip_2018-02-22","revision":"2018-02-22","schema":"/rests/modules/ietf-ip?revision=2018-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-ip","conformance-type":"import","feature":["ipv6-privacy-autoconf","ipv4-non-contiguous-netmasks"]},{"name":"ietf-tcp-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-client","conformance-type":"import","feature":["local-binding-supported","tcp-client-keepalives"]},{"name":"node-config_2014-10-15","revision":"2014-10-15","schema":"/rests/modules/node-config?revision=2014-10-15","namespace":"urn:opendaylight:module:config","conformance-type":"import"},{"name":"ietf-restconf_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf","conformance-type":"import"},{"name":"ietf-datastores_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-datastores?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-datastores","conformance-type":"import"},{"name":"ietf-yang-patch_2017-02-22","revision":"2017-02-22","schema":"/rests/modules/ietf-yang-patch?revision=2017-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-patch","conformance-type":"import"},{"name":"sal-group_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-group?revision=2013-09-18","namespace":"urn:opendaylight:group:service","conformance-type":"import"},{"name":"odl-codegen-extensions_2024-06-27","revision":"2024-06-27","schema":"/rests/modules/odl-codegen-extensions?revision=2024-06-27","namespace":"urn:opendaylight:yang:extension:codegen","conformance-type":"import"},{"name":"sal-meter_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-meter?revision=2013-09-18","namespace":"urn:opendaylight:meter:service","conformance-type":"import"},{"name":"ietf-interfaces_2018-02-20","revision":"2018-02-20","schema":"/rests/modules/ietf-interfaces?revision=2018-02-20","namespace":"urn:ietf:params:xml:ns:yang:ietf-interfaces","conformance-type":"import","feature":["pre-provisioning","if-mib","arbitrary-names"]},{"name":"opendaylight-l2-types_2013-08-27","revision":"2013-08-27","schema":"/rests/modules/opendaylight-l2-types?revision=2013-08-27","namespace":"urn:opendaylight:l2:types","conformance-type":"import"},{"name":"opendaylight-flow-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-flow-types?revision=2013-10-26","namespace":"urn:opendaylight:flow:types","conformance-type":"import"},{"name":"lldp-speaker-config_2016-05-12","revision":"2016-05-12","schema":"/rests/modules/lldp-speaker-config?revision=2016-05-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker:config","conformance-type":"import"},{"name":"aaa-cert_2015-11-26","revision":"2015-11-26","schema":"/rests/modules/aaa-cert?revision=2015-11-26","namespace":"urn:opendaylight:yang:aaa:cert","conformance-type":"import"},{"name":"openflow-action_2015-02-03","revision":"2015-02-03","schema":"/rests/modules/openflow-action?revision=2015-02-03","namespace":"urn:opendaylight:openflow:common:action","conformance-type":"import"},{"name":"openflow-approved-extensions_2016-08-02","revision":"2016-08-02","schema":"/rests/modules/openflow-approved-extensions?revision=2016-08-02","namespace":"urn:opendaylight:openflow:approved:extensions","conformance-type":"import"},{"name":"nc-notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/nc-notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netmod:notification","conformance-type":"import"},{"name":"ietf-netconf-nmda_2019-01-07","revision":"2019-01-07","schema":"/rests/modules/ietf-netconf-nmda?revision=2019-01-07","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-nmda","conformance-type":"import","feature":["with-defaults","origin"]},{"name":"ietf-tcp-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-common","conformance-type":"import","feature":["keepalives-supported"]},{"name":"network-topology_2013-10-21","revision":"2013-10-21","schema":"/rests/modules/network-topology?revision=2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:network-topology","conformance-type":"import"},{"name":"aaa-encrypt-service-config_2024-02-02","revision":"2024-02-02","schema":"/rests/modules/aaa-encrypt-service-config?revision=2024-02-02","namespace":"config:aaa:authn:encrypt:service:config","conformance-type":"import"},{"name":"openflow-instruction_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-instruction?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:instruction","conformance-type":"import"},{"name":"ietf-tls-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-client","conformance-type":"import","feature":["client-ident-x509-cert","server-auth-x509-cert"]},{"name":"opendaylight-group-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-group-statistics?revision=2013-11-11","namespace":"urn:opendaylight:group:statistics","conformance-type":"import"},{"name":"cluster-admin_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/cluster-admin?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:cluster:admin","conformance-type":"import"},{"name":"opendaylight-flow-statistics_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-flow-statistics?revision=2013-08-19","namespace":"urn:opendaylight:flow:statistics","conformance-type":"import"},{"name":"opendaylight-table-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-table-types?revision=2013-10-26","namespace":"urn:opendaylight:table:types","conformance-type":"import"},{"name":"forwarding-rules-manager-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/forwarding-rules-manager-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:forwardingrules-manager:config","conformance-type":"import"},{"name":"odl-srm-types_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-types?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:types","conformance-type":"import"},{"name":"ietf-x509-cert-to-name_2014-12-10","revision":"2014-12-10","schema":"/rests/modules/ietf-x509-cert-to-name?revision=2014-12-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-x509-cert-to-name","conformance-type":"import"},{"name":"flow-node-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-node-inventory?revision=2013-08-19","namespace":"urn:opendaylight:flow:inventory","conformance-type":"import"},{"name":"flow-errors_2013-11-16","revision":"2013-11-16","schema":"/rests/modules/flow-errors?revision=2013-11-16","namespace":"urn:opendaylight:flow:errors","conformance-type":"import"},{"name":"ietf-netconf_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:netconf:base:1.0","conformance-type":"import","feature":["xpath","url","rollback-on-error","validate","startup","candidate","confirmed-commit","writable-running"]},{"name":"iana-ssh-public-key-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-public-key-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-public-key-algs","conformance-type":"import"},{"name":"aaa-cert-mdsal_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/aaa-cert-mdsal?revision=2016-03-21","namespace":"urn:opendaylight:yang:aaa:cert:mdsal","conformance-type":"import"},{"name":"odl-device-notification_2024-02-18","revision":"2024-02-18","schema":"/rests/modules/odl-device-notification?revision=2024-02-18","namespace":"urn:opendaylight:device:notification","conformance-type":"import"},{"name":"ietf-origin_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-origin?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-origin","conformance-type":"import"},{"name":"openflow-augments_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-augments?revision=2015-02-25","namespace":"urn:opendaylight:openflow:augments","conformance-type":"import"},{"name":"iana-ssh-encryption-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-encryption-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-encryption-algs","conformance-type":"import"},{"name":"ietf-truststore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-truststore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-truststore","conformance-type":"import","feature":["inline-definitions-supported"]},{"name":"distributed-datastore-provider_2025-01-30","revision":"2025-01-30","schema":"/rests/modules/distributed-datastore-provider?revision=2025-01-30","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:distributed-datastore-provider","conformance-type":"import"},{"name":"opendaylight-group-types_2013-10-18","revision":"2013-10-18","schema":"/rests/modules/opendaylight-group-types?revision=2013-10-18","namespace":"urn:opendaylight:group:types","conformance-type":"import"},{"name":"sal-remote-augment_2023-11-03","revision":"2023-11-03","schema":"/rests/modules/sal-remote-augment?revision=2023-11-03","namespace":"urn:sal:restconf:event:subscription","conformance-type":"import"},{"name":"opendaylight-ipv6-arbitrary-bitmask-fields_2016-02-24","revision":"2016-02-24","schema":"/rests/modules/opendaylight-ipv6-arbitrary-bitmask-fields?revision=2016-02-24","namespace":"urn:opendaylight:opendaylight-ipv6-arbitrary-bitmask-fields","conformance-type":"import"},{"name":"sal-flows-batch_2016-03-14","revision":"2016-03-14","schema":"/rests/modules/sal-flows-batch?revision=2016-03-14","namespace":"urn:opendaylight:flows:service","conformance-type":"import"},{"name":"ietf-tls-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-common","conformance-type":"import","feature":["tls12","hello-params","tls13"]},{"name":"openflow-types_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-types?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:types","conformance-type":"import"},{"name":"ietf-netconf-with-defaults_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf-with-defaults?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults","conformance-type":"import"},{"name":"odl-srm-ops_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-ops?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:ops","conformance-type":"import"},{"name":"odl-general-entity_2015-09-30","revision":"2015-09-30","schema":"/rests/modules/odl-general-entity?revision=2015-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:mdsal:core:general-entity","conformance-type":"import"},{"name":"iana-ssh-key-exchange-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-key-exchange-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-key-exchange-algs","conformance-type":"import"},{"name":"node-ssl-connection-error_2019-07-23","revision":"2019-07-23","schema":"/rests/modules/node-ssl-connection-error?revision=2019-07-23","namespace":"urn:opendaylight:node-ssl-connection-error:service","conformance-type":"import"},{"name":"openflow-protocol_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-protocol?revision=2013-07-31","namespace":"urn:opendaylight:openflow:protocol","conformance-type":"import"},{"name":"ietf-udp-server_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-server?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-server","conformance-type":"import"},{"name":"ietf-keystore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-keystore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-keystore","conformance-type":"import","feature":["asymmetric-keys","inline-definitions-supported"]},{"name":"aaa_2016-12-14","revision":"2016-12-14","schema":"/rests/modules/aaa?revision=2016-12-14","namespace":"urn:opendaylight:params:xml:ns:yang:aaa","conformance-type":"import"},{"name":"aaa-cert-rpc_2015-12-15","revision":"2015-12-15","schema":"/rests/modules/aaa-cert-rpc?revision=2015-12-15","namespace":"urn:opendaylight:yang:aaa:cert:rpc","conformance-type":"import"},{"name":"system-notifications_2013-09-27","revision":"2013-09-27","schema":"/rests/modules/system-notifications?revision=2013-09-27","namespace":"urn:opendaylight:openflow:system","conformance-type":"import"},{"name":"sal-flat-batch_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/sal-flat-batch?revision=2016-03-21","namespace":"urn:opendaylight:flat-batch:service","conformance-type":"import"},{"name":"notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netconf:notification:1.0","conformance-type":"import"},{"name":"sal-remote_2014-01-14","revision":"2014-01-14","schema":"/rests/modules/sal-remote?revision=2014-01-14","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:remote","conformance-type":"import"},{"name":"yang-ext_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/yang-ext?revision=2013-07-09","namespace":"urn:opendaylight:yang:extension:yang-ext","conformance-type":"import"},{"name":"opendaylight-multipart-types_2017-01-12","revision":"2017-01-12","schema":"/rests/modules/opendaylight-multipart-types?revision=2017-01-12","namespace":"urn:opendaylight:multipart:types","conformance-type":"import"},{"name":"opendaylight-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-inventory?revision=2013-08-19","namespace":"urn:opendaylight:inventory","conformance-type":"import"},{"name":"sal-queue_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-queue?revision=2015-03-05","namespace":"urn:opendaylight:queue:service","conformance-type":"import"},{"name":"sal-groups-batch_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/sal-groups-batch?revision=2016-03-15","namespace":"urn:opendaylight:groups:service","conformance-type":"import"},{"name":"arbitrator-reconcile_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/arbitrator-reconcile?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:arbitrator-reconcile:service","conformance-type":"import"},{"name":"ietf-yang-metadata_2016-08-05","revision":"2016-08-05","schema":"/rests/modules/ietf-yang-metadata?revision=2016-08-05","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-metadata","conformance-type":"import"},{"name":"opendaylight-arbitrary-bitmask-fields_2016-01-30","revision":"2016-01-30","schema":"/rests/modules/opendaylight-arbitrary-bitmask-fields?revision=2016-01-30","namespace":"urn:opendaylight:arbitrary:bitmask:fields","conformance-type":"import"},{"name":"ietf-udp-client_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-client?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-client","conformance-type":"import","feature":["local-binding"]},{"name":"opendaylight-meter-types_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/opendaylight-meter-types?revision=2013-09-18","namespace":"urn:opendaylight:meter:types","conformance-type":"import"},{"name":"opendaylight-action-types_2013-11-12","revision":"2013-11-12","schema":"/rests/modules/opendaylight-action-types?revision=2013-11-12","namespace":"urn:opendaylight:action:types","conformance-type":"import"},{"name":"sal-role_2015-07-27","revision":"2015-07-27","schema":"/rests/modules/sal-role?revision=2015-07-27","namespace":"urn:opendaylight:role:service","conformance-type":"import"},{"name":"openflow-provider-config_2016-05-10","revision":"2016-05-10","schema":"/rests/modules/openflow-provider-config?revision=2016-05-10","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:provider:config","conformance-type":"import"},{"name":"odl-serviceutils-upgrade_2018-07-02","revision":"2018-07-02","schema":"/rests/modules/odl-serviceutils-upgrade?revision=2018-07-02","namespace":"urn:opendaylight:serviceutils:upgrade","conformance-type":"import"},{"name":"opendaylight-match-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-match-types?revision=2013-10-26","namespace":"urn:opendaylight:model:match:types","conformance-type":"import"},{"name":"ietf-restconf-server_2024-08-14","revision":"2024-08-14","schema":"/rests/modules/ietf-restconf-server?revision=2024-08-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-server","conformance-type":"import","feature":["http-listen","https-listen"]},{"name":"reconciliation-result-state_2017-07-13","revision":"2017-07-13","schema":"/rests/modules/reconciliation-result-state?revision=2017-07-13","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:rf:state","conformance-type":"import"},{"name":"onf-extensions_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/onf-extensions?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf","conformance-type":"import"},{"name":"sal-table_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/sal-table?revision=2013-10-26","namespace":"urn:opendaylight:table:service","conformance-type":"import"},{"name":"iana-http-versions_2026-02-04","revision":"2026-02-04","schema":"/rests/modules/iana-http-versions?revision=2026-02-04","namespace":"urn:ietf:params:xml:ns:yang:iana-http-versions","conformance-type":"import"},{"name":"opendaylight-direct-statistics_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/opendaylight-direct-statistics?revision=2016-05-11","namespace":"urn:opendaylight:direct:statistics","conformance-type":"import"},{"name":"opendaylight-port-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-port-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:port","conformance-type":"import"},{"name":"sal-async-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/sal-async-config?revision=2017-06-19","namespace":"urn:opendaylight:async-config:service","conformance-type":"import"},{"name":"aaa-password-service-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-password-service-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:password:service:config","conformance-type":"import"},{"name":"ietf-yang-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-yang-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-types","conformance-type":"import"},{"name":"opendaylight-queue-statistics_2013-12-16","revision":"2013-12-16","schema":"/rests/modules/opendaylight-queue-statistics?revision=2013-12-16","namespace":"urn:opendaylight:queue:statistics","conformance-type":"import"},{"name":"sal-bundle_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/sal-bundle?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf:bundle:service","conformance-type":"import"},{"name":"ietf-restconf-subscribed-notifications_2019-11-17","revision":"2019-11-17","schema":"/rests/modules/ietf-restconf-subscribed-notifications?revision=2019-11-17","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-subscribed-notifications","conformance-type":"import"},{"name":"sal-meters-batch_2016-03-16","revision":"2016-03-16","schema":"/rests/modules/sal-meters-batch?revision=2016-03-16","namespace":"urn:opendaylight:meters:service","conformance-type":"import"},{"name":"odl-entity-owners","revision":"","schema":"/rests/modules/odl-entity-owners","namespace":"urn:opendaylight:params:xml:ns:yang:controller:entity-owners","conformance-type":"import"},{"name":"sal-experimenter-mp-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-mp-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-mp-message:service","conformance-type":"import"},{"name":"packet-processing_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/packet-processing?revision=2013-07-09","namespace":"urn:opendaylight:packet:service","conformance-type":"import"},{"name":"openflow-configuration_2014-06-30","revision":"2014-06-30","schema":"/rests/modules/openflow-configuration?revision=2014-06-30","namespace":"urn:opendaylight:openflow:config","conformance-type":"import"},{"name":"odl-srm-rpcs_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-rpcs?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:rpc","conformance-type":"import"},{"name":"ietf-netconf-acm_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-netconf-acm?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-acm","conformance-type":"import"},{"name":"iana-crypt-hash_2014-08-06","revision":"2014-08-06","schema":"/rests/modules/iana-crypt-hash?revision=2014-08-06","namespace":"urn:ietf:params:xml:ns:yang:iana-crypt-hash","conformance-type":"import","feature":["crypt-hash-sha-512","crypt-hash-sha-256","crypt-hash-md5"]},{"name":"openflow-extensible-match_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-extensible-match?revision=2015-02-25","namespace":"urn:opendaylight:openflow:oxm","conformance-type":"import"}],"module-set-id":"2"}}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:06:44.353609" elapsed="0.005150"/>
</kw>
<status status="PASS" start="2026-04-08T01:06:44.353002" elapsed="0.005865"/>
</branch>
<status status="PASS" start="2026-04-08T01:06:44.352956" elapsed="0.005940"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:06:44.361708" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:06:44.359234" elapsed="0.002565"/>
</kw>
<status status="PASS" start="2026-04-08T01:06:44.358955" elapsed="0.002955"/>
</branch>
<status status="PASS" start="2026-04-08T01:06:44.358938" elapsed="0.003004"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:06:44.362713" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:06:44.362130" elapsed="0.000611"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:06:44.363076" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:06:44.362812" elapsed="0.000471"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:06:44.364069" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:06:44.363506" elapsed="0.000641"/>
</kw>
<status status="PASS" start="2026-04-08T01:06:44.363311" elapsed="0.001003"/>
</branch>
<status status="PASS" start="2026-04-08T01:06:44.362793" elapsed="0.001546"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:06:44.365022" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:06:44.364505" elapsed="0.000544"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:06:44.365398" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:06:44.365120" elapsed="0.000450"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:06:44.366342" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:06:44.365763" elapsed="0.000656"/>
</kw>
<status status="PASS" start="2026-04-08T01:06:44.365596" elapsed="0.000974"/>
</branch>
<status status="PASS" start="2026-04-08T01:06:44.365101" elapsed="0.001492"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:06:44.366753" elapsed="0.000706"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T01:06:44.368457" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:06:44.367647" elapsed="0.000837"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T01:06:44.368645" elapsed="0.002835"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T01:06:44.351954" elapsed="0.019616"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T01:06:44.371757" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:06:44.371642" elapsed="0.000162"/>
</branch>
<status status="PASS" start="2026-04-08T01:06:44.371623" elapsed="0.000203"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T01:06:44.389549" level="INFO">${text_normalized} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T01:06:44.371973" elapsed="0.017608"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T01:06:44.389634" elapsed="0.000037"/>
</return>
<msg time="2026-04-08T01:06:44.389803" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T01:06:43.367068" elapsed="1.022761"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T01:06:44.389893" elapsed="0.000026"/>
</return>
<msg time="2026-04-08T01:06:44.390057" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="PASS" start="2026-04-08T01:06:43.226561" elapsed="1.163522"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Json_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="NOT RUN" start="2026-04-08T01:06:44.390821" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:06:44.390570" elapsed="0.000362"/>
</branch>
<status status="PASS" start="2026-04-08T01:06:44.390152" elapsed="0.000805"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T01:06:44.390990" elapsed="0.000027"/>
</return>
<arg>session=${session}</arg>
<arg>folder=${RESTCONF_MODULES_DIR}</arg>
<arg>verify=False</arg>
<doc>Add arguments sensible for JSON data, return Get_Templated response text.
Optionally, verification against JSON data (may be iterated) is called.
Only subset of JSON data is verified and returned if JMES path is specified in
file ${folder}/jmespath.expr.</doc>
<status status="PASS" start="2026-04-08T01:06:43.220140" elapsed="1.170976"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T01:06:43.214946" elapsed="1.176229"/>
</iter>
<iter>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:06:44.392124" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:06:44.391825" elapsed="0.000326"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T01:06:44.392213" elapsed="0.000034"/>
</return>
<msg time="2026-04-08T01:06:44.392374" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>member_index=${index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T01:06:44.391453" elapsed="0.000946"/>
</kw>
<kw name="Get_As_Json_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:06:44.480850" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:06:44.480067" elapsed="0.000883"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T01:06:44.482129" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T01:06:44.481860" elapsed="0.000779">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules.vanadium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-08T01:06:44.482829" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T01:06:44.481237" elapsed="0.001687"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:06:44.484087" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:06:44.483226" elapsed="0.000981"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-08T01:06:44.484773" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri"&gt;/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-08T01:06:44.485076" level="INFO">${template} = /rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-08T01:06:44.484445" elapsed="0.000747"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:06:44.485968" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:06:44.485423" elapsed="0.000687"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:06:44.487940" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:06:44.487508" elapsed="0.000492"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-08T01:06:44.488555" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-08T01:06:44.488259" elapsed="0.000323"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-04-08T01:06:44.488913" elapsed="0.000021"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-04-08T01:06:44.489114" elapsed="0.000023"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-04-08T01:06:44.489309" elapsed="0.000021"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-08T01:06:44.488776" elapsed="0.000590"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-08T01:06:44.488635" elapsed="0.000760"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-08T01:06:44.489440" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T01:06:44.489747" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-08T01:06:44.486966" elapsed="0.002816"/>
</kw>
<status status="PASS" start="2026-04-08T01:06:44.486239" elapsed="0.003587"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T01:06:44.490374" elapsed="0.000038"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:06:44.489935" elapsed="0.000526"/>
</branch>
<status status="PASS" start="2026-04-08T01:06:44.486203" elapsed="0.004342"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:06:44.491674" level="INFO">${final_text} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:06:44.490804" elapsed="0.000968"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-08T01:06:44.491846" elapsed="0.000030"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="PASS" start="2026-04-08T01:06:44.478935" elapsed="0.013213"/>
</kw>
<msg time="2026-04-08T01:06:44.492361" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:06:44.428470" elapsed="0.063945"/>
</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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T01:06:44.504951" 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-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T01:06:44.517188" elapsed="0.000029"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-08T01:06:44.529368" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:06:44.529570" elapsed="0.000022"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T01:06:44.529747" elapsed="0.000021"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:06:44.530192" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:06:44.530003" elapsed="0.000379"/>
</branch>
<status status="NOT RUN" start="2026-04-08T01:06:44.529988" elapsed="0.000422"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T01:06:44.530556" elapsed="0.000021"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-08T01:06:44.530729" elapsed="0.000020"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:06:44.530897" elapsed="0.000020"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-08T01:06:44.529957" elapsed="0.000993"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-08T01:06:44.529823" elapsed="0.001153"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-08T01:06:44.531123" elapsed="0.000020"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-08T01:06:44.531218" elapsed="0.000016"/>
</return>
<msg time="2026-04-08T01:06:44.531333" level="INFO">${uri} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-08T01:06:44.424247" elapsed="0.107112"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T01:06:44.532782" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T01:06:44.532437" elapsed="0.000412">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-08T01:06:44.532940" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T01:06:44.532043" elapsed="0.000921"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T01:06:44.533305" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:06:44.533037" elapsed="0.000326"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:06:44.533963" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:06:44.533566" elapsed="0.000423"/>
</kw>
<status status="PASS" start="2026-04-08T01:06:44.533387" elapsed="0.000638"/>
</branch>
<status status="PASS" start="2026-04-08T01:06:44.533018" elapsed="0.001028"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:06:44.537872" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:06:44.534216" elapsed="0.003684"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-08T01:06:44.537952" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T01:06:44.538103" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T01:06:44.531716" elapsed="0.006411"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-08T01:06:44.539474" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-08T01:06:44.539109" elapsed="0.000429">File '/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-08T01:06:44.539629" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T01:06:44.538767" elapsed="0.000886"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-08T01:06:44.539861" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-08T01:06:44.539725" elapsed="0.000194"/>
</branch>
<status status="PASS" start="2026-04-08T01:06:44.539706" elapsed="0.000237"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-08T01:06:44.540089" elapsed="0.000021"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-08T01:06:44.540289" elapsed="0.000022"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-08T01:06:44.540359" elapsed="0.000014"/>
</return>
<msg time="2026-04-08T01:06:44.542264" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/libraries/../variables/restconf/modules/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-08T01:06:44.538440" elapsed="0.003851"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:06:44.543687" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:06:44.543438" elapsed="0.000294"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:06:44.544131" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:06:44.543886" elapsed="0.000307"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T01:06:45.371821" level="INFO">GET Request : url=http://10.30.171.110:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 path_url=/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0bpvxx3soilt318jo6w4kocddk0.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T01:06:45.372865" level="INFO">GET Response : url=http://10.30.171.110:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 status=200, reason=OK 
 headers={'Set-Cookie': 'JSESSIONID=node0bpvxx3soilt318jo6w4kocddk0.node0; Path=/rests; HttpOnly, rememberMe=deleteMe; Path=/rests; Max-Age=0; Expires=Tue, 07-Apr-2026 01:06:45 GMT; SameSite=lax', 'Expires': 'Thu, 01 Jan 1970 00:00:00 GMT', 'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Transfer-Encoding': 'chunked'} 
 body={"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","cms-enveloped-data-format","encrypted-passwords","hidden-symmetric-keys","csr-generation","encrypted-private-keys","asymmetrically-encrypted-value-format","cleartext-private-keys","cms-encrypted-data-format","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","ssh-server-keepalives","local-user-auth-hostbased"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["ssh-client-keepalives","client-ident-hostbased","client-ident-publickey","client-ident-password"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-supported","client-auth-x509-cert"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-ex... (set the log level to DEBUG or TRACE to see the full content) 
 </msg>
<msg time="2026-04-08T01:06:45.373532" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T01:06:44.546326" elapsed="0.827273"/>
</kw>
<status status="PASS" start="2026-04-08T01:06:44.544288" elapsed="0.829424"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-08T01:06:45.374225" elapsed="0.000055"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:06:45.373780" elapsed="0.000599"/>
</branch>
<status status="PASS" start="2026-04-08T01:06:44.544268" elapsed="0.830161"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:06:45.382115" level="INFO">{"ietf-yang-library:modules-state":{"module":[{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","cms-enveloped-data-format","encrypted-passwords","hidden-symmetric-keys","csr-generation","encrypted-private-keys","asymmetrically-encrypted-value-format","cleartext-private-keys","cms-encrypted-data-format","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","ssh-server-keepalives","local-user-auth-hostbased"]},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","schema":"/rests/modules/statistics-manager-control?revision=2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["ssh-client-keepalives","client-ident-hostbased","client-ident-publickey","client-ident-password"]},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/odl-controller-cds-types?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-supported","client-auth-x509-cert"]},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf-monitoring?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","schema":"/rests/modules/openflow-switch-connection-config?revision=2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","schema":"/rests/modules/ietf-yang-library?revision=2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/openflowplugin-experimenter-types?revision=2015-10-20","namespace":"urn:opendaylight:openflowplugin:experimenter:types","conformance-type":"import"},{"name":"ietf-ip_2018-02-22","revision":"2018-02-22","schema":"/rests/modules/ietf-ip?revision=2018-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-ip","conformance-type":"import","feature":["ipv6-privacy-autoconf","ipv4-non-contiguous-netmasks"]},{"name":"ietf-tcp-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-client","conformance-type":"import","feature":["local-binding-supported","tcp-client-keepalives"]},{"name":"node-config_2014-10-15","revision":"2014-10-15","schema":"/rests/modules/node-config?revision=2014-10-15","namespace":"urn:opendaylight:module:config","conformance-type":"import"},{"name":"ietf-restconf_2017-01-26","revision":"2017-01-26","schema":"/rests/modules/ietf-restconf?revision=2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf","conformance-type":"import"},{"name":"ietf-datastores_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-datastores?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-datastores","conformance-type":"import"},{"name":"ietf-yang-patch_2017-02-22","revision":"2017-02-22","schema":"/rests/modules/ietf-yang-patch?revision=2017-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-patch","conformance-type":"import"},{"name":"sal-group_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-group?revision=2013-09-18","namespace":"urn:opendaylight:group:service","conformance-type":"import"},{"name":"odl-codegen-extensions_2024-06-27","revision":"2024-06-27","schema":"/rests/modules/odl-codegen-extensions?revision=2024-06-27","namespace":"urn:opendaylight:yang:extension:codegen","conformance-type":"import"},{"name":"sal-meter_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/sal-meter?revision=2013-09-18","namespace":"urn:opendaylight:meter:service","conformance-type":"import"},{"name":"ietf-interfaces_2018-02-20","revision":"2018-02-20","schema":"/rests/modules/ietf-interfaces?revision=2018-02-20","namespace":"urn:ietf:params:xml:ns:yang:ietf-interfaces","conformance-type":"import","feature":["pre-provisioning","if-mib","arbitrary-names"]},{"name":"opendaylight-l2-types_2013-08-27","revision":"2013-08-27","schema":"/rests/modules/opendaylight-l2-types?revision=2013-08-27","namespace":"urn:opendaylight:l2:types","conformance-type":"import"},{"name":"opendaylight-flow-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-flow-types?revision=2013-10-26","namespace":"urn:opendaylight:flow:types","conformance-type":"import"},{"name":"lldp-speaker-config_2016-05-12","revision":"2016-05-12","schema":"/rests/modules/lldp-speaker-config?revision=2016-05-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker:config","conformance-type":"import"},{"name":"aaa-cert_2015-11-26","revision":"2015-11-26","schema":"/rests/modules/aaa-cert?revision=2015-11-26","namespace":"urn:opendaylight:yang:aaa:cert","conformance-type":"import"},{"name":"openflow-action_2015-02-03","revision":"2015-02-03","schema":"/rests/modules/openflow-action?revision=2015-02-03","namespace":"urn:opendaylight:openflow:common:action","conformance-type":"import"},{"name":"openflow-approved-extensions_2016-08-02","revision":"2016-08-02","schema":"/rests/modules/openflow-approved-extensions?revision=2016-08-02","namespace":"urn:opendaylight:openflow:approved:extensions","conformance-type":"import"},{"name":"nc-notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/nc-notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netmod:notification","conformance-type":"import"},{"name":"ietf-netconf-nmda_2019-01-07","revision":"2019-01-07","schema":"/rests/modules/ietf-netconf-nmda?revision=2019-01-07","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-nmda","conformance-type":"import","feature":["with-defaults","origin"]},{"name":"ietf-tcp-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-common","conformance-type":"import","feature":["keepalives-supported"]},{"name":"network-topology_2013-10-21","revision":"2013-10-21","schema":"/rests/modules/network-topology?revision=2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:network-topology","conformance-type":"import"},{"name":"aaa-encrypt-service-config_2024-02-02","revision":"2024-02-02","schema":"/rests/modules/aaa-encrypt-service-config?revision=2024-02-02","namespace":"config:aaa:authn:encrypt:service:config","conformance-type":"import"},{"name":"openflow-instruction_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-instruction?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:instruction","conformance-type":"import"},{"name":"ietf-tls-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-client","conformance-type":"import","feature":["client-ident-x509-cert","server-auth-x509-cert"]},{"name":"opendaylight-group-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-group-statistics?revision=2013-11-11","namespace":"urn:opendaylight:group:statistics","conformance-type":"import"},{"name":"cluster-admin_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/cluster-admin?revision=2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:cluster:admin","conformance-type":"import"},{"name":"opendaylight-flow-statistics_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-flow-statistics?revision=2013-08-19","namespace":"urn:opendaylight:flow:statistics","conformance-type":"import"},{"name":"opendaylight-table-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-table-types?revision=2013-10-26","namespace":"urn:opendaylight:table:types","conformance-type":"import"},{"name":"forwarding-rules-manager-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/forwarding-rules-manager-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:forwardingrules-manager:config","conformance-type":"import"},{"name":"odl-srm-types_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-types?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:types","conformance-type":"import"},{"name":"ietf-x509-cert-to-name_2014-12-10","revision":"2014-12-10","schema":"/rests/modules/ietf-x509-cert-to-name?revision=2014-12-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-x509-cert-to-name","conformance-type":"import"},{"name":"flow-node-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-node-inventory?revision=2013-08-19","namespace":"urn:opendaylight:flow:inventory","conformance-type":"import"},{"name":"flow-errors_2013-11-16","revision":"2013-11-16","schema":"/rests/modules/flow-errors?revision=2013-11-16","namespace":"urn:opendaylight:flow:errors","conformance-type":"import"},{"name":"ietf-netconf_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:netconf:base:1.0","conformance-type":"import","feature":["xpath","url","rollback-on-error","validate","startup","candidate","confirmed-commit","writable-running"]},{"name":"iana-ssh-public-key-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-public-key-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-public-key-algs","conformance-type":"import"},{"name":"aaa-cert-mdsal_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/aaa-cert-mdsal?revision=2016-03-21","namespace":"urn:opendaylight:yang:aaa:cert:mdsal","conformance-type":"import"},{"name":"odl-device-notification_2024-02-18","revision":"2024-02-18","schema":"/rests/modules/odl-device-notification?revision=2024-02-18","namespace":"urn:opendaylight:device:notification","conformance-type":"import"},{"name":"ietf-origin_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-origin?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-origin","conformance-type":"import"},{"name":"openflow-augments_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-augments?revision=2015-02-25","namespace":"urn:opendaylight:openflow:augments","conformance-type":"import"},{"name":"iana-ssh-encryption-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-encryption-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-encryption-algs","conformance-type":"import"},{"name":"ietf-truststore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-truststore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-truststore","conformance-type":"import","feature":["inline-definitions-supported"]},{"name":"distributed-datastore-provider_2025-01-30","revision":"2025-01-30","schema":"/rests/modules/distributed-datastore-provider?revision=2025-01-30","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:distributed-datastore-provider","conformance-type":"import"},{"name":"opendaylight-group-types_2013-10-18","revision":"2013-10-18","schema":"/rests/modules/opendaylight-group-types?revision=2013-10-18","namespace":"urn:opendaylight:group:types","conformance-type":"import"},{"name":"sal-remote-augment_2023-11-03","revision":"2023-11-03","schema":"/rests/modules/sal-remote-augment?revision=2023-11-03","namespace":"urn:sal:restconf:event:subscription","conformance-type":"import"},{"name":"opendaylight-ipv6-arbitrary-bitmask-fields_2016-02-24","revision":"2016-02-24","schema":"/rests/modules/opendaylight-ipv6-arbitrary-bitmask-fields?revision=2016-02-24","namespace":"urn:opendaylight:opendaylight-ipv6-arbitrary-bitmask-fields","conformance-type":"import"},{"name":"sal-flows-batch_2016-03-14","revision":"2016-03-14","schema":"/rests/modules/sal-flows-batch?revision=2016-03-14","namespace":"urn:opendaylight:flows:service","conformance-type":"import"},{"name":"ietf-tls-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tls-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-common","conformance-type":"import","feature":["tls12","hello-params","tls13"]},{"name":"openflow-types_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-types?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:types","conformance-type":"import"},{"name":"ietf-netconf-with-defaults_2011-06-01","revision":"2011-06-01","schema":"/rests/modules/ietf-netconf-with-defaults?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults","conformance-type":"import"},{"name":"odl-srm-ops_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-ops?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:ops","conformance-type":"import"},{"name":"odl-general-entity_2015-09-30","revision":"2015-09-30","schema":"/rests/modules/odl-general-entity?revision=2015-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:mdsal:core:general-entity","conformance-type":"import"},{"name":"iana-ssh-key-exchange-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-key-exchange-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-key-exchange-algs","conformance-type":"import"},{"name":"node-ssl-connection-error_2019-07-23","revision":"2019-07-23","schema":"/rests/modules/node-ssl-connection-error?revision=2019-07-23","namespace":"urn:opendaylight:node-ssl-connection-error:service","conformance-type":"import"},{"name":"openflow-protocol_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-protocol?revision=2013-07-31","namespace":"urn:opendaylight:openflow:protocol","conformance-type":"import"},{"name":"ietf-udp-server_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-server?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-server","conformance-type":"import"},{"name":"ietf-keystore_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-keystore?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-keystore","conformance-type":"import","feature":["asymmetric-keys","inline-definitions-supported"]},{"name":"aaa_2016-12-14","revision":"2016-12-14","schema":"/rests/modules/aaa?revision=2016-12-14","namespace":"urn:opendaylight:params:xml:ns:yang:aaa","conformance-type":"import"},{"name":"aaa-cert-rpc_2015-12-15","revision":"2015-12-15","schema":"/rests/modules/aaa-cert-rpc?revision=2015-12-15","namespace":"urn:opendaylight:yang:aaa:cert:rpc","conformance-type":"import"},{"name":"system-notifications_2013-09-27","revision":"2013-09-27","schema":"/rests/modules/system-notifications?revision=2013-09-27","namespace":"urn:opendaylight:openflow:system","conformance-type":"import"},{"name":"sal-flat-batch_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/sal-flat-batch?revision=2016-03-21","namespace":"urn:opendaylight:flat-batch:service","conformance-type":"import"},{"name":"notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/notifications?revision=2008-07-14","namespace":"urn:ietf:params:xml:ns:netconf:notification:1.0","conformance-type":"import"},{"name":"sal-remote_2014-01-14","revision":"2014-01-14","schema":"/rests/modules/sal-remote?revision=2014-01-14","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:remote","conformance-type":"import"},{"name":"yang-ext_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/yang-ext?revision=2013-07-09","namespace":"urn:opendaylight:yang:extension:yang-ext","conformance-type":"import"},{"name":"opendaylight-multipart-types_2017-01-12","revision":"2017-01-12","schema":"/rests/modules/opendaylight-multipart-types?revision=2017-01-12","namespace":"urn:opendaylight:multipart:types","conformance-type":"import"},{"name":"opendaylight-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-inventory?revision=2013-08-19","namespace":"urn:opendaylight:inventory","conformance-type":"import"},{"name":"sal-queue_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-queue?revision=2015-03-05","namespace":"urn:opendaylight:queue:service","conformance-type":"import"},{"name":"sal-groups-batch_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/sal-groups-batch?revision=2016-03-15","namespace":"urn:opendaylight:groups:service","conformance-type":"import"},{"name":"arbitrator-reconcile_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/arbitrator-reconcile?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:arbitrator-reconcile:service","conformance-type":"import"},{"name":"ietf-yang-metadata_2016-08-05","revision":"2016-08-05","schema":"/rests/modules/ietf-yang-metadata?revision=2016-08-05","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-metadata","conformance-type":"import"},{"name":"opendaylight-arbitrary-bitmask-fields_2016-01-30","revision":"2016-01-30","schema":"/rests/modules/opendaylight-arbitrary-bitmask-fields?revision=2016-01-30","namespace":"urn:opendaylight:arbitrary:bitmask:fields","conformance-type":"import"},{"name":"ietf-udp-client_2025-12-16","revision":"2025-12-16","schema":"/rests/modules/ietf-udp-client?revision=2025-12-16","namespace":"urn:ietf:params:xml:ns:yang:ietf-udp-client","conformance-type":"import","feature":["local-binding"]},{"name":"opendaylight-meter-types_2013-09-18","revision":"2013-09-18","schema":"/rests/modules/opendaylight-meter-types?revision=2013-09-18","namespace":"urn:opendaylight:meter:types","conformance-type":"import"},{"name":"opendaylight-action-types_2013-11-12","revision":"2013-11-12","schema":"/rests/modules/opendaylight-action-types?revision=2013-11-12","namespace":"urn:opendaylight:action:types","conformance-type":"import"},{"name":"sal-role_2015-07-27","revision":"2015-07-27","schema":"/rests/modules/sal-role?revision=2015-07-27","namespace":"urn:opendaylight:role:service","conformance-type":"import"},{"name":"openflow-provider-config_2016-05-10","revision":"2016-05-10","schema":"/rests/modules/openflow-provider-config?revision=2016-05-10","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:provider:config","conformance-type":"import"},{"name":"odl-serviceutils-upgrade_2018-07-02","revision":"2018-07-02","schema":"/rests/modules/odl-serviceutils-upgrade?revision=2018-07-02","namespace":"urn:opendaylight:serviceutils:upgrade","conformance-type":"import"},{"name":"opendaylight-match-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-match-types?revision=2013-10-26","namespace":"urn:opendaylight:model:match:types","conformance-type":"import"},{"name":"ietf-restconf-server_2024-08-14","revision":"2024-08-14","schema":"/rests/modules/ietf-restconf-server?revision=2024-08-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-server","conformance-type":"import","feature":["http-listen","https-listen"]},{"name":"reconciliation-result-state_2017-07-13","revision":"2017-07-13","schema":"/rests/modules/reconciliation-result-state?revision=2017-07-13","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:rf:state","conformance-type":"import"},{"name":"onf-extensions_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/onf-extensions?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf","conformance-type":"import"},{"name":"sal-table_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/sal-table?revision=2013-10-26","namespace":"urn:opendaylight:table:service","conformance-type":"import"},{"name":"iana-http-versions_2026-02-04","revision":"2026-02-04","schema":"/rests/modules/iana-http-versions?revision=2026-02-04","namespace":"urn:ietf:params:xml:ns:yang:iana-http-versions","conformance-type":"import"},{"name":"opendaylight-direct-statistics_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/opendaylight-direct-statistics?revision=2016-05-11","namespace":"urn:opendaylight:direct:statistics","conformance-type":"import"},{"name":"opendaylight-port-types_2013-09-25","revision":"2013-09-25","schema":"/rests/modules/opendaylight-port-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:port","conformance-type":"import"},{"name":"sal-async-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/sal-async-config?revision=2017-06-19","namespace":"urn:opendaylight:async-config:service","conformance-type":"import"},{"name":"aaa-password-service-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-password-service-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:password:service:config","conformance-type":"import"},{"name":"ietf-yang-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-yang-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-types","conformance-type":"import"},{"name":"opendaylight-queue-statistics_2013-12-16","revision":"2013-12-16","schema":"/rests/modules/opendaylight-queue-statistics?revision=2013-12-16","namespace":"urn:opendaylight:queue:statistics","conformance-type":"import"},{"name":"sal-bundle_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/sal-bundle?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf:bundle:service","conformance-type":"import"},{"name":"ietf-restconf-subscribed-notifications_2019-11-17","revision":"2019-11-17","schema":"/rests/modules/ietf-restconf-subscribed-notifications?revision=2019-11-17","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-subscribed-notifications","conformance-type":"import"},{"name":"sal-meters-batch_2016-03-16","revision":"2016-03-16","schema":"/rests/modules/sal-meters-batch?revision=2016-03-16","namespace":"urn:opendaylight:meters:service","conformance-type":"import"},{"name":"odl-entity-owners","revision":"","schema":"/rests/modules/odl-entity-owners","namespace":"urn:opendaylight:params:xml:ns:yang:controller:entity-owners","conformance-type":"import"},{"name":"sal-experimenter-mp-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-mp-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-mp-message:service","conformance-type":"import"},{"name":"packet-processing_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/packet-processing?revision=2013-07-09","namespace":"urn:opendaylight:packet:service","conformance-type":"import"},{"name":"openflow-configuration_2014-06-30","revision":"2014-06-30","schema":"/rests/modules/openflow-configuration?revision=2014-06-30","namespace":"urn:opendaylight:openflow:config","conformance-type":"import"},{"name":"odl-srm-rpcs_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-rpcs?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:rpc","conformance-type":"import"},{"name":"ietf-netconf-acm_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-netconf-acm?revision=2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-acm","conformance-type":"import"},{"name":"iana-crypt-hash_2014-08-06","revision":"2014-08-06","schema":"/rests/modules/iana-crypt-hash?revision=2014-08-06","namespace":"urn:ietf:params:xml:ns:yang:iana-crypt-hash","conformance-type":"import","feature":["crypt-hash-sha-512","crypt-hash-sha-256","crypt-hash-md5"]},{"name":"openflow-extensible-match_2015-02-25","revision":"2015-02-25","schema":"/rests/modules/openflow-extensible-match?revision=2015-02-25","namespace":"urn:opendaylight:openflow:oxm","conformance-type":"import"}],"module-set-id":"2"}}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:06:45.377336" elapsed="0.005162"/>
</kw>
<status status="PASS" start="2026-04-08T01:06:45.376722" elapsed="0.005885"/>
</branch>
<status status="PASS" start="2026-04-08T01:06:45.376675" elapsed="0.005959"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:06:45.385640" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:06:45.382941" elapsed="0.002790"/>
</kw>
<status status="PASS" start="2026-04-08T01:06:45.382693" elapsed="0.003147"/>
</branch>
<status status="PASS" start="2026-04-08T01:06:45.382675" elapsed="0.003192"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:06:45.386635" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:06:45.386057" elapsed="0.000606"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:06:45.387003" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:06:45.386735" elapsed="0.000475"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:06:45.388007" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:06:45.387413" elapsed="0.000673"/>
</kw>
<status status="PASS" start="2026-04-08T01:06:45.387239" elapsed="0.001012"/>
</branch>
<status status="PASS" start="2026-04-08T01:06:45.386717" elapsed="0.001559"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:06:45.388966" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:06:45.388446" elapsed="0.000549"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:06:45.389345" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:06:45.389067" elapsed="0.000452"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:06:45.390299" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:06:45.389713" elapsed="0.000665"/>
</kw>
<status status="PASS" start="2026-04-08T01:06:45.389545" elapsed="0.000981"/>
</branch>
<status status="PASS" start="2026-04-08T01:06:45.389048" elapsed="0.001502"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:06:45.390710" elapsed="0.000695"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-08T01:06:45.392403" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:06:45.391580" elapsed="0.000851"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-08T01:06:45.392592" elapsed="0.002859"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-08T01:06:45.375629" elapsed="0.019889"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-08T01:06:45.395700" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:06:45.395589" elapsed="0.000182"/>
</branch>
<status status="PASS" start="2026-04-08T01:06:45.395571" elapsed="0.000222"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-08T01:06:45.413405" level="INFO">${text_normalized} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-08T01:06:45.395941" elapsed="0.017495"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-08T01:06:45.413488" elapsed="0.000037"/>
</return>
<msg time="2026-04-08T01:06:45.413655" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-08T01:06:44.542596" elapsed="0.871086"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T01:06:45.413745" elapsed="0.000027"/>
</return>
<msg time="2026-04-08T01:06:45.413900" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="PASS" start="2026-04-08T01:06:44.402225" elapsed="1.011701"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Json_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="NOT RUN" start="2026-04-08T01:06:45.414308" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:06:45.414010" elapsed="0.000408"/>
</branch>
<status status="PASS" start="2026-04-08T01:06:45.413993" elapsed="0.000451"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-08T01:06:45.414477" elapsed="0.000027"/>
</return>
<arg>session=${session}</arg>
<arg>folder=${RESTCONF_MODULES_DIR}</arg>
<arg>verify=False</arg>
<doc>Add arguments sensible for JSON data, return Get_Templated response text.
Optionally, verification against JSON data (may be iterated) is called.
Only subset of JSON data is verified and returned if JMES path is specified in
file ${folder}/jmespath.expr.</doc>
<status status="PASS" start="2026-04-08T01:06:44.396297" elapsed="1.018303"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T01:06:44.391280" elapsed="1.023362"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-08T01:06:41.995854" elapsed="3.418824"/>
</for>
<arg>${member_index_list}</arg>
<status status="PASS" start="2026-04-08T01:06:41.993701" elapsed="3.421035"/>
</kw>
<status status="PASS" start="2026-04-08T01:06:41.993448" elapsed="3.421317"/>
</branch>
<status status="PASS" start="2026-04-08T01:06:41.993433" elapsed="3.421355"/>
</if>
<if>
<branch type="IF" condition="${verify_system_status} and (&quot;${service_list}&quot; != &quot;[[]]&quot;)">
<kw name="Check Status Of Services Is OPERATIONAL" owner="ClusterManagement">
<arg>@{service_list}</arg>
<doc>This keyword will verify whether all the services are operational in all the ODL nodes</doc>
<status status="NOT RUN" start="2026-04-08T01:06:45.415331" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:06:45.414845" elapsed="0.000547"/>
</branch>
<status status="PASS" start="2026-04-08T01:06:45.414829" elapsed="0.000586"/>
</if>
<arg>${member_index_list}</arg>
<arg>${wait_for_sync}</arg>
<arg>${verify_restconf}</arg>
<arg>${check_system_status}</arg>
<arg>${service_list}</arg>
<doc>Verifies the specified readiness conditions for the given listed members after startup.
If ${verify_cluster_sync}, verifies the datastores have synced with the rest of the cluster.
If True, verifies RESTCONF is available.
If ${verify_system_status}, verifies the system services are OPERATIONAL.</doc>
<status status="PASS" start="2026-04-08T01:06:41.992286" elapsed="3.423177"/>
</kw>
<arg>${timeout}</arg>
<arg>10s</arg>
<arg>Verify_Members_Are_Ready</arg>
<arg>${member_index_list}</arg>
<arg>${wait_for_sync}</arg>
<arg>${verify_restconf}</arg>
<arg>${check_system_status}</arg>
<arg>${service_list}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-08T01:06:11.368541" elapsed="34.046984"/>
</kw>
<kw name="Run_Bash_Command_On_List_Or_All" owner="ClusterManagement" type="TEARDOWN">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:06:45.419059" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:06:45.418667" elapsed="0.000419"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:06:45.419575" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:06:45.419265" elapsed="0.000336"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T01:06:45.419646" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T01:06:45.419796" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T01:06:45.418046" elapsed="0.001804"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:06:45.420938" level="INFO">${member_ip} = 10.30.170.48</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:06:45.420672" elapsed="0.000292"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:06:45.421816" level="INFO">index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-08T01:06:45.421916" level="INFO">${current_connection} = index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T01:06:45.421638" elapsed="0.000304"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Controller" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:06:45.424834" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:06:45.424551" elapsed="0.000342"/>
</branch>
<status status="PASS" start="2026-04-08T01:06:45.424532" elapsed="0.000385"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:06:45.425232" level="INFO">index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-08T01:06:45.425335" level="INFO">${current_ssh_connection} = index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T01:06:45.425068" elapsed="0.000295"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:06:45.425986" level="INFO">Attempting to execute command "netstat -pnatu | grep 2550" on remote system "10.30.170.48" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:06:45.425517" elapsed="0.000517"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:06:45.426702" level="INFO">${conn_id} = 590</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T01:06:45.426259" elapsed="0.000471"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T01:06:45.427822" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T01:06:45.427956" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T01:06:45.427440" elapsed="0.000542"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:06:45.428150" elapsed="0.000537"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T01:06:45.430048" level="INFO">Logging into '10.30.170.48:22' as 'jenkins'.</msg>
<msg time="2026-04-08T01:06:45.722154" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 01:06:08 UTC 2026

  System load:  0.05               Processes:             120
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.170.48
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 01:06:10 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-0-builder-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T01:06:45.429426" elapsed="0.292961"/>
</kw>
<msg time="2026-04-08T01:06:45.722513" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:06:45.428865" elapsed="0.293796"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T01:06:45.426952" elapsed="0.295830"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T01:06:45.723359" level="INFO">Executing command 'netstat -pnatu | grep 2550'.</msg>
<msg time="2026-04-08T01:06:45.735467" level="INFO">Command exited with return code 1.</msg>
<msg time="2026-04-08T01:06:45.735718" level="INFO">${stdout} = </msg>
<msg time="2026-04-08T01:06:45.735819" level="INFO">${stderr} = bash: line 1: netstat: command not found</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T01:06:45.723048" elapsed="0.012823"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T01:06:45.736289" elapsed="0.000458"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:06:45.737964" level="INFO">bash: line 1: netstat: command not found</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:06:45.737246" elapsed="0.000821"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T01:06:45.738614" elapsed="0.000042"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:06:45.738292" elapsed="0.000448"/>
</branch>
<status status="PASS" start="2026-04-08T01:06:45.738237" elapsed="0.000556"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T01:06:45.739152" elapsed="0.000093"/>
</return>
<status status="PASS" start="2026-04-08T01:06:45.738913" elapsed="0.000407"/>
</branch>
<status status="PASS" start="2026-04-08T01:06:45.738879" elapsed="0.000494"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T01:06:45.739448" elapsed="0.000032"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:06:45.745810" elapsed="0.000503"/>
</kw>
<msg time="2026-04-08T01:06:45.746423" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:06:45.744591" elapsed="0.001971"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:06:45.746797" elapsed="0.000031"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:06:45.747036" elapsed="0.000030"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:06:45.740189" elapsed="0.006963"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T01:06:45.423966" elapsed="0.323341"/>
</kw>
<msg time="2026-04-08T01:06:45.747382" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:06:45.423216" elapsed="0.324251"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-08T01:06:45.422644" elapsed="0.324930"/>
</kw>
<msg time="2026-04-08T01:06:45.747632" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:06:45.422100" elapsed="0.325790"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:06:45.751763" elapsed="0.000177"/>
</kw>
<msg time="2026-04-08T01:06:45.751982" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:06:45.751235" elapsed="0.000807"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:06:45.752220" elapsed="0.000023"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:06:45.752386" elapsed="0.000020"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:06:45.748336" elapsed="0.004129"/>
</kw>
<msg time="2026-04-08T01:06:45.752554" level="INFO">${output} = </msg>
<var>${output}</var>
<arg>Utils.Run_Command_On_Controller</arg>
<arg>${member_ip}</arg>
<arg>${command}</arg>
<doc>Store current connection index, run keyword returning its result, restore connection in teardown.
Note that in order to avoid "got positional argument after named arguments", it is safer to use positional (not named) arguments on call.</doc>
<status status="PASS" start="2026-04-08T01:06:45.421199" elapsed="0.331380"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:06:45.753007" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:06:45.752761" elapsed="0.000286"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-08T01:06:45.753104" elapsed="0.000029"/>
</return>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-08T01:06:45.420235" elapsed="0.333008"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T01:06:45.420042" elapsed="0.333238"/>
</iter>
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:06:45.754306" level="INFO">${member_ip} = 10.30.170.131</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:06:45.753996" elapsed="0.000337"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:06:45.755138" level="INFO">index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-08T01:06:45.755254" level="INFO">${current_connection} = index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

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

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-08T01:06:45.758432" level="INFO">${current_ssh_connection} = index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T01:06:45.758183" elapsed="0.000276"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:06:45.759077" level="INFO">Attempting to execute command "netstat -pnatu | grep 2550" on remote system "10.30.170.131" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:06:45.758612" elapsed="0.000512"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:06:45.759737" level="INFO">${conn_id} = 591</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T01:06:45.759306" elapsed="0.000457"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T01:06:45.761045" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T01:06:45.761151" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T01:06:45.760653" elapsed="0.000537"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:06:45.761358" elapsed="0.000522"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T01:06:45.763241" level="INFO">Logging into '10.30.170.131:22' as 'jenkins'.</msg>
<msg time="2026-04-08T01:06:46.088851" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 01:06:09 UTC 2026

  System load:  0.07               Processes:             121
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.170.131
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 01:06:10 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-0-builder-1 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T01:06:45.762621" elapsed="0.326450"/>
</kw>
<msg time="2026-04-08T01:06:46.089204" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:06:45.762055" elapsed="0.327279"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T01:06:45.759979" elapsed="0.329452"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T01:06:46.089889" level="INFO">Executing command 'netstat -pnatu | grep 2550'.</msg>
<msg time="2026-04-08T01:06:46.101746" level="INFO">Command exited with return code 1.</msg>
<msg time="2026-04-08T01:06:46.101997" level="INFO">${stdout} = </msg>
<msg time="2026-04-08T01:06:46.102098" level="INFO">${stderr} = bash: line 1: netstat: command not found</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T01:06:46.089644" elapsed="0.012508"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T01:06:46.102649" elapsed="0.000457"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:06:46.104308" level="INFO">bash: line 1: netstat: command not found</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:06:46.103574" elapsed="0.000847"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T01:06:46.104909" elapsed="0.000039"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:06:46.104602" elapsed="0.000416"/>
</branch>
<status status="PASS" start="2026-04-08T01:06:46.104548" elapsed="0.000520"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T01:06:46.105471" elapsed="0.000069"/>
</return>
<status status="PASS" start="2026-04-08T01:06:46.105224" elapsed="0.000403"/>
</branch>
<status status="PASS" start="2026-04-08T01:06:46.105152" elapsed="0.000537"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T01:06:46.105773" elapsed="0.000033"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:06:46.111528" elapsed="0.000479"/>
</kw>
<msg time="2026-04-08T01:06:46.112114" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:06:46.110450" elapsed="0.001834"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:06:46.112548" elapsed="0.000034"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:06:46.112791" elapsed="0.000029"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:06:46.106602" elapsed="0.006303"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T01:06:45.757053" elapsed="0.355983"/>
</kw>
<msg time="2026-04-08T01:06:46.113111" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:06:45.756511" elapsed="0.356712"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-08T01:06:45.755936" elapsed="0.357397"/>
</kw>
<msg time="2026-04-08T01:06:46.113391" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:06:45.755437" elapsed="0.358034"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:06:46.118312" elapsed="0.000295"/>
</kw>
<msg time="2026-04-08T01:06:46.118668" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:06:46.117627" elapsed="0.001126"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:06:46.118976" elapsed="0.000030"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:06:46.119233" elapsed="0.000030"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:06:46.113887" elapsed="0.005462"/>
</kw>
<msg time="2026-04-08T01:06:46.119485" level="INFO">${output} = </msg>
<var>${output}</var>
<arg>Utils.Run_Command_On_Controller</arg>
<arg>${member_ip}</arg>
<arg>${command}</arg>
<doc>Store current connection index, run keyword returning its result, restore connection in teardown.
Note that in order to avoid "got positional argument after named arguments", it is safer to use positional (not named) arguments on call.</doc>
<status status="PASS" start="2026-04-08T01:06:45.754549" elapsed="0.364982"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:06:46.120224" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:06:46.119808" elapsed="0.000479"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-08T01:06:46.120351" elapsed="0.000040"/>
</return>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-08T01:06:45.753557" elapsed="0.367041"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T01:06:45.753376" elapsed="0.367273"/>
</iter>
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:06:46.122028" level="INFO">${member_ip} = 10.30.171.110</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:06:46.121654" elapsed="0.000411"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:06:46.123271" level="INFO">index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-08T01:06:46.123412" level="INFO">${current_connection} = index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T01:06:46.123034" elapsed="0.000415"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Controller" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:06:46.126288" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:06:46.125982" elapsed="0.000365"/>
</branch>
<status status="PASS" start="2026-04-08T01:06:46.125962" elapsed="0.000409"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:06:46.126690" level="INFO">index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-08T01:06:46.126790" level="INFO">${current_ssh_connection} = index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T01:06:46.126537" elapsed="0.000280"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:06:46.127452" level="INFO">Attempting to execute command "netstat -pnatu | grep 2550" on remote system "10.30.171.110" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:06:46.126972" elapsed="0.000527"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:06:46.128092" level="INFO">${conn_id} = 592</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T01:06:46.127663" elapsed="0.000455"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T01:06:46.129246" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T01:06:46.129341" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T01:06:46.128832" elapsed="0.000535"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:06:46.129529" elapsed="0.000522"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T01:06:46.131451" level="INFO">Logging into '10.30.171.110:22' as 'jenkins'.</msg>
<msg time="2026-04-08T01:06:46.440379" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 01:06:05 UTC 2026

  System load:  0.24               Processes:             127
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 7%                 IPv4 address for ens3: 10.30.171.110
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 01:06:11 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T01:06:46.130819" elapsed="0.309849"/>
</kw>
<msg time="2026-04-08T01:06:46.440876" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:06:46.130245" elapsed="0.310863"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T01:06:46.128366" elapsed="0.312975"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T01:06:46.442200" level="INFO">Executing command 'netstat -pnatu | grep 2550'.</msg>
<msg time="2026-04-08T01:06:46.454761" level="INFO">Command exited with return code 1.</msg>
<msg time="2026-04-08T01:06:46.455001" level="INFO">${stdout} = </msg>
<msg time="2026-04-08T01:06:46.455098" level="INFO">${stderr} = bash: line 1: netstat: command not found</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T01:06:46.441736" elapsed="0.013414"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T01:06:46.455578" elapsed="0.000480"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:06:46.457129" level="INFO">bash: line 1: netstat: command not found</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:06:46.456489" elapsed="0.000877"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T01:06:46.457805" elapsed="0.000035"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:06:46.457528" elapsed="0.000380"/>
</branch>
<status status="PASS" start="2026-04-08T01:06:46.457482" elapsed="0.000476"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T01:06:46.458352" elapsed="0.000060"/>
</return>
<status status="PASS" start="2026-04-08T01:06:46.458077" elapsed="0.000409"/>
</branch>
<status status="PASS" start="2026-04-08T01:06:46.458044" elapsed="0.000498"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T01:06:46.458619" elapsed="0.000032"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:06:46.464363" elapsed="0.000480"/>
</kw>
<msg time="2026-04-08T01:06:46.464951" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:06:46.463282" elapsed="0.001811"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:06:46.465351" elapsed="0.000033"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:06:46.465587" elapsed="0.000030"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:06:46.459330" elapsed="0.006371"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T01:06:46.125364" elapsed="0.340463"/>
</kw>
<msg time="2026-04-08T01:06:46.465899" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:06:46.124798" elapsed="0.341184"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-08T01:06:46.124233" elapsed="0.341855"/>
</kw>
<msg time="2026-04-08T01:06:46.466142" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:06:46.123703" elapsed="0.342541"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:06:46.470253" elapsed="0.000177"/>
</kw>
<msg time="2026-04-08T01:06:46.470472" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:06:46.469715" elapsed="0.000818"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:06:46.470692" elapsed="0.000022"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:06:46.470855" elapsed="0.000020"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:06:46.466650" elapsed="0.004284"/>
</kw>
<msg time="2026-04-08T01:06:46.471024" level="INFO">${output} = </msg>
<var>${output}</var>
<arg>Utils.Run_Command_On_Controller</arg>
<arg>${member_ip}</arg>
<arg>${command}</arg>
<doc>Store current connection index, run keyword returning its result, restore connection in teardown.
Note that in order to avoid "got positional argument after named arguments", it is safer to use positional (not named) arguments on call.</doc>
<status status="PASS" start="2026-04-08T01:06:46.122391" elapsed="0.348657"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:06:46.471491" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:06:46.471246" elapsed="0.000287"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-08T01:06:46.471578" elapsed="0.000029"/>
</return>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-08T01:06:46.121025" elapsed="0.350688"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T01:06:46.120776" elapsed="0.350974"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-08T01:06:45.419908" elapsed="1.051876"/>
</for>
<arg>command=netstat -pnatu | grep 2550</arg>
<doc>Cycle through indices (or all), run command on each.</doc>
<status status="PASS" start="2026-04-08T01:06:45.415821" elapsed="1.056022"/>
</kw>
<arg>wait_for_sync=False</arg>
<doc>If the list is empty, start all cluster members. Otherwise, start members based on present indices.
If ${wait_for_sync}, wait for cluster sync on listed members.
Optionally karaf_home can be overriden. Optionally specific JAVA_HOME is used for starting.
Garbage collection is unconditionally logged to files. TODO: Make that reasonable conditional?</doc>
<status status="PASS" start="2026-04-08T01:06:10.224817" elapsed="36.247078"/>
</kw>
<doc>Stop and Start cluster.</doc>
<status status="PASS" start="2026-04-08T01:03:57.971978" elapsed="168.500038"/>
</test>
<test id="s1-s4-t66" name="Check Linear Topology After Controller Restarts" line="445">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-08T01:06:46.475523" elapsed="0.000272"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-08T01:06:46.475254" elapsed="0.000600"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:06:46.476907" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:06:46.476798" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-08T01:06:46.476780" elapsed="0.000193"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:06:46.481783" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:06:46.481677" elapsed="0.000150"/>
</branch>
<status status="PASS" start="2026-04-08T01:06:46.481659" elapsed="0.000189"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:06:46.482845" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:06:46.482468" elapsed="0.000403"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:06:46.483352" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:06:46.483032" elapsed="0.000346"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T01:06:46.483422" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T01:06:46.483574" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T01:06:46.482073" elapsed="0.001526"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:06:46.489017" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:06:46.488910" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-08T01:06:46.488891" elapsed="0.000193"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:06:46.490286" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:06:46.490153" elapsed="0.000178"/>
</branch>
<status status="PASS" start="2026-04-08T01:06:46.490134" elapsed="0.000219"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:06:46.490803" level="INFO">${karaf_connection_index} = 476</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:06:46.490499" elapsed="0.000330"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:06:46.491264" level="INFO">${current_connection_index} = 495</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:06:46.490990" elapsed="0.000301"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:06:46.492149" level="FAIL">OSError: Socket is closed</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-08T01:06:46.491871" elapsed="0.000977">OSError: Socket is closed</status>
</kw>
<msg time="2026-04-08T01:06:46.493036" level="INFO">${status_write} = FAIL</msg>
<msg time="2026-04-08T01:06:46.493083" level="INFO">${message_write} = OSError: Socket is closed</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:06:46.491454" elapsed="0.001653"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T01:06:56.494298" level="FAIL">No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="FAIL" start="2026-04-08T01:06:46.493646" elapsed="10.001601">No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-08T01:06:56.495530" level="INFO">${status_wait} = FAIL</msg>
<msg time="2026-04-08T01:06:56.495581" level="INFO">${message_wait} = No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:06:46.493301" elapsed="10.002307"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T01:06:56.496850" level="FAIL">Failed to send the command: log:log "ROBOT MESSAGE: Starting test openflowplugin-clustering.txt.010 Group Flows.Check Linear Topology After Controller Restarts"</msg>
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T01:06:56.496114" elapsed="0.000803">Failed to send the command: log:log "ROBOT MESSAGE: Starting test openflowplugin-clustering.txt.010 Group Flows.Check Linear Topology After Controller Restarts"</status>
</kw>
<status status="FAIL" start="2026-04-08T01:06:56.495746" elapsed="0.001245">Failed to send the command: log:log "ROBOT MESSAGE: Starting test openflowplugin-clustering.txt.010 Group Flows.Check Linear Topology After Controller Restarts"</status>
</branch>
<status status="FAIL" start="2026-04-08T01:06:56.495701" elapsed="0.001326">Failed to send the command: log:log "ROBOT MESSAGE: Starting test openflowplugin-clustering.txt.010 Group Flows.Check Linear Topology After Controller Restarts"</status>
</if>
<kw name="Log" owner="BuiltIn">
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-08T01:06:56.497255" elapsed="0.000024"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:06:56.497497" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:06:56.497350" elapsed="0.000199"/>
</branch>
<status status="NOT RUN" start="2026-04-08T01:06:56.497330" elapsed="0.000244"/>
</if>
<return>
<value>${message_wait}</value>
<status status="NOT RUN" start="2026-04-08T01:06:56.497611" elapsed="0.000017"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:06:56.500567" elapsed="0.000200"/>
</kw>
<msg time="2026-04-08T01:06:56.500835" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:06:56.499377" elapsed="0.001587"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:06:56.501272" elapsed="0.000076"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:06:56.501604" elapsed="0.000073"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:06:56.498713" elapsed="0.003073"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T01:06:56.498101" elapsed="0.003751"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="FAIL" start="2026-04-08T01:06:46.489848" elapsed="10.012092">Failed to send the command: log:log "ROBOT MESSAGE: Starting test openflowplugin-clustering.txt.010 Group Flows.Check Linear Topology After Controller Restarts"</status>
</kw>
<msg time="2026-04-08T01:06:56.502048" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:06:56.502093" level="INFO">${message} = Failed to send the command: log:log "ROBOT MESSAGE: Starting test openflowplugin-clustering.txt.010 Group Flows.Check Linear Topology After Controller Restarts"</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:06:46.489254" elapsed="10.012865"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T01:06:56.502329" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:06:56.502217" elapsed="0.000156"/>
</branch>
<status status="PASS" start="2026-04-08T01:06:56.502196" elapsed="0.000200"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:06:56.503239" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:06:56.503088" elapsed="0.000195"/>
</branch>
<status status="PASS" start="2026-04-08T01:06:56.503070" elapsed="0.000234"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:06:56.503619" level="INFO">index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-08T01:06:56.503722" level="INFO">${current_ssh_connection_object} = index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T01:06:56.503457" elapsed="0.000292"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:06:56.504186" level="INFO">{1: 476, 2: 478, 3: 480}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:06:56.503906" elapsed="0.000326"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:06:56.504629" level="INFO">1</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:06:56.504386" elapsed="0.000286"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:06:56.505240" elapsed="0.000271"/>
</kw>
<msg time="2026-04-08T01:06:56.505610" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:06:56.505655" level="INFO">${old_connection_index} = 476</msg>
<var>${status}</var>
<var>${old_connection_index}</var>
<arg>Get From Dictionary</arg>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:06:56.504831" elapsed="0.000846"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='PASS'">
<kw name="Run Keywords" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${old_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:06:56.506504" elapsed="0.000231"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:06:56.508030" level="FAIL">OSError: Socket is closed</msg>
<arg>logout</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-08T01:06:56.507460" elapsed="0.001325">OSError: Socket is closed</status>
</kw>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:06:56.506905" elapsed="0.001979"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T01:06:56.509564" elapsed="0.000414"/>
</kw>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:06:56.509085" elapsed="0.000977"/>
</kw>
<arg>SSHLibrary.Switch_Connection</arg>
<arg>${old_connection_index}</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Executes all the given keywords in a sequence.</doc>
<status status="PASS" start="2026-04-08T01:06:56.505976" elapsed="0.004132"/>
</kw>
<status status="PASS" start="2026-04-08T01:06:56.505753" elapsed="0.004420"/>
</branch>
<status status="PASS" start="2026-04-08T01:06:56.505735" elapsed="0.004464"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:06:56.511052" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:06:56.510743" elapsed="0.000336"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:06:56.511127" elapsed="0.000102"/>
</return>
<msg time="2026-04-08T01:06:56.511359" level="INFO">${odl_ip} = 10.30.170.48</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:06:56.510409" elapsed="0.000975"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${odl_ip}</arg>
<arg>port=${KARAF_SHELL_PORT}</arg>
<arg>prompt=${KARAF_PROMPT_LOGIN}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T01:06:56.511540" elapsed="0.000432"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:06:56.512313" level="INFO">index=593
host=10.30.170.48
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-08T01:06:56.512443" level="INFO">${karaf_connection_object} = index=593
host=10.30.170.48
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_err...</msg>
<var>${karaf_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T01:06:56.512143" elapsed="0.000328"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<arg>${karaf_connection_object.index}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:06:56.512644" elapsed="0.002278"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-08T01:06:56.515384" level="INFO">Logging into '10.30.170.48:8101' as 'karaf'.</msg>
<msg time="2026-04-08T01:06:57.070724" level="INFO">Read output: [33m                                                                                           
[33m    ________                       ________                .__  .__       .__     __       
[33m    \_____  \ ______   ____   ____ \______ \ _____  ___.__.|  | |__| ____ |  |___/  |_     
[33m     /   |   \\____ \_/ __ \ /    \ |    |  \\__  \&lt;   |  ||  | |  |/ ___\|  |  \   __\    
[33m    /    |    \  |_&gt; &gt;  ___/|   |  \|    `   \/ __ \\___  ||  |_|  / /_/  &gt;   Y  \  |      
[33m    \_______  /   __/ \___  &gt;___|  /_______  (____  / ____||____/__\___  /|___|  /__|      
[33m            \/|__|        \/     \/        \/     \/\/            /_____/      \/          
[33m                                                                                           

Hit '[1m&lt;tab&gt;[0m' for a list of available commands
and '[1m[cmd] --help[0m' for help on a specific command.
Hit '[1m&lt;ctrl-d&gt;[0m' or type '[1msystem:shutdown[0m' or '[1mlogout[0m' to shutdown OpenDaylight.

[?1h=[90m~[0m                                                                                [?2004hopendaylight-user</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="PASS" start="2026-04-08T01:06:56.515091" elapsed="0.555749"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:06:57.084827" elapsed="0.000671"/>
</kw>
<msg time="2026-04-08T01:06:57.085586" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:06:57.083451" elapsed="0.002293"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:06:57.085949" elapsed="0.000023"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:06:57.086118" elapsed="0.000020"/>
</kw>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:06:57.071847" elapsed="0.014374"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T01:06:57.071204" elapsed="0.015066"/>
</kw>
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="PASS" start="2026-04-08T01:06:56.502793" elapsed="0.583528"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:06:57.087111" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:06:57.086987" elapsed="0.000190"/>
</branch>
<status status="PASS" start="2026-04-08T01:06:57.086963" elapsed="0.000238"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:06:57.087578" level="INFO">${karaf_connection_index} = 593</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:06:57.087347" elapsed="0.000256"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:06:57.087966" level="INFO">${current_connection_index} = 495</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:06:57.087760" elapsed="0.000231"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:06:57.179919" level="INFO">@root&gt;log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:06:57.088521" elapsed="0.091479"/>
</kw>
<msg time="2026-04-08T01:06:57.180103" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T01:06:57.180148" level="INFO">${message_write} = @root&gt;log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:06:57.088177" elapsed="0.092028"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T01:06:57.266534" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "L "i "n "e "a "r "[C "T "o "p "o "l "o "g "y "[C "A "f "t "e "r "[C "C "o "n "t "r "o "l "l "e "r "[C "R "e "s "t "a "r "t "s "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T01:06:57.180723" elapsed="0.085950"/>
</kw>
<msg time="2026-04-08T01:06:57.266775" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T01:06:57.266819" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "L "i "n "e "a "r...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:06:57.180380" elapsed="0.086479"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:06:57.267178" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:06:57.266938" elapsed="0.000298"/>
</branch>
<status status="PASS" start="2026-04-08T01:06:57.266917" elapsed="0.000342"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:06:57.267659" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "L "i "n "e "a "r "[C "T "o "p "o "l "o "g "y "[C "A "f "t "e "r "[C "C "o "n "t "r "o "l "l "e "r "[C "R "e "s "t "a "r "t "s "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:06:57.267402" elapsed="0.000332"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:06:57.268021" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:06:57.267801" elapsed="0.000273"/>
</branch>
<status status="PASS" start="2026-04-08T01:06:57.267783" elapsed="0.000315"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T01:06:57.268130" elapsed="0.000044"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:06:57.270666" elapsed="0.000428"/>
</kw>
<msg time="2026-04-08T01:06:57.271195" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:06:57.269338" elapsed="0.002005"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:06:57.271507" elapsed="0.000022"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:06:57.271673" elapsed="0.000020"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:06:57.268920" elapsed="0.002833"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T01:06:57.268413" elapsed="0.003386"/>
</kw>
<msg time="2026-04-08T01:06:57.271923" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "L "i "n "e "a "r...</msg>
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T01:06:57.086663" elapsed="0.185298"/>
</kw>
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T01:06:57.272007" elapsed="0.000028"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T01:06:46.488573" elapsed="10.783555"/>
</kw>
<msg time="2026-04-08T01:06:57.272245" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:06:57.272290" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "L "i "n "e "a "r...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:06:46.484014" elapsed="10.788311"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:06:57.272655" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:06:57.272404" elapsed="0.000303"/>
</branch>
<status status="PASS" start="2026-04-08T01:06:57.272386" elapsed="0.000344"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T01:06:46.483870" elapsed="10.788884"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:06:57.278557" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:06:57.278448" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-08T01:06:57.278427" elapsed="0.000196"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:06:57.279758" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:06:57.279652" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-08T01:06:57.279633" elapsed="0.000192"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:06:57.280287" level="INFO">${karaf_connection_index} = 478</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:06:57.279969" elapsed="0.000345"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:06:57.280733" level="INFO">${current_connection_index} = 495</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:06:57.280483" elapsed="0.000276"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:06:57.281587" level="FAIL">OSError: Socket is closed</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-08T01:06:57.281333" elapsed="0.000784">OSError: Socket is closed</status>
</kw>
<msg time="2026-04-08T01:06:57.282323" level="INFO">${status_write} = FAIL</msg>
<msg time="2026-04-08T01:06:57.282369" level="INFO">${message_write} = OSError: Socket is closed</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:06:57.280920" elapsed="0.001473"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T01:07:07.283500" level="FAIL">No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="FAIL" start="2026-04-08T01:06:57.282906" elapsed="10.001500">No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-08T01:07:07.284676" level="INFO">${status_wait} = FAIL</msg>
<msg time="2026-04-08T01:07:07.284727" level="INFO">${message_wait} = No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:06:57.282566" elapsed="10.002186"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T01:07:07.285987" level="FAIL">Failed to send the command: log:log "ROBOT MESSAGE: Starting test openflowplugin-clustering.txt.010 Group Flows.Check Linear Topology After Controller Restarts"</msg>
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T01:07:07.285283" elapsed="0.000769">Failed to send the command: log:log "ROBOT MESSAGE: Starting test openflowplugin-clustering.txt.010 Group Flows.Check Linear Topology After Controller Restarts"</status>
</kw>
<status status="FAIL" start="2026-04-08T01:07:07.284895" elapsed="0.001231">Failed to send the command: log:log "ROBOT MESSAGE: Starting test openflowplugin-clustering.txt.010 Group Flows.Check Linear Topology After Controller Restarts"</status>
</branch>
<status status="FAIL" start="2026-04-08T01:07:07.284844" elapsed="0.001342">Failed to send the command: log:log "ROBOT MESSAGE: Starting test openflowplugin-clustering.txt.010 Group Flows.Check Linear Topology After Controller Restarts"</status>
</if>
<kw name="Log" owner="BuiltIn">
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:07.286362" elapsed="0.000023"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:07.286599" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:07:07.286452" elapsed="0.000199"/>
</branch>
<status status="NOT RUN" start="2026-04-08T01:07:07.286434" elapsed="0.000241"/>
</if>
<return>
<value>${message_wait}</value>
<status status="NOT RUN" start="2026-04-08T01:07:07.286713" elapsed="0.000017"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:07:07.289435" elapsed="0.000233"/>
</kw>
<msg time="2026-04-08T01:07:07.289745" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:07:07.288306" elapsed="0.001570"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:07.290168" elapsed="0.000082"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:07.290507" elapsed="0.000072"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:07:07.287645" elapsed="0.003043"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T01:07:07.287033" elapsed="0.003719"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="FAIL" start="2026-04-08T01:06:57.279351" elapsed="10.011486">Failed to send the command: log:log "ROBOT MESSAGE: Starting test openflowplugin-clustering.txt.010 Group Flows.Check Linear Topology After Controller Restarts"</status>
</kw>
<msg time="2026-04-08T01:07:07.290943" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:07:07.290987" level="INFO">${message} = Failed to send the command: log:log "ROBOT MESSAGE: Starting test openflowplugin-clustering.txt.010 Group Flows.Check Linear Topology After Controller Restarts"</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:06:57.278775" elapsed="10.012236"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T01:07:07.291216" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:07:07.291090" elapsed="0.000170"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:07.291070" elapsed="0.000211"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:07:07.293906" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:07:07.293795" elapsed="0.000157"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:07.293776" elapsed="0.000198"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:07:07.294332" level="INFO">index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-08T01:07:07.294437" level="INFO">${current_ssh_connection_object} = index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T01:07:07.294130" elapsed="0.000336"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:07:07.294942" level="INFO">{1: 593, 2: 478, 3: 480}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:07:07.294668" elapsed="0.000320"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:07:07.295410" level="INFO">2</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:07:07.295145" elapsed="0.000310"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:07:07.295990" elapsed="0.000285"/>
</kw>
<msg time="2026-04-08T01:07:07.296375" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:07:07.296421" level="INFO">${old_connection_index} = 478</msg>
<var>${status}</var>
<var>${old_connection_index}</var>
<arg>Get From Dictionary</arg>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:07:07.295617" elapsed="0.000826"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='PASS'">
<kw name="Run Keywords" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${old_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:07:07.297285" elapsed="0.000230"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:07:07.298707" level="FAIL">OSError: Socket is closed</msg>
<arg>logout</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-08T01:07:07.298305" elapsed="0.001173">OSError: Socket is closed</status>
</kw>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:07:07.297709" elapsed="0.001866"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T01:07:07.300223" elapsed="0.000324"/>
</kw>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:07:07.299752" elapsed="0.000878"/>
</kw>
<arg>SSHLibrary.Switch_Connection</arg>
<arg>${old_connection_index}</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Executes all the given keywords in a sequence.</doc>
<status status="PASS" start="2026-04-08T01:07:07.296747" elapsed="0.003931"/>
</kw>
<status status="PASS" start="2026-04-08T01:07:07.296525" elapsed="0.004203"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:07.296504" elapsed="0.004248"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:07:07.301721" level="INFO">${ip_address} = 10.30.170.131</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:07:07.301378" elapsed="0.000370"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:07:07.301796" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T01:07:07.301947" level="INFO">${odl_ip} = 10.30.170.131</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:07:07.300960" elapsed="0.001012"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${odl_ip}</arg>
<arg>port=${KARAF_SHELL_PORT}</arg>
<arg>prompt=${KARAF_PROMPT_LOGIN}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T01:07:07.302129" elapsed="0.000452"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:07:07.302903" level="INFO">index=594
host=10.30.170.131
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-08T01:07:07.303001" level="INFO">${karaf_connection_object} = index=594
host=10.30.170.131
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_er...</msg>
<var>${karaf_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T01:07:07.302752" elapsed="0.000275"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<arg>${karaf_connection_object.index}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:07:07.303192" elapsed="0.002234"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-08T01:07:07.305893" level="INFO">Logging into '10.30.170.131:8101' as 'karaf'.</msg>
<msg time="2026-04-08T01:07:07.921261" level="INFO">Read output: [33m                                                                                           
[33m    ________                       ________                .__  .__       .__     __       
[33m    \_____  \ ______   ____   ____ \______ \ _____  ___.__.|  | |__| ____ |  |___/  |_     
[33m     /   |   \\____ \_/ __ \ /    \ |    |  \\__  \&lt;   |  ||  | |  |/ ___\|  |  \   __\    
[33m    /    |    \  |_&gt; &gt;  ___/|   |  \|    `   \/ __ \\___  ||  |_|  / /_/  &gt;   Y  \  |      
[33m    \_______  /   __/ \___  &gt;___|  /_______  (____  / ____||____/__\___  /|___|  /__|      
[33m            \/|__|        \/     \/        \/     \/\/            /_____/      \/          
[33m                                                                                           

Hit '[1m&lt;tab&gt;[0m' for a list of available commands
and '[1m[cmd] --help[0m' for help on a specific command.
Hit '[1m&lt;ctrl-d&gt;[0m' or type '[1msystem:shutdown[0m' or '[1mlogout[0m' to shutdown OpenDaylight.

[?1h=[90m~[0m                                                                                [?2004hopendaylight-user</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="PASS" start="2026-04-08T01:07:07.305617" elapsed="0.615804"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:07:07.943673" elapsed="0.000451"/>
</kw>
<msg time="2026-04-08T01:07:07.944240" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:07:07.942199" elapsed="0.002200"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:07.944569" elapsed="0.000023"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:07.944807" elapsed="0.000021"/>
</kw>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:07:07.923249" elapsed="0.021643"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T01:07:07.921892" elapsed="0.023049"/>
</kw>
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 2,
close the previous connection. In any case create a new connection
to karaf console for 2, set correct prompt set and login to karaf console.
Store connection index for 2 and restore the previous active connection.</doc>
<status status="PASS" start="2026-04-08T01:07:07.291683" elapsed="0.653311"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:07:07.945798" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:07:07.945678" elapsed="0.000171"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:07.945654" elapsed="0.000218"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:07:07.946399" level="INFO">${karaf_connection_index} = 594</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:07:07.946017" elapsed="0.000408"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:07:07.946791" level="INFO">${current_connection_index} = 495</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:07:07.946584" elapsed="0.000232"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:07:08.039736" level="INFO">@root&gt;log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:07:07.947369" elapsed="0.092506"/>
</kw>
<msg time="2026-04-08T01:07:08.040021" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T01:07:08.040067" level="INFO">${message_write} = @root&gt;log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:07:07.946974" elapsed="0.093128"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T01:07:08.179383" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "L "i "n "e "a "r "[C "T "o "p "o "l "o "g "y "[C "A "f "t "e "r "[C "C "o "n "t "r "o "l "l "e "r "[C "R "e "s "t "a "r "t "s "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T01:07:08.040798" elapsed="0.138820"/>
</kw>
<msg time="2026-04-08T01:07:08.179868" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T01:07:08.179968" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "L "i "n "e "a "r...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:07:08.040371" elapsed="0.139676"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:08.180849" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:07:08.180284" elapsed="0.000690"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:08.180224" elapsed="0.000807"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:07:08.182007" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "L "i "n "e "a "r "[C "T "o "p "o "l "o "g "y "[C "A "f "t "e "r "[C "C "o "n "t "r "o "l "l "e "r "[C "R "e "s "t "a "r "t "s "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:07:08.181392" elapsed="0.000811"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:08.182872" elapsed="0.000046"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:07:08.182386" elapsed="0.000605"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:08.182339" elapsed="0.000703"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T01:07:08.183118" elapsed="0.000102"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:07:08.188057" elapsed="0.000498"/>
</kw>
<msg time="2026-04-08T01:07:08.188644" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:07:08.185971" elapsed="0.002829"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:08.188971" elapsed="0.000021"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:08.189137" elapsed="0.000045"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:07:08.185040" elapsed="0.004208"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T01:07:08.183830" elapsed="0.005465"/>
</kw>
<msg time="2026-04-08T01:07:08.189491" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "L "i "n "e "a "r...</msg>
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T01:07:07.945360" elapsed="0.244169"/>
</kw>
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T01:07:08.189577" elapsed="0.000028"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T01:06:57.277950" elapsed="10.911752"/>
</kw>
<msg time="2026-04-08T01:07:08.189798" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:07:08.189843" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "L "i "n "e "a "r...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:06:57.273034" elapsed="10.916845"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:08.190236" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:07:08.189958" elapsed="0.000333"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:08.189939" elapsed="0.000375"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T01:06:57.272892" elapsed="10.917446"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:07:08.196068" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:07:08.195957" elapsed="0.000156"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:08.195937" elapsed="0.000200"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:07:08.197345" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:07:08.197234" elapsed="0.000157"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:08.197215" elapsed="0.000200"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:07:08.197861" level="INFO">${karaf_connection_index} = 480</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:07:08.197562" elapsed="0.000327"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:07:08.198355" level="INFO">${current_connection_index} = 495</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:07:08.198050" elapsed="0.000333"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:07:08.199169" level="FAIL">OSError: Socket is closed</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-08T01:07:08.198886" elapsed="0.000814">OSError: Socket is closed</status>
</kw>
<msg time="2026-04-08T01:07:08.199884" level="INFO">${status_write} = FAIL</msg>
<msg time="2026-04-08T01:07:08.199930" level="INFO">${message_write} = OSError: Socket is closed</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:07:08.198547" elapsed="0.001406"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T01:07:18.201187" level="FAIL">No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="FAIL" start="2026-04-08T01:07:08.200475" elapsed="10.001667">No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-08T01:07:18.202449" level="INFO">${status_wait} = FAIL</msg>
<msg time="2026-04-08T01:07:18.202503" level="INFO">${message_wait} = No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:07:08.200120" elapsed="10.002410"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T01:07:18.203755" level="FAIL">Failed to send the command: log:log "ROBOT MESSAGE: Starting test openflowplugin-clustering.txt.010 Group Flows.Check Linear Topology After Controller Restarts"</msg>
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T01:07:18.203012" elapsed="0.000809">Failed to send the command: log:log "ROBOT MESSAGE: Starting test openflowplugin-clustering.txt.010 Group Flows.Check Linear Topology After Controller Restarts"</status>
</kw>
<status status="FAIL" start="2026-04-08T01:07:18.202659" elapsed="0.001235">Failed to send the command: log:log "ROBOT MESSAGE: Starting test openflowplugin-clustering.txt.010 Group Flows.Check Linear Topology After Controller Restarts"</status>
</branch>
<status status="FAIL" start="2026-04-08T01:07:18.202618" elapsed="0.001312">Failed to send the command: log:log "ROBOT MESSAGE: Starting test openflowplugin-clustering.txt.010 Group Flows.Check Linear Topology After Controller Restarts"</status>
</if>
<kw name="Log" owner="BuiltIn">
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:18.204103" elapsed="0.000024"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:18.204375" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:07:18.204223" elapsed="0.000208"/>
</branch>
<status status="NOT RUN" start="2026-04-08T01:07:18.204197" elapsed="0.000259"/>
</if>
<return>
<value>${message_wait}</value>
<status status="NOT RUN" start="2026-04-08T01:07:18.204495" elapsed="0.000017"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:07:18.207409" elapsed="0.000289"/>
</kw>
<msg time="2026-04-08T01:07:18.207769" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:07:18.206175" elapsed="0.001730"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:18.208212" elapsed="0.000076"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:18.208561" elapsed="0.000077"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:07:18.205469" elapsed="0.003284"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T01:07:18.204824" elapsed="0.003997"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="FAIL" start="2026-04-08T01:07:08.196884" elapsed="10.012028">Failed to send the command: log:log "ROBOT MESSAGE: Starting test openflowplugin-clustering.txt.010 Group Flows.Check Linear Topology After Controller Restarts"</status>
</kw>
<msg time="2026-04-08T01:07:18.209032" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:07:18.209081" level="INFO">${message} = Failed to send the command: log:log "ROBOT MESSAGE: Starting test openflowplugin-clustering.txt.010 Group Flows.Check Linear Topology After Controller Restarts"</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:07:08.196311" elapsed="10.012796"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T01:07:18.209330" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:07:18.209214" elapsed="0.000161"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:18.209192" elapsed="0.000205"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:07:18.210518" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:07:18.210398" elapsed="0.000167"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:18.210111" elapsed="0.000477"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:07:18.210913" level="INFO">index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-08T01:07:18.211020" level="INFO">${current_ssh_connection_object} = index=495
host=10.30.170.192
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T01:07:18.210748" elapsed="0.000301"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:07:18.211501" level="INFO">{1: 593, 2: 594, 3: 480}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:07:18.211225" elapsed="0.000321"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:07:18.211957" level="INFO">3</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:07:18.211705" elapsed="0.000297"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:07:18.212558" elapsed="0.000292"/>
</kw>
<msg time="2026-04-08T01:07:18.212968" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:07:18.213025" level="INFO">${old_connection_index} = 480</msg>
<var>${status}</var>
<var>${old_connection_index}</var>
<arg>Get From Dictionary</arg>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:07:18.212179" elapsed="0.000878"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='PASS'">
<kw name="Run Keywords" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${old_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:07:18.213971" elapsed="0.000353"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:07:18.215415" level="FAIL">OSError: Socket is closed</msg>
<arg>logout</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-08T01:07:18.214980" elapsed="0.001213">OSError: Socket is closed</status>
</kw>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:07:18.214501" elapsed="0.001793"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T01:07:18.217031" elapsed="0.000403"/>
</kw>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:07:18.216490" elapsed="0.001038"/>
</kw>
<arg>SSHLibrary.Switch_Connection</arg>
<arg>${old_connection_index}</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Executes all the given keywords in a sequence.</doc>
<status status="PASS" start="2026-04-08T01:07:18.213426" elapsed="0.004166"/>
</kw>
<status status="PASS" start="2026-04-08T01:07:18.213177" elapsed="0.004469"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:18.213135" elapsed="0.004537"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:07:18.218561" level="INFO">${ip_address} = 10.30.171.110</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:07:18.218245" elapsed="0.000344"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:07:18.218640" elapsed="0.000033"/>
</return>
<msg time="2026-04-08T01:07:18.218798" level="INFO">${odl_ip} = 10.30.171.110</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:07:18.217887" elapsed="0.000937"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${odl_ip}</arg>
<arg>port=${KARAF_SHELL_PORT}</arg>
<arg>prompt=${KARAF_PROMPT_LOGIN}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T01:07:18.219032" elapsed="0.000482"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:07:18.219850" level="INFO">index=595
host=10.30.171.110
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-08T01:07:18.219952" level="INFO">${karaf_connection_object} = index=595
host=10.30.171.110
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_er...</msg>
<var>${karaf_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T01:07:18.219691" elapsed="0.000288"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<arg>${karaf_connection_object.index}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:07:18.220133" elapsed="0.002369"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-08T01:07:18.222999" level="INFO">Logging into '10.30.171.110:8101' as 'karaf'.</msg>
<msg time="2026-04-08T01:07:18.761390" level="INFO">Read output: [33m                                                                                           
[33m    ________                       ________                .__  .__       .__     __       
[33m    \_____  \ ______   ____   ____ \______ \ _____  ___.__.|  | |__| ____ |  |___/  |_     
[33m     /   |   \\____ \_/ __ \ /    \ |    |  \\__  \&lt;   |  ||  | |  |/ ___\|  |  \   __\    
[33m    /    |    \  |_&gt; &gt;  ___/|   |  \|    `   \/ __ \\___  ||  |_|  / /_/  &gt;   Y  \  |      
[33m    \_______  /   __/ \___  &gt;___|  /_______  (____  / ____||____/__\___  /|___|  /__|      
[33m            \/|__|        \/     \/        \/     \/\/            /_____/      \/          
[33m                                                                                           

Hit '[1m&lt;tab&gt;[0m' for a list of available commands
and '[1m[cmd] --help[0m' for help on a specific command.
Hit '[1m&lt;ctrl-d&gt;[0m' or type '[1msystem:shutdown[0m' or '[1mlogout[0m' to shutdown OpenDaylight.

[?1h=[90m~[0m                                                                                [?2004hopendaylight-user</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="PASS" start="2026-04-08T01:07:18.222687" elapsed="0.538881"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:07:18.775910" elapsed="0.000648"/>
</kw>
<msg time="2026-04-08T01:07:18.776657" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:07:18.774477" elapsed="0.002344"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:18.776990" elapsed="0.000022"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:18.777172" elapsed="0.000027"/>
</kw>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:07:18.763097" elapsed="0.014170"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T01:07:18.762023" elapsed="0.015294"/>
</kw>
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 3,
close the previous connection. In any case create a new connection
to karaf console for 3, set correct prompt set and login to karaf console.
Store connection index for 3 and restore the previous active connection.</doc>
<status status="PASS" start="2026-04-08T01:07:18.209829" elapsed="0.567560"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:07:18.778278" elapsed="0.000019"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:07:18.778102" elapsed="0.000233"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:18.778079" elapsed="0.000280"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:07:18.778741" level="INFO">${karaf_connection_index} = 595</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:07:18.778508" elapsed="0.000259"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:07:18.779131" level="INFO">${current_connection_index} = 495</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:07:18.778923" elapsed="0.000247"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:07:18.849338" level="INFO">@root&gt;log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:07:18.779678" elapsed="0.069846"/>
</kw>
<msg time="2026-04-08T01:07:18.849758" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T01:07:18.849861" level="INFO">${message_write} = @root&gt;log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:07:18.779335" elapsed="0.070603"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T01:07:18.955777" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "L "i "n "e "a "r "[C "T "o "p "o "l "o "g "y "[C "A "f "t "e "r "[C "C "o "n "t "r "o "l "l "e "r "[C "R "e "s "t "a "r "t "s "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T01:07:18.851149" elapsed="0.104851"/>
</kw>
<msg time="2026-04-08T01:07:18.956112" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T01:07:18.956171" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "L "i "n "e "a "r...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:07:18.850366" elapsed="0.105844"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:18.956565" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:07:18.956304" elapsed="0.000318"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:18.956278" elapsed="0.000370"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:07:18.957068" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "L "i "n "e "a "r "[C "T "o "p "o "l "o "g "y "[C "A "f "t "e "r "[C "C "o "n "t "r "o "l "l "e "r "[C "R "e "s "t "a "r "t "s "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:07:18.956793" elapsed="0.000350"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:18.957446" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:07:18.957227" elapsed="0.000273"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:18.957208" elapsed="0.000316"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T01:07:18.957560" elapsed="0.000035"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:07:18.960192" elapsed="0.000434"/>
</kw>
<msg time="2026-04-08T01:07:18.960715" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:07:18.958843" elapsed="0.002027"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:18.961036" elapsed="0.000022"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:18.961227" elapsed="0.000022"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:07:18.958429" elapsed="0.002882"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T01:07:18.957871" elapsed="0.003488"/>
</kw>
<msg time="2026-04-08T01:07:18.961489" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "L "i "n "e "a "r...</msg>
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T01:07:18.777779" elapsed="0.183750"/>
</kw>
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T01:07:18.961578" elapsed="0.000028"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T01:07:08.195609" elapsed="10.766094"/>
</kw>
<msg time="2026-04-08T01:07:18.961800" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:07:18.961845" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "L "i "n "e "a "r...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:07:08.190627" elapsed="10.771255"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:18.962246" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:07:18.961963" elapsed="0.000337"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:18.961944" elapsed="0.000381"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T01:07:08.190481" elapsed="10.771868"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-08T01:06:46.483652" elapsed="32.478730"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-08T01:06:46.481320" elapsed="32.481123"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-08T01:06:46.476512" elapsed="32.485989"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:06:46.476056" elapsed="32.486492"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-08T01:06:46.472797" elapsed="32.489807"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Check Linear Topology On Member" owner="ClusterOpenFlow">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:07:18.964563" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:07:18.964259" elapsed="0.000330"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T01:07:18.964672" elapsed="0.000031"/>
</return>
<msg time="2026-04-08T01:07:18.964826" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T01:07:18.963891" elapsed="0.000960"/>
</kw>
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T01:07:18.995493" level="INFO">GET Request : url=http://10.30.170.48:8181/rests/data/network-topology:network-topology?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01s3bfo0y24i1es90l47mavglv0.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T01:07:18.996032" level="INFO">GET Response : url=http://10.30.170.48:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '2973'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}} 
 </msg>
<msg time="2026-04-08T01:07:18.996372" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${RFC8040_OPERATIONAL_TOPO_API}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T01:07:18.965009" elapsed="0.031424"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:07:19.002406" level="INFO">{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"},{"tp-id":"openflow:2:3","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:3']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:1']"},{"tp-id":"openflow:3:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:2']"},{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:2:3","source":{"source-node":"openflow:2","source-tp":"openflow:2:3"},"destination":{"dest-tp":"openflow:3:2","dest-node":"openflow:3"}},{"link-id":"openflow:3:2","source":{"source-node":"openflow:3","source-tp":"openflow:3:2"},"destination":{"dest-tp":"openflow:2:3","dest-node":"openflow:2"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]}]}}</msg>
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:07:18.996862" elapsed="0.005696"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"node-id":"openflow:${switch}"</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-08T01:07:19.006247" elapsed="0.002553"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-08T01:07:19.008982" elapsed="0.002534"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-08T01:07:19.011699" elapsed="0.002505"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-08T01:07:19.014446" elapsed="0.002508"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-08T01:07:19.017138" elapsed="0.002499"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:07:19.020290" level="INFO">${edge} = True</msg>
<var>${edge}</var>
<arg>${switch}==1 or ${switch}==${switches}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:07:19.019829" elapsed="0.000489"/>
</kw>
<if>
<branch type="IF" condition="not ${edge}">
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:3"</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:19.020623" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:07:19.020392" elapsed="0.000288"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:19.020373" elapsed="0.000332"/>
</if>
<if>
<branch type="IF" condition="not ${edge}">
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:3"</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:19.020983" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:07:19.020759" elapsed="0.000280"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:19.020744" elapsed="0.000319"/>
</if>
<if>
<branch type="IF" condition="not ${edge}">
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:3</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:19.021354" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:07:19.021115" elapsed="0.000294"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:19.021100" elapsed="0.000332"/>
</if>
<var name="${switch}">1</var>
<status status="PASS" start="2026-04-08T01:07:19.006068" elapsed="0.015387"/>
</iter>
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"node-id":"openflow:${switch}"</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-08T01:07:19.021813" elapsed="0.002524"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-08T01:07:19.024530" elapsed="0.002480"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-08T01:07:19.027205" elapsed="0.002482"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-08T01:07:19.029865" elapsed="0.002578"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-08T01:07:19.032628" elapsed="0.002466"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:07:19.035749" level="INFO">${edge} = False</msg>
<var>${edge}</var>
<arg>${switch}==1 or ${switch}==${switches}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:07:19.035288" elapsed="0.000489"/>
</kw>
<if>
<branch type="IF" condition="not ${edge}">
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:3"</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-08T01:07:19.036076" elapsed="0.002500"/>
</kw>
<status status="PASS" start="2026-04-08T01:07:19.035847" elapsed="0.002769"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:19.035828" elapsed="0.002813"/>
</if>
<if>
<branch type="IF" condition="not ${edge}">
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:3"</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-08T01:07:19.038926" elapsed="0.002480"/>
</kw>
<status status="PASS" start="2026-04-08T01:07:19.038696" elapsed="0.002750"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:19.038680" elapsed="0.002790"/>
</if>
<if>
<branch type="IF" condition="not ${edge}">
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:3</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-08T01:07:19.041761" elapsed="0.002480"/>
</kw>
<status status="PASS" start="2026-04-08T01:07:19.041530" elapsed="0.002751"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:19.041513" elapsed="0.002793"/>
</if>
<var name="${switch}">2</var>
<status status="PASS" start="2026-04-08T01:07:19.021662" elapsed="0.022668"/>
</iter>
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"node-id":"openflow:${switch}"</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-08T01:07:19.044698" elapsed="0.002610"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-08T01:07:19.047490" elapsed="0.002493"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-08T01:07:19.050178" elapsed="0.002572"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-08T01:07:19.052934" elapsed="0.002480"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-08T01:07:19.055595" elapsed="0.002483"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:07:19.058716" level="INFO">${edge} = True</msg>
<var>${edge}</var>
<arg>${switch}==1 or ${switch}==${switches}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:07:19.058279" elapsed="0.000464"/>
</kw>
<if>
<branch type="IF" condition="not ${edge}">
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:3"</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:19.059042" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:07:19.058813" elapsed="0.000329"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:19.058795" elapsed="0.000388"/>
</if>
<if>
<branch type="IF" condition="not ${edge}">
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:3"</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:19.059470" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:07:19.059241" elapsed="0.000285"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:19.059224" elapsed="0.000325"/>
</if>
<if>
<branch type="IF" condition="not ${edge}">
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:3</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:19.059853" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:07:19.059602" elapsed="0.000307"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:19.059587" elapsed="0.000345"/>
</if>
<var name="${switch}">3</var>
<status status="PASS" start="2026-04-08T01:07:19.044540" elapsed="0.015415"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="PASS" start="2026-04-08T01:07:19.002675" elapsed="0.057309"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check Linear topology.</doc>
<status status="PASS" start="2026-04-08T01:07:18.963485" elapsed="0.096558"/>
</kw>
<arg>300s</arg>
<arg>2s</arg>
<arg>ClusterOpenFlow.Check Linear Topology On Member</arg>
<arg>${SWITCHES}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-08T01:07:18.962779" elapsed="0.097312"/>
</kw>
<doc>Check Linear Topology</doc>
<status status="PASS" start="2026-04-08T01:06:46.472270" elapsed="32.587960"/>
</test>
<test id="s1-s4-t67" name="Check Stats Are Not Frozen After Cluster Restart" line="449">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-08T01:07:19.063451" elapsed="0.000219"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-08T01:07:19.063183" elapsed="0.000542"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:07:19.064723" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:07:19.064612" elapsed="0.000157"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:19.064594" elapsed="0.000197"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:07:19.069561" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:07:19.069455" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:19.069438" elapsed="0.000191"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:07:19.070635" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:07:19.070253" elapsed="0.000410"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:07:19.071128" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:07:19.070827" elapsed="0.000341"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T01:07:19.071216" elapsed="0.000031"/>
</return>
<msg time="2026-04-08T01:07:19.071373" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T01:07:19.069858" elapsed="0.001541"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:07:19.076911" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:07:19.076803" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:19.076784" elapsed="0.000194"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:07:19.078126" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:07:19.078018" elapsed="0.000175"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:19.078000" elapsed="0.000216"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:07:19.078661" level="INFO">${karaf_connection_index} = 593</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:07:19.078364" elapsed="0.000324"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:07:19.079104" level="INFO">${current_connection_index} = 495</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:07:19.078848" elapsed="0.000283"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:07:19.136549" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:07:19.079661" elapsed="0.057016"/>
</kw>
<msg time="2026-04-08T01:07:19.136857" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T01:07:19.136904" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:07:19.079310" elapsed="0.057632"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T01:07:19.249353" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "S "t "a "t "s "[C "A "r "e "[C "N "o "t "[C "F "r "o "z "e "n "[C "A "f "t "e "r "[C "C "l "u "s "t "e "r "[C "R "e "s "t "a "r "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T01:07:19.137556" elapsed="0.111975"/>
</kw>
<msg time="2026-04-08T01:07:19.249693" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T01:07:19.249740" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "S "t "a "t "s "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:07:19.137149" elapsed="0.112628"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:19.250101" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:07:19.249861" elapsed="0.000320"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:19.249838" elapsed="0.000371"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:07:19.250657" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "S "t "a "t "s "[C "A "r "e "[C "N "o "t "[C "F "r "o "z "e "n "[C "A "f "t "e "r "[C "C "l "u "s "t "e "r "[C "R "e "s "t "a "r "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:07:19.250355" elapsed="0.000378"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:19.251021" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:07:19.250800" elapsed="0.000274"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:19.250781" elapsed="0.000316"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T01:07:19.251132" elapsed="0.000048"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:07:19.253656" elapsed="0.000187"/>
</kw>
<msg time="2026-04-08T01:07:19.253905" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:07:19.252650" elapsed="0.001390"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:19.254470" elapsed="0.000079"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:19.254814" elapsed="0.000073"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:07:19.252009" elapsed="0.002987"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T01:07:19.251461" elapsed="0.003601"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T01:07:19.077717" elapsed="0.177459"/>
</kw>
<msg time="2026-04-08T01:07:19.255290" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:07:19.255335" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "S "t "a "t "s "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:07:19.077130" elapsed="0.178242"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T01:07:19.255705" elapsed="0.000028"/>
</return>
<status status="PASS" start="2026-04-08T01:07:19.255450" elapsed="0.000319"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:19.255431" elapsed="0.000362"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:19.256204" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:19.256542" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T01:07:19.256611" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T01:07:19.076462" elapsed="0.180255"/>
</kw>
<msg time="2026-04-08T01:07:19.256812" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:07:19.256856" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "S "t "a "t "s "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:07:19.071785" elapsed="0.185109"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:19.257236" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:07:19.256969" elapsed="0.000320"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:19.256952" elapsed="0.000360"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T01:07:19.071615" elapsed="0.185720"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:07:19.262870" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:07:19.262762" elapsed="0.000217"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:19.262743" elapsed="0.000261"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:07:19.264194" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:07:19.264068" elapsed="0.000172"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:19.264050" elapsed="0.000212"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:07:19.264707" level="INFO">${karaf_connection_index} = 594</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:07:19.264409" elapsed="0.000324"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:07:19.265144" level="INFO">${current_connection_index} = 495</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:07:19.264893" elapsed="0.000293"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:07:19.324795" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:07:19.265686" elapsed="0.059266"/>
</kw>
<msg time="2026-04-08T01:07:19.325148" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T01:07:19.325222" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:07:19.265350" elapsed="0.059909"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T01:07:19.416943" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "S "t "a "t "s "[C "A "r "e "[C "N "o "t "[C "F "r "o "z "e "n "[C "A "f "t "e "r "[C "C "l "u "s "t "e "r "[C "R "e "s "t "a "r "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T01:07:19.325903" elapsed="0.091160"/>
</kw>
<msg time="2026-04-08T01:07:19.417246" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T01:07:19.417293" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "S "t "a "t "s "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:07:19.325484" elapsed="0.091845"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:19.417678" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:07:19.417424" elapsed="0.000310"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:19.417399" elapsed="0.000360"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:07:19.418230" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "S "t "a "t "s "[C "A "r "e "[C "N "o "t "[C "F "r "o "z "e "n "[C "A "f "t "e "r "[C "C "l "u "s "t "e "r "[C "R "e "s "t "a "r "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:07:19.417905" elapsed="0.000403"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:19.418597" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:07:19.418377" elapsed="0.000275"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:19.418358" elapsed="0.000317"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T01:07:19.418711" elapsed="0.000036"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:07:19.421356" elapsed="0.000196"/>
</kw>
<msg time="2026-04-08T01:07:19.421613" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:07:19.420275" elapsed="0.001470"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:19.422017" elapsed="0.000073"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:19.422371" elapsed="0.000071"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:07:19.419628" elapsed="0.002924"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T01:07:19.419047" elapsed="0.003570"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T01:07:19.263766" elapsed="0.158953"/>
</kw>
<msg time="2026-04-08T01:07:19.422815" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:07:19.422859" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "S "t "a "t "s "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:07:19.263180" elapsed="0.159732"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T01:07:19.423152" elapsed="0.000043"/>
</return>
<status status="PASS" start="2026-04-08T01:07:19.423042" elapsed="0.000187"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:19.423022" elapsed="0.000230"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 2,
close the previous connection. In any case create a new connection
to karaf console for 2, set correct prompt set and login to karaf console.
Store connection index for 2 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:19.423650" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:19.423985" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T01:07:19.424057" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T01:07:19.262414" elapsed="0.161766"/>
</kw>
<msg time="2026-04-08T01:07:19.424280" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:07:19.424326" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "S "t "a "t "s "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:07:19.257608" elapsed="0.166754"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:19.424698" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:07:19.424440" elapsed="0.000311"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:19.424422" elapsed="0.000352"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T01:07:19.257460" elapsed="0.167338"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:07:19.430361" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:07:19.430252" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:19.430232" elapsed="0.000197"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:07:19.431622" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:07:19.431514" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:19.431496" elapsed="0.000194"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:07:19.432137" level="INFO">${karaf_connection_index} = 595</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:07:19.431837" elapsed="0.000383"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:07:19.432637" level="INFO">${current_connection_index} = 495</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:07:19.432384" elapsed="0.000279"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:07:19.495092" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:07:19.433174" elapsed="0.062033"/>
</kw>
<msg time="2026-04-08T01:07:19.495367" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T01:07:19.495413" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:07:19.432823" elapsed="0.062625"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T01:07:19.605071" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "S "t "a "t "s "[C "A "r "e "[C "N "o "t "[C "F "r "o "z "e "n "[C "A "f "t "e "r "[C "C "l "u "s "t "e "r "[C "R "e "s "t "a "r "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T01:07:19.495963" elapsed="0.109235"/>
</kw>
<msg time="2026-04-08T01:07:19.605358" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T01:07:19.605404" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "S "t "a "t "s "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:07:19.495620" elapsed="0.109819"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:19.605742" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:07:19.605518" elapsed="0.000278"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:19.605497" elapsed="0.000322"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:07:19.606288" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "S "t "a "t "s "[C "A "r "e "[C "N "o "t "[C "F "r "o "z "e "n "[C "A "f "t "e "r "[C "C "l "u "s "t "e "r "[C "R "e "s "t "a "r "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:07:19.605963" elapsed="0.000402"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:19.606711" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:07:19.606470" elapsed="0.000295"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:19.606450" elapsed="0.000338"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T01:07:19.606821" elapsed="0.000027"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:07:19.609298" elapsed="0.000190"/>
</kw>
<msg time="2026-04-08T01:07:19.609548" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:07:19.608263" elapsed="0.001414"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:19.609948" elapsed="0.000074"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:19.610310" elapsed="0.000075"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:07:19.607643" elapsed="0.002852"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T01:07:19.607089" elapsed="0.003495"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T01:07:19.431210" elapsed="0.179476"/>
</kw>
<msg time="2026-04-08T01:07:19.610777" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:07:19.610820" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "S "t "a "t "s "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:07:19.430584" elapsed="0.180272"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T01:07:19.611039" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-08T01:07:19.610933" elapsed="0.000164"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:19.610914" elapsed="0.000206"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 3,
close the previous connection. In any case create a new connection
to karaf console for 3, set correct prompt set and login to karaf console.
Store connection index for 3 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:19.611527" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:19.611855" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T01:07:19.611925" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T01:07:19.429866" elapsed="0.182164"/>
</kw>
<msg time="2026-04-08T01:07:19.612123" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:07:19.612183" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "S "t "a "t "s "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:07:19.425072" elapsed="0.187148"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:19.612544" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:07:19.612296" elapsed="0.000300"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:19.612279" elapsed="0.000340"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T01:07:19.424928" elapsed="0.187714"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-08T01:07:19.071449" elapsed="0.541223"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-08T01:07:19.069086" elapsed="0.543644"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-08T01:07:19.064325" elapsed="0.548463"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:07:19.063882" elapsed="0.548952"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-08T01:07:19.061057" elapsed="0.551833"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Check Flow Stats Are Not Frozen">
<kw name="Extract Flow Duration">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:07:19.615119" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:07:19.614822" elapsed="0.000324"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T01:07:19.615282" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T01:07:19.615431" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T01:07:19.614445" elapsed="0.001011"/>
</kw>
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T01:07:19.643595" level="INFO">GET Request : url=http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0/flow=1?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0/flow=1?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node01s3bfo0y24i1es90l47mavglv0.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T01:07:19.644204" level="INFO">GET Response : url=http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0/flow=1?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '487'} 
 body={"flow-node-inventory:flow":[{"id":"1","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.1/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":1}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":37,"nanosecond":370000000}},"flags":""}]} 
 </msg>
<msg time="2026-04-08T01:07:19.644342" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${RFC8040_NODES_API}/node=openflow%3A1/flow-node-inventory:table=0/flow=1?content=nonconfig</arg>
<arg>headers=${headers}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T01:07:19.615650" elapsed="0.028727"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:07:19.647884" level="INFO">{"flow-node-inventory:flow":[{"id":"1","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.1/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":1}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":37,"nanosecond":370000000}},"flags":""}]}</msg>
<arg>${resp.content}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:07:19.644633" elapsed="0.003319"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:07:19.652214" level="INFO">${json_data} = {'flow-node-inventory:flow': [{'id': '1', 'table_id': 0, 'priority': 100, 'cookie_mask': '0', 'idle-timeout': 0, 'match': {'ethernet-match': {'ethernet-type': {'type': 2048}}, 'ipv4-destination': '10....</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:07:19.651607" elapsed="0.000649"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-08T01:07:19.652324" elapsed="0.000041"/>
</return>
<msg time="2026-04-08T01:07:19.652564" level="INFO">${json_resp} = {'flow-node-inventory:flow': [{'id': '1', 'table_id': 0, 'priority': 100, 'cookie_mask': '0', 'idle-timeout': 0, 'match': {'ethernet-match': {'ethernet-type': {'type': 2048}}, 'ipv4-destination': '10....</msg>
<var>${json_resp}</var>
<arg>${resp.content}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-08T01:07:19.648275" elapsed="0.004326"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:07:19.653090" level="INFO">${flow_list} = [{'id': '1', 'table_id': 0, 'priority': 100, 'cookie_mask': '0', 'idle-timeout': 0, 'match': {'ethernet-match': {'ethernet-type': {'type': 2048}}, 'ipv4-destination': '10.0.10.1/32'}, 'cookie': '0', '...</msg>
<var>${flow_list}</var>
<arg>${json_resp}</arg>
<arg>flow-node-inventory:flow</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:07:19.652820" elapsed="0.000308"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:07:19.653632" level="INFO">${flow_stats} = {'packet-count': '0', 'byte-count': '0', 'duration': {'second': 37, 'nanosecond': 370000000}}</msg>
<var>${flow_stats}</var>
<arg>${flow_list}[0]</arg>
<arg>opendaylight-flow-statistics:flow-statistics</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:07:19.653369" elapsed="0.000300"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:07:19.654215" level="INFO">${duration} = 37</msg>
<var>${duration}</var>
<arg>${flow_stats}[duration]</arg>
<arg>second</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:07:19.653933" elapsed="0.000319"/>
</kw>
<return>
<value>${duration}</value>
<status status="PASS" start="2026-04-08T01:07:19.654316" elapsed="0.000038"/>
</return>
<msg time="2026-04-08T01:07:19.654554" level="INFO">${duration_1} = 37</msg>
<var>${duration_1}</var>
<arg>${member_index}</arg>
<doc>Extract duration for flow 1 in switch 1.</doc>
<status status="PASS" start="2026-04-08T01:07:19.613876" elapsed="0.040712"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:07:19.655248" level="INFO">${duration_1} = 37</msg>
<var>${duration_1}</var>
<arg>${duration_1}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:07:19.654803" elapsed="0.000482"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-08T01:07:24.655987" level="INFO">Slept 5 seconds.</msg>
<arg>${period_in_seconds}</arg>
<doc>Pauses the test executed for the given time.</doc>
<status status="PASS" start="2026-04-08T01:07:19.655502" elapsed="5.000772"/>
</kw>
<kw name="Extract Flow Duration">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:07:24.659610" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:07:24.658805" elapsed="0.000872"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T01:07:24.659785" elapsed="0.000079"/>
</return>
<msg time="2026-04-08T01:07:24.660141" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T01:07:24.657864" elapsed="0.002384"/>
</kw>
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T01:07:24.678902" level="INFO">GET Request : url=http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0/flow=1?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0/flow=1?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node01s3bfo0y24i1es90l47mavglv0.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T01:07:24.679856" level="INFO">GET Response : url=http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0/flow=1?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '487'} 
 body={"flow-node-inventory:flow":[{"id":"1","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.1/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":1}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":524000000}},"flags":""}]} 
 </msg>
<msg time="2026-04-08T01:07:24.680246" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${RFC8040_NODES_API}/node=openflow%3A1/flow-node-inventory:table=0/flow=1?content=nonconfig</arg>
<arg>headers=${headers}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T01:07:24.660619" elapsed="0.019690"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:07:24.684473" level="INFO">{"flow-node-inventory:flow":[{"id":"1","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.1/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":1}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":524000000}},"flags":""}]}</msg>
<arg>${resp.content}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:07:24.680776" elapsed="0.003750"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:07:24.687633" level="INFO">${json_data} = {'flow-node-inventory:flow': [{'id': '1', 'table_id': 0, 'priority': 100, 'cookie_mask': '0', 'idle-timeout': 0, 'match': {'ethernet-match': {'ethernet-type': {'type': 2048}}, 'ipv4-destination': '10....</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:07:24.687185" elapsed="0.000479"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-08T01:07:24.687716" elapsed="0.000037"/>
</return>
<msg time="2026-04-08T01:07:24.687896" level="INFO">${json_resp} = {'flow-node-inventory:flow': [{'id': '1', 'table_id': 0, 'priority': 100, 'cookie_mask': '0', 'idle-timeout': 0, 'match': {'ethernet-match': {'ethernet-type': {'type': 2048}}, 'ipv4-destination': '10....</msg>
<var>${json_resp}</var>
<arg>${resp.content}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-08T01:07:24.684765" elapsed="0.003159"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:07:24.688301" level="INFO">${flow_list} = [{'id': '1', 'table_id': 0, 'priority': 100, 'cookie_mask': '0', 'idle-timeout': 0, 'match': {'ethernet-match': {'ethernet-type': {'type': 2048}}, 'ipv4-destination': '10.0.10.1/32'}, 'cookie': '0', '...</msg>
<var>${flow_list}</var>
<arg>${json_resp}</arg>
<arg>flow-node-inventory:flow</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:07:24.688083" elapsed="0.000248"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:07:24.688678" level="INFO">${flow_stats} = {'packet-count': '0', 'byte-count': '0', 'duration': {'second': 43, 'nanosecond': 524000000}}</msg>
<var>${flow_stats}</var>
<arg>${flow_list}[0]</arg>
<arg>opendaylight-flow-statistics:flow-statistics</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:07:24.688489" elapsed="0.000216"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:07:24.689043" level="INFO">${duration} = 43</msg>
<var>${duration}</var>
<arg>${flow_stats}[duration]</arg>
<arg>second</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:07:24.688860" elapsed="0.000209"/>
</kw>
<return>
<value>${duration}</value>
<status status="PASS" start="2026-04-08T01:07:24.689116" elapsed="0.000027"/>
</return>
<msg time="2026-04-08T01:07:24.689300" level="INFO">${duration_2} = 43</msg>
<var>${duration_2}</var>
<arg>${member_index}</arg>
<doc>Extract duration for flow 1 in switch 1.</doc>
<status status="PASS" start="2026-04-08T01:07:24.656851" elapsed="0.032475"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:07:24.689791" level="INFO">${duration_2} = 43</msg>
<var>${duration_2}</var>
<arg>${duration_2}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:07:24.689483" elapsed="0.000334"/>
</kw>
<kw name="Should Not Be Equal As Integers" owner="BuiltIn">
<arg>${duration_1}</arg>
<arg>${duration_2}</arg>
<doc>Fails if objects are equal after converting them to integers.</doc>
<status status="PASS" start="2026-04-08T01:07:24.690000" elapsed="0.000338"/>
</kw>
<doc>Verify flow stats are not frozen for flow 1 and switch 1.</doc>
<status status="PASS" start="2026-04-08T01:07:19.613551" elapsed="5.076848"/>
</kw>
<arg>30s</arg>
<arg>1s</arg>
<arg>Check Flow Stats Are Not Frozen</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-08T01:07:19.613070" elapsed="5.077374"/>
</kw>
<doc>Check that duration flow stat is increasing.</doc>
<status status="PASS" start="2026-04-08T01:07:19.060523" elapsed="5.630041"/>
</test>
<test id="s1-s4-t68" name="Check Flows In Operational DS After Controller Restarts" line="453">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-08T01:07:24.694347" elapsed="0.000205"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-08T01:07:24.694038" elapsed="0.000568"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:07:24.695617" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:07:24.695500" elapsed="0.000162"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:24.695480" elapsed="0.000205"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:07:24.700463" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:07:24.700357" elapsed="0.000150"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:24.700339" elapsed="0.000190"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:07:24.701523" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:07:24.701129" elapsed="0.000420"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:07:24.702012" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:07:24.701714" elapsed="0.000325"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T01:07:24.702082" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T01:07:24.702248" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T01:07:24.700753" elapsed="0.001520"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:07:24.709136" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:07:24.709027" elapsed="0.000170"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:24.709008" elapsed="0.000212"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:07:24.710420" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:07:24.710311" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:24.710292" elapsed="0.000196"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:07:24.710929" level="INFO">${karaf_connection_index} = 593</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:07:24.710634" elapsed="0.000322"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:07:24.711391" level="INFO">${current_connection_index} = 495</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:07:24.711116" elapsed="0.000302"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:07:24.762744" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:07:24.711915" elapsed="0.050933"/>
</kw>
<msg time="2026-04-08T01:07:24.763041" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T01:07:24.763089" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:07:24.711579" elapsed="0.051545"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T01:07:24.839905" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "[C "I "n "[C "O "p "e "r "a "t "i "o "n "a "l "[C "D "S "[C "A "f "t "e "r "[C "C "o "n "t "r "o "l "l "e "r "[C "R "e "s "t "[78Ca "[A[78Cr
 "t "s "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T01:07:24.763696" elapsed="0.076329"/>
</kw>
<msg time="2026-04-08T01:07:24.840208" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T01:07:24.840257" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:07:24.763334" elapsed="0.076959"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:24.840612" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:07:24.840375" elapsed="0.000292"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:24.840353" elapsed="0.000340"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:07:24.841189" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "[C "I "n "[C "O "p "e "r "a "t "i "o "n "a "l "[C "D "S "[C "A "f "t "e "r "[C "C "o "n "t "r "o "l "l "e "r "[C "R "e "s "t "[78Ca "[A[78Cr
 "t "s "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:07:24.840838" elapsed="0.000433"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:24.841568" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:07:24.841340" elapsed="0.000283"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:24.841322" elapsed="0.000325"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T01:07:24.841680" elapsed="0.000030"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:07:24.844354" elapsed="0.000197"/>
</kw>
<msg time="2026-04-08T01:07:24.844612" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:07:24.843190" elapsed="0.001554"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:24.845020" elapsed="0.000076"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:24.845387" elapsed="0.000076"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:07:24.842540" elapsed="0.003192"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T01:07:24.841963" elapsed="0.003838"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T01:07:24.709966" elapsed="0.135935"/>
</kw>
<msg time="2026-04-08T01:07:24.845994" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:07:24.846038" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:07:24.709376" elapsed="0.136766"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T01:07:24.846354" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-08T01:07:24.846243" elapsed="0.000169"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:24.846223" elapsed="0.000213"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:24.846833" elapsed="0.000024"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:24.847182" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T01:07:24.847254" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T01:07:24.708688" elapsed="0.138673"/>
</kw>
<msg time="2026-04-08T01:07:24.847454" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:07:24.847498" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:07:24.702707" elapsed="0.144826"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:24.847863" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:07:24.847610" elapsed="0.000305"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:24.847593" elapsed="0.000345"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T01:07:24.702562" elapsed="0.145399"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:07:24.853587" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:07:24.853477" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:24.853458" elapsed="0.000196"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:07:24.854809" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:07:24.854700" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:24.854682" elapsed="0.000194"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:07:24.855343" level="INFO">${karaf_connection_index} = 594</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:07:24.855023" elapsed="0.000346"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:07:24.855780" level="INFO">${current_connection_index} = 495</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:07:24.855530" elapsed="0.000277"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:07:24.914579" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:07:24.856328" elapsed="0.058348"/>
</kw>
<msg time="2026-04-08T01:07:24.914849" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T01:07:24.914898" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:07:24.855970" elapsed="0.058962"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T01:07:25.003875" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "[C "I "n "[C "O "p "e "r "a "t "i "o "n "a "l "[C "D "S "[C "A "f "t "e "r "[C "C "o "n "t "r "o "l "l "e "r "[C "R "e "s "t "[78Ca "[A[78Cr
 "t "s "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T01:07:24.915481" elapsed="0.088519"/>
</kw>
<msg time="2026-04-08T01:07:25.004186" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T01:07:25.004236" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:07:24.915107" elapsed="0.089164"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:25.004596" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:07:25.004356" elapsed="0.000298"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:25.004334" elapsed="0.000345"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:07:25.005140" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "[C "I "n "[C "O "p "e "r "a "t "i "o "n "a "l "[C "D "S "[C "A "f "t "e "r "[C "C "o "n "t "r "o "l "l "e "r "[C "R "e "s "t "[78Ca "[A[78Cr
 "t "s "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:07:25.004829" elapsed="0.000451"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:25.005571" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:07:25.005350" elapsed="0.000275"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:25.005331" elapsed="0.000317"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T01:07:25.005682" elapsed="0.000031"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:07:25.008303" elapsed="0.000191"/>
</kw>
<msg time="2026-04-08T01:07:25.008555" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:07:25.007168" elapsed="0.001516"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:25.008981" elapsed="0.000162"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:25.009439" elapsed="0.000074"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:07:25.006544" elapsed="0.003079"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T01:07:25.005984" elapsed="0.003703"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T01:07:24.854397" elapsed="0.155390"/>
</kw>
<msg time="2026-04-08T01:07:25.009879" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:07:25.009938" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:07:24.853812" elapsed="0.156162"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T01:07:25.010176" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-08T01:07:25.010052" elapsed="0.000185"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:25.010033" elapsed="0.000228"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 2,
close the previous connection. In any case create a new connection
to karaf console for 2, set correct prompt set and login to karaf console.
Store connection index for 2 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:25.010651" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:25.010985" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T01:07:25.011055" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T01:07:24.853034" elapsed="0.158225"/>
</kw>
<msg time="2026-04-08T01:07:25.011365" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:07:25.011409" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:07:24.848244" elapsed="0.163202"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:25.011777" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:07:25.011523" elapsed="0.000307"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:25.011505" elapsed="0.000348"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T01:07:24.848086" elapsed="0.163790"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:07:25.017454" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:07:25.017346" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:25.017327" elapsed="0.000194"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:07:25.018707" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:07:25.018600" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:25.018581" elapsed="0.000193"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:07:25.019277" level="INFO">${karaf_connection_index} = 595</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:07:25.018919" elapsed="0.000385"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:07:25.019715" level="INFO">${current_connection_index} = 495</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:07:25.019465" elapsed="0.000276"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:07:25.068500" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:07:25.020305" elapsed="0.048332"/>
</kw>
<msg time="2026-04-08T01:07:25.068799" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T01:07:25.068873" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:07:25.019904" elapsed="0.049008"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T01:07:25.146475" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "[C "I "n "[C "O "p "e "r "a "t "i "o "n "a "l "[C "D "S "[C "A "f "t "e "r "[C "C "o "n "t "r "o "l "l "e "r "[C "R "e "s "t "[78Ca "[A[78Cr
 "t "s "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T01:07:25.069461" elapsed="0.077137"/>
</kw>
<msg time="2026-04-08T01:07:25.146782" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T01:07:25.146838" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:07:25.069088" elapsed="0.077786"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:25.147221" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:07:25.146954" elapsed="0.000327"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:25.146934" elapsed="0.000371"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:07:25.147750" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "[C "I "n "[C "O "p "e "r "a "t "i "o "n "a "l "[C "D "S "[C "A "f "t "e "r "[C "C "o "n "t "r "o "l "l "e "r "[C "R "e "s "t "[78Ca "[A[78Cr
 "t "s "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:07:25.147450" elapsed="0.000378"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:25.148139" elapsed="0.000042"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:07:25.147895" elapsed="0.000322"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:25.147877" elapsed="0.000364"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T01:07:25.148273" elapsed="0.000028"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:07:25.150834" elapsed="0.000190"/>
</kw>
<msg time="2026-04-08T01:07:25.151084" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:07:25.149738" elapsed="0.001563"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:25.151592" elapsed="0.000075"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:25.151952" elapsed="0.000074"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:07:25.149092" elapsed="0.003042"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T01:07:25.148539" elapsed="0.003681"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T01:07:25.018299" elapsed="0.134225"/>
</kw>
<msg time="2026-04-08T01:07:25.152625" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:07:25.152674" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:07:25.017673" elapsed="0.135049"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T01:07:25.152941" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-08T01:07:25.152816" elapsed="0.000183"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:25.152794" elapsed="0.000227"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 3,
close the previous connection. In any case create a new connection
to karaf console for 3, set correct prompt set and login to karaf console.
Store connection index for 3 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:25.153422" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:25.153798" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T01:07:25.153870" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T01:07:25.016961" elapsed="0.137015"/>
</kw>
<msg time="2026-04-08T01:07:25.154069" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:07:25.154124" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:07:25.012141" elapsed="0.142083"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:25.154578" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:07:25.154310" elapsed="0.000321"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:25.154291" elapsed="0.000364"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T01:07:25.011999" elapsed="0.142679"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-08T01:07:24.702384" elapsed="0.452325"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-08T01:07:24.699990" elapsed="0.454786"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-08T01:07:24.695207" elapsed="0.459632"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:07:24.694760" elapsed="0.460135"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-08T01:07:24.691626" elapsed="0.463321"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Check Number Of Flows On Member" owner="ClusterOpenFlow">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:07:25.156809" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:07:25.156514" elapsed="0.000322"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T01:07:25.156886" elapsed="0.000249"/>
</return>
<msg time="2026-04-08T01:07:25.157312" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T01:07:25.156143" elapsed="0.001195"/>
</kw>
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T01:07:25.337880" level="INFO">GET Request : url=http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01s3bfo0y24i1es90l47mavglv0.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T01:07:25.343030" level="INFO">GET Response : url=http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Transfer-Encoding': 'chunked'} 
 body={"opendaylight-inventory:nodes":{"node":[{"id":"openflow:3","flow-node-inventory:manufacturer":"Nicira, Inc.","flow-node-inventory:description":"s3","flow-node-inventory:hardware":"Open vSwitch","flow-node-inventory:software":"2.17.11","flow-node-inventory:ip-address":"10.30.170.192","flow-node-inventory:serial-number":"None","flow-node-inventory:port-number":47946,"flow-node-inventory:table":[{"id":62,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":28,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":2,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":224,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":181,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":147,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":106,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":61,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":27,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":1,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":223,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":182,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":148,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":105,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":60,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":30,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":0,"flow":[{"id":"71","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.71/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":71}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":521000000}},"flags":""},{"id":"11","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.11/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":11}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":521000000}},"flags":""},{"id":"70","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.70/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":70}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":521000000}},"flags":""},{"id":"10","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.10/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":10}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":521000000}},"flags":""},{"id":"60","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.60/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":60}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":521000000}},"flags":""},{"id":"13","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.13/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":13}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":521000000}},"flags":""},{"id":"12","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.12/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":12}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":521000000}},"flags":""},{"id":"80","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.80/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":80}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":521000000}},"flags":""},{"id":"93","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.93/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":93}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":521000000}},"flags":""},{"id":"92","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.92/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":92}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":521000000}},"flags":""},{"id":"82","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.82/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":82}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":521000000}},"flags":""},{"id":"91","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.91/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":91}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":521000000}},"flags":""},{"id":"81","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.81/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":81}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":521000000}},"flags":""},{"id":"90","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.90/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":90}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":521000000}},"flags":""},{"id":"9","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.9/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":9}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":520000000}},"flags":""},{"id":"84","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.84/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":84}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":521000000}},"flags":""},{"id":"97","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match... (set the log level to DEBUG or TRACE to see the full content) 
 </msg>
<msg time="2026-04-08T01:07:25.343647" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${RFC8040_OPERATIONAL_NODES_API}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T01:07:25.157502" elapsed="0.186209"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:07:25.348035" level="INFO">{"opendaylight-inventory:nodes":{"node":[{"id":"openflow:3","flow-node-inventory:manufacturer":"Nicira, Inc.","flow-node-inventory:description":"s3","flow-node-inventory:hardware":"Open vSwitch","flow-node-inventory:software":"2.17.11","flow-node-inventory:ip-address":"10.30.170.192","flow-node-inventory:serial-number":"None","flow-node-inventory:port-number":47946,"flow-node-inventory:table":[{"id":62,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":28,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":2,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":224,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":181,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":147,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":106,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":61,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":27,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":1,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":223,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":182,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":148,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":105,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":60,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":30,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":0,"flow":[{"id":"71","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.71/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":71}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":521000000}},"flags":""},{"id":"11","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.11/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":11}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":521000000}},"flags":""},{"id":"70","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.70/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":70}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":521000000}},"flags":""},{"id":"10","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.10/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":10}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":521000000}},"flags":""},{"id":"60","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.60/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":60}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":521000000}},"flags":""},{"id":"13","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.13/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":13}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":521000000}},"flags":""},{"id":"12","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.12/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":12}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":521000000}},"flags":""},{"id":"80","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.80/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":80}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":521000000}},"flags":""},{"id":"93","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.93/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":93}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":521000000}},"flags":""},{"id":"92","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.92/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":92}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":521000000}},"flags":""},{"id":"82","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.82/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":82}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":521000000}},"flags":""},{"id":"91","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.91/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":91}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":521000000}},"flags":""},{"id":"81","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.81/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":81}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":521000000}},"flags":""},{"id":"90","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.90/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":90}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":521000000}},"flags":""},{"id":"9","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.9/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":9}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":520000000}},"flags":""},{"id":"84","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.84/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":84}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":521000000}},"flags":""},{"id":"97","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.97/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":97}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":520000000}},"flags":""},{"id":"66","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.66/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":66}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":521000000}},"flags":""},{"id":"79","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.79/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":79}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":521000000}},"flags":""},{"id":"54","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.54/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":54}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":520000000}},"flags":""},{"id":"45","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.45/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":45}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":520000000}},"flags":""},{"id":"83","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.83/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":83}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":521000000}},"flags":""},{"id":"96","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.96/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":96}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":520000000}},"flags":""},{"id":"65","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.65/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":65}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":521000000}},"flags":""},{"id":"78","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.78/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":78}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":521000000}},"flags":""},{"id":"20","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.20/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":20}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":520000000}},"flags":""},{"id":"55","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.55/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":55}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":520000000}},"flags":""},{"id":"46","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.46/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":46}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":520000000}},"flags":""},{"id":"7","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.7/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":7}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":520000000}},"flags":""},{"id":"86","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.86/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":86}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":521000000}},"flags":""},{"id":"95","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.95/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":95}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":520000000}},"flags":""},{"id":"68","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.68/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":68}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":521000000}},"flags":""},{"id":"77","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.77/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":77}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":521000000}},"flags":""},{"id":"30","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.30/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":30}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":520000000}},"flags":""},{"id":"56","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.56/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":56}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":520000000}},"flags":""},{"id":"43","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.43/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":43}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":520000000}},"flags":""},{"id":"8","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.8/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":8}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":520000000}},"flags":""},{"id":"85","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.85/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":85}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":521000000}},"flags":""},{"id":"94","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.94/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":94}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":520000000}},"flags":""},{"id":"67","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.67/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":67}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":521000000}},"flags":""},{"id":"76","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.76/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":76}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":521000000}},"flags":""},{"id":"31","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.31/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":31}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":520000000}},"flags":""},{"id":"57","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.57/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":57}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":520000000}},"flags":""},{"id":"44","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.44/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":44}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":520000000}},"flags":""},{"id":"5","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.5/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":5}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":520000000}},"flags":""},{"id":"88","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.88/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":88}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":521000000}},"flags":""},{"id":"62","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.62/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":62}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":521000000}},"flags":""},{"id":"75","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.75/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":75}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":521000000}},"flags":""},{"id":"32","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.32/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":32}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":520000000}},"flags":""},{"id":"23","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.23/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":23}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":520000000}},"flags":""},{"id":"50","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.50/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":50}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":519000000}},"flags":""},{"id":"41","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.41/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":41}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":520000000}},"flags":""},{"id":"#UF$TABLE*0-1","table_id":0,"priority":0,"cookie_mask":"0","idle-timeout":0,"cookie":"10","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"output-action":{"max-length":65535,"output-node-connector":"CONTROLLER"}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"11","byte-count":"920","duration":{"second":43,"nanosecond":294000000}},"flags":"SEND_FLOW_REM"},{"id":"6","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.6/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":6}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":520000000}},"flags":""},{"id":"100","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.100/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":100}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":521000000}},"flags":""},{"id":"87","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.87/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":87}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":521000000}},"flags":""},{"id":"61","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.61/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":61}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":521000000}},"flags":""},{"id":"74","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.74/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":74}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":521000000}},"flags":""},{"id":"33","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.33/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":33}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":520000000}},"flags":""},{"id":"24","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.24/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":24}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":520000000}},"flags":""},{"id":"51","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.51/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":51}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":519000000}},"flags":""},{"id":"42","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.42/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":42}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":520000000}},"flags":""},{"id":"3","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.3/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":3}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":520000000}},"flags":""},{"id":"99","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.99/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":99}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":521000000}},"flags":""},{"id":"64","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.64/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":64}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":521000000}},"flags":""},{"id":"73","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.73/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":73}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":521000000}},"flags":""},{"id":"34","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.34/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":34}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":520000000}},"flags":""},{"id":"21","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.21/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":21}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":520000000}},"flags":""},{"id":"52","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.52/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":52}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":519000000}},"flags":""},{"id":"4","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.4/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":4}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":520000000}},"flags":""},{"id":"89","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.89/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":89}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":521000000}},"flags":""},{"id":"98","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.98/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":98}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":520000000}},"flags":""},{"id":"63","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.63/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":63}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":521000000}},"flags":""},{"id":"72","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.72/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":72}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":521000000}},"flags":""},{"id":"35","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.35/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":35}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":520000000}},"flags":""},{"id":"22","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.22/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":22}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":520000000}},"flags":""},{"id":"53","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.53/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":53}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":520000000}},"flags":""},{"id":"40","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.40/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":40}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":520000000}},"flags":""},{"id":"37","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.37/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":37}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":520000000}},"flags":""},{"id":"28","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.28/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":28}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":520000000}},"flags":""},{"id":"36","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.36/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":36}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":520000000}},"flags":""},{"id":"27","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.27/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":27}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":520000000}},"flags":""},{"id":"39","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.39/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":39}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":520000000}},"flags":""},{"id":"26","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.26/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":26}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":520000000}},"flags":""},{"id":"38","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.38/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":38}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":520000000}},"flags":""},{"id":"25","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.25/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":25}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":520000000}},"flags":""},{"id":"69","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.69/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":69}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":521000000}},"flags":""},{"id":"59","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.59/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":59}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":520000000}},"flags":""},{"id":"58","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.58/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":58}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":520000000}},"flags":""},{"id":"49","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.49/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":49}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":520000000}},"flags":""},{"id":"48","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.48/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":48}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":520000000}},"flags":""},{"id":"29","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.29/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":29}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":520000000}},"flags":""},{"id":"47","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.47/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":47}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":520000000}},"flags":""},{"id":"18","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.18/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":18}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":521000000}},"flags":""},{"id":"19","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.19/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":19}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":521000000}},"flags":""},{"id":"14","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.14/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":14}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":521000000}},"flags":""},{"id":"15","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.15/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":15}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":521000000}},"flags":""},{"id":"1","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.1/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":1}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":521000000}},"flags":""},{"id":"16","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.16/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":16}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":521000000}},"flags":""},{"id":"2","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.2/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":2}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":521000000}},"flags":""},{"id":"17","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.17/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":17}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":521000000}},"flags":""}],"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"107","active-flows":100,"packets-matched":"99"}},{"id":226,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":179,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":149,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":104,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":59,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":29,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":225,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":180,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":150,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":103,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":66,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":32,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":220,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":185,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":151,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":102,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":65,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":31,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":253,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":219,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":186,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":152,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":101,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":64,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":34,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":252,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":222,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":183,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":153,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":100,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":63,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":33,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":251,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":221,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":184,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":154,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":99,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":54,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":20,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":250,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":216,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":189,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":155,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":129,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":114,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":53,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":19,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":249,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":215,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":190,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":156,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":130,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":113,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":52,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":22,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":248,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":218,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":187,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":157,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":112,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":51,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":21,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":247,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":217,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":188,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":158,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":128,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":111,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":58,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":24,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":246,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":212,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":193,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":159,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":110,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":57,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":23,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":245,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":211,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":194,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":160,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":109,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":56,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":26,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":244,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":214,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":191,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":161,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":108,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":55,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":25,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":243,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":213,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":192,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":162,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":107,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":77,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":43,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":17,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":239,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":198,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":164,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":138,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":119,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":89,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":78,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":44,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":18,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":240,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":197,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":163,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":137,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":120,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":90,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":75,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":45,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":15,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":241,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":196,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":166,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":136,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":121,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":87,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":76,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":46,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":16,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":242,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":195,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":165,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":135,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":122,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":88,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":81,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":47,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":13,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":235,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":202,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":168,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":134,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":115,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":85,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":82,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":48,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":14,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":236,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":201,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":167,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":133,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":116,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":86,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":79,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":49,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":11,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":237,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":200,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":170,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":132,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":117,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":83,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":80,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":50,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":12,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":238,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":199,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":169,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":131,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":118,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":84,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":69,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":35,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":9,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":231,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":206,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":172,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":146,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":127,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":97,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":70,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":36,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":10,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":232,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":205,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":171,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":145,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":98,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":67,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":37,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":7,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":233,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":204,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":174,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":144,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":95,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":68,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":38,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":8,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":234,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":203,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":173,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":143,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":96,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":73,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":39,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":5,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":227,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":210,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":176,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":142,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":123,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":93,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":74,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":40,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":6,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":228,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":209,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":175,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":141,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":124,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":94,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":71,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":41,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":3,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":229,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":208,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":178,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":140,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":125,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":91,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":72,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":42,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":4,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":230,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":207,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":177,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":139,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":126,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":92,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}}],"opendaylight-group-statistics:group-features":{"max-groups":[4294967040],"group-types-supported":["opendaylight-group-types:group-all","opendaylight-group-types:group-ff","opendaylight-group-types:group-select","opendaylight-group-types:group-indirect"],"group-capabilities-supported":["opendaylight-group-types:chaining","opendaylight-group-types:select-weight","opendaylight-group-types:select-liveness"],"actions":[67076097]},"flow-node-inventory:switch-features":{"max_tables":254,"capabilities":["flow-node-inventory:flow-feature-capability-table-stats","flow-node-inventory:flow-feature-capability-group-stats","flow-node-inventory:flow-feature-capability-queue-stats","flow-node-inventory:flow-feature-capability-flow-stats","flow-node-inventory:flow-feature-capability-port-stats"],"max_buffers":0},"flow-node-inventory:snapshot-gathering-status-start":{"begin":"2026-04-08T01:07:22.881Z"},"node-connector":[{"id":"openflow:3:LOCAL","flow-node-inventory:port-number":4294967294,"flow-node-inventory:hardware-address":"c2:87:c1:60:0d:43","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s3","flow-node-inventory:current-feature":"","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":0,"flow-node-inventory:state":{"live":false,"blocked":false,"link-down":true},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"PORT-DOWN","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"0","received":"0"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":538,"nanosecond":243000000},"bytes":{"transmitted":"0","received":"0"},"receive-crc-error":"0"}},{"id":"openflow:3:2","flow-node-inventory:port-number":2,"flow-node-inventory:hardware-address":"9e:72:98:8c:46:72","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s3-eth2","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"91","received":"96"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":538,"nanosecond":246000000},"bytes":{"transmitted":"7657","received":"8079"},"receive-crc-error":"0"}},{"id":"openflow:3:1","flow-node-inventory:port-number":1,"flow-node-inventory:hardware-address":"ca:ac:9a:41:42:1c","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s3-eth1","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"99","received":"13"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":538,"nanosecond":246000000},"bytes":{"transmitted":"8325","received":"1006"},"receive-crc-error":"0"}}],"flow-node-inventory:group":[{"group-id":56,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":56000}}],"watch_group":56000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":56,"duration":{"second":44,"nanosecond":770000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":22,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":22000}}],"watch_group":22000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":22,"duration":{"second":44,"nanosecond":770000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":99,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":99000}}],"watch_group":99000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":99,"duration":{"second":44,"nanosecond":770000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":34000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":34000,"duration":{"second":47,"nanosecond":673000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":89000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":89000,"duration":{"second":47,"nanosecond":673000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":60000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":60000,"duration":{"second":47,"nanosecond":673000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":91000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":91000,"duration":{"second":47,"nanosecond":673000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":57,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":57000}}],"watch_group":57000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":57,"duration":{"second":44,"nanosecond":769000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":23,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":23000}}],"watch_group":23000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":23,"duration":{"second":44,"nanosecond":254000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":14000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":14000,"duration":{"second":47,"nanosecond":673000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":98,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":98000}}],"watch_group":98000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":98,"duration":{"second":44,"nanosecond":254000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":56000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":56000,"duration":{"second":47,"nanosecond":673000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":85000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":85000,"duration":{"second":47,"nanosecond":673000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":54,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":54000}}],"watch_group":54000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":54,"duration":{"second":44,"nanosecond":254000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":24,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":24000}}],"watch_group":24000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":24,"duration":{"second":44,"nanosecond":254000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":36000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":36000,"duration":{"second":47,"nanosecond":673000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":87000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":87000,"duration":{"second":47,"nanosecond":673000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":59000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":59000,"duration":{"second":47,"nanosecond":673000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":25000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":25000,"duration":{"second":47,"nanosecond":673000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":43000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":43000,"duration":{"second":47,"nanosecond":673000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":55,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":55000}}],"watch_group":55000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":55,"duration":{"second":44,"nanosecond":254000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":25,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":25000}}],"watch_group":25000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":25,"duration":{"second":47,"nanosecond":278000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":100,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":100000}}],"watch_group":100000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":100,"duration":{"second":44,"nanosecond":254000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":58000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":58000,"duration":{"second":47,"nanosecond":278000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":86000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":86000,"duration":{"second":47,"nanosecond":278000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":60,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":60000}}],"watch_group":60000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":60,"duration":{"second":47,"nanosecond":277000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":26,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":26000}}],"watch_group":26000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":26,"duration":{"second":44,"nanosecond":254000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":41000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":41000,"duration":{"second":47,"nanosecond":277000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":95,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":95000}}],"watch_group":95000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":95,"duration":{"second":44,"nanosecond":254000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":82000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":82000,"duration":{"second":47,"nanosecond":277000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":61,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":61000}}],"watch_group":61000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":61,"duration":{"second":44,"nanosecond":254000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":27,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":27000}}],"watch_group":27000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":27,"duration":{"second":44,"nanosecond":254000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":94,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":94000}}],"watch_group":94000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":94,"duration":{"second":44,"nanosecond":254000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":98000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":98000,"duration":{"second":47,"nanosecond":277000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":27000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":27000,"duration":{"second":47,"nanosecond":277000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":57000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":57000,"duration":{"second":47,"nanosecond":277000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":16000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":16000,"duration":{"second":47,"nanosecond":276000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":83000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":83000,"duration":{"second":47,"nanosecond":276000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":58,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":58000}}],"watch_group":58000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":58,"duration":{"second":46,"nanosecond":775000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":28,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":28000}}],"watch_group":28000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":28,"duration":{"second":44,"nanosecond":254000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":97,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":97000}}],"watch_group":97000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":97,"duration":{"second":44,"nanosecond":254000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":100000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":100000,"duration":{"second":46,"nanosecond":775000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":59,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":59000}}],"watch_group":59000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":59,"duration":{"second":46,"nanosecond":775000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":38000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":38000,"duration":{"second":46,"nanosecond":775000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":29,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":29000}}],"watch_group":29000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":29,"duration":{"second":44,"nanosecond":254000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":96,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":96000}}],"watch_group":96000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":96,"duration":{"second":44,"nanosecond":254000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":84000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":84000,"duration":{"second":46,"nanosecond":775000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":64,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":64000}}],"watch_group":64000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":64,"duration":{"second":44,"nanosecond":254000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":30,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":30000}}],"watch_group":30000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":30,"duration":{"second":44,"nanosecond":254000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":4,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":4000}}],"watch_group":4000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":4,"duration":{"second":44,"nanosecond":254000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":91,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":91000}}],"watch_group":91000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":91,"duration":{"second":46,"nanosecond":775000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":7000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":7000,"duration":{"second":46,"nanosecond":775000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":29000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":29000,"duration":{"second":46,"nanosecond":775000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":65,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":65000}}],"watch_group":65000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":65,"duration":{"second":44,"nanosecond":254000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":31,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":31000}}],"watch_group":31000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":31,"duration":{"second":44,"nanosecond":254000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":5,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":5000}}],"watch_group":5000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":5,"duration":{"second":44,"nanosecond":254000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":90,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":90000}}],"watch_group":90000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":90,"duration":{"second":44,"nanosecond":254000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":18000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":18000,"duration":{"second":46,"nanosecond":774000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":62,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":62000}}],"watch_group":62000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":62,"duration":{"second":44,"nanosecond":254000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":65000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":65000,"duration":{"second":46,"nanosecond":773000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":32,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":32000}}],"watch_group":32000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":32,"duration":{"second":44,"nanosecond":254000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":2,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":2000}}],"watch_group":2000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":2,"duration":{"second":44,"nanosecond":254000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":93,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":93000}}],"watch_group":93000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":93,"duration":{"second":44,"nanosecond":254000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":64000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":64000,"duration":{"second":46,"nanosecond":773000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":63,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":63000}}],"watch_group":63000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":63,"duration":{"second":44,"nanosecond":254000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":33,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":33000}}],"watch_group":33000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":33,"duration":{"second":44,"nanosecond":254000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":3,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":3000}}],"watch_group":3000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":3,"duration":{"second":44,"nanosecond":254000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":80000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":80000,"duration":{"second":46,"nanosecond":773000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":9000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":9000,"duration":{"second":46,"nanosecond":773000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":92,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":92000}}],"watch_group":92000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":92,"duration":{"second":44,"nanosecond":254000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":5000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":5000,"duration":{"second":46,"nanosecond":773000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":20000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":20000,"duration":{"second":46,"nanosecond":773000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":81000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":81000,"duration":{"second":46,"nanosecond":768000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":97000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":97000,"duration":{"second":46,"nanosecond":768000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":31000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":31000,"duration":{"second":46,"nanosecond":768000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":68,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":68000}}],"watch_group":68000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":68,"duration":{"second":44,"nanosecond":254000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":11000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":11000,"duration":{"second":46,"nanosecond":768000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":34,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":34000}}],"watch_group":34000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":34,"duration":{"second":46,"nanosecond":768000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":78000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":78000,"duration":{"second":46,"nanosecond":768000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":87,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":87000}}],"watch_group":87000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":87,"duration":{"second":46,"nanosecond":767000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":93000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":93000,"duration":{"second":46,"nanosecond":767000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":63000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":63000,"duration":{"second":46,"nanosecond":767000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":69,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":69000}}],"watch_group":69000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":69,"duration":{"second":44,"nanosecond":254000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":35,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":35000}}],"watch_group":35000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":35,"duration":{"second":44,"nanosecond":254000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":1,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":1000}}],"watch_group":1000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":1,"duration":{"second":44,"nanosecond":254000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":33000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":33000,"duration":{"second":46,"nanosecond":761000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":79000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":79000,"duration":{"second":46,"nanosecond":761000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":86,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":86000}}],"watch_group":86000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":86,"duration":{"second":46,"nanosecond":761000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":62000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":62000,"duration":{"second":46,"nanosecond":761000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":66,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":66000}}],"watch_group":66000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":66,"duration":{"second":44,"nanosecond":254000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":77000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":77000,"duration":{"second":46,"nanosecond":761000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":36,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":36000}}],"watch_group":36000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":36,"duration":{"second":46,"nanosecond":761000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":89,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":89000}}],"watch_group":89000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":89,"duration":{"second":46,"nanosecond":761000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":22000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":22000,"duration":{"second":46,"nanosecond":761000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":95000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":95000,"duration":{"second":46,"nanosecond":761000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":67,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":67000}}],"watch_group":67000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":67,"duration":{"second":44,"nanosecond":254000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":37,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":37000}}],"watch_group":37000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":37,"duration":{"second":44,"nanosecond":254000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":1000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":1000,"duration":{"second":46,"nanosecond":761000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":88,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":88000}}],"watch_group":88000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":88,"duration":{"second":44,"nanosecond":254000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":61000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":61000,"duration":{"second":46,"nanosecond":761000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":3000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":3000,"duration":{"second":46,"nanosecond":761000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":73,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":73000}}],"watch_group":73000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":73,"duration":{"second":44,"nanosecond":254000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":39,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":39000}}],"watch_group":39000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":39,"duration":{"second":44,"nanosecond":254000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":13,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":13000}}],"watch_group":13000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":13,"duration":{"second":44,"nanosecond":254000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":74000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":74000,"duration":{"second":46,"nanosecond":761000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":15000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":15000,"duration":{"second":46,"nanosecond":761000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":44000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":44000,"duration":{"second":46,"nanosecond":761000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":45000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":45000,"duration":{"second":46,"nanosecond":761000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":68000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":68000,"duration":{"second":46,"nanosecond":761000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":72,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":72000}}],"watch_group":72000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":72,"duration":{"second":44,"nanosecond":254000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":38,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":38000}}],"watch_group":38000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":38,"duration":{"second":46,"nanosecond":268000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":75000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":75000,"duration":{"second":46,"nanosecond":268000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":12,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":12000}}],"watch_group":12000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":12,"duration":{"second":44,"nanosecond":254000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":35000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":35000,"duration":{"second":46,"nanosecond":268000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":24000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":24000,"duration":{"second":46,"nanosecond":268000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":90000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":90000,"duration":{"second":46,"nanosecond":268000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":71,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":71000}}],"watch_group":71000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":71,"duration":{"second":44,"nanosecond":254000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":41,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":41000}}],"watch_group":41000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":41,"duration":{"second":46,"nanosecond":268000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":42000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":42000,"duration":{"second":46,"nanosecond":268000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":11,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":11000}}],"watch_group":11000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":11,"duration":{"second":46,"nanosecond":268000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":92000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":92000,"duration":{"second":46,"nanosecond":268000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":46000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":46000,"duration":{"second":46,"nanosecond":268000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":67000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":67000,"duration":{"second":46,"nanosecond":268000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":70,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":70000}}],"watch_group":70000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":70,"duration":{"second":44,"nanosecond":254000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":76000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":76000,"duration":{"second":46,"nanosecond":268000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":40,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":40000}}],"watch_group":40000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":40,"duration":{"second":44,"nanosecond":254000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":13000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":13000,"duration":{"second":46,"nanosecond":268000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":10,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":10000}}],"watch_group":10000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":10,"duration":{"second":44,"nanosecond":254000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":88000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":88000,"duration":{"second":46,"nanosecond":268000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":47000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":47000,"duration":{"second":46,"nanosecond":268000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":66000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":66000,"duration":{"second":46,"nanosecond":268000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":77,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":77000}}],"watch_group":77000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":77,"duration":{"second":46,"nanosecond":268000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":43,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":43000}}],"watch_group":43000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":43,"duration":{"second":46,"nanosecond":268000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":9,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":9000}}],"watch_group":9000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":9,"duration":{"second":46,"nanosecond":268000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":99000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":99000,"duration":{"second":46,"nanosecond":268000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":26000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":26000,"duration":{"second":46,"nanosecond":268000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":70000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":70000,"duration":{"second":46,"nanosecond":268000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":76,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":76000}}],"watch_group":76000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":76,"duration":{"second":45,"nanosecond":769000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":42,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":42000}}],"watch_group":42000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":42,"duration":{"second":45,"nanosecond":769000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":8,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":8000}}],"watch_group":8000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":8,"duration":{"second":44,"nanosecond":254000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":37000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":37000,"duration":{"second":45,"nanosecond":769000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":49000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":49000,"duration":{"second":45,"nanosecond":769000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":71000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":71000,"duration":{"second":45,"nanosecond":769000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":48000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":48000,"duration":{"second":45,"nanosecond":769000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":75,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":75000}}],"watch_group":75000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":75,"duration":{"second":45,"nanosecond":769000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":45,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":45000}}],"watch_group":45000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":45,"duration":{"second":45,"nanosecond":769000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":7,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":7000}}],"watch_group":7000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":7,"duration":{"second":45,"nanosecond":769000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":39000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":39000,"duration":{"second":45,"nanosecond":769000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":73000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":73000,"duration":{"second":45,"nanosecond":769000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":69000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":69000,"duration":{"second":45,"nanosecond":769000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":17000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":17000,"duration":{"second":45,"nanosecond":769000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":28000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":28000,"duration":{"second":45,"nanosecond":769000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":74,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":74000}}],"watch_group":74000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":74,"duration":{"second":45,"nanosecond":769000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":44,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":44000}}],"watch_group":44000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":44,"duration":{"second":45,"nanosecond":769000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":6,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":6000}}],"watch_group":6000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":6,"duration":{"second":44,"nanosecond":254000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":40000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":40000,"duration":{"second":45,"nanosecond":769000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":81,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":81000}}],"watch_group":81000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":81,"duration":{"second":45,"nanosecond":769000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":47,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":47000}}],"watch_group":47000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":47,"duration":{"second":45,"nanosecond":769000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":21,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":21000}}],"watch_group":21000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":21,"duration":{"second":44,"nanosecond":254000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":8000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":8000,"duration":{"second":45,"nanosecond":769000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":19000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":19000,"duration":{"second":45,"nanosecond":769000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":96000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":96000,"duration":{"second":45,"nanosecond":769000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":80,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":80000}}],"watch_group":80000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":80,"duration":{"second":45,"nanosecond":769000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":46,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":46000}}],"watch_group":46000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":46,"duration":{"second":45,"nanosecond":769000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":20,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":20000}}],"watch_group":20000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":20,"duration":{"second":45,"nanosecond":769000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":52000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":52000,"duration":{"second":45,"nanosecond":769000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":6000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":6000,"duration":{"second":45,"nanosecond":769000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":79,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":79000}}],"watch_group":79000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":79,"duration":{"second":45,"nanosecond":769000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":49,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":49000}}],"watch_group":49000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":49,"duration":{"second":45,"nanosecond":271000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":19,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":19000}}],"watch_group":19000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":19,"duration":{"second":45,"nanosecond":271000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":50000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":50000,"duration":{"second":45,"nanosecond":271000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":72000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":72000,"duration":{"second":45,"nanosecond":271000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":30000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":30000,"duration":{"second":45,"nanosecond":271000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":78,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":78000}}],"watch_group":78000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":78,"duration":{"second":45,"nanosecond":271000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":48,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":48000}}],"watch_group":48000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":48,"duration":{"second":45,"nanosecond":271000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":18,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":18000}}],"watch_group":18000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":18,"duration":{"second":45,"nanosecond":271000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":51000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":51000,"duration":{"second":45,"nanosecond":271000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":85,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":85000}}],"watch_group":85000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":85,"duration":{"second":45,"nanosecond":271000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":55000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":55000,"duration":{"second":45,"nanosecond":271000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":51,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":51000}}],"watch_group":51000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":51,"duration":{"second":44,"nanosecond":772000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":17,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":17000}}],"watch_group":17000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":17,"duration":{"second":44,"nanosecond":772000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":21000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":21000,"duration":{"second":44,"nanosecond":772000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":4000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":4000,"duration":{"second":44,"nanosecond":772000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":84,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":84000}}],"watch_group":84000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":84,"duration":{"second":44,"nanosecond":772000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":50,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":50000}}],"watch_group":50000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":50,"duration":{"second":44,"nanosecond":772000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":16,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":16000}}],"watch_group":16000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":16,"duration":{"second":44,"nanosecond":770000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":10000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":10000,"duration":{"second":44,"nanosecond":770000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":54000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":54000,"duration":{"second":44,"nanosecond":770000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":83,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":83000}}],"watch_group":83000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":83,"duration":{"second":44,"nanosecond":770000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":32000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":32000,"duration":{"second":44,"nanosecond":770000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":53,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":53000}}],"watch_group":53000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":53,"duration":{"second":44,"nanosecond":253000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":15,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":15000}}],"watch_group":15000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":15,"duration":{"second":44,"nanosecond":770000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":2000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":2000,"duration":{"second":44,"nanosecond":770000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":82,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":82000}}],"watch_group":82000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":82,"duration":{"second":44,"nanosecond":770000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":52,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":52000}}],"watch_group":52000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":52,"duration":{"second":44,"nanosecond":770000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":14,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":14000}}],"watch_group":14000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":14,"duration":{"second":44,"nanosecond":770000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":53000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":53000,"duration":{"second":44,"nanosecond":770000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":12000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":12000,"duration":{"second":44,"nanosecond":770000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":23000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":23000,"duration":{"second":44,"nanosecond":770000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":94000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":94000,"duration":{"second":44,"nanosecond":770000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}}],"flow-node-inventory:snapshot-gathering-status-end":{"succeeded":true,"end":"2026-04-08T01:07:22.951Z"}},{"id":"openflow:1","flow-node-inventory:manufacturer":"Nicira, Inc.","flow-node-inventory:description":"s1","flow-node-inventory:hardware":"Open vSwitch","flow-node-inventory:software":"2.17.11","flow-node-inventory:ip-address":"10.30.170.192","flow-node-inventory:serial-number":"None","flow-node-inventory:port-number":47940,"flow-node-inventory:table":[{"id":62,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":28,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":2,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":224,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":181,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":147,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":106,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":61,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":27,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":1,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":223,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":182,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":148,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":105,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":60,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":30,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":0,"flow":[{"id":"71","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.71/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":71}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":524000000}},"flags":""},{"id":"11","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.11/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":11}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":524000000}},"flags":""},{"id":"70","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.70/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":70}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":524000000}},"flags":""},{"id":"10","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.10/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":10}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":524000000}},"flags":""},{"id":"60","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.60/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":60}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":524000000}},"flags":""},{"id":"13","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.13/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":13}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":524000000}},"flags":""},{"id":"12","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.12/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":12}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":524000000}},"flags":""},{"id":"80","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.80/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":80}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":524000000}},"flags":""},{"id":"93","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.93/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":93}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":524000000}},"flags":""},{"id":"92","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.92/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":92}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":524000000}},"flags":""},{"id":"82","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.82/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":82}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":524000000}},"flags":""},{"id":"91","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.91/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":91}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":524000000}},"flags":""},{"id":"81","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.81/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":81}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":524000000}},"flags":""},{"id":"90","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.90/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":90}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":524000000}},"flags":""},{"id":"9","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.9/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":9}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":524000000}},"flags":""},{"id":"84","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.84/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":84}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":524000000}},"flags":""},{"id":"97","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.97/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":97}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":524000000}},"flags":""},{"id":"66","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.66/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":66}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":524000000}},"flags":""},{"id":"79","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.79/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":79}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":524000000}},"flags":""},{"id":"54","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.54/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":54}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":523000000}},"flags":""},{"id":"45","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.45/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":45}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":523000000}},"flags":""},{"id":"83","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.83/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":83}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":524000000}},"flags":""},{"id":"96","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.96/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":96}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":524000000}},"flags":""},{"id":"65","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.65/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":65}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":524000000}},"flags":""},{"id":"78","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.78/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":78}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":524000000}},"flags":""},{"id":"20","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.20/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":20}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":524000000}},"flags":""},{"id":"55","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.55/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":55}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":523000000}},"flags":""},{"id":"46","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.46/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":46}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":523000000}},"flags":""},{"id":"7","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.7/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":7}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":524000000}},"flags":""},{"id":"86","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.86/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":86}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":524000000}},"flags":""},{"id":"95","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.95/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":95}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":524000000}},"flags":""},{"id":"68","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.68/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":68}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":524000000}},"flags":""},{"id":"77","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.77/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":77}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":524000000}},"flags":""},{"id":"30","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.30/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":30}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":523000000}},"flags":""},{"id":"56","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.56/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":56}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":523000000}},"flags":""},{"id":"43","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.43/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":43}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":523000000}},"flags":""},{"id":"8","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.8/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":8}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":524000000}},"flags":""},{"id":"85","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.85/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":85}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":524000000}},"flags":""},{"id":"94","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.94/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":94}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":524000000}},"flags":""},{"id":"67","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.67/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":67}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":524000000}},"flags":""},{"id":"76","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.76/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":76}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":524000000}},"flags":""},{"id":"31","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.31/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":31}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":524000000}},"flags":""},{"id":"57","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.57/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":57}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":523000000}},"flags":""},{"id":"44","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.44/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":44}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":523000000}},"flags":""},{"id":"5","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.5/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":5}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":524000000}},"flags":""},{"id":"88","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.88/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":88}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":524000000}},"flags":""},{"id":"62","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.62/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":62}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":524000000}},"flags":""},{"id":"75","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.75/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":75}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":524000000}},"flags":""},{"id":"32","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.32/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":32}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":524000000}},"flags":""},{"id":"23","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.23/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":23}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":524000000}},"flags":""},{"id":"50","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.50/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":50}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":523000000}},"flags":""},{"id":"41","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.41/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":41}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":523000000}},"flags":""},{"id":"6","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.6/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":6}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":524000000}},"flags":""},{"id":"100","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.100/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":100}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":524000000}},"flags":""},{"id":"87","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.87/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":87}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":524000000}},"flags":""},{"id":"61","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.61/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":61}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":524000000}},"flags":""},{"id":"74","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.74/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":74}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":524000000}},"flags":""},{"id":"33","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.33/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":33}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":524000000}},"flags":""},{"id":"24","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.24/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":24}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":524000000}},"flags":""},{"id":"51","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.51/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":51}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":523000000}},"flags":""},{"id":"42","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.42/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":42}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":523000000}},"flags":""},{"id":"3","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.3/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":3}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":524000000}},"flags":""},{"id":"99","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.99/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":99}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":524000000}},"flags":""},{"id":"64","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.64/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":64}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":524000000}},"flags":""},{"id":"73","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.73/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":73}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":524000000}},"flags":""},{"id":"34","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.34/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":34}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":524000000}},"flags":""},{"id":"21","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.21/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":21}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":524000000}},"flags":""},{"id":"52","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.52/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":52}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":523000000}},"flags":""},{"id":"#UF$TABLE*0-3","table_id":0,"priority":0,"cookie_mask":"0","idle-timeout":0,"cookie":"10","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"output-action":{"max-length":65535,"output-node-connector":"CONTROLLER"}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"10","byte-count":"850","duration":{"second":43,"nanosecond":290000000}},"flags":"SEND_FLOW_REM"},{"id":"4","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.4/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":4}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":524000000}},"flags":""},{"id":"89","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.89/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":89}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":524000000}},"flags":""},{"id":"98","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.98/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":98}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":524000000}},"flags":""},{"id":"63","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.63/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":63}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":524000000}},"flags":""},{"id":"72","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.72/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":72}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":524000000}},"flags":""},{"id":"35","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.35/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":35}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":524000000}},"flags":""},{"id":"22","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.22/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":22}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":524000000}},"flags":""},{"id":"53","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.53/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":53}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":523000000}},"flags":""},{"id":"40","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.40/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":40}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":523000000}},"flags":""},{"id":"37","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.37/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":37}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":524000000}},"flags":""},{"id":"28","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.28/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":28}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":524000000}},"flags":""},{"id":"36","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.36/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":36}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":524000000}},"flags":""},{"id":"27","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.27/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":27}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":524000000}},"flags":""},{"id":"39","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.39/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":39}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":524000000}},"flags":""},{"id":"26","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.26/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":26}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":524000000}},"flags":""},{"id":"38","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.38/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":38}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":524000000}},"flags":""},{"id":"25","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.25/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":25}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":524000000}},"flags":""},{"id":"69","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.69/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":69}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":524000000}},"flags":""},{"id":"59","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.59/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":59}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":523000000}},"flags":""},{"id":"58","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.58/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":58}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":523000000}},"flags":""},{"id":"49","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.49/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":49}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":523000000}},"flags":""},{"id":"48","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.48/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":48}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":523000000}},"flags":""},{"id":"29","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.29/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":29}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":524000000}},"flags":""},{"id":"47","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.47/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":47}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":523000000}},"flags":""},{"id":"18","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.18/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":18}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":524000000}},"flags":""},{"id":"19","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.19/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":19}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":524000000}},"flags":""},{"id":"14","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.14/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":14}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":524000000}},"flags":""},{"id":"15","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.15/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":15}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":524000000}},"flags":""},{"id":"1","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.1/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":1}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":524000000}},"flags":""},{"id":"16","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.16/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":16}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":524000000}},"flags":""},{"id":"2","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.2/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":2}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":524000000}},"flags":""},{"id":"17","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.17/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":17}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":524000000}},"flags":""}],"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"106","active-flows":100,"packets-matched":"99"}},{"id":226,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":179,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":149,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":104,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":59,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":29,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":225,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":180,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":150,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":103,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":66,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":32,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":220,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":185,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":151,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":102,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":65,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":31,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":253,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":219,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":186,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":152,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":101,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":64,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":34,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":252,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":222,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":183,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":153,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":100,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":63,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":33,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":251,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":221,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":184,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":154,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":99,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":54,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":20,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":250,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":216,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":189,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":155,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":129,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":114,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":53,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":19,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":249,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":215,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":190,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":156,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":130,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":113,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":52,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":22,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":248,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":218,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":187,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":157,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":112,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":51,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":21,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":247,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":217,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":188,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":158,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":128,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":111,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":58,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":24,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":246,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":212,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":193,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":159,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":110,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":57,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":23,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":245,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":211,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":194,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":160,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":109,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":56,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":26,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":244,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":214,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":191,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":161,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":108,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":55,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":25,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":243,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":213,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":192,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":162,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":107,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":77,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":43,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":17,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":239,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":198,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":164,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":138,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":119,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":89,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":78,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":44,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":18,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":240,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":197,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":163,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":137,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":120,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":90,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":75,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":45,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":15,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":241,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":196,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":166,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":136,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":121,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":87,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":76,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":46,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":16,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":242,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":195,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":165,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":135,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":122,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":88,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":81,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":47,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":13,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":235,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":202,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":168,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":134,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":115,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":85,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":82,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":48,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":14,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":236,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":201,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":167,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":133,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":116,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":86,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":79,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":49,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":11,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":237,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":200,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":170,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":132,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":117,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":83,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":80,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":50,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":12,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":238,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":199,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":169,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":131,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":118,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":84,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":69,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":35,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":9,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":231,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":206,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":172,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":146,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":127,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":97,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":70,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":36,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":10,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":232,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":205,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":171,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":145,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":98,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":67,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":37,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":7,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":233,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":204,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":174,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":144,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":95,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":68,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":38,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":8,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":234,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":203,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":173,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":143,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":96,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":73,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":39,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":5,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":227,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":210,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":176,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":142,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":123,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":93,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":74,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":40,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":6,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":228,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":209,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":175,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":141,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":124,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":94,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":71,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":41,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":3,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":229,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":208,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":178,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":140,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":125,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":91,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":72,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":42,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":4,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":230,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":207,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":177,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":139,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":126,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":92,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}}],"opendaylight-group-statistics:group-features":{"max-groups":[4294967040],"group-types-supported":["opendaylight-group-types:group-all","opendaylight-group-types:group-ff","opendaylight-group-types:group-select","opendaylight-group-types:group-indirect"],"group-capabilities-supported":["opendaylight-group-types:chaining","opendaylight-group-types:select-weight","opendaylight-group-types:select-liveness"],"actions":[67076097]},"flow-node-inventory:switch-features":{"max_tables":254,"capabilities":["flow-node-inventory:flow-feature-capability-table-stats","flow-node-inventory:flow-feature-capability-group-stats","flow-node-inventory:flow-feature-capability-queue-stats","flow-node-inventory:flow-feature-capability-flow-stats","flow-node-inventory:flow-feature-capability-port-stats"],"max_buffers":0},"flow-node-inventory:snapshot-gathering-status-start":{"begin":"2026-04-08T01:07:22.894Z"},"node-connector":[{"id":"openflow:1:1","flow-node-inventory:port-number":1,"flow-node-inventory:hardware-address":"92:f4:e8:ea:c6:ad","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s1-eth1","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"98","received":"12"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":538,"nanosecond":261000000},"bytes":{"transmitted":"8255","received":"936"},"receive-crc-error":"0"}},{"id":"openflow:1:LOCAL","flow-node-inventory:port-number":4294967294,"flow-node-inventory:hardware-address":"e6:45:d0:5b:c7:49","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s1","flow-node-inventory:current-feature":"","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":0,"flow-node-inventory:state":{"live":false,"blocked":false,"link-down":true},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"PORT-DOWN","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"0","received":"0"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":538,"nanosecond":257000000},"bytes":{"transmitted":"0","received":"0"},"receive-crc-error":"0"}},{"id":"openflow:1:2","flow-node-inventory:port-number":2,"flow-node-inventory:hardware-address":"42:46:a8:4b:8b:86","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s1-eth2","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"91","received":"96"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":538,"nanosecond":261000000},"bytes":{"transmitted":"7657","received":"8079"},"receive-crc-error":"0"}}],"flow-node-inventory:group":[{"group-id":56,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":56000}}],"watch_group":56000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":56,"duration":{"second":44,"nanosecond":786000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":22,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":22000}}],"watch_group":22000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":22,"duration":{"second":44,"nanosecond":786000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":99,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":99000}}],"watch_group":99000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":99,"duration":{"second":44,"nanosecond":786000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":34000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":34000,"duration":{"second":47,"nanosecond":685000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":89000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":89000,"duration":{"second":47,"nanosecond":685000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":60000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":60000,"duration":{"second":47,"nanosecond":685000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":91000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":91000,"duration":{"second":47,"nanosecond":685000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":57,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":57000}}],"watch_group":57000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":57,"duration":{"second":44,"nanosecond":786000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":23,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":23000}}],"watch_group":23000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":23,"duration":{"second":44,"nanosecond":288000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":14000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":14000,"duration":{"second":47,"nanosecond":685000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":98,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":98000}}],"watch_group":98000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":98,"duration":{"second":44,"nanosecond":288000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":56000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":56000,"duration":{"second":47,"nanosecond":685000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":85000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":85000,"duration":{"second":47,"nanosecond":684000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":54,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":54000}}],"watch_group":54000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":54,"duration":{"second":44,"nanosecond":288000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":24,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":24000}}],"watch_group":24000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":24,"duration":{"second":44,"nanosecond":288000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":36000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":36000,"duration":{"second":47,"nanosecond":684000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":87000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":87000,"duration":{"second":47,"nanosecond":684000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":59000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":59000,"duration":{"second":47,"nanosecond":684000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":25000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":25000,"duration":{"second":47,"nanosecond":683000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":43000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":43000,"duration":{"second":47,"nanosecond":683000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":55,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":55000}}],"watch_group":55000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":55,"duration":{"second":44,"nanosecond":288000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":25,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":25000}}],"watch_group":25000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":25,"duration":{"second":47,"nanosecond":292000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":100,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":100000}}],"watch_group":100000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":100,"duration":{"second":44,"nanosecond":288000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":58000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":58000,"duration":{"second":47,"nanosecond":292000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":86000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":86000,"duration":{"second":47,"nanosecond":292000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":60,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":60000}}],"watch_group":60000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":60,"duration":{"second":47,"nanosecond":292000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":26,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":26000}}],"watch_group":26000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":26,"duration":{"second":44,"nanosecond":288000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":41000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":41000,"duration":{"second":47,"nanosecond":292000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":95,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":95000}}],"watch_group":95000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":95,"duration":{"second":44,"nanosecond":288000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":82000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":82000,"duration":{"second":47,"nanosecond":292000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":61,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":61000}}],"watch_group":61000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":61,"duration":{"second":44,"nanosecond":288000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":27,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":27000}}],"watch_group":27000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":27,"duration":{"second":44,"nanosecond":287000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":94,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":94000}}],"watch_group":94000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":94,"duration":{"second":44,"nanosecond":287000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":98000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":98000,"duration":{"second":47,"nanosecond":291000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":27000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":27000,"duration":{"second":47,"nanosecond":291000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":57000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":57000,"duration":{"second":47,"nanosecond":291000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":16000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":16000,"duration":{"second":47,"nanosecond":291000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":83000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":83000,"duration":{"second":47,"nanosecond":291000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":58,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":58000}}],"watch_group":58000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":58,"duration":{"second":46,"nanosecond":794000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":28,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":28000}}],"watch_group":28000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":28,"duration":{"second":44,"nanosecond":287000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":97,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":97000}}],"watch_group":97000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":97,"duration":{"second":44,"nanosecond":287000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":100000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":100000,"duration":{"second":46,"nanosecond":792000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":59,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":59000}}],"watch_group":59000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":59,"duration":{"second":46,"nanosecond":792000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":38000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":38000,"duration":{"second":46,"nanosecond":792000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":29,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":29000}}],"watch_group":29000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":29,"duration":{"second":44,"nanosecond":287000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":96,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":96000}}],"watch_group":96000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":96,"duration":{"second":44,"nanosecond":287000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":84000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":84000,"duration":{"second":46,"nanosecond":792000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":64,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":64000}}],"watch_group":64000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":64,"duration":{"second":44,"nanosecond":287000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":30,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":30000}}],"watch_group":30000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":30,"duration":{"second":44,"nanosecond":287000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":4,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":4000}}],"watch_group":4000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":4,"duration":{"second":44,"nanosecond":286000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":91,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":91000}}],"watch_group":91000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":91,"duration":{"second":46,"nanosecond":789000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":7000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":7000,"duration":{"second":46,"nanosecond":788000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":29000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":29000,"duration":{"second":46,"nanosecond":783000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":65,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":65000}}],"watch_group":65000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":65,"duration":{"second":44,"nanosecond":286000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":31,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":31000}}],"watch_group":31000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":31,"duration":{"second":44,"nanosecond":286000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":5,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":5000}}],"watch_group":5000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":5,"duration":{"second":44,"nanosecond":286000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":90,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":90000}}],"watch_group":90000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":90,"duration":{"second":44,"nanosecond":286000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":18000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":18000,"duration":{"second":46,"nanosecond":783000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":62,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":62000}}],"watch_group":62000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":62,"duration":{"second":44,"nanosecond":286000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":65000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":65000,"duration":{"second":46,"nanosecond":783000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":32,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":32000}}],"watch_group":32000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":32,"duration":{"second":44,"nanosecond":286000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":2,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":2000}}],"watch_group":2000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":2,"duration":{"second":44,"nanosecond":283000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":93,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":93000}}],"watch_group":93000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":93,"duration":{"second":44,"nanosecond":283000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":64000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":64000,"duration":{"second":46,"nanosecond":772000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":63,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":63000}}],"watch_group":63000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":63,"duration":{"second":44,"nanosecond":283000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":33,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":33000}}],"watch_group":33000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":33,"duration":{"second":44,"nanosecond":283000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":3,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":3000}}],"watch_group":3000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":3,"duration":{"second":44,"nanosecond":283000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":80000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":80000,"duration":{"second":46,"nanosecond":772000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":9000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":9000,"duration":{"second":46,"nanosecond":772000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":92,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":92000}}],"watch_group":92000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":92,"duration":{"second":44,"nanosecond":283000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":5000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":5000,"duration":{"second":46,"nanosecond":772000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":20000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":20000,"duration":{"second":46,"nanosecond":772000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":81000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":81000,"duration":{"second":46,"nanosecond":772000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":97000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":97000,"duration":{"second":46,"nanosecond":772000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":31000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":31000,"duration":{"second":46,"nanosecond":772000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":68,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":68000}}],"watch_group":68000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":68,"duration":{"second":44,"nanosecond":283000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":11000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":11000,"duration":{"second":46,"nanosecond":772000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":34,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":34000}}],"watch_group":34000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":34,"duration":{"second":46,"nanosecond":772000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":78000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":78000,"duration":{"second":46,"nanosecond":772000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":87,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":87000}}],"watch_group":87000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":87,"duration":{"second":46,"nanosecond":772000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":93000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":93000,"duration":{"second":46,"nanosecond":772000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":63000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":63000,"duration":{"second":46,"nanosecond":772000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":69,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":69000}}],"watch_group":69000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":69,"duration":{"second":44,"nanosecond":283000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":35,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":35000}}],"watch_group":35000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":35,"duration":{"second":44,"nanosecond":283000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":1,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":1000}}],"watch_group":1000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":1,"duration":{"second":44,"nanosecond":283000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":33000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":33000,"duration":{"second":46,"nanosecond":772000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":79000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":79000,"duration":{"second":46,"nanosecond":772000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":86,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":86000}}],"watch_group":86000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":86,"duration":{"second":46,"nanosecond":772000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":62000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":62000,"duration":{"second":46,"nanosecond":772000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":66,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":66000}}],"watch_group":66000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":66,"duration":{"second":44,"nanosecond":283000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":77000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":77000,"duration":{"second":46,"nanosecond":772000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":36,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":36000}}],"watch_group":36000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":36,"duration":{"second":46,"nanosecond":772000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":89,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":89000}}],"watch_group":89000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":89,"duration":{"second":46,"nanosecond":772000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":22000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":22000,"duration":{"second":46,"nanosecond":772000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":95000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":95000,"duration":{"second":46,"nanosecond":772000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":67,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":67000}}],"watch_group":67000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":67,"duration":{"second":44,"nanosecond":283000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":37,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":37000}}],"watch_group":37000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":37,"duration":{"second":44,"nanosecond":283000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":1000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":1000,"duration":{"second":46,"nanosecond":768000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":88,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":88000}}],"watch_group":88000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":88,"duration":{"second":44,"nanosecond":256000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":61000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":61000,"duration":{"second":46,"nanosecond":768000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":3000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":3000,"duration":{"second":46,"nanosecond":767000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":73,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":73000}}],"watch_group":73000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":73,"duration":{"second":44,"nanosecond":256000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":39,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":39000}}],"watch_group":39000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":39,"duration":{"second":44,"nanosecond":256000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":13,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":13000}}],"watch_group":13000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":13,"duration":{"second":44,"nanosecond":256000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":74000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":74000,"duration":{"second":46,"nanosecond":767000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":15000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":15000,"duration":{"second":46,"nanosecond":767000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":44000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":44000,"duration":{"second":46,"nanosecond":767000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":45000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":45000,"duration":{"second":46,"nanosecond":767000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":68000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":68000,"duration":{"second":46,"nanosecond":767000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":72,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":72000}}],"watch_group":72000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":72,"duration":{"second":44,"nanosecond":256000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":38,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":38000}}],"watch_group":38000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":38,"duration":{"second":46,"nanosecond":292000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":75000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":75000,"duration":{"second":46,"nanosecond":292000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":12,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":12000}}],"watch_group":12000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":12,"duration":{"second":44,"nanosecond":256000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":35000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":35000,"duration":{"second":46,"nanosecond":292000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":24000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":24000,"duration":{"second":46,"nanosecond":290000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":90000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":90000,"duration":{"second":46,"nanosecond":290000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":71,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":71000}}],"watch_group":71000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":71,"duration":{"second":44,"nanosecond":256000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":41,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":41000}}],"watch_group":41000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":41,"duration":{"second":46,"nanosecond":290000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":42000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":42000,"duration":{"second":46,"nanosecond":290000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":11,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":11000}}],"watch_group":11000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":11,"duration":{"second":46,"nanosecond":288000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":92000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":92000,"duration":{"second":46,"nanosecond":288000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":46000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":46000,"duration":{"second":46,"nanosecond":288000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":67000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":67000,"duration":{"second":46,"nanosecond":288000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":70,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":70000}}],"watch_group":70000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":70,"duration":{"second":44,"nanosecond":256000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":76000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":76000,"duration":{"second":46,"nanosecond":287000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":40,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":40000}}],"watch_group":40000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":40,"duration":{"second":44,"nanosecond":256000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":13000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":13000,"duration":{"second":46,"nanosecond":283000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":10,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":10000}}],"watch_group":10000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":10,"duration":{"second":44,"nanosecond":256000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":88000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":88000,"duration":{"second":46,"nanosecond":283000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":47000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":47000,"duration":{"second":46,"nanosecond":282000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":66000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":66000,"duration":{"second":46,"nanosecond":282000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":77,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":77000}}],"watch_group":77000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":77,"duration":{"second":46,"nanosecond":281000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":43,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":43000}}],"watch_group":43000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":43,"duration":{"second":46,"nanosecond":281000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":9,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":9000}}],"watch_group":9000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":9,"duration":{"second":46,"nanosecond":281000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":99000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":99000,"duration":{"second":46,"nanosecond":280000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":26000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":26000,"duration":{"second":46,"nanosecond":280000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":70000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":70000,"duration":{"second":46,"nanosecond":280000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":76,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":76000}}],"watch_group":76000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":76,"duration":{"second":45,"nanosecond":791000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":42,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":42000}}],"watch_group":42000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":42,"duration":{"second":45,"nanosecond":789000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":8,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":8000}}],"watch_group":8000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":8,"duration":{"second":44,"nanosecond":256000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":37000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":37000,"duration":{"second":45,"nanosecond":789000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":49000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":49000,"duration":{"second":45,"nanosecond":789000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":71000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":71000,"duration":{"second":45,"nanosecond":789000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":48000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":48000,"duration":{"second":45,"nanosecond":789000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":75,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":75000}}],"watch_group":75000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":75,"duration":{"second":45,"nanosecond":789000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":45,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":45000}}],"watch_group":45000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":45,"duration":{"second":45,"nanosecond":789000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":7,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":7000}}],"watch_group":7000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":7,"duration":{"second":45,"nanosecond":781000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":39000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":39000,"duration":{"second":45,"nanosecond":781000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":73000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":73000,"duration":{"second":45,"nanosecond":781000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":69000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":69000,"duration":{"second":45,"nanosecond":781000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":17000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":17000,"duration":{"second":45,"nanosecond":781000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":28000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":28000,"duration":{"second":45,"nanosecond":781000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":74,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":74000}}],"watch_group":74000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":74,"duration":{"second":45,"nanosecond":781000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":44,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":44000}}],"watch_group":44000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":44,"duration":{"second":45,"nanosecond":781000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":6,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":6000}}],"watch_group":6000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":6,"duration":{"second":44,"nanosecond":256000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":40000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":40000,"duration":{"second":45,"nanosecond":781000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":81,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":81000}}],"watch_group":81000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":81,"duration":{"second":45,"nanosecond":781000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":47,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":47000}}],"watch_group":47000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":47,"duration":{"second":45,"nanosecond":781000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":21,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":21000}}],"watch_group":21000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":21,"duration":{"second":44,"nanosecond":256000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":8000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":8000,"duration":{"second":45,"nanosecond":781000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":19000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":19000,"duration":{"second":45,"nanosecond":781000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":96000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":96000,"duration":{"second":45,"nanosecond":781000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":80,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":80000}}],"watch_group":80000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":80,"duration":{"second":45,"nanosecond":780000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":46,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":46000}}],"watch_group":46000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":46,"duration":{"second":45,"nanosecond":780000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":20,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":20000}}],"watch_group":20000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":20,"duration":{"second":45,"nanosecond":780000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":52000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":52000,"duration":{"second":45,"nanosecond":780000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":6000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":6000,"duration":{"second":45,"nanosecond":780000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":79,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":79000}}],"watch_group":79000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":79,"duration":{"second":45,"nanosecond":780000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":49,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":49000}}],"watch_group":49000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":49,"duration":{"second":45,"nanosecond":290000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":19,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":19000}}],"watch_group":19000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":19,"duration":{"second":45,"nanosecond":290000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":50000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":50000,"duration":{"second":45,"nanosecond":290000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":72000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":72000,"duration":{"second":45,"nanosecond":289000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":30000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":30000,"duration":{"second":45,"nanosecond":288000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":78,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":78000}}],"watch_group":78000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":78,"duration":{"second":45,"nanosecond":288000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":48,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":48000}}],"watch_group":48000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":48,"duration":{"second":45,"nanosecond":288000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":18,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":18000}}],"watch_group":18000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":18,"duration":{"second":45,"nanosecond":288000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":51000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":51000,"duration":{"second":45,"nanosecond":288000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":85,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":85000}}],"watch_group":85000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":85,"duration":{"second":45,"nanosecond":288000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":55000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":55000,"duration":{"second":45,"nanosecond":288000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":51,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":51000}}],"watch_group":51000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":51,"duration":{"second":44,"nanosecond":790000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":17,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":17000}}],"watch_group":17000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":17,"duration":{"second":44,"nanosecond":790000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":21000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":21000,"duration":{"second":44,"nanosecond":790000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":4000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":4000,"duration":{"second":44,"nanosecond":786000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":84,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":84000}}],"watch_group":84000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":84,"duration":{"second":44,"nanosecond":786000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":50,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":50000}}],"watch_group":50000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":50,"duration":{"second":44,"nanosecond":786000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":16,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":16000}}],"watch_group":16000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":16,"duration":{"second":44,"nanosecond":786000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":10000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":10000,"duration":{"second":44,"nanosecond":786000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":54000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":54000,"duration":{"second":44,"nanosecond":786000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":83,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":83000}}],"watch_group":83000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":83,"duration":{"second":44,"nanosecond":786000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":32000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":32000,"duration":{"second":44,"nanosecond":786000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":53,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":53000}}],"watch_group":53000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":53,"duration":{"second":44,"nanosecond":256000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":15,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":15000}}],"watch_group":15000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":15,"duration":{"second":44,"nanosecond":786000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":2000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":2000,"duration":{"second":44,"nanosecond":786000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":82,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":82000}}],"watch_group":82000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":82,"duration":{"second":44,"nanosecond":786000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":52,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":52000}}],"watch_group":52000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":52,"duration":{"second":44,"nanosecond":786000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":14,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":14000}}],"watch_group":14000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":14,"duration":{"second":44,"nanosecond":786000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":53000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":53000,"duration":{"second":44,"nanosecond":786000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":12000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":12000,"duration":{"second":44,"nanosecond":786000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":23000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":23000,"duration":{"second":44,"nanosecond":786000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":94000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":94000,"duration":{"second":44,"nanosecond":786000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}}],"flow-node-inventory:snapshot-gathering-status-end":{"succeeded":true,"end":"2026-04-08T01:07:22.961Z"}},{"id":"openflow:2","flow-node-inventory:manufacturer":"Nicira, Inc.","flow-node-inventory:description":"s2","flow-node-inventory:hardware":"Open vSwitch","flow-node-inventory:software":"2.17.11","flow-node-inventory:ip-address":"10.30.170.192","flow-node-inventory:serial-number":"None","flow-node-inventory:port-number":47956,"flow-node-inventory:table":[{"id":62,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":28,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":2,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":224,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":181,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":147,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":106,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":61,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":27,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":1,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":223,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":182,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":148,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":105,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":60,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":30,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":0,"flow":[{"id":"71","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.71/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":71}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":509000000}},"flags":""},{"id":"11","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.11/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":11}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":509000000}},"flags":""},{"id":"70","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.70/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":70}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":509000000}},"flags":""},{"id":"10","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.10/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":10}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":509000000}},"flags":""},{"id":"60","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.60/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":60}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":509000000}},"flags":""},{"id":"13","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.13/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":13}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":509000000}},"flags":""},{"id":"12","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.12/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":12}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":509000000}},"flags":""},{"id":"80","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.80/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":80}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":509000000}},"flags":""},{"id":"93","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.93/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":93}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":509000000}},"flags":""},{"id":"92","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.92/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":92}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":509000000}},"flags":""},{"id":"82","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.82/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":82}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":509000000}},"flags":""},{"id":"91","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.91/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":91}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":509000000}},"flags":""},{"id":"81","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.81/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":81}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":509000000}},"flags":""},{"id":"90","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.90/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":90}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":509000000}},"flags":""},{"id":"9","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.9/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":9}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":508000000}},"flags":""},{"id":"84","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.84/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":84}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":509000000}},"flags":""},{"id":"97","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.97/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":97}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":508000000}},"flags":""},{"id":"66","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.66/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":66}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":509000000}},"flags":""},{"id":"79","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.79/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":79}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":509000000}},"flags":""},{"id":"54","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.54/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":54}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":508000000}},"flags":""},{"id":"45","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.45/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":45}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":508000000}},"flags":""},{"id":"83","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.83/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":83}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":509000000}},"flags":""},{"id":"96","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.96/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":96}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":508000000}},"flags":""},{"id":"65","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.65/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":65}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":509000000}},"flags":""},{"id":"78","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.78/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":78}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":509000000}},"flags":""},{"id":"20","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.20/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":20}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":508000000}},"flags":""},{"id":"55","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.55/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":55}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":508000000}},"flags":""},{"id":"46","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.46/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":46}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":508000000}},"flags":""},{"id":"7","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.7/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":7}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":508000000}},"flags":""},{"id":"86","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.86/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":86}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":509000000}},"flags":""},{"id":"95","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.95/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":95}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":508000000}},"flags":""},{"id":"68","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.68/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":68}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":509000000}},"flags":""},{"id":"77","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.77/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":77}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":509000000}},"flags":""},{"id":"30","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.30/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":30}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":508000000}},"flags":""},{"id":"56","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.56/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":56}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":508000000}},"flags":""},{"id":"43","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.43/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":43}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":508000000}},"flags":""},{"id":"8","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.8/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":8}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":508000000}},"flags":""},{"id":"85","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.85/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":85}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":509000000}},"flags":""},{"id":"94","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.94/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":94}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":508000000}},"flags":""},{"id":"67","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.67/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":67}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":509000000}},"flags":""},{"id":"76","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.76/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":76}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":509000000}},"flags":""},{"id":"31","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.31/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":31}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":508000000}},"flags":""},{"id":"57","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.57/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":57}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":508000000}},"flags":""},{"id":"44","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.44/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":44}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":508000000}},"flags":""},{"id":"5","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.5/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":5}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":508000000}},"flags":""},{"id":"88","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.88/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":88}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":509000000}},"flags":""},{"id":"62","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.62/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":62}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":509000000}},"flags":""},{"id":"75","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.75/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":75}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":509000000}},"flags":""},{"id":"32","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.32/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":32}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":508000000}},"flags":""},{"id":"23","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.23/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":23}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":508000000}},"flags":""},{"id":"50","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.50/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":50}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":508000000}},"flags":""},{"id":"41","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.41/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":41}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":508000000}},"flags":""},{"id":"6","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.6/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":6}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":508000000}},"flags":""},{"id":"100","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.100/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":100}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":509000000}},"flags":""},{"id":"87","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.87/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":87}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":509000000}},"flags":""},{"id":"61","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.61/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":61}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":509000000}},"flags":""},{"id":"74","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.74/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":74}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":509000000}},"flags":""},{"id":"33","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.33/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":33}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":508000000}},"flags":""},{"id":"24","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.24/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":24}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":508000000}},"flags":""},{"id":"51","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.51/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":51}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":508000000}},"flags":""},{"id":"42","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.42/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":42}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":508000000}},"flags":""},{"id":"3","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.3/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":3}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":508000000}},"flags":""},{"id":"99","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.99/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":99}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":509000000}},"flags":""},{"id":"64","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.64/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":64}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":509000000}},"flags":""},{"id":"73","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.73/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":73}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":509000000}},"flags":""},{"id":"34","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.34/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":34}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":508000000}},"flags":""},{"id":"21","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.21/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":21}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":508000000}},"flags":""},{"id":"52","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.52/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":52}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":508000000}},"flags":""},{"id":"4","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.4/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":4}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":508000000}},"flags":""},{"id":"89","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.89/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":89}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":509000000}},"flags":""},{"id":"98","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.98/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":98}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":508000000}},"flags":""},{"id":"63","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.63/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":63}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":509000000}},"flags":""},{"id":"72","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.72/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":72}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":509000000}},"flags":""},{"id":"35","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.35/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":35}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":508000000}},"flags":""},{"id":"22","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.22/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":22}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":508000000}},"flags":""},{"id":"53","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.53/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":53}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":508000000}},"flags":""},{"id":"40","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.40/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":40}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":508000000}},"flags":""},{"id":"#UF$TABLE*0-2","table_id":0,"priority":0,"cookie_mask":"0","idle-timeout":0,"cookie":"10","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"output-action":{"max-length":65535,"output-node-connector":"CONTROLLER"}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"20","byte-count":"1700","duration":{"second":43,"nanosecond":304000000}},"flags":"SEND_FLOW_REM"},{"id":"37","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.37/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":37}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":508000000}},"flags":""},{"id":"28","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.28/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":28}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":508000000}},"flags":""},{"id":"36","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.36/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":36}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":508000000}},"flags":""},{"id":"27","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.27/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":27}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":508000000}},"flags":""},{"id":"39","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.39/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":39}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":508000000}},"flags":""},{"id":"26","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.26/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":26}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":508000000}},"flags":""},{"id":"38","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.38/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":38}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":508000000}},"flags":""},{"id":"25","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.25/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":25}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":508000000}},"flags":""},{"id":"69","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.69/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":69}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":509000000}},"flags":""},{"id":"59","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.59/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":59}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":508000000}},"flags":""},{"id":"58","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.58/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":58}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":508000000}},"flags":""},{"id":"49","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.49/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":49}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":508000000}},"flags":""},{"id":"48","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.48/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":48}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":508000000}},"flags":""},{"id":"29","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.29/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":29}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":508000000}},"flags":""},{"id":"47","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.47/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":47}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":508000000}},"flags":""},{"id":"18","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.18/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":18}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":509000000}},"flags":""},{"id":"19","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.19/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":19}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":509000000}},"flags":""},{"id":"14","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.14/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":14}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":509000000}},"flags":""},{"id":"15","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.15/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":15}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":509000000}},"flags":""},{"id":"1","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.1/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":1}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":509000000}},"flags":""},{"id":"16","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.16/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":16}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":509000000}},"flags":""},{"id":"2","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.2/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":2}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":509000000}},"flags":""},{"id":"17","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.17/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":17}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":509000000}},"flags":""}],"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"192","active-flows":100,"packets-matched":"180"}},{"id":226,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":179,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":149,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":104,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":59,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":29,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":225,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":180,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":150,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":103,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":66,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":32,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":220,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":185,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":151,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":102,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":65,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":31,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":253,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":219,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":186,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":152,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":101,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":64,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":34,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":252,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":222,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":183,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":153,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":100,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":63,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":33,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":251,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":221,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":184,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":154,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":99,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":54,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":20,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":250,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":216,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":189,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":155,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":129,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":114,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":53,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":19,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":249,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":215,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":190,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":156,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":130,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":113,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":52,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":22,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":248,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":218,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":187,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":157,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":112,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":51,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":21,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":247,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":217,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":188,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":158,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":128,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":111,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":58,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":24,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":246,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":212,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":193,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":159,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":110,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":57,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":23,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":245,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":211,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":194,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":160,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":109,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":56,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":26,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":244,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":214,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":191,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":161,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":108,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":55,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":25,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":243,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":213,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":192,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":162,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":107,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":77,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":43,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":17,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":239,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":198,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":164,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":138,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":119,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":89,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":78,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":44,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":18,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":240,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":197,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":163,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":137,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":120,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":90,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":75,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":45,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":15,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":241,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":196,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":166,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":136,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":121,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":87,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":76,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":46,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":16,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":242,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":195,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":165,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":135,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":122,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":88,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":81,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":47,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":13,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":235,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":202,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":168,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":134,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":115,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":85,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":82,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":48,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":14,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":236,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":201,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":167,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":133,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":116,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":86,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":79,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":49,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":11,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":237,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":200,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":170,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":132,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":117,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":83,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":80,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":50,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":12,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":238,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":199,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":169,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":131,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":118,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":84,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":69,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":35,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":9,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":231,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":206,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":172,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":146,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":127,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":97,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":70,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":36,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":10,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":232,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":205,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":171,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":145,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":98,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":67,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":37,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":7,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":233,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":204,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":174,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":144,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":95,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":68,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":38,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":8,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":234,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":203,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":173,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":143,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":96,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":73,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":39,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":5,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":227,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":210,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":176,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":142,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":123,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":93,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":74,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":40,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":6,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":228,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":209,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":175,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":141,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":124,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":94,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":71,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":41,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":3,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":229,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":208,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":178,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":140,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":125,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":91,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":72,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":42,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":4,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":230,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":207,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":177,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":139,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":126,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":92,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}}],"opendaylight-group-statistics:group-features":{"max-groups":[4294967040],"group-types-supported":["opendaylight-group-types:group-all","opendaylight-group-types:group-ff","opendaylight-group-types:group-select","opendaylight-group-types:group-indirect"],"group-capabilities-supported":["opendaylight-group-types:chaining","opendaylight-group-types:select-weight","opendaylight-group-types:select-liveness"],"actions":[67076097]},"flow-node-inventory:switch-features":{"max_tables":254,"capabilities":["flow-node-inventory:flow-feature-capability-table-stats","flow-node-inventory:flow-feature-capability-group-stats","flow-node-inventory:flow-feature-capability-queue-stats","flow-node-inventory:flow-feature-capability-flow-stats","flow-node-inventory:flow-feature-capability-port-stats"],"max_buffers":0},"flow-node-inventory:snapshot-gathering-status-start":{"begin":"2026-04-08T01:07:22.877Z"},"node-connector":[{"id":"openflow:2:3","flow-node-inventory:port-number":3,"flow-node-inventory:hardware-address":"da:7c:fc:7d:24:d4","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s2-eth3","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"96","received":"91"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":538,"nanosecond":246000000},"bytes":{"transmitted":"8079","received":"7657"},"receive-crc-error":"0"}},{"id":"openflow:2:LOCAL","flow-node-inventory:port-number":4294967294,"flow-node-inventory:hardware-address":"ee:be:cf:9b:06:44","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s2","flow-node-inventory:current-feature":"","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":0,"flow-node-inventory:state":{"live":false,"blocked":false,"link-down":true},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"PORT-DOWN","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"0","received":"0"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":538,"nanosecond":240000000},"bytes":{"transmitted":"0","received":"0"},"receive-crc-error":"0"}},{"id":"openflow:2:2","flow-node-inventory:port-number":2,"flow-node-inventory:hardware-address":"76:f5:91:ad:d8:c6","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s2-eth2","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"96","received":"91"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":538,"nanosecond":246000000},"bytes":{"transmitted":"8079","received":"7657"},"receive-crc-error":"0"}},{"id":"openflow:2:1","flow-node-inventory:port-number":1,"flow-node-inventory:hardware-address":"96:61:91:36:76:0b","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s2-eth1","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"97","received":"13"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":538,"nanosecond":246000000},"bytes":{"transmitted":"8185","received":"1006"},"receive-crc-error":"0"}}],"flow-node-inventory:group":[{"group-id":56,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":56000}}],"watch_group":56000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":56,"duration":{"second":44,"nanosecond":757000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":22,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":22000}}],"watch_group":22000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":22,"duration":{"second":44,"nanosecond":757000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":99,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":99000}}],"watch_group":99000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":99,"duration":{"second":44,"nanosecond":757000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":34000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":34000,"duration":{"second":47,"nanosecond":670000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":89000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":89000,"duration":{"second":47,"nanosecond":670000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":60000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":60000,"duration":{"second":47,"nanosecond":670000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":91000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":91000,"duration":{"second":47,"nanosecond":670000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":57,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":57000}}],"watch_group":57000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":57,"duration":{"second":44,"nanosecond":757000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":23,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":23000}}],"watch_group":23000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":23,"duration":{"second":44,"nanosecond":259000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":14000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":14000,"duration":{"second":47,"nanosecond":670000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":98,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":98000}}],"watch_group":98000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":98,"duration":{"second":44,"nanosecond":259000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":56000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":56000,"duration":{"second":47,"nanosecond":670000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":85000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":85000,"duration":{"second":47,"nanosecond":670000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":54,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":54000}}],"watch_group":54000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":54,"duration":{"second":44,"nanosecond":259000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":24,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":24000}}],"watch_group":24000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":24,"duration":{"second":44,"nanosecond":259000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":36000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":36000,"duration":{"second":47,"nanosecond":670000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":87000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":87000,"duration":{"second":47,"nanosecond":670000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":59000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":59000,"duration":{"second":47,"nanosecond":670000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":25000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":25000,"duration":{"second":47,"nanosecond":670000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":43000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":43000,"duration":{"second":47,"nanosecond":670000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":55,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":55000}}],"watch_group":55000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":55,"duration":{"second":44,"nanosecond":259000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":25,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":25000}}],"watch_group":25000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":25,"duration":{"second":47,"nanosecond":268000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":100,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":100000}}],"watch_group":100000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":100,"duration":{"second":44,"nanosecond":258000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":58000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":58000,"duration":{"second":47,"nanosecond":268000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":86000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":86000,"duration":{"second":47,"nanosecond":268000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":60,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":60000}}],"watch_group":60000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":60,"duration":{"second":47,"nanosecond":268000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":26,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":26000}}],"watch_group":26000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":26,"duration":{"second":44,"nanosecond":258000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":41000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":41000,"duration":{"second":47,"nanosecond":267000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":95,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":95000}}],"watch_group":95000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":95,"duration":{"second":44,"nanosecond":258000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":82000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":82000,"duration":{"second":47,"nanosecond":267000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":61,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":61000}}],"watch_group":61000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":61,"duration":{"second":44,"nanosecond":258000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":27,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":27000}}],"watch_group":27000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":27,"duration":{"second":44,"nanosecond":258000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":94,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":94000}}],"watch_group":94000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":94,"duration":{"second":44,"nanosecond":258000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":98000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":98000,"duration":{"second":47,"nanosecond":267000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":27000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":27000,"duration":{"second":47,"nanosecond":267000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":57000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":57000,"duration":{"second":47,"nanosecond":266000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":16000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":16000,"duration":{"second":47,"nanosecond":266000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":83000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":83000,"duration":{"second":47,"nanosecond":266000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":58,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":58000}}],"watch_group":58000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":58,"duration":{"second":46,"nanosecond":765000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":28,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":28000}}],"watch_group":28000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":28,"duration":{"second":44,"nanosecond":258000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":97,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":97000}}],"watch_group":97000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":97,"duration":{"second":44,"nanosecond":258000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":100000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":100000,"duration":{"second":46,"nanosecond":765000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":59,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":59000}}],"watch_group":59000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":59,"duration":{"second":46,"nanosecond":763000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":38000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":38000,"duration":{"second":46,"nanosecond":763000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":29,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":29000}}],"watch_group":29000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":29,"duration":{"second":44,"nanosecond":258000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":96,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":96000}}],"watch_group":96000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":96,"duration":{"second":44,"nanosecond":258000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":84000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":84000,"duration":{"second":46,"nanosecond":763000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":64,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":64000}}],"watch_group":64000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":64,"duration":{"second":44,"nanosecond":258000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":30,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":30000}}],"watch_group":30000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":30,"duration":{"second":44,"nanosecond":258000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":4,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":4000}}],"watch_group":4000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":4,"duration":{"second":44,"nanosecond":258000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":91,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":91000}}],"watch_group":91000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":91,"duration":{"second":46,"nanosecond":761000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":7000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":7000,"duration":{"second":46,"nanosecond":761000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":29000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":29000,"duration":{"second":46,"nanosecond":761000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":65,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":65000}}],"watch_group":65000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":65,"duration":{"second":44,"nanosecond":257000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":31,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":31000}}],"watch_group":31000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":31,"duration":{"second":44,"nanosecond":257000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":5,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":5000}}],"watch_group":5000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":5,"duration":{"second":44,"nanosecond":257000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":90,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":90000}}],"watch_group":90000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":90,"duration":{"second":44,"nanosecond":257000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":18000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":18000,"duration":{"second":46,"nanosecond":761000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":62,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":62000}}],"watch_group":62000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":62,"duration":{"second":44,"nanosecond":257000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":65000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":65000,"duration":{"second":46,"nanosecond":761000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":32,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":32000}}],"watch_group":32000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":32,"duration":{"second":44,"nanosecond":257000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":2,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":2000}}],"watch_group":2000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":2,"duration":{"second":44,"nanosecond":257000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":93,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":93000}}],"watch_group":93000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":93,"duration":{"second":44,"nanosecond":257000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":64000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":64000,"duration":{"second":46,"nanosecond":761000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":63,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":63000}}],"watch_group":63000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":63,"duration":{"second":44,"nanosecond":257000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":33,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":33000}}],"watch_group":33000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":33,"duration":{"second":44,"nanosecond":257000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":3,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":3000}}],"watch_group":3000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":3,"duration":{"second":44,"nanosecond":257000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":80000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":80000,"duration":{"second":46,"nanosecond":761000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":9000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":9000,"duration":{"second":46,"nanosecond":760000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":92,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":92000}}],"watch_group":92000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":92,"duration":{"second":44,"nanosecond":257000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":5000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":5000,"duration":{"second":46,"nanosecond":760000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":20000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":20000,"duration":{"second":46,"nanosecond":760000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":81000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":81000,"duration":{"second":46,"nanosecond":760000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":97000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":97000,"duration":{"second":46,"nanosecond":760000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":31000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":31000,"duration":{"second":46,"nanosecond":760000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":68,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":68000}}],"watch_group":68000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":68,"duration":{"second":44,"nanosecond":257000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":11000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":11000,"duration":{"second":46,"nanosecond":759000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":34,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":34000}}],"watch_group":34000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":34,"duration":{"second":46,"nanosecond":754000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":78000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":78000,"duration":{"second":46,"nanosecond":754000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":87,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":87000}}],"watch_group":87000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":87,"duration":{"second":46,"nanosecond":754000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":93000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":93000,"duration":{"second":46,"nanosecond":754000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":63000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":63000,"duration":{"second":46,"nanosecond":754000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":69,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":69000}}],"watch_group":69000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":69,"duration":{"second":44,"nanosecond":256000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":35,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":35000}}],"watch_group":35000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":35,"duration":{"second":44,"nanosecond":256000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":1,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":1000}}],"watch_group":1000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":1,"duration":{"second":44,"nanosecond":245000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":33000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":33000,"duration":{"second":46,"nanosecond":754000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":79000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":79000,"duration":{"second":46,"nanosecond":754000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":86,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":86000}}],"watch_group":86000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":86,"duration":{"second":46,"nanosecond":754000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":62000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":62000,"duration":{"second":46,"nanosecond":754000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":66,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":66000}}],"watch_group":66000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":66,"duration":{"second":44,"nanosecond":245000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":77000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":77000,"duration":{"second":46,"nanosecond":754000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":36,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":36000}}],"watch_group":36000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":36,"duration":{"second":46,"nanosecond":754000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":89,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":89000}}],"watch_group":89000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":89,"duration":{"second":46,"nanosecond":754000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":22000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":22000,"duration":{"second":46,"nanosecond":754000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":95000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":95000,"duration":{"second":46,"nanosecond":754000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":67,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":67000}}],"watch_group":67000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":67,"duration":{"second":44,"nanosecond":245000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":37,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":37000}}],"watch_group":37000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":37,"duration":{"second":44,"nanosecond":245000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":1000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":1000,"duration":{"second":46,"nanosecond":754000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":88,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":88000}}],"watch_group":88000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":88,"duration":{"second":44,"nanosecond":245000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":61000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":61000,"duration":{"second":46,"nanosecond":754000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":3000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":3000,"duration":{"second":46,"nanosecond":754000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":73,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":73000}}],"watch_group":73000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":73,"duration":{"second":44,"nanosecond":245000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":39,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":39000}}],"watch_group":39000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":39,"duration":{"second":44,"nanosecond":245000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":13,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":13000}}],"watch_group":13000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":13,"duration":{"second":44,"nanosecond":245000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":74000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":74000,"duration":{"second":46,"nanosecond":754000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":15000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":15000,"duration":{"second":46,"nanosecond":754000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":44000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":44000,"duration":{"second":46,"nanosecond":754000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":45000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":45000,"duration":{"second":46,"nanosecond":754000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":68000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":68000,"duration":{"second":46,"nanosecond":754000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":72,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":72000}}],"watch_group":72000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":72,"duration":{"second":44,"nanosecond":245000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":38,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":38000}}],"watch_group":38000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":38,"duration":{"second":46,"nanosecond":264000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":75000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":75000,"duration":{"second":46,"nanosecond":264000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":12,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":12000}}],"watch_group":12000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":12,"duration":{"second":44,"nanosecond":245000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":35000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":35000,"duration":{"second":46,"nanosecond":264000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":24000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":24000,"duration":{"second":46,"nanosecond":264000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":90000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":90000,"duration":{"second":46,"nanosecond":262000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":71,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":71000}}],"watch_group":71000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":71,"duration":{"second":44,"nanosecond":245000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":41,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":41000}}],"watch_group":41000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":41,"duration":{"second":46,"nanosecond":262000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":42000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":42000,"duration":{"second":46,"nanosecond":262000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":11,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":11000}}],"watch_group":11000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":11,"duration":{"second":46,"nanosecond":262000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":92000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":92000,"duration":{"second":46,"nanosecond":262000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":46000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":46000,"duration":{"second":46,"nanosecond":262000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":67000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":67000,"duration":{"second":46,"nanosecond":262000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":70,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":70000}}],"watch_group":70000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":70,"duration":{"second":44,"nanosecond":245000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":76000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":76000,"duration":{"second":46,"nanosecond":262000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":40,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":40000}}],"watch_group":40000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":40,"duration":{"second":44,"nanosecond":245000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":13000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":13000,"duration":{"second":46,"nanosecond":262000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":10,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":10000}}],"watch_group":10000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":10,"duration":{"second":44,"nanosecond":245000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":88000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":88000,"duration":{"second":46,"nanosecond":262000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":47000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":47000,"duration":{"second":46,"nanosecond":262000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":66000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":66000,"duration":{"second":46,"nanosecond":262000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":77,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":77000}}],"watch_group":77000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":77,"duration":{"second":46,"nanosecond":262000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":43,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":43000}}],"watch_group":43000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":43,"duration":{"second":46,"nanosecond":262000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":9,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":9000}}],"watch_group":9000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":9,"duration":{"second":46,"nanosecond":262000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":99000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":99000,"duration":{"second":46,"nanosecond":262000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":26000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":26000,"duration":{"second":46,"nanosecond":262000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":70000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":70000,"duration":{"second":46,"nanosecond":262000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":76,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":76000}}],"watch_group":76000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":76,"duration":{"second":45,"nanosecond":761000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":42,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":42000}}],"watch_group":42000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":42,"duration":{"second":45,"nanosecond":760000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":8,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":8000}}],"watch_group":8000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":8,"duration":{"second":44,"nanosecond":245000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":37000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":37000,"duration":{"second":45,"nanosecond":760000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":49000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":49000,"duration":{"second":45,"nanosecond":760000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":71000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":71000,"duration":{"second":45,"nanosecond":760000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":48000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":48000,"duration":{"second":45,"nanosecond":760000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":75,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":75000}}],"watch_group":75000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":75,"duration":{"second":45,"nanosecond":760000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":45,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":45000}}],"watch_group":45000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":45,"duration":{"second":45,"nanosecond":759000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":7,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":7000}}],"watch_group":7000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":7,"duration":{"second":45,"nanosecond":759000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":39000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":39000,"duration":{"second":45,"nanosecond":759000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":73000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":73000,"duration":{"second":45,"nanosecond":759000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":69000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":69000,"duration":{"second":45,"nanosecond":759000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":17000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":17000,"duration":{"second":45,"nanosecond":759000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":28000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":28000,"duration":{"second":45,"nanosecond":759000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":74,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":74000}}],"watch_group":74000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":74,"duration":{"second":45,"nanosecond":759000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":44,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":44000}}],"watch_group":44000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":44,"duration":{"second":45,"nanosecond":759000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":6,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":6000}}],"watch_group":6000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":6,"duration":{"second":44,"nanosecond":245000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":40000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":40000,"duration":{"second":45,"nanosecond":758000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":81,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":81000}}],"watch_group":81000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":81,"duration":{"second":45,"nanosecond":758000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":47,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":47000}}],"watch_group":47000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":47,"duration":{"second":45,"nanosecond":758000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":21,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":21000}}],"watch_group":21000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":21,"duration":{"second":44,"nanosecond":245000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":8000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":8000,"duration":{"second":45,"nanosecond":758000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":19000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":19000,"duration":{"second":45,"nanosecond":758000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":96000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":96000,"duration":{"second":45,"nanosecond":757000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":80,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":80000}}],"watch_group":80000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":80,"duration":{"second":45,"nanosecond":757000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":46,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":46000}}],"watch_group":46000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":46,"duration":{"second":45,"nanosecond":757000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":20,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":20000}}],"watch_group":20000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":20,"duration":{"second":45,"nanosecond":757000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":52000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":52000,"duration":{"second":45,"nanosecond":757000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":6000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":6000,"duration":{"second":45,"nanosecond":757000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":79,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":79000}}],"watch_group":79000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":79,"duration":{"second":45,"nanosecond":752000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":49,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":49000}}],"watch_group":49000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":49,"duration":{"second":45,"nanosecond":259000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":19,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":19000}}],"watch_group":19000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":19,"duration":{"second":45,"nanosecond":259000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":50000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":50000,"duration":{"second":45,"nanosecond":259000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":72000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":72000,"duration":{"second":45,"nanosecond":259000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":30000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":30000,"duration":{"second":45,"nanosecond":259000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":78,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":78000}}],"watch_group":78000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":78,"duration":{"second":45,"nanosecond":259000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":48,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":48000}}],"watch_group":48000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":48,"duration":{"second":45,"nanosecond":258000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":18,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":18000}}],"watch_group":18000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":18,"duration":{"second":45,"nanosecond":258000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":51000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":51000,"duration":{"second":45,"nanosecond":258000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":85,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":85000}}],"watch_group":85000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":85,"duration":{"second":45,"nanosecond":258000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":55000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":55000,"duration":{"second":45,"nanosecond":258000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":51,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":51000}}],"watch_group":51000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":51,"duration":{"second":44,"nanosecond":759000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":17,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":17000}}],"watch_group":17000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":17,"duration":{"second":44,"nanosecond":759000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":21000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":21000,"duration":{"second":44,"nanosecond":759000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":4000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":4000,"duration":{"second":44,"nanosecond":759000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":84,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":84000}}],"watch_group":84000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":84,"duration":{"second":44,"nanosecond":759000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":50,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":50000}}],"watch_group":50000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":50,"duration":{"second":44,"nanosecond":759000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":16,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":16000}}],"watch_group":16000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":16,"duration":{"second":44,"nanosecond":759000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":10000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":10000,"duration":{"second":44,"nanosecond":759000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":54000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":54000,"duration":{"second":44,"nanosecond":759000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":83,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":83000}}],"watch_group":83000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":83,"duration":{"second":44,"nanosecond":758000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":32000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":32000,"duration":{"second":44,"nanosecond":758000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":53,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":53000}}],"watch_group":53000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":53,"duration":{"second":44,"nanosecond":245000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":15,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":15000}}],"watch_group":15000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":15,"duration":{"second":44,"nanosecond":758000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":2000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":2000,"duration":{"second":44,"nanosecond":758000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":82,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":82000}}],"watch_group":82000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":82,"duration":{"second":44,"nanosecond":758000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":52,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":52000}}],"watch_group":52000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":52,"duration":{"second":44,"nanosecond":758000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":14,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":14000}}],"watch_group":14000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":14,"duration":{"second":44,"nanosecond":758000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":53000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":53000,"duration":{"second":44,"nanosecond":758000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":12000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":12000,"duration":{"second":44,"nanosecond":757000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":23000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":23000,"duration":{"second":44,"nanosecond":757000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":94000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":94000,"duration":{"second":44,"nanosecond":757000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}}],"flow-node-inventory:snapshot-gathering-status-end":{"succeeded":true,"end":"2026-04-08T01:07:22.953Z"}}]}}</msg>
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:07:25.344198" elapsed="0.008476"/>
</kw>
<kw name="Get Count" owner="BuiltIn">
<msg time="2026-04-08T01:07:25.356013" level="INFO">Item found from container 303 times.</msg>
<msg time="2026-04-08T01:07:25.356102" level="INFO">${count} = 303</msg>
<var>${count}</var>
<arg>${resp.text}</arg>
<arg>"priority"</arg>
<doc>Returns and logs how many times ``item`` is found from ``container``.</doc>
<status status="PASS" start="2026-04-08T01:07:25.352869" elapsed="0.003258"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${count}</arg>
<arg>${flows}</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="PASS" start="2026-04-08T01:07:25.356341" elapsed="0.000318"/>
</kw>
<arg>${all_flows}</arg>
<doc>Check number of flows in the inventory.</doc>
<status status="PASS" start="2026-04-08T01:07:25.155736" elapsed="0.200992"/>
</kw>
<arg>30s</arg>
<arg>1s</arg>
<arg>ClusterOpenFlow.Check Number Of Flows On Member</arg>
<arg>${all_flows}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-08T01:07:25.155125" elapsed="0.201651"/>
</kw>
<doc>Check Flows in Operational DS.</doc>
<status status="PASS" start="2026-04-08T01:07:24.691023" elapsed="0.665876"/>
</test>
<test id="s1-s4-t69" name="Check Groups In Operational DS After Controller Restarts" line="457">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-08T01:07:25.360860" elapsed="0.000204"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-08T01:07:25.360595" elapsed="0.000523"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:07:25.362174" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:07:25.362040" elapsed="0.000184"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:25.362018" elapsed="0.000229"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:07:25.367086" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:07:25.366979" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:25.366961" elapsed="0.000192"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:07:25.368180" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:07:25.367782" elapsed="0.000426"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:07:25.368672" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:07:25.368370" elapsed="0.000328"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T01:07:25.368743" elapsed="0.000034"/>
</return>
<msg time="2026-04-08T01:07:25.368902" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T01:07:25.367399" elapsed="0.001528"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:07:25.374459" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:07:25.374352" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:25.374333" elapsed="0.000192"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:07:25.375673" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:07:25.375566" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:25.375548" elapsed="0.000191"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:07:25.376199" level="INFO">${karaf_connection_index} = 593</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:07:25.375883" elapsed="0.000343"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:07:25.376643" level="INFO">${current_connection_index} = 495</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:07:25.376387" elapsed="0.000282"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:07:25.427155" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:07:25.377188" elapsed="0.050081"/>
</kw>
<msg time="2026-04-08T01:07:25.427433" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T01:07:25.427479" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:07:25.376835" elapsed="0.050679"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T01:07:25.506929" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "G "r "o "u "p "s "[C "I "n "[C "O "p "e "r "a "t "i "o "n "a "l "[C "D "S "[C "A "f "t "e "r "[C "C "o "n "t "r "o "l "l "e "r "[C "R "e "s "[78Ct "[A[78Ca
 "r "t "s "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T01:07:25.428036" elapsed="0.079015"/>
</kw>
<msg time="2026-04-08T01:07:25.507240" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T01:07:25.507288" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "G "r "o "u "p "s...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:07:25.427690" elapsed="0.079682"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:25.507707" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:07:25.507460" elapsed="0.000304"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:25.507437" elapsed="0.000351"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:07:25.508268" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "G "r "o "u "p "s "[C "I "n "[C "O "p "e "r "a "t "i "o "n "a "l "[C "D "S "[C "A "f "t "e "r "[C "C "o "n "t "r "o "l "l "e "r "[C "R "e "s "[78Ct "[A[78Ca
 "r "t "s "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:07:25.507934" elapsed="0.000414"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:25.508641" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:07:25.508417" elapsed="0.000278"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:25.508398" elapsed="0.000320"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T01:07:25.508751" elapsed="0.000031"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:07:25.511511" elapsed="0.000192"/>
</kw>
<msg time="2026-04-08T01:07:25.511764" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:07:25.510365" elapsed="0.001534"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:25.512260" elapsed="0.000090"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:25.512618" elapsed="0.000075"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:07:25.509622" elapsed="0.003182"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T01:07:25.509033" elapsed="0.003836"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T01:07:25.375267" elapsed="0.137717"/>
</kw>
<msg time="2026-04-08T01:07:25.513079" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:07:25.513123" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "G "r "o "u "p "s...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:07:25.374675" elapsed="0.138499"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T01:07:25.513393" elapsed="0.000159"/>
</return>
<status status="PASS" start="2026-04-08T01:07:25.513255" elapsed="0.000341"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:25.513236" elapsed="0.000388"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:25.514070" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:25.514419" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T01:07:25.514492" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T01:07:25.373994" elapsed="0.140606"/>
</kw>
<msg time="2026-04-08T01:07:25.514693" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:07:25.514737" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "G "r "o "u "p "s...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:07:25.369315" elapsed="0.145459"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:25.515099" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:07:25.514849" elapsed="0.000303"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:25.514833" elapsed="0.000358"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T01:07:25.369170" elapsed="0.146045"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:07:25.520822" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:07:25.520714" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:25.520695" elapsed="0.000193"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:07:25.522092" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:07:25.521984" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:25.521966" elapsed="0.000210"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:07:25.522623" level="INFO">${karaf_connection_index} = 594</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:07:25.522325" elapsed="0.000325"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:07:25.523063" level="INFO">${current_connection_index} = 495</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:07:25.522813" elapsed="0.000276"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:07:25.566995" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:07:25.523613" elapsed="0.043487"/>
</kw>
<msg time="2026-04-08T01:07:25.567286" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T01:07:25.567334" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:07:25.523269" elapsed="0.044102"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T01:07:25.638827" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "G "r "o "u "p "s "[C "I "n "[C "O "p "e "r "a "t "i "o "n "a "l "[C "D "S "[C "A "f "t "e "r "[C "C "o "n "t "r "o "l "l "e "r "[C "R "e "s "[78Ct "[A[78Ca
 "r "t "s "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T01:07:25.567896" elapsed="0.071058"/>
</kw>
<msg time="2026-04-08T01:07:25.639116" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T01:07:25.639182" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "G "r "o "u "p "s...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:07:25.567548" elapsed="0.071674"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:25.639535" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:07:25.639304" elapsed="0.000286"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:25.639284" elapsed="0.000330"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:07:25.640065" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "G "r "o "u "p "s "[C "I "n "[C "O "p "e "r "a "t "i "o "n "a "l "[C "D "S "[C "A "f "t "e "r "[C "C "o "n "t "r "o "l "l "e "r "[C "R "e "s "[78Ct "[A[78Ca
 "r "t "s "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:07:25.639766" elapsed="0.000382"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:25.640459" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:07:25.640238" elapsed="0.000276"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:25.640219" elapsed="0.000318"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T01:07:25.640569" elapsed="0.000029"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:07:25.643219" elapsed="0.000194"/>
</kw>
<msg time="2026-04-08T01:07:25.643474" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:07:25.642031" elapsed="0.001572"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:25.643879" elapsed="0.000076"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:25.644228" elapsed="0.000220"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:07:25.641418" elapsed="0.003152"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T01:07:25.640840" elapsed="0.003795"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T01:07:25.521680" elapsed="0.123061"/>
</kw>
<msg time="2026-04-08T01:07:25.644836" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:07:25.644880" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "G "r "o "u "p "s...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:07:25.521042" elapsed="0.123877"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T01:07:25.645105" elapsed="0.000043"/>
</return>
<status status="PASS" start="2026-04-08T01:07:25.644998" elapsed="0.000211"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:25.644979" elapsed="0.000297"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 2,
close the previous connection. In any case create a new connection
to karaf console for 2, set correct prompt set and login to karaf console.
Store connection index for 2 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:25.645669" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:25.646001" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T01:07:25.646071" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T01:07:25.520368" elapsed="0.125825"/>
</kw>
<msg time="2026-04-08T01:07:25.646287" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:07:25.646331" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "G "r "o "u "p "s...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:07:25.515482" elapsed="0.130890"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:25.646696" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:07:25.646446" elapsed="0.000303"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:25.646429" elapsed="0.000343"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T01:07:25.515338" elapsed="0.131458"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:07:25.652348" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:07:25.652238" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:25.652219" elapsed="0.000211"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:07:25.653672" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:07:25.653563" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:25.653544" elapsed="0.000194"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:07:25.654207" level="INFO">${karaf_connection_index} = 595</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:07:25.653890" elapsed="0.000345"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:07:25.654650" level="INFO">${current_connection_index} = 495</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:07:25.654398" elapsed="0.000278"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:07:25.711294" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:07:25.655187" elapsed="0.056214"/>
</kw>
<msg time="2026-04-08T01:07:25.711564" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T01:07:25.711611" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:07:25.654840" elapsed="0.056809"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T01:07:25.783746" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "G "r "o "u "p "s "[C "I "n "[C "O "p "e "r "a "t "i "o "n "a "l "[C "D "S "[C "A "f "t "e "r "[C "C "o "n "t "r "o "l "l "e "r "[C "R "e "s "[78Ct "[A[78Ca
 "r "t "s "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T01:07:25.712201" elapsed="0.071740"/>
</kw>
<msg time="2026-04-08T01:07:25.784135" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T01:07:25.784204" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "G "r "o "u "p "s...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:07:25.711828" elapsed="0.072415"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:25.784611" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:07:25.784348" elapsed="0.000319"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:25.784320" elapsed="0.000372"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:07:25.785202" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "G "r "o "u "p "s "[C "I "n "[C "O "p "e "r "a "t "i "o "n "a "l "[C "D "S "[C "A "f "t "e "r "[C "C "o "n "t "r "o "l "l "e "r "[C "R "e "s "[78Ct "[A[78Ca
 "r "t "s "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:07:25.784838" elapsed="0.000448"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:25.785581" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:07:25.785354" elapsed="0.000353"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:25.785335" elapsed="0.000397"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T01:07:25.785767" elapsed="0.000042"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:07:25.788480" elapsed="0.000199"/>
</kw>
<msg time="2026-04-08T01:07:25.788740" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:07:25.787288" elapsed="0.001583"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:25.789181" elapsed="0.000076"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:25.789516" elapsed="0.000075"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:07:25.786637" elapsed="0.003062"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T01:07:25.786063" elapsed="0.003700"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T01:07:25.653255" elapsed="0.136606"/>
</kw>
<msg time="2026-04-08T01:07:25.789953" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:07:25.790124" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "G "r "o "u "p "s...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:07:25.652585" elapsed="0.137594"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T01:07:25.790370" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-08T01:07:25.790261" elapsed="0.000167"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:25.790242" elapsed="0.000209"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 3,
close the previous connection. In any case create a new connection
to karaf console for 3, set correct prompt set and login to karaf console.
Store connection index for 3 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:25.790846" elapsed="0.000024"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:25.791192" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T01:07:25.791264" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T01:07:25.651883" elapsed="0.139487"/>
</kw>
<msg time="2026-04-08T01:07:25.791462" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:07:25.791506" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "G "r "o "u "p "s...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:07:25.647059" elapsed="0.144485"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:25.791867" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:07:25.791618" elapsed="0.000302"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:25.791601" elapsed="0.000341"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T01:07:25.646916" elapsed="0.145049"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-08T01:07:25.368983" elapsed="0.423014"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-08T01:07:25.366618" elapsed="0.425437"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-08T01:07:25.361744" elapsed="0.430370"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:07:25.361289" elapsed="0.430887"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-08T01:07:25.358018" elapsed="0.434215"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Check Number Of Groups On Member" owner="ClusterOpenFlow">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:07:25.794352" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:07:25.793750" elapsed="0.000630"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T01:07:25.794426" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T01:07:25.794574" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T01:07:25.793402" elapsed="0.001197"/>
</kw>
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T01:07:25.882971" level="INFO">GET Request : url=http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01s3bfo0y24i1es90l47mavglv0.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T01:07:25.885120" level="INFO">GET Response : url=http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Transfer-Encoding': 'chunked'} 
 body={"opendaylight-inventory:nodes":{"node":[{"id":"openflow:3","flow-node-inventory:manufacturer":"Nicira, Inc.","flow-node-inventory:description":"s3","flow-node-inventory:hardware":"Open vSwitch","flow-node-inventory:software":"2.17.11","flow-node-inventory:ip-address":"10.30.170.192","flow-node-inventory:serial-number":"None","flow-node-inventory:port-number":47946,"flow-node-inventory:table":[{"id":62,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":28,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":2,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":224,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":181,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":147,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":106,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":61,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":27,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":1,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":223,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":182,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":148,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":105,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":60,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":30,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":0,"flow":[{"id":"71","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.71/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":71}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":521000000}},"flags":""},{"id":"11","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.11/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":11}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":521000000}},"flags":""},{"id":"70","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.70/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":70}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":521000000}},"flags":""},{"id":"10","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.10/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":10}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":521000000}},"flags":""},{"id":"60","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.60/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":60}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":521000000}},"flags":""},{"id":"13","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.13/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":13}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":521000000}},"flags":""},{"id":"12","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.12/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":12}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":521000000}},"flags":""},{"id":"80","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.80/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":80}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":521000000}},"flags":""},{"id":"93","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.93/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":93}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":521000000}},"flags":""},{"id":"92","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.92/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":92}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":521000000}},"flags":""},{"id":"82","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.82/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":82}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":521000000}},"flags":""},{"id":"91","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.91/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":91}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":521000000}},"flags":""},{"id":"81","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.81/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":81}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":521000000}},"flags":""},{"id":"90","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.90/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":90}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":521000000}},"flags":""},{"id":"9","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.9/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":9}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":520000000}},"flags":""},{"id":"84","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.84/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":84}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":521000000}},"flags":""},{"id":"97","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match... (set the log level to DEBUG or TRACE to see the full content) 
 </msg>
<msg time="2026-04-08T01:07:25.885593" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${RFC8040_OPERATIONAL_NODES_API}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T01:07:25.794757" elapsed="0.090897"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:07:25.891505" level="INFO">{"opendaylight-inventory:nodes":{"node":[{"id":"openflow:3","flow-node-inventory:manufacturer":"Nicira, Inc.","flow-node-inventory:description":"s3","flow-node-inventory:hardware":"Open vSwitch","flow-node-inventory:software":"2.17.11","flow-node-inventory:ip-address":"10.30.170.192","flow-node-inventory:serial-number":"None","flow-node-inventory:port-number":47946,"flow-node-inventory:table":[{"id":62,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":28,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":2,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":224,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":181,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":147,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":106,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":61,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":27,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":1,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":223,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":182,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":148,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":105,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":60,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":30,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":0,"flow":[{"id":"71","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.71/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":71}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":521000000}},"flags":""},{"id":"11","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.11/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":11}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":521000000}},"flags":""},{"id":"70","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.70/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":70}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":521000000}},"flags":""},{"id":"10","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.10/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":10}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":521000000}},"flags":""},{"id":"60","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.60/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":60}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":521000000}},"flags":""},{"id":"13","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.13/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":13}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":521000000}},"flags":""},{"id":"12","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.12/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":12}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":521000000}},"flags":""},{"id":"80","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.80/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":80}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":521000000}},"flags":""},{"id":"93","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.93/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":93}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":521000000}},"flags":""},{"id":"92","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.92/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":92}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":521000000}},"flags":""},{"id":"82","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.82/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":82}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":521000000}},"flags":""},{"id":"91","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.91/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":91}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":521000000}},"flags":""},{"id":"81","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.81/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":81}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":521000000}},"flags":""},{"id":"90","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.90/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":90}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":521000000}},"flags":""},{"id":"9","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.9/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":9}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":520000000}},"flags":""},{"id":"84","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.84/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":84}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":521000000}},"flags":""},{"id":"97","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.97/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":97}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":520000000}},"flags":""},{"id":"66","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.66/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":66}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":521000000}},"flags":""},{"id":"79","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.79/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":79}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":521000000}},"flags":""},{"id":"54","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.54/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":54}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":520000000}},"flags":""},{"id":"45","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.45/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":45}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":520000000}},"flags":""},{"id":"83","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.83/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":83}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":521000000}},"flags":""},{"id":"96","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.96/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":96}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":520000000}},"flags":""},{"id":"65","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.65/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":65}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":521000000}},"flags":""},{"id":"78","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.78/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":78}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":521000000}},"flags":""},{"id":"20","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.20/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":20}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":520000000}},"flags":""},{"id":"55","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.55/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":55}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":520000000}},"flags":""},{"id":"46","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.46/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":46}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":520000000}},"flags":""},{"id":"7","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.7/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":7}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":520000000}},"flags":""},{"id":"86","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.86/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":86}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":521000000}},"flags":""},{"id":"95","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.95/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":95}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":520000000}},"flags":""},{"id":"68","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.68/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":68}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":521000000}},"flags":""},{"id":"77","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.77/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":77}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":521000000}},"flags":""},{"id":"30","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.30/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":30}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":520000000}},"flags":""},{"id":"56","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.56/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":56}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":520000000}},"flags":""},{"id":"43","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.43/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":43}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":520000000}},"flags":""},{"id":"8","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.8/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":8}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":520000000}},"flags":""},{"id":"85","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.85/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":85}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":521000000}},"flags":""},{"id":"94","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.94/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":94}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":520000000}},"flags":""},{"id":"67","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.67/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":67}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":521000000}},"flags":""},{"id":"76","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.76/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":76}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":521000000}},"flags":""},{"id":"31","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.31/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":31}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":520000000}},"flags":""},{"id":"57","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.57/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":57}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":520000000}},"flags":""},{"id":"44","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.44/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":44}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":520000000}},"flags":""},{"id":"5","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.5/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":5}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":520000000}},"flags":""},{"id":"88","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.88/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":88}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":521000000}},"flags":""},{"id":"62","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.62/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":62}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":521000000}},"flags":""},{"id":"75","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.75/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":75}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":521000000}},"flags":""},{"id":"32","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.32/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":32}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":520000000}},"flags":""},{"id":"23","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.23/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":23}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":520000000}},"flags":""},{"id":"50","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.50/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":50}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":519000000}},"flags":""},{"id":"41","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.41/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":41}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":520000000}},"flags":""},{"id":"#UF$TABLE*0-1","table_id":0,"priority":0,"cookie_mask":"0","idle-timeout":0,"cookie":"10","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"output-action":{"max-length":65535,"output-node-connector":"CONTROLLER"}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"11","byte-count":"920","duration":{"second":43,"nanosecond":294000000}},"flags":"SEND_FLOW_REM"},{"id":"6","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.6/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":6}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":520000000}},"flags":""},{"id":"100","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.100/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":100}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":521000000}},"flags":""},{"id":"87","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.87/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":87}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":521000000}},"flags":""},{"id":"61","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.61/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":61}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":521000000}},"flags":""},{"id":"74","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.74/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":74}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":521000000}},"flags":""},{"id":"33","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.33/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":33}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":520000000}},"flags":""},{"id":"24","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.24/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":24}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":520000000}},"flags":""},{"id":"51","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.51/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":51}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":519000000}},"flags":""},{"id":"42","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.42/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":42}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":520000000}},"flags":""},{"id":"3","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.3/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":3}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":520000000}},"flags":""},{"id":"99","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.99/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":99}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":521000000}},"flags":""},{"id":"64","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.64/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":64}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":521000000}},"flags":""},{"id":"73","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.73/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":73}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":521000000}},"flags":""},{"id":"34","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.34/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":34}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":520000000}},"flags":""},{"id":"21","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.21/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":21}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":520000000}},"flags":""},{"id":"52","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.52/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":52}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":519000000}},"flags":""},{"id":"4","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.4/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":4}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":520000000}},"flags":""},{"id":"89","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.89/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":89}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":521000000}},"flags":""},{"id":"98","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.98/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":98}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":520000000}},"flags":""},{"id":"63","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.63/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":63}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":521000000}},"flags":""},{"id":"72","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.72/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":72}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":521000000}},"flags":""},{"id":"35","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.35/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":35}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":520000000}},"flags":""},{"id":"22","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.22/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":22}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":520000000}},"flags":""},{"id":"53","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.53/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":53}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":520000000}},"flags":""},{"id":"40","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.40/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":40}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":520000000}},"flags":""},{"id":"37","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.37/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":37}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":520000000}},"flags":""},{"id":"28","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.28/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":28}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":520000000}},"flags":""},{"id":"36","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.36/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":36}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":520000000}},"flags":""},{"id":"27","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.27/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":27}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":520000000}},"flags":""},{"id":"39","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.39/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":39}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":520000000}},"flags":""},{"id":"26","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.26/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":26}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":520000000}},"flags":""},{"id":"38","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.38/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":38}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":520000000}},"flags":""},{"id":"25","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.25/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":25}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":520000000}},"flags":""},{"id":"69","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.69/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":69}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":521000000}},"flags":""},{"id":"59","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.59/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":59}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":520000000}},"flags":""},{"id":"58","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.58/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":58}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":520000000}},"flags":""},{"id":"49","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.49/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":49}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":520000000}},"flags":""},{"id":"48","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.48/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":48}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":520000000}},"flags":""},{"id":"29","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.29/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":29}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":520000000}},"flags":""},{"id":"47","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.47/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":47}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":520000000}},"flags":""},{"id":"18","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.18/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":18}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":521000000}},"flags":""},{"id":"19","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.19/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":19}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":521000000}},"flags":""},{"id":"14","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.14/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":14}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":521000000}},"flags":""},{"id":"15","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.15/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":15}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":521000000}},"flags":""},{"id":"1","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.1/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":1}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":521000000}},"flags":""},{"id":"16","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.16/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":16}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":521000000}},"flags":""},{"id":"2","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.2/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":2}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":521000000}},"flags":""},{"id":"17","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.17/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":17}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":521000000}},"flags":""}],"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"107","active-flows":100,"packets-matched":"99"}},{"id":226,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":179,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":149,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":104,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":59,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":29,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":225,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":180,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":150,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":103,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":66,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":32,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":220,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":185,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":151,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":102,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":65,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":31,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":253,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":219,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":186,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":152,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":101,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":64,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":34,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":252,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":222,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":183,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":153,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":100,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":63,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":33,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":251,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":221,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":184,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":154,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":99,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":54,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":20,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":250,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":216,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":189,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":155,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":129,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":114,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":53,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":19,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":249,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":215,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":190,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":156,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":130,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":113,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":52,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":22,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":248,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":218,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":187,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":157,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":112,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":51,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":21,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":247,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":217,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":188,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":158,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":128,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":111,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":58,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":24,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":246,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":212,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":193,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":159,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":110,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":57,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":23,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":245,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":211,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":194,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":160,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":109,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":56,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":26,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":244,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":214,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":191,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":161,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":108,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":55,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":25,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":243,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":213,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":192,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":162,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":107,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":77,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":43,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":17,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":239,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":198,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":164,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":138,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":119,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":89,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":78,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":44,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":18,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":240,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":197,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":163,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":137,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":120,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":90,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":75,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":45,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":15,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":241,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":196,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":166,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":136,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":121,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":87,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":76,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":46,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":16,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":242,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":195,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":165,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":135,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":122,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":88,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":81,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":47,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":13,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":235,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":202,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":168,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":134,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":115,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":85,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":82,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":48,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":14,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":236,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":201,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":167,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":133,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":116,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":86,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":79,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":49,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":11,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":237,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":200,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":170,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":132,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":117,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":83,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":80,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":50,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":12,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":238,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":199,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":169,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":131,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":118,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":84,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":69,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":35,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":9,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":231,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":206,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":172,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":146,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":127,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":97,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":70,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":36,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":10,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":232,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":205,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":171,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":145,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":98,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":67,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":37,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":7,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":233,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":204,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":174,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":144,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":95,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":68,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":38,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":8,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":234,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":203,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":173,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":143,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":96,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":73,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":39,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":5,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":227,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":210,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":176,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":142,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":123,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":93,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":74,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":40,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":6,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":228,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":209,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":175,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":141,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":124,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":94,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":71,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":41,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":3,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":229,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":208,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":178,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":140,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":125,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":91,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":72,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":42,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":4,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":230,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":207,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":177,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":139,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":126,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":92,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}}],"opendaylight-group-statistics:group-features":{"max-groups":[4294967040],"group-types-supported":["opendaylight-group-types:group-all","opendaylight-group-types:group-ff","opendaylight-group-types:group-select","opendaylight-group-types:group-indirect"],"group-capabilities-supported":["opendaylight-group-types:chaining","opendaylight-group-types:select-weight","opendaylight-group-types:select-liveness"],"actions":[67076097]},"flow-node-inventory:switch-features":{"max_tables":254,"capabilities":["flow-node-inventory:flow-feature-capability-table-stats","flow-node-inventory:flow-feature-capability-group-stats","flow-node-inventory:flow-feature-capability-queue-stats","flow-node-inventory:flow-feature-capability-flow-stats","flow-node-inventory:flow-feature-capability-port-stats"],"max_buffers":0},"flow-node-inventory:snapshot-gathering-status-start":{"begin":"2026-04-08T01:07:22.881Z"},"node-connector":[{"id":"openflow:3:LOCAL","flow-node-inventory:port-number":4294967294,"flow-node-inventory:hardware-address":"c2:87:c1:60:0d:43","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s3","flow-node-inventory:current-feature":"","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":0,"flow-node-inventory:state":{"live":false,"blocked":false,"link-down":true},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"PORT-DOWN","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"0","received":"0"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":538,"nanosecond":243000000},"bytes":{"transmitted":"0","received":"0"},"receive-crc-error":"0"}},{"id":"openflow:3:2","flow-node-inventory:port-number":2,"flow-node-inventory:hardware-address":"9e:72:98:8c:46:72","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s3-eth2","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"91","received":"96"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":538,"nanosecond":246000000},"bytes":{"transmitted":"7657","received":"8079"},"receive-crc-error":"0"}},{"id":"openflow:3:1","flow-node-inventory:port-number":1,"flow-node-inventory:hardware-address":"ca:ac:9a:41:42:1c","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s3-eth1","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"99","received":"13"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":538,"nanosecond":246000000},"bytes":{"transmitted":"8325","received":"1006"},"receive-crc-error":"0"}}],"flow-node-inventory:group":[{"group-id":56,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":56000}}],"watch_group":56000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":56,"duration":{"second":44,"nanosecond":770000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":22,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":22000}}],"watch_group":22000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":22,"duration":{"second":44,"nanosecond":770000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":99,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":99000}}],"watch_group":99000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":99,"duration":{"second":44,"nanosecond":770000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":34000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":34000,"duration":{"second":47,"nanosecond":673000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":89000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":89000,"duration":{"second":47,"nanosecond":673000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":60000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":60000,"duration":{"second":47,"nanosecond":673000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":91000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":91000,"duration":{"second":47,"nanosecond":673000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":57,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":57000}}],"watch_group":57000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":57,"duration":{"second":44,"nanosecond":769000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":23,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":23000}}],"watch_group":23000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":23,"duration":{"second":44,"nanosecond":254000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":14000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":14000,"duration":{"second":47,"nanosecond":673000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":98,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":98000}}],"watch_group":98000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":98,"duration":{"second":44,"nanosecond":254000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":56000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":56000,"duration":{"second":47,"nanosecond":673000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":85000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":85000,"duration":{"second":47,"nanosecond":673000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":54,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":54000}}],"watch_group":54000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":54,"duration":{"second":44,"nanosecond":254000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":24,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":24000}}],"watch_group":24000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":24,"duration":{"second":44,"nanosecond":254000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":36000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":36000,"duration":{"second":47,"nanosecond":673000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":87000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":87000,"duration":{"second":47,"nanosecond":673000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":59000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":59000,"duration":{"second":47,"nanosecond":673000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":25000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":25000,"duration":{"second":47,"nanosecond":673000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":43000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":43000,"duration":{"second":47,"nanosecond":673000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":55,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":55000}}],"watch_group":55000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":55,"duration":{"second":44,"nanosecond":254000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":25,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":25000}}],"watch_group":25000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":25,"duration":{"second":47,"nanosecond":278000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":100,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":100000}}],"watch_group":100000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":100,"duration":{"second":44,"nanosecond":254000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":58000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":58000,"duration":{"second":47,"nanosecond":278000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":86000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":86000,"duration":{"second":47,"nanosecond":278000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":60,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":60000}}],"watch_group":60000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":60,"duration":{"second":47,"nanosecond":277000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":26,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":26000}}],"watch_group":26000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":26,"duration":{"second":44,"nanosecond":254000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":41000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":41000,"duration":{"second":47,"nanosecond":277000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":95,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":95000}}],"watch_group":95000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":95,"duration":{"second":44,"nanosecond":254000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":82000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":82000,"duration":{"second":47,"nanosecond":277000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":61,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":61000}}],"watch_group":61000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":61,"duration":{"second":44,"nanosecond":254000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":27,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":27000}}],"watch_group":27000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":27,"duration":{"second":44,"nanosecond":254000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":94,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":94000}}],"watch_group":94000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":94,"duration":{"second":44,"nanosecond":254000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":98000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":98000,"duration":{"second":47,"nanosecond":277000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":27000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":27000,"duration":{"second":47,"nanosecond":277000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":57000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":57000,"duration":{"second":47,"nanosecond":277000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":16000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":16000,"duration":{"second":47,"nanosecond":276000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":83000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":83000,"duration":{"second":47,"nanosecond":276000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":58,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":58000}}],"watch_group":58000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":58,"duration":{"second":46,"nanosecond":775000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":28,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":28000}}],"watch_group":28000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":28,"duration":{"second":44,"nanosecond":254000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":97,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":97000}}],"watch_group":97000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":97,"duration":{"second":44,"nanosecond":254000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":100000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":100000,"duration":{"second":46,"nanosecond":775000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":59,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":59000}}],"watch_group":59000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":59,"duration":{"second":46,"nanosecond":775000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":38000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":38000,"duration":{"second":46,"nanosecond":775000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":29,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":29000}}],"watch_group":29000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":29,"duration":{"second":44,"nanosecond":254000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":96,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":96000}}],"watch_group":96000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":96,"duration":{"second":44,"nanosecond":254000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":84000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":84000,"duration":{"second":46,"nanosecond":775000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":64,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":64000}}],"watch_group":64000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":64,"duration":{"second":44,"nanosecond":254000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":30,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":30000}}],"watch_group":30000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":30,"duration":{"second":44,"nanosecond":254000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":4,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":4000}}],"watch_group":4000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":4,"duration":{"second":44,"nanosecond":254000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":91,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":91000}}],"watch_group":91000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":91,"duration":{"second":46,"nanosecond":775000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":7000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":7000,"duration":{"second":46,"nanosecond":775000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":29000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":29000,"duration":{"second":46,"nanosecond":775000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":65,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":65000}}],"watch_group":65000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":65,"duration":{"second":44,"nanosecond":254000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":31,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":31000}}],"watch_group":31000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":31,"duration":{"second":44,"nanosecond":254000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":5,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":5000}}],"watch_group":5000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":5,"duration":{"second":44,"nanosecond":254000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":90,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":90000}}],"watch_group":90000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":90,"duration":{"second":44,"nanosecond":254000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":18000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":18000,"duration":{"second":46,"nanosecond":774000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":62,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":62000}}],"watch_group":62000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":62,"duration":{"second":44,"nanosecond":254000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":65000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":65000,"duration":{"second":46,"nanosecond":773000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":32,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":32000}}],"watch_group":32000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":32,"duration":{"second":44,"nanosecond":254000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":2,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":2000}}],"watch_group":2000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":2,"duration":{"second":44,"nanosecond":254000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":93,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":93000}}],"watch_group":93000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":93,"duration":{"second":44,"nanosecond":254000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":64000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":64000,"duration":{"second":46,"nanosecond":773000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":63,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":63000}}],"watch_group":63000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":63,"duration":{"second":44,"nanosecond":254000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":33,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":33000}}],"watch_group":33000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":33,"duration":{"second":44,"nanosecond":254000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":3,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":3000}}],"watch_group":3000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":3,"duration":{"second":44,"nanosecond":254000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":80000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":80000,"duration":{"second":46,"nanosecond":773000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":9000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":9000,"duration":{"second":46,"nanosecond":773000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":92,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":92000}}],"watch_group":92000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":92,"duration":{"second":44,"nanosecond":254000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":5000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":5000,"duration":{"second":46,"nanosecond":773000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":20000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":20000,"duration":{"second":46,"nanosecond":773000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":81000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":81000,"duration":{"second":46,"nanosecond":768000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":97000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":97000,"duration":{"second":46,"nanosecond":768000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":31000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":31000,"duration":{"second":46,"nanosecond":768000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":68,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":68000}}],"watch_group":68000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":68,"duration":{"second":44,"nanosecond":254000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":11000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":11000,"duration":{"second":46,"nanosecond":768000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":34,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":34000}}],"watch_group":34000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":34,"duration":{"second":46,"nanosecond":768000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":78000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":78000,"duration":{"second":46,"nanosecond":768000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":87,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":87000}}],"watch_group":87000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":87,"duration":{"second":46,"nanosecond":767000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":93000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":93000,"duration":{"second":46,"nanosecond":767000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":63000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":63000,"duration":{"second":46,"nanosecond":767000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":69,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":69000}}],"watch_group":69000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":69,"duration":{"second":44,"nanosecond":254000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":35,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":35000}}],"watch_group":35000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":35,"duration":{"second":44,"nanosecond":254000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":1,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":1000}}],"watch_group":1000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":1,"duration":{"second":44,"nanosecond":254000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":33000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":33000,"duration":{"second":46,"nanosecond":761000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":79000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":79000,"duration":{"second":46,"nanosecond":761000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":86,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":86000}}],"watch_group":86000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":86,"duration":{"second":46,"nanosecond":761000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":62000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":62000,"duration":{"second":46,"nanosecond":761000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":66,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":66000}}],"watch_group":66000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":66,"duration":{"second":44,"nanosecond":254000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":77000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":77000,"duration":{"second":46,"nanosecond":761000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":36,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":36000}}],"watch_group":36000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":36,"duration":{"second":46,"nanosecond":761000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":89,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":89000}}],"watch_group":89000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":89,"duration":{"second":46,"nanosecond":761000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":22000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":22000,"duration":{"second":46,"nanosecond":761000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":95000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":95000,"duration":{"second":46,"nanosecond":761000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":67,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":67000}}],"watch_group":67000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":67,"duration":{"second":44,"nanosecond":254000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":37,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":37000}}],"watch_group":37000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":37,"duration":{"second":44,"nanosecond":254000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":1000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":1000,"duration":{"second":46,"nanosecond":761000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":88,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":88000}}],"watch_group":88000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":88,"duration":{"second":44,"nanosecond":254000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":61000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":61000,"duration":{"second":46,"nanosecond":761000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":3000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":3000,"duration":{"second":46,"nanosecond":761000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":73,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":73000}}],"watch_group":73000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":73,"duration":{"second":44,"nanosecond":254000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":39,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":39000}}],"watch_group":39000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":39,"duration":{"second":44,"nanosecond":254000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":13,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":13000}}],"watch_group":13000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":13,"duration":{"second":44,"nanosecond":254000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":74000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":74000,"duration":{"second":46,"nanosecond":761000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":15000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":15000,"duration":{"second":46,"nanosecond":761000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":44000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":44000,"duration":{"second":46,"nanosecond":761000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":45000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":45000,"duration":{"second":46,"nanosecond":761000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":68000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":68000,"duration":{"second":46,"nanosecond":761000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":72,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":72000}}],"watch_group":72000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":72,"duration":{"second":44,"nanosecond":254000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":38,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":38000}}],"watch_group":38000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":38,"duration":{"second":46,"nanosecond":268000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":75000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":75000,"duration":{"second":46,"nanosecond":268000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":12,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":12000}}],"watch_group":12000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":12,"duration":{"second":44,"nanosecond":254000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":35000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":35000,"duration":{"second":46,"nanosecond":268000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":24000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":24000,"duration":{"second":46,"nanosecond":268000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":90000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":90000,"duration":{"second":46,"nanosecond":268000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":71,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":71000}}],"watch_group":71000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":71,"duration":{"second":44,"nanosecond":254000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":41,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":41000}}],"watch_group":41000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":41,"duration":{"second":46,"nanosecond":268000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":42000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":42000,"duration":{"second":46,"nanosecond":268000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":11,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":11000}}],"watch_group":11000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":11,"duration":{"second":46,"nanosecond":268000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":92000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":92000,"duration":{"second":46,"nanosecond":268000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":46000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":46000,"duration":{"second":46,"nanosecond":268000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":67000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":67000,"duration":{"second":46,"nanosecond":268000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":70,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":70000}}],"watch_group":70000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":70,"duration":{"second":44,"nanosecond":254000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":76000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":76000,"duration":{"second":46,"nanosecond":268000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":40,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":40000}}],"watch_group":40000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":40,"duration":{"second":44,"nanosecond":254000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":13000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":13000,"duration":{"second":46,"nanosecond":268000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":10,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":10000}}],"watch_group":10000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":10,"duration":{"second":44,"nanosecond":254000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":88000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":88000,"duration":{"second":46,"nanosecond":268000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":47000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":47000,"duration":{"second":46,"nanosecond":268000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":66000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":66000,"duration":{"second":46,"nanosecond":268000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":77,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":77000}}],"watch_group":77000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":77,"duration":{"second":46,"nanosecond":268000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":43,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":43000}}],"watch_group":43000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":43,"duration":{"second":46,"nanosecond":268000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":9,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":9000}}],"watch_group":9000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":9,"duration":{"second":46,"nanosecond":268000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":99000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":99000,"duration":{"second":46,"nanosecond":268000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":26000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":26000,"duration":{"second":46,"nanosecond":268000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":70000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":70000,"duration":{"second":46,"nanosecond":268000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":76,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":76000}}],"watch_group":76000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":76,"duration":{"second":45,"nanosecond":769000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":42,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":42000}}],"watch_group":42000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":42,"duration":{"second":45,"nanosecond":769000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":8,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":8000}}],"watch_group":8000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":8,"duration":{"second":44,"nanosecond":254000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":37000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":37000,"duration":{"second":45,"nanosecond":769000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":49000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":49000,"duration":{"second":45,"nanosecond":769000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":71000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":71000,"duration":{"second":45,"nanosecond":769000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":48000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":48000,"duration":{"second":45,"nanosecond":769000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":75,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":75000}}],"watch_group":75000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":75,"duration":{"second":45,"nanosecond":769000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":45,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":45000}}],"watch_group":45000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":45,"duration":{"second":45,"nanosecond":769000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":7,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":7000}}],"watch_group":7000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":7,"duration":{"second":45,"nanosecond":769000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":39000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":39000,"duration":{"second":45,"nanosecond":769000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":73000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":73000,"duration":{"second":45,"nanosecond":769000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":69000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":69000,"duration":{"second":45,"nanosecond":769000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":17000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":17000,"duration":{"second":45,"nanosecond":769000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":28000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":28000,"duration":{"second":45,"nanosecond":769000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":74,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":74000}}],"watch_group":74000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":74,"duration":{"second":45,"nanosecond":769000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":44,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":44000}}],"watch_group":44000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":44,"duration":{"second":45,"nanosecond":769000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":6,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":6000}}],"watch_group":6000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":6,"duration":{"second":44,"nanosecond":254000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":40000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":40000,"duration":{"second":45,"nanosecond":769000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":81,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":81000}}],"watch_group":81000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":81,"duration":{"second":45,"nanosecond":769000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":47,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":47000}}],"watch_group":47000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":47,"duration":{"second":45,"nanosecond":769000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":21,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":21000}}],"watch_group":21000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":21,"duration":{"second":44,"nanosecond":254000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":8000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":8000,"duration":{"second":45,"nanosecond":769000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":19000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":19000,"duration":{"second":45,"nanosecond":769000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":96000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":96000,"duration":{"second":45,"nanosecond":769000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":80,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":80000}}],"watch_group":80000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":80,"duration":{"second":45,"nanosecond":769000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":46,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":46000}}],"watch_group":46000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":46,"duration":{"second":45,"nanosecond":769000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":20,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":20000}}],"watch_group":20000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":20,"duration":{"second":45,"nanosecond":769000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":52000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":52000,"duration":{"second":45,"nanosecond":769000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":6000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":6000,"duration":{"second":45,"nanosecond":769000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":79,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":79000}}],"watch_group":79000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":79,"duration":{"second":45,"nanosecond":769000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":49,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":49000}}],"watch_group":49000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":49,"duration":{"second":45,"nanosecond":271000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":19,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":19000}}],"watch_group":19000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":19,"duration":{"second":45,"nanosecond":271000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":50000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":50000,"duration":{"second":45,"nanosecond":271000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":72000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":72000,"duration":{"second":45,"nanosecond":271000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":30000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":30000,"duration":{"second":45,"nanosecond":271000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":78,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":78000}}],"watch_group":78000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":78,"duration":{"second":45,"nanosecond":271000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":48,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":48000}}],"watch_group":48000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":48,"duration":{"second":45,"nanosecond":271000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":18,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":18000}}],"watch_group":18000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":18,"duration":{"second":45,"nanosecond":271000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":51000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":51000,"duration":{"second":45,"nanosecond":271000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":85,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":85000}}],"watch_group":85000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":85,"duration":{"second":45,"nanosecond":271000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":55000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":55000,"duration":{"second":45,"nanosecond":271000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":51,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":51000}}],"watch_group":51000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":51,"duration":{"second":44,"nanosecond":772000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":17,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":17000}}],"watch_group":17000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":17,"duration":{"second":44,"nanosecond":772000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":21000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":21000,"duration":{"second":44,"nanosecond":772000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":4000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":4000,"duration":{"second":44,"nanosecond":772000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":84,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":84000}}],"watch_group":84000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":84,"duration":{"second":44,"nanosecond":772000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":50,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":50000}}],"watch_group":50000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":50,"duration":{"second":44,"nanosecond":772000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":16,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":16000}}],"watch_group":16000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":16,"duration":{"second":44,"nanosecond":770000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":10000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":10000,"duration":{"second":44,"nanosecond":770000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":54000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":54000,"duration":{"second":44,"nanosecond":770000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":83,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":83000}}],"watch_group":83000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":83,"duration":{"second":44,"nanosecond":770000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":32000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":32000,"duration":{"second":44,"nanosecond":770000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":53,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":53000}}],"watch_group":53000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":53,"duration":{"second":44,"nanosecond":253000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":15,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":15000}}],"watch_group":15000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":15,"duration":{"second":44,"nanosecond":770000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":2000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":2000,"duration":{"second":44,"nanosecond":770000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":82,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":82000}}],"watch_group":82000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":82,"duration":{"second":44,"nanosecond":770000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":52,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":52000}}],"watch_group":52000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":52,"duration":{"second":44,"nanosecond":770000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":14,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":14000}}],"watch_group":14000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":14,"duration":{"second":44,"nanosecond":770000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":53000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":53000,"duration":{"second":44,"nanosecond":770000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":12000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":12000,"duration":{"second":44,"nanosecond":770000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":23000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":23000,"duration":{"second":44,"nanosecond":770000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":94000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":94000,"duration":{"second":44,"nanosecond":770000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}}],"flow-node-inventory:snapshot-gathering-status-end":{"succeeded":true,"end":"2026-04-08T01:07:22.951Z"}},{"id":"openflow:1","flow-node-inventory:manufacturer":"Nicira, Inc.","flow-node-inventory:description":"s1","flow-node-inventory:hardware":"Open vSwitch","flow-node-inventory:software":"2.17.11","flow-node-inventory:ip-address":"10.30.170.192","flow-node-inventory:serial-number":"None","flow-node-inventory:port-number":47940,"flow-node-inventory:table":[{"id":62,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":28,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":2,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":224,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":181,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":147,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":106,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":61,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":27,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":1,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":223,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":182,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":148,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":105,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":60,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":30,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":0,"flow":[{"id":"71","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.71/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":71}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":524000000}},"flags":""},{"id":"11","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.11/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":11}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":524000000}},"flags":""},{"id":"70","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.70/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":70}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":524000000}},"flags":""},{"id":"10","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.10/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":10}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":524000000}},"flags":""},{"id":"60","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.60/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":60}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":524000000}},"flags":""},{"id":"13","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.13/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":13}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":524000000}},"flags":""},{"id":"12","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.12/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":12}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":524000000}},"flags":""},{"id":"80","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.80/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":80}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":524000000}},"flags":""},{"id":"93","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.93/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":93}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":524000000}},"flags":""},{"id":"92","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.92/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":92}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":524000000}},"flags":""},{"id":"82","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.82/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":82}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":524000000}},"flags":""},{"id":"91","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.91/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":91}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":524000000}},"flags":""},{"id":"81","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.81/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":81}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":524000000}},"flags":""},{"id":"90","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.90/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":90}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":524000000}},"flags":""},{"id":"9","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.9/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":9}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":524000000}},"flags":""},{"id":"84","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.84/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":84}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":524000000}},"flags":""},{"id":"97","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.97/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":97}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":524000000}},"flags":""},{"id":"66","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.66/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":66}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":524000000}},"flags":""},{"id":"79","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.79/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":79}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":524000000}},"flags":""},{"id":"54","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.54/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":54}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":523000000}},"flags":""},{"id":"45","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.45/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":45}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":523000000}},"flags":""},{"id":"83","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.83/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":83}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":524000000}},"flags":""},{"id":"96","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.96/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":96}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":524000000}},"flags":""},{"id":"65","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.65/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":65}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":524000000}},"flags":""},{"id":"78","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.78/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":78}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":524000000}},"flags":""},{"id":"20","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.20/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":20}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":524000000}},"flags":""},{"id":"55","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.55/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":55}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":523000000}},"flags":""},{"id":"46","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.46/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":46}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":523000000}},"flags":""},{"id":"7","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.7/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":7}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":524000000}},"flags":""},{"id":"86","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.86/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":86}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":524000000}},"flags":""},{"id":"95","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.95/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":95}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":524000000}},"flags":""},{"id":"68","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.68/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":68}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":524000000}},"flags":""},{"id":"77","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.77/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":77}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":524000000}},"flags":""},{"id":"30","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.30/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":30}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":523000000}},"flags":""},{"id":"56","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.56/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":56}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":523000000}},"flags":""},{"id":"43","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.43/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":43}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":523000000}},"flags":""},{"id":"8","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.8/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":8}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":524000000}},"flags":""},{"id":"85","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.85/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":85}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":524000000}},"flags":""},{"id":"94","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.94/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":94}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":524000000}},"flags":""},{"id":"67","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.67/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":67}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":524000000}},"flags":""},{"id":"76","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.76/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":76}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":524000000}},"flags":""},{"id":"31","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.31/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":31}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":524000000}},"flags":""},{"id":"57","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.57/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":57}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":523000000}},"flags":""},{"id":"44","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.44/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":44}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":523000000}},"flags":""},{"id":"5","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.5/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":5}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":524000000}},"flags":""},{"id":"88","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.88/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":88}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":524000000}},"flags":""},{"id":"62","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.62/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":62}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":524000000}},"flags":""},{"id":"75","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.75/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":75}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":524000000}},"flags":""},{"id":"32","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.32/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":32}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":524000000}},"flags":""},{"id":"23","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.23/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":23}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":524000000}},"flags":""},{"id":"50","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.50/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":50}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":523000000}},"flags":""},{"id":"41","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.41/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":41}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":523000000}},"flags":""},{"id":"6","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.6/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":6}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":524000000}},"flags":""},{"id":"100","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.100/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":100}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":524000000}},"flags":""},{"id":"87","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.87/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":87}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":524000000}},"flags":""},{"id":"61","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.61/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":61}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":524000000}},"flags":""},{"id":"74","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.74/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":74}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":524000000}},"flags":""},{"id":"33","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.33/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":33}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":524000000}},"flags":""},{"id":"24","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.24/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":24}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":524000000}},"flags":""},{"id":"51","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.51/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":51}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":523000000}},"flags":""},{"id":"42","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.42/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":42}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":523000000}},"flags":""},{"id":"3","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.3/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":3}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":524000000}},"flags":""},{"id":"99","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.99/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":99}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":524000000}},"flags":""},{"id":"64","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.64/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":64}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":524000000}},"flags":""},{"id":"73","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.73/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":73}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":524000000}},"flags":""},{"id":"34","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.34/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":34}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":524000000}},"flags":""},{"id":"21","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.21/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":21}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":524000000}},"flags":""},{"id":"52","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.52/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":52}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":523000000}},"flags":""},{"id":"#UF$TABLE*0-3","table_id":0,"priority":0,"cookie_mask":"0","idle-timeout":0,"cookie":"10","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"output-action":{"max-length":65535,"output-node-connector":"CONTROLLER"}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"10","byte-count":"850","duration":{"second":43,"nanosecond":290000000}},"flags":"SEND_FLOW_REM"},{"id":"4","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.4/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":4}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":524000000}},"flags":""},{"id":"89","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.89/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":89}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":524000000}},"flags":""},{"id":"98","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.98/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":98}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":524000000}},"flags":""},{"id":"63","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.63/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":63}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":524000000}},"flags":""},{"id":"72","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.72/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":72}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":524000000}},"flags":""},{"id":"35","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.35/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":35}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":524000000}},"flags":""},{"id":"22","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.22/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":22}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":524000000}},"flags":""},{"id":"53","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.53/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":53}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":523000000}},"flags":""},{"id":"40","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.40/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":40}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":523000000}},"flags":""},{"id":"37","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.37/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":37}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":524000000}},"flags":""},{"id":"28","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.28/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":28}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":524000000}},"flags":""},{"id":"36","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.36/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":36}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":524000000}},"flags":""},{"id":"27","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.27/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":27}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":524000000}},"flags":""},{"id":"39","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.39/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":39}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":524000000}},"flags":""},{"id":"26","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.26/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":26}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":524000000}},"flags":""},{"id":"38","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.38/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":38}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":524000000}},"flags":""},{"id":"25","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.25/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":25}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":524000000}},"flags":""},{"id":"69","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.69/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":69}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":524000000}},"flags":""},{"id":"59","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.59/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":59}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":523000000}},"flags":""},{"id":"58","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.58/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":58}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":523000000}},"flags":""},{"id":"49","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.49/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":49}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":523000000}},"flags":""},{"id":"48","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.48/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":48}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":523000000}},"flags":""},{"id":"29","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.29/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":29}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":524000000}},"flags":""},{"id":"47","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.47/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":47}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":523000000}},"flags":""},{"id":"18","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.18/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":18}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":524000000}},"flags":""},{"id":"19","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.19/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":19}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":524000000}},"flags":""},{"id":"14","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.14/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":14}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":524000000}},"flags":""},{"id":"15","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.15/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":15}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":524000000}},"flags":""},{"id":"1","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.1/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":1}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":524000000}},"flags":""},{"id":"16","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.16/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":16}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":524000000}},"flags":""},{"id":"2","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.2/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":2}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":524000000}},"flags":""},{"id":"17","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.17/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":17}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":524000000}},"flags":""}],"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"106","active-flows":100,"packets-matched":"99"}},{"id":226,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":179,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":149,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":104,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":59,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":29,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":225,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":180,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":150,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":103,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":66,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":32,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":220,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":185,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":151,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":102,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":65,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":31,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":253,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":219,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":186,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":152,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":101,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":64,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":34,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":252,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":222,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":183,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":153,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":100,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":63,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":33,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":251,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":221,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":184,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":154,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":99,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":54,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":20,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":250,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":216,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":189,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":155,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":129,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":114,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":53,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":19,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":249,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":215,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":190,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":156,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":130,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":113,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":52,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":22,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":248,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":218,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":187,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":157,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":112,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":51,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":21,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":247,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":217,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":188,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":158,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":128,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":111,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":58,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":24,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":246,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":212,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":193,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":159,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":110,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":57,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":23,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":245,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":211,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":194,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":160,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":109,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":56,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":26,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":244,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":214,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":191,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":161,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":108,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":55,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":25,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":243,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":213,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":192,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":162,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":107,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":77,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":43,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":17,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":239,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":198,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":164,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":138,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":119,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":89,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":78,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":44,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":18,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":240,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":197,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":163,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":137,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":120,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":90,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":75,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":45,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":15,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":241,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":196,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":166,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":136,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":121,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":87,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":76,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":46,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":16,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":242,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":195,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":165,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":135,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":122,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":88,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":81,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":47,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":13,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":235,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":202,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":168,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":134,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":115,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":85,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":82,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":48,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":14,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":236,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":201,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":167,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":133,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":116,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":86,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":79,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":49,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":11,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":237,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":200,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":170,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":132,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":117,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":83,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":80,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":50,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":12,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":238,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":199,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":169,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":131,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":118,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":84,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":69,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":35,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":9,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":231,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":206,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":172,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":146,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":127,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":97,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":70,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":36,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":10,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":232,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":205,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":171,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":145,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":98,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":67,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":37,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":7,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":233,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":204,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":174,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":144,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":95,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":68,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":38,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":8,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":234,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":203,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":173,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":143,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":96,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":73,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":39,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":5,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":227,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":210,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":176,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":142,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":123,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":93,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":74,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":40,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":6,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":228,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":209,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":175,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":141,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":124,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":94,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":71,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":41,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":3,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":229,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":208,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":178,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":140,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":125,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":91,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":72,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":42,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":4,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":230,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":207,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":177,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":139,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":126,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":92,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}}],"opendaylight-group-statistics:group-features":{"max-groups":[4294967040],"group-types-supported":["opendaylight-group-types:group-all","opendaylight-group-types:group-ff","opendaylight-group-types:group-select","opendaylight-group-types:group-indirect"],"group-capabilities-supported":["opendaylight-group-types:chaining","opendaylight-group-types:select-weight","opendaylight-group-types:select-liveness"],"actions":[67076097]},"flow-node-inventory:switch-features":{"max_tables":254,"capabilities":["flow-node-inventory:flow-feature-capability-table-stats","flow-node-inventory:flow-feature-capability-group-stats","flow-node-inventory:flow-feature-capability-queue-stats","flow-node-inventory:flow-feature-capability-flow-stats","flow-node-inventory:flow-feature-capability-port-stats"],"max_buffers":0},"flow-node-inventory:snapshot-gathering-status-start":{"begin":"2026-04-08T01:07:22.894Z"},"node-connector":[{"id":"openflow:1:1","flow-node-inventory:port-number":1,"flow-node-inventory:hardware-address":"92:f4:e8:ea:c6:ad","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s1-eth1","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"98","received":"12"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":538,"nanosecond":261000000},"bytes":{"transmitted":"8255","received":"936"},"receive-crc-error":"0"}},{"id":"openflow:1:LOCAL","flow-node-inventory:port-number":4294967294,"flow-node-inventory:hardware-address":"e6:45:d0:5b:c7:49","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s1","flow-node-inventory:current-feature":"","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":0,"flow-node-inventory:state":{"live":false,"blocked":false,"link-down":true},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"PORT-DOWN","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"0","received":"0"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":538,"nanosecond":257000000},"bytes":{"transmitted":"0","received":"0"},"receive-crc-error":"0"}},{"id":"openflow:1:2","flow-node-inventory:port-number":2,"flow-node-inventory:hardware-address":"42:46:a8:4b:8b:86","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s1-eth2","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"91","received":"96"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":538,"nanosecond":261000000},"bytes":{"transmitted":"7657","received":"8079"},"receive-crc-error":"0"}}],"flow-node-inventory:group":[{"group-id":56,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":56000}}],"watch_group":56000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":56,"duration":{"second":44,"nanosecond":786000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":22,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":22000}}],"watch_group":22000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":22,"duration":{"second":44,"nanosecond":786000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":99,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":99000}}],"watch_group":99000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":99,"duration":{"second":44,"nanosecond":786000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":34000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":34000,"duration":{"second":47,"nanosecond":685000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":89000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":89000,"duration":{"second":47,"nanosecond":685000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":60000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":60000,"duration":{"second":47,"nanosecond":685000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":91000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":91000,"duration":{"second":47,"nanosecond":685000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":57,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":57000}}],"watch_group":57000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":57,"duration":{"second":44,"nanosecond":786000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":23,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":23000}}],"watch_group":23000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":23,"duration":{"second":44,"nanosecond":288000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":14000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":14000,"duration":{"second":47,"nanosecond":685000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":98,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":98000}}],"watch_group":98000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":98,"duration":{"second":44,"nanosecond":288000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":56000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":56000,"duration":{"second":47,"nanosecond":685000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":85000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":85000,"duration":{"second":47,"nanosecond":684000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":54,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":54000}}],"watch_group":54000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":54,"duration":{"second":44,"nanosecond":288000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":24,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":24000}}],"watch_group":24000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":24,"duration":{"second":44,"nanosecond":288000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":36000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":36000,"duration":{"second":47,"nanosecond":684000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":87000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":87000,"duration":{"second":47,"nanosecond":684000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":59000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":59000,"duration":{"second":47,"nanosecond":684000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":25000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":25000,"duration":{"second":47,"nanosecond":683000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":43000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":43000,"duration":{"second":47,"nanosecond":683000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":55,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":55000}}],"watch_group":55000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":55,"duration":{"second":44,"nanosecond":288000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":25,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":25000}}],"watch_group":25000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":25,"duration":{"second":47,"nanosecond":292000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":100,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":100000}}],"watch_group":100000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":100,"duration":{"second":44,"nanosecond":288000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":58000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":58000,"duration":{"second":47,"nanosecond":292000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":86000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":86000,"duration":{"second":47,"nanosecond":292000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":60,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":60000}}],"watch_group":60000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":60,"duration":{"second":47,"nanosecond":292000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":26,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":26000}}],"watch_group":26000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":26,"duration":{"second":44,"nanosecond":288000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":41000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":41000,"duration":{"second":47,"nanosecond":292000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":95,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":95000}}],"watch_group":95000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":95,"duration":{"second":44,"nanosecond":288000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":82000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":82000,"duration":{"second":47,"nanosecond":292000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":61,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":61000}}],"watch_group":61000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":61,"duration":{"second":44,"nanosecond":288000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":27,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":27000}}],"watch_group":27000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":27,"duration":{"second":44,"nanosecond":287000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":94,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":94000}}],"watch_group":94000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":94,"duration":{"second":44,"nanosecond":287000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":98000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":98000,"duration":{"second":47,"nanosecond":291000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":27000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":27000,"duration":{"second":47,"nanosecond":291000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":57000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":57000,"duration":{"second":47,"nanosecond":291000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":16000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":16000,"duration":{"second":47,"nanosecond":291000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":83000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":83000,"duration":{"second":47,"nanosecond":291000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":58,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":58000}}],"watch_group":58000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":58,"duration":{"second":46,"nanosecond":794000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":28,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":28000}}],"watch_group":28000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":28,"duration":{"second":44,"nanosecond":287000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":97,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":97000}}],"watch_group":97000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":97,"duration":{"second":44,"nanosecond":287000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":100000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":100000,"duration":{"second":46,"nanosecond":792000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":59,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":59000}}],"watch_group":59000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":59,"duration":{"second":46,"nanosecond":792000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":38000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":38000,"duration":{"second":46,"nanosecond":792000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":29,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":29000}}],"watch_group":29000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":29,"duration":{"second":44,"nanosecond":287000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":96,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":96000}}],"watch_group":96000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":96,"duration":{"second":44,"nanosecond":287000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":84000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":84000,"duration":{"second":46,"nanosecond":792000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":64,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":64000}}],"watch_group":64000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":64,"duration":{"second":44,"nanosecond":287000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":30,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":30000}}],"watch_group":30000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":30,"duration":{"second":44,"nanosecond":287000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":4,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":4000}}],"watch_group":4000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":4,"duration":{"second":44,"nanosecond":286000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":91,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":91000}}],"watch_group":91000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":91,"duration":{"second":46,"nanosecond":789000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":7000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":7000,"duration":{"second":46,"nanosecond":788000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":29000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":29000,"duration":{"second":46,"nanosecond":783000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":65,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":65000}}],"watch_group":65000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":65,"duration":{"second":44,"nanosecond":286000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":31,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":31000}}],"watch_group":31000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":31,"duration":{"second":44,"nanosecond":286000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":5,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":5000}}],"watch_group":5000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":5,"duration":{"second":44,"nanosecond":286000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":90,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":90000}}],"watch_group":90000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":90,"duration":{"second":44,"nanosecond":286000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":18000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":18000,"duration":{"second":46,"nanosecond":783000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":62,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":62000}}],"watch_group":62000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":62,"duration":{"second":44,"nanosecond":286000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":65000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":65000,"duration":{"second":46,"nanosecond":783000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":32,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":32000}}],"watch_group":32000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":32,"duration":{"second":44,"nanosecond":286000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":2,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":2000}}],"watch_group":2000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":2,"duration":{"second":44,"nanosecond":283000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":93,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":93000}}],"watch_group":93000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":93,"duration":{"second":44,"nanosecond":283000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":64000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":64000,"duration":{"second":46,"nanosecond":772000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":63,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":63000}}],"watch_group":63000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":63,"duration":{"second":44,"nanosecond":283000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":33,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":33000}}],"watch_group":33000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":33,"duration":{"second":44,"nanosecond":283000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":3,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":3000}}],"watch_group":3000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":3,"duration":{"second":44,"nanosecond":283000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":80000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":80000,"duration":{"second":46,"nanosecond":772000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":9000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":9000,"duration":{"second":46,"nanosecond":772000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":92,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":92000}}],"watch_group":92000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":92,"duration":{"second":44,"nanosecond":283000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":5000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":5000,"duration":{"second":46,"nanosecond":772000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":20000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":20000,"duration":{"second":46,"nanosecond":772000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":81000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":81000,"duration":{"second":46,"nanosecond":772000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":97000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":97000,"duration":{"second":46,"nanosecond":772000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":31000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":31000,"duration":{"second":46,"nanosecond":772000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":68,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":68000}}],"watch_group":68000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":68,"duration":{"second":44,"nanosecond":283000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":11000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":11000,"duration":{"second":46,"nanosecond":772000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":34,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":34000}}],"watch_group":34000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":34,"duration":{"second":46,"nanosecond":772000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":78000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":78000,"duration":{"second":46,"nanosecond":772000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":87,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":87000}}],"watch_group":87000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":87,"duration":{"second":46,"nanosecond":772000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":93000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":93000,"duration":{"second":46,"nanosecond":772000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":63000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":63000,"duration":{"second":46,"nanosecond":772000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":69,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":69000}}],"watch_group":69000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":69,"duration":{"second":44,"nanosecond":283000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":35,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":35000}}],"watch_group":35000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":35,"duration":{"second":44,"nanosecond":283000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":1,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":1000}}],"watch_group":1000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":1,"duration":{"second":44,"nanosecond":283000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":33000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":33000,"duration":{"second":46,"nanosecond":772000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":79000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":79000,"duration":{"second":46,"nanosecond":772000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":86,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":86000}}],"watch_group":86000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":86,"duration":{"second":46,"nanosecond":772000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":62000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":62000,"duration":{"second":46,"nanosecond":772000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":66,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":66000}}],"watch_group":66000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":66,"duration":{"second":44,"nanosecond":283000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":77000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":77000,"duration":{"second":46,"nanosecond":772000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":36,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":36000}}],"watch_group":36000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":36,"duration":{"second":46,"nanosecond":772000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":89,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":89000}}],"watch_group":89000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":89,"duration":{"second":46,"nanosecond":772000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":22000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":22000,"duration":{"second":46,"nanosecond":772000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":95000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":95000,"duration":{"second":46,"nanosecond":772000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":67,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":67000}}],"watch_group":67000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":67,"duration":{"second":44,"nanosecond":283000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":37,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":37000}}],"watch_group":37000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":37,"duration":{"second":44,"nanosecond":283000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":1000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":1000,"duration":{"second":46,"nanosecond":768000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":88,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":88000}}],"watch_group":88000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":88,"duration":{"second":44,"nanosecond":256000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":61000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":61000,"duration":{"second":46,"nanosecond":768000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":3000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":3000,"duration":{"second":46,"nanosecond":767000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":73,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":73000}}],"watch_group":73000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":73,"duration":{"second":44,"nanosecond":256000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":39,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":39000}}],"watch_group":39000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":39,"duration":{"second":44,"nanosecond":256000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":13,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":13000}}],"watch_group":13000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":13,"duration":{"second":44,"nanosecond":256000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":74000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":74000,"duration":{"second":46,"nanosecond":767000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":15000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":15000,"duration":{"second":46,"nanosecond":767000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":44000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":44000,"duration":{"second":46,"nanosecond":767000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":45000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":45000,"duration":{"second":46,"nanosecond":767000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":68000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":68000,"duration":{"second":46,"nanosecond":767000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":72,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":72000}}],"watch_group":72000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":72,"duration":{"second":44,"nanosecond":256000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":38,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":38000}}],"watch_group":38000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":38,"duration":{"second":46,"nanosecond":292000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":75000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":75000,"duration":{"second":46,"nanosecond":292000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":12,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":12000}}],"watch_group":12000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":12,"duration":{"second":44,"nanosecond":256000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":35000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":35000,"duration":{"second":46,"nanosecond":292000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":24000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":24000,"duration":{"second":46,"nanosecond":290000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":90000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":90000,"duration":{"second":46,"nanosecond":290000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":71,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":71000}}],"watch_group":71000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":71,"duration":{"second":44,"nanosecond":256000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":41,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":41000}}],"watch_group":41000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":41,"duration":{"second":46,"nanosecond":290000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":42000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":42000,"duration":{"second":46,"nanosecond":290000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":11,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":11000}}],"watch_group":11000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":11,"duration":{"second":46,"nanosecond":288000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":92000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":92000,"duration":{"second":46,"nanosecond":288000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":46000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":46000,"duration":{"second":46,"nanosecond":288000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":67000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":67000,"duration":{"second":46,"nanosecond":288000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":70,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":70000}}],"watch_group":70000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":70,"duration":{"second":44,"nanosecond":256000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":76000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":76000,"duration":{"second":46,"nanosecond":287000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":40,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":40000}}],"watch_group":40000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":40,"duration":{"second":44,"nanosecond":256000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":13000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":13000,"duration":{"second":46,"nanosecond":283000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":10,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":10000}}],"watch_group":10000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":10,"duration":{"second":44,"nanosecond":256000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":88000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":88000,"duration":{"second":46,"nanosecond":283000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":47000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":47000,"duration":{"second":46,"nanosecond":282000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":66000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":66000,"duration":{"second":46,"nanosecond":282000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":77,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":77000}}],"watch_group":77000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":77,"duration":{"second":46,"nanosecond":281000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":43,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":43000}}],"watch_group":43000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":43,"duration":{"second":46,"nanosecond":281000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":9,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":9000}}],"watch_group":9000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":9,"duration":{"second":46,"nanosecond":281000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":99000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":99000,"duration":{"second":46,"nanosecond":280000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":26000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":26000,"duration":{"second":46,"nanosecond":280000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":70000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":70000,"duration":{"second":46,"nanosecond":280000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":76,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":76000}}],"watch_group":76000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":76,"duration":{"second":45,"nanosecond":791000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":42,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":42000}}],"watch_group":42000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":42,"duration":{"second":45,"nanosecond":789000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":8,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":8000}}],"watch_group":8000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":8,"duration":{"second":44,"nanosecond":256000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":37000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":37000,"duration":{"second":45,"nanosecond":789000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":49000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":49000,"duration":{"second":45,"nanosecond":789000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":71000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":71000,"duration":{"second":45,"nanosecond":789000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":48000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":48000,"duration":{"second":45,"nanosecond":789000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":75,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":75000}}],"watch_group":75000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":75,"duration":{"second":45,"nanosecond":789000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":45,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":45000}}],"watch_group":45000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":45,"duration":{"second":45,"nanosecond":789000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":7,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":7000}}],"watch_group":7000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":7,"duration":{"second":45,"nanosecond":781000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":39000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":39000,"duration":{"second":45,"nanosecond":781000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":73000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":73000,"duration":{"second":45,"nanosecond":781000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":69000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":69000,"duration":{"second":45,"nanosecond":781000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":17000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":17000,"duration":{"second":45,"nanosecond":781000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":28000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":28000,"duration":{"second":45,"nanosecond":781000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":74,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":74000}}],"watch_group":74000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":74,"duration":{"second":45,"nanosecond":781000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":44,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":44000}}],"watch_group":44000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":44,"duration":{"second":45,"nanosecond":781000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":6,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":6000}}],"watch_group":6000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":6,"duration":{"second":44,"nanosecond":256000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":40000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":40000,"duration":{"second":45,"nanosecond":781000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":81,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":81000}}],"watch_group":81000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":81,"duration":{"second":45,"nanosecond":781000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":47,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":47000}}],"watch_group":47000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":47,"duration":{"second":45,"nanosecond":781000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":21,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":21000}}],"watch_group":21000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":21,"duration":{"second":44,"nanosecond":256000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":8000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":8000,"duration":{"second":45,"nanosecond":781000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":19000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":19000,"duration":{"second":45,"nanosecond":781000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":96000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":96000,"duration":{"second":45,"nanosecond":781000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":80,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":80000}}],"watch_group":80000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":80,"duration":{"second":45,"nanosecond":780000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":46,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":46000}}],"watch_group":46000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":46,"duration":{"second":45,"nanosecond":780000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":20,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":20000}}],"watch_group":20000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":20,"duration":{"second":45,"nanosecond":780000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":52000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":52000,"duration":{"second":45,"nanosecond":780000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":6000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":6000,"duration":{"second":45,"nanosecond":780000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":79,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":79000}}],"watch_group":79000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":79,"duration":{"second":45,"nanosecond":780000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":49,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":49000}}],"watch_group":49000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":49,"duration":{"second":45,"nanosecond":290000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":19,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":19000}}],"watch_group":19000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":19,"duration":{"second":45,"nanosecond":290000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":50000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":50000,"duration":{"second":45,"nanosecond":290000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":72000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":72000,"duration":{"second":45,"nanosecond":289000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":30000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":30000,"duration":{"second":45,"nanosecond":288000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":78,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":78000}}],"watch_group":78000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":78,"duration":{"second":45,"nanosecond":288000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":48,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":48000}}],"watch_group":48000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":48,"duration":{"second":45,"nanosecond":288000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":18,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":18000}}],"watch_group":18000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":18,"duration":{"second":45,"nanosecond":288000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":51000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":51000,"duration":{"second":45,"nanosecond":288000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":85,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":85000}}],"watch_group":85000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":85,"duration":{"second":45,"nanosecond":288000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":55000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":55000,"duration":{"second":45,"nanosecond":288000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":51,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":51000}}],"watch_group":51000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":51,"duration":{"second":44,"nanosecond":790000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":17,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":17000}}],"watch_group":17000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":17,"duration":{"second":44,"nanosecond":790000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":21000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":21000,"duration":{"second":44,"nanosecond":790000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":4000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":4000,"duration":{"second":44,"nanosecond":786000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":84,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":84000}}],"watch_group":84000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":84,"duration":{"second":44,"nanosecond":786000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":50,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":50000}}],"watch_group":50000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":50,"duration":{"second":44,"nanosecond":786000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":16,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":16000}}],"watch_group":16000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":16,"duration":{"second":44,"nanosecond":786000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":10000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":10000,"duration":{"second":44,"nanosecond":786000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":54000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":54000,"duration":{"second":44,"nanosecond":786000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":83,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":83000}}],"watch_group":83000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":83,"duration":{"second":44,"nanosecond":786000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":32000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":32000,"duration":{"second":44,"nanosecond":786000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":53,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":53000}}],"watch_group":53000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":53,"duration":{"second":44,"nanosecond":256000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":15,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":15000}}],"watch_group":15000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":15,"duration":{"second":44,"nanosecond":786000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":2000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":2000,"duration":{"second":44,"nanosecond":786000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":82,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":82000}}],"watch_group":82000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":82,"duration":{"second":44,"nanosecond":786000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":52,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":52000}}],"watch_group":52000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":52,"duration":{"second":44,"nanosecond":786000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":14,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":14000}}],"watch_group":14000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":14,"duration":{"second":44,"nanosecond":786000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":53000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":53000,"duration":{"second":44,"nanosecond":786000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":12000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":12000,"duration":{"second":44,"nanosecond":786000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":23000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":23000,"duration":{"second":44,"nanosecond":786000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":94000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":94000,"duration":{"second":44,"nanosecond":786000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}}],"flow-node-inventory:snapshot-gathering-status-end":{"succeeded":true,"end":"2026-04-08T01:07:22.961Z"}},{"id":"openflow:2","flow-node-inventory:manufacturer":"Nicira, Inc.","flow-node-inventory:description":"s2","flow-node-inventory:hardware":"Open vSwitch","flow-node-inventory:software":"2.17.11","flow-node-inventory:ip-address":"10.30.170.192","flow-node-inventory:serial-number":"None","flow-node-inventory:port-number":47956,"flow-node-inventory:table":[{"id":62,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":28,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":2,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":224,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":181,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":147,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":106,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":61,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":27,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":1,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":223,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":182,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":148,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":105,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":60,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":30,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":0,"flow":[{"id":"71","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.71/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":71}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":509000000}},"flags":""},{"id":"11","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.11/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":11}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":509000000}},"flags":""},{"id":"70","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.70/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":70}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":509000000}},"flags":""},{"id":"10","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.10/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":10}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":509000000}},"flags":""},{"id":"60","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.60/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":60}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":509000000}},"flags":""},{"id":"13","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.13/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":13}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":509000000}},"flags":""},{"id":"12","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.12/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":12}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":509000000}},"flags":""},{"id":"80","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.80/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":80}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":509000000}},"flags":""},{"id":"93","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.93/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":93}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":509000000}},"flags":""},{"id":"92","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.92/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":92}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":509000000}},"flags":""},{"id":"82","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.82/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":82}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":509000000}},"flags":""},{"id":"91","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.91/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":91}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":509000000}},"flags":""},{"id":"81","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.81/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":81}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":509000000}},"flags":""},{"id":"90","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.90/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":90}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":509000000}},"flags":""},{"id":"9","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.9/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":9}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":508000000}},"flags":""},{"id":"84","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.84/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":84}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":509000000}},"flags":""},{"id":"97","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.97/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":97}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":508000000}},"flags":""},{"id":"66","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.66/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":66}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":509000000}},"flags":""},{"id":"79","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.79/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":79}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":509000000}},"flags":""},{"id":"54","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.54/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":54}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":508000000}},"flags":""},{"id":"45","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.45/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":45}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":508000000}},"flags":""},{"id":"83","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.83/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":83}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":509000000}},"flags":""},{"id":"96","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.96/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":96}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":508000000}},"flags":""},{"id":"65","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.65/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":65}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":509000000}},"flags":""},{"id":"78","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.78/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":78}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":509000000}},"flags":""},{"id":"20","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.20/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":20}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":508000000}},"flags":""},{"id":"55","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.55/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":55}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":508000000}},"flags":""},{"id":"46","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.46/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":46}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":508000000}},"flags":""},{"id":"7","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.7/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":7}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":508000000}},"flags":""},{"id":"86","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.86/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":86}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":509000000}},"flags":""},{"id":"95","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.95/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":95}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":508000000}},"flags":""},{"id":"68","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.68/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":68}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":509000000}},"flags":""},{"id":"77","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.77/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":77}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":509000000}},"flags":""},{"id":"30","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.30/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":30}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":508000000}},"flags":""},{"id":"56","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.56/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":56}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":508000000}},"flags":""},{"id":"43","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.43/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":43}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":508000000}},"flags":""},{"id":"8","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.8/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":8}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":508000000}},"flags":""},{"id":"85","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.85/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":85}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":509000000}},"flags":""},{"id":"94","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.94/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":94}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":508000000}},"flags":""},{"id":"67","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.67/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":67}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":509000000}},"flags":""},{"id":"76","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.76/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":76}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":509000000}},"flags":""},{"id":"31","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.31/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":31}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":508000000}},"flags":""},{"id":"57","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.57/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":57}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":508000000}},"flags":""},{"id":"44","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.44/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":44}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":508000000}},"flags":""},{"id":"5","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.5/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":5}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":508000000}},"flags":""},{"id":"88","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.88/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":88}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":509000000}},"flags":""},{"id":"62","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.62/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":62}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":509000000}},"flags":""},{"id":"75","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.75/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":75}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":509000000}},"flags":""},{"id":"32","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.32/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":32}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":508000000}},"flags":""},{"id":"23","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.23/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":23}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":508000000}},"flags":""},{"id":"50","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.50/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":50}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":508000000}},"flags":""},{"id":"41","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.41/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":41}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":508000000}},"flags":""},{"id":"6","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.6/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":6}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":508000000}},"flags":""},{"id":"100","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.100/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":100}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":509000000}},"flags":""},{"id":"87","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.87/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":87}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":509000000}},"flags":""},{"id":"61","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.61/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":61}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":509000000}},"flags":""},{"id":"74","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.74/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":74}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":509000000}},"flags":""},{"id":"33","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.33/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":33}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":508000000}},"flags":""},{"id":"24","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.24/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":24}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":508000000}},"flags":""},{"id":"51","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.51/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":51}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":508000000}},"flags":""},{"id":"42","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.42/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":42}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":508000000}},"flags":""},{"id":"3","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.3/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":3}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":508000000}},"flags":""},{"id":"99","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.99/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":99}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":509000000}},"flags":""},{"id":"64","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.64/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":64}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":509000000}},"flags":""},{"id":"73","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.73/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":73}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":509000000}},"flags":""},{"id":"34","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.34/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":34}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":508000000}},"flags":""},{"id":"21","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.21/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":21}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":508000000}},"flags":""},{"id":"52","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.52/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":52}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":508000000}},"flags":""},{"id":"4","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.4/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":4}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":508000000}},"flags":""},{"id":"89","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.89/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":89}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":509000000}},"flags":""},{"id":"98","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.98/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":98}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":508000000}},"flags":""},{"id":"63","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.63/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":63}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":509000000}},"flags":""},{"id":"72","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.72/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":72}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":509000000}},"flags":""},{"id":"35","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.35/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":35}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":508000000}},"flags":""},{"id":"22","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.22/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":22}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":508000000}},"flags":""},{"id":"53","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.53/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":53}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":508000000}},"flags":""},{"id":"40","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.40/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":40}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":508000000}},"flags":""},{"id":"#UF$TABLE*0-2","table_id":0,"priority":0,"cookie_mask":"0","idle-timeout":0,"cookie":"10","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"output-action":{"max-length":65535,"output-node-connector":"CONTROLLER"}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"20","byte-count":"1700","duration":{"second":43,"nanosecond":304000000}},"flags":"SEND_FLOW_REM"},{"id":"37","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.37/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":37}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":508000000}},"flags":""},{"id":"28","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.28/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":28}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":508000000}},"flags":""},{"id":"36","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.36/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":36}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":508000000}},"flags":""},{"id":"27","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.27/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":27}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":508000000}},"flags":""},{"id":"39","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.39/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":39}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":508000000}},"flags":""},{"id":"26","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.26/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":26}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":508000000}},"flags":""},{"id":"38","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.38/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":38}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":508000000}},"flags":""},{"id":"25","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.25/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":25}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":508000000}},"flags":""},{"id":"69","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.69/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":69}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":509000000}},"flags":""},{"id":"59","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.59/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":59}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":508000000}},"flags":""},{"id":"58","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.58/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":58}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":508000000}},"flags":""},{"id":"49","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.49/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":49}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":508000000}},"flags":""},{"id":"48","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.48/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":48}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":508000000}},"flags":""},{"id":"29","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.29/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":29}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":508000000}},"flags":""},{"id":"47","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.47/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":47}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":508000000}},"flags":""},{"id":"18","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.18/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":18}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":509000000}},"flags":""},{"id":"19","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.19/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":19}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":509000000}},"flags":""},{"id":"14","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.14/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":14}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":509000000}},"flags":""},{"id":"15","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.15/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":15}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":509000000}},"flags":""},{"id":"1","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.1/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":1}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":509000000}},"flags":""},{"id":"16","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.16/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":16}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":509000000}},"flags":""},{"id":"2","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.2/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":2}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":509000000}},"flags":""},{"id":"17","table_id":0,"priority":100,"cookie_mask":"0","idle-timeout":0,"match":{"ethernet-match":{"ethernet-type":{"type":2048}},"ipv4-destination":"10.0.10.17/32"},"cookie":"0","instructions":{"instruction":[{"order":0,"apply-actions":{"action":[{"order":0,"group-action":{"group-id":17}}]}}]},"hard-timeout":0,"opendaylight-flow-statistics:flow-statistics":{"packet-count":"0","byte-count":"0","duration":{"second":43,"nanosecond":509000000}},"flags":""}],"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"192","active-flows":100,"packets-matched":"180"}},{"id":226,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":179,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":149,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":104,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":59,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":29,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":225,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":180,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":150,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":103,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":66,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":32,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":220,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":185,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":151,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":102,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":65,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":31,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":253,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":219,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":186,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":152,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":101,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":64,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":34,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":252,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":222,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":183,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":153,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":100,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":63,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":33,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":251,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":221,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":184,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":154,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":99,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":54,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":20,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":250,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":216,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":189,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":155,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":129,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":114,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":53,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":19,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":249,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":215,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":190,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":156,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":130,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":113,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":52,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":22,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":248,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":218,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":187,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":157,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":112,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":51,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":21,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":247,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":217,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":188,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":158,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":128,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":111,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":58,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":24,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":246,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":212,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":193,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":159,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":110,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":57,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":23,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":245,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":211,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":194,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":160,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":109,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":56,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":26,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":244,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":214,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":191,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":161,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":108,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":55,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":25,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":243,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":213,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":192,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":162,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":107,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":77,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":43,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":17,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":239,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":198,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":164,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":138,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":119,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":89,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":78,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":44,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":18,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":240,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":197,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":163,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":137,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":120,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":90,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":75,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":45,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":15,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":241,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":196,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":166,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":136,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":121,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":87,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":76,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":46,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":16,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":242,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":195,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":165,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":135,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":122,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":88,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":81,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":47,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":13,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":235,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":202,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":168,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":134,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":115,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":85,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":82,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":48,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":14,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":236,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":201,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":167,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":133,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":116,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":86,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":79,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":49,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":11,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":237,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":200,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":170,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":132,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":117,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":83,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":80,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":50,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":12,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":238,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":199,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":169,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":131,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":118,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":84,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":69,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":35,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":9,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":231,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":206,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":172,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":146,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":127,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":97,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":70,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":36,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":10,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":232,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":205,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":171,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":145,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":98,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":67,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":37,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":7,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":233,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":204,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":174,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":144,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":95,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":68,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":38,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":8,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":234,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":203,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":173,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":143,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":96,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":73,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":39,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":5,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":227,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":210,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":176,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":142,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":123,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":93,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":74,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":40,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":6,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":228,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":209,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":175,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":141,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":124,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":94,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":71,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":41,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":3,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":229,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":208,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":178,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":140,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":125,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":91,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":72,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":42,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":4,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":230,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":207,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":177,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":139,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":126,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}},{"id":92,"opendaylight-flow-table-statistics:flow-table-statistics":{"packets-looked-up":"0","active-flows":0,"packets-matched":"0"}}],"opendaylight-group-statistics:group-features":{"max-groups":[4294967040],"group-types-supported":["opendaylight-group-types:group-all","opendaylight-group-types:group-ff","opendaylight-group-types:group-select","opendaylight-group-types:group-indirect"],"group-capabilities-supported":["opendaylight-group-types:chaining","opendaylight-group-types:select-weight","opendaylight-group-types:select-liveness"],"actions":[67076097]},"flow-node-inventory:switch-features":{"max_tables":254,"capabilities":["flow-node-inventory:flow-feature-capability-table-stats","flow-node-inventory:flow-feature-capability-group-stats","flow-node-inventory:flow-feature-capability-queue-stats","flow-node-inventory:flow-feature-capability-flow-stats","flow-node-inventory:flow-feature-capability-port-stats"],"max_buffers":0},"flow-node-inventory:snapshot-gathering-status-start":{"begin":"2026-04-08T01:07:22.877Z"},"node-connector":[{"id":"openflow:2:3","flow-node-inventory:port-number":3,"flow-node-inventory:hardware-address":"da:7c:fc:7d:24:d4","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s2-eth3","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"96","received":"91"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":538,"nanosecond":246000000},"bytes":{"transmitted":"8079","received":"7657"},"receive-crc-error":"0"}},{"id":"openflow:2:LOCAL","flow-node-inventory:port-number":4294967294,"flow-node-inventory:hardware-address":"ee:be:cf:9b:06:44","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s2","flow-node-inventory:current-feature":"","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":0,"flow-node-inventory:state":{"live":false,"blocked":false,"link-down":true},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"PORT-DOWN","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"0","received":"0"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":538,"nanosecond":240000000},"bytes":{"transmitted":"0","received":"0"},"receive-crc-error":"0"}},{"id":"openflow:2:2","flow-node-inventory:port-number":2,"flow-node-inventory:hardware-address":"76:f5:91:ad:d8:c6","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s2-eth2","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"96","received":"91"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":538,"nanosecond":246000000},"bytes":{"transmitted":"8079","received":"7657"},"receive-crc-error":"0"}},{"id":"openflow:2:1","flow-node-inventory:port-number":1,"flow-node-inventory:hardware-address":"96:61:91:36:76:0b","flow-node-inventory:peer-features":"","flow-node-inventory:name":"s2-eth1","flow-node-inventory:current-feature":"ten-gb-fd copper","flow-node-inventory:supported":"","flow-node-inventory:advertised-features":"","flow-node-inventory:current-speed":10000000,"flow-node-inventory:state":{"live":true,"blocked":false,"link-down":false},"flow-node-inventory:maximum-speed":0,"flow-node-inventory:configuration":"","opendaylight-port-statistics:flow-capable-node-connector-statistics":{"receive-drops":"0","transmit-drops":"0","receive-frame-error":"0","collision-count":"0","packets":{"transmitted":"97","received":"13"},"receive-over-run-error":"0","receive-errors":"0","transmit-errors":"0","duration":{"second":538,"nanosecond":246000000},"bytes":{"transmitted":"8185","received":"1006"},"receive-crc-error":"0"}}],"flow-node-inventory:group":[{"group-id":56,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":56000}}],"watch_group":56000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":56,"duration":{"second":44,"nanosecond":757000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":22,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":22000}}],"watch_group":22000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":22,"duration":{"second":44,"nanosecond":757000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":99,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":99000}}],"watch_group":99000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":99,"duration":{"second":44,"nanosecond":757000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":34000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":34000,"duration":{"second":47,"nanosecond":670000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":89000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":89000,"duration":{"second":47,"nanosecond":670000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":60000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":60000,"duration":{"second":47,"nanosecond":670000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":91000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":91000,"duration":{"second":47,"nanosecond":670000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":57,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":57000}}],"watch_group":57000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":57,"duration":{"second":44,"nanosecond":757000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":23,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":23000}}],"watch_group":23000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":23,"duration":{"second":44,"nanosecond":259000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":14000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":14000,"duration":{"second":47,"nanosecond":670000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":98,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":98000}}],"watch_group":98000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":98,"duration":{"second":44,"nanosecond":259000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":56000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":56000,"duration":{"second":47,"nanosecond":670000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":85000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":85000,"duration":{"second":47,"nanosecond":670000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":54,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":54000}}],"watch_group":54000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":54,"duration":{"second":44,"nanosecond":259000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":24,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":24000}}],"watch_group":24000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":24,"duration":{"second":44,"nanosecond":259000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":36000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":36000,"duration":{"second":47,"nanosecond":670000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":87000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":87000,"duration":{"second":47,"nanosecond":670000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":59000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":59000,"duration":{"second":47,"nanosecond":670000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":25000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":25000,"duration":{"second":47,"nanosecond":670000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":43000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":43000,"duration":{"second":47,"nanosecond":670000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":55,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":55000}}],"watch_group":55000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":55,"duration":{"second":44,"nanosecond":259000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":25,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":25000}}],"watch_group":25000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":25,"duration":{"second":47,"nanosecond":268000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":100,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":100000}}],"watch_group":100000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":100,"duration":{"second":44,"nanosecond":258000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":58000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":58000,"duration":{"second":47,"nanosecond":268000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":86000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":86000,"duration":{"second":47,"nanosecond":268000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":60,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":60000}}],"watch_group":60000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":60,"duration":{"second":47,"nanosecond":268000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":26,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":26000}}],"watch_group":26000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":26,"duration":{"second":44,"nanosecond":258000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":41000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":41000,"duration":{"second":47,"nanosecond":267000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":95,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":95000}}],"watch_group":95000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":95,"duration":{"second":44,"nanosecond":258000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":82000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":82000,"duration":{"second":47,"nanosecond":267000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":61,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":61000}}],"watch_group":61000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":61,"duration":{"second":44,"nanosecond":258000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":27,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":27000}}],"watch_group":27000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":27,"duration":{"second":44,"nanosecond":258000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":94,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":94000}}],"watch_group":94000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":94,"duration":{"second":44,"nanosecond":258000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":98000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":98000,"duration":{"second":47,"nanosecond":267000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":27000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":27000,"duration":{"second":47,"nanosecond":267000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":57000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":57000,"duration":{"second":47,"nanosecond":266000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":16000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":16000,"duration":{"second":47,"nanosecond":266000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":83000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":83000,"duration":{"second":47,"nanosecond":266000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":58,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":58000}}],"watch_group":58000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":58,"duration":{"second":46,"nanosecond":765000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":28,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":28000}}],"watch_group":28000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":28,"duration":{"second":44,"nanosecond":258000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":97,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":97000}}],"watch_group":97000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":97,"duration":{"second":44,"nanosecond":258000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":100000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":100000,"duration":{"second":46,"nanosecond":765000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":59,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":59000}}],"watch_group":59000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":59,"duration":{"second":46,"nanosecond":763000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":38000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":38000,"duration":{"second":46,"nanosecond":763000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":29,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":29000}}],"watch_group":29000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":29,"duration":{"second":44,"nanosecond":258000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":96,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":96000}}],"watch_group":96000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":96,"duration":{"second":44,"nanosecond":258000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":84000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":84000,"duration":{"second":46,"nanosecond":763000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":64,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":64000}}],"watch_group":64000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":64,"duration":{"second":44,"nanosecond":258000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":30,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":30000}}],"watch_group":30000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":30,"duration":{"second":44,"nanosecond":258000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":4,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":4000}}],"watch_group":4000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":4,"duration":{"second":44,"nanosecond":258000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":91,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":91000}}],"watch_group":91000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":91,"duration":{"second":46,"nanosecond":761000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":7000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":7000,"duration":{"second":46,"nanosecond":761000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":29000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":29000,"duration":{"second":46,"nanosecond":761000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":65,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":65000}}],"watch_group":65000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":65,"duration":{"second":44,"nanosecond":257000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":31,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":31000}}],"watch_group":31000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":31,"duration":{"second":44,"nanosecond":257000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":5,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":5000}}],"watch_group":5000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":5,"duration":{"second":44,"nanosecond":257000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":90,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":90000}}],"watch_group":90000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":90,"duration":{"second":44,"nanosecond":257000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":18000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":18000,"duration":{"second":46,"nanosecond":761000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":62,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":62000}}],"watch_group":62000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":62,"duration":{"second":44,"nanosecond":257000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":65000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":65000,"duration":{"second":46,"nanosecond":761000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":32,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":32000}}],"watch_group":32000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":32,"duration":{"second":44,"nanosecond":257000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":2,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":2000}}],"watch_group":2000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":2,"duration":{"second":44,"nanosecond":257000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":93,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":93000}}],"watch_group":93000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":93,"duration":{"second":44,"nanosecond":257000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":64000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":64000,"duration":{"second":46,"nanosecond":761000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":63,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":63000}}],"watch_group":63000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":63,"duration":{"second":44,"nanosecond":257000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":33,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":33000}}],"watch_group":33000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":33,"duration":{"second":44,"nanosecond":257000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":3,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":3000}}],"watch_group":3000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":3,"duration":{"second":44,"nanosecond":257000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":80000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":80000,"duration":{"second":46,"nanosecond":761000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":9000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":9000,"duration":{"second":46,"nanosecond":760000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":92,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":92000}}],"watch_group":92000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":92,"duration":{"second":44,"nanosecond":257000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":5000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":5000,"duration":{"second":46,"nanosecond":760000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":20000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":20000,"duration":{"second":46,"nanosecond":760000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":81000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":81000,"duration":{"second":46,"nanosecond":760000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":97000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":97000,"duration":{"second":46,"nanosecond":760000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":31000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":31000,"duration":{"second":46,"nanosecond":760000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":68,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":68000}}],"watch_group":68000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":68,"duration":{"second":44,"nanosecond":257000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":11000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":11000,"duration":{"second":46,"nanosecond":759000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":34,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":34000}}],"watch_group":34000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":34,"duration":{"second":46,"nanosecond":754000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":78000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":78000,"duration":{"second":46,"nanosecond":754000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":87,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":87000}}],"watch_group":87000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":87,"duration":{"second":46,"nanosecond":754000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":93000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":93000,"duration":{"second":46,"nanosecond":754000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":63000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":63000,"duration":{"second":46,"nanosecond":754000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":69,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":69000}}],"watch_group":69000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":69,"duration":{"second":44,"nanosecond":256000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":35,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":35000}}],"watch_group":35000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":35,"duration":{"second":44,"nanosecond":256000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":1,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":1000}}],"watch_group":1000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":1,"duration":{"second":44,"nanosecond":245000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":33000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":33000,"duration":{"second":46,"nanosecond":754000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":79000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":79000,"duration":{"second":46,"nanosecond":754000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":86,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":86000}}],"watch_group":86000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":86,"duration":{"second":46,"nanosecond":754000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":62000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":62000,"duration":{"second":46,"nanosecond":754000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":66,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":66000}}],"watch_group":66000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":66,"duration":{"second":44,"nanosecond":245000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":77000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":77000,"duration":{"second":46,"nanosecond":754000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":36,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":36000}}],"watch_group":36000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":36,"duration":{"second":46,"nanosecond":754000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":89,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":89000}}],"watch_group":89000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":89,"duration":{"second":46,"nanosecond":754000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":22000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":22000,"duration":{"second":46,"nanosecond":754000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":95000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":95000,"duration":{"second":46,"nanosecond":754000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":67,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":67000}}],"watch_group":67000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":67,"duration":{"second":44,"nanosecond":245000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":37,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":37000}}],"watch_group":37000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":37,"duration":{"second":44,"nanosecond":245000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":1000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":1000,"duration":{"second":46,"nanosecond":754000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":88,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":88000}}],"watch_group":88000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":88,"duration":{"second":44,"nanosecond":245000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":61000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":61000,"duration":{"second":46,"nanosecond":754000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":3000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":3000,"duration":{"second":46,"nanosecond":754000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":73,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":73000}}],"watch_group":73000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":73,"duration":{"second":44,"nanosecond":245000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":39,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":39000}}],"watch_group":39000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":39,"duration":{"second":44,"nanosecond":245000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":13,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":13000}}],"watch_group":13000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":13,"duration":{"second":44,"nanosecond":245000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":74000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":74000,"duration":{"second":46,"nanosecond":754000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":15000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":15000,"duration":{"second":46,"nanosecond":754000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":44000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":44000,"duration":{"second":46,"nanosecond":754000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":45000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":45000,"duration":{"second":46,"nanosecond":754000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":68000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":68000,"duration":{"second":46,"nanosecond":754000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":72,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":72000}}],"watch_group":72000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":72,"duration":{"second":44,"nanosecond":245000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":38,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":38000}}],"watch_group":38000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":38,"duration":{"second":46,"nanosecond":264000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":75000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":75000,"duration":{"second":46,"nanosecond":264000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":12,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":12000}}],"watch_group":12000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":12,"duration":{"second":44,"nanosecond":245000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":35000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":35000,"duration":{"second":46,"nanosecond":264000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":24000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":24000,"duration":{"second":46,"nanosecond":264000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":90000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":90000,"duration":{"second":46,"nanosecond":262000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":71,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":71000}}],"watch_group":71000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":71,"duration":{"second":44,"nanosecond":245000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":41,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":41000}}],"watch_group":41000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":41,"duration":{"second":46,"nanosecond":262000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":42000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":42000,"duration":{"second":46,"nanosecond":262000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":11,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":11000}}],"watch_group":11000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":11,"duration":{"second":46,"nanosecond":262000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":92000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":92000,"duration":{"second":46,"nanosecond":262000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":46000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":46000,"duration":{"second":46,"nanosecond":262000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":67000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":67000,"duration":{"second":46,"nanosecond":262000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":70,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":70000}}],"watch_group":70000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":70,"duration":{"second":44,"nanosecond":245000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":76000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":76000,"duration":{"second":46,"nanosecond":262000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":40,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":40000}}],"watch_group":40000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":40,"duration":{"second":44,"nanosecond":245000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":13000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":13000,"duration":{"second":46,"nanosecond":262000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":10,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":10000}}],"watch_group":10000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":10,"duration":{"second":44,"nanosecond":245000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":88000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":88000,"duration":{"second":46,"nanosecond":262000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":47000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":47000,"duration":{"second":46,"nanosecond":262000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":66000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":66000,"duration":{"second":46,"nanosecond":262000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":77,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":77000}}],"watch_group":77000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":77,"duration":{"second":46,"nanosecond":262000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":43,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":43000}}],"watch_group":43000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":43,"duration":{"second":46,"nanosecond":262000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":9,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":9000}}],"watch_group":9000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":9,"duration":{"second":46,"nanosecond":262000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":99000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":99000,"duration":{"second":46,"nanosecond":262000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":26000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":26000,"duration":{"second":46,"nanosecond":262000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":70000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":70000,"duration":{"second":46,"nanosecond":262000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":76,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":76000}}],"watch_group":76000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":76,"duration":{"second":45,"nanosecond":761000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":42,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":42000}}],"watch_group":42000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":42,"duration":{"second":45,"nanosecond":760000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":8,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":8000}}],"watch_group":8000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":8,"duration":{"second":44,"nanosecond":245000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":37000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":37000,"duration":{"second":45,"nanosecond":760000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":49000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":49000,"duration":{"second":45,"nanosecond":760000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":71000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":71000,"duration":{"second":45,"nanosecond":760000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":48000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":48000,"duration":{"second":45,"nanosecond":760000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":75,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":75000}}],"watch_group":75000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":75,"duration":{"second":45,"nanosecond":760000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":45,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":45000}}],"watch_group":45000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":45,"duration":{"second":45,"nanosecond":759000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":7,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":7000}}],"watch_group":7000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":7,"duration":{"second":45,"nanosecond":759000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":39000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":39000,"duration":{"second":45,"nanosecond":759000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":73000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":73000,"duration":{"second":45,"nanosecond":759000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":69000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":69000,"duration":{"second":45,"nanosecond":759000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":17000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":17000,"duration":{"second":45,"nanosecond":759000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":28000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":28000,"duration":{"second":45,"nanosecond":759000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":74,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":74000}}],"watch_group":74000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":74,"duration":{"second":45,"nanosecond":759000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":44,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":44000}}],"watch_group":44000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":44,"duration":{"second":45,"nanosecond":759000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":6,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":6000}}],"watch_group":6000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":6,"duration":{"second":44,"nanosecond":245000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":40000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":40000,"duration":{"second":45,"nanosecond":758000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":81,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":81000}}],"watch_group":81000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":81,"duration":{"second":45,"nanosecond":758000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":47,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":47000}}],"watch_group":47000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":47,"duration":{"second":45,"nanosecond":758000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":21,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":21000}}],"watch_group":21000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":21,"duration":{"second":44,"nanosecond":245000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":8000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":8000,"duration":{"second":45,"nanosecond":758000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":19000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":19000,"duration":{"second":45,"nanosecond":758000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":96000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":96000,"duration":{"second":45,"nanosecond":757000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":80,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":80000}}],"watch_group":80000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":80,"duration":{"second":45,"nanosecond":757000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":46,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":46000}}],"watch_group":46000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":46,"duration":{"second":45,"nanosecond":757000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":20,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":20000}}],"watch_group":20000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":20,"duration":{"second":45,"nanosecond":757000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":52000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":52000,"duration":{"second":45,"nanosecond":757000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":6000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":6000,"duration":{"second":45,"nanosecond":757000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":79,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":79000}}],"watch_group":79000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":79,"duration":{"second":45,"nanosecond":752000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":49,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":49000}}],"watch_group":49000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":49,"duration":{"second":45,"nanosecond":259000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":19,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":19000}}],"watch_group":19000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":19,"duration":{"second":45,"nanosecond":259000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":50000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":50000,"duration":{"second":45,"nanosecond":259000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":72000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":72000,"duration":{"second":45,"nanosecond":259000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":30000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":30000,"duration":{"second":45,"nanosecond":259000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":78,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":78000}}],"watch_group":78000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":78,"duration":{"second":45,"nanosecond":259000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":48,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":48000}}],"watch_group":48000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":48,"duration":{"second":45,"nanosecond":258000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":18,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":18000}}],"watch_group":18000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":18,"duration":{"second":45,"nanosecond":258000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":51000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":51000,"duration":{"second":45,"nanosecond":258000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":85,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":85000}}],"watch_group":85000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":85,"duration":{"second":45,"nanosecond":258000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":55000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":55000,"duration":{"second":45,"nanosecond":258000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":51,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":51000}}],"watch_group":51000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":51,"duration":{"second":44,"nanosecond":759000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":17,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":17000}}],"watch_group":17000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":17,"duration":{"second":44,"nanosecond":759000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":21000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":21000,"duration":{"second":44,"nanosecond":759000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":4000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":4000,"duration":{"second":44,"nanosecond":759000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":84,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":84000}}],"watch_group":84000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":84,"duration":{"second":44,"nanosecond":759000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":50,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":50000}}],"watch_group":50000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":50,"duration":{"second":44,"nanosecond":759000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":16,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":16000}}],"watch_group":16000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":16,"duration":{"second":44,"nanosecond":759000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":10000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":10000,"duration":{"second":44,"nanosecond":759000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":54000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":54000,"duration":{"second":44,"nanosecond":759000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":83,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":83000}}],"watch_group":83000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":83,"duration":{"second":44,"nanosecond":758000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":32000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":32000,"duration":{"second":44,"nanosecond":758000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":53,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":53000}}],"watch_group":53000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":53,"duration":{"second":44,"nanosecond":245000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":15,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":15000}}],"watch_group":15000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":15,"duration":{"second":44,"nanosecond":758000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":2000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":2000,"duration":{"second":44,"nanosecond":758000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":82,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":82000}}],"watch_group":82000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":82,"duration":{"second":44,"nanosecond":758000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":52,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":52000}}],"watch_group":52000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":52,"duration":{"second":44,"nanosecond":758000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":14,"group-type":"group-ff","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"group-action":{"group-id":14000}}],"watch_group":14000,"weight":0}]},"opendaylight-group-statistics:group-statistics":{"ref-count":1,"byte-count":"0","packet-count":"0","group-id":14,"duration":{"second":44,"nanosecond":758000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":53000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":53000,"duration":{"second":44,"nanosecond":758000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":12000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":12000,"duration":{"second":44,"nanosecond":757000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":23000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":23000,"duration":{"second":44,"nanosecond":757000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}},{"group-id":94000,"group-type":"group-select","buckets":{"bucket":[{"bucket-id":0,"watch_port":4294967295,"action":[{"order":0,"output-action":{"max-length":0,"output-node-connector":"1"}}],"watch_group":4294967295,"weight":1}]},"opendaylight-group-statistics:group-statistics":{"ref-count":0,"byte-count":"0","packet-count":"0","group-id":94000,"duration":{"second":44,"nanosecond":757000000},"buckets":{"bucket-counter":[{"bucket-id":0,"byte-count":"0","packet-count":"0"}]}}}],"flow-node-inventory:snapshot-gathering-status-end":{"succeeded":true,"end":"2026-04-08T01:07:22.953Z"}}]}}</msg>
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:07:25.886088" elapsed="0.011842"/>
</kw>
<kw name="Get Count" owner="BuiltIn">
<msg time="2026-04-08T01:07:25.902369" level="INFO">Item found from container 600 times.</msg>
<msg time="2026-04-08T01:07:25.902453" level="INFO">${group_count} = 600</msg>
<var>${group_count}</var>
<arg>${resp.text}</arg>
<arg>"group-type"</arg>
<doc>Returns and logs how many times ``item`` is found from ``container``.</doc>
<status status="PASS" start="2026-04-08T01:07:25.898205" elapsed="0.004272"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${group_count}</arg>
<arg>${groups}</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="PASS" start="2026-04-08T01:07:25.902665" elapsed="0.000313"/>
</kw>
<arg>${all_groups}</arg>
<doc>Check number of groups in the inventory.</doc>
<status status="PASS" start="2026-04-08T01:07:25.792982" elapsed="0.110059"/>
</kw>
<arg>10s</arg>
<arg>1s</arg>
<arg>ClusterOpenFlow.Check Number Of Groups On Member</arg>
<arg>${all_groups}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-08T01:07:25.792410" elapsed="0.110677"/>
</kw>
<doc>Check Groups in Operational DS.</doc>
<status status="PASS" start="2026-04-08T01:07:25.357325" elapsed="0.545898"/>
</test>
<test id="s1-s4-t70" name="Check Flows In Switch After Controller Restarts" line="465">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-08T01:07:25.906544" elapsed="0.000238"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-08T01:07:25.906278" elapsed="0.000576"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:07:25.907980" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:07:25.907862" elapsed="0.000166"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:25.907841" elapsed="0.000210"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:07:25.912939" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:07:25.912790" elapsed="0.000194"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:25.912770" elapsed="0.000237"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:07:25.914016" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:07:25.913633" elapsed="0.000410"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:07:25.914525" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:07:25.914221" elapsed="0.000329"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T01:07:25.914594" elapsed="0.000034"/>
</return>
<msg time="2026-04-08T01:07:25.914751" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T01:07:25.913253" elapsed="0.001522"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:07:25.920270" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:07:25.920147" elapsed="0.000168"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:25.920128" elapsed="0.000208"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:07:25.921513" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:07:25.921405" elapsed="0.000159"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:25.921387" elapsed="0.000199"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:07:25.922044" level="INFO">${karaf_connection_index} = 593</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:07:25.921737" elapsed="0.000334"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:07:25.922505" level="INFO">${current_connection_index} = 495</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:07:25.922248" elapsed="0.000283"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:07:25.960911" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:07:25.923028" elapsed="0.038018"/>
</kw>
<msg time="2026-04-08T01:07:25.961267" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T01:07:25.961315" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:07:25.922693" elapsed="0.038658"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T01:07:26.024631" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "[C "I "n "[C "S "w "i "t "c "h "[C "A "f "t "e "r "[C "C "o "n "t "r "o "l "l "e "r "[C "R "e "s "t "a "r "t "s "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T01:07:25.961956" elapsed="0.062815"/>
</kw>
<msg time="2026-04-08T01:07:26.024933" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T01:07:26.024980" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:07:25.961565" elapsed="0.063521"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:26.025456" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:07:26.025204" elapsed="0.000309"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:26.025177" elapsed="0.000362"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:07:26.026039" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "[C "I "n "[C "S "w "i "t "c "h "[C "A "f "t "e "r "[C "C "o "n "t "r "o "l "l "e "r "[C "R "e "s "t "a "r "t "s "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:07:26.025686" elapsed="0.000435"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:26.026432" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:07:26.026208" elapsed="0.000280"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:26.026188" elapsed="0.000323"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T01:07:26.026547" elapsed="0.000035"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:07:26.029209" elapsed="0.000196"/>
</kw>
<msg time="2026-04-08T01:07:26.029468" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:07:26.028074" elapsed="0.001527"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:26.029874" elapsed="0.000072"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:26.030225" elapsed="0.000074"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:07:26.027443" elapsed="0.003060"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T01:07:26.026857" elapsed="0.003726"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T01:07:25.921080" elapsed="0.109606"/>
</kw>
<msg time="2026-04-08T01:07:26.030784" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:07:26.030828" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:07:25.920490" elapsed="0.110376"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T01:07:26.031238" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-08T01:07:26.031112" elapsed="0.000186"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:26.031093" elapsed="0.000230"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:26.031733" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:26.032068" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T01:07:26.032139" elapsed="0.000030"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T01:07:25.919810" elapsed="0.112455"/>
</kw>
<msg time="2026-04-08T01:07:26.032359" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:07:26.032404" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:07:25.915145" elapsed="0.117295"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:26.032792" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:07:26.032518" elapsed="0.000329"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:26.032500" elapsed="0.000371"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T01:07:25.915001" elapsed="0.117892"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:07:26.038513" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:07:26.038405" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:26.038386" elapsed="0.000193"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:07:26.039769" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:07:26.039660" elapsed="0.000156"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:26.039641" elapsed="0.000197"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:07:26.040309" level="INFO">${karaf_connection_index} = 594</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:07:26.039985" elapsed="0.000351"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:07:26.040799" level="INFO">${current_connection_index} = 495</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:07:26.040499" elapsed="0.000328"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:07:26.084576" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:07:26.041349" elapsed="0.043363"/>
</kw>
<msg time="2026-04-08T01:07:26.084884" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T01:07:26.084931" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:07:26.040993" elapsed="0.043975"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T01:07:26.158952" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "[C "I "n "[C "S "w "i "t "c "h "[C "A "f "t "e "r "[C "C "o "n "t "r "o "l "l "e "r "[C "R "e "s "t "a "r "t "s "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T01:07:26.085565" elapsed="0.073530"/>
</kw>
<msg time="2026-04-08T01:07:26.159290" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T01:07:26.159338" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:07:26.085197" elapsed="0.074178"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:26.159712" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:07:26.159466" elapsed="0.000301"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:26.159441" elapsed="0.000351"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:07:26.160277" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "[C "I "n "[C "S "w "i "t "c "h "[C "A "f "t "e "r "[C "C "o "n "t "r "o "l "l "e "r "[C "R "e "s "t "a "r "t "s "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:07:26.159938" elapsed="0.000419"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:26.160671" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:07:26.160425" elapsed="0.000302"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:26.160407" elapsed="0.000343"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T01:07:26.160784" elapsed="0.000034"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:07:26.163413" elapsed="0.000196"/>
</kw>
<msg time="2026-04-08T01:07:26.163670" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:07:26.162339" elapsed="0.001461"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:26.164071" elapsed="0.000073"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:26.164435" elapsed="0.000108"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:07:26.161699" elapsed="0.002967"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T01:07:26.161119" elapsed="0.003617"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T01:07:26.039310" elapsed="0.125607"/>
</kw>
<msg time="2026-04-08T01:07:26.165015" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:07:26.165059" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:07:26.038731" elapsed="0.126366"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T01:07:26.165302" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-08T01:07:26.165193" elapsed="0.000168"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:26.165172" elapsed="0.000213"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 2,
close the previous connection. In any case create a new connection
to karaf console for 2, set correct prompt set and login to karaf console.
Store connection index for 2 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:26.165800" elapsed="0.000065"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:26.166243" elapsed="0.000029"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T01:07:26.166321" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T01:07:26.037959" elapsed="0.128473"/>
</kw>
<msg time="2026-04-08T01:07:26.166528" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:07:26.166573" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:07:26.033180" elapsed="0.133430"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:26.166940" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:07:26.166688" elapsed="0.000304"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:26.166670" elapsed="0.000345"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T01:07:26.033021" elapsed="0.134017"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:07:26.172689" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:07:26.172578" elapsed="0.000158"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:26.172558" elapsed="0.000200"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:07:26.173974" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:07:26.173867" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:26.173849" elapsed="0.000193"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:07:26.174517" level="INFO">${karaf_connection_index} = 595</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:07:26.174214" elapsed="0.000330"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:07:26.174952" level="INFO">${current_connection_index} = 495</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:07:26.174705" elapsed="0.000273"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:07:26.211398" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:07:26.175492" elapsed="0.036012"/>
</kw>
<msg time="2026-04-08T01:07:26.211679" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T01:07:26.211726" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:07:26.175139" elapsed="0.036622"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T01:07:26.268468" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "[C "I "n "[C "S "w "i "t "c "h "[C "A "f "t "e "r "[C "C "o "n "t "r "o "l "l "e "r "[C "R "e "s "t "a "r "t "s "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T01:07:26.212324" elapsed="0.056261"/>
</kw>
<msg time="2026-04-08T01:07:26.268747" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T01:07:26.268794" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:07:26.211936" elapsed="0.056895"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:26.269138" elapsed="0.000048"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:07:26.268910" elapsed="0.000313"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:26.268889" elapsed="0.000359"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:07:26.269692" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "[C "I "n "[C "S "w "i "t "c "h "[C "A "f "t "e "r "[C "C "o "n "t "r "o "l "l "e "r "[C "R "e "s "t "a "r "t "s "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:07:26.269392" elapsed="0.000377"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:26.270055" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:07:26.269836" elapsed="0.000273"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:26.269818" elapsed="0.000314"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T01:07:26.270220" elapsed="0.000031"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:07:26.272858" elapsed="0.000195"/>
</kw>
<msg time="2026-04-08T01:07:26.273114" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:07:26.271661" elapsed="0.001603"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:26.273539" elapsed="0.000075"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:26.273871" elapsed="0.000074"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:07:26.271026" elapsed="0.003027"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T01:07:26.270494" elapsed="0.003624"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T01:07:26.173565" elapsed="0.100683"/>
</kw>
<msg time="2026-04-08T01:07:26.274340" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:07:26.274383" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:07:26.172911" elapsed="0.101508"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T01:07:26.274601" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-08T01:07:26.274495" elapsed="0.000164"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:26.274477" elapsed="0.000205"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 3,
close the previous connection. In any case create a new connection
to karaf console for 3, set correct prompt set and login to karaf console.
Store connection index for 3 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:26.275062" elapsed="0.000024"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:26.275412" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T01:07:26.275482" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T01:07:26.172203" elapsed="0.103384"/>
</kw>
<msg time="2026-04-08T01:07:26.275678" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:07:26.275721" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "F "l "o "w "s "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:07:26.167325" elapsed="0.108432"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:26.276078" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:07:26.275832" elapsed="0.000299"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:26.275815" elapsed="0.000354"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T01:07:26.167181" elapsed="0.109015"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-08T01:07:25.914830" elapsed="0.361397"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-08T01:07:25.912428" elapsed="0.363856"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-08T01:07:25.907570" elapsed="0.368771"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:07:25.907010" elapsed="0.369378"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-08T01:07:25.904059" elapsed="0.372416"/>
</kw>
<kw name="Check Flows In Mininet" owner="MininetKeywords">
<if>
<branch type="IF" condition="&quot;&quot;&quot;${mininet_conn}&quot;&quot;&quot; != &quot;&quot;">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${mininet_conn}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:07:26.277368" elapsed="0.000172"/>
</kw>
<status status="PASS" start="2026-04-08T01:07:26.277134" elapsed="0.000442"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:26.277116" elapsed="0.000484"/>
</if>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:07:26.278025" level="INFO">${cmd} = dpctl dump-aggregate -O OpenFlow13</msg>
<var>${cmd}</var>
<arg>dpctl dump-aggregate -O OpenFlow13</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:07:26.277768" elapsed="0.000282"/>
</kw>
<kw name="Send Mininet Command" owner="MininetKeywords">
<if>
<branch type="IF" condition="&quot;&quot;&quot;${mininet_conn}&quot;&quot;&quot; != &quot;&quot;">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${mininet_conn}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:07:26.279115" elapsed="0.000274"/>
</kw>
<status status="PASS" start="2026-04-08T01:07:26.278897" elapsed="0.000528"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:26.278879" elapsed="0.000603"/>
</if>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:07:26.282893" level="INFO">dpctl dump-aggregate -O OpenFlow13</msg>
<arg>${cmd}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:07:26.279628" elapsed="0.003320"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-08T01:07:26.344975" level="INFO">*** s1 ------------------------------------------------------------------------
OFPST_AGGREGATE reply (OF1.3) (xid=0x2): packet_count=10 byte_count=850 flow_count=101
*** s2 ------------------------------------------------------------------------
OFPST_AGGREGATE reply (OF1.3) (xid=0x2): packet_count=20 byte_count=1700 flow_count=101
*** s3 ------------------------------------------------------------------------
OFPST_AGGREGATE reply (OF1.3) (xid=0x2): packet_count=11 byte_count=920 flow_count=101
mininet&gt;</msg>
<msg time="2026-04-08T01:07:26.345085" level="INFO">${output} = *** s1 ------------------------------------------------------------------------
OFPST_AGGREGATE reply (OF1.3) (xid=0x2): packet_count=10 byte_count=850 flow_count=101
*** s2 -----------------------...</msg>
<var>${output}</var>
<arg>mininet&gt;</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-08T01:07:26.283108" elapsed="0.062004"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-08T01:07:26.345177" elapsed="0.000037"/>
</return>
<msg time="2026-04-08T01:07:26.345340" level="INFO">${output} = *** s1 ------------------------------------------------------------------------
OFPST_AGGREGATE reply (OF1.3) (xid=0x2): packet_count=10 byte_count=850 flow_count=101
*** s2 -----------------------...</msg>
<var>${output}</var>
<arg>${mininet_conn}</arg>
<arg>${cmd}</arg>
<doc>Sends Command dpctl dump-aggregate -O OpenFlow13 to Mininet session 495 and returns read buffer response.</doc>
<status status="PASS" start="2026-04-08T01:07:26.278397" elapsed="0.066971"/>
</kw>
<kw name="Get Regexp Matches" owner="String">
<msg time="2026-04-08T01:07:26.345807" level="INFO">${flows} = ['101', '101', '101']</msg>
<var>${flows}</var>
<arg>${output}</arg>
<arg>(?&lt;=flow_count\=).*?(?=\r)</arg>
<doc>Returns a list of all non-overlapping matches in the given string.</doc>
<status status="PASS" start="2026-04-08T01:07:26.345544" elapsed="0.000288"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:07:26.346404" level="INFO">${total_flows} = 303</msg>
<var>${total_flows}</var>
<arg>sum(map(int, ${flows}))</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:07:26.345996" elapsed="0.000435"/>
</kw>
<kw name="Should Be Equal As Numbers" owner="BuiltIn">
<arg>${total_flows}</arg>
<arg>${flow_count}</arg>
<doc>Fails if objects are unequal after converting them to real numbers.</doc>
<status status="PASS" start="2026-04-08T01:07:26.346625" elapsed="0.000317"/>
</kw>
<arg>${mininet_conn_id}</arg>
<arg>${all_flows}</arg>
<doc>Sync with mininet to match exact number of flows</doc>
<status status="PASS" start="2026-04-08T01:07:26.276750" elapsed="0.070252"/>
</kw>
<doc>Check Flows in switch.</doc>
<status status="PASS" start="2026-04-08T01:07:25.903516" elapsed="0.443597"/>
</test>
<test id="s1-s4-t71" name="Stop Mininet" line="469">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-08T01:07:26.350667" elapsed="0.000212"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-08T01:07:26.350400" elapsed="0.000533"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:07:26.351929" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:07:26.351818" elapsed="0.000156"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:26.351800" elapsed="0.000195"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:07:26.356752" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:07:26.356648" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:26.356630" elapsed="0.000195"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:07:26.357824" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:07:26.357445" elapsed="0.000405"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:07:26.358359" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:07:26.358012" elapsed="0.000375"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T01:07:26.358430" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T01:07:26.358581" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T01:07:26.357050" elapsed="0.001556"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:07:26.365707" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:07:26.365599" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:26.365580" elapsed="0.000194"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:07:26.366926" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:07:26.366818" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:26.366799" elapsed="0.000193"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:07:26.367465" level="INFO">${karaf_connection_index} = 593</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:07:26.367139" elapsed="0.000353"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:07:26.367907" level="INFO">${current_connection_index} = 495</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:07:26.367653" elapsed="0.000280"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:07:26.423810" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:07:26.368515" elapsed="0.055397"/>
</kw>
<msg time="2026-04-08T01:07:26.424087" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T01:07:26.424133" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:07:26.368148" elapsed="0.056039"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T01:07:26.455182" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "S "t "o "p "[C "M "i "n "i "n "e "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T01:07:26.424717" elapsed="0.030565"/>
</kw>
<msg time="2026-04-08T01:07:26.455442" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T01:07:26.455487" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "S "t "o "p "[C "M "i "n "i "n "e "t...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:07:26.424377" elapsed="0.031146"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:26.455828" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:07:26.455601" elapsed="0.000281"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:26.455581" elapsed="0.000326"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:07:26.456404" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "S "t "o "p "[C "M "i "n "i "n "e "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:07:26.456048" elapsed="0.000419"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:26.456751" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:07:26.456534" elapsed="0.000270"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:26.456515" elapsed="0.000312"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T01:07:26.456859" elapsed="0.000027"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:07:26.459352" elapsed="0.000192"/>
</kw>
<msg time="2026-04-08T01:07:26.459604" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:07:26.458296" elapsed="0.001440"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:26.460007" elapsed="0.000074"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:26.460374" elapsed="0.000134"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:07:26.457671" elapsed="0.002957"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T01:07:26.457126" elapsed="0.003566"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T01:07:26.366514" elapsed="0.094276"/>
</kw>
<msg time="2026-04-08T01:07:26.460879" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:07:26.460922" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "S "t "o "p "[C "M "i "n "i "n "e "t...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:07:26.365927" elapsed="0.095030"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T01:07:26.461138" elapsed="0.000041"/>
</return>
<status status="PASS" start="2026-04-08T01:07:26.461032" elapsed="0.000181"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:26.461014" elapsed="0.000222"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:26.461622" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:26.461946" elapsed="0.000023"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T01:07:26.462014" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T01:07:26.365260" elapsed="0.096859"/>
</kw>
<msg time="2026-04-08T01:07:26.462227" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:07:26.462271" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "S "t "o "p "[C "M "i "n "i "n "e "t...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:07:26.358978" elapsed="0.103362"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:26.462667" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:07:26.462418" elapsed="0.000302"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:26.462401" elapsed="0.000343"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T01:07:26.358834" elapsed="0.103932"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:07:26.468239" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:07:26.468084" elapsed="0.000201"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:26.468065" elapsed="0.000242"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:07:26.469645" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:07:26.469536" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:26.469517" elapsed="0.000196"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:07:26.470174" level="INFO">${karaf_connection_index} = 594</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:07:26.469859" elapsed="0.000343"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:07:26.470616" level="INFO">${current_connection_index} = 495</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:07:26.470364" elapsed="0.000279"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:07:26.510220" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:07:26.471144" elapsed="0.039172"/>
</kw>
<msg time="2026-04-08T01:07:26.510508" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T01:07:26.510559" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:07:26.470809" elapsed="0.039784"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T01:07:26.539714" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "S "t "o "p "[C "M "i "n "i "n "e "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T01:07:26.511108" elapsed="0.028709"/>
</kw>
<msg time="2026-04-08T01:07:26.539979" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T01:07:26.540025" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "S "t "o "p "[C "M "i "n "i "n "e "t...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:07:26.510768" elapsed="0.029292"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:26.540424" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:07:26.540193" elapsed="0.000286"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:26.540148" elapsed="0.000356"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:07:26.540942" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "S "t "o "p "[C "M "i "n "i "n "e "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:07:26.540646" elapsed="0.000358"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:26.541310" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:07:26.541072" elapsed="0.000293"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:26.541054" elapsed="0.000334"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T01:07:26.541421" elapsed="0.000027"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:07:26.543809" elapsed="0.000184"/>
</kw>
<msg time="2026-04-08T01:07:26.544053" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:07:26.542826" elapsed="0.001620"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:26.545310" elapsed="0.000220"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:26.546115" elapsed="0.000203"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:07:26.542227" elapsed="0.004376"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T01:07:26.541685" elapsed="0.005242"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T01:07:26.469009" elapsed="0.078233"/>
</kw>
<msg time="2026-04-08T01:07:26.547489" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:07:26.547598" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "S "t "o "p "[C "M "i "n "i "n "e "t...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:07:26.468461" elapsed="0.079227"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T01:07:26.548275" elapsed="0.000074"/>
</return>
<status status="PASS" start="2026-04-08T01:07:26.547899" elapsed="0.000530"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:26.547846" elapsed="0.000638"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 2,
close the previous connection. In any case create a new connection
to karaf console for 2, set correct prompt set and login to karaf console.
Store connection index for 2 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:26.549247" elapsed="0.000039"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:26.549734" elapsed="0.000038"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T01:07:26.549839" elapsed="0.000023"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T01:07:26.467748" elapsed="0.082245"/>
</kw>
<msg time="2026-04-08T01:07:26.550130" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:07:26.550224" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "S "t "o "p "[C "M "i "n "i "n "e "t...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:07:26.463028" elapsed="0.087249"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:26.550750" elapsed="0.000033"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:07:26.550388" elapsed="0.000440"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:26.550363" elapsed="0.000497"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T01:07:26.462887" elapsed="0.088006"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:07:26.558949" elapsed="0.000020"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:07:26.558798" elapsed="0.000213"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:26.558772" elapsed="0.000270"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:07:26.560769" elapsed="0.000025"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:07:26.560606" elapsed="0.000240"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:26.560581" elapsed="0.000294"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:07:26.561382" level="INFO">${karaf_connection_index} = 595</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:07:26.561039" elapsed="0.000370"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:07:26.561831" level="INFO">${current_connection_index} = 495</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:07:26.561571" elapsed="0.000287"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:07:26.600901" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:07:26.562377" elapsed="0.038618"/>
</kw>
<msg time="2026-04-08T01:07:26.601193" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T01:07:26.601242" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:07:26.562019" elapsed="0.039259"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T01:07:26.648379" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "S "t "o "p "[C "M "i "n "i "n "e "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T01:07:26.601795" elapsed="0.046689"/>
</kw>
<msg time="2026-04-08T01:07:26.648647" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T01:07:26.648693" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "S "t "o "p "[C "M "i "n "i "n "e "t...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:07:26.601451" elapsed="0.047278"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:26.649049" elapsed="0.000076"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:07:26.648810" elapsed="0.000372"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:26.648790" elapsed="0.000419"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:07:26.649671" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "S "t "o "p "[C "M "i "n "i "n "e "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:07:26.649360" elapsed="0.000375"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:26.650028" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:07:26.649807" elapsed="0.000274"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:26.649789" elapsed="0.000315"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T01:07:26.650137" elapsed="0.000049"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:07:26.652679" elapsed="0.000187"/>
</kw>
<msg time="2026-04-08T01:07:26.652927" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:07:26.651644" elapsed="0.001417"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:26.653355" elapsed="0.000075"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:26.653688" elapsed="0.000079"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:07:26.651012" elapsed="0.002865"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T01:07:26.650463" elapsed="0.003477"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T01:07:26.560058" elapsed="0.093980"/>
</kw>
<msg time="2026-04-08T01:07:26.654128" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:07:26.654193" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "S "t "o "p "[C "M "i "n "i "n "e "t...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:07:26.559278" elapsed="0.094953"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T01:07:26.654414" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-08T01:07:26.654308" elapsed="0.000164"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:26.654290" elapsed="0.000205"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 3,
close the previous connection. In any case create a new connection
to karaf console for 3, set correct prompt set and login to karaf console.
Store connection index for 3 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:26.654884" elapsed="0.000024"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:26.655232" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T01:07:26.655303" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T01:07:26.558291" elapsed="0.097116"/>
</kw>
<msg time="2026-04-08T01:07:26.655500" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:07:26.655543" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "S "t "o "p "[C "M "i "n "i "n "e "t...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:07:26.551325" elapsed="0.104253"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:26.655942" elapsed="0.000034"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:07:26.655652" elapsed="0.000396"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:26.655635" elapsed="0.000445"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T01:07:26.551077" elapsed="0.105042"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-08T01:07:26.358661" elapsed="0.297524"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-08T01:07:26.356283" elapsed="0.299994"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-08T01:07:26.351531" elapsed="0.304826"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:07:26.351086" elapsed="0.305322"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-08T01:07:26.348030" elapsed="0.308434"/>
</kw>
<kw name="Stop Mininet And Exit" owner="MininetKeywords">
<if>
<branch type="IF" condition="&quot;&quot;&quot;${mininet_conn}&quot;&quot;&quot; != &quot;&quot;">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${mininet_conn}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:26.663376" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:07:26.663138" elapsed="0.000293"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:26.663120" elapsed="0.000335"/>
</if>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:07:26.665582" level="INFO">exit</msg>
<arg>exit</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:07:26.663593" elapsed="0.002046"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-08T01:07:26.895856" level="INFO">*** Stopping 0 controllers

*** Stopping 5 links
.....
*** Stopping 3 switches
s1 s2 s3 
*** Stopping 3 hosts
h1 h2 h3 
*** Done
completed in 542.310 seconds
[?2004h[jenkins@releng-11369-169-1-mininet-ovs-217-0 ~]&gt;</msg>
<arg>${TOOLS_SYSTEM_PROMPT}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-08T01:07:26.665800" elapsed="0.230189"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T01:07:26.896288" elapsed="0.000206"/>
</kw>
<doc>Stops Mininet and exits session ${mininet_conn}</doc>
<status status="PASS" start="2026-04-08T01:07:26.661070" elapsed="0.235493"/>
</kw>
<doc>Stop Mininet.</doc>
<status status="PASS" start="2026-04-08T01:07:26.347498" elapsed="0.549214"/>
</test>
<test id="s1-s4-t72" name="Check No Switches" line="473">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-08T01:07:26.900574" elapsed="0.000248"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-08T01:07:26.900302" elapsed="0.000576"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:07:26.901983" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:07:26.901843" elapsed="0.000193"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:26.901818" elapsed="0.000241"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:07:26.906958" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:07:26.906850" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:26.906832" elapsed="0.000192"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:07:26.908064" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:07:26.907650" elapsed="0.000442"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:07:26.908572" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:07:26.908269" elapsed="0.000329"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T01:07:26.908641" elapsed="0.000036"/>
</return>
<msg time="2026-04-08T01:07:26.908802" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T01:07:26.907272" elapsed="0.001555"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:07:26.914395" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:07:26.914286" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:26.914266" elapsed="0.000196"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:07:26.915642" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:07:26.915533" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:26.915515" elapsed="0.000222"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:07:26.916234" level="INFO">${karaf_connection_index} = 593</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:07:26.915905" elapsed="0.000356"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:07:26.916656" level="INFO">${current_connection_index} = None</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:07:26.916426" elapsed="0.000256"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:07:26.951118" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:07:26.917211" elapsed="0.034023"/>
</kw>
<msg time="2026-04-08T01:07:26.951418" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T01:07:26.951465" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:07:26.916847" elapsed="0.034654"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T01:07:26.990589" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "N "o "[C "S "w "i "t "c "h "e "s "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T01:07:26.952084" elapsed="0.038609"/>
</kw>
<msg time="2026-04-08T01:07:26.990922" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T01:07:26.990968" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "N "o "[C "S "w "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:07:26.951696" elapsed="0.039308"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:26.991353" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:07:26.991087" elapsed="0.000322"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:26.991065" elapsed="0.000369"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:07:26.991907" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "N "o "[C "S "w "i "t "c "h "e "s "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:07:26.991579" elapsed="0.000392"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:26.992277" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:07:26.992039" elapsed="0.000295"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:26.992021" elapsed="0.000336"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T01:07:26.992391" elapsed="0.000032"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:07:26.993868" elapsed="0.000774"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T01:07:26.994919" elapsed="0.000482"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T01:07:26.995705" elapsed="0.000354"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:07:26.993252" elapsed="0.002928"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T01:07:26.992692" elapsed="0.003556"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T01:07:26.915234" elapsed="0.081116"/>
</kw>
<msg time="2026-04-08T01:07:26.996441" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:07:26.996485" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "N "o "[C "S "w "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:07:26.914617" elapsed="0.081904"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T01:07:26.996704" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-08T01:07:26.996598" elapsed="0.000164"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:26.996579" elapsed="0.000211"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:26.997203" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:26.997534" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T01:07:26.997604" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T01:07:26.913934" elapsed="0.083777"/>
</kw>
<msg time="2026-04-08T01:07:26.997803" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:07:26.997847" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "N "o "[C "S "w "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:07:26.909223" elapsed="0.088660"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:26.998223" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:07:26.997956" elapsed="0.000321"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:26.997940" elapsed="0.000360"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T01:07:26.909062" elapsed="0.089260"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:07:27.004302" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:07:27.004192" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:27.004171" elapsed="0.000198"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:07:27.005508" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:07:27.005400" elapsed="0.000206"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:27.005382" elapsed="0.000251"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:07:27.006085" level="INFO">${karaf_connection_index} = 594</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:07:27.005783" elapsed="0.000328"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:07:27.006529" level="INFO">${current_connection_index} = None</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:07:27.006303" elapsed="0.000252"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:07:27.043702" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:07:27.007057" elapsed="0.036741"/>
</kw>
<msg time="2026-04-08T01:07:27.043968" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T01:07:27.044016" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:07:27.006720" elapsed="0.037332"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T01:07:27.077436" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "N "o "[C "S "w "i "t "c "h "e "s "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T01:07:27.044595" elapsed="0.032943"/>
</kw>
<msg time="2026-04-08T01:07:27.077706" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T01:07:27.077761" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "N "o "[C "S "w "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:07:27.044251" elapsed="0.033550"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:27.078125" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:07:27.077893" elapsed="0.000317"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:27.077869" elapsed="0.000366"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:07:27.078689" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "N "o "[C "S "w "i "t "c "h "e "s "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:07:27.078384" elapsed="0.000370"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:27.079043" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:07:27.078823" elapsed="0.000273"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:27.078804" elapsed="0.000315"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T01:07:27.079152" elapsed="0.000045"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:07:27.080642" elapsed="0.000807"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T01:07:27.081814" elapsed="0.000566"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T01:07:27.082651" elapsed="0.000553"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:07:27.080015" elapsed="0.003300"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T01:07:27.079444" elapsed="0.003958"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T01:07:27.005080" elapsed="0.078473"/>
</kw>
<msg time="2026-04-08T01:07:27.083663" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:07:27.083717" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "N "o "[C "S "w "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:07:27.004523" elapsed="0.079239"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T01:07:27.083985" elapsed="0.000033"/>
</return>
<status status="PASS" start="2026-04-08T01:07:27.083855" elapsed="0.000199"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:27.083832" elapsed="0.000248"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 2,
close the previous connection. In any case create a new connection
to karaf console for 2, set correct prompt set and login to karaf console.
Store connection index for 2 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:27.084556" elapsed="0.000030"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:27.085017" elapsed="0.000039"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T01:07:27.085212" elapsed="0.000028"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T01:07:27.003833" elapsed="0.081557"/>
</kw>
<msg time="2026-04-08T01:07:27.085547" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:07:27.085615" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "N "o "[C "S "w "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:07:26.998592" elapsed="0.087081"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:27.086252" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:07:27.085797" elapsed="0.000545"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:27.085769" elapsed="0.000611"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T01:07:26.998449" elapsed="0.087973"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:07:27.094293" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:07:27.094183" elapsed="0.000156"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:27.094149" elapsed="0.000212"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:07:27.095577" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:07:27.095456" elapsed="0.000167"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:27.095437" elapsed="0.000208"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:07:27.096086" level="INFO">${karaf_connection_index} = 595</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:07:27.095790" elapsed="0.000322"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:07:27.096514" level="INFO">${current_connection_index} = None</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:07:27.096291" elapsed="0.000250"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:07:27.133176" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:07:27.097038" elapsed="0.036247"/>
</kw>
<msg time="2026-04-08T01:07:27.133460" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T01:07:27.133537" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:07:27.096703" elapsed="0.036874"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T01:07:27.165939" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "N "o "[C "S "w "i "t "c "h "e "s "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T01:07:27.134131" elapsed="0.031999"/>
</kw>
<msg time="2026-04-08T01:07:27.166363" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T01:07:27.166411" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "N "o "[C "S "w "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:07:27.133771" elapsed="0.032676"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:27.166879" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:07:27.166565" elapsed="0.000375"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:27.166529" elapsed="0.000444"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:07:27.167601" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "N "o "[C "S "w "i "t "c "h "e "s "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:07:27.167125" elapsed="0.000550"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:27.167985" elapsed="0.000028"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:07:27.167747" elapsed="0.000302"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:27.167727" elapsed="0.000346"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T01:07:27.168110" elapsed="0.000040"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:07:27.169916" elapsed="0.001012"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T01:07:27.171321" elapsed="0.000604"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T01:07:27.172332" elapsed="0.000374"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:07:27.169146" elapsed="0.003666"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T01:07:27.168481" elapsed="0.004400"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T01:07:27.095078" elapsed="0.077915"/>
</kw>
<msg time="2026-04-08T01:07:27.173114" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:07:27.173178" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "N "o "[C "S "w "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:07:27.094514" elapsed="0.078704"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T01:07:27.173424" elapsed="0.000033"/>
</return>
<status status="PASS" start="2026-04-08T01:07:27.173306" elapsed="0.000185"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:27.173284" elapsed="0.000232"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 3,
close the previous connection. In any case create a new connection
to karaf console for 3, set correct prompt set and login to karaf console.
Store connection index for 3 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:27.174042" elapsed="0.000029"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:27.174498" elapsed="0.000033"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T01:07:27.174592" elapsed="0.000021"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T01:07:27.093822" elapsed="0.080905"/>
</kw>
<msg time="2026-04-08T01:07:27.174830" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:07:27.174877" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "1 "0 "[C "G "r "o "u "p "[C "F "l "o "w "s ". "C "h "e "c "k "[C "N "o "[C "S "w "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:07:27.086883" elapsed="0.088030"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:27.175295" elapsed="0.000027"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:07:27.174993" elapsed="0.000372"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:27.174975" elapsed="0.000415"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T01:07:27.086616" elapsed="0.088798"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-08T01:07:26.908884" elapsed="0.266601"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-08T01:07:26.906490" elapsed="0.269067"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-08T01:07:26.901527" elapsed="0.274107"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:07:26.901037" elapsed="0.274663"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-08T01:07:26.897643" elapsed="0.278133"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Check No Switches On Member" owner="ClusterOpenFlow">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:07:27.177869" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:07:27.177508" elapsed="0.000397"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T01:07:27.177961" elapsed="0.000037"/>
</return>
<msg time="2026-04-08T01:07:27.178149" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T01:07:27.177101" elapsed="0.001101"/>
</kw>
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T01:07:27.191182" level="INFO">GET Request : url=http://10.30.170.48:8181/rests/data/network-topology:network-topology?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01s3bfo0y24i1es90l47mavglv0.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T01:07:27.192333" level="INFO">GET Response : url=http://10.30.170.48:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '1100'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"}]}]}]}} 
 </msg>
<msg time="2026-04-08T01:07:27.192841" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${RFC8040_OPERATIONAL_TOPO_API}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T01:07:27.178396" elapsed="0.014485"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:07:27.196987" level="INFO">{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"}]}]}]}}</msg>
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:07:27.193261" elapsed="0.003804"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Should Not Contain" owner="BuiltIn">
<msg time="2026-04-08T01:07:27.204313" level="FAIL">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"}]}]}]}}' contains 'openflow:1'</msg>
<arg>${resp.text}</arg>
<arg>openflow:${switch}</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="FAIL" start="2026-04-08T01:07:27.200738" elapsed="0.003695">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"}]}]}]}}' contains 'openflow:1'</status>
</kw>
<var name="${switch}">1</var>
<status status="FAIL" start="2026-04-08T01:07:27.200436" elapsed="0.004107">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"}]}]}]}}' contains 'openflow:1'</status>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="FAIL" start="2026-04-08T01:07:27.197142" elapsed="0.007493">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"}]}]}]}}' contains 'openflow:1'</status>
</for>
<arg>${SWITCHES}</arg>
<doc>Check no switch is in topology</doc>
<status status="FAIL" start="2026-04-08T01:07:27.176679" elapsed="0.028168">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"}]},{"node-id":"openflow:3","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']","termination-point":[{"tp-id":"openflow:3:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:3']/node-connector[id='openflow:3:LOCAL']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"}]}]}]}}' contains 'openflow:1'</status>
</kw>
<kw name="Check No Switches On Member" owner="ClusterOpenFlow">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:07:28.208714" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:07:28.207952" elapsed="0.000829"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T01:07:28.208898" elapsed="0.000077"/>
</return>
<msg time="2026-04-08T01:07:28.209275" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T01:07:28.207128" elapsed="0.002205"/>
</kw>
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-08T01:07:28.222402" level="INFO">GET Request : url=http://10.30.170.48:8181/rests/data/network-topology:network-topology?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01s3bfo0y24i1es90l47mavglv0.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T01:07:28.222543" level="INFO">GET Response : url=http://10.30.170.48:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '77'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"}]}} 
 </msg>
<msg time="2026-04-08T01:07:28.222643" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${RFC8040_OPERATIONAL_TOPO_API}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T01:07:28.209685" elapsed="0.012984"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:07:28.228690" level="INFO">{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"}]}}</msg>
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:07:28.223028" elapsed="0.005776"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>openflow:${switch}</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-08T01:07:28.232509" elapsed="0.002416"/>
</kw>
<var name="${switch}">1</var>
<status status="PASS" start="2026-04-08T01:07:28.232343" elapsed="0.002623"/>
</iter>
<iter>
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>openflow:${switch}</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-08T01:07:28.235222" elapsed="0.002361"/>
</kw>
<var name="${switch}">2</var>
<status status="PASS" start="2026-04-08T01:07:28.235050" elapsed="0.002572"/>
</iter>
<iter>
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>openflow:${switch}</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-08T01:07:28.237863" elapsed="0.002378"/>
</kw>
<var name="${switch}">3</var>
<status status="PASS" start="2026-04-08T01:07:28.237704" elapsed="0.002577"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="PASS" start="2026-04-08T01:07:28.228938" elapsed="0.011372"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check no switch is in topology</doc>
<status status="PASS" start="2026-04-08T01:07:28.205892" elapsed="0.034480"/>
</kw>
<arg>5s</arg>
<arg>1s</arg>
<arg>ClusterOpenFlow.Check No Switches On Member</arg>
<arg>${SWITCHES}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-08T01:07:27.175975" elapsed="1.064446"/>
</kw>
<doc>Check no switches in topology.</doc>
<status status="PASS" start="2026-04-08T01:07:26.896943" elapsed="1.343605"/>
</test>
<kw name="Final Phase" type="TEARDOWN">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:07:28.241915" level="INFO">${command} = sudo iptables -v -F</msg>
<var>${command}</var>
<arg>sudo iptables -v -F</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:07:28.241657" elapsed="0.000285"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Run_Bash_Command_On_List_Or_All" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:07:28.245913" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:07:28.245526" elapsed="0.000414"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:07:28.246438" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:07:28.246103" elapsed="0.000361"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T01:07:28.246511" elapsed="0.000036"/>
</return>
<msg time="2026-04-08T01:07:28.246673" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T01:07:28.245188" elapsed="0.001510"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:07:28.247687" level="INFO">${member_ip} = 10.30.170.48</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:07:28.247422" elapsed="0.000291"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:07:28.248469" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

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

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T01:07:28.252051" elapsed="0.000333"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:07:28.253300" level="INFO">Attempting to execute command "sudo iptables -v -F" on remote system "10.30.170.48" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:07:28.252540" elapsed="0.000809"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:07:28.254083" level="INFO">${conn_id} = 599</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T01:07:28.253512" elapsed="0.000597"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T01:07:28.255554" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T01:07:28.255751" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T01:07:28.254902" elapsed="0.000930"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:07:28.256134" elapsed="0.000737"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T01:07:28.258579" level="INFO">Logging into '10.30.170.48:22' as 'jenkins'.</msg>
<msg time="2026-04-08T01:07:28.859759" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 01:07:28 UTC 2026

  System load:  0.36               Processes:             121
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 7%                 IPv4 address for ens3: 10.30.170.48
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 01:06:45 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-0-builder-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T01:07:28.258067" elapsed="0.601935"/>
</kw>
<msg time="2026-04-08T01:07:28.860110" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:07:28.257247" elapsed="0.603136"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T01:07:28.254369" elapsed="0.606242"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T01:07:28.861255" level="INFO">Executing command 'sudo iptables -v -F'.</msg>
<msg time="2026-04-08T01:07:28.904607" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-08T01:07:28.905117" level="INFO">${stdout} = Flushing chain `INPUT'
Flushing chain `FORWARD'
Flushing chain `OUTPUT'
Flushing chain `DOCKER'
Flushing chain `DOCKER-BRIDGE'
Flushing chain `DOCKER-CT'
Flushing chain `DOCKER-FORWARD'
Flushing chain...</msg>
<msg time="2026-04-08T01:07:28.905276" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T01:07:28.860874" elapsed="0.044458"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T01:07:28.905739" elapsed="0.000566"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:07:28.907736" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:07:28.906757" elapsed="0.001108"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T01:07:28.908454" elapsed="0.000038"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:07:28.908050" elapsed="0.000517"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:28.907996" elapsed="0.000624"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T01:07:28.909194" elapsed="0.000078"/>
</return>
<status status="PASS" start="2026-04-08T01:07:28.908752" elapsed="0.000600"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:28.908709" elapsed="0.000697"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T01:07:28.909484" elapsed="0.000032"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:07:28.914304" elapsed="0.001028"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T01:07:28.915789" elapsed="0.000835"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T01:07:28.917012" elapsed="0.000326"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:07:28.910367" elapsed="0.007119"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T01:07:28.250448" elapsed="0.667179"/>
</kw>
<msg time="2026-04-08T01:07:28.917878" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:07:28.249754" elapsed="0.668220"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-08T01:07:28.249271" elapsed="0.668817"/>
</kw>
<msg time="2026-04-08T01:07:28.918146" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:07:28.248754" elapsed="0.669519"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:07:28.922102" elapsed="0.000484"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T01:07:28.922832" elapsed="0.000205"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T01:07:28.923301" elapsed="0.000102"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:07:28.918717" elapsed="0.004737"/>
</kw>
<msg time="2026-04-08T01:07:28.923550" level="INFO">${output} = Flushing chain `INPUT'
Flushing chain `FORWARD'
Flushing chain `OUTPUT'
Flushing chain `DOCKER'
Flushing chain `DOCKER-BRIDGE'
Flushing chain `DOCKER-CT'
Flushing chain `DOCKER-FORWARD'
Flushing chain...</msg>
<var>${output}</var>
<arg>Utils.Run_Command_On_Controller</arg>
<arg>${member_ip}</arg>
<arg>${command}</arg>
<doc>Store current connection index, run keyword returning its result, restore connection in teardown.
Note that in order to avoid "got positional argument after named arguments", it is safer to use positional (not named) arguments on call.</doc>
<status status="PASS" start="2026-04-08T01:07:28.247936" elapsed="0.675641"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:07:28.924012" level="INFO">Flushing chain `INPUT'
Flushing chain `FORWARD'
Flushing chain `OUTPUT'
Flushing chain `DOCKER'
Flushing chain `DOCKER-BRIDGE'
Flushing chain `DOCKER-CT'
Flushing chain `DOCKER-FORWARD'
Flushing chain `DOCKER-INTERNAL'
Flushing chain `DOCKER-USER'</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:07:28.923759" elapsed="0.000300"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-08T01:07:28.924102" elapsed="0.000029"/>
</return>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-08T01:07:28.247050" elapsed="0.677197"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T01:07:28.246877" elapsed="0.677409"/>
</iter>
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:07:28.925261" level="INFO">${member_ip} = 10.30.170.131</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:07:28.924967" elapsed="0.000321"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:07:28.926028" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

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

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T01:07:28.930068" elapsed="0.000340"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:07:28.931410" level="INFO">Attempting to execute command "sudo iptables -v -F" on remote system "10.30.170.131" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:07:28.930566" elapsed="0.000893"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:07:28.932287" level="INFO">${conn_id} = 602</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T01:07:28.931640" elapsed="0.000674"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T01:07:28.934003" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T01:07:28.934264" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T01:07:28.933229" elapsed="0.001129"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:07:28.934700" elapsed="0.000872"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T01:07:28.937424" level="INFO">Logging into '10.30.170.131:22' as 'jenkins'.</msg>
<msg time="2026-04-08T01:07:29.507008" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 01:07:29 UTC 2026

  System load:  1.1                Processes:             122
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 7%                 IPv4 address for ens3: 10.30.170.131
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 01:06:46 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-0-builder-1 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T01:07:28.936916" elapsed="0.570405"/>
</kw>
<msg time="2026-04-08T01:07:29.507460" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:07:28.935941" elapsed="0.571793"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T01:07:28.932608" elapsed="0.575398"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T01:07:29.508780" level="INFO">Executing command 'sudo iptables -v -F'.</msg>
<msg time="2026-04-08T01:07:29.551740" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-08T01:07:29.552060" level="INFO">${stdout} = Flushing chain `INPUT'
Flushing chain `FORWARD'
Flushing chain `OUTPUT'
Flushing chain `DOCKER'
Flushing chain `DOCKER-BRIDGE'
Flushing chain `DOCKER-CT'
Flushing chain `DOCKER-FORWARD'
Flushing chain...</msg>
<msg time="2026-04-08T01:07:29.552129" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T01:07:29.508363" elapsed="0.043830"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T01:07:29.552450" elapsed="0.000337"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:07:29.553713" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:07:29.553094" elapsed="0.000681"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T01:07:29.554143" elapsed="0.000057"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:07:29.553898" elapsed="0.000353"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:29.553861" elapsed="0.000424"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T01:07:29.554554" elapsed="0.000042"/>
</return>
<status status="PASS" start="2026-04-08T01:07:29.554365" elapsed="0.000277"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:29.554343" elapsed="0.000332"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T01:07:29.554722" elapsed="0.000021"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:07:29.560080" elapsed="0.000997"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T01:07:29.561496" elapsed="0.000599"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T01:07:29.562426" elapsed="0.000254"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:07:29.555208" elapsed="0.007589"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T01:07:28.928308" elapsed="0.634628"/>
</kw>
<msg time="2026-04-08T01:07:29.563016" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:07:28.927585" elapsed="0.635521"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-08T01:07:28.926847" elapsed="0.636391"/>
</kw>
<msg time="2026-04-08T01:07:29.563299" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:07:28.926331" elapsed="0.637048"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:07:29.567200" elapsed="0.000441"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T01:07:29.567951" elapsed="0.000225"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T01:07:29.568393" elapsed="0.000140"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:07:29.563788" elapsed="0.004817"/>
</kw>
<msg time="2026-04-08T01:07:29.568735" level="INFO">${output} = Flushing chain `INPUT'
Flushing chain `FORWARD'
Flushing chain `OUTPUT'
Flushing chain `DOCKER'
Flushing chain `DOCKER-BRIDGE'
Flushing chain `DOCKER-CT'
Flushing chain `DOCKER-FORWARD'
Flushing chain...</msg>
<var>${output}</var>
<arg>Utils.Run_Command_On_Controller</arg>
<arg>${member_ip}</arg>
<arg>${command}</arg>
<doc>Store current connection index, run keyword returning its result, restore connection in teardown.
Note that in order to avoid "got positional argument after named arguments", it is safer to use positional (not named) arguments on call.</doc>
<status status="PASS" start="2026-04-08T01:07:28.925507" elapsed="0.643264"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:07:29.569551" level="INFO">Flushing chain `INPUT'
Flushing chain `FORWARD'
Flushing chain `OUTPUT'
Flushing chain `DOCKER'
Flushing chain `DOCKER-BRIDGE'
Flushing chain `DOCKER-CT'
Flushing chain `DOCKER-FORWARD'
Flushing chain `DOCKER-INTERNAL'
Flushing chain `DOCKER-USER'</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:07:29.569043" elapsed="0.000573"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-08T01:07:29.569678" elapsed="0.000041"/>
</return>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-08T01:07:28.924575" elapsed="0.645271"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T01:07:28.924389" elapsed="0.645496"/>
</iter>
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:07:29.570820" level="INFO">${member_ip} = 10.30.171.110</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:07:29.570548" elapsed="0.000299"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:07:29.571583" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

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

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T01:07:29.575135" elapsed="0.000347"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:07:29.576418" level="INFO">Attempting to execute command "sudo iptables -v -F" on remote system "10.30.171.110" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:07:29.575639" elapsed="0.000827"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:07:29.577234" level="INFO">${conn_id} = 605</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T01:07:29.576628" elapsed="0.000634"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T01:07:29.578769" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T01:07:29.578972" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T01:07:29.578040" elapsed="0.001011"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:07:29.579386" elapsed="0.002478"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T01:07:29.583436" level="INFO">Logging into '10.30.171.110:22' as 'jenkins'.</msg>
<msg time="2026-04-08T01:07:30.160365" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 01:07:29 UTC 2026

  System load:  1.16               Processes:             127
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 7%                 IPv4 address for ens3: 10.30.171.110
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 01:06:46 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T01:07:29.583037" elapsed="0.577667"/>
</kw>
<msg time="2026-04-08T01:07:30.160809" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:07:29.582201" elapsed="0.578834"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T01:07:29.577497" elapsed="0.583778"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T01:07:30.161849" level="INFO">Executing command 'sudo iptables -v -F'.</msg>
<msg time="2026-04-08T01:07:30.204597" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-08T01:07:30.205085" level="INFO">${stdout} = Flushing chain `INPUT'
Flushing chain `FORWARD'
Flushing chain `OUTPUT'
Flushing chain `DOCKER'
Flushing chain `DOCKER-BRIDGE'
Flushing chain `DOCKER-CT'
Flushing chain `DOCKER-FORWARD'
Flushing chain...</msg>
<msg time="2026-04-08T01:07:30.205235" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T01:07:30.161523" elapsed="0.043767"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T01:07:30.205672" elapsed="0.000468"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:07:30.207497" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:07:30.206606" elapsed="0.000987"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T01:07:30.208097" elapsed="0.000036"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:07:30.207764" elapsed="0.000472"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:30.207715" elapsed="0.000574"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T01:07:30.208708" elapsed="0.000062"/>
</return>
<status status="PASS" start="2026-04-08T01:07:30.208408" elapsed="0.000435"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:30.208374" elapsed="0.000521"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T01:07:30.208969" elapsed="0.000032"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:07:30.214062" elapsed="0.000696"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T01:07:30.215023" elapsed="0.000490"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T01:07:30.215739" elapsed="0.000197"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:07:30.209695" elapsed="0.006328"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T01:07:29.573601" elapsed="0.642517"/>
</kw>
<msg time="2026-04-08T01:07:30.216191" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:07:29.572882" elapsed="0.643375"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-08T01:07:29.572396" elapsed="0.643939"/>
</kw>
<msg time="2026-04-08T01:07:30.216377" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:07:29.571870" elapsed="0.644564"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:07:30.219105" elapsed="0.000326"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T01:07:30.219597" elapsed="0.000144"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T01:07:30.219890" elapsed="0.000096"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:07:30.216740" elapsed="0.003297"/>
</kw>
<msg time="2026-04-08T01:07:30.220129" level="INFO">${output} = Flushing chain `INPUT'
Flushing chain `FORWARD'
Flushing chain `OUTPUT'
Flushing chain `DOCKER'
Flushing chain `DOCKER-BRIDGE'
Flushing chain `DOCKER-CT'
Flushing chain `DOCKER-FORWARD'
Flushing chain...</msg>
<var>${output}</var>
<arg>Utils.Run_Command_On_Controller</arg>
<arg>${member_ip}</arg>
<arg>${command}</arg>
<doc>Store current connection index, run keyword returning its result, restore connection in teardown.
Note that in order to avoid "got positional argument after named arguments", it is safer to use positional (not named) arguments on call.</doc>
<status status="PASS" start="2026-04-08T01:07:29.571065" elapsed="0.649106"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:07:30.220628" level="INFO">Flushing chain `INPUT'
Flushing chain `FORWARD'
Flushing chain `OUTPUT'
Flushing chain `DOCKER'
Flushing chain `DOCKER-BRIDGE'
Flushing chain `DOCKER-CT'
Flushing chain `DOCKER-FORWARD'
Flushing chain `DOCKER-INTERNAL'
Flushing chain `DOCKER-USER'</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:07:30.220356" elapsed="0.000321"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-08T01:07:30.220719" elapsed="0.000029"/>
</return>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-08T01:07:29.570182" elapsed="0.650710"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T01:07:29.569983" elapsed="0.650948"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-08T01:07:28.246750" elapsed="1.974218"/>
</for>
<arg>${command}</arg>
<doc>Cycle through indices (or all), run command on each.</doc>
<status status="PASS" start="2026-04-08T01:07:28.242589" elapsed="1.978437"/>
</kw>
<arg>ClusterManagement.Run_Bash_Command_On_List_Or_All</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:07:28.242109" elapsed="1.978966"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="DELETE On Session" owner="RequestsLibrary">
<msg time="2026-04-08T01:07:30.292922" level="INFO">DELETE Request : url=http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes 
 path_url=/rests/data/opendaylight-inventory:nodes 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Length': '0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-08T01:07:30.293029" level="INFO">DELETE Response : url=http://10.30.170.48:8181/rests/data/opendaylight-inventory:nodes 
 status=204, reason=No Content 
 headers={'Set-Cookie': 'JSESSIONID=node0xut5bqbz598lkrqn3q7ofcfe0.node0; Path=/rests; HttpOnly, rememberMe=deleteMe; Path=/rests; Max-Age=0; Expires=Tue, 07-Apr-2026 01:07:30 GMT; SameSite=lax', 'Expires': 'Thu, 01 Jan 1970 00:00:00 GMT'} 
 body=None 
 </msg>
<arg>session</arg>
<arg>url=${RFC8040_NODES_API}</arg>
<doc>Sends a DELETE request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-08T01:07:30.221602" elapsed="0.071600"/>
</kw>
<arg>RequestsLibrary.DELETE On Session</arg>
<arg>session</arg>
<arg>url=${RFC8040_NODES_API}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:07:30.221253" elapsed="0.072075"/>
</kw>
<kw name="Delete All Sessions" owner="RequestsLibrary">
<msg time="2026-04-08T01:07:30.293849" level="INFO">Deleting All Sessions</msg>
<doc>Removes all the session objects</doc>
<status status="PASS" start="2026-04-08T01:07:30.293682" elapsed="0.000661"/>
</kw>
<doc>Delete all sessions.</doc>
<status status="PASS" start="2026-04-08T01:07:28.241425" elapsed="2.053044"/>
</kw>
<doc>Switch connections and cluster are restarted.</doc>
<status status="FAIL" start="2026-04-08T00:58:14.093042" elapsed="556.201502"/>
</suite>
<suite id="s1-s5" name="010 Switch Disconnect" source="/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/EntityOwnership/010_Switch_Disconnect.robot">
<kw name="Start Suite" type="SETUP">
<kw name="Setup_Utils_For_Setup_And_Teardown" owner="SetupUtils">
<kw name="Do_Not_Fail_Fast_From_Now_On" owner="FailFast">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-08T01:07:30.496838" level="INFO">${SuiteFastFail} = False</msg>
<arg>${SuiteFastFail}</arg>
<arg>False</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-08T01:07:30.492291" elapsed="0.004606"/>
</kw>
<doc>Set suite to not fail fast.</doc>
<status status="PASS" start="2026-04-08T01:07:30.492033" elapsed="0.004936"/>
</kw>
<kw name="Setup_Karaf_Keywords" owner="KarafKeywords">
<kw name="ClusterManagement_Setup" owner="ClusterManagement">
<kw name="Get Variable Value" owner="BuiltIn">
<msg time="2026-04-08T01:07:30.501982" level="INFO">${already_done} = False</msg>
<var>${already_done}</var>
<arg>\${ClusterManagement__has_setup_run}</arg>
<arg>False</arg>
<doc>Returns variable value or ``default`` if the variable does not exist.</doc>
<status status="PASS" start="2026-04-08T01:07:30.498075" elapsed="0.003945"/>
</kw>
<if>
<branch type="IF" condition="${already_done}">
<return>
<status status="NOT RUN" start="2026-04-08T01:07:30.502321" elapsed="0.000024"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:07:30.502137" elapsed="0.000246"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:30.502104" elapsed="0.000310"/>
</if>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-08T01:07:30.503135" level="INFO">${ClusterManagement__has_setup_run} = True</msg>
<arg>\${ClusterManagement__has_setup_run}</arg>
<arg>True</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-08T01:07:30.502643" elapsed="0.000574"/>
</kw>
<kw name="Get Variable Value" owner="BuiltIn">
<msg time="2026-04-08T01:07:30.503891" level="INFO">${cluster_size} = 3</msg>
<var>${cluster_size}</var>
<arg>\${NUM_ODL_SYSTEM}</arg>
<arg>1</arg>
<doc>Returns variable value or ``default`` if the variable does not exist.</doc>
<status status="PASS" start="2026-04-08T01:07:30.503459" elapsed="0.000468"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Convert To Integer" owner="BuiltIn">
<arg>${cluster_size}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:07:30.504736" elapsed="0.000393"/>
</kw>
<msg time="2026-04-08T01:07:30.505289" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:07:30.505357" level="INFO">${possibly_int_of_members} = 3</msg>
<var>${status}</var>
<var>${possibly_int_of_members}</var>
<arg>BuiltIn.Convert_To_Integer</arg>
<arg>${cluster_size}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:07:30.504191" elapsed="0.001198"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:07:30.506152" level="INFO">${int_of_members} = 3</msg>
<var>${int_of_members}</var>
<arg>'${status}' != 'PASS'</arg>
<arg>${1}</arg>
<arg>${possibly_int_of_members}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:07:30.505640" elapsed="0.000571"/>
</kw>
<kw name="ClusterManagement__Compute_Derived_Variables" owner="ClusterManagement">
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:07:30.507752" level="INFO">@{member_index_list} = [ ]</msg>
<var>@{member_index_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:07:30.507382" elapsed="0.000407"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:07:30.508436" level="INFO">@{session_list} = [ ]</msg>
<var>@{session_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:07:30.508010" elapsed="0.000464"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-08T01:07:30.509151" level="INFO">&amp;{index_to_ip_mapping} = { }</msg>
<var>&amp;{index_to_ip_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-08T01:07:30.508708" elapsed="0.000503"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="ClusterManagement__Include_Member_Index" owner="ClusterManagement">
<kw name="Append To List" owner="Collections">
<arg>${member_index_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-08T01:07:30.513412" elapsed="0.000231"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:07:30.514135" level="INFO">${member_ip} = 10.30.170.48</msg>
<var>${member_ip}</var>
<arg>${ODL_SYSTEM_${index}_IP}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:07:30.513814" elapsed="0.000361"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${index_to_ip_mapping}</arg>
<arg>${index}</arg>
<arg>${member_ip}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:07:30.514344" elapsed="0.000295"/>
</kw>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:07:30.515532" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:07:30.515233" elapsed="0.000326"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T01:07:30.515604" elapsed="0.000038"/>
</return>
<msg time="2026-04-08T01:07:30.515763" level="INFO">${session_alias} = ClusterManagement__session_1</msg>
<var>${session_alias}</var>
<arg>member_index=${index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T01:07:30.514914" elapsed="0.000874"/>
</kw>
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-04-08T01:07:30.516415" level="INFO">Creating Session using : alias=ClusterManagement__session_1, url=http://10.30.170.48:8181, headers={},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x76b9e5dfa310&gt;, timeout=5, proxies=None, verify=False,                     debug=0 </msg>
<arg>${session_alias}</arg>
<arg>http://${member_ip}:${RESTCONFPORT}</arg>
<arg>auth=${AUTH}</arg>
<arg>timeout=${http_timeout}</arg>
<arg>max_retries=${http_retries}</arg>
<doc>Create Session: create a HTTP session to a server</doc>
<status status="PASS" start="2026-04-08T01:07:30.515954" elapsed="0.000596"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${session_list}</arg>
<arg>${session_alias}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-08T01:07:30.516724" elapsed="0.000189"/>
</kw>
<arg>${index}</arg>
<arg>${member_index_list}</arg>
<arg>${session_list}</arg>
<arg>${index_to_ip_mapping}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>http_retries=${http_retries}</arg>
<doc>Add a corresponding item based on index into the last three arguments.
Create the Http session whose alias is added to list.</doc>
<status status="PASS" start="2026-04-08T01:07:30.512804" elapsed="0.004168"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T01:07:30.512530" elapsed="0.004485"/>
</iter>
<iter>
<kw name="ClusterManagement__Include_Member_Index" owner="ClusterManagement">
<kw name="Append To List" owner="Collections">
<arg>${member_index_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-08T01:07:30.517861" elapsed="0.000185"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:07:30.518546" level="INFO">${member_ip} = 10.30.170.131</msg>
<var>${member_ip}</var>
<arg>${ODL_SYSTEM_${index}_IP}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:07:30.518226" elapsed="0.000346"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${index_to_ip_mapping}</arg>
<arg>${index}</arg>
<arg>${member_ip}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:07:30.518732" elapsed="0.000224"/>
</kw>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:07:30.519760" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:07:30.519469" elapsed="0.000317"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T01:07:30.519831" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T01:07:30.519978" level="INFO">${session_alias} = ClusterManagement__session_2</msg>
<var>${session_alias}</var>
<arg>member_index=${index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T01:07:30.519153" elapsed="0.000849"/>
</kw>
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-04-08T01:07:30.520601" level="INFO">Creating Session using : alias=ClusterManagement__session_2, url=http://10.30.170.131:8181, headers={},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x76b9e5e6a390&gt;, timeout=5, proxies=None, verify=False,                     debug=0 </msg>
<arg>${session_alias}</arg>
<arg>http://${member_ip}:${RESTCONFPORT}</arg>
<arg>auth=${AUTH}</arg>
<arg>timeout=${http_timeout}</arg>
<arg>max_retries=${http_retries}</arg>
<doc>Create Session: create a HTTP session to a server</doc>
<status status="PASS" start="2026-04-08T01:07:30.520178" elapsed="0.000526"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${session_list}</arg>
<arg>${session_alias}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-08T01:07:30.520874" elapsed="0.000185"/>
</kw>
<arg>${index}</arg>
<arg>${member_index_list}</arg>
<arg>${session_list}</arg>
<arg>${index_to_ip_mapping}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>http_retries=${http_retries}</arg>
<doc>Add a corresponding item based on index into the last three arguments.
Create the Http session whose alias is added to list.</doc>
<status status="PASS" start="2026-04-08T01:07:30.517302" elapsed="0.003815"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T01:07:30.517098" elapsed="0.004077"/>
</iter>
<iter>
<kw name="ClusterManagement__Include_Member_Index" owner="ClusterManagement">
<kw name="Append To List" owner="Collections">
<arg>${member_index_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-08T01:07:30.522002" elapsed="0.000201"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:07:30.522686" level="INFO">${member_ip} = 10.30.171.110</msg>
<var>${member_ip}</var>
<arg>${ODL_SYSTEM_${index}_IP}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:07:30.522369" elapsed="0.000342"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${index_to_ip_mapping}</arg>
<arg>${index}</arg>
<arg>${member_ip}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:07:30.522870" elapsed="0.000217"/>
</kw>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:07:30.524066" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:07:30.523772" elapsed="0.000320"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T01:07:30.524137" elapsed="0.000042"/>
</return>
<msg time="2026-04-08T01:07:30.524335" level="INFO">${session_alias} = ClusterManagement__session_3</msg>
<var>${session_alias}</var>
<arg>member_index=${index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T01:07:30.523302" elapsed="0.001063"/>
</kw>
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-04-08T01:07:30.524934" level="INFO">Creating Session using : alias=ClusterManagement__session_3, url=http://10.30.171.110:8181, headers={},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x76b9e6f27f10&gt;, timeout=5, proxies=None, verify=False,                     debug=0 </msg>
<arg>${session_alias}</arg>
<arg>http://${member_ip}:${RESTCONFPORT}</arg>
<arg>auth=${AUTH}</arg>
<arg>timeout=${http_timeout}</arg>
<arg>max_retries=${http_retries}</arg>
<doc>Create Session: create a HTTP session to a server</doc>
<status status="PASS" start="2026-04-08T01:07:30.524536" elapsed="0.000498"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${session_list}</arg>
<arg>${session_alias}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-08T01:07:30.525267" elapsed="0.000188"/>
</kw>
<arg>${index}</arg>
<arg>${member_index_list}</arg>
<arg>${session_list}</arg>
<arg>${index_to_ip_mapping}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>http_retries=${http_retries}</arg>
<doc>Add a corresponding item based on index into the last three arguments.
Create the Http session whose alias is added to list.</doc>
<status status="PASS" start="2026-04-08T01:07:30.521446" elapsed="0.004068"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T01:07:30.521258" elapsed="0.004299"/>
</iter>
<var>${index}</var>
<value>1</value>
<value>${int_of_members+1}</value>
<status status="PASS" start="2026-04-08T01:07:30.509288" elapsed="0.016299"/>
</for>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-08T01:07:30.526169" level="INFO">${ClusterManagement__member_index_list} = [1, 2, 3]</msg>
<arg>\${ClusterManagement__member_index_list}</arg>
<arg>${member_index_list}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-08T01:07:30.525758" elapsed="0.000455"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-08T01:07:30.526780" level="INFO">${ClusterManagement__index_to_ip_mapping} = {1: '10.30.170.48', 2: '10.30.170.131', 3: '10.30.171.110'}</msg>
<arg>\${ClusterManagement__index_to_ip_mapping}</arg>
<arg>${index_to_ip_mapping}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-08T01:07:30.526385" elapsed="0.000437"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-08T01:07:30.527392" level="INFO">${ClusterManagement__session_list} = ['ClusterManagement__session_1', 'ClusterManagement__session_2', 'ClusterManagement__session_3']</msg>
<arg>\${ClusterManagement__session_list}</arg>
<arg>${session_list}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-08T01:07:30.526991" elapsed="0.000444"/>
</kw>
<arg>int_of_members=${int_of_members}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>http_retries=${http_retries}</arg>
<doc>Construct index list, session list and IP mapping, publish them as suite variables.</doc>
<status status="PASS" start="2026-04-08T01:07:30.506721" elapsed="0.020770"/>
</kw>
<arg>http_timeout=${http_timeout}</arg>
<doc>Detect repeated call, or detect number of members and initialize derived suite variables.
Http sessions are created with parameters to not waste time when ODL is no accepting connections properly.</doc>
<status status="PASS" start="2026-04-08T01:07:30.497729" elapsed="0.029816"/>
</kw>
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:07:30.527722" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:07:30.527610" elapsed="0.000156"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:30.527591" elapsed="0.000197"/>
</if>
<kw name="Run_Bash_Command_On_List_Or_All" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:07:30.530838" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:07:30.530460" elapsed="0.000408"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:07:30.531354" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:07:30.531038" elapsed="0.000342"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T01:07:30.531424" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T01:07:30.531576" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T01:07:30.530112" elapsed="0.001488"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:07:30.532612" level="INFO">${member_ip} = 10.30.170.48</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:07:30.532348" elapsed="0.000290"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:07:30.533407" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

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

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T01:07:30.537585" elapsed="0.000748"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:07:30.539283" level="INFO">Attempting to execute command "iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save" on remote system "10.30.170.48" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:07:30.538606" elapsed="0.000816"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:07:30.540655" level="INFO">${conn_id} = 608</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T01:07:30.539705" elapsed="0.001001"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T01:07:30.542555" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T01:07:30.542734" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T01:07:30.542087" elapsed="0.000691"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:07:30.543134" elapsed="0.000483"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T01:07:30.544785" level="INFO">Logging into '10.30.170.48:22' as 'jenkins'.</msg>
<msg time="2026-04-08T01:07:30.851260" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 01:07:28 UTC 2026

  System load:  0.36               Processes:             121
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 7%                 IPv4 address for ens3: 10.30.170.48
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 01:07:28 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-0-builder-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T01:07:30.544464" elapsed="0.306938"/>
</kw>
<msg time="2026-04-08T01:07:30.851482" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:07:30.543979" elapsed="0.307675"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T01:07:30.541196" elapsed="0.310615"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T01:07:30.852790" level="INFO">Executing command 'iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save'.</msg>
<msg time="2026-04-08T01:07:30.865641" level="INFO">Command exited with return code 4.</msg>
<msg time="2026-04-08T01:07:30.866032" level="INFO">${stdout} = </msg>
<msg time="2026-04-08T01:07:30.866328" level="INFO">${stderr} = iptables v1.8.7 (nf_tables): unknown option "--dport"
Try `iptables -h' or 'iptables --help' for more information.
iptables-save v1.8.7 (nf_tables): Could not fetch rule set generation id: Permission ...</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T01:07:30.852258" elapsed="0.014196"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T01:07:30.867266" elapsed="0.001289"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:07:30.871705" level="INFO">iptables v1.8.7 (nf_tables): unknown option "--dport"
Try `iptables -h' or 'iptables --help' for more information.
iptables-save v1.8.7 (nf_tables): Could not fetch rule set generation id: Permission denied (you must be root)</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:07:30.870322" elapsed="0.001637"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T01:07:30.873045" elapsed="0.000081"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:07:30.872552" elapsed="0.000715"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:30.872493" elapsed="0.000830"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T01:07:30.873780" elapsed="0.000093"/>
</return>
<status status="PASS" start="2026-04-08T01:07:30.873442" elapsed="0.000552"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:30.873418" elapsed="0.000633"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T01:07:30.874141" elapsed="0.000041"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:07:30.879078" elapsed="0.000704"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T01:07:30.880401" elapsed="0.000422"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T01:07:30.881252" elapsed="0.000343"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:07:30.874873" elapsed="0.006822"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T01:07:30.535374" elapsed="0.346582"/>
</kw>
<msg time="2026-04-08T01:07:30.882034" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:07:30.534728" elapsed="0.347381"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-08T01:07:30.534240" elapsed="0.348073"/>
</kw>
<msg time="2026-04-08T01:07:30.882371" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:07:30.533700" elapsed="0.348734"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:07:30.885764" elapsed="0.000308"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T01:07:30.886262" elapsed="0.000145"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T01:07:30.886566" elapsed="0.000096"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:07:30.882851" elapsed="0.003863"/>
</kw>
<msg time="2026-04-08T01:07:30.886805" level="INFO">${output} = </msg>
<var>${output}</var>
<arg>Utils.Run_Command_On_Controller</arg>
<arg>${member_ip}</arg>
<arg>${command}</arg>
<doc>Store current connection index, run keyword returning its result, restore connection in teardown.
Note that in order to avoid "got positional argument after named arguments", it is safer to use positional (not named) arguments on call.</doc>
<status status="PASS" start="2026-04-08T01:07:30.532864" elapsed="0.353967"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:07:30.887316" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:07:30.887040" elapsed="0.000317"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-08T01:07:30.887399" elapsed="0.000029"/>
</return>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-08T01:07:30.531958" elapsed="0.355564"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T01:07:30.531775" elapsed="0.355784"/>
</iter>
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:07:30.888538" level="INFO">${member_ip} = 10.30.170.131</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:07:30.888269" elapsed="0.000294"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:07:30.889297" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

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

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T01:07:30.893348" elapsed="0.000783"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:07:30.895127" level="INFO">Attempting to execute command "iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save" on remote system "10.30.170.131" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:07:30.894433" elapsed="0.000838"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:07:30.896573" level="INFO">${conn_id} = 611</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T01:07:30.895566" elapsed="0.001060"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T01:07:30.898470" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T01:07:30.898661" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T01:07:30.898085" elapsed="0.000625"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:07:30.899113" elapsed="0.000663"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T01:07:30.901206" level="INFO">Logging into '10.30.170.131:22' as 'jenkins'.</msg>
<msg time="2026-04-08T01:07:31.212077" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 01:07:29 UTC 2026

  System load:  1.1                Processes:             122
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 7%                 IPv4 address for ens3: 10.30.170.131
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 01:07:29 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-0-builder-1 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T01:07:30.900870" elapsed="0.311463"/>
</kw>
<msg time="2026-04-08T01:07:31.212413" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:07:30.900398" elapsed="0.312162"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T01:07:30.897104" elapsed="0.315598"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T01:07:31.213556" level="INFO">Executing command 'iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save'.</msg>
<msg time="2026-04-08T01:07:31.225846" level="INFO">Command exited with return code 4.</msg>
<msg time="2026-04-08T01:07:31.226251" level="INFO">${stdout} = </msg>
<msg time="2026-04-08T01:07:31.226483" level="INFO">${stderr} = iptables v1.8.7 (nf_tables): unknown option "--dport"
Try `iptables -h' or 'iptables --help' for more information.
iptables-save v1.8.7 (nf_tables): Could not fetch rule set generation id: Permission ...</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T01:07:31.213067" elapsed="0.013550"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T01:07:31.227364" elapsed="0.001148"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:07:31.231494" level="INFO">iptables v1.8.7 (nf_tables): unknown option "--dport"
Try `iptables -h' or 'iptables --help' for more information.
iptables-save v1.8.7 (nf_tables): Could not fetch rule set generation id: Permission denied (you must be root)</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:07:31.230131" elapsed="0.001623"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T01:07:31.232794" elapsed="0.000113"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:07:31.232251" elapsed="0.000823"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:31.232122" elapsed="0.001064"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T01:07:31.233871" elapsed="0.000135"/>
</return>
<status status="PASS" start="2026-04-08T01:07:31.233376" elapsed="0.000835"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:31.233338" elapsed="0.000965"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T01:07:31.234438" elapsed="0.000035"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:07:31.239031" elapsed="0.000469"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T01:07:31.239821" elapsed="0.000283"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T01:07:31.240456" elapsed="0.000222"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:07:31.235515" elapsed="0.005233"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T01:07:30.891260" elapsed="0.349663"/>
</kw>
<msg time="2026-04-08T01:07:31.240979" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:07:30.890609" elapsed="0.350422"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-08T01:07:30.890104" elapsed="0.351007"/>
</kw>
<msg time="2026-04-08T01:07:31.241151" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:07:30.889584" elapsed="0.351629"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:07:31.243825" elapsed="0.000309"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T01:07:31.244366" elapsed="0.000144"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T01:07:31.244666" elapsed="0.000096"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:07:31.241510" elapsed="0.003302"/>
</kw>
<msg time="2026-04-08T01:07:31.244902" level="INFO">${output} = </msg>
<var>${output}</var>
<arg>Utils.Run_Command_On_Controller</arg>
<arg>${member_ip}</arg>
<arg>${command}</arg>
<doc>Store current connection index, run keyword returning its result, restore connection in teardown.
Note that in order to avoid "got positional argument after named arguments", it is safer to use positional (not named) arguments on call.</doc>
<status status="PASS" start="2026-04-08T01:07:30.888785" elapsed="0.356142"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:07:31.245387" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:07:31.245127" elapsed="0.000302"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-08T01:07:31.245470" elapsed="0.000028"/>
</return>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-08T01:07:30.887837" elapsed="0.357754"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T01:07:30.887650" elapsed="0.358018"/>
</iter>
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:07:31.246606" level="INFO">${member_ip} = 10.30.171.110</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:07:31.246337" elapsed="0.000295"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:07:31.247366" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

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

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T01:07:31.251433" elapsed="0.000762"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:07:31.253112" level="INFO">Attempting to execute command "iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save" on remote system "10.30.171.110" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:07:31.252468" elapsed="0.000765"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:07:31.254391" level="INFO">${conn_id} = 614</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T01:07:31.253508" elapsed="0.000933"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T01:07:31.256184" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T01:07:31.256362" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T01:07:31.255809" elapsed="0.000596"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:07:31.256752" elapsed="0.000547"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T01:07:31.258465" level="INFO">Logging into '10.30.171.110:22' as 'jenkins'.</msg>
<msg time="2026-04-08T01:07:31.582970" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 01:07:29 UTC 2026

  System load:  1.16               Processes:             127
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 7%                 IPv4 address for ens3: 10.30.171.110
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 01:07:30 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T01:07:31.258109" elapsed="0.325015"/>
</kw>
<msg time="2026-04-08T01:07:31.583246" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:07:31.257666" elapsed="0.325801"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T01:07:31.254881" elapsed="0.328794"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T01:07:31.584680" level="INFO">Executing command 'iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save'.</msg>
<msg time="2026-04-08T01:07:31.597227" level="INFO">Command exited with return code 4.</msg>
<msg time="2026-04-08T01:07:31.597605" level="INFO">${stdout} = </msg>
<msg time="2026-04-08T01:07:31.597856" level="INFO">${stderr} = iptables v1.8.7 (nf_tables): unknown option "--dport"
Try `iptables -h' or 'iptables --help' for more information.
iptables-save v1.8.7 (nf_tables): Could not fetch rule set generation id: Permission ...</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T01:07:31.584136" elapsed="0.013836"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T01:07:31.598766" elapsed="0.001246"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:07:31.603152" level="INFO">iptables v1.8.7 (nf_tables): unknown option "--dport"
Try `iptables -h' or 'iptables --help' for more information.
iptables-save v1.8.7 (nf_tables): Could not fetch rule set generation id: Permission denied (you must be root)</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:07:31.601792" elapsed="0.001792"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T01:07:31.604360" elapsed="0.000079"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:07:31.603955" elapsed="0.000603"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:31.603919" elapsed="0.000694"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T01:07:31.605072" elapsed="0.000113"/>
</return>
<status status="PASS" start="2026-04-08T01:07:31.604732" elapsed="0.000576"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:31.604710" elapsed="0.000655"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T01:07:31.605452" elapsed="0.000022"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:07:31.610417" elapsed="0.000655"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T01:07:31.611549" elapsed="0.000420"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T01:07:31.612443" elapsed="0.000339"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:07:31.606246" elapsed="0.006636"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T01:07:31.249583" elapsed="0.363565"/>
</kw>
<msg time="2026-04-08T01:07:31.613374" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:07:31.248957" elapsed="0.364493"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-08T01:07:31.248462" elapsed="0.365098"/>
</kw>
<msg time="2026-04-08T01:07:31.613617" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:07:31.247654" elapsed="0.366026"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:07:31.616997" elapsed="0.000478"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T01:07:31.617648" elapsed="0.000141"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T01:07:31.617945" elapsed="0.000094"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:07:31.614095" elapsed="0.003995"/>
</kw>
<msg time="2026-04-08T01:07:31.618198" level="INFO">${output} = </msg>
<var>${output}</var>
<arg>Utils.Run_Command_On_Controller</arg>
<arg>${member_ip}</arg>
<arg>${command}</arg>
<doc>Store current connection index, run keyword returning its result, restore connection in teardown.
Note that in order to avoid "got positional argument after named arguments", it is safer to use positional (not named) arguments on call.</doc>
<status status="PASS" start="2026-04-08T01:07:31.246855" elapsed="0.371370"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:07:31.618675" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:07:31.618431" elapsed="0.000285"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-08T01:07:31.618758" elapsed="0.000028"/>
</return>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-08T01:07:31.245953" elapsed="0.372927"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T01:07:31.245763" elapsed="0.373154"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-08T01:07:30.531651" elapsed="1.087302"/>
</for>
<arg>iptables -I INPUT -p tcp --dport ${KARAF_SHELL_PORT} -j ACCEPT; iptables-save</arg>
<doc>Cycle through indices (or all), run command on each.</doc>
<status status="PASS" start="2026-04-08T01:07:30.528018" elapsed="1.090992"/>
</kw>
<kw name="Comment" owner="BuiltIn">
<arg>First connections to Karaf console may fail, so WUKS is used. TODO: Track as a Bug.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:07:31.619192" elapsed="0.000225"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:07:31.633346" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:07:31.633234" elapsed="0.000158"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:31.633214" elapsed="0.000201"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:07:31.633712" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T01:07:31.633579" elapsed="0.000263"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:07:31.634278" level="INFO">{}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:07:31.634003" elapsed="0.000319"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:07:31.634790" level="INFO">1</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:07:31.634547" elapsed="0.000286"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:07:31.635644" level="FAIL">Dictionary does not contain key '1'.</msg>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="FAIL" start="2026-04-08T01:07:31.635413" elapsed="0.000406">Dictionary does not contain key '1'.</status>
</kw>
<msg time="2026-04-08T01:07:31.635927" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:07:31.635973" level="INFO">${old_connection_index} = Dictionary does not contain key '1'.</msg>
<var>${status}</var>
<var>${old_connection_index}</var>
<arg>Get From Dictionary</arg>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:07:31.635001" elapsed="0.000995"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='PASS'">
<kw name="Run Keywords" owner="BuiltIn">
<arg>SSHLibrary.Switch_Connection</arg>
<arg>${old_connection_index}</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Executes all the given keywords in a sequence.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:31.636318" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:07:31.636072" elapsed="0.000320"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:31.636053" elapsed="0.000362"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:07:31.637178" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:07:31.636899" elapsed="0.000306"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:07:31.637252" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T01:07:31.637398" level="INFO">${odl_ip} = 10.30.170.48</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:07:31.636622" elapsed="0.000799"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${odl_ip}</arg>
<arg>port=${KARAF_SHELL_PORT}</arg>
<arg>prompt=${KARAF_PROMPT_LOGIN}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T01:07:31.637581" elapsed="0.000397"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:07:31.638324" level="INFO">index=617
host=10.30.170.48
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-08T01:07:31.638423" level="INFO">${karaf_connection_object} = index=617
host=10.30.170.48
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_err...</msg>
<var>${karaf_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T01:07:31.638153" elapsed="0.000296"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<arg>${karaf_connection_object.index}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:07:31.638605" elapsed="0.003630"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-08T01:07:31.642830" level="INFO">Logging into '10.30.170.48:8101' as 'karaf'.</msg>
<msg time="2026-04-08T01:07:31.865201" level="INFO">Read output: [33m                                                                                           
[33m    ________                       ________                .__  .__       .__     __       
[33m    \_____  \ ______   ____   ____ \______ \ _____  ___.__.|  | |__| ____ |  |___/  |_     
[33m     /   |   \\____ \_/ __ \ /    \ |    |  \\__  \&lt;   |  ||  | |  |/ ___\|  |  \   __\    
[33m    /    |    \  |_&gt; &gt;  ___/|   |  \|    `   \/ __ \\___  ||  |_|  / /_/  &gt;   Y  \  |      
[33m    \_______  /   __/ \___  &gt;___|  /_______  (____  / ____||____/__\___  /|___|  /__|      
[33m            \/|__|        \/     \/        \/     \/\/            /_____/      \/          
[33m                                                                                           

Hit '[1m&lt;tab&gt;[0m' for a list of available commands
and '[1m[cmd] --help[0m' for help on a specific command.
Hit '[1m&lt;ctrl-d&gt;[0m' or type '[1msystem:shutdown[0m' or '[1mlogout[0m' to shutdown OpenDaylight.

[?1h=[90m~[0m                                                                                [?2004hopendaylight-user</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="PASS" start="2026-04-08T01:07:31.642411" elapsed="0.222954"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:07:31.869009" elapsed="0.000441"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T01:07:31.869633" elapsed="0.000172"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T01:07:31.869966" elapsed="0.000106"/>
</kw>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:07:31.866620" elapsed="0.003508"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T01:07:31.865849" elapsed="0.004358"/>
</kw>
<arg>member_index=${index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for ${member_index},
close the previous connection. In any case create a new connection
to karaf console for ${member_index}, set correct prompt set and login to karaf console.
Store connection index for ${member_index} and restore the previous active connection.</doc>
<status status="PASS" start="2026-04-08T01:07:31.632938" elapsed="0.237345"/>
</kw>
<arg>3s</arg>
<arg>1s</arg>
<arg>Open_Controller_Karaf_Console_On_Background</arg>
<arg>member_index=${index}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-08T01:07:31.620167" elapsed="0.250186"/>
</kw>
<arg>BuiltIn.Wait_Until_Keyword_Succeeds</arg>
<arg>3s</arg>
<arg>1s</arg>
<arg>Open_Controller_Karaf_Console_On_Background</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:07:31.619773" elapsed="0.250635"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T01:07:31.619624" elapsed="0.250896"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:07:31.884248" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:07:31.884111" elapsed="0.000188"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:31.884087" elapsed="0.000235"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:07:31.884625" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T01:07:31.884488" elapsed="0.000272"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:07:31.885206" level="INFO">{1: 617}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:07:31.884928" elapsed="0.000323"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:07:31.885658" level="INFO">2</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:07:31.885412" elapsed="0.000290"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:07:31.886506" level="FAIL">Dictionary does not contain key '2'.</msg>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="FAIL" start="2026-04-08T01:07:31.886275" elapsed="0.000338">Dictionary does not contain key '2'.</status>
</kw>
<msg time="2026-04-08T01:07:31.886718" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:07:31.886763" level="INFO">${old_connection_index} = Dictionary does not contain key '2'.</msg>
<var>${status}</var>
<var>${old_connection_index}</var>
<arg>Get From Dictionary</arg>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:07:31.885868" elapsed="0.000918"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='PASS'">
<kw name="Run Keywords" owner="BuiltIn">
<arg>SSHLibrary.Switch_Connection</arg>
<arg>${old_connection_index}</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Executes all the given keywords in a sequence.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:31.887093" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:07:31.886862" elapsed="0.000343"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:31.886843" elapsed="0.000388"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:07:31.888214" level="INFO">${ip_address} = 10.30.170.131</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:07:31.887927" elapsed="0.000313"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:07:31.888288" elapsed="0.000033"/>
</return>
<msg time="2026-04-08T01:07:31.888443" level="INFO">${odl_ip} = 10.30.170.131</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:07:31.887447" elapsed="0.001020"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${odl_ip}</arg>
<arg>port=${KARAF_SHELL_PORT}</arg>
<arg>prompt=${KARAF_PROMPT_LOGIN}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T01:07:31.888630" elapsed="0.000403"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:07:31.889384" level="INFO">index=619
host=10.30.170.131
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-08T01:07:31.889482" level="INFO">${karaf_connection_object} = index=619
host=10.30.170.131
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_er...</msg>
<var>${karaf_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T01:07:31.889226" elapsed="0.000282"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<arg>${karaf_connection_object.index}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:07:31.889665" elapsed="0.002153"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-08T01:07:31.892263" level="INFO">Logging into '10.30.170.131:8101' as 'karaf'.</msg>
<msg time="2026-04-08T01:07:32.081051" level="INFO">Read output: [33m                                                                                           
[33m    ________                       ________                .__  .__       .__     __       
[33m    \_____  \ ______   ____   ____ \______ \ _____  ___.__.|  | |__| ____ |  |___/  |_     
[33m     /   |   \\____ \_/ __ \ /    \ |    |  \\__  \&lt;   |  ||  | |  |/ ___\|  |  \   __\    
[33m    /    |    \  |_&gt; &gt;  ___/|   |  \|    `   \/ __ \\___  ||  |_|  / /_/  &gt;   Y  \  |      
[33m    \_______  /   __/ \___  &gt;___|  /_______  (____  / ____||____/__\___  /|___|  /__|      
[33m            \/|__|        \/     \/        \/     \/\/            /_____/      \/          
[33m                                                                                           

Hit '[1m&lt;tab&gt;[0m' for a list of available commands
and '[1m[cmd] --help[0m' for help on a specific command.
Hit '[1m&lt;ctrl-d&gt;[0m' or type '[1msystem:shutdown[0m' or '[1mlogout[0m' to shutdown OpenDaylight.

[?1h=[90m~[0m                                                                                [?2004hopendaylight-user</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="PASS" start="2026-04-08T01:07:31.891991" elapsed="0.189218"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:07:32.084787" elapsed="0.000435"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T01:07:32.085479" elapsed="0.000170"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T01:07:32.085811" elapsed="0.000105"/>
</kw>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:07:32.082416" elapsed="0.003555"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T01:07:32.081670" elapsed="0.004357"/>
</kw>
<arg>member_index=${index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for ${member_index},
close the previous connection. In any case create a new connection
to karaf console for ${member_index}, set correct prompt set and login to karaf console.
Store connection index for ${member_index} and restore the previous active connection.</doc>
<status status="PASS" start="2026-04-08T01:07:31.883816" elapsed="0.202280"/>
</kw>
<arg>3s</arg>
<arg>1s</arg>
<arg>Open_Controller_Karaf_Console_On_Background</arg>
<arg>member_index=${index}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-08T01:07:31.871198" elapsed="0.214979"/>
</kw>
<arg>BuiltIn.Wait_Until_Keyword_Succeeds</arg>
<arg>3s</arg>
<arg>1s</arg>
<arg>Open_Controller_Karaf_Console_On_Background</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:07:31.870784" elapsed="0.215452"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T01:07:31.870626" elapsed="0.215653"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:07:32.099626" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:07:32.099508" elapsed="0.000169"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:32.099484" elapsed="0.000215"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:07:32.100000" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T01:07:32.099862" elapsed="0.000271"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:07:32.100576" level="INFO">{1: 617, 2: 619}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:07:32.100313" elapsed="0.000306"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:07:32.101021" level="INFO">3</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:07:32.100781" elapsed="0.000288"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:07:32.101911" level="FAIL">Dictionary does not contain key '3'.</msg>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="FAIL" start="2026-04-08T01:07:32.101677" elapsed="0.000366">Dictionary does not contain key '3'.</status>
</kw>
<msg time="2026-04-08T01:07:32.102178" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:07:32.102225" level="INFO">${old_connection_index} = Dictionary does not contain key '3'.</msg>
<var>${status}</var>
<var>${old_connection_index}</var>
<arg>Get From Dictionary</arg>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:07:32.101284" elapsed="0.000964"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='PASS'">
<kw name="Run Keywords" owner="BuiltIn">
<arg>SSHLibrary.Switch_Connection</arg>
<arg>${old_connection_index}</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Executes all the given keywords in a sequence.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:32.102556" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:07:32.102324" elapsed="0.000305"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:32.102305" elapsed="0.000347"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:07:32.103418" level="INFO">${ip_address} = 10.30.171.110</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:07:32.103137" elapsed="0.000307"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:07:32.103491" elapsed="0.000032"/>
</return>
<msg time="2026-04-08T01:07:32.103644" level="INFO">${odl_ip} = 10.30.171.110</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:07:32.102857" elapsed="0.000813"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${odl_ip}</arg>
<arg>port=${KARAF_SHELL_PORT}</arg>
<arg>prompt=${KARAF_PROMPT_LOGIN}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T01:07:32.103848" elapsed="0.000419"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:07:32.104600" level="INFO">index=621
host=10.30.171.110
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-08T01:07:32.104700" level="INFO">${karaf_connection_object} = index=621
host=10.30.171.110
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_er...</msg>
<var>${karaf_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T01:07:32.104446" elapsed="0.000281"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<arg>${karaf_connection_object.index}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:07:32.104884" elapsed="0.002225"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-08T01:07:32.107699" level="INFO">Logging into '10.30.171.110:8101' as 'karaf'.</msg>
<msg time="2026-04-08T01:07:32.301012" level="INFO">Read output: [33m                                                                                           
[33m    ________                       ________                .__  .__       .__     __       
[33m    \_____  \ ______   ____   ____ \______ \ _____  ___.__.|  | |__| ____ |  |___/  |_     
[33m     /   |   \\____ \_/ __ \ /    \ |    |  \\__  \&lt;   |  ||  | |  |/ ___\|  |  \   __\    
[33m    /    |    \  |_&gt; &gt;  ___/|   |  \|    `   \/ __ \\___  ||  |_|  / /_/  &gt;   Y  \  |      
[33m    \_______  /   __/ \___  &gt;___|  /_______  (____  / ____||____/__\___  /|___|  /__|      
[33m            \/|__|        \/     \/        \/     \/\/            /_____/      \/          
[33m                                                                                           

Hit '[1m&lt;tab&gt;[0m' for a list of available commands
and '[1m[cmd] --help[0m' for help on a specific command.
Hit '[1m&lt;ctrl-d&gt;[0m' or type '[1msystem:shutdown[0m' or '[1mlogout[0m' to shutdown OpenDaylight.

[?1h=[90m~[0m                                                                                [?2004hopendaylight-user</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="PASS" start="2026-04-08T01:07:32.107326" elapsed="0.193859"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:07:32.304907" elapsed="0.000424"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T01:07:32.305522" elapsed="0.000173"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T01:07:32.305857" elapsed="0.000104"/>
</kw>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:07:32.302382" elapsed="0.003635"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T01:07:32.301669" elapsed="0.004397"/>
</kw>
<arg>member_index=${index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for ${member_index},
close the previous connection. In any case create a new connection
to karaf console for ${member_index}, set correct prompt set and login to karaf console.
Store connection index for ${member_index} and restore the previous active connection.</doc>
<status status="PASS" start="2026-04-08T01:07:32.099215" elapsed="0.206906"/>
</kw>
<arg>3s</arg>
<arg>1s</arg>
<arg>Open_Controller_Karaf_Console_On_Background</arg>
<arg>member_index=${index}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-08T01:07:32.086945" elapsed="0.219246"/>
</kw>
<arg>BuiltIn.Wait_Until_Keyword_Succeeds</arg>
<arg>3s</arg>
<arg>1s</arg>
<arg>Open_Controller_Karaf_Console_On_Background</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:07:32.086542" elapsed="0.219706"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T01:07:32.086384" elapsed="0.219918"/>
</iter>
<var>${index}</var>
<value>@{ClusterManagement__member_index_list}</value>
<status status="PASS" start="2026-04-08T01:07:31.619475" elapsed="0.686876"/>
</for>
<arg>http_timeout=${http_timeout}</arg>
<doc>Initialize ClusterManagement. Open ssh karaf connections to each ODL.</doc>
<status status="PASS" start="2026-04-08T01:07:30.497284" elapsed="1.809151"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Test_Suite_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:07:32.309573" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:07:32.309453" elapsed="0.000173"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:32.309431" elapsed="0.000224"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:07:32.314280" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:07:32.314171" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:32.314141" elapsed="0.000205"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:07:32.315321" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:07:32.314917" elapsed="0.000431"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:07:32.315840" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:07:32.315537" elapsed="0.000329"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T01:07:32.315910" elapsed="0.000033"/>
</return>
<msg time="2026-04-08T01:07:32.316067" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T01:07:32.314582" elapsed="0.001510"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:07:32.321330" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:07:32.321221" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:32.321201" elapsed="0.000196"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:07:32.322645" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:07:32.322502" elapsed="0.000190"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:32.322483" elapsed="0.000231"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:07:32.323233" level="INFO">${karaf_connection_index} = 617</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:07:32.322876" elapsed="0.000385"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:07:32.323850" level="INFO">${current_connection_index} = None</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:07:32.323600" elapsed="0.000277"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:07:32.370016" level="INFO">@root&gt;log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "s "u "i "t "e "[C "/ "w "/ "w "o "r "k "s "p "a "c "e "/ "o "p "e "[78Cn "[A[78Cf</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:07:32.324597" elapsed="0.045643"/>
</kw>
<msg time="2026-04-08T01:07:32.370415" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T01:07:32.370463" level="INFO">${message_write} = @root&gt;log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "s "u "i "t "e "[C "/ "w "/ "w "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:07:32.324051" elapsed="0.046450"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T01:07:32.448947" level="INFO">"l "o "w "p "l "u "g "i "n "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "o "n "l "y "- "v "a "n "a "d "i "u "m "/ "t "e "s "t "/ "c "s "i "t "/ "s "u "i "t "e "s "/ "o "p "e "n "f "l "o "w "p "l "u "g "i "n "/ "[78CE "[A[78Cn
 "t "i "t "y "O "w "n "e "r "s "h "i "p "/ "0 "1 "0 "_ "S "w "i "t "c "h "_ "D "i "s "c "o "n "n "e "c "t ". "r "o "b "o "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T01:07:32.371444" elapsed="0.077747"/>
</kw>
<msg time="2026-04-08T01:07:32.449362" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T01:07:32.449409" level="INFO">${message_wait} =  "l "o "w "p "l "u "g "i "n "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "o "n "l "y "- "v "a "n ...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:07:32.370731" elapsed="0.078716"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:32.449928" elapsed="0.000064"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:07:32.449564" elapsed="0.000526"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:32.449530" elapsed="0.000591"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:07:32.450871" level="INFO"> "l "o "w "p "l "u "g "i "n "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "o "n "l "y "- "v "a "n "a "d "i "u "m "/ "t "e "s "t "/ "c "s "i "t "/ "s "u "i "t "e "s "/ "o "p "e "n "f "l "o "w "p "l "u "g "i "n "/ "[78CE "[A[78Cn
 "t "i "t "y "O "w "n "e "r "s "h "i "p "/ "0 "1 "0 "_ "S "w "i "t "c "h "_ "D "i "s "c "o "n "n "e "c "t ". "r "o "b "o "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:07:32.450406" elapsed="0.000565"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:32.451323" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:07:32.451043" elapsed="0.000427"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:32.451023" elapsed="0.000473"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T01:07:32.451535" elapsed="0.000041"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:07:32.454124" elapsed="0.000724"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T01:07:32.455232" elapsed="0.000304"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T01:07:32.455878" elapsed="0.000236"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:07:32.453274" elapsed="0.002947"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T01:07:32.451941" elapsed="0.004416"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T01:07:32.322206" elapsed="0.134256"/>
</kw>
<msg time="2026-04-08T01:07:32.456556" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:07:32.456600" level="INFO">${message} =  "l "o "w "p "l "u "g "i "n "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "o "n "l "y "- "v "a "n ...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:07:32.321558" elapsed="0.135080"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T01:07:32.456833" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-08T01:07:32.456722" elapsed="0.000172"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:32.456701" elapsed="0.000217"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:32.457353" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:32.457792" elapsed="0.000086"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T01:07:32.457931" elapsed="0.000020"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T01:07:32.320904" elapsed="0.137146"/>
</kw>
<msg time="2026-04-08T01:07:32.458142" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:07:32.458333" level="INFO">${output} =  "l "o "w "p "l "u "g "i "n "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "o "n "l "y "- "v "a "n ...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:07:32.316494" elapsed="0.141879"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:32.458746" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:07:32.458479" elapsed="0.000321"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:32.458435" elapsed="0.000388"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T01:07:32.316342" elapsed="0.142505"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:07:32.464123" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:07:32.463998" elapsed="0.000187"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:32.463979" elapsed="0.000229"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:07:32.465422" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:07:32.465292" elapsed="0.000175"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:32.465273" elapsed="0.000216"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:07:32.465978" level="INFO">${karaf_connection_index} = 619</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:07:32.465651" elapsed="0.000355"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:07:32.466547" level="INFO">${current_connection_index} = None</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:07:32.466290" elapsed="0.000290"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:07:32.507729" level="INFO">@root&gt;log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "s "u "i "t "e "[C "/ "w "/ "w "o "r "k "s "p "a "c "e "/ "o "p "e "[78Cn "[A[78Cf</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:07:32.467381" elapsed="0.040546"/>
</kw>
<msg time="2026-04-08T01:07:32.508104" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T01:07:32.508152" level="INFO">${message_write} = @root&gt;log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "s "u "i "t "e "[C "/ "w "/ "w "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:07:32.466801" elapsed="0.041499"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T01:07:32.583775" level="INFO">"l "o "w "p "l "u "g "i "n "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "o "n "l "y "- "v "a "n "a "d "i "u "m "/ "t "e "s "t "/ "c "s "i "t "/ "s "u "i "t "e "s "/ "o "p "e "n "f "l "o "w "p "l "u "g "i "n "/ "[78CE "[A[78Cn
 "t "i "t "y "O "w "n "e "r "s "h "i "p "/ "0 "1 "0 "_ "S "w "i "t "c "h "_ "D "i "s "c "o "n "n "e "c "t ". "r "o "b "o "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T01:07:32.509234" elapsed="0.074744"/>
</kw>
<msg time="2026-04-08T01:07:32.584330" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T01:07:32.584377" level="INFO">${message_wait} =  "l "o "w "p "l "u "g "i "n "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "o "n "l "y "- "v "a "n ...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:07:32.508570" elapsed="0.075844"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:32.584859" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:07:32.584524" elapsed="0.000497"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:32.584492" elapsed="0.000559"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:07:32.585729" level="INFO"> "l "o "w "p "l "u "g "i "n "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "o "n "l "y "- "v "a "n "a "d "i "u "m "/ "t "e "s "t "/ "c "s "i "t "/ "s "u "i "t "e "s "/ "o "p "e "n "f "l "o "w "p "l "u "g "i "n "/ "[78CE "[A[78Cn
 "t "i "t "y "O "w "n "e "r "s "h "i "p "/ "0 "1 "0 "_ "S "w "i "t "c "h "_ "D "i "s "c "o "n "n "e "c "t ". "r "o "b "o "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:07:32.585318" elapsed="0.000504"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:32.586138" elapsed="0.000064"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:07:32.585891" elapsed="0.000409"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:32.585871" elapsed="0.000455"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T01:07:32.586365" elapsed="0.000038"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:07:32.588518" elapsed="0.000462"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T01:07:32.589574" elapsed="0.000298"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T01:07:32.590232" elapsed="0.000451"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:07:32.587714" elapsed="0.003058"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T01:07:32.586717" elapsed="0.004189"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T01:07:32.464988" elapsed="0.126021"/>
</kw>
<msg time="2026-04-08T01:07:32.591101" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:07:32.591145" level="INFO">${message} =  "l "o "w "p "l "u "g "i "n "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "o "n "l "y "- "v "a "n ...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:07:32.464370" elapsed="0.126827"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T01:07:32.591383" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-08T01:07:32.591276" elapsed="0.000165"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:32.591258" elapsed="0.000207"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 2,
close the previous connection. In any case create a new connection
to karaf console for 2, set correct prompt set and login to karaf console.
Store connection index for 2 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:32.591873" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:32.592233" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T01:07:32.592304" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T01:07:32.463703" elapsed="0.128705"/>
</kw>
<msg time="2026-04-08T01:07:32.592500" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:07:32.592543" level="INFO">${output} =  "l "o "w "p "l "u "g "i "n "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "o "n "l "y "- "v "a "n ...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:07:32.459133" elapsed="0.133446"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:32.592937" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:07:32.592680" elapsed="0.000310"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:32.592663" elapsed="0.000350"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T01:07:32.458980" elapsed="0.134056"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:07:32.598369" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:07:32.598263" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:32.598245" elapsed="0.000192"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:07:32.599626" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:07:32.599498" elapsed="0.000173"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:32.599480" elapsed="0.000214"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:07:32.600184" level="INFO">${karaf_connection_index} = 621</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:07:32.599850" elapsed="0.000362"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:07:32.600637" level="INFO">${current_connection_index} = None</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:07:32.600393" elapsed="0.000270"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:07:32.639720" level="INFO">@root&gt;log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "s "u "i "t "e "[C "/ "w "/ "w "o "r "k "s "p "a "c "e "/ "o "p "e "[78Cn "[A[78Cf</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:07:32.601428" elapsed="0.038429"/>
</kw>
<msg time="2026-04-08T01:07:32.639987" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T01:07:32.640033" level="INFO">${message_write} = @root&gt;log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "s "u "i "t "e "[C "/ "w "/ "w "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:07:32.600836" elapsed="0.039235"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T01:07:32.726663" level="INFO">"l "o "w "p "l "u "g "i "n "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "o "n "l "y "- "v "a "n "a "d "i "u "m "/ "t "e "s "t "/ "c "s "i "t "/ "s "u "i "t "e "s "/ "o "p "e "n "f "l "o "w "p "l "u "g "i "n "/ "[78CE "[A[78Cn
 "t "i "t "y "O "w "n "e "r "s "h "i "p "/ "0 "1 "0 "_ "S "w "i "t "c "h "_ "D "i "s "c "o "n "n "e "c "t ". "r "o "b "o "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T01:07:32.640781" elapsed="0.086306"/>
</kw>
<msg time="2026-04-08T01:07:32.727270" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T01:07:32.727318" level="INFO">${message_wait} =  "l "o "w "p "l "u "g "i "n "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "o "n "l "y "- "v "a "n ...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:07:32.640274" elapsed="0.087082"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:32.727765" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:07:32.727457" elapsed="0.000459"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:32.727428" elapsed="0.000517"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:07:32.728518" level="INFO"> "l "o "w "p "l "u "g "i "n "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "o "n "l "y "- "v "a "n "a "d "i "u "m "/ "t "e "s "t "/ "c "s "i "t "/ "s "u "i "t "e "s "/ "o "p "e "n "f "l "o "w "p "l "u "g "i "n "/ "[78CE "[A[78Cn
 "t "i "t "y "O "w "n "e "r "s "h "i "p "/ "0 "1 "0 "_ "S "w "i "t "c "h "_ "D "i "s "c "o "n "n "e "c "t ". "r "o "b "o "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:07:32.728104" elapsed="0.000508"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:32.728929" elapsed="0.000049"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:07:32.728681" elapsed="0.000396"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:32.728662" elapsed="0.000442"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T01:07:32.729141" elapsed="0.000240"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:07:32.731471" elapsed="0.000448"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T01:07:32.732290" elapsed="0.000298"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T01:07:32.732926" elapsed="0.000250"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:07:32.730647" elapsed="0.002622"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T01:07:32.729704" elapsed="0.003699"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T01:07:32.599211" elapsed="0.134294"/>
</kw>
<msg time="2026-04-08T01:07:32.733600" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:07:32.733644" level="INFO">${message} =  "l "o "w "p "l "u "g "i "n "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "o "n "l "y "- "v "a "n ...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:07:32.598597" elapsed="0.135085"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T01:07:32.733866" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-08T01:07:32.733759" elapsed="0.000166"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:32.733740" elapsed="0.000210"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 3,
close the previous connection. In any case create a new connection
to karaf console for 3, set correct prompt set and login to karaf console.
Store connection index for 3 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:32.734430" elapsed="0.000027"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:32.734994" elapsed="0.000026"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T01:07:32.735069" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T01:07:32.597958" elapsed="0.137385"/>
</kw>
<msg time="2026-04-08T01:07:32.735440" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:07:32.735484" level="INFO">${output} =  "l "o "w "p "l "u "g "i "n "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "o "n "l "y "- "v "a "n ...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:07:32.593444" elapsed="0.142079"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:32.735859" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:07:32.735599" elapsed="0.000314"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:32.735581" elapsed="0.000355"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T01:07:32.593292" elapsed="0.142667"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-08T01:07:32.316151" elapsed="0.419840"/>
</for>
<arg>Starting suite ${SUITE_SOURCE}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-08T01:07:32.313863" elapsed="0.422184"/>
</kw>
<doc>Log suite name to karaf log, useful in suite setup.</doc>
<status status="PASS" start="2026-04-08T01:07:32.307223" elapsed="0.428922"/>
</kw>
<arg>KarafKeywords.Log_Test_Suite_Start_To_Controller_Karaf</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:07:32.306632" elapsed="0.429574"/>
</kw>
<doc>Prepare both FailFast and Karaf logging, log that the caller suite has started.
This keyword is to be used in suite setup, and without it the other keywords may not work properly.</doc>
<status status="PASS" start="2026-04-08T01:07:30.491713" elapsed="2.244548"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:07:32.736749" level="INFO">${mininet_conn_id} = 626</msg>
<var>${mininet_conn_id}</var>
<arg>${TOOLS_SYSTEM_IP}</arg>
<arg>prompt=${TOOLS_SYSTEM_PROMPT}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T01:07:32.736443" elapsed="0.000333"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-08T01:07:32.737294" level="INFO">${mininet_conn_id} = 626</msg>
<arg>${mininet_conn_id}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-08T01:07:32.736956" elapsed="0.000381"/>
</kw>
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T01:07:32.737713" level="INFO">Logging into '10.30.170.192:22' as 'jenkins'.</msg>
<msg time="2026-04-08T01:07:33.328087" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 01:07:32 UTC 2026

  System load:  0.0                Processes:             106
  Usage of /:   19.5% of 38.58GB   Users logged in:       0
  Memory usage: 5%                 IPv4 address for ens3: 10.30.170.192
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 00:58:30 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-1-mininet-ovs-217-0 ~]&gt;</msg>
<arg>${TOOLS_SYSTEM_USER}</arg>
<arg>${USER_HOME}/.ssh/id_rsa</arg>
<arg>any</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T01:07:32.737501" elapsed="0.590775"/>
</kw>
<kw name="Put File" owner="SSHLibrary">
<msg time="2026-04-08T01:07:33.336205" level="INFO">[chan 1] Opened sftp connection (server version 3)</msg>
<msg time="2026-04-08T01:07:33.347330" level="INFO">'/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/EntityOwnership/../../../libraries/DynamicMininet.py' -&gt; '/home/jenkins//DynamicMininet.py'</msg>
<arg>/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/EntityOwnership/../../../libraries/DynamicMininet.py</arg>
<arg>.</arg>
<doc>Uploads file(s) from the local machine to the remote machine.</doc>
<status status="PASS" start="2026-04-08T01:07:33.328593" elapsed="0.018836"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T01:07:33.347890" level="INFO">Executing command 'sudo ovs-vsctl set-manager ptcp:6644'.</msg>
<msg time="2026-04-08T01:07:33.400958" level="INFO">Command exited with return code 0.</msg>
<arg>sudo ovs-vsctl set-manager ptcp:6644</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T01:07:33.347730" elapsed="0.053515"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T01:07:33.402109" level="INFO">Executing command 'sudo mn -c'.</msg>
<msg time="2026-04-08T01:07:34.609031" level="INFO">Command exited with return code 0.</msg>
<arg>sudo mn -c</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T01:07:33.401796" elapsed="1.207501"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:07:34.651048" level="INFO">sudo mn --topo linear,1</msg>
<arg>${START_CMD}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:07:34.609799" elapsed="0.041335"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-08T01:07:34.769242" level="INFO">[?2004l*** No default OpenFlow controller found for default switch!
*** Falling back to OVS Bridge
*** Creating network
*** Adding controller
*** Adding hosts:
h1 
*** Adding switches:
s1 
*** Adding links:
(h1, s1) 
*** Configuring hosts
h1 
*** Starting controller

*** Starting 1 switches
s1 ...
*** Starting CLI:
mininet&gt;</msg>
<arg>mininet&gt;</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-08T01:07:34.651395" elapsed="0.117940"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:07:34.770056" level="INFO">${cntls_list} = ['10.30.170.48', '10.30.170.131', '10.30.171.110']</msg>
<var>${cntls_list}</var>
<arg>${ODL_SYSTEM_1_IP}</arg>
<arg>${ODL_SYSTEM_2_IP}</arg>
<arg>${ODL_SYSTEM_3_IP}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:07:34.769562" elapsed="0.000521"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:07:34.770518" level="INFO">${switch_list} = []</msg>
<var>${switch_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:07:34.770272" elapsed="0.000272"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:07:34.771344" level="INFO">${sid} = 1</msg>
<var>${sid}</var>
<arg>${i}+1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:07:34.770980" elapsed="0.000391"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${switch_list}</arg>
<arg>s${sid}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-08T01:07:34.771538" elapsed="0.000216"/>
</kw>
<var name="${i}">0</var>
<status status="PASS" start="2026-04-08T01:07:34.770825" elapsed="0.000967"/>
</iter>
<var>${i}</var>
<value>0</value>
<value>${SWITCHES}</value>
<status status="PASS" start="2026-04-08T01:07:34.770604" elapsed="0.001221"/>
</for>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-08T01:07:34.776551" level="INFO">${active_member} = 1</msg>
<arg>${active_member}</arg>
<arg>1</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-08T01:07:34.772007" elapsed="0.004591"/>
</kw>
<kw name="Setup Clustered Controller For Switches" owner="OvsManager">
<for flavor="IN">
<iter>
<kw name="Set Bridge Controllers" owner="OvsManager">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:07:34.778468" level="INFO">${cmd} = sh ovs-vsctl set bridge s1 protocols=OpenFlow13</msg>
<var>${cmd}</var>
<arg>${lcmd_prefix} ovs-vsctl set bridge ${bridge} protocols=OpenFlow${ofversion}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:07:34.778019" elapsed="0.000476"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:07:34.780640" level="INFO">sh ovs-vsctl set bridge s1 protocols=OpenFlow13</msg>
<arg>${cmd}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:07:34.778657" elapsed="0.002038"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-08T01:07:34.785355" level="INFO">mininet&gt;</msg>
<msg time="2026-04-08T01:07:34.785441" level="INFO">${output} = mininet&gt;</msg>
<var>${output}</var>
<arg>${lprompt}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-08T01:07:34.780936" elapsed="0.004530"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:07:34.785938" level="INFO">mininet&gt;</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:07:34.785689" elapsed="0.000293"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:07:34.786484" level="INFO">${cmd} = sh ovs-vsctl set-controller s1</msg>
<var>${cmd}</var>
<arg>${lcmd_prefix} ovs-vsctl set-controller ${bridge}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:07:34.786146" elapsed="0.000364"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:07:34.787275" level="INFO">${cmd} = sh ovs-vsctl set-controller s1 tcp:10.30.170.48:6654</msg>
<var>${cmd}</var>
<arg>${disconnected}==${False}</arg>
<arg>${cmd} tcp:${cntl}:6653</arg>
<arg>${cmd} tcp:${cntl}:6654</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:07:34.786837" elapsed="0.000466"/>
</kw>
<var name="${cntl}">10.30.170.48</var>
<status status="PASS" start="2026-04-08T01:07:34.786686" elapsed="0.000657"/>
</iter>
<iter>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:07:34.787972" level="INFO">${cmd} = sh ovs-vsctl set-controller s1 tcp:10.30.170.48:6654 tcp:10.30.170.131:6654</msg>
<var>${cmd}</var>
<arg>${disconnected}==${False}</arg>
<arg>${cmd} tcp:${cntl}:6653</arg>
<arg>${cmd} tcp:${cntl}:6654</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:07:34.787570" elapsed="0.000428"/>
</kw>
<var name="${cntl}">10.30.170.131</var>
<status status="PASS" start="2026-04-08T01:07:34.787421" elapsed="0.000644"/>
</iter>
<iter>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:07:34.788720" level="INFO">${cmd} = sh ovs-vsctl set-controller s1 tcp:10.30.170.48:6654 tcp:10.30.170.131:6654 tcp:10.30.171.110:6654</msg>
<var>${cmd}</var>
<arg>${disconnected}==${False}</arg>
<arg>${cmd} tcp:${cntl}:6653</arg>
<arg>${cmd} tcp:${cntl}:6654</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:07:34.788317" elapsed="0.000430"/>
</kw>
<var name="${cntl}">10.30.171.110</var>
<status status="PASS" start="2026-04-08T01:07:34.788168" elapsed="0.000619"/>
</iter>
<var>${cntl}</var>
<value>@{controllers}</value>
<status status="PASS" start="2026-04-08T01:07:34.786560" elapsed="0.002256"/>
</for>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:07:34.789233" level="INFO">sh ovs-vsctl set-controller s1 tcp:10.30.170.48:6654 tcp:10.30.170.131:6654 tcp:10.30.171.110:6654</msg>
<arg>${cmd}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:07:34.788980" elapsed="0.000298"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:07:34.791359" level="INFO">sh ovs-vsctl set-controller s1 tcp:10.30.170.48:6654 tcp:10.30.170.131:6654 tcp:10.30.171.110:6654</msg>
<arg>${cmd}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:07:34.789436" elapsed="0.001978"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-08T01:07:34.800249" level="INFO">mininet&gt;</msg>
<msg time="2026-04-08T01:07:34.800336" level="INFO">${output} = mininet&gt;</msg>
<var>${output}</var>
<arg>${lprompt}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-08T01:07:34.791580" elapsed="0.008780"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:07:34.800799" level="INFO">mininet&gt;</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:07:34.800555" elapsed="0.000289"/>
</kw>
<arg>${switch_name}</arg>
<arg>${controller_ips}</arg>
<arg>disconnected=${True}</arg>
<doc>Adds controller to the bridge</doc>
<status status="PASS" start="2026-04-08T01:07:34.777588" elapsed="0.023312"/>
</kw>
<var name="${switch_name}">s1</var>
<status status="PASS" start="2026-04-08T01:07:34.777335" elapsed="0.023601"/>
</iter>
<var>${switch_name}</var>
<value>@{switches}</value>
<status status="PASS" start="2026-04-08T01:07:34.777209" elapsed="0.023758"/>
</for>
<kw name="Get Ovsdb Data" owner="OvsManager">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:07:34.802821" level="INFO">sh ovs-vsctl list Bridge</msg>
<arg>${lcmd_prefix} ${SH_BR_CMD}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:07:34.801508" elapsed="0.001368"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-08T01:07:34.815922" level="INFO">_uuid               : 3fc69f4c-6de9-4a64-bbf2-4d09499c5562
auto_attach         : []
controller          : [261dbeda-8d7d-44b5-be7f-c546621050e9, 3978e1b6-d996-4ff0-aa45-eafce947a383, 57673790-f594-4fcd-9f45-7b2616ba2fef]
datapath_id         : "0000000000000001"
datapath_type       : ""
datapath_version    : "&lt;unknown&gt;"
external_ids        : {}
fail_mode           : standalone
flood_vlans         : []
flow_tables         : {}
ipfix               : []
mcast_snooping_enable: false
mirrors             : []
name                : s1
netflow             : []
other_config        : {datapath-id="0000000000000001", disable-in-band="true", dp-desc=s1}
ports               : [81fa9106-ab38-4819-935e-37ef2de93739, a1b0e54f-34de-434e-948a-94b889175ca6]
protocols           : [OpenFlow13]
rstp_enable         : false
rstp_status         : {}
sflow               : []
status              : {}
stp_enable          : false
mininet&gt;</msg>
<msg time="2026-04-08T01:07:34.816025" level="INFO">${brstdout} = _uuid               : 3fc69f4c-6de9-4a64-bbf2-4d09499c5562
auto_attach         : []
controller          : [261dbeda-8d7d-44b5-be7f-c546621050e9, 3978e1b6-d996-4ff0-aa45-eafce947a383, 57673790-f594-4...</msg>
<var>${brstdout}</var>
<arg>${lprompt}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-08T01:07:34.803040" elapsed="0.013011"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:07:34.816509" level="INFO">_uuid               : 3fc69f4c-6de9-4a64-bbf2-4d09499c5562
auto_attach         : []
controller          : [261dbeda-8d7d-44b5-be7f-c546621050e9, 3978e1b6-d996-4ff0-aa45-eafce947a383, 57673790-f594-4fcd-9f45-7b2616ba2fef]
datapath_id         : "0000000000000001"
datapath_type       : ""
datapath_version    : "&lt;unknown&gt;"
external_ids        : {}
fail_mode           : standalone
flood_vlans         : []
flow_tables         : {}
ipfix               : []
mcast_snooping_enable: false
mirrors             : []
name                : s1
netflow             : []
other_config        : {datapath-id="0000000000000001", disable-in-band="true", dp-desc=s1}
ports               : [81fa9106-ab38-4819-935e-37ef2de93739, a1b0e54f-34de-434e-948a-94b889175ca6]
protocols           : [OpenFlow13]
rstp_enable         : false
rstp_status         : {}
sflow               : []
status              : {}
stp_enable          : false
mininet&gt;</msg>
<arg>${brstdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:07:34.816263" elapsed="0.000300"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:07:34.818137" level="INFO">sh ovs-vsctl list Controller</msg>
<arg>${lcmd_prefix} ${SH_CNTL_CMD}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:07:34.816718" elapsed="0.001496"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-08T01:07:34.836390" level="INFO">_uuid               : 57673790-f594-4fcd-9f45-7b2616ba2fef
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : false
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : []
status              : {}
target              : "tcp:10.30.170.131:6654"
type                : []

_uuid               : 3978e1b6-d996-4ff0-aa45-eafce947a383
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : false
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : []
status              : {}
target              : "tcp:10.30.171.110:6654"
type                : []

_uuid               : 261dbeda-8d7d-44b5-be7f-c546621050e9
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : false
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : []
status              : {}
target              : "tcp:10.30.170.48:6654"
type                : []
mininet&gt;</msg>
<msg time="2026-04-08T01:07:34.836499" level="INFO">${cntlstdout} = _uuid               : 57673790-f594-4fcd-9f45-7b2616ba2fef
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
exter...</msg>
<var>${cntlstdout}</var>
<arg>${lprompt}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-08T01:07:34.818422" elapsed="0.018104"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:07:34.836969" level="INFO">_uuid               : 57673790-f594-4fcd-9f45-7b2616ba2fef
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : false
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : []
status              : {}
target              : "tcp:10.30.170.131:6654"
type                : []

_uuid               : 3978e1b6-d996-4ff0-aa45-eafce947a383
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : false
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : []
status              : {}
target              : "tcp:10.30.171.110:6654"
type                : []

_uuid               : 261dbeda-8d7d-44b5-be7f-c546621050e9
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : false
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : []
status              : {}
target              : "tcp:10.30.170.48:6654"
type                : []
mininet&gt;</msg>
<arg>${cntlstdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:07:34.836721" elapsed="0.000308"/>
</kw>
<kw name="Parse" owner="VsctlListParser">
<msg time="2026-04-08T01:07:34.837653" level="INFO">_uuid:3fc69f4c-6de9-4a64-bbf2-4d09499c5562
auto_attach:[]
controller:[261dbeda-8d7d-44b5-be7f-c546621050e9,3978e1b6-d996-4ff0-aa45-eafce947a383,57673790-f594-4fcd-9f45-7b2616ba2fef]
datapath_id:"0000000000000001"
datapath_type:""
datapath_version:"&lt;unknown&gt;"
external_ids:{}
fail_mode:standalone
flood_vlans:[]
flow_tables:{}
ipfix:[]
mcast_snooping_enable:false
mirrors:[]
name:s1
netflow:[]
other_config:{datapath-id="0000000000000001",disable-in-band="true",dp-desc=s1}
ports:[81fa9106-ab38-4819-935e-37ef2de93739,a1b0e54f-34de-434e-948a-94b889175ca6]
protocols:[OpenFlow13]
rstp_enable:false
rstp_status:{}
sflow:[]
status:{}
stp_enable:false
_uuid:57673790-f594-4fcd-9f45-7b2616ba2fef
connection_mode:[]
controller_burst_limit:[]
controller_queue_size:[]
controller_rate_limit:[]
enable_async_messages:[]
external_ids:{}
inactivity_probe:[]
is_connected:false
local_gateway:[]
local_ip:[]
local_netmask:[]
max_backoff:[]
other_config:{}
role:[]
status:{}
target:"tcp:10.30.170.131:6654"
type:[]
_uuid:3978e1b6-d996-4ff0-aa45-eafce947a383
connection_mode:[]
controller_burst_limit:[]
controller_queue_size:[]
controller_rate_limit:[]
enable_async_messages:[]
external_ids:{}
inactivity_probe:[]
is_connected:false
local_gateway:[]
local_ip:[]
local_netmask:[]
max_backoff:[]
other_config:{}
role:[]
status:{}
target:"tcp:10.30.171.110:6654"
type:[]
_uuid:261dbeda-8d7d-44b5-be7f-c546621050e9
connection_mode:[]
controller_burst_limit:[]
controller_queue_size:[]
controller_rate_limit:[]
enable_async_messages:[]
external_ids:{}
inactivity_probe:[]
is_connected:false
local_gateway:[]
local_ip:[]
local_netmask:[]
max_backoff:[]
other_config:{}
role:[]
status:{}
target:"tcp:10.30.170.48:6654"
type:[]</msg>
<msg time="2026-04-08T01:07:34.837788" level="INFO">${data} = {'': {'_uuid': '3fc69f4c-6de9-4a64-bbf2-4d09499c5562', 'auto_attach': '[]', 'controller': {'10.30.170.48': {'_uuid': '261dbeda-8d7d-44b5-be7f-c546621050e9', 'connection_mode': '[]', 'controller_burst_...</msg>
<msg time="2026-04-08T01:07:34.837844" level="INFO">${bridegs} = {'3fc69f4c-6de9-4a64-bbf2-4d09499c5562': {'_uuid': '3fc69f4c-6de9-4a64-bbf2-4d09499c5562', 'auto_attach': '[]', 'controller': '[261dbeda-8d7d-44b5-be7f-c546621050e9,3978e1b6-d996-4ff0-aa45-eafce947a38...</msg>
<msg time="2026-04-08T01:07:34.837906" level="INFO">${controllers} = {'57673790-f594-4fcd-9f45-7b2616ba2fef': {'_uuid': '57673790-f594-4fcd-9f45-7b2616ba2fef', 'connection_mode': '[]', 'controller_burst_limit': '[]', 'controller_queue_size': '[]', 'controller_rate_limi...</msg>
<var>${data}</var>
<var>${bridegs}</var>
<var>${controllers}</var>
<arg>${brstdout}</arg>
<arg>${cntlstdout}</arg>
<doc>Produces dictionary with data for future usege</doc>
<status status="PASS" start="2026-04-08T01:07:34.837208" elapsed="0.000722"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:07:34.838390" level="INFO">{'': {'_uuid': '3fc69f4c-6de9-4a64-bbf2-4d09499c5562', 'auto_attach': '[]', 'controller': {'10.30.170.48': {'_uuid': '261dbeda-8d7d-44b5-be7f-c546621050e9', 'connection_mode': '[]', 'controller_burst_limit': '[]', 'controller_queue_size': '[]', 'controller_rate_limit': '[]', 'enable_async_messages': '[]', 'external_ids': '{}', 'inactivity_probe': '[]', 'is_connected': False, 'local_gateway': '[]', 'local_ip': '[]', 'local_netmask': '[]', 'max_backoff': '[]', 'other_config': '{}', 'role': '[]', 'status': '{}', 'target': '"tcp:10.30.170.48:6654"', 'type': '[]'}, '10.30.171.110': {'_uuid': '3978e1b6-d996-4ff0-aa45-eafce947a383', 'connection_mode': '[]', 'controller_burst_limit': '[]', 'controller_queue_size': '[]', 'controller_rate_limit': '[]', 'enable_async_messages': '[]', 'external_ids': '{}', 'inactivity_probe': '[]', 'is_connected': False, 'local_gateway': '[]', 'local_ip': '[]', 'local_netmask': '[]', 'max_backoff': '[]', 'other_config': '{}', 'role': '[]', 'status': '{}', 'target': '"tcp:10.30.171.110:6654"', 'type': '[]'}, '10.30.170.131': {'_uuid': '57673790-f594-4fcd-9f45-7b2616ba2fef', 'connection_mode': '[]', 'controller_burst_limit': '[]', 'controller_queue_size': '[]', 'controller_rate_limit': '[]', 'enable_async_messages': '[]', 'external_ids': '{}', 'inactivity_probe': '[]', 'is_connected': False, 'local_gateway': '[]', 'local_ip': '[]', 'local_netmask': '[]', 'max_backoff': '[]', 'other_config': '{}', 'role': '[]', 'status': '{}', 'target': '"tcp:10.30.170.131:6654"', 'type': '[]'}}, 'datapath_id': '"0000000000000001"', 'datapath_type': '""', 'datapath_version': '"&lt;unknown&gt;"', 'external_ids': '{}', 'fail_mode': 'standalone', 'flood_vlans': '[]', 'flow_tables': '{}', 'ipfix': '[]', 'mcast_snooping_enable': 'false', 'mirrors': '[]', 'name': 's1', 'netflow': '[]', 'other_config': '{datapath-id="0000000000000001",disable-in-band="true",dp-desc=s1}', 'ports': '[81fa9106-ab38-4819-935e-37ef2de93739,a1b0e54f-34de-434e-948a-94b889175ca6]', 'protocols': '[OpenFlow13]', 'rstp_enable': 'false', 'rstp_status': '{}', 'sflow': '[]', 'status': '{}', 'stp_enable': 'false'}}</msg>
<arg>${data}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:07:34.838104" elapsed="0.000378"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-08T01:07:34.839061" level="INFO">${ovs_switch_data} = {'': {'_uuid': '3fc69f4c-6de9-4a64-bbf2-4d09499c5562', 'auto_attach': '[]', 'controller': {'10.30.170.48': {'_uuid': '261dbeda-8d7d-44b5-be7f-c546621050e9', 'connection_mode': '[]', 'controller_burst_...</msg>
<arg>${ovs_switch_data}</arg>
<arg>${data}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-08T01:07:34.838676" elapsed="0.000428"/>
</kw>
<return>
<value>${data}</value>
<status status="PASS" start="2026-04-08T01:07:34.839176" elapsed="0.000044"/>
</return>
<doc>Gets ovs data and parse them.</doc>
<status status="PASS" start="2026-04-08T01:07:34.801259" elapsed="0.038059"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get From List" owner="Collections">
<msg time="2026-04-08T01:07:34.839822" level="INFO">${own} = 10.30.170.48</msg>
<var>${own}</var>
<arg>${controller_ips}</arg>
<arg>0</arg>
<doc>Returns the value specified with an ``index`` from ``list``.</doc>
<status status="PASS" start="2026-04-08T01:07:34.839637" elapsed="0.000211"/>
</kw>
<kw name="Reconnect Switch To Controller And Verify Connected" owner="OvsManager">
<if>
<branch type="IF" condition="${update_data}==${True}">
<kw name="Get Ovsdb Data" owner="OvsManager">
<doc>Gets ovs data and parse them.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:34.841014" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:07:34.840685" elapsed="0.000383"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:34.840517" elapsed="0.000576"/>
</if>
<kw name="Get Controllers Uuid" owner="OvsManager">
<if>
<branch type="IF" condition="${update_data}==${True}">
<kw name="Get Ovsdb Data" owner="OvsManager">
<doc>Gets ovs data and parse them.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:34.841926" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:07:34.841613" elapsed="0.000367"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:34.841595" elapsed="0.000409"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:07:34.842395" level="FAIL">Dictionary does not contain key 's1'.</msg>
<var>${bridge}</var>
<arg>${ovs_switch_data}</arg>
<arg>${switch}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="FAIL" start="2026-04-08T01:07:34.842171" elapsed="0.000343">Dictionary does not contain key 's1'.</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${cntls}</var>
<arg>${bridge}</arg>
<arg>controller</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:34.842689" elapsed="0.000021"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${cntl}</var>
<arg>${cntls}</arg>
<arg>${controller}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:34.842880" elapsed="0.000023"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${uuid}</var>
<arg>${cntl}</arg>
<arg>_uuid</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:34.843081" elapsed="0.000025"/>
</kw>
<return>
<value>${uuid}</value>
<status status="NOT RUN" start="2026-04-08T01:07:34.843181" elapsed="0.000020"/>
</return>
<var>${uuid}</var>
<arg>${switch}</arg>
<arg>${controller}</arg>
<doc>Returns controllers uuid</doc>
<status status="FAIL" start="2026-04-08T01:07:34.841342" elapsed="0.001979">Dictionary does not contain key 's1'.</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${cmd}</var>
<arg>${lcmd_prefix} ovs-vsctl set Controller ${uuid} target="tcp\\:${controller}\\:6653"</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:34.843529" elapsed="0.000024"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<arg>${cmd}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:34.843730" elapsed="0.000021"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<var>${output}</var>
<arg>${lprompt}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:34.843927" elapsed="0.000022"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:34.844360" elapsed="0.000025"/>
</kw>
<if>
<branch type="IF" condition="${verify_connected}==${False}">
<return>
<status status="NOT RUN" start="2026-04-08T01:07:34.844502" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:07:34.844461" elapsed="0.000083"/>
</branch>
<status status="NOT RUN" start="2026-04-08T01:07:34.844441" elapsed="0.000127"/>
</if>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<arg>5x</arg>
<arg>2s</arg>
<arg>Should Be Connected</arg>
<arg>${switch}</arg>
<arg>${controller}</arg>
<arg>update_data=${True}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:34.844739" elapsed="0.000021"/>
</kw>
<kw name="Execute OvsVsctl Show Command" owner="OvsManager" type="TEARDOWN">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:07:34.846829" level="INFO">sh ovs-vsctl show</msg>
<arg>${lcmd_prefix} ovs-vsctl show</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:07:34.845356" elapsed="0.001530"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-08T01:07:34.856518" level="INFO">9a5df812-eb49-4477-a37e-2d464c02791d
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.48:6654"
        Controller "tcp:10.30.171.110:6654"
        Controller "tcp:10.30.170.131:6654"
        fail_mode: standalone
        Port s1
            Interface s1
                type: internal
        Port s1-eth1
            Interface s1-eth1
    ovs_version: "2.17.11"
mininet&gt;</msg>
<msg time="2026-04-08T01:07:34.856613" level="INFO">${output} = 9a5df812-eb49-4477-a37e-2d464c02791d
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.48:6654"
        Controller "tcp:10.30.171.110:6654"
        Controller "tcp:10.30.170...</msg>
<var>${output}</var>
<arg>${lprompt}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-08T01:07:34.847052" elapsed="0.009588"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:07:34.857086" level="INFO">9a5df812-eb49-4477-a37e-2d464c02791d
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.48:6654"
        Controller "tcp:10.30.171.110:6654"
        Controller "tcp:10.30.170.131:6654"
        fail_mode: standalone
        Port s1
            Interface s1
                type: internal
        Port s1-eth1
            Interface s1-eth1
    ovs_version: "2.17.11"
mininet&gt;</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:07:34.856834" elapsed="0.000301"/>
</kw>
<doc>Executes ovs-vsctl show command and returns stdout, no check nor change is performed</doc>
<status status="PASS" start="2026-04-08T01:07:34.845051" elapsed="0.012163"/>
</kw>
<arg>${switch_name}</arg>
<arg>${own}</arg>
<arg>verify_connected=${False}</arg>
<doc>Reconnects the switch back to the controller by setting the correct port</doc>
<status status="FAIL" start="2026-04-08T01:07:34.840174" elapsed="0.017111">Dictionary does not contain key 's1'.</status>
</kw>
<var name="${switch_name}">s1</var>
<status status="FAIL" start="2026-04-08T01:07:34.839493" elapsed="0.017854">Dictionary does not contain key 's1'.</status>
</iter>
<var>${switch_name}</var>
<value>@{switches}</value>
<status status="FAIL" start="2026-04-08T01:07:34.839361" elapsed="0.018079">Dictionary does not contain key 's1'.</status>
</for>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<arg>5x</arg>
<arg>2s</arg>
<arg>OvsManager__Verify_Masters_Connected</arg>
<arg>${switches}</arg>
<arg>update_data=${True}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:34.857620" elapsed="0.000021"/>
</kw>
<kw name="OvsManager__Enable_Slaves" owner="OvsManager">
<arg>${switches}</arg>
<arg>verify_connected=${verify_connected}</arg>
<doc>This is a private keyword to enable diconnected controllers</doc>
<status status="NOT RUN" start="2026-04-08T01:07:34.857888" elapsed="0.000023"/>
</kw>
<arg>${switch_list}</arg>
<arg>${cntls_list}</arg>
<doc>The idea of this keyword is to setup clustered controller and to be more or less sure that the role is filled correctly. The problem is when
more controllers are being set up at once, the role shown in Controller ovsdb table is not the same as we can see from wireshark traces.
Now we set disconnected controllers and we will connect them expecting that the first connected controller will be master.</doc>
<status status="FAIL" start="2026-04-08T01:07:34.776906" elapsed="0.081117">Dictionary does not contain key 's1'.</status>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<arg>10s</arg>
<arg>1s</arg>
<arg>ClusterOpenFlow.Verify Switch Connections Running On Member</arg>
<arg>${SWITCHES}</arg>
<arg>1</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:34.858227" elapsed="0.000022"/>
</kw>
<status status="FAIL" start="2026-04-08T01:07:30.491373" elapsed="4.366975">Dictionary does not contain key 's1'.</status>
</kw>
<test id="s1-s5-t1" name="Switches To Be Connected To All Nodes" line="28">
<doc>Initial check for correct connected topology.</doc>
<status status="FAIL" start="2026-04-08T01:07:34.858428" elapsed="0.000621">Parent suite setup failed:
Dictionary does not contain key 's1'.</status>
</test>
<test id="s1-s5-t2" name="Reconnecting Switch s1" line="32">
<status status="FAIL" start="2026-04-08T01:07:34.859492" elapsed="0.000390">Parent suite setup failed:
Dictionary does not contain key 's1'.</status>
</test>
<test id="s1-s5-t3" name="Switches Still Be Connected To All Nodes" line="34">
<status status="FAIL" start="2026-04-08T01:07:34.860124" elapsed="0.000528">Parent suite setup failed:
Dictionary does not contain key 's1'.</status>
</test>
<kw name="End Suite" type="TEARDOWN">
<kw name="Delete All Sessions" owner="RequestsLibrary">
<msg time="2026-04-08T01:07:34.861538" level="INFO">Deleting All Sessions</msg>
<doc>Removes all the session objects</doc>
<status status="PASS" start="2026-04-08T01:07:34.861460" elapsed="0.000180"/>
</kw>
<kw name="Stop Mininet" owner="Utils">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:07:34.862429" level="INFO">Stop the test on the base edition</msg>
<arg>Stop the test on the base edition</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:07:34.862214" elapsed="0.000259"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${mininet_conn_id}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:07:34.862667" elapsed="0.000187"/>
</kw>
<kw name="Read" owner="SSHLibrary">
<doc>Consumes and returns everything available on the server output.</doc>
<status status="PASS" start="2026-04-08T01:07:34.863042" elapsed="0.000134"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:07:34.865340" level="INFO">exit</msg>
<arg>exit</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:07:34.863362" elapsed="0.002058"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-08T01:07:34.956572" level="INFO">*** Stopping 0 controllers

*** Stopping 1 links
.
*** Stopping 1 switches
s1 
*** Stopping 1 hosts
h1 
*** Done
completed in 0.247 seconds
[?2004h[jenkins@releng-11369-169-1-mininet-ovs-217-0 ~]&gt;</msg>
<arg>${prompt}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-08T01:07:34.865683" elapsed="0.091024"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T01:07:34.956962" elapsed="0.000329"/>
</kw>
<doc>Cleanup/Shutdown work that should be done at the completion of all
tests</doc>
<status status="PASS" start="2026-04-08T01:07:34.861878" elapsed="0.095473"/>
</kw>
<status status="PASS" start="2026-04-08T01:07:34.861232" elapsed="0.096167"/>
</kw>
<doc>Test suite for entity ownership service and openflowplugin. Makes changes on switch side.</doc>
<status status="FAIL" start="2026-04-08T01:07:30.297070" elapsed="4.660356">Suite setup failed:
Dictionary does not contain key 's1'.</status>
</suite>
<suite id="s1-s6" name="020 Cluster Node Failure" source="/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/EntityOwnership/020_Cluster_Node_Failure.robot">
<kw name="Start Suite" type="SETUP">
<kw name="Setup_Utils_For_Setup_And_Teardown" owner="SetupUtils">
<kw name="Do_Not_Fail_Fast_From_Now_On" owner="FailFast">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-08T01:07:35.043370" level="INFO">${SuiteFastFail} = False</msg>
<arg>${SuiteFastFail}</arg>
<arg>False</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-08T01:07:35.039294" elapsed="0.004124"/>
</kw>
<doc>Set suite to not fail fast.</doc>
<status status="PASS" start="2026-04-08T01:07:35.039051" elapsed="0.004429"/>
</kw>
<kw name="Setup_Karaf_Keywords" owner="KarafKeywords">
<kw name="ClusterManagement_Setup" owner="ClusterManagement">
<kw name="Get Variable Value" owner="BuiltIn">
<msg time="2026-04-08T01:07:35.048128" level="INFO">${already_done} = False</msg>
<var>${already_done}</var>
<arg>\${ClusterManagement__has_setup_run}</arg>
<arg>False</arg>
<doc>Returns variable value or ``default`` if the variable does not exist.</doc>
<status status="PASS" start="2026-04-08T01:07:35.044583" elapsed="0.003583"/>
</kw>
<if>
<branch type="IF" condition="${already_done}">
<return>
<status status="NOT RUN" start="2026-04-08T01:07:35.048366" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:07:35.048247" elapsed="0.000162"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:35.048226" elapsed="0.000205"/>
</if>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-08T01:07:35.048943" level="INFO">${ClusterManagement__has_setup_run} = True</msg>
<arg>\${ClusterManagement__has_setup_run}</arg>
<arg>True</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-08T01:07:35.048594" elapsed="0.000390"/>
</kw>
<kw name="Get Variable Value" owner="BuiltIn">
<msg time="2026-04-08T01:07:35.049481" level="INFO">${cluster_size} = 3</msg>
<var>${cluster_size}</var>
<arg>\${NUM_ODL_SYSTEM}</arg>
<arg>1</arg>
<doc>Returns variable value or ``default`` if the variable does not exist.</doc>
<status status="PASS" start="2026-04-08T01:07:35.049173" elapsed="0.000333"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Convert To Integer" owner="BuiltIn">
<arg>${cluster_size}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:07:35.050027" elapsed="0.000290"/>
</kw>
<msg time="2026-04-08T01:07:35.050413" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:07:35.050459" level="INFO">${possibly_int_of_members} = 3</msg>
<var>${status}</var>
<var>${possibly_int_of_members}</var>
<arg>BuiltIn.Convert_To_Integer</arg>
<arg>${cluster_size}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:07:35.049681" elapsed="0.000800"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:07:35.051089" level="INFO">${int_of_members} = 3</msg>
<var>${int_of_members}</var>
<arg>'${status}' != 'PASS'</arg>
<arg>${1}</arg>
<arg>${possibly_int_of_members}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:07:35.050721" elapsed="0.000394"/>
</kw>
<kw name="ClusterManagement__Compute_Derived_Variables" owner="ClusterManagement">
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:07:35.052095" level="INFO">@{member_index_list} = [ ]</msg>
<var>@{member_index_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:07:35.051835" elapsed="0.000287"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:07:35.052560" level="INFO">@{session_list} = [ ]</msg>
<var>@{session_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:07:35.052306" elapsed="0.000281"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-08T01:07:35.053041" level="INFO">&amp;{index_to_ip_mapping} = { }</msg>
<var>&amp;{index_to_ip_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-08T01:07:35.052755" elapsed="0.000312"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="ClusterManagement__Include_Member_Index" owner="ClusterManagement">
<kw name="Append To List" owner="Collections">
<arg>${member_index_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-08T01:07:35.057297" elapsed="0.000212"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:07:35.058003" level="INFO">${member_ip} = 10.30.170.48</msg>
<var>${member_ip}</var>
<arg>${ODL_SYSTEM_${index}_IP}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:07:35.057681" elapsed="0.000347"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${index_to_ip_mapping}</arg>
<arg>${index}</arg>
<arg>${member_ip}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:07:35.058208" elapsed="0.000227"/>
</kw>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:07:35.059247" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:07:35.058936" elapsed="0.000337"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T01:07:35.059318" elapsed="0.000033"/>
</return>
<msg time="2026-04-08T01:07:35.059472" level="INFO">${session_alias} = ClusterManagement__session_1</msg>
<var>${session_alias}</var>
<arg>member_index=${index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T01:07:35.058636" elapsed="0.000860"/>
</kw>
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-04-08T01:07:35.060088" level="INFO">Creating Session using : alias=ClusterManagement__session_1, url=http://10.30.170.48:8181, headers={},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x76b9e6cd1bd0&gt;, timeout=5, proxies=None, verify=False,                     debug=0 </msg>
<arg>${session_alias}</arg>
<arg>http://${member_ip}:${RESTCONFPORT}</arg>
<arg>auth=${AUTH}</arg>
<arg>timeout=${http_timeout}</arg>
<arg>max_retries=${http_retries}</arg>
<doc>Create Session: create a HTTP session to a server</doc>
<status status="PASS" start="2026-04-08T01:07:35.059662" elapsed="0.000582"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${session_list}</arg>
<arg>${session_alias}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-08T01:07:35.060419" elapsed="0.000195"/>
</kw>
<arg>${index}</arg>
<arg>${member_index_list}</arg>
<arg>${session_list}</arg>
<arg>${index_to_ip_mapping}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>http_retries=${http_retries}</arg>
<doc>Add a corresponding item based on index into the last three arguments.
Create the Http session whose alias is added to list.</doc>
<status status="PASS" start="2026-04-08T01:07:35.056714" elapsed="0.003958"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T01:07:35.056518" elapsed="0.004198"/>
</iter>
<iter>
<kw name="ClusterManagement__Include_Member_Index" owner="ClusterManagement">
<kw name="Append To List" owner="Collections">
<arg>${member_index_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-08T01:07:35.061562" elapsed="0.000186"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:07:35.062248" level="INFO">${member_ip} = 10.30.170.131</msg>
<var>${member_ip}</var>
<arg>${ODL_SYSTEM_${index}_IP}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:07:35.061914" elapsed="0.000361"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${index_to_ip_mapping}</arg>
<arg>${index}</arg>
<arg>${member_ip}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:07:35.062436" elapsed="0.000218"/>
</kw>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:07:35.063457" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:07:35.063147" elapsed="0.000336"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T01:07:35.063527" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T01:07:35.063675" level="INFO">${session_alias} = ClusterManagement__session_2</msg>
<var>${session_alias}</var>
<arg>member_index=${index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T01:07:35.062849" elapsed="0.000851"/>
</kw>
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-04-08T01:07:35.064302" level="INFO">Creating Session using : alias=ClusterManagement__session_2, url=http://10.30.170.131:8181, headers={},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x76b9f449bf10&gt;, timeout=5, proxies=None, verify=False,                     debug=0 </msg>
<arg>${session_alias}</arg>
<arg>http://${member_ip}:${RESTCONFPORT}</arg>
<arg>auth=${AUTH}</arg>
<arg>timeout=${http_timeout}</arg>
<arg>max_retries=${http_retries}</arg>
<doc>Create Session: create a HTTP session to a server</doc>
<status status="PASS" start="2026-04-08T01:07:35.063863" elapsed="0.000541"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${session_list}</arg>
<arg>${session_alias}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-08T01:07:35.064577" elapsed="0.000186"/>
</kw>
<arg>${index}</arg>
<arg>${member_index_list}</arg>
<arg>${session_list}</arg>
<arg>${index_to_ip_mapping}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>http_retries=${http_retries}</arg>
<doc>Add a corresponding item based on index into the last three arguments.
Create the Http session whose alias is added to list.</doc>
<status status="PASS" start="2026-04-08T01:07:35.060983" elapsed="0.003837"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T01:07:35.060797" elapsed="0.004066"/>
</iter>
<iter>
<kw name="ClusterManagement__Include_Member_Index" owner="ClusterManagement">
<kw name="Append To List" owner="Collections">
<arg>${member_index_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-08T01:07:35.065740" elapsed="0.000185"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:07:35.066430" level="INFO">${member_ip} = 10.30.171.110</msg>
<var>${member_ip}</var>
<arg>${ODL_SYSTEM_${index}_IP}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:07:35.066091" elapsed="0.000365"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${index_to_ip_mapping}</arg>
<arg>${index}</arg>
<arg>${member_ip}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:07:35.066616" elapsed="0.000219"/>
</kw>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:07:35.067837" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:07:35.067349" elapsed="0.000516"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T01:07:35.067910" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T01:07:35.068059" level="INFO">${session_alias} = ClusterManagement__session_3</msg>
<var>${session_alias}</var>
<arg>member_index=${index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T01:07:35.067030" elapsed="0.001054"/>
</kw>
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-04-08T01:07:35.068709" level="INFO">Creating Session using : alias=ClusterManagement__session_3, url=http://10.30.171.110:8181, headers={},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x76b9e6f000d0&gt;, timeout=5, proxies=None, verify=False,                     debug=0 </msg>
<arg>${session_alias}</arg>
<arg>http://${member_ip}:${RESTCONFPORT}</arg>
<arg>auth=${AUTH}</arg>
<arg>timeout=${http_timeout}</arg>
<arg>max_retries=${http_retries}</arg>
<doc>Create Session: create a HTTP session to a server</doc>
<status status="PASS" start="2026-04-08T01:07:35.068275" elapsed="0.000538"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${session_list}</arg>
<arg>${session_alias}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-08T01:07:35.068986" elapsed="0.000203"/>
</kw>
<arg>${index}</arg>
<arg>${member_index_list}</arg>
<arg>${session_list}</arg>
<arg>${index_to_ip_mapping}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>http_retries=${http_retries}</arg>
<doc>Add a corresponding item based on index into the last three arguments.
Create the Http session whose alias is added to list.</doc>
<status status="PASS" start="2026-04-08T01:07:35.065129" elapsed="0.004120"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T01:07:35.064944" elapsed="0.004349"/>
</iter>
<var>${index}</var>
<value>1</value>
<value>${int_of_members+1}</value>
<status status="PASS" start="2026-04-08T01:07:35.053119" elapsed="0.016203"/>
</for>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-08T01:07:35.069891" level="INFO">${ClusterManagement__member_index_list} = [1, 2, 3]</msg>
<arg>\${ClusterManagement__member_index_list}</arg>
<arg>${member_index_list}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-08T01:07:35.069493" elapsed="0.000441"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-08T01:07:35.070524" level="INFO">${ClusterManagement__index_to_ip_mapping} = {1: '10.30.170.48', 2: '10.30.170.131', 3: '10.30.171.110'}</msg>
<arg>\${ClusterManagement__index_to_ip_mapping}</arg>
<arg>${index_to_ip_mapping}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-08T01:07:35.070111" elapsed="0.000456"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-08T01:07:35.071120" level="INFO">${ClusterManagement__session_list} = ['ClusterManagement__session_1', 'ClusterManagement__session_2', 'ClusterManagement__session_3']</msg>
<arg>\${ClusterManagement__session_list}</arg>
<arg>${session_list}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-08T01:07:35.070738" elapsed="0.000439"/>
</kw>
<arg>int_of_members=${int_of_members}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>http_retries=${http_retries}</arg>
<doc>Construct index list, session list and IP mapping, publish them as suite variables.</doc>
<status status="PASS" start="2026-04-08T01:07:35.051379" elapsed="0.019856"/>
</kw>
<arg>http_timeout=${http_timeout}</arg>
<doc>Detect repeated call, or detect number of members and initialize derived suite variables.
Http sessions are created with parameters to not waste time when ODL is no accepting connections properly.</doc>
<status status="PASS" start="2026-04-08T01:07:35.044216" elapsed="0.027076"/>
</kw>
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:07:35.071468" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:07:35.071356" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:35.071338" elapsed="0.000194"/>
</if>
<kw name="Run_Bash_Command_On_List_Or_All" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:07:35.074581" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:07:35.074204" elapsed="0.000404"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:07:35.075074" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:07:35.074776" elapsed="0.000324"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T01:07:35.075143" elapsed="0.000047"/>
</return>
<msg time="2026-04-08T01:07:35.075316" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T01:07:35.073856" elapsed="0.001484"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:07:35.076362" level="INFO">${member_ip} = 10.30.170.48</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:07:35.076073" elapsed="0.000315"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:07:35.077116" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

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

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T01:07:35.081020" elapsed="0.000722"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:07:35.082682" level="INFO">Attempting to execute command "iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save" on remote system "10.30.170.48" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:07:35.082013" elapsed="0.000773"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:07:35.084143" level="INFO">${conn_id} = 627</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T01:07:35.083062" elapsed="0.001154"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T01:07:35.085901" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T01:07:35.086078" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T01:07:35.085555" elapsed="0.000568"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:07:35.086484" elapsed="0.000451"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T01:07:35.088174" level="INFO">Logging into '10.30.170.48:22' as 'jenkins'.</msg>
<msg time="2026-04-08T01:07:35.418685" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 01:07:28 UTC 2026

  System load:  0.36               Processes:             121
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 7%                 IPv4 address for ens3: 10.30.170.48
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 01:07:30 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-0-builder-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T01:07:35.087839" elapsed="0.330983"/>
</kw>
<msg time="2026-04-08T01:07:35.418901" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:07:35.087391" elapsed="0.331666"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T01:07:35.084661" elapsed="0.334573"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T01:07:35.420212" level="INFO">Executing command 'iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save'.</msg>
<msg time="2026-04-08T01:07:35.433217" level="INFO">Command exited with return code 4.</msg>
<msg time="2026-04-08T01:07:35.433475" level="INFO">${stdout} = </msg>
<msg time="2026-04-08T01:07:35.433639" level="INFO">${stderr} = iptables v1.8.7 (nf_tables): unknown option "--dport"
Try `iptables -h' or 'iptables --help' for more information.
iptables-save v1.8.7 (nf_tables): Could not fetch rule set generation id: Permission ...</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T01:07:35.419650" elapsed="0.014069"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T01:07:35.434250" elapsed="0.000814"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:07:35.437218" level="INFO">iptables v1.8.7 (nf_tables): unknown option "--dport"
Try `iptables -h' or 'iptables --help' for more information.
iptables-save v1.8.7 (nf_tables): Could not fetch rule set generation id: Permission denied (you must be root)</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:07:35.436274" elapsed="0.001117"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T01:07:35.438084" elapsed="0.000114"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:07:35.437679" elapsed="0.000646"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:35.437641" elapsed="0.000743"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T01:07:35.438869" elapsed="0.000097"/>
</return>
<status status="PASS" start="2026-04-08T01:07:35.438511" elapsed="0.000582"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:35.438486" elapsed="0.000763"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T01:07:35.439358" elapsed="0.000024"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:07:35.444321" elapsed="0.000714"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T01:07:35.445520" elapsed="0.000448"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T01:07:35.446638" elapsed="0.000357"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:07:35.440121" elapsed="0.006979"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T01:07:35.079122" elapsed="0.368282"/>
</kw>
<msg time="2026-04-08T01:07:35.447486" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:07:35.078496" elapsed="0.369066"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-08T01:07:35.077991" elapsed="0.369689"/>
</kw>
<msg time="2026-04-08T01:07:35.447740" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:07:35.077472" elapsed="0.370333"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:07:35.451086" elapsed="0.000329"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T01:07:35.451589" elapsed="0.000142"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T01:07:35.451888" elapsed="0.000095"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:07:35.448265" elapsed="0.003774"/>
</kw>
<msg time="2026-04-08T01:07:35.452130" level="INFO">${output} = </msg>
<var>${output}</var>
<arg>Utils.Run_Command_On_Controller</arg>
<arg>${member_ip}</arg>
<arg>${command}</arg>
<doc>Store current connection index, run keyword returning its result, restore connection in teardown.
Note that in order to avoid "got positional argument after named arguments", it is safer to use positional (not named) arguments on call.</doc>
<status status="PASS" start="2026-04-08T01:07:35.076612" elapsed="0.375557"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:07:35.452627" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:07:35.452370" elapsed="0.000298"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-08T01:07:35.452710" elapsed="0.000029"/>
</return>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-08T01:07:35.075706" elapsed="0.377127"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T01:07:35.075512" elapsed="0.377359"/>
</iter>
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:07:35.453827" level="INFO">${member_ip} = 10.30.170.131</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:07:35.453559" elapsed="0.000294"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:07:35.454674" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

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

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T01:07:35.458949" elapsed="0.000810"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:07:35.460801" level="INFO">Attempting to execute command "iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save" on remote system "10.30.170.131" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:07:35.460054" elapsed="0.000910"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:07:35.462284" level="INFO">${conn_id} = 630</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T01:07:35.461289" elapsed="0.001051"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T01:07:35.464228" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T01:07:35.464424" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T01:07:35.463831" elapsed="0.000641"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:07:35.464853" elapsed="0.000491"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T01:07:35.466639" level="INFO">Logging into '10.30.170.131:22' as 'jenkins'.</msg>
<msg time="2026-04-08T01:07:35.781212" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 01:07:29 UTC 2026

  System load:  1.1                Processes:             122
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 7%                 IPv4 address for ens3: 10.30.170.131
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 01:07:31 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-0-builder-1 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T01:07:35.466319" elapsed="0.314993"/>
</kw>
<msg time="2026-04-08T01:07:35.781380" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:07:35.465736" elapsed="0.315768"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T01:07:35.462825" elapsed="0.318807"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T01:07:35.782427" level="INFO">Executing command 'iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save'.</msg>
<msg time="2026-04-08T01:07:35.794968" level="INFO">Command exited with return code 4.</msg>
<msg time="2026-04-08T01:07:35.795265" level="INFO">${stdout} = </msg>
<msg time="2026-04-08T01:07:35.795411" level="INFO">${stderr} = iptables v1.8.7 (nf_tables): unknown option "--dport"
Try `iptables -h' or 'iptables --help' for more information.
iptables-save v1.8.7 (nf_tables): Could not fetch rule set generation id: Permission ...</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T01:07:35.781964" elapsed="0.013516"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T01:07:35.795916" elapsed="0.000711"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:07:35.798360" level="INFO">iptables v1.8.7 (nf_tables): unknown option "--dport"
Try `iptables -h' or 'iptables --help' for more information.
iptables-save v1.8.7 (nf_tables): Could not fetch rule set generation id: Permission denied (you must be root)</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:07:35.797586" elapsed="0.000948"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T01:07:35.799102" elapsed="0.000093"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:07:35.798764" elapsed="0.000538"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:35.798732" elapsed="0.000621"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T01:07:35.799778" elapsed="0.000085"/>
</return>
<status status="PASS" start="2026-04-08T01:07:35.799466" elapsed="0.000504"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:35.799443" elapsed="0.000581"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T01:07:35.800107" elapsed="0.000022"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:07:35.804485" elapsed="0.000624"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T01:07:35.805617" elapsed="0.000383"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T01:07:35.806407" elapsed="0.000310"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:07:35.800785" elapsed="0.006027"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T01:07:35.456924" elapsed="0.350132"/>
</kw>
<msg time="2026-04-08T01:07:35.807131" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:07:35.456286" elapsed="0.350940"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-08T01:07:35.455734" elapsed="0.351663"/>
</kw>
<msg time="2026-04-08T01:07:35.807454" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:07:35.454964" elapsed="0.352555"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:07:35.811365" elapsed="0.000308"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T01:07:35.811844" elapsed="0.000142"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T01:07:35.812142" elapsed="0.000114"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:07:35.807933" elapsed="0.004374"/>
</kw>
<msg time="2026-04-08T01:07:35.812397" level="INFO">${output} = </msg>
<var>${output}</var>
<arg>Utils.Run_Command_On_Controller</arg>
<arg>${member_ip}</arg>
<arg>${command}</arg>
<doc>Store current connection index, run keyword returning its result, restore connection in teardown.
Note that in order to avoid "got positional argument after named arguments", it is safer to use positional (not named) arguments on call.</doc>
<status status="PASS" start="2026-04-08T01:07:35.454079" elapsed="0.358343"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:07:35.812867" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:07:35.812622" elapsed="0.000287"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-08T01:07:35.812950" elapsed="0.000028"/>
</return>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-08T01:07:35.453192" elapsed="0.359880"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T01:07:35.452972" elapsed="0.360136"/>
</iter>
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:07:35.814056" level="INFO">${member_ip} = 10.30.171.110</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:07:35.813792" elapsed="0.000290"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:07:35.814836" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

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

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T01:07:35.818909" elapsed="0.000747"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:07:35.820599" level="INFO">Attempting to execute command "iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save" on remote system "10.30.171.110" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:07:35.819927" elapsed="0.000777"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:07:35.821927" level="INFO">${conn_id} = 633</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T01:07:35.820993" elapsed="0.000988"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T01:07:35.823703" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T01:07:35.823877" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T01:07:35.823350" elapsed="0.000572"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:07:35.824305" elapsed="0.000506"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T01:07:35.825966" level="INFO">Logging into '10.30.171.110:22' as 'jenkins'.</msg>
<msg time="2026-04-08T01:07:36.132290" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 01:07:29 UTC 2026

  System load:  1.16               Processes:             127
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 7%                 IPv4 address for ens3: 10.30.171.110
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 01:07:31 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T01:07:35.825638" elapsed="0.306884"/>
</kw>
<msg time="2026-04-08T01:07:36.132603" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:07:35.825185" elapsed="0.307567"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T01:07:35.822456" elapsed="0.310454"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T01:07:36.133873" level="INFO">Executing command 'iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save'.</msg>
<msg time="2026-04-08T01:07:36.146664" level="INFO">Command exited with return code 4.</msg>
<msg time="2026-04-08T01:07:36.147069" level="INFO">${stdout} = </msg>
<msg time="2026-04-08T01:07:36.147372" level="INFO">${stderr} = iptables v1.8.7 (nf_tables): unknown option "--dport"
Try `iptables -h' or 'iptables --help' for more information.
iptables-save v1.8.7 (nf_tables): Could not fetch rule set generation id: Permission ...</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T01:07:36.133334" elapsed="0.014160"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T01:07:36.148321" elapsed="0.001298"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:07:36.152778" level="INFO">iptables v1.8.7 (nf_tables): unknown option "--dport"
Try `iptables -h' or 'iptables --help' for more information.
iptables-save v1.8.7 (nf_tables): Could not fetch rule set generation id: Permission denied (you must be root)</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:07:36.151397" elapsed="0.001649"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T01:07:36.154127" elapsed="0.000108"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:07:36.153559" elapsed="0.000797"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:36.153492" elapsed="0.000923"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T01:07:36.154886" elapsed="0.000097"/>
</return>
<status status="PASS" start="2026-04-08T01:07:36.154537" elapsed="0.000576"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:36.154512" elapsed="0.000746"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T01:07:36.155357" elapsed="0.000023"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:07:36.160374" elapsed="0.000680"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T01:07:36.161531" elapsed="0.000441"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T01:07:36.162412" elapsed="0.000350"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:07:36.156086" elapsed="0.006780"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T01:07:35.816966" elapsed="0.346174"/>
</kw>
<msg time="2026-04-08T01:07:36.163281" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:07:35.816141" elapsed="0.347217"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-08T01:07:35.815658" elapsed="0.347813"/>
</kw>
<msg time="2026-04-08T01:07:36.163525" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:07:35.815126" elapsed="0.348462"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:07:36.167061" elapsed="0.000374"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T01:07:36.167609" elapsed="0.000143"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T01:07:36.167910" elapsed="0.000095"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:07:36.164007" elapsed="0.004048"/>
</kw>
<msg time="2026-04-08T01:07:36.168142" level="INFO">${output} = </msg>
<var>${output}</var>
<arg>Utils.Run_Command_On_Controller</arg>
<arg>${member_ip}</arg>
<arg>${command}</arg>
<doc>Store current connection index, run keyword returning its result, restore connection in teardown.
Note that in order to avoid "got positional argument after named arguments", it is safer to use positional (not named) arguments on call.</doc>
<status status="PASS" start="2026-04-08T01:07:35.814342" elapsed="0.353840"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:07:36.168629" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:07:36.168383" elapsed="0.000287"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-08T01:07:36.168712" elapsed="0.000028"/>
</return>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-08T01:07:35.813429" elapsed="0.355404"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T01:07:35.813240" elapsed="0.355666"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-08T01:07:35.075389" elapsed="1.093557"/>
</for>
<arg>iptables -I INPUT -p tcp --dport ${KARAF_SHELL_PORT} -j ACCEPT; iptables-save</arg>
<doc>Cycle through indices (or all), run command on each.</doc>
<status status="PASS" start="2026-04-08T01:07:35.071779" elapsed="1.097237"/>
</kw>
<kw name="Comment" owner="BuiltIn">
<arg>First connections to Karaf console may fail, so WUKS is used. TODO: Track as a Bug.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:07:36.169219" elapsed="0.000236"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:07:36.182745" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:07:36.182632" elapsed="0.000161"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:36.182612" elapsed="0.000203"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:07:36.183123" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T01:07:36.182982" elapsed="0.000292"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:07:36.183710" level="INFO">{}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:07:36.183437" elapsed="0.000318"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:07:36.184174" level="INFO">1</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:07:36.183916" elapsed="0.000305"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:07:36.185060" level="FAIL">Dictionary does not contain key '1'.</msg>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="FAIL" start="2026-04-08T01:07:36.184812" elapsed="0.000377">Dictionary does not contain key '1'.</status>
</kw>
<msg time="2026-04-08T01:07:36.185525" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:07:36.185570" level="INFO">${old_connection_index} = Dictionary does not contain key '1'.</msg>
<var>${status}</var>
<var>${old_connection_index}</var>
<arg>Get From Dictionary</arg>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:07:36.184391" elapsed="0.001202"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='PASS'">
<kw name="Run Keywords" owner="BuiltIn">
<arg>SSHLibrary.Switch_Connection</arg>
<arg>${old_connection_index}</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Executes all the given keywords in a sequence.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:36.185904" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:07:36.185670" elapsed="0.000308"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:36.185651" elapsed="0.000350"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:07:36.186779" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:07:36.186513" elapsed="0.000292"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:07:36.186852" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T01:07:36.187000" level="INFO">${odl_ip} = 10.30.170.48</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:07:36.186235" elapsed="0.000789"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${odl_ip}</arg>
<arg>port=${KARAF_SHELL_PORT}</arg>
<arg>prompt=${KARAF_PROMPT_LOGIN}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T01:07:36.187206" elapsed="0.000409"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:07:36.187949" level="INFO">index=636
host=10.30.170.48
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-08T01:07:36.188047" level="INFO">${karaf_connection_object} = index=636
host=10.30.170.48
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_err...</msg>
<var>${karaf_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T01:07:36.187793" elapsed="0.000279"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<arg>${karaf_connection_object.index}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:07:36.188250" elapsed="0.002402"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-08T01:07:36.191175" level="INFO">Logging into '10.30.170.48:8101' as 'karaf'.</msg>
<msg time="2026-04-08T01:07:36.360399" level="INFO">Read output: [33m                                                                                           
[33m    ________                       ________                .__  .__       .__     __       
[33m    \_____  \ ______   ____   ____ \______ \ _____  ___.__.|  | |__| ____ |  |___/  |_     
[33m     /   |   \\____ \_/ __ \ /    \ |    |  \\__  \&lt;   |  ||  | |  |/ ___\|  |  \   __\    
[33m    /    |    \  |_&gt; &gt;  ___/|   |  \|    `   \/ __ \\___  ||  |_|  / /_/  &gt;   Y  \  |      
[33m    \_______  /   __/ \___  &gt;___|  /_______  (____  / ____||____/__\___  /|___|  /__|      
[33m            \/|__|        \/     \/        \/     \/\/            /_____/      \/          
[33m                                                                                           

Hit '[1m&lt;tab&gt;[0m' for a list of available commands
and '[1m[cmd] --help[0m' for help on a specific command.
Hit '[1m&lt;ctrl-d&gt;[0m' or type '[1msystem:shutdown[0m' or '[1mlogout[0m' to shutdown OpenDaylight.

[?1h=[90m~[0m                                                                                [?2004hopendaylight-user</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="PASS" start="2026-04-08T01:07:36.190826" elapsed="0.169702"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:07:36.363925" elapsed="0.000388"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T01:07:36.364489" elapsed="0.000162"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T01:07:36.364810" elapsed="0.000101"/>
</kw>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:07:36.361708" elapsed="0.003255"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T01:07:36.361020" elapsed="0.003989"/>
</kw>
<arg>member_index=${index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for ${member_index},
close the previous connection. In any case create a new connection
to karaf console for ${member_index}, set correct prompt set and login to karaf console.
Store connection index for ${member_index} and restore the previous active connection.</doc>
<status status="PASS" start="2026-04-08T01:07:36.182337" elapsed="0.182724"/>
</kw>
<arg>3s</arg>
<arg>1s</arg>
<arg>Open_Controller_Karaf_Console_On_Background</arg>
<arg>member_index=${index}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-08T01:07:36.170276" elapsed="0.194833"/>
</kw>
<arg>BuiltIn.Wait_Until_Keyword_Succeeds</arg>
<arg>3s</arg>
<arg>1s</arg>
<arg>Open_Controller_Karaf_Console_On_Background</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:07:36.169846" elapsed="0.195332"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T01:07:36.169688" elapsed="0.195534"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:07:36.378114" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:07:36.377996" elapsed="0.000184"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:36.377972" elapsed="0.000233"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:07:36.378504" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T01:07:36.378371" elapsed="0.000264"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:07:36.379058" level="INFO">{1: 636}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:07:36.378797" elapsed="0.000305"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:07:36.379520" level="INFO">2</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:07:36.379278" elapsed="0.000310"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:07:36.380400" level="FAIL">Dictionary does not contain key '2'.</msg>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="FAIL" start="2026-04-08T01:07:36.380166" elapsed="0.000343">Dictionary does not contain key '2'.</status>
</kw>
<msg time="2026-04-08T01:07:36.380616" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:07:36.380661" level="INFO">${old_connection_index} = Dictionary does not contain key '2'.</msg>
<var>${status}</var>
<var>${old_connection_index}</var>
<arg>Get From Dictionary</arg>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:07:36.379758" elapsed="0.000926"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='PASS'">
<kw name="Run Keywords" owner="BuiltIn">
<arg>SSHLibrary.Switch_Connection</arg>
<arg>${old_connection_index}</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Executes all the given keywords in a sequence.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:36.380991" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:07:36.380760" elapsed="0.000304"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:36.380741" elapsed="0.000346"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:07:36.382053" level="INFO">${ip_address} = 10.30.170.131</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:07:36.381785" elapsed="0.000294"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:07:36.382126" elapsed="0.000048"/>
</return>
<msg time="2026-04-08T01:07:36.382300" level="INFO">${odl_ip} = 10.30.170.131</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:07:36.381313" elapsed="0.001012"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${odl_ip}</arg>
<arg>port=${KARAF_SHELL_PORT}</arg>
<arg>prompt=${KARAF_PROMPT_LOGIN}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T01:07:36.382489" elapsed="0.000400"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:07:36.383240" level="INFO">index=638
host=10.30.170.131
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-08T01:07:36.383341" level="INFO">${karaf_connection_object} = index=638
host=10.30.170.131
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_er...</msg>
<var>${karaf_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T01:07:36.383068" elapsed="0.000300"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<arg>${karaf_connection_object.index}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:07:36.383573" elapsed="0.002140"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-08T01:07:36.386146" level="INFO">Logging into '10.30.170.131:8101' as 'karaf'.</msg>
<msg time="2026-04-08T01:07:36.513724" level="INFO">Read output: [33m                                                                                           
[33m    ________                       ________                .__  .__       .__     __       
[33m    \_____  \ ______   ____   ____ \______ \ _____  ___.__.|  | |__| ____ |  |___/  |_     
[33m     /   |   \\____ \_/ __ \ /    \ |    |  \\__  \&lt;   |  ||  | |  |/ ___\|  |  \   __\    
[33m    /    |    \  |_&gt; &gt;  ___/|   |  \|    `   \/ __ \\___  ||  |_|  / /_/  &gt;   Y  \  |      
[33m    \_______  /   __/ \___  &gt;___|  /_______  (____  / ____||____/__\___  /|___|  /__|      
[33m            \/|__|        \/     \/        \/     \/\/            /_____/      \/          
[33m                                                                                           

Hit '[1m&lt;tab&gt;[0m' for a list of available commands
and '[1m[cmd] --help[0m' for help on a specific command.
Hit '[1m&lt;ctrl-d&gt;[0m' or type '[1msystem:shutdown[0m' or '[1mlogout[0m' to shutdown OpenDaylight.

[?1h=[90m~[0m                                                                                [?2004hopendaylight-user</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="PASS" start="2026-04-08T01:07:36.385890" elapsed="0.127955"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:07:36.517236" elapsed="0.000347"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T01:07:36.517760" elapsed="0.000159"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T01:07:36.518080" elapsed="0.000123"/>
</kw>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:07:36.514953" elapsed="0.003304"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T01:07:36.514273" elapsed="0.004031"/>
</kw>
<arg>member_index=${index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for ${member_index},
close the previous connection. In any case create a new connection
to karaf console for ${member_index}, set correct prompt set and login to karaf console.
Store connection index for ${member_index} and restore the previous active connection.</doc>
<status status="PASS" start="2026-04-08T01:07:36.377709" elapsed="0.140646"/>
</kw>
<arg>3s</arg>
<arg>1s</arg>
<arg>Open_Controller_Karaf_Console_On_Background</arg>
<arg>member_index=${index}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-08T01:07:36.365855" elapsed="0.152547"/>
</kw>
<arg>BuiltIn.Wait_Until_Keyword_Succeeds</arg>
<arg>3s</arg>
<arg>1s</arg>
<arg>Open_Controller_Karaf_Console_On_Background</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:07:36.365477" elapsed="0.152975"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T01:07:36.365323" elapsed="0.153170"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:07:36.531585" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:07:36.531468" elapsed="0.000181"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:36.531445" elapsed="0.000228"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:07:36.531970" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T01:07:36.531837" elapsed="0.000265"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:07:36.532559" level="INFO">{1: 636, 2: 638}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:07:36.532292" elapsed="0.000310"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:07:36.533007" level="INFO">3</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:07:36.532766" elapsed="0.000287"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:07:36.533849" level="FAIL">Dictionary does not contain key '3'.</msg>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="FAIL" start="2026-04-08T01:07:36.533623" elapsed="0.000328">Dictionary does not contain key '3'.</status>
</kw>
<msg time="2026-04-08T01:07:36.534057" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:07:36.534101" level="INFO">${old_connection_index} = Dictionary does not contain key '3'.</msg>
<var>${status}</var>
<var>${old_connection_index}</var>
<arg>Get From Dictionary</arg>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:07:36.533238" elapsed="0.000886"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='PASS'">
<kw name="Run Keywords" owner="BuiltIn">
<arg>SSHLibrary.Switch_Connection</arg>
<arg>${old_connection_index}</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Executes all the given keywords in a sequence.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:36.534444" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:07:36.534215" elapsed="0.000302"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:36.534196" elapsed="0.000344"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:07:36.535367" level="INFO">${ip_address} = 10.30.171.110</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:07:36.535022" elapsed="0.000372"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:07:36.535441" elapsed="0.000031"/>
</return>
<msg time="2026-04-08T01:07:36.535616" level="INFO">${odl_ip} = 10.30.171.110</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:07:36.534745" elapsed="0.000896"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${odl_ip}</arg>
<arg>port=${KARAF_SHELL_PORT}</arg>
<arg>prompt=${KARAF_PROMPT_LOGIN}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T01:07:36.535806" elapsed="0.000420"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:07:36.536562" level="INFO">index=640
host=10.30.171.110
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-08T01:07:36.536660" level="INFO">${karaf_connection_object} = index=640
host=10.30.171.110
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_er...</msg>
<var>${karaf_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T01:07:36.536405" elapsed="0.000281"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<arg>${karaf_connection_object.index}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:07:36.536844" elapsed="0.002127"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-08T01:07:36.539414" level="INFO">Logging into '10.30.171.110:8101' as 'karaf'.</msg>
<msg time="2026-04-08T01:07:36.664139" level="INFO">Read output: [33m                                                                                           
[33m    ________                       ________                .__  .__       .__     __       
[33m    \_____  \ ______   ____   ____ \______ \ _____  ___.__.|  | |__| ____ |  |___/  |_     
[33m     /   |   \\____ \_/ __ \ /    \ |    |  \\__  \&lt;   |  ||  | |  |/ ___\|  |  \   __\    
[33m    /    |    \  |_&gt; &gt;  ___/|   |  \|    `   \/ __ \\___  ||  |_|  / /_/  &gt;   Y  \  |      
[33m    \_______  /   __/ \___  &gt;___|  /_______  (____  / ____||____/__\___  /|___|  /__|      
[33m            \/|__|        \/     \/        \/     \/\/            /_____/      \/          
[33m                                                                                           

Hit '[1m&lt;tab&gt;[0m' for a list of available commands
and '[1m[cmd] --help[0m' for help on a specific command.
Hit '[1m&lt;ctrl-d&gt;[0m' or type '[1msystem:shutdown[0m' or '[1mlogout[0m' to shutdown OpenDaylight.

[?1h=[90m~[0m                                                                                [?2004hopendaylight-user</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="PASS" start="2026-04-08T01:07:36.539144" elapsed="0.125125"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:07:36.667681" elapsed="0.000346"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T01:07:36.668239" elapsed="0.000157"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T01:07:36.668554" elapsed="0.000100"/>
</kw>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:07:36.665272" elapsed="0.003436"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T01:07:36.664633" elapsed="0.004121"/>
</kw>
<arg>member_index=${index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for ${member_index},
close the previous connection. In any case create a new connection
to karaf console for ${member_index}, set correct prompt set and login to karaf console.
Store connection index for ${member_index} and restore the previous active connection.</doc>
<status status="PASS" start="2026-04-08T01:07:36.531178" elapsed="0.137628"/>
</kw>
<arg>3s</arg>
<arg>1s</arg>
<arg>Open_Controller_Karaf_Console_On_Background</arg>
<arg>member_index=${index}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-08T01:07:36.519128" elapsed="0.149726"/>
</kw>
<arg>BuiltIn.Wait_Until_Keyword_Succeeds</arg>
<arg>3s</arg>
<arg>1s</arg>
<arg>Open_Controller_Karaf_Console_On_Background</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:07:36.518747" elapsed="0.150158"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T01:07:36.518594" elapsed="0.150352"/>
</iter>
<var>${index}</var>
<value>@{ClusterManagement__member_index_list}</value>
<status status="PASS" start="2026-04-08T01:07:36.169521" elapsed="0.499462"/>
</for>
<arg>http_timeout=${http_timeout}</arg>
<doc>Initialize ClusterManagement. Open ssh karaf connections to each ODL.</doc>
<status status="PASS" start="2026-04-08T01:07:35.043764" elapsed="1.625284"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Test_Suite_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:07:36.671658" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:07:36.671544" elapsed="0.000162"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:36.671523" elapsed="0.000205"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:07:36.676349" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:07:36.676240" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:36.676220" elapsed="0.000196"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:07:36.677391" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:07:36.676986" elapsed="0.000431"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:07:36.677944" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:07:36.677638" elapsed="0.000332"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T01:07:36.678014" elapsed="0.000038"/>
</return>
<msg time="2026-04-08T01:07:36.678195" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T01:07:36.676651" elapsed="0.001569"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:07:36.683316" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:07:36.683208" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:36.683190" elapsed="0.000192"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:07:36.684607" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:07:36.684482" elapsed="0.000171"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:36.684464" elapsed="0.000210"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:07:36.685145" level="INFO">${karaf_connection_index} = 636</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:07:36.684828" elapsed="0.000360"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:07:36.685599" level="INFO">${current_connection_index} = None</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:07:36.685362" elapsed="0.000263"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:07:36.734481" level="INFO">@root&gt;log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "s "u "i "t "e "[C "/ "w "/ "w "o "r "k "s "p "a "c "e "/ "o "p "e "[78Cn "[A[78Cf</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:07:36.686312" elapsed="0.048298"/>
</kw>
<msg time="2026-04-08T01:07:36.734751" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T01:07:36.734797" level="INFO">${message_write} = @root&gt;log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "s "u "i "t "e "[C "/ "w "/ "w "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:07:36.685798" elapsed="0.049035"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T01:07:36.795639" level="INFO">"l "o "w "p "l "u "g "i "n "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "o "n "l "y "- "v "a "n "a "d "i "u "m "/ "t "e "s "t "/ "c "s "i "t "/ "s "u "i "t "e "s "/ "o "p "e "n "f "l "o "w "p "l "u "g "i "n "/ "[78CE "[A[78Cn
 "t "i "t "y "O "w "n "e "r "s "h "i "p "/ "0 "2 "0 "_ "C "l "u "s "t "e "r "_ "N "o "d "e "_ "F "a "i "l "u "r "e ". "r "o "b "o "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T01:07:36.735553" elapsed="0.060242"/>
</kw>
<msg time="2026-04-08T01:07:36.795918" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T01:07:36.795964" level="INFO">${message_wait} =  "l "o "w "p "l "u "g "i "n "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "o "n "l "y "- "v "a "n ...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:07:36.735027" elapsed="0.060973"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:36.796342" elapsed="0.000049"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:07:36.796077" elapsed="0.000410"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:36.796058" elapsed="0.000454"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:07:36.797064" level="INFO"> "l "o "w "p "l "u "g "i "n "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "o "n "l "y "- "v "a "n "a "d "i "u "m "/ "t "e "s "t "/ "c "s "i "t "/ "s "u "i "t "e "s "/ "o "p "e "n "f "l "o "w "p "l "u "g "i "n "/ "[78CE "[A[78Cn
 "t "i "t "y "O "w "n "e "r "s "h "i "p "/ "0 "2 "0 "_ "C "l "u "s "t "e "r "_ "N "o "d "e "_ "F "a "i "l "u "r "e ". "r "o "b "o "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:07:36.796666" elapsed="0.000617"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:36.797598" elapsed="0.000048"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:07:36.797353" elapsed="0.000390"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:36.797335" elapsed="0.000433"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T01:07:36.797801" elapsed="0.000029"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:07:36.799906" elapsed="0.000459"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T01:07:36.800716" elapsed="0.000303"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T01:07:36.801599" elapsed="0.000229"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:07:36.799135" elapsed="0.002817"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T01:07:36.798094" elapsed="0.003995"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T01:07:36.684193" elapsed="0.118015"/>
</kw>
<msg time="2026-04-08T01:07:36.802302" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:07:36.802345" level="INFO">${message} =  "l "o "w "p "l "u "g "i "n "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "o "n "l "y "- "v "a "n ...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:07:36.683541" elapsed="0.118841"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T01:07:36.802564" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-08T01:07:36.802459" elapsed="0.000164"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:36.802440" elapsed="0.000206"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:36.803043" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:36.803398" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T01:07:36.803468" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T01:07:36.682905" elapsed="0.120667"/>
</kw>
<msg time="2026-04-08T01:07:36.803663" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:07:36.803706" level="INFO">${output} =  "l "o "w "p "l "u "g "i "n "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "o "n "l "y "- "v "a "n ...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:07:36.678595" elapsed="0.125148"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:36.804072" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:07:36.803817" elapsed="0.000307"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:36.803800" elapsed="0.000347"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T01:07:36.678445" elapsed="0.125741"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:07:36.809484" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:07:36.809374" elapsed="0.000157"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:36.809355" elapsed="0.000198"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:07:36.810805" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:07:36.810677" elapsed="0.000174"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:36.810659" elapsed="0.000214"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:07:36.811370" level="INFO">${karaf_connection_index} = 638</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:07:36.811029" elapsed="0.000368"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:07:36.811802" level="INFO">${current_connection_index} = None</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:07:36.811567" elapsed="0.000261"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:07:36.851152" level="INFO">@root&gt;log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "s "u "i "t "e "[C "/ "w "/ "w "o "r "k "s "p "a "c "e "/ "o "p "e "[78Cn "[A[78Cf</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:07:36.812510" elapsed="0.038799"/>
</kw>
<msg time="2026-04-08T01:07:36.851456" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T01:07:36.851503" level="INFO">${message_write} = @root&gt;log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "s "u "i "t "e "[C "/ "w "/ "w "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:07:36.811998" elapsed="0.039542"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T01:07:36.916820" level="INFO">"l "o "w "p "l "u "g "i "n "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "o "n "l "y "- "v "a "n "a "d "i "u "m "/ "t "e "s "t "/ "c "s "i "t "/ "s "u "i "t "e "s "/ "o "p "e "n "f "l "o "w "p "l "u "g "i "n "/ "[78CE "[A[78Cn
 "t "i "t "y "O "w "n "e "r "s "h "i "p "/ "0 "2 "0 "_ "C "l "u "s "t "e "r "_ "N "o "d "e "_ "F "a "i "l "u "r "e ". "r "o "b "o "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T01:07:36.852300" elapsed="0.064685"/>
</kw>
<msg time="2026-04-08T01:07:36.917113" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T01:07:36.917173" level="INFO">${message_wait} =  "l "o "w "p "l "u "g "i "n "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "o "n "l "y "- "v "a "n ...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:07:36.851726" elapsed="0.065533"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:36.917602" elapsed="0.000049"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:07:36.917341" elapsed="0.000408"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:36.917320" elapsed="0.000455"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:07:36.918424" level="INFO"> "l "o "w "p "l "u "g "i "n "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "o "n "l "y "- "v "a "n "a "d "i "u "m "/ "t "e "s "t "/ "c "s "i "t "/ "s "u "i "t "e "s "/ "o "p "e "n "f "l "o "w "p "l "u "g "i "n "/ "[78CE "[A[78Cn
 "t "i "t "y "O "w "n "e "r "s "h "i "p "/ "0 "2 "0 "_ "C "l "u "s "t "e "r "_ "N "o "d "e "_ "F "a "i "l "u "r "e ". "r "o "b "o "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:07:36.917934" elapsed="0.000584"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:36.918835" elapsed="0.000049"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:07:36.918586" elapsed="0.000395"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:36.918568" elapsed="0.000439"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T01:07:36.919041" elapsed="0.000031"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:07:36.921028" elapsed="0.000487"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T01:07:36.921862" elapsed="0.000282"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T01:07:36.922721" elapsed="0.001761"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:07:36.920238" elapsed="0.004337"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T01:07:36.919358" elapsed="0.005352"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T01:07:36.810393" elapsed="0.114426"/>
</kw>
<msg time="2026-04-08T01:07:36.924912" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:07:36.924956" level="INFO">${message} =  "l "o "w "p "l "u "g "i "n "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "o "n "l "y "- "v "a "n ...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:07:36.809722" elapsed="0.115269"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T01:07:36.925193" elapsed="0.000028"/>
</return>
<status status="PASS" start="2026-04-08T01:07:36.925070" elapsed="0.000185"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:36.925051" elapsed="0.000228"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 2,
close the previous connection. In any case create a new connection
to karaf console for 2, set correct prompt set and login to karaf console.
Store connection index for 2 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:36.925678" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:36.926020" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T01:07:36.926092" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T01:07:36.809042" elapsed="0.117302"/>
</kw>
<msg time="2026-04-08T01:07:36.926438" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:07:36.926482" level="INFO">${output} =  "l "o "w "p "l "u "g "i "n "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "o "n "l "y "- "v "a "n ...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:07:36.804455" elapsed="0.122062"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:36.926853" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:07:36.926593" elapsed="0.000314"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:36.926575" elapsed="0.000355"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T01:07:36.804306" elapsed="0.122646"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:07:36.932200" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:07:36.932078" elapsed="0.000167"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:36.932060" elapsed="0.000208"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:07:36.933456" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:07:36.933330" elapsed="0.000172"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:36.933313" elapsed="0.000244"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:07:36.934043" level="INFO">${karaf_connection_index} = 640</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:07:36.933718" elapsed="0.000354"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:07:36.934546" level="INFO">${current_connection_index} = None</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:07:36.934312" elapsed="0.000260"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:07:36.975968" level="INFO">@root&gt;log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "s "u "i "t "e "[C "/ "w "/ "w "o "r "k "s "p "a "c "e "/ "o "p "e "[78Cn "[A[78Cf</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:07:36.935256" elapsed="0.040842"/>
</kw>
<msg time="2026-04-08T01:07:36.976241" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T01:07:36.976288" level="INFO">${message_write} = @root&gt;log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "s "u "i "t "e "[C "/ "w "/ "w "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:07:36.934744" elapsed="0.041581"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T01:07:37.035596" level="INFO">"l "o "w "p "l "u "g "i "n "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "o "n "l "y "- "v "a "n "a "d "i "u "m "/ "t "e "s "t "/ "c "s "i "t "/ "s "u "i "t "e "s "/ "o "p "e "n "f "l "o "w "p "l "u "g "i "n "/ "[78CE "[A[78Cn
 "t "i "t "y "O "w "n "e "r "s "h "i "p "/ "0 "2 "0 "_ "C "l "u "s "t "e "r "_ "N "o "d "e "_ "F "a "i "l "u "r "e ". "r "o "b "o "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T01:07:36.977040" elapsed="0.058739"/>
</kw>
<msg time="2026-04-08T01:07:37.035914" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T01:07:37.035962" level="INFO">${message_wait} =  "l "o "w "p "l "u "g "i "n "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "o "n "l "y "- "v "a "n ...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:07:36.976508" elapsed="0.059490"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:37.036474" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:07:37.036086" elapsed="0.000539"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:37.036063" elapsed="0.000589"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:07:37.037189" level="INFO"> "l "o "w "p "l "u "g "i "n "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "o "n "l "y "- "v "a "n "a "d "i "u "m "/ "t "e "s "t "/ "c "s "i "t "/ "s "u "i "t "e "s "/ "o "p "e "n "f "l "o "w "p "l "u "g "i "n "/ "[78CE "[A[78Cn
 "t "i "t "y "O "w "n "e "r "s "h "i "p "/ "0 "2 "0 "_ "C "l "u "s "t "e "r "_ "N "o "d "e "_ "F "a "i "l "u "r "e ". "r "o "b "o "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:07:37.036811" elapsed="0.000467"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:37.037593" elapsed="0.000048"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:07:37.037346" elapsed="0.000390"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:37.037328" elapsed="0.000434"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T01:07:37.037796" elapsed="0.000034"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:07:37.039802" elapsed="0.000711"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T01:07:37.040863" elapsed="0.000308"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T01:07:37.041510" elapsed="0.000232"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:07:37.039006" elapsed="0.002824"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T01:07:37.038116" elapsed="0.003848"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T01:07:36.933022" elapsed="0.109043"/>
</kw>
<msg time="2026-04-08T01:07:37.042172" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:07:37.042219" level="INFO">${message} =  "l "o "w "p "l "u "g "i "n "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "o "n "l "y "- "v "a "n ...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:07:36.932429" elapsed="0.109825"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T01:07:37.042439" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-08T01:07:37.042332" elapsed="0.000165"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:37.042313" elapsed="0.000208"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 3,
close the previous connection. In any case create a new connection
to karaf console for 3, set correct prompt set and login to karaf console.
Store connection index for 3 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:37.042924" elapsed="0.000024"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:37.043545" elapsed="0.000027"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T01:07:37.043619" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T01:07:36.931790" elapsed="0.111938"/>
</kw>
<msg time="2026-04-08T01:07:37.043821" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:07:37.043864" level="INFO">${output} =  "l "o "w "p "l "u "g "i "n "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "o "n "l "y "- "v "a "n ...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:07:36.927245" elapsed="0.116654"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:37.044297" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:07:37.043973" elapsed="0.000379"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:37.043956" elapsed="0.000420"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T01:07:36.927078" elapsed="0.117321"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-08T01:07:36.678274" elapsed="0.366155"/>
</for>
<arg>Starting suite ${SUITE_SOURCE}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-08T01:07:36.675899" elapsed="0.368586"/>
</kw>
<doc>Log suite name to karaf log, useful in suite setup.</doc>
<status status="PASS" start="2026-04-08T01:07:36.669674" elapsed="0.374866"/>
</kw>
<arg>KarafKeywords.Log_Test_Suite_Start_To_Controller_Karaf</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:07:36.669233" elapsed="0.375349"/>
</kw>
<doc>Prepare both FailFast and Karaf logging, log that the caller suite has started.
This keyword is to be used in suite setup, and without it the other keywords may not work properly.</doc>
<status status="PASS" start="2026-04-08T01:07:35.038738" elapsed="2.005893"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:07:37.045087" level="INFO">${mininet_conn_id} = 645</msg>
<var>${mininet_conn_id}</var>
<arg>${TOOLS_SYSTEM_IP}</arg>
<arg>prompt=${TOOLS_SYSTEM_PROMPT}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T01:07:37.044793" elapsed="0.000320"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-08T01:07:37.045622" level="INFO">${mininet_conn_id} = 645</msg>
<arg>${mininet_conn_id}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-08T01:07:37.045303" elapsed="0.000361"/>
</kw>
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T01:07:37.046032" level="INFO">Logging into '10.30.170.192:22' as 'jenkins'.</msg>
<msg time="2026-04-08T01:07:37.365808" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 01:07:32 UTC 2026

  System load:  0.0                Processes:             106
  Usage of /:   19.5% of 38.58GB   Users logged in:       0
  Memory usage: 5%                 IPv4 address for ens3: 10.30.170.192
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 01:07:33 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-1-mininet-ovs-217-0 ~]&gt;</msg>
<arg>${TOOLS_SYSTEM_USER}</arg>
<arg>${USER_HOME}/.ssh/id_rsa</arg>
<arg>any</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T01:07:37.045826" elapsed="0.320101"/>
</kw>
<kw name="Put File" owner="SSHLibrary">
<msg time="2026-04-08T01:07:37.373248" level="INFO">[chan 1] Opened sftp connection (server version 3)</msg>
<msg time="2026-04-08T01:07:37.381263" level="INFO">'/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/EntityOwnership/../../../libraries/DynamicMininet.py' -&gt; '/home/jenkins//DynamicMininet.py'</msg>
<arg>/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/EntityOwnership/../../../libraries/DynamicMininet.py</arg>
<arg>.</arg>
<doc>Uploads file(s) from the local machine to the remote machine.</doc>
<status status="PASS" start="2026-04-08T01:07:37.366189" elapsed="0.015205"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T01:07:37.382009" level="INFO">Executing command 'sudo ovs-vsctl set-manager ptcp:6644'.</msg>
<msg time="2026-04-08T01:07:37.434856" level="INFO">Command exited with return code 0.</msg>
<arg>sudo ovs-vsctl set-manager ptcp:6644</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T01:07:37.381790" elapsed="0.053197"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T01:07:37.435635" level="INFO">Executing command 'sudo mn -c'.</msg>
<msg time="2026-04-08T01:07:38.625734" level="INFO">Command exited with return code 0.</msg>
<arg>sudo mn -c</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T01:07:37.435416" elapsed="1.190523"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:07:38.663881" level="INFO">sudo mn --topo linear,1</msg>
<arg>${START_CMD}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:07:38.626473" elapsed="0.037471"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-08T01:07:38.780905" level="INFO">[?2004l*** No default OpenFlow controller found for default switch!
*** Falling back to OVS Bridge
*** Creating network
*** Adding controller
*** Adding hosts:
h1 
*** Adding switches:
s1 
*** Adding links:
(h1, s1) 
*** Configuring hosts
h1 
*** Starting controller

*** Starting 1 switches
s1 ...
*** Starting CLI:
mininet&gt;</msg>
<arg>mininet&gt;</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-08T01:07:38.664121" elapsed="0.116870"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:07:38.781678" level="INFO">${cntls_list} = ['10.30.170.48', '10.30.170.131', '10.30.171.110']</msg>
<var>${cntls_list}</var>
<arg>${ODL_SYSTEM_1_IP}</arg>
<arg>${ODL_SYSTEM_2_IP}</arg>
<arg>${ODL_SYSTEM_3_IP}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:07:38.781216" elapsed="0.000488"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:07:38.782227" level="INFO">${switch_list} = []</msg>
<var>${switch_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:07:38.781963" elapsed="0.000290"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:07:38.783020" level="INFO">${sid} = 1</msg>
<var>${sid}</var>
<arg>${i}+1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:07:38.782680" elapsed="0.000367"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${switch_list}</arg>
<arg>s${sid}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-08T01:07:38.783229" elapsed="0.000227"/>
</kw>
<var name="${i}">0</var>
<status status="PASS" start="2026-04-08T01:07:38.782529" elapsed="0.000966"/>
</iter>
<var>${i}</var>
<value>0</value>
<value>${SWITCHES}</value>
<status status="PASS" start="2026-04-08T01:07:38.782313" elapsed="0.001213"/>
</for>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-08T01:07:38.788253" level="INFO">${active_member} = 1</msg>
<arg>${active_member}</arg>
<arg>1</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-08T01:07:38.783705" elapsed="0.004594"/>
</kw>
<kw name="Setup Clustered Controller For Switches" owner="OvsManager">
<for flavor="IN">
<iter>
<kw name="Set Bridge Controllers" owner="OvsManager">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:07:38.790173" level="INFO">${cmd} = sh ovs-vsctl set bridge s1 protocols=OpenFlow13</msg>
<var>${cmd}</var>
<arg>${lcmd_prefix} ovs-vsctl set bridge ${bridge} protocols=OpenFlow${ofversion}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:07:38.789723" elapsed="0.000479"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:07:38.791910" level="INFO">sh ovs-vsctl set bridge s1 protocols=OpenFlow13</msg>
<arg>${cmd}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:07:38.790367" elapsed="0.001600"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-08T01:07:38.798810" level="INFO">mininet&gt;</msg>
<msg time="2026-04-08T01:07:38.798900" level="INFO">${output} = mininet&gt;</msg>
<var>${output}</var>
<arg>${lprompt}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-08T01:07:38.792137" elapsed="0.006787"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:07:38.799450" level="INFO">mininet&gt;</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:07:38.799195" elapsed="0.000300"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:07:38.799968" level="INFO">${cmd} = sh ovs-vsctl set-controller s1</msg>
<var>${cmd}</var>
<arg>${lcmd_prefix} ovs-vsctl set-controller ${bridge}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:07:38.799658" elapsed="0.000335"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:07:38.800838" level="INFO">${cmd} = sh ovs-vsctl set-controller s1 tcp:10.30.170.48:6654</msg>
<var>${cmd}</var>
<arg>${disconnected}==${False}</arg>
<arg>${cmd} tcp:${cntl}:6653</arg>
<arg>${cmd} tcp:${cntl}:6654</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:07:38.800336" elapsed="0.000529"/>
</kw>
<var name="${cntl}">10.30.170.48</var>
<status status="PASS" start="2026-04-08T01:07:38.800183" elapsed="0.000722"/>
</iter>
<iter>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:07:38.801549" level="INFO">${cmd} = sh ovs-vsctl set-controller s1 tcp:10.30.170.48:6654 tcp:10.30.170.131:6654</msg>
<var>${cmd}</var>
<arg>${disconnected}==${False}</arg>
<arg>${cmd} tcp:${cntl}:6653</arg>
<arg>${cmd} tcp:${cntl}:6654</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:07:38.801132" elapsed="0.000444"/>
</kw>
<var name="${cntl}">10.30.170.131</var>
<status status="PASS" start="2026-04-08T01:07:38.800983" elapsed="0.000633"/>
</iter>
<iter>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:07:38.802256" level="INFO">${cmd} = sh ovs-vsctl set-controller s1 tcp:10.30.170.48:6654 tcp:10.30.170.131:6654 tcp:10.30.171.110:6654</msg>
<var>${cmd}</var>
<arg>${disconnected}==${False}</arg>
<arg>${cmd} tcp:${cntl}:6653</arg>
<arg>${cmd} tcp:${cntl}:6654</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:07:38.801840" elapsed="0.000443"/>
</kw>
<var name="${cntl}">10.30.171.110</var>
<status status="PASS" start="2026-04-08T01:07:38.801692" elapsed="0.000631"/>
</iter>
<var>${cntl}</var>
<value>@{controllers}</value>
<status status="PASS" start="2026-04-08T01:07:38.800042" elapsed="0.002310"/>
</for>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:07:38.802748" level="INFO">sh ovs-vsctl set-controller s1 tcp:10.30.170.48:6654 tcp:10.30.170.131:6654 tcp:10.30.171.110:6654</msg>
<arg>${cmd}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:07:38.802512" elapsed="0.000280"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:07:38.804837" level="INFO">sh ovs-vsctl set-controller s1 tcp:10.30.170.48:6654 tcp:10.30.170.131:6654 tcp:10.30.171.110:6654</msg>
<arg>${cmd}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:07:38.802947" elapsed="0.001946"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-08T01:07:38.811385" level="INFO">mininet&gt;</msg>
<msg time="2026-04-08T01:07:38.811472" level="INFO">${output} = mininet&gt;</msg>
<var>${output}</var>
<arg>${lprompt}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-08T01:07:38.805057" elapsed="0.006439"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:07:38.811938" level="INFO">mininet&gt;</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:07:38.811692" elapsed="0.000290"/>
</kw>
<arg>${switch_name}</arg>
<arg>${controller_ips}</arg>
<arg>disconnected=${True}</arg>
<doc>Adds controller to the bridge</doc>
<status status="PASS" start="2026-04-08T01:07:38.789289" elapsed="0.022749"/>
</kw>
<var name="${switch_name}">s1</var>
<status status="PASS" start="2026-04-08T01:07:38.789016" elapsed="0.023058"/>
</iter>
<var>${switch_name}</var>
<value>@{switches}</value>
<status status="PASS" start="2026-04-08T01:07:38.788891" elapsed="0.023212"/>
</for>
<kw name="Get Ovsdb Data" owner="OvsManager">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:07:38.813757" level="INFO">sh ovs-vsctl list Bridge</msg>
<arg>${lcmd_prefix} ${SH_BR_CMD}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:07:38.812645" elapsed="0.001166"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-08T01:07:38.824877" level="INFO">_uuid               : 8f055735-f019-4beb-a634-c1e00548280d
auto_attach         : []
controller          : [000a8ba5-7f3e-4e8d-99d4-31c48e21feff, 22793d5c-795f-4309-9fa8-c249cdadbf8c, ab6698fb-4609-4e7c-a992-00d9d73cf5b1]
datapath_id         : "0000000000000001"
datapath_type       : ""
datapath_version    : "&lt;unknown&gt;"
external_ids        : {}
fail_mode           : standalone
flood_vlans         : []
flow_tables         : {}
ipfix               : []
mcast_snooping_enable: false
mirrors             : []
name                : s1
netflow             : []
other_config        : {datapath-id="0000000000000001", disable-in-band="true", dp-desc=s1}
ports               : [973f36a8-a3cd-429b-a39b-c0175842f5bc, a232544a-2590-49d1-a070-3dbc4b7e4802]
protocols           : [OpenFlow13]
rstp_enable         : false
rstp_status         : {}
sflow               : []
status              : {}
stp_enable          : false
mininet&gt;</msg>
<msg time="2026-04-08T01:07:38.825026" level="INFO">${brstdout} = _uuid               : 8f055735-f019-4beb-a634-c1e00548280d
auto_attach         : []
controller          : [000a8ba5-7f3e-4e8d-99d4-31c48e21feff, 22793d5c-795f-4309-9fa8-c249cdadbf8c, ab6698fb-4609-4...</msg>
<var>${brstdout}</var>
<arg>${lprompt}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-08T01:07:38.813976" elapsed="0.011077"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:07:38.825514" level="INFO">_uuid               : 8f055735-f019-4beb-a634-c1e00548280d
auto_attach         : []
controller          : [000a8ba5-7f3e-4e8d-99d4-31c48e21feff, 22793d5c-795f-4309-9fa8-c249cdadbf8c, ab6698fb-4609-4e7c-a992-00d9d73cf5b1]
datapath_id         : "0000000000000001"
datapath_type       : ""
datapath_version    : "&lt;unknown&gt;"
external_ids        : {}
fail_mode           : standalone
flood_vlans         : []
flow_tables         : {}
ipfix               : []
mcast_snooping_enable: false
mirrors             : []
name                : s1
netflow             : []
other_config        : {datapath-id="0000000000000001", disable-in-band="true", dp-desc=s1}
ports               : [973f36a8-a3cd-429b-a39b-c0175842f5bc, a232544a-2590-49d1-a070-3dbc4b7e4802]
protocols           : [OpenFlow13]
rstp_enable         : false
rstp_status         : {}
sflow               : []
status              : {}
stp_enable          : false
mininet&gt;</msg>
<arg>${brstdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:07:38.825267" elapsed="0.000302"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:07:38.827224" level="INFO">sh ovs-vsctl list Controller</msg>
<arg>${lcmd_prefix} ${SH_CNTL_CMD}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:07:38.825728" elapsed="0.001551"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-08T01:07:38.845959" level="INFO">_uuid               : 22793d5c-795f-4309-9fa8-c249cdadbf8c
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : false
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : []
status              : {}
target              : "tcp:10.30.171.110:6654"
type                : []

_uuid               : 000a8ba5-7f3e-4e8d-99d4-31c48e21feff
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : false
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : []
status              : {}
target              : "tcp:10.30.170.48:6654"
type                : []

_uuid               : ab6698fb-4609-4e7c-a992-00d9d73cf5b1
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : false
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : []
status              : {}
target              : "tcp:10.30.170.131:6654"
type                : []
mininet&gt;</msg>
<msg time="2026-04-08T01:07:38.846066" level="INFO">${cntlstdout} = _uuid               : 22793d5c-795f-4309-9fa8-c249cdadbf8c
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
exter...</msg>
<var>${cntlstdout}</var>
<arg>${lprompt}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-08T01:07:38.827446" elapsed="0.018647"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:07:38.846570" level="INFO">_uuid               : 22793d5c-795f-4309-9fa8-c249cdadbf8c
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : false
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : []
status              : {}
target              : "tcp:10.30.171.110:6654"
type                : []

_uuid               : 000a8ba5-7f3e-4e8d-99d4-31c48e21feff
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : false
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : []
status              : {}
target              : "tcp:10.30.170.48:6654"
type                : []

_uuid               : ab6698fb-4609-4e7c-a992-00d9d73cf5b1
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : false
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : []
status              : {}
target              : "tcp:10.30.170.131:6654"
type                : []
mininet&gt;</msg>
<arg>${cntlstdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:07:38.846321" elapsed="0.000309"/>
</kw>
<kw name="Parse" owner="VsctlListParser">
<msg time="2026-04-08T01:07:38.847254" level="INFO">_uuid:8f055735-f019-4beb-a634-c1e00548280d
auto_attach:[]
controller:[000a8ba5-7f3e-4e8d-99d4-31c48e21feff,22793d5c-795f-4309-9fa8-c249cdadbf8c,ab6698fb-4609-4e7c-a992-00d9d73cf5b1]
datapath_id:"0000000000000001"
datapath_type:""
datapath_version:"&lt;unknown&gt;"
external_ids:{}
fail_mode:standalone
flood_vlans:[]
flow_tables:{}
ipfix:[]
mcast_snooping_enable:false
mirrors:[]
name:s1
netflow:[]
other_config:{datapath-id="0000000000000001",disable-in-band="true",dp-desc=s1}
ports:[973f36a8-a3cd-429b-a39b-c0175842f5bc,a232544a-2590-49d1-a070-3dbc4b7e4802]
protocols:[OpenFlow13]
rstp_enable:false
rstp_status:{}
sflow:[]
status:{}
stp_enable:false
_uuid:22793d5c-795f-4309-9fa8-c249cdadbf8c
connection_mode:[]
controller_burst_limit:[]
controller_queue_size:[]
controller_rate_limit:[]
enable_async_messages:[]
external_ids:{}
inactivity_probe:[]
is_connected:false
local_gateway:[]
local_ip:[]
local_netmask:[]
max_backoff:[]
other_config:{}
role:[]
status:{}
target:"tcp:10.30.171.110:6654"
type:[]
_uuid:000a8ba5-7f3e-4e8d-99d4-31c48e21feff
connection_mode:[]
controller_burst_limit:[]
controller_queue_size:[]
controller_rate_limit:[]
enable_async_messages:[]
external_ids:{}
inactivity_probe:[]
is_connected:false
local_gateway:[]
local_ip:[]
local_netmask:[]
max_backoff:[]
other_config:{}
role:[]
status:{}
target:"tcp:10.30.170.48:6654"
type:[]
_uuid:ab6698fb-4609-4e7c-a992-00d9d73cf5b1
connection_mode:[]
controller_burst_limit:[]
controller_queue_size:[]
controller_rate_limit:[]
enable_async_messages:[]
external_ids:{}
inactivity_probe:[]
is_connected:false
local_gateway:[]
local_ip:[]
local_netmask:[]
max_backoff:[]
other_config:{}
role:[]
status:{}
target:"tcp:10.30.170.131:6654"
type:[]</msg>
<msg time="2026-04-08T01:07:38.847393" level="INFO">${data} = {'': {'_uuid': '8f055735-f019-4beb-a634-c1e00548280d', 'auto_attach': '[]', 'controller': {'10.30.170.48': {'_uuid': '000a8ba5-7f3e-4e8d-99d4-31c48e21feff', 'connection_mode': '[]', 'controller_burst_...</msg>
<msg time="2026-04-08T01:07:38.847449" level="INFO">${bridegs} = {'8f055735-f019-4beb-a634-c1e00548280d': {'_uuid': '8f055735-f019-4beb-a634-c1e00548280d', 'auto_attach': '[]', 'controller': '[000a8ba5-7f3e-4e8d-99d4-31c48e21feff,22793d5c-795f-4309-9fa8-c249cdadbf8...</msg>
<msg time="2026-04-08T01:07:38.847541" level="INFO">${controllers} = {'22793d5c-795f-4309-9fa8-c249cdadbf8c': {'_uuid': '22793d5c-795f-4309-9fa8-c249cdadbf8c', 'connection_mode': '[]', 'controller_burst_limit': '[]', 'controller_queue_size': '[]', 'controller_rate_limi...</msg>
<var>${data}</var>
<var>${bridegs}</var>
<var>${controllers}</var>
<arg>${brstdout}</arg>
<arg>${cntlstdout}</arg>
<doc>Produces dictionary with data for future usege</doc>
<status status="PASS" start="2026-04-08T01:07:38.846793" elapsed="0.000774"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:07:38.848011" level="INFO">{'': {'_uuid': '8f055735-f019-4beb-a634-c1e00548280d', 'auto_attach': '[]', 'controller': {'10.30.170.48': {'_uuid': '000a8ba5-7f3e-4e8d-99d4-31c48e21feff', 'connection_mode': '[]', 'controller_burst_limit': '[]', 'controller_queue_size': '[]', 'controller_rate_limit': '[]', 'enable_async_messages': '[]', 'external_ids': '{}', 'inactivity_probe': '[]', 'is_connected': False, 'local_gateway': '[]', 'local_ip': '[]', 'local_netmask': '[]', 'max_backoff': '[]', 'other_config': '{}', 'role': '[]', 'status': '{}', 'target': '"tcp:10.30.170.48:6654"', 'type': '[]'}, '10.30.171.110': {'_uuid': '22793d5c-795f-4309-9fa8-c249cdadbf8c', 'connection_mode': '[]', 'controller_burst_limit': '[]', 'controller_queue_size': '[]', 'controller_rate_limit': '[]', 'enable_async_messages': '[]', 'external_ids': '{}', 'inactivity_probe': '[]', 'is_connected': False, 'local_gateway': '[]', 'local_ip': '[]', 'local_netmask': '[]', 'max_backoff': '[]', 'other_config': '{}', 'role': '[]', 'status': '{}', 'target': '"tcp:10.30.171.110:6654"', 'type': '[]'}, '10.30.170.131': {'_uuid': 'ab6698fb-4609-4e7c-a992-00d9d73cf5b1', 'connection_mode': '[]', 'controller_burst_limit': '[]', 'controller_queue_size': '[]', 'controller_rate_limit': '[]', 'enable_async_messages': '[]', 'external_ids': '{}', 'inactivity_probe': '[]', 'is_connected': False, 'local_gateway': '[]', 'local_ip': '[]', 'local_netmask': '[]', 'max_backoff': '[]', 'other_config': '{}', 'role': '[]', 'status': '{}', 'target': '"tcp:10.30.170.131:6654"', 'type': '[]'}}, 'datapath_id': '"0000000000000001"', 'datapath_type': '""', 'datapath_version': '"&lt;unknown&gt;"', 'external_ids': '{}', 'fail_mode': 'standalone', 'flood_vlans': '[]', 'flow_tables': '{}', 'ipfix': '[]', 'mcast_snooping_enable': 'false', 'mirrors': '[]', 'name': 's1', 'netflow': '[]', 'other_config': '{datapath-id="0000000000000001",disable-in-band="true",dp-desc=s1}', 'ports': '[973f36a8-a3cd-429b-a39b-c0175842f5bc,a232544a-2590-49d1-a070-3dbc4b7e4802]', 'protocols': '[OpenFlow13]', 'rstp_enable': 'false', 'rstp_status': '{}', 'sflow': '[]', 'status': '{}', 'stp_enable': 'false'}}</msg>
<arg>${data}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:07:38.847742" elapsed="0.000330"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-08T01:07:38.848645" level="INFO">${ovs_switch_data} = {'': {'_uuid': '8f055735-f019-4beb-a634-c1e00548280d', 'auto_attach': '[]', 'controller': {'10.30.170.48': {'_uuid': '000a8ba5-7f3e-4e8d-99d4-31c48e21feff', 'connection_mode': '[]', 'controller_burst_...</msg>
<arg>${ovs_switch_data}</arg>
<arg>${data}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-08T01:07:38.848262" elapsed="0.000427"/>
</kw>
<return>
<value>${data}</value>
<status status="PASS" start="2026-04-08T01:07:38.848739" elapsed="0.000042"/>
</return>
<doc>Gets ovs data and parse them.</doc>
<status status="PASS" start="2026-04-08T01:07:38.812394" elapsed="0.036483"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get From List" owner="Collections">
<msg time="2026-04-08T01:07:38.849405" level="INFO">${own} = 10.30.170.48</msg>
<var>${own}</var>
<arg>${controller_ips}</arg>
<arg>0</arg>
<doc>Returns the value specified with an ``index`` from ``list``.</doc>
<status status="PASS" start="2026-04-08T01:07:38.849216" elapsed="0.000215"/>
</kw>
<kw name="Reconnect Switch To Controller And Verify Connected" owner="OvsManager">
<if>
<branch type="IF" condition="${update_data}==${True}">
<kw name="Get Ovsdb Data" owner="OvsManager">
<doc>Gets ovs data and parse them.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:38.850626" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:07:38.850116" elapsed="0.000565"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:38.850094" elapsed="0.000612"/>
</if>
<kw name="Get Controllers Uuid" owner="OvsManager">
<if>
<branch type="IF" condition="${update_data}==${True}">
<kw name="Get Ovsdb Data" owner="OvsManager">
<doc>Gets ovs data and parse them.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:38.851545" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:07:38.851235" elapsed="0.000364"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:38.851217" elapsed="0.000405"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:07:38.851997" level="FAIL">Dictionary does not contain key 's1'.</msg>
<var>${bridge}</var>
<arg>${ovs_switch_data}</arg>
<arg>${switch}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="FAIL" start="2026-04-08T01:07:38.851776" elapsed="0.000330">Dictionary does not contain key 's1'.</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${cntls}</var>
<arg>${bridge}</arg>
<arg>controller</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:38.852300" elapsed="0.000021"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${cntl}</var>
<arg>${cntls}</arg>
<arg>${controller}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:38.852480" elapsed="0.000019"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${uuid}</var>
<arg>${cntl}</arg>
<arg>_uuid</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:38.852656" elapsed="0.000020"/>
</kw>
<return>
<value>${uuid}</value>
<status status="NOT RUN" start="2026-04-08T01:07:38.852720" elapsed="0.000015"/>
</return>
<var>${uuid}</var>
<arg>${switch}</arg>
<arg>${controller}</arg>
<doc>Returns controllers uuid</doc>
<status status="FAIL" start="2026-04-08T01:07:38.850944" elapsed="0.001891">Dictionary does not contain key 's1'.</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${cmd}</var>
<arg>${lcmd_prefix} ovs-vsctl set Controller ${uuid} target="tcp\\:${controller}\\:6653"</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:38.853007" elapsed="0.000020"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<arg>${cmd}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:38.853201" elapsed="0.000021"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<var>${output}</var>
<arg>${lprompt}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:38.853375" elapsed="0.000020"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:38.853580" elapsed="0.000020"/>
</kw>
<if>
<branch type="IF" condition="${verify_connected}==${False}">
<return>
<status status="NOT RUN" start="2026-04-08T01:07:38.853698" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:07:38.853663" elapsed="0.000070"/>
</branch>
<status status="NOT RUN" start="2026-04-08T01:07:38.853646" elapsed="0.000108"/>
</if>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<arg>5x</arg>
<arg>2s</arg>
<arg>Should Be Connected</arg>
<arg>${switch}</arg>
<arg>${controller}</arg>
<arg>update_data=${True}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:38.853908" elapsed="0.000020"/>
</kw>
<kw name="Execute OvsVsctl Show Command" owner="OvsManager" type="TEARDOWN">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:07:38.855812" level="INFO">sh ovs-vsctl show</msg>
<arg>${lcmd_prefix} ovs-vsctl show</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:07:38.854523" elapsed="0.001346"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-08T01:07:38.866026" level="INFO">9a5df812-eb49-4477-a37e-2d464c02791d
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.48:6654"
        Controller "tcp:10.30.171.110:6654"
        Controller "tcp:10.30.170.131:6654"
        fail_mode: standalone
        Port s1
            Interface s1
                type: internal
        Port s1-eth1
            Interface s1-eth1
    ovs_version: "2.17.11"
mininet&gt;</msg>
<msg time="2026-04-08T01:07:38.866120" level="INFO">${output} = 9a5df812-eb49-4477-a37e-2d464c02791d
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.48:6654"
        Controller "tcp:10.30.171.110:6654"
        Controller "tcp:10.30.170...</msg>
<var>${output}</var>
<arg>${lprompt}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-08T01:07:38.856034" elapsed="0.010113"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:07:38.866609" level="INFO">9a5df812-eb49-4477-a37e-2d464c02791d
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.48:6654"
        Controller "tcp:10.30.171.110:6654"
        Controller "tcp:10.30.170.131:6654"
        fail_mode: standalone
        Port s1
            Interface s1
                type: internal
        Port s1-eth1
            Interface s1-eth1
    ovs_version: "2.17.11"
mininet&gt;</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:07:38.866359" elapsed="0.000300"/>
</kw>
<doc>Executes ovs-vsctl show command and returns stdout, no check nor change is performed</doc>
<status status="PASS" start="2026-04-08T01:07:38.854263" elapsed="0.012450"/>
</kw>
<arg>${switch_name}</arg>
<arg>${own}</arg>
<arg>verify_connected=${False}</arg>
<doc>Reconnects the switch back to the controller by setting the correct port</doc>
<status status="FAIL" start="2026-04-08T01:07:38.849746" elapsed="0.017036">Dictionary does not contain key 's1'.</status>
</kw>
<var name="${switch_name}">s1</var>
<status status="FAIL" start="2026-04-08T01:07:38.849056" elapsed="0.017786">Dictionary does not contain key 's1'.</status>
</iter>
<var>${switch_name}</var>
<value>@{switches}</value>
<status status="FAIL" start="2026-04-08T01:07:38.848922" elapsed="0.017974">Dictionary does not contain key 's1'.</status>
</for>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<arg>5x</arg>
<arg>2s</arg>
<arg>OvsManager__Verify_Masters_Connected</arg>
<arg>${switches}</arg>
<arg>update_data=${True}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:38.867073" elapsed="0.000024"/>
</kw>
<kw name="OvsManager__Enable_Slaves" owner="OvsManager">
<arg>${switches}</arg>
<arg>verify_connected=${verify_connected}</arg>
<doc>This is a private keyword to enable diconnected controllers</doc>
<status status="NOT RUN" start="2026-04-08T01:07:38.867365" elapsed="0.000024"/>
</kw>
<arg>${switch_list}</arg>
<arg>${cntls_list}</arg>
<doc>The idea of this keyword is to setup clustered controller and to be more or less sure that the role is filled correctly. The problem is when
more controllers are being set up at once, the role shown in Controller ovsdb table is not the same as we can see from wireshark traces.
Now we set disconnected controllers and we will connect them expecting that the first connected controller will be master.</doc>
<status status="FAIL" start="2026-04-08T01:07:38.788606" elapsed="0.078871">Dictionary does not contain key 's1'.</status>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<arg>10s</arg>
<arg>1s</arg>
<arg>ClusterOpenFlow.Verify Switch Connections Running On Member</arg>
<arg>${SWITCHES}</arg>
<arg>1</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:38.867654" elapsed="0.000020"/>
</kw>
<status status="FAIL" start="2026-04-08T01:07:35.038450" elapsed="3.829315">Dictionary does not contain key 's1'.</status>
</kw>
<test id="s1-s6-t1" name="Switches To Be Connected To All Nodes" line="28">
<doc>Initial check for correct connected topology.</doc>
<status status="FAIL" start="2026-04-08T01:07:38.867840" elapsed="0.000463">Parent suite setup failed:
Dictionary does not contain key 's1'.</status>
</test>
<test id="s1-s6-t2" name="Restarting Owner Of Switch s1" line="32">
<status status="FAIL" start="2026-04-08T01:07:38.868675" elapsed="0.000283">Parent suite setup failed:
Dictionary does not contain key 's1'.</status>
</test>
<test id="s1-s6-t3" name="Switches Still Be Connected To All Nodes" line="34">
<status status="FAIL" start="2026-04-08T01:07:38.869126" elapsed="0.000314">Parent suite setup failed:
Dictionary does not contain key 's1'.</status>
</test>
<kw name="End Suite" type="TEARDOWN">
<kw name="Delete All Sessions" owner="RequestsLibrary">
<msg time="2026-04-08T01:07:38.870138" level="INFO">Deleting All Sessions</msg>
<doc>Removes all the session objects</doc>
<status status="PASS" start="2026-04-08T01:07:38.870055" elapsed="0.000217"/>
</kw>
<kw name="Stop Mininet" owner="Utils">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:07:38.871220" level="INFO">Stop the test on the base edition</msg>
<arg>Stop the test on the base edition</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:07:38.870811" elapsed="0.000456"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${mininet_conn_id}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:07:38.871464" elapsed="0.000309"/>
</kw>
<kw name="Read" owner="SSHLibrary">
<doc>Consumes and returns everything available on the server output.</doc>
<status status="PASS" start="2026-04-08T01:07:38.871967" elapsed="0.000120"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:07:38.873366" level="INFO">exit</msg>
<arg>exit</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:07:38.872285" elapsed="0.001134"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-08T01:07:38.972454" level="INFO">*** Stopping 0 controllers

*** Stopping 1 links
.
*** Stopping 1 switches
s1 
*** Stopping 1 hosts
h1 
*** Done
completed in 0.245 seconds
[?2004h[jenkins@releng-11369-169-1-mininet-ovs-217-0 ~]&gt;</msg>
<arg>${prompt}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-08T01:07:38.873613" elapsed="0.099055"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T01:07:38.973333" elapsed="0.000700"/>
</kw>
<doc>Cleanup/Shutdown work that should be done at the completion of all
tests</doc>
<status status="PASS" start="2026-04-08T01:07:38.870503" elapsed="0.103706"/>
</kw>
<status status="PASS" start="2026-04-08T01:07:38.869801" elapsed="0.104532"/>
</kw>
<doc>Test suite for entity ownership service and openflowplugin. Makes changes on controller side (restart karaf)</doc>
<status status="FAIL" start="2026-04-08T01:07:34.958640" elapsed="4.015756">Suite setup failed:
Dictionary does not contain key 's1'.</status>
</suite>
<suite id="s1-s7" name="030 Cluster Sync Problems" source="/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/EntityOwnership/030_Cluster_Sync_Problems.robot">
<kw name="Start Suite" type="SETUP">
<kw name="Setup_Utils_For_Setup_And_Teardown" owner="SetupUtils">
<kw name="Do_Not_Fail_Fast_From_Now_On" owner="FailFast">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-08T01:07:39.067780" level="INFO">${SuiteFastFail} = False</msg>
<arg>${SuiteFastFail}</arg>
<arg>False</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-08T01:07:39.063617" elapsed="0.004215"/>
</kw>
<doc>Set suite to not fail fast.</doc>
<status status="PASS" start="2026-04-08T01:07:39.063381" elapsed="0.004515"/>
</kw>
<kw name="Setup_Karaf_Keywords" owner="KarafKeywords">
<kw name="ClusterManagement_Setup" owner="ClusterManagement">
<kw name="Get Variable Value" owner="BuiltIn">
<msg time="2026-04-08T01:07:39.072630" level="INFO">${already_done} = False</msg>
<var>${already_done}</var>
<arg>\${ClusterManagement__has_setup_run}</arg>
<arg>False</arg>
<doc>Returns variable value or ``default`` if the variable does not exist.</doc>
<status status="PASS" start="2026-04-08T01:07:39.069005" elapsed="0.003653"/>
</kw>
<if>
<branch type="IF" condition="${already_done}">
<return>
<status status="NOT RUN" start="2026-04-08T01:07:39.072872" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:07:39.072746" elapsed="0.000171"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:39.072721" elapsed="0.000220"/>
</if>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-08T01:07:39.073472" level="INFO">${ClusterManagement__has_setup_run} = True</msg>
<arg>\${ClusterManagement__has_setup_run}</arg>
<arg>True</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-08T01:07:39.073106" elapsed="0.000409"/>
</kw>
<kw name="Get Variable Value" owner="BuiltIn">
<msg time="2026-04-08T01:07:39.073993" level="INFO">${cluster_size} = 3</msg>
<var>${cluster_size}</var>
<arg>\${NUM_ODL_SYSTEM}</arg>
<arg>1</arg>
<doc>Returns variable value or ``default`` if the variable does not exist.</doc>
<status status="PASS" start="2026-04-08T01:07:39.073686" elapsed="0.000334"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Convert To Integer" owner="BuiltIn">
<arg>${cluster_size}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:07:39.074573" elapsed="0.000276"/>
</kw>
<msg time="2026-04-08T01:07:39.074946" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:07:39.074993" level="INFO">${possibly_int_of_members} = 3</msg>
<var>${status}</var>
<var>${possibly_int_of_members}</var>
<arg>BuiltIn.Convert_To_Integer</arg>
<arg>${cluster_size}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:07:39.074211" elapsed="0.000805"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:07:39.075582" level="INFO">${int_of_members} = 3</msg>
<var>${int_of_members}</var>
<arg>'${status}' != 'PASS'</arg>
<arg>${1}</arg>
<arg>${possibly_int_of_members}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:07:39.075212" elapsed="0.000395"/>
</kw>
<kw name="ClusterManagement__Compute_Derived_Variables" owner="ClusterManagement">
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:07:39.076606" level="INFO">@{member_index_list} = [ ]</msg>
<var>@{member_index_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:07:39.076343" elapsed="0.000289"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:07:39.077041" level="INFO">@{session_list} = [ ]</msg>
<var>@{session_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:07:39.076789" elapsed="0.000279"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-08T01:07:39.077541" level="INFO">&amp;{index_to_ip_mapping} = { }</msg>
<var>&amp;{index_to_ip_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-08T01:07:39.077252" elapsed="0.000317"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="ClusterManagement__Include_Member_Index" owner="ClusterManagement">
<kw name="Append To List" owner="Collections">
<arg>${member_index_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-08T01:07:39.080595" elapsed="0.000209"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:07:39.081313" level="INFO">${member_ip} = 10.30.170.48</msg>
<var>${member_ip}</var>
<arg>${ODL_SYSTEM_${index}_IP}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:07:39.080971" elapsed="0.000368"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${index_to_ip_mapping}</arg>
<arg>${index}</arg>
<arg>${member_ip}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:07:39.081503" elapsed="0.000226"/>
</kw>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:07:39.082565" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:07:39.082271" elapsed="0.000321"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T01:07:39.082636" elapsed="0.000035"/>
</return>
<msg time="2026-04-08T01:07:39.082792" level="INFO">${session_alias} = ClusterManagement__session_1</msg>
<var>${session_alias}</var>
<arg>member_index=${index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T01:07:39.081933" elapsed="0.000884"/>
</kw>
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-04-08T01:07:39.083663" level="INFO">Creating Session using : alias=ClusterManagement__session_1, url=http://10.30.170.48:8181, headers={},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x76b9e5fcd010&gt;, timeout=5, proxies=None, verify=False,                     debug=0 </msg>
<arg>${session_alias}</arg>
<arg>http://${member_ip}:${RESTCONFPORT}</arg>
<arg>auth=${AUTH}</arg>
<arg>timeout=${http_timeout}</arg>
<arg>max_retries=${http_retries}</arg>
<doc>Create Session: create a HTTP session to a server</doc>
<status status="PASS" start="2026-04-08T01:07:39.082984" elapsed="0.000817"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${session_list}</arg>
<arg>${session_alias}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-08T01:07:39.083973" elapsed="0.000204"/>
</kw>
<arg>${index}</arg>
<arg>${member_index_list}</arg>
<arg>${session_list}</arg>
<arg>${index_to_ip_mapping}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>http_retries=${http_retries}</arg>
<doc>Add a corresponding item based on index into the last three arguments.
Create the Http session whose alias is added to list.</doc>
<status status="PASS" start="2026-04-08T01:07:39.080009" elapsed="0.004229"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T01:07:39.079813" elapsed="0.004468"/>
</iter>
<iter>
<kw name="ClusterManagement__Include_Member_Index" owner="ClusterManagement">
<kw name="Append To List" owner="Collections">
<arg>${member_index_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-08T01:07:39.085112" elapsed="0.000207"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:07:39.085803" level="INFO">${member_ip} = 10.30.170.131</msg>
<var>${member_ip}</var>
<arg>${ODL_SYSTEM_${index}_IP}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:07:39.085484" elapsed="0.000345"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${index_to_ip_mapping}</arg>
<arg>${index}</arg>
<arg>${member_ip}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:07:39.086031" elapsed="0.000261"/>
</kw>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:07:39.087088" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:07:39.086795" elapsed="0.000319"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T01:07:39.087173" elapsed="0.000031"/>
</return>
<msg time="2026-04-08T01:07:39.087326" level="INFO">${session_alias} = ClusterManagement__session_2</msg>
<var>${session_alias}</var>
<arg>member_index=${index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T01:07:39.086493" elapsed="0.000859"/>
</kw>
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-04-08T01:07:39.087912" level="INFO">Creating Session using : alias=ClusterManagement__session_2, url=http://10.30.170.131:8181, headers={},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x76b9e5eba290&gt;, timeout=5, proxies=None, verify=False,                     debug=0 </msg>
<arg>${session_alias}</arg>
<arg>http://${member_ip}:${RESTCONFPORT}</arg>
<arg>auth=${AUTH}</arg>
<arg>timeout=${http_timeout}</arg>
<arg>max_retries=${http_retries}</arg>
<doc>Create Session: create a HTTP session to a server</doc>
<status status="PASS" start="2026-04-08T01:07:39.087515" elapsed="0.000497"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${session_list}</arg>
<arg>${session_alias}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-08T01:07:39.088198" elapsed="0.000190"/>
</kw>
<arg>${index}</arg>
<arg>${member_index_list}</arg>
<arg>${session_list}</arg>
<arg>${index_to_ip_mapping}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>http_retries=${http_retries}</arg>
<doc>Add a corresponding item based on index into the last three arguments.
Create the Http session whose alias is added to list.</doc>
<status status="PASS" start="2026-04-08T01:07:39.084554" elapsed="0.003892"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T01:07:39.084366" elapsed="0.004124"/>
</iter>
<iter>
<kw name="ClusterManagement__Include_Member_Index" owner="ClusterManagement">
<kw name="Append To List" owner="Collections">
<arg>${member_index_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-08T01:07:39.089331" elapsed="0.000185"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:07:39.089996" level="INFO">${member_ip} = 10.30.171.110</msg>
<var>${member_ip}</var>
<arg>${ODL_SYSTEM_${index}_IP}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:07:39.089679" elapsed="0.000343"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${index_to_ip_mapping}</arg>
<arg>${index}</arg>
<arg>${member_ip}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:07:39.090220" elapsed="0.000220"/>
</kw>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:07:39.091241" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:07:39.090933" elapsed="0.000334"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T01:07:39.091310" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T01:07:39.091457" level="INFO">${session_alias} = ClusterManagement__session_3</msg>
<var>${session_alias}</var>
<arg>member_index=${index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T01:07:39.090637" elapsed="0.000844"/>
</kw>
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-04-08T01:07:39.092037" level="INFO">Creating Session using : alias=ClusterManagement__session_3, url=http://10.30.171.110:8181, headers={},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x76b9e4cbb3d0&gt;, timeout=5, proxies=None, verify=False,                     debug=0 </msg>
<arg>${session_alias}</arg>
<arg>http://${member_ip}:${RESTCONFPORT}</arg>
<arg>auth=${AUTH}</arg>
<arg>timeout=${http_timeout}</arg>
<arg>max_retries=${http_retries}</arg>
<doc>Create Session: create a HTTP session to a server</doc>
<status status="PASS" start="2026-04-08T01:07:39.091641" elapsed="0.000496"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${session_list}</arg>
<arg>${session_alias}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-08T01:07:39.092320" elapsed="0.000185"/>
</kw>
<arg>${index}</arg>
<arg>${member_index_list}</arg>
<arg>${session_list}</arg>
<arg>${index_to_ip_mapping}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>http_retries=${http_retries}</arg>
<doc>Add a corresponding item based on index into the last three arguments.
Create the Http session whose alias is added to list.</doc>
<status status="PASS" start="2026-04-08T01:07:39.088758" elapsed="0.003804"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T01:07:39.088571" elapsed="0.004033"/>
</iter>
<var>${index}</var>
<value>1</value>
<value>${int_of_members+1}</value>
<status status="PASS" start="2026-04-08T01:07:39.077625" elapsed="0.015008"/>
</for>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-08T01:07:39.093319" level="INFO">${ClusterManagement__member_index_list} = [1, 2, 3]</msg>
<arg>\${ClusterManagement__member_index_list}</arg>
<arg>${member_index_list}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-08T01:07:39.092905" elapsed="0.000458"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-08T01:07:39.093932" level="INFO">${ClusterManagement__index_to_ip_mapping} = {1: '10.30.170.48', 2: '10.30.170.131', 3: '10.30.171.110'}</msg>
<arg>\${ClusterManagement__index_to_ip_mapping}</arg>
<arg>${index_to_ip_mapping}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-08T01:07:39.093533" elapsed="0.000467"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-08T01:07:39.094581" level="INFO">${ClusterManagement__session_list} = ['ClusterManagement__session_1', 'ClusterManagement__session_2', 'ClusterManagement__session_3']</msg>
<arg>\${ClusterManagement__session_list}</arg>
<arg>${session_list}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-08T01:07:39.094200" elapsed="0.000424"/>
</kw>
<arg>int_of_members=${int_of_members}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>http_retries=${http_retries}</arg>
<doc>Construct index list, session list and IP mapping, publish them as suite variables.</doc>
<status status="PASS" start="2026-04-08T01:07:39.075864" elapsed="0.018817"/>
</kw>
<arg>http_timeout=${http_timeout}</arg>
<doc>Detect repeated call, or detect number of members and initialize derived suite variables.
Http sessions are created with parameters to not waste time when ODL is no accepting connections properly.</doc>
<status status="PASS" start="2026-04-08T01:07:39.068658" elapsed="0.026079"/>
</kw>
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:07:39.095041" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:07:39.094912" elapsed="0.000174"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:39.094829" elapsed="0.000280"/>
</if>
<kw name="Run_Bash_Command_On_List_Or_All" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:07:39.098408" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:07:39.097998" elapsed="0.000436"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:07:39.098904" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:07:39.098601" elapsed="0.000330"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T01:07:39.098975" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T01:07:39.099129" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T01:07:39.097655" elapsed="0.001514"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:07:39.100172" level="INFO">${member_ip} = 10.30.170.48</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:07:39.099899" elapsed="0.000300"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:07:39.100941" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

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

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T01:07:39.104831" elapsed="0.000720"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:07:39.106518" level="INFO">Attempting to execute command "iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save" on remote system "10.30.170.48" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:07:39.105844" elapsed="0.000778"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:07:39.107798" level="INFO">${conn_id} = 646</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T01:07:39.106899" elapsed="0.000948"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T01:07:39.109674" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T01:07:39.109859" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T01:07:39.109323" elapsed="0.000580"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:07:39.110273" elapsed="0.000449"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T01:07:39.111996" level="INFO">Logging into '10.30.170.48:22' as 'jenkins'.</msg>
<msg time="2026-04-08T01:07:39.419986" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 01:07:28 UTC 2026

  System load:  0.36               Processes:             121
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 7%                 IPv4 address for ens3: 10.30.170.48
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 01:07:35 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-0-builder-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T01:07:39.111667" elapsed="0.308476"/>
</kw>
<msg time="2026-04-08T01:07:39.420247" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:07:39.111073" elapsed="0.309433"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T01:07:39.108310" elapsed="0.312360"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T01:07:39.421626" level="INFO">Executing command 'iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save'.</msg>
<msg time="2026-04-08T01:07:39.434570" level="INFO">Command exited with return code 4.</msg>
<msg time="2026-04-08T01:07:39.434816" level="INFO">${stdout} = </msg>
<msg time="2026-04-08T01:07:39.434972" level="INFO">${stderr} = iptables v1.8.7 (nf_tables): unknown option "--dport"
Try `iptables -h' or 'iptables --help' for more information.
iptables-save v1.8.7 (nf_tables): Could not fetch rule set generation id: Permission ...</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T01:07:39.421076" elapsed="0.013970"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T01:07:39.435799" elapsed="0.001261"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:07:39.440254" level="INFO">iptables v1.8.7 (nf_tables): unknown option "--dport"
Try `iptables -h' or 'iptables --help' for more information.
iptables-save v1.8.7 (nf_tables): Could not fetch rule set generation id: Permission denied (you must be root)</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:07:39.438810" elapsed="0.001704"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T01:07:39.441524" elapsed="0.000123"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:07:39.440910" elapsed="0.000918"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:39.440857" elapsed="0.001057"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T01:07:39.442665" elapsed="0.000147"/>
</return>
<status status="PASS" start="2026-04-08T01:07:39.442099" elapsed="0.000906"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:39.442063" elapsed="0.001034"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T01:07:39.443267" elapsed="0.000037"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:07:39.447097" elapsed="0.000498"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T01:07:39.447909" elapsed="0.000442"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T01:07:39.448638" elapsed="0.000239"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:07:39.444359" elapsed="0.004588"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T01:07:39.102937" elapsed="0.346197"/>
</kw>
<msg time="2026-04-08T01:07:39.449204" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:07:39.102293" elapsed="0.346965"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-08T01:07:39.101770" elapsed="0.347568"/>
</kw>
<msg time="2026-04-08T01:07:39.449378" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:07:39.101251" elapsed="0.348173"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:07:39.452017" elapsed="0.000398"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T01:07:39.452585" elapsed="0.000141"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T01:07:39.452881" elapsed="0.000093"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:07:39.449720" elapsed="0.003304"/>
</kw>
<msg time="2026-04-08T01:07:39.453115" level="INFO">${output} = </msg>
<var>${output}</var>
<arg>Utils.Run_Command_On_Controller</arg>
<arg>${member_ip}</arg>
<arg>${command}</arg>
<doc>Store current connection index, run keyword returning its result, restore connection in teardown.
Note that in order to avoid "got positional argument after named arguments", it is safer to use positional (not named) arguments on call.</doc>
<status status="PASS" start="2026-04-08T01:07:39.100423" elapsed="0.352717"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:07:39.453611" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:07:39.453367" elapsed="0.000284"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-08T01:07:39.453693" elapsed="0.000028"/>
</return>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-08T01:07:39.099539" elapsed="0.354275"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T01:07:39.099355" elapsed="0.354496"/>
</iter>
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:07:39.454781" level="INFO">${member_ip} = 10.30.170.131</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:07:39.454514" elapsed="0.000333"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:07:39.455593" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

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

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T01:07:39.459864" elapsed="0.000868"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:07:39.461732" level="INFO">Attempting to execute command "iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save" on remote system "10.30.170.131" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:07:39.461018" elapsed="0.000829"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:07:39.463117" level="INFO">${conn_id} = 649</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T01:07:39.462140" elapsed="0.001048"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T01:07:39.465054" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T01:07:39.465388" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T01:07:39.464681" elapsed="0.000756"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:07:39.465810" elapsed="0.000484"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T01:07:39.467495" level="INFO">Logging into '10.30.170.131:22' as 'jenkins'.</msg>
<msg time="2026-04-08T01:07:39.769984" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 01:07:29 UTC 2026

  System load:  1.1                Processes:             122
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 7%                 IPv4 address for ens3: 10.30.170.131
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 01:07:35 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-0-builder-1 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T01:07:39.467138" elapsed="0.302966"/>
</kw>
<msg time="2026-04-08T01:07:39.770194" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:07:39.466679" elapsed="0.303670"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T01:07:39.463682" elapsed="0.306823"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T01:07:39.771334" level="INFO">Executing command 'iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save'.</msg>
<msg time="2026-04-08T01:07:39.783734" level="INFO">Command exited with return code 4.</msg>
<msg time="2026-04-08T01:07:39.783967" level="INFO">${stdout} = </msg>
<msg time="2026-04-08T01:07:39.784112" level="INFO">${stderr} = iptables v1.8.7 (nf_tables): unknown option "--dport"
Try `iptables -h' or 'iptables --help' for more information.
iptables-save v1.8.7 (nf_tables): Could not fetch rule set generation id: Permission ...</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T01:07:39.770853" elapsed="0.013422"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T01:07:39.784964" elapsed="0.001119"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:07:39.788853" level="INFO">iptables v1.8.7 (nf_tables): unknown option "--dport"
Try `iptables -h' or 'iptables --help' for more information.
iptables-save v1.8.7 (nf_tables): Could not fetch rule set generation id: Permission denied (you must be root)</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:07:39.787634" elapsed="0.001447"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T01:07:39.790196" elapsed="0.000116"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:07:39.789601" elapsed="0.000880"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:39.789442" elapsed="0.001122"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T01:07:39.791263" elapsed="0.000135"/>
</return>
<status status="PASS" start="2026-04-08T01:07:39.790741" elapsed="0.000828"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:39.790704" elapsed="0.000950"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T01:07:39.791783" elapsed="0.000034"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:07:39.797059" elapsed="0.000542"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T01:07:39.797883" elapsed="0.000314"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T01:07:39.798466" elapsed="0.000216"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:07:39.792858" elapsed="0.005891"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T01:07:39.457867" elapsed="0.341053"/>
</kw>
<msg time="2026-04-08T01:07:39.798975" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:07:39.457249" elapsed="0.341779"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-08T01:07:39.456734" elapsed="0.342371"/>
</kw>
<msg time="2026-04-08T01:07:39.799146" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:07:39.455903" elapsed="0.343304"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:07:39.801824" elapsed="0.000341"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T01:07:39.802341" elapsed="0.000141"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T01:07:39.802637" elapsed="0.000094"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:07:39.799501" elapsed="0.003281"/>
</kw>
<msg time="2026-04-08T01:07:39.802870" level="INFO">${output} = </msg>
<var>${output}</var>
<arg>Utils.Run_Command_On_Controller</arg>
<arg>${member_ip}</arg>
<arg>${command}</arg>
<doc>Store current connection index, run keyword returning its result, restore connection in teardown.
Note that in order to avoid "got positional argument after named arguments", it is safer to use positional (not named) arguments on call.</doc>
<status status="PASS" start="2026-04-08T01:07:39.455076" elapsed="0.347818"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:07:39.803354" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:07:39.803094" elapsed="0.000300"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-08T01:07:39.803436" elapsed="0.000028"/>
</return>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-08T01:07:39.454134" elapsed="0.349422"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T01:07:39.453945" elapsed="0.349646"/>
</iter>
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:07:39.804515" level="INFO">${member_ip} = 10.30.171.110</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:07:39.804246" elapsed="0.000295"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:07:39.805291" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

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

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T01:07:39.809062" elapsed="0.000821"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:07:39.810823" level="INFO">Attempting to execute command "iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save" on remote system "10.30.171.110" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:07:39.810177" elapsed="0.000748"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:07:39.812067" level="INFO">${conn_id} = 652</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T01:07:39.811210" elapsed="0.000907"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T01:07:39.813819" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T01:07:39.814052" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T01:07:39.813454" elapsed="0.000644"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:07:39.814560" elapsed="0.001895"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T01:07:39.817614" level="INFO">Logging into '10.30.171.110:22' as 'jenkins'.</msg>
<msg time="2026-04-08T01:07:40.131765" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 01:07:29 UTC 2026

  System load:  1.16               Processes:             127
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 7%                 IPv4 address for ens3: 10.30.171.110
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 01:07:36 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T01:07:39.817288" elapsed="0.314636"/>
</kw>
<msg time="2026-04-08T01:07:40.132013" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:07:39.816820" elapsed="0.315390"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T01:07:39.812571" elapsed="0.319806"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T01:07:40.133600" level="INFO">Executing command 'iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save'.</msg>
<msg time="2026-04-08T01:07:40.146196" level="INFO">Command exited with return code 4.</msg>
<msg time="2026-04-08T01:07:40.146621" level="INFO">${stdout} = </msg>
<msg time="2026-04-08T01:07:40.146891" level="INFO">${stderr} = iptables v1.8.7 (nf_tables): unknown option "--dport"
Try `iptables -h' or 'iptables --help' for more information.
iptables-save v1.8.7 (nf_tables): Could not fetch rule set generation id: Permission ...</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T01:07:40.132826" elapsed="0.014193"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T01:07:40.147886" elapsed="0.001438"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:07:40.152808" level="INFO">iptables v1.8.7 (nf_tables): unknown option "--dport"
Try `iptables -h' or 'iptables --help' for more information.
iptables-save v1.8.7 (nf_tables): Could not fetch rule set generation id: Permission denied (you must be root)</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:07:40.151255" elapsed="0.001821"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T01:07:40.153777" elapsed="0.000078"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:07:40.153386" elapsed="0.000589"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:40.153346" elapsed="0.000685"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T01:07:40.154524" elapsed="0.000096"/>
</return>
<status status="PASS" start="2026-04-08T01:07:40.154147" elapsed="0.000595"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:40.154124" elapsed="0.000674"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T01:07:40.154887" elapsed="0.000022"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:07:40.159774" elapsed="0.000701"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T01:07:40.160907" elapsed="0.000540"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T01:07:40.161846" elapsed="0.000355"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:07:40.155665" elapsed="0.006636"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T01:07:39.807250" elapsed="0.355312"/>
</kw>
<msg time="2026-04-08T01:07:40.162739" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:07:39.806637" elapsed="0.356180"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-08T01:07:39.806122" elapsed="0.356809"/>
</kw>
<msg time="2026-04-08T01:07:40.162987" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:07:39.805579" elapsed="0.357471"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:07:40.166497" elapsed="0.000308"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T01:07:40.166980" elapsed="0.000142"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T01:07:40.167296" elapsed="0.000096"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:07:40.163493" elapsed="0.003950"/>
</kw>
<msg time="2026-04-08T01:07:40.167534" level="INFO">${output} = </msg>
<var>${output}</var>
<arg>Utils.Run_Command_On_Controller</arg>
<arg>${member_ip}</arg>
<arg>${command}</arg>
<doc>Store current connection index, run keyword returning its result, restore connection in teardown.
Note that in order to avoid "got positional argument after named arguments", it is safer to use positional (not named) arguments on call.</doc>
<status status="PASS" start="2026-04-08T01:07:39.804763" elapsed="0.362795"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:07:40.168010" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:07:40.167764" elapsed="0.000287"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-08T01:07:40.168093" elapsed="0.000030"/>
</return>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-08T01:07:39.803870" elapsed="0.364369"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T01:07:39.803685" elapsed="0.364592"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-08T01:07:39.099225" elapsed="1.069102"/>
</for>
<arg>iptables -I INPUT -p tcp --dport ${KARAF_SHELL_PORT} -j ACCEPT; iptables-save</arg>
<doc>Cycle through indices (or all), run command on each.</doc>
<status status="PASS" start="2026-04-08T01:07:39.095363" elapsed="1.073027"/>
</kw>
<kw name="Comment" owner="BuiltIn">
<arg>First connections to Karaf console may fail, so WUKS is used. TODO: Track as a Bug.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:07:40.168565" elapsed="0.000213"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:07:40.182561" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:07:40.182449" elapsed="0.000157"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:40.182429" elapsed="0.000199"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:07:40.182946" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T01:07:40.182809" elapsed="0.000267"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:07:40.183519" level="INFO">{}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:07:40.183258" elapsed="0.000305"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:07:40.183963" level="INFO">1</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:07:40.183724" elapsed="0.000282"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:07:40.184884" level="FAIL">Dictionary does not contain key '1'.</msg>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="FAIL" start="2026-04-08T01:07:40.184656" elapsed="0.000338">Dictionary does not contain key '1'.</status>
</kw>
<msg time="2026-04-08T01:07:40.185099" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:07:40.185144" level="INFO">${old_connection_index} = Dictionary does not contain key '1'.</msg>
<var>${status}</var>
<var>${old_connection_index}</var>
<arg>Get From Dictionary</arg>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:07:40.184251" elapsed="0.000930"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='PASS'">
<kw name="Run Keywords" owner="BuiltIn">
<arg>SSHLibrary.Switch_Connection</arg>
<arg>${old_connection_index}</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Executes all the given keywords in a sequence.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:40.185494" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:07:40.185259" elapsed="0.000309"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:40.185240" elapsed="0.000351"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:07:40.186389" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:07:40.186080" elapsed="0.000336"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:07:40.186464" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T01:07:40.186612" level="INFO">${odl_ip} = 10.30.170.48</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:07:40.185801" elapsed="0.000875"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${odl_ip}</arg>
<arg>port=${KARAF_SHELL_PORT}</arg>
<arg>prompt=${KARAF_PROMPT_LOGIN}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T01:07:40.186846" elapsed="0.000426"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:07:40.187615" level="INFO">index=655
host=10.30.170.48
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-08T01:07:40.187715" level="INFO">${karaf_connection_object} = index=655
host=10.30.170.48
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_err...</msg>
<var>${karaf_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T01:07:40.187452" elapsed="0.000288"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<arg>${karaf_connection_object.index}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:07:40.187901" elapsed="0.002179"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-08T01:07:40.190532" level="INFO">Logging into '10.30.170.48:8101' as 'karaf'.</msg>
<msg time="2026-04-08T01:07:40.354545" level="INFO">Read output: [33m                                                                                           
[33m    ________                       ________                .__  .__       .__     __       
[33m    \_____  \ ______   ____   ____ \______ \ _____  ___.__.|  | |__| ____ |  |___/  |_     
[33m     /   |   \\____ \_/ __ \ /    \ |    |  \\__  \&lt;   |  ||  | |  |/ ___\|  |  \   __\    
[33m    /    |    \  |_&gt; &gt;  ___/|   |  \|    `   \/ __ \\___  ||  |_|  / /_/  &gt;   Y  \  |      
[33m    \_______  /   __/ \___  &gt;___|  /_______  (____  / ____||____/__\___  /|___|  /__|      
[33m            \/|__|        \/     \/        \/     \/\/            /_____/      \/          
[33m                                                                                           

Hit '[1m&lt;tab&gt;[0m' for a list of available commands
and '[1m[cmd] --help[0m' for help on a specific command.
Hit '[1m&lt;ctrl-d&gt;[0m' or type '[1msystem:shutdown[0m' or '[1mlogout[0m' to shutdown OpenDaylight.

[?1h=[90m~[0m                                                                                [?2004hopendaylight-user</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="PASS" start="2026-04-08T01:07:40.190273" elapsed="0.164414"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:07:40.358540" elapsed="0.000356"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T01:07:40.359073" elapsed="0.000189"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T01:07:40.359424" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:07:40.355894" elapsed="0.003687"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T01:07:40.355146" elapsed="0.004482"/>
</kw>
<arg>member_index=${index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for ${member_index},
close the previous connection. In any case create a new connection
to karaf console for ${member_index}, set correct prompt set and login to karaf console.
Store connection index for ${member_index} and restore the previous active connection.</doc>
<status status="PASS" start="2026-04-08T01:07:40.182153" elapsed="0.177527"/>
</kw>
<arg>3s</arg>
<arg>1s</arg>
<arg>Open_Controller_Karaf_Console_On_Background</arg>
<arg>member_index=${index}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-08T01:07:40.169539" elapsed="0.190193"/>
</kw>
<arg>BuiltIn.Wait_Until_Keyword_Succeeds</arg>
<arg>3s</arg>
<arg>1s</arg>
<arg>Open_Controller_Karaf_Console_On_Background</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:07:40.169141" elapsed="0.190646"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T01:07:40.168990" elapsed="0.190841"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:07:40.372911" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:07:40.372789" elapsed="0.000173"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:40.372764" elapsed="0.000221"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:07:40.373310" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T01:07:40.373152" elapsed="0.000298"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:07:40.373876" level="INFO">{1: 655}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:07:40.373615" elapsed="0.000305"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:07:40.374342" level="INFO">2</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:07:40.374081" elapsed="0.000304"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:07:40.375184" level="FAIL">Dictionary does not contain key '2'.</msg>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="FAIL" start="2026-04-08T01:07:40.374938" elapsed="0.000355">Dictionary does not contain key '2'.</status>
</kw>
<msg time="2026-04-08T01:07:40.375401" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:07:40.375501" level="INFO">${old_connection_index} = Dictionary does not contain key '2'.</msg>
<var>${status}</var>
<var>${old_connection_index}</var>
<arg>Get From Dictionary</arg>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:07:40.374552" elapsed="0.000975"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='PASS'">
<kw name="Run Keywords" owner="BuiltIn">
<arg>SSHLibrary.Switch_Connection</arg>
<arg>${old_connection_index}</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Executes all the given keywords in a sequence.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:40.375839" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:07:40.375604" elapsed="0.000311"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:40.375585" elapsed="0.000354"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:07:40.376729" level="INFO">${ip_address} = 10.30.170.131</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:07:40.376464" elapsed="0.000291"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:07:40.376803" elapsed="0.000032"/>
</return>
<msg time="2026-04-08T01:07:40.376955" level="INFO">${odl_ip} = 10.30.170.131</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:07:40.376182" elapsed="0.000798"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${odl_ip}</arg>
<arg>port=${KARAF_SHELL_PORT}</arg>
<arg>prompt=${KARAF_PROMPT_LOGIN}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T01:07:40.377173" elapsed="0.000403"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:07:40.377910" level="INFO">index=657
host=10.30.170.131
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-08T01:07:40.378008" level="INFO">${karaf_connection_object} = index=657
host=10.30.170.131
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_er...</msg>
<var>${karaf_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T01:07:40.377754" elapsed="0.000281"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<arg>${karaf_connection_object.index}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:07:40.378212" elapsed="0.002300"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-08T01:07:40.380968" level="INFO">Logging into '10.30.170.131:8101' as 'karaf'.</msg>
<msg time="2026-04-08T01:07:40.578338" level="INFO">Read output: [33m                                                                                           
[33m    ________                       ________                .__  .__       .__     __       
[33m    \_____  \ ______   ____   ____ \______ \ _____  ___.__.|  | |__| ____ |  |___/  |_     
[33m     /   |   \\____ \_/ __ \ /    \ |    |  \\__  \&lt;   |  ||  | |  |/ ___\|  |  \   __\    
[33m    /    |    \  |_&gt; &gt;  ___/|   |  \|    `   \/ __ \\___  ||  |_|  / /_/  &gt;   Y  \  |      
[33m    \_______  /   __/ \___  &gt;___|  /_______  (____  / ____||____/__\___  /|___|  /__|      
[33m            \/|__|        \/     \/        \/     \/\/            /_____/      \/          
[33m                                                                                           

Hit '[1m&lt;tab&gt;[0m' for a list of available commands
and '[1m[cmd] --help[0m' for help on a specific command.
Hit '[1m&lt;ctrl-d&gt;[0m' or type '[1msystem:shutdown[0m' or '[1mlogout[0m' to shutdown OpenDaylight.

[?1h=[90m~[0m                                                                                [?2004hopendaylight-user</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="PASS" start="2026-04-08T01:07:40.380683" elapsed="0.197760"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:07:40.581655" elapsed="0.000355"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T01:07:40.582220" elapsed="0.000158"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T01:07:40.582537" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:07:40.579431" elapsed="0.003261"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T01:07:40.578795" elapsed="0.003943"/>
</kw>
<arg>member_index=${index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for ${member_index},
close the previous connection. In any case create a new connection
to karaf console for ${member_index}, set correct prompt set and login to karaf console.
Store connection index for ${member_index} and restore the previous active connection.</doc>
<status status="PASS" start="2026-04-08T01:07:40.372496" elapsed="0.210292"/>
</kw>
<arg>3s</arg>
<arg>1s</arg>
<arg>Open_Controller_Karaf_Console_On_Background</arg>
<arg>member_index=${index}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-08T01:07:40.360493" elapsed="0.222341"/>
</kw>
<arg>BuiltIn.Wait_Until_Keyword_Succeeds</arg>
<arg>3s</arg>
<arg>1s</arg>
<arg>Open_Controller_Karaf_Console_On_Background</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:07:40.360086" elapsed="0.222799"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T01:07:40.359934" elapsed="0.222991"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:07:40.596213" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:07:40.596080" elapsed="0.000181"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:40.596057" elapsed="0.000226"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:07:40.596639" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T01:07:40.596505" elapsed="0.000266"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:07:40.597209" level="INFO">{1: 655, 2: 657}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:07:40.596932" elapsed="0.000322"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:07:40.597658" level="INFO">3</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:07:40.597415" elapsed="0.000287"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:07:40.598532" level="FAIL">Dictionary does not contain key '3'.</msg>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="FAIL" start="2026-04-08T01:07:40.598304" elapsed="0.000331">Dictionary does not contain key '3'.</status>
</kw>
<msg time="2026-04-08T01:07:40.598742" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:07:40.598787" level="INFO">${old_connection_index} = Dictionary does not contain key '3'.</msg>
<var>${status}</var>
<var>${old_connection_index}</var>
<arg>Get From Dictionary</arg>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:07:40.597890" elapsed="0.000919"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='PASS'">
<kw name="Run Keywords" owner="BuiltIn">
<arg>SSHLibrary.Switch_Connection</arg>
<arg>${old_connection_index}</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Executes all the given keywords in a sequence.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:40.599124" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:07:40.598887" elapsed="0.000326"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:40.598866" elapsed="0.000372"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:07:40.600204" level="INFO">${ip_address} = 10.30.171.110</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:07:40.599919" elapsed="0.000312"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:07:40.600279" elapsed="0.000034"/>
</return>
<msg time="2026-04-08T01:07:40.600436" level="INFO">${odl_ip} = 10.30.171.110</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:07:40.599451" elapsed="0.001009"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${odl_ip}</arg>
<arg>port=${KARAF_SHELL_PORT}</arg>
<arg>prompt=${KARAF_PROMPT_LOGIN}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T01:07:40.600624" elapsed="0.000399"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:07:40.601378" level="INFO">index=659
host=10.30.171.110
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-08T01:07:40.601476" level="INFO">${karaf_connection_object} = index=659
host=10.30.171.110
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_er...</msg>
<var>${karaf_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T01:07:40.601216" elapsed="0.000286"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<arg>${karaf_connection_object.index}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:07:40.601660" elapsed="0.002152"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-08T01:07:40.604255" level="INFO">Logging into '10.30.171.110:8101' as 'karaf'.</msg>
<msg time="2026-04-08T01:07:40.763942" level="INFO">Read output: [33m                                                                                           
[33m    ________                       ________                .__  .__       .__     __       
[33m    \_____  \ ______   ____   ____ \______ \ _____  ___.__.|  | |__| ____ |  |___/  |_     
[33m     /   |   \\____ \_/ __ \ /    \ |    |  \\__  \&lt;   |  ||  | |  |/ ___\|  |  \   __\    
[33m    /    |    \  |_&gt; &gt;  ___/|   |  \|    `   \/ __ \\___  ||  |_|  / /_/  &gt;   Y  \  |      
[33m    \_______  /   __/ \___  &gt;___|  /_______  (____  / ____||____/__\___  /|___|  /__|      
[33m            \/|__|        \/     \/        \/     \/\/            /_____/      \/          
[33m                                                                                           

Hit '[1m&lt;tab&gt;[0m' for a list of available commands
and '[1m[cmd] --help[0m' for help on a specific command.
Hit '[1m&lt;ctrl-d&gt;[0m' or type '[1msystem:shutdown[0m' or '[1mlogout[0m' to shutdown OpenDaylight.

[?1h=[90m~[0m                                                                                [?2004hopendaylight-user</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="PASS" start="2026-04-08T01:07:40.603985" elapsed="0.160052"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:07:40.767193" elapsed="0.000365"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T01:07:40.767734" elapsed="0.000150"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T01:07:40.768040" elapsed="0.000097"/>
</kw>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:07:40.764939" elapsed="0.003272"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T01:07:40.764371" elapsed="0.003886"/>
</kw>
<arg>member_index=${index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for ${member_index},
close the previous connection. In any case create a new connection
to karaf console for ${member_index}, set correct prompt set and login to karaf console.
Store connection index for ${member_index} and restore the previous active connection.</doc>
<status status="PASS" start="2026-04-08T01:07:40.595799" elapsed="0.172560"/>
</kw>
<arg>3s</arg>
<arg>1s</arg>
<arg>Open_Controller_Karaf_Console_On_Background</arg>
<arg>member_index=${index}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-08T01:07:40.583573" elapsed="0.184833"/>
</kw>
<arg>BuiltIn.Wait_Until_Keyword_Succeeds</arg>
<arg>3s</arg>
<arg>1s</arg>
<arg>Open_Controller_Karaf_Console_On_Background</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:07:40.583195" elapsed="0.185262"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T01:07:40.583024" elapsed="0.185472"/>
</iter>
<var>${index}</var>
<value>@{ClusterManagement__member_index_list}</value>
<status status="PASS" start="2026-04-08T01:07:40.168836" elapsed="0.599695"/>
</for>
<arg>http_timeout=${http_timeout}</arg>
<doc>Initialize ClusterManagement. Open ssh karaf connections to each ODL.</doc>
<status status="PASS" start="2026-04-08T01:07:39.068216" elapsed="1.700374"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Test_Suite_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:07:40.771429" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:07:40.771298" elapsed="0.000177"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:40.771277" elapsed="0.000220"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:07:40.776119" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:07:40.776014" elapsed="0.000164"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:40.775996" elapsed="0.000205"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:07:40.777151" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:07:40.776771" elapsed="0.000423"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:07:40.777664" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:07:40.777364" elapsed="0.000326"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T01:07:40.777733" elapsed="0.000032"/>
</return>
<msg time="2026-04-08T01:07:40.777889" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T01:07:40.776433" elapsed="0.001480"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:07:40.783119" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:07:40.783013" elapsed="0.000175"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:40.782995" elapsed="0.000217"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:07:40.784482" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:07:40.784355" elapsed="0.000173"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:40.784336" elapsed="0.000214"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:07:40.785028" level="INFO">${karaf_connection_index} = 655</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:07:40.784707" elapsed="0.000348"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:07:40.785486" level="INFO">${current_connection_index} = None</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:07:40.785245" elapsed="0.000267"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:07:40.826807" level="INFO">@root&gt;log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "s "u "i "t "e "[C "/ "w "/ "w "o "r "k "s "p "a "c "e "/ "o "p "e "[78Cn "[A[78Cf</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:07:40.786204" elapsed="0.040740"/>
</kw>
<msg time="2026-04-08T01:07:40.827074" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T01:07:40.827120" level="INFO">${message_write} = @root&gt;log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "s "u "i "t "e "[C "/ "w "/ "w "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:07:40.785683" elapsed="0.041502"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T01:07:40.895311" level="INFO">"l "o "w "p "l "u "g "i "n "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "o "n "l "y "- "v "a "n "a "d "i "u "m "/ "t "e "s "t "/ "c "s "i "t "/ "s "u "i "t "e "s "/ "o "p "e "n "f "l "o "w "p "l "u "g "i "n "/ "[78CE "[A[78Cn
 "t "i "t "y "O "w "n "e "r "s "h "i "p "/ "0 "3 "0 "_ "C "l "u "s "t "e "r "_ "S "y "n "c "_ "P "r "o "b "l "e "m "s ". "r "o "b "o "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T01:07:40.827876" elapsed="0.067598"/>
</kw>
<msg time="2026-04-08T01:07:40.895603" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T01:07:40.895648" level="INFO">${message_wait} =  "l "o "w "p "l "u "g "i "n "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "o "n "l "y "- "v "a "n ...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:07:40.827372" elapsed="0.068348"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:40.896057" elapsed="0.000049"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:07:40.895801" elapsed="0.000477"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:40.895780" elapsed="0.000532"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:07:40.896831" level="INFO"> "l "o "w "p "l "u "g "i "n "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "o "n "l "y "- "v "a "n "a "d "i "u "m "/ "t "e "s "t "/ "c "s "i "t "/ "s "u "i "t "e "s "/ "o "p "e "n "f "l "o "w "p "l "u "g "i "n "/ "[78CE "[A[78Cn
 "t "i "t "y "O "w "n "e "r "s "h "i "p "/ "0 "3 "0 "_ "C "l "u "s "t "e "r "_ "S "y "n "c "_ "P "r "o "b "l "e "m "s ". "r "o "b "o "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:07:40.896480" elapsed="0.000443"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:40.897282" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:07:40.896989" elapsed="0.000440"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:40.896971" elapsed="0.000483"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T01:07:40.897488" elapsed="0.000028"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:07:40.899493" elapsed="0.000579"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T01:07:40.900581" elapsed="0.000283"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T01:07:40.901217" elapsed="0.000229"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:07:40.898716" elapsed="0.002819"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T01:07:40.897799" elapsed="0.003888"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T01:07:40.784033" elapsed="0.117761"/>
</kw>
<msg time="2026-04-08T01:07:40.901887" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:07:40.901930" level="INFO">${message} =  "l "o "w "p "l "u "g "i "n "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "o "n "l "y "- "v "a "n ...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:07:40.783373" elapsed="0.118594"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T01:07:40.902169" elapsed="0.000028"/>
</return>
<status status="PASS" start="2026-04-08T01:07:40.902043" elapsed="0.000187"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:40.902025" elapsed="0.000229"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:40.902655" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:40.902996" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T01:07:40.903066" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T01:07:40.782729" elapsed="0.120456"/>
</kw>
<msg time="2026-04-08T01:07:40.903278" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:07:40.903320" level="INFO">${output} =  "l "o "w "p "l "u "g "i "n "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "o "n "l "y "- "v "a "n ...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:07:40.778311" elapsed="0.125045"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:40.903687" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:07:40.903430" elapsed="0.000310"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:40.903414" elapsed="0.000349"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T01:07:40.778138" elapsed="0.125647"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:07:40.909181" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:07:40.909060" elapsed="0.000168"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:40.909041" elapsed="0.000208"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:07:40.910464" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:07:40.910337" elapsed="0.000172"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:40.910319" elapsed="0.000244"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:07:40.911055" level="INFO">${karaf_connection_index} = 657</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:07:40.910733" elapsed="0.000348"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:07:40.911503" level="INFO">${current_connection_index} = None</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:07:40.911267" elapsed="0.000262"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:07:40.953195" level="INFO">@root&gt;log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "s "u "i "t "e "[C "/ "w "/ "w "o "r "k "s "p "a "c "e "/ "o "p "e "[78Cn "[A[78Cf</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:07:40.912288" elapsed="0.041039"/>
</kw>
<msg time="2026-04-08T01:07:40.953455" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T01:07:40.953501" level="INFO">${message_write} = @root&gt;log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "s "u "i "t "e "[C "/ "w "/ "w "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:07:40.911707" elapsed="0.041831"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T01:07:41.021215" level="INFO">"l "o "w "p "l "u "g "i "n "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "o "n "l "y "- "v "a "n "a "d "i "u "m "/ "t "e "s "t "/ "c "s "i "t "/ "s "u "i "t "e "s "/ "o "p "e "n "f "l "o "w "p "l "u "g "i "n "/ "[78CE "[A[78Cn
 "t "i "t "y "O "w "n "e "r "s "h "i "p "/ "0 "3 "0 "_ "C "l "u "s "t "e "r "_ "S "y "n "c "_ "P "r "o "b "l "e "m "s ". "r "o "b "o "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T01:07:40.954239" elapsed="0.067159"/>
</kw>
<msg time="2026-04-08T01:07:41.021540" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T01:07:41.021587" level="INFO">${message_wait} =  "l "o "w "p "l "u "g "i "n "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "o "n "l "y "- "v "a "n ...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:07:40.953719" elapsed="0.067904"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:41.021998" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:07:41.021712" elapsed="0.000435"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:41.021688" elapsed="0.000528"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:07:41.022757" level="INFO"> "l "o "w "p "l "u "g "i "n "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "o "n "l "y "- "v "a "n "a "d "i "u "m "/ "t "e "s "t "/ "c "s "i "t "/ "s "u "i "t "e "s "/ "o "p "e "n "f "l "o "w "p "l "u "g "i "n "/ "[78CE "[A[78Cn
 "t "i "t "y "O "w "n "e "r "s "h "i "p "/ "0 "3 "0 "_ "C "l "u "s "t "e "r "_ "S "y "n "c "_ "P "r "o "b "l "e "m "s ". "r "o "b "o "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:07:41.022379" elapsed="0.000467"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:41.023206" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:07:41.022913" elapsed="0.000439"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:41.022895" elapsed="0.000483"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T01:07:41.023413" elapsed="0.000032"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:07:41.025487" elapsed="0.000445"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T01:07:41.026445" elapsed="0.000287"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T01:07:41.027067" elapsed="0.000245"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:07:41.024701" elapsed="0.002700"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T01:07:41.023730" elapsed="0.003803"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T01:07:40.910032" elapsed="0.117602"/>
</kw>
<msg time="2026-04-08T01:07:41.027725" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:07:41.027768" level="INFO">${message} =  "l "o "w "p "l "u "g "i "n "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "o "n "l "y "- "v "a "n ...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:07:40.909409" elapsed="0.118395"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T01:07:41.028015" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-08T01:07:41.027903" elapsed="0.000171"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:41.027861" elapsed="0.000236"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 2,
close the previous connection. In any case create a new connection
to karaf console for 2, set correct prompt set and login to karaf console.
Store connection index for 2 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:41.028524" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:41.029112" elapsed="0.000026"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T01:07:41.029202" elapsed="0.000017"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T01:07:40.908774" elapsed="0.120538"/>
</kw>
<msg time="2026-04-08T01:07:41.029405" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:07:41.029448" level="INFO">${output} =  "l "o "w "p "l "u "g "i "n "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "o "n "l "y "- "v "a "n ...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:07:40.904049" elapsed="0.125435"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:41.029819" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:07:41.029559" elapsed="0.000313"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:41.029542" elapsed="0.000353"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T01:07:40.903901" elapsed="0.126017"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:07:41.035305" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:07:41.035198" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:41.035179" elapsed="0.000193"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:07:41.036584" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:07:41.036455" elapsed="0.000175"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:41.036437" elapsed="0.000215"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:07:41.037126" level="INFO">${karaf_connection_index} = 659</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:07:41.036809" elapsed="0.000359"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:07:41.037579" level="INFO">${current_connection_index} = None</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:07:41.037343" elapsed="0.000262"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:07:41.088896" level="INFO">@root&gt;log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "s "u "i "t "e "[C "/ "w "/ "w "o "r "k "s "p "a "c "e "/ "o "p "e "[78Cn "[A[78Cf</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:07:41.038372" elapsed="0.050654"/>
</kw>
<msg time="2026-04-08T01:07:41.089152" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T01:07:41.089288" level="INFO">${message_write} = @root&gt;log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "s "u "i "t "e "[C "/ "w "/ "w "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:07:41.037776" elapsed="0.051550"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T01:07:41.142692" level="INFO">"l "o "w "p "l "u "g "i "n "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "o "n "l "y "- "v "a "n "a "d "i "u "m "/ "t "e "s "t "/ "c "s "i "t "/ "s "u "i "t "e "s "/ "o "p "e "n "f "l "o "w "p "l "u "g "i "n "/ "[78CE "[A[78Cn
 "t "i "t "y "O "w "n "e "r "s "h "i "p "/ "0 "3 "0 "_ "C "l "u "s "t "e "r "_ "S "y "n "c "_ "P "r "o "b "l "e "m "s ". "r "o "b "o "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T01:07:41.090012" elapsed="0.052854"/>
</kw>
<msg time="2026-04-08T01:07:41.142995" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T01:07:41.143041" level="INFO">${message_wait} =  "l "o "w "p "l "u "g "i "n "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "o "n "l "y "- "v "a "n ...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:07:41.089511" elapsed="0.053566"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:41.143533" elapsed="0.000049"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:07:41.143274" elapsed="0.000405"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:41.143141" elapsed="0.000564"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:07:41.144233" level="INFO"> "l "o "w "p "l "u "g "i "n "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "o "n "l "y "- "v "a "n "a "d "i "u "m "/ "t "e "s "t "/ "c "s "i "t "/ "s "u "i "t "e "s "/ "o "p "e "n "f "l "o "w "p "l "u "g "i "n "/ "[78CE "[A[78Cn
 "t "i "t "y "O "w "n "e "r "s "h "i "p "/ "0 "3 "0 "_ "C "l "u "s "t "e "r "_ "S "y "n "c "_ "P "r "o "b "l "e "m "s ". "r "o "b "o "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:07:41.143864" elapsed="0.000462"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:41.144638" elapsed="0.000049"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:07:41.144393" elapsed="0.000391"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:41.144375" elapsed="0.000434"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T01:07:41.144878" elapsed="0.000030"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:07:41.146845" elapsed="0.000614"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T01:07:41.147808" elapsed="0.000280"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T01:07:41.148444" elapsed="0.000231"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:07:41.146042" elapsed="0.002720"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T01:07:41.145183" elapsed="0.003712"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T01:07:41.036167" elapsed="0.112830"/>
</kw>
<msg time="2026-04-08T01:07:41.149088" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:07:41.149131" level="INFO">${message} =  "l "o "w "p "l "u "g "i "n "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "o "n "l "y "- "v "a "n ...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:07:41.035531" elapsed="0.113652"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T01:07:41.149369" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-08T01:07:41.149262" elapsed="0.000165"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:41.149243" elapsed="0.000208"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 3,
close the previous connection. In any case create a new connection
to karaf console for 3, set correct prompt set and login to karaf console.
Store connection index for 3 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:41.149840" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:41.150194" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T01:07:41.150277" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T01:07:41.034897" elapsed="0.115488"/>
</kw>
<msg time="2026-04-08T01:07:41.150476" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:07:41.150519" level="INFO">${output} =  "l "o "w "p "l "u "g "i "n "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "o "n "l "y "- "v "a "n ...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:07:41.030382" elapsed="0.120173"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:41.150887" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:07:41.150630" elapsed="0.000310"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:41.150612" elapsed="0.000350"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T01:07:41.030040" elapsed="0.120945"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-08T01:07:40.777969" elapsed="0.373044"/>
</for>
<arg>Starting suite ${SUITE_SOURCE}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-08T01:07:40.775727" elapsed="0.375344"/>
</kw>
<doc>Log suite name to karaf log, useful in suite setup.</doc>
<status status="PASS" start="2026-04-08T01:07:40.769251" elapsed="0.381878"/>
</kw>
<arg>KarafKeywords.Log_Test_Suite_Start_To_Controller_Karaf</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:07:40.768759" elapsed="0.382460"/>
</kw>
<doc>Prepare both FailFast and Karaf logging, log that the caller suite has started.
This keyword is to be used in suite setup, and without it the other keywords may not work properly.</doc>
<status status="PASS" start="2026-04-08T01:07:39.063036" elapsed="2.088241"/>
</kw>
<status status="PASS" start="2026-04-08T01:07:39.062660" elapsed="2.088671"/>
</kw>
<test id="s1-s7-t1" name="Start Mininet To All Nodes" line="31">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-08T01:07:41.154708" elapsed="0.000209"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-08T01:07:41.154436" elapsed="0.000535"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:07:41.156035" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:07:41.155928" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:41.155910" elapsed="0.000192"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:07:41.160882" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:07:41.160777" elapsed="0.000149"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:41.160759" elapsed="0.000189"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:07:41.161957" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:07:41.161580" elapsed="0.000404"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:07:41.162533" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:07:41.162227" elapsed="0.000333"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T01:07:41.162605" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T01:07:41.162758" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T01:07:41.161195" elapsed="0.001588"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:07:41.168010" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:07:41.167903" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:41.167885" elapsed="0.000191"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:07:41.169245" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:07:41.169110" elapsed="0.000182"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:41.169092" elapsed="0.000222"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:07:41.169757" level="INFO">${karaf_connection_index} = 655</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:07:41.169467" elapsed="0.000317"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:07:41.170227" level="INFO">${current_connection_index} = None</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:07:41.169952" elapsed="0.000302"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:07:41.207233" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:07:41.170767" elapsed="0.036581"/>
</kw>
<msg time="2026-04-08T01:07:41.207527" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T01:07:41.207574" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:07:41.170424" elapsed="0.037188"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T01:07:41.253832" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "3 "0 "[C "C "l "u "s "t "e "r "[C "S "y "n "c "[C "P "r "o "b "l "e "m "s ". "S "t "a "r "t "[C "M "i "n "i "n "e "t "[C "T "o "[C "A "l "l "[C "N "o "d "e "s "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T01:07:41.208190" elapsed="0.045758"/>
</kw>
<msg time="2026-04-08T01:07:41.254116" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T01:07:41.254189" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "3 "0 "[C "C "l "u "s "t "e "r "[C "S "y "n "c "[C "P "r "o "b "l "e "m "s ". "S "t...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:07:41.207803" elapsed="0.046430"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:41.254569" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:07:41.254319" elapsed="0.000307"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:41.254298" elapsed="0.000353"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:07:41.255114" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "3 "0 "[C "C "l "u "s "t "e "r "[C "S "y "n "c "[C "P "r "o "b "l "e "m "s ". "S "t "a "r "t "[C "M "i "n "i "n "e "t "[C "T "o "[C "A "l "l "[C "N "o "d "e "s "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:07:41.254806" elapsed="0.000405"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:41.255512" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:07:41.255281" elapsed="0.000286"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:41.255263" elapsed="0.000327"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T01:07:41.255624" elapsed="0.000030"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:07:41.257134" elapsed="0.000789"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T01:07:41.258232" elapsed="0.000449"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T01:07:41.258956" elapsed="0.000374"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:07:41.256492" elapsed="0.002938"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T01:07:41.255925" elapsed="0.003608"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T01:07:41.168811" elapsed="0.090824"/>
</kw>
<msg time="2026-04-08T01:07:41.259727" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:07:41.259772" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "3 "0 "[C "C "l "u "s "t "e "r "[C "S "y "n "c "[C "P "r "o "b "l "e "m "s ". "S "t...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:07:41.168250" elapsed="0.091561"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T01:07:41.259995" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-08T01:07:41.259889" elapsed="0.000165"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:41.259869" elapsed="0.000209"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:41.260491" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:41.260847" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T01:07:41.260919" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T01:07:41.167574" elapsed="0.093453"/>
</kw>
<msg time="2026-04-08T01:07:41.261119" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:07:41.261192" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "3 "0 "[C "C "l "u "s "t "e "r "[C "S "y "n "c "[C "P "r "o "b "l "e "m "s ". "S "t...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:07:41.163152" elapsed="0.098081"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:41.261571" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:07:41.261310" elapsed="0.000315"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:41.261293" elapsed="0.000355"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T01:07:41.163002" elapsed="0.098669"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:07:41.266886" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:07:41.266778" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:41.266759" elapsed="0.000195"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:07:41.268244" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:07:41.268110" elapsed="0.000181"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:41.268092" elapsed="0.000221"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:07:41.268777" level="INFO">${karaf_connection_index} = 657</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:07:41.268469" elapsed="0.000335"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:07:41.269223" level="INFO">${current_connection_index} = None</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:07:41.268976" elapsed="0.000274"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:07:41.312377" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:07:41.269769" elapsed="0.042711"/>
</kw>
<msg time="2026-04-08T01:07:41.312654" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T01:07:41.312702" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:07:41.269421" elapsed="0.043318"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T01:07:41.361737" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "3 "0 "[C "C "l "u "s "t "e "r "[C "S "y "n "c "[C "P "r "o "b "l "e "m "s ". "S "t "a "r "t "[C "M "i "n "i "n "e "t "[C "T "o "[C "A "l "l "[C "N "o "d "e "s "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T01:07:41.313294" elapsed="0.048559"/>
</kw>
<msg time="2026-04-08T01:07:41.362014" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T01:07:41.362060" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "3 "0 "[C "C "l "u "s "t "e "r "[C "S "y "n "c "[C "P "r "o "b "l "e "m "s ". "S "t...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:07:41.312919" elapsed="0.049178"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:41.362475" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:07:41.362201" elapsed="0.000331"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:41.362178" elapsed="0.000378"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:07:41.363005" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "3 "0 "[C "C "l "u "s "t "e "r "[C "S "y "n "c "[C "P "r "o "b "l "e "m "s ". "S "t "a "r "t "[C "M "i "n "i "n "e "t "[C "T "o "[C "A "l "l "[C "N "o "d "e "s "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:07:41.362708" elapsed="0.000373"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:41.363405" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:07:41.363149" elapsed="0.000311"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:41.363131" elapsed="0.000352"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T01:07:41.363516" elapsed="0.000027"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:07:41.365126" elapsed="0.000782"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T01:07:41.366217" elapsed="0.000441"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T01:07:41.366929" elapsed="0.000370"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:07:41.364514" elapsed="0.002897"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T01:07:41.363805" elapsed="0.003669"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T01:07:41.267808" elapsed="0.099766"/>
</kw>
<msg time="2026-04-08T01:07:41.367666" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:07:41.367709" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "3 "0 "[C "C "l "u "s "t "e "r "[C "S "y "n "c "[C "P "r "o "b "l "e "m "s ". "S "t...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:07:41.267115" elapsed="0.100633"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T01:07:41.367930" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-08T01:07:41.367824" elapsed="0.000164"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:41.367806" elapsed="0.000205"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 2,
close the previous connection. In any case create a new connection
to karaf console for 2, set correct prompt set and login to karaf console.
Store connection index for 2 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:41.368415" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:41.368748" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T01:07:41.368818" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T01:07:41.266443" elapsed="0.102479"/>
</kw>
<msg time="2026-04-08T01:07:41.369012" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:07:41.369055" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "3 "0 "[C "C "l "u "s "t "e "r "[C "S "y "n "c "[C "P "r "o "b "l "e "m "s ". "S "t...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:07:41.261944" elapsed="0.107149"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:41.369443" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:07:41.369183" elapsed="0.000314"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:41.369150" elapsed="0.000370"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T01:07:41.261794" elapsed="0.107749"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:07:41.374700" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:07:41.374593" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:41.374574" elapsed="0.000192"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:07:41.376016" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:07:41.375908" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:41.375890" elapsed="0.000192"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:07:41.376553" level="INFO">${karaf_connection_index} = 659</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:07:41.376257" elapsed="0.000323"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:07:41.377006" level="INFO">${current_connection_index} = None</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:07:41.376747" elapsed="0.000285"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:07:41.417358" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:07:41.377568" elapsed="0.039904"/>
</kw>
<msg time="2026-04-08T01:07:41.417656" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T01:07:41.417703" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:07:41.377221" elapsed="0.040519"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T01:07:41.463390" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "3 "0 "[C "C "l "u "s "t "e "r "[C "S "y "n "c "[C "P "r "o "b "l "e "m "s ". "S "t "a "r "t "[C "M "i "n "i "n "e "t "[C "T "o "[C "A "l "l "[C "N "o "d "e "s "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T01:07:41.418324" elapsed="0.045176"/>
</kw>
<msg time="2026-04-08T01:07:41.463659" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T01:07:41.463705" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "3 "0 "[C "C "l "u "s "t "e "r "[C "S "y "n "c "[C "P "r "o "b "l "e "m "s ". "S "t...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:07:41.417934" elapsed="0.045807"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:41.464067" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:07:41.463823" elapsed="0.000298"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:41.463801" elapsed="0.000344"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:07:41.464621" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "3 "0 "[C "C "l "u "s "t "e "r "[C "S "y "n "c "[C "P "r "o "b "l "e "m "s ". "S "t "a "r "t "[C "M "i "n "i "n "e "t "[C "T "o "[C "A "l "l "[C "N "o "d "e "s "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:07:41.464324" elapsed="0.000370"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:41.464988" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:07:41.464761" elapsed="0.000280"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:41.464742" elapsed="0.000322"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T01:07:41.465096" elapsed="0.000030"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:07:41.466617" elapsed="0.000772"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T01:07:41.467673" elapsed="0.000445"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T01:07:41.468408" elapsed="0.000352"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:07:41.465951" elapsed="0.002909"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T01:07:41.465411" elapsed="0.003513"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T01:07:41.375608" elapsed="0.093415"/>
</kw>
<msg time="2026-04-08T01:07:41.469112" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:07:41.469177" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "3 "0 "[C "C "l "u "s "t "e "r "[C "S "y "n "c "[C "P "r "o "b "l "e "m "s ". "S "t...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:07:41.374924" elapsed="0.094294"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T01:07:41.469401" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-08T01:07:41.469295" elapsed="0.000164"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:41.469277" elapsed="0.000205"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 3,
close the previous connection. In any case create a new connection
to karaf console for 3, set correct prompt set and login to karaf console.
Store connection index for 3 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:41.469878" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:41.470460" elapsed="0.000026"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T01:07:41.470533" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T01:07:41.374262" elapsed="0.096378"/>
</kw>
<msg time="2026-04-08T01:07:41.470770" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:07:41.470814" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "3 "0 "[C "C "l "u "s "t "e "r "[C "S "y "n "c "[C "P "r "o "b "l "e "m "s ". "S "t...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:07:41.369807" elapsed="0.101044"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:41.471201" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:07:41.470926" elapsed="0.000329"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:41.470909" elapsed="0.000369"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T01:07:41.369659" elapsed="0.101642"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-08T01:07:41.162837" elapsed="0.308495"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-08T01:07:41.160422" elapsed="0.310965"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-08T01:07:41.155647" elapsed="0.315795"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:07:41.155128" elapsed="0.316360"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-08T01:07:41.151903" elapsed="0.319637"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:07:41.472016" level="INFO">${mininet_conn_id} = 667</msg>
<var>${mininet_conn_id}</var>
<arg>${TOOLS_SYSTEM_IP}</arg>
<arg>prompt=${TOOLS_SYSTEM_PROMPT}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T01:07:41.471722" elapsed="0.000319"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-08T01:07:41.472552" level="INFO">${mininet_conn_id} = 667</msg>
<arg>${mininet_conn_id}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-08T01:07:41.472232" elapsed="0.000361"/>
</kw>
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T01:07:41.472966" level="INFO">Logging into '10.30.170.192:22' as 'jenkins'.</msg>
<msg time="2026-04-08T01:07:41.789411" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 01:07:32 UTC 2026

  System load:  0.0                Processes:             106
  Usage of /:   19.5% of 38.58GB   Users logged in:       0
  Memory usage: 5%                 IPv4 address for ens3: 10.30.170.192
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 01:07:37 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-1-mininet-ovs-217-0 ~]&gt;</msg>
<arg>${TOOLS_SYSTEM_USER}</arg>
<arg>${USER_HOME}/.ssh/id_rsa</arg>
<arg>any</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T01:07:41.472758" elapsed="0.316763"/>
</kw>
<kw name="Put File" owner="SSHLibrary">
<msg time="2026-04-08T01:07:41.796747" level="INFO">[chan 1] Opened sftp connection (server version 3)</msg>
<msg time="2026-04-08T01:07:41.805379" level="INFO">'/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/EntityOwnership/../../../libraries/DynamicMininet.py' -&gt; '/home/jenkins//DynamicMininet.py'</msg>
<arg>/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/EntityOwnership/../../../libraries/DynamicMininet.py</arg>
<arg>.</arg>
<doc>Uploads file(s) from the local machine to the remote machine.</doc>
<status status="PASS" start="2026-04-08T01:07:41.789760" elapsed="0.015756"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T01:07:41.806288" level="INFO">Executing command 'sudo ovs-vsctl set-manager ptcp:6644'.</msg>
<msg time="2026-04-08T01:07:41.828680" level="INFO">Command exited with return code 0.</msg>
<arg>sudo ovs-vsctl set-manager ptcp:6644</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T01:07:41.806002" elapsed="0.022810"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T01:07:41.829486" level="INFO">Executing command 'sudo mn -c'.</msg>
<msg time="2026-04-08T01:07:43.055610" level="INFO">Command exited with return code 0.</msg>
<arg>sudo mn -c</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T01:07:41.829243" elapsed="1.226598"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:07:43.091020" level="INFO">sudo mn --topo linear,1</msg>
<arg>${START_CMD}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:07:43.056400" elapsed="0.034684"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-08T01:07:43.208406" level="INFO">[?2004l*** No default OpenFlow controller found for default switch!
*** Falling back to OVS Bridge
*** Creating network
*** Adding controller
*** Adding hosts:
h1 
*** Adding switches:
s1 
*** Adding links:
(h1, s1) 
*** Configuring hosts
h1 
*** Starting controller

*** Starting 1 switches
s1 ...
*** Starting CLI:
mininet&gt;</msg>
<arg>mininet&gt;</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-08T01:07:43.091294" elapsed="0.117179"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:07:43.209090" level="INFO">${cntls_list} = ['10.30.170.48', '10.30.170.131', '10.30.171.110']</msg>
<var>${cntls_list}</var>
<arg>${ODL_SYSTEM_1_IP}</arg>
<arg>${ODL_SYSTEM_2_IP}</arg>
<arg>${ODL_SYSTEM_3_IP}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:07:43.208654" elapsed="0.000464"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:07:43.209553" level="INFO">${switch_list} = []</msg>
<var>${switch_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:07:43.209313" elapsed="0.000267"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:07:43.210391" level="INFO">${sid} = 1</msg>
<var>${sid}</var>
<arg>${i}+1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:07:43.210027" elapsed="0.000390"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${switch_list}</arg>
<arg>s${sid}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-08T01:07:43.210663" elapsed="0.000214"/>
</kw>
<var name="${i}">0</var>
<status status="PASS" start="2026-04-08T01:07:43.209863" elapsed="0.001053"/>
</iter>
<var>${i}</var>
<value>0</value>
<value>${SWITCHES}</value>
<status status="PASS" start="2026-04-08T01:07:43.209640" elapsed="0.001309"/>
</for>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-08T01:07:43.216954" level="INFO">${active_member} = 1</msg>
<arg>${active_member}</arg>
<arg>1</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-08T01:07:43.211129" elapsed="0.005872"/>
</kw>
<kw name="Setup Clustered Controller For Switches" owner="OvsManager">
<for flavor="IN">
<iter>
<kw name="Set Bridge Controllers" owner="OvsManager">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:07:43.218987" level="INFO">${cmd} = sh ovs-vsctl set bridge s1 protocols=OpenFlow13</msg>
<var>${cmd}</var>
<arg>${lcmd_prefix} ovs-vsctl set bridge ${bridge} protocols=OpenFlow${ofversion}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:07:43.218550" elapsed="0.000464"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:07:43.220754" level="INFO">sh ovs-vsctl set bridge s1 protocols=OpenFlow13</msg>
<arg>${cmd}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:07:43.219193" elapsed="0.001616"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-08T01:07:43.226884" level="INFO">mininet&gt;</msg>
<msg time="2026-04-08T01:07:43.226970" level="INFO">${output} = mininet&gt;</msg>
<var>${output}</var>
<arg>${lprompt}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-08T01:07:43.220977" elapsed="0.006018"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:07:43.227482" level="INFO">mininet&gt;</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:07:43.227232" elapsed="0.000295"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:07:43.228004" level="INFO">${cmd} = sh ovs-vsctl set-controller s1</msg>
<var>${cmd}</var>
<arg>${lcmd_prefix} ovs-vsctl set-controller ${bridge}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:07:43.227690" elapsed="0.000340"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:07:43.228795" level="INFO">${cmd} = sh ovs-vsctl set-controller s1 tcp:10.30.170.48:6654</msg>
<var>${cmd}</var>
<arg>${disconnected}==${False}</arg>
<arg>${cmd} tcp:${cntl}:6653</arg>
<arg>${cmd} tcp:${cntl}:6654</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:07:43.228376" elapsed="0.000446"/>
</kw>
<var name="${cntl}">10.30.170.48</var>
<status status="PASS" start="2026-04-08T01:07:43.228224" elapsed="0.000639"/>
</iter>
<iter>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:07:43.229528" level="INFO">${cmd} = sh ovs-vsctl set-controller s1 tcp:10.30.170.48:6654 tcp:10.30.170.131:6654</msg>
<var>${cmd}</var>
<arg>${disconnected}==${False}</arg>
<arg>${cmd} tcp:${cntl}:6653</arg>
<arg>${cmd} tcp:${cntl}:6654</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:07:43.229093" elapsed="0.000462"/>
</kw>
<var name="${cntl}">10.30.170.131</var>
<status status="PASS" start="2026-04-08T01:07:43.228941" elapsed="0.000654"/>
</iter>
<iter>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:07:43.230301" level="INFO">${cmd} = sh ovs-vsctl set-controller s1 tcp:10.30.170.48:6654 tcp:10.30.170.131:6654 tcp:10.30.171.110:6654</msg>
<var>${cmd}</var>
<arg>${disconnected}==${False}</arg>
<arg>${cmd} tcp:${cntl}:6653</arg>
<arg>${cmd} tcp:${cntl}:6654</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:07:43.229864" elapsed="0.000464"/>
</kw>
<var name="${cntl}">10.30.171.110</var>
<status status="PASS" start="2026-04-08T01:07:43.229673" elapsed="0.000696"/>
</iter>
<var>${cntl}</var>
<value>@{controllers}</value>
<status status="PASS" start="2026-04-08T01:07:43.228080" elapsed="0.002318"/>
</for>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:07:43.230799" level="INFO">sh ovs-vsctl set-controller s1 tcp:10.30.170.48:6654 tcp:10.30.170.131:6654 tcp:10.30.171.110:6654</msg>
<arg>${cmd}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:07:43.230559" elapsed="0.000284"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:07:43.232953" level="INFO">sh ovs-vsctl set-controller s1 tcp:10.30.170.48:6654 tcp:10.30.170.131:6654 tcp:10.30.171.110:6654</msg>
<arg>${cmd}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:07:43.231003" elapsed="0.002005"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-08T01:07:43.239975" level="INFO">mininet&gt;</msg>
<msg time="2026-04-08T01:07:43.240060" level="INFO">${output} = mininet&gt;</msg>
<var>${output}</var>
<arg>${lprompt}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-08T01:07:43.233190" elapsed="0.006894"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:07:43.240540" level="INFO">mininet&gt;</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:07:43.240295" elapsed="0.000289"/>
</kw>
<arg>${switch_name}</arg>
<arg>${controller_ips}</arg>
<arg>disconnected=${True}</arg>
<doc>Adds controller to the bridge</doc>
<status status="PASS" start="2026-04-08T01:07:43.218042" elapsed="0.022598"/>
</kw>
<var name="${switch_name}">s1</var>
<status status="PASS" start="2026-04-08T01:07:43.217769" elapsed="0.022908"/>
</iter>
<var>${switch_name}</var>
<value>@{switches}</value>
<status status="PASS" start="2026-04-08T01:07:43.217643" elapsed="0.023062"/>
</for>
<kw name="Get Ovsdb Data" owner="OvsManager">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:07:43.242550" level="INFO">sh ovs-vsctl list Bridge</msg>
<arg>${lcmd_prefix} ${SH_BR_CMD}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:07:43.241284" elapsed="0.001321"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-08T01:07:43.255812" level="INFO">_uuid               : b1f3a25e-4d19-465f-912b-17fe7b1acbdb
auto_attach         : []
controller          : [419e3e41-ddbb-4be3-b539-f4d045a9bbd9, 740cc856-2b97-4888-820d-bf0f9d99a501, bbb4531e-5733-4157-b3f6-ea7bf10a308b]
datapath_id         : "0000000000000001"
datapath_type       : ""
datapath_version    : "&lt;unknown&gt;"
external_ids        : {}
fail_mode           : standalone
flood_vlans         : []
flow_tables         : {}
ipfix               : []
mcast_snooping_enable: false
mirrors             : []
name                : s1
netflow             : []
other_config        : {datapath-id="0000000000000001", disable-in-band="true", dp-desc=s1}
ports               : [079fa24c-466d-4b78-b64c-7669ebd0e515, 9e99a58c-a78c-4b0a-b18c-2ef2b895c497]
protocols           : [OpenFlow13]
rstp_enable         : false
rstp_status         : {}
sflow               : []
status              : {}
stp_enable          : false
mininet&gt;</msg>
<msg time="2026-04-08T01:07:43.255919" level="INFO">${brstdout} = _uuid               : b1f3a25e-4d19-465f-912b-17fe7b1acbdb
auto_attach         : []
controller          : [419e3e41-ddbb-4be3-b539-f4d045a9bbd9, 740cc856-2b97-4888-820d-bf0f9d99a501, bbb4531e-5733-4...</msg>
<var>${brstdout}</var>
<arg>${lprompt}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-08T01:07:43.242775" elapsed="0.013220"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:07:43.256478" level="INFO">_uuid               : b1f3a25e-4d19-465f-912b-17fe7b1acbdb
auto_attach         : []
controller          : [419e3e41-ddbb-4be3-b539-f4d045a9bbd9, 740cc856-2b97-4888-820d-bf0f9d99a501, bbb4531e-5733-4157-b3f6-ea7bf10a308b]
datapath_id         : "0000000000000001"
datapath_type       : ""
datapath_version    : "&lt;unknown&gt;"
external_ids        : {}
fail_mode           : standalone
flood_vlans         : []
flow_tables         : {}
ipfix               : []
mcast_snooping_enable: false
mirrors             : []
name                : s1
netflow             : []
other_config        : {datapath-id="0000000000000001", disable-in-band="true", dp-desc=s1}
ports               : [079fa24c-466d-4b78-b64c-7669ebd0e515, 9e99a58c-a78c-4b0a-b18c-2ef2b895c497]
protocols           : [OpenFlow13]
rstp_enable         : false
rstp_status         : {}
sflow               : []
status              : {}
stp_enable          : false
mininet&gt;</msg>
<arg>${brstdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:07:43.256225" elapsed="0.000309"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:07:43.258414" level="INFO">sh ovs-vsctl list Controller</msg>
<arg>${lcmd_prefix} ${SH_CNTL_CMD}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:07:43.256697" elapsed="0.001772"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-08T01:07:43.278486" level="INFO">_uuid               : 419e3e41-ddbb-4be3-b539-f4d045a9bbd9
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : false
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : []
status              : {}
target              : "tcp:10.30.170.48:6654"
type                : []

_uuid               : 740cc856-2b97-4888-820d-bf0f9d99a501
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : false
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : []
status              : {}
target              : "tcp:10.30.170.131:6654"
type                : []

_uuid               : bbb4531e-5733-4157-b3f6-ea7bf10a308b
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : false
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : []
status              : {}
target              : "tcp:10.30.171.110:6654"
type                : []
mininet&gt;</msg>
<msg time="2026-04-08T01:07:43.278591" level="INFO">${cntlstdout} = _uuid               : 419e3e41-ddbb-4be3-b539-f4d045a9bbd9
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
exter...</msg>
<var>${cntlstdout}</var>
<arg>${lprompt}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-08T01:07:43.258636" elapsed="0.019983"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:07:43.279066" level="INFO">_uuid               : 419e3e41-ddbb-4be3-b539-f4d045a9bbd9
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : false
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : []
status              : {}
target              : "tcp:10.30.170.48:6654"
type                : []

_uuid               : 740cc856-2b97-4888-820d-bf0f9d99a501
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : false
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : []
status              : {}
target              : "tcp:10.30.170.131:6654"
type                : []

_uuid               : bbb4531e-5733-4157-b3f6-ea7bf10a308b
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : false
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : []
status              : {}
target              : "tcp:10.30.171.110:6654"
type                : []
mininet&gt;</msg>
<arg>${cntlstdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:07:43.278820" elapsed="0.000306"/>
</kw>
<kw name="Parse" owner="VsctlListParser">
<msg time="2026-04-08T01:07:43.279750" level="INFO">_uuid:b1f3a25e-4d19-465f-912b-17fe7b1acbdb
auto_attach:[]
controller:[419e3e41-ddbb-4be3-b539-f4d045a9bbd9,740cc856-2b97-4888-820d-bf0f9d99a501,bbb4531e-5733-4157-b3f6-ea7bf10a308b]
datapath_id:"0000000000000001"
datapath_type:""
datapath_version:"&lt;unknown&gt;"
external_ids:{}
fail_mode:standalone
flood_vlans:[]
flow_tables:{}
ipfix:[]
mcast_snooping_enable:false
mirrors:[]
name:s1
netflow:[]
other_config:{datapath-id="0000000000000001",disable-in-band="true",dp-desc=s1}
ports:[079fa24c-466d-4b78-b64c-7669ebd0e515,9e99a58c-a78c-4b0a-b18c-2ef2b895c497]
protocols:[OpenFlow13]
rstp_enable:false
rstp_status:{}
sflow:[]
status:{}
stp_enable:false
_uuid:419e3e41-ddbb-4be3-b539-f4d045a9bbd9
connection_mode:[]
controller_burst_limit:[]
controller_queue_size:[]
controller_rate_limit:[]
enable_async_messages:[]
external_ids:{}
inactivity_probe:[]
is_connected:false
local_gateway:[]
local_ip:[]
local_netmask:[]
max_backoff:[]
other_config:{}
role:[]
status:{}
target:"tcp:10.30.170.48:6654"
type:[]
_uuid:740cc856-2b97-4888-820d-bf0f9d99a501
connection_mode:[]
controller_burst_limit:[]
controller_queue_size:[]
controller_rate_limit:[]
enable_async_messages:[]
external_ids:{}
inactivity_probe:[]
is_connected:false
local_gateway:[]
local_ip:[]
local_netmask:[]
max_backoff:[]
other_config:{}
role:[]
status:{}
target:"tcp:10.30.170.131:6654"
type:[]
_uuid:bbb4531e-5733-4157-b3f6-ea7bf10a308b
connection_mode:[]
controller_burst_limit:[]
controller_queue_size:[]
controller_rate_limit:[]
enable_async_messages:[]
external_ids:{}
inactivity_probe:[]
is_connected:false
local_gateway:[]
local_ip:[]
local_netmask:[]
max_backoff:[]
other_config:{}
role:[]
status:{}
target:"tcp:10.30.171.110:6654"
type:[]</msg>
<msg time="2026-04-08T01:07:43.279886" level="INFO">${data} = {'': {'_uuid': 'b1f3a25e-4d19-465f-912b-17fe7b1acbdb', 'auto_attach': '[]', 'controller': {'10.30.170.48': {'_uuid': '419e3e41-ddbb-4be3-b539-f4d045a9bbd9', 'connection_mode': '[]', 'controller_burst_...</msg>
<msg time="2026-04-08T01:07:43.279943" level="INFO">${bridegs} = {'b1f3a25e-4d19-465f-912b-17fe7b1acbdb': {'_uuid': 'b1f3a25e-4d19-465f-912b-17fe7b1acbdb', 'auto_attach': '[]', 'controller': '[419e3e41-ddbb-4be3-b539-f4d045a9bbd9,740cc856-2b97-4888-820d-bf0f9d99a50...</msg>
<msg time="2026-04-08T01:07:43.280007" level="INFO">${controllers} = {'419e3e41-ddbb-4be3-b539-f4d045a9bbd9': {'_uuid': '419e3e41-ddbb-4be3-b539-f4d045a9bbd9', 'connection_mode': '[]', 'controller_burst_limit': '[]', 'controller_queue_size': '[]', 'controller_rate_limi...</msg>
<var>${data}</var>
<var>${bridegs}</var>
<var>${controllers}</var>
<arg>${brstdout}</arg>
<arg>${cntlstdout}</arg>
<doc>Produces dictionary with data for future usege</doc>
<status status="PASS" start="2026-04-08T01:07:43.279308" elapsed="0.000749"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:07:43.280519" level="INFO">{'': {'_uuid': 'b1f3a25e-4d19-465f-912b-17fe7b1acbdb', 'auto_attach': '[]', 'controller': {'10.30.170.48': {'_uuid': '419e3e41-ddbb-4be3-b539-f4d045a9bbd9', 'connection_mode': '[]', 'controller_burst_limit': '[]', 'controller_queue_size': '[]', 'controller_rate_limit': '[]', 'enable_async_messages': '[]', 'external_ids': '{}', 'inactivity_probe': '[]', 'is_connected': False, 'local_gateway': '[]', 'local_ip': '[]', 'local_netmask': '[]', 'max_backoff': '[]', 'other_config': '{}', 'role': '[]', 'status': '{}', 'target': '"tcp:10.30.170.48:6654"', 'type': '[]'}, '10.30.170.131': {'_uuid': '740cc856-2b97-4888-820d-bf0f9d99a501', 'connection_mode': '[]', 'controller_burst_limit': '[]', 'controller_queue_size': '[]', 'controller_rate_limit': '[]', 'enable_async_messages': '[]', 'external_ids': '{}', 'inactivity_probe': '[]', 'is_connected': False, 'local_gateway': '[]', 'local_ip': '[]', 'local_netmask': '[]', 'max_backoff': '[]', 'other_config': '{}', 'role': '[]', 'status': '{}', 'target': '"tcp:10.30.170.131:6654"', 'type': '[]'}, '10.30.171.110': {'_uuid': 'bbb4531e-5733-4157-b3f6-ea7bf10a308b', 'connection_mode': '[]', 'controller_burst_limit': '[]', 'controller_queue_size': '[]', 'controller_rate_limit': '[]', 'enable_async_messages': '[]', 'external_ids': '{}', 'inactivity_probe': '[]', 'is_connected': False, 'local_gateway': '[]', 'local_ip': '[]', 'local_netmask': '[]', 'max_backoff': '[]', 'other_config': '{}', 'role': '[]', 'status': '{}', 'target': '"tcp:10.30.171.110:6654"', 'type': '[]'}}, 'datapath_id': '"0000000000000001"', 'datapath_type': '""', 'datapath_version': '"&lt;unknown&gt;"', 'external_ids': '{}', 'fail_mode': 'standalone', 'flood_vlans': '[]', 'flow_tables': '{}', 'ipfix': '[]', 'mcast_snooping_enable': 'false', 'mirrors': '[]', 'name': 's1', 'netflow': '[]', 'other_config': '{datapath-id="0000000000000001",disable-in-band="true",dp-desc=s1}', 'ports': '[079fa24c-466d-4b78-b64c-7669ebd0e515,9e99a58c-a78c-4b0a-b18c-2ef2b895c497]', 'protocols': '[OpenFlow13]', 'rstp_enable': 'false', 'rstp_status': '{}', 'sflow': '[]', 'status': '{}', 'stp_enable': 'false'}}</msg>
<arg>${data}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:07:43.280249" elapsed="0.000332"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-08T01:07:43.281135" level="INFO">${ovs_switch_data} = {'': {'_uuid': 'b1f3a25e-4d19-465f-912b-17fe7b1acbdb', 'auto_attach': '[]', 'controller': {'10.30.170.48': {'_uuid': '419e3e41-ddbb-4be3-b539-f4d045a9bbd9', 'connection_mode': '[]', 'controller_burst_...</msg>
<arg>${ovs_switch_data}</arg>
<arg>${data}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-08T01:07:43.280752" elapsed="0.000452"/>
</kw>
<return>
<value>${data}</value>
<status status="PASS" start="2026-04-08T01:07:43.281254" elapsed="0.000040"/>
</return>
<doc>Gets ovs data and parse them.</doc>
<status status="PASS" start="2026-04-08T01:07:43.240964" elapsed="0.040427"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get From List" owner="Collections">
<msg time="2026-04-08T01:07:43.281900" level="INFO">${own} = 10.30.170.48</msg>
<var>${own}</var>
<arg>${controller_ips}</arg>
<arg>0</arg>
<doc>Returns the value specified with an ``index`` from ``list``.</doc>
<status status="PASS" start="2026-04-08T01:07:43.281713" elapsed="0.000212"/>
</kw>
<kw name="Reconnect Switch To Controller And Verify Connected" owner="OvsManager">
<if>
<branch type="IF" condition="${update_data}==${True}">
<kw name="Get Ovsdb Data" owner="OvsManager">
<doc>Gets ovs data and parse them.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:43.283179" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:07:43.282675" elapsed="0.000561"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:43.282654" elapsed="0.000608"/>
</if>
<kw name="Get Controllers Uuid" owner="OvsManager">
<if>
<branch type="IF" condition="${update_data}==${True}">
<kw name="Get Ovsdb Data" owner="OvsManager">
<doc>Gets ovs data and parse them.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:43.284124" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:07:43.283815" elapsed="0.000381"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:43.283798" elapsed="0.000422"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:07:43.284590" level="FAIL">Dictionary does not contain key 's1'.</msg>
<var>${bridge}</var>
<arg>${ovs_switch_data}</arg>
<arg>${switch}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="FAIL" start="2026-04-08T01:07:43.284372" elapsed="0.000324">Dictionary does not contain key 's1'.</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${cntls}</var>
<arg>${bridge}</arg>
<arg>controller</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:43.284872" elapsed="0.000021"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${cntl}</var>
<arg>${cntls}</arg>
<arg>${controller}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:43.285049" elapsed="0.000020"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${uuid}</var>
<arg>${cntl}</arg>
<arg>_uuid</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:43.285257" elapsed="0.000021"/>
</kw>
<return>
<value>${uuid}</value>
<status status="NOT RUN" start="2026-04-08T01:07:43.285323" elapsed="0.000015"/>
</return>
<var>${uuid}</var>
<arg>${switch}</arg>
<arg>${controller}</arg>
<doc>Returns controllers uuid</doc>
<status status="FAIL" start="2026-04-08T01:07:43.283496" elapsed="0.001939">Dictionary does not contain key 's1'.</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${cmd}</var>
<arg>${lcmd_prefix} ovs-vsctl set Controller ${uuid} target="tcp\\:${controller}\\:6653"</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:43.285607" elapsed="0.000020"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<arg>${cmd}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:43.285779" elapsed="0.000019"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<var>${output}</var>
<arg>${lprompt}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:43.285948" elapsed="0.000020"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:43.286152" elapsed="0.000034"/>
</kw>
<if>
<branch type="IF" condition="${verify_connected}==${False}">
<return>
<status status="NOT RUN" start="2026-04-08T01:07:43.286285" elapsed="0.000012"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:07:43.286250" elapsed="0.000070"/>
</branch>
<status status="NOT RUN" start="2026-04-08T01:07:43.286233" elapsed="0.000108"/>
</if>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<arg>5x</arg>
<arg>2s</arg>
<arg>Should Be Connected</arg>
<arg>${switch}</arg>
<arg>${controller}</arg>
<arg>update_data=${True}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:43.286495" elapsed="0.000020"/>
</kw>
<kw name="Execute OvsVsctl Show Command" owner="OvsManager" type="TEARDOWN">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:07:43.288583" level="INFO">sh ovs-vsctl show</msg>
<arg>${lcmd_prefix} ovs-vsctl show</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:07:43.287077" elapsed="0.001595"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-08T01:07:43.298884" level="INFO">9a5df812-eb49-4477-a37e-2d464c02791d
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.48:6654"
        Controller "tcp:10.30.170.131:6654"
        Controller "tcp:10.30.171.110:6654"
        fail_mode: standalone
        Port s1
            Interface s1
                type: internal
        Port s1-eth1
            Interface s1-eth1
    ovs_version: "2.17.11"
mininet&gt;</msg>
<msg time="2026-04-08T01:07:43.298979" level="INFO">${output} = 9a5df812-eb49-4477-a37e-2d464c02791d
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.48:6654"
        Controller "tcp:10.30.170.131:6654"
        Controller "tcp:10.30.171...</msg>
<var>${output}</var>
<arg>${lprompt}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-08T01:07:43.288838" elapsed="0.010168"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:07:43.299470" level="INFO">9a5df812-eb49-4477-a37e-2d464c02791d
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.48:6654"
        Controller "tcp:10.30.170.131:6654"
        Controller "tcp:10.30.171.110:6654"
        fail_mode: standalone
        Port s1
            Interface s1
                type: internal
        Port s1-eth1
            Interface s1-eth1
    ovs_version: "2.17.11"
mininet&gt;</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:07:43.299221" elapsed="0.000299"/>
</kw>
<doc>Executes ovs-vsctl show command and returns stdout, no check nor change is performed</doc>
<status status="PASS" start="2026-04-08T01:07:43.286776" elapsed="0.012799"/>
</kw>
<arg>${switch_name}</arg>
<arg>${own}</arg>
<arg>verify_connected=${False}</arg>
<doc>Reconnects the switch back to the controller by setting the correct port</doc>
<status status="FAIL" start="2026-04-08T01:07:43.282262" elapsed="0.017383">Dictionary does not contain key 's1'.</status>
</kw>
<var name="${switch_name}">s1</var>
<status status="FAIL" start="2026-04-08T01:07:43.281570" elapsed="0.018136">Dictionary does not contain key 's1'.</status>
</iter>
<var>${switch_name}</var>
<value>@{switches}</value>
<status status="FAIL" start="2026-04-08T01:07:43.281434" elapsed="0.018326">Dictionary does not contain key 's1'.</status>
</for>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<arg>5x</arg>
<arg>2s</arg>
<arg>OvsManager__Verify_Masters_Connected</arg>
<arg>${switches}</arg>
<arg>update_data=${True}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:43.299939" elapsed="0.000021"/>
</kw>
<kw name="OvsManager__Enable_Slaves" owner="OvsManager">
<arg>${switches}</arg>
<arg>verify_connected=${verify_connected}</arg>
<doc>This is a private keyword to enable diconnected controllers</doc>
<status status="NOT RUN" start="2026-04-08T01:07:43.300222" elapsed="0.000024"/>
</kw>
<arg>${switch_list}</arg>
<arg>${cntls_list}</arg>
<doc>The idea of this keyword is to setup clustered controller and to be more or less sure that the role is filled correctly. The problem is when
more controllers are being set up at once, the role shown in Controller ovsdb table is not the same as we can see from wireshark traces.
Now we set disconnected controllers and we will connect them expecting that the first connected controller will be master.</doc>
<status status="FAIL" start="2026-04-08T01:07:43.217315" elapsed="0.083019">Dictionary does not contain key 's1'.</status>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<arg>15s</arg>
<arg>1s</arg>
<arg>ClusterOpenFlow.Verify Switch Connections Running On Member</arg>
<arg>${SWITCHES}</arg>
<arg>1</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:43.300516" elapsed="0.000021"/>
</kw>
<status status="FAIL" start="2026-04-08T01:07:41.151395" elapsed="2.149286">Dictionary does not contain key 's1'.</status>
</test>
<test id="s1-s7-t2" name="Switches To Be Connected To All Nodes" line="55">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-08T01:07:43.303821" elapsed="0.000208"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-08T01:07:43.303548" elapsed="0.000535"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:07:43.305099" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:07:43.304989" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:43.304971" elapsed="0.000223"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:07:43.310284" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:07:43.310175" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:43.310143" elapsed="0.000207"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:07:43.311363" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:07:43.310968" elapsed="0.000422"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:07:43.311856" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:07:43.311559" elapsed="0.000323"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T01:07:43.311925" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T01:07:43.312078" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T01:07:43.310585" elapsed="0.001518"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:07:43.317432" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:07:43.317325" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:43.317307" elapsed="0.000191"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:07:43.318703" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:07:43.318596" elapsed="0.000190"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:43.318578" elapsed="0.000233"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:07:43.319285" level="INFO">${karaf_connection_index} = 655</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:07:43.318966" elapsed="0.000347"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:07:43.319758" level="INFO">${current_connection_index} = 667</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:07:43.319482" elapsed="0.000303"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:07:43.353108" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:07:43.320330" elapsed="0.032897"/>
</kw>
<msg time="2026-04-08T01:07:43.353389" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T01:07:43.353437" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:07:43.319957" elapsed="0.033518"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T01:07:43.411103" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "3 "0 "[C "C "l "u "s "t "e "r "[C "S "y "n "c "[C "P "r "o "b "l "e "m "s ". "S "w "i "t "c "h "e "s "[C "T "o "[C "B "e "[C "C "o "n "n "e "c "t "e "d "[C "T "o "[C "A "l "l "[C "N "o "d "e "s "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T01:07:43.354010" elapsed="0.057219"/>
</kw>
<msg time="2026-04-08T01:07:43.411389" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T01:07:43.411434" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "3 "0 "[C "C "l "u "s "t "e "r "[C "S "y "n "c "[C "P "r "o "b "l "e "m "s ". "S "w...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:07:43.353658" elapsed="0.057813"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:43.411781" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:07:43.411549" elapsed="0.000298"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:43.411530" elapsed="0.000342"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:07:43.412343" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "3 "0 "[C "C "l "u "s "t "e "r "[C "S "y "n "c "[C "P "r "o "b "l "e "m "s ". "S "w "i "t "c "h "e "s "[C "T "o "[C "B "e "[C "C "o "n "n "e "c "t "e "d "[C "T "o "[C "A "l "l "[C "N "o "d "e "s "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:07:43.412024" elapsed="0.000396"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:43.412713" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:07:43.412487" elapsed="0.000279"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:43.412469" elapsed="0.000320"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T01:07:43.412821" elapsed="0.000027"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:07:43.415323" elapsed="0.000192"/>
</kw>
<msg time="2026-04-08T01:07:43.415576" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:07:43.414301" elapsed="0.001402"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:43.416166" elapsed="0.000080"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:43.416517" elapsed="0.000073"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:07:43.413662" elapsed="0.003038"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T01:07:43.413102" elapsed="0.003662"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T01:07:43.318296" elapsed="0.098567"/>
</kw>
<msg time="2026-04-08T01:07:43.416955" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:07:43.416999" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "3 "0 "[C "C "l "u "s "t "e "r "[C "S "y "n "c "[C "P "r "o "b "l "e "m "s ". "S "w...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:07:43.317657" elapsed="0.099380"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T01:07:43.417242" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-08T01:07:43.417114" elapsed="0.000188"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:43.417095" elapsed="0.000231"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:43.417721" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:43.418093" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T01:07:43.418180" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T01:07:43.316965" elapsed="0.101329"/>
</kw>
<msg time="2026-04-08T01:07:43.418387" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:07:43.418431" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "3 "0 "[C "C "l "u "s "t "e "r "[C "S "y "n "c "[C "P "r "o "b "l "e "m "s ". "S "w...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:07:43.312485" elapsed="0.105984"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:43.418803" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:07:43.418545" elapsed="0.000312"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:43.418528" elapsed="0.000352"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T01:07:43.312334" elapsed="0.106570"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:07:43.424188" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:07:43.424061" elapsed="0.000174"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:43.424043" elapsed="0.000217"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:07:43.425633" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:07:43.425525" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:43.425507" elapsed="0.000196"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:07:43.426169" level="INFO">${karaf_connection_index} = 657</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:07:43.425859" elapsed="0.000338"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:07:43.426631" level="INFO">${current_connection_index} = 667</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:07:43.426369" elapsed="0.000289"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:07:43.465706" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:07:43.427199" elapsed="0.038608"/>
</kw>
<msg time="2026-04-08T01:07:43.465966" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T01:07:43.466012" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:07:43.426832" elapsed="0.039217"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T01:07:43.532524" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "3 "0 "[C "C "l "u "s "t "e "r "[C "S "y "n "c "[C "P "r "o "b "l "e "m "s ". "S "w "i "t "c "h "e "s "[C "T "o "[C "B "e "[C "C "o "n "n "e "c "t "e "d "[C "T "o "[C "A "l "l "[C "N "o "d "e "s "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T01:07:43.466609" elapsed="0.066034"/>
</kw>
<msg time="2026-04-08T01:07:43.532809" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T01:07:43.532857" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "3 "0 "[C "C "l "u "s "t "e "r "[C "S "y "n "c "[C "P "r "o "b "l "e "m "s ". "S "w...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:07:43.466255" elapsed="0.066640"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:43.533243" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:07:43.532976" elapsed="0.000330"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:43.532956" elapsed="0.000374"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:07:43.533790" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "3 "0 "[C "C "l "u "s "t "e "r "[C "S "y "n "c "[C "P "r "o "b "l "e "m "s ". "S "w "i "t "c "h "e "s "[C "T "o "[C "B "e "[C "C "o "n "n "e "c "t "e "d "[C "T "o "[C "A "l "l "[C "N "o "d "e "s "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:07:43.533486" elapsed="0.000383"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:43.534187" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:07:43.533936" elapsed="0.000307"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:43.533918" elapsed="0.000348"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T01:07:43.534300" elapsed="0.000028"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:07:43.537233" elapsed="0.000199"/>
</kw>
<msg time="2026-04-08T01:07:43.537496" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:07:43.535801" elapsed="0.001826"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:43.537913" elapsed="0.000075"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:43.538285" elapsed="0.000074"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:07:43.535171" elapsed="0.003298"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T01:07:43.534608" elapsed="0.003937"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T01:07:43.425127" elapsed="0.113520"/>
</kw>
<msg time="2026-04-08T01:07:43.538740" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:07:43.538785" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "3 "0 "[C "C "l "u "s "t "e "r "[C "S "y "n "c "[C "P "r "o "b "l "e "m "s ". "S "w...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:07:43.424426" elapsed="0.114398"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T01:07:43.539205" elapsed="0.000029"/>
</return>
<status status="PASS" start="2026-04-08T01:07:43.538902" elapsed="0.000366"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:43.538883" elapsed="0.000410"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 2,
close the previous connection. In any case create a new connection
to karaf console for 2, set correct prompt set and login to karaf console.
Store connection index for 2 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:43.539698" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:43.540046" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T01:07:43.540119" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T01:07:43.423724" elapsed="0.116520"/>
</kw>
<msg time="2026-04-08T01:07:43.540338" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:07:43.540383" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "3 "0 "[C "C "l "u "s "t "e "r "[C "S "y "n "c "[C "P "r "o "b "l "e "m "s ". "S "w...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:07:43.419189" elapsed="0.121231"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:43.540755" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:07:43.540495" elapsed="0.000314"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:43.540478" elapsed="0.000355"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T01:07:43.419022" elapsed="0.121834"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:07:43.546118" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:07:43.546010" elapsed="0.000250"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:43.545992" elapsed="0.000293"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:07:43.547472" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:07:43.547363" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:43.547345" elapsed="0.000195"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:07:43.547990" level="INFO">${karaf_connection_index} = 659</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:07:43.547695" elapsed="0.000322"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:07:43.548469" level="INFO">${current_connection_index} = 667</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:07:43.548203" elapsed="0.000293"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:07:43.584369" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:07:43.549021" elapsed="0.035449"/>
</kw>
<msg time="2026-04-08T01:07:43.584645" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T01:07:43.584692" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:07:43.548667" elapsed="0.036062"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T01:07:43.639181" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "3 "0 "[C "C "l "u "s "t "e "r "[C "S "y "n "c "[C "P "r "o "b "l "e "m "s ". "S "w "i "t "c "h "e "s "[C "T "o "[C "B "e "[C "C "o "n "n "e "c "t "e "d "[C "T "o "[C "A "l "l "[C "N "o "d "e "s "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T01:07:43.585294" elapsed="0.054005"/>
</kw>
<msg time="2026-04-08T01:07:43.639460" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T01:07:43.639507" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "3 "0 "[C "C "l "u "s "t "e "r "[C "S "y "n "c "[C "P "r "o "b "l "e "m "s ". "S "w...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:07:43.584913" elapsed="0.054632"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:43.639858" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:07:43.639624" elapsed="0.000289"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:43.639603" elapsed="0.000334"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:07:43.640409" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "3 "0 "[C "C "l "u "s "t "e "r "[C "S "y "n "c "[C "P "r "o "b "l "e "m "s ". "S "w "i "t "c "h "e "s "[C "T "o "[C "B "e "[C "C "o "n "n "e "c "t "e "d "[C "T "o "[C "A "l "l "[C "N "o "d "e "s "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:07:43.640087" elapsed="0.000401"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:43.640782" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:07:43.640555" elapsed="0.000281"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:43.640538" elapsed="0.000322"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T01:07:43.640892" elapsed="0.000027"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:07:43.643402" elapsed="0.000195"/>
</kw>
<msg time="2026-04-08T01:07:43.643657" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:07:43.642397" elapsed="0.001385"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:43.644060" elapsed="0.000074"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:43.644417" elapsed="0.000073"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:07:43.641765" elapsed="0.002832"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T01:07:43.641193" elapsed="0.003467"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T01:07:43.547038" elapsed="0.097719"/>
</kw>
<msg time="2026-04-08T01:07:43.644849" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:07:43.644892" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "3 "0 "[C "C "l "u "s "t "e "r "[C "S "y "n "c "[C "P "r "o "b "l "e "m "s ". "S "w...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:07:43.546469" elapsed="0.098461"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T01:07:43.645110" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-08T01:07:43.645005" elapsed="0.000185"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:43.644987" elapsed="0.000228"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 3,
close the previous connection. In any case create a new connection
to karaf console for 3, set correct prompt set and login to karaf console.
Store connection index for 3 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:43.645836" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:43.646198" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T01:07:43.646270" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T01:07:43.545671" elapsed="0.100704"/>
</kw>
<msg time="2026-04-08T01:07:43.646468" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:07:43.646511" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "3 "0 "[C "C "l "u "s "t "e "r "[C "S "y "n "c "[C "P "r "o "b "l "e "m "s ". "S "w...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:07:43.541125" elapsed="0.105423"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:43.646880" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:07:43.646623" elapsed="0.000311"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:43.646606" elapsed="0.000351"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T01:07:43.540975" elapsed="0.106036"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-08T01:07:43.312152" elapsed="0.334891"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-08T01:07:43.309803" elapsed="0.337296"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-08T01:07:43.304691" elapsed="0.342478"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:07:43.304261" elapsed="0.342957"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-08T01:07:43.301440" elapsed="0.345837"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Check All Switches Connected To All Cluster Nodes">
<kw name="Get Ovsdb Data" owner="OvsManager">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:07:43.650662" level="INFO">sh ovs-vsctl list Bridge</msg>
<arg>${lcmd_prefix} ${SH_BR_CMD}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:07:43.648596" elapsed="0.002122"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-08T01:07:43.665689" level="INFO">_uuid               : b1f3a25e-4d19-465f-912b-17fe7b1acbdb
auto_attach         : []
controller          : [419e3e41-ddbb-4be3-b539-f4d045a9bbd9, 740cc856-2b97-4888-820d-bf0f9d99a501, bbb4531e-5733-4157-b3f6-ea7bf10a308b]
datapath_id         : "0000000000000001"
datapath_type       : ""
datapath_version    : "&lt;unknown&gt;"
external_ids        : {}
fail_mode           : standalone
flood_vlans         : []
flow_tables         : {}
ipfix               : []
mcast_snooping_enable: false
mirrors             : []
name                : s1
netflow             : []
other_config        : {datapath-id="0000000000000001", disable-in-band="true", dp-desc=s1}
ports               : [079fa24c-466d-4b78-b64c-7669ebd0e515, 9e99a58c-a78c-4b0a-b18c-2ef2b895c497]
protocols           : [OpenFlow13]
rstp_enable         : false
rstp_status         : {}
sflow               : []
status              : {}
stp_enable          : false
mininet&gt;</msg>
<msg time="2026-04-08T01:07:43.665791" level="INFO">${brstdout} = _uuid               : b1f3a25e-4d19-465f-912b-17fe7b1acbdb
auto_attach         : []
controller          : [419e3e41-ddbb-4be3-b539-f4d045a9bbd9, 740cc856-2b97-4888-820d-bf0f9d99a501, bbb4531e-5733-4...</msg>
<var>${brstdout}</var>
<arg>${lprompt}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-08T01:07:43.650890" elapsed="0.014928"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:07:43.666279" level="INFO">_uuid               : b1f3a25e-4d19-465f-912b-17fe7b1acbdb
auto_attach         : []
controller          : [419e3e41-ddbb-4be3-b539-f4d045a9bbd9, 740cc856-2b97-4888-820d-bf0f9d99a501, bbb4531e-5733-4157-b3f6-ea7bf10a308b]
datapath_id         : "0000000000000001"
datapath_type       : ""
datapath_version    : "&lt;unknown&gt;"
external_ids        : {}
fail_mode           : standalone
flood_vlans         : []
flow_tables         : {}
ipfix               : []
mcast_snooping_enable: false
mirrors             : []
name                : s1
netflow             : []
other_config        : {datapath-id="0000000000000001", disable-in-band="true", dp-desc=s1}
ports               : [079fa24c-466d-4b78-b64c-7669ebd0e515, 9e99a58c-a78c-4b0a-b18c-2ef2b895c497]
protocols           : [OpenFlow13]
rstp_enable         : false
rstp_status         : {}
sflow               : []
status              : {}
stp_enable          : false
mininet&gt;</msg>
<arg>${brstdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:07:43.666014" elapsed="0.000320"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:07:43.667834" level="INFO">sh ovs-vsctl list Controller</msg>
<arg>${lcmd_prefix} ${SH_CNTL_CMD}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:07:43.666494" elapsed="0.001396"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-08T01:07:43.688255" level="INFO">_uuid               : 419e3e41-ddbb-4be3-b539-f4d045a9bbd9
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : false
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : []
status              : {}
target              : "tcp:10.30.170.48:6654"
type                : []

_uuid               : 740cc856-2b97-4888-820d-bf0f9d99a501
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : false
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : []
status              : {}
target              : "tcp:10.30.170.131:6654"
type                : []

_uuid               : bbb4531e-5733-4157-b3f6-ea7bf10a308b
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : false
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : []
status              : {}
target              : "tcp:10.30.171.110:6654"
type                : []
mininet&gt;</msg>
<msg time="2026-04-08T01:07:43.688363" level="INFO">${cntlstdout} = _uuid               : 419e3e41-ddbb-4be3-b539-f4d045a9bbd9
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
exter...</msg>
<var>${cntlstdout}</var>
<arg>${lprompt}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-08T01:07:43.668056" elapsed="0.020333"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:07:43.688830" level="INFO">_uuid               : 419e3e41-ddbb-4be3-b539-f4d045a9bbd9
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : false
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : []
status              : {}
target              : "tcp:10.30.170.48:6654"
type                : []

_uuid               : 740cc856-2b97-4888-820d-bf0f9d99a501
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : false
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : []
status              : {}
target              : "tcp:10.30.170.131:6654"
type                : []

_uuid               : bbb4531e-5733-4157-b3f6-ea7bf10a308b
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : false
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : []
status              : {}
target              : "tcp:10.30.171.110:6654"
type                : []
mininet&gt;</msg>
<arg>${cntlstdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:07:43.688584" elapsed="0.000339"/>
</kw>
<kw name="Parse" owner="VsctlListParser">
<msg time="2026-04-08T01:07:43.689577" level="INFO">_uuid:b1f3a25e-4d19-465f-912b-17fe7b1acbdb
auto_attach:[]
controller:[419e3e41-ddbb-4be3-b539-f4d045a9bbd9,740cc856-2b97-4888-820d-bf0f9d99a501,bbb4531e-5733-4157-b3f6-ea7bf10a308b]
datapath_id:"0000000000000001"
datapath_type:""
datapath_version:"&lt;unknown&gt;"
external_ids:{}
fail_mode:standalone
flood_vlans:[]
flow_tables:{}
ipfix:[]
mcast_snooping_enable:false
mirrors:[]
name:s1
netflow:[]
other_config:{datapath-id="0000000000000001",disable-in-band="true",dp-desc=s1}
ports:[079fa24c-466d-4b78-b64c-7669ebd0e515,9e99a58c-a78c-4b0a-b18c-2ef2b895c497]
protocols:[OpenFlow13]
rstp_enable:false
rstp_status:{}
sflow:[]
status:{}
stp_enable:false
_uuid:419e3e41-ddbb-4be3-b539-f4d045a9bbd9
connection_mode:[]
controller_burst_limit:[]
controller_queue_size:[]
controller_rate_limit:[]
enable_async_messages:[]
external_ids:{}
inactivity_probe:[]
is_connected:false
local_gateway:[]
local_ip:[]
local_netmask:[]
max_backoff:[]
other_config:{}
role:[]
status:{}
target:"tcp:10.30.170.48:6654"
type:[]
_uuid:740cc856-2b97-4888-820d-bf0f9d99a501
connection_mode:[]
controller_burst_limit:[]
controller_queue_size:[]
controller_rate_limit:[]
enable_async_messages:[]
external_ids:{}
inactivity_probe:[]
is_connected:false
local_gateway:[]
local_ip:[]
local_netmask:[]
max_backoff:[]
other_config:{}
role:[]
status:{}
target:"tcp:10.30.170.131:6654"
type:[]
_uuid:bbb4531e-5733-4157-b3f6-ea7bf10a308b
connection_mode:[]
controller_burst_limit:[]
controller_queue_size:[]
controller_rate_limit:[]
enable_async_messages:[]
external_ids:{}
inactivity_probe:[]
is_connected:false
local_gateway:[]
local_ip:[]
local_netmask:[]
max_backoff:[]
other_config:{}
role:[]
status:{}
target:"tcp:10.30.171.110:6654"
type:[]</msg>
<msg time="2026-04-08T01:07:43.689712" level="INFO">${data} = {'': {'_uuid': 'b1f3a25e-4d19-465f-912b-17fe7b1acbdb', 'auto_attach': '[]', 'controller': {'10.30.170.48': {'_uuid': '419e3e41-ddbb-4be3-b539-f4d045a9bbd9', 'connection_mode': '[]', 'controller_burst_...</msg>
<msg time="2026-04-08T01:07:43.689768" level="INFO">${bridegs} = {'b1f3a25e-4d19-465f-912b-17fe7b1acbdb': {'_uuid': 'b1f3a25e-4d19-465f-912b-17fe7b1acbdb', 'auto_attach': '[]', 'controller': '[419e3e41-ddbb-4be3-b539-f4d045a9bbd9,740cc856-2b97-4888-820d-bf0f9d99a50...</msg>
<msg time="2026-04-08T01:07:43.689830" level="INFO">${controllers} = {'419e3e41-ddbb-4be3-b539-f4d045a9bbd9': {'_uuid': '419e3e41-ddbb-4be3-b539-f4d045a9bbd9', 'connection_mode': '[]', 'controller_burst_limit': '[]', 'controller_queue_size': '[]', 'controller_rate_limi...</msg>
<var>${data}</var>
<var>${bridegs}</var>
<var>${controllers}</var>
<arg>${brstdout}</arg>
<arg>${cntlstdout}</arg>
<doc>Produces dictionary with data for future usege</doc>
<status status="PASS" start="2026-04-08T01:07:43.689117" elapsed="0.000738"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:07:43.690315" level="INFO">{'': {'_uuid': 'b1f3a25e-4d19-465f-912b-17fe7b1acbdb', 'auto_attach': '[]', 'controller': {'10.30.170.48': {'_uuid': '419e3e41-ddbb-4be3-b539-f4d045a9bbd9', 'connection_mode': '[]', 'controller_burst_limit': '[]', 'controller_queue_size': '[]', 'controller_rate_limit': '[]', 'enable_async_messages': '[]', 'external_ids': '{}', 'inactivity_probe': '[]', 'is_connected': False, 'local_gateway': '[]', 'local_ip': '[]', 'local_netmask': '[]', 'max_backoff': '[]', 'other_config': '{}', 'role': '[]', 'status': '{}', 'target': '"tcp:10.30.170.48:6654"', 'type': '[]'}, '10.30.170.131': {'_uuid': '740cc856-2b97-4888-820d-bf0f9d99a501', 'connection_mode': '[]', 'controller_burst_limit': '[]', 'controller_queue_size': '[]', 'controller_rate_limit': '[]', 'enable_async_messages': '[]', 'external_ids': '{}', 'inactivity_probe': '[]', 'is_connected': False, 'local_gateway': '[]', 'local_ip': '[]', 'local_netmask': '[]', 'max_backoff': '[]', 'other_config': '{}', 'role': '[]', 'status': '{}', 'target': '"tcp:10.30.170.131:6654"', 'type': '[]'}, '10.30.171.110': {'_uuid': 'bbb4531e-5733-4157-b3f6-ea7bf10a308b', 'connection_mode': '[]', 'controller_burst_limit': '[]', 'controller_queue_size': '[]', 'controller_rate_limit': '[]', 'enable_async_messages': '[]', 'external_ids': '{}', 'inactivity_probe': '[]', 'is_connected': False, 'local_gateway': '[]', 'local_ip': '[]', 'local_netmask': '[]', 'max_backoff': '[]', 'other_config': '{}', 'role': '[]', 'status': '{}', 'target': '"tcp:10.30.171.110:6654"', 'type': '[]'}}, 'datapath_id': '"0000000000000001"', 'datapath_type': '""', 'datapath_version': '"&lt;unknown&gt;"', 'external_ids': '{}', 'fail_mode': 'standalone', 'flood_vlans': '[]', 'flow_tables': '{}', 'ipfix': '[]', 'mcast_snooping_enable': 'false', 'mirrors': '[]', 'name': 's1', 'netflow': '[]', 'other_config': '{datapath-id="0000000000000001",disable-in-band="true",dp-desc=s1}', 'ports': '[079fa24c-466d-4b78-b64c-7669ebd0e515,9e99a58c-a78c-4b0a-b18c-2ef2b895c497]', 'protocols': '[OpenFlow13]', 'rstp_enable': 'false', 'rstp_status': '{}', 'sflow': '[]', 'status': '{}', 'stp_enable': 'false'}}</msg>
<arg>${data}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:07:43.690028" elapsed="0.000348"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-08T01:07:43.690957" level="INFO">${ovs_switch_data} = {'': {'_uuid': 'b1f3a25e-4d19-465f-912b-17fe7b1acbdb', 'auto_attach': '[]', 'controller': {'10.30.170.48': {'_uuid': '419e3e41-ddbb-4be3-b539-f4d045a9bbd9', 'connection_mode': '[]', 'controller_burst_...</msg>
<arg>${ovs_switch_data}</arg>
<arg>${data}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-08T01:07:43.690547" elapsed="0.000453"/>
</kw>
<return>
<value>${data}</value>
<status status="PASS" start="2026-04-08T01:07:43.691045" elapsed="0.000029"/>
</return>
<doc>Gets ovs data and parse them.</doc>
<status status="PASS" start="2026-04-08T01:07:43.648302" elapsed="0.042879"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:07:43.691874" level="INFO">${sid} = 1</msg>
<var>${sid}</var>
<arg>${i}+1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:07:43.691555" elapsed="0.000345"/>
</kw>
<kw name="Should Be Connected" owner="OvsManager">
<kw name="OvsManager__Is_Connected" owner="OvsManager">
<if>
<branch type="IF" condition="${update_data}==${True}">
<kw name="Get Ovsdb Data" owner="OvsManager">
<doc>Gets ovs data and parse them.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:43.693391" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:07:43.693055" elapsed="0.000391"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:43.693034" elapsed="0.000436"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:07:43.693827" level="FAIL">Dictionary does not contain key 's1'.</msg>
<var>${bridge}</var>
<arg>${ovs_switch_data}</arg>
<arg>${switch}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="FAIL" start="2026-04-08T01:07:43.693620" elapsed="0.000302">Dictionary does not contain key 's1'.</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${cntls}</var>
<arg>${bridge}</arg>
<arg>controller</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:43.694099" elapsed="0.000020"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${cntl}</var>
<arg>${cntls}</arg>
<arg>${controller}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:43.694293" elapsed="0.000020"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${connected}</var>
<arg>${cntl}</arg>
<arg>is_connected</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:43.694468" elapsed="0.000019"/>
</kw>
<return>
<value>${connected}</value>
<status status="NOT RUN" start="2026-04-08T01:07:43.694564" elapsed="0.000017"/>
</return>
<kw name="Execute OvsVsctl Show Command" owner="OvsManager" type="TEARDOWN">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:07:43.696617" level="INFO">sh ovs-vsctl show</msg>
<arg>${lcmd_prefix} ovs-vsctl show</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:07:43.695133" elapsed="0.001541"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-08T01:07:43.706918" level="INFO">9a5df812-eb49-4477-a37e-2d464c02791d
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.48:6654"
        Controller "tcp:10.30.170.131:6654"
        Controller "tcp:10.30.171.110:6654"
        fail_mode: standalone
        Port s1
            Interface s1
                type: internal
        Port s1-eth1
            Interface s1-eth1
    ovs_version: "2.17.11"
mininet&gt;</msg>
<msg time="2026-04-08T01:07:43.707015" level="INFO">${output} = 9a5df812-eb49-4477-a37e-2d464c02791d
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.48:6654"
        Controller "tcp:10.30.170.131:6654"
        Controller "tcp:10.30.171...</msg>
<var>${output}</var>
<arg>${lprompt}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-08T01:07:43.696842" elapsed="0.010200"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:07:43.707507" level="INFO">9a5df812-eb49-4477-a37e-2d464c02791d
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.48:6654"
        Controller "tcp:10.30.170.131:6654"
        Controller "tcp:10.30.171.110:6654"
        fail_mode: standalone
        Port s1
            Interface s1
                type: internal
        Port s1-eth1
            Interface s1-eth1
    ovs_version: "2.17.11"
mininet&gt;</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:07:43.707257" elapsed="0.000299"/>
</kw>
<doc>Executes ovs-vsctl show command and returns stdout, no check nor change is performed</doc>
<status status="PASS" start="2026-04-08T01:07:43.694832" elapsed="0.012779"/>
</kw>
<var>${connected}</var>
<arg>${switch}</arg>
<arg>${controller}</arg>
<arg>update_data=${update_data}</arg>
<doc>Return is_connected boolean value</doc>
<status status="FAIL" start="2026-04-08T01:07:43.692680" elapsed="0.015004">Dictionary does not contain key 's1'.</status>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${connected}</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:43.707863" elapsed="0.000022"/>
</kw>
<arg>s${sid}</arg>
<arg>${ODL_SYSTEM_1_IP}</arg>
<arg>update_data=${False}</arg>
<doc>Check if the switch is connected</doc>
<status status="FAIL" start="2026-04-08T01:07:43.692110" elapsed="0.015858">Dictionary does not contain key 's1'.</status>
</kw>
<kw name="Should Be Connected" owner="OvsManager">
<arg>s${sid}</arg>
<arg>${ODL_SYSTEM_2_IP}</arg>
<arg>update_data=${False}</arg>
<doc>Check if the switch is connected</doc>
<status status="NOT RUN" start="2026-04-08T01:07:43.708203" elapsed="0.000024"/>
</kw>
<kw name="Should Be Connected" owner="OvsManager">
<arg>s${sid}</arg>
<arg>${ODL_SYSTEM_3_IP}</arg>
<arg>update_data=${False}</arg>
<doc>Check if the switch is connected</doc>
<status status="NOT RUN" start="2026-04-08T01:07:43.708432" elapsed="0.000022"/>
</kw>
<var name="${i}">0</var>
<status status="FAIL" start="2026-04-08T01:07:43.691410" elapsed="0.017098">Dictionary does not contain key 's1'.</status>
</iter>
<var>${i}</var>
<value>0</value>
<value>${SWITCHES}</value>
<status status="FAIL" start="2026-04-08T01:07:43.691228" elapsed="0.017334">Dictionary does not contain key 's1'.</status>
</for>
<doc>Verifies all switches are connected to all cluster nodes</doc>
<status status="FAIL" start="2026-04-08T01:07:43.647911" elapsed="0.060740">Dictionary does not contain key 's1'.</status>
</kw>
<kw name="Check All Switches Connected To All Cluster Nodes">
<kw name="Get Ovsdb Data" owner="OvsManager">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:07:44.715115" level="INFO">sh ovs-vsctl list Bridge</msg>
<arg>${lcmd_prefix} ${SH_BR_CMD}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:07:44.712318" elapsed="0.002920"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-08T01:07:44.758057" level="INFO">_uuid               : b1f3a25e-4d19-465f-912b-17fe7b1acbdb
auto_attach         : []
controller          : [419e3e41-ddbb-4be3-b539-f4d045a9bbd9, 740cc856-2b97-4888-820d-bf0f9d99a501, bbb4531e-5733-4157-b3f6-ea7bf10a308b]
datapath_id         : "0000000000000001"
datapath_type       : ""
datapath_version    : "&lt;unknown&gt;"
external_ids        : {}
fail_mode           : standalone
flood_vlans         : []
flow_tables         : {}
ipfix               : []
mcast_snooping_enable: false
mirrors             : []
name                : s1
netflow             : []
other_config        : {datapath-id="0000000000000001", disable-in-band="true", dp-desc=s1}
ports               : [079fa24c-466d-4b78-b64c-7669ebd0e515, 9e99a58c-a78c-4b0a-b18c-2ef2b895c497]
protocols           : [OpenFlow13]
rstp_enable         : false
rstp_status         : {}
sflow               : []
status              : {}
stp_enable          : false
mininet&gt;</msg>
<msg time="2026-04-08T01:07:44.758220" level="INFO">${brstdout} = _uuid               : b1f3a25e-4d19-465f-912b-17fe7b1acbdb
auto_attach         : []
controller          : [419e3e41-ddbb-4be3-b539-f4d045a9bbd9, 740cc856-2b97-4888-820d-bf0f9d99a501, bbb4531e-5733-4...</msg>
<var>${brstdout}</var>
<arg>${lprompt}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-08T01:07:44.715502" elapsed="0.042747"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:07:44.758921" level="INFO">_uuid               : b1f3a25e-4d19-465f-912b-17fe7b1acbdb
auto_attach         : []
controller          : [419e3e41-ddbb-4be3-b539-f4d045a9bbd9, 740cc856-2b97-4888-820d-bf0f9d99a501, bbb4531e-5733-4157-b3f6-ea7bf10a308b]
datapath_id         : "0000000000000001"
datapath_type       : ""
datapath_version    : "&lt;unknown&gt;"
external_ids        : {}
fail_mode           : standalone
flood_vlans         : []
flow_tables         : {}
ipfix               : []
mcast_snooping_enable: false
mirrors             : []
name                : s1
netflow             : []
other_config        : {datapath-id="0000000000000001", disable-in-band="true", dp-desc=s1}
ports               : [079fa24c-466d-4b78-b64c-7669ebd0e515, 9e99a58c-a78c-4b0a-b18c-2ef2b895c497]
protocols           : [OpenFlow13]
rstp_enable         : false
rstp_status         : {}
sflow               : []
status              : {}
stp_enable          : false
mininet&gt;</msg>
<arg>${brstdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:07:44.758567" elapsed="0.000414"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:07:44.760811" level="INFO">sh ovs-vsctl list Controller</msg>
<arg>${lcmd_prefix} ${SH_CNTL_CMD}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:07:44.759150" elapsed="0.001719"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-08T01:07:44.794563" level="INFO">_uuid               : 419e3e41-ddbb-4be3-b539-f4d045a9bbd9
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : false
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : []
status              : {last_error="Connection refused", sec_since_disconnect="0", state=BACKOFF}
target              : "tcp:10.30.170.48:6654"
type                : []

_uuid               : 740cc856-2b97-4888-820d-bf0f9d99a501
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : false
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : []
status              : {last_error="Connection refused", sec_since_disconnect="0", state=BACKOFF}
target              : "tcp:10.30.170.131:6654"
type                : []

_uuid               : bbb4531e-5733-4157-b3f6-ea7bf10a308b
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : false
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : []
status              : {last_error="Connection refused", sec_since_disconnect="0", state=BACKOFF}
target              : "tcp:10.30.171.110:6654"
type                : []
mininet&gt;</msg>
<msg time="2026-04-08T01:07:44.794761" level="INFO">${cntlstdout} = _uuid               : 419e3e41-ddbb-4be3-b539-f4d045a9bbd9
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
exter...</msg>
<var>${cntlstdout}</var>
<arg>${lprompt}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-08T01:07:44.761040" elapsed="0.033749"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:07:44.795294" level="INFO">_uuid               : 419e3e41-ddbb-4be3-b539-f4d045a9bbd9
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : false
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : []
status              : {last_error="Connection refused", sec_since_disconnect="0", state=BACKOFF}
target              : "tcp:10.30.170.48:6654"
type                : []

_uuid               : 740cc856-2b97-4888-820d-bf0f9d99a501
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : false
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : []
status              : {last_error="Connection refused", sec_since_disconnect="0", state=BACKOFF}
target              : "tcp:10.30.170.131:6654"
type                : []

_uuid               : bbb4531e-5733-4157-b3f6-ea7bf10a308b
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : false
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : []
status              : {last_error="Connection refused", sec_since_disconnect="0", state=BACKOFF}
target              : "tcp:10.30.171.110:6654"
type                : []
mininet&gt;</msg>
<arg>${cntlstdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:07:44.794992" elapsed="0.000365"/>
</kw>
<kw name="Parse" owner="VsctlListParser">
<msg time="2026-04-08T01:07:44.796007" level="INFO">_uuid:b1f3a25e-4d19-465f-912b-17fe7b1acbdb
auto_attach:[]
controller:[419e3e41-ddbb-4be3-b539-f4d045a9bbd9,740cc856-2b97-4888-820d-bf0f9d99a501,bbb4531e-5733-4157-b3f6-ea7bf10a308b]
datapath_id:"0000000000000001"
datapath_type:""
datapath_version:"&lt;unknown&gt;"
external_ids:{}
fail_mode:standalone
flood_vlans:[]
flow_tables:{}
ipfix:[]
mcast_snooping_enable:false
mirrors:[]
name:s1
netflow:[]
other_config:{datapath-id="0000000000000001",disable-in-band="true",dp-desc=s1}
ports:[079fa24c-466d-4b78-b64c-7669ebd0e515,9e99a58c-a78c-4b0a-b18c-2ef2b895c497]
protocols:[OpenFlow13]
rstp_enable:false
rstp_status:{}
sflow:[]
status:{}
stp_enable:false
_uuid:419e3e41-ddbb-4be3-b539-f4d045a9bbd9
connection_mode:[]
controller_burst_limit:[]
controller_queue_size:[]
controller_rate_limit:[]
enable_async_messages:[]
external_ids:{}
inactivity_probe:[]
is_connected:false
local_gateway:[]
local_ip:[]
local_netmask:[]
max_backoff:[]
other_config:{}
role:[]
status:{last_error="Connectionrefused",sec_since_disconnect="0",state=BACKOFF}
target:"tcp:10.30.170.48:6654"
type:[]
_uuid:740cc856-2b97-4888-820d-bf0f9d99a501
connection_mode:[]
controller_burst_limit:[]
controller_queue_size:[]
controller_rate_limit:[]
enable_async_messages:[]
external_ids:{}
inactivity_probe:[]
is_connected:false
local_gateway:[]
local_ip:[]
local_netmask:[]
max_backoff:[]
other_config:{}
role:[]
status:{last_error="Connectionrefused",sec_since_disconnect="0",state=BACKOFF}
target:"tcp:10.30.170.131:6654"
type:[]
_uuid:bbb4531e-5733-4157-b3f6-ea7bf10a308b
connection_mode:[]
controller_burst_limit:[]
controller_queue_size:[]
controller_rate_limit:[]
enable_async_messages:[]
external_ids:{}
inactivity_probe:[]
is_connected:false
local_gateway:[]
local_ip:[]
local_netmask:[]
max_backoff:[]
other_config:{}
role:[]
status:{last_error="Connectionrefused",sec_since_disconnect="0",state=BACKOFF}
target:"tcp:10.30.171.110:6654"
type:[]</msg>
<msg time="2026-04-08T01:07:44.796154" level="INFO">${data} = {'': {'_uuid': 'b1f3a25e-4d19-465f-912b-17fe7b1acbdb', 'auto_attach': '[]', 'controller': {'10.30.170.48': {'_uuid': '419e3e41-ddbb-4be3-b539-f4d045a9bbd9', 'connection_mode': '[]', 'controller_burst_...</msg>
<msg time="2026-04-08T01:07:44.796229" level="INFO">${bridegs} = {'b1f3a25e-4d19-465f-912b-17fe7b1acbdb': {'_uuid': 'b1f3a25e-4d19-465f-912b-17fe7b1acbdb', 'auto_attach': '[]', 'controller': '[419e3e41-ddbb-4be3-b539-f4d045a9bbd9,740cc856-2b97-4888-820d-bf0f9d99a50...</msg>
<msg time="2026-04-08T01:07:44.796294" level="INFO">${controllers} = {'419e3e41-ddbb-4be3-b539-f4d045a9bbd9': {'_uuid': '419e3e41-ddbb-4be3-b539-f4d045a9bbd9', 'connection_mode': '[]', 'controller_burst_limit': '[]', 'controller_queue_size': '[]', 'controller_rate_limi...</msg>
<var>${data}</var>
<var>${bridegs}</var>
<var>${controllers}</var>
<arg>${brstdout}</arg>
<arg>${cntlstdout}</arg>
<doc>Produces dictionary with data for future usege</doc>
<status status="PASS" start="2026-04-08T01:07:44.795527" elapsed="0.000794"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:07:44.796769" level="INFO">{'': {'_uuid': 'b1f3a25e-4d19-465f-912b-17fe7b1acbdb', 'auto_attach': '[]', 'controller': {'10.30.170.48': {'_uuid': '419e3e41-ddbb-4be3-b539-f4d045a9bbd9', 'connection_mode': '[]', 'controller_burst_limit': '[]', 'controller_queue_size': '[]', 'controller_rate_limit': '[]', 'enable_async_messages': '[]', 'external_ids': '{}', 'inactivity_probe': '[]', 'is_connected': False, 'local_gateway': '[]', 'local_ip': '[]', 'local_netmask': '[]', 'max_backoff': '[]', 'other_config': '{}', 'role': '[]', 'status': '{last_error="Connectionrefused",sec_since_disconnect="0",state=BACKOFF}', 'target': '"tcp:10.30.170.48:6654"', 'type': '[]'}, '10.30.170.131': {'_uuid': '740cc856-2b97-4888-820d-bf0f9d99a501', 'connection_mode': '[]', 'controller_burst_limit': '[]', 'controller_queue_size': '[]', 'controller_rate_limit': '[]', 'enable_async_messages': '[]', 'external_ids': '{}', 'inactivity_probe': '[]', 'is_connected': False, 'local_gateway': '[]', 'local_ip': '[]', 'local_netmask': '[]', 'max_backoff': '[]', 'other_config': '{}', 'role': '[]', 'status': '{last_error="Connectionrefused",sec_since_disconnect="0",state=BACKOFF}', 'target': '"tcp:10.30.170.131:6654"', 'type': '[]'}, '10.30.171.110': {'_uuid': 'bbb4531e-5733-4157-b3f6-ea7bf10a308b', 'connection_mode': '[]', 'controller_burst_limit': '[]', 'controller_queue_size': '[]', 'controller_rate_limit': '[]', 'enable_async_messages': '[]', 'external_ids': '{}', 'inactivity_probe': '[]', 'is_connected': False, 'local_gateway': '[]', 'local_ip': '[]', 'local_netmask': '[]', 'max_backoff': '[]', 'other_config': '{}', 'role': '[]', 'status': '{last_error="Connectionrefused",sec_since_disconnect="0",state=BACKOFF}', 'target': '"tcp:10.30.171.110:6654"', 'type': '[]'}}, 'datapath_id': '"0000000000000001"', 'datapath_type': '""', 'datapath_version': '"&lt;unknown&gt;"', 'external_ids': '{}', 'fail_mode': 'standalone', 'flood_vlans': '[]', 'flow_tables': '{}', 'ipfix': '[]', 'mcast_snooping_enable': 'false', 'mirrors': '[]', 'name': 's1', 'netflow': '[]', 'other_config': '{datapath-id="0000000000000001",disable-in-band="true",dp-desc=s1}', 'ports': '[079fa24c-466d-4b78-b64c-7669ebd0e515,9e99a58c-a78c-4b0a-b18c-2ef2b895c497]', 'protocols': '[OpenFlow13]', 'rstp_enable': 'false', 'rstp_status': '{}', 'sflow': '[]', 'status': '{}', 'stp_enable': 'false'}}</msg>
<arg>${data}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:07:44.796499" elapsed="0.000335"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-08T01:07:44.797521" level="INFO">${ovs_switch_data} = {'': {'_uuid': 'b1f3a25e-4d19-465f-912b-17fe7b1acbdb', 'auto_attach': '[]', 'controller': {'10.30.170.48': {'_uuid': '419e3e41-ddbb-4be3-b539-f4d045a9bbd9', 'connection_mode': '[]', 'controller_burst_...</msg>
<arg>${ovs_switch_data}</arg>
<arg>${data}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-08T01:07:44.797042" elapsed="0.000524"/>
</kw>
<return>
<value>${data}</value>
<status status="PASS" start="2026-04-08T01:07:44.797633" elapsed="0.000056"/>
</return>
<doc>Gets ovs data and parse them.</doc>
<status status="PASS" start="2026-04-08T01:07:44.711401" elapsed="0.086404"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:07:44.798631" level="INFO">${sid} = 1</msg>
<var>${sid}</var>
<arg>${i}+1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:07:44.798279" elapsed="0.000378"/>
</kw>
<kw name="Should Be Connected" owner="OvsManager">
<kw name="OvsManager__Is_Connected" owner="OvsManager">
<if>
<branch type="IF" condition="${update_data}==${True}">
<kw name="Get Ovsdb Data" owner="OvsManager">
<doc>Gets ovs data and parse them.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:44.800281" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:07:44.799930" elapsed="0.000408"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:44.799909" elapsed="0.000456"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:07:44.800757" level="FAIL">Dictionary does not contain key 's1'.</msg>
<var>${bridge}</var>
<arg>${ovs_switch_data}</arg>
<arg>${switch}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="FAIL" start="2026-04-08T01:07:44.800521" elapsed="0.000355">Dictionary does not contain key 's1'.</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${cntls}</var>
<arg>${bridge}</arg>
<arg>controller</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:44.801054" elapsed="0.000021"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${cntl}</var>
<arg>${cntls}</arg>
<arg>${controller}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:44.801248" elapsed="0.000020"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${connected}</var>
<arg>${cntl}</arg>
<arg>is_connected</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:44.801426" elapsed="0.000019"/>
</kw>
<return>
<value>${connected}</value>
<status status="NOT RUN" start="2026-04-08T01:07:44.801490" elapsed="0.000017"/>
</return>
<kw name="Execute OvsVsctl Show Command" owner="OvsManager" type="TEARDOWN">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:07:44.803740" level="INFO">sh ovs-vsctl show</msg>
<arg>${lcmd_prefix} ovs-vsctl show</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:07:44.802082" elapsed="0.001715"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-08T01:07:44.817047" level="INFO">9a5df812-eb49-4477-a37e-2d464c02791d
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.48:6654"
        Controller "tcp:10.30.170.131:6654"
        Controller "tcp:10.30.171.110:6654"
        fail_mode: standalone
        Port s1
            Interface s1
                type: internal
        Port s1-eth1
            Interface s1-eth1
    ovs_version: "2.17.11"
mininet&gt;</msg>
<msg time="2026-04-08T01:07:44.817150" level="INFO">${output} = 9a5df812-eb49-4477-a37e-2d464c02791d
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.48:6654"
        Controller "tcp:10.30.170.131:6654"
        Controller "tcp:10.30.171...</msg>
<var>${output}</var>
<arg>${lprompt}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-08T01:07:44.803962" elapsed="0.013229"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:07:44.817645" level="INFO">9a5df812-eb49-4477-a37e-2d464c02791d
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.48:6654"
        Controller "tcp:10.30.170.131:6654"
        Controller "tcp:10.30.171.110:6654"
        fail_mode: standalone
        Port s1
            Interface s1
                type: internal
        Port s1-eth1
            Interface s1-eth1
    ovs_version: "2.17.11"
mininet&gt;</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:07:44.817391" elapsed="0.000304"/>
</kw>
<doc>Executes ovs-vsctl show command and returns stdout, no check nor change is performed</doc>
<status status="PASS" start="2026-04-08T01:07:44.801774" elapsed="0.015976"/>
</kw>
<var>${connected}</var>
<arg>${switch}</arg>
<arg>${controller}</arg>
<arg>update_data=${update_data}</arg>
<doc>Return is_connected boolean value</doc>
<status status="FAIL" start="2026-04-08T01:07:44.799547" elapsed="0.018284">Dictionary does not contain key 's1'.</status>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${connected}</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:44.818011" elapsed="0.000022"/>
</kw>
<arg>s${sid}</arg>
<arg>${ODL_SYSTEM_1_IP}</arg>
<arg>update_data=${False}</arg>
<doc>Check if the switch is connected</doc>
<status status="FAIL" start="2026-04-08T01:07:44.798890" elapsed="0.019228">Dictionary does not contain key 's1'.</status>
</kw>
<kw name="Should Be Connected" owner="OvsManager">
<arg>s${sid}</arg>
<arg>${ODL_SYSTEM_2_IP}</arg>
<arg>update_data=${False}</arg>
<doc>Check if the switch is connected</doc>
<status status="NOT RUN" start="2026-04-08T01:07:44.818362" elapsed="0.000024"/>
</kw>
<kw name="Should Be Connected" owner="OvsManager">
<arg>s${sid}</arg>
<arg>${ODL_SYSTEM_3_IP}</arg>
<arg>update_data=${False}</arg>
<doc>Check if the switch is connected</doc>
<status status="NOT RUN" start="2026-04-08T01:07:44.818591" elapsed="0.000022"/>
</kw>
<var name="${i}">0</var>
<status status="FAIL" start="2026-04-08T01:07:44.798103" elapsed="0.020565">Dictionary does not contain key 's1'.</status>
</iter>
<var>${i}</var>
<value>0</value>
<value>${SWITCHES}</value>
<status status="FAIL" start="2026-04-08T01:07:44.797870" elapsed="0.020857">Dictionary does not contain key 's1'.</status>
</for>
<doc>Verifies all switches are connected to all cluster nodes</doc>
<status status="FAIL" start="2026-04-08T01:07:44.709623" elapsed="0.109198">Dictionary does not contain key 's1'.</status>
</kw>
<kw name="Check All Switches Connected To All Cluster Nodes">
<kw name="Get Ovsdb Data" owner="OvsManager">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:07:45.824736" level="INFO">sh ovs-vsctl list Bridge</msg>
<arg>${lcmd_prefix} ${SH_BR_CMD}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:07:45.821595" elapsed="0.003286"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-08T01:07:45.862292" level="INFO">_uuid               : b1f3a25e-4d19-465f-912b-17fe7b1acbdb
auto_attach         : []
controller          : [419e3e41-ddbb-4be3-b539-f4d045a9bbd9, 740cc856-2b97-4888-820d-bf0f9d99a501, bbb4531e-5733-4157-b3f6-ea7bf10a308b]
datapath_id         : "0000000000000001"
datapath_type       : ""
datapath_version    : "&lt;unknown&gt;"
external_ids        : {}
fail_mode           : standalone
flood_vlans         : []
flow_tables         : {}
ipfix               : []
mcast_snooping_enable: false
mirrors             : []
name                : s1
netflow             : []
other_config        : {datapath-id="0000000000000001", disable-in-band="true", dp-desc=s1}
ports               : [079fa24c-466d-4b78-b64c-7669ebd0e515, 9e99a58c-a78c-4b0a-b18c-2ef2b895c497]
protocols           : [OpenFlow13]
rstp_enable         : false
rstp_status         : {}
sflow               : []
status              : {}
stp_enable          : false
mininet&gt;</msg>
<msg time="2026-04-08T01:07:45.862497" level="INFO">${brstdout} = _uuid               : b1f3a25e-4d19-465f-912b-17fe7b1acbdb
auto_attach         : []
controller          : [419e3e41-ddbb-4be3-b539-f4d045a9bbd9, 740cc856-2b97-4888-820d-bf0f9d99a501, bbb4531e-5733-4...</msg>
<var>${brstdout}</var>
<arg>${lprompt}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-08T01:07:45.825312" elapsed="0.037213"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:07:45.863088" level="INFO">_uuid               : b1f3a25e-4d19-465f-912b-17fe7b1acbdb
auto_attach         : []
controller          : [419e3e41-ddbb-4be3-b539-f4d045a9bbd9, 740cc856-2b97-4888-820d-bf0f9d99a501, bbb4531e-5733-4157-b3f6-ea7bf10a308b]
datapath_id         : "0000000000000001"
datapath_type       : ""
datapath_version    : "&lt;unknown&gt;"
external_ids        : {}
fail_mode           : standalone
flood_vlans         : []
flow_tables         : {}
ipfix               : []
mcast_snooping_enable: false
mirrors             : []
name                : s1
netflow             : []
other_config        : {datapath-id="0000000000000001", disable-in-band="true", dp-desc=s1}
ports               : [079fa24c-466d-4b78-b64c-7669ebd0e515, 9e99a58c-a78c-4b0a-b18c-2ef2b895c497]
protocols           : [OpenFlow13]
rstp_enable         : false
rstp_status         : {}
sflow               : []
status              : {}
stp_enable          : false
mininet&gt;</msg>
<arg>${brstdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:07:45.862788" elapsed="0.000358"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:07:45.864996" level="INFO">sh ovs-vsctl list Controller</msg>
<arg>${lcmd_prefix} ${SH_CNTL_CMD}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:07:45.863327" elapsed="0.001725"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-08T01:07:45.904857" level="INFO">_uuid               : 419e3e41-ddbb-4be3-b539-f4d045a9bbd9
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : false
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : []
status              : {last_error="Connection refused", sec_since_disconnect="0", state=BACKOFF}
target              : "tcp:10.30.170.48:6654"
type                : []

_uuid               : 740cc856-2b97-4888-820d-bf0f9d99a501
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : false
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : []
status              : {last_error="Connection refused", sec_since_disconnect="0", state=BACKOFF}
target              : "tcp:10.30.170.131:6654"
type                : []

_uuid               : bbb4531e-5733-4157-b3f6-ea7bf10a308b
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : false
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : []
status              : {last_error="Connection refused", sec_since_disconnect="0", state=BACKOFF}
target              : "tcp:10.30.171.110:6654"
type                : []
mininet&gt;</msg>
<msg time="2026-04-08T01:07:45.905234" level="INFO">${cntlstdout} = _uuid               : 419e3e41-ddbb-4be3-b539-f4d045a9bbd9
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
exter...</msg>
<var>${cntlstdout}</var>
<arg>${lprompt}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-08T01:07:45.865239" elapsed="0.040089"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:07:45.906553" level="INFO">_uuid               : 419e3e41-ddbb-4be3-b539-f4d045a9bbd9
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : false
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : []
status              : {last_error="Connection refused", sec_since_disconnect="0", state=BACKOFF}
target              : "tcp:10.30.170.48:6654"
type                : []

_uuid               : 740cc856-2b97-4888-820d-bf0f9d99a501
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : false
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : []
status              : {last_error="Connection refused", sec_since_disconnect="0", state=BACKOFF}
target              : "tcp:10.30.170.131:6654"
type                : []

_uuid               : bbb4531e-5733-4157-b3f6-ea7bf10a308b
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : false
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : []
status              : {last_error="Connection refused", sec_since_disconnect="0", state=BACKOFF}
target              : "tcp:10.30.171.110:6654"
type                : []
mininet&gt;</msg>
<arg>${cntlstdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:07:45.905835" elapsed="0.000871"/>
</kw>
<kw name="Parse" owner="VsctlListParser">
<msg time="2026-04-08T01:07:45.908258" level="INFO">_uuid:b1f3a25e-4d19-465f-912b-17fe7b1acbdb
auto_attach:[]
controller:[419e3e41-ddbb-4be3-b539-f4d045a9bbd9,740cc856-2b97-4888-820d-bf0f9d99a501,bbb4531e-5733-4157-b3f6-ea7bf10a308b]
datapath_id:"0000000000000001"
datapath_type:""
datapath_version:"&lt;unknown&gt;"
external_ids:{}
fail_mode:standalone
flood_vlans:[]
flow_tables:{}
ipfix:[]
mcast_snooping_enable:false
mirrors:[]
name:s1
netflow:[]
other_config:{datapath-id="0000000000000001",disable-in-band="true",dp-desc=s1}
ports:[079fa24c-466d-4b78-b64c-7669ebd0e515,9e99a58c-a78c-4b0a-b18c-2ef2b895c497]
protocols:[OpenFlow13]
rstp_enable:false
rstp_status:{}
sflow:[]
status:{}
stp_enable:false
_uuid:419e3e41-ddbb-4be3-b539-f4d045a9bbd9
connection_mode:[]
controller_burst_limit:[]
controller_queue_size:[]
controller_rate_limit:[]
enable_async_messages:[]
external_ids:{}
inactivity_probe:[]
is_connected:false
local_gateway:[]
local_ip:[]
local_netmask:[]
max_backoff:[]
other_config:{}
role:[]
status:{last_error="Connectionrefused",sec_since_disconnect="0",state=BACKOFF}
target:"tcp:10.30.170.48:6654"
type:[]
_uuid:740cc856-2b97-4888-820d-bf0f9d99a501
connection_mode:[]
controller_burst_limit:[]
controller_queue_size:[]
controller_rate_limit:[]
enable_async_messages:[]
external_ids:{}
inactivity_probe:[]
is_connected:false
local_gateway:[]
local_ip:[]
local_netmask:[]
max_backoff:[]
other_config:{}
role:[]
status:{last_error="Connectionrefused",sec_since_disconnect="0",state=BACKOFF}
target:"tcp:10.30.170.131:6654"
type:[]
_uuid:bbb4531e-5733-4157-b3f6-ea7bf10a308b
connection_mode:[]
controller_burst_limit:[]
controller_queue_size:[]
controller_rate_limit:[]
enable_async_messages:[]
external_ids:{}
inactivity_probe:[]
is_connected:false
local_gateway:[]
local_ip:[]
local_netmask:[]
max_backoff:[]
other_config:{}
role:[]
status:{last_error="Connectionrefused",sec_since_disconnect="0",state=BACKOFF}
target:"tcp:10.30.171.110:6654"
type:[]</msg>
<msg time="2026-04-08T01:07:45.908734" level="INFO">${data} = {'': {'_uuid': 'b1f3a25e-4d19-465f-912b-17fe7b1acbdb', 'auto_attach': '[]', 'controller': {'10.30.170.48': {'_uuid': '419e3e41-ddbb-4be3-b539-f4d045a9bbd9', 'connection_mode': '[]', 'controller_burst_...</msg>
<msg time="2026-04-08T01:07:45.908877" level="INFO">${bridegs} = {'b1f3a25e-4d19-465f-912b-17fe7b1acbdb': {'_uuid': 'b1f3a25e-4d19-465f-912b-17fe7b1acbdb', 'auto_attach': '[]', 'controller': '[419e3e41-ddbb-4be3-b539-f4d045a9bbd9,740cc856-2b97-4888-820d-bf0f9d99a50...</msg>
<msg time="2026-04-08T01:07:45.909029" level="INFO">${controllers} = {'419e3e41-ddbb-4be3-b539-f4d045a9bbd9': {'_uuid': '419e3e41-ddbb-4be3-b539-f4d045a9bbd9', 'connection_mode': '[]', 'controller_burst_limit': '[]', 'controller_queue_size': '[]', 'controller_rate_limi...</msg>
<var>${data}</var>
<var>${bridegs}</var>
<var>${controllers}</var>
<arg>${brstdout}</arg>
<arg>${cntlstdout}</arg>
<doc>Produces dictionary with data for future usege</doc>
<status status="PASS" start="2026-04-08T01:07:45.907108" elapsed="0.001979"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:07:45.910328" level="INFO">{'': {'_uuid': 'b1f3a25e-4d19-465f-912b-17fe7b1acbdb', 'auto_attach': '[]', 'controller': {'10.30.170.48': {'_uuid': '419e3e41-ddbb-4be3-b539-f4d045a9bbd9', 'connection_mode': '[]', 'controller_burst_limit': '[]', 'controller_queue_size': '[]', 'controller_rate_limit': '[]', 'enable_async_messages': '[]', 'external_ids': '{}', 'inactivity_probe': '[]', 'is_connected': False, 'local_gateway': '[]', 'local_ip': '[]', 'local_netmask': '[]', 'max_backoff': '[]', 'other_config': '{}', 'role': '[]', 'status': '{last_error="Connectionrefused",sec_since_disconnect="0",state=BACKOFF}', 'target': '"tcp:10.30.170.48:6654"', 'type': '[]'}, '10.30.170.131': {'_uuid': '740cc856-2b97-4888-820d-bf0f9d99a501', 'connection_mode': '[]', 'controller_burst_limit': '[]', 'controller_queue_size': '[]', 'controller_rate_limit': '[]', 'enable_async_messages': '[]', 'external_ids': '{}', 'inactivity_probe': '[]', 'is_connected': False, 'local_gateway': '[]', 'local_ip': '[]', 'local_netmask': '[]', 'max_backoff': '[]', 'other_config': '{}', 'role': '[]', 'status': '{last_error="Connectionrefused",sec_since_disconnect="0",state=BACKOFF}', 'target': '"tcp:10.30.170.131:6654"', 'type': '[]'}, '10.30.171.110': {'_uuid': 'bbb4531e-5733-4157-b3f6-ea7bf10a308b', 'connection_mode': '[]', 'controller_burst_limit': '[]', 'controller_queue_size': '[]', 'controller_rate_limit': '[]', 'enable_async_messages': '[]', 'external_ids': '{}', 'inactivity_probe': '[]', 'is_connected': False, 'local_gateway': '[]', 'local_ip': '[]', 'local_netmask': '[]', 'max_backoff': '[]', 'other_config': '{}', 'role': '[]', 'status': '{last_error="Connectionrefused",sec_since_disconnect="0",state=BACKOFF}', 'target': '"tcp:10.30.171.110:6654"', 'type': '[]'}}, 'datapath_id': '"0000000000000001"', 'datapath_type': '""', 'datapath_version': '"&lt;unknown&gt;"', 'external_ids': '{}', 'fail_mode': 'standalone', 'flood_vlans': '[]', 'flow_tables': '{}', 'ipfix': '[]', 'mcast_snooping_enable': 'false', 'mirrors': '[]', 'name': 's1', 'netflow': '[]', 'other_config': '{datapath-id="0000000000000001",disable-in-band="true",dp-desc=s1}', 'ports': '[079fa24c-466d-4b78-b64c-7669ebd0e515,9e99a58c-a78c-4b0a-b18c-2ef2b895c497]', 'protocols': '[OpenFlow13]', 'rstp_enable': 'false', 'rstp_status': '{}', 'sflow': '[]', 'status': '{}', 'stp_enable': 'false'}}</msg>
<arg>${data}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:07:45.909597" elapsed="0.000931"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-08T01:07:45.911702" level="INFO">${ovs_switch_data} = {'': {'_uuid': 'b1f3a25e-4d19-465f-912b-17fe7b1acbdb', 'auto_attach': '[]', 'controller': {'10.30.170.48': {'_uuid': '419e3e41-ddbb-4be3-b539-f4d045a9bbd9', 'connection_mode': '[]', 'controller_burst_...</msg>
<arg>${ovs_switch_data}</arg>
<arg>${data}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-08T01:07:45.910944" elapsed="0.000803"/>
</kw>
<return>
<value>${data}</value>
<status status="PASS" start="2026-04-08T01:07:45.911798" elapsed="0.000046"/>
</return>
<doc>Gets ovs data and parse them.</doc>
<status status="PASS" start="2026-04-08T01:07:45.820862" elapsed="0.091085"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:07:45.912759" level="INFO">${sid} = 1</msg>
<var>${sid}</var>
<arg>${i}+1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:07:45.912389" elapsed="0.000398"/>
</kw>
<kw name="Should Be Connected" owner="OvsManager">
<kw name="OvsManager__Is_Connected" owner="OvsManager">
<if>
<branch type="IF" condition="${update_data}==${True}">
<kw name="Get Ovsdb Data" owner="OvsManager">
<doc>Gets ovs data and parse them.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:45.914409" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:07:45.914048" elapsed="0.000417"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:45.914025" elapsed="0.000466"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:07:45.914870" level="FAIL">Dictionary does not contain key 's1'.</msg>
<var>${bridge}</var>
<arg>${ovs_switch_data}</arg>
<arg>${switch}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="FAIL" start="2026-04-08T01:07:45.914646" elapsed="0.000334">Dictionary does not contain key 's1'.</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${cntls}</var>
<arg>${bridge}</arg>
<arg>controller</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:45.915169" elapsed="0.000022"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${cntl}</var>
<arg>${cntls}</arg>
<arg>${controller}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:45.915347" elapsed="0.000020"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${connected}</var>
<arg>${cntl}</arg>
<arg>is_connected</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:45.915519" elapsed="0.000019"/>
</kw>
<return>
<value>${connected}</value>
<status status="NOT RUN" start="2026-04-08T01:07:45.915583" elapsed="0.000016"/>
</return>
<kw name="Execute OvsVsctl Show Command" owner="OvsManager" type="TEARDOWN">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:07:45.917855" level="INFO">sh ovs-vsctl show</msg>
<arg>${lcmd_prefix} ovs-vsctl show</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:07:45.916176" elapsed="0.001736"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-08T01:07:45.931672" level="INFO">9a5df812-eb49-4477-a37e-2d464c02791d
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.48:6654"
        Controller "tcp:10.30.170.131:6654"
        Controller "tcp:10.30.171.110:6654"
        fail_mode: standalone
        Port s1
            Interface s1
                type: internal
        Port s1-eth1
            Interface s1-eth1
    ovs_version: "2.17.11"
mininet&gt;</msg>
<msg time="2026-04-08T01:07:45.931775" level="INFO">${output} = 9a5df812-eb49-4477-a37e-2d464c02791d
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.48:6654"
        Controller "tcp:10.30.170.131:6654"
        Controller "tcp:10.30.171...</msg>
<var>${output}</var>
<arg>${lprompt}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-08T01:07:45.918082" elapsed="0.013720"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:07:45.932307" level="INFO">9a5df812-eb49-4477-a37e-2d464c02791d
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.48:6654"
        Controller "tcp:10.30.170.131:6654"
        Controller "tcp:10.30.171.110:6654"
        fail_mode: standalone
        Port s1
            Interface s1
                type: internal
        Port s1-eth1
            Interface s1-eth1
    ovs_version: "2.17.11"
mininet&gt;</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:07:45.932004" elapsed="0.000396"/>
</kw>
<doc>Executes ovs-vsctl show command and returns stdout, no check nor change is performed</doc>
<status status="PASS" start="2026-04-08T01:07:45.915855" elapsed="0.016602"/>
</kw>
<var>${connected}</var>
<arg>${switch}</arg>
<arg>${controller}</arg>
<arg>update_data=${update_data}</arg>
<doc>Return is_connected boolean value</doc>
<status status="FAIL" start="2026-04-08T01:07:45.913659" elapsed="0.018876">Dictionary does not contain key 's1'.</status>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${connected}</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:45.932715" elapsed="0.000022"/>
</kw>
<arg>s${sid}</arg>
<arg>${ODL_SYSTEM_1_IP}</arg>
<arg>update_data=${False}</arg>
<doc>Check if the switch is connected</doc>
<status status="FAIL" start="2026-04-08T01:07:45.913020" elapsed="0.019800">Dictionary does not contain key 's1'.</status>
</kw>
<kw name="Should Be Connected" owner="OvsManager">
<arg>s${sid}</arg>
<arg>${ODL_SYSTEM_2_IP}</arg>
<arg>update_data=${False}</arg>
<doc>Check if the switch is connected</doc>
<status status="NOT RUN" start="2026-04-08T01:07:45.933043" elapsed="0.000023"/>
</kw>
<kw name="Should Be Connected" owner="OvsManager">
<arg>s${sid}</arg>
<arg>${ODL_SYSTEM_3_IP}</arg>
<arg>update_data=${False}</arg>
<doc>Check if the switch is connected</doc>
<status status="NOT RUN" start="2026-04-08T01:07:45.933288" elapsed="0.000023"/>
</kw>
<var name="${i}">0</var>
<status status="FAIL" start="2026-04-08T01:07:45.912237" elapsed="0.021129">Dictionary does not contain key 's1'.</status>
</iter>
<var>${i}</var>
<value>0</value>
<value>${SWITCHES}</value>
<status status="FAIL" start="2026-04-08T01:07:45.912005" elapsed="0.021418">Dictionary does not contain key 's1'.</status>
</for>
<doc>Verifies all switches are connected to all cluster nodes</doc>
<status status="FAIL" start="2026-04-08T01:07:45.819665" elapsed="0.113851">Dictionary does not contain key 's1'.</status>
</kw>
<kw name="Check All Switches Connected To All Cluster Nodes">
<kw name="Get Ovsdb Data" owner="OvsManager">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:07:46.937511" level="INFO">sh ovs-vsctl list Bridge</msg>
<arg>${lcmd_prefix} ${SH_BR_CMD}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:07:46.935171" elapsed="0.002412"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-08T01:07:46.989959" level="INFO">_uuid               : b1f3a25e-4d19-465f-912b-17fe7b1acbdb
auto_attach         : []
controller          : [419e3e41-ddbb-4be3-b539-f4d045a9bbd9, 740cc856-2b97-4888-820d-bf0f9d99a501, bbb4531e-5733-4157-b3f6-ea7bf10a308b]
datapath_id         : "0000000000000001"
datapath_type       : ""
datapath_version    : "&lt;unknown&gt;"
external_ids        : {}
fail_mode           : standalone
flood_vlans         : []
flow_tables         : {}
ipfix               : []
mcast_snooping_enable: false
mirrors             : []
name                : s1
netflow             : []
other_config        : {datapath-id="0000000000000001", disable-in-band="true", dp-desc=s1}
ports               : [079fa24c-466d-4b78-b64c-7669ebd0e515, 9e99a58c-a78c-4b0a-b18c-2ef2b895c497]
protocols           : [OpenFlow13]
rstp_enable         : false
rstp_status         : {}
sflow               : []
status              : {}
stp_enable          : false
mininet&gt;</msg>
<msg time="2026-04-08T01:07:46.990075" level="INFO">${brstdout} = _uuid               : b1f3a25e-4d19-465f-912b-17fe7b1acbdb
auto_attach         : []
controller          : [419e3e41-ddbb-4be3-b539-f4d045a9bbd9, 740cc856-2b97-4888-820d-bf0f9d99a501, bbb4531e-5733-4...</msg>
<var>${brstdout}</var>
<arg>${lprompt}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-08T01:07:46.937769" elapsed="0.052333"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:07:46.990693" level="INFO">_uuid               : b1f3a25e-4d19-465f-912b-17fe7b1acbdb
auto_attach         : []
controller          : [419e3e41-ddbb-4be3-b539-f4d045a9bbd9, 740cc856-2b97-4888-820d-bf0f9d99a501, bbb4531e-5733-4157-b3f6-ea7bf10a308b]
datapath_id         : "0000000000000001"
datapath_type       : ""
datapath_version    : "&lt;unknown&gt;"
external_ids        : {}
fail_mode           : standalone
flood_vlans         : []
flow_tables         : {}
ipfix               : []
mcast_snooping_enable: false
mirrors             : []
name                : s1
netflow             : []
other_config        : {datapath-id="0000000000000001", disable-in-band="true", dp-desc=s1}
ports               : [079fa24c-466d-4b78-b64c-7669ebd0e515, 9e99a58c-a78c-4b0a-b18c-2ef2b895c497]
protocols           : [OpenFlow13]
rstp_enable         : false
rstp_status         : {}
sflow               : []
status              : {}
stp_enable          : false
mininet&gt;</msg>
<arg>${brstdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:07:46.990386" elapsed="0.000365"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:07:46.992385" level="INFO">sh ovs-vsctl list Controller</msg>
<arg>${lcmd_prefix} ${SH_CNTL_CMD}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:07:46.990912" elapsed="0.001530"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-08T01:07:47.024947" level="INFO">_uuid               : 419e3e41-ddbb-4be3-b539-f4d045a9bbd9
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : false
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : []
status              : {last_error="Connection refused", sec_since_disconnect="0", state=BACKOFF}
target              : "tcp:10.30.170.48:6654"
type                : []

_uuid               : 740cc856-2b97-4888-820d-bf0f9d99a501
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : false
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : []
status              : {last_error="Connection refused", sec_since_disconnect="0", state=BACKOFF}
target              : "tcp:10.30.170.131:6654"
type                : []

_uuid               : bbb4531e-5733-4157-b3f6-ea7bf10a308b
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : false
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : []
status              : {last_error="Connection refused", sec_since_disconnect="0", state=BACKOFF}
target              : "tcp:10.30.171.110:6654"
type                : []
mininet&gt;</msg>
<msg time="2026-04-08T01:07:47.025056" level="INFO">${cntlstdout} = _uuid               : 419e3e41-ddbb-4be3-b539-f4d045a9bbd9
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
exter...</msg>
<var>${cntlstdout}</var>
<arg>${lprompt}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-08T01:07:46.992607" elapsed="0.032476"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:07:47.025618" level="INFO">_uuid               : 419e3e41-ddbb-4be3-b539-f4d045a9bbd9
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : false
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : []
status              : {last_error="Connection refused", sec_since_disconnect="0", state=BACKOFF}
target              : "tcp:10.30.170.48:6654"
type                : []

_uuid               : 740cc856-2b97-4888-820d-bf0f9d99a501
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : false
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : []
status              : {last_error="Connection refused", sec_since_disconnect="0", state=BACKOFF}
target              : "tcp:10.30.170.131:6654"
type                : []

_uuid               : bbb4531e-5733-4157-b3f6-ea7bf10a308b
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : false
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : []
status              : {last_error="Connection refused", sec_since_disconnect="0", state=BACKOFF}
target              : "tcp:10.30.171.110:6654"
type                : []
mininet&gt;</msg>
<arg>${cntlstdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:07:47.025369" elapsed="0.000310"/>
</kw>
<kw name="Parse" owner="VsctlListParser">
<msg time="2026-04-08T01:07:47.026313" level="INFO">_uuid:b1f3a25e-4d19-465f-912b-17fe7b1acbdb
auto_attach:[]
controller:[419e3e41-ddbb-4be3-b539-f4d045a9bbd9,740cc856-2b97-4888-820d-bf0f9d99a501,bbb4531e-5733-4157-b3f6-ea7bf10a308b]
datapath_id:"0000000000000001"
datapath_type:""
datapath_version:"&lt;unknown&gt;"
external_ids:{}
fail_mode:standalone
flood_vlans:[]
flow_tables:{}
ipfix:[]
mcast_snooping_enable:false
mirrors:[]
name:s1
netflow:[]
other_config:{datapath-id="0000000000000001",disable-in-band="true",dp-desc=s1}
ports:[079fa24c-466d-4b78-b64c-7669ebd0e515,9e99a58c-a78c-4b0a-b18c-2ef2b895c497]
protocols:[OpenFlow13]
rstp_enable:false
rstp_status:{}
sflow:[]
status:{}
stp_enable:false
_uuid:419e3e41-ddbb-4be3-b539-f4d045a9bbd9
connection_mode:[]
controller_burst_limit:[]
controller_queue_size:[]
controller_rate_limit:[]
enable_async_messages:[]
external_ids:{}
inactivity_probe:[]
is_connected:false
local_gateway:[]
local_ip:[]
local_netmask:[]
max_backoff:[]
other_config:{}
role:[]
status:{last_error="Connectionrefused",sec_since_disconnect="0",state=BACKOFF}
target:"tcp:10.30.170.48:6654"
type:[]
_uuid:740cc856-2b97-4888-820d-bf0f9d99a501
connection_mode:[]
controller_burst_limit:[]
controller_queue_size:[]
controller_rate_limit:[]
enable_async_messages:[]
external_ids:{}
inactivity_probe:[]
is_connected:false
local_gateway:[]
local_ip:[]
local_netmask:[]
max_backoff:[]
other_config:{}
role:[]
status:{last_error="Connectionrefused",sec_since_disconnect="0",state=BACKOFF}
target:"tcp:10.30.170.131:6654"
type:[]
_uuid:bbb4531e-5733-4157-b3f6-ea7bf10a308b
connection_mode:[]
controller_burst_limit:[]
controller_queue_size:[]
controller_rate_limit:[]
enable_async_messages:[]
external_ids:{}
inactivity_probe:[]
is_connected:false
local_gateway:[]
local_ip:[]
local_netmask:[]
max_backoff:[]
other_config:{}
role:[]
status:{last_error="Connectionrefused",sec_since_disconnect="0",state=BACKOFF}
target:"tcp:10.30.171.110:6654"
type:[]</msg>
<msg time="2026-04-08T01:07:47.026457" level="INFO">${data} = {'': {'_uuid': 'b1f3a25e-4d19-465f-912b-17fe7b1acbdb', 'auto_attach': '[]', 'controller': {'10.30.170.48': {'_uuid': '419e3e41-ddbb-4be3-b539-f4d045a9bbd9', 'connection_mode': '[]', 'controller_burst_...</msg>
<msg time="2026-04-08T01:07:47.026513" level="INFO">${bridegs} = {'b1f3a25e-4d19-465f-912b-17fe7b1acbdb': {'_uuid': 'b1f3a25e-4d19-465f-912b-17fe7b1acbdb', 'auto_attach': '[]', 'controller': '[419e3e41-ddbb-4be3-b539-f4d045a9bbd9,740cc856-2b97-4888-820d-bf0f9d99a50...</msg>
<msg time="2026-04-08T01:07:47.026577" level="INFO">${controllers} = {'419e3e41-ddbb-4be3-b539-f4d045a9bbd9': {'_uuid': '419e3e41-ddbb-4be3-b539-f4d045a9bbd9', 'connection_mode': '[]', 'controller_burst_limit': '[]', 'controller_queue_size': '[]', 'controller_rate_limi...</msg>
<var>${data}</var>
<var>${bridegs}</var>
<var>${controllers}</var>
<arg>${brstdout}</arg>
<arg>${cntlstdout}</arg>
<doc>Produces dictionary with data for future usege</doc>
<status status="PASS" start="2026-04-08T01:07:47.025843" elapsed="0.000758"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:07:47.027071" level="INFO">{'': {'_uuid': 'b1f3a25e-4d19-465f-912b-17fe7b1acbdb', 'auto_attach': '[]', 'controller': {'10.30.170.48': {'_uuid': '419e3e41-ddbb-4be3-b539-f4d045a9bbd9', 'connection_mode': '[]', 'controller_burst_limit': '[]', 'controller_queue_size': '[]', 'controller_rate_limit': '[]', 'enable_async_messages': '[]', 'external_ids': '{}', 'inactivity_probe': '[]', 'is_connected': False, 'local_gateway': '[]', 'local_ip': '[]', 'local_netmask': '[]', 'max_backoff': '[]', 'other_config': '{}', 'role': '[]', 'status': '{last_error="Connectionrefused",sec_since_disconnect="0",state=BACKOFF}', 'target': '"tcp:10.30.170.48:6654"', 'type': '[]'}, '10.30.170.131': {'_uuid': '740cc856-2b97-4888-820d-bf0f9d99a501', 'connection_mode': '[]', 'controller_burst_limit': '[]', 'controller_queue_size': '[]', 'controller_rate_limit': '[]', 'enable_async_messages': '[]', 'external_ids': '{}', 'inactivity_probe': '[]', 'is_connected': False, 'local_gateway': '[]', 'local_ip': '[]', 'local_netmask': '[]', 'max_backoff': '[]', 'other_config': '{}', 'role': '[]', 'status': '{last_error="Connectionrefused",sec_since_disconnect="0",state=BACKOFF}', 'target': '"tcp:10.30.170.131:6654"', 'type': '[]'}, '10.30.171.110': {'_uuid': 'bbb4531e-5733-4157-b3f6-ea7bf10a308b', 'connection_mode': '[]', 'controller_burst_limit': '[]', 'controller_queue_size': '[]', 'controller_rate_limit': '[]', 'enable_async_messages': '[]', 'external_ids': '{}', 'inactivity_probe': '[]', 'is_connected': False, 'local_gateway': '[]', 'local_ip': '[]', 'local_netmask': '[]', 'max_backoff': '[]', 'other_config': '{}', 'role': '[]', 'status': '{last_error="Connectionrefused",sec_since_disconnect="0",state=BACKOFF}', 'target': '"tcp:10.30.171.110:6654"', 'type': '[]'}}, 'datapath_id': '"0000000000000001"', 'datapath_type': '""', 'datapath_version': '"&lt;unknown&gt;"', 'external_ids': '{}', 'fail_mode': 'standalone', 'flood_vlans': '[]', 'flow_tables': '{}', 'ipfix': '[]', 'mcast_snooping_enable': 'false', 'mirrors': '[]', 'name': 's1', 'netflow': '[]', 'other_config': '{datapath-id="0000000000000001",disable-in-band="true",dp-desc=s1}', 'ports': '[079fa24c-466d-4b78-b64c-7669ebd0e515,9e99a58c-a78c-4b0a-b18c-2ef2b895c497]', 'protocols': '[OpenFlow13]', 'rstp_enable': 'false', 'rstp_status': '{}', 'sflow': '[]', 'status': '{}', 'stp_enable': 'false'}}</msg>
<arg>${data}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:07:47.026774" elapsed="0.000361"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-08T01:07:47.027760" level="INFO">${ovs_switch_data} = {'': {'_uuid': 'b1f3a25e-4d19-465f-912b-17fe7b1acbdb', 'auto_attach': '[]', 'controller': {'10.30.170.48': {'_uuid': '419e3e41-ddbb-4be3-b539-f4d045a9bbd9', 'connection_mode': '[]', 'controller_burst_...</msg>
<arg>${ovs_switch_data}</arg>
<arg>${data}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-08T01:07:47.027327" elapsed="0.000503"/>
</kw>
<return>
<value>${data}</value>
<status status="PASS" start="2026-04-08T01:07:47.027881" elapsed="0.000043"/>
</return>
<doc>Gets ovs data and parse them.</doc>
<status status="PASS" start="2026-04-08T01:07:46.934842" elapsed="0.093179"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:07:47.028786" level="INFO">${sid} = 1</msg>
<var>${sid}</var>
<arg>${i}+1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:07:47.028455" elapsed="0.000358"/>
</kw>
<kw name="Should Be Connected" owner="OvsManager">
<kw name="OvsManager__Is_Connected" owner="OvsManager">
<if>
<branch type="IF" condition="${update_data}==${True}">
<kw name="Get Ovsdb Data" owner="OvsManager">
<doc>Gets ovs data and parse them.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:47.030330" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:07:47.029991" elapsed="0.000395"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:47.029971" elapsed="0.000440"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:07:47.030941" level="FAIL">Dictionary does not contain key 's1'.</msg>
<var>${bridge}</var>
<arg>${ovs_switch_data}</arg>
<arg>${switch}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="FAIL" start="2026-04-08T01:07:47.030706" elapsed="0.000337">Dictionary does not contain key 's1'.</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${cntls}</var>
<arg>${bridge}</arg>
<arg>controller</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:47.031239" elapsed="0.000022"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${cntl}</var>
<arg>${cntls}</arg>
<arg>${controller}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:47.031446" elapsed="0.000025"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${connected}</var>
<arg>${cntl}</arg>
<arg>is_connected</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:47.031639" elapsed="0.000020"/>
</kw>
<return>
<value>${connected}</value>
<status status="NOT RUN" start="2026-04-08T01:07:47.031703" elapsed="0.000016"/>
</return>
<kw name="Execute OvsVsctl Show Command" owner="OvsManager" type="TEARDOWN">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:07:47.033683" level="INFO">sh ovs-vsctl show</msg>
<arg>${lcmd_prefix} ovs-vsctl show</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:07:47.032291" elapsed="0.001448"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-08T01:07:47.047223" level="INFO">9a5df812-eb49-4477-a37e-2d464c02791d
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.48:6654"
        Controller "tcp:10.30.170.131:6654"
        Controller "tcp:10.30.171.110:6654"
        fail_mode: standalone
        Port s1
            Interface s1
                type: internal
        Port s1-eth1
            Interface s1-eth1
    ovs_version: "2.17.11"
mininet&gt;</msg>
<msg time="2026-04-08T01:07:47.047322" level="INFO">${output} = 9a5df812-eb49-4477-a37e-2d464c02791d
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.48:6654"
        Controller "tcp:10.30.170.131:6654"
        Controller "tcp:10.30.171...</msg>
<var>${output}</var>
<arg>${lprompt}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-08T01:07:47.033904" elapsed="0.013446"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:07:47.047795" level="INFO">9a5df812-eb49-4477-a37e-2d464c02791d
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.48:6654"
        Controller "tcp:10.30.170.131:6654"
        Controller "tcp:10.30.171.110:6654"
        fail_mode: standalone
        Port s1
            Interface s1
                type: internal
        Port s1-eth1
            Interface s1-eth1
    ovs_version: "2.17.11"
mininet&gt;</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:07:47.047548" elapsed="0.000296"/>
</kw>
<doc>Executes ovs-vsctl show command and returns stdout, no check nor change is performed</doc>
<status status="PASS" start="2026-04-08T01:07:47.031973" elapsed="0.015925"/>
</kw>
<var>${connected}</var>
<arg>${switch}</arg>
<arg>${controller}</arg>
<arg>update_data=${update_data}</arg>
<doc>Return is_connected boolean value</doc>
<status status="FAIL" start="2026-04-08T01:07:47.029625" elapsed="0.018347">Dictionary does not contain key 's1'.</status>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${connected}</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:47.048147" elapsed="0.000038"/>
</kw>
<arg>s${sid}</arg>
<arg>${ODL_SYSTEM_1_IP}</arg>
<arg>update_data=${False}</arg>
<doc>Check if the switch is connected</doc>
<status status="FAIL" start="2026-04-08T01:07:47.029029" elapsed="0.019241">Dictionary does not contain key 's1'.</status>
</kw>
<kw name="Should Be Connected" owner="OvsManager">
<arg>s${sid}</arg>
<arg>${ODL_SYSTEM_2_IP}</arg>
<arg>update_data=${False}</arg>
<doc>Check if the switch is connected</doc>
<status status="NOT RUN" start="2026-04-08T01:07:47.048488" elapsed="0.000023"/>
</kw>
<kw name="Should Be Connected" owner="OvsManager">
<arg>s${sid}</arg>
<arg>${ODL_SYSTEM_3_IP}</arg>
<arg>update_data=${False}</arg>
<doc>Check if the switch is connected</doc>
<status status="NOT RUN" start="2026-04-08T01:07:47.048711" elapsed="0.000022"/>
</kw>
<var name="${i}">0</var>
<status status="FAIL" start="2026-04-08T01:07:47.028303" elapsed="0.020484">Dictionary does not contain key 's1'.</status>
</iter>
<var>${i}</var>
<value>0</value>
<value>${SWITCHES}</value>
<status status="FAIL" start="2026-04-08T01:07:47.028076" elapsed="0.020766">Dictionary does not contain key 's1'.</status>
</for>
<doc>Verifies all switches are connected to all cluster nodes</doc>
<status status="FAIL" start="2026-04-08T01:07:46.934219" elapsed="0.114718">Dictionary does not contain key 's1'.</status>
</kw>
<kw name="Check All Switches Connected To All Cluster Nodes">
<kw name="Get Ovsdb Data" owner="OvsManager">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:07:48.054360" level="INFO">sh ovs-vsctl list Bridge</msg>
<arg>${lcmd_prefix} ${SH_BR_CMD}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:07:48.051451" elapsed="0.003049"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-08T01:07:48.091592" level="INFO">_uuid               : b1f3a25e-4d19-465f-912b-17fe7b1acbdb
auto_attach         : []
controller          : [419e3e41-ddbb-4be3-b539-f4d045a9bbd9, 740cc856-2b97-4888-820d-bf0f9d99a501, bbb4531e-5733-4157-b3f6-ea7bf10a308b]
datapath_id         : "0000000000000001"
datapath_type       : ""
datapath_version    : "&lt;unknown&gt;"
external_ids        : {}
fail_mode           : standalone
flood_vlans         : []
flow_tables         : {}
ipfix               : []
mcast_snooping_enable: false
mirrors             : []
name                : s1
netflow             : []
other_config        : {datapath-id="0000000000000001", disable-in-band="true", dp-desc=s1}
ports               : [079fa24c-466d-4b78-b64c-7669ebd0e515, 9e99a58c-a78c-4b0a-b18c-2ef2b895c497]
protocols           : [OpenFlow13]
rstp_enable         : false
rstp_status         : {}
sflow               : []
status              : {}
stp_enable          : false
mininet&gt;</msg>
<msg time="2026-04-08T01:07:48.091781" level="INFO">${brstdout} = _uuid               : b1f3a25e-4d19-465f-912b-17fe7b1acbdb
auto_attach         : []
controller          : [419e3e41-ddbb-4be3-b539-f4d045a9bbd9, 740cc856-2b97-4888-820d-bf0f9d99a501, bbb4531e-5733-4...</msg>
<var>${brstdout}</var>
<arg>${lprompt}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-08T01:07:48.054887" elapsed="0.036921"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:07:48.092378" level="INFO">_uuid               : b1f3a25e-4d19-465f-912b-17fe7b1acbdb
auto_attach         : []
controller          : [419e3e41-ddbb-4be3-b539-f4d045a9bbd9, 740cc856-2b97-4888-820d-bf0f9d99a501, bbb4531e-5733-4157-b3f6-ea7bf10a308b]
datapath_id         : "0000000000000001"
datapath_type       : ""
datapath_version    : "&lt;unknown&gt;"
external_ids        : {}
fail_mode           : standalone
flood_vlans         : []
flow_tables         : {}
ipfix               : []
mcast_snooping_enable: false
mirrors             : []
name                : s1
netflow             : []
other_config        : {datapath-id="0000000000000001", disable-in-band="true", dp-desc=s1}
ports               : [079fa24c-466d-4b78-b64c-7669ebd0e515, 9e99a58c-a78c-4b0a-b18c-2ef2b895c497]
protocols           : [OpenFlow13]
rstp_enable         : false
rstp_status         : {}
sflow               : []
status              : {}
stp_enable          : false
mininet&gt;</msg>
<arg>${brstdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:07:48.092057" elapsed="0.000396"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:07:48.094280" level="INFO">sh ovs-vsctl list Controller</msg>
<arg>${lcmd_prefix} ${SH_CNTL_CMD}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:07:48.092626" elapsed="0.001715"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-08T01:07:48.126332" level="INFO">_uuid               : 419e3e41-ddbb-4be3-b539-f4d045a9bbd9
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : false
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : []
status              : {last_error="Connection refused", sec_since_disconnect="0", state=BACKOFF}
target              : "tcp:10.30.170.48:6654"
type                : []

_uuid               : 740cc856-2b97-4888-820d-bf0f9d99a501
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : false
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : []
status              : {last_error="Connection refused", sec_since_disconnect="0", state=BACKOFF}
target              : "tcp:10.30.170.131:6654"
type                : []

_uuid               : bbb4531e-5733-4157-b3f6-ea7bf10a308b
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : false
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : []
status              : {last_error="Connection refused", sec_since_disconnect="0", state=BACKOFF}
target              : "tcp:10.30.171.110:6654"
type                : []
mininet&gt;</msg>
<msg time="2026-04-08T01:07:48.126440" level="INFO">${cntlstdout} = _uuid               : 419e3e41-ddbb-4be3-b539-f4d045a9bbd9
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
exter...</msg>
<var>${cntlstdout}</var>
<arg>${lprompt}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-08T01:07:48.094508" elapsed="0.031958"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:07:48.126904" level="INFO">_uuid               : 419e3e41-ddbb-4be3-b539-f4d045a9bbd9
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : false
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : []
status              : {last_error="Connection refused", sec_since_disconnect="0", state=BACKOFF}
target              : "tcp:10.30.170.48:6654"
type                : []

_uuid               : 740cc856-2b97-4888-820d-bf0f9d99a501
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : false
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : []
status              : {last_error="Connection refused", sec_since_disconnect="0", state=BACKOFF}
target              : "tcp:10.30.170.131:6654"
type                : []

_uuid               : bbb4531e-5733-4157-b3f6-ea7bf10a308b
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : false
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : []
status              : {last_error="Connection refused", sec_since_disconnect="0", state=BACKOFF}
target              : "tcp:10.30.171.110:6654"
type                : []
mininet&gt;</msg>
<arg>${cntlstdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:07:48.126658" elapsed="0.000308"/>
</kw>
<kw name="Parse" owner="VsctlListParser">
<msg time="2026-04-08T01:07:48.127596" level="INFO">_uuid:b1f3a25e-4d19-465f-912b-17fe7b1acbdb
auto_attach:[]
controller:[419e3e41-ddbb-4be3-b539-f4d045a9bbd9,740cc856-2b97-4888-820d-bf0f9d99a501,bbb4531e-5733-4157-b3f6-ea7bf10a308b]
datapath_id:"0000000000000001"
datapath_type:""
datapath_version:"&lt;unknown&gt;"
external_ids:{}
fail_mode:standalone
flood_vlans:[]
flow_tables:{}
ipfix:[]
mcast_snooping_enable:false
mirrors:[]
name:s1
netflow:[]
other_config:{datapath-id="0000000000000001",disable-in-band="true",dp-desc=s1}
ports:[079fa24c-466d-4b78-b64c-7669ebd0e515,9e99a58c-a78c-4b0a-b18c-2ef2b895c497]
protocols:[OpenFlow13]
rstp_enable:false
rstp_status:{}
sflow:[]
status:{}
stp_enable:false
_uuid:419e3e41-ddbb-4be3-b539-f4d045a9bbd9
connection_mode:[]
controller_burst_limit:[]
controller_queue_size:[]
controller_rate_limit:[]
enable_async_messages:[]
external_ids:{}
inactivity_probe:[]
is_connected:false
local_gateway:[]
local_ip:[]
local_netmask:[]
max_backoff:[]
other_config:{}
role:[]
status:{last_error="Connectionrefused",sec_since_disconnect="0",state=BACKOFF}
target:"tcp:10.30.170.48:6654"
type:[]
_uuid:740cc856-2b97-4888-820d-bf0f9d99a501
connection_mode:[]
controller_burst_limit:[]
controller_queue_size:[]
controller_rate_limit:[]
enable_async_messages:[]
external_ids:{}
inactivity_probe:[]
is_connected:false
local_gateway:[]
local_ip:[]
local_netmask:[]
max_backoff:[]
other_config:{}
role:[]
status:{last_error="Connectionrefused",sec_since_disconnect="0",state=BACKOFF}
target:"tcp:10.30.170.131:6654"
type:[]
_uuid:bbb4531e-5733-4157-b3f6-ea7bf10a308b
connection_mode:[]
controller_burst_limit:[]
controller_queue_size:[]
controller_rate_limit:[]
enable_async_messages:[]
external_ids:{}
inactivity_probe:[]
is_connected:false
local_gateway:[]
local_ip:[]
local_netmask:[]
max_backoff:[]
other_config:{}
role:[]
status:{last_error="Connectionrefused",sec_since_disconnect="0",state=BACKOFF}
target:"tcp:10.30.171.110:6654"
type:[]</msg>
<msg time="2026-04-08T01:07:48.127762" level="INFO">${data} = {'': {'_uuid': 'b1f3a25e-4d19-465f-912b-17fe7b1acbdb', 'auto_attach': '[]', 'controller': {'10.30.170.48': {'_uuid': '419e3e41-ddbb-4be3-b539-f4d045a9bbd9', 'connection_mode': '[]', 'controller_burst_...</msg>
<msg time="2026-04-08T01:07:48.127819" level="INFO">${bridegs} = {'b1f3a25e-4d19-465f-912b-17fe7b1acbdb': {'_uuid': 'b1f3a25e-4d19-465f-912b-17fe7b1acbdb', 'auto_attach': '[]', 'controller': '[419e3e41-ddbb-4be3-b539-f4d045a9bbd9,740cc856-2b97-4888-820d-bf0f9d99a50...</msg>
<msg time="2026-04-08T01:07:48.127882" level="INFO">${controllers} = {'419e3e41-ddbb-4be3-b539-f4d045a9bbd9': {'_uuid': '419e3e41-ddbb-4be3-b539-f4d045a9bbd9', 'connection_mode': '[]', 'controller_burst_limit': '[]', 'controller_queue_size': '[]', 'controller_rate_limi...</msg>
<var>${data}</var>
<var>${bridegs}</var>
<var>${controllers}</var>
<arg>${brstdout}</arg>
<arg>${cntlstdout}</arg>
<doc>Produces dictionary with data for future usege</doc>
<status status="PASS" start="2026-04-08T01:07:48.127129" elapsed="0.000777"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:07:48.128392" level="INFO">{'': {'_uuid': 'b1f3a25e-4d19-465f-912b-17fe7b1acbdb', 'auto_attach': '[]', 'controller': {'10.30.170.48': {'_uuid': '419e3e41-ddbb-4be3-b539-f4d045a9bbd9', 'connection_mode': '[]', 'controller_burst_limit': '[]', 'controller_queue_size': '[]', 'controller_rate_limit': '[]', 'enable_async_messages': '[]', 'external_ids': '{}', 'inactivity_probe': '[]', 'is_connected': False, 'local_gateway': '[]', 'local_ip': '[]', 'local_netmask': '[]', 'max_backoff': '[]', 'other_config': '{}', 'role': '[]', 'status': '{last_error="Connectionrefused",sec_since_disconnect="0",state=BACKOFF}', 'target': '"tcp:10.30.170.48:6654"', 'type': '[]'}, '10.30.170.131': {'_uuid': '740cc856-2b97-4888-820d-bf0f9d99a501', 'connection_mode': '[]', 'controller_burst_limit': '[]', 'controller_queue_size': '[]', 'controller_rate_limit': '[]', 'enable_async_messages': '[]', 'external_ids': '{}', 'inactivity_probe': '[]', 'is_connected': False, 'local_gateway': '[]', 'local_ip': '[]', 'local_netmask': '[]', 'max_backoff': '[]', 'other_config': '{}', 'role': '[]', 'status': '{last_error="Connectionrefused",sec_since_disconnect="0",state=BACKOFF}', 'target': '"tcp:10.30.170.131:6654"', 'type': '[]'}, '10.30.171.110': {'_uuid': 'bbb4531e-5733-4157-b3f6-ea7bf10a308b', 'connection_mode': '[]', 'controller_burst_limit': '[]', 'controller_queue_size': '[]', 'controller_rate_limit': '[]', 'enable_async_messages': '[]', 'external_ids': '{}', 'inactivity_probe': '[]', 'is_connected': False, 'local_gateway': '[]', 'local_ip': '[]', 'local_netmask': '[]', 'max_backoff': '[]', 'other_config': '{}', 'role': '[]', 'status': '{last_error="Connectionrefused",sec_since_disconnect="0",state=BACKOFF}', 'target': '"tcp:10.30.171.110:6654"', 'type': '[]'}}, 'datapath_id': '"0000000000000001"', 'datapath_type': '""', 'datapath_version': '"&lt;unknown&gt;"', 'external_ids': '{}', 'fail_mode': 'standalone', 'flood_vlans': '[]', 'flow_tables': '{}', 'ipfix': '[]', 'mcast_snooping_enable': 'false', 'mirrors': '[]', 'name': 's1', 'netflow': '[]', 'other_config': '{datapath-id="0000000000000001",disable-in-band="true",dp-desc=s1}', 'ports': '[079fa24c-466d-4b78-b64c-7669ebd0e515,9e99a58c-a78c-4b0a-b18c-2ef2b895c497]', 'protocols': '[OpenFlow13]', 'rstp_enable': 'false', 'rstp_status': '{}', 'sflow': '[]', 'status': '{}', 'stp_enable': 'false'}}</msg>
<arg>${data}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:07:48.128078" elapsed="0.000377"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-08T01:07:48.129063" level="INFO">${ovs_switch_data} = {'': {'_uuid': 'b1f3a25e-4d19-465f-912b-17fe7b1acbdb', 'auto_attach': '[]', 'controller': {'10.30.170.48': {'_uuid': '419e3e41-ddbb-4be3-b539-f4d045a9bbd9', 'connection_mode': '[]', 'controller_burst_...</msg>
<arg>${ovs_switch_data}</arg>
<arg>${data}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-08T01:07:48.128630" elapsed="0.000477"/>
</kw>
<return>
<value>${data}</value>
<status status="PASS" start="2026-04-08T01:07:48.129170" elapsed="0.000045"/>
</return>
<doc>Gets ovs data and parse them.</doc>
<status status="PASS" start="2026-04-08T01:07:48.050741" elapsed="0.078574"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:07:48.130060" level="INFO">${sid} = 1</msg>
<var>${sid}</var>
<arg>${i}+1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:07:48.129729" elapsed="0.000358"/>
</kw>
<kw name="Should Be Connected" owner="OvsManager">
<kw name="OvsManager__Is_Connected" owner="OvsManager">
<if>
<branch type="IF" condition="${update_data}==${True}">
<kw name="Get Ovsdb Data" owner="OvsManager">
<doc>Gets ovs data and parse them.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:48.131591" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:07:48.131269" elapsed="0.000376"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:48.131249" elapsed="0.000421"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:07:48.132039" level="FAIL">Dictionary does not contain key 's1'.</msg>
<var>${bridge}</var>
<arg>${ovs_switch_data}</arg>
<arg>${switch}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="FAIL" start="2026-04-08T01:07:48.131821" elapsed="0.000319">Dictionary does not contain key 's1'.</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${cntls}</var>
<arg>${bridge}</arg>
<arg>controller</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:48.132345" elapsed="0.000022"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${cntl}</var>
<arg>${cntls}</arg>
<arg>${controller}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:48.132530" elapsed="0.000020"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${connected}</var>
<arg>${cntl}</arg>
<arg>is_connected</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:48.132709" elapsed="0.000020"/>
</kw>
<return>
<value>${connected}</value>
<status status="NOT RUN" start="2026-04-08T01:07:48.132774" elapsed="0.000016"/>
</return>
<kw name="Execute OvsVsctl Show Command" owner="OvsManager" type="TEARDOWN">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:07:48.134716" level="INFO">sh ovs-vsctl show</msg>
<arg>${lcmd_prefix} ovs-vsctl show</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:07:48.133369" elapsed="0.001402"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-08T01:07:48.147826" level="INFO">9a5df812-eb49-4477-a37e-2d464c02791d
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.48:6654"
        Controller "tcp:10.30.170.131:6654"
        Controller "tcp:10.30.171.110:6654"
        fail_mode: standalone
        Port s1
            Interface s1
                type: internal
        Port s1-eth1
            Interface s1-eth1
    ovs_version: "2.17.11"
mininet&gt;</msg>
<msg time="2026-04-08T01:07:48.147922" level="INFO">${output} = 9a5df812-eb49-4477-a37e-2d464c02791d
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.48:6654"
        Controller "tcp:10.30.170.131:6654"
        Controller "tcp:10.30.171...</msg>
<var>${output}</var>
<arg>${lprompt}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-08T01:07:48.134937" elapsed="0.013012"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:07:48.148429" level="INFO">9a5df812-eb49-4477-a37e-2d464c02791d
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.48:6654"
        Controller "tcp:10.30.170.131:6654"
        Controller "tcp:10.30.171.110:6654"
        fail_mode: standalone
        Port s1
            Interface s1
                type: internal
        Port s1-eth1
            Interface s1-eth1
    ovs_version: "2.17.11"
mininet&gt;</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:07:48.148178" elapsed="0.000341"/>
</kw>
<doc>Executes ovs-vsctl show command and returns stdout, no check nor change is performed</doc>
<status status="PASS" start="2026-04-08T01:07:48.133043" elapsed="0.015531"/>
</kw>
<var>${connected}</var>
<arg>${switch}</arg>
<arg>${controller}</arg>
<arg>update_data=${update_data}</arg>
<doc>Return is_connected boolean value</doc>
<status status="FAIL" start="2026-04-08T01:07:48.130886" elapsed="0.017762">Dictionary does not contain key 's1'.</status>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${connected}</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:48.148829" elapsed="0.000021"/>
</kw>
<arg>s${sid}</arg>
<arg>${ODL_SYSTEM_1_IP}</arg>
<arg>update_data=${False}</arg>
<doc>Check if the switch is connected</doc>
<status status="FAIL" start="2026-04-08T01:07:48.130317" elapsed="0.018615">Dictionary does not contain key 's1'.</status>
</kw>
<kw name="Should Be Connected" owner="OvsManager">
<arg>s${sid}</arg>
<arg>${ODL_SYSTEM_2_IP}</arg>
<arg>update_data=${False}</arg>
<doc>Check if the switch is connected</doc>
<status status="NOT RUN" start="2026-04-08T01:07:48.149151" elapsed="0.000039"/>
</kw>
<kw name="Should Be Connected" owner="OvsManager">
<arg>s${sid}</arg>
<arg>${ODL_SYSTEM_3_IP}</arg>
<arg>update_data=${False}</arg>
<doc>Check if the switch is connected</doc>
<status status="NOT RUN" start="2026-04-08T01:07:48.149395" elapsed="0.000023"/>
</kw>
<var name="${i}">0</var>
<status status="FAIL" start="2026-04-08T01:07:48.129579" elapsed="0.019892">Dictionary does not contain key 's1'.</status>
</iter>
<var>${i}</var>
<value>0</value>
<value>${SWITCHES}</value>
<status status="FAIL" start="2026-04-08T01:07:48.129368" elapsed="0.020159">Dictionary does not contain key 's1'.</status>
</for>
<doc>Verifies all switches are connected to all cluster nodes</doc>
<status status="FAIL" start="2026-04-08T01:07:48.049677" elapsed="0.099940">Dictionary does not contain key 's1'.</status>
</kw>
<kw name="Check All Switches Connected To All Cluster Nodes">
<kw name="Get Ovsdb Data" owner="OvsManager">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:07:49.155069" level="INFO">sh ovs-vsctl list Bridge</msg>
<arg>${lcmd_prefix} ${SH_BR_CMD}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:07:49.152471" elapsed="0.002722"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-08T01:07:49.210412" level="INFO">_uuid               : b1f3a25e-4d19-465f-912b-17fe7b1acbdb
auto_attach         : []
controller          : [419e3e41-ddbb-4be3-b539-f4d045a9bbd9, 740cc856-2b97-4888-820d-bf0f9d99a501, bbb4531e-5733-4157-b3f6-ea7bf10a308b]
datapath_id         : "0000000000000001"
datapath_type       : ""
datapath_version    : "&lt;unknown&gt;"
external_ids        : {}
fail_mode           : standalone
flood_vlans         : []
flow_tables         : {}
ipfix               : []
mcast_snooping_enable: false
mirrors             : []
name                : s1
netflow             : []
other_config        : {datapath-id="0000000000000001", disable-in-band="true", dp-desc=s1}
ports               : [079fa24c-466d-4b78-b64c-7669ebd0e515, 9e99a58c-a78c-4b0a-b18c-2ef2b895c497]
protocols           : [OpenFlow13]
rstp_enable         : false
rstp_status         : {}
sflow               : []
status              : {}
stp_enable          : false
mininet&gt;</msg>
<msg time="2026-04-08T01:07:49.210546" level="INFO">${brstdout} = _uuid               : b1f3a25e-4d19-465f-912b-17fe7b1acbdb
auto_attach         : []
controller          : [419e3e41-ddbb-4be3-b539-f4d045a9bbd9, 740cc856-2b97-4888-820d-bf0f9d99a501, bbb4531e-5733-4...</msg>
<var>${brstdout}</var>
<arg>${lprompt}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-08T01:07:49.155447" elapsed="0.055127"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:07:49.211206" level="INFO">_uuid               : b1f3a25e-4d19-465f-912b-17fe7b1acbdb
auto_attach         : []
controller          : [419e3e41-ddbb-4be3-b539-f4d045a9bbd9, 740cc856-2b97-4888-820d-bf0f9d99a501, bbb4531e-5733-4157-b3f6-ea7bf10a308b]
datapath_id         : "0000000000000001"
datapath_type       : ""
datapath_version    : "&lt;unknown&gt;"
external_ids        : {}
fail_mode           : standalone
flood_vlans         : []
flow_tables         : {}
ipfix               : []
mcast_snooping_enable: false
mirrors             : []
name                : s1
netflow             : []
other_config        : {datapath-id="0000000000000001", disable-in-band="true", dp-desc=s1}
ports               : [079fa24c-466d-4b78-b64c-7669ebd0e515, 9e99a58c-a78c-4b0a-b18c-2ef2b895c497]
protocols           : [OpenFlow13]
rstp_enable         : false
rstp_status         : {}
sflow               : []
status              : {}
stp_enable          : false
mininet&gt;</msg>
<arg>${brstdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:07:49.210866" elapsed="0.000400"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:07:49.213117" level="INFO">sh ovs-vsctl list Controller</msg>
<arg>${lcmd_prefix} ${SH_CNTL_CMD}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:07:49.211432" elapsed="0.001759"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-08T01:07:49.249661" level="INFO">_uuid               : 419e3e41-ddbb-4be3-b539-f4d045a9bbd9
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : false
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : []
status              : {last_error="Connection refused", sec_since_disconnect="1", state=BACKOFF}
target              : "tcp:10.30.170.48:6654"
type                : []

_uuid               : 740cc856-2b97-4888-820d-bf0f9d99a501
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : false
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : []
status              : {last_error="Connection refused", sec_since_disconnect="1", state=BACKOFF}
target              : "tcp:10.30.170.131:6654"
type                : []

_uuid               : bbb4531e-5733-4157-b3f6-ea7bf10a308b
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : false
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : []
status              : {last_error="Connection refused", sec_since_disconnect="1", state=BACKOFF}
target              : "tcp:10.30.171.110:6654"
type                : []
mininet&gt;</msg>
<msg time="2026-04-08T01:07:49.249946" level="INFO">${cntlstdout} = _uuid               : 419e3e41-ddbb-4be3-b539-f4d045a9bbd9
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
exter...</msg>
<var>${cntlstdout}</var>
<arg>${lprompt}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-08T01:07:49.213360" elapsed="0.036618"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:07:49.250917" level="INFO">_uuid               : 419e3e41-ddbb-4be3-b539-f4d045a9bbd9
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : false
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : []
status              : {last_error="Connection refused", sec_since_disconnect="1", state=BACKOFF}
target              : "tcp:10.30.170.48:6654"
type                : []

_uuid               : 740cc856-2b97-4888-820d-bf0f9d99a501
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : false
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : []
status              : {last_error="Connection refused", sec_since_disconnect="1", state=BACKOFF}
target              : "tcp:10.30.170.131:6654"
type                : []

_uuid               : bbb4531e-5733-4157-b3f6-ea7bf10a308b
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : false
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : []
status              : {last_error="Connection refused", sec_since_disconnect="1", state=BACKOFF}
target              : "tcp:10.30.171.110:6654"
type                : []
mininet&gt;</msg>
<arg>${cntlstdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:07:49.250532" elapsed="0.000450"/>
</kw>
<kw name="Parse" owner="VsctlListParser">
<msg time="2026-04-08T01:07:49.251648" level="INFO">_uuid:b1f3a25e-4d19-465f-912b-17fe7b1acbdb
auto_attach:[]
controller:[419e3e41-ddbb-4be3-b539-f4d045a9bbd9,740cc856-2b97-4888-820d-bf0f9d99a501,bbb4531e-5733-4157-b3f6-ea7bf10a308b]
datapath_id:"0000000000000001"
datapath_type:""
datapath_version:"&lt;unknown&gt;"
external_ids:{}
fail_mode:standalone
flood_vlans:[]
flow_tables:{}
ipfix:[]
mcast_snooping_enable:false
mirrors:[]
name:s1
netflow:[]
other_config:{datapath-id="0000000000000001",disable-in-band="true",dp-desc=s1}
ports:[079fa24c-466d-4b78-b64c-7669ebd0e515,9e99a58c-a78c-4b0a-b18c-2ef2b895c497]
protocols:[OpenFlow13]
rstp_enable:false
rstp_status:{}
sflow:[]
status:{}
stp_enable:false
_uuid:419e3e41-ddbb-4be3-b539-f4d045a9bbd9
connection_mode:[]
controller_burst_limit:[]
controller_queue_size:[]
controller_rate_limit:[]
enable_async_messages:[]
external_ids:{}
inactivity_probe:[]
is_connected:false
local_gateway:[]
local_ip:[]
local_netmask:[]
max_backoff:[]
other_config:{}
role:[]
status:{last_error="Connectionrefused",sec_since_disconnect="1",state=BACKOFF}
target:"tcp:10.30.170.48:6654"
type:[]
_uuid:740cc856-2b97-4888-820d-bf0f9d99a501
connection_mode:[]
controller_burst_limit:[]
controller_queue_size:[]
controller_rate_limit:[]
enable_async_messages:[]
external_ids:{}
inactivity_probe:[]
is_connected:false
local_gateway:[]
local_ip:[]
local_netmask:[]
max_backoff:[]
other_config:{}
role:[]
status:{last_error="Connectionrefused",sec_since_disconnect="1",state=BACKOFF}
target:"tcp:10.30.170.131:6654"
type:[]
_uuid:bbb4531e-5733-4157-b3f6-ea7bf10a308b
connection_mode:[]
controller_burst_limit:[]
controller_queue_size:[]
controller_rate_limit:[]
enable_async_messages:[]
external_ids:{}
inactivity_probe:[]
is_connected:false
local_gateway:[]
local_ip:[]
local_netmask:[]
max_backoff:[]
other_config:{}
role:[]
status:{last_error="Connectionrefused",sec_since_disconnect="1",state=BACKOFF}
target:"tcp:10.30.171.110:6654"
type:[]</msg>
<msg time="2026-04-08T01:07:49.251792" level="INFO">${data} = {'': {'_uuid': 'b1f3a25e-4d19-465f-912b-17fe7b1acbdb', 'auto_attach': '[]', 'controller': {'10.30.170.48': {'_uuid': '419e3e41-ddbb-4be3-b539-f4d045a9bbd9', 'connection_mode': '[]', 'controller_burst_...</msg>
<msg time="2026-04-08T01:07:49.251851" level="INFO">${bridegs} = {'b1f3a25e-4d19-465f-912b-17fe7b1acbdb': {'_uuid': 'b1f3a25e-4d19-465f-912b-17fe7b1acbdb', 'auto_attach': '[]', 'controller': '[419e3e41-ddbb-4be3-b539-f4d045a9bbd9,740cc856-2b97-4888-820d-bf0f9d99a50...</msg>
<msg time="2026-04-08T01:07:49.251916" level="INFO">${controllers} = {'419e3e41-ddbb-4be3-b539-f4d045a9bbd9': {'_uuid': '419e3e41-ddbb-4be3-b539-f4d045a9bbd9', 'connection_mode': '[]', 'controller_burst_limit': '[]', 'controller_queue_size': '[]', 'controller_rate_limi...</msg>
<var>${data}</var>
<var>${bridegs}</var>
<var>${controllers}</var>
<arg>${brstdout}</arg>
<arg>${cntlstdout}</arg>
<doc>Produces dictionary with data for future usege</doc>
<status status="PASS" start="2026-04-08T01:07:49.251188" elapsed="0.000755"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:07:49.252441" level="INFO">{'': {'_uuid': 'b1f3a25e-4d19-465f-912b-17fe7b1acbdb', 'auto_attach': '[]', 'controller': {'10.30.170.48': {'_uuid': '419e3e41-ddbb-4be3-b539-f4d045a9bbd9', 'connection_mode': '[]', 'controller_burst_limit': '[]', 'controller_queue_size': '[]', 'controller_rate_limit': '[]', 'enable_async_messages': '[]', 'external_ids': '{}', 'inactivity_probe': '[]', 'is_connected': False, 'local_gateway': '[]', 'local_ip': '[]', 'local_netmask': '[]', 'max_backoff': '[]', 'other_config': '{}', 'role': '[]', 'status': '{last_error="Connectionrefused",sec_since_disconnect="1",state=BACKOFF}', 'target': '"tcp:10.30.170.48:6654"', 'type': '[]'}, '10.30.170.131': {'_uuid': '740cc856-2b97-4888-820d-bf0f9d99a501', 'connection_mode': '[]', 'controller_burst_limit': '[]', 'controller_queue_size': '[]', 'controller_rate_limit': '[]', 'enable_async_messages': '[]', 'external_ids': '{}', 'inactivity_probe': '[]', 'is_connected': False, 'local_gateway': '[]', 'local_ip': '[]', 'local_netmask': '[]', 'max_backoff': '[]', 'other_config': '{}', 'role': '[]', 'status': '{last_error="Connectionrefused",sec_since_disconnect="1",state=BACKOFF}', 'target': '"tcp:10.30.170.131:6654"', 'type': '[]'}, '10.30.171.110': {'_uuid': 'bbb4531e-5733-4157-b3f6-ea7bf10a308b', 'connection_mode': '[]', 'controller_burst_limit': '[]', 'controller_queue_size': '[]', 'controller_rate_limit': '[]', 'enable_async_messages': '[]', 'external_ids': '{}', 'inactivity_probe': '[]', 'is_connected': False, 'local_gateway': '[]', 'local_ip': '[]', 'local_netmask': '[]', 'max_backoff': '[]', 'other_config': '{}', 'role': '[]', 'status': '{last_error="Connectionrefused",sec_since_disconnect="1",state=BACKOFF}', 'target': '"tcp:10.30.171.110:6654"', 'type': '[]'}}, 'datapath_id': '"0000000000000001"', 'datapath_type': '""', 'datapath_version': '"&lt;unknown&gt;"', 'external_ids': '{}', 'fail_mode': 'standalone', 'flood_vlans': '[]', 'flow_tables': '{}', 'ipfix': '[]', 'mcast_snooping_enable': 'false', 'mirrors': '[]', 'name': 's1', 'netflow': '[]', 'other_config': '{datapath-id="0000000000000001",disable-in-band="true",dp-desc=s1}', 'ports': '[079fa24c-466d-4b78-b64c-7669ebd0e515,9e99a58c-a78c-4b0a-b18c-2ef2b895c497]', 'protocols': '[OpenFlow13]', 'rstp_enable': 'false', 'rstp_status': '{}', 'sflow': '[]', 'status': '{}', 'stp_enable': 'false'}}</msg>
<arg>${data}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:07:49.252121" elapsed="0.000409"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-08T01:07:49.253261" level="INFO">${ovs_switch_data} = {'': {'_uuid': 'b1f3a25e-4d19-465f-912b-17fe7b1acbdb', 'auto_attach': '[]', 'controller': {'10.30.170.48': {'_uuid': '419e3e41-ddbb-4be3-b539-f4d045a9bbd9', 'connection_mode': '[]', 'controller_burst_...</msg>
<arg>${ovs_switch_data}</arg>
<arg>${data}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-08T01:07:49.252736" elapsed="0.000771"/>
</kw>
<return>
<value>${data}</value>
<status status="PASS" start="2026-04-08T01:07:49.253561" elapsed="0.000044"/>
</return>
<doc>Gets ovs data and parse them.</doc>
<status status="PASS" start="2026-04-08T01:07:49.151654" elapsed="0.102060"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:07:49.254680" level="INFO">${sid} = 1</msg>
<var>${sid}</var>
<arg>${i}+1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:07:49.254230" elapsed="0.000484"/>
</kw>
<kw name="Should Be Connected" owner="OvsManager">
<kw name="OvsManager__Is_Connected" owner="OvsManager">
<if>
<branch type="IF" condition="${update_data}==${True}">
<kw name="Get Ovsdb Data" owner="OvsManager">
<doc>Gets ovs data and parse them.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:49.256573" elapsed="0.000034"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:07:49.256119" elapsed="0.000528"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:49.256093" elapsed="0.000587"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:07:49.257210" level="FAIL">Dictionary does not contain key 's1'.</msg>
<var>${bridge}</var>
<arg>${ovs_switch_data}</arg>
<arg>${switch}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="FAIL" start="2026-04-08T01:07:49.256891" elapsed="0.000461">Dictionary does not contain key 's1'.</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${cntls}</var>
<arg>${bridge}</arg>
<arg>controller</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:49.257596" elapsed="0.000031"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${cntl}</var>
<arg>${cntls}</arg>
<arg>${controller}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:49.257823" elapsed="0.000024"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${connected}</var>
<arg>${cntl}</arg>
<arg>is_connected</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:49.258008" elapsed="0.000021"/>
</kw>
<return>
<value>${connected}</value>
<status status="NOT RUN" start="2026-04-08T01:07:49.258077" elapsed="0.000023"/>
</return>
<kw name="Execute OvsVsctl Show Command" owner="OvsManager" type="TEARDOWN">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:07:49.260427" level="INFO">sh ovs-vsctl show</msg>
<arg>${lcmd_prefix} ovs-vsctl show</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:07:49.258743" elapsed="0.001746"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-08T01:07:49.273484" level="INFO">9a5df812-eb49-4477-a37e-2d464c02791d
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.48:6654"
        Controller "tcp:10.30.170.131:6654"
        Controller "tcp:10.30.171.110:6654"
        fail_mode: standalone
        Port s1
            Interface s1
                type: internal
        Port s1-eth1
            Interface s1-eth1
    ovs_version: "2.17.11"
mininet&gt;</msg>
<msg time="2026-04-08T01:07:49.273588" level="INFO">${output} = 9a5df812-eb49-4477-a37e-2d464c02791d
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.48:6654"
        Controller "tcp:10.30.170.131:6654"
        Controller "tcp:10.30.171...</msg>
<var>${output}</var>
<arg>${lprompt}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-08T01:07:49.260662" elapsed="0.012953"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:07:49.274107" level="INFO">9a5df812-eb49-4477-a37e-2d464c02791d
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.48:6654"
        Controller "tcp:10.30.170.131:6654"
        Controller "tcp:10.30.171.110:6654"
        fail_mode: standalone
        Port s1
            Interface s1
                type: internal
        Port s1-eth1
            Interface s1-eth1
    ovs_version: "2.17.11"
mininet&gt;</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:07:49.273841" elapsed="0.000336"/>
</kw>
<doc>Executes ovs-vsctl show command and returns stdout, no check nor change is performed</doc>
<status status="PASS" start="2026-04-08T01:07:49.258423" elapsed="0.015812"/>
</kw>
<var>${connected}</var>
<arg>${switch}</arg>
<arg>${controller}</arg>
<arg>update_data=${update_data}</arg>
<doc>Return is_connected boolean value</doc>
<status status="FAIL" start="2026-04-08T01:07:49.255652" elapsed="0.018678">Dictionary does not contain key 's1'.</status>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${connected}</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:49.274511" elapsed="0.000022"/>
</kw>
<arg>s${sid}</arg>
<arg>${ODL_SYSTEM_1_IP}</arg>
<arg>update_data=${False}</arg>
<doc>Check if the switch is connected</doc>
<status status="FAIL" start="2026-04-08T01:07:49.255002" elapsed="0.019614">Dictionary does not contain key 's1'.</status>
</kw>
<kw name="Should Be Connected" owner="OvsManager">
<arg>s${sid}</arg>
<arg>${ODL_SYSTEM_2_IP}</arg>
<arg>update_data=${False}</arg>
<doc>Check if the switch is connected</doc>
<status status="NOT RUN" start="2026-04-08T01:07:49.274837" elapsed="0.000023"/>
</kw>
<kw name="Should Be Connected" owner="OvsManager">
<arg>s${sid}</arg>
<arg>${ODL_SYSTEM_3_IP}</arg>
<arg>update_data=${False}</arg>
<doc>Check if the switch is connected</doc>
<status status="NOT RUN" start="2026-04-08T01:07:49.275062" elapsed="0.000022"/>
</kw>
<var name="${i}">0</var>
<status status="FAIL" start="2026-04-08T01:07:49.254014" elapsed="0.021123">Dictionary does not contain key 's1'.</status>
</iter>
<var>${i}</var>
<value>0</value>
<value>${SWITCHES}</value>
<status status="FAIL" start="2026-04-08T01:07:49.253776" elapsed="0.021437">Dictionary does not contain key 's1'.</status>
</for>
<doc>Verifies all switches are connected to all cluster nodes</doc>
<status status="FAIL" start="2026-04-08T01:07:49.150406" elapsed="0.124901">Dictionary does not contain key 's1'.</status>
</kw>
<kw name="Check All Switches Connected To All Cluster Nodes">
<kw name="Get Ovsdb Data" owner="OvsManager">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:07:50.280736" level="INFO">sh ovs-vsctl list Bridge</msg>
<arg>${lcmd_prefix} ${SH_BR_CMD}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:07:50.277857" elapsed="0.003019"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-08T01:07:50.326564" level="INFO">_uuid               : b1f3a25e-4d19-465f-912b-17fe7b1acbdb
auto_attach         : []
controller          : [419e3e41-ddbb-4be3-b539-f4d045a9bbd9, 740cc856-2b97-4888-820d-bf0f9d99a501, bbb4531e-5733-4157-b3f6-ea7bf10a308b]
datapath_id         : "0000000000000001"
datapath_type       : ""
datapath_version    : "&lt;unknown&gt;"
external_ids        : {}
fail_mode           : standalone
flood_vlans         : []
flow_tables         : {}
ipfix               : []
mcast_snooping_enable: false
mirrors             : []
name                : s1
netflow             : []
other_config        : {datapath-id="0000000000000001", disable-in-band="true", dp-desc=s1}
ports               : [079fa24c-466d-4b78-b64c-7669ebd0e515, 9e99a58c-a78c-4b0a-b18c-2ef2b895c497]
protocols           : [OpenFlow13]
rstp_enable         : false
rstp_status         : {}
sflow               : []
status              : {}
stp_enable          : false
mininet&gt;</msg>
<msg time="2026-04-08T01:07:50.326762" level="INFO">${brstdout} = _uuid               : b1f3a25e-4d19-465f-912b-17fe7b1acbdb
auto_attach         : []
controller          : [419e3e41-ddbb-4be3-b539-f4d045a9bbd9, 740cc856-2b97-4888-820d-bf0f9d99a501, bbb4531e-5733-4...</msg>
<var>${brstdout}</var>
<arg>${lprompt}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-08T01:07:50.281303" elapsed="0.045487"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:07:50.327394" level="INFO">_uuid               : b1f3a25e-4d19-465f-912b-17fe7b1acbdb
auto_attach         : []
controller          : [419e3e41-ddbb-4be3-b539-f4d045a9bbd9, 740cc856-2b97-4888-820d-bf0f9d99a501, bbb4531e-5733-4157-b3f6-ea7bf10a308b]
datapath_id         : "0000000000000001"
datapath_type       : ""
datapath_version    : "&lt;unknown&gt;"
external_ids        : {}
fail_mode           : standalone
flood_vlans         : []
flow_tables         : {}
ipfix               : []
mcast_snooping_enable: false
mirrors             : []
name                : s1
netflow             : []
other_config        : {datapath-id="0000000000000001", disable-in-band="true", dp-desc=s1}
ports               : [079fa24c-466d-4b78-b64c-7669ebd0e515, 9e99a58c-a78c-4b0a-b18c-2ef2b895c497]
protocols           : [OpenFlow13]
rstp_enable         : false
rstp_status         : {}
sflow               : []
status              : {}
stp_enable          : false
mininet&gt;</msg>
<arg>${brstdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:07:50.327067" elapsed="0.000387"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:07:50.329100" level="INFO">sh ovs-vsctl list Controller</msg>
<arg>${lcmd_prefix} ${SH_CNTL_CMD}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:07:50.327615" elapsed="0.001559"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-08T01:07:50.363822" level="INFO">_uuid               : 419e3e41-ddbb-4be3-b539-f4d045a9bbd9
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : false
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : []
status              : {last_error="Connection refused", sec_since_disconnect="1", state=BACKOFF}
target              : "tcp:10.30.170.48:6654"
type                : []

_uuid               : 740cc856-2b97-4888-820d-bf0f9d99a501
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : false
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : []
status              : {last_error="Connection refused", sec_since_disconnect="1", state=BACKOFF}
target              : "tcp:10.30.170.131:6654"
type                : []

_uuid               : bbb4531e-5733-4157-b3f6-ea7bf10a308b
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : false
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : []
status              : {last_error="Connection refused", sec_since_disconnect="1", state=BACKOFF}
target              : "tcp:10.30.171.110:6654"
type                : []
mininet&gt;</msg>
<msg time="2026-04-08T01:07:50.363935" level="INFO">${cntlstdout} = _uuid               : 419e3e41-ddbb-4be3-b539-f4d045a9bbd9
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
exter...</msg>
<var>${cntlstdout}</var>
<arg>${lprompt}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-08T01:07:50.329347" elapsed="0.034615"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:07:50.364436" level="INFO">_uuid               : 419e3e41-ddbb-4be3-b539-f4d045a9bbd9
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : false
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : []
status              : {last_error="Connection refused", sec_since_disconnect="1", state=BACKOFF}
target              : "tcp:10.30.170.48:6654"
type                : []

_uuid               : 740cc856-2b97-4888-820d-bf0f9d99a501
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : false
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : []
status              : {last_error="Connection refused", sec_since_disconnect="1", state=BACKOFF}
target              : "tcp:10.30.170.131:6654"
type                : []

_uuid               : bbb4531e-5733-4157-b3f6-ea7bf10a308b
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : false
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : []
status              : {last_error="Connection refused", sec_since_disconnect="1", state=BACKOFF}
target              : "tcp:10.30.171.110:6654"
type                : []
mininet&gt;</msg>
<arg>${cntlstdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:07:50.364182" elapsed="0.000317"/>
</kw>
<kw name="Parse" owner="VsctlListParser">
<msg time="2026-04-08T01:07:50.365123" level="INFO">_uuid:b1f3a25e-4d19-465f-912b-17fe7b1acbdb
auto_attach:[]
controller:[419e3e41-ddbb-4be3-b539-f4d045a9bbd9,740cc856-2b97-4888-820d-bf0f9d99a501,bbb4531e-5733-4157-b3f6-ea7bf10a308b]
datapath_id:"0000000000000001"
datapath_type:""
datapath_version:"&lt;unknown&gt;"
external_ids:{}
fail_mode:standalone
flood_vlans:[]
flow_tables:{}
ipfix:[]
mcast_snooping_enable:false
mirrors:[]
name:s1
netflow:[]
other_config:{datapath-id="0000000000000001",disable-in-band="true",dp-desc=s1}
ports:[079fa24c-466d-4b78-b64c-7669ebd0e515,9e99a58c-a78c-4b0a-b18c-2ef2b895c497]
protocols:[OpenFlow13]
rstp_enable:false
rstp_status:{}
sflow:[]
status:{}
stp_enable:false
_uuid:419e3e41-ddbb-4be3-b539-f4d045a9bbd9
connection_mode:[]
controller_burst_limit:[]
controller_queue_size:[]
controller_rate_limit:[]
enable_async_messages:[]
external_ids:{}
inactivity_probe:[]
is_connected:false
local_gateway:[]
local_ip:[]
local_netmask:[]
max_backoff:[]
other_config:{}
role:[]
status:{last_error="Connectionrefused",sec_since_disconnect="1",state=BACKOFF}
target:"tcp:10.30.170.48:6654"
type:[]
_uuid:740cc856-2b97-4888-820d-bf0f9d99a501
connection_mode:[]
controller_burst_limit:[]
controller_queue_size:[]
controller_rate_limit:[]
enable_async_messages:[]
external_ids:{}
inactivity_probe:[]
is_connected:false
local_gateway:[]
local_ip:[]
local_netmask:[]
max_backoff:[]
other_config:{}
role:[]
status:{last_error="Connectionrefused",sec_since_disconnect="1",state=BACKOFF}
target:"tcp:10.30.170.131:6654"
type:[]
_uuid:bbb4531e-5733-4157-b3f6-ea7bf10a308b
connection_mode:[]
controller_burst_limit:[]
controller_queue_size:[]
controller_rate_limit:[]
enable_async_messages:[]
external_ids:{}
inactivity_probe:[]
is_connected:false
local_gateway:[]
local_ip:[]
local_netmask:[]
max_backoff:[]
other_config:{}
role:[]
status:{last_error="Connectionrefused",sec_since_disconnect="1",state=BACKOFF}
target:"tcp:10.30.171.110:6654"
type:[]</msg>
<msg time="2026-04-08T01:07:50.365313" level="INFO">${data} = {'': {'_uuid': 'b1f3a25e-4d19-465f-912b-17fe7b1acbdb', 'auto_attach': '[]', 'controller': {'10.30.170.48': {'_uuid': '419e3e41-ddbb-4be3-b539-f4d045a9bbd9', 'connection_mode': '[]', 'controller_burst_...</msg>
<msg time="2026-04-08T01:07:50.365382" level="INFO">${bridegs} = {'b1f3a25e-4d19-465f-912b-17fe7b1acbdb': {'_uuid': 'b1f3a25e-4d19-465f-912b-17fe7b1acbdb', 'auto_attach': '[]', 'controller': '[419e3e41-ddbb-4be3-b539-f4d045a9bbd9,740cc856-2b97-4888-820d-bf0f9d99a50...</msg>
<msg time="2026-04-08T01:07:50.365456" level="INFO">${controllers} = {'419e3e41-ddbb-4be3-b539-f4d045a9bbd9': {'_uuid': '419e3e41-ddbb-4be3-b539-f4d045a9bbd9', 'connection_mode': '[]', 'controller_burst_limit': '[]', 'controller_queue_size': '[]', 'controller_rate_limi...</msg>
<var>${data}</var>
<var>${bridegs}</var>
<var>${controllers}</var>
<arg>${brstdout}</arg>
<arg>${cntlstdout}</arg>
<doc>Produces dictionary with data for future usege</doc>
<status status="PASS" start="2026-04-08T01:07:50.364665" elapsed="0.000817"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:07:50.365927" level="INFO">{'': {'_uuid': 'b1f3a25e-4d19-465f-912b-17fe7b1acbdb', 'auto_attach': '[]', 'controller': {'10.30.170.48': {'_uuid': '419e3e41-ddbb-4be3-b539-f4d045a9bbd9', 'connection_mode': '[]', 'controller_burst_limit': '[]', 'controller_queue_size': '[]', 'controller_rate_limit': '[]', 'enable_async_messages': '[]', 'external_ids': '{}', 'inactivity_probe': '[]', 'is_connected': False, 'local_gateway': '[]', 'local_ip': '[]', 'local_netmask': '[]', 'max_backoff': '[]', 'other_config': '{}', 'role': '[]', 'status': '{last_error="Connectionrefused",sec_since_disconnect="1",state=BACKOFF}', 'target': '"tcp:10.30.170.48:6654"', 'type': '[]'}, '10.30.170.131': {'_uuid': '740cc856-2b97-4888-820d-bf0f9d99a501', 'connection_mode': '[]', 'controller_burst_limit': '[]', 'controller_queue_size': '[]', 'controller_rate_limit': '[]', 'enable_async_messages': '[]', 'external_ids': '{}', 'inactivity_probe': '[]', 'is_connected': False, 'local_gateway': '[]', 'local_ip': '[]', 'local_netmask': '[]', 'max_backoff': '[]', 'other_config': '{}', 'role': '[]', 'status': '{last_error="Connectionrefused",sec_since_disconnect="1",state=BACKOFF}', 'target': '"tcp:10.30.170.131:6654"', 'type': '[]'}, '10.30.171.110': {'_uuid': 'bbb4531e-5733-4157-b3f6-ea7bf10a308b', 'connection_mode': '[]', 'controller_burst_limit': '[]', 'controller_queue_size': '[]', 'controller_rate_limit': '[]', 'enable_async_messages': '[]', 'external_ids': '{}', 'inactivity_probe': '[]', 'is_connected': False, 'local_gateway': '[]', 'local_ip': '[]', 'local_netmask': '[]', 'max_backoff': '[]', 'other_config': '{}', 'role': '[]', 'status': '{last_error="Connectionrefused",sec_since_disconnect="1",state=BACKOFF}', 'target': '"tcp:10.30.171.110:6654"', 'type': '[]'}}, 'datapath_id': '"0000000000000001"', 'datapath_type': '""', 'datapath_version': '"&lt;unknown&gt;"', 'external_ids': '{}', 'fail_mode': 'standalone', 'flood_vlans': '[]', 'flow_tables': '{}', 'ipfix': '[]', 'mcast_snooping_enable': 'false', 'mirrors': '[]', 'name': 's1', 'netflow': '[]', 'other_config': '{datapath-id="0000000000000001",disable-in-band="true",dp-desc=s1}', 'ports': '[079fa24c-466d-4b78-b64c-7669ebd0e515,9e99a58c-a78c-4b0a-b18c-2ef2b895c497]', 'protocols': '[OpenFlow13]', 'rstp_enable': 'false', 'rstp_status': '{}', 'sflow': '[]', 'status': '{}', 'stp_enable': 'false'}}</msg>
<arg>${data}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:07:50.365657" elapsed="0.000333"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-08T01:07:50.366620" level="INFO">${ovs_switch_data} = {'': {'_uuid': 'b1f3a25e-4d19-465f-912b-17fe7b1acbdb', 'auto_attach': '[]', 'controller': {'10.30.170.48': {'_uuid': '419e3e41-ddbb-4be3-b539-f4d045a9bbd9', 'connection_mode': '[]', 'controller_burst_...</msg>
<arg>${ovs_switch_data}</arg>
<arg>${data}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-08T01:07:50.366178" elapsed="0.000486"/>
</kw>
<return>
<value>${data}</value>
<status status="PASS" start="2026-04-08T01:07:50.366713" elapsed="0.000047"/>
</return>
<doc>Gets ovs data and parse them.</doc>
<status status="PASS" start="2026-04-08T01:07:50.277086" elapsed="0.089776"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:07:50.367636" level="INFO">${sid} = 1</msg>
<var>${sid}</var>
<arg>${i}+1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:07:50.367300" elapsed="0.000362"/>
</kw>
<kw name="Should Be Connected" owner="OvsManager">
<kw name="OvsManager__Is_Connected" owner="OvsManager">
<if>
<branch type="IF" condition="${update_data}==${True}">
<kw name="Get Ovsdb Data" owner="OvsManager">
<doc>Gets ovs data and parse them.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:50.369186" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:07:50.368844" elapsed="0.000398"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:50.368822" elapsed="0.000446"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:07:50.369663" level="FAIL">Dictionary does not contain key 's1'.</msg>
<var>${bridge}</var>
<arg>${ovs_switch_data}</arg>
<arg>${switch}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="FAIL" start="2026-04-08T01:07:50.369437" elapsed="0.000335">Dictionary does not contain key 's1'.</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${cntls}</var>
<arg>${bridge}</arg>
<arg>controller</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:50.369947" elapsed="0.000021"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${cntl}</var>
<arg>${cntls}</arg>
<arg>${controller}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:50.370122" elapsed="0.000019"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${connected}</var>
<arg>${cntl}</arg>
<arg>is_connected</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:50.370309" elapsed="0.000020"/>
</kw>
<return>
<value>${connected}</value>
<status status="NOT RUN" start="2026-04-08T01:07:50.370374" elapsed="0.000016"/>
</return>
<kw name="Execute OvsVsctl Show Command" owner="OvsManager" type="TEARDOWN">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:07:50.372316" level="INFO">sh ovs-vsctl show</msg>
<arg>${lcmd_prefix} ovs-vsctl show</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:07:50.370950" elapsed="0.001421"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-08T01:07:50.385543" level="INFO">9a5df812-eb49-4477-a37e-2d464c02791d
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.48:6654"
        Controller "tcp:10.30.170.131:6654"
        Controller "tcp:10.30.171.110:6654"
        fail_mode: standalone
        Port s1
            Interface s1
                type: internal
        Port s1-eth1
            Interface s1-eth1
    ovs_version: "2.17.11"
mininet&gt;</msg>
<msg time="2026-04-08T01:07:50.385647" level="INFO">${output} = 9a5df812-eb49-4477-a37e-2d464c02791d
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.48:6654"
        Controller "tcp:10.30.170.131:6654"
        Controller "tcp:10.30.171...</msg>
<var>${output}</var>
<arg>${lprompt}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-08T01:07:50.372537" elapsed="0.013137"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:07:50.386126" level="INFO">9a5df812-eb49-4477-a37e-2d464c02791d
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.48:6654"
        Controller "tcp:10.30.170.131:6654"
        Controller "tcp:10.30.171.110:6654"
        fail_mode: standalone
        Port s1
            Interface s1
                type: internal
        Port s1-eth1
            Interface s1-eth1
    ovs_version: "2.17.11"
mininet&gt;</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:07:50.385875" elapsed="0.000356"/>
</kw>
<doc>Executes ovs-vsctl show command and returns stdout, no check nor change is performed</doc>
<status status="PASS" start="2026-04-08T01:07:50.370646" elapsed="0.015642"/>
</kw>
<var>${connected}</var>
<arg>${switch}</arg>
<arg>${controller}</arg>
<arg>update_data=${update_data}</arg>
<doc>Return is_connected boolean value</doc>
<status status="FAIL" start="2026-04-08T01:07:50.368476" elapsed="0.017888">Dictionary does not contain key 's1'.</status>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${connected}</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:50.386543" elapsed="0.000023"/>
</kw>
<arg>s${sid}</arg>
<arg>${ODL_SYSTEM_1_IP}</arg>
<arg>update_data=${False}</arg>
<doc>Check if the switch is connected</doc>
<status status="FAIL" start="2026-04-08T01:07:50.367880" elapsed="0.018769">Dictionary does not contain key 's1'.</status>
</kw>
<kw name="Should Be Connected" owner="OvsManager">
<arg>s${sid}</arg>
<arg>${ODL_SYSTEM_2_IP}</arg>
<arg>update_data=${False}</arg>
<doc>Check if the switch is connected</doc>
<status status="NOT RUN" start="2026-04-08T01:07:50.386869" elapsed="0.000023"/>
</kw>
<kw name="Should Be Connected" owner="OvsManager">
<arg>s${sid}</arg>
<arg>${ODL_SYSTEM_3_IP}</arg>
<arg>update_data=${False}</arg>
<doc>Check if the switch is connected</doc>
<status status="NOT RUN" start="2026-04-08T01:07:50.387095" elapsed="0.000022"/>
</kw>
<var name="${i}">0</var>
<status status="FAIL" start="2026-04-08T01:07:50.367134" elapsed="0.020052">Dictionary does not contain key 's1'.</status>
</iter>
<var>${i}</var>
<value>0</value>
<value>${SWITCHES}</value>
<status status="FAIL" start="2026-04-08T01:07:50.366918" elapsed="0.020327">Dictionary does not contain key 's1'.</status>
</for>
<doc>Verifies all switches are connected to all cluster nodes</doc>
<status status="FAIL" start="2026-04-08T01:07:50.276029" elapsed="0.111306">Dictionary does not contain key 's1'.</status>
</kw>
<kw name="Check All Switches Connected To All Cluster Nodes">
<kw name="Get Ovsdb Data" owner="OvsManager">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:07:51.391965" level="INFO">sh ovs-vsctl list Bridge</msg>
<arg>${lcmd_prefix} ${SH_BR_CMD}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:07:51.389470" elapsed="0.002597"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-08T01:07:51.436612" level="INFO">_uuid               : b1f3a25e-4d19-465f-912b-17fe7b1acbdb
auto_attach         : []
controller          : [419e3e41-ddbb-4be3-b539-f4d045a9bbd9, 740cc856-2b97-4888-820d-bf0f9d99a501, bbb4531e-5733-4157-b3f6-ea7bf10a308b]
datapath_id         : "0000000000000001"
datapath_type       : ""
datapath_version    : "&lt;unknown&gt;"
external_ids        : {}
fail_mode           : standalone
flood_vlans         : []
flow_tables         : {}
ipfix               : []
mcast_snooping_enable: false
mirrors             : []
name                : s1
netflow             : []
other_config        : {datapath-id="0000000000000001", disable-in-band="true", dp-desc=s1}
ports               : [079fa24c-466d-4b78-b64c-7669ebd0e515, 9e99a58c-a78c-4b0a-b18c-2ef2b895c497]
protocols           : [OpenFlow13]
rstp_enable         : false
rstp_status         : {}
sflow               : []
status              : {}
stp_enable          : false
mininet&gt;</msg>
<msg time="2026-04-08T01:07:51.436810" level="INFO">${brstdout} = _uuid               : b1f3a25e-4d19-465f-912b-17fe7b1acbdb
auto_attach         : []
controller          : [419e3e41-ddbb-4be3-b539-f4d045a9bbd9, 740cc856-2b97-4888-820d-bf0f9d99a501, bbb4531e-5733-4...</msg>
<var>${brstdout}</var>
<arg>${lprompt}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-08T01:07:51.392353" elapsed="0.044486"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:07:51.437604" level="INFO">_uuid               : b1f3a25e-4d19-465f-912b-17fe7b1acbdb
auto_attach         : []
controller          : [419e3e41-ddbb-4be3-b539-f4d045a9bbd9, 740cc856-2b97-4888-820d-bf0f9d99a501, bbb4531e-5733-4157-b3f6-ea7bf10a308b]
datapath_id         : "0000000000000001"
datapath_type       : ""
datapath_version    : "&lt;unknown&gt;"
external_ids        : {}
fail_mode           : standalone
flood_vlans         : []
flow_tables         : {}
ipfix               : []
mcast_snooping_enable: false
mirrors             : []
name                : s1
netflow             : []
other_config        : {datapath-id="0000000000000001", disable-in-band="true", dp-desc=s1}
ports               : [079fa24c-466d-4b78-b64c-7669ebd0e515, 9e99a58c-a78c-4b0a-b18c-2ef2b895c497]
protocols           : [OpenFlow13]
rstp_enable         : false
rstp_status         : {}
sflow               : []
status              : {}
stp_enable          : false
mininet&gt;</msg>
<arg>${brstdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:07:51.437249" elapsed="0.000414"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:07:51.439334" level="INFO">sh ovs-vsctl list Controller</msg>
<arg>${lcmd_prefix} ${SH_CNTL_CMD}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:07:51.437840" elapsed="0.001549"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-08T01:07:51.470439" level="INFO">_uuid               : 419e3e41-ddbb-4be3-b539-f4d045a9bbd9
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : false
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : []
status              : {last_error="Connection refused", sec_since_disconnect="1", state=BACKOFF}
target              : "tcp:10.30.170.48:6654"
type                : []

_uuid               : 740cc856-2b97-4888-820d-bf0f9d99a501
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : false
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : []
status              : {last_error="Connection refused", sec_since_disconnect="1", state=BACKOFF}
target              : "tcp:10.30.170.131:6654"
type                : []

_uuid               : bbb4531e-5733-4157-b3f6-ea7bf10a308b
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : false
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : []
status              : {last_error="Connection refused", sec_since_disconnect="1", state=BACKOFF}
target              : "tcp:10.30.171.110:6654"
type                : []
mininet&gt;</msg>
<msg time="2026-04-08T01:07:51.470566" level="INFO">${cntlstdout} = _uuid               : 419e3e41-ddbb-4be3-b539-f4d045a9bbd9
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
exter...</msg>
<var>${cntlstdout}</var>
<arg>${lprompt}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-08T01:07:51.439558" elapsed="0.031035"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:07:51.471178" level="INFO">_uuid               : 419e3e41-ddbb-4be3-b539-f4d045a9bbd9
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : false
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : []
status              : {last_error="Connection refused", sec_since_disconnect="1", state=BACKOFF}
target              : "tcp:10.30.170.48:6654"
type                : []

_uuid               : 740cc856-2b97-4888-820d-bf0f9d99a501
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : false
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : []
status              : {last_error="Connection refused", sec_since_disconnect="1", state=BACKOFF}
target              : "tcp:10.30.170.131:6654"
type                : []

_uuid               : bbb4531e-5733-4157-b3f6-ea7bf10a308b
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : false
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : []
status              : {last_error="Connection refused", sec_since_disconnect="1", state=BACKOFF}
target              : "tcp:10.30.171.110:6654"
type                : []
mininet&gt;</msg>
<arg>${cntlstdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:07:51.470891" elapsed="0.000352"/>
</kw>
<kw name="Parse" owner="VsctlListParser">
<msg time="2026-04-08T01:07:51.471876" level="INFO">_uuid:b1f3a25e-4d19-465f-912b-17fe7b1acbdb
auto_attach:[]
controller:[419e3e41-ddbb-4be3-b539-f4d045a9bbd9,740cc856-2b97-4888-820d-bf0f9d99a501,bbb4531e-5733-4157-b3f6-ea7bf10a308b]
datapath_id:"0000000000000001"
datapath_type:""
datapath_version:"&lt;unknown&gt;"
external_ids:{}
fail_mode:standalone
flood_vlans:[]
flow_tables:{}
ipfix:[]
mcast_snooping_enable:false
mirrors:[]
name:s1
netflow:[]
other_config:{datapath-id="0000000000000001",disable-in-band="true",dp-desc=s1}
ports:[079fa24c-466d-4b78-b64c-7669ebd0e515,9e99a58c-a78c-4b0a-b18c-2ef2b895c497]
protocols:[OpenFlow13]
rstp_enable:false
rstp_status:{}
sflow:[]
status:{}
stp_enable:false
_uuid:419e3e41-ddbb-4be3-b539-f4d045a9bbd9
connection_mode:[]
controller_burst_limit:[]
controller_queue_size:[]
controller_rate_limit:[]
enable_async_messages:[]
external_ids:{}
inactivity_probe:[]
is_connected:false
local_gateway:[]
local_ip:[]
local_netmask:[]
max_backoff:[]
other_config:{}
role:[]
status:{last_error="Connectionrefused",sec_since_disconnect="1",state=BACKOFF}
target:"tcp:10.30.170.48:6654"
type:[]
_uuid:740cc856-2b97-4888-820d-bf0f9d99a501
connection_mode:[]
controller_burst_limit:[]
controller_queue_size:[]
controller_rate_limit:[]
enable_async_messages:[]
external_ids:{}
inactivity_probe:[]
is_connected:false
local_gateway:[]
local_ip:[]
local_netmask:[]
max_backoff:[]
other_config:{}
role:[]
status:{last_error="Connectionrefused",sec_since_disconnect="1",state=BACKOFF}
target:"tcp:10.30.170.131:6654"
type:[]
_uuid:bbb4531e-5733-4157-b3f6-ea7bf10a308b
connection_mode:[]
controller_burst_limit:[]
controller_queue_size:[]
controller_rate_limit:[]
enable_async_messages:[]
external_ids:{}
inactivity_probe:[]
is_connected:false
local_gateway:[]
local_ip:[]
local_netmask:[]
max_backoff:[]
other_config:{}
role:[]
status:{last_error="Connectionrefused",sec_since_disconnect="1",state=BACKOFF}
target:"tcp:10.30.171.110:6654"
type:[]</msg>
<msg time="2026-04-08T01:07:51.472020" level="INFO">${data} = {'': {'_uuid': 'b1f3a25e-4d19-465f-912b-17fe7b1acbdb', 'auto_attach': '[]', 'controller': {'10.30.170.48': {'_uuid': '419e3e41-ddbb-4be3-b539-f4d045a9bbd9', 'connection_mode': '[]', 'controller_burst_...</msg>
<msg time="2026-04-08T01:07:51.472076" level="INFO">${bridegs} = {'b1f3a25e-4d19-465f-912b-17fe7b1acbdb': {'_uuid': 'b1f3a25e-4d19-465f-912b-17fe7b1acbdb', 'auto_attach': '[]', 'controller': '[419e3e41-ddbb-4be3-b539-f4d045a9bbd9,740cc856-2b97-4888-820d-bf0f9d99a50...</msg>
<msg time="2026-04-08T01:07:51.472140" level="INFO">${controllers} = {'419e3e41-ddbb-4be3-b539-f4d045a9bbd9': {'_uuid': '419e3e41-ddbb-4be3-b539-f4d045a9bbd9', 'connection_mode': '[]', 'controller_burst_limit': '[]', 'controller_queue_size': '[]', 'controller_rate_limi...</msg>
<var>${data}</var>
<var>${bridegs}</var>
<var>${controllers}</var>
<arg>${brstdout}</arg>
<arg>${cntlstdout}</arg>
<doc>Produces dictionary with data for future usege</doc>
<status status="PASS" start="2026-04-08T01:07:51.471412" elapsed="0.000767"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:07:51.472628" level="INFO">{'': {'_uuid': 'b1f3a25e-4d19-465f-912b-17fe7b1acbdb', 'auto_attach': '[]', 'controller': {'10.30.170.48': {'_uuid': '419e3e41-ddbb-4be3-b539-f4d045a9bbd9', 'connection_mode': '[]', 'controller_burst_limit': '[]', 'controller_queue_size': '[]', 'controller_rate_limit': '[]', 'enable_async_messages': '[]', 'external_ids': '{}', 'inactivity_probe': '[]', 'is_connected': False, 'local_gateway': '[]', 'local_ip': '[]', 'local_netmask': '[]', 'max_backoff': '[]', 'other_config': '{}', 'role': '[]', 'status': '{last_error="Connectionrefused",sec_since_disconnect="1",state=BACKOFF}', 'target': '"tcp:10.30.170.48:6654"', 'type': '[]'}, '10.30.170.131': {'_uuid': '740cc856-2b97-4888-820d-bf0f9d99a501', 'connection_mode': '[]', 'controller_burst_limit': '[]', 'controller_queue_size': '[]', 'controller_rate_limit': '[]', 'enable_async_messages': '[]', 'external_ids': '{}', 'inactivity_probe': '[]', 'is_connected': False, 'local_gateway': '[]', 'local_ip': '[]', 'local_netmask': '[]', 'max_backoff': '[]', 'other_config': '{}', 'role': '[]', 'status': '{last_error="Connectionrefused",sec_since_disconnect="1",state=BACKOFF}', 'target': '"tcp:10.30.170.131:6654"', 'type': '[]'}, '10.30.171.110': {'_uuid': 'bbb4531e-5733-4157-b3f6-ea7bf10a308b', 'connection_mode': '[]', 'controller_burst_limit': '[]', 'controller_queue_size': '[]', 'controller_rate_limit': '[]', 'enable_async_messages': '[]', 'external_ids': '{}', 'inactivity_probe': '[]', 'is_connected': False, 'local_gateway': '[]', 'local_ip': '[]', 'local_netmask': '[]', 'max_backoff': '[]', 'other_config': '{}', 'role': '[]', 'status': '{last_error="Connectionrefused",sec_since_disconnect="1",state=BACKOFF}', 'target': '"tcp:10.30.171.110:6654"', 'type': '[]'}}, 'datapath_id': '"0000000000000001"', 'datapath_type': '""', 'datapath_version': '"&lt;unknown&gt;"', 'external_ids': '{}', 'fail_mode': 'standalone', 'flood_vlans': '[]', 'flow_tables': '{}', 'ipfix': '[]', 'mcast_snooping_enable': 'false', 'mirrors': '[]', 'name': 's1', 'netflow': '[]', 'other_config': '{datapath-id="0000000000000001",disable-in-band="true",dp-desc=s1}', 'ports': '[079fa24c-466d-4b78-b64c-7669ebd0e515,9e99a58c-a78c-4b0a-b18c-2ef2b895c497]', 'protocols': '[OpenFlow13]', 'rstp_enable': 'false', 'rstp_status': '{}', 'sflow': '[]', 'status': '{}', 'stp_enable': 'false'}}</msg>
<arg>${data}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:07:51.472353" elapsed="0.000338"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-08T01:07:51.473340" level="INFO">${ovs_switch_data} = {'': {'_uuid': 'b1f3a25e-4d19-465f-912b-17fe7b1acbdb', 'auto_attach': '[]', 'controller': {'10.30.170.48': {'_uuid': '419e3e41-ddbb-4be3-b539-f4d045a9bbd9', 'connection_mode': '[]', 'controller_burst_...</msg>
<arg>${ovs_switch_data}</arg>
<arg>${data}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-08T01:07:51.472866" elapsed="0.000545"/>
</kw>
<return>
<value>${data}</value>
<status status="PASS" start="2026-04-08T01:07:51.473463" elapsed="0.000046"/>
</return>
<doc>Gets ovs data and parse them.</doc>
<status status="PASS" start="2026-04-08T01:07:51.388959" elapsed="0.084659"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:07:51.474400" level="INFO">${sid} = 1</msg>
<var>${sid}</var>
<arg>${i}+1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:07:51.474048" elapsed="0.000378"/>
</kw>
<kw name="Should Be Connected" owner="OvsManager">
<kw name="OvsManager__Is_Connected" owner="OvsManager">
<if>
<branch type="IF" condition="${update_data}==${True}">
<kw name="Get Ovsdb Data" owner="OvsManager">
<doc>Gets ovs data and parse them.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:51.475965" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:07:51.475639" elapsed="0.000382"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:51.475618" elapsed="0.000427"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:07:51.476434" level="FAIL">Dictionary does not contain key 's1'.</msg>
<var>${bridge}</var>
<arg>${ovs_switch_data}</arg>
<arg>${switch}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="FAIL" start="2026-04-08T01:07:51.476213" elapsed="0.000324">Dictionary does not contain key 's1'.</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${cntls}</var>
<arg>${bridge}</arg>
<arg>controller</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:51.476714" elapsed="0.000022"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${cntl}</var>
<arg>${cntls}</arg>
<arg>${controller}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:51.476893" elapsed="0.000021"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${connected}</var>
<arg>${cntl}</arg>
<arg>is_connected</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:51.477085" elapsed="0.000021"/>
</kw>
<return>
<value>${connected}</value>
<status status="NOT RUN" start="2026-04-08T01:07:51.477150" elapsed="0.000032"/>
</return>
<kw name="Execute OvsVsctl Show Command" owner="OvsManager" type="TEARDOWN">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:07:51.479119" level="INFO">sh ovs-vsctl show</msg>
<arg>${lcmd_prefix} ovs-vsctl show</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:07:51.477739" elapsed="0.001450"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-08T01:07:51.491054" level="INFO">9a5df812-eb49-4477-a37e-2d464c02791d
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.48:6654"
        Controller "tcp:10.30.170.131:6654"
        Controller "tcp:10.30.171.110:6654"
        fail_mode: standalone
        Port s1
            Interface s1
                type: internal
        Port s1-eth1
            Interface s1-eth1
    ovs_version: "2.17.11"
mininet&gt;</msg>
<msg time="2026-04-08T01:07:51.491146" level="INFO">${output} = 9a5df812-eb49-4477-a37e-2d464c02791d
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.48:6654"
        Controller "tcp:10.30.170.131:6654"
        Controller "tcp:10.30.171...</msg>
<var>${output}</var>
<arg>${lprompt}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-08T01:07:51.479356" elapsed="0.011831"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:07:51.491832" level="INFO">9a5df812-eb49-4477-a37e-2d464c02791d
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.48:6654"
        Controller "tcp:10.30.170.131:6654"
        Controller "tcp:10.30.171.110:6654"
        fail_mode: standalone
        Port s1
            Interface s1
                type: internal
        Port s1-eth1
            Interface s1-eth1
    ovs_version: "2.17.11"
mininet&gt;</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:07:51.491388" elapsed="0.000494"/>
</kw>
<doc>Executes ovs-vsctl show command and returns stdout, no check nor change is performed</doc>
<status status="PASS" start="2026-04-08T01:07:51.477434" elapsed="0.014501"/>
</kw>
<var>${connected}</var>
<arg>${switch}</arg>
<arg>${controller}</arg>
<arg>update_data=${update_data}</arg>
<doc>Return is_connected boolean value</doc>
<status status="FAIL" start="2026-04-08T01:07:51.475268" elapsed="0.016741">Dictionary does not contain key 's1'.</status>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${connected}</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:51.492200" elapsed="0.000023"/>
</kw>
<arg>s${sid}</arg>
<arg>${ODL_SYSTEM_1_IP}</arg>
<arg>update_data=${False}</arg>
<doc>Check if the switch is connected</doc>
<status status="FAIL" start="2026-04-08T01:07:51.474655" elapsed="0.017653">Dictionary does not contain key 's1'.</status>
</kw>
<kw name="Should Be Connected" owner="OvsManager">
<arg>s${sid}</arg>
<arg>${ODL_SYSTEM_2_IP}</arg>
<arg>update_data=${False}</arg>
<doc>Check if the switch is connected</doc>
<status status="NOT RUN" start="2026-04-08T01:07:51.492529" elapsed="0.000023"/>
</kw>
<kw name="Should Be Connected" owner="OvsManager">
<arg>s${sid}</arg>
<arg>${ODL_SYSTEM_3_IP}</arg>
<arg>update_data=${False}</arg>
<doc>Check if the switch is connected</doc>
<status status="NOT RUN" start="2026-04-08T01:07:51.492755" elapsed="0.000022"/>
</kw>
<var name="${i}">0</var>
<status status="FAIL" start="2026-04-08T01:07:51.473897" elapsed="0.018934">Dictionary does not contain key 's1'.</status>
</iter>
<var>${i}</var>
<value>0</value>
<value>${SWITCHES}</value>
<status status="FAIL" start="2026-04-08T01:07:51.473676" elapsed="0.019241">Dictionary does not contain key 's1'.</status>
</for>
<doc>Verifies all switches are connected to all cluster nodes</doc>
<status status="FAIL" start="2026-04-08T01:07:51.387982" elapsed="0.105029">Dictionary does not contain key 's1'.</status>
</kw>
<kw name="Check All Switches Connected To All Cluster Nodes">
<kw name="Get Ovsdb Data" owner="OvsManager">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:07:52.497445" level="INFO">sh ovs-vsctl list Bridge</msg>
<arg>${lcmd_prefix} ${SH_BR_CMD}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:07:52.494770" elapsed="0.002802"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-08T01:07:52.539212" level="INFO">_uuid               : b1f3a25e-4d19-465f-912b-17fe7b1acbdb
auto_attach         : []
controller          : [419e3e41-ddbb-4be3-b539-f4d045a9bbd9, 740cc856-2b97-4888-820d-bf0f9d99a501, bbb4531e-5733-4157-b3f6-ea7bf10a308b]
datapath_id         : "0000000000000001"
datapath_type       : ""
datapath_version    : "&lt;unknown&gt;"
external_ids        : {}
fail_mode           : standalone
flood_vlans         : []
flow_tables         : {}
ipfix               : []
mcast_snooping_enable: false
mirrors             : []
name                : s1
netflow             : []
other_config        : {datapath-id="0000000000000001", disable-in-band="true", dp-desc=s1}
ports               : [079fa24c-466d-4b78-b64c-7669ebd0e515, 9e99a58c-a78c-4b0a-b18c-2ef2b895c497]
protocols           : [OpenFlow13]
rstp_enable         : false
rstp_status         : {}
sflow               : []
status              : {}
stp_enable          : false
mininet&gt;</msg>
<msg time="2026-04-08T01:07:52.539568" level="INFO">${brstdout} = _uuid               : b1f3a25e-4d19-465f-912b-17fe7b1acbdb
auto_attach         : []
controller          : [419e3e41-ddbb-4be3-b539-f4d045a9bbd9, 740cc856-2b97-4888-820d-bf0f9d99a501, bbb4531e-5733-4...</msg>
<var>${brstdout}</var>
<arg>${lprompt}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-08T01:07:52.498017" elapsed="0.041594"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:07:52.540385" level="INFO">_uuid               : b1f3a25e-4d19-465f-912b-17fe7b1acbdb
auto_attach         : []
controller          : [419e3e41-ddbb-4be3-b539-f4d045a9bbd9, 740cc856-2b97-4888-820d-bf0f9d99a501, bbb4531e-5733-4157-b3f6-ea7bf10a308b]
datapath_id         : "0000000000000001"
datapath_type       : ""
datapath_version    : "&lt;unknown&gt;"
external_ids        : {}
fail_mode           : standalone
flood_vlans         : []
flow_tables         : {}
ipfix               : []
mcast_snooping_enable: false
mirrors             : []
name                : s1
netflow             : []
other_config        : {datapath-id="0000000000000001", disable-in-band="true", dp-desc=s1}
ports               : [079fa24c-466d-4b78-b64c-7669ebd0e515, 9e99a58c-a78c-4b0a-b18c-2ef2b895c497]
protocols           : [OpenFlow13]
rstp_enable         : false
rstp_status         : {}
sflow               : []
status              : {}
stp_enable          : false
mininet&gt;</msg>
<arg>${brstdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:07:52.540001" elapsed="0.000452"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:07:52.542330" level="INFO">sh ovs-vsctl list Controller</msg>
<arg>${lcmd_prefix} ${SH_CNTL_CMD}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:07:52.540653" elapsed="0.001735"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-08T01:07:52.577700" level="INFO">_uuid               : 419e3e41-ddbb-4be3-b539-f4d045a9bbd9
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : false
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : []
status              : {last_error="Connection refused", sec_since_disconnect="1", state=BACKOFF}
target              : "tcp:10.30.170.48:6654"
type                : []

_uuid               : 740cc856-2b97-4888-820d-bf0f9d99a501
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : false
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : []
status              : {last_error="Connection refused", sec_since_disconnect="1", state=BACKOFF}
target              : "tcp:10.30.170.131:6654"
type                : []

_uuid               : bbb4531e-5733-4157-b3f6-ea7bf10a308b
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : false
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : []
status              : {last_error="Connection refused", sec_since_disconnect="1", state=BACKOFF}
target              : "tcp:10.30.171.110:6654"
type                : []
mininet&gt;</msg>
<msg time="2026-04-08T01:07:52.577905" level="INFO">${cntlstdout} = _uuid               : 419e3e41-ddbb-4be3-b539-f4d045a9bbd9
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
exter...</msg>
<var>${cntlstdout}</var>
<arg>${lprompt}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-08T01:07:52.542567" elapsed="0.035381"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:07:52.578796" level="INFO">_uuid               : 419e3e41-ddbb-4be3-b539-f4d045a9bbd9
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : false
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : []
status              : {last_error="Connection refused", sec_since_disconnect="1", state=BACKOFF}
target              : "tcp:10.30.170.48:6654"
type                : []

_uuid               : 740cc856-2b97-4888-820d-bf0f9d99a501
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : false
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : []
status              : {last_error="Connection refused", sec_since_disconnect="1", state=BACKOFF}
target              : "tcp:10.30.170.131:6654"
type                : []

_uuid               : bbb4531e-5733-4157-b3f6-ea7bf10a308b
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : false
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : []
status              : {last_error="Connection refused", sec_since_disconnect="1", state=BACKOFF}
target              : "tcp:10.30.171.110:6654"
type                : []
mininet&gt;</msg>
<arg>${cntlstdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:07:52.578354" elapsed="0.000541"/>
</kw>
<kw name="Parse" owner="VsctlListParser">
<msg time="2026-04-08T01:07:52.579838" level="INFO">_uuid:b1f3a25e-4d19-465f-912b-17fe7b1acbdb
auto_attach:[]
controller:[419e3e41-ddbb-4be3-b539-f4d045a9bbd9,740cc856-2b97-4888-820d-bf0f9d99a501,bbb4531e-5733-4157-b3f6-ea7bf10a308b]
datapath_id:"0000000000000001"
datapath_type:""
datapath_version:"&lt;unknown&gt;"
external_ids:{}
fail_mode:standalone
flood_vlans:[]
flow_tables:{}
ipfix:[]
mcast_snooping_enable:false
mirrors:[]
name:s1
netflow:[]
other_config:{datapath-id="0000000000000001",disable-in-band="true",dp-desc=s1}
ports:[079fa24c-466d-4b78-b64c-7669ebd0e515,9e99a58c-a78c-4b0a-b18c-2ef2b895c497]
protocols:[OpenFlow13]
rstp_enable:false
rstp_status:{}
sflow:[]
status:{}
stp_enable:false
_uuid:419e3e41-ddbb-4be3-b539-f4d045a9bbd9
connection_mode:[]
controller_burst_limit:[]
controller_queue_size:[]
controller_rate_limit:[]
enable_async_messages:[]
external_ids:{}
inactivity_probe:[]
is_connected:false
local_gateway:[]
local_ip:[]
local_netmask:[]
max_backoff:[]
other_config:{}
role:[]
status:{last_error="Connectionrefused",sec_since_disconnect="1",state=BACKOFF}
target:"tcp:10.30.170.48:6654"
type:[]
_uuid:740cc856-2b97-4888-820d-bf0f9d99a501
connection_mode:[]
controller_burst_limit:[]
controller_queue_size:[]
controller_rate_limit:[]
enable_async_messages:[]
external_ids:{}
inactivity_probe:[]
is_connected:false
local_gateway:[]
local_ip:[]
local_netmask:[]
max_backoff:[]
other_config:{}
role:[]
status:{last_error="Connectionrefused",sec_since_disconnect="1",state=BACKOFF}
target:"tcp:10.30.170.131:6654"
type:[]
_uuid:bbb4531e-5733-4157-b3f6-ea7bf10a308b
connection_mode:[]
controller_burst_limit:[]
controller_queue_size:[]
controller_rate_limit:[]
enable_async_messages:[]
external_ids:{}
inactivity_probe:[]
is_connected:false
local_gateway:[]
local_ip:[]
local_netmask:[]
max_backoff:[]
other_config:{}
role:[]
status:{last_error="Connectionrefused",sec_since_disconnect="1",state=BACKOFF}
target:"tcp:10.30.171.110:6654"
type:[]</msg>
<msg time="2026-04-08T01:07:52.580125" level="INFO">${data} = {'': {'_uuid': 'b1f3a25e-4d19-465f-912b-17fe7b1acbdb', 'auto_attach': '[]', 'controller': {'10.30.170.48': {'_uuid': '419e3e41-ddbb-4be3-b539-f4d045a9bbd9', 'connection_mode': '[]', 'controller_burst_...</msg>
<msg time="2026-04-08T01:07:52.580241" level="INFO">${bridegs} = {'b1f3a25e-4d19-465f-912b-17fe7b1acbdb': {'_uuid': 'b1f3a25e-4d19-465f-912b-17fe7b1acbdb', 'auto_attach': '[]', 'controller': '[419e3e41-ddbb-4be3-b539-f4d045a9bbd9,740cc856-2b97-4888-820d-bf0f9d99a50...</msg>
<msg time="2026-04-08T01:07:52.580349" level="INFO">${controllers} = {'419e3e41-ddbb-4be3-b539-f4d045a9bbd9': {'_uuid': '419e3e41-ddbb-4be3-b539-f4d045a9bbd9', 'connection_mode': '[]', 'controller_burst_limit': '[]', 'controller_queue_size': '[]', 'controller_rate_limi...</msg>
<var>${data}</var>
<var>${bridegs}</var>
<var>${controllers}</var>
<arg>${brstdout}</arg>
<arg>${cntlstdout}</arg>
<doc>Produces dictionary with data for future usege</doc>
<status status="PASS" start="2026-04-08T01:07:52.579176" elapsed="0.001215"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:07:52.581111" level="INFO">{'': {'_uuid': 'b1f3a25e-4d19-465f-912b-17fe7b1acbdb', 'auto_attach': '[]', 'controller': {'10.30.170.48': {'_uuid': '419e3e41-ddbb-4be3-b539-f4d045a9bbd9', 'connection_mode': '[]', 'controller_burst_limit': '[]', 'controller_queue_size': '[]', 'controller_rate_limit': '[]', 'enable_async_messages': '[]', 'external_ids': '{}', 'inactivity_probe': '[]', 'is_connected': False, 'local_gateway': '[]', 'local_ip': '[]', 'local_netmask': '[]', 'max_backoff': '[]', 'other_config': '{}', 'role': '[]', 'status': '{last_error="Connectionrefused",sec_since_disconnect="1",state=BACKOFF}', 'target': '"tcp:10.30.170.48:6654"', 'type': '[]'}, '10.30.170.131': {'_uuid': '740cc856-2b97-4888-820d-bf0f9d99a501', 'connection_mode': '[]', 'controller_burst_limit': '[]', 'controller_queue_size': '[]', 'controller_rate_limit': '[]', 'enable_async_messages': '[]', 'external_ids': '{}', 'inactivity_probe': '[]', 'is_connected': False, 'local_gateway': '[]', 'local_ip': '[]', 'local_netmask': '[]', 'max_backoff': '[]', 'other_config': '{}', 'role': '[]', 'status': '{last_error="Connectionrefused",sec_since_disconnect="1",state=BACKOFF}', 'target': '"tcp:10.30.170.131:6654"', 'type': '[]'}, '10.30.171.110': {'_uuid': 'bbb4531e-5733-4157-b3f6-ea7bf10a308b', 'connection_mode': '[]', 'controller_burst_limit': '[]', 'controller_queue_size': '[]', 'controller_rate_limit': '[]', 'enable_async_messages': '[]', 'external_ids': '{}', 'inactivity_probe': '[]', 'is_connected': False, 'local_gateway': '[]', 'local_ip': '[]', 'local_netmask': '[]', 'max_backoff': '[]', 'other_config': '{}', 'role': '[]', 'status': '{last_error="Connectionrefused",sec_since_disconnect="1",state=BACKOFF}', 'target': '"tcp:10.30.171.110:6654"', 'type': '[]'}}, 'datapath_id': '"0000000000000001"', 'datapath_type': '""', 'datapath_version': '"&lt;unknown&gt;"', 'external_ids': '{}', 'fail_mode': 'standalone', 'flood_vlans': '[]', 'flow_tables': '{}', 'ipfix': '[]', 'mcast_snooping_enable': 'false', 'mirrors': '[]', 'name': 's1', 'netflow': '[]', 'other_config': '{datapath-id="0000000000000001",disable-in-band="true",dp-desc=s1}', 'ports': '[079fa24c-466d-4b78-b64c-7669ebd0e515,9e99a58c-a78c-4b0a-b18c-2ef2b895c497]', 'protocols': '[OpenFlow13]', 'rstp_enable': 'false', 'rstp_status': '{}', 'sflow': '[]', 'status': '{}', 'stp_enable': 'false'}}</msg>
<arg>${data}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:07:52.580661" elapsed="0.000580"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-08T01:07:52.582126" level="INFO">${ovs_switch_data} = {'': {'_uuid': 'b1f3a25e-4d19-465f-912b-17fe7b1acbdb', 'auto_attach': '[]', 'controller': {'10.30.170.48': {'_uuid': '419e3e41-ddbb-4be3-b539-f4d045a9bbd9', 'connection_mode': '[]', 'controller_burst_...</msg>
<arg>${ovs_switch_data}</arg>
<arg>${data}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-08T01:07:52.581508" elapsed="0.000707"/>
</kw>
<return>
<value>${data}</value>
<status status="PASS" start="2026-04-08T01:07:52.582290" elapsed="0.000060"/>
</return>
<doc>Gets ovs data and parse them.</doc>
<status status="PASS" start="2026-04-08T01:07:52.494335" elapsed="0.088171"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:07:52.583649" level="INFO">${sid} = 1</msg>
<var>${sid}</var>
<arg>${i}+1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:07:52.583113" elapsed="0.000577"/>
</kw>
<kw name="Should Be Connected" owner="OvsManager">
<kw name="OvsManager__Is_Connected" owner="OvsManager">
<if>
<branch type="IF" condition="${update_data}==${True}">
<kw name="Get Ovsdb Data" owner="OvsManager">
<doc>Gets ovs data and parse them.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:52.585919" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:07:52.585447" elapsed="0.000552"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:52.585419" elapsed="0.000616"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:07:52.586607" level="FAIL">Dictionary does not contain key 's1'.</msg>
<var>${bridge}</var>
<arg>${ovs_switch_data}</arg>
<arg>${switch}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="FAIL" start="2026-04-08T01:07:52.586281" elapsed="0.000478">Dictionary does not contain key 's1'.</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${cntls}</var>
<arg>${bridge}</arg>
<arg>controller</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:52.587026" elapsed="0.000034"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${cntl}</var>
<arg>${cntls}</arg>
<arg>${controller}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:52.587321" elapsed="0.000033"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${connected}</var>
<arg>${cntl}</arg>
<arg>is_connected</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:52.587589" elapsed="0.000033"/>
</kw>
<return>
<value>${connected}</value>
<status status="NOT RUN" start="2026-04-08T01:07:52.587688" elapsed="0.000024"/>
</return>
<kw name="Execute OvsVsctl Show Command" owner="OvsManager" type="TEARDOWN">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:07:52.590384" level="INFO">sh ovs-vsctl show</msg>
<arg>${lcmd_prefix} ovs-vsctl show</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:07:52.588563" elapsed="0.001960"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-08T01:07:52.603262" level="INFO">9a5df812-eb49-4477-a37e-2d464c02791d
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.48:6654"
        Controller "tcp:10.30.170.131:6654"
        Controller "tcp:10.30.171.110:6654"
        fail_mode: standalone
        Port s1
            Interface s1
                type: internal
        Port s1-eth1
            Interface s1-eth1
    ovs_version: "2.17.11"
mininet&gt;</msg>
<msg time="2026-04-08T01:07:52.603406" level="INFO">${output} = 9a5df812-eb49-4477-a37e-2d464c02791d
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.48:6654"
        Controller "tcp:10.30.170.131:6654"
        Controller "tcp:10.30.171...</msg>
<var>${output}</var>
<arg>${lprompt}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-08T01:07:52.590919" elapsed="0.012517"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:07:52.604350" level="INFO">9a5df812-eb49-4477-a37e-2d464c02791d
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.48:6654"
        Controller "tcp:10.30.170.131:6654"
        Controller "tcp:10.30.171.110:6654"
        fail_mode: standalone
        Port s1
            Interface s1
                type: internal
        Port s1-eth1
            Interface s1-eth1
    ovs_version: "2.17.11"
mininet&gt;</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:07:52.603722" elapsed="0.000745"/>
</kw>
<doc>Executes ovs-vsctl show command and returns stdout, no check nor change is performed</doc>
<status status="PASS" start="2026-04-08T01:07:52.588089" elapsed="0.016452"/>
</kw>
<var>${connected}</var>
<arg>${switch}</arg>
<arg>${controller}</arg>
<arg>update_data=${update_data}</arg>
<doc>Return is_connected boolean value</doc>
<status status="FAIL" start="2026-04-08T01:07:52.584887" elapsed="0.019748">Dictionary does not contain key 's1'.</status>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${connected}</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:52.604826" elapsed="0.000023"/>
</kw>
<arg>s${sid}</arg>
<arg>${ODL_SYSTEM_1_IP}</arg>
<arg>update_data=${False}</arg>
<doc>Check if the switch is connected</doc>
<status status="FAIL" start="2026-04-08T01:07:52.584026" elapsed="0.020912">Dictionary does not contain key 's1'.</status>
</kw>
<kw name="Should Be Connected" owner="OvsManager">
<arg>s${sid}</arg>
<arg>${ODL_SYSTEM_2_IP}</arg>
<arg>update_data=${False}</arg>
<doc>Check if the switch is connected</doc>
<status status="NOT RUN" start="2026-04-08T01:07:52.605213" elapsed="0.000027"/>
</kw>
<kw name="Should Be Connected" owner="OvsManager">
<arg>s${sid}</arg>
<arg>${ODL_SYSTEM_3_IP}</arg>
<arg>update_data=${False}</arg>
<doc>Check if the switch is connected</doc>
<status status="NOT RUN" start="2026-04-08T01:07:52.605451" elapsed="0.000026"/>
</kw>
<var name="${i}">0</var>
<status status="FAIL" start="2026-04-08T01:07:52.582885" elapsed="0.022653">Dictionary does not contain key 's1'.</status>
</iter>
<var>${i}</var>
<value>0</value>
<value>${SWITCHES}</value>
<status status="FAIL" start="2026-04-08T01:07:52.582586" elapsed="0.023014">Dictionary does not contain key 's1'.</status>
</for>
<doc>Verifies all switches are connected to all cluster nodes</doc>
<status status="FAIL" start="2026-04-08T01:07:52.493620" elapsed="0.112075">Dictionary does not contain key 's1'.</status>
</kw>
<kw name="Check All Switches Connected To All Cluster Nodes">
<kw name="Get Ovsdb Data" owner="OvsManager">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:07:53.611591" level="INFO">sh ovs-vsctl list Bridge</msg>
<arg>${lcmd_prefix} ${SH_BR_CMD}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:07:53.608575" elapsed="0.003161"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-08T01:07:53.629848" level="INFO">_uuid               : b1f3a25e-4d19-465f-912b-17fe7b1acbdb
auto_attach         : []
controller          : [419e3e41-ddbb-4be3-b539-f4d045a9bbd9, 740cc856-2b97-4888-820d-bf0f9d99a501, bbb4531e-5733-4157-b3f6-ea7bf10a308b]
datapath_id         : "0000000000000001"
datapath_type       : ""
datapath_version    : "&lt;unknown&gt;"
external_ids        : {}
fail_mode           : standalone
flood_vlans         : []
flow_tables         : {}
ipfix               : []
mcast_snooping_enable: false
mirrors             : []
name                : s1
netflow             : []
other_config        : {datapath-id="0000000000000001", disable-in-band="true", dp-desc=s1}
ports               : [079fa24c-466d-4b78-b64c-7669ebd0e515, 9e99a58c-a78c-4b0a-b18c-2ef2b895c497]
protocols           : [OpenFlow13]
rstp_enable         : false
rstp_status         : {}
sflow               : []
status              : {}
stp_enable          : false
mininet&gt;</msg>
<msg time="2026-04-08T01:07:53.629976" level="INFO">${brstdout} = _uuid               : b1f3a25e-4d19-465f-912b-17fe7b1acbdb
auto_attach         : []
controller          : [419e3e41-ddbb-4be3-b539-f4d045a9bbd9, 740cc856-2b97-4888-820d-bf0f9d99a501, bbb4531e-5733-4...</msg>
<var>${brstdout}</var>
<arg>${lprompt}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-08T01:07:53.612130" elapsed="0.017874"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:07:53.630585" level="INFO">_uuid               : b1f3a25e-4d19-465f-912b-17fe7b1acbdb
auto_attach         : []
controller          : [419e3e41-ddbb-4be3-b539-f4d045a9bbd9, 740cc856-2b97-4888-820d-bf0f9d99a501, bbb4531e-5733-4157-b3f6-ea7bf10a308b]
datapath_id         : "0000000000000001"
datapath_type       : ""
datapath_version    : "&lt;unknown&gt;"
external_ids        : {}
fail_mode           : standalone
flood_vlans         : []
flow_tables         : {}
ipfix               : []
mcast_snooping_enable: false
mirrors             : []
name                : s1
netflow             : []
other_config        : {datapath-id="0000000000000001", disable-in-band="true", dp-desc=s1}
ports               : [079fa24c-466d-4b78-b64c-7669ebd0e515, 9e99a58c-a78c-4b0a-b18c-2ef2b895c497]
protocols           : [OpenFlow13]
rstp_enable         : false
rstp_status         : {}
sflow               : []
status              : {}
stp_enable          : false
mininet&gt;</msg>
<arg>${brstdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:07:53.630285" elapsed="0.000357"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:07:53.632402" level="INFO">sh ovs-vsctl list Controller</msg>
<arg>${lcmd_prefix} ${SH_CNTL_CMD}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:07:53.630804" elapsed="0.001655"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-08T01:07:53.666460" level="INFO">_uuid               : 419e3e41-ddbb-4be3-b539-f4d045a9bbd9
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : false
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : []
status              : {last_error="Connection refused", sec_since_disconnect="1", state=BACKOFF}
target              : "tcp:10.30.170.48:6654"
type                : []

_uuid               : 740cc856-2b97-4888-820d-bf0f9d99a501
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : false
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : []
status              : {last_error="Connection refused", sec_since_disconnect="1", state=BACKOFF}
target              : "tcp:10.30.170.131:6654"
type                : []

_uuid               : bbb4531e-5733-4157-b3f6-ea7bf10a308b
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : false
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : []
status              : {last_error="Connection refused", sec_since_disconnect="1", state=BACKOFF}
target              : "tcp:10.30.171.110:6654"
type                : []
mininet&gt;</msg>
<msg time="2026-04-08T01:07:53.666573" level="INFO">${cntlstdout} = _uuid               : 419e3e41-ddbb-4be3-b539-f4d045a9bbd9
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
exter...</msg>
<var>${cntlstdout}</var>
<arg>${lprompt}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-08T01:07:53.632634" elapsed="0.033967"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:07:53.667214" level="INFO">_uuid               : 419e3e41-ddbb-4be3-b539-f4d045a9bbd9
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : false
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : []
status              : {last_error="Connection refused", sec_since_disconnect="1", state=BACKOFF}
target              : "tcp:10.30.170.48:6654"
type                : []

_uuid               : 740cc856-2b97-4888-820d-bf0f9d99a501
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : false
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : []
status              : {last_error="Connection refused", sec_since_disconnect="1", state=BACKOFF}
target              : "tcp:10.30.170.131:6654"
type                : []

_uuid               : bbb4531e-5733-4157-b3f6-ea7bf10a308b
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : false
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : []
status              : {last_error="Connection refused", sec_since_disconnect="1", state=BACKOFF}
target              : "tcp:10.30.171.110:6654"
type                : []
mininet&gt;</msg>
<arg>${cntlstdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:07:53.666903" elapsed="0.000387"/>
</kw>
<kw name="Parse" owner="VsctlListParser">
<msg time="2026-04-08T01:07:53.667953" level="INFO">_uuid:b1f3a25e-4d19-465f-912b-17fe7b1acbdb
auto_attach:[]
controller:[419e3e41-ddbb-4be3-b539-f4d045a9bbd9,740cc856-2b97-4888-820d-bf0f9d99a501,bbb4531e-5733-4157-b3f6-ea7bf10a308b]
datapath_id:"0000000000000001"
datapath_type:""
datapath_version:"&lt;unknown&gt;"
external_ids:{}
fail_mode:standalone
flood_vlans:[]
flow_tables:{}
ipfix:[]
mcast_snooping_enable:false
mirrors:[]
name:s1
netflow:[]
other_config:{datapath-id="0000000000000001",disable-in-band="true",dp-desc=s1}
ports:[079fa24c-466d-4b78-b64c-7669ebd0e515,9e99a58c-a78c-4b0a-b18c-2ef2b895c497]
protocols:[OpenFlow13]
rstp_enable:false
rstp_status:{}
sflow:[]
status:{}
stp_enable:false
_uuid:419e3e41-ddbb-4be3-b539-f4d045a9bbd9
connection_mode:[]
controller_burst_limit:[]
controller_queue_size:[]
controller_rate_limit:[]
enable_async_messages:[]
external_ids:{}
inactivity_probe:[]
is_connected:false
local_gateway:[]
local_ip:[]
local_netmask:[]
max_backoff:[]
other_config:{}
role:[]
status:{last_error="Connectionrefused",sec_since_disconnect="1",state=BACKOFF}
target:"tcp:10.30.170.48:6654"
type:[]
_uuid:740cc856-2b97-4888-820d-bf0f9d99a501
connection_mode:[]
controller_burst_limit:[]
controller_queue_size:[]
controller_rate_limit:[]
enable_async_messages:[]
external_ids:{}
inactivity_probe:[]
is_connected:false
local_gateway:[]
local_ip:[]
local_netmask:[]
max_backoff:[]
other_config:{}
role:[]
status:{last_error="Connectionrefused",sec_since_disconnect="1",state=BACKOFF}
target:"tcp:10.30.170.131:6654"
type:[]
_uuid:bbb4531e-5733-4157-b3f6-ea7bf10a308b
connection_mode:[]
controller_burst_limit:[]
controller_queue_size:[]
controller_rate_limit:[]
enable_async_messages:[]
external_ids:{}
inactivity_probe:[]
is_connected:false
local_gateway:[]
local_ip:[]
local_netmask:[]
max_backoff:[]
other_config:{}
role:[]
status:{last_error="Connectionrefused",sec_since_disconnect="1",state=BACKOFF}
target:"tcp:10.30.171.110:6654"
type:[]</msg>
<msg time="2026-04-08T01:07:53.668095" level="INFO">${data} = {'': {'_uuid': 'b1f3a25e-4d19-465f-912b-17fe7b1acbdb', 'auto_attach': '[]', 'controller': {'10.30.170.48': {'_uuid': '419e3e41-ddbb-4be3-b539-f4d045a9bbd9', 'connection_mode': '[]', 'controller_burst_...</msg>
<msg time="2026-04-08T01:07:53.668151" level="INFO">${bridegs} = {'b1f3a25e-4d19-465f-912b-17fe7b1acbdb': {'_uuid': 'b1f3a25e-4d19-465f-912b-17fe7b1acbdb', 'auto_attach': '[]', 'controller': '[419e3e41-ddbb-4be3-b539-f4d045a9bbd9,740cc856-2b97-4888-820d-bf0f9d99a50...</msg>
<msg time="2026-04-08T01:07:53.668234" level="INFO">${controllers} = {'419e3e41-ddbb-4be3-b539-f4d045a9bbd9': {'_uuid': '419e3e41-ddbb-4be3-b539-f4d045a9bbd9', 'connection_mode': '[]', 'controller_burst_limit': '[]', 'controller_queue_size': '[]', 'controller_rate_limi...</msg>
<var>${data}</var>
<var>${bridegs}</var>
<var>${controllers}</var>
<arg>${brstdout}</arg>
<arg>${cntlstdout}</arg>
<doc>Produces dictionary with data for future usege</doc>
<status status="PASS" start="2026-04-08T01:07:53.667480" elapsed="0.000779"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:07:53.668706" level="INFO">{'': {'_uuid': 'b1f3a25e-4d19-465f-912b-17fe7b1acbdb', 'auto_attach': '[]', 'controller': {'10.30.170.48': {'_uuid': '419e3e41-ddbb-4be3-b539-f4d045a9bbd9', 'connection_mode': '[]', 'controller_burst_limit': '[]', 'controller_queue_size': '[]', 'controller_rate_limit': '[]', 'enable_async_messages': '[]', 'external_ids': '{}', 'inactivity_probe': '[]', 'is_connected': False, 'local_gateway': '[]', 'local_ip': '[]', 'local_netmask': '[]', 'max_backoff': '[]', 'other_config': '{}', 'role': '[]', 'status': '{last_error="Connectionrefused",sec_since_disconnect="1",state=BACKOFF}', 'target': '"tcp:10.30.170.48:6654"', 'type': '[]'}, '10.30.170.131': {'_uuid': '740cc856-2b97-4888-820d-bf0f9d99a501', 'connection_mode': '[]', 'controller_burst_limit': '[]', 'controller_queue_size': '[]', 'controller_rate_limit': '[]', 'enable_async_messages': '[]', 'external_ids': '{}', 'inactivity_probe': '[]', 'is_connected': False, 'local_gateway': '[]', 'local_ip': '[]', 'local_netmask': '[]', 'max_backoff': '[]', 'other_config': '{}', 'role': '[]', 'status': '{last_error="Connectionrefused",sec_since_disconnect="1",state=BACKOFF}', 'target': '"tcp:10.30.170.131:6654"', 'type': '[]'}, '10.30.171.110': {'_uuid': 'bbb4531e-5733-4157-b3f6-ea7bf10a308b', 'connection_mode': '[]', 'controller_burst_limit': '[]', 'controller_queue_size': '[]', 'controller_rate_limit': '[]', 'enable_async_messages': '[]', 'external_ids': '{}', 'inactivity_probe': '[]', 'is_connected': False, 'local_gateway': '[]', 'local_ip': '[]', 'local_netmask': '[]', 'max_backoff': '[]', 'other_config': '{}', 'role': '[]', 'status': '{last_error="Connectionrefused",sec_since_disconnect="1",state=BACKOFF}', 'target': '"tcp:10.30.171.110:6654"', 'type': '[]'}}, 'datapath_id': '"0000000000000001"', 'datapath_type': '""', 'datapath_version': '"&lt;unknown&gt;"', 'external_ids': '{}', 'fail_mode': 'standalone', 'flood_vlans': '[]', 'flow_tables': '{}', 'ipfix': '[]', 'mcast_snooping_enable': 'false', 'mirrors': '[]', 'name': 's1', 'netflow': '[]', 'other_config': '{datapath-id="0000000000000001",disable-in-band="true",dp-desc=s1}', 'ports': '[079fa24c-466d-4b78-b64c-7669ebd0e515,9e99a58c-a78c-4b0a-b18c-2ef2b895c497]', 'protocols': '[OpenFlow13]', 'rstp_enable': 'false', 'rstp_status': '{}', 'sflow': '[]', 'status': '{}', 'stp_enable': 'false'}}</msg>
<arg>${data}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:07:53.668435" elapsed="0.000335"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-08T01:07:53.669390" level="INFO">${ovs_switch_data} = {'': {'_uuid': 'b1f3a25e-4d19-465f-912b-17fe7b1acbdb', 'auto_attach': '[]', 'controller': {'10.30.170.48': {'_uuid': '419e3e41-ddbb-4be3-b539-f4d045a9bbd9', 'connection_mode': '[]', 'controller_burst_...</msg>
<arg>${ovs_switch_data}</arg>
<arg>${data}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-08T01:07:53.668945" elapsed="0.000516"/>
</kw>
<return>
<value>${data}</value>
<status status="PASS" start="2026-04-08T01:07:53.669512" elapsed="0.000045"/>
</return>
<doc>Gets ovs data and parse them.</doc>
<status status="PASS" start="2026-04-08T01:07:53.607810" elapsed="0.061848"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:07:53.670529" level="INFO">${sid} = 1</msg>
<var>${sid}</var>
<arg>${i}+1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:07:53.670187" elapsed="0.000373"/>
</kw>
<kw name="Should Be Connected" owner="OvsManager">
<kw name="OvsManager__Is_Connected" owner="OvsManager">
<if>
<branch type="IF" condition="${update_data}==${True}">
<kw name="Get Ovsdb Data" owner="OvsManager">
<doc>Gets ovs data and parse them.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:53.672094" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:07:53.671771" elapsed="0.000378"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:53.671751" elapsed="0.000439"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:07:53.672567" level="FAIL">Dictionary does not contain key 's1'.</msg>
<var>${bridge}</var>
<arg>${ovs_switch_data}</arg>
<arg>${switch}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="FAIL" start="2026-04-08T01:07:53.672346" elapsed="0.000329">Dictionary does not contain key 's1'.</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${cntls}</var>
<arg>${bridge}</arg>
<arg>controller</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:53.672865" elapsed="0.000021"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${cntl}</var>
<arg>${cntls}</arg>
<arg>${controller}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:53.673044" elapsed="0.000020"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${connected}</var>
<arg>${cntl}</arg>
<arg>is_connected</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:53.673237" elapsed="0.000021"/>
</kw>
<return>
<value>${connected}</value>
<status status="NOT RUN" start="2026-04-08T01:07:53.673304" elapsed="0.000016"/>
</return>
<kw name="Execute OvsVsctl Show Command" owner="OvsManager" type="TEARDOWN">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:07:53.675470" level="INFO">sh ovs-vsctl show</msg>
<arg>${lcmd_prefix} ovs-vsctl show</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:07:53.673907" elapsed="0.001623"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-08T01:07:53.688384" level="INFO">9a5df812-eb49-4477-a37e-2d464c02791d
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.48:6654"
        Controller "tcp:10.30.170.131:6654"
        Controller "tcp:10.30.171.110:6654"
        fail_mode: standalone
        Port s1
            Interface s1
                type: internal
        Port s1-eth1
            Interface s1-eth1
    ovs_version: "2.17.11"
mininet&gt;</msg>
<msg time="2026-04-08T01:07:53.688485" level="INFO">${output} = 9a5df812-eb49-4477-a37e-2d464c02791d
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.48:6654"
        Controller "tcp:10.30.170.131:6654"
        Controller "tcp:10.30.171...</msg>
<var>${output}</var>
<arg>${lprompt}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-08T01:07:53.675701" elapsed="0.012811"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:07:53.689148" level="INFO">9a5df812-eb49-4477-a37e-2d464c02791d
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.48:6654"
        Controller "tcp:10.30.170.131:6654"
        Controller "tcp:10.30.171.110:6654"
        fail_mode: standalone
        Port s1
            Interface s1
                type: internal
        Port s1-eth1
            Interface s1-eth1
    ovs_version: "2.17.11"
mininet&gt;</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:07:53.688711" elapsed="0.000511"/>
</kw>
<doc>Executes ovs-vsctl show command and returns stdout, no check nor change is performed</doc>
<status status="PASS" start="2026-04-08T01:07:53.673579" elapsed="0.015700"/>
</kw>
<var>${connected}</var>
<arg>${switch}</arg>
<arg>${controller}</arg>
<arg>update_data=${update_data}</arg>
<doc>Return is_connected boolean value</doc>
<status status="FAIL" start="2026-04-08T01:07:53.671400" elapsed="0.017955">Dictionary does not contain key 's1'.</status>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${connected}</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:53.689535" elapsed="0.000025"/>
</kw>
<arg>s${sid}</arg>
<arg>${ODL_SYSTEM_1_IP}</arg>
<arg>update_data=${False}</arg>
<doc>Check if the switch is connected</doc>
<status status="FAIL" start="2026-04-08T01:07:53.670800" elapsed="0.018845">Dictionary does not contain key 's1'.</status>
</kw>
<kw name="Should Be Connected" owner="OvsManager">
<arg>s${sid}</arg>
<arg>${ODL_SYSTEM_2_IP}</arg>
<arg>update_data=${False}</arg>
<doc>Check if the switch is connected</doc>
<status status="NOT RUN" start="2026-04-08T01:07:53.689902" elapsed="0.000025"/>
</kw>
<kw name="Should Be Connected" owner="OvsManager">
<arg>s${sid}</arg>
<arg>${ODL_SYSTEM_3_IP}</arg>
<arg>update_data=${False}</arg>
<doc>Check if the switch is connected</doc>
<status status="NOT RUN" start="2026-04-08T01:07:53.690130" elapsed="0.000022"/>
</kw>
<var name="${i}">0</var>
<status status="FAIL" start="2026-04-08T01:07:53.670015" elapsed="0.020213">Dictionary does not contain key 's1'.</status>
</iter>
<var>${i}</var>
<value>0</value>
<value>${SWITCHES}</value>
<status status="FAIL" start="2026-04-08T01:07:53.669719" elapsed="0.020566">Dictionary does not contain key 's1'.</status>
</for>
<doc>Verifies all switches are connected to all cluster nodes</doc>
<status status="FAIL" start="2026-04-08T01:07:53.606633" elapsed="0.083743">Dictionary does not contain key 's1'.</status>
</kw>
<kw name="Check All Switches Connected To All Cluster Nodes">
<kw name="Get Ovsdb Data" owner="OvsManager">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:07:54.696239" level="INFO">sh ovs-vsctl list Bridge</msg>
<arg>${lcmd_prefix} ${SH_BR_CMD}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:07:54.692950" elapsed="0.003437"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-08T01:07:54.732714" level="INFO">_uuid               : b1f3a25e-4d19-465f-912b-17fe7b1acbdb
auto_attach         : []
controller          : [419e3e41-ddbb-4be3-b539-f4d045a9bbd9, 740cc856-2b97-4888-820d-bf0f9d99a501, bbb4531e-5733-4157-b3f6-ea7bf10a308b]
datapath_id         : "0000000000000001"
datapath_type       : ""
datapath_version    : "&lt;unknown&gt;"
external_ids        : {}
fail_mode           : standalone
flood_vlans         : []
flow_tables         : {}
ipfix               : []
mcast_snooping_enable: false
mirrors             : []
name                : s1
netflow             : []
other_config        : {datapath-id="0000000000000001", disable-in-band="true", dp-desc=s1}
ports               : [079fa24c-466d-4b78-b64c-7669ebd0e515, 9e99a58c-a78c-4b0a-b18c-2ef2b895c497]
protocols           : [OpenFlow13]
rstp_enable         : false
rstp_status         : {}
sflow               : []
status              : {}
stp_enable          : false
mininet&gt;</msg>
<msg time="2026-04-08T01:07:54.732912" level="INFO">${brstdout} = _uuid               : b1f3a25e-4d19-465f-912b-17fe7b1acbdb
auto_attach         : []
controller          : [419e3e41-ddbb-4be3-b539-f4d045a9bbd9, 740cc856-2b97-4888-820d-bf0f9d99a501, bbb4531e-5733-4...</msg>
<var>${brstdout}</var>
<arg>${lprompt}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-08T01:07:54.696776" elapsed="0.036164"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:07:54.733517" level="INFO">_uuid               : b1f3a25e-4d19-465f-912b-17fe7b1acbdb
auto_attach         : []
controller          : [419e3e41-ddbb-4be3-b539-f4d045a9bbd9, 740cc856-2b97-4888-820d-bf0f9d99a501, bbb4531e-5733-4157-b3f6-ea7bf10a308b]
datapath_id         : "0000000000000001"
datapath_type       : ""
datapath_version    : "&lt;unknown&gt;"
external_ids        : {}
fail_mode           : standalone
flood_vlans         : []
flow_tables         : {}
ipfix               : []
mcast_snooping_enable: false
mirrors             : []
name                : s1
netflow             : []
other_config        : {datapath-id="0000000000000001", disable-in-band="true", dp-desc=s1}
ports               : [079fa24c-466d-4b78-b64c-7669ebd0e515, 9e99a58c-a78c-4b0a-b18c-2ef2b895c497]
protocols           : [OpenFlow13]
rstp_enable         : false
rstp_status         : {}
sflow               : []
status              : {}
stp_enable          : false
mininet&gt;</msg>
<arg>${brstdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:07:54.733218" elapsed="0.000356"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:07:54.735536" level="INFO">sh ovs-vsctl list Controller</msg>
<arg>${lcmd_prefix} ${SH_CNTL_CMD}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:07:54.733734" elapsed="0.001858"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-08T01:07:54.765900" level="INFO">_uuid               : 419e3e41-ddbb-4be3-b539-f4d045a9bbd9
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : false
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : []
status              : {last_error="Connection refused", sec_since_disconnect="1", state=BACKOFF}
target              : "tcp:10.30.170.48:6654"
type                : []

_uuid               : 740cc856-2b97-4888-820d-bf0f9d99a501
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : false
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : []
status              : {last_error="Connection refused", sec_since_disconnect="1", state=BACKOFF}
target              : "tcp:10.30.170.131:6654"
type                : []

_uuid               : bbb4531e-5733-4157-b3f6-ea7bf10a308b
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : false
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : []
status              : {last_error="Connection refused", sec_since_disconnect="1", state=BACKOFF}
target              : "tcp:10.30.171.110:6654"
type                : []
mininet&gt;</msg>
<msg time="2026-04-08T01:07:54.766011" level="INFO">${cntlstdout} = _uuid               : 419e3e41-ddbb-4be3-b539-f4d045a9bbd9
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
exter...</msg>
<var>${cntlstdout}</var>
<arg>${lprompt}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-08T01:07:54.735760" elapsed="0.030278"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:07:54.766499" level="INFO">_uuid               : 419e3e41-ddbb-4be3-b539-f4d045a9bbd9
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : false
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : []
status              : {last_error="Connection refused", sec_since_disconnect="1", state=BACKOFF}
target              : "tcp:10.30.170.48:6654"
type                : []

_uuid               : 740cc856-2b97-4888-820d-bf0f9d99a501
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : false
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : []
status              : {last_error="Connection refused", sec_since_disconnect="1", state=BACKOFF}
target              : "tcp:10.30.170.131:6654"
type                : []

_uuid               : bbb4531e-5733-4157-b3f6-ea7bf10a308b
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : false
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : []
status              : {last_error="Connection refused", sec_since_disconnect="1", state=BACKOFF}
target              : "tcp:10.30.171.110:6654"
type                : []
mininet&gt;</msg>
<arg>${cntlstdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:07:54.766248" elapsed="0.000314"/>
</kw>
<kw name="Parse" owner="VsctlListParser">
<msg time="2026-04-08T01:07:54.767220" level="INFO">_uuid:b1f3a25e-4d19-465f-912b-17fe7b1acbdb
auto_attach:[]
controller:[419e3e41-ddbb-4be3-b539-f4d045a9bbd9,740cc856-2b97-4888-820d-bf0f9d99a501,bbb4531e-5733-4157-b3f6-ea7bf10a308b]
datapath_id:"0000000000000001"
datapath_type:""
datapath_version:"&lt;unknown&gt;"
external_ids:{}
fail_mode:standalone
flood_vlans:[]
flow_tables:{}
ipfix:[]
mcast_snooping_enable:false
mirrors:[]
name:s1
netflow:[]
other_config:{datapath-id="0000000000000001",disable-in-band="true",dp-desc=s1}
ports:[079fa24c-466d-4b78-b64c-7669ebd0e515,9e99a58c-a78c-4b0a-b18c-2ef2b895c497]
protocols:[OpenFlow13]
rstp_enable:false
rstp_status:{}
sflow:[]
status:{}
stp_enable:false
_uuid:419e3e41-ddbb-4be3-b539-f4d045a9bbd9
connection_mode:[]
controller_burst_limit:[]
controller_queue_size:[]
controller_rate_limit:[]
enable_async_messages:[]
external_ids:{}
inactivity_probe:[]
is_connected:false
local_gateway:[]
local_ip:[]
local_netmask:[]
max_backoff:[]
other_config:{}
role:[]
status:{last_error="Connectionrefused",sec_since_disconnect="1",state=BACKOFF}
target:"tcp:10.30.170.48:6654"
type:[]
_uuid:740cc856-2b97-4888-820d-bf0f9d99a501
connection_mode:[]
controller_burst_limit:[]
controller_queue_size:[]
controller_rate_limit:[]
enable_async_messages:[]
external_ids:{}
inactivity_probe:[]
is_connected:false
local_gateway:[]
local_ip:[]
local_netmask:[]
max_backoff:[]
other_config:{}
role:[]
status:{last_error="Connectionrefused",sec_since_disconnect="1",state=BACKOFF}
target:"tcp:10.30.170.131:6654"
type:[]
_uuid:bbb4531e-5733-4157-b3f6-ea7bf10a308b
connection_mode:[]
controller_burst_limit:[]
controller_queue_size:[]
controller_rate_limit:[]
enable_async_messages:[]
external_ids:{}
inactivity_probe:[]
is_connected:false
local_gateway:[]
local_ip:[]
local_netmask:[]
max_backoff:[]
other_config:{}
role:[]
status:{last_error="Connectionrefused",sec_since_disconnect="1",state=BACKOFF}
target:"tcp:10.30.171.110:6654"
type:[]</msg>
<msg time="2026-04-08T01:07:54.767401" level="INFO">${data} = {'': {'_uuid': 'b1f3a25e-4d19-465f-912b-17fe7b1acbdb', 'auto_attach': '[]', 'controller': {'10.30.170.48': {'_uuid': '419e3e41-ddbb-4be3-b539-f4d045a9bbd9', 'connection_mode': '[]', 'controller_burst_...</msg>
<msg time="2026-04-08T01:07:54.767458" level="INFO">${bridegs} = {'b1f3a25e-4d19-465f-912b-17fe7b1acbdb': {'_uuid': 'b1f3a25e-4d19-465f-912b-17fe7b1acbdb', 'auto_attach': '[]', 'controller': '[419e3e41-ddbb-4be3-b539-f4d045a9bbd9,740cc856-2b97-4888-820d-bf0f9d99a50...</msg>
<msg time="2026-04-08T01:07:54.767522" level="INFO">${controllers} = {'419e3e41-ddbb-4be3-b539-f4d045a9bbd9': {'_uuid': '419e3e41-ddbb-4be3-b539-f4d045a9bbd9', 'connection_mode': '[]', 'controller_burst_limit': '[]', 'controller_queue_size': '[]', 'controller_rate_limi...</msg>
<var>${data}</var>
<var>${bridegs}</var>
<var>${controllers}</var>
<arg>${brstdout}</arg>
<arg>${cntlstdout}</arg>
<doc>Produces dictionary with data for future usege</doc>
<status status="PASS" start="2026-04-08T01:07:54.766729" elapsed="0.000817"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:07:54.767991" level="INFO">{'': {'_uuid': 'b1f3a25e-4d19-465f-912b-17fe7b1acbdb', 'auto_attach': '[]', 'controller': {'10.30.170.48': {'_uuid': '419e3e41-ddbb-4be3-b539-f4d045a9bbd9', 'connection_mode': '[]', 'controller_burst_limit': '[]', 'controller_queue_size': '[]', 'controller_rate_limit': '[]', 'enable_async_messages': '[]', 'external_ids': '{}', 'inactivity_probe': '[]', 'is_connected': False, 'local_gateway': '[]', 'local_ip': '[]', 'local_netmask': '[]', 'max_backoff': '[]', 'other_config': '{}', 'role': '[]', 'status': '{last_error="Connectionrefused",sec_since_disconnect="1",state=BACKOFF}', 'target': '"tcp:10.30.170.48:6654"', 'type': '[]'}, '10.30.170.131': {'_uuid': '740cc856-2b97-4888-820d-bf0f9d99a501', 'connection_mode': '[]', 'controller_burst_limit': '[]', 'controller_queue_size': '[]', 'controller_rate_limit': '[]', 'enable_async_messages': '[]', 'external_ids': '{}', 'inactivity_probe': '[]', 'is_connected': False, 'local_gateway': '[]', 'local_ip': '[]', 'local_netmask': '[]', 'max_backoff': '[]', 'other_config': '{}', 'role': '[]', 'status': '{last_error="Connectionrefused",sec_since_disconnect="1",state=BACKOFF}', 'target': '"tcp:10.30.170.131:6654"', 'type': '[]'}, '10.30.171.110': {'_uuid': 'bbb4531e-5733-4157-b3f6-ea7bf10a308b', 'connection_mode': '[]', 'controller_burst_limit': '[]', 'controller_queue_size': '[]', 'controller_rate_limit': '[]', 'enable_async_messages': '[]', 'external_ids': '{}', 'inactivity_probe': '[]', 'is_connected': False, 'local_gateway': '[]', 'local_ip': '[]', 'local_netmask': '[]', 'max_backoff': '[]', 'other_config': '{}', 'role': '[]', 'status': '{last_error="Connectionrefused",sec_since_disconnect="1",state=BACKOFF}', 'target': '"tcp:10.30.171.110:6654"', 'type': '[]'}}, 'datapath_id': '"0000000000000001"', 'datapath_type': '""', 'datapath_version': '"&lt;unknown&gt;"', 'external_ids': '{}', 'fail_mode': 'standalone', 'flood_vlans': '[]', 'flow_tables': '{}', 'ipfix': '[]', 'mcast_snooping_enable': 'false', 'mirrors': '[]', 'name': 's1', 'netflow': '[]', 'other_config': '{datapath-id="0000000000000001",disable-in-band="true",dp-desc=s1}', 'ports': '[079fa24c-466d-4b78-b64c-7669ebd0e515,9e99a58c-a78c-4b0a-b18c-2ef2b895c497]', 'protocols': '[OpenFlow13]', 'rstp_enable': 'false', 'rstp_status': '{}', 'sflow': '[]', 'status': '{}', 'stp_enable': 'false'}}</msg>
<arg>${data}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:07:54.767720" elapsed="0.000333"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-08T01:07:54.768686" level="INFO">${ovs_switch_data} = {'': {'_uuid': 'b1f3a25e-4d19-465f-912b-17fe7b1acbdb', 'auto_attach': '[]', 'controller': {'10.30.170.48': {'_uuid': '419e3e41-ddbb-4be3-b539-f4d045a9bbd9', 'connection_mode': '[]', 'controller_burst_...</msg>
<arg>${ovs_switch_data}</arg>
<arg>${data}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-08T01:07:54.768246" elapsed="0.000483"/>
</kw>
<return>
<value>${data}</value>
<status status="PASS" start="2026-04-08T01:07:54.768778" elapsed="0.000047"/>
</return>
<doc>Gets ovs data and parse them.</doc>
<status status="PASS" start="2026-04-08T01:07:54.692257" elapsed="0.076670"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:07:54.769716" level="INFO">${sid} = 1</msg>
<var>${sid}</var>
<arg>${i}+1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:07:54.769378" elapsed="0.000365"/>
</kw>
<kw name="Should Be Connected" owner="OvsManager">
<kw name="OvsManager__Is_Connected" owner="OvsManager">
<if>
<branch type="IF" condition="${update_data}==${True}">
<kw name="Get Ovsdb Data" owner="OvsManager">
<doc>Gets ovs data and parse them.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:54.771300" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:07:54.770957" elapsed="0.000399"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:54.770935" elapsed="0.000446"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:07:54.771754" level="FAIL">Dictionary does not contain key 's1'.</msg>
<var>${bridge}</var>
<arg>${ovs_switch_data}</arg>
<arg>${switch}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="FAIL" start="2026-04-08T01:07:54.771534" elapsed="0.000327">Dictionary does not contain key 's1'.</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${cntls}</var>
<arg>${bridge}</arg>
<arg>controller</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:54.772038" elapsed="0.000022"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${cntl}</var>
<arg>${cntls}</arg>
<arg>${controller}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:54.772233" elapsed="0.000020"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${connected}</var>
<arg>${cntl}</arg>
<arg>is_connected</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:54.772410" elapsed="0.000077"/>
</kw>
<return>
<value>${connected}</value>
<status status="NOT RUN" start="2026-04-08T01:07:54.772536" elapsed="0.000017"/>
</return>
<kw name="Execute OvsVsctl Show Command" owner="OvsManager" type="TEARDOWN">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:07:54.774600" level="INFO">sh ovs-vsctl show</msg>
<arg>${lcmd_prefix} ovs-vsctl show</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:07:54.773141" elapsed="0.001514"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-08T01:07:54.786426" level="INFO">9a5df812-eb49-4477-a37e-2d464c02791d
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.48:6654"
        Controller "tcp:10.30.170.131:6654"
        Controller "tcp:10.30.171.110:6654"
        fail_mode: standalone
        Port s1
            Interface s1
                type: internal
        Port s1-eth1
            Interface s1-eth1
    ovs_version: "2.17.11"
mininet&gt;</msg>
<msg time="2026-04-08T01:07:54.786522" level="INFO">${output} = 9a5df812-eb49-4477-a37e-2d464c02791d
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.48:6654"
        Controller "tcp:10.30.170.131:6654"
        Controller "tcp:10.30.171...</msg>
<var>${output}</var>
<arg>${lprompt}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-08T01:07:54.774854" elapsed="0.011695"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:07:54.787222" level="INFO">9a5df812-eb49-4477-a37e-2d464c02791d
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.48:6654"
        Controller "tcp:10.30.170.131:6654"
        Controller "tcp:10.30.171.110:6654"
        fail_mode: standalone
        Port s1
            Interface s1
                type: internal
        Port s1-eth1
            Interface s1-eth1
    ovs_version: "2.17.11"
mininet&gt;</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:07:54.786755" elapsed="0.000555"/>
</kw>
<doc>Executes ovs-vsctl show command and returns stdout, no check nor change is performed</doc>
<status status="PASS" start="2026-04-08T01:07:54.772835" elapsed="0.014531"/>
</kw>
<var>${connected}</var>
<arg>${switch}</arg>
<arg>${controller}</arg>
<arg>update_data=${update_data}</arg>
<doc>Return is_connected boolean value</doc>
<status status="FAIL" start="2026-04-08T01:07:54.770559" elapsed="0.016883">Dictionary does not contain key 's1'.</status>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${connected}</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:54.787620" elapsed="0.000022"/>
</kw>
<arg>s${sid}</arg>
<arg>${ODL_SYSTEM_1_IP}</arg>
<arg>update_data=${False}</arg>
<doc>Check if the switch is connected</doc>
<status status="FAIL" start="2026-04-08T01:07:54.769958" elapsed="0.017774">Dictionary does not contain key 's1'.</status>
</kw>
<kw name="Should Be Connected" owner="OvsManager">
<arg>s${sid}</arg>
<arg>${ODL_SYSTEM_2_IP}</arg>
<arg>update_data=${False}</arg>
<doc>Check if the switch is connected</doc>
<status status="NOT RUN" start="2026-04-08T01:07:54.787973" elapsed="0.000024"/>
</kw>
<kw name="Should Be Connected" owner="OvsManager">
<arg>s${sid}</arg>
<arg>${ODL_SYSTEM_3_IP}</arg>
<arg>update_data=${False}</arg>
<doc>Check if the switch is connected</doc>
<status status="NOT RUN" start="2026-04-08T01:07:54.788218" elapsed="0.000024"/>
</kw>
<var name="${i}">0</var>
<status status="FAIL" start="2026-04-08T01:07:54.769222" elapsed="0.019073">Dictionary does not contain key 's1'.</status>
</iter>
<var>${i}</var>
<value>0</value>
<value>${SWITCHES}</value>
<status status="FAIL" start="2026-04-08T01:07:54.768984" elapsed="0.019368">Dictionary does not contain key 's1'.</status>
</for>
<doc>Verifies all switches are connected to all cluster nodes</doc>
<status status="FAIL" start="2026-04-08T01:07:54.691146" elapsed="0.097297">Dictionary does not contain key 's1'.</status>
</kw>
<kw name="Check All Switches Connected To All Cluster Nodes">
<kw name="Get Ovsdb Data" owner="OvsManager">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:07:55.794195" level="INFO">sh ovs-vsctl list Bridge</msg>
<arg>${lcmd_prefix} ${SH_BR_CMD}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:07:55.791068" elapsed="0.003271"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-08T01:07:55.854000" level="INFO">_uuid               : b1f3a25e-4d19-465f-912b-17fe7b1acbdb
auto_attach         : []
controller          : [419e3e41-ddbb-4be3-b539-f4d045a9bbd9, 740cc856-2b97-4888-820d-bf0f9d99a501, bbb4531e-5733-4157-b3f6-ea7bf10a308b]
datapath_id         : "0000000000000001"
datapath_type       : ""
datapath_version    : "&lt;unknown&gt;"
external_ids        : {}
fail_mode           : standalone
flood_vlans         : []
flow_tables         : {}
ipfix               : []
mcast_snooping_enable: false
mirrors             : []
name                : s1
netflow             : []
other_config        : {datapath-id="0000000000000001", disable-in-band="true", dp-desc=s1}
ports               : [079fa24c-466d-4b78-b64c-7669ebd0e515, 9e99a58c-a78c-4b0a-b18c-2ef2b895c497]
protocols           : [OpenFlow13]
rstp_enable         : false
rstp_status         : {}
sflow               : []
status              : {}
stp_enable          : false
mininet&gt;</msg>
<msg time="2026-04-08T01:07:55.854122" level="INFO">${brstdout} = _uuid               : b1f3a25e-4d19-465f-912b-17fe7b1acbdb
auto_attach         : []
controller          : [419e3e41-ddbb-4be3-b539-f4d045a9bbd9, 740cc856-2b97-4888-820d-bf0f9d99a501, bbb4531e-5733-4...</msg>
<var>${brstdout}</var>
<arg>${lprompt}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-08T01:07:55.794731" elapsed="0.059419"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:07:55.854745" level="INFO">_uuid               : b1f3a25e-4d19-465f-912b-17fe7b1acbdb
auto_attach         : []
controller          : [419e3e41-ddbb-4be3-b539-f4d045a9bbd9, 740cc856-2b97-4888-820d-bf0f9d99a501, bbb4531e-5733-4157-b3f6-ea7bf10a308b]
datapath_id         : "0000000000000001"
datapath_type       : ""
datapath_version    : "&lt;unknown&gt;"
external_ids        : {}
fail_mode           : standalone
flood_vlans         : []
flow_tables         : {}
ipfix               : []
mcast_snooping_enable: false
mirrors             : []
name                : s1
netflow             : []
other_config        : {datapath-id="0000000000000001", disable-in-band="true", dp-desc=s1}
ports               : [079fa24c-466d-4b78-b64c-7669ebd0e515, 9e99a58c-a78c-4b0a-b18c-2ef2b895c497]
protocols           : [OpenFlow13]
rstp_enable         : false
rstp_status         : {}
sflow               : []
status              : {}
stp_enable          : false
mininet&gt;</msg>
<arg>${brstdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:07:55.854432" elapsed="0.000370"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:07:55.856530" level="INFO">sh ovs-vsctl list Controller</msg>
<arg>${lcmd_prefix} ${SH_CNTL_CMD}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:07:55.854967" elapsed="0.001619"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-08T01:07:55.878633" level="INFO">_uuid               : 419e3e41-ddbb-4be3-b539-f4d045a9bbd9
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : false
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : []
status              : {last_error="Connection refused", sec_since_disconnect="1", state=BACKOFF}
target              : "tcp:10.30.170.48:6654"
type                : []

_uuid               : 740cc856-2b97-4888-820d-bf0f9d99a501
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : false
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : []
status              : {last_error="Connection refused", sec_since_disconnect="1", state=BACKOFF}
target              : "tcp:10.30.170.131:6654"
type                : []

_uuid               : bbb4531e-5733-4157-b3f6-ea7bf10a308b
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : false
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : []
status              : {last_error="Connection refused", sec_since_disconnect="1", state=BACKOFF}
target              : "tcp:10.30.171.110:6654"
type                : []
mininet&gt;</msg>
<msg time="2026-04-08T01:07:55.878755" level="INFO">${cntlstdout} = _uuid               : 419e3e41-ddbb-4be3-b539-f4d045a9bbd9
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
exter...</msg>
<var>${cntlstdout}</var>
<arg>${lprompt}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-08T01:07:55.856756" elapsed="0.022029"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:07:55.879486" level="INFO">_uuid               : 419e3e41-ddbb-4be3-b539-f4d045a9bbd9
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : false
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : []
status              : {last_error="Connection refused", sec_since_disconnect="1", state=BACKOFF}
target              : "tcp:10.30.170.48:6654"
type                : []

_uuid               : 740cc856-2b97-4888-820d-bf0f9d99a501
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : false
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : []
status              : {last_error="Connection refused", sec_since_disconnect="1", state=BACKOFF}
target              : "tcp:10.30.170.131:6654"
type                : []

_uuid               : bbb4531e-5733-4157-b3f6-ea7bf10a308b
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : false
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : []
status              : {last_error="Connection refused", sec_since_disconnect="1", state=BACKOFF}
target              : "tcp:10.30.171.110:6654"
type                : []
mininet&gt;</msg>
<arg>${cntlstdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:07:55.879231" elapsed="0.000317"/>
</kw>
<kw name="Parse" owner="VsctlListParser">
<msg time="2026-04-08T01:07:55.880357" level="INFO">_uuid:b1f3a25e-4d19-465f-912b-17fe7b1acbdb
auto_attach:[]
controller:[419e3e41-ddbb-4be3-b539-f4d045a9bbd9,740cc856-2b97-4888-820d-bf0f9d99a501,bbb4531e-5733-4157-b3f6-ea7bf10a308b]
datapath_id:"0000000000000001"
datapath_type:""
datapath_version:"&lt;unknown&gt;"
external_ids:{}
fail_mode:standalone
flood_vlans:[]
flow_tables:{}
ipfix:[]
mcast_snooping_enable:false
mirrors:[]
name:s1
netflow:[]
other_config:{datapath-id="0000000000000001",disable-in-band="true",dp-desc=s1}
ports:[079fa24c-466d-4b78-b64c-7669ebd0e515,9e99a58c-a78c-4b0a-b18c-2ef2b895c497]
protocols:[OpenFlow13]
rstp_enable:false
rstp_status:{}
sflow:[]
status:{}
stp_enable:false
_uuid:419e3e41-ddbb-4be3-b539-f4d045a9bbd9
connection_mode:[]
controller_burst_limit:[]
controller_queue_size:[]
controller_rate_limit:[]
enable_async_messages:[]
external_ids:{}
inactivity_probe:[]
is_connected:false
local_gateway:[]
local_ip:[]
local_netmask:[]
max_backoff:[]
other_config:{}
role:[]
status:{last_error="Connectionrefused",sec_since_disconnect="1",state=BACKOFF}
target:"tcp:10.30.170.48:6654"
type:[]
_uuid:740cc856-2b97-4888-820d-bf0f9d99a501
connection_mode:[]
controller_burst_limit:[]
controller_queue_size:[]
controller_rate_limit:[]
enable_async_messages:[]
external_ids:{}
inactivity_probe:[]
is_connected:false
local_gateway:[]
local_ip:[]
local_netmask:[]
max_backoff:[]
other_config:{}
role:[]
status:{last_error="Connectionrefused",sec_since_disconnect="1",state=BACKOFF}
target:"tcp:10.30.170.131:6654"
type:[]
_uuid:bbb4531e-5733-4157-b3f6-ea7bf10a308b
connection_mode:[]
controller_burst_limit:[]
controller_queue_size:[]
controller_rate_limit:[]
enable_async_messages:[]
external_ids:{}
inactivity_probe:[]
is_connected:false
local_gateway:[]
local_ip:[]
local_netmask:[]
max_backoff:[]
other_config:{}
role:[]
status:{last_error="Connectionrefused",sec_since_disconnect="1",state=BACKOFF}
target:"tcp:10.30.171.110:6654"
type:[]</msg>
<msg time="2026-04-08T01:07:55.880504" level="INFO">${data} = {'': {'_uuid': 'b1f3a25e-4d19-465f-912b-17fe7b1acbdb', 'auto_attach': '[]', 'controller': {'10.30.170.48': {'_uuid': '419e3e41-ddbb-4be3-b539-f4d045a9bbd9', 'connection_mode': '[]', 'controller_burst_...</msg>
<msg time="2026-04-08T01:07:55.880561" level="INFO">${bridegs} = {'b1f3a25e-4d19-465f-912b-17fe7b1acbdb': {'_uuid': 'b1f3a25e-4d19-465f-912b-17fe7b1acbdb', 'auto_attach': '[]', 'controller': '[419e3e41-ddbb-4be3-b539-f4d045a9bbd9,740cc856-2b97-4888-820d-bf0f9d99a50...</msg>
<msg time="2026-04-08T01:07:55.880624" level="INFO">${controllers} = {'419e3e41-ddbb-4be3-b539-f4d045a9bbd9': {'_uuid': '419e3e41-ddbb-4be3-b539-f4d045a9bbd9', 'connection_mode': '[]', 'controller_burst_limit': '[]', 'controller_queue_size': '[]', 'controller_rate_limi...</msg>
<var>${data}</var>
<var>${bridegs}</var>
<var>${controllers}</var>
<arg>${brstdout}</arg>
<arg>${cntlstdout}</arg>
<doc>Produces dictionary with data for future usege</doc>
<status status="PASS" start="2026-04-08T01:07:55.879716" elapsed="0.000932"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:07:55.881100" level="INFO">{'': {'_uuid': 'b1f3a25e-4d19-465f-912b-17fe7b1acbdb', 'auto_attach': '[]', 'controller': {'10.30.170.48': {'_uuid': '419e3e41-ddbb-4be3-b539-f4d045a9bbd9', 'connection_mode': '[]', 'controller_burst_limit': '[]', 'controller_queue_size': '[]', 'controller_rate_limit': '[]', 'enable_async_messages': '[]', 'external_ids': '{}', 'inactivity_probe': '[]', 'is_connected': False, 'local_gateway': '[]', 'local_ip': '[]', 'local_netmask': '[]', 'max_backoff': '[]', 'other_config': '{}', 'role': '[]', 'status': '{last_error="Connectionrefused",sec_since_disconnect="1",state=BACKOFF}', 'target': '"tcp:10.30.170.48:6654"', 'type': '[]'}, '10.30.170.131': {'_uuid': '740cc856-2b97-4888-820d-bf0f9d99a501', 'connection_mode': '[]', 'controller_burst_limit': '[]', 'controller_queue_size': '[]', 'controller_rate_limit': '[]', 'enable_async_messages': '[]', 'external_ids': '{}', 'inactivity_probe': '[]', 'is_connected': False, 'local_gateway': '[]', 'local_ip': '[]', 'local_netmask': '[]', 'max_backoff': '[]', 'other_config': '{}', 'role': '[]', 'status': '{last_error="Connectionrefused",sec_since_disconnect="1",state=BACKOFF}', 'target': '"tcp:10.30.170.131:6654"', 'type': '[]'}, '10.30.171.110': {'_uuid': 'bbb4531e-5733-4157-b3f6-ea7bf10a308b', 'connection_mode': '[]', 'controller_burst_limit': '[]', 'controller_queue_size': '[]', 'controller_rate_limit': '[]', 'enable_async_messages': '[]', 'external_ids': '{}', 'inactivity_probe': '[]', 'is_connected': False, 'local_gateway': '[]', 'local_ip': '[]', 'local_netmask': '[]', 'max_backoff': '[]', 'other_config': '{}', 'role': '[]', 'status': '{last_error="Connectionrefused",sec_since_disconnect="1",state=BACKOFF}', 'target': '"tcp:10.30.171.110:6654"', 'type': '[]'}}, 'datapath_id': '"0000000000000001"', 'datapath_type': '""', 'datapath_version': '"&lt;unknown&gt;"', 'external_ids': '{}', 'fail_mode': 'standalone', 'flood_vlans': '[]', 'flow_tables': '{}', 'ipfix': '[]', 'mcast_snooping_enable': 'false', 'mirrors': '[]', 'name': 's1', 'netflow': '[]', 'other_config': '{datapath-id="0000000000000001",disable-in-band="true",dp-desc=s1}', 'ports': '[079fa24c-466d-4b78-b64c-7669ebd0e515,9e99a58c-a78c-4b0a-b18c-2ef2b895c497]', 'protocols': '[OpenFlow13]', 'rstp_enable': 'false', 'rstp_status': '{}', 'sflow': '[]', 'status': '{}', 'stp_enable': 'false'}}</msg>
<arg>${data}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:07:55.880828" elapsed="0.000352"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-08T01:07:55.881805" level="INFO">${ovs_switch_data} = {'': {'_uuid': 'b1f3a25e-4d19-465f-912b-17fe7b1acbdb', 'auto_attach': '[]', 'controller': {'10.30.170.48': {'_uuid': '419e3e41-ddbb-4be3-b539-f4d045a9bbd9', 'connection_mode': '[]', 'controller_burst_...</msg>
<arg>${ovs_switch_data}</arg>
<arg>${data}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-08T01:07:55.881361" elapsed="0.000524"/>
</kw>
<return>
<value>${data}</value>
<status status="PASS" start="2026-04-08T01:07:55.881937" elapsed="0.000046"/>
</return>
<doc>Gets ovs data and parse them.</doc>
<status status="PASS" start="2026-04-08T01:07:55.790367" elapsed="0.091737"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:07:55.882887" level="INFO">${sid} = 1</msg>
<var>${sid}</var>
<arg>${i}+1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:07:55.882549" elapsed="0.000364"/>
</kw>
<kw name="Should Be Connected" owner="OvsManager">
<kw name="OvsManager__Is_Connected" owner="OvsManager">
<if>
<branch type="IF" condition="${update_data}==${True}">
<kw name="Get Ovsdb Data" owner="OvsManager">
<doc>Gets ovs data and parse them.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:55.884490" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:07:55.884146" elapsed="0.000400"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:55.884124" elapsed="0.000448"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:07:55.884950" level="FAIL">Dictionary does not contain key 's1'.</msg>
<var>${bridge}</var>
<arg>${ovs_switch_data}</arg>
<arg>${switch}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="FAIL" start="2026-04-08T01:07:55.884729" elapsed="0.000324">Dictionary does not contain key 's1'.</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${cntls}</var>
<arg>${bridge}</arg>
<arg>controller</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:55.885250" elapsed="0.000022"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${cntl}</var>
<arg>${cntls}</arg>
<arg>${controller}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:55.885432" elapsed="0.000020"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${connected}</var>
<arg>${cntl}</arg>
<arg>is_connected</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:55.885611" elapsed="0.000020"/>
</kw>
<return>
<value>${connected}</value>
<status status="NOT RUN" start="2026-04-08T01:07:55.885677" elapsed="0.000016"/>
</return>
<kw name="Execute OvsVsctl Show Command" owner="OvsManager" type="TEARDOWN">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:07:55.887574" level="INFO">sh ovs-vsctl show</msg>
<arg>${lcmd_prefix} ovs-vsctl show</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:07:55.886273" elapsed="0.001356"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-08T01:07:55.897131" level="INFO">9a5df812-eb49-4477-a37e-2d464c02791d
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.48:6654"
        Controller "tcp:10.30.170.131:6654"
        Controller "tcp:10.30.171.110:6654"
        fail_mode: standalone
        Port s1
            Interface s1
                type: internal
        Port s1-eth1
            Interface s1-eth1
    ovs_version: "2.17.11"
mininet&gt;</msg>
<msg time="2026-04-08T01:07:55.897244" level="INFO">${output} = 9a5df812-eb49-4477-a37e-2d464c02791d
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.48:6654"
        Controller "tcp:10.30.170.131:6654"
        Controller "tcp:10.30.171...</msg>
<var>${output}</var>
<arg>${lprompt}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-08T01:07:55.887795" elapsed="0.009475"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:07:55.897913" level="INFO">9a5df812-eb49-4477-a37e-2d464c02791d
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.48:6654"
        Controller "tcp:10.30.170.131:6654"
        Controller "tcp:10.30.171.110:6654"
        fail_mode: standalone
        Port s1
            Interface s1
                type: internal
        Port s1-eth1
            Interface s1-eth1
    ovs_version: "2.17.11"
mininet&gt;</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:07:55.897660" elapsed="0.000302"/>
</kw>
<doc>Executes ovs-vsctl show command and returns stdout, no check nor change is performed</doc>
<status status="PASS" start="2026-04-08T01:07:55.885950" elapsed="0.012067"/>
</kw>
<var>${connected}</var>
<arg>${switch}</arg>
<arg>${controller}</arg>
<arg>update_data=${update_data}</arg>
<doc>Return is_connected boolean value</doc>
<status status="FAIL" start="2026-04-08T01:07:55.883757" elapsed="0.014334">Dictionary does not contain key 's1'.</status>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${connected}</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:55.898287" elapsed="0.000022"/>
</kw>
<arg>s${sid}</arg>
<arg>${ODL_SYSTEM_1_IP}</arg>
<arg>update_data=${False}</arg>
<doc>Check if the switch is connected</doc>
<status status="FAIL" start="2026-04-08T01:07:55.883135" elapsed="0.015259">Dictionary does not contain key 's1'.</status>
</kw>
<kw name="Should Be Connected" owner="OvsManager">
<arg>s${sid}</arg>
<arg>${ODL_SYSTEM_2_IP}</arg>
<arg>update_data=${False}</arg>
<doc>Check if the switch is connected</doc>
<status status="NOT RUN" start="2026-04-08T01:07:55.898613" elapsed="0.000024"/>
</kw>
<kw name="Should Be Connected" owner="OvsManager">
<arg>s${sid}</arg>
<arg>${ODL_SYSTEM_3_IP}</arg>
<arg>update_data=${False}</arg>
<doc>Check if the switch is connected</doc>
<status status="NOT RUN" start="2026-04-08T01:07:55.898840" elapsed="0.000022"/>
</kw>
<var name="${i}">0</var>
<status status="FAIL" start="2026-04-08T01:07:55.882395" elapsed="0.016520">Dictionary does not contain key 's1'.</status>
</iter>
<var>${i}</var>
<value>0</value>
<value>${SWITCHES}</value>
<status status="FAIL" start="2026-04-08T01:07:55.882178" elapsed="0.016793">Dictionary does not contain key 's1'.</status>
</for>
<doc>Verifies all switches are connected to all cluster nodes</doc>
<status status="FAIL" start="2026-04-08T01:07:55.789271" elapsed="0.109791">Dictionary does not contain key 's1'.</status>
</kw>
<kw name="Check All Switches Connected To All Cluster Nodes">
<kw name="Get Ovsdb Data" owner="OvsManager">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:07:56.904186" level="INFO">sh ovs-vsctl list Bridge</msg>
<arg>${lcmd_prefix} ${SH_BR_CMD}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:07:56.901571" elapsed="0.002720"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-08T01:07:56.952136" level="INFO">_uuid               : b1f3a25e-4d19-465f-912b-17fe7b1acbdb
auto_attach         : []
controller          : [419e3e41-ddbb-4be3-b539-f4d045a9bbd9, 740cc856-2b97-4888-820d-bf0f9d99a501, bbb4531e-5733-4157-b3f6-ea7bf10a308b]
datapath_id         : "0000000000000001"
datapath_type       : ""
datapath_version    : "&lt;unknown&gt;"
external_ids        : {}
fail_mode           : standalone
flood_vlans         : []
flow_tables         : {}
ipfix               : []
mcast_snooping_enable: false
mirrors             : []
name                : s1
netflow             : []
other_config        : {datapath-id="0000000000000001", disable-in-band="true", dp-desc=s1}
ports               : [079fa24c-466d-4b78-b64c-7669ebd0e515, 9e99a58c-a78c-4b0a-b18c-2ef2b895c497]
protocols           : [OpenFlow13]
rstp_enable         : false
rstp_status         : {}
sflow               : []
status              : {}
stp_enable          : false
mininet&gt;</msg>
<msg time="2026-04-08T01:07:56.952357" level="INFO">${brstdout} = _uuid               : b1f3a25e-4d19-465f-912b-17fe7b1acbdb
auto_attach         : []
controller          : [419e3e41-ddbb-4be3-b539-f4d045a9bbd9, 740cc856-2b97-4888-820d-bf0f9d99a501, bbb4531e-5733-4...</msg>
<var>${brstdout}</var>
<arg>${lprompt}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-08T01:07:56.904540" elapsed="0.047845"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:07:56.952931" level="INFO">_uuid               : b1f3a25e-4d19-465f-912b-17fe7b1acbdb
auto_attach         : []
controller          : [419e3e41-ddbb-4be3-b539-f4d045a9bbd9, 740cc856-2b97-4888-820d-bf0f9d99a501, bbb4531e-5733-4157-b3f6-ea7bf10a308b]
datapath_id         : "0000000000000001"
datapath_type       : ""
datapath_version    : "&lt;unknown&gt;"
external_ids        : {}
fail_mode           : standalone
flood_vlans         : []
flow_tables         : {}
ipfix               : []
mcast_snooping_enable: false
mirrors             : []
name                : s1
netflow             : []
other_config        : {datapath-id="0000000000000001", disable-in-band="true", dp-desc=s1}
ports               : [079fa24c-466d-4b78-b64c-7669ebd0e515, 9e99a58c-a78c-4b0a-b18c-2ef2b895c497]
protocols           : [OpenFlow13]
rstp_enable         : false
rstp_status         : {}
sflow               : []
status              : {}
stp_enable          : false
mininet&gt;</msg>
<arg>${brstdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:07:56.952634" elapsed="0.000354"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:07:56.960637" level="INFO">sh ovs-vsctl list Controller</msg>
<arg>${lcmd_prefix} ${SH_CNTL_CMD}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:07:56.953154" elapsed="0.007539"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-08T01:07:56.978792" level="INFO">_uuid               : 419e3e41-ddbb-4be3-b539-f4d045a9bbd9
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : false
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : []
status              : {last_error="Connection refused", sec_since_disconnect="1", state=BACKOFF}
target              : "tcp:10.30.170.48:6654"
type                : []

_uuid               : 740cc856-2b97-4888-820d-bf0f9d99a501
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : false
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : []
status              : {last_error="Connection refused", sec_since_disconnect="1", state=BACKOFF}
target              : "tcp:10.30.170.131:6654"
type                : []

_uuid               : bbb4531e-5733-4157-b3f6-ea7bf10a308b
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : false
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : []
status              : {last_error="Connection refused", sec_since_disconnect="1", state=BACKOFF}
target              : "tcp:10.30.171.110:6654"
type                : []
mininet&gt;</msg>
<msg time="2026-04-08T01:07:56.978912" level="INFO">${cntlstdout} = _uuid               : 419e3e41-ddbb-4be3-b539-f4d045a9bbd9
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
exter...</msg>
<var>${cntlstdout}</var>
<arg>${lprompt}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-08T01:07:56.960862" elapsed="0.018078"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:07:56.979451" level="INFO">_uuid               : 419e3e41-ddbb-4be3-b539-f4d045a9bbd9
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : false
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : []
status              : {last_error="Connection refused", sec_since_disconnect="1", state=BACKOFF}
target              : "tcp:10.30.170.48:6654"
type                : []

_uuid               : 740cc856-2b97-4888-820d-bf0f9d99a501
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : false
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : []
status              : {last_error="Connection refused", sec_since_disconnect="1", state=BACKOFF}
target              : "tcp:10.30.170.131:6654"
type                : []

_uuid               : bbb4531e-5733-4157-b3f6-ea7bf10a308b
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : false
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : []
status              : {last_error="Connection refused", sec_since_disconnect="1", state=BACKOFF}
target              : "tcp:10.30.171.110:6654"
type                : []
mininet&gt;</msg>
<arg>${cntlstdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:07:56.979180" elapsed="0.000333"/>
</kw>
<kw name="Parse" owner="VsctlListParser">
<msg time="2026-04-08T01:07:56.980146" level="INFO">_uuid:b1f3a25e-4d19-465f-912b-17fe7b1acbdb
auto_attach:[]
controller:[419e3e41-ddbb-4be3-b539-f4d045a9bbd9,740cc856-2b97-4888-820d-bf0f9d99a501,bbb4531e-5733-4157-b3f6-ea7bf10a308b]
datapath_id:"0000000000000001"
datapath_type:""
datapath_version:"&lt;unknown&gt;"
external_ids:{}
fail_mode:standalone
flood_vlans:[]
flow_tables:{}
ipfix:[]
mcast_snooping_enable:false
mirrors:[]
name:s1
netflow:[]
other_config:{datapath-id="0000000000000001",disable-in-band="true",dp-desc=s1}
ports:[079fa24c-466d-4b78-b64c-7669ebd0e515,9e99a58c-a78c-4b0a-b18c-2ef2b895c497]
protocols:[OpenFlow13]
rstp_enable:false
rstp_status:{}
sflow:[]
status:{}
stp_enable:false
_uuid:419e3e41-ddbb-4be3-b539-f4d045a9bbd9
connection_mode:[]
controller_burst_limit:[]
controller_queue_size:[]
controller_rate_limit:[]
enable_async_messages:[]
external_ids:{}
inactivity_probe:[]
is_connected:false
local_gateway:[]
local_ip:[]
local_netmask:[]
max_backoff:[]
other_config:{}
role:[]
status:{last_error="Connectionrefused",sec_since_disconnect="1",state=BACKOFF}
target:"tcp:10.30.170.48:6654"
type:[]
_uuid:740cc856-2b97-4888-820d-bf0f9d99a501
connection_mode:[]
controller_burst_limit:[]
controller_queue_size:[]
controller_rate_limit:[]
enable_async_messages:[]
external_ids:{}
inactivity_probe:[]
is_connected:false
local_gateway:[]
local_ip:[]
local_netmask:[]
max_backoff:[]
other_config:{}
role:[]
status:{last_error="Connectionrefused",sec_since_disconnect="1",state=BACKOFF}
target:"tcp:10.30.170.131:6654"
type:[]
_uuid:bbb4531e-5733-4157-b3f6-ea7bf10a308b
connection_mode:[]
controller_burst_limit:[]
controller_queue_size:[]
controller_rate_limit:[]
enable_async_messages:[]
external_ids:{}
inactivity_probe:[]
is_connected:false
local_gateway:[]
local_ip:[]
local_netmask:[]
max_backoff:[]
other_config:{}
role:[]
status:{last_error="Connectionrefused",sec_since_disconnect="1",state=BACKOFF}
target:"tcp:10.30.171.110:6654"
type:[]</msg>
<msg time="2026-04-08T01:07:56.980346" level="INFO">${data} = {'': {'_uuid': 'b1f3a25e-4d19-465f-912b-17fe7b1acbdb', 'auto_attach': '[]', 'controller': {'10.30.170.48': {'_uuid': '419e3e41-ddbb-4be3-b539-f4d045a9bbd9', 'connection_mode': '[]', 'controller_burst_...</msg>
<msg time="2026-04-08T01:07:56.980403" level="INFO">${bridegs} = {'b1f3a25e-4d19-465f-912b-17fe7b1acbdb': {'_uuid': 'b1f3a25e-4d19-465f-912b-17fe7b1acbdb', 'auto_attach': '[]', 'controller': '[419e3e41-ddbb-4be3-b539-f4d045a9bbd9,740cc856-2b97-4888-820d-bf0f9d99a50...</msg>
<msg time="2026-04-08T01:07:56.980467" level="INFO">${controllers} = {'419e3e41-ddbb-4be3-b539-f4d045a9bbd9': {'_uuid': '419e3e41-ddbb-4be3-b539-f4d045a9bbd9', 'connection_mode': '[]', 'controller_burst_limit': '[]', 'controller_queue_size': '[]', 'controller_rate_limi...</msg>
<var>${data}</var>
<var>${bridegs}</var>
<var>${controllers}</var>
<arg>${brstdout}</arg>
<arg>${cntlstdout}</arg>
<doc>Produces dictionary with data for future usege</doc>
<status status="PASS" start="2026-04-08T01:07:56.979684" elapsed="0.000807"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:07:56.980976" level="INFO">{'': {'_uuid': 'b1f3a25e-4d19-465f-912b-17fe7b1acbdb', 'auto_attach': '[]', 'controller': {'10.30.170.48': {'_uuid': '419e3e41-ddbb-4be3-b539-f4d045a9bbd9', 'connection_mode': '[]', 'controller_burst_limit': '[]', 'controller_queue_size': '[]', 'controller_rate_limit': '[]', 'enable_async_messages': '[]', 'external_ids': '{}', 'inactivity_probe': '[]', 'is_connected': False, 'local_gateway': '[]', 'local_ip': '[]', 'local_netmask': '[]', 'max_backoff': '[]', 'other_config': '{}', 'role': '[]', 'status': '{last_error="Connectionrefused",sec_since_disconnect="1",state=BACKOFF}', 'target': '"tcp:10.30.170.48:6654"', 'type': '[]'}, '10.30.170.131': {'_uuid': '740cc856-2b97-4888-820d-bf0f9d99a501', 'connection_mode': '[]', 'controller_burst_limit': '[]', 'controller_queue_size': '[]', 'controller_rate_limit': '[]', 'enable_async_messages': '[]', 'external_ids': '{}', 'inactivity_probe': '[]', 'is_connected': False, 'local_gateway': '[]', 'local_ip': '[]', 'local_netmask': '[]', 'max_backoff': '[]', 'other_config': '{}', 'role': '[]', 'status': '{last_error="Connectionrefused",sec_since_disconnect="1",state=BACKOFF}', 'target': '"tcp:10.30.170.131:6654"', 'type': '[]'}, '10.30.171.110': {'_uuid': 'bbb4531e-5733-4157-b3f6-ea7bf10a308b', 'connection_mode': '[]', 'controller_burst_limit': '[]', 'controller_queue_size': '[]', 'controller_rate_limit': '[]', 'enable_async_messages': '[]', 'external_ids': '{}', 'inactivity_probe': '[]', 'is_connected': False, 'local_gateway': '[]', 'local_ip': '[]', 'local_netmask': '[]', 'max_backoff': '[]', 'other_config': '{}', 'role': '[]', 'status': '{last_error="Connectionrefused",sec_since_disconnect="1",state=BACKOFF}', 'target': '"tcp:10.30.171.110:6654"', 'type': '[]'}}, 'datapath_id': '"0000000000000001"', 'datapath_type': '""', 'datapath_version': '"&lt;unknown&gt;"', 'external_ids': '{}', 'fail_mode': 'standalone', 'flood_vlans': '[]', 'flow_tables': '{}', 'ipfix': '[]', 'mcast_snooping_enable': 'false', 'mirrors': '[]', 'name': 's1', 'netflow': '[]', 'other_config': '{datapath-id="0000000000000001",disable-in-band="true",dp-desc=s1}', 'ports': '[079fa24c-466d-4b78-b64c-7669ebd0e515,9e99a58c-a78c-4b0a-b18c-2ef2b895c497]', 'protocols': '[OpenFlow13]', 'rstp_enable': 'false', 'rstp_status': '{}', 'sflow': '[]', 'status': '{}', 'stp_enable': 'false'}}</msg>
<arg>${data}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:07:56.980688" elapsed="0.000351"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-08T01:07:56.981666" level="INFO">${ovs_switch_data} = {'': {'_uuid': 'b1f3a25e-4d19-465f-912b-17fe7b1acbdb', 'auto_attach': '[]', 'controller': {'10.30.170.48': {'_uuid': '419e3e41-ddbb-4be3-b539-f4d045a9bbd9', 'connection_mode': '[]', 'controller_burst_...</msg>
<arg>${ovs_switch_data}</arg>
<arg>${data}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-08T01:07:56.981230" elapsed="0.000480"/>
</kw>
<return>
<value>${data}</value>
<status status="PASS" start="2026-04-08T01:07:56.981773" elapsed="0.000043"/>
</return>
<doc>Gets ovs data and parse them.</doc>
<status status="PASS" start="2026-04-08T01:07:56.900846" elapsed="0.081071"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:07:56.982686" level="INFO">${sid} = 1</msg>
<var>${sid}</var>
<arg>${i}+1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:07:56.982354" elapsed="0.000359"/>
</kw>
<kw name="Should Be Connected" owner="OvsManager">
<kw name="OvsManager__Is_Connected" owner="OvsManager">
<if>
<branch type="IF" condition="${update_data}==${True}">
<kw name="Get Ovsdb Data" owner="OvsManager">
<doc>Gets ovs data and parse them.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:56.984277" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:07:56.983938" elapsed="0.000394"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:56.983917" elapsed="0.000440"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:07:56.984726" level="FAIL">Dictionary does not contain key 's1'.</msg>
<var>${bridge}</var>
<arg>${ovs_switch_data}</arg>
<arg>${switch}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="FAIL" start="2026-04-08T01:07:56.984510" elapsed="0.000315">Dictionary does not contain key 's1'.</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${cntls}</var>
<arg>${bridge}</arg>
<arg>controller</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:56.985003" elapsed="0.000021"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${cntl}</var>
<arg>${cntls}</arg>
<arg>${controller}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:56.985211" elapsed="0.000023"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${connected}</var>
<arg>${cntl}</arg>
<arg>is_connected</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:56.985393" elapsed="0.000019"/>
</kw>
<return>
<value>${connected}</value>
<status status="NOT RUN" start="2026-04-08T01:07:56.985457" elapsed="0.000016"/>
</return>
<kw name="Execute OvsVsctl Show Command" owner="OvsManager" type="TEARDOWN">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:07:56.987876" level="INFO">sh ovs-vsctl show</msg>
<arg>${lcmd_prefix} ovs-vsctl show</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:07:56.986321" elapsed="0.001609"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-08T01:07:56.996910" level="INFO">9a5df812-eb49-4477-a37e-2d464c02791d
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.48:6654"
        Controller "tcp:10.30.170.131:6654"
        Controller "tcp:10.30.171.110:6654"
        fail_mode: standalone
        Port s1
            Interface s1
                type: internal
        Port s1-eth1
            Interface s1-eth1
    ovs_version: "2.17.11"
mininet&gt;</msg>
<msg time="2026-04-08T01:07:56.997002" level="INFO">${output} = 9a5df812-eb49-4477-a37e-2d464c02791d
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.48:6654"
        Controller "tcp:10.30.170.131:6654"
        Controller "tcp:10.30.171...</msg>
<var>${output}</var>
<arg>${lprompt}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-08T01:07:56.988094" elapsed="0.008934"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:07:56.997717" level="INFO">9a5df812-eb49-4477-a37e-2d464c02791d
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.48:6654"
        Controller "tcp:10.30.170.131:6654"
        Controller "tcp:10.30.171.110:6654"
        fail_mode: standalone
        Port s1
            Interface s1
                type: internal
        Port s1-eth1
            Interface s1-eth1
    ovs_version: "2.17.11"
mininet&gt;</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:07:56.997434" elapsed="0.000384"/>
</kw>
<doc>Executes ovs-vsctl show command and returns stdout, no check nor change is performed</doc>
<status status="PASS" start="2026-04-08T01:07:56.985988" elapsed="0.011888"/>
</kw>
<var>${connected}</var>
<arg>${switch}</arg>
<arg>${controller}</arg>
<arg>update_data=${update_data}</arg>
<doc>Return is_connected boolean value</doc>
<status status="FAIL" start="2026-04-08T01:07:56.983569" elapsed="0.014381">Dictionary does not contain key 's1'.</status>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${connected}</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:56.998131" elapsed="0.000021"/>
</kw>
<arg>s${sid}</arg>
<arg>${ODL_SYSTEM_1_IP}</arg>
<arg>update_data=${False}</arg>
<doc>Check if the switch is connected</doc>
<status status="FAIL" start="2026-04-08T01:07:56.982933" elapsed="0.015321">Dictionary does not contain key 's1'.</status>
</kw>
<kw name="Should Be Connected" owner="OvsManager">
<arg>s${sid}</arg>
<arg>${ODL_SYSTEM_2_IP}</arg>
<arg>update_data=${False}</arg>
<doc>Check if the switch is connected</doc>
<status status="NOT RUN" start="2026-04-08T01:07:56.998475" elapsed="0.000023"/>
</kw>
<kw name="Should Be Connected" owner="OvsManager">
<arg>s${sid}</arg>
<arg>${ODL_SYSTEM_3_IP}</arg>
<arg>update_data=${False}</arg>
<doc>Check if the switch is connected</doc>
<status status="NOT RUN" start="2026-04-08T01:07:56.998700" elapsed="0.000023"/>
</kw>
<var name="${i}">0</var>
<status status="FAIL" start="2026-04-08T01:07:56.982202" elapsed="0.016574">Dictionary does not contain key 's1'.</status>
</iter>
<var>${i}</var>
<value>0</value>
<value>${SWITCHES}</value>
<status status="FAIL" start="2026-04-08T01:07:56.981971" elapsed="0.016861">Dictionary does not contain key 's1'.</status>
</for>
<doc>Verifies all switches are connected to all cluster nodes</doc>
<status status="FAIL" start="2026-04-08T01:07:56.899772" elapsed="0.099150">Dictionary does not contain key 's1'.</status>
</kw>
<kw name="Check All Switches Connected To All Cluster Nodes">
<kw name="Get Ovsdb Data" owner="OvsManager">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:07:58.004760" level="INFO">sh ovs-vsctl list Bridge</msg>
<arg>${lcmd_prefix} ${SH_BR_CMD}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:07:58.001599" elapsed="0.003320"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-08T01:07:58.045178" level="INFO">_uuid               : b1f3a25e-4d19-465f-912b-17fe7b1acbdb
auto_attach         : []
controller          : [419e3e41-ddbb-4be3-b539-f4d045a9bbd9, 740cc856-2b97-4888-820d-bf0f9d99a501, bbb4531e-5733-4157-b3f6-ea7bf10a308b]
datapath_id         : "0000000000000001"
datapath_type       : ""
datapath_version    : "&lt;unknown&gt;"
external_ids        : {}
fail_mode           : standalone
flood_vlans         : []
flow_tables         : {}
ipfix               : []
mcast_snooping_enable: false
mirrors             : []
name                : s1
netflow             : []
other_config        : {datapath-id="0000000000000001", disable-in-band="true", dp-desc=s1}
ports               : [079fa24c-466d-4b78-b64c-7669ebd0e515, 9e99a58c-a78c-4b0a-b18c-2ef2b895c497]
protocols           : [OpenFlow13]
rstp_enable         : false
rstp_status         : {}
sflow               : []
status              : {}
stp_enable          : false
mininet&gt;</msg>
<msg time="2026-04-08T01:07:58.045292" level="INFO">${brstdout} = _uuid               : b1f3a25e-4d19-465f-912b-17fe7b1acbdb
auto_attach         : []
controller          : [419e3e41-ddbb-4be3-b539-f4d045a9bbd9, 740cc856-2b97-4888-820d-bf0f9d99a501, bbb4531e-5733-4...</msg>
<var>${brstdout}</var>
<arg>${lprompt}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-08T01:07:58.005356" elapsed="0.039963"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:07:58.045857" level="INFO">_uuid               : b1f3a25e-4d19-465f-912b-17fe7b1acbdb
auto_attach         : []
controller          : [419e3e41-ddbb-4be3-b539-f4d045a9bbd9, 740cc856-2b97-4888-820d-bf0f9d99a501, bbb4531e-5733-4157-b3f6-ea7bf10a308b]
datapath_id         : "0000000000000001"
datapath_type       : ""
datapath_version    : "&lt;unknown&gt;"
external_ids        : {}
fail_mode           : standalone
flood_vlans         : []
flow_tables         : {}
ipfix               : []
mcast_snooping_enable: false
mirrors             : []
name                : s1
netflow             : []
other_config        : {datapath-id="0000000000000001", disable-in-band="true", dp-desc=s1}
ports               : [079fa24c-466d-4b78-b64c-7669ebd0e515, 9e99a58c-a78c-4b0a-b18c-2ef2b895c497]
protocols           : [OpenFlow13]
rstp_enable         : false
rstp_status         : {}
sflow               : []
status              : {}
stp_enable          : false
mininet&gt;</msg>
<arg>${brstdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:07:58.045564" elapsed="0.000348"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:07:58.047977" level="INFO">sh ovs-vsctl list Controller</msg>
<arg>${lcmd_prefix} ${SH_CNTL_CMD}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:07:58.046072" elapsed="0.001959"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-08T01:07:58.070225" level="INFO">_uuid               : 419e3e41-ddbb-4be3-b539-f4d045a9bbd9
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : false
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : []
status              : {last_error="Connection refused", sec_since_disconnect="1", state=BACKOFF}
target              : "tcp:10.30.170.48:6654"
type                : []

_uuid               : 740cc856-2b97-4888-820d-bf0f9d99a501
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : false
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : []
status              : {last_error="Connection refused", sec_since_disconnect="1", state=BACKOFF}
target              : "tcp:10.30.170.131:6654"
type                : []

_uuid               : bbb4531e-5733-4157-b3f6-ea7bf10a308b
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : false
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : []
status              : {last_error="Connection refused", sec_since_disconnect="1", state=BACKOFF}
target              : "tcp:10.30.171.110:6654"
type                : []
mininet&gt;</msg>
<msg time="2026-04-08T01:07:58.070332" level="INFO">${cntlstdout} = _uuid               : 419e3e41-ddbb-4be3-b539-f4d045a9bbd9
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
exter...</msg>
<var>${cntlstdout}</var>
<arg>${lprompt}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-08T01:07:58.048217" elapsed="0.022141"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:07:58.070866" level="INFO">_uuid               : 419e3e41-ddbb-4be3-b539-f4d045a9bbd9
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : false
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : []
status              : {last_error="Connection refused", sec_since_disconnect="1", state=BACKOFF}
target              : "tcp:10.30.170.48:6654"
type                : []

_uuid               : 740cc856-2b97-4888-820d-bf0f9d99a501
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : false
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : []
status              : {last_error="Connection refused", sec_since_disconnect="1", state=BACKOFF}
target              : "tcp:10.30.170.131:6654"
type                : []

_uuid               : bbb4531e-5733-4157-b3f6-ea7bf10a308b
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : false
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : []
status              : {last_error="Connection refused", sec_since_disconnect="1", state=BACKOFF}
target              : "tcp:10.30.171.110:6654"
type                : []
mininet&gt;</msg>
<arg>${cntlstdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:07:58.070616" elapsed="0.000312"/>
</kw>
<kw name="Parse" owner="VsctlListParser">
<msg time="2026-04-08T01:07:58.071567" level="INFO">_uuid:b1f3a25e-4d19-465f-912b-17fe7b1acbdb
auto_attach:[]
controller:[419e3e41-ddbb-4be3-b539-f4d045a9bbd9,740cc856-2b97-4888-820d-bf0f9d99a501,bbb4531e-5733-4157-b3f6-ea7bf10a308b]
datapath_id:"0000000000000001"
datapath_type:""
datapath_version:"&lt;unknown&gt;"
external_ids:{}
fail_mode:standalone
flood_vlans:[]
flow_tables:{}
ipfix:[]
mcast_snooping_enable:false
mirrors:[]
name:s1
netflow:[]
other_config:{datapath-id="0000000000000001",disable-in-band="true",dp-desc=s1}
ports:[079fa24c-466d-4b78-b64c-7669ebd0e515,9e99a58c-a78c-4b0a-b18c-2ef2b895c497]
protocols:[OpenFlow13]
rstp_enable:false
rstp_status:{}
sflow:[]
status:{}
stp_enable:false
_uuid:419e3e41-ddbb-4be3-b539-f4d045a9bbd9
connection_mode:[]
controller_burst_limit:[]
controller_queue_size:[]
controller_rate_limit:[]
enable_async_messages:[]
external_ids:{}
inactivity_probe:[]
is_connected:false
local_gateway:[]
local_ip:[]
local_netmask:[]
max_backoff:[]
other_config:{}
role:[]
status:{last_error="Connectionrefused",sec_since_disconnect="1",state=BACKOFF}
target:"tcp:10.30.170.48:6654"
type:[]
_uuid:740cc856-2b97-4888-820d-bf0f9d99a501
connection_mode:[]
controller_burst_limit:[]
controller_queue_size:[]
controller_rate_limit:[]
enable_async_messages:[]
external_ids:{}
inactivity_probe:[]
is_connected:false
local_gateway:[]
local_ip:[]
local_netmask:[]
max_backoff:[]
other_config:{}
role:[]
status:{last_error="Connectionrefused",sec_since_disconnect="1",state=BACKOFF}
target:"tcp:10.30.170.131:6654"
type:[]
_uuid:bbb4531e-5733-4157-b3f6-ea7bf10a308b
connection_mode:[]
controller_burst_limit:[]
controller_queue_size:[]
controller_rate_limit:[]
enable_async_messages:[]
external_ids:{}
inactivity_probe:[]
is_connected:false
local_gateway:[]
local_ip:[]
local_netmask:[]
max_backoff:[]
other_config:{}
role:[]
status:{last_error="Connectionrefused",sec_since_disconnect="1",state=BACKOFF}
target:"tcp:10.30.171.110:6654"
type:[]</msg>
<msg time="2026-04-08T01:07:58.071721" level="INFO">${data} = {'': {'_uuid': 'b1f3a25e-4d19-465f-912b-17fe7b1acbdb', 'auto_attach': '[]', 'controller': {'10.30.170.48': {'_uuid': '419e3e41-ddbb-4be3-b539-f4d045a9bbd9', 'connection_mode': '[]', 'controller_burst_...</msg>
<msg time="2026-04-08T01:07:58.071778" level="INFO">${bridegs} = {'b1f3a25e-4d19-465f-912b-17fe7b1acbdb': {'_uuid': 'b1f3a25e-4d19-465f-912b-17fe7b1acbdb', 'auto_attach': '[]', 'controller': '[419e3e41-ddbb-4be3-b539-f4d045a9bbd9,740cc856-2b97-4888-820d-bf0f9d99a50...</msg>
<msg time="2026-04-08T01:07:58.071841" level="INFO">${controllers} = {'419e3e41-ddbb-4be3-b539-f4d045a9bbd9': {'_uuid': '419e3e41-ddbb-4be3-b539-f4d045a9bbd9', 'connection_mode': '[]', 'controller_burst_limit': '[]', 'controller_queue_size': '[]', 'controller_rate_limi...</msg>
<var>${data}</var>
<var>${bridegs}</var>
<var>${controllers}</var>
<arg>${brstdout}</arg>
<arg>${cntlstdout}</arg>
<doc>Produces dictionary with data for future usege</doc>
<status status="PASS" start="2026-04-08T01:07:58.071097" elapsed="0.000768"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:07:58.072324" level="INFO">{'': {'_uuid': 'b1f3a25e-4d19-465f-912b-17fe7b1acbdb', 'auto_attach': '[]', 'controller': {'10.30.170.48': {'_uuid': '419e3e41-ddbb-4be3-b539-f4d045a9bbd9', 'connection_mode': '[]', 'controller_burst_limit': '[]', 'controller_queue_size': '[]', 'controller_rate_limit': '[]', 'enable_async_messages': '[]', 'external_ids': '{}', 'inactivity_probe': '[]', 'is_connected': False, 'local_gateway': '[]', 'local_ip': '[]', 'local_netmask': '[]', 'max_backoff': '[]', 'other_config': '{}', 'role': '[]', 'status': '{last_error="Connectionrefused",sec_since_disconnect="1",state=BACKOFF}', 'target': '"tcp:10.30.170.48:6654"', 'type': '[]'}, '10.30.170.131': {'_uuid': '740cc856-2b97-4888-820d-bf0f9d99a501', 'connection_mode': '[]', 'controller_burst_limit': '[]', 'controller_queue_size': '[]', 'controller_rate_limit': '[]', 'enable_async_messages': '[]', 'external_ids': '{}', 'inactivity_probe': '[]', 'is_connected': False, 'local_gateway': '[]', 'local_ip': '[]', 'local_netmask': '[]', 'max_backoff': '[]', 'other_config': '{}', 'role': '[]', 'status': '{last_error="Connectionrefused",sec_since_disconnect="1",state=BACKOFF}', 'target': '"tcp:10.30.170.131:6654"', 'type': '[]'}, '10.30.171.110': {'_uuid': 'bbb4531e-5733-4157-b3f6-ea7bf10a308b', 'connection_mode': '[]', 'controller_burst_limit': '[]', 'controller_queue_size': '[]', 'controller_rate_limit': '[]', 'enable_async_messages': '[]', 'external_ids': '{}', 'inactivity_probe': '[]', 'is_connected': False, 'local_gateway': '[]', 'local_ip': '[]', 'local_netmask': '[]', 'max_backoff': '[]', 'other_config': '{}', 'role': '[]', 'status': '{last_error="Connectionrefused",sec_since_disconnect="1",state=BACKOFF}', 'target': '"tcp:10.30.171.110:6654"', 'type': '[]'}}, 'datapath_id': '"0000000000000001"', 'datapath_type': '""', 'datapath_version': '"&lt;unknown&gt;"', 'external_ids': '{}', 'fail_mode': 'standalone', 'flood_vlans': '[]', 'flow_tables': '{}', 'ipfix': '[]', 'mcast_snooping_enable': 'false', 'mirrors': '[]', 'name': 's1', 'netflow': '[]', 'other_config': '{datapath-id="0000000000000001",disable-in-band="true",dp-desc=s1}', 'ports': '[079fa24c-466d-4b78-b64c-7669ebd0e515,9e99a58c-a78c-4b0a-b18c-2ef2b895c497]', 'protocols': '[OpenFlow13]', 'rstp_enable': 'false', 'rstp_status': '{}', 'sflow': '[]', 'status': '{}', 'stp_enable': 'false'}}</msg>
<arg>${data}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:07:58.072039" elapsed="0.000348"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-08T01:07:58.072988" level="INFO">${ovs_switch_data} = {'': {'_uuid': 'b1f3a25e-4d19-465f-912b-17fe7b1acbdb', 'auto_attach': '[]', 'controller': {'10.30.170.48': {'_uuid': '419e3e41-ddbb-4be3-b539-f4d045a9bbd9', 'connection_mode': '[]', 'controller_burst_...</msg>
<arg>${ovs_switch_data}</arg>
<arg>${data}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-08T01:07:58.072560" elapsed="0.000503"/>
</kw>
<return>
<value>${data}</value>
<status status="PASS" start="2026-04-08T01:07:58.073112" elapsed="0.000042"/>
</return>
<doc>Gets ovs data and parse them.</doc>
<status status="PASS" start="2026-04-08T01:07:58.000816" elapsed="0.072454"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:07:58.074014" level="INFO">${sid} = 1</msg>
<var>${sid}</var>
<arg>${i}+1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:07:58.073686" elapsed="0.000355"/>
</kw>
<kw name="Should Be Connected" owner="OvsManager">
<kw name="OvsManager__Is_Connected" owner="OvsManager">
<if>
<branch type="IF" condition="${update_data}==${True}">
<kw name="Get Ovsdb Data" owner="OvsManager">
<doc>Gets ovs data and parse them.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:58.075563" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:07:58.075238" elapsed="0.000380"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:58.075218" elapsed="0.000439"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:07:58.076044" level="FAIL">Dictionary does not contain key 's1'.</msg>
<var>${bridge}</var>
<arg>${ovs_switch_data}</arg>
<arg>${switch}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="FAIL" start="2026-04-08T01:07:58.075819" elapsed="0.000349">Dictionary does not contain key 's1'.</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${cntls}</var>
<arg>${bridge}</arg>
<arg>controller</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:58.076346" elapsed="0.000021"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${cntl}</var>
<arg>${cntls}</arg>
<arg>${controller}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:58.076522" elapsed="0.000020"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${connected}</var>
<arg>${cntl}</arg>
<arg>is_connected</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:58.076693" elapsed="0.000019"/>
</kw>
<return>
<value>${connected}</value>
<status status="NOT RUN" start="2026-04-08T01:07:58.076756" elapsed="0.000015"/>
</return>
<kw name="Execute OvsVsctl Show Command" owner="OvsManager" type="TEARDOWN">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:07:58.078996" level="INFO">sh ovs-vsctl show</msg>
<arg>${lcmd_prefix} ovs-vsctl show</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:07:58.077346" elapsed="0.001706"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-08T01:07:58.088819" level="INFO">9a5df812-eb49-4477-a37e-2d464c02791d
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.48:6654"
        Controller "tcp:10.30.170.131:6654"
        Controller "tcp:10.30.171.110:6654"
        fail_mode: standalone
        Port s1
            Interface s1
                type: internal
        Port s1-eth1
            Interface s1-eth1
    ovs_version: "2.17.11"
mininet&gt;</msg>
<msg time="2026-04-08T01:07:58.088914" level="INFO">${output} = 9a5df812-eb49-4477-a37e-2d464c02791d
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.48:6654"
        Controller "tcp:10.30.170.131:6654"
        Controller "tcp:10.30.171...</msg>
<var>${output}</var>
<arg>${lprompt}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-08T01:07:58.079234" elapsed="0.009708"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:07:58.089598" level="INFO">9a5df812-eb49-4477-a37e-2d464c02791d
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.48:6654"
        Controller "tcp:10.30.170.131:6654"
        Controller "tcp:10.30.171.110:6654"
        fail_mode: standalone
        Port s1
            Interface s1
                type: internal
        Port s1-eth1
            Interface s1-eth1
    ovs_version: "2.17.11"
mininet&gt;</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:07:58.089346" elapsed="0.000302"/>
</kw>
<doc>Executes ovs-vsctl show command and returns stdout, no check nor change is performed</doc>
<status status="PASS" start="2026-04-08T01:07:58.077025" elapsed="0.012677"/>
</kw>
<var>${connected}</var>
<arg>${switch}</arg>
<arg>${controller}</arg>
<arg>update_data=${update_data}</arg>
<doc>Return is_connected boolean value</doc>
<status status="FAIL" start="2026-04-08T01:07:58.074858" elapsed="0.014917">Dictionary does not contain key 's1'.</status>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${connected}</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:58.089953" elapsed="0.000021"/>
</kw>
<arg>s${sid}</arg>
<arg>${ODL_SYSTEM_1_IP}</arg>
<arg>update_data=${False}</arg>
<doc>Check if the switch is connected</doc>
<status status="FAIL" start="2026-04-08T01:07:58.074279" elapsed="0.015777">Dictionary does not contain key 's1'.</status>
</kw>
<kw name="Should Be Connected" owner="OvsManager">
<arg>s${sid}</arg>
<arg>${ODL_SYSTEM_2_IP}</arg>
<arg>update_data=${False}</arg>
<doc>Check if the switch is connected</doc>
<status status="NOT RUN" start="2026-04-08T01:07:58.090294" elapsed="0.000024"/>
</kw>
<kw name="Should Be Connected" owner="OvsManager">
<arg>s${sid}</arg>
<arg>${ODL_SYSTEM_3_IP}</arg>
<arg>update_data=${False}</arg>
<doc>Check if the switch is connected</doc>
<status status="NOT RUN" start="2026-04-08T01:07:58.090520" elapsed="0.000022"/>
</kw>
<var name="${i}">0</var>
<status status="FAIL" start="2026-04-08T01:07:58.073531" elapsed="0.017065">Dictionary does not contain key 's1'.</status>
</iter>
<var>${i}</var>
<value>0</value>
<value>${SWITCHES}</value>
<status status="FAIL" start="2026-04-08T01:07:58.073323" elapsed="0.017329">Dictionary does not contain key 's1'.</status>
</for>
<doc>Verifies all switches are connected to all cluster nodes</doc>
<status status="FAIL" start="2026-04-08T01:07:57.999673" elapsed="0.091069">Dictionary does not contain key 's1'.</status>
</kw>
<kw name="Check All Switches Connected To All Cluster Nodes">
<kw name="Get Ovsdb Data" owner="OvsManager">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:07:59.096325" level="INFO">sh ovs-vsctl list Bridge</msg>
<arg>${lcmd_prefix} ${SH_BR_CMD}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:07:59.093338" elapsed="0.003129"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-08T01:07:59.143322" level="INFO">_uuid               : b1f3a25e-4d19-465f-912b-17fe7b1acbdb
auto_attach         : []
controller          : [419e3e41-ddbb-4be3-b539-f4d045a9bbd9, 740cc856-2b97-4888-820d-bf0f9d99a501, bbb4531e-5733-4157-b3f6-ea7bf10a308b]
datapath_id         : "0000000000000001"
datapath_type       : ""
datapath_version    : "&lt;unknown&gt;"
external_ids        : {}
fail_mode           : standalone
flood_vlans         : []
flow_tables         : {}
ipfix               : []
mcast_snooping_enable: false
mirrors             : []
name                : s1
netflow             : []
other_config        : {datapath-id="0000000000000001", disable-in-band="true", dp-desc=s1}
ports               : [079fa24c-466d-4b78-b64c-7669ebd0e515, 9e99a58c-a78c-4b0a-b18c-2ef2b895c497]
protocols           : [OpenFlow13]
rstp_enable         : false
rstp_status         : {}
sflow               : []
status              : {}
stp_enable          : false
mininet&gt;</msg>
<msg time="2026-04-08T01:07:59.143524" level="INFO">${brstdout} = _uuid               : b1f3a25e-4d19-465f-912b-17fe7b1acbdb
auto_attach         : []
controller          : [419e3e41-ddbb-4be3-b539-f4d045a9bbd9, 740cc856-2b97-4888-820d-bf0f9d99a501, bbb4531e-5733-4...</msg>
<var>${brstdout}</var>
<arg>${lprompt}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-08T01:07:59.096853" elapsed="0.046699"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:07:59.144120" level="INFO">_uuid               : b1f3a25e-4d19-465f-912b-17fe7b1acbdb
auto_attach         : []
controller          : [419e3e41-ddbb-4be3-b539-f4d045a9bbd9, 740cc856-2b97-4888-820d-bf0f9d99a501, bbb4531e-5733-4157-b3f6-ea7bf10a308b]
datapath_id         : "0000000000000001"
datapath_type       : ""
datapath_version    : "&lt;unknown&gt;"
external_ids        : {}
fail_mode           : standalone
flood_vlans         : []
flow_tables         : {}
ipfix               : []
mcast_snooping_enable: false
mirrors             : []
name                : s1
netflow             : []
other_config        : {datapath-id="0000000000000001", disable-in-band="true", dp-desc=s1}
ports               : [079fa24c-466d-4b78-b64c-7669ebd0e515, 9e99a58c-a78c-4b0a-b18c-2ef2b895c497]
protocols           : [OpenFlow13]
rstp_enable         : false
rstp_status         : {}
sflow               : []
status              : {}
stp_enable          : false
mininet&gt;</msg>
<arg>${brstdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:07:59.143812" elapsed="0.000382"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:07:59.145890" level="INFO">sh ovs-vsctl list Controller</msg>
<arg>${lcmd_prefix} ${SH_CNTL_CMD}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:07:59.144363" elapsed="0.001584"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-08T01:07:59.166092" level="INFO">_uuid               : 419e3e41-ddbb-4be3-b539-f4d045a9bbd9
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : false
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : []
status              : {last_error="Connection refused", sec_since_disconnect="6", state=BACKOFF}
target              : "tcp:10.30.170.48:6654"
type                : []

_uuid               : 740cc856-2b97-4888-820d-bf0f9d99a501
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : false
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : []
status              : {last_error="Connection refused", sec_since_disconnect="6", state=BACKOFF}
target              : "tcp:10.30.170.131:6654"
type                : []

_uuid               : bbb4531e-5733-4157-b3f6-ea7bf10a308b
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : false
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : []
status              : {last_error="Connection refused", sec_since_disconnect="6", state=BACKOFF}
target              : "tcp:10.30.171.110:6654"
type                : []
mininet&gt;</msg>
<msg time="2026-04-08T01:07:59.166221" level="INFO">${cntlstdout} = _uuid               : 419e3e41-ddbb-4be3-b539-f4d045a9bbd9
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
exter...</msg>
<var>${cntlstdout}</var>
<arg>${lprompt}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-08T01:07:59.146118" elapsed="0.020130"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:07:59.166698" level="INFO">_uuid               : 419e3e41-ddbb-4be3-b539-f4d045a9bbd9
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : false
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : []
status              : {last_error="Connection refused", sec_since_disconnect="6", state=BACKOFF}
target              : "tcp:10.30.170.48:6654"
type                : []

_uuid               : 740cc856-2b97-4888-820d-bf0f9d99a501
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : false
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : []
status              : {last_error="Connection refused", sec_since_disconnect="6", state=BACKOFF}
target              : "tcp:10.30.170.131:6654"
type                : []

_uuid               : bbb4531e-5733-4157-b3f6-ea7bf10a308b
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : false
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : []
status              : {last_error="Connection refused", sec_since_disconnect="6", state=BACKOFF}
target              : "tcp:10.30.171.110:6654"
type                : []
mininet&gt;</msg>
<arg>${cntlstdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:07:59.166447" elapsed="0.000312"/>
</kw>
<kw name="Parse" owner="VsctlListParser">
<msg time="2026-04-08T01:07:59.167402" level="INFO">_uuid:b1f3a25e-4d19-465f-912b-17fe7b1acbdb
auto_attach:[]
controller:[419e3e41-ddbb-4be3-b539-f4d045a9bbd9,740cc856-2b97-4888-820d-bf0f9d99a501,bbb4531e-5733-4157-b3f6-ea7bf10a308b]
datapath_id:"0000000000000001"
datapath_type:""
datapath_version:"&lt;unknown&gt;"
external_ids:{}
fail_mode:standalone
flood_vlans:[]
flow_tables:{}
ipfix:[]
mcast_snooping_enable:false
mirrors:[]
name:s1
netflow:[]
other_config:{datapath-id="0000000000000001",disable-in-band="true",dp-desc=s1}
ports:[079fa24c-466d-4b78-b64c-7669ebd0e515,9e99a58c-a78c-4b0a-b18c-2ef2b895c497]
protocols:[OpenFlow13]
rstp_enable:false
rstp_status:{}
sflow:[]
status:{}
stp_enable:false
_uuid:419e3e41-ddbb-4be3-b539-f4d045a9bbd9
connection_mode:[]
controller_burst_limit:[]
controller_queue_size:[]
controller_rate_limit:[]
enable_async_messages:[]
external_ids:{}
inactivity_probe:[]
is_connected:false
local_gateway:[]
local_ip:[]
local_netmask:[]
max_backoff:[]
other_config:{}
role:[]
status:{last_error="Connectionrefused",sec_since_disconnect="6",state=BACKOFF}
target:"tcp:10.30.170.48:6654"
type:[]
_uuid:740cc856-2b97-4888-820d-bf0f9d99a501
connection_mode:[]
controller_burst_limit:[]
controller_queue_size:[]
controller_rate_limit:[]
enable_async_messages:[]
external_ids:{}
inactivity_probe:[]
is_connected:false
local_gateway:[]
local_ip:[]
local_netmask:[]
max_backoff:[]
other_config:{}
role:[]
status:{last_error="Connectionrefused",sec_since_disconnect="6",state=BACKOFF}
target:"tcp:10.30.170.131:6654"
type:[]
_uuid:bbb4531e-5733-4157-b3f6-ea7bf10a308b
connection_mode:[]
controller_burst_limit:[]
controller_queue_size:[]
controller_rate_limit:[]
enable_async_messages:[]
external_ids:{}
inactivity_probe:[]
is_connected:false
local_gateway:[]
local_ip:[]
local_netmask:[]
max_backoff:[]
other_config:{}
role:[]
status:{last_error="Connectionrefused",sec_since_disconnect="6",state=BACKOFF}
target:"tcp:10.30.171.110:6654"
type:[]</msg>
<msg time="2026-04-08T01:07:59.167579" level="INFO">${data} = {'': {'_uuid': 'b1f3a25e-4d19-465f-912b-17fe7b1acbdb', 'auto_attach': '[]', 'controller': {'10.30.170.48': {'_uuid': '419e3e41-ddbb-4be3-b539-f4d045a9bbd9', 'connection_mode': '[]', 'controller_burst_...</msg>
<msg time="2026-04-08T01:07:59.167636" level="INFO">${bridegs} = {'b1f3a25e-4d19-465f-912b-17fe7b1acbdb': {'_uuid': 'b1f3a25e-4d19-465f-912b-17fe7b1acbdb', 'auto_attach': '[]', 'controller': '[419e3e41-ddbb-4be3-b539-f4d045a9bbd9,740cc856-2b97-4888-820d-bf0f9d99a50...</msg>
<msg time="2026-04-08T01:07:59.167703" level="INFO">${controllers} = {'419e3e41-ddbb-4be3-b539-f4d045a9bbd9': {'_uuid': '419e3e41-ddbb-4be3-b539-f4d045a9bbd9', 'connection_mode': '[]', 'controller_burst_limit': '[]', 'controller_queue_size': '[]', 'controller_rate_limi...</msg>
<var>${data}</var>
<var>${bridegs}</var>
<var>${controllers}</var>
<arg>${brstdout}</arg>
<arg>${cntlstdout}</arg>
<doc>Produces dictionary with data for future usege</doc>
<status status="PASS" start="2026-04-08T01:07:59.166922" elapsed="0.000805"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:07:59.168185" level="INFO">{'': {'_uuid': 'b1f3a25e-4d19-465f-912b-17fe7b1acbdb', 'auto_attach': '[]', 'controller': {'10.30.170.48': {'_uuid': '419e3e41-ddbb-4be3-b539-f4d045a9bbd9', 'connection_mode': '[]', 'controller_burst_limit': '[]', 'controller_queue_size': '[]', 'controller_rate_limit': '[]', 'enable_async_messages': '[]', 'external_ids': '{}', 'inactivity_probe': '[]', 'is_connected': False, 'local_gateway': '[]', 'local_ip': '[]', 'local_netmask': '[]', 'max_backoff': '[]', 'other_config': '{}', 'role': '[]', 'status': '{last_error="Connectionrefused",sec_since_disconnect="6",state=BACKOFF}', 'target': '"tcp:10.30.170.48:6654"', 'type': '[]'}, '10.30.170.131': {'_uuid': '740cc856-2b97-4888-820d-bf0f9d99a501', 'connection_mode': '[]', 'controller_burst_limit': '[]', 'controller_queue_size': '[]', 'controller_rate_limit': '[]', 'enable_async_messages': '[]', 'external_ids': '{}', 'inactivity_probe': '[]', 'is_connected': False, 'local_gateway': '[]', 'local_ip': '[]', 'local_netmask': '[]', 'max_backoff': '[]', 'other_config': '{}', 'role': '[]', 'status': '{last_error="Connectionrefused",sec_since_disconnect="6",state=BACKOFF}', 'target': '"tcp:10.30.170.131:6654"', 'type': '[]'}, '10.30.171.110': {'_uuid': 'bbb4531e-5733-4157-b3f6-ea7bf10a308b', 'connection_mode': '[]', 'controller_burst_limit': '[]', 'controller_queue_size': '[]', 'controller_rate_limit': '[]', 'enable_async_messages': '[]', 'external_ids': '{}', 'inactivity_probe': '[]', 'is_connected': False, 'local_gateway': '[]', 'local_ip': '[]', 'local_netmask': '[]', 'max_backoff': '[]', 'other_config': '{}', 'role': '[]', 'status': '{last_error="Connectionrefused",sec_since_disconnect="6",state=BACKOFF}', 'target': '"tcp:10.30.171.110:6654"', 'type': '[]'}}, 'datapath_id': '"0000000000000001"', 'datapath_type': '""', 'datapath_version': '"&lt;unknown&gt;"', 'external_ids': '{}', 'fail_mode': 'standalone', 'flood_vlans': '[]', 'flow_tables': '{}', 'ipfix': '[]', 'mcast_snooping_enable': 'false', 'mirrors': '[]', 'name': 's1', 'netflow': '[]', 'other_config': '{datapath-id="0000000000000001",disable-in-band="true",dp-desc=s1}', 'ports': '[079fa24c-466d-4b78-b64c-7669ebd0e515,9e99a58c-a78c-4b0a-b18c-2ef2b895c497]', 'protocols': '[OpenFlow13]', 'rstp_enable': 'false', 'rstp_status': '{}', 'sflow': '[]', 'status': '{}', 'stp_enable': 'false'}}</msg>
<arg>${data}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:07:59.167900" elapsed="0.000352"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-08T01:07:59.168870" level="INFO">${ovs_switch_data} = {'': {'_uuid': 'b1f3a25e-4d19-465f-912b-17fe7b1acbdb', 'auto_attach': '[]', 'controller': {'10.30.170.48': {'_uuid': '419e3e41-ddbb-4be3-b539-f4d045a9bbd9', 'connection_mode': '[]', 'controller_burst_...</msg>
<arg>${ovs_switch_data}</arg>
<arg>${data}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-08T01:07:59.168427" elapsed="0.000487"/>
</kw>
<return>
<value>${data}</value>
<status status="PASS" start="2026-04-08T01:07:59.168963" elapsed="0.000047"/>
</return>
<doc>Gets ovs data and parse them.</doc>
<status status="PASS" start="2026-04-08T01:07:59.092595" elapsed="0.076516"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:07:59.169904" level="INFO">${sid} = 1</msg>
<var>${sid}</var>
<arg>${i}+1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:07:59.169557" elapsed="0.000373"/>
</kw>
<kw name="Should Be Connected" owner="OvsManager">
<kw name="OvsManager__Is_Connected" owner="OvsManager">
<if>
<branch type="IF" condition="${update_data}==${True}">
<kw name="Get Ovsdb Data" owner="OvsManager">
<doc>Gets ovs data and parse them.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:59.171493" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:07:59.171144" elapsed="0.000404"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:59.171123" elapsed="0.000450"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:07:59.171946" level="FAIL">Dictionary does not contain key 's1'.</msg>
<var>${bridge}</var>
<arg>${ovs_switch_data}</arg>
<arg>${switch}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="FAIL" start="2026-04-08T01:07:59.171725" elapsed="0.000327">Dictionary does not contain key 's1'.</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${cntls}</var>
<arg>${bridge}</arg>
<arg>controller</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:59.172252" elapsed="0.000022"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${cntl}</var>
<arg>${cntls}</arg>
<arg>${controller}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:59.172433" elapsed="0.000020"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${connected}</var>
<arg>${cntl}</arg>
<arg>is_connected</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:59.172608" elapsed="0.000020"/>
</kw>
<return>
<value>${connected}</value>
<status status="NOT RUN" start="2026-04-08T01:07:59.172672" elapsed="0.000016"/>
</return>
<kw name="Execute OvsVsctl Show Command" owner="OvsManager" type="TEARDOWN">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:07:59.174759" level="INFO">sh ovs-vsctl show</msg>
<arg>${lcmd_prefix} ovs-vsctl show</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:07:59.173267" elapsed="0.001550"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-08T01:07:59.184457" level="INFO">9a5df812-eb49-4477-a37e-2d464c02791d
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.48:6654"
        Controller "tcp:10.30.170.131:6654"
        Controller "tcp:10.30.171.110:6654"
        fail_mode: standalone
        Port s1
            Interface s1
                type: internal
        Port s1-eth1
            Interface s1-eth1
    ovs_version: "2.17.11"
mininet&gt;</msg>
<msg time="2026-04-08T01:07:59.184554" level="INFO">${output} = 9a5df812-eb49-4477-a37e-2d464c02791d
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.48:6654"
        Controller "tcp:10.30.170.131:6654"
        Controller "tcp:10.30.171...</msg>
<var>${output}</var>
<arg>${lprompt}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-08T01:07:59.174986" elapsed="0.009595"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:07:59.185247" level="INFO">9a5df812-eb49-4477-a37e-2d464c02791d
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.48:6654"
        Controller "tcp:10.30.170.131:6654"
        Controller "tcp:10.30.171.110:6654"
        fail_mode: standalone
        Port s1
            Interface s1
                type: internal
        Port s1-eth1
            Interface s1-eth1
    ovs_version: "2.17.11"
mininet&gt;</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:07:59.184971" elapsed="0.000360"/>
</kw>
<doc>Executes ovs-vsctl show command and returns stdout, no check nor change is performed</doc>
<status status="PASS" start="2026-04-08T01:07:59.172943" elapsed="0.012444"/>
</kw>
<var>${connected}</var>
<arg>${switch}</arg>
<arg>${controller}</arg>
<arg>update_data=${update_data}</arg>
<doc>Return is_connected boolean value</doc>
<status status="FAIL" start="2026-04-08T01:07:59.170767" elapsed="0.014695">Dictionary does not contain key 's1'.</status>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${connected}</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:59.185640" elapsed="0.000021"/>
</kw>
<arg>s${sid}</arg>
<arg>${ODL_SYSTEM_1_IP}</arg>
<arg>update_data=${False}</arg>
<doc>Check if the switch is connected</doc>
<status status="FAIL" start="2026-04-08T01:07:59.170148" elapsed="0.015620">Dictionary does not contain key 's1'.</status>
</kw>
<kw name="Should Be Connected" owner="OvsManager">
<arg>s${sid}</arg>
<arg>${ODL_SYSTEM_2_IP}</arg>
<arg>update_data=${False}</arg>
<doc>Check if the switch is connected</doc>
<status status="NOT RUN" start="2026-04-08T01:07:59.185990" elapsed="0.000023"/>
</kw>
<kw name="Should Be Connected" owner="OvsManager">
<arg>s${sid}</arg>
<arg>${ODL_SYSTEM_3_IP}</arg>
<arg>update_data=${False}</arg>
<doc>Check if the switch is connected</doc>
<status status="NOT RUN" start="2026-04-08T01:07:59.186236" elapsed="0.000023"/>
</kw>
<var name="${i}">0</var>
<status status="FAIL" start="2026-04-08T01:07:59.169406" elapsed="0.016907">Dictionary does not contain key 's1'.</status>
</iter>
<var>${i}</var>
<value>0</value>
<value>${SWITCHES}</value>
<status status="FAIL" start="2026-04-08T01:07:59.169187" elapsed="0.017183">Dictionary does not contain key 's1'.</status>
</for>
<doc>Verifies all switches are connected to all cluster nodes</doc>
<status status="FAIL" start="2026-04-08T01:07:59.091499" elapsed="0.094961">Dictionary does not contain key 's1'.</status>
</kw>
<msg time="2026-04-08T01:07:59.186546" level="FAIL">Keyword 'Check All Switches Connected To All Cluster Nodes' failed after retrying 15 times. The last error was: Dictionary does not contain key 's1'.</msg>
<arg>15x</arg>
<arg>1s</arg>
<arg>Check All Switches Connected To All Cluster Nodes</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="FAIL" start="2026-04-08T01:07:43.647454" elapsed="15.539185">Keyword 'Check All Switches Connected To All Cluster Nodes' failed after retrying 15 times. The last error was: Dictionary does not contain key 's1'.</status>
</kw>
<doc>Initial check for correct connected topology.</doc>
<status status="FAIL" start="2026-04-08T01:07:43.300897" elapsed="15.885900">Keyword 'Check All Switches Connected To All Cluster Nodes' failed after retrying 15 times. The last error was: Dictionary does not contain key 's1'.</status>
</test>
<test id="s1-s7-t3" name="Isolating Owner Of Switch s1" line="59">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-08T01:07:59.189887" elapsed="0.000206"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-08T01:07:59.189600" elapsed="0.000581"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:07:59.191209" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:07:59.191078" elapsed="0.000176"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:59.191060" elapsed="0.000216"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:07:59.196345" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:07:59.196238" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:59.196219" elapsed="0.000193"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:07:59.197451" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:07:59.197050" elapsed="0.000428"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:07:59.197965" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:07:59.197648" elapsed="0.000342"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T01:07:59.198034" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T01:07:59.198205" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T01:07:59.196648" elapsed="0.001583"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:07:59.203642" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:07:59.203536" elapsed="0.000156"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:59.203517" elapsed="0.000198"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:07:59.204914" elapsed="0.000027"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:07:59.204797" elapsed="0.000191"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:59.204780" elapsed="0.000232"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:07:59.205553" level="INFO">${karaf_connection_index} = 655</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:07:59.205197" elapsed="0.000408"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:07:59.206176" level="INFO">${current_connection_index} = 667</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:07:59.205870" elapsed="0.000338"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:07:59.244547" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:07:59.206806" elapsed="0.037878"/>
</kw>
<msg time="2026-04-08T01:07:59.244877" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T01:07:59.244932" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:07:59.206434" elapsed="0.038557"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T01:07:59.298598" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "3 "0 "[C "C "l "u "s "t "e "r "[C "S "y "n "c "[C "P "r "o "b "l "e "m "s ". "I "s "o "l "a "t "i "n "g "[C "O "w "n "e "r "[C "O "f "[C "S "w "i "t "c "h "[C "s "1 "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T01:07:59.245677" elapsed="0.053150"/>
</kw>
<msg time="2026-04-08T01:07:59.299052" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T01:07:59.299101" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "3 "0 "[C "C "l "u "s "t "e "r "[C "S "y "n "c "[C "P "r "o "b "l "e "m "s ". "I "s...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:07:59.245244" elapsed="0.053895"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:59.299637" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:07:59.299290" elapsed="0.000407"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:59.299256" elapsed="0.000469"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:07:59.300296" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "3 "0 "[C "C "l "u "s "t "e "r "[C "S "y "n "c "[C "P "r "o "b "l "e "m "s ". "I "s "o "l "a "t "i "n "g "[C "O "w "n "e "r "[C "O "f "[C "S "w "i "t "c "h "[C "s "1 "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:07:59.299884" elapsed="0.000493"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:59.300677" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:07:59.300447" elapsed="0.000283"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:59.300427" elapsed="0.000327"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T01:07:59.300791" elapsed="0.000041"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:07:59.303490" elapsed="0.000197"/>
</kw>
<msg time="2026-04-08T01:07:59.303749" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:07:59.302457" elapsed="0.001427"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:59.304192" elapsed="0.000077"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:59.304538" elapsed="0.000076"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:07:59.301783" elapsed="0.002942"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T01:07:59.301177" elapsed="0.003612"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T01:07:59.204499" elapsed="0.100388"/>
</kw>
<msg time="2026-04-08T01:07:59.304980" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:07:59.305024" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "3 "0 "[C "C "l "u "s "t "e "r "[C "S "y "n "c "[C "P "r "o "b "l "e "m "s ". "I "s...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:07:59.203879" elapsed="0.101182"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T01:07:59.305353" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-08T01:07:59.305140" elapsed="0.000274"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:59.305121" elapsed="0.000317"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:59.305881" elapsed="0.000024"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:59.306248" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T01:07:59.306318" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T01:07:59.203203" elapsed="0.103222"/>
</kw>
<msg time="2026-04-08T01:07:59.306580" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:07:59.306624" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "3 "0 "[C "C "l "u "s "t "e "r "[C "S "y "n "c "[C "P "r "o "b "l "e "m "s ". "I "s...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:07:59.198600" elapsed="0.108061"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:59.306999" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:07:59.306738" elapsed="0.000313"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:59.306721" elapsed="0.000353"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T01:07:59.198449" elapsed="0.108649"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:07:59.312702" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:07:59.312595" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:59.312575" elapsed="0.000194"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:07:59.313924" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:07:59.313817" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:59.313799" elapsed="0.000192"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:07:59.314469" level="INFO">${karaf_connection_index} = 657</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:07:59.314144" elapsed="0.000352"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:07:59.314926" level="INFO">${current_connection_index} = 667</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:07:59.314663" elapsed="0.000289"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:07:59.354469" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:07:59.315481" elapsed="0.039102"/>
</kw>
<msg time="2026-04-08T01:07:59.354757" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T01:07:59.354806" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:07:59.315120" elapsed="0.039723"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T01:07:59.402329" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "3 "0 "[C "C "l "u "s "t "e "r "[C "S "y "n "c "[C "P "r "o "b "l "e "m "s ". "I "s "o "l "a "t "i "n "g "[C "O "w "n "e "r "[C "O "f "[C "S "w "i "t "c "h "[C "s "1 "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T01:07:59.355439" elapsed="0.047004"/>
</kw>
<msg time="2026-04-08T01:07:59.402604" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T01:07:59.402650" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "3 "0 "[C "C "l "u "s "t "e "r "[C "S "y "n "c "[C "P "r "o "b "l "e "m "s ". "I "s...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:07:59.355036" elapsed="0.047652"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:59.403015" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:07:59.402771" elapsed="0.000300"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:59.402749" elapsed="0.000346"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:07:59.403581" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "3 "0 "[C "C "l "u "s "t "e "r "[C "S "y "n "c "[C "P "r "o "b "l "e "m "s ". "I "s "o "l "a "t "i "n "g "[C "O "w "n "e "r "[C "O "f "[C "S "w "i "t "c "h "[C "s "1 "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:07:59.403276" elapsed="0.000383"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:59.403954" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:07:59.403726" elapsed="0.000282"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:59.403708" elapsed="0.000322"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T01:07:59.404063" elapsed="0.000031"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:07:59.406716" elapsed="0.000202"/>
</kw>
<msg time="2026-04-08T01:07:59.406979" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:07:59.405611" elapsed="0.001499"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:59.407412" elapsed="0.000074"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:59.407749" elapsed="0.000122"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:07:59.404952" elapsed="0.003031"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T01:07:59.404400" elapsed="0.003649"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T01:07:59.313517" elapsed="0.094630"/>
</kw>
<msg time="2026-04-08T01:07:59.408263" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:07:59.408306" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "3 "0 "[C "C "l "u "s "t "e "r "[C "S "y "n "c "[C "P "r "o "b "l "e "m "s ". "I "s...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:07:59.312928" elapsed="0.095415"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T01:07:59.408526" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-08T01:07:59.408421" elapsed="0.000163"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:59.408402" elapsed="0.000206"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 2,
close the previous connection. In any case create a new connection
to karaf console for 2, set correct prompt set and login to karaf console.
Store connection index for 2 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:59.409013" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:59.409384" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T01:07:59.409455" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T01:07:59.312132" elapsed="0.097428"/>
</kw>
<msg time="2026-04-08T01:07:59.409654" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:07:59.409697" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "3 "0 "[C "C "l "u "s "t "e "r "[C "S "y "n "c "[C "P "r "o "b "l "e "m "s ". "I "s...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:07:59.307401" elapsed="0.102333"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:59.410066" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:07:59.409809" elapsed="0.000308"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:59.409792" elapsed="0.000348"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T01:07:59.307248" elapsed="0.102931"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:07:59.415618" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:07:59.415512" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:59.415494" elapsed="0.000190"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:07:59.416832" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:07:59.416725" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:59.416707" elapsed="0.000192"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:07:59.417385" level="INFO">${karaf_connection_index} = 659</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:07:59.417054" elapsed="0.000358"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:07:59.417848" level="INFO">${current_connection_index} = 667</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:07:59.417581" elapsed="0.000293"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:07:59.450712" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:07:59.418406" elapsed="0.032404"/>
</kw>
<msg time="2026-04-08T01:07:59.450994" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T01:07:59.451041" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:07:59.418042" elapsed="0.033035"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T01:07:59.494511" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "3 "0 "[C "C "l "u "s "t "e "r "[C "S "y "n "c "[C "P "r "o "b "l "e "m "s ". "I "s "o "l "a "t "i "n "g "[C "O "w "n "e "r "[C "O "f "[C "S "w "i "t "c "h "[C "s "1 "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T01:07:59.451630" elapsed="0.043001"/>
</kw>
<msg time="2026-04-08T01:07:59.494791" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T01:07:59.494837" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "3 "0 "[C "C "l "u "s "t "e "r "[C "S "y "n "c "[C "P "r "o "b "l "e "m "s ". "I "s...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:07:59.451280" elapsed="0.043645"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:59.495296" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:07:59.495015" elapsed="0.000339"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:59.494992" elapsed="0.000388"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:07:59.495841" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "3 "0 "[C "C "l "u "s "t "e "r "[C "S "y "n "c "[C "P "r "o "b "l "e "m "s ". "I "s "o "l "a "t "i "n "g "[C "O "w "n "e "r "[C "O "f "[C "S "w "i "t "c "h "[C "s "1 "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:07:59.495532" elapsed="0.000384"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:59.496254" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:07:59.495983" elapsed="0.000327"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:59.495965" elapsed="0.000368"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T01:07:59.496366" elapsed="0.000032"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:07:59.499117" elapsed="0.000215"/>
</kw>
<msg time="2026-04-08T01:07:59.499395" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:07:59.497948" elapsed="0.001581"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:59.499817" elapsed="0.000077"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:59.500172" elapsed="0.000078"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:07:59.497311" elapsed="0.003048"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T01:07:59.496690" elapsed="0.003733"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T01:07:59.416425" elapsed="0.084097"/>
</kw>
<msg time="2026-04-08T01:07:59.500614" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:07:59.500657" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "3 "0 "[C "C "l "u "s "t "e "r "[C "S "y "n "c "[C "P "r "o "b "l "e "m "s ". "I "s...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:07:59.415844" elapsed="0.084850"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T01:07:59.500876" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-08T01:07:59.500771" elapsed="0.000163"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:59.500752" elapsed="0.000206"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 3,
close the previous connection. In any case create a new connection
to karaf console for 3, set correct prompt set and login to karaf console.
Store connection index for 3 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:59.501402" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:59.501750" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T01:07:59.501819" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T01:07:59.415172" elapsed="0.086753"/>
</kw>
<msg time="2026-04-08T01:07:59.502018" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:07:59.502060" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "3 "0 "[C "C "l "u "s "t "e "r "[C "S "y "n "c "[C "P "r "o "b "l "e "m "s ". "I "s...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:07:59.410456" elapsed="0.091642"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:59.502455" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:07:59.502197" elapsed="0.000311"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:59.502178" elapsed="0.000353"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T01:07:59.410308" elapsed="0.092246"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-08T01:07:59.198285" elapsed="0.304303"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-08T01:07:59.195545" elapsed="0.307101"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-08T01:07:59.190794" elapsed="0.311909"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:07:59.190346" elapsed="0.312403"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-08T01:07:59.187477" elapsed="0.315381"/>
</kw>
<kw name="Isolating Node Scenario">
<kw name="Set Test Variable" owner="BuiltIn">
<msg time="2026-04-08T01:07:59.511533" level="INFO">${isol_node} = </msg>
<arg>${isol_node}</arg>
<arg>${Empty}</arg>
<doc>Makes a variable available everywhere within the scope of the current test.</doc>
<status status="PASS" start="2026-04-08T01:07:59.503382" elapsed="0.008199"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:07:59.512112" level="INFO">${idx} = 1</msg>
<var>${idx}</var>
<arg>str("${switch_name}"[1:])</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:07:59.511756" elapsed="0.000382"/>
</kw>
<kw name="Set Test Variable" owner="BuiltIn">
<msg time="2026-04-08T01:07:59.512613" level="INFO">${idx} = 1</msg>
<arg>${idx}</arg>
<doc>Makes a variable available everywhere within the scope of the current test.</doc>
<status status="PASS" start="2026-04-08T01:07:59.512324" elapsed="0.000330"/>
</kw>
<kw name="Isolate Switchs Old Owner">
<kw name="Get OpenFlow Entity Owner Status For One Device" owner="ClusterOpenFlow">
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:07:59.548717" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:07:59.548330" elapsed="0.000415"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:07:59.549251" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:07:59.548918" elapsed="0.000360"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T01:07:59.549325" elapsed="0.000036"/>
</return>
<msg time="2026-04-08T01:07:59.549490" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T01:07:59.547908" elapsed="0.001606"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T01:07:59.554356" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T01:07:59.554078" elapsed="0.000306"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:07:59.554549" elapsed="0.000270"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:07:59.555294" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:07:59.554986" elapsed="0.000334"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:07:59.555823" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:07:59.555530" elapsed="0.000335"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:07:59.556023" elapsed="0.000277"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:07:59.556747" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:07:59.556465" elapsed="0.000307"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:07:59.557304" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:07:59.556968" elapsed="0.000379"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:07:59.557966" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:07:59.557514" elapsed="0.000478"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:07:59.558637" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:07:59.558201" elapsed="0.000482"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:07:59.559197" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:07:59.558848" elapsed="0.000376"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:07:59.566181" elapsed="0.000375"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:07:59.597412" elapsed="0.000460"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:07:59.600073" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:07:59.599072" elapsed="0.001116"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:07:59.601883" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:07:59.601606" elapsed="0.000304"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:07:59.602079" elapsed="0.000066"/>
</return>
<msg time="2026-04-08T01:07:59.602712" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:07:59.600803" elapsed="0.002006"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:07:59.604787" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:07:59.603931" elapsed="0.000953"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:07:59.607036" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:07:59.605995" elapsed="0.001137"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:07:59.608599" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:07:59.661618" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:07:59.608224" elapsed="0.057541">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:59.668351" elapsed="0.000157"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:59.670322" elapsed="0.000065"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:59.671474" elapsed="0.000063"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:59.672620" elapsed="0.000064"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:59.673784" elapsed="0.000065"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:59.674968" elapsed="0.000064"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:59.675543" elapsed="0.000023"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:59.675769" elapsed="0.000022"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:59.675988" elapsed="0.000022"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:07:59.675353" elapsed="0.000698"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:07:59.675140" elapsed="0.000954"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:59.677208" elapsed="0.000064"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:07:59.677352" elapsed="0.000042"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:07:59.595574" elapsed="0.082009">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:07:59.677785" elapsed="0.000019"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T01:07:59.563514" elapsed="0.114383">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:59.678092" elapsed="0.000021"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:59.683328" elapsed="0.000029"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:59.683595" elapsed="0.000022"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T01:07:59.683663" elapsed="0.000016"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T01:07:59.553502" elapsed="0.130272">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:07:59.683901" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:07:59.683946" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:07:59.552904" elapsed="0.131065"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T01:07:59.684218" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:07:59.684070" elapsed="0.000191"/>
</branch>
<status status="PASS" start="2026-04-08T01:07:59.684046" elapsed="0.000239"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:07:59.685774" elapsed="0.000214"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:07:59.686543" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:07:59.686171" elapsed="0.000398"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:07:59.687765" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:07:59.687228" elapsed="0.000579"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:07:59.687941" elapsed="0.000033"/>
</return>
<msg time="2026-04-08T01:07:59.688100" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:07:59.686768" elapsed="0.001358"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:07:59.688760" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:07:59.688318" elapsed="0.000468"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:07:59.689407" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:07:59.688968" elapsed="0.000466"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:07:59.689934" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:07:59.700036" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:07:59.689609" elapsed="0.013670">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:59.703722" elapsed="0.000051"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:59.704134" elapsed="0.000077"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:59.704565" elapsed="0.000047"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:59.705044" elapsed="0.000073"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:59.705591" elapsed="0.000051"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:59.706001" elapsed="0.000046"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:59.706656" elapsed="0.000046"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:59.707383" elapsed="0.000049"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:59.707845" elapsed="0.000047"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:07:59.706341" elapsed="0.001686"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:07:59.706150" elapsed="0.001939"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:59.708464" elapsed="0.000047"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:07:59.708693" elapsed="0.000039"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:07:59.685143" elapsed="0.023862">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:07:59.709308" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:07:59.709410" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:07:59.684454" elapsed="0.025008"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T01:07:59.710359" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T01:07:59.709969" elapsed="0.000452">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T01:07:59.709685" elapsed="0.000800">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T01:07:59.709610" elapsed="0.000907">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T01:07:59.710564" elapsed="0.000016"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:07:59.552327" elapsed="0.158339">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:59.710859" elapsed="0.000021"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:59.711034" elapsed="0.000020"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T01:07:59.711095" elapsed="0.000014"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T01:07:59.549819" elapsed="0.161394">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:59.711396" elapsed="0.000021"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:59.711583" elapsed="0.000020"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:59.711763" elapsed="0.000020"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:59.711933" elapsed="0.000020"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:59.712111" elapsed="0.000020"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:07:59.712305" elapsed="0.000020"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T01:07:59.712366" elapsed="0.000014"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T01:07:59.547221" elapsed="0.165246">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:08:00.746437" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:08:00.745674" elapsed="0.000808"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:08:00.747195" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:08:00.746737" elapsed="0.000497"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T01:08:00.747301" elapsed="0.000088"/>
</return>
<msg time="2026-04-08T01:08:00.747577" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T01:08:00.745053" elapsed="0.002560"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T01:08:00.752670" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T01:08:00.752399" elapsed="0.000299"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:08:00.752865" elapsed="0.000271"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:08:00.753624" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:08:00.753331" elapsed="0.000319"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:08:00.754197" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:08:00.753878" elapsed="0.000363"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:08:00.754403" elapsed="0.000260"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:08:00.755111" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:08:00.754828" elapsed="0.000309"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:08:00.755663" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:08:00.755369" elapsed="0.000336"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:08:00.756346" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:08:00.755869" elapsed="0.000503"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:08:00.756848" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:08:00.756567" elapsed="0.000325"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:08:00.757400" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:08:00.757055" elapsed="0.000371"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:08:00.764545" elapsed="0.000373"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:08:00.795447" elapsed="0.000438"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:08:00.797620" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:08:00.796965" elapsed="0.000752"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:08:00.799789" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:08:00.799519" elapsed="0.000297"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:08:00.799913" elapsed="0.000057"/>
</return>
<msg time="2026-04-08T01:08:00.800282" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:08:00.798717" elapsed="0.001662"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:08:00.802515" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:08:00.801498" elapsed="0.001115"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:08:00.804367" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:08:00.803709" elapsed="0.000757"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:08:00.805948" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:08:00.821008" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:08:00.805570" elapsed="0.019503">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:00.827901" elapsed="0.000116"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:00.829562" elapsed="0.000093"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:00.831201" elapsed="0.000110"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:00.832902" elapsed="0.000090"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:00.834606" elapsed="0.000101"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:00.836259" elapsed="0.000093"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:00.837003" elapsed="0.000031"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:00.837337" elapsed="0.000032"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:00.837643" elapsed="0.000031"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:08:00.836741" elapsed="0.000990"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:08:00.836492" elapsed="0.001298"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:00.839591" elapsed="0.000091"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:08:00.839791" elapsed="0.000042"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:08:00.793460" elapsed="0.046557">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:08:00.840231" elapsed="0.000018"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T01:08:00.761880" elapsed="0.078464">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:00.840537" elapsed="0.000022"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:00.845219" elapsed="0.000028"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:00.845428" elapsed="0.000021"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T01:08:00.845494" elapsed="0.000016"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T01:08:00.751797" elapsed="0.093806">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:08:00.845725" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:08:00.845771" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:08:00.751204" elapsed="0.094594"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T01:08:00.846057" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:08:00.845931" elapsed="0.000169"/>
</branch>
<status status="PASS" start="2026-04-08T01:08:00.845908" elapsed="0.000215"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:08:00.847698" elapsed="0.000223"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:08:00.848466" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:08:00.848087" elapsed="0.000405"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:08:00.849672" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:08:00.849122" elapsed="0.000591"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:08:00.849844" elapsed="0.000034"/>
</return>
<msg time="2026-04-08T01:08:00.850002" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:08:00.848691" elapsed="0.001337"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:08:00.850751" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:08:00.850306" elapsed="0.000473"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:08:00.851425" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:08:00.850950" elapsed="0.000503"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:08:00.851949" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:08:00.865706" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:08:00.851629" elapsed="0.017932">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:00.870000" elapsed="0.000053"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:00.870460" elapsed="0.000048"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:00.870861" elapsed="0.000046"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:00.871328" elapsed="0.000050"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:00.871750" elapsed="0.000053"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:00.872073" elapsed="0.000029"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:00.872480" elapsed="0.000029"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:00.872809" elapsed="0.000029"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:00.873091" elapsed="0.000029"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:08:00.872284" elapsed="0.000950"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:08:00.872185" elapsed="0.001088"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:00.873488" elapsed="0.000028"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:08:00.873571" elapsed="0.000022"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:08:00.847073" elapsed="0.026657">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:08:00.873891" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:08:00.873952" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:08:00.846426" elapsed="0.027558"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T01:08:00.874960" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T01:08:00.874502" elapsed="0.000541">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T01:08:00.874153" elapsed="0.000978">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T01:08:00.874125" elapsed="0.001082">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T01:08:00.875277" elapsed="0.000023"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:08:00.750597" elapsed="0.124821">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:00.875679" elapsed="0.000029"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:00.875929" elapsed="0.000028"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T01:08:00.876015" elapsed="0.000021"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T01:08:00.748042" elapsed="0.128133">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:00.876431" elapsed="0.000029"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:00.876695" elapsed="0.000027"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:00.876944" elapsed="0.000027"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:00.877200" elapsed="0.000029"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:00.877449" elapsed="0.000028"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:00.877691" elapsed="0.000028"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T01:08:00.877775" elapsed="0.000021"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T01:08:00.743886" elapsed="0.134030">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:08:01.912423" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:08:01.911913" elapsed="0.000544"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:08:01.912949" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:08:01.912639" elapsed="0.000336"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T01:08:01.913021" elapsed="0.000041"/>
</return>
<msg time="2026-04-08T01:08:01.913212" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T01:08:01.911484" elapsed="0.001755"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T01:08:01.918770" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T01:08:01.918489" elapsed="0.000376"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:08:01.919033" elapsed="0.000330"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:08:01.919847" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:08:01.919548" elapsed="0.000327"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:08:01.920424" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:08:01.920097" elapsed="0.000371"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:08:01.920630" elapsed="0.000273"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:08:01.921394" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:08:01.921081" elapsed="0.000340"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:08:01.921975" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:08:01.921617" elapsed="0.000402"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:08:01.922776" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:08:01.922202" elapsed="0.000609"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:08:01.923426" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:08:01.923033" elapsed="0.000452"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:08:01.924040" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:08:01.923676" elapsed="0.000391"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:08:01.931481" elapsed="0.000406"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:08:01.963701" elapsed="0.000439"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:08:01.966059" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:08:01.965391" elapsed="0.000785"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:08:01.967961" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:08:01.967667" elapsed="0.000321"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:08:01.968092" elapsed="0.000059"/>
</return>
<msg time="2026-04-08T01:08:01.968699" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:08:01.966802" elapsed="0.001991"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:08:01.970651" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:08:01.969916" elapsed="0.000832"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:08:01.972665" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:08:01.971820" elapsed="0.000941"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:08:01.974590" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:08:01.990750" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:08:01.973882" elapsed="0.019505">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:01.995078" elapsed="0.000178"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:01.997725" elapsed="0.000147"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:02.000314" elapsed="0.000147"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:02.003132" elapsed="0.000176"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:02.005911" elapsed="0.000145"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:02.007688" elapsed="0.000134"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:02.008339" elapsed="0.000024"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:02.008567" elapsed="0.000022"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:02.008785" elapsed="0.000022"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:08:02.008130" elapsed="0.000723"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:08:02.007943" elapsed="0.000953"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:02.010071" elapsed="0.000066"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:08:02.010231" elapsed="0.000040"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:08:01.961928" elapsed="0.048529">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:08:02.010657" elapsed="0.000018"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T01:08:01.928739" elapsed="0.082030">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:02.010961" elapsed="0.000022"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:02.015770" elapsed="0.000028"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:02.015984" elapsed="0.000022"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T01:08:02.016052" elapsed="0.000015"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T01:08:01.917891" elapsed="0.098281">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:08:02.016295" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:08:02.016339" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:08:01.917296" elapsed="0.099066"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T01:08:02.016577" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:08:02.016454" elapsed="0.000164"/>
</branch>
<status status="PASS" start="2026-04-08T01:08:02.016433" elapsed="0.000208"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:08:02.018106" elapsed="0.000228"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:08:02.018859" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:08:02.018499" elapsed="0.000386"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:08:02.020061" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:08:02.019529" elapsed="0.000573"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:08:02.020248" elapsed="0.000035"/>
</return>
<msg time="2026-04-08T01:08:02.020407" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:08:02.019081" elapsed="0.001385"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:08:02.021080" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:08:02.020640" elapsed="0.000467"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:08:02.021731" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:08:02.021293" elapsed="0.000465"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:08:02.022275" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:08:02.037380" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:08:02.021936" elapsed="0.019472">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:02.041879" elapsed="0.000053"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:02.042334" elapsed="0.000049"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:02.042805" elapsed="0.000049"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:02.043236" elapsed="0.000048"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:02.043648" elapsed="0.000045"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:02.044034" elapsed="0.000045"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:02.044674" elapsed="0.000045"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:02.045243" elapsed="0.000049"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:02.045746" elapsed="0.000050"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:08:02.044363" elapsed="0.001570"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:08:02.044208" elapsed="0.001786"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:02.046368" elapsed="0.000049"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:08:02.046505" elapsed="0.000035"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:08:02.017482" elapsed="0.029269">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:08:02.046961" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:08:02.047020" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:08:02.016811" elapsed="0.030241"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T01:08:02.048052" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T01:08:02.047508" elapsed="0.000628">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T01:08:02.047188" elapsed="0.001057">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T01:08:02.047141" elapsed="0.001150">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T01:08:02.048357" elapsed="0.000022"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:08:01.916302" elapsed="0.132196">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:02.048829" elapsed="0.000032"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:02.049080" elapsed="0.000028"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T01:08:02.049186" elapsed="0.000022"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T01:08:01.913550" elapsed="0.135784">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:02.049587" elapsed="0.000042"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:02.049863" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:02.050112" elapsed="0.000028"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:02.050386" elapsed="0.000028"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:02.050632" elapsed="0.000027"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:02.050871" elapsed="0.000027"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T01:08:02.050955" elapsed="0.000021"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T01:08:01.910520" elapsed="0.140577">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:08:03.085177" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:08:03.084677" elapsed="0.000535"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:08:03.085709" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:08:03.085396" elapsed="0.000339"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T01:08:03.085782" elapsed="0.000040"/>
</return>
<msg time="2026-04-08T01:08:03.085954" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T01:08:03.084241" elapsed="0.001739"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T01:08:03.090876" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T01:08:03.090606" elapsed="0.000298"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:08:03.091068" elapsed="0.000295"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:08:03.091821" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:08:03.091529" elapsed="0.000318"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:08:03.092396" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:08:03.092066" elapsed="0.000373"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:08:03.092599" elapsed="0.000258"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:08:03.093322" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:08:03.093020" elapsed="0.000328"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:08:03.093904" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:08:03.093608" elapsed="0.000339"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:08:03.094579" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:08:03.094110" elapsed="0.000496"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:08:03.095085" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:08:03.094804" elapsed="0.000325"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:08:03.095657" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:08:03.095308" elapsed="0.000376"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:08:03.102769" elapsed="0.000370"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:08:03.134699" elapsed="0.000434"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:08:03.136861" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:08:03.136214" elapsed="0.000743"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:08:03.138585" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:08:03.138318" elapsed="0.000293"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:08:03.138706" elapsed="0.000054"/>
</return>
<msg time="2026-04-08T01:08:03.139046" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:08:03.137555" elapsed="0.001587"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:08:03.141205" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:08:03.140468" elapsed="0.000839"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:08:03.143103" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:08:03.142456" elapsed="0.000761"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:08:03.144901" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:08:03.157727" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:08:03.144530" elapsed="0.017393">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:03.164545" elapsed="0.000152"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:03.166373" elapsed="0.000093"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:03.167994" elapsed="0.000094"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:03.169871" elapsed="0.000095"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:03.171566" elapsed="0.000093"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:03.173225" elapsed="0.000094"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:03.173965" elapsed="0.000031"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:03.174494" elapsed="0.000032"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:03.174798" elapsed="0.000031"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:08:03.173705" elapsed="0.001181"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:08:03.173456" elapsed="0.001486"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:03.176503" elapsed="0.000091"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:08:03.176699" elapsed="0.000054"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:08:03.132043" elapsed="0.044964">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:08:03.177278" elapsed="0.000023"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T01:08:03.100083" elapsed="0.077331">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:03.177631" elapsed="0.000022"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:03.182354" elapsed="0.000027"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:03.182562" elapsed="0.000022"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T01:08:03.182629" elapsed="0.000015"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T01:08:03.090008" elapsed="0.092728">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:08:03.182851" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:08:03.182895" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:08:03.089434" elapsed="0.093484"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T01:08:03.183126" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:08:03.183009" elapsed="0.000174"/>
</branch>
<status status="PASS" start="2026-04-08T01:08:03.182988" elapsed="0.000220"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:08:03.184592" elapsed="0.000212"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:08:03.185344" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:08:03.184969" elapsed="0.000402"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:08:03.186647" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:08:03.185999" elapsed="0.000689"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:08:03.186818" elapsed="0.000032"/>
</return>
<msg time="2026-04-08T01:08:03.186972" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:08:03.185569" elapsed="0.001428"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:08:03.187619" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:08:03.187184" elapsed="0.000462"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:08:03.188271" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:08:03.187816" elapsed="0.000482"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:08:03.188776" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:08:03.202913" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:08:03.188470" elapsed="0.018340">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:03.207281" elapsed="0.000054"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:03.207703" elapsed="0.000120"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:03.208267" elapsed="0.000053"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:03.208680" elapsed="0.000047"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:03.208993" elapsed="0.000029"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:03.209283" elapsed="0.000031"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:03.209667" elapsed="0.000028"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:03.209996" elapsed="0.000030"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:03.210310" elapsed="0.000030"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:08:03.209471" elapsed="0.000955"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:08:03.209379" elapsed="0.001085"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:03.210676" elapsed="0.000028"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:08:03.210759" elapsed="0.000021"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:08:03.183981" elapsed="0.026931">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:08:03.211069" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:08:03.211129" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:08:03.183370" elapsed="0.027812"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T01:08:03.212080" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T01:08:03.211634" elapsed="0.000551">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T01:08:03.211313" elapsed="0.000983">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T01:08:03.211285" elapsed="0.001055">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T01:08:03.212405" elapsed="0.000022"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:08:03.088825" elapsed="0.123718">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:03.212805" elapsed="0.000030"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:03.213065" elapsed="0.000028"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T01:08:03.213150" elapsed="0.000042"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T01:08:03.086304" elapsed="0.127012">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:03.213565" elapsed="0.000028"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:03.213824" elapsed="0.000027"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:03.214070" elapsed="0.000073"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:03.214385" elapsed="0.000029"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:03.214634" elapsed="0.000027"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:03.214896" elapsed="0.000029"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T01:08:03.214984" elapsed="0.000021"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T01:08:03.083393" elapsed="0.131733">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:08:04.250025" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:08:04.249543" elapsed="0.000516"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:08:04.250595" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:08:04.250255" elapsed="0.000366"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T01:08:04.250669" elapsed="0.000041"/>
</return>
<msg time="2026-04-08T01:08:04.250840" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T01:08:04.249104" elapsed="0.001762"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T01:08:04.255949" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T01:08:04.255674" elapsed="0.000302"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:08:04.256141" elapsed="0.000299"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:08:04.256898" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:08:04.256608" elapsed="0.000319"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:08:04.257483" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:08:04.257153" elapsed="0.000374"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:08:04.257691" elapsed="0.000261"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:08:04.258453" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:08:04.258117" elapsed="0.000362"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:08:04.258968" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:08:04.258676" elapsed="0.000334"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:08:04.259644" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:08:04.259189" elapsed="0.000481"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:08:04.260151" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:08:04.259865" elapsed="0.000346"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:08:04.260703" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:08:04.260375" elapsed="0.000355"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:08:04.267975" elapsed="0.000401"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:08:04.299076" elapsed="0.000719"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:08:04.301512" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:08:04.300863" elapsed="0.000745"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:08:04.303508" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:08:04.303040" elapsed="0.000495"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:08:04.303631" elapsed="0.000054"/>
</return>
<msg time="2026-04-08T01:08:04.303973" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:08:04.302293" elapsed="0.001774"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:08:04.305895" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:08:04.305171" elapsed="0.000822"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:08:04.307938" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:08:04.307076" elapsed="0.000958"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:08:04.309484" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:08:04.324959" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:08:04.309106" elapsed="0.020018">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:04.330752" elapsed="0.000095"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:04.332383" elapsed="0.000092"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:04.334001" elapsed="0.000093"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:04.335701" elapsed="0.000094"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:04.337330" elapsed="0.000093"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:04.338744" elapsed="0.000068"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:04.339397" elapsed="0.000023"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:04.339625" elapsed="0.000022"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:04.339840" elapsed="0.000022"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:08:04.339102" elapsed="0.000802"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:08:04.338915" elapsed="0.001031"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:04.341051" elapsed="0.000065"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:08:04.341341" elapsed="0.000040"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:08:04.297275" elapsed="0.044296">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:08:04.341768" elapsed="0.000017"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T01:08:04.265205" elapsed="0.076672">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:04.342073" elapsed="0.000022"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:04.346898" elapsed="0.000028"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:04.347144" elapsed="0.000035"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T01:08:04.347227" elapsed="0.000016"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T01:08:04.255077" elapsed="0.092259">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:08:04.347453" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:08:04.347497" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:08:04.254506" elapsed="0.093015"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T01:08:04.347729" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:08:04.347612" elapsed="0.000159"/>
</branch>
<status status="PASS" start="2026-04-08T01:08:04.347591" elapsed="0.000204"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:08:04.349234" elapsed="0.000216"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:08:04.350010" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:08:04.349642" elapsed="0.000395"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:08:04.351304" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:08:04.350717" elapsed="0.000628"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:08:04.351477" elapsed="0.000033"/>
</return>
<msg time="2026-04-08T01:08:04.351632" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:08:04.350284" elapsed="0.001374"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:08:04.352284" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:08:04.351830" elapsed="0.000481"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:08:04.352907" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:08:04.352480" elapsed="0.000454"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:08:04.353451" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:08:04.365960" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:08:04.353107" elapsed="0.015261">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:04.368643" elapsed="0.000033"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:04.368900" elapsed="0.000029"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:04.369145" elapsed="0.000050"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:04.369448" elapsed="0.000031"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:04.369706" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:04.369947" elapsed="0.000029"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:04.370348" elapsed="0.000030"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:04.370685" elapsed="0.000029"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:04.371020" elapsed="0.000031"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:08:04.370130" elapsed="0.001009"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:08:04.370038" elapsed="0.001175"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:04.371431" elapsed="0.000030"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:08:04.371515" elapsed="0.000022"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:08:04.348583" elapsed="0.023084">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:08:04.371827" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:08:04.371887" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:08:04.347955" elapsed="0.023965"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T01:08:04.372823" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T01:08:04.372375" elapsed="0.000532">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T01:08:04.372035" elapsed="0.000961">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T01:08:04.372009" elapsed="0.001031">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T01:08:04.373105" elapsed="0.000022"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:08:04.253878" elapsed="0.119391">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:04.373548" elapsed="0.000031"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:04.373794" elapsed="0.000028"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T01:08:04.373879" elapsed="0.000019"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T01:08:04.251208" elapsed="0.122808">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:04.374285" elapsed="0.000037"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:04.374570" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:04.374820" elapsed="0.000027"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:04.375057" elapsed="0.000027"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:04.375323" elapsed="0.000029"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:04.375567" elapsed="0.000027"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T01:08:04.375650" elapsed="0.000021"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T01:08:04.248282" elapsed="0.127506">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:08:05.408941" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:08:05.408474" elapsed="0.000500"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:08:05.409481" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:08:05.409151" elapsed="0.000357"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T01:08:05.409556" elapsed="0.000039"/>
</return>
<msg time="2026-04-08T01:08:05.409725" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T01:08:05.408035" elapsed="0.001716"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T01:08:05.414681" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T01:08:05.414406" elapsed="0.000302"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:08:05.414876" elapsed="0.000269"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:08:05.415644" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:08:05.415354" elapsed="0.000317"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:08:05.416212" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:08:05.415895" elapsed="0.000361"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:08:05.416418" elapsed="0.000261"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:08:05.417134" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:08:05.416845" elapsed="0.000331"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:08:05.417680" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:08:05.417378" elapsed="0.000344"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:08:05.418385" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:08:05.417891" elapsed="0.000520"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:08:05.418892" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:08:05.418609" elapsed="0.000328"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:08:05.419448" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:08:05.419100" elapsed="0.000374"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:08:05.426630" elapsed="0.000377"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:08:05.459088" elapsed="0.000454"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:08:05.461472" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:08:05.460820" elapsed="0.000747"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:08:05.463388" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:08:05.463101" elapsed="0.000314"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:08:05.463514" elapsed="0.000058"/>
</return>
<msg time="2026-04-08T01:08:05.463867" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:08:05.462341" elapsed="0.001621"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:08:05.466022" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:08:05.465287" elapsed="0.000831"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:08:05.467848" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:08:05.467209" elapsed="0.000736"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:08:05.469630" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:08:05.482243" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:08:05.469244" elapsed="0.017394">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:05.489849" elapsed="0.000135"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:05.491760" elapsed="0.000114"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:05.493604" elapsed="0.000115"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:05.495556" elapsed="0.000096"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:05.497207" elapsed="0.000092"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:05.498923" elapsed="0.000092"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:05.499687" elapsed="0.000031"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:05.499996" elapsed="0.000030"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:05.500312" elapsed="0.000031"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:08:05.499428" elapsed="0.000973"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:08:05.499154" elapsed="0.001304"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:05.502028" elapsed="0.000069"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:08:05.502299" elapsed="0.000042"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:08:05.457271" elapsed="0.045257">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:08:05.502728" elapsed="0.000018"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T01:08:05.423938" elapsed="0.078901">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:05.503026" elapsed="0.000021"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:05.507719" elapsed="0.000028"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:05.507927" elapsed="0.000021"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T01:08:05.507999" elapsed="0.000015"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T01:08:05.413784" elapsed="0.094325">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:08:05.508244" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:08:05.508289" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:08:05.413213" elapsed="0.095100"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T01:08:05.508573" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:08:05.508453" elapsed="0.000162"/>
</branch>
<status status="PASS" start="2026-04-08T01:08:05.508432" elapsed="0.000206"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:08:05.510059" elapsed="0.000361"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:08:05.510944" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:08:05.510583" elapsed="0.000388"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:08:05.512314" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:08:05.511617" elapsed="0.000738"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:08:05.512486" elapsed="0.000032"/>
</return>
<msg time="2026-04-08T01:08:05.512642" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:08:05.511184" elapsed="0.001483"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:08:05.513309" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:08:05.512836" elapsed="0.000501"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:08:05.513932" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:08:05.513505" elapsed="0.000457"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:08:05.514499" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:08:05.524644" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:08:05.514138" elapsed="0.012928">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:05.527364" elapsed="0.000032"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:05.527618" elapsed="0.000031"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:05.527865" elapsed="0.000029"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:05.528110" elapsed="0.000033"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:05.528442" elapsed="0.000033"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:05.528703" elapsed="0.000041"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:05.529136" elapsed="0.000074"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:05.529606" elapsed="0.000047"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:05.529928" elapsed="0.000030"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:08:05.528938" elapsed="0.001102"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:08:05.528828" elapsed="0.001250"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:05.530308" elapsed="0.000030"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:08:05.530394" elapsed="0.000021"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:08:05.509464" elapsed="0.021084">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:08:05.530709" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:08:05.530771" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:08:05.508798" elapsed="0.022006"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T01:08:05.531790" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T01:08:05.531334" elapsed="0.000541">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T01:08:05.530976" elapsed="0.000988">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T01:08:05.530948" elapsed="0.001061">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T01:08:05.532076" elapsed="0.000022"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:08:05.412605" elapsed="0.119636">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:05.532506" elapsed="0.000030"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:05.532754" elapsed="0.000029"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T01:08:05.532842" elapsed="0.000021"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T01:08:05.410080" elapsed="0.122902">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:05.533283" elapsed="0.000032"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:05.533556" elapsed="0.000029"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:05.533807" elapsed="0.000029"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:05.534050" elapsed="0.000029"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:05.534318" elapsed="0.000028"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:05.534563" elapsed="0.000028"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T01:08:05.534649" elapsed="0.000021"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T01:08:05.407215" elapsed="0.127576">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:08:06.568979" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:08:06.568465" elapsed="0.000549"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:08:06.569741" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:08:06.569389" elapsed="0.000380"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T01:08:06.569819" elapsed="0.000046"/>
</return>
<msg time="2026-04-08T01:08:06.569998" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T01:08:06.568022" elapsed="0.002002"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T01:08:06.575385" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T01:08:06.574909" elapsed="0.000503"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:08:06.575579" elapsed="0.000278"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:08:06.576337" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:08:06.576027" elapsed="0.000337"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:08:06.577010" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:08:06.576601" elapsed="0.000453"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:08:06.577247" elapsed="0.000268"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:08:06.577968" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:08:06.577682" elapsed="0.000312"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:08:06.578496" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:08:06.578205" elapsed="0.000334"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:08:06.579190" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:08:06.578704" elapsed="0.000514"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:08:06.579693" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:08:06.579410" elapsed="0.000328"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:08:06.580253" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:08:06.579901" elapsed="0.000379"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:08:06.587384" elapsed="0.000376"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:08:06.618981" elapsed="0.000464"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:08:06.621407" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:08:06.620750" elapsed="0.000755"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:08:06.623178" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:08:06.622893" elapsed="0.000313"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:08:06.623304" elapsed="0.000058"/>
</return>
<msg time="2026-04-08T01:08:06.623655" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:08:06.622096" elapsed="0.001656"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:08:06.625842" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:08:06.625106" elapsed="0.000834"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:08:06.627705" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:08:06.627043" elapsed="0.000760"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:08:06.629471" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:08:06.641431" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:08:06.629087" elapsed="0.016512">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:06.648103" elapsed="0.000181"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:06.650444" elapsed="0.000068"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:06.651607" elapsed="0.000068"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:06.652769" elapsed="0.000068"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:06.654008" elapsed="0.000065"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:06.655166" elapsed="0.000067"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:06.655701" elapsed="0.000022"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:06.655928" elapsed="0.000021"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:06.656150" elapsed="0.000036"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:08:06.655511" elapsed="0.000719"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:08:06.655332" elapsed="0.000941"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:06.657462" elapsed="0.000065"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:08:06.657603" elapsed="0.000039"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:08:06.617187" elapsed="0.040634">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:08:06.658020" elapsed="0.000017"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T01:08:06.584704" elapsed="0.073583">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:06.658832" elapsed="0.000056"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:06.667852" elapsed="0.000063"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:06.668357" elapsed="0.000051"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T01:08:06.668509" elapsed="0.000035"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T01:08:06.574301" elapsed="0.094471">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:08:06.669031" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:08:06.669129" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:08:06.573706" elapsed="0.095609"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T01:08:06.669803" elapsed="0.000030"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:08:06.669544" elapsed="0.000354"/>
</branch>
<status status="PASS" start="2026-04-08T01:08:06.669498" elapsed="0.000452"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:08:06.673199" elapsed="0.000477"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:08:06.675027" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:08:06.674049" elapsed="0.001038"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:08:06.678120" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:08:06.676897" elapsed="0.001348"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:08:06.678692" elapsed="0.000076"/>
</return>
<msg time="2026-04-08T01:08:06.679049" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:08:06.675728" elapsed="0.003352"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:08:06.679707" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:08:06.679266" elapsed="0.000467"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:08:06.680353" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:08:06.679903" elapsed="0.000477"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:08:06.680863" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:08:06.691896" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:08:06.680555" elapsed="0.013765">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:06.694597" elapsed="0.000032"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:06.694855" elapsed="0.000030"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:06.695102" elapsed="0.000028"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:06.695376" elapsed="0.000029"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:06.695628" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:06.695868" elapsed="0.000029"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:06.696265" elapsed="0.000030"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:06.696597" elapsed="0.000029"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:06.696878" elapsed="0.000029"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:08:06.696050" elapsed="0.000940"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:08:06.695958" elapsed="0.001069"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:06.697276" elapsed="0.000030"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:08:06.697363" elapsed="0.000021"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:08:06.671808" elapsed="0.025707">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:08:06.697673" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:08:06.697734" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:08:06.670368" elapsed="0.027398"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T01:08:06.698705" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T01:08:06.698258" elapsed="0.000531">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T01:08:06.697880" elapsed="0.000996">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T01:08:06.697854" elapsed="0.001065">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T01:08:06.698983" elapsed="0.000022"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:08:06.573106" elapsed="0.126014">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:06.699462" elapsed="0.000032"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:06.699712" elapsed="0.000028"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T01:08:06.699798" elapsed="0.000022"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T01:08:06.570360" elapsed="0.129580">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:06.700211" elapsed="0.000031"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:06.700476" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:06.700727" elapsed="0.000028"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:06.700967" elapsed="0.000028"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:06.701250" elapsed="0.000030"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:06.701497" elapsed="0.000028"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T01:08:06.701583" elapsed="0.000020"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T01:08:06.567169" elapsed="0.134552">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:08:07.737217" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:08:07.736596" elapsed="0.000663"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:08:07.737891" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:08:07.737497" elapsed="0.000428"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T01:08:07.737984" elapsed="0.000051"/>
</return>
<msg time="2026-04-08T01:08:07.738216" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T01:08:07.736045" elapsed="0.002205"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T01:08:07.743575" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T01:08:07.743298" elapsed="0.000304"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:08:07.743767" elapsed="0.000289"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:08:07.744550" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:08:07.744250" elapsed="0.000327"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:08:07.745195" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:08:07.744817" elapsed="0.000424"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:08:07.745404" elapsed="0.000261"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:08:07.746116" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:08:07.745831" elapsed="0.000311"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:08:07.746723" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:08:07.746429" elapsed="0.000336"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:08:07.747407" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:08:07.746933" elapsed="0.000501"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:08:07.747911" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:08:07.747628" elapsed="0.000327"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:08:07.748465" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:08:07.748119" elapsed="0.000372"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:08:07.755683" elapsed="0.000498"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:08:07.787938" elapsed="0.000454"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:08:07.790526" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:08:07.789514" elapsed="0.001116"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:08:07.792619" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:08:07.792274" elapsed="0.000372"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:08:07.792773" elapsed="0.000070"/>
</return>
<msg time="2026-04-08T01:08:07.793144" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:08:07.791350" elapsed="0.001911"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:08:07.795359" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:08:07.794611" elapsed="0.000846"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:08:07.797226" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:08:07.796564" elapsed="0.000762"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:08:07.798951" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:08:07.809981" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:08:07.798585" elapsed="0.015559">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:07.816903" elapsed="0.000152"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:07.819642" elapsed="0.000148"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:07.821663" elapsed="0.000067"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:07.822821" elapsed="0.000065"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:07.823983" elapsed="0.000066"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:07.825219" elapsed="0.000068"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:07.825765" elapsed="0.000023"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:07.825991" elapsed="0.000022"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:07.826226" elapsed="0.000023"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:08:07.825574" elapsed="0.000717"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:08:07.825389" elapsed="0.000944"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:07.827469" elapsed="0.000067"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:08:07.827615" elapsed="0.000040"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:08:07.786014" elapsed="0.041824">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:08:07.828124" elapsed="0.000020"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T01:08:07.752982" elapsed="0.075368">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:07.828547" elapsed="0.000022"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:07.833304" elapsed="0.000029"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:07.833518" elapsed="0.000022"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T01:08:07.833585" elapsed="0.000016"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T01:08:07.742703" elapsed="0.090990">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:08:07.833812" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:08:07.833855" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:08:07.742114" elapsed="0.091764"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T01:08:07.834092" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:08:07.833972" elapsed="0.000163"/>
</branch>
<status status="PASS" start="2026-04-08T01:08:07.833951" elapsed="0.000223"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:08:07.835658" elapsed="0.000215"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:08:07.836637" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:08:07.836040" elapsed="0.000624"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:08:07.837878" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:08:07.837326" elapsed="0.000593"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:08:07.838055" elapsed="0.000034"/>
</return>
<msg time="2026-04-08T01:08:07.838233" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:08:07.836867" elapsed="0.001392"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:08:07.838905" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:08:07.838432" elapsed="0.000500"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:08:07.839556" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:08:07.839104" elapsed="0.000487"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:08:07.840098" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:08:07.852259" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:08:07.839780" elapsed="0.016594">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:07.856912" elapsed="0.000053"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:07.857376" elapsed="0.000049"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:07.857781" elapsed="0.000046"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:07.858203" elapsed="0.000048"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:07.858705" elapsed="0.000054"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:07.859117" elapsed="0.000083"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:07.859856" elapsed="0.000071"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:07.860734" elapsed="0.000062"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:07.861225" elapsed="0.000023"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:08:07.859463" elapsed="0.001847"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:08:07.859309" elapsed="0.002031"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:07.861496" elapsed="0.000021"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:08:07.861556" elapsed="0.000015"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:08:07.835029" elapsed="0.026640">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:08:07.861789" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:08:07.861832" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:08:07.834359" elapsed="0.027496"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T01:08:07.862735" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T01:08:07.862308" elapsed="0.000510">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T01:08:07.861982" elapsed="0.000916">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T01:08:07.861953" elapsed="0.000987">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T01:08:07.862989" elapsed="0.000016"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:08:07.741534" elapsed="0.121562">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:07.863304" elapsed="0.000021"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:07.863484" elapsed="0.000021"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T01:08:07.863546" elapsed="0.000015"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T01:08:07.738641" elapsed="0.125005">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:07.863921" elapsed="0.000027"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:07.864204" elapsed="0.000023"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:07.864392" elapsed="0.000020"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:07.864577" elapsed="0.000027"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:07.864772" elapsed="0.000020"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:07.864949" elapsed="0.000020"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T01:08:07.865011" elapsed="0.000015"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T01:08:07.734983" elapsed="0.130136">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:08:08.899026" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:08:08.898557" elapsed="0.000501"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:08:08.899593" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:08:08.899254" elapsed="0.000366"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T01:08:08.899667" elapsed="0.000039"/>
</return>
<msg time="2026-04-08T01:08:08.899836" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T01:08:08.898109" elapsed="0.001752"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T01:08:08.904850" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T01:08:08.904575" elapsed="0.000302"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:08:08.905043" elapsed="0.000298"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:08:08.905800" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:08:08.905509" elapsed="0.000317"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:08:08.906368" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:08:08.906046" elapsed="0.000365"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:08:08.906572" elapsed="0.000260"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:08:08.907326" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:08:08.906998" elapsed="0.000361"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:08:08.907862" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:08:08.907563" elapsed="0.000341"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:08:08.908541" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:08:08.908070" elapsed="0.000497"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:08:08.909041" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:08:08.908761" elapsed="0.000323"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:08:08.909590" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:08:08.909261" elapsed="0.000355"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:08:08.916813" elapsed="0.000394"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:08:08.948314" elapsed="0.000507"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:08:08.950598" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:08:08.949922" elapsed="0.000774"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:08:08.952555" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:08:08.952099" elapsed="0.000482"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:08:08.952678" elapsed="0.000058"/>
</return>
<msg time="2026-04-08T01:08:08.953025" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:08:08.951353" elapsed="0.001767"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:08:08.955221" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:08:08.954465" elapsed="0.000854"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:08:08.957033" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:08:08.956391" elapsed="0.000740"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:08:08.958809" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:08:08.971271" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:08:08.958440" elapsed="0.016967">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:08.977973" elapsed="0.000152"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:08.980464" elapsed="0.000093"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:08.982106" elapsed="0.000112"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:08.983761" elapsed="0.000093"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:08.985623" elapsed="0.000096"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:08.987292" elapsed="0.000091"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:08.988037" elapsed="0.000032"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:08.988596" elapsed="0.000032"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:08.988939" elapsed="0.000032"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:08:08.987776" elapsed="0.001263"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:08:08.987522" elapsed="0.001578"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:08.990807" elapsed="0.000093"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:08:08.991064" elapsed="0.000059"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:08:08.946489" elapsed="0.044840">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:08:08.991529" elapsed="0.000019"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T01:08:08.914024" elapsed="0.077618">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:08.992005" elapsed="0.000024"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:08.996798" elapsed="0.000028"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:08.997007" elapsed="0.000022"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T01:08:08.997074" elapsed="0.000015"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T01:08:08.903972" elapsed="0.093226">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:08:08.997318" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:08:08.997362" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:08:08.903403" elapsed="0.093983"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T01:08:08.997598" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:08:08.997478" elapsed="0.000162"/>
</branch>
<status status="PASS" start="2026-04-08T01:08:08.997457" elapsed="0.000207"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:08:08.999127" elapsed="0.000238"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:08:08.999895" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:08:08.999535" elapsed="0.000386"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:08:09.001216" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:08:09.000672" elapsed="0.000594"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:08:09.001396" elapsed="0.000033"/>
</return>
<msg time="2026-04-08T01:08:09.001553" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:08:09.000119" elapsed="0.001459"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:08:09.002205" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:08:09.001750" elapsed="0.000482"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:08:09.002919" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:08:09.002401" elapsed="0.000553"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:08:09.003467" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:08:09.016022" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:08:09.003132" elapsed="0.016782">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:09.020415" elapsed="0.000053"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:09.020829" elapsed="0.000047"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:09.021270" elapsed="0.000048"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:09.021667" elapsed="0.000045"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:09.022067" elapsed="0.000045"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:09.022486" elapsed="0.000046"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:09.023115" elapsed="0.000148"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:09.023763" elapsed="0.000047"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:09.024265" elapsed="0.000048"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:08:09.022779" elapsed="0.001672"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:08:09.022632" elapsed="0.001881"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:09.024853" elapsed="0.000046"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:08:09.024986" elapsed="0.000035"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:08:08.998499" elapsed="0.026768">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:08:09.025528" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:08:09.025626" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:08:08.997826" elapsed="0.027851"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T01:08:09.027193" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T01:08:09.026400" elapsed="0.000856">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T01:08:09.025864" elapsed="0.001456">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T01:08:09.025822" elapsed="0.001530">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T01:08:09.027399" elapsed="0.000016"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:08:08.902782" elapsed="0.124718">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:09.027688" elapsed="0.000022"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:09.027866" elapsed="0.000021"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T01:08:09.027928" elapsed="0.000014"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T01:08:08.900185" elapsed="0.127842">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:09.028224" elapsed="0.000022"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:09.028415" elapsed="0.000020"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:09.028594" elapsed="0.000020"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:09.028765" elapsed="0.000021"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:09.028943" elapsed="0.000020"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:09.029115" elapsed="0.000019"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T01:08:09.029199" elapsed="0.000016"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T01:08:08.897201" elapsed="0.132101">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:08:10.063221" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:08:10.062729" elapsed="0.000525"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:08:10.063748" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:08:10.063436" elapsed="0.000339"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T01:08:10.063824" elapsed="0.000040"/>
</return>
<msg time="2026-04-08T01:08:10.063995" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T01:08:10.062283" elapsed="0.001738"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T01:08:10.069243" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T01:08:10.068944" elapsed="0.000327"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:08:10.069437" elapsed="0.000292"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:08:10.070214" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:08:10.069898" elapsed="0.000342"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:08:10.070775" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:08:10.070464" elapsed="0.000354"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:08:10.070978" elapsed="0.000276"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:08:10.071709" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:08:10.071420" elapsed="0.000315"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:08:10.072235" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:08:10.071932" elapsed="0.000345"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:08:10.072993" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:08:10.072526" elapsed="0.000493"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:08:10.073520" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:08:10.073237" elapsed="0.000327"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:08:10.074056" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:08:10.073728" elapsed="0.000355"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:08:10.081364" elapsed="0.000376"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:08:10.112923" elapsed="0.000455"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:08:10.115349" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:08:10.114694" elapsed="0.000752"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:08:10.117077" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:08:10.116809" elapsed="0.000294"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:08:10.117213" elapsed="0.000057"/>
</return>
<msg time="2026-04-08T01:08:10.117564" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:08:10.116034" elapsed="0.001627"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:08:10.119613" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:08:10.118856" elapsed="0.000853"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:08:10.121727" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:08:10.121065" elapsed="0.000759"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:08:10.123496" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:08:10.141431" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:08:10.123110" elapsed="0.022416">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:10.148094" elapsed="0.000180"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:10.150816" elapsed="0.000149"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:10.152191" elapsed="0.000067"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:10.153334" elapsed="0.000066"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:10.154558" elapsed="0.000065"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:10.155698" elapsed="0.000065"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:10.156240" elapsed="0.000023"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:10.156468" elapsed="0.000022"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:10.156682" elapsed="0.000022"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:08:10.156038" elapsed="0.000707"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:08:10.155861" elapsed="0.000926"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:10.157863" elapsed="0.000066"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:08:10.158004" elapsed="0.000039"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:08:10.111139" elapsed="0.047189">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:08:10.158528" elapsed="0.000017"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T01:08:10.078540" elapsed="0.080098">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:10.158831" elapsed="0.000021"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:10.163490" elapsed="0.000027"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:10.163699" elapsed="0.000021"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T01:08:10.163766" elapsed="0.000016"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T01:08:10.068152" elapsed="0.095723">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:08:10.164028" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:08:10.164073" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:08:10.067500" elapsed="0.096597"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T01:08:10.164319" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:08:10.164203" elapsed="0.000159"/>
</branch>
<status status="PASS" start="2026-04-08T01:08:10.164181" elapsed="0.000204"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:08:10.165769" elapsed="0.000212"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:08:10.166716" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:08:10.166147" elapsed="0.000596"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:08:10.167917" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:08:10.167388" elapsed="0.000570"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:08:10.168087" elapsed="0.000033"/>
</return>
<msg time="2026-04-08T01:08:10.168261" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:08:10.166939" elapsed="0.001347"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:08:10.168895" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:08:10.168460" elapsed="0.000462"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:08:10.169534" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:08:10.169092" elapsed="0.000468"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:08:10.170039" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:08:10.182807" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:08:10.169733" elapsed="0.016898">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:10.187069" elapsed="0.000051"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:10.187528" elapsed="0.000048"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:10.187922" elapsed="0.000046"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:10.188355" elapsed="0.000048"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:10.188763" elapsed="0.000046"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:10.189152" elapsed="0.000075"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:10.189788" elapsed="0.000045"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:10.190394" elapsed="0.000050"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:10.190855" elapsed="0.000046"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:08:10.189475" elapsed="0.001557"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:08:10.189329" elapsed="0.001755"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:10.191317" elapsed="0.000029"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:08:10.191401" elapsed="0.000021"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:08:10.165177" elapsed="0.026376">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:08:10.191764" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:08:10.191827" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:08:10.164551" elapsed="0.027309"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T01:08:10.192780" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T01:08:10.192334" elapsed="0.000531">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T01:08:10.191976" elapsed="0.000976">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T01:08:10.191949" elapsed="0.001046">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T01:08:10.193060" elapsed="0.000022"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:08:10.066889" elapsed="0.126331">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:10.193484" elapsed="0.000030"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:10.193730" elapsed="0.000028"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T01:08:10.193814" elapsed="0.000020"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T01:08:10.064344" elapsed="0.129609">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:10.194237" elapsed="0.000030"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:10.194505" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:10.194754" elapsed="0.000028"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:10.194998" elapsed="0.000027"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:10.195270" elapsed="0.000029"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:10.195515" elapsed="0.000027"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T01:08:10.195599" elapsed="0.000020"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T01:08:10.061452" elapsed="0.134286">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:08:11.229484" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:08:11.228991" elapsed="0.000526"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:08:11.230015" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:08:11.229699" elapsed="0.000343"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T01:08:11.230090" elapsed="0.000040"/>
</return>
<msg time="2026-04-08T01:08:11.230279" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T01:08:11.228561" elapsed="0.001868"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T01:08:11.235399" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T01:08:11.235113" elapsed="0.000313"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:08:11.235592" elapsed="0.000286"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:08:11.236366" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:08:11.236048" elapsed="0.000344"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:08:11.236934" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:08:11.236620" elapsed="0.000357"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:08:11.237140" elapsed="0.000284"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:08:11.237897" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:08:11.237597" elapsed="0.000327"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:08:11.238434" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:08:11.238123" elapsed="0.000353"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:08:11.239114" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:08:11.238655" elapsed="0.000486"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:08:11.239649" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:08:11.239356" elapsed="0.000338"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:08:11.240213" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:08:11.239858" elapsed="0.000382"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:08:11.247553" elapsed="0.000374"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:08:11.278687" elapsed="0.000484"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:08:11.281014" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:08:11.280340" elapsed="0.000775"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:08:11.283280" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:08:11.282984" elapsed="0.000323"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:08:11.283405" elapsed="0.000066"/>
</return>
<msg time="2026-04-08T01:08:11.283764" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:08:11.281757" elapsed="0.002103"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:08:11.285701" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:08:11.284952" elapsed="0.000846"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:08:11.287652" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:08:11.286895" elapsed="0.000856"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:08:11.289359" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:08:11.301546" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:08:11.288880" elapsed="0.015267">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:11.305796" elapsed="0.000097"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:11.307468" elapsed="0.000095"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:11.309597" elapsed="0.000096"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:11.311328" elapsed="0.000095"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:11.312954" elapsed="0.000093"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:11.314809" elapsed="0.000091"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:11.315591" elapsed="0.000038"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:11.315922" elapsed="0.000030"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:11.316244" elapsed="0.000031"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:08:11.315317" elapsed="0.001017"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:08:11.315041" elapsed="0.001352"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:11.318041" elapsed="0.000108"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:08:11.318480" elapsed="0.000113"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:08:11.276502" elapsed="0.042537">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:08:11.319615" elapsed="0.000051"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T01:08:11.244823" elapsed="0.075074">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:11.320380" elapsed="0.000054"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:11.331301" elapsed="0.000036"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:11.331541" elapsed="0.000023"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T01:08:11.331613" elapsed="0.000019"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T01:08:11.234526" elapsed="0.097216">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:08:11.331880" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:08:11.331927" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:08:11.233926" elapsed="0.098026"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T01:08:11.332217" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:08:11.332052" elapsed="0.000209"/>
</branch>
<status status="PASS" start="2026-04-08T01:08:11.332029" elapsed="0.000256"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:08:11.333835" elapsed="0.000221"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:08:11.334689" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:08:11.334272" elapsed="0.000445"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:08:11.336057" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:08:11.335497" elapsed="0.000601"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:08:11.336259" elapsed="0.000041"/>
</return>
<msg time="2026-04-08T01:08:11.336428" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:08:11.335012" elapsed="0.001443"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:08:11.337101" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:08:11.336631" elapsed="0.000498"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:08:11.337756" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:08:11.337319" elapsed="0.000464"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:08:11.338414" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:08:11.349847" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:08:11.337971" elapsed="0.015885">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:11.354463" elapsed="0.000065"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:11.354891" elapsed="0.000046"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:11.355341" elapsed="0.000052"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:11.355776" elapsed="0.000048"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:11.356256" elapsed="0.000050"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:11.356680" elapsed="0.000048"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:11.357397" elapsed="0.000050"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:11.357971" elapsed="0.000049"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:11.358555" elapsed="0.000051"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:08:11.357025" elapsed="0.001726"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:08:11.356843" elapsed="0.001977"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:11.359141" elapsed="0.000036"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:08:11.359225" elapsed="0.000019"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:08:11.333212" elapsed="0.026150">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:08:11.359512" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:08:11.359557" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:08:11.332458" elapsed="0.027122"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T01:08:11.360357" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T01:08:11.359938" elapsed="0.000482">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T01:08:11.359680" elapsed="0.000803">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T01:08:11.359657" elapsed="0.000859">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T01:08:11.360564" elapsed="0.000015"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:08:11.233323" elapsed="0.127407">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:11.360927" elapsed="0.000021"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:11.361122" elapsed="0.000025"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T01:08:11.361221" elapsed="0.000020"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T01:08:11.230774" elapsed="0.130563">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:11.361519" elapsed="0.000021"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:11.361714" elapsed="0.000020"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:11.361895" elapsed="0.000020"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:11.362081" elapsed="0.000021"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:11.362292" elapsed="0.000021"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:11.362471" elapsed="0.000020"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T01:08:11.362534" elapsed="0.000014"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T01:08:11.227683" elapsed="0.134956">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:08:12.394445" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:08:12.393871" elapsed="0.000607"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:08:12.394993" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:08:12.394660" elapsed="0.000360"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T01:08:12.395067" elapsed="0.000039"/>
</return>
<msg time="2026-04-08T01:08:12.395261" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T01:08:12.393450" elapsed="0.001837"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T01:08:12.400281" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T01:08:12.399980" elapsed="0.000329"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:08:12.400477" elapsed="0.000278"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:08:12.401226" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:08:12.400920" elapsed="0.000333"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:08:12.401845" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:08:12.401477" elapsed="0.000411"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:08:12.402049" elapsed="0.000280"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:08:12.402782" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:08:12.402496" elapsed="0.000312"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:08:12.403397" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:08:12.403072" elapsed="0.000370"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:08:12.404072" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:08:12.403612" elapsed="0.000486"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:08:12.404597" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:08:12.404311" elapsed="0.000331"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:08:12.405137" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:08:12.404807" elapsed="0.000380"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:08:12.412274" elapsed="0.000378"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:08:12.449647" elapsed="0.000455"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:08:12.452076" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:08:12.451426" elapsed="0.000764"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:08:12.454076" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:08:12.453807" elapsed="0.000295"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:08:12.454214" elapsed="0.000062"/>
</return>
<msg time="2026-04-08T01:08:12.454572" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:08:12.452792" elapsed="0.001877"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:08:12.456565" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:08:12.455811" elapsed="0.000853"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:08:12.458674" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:08:12.458015" elapsed="0.000782"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:08:12.460262" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:08:12.473909" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:08:12.459881" elapsed="0.018078">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:12.480555" elapsed="0.000152"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:12.483294" elapsed="0.000075"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:12.484435" elapsed="0.000064"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:12.485572" elapsed="0.000074"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:12.486792" elapsed="0.000068"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:12.488013" elapsed="0.000065"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:12.488581" elapsed="0.000022"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:12.488808" elapsed="0.000021"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:12.489024" elapsed="0.000022"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:08:12.488392" elapsed="0.000857"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:08:12.488197" elapsed="0.001104"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:12.490479" elapsed="0.000067"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:08:12.490638" elapsed="0.000043"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:08:12.447797" elapsed="0.043080">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:08:12.491080" elapsed="0.000017"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T01:08:12.409570" elapsed="0.081641">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:12.491407" elapsed="0.000021"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:12.496238" elapsed="0.000029"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:12.496448" elapsed="0.000022"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T01:08:12.496516" elapsed="0.000016"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T01:08:12.399398" elapsed="0.097228">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:08:12.496751" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:08:12.496795" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:08:12.398731" elapsed="0.098087"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T01:08:12.497039" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:08:12.496914" elapsed="0.000167"/>
</branch>
<status status="PASS" start="2026-04-08T01:08:12.496892" elapsed="0.000212"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:08:12.498596" elapsed="0.000227"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:08:12.499486" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:08:12.498989" elapsed="0.000523"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:08:12.500745" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:08:12.500210" elapsed="0.000575"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:08:12.500917" elapsed="0.000034"/>
</return>
<msg time="2026-04-08T01:08:12.501075" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:08:12.499758" elapsed="0.001341"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:08:12.501729" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:08:12.501286" elapsed="0.000470"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:08:12.502422" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:08:12.501924" elapsed="0.000524"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:08:12.503002" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:08:12.514840" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:08:12.502674" elapsed="0.016061">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:12.519208" elapsed="0.000055"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:12.519627" elapsed="0.000047"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:12.520023" elapsed="0.000046"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:12.520464" elapsed="0.000049"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:12.520879" elapsed="0.000045"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:12.521300" elapsed="0.000048"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:12.521910" elapsed="0.000046"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:12.522584" elapsed="0.000070"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:12.523105" elapsed="0.000094"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:08:12.521598" elapsed="0.001981"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:08:12.521449" elapsed="0.002229"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:12.524058" elapsed="0.000053"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:08:12.524246" elapsed="0.000038"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:08:12.497947" elapsed="0.026570">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:08:12.524774" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:08:12.524871" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:08:12.497284" elapsed="0.027637"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T01:08:12.526429" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T01:08:12.525661" elapsed="0.000945">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T01:08:12.525105" elapsed="0.001649">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T01:08:12.525063" elapsed="0.001762">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T01:08:12.526931" elapsed="0.000035"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:08:12.398133" elapsed="0.129060">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:12.527640" elapsed="0.000050"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:12.528038" elapsed="0.000044"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T01:08:12.528206" elapsed="0.000035"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T01:08:12.395595" elapsed="0.132842">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:12.528984" elapsed="0.000068"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:12.529508" elapsed="0.000050"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:12.529924" elapsed="0.000043"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:12.530341" elapsed="0.000046"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:12.530777" elapsed="0.000050"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:12.531212" elapsed="0.000047"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T01:08:12.531352" elapsed="0.000032"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T01:08:12.392612" elapsed="0.138985">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:08:13.566116" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:08:13.565541" elapsed="0.000639"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:08:13.566760" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:08:13.566403" elapsed="0.000392"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T01:08:13.566849" elapsed="0.000052"/>
</return>
<msg time="2026-04-08T01:08:13.567073" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T01:08:13.564977" elapsed="0.002124"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T01:08:13.572483" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T01:08:13.572203" elapsed="0.000308"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:08:13.572676" elapsed="0.000273"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:08:13.573433" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:08:13.573117" elapsed="0.000342"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:08:13.574022" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:08:13.573695" elapsed="0.000370"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:08:13.574244" elapsed="0.000262"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:08:13.574959" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:08:13.574671" elapsed="0.000314"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:08:13.575488" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:08:13.575196" elapsed="0.000333"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:08:13.576183" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:08:13.575693" elapsed="0.000517"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:08:13.576687" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:08:13.576403" elapsed="0.000327"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:08:13.577232" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:08:13.576892" elapsed="0.000367"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:08:13.628389" elapsed="0.000504"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:08:13.660653" elapsed="0.000439"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:08:13.662835" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:08:13.662183" elapsed="0.000751"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:08:13.664759" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:08:13.664481" elapsed="0.000305"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:08:13.664885" elapsed="0.000065"/>
</return>
<msg time="2026-04-08T01:08:13.665426" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:08:13.663636" elapsed="0.001887"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:08:13.667652" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:08:13.666656" elapsed="0.001092"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:08:13.669555" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:08:13.668856" elapsed="0.000796"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:08:13.671139" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:08:13.683150" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:08:13.670765" elapsed="0.014251">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:13.686177" elapsed="0.000068"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:13.687316" elapsed="0.000066"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:13.688496" elapsed="0.000065"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:13.689676" elapsed="0.000064"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:13.690815" elapsed="0.000066"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:13.691979" elapsed="0.000064"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:13.692602" elapsed="0.000022"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:13.692829" elapsed="0.000021"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:13.693044" elapsed="0.000022"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:08:13.692414" elapsed="0.000693"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:08:13.692141" elapsed="0.001009"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:13.694233" elapsed="0.000065"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:08:13.694372" elapsed="0.000040"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:08:13.658639" elapsed="0.035951">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:08:13.694788" elapsed="0.000018"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T01:08:13.625498" elapsed="0.069400">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:13.695133" elapsed="0.000035"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:13.699847" elapsed="0.000028"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:13.700054" elapsed="0.000022"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T01:08:13.700121" elapsed="0.000016"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T01:08:13.571573" elapsed="0.128854">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:08:13.700545" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:08:13.700589" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:08:13.570975" elapsed="0.129638"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T01:08:13.700822" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:08:13.700704" elapsed="0.000161"/>
</branch>
<status status="PASS" start="2026-04-08T01:08:13.700683" elapsed="0.000204"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:08:13.702281" elapsed="0.000210"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:08:13.703007" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:08:13.702656" elapsed="0.000377"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:08:13.704356" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:08:13.703698" elapsed="0.000699"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:08:13.704526" elapsed="0.000032"/>
</return>
<msg time="2026-04-08T01:08:13.704681" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:08:13.703245" elapsed="0.001461"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:08:13.705329" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:08:13.704878" elapsed="0.000478"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:08:13.705947" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:08:13.705525" elapsed="0.000449"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:08:13.706467" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:08:13.716351" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:08:13.706147" elapsed="0.011869">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:13.718234" elapsed="0.000023"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:13.718420" elapsed="0.000021"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:13.718595" elapsed="0.000020"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:13.718769" elapsed="0.000020"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:13.718947" elapsed="0.000020"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:13.719119" elapsed="0.000020"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:13.719475" elapsed="0.000021"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:13.719716" elapsed="0.000020"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:13.719918" elapsed="0.000021"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:08:13.719315" elapsed="0.000683"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:08:13.719247" elapsed="0.000779"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:13.720192" elapsed="0.000022"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:08:13.720254" elapsed="0.000016"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:08:13.701679" elapsed="0.018684">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:08:13.720477" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:08:13.720521" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:08:13.701048" elapsed="0.019496"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T01:08:13.721189" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T01:08:13.720852" elapsed="0.000400">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T01:08:13.720626" elapsed="0.000689">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T01:08:13.720607" elapsed="0.000740">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T01:08:13.721393" elapsed="0.000016"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:08:13.570386" elapsed="0.151107">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:13.721679" elapsed="0.000021"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:13.721854" elapsed="0.000020"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T01:08:13.721915" elapsed="0.000015"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T01:08:13.567492" elapsed="0.154521">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:13.722222" elapsed="0.000022"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:13.722411" elapsed="0.000020"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:13.722587" elapsed="0.000021"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:13.722757" elapsed="0.000020"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:13.722931" elapsed="0.000020"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:13.723102" elapsed="0.000019"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T01:08:13.723217" elapsed="0.000016"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T01:08:13.563837" elapsed="0.159484">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:08:14.760721" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:08:14.760099" elapsed="0.000664"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:08:14.761447" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:08:14.761015" elapsed="0.000467"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T01:08:14.761542" elapsed="0.000053"/>
</return>
<msg time="2026-04-08T01:08:14.761764" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T01:08:14.759559" elapsed="0.002238"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T01:08:14.767446" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T01:08:14.767148" elapsed="0.000325"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:08:14.767640" elapsed="0.000275"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:08:14.768437" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:08:14.768083" elapsed="0.000382"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:08:14.769062" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:08:14.768706" elapsed="0.000412"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:08:14.769319" elapsed="0.000290"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:08:14.770130" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:08:14.769794" elapsed="0.000383"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:08:14.770806" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:08:14.770439" elapsed="0.000420"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:08:14.771773" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:08:14.771077" elapsed="0.000725"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:08:14.772437" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:08:14.772055" elapsed="0.000440"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:08:14.773126" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:08:14.772709" elapsed="0.000481"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:08:14.782204" elapsed="0.000476"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:08:14.821744" elapsed="0.000608"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:08:14.824705" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:08:14.823711" elapsed="0.001144"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:08:14.827212" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:08:14.826861" elapsed="0.000386"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:08:14.827367" elapsed="0.000078"/>
</return>
<msg time="2026-04-08T01:08:14.827809" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:08:14.825628" elapsed="0.002301"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:08:14.830475" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:08:14.829324" elapsed="0.001347"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:08:14.833109" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:08:14.832068" elapsed="0.001308"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:08:14.837278" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:08:14.852333" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:08:14.836309" elapsed="0.020733">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:14.858828" elapsed="0.000107"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:14.860477" elapsed="0.000092"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:14.862116" elapsed="0.000110"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:14.863746" elapsed="0.000092"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:14.865627" elapsed="0.000093"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:14.867236" elapsed="0.000092"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:14.868017" elapsed="0.000032"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:14.868359" elapsed="0.000032"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:14.868665" elapsed="0.000046"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:08:14.867751" elapsed="0.001021"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:08:14.867472" elapsed="0.001361"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:14.870825" elapsed="0.000095"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:08:14.871038" elapsed="0.000062"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:08:14.819329" elapsed="0.052256">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:08:14.871870" elapsed="0.000028"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T01:08:14.778547" elapsed="0.093485">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:14.872334" elapsed="0.000032"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:14.879035" elapsed="0.000031"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:14.879268" elapsed="0.000023"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T01:08:14.879337" elapsed="0.000016"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T01:08:14.766562" elapsed="0.112962">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:08:14.879671" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:08:14.879717" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:08:14.765869" elapsed="0.113872"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T01:08:14.879990" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:08:14.879848" elapsed="0.000185"/>
</branch>
<status status="PASS" start="2026-04-08T01:08:14.879824" elapsed="0.000234"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:08:14.881632" elapsed="0.000217"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:08:14.882467" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:08:14.882017" elapsed="0.000476"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:08:14.883692" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:08:14.883131" elapsed="0.000602"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:08:14.883865" elapsed="0.000034"/>
</return>
<msg time="2026-04-08T01:08:14.884025" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:08:14.882694" elapsed="0.001356"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:08:14.884706" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:08:14.884245" elapsed="0.000488"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:08:14.885358" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:08:14.884906" elapsed="0.000481"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:08:14.885999" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:08:14.897203" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:08:14.885645" elapsed="0.014032">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:14.899956" elapsed="0.000032"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:14.900236" elapsed="0.000031"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:14.900486" elapsed="0.000029"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:14.900780" elapsed="0.000032"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:14.901044" elapsed="0.000029"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:14.901428" elapsed="0.000053"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:14.902065" elapsed="0.000046"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:14.902645" elapsed="0.000048"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:14.903103" elapsed="0.000047"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:08:14.901748" elapsed="0.001605"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:08:14.901592" elapsed="0.001828"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:14.903769" elapsed="0.000047"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:08:14.903904" elapsed="0.000035"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:08:14.880988" elapsed="0.023165">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:08:14.904538" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:08:14.904692" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:08:14.880245" elapsed="0.024507"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T01:08:14.905836" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T01:08:14.905375" elapsed="0.000546">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T01:08:14.904943" elapsed="0.001066">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T01:08:14.904898" elapsed="0.001155">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T01:08:14.906118" elapsed="0.000022"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:08:14.765197" elapsed="0.141087">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:14.906552" elapsed="0.000030"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:14.906798" elapsed="0.000029"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T01:08:14.906885" elapsed="0.000021"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T01:08:14.762207" elapsed="0.144819">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:14.907320" elapsed="0.000032"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:14.907591" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:14.907839" elapsed="0.000028"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:14.908076" elapsed="0.000028"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:14.908354" elapsed="0.000029"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:14.908600" elapsed="0.000046"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T01:08:14.908706" elapsed="0.000021"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T01:08:14.758575" elapsed="0.150276">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:08:15.940922" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:08:15.940426" elapsed="0.000529"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:08:15.941600" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:08:15.941138" elapsed="0.000490"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T01:08:15.941677" elapsed="0.000041"/>
</return>
<msg time="2026-04-08T01:08:15.941850" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T01:08:15.939981" elapsed="0.001895"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T01:08:15.946828" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T01:08:15.946560" elapsed="0.000295"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:08:15.947023" elapsed="0.000294"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:08:15.947782" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:08:15.947489" elapsed="0.000319"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:08:15.948494" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:08:15.948186" elapsed="0.000352"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:08:15.948701" elapsed="0.000261"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:08:15.949433" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:08:15.949128" elapsed="0.000331"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:08:15.949949" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:08:15.949658" elapsed="0.000333"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:08:15.950661" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:08:15.950172" elapsed="0.000515"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:08:15.951190" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:08:15.950883" elapsed="0.000355"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:08:15.951736" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:08:15.951405" elapsed="0.000358"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:08:15.958958" elapsed="0.000418"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:08:15.990411" elapsed="0.000449"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:08:15.992731" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:08:15.991956" elapsed="0.000874"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:08:15.994804" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:08:15.994532" elapsed="0.000298"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:08:15.994929" elapsed="0.000062"/>
</return>
<msg time="2026-04-08T01:08:15.995306" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:08:15.993457" elapsed="0.001946"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:08:15.997268" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:08:15.996518" elapsed="0.000849"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:08:15.999299" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:08:15.998634" elapsed="0.000763"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:08:16.000915" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:08:16.013456" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:08:16.000541" elapsed="0.015522">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:16.017628" elapsed="0.000162"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:16.019348" elapsed="0.000092"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:16.020940" elapsed="0.000090"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:16.022575" elapsed="0.000093"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:16.024190" elapsed="0.000092"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:16.025791" elapsed="0.000092"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:16.026745" elapsed="0.000032"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:16.027066" elapsed="0.000031"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:16.027387" elapsed="0.000031"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:08:16.026481" elapsed="0.000997"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:08:16.026017" elapsed="0.001519"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:16.029055" elapsed="0.000093"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:08:16.029281" elapsed="0.000055"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:08:15.988373" elapsed="0.041212">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:08:16.029859" elapsed="0.000024"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T01:08:15.956289" elapsed="0.073726">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:16.030371" elapsed="0.000032"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:16.035408" elapsed="0.000028"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:16.035619" elapsed="0.000021"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T01:08:16.035688" elapsed="0.000016"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T01:08:15.945947" elapsed="0.089852">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:08:16.035921" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:08:16.035965" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:08:15.945374" elapsed="0.090614"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T01:08:16.036219" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:08:16.036081" elapsed="0.000183"/>
</branch>
<status status="PASS" start="2026-04-08T01:08:16.036060" elapsed="0.000227"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:08:16.037715" elapsed="0.000211"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:08:16.038580" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:08:16.038092" elapsed="0.000514"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:08:16.039788" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:08:16.039254" elapsed="0.000574"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:08:16.039958" elapsed="0.000032"/>
</return>
<msg time="2026-04-08T01:08:16.040113" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:08:16.038804" elapsed="0.001333"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:08:16.040761" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:08:16.040327" elapsed="0.000460"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:08:16.041393" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:08:16.040955" elapsed="0.000465"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:08:16.041896" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:08:16.053200" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:08:16.041591" elapsed="0.015043">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:16.056936" elapsed="0.000035"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:16.057220" elapsed="0.000031"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:16.057471" elapsed="0.000029"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:16.057720" elapsed="0.000034"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:16.058011" elapsed="0.000030"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:16.058311" elapsed="0.000032"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:16.058705" elapsed="0.000028"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:16.059087" elapsed="0.000042"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:16.059441" elapsed="0.000031"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:08:16.058505" elapsed="0.001051"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:08:16.058409" elapsed="0.001194"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:16.059893" elapsed="0.000042"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:08:16.060010" elapsed="0.000031"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:08:16.037108" elapsed="0.023118">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:08:16.060444" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:08:16.060529" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:08:16.036449" elapsed="0.024123"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T01:08:16.061856" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T01:08:16.061325" elapsed="0.000621">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T01:08:16.060732" elapsed="0.001365">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T01:08:16.060695" elapsed="0.001452">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T01:08:16.062259" elapsed="0.000025"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:08:15.944768" elapsed="0.117646">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:16.062699" elapsed="0.000033"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:16.062963" elapsed="0.000030"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T01:08:16.063055" elapsed="0.000021"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T01:08:15.942205" elapsed="0.121022">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:16.063498" elapsed="0.000031"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:16.063777" elapsed="0.000029"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:16.064042" elapsed="0.000029"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:16.064323" elapsed="0.000031"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:16.064585" elapsed="0.000029"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:16.064842" elapsed="0.000030"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T01:08:16.064933" elapsed="0.000021"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T01:08:15.939122" elapsed="0.125960">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:08:17.098408" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:08:17.097914" elapsed="0.000525"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:08:17.098932" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:08:17.098620" elapsed="0.000338"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T01:08:17.099005" elapsed="0.000040"/>
</return>
<msg time="2026-04-08T01:08:17.099192" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T01:08:17.097491" elapsed="0.001727"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T01:08:17.104420" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T01:08:17.104092" elapsed="0.000356"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:08:17.104616" elapsed="0.000272"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:08:17.105439" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:08:17.105117" elapsed="0.000349"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:08:17.105992" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:08:17.105687" elapsed="0.000349"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:08:17.106216" elapsed="0.000408"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:08:17.107081" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:08:17.106791" elapsed="0.000316"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:08:17.107613" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:08:17.107321" elapsed="0.000336"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:08:17.108325" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:08:17.107823" elapsed="0.000534"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:08:17.108840" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:08:17.108554" elapsed="0.000331"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:08:17.109404" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:08:17.109048" elapsed="0.000527"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:08:17.116719" elapsed="0.000374"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:08:17.147733" elapsed="0.000454"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:08:17.149951" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:08:17.149303" elapsed="0.000749"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:08:17.152057" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:08:17.151791" elapsed="0.000292"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:08:17.152194" elapsed="0.000068"/>
</return>
<msg time="2026-04-08T01:08:17.152556" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:08:17.151031" elapsed="0.001621"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:08:17.154641" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:08:17.153751" elapsed="0.000987"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:08:17.156768" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:08:17.156053" elapsed="0.000813"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:08:17.158538" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:08:17.170718" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:08:17.157976" elapsed="0.015475">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:17.175999" elapsed="0.000153"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:17.178832" elapsed="0.000151"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:17.181668" elapsed="0.000151"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:17.184348" elapsed="0.000151"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:17.186214" elapsed="0.000073"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:17.187385" elapsed="0.000066"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:17.187922" elapsed="0.000022"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:17.188256" elapsed="0.000025"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:17.188483" elapsed="0.000022"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:08:17.187734" elapsed="0.000813"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:08:17.187552" elapsed="0.001037"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:17.189784" elapsed="0.000064"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:08:17.189924" elapsed="0.000039"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:08:17.145696" elapsed="0.044448">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:08:17.190356" elapsed="0.000018"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T01:08:17.114022" elapsed="0.076446">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:17.190662" elapsed="0.000021"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:17.195297" elapsed="0.000028"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:17.195507" elapsed="0.000022"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T01:08:17.195574" elapsed="0.000016"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T01:08:17.103495" elapsed="0.092188">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:08:17.195802" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:08:17.195845" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:08:17.102909" elapsed="0.092959"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T01:08:17.196192" elapsed="0.000020"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:08:17.195972" elapsed="0.000276"/>
</branch>
<status status="PASS" start="2026-04-08T01:08:17.195941" elapsed="0.000334"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:08:17.198096" elapsed="0.000270"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:08:17.199017" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:08:17.198570" elapsed="0.000477"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:08:17.200456" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:08:17.199820" elapsed="0.000683"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:08:17.200652" elapsed="0.000044"/>
</return>
<msg time="2026-04-08T01:08:17.200838" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:08:17.199298" elapsed="0.001568"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:08:17.201701" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:08:17.201067" elapsed="0.000664"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:08:17.202518" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:08:17.202004" elapsed="0.000544"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:08:17.203150" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:08:17.214962" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:08:17.202761" elapsed="0.016113">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:17.219371" elapsed="0.000055"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:17.219798" elapsed="0.000047"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:17.220409" elapsed="0.000064"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:17.220950" elapsed="0.000055"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:17.221416" elapsed="0.000047"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:17.221898" elapsed="0.000055"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:17.222583" elapsed="0.000047"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:17.223120" elapsed="0.000088"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:17.223627" elapsed="0.000047"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:08:17.222254" elapsed="0.001552"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:08:17.222061" elapsed="0.001810"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:17.224325" elapsed="0.000054"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:08:17.224473" elapsed="0.000035"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:08:17.197400" elapsed="0.027328">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:08:17.224992" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:08:17.225093" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:08:17.196470" elapsed="0.028676"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T01:08:17.225880" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T01:08:17.225533" elapsed="0.000410">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T01:08:17.225294" elapsed="0.000714">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T01:08:17.225273" elapsed="0.000768">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T01:08:17.226088" elapsed="0.000017"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:08:17.102329" elapsed="0.123878">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:17.226406" elapsed="0.000022"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:17.226587" elapsed="0.000021"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T01:08:17.226690" elapsed="0.000017"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T01:08:17.099682" elapsed="0.127113">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:17.226980" elapsed="0.000022"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:17.227189" elapsed="0.000022"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:17.227380" elapsed="0.000020"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:17.227553" elapsed="0.000019"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:17.227729" elapsed="0.000021"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:17.227906" elapsed="0.000021"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T01:08:17.227969" elapsed="0.000015"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T01:08:17.096656" elapsed="0.131431">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:08:18.263123" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:08:18.262618" elapsed="0.000554"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:08:18.263677" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:08:18.263361" elapsed="0.000342"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T01:08:18.263752" elapsed="0.000046"/>
</return>
<msg time="2026-04-08T01:08:18.263932" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T01:08:18.262133" elapsed="0.001823"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T01:08:18.269037" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T01:08:18.268749" elapsed="0.000315"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:08:18.269258" elapsed="0.000278"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:08:18.270097" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:08:18.269708" elapsed="0.000416"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:08:18.270713" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:08:18.270403" elapsed="0.000352"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:08:18.270916" elapsed="0.000278"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:08:18.271650" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:08:18.271363" elapsed="0.000313"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:08:18.272179" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:08:18.271873" elapsed="0.000349"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:08:18.272846" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:08:18.272389" elapsed="0.000484"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:08:18.273451" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:08:18.273146" elapsed="0.000349"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:08:18.273991" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:08:18.273660" elapsed="0.000358"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:08:18.282966" elapsed="0.000398"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:08:18.314585" elapsed="0.000451"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:08:18.317021" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:08:18.316366" elapsed="0.000753"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:08:18.318844" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:08:18.318575" elapsed="0.000296"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:08:18.318972" elapsed="0.000062"/>
</return>
<msg time="2026-04-08T01:08:18.319652" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:08:18.317748" elapsed="0.002000"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:08:18.321802" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:08:18.320868" elapsed="0.001033"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:08:18.323806" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:08:18.322999" elapsed="0.000904"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:08:18.325403" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:08:18.338085" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:08:18.324996" elapsed="0.017983">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:18.346032" elapsed="0.000263"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:18.348280" elapsed="0.000094"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:18.349871" elapsed="0.000093"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:18.351561" elapsed="0.000095"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:18.353198" elapsed="0.000096"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:18.354978" elapsed="0.000092"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:18.355754" elapsed="0.000032"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:18.356074" elapsed="0.000031"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:18.356414" elapsed="0.000032"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:08:18.355490" elapsed="0.001015"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:08:18.355238" elapsed="0.001327"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:18.358071" elapsed="0.000208"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:08:18.358424" elapsed="0.000058"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:08:18.312732" elapsed="0.046058">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:08:18.359255" elapsed="0.000032"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T01:08:18.280270" elapsed="0.079177">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:18.359652" elapsed="0.000022"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:18.364707" elapsed="0.000029"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:18.364919" elapsed="0.000021"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T01:08:18.364986" elapsed="0.000016"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T01:08:18.268108" elapsed="0.096988">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:08:18.365230" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:08:18.365275" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:08:18.267533" elapsed="0.097766"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T01:08:18.365520" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:08:18.365397" elapsed="0.000165"/>
</branch>
<status status="PASS" start="2026-04-08T01:08:18.365374" elapsed="0.000212"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:08:18.367130" elapsed="0.000311"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:08:18.368288" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:08:18.367725" elapsed="0.000600"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:08:18.370060" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:08:18.369256" elapsed="0.000865"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:08:18.370352" elapsed="0.000048"/>
</return>
<msg time="2026-04-08T01:08:18.370588" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:08:18.368618" elapsed="0.002007"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:08:18.371629" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:08:18.370905" elapsed="0.000764"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:08:18.372551" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:08:18.371913" elapsed="0.000677"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:08:18.373312" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:08:18.385217" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:08:18.372835" elapsed="0.016517">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:18.389797" elapsed="0.000050"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:18.390265" elapsed="0.000050"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:18.390800" elapsed="0.000049"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:18.391232" elapsed="0.000048"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:18.391644" elapsed="0.000045"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:18.392076" elapsed="0.000051"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:18.392809" elapsed="0.000072"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:18.393603" elapsed="0.000067"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:18.394325" elapsed="0.000069"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:08:18.392420" elapsed="0.002161"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:08:18.392264" elapsed="0.002396"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:18.395131" elapsed="0.000092"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:08:18.395319" elapsed="0.000027"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:08:18.366530" elapsed="0.028920">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:08:18.395571" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:08:18.395615" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:08:18.365750" elapsed="0.029889"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T01:08:18.396324" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T01:08:18.395962" elapsed="0.000434">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T01:08:18.395726" elapsed="0.000735">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T01:08:18.395706" elapsed="0.000787">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T01:08:18.396541" elapsed="0.000017"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:08:18.266931" elapsed="0.129712">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:18.396834" elapsed="0.000021"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:18.397011" elapsed="0.000020"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T01:08:18.397072" elapsed="0.000015"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T01:08:18.264282" elapsed="0.132907">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:18.397374" elapsed="0.000020"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:18.397562" elapsed="0.000020"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:18.397740" elapsed="0.000020"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:18.397951" elapsed="0.000020"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:18.398130" elapsed="0.000054"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:18.398342" elapsed="0.000020"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T01:08:18.398404" elapsed="0.000014"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T01:08:18.261220" elapsed="0.137286">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:08:19.430912" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:08:19.430448" elapsed="0.000496"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:08:19.431471" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:08:19.431125" elapsed="0.000373"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T01:08:19.431546" elapsed="0.000039"/>
</return>
<msg time="2026-04-08T01:08:19.431716" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T01:08:19.429994" elapsed="0.001747"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T01:08:19.436666" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T01:08:19.436385" elapsed="0.000309"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:08:19.436859" elapsed="0.000270"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:08:19.437628" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:08:19.437333" elapsed="0.000321"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:08:19.438193" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:08:19.437876" elapsed="0.000362"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:08:19.438398" elapsed="0.000260"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:08:19.439109" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:08:19.438824" elapsed="0.000312"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:08:19.439640" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:08:19.439350" elapsed="0.000332"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:08:19.440319" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:08:19.439847" elapsed="0.000498"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:08:19.440869" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:08:19.440539" elapsed="0.000376"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:08:19.441462" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:08:19.441081" elapsed="0.000408"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:08:19.448712" elapsed="0.000384"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:08:19.480258" elapsed="0.000478"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:08:19.482623" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:08:19.481817" elapsed="0.000902"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:08:19.485116" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:08:19.484847" elapsed="0.000296"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:08:19.485257" elapsed="0.000060"/>
</return>
<msg time="2026-04-08T01:08:19.485615" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:08:19.484042" elapsed="0.001672"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:08:19.487572" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:08:19.486832" elapsed="0.000839"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:08:19.489530" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:08:19.488850" elapsed="0.000776"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:08:19.491068" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:08:19.501926" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:08:19.490708" elapsed="0.013088">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:19.504939" elapsed="0.000067"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:19.506099" elapsed="0.000077"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:19.507284" elapsed="0.000065"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:19.508439" elapsed="0.000076"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:19.509609" elapsed="0.000065"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:19.510760" elapsed="0.000066"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:19.511318" elapsed="0.000023"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:19.511545" elapsed="0.000022"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:19.511761" elapsed="0.000022"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:08:19.511103" elapsed="0.000722"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:08:19.510922" elapsed="0.000945"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:19.513001" elapsed="0.000067"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:08:19.513143" elapsed="0.000054"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:08:19.478473" elapsed="0.034913">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:08:19.513588" elapsed="0.000018"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T01:08:19.446005" elapsed="0.067693">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:19.513891" elapsed="0.000022"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:19.518760" elapsed="0.000027"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:19.519011" elapsed="0.000022"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T01:08:19.519080" elapsed="0.000016"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T01:08:19.435787" elapsed="0.083419">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:08:19.519324" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:08:19.519369" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:08:19.435213" elapsed="0.084180"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T01:08:19.519599" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:08:19.519484" elapsed="0.000158"/>
</branch>
<status status="PASS" start="2026-04-08T01:08:19.519463" elapsed="0.000201"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:08:19.521149" elapsed="0.000231"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:08:19.521905" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:08:19.521547" elapsed="0.000384"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:08:19.523109" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:08:19.522580" elapsed="0.000569"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:08:19.523297" elapsed="0.000033"/>
</return>
<msg time="2026-04-08T01:08:19.523455" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:08:19.522130" elapsed="0.001351"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:08:19.524089" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:08:19.523653" elapsed="0.000463"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:08:19.524771" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:08:19.524321" elapsed="0.000477"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:08:19.525393" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:08:19.536108" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:08:19.525058" elapsed="0.012786">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:19.538042" elapsed="0.000023"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:19.538243" elapsed="0.000022"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:19.538422" elapsed="0.000021"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:19.538601" elapsed="0.000020"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:19.538782" elapsed="0.000021"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:19.538957" elapsed="0.000021"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:19.539244" elapsed="0.000021"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:19.539484" elapsed="0.000021"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:19.539726" elapsed="0.000022"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:08:19.539089" elapsed="0.000721"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:08:19.539022" elapsed="0.000816"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:19.539993" elapsed="0.000020"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:08:19.540052" elapsed="0.000016"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:08:19.520560" elapsed="0.019618">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:08:19.540295" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:08:19.540345" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:08:19.519824" elapsed="0.020545"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T01:08:19.541024" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T01:08:19.540702" elapsed="0.000383">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T01:08:19.540468" elapsed="0.000680">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T01:08:19.540434" elapsed="0.000770">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T01:08:19.541254" elapsed="0.000015"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:08:19.434615" elapsed="0.106746">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:19.541548" elapsed="0.000021"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:19.541723" elapsed="0.000020"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T01:08:19.541784" elapsed="0.000015"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T01:08:19.432052" elapsed="0.109832">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:19.542062" elapsed="0.000021"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:19.542265" elapsed="0.000022"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:19.542446" elapsed="0.000020"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:19.542617" elapsed="0.000020"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:19.542792" elapsed="0.000020"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:19.542965" elapsed="0.000020"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T01:08:19.543025" elapsed="0.000015"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T01:08:19.429173" elapsed="0.113952">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:08:20.577700" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:08:20.577188" elapsed="0.000546"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:08:20.578243" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:08:20.577915" elapsed="0.000355"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T01:08:20.578317" elapsed="0.000042"/>
</return>
<msg time="2026-04-08T01:08:20.578490" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T01:08:20.576746" elapsed="0.001770"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T01:08:20.583562" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T01:08:20.583286" elapsed="0.000303"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:08:20.583753" elapsed="0.000274"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:08:20.584580" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:08:20.584283" elapsed="0.000324"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:08:20.585126" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:08:20.584824" elapsed="0.000362"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:08:20.585352" elapsed="0.000268"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:08:20.586078" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:08:20.585788" elapsed="0.000316"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:08:20.586615" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:08:20.586323" elapsed="0.000335"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:08:20.587481" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:08:20.586824" elapsed="0.000686"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:08:20.587993" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:08:20.587708" elapsed="0.000331"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:08:20.588557" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:08:20.588221" elapsed="0.000362"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:08:20.595777" elapsed="0.000371"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:08:20.627636" elapsed="0.000441"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:08:20.629843" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:08:20.629203" elapsed="0.000736"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:08:20.631780" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:08:20.631509" elapsed="0.000297"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:08:20.631900" elapsed="0.000054"/>
</return>
<msg time="2026-04-08T01:08:20.632462" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:08:20.630543" elapsed="0.002018"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:08:20.634634" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:08:20.633896" elapsed="0.000836"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:08:20.636507" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:08:20.635836" elapsed="0.000769"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:08:20.638254" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:08:20.651633" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:08:20.637873" elapsed="0.017853">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:20.658300" elapsed="0.000151"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:20.660430" elapsed="0.000091"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:20.662043" elapsed="0.000092"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:20.663701" elapsed="0.000111"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:20.665536" elapsed="0.000095"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:20.667196" elapsed="0.000094"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:20.667935" elapsed="0.000031"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:20.668451" elapsed="0.000032"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:20.668754" elapsed="0.000032"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:08:20.667674" elapsed="0.001169"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:08:20.667424" elapsed="0.001477"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:20.670433" elapsed="0.000090"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:08:20.670629" elapsed="0.000053"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:08:20.625534" elapsed="0.045397">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:08:20.671264" elapsed="0.000025"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T01:08:20.593077" elapsed="0.078369">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:20.671675" elapsed="0.000022"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:20.676379" elapsed="0.000028"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:20.676586" elapsed="0.000021"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T01:08:20.676652" elapsed="0.000016"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T01:08:20.582678" elapsed="0.094082">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:08:20.676872" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:08:20.676916" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:08:20.582087" elapsed="0.094852"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T01:08:20.677202" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:08:20.677067" elapsed="0.000179"/>
</branch>
<status status="PASS" start="2026-04-08T01:08:20.677044" elapsed="0.000226"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:08:20.678648" elapsed="0.000255"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:08:20.679537" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:08:20.679153" elapsed="0.000411"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:08:20.680874" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:08:20.680334" elapsed="0.000581"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:08:20.681048" elapsed="0.000031"/>
</return>
<msg time="2026-04-08T01:08:20.681220" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:08:20.679779" elapsed="0.001466"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:08:20.681852" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:08:20.681417" elapsed="0.000461"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:08:20.682488" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:08:20.682047" elapsed="0.000468"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:08:20.683014" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:08:20.696833" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:08:20.682688" elapsed="0.018172">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:20.701352" elapsed="0.000056"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:20.701767" elapsed="0.000049"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:20.702207" elapsed="0.000050"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:20.702640" elapsed="0.000048"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:20.703098" elapsed="0.000049"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:20.703511" elapsed="0.000031"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:20.703919" elapsed="0.000028"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:20.704282" elapsed="0.000031"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:20.704576" elapsed="0.000029"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:08:20.703720" elapsed="0.000970"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:08:20.703610" elapsed="0.001119"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:20.704941" elapsed="0.000029"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:08:20.705028" elapsed="0.000057"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:08:20.678044" elapsed="0.027316">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:08:20.705575" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:08:20.705647" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:08:20.677437" elapsed="0.028282"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T01:08:20.706835" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T01:08:20.706351" elapsed="0.000591">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T01:08:20.705967" elapsed="0.001065">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T01:08:20.705936" elapsed="0.001141">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T01:08:20.707143" elapsed="0.000044"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:08:20.581502" elapsed="0.125809">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:20.707576" elapsed="0.000030"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:20.707823" elapsed="0.000027"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T01:08:20.707909" elapsed="0.000020"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T01:08:20.578821" elapsed="0.129236">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:20.708331" elapsed="0.000030"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:20.708598" elapsed="0.000027"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:20.708846" elapsed="0.000028"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:20.709082" elapsed="0.000027"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:20.709355" elapsed="0.000028"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:20.709620" elapsed="0.000037"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T01:08:20.709716" elapsed="0.000038"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T01:08:20.575913" elapsed="0.133963">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:08:21.742496" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:08:21.741986" elapsed="0.000542"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:08:21.743026" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:08:21.742711" elapsed="0.000340"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T01:08:21.743101" elapsed="0.000044"/>
</return>
<msg time="2026-04-08T01:08:21.743296" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T01:08:21.741525" elapsed="0.001797"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T01:08:21.748295" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T01:08:21.748003" elapsed="0.000319"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:08:21.748488" elapsed="0.000274"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:08:21.749240" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:08:21.748931" elapsed="0.000338"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:08:21.749822" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:08:21.749492" elapsed="0.000373"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:08:21.750024" elapsed="0.000280"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:08:21.750754" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:08:21.750471" elapsed="0.000309"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:08:21.751286" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:08:21.750975" elapsed="0.000356"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:08:21.751956" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:08:21.751499" elapsed="0.000483"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:08:21.752476" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:08:21.752191" elapsed="0.000331"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:08:21.753016" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:08:21.752685" elapsed="0.000357"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:08:21.760127" elapsed="0.000387"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:08:21.792751" elapsed="0.000497"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:08:21.795030" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:08:21.794369" elapsed="0.000760"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:08:21.796827" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:08:21.796552" elapsed="0.000301"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:08:21.796951" elapsed="0.000066"/>
</return>
<msg time="2026-04-08T01:08:21.797703" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:08:21.795771" elapsed="0.002032"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:08:21.799700" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:08:21.798941" elapsed="0.000858"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:08:21.801568" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:08:21.800903" elapsed="0.000777"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:08:21.803369" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:08:21.817829" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:08:21.802971" elapsed="0.018467">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:21.824098" elapsed="0.000183"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:21.826685" elapsed="0.000066"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:21.827825" elapsed="0.000065"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:21.829023" elapsed="0.000065"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:21.830263" elapsed="0.000065"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:21.831398" elapsed="0.000065"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:21.831933" elapsed="0.000023"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:21.832292" elapsed="0.000024"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:21.832513" elapsed="0.000022"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:08:21.831746" elapsed="0.000831"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:08:21.831563" elapsed="0.001056"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:21.833695" elapsed="0.000070"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:08:21.833855" elapsed="0.000040"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:08:21.790265" elapsed="0.043814">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:08:21.834294" elapsed="0.000018"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T01:08:21.757492" elapsed="0.076915">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:21.834603" elapsed="0.000028"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:21.839224" elapsed="0.000028"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:21.839436" elapsed="0.000021"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T01:08:21.839502" elapsed="0.000016"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T01:08:21.747422" elapsed="0.092189">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:08:21.839728" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:08:21.839772" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:08:21.746841" elapsed="0.092955"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T01:08:21.840009" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:08:21.839890" elapsed="0.000161"/>
</branch>
<status status="PASS" start="2026-04-08T01:08:21.839868" elapsed="0.000206"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:08:21.841716" elapsed="0.000213"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:08:21.842473" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:08:21.842097" elapsed="0.000402"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:08:21.843687" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:08:21.843135" elapsed="0.000593"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:08:21.843919" elapsed="0.000035"/>
</return>
<msg time="2026-04-08T01:08:21.844081" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:08:21.842697" elapsed="0.001410"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:08:21.844951" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:08:21.844403" elapsed="0.000575"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:08:21.845615" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:08:21.845149" elapsed="0.000493"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:08:21.846129" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:08:21.855222" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:08:21.845817" elapsed="0.011089">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:21.857106" elapsed="0.000023"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:21.857309" elapsed="0.000021"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:21.857492" elapsed="0.000047"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:21.857701" elapsed="0.000021"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:21.857882" elapsed="0.000020"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:21.858057" elapsed="0.000020"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:21.858344" elapsed="0.000021"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:21.858582" elapsed="0.000021"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:21.858805" elapsed="0.000022"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:08:21.858202" elapsed="0.000689"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:08:21.858120" elapsed="0.000807"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:21.859382" elapsed="0.000055"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:08:21.859534" elapsed="0.000036"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:08:21.841090" elapsed="0.018693">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:08:21.860039" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:08:21.860140" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:08:21.840457" elapsed="0.019770"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T01:08:21.861700" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T01:08:21.860925" elapsed="0.000912">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T01:08:21.860415" elapsed="0.001562">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T01:08:21.860374" elapsed="0.001673">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T01:08:21.862152" elapsed="0.000066"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:08:21.746251" elapsed="0.116163">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:21.862932" elapsed="0.000049"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:21.863365" elapsed="0.000047"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T01:08:21.863508" elapsed="0.000033"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T01:08:21.743635" elapsed="0.120101">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:21.864141" elapsed="0.000092"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:21.864611" elapsed="0.000045"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:21.865013" elapsed="0.000044"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:21.865427" elapsed="0.000045"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:21.865850" elapsed="0.000046"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:21.866272" elapsed="0.000046"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T01:08:21.866413" elapsed="0.000032"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T01:08:21.740614" elapsed="0.126021">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:08:22.899072" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:08:22.898602" elapsed="0.000503"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:08:22.899637" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:08:22.899306" elapsed="0.000357"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T01:08:22.899712" elapsed="0.000040"/>
</return>
<msg time="2026-04-08T01:08:22.899881" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T01:08:22.898148" elapsed="0.001758"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T01:08:22.904985" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T01:08:22.904710" elapsed="0.000303"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:08:22.905199" elapsed="0.000272"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:08:22.905929" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:08:22.905639" elapsed="0.000316"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:08:22.906493" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:08:22.906190" elapsed="0.000347"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:08:22.906698" elapsed="0.000262"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:08:22.907438" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:08:22.907125" elapsed="0.000340"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:08:22.908025" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:08:22.907730" elapsed="0.000338"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:08:22.908735" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:08:22.908252" elapsed="0.000510"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:08:22.909267" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:08:22.908961" elapsed="0.000366"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:08:22.909827" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:08:22.909494" elapsed="0.000359"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:08:22.918667" elapsed="0.000397"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:08:22.951244" elapsed="0.000475"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:08:22.953842" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:08:22.952844" elapsed="0.001096"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:08:22.955655" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:08:22.955382" elapsed="0.000299"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:08:22.955781" elapsed="0.000067"/>
</return>
<msg time="2026-04-08T01:08:22.956144" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:08:22.954615" elapsed="0.001655"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:08:22.958148" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:08:22.957412" elapsed="0.000996"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:08:22.960120" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:08:22.959479" elapsed="0.000766"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:08:22.961856" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:08:22.974621" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:08:22.961490" elapsed="0.015043">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:22.977640" elapsed="0.000067"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:22.978781" elapsed="0.000065"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:22.979913" elapsed="0.000065"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:22.981096" elapsed="0.000100"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:22.982419" elapsed="0.000067"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:22.983582" elapsed="0.000065"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:22.984121" elapsed="0.000022"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:22.984391" elapsed="0.000022"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:22.984609" elapsed="0.000021"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:08:22.983934" elapsed="0.000738"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:08:22.983746" elapsed="0.000968"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:22.986049" elapsed="0.000067"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:08:22.986209" elapsed="0.000041"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:08:22.949132" elapsed="0.037304">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:08:22.986696" elapsed="0.000018"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T01:08:22.915957" elapsed="0.070852">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:22.987006" elapsed="0.000022"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:22.993731" elapsed="0.000028"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:22.993941" elapsed="0.000021"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T01:08:22.994008" elapsed="0.000016"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T01:08:22.904102" elapsed="0.090016">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:08:22.994259" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:08:22.994303" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:08:22.903534" elapsed="0.090793"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T01:08:22.994549" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:08:22.994423" elapsed="0.000168"/>
</branch>
<status status="PASS" start="2026-04-08T01:08:22.994401" elapsed="0.000213"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:08:22.996056" elapsed="0.000246"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:08:22.996841" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:08:22.996472" elapsed="0.000396"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:08:22.998088" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:08:22.997549" elapsed="0.000582"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:08:22.998283" elapsed="0.000033"/>
</return>
<msg time="2026-04-08T01:08:22.998443" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:08:22.997071" elapsed="0.001398"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:08:22.999088" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:08:22.998644" elapsed="0.000472"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:08:22.999735" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:08:22.999304" elapsed="0.000458"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:08:23.000291" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:08:23.012034" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:08:22.999938" elapsed="0.015607">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:23.016095" elapsed="0.000115"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:23.016639" elapsed="0.000050"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:23.017044" elapsed="0.000046"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:23.017475" elapsed="0.000048"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:23.017883" elapsed="0.000046"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:23.018318" elapsed="0.000047"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:23.018937" elapsed="0.000045"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:23.019513" elapsed="0.000048"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:23.019975" elapsed="0.000047"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:08:23.018621" elapsed="0.001534"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:08:23.018466" elapsed="0.001865"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:23.020684" elapsed="0.000046"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:08:23.020818" elapsed="0.000034"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:08:22.995455" elapsed="0.025696">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:08:23.021458" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:08:23.021561" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:08:22.994780" elapsed="0.026810"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T01:08:23.022264" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T01:08:23.021922" elapsed="0.000403">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T01:08:23.021691" elapsed="0.000697">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T01:08:23.021671" elapsed="0.000748">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T01:08:23.022466" elapsed="0.000015"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:08:22.902933" elapsed="0.119634">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:23.022755" elapsed="0.000022"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:23.022932" elapsed="0.000020"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T01:08:23.022993" elapsed="0.000015"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T01:08:22.900398" elapsed="0.122695">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:23.023288" elapsed="0.000021"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:23.023529" elapsed="0.000021"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:23.023711" elapsed="0.000020"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:23.023883" elapsed="0.000020"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:23.024077" elapsed="0.000026"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:23.024309" elapsed="0.000022"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T01:08:23.024374" elapsed="0.000016"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T01:08:22.897296" elapsed="0.127182">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:08:24.059095" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:08:24.058620" elapsed="0.000508"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:08:24.059659" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:08:24.059343" elapsed="0.000342"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T01:08:24.059733" elapsed="0.000040"/>
</return>
<msg time="2026-04-08T01:08:24.059904" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T01:08:24.058192" elapsed="0.001737"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T01:08:24.065010" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T01:08:24.064735" elapsed="0.000303"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:08:24.065225" elapsed="0.000277"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:08:24.065968" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:08:24.065672" elapsed="0.000323"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:08:24.066538" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:08:24.066236" elapsed="0.000346"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:08:24.066744" elapsed="0.000263"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:08:24.067499" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:08:24.067201" elapsed="0.000325"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:08:24.068019" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:08:24.067726" elapsed="0.000336"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:08:24.068706" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:08:24.068244" elapsed="0.000489"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:08:24.069230" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:08:24.068931" elapsed="0.000345"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:08:24.069774" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:08:24.069441" elapsed="0.000360"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:08:24.076917" elapsed="0.000396"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:08:24.107853" elapsed="0.000643"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:08:24.110450" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:08:24.109576" elapsed="0.000972"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:08:24.112203" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:08:24.111920" elapsed="0.000310"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:08:24.112327" elapsed="0.000057"/>
</return>
<msg time="2026-04-08T01:08:24.112673" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:08:24.111147" elapsed="0.001623"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:08:24.114909" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:08:24.113939" elapsed="0.001068"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:08:24.116770" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:08:24.116114" elapsed="0.000761"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:08:24.118363" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:08:24.130521" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:08:24.117976" elapsed="0.017302">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:24.137811" elapsed="0.000151"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:24.140134" elapsed="0.000110"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:24.141759" elapsed="0.000089"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:24.143424" elapsed="0.000090"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:24.145095" elapsed="0.000111"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:24.146724" elapsed="0.000089"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:24.147670" elapsed="0.000031"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:24.147982" elapsed="0.000030"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:24.148302" elapsed="0.000031"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:08:24.147404" elapsed="0.000986"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:08:24.146950" elapsed="0.001499"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:24.149956" elapsed="0.000090"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:08:24.150149" elapsed="0.000075"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:08:24.105894" elapsed="0.044581">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:08:24.150752" elapsed="0.000025"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T01:08:24.074266" elapsed="0.076637">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:24.151537" elapsed="0.000040"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:24.156229" elapsed="0.000028"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:24.156440" elapsed="0.000022"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T01:08:24.156508" elapsed="0.000016"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T01:08:24.064131" elapsed="0.092488">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:08:24.156739" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:08:24.156784" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:08:24.063561" elapsed="0.093247"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T01:08:24.157023" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:08:24.156903" elapsed="0.000163"/>
</branch>
<status status="PASS" start="2026-04-08T01:08:24.156881" elapsed="0.000208"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:08:24.158522" elapsed="0.000213"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:08:24.159412" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:08:24.158902" elapsed="0.000537"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:08:24.160631" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:08:24.160071" elapsed="0.000602"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:08:24.160808" elapsed="0.000032"/>
</return>
<msg time="2026-04-08T01:08:24.160966" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:08:24.159637" elapsed="0.001355"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:08:24.161646" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:08:24.161181" elapsed="0.000492"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:08:24.162288" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:08:24.161843" elapsed="0.000472"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:08:24.162809" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:08:24.175762" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:08:24.162490" elapsed="0.015012">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:24.177706" elapsed="0.000024"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:24.177892" elapsed="0.000021"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:24.178070" elapsed="0.000021"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:24.178267" elapsed="0.000022"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:24.178452" elapsed="0.000021"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:24.178628" elapsed="0.000020"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:24.178909" elapsed="0.000067"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:24.179249" elapsed="0.000023"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:24.179486" elapsed="0.000056"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:08:24.178767" elapsed="0.000931"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:08:24.178695" elapsed="0.001065"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:24.180105" elapsed="0.000046"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:08:24.180274" elapsed="0.000037"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:08:24.157914" elapsed="0.022612">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:08:24.180786" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:08:24.180884" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:08:24.157269" elapsed="0.023668"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T01:08:24.182452" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T01:08:24.181694" elapsed="0.000895">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T01:08:24.181126" elapsed="0.001604">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T01:08:24.181083" elapsed="0.001716">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T01:08:24.182905" elapsed="0.000035"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:08:24.062941" elapsed="0.120243">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:24.183619" elapsed="0.000049"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:24.184014" elapsed="0.000044"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T01:08:24.184149" elapsed="0.000065"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T01:08:24.060256" elapsed="0.124156">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:24.184811" elapsed="0.000045"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:24.185261" elapsed="0.000048"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:24.185694" elapsed="0.000045"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:24.186075" elapsed="0.000044"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:24.186518" elapsed="0.000045"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:24.186903" elapsed="0.000044"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T01:08:24.187054" elapsed="0.000035"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T01:08:24.057340" elapsed="0.129970">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:08:25.221225" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:08:25.220707" elapsed="0.000552"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:08:25.221764" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:08:25.221443" elapsed="0.000347"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T01:08:25.221838" elapsed="0.000044"/>
</return>
<msg time="2026-04-08T01:08:25.222015" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T01:08:25.220272" elapsed="0.001767"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T01:08:25.227068" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T01:08:25.226785" elapsed="0.000311"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:08:25.227289" elapsed="0.000281"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:08:25.228030" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:08:25.227740" elapsed="0.000316"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:08:25.228614" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:08:25.228308" elapsed="0.000349"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:08:25.228819" elapsed="0.000260"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:08:25.229550" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:08:25.229263" elapsed="0.000314"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:08:25.230079" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:08:25.229775" elapsed="0.000348"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:08:25.230854" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:08:25.230389" elapsed="0.000492"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:08:25.231380" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:08:25.231075" elapsed="0.000351"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:08:25.231919" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:08:25.231590" elapsed="0.000356"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:08:25.239031" elapsed="0.000391"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:08:25.270549" elapsed="0.000479"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:08:25.273150" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:08:25.272500" elapsed="0.000764"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:08:25.275002" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:08:25.274704" elapsed="0.000325"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:08:25.275130" elapsed="0.000077"/>
</return>
<msg time="2026-04-08T01:08:25.275504" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:08:25.273860" elapsed="0.001763"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:08:25.277824" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:08:25.277056" elapsed="0.000867"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:08:25.279799" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:08:25.279123" elapsed="0.000777"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:08:25.281574" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:08:25.295138" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:08:25.281191" elapsed="0.018551">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:25.302581" elapsed="0.000102"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:25.304230" elapsed="0.000094"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:25.305835" elapsed="0.000091"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:25.307511" elapsed="0.000094"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:25.309195" elapsed="0.000095"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:25.310841" elapsed="0.000099"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:25.311682" elapsed="0.000038"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:25.312035" elapsed="0.000033"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:25.312598" elapsed="0.000035"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:08:25.311402" elapsed="0.001295"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:08:25.311092" elapsed="0.001670"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:25.314434" elapsed="0.000099"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:08:25.314623" elapsed="0.000043"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:08:25.268550" elapsed="0.046316">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:08:25.315069" elapsed="0.000018"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T01:08:25.236380" elapsed="0.078819">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:25.315400" elapsed="0.000022"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:25.320464" elapsed="0.000030"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:25.320705" elapsed="0.000196"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T01:08:25.320955" elapsed="0.000017"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T01:08:25.226199" elapsed="0.094873">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:08:25.321303" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:08:25.321350" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:08:25.225583" elapsed="0.095792"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T01:08:25.321620" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:08:25.321476" elapsed="0.000197"/>
</branch>
<status status="PASS" start="2026-04-08T01:08:25.321454" elapsed="0.000248"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:08:25.323278" elapsed="0.000222"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:08:25.324044" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:08:25.323669" elapsed="0.000402"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:08:25.325405" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:08:25.324839" elapsed="0.000608"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:08:25.325586" elapsed="0.000036"/>
</return>
<msg time="2026-04-08T01:08:25.325748" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:08:25.324395" elapsed="0.001379"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:08:25.326643" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:08:25.325948" elapsed="0.000723"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:08:25.327311" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:08:25.326847" elapsed="0.000492"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:08:25.327858" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:08:25.338116" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:08:25.327518" elapsed="0.013029">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:25.340827" elapsed="0.000032"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:25.341086" elapsed="0.000029"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:25.341361" elapsed="0.000030"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:25.341610" elapsed="0.000030"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:25.341862" elapsed="0.000029"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:25.342150" elapsed="0.000050"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:25.342558" elapsed="0.000029"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:25.342892" elapsed="0.000029"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:25.343195" elapsed="0.000038"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:08:25.342361" elapsed="0.000963"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:08:25.342267" elapsed="0.001097"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:25.343583" elapsed="0.000030"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:08:25.343669" elapsed="0.000022"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:08:25.322648" elapsed="0.021175">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:08:25.344052" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:08:25.344115" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:08:25.321891" elapsed="0.022257"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T01:08:25.345080" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T01:08:25.344627" elapsed="0.000563">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T01:08:25.344306" elapsed="0.000975">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T01:08:25.344278" elapsed="0.001048">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T01:08:25.345393" elapsed="0.000022"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:08:25.224979" elapsed="0.120557">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:25.345923" elapsed="0.000064"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:25.346237" elapsed="0.000030"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T01:08:25.346327" elapsed="0.000020"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T01:08:25.222424" elapsed="0.124046">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:25.346723" elapsed="0.000029"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:25.346986" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:25.347257" elapsed="0.000030"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:25.347502" elapsed="0.000027"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:25.347749" elapsed="0.000028"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:25.347994" elapsed="0.000027"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T01:08:25.348078" elapsed="0.000020"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T01:08:25.219395" elapsed="0.128846">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:08:26.379781" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:08:26.379294" elapsed="0.000521"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:08:26.380336" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:08:26.379999" elapsed="0.000362"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T01:08:26.380409" elapsed="0.000042"/>
</return>
<msg time="2026-04-08T01:08:26.380582" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T01:08:26.378746" elapsed="0.001932"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T01:08:26.385609" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T01:08:26.385343" elapsed="0.000293"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:08:26.385802" elapsed="0.000272"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:08:26.386558" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:08:26.386265" elapsed="0.000319"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:08:26.387105" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:08:26.386804" elapsed="0.000343"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:08:26.387330" elapsed="0.000260"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:08:26.388044" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:08:26.387757" elapsed="0.000313"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:08:26.388570" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:08:26.388284" elapsed="0.000328"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:08:26.389260" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:08:26.388776" elapsed="0.000510"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:08:26.389759" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:08:26.389479" elapsed="0.000325"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:08:26.390314" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:08:26.389967" elapsed="0.000374"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:08:26.397446" elapsed="0.000369"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:08:26.429124" elapsed="0.000477"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:08:26.431375" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:08:26.430704" elapsed="0.000772"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:08:26.433658" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:08:26.432957" elapsed="0.000731"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:08:26.433814" elapsed="0.000070"/>
</return>
<msg time="2026-04-08T01:08:26.434229" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:08:26.432083" elapsed="0.002264"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:08:26.436612" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:08:26.435682" elapsed="0.001045"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:08:26.440351" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:08:26.439577" elapsed="0.000873"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:08:26.442119" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:08:26.453648" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:08:26.441720" elapsed="0.014723">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:26.458247" elapsed="0.000106"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:26.460033" elapsed="0.000099"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:26.461998" elapsed="0.000100"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:26.463759" elapsed="0.000097"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:26.465783" elapsed="0.000248"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:26.467714" elapsed="0.000097"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:26.468680" elapsed="0.000035"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:26.469061" elapsed="0.000034"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:26.469406" elapsed="0.000034"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:08:26.468369" elapsed="0.001133"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:08:26.467956" elapsed="0.001612"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:26.471386" elapsed="0.000097"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:08:26.471601" elapsed="0.000061"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:08:26.426707" elapsed="0.045231">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:08:26.472260" elapsed="0.000027"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T01:08:26.394778" elapsed="0.077650">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:26.472714" elapsed="0.000033"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:26.479883" elapsed="0.000042"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:26.480219" elapsed="0.000034"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T01:08:26.480322" elapsed="0.000023"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T01:08:26.384732" elapsed="0.095753">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:08:26.480664" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:08:26.480730" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:08:26.384147" elapsed="0.096618"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T01:08:26.481117" elapsed="0.000021"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:08:26.480903" elapsed="0.000300"/>
</branch>
<status status="PASS" start="2026-04-08T01:08:26.480872" elapsed="0.000365"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:08:26.482866" elapsed="0.000218"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:08:26.483694" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:08:26.483320" elapsed="0.000401"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:08:26.485134" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:08:26.484437" elapsed="0.000757"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:08:26.485329" elapsed="0.000034"/>
</return>
<msg time="2026-04-08T01:08:26.485488" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:08:26.483977" elapsed="0.001536"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:08:26.486129" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:08:26.485685" elapsed="0.000487"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:08:26.486771" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:08:26.486345" elapsed="0.000453"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:08:26.487321" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:08:26.497324" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:08:26.486974" elapsed="0.012075">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:26.499262" elapsed="0.000024"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:26.499445" elapsed="0.000021"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:26.499655" elapsed="0.000025"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:26.499836" elapsed="0.000021"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:26.500012" elapsed="0.000020"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:26.500197" elapsed="0.000021"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:26.500469" elapsed="0.000022"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:26.500743" elapsed="0.000021"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:26.500978" elapsed="0.000022"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:08:26.500330" elapsed="0.000732"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:08:26.500263" elapsed="0.000827"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:26.501257" elapsed="0.000021"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:08:26.501317" elapsed="0.000016"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:08:26.482242" elapsed="0.019185">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:08:26.501540" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:08:26.501591" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:08:26.481482" elapsed="0.020143"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T01:08:26.502588" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T01:08:26.502074" elapsed="0.000602">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T01:08:26.501745" elapsed="0.001023">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T01:08:26.501717" elapsed="0.001096">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T01:08:26.502882" elapsed="0.000022"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:08:26.383547" elapsed="0.119533">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:26.503386" elapsed="0.000032"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:26.503648" elapsed="0.000030"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T01:08:26.503739" elapsed="0.000021"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T01:08:26.380992" elapsed="0.122897">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:26.504174" elapsed="0.000032"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:26.504459" elapsed="0.000030"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:26.504757" elapsed="0.000029"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:26.505028" elapsed="0.000030"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:26.505314" elapsed="0.000030"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:26.505591" elapsed="0.000034"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T01:08:26.505691" elapsed="0.000022"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T01:08:26.377914" elapsed="0.127927">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:08:27.539664" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:08:27.539189" elapsed="0.000508"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:08:27.540219" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:08:27.539879" elapsed="0.000367"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T01:08:27.540293" elapsed="0.000039"/>
</return>
<msg time="2026-04-08T01:08:27.540461" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T01:08:27.538748" elapsed="0.001739"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T01:08:27.545419" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T01:08:27.545129" elapsed="0.000318"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:08:27.545614" elapsed="0.000273"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:08:27.546374" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:08:27.546056" elapsed="0.000346"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:08:27.546987" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:08:27.546625" elapsed="0.000405"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:08:27.547208" elapsed="0.000264"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:08:27.547926" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:08:27.547639" elapsed="0.000313"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:08:27.548468" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:08:27.548176" elapsed="0.000334"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:08:27.549132" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:08:27.548676" elapsed="0.000496"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:08:27.549651" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:08:27.549370" elapsed="0.000325"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:08:27.550202" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:08:27.549859" elapsed="0.000370"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:08:27.558753" elapsed="0.000460"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:08:27.590036" elapsed="0.000446"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:08:27.592576" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:08:27.591558" elapsed="0.001117"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:08:27.594326" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:08:27.594037" elapsed="0.000316"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:08:27.594452" elapsed="0.000064"/>
</return>
<msg time="2026-04-08T01:08:27.594811" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:08:27.593283" elapsed="0.001626"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:08:27.597096" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:08:27.596029" elapsed="0.001182"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:08:27.598944" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:08:27.598299" elapsed="0.000745"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:08:27.600722" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:08:27.613046" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:08:27.600353" elapsed="0.016684">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:27.618659" elapsed="0.000096"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:27.620309" elapsed="0.000095"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:27.621926" elapsed="0.000094"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:27.623592" elapsed="0.000095"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:27.625253" elapsed="0.000095"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:27.626991" elapsed="0.000091"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:27.627753" elapsed="0.000031"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:27.628099" elapsed="0.000032"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:27.628425" elapsed="0.000032"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:08:27.627489" elapsed="0.001095"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:08:27.627236" elapsed="0.001411"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:27.629745" elapsed="0.000065"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:08:27.629887" elapsed="0.000040"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:08:27.588060" elapsed="0.042050">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:08:27.630495" elapsed="0.000018"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T01:08:27.556096" elapsed="0.074511">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:27.630803" elapsed="0.000022"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:27.635367" elapsed="0.000028"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:27.635579" elapsed="0.000024"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T01:08:27.635649" elapsed="0.000016"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T01:08:27.544510" elapsed="0.091250">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:08:27.635880" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:08:27.635924" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:08:27.543898" elapsed="0.092049"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T01:08:27.636271" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:08:27.636054" elapsed="0.000262"/>
</branch>
<status status="PASS" start="2026-04-08T01:08:27.636031" elapsed="0.000308"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:08:27.637760" elapsed="0.000213"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:08:27.638660" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:08:27.638141" elapsed="0.000546"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:08:27.639873" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:08:27.639338" elapsed="0.000577"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:08:27.640071" elapsed="0.000033"/>
</return>
<msg time="2026-04-08T01:08:27.640245" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:08:27.638885" elapsed="0.001386"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:08:27.640889" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:08:27.640446" elapsed="0.000471"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:08:27.641597" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:08:27.641087" elapsed="0.000540"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:08:27.642200" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:08:27.652192" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:08:27.641847" elapsed="0.012701">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:27.654825" elapsed="0.000033"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:27.655084" elapsed="0.000030"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:27.655360" elapsed="0.000029"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:27.655606" elapsed="0.000029"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:27.655860" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:27.656115" elapsed="0.000029"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:27.656516" elapsed="0.000029"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:27.656847" elapsed="0.000030"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:27.657130" elapsed="0.000047"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:08:27.656321" elapsed="0.000943"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:08:27.656227" elapsed="0.001075"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:27.657518" elapsed="0.000029"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:08:27.657602" elapsed="0.000021"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:08:27.637142" elapsed="0.020614">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:08:27.657915" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:08:27.657976" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:08:27.636505" elapsed="0.021504"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T01:08:27.658913" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T01:08:27.658467" elapsed="0.000529">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T01:08:27.658127" elapsed="0.000958">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T01:08:27.658100" elapsed="0.001028">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T01:08:27.659227" elapsed="0.000023"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:08:27.543310" elapsed="0.116059">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:27.659633" elapsed="0.000030"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:27.659879" elapsed="0.000028"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T01:08:27.659965" elapsed="0.000020"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T01:08:27.540796" elapsed="0.119337">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:27.660463" elapsed="0.000030"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:27.660728" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:27.660977" elapsed="0.000028"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:27.661235" elapsed="0.000029"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:27.661484" elapsed="0.000029"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:27.661726" elapsed="0.000027"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T01:08:27.661810" elapsed="0.000020"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T01:08:27.537900" elapsed="0.124048">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:08:28.695229" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:08:28.694719" elapsed="0.000545"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:08:28.695762" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:08:28.695446" elapsed="0.000343"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T01:08:28.695837" elapsed="0.000040"/>
</return>
<msg time="2026-04-08T01:08:28.696010" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T01:08:28.694287" elapsed="0.001748"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T01:08:28.701077" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T01:08:28.700794" elapsed="0.000311"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:08:28.701293" elapsed="0.000274"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:08:28.702029" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:08:28.701737" elapsed="0.000319"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:08:28.702599" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:08:28.702294" elapsed="0.000348"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:08:28.702803" elapsed="0.000261"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:08:28.703571" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:08:28.703277" elapsed="0.000324"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:08:28.704092" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:08:28.703801" elapsed="0.000335"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:08:28.704831" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:08:28.704320" elapsed="0.000538"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:08:28.705355" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:08:28.705054" elapsed="0.000347"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:08:28.705898" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:08:28.705566" elapsed="0.000360"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:08:28.713103" elapsed="0.000445"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:08:28.743941" elapsed="0.000682"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:08:28.746424" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:08:28.745697" elapsed="0.000826"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:08:28.748676" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:08:28.747942" elapsed="0.000761"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:08:28.748804" elapsed="0.000060"/>
</return>
<msg time="2026-04-08T01:08:28.749173" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:08:28.747135" elapsed="0.002139"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:08:28.751111" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:08:28.750385" elapsed="0.000866"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:08:28.753170" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:08:28.752514" elapsed="0.000756"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:08:28.754736" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:08:28.765547" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:08:28.754366" elapsed="0.015252">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:28.772243" elapsed="0.000153"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:28.774978" elapsed="0.000149"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:28.776680" elapsed="0.000066"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:28.777844" elapsed="0.000065"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:28.779004" elapsed="0.000065"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:28.780297" elapsed="0.000068"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:28.780861" elapsed="0.000022"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:28.781090" elapsed="0.000022"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:28.781323" elapsed="0.000023"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:08:28.780671" elapsed="0.000717"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:08:28.780486" elapsed="0.000944"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:28.782522" elapsed="0.000065"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:08:28.782663" elapsed="0.000040"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:08:28.742130" elapsed="0.040755">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:08:28.783086" elapsed="0.000018"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T01:08:28.710435" elapsed="0.072813">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:28.783519" elapsed="0.000023"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:28.788432" elapsed="0.000028"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:28.788643" elapsed="0.000022"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T01:08:28.788711" elapsed="0.000016"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T01:08:28.700201" elapsed="0.088622">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:08:28.788939" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:08:28.788983" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:08:28.699610" elapsed="0.089398"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T01:08:28.789234" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:08:28.789099" elapsed="0.000179"/>
</branch>
<status status="PASS" start="2026-04-08T01:08:28.789078" elapsed="0.000223"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:08:28.790706" elapsed="0.000214"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:08:28.791477" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:08:28.791088" elapsed="0.000416"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:08:28.792705" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:08:28.792140" elapsed="0.000607"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:08:28.792878" elapsed="0.000032"/>
</return>
<msg time="2026-04-08T01:08:28.793033" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:08:28.791703" elapsed="0.001356"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:08:28.793685" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:08:28.793246" elapsed="0.000466"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:08:28.794320" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:08:28.793881" elapsed="0.000466"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:08:28.794831" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:08:28.803991" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:08:28.794522" elapsed="0.012938">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:28.807942" elapsed="0.000054"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:28.808397" elapsed="0.000049"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:28.808803" elapsed="0.000046"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:28.809267" elapsed="0.000049"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:28.809682" elapsed="0.000045"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:28.810073" elapsed="0.000046"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:28.810846" elapsed="0.000046"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:28.811436" elapsed="0.000049"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:28.811899" elapsed="0.000046"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:08:28.810527" elapsed="0.001552"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:08:28.810362" elapsed="0.001782"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:28.812524" elapsed="0.000047"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:08:28.812662" elapsed="0.000036"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:08:28.790088" elapsed="0.022836">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:08:28.813222" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:08:28.813327" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:08:28.789464" elapsed="0.023916"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T01:08:28.814905" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T01:08:28.814093" elapsed="0.000949">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T01:08:28.813574" elapsed="0.001692">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T01:08:28.813530" elapsed="0.001811">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T01:08:28.815448" elapsed="0.000034"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:08:28.698933" elapsed="0.116743">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:28.816103" elapsed="0.000088"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:28.816467" elapsed="0.000020"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T01:08:28.816529" elapsed="0.000016"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T01:08:28.696368" elapsed="0.120263">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:28.816813" elapsed="0.000021"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:28.817007" elapsed="0.000020"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:28.817203" elapsed="0.000022"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:28.817378" elapsed="0.000020"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:28.817556" elapsed="0.000019"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:28.817730" elapsed="0.000020"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T01:08:28.817826" elapsed="0.000017"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T01:08:28.693415" elapsed="0.124517">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:08:29.848402" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:08:29.847873" elapsed="0.000563"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:08:29.848982" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:08:29.848624" elapsed="0.000385"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T01:08:29.849060" elapsed="0.000043"/>
</return>
<msg time="2026-04-08T01:08:29.849257" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T01:08:29.847417" elapsed="0.001867"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T01:08:29.854503" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T01:08:29.854182" elapsed="0.000348"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:08:29.854756" elapsed="0.000288"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:08:29.855563" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:08:29.855246" elapsed="0.000344"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:08:29.856214" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:08:29.855883" elapsed="0.000376"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:08:29.856483" elapsed="0.000327"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:08:29.857406" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:08:29.857026" elapsed="0.000415"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:08:29.858081" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:08:29.857703" elapsed="0.000434"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:08:29.858876" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:08:29.858394" elapsed="0.000509"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:08:29.859410" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:08:29.859103" elapsed="0.000354"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:08:29.859958" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:08:29.859625" elapsed="0.000359"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:08:29.867573" elapsed="0.000378"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:08:29.899071" elapsed="0.000509"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:08:29.901577" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:08:29.900890" elapsed="0.000785"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:08:29.903672" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:08:29.903117" elapsed="0.000582"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:08:29.903798" elapsed="0.000066"/>
</return>
<msg time="2026-04-08T01:08:29.904172" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:08:29.902346" elapsed="0.001925"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:08:29.906120" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:08:29.905379" elapsed="0.000987"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:08:29.908256" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:08:29.907578" elapsed="0.000779"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:08:29.909844" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:08:29.923879" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:08:29.909471" elapsed="0.018635">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:29.930799" elapsed="0.000105"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:29.932486" elapsed="0.000095"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:29.934134" elapsed="0.000193"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:29.935891" elapsed="0.000095"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:29.937573" elapsed="0.000094"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:29.939324" elapsed="0.000107"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:29.940114" elapsed="0.000033"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:29.940488" elapsed="0.000033"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:29.940841" elapsed="0.000031"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:08:29.939848" elapsed="0.001082"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:08:29.939572" elapsed="0.001418"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:29.942813" elapsed="0.000068"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:08:29.942966" elapsed="0.000043"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:08:29.897197" elapsed="0.046027">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:08:29.943443" elapsed="0.000022"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T01:08:29.864620" elapsed="0.078945">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:29.943765" elapsed="0.000023"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:29.949049" elapsed="0.000036"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:29.949318" elapsed="0.000030"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T01:08:29.949407" elapsed="0.000020"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T01:08:29.853584" elapsed="0.096031">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:08:29.949765" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:08:29.949825" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:08:29.852984" elapsed="0.096872"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T01:08:29.950114" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:08:29.949978" elapsed="0.000331"/>
</branch>
<status status="PASS" start="2026-04-08T01:08:29.949953" elapsed="0.000387"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:08:29.951893" elapsed="0.000216"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:08:29.952754" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:08:29.952298" elapsed="0.000484"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:08:29.953997" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:08:29.953443" elapsed="0.000597"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:08:29.954246" elapsed="0.000065"/>
</return>
<msg time="2026-04-08T01:08:29.954445" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:08:29.952985" elapsed="0.001485"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:08:29.955228" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:08:29.954670" elapsed="0.000586"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:08:29.955896" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:08:29.955429" elapsed="0.000495"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:08:29.956457" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:08:29.969049" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:08:29.956102" elapsed="0.015515">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:29.971926" elapsed="0.000035"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:29.972212" elapsed="0.000032"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:29.972464" elapsed="0.000030"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:29.972729" elapsed="0.000039"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:29.973075" elapsed="0.000032"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:29.973355" elapsed="0.000031"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:29.973753" elapsed="0.000028"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:29.974089" elapsed="0.000030"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:29.974454" elapsed="0.000031"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:08:29.973555" elapsed="0.001019"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:08:29.973451" elapsed="0.001164"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:29.974829" elapsed="0.000030"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:08:29.974915" elapsed="0.000023"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:08:29.951238" elapsed="0.023834">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:08:29.975399" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:08:29.975463" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:08:29.950517" elapsed="0.024980"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T01:08:29.976559" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T01:08:29.976002" elapsed="0.000647">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T01:08:29.975627" elapsed="0.001114">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T01:08:29.975592" elapsed="0.001195">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T01:08:29.976854" elapsed="0.000023"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:08:29.852393" elapsed="0.124605">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:29.977340" elapsed="0.000035"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:29.977624" elapsed="0.000036"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T01:08:29.977721" elapsed="0.000022"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T01:08:29.849642" elapsed="0.128226">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:29.978121" elapsed="0.000029"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:29.978482" elapsed="0.000032"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:29.978753" elapsed="0.000034"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:29.979007" elapsed="0.000029"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:29.979279" elapsed="0.000030"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:29.979531" elapsed="0.000028"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T01:08:29.979618" elapsed="0.000021"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T01:08:29.846501" elapsed="0.133264">Could not parse owner and candidates for device openflow:1</status>
</kw>
<msg time="2026-04-08T01:08:29.979915" level="FAIL">Keyword 'ClusterManagement.Verify_Owner_And_Successors_For_Device' failed after retrying for 30 seconds. The last error was: Could not parse owner and candidates for device openflow:1</msg>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>30s</arg>
<arg>1s</arg>
<arg>ClusterManagement.Verify_Owner_And_Successors_For_Device</arg>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="FAIL" start="2026-04-08T01:07:59.523148" elapsed="30.456896">Keyword 'ClusterManagement.Verify_Owner_And_Successors_For_Device' failed after retrying for 30 seconds. The last error was: Could not parse owner and candidates for device openflow:1</status>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T01:08:29.980225" elapsed="0.000025"/>
</return>
<var>${old_owner}</var>
<var>${old_successors}</var>
<arg>openflow:${idx}</arg>
<arg>${active_member}</arg>
<doc>Check Entity Owner Status and identify owner and successors for the device ${device}. Request is sent to controller ${controller_index}.</doc>
<status status="FAIL" start="2026-04-08T01:07:59.520853" elapsed="30.459521">Keyword 'ClusterManagement.Verify_Owner_And_Successors_For_Device' failed after retrying for 30 seconds. The last error was: Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${old_master}</var>
<arg>${ODL_SYSTEM_${old_owner}_IP}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:29.980632" elapsed="0.000034"/>
</kw>
<kw name="Get From List" owner="Collections">
<var>${active_member}</var>
<arg>${old_successors}</arg>
<arg>0</arg>
<doc>Returns the value specified with an ``index`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:29.980893" elapsed="0.000028"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<arg>${active_member}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:29.981181" elapsed="0.000031"/>
</kw>
<kw name="Isolate Controller From The Cluster">
<arg>${old_owner}</arg>
<status status="NOT RUN" start="2026-04-08T01:08:29.981420" elapsed="0.000035"/>
</kw>
<kw name="Set Test Variable" owner="BuiltIn">
<arg>${isol_node}</arg>
<arg>${old_owner}</arg>
<doc>Makes a variable available everywhere within the scope of the current test.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:29.981684" elapsed="0.000029"/>
</kw>
<kw name="Check OpenFlow Shards Status After Cluster Event" owner="ClusterOpenFlow">
<arg>${old_successors}</arg>
<doc>Check Shards Status after some cluster event.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:29.981995" elapsed="0.000032"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<var>${new_master}</var>
<arg>10x</arg>
<arg>3s</arg>
<arg>Verify New Master Controller Node</arg>
<arg>${switch_name}</arg>
<arg>${old_master}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:29.982315" elapsed="0.000381"/>
</kw>
<kw name="Get OpenFlow Entity Owner Status For One Device" owner="ClusterOpenFlow">
<var>${owner}</var>
<var>${successors}</var>
<arg>openflow:${idx}</arg>
<arg>${active_member}</arg>
<arg>${old_successors}</arg>
<doc>Check Entity Owner Status and identify owner and successors for the device ${device}. Request is sent to controller ${controller_index}.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:29.992132" elapsed="0.000039"/>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${new_master}</arg>
<arg>${ODL_SYSTEM_${owner}_IP}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:29.992350" elapsed="0.000021"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<arg>${active_member}</arg>
<arg>${owner}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:29.992534" elapsed="0.000020"/>
</kw>
<kw name="Set Test Variable" owner="BuiltIn">
<arg>${old_owner}</arg>
<doc>Makes a variable available everywhere within the scope of the current test.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:29.992713" elapsed="0.000019"/>
</kw>
<kw name="Set Test Variable" owner="BuiltIn">
<arg>${old_successors}</arg>
<doc>Makes a variable available everywhere within the scope of the current test.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:29.992884" elapsed="0.000020"/>
</kw>
<kw name="Set Test Variable" owner="BuiltIn">
<arg>${old_master}</arg>
<doc>Makes a variable available everywhere within the scope of the current test.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:29.993056" elapsed="0.000019"/>
</kw>
<kw name="Set Test Variable" owner="BuiltIn">
<arg>${owner}</arg>
<doc>Makes a variable available everywhere within the scope of the current test.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:29.993262" elapsed="0.000027"/>
</kw>
<kw name="Set Test Variable" owner="BuiltIn">
<arg>${new_master}</arg>
<doc>Makes a variable available everywhere within the scope of the current test.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:29.993495" elapsed="0.000024"/>
</kw>
<arg>${switch_name}</arg>
<status status="FAIL" start="2026-04-08T01:07:59.512854" elapsed="30.480761">Keyword 'ClusterManagement.Verify_Owner_And_Successors_For_Device' failed after retrying for 30 seconds. The last error was: Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Rejoin Switchs Old Owner">
<arg>${switch_name}</arg>
<status status="NOT RUN" start="2026-04-08T01:08:29.993768" elapsed="0.000023"/>
</kw>
<kw name="Isolate Switchs Successor">
<arg>${switch_name}</arg>
<status status="NOT RUN" start="2026-04-08T01:08:29.993971" elapsed="0.000021"/>
</kw>
<kw name="Rejoin Switchs Successor">
<arg>${switch_name}</arg>
<status status="NOT RUN" start="2026-04-08T01:08:29.994113" elapsed="0.000021"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<arg>"${isol_node}"!="${Empty}"</arg>
<arg>Rejoin Controller To The Cluster</arg>
<arg>${isol_node}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T01:08:29.994484" elapsed="0.002355"/>
</kw>
<arg>s1</arg>
<doc>Disconnect and connect owner and successor and check switch data to be consistent</doc>
<status status="FAIL" start="2026-04-08T01:07:59.503051" elapsed="30.493873">Keyword 'ClusterManagement.Verify_Owner_And_Successors_For_Device' failed after retrying for 30 seconds. The last error was: Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Report Failure Due To Bug" owner="Utils" type="TEARDOWN">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:08:29.998304" level="INFO">${test_skipped} = False</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:08:29.997834" elapsed="0.000502"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="NOT RUN" start="2026-04-08T01:08:29.998602" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:08:29.998419" elapsed="0.000225"/>
</branch>
<status status="PASS" start="2026-04-08T01:08:29.998394" elapsed="0.000272"/>
</if>
<kw name="Comment" owner="BuiltIn">
<arg>Jira tickets are {PROJECT}-{NUMBER} while Bugzilla tickets are {NUMBER}</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:08:29.998856" elapsed="0.000214"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="Should Contain" owner="BuiltIn">
<msg time="2026-04-08T01:08:30.000279" level="FAIL">'6177' does not contain '-'</msg>
<arg>${number}</arg>
<arg>-</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="FAIL" start="2026-04-08T01:08:29.999707" elapsed="0.000637">'6177' does not contain '-'</status>
</kw>
<msg time="2026-04-08T01:08:30.000438" level="INFO">${match} = False</msg>
<var>${match}</var>
<arg>Should Contain</arg>
<arg>${number}</arg>
<arg>-</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T01:08:29.999262" elapsed="0.001200"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:08:30.001036" level="INFO">${bug_url} = https://bugs.opendaylight.org/show_bug.cgi?id=6177</msg>
<var>${bug_url}</var>
<arg>${match}</arg>
<arg>https://jira.opendaylight.org/browse/${number}</arg>
<arg>https://bugs.opendaylight.org/show_bug.cgi?id=${number}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:08:30.000692" elapsed="0.000371"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:08:30.001548" level="INFO">${msg} = This test fails due to https://bugs.opendaylight.org/show_bug.cgi?id=6177</msg>
<var>${msg}</var>
<arg>This test fails due to ${bug_url}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:08:30.001253" elapsed="0.000322"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:08:30.002036" level="INFO">${newline} = 
</msg>
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:08:30.001741" elapsed="0.000321"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<msg time="2026-04-08T01:08:30.002642" level="INFO">Set test message to:
This test fails due to https://bugs.opendaylight.org/show_bug.cgi?id=6177

Keyword 'ClusterManagement.Verify_Owner_And_Successors_For_Device' failed after retrying for 30 seconds. The last error was: Could not parse owner and candidates for device openflow:1</msg>
<arg>${msg}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="PASS" start="2026-04-08T01:08:30.002263" elapsed="0.000443"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:08:30.003122" level="INFO">This test fails due to https://bugs.opendaylight.org/show_bug.cgi?id=6177</msg>
<arg>${msg}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:08:30.002879" elapsed="0.000305"/>
</kw>
<if>
<branch type="IF" condition="&quot;${include_bug_in_tags}&quot;==&quot;True&quot;">
<kw name="Set Tags" owner="BuiltIn">
<msg time="2026-04-08T01:08:30.003868" level="INFO">Set tag 'https://bugs.opendaylight.org/show_bug.cgi?id=6177'.</msg>
<arg>${bug_url}</arg>
<doc>Adds given ``tags`` for the current test or all tests in a suite.</doc>
<status status="PASS" start="2026-04-08T01:08:30.003521" elapsed="0.000397"/>
</kw>
<status status="PASS" start="2026-04-08T01:08:30.003253" elapsed="0.000709"/>
</branch>
<status status="PASS" start="2026-04-08T01:08:30.003234" elapsed="0.000756"/>
</if>
<arg>6177</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-04-08T01:08:29.997416" elapsed="0.006622"/>
</kw>
<tag>https://bugs.opendaylight.org/show_bug.cgi?id=6177</tag>
<status status="FAIL" start="2026-04-08T01:07:59.187029" elapsed="30.817054">This test fails due to https://bugs.opendaylight.org/show_bug.cgi?id=6177

Keyword 'ClusterManagement.Verify_Owner_And_Successors_For_Device' failed after retrying for 30 seconds. The last error was: Could not parse owner and candidates for device openflow:1</status>
</test>
<test id="s1-s7-t4" name="Switches Still Be Connected To All Nodes" line="62">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-08T01:08:30.007663" elapsed="0.000211"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-08T01:08:30.007368" elapsed="0.000561"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:08:30.008964" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:08:30.008850" elapsed="0.000161"/>
</branch>
<status status="PASS" start="2026-04-08T01:08:30.008830" elapsed="0.000202"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:08:30.014257" elapsed="0.000020"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:08:30.014084" elapsed="0.000231"/>
</branch>
<status status="PASS" start="2026-04-08T01:08:30.014061" elapsed="0.000282"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:08:30.015394" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:08:30.014993" elapsed="0.000429"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:08:30.015893" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:08:30.015591" elapsed="0.000328"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T01:08:30.015962" elapsed="0.000034"/>
</return>
<msg time="2026-04-08T01:08:30.016120" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T01:08:30.014604" elapsed="0.001541"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:08:30.022104" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:08:30.021994" elapsed="0.000156"/>
</branch>
<status status="PASS" start="2026-04-08T01:08:30.021975" elapsed="0.000214"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:08:30.023489" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:08:30.023378" elapsed="0.000157"/>
</branch>
<status status="PASS" start="2026-04-08T01:08:30.023359" elapsed="0.000197"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:08:30.024028" level="INFO">${karaf_connection_index} = 655</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:08:30.023712" elapsed="0.000352"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:08:30.024607" level="INFO">${current_connection_index} = 667</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:08:30.024319" elapsed="0.000316"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:08:30.071768" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:08:30.025185" elapsed="0.046726"/>
</kw>
<msg time="2026-04-08T01:08:30.072124" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T01:08:30.072198" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:08:30.024814" elapsed="0.047438"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T01:08:30.125079" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "3 "0 "[C "C "l "u "s "t "e "r "[C "S "y "n "c "[C "P "r "o "b "l "e "m "s ". "S "w "i "t "c "h "e "s "[C "S "t "i "l "l "[C "B "e "[C "C "o "n "n "e "c "t "e "d "[C "T "o "[C "A "l "l "[C "N "o "d "e "s "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T01:08:30.072905" elapsed="0.052330"/>
</kw>
<msg time="2026-04-08T01:08:30.125415" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T01:08:30.125462" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "3 "0 "[C "C "l "u "s "t "e "r "[C "S "y "n "c "[C "P "r "o "b "l "e "m "s ". "S "w...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:08:30.072484" elapsed="0.053016"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:30.125941" elapsed="0.000032"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:08:30.125606" elapsed="0.000411"/>
</branch>
<status status="PASS" start="2026-04-08T01:08:30.125575" elapsed="0.000480"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:08:30.126754" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "3 "0 "[C "C "l "u "s "t "e "r "[C "S "y "n "c "[C "P "r "o "b "l "e "m "s ". "S "w "i "t "c "h "e "s "[C "S "t "i "l "l "[C "B "e "[C "C "o "n "n "e "c "t "e "d "[C "T "o "[C "A "l "l "[C "N "o "d "e "s "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:08:30.126330" elapsed="0.000533"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:30.127263" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:08:30.126956" elapsed="0.000382"/>
</branch>
<status status="PASS" start="2026-04-08T01:08:30.126932" elapsed="0.000438"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T01:08:30.127418" elapsed="0.000047"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:08:30.130838" elapsed="0.000212"/>
</kw>
<msg time="2026-04-08T01:08:30.131115" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:08:30.129510" elapsed="0.001767"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:30.131584" elapsed="0.000080"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:30.131947" elapsed="0.000086"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:08:30.128643" elapsed="0.003536"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T01:08:30.127867" elapsed="0.004399"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T01:08:30.023022" elapsed="0.109367"/>
</kw>
<msg time="2026-04-08T01:08:30.132513" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:08:30.132572" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "3 "0 "[C "C "l "u "s "t "e "r "[C "S "y "n "c "[C "P "r "o "b "l "e "m "s ". "S "w...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:08:30.022393" elapsed="0.110230"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T01:08:30.132868" elapsed="0.000034"/>
</return>
<status status="PASS" start="2026-04-08T01:08:30.132730" elapsed="0.000215"/>
</branch>
<status status="PASS" start="2026-04-08T01:08:30.132705" elapsed="0.000272"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:30.133537" elapsed="0.000034"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:30.133992" elapsed="0.000032"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T01:08:30.134186" elapsed="0.000024"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T01:08:30.021649" elapsed="0.112684"/>
</kw>
<msg time="2026-04-08T01:08:30.134453" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:08:30.134511" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "3 "0 "[C "C "l "u "s "t "e "r "[C "S "y "n "c "[C "P "r "o "b "l "e "m "s ". "S "w...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:08:30.016548" elapsed="0.118013"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:30.134971" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:08:30.134665" elapsed="0.000361"/>
</branch>
<status status="PASS" start="2026-04-08T01:08:30.134642" elapsed="0.000407"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T01:08:30.016393" elapsed="0.118680"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:08:30.141248" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:08:30.141089" elapsed="0.000208"/>
</branch>
<status status="PASS" start="2026-04-08T01:08:30.141063" elapsed="0.000265"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:08:30.142822" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:08:30.142703" elapsed="0.000165"/>
</branch>
<status status="PASS" start="2026-04-08T01:08:30.142680" elapsed="0.000211"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:08:30.143395" level="INFO">${karaf_connection_index} = 657</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:08:30.143061" elapsed="0.000361"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:08:30.143864" level="INFO">${current_connection_index} = 667</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:08:30.143594" elapsed="0.000297"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:08:30.179731" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:08:30.144478" elapsed="0.035363"/>
</kw>
<msg time="2026-04-08T01:08:30.180027" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T01:08:30.180074" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:08:30.144075" elapsed="0.036035"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T01:08:30.251371" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "3 "0 "[C "C "l "u "s "t "e "r "[C "S "y "n "c "[C "P "r "o "b "l "e "m "s ". "S "w "i "t "c "h "e "s "[C "S "t "i "l "l "[C "B "e "[C "C "o "n "n "e "c "t "e "d "[C "T "o "[C "A "l "l "[C "N "o "d "e "s "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T01:08:30.180686" elapsed="0.070873"/>
</kw>
<msg time="2026-04-08T01:08:30.251760" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T01:08:30.251809" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "3 "0 "[C "C "l "u "s "t "e "r "[C "S "y "n "c "[C "P "r "o "b "l "e "m "s ". "S "w...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:08:30.180324" elapsed="0.071523"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:30.252299" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:08:30.251957" elapsed="0.000402"/>
</branch>
<status status="PASS" start="2026-04-08T01:08:30.251925" elapsed="0.000460"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:08:30.252904" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "3 "0 "[C "C "l "u "s "t "e "r "[C "S "y "n "c "[C "P "r "o "b "l "e "m "s ". "S "w "i "t "c "h "e "s "[C "S "t "i "l "l "[C "B "e "[C "C "o "n "n "e "c "t "e "d "[C "T "o "[C "A "l "l "[C "N "o "d "e "s "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:08:30.252542" elapsed="0.000448"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:30.253310" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:08:30.253060" elapsed="0.000305"/>
</branch>
<status status="PASS" start="2026-04-08T01:08:30.253041" elapsed="0.000347"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T01:08:30.253424" elapsed="0.000038"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:08:30.256270" elapsed="0.000207"/>
</kw>
<msg time="2026-04-08T01:08:30.256541" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:08:30.255118" elapsed="0.001630"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:30.257043" elapsed="0.000077"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:30.257413" elapsed="0.000076"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:08:30.254438" elapsed="0.003164"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T01:08:30.253812" elapsed="0.003855"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T01:08:30.142329" elapsed="0.115437"/>
</kw>
<msg time="2026-04-08T01:08:30.257862" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:08:30.257905" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "3 "0 "[C "C "l "u "s "t "e "r "[C "S "y "n "c "[C "P "r "o "b "l "e "m "s ". "S "w...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:08:30.141527" elapsed="0.116416"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T01:08:30.258146" elapsed="0.000045"/>
</return>
<status status="PASS" start="2026-04-08T01:08:30.258020" elapsed="0.000205"/>
</branch>
<status status="PASS" start="2026-04-08T01:08:30.258001" elapsed="0.000248"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 2,
close the previous connection. In any case create a new connection
to karaf console for 2, set correct prompt set and login to karaf console.
Store connection index for 2 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:30.258658" elapsed="0.000028"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:30.259005" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T01:08:30.259076" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T01:08:30.140642" elapsed="0.118558"/>
</kw>
<msg time="2026-04-08T01:08:30.259296" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:08:30.259342" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "3 "0 "[C "C "l "u "s "t "e "r "[C "S "y "n "c "[C "P "r "o "b "l "e "m "s ". "S "w...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:08:30.135408" elapsed="0.123971"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:30.259715" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:08:30.259457" elapsed="0.000310"/>
</branch>
<status status="PASS" start="2026-04-08T01:08:30.259439" elapsed="0.000351"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T01:08:30.135245" elapsed="0.124568"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:08:30.265514" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:08:30.265407" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-08T01:08:30.265388" elapsed="0.000193"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:08:30.266783" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:08:30.266673" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-08T01:08:30.266655" elapsed="0.000195"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:08:30.267333" level="INFO">${karaf_connection_index} = 659</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:08:30.267006" elapsed="0.000354"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:08:30.267794" level="INFO">${current_connection_index} = 667</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:08:30.267530" elapsed="0.000290"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:08:30.302755" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:08:30.268352" elapsed="0.034505"/>
</kw>
<msg time="2026-04-08T01:08:30.303021" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T01:08:30.303068" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:08:30.267989" elapsed="0.035116"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T01:08:30.356649" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "3 "0 "[C "C "l "u "s "t "e "r "[C "S "y "n "c "[C "P "r "o "b "l "e "m "s ". "S "w "i "t "c "h "e "s "[C "S "t "i "l "l "[C "B "e "[C "C "o "n "n "e "c "t "e "d "[C "T "o "[C "A "l "l "[C "N "o "d "e "s "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T01:08:30.303679" elapsed="0.053153"/>
</kw>
<msg time="2026-04-08T01:08:30.357009" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T01:08:30.357057" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "3 "0 "[C "C "l "u "s "t "e "r "[C "S "y "n "c "[C "P "r "o "b "l "e "m "s ". "S "w...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:08:30.303315" elapsed="0.053780"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:30.357497" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:08:30.357219" elapsed="0.000337"/>
</branch>
<status status="PASS" start="2026-04-08T01:08:30.357190" elapsed="0.000393"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:08:30.358084" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "3 "0 "[C "C "l "u "s "t "e "r "[C "S "y "n "c "[C "P "r "o "b "l "e "m "s ". "S "w "i "t "c "h "e "s "[C "S "t "i "l "l "[C "B "e "[C "C "o "n "n "e "c "t "e "d "[C "T "o "[C "A "l "l "[C "N "o "d "e "s "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:08:30.357735" elapsed="0.000446"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:30.358485" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:08:30.358251" elapsed="0.000289"/>
</branch>
<status status="PASS" start="2026-04-08T01:08:30.358232" elapsed="0.000331"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T01:08:30.358596" elapsed="0.000037"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:08:30.361303" elapsed="0.000205"/>
</kw>
<msg time="2026-04-08T01:08:30.361571" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:08:30.360179" elapsed="0.001526"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:30.362012" elapsed="0.000078"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:30.362379" elapsed="0.000074"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:08:30.359518" elapsed="0.003045"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T01:08:30.358934" elapsed="0.003694"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T01:08:30.266339" elapsed="0.096392"/>
</kw>
<msg time="2026-04-08T01:08:30.362824" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:08:30.362868" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "3 "0 "[C "C "l "u "s "t "e "r "[C "S "y "n "c "[C "P "r "o "b "l "e "m "s ". "S "w...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:08:30.265741" elapsed="0.097165"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T01:08:30.363091" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-08T01:08:30.362984" elapsed="0.000165"/>
</branch>
<status status="PASS" start="2026-04-08T01:08:30.362965" elapsed="0.000225"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 3,
close the previous connection. In any case create a new connection
to karaf console for 3, set correct prompt set and login to karaf console.
Store connection index for 3 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:30.363598" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:30.363939" elapsed="0.000023"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T01:08:30.364008" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T01:08:30.265032" elapsed="0.099081"/>
</kw>
<msg time="2026-04-08T01:08:30.364223" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:08:30.364268" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "3 "0 "[C "C "l "u "s "t "e "r "[C "S "y "n "c "[C "P "r "o "b "l "e "m "s ". "S "w...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:08:30.260091" elapsed="0.104214"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:30.364643" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:08:30.364382" elapsed="0.000314"/>
</branch>
<status status="PASS" start="2026-04-08T01:08:30.364364" elapsed="0.000355"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T01:08:30.259941" elapsed="0.104801"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-08T01:08:30.016218" elapsed="0.348556"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-08T01:08:30.013635" elapsed="0.351196"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-08T01:08:30.008552" elapsed="0.356380"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:08:30.008093" elapsed="0.356885"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-08T01:08:30.005025" elapsed="0.360005"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Check All Switches Connected To All Cluster Nodes">
<kw name="Get Ovsdb Data" owner="OvsManager">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:08:30.369680" level="INFO">sh ovs-vsctl list Bridge</msg>
<arg>${lcmd_prefix} ${SH_BR_CMD}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:08:30.366411" elapsed="0.003330"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-08T01:08:30.410040" level="INFO">_uuid               : b1f3a25e-4d19-465f-912b-17fe7b1acbdb
auto_attach         : []
controller          : [419e3e41-ddbb-4be3-b539-f4d045a9bbd9, 740cc856-2b97-4888-820d-bf0f9d99a501, bbb4531e-5733-4157-b3f6-ea7bf10a308b]
datapath_id         : "0000000000000001"
datapath_type       : ""
datapath_version    : "&lt;unknown&gt;"
external_ids        : {}
fail_mode           : standalone
flood_vlans         : []
flow_tables         : {}
ipfix               : []
mcast_snooping_enable: false
mirrors             : []
name                : s1
netflow             : []
other_config        : {datapath-id="0000000000000001", disable-in-band="true", dp-desc=s1}
ports               : [079fa24c-466d-4b78-b64c-7669ebd0e515, 9e99a58c-a78c-4b0a-b18c-2ef2b895c497]
protocols           : [OpenFlow13]
rstp_enable         : false
rstp_status         : {}
sflow               : []
status              : {}
stp_enable          : false
mininet&gt;</msg>
<msg time="2026-04-08T01:08:30.410168" level="INFO">${brstdout} = _uuid               : b1f3a25e-4d19-465f-912b-17fe7b1acbdb
auto_attach         : []
controller          : [419e3e41-ddbb-4be3-b539-f4d045a9bbd9, 740cc856-2b97-4888-820d-bf0f9d99a501, bbb4531e-5733-4...</msg>
<var>${brstdout}</var>
<arg>${lprompt}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-08T01:08:30.369913" elapsed="0.040284"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:08:30.410712" level="INFO">_uuid               : b1f3a25e-4d19-465f-912b-17fe7b1acbdb
auto_attach         : []
controller          : [419e3e41-ddbb-4be3-b539-f4d045a9bbd9, 740cc856-2b97-4888-820d-bf0f9d99a501, bbb4531e-5733-4157-b3f6-ea7bf10a308b]
datapath_id         : "0000000000000001"
datapath_type       : ""
datapath_version    : "&lt;unknown&gt;"
external_ids        : {}
fail_mode           : standalone
flood_vlans         : []
flow_tables         : {}
ipfix               : []
mcast_snooping_enable: false
mirrors             : []
name                : s1
netflow             : []
other_config        : {datapath-id="0000000000000001", disable-in-band="true", dp-desc=s1}
ports               : [079fa24c-466d-4b78-b64c-7669ebd0e515, 9e99a58c-a78c-4b0a-b18c-2ef2b895c497]
protocols           : [OpenFlow13]
rstp_enable         : false
rstp_status         : {}
sflow               : []
status              : {}
stp_enable          : false
mininet&gt;</msg>
<arg>${brstdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:08:30.410438" elapsed="0.000332"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:08:30.412421" level="INFO">sh ovs-vsctl list Controller</msg>
<arg>${lcmd_prefix} ${SH_CNTL_CMD}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:08:30.410931" elapsed="0.001546"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-08T01:08:30.433347" level="INFO">_uuid               : 419e3e41-ddbb-4be3-b539-f4d045a9bbd9
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : false
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : []
status              : {last_error="Connection refused", sec_since_disconnect="2", state=BACKOFF}
target              : "tcp:10.30.170.48:6654"
type                : []

_uuid               : 740cc856-2b97-4888-820d-bf0f9d99a501
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : false
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : []
status              : {last_error="Connection refused", sec_since_disconnect="2", state=BACKOFF}
target              : "tcp:10.30.170.131:6654"
type                : []

_uuid               : bbb4531e-5733-4157-b3f6-ea7bf10a308b
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : false
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : []
status              : {last_error="Connection refused", sec_since_disconnect="2", state=BACKOFF}
target              : "tcp:10.30.171.110:6654"
type                : []
mininet&gt;</msg>
<msg time="2026-04-08T01:08:30.433456" level="INFO">${cntlstdout} = _uuid               : 419e3e41-ddbb-4be3-b539-f4d045a9bbd9
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
exter...</msg>
<var>${cntlstdout}</var>
<arg>${lprompt}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-08T01:08:30.412644" elapsed="0.020839"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:08:30.433954" level="INFO">_uuid               : 419e3e41-ddbb-4be3-b539-f4d045a9bbd9
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : false
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : []
status              : {last_error="Connection refused", sec_since_disconnect="2", state=BACKOFF}
target              : "tcp:10.30.170.48:6654"
type                : []

_uuid               : 740cc856-2b97-4888-820d-bf0f9d99a501
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : false
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : []
status              : {last_error="Connection refused", sec_since_disconnect="2", state=BACKOFF}
target              : "tcp:10.30.170.131:6654"
type                : []

_uuid               : bbb4531e-5733-4157-b3f6-ea7bf10a308b
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : false
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : []
status              : {last_error="Connection refused", sec_since_disconnect="2", state=BACKOFF}
target              : "tcp:10.30.171.110:6654"
type                : []
mininet&gt;</msg>
<arg>${cntlstdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:08:30.433690" elapsed="0.000373"/>
</kw>
<kw name="Parse" owner="VsctlListParser">
<msg time="2026-04-08T01:08:30.434706" level="INFO">_uuid:b1f3a25e-4d19-465f-912b-17fe7b1acbdb
auto_attach:[]
controller:[419e3e41-ddbb-4be3-b539-f4d045a9bbd9,740cc856-2b97-4888-820d-bf0f9d99a501,bbb4531e-5733-4157-b3f6-ea7bf10a308b]
datapath_id:"0000000000000001"
datapath_type:""
datapath_version:"&lt;unknown&gt;"
external_ids:{}
fail_mode:standalone
flood_vlans:[]
flow_tables:{}
ipfix:[]
mcast_snooping_enable:false
mirrors:[]
name:s1
netflow:[]
other_config:{datapath-id="0000000000000001",disable-in-band="true",dp-desc=s1}
ports:[079fa24c-466d-4b78-b64c-7669ebd0e515,9e99a58c-a78c-4b0a-b18c-2ef2b895c497]
protocols:[OpenFlow13]
rstp_enable:false
rstp_status:{}
sflow:[]
status:{}
stp_enable:false
_uuid:419e3e41-ddbb-4be3-b539-f4d045a9bbd9
connection_mode:[]
controller_burst_limit:[]
controller_queue_size:[]
controller_rate_limit:[]
enable_async_messages:[]
external_ids:{}
inactivity_probe:[]
is_connected:false
local_gateway:[]
local_ip:[]
local_netmask:[]
max_backoff:[]
other_config:{}
role:[]
status:{last_error="Connectionrefused",sec_since_disconnect="2",state=BACKOFF}
target:"tcp:10.30.170.48:6654"
type:[]
_uuid:740cc856-2b97-4888-820d-bf0f9d99a501
connection_mode:[]
controller_burst_limit:[]
controller_queue_size:[]
controller_rate_limit:[]
enable_async_messages:[]
external_ids:{}
inactivity_probe:[]
is_connected:false
local_gateway:[]
local_ip:[]
local_netmask:[]
max_backoff:[]
other_config:{}
role:[]
status:{last_error="Connectionrefused",sec_since_disconnect="2",state=BACKOFF}
target:"tcp:10.30.170.131:6654"
type:[]
_uuid:bbb4531e-5733-4157-b3f6-ea7bf10a308b
connection_mode:[]
controller_burst_limit:[]
controller_queue_size:[]
controller_rate_limit:[]
enable_async_messages:[]
external_ids:{}
inactivity_probe:[]
is_connected:false
local_gateway:[]
local_ip:[]
local_netmask:[]
max_backoff:[]
other_config:{}
role:[]
status:{last_error="Connectionrefused",sec_since_disconnect="2",state=BACKOFF}
target:"tcp:10.30.171.110:6654"
type:[]</msg>
<msg time="2026-04-08T01:08:30.434849" level="INFO">${data} = {'': {'_uuid': 'b1f3a25e-4d19-465f-912b-17fe7b1acbdb', 'auto_attach': '[]', 'controller': {'10.30.170.48': {'_uuid': '419e3e41-ddbb-4be3-b539-f4d045a9bbd9', 'connection_mode': '[]', 'controller_burst_...</msg>
<msg time="2026-04-08T01:08:30.434905" level="INFO">${bridegs} = {'b1f3a25e-4d19-465f-912b-17fe7b1acbdb': {'_uuid': 'b1f3a25e-4d19-465f-912b-17fe7b1acbdb', 'auto_attach': '[]', 'controller': '[419e3e41-ddbb-4be3-b539-f4d045a9bbd9,740cc856-2b97-4888-820d-bf0f9d99a50...</msg>
<msg time="2026-04-08T01:08:30.434977" level="INFO">${controllers} = {'419e3e41-ddbb-4be3-b539-f4d045a9bbd9': {'_uuid': '419e3e41-ddbb-4be3-b539-f4d045a9bbd9', 'connection_mode': '[]', 'controller_burst_limit': '[]', 'controller_queue_size': '[]', 'controller_rate_limi...</msg>
<var>${data}</var>
<var>${bridegs}</var>
<var>${controllers}</var>
<arg>${brstdout}</arg>
<arg>${cntlstdout}</arg>
<doc>Produces dictionary with data for future usege</doc>
<status status="PASS" start="2026-04-08T01:08:30.434243" elapsed="0.000758"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:08:30.435468" level="INFO">{'': {'_uuid': 'b1f3a25e-4d19-465f-912b-17fe7b1acbdb', 'auto_attach': '[]', 'controller': {'10.30.170.48': {'_uuid': '419e3e41-ddbb-4be3-b539-f4d045a9bbd9', 'connection_mode': '[]', 'controller_burst_limit': '[]', 'controller_queue_size': '[]', 'controller_rate_limit': '[]', 'enable_async_messages': '[]', 'external_ids': '{}', 'inactivity_probe': '[]', 'is_connected': False, 'local_gateway': '[]', 'local_ip': '[]', 'local_netmask': '[]', 'max_backoff': '[]', 'other_config': '{}', 'role': '[]', 'status': '{last_error="Connectionrefused",sec_since_disconnect="2",state=BACKOFF}', 'target': '"tcp:10.30.170.48:6654"', 'type': '[]'}, '10.30.170.131': {'_uuid': '740cc856-2b97-4888-820d-bf0f9d99a501', 'connection_mode': '[]', 'controller_burst_limit': '[]', 'controller_queue_size': '[]', 'controller_rate_limit': '[]', 'enable_async_messages': '[]', 'external_ids': '{}', 'inactivity_probe': '[]', 'is_connected': False, 'local_gateway': '[]', 'local_ip': '[]', 'local_netmask': '[]', 'max_backoff': '[]', 'other_config': '{}', 'role': '[]', 'status': '{last_error="Connectionrefused",sec_since_disconnect="2",state=BACKOFF}', 'target': '"tcp:10.30.170.131:6654"', 'type': '[]'}, '10.30.171.110': {'_uuid': 'bbb4531e-5733-4157-b3f6-ea7bf10a308b', 'connection_mode': '[]', 'controller_burst_limit': '[]', 'controller_queue_size': '[]', 'controller_rate_limit': '[]', 'enable_async_messages': '[]', 'external_ids': '{}', 'inactivity_probe': '[]', 'is_connected': False, 'local_gateway': '[]', 'local_ip': '[]', 'local_netmask': '[]', 'max_backoff': '[]', 'other_config': '{}', 'role': '[]', 'status': '{last_error="Connectionrefused",sec_since_disconnect="2",state=BACKOFF}', 'target': '"tcp:10.30.171.110:6654"', 'type': '[]'}}, 'datapath_id': '"0000000000000001"', 'datapath_type': '""', 'datapath_version': '"&lt;unknown&gt;"', 'external_ids': '{}', 'fail_mode': 'standalone', 'flood_vlans': '[]', 'flow_tables': '{}', 'ipfix': '[]', 'mcast_snooping_enable': 'false', 'mirrors': '[]', 'name': 's1', 'netflow': '[]', 'other_config': '{datapath-id="0000000000000001",disable-in-band="true",dp-desc=s1}', 'ports': '[079fa24c-466d-4b78-b64c-7669ebd0e515,9e99a58c-a78c-4b0a-b18c-2ef2b895c497]', 'protocols': '[OpenFlow13]', 'rstp_enable': 'false', 'rstp_status': '{}', 'sflow': '[]', 'status': '{}', 'stp_enable': 'false'}}</msg>
<arg>${data}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:08:30.435191" elapsed="0.000342"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-08T01:08:30.436148" level="INFO">${ovs_switch_data} = {'': {'_uuid': 'b1f3a25e-4d19-465f-912b-17fe7b1acbdb', 'auto_attach': '[]', 'controller': {'10.30.170.48': {'_uuid': '419e3e41-ddbb-4be3-b539-f4d045a9bbd9', 'connection_mode': '[]', 'controller_burst_...</msg>
<arg>${ovs_switch_data}</arg>
<arg>${data}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-08T01:08:30.435708" elapsed="0.000500"/>
</kw>
<return>
<value>${data}</value>
<status status="PASS" start="2026-04-08T01:08:30.436258" elapsed="0.000044"/>
</return>
<doc>Gets ovs data and parse them.</doc>
<status status="PASS" start="2026-04-08T01:08:30.366089" elapsed="0.070316"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:08:30.437195" level="INFO">${sid} = 1</msg>
<var>${sid}</var>
<arg>${i}+1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:08:30.436822" elapsed="0.000403"/>
</kw>
<kw name="Should Be Connected" owner="OvsManager">
<kw name="OvsManager__Is_Connected" owner="OvsManager">
<if>
<branch type="IF" condition="${update_data}==${True}">
<kw name="Get Ovsdb Data" owner="OvsManager">
<doc>Gets ovs data and parse them.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:30.439074" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:08:30.438751" elapsed="0.000377"/>
</branch>
<status status="PASS" start="2026-04-08T01:08:30.438730" elapsed="0.000423"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:08:30.439550" level="FAIL">Dictionary does not contain key 's1'.</msg>
<var>${bridge}</var>
<arg>${ovs_switch_data}</arg>
<arg>${switch}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="FAIL" start="2026-04-08T01:08:30.439328" elapsed="0.000331">Dictionary does not contain key 's1'.</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${cntls}</var>
<arg>${bridge}</arg>
<arg>controller</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:30.439838" elapsed="0.000021"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${cntl}</var>
<arg>${cntls}</arg>
<arg>${controller}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:30.440055" elapsed="0.000021"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${connected}</var>
<arg>${cntl}</arg>
<arg>is_connected</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:30.440253" elapsed="0.000021"/>
</kw>
<return>
<value>${connected}</value>
<status status="NOT RUN" start="2026-04-08T01:08:30.440319" elapsed="0.000015"/>
</return>
<kw name="Execute OvsVsctl Show Command" owner="OvsManager" type="TEARDOWN">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:08:30.442494" level="INFO">sh ovs-vsctl show</msg>
<arg>${lcmd_prefix} ovs-vsctl show</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:08:30.440900" elapsed="0.001649"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-08T01:08:30.452833" level="INFO">9a5df812-eb49-4477-a37e-2d464c02791d
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.48:6654"
        Controller "tcp:10.30.170.131:6654"
        Controller "tcp:10.30.171.110:6654"
        fail_mode: standalone
        Port s1
            Interface s1
                type: internal
        Port s1-eth1
            Interface s1-eth1
    ovs_version: "2.17.11"
mininet&gt;</msg>
<msg time="2026-04-08T01:08:30.452928" level="INFO">${output} = 9a5df812-eb49-4477-a37e-2d464c02791d
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.48:6654"
        Controller "tcp:10.30.170.131:6654"
        Controller "tcp:10.30.171...</msg>
<var>${output}</var>
<arg>${lprompt}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-08T01:08:30.442718" elapsed="0.010237"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:08:30.453425" level="INFO">9a5df812-eb49-4477-a37e-2d464c02791d
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.48:6654"
        Controller "tcp:10.30.170.131:6654"
        Controller "tcp:10.30.171.110:6654"
        fail_mode: standalone
        Port s1
            Interface s1
                type: internal
        Port s1-eth1
            Interface s1-eth1
    ovs_version: "2.17.11"
mininet&gt;</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:08:30.453154" elapsed="0.000321"/>
</kw>
<doc>Executes ovs-vsctl show command and returns stdout, no check nor change is performed</doc>
<status status="PASS" start="2026-04-08T01:08:30.440593" elapsed="0.012935"/>
</kw>
<var>${connected}</var>
<arg>${switch}</arg>
<arg>${controller}</arg>
<arg>update_data=${update_data}</arg>
<doc>Return is_connected boolean value</doc>
<status status="FAIL" start="2026-04-08T01:08:30.438381" elapsed="0.015224">Dictionary does not contain key 's1'.</status>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${connected}</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:30.453793" elapsed="0.000022"/>
</kw>
<arg>s${sid}</arg>
<arg>${ODL_SYSTEM_1_IP}</arg>
<arg>update_data=${False}</arg>
<doc>Check if the switch is connected</doc>
<status status="FAIL" start="2026-04-08T01:08:30.437454" elapsed="0.016444">Dictionary does not contain key 's1'.</status>
</kw>
<kw name="Should Be Connected" owner="OvsManager">
<arg>s${sid}</arg>
<arg>${ODL_SYSTEM_2_IP}</arg>
<arg>update_data=${False}</arg>
<doc>Check if the switch is connected</doc>
<status status="NOT RUN" start="2026-04-08T01:08:30.454133" elapsed="0.000038"/>
</kw>
<kw name="Should Be Connected" owner="OvsManager">
<arg>s${sid}</arg>
<arg>${ODL_SYSTEM_3_IP}</arg>
<arg>update_data=${False}</arg>
<doc>Check if the switch is connected</doc>
<status status="NOT RUN" start="2026-04-08T01:08:30.454379" elapsed="0.000022"/>
</kw>
<var name="${i}">0</var>
<status status="FAIL" start="2026-04-08T01:08:30.436671" elapsed="0.017784">Dictionary does not contain key 's1'.</status>
</iter>
<var>${i}</var>
<value>0</value>
<value>${SWITCHES}</value>
<status status="FAIL" start="2026-04-08T01:08:30.436459" elapsed="0.018052">Dictionary does not contain key 's1'.</status>
</for>
<doc>Verifies all switches are connected to all cluster nodes</doc>
<status status="FAIL" start="2026-04-08T01:08:30.365698" elapsed="0.088902">Dictionary does not contain key 's1'.</status>
</kw>
<kw name="Check All Switches Connected To All Cluster Nodes">
<kw name="Get Ovsdb Data" owner="OvsManager">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:08:31.460365" level="INFO">sh ovs-vsctl list Bridge</msg>
<arg>${lcmd_prefix} ${SH_BR_CMD}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:08:31.457192" elapsed="0.003324"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-08T01:08:31.498293" level="INFO">_uuid               : b1f3a25e-4d19-465f-912b-17fe7b1acbdb
auto_attach         : []
controller          : [419e3e41-ddbb-4be3-b539-f4d045a9bbd9, 740cc856-2b97-4888-820d-bf0f9d99a501, bbb4531e-5733-4157-b3f6-ea7bf10a308b]
datapath_id         : "0000000000000001"
datapath_type       : ""
datapath_version    : "&lt;unknown&gt;"
external_ids        : {}
fail_mode           : standalone
flood_vlans         : []
flow_tables         : {}
ipfix               : []
mcast_snooping_enable: false
mirrors             : []
name                : s1
netflow             : []
other_config        : {datapath-id="0000000000000001", disable-in-band="true", dp-desc=s1}
ports               : [079fa24c-466d-4b78-b64c-7669ebd0e515, 9e99a58c-a78c-4b0a-b18c-2ef2b895c497]
protocols           : [OpenFlow13]
rstp_enable         : false
rstp_status         : {}
sflow               : []
status              : {}
stp_enable          : false
mininet&gt;</msg>
<msg time="2026-04-08T01:08:31.498420" level="INFO">${brstdout} = _uuid               : b1f3a25e-4d19-465f-912b-17fe7b1acbdb
auto_attach         : []
controller          : [419e3e41-ddbb-4be3-b539-f4d045a9bbd9, 740cc856-2b97-4888-820d-bf0f9d99a501, bbb4531e-5733-4...</msg>
<var>${brstdout}</var>
<arg>${lprompt}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-08T01:08:31.460918" elapsed="0.037530"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:08:31.499021" level="INFO">_uuid               : b1f3a25e-4d19-465f-912b-17fe7b1acbdb
auto_attach         : []
controller          : [419e3e41-ddbb-4be3-b539-f4d045a9bbd9, 740cc856-2b97-4888-820d-bf0f9d99a501, bbb4531e-5733-4157-b3f6-ea7bf10a308b]
datapath_id         : "0000000000000001"
datapath_type       : ""
datapath_version    : "&lt;unknown&gt;"
external_ids        : {}
fail_mode           : standalone
flood_vlans         : []
flow_tables         : {}
ipfix               : []
mcast_snooping_enable: false
mirrors             : []
name                : s1
netflow             : []
other_config        : {datapath-id="0000000000000001", disable-in-band="true", dp-desc=s1}
ports               : [079fa24c-466d-4b78-b64c-7669ebd0e515, 9e99a58c-a78c-4b0a-b18c-2ef2b895c497]
protocols           : [OpenFlow13]
rstp_enable         : false
rstp_status         : {}
sflow               : []
status              : {}
stp_enable          : false
mininet&gt;</msg>
<arg>${brstdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:08:31.498703" elapsed="0.000376"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:08:31.500784" level="INFO">sh ovs-vsctl list Controller</msg>
<arg>${lcmd_prefix} ${SH_CNTL_CMD}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:08:31.499261" elapsed="0.001578"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-08T01:08:31.522518" level="INFO">_uuid               : 419e3e41-ddbb-4be3-b539-f4d045a9bbd9
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : false
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : []
status              : {last_error="Connection refused", sec_since_disconnect="2", state=BACKOFF}
target              : "tcp:10.30.170.48:6654"
type                : []

_uuid               : 740cc856-2b97-4888-820d-bf0f9d99a501
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : false
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : []
status              : {last_error="Connection refused", sec_since_disconnect="2", state=BACKOFF}
target              : "tcp:10.30.170.131:6654"
type                : []

_uuid               : bbb4531e-5733-4157-b3f6-ea7bf10a308b
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : false
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : []
status              : {last_error="Connection refused", sec_since_disconnect="2", state=BACKOFF}
target              : "tcp:10.30.171.110:6654"
type                : []
mininet&gt;</msg>
<msg time="2026-04-08T01:08:31.522644" level="INFO">${cntlstdout} = _uuid               : 419e3e41-ddbb-4be3-b539-f4d045a9bbd9
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
exter...</msg>
<var>${cntlstdout}</var>
<arg>${lprompt}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-08T01:08:31.501086" elapsed="0.021586"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:08:31.523215" level="INFO">_uuid               : 419e3e41-ddbb-4be3-b539-f4d045a9bbd9
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : false
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : []
status              : {last_error="Connection refused", sec_since_disconnect="2", state=BACKOFF}
target              : "tcp:10.30.170.48:6654"
type                : []

_uuid               : 740cc856-2b97-4888-820d-bf0f9d99a501
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : false
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : []
status              : {last_error="Connection refused", sec_since_disconnect="2", state=BACKOFF}
target              : "tcp:10.30.170.131:6654"
type                : []

_uuid               : bbb4531e-5733-4157-b3f6-ea7bf10a308b
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : false
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : []
status              : {last_error="Connection refused", sec_since_disconnect="2", state=BACKOFF}
target              : "tcp:10.30.171.110:6654"
type                : []
mininet&gt;</msg>
<arg>${cntlstdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:08:31.522917" elapsed="0.000368"/>
</kw>
<kw name="Parse" owner="VsctlListParser">
<msg time="2026-04-08T01:08:31.523920" level="INFO">_uuid:b1f3a25e-4d19-465f-912b-17fe7b1acbdb
auto_attach:[]
controller:[419e3e41-ddbb-4be3-b539-f4d045a9bbd9,740cc856-2b97-4888-820d-bf0f9d99a501,bbb4531e-5733-4157-b3f6-ea7bf10a308b]
datapath_id:"0000000000000001"
datapath_type:""
datapath_version:"&lt;unknown&gt;"
external_ids:{}
fail_mode:standalone
flood_vlans:[]
flow_tables:{}
ipfix:[]
mcast_snooping_enable:false
mirrors:[]
name:s1
netflow:[]
other_config:{datapath-id="0000000000000001",disable-in-band="true",dp-desc=s1}
ports:[079fa24c-466d-4b78-b64c-7669ebd0e515,9e99a58c-a78c-4b0a-b18c-2ef2b895c497]
protocols:[OpenFlow13]
rstp_enable:false
rstp_status:{}
sflow:[]
status:{}
stp_enable:false
_uuid:419e3e41-ddbb-4be3-b539-f4d045a9bbd9
connection_mode:[]
controller_burst_limit:[]
controller_queue_size:[]
controller_rate_limit:[]
enable_async_messages:[]
external_ids:{}
inactivity_probe:[]
is_connected:false
local_gateway:[]
local_ip:[]
local_netmask:[]
max_backoff:[]
other_config:{}
role:[]
status:{last_error="Connectionrefused",sec_since_disconnect="2",state=BACKOFF}
target:"tcp:10.30.170.48:6654"
type:[]
_uuid:740cc856-2b97-4888-820d-bf0f9d99a501
connection_mode:[]
controller_burst_limit:[]
controller_queue_size:[]
controller_rate_limit:[]
enable_async_messages:[]
external_ids:{}
inactivity_probe:[]
is_connected:false
local_gateway:[]
local_ip:[]
local_netmask:[]
max_backoff:[]
other_config:{}
role:[]
status:{last_error="Connectionrefused",sec_since_disconnect="2",state=BACKOFF}
target:"tcp:10.30.170.131:6654"
type:[]
_uuid:bbb4531e-5733-4157-b3f6-ea7bf10a308b
connection_mode:[]
controller_burst_limit:[]
controller_queue_size:[]
controller_rate_limit:[]
enable_async_messages:[]
external_ids:{}
inactivity_probe:[]
is_connected:false
local_gateway:[]
local_ip:[]
local_netmask:[]
max_backoff:[]
other_config:{}
role:[]
status:{last_error="Connectionrefused",sec_since_disconnect="2",state=BACKOFF}
target:"tcp:10.30.171.110:6654"
type:[]</msg>
<msg time="2026-04-08T01:08:31.524063" level="INFO">${data} = {'': {'_uuid': 'b1f3a25e-4d19-465f-912b-17fe7b1acbdb', 'auto_attach': '[]', 'controller': {'10.30.170.48': {'_uuid': '419e3e41-ddbb-4be3-b539-f4d045a9bbd9', 'connection_mode': '[]', 'controller_burst_...</msg>
<msg time="2026-04-08T01:08:31.524120" level="INFO">${bridegs} = {'b1f3a25e-4d19-465f-912b-17fe7b1acbdb': {'_uuid': 'b1f3a25e-4d19-465f-912b-17fe7b1acbdb', 'auto_attach': '[]', 'controller': '[419e3e41-ddbb-4be3-b539-f4d045a9bbd9,740cc856-2b97-4888-820d-bf0f9d99a50...</msg>
<msg time="2026-04-08T01:08:31.524199" level="INFO">${controllers} = {'419e3e41-ddbb-4be3-b539-f4d045a9bbd9': {'_uuid': '419e3e41-ddbb-4be3-b539-f4d045a9bbd9', 'connection_mode': '[]', 'controller_burst_limit': '[]', 'controller_queue_size': '[]', 'controller_rate_limi...</msg>
<var>${data}</var>
<var>${bridegs}</var>
<var>${controllers}</var>
<arg>${brstdout}</arg>
<arg>${cntlstdout}</arg>
<doc>Produces dictionary with data for future usege</doc>
<status status="PASS" start="2026-04-08T01:08:31.523453" elapsed="0.000772"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:08:31.524675" level="INFO">{'': {'_uuid': 'b1f3a25e-4d19-465f-912b-17fe7b1acbdb', 'auto_attach': '[]', 'controller': {'10.30.170.48': {'_uuid': '419e3e41-ddbb-4be3-b539-f4d045a9bbd9', 'connection_mode': '[]', 'controller_burst_limit': '[]', 'controller_queue_size': '[]', 'controller_rate_limit': '[]', 'enable_async_messages': '[]', 'external_ids': '{}', 'inactivity_probe': '[]', 'is_connected': False, 'local_gateway': '[]', 'local_ip': '[]', 'local_netmask': '[]', 'max_backoff': '[]', 'other_config': '{}', 'role': '[]', 'status': '{last_error="Connectionrefused",sec_since_disconnect="2",state=BACKOFF}', 'target': '"tcp:10.30.170.48:6654"', 'type': '[]'}, '10.30.170.131': {'_uuid': '740cc856-2b97-4888-820d-bf0f9d99a501', 'connection_mode': '[]', 'controller_burst_limit': '[]', 'controller_queue_size': '[]', 'controller_rate_limit': '[]', 'enable_async_messages': '[]', 'external_ids': '{}', 'inactivity_probe': '[]', 'is_connected': False, 'local_gateway': '[]', 'local_ip': '[]', 'local_netmask': '[]', 'max_backoff': '[]', 'other_config': '{}', 'role': '[]', 'status': '{last_error="Connectionrefused",sec_since_disconnect="2",state=BACKOFF}', 'target': '"tcp:10.30.170.131:6654"', 'type': '[]'}, '10.30.171.110': {'_uuid': 'bbb4531e-5733-4157-b3f6-ea7bf10a308b', 'connection_mode': '[]', 'controller_burst_limit': '[]', 'controller_queue_size': '[]', 'controller_rate_limit': '[]', 'enable_async_messages': '[]', 'external_ids': '{}', 'inactivity_probe': '[]', 'is_connected': False, 'local_gateway': '[]', 'local_ip': '[]', 'local_netmask': '[]', 'max_backoff': '[]', 'other_config': '{}', 'role': '[]', 'status': '{last_error="Connectionrefused",sec_since_disconnect="2",state=BACKOFF}', 'target': '"tcp:10.30.171.110:6654"', 'type': '[]'}}, 'datapath_id': '"0000000000000001"', 'datapath_type': '""', 'datapath_version': '"&lt;unknown&gt;"', 'external_ids': '{}', 'fail_mode': 'standalone', 'flood_vlans': '[]', 'flow_tables': '{}', 'ipfix': '[]', 'mcast_snooping_enable': 'false', 'mirrors': '[]', 'name': 's1', 'netflow': '[]', 'other_config': '{datapath-id="0000000000000001",disable-in-band="true",dp-desc=s1}', 'ports': '[079fa24c-466d-4b78-b64c-7669ebd0e515,9e99a58c-a78c-4b0a-b18c-2ef2b895c497]', 'protocols': '[OpenFlow13]', 'rstp_enable': 'false', 'rstp_status': '{}', 'sflow': '[]', 'status': '{}', 'stp_enable': 'false'}}</msg>
<arg>${data}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:08:31.524401" elapsed="0.000386"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-08T01:08:31.525452" level="INFO">${ovs_switch_data} = {'': {'_uuid': 'b1f3a25e-4d19-465f-912b-17fe7b1acbdb', 'auto_attach': '[]', 'controller': {'10.30.170.48': {'_uuid': '419e3e41-ddbb-4be3-b539-f4d045a9bbd9', 'connection_mode': '[]', 'controller_burst_...</msg>
<arg>${ovs_switch_data}</arg>
<arg>${data}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-08T01:08:31.524967" elapsed="0.000531"/>
</kw>
<return>
<value>${data}</value>
<status status="PASS" start="2026-04-08T01:08:31.525556" elapsed="0.000055"/>
</return>
<doc>Gets ovs data and parse them.</doc>
<status status="PASS" start="2026-04-08T01:08:31.456469" elapsed="0.069267"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:08:31.526551" level="INFO">${sid} = 1</msg>
<var>${sid}</var>
<arg>${i}+1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:08:31.526200" elapsed="0.000378"/>
</kw>
<kw name="Should Be Connected" owner="OvsManager">
<kw name="OvsManager__Is_Connected" owner="OvsManager">
<if>
<branch type="IF" condition="${update_data}==${True}">
<kw name="Get Ovsdb Data" owner="OvsManager">
<doc>Gets ovs data and parse them.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:31.528423" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:08:31.528069" elapsed="0.000410"/>
</branch>
<status status="PASS" start="2026-04-08T01:08:31.528048" elapsed="0.000457"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:08:31.528894" level="FAIL">Dictionary does not contain key 's1'.</msg>
<var>${bridge}</var>
<arg>${ovs_switch_data}</arg>
<arg>${switch}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="FAIL" start="2026-04-08T01:08:31.528661" elapsed="0.000345">Dictionary does not contain key 's1'.</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${cntls}</var>
<arg>${bridge}</arg>
<arg>controller</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:31.529214" elapsed="0.000022"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${cntl}</var>
<arg>${cntls}</arg>
<arg>${controller}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:31.529398" elapsed="0.000020"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${connected}</var>
<arg>${cntl}</arg>
<arg>is_connected</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:31.529605" elapsed="0.000028"/>
</kw>
<return>
<value>${connected}</value>
<status status="NOT RUN" start="2026-04-08T01:08:31.529687" elapsed="0.000017"/>
</return>
<kw name="Execute OvsVsctl Show Command" owner="OvsManager" type="TEARDOWN">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:08:31.531871" level="INFO">sh ovs-vsctl show</msg>
<arg>${lcmd_prefix} ovs-vsctl show</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:08:31.530297" elapsed="0.001629"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-08T01:08:31.541744" level="INFO">9a5df812-eb49-4477-a37e-2d464c02791d
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.48:6654"
        Controller "tcp:10.30.170.131:6654"
        Controller "tcp:10.30.171.110:6654"
        fail_mode: standalone
        Port s1
            Interface s1
                type: internal
        Port s1-eth1
            Interface s1-eth1
    ovs_version: "2.17.11"
mininet&gt;</msg>
<msg time="2026-04-08T01:08:31.541839" level="INFO">${output} = 9a5df812-eb49-4477-a37e-2d464c02791d
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.48:6654"
        Controller "tcp:10.30.170.131:6654"
        Controller "tcp:10.30.171...</msg>
<var>${output}</var>
<arg>${lprompt}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-08T01:08:31.532093" elapsed="0.009772"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:08:31.542342" level="INFO">9a5df812-eb49-4477-a37e-2d464c02791d
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.48:6654"
        Controller "tcp:10.30.170.131:6654"
        Controller "tcp:10.30.171.110:6654"
        fail_mode: standalone
        Port s1
            Interface s1
                type: internal
        Port s1-eth1
            Interface s1-eth1
    ovs_version: "2.17.11"
mininet&gt;</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:08:31.542069" elapsed="0.000323"/>
</kw>
<doc>Executes ovs-vsctl show command and returns stdout, no check nor change is performed</doc>
<status status="PASS" start="2026-04-08T01:08:31.529966" elapsed="0.012479"/>
</kw>
<var>${connected}</var>
<arg>${switch}</arg>
<arg>${controller}</arg>
<arg>update_data=${update_data}</arg>
<doc>Return is_connected boolean value</doc>
<status status="FAIL" start="2026-04-08T01:08:31.527688" elapsed="0.014832">Dictionary does not contain key 's1'.</status>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${connected}</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:31.542698" elapsed="0.000022"/>
</kw>
<arg>s${sid}</arg>
<arg>${ODL_SYSTEM_1_IP}</arg>
<arg>update_data=${False}</arg>
<doc>Check if the switch is connected</doc>
<status status="FAIL" start="2026-04-08T01:08:31.526807" elapsed="0.015997">Dictionary does not contain key 's1'.</status>
</kw>
<kw name="Should Be Connected" owner="OvsManager">
<arg>s${sid}</arg>
<arg>${ODL_SYSTEM_2_IP}</arg>
<arg>update_data=${False}</arg>
<doc>Check if the switch is connected</doc>
<status status="NOT RUN" start="2026-04-08T01:08:31.543025" elapsed="0.000024"/>
</kw>
<kw name="Should Be Connected" owner="OvsManager">
<arg>s${sid}</arg>
<arg>${ODL_SYSTEM_3_IP}</arg>
<arg>update_data=${False}</arg>
<doc>Check if the switch is connected</doc>
<status status="NOT RUN" start="2026-04-08T01:08:31.543271" elapsed="0.000023"/>
</kw>
<var name="${i}">0</var>
<status status="FAIL" start="2026-04-08T01:08:31.526018" elapsed="0.017331">Dictionary does not contain key 's1'.</status>
</iter>
<var>${i}</var>
<value>0</value>
<value>${SWITCHES}</value>
<status status="FAIL" start="2026-04-08T01:08:31.525798" elapsed="0.017609">Dictionary does not contain key 's1'.</status>
</for>
<doc>Verifies all switches are connected to all cluster nodes</doc>
<status status="FAIL" start="2026-04-08T01:08:31.455394" elapsed="0.088106">Dictionary does not contain key 's1'.</status>
</kw>
<kw name="Check All Switches Connected To All Cluster Nodes">
<kw name="Get Ovsdb Data" owner="OvsManager">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:08:32.547887" level="INFO">sh ovs-vsctl list Bridge</msg>
<arg>${lcmd_prefix} ${SH_BR_CMD}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:08:32.545259" elapsed="0.002723"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-08T01:08:32.598697" level="INFO">_uuid               : b1f3a25e-4d19-465f-912b-17fe7b1acbdb
auto_attach         : []
controller          : [419e3e41-ddbb-4be3-b539-f4d045a9bbd9, 740cc856-2b97-4888-820d-bf0f9d99a501, bbb4531e-5733-4157-b3f6-ea7bf10a308b]
datapath_id         : "0000000000000001"
datapath_type       : ""
datapath_version    : "&lt;unknown&gt;"
external_ids        : {}
fail_mode           : standalone
flood_vlans         : []
flow_tables         : {}
ipfix               : []
mcast_snooping_enable: false
mirrors             : []
name                : s1
netflow             : []
other_config        : {datapath-id="0000000000000001", disable-in-band="true", dp-desc=s1}
ports               : [079fa24c-466d-4b78-b64c-7669ebd0e515, 9e99a58c-a78c-4b0a-b18c-2ef2b895c497]
protocols           : [OpenFlow13]
rstp_enable         : false
rstp_status         : {}
sflow               : []
status              : {}
stp_enable          : false
mininet&gt;</msg>
<msg time="2026-04-08T01:08:32.598943" level="INFO">${brstdout} = _uuid               : b1f3a25e-4d19-465f-912b-17fe7b1acbdb
auto_attach         : []
controller          : [419e3e41-ddbb-4be3-b539-f4d045a9bbd9, 740cc856-2b97-4888-820d-bf0f9d99a501, bbb4531e-5733-4...</msg>
<var>${brstdout}</var>
<arg>${lprompt}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-08T01:08:32.548253" elapsed="0.050719"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:08:32.599632" level="INFO">_uuid               : b1f3a25e-4d19-465f-912b-17fe7b1acbdb
auto_attach         : []
controller          : [419e3e41-ddbb-4be3-b539-f4d045a9bbd9, 740cc856-2b97-4888-820d-bf0f9d99a501, bbb4531e-5733-4157-b3f6-ea7bf10a308b]
datapath_id         : "0000000000000001"
datapath_type       : ""
datapath_version    : "&lt;unknown&gt;"
external_ids        : {}
fail_mode           : standalone
flood_vlans         : []
flow_tables         : {}
ipfix               : []
mcast_snooping_enable: false
mirrors             : []
name                : s1
netflow             : []
other_config        : {datapath-id="0000000000000001", disable-in-band="true", dp-desc=s1}
ports               : [079fa24c-466d-4b78-b64c-7669ebd0e515, 9e99a58c-a78c-4b0a-b18c-2ef2b895c497]
protocols           : [OpenFlow13]
rstp_enable         : false
rstp_status         : {}
sflow               : []
status              : {}
stp_enable          : false
mininet&gt;</msg>
<arg>${brstdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:08:32.599287" elapsed="0.000404"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:08:32.601509" level="INFO">sh ovs-vsctl list Controller</msg>
<arg>${lcmd_prefix} ${SH_CNTL_CMD}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:08:32.599860" elapsed="0.001720"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-08T01:08:32.621370" level="INFO">_uuid               : 419e3e41-ddbb-4be3-b539-f4d045a9bbd9
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : false
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : []
status              : {last_error="Connection refused", sec_since_disconnect="2", state=BACKOFF}
target              : "tcp:10.30.170.48:6654"
type                : []

_uuid               : 740cc856-2b97-4888-820d-bf0f9d99a501
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : false
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : []
status              : {last_error="Connection refused", sec_since_disconnect="2", state=BACKOFF}
target              : "tcp:10.30.170.131:6654"
type                : []

_uuid               : bbb4531e-5733-4157-b3f6-ea7bf10a308b
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : false
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : []
status              : {last_error="Connection refused", sec_since_disconnect="2", state=BACKOFF}
target              : "tcp:10.30.171.110:6654"
type                : []
mininet&gt;</msg>
<msg time="2026-04-08T01:08:32.621477" level="INFO">${cntlstdout} = _uuid               : 419e3e41-ddbb-4be3-b539-f4d045a9bbd9
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
exter...</msg>
<var>${cntlstdout}</var>
<arg>${lprompt}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-08T01:08:32.601772" elapsed="0.019733"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:08:32.621956" level="INFO">_uuid               : 419e3e41-ddbb-4be3-b539-f4d045a9bbd9
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : false
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : []
status              : {last_error="Connection refused", sec_since_disconnect="2", state=BACKOFF}
target              : "tcp:10.30.170.48:6654"
type                : []

_uuid               : 740cc856-2b97-4888-820d-bf0f9d99a501
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : false
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : []
status              : {last_error="Connection refused", sec_since_disconnect="2", state=BACKOFF}
target              : "tcp:10.30.170.131:6654"
type                : []

_uuid               : bbb4531e-5733-4157-b3f6-ea7bf10a308b
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : false
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : []
status              : {last_error="Connection refused", sec_since_disconnect="2", state=BACKOFF}
target              : "tcp:10.30.171.110:6654"
type                : []
mininet&gt;</msg>
<arg>${cntlstdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:08:32.621704" elapsed="0.000316"/>
</kw>
<kw name="Parse" owner="VsctlListParser">
<msg time="2026-04-08T01:08:32.622675" level="INFO">_uuid:b1f3a25e-4d19-465f-912b-17fe7b1acbdb
auto_attach:[]
controller:[419e3e41-ddbb-4be3-b539-f4d045a9bbd9,740cc856-2b97-4888-820d-bf0f9d99a501,bbb4531e-5733-4157-b3f6-ea7bf10a308b]
datapath_id:"0000000000000001"
datapath_type:""
datapath_version:"&lt;unknown&gt;"
external_ids:{}
fail_mode:standalone
flood_vlans:[]
flow_tables:{}
ipfix:[]
mcast_snooping_enable:false
mirrors:[]
name:s1
netflow:[]
other_config:{datapath-id="0000000000000001",disable-in-band="true",dp-desc=s1}
ports:[079fa24c-466d-4b78-b64c-7669ebd0e515,9e99a58c-a78c-4b0a-b18c-2ef2b895c497]
protocols:[OpenFlow13]
rstp_enable:false
rstp_status:{}
sflow:[]
status:{}
stp_enable:false
_uuid:419e3e41-ddbb-4be3-b539-f4d045a9bbd9
connection_mode:[]
controller_burst_limit:[]
controller_queue_size:[]
controller_rate_limit:[]
enable_async_messages:[]
external_ids:{}
inactivity_probe:[]
is_connected:false
local_gateway:[]
local_ip:[]
local_netmask:[]
max_backoff:[]
other_config:{}
role:[]
status:{last_error="Connectionrefused",sec_since_disconnect="2",state=BACKOFF}
target:"tcp:10.30.170.48:6654"
type:[]
_uuid:740cc856-2b97-4888-820d-bf0f9d99a501
connection_mode:[]
controller_burst_limit:[]
controller_queue_size:[]
controller_rate_limit:[]
enable_async_messages:[]
external_ids:{}
inactivity_probe:[]
is_connected:false
local_gateway:[]
local_ip:[]
local_netmask:[]
max_backoff:[]
other_config:{}
role:[]
status:{last_error="Connectionrefused",sec_since_disconnect="2",state=BACKOFF}
target:"tcp:10.30.170.131:6654"
type:[]
_uuid:bbb4531e-5733-4157-b3f6-ea7bf10a308b
connection_mode:[]
controller_burst_limit:[]
controller_queue_size:[]
controller_rate_limit:[]
enable_async_messages:[]
external_ids:{}
inactivity_probe:[]
is_connected:false
local_gateway:[]
local_ip:[]
local_netmask:[]
max_backoff:[]
other_config:{}
role:[]
status:{last_error="Connectionrefused",sec_since_disconnect="2",state=BACKOFF}
target:"tcp:10.30.171.110:6654"
type:[]</msg>
<msg time="2026-04-08T01:08:32.622850" level="INFO">${data} = {'': {'_uuid': 'b1f3a25e-4d19-465f-912b-17fe7b1acbdb', 'auto_attach': '[]', 'controller': {'10.30.170.48': {'_uuid': '419e3e41-ddbb-4be3-b539-f4d045a9bbd9', 'connection_mode': '[]', 'controller_burst_...</msg>
<msg time="2026-04-08T01:08:32.622909" level="INFO">${bridegs} = {'b1f3a25e-4d19-465f-912b-17fe7b1acbdb': {'_uuid': 'b1f3a25e-4d19-465f-912b-17fe7b1acbdb', 'auto_attach': '[]', 'controller': '[419e3e41-ddbb-4be3-b539-f4d045a9bbd9,740cc856-2b97-4888-820d-bf0f9d99a50...</msg>
<msg time="2026-04-08T01:08:32.622973" level="INFO">${controllers} = {'419e3e41-ddbb-4be3-b539-f4d045a9bbd9': {'_uuid': '419e3e41-ddbb-4be3-b539-f4d045a9bbd9', 'connection_mode': '[]', 'controller_burst_limit': '[]', 'controller_queue_size': '[]', 'controller_rate_limi...</msg>
<var>${data}</var>
<var>${bridegs}</var>
<var>${controllers}</var>
<arg>${brstdout}</arg>
<arg>${cntlstdout}</arg>
<doc>Produces dictionary with data for future usege</doc>
<status status="PASS" start="2026-04-08T01:08:32.622207" elapsed="0.000790"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:08:32.623464" level="INFO">{'': {'_uuid': 'b1f3a25e-4d19-465f-912b-17fe7b1acbdb', 'auto_attach': '[]', 'controller': {'10.30.170.48': {'_uuid': '419e3e41-ddbb-4be3-b539-f4d045a9bbd9', 'connection_mode': '[]', 'controller_burst_limit': '[]', 'controller_queue_size': '[]', 'controller_rate_limit': '[]', 'enable_async_messages': '[]', 'external_ids': '{}', 'inactivity_probe': '[]', 'is_connected': False, 'local_gateway': '[]', 'local_ip': '[]', 'local_netmask': '[]', 'max_backoff': '[]', 'other_config': '{}', 'role': '[]', 'status': '{last_error="Connectionrefused",sec_since_disconnect="2",state=BACKOFF}', 'target': '"tcp:10.30.170.48:6654"', 'type': '[]'}, '10.30.170.131': {'_uuid': '740cc856-2b97-4888-820d-bf0f9d99a501', 'connection_mode': '[]', 'controller_burst_limit': '[]', 'controller_queue_size': '[]', 'controller_rate_limit': '[]', 'enable_async_messages': '[]', 'external_ids': '{}', 'inactivity_probe': '[]', 'is_connected': False, 'local_gateway': '[]', 'local_ip': '[]', 'local_netmask': '[]', 'max_backoff': '[]', 'other_config': '{}', 'role': '[]', 'status': '{last_error="Connectionrefused",sec_since_disconnect="2",state=BACKOFF}', 'target': '"tcp:10.30.170.131:6654"', 'type': '[]'}, '10.30.171.110': {'_uuid': 'bbb4531e-5733-4157-b3f6-ea7bf10a308b', 'connection_mode': '[]', 'controller_burst_limit': '[]', 'controller_queue_size': '[]', 'controller_rate_limit': '[]', 'enable_async_messages': '[]', 'external_ids': '{}', 'inactivity_probe': '[]', 'is_connected': False, 'local_gateway': '[]', 'local_ip': '[]', 'local_netmask': '[]', 'max_backoff': '[]', 'other_config': '{}', 'role': '[]', 'status': '{last_error="Connectionrefused",sec_since_disconnect="2",state=BACKOFF}', 'target': '"tcp:10.30.171.110:6654"', 'type': '[]'}}, 'datapath_id': '"0000000000000001"', 'datapath_type': '""', 'datapath_version': '"&lt;unknown&gt;"', 'external_ids': '{}', 'fail_mode': 'standalone', 'flood_vlans': '[]', 'flow_tables': '{}', 'ipfix': '[]', 'mcast_snooping_enable': 'false', 'mirrors': '[]', 'name': 's1', 'netflow': '[]', 'other_config': '{datapath-id="0000000000000001",disable-in-band="true",dp-desc=s1}', 'ports': '[079fa24c-466d-4b78-b64c-7669ebd0e515,9e99a58c-a78c-4b0a-b18c-2ef2b895c497]', 'protocols': '[OpenFlow13]', 'rstp_enable': 'false', 'rstp_status': '{}', 'sflow': '[]', 'status': '{}', 'stp_enable': 'false'}}</msg>
<arg>${data}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:08:32.623188" elapsed="0.000341"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-08T01:08:32.624147" level="INFO">${ovs_switch_data} = {'': {'_uuid': 'b1f3a25e-4d19-465f-912b-17fe7b1acbdb', 'auto_attach': '[]', 'controller': {'10.30.170.48': {'_uuid': '419e3e41-ddbb-4be3-b539-f4d045a9bbd9', 'connection_mode': '[]', 'controller_burst_...</msg>
<arg>${ovs_switch_data}</arg>
<arg>${data}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-08T01:08:32.623706" elapsed="0.000501"/>
</kw>
<return>
<value>${data}</value>
<status status="PASS" start="2026-04-08T01:08:32.624259" elapsed="0.000043"/>
</return>
<doc>Gets ovs data and parse them.</doc>
<status status="PASS" start="2026-04-08T01:08:32.544798" elapsed="0.079608"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:08:32.625206" level="INFO">${sid} = 1</msg>
<var>${sid}</var>
<arg>${i}+1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:08:32.624853" elapsed="0.000381"/>
</kw>
<kw name="Should Be Connected" owner="OvsManager">
<kw name="OvsManager__Is_Connected" owner="OvsManager">
<if>
<branch type="IF" condition="${update_data}==${True}">
<kw name="Get Ovsdb Data" owner="OvsManager">
<doc>Gets ovs data and parse them.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:32.627012" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:08:32.626677" elapsed="0.000390"/>
</branch>
<status status="PASS" start="2026-04-08T01:08:32.626657" elapsed="0.000436"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:08:32.627488" level="FAIL">Dictionary does not contain key 's1'.</msg>
<var>${bridge}</var>
<arg>${ovs_switch_data}</arg>
<arg>${switch}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="FAIL" start="2026-04-08T01:08:32.627265" elapsed="0.000326">Dictionary does not contain key 's1'.</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${cntls}</var>
<arg>${bridge}</arg>
<arg>controller</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:32.627772" elapsed="0.000022"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${cntl}</var>
<arg>${cntls}</arg>
<arg>${controller}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:32.627956" elapsed="0.000021"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${connected}</var>
<arg>${cntl}</arg>
<arg>is_connected</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:32.628137" elapsed="0.000035"/>
</kw>
<return>
<value>${connected}</value>
<status status="NOT RUN" start="2026-04-08T01:08:32.628221" elapsed="0.000016"/>
</return>
<kw name="Execute OvsVsctl Show Command" owner="OvsManager" type="TEARDOWN">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:08:32.630783" level="INFO">sh ovs-vsctl show</msg>
<arg>${lcmd_prefix} ovs-vsctl show</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:08:32.628822" elapsed="0.002015"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-08T01:08:32.640718" level="INFO">9a5df812-eb49-4477-a37e-2d464c02791d
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.48:6654"
        Controller "tcp:10.30.170.131:6654"
        Controller "tcp:10.30.171.110:6654"
        fail_mode: standalone
        Port s1
            Interface s1
                type: internal
        Port s1-eth1
            Interface s1-eth1
    ovs_version: "2.17.11"
mininet&gt;</msg>
<msg time="2026-04-08T01:08:32.640811" level="INFO">${output} = 9a5df812-eb49-4477-a37e-2d464c02791d
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.48:6654"
        Controller "tcp:10.30.170.131:6654"
        Controller "tcp:10.30.171...</msg>
<var>${output}</var>
<arg>${lprompt}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-08T01:08:32.631004" elapsed="0.009833"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:08:32.641304" level="INFO">9a5df812-eb49-4477-a37e-2d464c02791d
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.48:6654"
        Controller "tcp:10.30.170.131:6654"
        Controller "tcp:10.30.171.110:6654"
        fail_mode: standalone
        Port s1
            Interface s1
                type: internal
        Port s1-eth1
            Interface s1-eth1
    ovs_version: "2.17.11"
mininet&gt;</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:08:32.641031" elapsed="0.000358"/>
</kw>
<doc>Executes ovs-vsctl show command and returns stdout, no check nor change is performed</doc>
<status status="PASS" start="2026-04-08T01:08:32.628507" elapsed="0.012938"/>
</kw>
<var>${connected}</var>
<arg>${switch}</arg>
<arg>${controller}</arg>
<arg>update_data=${update_data}</arg>
<doc>Return is_connected boolean value</doc>
<status status="FAIL" start="2026-04-08T01:08:32.626045" elapsed="0.015475">Dictionary does not contain key 's1'.</status>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${connected}</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:32.641701" elapsed="0.000022"/>
</kw>
<arg>s${sid}</arg>
<arg>${ODL_SYSTEM_1_IP}</arg>
<arg>update_data=${False}</arg>
<doc>Check if the switch is connected</doc>
<status status="FAIL" start="2026-04-08T01:08:32.625457" elapsed="0.016354">Dictionary does not contain key 's1'.</status>
</kw>
<kw name="Should Be Connected" owner="OvsManager">
<arg>s${sid}</arg>
<arg>${ODL_SYSTEM_2_IP}</arg>
<arg>update_data=${False}</arg>
<doc>Check if the switch is connected</doc>
<status status="NOT RUN" start="2026-04-08T01:08:32.642033" elapsed="0.000023"/>
</kw>
<kw name="Should Be Connected" owner="OvsManager">
<arg>s${sid}</arg>
<arg>${ODL_SYSTEM_3_IP}</arg>
<arg>update_data=${False}</arg>
<doc>Check if the switch is connected</doc>
<status status="NOT RUN" start="2026-04-08T01:08:32.642278" elapsed="0.000024"/>
</kw>
<var name="${i}">0</var>
<status status="FAIL" start="2026-04-08T01:08:32.624700" elapsed="0.017658">Dictionary does not contain key 's1'.</status>
</iter>
<var>${i}</var>
<value>0</value>
<value>${SWITCHES}</value>
<status status="FAIL" start="2026-04-08T01:08:32.624461" elapsed="0.017952">Dictionary does not contain key 's1'.</status>
</for>
<doc>Verifies all switches are connected to all cluster nodes</doc>
<status status="FAIL" start="2026-04-08T01:08:32.544055" elapsed="0.098449">Dictionary does not contain key 's1'.</status>
</kw>
<kw name="Check All Switches Connected To All Cluster Nodes">
<kw name="Get Ovsdb Data" owner="OvsManager">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:08:33.648000" level="INFO">sh ovs-vsctl list Bridge</msg>
<arg>${lcmd_prefix} ${SH_BR_CMD}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:08:33.645086" elapsed="0.003108"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-08T01:08:33.703559" level="INFO">_uuid               : b1f3a25e-4d19-465f-912b-17fe7b1acbdb
auto_attach         : []
controller          : [419e3e41-ddbb-4be3-b539-f4d045a9bbd9, 740cc856-2b97-4888-820d-bf0f9d99a501, bbb4531e-5733-4157-b3f6-ea7bf10a308b]
datapath_id         : "0000000000000001"
datapath_type       : ""
datapath_version    : "&lt;unknown&gt;"
external_ids        : {}
fail_mode           : standalone
flood_vlans         : []
flow_tables         : {}
ipfix               : []
mcast_snooping_enable: false
mirrors             : []
name                : s1
netflow             : []
other_config        : {datapath-id="0000000000000001", disable-in-band="true", dp-desc=s1}
ports               : [079fa24c-466d-4b78-b64c-7669ebd0e515, 9e99a58c-a78c-4b0a-b18c-2ef2b895c497]
protocols           : [OpenFlow13]
rstp_enable         : false
rstp_status         : {}
sflow               : []
status              : {}
stp_enable          : false
mininet&gt;</msg>
<msg time="2026-04-08T01:08:33.703677" level="INFO">${brstdout} = _uuid               : b1f3a25e-4d19-465f-912b-17fe7b1acbdb
auto_attach         : []
controller          : [419e3e41-ddbb-4be3-b539-f4d045a9bbd9, 740cc856-2b97-4888-820d-bf0f9d99a501, bbb4531e-5733-4...</msg>
<var>${brstdout}</var>
<arg>${lprompt}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-08T01:08:33.648621" elapsed="0.055108"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:08:33.704354" level="INFO">_uuid               : b1f3a25e-4d19-465f-912b-17fe7b1acbdb
auto_attach         : []
controller          : [419e3e41-ddbb-4be3-b539-f4d045a9bbd9, 740cc856-2b97-4888-820d-bf0f9d99a501, bbb4531e-5733-4157-b3f6-ea7bf10a308b]
datapath_id         : "0000000000000001"
datapath_type       : ""
datapath_version    : "&lt;unknown&gt;"
external_ids        : {}
fail_mode           : standalone
flood_vlans         : []
flow_tables         : {}
ipfix               : []
mcast_snooping_enable: false
mirrors             : []
name                : s1
netflow             : []
other_config        : {datapath-id="0000000000000001", disable-in-band="true", dp-desc=s1}
ports               : [079fa24c-466d-4b78-b64c-7669ebd0e515, 9e99a58c-a78c-4b0a-b18c-2ef2b895c497]
protocols           : [OpenFlow13]
rstp_enable         : false
rstp_status         : {}
sflow               : []
status              : {}
stp_enable          : false
mininet&gt;</msg>
<arg>${brstdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:08:33.704019" elapsed="0.000402"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:08:33.706136" level="INFO">sh ovs-vsctl list Controller</msg>
<arg>${lcmd_prefix} ${SH_CNTL_CMD}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:08:33.704591" elapsed="0.001623"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-08T01:08:33.740367" level="INFO">_uuid               : 419e3e41-ddbb-4be3-b539-f4d045a9bbd9
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : false
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : []
status              : {last_error="Connection refused", sec_since_disconnect="2", state=BACKOFF}
target              : "tcp:10.30.170.48:6654"
type                : []

_uuid               : 740cc856-2b97-4888-820d-bf0f9d99a501
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : false
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : []
status              : {last_error="Connection refused", sec_since_disconnect="2", state=BACKOFF}
target              : "tcp:10.30.170.131:6654"
type                : []

_uuid               : bbb4531e-5733-4157-b3f6-ea7bf10a308b
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : false
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : []
status              : {last_error="Connection refused", sec_since_disconnect="2", state=BACKOFF}
target              : "tcp:10.30.171.110:6654"
type                : []
mininet&gt;</msg>
<msg time="2026-04-08T01:08:33.740510" level="INFO">${cntlstdout} = _uuid               : 419e3e41-ddbb-4be3-b539-f4d045a9bbd9
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
exter...</msg>
<var>${cntlstdout}</var>
<arg>${lprompt}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-08T01:08:33.706385" elapsed="0.034153"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:08:33.741179" level="INFO">_uuid               : 419e3e41-ddbb-4be3-b539-f4d045a9bbd9
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : false
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : []
status              : {last_error="Connection refused", sec_since_disconnect="2", state=BACKOFF}
target              : "tcp:10.30.170.48:6654"
type                : []

_uuid               : 740cc856-2b97-4888-820d-bf0f9d99a501
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : false
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : []
status              : {last_error="Connection refused", sec_since_disconnect="2", state=BACKOFF}
target              : "tcp:10.30.170.131:6654"
type                : []

_uuid               : bbb4531e-5733-4157-b3f6-ea7bf10a308b
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : false
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : []
status              : {last_error="Connection refused", sec_since_disconnect="2", state=BACKOFF}
target              : "tcp:10.30.171.110:6654"
type                : []
mininet&gt;</msg>
<arg>${cntlstdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:08:33.740865" elapsed="0.000381"/>
</kw>
<kw name="Parse" owner="VsctlListParser">
<msg time="2026-04-08T01:08:33.741882" level="INFO">_uuid:b1f3a25e-4d19-465f-912b-17fe7b1acbdb
auto_attach:[]
controller:[419e3e41-ddbb-4be3-b539-f4d045a9bbd9,740cc856-2b97-4888-820d-bf0f9d99a501,bbb4531e-5733-4157-b3f6-ea7bf10a308b]
datapath_id:"0000000000000001"
datapath_type:""
datapath_version:"&lt;unknown&gt;"
external_ids:{}
fail_mode:standalone
flood_vlans:[]
flow_tables:{}
ipfix:[]
mcast_snooping_enable:false
mirrors:[]
name:s1
netflow:[]
other_config:{datapath-id="0000000000000001",disable-in-band="true",dp-desc=s1}
ports:[079fa24c-466d-4b78-b64c-7669ebd0e515,9e99a58c-a78c-4b0a-b18c-2ef2b895c497]
protocols:[OpenFlow13]
rstp_enable:false
rstp_status:{}
sflow:[]
status:{}
stp_enable:false
_uuid:419e3e41-ddbb-4be3-b539-f4d045a9bbd9
connection_mode:[]
controller_burst_limit:[]
controller_queue_size:[]
controller_rate_limit:[]
enable_async_messages:[]
external_ids:{}
inactivity_probe:[]
is_connected:false
local_gateway:[]
local_ip:[]
local_netmask:[]
max_backoff:[]
other_config:{}
role:[]
status:{last_error="Connectionrefused",sec_since_disconnect="2",state=BACKOFF}
target:"tcp:10.30.170.48:6654"
type:[]
_uuid:740cc856-2b97-4888-820d-bf0f9d99a501
connection_mode:[]
controller_burst_limit:[]
controller_queue_size:[]
controller_rate_limit:[]
enable_async_messages:[]
external_ids:{}
inactivity_probe:[]
is_connected:false
local_gateway:[]
local_ip:[]
local_netmask:[]
max_backoff:[]
other_config:{}
role:[]
status:{last_error="Connectionrefused",sec_since_disconnect="2",state=BACKOFF}
target:"tcp:10.30.170.131:6654"
type:[]
_uuid:bbb4531e-5733-4157-b3f6-ea7bf10a308b
connection_mode:[]
controller_burst_limit:[]
controller_queue_size:[]
controller_rate_limit:[]
enable_async_messages:[]
external_ids:{}
inactivity_probe:[]
is_connected:false
local_gateway:[]
local_ip:[]
local_netmask:[]
max_backoff:[]
other_config:{}
role:[]
status:{last_error="Connectionrefused",sec_since_disconnect="2",state=BACKOFF}
target:"tcp:10.30.171.110:6654"
type:[]</msg>
<msg time="2026-04-08T01:08:33.742025" level="INFO">${data} = {'': {'_uuid': 'b1f3a25e-4d19-465f-912b-17fe7b1acbdb', 'auto_attach': '[]', 'controller': {'10.30.170.48': {'_uuid': '419e3e41-ddbb-4be3-b539-f4d045a9bbd9', 'connection_mode': '[]', 'controller_burst_...</msg>
<msg time="2026-04-08T01:08:33.742083" level="INFO">${bridegs} = {'b1f3a25e-4d19-465f-912b-17fe7b1acbdb': {'_uuid': 'b1f3a25e-4d19-465f-912b-17fe7b1acbdb', 'auto_attach': '[]', 'controller': '[419e3e41-ddbb-4be3-b539-f4d045a9bbd9,740cc856-2b97-4888-820d-bf0f9d99a50...</msg>
<msg time="2026-04-08T01:08:33.742148" level="INFO">${controllers} = {'419e3e41-ddbb-4be3-b539-f4d045a9bbd9': {'_uuid': '419e3e41-ddbb-4be3-b539-f4d045a9bbd9', 'connection_mode': '[]', 'controller_burst_limit': '[]', 'controller_queue_size': '[]', 'controller_rate_limi...</msg>
<var>${data}</var>
<var>${bridegs}</var>
<var>${controllers}</var>
<arg>${brstdout}</arg>
<arg>${cntlstdout}</arg>
<doc>Produces dictionary with data for future usege</doc>
<status status="PASS" start="2026-04-08T01:08:33.741421" elapsed="0.000769"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:08:33.742686" level="INFO">{'': {'_uuid': 'b1f3a25e-4d19-465f-912b-17fe7b1acbdb', 'auto_attach': '[]', 'controller': {'10.30.170.48': {'_uuid': '419e3e41-ddbb-4be3-b539-f4d045a9bbd9', 'connection_mode': '[]', 'controller_burst_limit': '[]', 'controller_queue_size': '[]', 'controller_rate_limit': '[]', 'enable_async_messages': '[]', 'external_ids': '{}', 'inactivity_probe': '[]', 'is_connected': False, 'local_gateway': '[]', 'local_ip': '[]', 'local_netmask': '[]', 'max_backoff': '[]', 'other_config': '{}', 'role': '[]', 'status': '{last_error="Connectionrefused",sec_since_disconnect="2",state=BACKOFF}', 'target': '"tcp:10.30.170.48:6654"', 'type': '[]'}, '10.30.170.131': {'_uuid': '740cc856-2b97-4888-820d-bf0f9d99a501', 'connection_mode': '[]', 'controller_burst_limit': '[]', 'controller_queue_size': '[]', 'controller_rate_limit': '[]', 'enable_async_messages': '[]', 'external_ids': '{}', 'inactivity_probe': '[]', 'is_connected': False, 'local_gateway': '[]', 'local_ip': '[]', 'local_netmask': '[]', 'max_backoff': '[]', 'other_config': '{}', 'role': '[]', 'status': '{last_error="Connectionrefused",sec_since_disconnect="2",state=BACKOFF}', 'target': '"tcp:10.30.170.131:6654"', 'type': '[]'}, '10.30.171.110': {'_uuid': 'bbb4531e-5733-4157-b3f6-ea7bf10a308b', 'connection_mode': '[]', 'controller_burst_limit': '[]', 'controller_queue_size': '[]', 'controller_rate_limit': '[]', 'enable_async_messages': '[]', 'external_ids': '{}', 'inactivity_probe': '[]', 'is_connected': False, 'local_gateway': '[]', 'local_ip': '[]', 'local_netmask': '[]', 'max_backoff': '[]', 'other_config': '{}', 'role': '[]', 'status': '{last_error="Connectionrefused",sec_since_disconnect="2",state=BACKOFF}', 'target': '"tcp:10.30.171.110:6654"', 'type': '[]'}}, 'datapath_id': '"0000000000000001"', 'datapath_type': '""', 'datapath_version': '"&lt;unknown&gt;"', 'external_ids': '{}', 'fail_mode': 'standalone', 'flood_vlans': '[]', 'flow_tables': '{}', 'ipfix': '[]', 'mcast_snooping_enable': 'false', 'mirrors': '[]', 'name': 's1', 'netflow': '[]', 'other_config': '{datapath-id="0000000000000001",disable-in-band="true",dp-desc=s1}', 'ports': '[079fa24c-466d-4b78-b64c-7669ebd0e515,9e99a58c-a78c-4b0a-b18c-2ef2b895c497]', 'protocols': '[OpenFlow13]', 'rstp_enable': 'false', 'rstp_status': '{}', 'sflow': '[]', 'status': '{}', 'stp_enable': 'false'}}</msg>
<arg>${data}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:08:33.742395" elapsed="0.000358"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-08T01:08:33.743396" level="INFO">${ovs_switch_data} = {'': {'_uuid': 'b1f3a25e-4d19-465f-912b-17fe7b1acbdb', 'auto_attach': '[]', 'controller': {'10.30.170.48': {'_uuid': '419e3e41-ddbb-4be3-b539-f4d045a9bbd9', 'connection_mode': '[]', 'controller_burst_...</msg>
<arg>${ovs_switch_data}</arg>
<arg>${data}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-08T01:08:33.742932" elapsed="0.000539"/>
</kw>
<return>
<value>${data}</value>
<status status="PASS" start="2026-04-08T01:08:33.743523" elapsed="0.000045"/>
</return>
<doc>Gets ovs data and parse them.</doc>
<status status="PASS" start="2026-04-08T01:08:33.644367" elapsed="0.099308"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:08:33.744521" level="INFO">${sid} = 1</msg>
<var>${sid}</var>
<arg>${i}+1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:08:33.744172" elapsed="0.000376"/>
</kw>
<kw name="Should Be Connected" owner="OvsManager">
<kw name="OvsManager__Is_Connected" owner="OvsManager">
<if>
<branch type="IF" condition="${update_data}==${True}">
<kw name="Get Ovsdb Data" owner="OvsManager">
<doc>Gets ovs data and parse them.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:33.746370" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:08:33.746010" elapsed="0.000417"/>
</branch>
<status status="PASS" start="2026-04-08T01:08:33.745756" elapsed="0.000697"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:08:33.746841" level="FAIL">Dictionary does not contain key 's1'.</msg>
<var>${bridge}</var>
<arg>${ovs_switch_data}</arg>
<arg>${switch}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="FAIL" start="2026-04-08T01:08:33.746613" elapsed="0.000337">Dictionary does not contain key 's1'.</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${cntls}</var>
<arg>${bridge}</arg>
<arg>controller</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:33.747131" elapsed="0.000021"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${cntl}</var>
<arg>${cntls}</arg>
<arg>${controller}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:33.747331" elapsed="0.000021"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${connected}</var>
<arg>${cntl}</arg>
<arg>is_connected</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:33.747510" elapsed="0.000021"/>
</kw>
<return>
<value>${connected}</value>
<status status="NOT RUN" start="2026-04-08T01:08:33.747575" elapsed="0.000016"/>
</return>
<kw name="Execute OvsVsctl Show Command" owner="OvsManager" type="TEARDOWN">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:08:33.749648" level="INFO">sh ovs-vsctl show</msg>
<arg>${lcmd_prefix} ovs-vsctl show</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:08:33.748219" elapsed="0.001491"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-08T01:08:33.759383" level="INFO">9a5df812-eb49-4477-a37e-2d464c02791d
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.48:6654"
        Controller "tcp:10.30.170.131:6654"
        Controller "tcp:10.30.171.110:6654"
        fail_mode: standalone
        Port s1
            Interface s1
                type: internal
        Port s1-eth1
            Interface s1-eth1
    ovs_version: "2.17.11"
mininet&gt;</msg>
<msg time="2026-04-08T01:08:33.759477" level="INFO">${output} = 9a5df812-eb49-4477-a37e-2d464c02791d
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.48:6654"
        Controller "tcp:10.30.170.131:6654"
        Controller "tcp:10.30.171...</msg>
<var>${output}</var>
<arg>${lprompt}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-08T01:08:33.749879" elapsed="0.009625"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:08:33.760003" level="INFO">9a5df812-eb49-4477-a37e-2d464c02791d
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.48:6654"
        Controller "tcp:10.30.170.131:6654"
        Controller "tcp:10.30.171.110:6654"
        fail_mode: standalone
        Port s1
            Interface s1
                type: internal
        Port s1-eth1
            Interface s1-eth1
    ovs_version: "2.17.11"
mininet&gt;</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:08:33.759704" elapsed="0.000349"/>
</kw>
<doc>Executes ovs-vsctl show command and returns stdout, no check nor change is performed</doc>
<status status="PASS" start="2026-04-08T01:08:33.747875" elapsed="0.012234"/>
</kw>
<var>${connected}</var>
<arg>${switch}</arg>
<arg>${controller}</arg>
<arg>update_data=${update_data}</arg>
<doc>Return is_connected boolean value</doc>
<status status="FAIL" start="2026-04-08T01:08:33.745399" elapsed="0.014807">Dictionary does not contain key 's1'.</status>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${connected}</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:33.760389" elapsed="0.000022"/>
</kw>
<arg>s${sid}</arg>
<arg>${ODL_SYSTEM_1_IP}</arg>
<arg>update_data=${False}</arg>
<doc>Check if the switch is connected</doc>
<status status="FAIL" start="2026-04-08T01:08:33.744782" elapsed="0.015713">Dictionary does not contain key 's1'.</status>
</kw>
<kw name="Should Be Connected" owner="OvsManager">
<arg>s${sid}</arg>
<arg>${ODL_SYSTEM_2_IP}</arg>
<arg>update_data=${False}</arg>
<doc>Check if the switch is connected</doc>
<status status="NOT RUN" start="2026-04-08T01:08:33.760714" elapsed="0.000024"/>
</kw>
<kw name="Should Be Connected" owner="OvsManager">
<arg>s${sid}</arg>
<arg>${ODL_SYSTEM_3_IP}</arg>
<arg>update_data=${False}</arg>
<doc>Check if the switch is connected</doc>
<status status="NOT RUN" start="2026-04-08T01:08:33.760942" elapsed="0.000023"/>
</kw>
<var name="${i}">0</var>
<status status="FAIL" start="2026-04-08T01:08:33.744000" elapsed="0.017018">Dictionary does not contain key 's1'.</status>
</iter>
<var>${i}</var>
<value>0</value>
<value>${SWITCHES}</value>
<status status="FAIL" start="2026-04-08T01:08:33.743730" elapsed="0.017344">Dictionary does not contain key 's1'.</status>
</for>
<doc>Verifies all switches are connected to all cluster nodes</doc>
<status status="FAIL" start="2026-04-08T01:08:33.643253" elapsed="0.117928">Dictionary does not contain key 's1'.</status>
</kw>
<kw name="Check All Switches Connected To All Cluster Nodes">
<kw name="Get Ovsdb Data" owner="OvsManager">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:08:34.766768" level="INFO">sh ovs-vsctl list Bridge</msg>
<arg>${lcmd_prefix} ${SH_BR_CMD}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:08:34.763851" elapsed="0.003065"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-08T01:08:34.816212" level="INFO">_uuid               : b1f3a25e-4d19-465f-912b-17fe7b1acbdb
auto_attach         : []
controller          : [419e3e41-ddbb-4be3-b539-f4d045a9bbd9, 740cc856-2b97-4888-820d-bf0f9d99a501, bbb4531e-5733-4157-b3f6-ea7bf10a308b]
datapath_id         : "0000000000000001"
datapath_type       : ""
datapath_version    : "&lt;unknown&gt;"
external_ids        : {}
fail_mode           : standalone
flood_vlans         : []
flow_tables         : {}
ipfix               : []
mcast_snooping_enable: false
mirrors             : []
name                : s1
netflow             : []
other_config        : {datapath-id="0000000000000001", disable-in-band="true", dp-desc=s1}
ports               : [079fa24c-466d-4b78-b64c-7669ebd0e515, 9e99a58c-a78c-4b0a-b18c-2ef2b895c497]
protocols           : [OpenFlow13]
rstp_enable         : false
rstp_status         : {}
sflow               : []
status              : {}
stp_enable          : false
mininet&gt;</msg>
<msg time="2026-04-08T01:08:34.816428" level="INFO">${brstdout} = _uuid               : b1f3a25e-4d19-465f-912b-17fe7b1acbdb
auto_attach         : []
controller          : [419e3e41-ddbb-4be3-b539-f4d045a9bbd9, 740cc856-2b97-4888-820d-bf0f9d99a501, bbb4531e-5733-4...</msg>
<var>${brstdout}</var>
<arg>${lprompt}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-08T01:08:34.767392" elapsed="0.049065"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:08:34.817051" level="INFO">_uuid               : b1f3a25e-4d19-465f-912b-17fe7b1acbdb
auto_attach         : []
controller          : [419e3e41-ddbb-4be3-b539-f4d045a9bbd9, 740cc856-2b97-4888-820d-bf0f9d99a501, bbb4531e-5733-4157-b3f6-ea7bf10a308b]
datapath_id         : "0000000000000001"
datapath_type       : ""
datapath_version    : "&lt;unknown&gt;"
external_ids        : {}
fail_mode           : standalone
flood_vlans         : []
flow_tables         : {}
ipfix               : []
mcast_snooping_enable: false
mirrors             : []
name                : s1
netflow             : []
other_config        : {datapath-id="0000000000000001", disable-in-band="true", dp-desc=s1}
ports               : [079fa24c-466d-4b78-b64c-7669ebd0e515, 9e99a58c-a78c-4b0a-b18c-2ef2b895c497]
protocols           : [OpenFlow13]
rstp_enable         : false
rstp_status         : {}
sflow               : []
status              : {}
stp_enable          : false
mininet&gt;</msg>
<arg>${brstdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:08:34.816726" elapsed="0.000384"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:08:34.818749" level="INFO">sh ovs-vsctl list Controller</msg>
<arg>${lcmd_prefix} ${SH_CNTL_CMD}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:08:34.817291" elapsed="0.001513"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-08T01:08:34.848535" level="INFO">_uuid               : 419e3e41-ddbb-4be3-b539-f4d045a9bbd9
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : false
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : []
status              : {last_error="Connection refused", sec_since_disconnect="8", state=CONNECTING}
target              : "tcp:10.30.170.48:6654"
type                : []

_uuid               : 740cc856-2b97-4888-820d-bf0f9d99a501
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : false
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : []
status              : {last_error="Connection refused", sec_since_disconnect="8", state=CONNECTING}
target              : "tcp:10.30.170.131:6654"
type                : []

_uuid               : bbb4531e-5733-4157-b3f6-ea7bf10a308b
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : false
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : []
status              : {last_error="Connection refused", sec_since_disconnect="8", state=CONNECTING}
target              : "tcp:10.30.171.110:6654"
type                : []
mininet&gt;</msg>
<msg time="2026-04-08T01:08:34.848798" level="INFO">${cntlstdout} = _uuid               : 419e3e41-ddbb-4be3-b539-f4d045a9bbd9
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
exter...</msg>
<var>${cntlstdout}</var>
<arg>${lprompt}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-08T01:08:34.818973" elapsed="0.029858"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:08:34.849664" level="INFO">_uuid               : 419e3e41-ddbb-4be3-b539-f4d045a9bbd9
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : false
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : []
status              : {last_error="Connection refused", sec_since_disconnect="8", state=CONNECTING}
target              : "tcp:10.30.170.48:6654"
type                : []

_uuid               : 740cc856-2b97-4888-820d-bf0f9d99a501
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : false
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : []
status              : {last_error="Connection refused", sec_since_disconnect="8", state=CONNECTING}
target              : "tcp:10.30.170.131:6654"
type                : []

_uuid               : bbb4531e-5733-4157-b3f6-ea7bf10a308b
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : false
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : []
status              : {last_error="Connection refused", sec_since_disconnect="8", state=CONNECTING}
target              : "tcp:10.30.171.110:6654"
type                : []
mininet&gt;</msg>
<arg>${cntlstdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:08:34.849238" elapsed="0.000492"/>
</kw>
<kw name="Parse" owner="VsctlListParser">
<msg time="2026-04-08T01:08:34.850425" level="INFO">_uuid:b1f3a25e-4d19-465f-912b-17fe7b1acbdb
auto_attach:[]
controller:[419e3e41-ddbb-4be3-b539-f4d045a9bbd9,740cc856-2b97-4888-820d-bf0f9d99a501,bbb4531e-5733-4157-b3f6-ea7bf10a308b]
datapath_id:"0000000000000001"
datapath_type:""
datapath_version:"&lt;unknown&gt;"
external_ids:{}
fail_mode:standalone
flood_vlans:[]
flow_tables:{}
ipfix:[]
mcast_snooping_enable:false
mirrors:[]
name:s1
netflow:[]
other_config:{datapath-id="0000000000000001",disable-in-band="true",dp-desc=s1}
ports:[079fa24c-466d-4b78-b64c-7669ebd0e515,9e99a58c-a78c-4b0a-b18c-2ef2b895c497]
protocols:[OpenFlow13]
rstp_enable:false
rstp_status:{}
sflow:[]
status:{}
stp_enable:false
_uuid:419e3e41-ddbb-4be3-b539-f4d045a9bbd9
connection_mode:[]
controller_burst_limit:[]
controller_queue_size:[]
controller_rate_limit:[]
enable_async_messages:[]
external_ids:{}
inactivity_probe:[]
is_connected:false
local_gateway:[]
local_ip:[]
local_netmask:[]
max_backoff:[]
other_config:{}
role:[]
status:{last_error="Connectionrefused",sec_since_disconnect="8",state=CONNECTING}
target:"tcp:10.30.170.48:6654"
type:[]
_uuid:740cc856-2b97-4888-820d-bf0f9d99a501
connection_mode:[]
controller_burst_limit:[]
controller_queue_size:[]
controller_rate_limit:[]
enable_async_messages:[]
external_ids:{}
inactivity_probe:[]
is_connected:false
local_gateway:[]
local_ip:[]
local_netmask:[]
max_backoff:[]
other_config:{}
role:[]
status:{last_error="Connectionrefused",sec_since_disconnect="8",state=CONNECTING}
target:"tcp:10.30.170.131:6654"
type:[]
_uuid:bbb4531e-5733-4157-b3f6-ea7bf10a308b
connection_mode:[]
controller_burst_limit:[]
controller_queue_size:[]
controller_rate_limit:[]
enable_async_messages:[]
external_ids:{}
inactivity_probe:[]
is_connected:false
local_gateway:[]
local_ip:[]
local_netmask:[]
max_backoff:[]
other_config:{}
role:[]
status:{last_error="Connectionrefused",sec_since_disconnect="8",state=CONNECTING}
target:"tcp:10.30.171.110:6654"
type:[]</msg>
<msg time="2026-04-08T01:08:34.850640" level="INFO">${data} = {'': {'_uuid': 'b1f3a25e-4d19-465f-912b-17fe7b1acbdb', 'auto_attach': '[]', 'controller': {'10.30.170.48': {'_uuid': '419e3e41-ddbb-4be3-b539-f4d045a9bbd9', 'connection_mode': '[]', 'controller_burst_...</msg>
<msg time="2026-04-08T01:08:34.850699" level="INFO">${bridegs} = {'b1f3a25e-4d19-465f-912b-17fe7b1acbdb': {'_uuid': 'b1f3a25e-4d19-465f-912b-17fe7b1acbdb', 'auto_attach': '[]', 'controller': '[419e3e41-ddbb-4be3-b539-f4d045a9bbd9,740cc856-2b97-4888-820d-bf0f9d99a50...</msg>
<msg time="2026-04-08T01:08:34.850763" level="INFO">${controllers} = {'419e3e41-ddbb-4be3-b539-f4d045a9bbd9': {'_uuid': '419e3e41-ddbb-4be3-b539-f4d045a9bbd9', 'connection_mode': '[]', 'controller_burst_limit': '[]', 'controller_queue_size': '[]', 'controller_rate_limi...</msg>
<var>${data}</var>
<var>${bridegs}</var>
<var>${controllers}</var>
<arg>${brstdout}</arg>
<arg>${cntlstdout}</arg>
<doc>Produces dictionary with data for future usege</doc>
<status status="PASS" start="2026-04-08T01:08:34.849923" elapsed="0.000864"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:08:34.851315" level="INFO">{'': {'_uuid': 'b1f3a25e-4d19-465f-912b-17fe7b1acbdb', 'auto_attach': '[]', 'controller': {'10.30.170.48': {'_uuid': '419e3e41-ddbb-4be3-b539-f4d045a9bbd9', 'connection_mode': '[]', 'controller_burst_limit': '[]', 'controller_queue_size': '[]', 'controller_rate_limit': '[]', 'enable_async_messages': '[]', 'external_ids': '{}', 'inactivity_probe': '[]', 'is_connected': False, 'local_gateway': '[]', 'local_ip': '[]', 'local_netmask': '[]', 'max_backoff': '[]', 'other_config': '{}', 'role': '[]', 'status': '{last_error="Connectionrefused",sec_since_disconnect="8",state=CONNECTING}', 'target': '"tcp:10.30.170.48:6654"', 'type': '[]'}, '10.30.170.131': {'_uuid': '740cc856-2b97-4888-820d-bf0f9d99a501', 'connection_mode': '[]', 'controller_burst_limit': '[]', 'controller_queue_size': '[]', 'controller_rate_limit': '[]', 'enable_async_messages': '[]', 'external_ids': '{}', 'inactivity_probe': '[]', 'is_connected': False, 'local_gateway': '[]', 'local_ip': '[]', 'local_netmask': '[]', 'max_backoff': '[]', 'other_config': '{}', 'role': '[]', 'status': '{last_error="Connectionrefused",sec_since_disconnect="8",state=CONNECTING}', 'target': '"tcp:10.30.170.131:6654"', 'type': '[]'}, '10.30.171.110': {'_uuid': 'bbb4531e-5733-4157-b3f6-ea7bf10a308b', 'connection_mode': '[]', 'controller_burst_limit': '[]', 'controller_queue_size': '[]', 'controller_rate_limit': '[]', 'enable_async_messages': '[]', 'external_ids': '{}', 'inactivity_probe': '[]', 'is_connected': False, 'local_gateway': '[]', 'local_ip': '[]', 'local_netmask': '[]', 'max_backoff': '[]', 'other_config': '{}', 'role': '[]', 'status': '{last_error="Connectionrefused",sec_since_disconnect="8",state=CONNECTING}', 'target': '"tcp:10.30.171.110:6654"', 'type': '[]'}}, 'datapath_id': '"0000000000000001"', 'datapath_type': '""', 'datapath_version': '"&lt;unknown&gt;"', 'external_ids': '{}', 'fail_mode': 'standalone', 'flood_vlans': '[]', 'flow_tables': '{}', 'ipfix': '[]', 'mcast_snooping_enable': 'false', 'mirrors': '[]', 'name': 's1', 'netflow': '[]', 'other_config': '{datapath-id="0000000000000001",disable-in-band="true",dp-desc=s1}', 'ports': '[079fa24c-466d-4b78-b64c-7669ebd0e515,9e99a58c-a78c-4b0a-b18c-2ef2b895c497]', 'protocols': '[OpenFlow13]', 'rstp_enable': 'false', 'rstp_status': '{}', 'sflow': '[]', 'status': '{}', 'stp_enable': 'false'}}</msg>
<arg>${data}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:08:34.850965" elapsed="0.000419"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-08T01:08:34.852036" level="INFO">${ovs_switch_data} = {'': {'_uuid': 'b1f3a25e-4d19-465f-912b-17fe7b1acbdb', 'auto_attach': '[]', 'controller': {'10.30.170.48': {'_uuid': '419e3e41-ddbb-4be3-b539-f4d045a9bbd9', 'connection_mode': '[]', 'controller_burst_...</msg>
<arg>${ovs_switch_data}</arg>
<arg>${data}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-08T01:08:34.851567" elapsed="0.000515"/>
</kw>
<return>
<value>${data}</value>
<status status="PASS" start="2026-04-08T01:08:34.852135" elapsed="0.000065"/>
</return>
<doc>Gets ovs data and parse them.</doc>
<status status="PASS" start="2026-04-08T01:08:34.763083" elapsed="0.089235"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:08:34.853124" level="INFO">${sid} = 1</msg>
<var>${sid}</var>
<arg>${i}+1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:08:34.852764" elapsed="0.000387"/>
</kw>
<kw name="Should Be Connected" owner="OvsManager">
<kw name="OvsManager__Is_Connected" owner="OvsManager">
<if>
<branch type="IF" condition="${update_data}==${True}">
<kw name="Get Ovsdb Data" owner="OvsManager">
<doc>Gets ovs data and parse them.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:34.854998" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:08:34.854409" elapsed="0.000644"/>
</branch>
<status status="PASS" start="2026-04-08T01:08:34.854388" elapsed="0.000692"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:08:34.855503" level="FAIL">Dictionary does not contain key 's1'.</msg>
<var>${bridge}</var>
<arg>${ovs_switch_data}</arg>
<arg>${switch}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="FAIL" start="2026-04-08T01:08:34.855277" elapsed="0.000335">Dictionary does not contain key 's1'.</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${cntls}</var>
<arg>${bridge}</arg>
<arg>controller</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:34.855789" elapsed="0.000022"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${cntl}</var>
<arg>${cntls}</arg>
<arg>${controller}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:34.855969" elapsed="0.000020"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${connected}</var>
<arg>${cntl}</arg>
<arg>is_connected</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:34.856144" elapsed="0.000035"/>
</kw>
<return>
<value>${connected}</value>
<status status="NOT RUN" start="2026-04-08T01:08:34.856226" elapsed="0.000016"/>
</return>
<kw name="Execute OvsVsctl Show Command" owner="OvsManager" type="TEARDOWN">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:08:34.858532" level="INFO">sh ovs-vsctl show</msg>
<arg>${lcmd_prefix} ovs-vsctl show</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:08:34.856808" elapsed="0.001782"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-08T01:08:34.874454" level="INFO">9a5df812-eb49-4477-a37e-2d464c02791d
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.48:6654"
        Controller "tcp:10.30.170.131:6654"
        Controller "tcp:10.30.171.110:6654"
        fail_mode: standalone
        Port s1
            Interface s1
                type: internal
        Port s1-eth1
            Interface s1-eth1
    ovs_version: "2.17.11"
mininet&gt;</msg>
<msg time="2026-04-08T01:08:34.874653" level="INFO">${output} = 9a5df812-eb49-4477-a37e-2d464c02791d
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.48:6654"
        Controller "tcp:10.30.170.131:6654"
        Controller "tcp:10.30.171...</msg>
<var>${output}</var>
<arg>${lprompt}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-08T01:08:34.858780" elapsed="0.015916"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:08:34.875545" level="INFO">9a5df812-eb49-4477-a37e-2d464c02791d
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.48:6654"
        Controller "tcp:10.30.170.131:6654"
        Controller "tcp:10.30.171.110:6654"
        fail_mode: standalone
        Port s1
            Interface s1
                type: internal
        Port s1-eth1
            Interface s1-eth1
    ovs_version: "2.17.11"
mininet&gt;</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:08:34.875059" elapsed="0.000652"/>
</kw>
<doc>Executes ovs-vsctl show command and returns stdout, no check nor change is performed</doc>
<status status="PASS" start="2026-04-08T01:08:34.856502" elapsed="0.019300"/>
</kw>
<var>${connected}</var>
<arg>${switch}</arg>
<arg>${controller}</arg>
<arg>update_data=${update_data}</arg>
<doc>Return is_connected boolean value</doc>
<status status="FAIL" start="2026-04-08T01:08:34.854022" elapsed="0.021910">Dictionary does not contain key 's1'.</status>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${connected}</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:34.876276" elapsed="0.000051"/>
</kw>
<arg>s${sid}</arg>
<arg>${ODL_SYSTEM_1_IP}</arg>
<arg>update_data=${False}</arg>
<doc>Check if the switch is connected</doc>
<status status="FAIL" start="2026-04-08T01:08:34.853400" elapsed="0.023059">Dictionary does not contain key 's1'.</status>
</kw>
<kw name="Should Be Connected" owner="OvsManager">
<arg>s${sid}</arg>
<arg>${ODL_SYSTEM_2_IP}</arg>
<arg>update_data=${False}</arg>
<doc>Check if the switch is connected</doc>
<status status="NOT RUN" start="2026-04-08T01:08:34.876808" elapsed="0.000037"/>
</kw>
<kw name="Should Be Connected" owner="OvsManager">
<arg>s${sid}</arg>
<arg>${ODL_SYSTEM_3_IP}</arg>
<arg>update_data=${False}</arg>
<doc>Check if the switch is connected</doc>
<status status="NOT RUN" start="2026-04-08T01:08:34.877266" elapsed="0.000047"/>
</kw>
<var name="${i}">0</var>
<status status="FAIL" start="2026-04-08T01:08:34.852609" elapsed="0.024815">Dictionary does not contain key 's1'.</status>
</iter>
<var>${i}</var>
<value>0</value>
<value>${SWITCHES}</value>
<status status="FAIL" start="2026-04-08T01:08:34.852378" elapsed="0.025160">Dictionary does not contain key 's1'.</status>
</for>
<doc>Verifies all switches are connected to all cluster nodes</doc>
<status status="FAIL" start="2026-04-08T01:08:34.761936" elapsed="0.115792">Dictionary does not contain key 's1'.</status>
</kw>
<kw name="Check All Switches Connected To All Cluster Nodes">
<kw name="Get Ovsdb Data" owner="OvsManager">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:08:35.883260" level="INFO">sh ovs-vsctl list Bridge</msg>
<arg>${lcmd_prefix} ${SH_BR_CMD}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:08:35.880719" elapsed="0.002696"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-08T01:08:35.929524" level="INFO">_uuid               : b1f3a25e-4d19-465f-912b-17fe7b1acbdb
auto_attach         : []
controller          : [419e3e41-ddbb-4be3-b539-f4d045a9bbd9, 740cc856-2b97-4888-820d-bf0f9d99a501, bbb4531e-5733-4157-b3f6-ea7bf10a308b]
datapath_id         : "0000000000000001"
datapath_type       : ""
datapath_version    : "&lt;unknown&gt;"
external_ids        : {}
fail_mode           : standalone
flood_vlans         : []
flow_tables         : {}
ipfix               : []
mcast_snooping_enable: false
mirrors             : []
name                : s1
netflow             : []
other_config        : {datapath-id="0000000000000001", disable-in-band="true", dp-desc=s1}
ports               : [079fa24c-466d-4b78-b64c-7669ebd0e515, 9e99a58c-a78c-4b0a-b18c-2ef2b895c497]
protocols           : [OpenFlow13]
rstp_enable         : false
rstp_status         : {}
sflow               : []
status              : {}
stp_enable          : false
mininet&gt;</msg>
<msg time="2026-04-08T01:08:35.929639" level="INFO">${brstdout} = _uuid               : b1f3a25e-4d19-465f-912b-17fe7b1acbdb
auto_attach         : []
controller          : [419e3e41-ddbb-4be3-b539-f4d045a9bbd9, 740cc856-2b97-4888-820d-bf0f9d99a501, bbb4531e-5733-4...</msg>
<var>${brstdout}</var>
<arg>${lprompt}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-08T01:08:35.883818" elapsed="0.045848"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:08:35.930266" level="INFO">_uuid               : b1f3a25e-4d19-465f-912b-17fe7b1acbdb
auto_attach         : []
controller          : [419e3e41-ddbb-4be3-b539-f4d045a9bbd9, 740cc856-2b97-4888-820d-bf0f9d99a501, bbb4531e-5733-4157-b3f6-ea7bf10a308b]
datapath_id         : "0000000000000001"
datapath_type       : ""
datapath_version    : "&lt;unknown&gt;"
external_ids        : {}
fail_mode           : standalone
flood_vlans         : []
flow_tables         : {}
ipfix               : []
mcast_snooping_enable: false
mirrors             : []
name                : s1
netflow             : []
other_config        : {datapath-id="0000000000000001", disable-in-band="true", dp-desc=s1}
ports               : [079fa24c-466d-4b78-b64c-7669ebd0e515, 9e99a58c-a78c-4b0a-b18c-2ef2b895c497]
protocols           : [OpenFlow13]
rstp_enable         : false
rstp_status         : {}
sflow               : []
status              : {}
stp_enable          : false
mininet&gt;</msg>
<arg>${brstdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:08:35.929934" elapsed="0.000391"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:08:35.931759" level="INFO">sh ovs-vsctl list Controller</msg>
<arg>${lcmd_prefix} ${SH_CNTL_CMD}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:08:35.930490" elapsed="0.001323"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-08T01:08:35.962392" level="INFO">_uuid               : 419e3e41-ddbb-4be3-b539-f4d045a9bbd9
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : false
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : []
status              : {last_error="Connection refused", sec_since_disconnect="8", state=CONNECTING}
target              : "tcp:10.30.170.48:6654"
type                : []

_uuid               : 740cc856-2b97-4888-820d-bf0f9d99a501
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : false
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : []
status              : {last_error="Connection refused", sec_since_disconnect="8", state=CONNECTING}
target              : "tcp:10.30.170.131:6654"
type                : []

_uuid               : bbb4531e-5733-4157-b3f6-ea7bf10a308b
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : false
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : []
status              : {last_error="Connection refused", sec_since_disconnect="8", state=CONNECTING}
target              : "tcp:10.30.171.110:6654"
type                : []
mininet&gt;</msg>
<msg time="2026-04-08T01:08:35.962529" level="INFO">${cntlstdout} = _uuid               : 419e3e41-ddbb-4be3-b539-f4d045a9bbd9
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
exter...</msg>
<var>${cntlstdout}</var>
<arg>${lprompt}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-08T01:08:35.931984" elapsed="0.030573"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:08:35.963175" level="INFO">_uuid               : 419e3e41-ddbb-4be3-b539-f4d045a9bbd9
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : false
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : []
status              : {last_error="Connection refused", sec_since_disconnect="8", state=CONNECTING}
target              : "tcp:10.30.170.48:6654"
type                : []

_uuid               : 740cc856-2b97-4888-820d-bf0f9d99a501
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : false
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : []
status              : {last_error="Connection refused", sec_since_disconnect="8", state=CONNECTING}
target              : "tcp:10.30.170.131:6654"
type                : []

_uuid               : bbb4531e-5733-4157-b3f6-ea7bf10a308b
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : false
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : []
status              : {last_error="Connection refused", sec_since_disconnect="8", state=CONNECTING}
target              : "tcp:10.30.171.110:6654"
type                : []
mininet&gt;</msg>
<arg>${cntlstdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:08:35.962875" elapsed="0.000380"/>
</kw>
<kw name="Parse" owner="VsctlListParser">
<msg time="2026-04-08T01:08:35.963894" level="INFO">_uuid:b1f3a25e-4d19-465f-912b-17fe7b1acbdb
auto_attach:[]
controller:[419e3e41-ddbb-4be3-b539-f4d045a9bbd9,740cc856-2b97-4888-820d-bf0f9d99a501,bbb4531e-5733-4157-b3f6-ea7bf10a308b]
datapath_id:"0000000000000001"
datapath_type:""
datapath_version:"&lt;unknown&gt;"
external_ids:{}
fail_mode:standalone
flood_vlans:[]
flow_tables:{}
ipfix:[]
mcast_snooping_enable:false
mirrors:[]
name:s1
netflow:[]
other_config:{datapath-id="0000000000000001",disable-in-band="true",dp-desc=s1}
ports:[079fa24c-466d-4b78-b64c-7669ebd0e515,9e99a58c-a78c-4b0a-b18c-2ef2b895c497]
protocols:[OpenFlow13]
rstp_enable:false
rstp_status:{}
sflow:[]
status:{}
stp_enable:false
_uuid:419e3e41-ddbb-4be3-b539-f4d045a9bbd9
connection_mode:[]
controller_burst_limit:[]
controller_queue_size:[]
controller_rate_limit:[]
enable_async_messages:[]
external_ids:{}
inactivity_probe:[]
is_connected:false
local_gateway:[]
local_ip:[]
local_netmask:[]
max_backoff:[]
other_config:{}
role:[]
status:{last_error="Connectionrefused",sec_since_disconnect="8",state=CONNECTING}
target:"tcp:10.30.170.48:6654"
type:[]
_uuid:740cc856-2b97-4888-820d-bf0f9d99a501
connection_mode:[]
controller_burst_limit:[]
controller_queue_size:[]
controller_rate_limit:[]
enable_async_messages:[]
external_ids:{}
inactivity_probe:[]
is_connected:false
local_gateway:[]
local_ip:[]
local_netmask:[]
max_backoff:[]
other_config:{}
role:[]
status:{last_error="Connectionrefused",sec_since_disconnect="8",state=CONNECTING}
target:"tcp:10.30.170.131:6654"
type:[]
_uuid:bbb4531e-5733-4157-b3f6-ea7bf10a308b
connection_mode:[]
controller_burst_limit:[]
controller_queue_size:[]
controller_rate_limit:[]
enable_async_messages:[]
external_ids:{}
inactivity_probe:[]
is_connected:false
local_gateway:[]
local_ip:[]
local_netmask:[]
max_backoff:[]
other_config:{}
role:[]
status:{last_error="Connectionrefused",sec_since_disconnect="8",state=CONNECTING}
target:"tcp:10.30.171.110:6654"
type:[]</msg>
<msg time="2026-04-08T01:08:35.964037" level="INFO">${data} = {'': {'_uuid': 'b1f3a25e-4d19-465f-912b-17fe7b1acbdb', 'auto_attach': '[]', 'controller': {'10.30.170.48': {'_uuid': '419e3e41-ddbb-4be3-b539-f4d045a9bbd9', 'connection_mode': '[]', 'controller_burst_...</msg>
<msg time="2026-04-08T01:08:35.964095" level="INFO">${bridegs} = {'b1f3a25e-4d19-465f-912b-17fe7b1acbdb': {'_uuid': 'b1f3a25e-4d19-465f-912b-17fe7b1acbdb', 'auto_attach': '[]', 'controller': '[419e3e41-ddbb-4be3-b539-f4d045a9bbd9,740cc856-2b97-4888-820d-bf0f9d99a50...</msg>
<msg time="2026-04-08T01:08:35.964164" level="INFO">${controllers} = {'419e3e41-ddbb-4be3-b539-f4d045a9bbd9': {'_uuid': '419e3e41-ddbb-4be3-b539-f4d045a9bbd9', 'connection_mode': '[]', 'controller_burst_limit': '[]', 'controller_queue_size': '[]', 'controller_rate_limi...</msg>
<var>${data}</var>
<var>${bridegs}</var>
<var>${controllers}</var>
<arg>${brstdout}</arg>
<arg>${cntlstdout}</arg>
<doc>Produces dictionary with data for future usege</doc>
<status status="PASS" start="2026-04-08T01:08:35.963431" elapsed="0.000772"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:08:35.964663" level="INFO">{'': {'_uuid': 'b1f3a25e-4d19-465f-912b-17fe7b1acbdb', 'auto_attach': '[]', 'controller': {'10.30.170.48': {'_uuid': '419e3e41-ddbb-4be3-b539-f4d045a9bbd9', 'connection_mode': '[]', 'controller_burst_limit': '[]', 'controller_queue_size': '[]', 'controller_rate_limit': '[]', 'enable_async_messages': '[]', 'external_ids': '{}', 'inactivity_probe': '[]', 'is_connected': False, 'local_gateway': '[]', 'local_ip': '[]', 'local_netmask': '[]', 'max_backoff': '[]', 'other_config': '{}', 'role': '[]', 'status': '{last_error="Connectionrefused",sec_since_disconnect="8",state=CONNECTING}', 'target': '"tcp:10.30.170.48:6654"', 'type': '[]'}, '10.30.170.131': {'_uuid': '740cc856-2b97-4888-820d-bf0f9d99a501', 'connection_mode': '[]', 'controller_burst_limit': '[]', 'controller_queue_size': '[]', 'controller_rate_limit': '[]', 'enable_async_messages': '[]', 'external_ids': '{}', 'inactivity_probe': '[]', 'is_connected': False, 'local_gateway': '[]', 'local_ip': '[]', 'local_netmask': '[]', 'max_backoff': '[]', 'other_config': '{}', 'role': '[]', 'status': '{last_error="Connectionrefused",sec_since_disconnect="8",state=CONNECTING}', 'target': '"tcp:10.30.170.131:6654"', 'type': '[]'}, '10.30.171.110': {'_uuid': 'bbb4531e-5733-4157-b3f6-ea7bf10a308b', 'connection_mode': '[]', 'controller_burst_limit': '[]', 'controller_queue_size': '[]', 'controller_rate_limit': '[]', 'enable_async_messages': '[]', 'external_ids': '{}', 'inactivity_probe': '[]', 'is_connected': False, 'local_gateway': '[]', 'local_ip': '[]', 'local_netmask': '[]', 'max_backoff': '[]', 'other_config': '{}', 'role': '[]', 'status': '{last_error="Connectionrefused",sec_since_disconnect="8",state=CONNECTING}', 'target': '"tcp:10.30.171.110:6654"', 'type': '[]'}}, 'datapath_id': '"0000000000000001"', 'datapath_type': '""', 'datapath_version': '"&lt;unknown&gt;"', 'external_ids': '{}', 'fail_mode': 'standalone', 'flood_vlans': '[]', 'flow_tables': '{}', 'ipfix': '[]', 'mcast_snooping_enable': 'false', 'mirrors': '[]', 'name': 's1', 'netflow': '[]', 'other_config': '{datapath-id="0000000000000001",disable-in-band="true",dp-desc=s1}', 'ports': '[079fa24c-466d-4b78-b64c-7669ebd0e515,9e99a58c-a78c-4b0a-b18c-2ef2b895c497]', 'protocols': '[OpenFlow13]', 'rstp_enable': 'false', 'rstp_status': '{}', 'sflow': '[]', 'status': '{}', 'stp_enable': 'false'}}</msg>
<arg>${data}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:08:35.964385" elapsed="0.000343"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-08T01:08:35.965533" level="INFO">${ovs_switch_data} = {'': {'_uuid': 'b1f3a25e-4d19-465f-912b-17fe7b1acbdb', 'auto_attach': '[]', 'controller': {'10.30.170.48': {'_uuid': '419e3e41-ddbb-4be3-b539-f4d045a9bbd9', 'connection_mode': '[]', 'controller_burst_...</msg>
<arg>${ovs_switch_data}</arg>
<arg>${data}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-08T01:08:35.964908" elapsed="0.000707"/>
</kw>
<return>
<value>${data}</value>
<status status="PASS" start="2026-04-08T01:08:35.965667" elapsed="0.000044"/>
</return>
<doc>Gets ovs data and parse them.</doc>
<status status="PASS" start="2026-04-08T01:08:35.879944" elapsed="0.085877"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:08:35.966668" level="INFO">${sid} = 1</msg>
<var>${sid}</var>
<arg>${i}+1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:08:35.966287" elapsed="0.000409"/>
</kw>
<kw name="Should Be Connected" owner="OvsManager">
<kw name="OvsManager__Is_Connected" owner="OvsManager">
<if>
<branch type="IF" condition="${update_data}==${True}">
<kw name="Get Ovsdb Data" owner="OvsManager">
<doc>Gets ovs data and parse them.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:35.968525" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:08:35.967953" elapsed="0.000630"/>
</branch>
<status status="PASS" start="2026-04-08T01:08:35.967933" elapsed="0.000676"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:08:35.968988" level="FAIL">Dictionary does not contain key 's1'.</msg>
<var>${bridge}</var>
<arg>${ovs_switch_data}</arg>
<arg>${switch}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="FAIL" start="2026-04-08T01:08:35.968765" elapsed="0.000328">Dictionary does not contain key 's1'.</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${cntls}</var>
<arg>${bridge}</arg>
<arg>controller</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:35.969298" elapsed="0.000023"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${cntl}</var>
<arg>${cntls}</arg>
<arg>${controller}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:35.969484" elapsed="0.000021"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${connected}</var>
<arg>${cntl}</arg>
<arg>is_connected</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:35.969698" elapsed="0.000023"/>
</kw>
<return>
<value>${connected}</value>
<status status="NOT RUN" start="2026-04-08T01:08:35.969772" elapsed="0.000018"/>
</return>
<kw name="Execute OvsVsctl Show Command" owner="OvsManager" type="TEARDOWN">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:08:35.971741" level="INFO">sh ovs-vsctl show</msg>
<arg>${lcmd_prefix} ovs-vsctl show</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:08:35.970381" elapsed="0.001417"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-08T01:08:35.981122" level="INFO">9a5df812-eb49-4477-a37e-2d464c02791d
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.48:6654"
        Controller "tcp:10.30.170.131:6654"
        Controller "tcp:10.30.171.110:6654"
        fail_mode: standalone
        Port s1
            Interface s1
                type: internal
        Port s1-eth1
            Interface s1-eth1
    ovs_version: "2.17.11"
mininet&gt;</msg>
<msg time="2026-04-08T01:08:35.981239" level="INFO">${output} = 9a5df812-eb49-4477-a37e-2d464c02791d
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.48:6654"
        Controller "tcp:10.30.170.131:6654"
        Controller "tcp:10.30.171...</msg>
<var>${output}</var>
<arg>${lprompt}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-08T01:08:35.971967" elapsed="0.009299"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:08:35.981758" level="INFO">9a5df812-eb49-4477-a37e-2d464c02791d
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.48:6654"
        Controller "tcp:10.30.170.131:6654"
        Controller "tcp:10.30.171.110:6654"
        fail_mode: standalone
        Port s1
            Interface s1
                type: internal
        Port s1-eth1
            Interface s1-eth1
    ovs_version: "2.17.11"
mininet&gt;</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:08:35.981481" elapsed="0.000327"/>
</kw>
<doc>Executes ovs-vsctl show command and returns stdout, no check nor change is performed</doc>
<status status="PASS" start="2026-04-08T01:08:35.970051" elapsed="0.011812"/>
</kw>
<var>${connected}</var>
<arg>${switch}</arg>
<arg>${controller}</arg>
<arg>update_data=${update_data}</arg>
<doc>Return is_connected boolean value</doc>
<status status="FAIL" start="2026-04-08T01:08:35.967566" elapsed="0.014371">Dictionary does not contain key 's1'.</status>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${connected}</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:35.982170" elapsed="0.000044"/>
</kw>
<arg>s${sid}</arg>
<arg>${ODL_SYSTEM_1_IP}</arg>
<arg>update_data=${False}</arg>
<doc>Check if the switch is connected</doc>
<status status="FAIL" start="2026-04-08T01:08:35.966929" elapsed="0.015382">Dictionary does not contain key 's1'.</status>
</kw>
<kw name="Should Be Connected" owner="OvsManager">
<arg>s${sid}</arg>
<arg>${ODL_SYSTEM_2_IP}</arg>
<arg>update_data=${False}</arg>
<doc>Check if the switch is connected</doc>
<status status="NOT RUN" start="2026-04-08T01:08:35.982531" elapsed="0.000023"/>
</kw>
<kw name="Should Be Connected" owner="OvsManager">
<arg>s${sid}</arg>
<arg>${ODL_SYSTEM_3_IP}</arg>
<arg>update_data=${False}</arg>
<doc>Check if the switch is connected</doc>
<status status="NOT RUN" start="2026-04-08T01:08:35.982756" elapsed="0.000022"/>
</kw>
<var name="${i}">0</var>
<status status="FAIL" start="2026-04-08T01:08:35.966117" elapsed="0.016716">Dictionary does not contain key 's1'.</status>
</iter>
<var>${i}</var>
<value>0</value>
<value>${SWITCHES}</value>
<status status="FAIL" start="2026-04-08T01:08:35.965888" elapsed="0.017006">Dictionary does not contain key 's1'.</status>
</for>
<doc>Verifies all switches are connected to all cluster nodes</doc>
<status status="FAIL" start="2026-04-08T01:08:35.878848" elapsed="0.104140">Dictionary does not contain key 's1'.</status>
</kw>
<kw name="Check All Switches Connected To All Cluster Nodes">
<kw name="Get Ovsdb Data" owner="OvsManager">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:08:36.988683" level="INFO">sh ovs-vsctl list Bridge</msg>
<arg>${lcmd_prefix} ${SH_BR_CMD}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:08:36.985761" elapsed="0.003070"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-08T01:08:37.035442" level="INFO">_uuid               : b1f3a25e-4d19-465f-912b-17fe7b1acbdb
auto_attach         : []
controller          : [419e3e41-ddbb-4be3-b539-f4d045a9bbd9, 740cc856-2b97-4888-820d-bf0f9d99a501, bbb4531e-5733-4157-b3f6-ea7bf10a308b]
datapath_id         : "0000000000000001"
datapath_type       : ""
datapath_version    : "&lt;unknown&gt;"
external_ids        : {}
fail_mode           : standalone
flood_vlans         : []
flow_tables         : {}
ipfix               : []
mcast_snooping_enable: false
mirrors             : []
name                : s1
netflow             : []
other_config        : {datapath-id="0000000000000001", disable-in-band="true", dp-desc=s1}
ports               : [079fa24c-466d-4b78-b64c-7669ebd0e515, 9e99a58c-a78c-4b0a-b18c-2ef2b895c497]
protocols           : [OpenFlow13]
rstp_enable         : false
rstp_status         : {}
sflow               : []
status              : {}
stp_enable          : false
mininet&gt;</msg>
<msg time="2026-04-08T01:08:37.035665" level="INFO">${brstdout} = _uuid               : b1f3a25e-4d19-465f-912b-17fe7b1acbdb
auto_attach         : []
controller          : [419e3e41-ddbb-4be3-b539-f4d045a9bbd9, 740cc856-2b97-4888-820d-bf0f9d99a501, bbb4531e-5733-4...</msg>
<var>${brstdout}</var>
<arg>${lprompt}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-08T01:08:36.989327" elapsed="0.046366"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:08:37.036313" level="INFO">_uuid               : b1f3a25e-4d19-465f-912b-17fe7b1acbdb
auto_attach         : []
controller          : [419e3e41-ddbb-4be3-b539-f4d045a9bbd9, 740cc856-2b97-4888-820d-bf0f9d99a501, bbb4531e-5733-4157-b3f6-ea7bf10a308b]
datapath_id         : "0000000000000001"
datapath_type       : ""
datapath_version    : "&lt;unknown&gt;"
external_ids        : {}
fail_mode           : standalone
flood_vlans         : []
flow_tables         : {}
ipfix               : []
mcast_snooping_enable: false
mirrors             : []
name                : s1
netflow             : []
other_config        : {datapath-id="0000000000000001", disable-in-band="true", dp-desc=s1}
ports               : [079fa24c-466d-4b78-b64c-7669ebd0e515, 9e99a58c-a78c-4b0a-b18c-2ef2b895c497]
protocols           : [OpenFlow13]
rstp_enable         : false
rstp_status         : {}
sflow               : []
status              : {}
stp_enable          : false
mininet&gt;</msg>
<arg>${brstdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:08:37.035971" elapsed="0.000400"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:08:37.038179" level="INFO">sh ovs-vsctl list Controller</msg>
<arg>${lcmd_prefix} ${SH_CNTL_CMD}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:08:37.036537" elapsed="0.001701"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-08T01:08:37.059428" level="INFO">_uuid               : 419e3e41-ddbb-4be3-b539-f4d045a9bbd9
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : false
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : []
status              : {last_error="Connection refused", sec_since_disconnect="8", state=CONNECTING}
target              : "tcp:10.30.170.48:6654"
type                : []

_uuid               : 740cc856-2b97-4888-820d-bf0f9d99a501
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : false
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : []
status              : {last_error="Connection refused", sec_since_disconnect="8", state=CONNECTING}
target              : "tcp:10.30.170.131:6654"
type                : []

_uuid               : bbb4531e-5733-4157-b3f6-ea7bf10a308b
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : false
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : []
status              : {last_error="Connection refused", sec_since_disconnect="8", state=CONNECTING}
target              : "tcp:10.30.171.110:6654"
type                : []
mininet&gt;</msg>
<msg time="2026-04-08T01:08:37.059546" level="INFO">${cntlstdout} = _uuid               : 419e3e41-ddbb-4be3-b539-f4d045a9bbd9
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
exter...</msg>
<var>${cntlstdout}</var>
<arg>${lprompt}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-08T01:08:37.038410" elapsed="0.021163"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:08:37.060038" level="INFO">_uuid               : 419e3e41-ddbb-4be3-b539-f4d045a9bbd9
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : false
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : []
status              : {last_error="Connection refused", sec_since_disconnect="8", state=CONNECTING}
target              : "tcp:10.30.170.48:6654"
type                : []

_uuid               : 740cc856-2b97-4888-820d-bf0f9d99a501
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : false
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : []
status              : {last_error="Connection refused", sec_since_disconnect="8", state=CONNECTING}
target              : "tcp:10.30.170.131:6654"
type                : []

_uuid               : bbb4531e-5733-4157-b3f6-ea7bf10a308b
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : false
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : []
status              : {last_error="Connection refused", sec_since_disconnect="8", state=CONNECTING}
target              : "tcp:10.30.171.110:6654"
type                : []
mininet&gt;</msg>
<arg>${cntlstdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:08:37.059780" elapsed="0.000322"/>
</kw>
<kw name="Parse" owner="VsctlListParser">
<msg time="2026-04-08T01:08:37.060754" level="INFO">_uuid:b1f3a25e-4d19-465f-912b-17fe7b1acbdb
auto_attach:[]
controller:[419e3e41-ddbb-4be3-b539-f4d045a9bbd9,740cc856-2b97-4888-820d-bf0f9d99a501,bbb4531e-5733-4157-b3f6-ea7bf10a308b]
datapath_id:"0000000000000001"
datapath_type:""
datapath_version:"&lt;unknown&gt;"
external_ids:{}
fail_mode:standalone
flood_vlans:[]
flow_tables:{}
ipfix:[]
mcast_snooping_enable:false
mirrors:[]
name:s1
netflow:[]
other_config:{datapath-id="0000000000000001",disable-in-band="true",dp-desc=s1}
ports:[079fa24c-466d-4b78-b64c-7669ebd0e515,9e99a58c-a78c-4b0a-b18c-2ef2b895c497]
protocols:[OpenFlow13]
rstp_enable:false
rstp_status:{}
sflow:[]
status:{}
stp_enable:false
_uuid:419e3e41-ddbb-4be3-b539-f4d045a9bbd9
connection_mode:[]
controller_burst_limit:[]
controller_queue_size:[]
controller_rate_limit:[]
enable_async_messages:[]
external_ids:{}
inactivity_probe:[]
is_connected:false
local_gateway:[]
local_ip:[]
local_netmask:[]
max_backoff:[]
other_config:{}
role:[]
status:{last_error="Connectionrefused",sec_since_disconnect="8",state=CONNECTING}
target:"tcp:10.30.170.48:6654"
type:[]
_uuid:740cc856-2b97-4888-820d-bf0f9d99a501
connection_mode:[]
controller_burst_limit:[]
controller_queue_size:[]
controller_rate_limit:[]
enable_async_messages:[]
external_ids:{}
inactivity_probe:[]
is_connected:false
local_gateway:[]
local_ip:[]
local_netmask:[]
max_backoff:[]
other_config:{}
role:[]
status:{last_error="Connectionrefused",sec_since_disconnect="8",state=CONNECTING}
target:"tcp:10.30.170.131:6654"
type:[]
_uuid:bbb4531e-5733-4157-b3f6-ea7bf10a308b
connection_mode:[]
controller_burst_limit:[]
controller_queue_size:[]
controller_rate_limit:[]
enable_async_messages:[]
external_ids:{}
inactivity_probe:[]
is_connected:false
local_gateway:[]
local_ip:[]
local_netmask:[]
max_backoff:[]
other_config:{}
role:[]
status:{last_error="Connectionrefused",sec_since_disconnect="8",state=CONNECTING}
target:"tcp:10.30.171.110:6654"
type:[]</msg>
<msg time="2026-04-08T01:08:37.060947" level="INFO">${data} = {'': {'_uuid': 'b1f3a25e-4d19-465f-912b-17fe7b1acbdb', 'auto_attach': '[]', 'controller': {'10.30.170.48': {'_uuid': '419e3e41-ddbb-4be3-b539-f4d045a9bbd9', 'connection_mode': '[]', 'controller_burst_...</msg>
<msg time="2026-04-08T01:08:37.061005" level="INFO">${bridegs} = {'b1f3a25e-4d19-465f-912b-17fe7b1acbdb': {'_uuid': 'b1f3a25e-4d19-465f-912b-17fe7b1acbdb', 'auto_attach': '[]', 'controller': '[419e3e41-ddbb-4be3-b539-f4d045a9bbd9,740cc856-2b97-4888-820d-bf0f9d99a50...</msg>
<msg time="2026-04-08T01:08:37.061069" level="INFO">${controllers} = {'419e3e41-ddbb-4be3-b539-f4d045a9bbd9': {'_uuid': '419e3e41-ddbb-4be3-b539-f4d045a9bbd9', 'connection_mode': '[]', 'controller_burst_limit': '[]', 'controller_queue_size': '[]', 'controller_rate_limi...</msg>
<var>${data}</var>
<var>${bridegs}</var>
<var>${controllers}</var>
<arg>${brstdout}</arg>
<arg>${cntlstdout}</arg>
<doc>Produces dictionary with data for future usege</doc>
<status status="PASS" start="2026-04-08T01:08:37.060287" elapsed="0.000806"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:08:37.061561" level="INFO">{'': {'_uuid': 'b1f3a25e-4d19-465f-912b-17fe7b1acbdb', 'auto_attach': '[]', 'controller': {'10.30.170.48': {'_uuid': '419e3e41-ddbb-4be3-b539-f4d045a9bbd9', 'connection_mode': '[]', 'controller_burst_limit': '[]', 'controller_queue_size': '[]', 'controller_rate_limit': '[]', 'enable_async_messages': '[]', 'external_ids': '{}', 'inactivity_probe': '[]', 'is_connected': False, 'local_gateway': '[]', 'local_ip': '[]', 'local_netmask': '[]', 'max_backoff': '[]', 'other_config': '{}', 'role': '[]', 'status': '{last_error="Connectionrefused",sec_since_disconnect="8",state=CONNECTING}', 'target': '"tcp:10.30.170.48:6654"', 'type': '[]'}, '10.30.170.131': {'_uuid': '740cc856-2b97-4888-820d-bf0f9d99a501', 'connection_mode': '[]', 'controller_burst_limit': '[]', 'controller_queue_size': '[]', 'controller_rate_limit': '[]', 'enable_async_messages': '[]', 'external_ids': '{}', 'inactivity_probe': '[]', 'is_connected': False, 'local_gateway': '[]', 'local_ip': '[]', 'local_netmask': '[]', 'max_backoff': '[]', 'other_config': '{}', 'role': '[]', 'status': '{last_error="Connectionrefused",sec_since_disconnect="8",state=CONNECTING}', 'target': '"tcp:10.30.170.131:6654"', 'type': '[]'}, '10.30.171.110': {'_uuid': 'bbb4531e-5733-4157-b3f6-ea7bf10a308b', 'connection_mode': '[]', 'controller_burst_limit': '[]', 'controller_queue_size': '[]', 'controller_rate_limit': '[]', 'enable_async_messages': '[]', 'external_ids': '{}', 'inactivity_probe': '[]', 'is_connected': False, 'local_gateway': '[]', 'local_ip': '[]', 'local_netmask': '[]', 'max_backoff': '[]', 'other_config': '{}', 'role': '[]', 'status': '{last_error="Connectionrefused",sec_since_disconnect="8",state=CONNECTING}', 'target': '"tcp:10.30.171.110:6654"', 'type': '[]'}}, 'datapath_id': '"0000000000000001"', 'datapath_type': '""', 'datapath_version': '"&lt;unknown&gt;"', 'external_ids': '{}', 'fail_mode': 'standalone', 'flood_vlans': '[]', 'flow_tables': '{}', 'ipfix': '[]', 'mcast_snooping_enable': 'false', 'mirrors': '[]', 'name': 's1', 'netflow': '[]', 'other_config': '{datapath-id="0000000000000001",disable-in-band="true",dp-desc=s1}', 'ports': '[079fa24c-466d-4b78-b64c-7669ebd0e515,9e99a58c-a78c-4b0a-b18c-2ef2b895c497]', 'protocols': '[OpenFlow13]', 'rstp_enable': 'false', 'rstp_status': '{}', 'sflow': '[]', 'status': '{}', 'stp_enable': 'false'}}</msg>
<arg>${data}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:08:37.061287" elapsed="0.000338"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-08T01:08:37.062259" level="INFO">${ovs_switch_data} = {'': {'_uuid': 'b1f3a25e-4d19-465f-912b-17fe7b1acbdb', 'auto_attach': '[]', 'controller': {'10.30.170.48': {'_uuid': '419e3e41-ddbb-4be3-b539-f4d045a9bbd9', 'connection_mode': '[]', 'controller_burst_...</msg>
<arg>${ovs_switch_data}</arg>
<arg>${data}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-08T01:08:37.061801" elapsed="0.000503"/>
</kw>
<return>
<value>${data}</value>
<status status="PASS" start="2026-04-08T01:08:37.062355" elapsed="0.000049"/>
</return>
<doc>Gets ovs data and parse them.</doc>
<status status="PASS" start="2026-04-08T01:08:36.985031" elapsed="0.077478"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:08:37.063294" level="INFO">${sid} = 1</msg>
<var>${sid}</var>
<arg>${i}+1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:08:37.062939" elapsed="0.000382"/>
</kw>
<kw name="Should Be Connected" owner="OvsManager">
<kw name="OvsManager__Is_Connected" owner="OvsManager">
<if>
<branch type="IF" condition="${update_data}==${True}">
<kw name="Get Ovsdb Data" owner="OvsManager">
<doc>Gets ovs data and parse them.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:37.065104" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:08:37.064560" elapsed="0.000604"/>
</branch>
<status status="PASS" start="2026-04-08T01:08:37.064539" elapsed="0.000665"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:08:37.065584" level="FAIL">Dictionary does not contain key 's1'.</msg>
<var>${bridge}</var>
<arg>${ovs_switch_data}</arg>
<arg>${switch}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="FAIL" start="2026-04-08T01:08:37.065363" elapsed="0.000328">Dictionary does not contain key 's1'.</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${cntls}</var>
<arg>${bridge}</arg>
<arg>controller</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:37.065869" elapsed="0.000022"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${cntl}</var>
<arg>${cntls}</arg>
<arg>${controller}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:37.066050" elapsed="0.000020"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${connected}</var>
<arg>${cntl}</arg>
<arg>is_connected</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:37.066358" elapsed="0.000023"/>
</kw>
<return>
<value>${connected}</value>
<status status="NOT RUN" start="2026-04-08T01:08:37.066428" elapsed="0.000016"/>
</return>
<kw name="Execute OvsVsctl Show Command" owner="OvsManager" type="TEARDOWN">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:08:37.068586" level="INFO">sh ovs-vsctl show</msg>
<arg>${lcmd_prefix} ovs-vsctl show</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:08:37.067008" elapsed="0.001634"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-08T01:08:37.082334" level="INFO">9a5df812-eb49-4477-a37e-2d464c02791d
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.48:6654"
        Controller "tcp:10.30.170.131:6654"
        Controller "tcp:10.30.171.110:6654"
        fail_mode: standalone
        Port s1
            Interface s1
                type: internal
        Port s1-eth1
            Interface s1-eth1
    ovs_version: "2.17.11"
mininet&gt;</msg>
<msg time="2026-04-08T01:08:37.082434" level="INFO">${output} = 9a5df812-eb49-4477-a37e-2d464c02791d
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.48:6654"
        Controller "tcp:10.30.170.131:6654"
        Controller "tcp:10.30.171...</msg>
<var>${output}</var>
<arg>${lprompt}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-08T01:08:37.068809" elapsed="0.013652"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:08:37.082924" level="INFO">9a5df812-eb49-4477-a37e-2d464c02791d
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.48:6654"
        Controller "tcp:10.30.170.131:6654"
        Controller "tcp:10.30.171.110:6654"
        fail_mode: standalone
        Port s1
            Interface s1
                type: internal
        Port s1-eth1
            Interface s1-eth1
    ovs_version: "2.17.11"
mininet&gt;</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:08:37.082665" elapsed="0.000349"/>
</kw>
<doc>Executes ovs-vsctl show command and returns stdout, no check nor change is performed</doc>
<status status="PASS" start="2026-04-08T01:08:37.066702" elapsed="0.016369"/>
</kw>
<var>${connected}</var>
<arg>${switch}</arg>
<arg>${controller}</arg>
<arg>update_data=${update_data}</arg>
<doc>Return is_connected boolean value</doc>
<status status="FAIL" start="2026-04-08T01:08:37.064175" elapsed="0.018973">Dictionary does not contain key 's1'.</status>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${connected}</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:37.083355" elapsed="0.000022"/>
</kw>
<arg>s${sid}</arg>
<arg>${ODL_SYSTEM_1_IP}</arg>
<arg>update_data=${False}</arg>
<doc>Check if the switch is connected</doc>
<status status="FAIL" start="2026-04-08T01:08:37.063580" elapsed="0.019881">Dictionary does not contain key 's1'.</status>
</kw>
<kw name="Should Be Connected" owner="OvsManager">
<arg>s${sid}</arg>
<arg>${ODL_SYSTEM_2_IP}</arg>
<arg>update_data=${False}</arg>
<doc>Check if the switch is connected</doc>
<status status="NOT RUN" start="2026-04-08T01:08:37.083683" elapsed="0.000024"/>
</kw>
<kw name="Should Be Connected" owner="OvsManager">
<arg>s${sid}</arg>
<arg>${ODL_SYSTEM_3_IP}</arg>
<arg>update_data=${False}</arg>
<doc>Check if the switch is connected</doc>
<status status="NOT RUN" start="2026-04-08T01:08:37.083910" elapsed="0.000022"/>
</kw>
<var name="${i}">0</var>
<status status="FAIL" start="2026-04-08T01:08:37.062787" elapsed="0.021199">Dictionary does not contain key 's1'.</status>
</iter>
<var>${i}</var>
<value>0</value>
<value>${SWITCHES}</value>
<status status="FAIL" start="2026-04-08T01:08:37.062567" elapsed="0.021495">Dictionary does not contain key 's1'.</status>
</for>
<doc>Verifies all switches are connected to all cluster nodes</doc>
<status status="FAIL" start="2026-04-08T01:08:36.983890" elapsed="0.100266">Dictionary does not contain key 's1'.</status>
</kw>
<kw name="Check All Switches Connected To All Cluster Nodes">
<kw name="Get Ovsdb Data" owner="OvsManager">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:08:38.089529" level="INFO">sh ovs-vsctl list Bridge</msg>
<arg>${lcmd_prefix} ${SH_BR_CMD}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:08:38.086903" elapsed="0.002785"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-08T01:08:38.145404" level="INFO">_uuid               : b1f3a25e-4d19-465f-912b-17fe7b1acbdb
auto_attach         : []
controller          : [419e3e41-ddbb-4be3-b539-f4d045a9bbd9, 740cc856-2b97-4888-820d-bf0f9d99a501, bbb4531e-5733-4157-b3f6-ea7bf10a308b]
datapath_id         : "0000000000000001"
datapath_type       : ""
datapath_version    : "&lt;unknown&gt;"
external_ids        : {}
fail_mode           : standalone
flood_vlans         : []
flow_tables         : {}
ipfix               : []
mcast_snooping_enable: false
mirrors             : []
name                : s1
netflow             : []
other_config        : {datapath-id="0000000000000001", disable-in-band="true", dp-desc=s1}
ports               : [079fa24c-466d-4b78-b64c-7669ebd0e515, 9e99a58c-a78c-4b0a-b18c-2ef2b895c497]
protocols           : [OpenFlow13]
rstp_enable         : false
rstp_status         : {}
sflow               : []
status              : {}
stp_enable          : false
mininet&gt;</msg>
<msg time="2026-04-08T01:08:38.145522" level="INFO">${brstdout} = _uuid               : b1f3a25e-4d19-465f-912b-17fe7b1acbdb
auto_attach         : []
controller          : [419e3e41-ddbb-4be3-b539-f4d045a9bbd9, 740cc856-2b97-4888-820d-bf0f9d99a501, bbb4531e-5733-4...</msg>
<var>${brstdout}</var>
<arg>${lprompt}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-08T01:08:38.090082" elapsed="0.055468"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:08:38.146136" level="INFO">_uuid               : b1f3a25e-4d19-465f-912b-17fe7b1acbdb
auto_attach         : []
controller          : [419e3e41-ddbb-4be3-b539-f4d045a9bbd9, 740cc856-2b97-4888-820d-bf0f9d99a501, bbb4531e-5733-4157-b3f6-ea7bf10a308b]
datapath_id         : "0000000000000001"
datapath_type       : ""
datapath_version    : "&lt;unknown&gt;"
external_ids        : {}
fail_mode           : standalone
flood_vlans         : []
flow_tables         : {}
ipfix               : []
mcast_snooping_enable: false
mirrors             : []
name                : s1
netflow             : []
other_config        : {datapath-id="0000000000000001", disable-in-band="true", dp-desc=s1}
ports               : [079fa24c-466d-4b78-b64c-7669ebd0e515, 9e99a58c-a78c-4b0a-b18c-2ef2b895c497]
protocols           : [OpenFlow13]
rstp_enable         : false
rstp_status         : {}
sflow               : []
status              : {}
stp_enable          : false
mininet&gt;</msg>
<arg>${brstdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:08:38.145817" elapsed="0.000400"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:08:38.147860" level="INFO">sh ovs-vsctl list Controller</msg>
<arg>${lcmd_prefix} ${SH_CNTL_CMD}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:08:38.146384" elapsed="0.001531"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-08T01:08:38.178477" level="INFO">_uuid               : 419e3e41-ddbb-4be3-b539-f4d045a9bbd9
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : false
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : []
status              : {last_error="Connection refused", sec_since_disconnect="8", state=CONNECTING}
target              : "tcp:10.30.170.48:6654"
type                : []

_uuid               : 740cc856-2b97-4888-820d-bf0f9d99a501
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : false
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : []
status              : {last_error="Connection refused", sec_since_disconnect="8", state=CONNECTING}
target              : "tcp:10.30.170.131:6654"
type                : []

_uuid               : bbb4531e-5733-4157-b3f6-ea7bf10a308b
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : false
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : []
status              : {last_error="Connection refused", sec_since_disconnect="8", state=CONNECTING}
target              : "tcp:10.30.171.110:6654"
type                : []
mininet&gt;</msg>
<msg time="2026-04-08T01:08:38.178605" level="INFO">${cntlstdout} = _uuid               : 419e3e41-ddbb-4be3-b539-f4d045a9bbd9
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
exter...</msg>
<var>${cntlstdout}</var>
<arg>${lprompt}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-08T01:08:38.148108" elapsed="0.030527"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:08:38.179260" level="INFO">_uuid               : 419e3e41-ddbb-4be3-b539-f4d045a9bbd9
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : false
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : []
status              : {last_error="Connection refused", sec_since_disconnect="8", state=CONNECTING}
target              : "tcp:10.30.170.48:6654"
type                : []

_uuid               : 740cc856-2b97-4888-820d-bf0f9d99a501
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : false
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : []
status              : {last_error="Connection refused", sec_since_disconnect="8", state=CONNECTING}
target              : "tcp:10.30.170.131:6654"
type                : []

_uuid               : bbb4531e-5733-4157-b3f6-ea7bf10a308b
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : false
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : []
status              : {last_error="Connection refused", sec_since_disconnect="8", state=CONNECTING}
target              : "tcp:10.30.171.110:6654"
type                : []
mininet&gt;</msg>
<arg>${cntlstdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:08:38.178953" elapsed="0.000372"/>
</kw>
<kw name="Parse" owner="VsctlListParser">
<msg time="2026-04-08T01:08:38.179960" level="INFO">_uuid:b1f3a25e-4d19-465f-912b-17fe7b1acbdb
auto_attach:[]
controller:[419e3e41-ddbb-4be3-b539-f4d045a9bbd9,740cc856-2b97-4888-820d-bf0f9d99a501,bbb4531e-5733-4157-b3f6-ea7bf10a308b]
datapath_id:"0000000000000001"
datapath_type:""
datapath_version:"&lt;unknown&gt;"
external_ids:{}
fail_mode:standalone
flood_vlans:[]
flow_tables:{}
ipfix:[]
mcast_snooping_enable:false
mirrors:[]
name:s1
netflow:[]
other_config:{datapath-id="0000000000000001",disable-in-band="true",dp-desc=s1}
ports:[079fa24c-466d-4b78-b64c-7669ebd0e515,9e99a58c-a78c-4b0a-b18c-2ef2b895c497]
protocols:[OpenFlow13]
rstp_enable:false
rstp_status:{}
sflow:[]
status:{}
stp_enable:false
_uuid:419e3e41-ddbb-4be3-b539-f4d045a9bbd9
connection_mode:[]
controller_burst_limit:[]
controller_queue_size:[]
controller_rate_limit:[]
enable_async_messages:[]
external_ids:{}
inactivity_probe:[]
is_connected:false
local_gateway:[]
local_ip:[]
local_netmask:[]
max_backoff:[]
other_config:{}
role:[]
status:{last_error="Connectionrefused",sec_since_disconnect="8",state=CONNECTING}
target:"tcp:10.30.170.48:6654"
type:[]
_uuid:740cc856-2b97-4888-820d-bf0f9d99a501
connection_mode:[]
controller_burst_limit:[]
controller_queue_size:[]
controller_rate_limit:[]
enable_async_messages:[]
external_ids:{}
inactivity_probe:[]
is_connected:false
local_gateway:[]
local_ip:[]
local_netmask:[]
max_backoff:[]
other_config:{}
role:[]
status:{last_error="Connectionrefused",sec_since_disconnect="8",state=CONNECTING}
target:"tcp:10.30.170.131:6654"
type:[]
_uuid:bbb4531e-5733-4157-b3f6-ea7bf10a308b
connection_mode:[]
controller_burst_limit:[]
controller_queue_size:[]
controller_rate_limit:[]
enable_async_messages:[]
external_ids:{}
inactivity_probe:[]
is_connected:false
local_gateway:[]
local_ip:[]
local_netmask:[]
max_backoff:[]
other_config:{}
role:[]
status:{last_error="Connectionrefused",sec_since_disconnect="8",state=CONNECTING}
target:"tcp:10.30.171.110:6654"
type:[]</msg>
<msg time="2026-04-08T01:08:38.180105" level="INFO">${data} = {'': {'_uuid': 'b1f3a25e-4d19-465f-912b-17fe7b1acbdb', 'auto_attach': '[]', 'controller': {'10.30.170.48': {'_uuid': '419e3e41-ddbb-4be3-b539-f4d045a9bbd9', 'connection_mode': '[]', 'controller_burst_...</msg>
<msg time="2026-04-08T01:08:38.180167" level="INFO">${bridegs} = {'b1f3a25e-4d19-465f-912b-17fe7b1acbdb': {'_uuid': 'b1f3a25e-4d19-465f-912b-17fe7b1acbdb', 'auto_attach': '[]', 'controller': '[419e3e41-ddbb-4be3-b539-f4d045a9bbd9,740cc856-2b97-4888-820d-bf0f9d99a50...</msg>
<msg time="2026-04-08T01:08:38.180250" level="INFO">${controllers} = {'419e3e41-ddbb-4be3-b539-f4d045a9bbd9': {'_uuid': '419e3e41-ddbb-4be3-b539-f4d045a9bbd9', 'connection_mode': '[]', 'controller_burst_limit': '[]', 'controller_queue_size': '[]', 'controller_rate_limi...</msg>
<var>${data}</var>
<var>${bridegs}</var>
<var>${controllers}</var>
<arg>${brstdout}</arg>
<arg>${cntlstdout}</arg>
<doc>Produces dictionary with data for future usege</doc>
<status status="PASS" start="2026-04-08T01:08:38.179497" elapsed="0.000780"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:08:38.180756" level="INFO">{'': {'_uuid': 'b1f3a25e-4d19-465f-912b-17fe7b1acbdb', 'auto_attach': '[]', 'controller': {'10.30.170.48': {'_uuid': '419e3e41-ddbb-4be3-b539-f4d045a9bbd9', 'connection_mode': '[]', 'controller_burst_limit': '[]', 'controller_queue_size': '[]', 'controller_rate_limit': '[]', 'enable_async_messages': '[]', 'external_ids': '{}', 'inactivity_probe': '[]', 'is_connected': False, 'local_gateway': '[]', 'local_ip': '[]', 'local_netmask': '[]', 'max_backoff': '[]', 'other_config': '{}', 'role': '[]', 'status': '{last_error="Connectionrefused",sec_since_disconnect="8",state=CONNECTING}', 'target': '"tcp:10.30.170.48:6654"', 'type': '[]'}, '10.30.170.131': {'_uuid': '740cc856-2b97-4888-820d-bf0f9d99a501', 'connection_mode': '[]', 'controller_burst_limit': '[]', 'controller_queue_size': '[]', 'controller_rate_limit': '[]', 'enable_async_messages': '[]', 'external_ids': '{}', 'inactivity_probe': '[]', 'is_connected': False, 'local_gateway': '[]', 'local_ip': '[]', 'local_netmask': '[]', 'max_backoff': '[]', 'other_config': '{}', 'role': '[]', 'status': '{last_error="Connectionrefused",sec_since_disconnect="8",state=CONNECTING}', 'target': '"tcp:10.30.170.131:6654"', 'type': '[]'}, '10.30.171.110': {'_uuid': 'bbb4531e-5733-4157-b3f6-ea7bf10a308b', 'connection_mode': '[]', 'controller_burst_limit': '[]', 'controller_queue_size': '[]', 'controller_rate_limit': '[]', 'enable_async_messages': '[]', 'external_ids': '{}', 'inactivity_probe': '[]', 'is_connected': False, 'local_gateway': '[]', 'local_ip': '[]', 'local_netmask': '[]', 'max_backoff': '[]', 'other_config': '{}', 'role': '[]', 'status': '{last_error="Connectionrefused",sec_since_disconnect="8",state=CONNECTING}', 'target': '"tcp:10.30.171.110:6654"', 'type': '[]'}}, 'datapath_id': '"0000000000000001"', 'datapath_type': '""', 'datapath_version': '"&lt;unknown&gt;"', 'external_ids': '{}', 'fail_mode': 'standalone', 'flood_vlans': '[]', 'flow_tables': '{}', 'ipfix': '[]', 'mcast_snooping_enable': 'false', 'mirrors': '[]', 'name': 's1', 'netflow': '[]', 'other_config': '{datapath-id="0000000000000001",disable-in-band="true",dp-desc=s1}', 'ports': '[079fa24c-466d-4b78-b64c-7669ebd0e515,9e99a58c-a78c-4b0a-b18c-2ef2b895c497]', 'protocols': '[OpenFlow13]', 'rstp_enable': 'false', 'rstp_status': '{}', 'sflow': '[]', 'status': '{}', 'stp_enable': 'false'}}</msg>
<arg>${data}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:08:38.180456" elapsed="0.000365"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-08T01:08:38.181488" level="INFO">${ovs_switch_data} = {'': {'_uuid': 'b1f3a25e-4d19-465f-912b-17fe7b1acbdb', 'auto_attach': '[]', 'controller': {'10.30.170.48': {'_uuid': '419e3e41-ddbb-4be3-b539-f4d045a9bbd9', 'connection_mode': '[]', 'controller_burst_...</msg>
<arg>${ovs_switch_data}</arg>
<arg>${data}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-08T01:08:38.181030" elapsed="0.000535"/>
</kw>
<return>
<value>${data}</value>
<status status="PASS" start="2026-04-08T01:08:38.181618" elapsed="0.000044"/>
</return>
<doc>Gets ovs data and parse them.</doc>
<status status="PASS" start="2026-04-08T01:08:38.086118" elapsed="0.095650"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:08:38.182557" level="INFO">${sid} = 1</msg>
<var>${sid}</var>
<arg>${i}+1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:08:38.182213" elapsed="0.000370"/>
</kw>
<kw name="Should Be Connected" owner="OvsManager">
<kw name="OvsManager__Is_Connected" owner="OvsManager">
<if>
<branch type="IF" condition="${update_data}==${True}">
<kw name="Get Ovsdb Data" owner="OvsManager">
<doc>Gets ovs data and parse them.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:38.184360" elapsed="0.000027"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:08:38.183798" elapsed="0.000621"/>
</branch>
<status status="PASS" start="2026-04-08T01:08:38.183777" elapsed="0.000667"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:08:38.184827" level="FAIL">Dictionary does not contain key 's1'.</msg>
<var>${bridge}</var>
<arg>${ovs_switch_data}</arg>
<arg>${switch}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="FAIL" start="2026-04-08T01:08:38.184602" elapsed="0.000328">Dictionary does not contain key 's1'.</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${cntls}</var>
<arg>${bridge}</arg>
<arg>controller</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:38.185146" elapsed="0.000022"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${cntl}</var>
<arg>${cntls}</arg>
<arg>${controller}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:38.185398" elapsed="0.000025"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${connected}</var>
<arg>${cntl}</arg>
<arg>is_connected</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:38.185593" elapsed="0.000025"/>
</kw>
<return>
<value>${connected}</value>
<status status="NOT RUN" start="2026-04-08T01:08:38.185671" elapsed="0.000016"/>
</return>
<kw name="Execute OvsVsctl Show Command" owner="OvsManager" type="TEARDOWN">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:08:38.187603" level="INFO">sh ovs-vsctl show</msg>
<arg>${lcmd_prefix} ovs-vsctl show</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:08:38.186280" elapsed="0.001379"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-08T01:08:38.198366" level="INFO">9a5df812-eb49-4477-a37e-2d464c02791d
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.48:6654"
        Controller "tcp:10.30.170.131:6654"
        Controller "tcp:10.30.171.110:6654"
        fail_mode: standalone
        Port s1
            Interface s1
                type: internal
        Port s1-eth1
            Interface s1-eth1
    ovs_version: "2.17.11"
mininet&gt;</msg>
<msg time="2026-04-08T01:08:38.198505" level="INFO">${output} = 9a5df812-eb49-4477-a37e-2d464c02791d
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.48:6654"
        Controller "tcp:10.30.170.131:6654"
        Controller "tcp:10.30.171...</msg>
<var>${output}</var>
<arg>${lprompt}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-08T01:08:38.187825" elapsed="0.010712"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:08:38.199031" level="INFO">9a5df812-eb49-4477-a37e-2d464c02791d
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.48:6654"
        Controller "tcp:10.30.170.131:6654"
        Controller "tcp:10.30.171.110:6654"
        fail_mode: standalone
        Port s1
            Interface s1
                type: internal
        Port s1-eth1
            Interface s1-eth1
    ovs_version: "2.17.11"
mininet&gt;</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:08:38.198757" elapsed="0.000325"/>
</kw>
<doc>Executes ovs-vsctl show command and returns stdout, no check nor change is performed</doc>
<status status="PASS" start="2026-04-08T01:08:38.185956" elapsed="0.013182"/>
</kw>
<var>${connected}</var>
<arg>${switch}</arg>
<arg>${controller}</arg>
<arg>update_data=${update_data}</arg>
<doc>Return is_connected boolean value</doc>
<status status="FAIL" start="2026-04-08T01:08:38.183425" elapsed="0.015815">Dictionary does not contain key 's1'.</status>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${connected}</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:38.199426" elapsed="0.000022"/>
</kw>
<arg>s${sid}</arg>
<arg>${ODL_SYSTEM_1_IP}</arg>
<arg>update_data=${False}</arg>
<doc>Check if the switch is connected</doc>
<status status="FAIL" start="2026-04-08T01:08:38.182809" elapsed="0.016724">Dictionary does not contain key 's1'.</status>
</kw>
<kw name="Should Be Connected" owner="OvsManager">
<arg>s${sid}</arg>
<arg>${ODL_SYSTEM_2_IP}</arg>
<arg>update_data=${False}</arg>
<doc>Check if the switch is connected</doc>
<status status="NOT RUN" start="2026-04-08T01:08:38.199759" elapsed="0.000023"/>
</kw>
<kw name="Should Be Connected" owner="OvsManager">
<arg>s${sid}</arg>
<arg>${ODL_SYSTEM_3_IP}</arg>
<arg>update_data=${False}</arg>
<doc>Check if the switch is connected</doc>
<status status="NOT RUN" start="2026-04-08T01:08:38.199985" elapsed="0.000022"/>
</kw>
<var name="${i}">0</var>
<status status="FAIL" start="2026-04-08T01:08:38.182043" elapsed="0.018018">Dictionary does not contain key 's1'.</status>
</iter>
<var>${i}</var>
<value>0</value>
<value>${SWITCHES}</value>
<status status="FAIL" start="2026-04-08T01:08:38.181823" elapsed="0.018294">Dictionary does not contain key 's1'.</status>
</for>
<doc>Verifies all switches are connected to all cluster nodes</doc>
<status status="FAIL" start="2026-04-08T01:08:38.084939" elapsed="0.115289">Dictionary does not contain key 's1'.</status>
</kw>
<kw name="Check All Switches Connected To All Cluster Nodes">
<kw name="Get Ovsdb Data" owner="OvsManager">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:08:39.205805" level="INFO">sh ovs-vsctl list Bridge</msg>
<arg>${lcmd_prefix} ${SH_BR_CMD}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:08:39.202995" elapsed="0.002974"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-08T01:08:39.250684" level="INFO">_uuid               : b1f3a25e-4d19-465f-912b-17fe7b1acbdb
auto_attach         : []
controller          : [419e3e41-ddbb-4be3-b539-f4d045a9bbd9, 740cc856-2b97-4888-820d-bf0f9d99a501, bbb4531e-5733-4157-b3f6-ea7bf10a308b]
datapath_id         : "0000000000000001"
datapath_type       : ""
datapath_version    : "&lt;unknown&gt;"
external_ids        : {}
fail_mode           : standalone
flood_vlans         : []
flow_tables         : {}
ipfix               : []
mcast_snooping_enable: false
mirrors             : []
name                : s1
netflow             : []
other_config        : {datapath-id="0000000000000001", disable-in-band="true", dp-desc=s1}
ports               : [079fa24c-466d-4b78-b64c-7669ebd0e515, 9e99a58c-a78c-4b0a-b18c-2ef2b895c497]
protocols           : [OpenFlow13]
rstp_enable         : false
rstp_status         : {}
sflow               : []
status              : {}
stp_enable          : false
mininet&gt;</msg>
<msg time="2026-04-08T01:08:39.250920" level="INFO">${brstdout} = _uuid               : b1f3a25e-4d19-465f-912b-17fe7b1acbdb
auto_attach         : []
controller          : [419e3e41-ddbb-4be3-b539-f4d045a9bbd9, 740cc856-2b97-4888-820d-bf0f9d99a501, bbb4531e-5733-4...</msg>
<var>${brstdout}</var>
<arg>${lprompt}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-08T01:08:39.206425" elapsed="0.044523"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:08:39.251567" level="INFO">_uuid               : b1f3a25e-4d19-465f-912b-17fe7b1acbdb
auto_attach         : []
controller          : [419e3e41-ddbb-4be3-b539-f4d045a9bbd9, 740cc856-2b97-4888-820d-bf0f9d99a501, bbb4531e-5733-4157-b3f6-ea7bf10a308b]
datapath_id         : "0000000000000001"
datapath_type       : ""
datapath_version    : "&lt;unknown&gt;"
external_ids        : {}
fail_mode           : standalone
flood_vlans         : []
flow_tables         : {}
ipfix               : []
mcast_snooping_enable: false
mirrors             : []
name                : s1
netflow             : []
other_config        : {datapath-id="0000000000000001", disable-in-band="true", dp-desc=s1}
ports               : [079fa24c-466d-4b78-b64c-7669ebd0e515, 9e99a58c-a78c-4b0a-b18c-2ef2b895c497]
protocols           : [OpenFlow13]
rstp_enable         : false
rstp_status         : {}
sflow               : []
status              : {}
stp_enable          : false
mininet&gt;</msg>
<arg>${brstdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:08:39.251252" elapsed="0.000374"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:08:39.253474" level="INFO">sh ovs-vsctl list Controller</msg>
<arg>${lcmd_prefix} ${SH_CNTL_CMD}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:08:39.251795" elapsed="0.001735"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-08T01:08:39.275743" level="INFO">_uuid               : 419e3e41-ddbb-4be3-b539-f4d045a9bbd9
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : false
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : []
status              : {last_error="Connection refused", sec_since_disconnect="5", state=BACKOFF}
target              : "tcp:10.30.170.48:6654"
type                : []

_uuid               : 740cc856-2b97-4888-820d-bf0f9d99a501
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : false
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : []
status              : {last_error="Connection refused", sec_since_disconnect="5", state=BACKOFF}
target              : "tcp:10.30.170.131:6654"
type                : []

_uuid               : bbb4531e-5733-4157-b3f6-ea7bf10a308b
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : false
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : []
status              : {last_error="Connection refused", sec_since_disconnect="5", state=BACKOFF}
target              : "tcp:10.30.171.110:6654"
type                : []
mininet&gt;</msg>
<msg time="2026-04-08T01:08:39.275851" level="INFO">${cntlstdout} = _uuid               : 419e3e41-ddbb-4be3-b539-f4d045a9bbd9
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
exter...</msg>
<var>${cntlstdout}</var>
<arg>${lprompt}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-08T01:08:39.253698" elapsed="0.022180"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:08:39.276350" level="INFO">_uuid               : 419e3e41-ddbb-4be3-b539-f4d045a9bbd9
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : false
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : []
status              : {last_error="Connection refused", sec_since_disconnect="5", state=BACKOFF}
target              : "tcp:10.30.170.48:6654"
type                : []

_uuid               : 740cc856-2b97-4888-820d-bf0f9d99a501
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : false
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : []
status              : {last_error="Connection refused", sec_since_disconnect="5", state=BACKOFF}
target              : "tcp:10.30.170.131:6654"
type                : []

_uuid               : bbb4531e-5733-4157-b3f6-ea7bf10a308b
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : false
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : []
status              : {last_error="Connection refused", sec_since_disconnect="5", state=BACKOFF}
target              : "tcp:10.30.171.110:6654"
type                : []
mininet&gt;</msg>
<arg>${cntlstdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:08:39.276080" elapsed="0.000333"/>
</kw>
<kw name="Parse" owner="VsctlListParser">
<msg time="2026-04-08T01:08:39.277029" level="INFO">_uuid:b1f3a25e-4d19-465f-912b-17fe7b1acbdb
auto_attach:[]
controller:[419e3e41-ddbb-4be3-b539-f4d045a9bbd9,740cc856-2b97-4888-820d-bf0f9d99a501,bbb4531e-5733-4157-b3f6-ea7bf10a308b]
datapath_id:"0000000000000001"
datapath_type:""
datapath_version:"&lt;unknown&gt;"
external_ids:{}
fail_mode:standalone
flood_vlans:[]
flow_tables:{}
ipfix:[]
mcast_snooping_enable:false
mirrors:[]
name:s1
netflow:[]
other_config:{datapath-id="0000000000000001",disable-in-band="true",dp-desc=s1}
ports:[079fa24c-466d-4b78-b64c-7669ebd0e515,9e99a58c-a78c-4b0a-b18c-2ef2b895c497]
protocols:[OpenFlow13]
rstp_enable:false
rstp_status:{}
sflow:[]
status:{}
stp_enable:false
_uuid:419e3e41-ddbb-4be3-b539-f4d045a9bbd9
connection_mode:[]
controller_burst_limit:[]
controller_queue_size:[]
controller_rate_limit:[]
enable_async_messages:[]
external_ids:{}
inactivity_probe:[]
is_connected:false
local_gateway:[]
local_ip:[]
local_netmask:[]
max_backoff:[]
other_config:{}
role:[]
status:{last_error="Connectionrefused",sec_since_disconnect="5",state=BACKOFF}
target:"tcp:10.30.170.48:6654"
type:[]
_uuid:740cc856-2b97-4888-820d-bf0f9d99a501
connection_mode:[]
controller_burst_limit:[]
controller_queue_size:[]
controller_rate_limit:[]
enable_async_messages:[]
external_ids:{}
inactivity_probe:[]
is_connected:false
local_gateway:[]
local_ip:[]
local_netmask:[]
max_backoff:[]
other_config:{}
role:[]
status:{last_error="Connectionrefused",sec_since_disconnect="5",state=BACKOFF}
target:"tcp:10.30.170.131:6654"
type:[]
_uuid:bbb4531e-5733-4157-b3f6-ea7bf10a308b
connection_mode:[]
controller_burst_limit:[]
controller_queue_size:[]
controller_rate_limit:[]
enable_async_messages:[]
external_ids:{}
inactivity_probe:[]
is_connected:false
local_gateway:[]
local_ip:[]
local_netmask:[]
max_backoff:[]
other_config:{}
role:[]
status:{last_error="Connectionrefused",sec_since_disconnect="5",state=BACKOFF}
target:"tcp:10.30.171.110:6654"
type:[]</msg>
<msg time="2026-04-08T01:08:39.277219" level="INFO">${data} = {'': {'_uuid': 'b1f3a25e-4d19-465f-912b-17fe7b1acbdb', 'auto_attach': '[]', 'controller': {'10.30.170.48': {'_uuid': '419e3e41-ddbb-4be3-b539-f4d045a9bbd9', 'connection_mode': '[]', 'controller_burst_...</msg>
<msg time="2026-04-08T01:08:39.277279" level="INFO">${bridegs} = {'b1f3a25e-4d19-465f-912b-17fe7b1acbdb': {'_uuid': 'b1f3a25e-4d19-465f-912b-17fe7b1acbdb', 'auto_attach': '[]', 'controller': '[419e3e41-ddbb-4be3-b539-f4d045a9bbd9,740cc856-2b97-4888-820d-bf0f9d99a50...</msg>
<msg time="2026-04-08T01:08:39.277343" level="INFO">${controllers} = {'419e3e41-ddbb-4be3-b539-f4d045a9bbd9': {'_uuid': '419e3e41-ddbb-4be3-b539-f4d045a9bbd9', 'connection_mode': '[]', 'controller_burst_limit': '[]', 'controller_queue_size': '[]', 'controller_rate_limi...</msg>
<var>${data}</var>
<var>${bridegs}</var>
<var>${controllers}</var>
<arg>${brstdout}</arg>
<arg>${cntlstdout}</arg>
<doc>Produces dictionary with data for future usege</doc>
<status status="PASS" start="2026-04-08T01:08:39.276581" elapsed="0.000786"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:08:39.277826" level="INFO">{'': {'_uuid': 'b1f3a25e-4d19-465f-912b-17fe7b1acbdb', 'auto_attach': '[]', 'controller': {'10.30.170.48': {'_uuid': '419e3e41-ddbb-4be3-b539-f4d045a9bbd9', 'connection_mode': '[]', 'controller_burst_limit': '[]', 'controller_queue_size': '[]', 'controller_rate_limit': '[]', 'enable_async_messages': '[]', 'external_ids': '{}', 'inactivity_probe': '[]', 'is_connected': False, 'local_gateway': '[]', 'local_ip': '[]', 'local_netmask': '[]', 'max_backoff': '[]', 'other_config': '{}', 'role': '[]', 'status': '{last_error="Connectionrefused",sec_since_disconnect="5",state=BACKOFF}', 'target': '"tcp:10.30.170.48:6654"', 'type': '[]'}, '10.30.170.131': {'_uuid': '740cc856-2b97-4888-820d-bf0f9d99a501', 'connection_mode': '[]', 'controller_burst_limit': '[]', 'controller_queue_size': '[]', 'controller_rate_limit': '[]', 'enable_async_messages': '[]', 'external_ids': '{}', 'inactivity_probe': '[]', 'is_connected': False, 'local_gateway': '[]', 'local_ip': '[]', 'local_netmask': '[]', 'max_backoff': '[]', 'other_config': '{}', 'role': '[]', 'status': '{last_error="Connectionrefused",sec_since_disconnect="5",state=BACKOFF}', 'target': '"tcp:10.30.170.131:6654"', 'type': '[]'}, '10.30.171.110': {'_uuid': 'bbb4531e-5733-4157-b3f6-ea7bf10a308b', 'connection_mode': '[]', 'controller_burst_limit': '[]', 'controller_queue_size': '[]', 'controller_rate_limit': '[]', 'enable_async_messages': '[]', 'external_ids': '{}', 'inactivity_probe': '[]', 'is_connected': False, 'local_gateway': '[]', 'local_ip': '[]', 'local_netmask': '[]', 'max_backoff': '[]', 'other_config': '{}', 'role': '[]', 'status': '{last_error="Connectionrefused",sec_since_disconnect="5",state=BACKOFF}', 'target': '"tcp:10.30.171.110:6654"', 'type': '[]'}}, 'datapath_id': '"0000000000000001"', 'datapath_type': '""', 'datapath_version': '"&lt;unknown&gt;"', 'external_ids': '{}', 'fail_mode': 'standalone', 'flood_vlans': '[]', 'flow_tables': '{}', 'ipfix': '[]', 'mcast_snooping_enable': 'false', 'mirrors': '[]', 'name': 's1', 'netflow': '[]', 'other_config': '{datapath-id="0000000000000001",disable-in-band="true",dp-desc=s1}', 'ports': '[079fa24c-466d-4b78-b64c-7669ebd0e515,9e99a58c-a78c-4b0a-b18c-2ef2b895c497]', 'protocols': '[OpenFlow13]', 'rstp_enable': 'false', 'rstp_status': '{}', 'sflow': '[]', 'status': '{}', 'stp_enable': 'false'}}</msg>
<arg>${data}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:08:39.277551" elapsed="0.000339"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-08T01:08:39.278526" level="INFO">${ovs_switch_data} = {'': {'_uuid': 'b1f3a25e-4d19-465f-912b-17fe7b1acbdb', 'auto_attach': '[]', 'controller': {'10.30.170.48': {'_uuid': '419e3e41-ddbb-4be3-b539-f4d045a9bbd9', 'connection_mode': '[]', 'controller_burst_...</msg>
<arg>${ovs_switch_data}</arg>
<arg>${data}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-08T01:08:39.278066" elapsed="0.000504"/>
</kw>
<return>
<value>${data}</value>
<status status="PASS" start="2026-04-08T01:08:39.278621" elapsed="0.000045"/>
</return>
<doc>Gets ovs data and parse them.</doc>
<status status="PASS" start="2026-04-08T01:08:39.202302" elapsed="0.076468"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:08:39.279557" level="INFO">${sid} = 1</msg>
<var>${sid}</var>
<arg>${i}+1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:08:39.279222" elapsed="0.000361"/>
</kw>
<kw name="Should Be Connected" owner="OvsManager">
<kw name="OvsManager__Is_Connected" owner="OvsManager">
<if>
<branch type="IF" condition="${update_data}==${True}">
<kw name="Get Ovsdb Data" owner="OvsManager">
<doc>Gets ovs data and parse them.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:39.281353" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:08:39.280802" elapsed="0.000608"/>
</branch>
<status status="PASS" start="2026-04-08T01:08:39.280780" elapsed="0.000655"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:08:39.281841" level="FAIL">Dictionary does not contain key 's1'.</msg>
<var>${bridge}</var>
<arg>${ovs_switch_data}</arg>
<arg>${switch}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="FAIL" start="2026-04-08T01:08:39.281592" elapsed="0.000353">Dictionary does not contain key 's1'.</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${cntls}</var>
<arg>${bridge}</arg>
<arg>controller</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:39.282126" elapsed="0.000022"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${cntl}</var>
<arg>${cntls}</arg>
<arg>${controller}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:39.282326" elapsed="0.000021"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${connected}</var>
<arg>${cntl}</arg>
<arg>is_connected</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:39.282506" elapsed="0.000020"/>
</kw>
<return>
<value>${connected}</value>
<status status="NOT RUN" start="2026-04-08T01:08:39.282571" elapsed="0.000015"/>
</return>
<kw name="Execute OvsVsctl Show Command" owner="OvsManager" type="TEARDOWN">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:08:39.284615" level="INFO">sh ovs-vsctl show</msg>
<arg>${lcmd_prefix} ovs-vsctl show</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:08:39.283151" elapsed="0.001519"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-08T01:08:39.294447" level="INFO">9a5df812-eb49-4477-a37e-2d464c02791d
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.48:6654"
        Controller "tcp:10.30.170.131:6654"
        Controller "tcp:10.30.171.110:6654"
        fail_mode: standalone
        Port s1
            Interface s1
                type: internal
        Port s1-eth1
            Interface s1-eth1
    ovs_version: "2.17.11"
mininet&gt;</msg>
<msg time="2026-04-08T01:08:39.294543" level="INFO">${output} = 9a5df812-eb49-4477-a37e-2d464c02791d
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.48:6654"
        Controller "tcp:10.30.170.131:6654"
        Controller "tcp:10.30.171...</msg>
<var>${output}</var>
<arg>${lprompt}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-08T01:08:39.284836" elapsed="0.009734"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:08:39.295039" level="INFO">9a5df812-eb49-4477-a37e-2d464c02791d
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.48:6654"
        Controller "tcp:10.30.170.131:6654"
        Controller "tcp:10.30.171.110:6654"
        fail_mode: standalone
        Port s1
            Interface s1
                type: internal
        Port s1-eth1
            Interface s1-eth1
    ovs_version: "2.17.11"
mininet&gt;</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:08:39.294781" elapsed="0.000376"/>
</kw>
<doc>Executes ovs-vsctl show command and returns stdout, no check nor change is performed</doc>
<status status="PASS" start="2026-04-08T01:08:39.282843" elapsed="0.012391"/>
</kw>
<var>${connected}</var>
<arg>${switch}</arg>
<arg>${controller}</arg>
<arg>update_data=${update_data}</arg>
<doc>Return is_connected boolean value</doc>
<status status="FAIL" start="2026-04-08T01:08:39.280433" elapsed="0.014876">Dictionary does not contain key 's1'.</status>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${connected}</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:39.295488" elapsed="0.000022"/>
</kw>
<arg>s${sid}</arg>
<arg>${ODL_SYSTEM_1_IP}</arg>
<arg>update_data=${False}</arg>
<doc>Check if the switch is connected</doc>
<status status="FAIL" start="2026-04-08T01:08:39.279813" elapsed="0.015781">Dictionary does not contain key 's1'.</status>
</kw>
<kw name="Should Be Connected" owner="OvsManager">
<arg>s${sid}</arg>
<arg>${ODL_SYSTEM_2_IP}</arg>
<arg>update_data=${False}</arg>
<doc>Check if the switch is connected</doc>
<status status="NOT RUN" start="2026-04-08T01:08:39.295814" elapsed="0.000024"/>
</kw>
<kw name="Should Be Connected" owner="OvsManager">
<arg>s${sid}</arg>
<arg>${ODL_SYSTEM_3_IP}</arg>
<arg>update_data=${False}</arg>
<doc>Check if the switch is connected</doc>
<status status="NOT RUN" start="2026-04-08T01:08:39.296040" elapsed="0.000022"/>
</kw>
<var name="${i}">0</var>
<status status="FAIL" start="2026-04-08T01:08:39.279053" elapsed="0.017063">Dictionary does not contain key 's1'.</status>
</iter>
<var>${i}</var>
<value>0</value>
<value>${SWITCHES}</value>
<status status="FAIL" start="2026-04-08T01:08:39.278828" elapsed="0.017348">Dictionary does not contain key 's1'.</status>
</for>
<doc>Verifies all switches are connected to all cluster nodes</doc>
<status status="FAIL" start="2026-04-08T01:08:39.201169" elapsed="0.095156">Dictionary does not contain key 's1'.</status>
</kw>
<kw name="Check All Switches Connected To All Cluster Nodes">
<kw name="Get Ovsdb Data" owner="OvsManager">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:08:40.301439" level="INFO">sh ovs-vsctl list Bridge</msg>
<arg>${lcmd_prefix} ${SH_BR_CMD}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:08:40.298887" elapsed="0.002646"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-08T01:08:40.350420" level="INFO">_uuid               : b1f3a25e-4d19-465f-912b-17fe7b1acbdb
auto_attach         : []
controller          : [419e3e41-ddbb-4be3-b539-f4d045a9bbd9, 740cc856-2b97-4888-820d-bf0f9d99a501, bbb4531e-5733-4157-b3f6-ea7bf10a308b]
datapath_id         : "0000000000000001"
datapath_type       : ""
datapath_version    : "&lt;unknown&gt;"
external_ids        : {}
fail_mode           : standalone
flood_vlans         : []
flow_tables         : {}
ipfix               : []
mcast_snooping_enable: false
mirrors             : []
name                : s1
netflow             : []
other_config        : {datapath-id="0000000000000001", disable-in-band="true", dp-desc=s1}
ports               : [079fa24c-466d-4b78-b64c-7669ebd0e515, 9e99a58c-a78c-4b0a-b18c-2ef2b895c497]
protocols           : [OpenFlow13]
rstp_enable         : false
rstp_status         : {}
sflow               : []
status              : {}
stp_enable          : false
mininet&gt;</msg>
<msg time="2026-04-08T01:08:40.350532" level="INFO">${brstdout} = _uuid               : b1f3a25e-4d19-465f-912b-17fe7b1acbdb
auto_attach         : []
controller          : [419e3e41-ddbb-4be3-b539-f4d045a9bbd9, 740cc856-2b97-4888-820d-bf0f9d99a501, bbb4531e-5733-4...</msg>
<var>${brstdout}</var>
<arg>${lprompt}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-08T01:08:40.301782" elapsed="0.048777"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:08:40.351135" level="INFO">_uuid               : b1f3a25e-4d19-465f-912b-17fe7b1acbdb
auto_attach         : []
controller          : [419e3e41-ddbb-4be3-b539-f4d045a9bbd9, 740cc856-2b97-4888-820d-bf0f9d99a501, bbb4531e-5733-4157-b3f6-ea7bf10a308b]
datapath_id         : "0000000000000001"
datapath_type       : ""
datapath_version    : "&lt;unknown&gt;"
external_ids        : {}
fail_mode           : standalone
flood_vlans         : []
flow_tables         : {}
ipfix               : []
mcast_snooping_enable: false
mirrors             : []
name                : s1
netflow             : []
other_config        : {datapath-id="0000000000000001", disable-in-band="true", dp-desc=s1}
ports               : [079fa24c-466d-4b78-b64c-7669ebd0e515, 9e99a58c-a78c-4b0a-b18c-2ef2b895c497]
protocols           : [OpenFlow13]
rstp_enable         : false
rstp_status         : {}
sflow               : []
status              : {}
stp_enable          : false
mininet&gt;</msg>
<arg>${brstdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:08:40.350822" elapsed="0.000395"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:08:40.353097" level="INFO">sh ovs-vsctl list Controller</msg>
<arg>${lcmd_prefix} ${SH_CNTL_CMD}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:08:40.351385" elapsed="0.001770"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-08T01:08:40.386081" level="INFO">_uuid               : 419e3e41-ddbb-4be3-b539-f4d045a9bbd9
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : false
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : []
status              : {last_error="Connection refused", sec_since_disconnect="5", state=BACKOFF}
target              : "tcp:10.30.170.48:6654"
type                : []

_uuid               : 740cc856-2b97-4888-820d-bf0f9d99a501
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : false
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : []
status              : {last_error="Connection refused", sec_since_disconnect="5", state=BACKOFF}
target              : "tcp:10.30.170.131:6654"
type                : []

_uuid               : bbb4531e-5733-4157-b3f6-ea7bf10a308b
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : false
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : []
status              : {last_error="Connection refused", sec_since_disconnect="5", state=BACKOFF}
target              : "tcp:10.30.171.110:6654"
type                : []
mininet&gt;</msg>
<msg time="2026-04-08T01:08:40.386213" level="INFO">${cntlstdout} = _uuid               : 419e3e41-ddbb-4be3-b539-f4d045a9bbd9
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
exter...</msg>
<var>${cntlstdout}</var>
<arg>${lprompt}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-08T01:08:40.353345" elapsed="0.032896"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:08:40.386797" level="INFO">_uuid               : 419e3e41-ddbb-4be3-b539-f4d045a9bbd9
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : false
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : []
status              : {last_error="Connection refused", sec_since_disconnect="5", state=BACKOFF}
target              : "tcp:10.30.170.48:6654"
type                : []

_uuid               : 740cc856-2b97-4888-820d-bf0f9d99a501
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : false
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : []
status              : {last_error="Connection refused", sec_since_disconnect="5", state=BACKOFF}
target              : "tcp:10.30.170.131:6654"
type                : []

_uuid               : bbb4531e-5733-4157-b3f6-ea7bf10a308b
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : false
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : []
status              : {last_error="Connection refused", sec_since_disconnect="5", state=BACKOFF}
target              : "tcp:10.30.171.110:6654"
type                : []
mininet&gt;</msg>
<arg>${cntlstdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:08:40.386512" elapsed="0.000349"/>
</kw>
<kw name="Parse" owner="VsctlListParser">
<msg time="2026-04-08T01:08:40.387520" level="INFO">_uuid:b1f3a25e-4d19-465f-912b-17fe7b1acbdb
auto_attach:[]
controller:[419e3e41-ddbb-4be3-b539-f4d045a9bbd9,740cc856-2b97-4888-820d-bf0f9d99a501,bbb4531e-5733-4157-b3f6-ea7bf10a308b]
datapath_id:"0000000000000001"
datapath_type:""
datapath_version:"&lt;unknown&gt;"
external_ids:{}
fail_mode:standalone
flood_vlans:[]
flow_tables:{}
ipfix:[]
mcast_snooping_enable:false
mirrors:[]
name:s1
netflow:[]
other_config:{datapath-id="0000000000000001",disable-in-band="true",dp-desc=s1}
ports:[079fa24c-466d-4b78-b64c-7669ebd0e515,9e99a58c-a78c-4b0a-b18c-2ef2b895c497]
protocols:[OpenFlow13]
rstp_enable:false
rstp_status:{}
sflow:[]
status:{}
stp_enable:false
_uuid:419e3e41-ddbb-4be3-b539-f4d045a9bbd9
connection_mode:[]
controller_burst_limit:[]
controller_queue_size:[]
controller_rate_limit:[]
enable_async_messages:[]
external_ids:{}
inactivity_probe:[]
is_connected:false
local_gateway:[]
local_ip:[]
local_netmask:[]
max_backoff:[]
other_config:{}
role:[]
status:{last_error="Connectionrefused",sec_since_disconnect="5",state=BACKOFF}
target:"tcp:10.30.170.48:6654"
type:[]
_uuid:740cc856-2b97-4888-820d-bf0f9d99a501
connection_mode:[]
controller_burst_limit:[]
controller_queue_size:[]
controller_rate_limit:[]
enable_async_messages:[]
external_ids:{}
inactivity_probe:[]
is_connected:false
local_gateway:[]
local_ip:[]
local_netmask:[]
max_backoff:[]
other_config:{}
role:[]
status:{last_error="Connectionrefused",sec_since_disconnect="5",state=BACKOFF}
target:"tcp:10.30.170.131:6654"
type:[]
_uuid:bbb4531e-5733-4157-b3f6-ea7bf10a308b
connection_mode:[]
controller_burst_limit:[]
controller_queue_size:[]
controller_rate_limit:[]
enable_async_messages:[]
external_ids:{}
inactivity_probe:[]
is_connected:false
local_gateway:[]
local_ip:[]
local_netmask:[]
max_backoff:[]
other_config:{}
role:[]
status:{last_error="Connectionrefused",sec_since_disconnect="5",state=BACKOFF}
target:"tcp:10.30.171.110:6654"
type:[]</msg>
<msg time="2026-04-08T01:08:40.387664" level="INFO">${data} = {'': {'_uuid': 'b1f3a25e-4d19-465f-912b-17fe7b1acbdb', 'auto_attach': '[]', 'controller': {'10.30.170.48': {'_uuid': '419e3e41-ddbb-4be3-b539-f4d045a9bbd9', 'connection_mode': '[]', 'controller_burst_...</msg>
<msg time="2026-04-08T01:08:40.387721" level="INFO">${bridegs} = {'b1f3a25e-4d19-465f-912b-17fe7b1acbdb': {'_uuid': 'b1f3a25e-4d19-465f-912b-17fe7b1acbdb', 'auto_attach': '[]', 'controller': '[419e3e41-ddbb-4be3-b539-f4d045a9bbd9,740cc856-2b97-4888-820d-bf0f9d99a50...</msg>
<msg time="2026-04-08T01:08:40.387786" level="INFO">${controllers} = {'419e3e41-ddbb-4be3-b539-f4d045a9bbd9': {'_uuid': '419e3e41-ddbb-4be3-b539-f4d045a9bbd9', 'connection_mode': '[]', 'controller_burst_limit': '[]', 'controller_queue_size': '[]', 'controller_rate_limi...</msg>
<var>${data}</var>
<var>${bridegs}</var>
<var>${controllers}</var>
<arg>${brstdout}</arg>
<arg>${cntlstdout}</arg>
<doc>Produces dictionary with data for future usege</doc>
<status status="PASS" start="2026-04-08T01:08:40.387027" elapsed="0.000783"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:08:40.388276" level="INFO">{'': {'_uuid': 'b1f3a25e-4d19-465f-912b-17fe7b1acbdb', 'auto_attach': '[]', 'controller': {'10.30.170.48': {'_uuid': '419e3e41-ddbb-4be3-b539-f4d045a9bbd9', 'connection_mode': '[]', 'controller_burst_limit': '[]', 'controller_queue_size': '[]', 'controller_rate_limit': '[]', 'enable_async_messages': '[]', 'external_ids': '{}', 'inactivity_probe': '[]', 'is_connected': False, 'local_gateway': '[]', 'local_ip': '[]', 'local_netmask': '[]', 'max_backoff': '[]', 'other_config': '{}', 'role': '[]', 'status': '{last_error="Connectionrefused",sec_since_disconnect="5",state=BACKOFF}', 'target': '"tcp:10.30.170.48:6654"', 'type': '[]'}, '10.30.170.131': {'_uuid': '740cc856-2b97-4888-820d-bf0f9d99a501', 'connection_mode': '[]', 'controller_burst_limit': '[]', 'controller_queue_size': '[]', 'controller_rate_limit': '[]', 'enable_async_messages': '[]', 'external_ids': '{}', 'inactivity_probe': '[]', 'is_connected': False, 'local_gateway': '[]', 'local_ip': '[]', 'local_netmask': '[]', 'max_backoff': '[]', 'other_config': '{}', 'role': '[]', 'status': '{last_error="Connectionrefused",sec_since_disconnect="5",state=BACKOFF}', 'target': '"tcp:10.30.170.131:6654"', 'type': '[]'}, '10.30.171.110': {'_uuid': 'bbb4531e-5733-4157-b3f6-ea7bf10a308b', 'connection_mode': '[]', 'controller_burst_limit': '[]', 'controller_queue_size': '[]', 'controller_rate_limit': '[]', 'enable_async_messages': '[]', 'external_ids': '{}', 'inactivity_probe': '[]', 'is_connected': False, 'local_gateway': '[]', 'local_ip': '[]', 'local_netmask': '[]', 'max_backoff': '[]', 'other_config': '{}', 'role': '[]', 'status': '{last_error="Connectionrefused",sec_since_disconnect="5",state=BACKOFF}', 'target': '"tcp:10.30.171.110:6654"', 'type': '[]'}}, 'datapath_id': '"0000000000000001"', 'datapath_type': '""', 'datapath_version': '"&lt;unknown&gt;"', 'external_ids': '{}', 'fail_mode': 'standalone', 'flood_vlans': '[]', 'flow_tables': '{}', 'ipfix': '[]', 'mcast_snooping_enable': 'false', 'mirrors': '[]', 'name': 's1', 'netflow': '[]', 'other_config': '{datapath-id="0000000000000001",disable-in-band="true",dp-desc=s1}', 'ports': '[079fa24c-466d-4b78-b64c-7669ebd0e515,9e99a58c-a78c-4b0a-b18c-2ef2b895c497]', 'protocols': '[OpenFlow13]', 'rstp_enable': 'false', 'rstp_status': '{}', 'sflow': '[]', 'status': '{}', 'stp_enable': 'false'}}</msg>
<arg>${data}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:08:40.387983" elapsed="0.000357"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-08T01:08:40.388946" level="INFO">${ovs_switch_data} = {'': {'_uuid': 'b1f3a25e-4d19-465f-912b-17fe7b1acbdb', 'auto_attach': '[]', 'controller': {'10.30.170.48': {'_uuid': '419e3e41-ddbb-4be3-b539-f4d045a9bbd9', 'connection_mode': '[]', 'controller_burst_...</msg>
<arg>${ovs_switch_data}</arg>
<arg>${data}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-08T01:08:40.388515" elapsed="0.000507"/>
</kw>
<return>
<value>${data}</value>
<status status="PASS" start="2026-04-08T01:08:40.389073" elapsed="0.000044"/>
</return>
<doc>Gets ovs data and parse them.</doc>
<status status="PASS" start="2026-04-08T01:08:40.298154" elapsed="0.091086"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:08:40.389994" level="INFO">${sid} = 1</msg>
<var>${sid}</var>
<arg>${i}+1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:08:40.389657" elapsed="0.000363"/>
</kw>
<kw name="Should Be Connected" owner="OvsManager">
<kw name="OvsManager__Is_Connected" owner="OvsManager">
<if>
<branch type="IF" condition="${update_data}==${True}">
<kw name="Get Ovsdb Data" owner="OvsManager">
<doc>Gets ovs data and parse them.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:40.391782" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:08:40.391245" elapsed="0.000595"/>
</branch>
<status status="PASS" start="2026-04-08T01:08:40.391224" elapsed="0.000641"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:08:40.392266" level="FAIL">Dictionary does not contain key 's1'.</msg>
<var>${bridge}</var>
<arg>${ovs_switch_data}</arg>
<arg>${switch}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="FAIL" start="2026-04-08T01:08:40.392025" elapsed="0.000348">Dictionary does not contain key 's1'.</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${cntls}</var>
<arg>${bridge}</arg>
<arg>controller</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:40.392553" elapsed="0.000021"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${cntl}</var>
<arg>${cntls}</arg>
<arg>${controller}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:40.392733" elapsed="0.000019"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${connected}</var>
<arg>${cntl}</arg>
<arg>is_connected</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:40.392907" elapsed="0.000019"/>
</kw>
<return>
<value>${connected}</value>
<status status="NOT RUN" start="2026-04-08T01:08:40.392971" elapsed="0.000015"/>
</return>
<kw name="Execute OvsVsctl Show Command" owner="OvsManager" type="TEARDOWN">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:08:40.394987" level="INFO">sh ovs-vsctl show</msg>
<arg>${lcmd_prefix} ovs-vsctl show</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:08:40.393567" elapsed="0.001477"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-08T01:08:40.404838" level="INFO">9a5df812-eb49-4477-a37e-2d464c02791d
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.48:6654"
        Controller "tcp:10.30.170.131:6654"
        Controller "tcp:10.30.171.110:6654"
        fail_mode: standalone
        Port s1
            Interface s1
                type: internal
        Port s1-eth1
            Interface s1-eth1
    ovs_version: "2.17.11"
mininet&gt;</msg>
<msg time="2026-04-08T01:08:40.404933" level="INFO">${output} = 9a5df812-eb49-4477-a37e-2d464c02791d
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.48:6654"
        Controller "tcp:10.30.170.131:6654"
        Controller "tcp:10.30.171...</msg>
<var>${output}</var>
<arg>${lprompt}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-08T01:08:40.395233" elapsed="0.009727"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:08:40.405435" level="INFO">9a5df812-eb49-4477-a37e-2d464c02791d
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.48:6654"
        Controller "tcp:10.30.170.131:6654"
        Controller "tcp:10.30.171.110:6654"
        fail_mode: standalone
        Port s1
            Interface s1
                type: internal
        Port s1-eth1
            Interface s1-eth1
    ovs_version: "2.17.11"
mininet&gt;</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:08:40.405181" elapsed="0.000303"/>
</kw>
<doc>Executes ovs-vsctl show command and returns stdout, no check nor change is performed</doc>
<status status="PASS" start="2026-04-08T01:08:40.393262" elapsed="0.012277"/>
</kw>
<var>${connected}</var>
<arg>${switch}</arg>
<arg>${controller}</arg>
<arg>update_data=${update_data}</arg>
<doc>Return is_connected boolean value</doc>
<status status="FAIL" start="2026-04-08T01:08:40.390857" elapsed="0.014758">Dictionary does not contain key 's1'.</status>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${connected}</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:40.405795" elapsed="0.000022"/>
</kw>
<arg>s${sid}</arg>
<arg>${ODL_SYSTEM_1_IP}</arg>
<arg>update_data=${False}</arg>
<doc>Check if the switch is connected</doc>
<status status="FAIL" start="2026-04-08T01:08:40.390259" elapsed="0.015641">Dictionary does not contain key 's1'.</status>
</kw>
<kw name="Should Be Connected" owner="OvsManager">
<arg>s${sid}</arg>
<arg>${ODL_SYSTEM_2_IP}</arg>
<arg>update_data=${False}</arg>
<doc>Check if the switch is connected</doc>
<status status="NOT RUN" start="2026-04-08T01:08:40.406119" elapsed="0.000024"/>
</kw>
<kw name="Should Be Connected" owner="OvsManager">
<arg>s${sid}</arg>
<arg>${ODL_SYSTEM_3_IP}</arg>
<arg>update_data=${False}</arg>
<doc>Check if the switch is connected</doc>
<status status="NOT RUN" start="2026-04-08T01:08:40.406367" elapsed="0.000023"/>
</kw>
<var name="${i}">0</var>
<status status="FAIL" start="2026-04-08T01:08:40.389506" elapsed="0.016939">Dictionary does not contain key 's1'.</status>
</iter>
<var>${i}</var>
<value>0</value>
<value>${SWITCHES}</value>
<status status="FAIL" start="2026-04-08T01:08:40.389295" elapsed="0.017206">Dictionary does not contain key 's1'.</status>
</for>
<doc>Verifies all switches are connected to all cluster nodes</doc>
<status status="FAIL" start="2026-04-08T01:08:40.297103" elapsed="0.109490">Dictionary does not contain key 's1'.</status>
</kw>
<kw name="Check All Switches Connected To All Cluster Nodes">
<kw name="Get Ovsdb Data" owner="OvsManager">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:08:41.412123" level="INFO">sh ovs-vsctl list Bridge</msg>
<arg>${lcmd_prefix} ${SH_BR_CMD}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:08:41.409302" elapsed="0.002957"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-08T01:08:41.456738" level="INFO">_uuid               : b1f3a25e-4d19-465f-912b-17fe7b1acbdb
auto_attach         : []
controller          : [419e3e41-ddbb-4be3-b539-f4d045a9bbd9, 740cc856-2b97-4888-820d-bf0f9d99a501, bbb4531e-5733-4157-b3f6-ea7bf10a308b]
datapath_id         : "0000000000000001"
datapath_type       : ""
datapath_version    : "&lt;unknown&gt;"
external_ids        : {}
fail_mode           : standalone
flood_vlans         : []
flow_tables         : {}
ipfix               : []
mcast_snooping_enable: false
mirrors             : []
name                : s1
netflow             : []
other_config        : {datapath-id="0000000000000001", disable-in-band="true", dp-desc=s1}
ports               : [079fa24c-466d-4b78-b64c-7669ebd0e515, 9e99a58c-a78c-4b0a-b18c-2ef2b895c497]
protocols           : [OpenFlow13]
rstp_enable         : false
rstp_status         : {}
sflow               : []
status              : {}
stp_enable          : false
mininet&gt;</msg>
<msg time="2026-04-08T01:08:41.456968" level="INFO">${brstdout} = _uuid               : b1f3a25e-4d19-465f-912b-17fe7b1acbdb
auto_attach         : []
controller          : [419e3e41-ddbb-4be3-b539-f4d045a9bbd9, 740cc856-2b97-4888-820d-bf0f9d99a501, bbb4531e-5733-4...</msg>
<var>${brstdout}</var>
<arg>${lprompt}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-08T01:08:41.412515" elapsed="0.044498"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:08:41.457655" level="INFO">_uuid               : b1f3a25e-4d19-465f-912b-17fe7b1acbdb
auto_attach         : []
controller          : [419e3e41-ddbb-4be3-b539-f4d045a9bbd9, 740cc856-2b97-4888-820d-bf0f9d99a501, bbb4531e-5733-4157-b3f6-ea7bf10a308b]
datapath_id         : "0000000000000001"
datapath_type       : ""
datapath_version    : "&lt;unknown&gt;"
external_ids        : {}
fail_mode           : standalone
flood_vlans         : []
flow_tables         : {}
ipfix               : []
mcast_snooping_enable: false
mirrors             : []
name                : s1
netflow             : []
other_config        : {datapath-id="0000000000000001", disable-in-band="true", dp-desc=s1}
ports               : [079fa24c-466d-4b78-b64c-7669ebd0e515, 9e99a58c-a78c-4b0a-b18c-2ef2b895c497]
protocols           : [OpenFlow13]
rstp_enable         : false
rstp_status         : {}
sflow               : []
status              : {}
stp_enable          : false
mininet&gt;</msg>
<arg>${brstdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:08:41.457332" elapsed="0.000385"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:08:41.459511" level="INFO">sh ovs-vsctl list Controller</msg>
<arg>${lcmd_prefix} ${SH_CNTL_CMD}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:08:41.457884" elapsed="0.001690"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-08T01:08:41.482876" level="INFO">_uuid               : 419e3e41-ddbb-4be3-b539-f4d045a9bbd9
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : false
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : []
status              : {last_error="Connection refused", sec_since_disconnect="5", state=BACKOFF}
target              : "tcp:10.30.170.48:6654"
type                : []

_uuid               : 740cc856-2b97-4888-820d-bf0f9d99a501
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : false
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : []
status              : {last_error="Connection refused", sec_since_disconnect="5", state=BACKOFF}
target              : "tcp:10.30.170.131:6654"
type                : []

_uuid               : bbb4531e-5733-4157-b3f6-ea7bf10a308b
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : false
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : []
status              : {last_error="Connection refused", sec_since_disconnect="5", state=BACKOFF}
target              : "tcp:10.30.171.110:6654"
type                : []
mininet&gt;</msg>
<msg time="2026-04-08T01:08:41.483035" level="INFO">${cntlstdout} = _uuid               : 419e3e41-ddbb-4be3-b539-f4d045a9bbd9
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
exter...</msg>
<var>${cntlstdout}</var>
<arg>${lprompt}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-08T01:08:41.459749" elapsed="0.023315"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:08:41.483728" level="INFO">_uuid               : 419e3e41-ddbb-4be3-b539-f4d045a9bbd9
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : false
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : []
status              : {last_error="Connection refused", sec_since_disconnect="5", state=BACKOFF}
target              : "tcp:10.30.170.48:6654"
type                : []

_uuid               : 740cc856-2b97-4888-820d-bf0f9d99a501
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : false
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : []
status              : {last_error="Connection refused", sec_since_disconnect="5", state=BACKOFF}
target              : "tcp:10.30.170.131:6654"
type                : []

_uuid               : bbb4531e-5733-4157-b3f6-ea7bf10a308b
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : false
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : []
status              : {last_error="Connection refused", sec_since_disconnect="5", state=BACKOFF}
target              : "tcp:10.30.171.110:6654"
type                : []
mininet&gt;</msg>
<arg>${cntlstdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:08:41.483368" elapsed="0.000445"/>
</kw>
<kw name="Parse" owner="VsctlListParser">
<msg time="2026-04-08T01:08:41.484646" level="INFO">_uuid:b1f3a25e-4d19-465f-912b-17fe7b1acbdb
auto_attach:[]
controller:[419e3e41-ddbb-4be3-b539-f4d045a9bbd9,740cc856-2b97-4888-820d-bf0f9d99a501,bbb4531e-5733-4157-b3f6-ea7bf10a308b]
datapath_id:"0000000000000001"
datapath_type:""
datapath_version:"&lt;unknown&gt;"
external_ids:{}
fail_mode:standalone
flood_vlans:[]
flow_tables:{}
ipfix:[]
mcast_snooping_enable:false
mirrors:[]
name:s1
netflow:[]
other_config:{datapath-id="0000000000000001",disable-in-band="true",dp-desc=s1}
ports:[079fa24c-466d-4b78-b64c-7669ebd0e515,9e99a58c-a78c-4b0a-b18c-2ef2b895c497]
protocols:[OpenFlow13]
rstp_enable:false
rstp_status:{}
sflow:[]
status:{}
stp_enable:false
_uuid:419e3e41-ddbb-4be3-b539-f4d045a9bbd9
connection_mode:[]
controller_burst_limit:[]
controller_queue_size:[]
controller_rate_limit:[]
enable_async_messages:[]
external_ids:{}
inactivity_probe:[]
is_connected:false
local_gateway:[]
local_ip:[]
local_netmask:[]
max_backoff:[]
other_config:{}
role:[]
status:{last_error="Connectionrefused",sec_since_disconnect="5",state=BACKOFF}
target:"tcp:10.30.170.48:6654"
type:[]
_uuid:740cc856-2b97-4888-820d-bf0f9d99a501
connection_mode:[]
controller_burst_limit:[]
controller_queue_size:[]
controller_rate_limit:[]
enable_async_messages:[]
external_ids:{}
inactivity_probe:[]
is_connected:false
local_gateway:[]
local_ip:[]
local_netmask:[]
max_backoff:[]
other_config:{}
role:[]
status:{last_error="Connectionrefused",sec_since_disconnect="5",state=BACKOFF}
target:"tcp:10.30.170.131:6654"
type:[]
_uuid:bbb4531e-5733-4157-b3f6-ea7bf10a308b
connection_mode:[]
controller_burst_limit:[]
controller_queue_size:[]
controller_rate_limit:[]
enable_async_messages:[]
external_ids:{}
inactivity_probe:[]
is_connected:false
local_gateway:[]
local_ip:[]
local_netmask:[]
max_backoff:[]
other_config:{}
role:[]
status:{last_error="Connectionrefused",sec_since_disconnect="5",state=BACKOFF}
target:"tcp:10.30.171.110:6654"
type:[]</msg>
<msg time="2026-04-08T01:08:41.484865" level="INFO">${data} = {'': {'_uuid': 'b1f3a25e-4d19-465f-912b-17fe7b1acbdb', 'auto_attach': '[]', 'controller': {'10.30.170.48': {'_uuid': '419e3e41-ddbb-4be3-b539-f4d045a9bbd9', 'connection_mode': '[]', 'controller_burst_...</msg>
<msg time="2026-04-08T01:08:41.484927" level="INFO">${bridegs} = {'b1f3a25e-4d19-465f-912b-17fe7b1acbdb': {'_uuid': 'b1f3a25e-4d19-465f-912b-17fe7b1acbdb', 'auto_attach': '[]', 'controller': '[419e3e41-ddbb-4be3-b539-f4d045a9bbd9,740cc856-2b97-4888-820d-bf0f9d99a50...</msg>
<msg time="2026-04-08T01:08:41.484994" level="INFO">${controllers} = {'419e3e41-ddbb-4be3-b539-f4d045a9bbd9': {'_uuid': '419e3e41-ddbb-4be3-b539-f4d045a9bbd9', 'connection_mode': '[]', 'controller_burst_limit': '[]', 'controller_queue_size': '[]', 'controller_rate_limi...</msg>
<var>${data}</var>
<var>${bridegs}</var>
<var>${controllers}</var>
<arg>${brstdout}</arg>
<arg>${cntlstdout}</arg>
<doc>Produces dictionary with data for future usege</doc>
<status status="PASS" start="2026-04-08T01:08:41.484042" elapsed="0.000977"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:08:41.485509" level="INFO">{'': {'_uuid': 'b1f3a25e-4d19-465f-912b-17fe7b1acbdb', 'auto_attach': '[]', 'controller': {'10.30.170.48': {'_uuid': '419e3e41-ddbb-4be3-b539-f4d045a9bbd9', 'connection_mode': '[]', 'controller_burst_limit': '[]', 'controller_queue_size': '[]', 'controller_rate_limit': '[]', 'enable_async_messages': '[]', 'external_ids': '{}', 'inactivity_probe': '[]', 'is_connected': False, 'local_gateway': '[]', 'local_ip': '[]', 'local_netmask': '[]', 'max_backoff': '[]', 'other_config': '{}', 'role': '[]', 'status': '{last_error="Connectionrefused",sec_since_disconnect="5",state=BACKOFF}', 'target': '"tcp:10.30.170.48:6654"', 'type': '[]'}, '10.30.170.131': {'_uuid': '740cc856-2b97-4888-820d-bf0f9d99a501', 'connection_mode': '[]', 'controller_burst_limit': '[]', 'controller_queue_size': '[]', 'controller_rate_limit': '[]', 'enable_async_messages': '[]', 'external_ids': '{}', 'inactivity_probe': '[]', 'is_connected': False, 'local_gateway': '[]', 'local_ip': '[]', 'local_netmask': '[]', 'max_backoff': '[]', 'other_config': '{}', 'role': '[]', 'status': '{last_error="Connectionrefused",sec_since_disconnect="5",state=BACKOFF}', 'target': '"tcp:10.30.170.131:6654"', 'type': '[]'}, '10.30.171.110': {'_uuid': 'bbb4531e-5733-4157-b3f6-ea7bf10a308b', 'connection_mode': '[]', 'controller_burst_limit': '[]', 'controller_queue_size': '[]', 'controller_rate_limit': '[]', 'enable_async_messages': '[]', 'external_ids': '{}', 'inactivity_probe': '[]', 'is_connected': False, 'local_gateway': '[]', 'local_ip': '[]', 'local_netmask': '[]', 'max_backoff': '[]', 'other_config': '{}', 'role': '[]', 'status': '{last_error="Connectionrefused",sec_since_disconnect="5",state=BACKOFF}', 'target': '"tcp:10.30.171.110:6654"', 'type': '[]'}}, 'datapath_id': '"0000000000000001"', 'datapath_type': '""', 'datapath_version': '"&lt;unknown&gt;"', 'external_ids': '{}', 'fail_mode': 'standalone', 'flood_vlans': '[]', 'flow_tables': '{}', 'ipfix': '[]', 'mcast_snooping_enable': 'false', 'mirrors': '[]', 'name': 's1', 'netflow': '[]', 'other_config': '{datapath-id="0000000000000001",disable-in-band="true",dp-desc=s1}', 'ports': '[079fa24c-466d-4b78-b64c-7669ebd0e515,9e99a58c-a78c-4b0a-b18c-2ef2b895c497]', 'protocols': '[OpenFlow13]', 'rstp_enable': 'false', 'rstp_status': '{}', 'sflow': '[]', 'status': '{}', 'stp_enable': 'false'}}</msg>
<arg>${data}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:08:41.485225" elapsed="0.000350"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-08T01:08:41.486249" level="INFO">${ovs_switch_data} = {'': {'_uuid': 'b1f3a25e-4d19-465f-912b-17fe7b1acbdb', 'auto_attach': '[]', 'controller': {'10.30.170.48': {'_uuid': '419e3e41-ddbb-4be3-b539-f4d045a9bbd9', 'connection_mode': '[]', 'controller_burst_...</msg>
<arg>${ovs_switch_data}</arg>
<arg>${data}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-08T01:08:41.485754" elapsed="0.000541"/>
</kw>
<return>
<value>${data}</value>
<status status="PASS" start="2026-04-08T01:08:41.486348" elapsed="0.000048"/>
</return>
<doc>Gets ovs data and parse them.</doc>
<status status="PASS" start="2026-04-08T01:08:41.408554" elapsed="0.077951"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:08:41.487340" level="INFO">${sid} = 1</msg>
<var>${sid}</var>
<arg>${i}+1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:08:41.486946" elapsed="0.000422"/>
</kw>
<kw name="Should Be Connected" owner="OvsManager">
<kw name="OvsManager__Is_Connected" owner="OvsManager">
<if>
<branch type="IF" condition="${update_data}==${True}">
<kw name="Get Ovsdb Data" owner="OvsManager">
<doc>Gets ovs data and parse them.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:41.489426" elapsed="0.000028"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:08:41.488769" elapsed="0.000717"/>
</branch>
<status status="PASS" start="2026-04-08T01:08:41.488747" elapsed="0.000764"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:08:41.489893" level="FAIL">Dictionary does not contain key 's1'.</msg>
<var>${bridge}</var>
<arg>${ovs_switch_data}</arg>
<arg>${switch}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="FAIL" start="2026-04-08T01:08:41.489671" elapsed="0.000332">Dictionary does not contain key 's1'.</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${cntls}</var>
<arg>${bridge}</arg>
<arg>controller</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:41.490202" elapsed="0.000022"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${cntl}</var>
<arg>${cntls}</arg>
<arg>${controller}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:41.490387" elapsed="0.000020"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${connected}</var>
<arg>${cntl}</arg>
<arg>is_connected</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:41.490567" elapsed="0.000020"/>
</kw>
<return>
<value>${connected}</value>
<status status="NOT RUN" start="2026-04-08T01:08:41.490632" elapsed="0.000017"/>
</return>
<kw name="Execute OvsVsctl Show Command" owner="OvsManager" type="TEARDOWN">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:08:41.492790" level="INFO">sh ovs-vsctl show</msg>
<arg>${lcmd_prefix} ovs-vsctl show</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:08:41.491232" elapsed="0.001617"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-08T01:08:41.506606" level="INFO">9a5df812-eb49-4477-a37e-2d464c02791d
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.48:6654"
        Controller "tcp:10.30.170.131:6654"
        Controller "tcp:10.30.171.110:6654"
        fail_mode: standalone
        Port s1
            Interface s1
                type: internal
        Port s1-eth1
            Interface s1-eth1
    ovs_version: "2.17.11"
mininet&gt;</msg>
<msg time="2026-04-08T01:08:41.506845" level="INFO">${output} = 9a5df812-eb49-4477-a37e-2d464c02791d
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.48:6654"
        Controller "tcp:10.30.170.131:6654"
        Controller "tcp:10.30.171...</msg>
<var>${output}</var>
<arg>${lprompt}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-08T01:08:41.493019" elapsed="0.013857"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:08:41.507704" level="INFO">9a5df812-eb49-4477-a37e-2d464c02791d
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.48:6654"
        Controller "tcp:10.30.170.131:6654"
        Controller "tcp:10.30.171.110:6654"
        fail_mode: standalone
        Port s1
            Interface s1
                type: internal
        Port s1-eth1
            Interface s1-eth1
    ovs_version: "2.17.11"
mininet&gt;</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:08:41.507283" elapsed="0.000610"/>
</kw>
<doc>Executes ovs-vsctl show command and returns stdout, no check nor change is performed</doc>
<status status="PASS" start="2026-04-08T01:08:41.490910" elapsed="0.017059"/>
</kw>
<var>${connected}</var>
<arg>${switch}</arg>
<arg>${controller}</arg>
<arg>update_data=${update_data}</arg>
<doc>Return is_connected boolean value</doc>
<status status="FAIL" start="2026-04-08T01:08:41.488234" elapsed="0.019847">Dictionary does not contain key 's1'.</status>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${connected}</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:41.508309" elapsed="0.000023"/>
</kw>
<arg>s${sid}</arg>
<arg>${ODL_SYSTEM_1_IP}</arg>
<arg>update_data=${False}</arg>
<doc>Check if the switch is connected</doc>
<status status="FAIL" start="2026-04-08T01:08:41.487602" elapsed="0.020821">Dictionary does not contain key 's1'.</status>
</kw>
<kw name="Should Be Connected" owner="OvsManager">
<arg>s${sid}</arg>
<arg>${ODL_SYSTEM_2_IP}</arg>
<arg>update_data=${False}</arg>
<doc>Check if the switch is connected</doc>
<status status="NOT RUN" start="2026-04-08T01:08:41.508682" elapsed="0.000025"/>
</kw>
<kw name="Should Be Connected" owner="OvsManager">
<arg>s${sid}</arg>
<arg>${ODL_SYSTEM_3_IP}</arg>
<arg>update_data=${False}</arg>
<doc>Check if the switch is connected</doc>
<status status="NOT RUN" start="2026-04-08T01:08:41.508948" elapsed="0.000026"/>
</kw>
<var name="${i}">0</var>
<status status="FAIL" start="2026-04-08T01:08:41.486792" elapsed="0.022241">Dictionary does not contain key 's1'.</status>
</iter>
<var>${i}</var>
<value>0</value>
<value>${SWITCHES}</value>
<status status="FAIL" start="2026-04-08T01:08:41.486565" elapsed="0.022536">Dictionary does not contain key 's1'.</status>
</for>
<doc>Verifies all switches are connected to all cluster nodes</doc>
<status status="FAIL" start="2026-04-08T01:08:41.407470" elapsed="0.101779">Dictionary does not contain key 's1'.</status>
</kw>
<kw name="Check All Switches Connected To All Cluster Nodes">
<kw name="Get Ovsdb Data" owner="OvsManager">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:08:42.515046" level="INFO">sh ovs-vsctl list Bridge</msg>
<arg>${lcmd_prefix} ${SH_BR_CMD}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:08:42.512097" elapsed="0.003148"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-08T01:08:42.559499" level="INFO">_uuid               : b1f3a25e-4d19-465f-912b-17fe7b1acbdb
auto_attach         : []
controller          : [419e3e41-ddbb-4be3-b539-f4d045a9bbd9, 740cc856-2b97-4888-820d-bf0f9d99a501, bbb4531e-5733-4157-b3f6-ea7bf10a308b]
datapath_id         : "0000000000000001"
datapath_type       : ""
datapath_version    : "&lt;unknown&gt;"
external_ids        : {}
fail_mode           : standalone
flood_vlans         : []
flow_tables         : {}
ipfix               : []
mcast_snooping_enable: false
mirrors             : []
name                : s1
netflow             : []
other_config        : {datapath-id="0000000000000001", disable-in-band="true", dp-desc=s1}
ports               : [079fa24c-466d-4b78-b64c-7669ebd0e515, 9e99a58c-a78c-4b0a-b18c-2ef2b895c497]
protocols           : [OpenFlow13]
rstp_enable         : false
rstp_status         : {}
sflow               : []
status              : {}
stp_enable          : false
mininet&gt;</msg>
<msg time="2026-04-08T01:08:42.559616" level="INFO">${brstdout} = _uuid               : b1f3a25e-4d19-465f-912b-17fe7b1acbdb
auto_attach         : []
controller          : [419e3e41-ddbb-4be3-b539-f4d045a9bbd9, 740cc856-2b97-4888-820d-bf0f9d99a501, bbb4531e-5733-4...</msg>
<var>${brstdout}</var>
<arg>${lprompt}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-08T01:08:42.515640" elapsed="0.044004"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:08:42.560267" level="INFO">_uuid               : b1f3a25e-4d19-465f-912b-17fe7b1acbdb
auto_attach         : []
controller          : [419e3e41-ddbb-4be3-b539-f4d045a9bbd9, 740cc856-2b97-4888-820d-bf0f9d99a501, bbb4531e-5733-4157-b3f6-ea7bf10a308b]
datapath_id         : "0000000000000001"
datapath_type       : ""
datapath_version    : "&lt;unknown&gt;"
external_ids        : {}
fail_mode           : standalone
flood_vlans         : []
flow_tables         : {}
ipfix               : []
mcast_snooping_enable: false
mirrors             : []
name                : s1
netflow             : []
other_config        : {datapath-id="0000000000000001", disable-in-band="true", dp-desc=s1}
ports               : [079fa24c-466d-4b78-b64c-7669ebd0e515, 9e99a58c-a78c-4b0a-b18c-2ef2b895c497]
protocols           : [OpenFlow13]
rstp_enable         : false
rstp_status         : {}
sflow               : []
status              : {}
stp_enable          : false
mininet&gt;</msg>
<arg>${brstdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:08:42.559922" elapsed="0.000419"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:08:42.562049" level="INFO">sh ovs-vsctl list Controller</msg>
<arg>${lcmd_prefix} ${SH_CNTL_CMD}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:08:42.560508" elapsed="0.001599"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-08T01:08:42.585410" level="INFO">_uuid               : 419e3e41-ddbb-4be3-b539-f4d045a9bbd9
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : false
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : []
status              : {last_error="Connection refused", sec_since_disconnect="5", state=BACKOFF}
target              : "tcp:10.30.170.48:6654"
type                : []

_uuid               : 740cc856-2b97-4888-820d-bf0f9d99a501
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : false
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : []
status              : {last_error="Connection refused", sec_since_disconnect="5", state=BACKOFF}
target              : "tcp:10.30.170.131:6654"
type                : []

_uuid               : bbb4531e-5733-4157-b3f6-ea7bf10a308b
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : false
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : []
status              : {last_error="Connection refused", sec_since_disconnect="5", state=BACKOFF}
target              : "tcp:10.30.171.110:6654"
type                : []
mininet&gt;</msg>
<msg time="2026-04-08T01:08:42.585526" level="INFO">${cntlstdout} = _uuid               : 419e3e41-ddbb-4be3-b539-f4d045a9bbd9
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
exter...</msg>
<var>${cntlstdout}</var>
<arg>${lprompt}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-08T01:08:42.562300" elapsed="0.023253"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:08:42.586114" level="INFO">_uuid               : 419e3e41-ddbb-4be3-b539-f4d045a9bbd9
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : false
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : []
status              : {last_error="Connection refused", sec_since_disconnect="5", state=BACKOFF}
target              : "tcp:10.30.170.48:6654"
type                : []

_uuid               : 740cc856-2b97-4888-820d-bf0f9d99a501
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : false
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : []
status              : {last_error="Connection refused", sec_since_disconnect="5", state=BACKOFF}
target              : "tcp:10.30.170.131:6654"
type                : []

_uuid               : bbb4531e-5733-4157-b3f6-ea7bf10a308b
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : false
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : []
status              : {last_error="Connection refused", sec_since_disconnect="5", state=BACKOFF}
target              : "tcp:10.30.171.110:6654"
type                : []
mininet&gt;</msg>
<arg>${cntlstdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:08:42.585842" elapsed="0.000354"/>
</kw>
<kw name="Parse" owner="VsctlListParser">
<msg time="2026-04-08T01:08:42.586834" level="INFO">_uuid:b1f3a25e-4d19-465f-912b-17fe7b1acbdb
auto_attach:[]
controller:[419e3e41-ddbb-4be3-b539-f4d045a9bbd9,740cc856-2b97-4888-820d-bf0f9d99a501,bbb4531e-5733-4157-b3f6-ea7bf10a308b]
datapath_id:"0000000000000001"
datapath_type:""
datapath_version:"&lt;unknown&gt;"
external_ids:{}
fail_mode:standalone
flood_vlans:[]
flow_tables:{}
ipfix:[]
mcast_snooping_enable:false
mirrors:[]
name:s1
netflow:[]
other_config:{datapath-id="0000000000000001",disable-in-band="true",dp-desc=s1}
ports:[079fa24c-466d-4b78-b64c-7669ebd0e515,9e99a58c-a78c-4b0a-b18c-2ef2b895c497]
protocols:[OpenFlow13]
rstp_enable:false
rstp_status:{}
sflow:[]
status:{}
stp_enable:false
_uuid:419e3e41-ddbb-4be3-b539-f4d045a9bbd9
connection_mode:[]
controller_burst_limit:[]
controller_queue_size:[]
controller_rate_limit:[]
enable_async_messages:[]
external_ids:{}
inactivity_probe:[]
is_connected:false
local_gateway:[]
local_ip:[]
local_netmask:[]
max_backoff:[]
other_config:{}
role:[]
status:{last_error="Connectionrefused",sec_since_disconnect="5",state=BACKOFF}
target:"tcp:10.30.170.48:6654"
type:[]
_uuid:740cc856-2b97-4888-820d-bf0f9d99a501
connection_mode:[]
controller_burst_limit:[]
controller_queue_size:[]
controller_rate_limit:[]
enable_async_messages:[]
external_ids:{}
inactivity_probe:[]
is_connected:false
local_gateway:[]
local_ip:[]
local_netmask:[]
max_backoff:[]
other_config:{}
role:[]
status:{last_error="Connectionrefused",sec_since_disconnect="5",state=BACKOFF}
target:"tcp:10.30.170.131:6654"
type:[]
_uuid:bbb4531e-5733-4157-b3f6-ea7bf10a308b
connection_mode:[]
controller_burst_limit:[]
controller_queue_size:[]
controller_rate_limit:[]
enable_async_messages:[]
external_ids:{}
inactivity_probe:[]
is_connected:false
local_gateway:[]
local_ip:[]
local_netmask:[]
max_backoff:[]
other_config:{}
role:[]
status:{last_error="Connectionrefused",sec_since_disconnect="5",state=BACKOFF}
target:"tcp:10.30.171.110:6654"
type:[]</msg>
<msg time="2026-04-08T01:08:42.586997" level="INFO">${data} = {'': {'_uuid': 'b1f3a25e-4d19-465f-912b-17fe7b1acbdb', 'auto_attach': '[]', 'controller': {'10.30.170.48': {'_uuid': '419e3e41-ddbb-4be3-b539-f4d045a9bbd9', 'connection_mode': '[]', 'controller_burst_...</msg>
<msg time="2026-04-08T01:08:42.587058" level="INFO">${bridegs} = {'b1f3a25e-4d19-465f-912b-17fe7b1acbdb': {'_uuid': 'b1f3a25e-4d19-465f-912b-17fe7b1acbdb', 'auto_attach': '[]', 'controller': '[419e3e41-ddbb-4be3-b539-f4d045a9bbd9,740cc856-2b97-4888-820d-bf0f9d99a50...</msg>
<msg time="2026-04-08T01:08:42.587123" level="INFO">${controllers} = {'419e3e41-ddbb-4be3-b539-f4d045a9bbd9': {'_uuid': '419e3e41-ddbb-4be3-b539-f4d045a9bbd9', 'connection_mode': '[]', 'controller_burst_limit': '[]', 'controller_queue_size': '[]', 'controller_rate_limi...</msg>
<var>${data}</var>
<var>${bridegs}</var>
<var>${controllers}</var>
<arg>${brstdout}</arg>
<arg>${cntlstdout}</arg>
<doc>Produces dictionary with data for future usege</doc>
<status status="PASS" start="2026-04-08T01:08:42.586368" elapsed="0.000780"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:08:42.587642" level="INFO">{'': {'_uuid': 'b1f3a25e-4d19-465f-912b-17fe7b1acbdb', 'auto_attach': '[]', 'controller': {'10.30.170.48': {'_uuid': '419e3e41-ddbb-4be3-b539-f4d045a9bbd9', 'connection_mode': '[]', 'controller_burst_limit': '[]', 'controller_queue_size': '[]', 'controller_rate_limit': '[]', 'enable_async_messages': '[]', 'external_ids': '{}', 'inactivity_probe': '[]', 'is_connected': False, 'local_gateway': '[]', 'local_ip': '[]', 'local_netmask': '[]', 'max_backoff': '[]', 'other_config': '{}', 'role': '[]', 'status': '{last_error="Connectionrefused",sec_since_disconnect="5",state=BACKOFF}', 'target': '"tcp:10.30.170.48:6654"', 'type': '[]'}, '10.30.170.131': {'_uuid': '740cc856-2b97-4888-820d-bf0f9d99a501', 'connection_mode': '[]', 'controller_burst_limit': '[]', 'controller_queue_size': '[]', 'controller_rate_limit': '[]', 'enable_async_messages': '[]', 'external_ids': '{}', 'inactivity_probe': '[]', 'is_connected': False, 'local_gateway': '[]', 'local_ip': '[]', 'local_netmask': '[]', 'max_backoff': '[]', 'other_config': '{}', 'role': '[]', 'status': '{last_error="Connectionrefused",sec_since_disconnect="5",state=BACKOFF}', 'target': '"tcp:10.30.170.131:6654"', 'type': '[]'}, '10.30.171.110': {'_uuid': 'bbb4531e-5733-4157-b3f6-ea7bf10a308b', 'connection_mode': '[]', 'controller_burst_limit': '[]', 'controller_queue_size': '[]', 'controller_rate_limit': '[]', 'enable_async_messages': '[]', 'external_ids': '{}', 'inactivity_probe': '[]', 'is_connected': False, 'local_gateway': '[]', 'local_ip': '[]', 'local_netmask': '[]', 'max_backoff': '[]', 'other_config': '{}', 'role': '[]', 'status': '{last_error="Connectionrefused",sec_since_disconnect="5",state=BACKOFF}', 'target': '"tcp:10.30.171.110:6654"', 'type': '[]'}}, 'datapath_id': '"0000000000000001"', 'datapath_type': '""', 'datapath_version': '"&lt;unknown&gt;"', 'external_ids': '{}', 'fail_mode': 'standalone', 'flood_vlans': '[]', 'flow_tables': '{}', 'ipfix': '[]', 'mcast_snooping_enable': 'false', 'mirrors': '[]', 'name': 's1', 'netflow': '[]', 'other_config': '{datapath-id="0000000000000001",disable-in-band="true",dp-desc=s1}', 'ports': '[079fa24c-466d-4b78-b64c-7669ebd0e515,9e99a58c-a78c-4b0a-b18c-2ef2b895c497]', 'protocols': '[OpenFlow13]', 'rstp_enable': 'false', 'rstp_status': '{}', 'sflow': '[]', 'status': '{}', 'stp_enable': 'false'}}</msg>
<arg>${data}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:08:42.587361" elapsed="0.000346"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-08T01:08:42.588356" level="INFO">${ovs_switch_data} = {'': {'_uuid': 'b1f3a25e-4d19-465f-912b-17fe7b1acbdb', 'auto_attach': '[]', 'controller': {'10.30.170.48': {'_uuid': '419e3e41-ddbb-4be3-b539-f4d045a9bbd9', 'connection_mode': '[]', 'controller_burst_...</msg>
<arg>${ovs_switch_data}</arg>
<arg>${data}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-08T01:08:42.587889" elapsed="0.000540"/>
</kw>
<return>
<value>${data}</value>
<status status="PASS" start="2026-04-08T01:08:42.588483" elapsed="0.000048"/>
</return>
<doc>Gets ovs data and parse them.</doc>
<status status="PASS" start="2026-04-08T01:08:42.511367" elapsed="0.077271"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:08:42.589449" level="INFO">${sid} = 1</msg>
<var>${sid}</var>
<arg>${i}+1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:08:42.589085" elapsed="0.000397"/>
</kw>
<kw name="Should Be Connected" owner="OvsManager">
<kw name="OvsManager__Is_Connected" owner="OvsManager">
<if>
<branch type="IF" condition="${update_data}==${True}">
<kw name="Get Ovsdb Data" owner="OvsManager">
<doc>Gets ovs data and parse them.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:42.593213" elapsed="0.000032"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:08:42.590696" elapsed="0.002582"/>
</branch>
<status status="PASS" start="2026-04-08T01:08:42.590675" elapsed="0.002630"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:08:42.593696" level="FAIL">Dictionary does not contain key 's1'.</msg>
<var>${bridge}</var>
<arg>${ovs_switch_data}</arg>
<arg>${switch}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="FAIL" start="2026-04-08T01:08:42.593467" elapsed="0.000334">Dictionary does not contain key 's1'.</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${cntls}</var>
<arg>${bridge}</arg>
<arg>controller</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:42.593982" elapsed="0.000023"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${cntl}</var>
<arg>${cntls}</arg>
<arg>${controller}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:42.594191" elapsed="0.000023"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${connected}</var>
<arg>${cntl}</arg>
<arg>is_connected</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:42.594379" elapsed="0.000021"/>
</kw>
<return>
<value>${connected}</value>
<status status="NOT RUN" start="2026-04-08T01:08:42.594448" elapsed="0.000016"/>
</return>
<kw name="Execute OvsVsctl Show Command" owner="OvsManager" type="TEARDOWN">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:08:42.596609" level="INFO">sh ovs-vsctl show</msg>
<arg>${lcmd_prefix} ovs-vsctl show</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:08:42.595041" elapsed="0.001629"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-08T01:08:42.610237" level="INFO">9a5df812-eb49-4477-a37e-2d464c02791d
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.48:6654"
        Controller "tcp:10.30.170.131:6654"
        Controller "tcp:10.30.171.110:6654"
        fail_mode: standalone
        Port s1
            Interface s1
                type: internal
        Port s1-eth1
            Interface s1-eth1
    ovs_version: "2.17.11"
mininet&gt;</msg>
<msg time="2026-04-08T01:08:42.610341" level="INFO">${output} = 9a5df812-eb49-4477-a37e-2d464c02791d
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.48:6654"
        Controller "tcp:10.30.170.131:6654"
        Controller "tcp:10.30.171...</msg>
<var>${output}</var>
<arg>${lprompt}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-08T01:08:42.596842" elapsed="0.013527"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:08:42.610850" level="INFO">9a5df812-eb49-4477-a37e-2d464c02791d
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.48:6654"
        Controller "tcp:10.30.170.131:6654"
        Controller "tcp:10.30.171.110:6654"
        fail_mode: standalone
        Port s1
            Interface s1
                type: internal
        Port s1-eth1
            Interface s1-eth1
    ovs_version: "2.17.11"
mininet&gt;</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:08:42.610570" elapsed="0.000329"/>
</kw>
<doc>Executes ovs-vsctl show command and returns stdout, no check nor change is performed</doc>
<status status="PASS" start="2026-04-08T01:08:42.594728" elapsed="0.016227"/>
</kw>
<var>${connected}</var>
<arg>${switch}</arg>
<arg>${controller}</arg>
<arg>update_data=${update_data}</arg>
<doc>Return is_connected boolean value</doc>
<status status="FAIL" start="2026-04-08T01:08:42.590320" elapsed="0.020711">Dictionary does not contain key 's1'.</status>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${connected}</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:42.611232" elapsed="0.000023"/>
</kw>
<arg>s${sid}</arg>
<arg>${ODL_SYSTEM_1_IP}</arg>
<arg>update_data=${False}</arg>
<doc>Check if the switch is connected</doc>
<status status="FAIL" start="2026-04-08T01:08:42.589708" elapsed="0.021633">Dictionary does not contain key 's1'.</status>
</kw>
<kw name="Should Be Connected" owner="OvsManager">
<arg>s${sid}</arg>
<arg>${ODL_SYSTEM_2_IP}</arg>
<arg>update_data=${False}</arg>
<doc>Check if the switch is connected</doc>
<status status="NOT RUN" start="2026-04-08T01:08:42.611566" elapsed="0.000024"/>
</kw>
<kw name="Should Be Connected" owner="OvsManager">
<arg>s${sid}</arg>
<arg>${ODL_SYSTEM_3_IP}</arg>
<arg>update_data=${False}</arg>
<doc>Check if the switch is connected</doc>
<status status="NOT RUN" start="2026-04-08T01:08:42.611814" elapsed="0.000024"/>
</kw>
<var name="${i}">0</var>
<status status="FAIL" start="2026-04-08T01:08:42.588928" elapsed="0.022966">Dictionary does not contain key 's1'.</status>
</iter>
<var>${i}</var>
<value>0</value>
<value>${SWITCHES}</value>
<status status="FAIL" start="2026-04-08T01:08:42.588696" elapsed="0.023256">Dictionary does not contain key 's1'.</status>
</for>
<doc>Verifies all switches are connected to all cluster nodes</doc>
<status status="FAIL" start="2026-04-08T01:08:42.510230" elapsed="0.101815">Dictionary does not contain key 's1'.</status>
</kw>
<kw name="Check All Switches Connected To All Cluster Nodes">
<kw name="Get Ovsdb Data" owner="OvsManager">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:08:43.617500" level="INFO">sh ovs-vsctl list Bridge</msg>
<arg>${lcmd_prefix} ${SH_BR_CMD}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:08:43.614673" elapsed="0.002968"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-08T01:08:43.674030" level="INFO">_uuid               : b1f3a25e-4d19-465f-912b-17fe7b1acbdb
auto_attach         : []
controller          : [419e3e41-ddbb-4be3-b539-f4d045a9bbd9, 740cc856-2b97-4888-820d-bf0f9d99a501, bbb4531e-5733-4157-b3f6-ea7bf10a308b]
datapath_id         : "0000000000000001"
datapath_type       : ""
datapath_version    : "&lt;unknown&gt;"
external_ids        : {}
fail_mode           : standalone
flood_vlans         : []
flow_tables         : {}
ipfix               : []
mcast_snooping_enable: false
mirrors             : []
name                : s1
netflow             : []
other_config        : {datapath-id="0000000000000001", disable-in-band="true", dp-desc=s1}
ports               : [079fa24c-466d-4b78-b64c-7669ebd0e515, 9e99a58c-a78c-4b0a-b18c-2ef2b895c497]
protocols           : [OpenFlow13]
rstp_enable         : false
rstp_status         : {}
sflow               : []
status              : {}
stp_enable          : false
mininet&gt;</msg>
<msg time="2026-04-08T01:08:43.674246" level="INFO">${brstdout} = _uuid               : b1f3a25e-4d19-465f-912b-17fe7b1acbdb
auto_attach         : []
controller          : [419e3e41-ddbb-4be3-b539-f4d045a9bbd9, 740cc856-2b97-4888-820d-bf0f9d99a501, bbb4531e-5733-4...</msg>
<var>${brstdout}</var>
<arg>${lprompt}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-08T01:08:43.618029" elapsed="0.056245"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:08:43.674826" level="INFO">_uuid               : b1f3a25e-4d19-465f-912b-17fe7b1acbdb
auto_attach         : []
controller          : [419e3e41-ddbb-4be3-b539-f4d045a9bbd9, 740cc856-2b97-4888-820d-bf0f9d99a501, bbb4531e-5733-4157-b3f6-ea7bf10a308b]
datapath_id         : "0000000000000001"
datapath_type       : ""
datapath_version    : "&lt;unknown&gt;"
external_ids        : {}
fail_mode           : standalone
flood_vlans         : []
flow_tables         : {}
ipfix               : []
mcast_snooping_enable: false
mirrors             : []
name                : s1
netflow             : []
other_config        : {datapath-id="0000000000000001", disable-in-band="true", dp-desc=s1}
ports               : [079fa24c-466d-4b78-b64c-7669ebd0e515, 9e99a58c-a78c-4b0a-b18c-2ef2b895c497]
protocols           : [OpenFlow13]
rstp_enable         : false
rstp_status         : {}
sflow               : []
status              : {}
stp_enable          : false
mininet&gt;</msg>
<arg>${brstdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:08:43.674525" elapsed="0.000358"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:08:43.676540" level="INFO">sh ovs-vsctl list Controller</msg>
<arg>${lcmd_prefix} ${SH_CNTL_CMD}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:08:43.675041" elapsed="0.001552"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-08T01:08:43.697466" level="INFO">_uuid               : 419e3e41-ddbb-4be3-b539-f4d045a9bbd9
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : false
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : []
status              : {last_error="Connection refused", sec_since_disconnect="5", state=BACKOFF}
target              : "tcp:10.30.170.48:6654"
type                : []

_uuid               : 740cc856-2b97-4888-820d-bf0f9d99a501
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : false
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : []
status              : {last_error="Connection refused", sec_since_disconnect="5", state=BACKOFF}
target              : "tcp:10.30.170.131:6654"
type                : []

_uuid               : bbb4531e-5733-4157-b3f6-ea7bf10a308b
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : false
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : []
status              : {last_error="Connection refused", sec_since_disconnect="5", state=BACKOFF}
target              : "tcp:10.30.171.110:6654"
type                : []
mininet&gt;</msg>
<msg time="2026-04-08T01:08:43.697576" level="INFO">${cntlstdout} = _uuid               : 419e3e41-ddbb-4be3-b539-f4d045a9bbd9
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
exter...</msg>
<var>${cntlstdout}</var>
<arg>${lprompt}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-08T01:08:43.676759" elapsed="0.020846"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:08:43.698050" level="INFO">_uuid               : 419e3e41-ddbb-4be3-b539-f4d045a9bbd9
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : false
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : []
status              : {last_error="Connection refused", sec_since_disconnect="5", state=BACKOFF}
target              : "tcp:10.30.170.48:6654"
type                : []

_uuid               : 740cc856-2b97-4888-820d-bf0f9d99a501
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : false
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : []
status              : {last_error="Connection refused", sec_since_disconnect="5", state=BACKOFF}
target              : "tcp:10.30.170.131:6654"
type                : []

_uuid               : bbb4531e-5733-4157-b3f6-ea7bf10a308b
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : false
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : []
status              : {last_error="Connection refused", sec_since_disconnect="5", state=BACKOFF}
target              : "tcp:10.30.171.110:6654"
type                : []
mininet&gt;</msg>
<arg>${cntlstdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:08:43.697801" elapsed="0.000311"/>
</kw>
<kw name="Parse" owner="VsctlListParser">
<msg time="2026-04-08T01:08:43.698757" level="INFO">_uuid:b1f3a25e-4d19-465f-912b-17fe7b1acbdb
auto_attach:[]
controller:[419e3e41-ddbb-4be3-b539-f4d045a9bbd9,740cc856-2b97-4888-820d-bf0f9d99a501,bbb4531e-5733-4157-b3f6-ea7bf10a308b]
datapath_id:"0000000000000001"
datapath_type:""
datapath_version:"&lt;unknown&gt;"
external_ids:{}
fail_mode:standalone
flood_vlans:[]
flow_tables:{}
ipfix:[]
mcast_snooping_enable:false
mirrors:[]
name:s1
netflow:[]
other_config:{datapath-id="0000000000000001",disable-in-band="true",dp-desc=s1}
ports:[079fa24c-466d-4b78-b64c-7669ebd0e515,9e99a58c-a78c-4b0a-b18c-2ef2b895c497]
protocols:[OpenFlow13]
rstp_enable:false
rstp_status:{}
sflow:[]
status:{}
stp_enable:false
_uuid:419e3e41-ddbb-4be3-b539-f4d045a9bbd9
connection_mode:[]
controller_burst_limit:[]
controller_queue_size:[]
controller_rate_limit:[]
enable_async_messages:[]
external_ids:{}
inactivity_probe:[]
is_connected:false
local_gateway:[]
local_ip:[]
local_netmask:[]
max_backoff:[]
other_config:{}
role:[]
status:{last_error="Connectionrefused",sec_since_disconnect="5",state=BACKOFF}
target:"tcp:10.30.170.48:6654"
type:[]
_uuid:740cc856-2b97-4888-820d-bf0f9d99a501
connection_mode:[]
controller_burst_limit:[]
controller_queue_size:[]
controller_rate_limit:[]
enable_async_messages:[]
external_ids:{}
inactivity_probe:[]
is_connected:false
local_gateway:[]
local_ip:[]
local_netmask:[]
max_backoff:[]
other_config:{}
role:[]
status:{last_error="Connectionrefused",sec_since_disconnect="5",state=BACKOFF}
target:"tcp:10.30.170.131:6654"
type:[]
_uuid:bbb4531e-5733-4157-b3f6-ea7bf10a308b
connection_mode:[]
controller_burst_limit:[]
controller_queue_size:[]
controller_rate_limit:[]
enable_async_messages:[]
external_ids:{}
inactivity_probe:[]
is_connected:false
local_gateway:[]
local_ip:[]
local_netmask:[]
max_backoff:[]
other_config:{}
role:[]
status:{last_error="Connectionrefused",sec_since_disconnect="5",state=BACKOFF}
target:"tcp:10.30.171.110:6654"
type:[]</msg>
<msg time="2026-04-08T01:08:43.698929" level="INFO">${data} = {'': {'_uuid': 'b1f3a25e-4d19-465f-912b-17fe7b1acbdb', 'auto_attach': '[]', 'controller': {'10.30.170.48': {'_uuid': '419e3e41-ddbb-4be3-b539-f4d045a9bbd9', 'connection_mode': '[]', 'controller_burst_...</msg>
<msg time="2026-04-08T01:08:43.698986" level="INFO">${bridegs} = {'b1f3a25e-4d19-465f-912b-17fe7b1acbdb': {'_uuid': 'b1f3a25e-4d19-465f-912b-17fe7b1acbdb', 'auto_attach': '[]', 'controller': '[419e3e41-ddbb-4be3-b539-f4d045a9bbd9,740cc856-2b97-4888-820d-bf0f9d99a50...</msg>
<msg time="2026-04-08T01:08:43.699051" level="INFO">${controllers} = {'419e3e41-ddbb-4be3-b539-f4d045a9bbd9': {'_uuid': '419e3e41-ddbb-4be3-b539-f4d045a9bbd9', 'connection_mode': '[]', 'controller_burst_limit': '[]', 'controller_queue_size': '[]', 'controller_rate_limi...</msg>
<var>${data}</var>
<var>${bridegs}</var>
<var>${controllers}</var>
<arg>${brstdout}</arg>
<arg>${cntlstdout}</arg>
<doc>Produces dictionary with data for future usege</doc>
<status status="PASS" start="2026-04-08T01:08:43.698298" elapsed="0.000777"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:08:43.699536" level="INFO">{'': {'_uuid': 'b1f3a25e-4d19-465f-912b-17fe7b1acbdb', 'auto_attach': '[]', 'controller': {'10.30.170.48': {'_uuid': '419e3e41-ddbb-4be3-b539-f4d045a9bbd9', 'connection_mode': '[]', 'controller_burst_limit': '[]', 'controller_queue_size': '[]', 'controller_rate_limit': '[]', 'enable_async_messages': '[]', 'external_ids': '{}', 'inactivity_probe': '[]', 'is_connected': False, 'local_gateway': '[]', 'local_ip': '[]', 'local_netmask': '[]', 'max_backoff': '[]', 'other_config': '{}', 'role': '[]', 'status': '{last_error="Connectionrefused",sec_since_disconnect="5",state=BACKOFF}', 'target': '"tcp:10.30.170.48:6654"', 'type': '[]'}, '10.30.170.131': {'_uuid': '740cc856-2b97-4888-820d-bf0f9d99a501', 'connection_mode': '[]', 'controller_burst_limit': '[]', 'controller_queue_size': '[]', 'controller_rate_limit': '[]', 'enable_async_messages': '[]', 'external_ids': '{}', 'inactivity_probe': '[]', 'is_connected': False, 'local_gateway': '[]', 'local_ip': '[]', 'local_netmask': '[]', 'max_backoff': '[]', 'other_config': '{}', 'role': '[]', 'status': '{last_error="Connectionrefused",sec_since_disconnect="5",state=BACKOFF}', 'target': '"tcp:10.30.170.131:6654"', 'type': '[]'}, '10.30.171.110': {'_uuid': 'bbb4531e-5733-4157-b3f6-ea7bf10a308b', 'connection_mode': '[]', 'controller_burst_limit': '[]', 'controller_queue_size': '[]', 'controller_rate_limit': '[]', 'enable_async_messages': '[]', 'external_ids': '{}', 'inactivity_probe': '[]', 'is_connected': False, 'local_gateway': '[]', 'local_ip': '[]', 'local_netmask': '[]', 'max_backoff': '[]', 'other_config': '{}', 'role': '[]', 'status': '{last_error="Connectionrefused",sec_since_disconnect="5",state=BACKOFF}', 'target': '"tcp:10.30.171.110:6654"', 'type': '[]'}}, 'datapath_id': '"0000000000000001"', 'datapath_type': '""', 'datapath_version': '"&lt;unknown&gt;"', 'external_ids': '{}', 'fail_mode': 'standalone', 'flood_vlans': '[]', 'flow_tables': '{}', 'ipfix': '[]', 'mcast_snooping_enable': 'false', 'mirrors': '[]', 'name': 's1', 'netflow': '[]', 'other_config': '{datapath-id="0000000000000001",disable-in-band="true",dp-desc=s1}', 'ports': '[079fa24c-466d-4b78-b64c-7669ebd0e515,9e99a58c-a78c-4b0a-b18c-2ef2b895c497]', 'protocols': '[OpenFlow13]', 'rstp_enable': 'false', 'rstp_status': '{}', 'sflow': '[]', 'status': '{}', 'stp_enable': 'false'}}</msg>
<arg>${data}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:08:43.699264" elapsed="0.000336"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-08T01:08:43.700236" level="INFO">${ovs_switch_data} = {'': {'_uuid': 'b1f3a25e-4d19-465f-912b-17fe7b1acbdb', 'auto_attach': '[]', 'controller': {'10.30.170.48': {'_uuid': '419e3e41-ddbb-4be3-b539-f4d045a9bbd9', 'connection_mode': '[]', 'controller_burst_...</msg>
<arg>${ovs_switch_data}</arg>
<arg>${data}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-08T01:08:43.699787" elapsed="0.000494"/>
</kw>
<return>
<value>${data}</value>
<status status="PASS" start="2026-04-08T01:08:43.700332" elapsed="0.000045"/>
</return>
<doc>Gets ovs data and parse them.</doc>
<status status="PASS" start="2026-04-08T01:08:43.613893" elapsed="0.086581"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:08:43.701291" level="INFO">${sid} = 1</msg>
<var>${sid}</var>
<arg>${i}+1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:08:43.700892" elapsed="0.000426"/>
</kw>
<kw name="Should Be Connected" owner="OvsManager">
<kw name="OvsManager__Is_Connected" owner="OvsManager">
<if>
<branch type="IF" condition="${update_data}==${True}">
<kw name="Get Ovsdb Data" owner="OvsManager">
<doc>Gets ovs data and parse them.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:43.702822" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:08:43.702495" elapsed="0.000382"/>
</branch>
<status status="PASS" start="2026-04-08T01:08:43.702474" elapsed="0.000428"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:08:43.703497" level="FAIL">Dictionary does not contain key 's1'.</msg>
<var>${bridge}</var>
<arg>${ovs_switch_data}</arg>
<arg>${switch}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="FAIL" start="2026-04-08T01:08:43.703059" elapsed="0.000545">Dictionary does not contain key 's1'.</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${cntls}</var>
<arg>${bridge}</arg>
<arg>controller</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:43.703785" elapsed="0.000045"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${cntl}</var>
<arg>${cntls}</arg>
<arg>${controller}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:43.703991" elapsed="0.000021"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${connected}</var>
<arg>${cntl}</arg>
<arg>is_connected</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:43.704180" elapsed="0.000022"/>
</kw>
<return>
<value>${connected}</value>
<status status="NOT RUN" start="2026-04-08T01:08:43.704247" elapsed="0.000016"/>
</return>
<kw name="Execute OvsVsctl Show Command" owner="OvsManager" type="TEARDOWN">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:08:43.706248" level="INFO">sh ovs-vsctl show</msg>
<arg>${lcmd_prefix} ovs-vsctl show</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:08:43.704842" elapsed="0.001462"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-08T01:08:43.715813" level="INFO">9a5df812-eb49-4477-a37e-2d464c02791d
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.48:6654"
        Controller "tcp:10.30.170.131:6654"
        Controller "tcp:10.30.171.110:6654"
        fail_mode: standalone
        Port s1
            Interface s1
                type: internal
        Port s1-eth1
            Interface s1-eth1
    ovs_version: "2.17.11"
mininet&gt;</msg>
<msg time="2026-04-08T01:08:43.715928" level="INFO">${output} = 9a5df812-eb49-4477-a37e-2d464c02791d
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.48:6654"
        Controller "tcp:10.30.170.131:6654"
        Controller "tcp:10.30.171...</msg>
<var>${output}</var>
<arg>${lprompt}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-08T01:08:43.706472" elapsed="0.009483"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:08:43.716511" level="INFO">9a5df812-eb49-4477-a37e-2d464c02791d
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.48:6654"
        Controller "tcp:10.30.170.131:6654"
        Controller "tcp:10.30.171.110:6654"
        fail_mode: standalone
        Port s1
            Interface s1
                type: internal
        Port s1-eth1
            Interface s1-eth1
    ovs_version: "2.17.11"
mininet&gt;</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:08:43.716224" elapsed="0.000545"/>
</kw>
<doc>Executes ovs-vsctl show command and returns stdout, no check nor change is performed</doc>
<status status="PASS" start="2026-04-08T01:08:43.704518" elapsed="0.012317"/>
</kw>
<var>${connected}</var>
<arg>${switch}</arg>
<arg>${controller}</arg>
<arg>update_data=${update_data}</arg>
<doc>Return is_connected boolean value</doc>
<status status="FAIL" start="2026-04-08T01:08:43.702107" elapsed="0.014803">Dictionary does not contain key 's1'.</status>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${connected}</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:43.717091" elapsed="0.000022"/>
</kw>
<arg>s${sid}</arg>
<arg>${ODL_SYSTEM_1_IP}</arg>
<arg>update_data=${False}</arg>
<doc>Check if the switch is connected</doc>
<status status="FAIL" start="2026-04-08T01:08:43.701535" elapsed="0.015683">Dictionary does not contain key 's1'.</status>
</kw>
<kw name="Should Be Connected" owner="OvsManager">
<arg>s${sid}</arg>
<arg>${ODL_SYSTEM_2_IP}</arg>
<arg>update_data=${False}</arg>
<doc>Check if the switch is connected</doc>
<status status="NOT RUN" start="2026-04-08T01:08:43.717447" elapsed="0.000024"/>
</kw>
<kw name="Should Be Connected" owner="OvsManager">
<arg>s${sid}</arg>
<arg>${ODL_SYSTEM_3_IP}</arg>
<arg>update_data=${False}</arg>
<doc>Check if the switch is connected</doc>
<status status="NOT RUN" start="2026-04-08T01:08:43.717673" elapsed="0.000023"/>
</kw>
<var name="${i}">0</var>
<status status="FAIL" start="2026-04-08T01:08:43.700741" elapsed="0.017008">Dictionary does not contain key 's1'.</status>
</iter>
<var>${i}</var>
<value>0</value>
<value>${SWITCHES}</value>
<status status="FAIL" start="2026-04-08T01:08:43.700529" elapsed="0.017280">Dictionary does not contain key 's1'.</status>
</for>
<doc>Verifies all switches are connected to all cluster nodes</doc>
<status status="FAIL" start="2026-04-08T01:08:43.612847" elapsed="0.105053">Dictionary does not contain key 's1'.</status>
</kw>
<kw name="Check All Switches Connected To All Cluster Nodes">
<kw name="Get Ovsdb Data" owner="OvsManager">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:08:44.723348" level="INFO">sh ovs-vsctl list Bridge</msg>
<arg>${lcmd_prefix} ${SH_BR_CMD}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:08:44.720666" elapsed="0.002783"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-08T01:08:44.769374" level="INFO">_uuid               : b1f3a25e-4d19-465f-912b-17fe7b1acbdb
auto_attach         : []
controller          : [419e3e41-ddbb-4be3-b539-f4d045a9bbd9, 740cc856-2b97-4888-820d-bf0f9d99a501, bbb4531e-5733-4157-b3f6-ea7bf10a308b]
datapath_id         : "0000000000000001"
datapath_type       : ""
datapath_version    : "&lt;unknown&gt;"
external_ids        : {}
fail_mode           : standalone
flood_vlans         : []
flow_tables         : {}
ipfix               : []
mcast_snooping_enable: false
mirrors             : []
name                : s1
netflow             : []
other_config        : {datapath-id="0000000000000001", disable-in-band="true", dp-desc=s1}
ports               : [079fa24c-466d-4b78-b64c-7669ebd0e515, 9e99a58c-a78c-4b0a-b18c-2ef2b895c497]
protocols           : [OpenFlow13]
rstp_enable         : false
rstp_status         : {}
sflow               : []
status              : {}
stp_enable          : false
mininet&gt;</msg>
<msg time="2026-04-08T01:08:44.769497" level="INFO">${brstdout} = _uuid               : b1f3a25e-4d19-465f-912b-17fe7b1acbdb
auto_attach         : []
controller          : [419e3e41-ddbb-4be3-b539-f4d045a9bbd9, 740cc856-2b97-4888-820d-bf0f9d99a501, bbb4531e-5733-4...</msg>
<var>${brstdout}</var>
<arg>${lprompt}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-08T01:08:44.723702" elapsed="0.045825"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:08:44.770211" level="INFO">_uuid               : b1f3a25e-4d19-465f-912b-17fe7b1acbdb
auto_attach         : []
controller          : [419e3e41-ddbb-4be3-b539-f4d045a9bbd9, 740cc856-2b97-4888-820d-bf0f9d99a501, bbb4531e-5733-4157-b3f6-ea7bf10a308b]
datapath_id         : "0000000000000001"
datapath_type       : ""
datapath_version    : "&lt;unknown&gt;"
external_ids        : {}
fail_mode           : standalone
flood_vlans         : []
flow_tables         : {}
ipfix               : []
mcast_snooping_enable: false
mirrors             : []
name                : s1
netflow             : []
other_config        : {datapath-id="0000000000000001", disable-in-band="true", dp-desc=s1}
ports               : [079fa24c-466d-4b78-b64c-7669ebd0e515, 9e99a58c-a78c-4b0a-b18c-2ef2b895c497]
protocols           : [OpenFlow13]
rstp_enable         : false
rstp_status         : {}
sflow               : []
status              : {}
stp_enable          : false
mininet&gt;</msg>
<arg>${brstdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:08:44.769861" elapsed="0.000411"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:08:44.771904" level="INFO">sh ovs-vsctl list Controller</msg>
<arg>${lcmd_prefix} ${SH_CNTL_CMD}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:08:44.770438" elapsed="0.001523"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-08T01:08:44.806288" level="INFO">_uuid               : 419e3e41-ddbb-4be3-b539-f4d045a9bbd9
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : false
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : []
status              : {last_error="Connection refused", sec_since_disconnect="1", state=BACKOFF}
target              : "tcp:10.30.170.48:6654"
type                : []

_uuid               : 740cc856-2b97-4888-820d-bf0f9d99a501
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : false
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : []
status              : {last_error="Connection refused", sec_since_disconnect="1", state=BACKOFF}
target              : "tcp:10.30.170.131:6654"
type                : []

_uuid               : bbb4531e-5733-4157-b3f6-ea7bf10a308b
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : false
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : []
status              : {last_error="Connection refused", sec_since_disconnect="1", state=BACKOFF}
target              : "tcp:10.30.171.110:6654"
type                : []
mininet&gt;</msg>
<msg time="2026-04-08T01:08:44.806401" level="INFO">${cntlstdout} = _uuid               : 419e3e41-ddbb-4be3-b539-f4d045a9bbd9
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
exter...</msg>
<var>${cntlstdout}</var>
<arg>${lprompt}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-08T01:08:44.772130" elapsed="0.034298"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:08:44.806946" level="INFO">_uuid               : 419e3e41-ddbb-4be3-b539-f4d045a9bbd9
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : false
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : []
status              : {last_error="Connection refused", sec_since_disconnect="1", state=BACKOFF}
target              : "tcp:10.30.170.48:6654"
type                : []

_uuid               : 740cc856-2b97-4888-820d-bf0f9d99a501
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : false
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : []
status              : {last_error="Connection refused", sec_since_disconnect="1", state=BACKOFF}
target              : "tcp:10.30.170.131:6654"
type                : []

_uuid               : bbb4531e-5733-4157-b3f6-ea7bf10a308b
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : false
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : []
status              : {last_error="Connection refused", sec_since_disconnect="1", state=BACKOFF}
target              : "tcp:10.30.171.110:6654"
type                : []
mininet&gt;</msg>
<arg>${cntlstdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:08:44.806694" elapsed="0.000315"/>
</kw>
<kw name="Parse" owner="VsctlListParser">
<msg time="2026-04-08T01:08:44.807668" level="INFO">_uuid:b1f3a25e-4d19-465f-912b-17fe7b1acbdb
auto_attach:[]
controller:[419e3e41-ddbb-4be3-b539-f4d045a9bbd9,740cc856-2b97-4888-820d-bf0f9d99a501,bbb4531e-5733-4157-b3f6-ea7bf10a308b]
datapath_id:"0000000000000001"
datapath_type:""
datapath_version:"&lt;unknown&gt;"
external_ids:{}
fail_mode:standalone
flood_vlans:[]
flow_tables:{}
ipfix:[]
mcast_snooping_enable:false
mirrors:[]
name:s1
netflow:[]
other_config:{datapath-id="0000000000000001",disable-in-band="true",dp-desc=s1}
ports:[079fa24c-466d-4b78-b64c-7669ebd0e515,9e99a58c-a78c-4b0a-b18c-2ef2b895c497]
protocols:[OpenFlow13]
rstp_enable:false
rstp_status:{}
sflow:[]
status:{}
stp_enable:false
_uuid:419e3e41-ddbb-4be3-b539-f4d045a9bbd9
connection_mode:[]
controller_burst_limit:[]
controller_queue_size:[]
controller_rate_limit:[]
enable_async_messages:[]
external_ids:{}
inactivity_probe:[]
is_connected:false
local_gateway:[]
local_ip:[]
local_netmask:[]
max_backoff:[]
other_config:{}
role:[]
status:{last_error="Connectionrefused",sec_since_disconnect="1",state=BACKOFF}
target:"tcp:10.30.170.48:6654"
type:[]
_uuid:740cc856-2b97-4888-820d-bf0f9d99a501
connection_mode:[]
controller_burst_limit:[]
controller_queue_size:[]
controller_rate_limit:[]
enable_async_messages:[]
external_ids:{}
inactivity_probe:[]
is_connected:false
local_gateway:[]
local_ip:[]
local_netmask:[]
max_backoff:[]
other_config:{}
role:[]
status:{last_error="Connectionrefused",sec_since_disconnect="1",state=BACKOFF}
target:"tcp:10.30.170.131:6654"
type:[]
_uuid:bbb4531e-5733-4157-b3f6-ea7bf10a308b
connection_mode:[]
controller_burst_limit:[]
controller_queue_size:[]
controller_rate_limit:[]
enable_async_messages:[]
external_ids:{}
inactivity_probe:[]
is_connected:false
local_gateway:[]
local_ip:[]
local_netmask:[]
max_backoff:[]
other_config:{}
role:[]
status:{last_error="Connectionrefused",sec_since_disconnect="1",state=BACKOFF}
target:"tcp:10.30.171.110:6654"
type:[]</msg>
<msg time="2026-04-08T01:08:44.807811" level="INFO">${data} = {'': {'_uuid': 'b1f3a25e-4d19-465f-912b-17fe7b1acbdb', 'auto_attach': '[]', 'controller': {'10.30.170.48': {'_uuid': '419e3e41-ddbb-4be3-b539-f4d045a9bbd9', 'connection_mode': '[]', 'controller_burst_...</msg>
<msg time="2026-04-08T01:08:44.807866" level="INFO">${bridegs} = {'b1f3a25e-4d19-465f-912b-17fe7b1acbdb': {'_uuid': 'b1f3a25e-4d19-465f-912b-17fe7b1acbdb', 'auto_attach': '[]', 'controller': '[419e3e41-ddbb-4be3-b539-f4d045a9bbd9,740cc856-2b97-4888-820d-bf0f9d99a50...</msg>
<msg time="2026-04-08T01:08:44.807930" level="INFO">${controllers} = {'419e3e41-ddbb-4be3-b539-f4d045a9bbd9': {'_uuid': '419e3e41-ddbb-4be3-b539-f4d045a9bbd9', 'connection_mode': '[]', 'controller_burst_limit': '[]', 'controller_queue_size': '[]', 'controller_rate_limi...</msg>
<var>${data}</var>
<var>${bridegs}</var>
<var>${controllers}</var>
<arg>${brstdout}</arg>
<arg>${cntlstdout}</arg>
<doc>Produces dictionary with data for future usege</doc>
<status status="PASS" start="2026-04-08T01:08:44.807196" elapsed="0.000758"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:08:44.808445" level="INFO">{'': {'_uuid': 'b1f3a25e-4d19-465f-912b-17fe7b1acbdb', 'auto_attach': '[]', 'controller': {'10.30.170.48': {'_uuid': '419e3e41-ddbb-4be3-b539-f4d045a9bbd9', 'connection_mode': '[]', 'controller_burst_limit': '[]', 'controller_queue_size': '[]', 'controller_rate_limit': '[]', 'enable_async_messages': '[]', 'external_ids': '{}', 'inactivity_probe': '[]', 'is_connected': False, 'local_gateway': '[]', 'local_ip': '[]', 'local_netmask': '[]', 'max_backoff': '[]', 'other_config': '{}', 'role': '[]', 'status': '{last_error="Connectionrefused",sec_since_disconnect="1",state=BACKOFF}', 'target': '"tcp:10.30.170.48:6654"', 'type': '[]'}, '10.30.170.131': {'_uuid': '740cc856-2b97-4888-820d-bf0f9d99a501', 'connection_mode': '[]', 'controller_burst_limit': '[]', 'controller_queue_size': '[]', 'controller_rate_limit': '[]', 'enable_async_messages': '[]', 'external_ids': '{}', 'inactivity_probe': '[]', 'is_connected': False, 'local_gateway': '[]', 'local_ip': '[]', 'local_netmask': '[]', 'max_backoff': '[]', 'other_config': '{}', 'role': '[]', 'status': '{last_error="Connectionrefused",sec_since_disconnect="1",state=BACKOFF}', 'target': '"tcp:10.30.170.131:6654"', 'type': '[]'}, '10.30.171.110': {'_uuid': 'bbb4531e-5733-4157-b3f6-ea7bf10a308b', 'connection_mode': '[]', 'controller_burst_limit': '[]', 'controller_queue_size': '[]', 'controller_rate_limit': '[]', 'enable_async_messages': '[]', 'external_ids': '{}', 'inactivity_probe': '[]', 'is_connected': False, 'local_gateway': '[]', 'local_ip': '[]', 'local_netmask': '[]', 'max_backoff': '[]', 'other_config': '{}', 'role': '[]', 'status': '{last_error="Connectionrefused",sec_since_disconnect="1",state=BACKOFF}', 'target': '"tcp:10.30.171.110:6654"', 'type': '[]'}}, 'datapath_id': '"0000000000000001"', 'datapath_type': '""', 'datapath_version': '"&lt;unknown&gt;"', 'external_ids': '{}', 'fail_mode': 'standalone', 'flood_vlans': '[]', 'flow_tables': '{}', 'ipfix': '[]', 'mcast_snooping_enable': 'false', 'mirrors': '[]', 'name': 's1', 'netflow': '[]', 'other_config': '{datapath-id="0000000000000001",disable-in-band="true",dp-desc=s1}', 'ports': '[079fa24c-466d-4b78-b64c-7669ebd0e515,9e99a58c-a78c-4b0a-b18c-2ef2b895c497]', 'protocols': '[OpenFlow13]', 'rstp_enable': 'false', 'rstp_status': '{}', 'sflow': '[]', 'status': '{}', 'stp_enable': 'false'}}</msg>
<arg>${data}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:08:44.808134" elapsed="0.000376"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-08T01:08:44.809132" level="INFO">${ovs_switch_data} = {'': {'_uuid': 'b1f3a25e-4d19-465f-912b-17fe7b1acbdb', 'auto_attach': '[]', 'controller': {'10.30.170.48': {'_uuid': '419e3e41-ddbb-4be3-b539-f4d045a9bbd9', 'connection_mode': '[]', 'controller_burst_...</msg>
<arg>${ovs_switch_data}</arg>
<arg>${data}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-08T01:08:44.808689" elapsed="0.000568"/>
</kw>
<return>
<value>${data}</value>
<status status="PASS" start="2026-04-08T01:08:44.809311" elapsed="0.000046"/>
</return>
<doc>Gets ovs data and parse them.</doc>
<status status="PASS" start="2026-04-08T01:08:44.719850" elapsed="0.089613"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:08:44.810274" level="INFO">${sid} = 1</msg>
<var>${sid}</var>
<arg>${i}+1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:08:44.809888" elapsed="0.000413"/>
</kw>
<kw name="Should Be Connected" owner="OvsManager">
<kw name="OvsManager__Is_Connected" owner="OvsManager">
<if>
<branch type="IF" condition="${update_data}==${True}">
<kw name="Get Ovsdb Data" owner="OvsManager">
<doc>Gets ovs data and parse them.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:44.811810" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:08:44.811488" elapsed="0.000377"/>
</branch>
<status status="PASS" start="2026-04-08T01:08:44.811468" elapsed="0.000421"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:08:44.812303" level="FAIL">Dictionary does not contain key 's1'.</msg>
<var>${bridge}</var>
<arg>${ovs_switch_data}</arg>
<arg>${switch}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="FAIL" start="2026-04-08T01:08:44.812042" elapsed="0.000369">Dictionary does not contain key 's1'.</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${cntls}</var>
<arg>${bridge}</arg>
<arg>controller</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:44.812586" elapsed="0.000022"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${cntl}</var>
<arg>${cntls}</arg>
<arg>${controller}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:44.812765" elapsed="0.000020"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${connected}</var>
<arg>${cntl}</arg>
<arg>is_connected</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:44.812942" elapsed="0.000240"/>
</kw>
<return>
<value>${connected}</value>
<status status="NOT RUN" start="2026-04-08T01:08:44.813233" elapsed="0.000016"/>
</return>
<kw name="Execute OvsVsctl Show Command" owner="OvsManager" type="TEARDOWN">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:08:44.815030" level="INFO">sh ovs-vsctl show</msg>
<arg>${lcmd_prefix} ovs-vsctl show</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:08:44.813815" elapsed="0.001269"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-08T01:08:44.824908" level="INFO">9a5df812-eb49-4477-a37e-2d464c02791d
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.48:6654"
        Controller "tcp:10.30.170.131:6654"
        Controller "tcp:10.30.171.110:6654"
        fail_mode: standalone
        Port s1
            Interface s1
                type: internal
        Port s1-eth1
            Interface s1-eth1
    ovs_version: "2.17.11"
mininet&gt;</msg>
<msg time="2026-04-08T01:08:44.825002" level="INFO">${output} = 9a5df812-eb49-4477-a37e-2d464c02791d
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.48:6654"
        Controller "tcp:10.30.170.131:6654"
        Controller "tcp:10.30.171...</msg>
<var>${output}</var>
<arg>${lprompt}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-08T01:08:44.815269" elapsed="0.009759"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:08:44.825493" level="INFO">9a5df812-eb49-4477-a37e-2d464c02791d
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.48:6654"
        Controller "tcp:10.30.170.131:6654"
        Controller "tcp:10.30.171.110:6654"
        fail_mode: standalone
        Port s1
            Interface s1
                type: internal
        Port s1-eth1
            Interface s1-eth1
    ovs_version: "2.17.11"
mininet&gt;</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:08:44.825244" elapsed="0.000298"/>
</kw>
<doc>Executes ovs-vsctl show command and returns stdout, no check nor change is performed</doc>
<status status="PASS" start="2026-04-08T01:08:44.813510" elapsed="0.012086"/>
</kw>
<var>${connected}</var>
<arg>${switch}</arg>
<arg>${controller}</arg>
<arg>update_data=${update_data}</arg>
<doc>Return is_connected boolean value</doc>
<status status="FAIL" start="2026-04-08T01:08:44.811100" elapsed="0.014570">Dictionary does not contain key 's1'.</status>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${connected}</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:44.825849" elapsed="0.000021"/>
</kw>
<arg>s${sid}</arg>
<arg>${ODL_SYSTEM_1_IP}</arg>
<arg>update_data=${False}</arg>
<doc>Check if the switch is connected</doc>
<status status="FAIL" start="2026-04-08T01:08:44.810520" elapsed="0.015433">Dictionary does not contain key 's1'.</status>
</kw>
<kw name="Should Be Connected" owner="OvsManager">
<arg>s${sid}</arg>
<arg>${ODL_SYSTEM_2_IP}</arg>
<arg>update_data=${False}</arg>
<doc>Check if the switch is connected</doc>
<status status="NOT RUN" start="2026-04-08T01:08:44.826213" elapsed="0.000026"/>
</kw>
<kw name="Should Be Connected" owner="OvsManager">
<arg>s${sid}</arg>
<arg>${ODL_SYSTEM_3_IP}</arg>
<arg>update_data=${False}</arg>
<doc>Check if the switch is connected</doc>
<status status="NOT RUN" start="2026-04-08T01:08:44.826446" elapsed="0.000022"/>
</kw>
<var name="${i}">0</var>
<status status="FAIL" start="2026-04-08T01:08:44.809735" elapsed="0.016786">Dictionary does not contain key 's1'.</status>
</iter>
<var>${i}</var>
<value>0</value>
<value>${SWITCHES}</value>
<status status="FAIL" start="2026-04-08T01:08:44.809517" elapsed="0.017062">Dictionary does not contain key 's1'.</status>
</for>
<doc>Verifies all switches are connected to all cluster nodes</doc>
<status status="FAIL" start="2026-04-08T01:08:44.718702" elapsed="0.107968">Dictionary does not contain key 's1'.</status>
</kw>
<kw name="Check All Switches Connected To All Cluster Nodes">
<kw name="Get Ovsdb Data" owner="OvsManager">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:08:45.832462" level="INFO">sh ovs-vsctl list Bridge</msg>
<arg>${lcmd_prefix} ${SH_BR_CMD}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:08:45.829514" elapsed="0.003096"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-08T01:08:45.887979" level="INFO">_uuid               : b1f3a25e-4d19-465f-912b-17fe7b1acbdb
auto_attach         : []
controller          : [419e3e41-ddbb-4be3-b539-f4d045a9bbd9, 740cc856-2b97-4888-820d-bf0f9d99a501, bbb4531e-5733-4157-b3f6-ea7bf10a308b]
datapath_id         : "0000000000000001"
datapath_type       : ""
datapath_version    : "&lt;unknown&gt;"
external_ids        : {}
fail_mode           : standalone
flood_vlans         : []
flow_tables         : {}
ipfix               : []
mcast_snooping_enable: false
mirrors             : []
name                : s1
netflow             : []
other_config        : {datapath-id="0000000000000001", disable-in-band="true", dp-desc=s1}
ports               : [079fa24c-466d-4b78-b64c-7669ebd0e515, 9e99a58c-a78c-4b0a-b18c-2ef2b895c497]
protocols           : [OpenFlow13]
rstp_enable         : false
rstp_status         : {}
sflow               : []
status              : {}
stp_enable          : false
mininet&gt;</msg>
<msg time="2026-04-08T01:08:45.888395" level="INFO">${brstdout} = _uuid               : b1f3a25e-4d19-465f-912b-17fe7b1acbdb
auto_attach         : []
controller          : [419e3e41-ddbb-4be3-b539-f4d045a9bbd9, 740cc856-2b97-4888-820d-bf0f9d99a501, bbb4531e-5733-4...</msg>
<var>${brstdout}</var>
<arg>${lprompt}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-08T01:08:45.833007" elapsed="0.055431"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:08:45.889362" level="INFO">_uuid               : b1f3a25e-4d19-465f-912b-17fe7b1acbdb
auto_attach         : []
controller          : [419e3e41-ddbb-4be3-b539-f4d045a9bbd9, 740cc856-2b97-4888-820d-bf0f9d99a501, bbb4531e-5733-4157-b3f6-ea7bf10a308b]
datapath_id         : "0000000000000001"
datapath_type       : ""
datapath_version    : "&lt;unknown&gt;"
external_ids        : {}
fail_mode           : standalone
flood_vlans         : []
flow_tables         : {}
ipfix               : []
mcast_snooping_enable: false
mirrors             : []
name                : s1
netflow             : []
other_config        : {datapath-id="0000000000000001", disable-in-band="true", dp-desc=s1}
ports               : [079fa24c-466d-4b78-b64c-7669ebd0e515, 9e99a58c-a78c-4b0a-b18c-2ef2b895c497]
protocols           : [OpenFlow13]
rstp_enable         : false
rstp_status         : {}
sflow               : []
status              : {}
stp_enable          : false
mininet&gt;</msg>
<arg>${brstdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:08:45.888863" elapsed="0.000581"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:08:45.891391" level="INFO">sh ovs-vsctl list Controller</msg>
<arg>${lcmd_prefix} ${SH_CNTL_CMD}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:08:45.889693" elapsed="0.001775"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-08T01:08:45.925126" level="INFO">_uuid               : 419e3e41-ddbb-4be3-b539-f4d045a9bbd9
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : false
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : []
status              : {last_error="Connection refused", sec_since_disconnect="1", state=BACKOFF}
target              : "tcp:10.30.170.48:6654"
type                : []

_uuid               : 740cc856-2b97-4888-820d-bf0f9d99a501
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : false
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : []
status              : {last_error="Connection refused", sec_since_disconnect="1", state=BACKOFF}
target              : "tcp:10.30.170.131:6654"
type                : []

_uuid               : bbb4531e-5733-4157-b3f6-ea7bf10a308b
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : false
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : []
status              : {last_error="Connection refused", sec_since_disconnect="1", state=BACKOFF}
target              : "tcp:10.30.171.110:6654"
type                : []
mininet&gt;</msg>
<msg time="2026-04-08T01:08:45.925252" level="INFO">${cntlstdout} = _uuid               : 419e3e41-ddbb-4be3-b539-f4d045a9bbd9
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
exter...</msg>
<var>${cntlstdout}</var>
<arg>${lprompt}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-08T01:08:45.891704" elapsed="0.033577"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:08:45.925741" level="INFO">_uuid               : 419e3e41-ddbb-4be3-b539-f4d045a9bbd9
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : false
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : []
status              : {last_error="Connection refused", sec_since_disconnect="1", state=BACKOFF}
target              : "tcp:10.30.170.48:6654"
type                : []

_uuid               : 740cc856-2b97-4888-820d-bf0f9d99a501
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : false
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : []
status              : {last_error="Connection refused", sec_since_disconnect="1", state=BACKOFF}
target              : "tcp:10.30.170.131:6654"
type                : []

_uuid               : bbb4531e-5733-4157-b3f6-ea7bf10a308b
connection_mode     : []
controller_burst_limit: []
controller_queue_size: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : false
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : []
other_config        : {}
role                : []
status              : {last_error="Connection refused", sec_since_disconnect="1", state=BACKOFF}
target              : "tcp:10.30.171.110:6654"
type                : []
mininet&gt;</msg>
<arg>${cntlstdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:08:45.925485" elapsed="0.000318"/>
</kw>
<kw name="Parse" owner="VsctlListParser">
<msg time="2026-04-08T01:08:45.926488" level="INFO">_uuid:b1f3a25e-4d19-465f-912b-17fe7b1acbdb
auto_attach:[]
controller:[419e3e41-ddbb-4be3-b539-f4d045a9bbd9,740cc856-2b97-4888-820d-bf0f9d99a501,bbb4531e-5733-4157-b3f6-ea7bf10a308b]
datapath_id:"0000000000000001"
datapath_type:""
datapath_version:"&lt;unknown&gt;"
external_ids:{}
fail_mode:standalone
flood_vlans:[]
flow_tables:{}
ipfix:[]
mcast_snooping_enable:false
mirrors:[]
name:s1
netflow:[]
other_config:{datapath-id="0000000000000001",disable-in-band="true",dp-desc=s1}
ports:[079fa24c-466d-4b78-b64c-7669ebd0e515,9e99a58c-a78c-4b0a-b18c-2ef2b895c497]
protocols:[OpenFlow13]
rstp_enable:false
rstp_status:{}
sflow:[]
status:{}
stp_enable:false
_uuid:419e3e41-ddbb-4be3-b539-f4d045a9bbd9
connection_mode:[]
controller_burst_limit:[]
controller_queue_size:[]
controller_rate_limit:[]
enable_async_messages:[]
external_ids:{}
inactivity_probe:[]
is_connected:false
local_gateway:[]
local_ip:[]
local_netmask:[]
max_backoff:[]
other_config:{}
role:[]
status:{last_error="Connectionrefused",sec_since_disconnect="1",state=BACKOFF}
target:"tcp:10.30.170.48:6654"
type:[]
_uuid:740cc856-2b97-4888-820d-bf0f9d99a501
connection_mode:[]
controller_burst_limit:[]
controller_queue_size:[]
controller_rate_limit:[]
enable_async_messages:[]
external_ids:{}
inactivity_probe:[]
is_connected:false
local_gateway:[]
local_ip:[]
local_netmask:[]
max_backoff:[]
other_config:{}
role:[]
status:{last_error="Connectionrefused",sec_since_disconnect="1",state=BACKOFF}
target:"tcp:10.30.170.131:6654"
type:[]
_uuid:bbb4531e-5733-4157-b3f6-ea7bf10a308b
connection_mode:[]
controller_burst_limit:[]
controller_queue_size:[]
controller_rate_limit:[]
enable_async_messages:[]
external_ids:{}
inactivity_probe:[]
is_connected:false
local_gateway:[]
local_ip:[]
local_netmask:[]
max_backoff:[]
other_config:{}
role:[]
status:{last_error="Connectionrefused",sec_since_disconnect="1",state=BACKOFF}
target:"tcp:10.30.171.110:6654"
type:[]</msg>
<msg time="2026-04-08T01:08:45.926676" level="INFO">${data} = {'': {'_uuid': 'b1f3a25e-4d19-465f-912b-17fe7b1acbdb', 'auto_attach': '[]', 'controller': {'10.30.170.48': {'_uuid': '419e3e41-ddbb-4be3-b539-f4d045a9bbd9', 'connection_mode': '[]', 'controller_burst_...</msg>
<msg time="2026-04-08T01:08:45.926735" level="INFO">${bridegs} = {'b1f3a25e-4d19-465f-912b-17fe7b1acbdb': {'_uuid': 'b1f3a25e-4d19-465f-912b-17fe7b1acbdb', 'auto_attach': '[]', 'controller': '[419e3e41-ddbb-4be3-b539-f4d045a9bbd9,740cc856-2b97-4888-820d-bf0f9d99a50...</msg>
<msg time="2026-04-08T01:08:45.926804" level="INFO">${controllers} = {'419e3e41-ddbb-4be3-b539-f4d045a9bbd9': {'_uuid': '419e3e41-ddbb-4be3-b539-f4d045a9bbd9', 'connection_mode': '[]', 'controller_burst_limit': '[]', 'controller_queue_size': '[]', 'controller_rate_limi...</msg>
<var>${data}</var>
<var>${bridegs}</var>
<var>${controllers}</var>
<arg>${brstdout}</arg>
<arg>${cntlstdout}</arg>
<doc>Produces dictionary with data for future usege</doc>
<status status="PASS" start="2026-04-08T01:08:45.925970" elapsed="0.000859"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:08:45.927297" level="INFO">{'': {'_uuid': 'b1f3a25e-4d19-465f-912b-17fe7b1acbdb', 'auto_attach': '[]', 'controller': {'10.30.170.48': {'_uuid': '419e3e41-ddbb-4be3-b539-f4d045a9bbd9', 'connection_mode': '[]', 'controller_burst_limit': '[]', 'controller_queue_size': '[]', 'controller_rate_limit': '[]', 'enable_async_messages': '[]', 'external_ids': '{}', 'inactivity_probe': '[]', 'is_connected': False, 'local_gateway': '[]', 'local_ip': '[]', 'local_netmask': '[]', 'max_backoff': '[]', 'other_config': '{}', 'role': '[]', 'status': '{last_error="Connectionrefused",sec_since_disconnect="1",state=BACKOFF}', 'target': '"tcp:10.30.170.48:6654"', 'type': '[]'}, '10.30.170.131': {'_uuid': '740cc856-2b97-4888-820d-bf0f9d99a501', 'connection_mode': '[]', 'controller_burst_limit': '[]', 'controller_queue_size': '[]', 'controller_rate_limit': '[]', 'enable_async_messages': '[]', 'external_ids': '{}', 'inactivity_probe': '[]', 'is_connected': False, 'local_gateway': '[]', 'local_ip': '[]', 'local_netmask': '[]', 'max_backoff': '[]', 'other_config': '{}', 'role': '[]', 'status': '{last_error="Connectionrefused",sec_since_disconnect="1",state=BACKOFF}', 'target': '"tcp:10.30.170.131:6654"', 'type': '[]'}, '10.30.171.110': {'_uuid': 'bbb4531e-5733-4157-b3f6-ea7bf10a308b', 'connection_mode': '[]', 'controller_burst_limit': '[]', 'controller_queue_size': '[]', 'controller_rate_limit': '[]', 'enable_async_messages': '[]', 'external_ids': '{}', 'inactivity_probe': '[]', 'is_connected': False, 'local_gateway': '[]', 'local_ip': '[]', 'local_netmask': '[]', 'max_backoff': '[]', 'other_config': '{}', 'role': '[]', 'status': '{last_error="Connectionrefused",sec_since_disconnect="1",state=BACKOFF}', 'target': '"tcp:10.30.171.110:6654"', 'type': '[]'}}, 'datapath_id': '"0000000000000001"', 'datapath_type': '""', 'datapath_version': '"&lt;unknown&gt;"', 'external_ids': '{}', 'fail_mode': 'standalone', 'flood_vlans': '[]', 'flow_tables': '{}', 'ipfix': '[]', 'mcast_snooping_enable': 'false', 'mirrors': '[]', 'name': 's1', 'netflow': '[]', 'other_config': '{datapath-id="0000000000000001",disable-in-band="true",dp-desc=s1}', 'ports': '[079fa24c-466d-4b78-b64c-7669ebd0e515,9e99a58c-a78c-4b0a-b18c-2ef2b895c497]', 'protocols': '[OpenFlow13]', 'rstp_enable': 'false', 'rstp_status': '{}', 'sflow': '[]', 'status': '{}', 'stp_enable': 'false'}}</msg>
<arg>${data}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:08:45.927006" elapsed="0.000354"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-08T01:08:45.927991" level="INFO">${ovs_switch_data} = {'': {'_uuid': 'b1f3a25e-4d19-465f-912b-17fe7b1acbdb', 'auto_attach': '[]', 'controller': {'10.30.170.48': {'_uuid': '419e3e41-ddbb-4be3-b539-f4d045a9bbd9', 'connection_mode': '[]', 'controller_burst_...</msg>
<arg>${ovs_switch_data}</arg>
<arg>${data}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-08T01:08:45.927539" elapsed="0.000495"/>
</kw>
<return>
<value>${data}</value>
<status status="PASS" start="2026-04-08T01:08:45.928086" elapsed="0.000051"/>
</return>
<doc>Gets ovs data and parse them.</doc>
<status status="PASS" start="2026-04-08T01:08:45.828642" elapsed="0.099624"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:08:45.929046" level="INFO">${sid} = 1</msg>
<var>${sid}</var>
<arg>${i}+1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:08:45.928706" elapsed="0.000367"/>
</kw>
<kw name="Should Be Connected" owner="OvsManager">
<kw name="OvsManager__Is_Connected" owner="OvsManager">
<if>
<branch type="IF" condition="${update_data}==${True}">
<kw name="Get Ovsdb Data" owner="OvsManager">
<doc>Gets ovs data and parse them.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:45.930684" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:08:45.930328" elapsed="0.000410"/>
</branch>
<status status="PASS" start="2026-04-08T01:08:45.930306" elapsed="0.000458"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:08:45.931142" level="FAIL">Dictionary does not contain key 's1'.</msg>
<var>${bridge}</var>
<arg>${ovs_switch_data}</arg>
<arg>${switch}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="FAIL" start="2026-04-08T01:08:45.930917" elapsed="0.000369">Dictionary does not contain key 's1'.</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${cntls}</var>
<arg>${bridge}</arg>
<arg>controller</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:45.931465" elapsed="0.000021"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${cntl}</var>
<arg>${cntls}</arg>
<arg>${controller}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:45.931644" elapsed="0.000020"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${connected}</var>
<arg>${cntl}</arg>
<arg>is_connected</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:45.931818" elapsed="0.000020"/>
</kw>
<return>
<value>${connected}</value>
<status status="NOT RUN" start="2026-04-08T01:08:45.931882" elapsed="0.000015"/>
</return>
<kw name="Execute OvsVsctl Show Command" owner="OvsManager" type="TEARDOWN">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:08:45.934479" level="INFO">sh ovs-vsctl show</msg>
<arg>${lcmd_prefix} ovs-vsctl show</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:08:45.932706" elapsed="0.001869"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-08T01:08:45.944431" level="INFO">9a5df812-eb49-4477-a37e-2d464c02791d
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.48:6654"
        Controller "tcp:10.30.170.131:6654"
        Controller "tcp:10.30.171.110:6654"
        fail_mode: standalone
        Port s1
            Interface s1
                type: internal
        Port s1-eth1
            Interface s1-eth1
    ovs_version: "2.17.11"
mininet&gt;</msg>
<msg time="2026-04-08T01:08:45.944527" level="INFO">${output} = 9a5df812-eb49-4477-a37e-2d464c02791d
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.48:6654"
        Controller "tcp:10.30.170.131:6654"
        Controller "tcp:10.30.171...</msg>
<var>${output}</var>
<arg>${lprompt}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-08T01:08:45.934758" elapsed="0.009795"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:08:45.945005" level="INFO">9a5df812-eb49-4477-a37e-2d464c02791d
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.48:6654"
        Controller "tcp:10.30.170.131:6654"
        Controller "tcp:10.30.171.110:6654"
        fail_mode: standalone
        Port s1
            Interface s1
                type: internal
        Port s1-eth1
            Interface s1-eth1
    ovs_version: "2.17.11"
mininet&gt;</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:08:45.944753" elapsed="0.000337"/>
</kw>
<doc>Executes ovs-vsctl show command and returns stdout, no check nor change is performed</doc>
<status status="PASS" start="2026-04-08T01:08:45.932187" elapsed="0.012961"/>
</kw>
<var>${connected}</var>
<arg>${switch}</arg>
<arg>${controller}</arg>
<arg>update_data=${update_data}</arg>
<doc>Return is_connected boolean value</doc>
<status status="FAIL" start="2026-04-08T01:08:45.929935" elapsed="0.015314">Dictionary does not contain key 's1'.</status>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${connected}</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:45.945429" elapsed="0.000021"/>
</kw>
<arg>s${sid}</arg>
<arg>${ODL_SYSTEM_1_IP}</arg>
<arg>update_data=${False}</arg>
<doc>Check if the switch is connected</doc>
<status status="FAIL" start="2026-04-08T01:08:45.929325" elapsed="0.016209">Dictionary does not contain key 's1'.</status>
</kw>
<kw name="Should Be Connected" owner="OvsManager">
<arg>s${sid}</arg>
<arg>${ODL_SYSTEM_2_IP}</arg>
<arg>update_data=${False}</arg>
<doc>Check if the switch is connected</doc>
<status status="NOT RUN" start="2026-04-08T01:08:45.945754" elapsed="0.000023"/>
</kw>
<kw name="Should Be Connected" owner="OvsManager">
<arg>s${sid}</arg>
<arg>${ODL_SYSTEM_3_IP}</arg>
<arg>update_data=${False}</arg>
<doc>Check if the switch is connected</doc>
<status status="NOT RUN" start="2026-04-08T01:08:45.945979" elapsed="0.000023"/>
</kw>
<var name="${i}">0</var>
<status status="FAIL" start="2026-04-08T01:08:45.928554" elapsed="0.017501">Dictionary does not contain key 's1'.</status>
</iter>
<var>${i}</var>
<value>0</value>
<value>${SWITCHES}</value>
<status status="FAIL" start="2026-04-08T01:08:45.928324" elapsed="0.017788">Dictionary does not contain key 's1'.</status>
</for>
<doc>Verifies all switches are connected to all cluster nodes</doc>
<status status="FAIL" start="2026-04-08T01:08:45.827496" elapsed="0.118728">Dictionary does not contain key 's1'.</status>
</kw>
<msg time="2026-04-08T01:08:45.946311" level="FAIL">Keyword 'Check All Switches Connected To All Cluster Nodes' failed after retrying 15 times. The last error was: Dictionary does not contain key 's1'.</msg>
<arg>15x</arg>
<arg>1s</arg>
<arg>Check All Switches Connected To All Cluster Nodes</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="FAIL" start="2026-04-08T01:08:30.365229" elapsed="15.581174">Keyword 'Check All Switches Connected To All Cluster Nodes' failed after retrying 15 times. The last error was: Dictionary does not contain key 's1'.</status>
</kw>
<kw name="Report Failure Due To Bug" owner="Utils" type="TEARDOWN">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:08:45.947637" level="INFO">${test_skipped} = False</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:08:45.947219" elapsed="0.000445"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="NOT RUN" start="2026-04-08T01:08:45.947880" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:08:45.947738" elapsed="0.000181"/>
</branch>
<status status="PASS" start="2026-04-08T01:08:45.947720" elapsed="0.000220"/>
</if>
<kw name="Comment" owner="BuiltIn">
<arg>Jira tickets are {PROJECT}-{NUMBER} while Bugzilla tickets are {NUMBER}</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:08:45.948126" elapsed="0.000228"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="Should Contain" owner="BuiltIn">
<msg time="2026-04-08T01:08:45.949283" level="FAIL">'6177' does not contain '-'</msg>
<arg>${number}</arg>
<arg>-</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="FAIL" start="2026-04-08T01:08:45.948913" elapsed="0.000430">'6177' does not contain '-'</status>
</kw>
<msg time="2026-04-08T01:08:45.949433" level="INFO">${match} = False</msg>
<var>${match}</var>
<arg>Should Contain</arg>
<arg>${number}</arg>
<arg>-</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T01:08:45.948526" elapsed="0.000931"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:08:45.949965" level="INFO">${bug_url} = https://bugs.opendaylight.org/show_bug.cgi?id=6177</msg>
<var>${bug_url}</var>
<arg>${match}</arg>
<arg>https://jira.opendaylight.org/browse/${number}</arg>
<arg>https://bugs.opendaylight.org/show_bug.cgi?id=${number}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:08:45.949635" elapsed="0.000355"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:08:45.950470" level="INFO">${msg} = This test fails due to https://bugs.opendaylight.org/show_bug.cgi?id=6177</msg>
<var>${msg}</var>
<arg>This test fails due to ${bug_url}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:08:45.950177" elapsed="0.000319"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:08:45.951029" level="INFO">${newline} = 
</msg>
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:08:45.950662" elapsed="0.000393"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<msg time="2026-04-08T01:08:45.951593" level="INFO">Set test message to:
This test fails due to https://bugs.opendaylight.org/show_bug.cgi?id=6177

Keyword 'Check All Switches Connected To All Cluster Nodes' failed after retrying 15 times. The last error was: Dictionary does not contain key 's1'.</msg>
<arg>${msg}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="PASS" start="2026-04-08T01:08:45.951234" elapsed="0.000405"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:08:45.952034" level="INFO">This test fails due to https://bugs.opendaylight.org/show_bug.cgi?id=6177</msg>
<arg>${msg}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:08:45.951800" elapsed="0.000277"/>
</kw>
<if>
<branch type="IF" condition="&quot;${include_bug_in_tags}&quot;==&quot;True&quot;">
<kw name="Set Tags" owner="BuiltIn">
<msg time="2026-04-08T01:08:45.952774" level="INFO">Set tag 'https://bugs.opendaylight.org/show_bug.cgi?id=6177'.</msg>
<arg>${bug_url}</arg>
<doc>Adds given ``tags`` for the current test or all tests in a suite.</doc>
<status status="PASS" start="2026-04-08T01:08:45.952426" elapsed="0.000395"/>
</kw>
<status status="PASS" start="2026-04-08T01:08:45.952143" elapsed="0.000710"/>
</branch>
<status status="PASS" start="2026-04-08T01:08:45.952125" elapsed="0.000752"/>
</if>
<arg>6177</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-04-08T01:08:45.946842" elapsed="0.006084"/>
</kw>
<tag>https://bugs.opendaylight.org/show_bug.cgi?id=6177</tag>
<status status="FAIL" start="2026-04-08T01:08:30.004473" elapsed="15.948498">This test fails due to https://bugs.opendaylight.org/show_bug.cgi?id=6177

Keyword 'Check All Switches Connected To All Cluster Nodes' failed after retrying 15 times. The last error was: Dictionary does not contain key 's1'.</status>
</test>
<test id="s1-s7-t5" name="Stop Mininet And Verify No Owners" line="66">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-08T01:08:45.956850" elapsed="0.000209"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-08T01:08:45.956573" elapsed="0.000540"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:08:45.958121" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:08:45.958011" elapsed="0.000173"/>
</branch>
<status status="PASS" start="2026-04-08T01:08:45.957992" elapsed="0.000216"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:08:45.963284" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:08:45.963158" elapsed="0.000171"/>
</branch>
<status status="PASS" start="2026-04-08T01:08:45.963139" elapsed="0.000213"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:08:45.964372" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:08:45.963975" elapsed="0.000423"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:08:45.964868" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:08:45.964569" elapsed="0.000324"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T01:08:45.964936" elapsed="0.000033"/>
</return>
<msg time="2026-04-08T01:08:45.965093" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T01:08:45.963593" elapsed="0.001525"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:08:45.970439" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:08:45.970332" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-08T01:08:45.970313" elapsed="0.000193"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:08:45.971767" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:08:45.971659" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-08T01:08:45.971641" elapsed="0.000194"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:08:45.972316" level="INFO">${karaf_connection_index} = 655</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:08:45.971992" elapsed="0.000352"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:08:45.972794" level="INFO">${current_connection_index} = 667</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:08:45.972518" elapsed="0.000302"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:08:46.007459" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:08:45.973362" elapsed="0.034202"/>
</kw>
<msg time="2026-04-08T01:08:46.007728" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T01:08:46.007775" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:08:45.972991" elapsed="0.034820"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T01:08:46.055041" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "3 "0 "[C "C "l "u "s "t "e "r "[C "S "y "n "c "[C "P "r "o "b "l "e "m "s ". "S "t "o "p "[C "M "i "n "i "n "e "t "[C "A "n "d "[C "V "e "r "i "f "y "[C "N "o "[C "O "w "n "e "r "s "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T01:08:46.008380" elapsed="0.046772"/>
</kw>
<msg time="2026-04-08T01:08:46.055335" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T01:08:46.055381" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "3 "0 "[C "C "l "u "s "t "e "r "[C "S "y "n "c "[C "P "r "o "b "l "e "m "s ". "S "t...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:08:46.007997" elapsed="0.047419"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:46.055741" elapsed="0.000048"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:08:46.055499" elapsed="0.000324"/>
</branch>
<status status="PASS" start="2026-04-08T01:08:46.055477" elapsed="0.000372"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:08:46.056325" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "3 "0 "[C "C "l "u "s "t "e "r "[C "S "y "n "c "[C "P "r "o "b "l "e "m "s ". "S "t "o "p "[C "M "i "n "i "n "e "t "[C "A "n "d "[C "V "e "r "i "f "y "[C "N "o "[C "O "w "n "e "r "s "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:08:46.056006" elapsed="0.000448"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:46.056756" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:08:46.056524" elapsed="0.000286"/>
</branch>
<status status="PASS" start="2026-04-08T01:08:46.056505" elapsed="0.000329"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T01:08:46.056868" elapsed="0.000033"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:08:46.059515" elapsed="0.000198"/>
</kw>
<msg time="2026-04-08T01:08:46.059774" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:08:46.058415" elapsed="0.001526"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:46.060246" elapsed="0.000309"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:46.060830" elapsed="0.000075"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:08:46.057769" elapsed="0.003245"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T01:08:46.057213" elapsed="0.003866"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T01:08:45.971354" elapsed="0.089849"/>
</kw>
<msg time="2026-04-08T01:08:46.061296" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:08:46.061340" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "3 "0 "[C "C "l "u "s "t "e "r "[C "S "y "n "c "[C "P "r "o "b "l "e "m "s ". "S "t...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:08:45.970666" elapsed="0.090710"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T01:08:46.061559" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-08T01:08:46.061452" elapsed="0.000164"/>
</branch>
<status status="PASS" start="2026-04-08T01:08:46.061434" elapsed="0.000206"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:46.062043" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:46.062402" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T01:08:46.062473" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T01:08:45.969983" elapsed="0.092596"/>
</kw>
<msg time="2026-04-08T01:08:46.062670" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:08:46.062713" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "3 "0 "[C "C "l "u "s "t "e "r "[C "S "y "n "c "[C "P "r "o "b "l "e "m "s ". "S "t...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:08:45.965513" elapsed="0.097235"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:46.063080" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:08:46.062823" elapsed="0.000310"/>
</branch>
<status status="PASS" start="2026-04-08T01:08:46.062806" elapsed="0.000353"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T01:08:45.965361" elapsed="0.097836"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:08:46.068635" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:08:46.068527" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-08T01:08:46.068509" elapsed="0.000193"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:08:46.069869" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:08:46.069761" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-08T01:08:46.069743" elapsed="0.000194"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:08:46.070416" level="INFO">${karaf_connection_index} = 657</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:08:46.070091" elapsed="0.000352"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:08:46.070871" level="INFO">${current_connection_index} = 667</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:08:46.070612" elapsed="0.000285"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:08:46.111873" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:08:46.071436" elapsed="0.041057"/>
</kw>
<msg time="2026-04-08T01:08:46.112965" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T01:08:46.113076" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:08:46.071068" elapsed="0.042163"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T01:08:46.164416" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "3 "0 "[C "C "l "u "s "t "e "r "[C "S "y "n "c "[C "P "r "o "b "l "e "m "s ". "S "t "o "p "[C "M "i "n "i "n "e "t "[C "A "n "d "[C "V "e "r "i "f "y "[C "N "o "[C "O "w "n "e "r "s "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T01:08:46.114807" elapsed="0.049726"/>
</kw>
<msg time="2026-04-08T01:08:46.164693" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T01:08:46.164740" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "3 "0 "[C "C "l "u "s "t "e "r "[C "S "y "n "c "[C "P "r "o "b "l "e "m "s ". "S "t...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:08:46.113780" elapsed="0.050995"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:46.165230" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:08:46.164914" elapsed="0.000376"/>
</branch>
<status status="PASS" start="2026-04-08T01:08:46.164879" elapsed="0.000442"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:08:46.165802" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "3 "0 "[C "C "l "u "s "t "e "r "[C "S "y "n "c "[C "P "r "o "b "l "e "m "s ". "S "t "o "p "[C "M "i "n "i "n "e "t "[C "A "n "d "[C "V "e "r "i "f "y "[C "N "o "[C "O "w "n "e "r "s "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:08:46.165483" elapsed="0.000398"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:46.166200" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:08:46.165949" elapsed="0.000307"/>
</branch>
<status status="PASS" start="2026-04-08T01:08:46.165930" elapsed="0.000350"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T01:08:46.166319" elapsed="0.000044"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:08:46.169268" elapsed="0.000211"/>
</kw>
<msg time="2026-04-08T01:08:46.169544" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:08:46.168042" elapsed="0.001642"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:46.169976" elapsed="0.000076"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:46.170350" elapsed="0.000223"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:08:46.167370" elapsed="0.003322"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T01:08:46.166705" elapsed="0.004054"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T01:08:46.069460" elapsed="0.101405"/>
</kw>
<msg time="2026-04-08T01:08:46.170964" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:08:46.171009" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "3 "0 "[C "C "l "u "s "t "e "r "[C "S "y "n "c "[C "P "r "o "b "l "e "m "s ". "S "t...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:08:46.068864" elapsed="0.102184"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T01:08:46.171260" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-08T01:08:46.171130" elapsed="0.000190"/>
</branch>
<status status="PASS" start="2026-04-08T01:08:46.171110" elapsed="0.000234"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 2,
close the previous connection. In any case create a new connection
to karaf console for 2, set correct prompt set and login to karaf console.
Store connection index for 2 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:46.172040" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:46.172413" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T01:08:46.172485" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T01:08:46.068090" elapsed="0.104502"/>
</kw>
<msg time="2026-04-08T01:08:46.172690" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:08:46.172734" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "3 "0 "[C "C "l "u "s "t "e "r "[C "S "y "n "c "[C "P "r "o "b "l "e "m "s ". "S "t...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:08:46.063472" elapsed="0.109342"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:46.173222" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:08:46.172894" elapsed="0.000384"/>
</branch>
<status status="PASS" start="2026-04-08T01:08:46.172877" elapsed="0.000425"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T01:08:46.063321" elapsed="0.110005"/>
</iter>
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:08:46.178852" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:08:46.178744" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-08T01:08:46.178724" elapsed="0.000196"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-08T01:08:46.180149" elapsed="0.000049"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:08:46.180040" elapsed="0.000193"/>
</branch>
<status status="PASS" start="2026-04-08T01:08:46.180021" elapsed="0.000234"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:08:46.180724" level="INFO">${karaf_connection_index} = 659</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:08:46.180414" elapsed="0.000337"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:08:46.181237" level="INFO">${current_connection_index} = 667</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:08:46.180923" elapsed="0.000342"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:08:46.231786" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "w "p "l "u "g "i "n "- "c "l "[78Cu "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:08:46.181787" elapsed="0.050107"/>
</kw>
<msg time="2026-04-08T01:08:46.232059" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-08T01:08:46.232107" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "p "e "n "f "l "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:08:46.181438" elapsed="0.050705"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-08T01:08:46.290516" level="INFO">"t "e "r "i "n "g ". "t "x "t ". "0 "3 "0 "[C "C "l "u "s "t "e "r "[C "S "y "n "c "[C "P "r "o "b "l "e "m "s ". "S "t "o "p "[C "M "i "n "i "n "e "t "[C "A "n "d "[C "V "e "r "i "f "y "[C "N "o "[C "O "w "n "e "r "s "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-08T01:08:46.232720" elapsed="0.057916"/>
</kw>
<msg time="2026-04-08T01:08:46.290799" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-08T01:08:46.290846" level="INFO">${message_wait} =  "t "e "r "i "n "g ". "t "x "t ". "0 "3 "0 "[C "C "l "u "s "t "e "r "[C "S "y "n "c "[C "P "r "o "b "l "e "m "s ". "S "t...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:08:46.232356" elapsed="0.058525"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:46.291256" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:08:46.290970" elapsed="0.000342"/>
</branch>
<status status="PASS" start="2026-04-08T01:08:46.290945" elapsed="0.000393"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:08:46.291801" level="INFO"> "t "e "r "i "n "g ". "t "x "t ". "0 "3 "0 "[C "C "l "u "s "t "e "r "[C "S "y "n "c "[C "P "r "o "b "l "e "m "s ". "S "t "o "p "[C "M "i "n "i "n "e "t "[C "A "n "d "[C "V "e "r "i "f "y "[C "N "o "[C "O "w "n "e "r "s "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:08:46.291495" elapsed="0.000383"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:46.292194" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:08:46.291945" elapsed="0.000304"/>
</branch>
<status status="PASS" start="2026-04-08T01:08:46.291927" elapsed="0.000345"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-08T01:08:46.292308" elapsed="0.000034"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:08:46.295060" elapsed="0.000224"/>
</kw>
<msg time="2026-04-08T01:08:46.295347" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:08:46.293862" elapsed="0.001619"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:46.295772" elapsed="0.000074"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:46.296113" elapsed="0.000097"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:08:46.293226" elapsed="0.003110"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-08T01:08:46.292642" elapsed="0.003807"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-08T01:08:46.179737" elapsed="0.116813"/>
</kw>
<msg time="2026-04-08T01:08:46.296804" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:08:46.296857" level="INFO">${message} =  "t "e "r "i "n "g ". "t "x "t ". "0 "3 "0 "[C "C "l "u "s "t "e "r "[C "S "y "n "c "[C "P "r "o "b "l "e "m "s ". "S "t...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:08:46.179084" elapsed="0.117810"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-08T01:08:46.297086" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-08T01:08:46.296977" elapsed="0.000168"/>
</branch>
<status status="PASS" start="2026-04-08T01:08:46.296956" elapsed="0.000232"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 3,
close the previous connection. In any case create a new connection
to karaf console for 3, set correct prompt set and login to karaf console.
Store connection index for 3 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:46.297600" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:46.298189" elapsed="0.000038"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-08T01:08:46.298277" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-08T01:08:46.178393" elapsed="0.119992"/>
</kw>
<msg time="2026-04-08T01:08:46.298480" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:08:46.298523" level="INFO">${output} =  "t "e "r "i "n "g ". "t "x "t ". "0 "3 "0 "[C "C "l "u "s "t "e "r "[C "S "y "n "c "[C "P "r "o "b "l "e "m "s ". "S "t...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:08:46.173614" elapsed="0.124944"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:46.298894" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:08:46.298634" elapsed="0.000313"/>
</branch>
<status status="PASS" start="2026-04-08T01:08:46.298616" elapsed="0.000354"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T01:08:46.173460" elapsed="0.125533"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-08T01:08:45.965188" elapsed="0.333840"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-08T01:08:45.962779" elapsed="0.336313"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-08T01:08:45.957729" elapsed="0.341429"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:08:45.957298" elapsed="0.341929"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-08T01:08:45.953966" elapsed="0.345319"/>
</kw>
<kw name="Stop Mininet" owner="Utils">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:08:46.300124" level="INFO">Stop the test on the base edition</msg>
<arg>Stop the test on the base edition</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:08:46.299905" elapsed="0.000281"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${mininet_conn_id}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:08:46.300385" elapsed="0.000184"/>
</kw>
<kw name="Read" owner="SSHLibrary">
<doc>Consumes and returns everything available on the server output.</doc>
<status status="PASS" start="2026-04-08T01:08:46.300758" elapsed="0.000125"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:08:46.302678" level="INFO">exit</msg>
<arg>exit</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:08:46.301064" elapsed="0.001699"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-08T01:08:46.402263" level="INFO">*** Stopping 0 controllers

*** Stopping 1 links
.
*** Stopping 1 switches
s1 
*** Stopping 1 hosts
h1 
*** Done
completed in 63.254 seconds
[?2004h[jenkins@releng-11369-169-1-mininet-ovs-217-0 ~]&gt;</msg>
<arg>${prompt}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-08T01:08:46.302963" elapsed="0.099369"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T01:08:46.402554" elapsed="0.000290"/>
</kw>
<doc>Cleanup/Shutdown work that should be done at the completion of all
tests</doc>
<status status="PASS" start="2026-04-08T01:08:46.299540" elapsed="0.103363"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Check No Device Owners In Controller">
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:08:46.404644" level="FAIL">Dictionary does not contain key '1'.</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="FAIL" start="2026-04-08T01:08:46.404347" elapsed="0.000416">Dictionary does not contain key '1'.</status>
</kw>
<return>
<value>${ip_address}</value>
<status status="NOT RUN" start="2026-04-08T01:08:46.404825" elapsed="0.000020"/>
</return>
<var>${ip}</var>
<arg>member_index=${active_member}</arg>
<doc>Return node IP address of given index.</doc>
<status status="FAIL" start="2026-04-08T01:08:46.403962" elapsed="0.000980">Dictionary does not contain key '1'.</status>
</kw>
<kw name="Catenate" owner="BuiltIn">
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181</arg>
<arg>${RFC8040_RESTCONF_ROOT}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:46.405469" elapsed="0.000026"/>
</kw>
<kw name="Get Entities" owner="ClusterEntities">
<var>${data}</var>
<arg>${url}</arg>
<status status="NOT RUN" start="2026-04-08T01:08:46.405670" elapsed="0.000021"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<var>${data}</var>
<arg>${data}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:46.405851" elapsed="0.000020"/>
</kw>
<kw name="Should Contain X Times" owner="BuiltIn">
<arg>${data}</arg>
<arg>member</arg>
<arg>6</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:46.406029" elapsed="0.000019"/>
</kw>
<doc>Check there is no owners in controllers</doc>
<status status="FAIL" start="2026-04-08T01:08:46.403637" elapsed="0.002505">Dictionary does not contain key '1'.</status>
</kw>
<kw name="Check No Device Owners In Controller">
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:08:47.409836" level="FAIL">Dictionary does not contain key '1'.</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="FAIL" start="2026-04-08T01:08:47.409087" elapsed="0.000982">Dictionary does not contain key '1'.</status>
</kw>
<return>
<value>${ip_address}</value>
<status status="NOT RUN" start="2026-04-08T01:08:47.410264" elapsed="0.000046"/>
</return>
<var>${ip}</var>
<arg>member_index=${active_member}</arg>
<doc>Return node IP address of given index.</doc>
<status status="FAIL" start="2026-04-08T01:08:47.408001" elapsed="0.002519">Dictionary does not contain key '1'.</status>
</kw>
<kw name="Catenate" owner="BuiltIn">
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181</arg>
<arg>${RFC8040_RESTCONF_ROOT}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:47.410917" elapsed="0.000047"/>
</kw>
<kw name="Get Entities" owner="ClusterEntities">
<var>${data}</var>
<arg>${url}</arg>
<status status="NOT RUN" start="2026-04-08T01:08:47.411403" elapsed="0.000047"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<var>${data}</var>
<arg>${data}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:47.411799" elapsed="0.000043"/>
</kw>
<kw name="Should Contain X Times" owner="BuiltIn">
<arg>${data}</arg>
<arg>member</arg>
<arg>6</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:47.412216" elapsed="0.000046"/>
</kw>
<doc>Check there is no owners in controllers</doc>
<status status="FAIL" start="2026-04-08T01:08:47.406969" elapsed="0.005493">Dictionary does not contain key '1'.</status>
</kw>
<kw name="Check No Device Owners In Controller">
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:08:48.415674" level="FAIL">Dictionary does not contain key '1'.</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="FAIL" start="2026-04-08T01:08:48.415006" elapsed="0.000891">Dictionary does not contain key '1'.</status>
</kw>
<return>
<value>${ip_address}</value>
<status status="NOT RUN" start="2026-04-08T01:08:48.416047" elapsed="0.000042"/>
</return>
<var>${ip}</var>
<arg>member_index=${active_member}</arg>
<doc>Return node IP address of given index.</doc>
<status status="FAIL" start="2026-04-08T01:08:48.414094" elapsed="0.002224">Dictionary does not contain key '1'.</status>
</kw>
<kw name="Catenate" owner="BuiltIn">
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181</arg>
<arg>${RFC8040_RESTCONF_ROOT}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:48.416717" elapsed="0.000078"/>
</kw>
<kw name="Get Entities" owner="ClusterEntities">
<var>${data}</var>
<arg>${url}</arg>
<status status="NOT RUN" start="2026-04-08T01:08:48.417258" elapsed="0.000050"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<var>${data}</var>
<arg>${data}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:48.417656" elapsed="0.000045"/>
</kw>
<kw name="Should Contain X Times" owner="BuiltIn">
<arg>${data}</arg>
<arg>member</arg>
<arg>6</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:48.418043" elapsed="0.000043"/>
</kw>
<doc>Check there is no owners in controllers</doc>
<status status="FAIL" start="2026-04-08T01:08:48.413202" elapsed="0.005115">Dictionary does not contain key '1'.</status>
</kw>
<kw name="Check No Device Owners In Controller">
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:08:49.422455" level="FAIL">Dictionary does not contain key '1'.</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="FAIL" start="2026-04-08T01:08:49.421757" elapsed="0.000931">Dictionary does not contain key '1'.</status>
</kw>
<return>
<value>${ip_address}</value>
<status status="NOT RUN" start="2026-04-08T01:08:49.422838" elapsed="0.000042"/>
</return>
<var>${ip}</var>
<arg>member_index=${active_member}</arg>
<doc>Return node IP address of given index.</doc>
<status status="FAIL" start="2026-04-08T01:08:49.420846" elapsed="0.002237">Dictionary does not contain key '1'.</status>
</kw>
<kw name="Catenate" owner="BuiltIn">
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181</arg>
<arg>${RFC8040_RESTCONF_ROOT}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:49.423545" elapsed="0.000050"/>
</kw>
<kw name="Get Entities" owner="ClusterEntities">
<var>${data}</var>
<arg>${url}</arg>
<status status="NOT RUN" start="2026-04-08T01:08:49.423975" elapsed="0.000123"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<var>${data}</var>
<arg>${data}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:49.424516" elapsed="0.000048"/>
</kw>
<kw name="Should Contain X Times" owner="BuiltIn">
<arg>${data}</arg>
<arg>member</arg>
<arg>6</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:49.424914" elapsed="0.000043"/>
</kw>
<doc>Check there is no owners in controllers</doc>
<status status="FAIL" start="2026-04-08T01:08:49.419036" elapsed="0.006117">Dictionary does not contain key '1'.</status>
</kw>
<kw name="Check No Device Owners In Controller">
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:08:50.428610" level="FAIL">Dictionary does not contain key '1'.</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="FAIL" start="2026-04-08T01:08:50.427922" elapsed="0.000919">Dictionary does not contain key '1'.</status>
</kw>
<return>
<value>${ip_address}</value>
<status status="NOT RUN" start="2026-04-08T01:08:50.429332" elapsed="0.000047"/>
</return>
<var>${ip}</var>
<arg>member_index=${active_member}</arg>
<doc>Return node IP address of given index.</doc>
<status status="FAIL" start="2026-04-08T01:08:50.426921" elapsed="0.002670">Dictionary does not contain key '1'.</status>
</kw>
<kw name="Catenate" owner="BuiltIn">
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181</arg>
<arg>${RFC8040_RESTCONF_ROOT}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:50.429989" elapsed="0.000090"/>
</kw>
<kw name="Get Entities" owner="ClusterEntities">
<var>${data}</var>
<arg>${url}</arg>
<status status="NOT RUN" start="2026-04-08T01:08:50.430573" elapsed="0.000051"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<var>${data}</var>
<arg>${data}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:50.430975" elapsed="0.000043"/>
</kw>
<kw name="Should Contain X Times" owner="BuiltIn">
<arg>${data}</arg>
<arg>member</arg>
<arg>6</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:50.431457" elapsed="0.000030"/>
</kw>
<doc>Check there is no owners in controllers</doc>
<status status="FAIL" start="2026-04-08T01:08:50.425900" elapsed="0.005715">Dictionary does not contain key '1'.</status>
</kw>
<kw name="Check No Device Owners In Controller">
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:08:51.434948" level="FAIL">Dictionary does not contain key '1'.</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="FAIL" start="2026-04-08T01:08:51.434292" elapsed="0.000916">Dictionary does not contain key '1'.</status>
</kw>
<return>
<value>${ip_address}</value>
<status status="NOT RUN" start="2026-04-08T01:08:51.435365" elapsed="0.000043"/>
</return>
<var>${ip}</var>
<arg>member_index=${active_member}</arg>
<doc>Return node IP address of given index.</doc>
<status status="FAIL" start="2026-04-08T01:08:51.433367" elapsed="0.002243">Dictionary does not contain key '1'.</status>
</kw>
<kw name="Catenate" owner="BuiltIn">
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181</arg>
<arg>${RFC8040_RESTCONF_ROOT}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:51.436001" elapsed="0.000046"/>
</kw>
<kw name="Get Entities" owner="ClusterEntities">
<var>${data}</var>
<arg>${url}</arg>
<status status="NOT RUN" start="2026-04-08T01:08:51.436547" elapsed="0.000048"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<var>${data}</var>
<arg>${data}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:51.436941" elapsed="0.000045"/>
</kw>
<kw name="Should Contain X Times" owner="BuiltIn">
<arg>${data}</arg>
<arg>member</arg>
<arg>6</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:51.437340" elapsed="0.000029"/>
</kw>
<doc>Check there is no owners in controllers</doc>
<status status="FAIL" start="2026-04-08T01:08:51.432393" elapsed="0.005103">Dictionary does not contain key '1'.</status>
</kw>
<kw name="Check No Device Owners In Controller">
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:08:52.440671" level="FAIL">Dictionary does not contain key '1'.</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="FAIL" start="2026-04-08T01:08:52.439976" elapsed="0.000914">Dictionary does not contain key '1'.</status>
</kw>
<return>
<value>${ip_address}</value>
<status status="NOT RUN" start="2026-04-08T01:08:52.441038" elapsed="0.000043"/>
</return>
<var>${ip}</var>
<arg>member_index=${active_member}</arg>
<doc>Return node IP address of given index.</doc>
<status status="FAIL" start="2026-04-08T01:08:52.439073" elapsed="0.002273">Dictionary does not contain key '1'.</status>
</kw>
<kw name="Catenate" owner="BuiltIn">
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181</arg>
<arg>${RFC8040_RESTCONF_ROOT}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:52.441592" elapsed="0.000029"/>
</kw>
<kw name="Get Entities" owner="ClusterEntities">
<var>${data}</var>
<arg>${url}</arg>
<status status="NOT RUN" start="2026-04-08T01:08:52.441856" elapsed="0.000028"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<var>${data}</var>
<arg>${data}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:52.442097" elapsed="0.000028"/>
</kw>
<kw name="Should Contain X Times" owner="BuiltIn">
<arg>${data}</arg>
<arg>member</arg>
<arg>6</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:52.442366" elapsed="0.000028"/>
</kw>
<doc>Check there is no owners in controllers</doc>
<status status="FAIL" start="2026-04-08T01:08:52.438202" elapsed="0.004315">Dictionary does not contain key '1'.</status>
</kw>
<kw name="Check No Device Owners In Controller">
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:08:53.446437" level="FAIL">Dictionary does not contain key '1'.</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="FAIL" start="2026-04-08T01:08:53.445720" elapsed="0.000950">Dictionary does not contain key '1'.</status>
</kw>
<return>
<value>${ip_address}</value>
<status status="NOT RUN" start="2026-04-08T01:08:53.446824" elapsed="0.000045"/>
</return>
<var>${ip}</var>
<arg>member_index=${active_member}</arg>
<doc>Return node IP address of given index.</doc>
<status status="FAIL" start="2026-04-08T01:08:53.444813" elapsed="0.002259">Dictionary does not contain key '1'.</status>
</kw>
<kw name="Catenate" owner="BuiltIn">
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181</arg>
<arg>${RFC8040_RESTCONF_ROOT}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:53.447513" elapsed="0.000052"/>
</kw>
<kw name="Get Entities" owner="ClusterEntities">
<var>${data}</var>
<arg>${url}</arg>
<status status="NOT RUN" start="2026-04-08T01:08:53.447976" elapsed="0.000057"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<var>${data}</var>
<arg>${data}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:53.448427" elapsed="0.000048"/>
</kw>
<kw name="Should Contain X Times" owner="BuiltIn">
<arg>${data}</arg>
<arg>member</arg>
<arg>6</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:53.448830" elapsed="0.000046"/>
</kw>
<doc>Check there is no owners in controllers</doc>
<status status="FAIL" start="2026-04-08T01:08:53.443902" elapsed="0.005179">Dictionary does not contain key '1'.</status>
</kw>
<kw name="Check No Device Owners In Controller">
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:08:54.452418" level="FAIL">Dictionary does not contain key '1'.</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="FAIL" start="2026-04-08T01:08:54.451748" elapsed="0.001123">Dictionary does not contain key '1'.</status>
</kw>
<return>
<value>${ip_address}</value>
<status status="NOT RUN" start="2026-04-08T01:08:54.453022" elapsed="0.000042"/>
</return>
<var>${ip}</var>
<arg>member_index=${active_member}</arg>
<doc>Return node IP address of given index.</doc>
<status status="FAIL" start="2026-04-08T01:08:54.450868" elapsed="0.002432">Dictionary does not contain key '1'.</status>
</kw>
<kw name="Catenate" owner="BuiltIn">
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181</arg>
<arg>${RFC8040_RESTCONF_ROOT}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:54.453718" elapsed="0.000048"/>
</kw>
<kw name="Get Entities" owner="ClusterEntities">
<var>${data}</var>
<arg>${url}</arg>
<status status="NOT RUN" start="2026-04-08T01:08:54.454143" elapsed="0.000075"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<var>${data}</var>
<arg>${data}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:54.454566" elapsed="0.000044"/>
</kw>
<kw name="Should Contain X Times" owner="BuiltIn">
<arg>${data}</arg>
<arg>member</arg>
<arg>6</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:54.454954" elapsed="0.000043"/>
</kw>
<doc>Check there is no owners in controllers</doc>
<status status="FAIL" start="2026-04-08T01:08:54.449903" elapsed="0.005320">Dictionary does not contain key '1'.</status>
</kw>
<kw name="Check No Device Owners In Controller">
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:08:55.458544" level="FAIL">Dictionary does not contain key '1'.</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="FAIL" start="2026-04-08T01:08:55.457854" elapsed="0.000917">Dictionary does not contain key '1'.</status>
</kw>
<return>
<value>${ip_address}</value>
<status status="NOT RUN" start="2026-04-08T01:08:55.458921" elapsed="0.000044"/>
</return>
<var>${ip}</var>
<arg>member_index=${active_member}</arg>
<doc>Return node IP address of given index.</doc>
<status status="FAIL" start="2026-04-08T01:08:55.456927" elapsed="0.002264">Dictionary does not contain key '1'.</status>
</kw>
<kw name="Catenate" owner="BuiltIn">
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181</arg>
<arg>${RFC8040_RESTCONF_ROOT}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:55.459588" elapsed="0.000048"/>
</kw>
<kw name="Get Entities" owner="ClusterEntities">
<var>${data}</var>
<arg>${url}</arg>
<status status="NOT RUN" start="2026-04-08T01:08:55.460006" elapsed="0.000046"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<var>${data}</var>
<arg>${data}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:55.460420" elapsed="0.000046"/>
</kw>
<kw name="Should Contain X Times" owner="BuiltIn">
<arg>${data}</arg>
<arg>member</arg>
<arg>6</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:55.460889" elapsed="0.000047"/>
</kw>
<doc>Check there is no owners in controllers</doc>
<status status="FAIL" start="2026-04-08T01:08:55.455956" elapsed="0.005275">Dictionary does not contain key '1'.</status>
</kw>
<kw name="Check No Device Owners In Controller">
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:08:56.464692" level="FAIL">Dictionary does not contain key '1'.</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="FAIL" start="2026-04-08T01:08:56.463962" elapsed="0.000960">Dictionary does not contain key '1'.</status>
</kw>
<return>
<value>${ip_address}</value>
<status status="NOT RUN" start="2026-04-08T01:08:56.465123" elapsed="0.000067"/>
</return>
<var>${ip}</var>
<arg>member_index=${active_member}</arg>
<doc>Return node IP address of given index.</doc>
<status status="FAIL" start="2026-04-08T01:08:56.462963" elapsed="0.002436">Dictionary does not contain key '1'.</status>
</kw>
<kw name="Catenate" owner="BuiltIn">
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181</arg>
<arg>${RFC8040_RESTCONF_ROOT}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:56.465822" elapsed="0.000048"/>
</kw>
<kw name="Get Entities" owner="ClusterEntities">
<var>${data}</var>
<arg>${url}</arg>
<status status="NOT RUN" start="2026-04-08T01:08:56.466275" elapsed="0.000047"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<var>${data}</var>
<arg>${data}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:56.466665" elapsed="0.000102"/>
</kw>
<kw name="Should Contain X Times" owner="BuiltIn">
<arg>${data}</arg>
<arg>member</arg>
<arg>6</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:56.467130" elapsed="0.000072"/>
</kw>
<doc>Check there is no owners in controllers</doc>
<status status="FAIL" start="2026-04-08T01:08:56.461968" elapsed="0.005434">Dictionary does not contain key '1'.</status>
</kw>
<kw name="Check No Device Owners In Controller">
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:08:57.471489" level="FAIL">Dictionary does not contain key '1'.</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="FAIL" start="2026-04-08T01:08:57.470783" elapsed="0.000858">Dictionary does not contain key '1'.</status>
</kw>
<return>
<value>${ip_address}</value>
<status status="NOT RUN" start="2026-04-08T01:08:57.471738" elapsed="0.000030"/>
</return>
<var>${ip}</var>
<arg>member_index=${active_member}</arg>
<doc>Return node IP address of given index.</doc>
<status status="FAIL" start="2026-04-08T01:08:57.469878" elapsed="0.002018">Dictionary does not contain key '1'.</status>
</kw>
<kw name="Catenate" owner="BuiltIn">
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181</arg>
<arg>${RFC8040_RESTCONF_ROOT}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:57.472148" elapsed="0.000050"/>
</kw>
<kw name="Get Entities" owner="ClusterEntities">
<var>${data}</var>
<arg>${url}</arg>
<status status="NOT RUN" start="2026-04-08T01:08:57.472437" elapsed="0.000034"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<var>${data}</var>
<arg>${data}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:57.472725" elapsed="0.000028"/>
</kw>
<kw name="Should Contain X Times" owner="BuiltIn">
<arg>${data}</arg>
<arg>member</arg>
<arg>6</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:57.472973" elapsed="0.000029"/>
</kw>
<doc>Check there is no owners in controllers</doc>
<status status="FAIL" start="2026-04-08T01:08:57.468887" elapsed="0.004238">Dictionary does not contain key '1'.</status>
</kw>
<kw name="Check No Device Owners In Controller">
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:08:58.476642" level="FAIL">Dictionary does not contain key '1'.</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="FAIL" start="2026-04-08T01:08:58.475948" elapsed="0.000926">Dictionary does not contain key '1'.</status>
</kw>
<return>
<value>${ip_address}</value>
<status status="NOT RUN" start="2026-04-08T01:08:58.477026" elapsed="0.000045"/>
</return>
<var>${ip}</var>
<arg>member_index=${active_member}</arg>
<doc>Return node IP address of given index.</doc>
<status status="FAIL" start="2026-04-08T01:08:58.474963" elapsed="0.002344">Dictionary does not contain key '1'.</status>
</kw>
<kw name="Catenate" owner="BuiltIn">
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181</arg>
<arg>${RFC8040_RESTCONF_ROOT}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:58.477758" elapsed="0.000051"/>
</kw>
<kw name="Get Entities" owner="ClusterEntities">
<var>${data}</var>
<arg>${url}</arg>
<status status="NOT RUN" start="2026-04-08T01:08:58.478212" elapsed="0.000047"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<var>${data}</var>
<arg>${data}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:58.478589" elapsed="0.000033"/>
</kw>
<kw name="Should Contain X Times" owner="BuiltIn">
<arg>${data}</arg>
<arg>member</arg>
<arg>6</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:58.478837" elapsed="0.000028"/>
</kw>
<doc>Check there is no owners in controllers</doc>
<status status="FAIL" start="2026-04-08T01:08:58.473989" elapsed="0.005000">Dictionary does not contain key '1'.</status>
</kw>
<kw name="Check No Device Owners In Controller">
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:08:59.482379" level="FAIL">Dictionary does not contain key '1'.</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="FAIL" start="2026-04-08T01:08:59.481647" elapsed="0.000961">Dictionary does not contain key '1'.</status>
</kw>
<return>
<value>${ip_address}</value>
<status status="NOT RUN" start="2026-04-08T01:08:59.482756" elapsed="0.000044"/>
</return>
<var>${ip}</var>
<arg>member_index=${active_member}</arg>
<doc>Return node IP address of given index.</doc>
<status status="FAIL" start="2026-04-08T01:08:59.480706" elapsed="0.002290">Dictionary does not contain key '1'.</status>
</kw>
<kw name="Catenate" owner="BuiltIn">
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181</arg>
<arg>${RFC8040_RESTCONF_ROOT}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:59.483439" elapsed="0.000099"/>
</kw>
<kw name="Get Entities" owner="ClusterEntities">
<var>${data}</var>
<arg>${url}</arg>
<status status="NOT RUN" start="2026-04-08T01:08:59.484129" elapsed="0.000094"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<var>${data}</var>
<arg>${data}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:59.484590" elapsed="0.000046"/>
</kw>
<kw name="Should Contain X Times" owner="BuiltIn">
<arg>${data}</arg>
<arg>member</arg>
<arg>6</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="NOT RUN" start="2026-04-08T01:08:59.484985" elapsed="0.000044"/>
</kw>
<doc>Check there is no owners in controllers</doc>
<status status="FAIL" start="2026-04-08T01:08:59.479697" elapsed="0.005493">Dictionary does not contain key '1'.</status>
</kw>
<kw name="Check No Device Owners In Controller">
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:09:00.488875" level="FAIL">Dictionary does not contain key '1'.</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="FAIL" start="2026-04-08T01:09:00.488187" elapsed="0.000929">Dictionary does not contain key '1'.</status>
</kw>
<return>
<value>${ip_address}</value>
<status status="NOT RUN" start="2026-04-08T01:09:00.489351" elapsed="0.000049"/>
</return>
<var>${ip}</var>
<arg>member_index=${active_member}</arg>
<doc>Return node IP address of given index.</doc>
<status status="FAIL" start="2026-04-08T01:09:00.487212" elapsed="0.002400">Dictionary does not contain key '1'.</status>
</kw>
<kw name="Catenate" owner="BuiltIn">
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181</arg>
<arg>${RFC8040_RESTCONF_ROOT}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:00.490085" elapsed="0.000053"/>
</kw>
<kw name="Get Entities" owner="ClusterEntities">
<var>${data}</var>
<arg>${url}</arg>
<status status="NOT RUN" start="2026-04-08T01:09:00.490573" elapsed="0.000033"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<var>${data}</var>
<arg>${data}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:00.490819" elapsed="0.000027"/>
</kw>
<kw name="Should Contain X Times" owner="BuiltIn">
<arg>${data}</arg>
<arg>member</arg>
<arg>6</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:00.491059" elapsed="0.000026"/>
</kw>
<doc>Check there is no owners in controllers</doc>
<status status="FAIL" start="2026-04-08T01:09:00.486138" elapsed="0.005088">Dictionary does not contain key '1'.</status>
</kw>
<msg time="2026-04-08T01:09:00.491348" level="FAIL">Keyword 'Check No Device Owners In Controller' failed after retrying 15 times. The last error was: Dictionary does not contain key '1'.</msg>
<arg>15x</arg>
<arg>1s</arg>
<arg>Check No Device Owners In Controller</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="FAIL" start="2026-04-08T01:08:46.403081" elapsed="14.088860">Keyword 'Check No Device Owners In Controller' failed after retrying 15 times. The last error was: Dictionary does not contain key '1'.</status>
</kw>
<kw name="Report Failure Due To Bug" owner="Utils" type="TEARDOWN">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:09:00.493996" level="INFO">${test_skipped} = False</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:09:00.493323" elapsed="0.000713"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="NOT RUN" start="2026-04-08T01:09:00.494445" elapsed="0.000021"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:09:00.494228" elapsed="0.000275"/>
</branch>
<status status="PASS" start="2026-04-08T01:09:00.494191" elapsed="0.000344"/>
</if>
<kw name="Comment" owner="BuiltIn">
<arg>Jira tickets are {PROJECT}-{NUMBER} while Bugzilla tickets are {NUMBER}</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:09:00.494824" elapsed="0.000301"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="Should Contain" owner="BuiltIn">
<msg time="2026-04-08T01:09:00.496589" level="FAIL">'6177' does not contain '-'</msg>
<arg>${number}</arg>
<arg>-</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="FAIL" start="2026-04-08T01:09:00.496027" elapsed="0.000648">'6177' does not contain '-'</status>
</kw>
<msg time="2026-04-08T01:09:00.496802" level="INFO">${match} = False</msg>
<var>${match}</var>
<arg>Should Contain</arg>
<arg>${number}</arg>
<arg>-</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T01:09:00.495482" elapsed="0.001354"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:09:00.497581" level="INFO">${bug_url} = https://bugs.opendaylight.org/show_bug.cgi?id=6177</msg>
<var>${bug_url}</var>
<arg>${match}</arg>
<arg>https://jira.opendaylight.org/browse/${number}</arg>
<arg>https://bugs.opendaylight.org/show_bug.cgi?id=${number}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:09:00.497086" elapsed="0.000536"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:09:00.498329" level="INFO">${msg} = This test fails due to https://bugs.opendaylight.org/show_bug.cgi?id=6177</msg>
<var>${msg}</var>
<arg>This test fails due to ${bug_url}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:09:00.497864" elapsed="0.000502"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:09:00.498936" level="INFO">${newline} = 
</msg>
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:09:00.498620" elapsed="0.000342"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<msg time="2026-04-08T01:09:00.499518" level="INFO">Set test message to:
This test fails due to https://bugs.opendaylight.org/show_bug.cgi?id=6177

Keyword 'Check No Device Owners In Controller' failed after retrying 15 times. The last error was: Dictionary does not contain key '1'.</msg>
<arg>${msg}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="PASS" start="2026-04-08T01:09:00.499125" elapsed="0.000441"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:09:00.499971" level="INFO">This test fails due to https://bugs.opendaylight.org/show_bug.cgi?id=6177</msg>
<arg>${msg}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:09:00.499731" elapsed="0.000284"/>
</kw>
<if>
<branch type="IF" condition="&quot;${include_bug_in_tags}&quot;==&quot;True&quot;">
<kw name="Set Tags" owner="BuiltIn">
<msg time="2026-04-08T01:09:00.500730" level="INFO">Set tag 'https://bugs.opendaylight.org/show_bug.cgi?id=6177'.</msg>
<arg>${bug_url}</arg>
<doc>Adds given ``tags`` for the current test or all tests in a suite.</doc>
<status status="PASS" start="2026-04-08T01:09:00.500373" elapsed="0.000406"/>
</kw>
<status status="PASS" start="2026-04-08T01:09:00.500084" elapsed="0.000728"/>
</branch>
<status status="PASS" start="2026-04-08T01:09:00.500063" elapsed="0.000773"/>
</if>
<arg>6177</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-04-08T01:09:00.492787" elapsed="0.008094"/>
</kw>
<tag>https://bugs.opendaylight.org/show_bug.cgi?id=6177</tag>
<status status="FAIL" start="2026-04-08T01:08:45.953488" elapsed="14.547439">This test fails due to https://bugs.opendaylight.org/show_bug.cgi?id=6177

Keyword 'Check No Device Owners In Controller' failed after retrying 15 times. The last error was: Dictionary does not contain key '1'.</status>
</test>
<kw name="End Suite" type="TEARDOWN">
<kw name="Flush_Iptables_From_List_Or_All" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:09:00.504126" level="INFO">${command} = sudo iptables -v -F</msg>
<var>${command}</var>
<arg>sudo iptables -v -F</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:09:00.503834" elapsed="0.000333"/>
</kw>
<kw name="Run_Bash_Command_On_List_Or_All" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:09:00.505567" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:09:00.505188" elapsed="0.000406"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:09:00.506089" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:09:00.505763" elapsed="0.000352"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T01:09:00.506173" elapsed="0.000033"/>
</return>
<msg time="2026-04-08T01:09:00.506333" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T01:09:00.504842" elapsed="0.001516"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:09:00.507364" level="INFO">${member_ip} = 10.30.170.48</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:09:00.507087" elapsed="0.000303"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:09:00.510231" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

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

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T01:09:00.513577" elapsed="0.000282"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:09:00.514919" level="INFO">Attempting to execute command "sudo iptables -v -F" on remote system "10.30.170.48" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:09:00.514048" elapsed="0.000919"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:09:00.515755" level="INFO">${conn_id} = 668</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T01:09:00.515136" elapsed="0.000646"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T01:09:00.517097" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T01:09:00.517324" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T01:09:00.516549" elapsed="0.000815"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:09:00.517709" elapsed="0.000649"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T01:09:00.519956" level="INFO">Logging into '10.30.170.48:22' as 'jenkins'.</msg>
<msg time="2026-04-08T01:09:01.104750" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 01:09:00 UTC 2026

  System load:  0.17               Processes:             122
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 8%                 IPv4 address for ens3: 10.30.170.48
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 01:07:39 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-0-builder-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T01:09:00.519563" elapsed="0.585442"/>
</kw>
<msg time="2026-04-08T01:09:01.105121" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:09:00.518815" elapsed="0.586531"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T01:09:00.516012" elapsed="0.589611"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T01:09:01.106243" level="INFO">Executing command 'sudo iptables -v -F'.</msg>
<msg time="2026-04-08T01:09:01.129613" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-08T01:09:01.129999" level="INFO">${stdout} = Flushing chain `INPUT'
Flushing chain `FORWARD'
Flushing chain `OUTPUT'
Flushing chain `DOCKER'
Flushing chain `DOCKER-BRIDGE'
Flushing chain `DOCKER-CT'
Flushing chain `DOCKER-FORWARD'
Flushing chain...</msg>
<msg time="2026-04-08T01:09:01.130102" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T01:09:01.105888" elapsed="0.024265"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T01:09:01.130648" elapsed="0.000483"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:09:01.132952" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:09:01.131756" elapsed="0.001292"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T01:09:01.133613" elapsed="0.000044"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:09:01.133254" elapsed="0.000486"/>
</branch>
<status status="PASS" start="2026-04-08T01:09:01.133201" elapsed="0.000593"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T01:09:01.134236" elapsed="0.000063"/>
</return>
<status status="PASS" start="2026-04-08T01:09:01.133915" elapsed="0.000458"/>
</branch>
<status status="PASS" start="2026-04-08T01:09:01.133881" elapsed="0.000546"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T01:09:01.134501" elapsed="0.000031"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:09:01.138959" elapsed="0.001188"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T01:09:01.140569" elapsed="0.000707"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T01:09:01.141621" elapsed="0.000271"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:09:01.135315" elapsed="0.006749"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T01:09:00.512247" elapsed="0.629972"/>
</kw>
<msg time="2026-04-08T01:09:01.142372" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:09:00.511581" elapsed="0.630882"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-08T01:09:00.511063" elapsed="0.631509"/>
</kw>
<msg time="2026-04-08T01:09:01.142629" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:09:00.510533" elapsed="0.632173"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:09:01.145731" elapsed="0.000306"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T01:09:01.146225" elapsed="0.000144"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T01:09:01.146526" elapsed="0.000096"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:09:01.143122" elapsed="0.003555"/>
</kw>
<msg time="2026-04-08T01:09:01.146770" level="INFO">${output} = Flushing chain `INPUT'
Flushing chain `FORWARD'
Flushing chain `OUTPUT'
Flushing chain `DOCKER'
Flushing chain `DOCKER-BRIDGE'
Flushing chain `DOCKER-CT'
Flushing chain `DOCKER-FORWARD'
Flushing chain...</msg>
<var>${output}</var>
<arg>Utils.Run_Command_On_Controller</arg>
<arg>${member_ip}</arg>
<arg>${command}</arg>
<doc>Store current connection index, run keyword returning its result, restore connection in teardown.
Note that in order to avoid "got positional argument after named arguments", it is safer to use positional (not named) arguments on call.</doc>
<status status="PASS" start="2026-04-08T01:09:00.507629" elapsed="0.639168"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:09:01.147339" level="INFO">Flushing chain `INPUT'
Flushing chain `FORWARD'
Flushing chain `OUTPUT'
Flushing chain `DOCKER'
Flushing chain `DOCKER-BRIDGE'
Flushing chain `DOCKER-CT'
Flushing chain `DOCKER-FORWARD'
Flushing chain `DOCKER-INTERNAL'
Flushing chain `DOCKER-USER'</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:09:01.147001" elapsed="0.000385"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-08T01:09:01.147428" elapsed="0.000029"/>
</return>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-08T01:09:00.506729" elapsed="0.640823"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T01:09:00.506547" elapsed="0.641043"/>
</iter>
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:09:01.148533" level="INFO">${member_ip} = 10.30.170.131</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:09:01.148264" elapsed="0.000296"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:09:01.149305" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

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

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T01:09:01.152644" elapsed="0.000279"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:09:01.154046" level="INFO">Attempting to execute command "sudo iptables -v -F" on remote system "10.30.170.131" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:09:01.153085" elapsed="0.001008"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:09:01.155114" level="INFO">${conn_id} = 671</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T01:09:01.154280" elapsed="0.000861"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T01:09:01.156576" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T01:09:01.156799" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T01:09:01.155946" elapsed="0.000894"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:09:01.157151" elapsed="0.000834"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T01:09:01.159713" level="INFO">Logging into '10.30.170.131:22' as 'jenkins'.</msg>
<msg time="2026-04-08T01:09:01.765262" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 01:09:01 UTC 2026

  System load:  0.24               Processes:             122
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 7%                 IPv4 address for ens3: 10.30.170.131
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 01:07:39 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-0-builder-1 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T01:09:01.159292" elapsed="0.606200"/>
</kw>
<msg time="2026-04-08T01:09:01.765606" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:09:01.158409" elapsed="0.607386"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T01:09:01.155401" elapsed="0.610651"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T01:09:01.766673" level="INFO">Executing command 'sudo iptables -v -F'.</msg>
<msg time="2026-04-08T01:09:01.799264" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-08T01:09:01.799573" level="INFO">${stdout} = Flushing chain `INPUT'
Flushing chain `FORWARD'
Flushing chain `OUTPUT'
Flushing chain `DOCKER'
Flushing chain `DOCKER-BRIDGE'
Flushing chain `DOCKER-CT'
Flushing chain `DOCKER-FORWARD'
Flushing chain...</msg>
<msg time="2026-04-08T01:09:01.799640" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T01:09:01.766347" elapsed="0.033327"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T01:09:01.800001" elapsed="0.000443"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:09:01.801589" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:09:01.800785" elapsed="0.000868"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T01:09:01.802006" elapsed="0.000024"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:09:01.801774" elapsed="0.000301"/>
</branch>
<status status="PASS" start="2026-04-08T01:09:01.801737" elapsed="0.000371"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T01:09:01.802392" elapsed="0.000046"/>
</return>
<status status="PASS" start="2026-04-08T01:09:01.802207" elapsed="0.000278"/>
</branch>
<status status="PASS" start="2026-04-08T01:09:01.802183" elapsed="0.000337"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T01:09:01.802568" elapsed="0.000020"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:09:01.808146" elapsed="0.001638"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T01:09:01.810057" elapsed="0.000429"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T01:09:01.810715" elapsed="0.000183"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:09:01.803046" elapsed="0.007966"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T01:09:01.151366" elapsed="0.659746"/>
</kw>
<msg time="2026-04-08T01:09:01.811185" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:09:01.150626" elapsed="0.660632"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-08T01:09:01.150115" elapsed="0.661222"/>
</kw>
<msg time="2026-04-08T01:09:01.811379" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:09:01.149595" elapsed="0.661840"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:09:01.814581" elapsed="0.000316"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T01:09:01.815073" elapsed="0.000167"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T01:09:01.815400" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:09:01.811737" elapsed="0.003814"/>
</kw>
<msg time="2026-04-08T01:09:01.815721" level="INFO">${output} = Flushing chain `INPUT'
Flushing chain `FORWARD'
Flushing chain `OUTPUT'
Flushing chain `DOCKER'
Flushing chain `DOCKER-BRIDGE'
Flushing chain `DOCKER-CT'
Flushing chain `DOCKER-FORWARD'
Flushing chain...</msg>
<var>${output}</var>
<arg>Utils.Run_Command_On_Controller</arg>
<arg>${member_ip}</arg>
<arg>${command}</arg>
<doc>Store current connection index, run keyword returning its result, restore connection in teardown.
Note that in order to avoid "got positional argument after named arguments", it is safer to use positional (not named) arguments on call.</doc>
<status status="PASS" start="2026-04-08T01:09:01.148787" elapsed="0.666962"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:09:01.816340" level="INFO">Flushing chain `INPUT'
Flushing chain `FORWARD'
Flushing chain `OUTPUT'
Flushing chain `DOCKER'
Flushing chain `DOCKER-BRIDGE'
Flushing chain `DOCKER-CT'
Flushing chain `DOCKER-FORWARD'
Flushing chain `DOCKER-INTERNAL'
Flushing chain `DOCKER-USER'</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:09:01.816002" elapsed="0.000422"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-08T01:09:01.816470" elapsed="0.000032"/>
</return>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-08T01:09:01.147878" elapsed="0.668735"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T01:09:01.147688" elapsed="0.668966"/>
</iter>
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:09:01.817918" level="INFO">${member_ip} = 10.30.171.110</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:09:01.817582" elapsed="0.000368"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:09:01.818752" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

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

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T01:09:01.822287" elapsed="0.000282"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:09:01.823634" level="INFO">Attempting to execute command "sudo iptables -v -F" on remote system "10.30.171.110" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:09:01.822734" elapsed="0.000950"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:09:01.824537" level="INFO">${conn_id} = 674</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T01:09:01.823857" elapsed="0.000710"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T01:09:01.826045" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T01:09:01.826286" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T01:09:01.825381" elapsed="0.000949"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:09:01.826682" elapsed="0.000785"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T01:09:01.829122" level="INFO">Logging into '10.30.171.110:22' as 'jenkins'.</msg>
<msg time="2026-04-08T01:09:02.495848" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 01:09:02 UTC 2026

  System load:  0.29               Processes:             127
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 7%                 IPv4 address for ens3: 10.30.171.110
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 01:07:40 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T01:09:01.828699" elapsed="0.667376"/>
</kw>
<msg time="2026-04-08T01:09:02.496209" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:09:01.827805" elapsed="0.668600"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T01:09:01.824832" elapsed="0.671937"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T01:09:02.497441" level="INFO">Executing command 'sudo iptables -v -F'.</msg>
<msg time="2026-04-08T01:09:02.520023" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-08T01:09:02.520475" level="INFO">${stdout} = Flushing chain `INPUT'
Flushing chain `FORWARD'
Flushing chain `OUTPUT'
Flushing chain `DOCKER'
Flushing chain `DOCKER-BRIDGE'
Flushing chain `DOCKER-CT'
Flushing chain `DOCKER-FORWARD'
Flushing chain...</msg>
<msg time="2026-04-08T01:09:02.520587" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T01:09:02.497028" elapsed="0.023614"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T01:09:02.521115" elapsed="0.000614"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:09:02.523627" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:09:02.522313" elapsed="0.001420"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T01:09:02.524347" elapsed="0.000041"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:09:02.523922" elapsed="0.000546"/>
</branch>
<status status="PASS" start="2026-04-08T01:09:02.523867" elapsed="0.000656"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T01:09:02.524972" elapsed="0.000070"/>
</return>
<status status="PASS" start="2026-04-08T01:09:02.524653" elapsed="0.000468"/>
</branch>
<status status="PASS" start="2026-04-08T01:09:02.524616" elapsed="0.000623"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T01:09:02.525330" elapsed="0.000040"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:09:02.531458" elapsed="0.000838"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T01:09:02.532601" elapsed="0.000662"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T01:09:02.533554" elapsed="0.000226"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:09:02.526227" elapsed="0.007684"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T01:09:01.820953" elapsed="0.713057"/>
</kw>
<msg time="2026-04-08T01:09:02.534069" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:09:01.820304" elapsed="0.713835"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-08T01:09:01.819730" elapsed="0.714530"/>
</kw>
<msg time="2026-04-08T01:09:02.534304" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:09:01.819084" elapsed="0.715286"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:09:02.537027" elapsed="0.000330"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T01:09:02.537540" elapsed="0.000180"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T01:09:02.538219" elapsed="0.000106"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:09:02.534676" elapsed="0.003703"/>
</kw>
<msg time="2026-04-08T01:09:02.538485" level="INFO">${output} = Flushing chain `INPUT'
Flushing chain `FORWARD'
Flushing chain `OUTPUT'
Flushing chain `DOCKER'
Flushing chain `DOCKER-BRIDGE'
Flushing chain `DOCKER-CT'
Flushing chain `DOCKER-FORWARD'
Flushing chain...</msg>
<var>${output}</var>
<arg>Utils.Run_Command_On_Controller</arg>
<arg>${member_ip}</arg>
<arg>${command}</arg>
<doc>Store current connection index, run keyword returning its result, restore connection in teardown.
Note that in order to avoid "got positional argument after named arguments", it is safer to use positional (not named) arguments on call.</doc>
<status status="PASS" start="2026-04-08T01:09:01.818224" elapsed="0.720288"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:09:02.538991" level="INFO">Flushing chain `INPUT'
Flushing chain `FORWARD'
Flushing chain `OUTPUT'
Flushing chain `DOCKER'
Flushing chain `DOCKER-BRIDGE'
Flushing chain `DOCKER-CT'
Flushing chain `DOCKER-FORWARD'
Flushing chain `DOCKER-INTERNAL'
Flushing chain `DOCKER-USER'</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:09:02.538735" elapsed="0.000302"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-08T01:09:02.539080" elapsed="0.000028"/>
</return>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-08T01:09:01.817012" elapsed="0.722213"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T01:09:01.816772" elapsed="0.722492"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-08T01:09:00.506414" elapsed="2.032888"/>
</for>
<msg time="2026-04-08T01:09:02.539394" level="INFO">${output} = None</msg>
<var>${output}</var>
<arg>command=${command}</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Cycle through indices (or all), run command on each.</doc>
<status status="PASS" start="2026-04-08T01:09:00.504395" elapsed="2.035026"/>
</kw>
<doc>If the list is empty, flush IPTables in all ODL instances. Otherwise, flush member based on present indices.</doc>
<status status="PASS" start="2026-04-08T01:09:00.501811" elapsed="2.037740"/>
</kw>
<kw name="Delete All Sessions" owner="RequestsLibrary">
<msg time="2026-04-08T01:09:02.539796" level="INFO">Deleting All Sessions</msg>
<doc>Removes all the session objects</doc>
<status status="PASS" start="2026-04-08T01:09:02.539717" elapsed="0.000188"/>
</kw>
<status status="PASS" start="2026-04-08T01:09:00.501528" elapsed="2.038431"/>
</kw>
<doc>Test suite for entity ownership service and openflowplugin. Makes changes on controller side (isolating cluster node)</doc>
<status status="FAIL" start="2026-04-08T01:07:38.976691" elapsed="83.563297"/>
</suite>
<suite id="s1-s8" name="9145" source="/w/workspace/openflowplugin-csit-3node-clustering-only-vanadium/test/csit/suites/openflowplugin/Bug_Validation/9145.robot">
<kw name="Initialization Phase" type="SETUP">
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-04-08T01:09:02.613968" level="INFO">Creating Session using : alias=session, url=http://10.30.170.48:8181, headers={},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x76b9e6f01c90&gt;, timeout=None, proxies=None, verify=False,                     debug=0 </msg>
<arg>session</arg>
<arg>http://${ODL_SYSTEM_IP}:${RESTCONFPORT}</arg>
<arg>auth=${AUTH}</arg>
<doc>Create Session: create a HTTP session to a server</doc>
<status status="PASS" start="2026-04-08T01:09:02.613664" elapsed="0.000480"/>
</kw>
<kw name="ClusterManagement_Setup" owner="ClusterManagement">
<kw name="Get Variable Value" owner="BuiltIn">
<msg time="2026-04-08T01:09:02.618276" level="INFO">${already_done} = False</msg>
<var>${already_done}</var>
<arg>\${ClusterManagement__has_setup_run}</arg>
<arg>False</arg>
<doc>Returns variable value or ``default`` if the variable does not exist.</doc>
<status status="PASS" start="2026-04-08T01:09:02.614765" elapsed="0.003539"/>
</kw>
<if>
<branch type="IF" condition="${already_done}">
<return>
<status status="NOT RUN" start="2026-04-08T01:09:02.618504" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:09:02.618387" elapsed="0.000162"/>
</branch>
<status status="PASS" start="2026-04-08T01:09:02.618364" elapsed="0.000207"/>
</if>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-08T01:09:02.619054" level="INFO">${ClusterManagement__has_setup_run} = True</msg>
<arg>\${ClusterManagement__has_setup_run}</arg>
<arg>True</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-08T01:09:02.618728" elapsed="0.000370"/>
</kw>
<kw name="Get Variable Value" owner="BuiltIn">
<msg time="2026-04-08T01:09:02.619578" level="INFO">${cluster_size} = 3</msg>
<var>${cluster_size}</var>
<arg>\${NUM_ODL_SYSTEM}</arg>
<arg>1</arg>
<doc>Returns variable value or ``default`` if the variable does not exist.</doc>
<status status="PASS" start="2026-04-08T01:09:02.619269" elapsed="0.000335"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Convert To Integer" owner="BuiltIn">
<arg>${cluster_size}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:09:02.620094" elapsed="0.000299"/>
</kw>
<msg time="2026-04-08T01:09:02.620490" level="INFO">${status} = PASS</msg>
<msg time="2026-04-08T01:09:02.620537" level="INFO">${possibly_int_of_members} = 3</msg>
<var>${status}</var>
<var>${possibly_int_of_members}</var>
<arg>BuiltIn.Convert_To_Integer</arg>
<arg>${cluster_size}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:09:02.619763" elapsed="0.000797"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:09:02.621090" level="INFO">${int_of_members} = 3</msg>
<var>${int_of_members}</var>
<arg>'${status}' != 'PASS'</arg>
<arg>${1}</arg>
<arg>${possibly_int_of_members}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:09:02.620723" elapsed="0.000394"/>
</kw>
<kw name="ClusterManagement__Compute_Derived_Variables" owner="ClusterManagement">
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:09:02.622267" level="INFO">@{member_index_list} = [ ]</msg>
<var>@{member_index_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:09:02.621908" elapsed="0.000394"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:09:02.622753" level="INFO">@{session_list} = [ ]</msg>
<var>@{session_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:09:02.622462" elapsed="0.000319"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-08T01:09:02.623243" level="INFO">&amp;{index_to_ip_mapping} = { }</msg>
<var>&amp;{index_to_ip_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-08T01:09:02.622934" elapsed="0.000337"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="ClusterManagement__Include_Member_Index" owner="ClusterManagement">
<kw name="Append To List" owner="Collections">
<arg>${member_index_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-08T01:09:02.626851" elapsed="0.000268"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:09:02.627694" level="INFO">${member_ip} = 10.30.170.48</msg>
<var>${member_ip}</var>
<arg>${ODL_SYSTEM_${index}_IP}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:09:02.627340" elapsed="0.000382"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${index_to_ip_mapping}</arg>
<arg>${index}</arg>
<arg>${member_ip}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:09:02.627873" elapsed="0.000238"/>
</kw>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:09:02.628904" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:09:02.628607" elapsed="0.000324"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T01:09:02.628976" elapsed="0.000035"/>
</return>
<msg time="2026-04-08T01:09:02.629135" level="INFO">${session_alias} = ClusterManagement__session_1</msg>
<var>${session_alias}</var>
<arg>member_index=${index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T01:09:02.628318" elapsed="0.000857"/>
</kw>
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-04-08T01:09:02.629795" level="INFO">Creating Session using : alias=ClusterManagement__session_1, url=http://10.30.170.48:8181, headers={},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x76b9f4382150&gt;, timeout=5, proxies=None, verify=False,                     debug=0 </msg>
<arg>${session_alias}</arg>
<arg>http://${member_ip}:${RESTCONFPORT}</arg>
<arg>auth=${AUTH}</arg>
<arg>timeout=${http_timeout}</arg>
<arg>max_retries=${http_retries}</arg>
<doc>Create Session: create a HTTP session to a server</doc>
<status status="PASS" start="2026-04-08T01:09:02.629327" elapsed="0.000587"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${session_list}</arg>
<arg>${session_alias}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-08T01:09:02.630072" elapsed="0.000209"/>
</kw>
<arg>${index}</arg>
<arg>${member_index_list}</arg>
<arg>${session_list}</arg>
<arg>${index_to_ip_mapping}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>http_retries=${http_retries}</arg>
<doc>Add a corresponding item based on index into the last three arguments.
Create the Http session whose alias is added to list.</doc>
<status status="PASS" start="2026-04-08T01:09:02.626039" elapsed="0.004367"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T01:09:02.625804" elapsed="0.004648"/>
</iter>
<iter>
<kw name="ClusterManagement__Include_Member_Index" owner="ClusterManagement">
<kw name="Append To List" owner="Collections">
<arg>${member_index_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-08T01:09:02.631280" elapsed="0.000386"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:09:02.632149" level="INFO">${member_ip} = 10.30.170.131</msg>
<var>${member_ip}</var>
<arg>${ODL_SYSTEM_${index}_IP}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:09:02.631821" elapsed="0.000369"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${index_to_ip_mapping}</arg>
<arg>${index}</arg>
<arg>${member_ip}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:09:02.632339" elapsed="0.000222"/>
</kw>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:09:02.633366" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:09:02.633048" elapsed="0.000344"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T01:09:02.633437" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T01:09:02.633588" level="INFO">${session_alias} = ClusterManagement__session_2</msg>
<var>${session_alias}</var>
<arg>member_index=${index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T01:09:02.632742" elapsed="0.000872"/>
</kw>
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-04-08T01:09:02.634198" level="INFO">Creating Session using : alias=ClusterManagement__session_2, url=http://10.30.170.131:8181, headers={},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x76b9f4408dd0&gt;, timeout=5, proxies=None, verify=False,                     debug=0 </msg>
<arg>${session_alias}</arg>
<arg>http://${member_ip}:${RESTCONFPORT}</arg>
<arg>auth=${AUTH}</arg>
<arg>timeout=${http_timeout}</arg>
<arg>max_retries=${http_retries}</arg>
<doc>Create Session: create a HTTP session to a server</doc>
<status status="PASS" start="2026-04-08T01:09:02.633776" elapsed="0.000527"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${session_list}</arg>
<arg>${session_alias}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-08T01:09:02.634458" elapsed="0.000189"/>
</kw>
<arg>${index}</arg>
<arg>${member_index_list}</arg>
<arg>${session_list}</arg>
<arg>${index_to_ip_mapping}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>http_retries=${http_retries}</arg>
<doc>Add a corresponding item based on index into the last three arguments.
Create the Http session whose alias is added to list.</doc>
<status status="PASS" start="2026-04-08T01:09:02.630708" elapsed="0.003997"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T01:09:02.630537" elapsed="0.004212"/>
</iter>
<iter>
<kw name="ClusterManagement__Include_Member_Index" owner="ClusterManagement">
<kw name="Append To List" owner="Collections">
<arg>${member_index_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-08T01:09:02.635563" elapsed="0.000186"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:09:02.636236" level="INFO">${member_ip} = 10.30.171.110</msg>
<var>${member_ip}</var>
<arg>${ODL_SYSTEM_${index}_IP}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:09:02.635900" elapsed="0.000362"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${index_to_ip_mapping}</arg>
<arg>${index}</arg>
<arg>${member_ip}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:09:02.636405" elapsed="0.000218"/>
</kw>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:09:02.637395" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:09:02.637084" elapsed="0.000336"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-08T01:09:02.637463" elapsed="0.000028"/>
</return>
<msg time="2026-04-08T01:09:02.637609" level="INFO">${session_alias} = ClusterManagement__session_3</msg>
<var>${session_alias}</var>
<arg>member_index=${index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-08T01:09:02.636801" elapsed="0.000832"/>
</kw>
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-04-08T01:09:02.638275" level="INFO">Creating Session using : alias=ClusterManagement__session_3, url=http://10.30.171.110:8181, headers={},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x76b9f42d22d0&gt;, timeout=5, proxies=None, verify=False,                     debug=0 </msg>
<arg>${session_alias}</arg>
<arg>http://${member_ip}:${RESTCONFPORT}</arg>
<arg>auth=${AUTH}</arg>
<arg>timeout=${http_timeout}</arg>
<arg>max_retries=${http_retries}</arg>
<doc>Create Session: create a HTTP session to a server</doc>
<status status="PASS" start="2026-04-08T01:09:02.637813" elapsed="0.001047"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${session_list}</arg>
<arg>${session_alias}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-08T01:09:02.639065" elapsed="0.000273"/>
</kw>
<arg>${index}</arg>
<arg>${member_index_list}</arg>
<arg>${session_list}</arg>
<arg>${index_to_ip_mapping}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>http_retries=${http_retries}</arg>
<doc>Add a corresponding item based on index into the last three arguments.
Create the Http session whose alias is added to list.</doc>
<status status="PASS" start="2026-04-08T01:09:02.635001" elapsed="0.004418"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T01:09:02.634831" elapsed="0.004645"/>
</iter>
<var>${index}</var>
<value>1</value>
<value>${int_of_members+1}</value>
<status status="PASS" start="2026-04-08T01:09:02.623325" elapsed="0.016190"/>
</for>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-08T01:09:02.640222" level="INFO">${ClusterManagement__member_index_list} = [1, 2, 3]</msg>
<arg>\${ClusterManagement__member_index_list}</arg>
<arg>${member_index_list}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-08T01:09:02.639723" elapsed="0.000554"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-08T01:09:02.641084" level="INFO">${ClusterManagement__index_to_ip_mapping} = {1: '10.30.170.48', 2: '10.30.170.131', 3: '10.30.171.110'}</msg>
<arg>\${ClusterManagement__index_to_ip_mapping}</arg>
<arg>${index_to_ip_mapping}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-08T01:09:02.640480" elapsed="0.000661"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-08T01:09:02.641902" level="INFO">${ClusterManagement__session_list} = ['ClusterManagement__session_1', 'ClusterManagement__session_2', 'ClusterManagement__session_3']</msg>
<arg>\${ClusterManagement__session_list}</arg>
<arg>${session_list}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-08T01:09:02.641426" elapsed="0.000526"/>
</kw>
<arg>int_of_members=${int_of_members}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>http_retries=${http_retries}</arg>
<doc>Construct index list, session list and IP mapping, publish them as suite variables.</doc>
<status status="PASS" start="2026-04-08T01:09:02.621381" elapsed="0.020633"/>
</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-04-08T01:09:02.614467" elapsed="0.027606"/>
</kw>
<doc>Create controller session and set variables.</doc>
<status status="PASS" start="2026-04-08T01:09:02.613413" elapsed="0.028709"/>
</kw>
<test id="s1-s8-t1" name="Start Mininet Multiple Connections" line="15">
<kw name="List_All_Indices" owner="ClusterManagement">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:09:02.646351" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:09:02.645924" elapsed="0.000462"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:09:02.646857" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:09:02.646546" elapsed="0.000338"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T01:09:02.646930" elapsed="0.000032"/>
</return>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T01:09:02.643687" elapsed="0.003373"/>
</kw>
<msg time="2026-04-08T01:09:02.647097" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>List_Indices_Or_All</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:09:02.643233" elapsed="0.003912"/>
</kw>
<msg time="2026-04-08T01:09:02.647267" level="INFO">${cluster_index_list} = [1, 2, 3]</msg>
<var>${cluster_index_list}</var>
<doc>Create a new list of all indices.</doc>
<status status="PASS" start="2026-04-08T01:09:02.642883" elapsed="0.004409"/>
</kw>
<kw name="Start Mininet Multiple Controllers" owner="MininetKeywords">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:09:02.654594" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:09:02.654206" elapsed="0.000416"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:09:02.655081" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:09:02.654777" elapsed="0.000329"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T01:09:02.655150" elapsed="0.000046"/>
</return>
<msg time="2026-04-08T01:09:02.655323" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${controller_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T01:09:02.653815" elapsed="0.001534"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:09:02.655769" level="INFO">Clear any existing mininet</msg>
<arg>Clear any existing mininet</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:09:02.655554" elapsed="0.000260"/>
</kw>
<kw name="Clean Mininet System" owner="Utils">
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:02.658231" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:09:02.657939" elapsed="0.000349"/>
</branch>
<status status="PASS" start="2026-04-08T01:09:02.657916" elapsed="0.000396"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:09:02.658620" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T01:09:02.658457" elapsed="0.000290"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:09:02.659280" level="INFO">Attempting to execute command "sudo mn -c" on remote system "10.30.170.192" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:09:02.658891" elapsed="0.000435"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:09:02.659836" level="INFO">${conn_id} = 677</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T01:09:02.659475" elapsed="0.000387"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T01:09:02.660734" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T01:09:02.660809" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T01:09:02.660467" elapsed="0.000366"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:09:02.660983" elapsed="0.000329"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T01:09:02.662556" level="INFO">Logging into '10.30.170.192:22' as 'jenkins'.</msg>
<msg time="2026-04-08T01:09:03.311884" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 01:09:02 UTC 2026

  System load:  0.04               Processes:             108
  Usage of /:   19.5% of 38.58GB   Users logged in:       0
  Memory usage: 5%                 IPv4 address for ens3: 10.30.170.192
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 01:07:41 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-1-mininet-ovs-217-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T01:09:02.662083" elapsed="0.649960"/>
</kw>
<msg time="2026-04-08T01:09:03.312130" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:09:02.661515" elapsed="0.650721"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T01:09:02.660068" elapsed="0.652287"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T01:09:03.312846" level="INFO">Executing command 'sudo mn -c'.</msg>
<msg time="2026-04-08T01:09:04.440758" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-08T01:09:04.441146" level="INFO">${stdout} = </msg>
<msg time="2026-04-08T01:09:04.441304" level="INFO">${stderr} = *** Removing excess controllers/ofprotocols/ofdatapaths/pings/noxes
killall controller ofprotocol ofdatapath ping nox_corelt-nox_core ovs-openflowd ovs-controllerovs-testcontroller udpbwtest mnexec iv...</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T01:09:03.312598" elapsed="1.128764"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T01:09:04.441890" elapsed="0.000666"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:09:04.443623" level="INFO">*** Removing excess controllers/ofprotocols/ofdatapaths/pings/noxes
killall controller ofprotocol ofdatapath ping nox_corelt-nox_core ovs-openflowd ovs-controllerovs-testcontroller udpbwtest mnexec ivs ryu-manager 2&gt; /dev/null
killall -9 controller ofprotocol ofdatapath ping nox_corelt-nox_core ovs-openflowd ovs-controllerovs-testcontroller udpbwtest mnexec ivs ryu-manager 2&gt; /dev/null
pkill -9 -f "sudo mnexec"
*** Removing junk from /tmp
rm -f /tmp/vconn* /tmp/vlogs* /tmp/*.out /tmp/*.log
*** Removing old X11 tunnels
*** Removing excess kernel datapaths
ps ax | egrep -o 'dp[0-9]+' | sed 's/dp/nl:/'
***  Removing OVS datapaths
ovs-vsctl --timeout=1 list-br
ovs-vsctl --timeout=1 list-br
*** Removing all links of the pattern foo-ethX
ip link show | egrep -o '([-_.[:alnum:]]+-eth[[:digit:]]+)'
ip link show
*** Killing stale mininet node processes
pkill -9 -f mininet:
*** Shutting down stale tunnels
pkill -9 -f Tunnel=Ethernet
pkill -9 -f .ssh/mn
rm -f ~/.ssh/mn/*
*** Cleanup complete.</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:09:04.442961" elapsed="0.000785"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T01:09:04.444240" elapsed="0.000039"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:09:04.443918" elapsed="0.000432"/>
</branch>
<status status="PASS" start="2026-04-08T01:09:04.443868" elapsed="0.000559"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T01:09:04.444791" elapsed="0.000067"/>
</return>
<status status="PASS" start="2026-04-08T01:09:04.444552" elapsed="0.000378"/>
</branch>
<status status="PASS" start="2026-04-08T01:09:04.444518" elapsed="0.000465"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T01:09:04.445064" elapsed="0.000031"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:09:04.450020" elapsed="0.000474"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T01:09:04.450719" elapsed="0.000217"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T01:09:04.451133" elapsed="0.000159"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:09:04.445773" elapsed="0.005595"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T01:09:02.657382" elapsed="1.794114"/>
</kw>
<msg time="2026-04-08T01:09:04.451573" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:09:02.656834" elapsed="1.794811"/>
</kw>
<arg>${system}</arg>
<arg>sudo mn -c</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-08T01:09:02.656365" elapsed="1.795391"/>
</kw>
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:04.454703" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:09:04.454334" elapsed="0.000449"/>
</branch>
<status status="PASS" start="2026-04-08T01:09:04.454309" elapsed="0.000507"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:09:04.455221" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T01:09:04.455015" elapsed="0.000388"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:09:04.456132" level="INFO">Attempting to execute command "sudo ps -elf | egrep 'usr/local/bin/mn' | egrep python | awk '{print "sudo kill -9",$4}' | sh" on remote system "10.30.170.192" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:09:04.455606" elapsed="0.000615"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:09:04.456974" level="INFO">${conn_id} = 679</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T01:09:04.456459" elapsed="0.000541"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T01:09:04.457885" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T01:09:04.457960" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T01:09:04.457610" elapsed="0.000373"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:09:04.458131" elapsed="0.000529"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T01:09:04.459504" level="INFO">Logging into '10.30.170.192:22' as 'jenkins'.</msg>
<msg time="2026-04-08T01:09:04.786742" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 01:09:02 UTC 2026

  System load:  0.04               Processes:             108
  Usage of /:   19.5% of 38.58GB   Users logged in:       0
  Memory usage: 5%                 IPv4 address for ens3: 10.30.170.192
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 01:09:03 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-1-mininet-ovs-217-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T01:09:04.459189" elapsed="0.327684"/>
</kw>
<msg time="2026-04-08T01:09:04.786953" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:09:04.458827" elapsed="0.328204"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T01:09:04.457226" elapsed="0.329909"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T01:09:04.787638" level="INFO">Executing command 'sudo ps -elf | egrep 'usr/local/bin/mn' | egrep python | awk '{print "sudo kill -9",$4}' | sh'.</msg>
<msg time="2026-04-08T01:09:04.820409" level="INFO">Command exited with return code -1.</msg>
<msg time="2026-04-08T01:09:04.820651" level="INFO">${stdout} = </msg>
<msg time="2026-04-08T01:09:04.820746" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T01:09:04.787392" elapsed="0.033404"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T01:09:04.821213" elapsed="0.000470"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:09:04.822717" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:09:04.822078" elapsed="0.000729"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T01:09:04.823431" elapsed="0.000035"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:09:04.823112" elapsed="0.000424"/>
</branch>
<status status="PASS" start="2026-04-08T01:09:04.823061" elapsed="0.000524"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T01:09:04.823956" elapsed="0.000058"/>
</return>
<status status="PASS" start="2026-04-08T01:09:04.823715" elapsed="0.000369"/>
</branch>
<status status="PASS" start="2026-04-08T01:09:04.823677" elapsed="0.000459"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T01:09:04.824245" elapsed="0.000033"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:09:04.830467" elapsed="0.000385"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T01:09:04.831016" elapsed="0.000182"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T01:09:04.831357" elapsed="0.000126"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:09:04.824977" elapsed="0.006645"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T01:09:04.453490" elapsed="0.378238"/>
</kw>
<msg time="2026-04-08T01:09:04.831784" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:09:04.452710" elapsed="0.379126"/>
</kw>
<arg>${system}</arg>
<arg>sudo ps -elf | egrep 'usr/local/bin/mn' | egrep python | awk '{print "sudo kill -9",$4}' | sh</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-08T01:09:04.451989" elapsed="0.379931"/>
</kw>
<arg>${mininet}</arg>
<status status="PASS" start="2026-04-08T01:09:02.656006" elapsed="2.175974"/>
</kw>
<kw name="Open_Connection_To_Tools_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:09:04.836784" level="INFO">${tools_connection} = 681</msg>
<var>${tools_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T01:09:04.836413" elapsed="0.000398"/>
</kw>
<kw name="Flexible_Mininet_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T01:09:04.838999" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T01:09:04.839109" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T01:09:04.838638" elapsed="0.000503"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:09:04.839339" elapsed="0.000377"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T01:09:04.842620" level="INFO">Logging into '10.30.170.192:22' as 'jenkins'.</msg>
<msg time="2026-04-08T01:09:05.211643" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 01:09:02 UTC 2026

  System load:  0.04               Processes:             108
  Usage of /:   19.5% of 38.58GB   Users logged in:       0
  Memory usage: 5%                 IPv4 address for ens3: 10.30.170.192
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 01:09:04 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-1-mininet-ovs-217-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T01:09:04.840323" elapsed="0.371502"/>
</kw>
<msg time="2026-04-08T01:09:05.211909" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:09:04.839900" elapsed="0.372113"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T01:09:04.838025" elapsed="0.374121"/>
</kw>
<msg time="2026-04-08T01:09:05.212216" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:09:04.837540" elapsed="0.374724"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-08T01:09:04.837047" elapsed="0.375295"/>
</kw>
<return>
<value>${tools_connection}</value>
<status status="PASS" start="2026-04-08T01:09:05.212398" elapsed="0.000050"/>
</return>
<msg time="2026-04-08T01:09:05.212641" level="INFO">${mininet_conn_id} = 681</msg>
<var>${mininet_conn_id}</var>
<arg>ip_address=${mininet}</arg>
<arg>timeout=${timeout}</arg>
<doc>Open a connection to the tools system at ${ip_address} and return its identifier.</doc>
<status status="PASS" start="2026-04-08T01:09:04.835908" elapsed="0.376760"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-08T01:09:05.213446" level="INFO">${mininet_conn_id} = 681</msg>
<arg>${mininet_conn_id}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-08T01:09:05.212958" elapsed="0.000532"/>
</kw>
<if>
<branch type="IF" condition="'${custom}' != '${EMPTY}'">
<kw name="Put File" owner="SSHLibrary">
<arg>${custom}</arg>
<doc>Uploads file(s) from the local machine to the remote machine.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:05.215682" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:09:05.213577" elapsed="0.002161"/>
</branch>
<status status="PASS" start="2026-04-08T01:09:05.213553" elapsed="0.002209"/>
</if>
<if>
<branch type="IF" condition="'${protocol}' == 'ssl'">
<kw name="Install Certificates In Mininet" owner="MininetKeywords">
<doc>Copy and install certificates in simulator.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:05.216116" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:09:05.215818" elapsed="0.000370"/>
</branch>
<status status="PASS" start="2026-04-08T01:09:05.215802" elapsed="0.000411"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:09:05.216639" level="INFO">Start mininet --topo tree,1</msg>
<arg>Start mininet ${options}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:09:05.216369" elapsed="0.000315"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:09:05.218036" level="INFO">sudo mn --topo tree,1</msg>
<arg>sudo mn ${options}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:09:05.216841" elapsed="0.001250"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-08T01:09:05.384943" level="INFO">[?2004l*** No default OpenFlow controller found for default switch!
*** Falling back to OVS Bridge
*** Creating network
*** Adding controller
*** Adding hosts:
h1 h2 
*** Adding switches:
s1 
*** Adding links:
(s1, h1) (s1, h2) 
*** Configuring hosts
h1 h2 
*** Starting controller

*** Starting 1 switches
s1 ...
*** Starting CLI:
mininet&gt;</msg>
<arg>mininet&gt;</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-08T01:09:05.218485" elapsed="0.166531"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:09:05.385453" level="INFO">Create controller configuration</msg>
<arg>Create controller configuration</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:09:05.385216" elapsed="0.000282"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:09:05.385953" level="INFO">${controller_opt} = </msg>
<var>${controller_opt}</var>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:09:05.385700" elapsed="0.000278"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:09:05.386800" level="INFO">${controller_opt} =   tcp:10.30.170.48:6633</msg>
<var>${controller_opt}</var>
<arg>${controller_opt}</arg>
<arg>${SPACE}${protocol}:${ODL_SYSTEM_${index}_IP}:${ofport}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:09:05.386361" elapsed="0.000465"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:09:05.387247" level="INFO">  tcp:10.30.170.48:6633</msg>
<arg>${controller_opt}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:09:05.386990" elapsed="0.000301"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-08T01:09:05.386214" elapsed="0.001110"/>
</iter>
<iter>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:09:05.387986" level="INFO">${controller_opt} =   tcp:10.30.170.48:6633  tcp:10.30.170.131:6633</msg>
<var>${controller_opt}</var>
<arg>${controller_opt}</arg>
<arg>${SPACE}${protocol}:${ODL_SYSTEM_${index}_IP}:${ofport}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:09:05.387552" elapsed="0.000460"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:09:05.388438" level="INFO">  tcp:10.30.170.48:6633  tcp:10.30.170.131:6633</msg>
<arg>${controller_opt}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:09:05.388191" elapsed="0.000291"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-08T01:09:05.387415" elapsed="0.001100"/>
</iter>
<iter>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:09:05.389184" level="INFO">${controller_opt} =   tcp:10.30.170.48:6633  tcp:10.30.170.131:6633  tcp:10.30.171.110:6633</msg>
<var>${controller_opt}</var>
<arg>${controller_opt}</arg>
<arg>${SPACE}${protocol}:${ODL_SYSTEM_${index}_IP}:${ofport}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:09:05.388740" elapsed="0.000471"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:09:05.389613" level="INFO">  tcp:10.30.170.48:6633  tcp:10.30.170.131:6633  tcp:10.30.171.110:6633</msg>
<arg>${controller_opt}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:09:05.389374" elapsed="0.000298"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-08T01:09:05.388602" elapsed="0.001106"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-08T01:09:05.386039" elapsed="0.003698"/>
</for>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:09:05.390104" level="INFO">Open extra SSH connection to configure the OVS bridges</msg>
<arg>Open extra SSH connection to configure the OVS bridges</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:09:05.389896" elapsed="0.000252"/>
</kw>
<kw name="Open_Connection_To_Tools_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:09:05.395267" level="INFO">${tools_connection} = 682</msg>
<var>${tools_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T01:09:05.394860" elapsed="0.000433"/>
</kw>
<kw name="Flexible_Mininet_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T01:09:05.396997" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T01:09:05.397072" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T01:09:05.396718" elapsed="0.000377"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:09:05.397261" elapsed="0.000319"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T01:09:05.398460" level="INFO">Logging into '10.30.170.192:22' as 'jenkins'.</msg>
<msg time="2026-04-08T01:09:05.760241" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 01:09:02 UTC 2026

  System load:  0.04               Processes:             108
  Usage of /:   19.5% of 38.58GB   Users logged in:       0
  Memory usage: 5%                 IPv4 address for ens3: 10.30.170.192
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 01:09:05 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-1-mininet-ovs-217-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T01:09:05.398132" elapsed="0.362290"/>
</kw>
<msg time="2026-04-08T01:09:05.760556" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:09:05.397782" elapsed="0.362894"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T01:09:05.396242" elapsed="0.364618"/>
</kw>
<msg time="2026-04-08T01:09:05.760967" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:09:05.395843" elapsed="0.365222"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-08T01:09:05.395468" elapsed="0.365880"/>
</kw>
<return>
<value>${tools_connection}</value>
<status status="PASS" start="2026-04-08T01:09:05.761441" elapsed="0.000070"/>
</return>
<arg>ip_address=${mininet}</arg>
<arg>timeout=${timeout}</arg>
<doc>Open a connection to the tools system at ${ip_address} and return its identifier.</doc>
<status status="PASS" start="2026-04-08T01:09:05.394349" elapsed="0.367435"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T01:09:05.762554" level="INFO">Executing command 'sudo ovs-vsctl show | grep Bridge | wc -l'.</msg>
<msg time="2026-04-08T01:09:05.785522" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-08T01:09:05.785747" level="INFO">${num_bridges} = 1</msg>
<var>${num_bridges}</var>
<arg>sudo ovs-vsctl show | grep Bridge | wc -l</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T01:09:05.762296" elapsed="0.023508"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:09:05.787050" level="INFO">${num_bridges} = 1</msg>
<var>${num_bridges}</var>
<arg>${num_bridges}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:09:05.786291" elapsed="0.000817"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:09:05.788060" level="INFO">${bridges} = []</msg>
<var>${bridges}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:09:05.787522" elapsed="0.000594"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T01:09:05.794269" level="INFO">Executing command 'sudo ovs-vsctl show | grep Bridge | cut -c 12- | sort | head -1 | tail -1'.</msg>
<msg time="2026-04-08T01:09:05.848393" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-08T01:09:05.848621" level="INFO">${bridge} = s1</msg>
<var>${bridge}</var>
<arg>sudo ovs-vsctl show | grep Bridge | cut -c 12- | sort | head -${i} | tail -1</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T01:09:05.793910" elapsed="0.054767"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T01:09:05.849723" level="INFO">Executing command 'sudo ovs-vsctl del-controller s1 &amp;&amp; sudo ovs-vsctl set bridge s1 protocols=OpenFlow13'.</msg>
<msg time="2026-04-08T01:09:05.932894" level="INFO">Command exited with return code 0.</msg>
<arg>sudo ovs-vsctl del-controller ${bridge} &amp;&amp; sudo ovs-vsctl set bridge ${bridge} protocols=OpenFlow${ofversion}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T01:09:05.849044" elapsed="0.083991"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${bridges}</arg>
<arg>${bridge}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-08T01:09:05.933429" elapsed="0.000478"/>
</kw>
<var name="${i}">1</var>
<status status="PASS" start="2026-04-08T01:09:05.793595" elapsed="0.140401"/>
</iter>
<var>${i}</var>
<value>1</value>
<value>${num_bridges+1}</value>
<status status="PASS" start="2026-04-08T01:09:05.788259" elapsed="0.145809"/>
</for>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:09:05.935131" level="INFO">Configure OVS controllers   tcp:10.30.170.48:6633  tcp:10.30.170.131:6633  tcp:10.30.171.110:6633 in all bridges</msg>
<arg>Configure OVS controllers ${controller_opt} in all bridges</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:09:05.934523" elapsed="0.000742"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T01:09:05.936352" level="INFO">Executing command 'sudo ovs-vsctl set-controller s1   tcp:10.30.170.48:6633  tcp:10.30.170.131:6633  tcp:10.30.171.110:6633'.</msg>
<msg time="2026-04-08T01:09:05.988141" level="INFO">Command exited with return code 0.</msg>
<arg>sudo ovs-vsctl set-controller ${bridge} ${controller_opt}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T01:09:05.935960" elapsed="0.052356"/>
</kw>
<var name="${bridge}">s1</var>
<status status="PASS" start="2026-04-08T01:09:05.935671" elapsed="0.052728"/>
</iter>
<var>${bridge}</var>
<value>@{bridges}</value>
<status status="PASS" start="2026-04-08T01:09:05.935378" elapsed="0.053088"/>
</for>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:09:05.989397" level="INFO">Check OVS configuratiom</msg>
<arg>Check OVS configuratiom</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:09:05.988849" elapsed="0.000648"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T01:09:05.990257" level="INFO">Executing command 'sudo ovs-vsctl show'.</msg>
<msg time="2026-04-08T01:09:06.048655" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-08T01:09:06.048888" level="INFO">${output} = 9a5df812-eb49-4477-a37e-2d464c02791d
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.48:6633"
        Controller "tcp:10.30.171.110:6633"
        Controller "tcp:10.30.170.131:...</msg>
<var>${output}</var>
<arg>sudo ovs-vsctl show</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T01:09:05.989842" elapsed="0.059105"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:09:06.049945" level="INFO">9a5df812-eb49-4477-a37e-2d464c02791d
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.48:6633"
        Controller "tcp:10.30.171.110:6633"
        Controller "tcp:10.30.170.131:6633"
        fail_mode: standalone
        Port s1-eth2
            Interface s1-eth2
        Port s1-eth1
            Interface s1-eth1
        Port s1
            Interface s1
                type: internal
    ovs_version: "2.17.11"</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:09:06.049373" elapsed="0.000676"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T01:09:06.050407" elapsed="0.000515"/>
</kw>
<return>
<value>${mininet_conn_id}</value>
<status status="PASS" start="2026-04-08T01:09:06.051024" elapsed="0.000081"/>
</return>
<msg time="2026-04-08T01:09:06.051452" level="INFO">${mininet_conn_id} = 681</msg>
<var>${mininet_conn_id}</var>
<arg>${TOOLS_SYSTEM_IP}</arg>
<arg>${cluster_index_list}</arg>
<doc>Start Mininet with custom topology and connect to list of controllers in ${controller_index_list} or all if no list is provided.</doc>
<status status="PASS" start="2026-04-08T01:09:02.651486" elapsed="3.400022"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-08T01:09:06.052673" level="INFO">${cluster_index_list} = [1, 2, 3]</msg>
<arg>${cluster_index_list}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-08T01:09:06.051912" elapsed="0.000852"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-08T01:09:06.053808" level="INFO">${mininet_conn_id} = 681</msg>
<arg>${mininet_conn_id}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-08T01:09:06.053103" elapsed="0.000795"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Check OVS OpenFlow Connections" owner="OVSDB">
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:06.071150" elapsed="0.000038"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:09:06.070832" elapsed="0.000393"/>
</branch>
<status status="PASS" start="2026-04-08T01:09:06.070797" elapsed="0.000453"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:09:06.071543" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T01:09:06.071396" elapsed="0.000276"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:09:06.072210" level="INFO">Attempting to execute command "sudo ovs-vsctl show" on remote system "10.30.170.192" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:09:06.071817" elapsed="0.000440"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:09:06.072780" level="INFO">${conn_id} = 683</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T01:09:06.072408" elapsed="0.000397"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T01:09:06.073689" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T01:09:06.073764" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T01:09:06.073415" elapsed="0.000373"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:09:06.073938" elapsed="0.000337"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T01:09:06.075146" level="INFO">Logging into '10.30.170.192:22' as 'jenkins'.</msg>
<msg time="2026-04-08T01:09:06.406987" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 01:09:02 UTC 2026

  System load:  0.04               Processes:             108
  Usage of /:   19.5% of 38.58GB   Users logged in:       0
  Memory usage: 5%                 IPv4 address for ens3: 10.30.170.192
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 01:09:05 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-1-mininet-ovs-217-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T01:09:06.074828" elapsed="0.332300"/>
</kw>
<msg time="2026-04-08T01:09:06.407225" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:09:06.074437" elapsed="0.332871"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T01:09:06.073015" elapsed="0.334403"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T01:09:06.407919" level="INFO">Executing command 'sudo ovs-vsctl show'.</msg>
<msg time="2026-04-08T01:09:06.470735" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-08T01:09:06.470917" level="INFO">${stdout} = 9a5df812-eb49-4477-a37e-2d464c02791d
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.48:6633"
        Controller "tcp:10.30.171.110:6633"
        Controller "tcp:10.30.170.131:...</msg>
<msg time="2026-04-08T01:09:06.470998" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T01:09:06.407664" elapsed="0.063368"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T01:09:06.471300" elapsed="0.000330"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:09:06.472330" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:09:06.471909" elapsed="0.000479"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T01:09:06.472704" elapsed="0.000023"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:09:06.472506" elapsed="0.000266"/>
</branch>
<status status="PASS" start="2026-04-08T01:09:06.472471" elapsed="0.000334"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T01:09:06.473027" elapsed="0.000040"/>
</return>
<status status="PASS" start="2026-04-08T01:09:06.472878" elapsed="0.000232"/>
</branch>
<status status="PASS" start="2026-04-08T01:09:06.472858" elapsed="0.000285"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T01:09:06.473215" elapsed="0.000020"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:09:06.476940" elapsed="0.000474"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T01:09:06.477636" elapsed="0.000219"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T01:09:06.478051" elapsed="0.000244"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:09:06.473659" elapsed="0.004711"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T01:09:06.069990" elapsed="0.408509"/>
</kw>
<msg time="2026-04-08T01:09:06.478578" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:09:06.069077" elapsed="0.409573"/>
</kw>
<msg time="2026-04-08T01:09:06.478810" level="INFO">${output} = 9a5df812-eb49-4477-a37e-2d464c02791d
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.48:6633"
        Controller "tcp:10.30.171.110:6633"
        Controller "tcp:10.30.170.131:...</msg>
<var>${output}</var>
<arg>${tools_system}</arg>
<arg>sudo ovs-vsctl show</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-08T01:09:06.068399" elapsed="0.410448"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:09:06.479477" level="INFO">9a5df812-eb49-4477-a37e-2d464c02791d
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.48:6633"
        Controller "tcp:10.30.171.110:6633"
        Controller "tcp:10.30.170.131:6633"
        fail_mode: standalone
        Port s1-eth2
            Interface s1-eth2
        Port s1-eth1
            Interface s1-eth1
        Port s1
            Interface s1
                type: internal
    ovs_version: "2.17.11"</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:09:06.479105" elapsed="0.000439"/>
</kw>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T01:09:06.480141" level="INFO">Item found from container 0 times.</msg>
<msg time="2026-04-08T01:09:06.480269" level="FAIL">'9a5df812-eb49-4477-a37e-2d464c02791d\n    Manager "ptcp:6644"\n    Bridge s1\n        Controller "tcp:10.30.170.48:6633"\n        Controller "tcp:10.30.171.110:6633"\n        Controller "tcp:10.30.170.131:6633"\n        fail_mode: standalone\n        Port s1-eth2\n            Interface s1-eth2\n        Port s1-eth1\n            Interface s1-eth1\n        Port s1\n            Interface s1\n                type: internal\n    ovs_version: "2.17.11"' contains 'is_connected' 0 times, not 3 times.</msg>
<arg>${output}</arg>
<arg>is_connected</arg>
<arg>${of_connections}</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="FAIL" start="2026-04-08T01:09:06.479752" elapsed="0.000599">'9a5df812-eb49-4477-a37e-2d464c02791d\n    Manager "ptcp:6644"\n    Bridge s1\n        Controller "tcp:10.30.170.48:6633"\n        Controller "tcp:10.30.171.110:6633"\n        Controller "tcp:10.30.170.131:6633"\n        fail_mode: standalone\n        Port s1-eth2\n            Interface s1-eth2\n        Port s1-eth1\n            Interface s1-eth1\n        Port s1\n            Interface s1\n                type: internal\n    ovs_version: "2.17.11"' contains 'is_connected' 0 times, not 3 times.</status>
</kw>
<arg>${TOOLS_SYSTEM_IP}</arg>
<arg>3</arg>
<doc>Check OVS instance with IP ${tools_system} has ${of_connections} OpenFlow connections.</doc>
<status status="FAIL" start="2026-04-08T01:09:06.067811" elapsed="0.412659">'9a5df812-eb49-4477-a37e-2d464c02791d\n    Manager "ptcp:6644"\n    Bridge s1\n        Controller "tcp:10.30.170.48:6633"\n        Controller "tcp:10.30.171.110:6633"\n        Controller "tcp:10.30.170.131:6633"\n        fail_mode: standalone\n        Port s1-eth2\n            Interface s1-eth2\n        Port s1-eth1\n            Interface s1-eth1\n        Port s1\n            Interface s1\n                type: internal\n    ovs_version: "2.17.11"' contains 'is_connected' 0 times, not 3 times.</status>
</kw>
<kw name="Check OVS OpenFlow Connections" owner="OVSDB">
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:07.498143" elapsed="0.000048"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:09:07.497833" elapsed="0.000413"/>
</branch>
<status status="PASS" start="2026-04-08T01:09:07.497810" elapsed="0.000461"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:09:07.498587" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T01:09:07.498419" elapsed="0.000309"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:09:07.499281" level="INFO">Attempting to execute command "sudo ovs-vsctl show" on remote system "10.30.170.192" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:09:07.498875" elapsed="0.000455"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:09:07.499850" level="INFO">${conn_id} = 685</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T01:09:07.499480" elapsed="0.000396"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T01:09:07.501081" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T01:09:07.501180" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T01:09:07.500787" elapsed="0.000419"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:09:07.501363" elapsed="0.000328"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T01:09:07.502622" level="INFO">Logging into '10.30.170.192:22' as 'jenkins'.</msg>
<msg time="2026-04-08T01:09:07.832083" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 01:09:02 UTC 2026

  System load:  0.04               Processes:             108
  Usage of /:   19.5% of 38.58GB   Users logged in:       0
  Memory usage: 5%                 IPv4 address for ens3: 10.30.170.192
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 01:09:06 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-1-mininet-ovs-217-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T01:09:07.502302" elapsed="0.329962"/>
</kw>
<msg time="2026-04-08T01:09:07.832354" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:09:07.501857" elapsed="0.330600"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T01:09:07.500085" elapsed="0.332496"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T01:09:07.833128" level="INFO">Executing command 'sudo ovs-vsctl show'.</msg>
<msg time="2026-04-08T01:09:07.896494" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-08T01:09:07.896796" level="INFO">${stdout} = 9a5df812-eb49-4477-a37e-2d464c02791d
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.48:6633"
        Controller "tcp:10.30.171.110:6633"
        Controller "tcp:10.30.170.131:...</msg>
<msg time="2026-04-08T01:09:07.896959" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T01:09:07.832841" elapsed="0.064175"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T01:09:07.897461" elapsed="0.000529"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:09:07.899143" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:09:07.898478" elapsed="0.000801"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T01:09:07.899769" elapsed="0.000055"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:09:07.899462" elapsed="0.000444"/>
</branch>
<status status="PASS" start="2026-04-08T01:09:07.899409" elapsed="0.000550"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T01:09:07.900393" elapsed="0.000070"/>
</return>
<status status="PASS" start="2026-04-08T01:09:07.900085" elapsed="0.000454"/>
</branch>
<status status="PASS" start="2026-04-08T01:09:07.900049" elapsed="0.000543"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T01:09:07.900670" elapsed="0.000033"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:09:07.905917" elapsed="0.000475"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T01:09:07.906615" elapsed="0.000242"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T01:09:07.907054" elapsed="0.000157"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:09:07.901396" elapsed="0.005890"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T01:09:07.497289" elapsed="0.410126"/>
</kw>
<msg time="2026-04-08T01:09:07.907496" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:09:07.496655" elapsed="0.410912"/>
</kw>
<msg time="2026-04-08T01:09:07.907727" level="INFO">${output} = 9a5df812-eb49-4477-a37e-2d464c02791d
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.48:6633"
        Controller "tcp:10.30.171.110:6633"
        Controller "tcp:10.30.170.131:...</msg>
<var>${output}</var>
<arg>${tools_system}</arg>
<arg>sudo ovs-vsctl show</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-08T01:09:07.496119" elapsed="0.411644"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:09:07.908360" level="INFO">9a5df812-eb49-4477-a37e-2d464c02791d
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.48:6633"
        Controller "tcp:10.30.171.110:6633"
        Controller "tcp:10.30.170.131:6633"
        fail_mode: standalone
        Port s1-eth2
            Interface s1-eth2
        Port s1-eth1
            Interface s1-eth1
        Port s1
            Interface s1
                type: internal
    ovs_version: "2.17.11"</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:09:07.907975" elapsed="0.000453"/>
</kw>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T01:09:07.909099" level="INFO">Item found from container 0 times.</msg>
<msg time="2026-04-08T01:09:07.909279" level="FAIL">'9a5df812-eb49-4477-a37e-2d464c02791d\n    Manager "ptcp:6644"\n    Bridge s1\n        Controller "tcp:10.30.170.48:6633"\n        Controller "tcp:10.30.171.110:6633"\n        Controller "tcp:10.30.170.131:6633"\n        fail_mode: standalone\n        Port s1-eth2\n            Interface s1-eth2\n        Port s1-eth1\n            Interface s1-eth1\n        Port s1\n            Interface s1\n                type: internal\n    ovs_version: "2.17.11"' contains 'is_connected' 0 times, not 3 times.</msg>
<arg>${output}</arg>
<arg>is_connected</arg>
<arg>${of_connections}</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="FAIL" start="2026-04-08T01:09:07.908628" elapsed="0.000843">'9a5df812-eb49-4477-a37e-2d464c02791d\n    Manager "ptcp:6644"\n    Bridge s1\n        Controller "tcp:10.30.170.48:6633"\n        Controller "tcp:10.30.171.110:6633"\n        Controller "tcp:10.30.170.131:6633"\n        fail_mode: standalone\n        Port s1-eth2\n            Interface s1-eth2\n        Port s1-eth1\n            Interface s1-eth1\n        Port s1\n            Interface s1\n                type: internal\n    ovs_version: "2.17.11"' contains 'is_connected' 0 times, not 3 times.</status>
</kw>
<arg>${TOOLS_SYSTEM_IP}</arg>
<arg>3</arg>
<doc>Check OVS instance with IP ${tools_system} has ${of_connections} OpenFlow connections.</doc>
<status status="FAIL" start="2026-04-08T01:09:07.495613" elapsed="0.414067">'9a5df812-eb49-4477-a37e-2d464c02791d\n    Manager "ptcp:6644"\n    Bridge s1\n        Controller "tcp:10.30.170.48:6633"\n        Controller "tcp:10.30.171.110:6633"\n        Controller "tcp:10.30.170.131:6633"\n        fail_mode: standalone\n        Port s1-eth2\n            Interface s1-eth2\n        Port s1-eth1\n            Interface s1-eth1\n        Port s1\n            Interface s1\n                type: internal\n    ovs_version: "2.17.11"' contains 'is_connected' 0 times, not 3 times.</status>
</kw>
<kw name="Check OVS OpenFlow Connections" owner="OVSDB">
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:08.929252" elapsed="0.000032"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:09:08.928819" elapsed="0.000526"/>
</branch>
<status status="PASS" start="2026-04-08T01:09:08.928788" elapsed="0.000592"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:09:08.929792" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T01:09:08.929579" elapsed="0.000400"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:09:08.930746" level="INFO">Attempting to execute command "sudo ovs-vsctl show" on remote system "10.30.170.192" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:09:08.930209" elapsed="0.000601"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:09:08.931557" level="INFO">${conn_id} = 687</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T01:09:08.931019" elapsed="0.000575"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T01:09:08.932841" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T01:09:08.932947" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T01:09:08.932467" elapsed="0.000513"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:09:08.933218" elapsed="0.000708"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T01:09:08.935148" level="INFO">Logging into '10.30.170.192:22' as 'jenkins'.</msg>
<msg time="2026-04-08T01:09:09.283005" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 01:09:02 UTC 2026

  System load:  0.04               Processes:             108
  Usage of /:   19.5% of 38.58GB   Users logged in:       0
  Memory usage: 5%                 IPv4 address for ens3: 10.30.170.192
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 01:09:07 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-1-mininet-ovs-217-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T01:09:08.934704" elapsed="0.348478"/>
</kw>
<msg time="2026-04-08T01:09:09.283275" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:09:08.934175" elapsed="0.349185"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T01:09:08.931890" elapsed="0.351583"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T01:09:09.283985" level="INFO">Executing command 'sudo ovs-vsctl show'.</msg>
<msg time="2026-04-08T01:09:09.307370" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-08T01:09:09.307636" level="INFO">${stdout} = 9a5df812-eb49-4477-a37e-2d464c02791d
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.48:6633"
        Controller "tcp:10.30.171.110:6633"
        Controller "tcp:10.30.170.131:...</msg>
<msg time="2026-04-08T01:09:09.307738" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T01:09:09.283710" elapsed="0.024107"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T01:09:09.308254" elapsed="0.000502"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:09:09.309833" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:09:09.309194" elapsed="0.000734"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T01:09:09.310568" elapsed="0.000037"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:09:09.310262" elapsed="0.000416"/>
</branch>
<status status="PASS" start="2026-04-08T01:09:09.310204" elapsed="0.000524"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T01:09:09.311134" elapsed="0.000101"/>
</return>
<status status="PASS" start="2026-04-08T01:09:09.310853" elapsed="0.000462"/>
</branch>
<status status="PASS" start="2026-04-08T01:09:09.310815" elapsed="0.000554"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T01:09:09.311444" elapsed="0.000031"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:09:09.316004" elapsed="0.000483"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T01:09:09.316707" elapsed="0.000219"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T01:09:09.317122" elapsed="0.000156"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:09:09.312667" elapsed="0.004686"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T01:09:08.928048" elapsed="0.389452"/>
</kw>
<msg time="2026-04-08T01:09:09.317603" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:09:08.927147" elapsed="0.390530"/>
</kw>
<msg time="2026-04-08T01:09:09.317834" level="INFO">${output} = 9a5df812-eb49-4477-a37e-2d464c02791d
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.48:6633"
        Controller "tcp:10.30.171.110:6633"
        Controller "tcp:10.30.170.131:...</msg>
<var>${output}</var>
<arg>${tools_system}</arg>
<arg>sudo ovs-vsctl show</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-08T01:09:08.926446" elapsed="0.391424"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:09:09.318452" level="INFO">9a5df812-eb49-4477-a37e-2d464c02791d
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.48:6633"
        Controller "tcp:10.30.171.110:6633"
        Controller "tcp:10.30.170.131:6633"
        fail_mode: standalone
        Port s1-eth2
            Interface s1-eth2
        Port s1-eth1
            Interface s1-eth1
        Port s1
            Interface s1
                type: internal
    ovs_version: "2.17.11"</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:09:09.318081" elapsed="0.000437"/>
</kw>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T01:09:09.319198" level="INFO">Item found from container 0 times.</msg>
<msg time="2026-04-08T01:09:09.319357" level="FAIL">'9a5df812-eb49-4477-a37e-2d464c02791d\n    Manager "ptcp:6644"\n    Bridge s1\n        Controller "tcp:10.30.170.48:6633"\n        Controller "tcp:10.30.171.110:6633"\n        Controller "tcp:10.30.170.131:6633"\n        fail_mode: standalone\n        Port s1-eth2\n            Interface s1-eth2\n        Port s1-eth1\n            Interface s1-eth1\n        Port s1\n            Interface s1\n                type: internal\n    ovs_version: "2.17.11"' contains 'is_connected' 0 times, not 3 times.</msg>
<arg>${output}</arg>
<arg>is_connected</arg>
<arg>${of_connections}</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="FAIL" start="2026-04-08T01:09:09.318718" elapsed="0.000760">'9a5df812-eb49-4477-a37e-2d464c02791d\n    Manager "ptcp:6644"\n    Bridge s1\n        Controller "tcp:10.30.170.48:6633"\n        Controller "tcp:10.30.171.110:6633"\n        Controller "tcp:10.30.170.131:6633"\n        fail_mode: standalone\n        Port s1-eth2\n            Interface s1-eth2\n        Port s1-eth1\n            Interface s1-eth1\n        Port s1\n            Interface s1\n                type: internal\n    ovs_version: "2.17.11"' contains 'is_connected' 0 times, not 3 times.</status>
</kw>
<arg>${TOOLS_SYSTEM_IP}</arg>
<arg>3</arg>
<doc>Check OVS instance with IP ${tools_system} has ${of_connections} OpenFlow connections.</doc>
<status status="FAIL" start="2026-04-08T01:09:08.925778" elapsed="0.393861">'9a5df812-eb49-4477-a37e-2d464c02791d\n    Manager "ptcp:6644"\n    Bridge s1\n        Controller "tcp:10.30.170.48:6633"\n        Controller "tcp:10.30.171.110:6633"\n        Controller "tcp:10.30.170.131:6633"\n        fail_mode: standalone\n        Port s1-eth2\n            Interface s1-eth2\n        Port s1-eth1\n            Interface s1-eth1\n        Port s1\n            Interface s1\n                type: internal\n    ovs_version: "2.17.11"' contains 'is_connected' 0 times, not 3 times.</status>
</kw>
<kw name="Check OVS OpenFlow Connections" owner="OVSDB">
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:10.340014" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-08T01:09:10.339698" elapsed="0.000389"/>
</branch>
<status status="PASS" start="2026-04-08T01:09:10.339673" elapsed="0.000441"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:09:10.340461" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-08T01:09:10.340287" elapsed="0.000352"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:09:10.341204" level="INFO">Attempting to execute command "sudo ovs-vsctl show" on remote system "10.30.170.192" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:09:10.340792" elapsed="0.000550"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-08T01:09:10.341889" level="INFO">${conn_id} = 689</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T01:09:10.341502" elapsed="0.000414"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-08T01:09:10.342848" level="INFO">Length is 0.</msg>
<msg time="2026-04-08T01:09:10.342924" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-08T01:09:10.342546" elapsed="0.000402"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:09:10.343112" elapsed="0.000360"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-08T01:09:10.344344" level="INFO">Logging into '10.30.170.192:22' as 'jenkins'.</msg>
<msg time="2026-04-08T01:09:10.721282" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Apr  8 01:09:02 UTC 2026

  System load:  0.04               Processes:             108
  Usage of /:   19.5% of 38.58GB   Users logged in:       0
  Memory usage: 5%                 IPv4 address for ens3: 10.30.170.192
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Apr  8 01:09:09 2026 from 10.30.170.132
[?2004h[jenkins@releng-11369-169-1-mininet-ovs-217-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-08T01:09:10.344009" elapsed="0.377434"/>
</kw>
<msg time="2026-04-08T01:09:10.721532" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:09:10.343635" elapsed="0.377982"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-08T01:09:10.342132" elapsed="0.379602"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-08T01:09:10.722309" level="INFO">Executing command 'sudo ovs-vsctl show'.</msg>
<msg time="2026-04-08T01:09:10.745135" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-08T01:09:10.745482" level="INFO">${stdout} = 9a5df812-eb49-4477-a37e-2d464c02791d
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.48:6633"
            is_connected: true
        Controller "tcp:10.30.171.110:6633"
       ...</msg>
<msg time="2026-04-08T01:09:10.745584" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-08T01:09:10.721980" elapsed="0.023658"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T01:09:10.746050" elapsed="0.000545"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:09:10.747682" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:09:10.746993" elapsed="0.000783"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T01:09:10.748324" elapsed="0.000039"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:09:10.747949" elapsed="0.000488"/>
</branch>
<status status="PASS" start="2026-04-08T01:09:10.747899" elapsed="0.000589"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-08T01:09:10.748848" elapsed="0.000065"/>
</return>
<status status="PASS" start="2026-04-08T01:09:10.748607" elapsed="0.000377"/>
</branch>
<status status="PASS" start="2026-04-08T01:09:10.748574" elapsed="0.000462"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-08T01:09:10.749110" elapsed="0.000031"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:09:10.755074" elapsed="0.000803"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-08T01:09:10.756177" elapsed="0.000565"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T01:09:10.756885" elapsed="0.000098"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-08T01:09:10.749829" elapsed="0.007206"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-08T01:09:10.339119" elapsed="0.418008"/>
</kw>
<msg time="2026-04-08T01:09:10.757209" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-08T01:09:10.338479" elapsed="0.418785"/>
</kw>
<msg time="2026-04-08T01:09:10.757376" level="INFO">${output} = 9a5df812-eb49-4477-a37e-2d464c02791d
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.48:6633"
            is_connected: true
        Controller "tcp:10.30.171.110:6633"
       ...</msg>
<var>${output}</var>
<arg>${tools_system}</arg>
<arg>sudo ovs-vsctl show</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-08T01:09:10.337932" elapsed="0.419587"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:09:10.757929" level="INFO">9a5df812-eb49-4477-a37e-2d464c02791d
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.48:6633"
            is_connected: true
        Controller "tcp:10.30.171.110:6633"
            is_connected: true
        Controller "tcp:10.30.170.131:6633"
            is_connected: true
        fail_mode: standalone
        Port s1-eth2
            Interface s1-eth2
        Port s1-eth1
            Interface s1-eth1
        Port s1
            Interface s1
                type: internal
    ovs_version: "2.17.11"</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:09:10.757678" elapsed="0.000298"/>
</kw>
<kw name="Should Contain X Times" owner="BuiltIn">
<msg time="2026-04-08T01:09:10.758482" level="INFO">Item found from container 3 times.</msg>
<arg>${output}</arg>
<arg>is_connected</arg>
<arg>${of_connections}</arg>
<doc>Fails if ``container`` does not contain ``item`` ``count`` times.</doc>
<status status="PASS" start="2026-04-08T01:09:10.758120" elapsed="0.000431"/>
</kw>
<arg>${TOOLS_SYSTEM_IP}</arg>
<arg>3</arg>
<doc>Check OVS instance with IP ${tools_system} has ${of_connections} OpenFlow connections.</doc>
<status status="PASS" start="2026-04-08T01:09:10.337382" elapsed="0.421233"/>
</kw>
<arg>10s</arg>
<arg>1s</arg>
<arg>OVSDB.Check OVS OpenFlow Connections</arg>
<arg>${TOOLS_SYSTEM_IP}</arg>
<arg>3</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-08T01:09:06.054268" elapsed="4.704399"/>
</kw>
<doc>Start mininet linear with connection to all cluster instances.</doc>
<status status="PASS" start="2026-04-08T01:09:02.642204" elapsed="8.116590"/>
</test>
<test id="s1-s8-t2" name="Check Entity Owner Status And Find Owner and Successor" line="25">
<kw name="Get OpenFlow Entity Owner Status For One Device" owner="ClusterOpenFlow">
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:09:10.793696" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:09:10.793244" elapsed="0.000479"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:09:10.794199" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:09:10.793879" elapsed="0.000347"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T01:09:10.794269" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T01:09:10.794421" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T01:09:10.792865" elapsed="0.001579"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T01:09:10.799102" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T01:09:10.798921" elapsed="0.000207"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:09:10.799309" elapsed="0.000196"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:09:10.799911" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:09:10.799683" elapsed="0.000255"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:09:10.800369" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:09:10.800101" elapsed="0.000308"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:09:10.800555" elapsed="0.000178"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:09:10.801081" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:09:10.800878" elapsed="0.000227"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:09:10.801520" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:09:10.801280" elapsed="0.000279"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:09:10.802038" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:09:10.801702" elapsed="0.000362"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:09:10.802468" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:09:10.802235" elapsed="0.000276"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:09:10.802930" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:09:10.802652" elapsed="0.000303"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:09:10.809291" elapsed="0.000215"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:09:10.817894" elapsed="0.000211"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:09:10.818666" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:09:10.818279" elapsed="0.000448"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:09:10.819930" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:09:10.819349" elapsed="0.000624"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:09:10.820108" elapsed="0.000032"/>
</return>
<msg time="2026-04-08T01:09:10.820285" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:09:10.818916" elapsed="0.001394"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:09:10.820907" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:09:10.820468" elapsed="0.000466"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:09:10.821633" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:09:10.821089" elapsed="0.000571"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:09:10.822179" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:09:10.836336" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:09:10.821821" elapsed="0.016282">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:10.838301" elapsed="0.000024"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:10.838469" elapsed="0.000021"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:10.838629" elapsed="0.000021"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:10.838791" elapsed="0.000020"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:10.838956" elapsed="0.000020"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:10.839113" elapsed="0.000020"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:10.839428" elapsed="0.000021"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:10.839651" elapsed="0.000021"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:10.839837" elapsed="0.000021"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:09:10.839301" elapsed="0.000616"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:09:10.839201" elapsed="0.000745"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:10.840083" elapsed="0.000021"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:09:10.840142" elapsed="0.000030"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:09:10.817410" elapsed="0.022866">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:09:10.840346" elapsed="0.000015"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T01:09:10.807100" elapsed="0.033344">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:10.840611" elapsed="0.000020"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:10.844683" elapsed="0.000060"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:10.844908" elapsed="0.000021"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T01:09:10.844974" elapsed="0.000015"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T01:09:10.798397" elapsed="0.046681">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:09:10.845209" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:09:10.845254" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:09:10.797834" elapsed="0.047443"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T01:09:10.845471" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:09:10.845361" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-08T01:09:10.845342" elapsed="0.000193"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:09:10.846809" elapsed="0.000207"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:09:10.847496" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:09:10.847179" elapsed="0.000343"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:09:10.848314" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:09:10.848034" elapsed="0.000306"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:09:10.848387" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T01:09:10.848534" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:09:10.847697" elapsed="0.000861"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:09:10.849078" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:09:10.848710" elapsed="0.000394"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:09:10.849625" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:09:10.849279" elapsed="0.000372"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:09:10.850001" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:09:10.862490" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:09:10.849805" elapsed="0.014389">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:10.864373" elapsed="0.000022"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:10.864537" elapsed="0.000020"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:10.864692" elapsed="0.000020"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:10.864848" elapsed="0.000019"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:10.865007" elapsed="0.000020"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:10.865177" elapsed="0.000021"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:10.865430" elapsed="0.000020"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:10.865593" elapsed="0.000019"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:10.865787" elapsed="0.000021"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:09:10.865309" elapsed="0.000532"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:09:10.865242" elapsed="0.000625"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:10.866000" elapsed="0.000019"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:09:10.866058" elapsed="0.000015"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:09:10.846275" elapsed="0.019905">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:09:10.866297" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:09:10.866339" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:09:10.845677" elapsed="0.020686"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T01:09:10.866971" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T01:09:10.866655" elapsed="0.000376">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T01:09:10.866445" elapsed="0.000646">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T01:09:10.866426" elapsed="0.000957">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T01:09:10.867433" elapsed="0.000016"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:09:10.797298" elapsed="0.070234">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:10.867703" elapsed="0.000021"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:10.867865" elapsed="0.000019"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T01:09:10.867925" elapsed="0.000014"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T01:09:10.794733" elapsed="0.073288">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:10.868198" elapsed="0.000022"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:10.868370" elapsed="0.000020"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:10.868530" elapsed="0.000019"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:10.868682" elapsed="0.000019"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:10.868838" elapsed="0.000019"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:10.868991" elapsed="0.000020"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T01:09:10.869051" elapsed="0.000014"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T01:09:10.792227" elapsed="0.076920">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:09:11.905022" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:09:11.904498" elapsed="0.000559"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:09:11.905565" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:09:11.905246" elapsed="0.000346"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T01:09:11.905643" elapsed="0.000042"/>
</return>
<msg time="2026-04-08T01:09:11.905819" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T01:09:11.904080" elapsed="0.001766"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T01:09:11.910492" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T01:09:11.910281" elapsed="0.000240"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:09:11.910701" elapsed="0.000249"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:09:11.911437" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:09:11.911176" elapsed="0.000288"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:09:11.911910" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:09:11.911650" elapsed="0.000301"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:09:11.912109" elapsed="0.000201"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:09:11.912658" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:09:11.912455" elapsed="0.000228"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:09:11.913083" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:09:11.912842" elapsed="0.000281"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:09:11.913643" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:09:11.913287" elapsed="0.000382"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:09:11.914063" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:09:11.913829" elapsed="0.000277"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:09:11.914546" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:09:11.914264" elapsed="0.000308"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:09:11.921025" elapsed="0.000230"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:09:11.930043" elapsed="0.000231"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:09:11.930824" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:09:11.930427" elapsed="0.000423"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:09:11.931998" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:09:11.931460" elapsed="0.000579"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:09:11.932187" elapsed="0.000034"/>
</return>
<msg time="2026-04-08T01:09:11.932345" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:09:11.931045" elapsed="0.001326"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:09:11.932966" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:09:11.932525" elapsed="0.000468"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:09:11.933600" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:09:11.933168" elapsed="0.000459"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:09:11.934126" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:09:11.947981" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:09:11.933785" elapsed="0.018090">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:11.952311" elapsed="0.000055"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:11.952686" elapsed="0.000047"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:11.953038" elapsed="0.000047"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:11.953438" elapsed="0.000049"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:11.953804" elapsed="0.000045"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:11.954153" elapsed="0.000074"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:11.954773" elapsed="0.000045"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:11.955356" elapsed="0.000051"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:11.955779" elapsed="0.000047"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:09:11.954498" elapsed="0.001476"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:09:11.954337" elapsed="0.001691"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:11.956244" elapsed="0.000031"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:09:11.956330" elapsed="0.000022"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:09:11.929555" elapsed="0.026941">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:09:11.956592" elapsed="0.000021"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T01:09:11.918835" elapsed="0.037896">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:11.956963" elapsed="0.000029"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:11.966088" elapsed="0.000040"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:11.966357" elapsed="0.000027"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T01:09:11.966443" elapsed="0.000022"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T01:09:11.909725" elapsed="0.056838">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:09:11.966686" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:09:11.966729" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:09:11.909091" elapsed="0.057661"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T01:09:11.967112" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:09:11.966983" elapsed="0.000171"/>
</branch>
<status status="PASS" start="2026-04-08T01:09:11.966943" elapsed="0.000256"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:09:11.968568" elapsed="0.000212"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:09:11.969259" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:09:11.968928" elapsed="0.000358"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:09:11.970070" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:09:11.969797" elapsed="0.000299"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:09:11.970143" elapsed="0.000046"/>
</return>
<msg time="2026-04-08T01:09:11.970313" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:09:11.969464" elapsed="0.000874"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:09:11.970873" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:09:11.970500" elapsed="0.000400"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:09:11.971433" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:09:11.971070" elapsed="0.000390"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:09:11.971828" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:09:11.983654" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:09:11.971615" elapsed="0.015857">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:11.987873" elapsed="0.000052"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:11.988273" elapsed="0.000049"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:11.988628" elapsed="0.000045"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:11.988973" elapsed="0.000045"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:11.989367" elapsed="0.000047"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:11.989715" elapsed="0.000044"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:11.990309" elapsed="0.000048"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:11.990677" elapsed="0.000103"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:11.991185" elapsed="0.000056"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:09:11.990010" elapsed="0.001308"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:09:11.989859" elapsed="0.001519"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:11.991684" elapsed="0.000045"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:09:11.991818" elapsed="0.000035"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:09:11.967984" elapsed="0.024080">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:09:11.992353" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:09:11.992454" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:09:11.967350" elapsed="0.025157"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T01:09:11.994348" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T01:09:11.993371" elapsed="0.001130">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T01:09:11.992784" elapsed="0.001858">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T01:09:11.992740" elapsed="0.001973">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T01:09:11.994815" elapsed="0.000035"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:09:11.908550" elapsed="0.086541">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:11.995513" elapsed="0.000049"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:11.995895" elapsed="0.000052"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T01:09:11.996053" elapsed="0.000027"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T01:09:11.906145" elapsed="0.090042">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:11.996354" elapsed="0.000021"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:11.996526" elapsed="0.000020"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:11.996687" elapsed="0.000020"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:11.996840" elapsed="0.000019"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:11.996998" elapsed="0.000020"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:11.997168" elapsed="0.000021"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T01:09:11.997231" elapsed="0.000015"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T01:09:11.903259" elapsed="0.094070">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:09:13.032047" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:09:13.031557" elapsed="0.000522"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:09:13.032589" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:09:13.032268" elapsed="0.000348"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T01:09:13.032665" elapsed="0.000042"/>
</return>
<msg time="2026-04-08T01:09:13.032840" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T01:09:13.031141" elapsed="0.001724"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T01:09:13.037587" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T01:09:13.037395" elapsed="0.000219"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:09:13.037760" elapsed="0.000193"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:09:13.038323" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:09:13.038099" elapsed="0.000250"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:09:13.038800" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:09:13.038531" elapsed="0.000311"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:09:13.038982" elapsed="0.000196"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:09:13.039530" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:09:13.039325" elapsed="0.000230"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:09:13.039957" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:09:13.039715" elapsed="0.000283"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:09:13.040499" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:09:13.040142" elapsed="0.000382"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:09:13.040914" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:09:13.040681" elapsed="0.000276"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:09:13.041396" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:09:13.041097" elapsed="0.000325"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:09:13.047842" elapsed="0.000217"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:09:13.056451" elapsed="0.000212"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:09:13.057227" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:09:13.056814" elapsed="0.000440"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:09:13.058385" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:09:13.057827" elapsed="0.000600"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:09:13.058560" elapsed="0.000033"/>
</return>
<msg time="2026-04-08T01:09:13.058751" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:09:13.057436" elapsed="0.001343"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:09:13.059400" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:09:13.058936" elapsed="0.000492"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:09:13.060007" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:09:13.059582" elapsed="0.000452"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:09:13.060553" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:09:13.073088" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:09:13.060212" elapsed="0.015344">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:13.075811" elapsed="0.000033"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:13.076050" elapsed="0.000029"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:13.076296" elapsed="0.000030"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:13.076521" elapsed="0.000028"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:13.076809" elapsed="0.000030"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:13.077029" elapsed="0.000028"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:13.077424" elapsed="0.000029"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:13.077732" elapsed="0.000029"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:13.077995" elapsed="0.000029"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:09:13.077250" elapsed="0.000858"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:09:13.077128" elapsed="0.001021"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:13.078379" elapsed="0.000029"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:09:13.078464" elapsed="0.000022"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:09:13.055948" elapsed="0.022675">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:09:13.078753" elapsed="0.000023"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T01:09:13.045652" elapsed="0.033245">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:13.079135" elapsed="0.000051"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:13.084924" elapsed="0.000037"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:13.085210" elapsed="0.000031"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T01:09:13.085304" elapsed="0.000021"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T01:09:13.036846" elapsed="0.048605">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:09:13.085607" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:09:13.085668" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:09:13.036279" elapsed="0.049422"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T01:09:13.085983" elapsed="0.000019"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:09:13.085824" elapsed="0.000218"/>
</branch>
<status status="PASS" start="2026-04-08T01:09:13.085796" elapsed="0.000278"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:09:13.087910" elapsed="0.000361"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:09:13.088910" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:09:13.088484" elapsed="0.000462"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:09:13.090317" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:09:13.089672" elapsed="0.000682"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:09:13.090471" elapsed="0.000043"/>
</return>
<msg time="2026-04-08T01:09:13.090683" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:09:13.089210" elapsed="0.001541"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:09:13.091427" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:09:13.090994" elapsed="0.000459"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:09:13.091945" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:09:13.091604" elapsed="0.000367"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:09:13.092341" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:09:13.102045" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:09:13.092125" elapsed="0.012576">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:13.105100" elapsed="0.000049"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:13.105506" elapsed="0.000046"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:13.105857" elapsed="0.000044"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:13.106235" elapsed="0.000047"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:13.106602" elapsed="0.000044"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:13.106970" elapsed="0.000045"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:13.107567" elapsed="0.000046"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:13.107935" elapsed="0.000044"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:13.108310" elapsed="0.000047"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:09:13.107294" elapsed="0.001137"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:09:13.107112" elapsed="0.001377"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:13.108784" elapsed="0.000046"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:09:13.108917" elapsed="0.000034"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:09:13.087141" elapsed="0.022040">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:09:13.109438" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:09:13.109535" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:09:13.086298" elapsed="0.023288"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T01:09:13.111021" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T01:09:13.110263" elapsed="0.000924">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T01:09:13.109770" elapsed="0.001561">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T01:09:13.109728" elapsed="0.001672">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T01:09:13.111502" elapsed="0.000034"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:09:13.035718" elapsed="0.076000">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:13.112168" elapsed="0.000023"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:13.112334" elapsed="0.000021"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T01:09:13.112396" elapsed="0.000015"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T01:09:13.033169" elapsed="0.079329">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:13.112660" elapsed="0.000020"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:13.112831" elapsed="0.000020"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:13.112991" elapsed="0.000020"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:13.113143" elapsed="0.000034"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:13.113322" elapsed="0.000020"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:13.113480" elapsed="0.000019"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T01:09:13.113541" elapsed="0.000014"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T01:09:13.030270" elapsed="0.083370">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:09:14.143805" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:09:14.143298" elapsed="0.000540"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:09:14.144339" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:09:14.144006" elapsed="0.000359"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T01:09:14.144414" elapsed="0.000044"/>
</return>
<msg time="2026-04-08T01:09:14.144590" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T01:09:14.142891" elapsed="0.001724"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T01:09:14.149492" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T01:09:14.149279" elapsed="0.000251"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:09:14.149695" elapsed="0.000198"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:09:14.150269" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:09:14.150040" elapsed="0.000256"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:09:14.150750" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:09:14.150478" elapsed="0.000314"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:09:14.150932" elapsed="0.000182"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:09:14.151484" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:09:14.151276" elapsed="0.000233"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:09:14.151990" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:09:14.151744" elapsed="0.000287"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:09:14.152536" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:09:14.152193" elapsed="0.000368"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:09:14.152952" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:09:14.152719" elapsed="0.000275"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:09:14.153508" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:09:14.153168" elapsed="0.000366"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:09:14.159847" elapsed="0.000213"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:09:14.168515" elapsed="0.000212"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:09:14.169358" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:09:14.168899" elapsed="0.000486"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:09:14.170559" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:09:14.169964" elapsed="0.000640"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:09:14.170745" elapsed="0.000036"/>
</return>
<msg time="2026-04-08T01:09:14.170906" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:09:14.169569" elapsed="0.001362"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:09:14.171575" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:09:14.171091" elapsed="0.000512"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:09:14.172199" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:09:14.171755" elapsed="0.000471"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:09:14.172722" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:09:14.185491" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:09:14.172385" elapsed="0.015859">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:14.188564" elapsed="0.000039"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:14.188809" elapsed="0.000030"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:14.189043" elapsed="0.000029"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:14.189291" elapsed="0.000030"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:14.189527" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:14.189747" elapsed="0.000028"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:14.190140" elapsed="0.000053"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:14.190475" elapsed="0.000029"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:14.190771" elapsed="0.000030"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:09:14.189966" elapsed="0.000919"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:09:14.189849" elapsed="0.001077"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:14.191118" elapsed="0.000029"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:09:14.191229" elapsed="0.000024"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:09:14.168008" elapsed="0.023399">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:09:14.191596" elapsed="0.000023"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T01:09:14.157660" elapsed="0.034084">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:14.192029" elapsed="0.000032"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:14.198087" elapsed="0.000050"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:14.198403" elapsed="0.000031"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T01:09:14.198497" elapsed="0.000057"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T01:09:14.148730" elapsed="0.049961">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:09:14.198868" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:09:14.198930" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:09:14.148169" elapsed="0.050800"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T01:09:14.199259" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:09:14.199108" elapsed="0.000194"/>
</branch>
<status status="PASS" start="2026-04-08T01:09:14.199084" elapsed="0.000262"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:09:14.200787" elapsed="0.000211"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:09:14.201476" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:09:14.201143" elapsed="0.000359"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:09:14.202292" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:09:14.202006" elapsed="0.000312"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:09:14.202365" elapsed="0.000032"/>
</return>
<msg time="2026-04-08T01:09:14.202530" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:09:14.201680" elapsed="0.000878"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:09:14.203084" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:09:14.202712" elapsed="0.000397"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:09:14.203616" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:09:14.203274" elapsed="0.000368"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:09:14.204019" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:09:14.213394" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:09:14.203796" elapsed="0.011395">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:14.215424" elapsed="0.000024"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:14.215591" elapsed="0.000020"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:14.215747" elapsed="0.000020"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:14.215903" elapsed="0.000020"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:14.216066" elapsed="0.000020"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:14.216238" elapsed="0.000021"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:14.216499" elapsed="0.000021"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:14.216665" elapsed="0.000020"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:14.216820" elapsed="0.000201"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:09:14.216376" elapsed="0.000681"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:09:14.216306" elapsed="0.000778"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:14.217241" elapsed="0.000022"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:09:14.217303" elapsed="0.000016"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:09:14.200227" elapsed="0.017187">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:09:14.217549" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:09:14.217595" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:09:14.199523" elapsed="0.018096"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T01:09:14.218272" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T01:09:14.217920" elapsed="0.000414">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T01:09:14.217706" elapsed="0.000689">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T01:09:14.217686" elapsed="0.000741">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T01:09:14.218472" elapsed="0.000015"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:09:14.147608" elapsed="0.070997">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:14.218833" elapsed="0.000024"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:14.219028" elapsed="0.000035"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T01:09:14.219135" elapsed="0.000056"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T01:09:14.144905" elapsed="0.074412">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:14.219546" elapsed="0.000029"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:14.219847" elapsed="0.000029"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:14.220078" elapsed="0.000027"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:14.220317" elapsed="0.000029"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:14.220544" elapsed="0.000027"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:14.220762" elapsed="0.000026"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T01:09:14.220846" elapsed="0.000022"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T01:09:14.142072" elapsed="0.078919">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:09:15.257200" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:09:15.256693" elapsed="0.000541"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:09:15.257722" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:09:15.257404" elapsed="0.000344"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T01:09:15.257797" elapsed="0.000042"/>
</return>
<msg time="2026-04-08T01:09:15.257971" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T01:09:15.256299" elapsed="0.001697"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T01:09:15.262560" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T01:09:15.262353" elapsed="0.000233"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:09:15.262732" elapsed="0.000191"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:09:15.263296" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:09:15.263070" elapsed="0.000252"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:09:15.263753" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:09:15.263502" elapsed="0.000292"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:09:15.263934" elapsed="0.000184"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:09:15.264483" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:09:15.264277" elapsed="0.000231"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:09:15.264908" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:09:15.264667" elapsed="0.000281"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:09:15.265450" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:09:15.265094" elapsed="0.000382"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:09:15.266060" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:09:15.265636" elapsed="0.000469"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:09:15.266580" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:09:15.266273" elapsed="0.000341"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:09:15.272897" elapsed="0.000219"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:09:15.282012" elapsed="0.000326"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:09:15.282901" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:09:15.282510" elapsed="0.000418"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:09:15.284150" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:09:15.283595" elapsed="0.000628"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:09:15.284362" elapsed="0.000039"/>
</return>
<msg time="2026-04-08T01:09:15.284532" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:09:15.283130" elapsed="0.001429"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:09:15.285209" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:09:15.284716" elapsed="0.000523"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:09:15.285827" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:09:15.285396" elapsed="0.000458"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:09:15.286412" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:09:15.299948" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:09:15.286014" elapsed="0.018362">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:15.304844" elapsed="0.000061"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:15.305295" elapsed="0.000052"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:15.305692" elapsed="0.000049"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:15.306146" elapsed="0.000086"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:15.306639" elapsed="0.000051"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:15.307002" elapsed="0.000029"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:15.307406" elapsed="0.000029"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:15.307716" elapsed="0.000029"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:15.307981" elapsed="0.000029"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:09:15.307230" elapsed="0.000864"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:09:15.307103" elapsed="0.001031"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:15.308356" elapsed="0.000030"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:09:15.308442" elapsed="0.000022"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:09:15.281060" elapsed="0.027551">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:09:15.308710" elapsed="0.000022"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T01:09:15.270722" elapsed="0.038127">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:15.309176" elapsed="0.000034"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:15.315387" elapsed="0.000067"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:15.315725" elapsed="0.000034"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T01:09:15.315827" elapsed="0.000025"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T01:09:15.261802" elapsed="0.054208">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:09:15.316210" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:09:15.316274" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:09:15.261255" elapsed="0.055052"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T01:09:15.316611" elapsed="0.000020"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:09:15.316440" elapsed="0.000231"/>
</branch>
<status status="PASS" start="2026-04-08T01:09:15.316410" elapsed="0.000294"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:09:15.318641" elapsed="0.000303"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:09:15.319497" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:09:15.319176" elapsed="0.000348"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:09:15.320374" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:09:15.320073" elapsed="0.000329"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:09:15.320451" elapsed="0.000033"/>
</return>
<msg time="2026-04-08T01:09:15.320607" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:09:15.319704" elapsed="0.000928"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:09:15.321190" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:09:15.320788" elapsed="0.000430"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:09:15.321720" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:09:15.321372" elapsed="0.000374"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:09:15.322114" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:09:15.331920" level="INFO">Response &lt;Response [200]&gt;</msg>
<msg time="2026-04-08T01:09:15.332009" level="INFO">Response JSON {'odl-entity-owners:output': {}}</msg>
<msg time="2026-04-08T01:09:15.332152" level="FAIL">KeyError: 'candidate-nodes'</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:09:15.321903" elapsed="0.010561">KeyError: 'candidate-nodes'</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:15.332709" elapsed="0.000032"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:15.332945" elapsed="0.000029"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:15.333255" elapsed="0.000042"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:15.333538" elapsed="0.000039"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:15.333792" elapsed="0.000029"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:15.334019" elapsed="0.000029"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:15.334505" elapsed="0.000032"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:15.334744" elapsed="0.000029"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:15.334994" elapsed="0.000036"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:09:15.334294" elapsed="0.000788"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:09:15.334112" elapsed="0.001008"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:15.335341" elapsed="0.000029"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:09:15.335427" elapsed="0.000022"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:09:15.317808" elapsed="0.017775">KeyError: 'candidate-nodes'</status>
</kw>
<msg time="2026-04-08T01:09:15.335749" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:09:15.335811" level="INFO">${results} = KeyError: 'candidate-nodes'</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:09:15.316914" elapsed="0.018930"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T01:09:15.336912" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T01:09:15.336433" elapsed="0.000567">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T01:09:15.336007" elapsed="0.001081">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T01:09:15.335975" elapsed="0.001160">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T01:09:15.337224" elapsed="0.000025"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:09:15.260702" elapsed="0.076666">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:15.337613" elapsed="0.000031"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:15.337843" elapsed="0.000028"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T01:09:15.337929" elapsed="0.000021"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T01:09:15.258302" elapsed="0.079768">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:15.338319" elapsed="0.000031"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:15.338584" elapsed="0.000029"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:15.338810" elapsed="0.000027"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:15.339029" elapsed="0.000027"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:15.339270" elapsed="0.000029"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:15.339490" elapsed="0.000026"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T01:09:15.339573" elapsed="0.000020"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T01:09:15.255470" elapsed="0.084240">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:09:16.372830" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:09:16.372327" elapsed="0.000536"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:09:16.373362" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:09:16.373031" elapsed="0.000358"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T01:09:16.373437" elapsed="0.000043"/>
</return>
<msg time="2026-04-08T01:09:16.373615" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T01:09:16.371871" elapsed="0.001770"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T01:09:16.378295" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T01:09:16.378068" elapsed="0.000255"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:09:16.378473" elapsed="0.000218"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:09:16.379056" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:09:16.378844" elapsed="0.000238"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:09:16.379540" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:09:16.379280" elapsed="0.000302"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:09:16.379722" elapsed="0.000187"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:09:16.380300" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:09:16.380070" elapsed="0.000255"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:09:16.380729" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:09:16.380485" elapsed="0.000285"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:09:16.381268" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:09:16.380915" elapsed="0.000379"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:09:16.381683" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:09:16.381451" elapsed="0.000274"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:09:16.382146" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:09:16.381867" elapsed="0.000319"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:09:16.388968" elapsed="0.000248"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:09:16.397758" elapsed="0.000239"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:09:16.398594" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:09:16.398170" elapsed="0.000451"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:09:16.399784" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:09:16.399229" elapsed="0.000598"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:09:16.399971" elapsed="0.000043"/>
</return>
<msg time="2026-04-08T01:09:16.400176" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:09:16.398804" elapsed="0.001400"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:09:16.400832" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:09:16.400364" elapsed="0.000496"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:09:16.401563" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:09:16.401097" elapsed="0.000493"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:09:16.402101" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:09:16.425816" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:09:16.401752" elapsed="0.026746">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:16.428852" elapsed="0.000050"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:16.429144" elapsed="0.000054"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:16.429405" elapsed="0.000029"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:16.429634" elapsed="0.000029"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:16.429865" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:16.430120" elapsed="0.000060"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:16.430565" elapsed="0.000030"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:16.430876" elapsed="0.000031"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:16.431141" elapsed="0.000067"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:09:16.430385" elapsed="0.000925"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:09:16.430276" elapsed="0.001077"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:16.431551" elapsed="0.000031"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:09:16.431638" elapsed="0.000022"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:09:16.397269" elapsed="0.034533">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:09:16.431900" elapsed="0.000021"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T01:09:16.386498" elapsed="0.045541">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:16.432303" elapsed="0.000040"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:16.437782" elapsed="0.000029"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:16.437977" elapsed="0.000021"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T01:09:16.438044" elapsed="0.000015"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T01:09:16.377534" elapsed="0.060615">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:09:16.438362" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:09:16.438407" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:09:16.376933" elapsed="0.061498"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T01:09:16.438653" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:09:16.438529" elapsed="0.000167"/>
</branch>
<status status="PASS" start="2026-04-08T01:09:16.438506" elapsed="0.000215"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:09:16.440085" elapsed="0.000242"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:09:16.440814" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:09:16.440477" elapsed="0.000370"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:09:16.441688" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:09:16.441411" elapsed="0.000311"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:09:16.441772" elapsed="0.000031"/>
</return>
<msg time="2026-04-08T01:09:16.441923" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:09:16.441030" elapsed="0.000918"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:09:16.442511" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:09:16.442102" elapsed="0.000436"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:09:16.443071" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:09:16.442689" elapsed="0.000409"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:09:16.443484" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:09:16.454122" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:09:16.443272" elapsed="0.013668">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:16.457379" elapsed="0.000054"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:16.457759" elapsed="0.000046"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:16.458118" elapsed="0.000074"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:16.458534" elapsed="0.000046"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:16.458899" elapsed="0.000044"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:16.459282" elapsed="0.000047"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:16.459936" elapsed="0.000053"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:16.460356" elapsed="0.000049"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:16.460812" elapsed="0.000073"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:09:16.459611" elapsed="0.001376"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:09:16.459454" elapsed="0.001595"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:16.461431" elapsed="0.000051"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:09:16.461574" elapsed="0.000034"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:09:16.439513" elapsed="0.022301">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:09:16.462184" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:09:16.462479" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:09:16.438872" elapsed="0.023662"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T01:09:16.463446" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T01:09:16.463104" elapsed="0.000403">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T01:09:16.462724" elapsed="0.000846">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T01:09:16.462681" elapsed="0.000922">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T01:09:16.463649" elapsed="0.000015"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:09:16.376365" elapsed="0.087381">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:16.463917" elapsed="0.000022"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:16.464080" elapsed="0.000020"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T01:09:16.464141" elapsed="0.000029"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T01:09:16.373933" elapsed="0.090324">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:16.464421" elapsed="0.000021"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:16.464593" elapsed="0.000020"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:16.464775" elapsed="0.000023"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:16.464939" elapsed="0.000021"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:16.465105" elapsed="0.000019"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:16.465282" elapsed="0.000021"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T01:09:16.465345" elapsed="0.000014"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T01:09:16.370953" elapsed="0.094491">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:09:17.497357" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:09:17.496868" elapsed="0.000523"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:09:17.497870" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:09:17.497556" elapsed="0.000340"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T01:09:17.497944" elapsed="0.000039"/>
</return>
<msg time="2026-04-08T01:09:17.498114" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T01:09:17.496488" elapsed="0.001761"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T01:09:17.503227" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T01:09:17.503015" elapsed="0.000239"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:09:17.503401" elapsed="0.000193"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:09:17.503947" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:09:17.503742" elapsed="0.000232"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:09:17.504421" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:09:17.504152" elapsed="0.000310"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:09:17.504603" elapsed="0.000179"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:09:17.505131" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:09:17.504927" elapsed="0.000243"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:09:17.505578" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:09:17.505334" elapsed="0.000284"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:09:17.506100" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:09:17.505764" elapsed="0.000361"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:09:17.506547" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:09:17.506313" elapsed="0.000276"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:09:17.507010" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:09:17.506731" elapsed="0.000304"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:09:17.513376" elapsed="0.000214"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:09:17.521939" elapsed="0.000230"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:09:17.522739" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:09:17.522351" elapsed="0.000415"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:09:17.523910" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:09:17.523367" elapsed="0.000583"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:09:17.524082" elapsed="0.000033"/>
</return>
<msg time="2026-04-08T01:09:17.524255" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:09:17.522948" elapsed="0.001332"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:09:17.524873" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:09:17.524434" elapsed="0.000466"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:09:17.525504" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:09:17.525054" elapsed="0.000476"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:09:17.526026" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:09:17.540676" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:09:17.525687" elapsed="0.018701">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:17.544794" elapsed="0.000052"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:17.545201" elapsed="0.000050"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:17.545651" elapsed="0.000049"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:17.546017" elapsed="0.000046"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:17.546452" elapsed="0.000047"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:17.546814" elapsed="0.000045"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:17.547448" elapsed="0.000047"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:17.547939" elapsed="0.000047"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:17.548395" elapsed="0.000048"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:09:17.547132" elapsed="0.001445"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:09:17.546964" elapsed="0.001676"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:17.548944" elapsed="0.000046"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:09:17.549076" elapsed="0.000033"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:09:17.521453" elapsed="0.027906">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:09:17.549516" elapsed="0.000034"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T01:09:17.511213" elapsed="0.038524">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:17.550131" elapsed="0.000139"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:17.554858" elapsed="0.000025"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:17.555042" elapsed="0.000021"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T01:09:17.555107" elapsed="0.000014"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T01:09:17.502482" elapsed="0.052742">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:09:17.555338" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:09:17.555380" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:09:17.501877" elapsed="0.053526"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T01:09:17.555608" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:09:17.555493" elapsed="0.000157"/>
</branch>
<status status="PASS" start="2026-04-08T01:09:17.555473" elapsed="0.000200"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:09:17.556953" elapsed="0.000225"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:09:17.557630" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:09:17.557329" elapsed="0.000327"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:09:17.558656" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:09:17.558220" elapsed="0.000462"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:09:17.558731" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T01:09:17.558878" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:09:17.557865" elapsed="0.001037"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:09:17.559444" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:09:17.559055" elapsed="0.000416"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:09:17.559964" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:09:17.559621" elapsed="0.000369"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:09:17.560357" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:09:17.571117" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:09:17.560145" elapsed="0.013634">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:17.574269" elapsed="0.000055"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:17.574645" elapsed="0.000045"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:17.575000" elapsed="0.000043"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:17.575383" elapsed="0.000047"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:17.575748" elapsed="0.000045"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:17.576093" elapsed="0.000044"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:17.576693" elapsed="0.000044"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:17.577056" elapsed="0.000044"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:17.577433" elapsed="0.000045"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:09:17.576423" elapsed="0.001129"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:09:17.576272" elapsed="0.001337"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:17.577905" elapsed="0.000044"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:09:17.578035" elapsed="0.000033"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:09:17.556417" elapsed="0.021905">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:09:17.578577" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:09:17.578674" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:09:17.555817" elapsed="0.022908"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T01:09:17.580111" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T01:09:17.579407" elapsed="0.000871">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T01:09:17.578910" elapsed="0.001508">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T01:09:17.578867" elapsed="0.001620">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T01:09:17.580589" elapsed="0.000035"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:09:17.500965" elapsed="0.079923">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:17.581307" elapsed="0.000049"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:17.581666" elapsed="0.000044"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T01:09:17.581803" elapsed="0.000032"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T01:09:17.498545" elapsed="0.083479">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:17.582491" elapsed="0.000048"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:17.582876" elapsed="0.000045"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:17.583254" elapsed="0.000021"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:17.583413" elapsed="0.000019"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:17.583573" elapsed="0.000020"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:17.583729" elapsed="0.000019"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T01:09:17.583790" elapsed="0.000014"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T01:09:17.495600" elapsed="0.088288">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:09:18.617350" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:09:18.616815" elapsed="0.000567"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:09:18.617870" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:09:18.617551" elapsed="0.000345"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T01:09:18.617944" elapsed="0.000041"/>
</return>
<msg time="2026-04-08T01:09:18.618116" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T01:09:18.616426" elapsed="0.001715"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T01:09:18.623180" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T01:09:18.622977" elapsed="0.000231"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:09:18.623356" elapsed="0.000195"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:09:18.623909" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:09:18.623701" elapsed="0.000233"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:09:18.624488" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:09:18.624137" elapsed="0.000393"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:09:18.624673" elapsed="0.000183"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:09:18.625228" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:09:18.625003" elapsed="0.000251"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:09:18.625806" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:09:18.625558" elapsed="0.000290"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:09:18.626379" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:09:18.625995" elapsed="0.000411"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:09:18.626813" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:09:18.626573" elapsed="0.000283"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:09:18.627327" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:09:18.627007" elapsed="0.000347"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:09:18.633725" elapsed="0.000219"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:09:18.642604" elapsed="0.000229"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:09:18.643433" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:09:18.642991" elapsed="0.000469"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:09:18.644659" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:09:18.644045" elapsed="0.000659"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:09:18.644845" elapsed="0.000037"/>
</return>
<msg time="2026-04-08T01:09:18.645010" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:09:18.643645" elapsed="0.001391"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:09:18.645665" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:09:18.645211" elapsed="0.000481"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:09:18.646329" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:09:18.645850" elapsed="0.000506"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:09:18.646849" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:09:18.660838" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:09:18.646515" elapsed="0.017136">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:18.664095" elapsed="0.000056"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:18.664519" elapsed="0.000048"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:18.664878" elapsed="0.000045"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:18.665283" elapsed="0.000051"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:18.665688" elapsed="0.000048"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:18.666068" elapsed="0.000049"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:18.666761" elapsed="0.000050"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:18.667333" elapsed="0.000052"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:18.667787" elapsed="0.000049"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:09:18.666461" elapsed="0.001607"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:09:18.666291" elapsed="0.001850"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:18.668512" elapsed="0.000051"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:09:18.668659" elapsed="0.000037"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:09:18.642067" elapsed="0.026868">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:09:18.669105" elapsed="0.000036"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T01:09:18.631496" elapsed="0.037870">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:18.669743" elapsed="0.000046"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:18.677053" elapsed="0.000034"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:18.677279" elapsed="0.000022"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T01:09:18.677348" elapsed="0.000015"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T01:09:18.622438" elapsed="0.055017">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:09:18.677571" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:09:18.677616" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:09:18.621851" elapsed="0.055788"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T01:09:18.677853" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:09:18.677732" elapsed="0.000164"/>
</branch>
<status status="PASS" start="2026-04-08T01:09:18.677710" elapsed="0.000210"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:09:18.679277" elapsed="0.000210"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:09:18.679938" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:09:18.679634" elapsed="0.000329"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:09:18.680754" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:09:18.680489" elapsed="0.000291"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:09:18.680827" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T01:09:18.680974" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:09:18.680135" elapsed="0.000864"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:09:18.681538" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:09:18.681153" elapsed="0.000412"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:09:18.682056" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:09:18.681714" elapsed="0.000367"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:09:18.682505" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:09:18.693244" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:09:18.682302" elapsed="0.013977">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:18.696687" elapsed="0.000051"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:18.697055" elapsed="0.000046"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:18.697505" elapsed="0.000063"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:18.697895" elapsed="0.000046"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:18.698322" elapsed="0.000050"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:18.698692" elapsed="0.000054"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:18.699416" elapsed="0.000057"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:18.699835" elapsed="0.000049"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:18.700263" elapsed="0.000046"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:09:18.699033" elapsed="0.001348"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:09:18.698861" elapsed="0.001577"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:18.700733" elapsed="0.000044"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:09:18.700861" elapsed="0.000033"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:09:18.678725" elapsed="0.022372">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:09:18.701379" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:09:18.701476" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:09:18.678069" elapsed="0.023458"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T01:09:18.703406" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T01:09:18.702282" elapsed="0.001186">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T01:09:18.701708" elapsed="0.001822">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T01:09:18.701667" elapsed="0.001895">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T01:09:18.703625" elapsed="0.000017"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:09:18.621303" elapsed="0.082435">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:18.703913" elapsed="0.000021"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:18.704073" elapsed="0.000019"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T01:09:18.704134" elapsed="0.000014"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T01:09:18.618470" elapsed="0.085781">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:18.704497" elapsed="0.000028"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:18.704690" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:18.704907" elapsed="0.000027"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:18.705095" elapsed="0.000022"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:18.705281" elapsed="0.000020"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:18.705442" elapsed="0.000020"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T01:09:18.705510" elapsed="0.000021"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T01:09:18.615612" elapsed="0.090014">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:09:19.736021" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:09:19.735531" elapsed="0.000523"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:09:19.736552" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:09:19.736237" elapsed="0.000341"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T01:09:19.736627" elapsed="0.000045"/>
</return>
<msg time="2026-04-08T01:09:19.736803" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T01:09:19.735115" elapsed="0.001713"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T01:09:19.741382" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T01:09:19.741188" elapsed="0.000220"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:09:19.741553" elapsed="0.000192"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:09:19.742103" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:09:19.741894" elapsed="0.000234"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:09:19.742605" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:09:19.742350" elapsed="0.000296"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:09:19.742786" elapsed="0.000180"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:09:19.743332" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:09:19.743110" elapsed="0.000248"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:09:19.743760" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:09:19.743517" elapsed="0.000284"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:09:19.744301" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:09:19.743946" elapsed="0.000380"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:09:19.744712" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:09:19.744482" elapsed="0.000272"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:09:19.745186" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:09:19.744894" elapsed="0.000319"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:09:19.751671" elapsed="0.000289"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:09:19.760419" elapsed="0.000211"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:09:19.761192" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:09:19.760780" elapsed="0.000440"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:09:19.762376" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:09:19.761791" elapsed="0.000627"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:09:19.762552" elapsed="0.000032"/>
</return>
<msg time="2026-04-08T01:09:19.762709" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:09:19.761402" elapsed="0.001332"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:09:19.763349" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:09:19.762888" elapsed="0.000488"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:09:19.763956" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:09:19.763530" elapsed="0.000453"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:09:19.764503" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:09:19.778848" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:09:19.764140" elapsed="0.019002">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:19.783428" elapsed="0.000034"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:19.783668" elapsed="0.000030"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:19.783895" elapsed="0.000030"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:19.784122" elapsed="0.000029"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:19.784387" elapsed="0.000029"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:19.784611" elapsed="0.000029"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:19.784979" elapsed="0.000029"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:19.785323" elapsed="0.000030"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:19.785588" elapsed="0.000030"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:09:19.784806" elapsed="0.000895"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:09:19.784707" elapsed="0.001033"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:19.785931" elapsed="0.000030"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:09:19.786015" elapsed="0.000021"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:09:19.759906" elapsed="0.026304">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:09:19.786314" elapsed="0.000022"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T01:09:19.749480" elapsed="0.036975">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:19.786748" elapsed="0.000031"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:19.792761" elapsed="0.000038"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:19.793026" elapsed="0.000030"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T01:09:19.793119" elapsed="0.000022"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T01:09:19.740635" elapsed="0.052656">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:09:19.793449" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:09:19.793512" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:09:19.740071" elapsed="0.053474"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T01:09:19.793829" elapsed="0.000019"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:09:19.793670" elapsed="0.000218"/>
</branch>
<status status="PASS" start="2026-04-08T01:09:19.793641" elapsed="0.000280"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:09:19.795773" elapsed="0.000217"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:09:19.796458" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:09:19.796136" elapsed="0.000348"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:09:19.797279" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:09:19.796991" elapsed="0.000315"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:09:19.797353" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T01:09:19.797499" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:09:19.796659" elapsed="0.000865"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:09:19.798041" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:09:19.797676" elapsed="0.000391"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:09:19.798588" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:09:19.798245" elapsed="0.000369"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:09:19.798964" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:09:19.808371" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:09:19.798768" elapsed="0.011995">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:19.811009" elapsed="0.000032"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:19.811350" elapsed="0.000047"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:19.811704" elapsed="0.000045"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:19.812054" elapsed="0.000045"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:19.812449" elapsed="0.000046"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:19.812796" elapsed="0.000044"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:19.813503" elapsed="0.000045"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:19.813870" elapsed="0.000045"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:19.814272" elapsed="0.000048"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:09:19.813226" elapsed="0.001168"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:09:19.813022" elapsed="0.001431"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:19.814750" elapsed="0.000045"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:09:19.814880" elapsed="0.000035"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:09:19.795003" elapsed="0.020115">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:09:19.815402" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:09:19.815500" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:09:19.794122" elapsed="0.021429"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T01:09:19.816928" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T01:09:19.816223" elapsed="0.000838">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T01:09:19.815734" elapsed="0.001494">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T01:09:19.815693" elapsed="0.001609">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T01:09:19.817404" elapsed="0.000035"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:09:19.739526" elapsed="0.078096">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:19.817997" elapsed="0.000047"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:19.818644" elapsed="0.000051"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T01:09:19.818791" elapsed="0.000034"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T01:09:19.737118" elapsed="0.081893">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:19.819370" elapsed="0.000021"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:19.819542" elapsed="0.000020"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:19.819703" elapsed="0.000019"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:19.819855" elapsed="0.000020"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:19.820013" elapsed="0.000020"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:19.820188" elapsed="0.000020"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T01:09:19.820290" elapsed="0.000016"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T01:09:19.734308" elapsed="0.086083">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:09:20.850926" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:09:20.850507" elapsed="0.000448"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:09:20.851439" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:09:20.851114" elapsed="0.000351"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T01:09:20.851511" elapsed="0.000033"/>
</return>
<msg time="2026-04-08T01:09:20.851670" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T01:09:20.850097" elapsed="0.001598"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T01:09:20.856234" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T01:09:20.856031" elapsed="0.000229"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:09:20.856404" elapsed="0.000189"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:09:20.856944" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:09:20.856738" elapsed="0.000232"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:09:20.857409" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:09:20.857143" elapsed="0.000307"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:09:20.857589" elapsed="0.000180"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:09:20.858116" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:09:20.857913" elapsed="0.000228"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:09:20.858581" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:09:20.858338" elapsed="0.000284"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:09:20.859102" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:09:20.858765" elapsed="0.000362"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:09:20.859537" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:09:20.859303" elapsed="0.000277"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:09:20.860002" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:09:20.859723" elapsed="0.000303"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:09:20.866379" elapsed="0.000211"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:09:20.874947" elapsed="0.000251"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:09:20.875776" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:09:20.875384" elapsed="0.000420"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:09:20.876988" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:09:20.876423" elapsed="0.000606"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:09:20.877186" elapsed="0.000036"/>
</return>
<msg time="2026-04-08T01:09:20.877351" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:09:20.875996" elapsed="0.001388"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:09:20.877990" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:09:20.877546" elapsed="0.000510"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:09:20.878700" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:09:20.878271" elapsed="0.000455"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:09:20.879213" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:09:20.892332" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:09:20.878883" elapsed="0.017740">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:20.897056" elapsed="0.000053"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:20.897480" elapsed="0.000048"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:20.897839" elapsed="0.000046"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:20.898256" elapsed="0.000055"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:20.898638" elapsed="0.000045"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:20.898987" elapsed="0.000046"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:20.899487" elapsed="0.000028"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:20.899792" elapsed="0.000029"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:20.900050" elapsed="0.000030"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:09:20.899315" elapsed="0.000874"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:09:20.899137" elapsed="0.001094"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:20.900422" elapsed="0.000030"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:09:20.900506" elapsed="0.000021"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:09:20.874465" elapsed="0.026210">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:09:20.900774" elapsed="0.000021"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T01:09:20.864211" elapsed="0.036699">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:20.901144" elapsed="0.000050"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:20.907052" elapsed="0.000037"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:20.907329" elapsed="0.000031"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T01:09:20.907421" elapsed="0.000021"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T01:09:20.855500" elapsed="0.052129">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:09:20.907785" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:09:20.907846" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:09:20.854939" elapsed="0.052939"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T01:09:20.908181" elapsed="0.000021"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:09:20.908005" elapsed="0.000239"/>
</branch>
<status status="PASS" start="2026-04-08T01:09:20.907977" elapsed="0.000298"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:09:20.910047" elapsed="0.000343"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:09:20.911019" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:09:20.910597" elapsed="0.000457"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:09:20.911924" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:09:20.911661" elapsed="0.000289"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:09:20.911997" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T01:09:20.912143" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:09:20.911333" elapsed="0.000850"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:09:20.912700" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:09:20.912335" elapsed="0.000390"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:09:20.913233" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:09:20.912873" elapsed="0.000386"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:09:20.913606" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:09:20.922546" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:09:20.913413" elapsed="0.011493">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:20.925148" elapsed="0.000053"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:20.925401" elapsed="0.000029"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:20.925618" elapsed="0.000027"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:20.925833" elapsed="0.000028"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:20.926052" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:20.926316" elapsed="0.000029"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:20.926663" elapsed="0.000028"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:20.926887" elapsed="0.000028"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:20.927097" elapsed="0.000027"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:09:20.926497" elapsed="0.000691"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:09:20.926406" elapsed="0.000819"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:20.927408" elapsed="0.000028"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:09:20.927490" elapsed="0.000021"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:09:20.909305" elapsed="0.018356">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:09:20.928138" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:09:20.928226" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:09:20.908474" elapsed="0.019787"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T01:09:20.929100" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T01:09:20.928665" elapsed="0.000546">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T01:09:20.928377" elapsed="0.000922">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T01:09:20.928351" elapsed="0.000991">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T01:09:20.929405" elapsed="0.000022"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:09:20.854400" elapsed="0.075140">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:20.929778" elapsed="0.000029"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:20.930000" elapsed="0.000027"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T01:09:20.930084" elapsed="0.000021"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T01:09:20.851982" elapsed="0.078271">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:20.930483" elapsed="0.000029"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:20.930721" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:20.930945" elapsed="0.000028"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:20.931182" elapsed="0.000029"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:20.931406" elapsed="0.000027"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:20.931621" elapsed="0.000027"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T01:09:20.931704" elapsed="0.000020"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T01:09:20.849420" elapsed="0.082419">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:09:21.964586" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:09:21.964092" elapsed="0.000528"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:09:21.965184" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:09:21.964783" elapsed="0.000429"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T01:09:21.965262" elapsed="0.000040"/>
</return>
<msg time="2026-04-08T01:09:21.965434" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T01:09:21.963708" elapsed="0.001751"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T01:09:21.969952" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T01:09:21.969765" elapsed="0.000214"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:09:21.970124" elapsed="0.000234"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:09:21.970717" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:09:21.970508" elapsed="0.000234"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:09:21.971190" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:09:21.970922" elapsed="0.000312"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:09:21.971373" elapsed="0.000180"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:09:21.971901" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:09:21.971697" elapsed="0.000228"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:09:21.972344" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:09:21.972084" elapsed="0.000301"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:09:21.972865" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:09:21.972529" elapsed="0.000361"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:09:21.973303" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:09:21.973048" elapsed="0.000299"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:09:21.973772" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:09:21.973489" elapsed="0.000309"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:09:21.981981" elapsed="0.000230"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:09:21.990636" elapsed="0.000213"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:09:21.991416" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:09:21.991003" elapsed="0.000458"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:09:21.992687" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:09:21.992122" elapsed="0.000606"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:09:21.992879" elapsed="0.000045"/>
</return>
<msg time="2026-04-08T01:09:21.993065" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:09:21.991721" elapsed="0.001370"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:09:21.993722" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:09:21.993265" elapsed="0.000484"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:09:21.994362" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:09:21.993902" elapsed="0.000487"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:09:21.994886" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:09:22.006914" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:09:21.994548" elapsed="0.014888">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:22.009700" elapsed="0.000107"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:22.010016" elapsed="0.000030"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:22.010306" elapsed="0.000032"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:22.010539" elapsed="0.000028"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:22.010766" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:22.010984" elapsed="0.000027"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:22.011414" elapsed="0.000028"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:22.011722" elapsed="0.000029"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:22.011980" elapsed="0.000029"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:09:22.011219" elapsed="0.000873"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:09:22.011082" elapsed="0.001052"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:22.012363" elapsed="0.000030"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:09:22.012449" elapsed="0.000022"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:09:21.990094" elapsed="0.022521">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:09:22.012713" elapsed="0.000021"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T01:09:21.979808" elapsed="0.033043">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:22.013089" elapsed="0.000029"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:22.018932" elapsed="0.000039"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:22.019229" elapsed="0.000038"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T01:09:22.019356" elapsed="0.000025"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T01:09:21.969233" elapsed="0.050258">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:09:22.019617" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:09:22.019663" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:09:21.968673" elapsed="0.051017"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T01:09:22.019921" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:09:22.019795" elapsed="0.000169"/>
</branch>
<status status="PASS" start="2026-04-08T01:09:22.019772" elapsed="0.000215"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:09:22.021409" elapsed="0.000212"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:09:22.022115" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:09:22.021768" elapsed="0.000375"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:09:22.023198" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:09:22.022703" elapsed="0.000524"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:09:22.023279" elapsed="0.000031"/>
</return>
<msg time="2026-04-08T01:09:22.023430" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:09:22.022347" elapsed="0.001107"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:09:22.023981" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:09:22.023610" elapsed="0.000397"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:09:22.024524" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:09:22.024176" elapsed="0.000374"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:09:22.024921" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:09:22.034002" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:09:22.024706" elapsed="0.011062">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:22.035949" elapsed="0.000022"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:22.036113" elapsed="0.000020"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:22.036298" elapsed="0.000020"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:22.036456" elapsed="0.000020"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:22.036618" elapsed="0.000020"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:22.036771" elapsed="0.000020"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:22.037029" elapsed="0.000020"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:22.037209" elapsed="0.000022"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:22.037366" elapsed="0.000019"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:09:22.036907" elapsed="0.000510"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:09:22.036837" elapsed="0.000608"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:22.037579" elapsed="0.000019"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:09:22.037637" elapsed="0.000016"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:09:22.020837" elapsed="0.016908">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:09:22.037858" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:09:22.037902" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:09:22.020136" elapsed="0.017789"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T01:09:22.038592" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T01:09:22.038238" elapsed="0.000417">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T01:09:22.038009" elapsed="0.000749">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T01:09:22.037990" elapsed="0.000801">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T01:09:22.038838" elapsed="0.000015"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:09:21.968115" elapsed="0.070821">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:22.039108" elapsed="0.000021"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:22.039327" elapsed="0.000028"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T01:09:22.039414" elapsed="0.000020"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T01:09:21.965747" elapsed="0.073804">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:22.039777" elapsed="0.000028"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:22.040017" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:22.040268" elapsed="0.000029"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:22.040489" elapsed="0.000027"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:22.040709" elapsed="0.000027"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:22.040927" elapsed="0.000027"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T01:09:22.041011" elapsed="0.000020"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T01:09:21.962929" elapsed="0.078217">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:09:23.071432" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:09:23.070944" elapsed="0.000520"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:09:23.071941" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:09:23.071629" elapsed="0.000338"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T01:09:23.072015" elapsed="0.000041"/>
</return>
<msg time="2026-04-08T01:09:23.072202" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T01:09:23.070543" elapsed="0.001686"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T01:09:23.077264" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T01:09:23.077057" elapsed="0.000234"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:09:23.077437" elapsed="0.000194"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:09:23.078065" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:09:23.077855" elapsed="0.000235"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:09:23.078597" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:09:23.078289" elapsed="0.000359"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:09:23.078801" elapsed="0.000201"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:09:23.079388" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:09:23.079151" elapsed="0.000262"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:09:23.079816" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:09:23.079574" elapsed="0.000283"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:09:23.080363" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:09:23.080003" elapsed="0.000386"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:09:23.080785" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:09:23.080549" elapsed="0.000279"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:09:23.081275" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:09:23.080971" elapsed="0.000330"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:09:23.087609" elapsed="0.000215"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:09:23.096228" elapsed="0.000212"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:09:23.096993" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:09:23.096592" elapsed="0.000427"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:09:23.098173" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:09:23.097621" elapsed="0.000597"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:09:23.098388" elapsed="0.000045"/>
</return>
<msg time="2026-04-08T01:09:23.098565" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:09:23.097227" elapsed="0.001363"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:09:23.099237" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:09:23.098751" elapsed="0.000513"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:09:23.099846" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:09:23.099418" elapsed="0.000454"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:09:23.100393" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:09:23.113348" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:09:23.100029" elapsed="0.015981">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:23.116358" elapsed="0.000042"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:23.116618" elapsed="0.000031"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:23.116862" elapsed="0.000030"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:23.117103" elapsed="0.000030"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:23.117372" elapsed="0.000030"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:23.117607" elapsed="0.000030"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:23.118014" elapsed="0.000029"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:23.118509" elapsed="0.000033"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:23.118797" elapsed="0.000031"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:09:23.117830" elapsed="0.001086"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:09:23.117713" elapsed="0.001246"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:23.119186" elapsed="0.000032"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:09:23.119282" elapsed="0.000026"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:09:23.095728" elapsed="0.023744">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:09:23.119578" elapsed="0.000022"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T01:09:23.085425" elapsed="0.034300">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:23.119977" elapsed="0.000031"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:23.126308" elapsed="0.000075"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:23.126631" elapsed="0.000031"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T01:09:23.126730" elapsed="0.000022"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T01:09:23.076524" elapsed="0.050367">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:09:23.127074" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:09:23.127142" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:09:23.075946" elapsed="0.051263"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T01:09:23.127446" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:09:23.127311" elapsed="0.000177"/>
</branch>
<status status="PASS" start="2026-04-08T01:09:23.127290" elapsed="0.000221"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:09:23.128986" elapsed="0.000229"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:09:23.129691" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:09:23.129365" elapsed="0.000353"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:09:23.130532" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:09:23.130248" elapsed="0.000311"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:09:23.130607" elapsed="0.000031"/>
</return>
<msg time="2026-04-08T01:09:23.130760" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:09:23.129897" elapsed="0.000888"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:09:23.131341" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:09:23.130941" elapsed="0.000427"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:09:23.131975" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:09:23.131605" elapsed="0.000397"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:09:23.132399" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:09:23.142247" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:09:23.132176" elapsed="0.013004">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:23.145614" elapsed="0.000055"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:23.145985" elapsed="0.000045"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:23.146386" elapsed="0.000048"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:23.146799" elapsed="0.000059"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:23.147298" elapsed="0.000057"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:23.147696" elapsed="0.000047"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:23.148368" elapsed="0.000050"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:23.148767" elapsed="0.000047"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:23.149139" elapsed="0.000078"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:09:23.148042" elapsed="0.001258"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:09:23.147859" elapsed="0.001506"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:23.149688" elapsed="0.000048"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:09:23.149832" elapsed="0.000039"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:09:23.128359" elapsed="0.021748">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:09:23.150454" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:09:23.150563" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:09:23.127664" elapsed="0.022955"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T01:09:23.152900" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T01:09:23.151379" elapsed="0.001717">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T01:09:23.150833" elapsed="0.002462">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T01:09:23.150785" elapsed="0.002590">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T01:09:23.153488" elapsed="0.000037"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:09:23.075398" elapsed="0.078389">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:23.154237" elapsed="0.000053"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:23.154678" elapsed="0.000049"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T01:09:23.154942" elapsed="0.000038"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T01:09:23.072519" elapsed="0.082703">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:23.155446" elapsed="0.000020"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:23.155621" elapsed="0.000020"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:23.155783" elapsed="0.000019"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:23.155935" elapsed="0.000019"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:23.156092" elapsed="0.000019"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:23.156263" elapsed="0.000021"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T01:09:23.156326" elapsed="0.000014"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T01:09:23.069666" elapsed="0.086760">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:09:24.187180" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:09:24.186683" elapsed="0.000532"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:09:24.187707" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:09:24.187386" elapsed="0.000347"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T01:09:24.187782" elapsed="0.000041"/>
</return>
<msg time="2026-04-08T01:09:24.187953" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T01:09:24.186271" elapsed="0.001708"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T01:09:24.192546" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T01:09:24.192356" elapsed="0.000216"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:09:24.192717" elapsed="0.000195"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:09:24.193284" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:09:24.193057" elapsed="0.000252"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:09:24.193743" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:09:24.193489" elapsed="0.000295"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:09:24.193922" elapsed="0.000180"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:09:24.194489" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:09:24.194262" elapsed="0.000253"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:09:24.194927" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:09:24.194676" elapsed="0.000291"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:09:24.195471" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:09:24.195113" elapsed="0.000384"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:09:24.195987" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:09:24.195746" elapsed="0.000284"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:09:24.196474" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:09:24.196190" elapsed="0.000309"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:09:24.203002" elapsed="0.000231"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:09:24.211748" elapsed="0.000215"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:09:24.212522" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:09:24.212116" elapsed="0.000432"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:09:24.213699" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:09:24.213130" elapsed="0.000611"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:09:24.213875" elapsed="0.000033"/>
</return>
<msg time="2026-04-08T01:09:24.214033" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:09:24.212735" elapsed="0.001322"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:09:24.214718" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:09:24.214231" elapsed="0.000514"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:09:24.215352" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:09:24.214901" elapsed="0.000478"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:09:24.215874" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:09:24.229904" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:09:24.215539" elapsed="0.018130">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:24.234090" elapsed="0.000054"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:24.234545" elapsed="0.000051"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:24.234911" elapsed="0.000046"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:24.235313" elapsed="0.000048"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:24.235688" elapsed="0.000050"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:24.236227" elapsed="0.000051"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:24.236826" elapsed="0.000046"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:24.237365" elapsed="0.000049"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:24.237786" elapsed="0.000046"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:09:24.236546" elapsed="0.001419"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:09:24.236388" elapsed="0.001642"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:24.238364" elapsed="0.000048"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:09:24.238539" elapsed="0.000037"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:09:24.211212" elapsed="0.027586">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:09:24.239054" elapsed="0.000037"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T01:09:24.200804" elapsed="0.038535">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:24.239560" elapsed="0.000021"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:24.244293" elapsed="0.000028"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:24.244485" elapsed="0.000021"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T01:09:24.244551" elapsed="0.000016"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T01:09:24.191799" elapsed="0.052859">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:09:24.244772" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:09:24.244816" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:09:24.191243" elapsed="0.053597"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T01:09:24.245051" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:09:24.244933" elapsed="0.000160"/>
</branch>
<status status="PASS" start="2026-04-08T01:09:24.244910" elapsed="0.000206"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:09:24.246446" elapsed="0.000238"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:09:24.247141" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:09:24.246835" elapsed="0.000347"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:09:24.247957" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:09:24.247692" elapsed="0.000291"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:09:24.248029" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T01:09:24.248192" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:09:24.247360" elapsed="0.000857"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:09:24.248736" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:09:24.248369" elapsed="0.000393"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:09:24.249273" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:09:24.248913" elapsed="0.000386"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:09:24.249655" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:09:24.262199" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:09:24.249451" elapsed="0.016559">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:24.266437" elapsed="0.000103"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:24.266868" elapsed="0.000046"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:24.267347" elapsed="0.000048"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:24.267708" elapsed="0.000045"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:24.268070" elapsed="0.000043"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:24.268452" elapsed="0.000047"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:24.269028" elapsed="0.000044"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:24.269425" elapsed="0.000045"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:24.269773" elapsed="0.000044"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:09:24.268748" elapsed="0.001141"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:09:24.268599" elapsed="0.001347"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:24.270274" elapsed="0.000049"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:09:24.270411" elapsed="0.000033"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:09:24.245878" elapsed="0.024819">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:09:24.270947" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:09:24.271044" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:09:24.245278" elapsed="0.025818"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T01:09:24.271833" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T01:09:24.271512" elapsed="0.000382">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T01:09:24.271301" elapsed="0.000653">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T01:09:24.271274" elapsed="0.000712">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T01:09:24.272032" elapsed="0.000016"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:09:24.190685" elapsed="0.081446">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:24.272322" elapsed="0.000021"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:24.272482" elapsed="0.000020"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T01:09:24.272542" elapsed="0.000014"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T01:09:24.188294" elapsed="0.084349">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:24.272805" elapsed="0.000020"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:24.272974" elapsed="0.000020"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:24.273135" elapsed="0.000040"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:24.273353" elapsed="0.000021"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:24.273517" elapsed="0.000020"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:24.273674" elapsed="0.000019"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T01:09:24.273734" elapsed="0.000015"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T01:09:24.185471" elapsed="0.088363">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:09:25.305596" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:09:25.305049" elapsed="0.000581"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:09:25.306151" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:09:25.305816" elapsed="0.000380"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T01:09:25.306247" elapsed="0.000045"/>
</return>
<msg time="2026-04-08T01:09:25.306429" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T01:09:25.304639" elapsed="0.001815"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T01:09:25.311109" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T01:09:25.310920" elapsed="0.000215"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:09:25.311298" elapsed="0.000193"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:09:25.311844" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:09:25.311636" elapsed="0.000234"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:09:25.312320" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:09:25.312049" elapsed="0.000312"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:09:25.312509" elapsed="0.000179"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:09:25.313043" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:09:25.312833" elapsed="0.000234"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:09:25.313485" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:09:25.313241" elapsed="0.000284"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:09:25.314005" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:09:25.313669" elapsed="0.000361"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:09:25.314436" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:09:25.314202" elapsed="0.000277"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:09:25.314962" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:09:25.314657" elapsed="0.000331"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:09:25.321431" elapsed="0.000213"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:09:25.330172" elapsed="0.000213"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:09:25.330991" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:09:25.330537" elapsed="0.000480"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:09:25.332247" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:09:25.331691" elapsed="0.000600"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:09:25.332426" elapsed="0.000033"/>
</return>
<msg time="2026-04-08T01:09:25.332584" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:09:25.331294" elapsed="0.001315"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:09:25.333223" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:09:25.332762" elapsed="0.000488"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:09:25.333831" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:09:25.333404" elapsed="0.000453"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:09:25.334367" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:09:25.347340" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:09:25.334015" elapsed="0.015899">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:25.350215" elapsed="0.000037"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:25.350457" elapsed="0.000030"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:25.350726" elapsed="0.000031"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:25.350954" elapsed="0.000029"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:25.351202" elapsed="0.000030"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:25.351426" elapsed="0.000028"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:25.351801" elapsed="0.000028"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:25.352103" elapsed="0.000030"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:25.352392" elapsed="0.000029"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:09:25.351629" elapsed="0.000875"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:09:25.351524" elapsed="0.001020"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:25.352736" elapsed="0.000029"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:09:25.352820" elapsed="0.000022"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:09:25.329672" elapsed="0.023312">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:09:25.353080" elapsed="0.000022"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T01:09:25.319279" elapsed="0.033977">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:25.353497" elapsed="0.000030"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:25.359924" elapsed="0.000035"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:25.360208" elapsed="0.000024"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T01:09:25.360279" elapsed="0.000016"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T01:09:25.310373" elapsed="0.050022">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:09:25.360523" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:09:25.360570" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:09:25.309807" elapsed="0.050791"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T01:09:25.360832" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:09:25.360698" elapsed="0.000182"/>
</branch>
<status status="PASS" start="2026-04-08T01:09:25.360675" elapsed="0.000232"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:09:25.362344" elapsed="0.000213"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:09:25.363044" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:09:25.362727" elapsed="0.000343"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:09:25.363872" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:09:25.363602" elapsed="0.000296"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:09:25.363946" elapsed="0.000032"/>
</return>
<msg time="2026-04-08T01:09:25.364096" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:09:25.363263" elapsed="0.000858"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:09:25.364663" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:09:25.364290" elapsed="0.000399"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:09:25.365267" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:09:25.364840" elapsed="0.000456"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:09:25.365673" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:09:25.375475" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:09:25.365455" elapsed="0.011747">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:25.377381" elapsed="0.000023"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:25.377548" elapsed="0.000020"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:25.377705" elapsed="0.000020"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:25.377862" elapsed="0.000020"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:25.378023" elapsed="0.000020"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:25.378193" elapsed="0.000021"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:25.378451" elapsed="0.000020"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:25.378634" elapsed="0.000021"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:25.378835" elapsed="0.000021"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:09:25.378330" elapsed="0.000559"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:09:25.378260" elapsed="0.000656"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:25.379048" elapsed="0.000020"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:09:25.379106" elapsed="0.000015"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:09:25.361778" elapsed="0.017449">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:09:25.379340" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:09:25.379383" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:09:25.361076" elapsed="0.018331"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T01:09:25.380050" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T01:09:25.379696" elapsed="0.000415">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T01:09:25.379488" elapsed="0.000701">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T01:09:25.379469" elapsed="0.000754">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T01:09:25.380271" elapsed="0.000016"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:09:25.309263" elapsed="0.071209">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:25.380860" elapsed="0.000048"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:25.381251" elapsed="0.000047"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T01:09:25.381391" elapsed="0.000031"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T01:09:25.306760" elapsed="0.074845">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:25.381964" elapsed="0.000045"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:25.382378" elapsed="0.000046"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:25.382769" elapsed="0.000046"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:25.383118" elapsed="0.000070"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:25.383507" elapsed="0.000043"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:25.383854" elapsed="0.000043"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T01:09:25.383986" elapsed="0.000032"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T01:09:25.303832" elapsed="0.080398">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:09:26.417633" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:09:26.417145" elapsed="0.000520"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:09:26.418139" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:09:26.417831" elapsed="0.000356"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T01:09:26.418235" elapsed="0.000040"/>
</return>
<msg time="2026-04-08T01:09:26.418406" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T01:09:26.416753" elapsed="0.001679"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T01:09:26.423106" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T01:09:26.422917" elapsed="0.000215"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:09:26.423294" elapsed="0.000209"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:09:26.423871" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:09:26.423658" elapsed="0.000238"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:09:26.424354" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:09:26.424077" elapsed="0.000318"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:09:26.424538" elapsed="0.000213"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:09:26.425215" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:09:26.424940" elapsed="0.000308"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:09:26.425781" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:09:26.425463" elapsed="0.000373"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:09:26.426500" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:09:26.426035" elapsed="0.000493"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:09:26.427000" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:09:26.426714" elapsed="0.000346"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:09:26.427544" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:09:26.427240" elapsed="0.000331"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:09:26.434191" elapsed="0.000266"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:09:26.443480" elapsed="0.000213"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:09:26.444294" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:09:26.443866" elapsed="0.000455"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:09:26.445813" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:09:26.444956" elapsed="0.000899"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:09:26.445993" elapsed="0.000035"/>
</return>
<msg time="2026-04-08T01:09:26.446170" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:09:26.444504" elapsed="0.001696"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:09:26.446859" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:09:26.446358" elapsed="0.000529"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:09:26.447627" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:09:26.447068" elapsed="0.000593"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:09:26.448206" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:09:26.461227" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:09:26.447846" elapsed="0.016305">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:26.464602" elapsed="0.000055"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:26.465009" elapsed="0.000051"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:26.465412" elapsed="0.000051"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:26.465779" elapsed="0.000048"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:26.466226" elapsed="0.000063"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:26.466717" elapsed="0.000091"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:26.467495" elapsed="0.000067"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:26.468097" elapsed="0.000116"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:26.468658" elapsed="0.000062"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:09:26.467130" elapsed="0.001739"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:09:26.466955" elapsed="0.001978"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:26.469281" elapsed="0.000071"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:09:26.469445" elapsed="0.000037"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:09:26.442971" elapsed="0.026734">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:09:26.469862" elapsed="0.000035"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T01:09:26.431849" elapsed="0.038235">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:26.470509" elapsed="0.000047"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:26.477276" elapsed="0.000030"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:26.477475" elapsed="0.000022"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T01:09:26.477542" elapsed="0.000016"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T01:09:26.422358" elapsed="0.055291">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:09:26.477767" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:09:26.477812" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:09:26.421787" elapsed="0.056048"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T01:09:26.478099" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:09:26.477976" elapsed="0.000166"/>
</branch>
<status status="PASS" start="2026-04-08T01:09:26.477955" elapsed="0.000224"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:09:26.479556" elapsed="0.000210"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:09:26.480242" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:09:26.479913" elapsed="0.000355"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:09:26.481042" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:09:26.480775" elapsed="0.000293"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:09:26.481116" elapsed="0.000031"/>
</return>
<msg time="2026-04-08T01:09:26.481284" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:09:26.480446" elapsed="0.000862"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:09:26.481826" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:09:26.481460" elapsed="0.000392"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:09:26.482360" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:09:26.482002" elapsed="0.000384"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:09:26.482750" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:09:26.492291" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:09:26.482539" elapsed="0.011466">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:26.494199" elapsed="0.000023"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:26.494364" elapsed="0.000021"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:26.494522" elapsed="0.000020"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:26.494679" elapsed="0.000020"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:26.494862" elapsed="0.000021"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:26.495018" elapsed="0.000020"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:26.495293" elapsed="0.000020"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:26.495456" elapsed="0.000020"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:26.495610" elapsed="0.000020"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:09:26.495168" elapsed="0.000494"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:09:26.495084" elapsed="0.000604"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:26.495822" elapsed="0.000020"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:09:26.495881" elapsed="0.000016"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:09:26.478991" elapsed="0.017000">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:09:26.496105" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:09:26.496149" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:09:26.478330" elapsed="0.017857"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T01:09:26.496859" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T01:09:26.496538" elapsed="0.000381">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T01:09:26.496320" elapsed="0.000659">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T01:09:26.496297" elapsed="0.000714">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T01:09:26.497056" elapsed="0.000016"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:09:26.421209" elapsed="0.075944">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:26.497345" elapsed="0.000021"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:26.497503" elapsed="0.000020"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T01:09:26.497565" elapsed="0.000014"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T01:09:26.418720" elapsed="0.078941">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:26.497821" elapsed="0.000020"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:26.497991" elapsed="0.000020"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:26.498169" elapsed="0.000021"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:26.498328" elapsed="0.000020"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:26.498488" elapsed="0.000020"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:26.498643" elapsed="0.000019"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T01:09:26.498703" elapsed="0.000015"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T01:09:26.415783" elapsed="0.083029">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:09:27.581046" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:09:27.580558" elapsed="0.000521"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:09:27.581579" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:09:27.581263" elapsed="0.000343"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T01:09:27.581655" elapsed="0.000040"/>
</return>
<msg time="2026-04-08T01:09:27.581825" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T01:09:27.580140" elapsed="0.001711"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T01:09:27.586452" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T01:09:27.586263" elapsed="0.000215"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:09:27.586623" elapsed="0.000193"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:09:27.587225" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:09:27.586996" elapsed="0.000255"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:09:27.587692" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:09:27.587438" elapsed="0.000295"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:09:27.587874" elapsed="0.000180"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:09:27.588421" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:09:27.588214" elapsed="0.000232"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:09:27.588846" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:09:27.588605" elapsed="0.000281"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:09:27.589389" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:09:27.589030" elapsed="0.000385"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:09:27.589809" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:09:27.589574" elapsed="0.000277"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:09:27.590291" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:09:27.589994" elapsed="0.000322"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:09:27.596705" elapsed="0.000215"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:09:27.605387" elapsed="0.000214"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:09:27.606140" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:09:27.605755" elapsed="0.000433"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:09:27.607447" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:09:27.606792" elapsed="0.000697"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:09:27.607623" elapsed="0.000037"/>
</return>
<msg time="2026-04-08T01:09:27.607788" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:09:27.606372" elapsed="0.001441"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:09:27.608444" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:09:27.607971" elapsed="0.000499"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:09:27.609054" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:09:27.608625" elapsed="0.000456"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:09:27.609598" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:09:27.623904" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:09:27.609255" elapsed="0.018471">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:27.627984" elapsed="0.000034"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:27.628243" elapsed="0.000030"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:27.628516" elapsed="0.000036"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:27.628750" elapsed="0.000029"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:27.629050" elapsed="0.000029"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:27.629301" elapsed="0.000030"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:27.629675" elapsed="0.000029"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:27.629984" elapsed="0.000029"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:27.630270" elapsed="0.000030"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:09:27.629502" elapsed="0.000886"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:09:27.629400" elapsed="0.001027"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:27.630620" elapsed="0.000029"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:09:27.630705" elapsed="0.000022"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:09:27.604882" elapsed="0.025985">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:09:27.630992" elapsed="0.000024"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T01:09:27.594529" elapsed="0.036610">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:27.631405" elapsed="0.000029"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:27.637578" elapsed="0.000040"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:27.637842" elapsed="0.000029"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T01:09:27.637934" elapsed="0.000021"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T01:09:27.585717" elapsed="0.052364">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:09:27.638260" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:09:27.638323" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:09:27.585147" elapsed="0.053214"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T01:09:27.638685" elapsed="0.000019"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:09:27.638516" elapsed="0.000228"/>
</branch>
<status status="PASS" start="2026-04-08T01:09:27.638480" elapsed="0.000296"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:09:27.640457" elapsed="0.000210"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:09:27.641118" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:09:27.640815" elapsed="0.000328"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:09:27.641931" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:09:27.641666" elapsed="0.000291"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:09:27.642039" elapsed="0.000031"/>
</return>
<msg time="2026-04-08T01:09:27.642205" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:09:27.641336" elapsed="0.000895"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:09:27.642753" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:09:27.642383" elapsed="0.000396"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:09:27.643316" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:09:27.642929" elapsed="0.000413"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:09:27.643704" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:09:27.652270" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:09:27.643498" elapsed="0.011089">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:27.654834" elapsed="0.000031"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:27.655085" elapsed="0.000030"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:27.655334" elapsed="0.000029"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:27.655559" elapsed="0.000028"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:27.655787" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:27.656003" elapsed="0.000028"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:27.656378" elapsed="0.000029"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:27.656610" elapsed="0.000028"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:27.656825" elapsed="0.000029"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:09:27.656203" elapsed="0.000696"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:09:27.656091" elapsed="0.000843"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:27.657118" elapsed="0.000028"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:09:27.657222" elapsed="0.000022"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:09:27.639881" elapsed="0.017492">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:09:27.657529" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:09:27.657591" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:09:27.639012" elapsed="0.018611"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T01:09:27.658514" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T01:09:27.658027" elapsed="0.000573">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T01:09:27.657736" elapsed="0.000951">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T01:09:27.657710" elapsed="0.001021">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T01:09:27.658795" elapsed="0.000021"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:09:27.584609" elapsed="0.074322">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:27.659280" elapsed="0.000031"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:27.659510" elapsed="0.000028"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T01:09:27.659596" elapsed="0.000020"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T01:09:27.582141" elapsed="0.077591">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:27.659958" elapsed="0.000028"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:27.660217" elapsed="0.000030"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:27.660448" elapsed="0.000028"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:27.660663" elapsed="0.000027"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:27.660884" elapsed="0.000027"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:27.661100" elapsed="0.000027"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T01:09:27.661205" elapsed="0.000021"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T01:09:27.579220" elapsed="0.082123">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:09:28.691710" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:09:28.691209" elapsed="0.000533"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:09:28.692330" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:09:28.691909" elapsed="0.000448"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T01:09:28.692409" elapsed="0.000053"/>
</return>
<msg time="2026-04-08T01:09:28.692604" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T01:09:28.690788" elapsed="0.001841"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T01:09:28.697203" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T01:09:28.696997" elapsed="0.000235"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:09:28.697379" elapsed="0.000200"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:09:28.697936" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:09:28.697726" elapsed="0.000235"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:09:28.698413" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:09:28.698140" elapsed="0.000315"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:09:28.698596" elapsed="0.000183"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:09:28.699135" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:09:28.698925" elapsed="0.000270"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:09:28.699688" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:09:28.699434" elapsed="0.000296"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:09:28.700242" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:09:28.699879" elapsed="0.000389"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:09:28.700671" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:09:28.700431" elapsed="0.000284"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:09:28.701149" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:09:28.700861" elapsed="0.000330"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:09:28.707630" elapsed="0.000220"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:09:28.716524" elapsed="0.000233"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:09:28.717340" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:09:28.716915" elapsed="0.000452"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:09:28.718518" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:09:28.717961" elapsed="0.000599"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:09:28.718695" elapsed="0.000042"/>
</return>
<msg time="2026-04-08T01:09:28.718865" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:09:28.717566" elapsed="0.001324"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:09:28.719760" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:09:28.719046" elapsed="0.000778"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:09:28.721184" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:09:28.720200" elapsed="0.001047"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:09:28.722330" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:09:28.734731" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:09:28.721597" elapsed="0.017087">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:28.739088" elapsed="0.000052"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:28.739519" elapsed="0.000047"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:28.739880" elapsed="0.000046"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:28.740282" elapsed="0.000049"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:28.740655" elapsed="0.000046"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:28.741011" elapsed="0.000046"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:28.741627" elapsed="0.000045"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:28.742118" elapsed="0.000084"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:28.742586" elapsed="0.000048"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:09:28.741349" elapsed="0.001416"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:09:28.741190" elapsed="0.001637"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:28.743130" elapsed="0.000116"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:09:28.743342" elapsed="0.000037"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:09:28.715958" elapsed="0.027580">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:09:28.743703" elapsed="0.000023"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T01:09:28.705443" elapsed="0.038405">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:28.744089" elapsed="0.000030"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:28.750024" elapsed="0.000037"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:28.750304" elapsed="0.000030"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T01:09:28.750398" elapsed="0.000021"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T01:09:28.696460" elapsed="0.054084">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:09:28.750700" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:09:28.750762" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:09:28.695895" elapsed="0.054899"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T01:09:28.751078" elapsed="0.000019"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:09:28.750920" elapsed="0.000217"/>
</branch>
<status status="PASS" start="2026-04-08T01:09:28.750891" elapsed="0.000340"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:09:28.752653" elapsed="0.000207"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:09:28.753323" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:09:28.753005" elapsed="0.000344"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:09:28.754115" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:09:28.753851" elapsed="0.000290"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:09:28.754205" elapsed="0.000031"/>
</return>
<msg time="2026-04-08T01:09:28.754355" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:09:28.753522" elapsed="0.000858"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:09:28.754899" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:09:28.754537" elapsed="0.000387"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:09:28.755444" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:09:28.755073" elapsed="0.000397"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:09:28.755815" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:09:28.764272" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:09:28.755621" elapsed="0.010994">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:28.766920" elapsed="0.000031"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:28.767202" elapsed="0.000033"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:28.767439" elapsed="0.000028"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:28.767660" elapsed="0.000028"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:28.767888" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:28.768105" elapsed="0.000027"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:28.768480" elapsed="0.000027"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:28.768730" elapsed="0.000029"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:28.768950" elapsed="0.000027"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:09:28.768309" elapsed="0.000713"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:09:28.768214" elapsed="0.000844"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:28.769265" elapsed="0.000029"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:09:28.769348" elapsed="0.000021"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:09:28.752099" elapsed="0.017399">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:09:28.769655" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:09:28.769715" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:09:28.751464" elapsed="0.018284"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T01:09:28.770622" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T01:09:28.770176" elapsed="0.000531">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T01:09:28.769865" elapsed="0.000928">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T01:09:28.769838" elapsed="0.000999">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T01:09:28.770900" elapsed="0.000022"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:09:28.695345" elapsed="0.075695">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:28.771309" elapsed="0.000031"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:28.771537" elapsed="0.000028"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T01:09:28.771623" elapsed="0.000021"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T01:09:28.692919" elapsed="0.078840">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:28.771985" elapsed="0.000028"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:28.772308" elapsed="0.000030"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:28.772543" elapsed="0.000028"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:28.772762" elapsed="0.000027"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:28.772987" elapsed="0.000028"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:28.773228" elapsed="0.000029"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T01:09:28.773334" elapsed="0.000023"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T01:09:28.690013" elapsed="0.083467">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:09:29.805360" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:09:29.804858" elapsed="0.000537"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:09:29.805879" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:09:29.805561" elapsed="0.000345"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T01:09:29.805954" elapsed="0.000040"/>
</return>
<msg time="2026-04-08T01:09:29.806127" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T01:09:29.804470" elapsed="0.001682"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T01:09:29.810782" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T01:09:29.810591" elapsed="0.000218"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:09:29.810955" elapsed="0.000223"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:09:29.811561" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:09:29.811329" elapsed="0.000258"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:09:29.812024" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:09:29.811771" elapsed="0.000294"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:09:29.812222" elapsed="0.000182"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:09:29.812756" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:09:29.812551" elapsed="0.000231"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:09:29.813201" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:09:29.812943" elapsed="0.000299"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:09:29.813726" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:09:29.813387" elapsed="0.000365"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:09:29.814144" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:09:29.813911" elapsed="0.000293"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:09:29.814629" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:09:29.814348" elapsed="0.000307"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:09:29.821057" elapsed="0.000233"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:09:29.829684" elapsed="0.000284"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:09:29.830526" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:09:29.830120" elapsed="0.000433"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:09:29.831715" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:09:29.831126" elapsed="0.000630"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:09:29.831890" elapsed="0.000032"/>
</return>
<msg time="2026-04-08T01:09:29.832050" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:09:29.830735" elapsed="0.001346"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:09:29.832713" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:09:29.832261" elapsed="0.000480"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:09:29.833340" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:09:29.832895" elapsed="0.000473"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:09:29.833855" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:09:29.846103" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:09:29.833524" elapsed="0.016546">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:29.850507" elapsed="0.000052"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:29.850884" elapsed="0.000047"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:29.851283" elapsed="0.000048"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:29.851725" elapsed="0.000048"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:29.852095" elapsed="0.000045"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:29.852486" elapsed="0.000035"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:29.852865" elapsed="0.000028"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:29.853197" elapsed="0.000035"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:29.853475" elapsed="0.000030"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:09:29.852693" elapsed="0.000895"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:09:29.852595" elapsed="0.001032"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:29.853818" elapsed="0.000029"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:09:29.853901" elapsed="0.000021"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:09:29.829196" elapsed="0.024866">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:09:29.854181" elapsed="0.000024"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T01:09:29.818871" elapsed="0.035454">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:29.854611" elapsed="0.000030"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:29.860600" elapsed="0.000038"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:29.860861" elapsed="0.000029"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T01:09:29.860953" elapsed="0.000021"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T01:09:29.810039" elapsed="0.051059">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:09:29.861309" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:09:29.861386" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:09:29.809487" elapsed="0.051932"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T01:09:29.861737" elapsed="0.000020"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:09:29.861562" elapsed="0.000238"/>
</branch>
<status status="PASS" start="2026-04-08T01:09:29.861531" elapsed="0.000302"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:09:29.863719" elapsed="0.000323"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:09:29.864700" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:09:29.864284" elapsed="0.000442"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:09:29.865515" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:09:29.865250" elapsed="0.000291"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:09:29.865588" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T01:09:29.865734" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:09:29.864901" elapsed="0.000857"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:09:29.866301" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:09:29.865911" elapsed="0.000417"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:09:29.866824" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:09:29.866483" elapsed="0.000367"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:09:29.867213" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:09:29.879117" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:09:29.867001" elapsed="0.014490">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:29.881738" elapsed="0.000033"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:29.881966" elapsed="0.000028"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:29.882204" elapsed="0.000029"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:29.882426" elapsed="0.000028"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:29.882649" elapsed="0.000027"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:29.882862" elapsed="0.000027"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:29.883225" elapsed="0.000086"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:29.883537" elapsed="0.000029"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:29.883750" elapsed="0.000028"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:09:29.883039" elapsed="0.000784"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:09:29.882948" elapsed="0.000911"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:29.884040" elapsed="0.000028"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:09:29.884121" elapsed="0.000020"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:09:29.862887" elapsed="0.021408">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:09:29.884454" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:09:29.884515" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:09:29.862043" elapsed="0.022503"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T01:09:29.885423" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T01:09:29.884951" elapsed="0.000555">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T01:09:29.884662" elapsed="0.000930">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T01:09:29.884635" elapsed="0.001001">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T01:09:29.885700" elapsed="0.000022"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:09:29.808921" elapsed="0.076913">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:29.886071" elapsed="0.000029"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:29.886449" elapsed="0.000031"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T01:09:29.886541" elapsed="0.000020"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T01:09:29.806469" elapsed="0.080210">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:29.886904" elapsed="0.000029"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:29.887143" elapsed="0.000058"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:29.887463" elapsed="0.000036"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:29.887732" elapsed="0.000033"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:29.887970" elapsed="0.000027"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:29.888210" elapsed="0.000029"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T01:09:29.888299" elapsed="0.000022"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T01:09:29.803679" elapsed="0.084783">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:09:30.920924" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:09:30.920454" elapsed="0.000505"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:09:30.921470" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:09:30.921133" elapsed="0.000365"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T01:09:30.921546" elapsed="0.000040"/>
</return>
<msg time="2026-04-08T01:09:30.921716" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T01:09:30.920039" elapsed="0.001704"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T01:09:30.926380" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T01:09:30.926182" elapsed="0.000225"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:09:30.926555" elapsed="0.000194"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:09:30.927108" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:09:30.926897" elapsed="0.000236"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:09:30.927616" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:09:30.927340" elapsed="0.000320"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:09:30.927803" elapsed="0.000184"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:09:30.928365" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:09:30.928132" elapsed="0.000259"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:09:30.928798" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:09:30.928553" elapsed="0.000287"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:09:30.929352" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:09:30.928985" elapsed="0.000393"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:09:30.929773" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:09:30.929538" elapsed="0.000278"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:09:30.930302" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:09:30.929959" elapsed="0.000377"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:09:30.936783" elapsed="0.000214"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:09:30.945392" elapsed="0.000222"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:09:30.946191" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:09:30.945770" elapsed="0.000450"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:09:30.947369" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:09:30.946807" elapsed="0.000605"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:09:30.947554" elapsed="0.000034"/>
</return>
<msg time="2026-04-08T01:09:30.947750" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:09:30.946404" elapsed="0.001371"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:09:30.948402" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:09:30.947932" elapsed="0.000497"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:09:30.949138" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:09:30.948696" elapsed="0.000485"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:09:30.949679" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:09:30.961275" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:09:30.949343" elapsed="0.015866">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:30.965615" elapsed="0.000052"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:30.965990" elapsed="0.000047"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:30.966383" elapsed="0.000047"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:30.966744" elapsed="0.000047"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:30.967112" elapsed="0.000083"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:30.967508" elapsed="0.000047"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:30.968201" elapsed="0.000049"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:30.968648" elapsed="0.000024"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:30.968836" elapsed="0.000021"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:09:30.967889" elapsed="0.001028"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:09:30.967728" elapsed="0.001218"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:30.969082" elapsed="0.000020"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:09:30.969141" elapsed="0.000036"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:09:30.944882" elapsed="0.024402">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:09:30.969353" elapsed="0.000015"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T01:09:30.934595" elapsed="0.034857">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:30.969620" elapsed="0.000020"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:30.973951" elapsed="0.000028"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:30.974142" elapsed="0.000043"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T01:09:30.974233" elapsed="0.000015"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T01:09:30.925624" elapsed="0.048714">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:09:30.974499" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:09:30.974543" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:09:30.925043" elapsed="0.049523"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T01:09:30.974774" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:09:30.974659" elapsed="0.000157"/>
</branch>
<status status="PASS" start="2026-04-08T01:09:30.974637" elapsed="0.000202"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:09:30.976144" elapsed="0.000223"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:09:30.976818" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:09:30.976514" elapsed="0.000329"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:09:30.977625" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:09:30.977361" elapsed="0.000290"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:09:30.977698" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T01:09:30.977845" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:09:30.977015" elapsed="0.000854"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:09:30.978401" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:09:30.978021" elapsed="0.000406"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:09:30.978915" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:09:30.978576" elapsed="0.000364"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:09:30.979309" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:09:30.989074" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:09:30.979092" elapsed="0.013485">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:30.992980" elapsed="0.000050"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:30.993381" elapsed="0.000047"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:30.993735" elapsed="0.000044"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:30.994084" elapsed="0.000043"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:30.994482" elapsed="0.000044"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:30.994823" elapsed="0.000043"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:30.995410" elapsed="0.000046"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:30.995818" elapsed="0.000046"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:30.996192" elapsed="0.000048"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:09:30.995111" elapsed="0.001202"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:09:30.994962" elapsed="0.001408"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:30.996664" elapsed="0.000044"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:09:30.996792" elapsed="0.000033"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:09:30.975594" elapsed="0.021433">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:09:30.997437" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:09:30.997612" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:09:30.974984" elapsed="0.022718"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T01:09:30.999336" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T01:09:30.998573" elapsed="0.000900">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T01:09:30.998005" elapsed="0.001605">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T01:09:30.997938" elapsed="0.001805">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T01:09:30.999850" elapsed="0.000035"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:09:30.924498" elapsed="0.075575">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:31.000500" elapsed="0.000055"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:31.000723" elapsed="0.000020"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T01:09:31.000784" elapsed="0.000014"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T01:09:30.922037" elapsed="0.078847">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:31.001045" elapsed="0.000021"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:31.001238" elapsed="0.000021"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:31.001401" elapsed="0.000020"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:31.001555" elapsed="0.000019"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:31.001713" elapsed="0.000019"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:31.001868" elapsed="0.000019"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T01:09:31.001928" elapsed="0.000014"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T01:09:30.919239" elapsed="0.082787">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:09:32.034268" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:09:32.033780" elapsed="0.000521"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:09:32.034782" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:09:32.034467" elapsed="0.000341"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T01:09:32.034857" elapsed="0.000039"/>
</return>
<msg time="2026-04-08T01:09:32.035026" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T01:09:32.033395" elapsed="0.001723"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T01:09:32.039912" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T01:09:32.039671" elapsed="0.000270"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:09:32.040088" elapsed="0.000210"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:09:32.040652" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:09:32.040446" elapsed="0.000231"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:09:32.041112" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:09:32.040856" elapsed="0.000296"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:09:32.041310" elapsed="0.000180"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:09:32.041838" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:09:32.041635" elapsed="0.000228"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:09:32.042280" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:09:32.042023" elapsed="0.000297"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:09:32.042807" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:09:32.042466" elapsed="0.000367"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:09:32.043242" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:09:32.042991" elapsed="0.000294"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:09:32.043713" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:09:32.043430" elapsed="0.000308"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:09:32.050249" elapsed="0.000219"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:09:32.058867" elapsed="0.000212"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:09:32.059637" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:09:32.059245" elapsed="0.000419"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:09:32.060906" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:09:32.060354" elapsed="0.000594"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:09:32.061084" elapsed="0.000038"/>
</return>
<msg time="2026-04-08T01:09:32.061267" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:09:32.059907" elapsed="0.001386"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:09:32.061910" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:09:32.061450" elapsed="0.000486"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:09:32.062540" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:09:32.062091" elapsed="0.000476"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:09:32.063056" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:09:32.076840" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:09:32.062723" elapsed="0.017801">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:32.080935" elapsed="0.000052"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:32.081350" elapsed="0.000049"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:32.081814" elapsed="0.000048"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:32.082221" elapsed="0.000050"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:32.082604" elapsed="0.000046"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:32.082962" elapsed="0.000047"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:32.083582" elapsed="0.000047"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:32.084126" elapsed="0.000088"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:32.084600" elapsed="0.000048"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:09:32.083300" elapsed="0.001480"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:09:32.083115" elapsed="0.001728"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:32.085149" elapsed="0.000089"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:09:32.085330" elapsed="0.000035"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:09:32.058378" elapsed="0.027205">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:09:32.085742" elapsed="0.000034"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T01:09:32.048034" elapsed="0.037931">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:32.086382" elapsed="0.000049"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:32.091774" elapsed="0.000027"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:32.091980" elapsed="0.000022"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T01:09:32.092047" elapsed="0.000015"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T01:09:32.039080" elapsed="0.053073">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:09:32.092282" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:09:32.092327" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:09:32.038525" elapsed="0.053826"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T01:09:32.092555" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:09:32.092440" elapsed="0.000158"/>
</branch>
<status status="PASS" start="2026-04-08T01:09:32.092419" elapsed="0.000201"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:09:32.093923" elapsed="0.000214"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:09:32.094610" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:09:32.094303" elapsed="0.000333"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:09:32.095692" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:09:32.095208" elapsed="0.000516"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:09:32.095776" elapsed="0.000211"/>
</return>
<msg time="2026-04-08T01:09:32.096121" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:09:32.094857" elapsed="0.001290"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:09:32.096710" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:09:32.096328" elapsed="0.000409"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:09:32.097273" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:09:32.096890" elapsed="0.000410"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:09:32.097660" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:09:32.105939" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:09:32.097459" elapsed="0.011787">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:32.109731" elapsed="0.000059"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:32.110124" elapsed="0.000078"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:32.110520" elapsed="0.000047"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:32.110879" elapsed="0.000046"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:32.111282" elapsed="0.000048"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:32.111644" elapsed="0.000046"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:32.112273" elapsed="0.000048"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:32.112644" elapsed="0.000045"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:32.112985" elapsed="0.000044"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:09:32.111964" elapsed="0.001138"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:09:32.111788" elapsed="0.001398"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:32.113484" elapsed="0.000045"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:09:32.113613" elapsed="0.000033"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:09:32.093374" elapsed="0.020473">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:09:32.114094" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:09:32.114223" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:09:32.092763" elapsed="0.021515"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T01:09:32.115833" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T01:09:32.115379" elapsed="0.000554">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T01:09:32.114462" elapsed="0.001537">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T01:09:32.114421" elapsed="0.001610">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T01:09:32.116077" elapsed="0.000016"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:09:32.037943" elapsed="0.078330">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:32.116453" elapsed="0.000022"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:32.116618" elapsed="0.000021"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T01:09:32.116681" elapsed="0.000014"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T01:09:32.035430" elapsed="0.081352">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:32.116947" elapsed="0.000022"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:32.117125" elapsed="0.000021"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:32.117319" elapsed="0.000021"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:32.117480" elapsed="0.000024"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:32.117648" elapsed="0.000021"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:32.117808" elapsed="0.000020"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T01:09:32.117869" elapsed="0.000016"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T01:09:32.032606" elapsed="0.085363">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:09:33.152033" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:09:33.151415" elapsed="0.000660"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:09:33.152727" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:09:33.152355" elapsed="0.000400"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T01:09:33.152807" elapsed="0.000048"/>
</return>
<msg time="2026-04-08T01:09:33.152992" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T01:09:33.150897" elapsed="0.002122"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T01:09:33.158028" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T01:09:33.157832" elapsed="0.000223"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:09:33.158233" elapsed="0.000202"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:09:33.158797" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:09:33.158586" elapsed="0.000238"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:09:33.159381" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:09:33.159006" elapsed="0.000418"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:09:33.159570" elapsed="0.000200"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:09:33.160239" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:09:33.159954" elapsed="0.000313"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:09:33.160692" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:09:33.160436" elapsed="0.000299"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:09:33.161313" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:09:33.160885" elapsed="0.000461"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:09:33.161778" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:09:33.161513" elapsed="0.000309"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:09:33.162289" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:09:33.161972" elapsed="0.000343"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:09:33.168654" elapsed="0.000218"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:09:33.177551" elapsed="0.000216"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:09:33.178397" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:09:33.177948" elapsed="0.000476"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:09:33.179663" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:09:33.179042" elapsed="0.000664"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:09:33.179846" elapsed="0.000038"/>
</return>
<msg time="2026-04-08T01:09:33.180011" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:09:33.178610" elapsed="0.001427"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:09:33.180709" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:09:33.180237" elapsed="0.000500"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:09:33.181352" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:09:33.180894" elapsed="0.000485"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:09:33.181881" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:09:33.194029" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:09:33.181539" elapsed="0.016559">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:33.198574" elapsed="0.000057"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:33.198961" elapsed="0.000048"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:33.199383" elapsed="0.000050"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:33.199755" elapsed="0.000046"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:33.200129" elapsed="0.000187"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:33.200614" elapsed="0.000030"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:33.201001" elapsed="0.000029"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:33.201344" elapsed="0.000031"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:33.201615" elapsed="0.000030"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:09:33.200824" elapsed="0.001072"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:09:33.200716" elapsed="0.001231"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:33.202149" elapsed="0.000054"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:09:33.202261" elapsed="0.000024"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:09:33.177042" elapsed="0.025388">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:09:33.202530" elapsed="0.000022"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T01:09:33.166460" elapsed="0.036211">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:33.202908" elapsed="0.000030"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:33.208733" elapsed="0.000038"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:33.208996" elapsed="0.000030"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T01:09:33.209088" elapsed="0.000022"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T01:09:33.157252" elapsed="0.052003">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:09:33.209418" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:09:33.209479" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:09:33.156666" elapsed="0.052845"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T01:09:33.209804" elapsed="0.000019"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:09:33.209638" elapsed="0.000225"/>
</branch>
<status status="PASS" start="2026-04-08T01:09:33.209609" elapsed="0.000285"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:09:33.211753" elapsed="0.000293"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:09:33.212717" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:09:33.212283" elapsed="0.000470"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:09:33.213856" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:09:33.213483" elapsed="0.000410"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:09:33.213959" elapsed="0.000042"/>
</return>
<msg time="2026-04-08T01:09:33.214186" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:09:33.212997" elapsed="0.001226"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:09:33.214953" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:09:33.214437" elapsed="0.000553"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:09:33.215712" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:09:33.215224" elapsed="0.000525"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:09:33.216375" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:09:33.224835" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:09:33.216020" elapsed="0.010988">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:33.227297" elapsed="0.000034"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:33.227532" elapsed="0.000029"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:33.227756" elapsed="0.000028"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:33.227980" elapsed="0.000027"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:33.228254" elapsed="0.000030"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:33.228477" elapsed="0.000028"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:33.228837" elapsed="0.000029"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:33.229066" elapsed="0.000028"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:33.229304" elapsed="0.000029"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:09:33.228667" elapsed="0.000712"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:09:33.228570" elapsed="0.000846"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:33.229610" elapsed="0.000028"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:09:33.229693" elapsed="0.000022"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:09:33.210978" elapsed="0.018874">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:09:33.230021" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:09:33.230082" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:09:33.210098" elapsed="0.020016"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T01:09:33.231435" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T01:09:33.230939" elapsed="0.000581">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T01:09:33.230623" elapsed="0.000985">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T01:09:33.230238" elapsed="0.001414">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T01:09:33.231717" elapsed="0.000022"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:09:33.156073" elapsed="0.075782">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:33.232099" elapsed="0.000030"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:33.232385" elapsed="0.000029"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T01:09:33.232474" elapsed="0.000021"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T01:09:33.153339" elapsed="0.079281">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:33.232919" elapsed="0.000030"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:33.233178" elapsed="0.000031"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:33.233411" elapsed="0.000027"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:33.233623" elapsed="0.000027"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:33.233842" elapsed="0.000027"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:33.234058" elapsed="0.000026"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T01:09:33.234142" elapsed="0.000039"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T01:09:33.150095" elapsed="0.084208">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:09:34.266788" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:09:34.266259" elapsed="0.000565"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:09:34.267347" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:09:34.267000" elapsed="0.000375"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T01:09:34.267426" elapsed="0.000045"/>
</return>
<msg time="2026-04-08T01:09:34.267608" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T01:09:34.265821" elapsed="0.001818"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T01:09:34.272480" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T01:09:34.272251" elapsed="0.000257"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:09:34.272665" elapsed="0.000200"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:09:34.273244" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:09:34.273014" elapsed="0.000263"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:09:34.273794" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:09:34.273491" elapsed="0.000359"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:09:34.274035" elapsed="0.000260"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:09:34.274772" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:09:34.274491" elapsed="0.000317"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:09:34.275292" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:09:34.275011" elapsed="0.000323"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:09:34.275977" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:09:34.275485" elapsed="0.000518"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:09:34.276449" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:09:34.276178" elapsed="0.000317"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:09:34.276931" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:09:34.276646" elapsed="0.000326"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:09:34.283723" elapsed="0.000337"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:09:34.292673" elapsed="0.000225"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:09:34.293498" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:09:34.293055" elapsed="0.000472"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:09:34.294709" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:09:34.294121" elapsed="0.000631"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:09:34.294894" elapsed="0.000044"/>
</return>
<msg time="2026-04-08T01:09:34.295071" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:09:34.293717" elapsed="0.001380"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:09:34.295777" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:09:34.295287" elapsed="0.000518"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:09:34.296455" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:09:34.295966" elapsed="0.000517"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:09:34.296990" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:09:34.306440" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:09:34.296648" elapsed="0.011868">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:34.308813" elapsed="0.000038"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:34.309002" elapsed="0.000021"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:34.309186" elapsed="0.000022"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:34.309354" elapsed="0.000021"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:34.309521" elapsed="0.000037"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:34.309864" elapsed="0.000044"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:34.310500" elapsed="0.000046"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:34.311009" elapsed="0.000047"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:34.311577" elapsed="0.000073"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:09:34.310217" elapsed="0.001622"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:09:34.310014" elapsed="0.001914"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:34.312451" elapsed="0.000076"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:09:34.312662" elapsed="0.000054"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:09:34.292097" elapsed="0.020958">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:09:34.313318" elapsed="0.000049"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T01:09:34.281431" elapsed="0.032204">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:34.314378" elapsed="0.000068"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:34.322022" elapsed="0.000056"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:34.322320" elapsed="0.000025"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T01:09:34.322398" elapsed="0.000022"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T01:09:34.271696" elapsed="0.050850">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:09:34.322693" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:09:34.322740" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:09:34.271112" elapsed="0.051653"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T01:09:34.323012" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:09:34.322868" elapsed="0.000190"/>
</branch>
<status status="PASS" start="2026-04-08T01:09:34.322844" elapsed="0.000237"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:09:34.324640" elapsed="0.000244"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:09:34.325661" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:09:34.325066" elapsed="0.000628"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:09:34.326535" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:09:34.326257" elapsed="0.000306"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:09:34.326612" elapsed="0.000038"/>
</return>
<msg time="2026-04-08T01:09:34.326772" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:09:34.325888" elapsed="0.000910"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:09:34.327375" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:09:34.326957" elapsed="0.000444"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:09:34.327910" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:09:34.327558" elapsed="0.000378"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:09:34.328342" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:09:34.335819" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:09:34.328096" elapsed="0.009853">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:34.338393" elapsed="0.000052"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:34.338770" elapsed="0.000045"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:34.339126" elapsed="0.000072"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:34.339517" elapsed="0.000045"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:34.339883" elapsed="0.000044"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:34.340258" elapsed="0.000045"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:34.341014" elapsed="0.000044"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:34.341418" elapsed="0.000046"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:34.341768" elapsed="0.000043"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:09:34.340732" elapsed="0.001150"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:09:34.340566" elapsed="0.001377"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:34.342273" elapsed="0.000045"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:09:34.342406" elapsed="0.000037"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:09:34.323990" elapsed="0.018677">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:09:34.342934" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:09:34.343032" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:09:34.323254" elapsed="0.019829"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T01:09:34.344601" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T01:09:34.343789" elapsed="0.000947">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T01:09:34.343310" elapsed="0.001561">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T01:09:34.343264" elapsed="0.001675">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T01:09:34.345040" elapsed="0.000034"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:09:34.270559" elapsed="0.074730">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:34.345599" elapsed="0.000021"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:34.345760" elapsed="0.000019"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T01:09:34.345820" elapsed="0.000015"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T01:09:34.267948" elapsed="0.077972">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:34.346083" elapsed="0.000021"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:34.346273" elapsed="0.000021"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:34.346438" elapsed="0.000020"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:34.346594" elapsed="0.000019"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:34.346753" elapsed="0.000020"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:34.346910" elapsed="0.000019"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T01:09:34.347104" elapsed="0.000019"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T01:09:34.264897" elapsed="0.082335">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:09:35.378402" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:09:35.377886" elapsed="0.000550"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:09:35.378920" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:09:35.378604" elapsed="0.000343"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T01:09:35.378995" elapsed="0.000044"/>
</return>
<msg time="2026-04-08T01:09:35.379191" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T01:09:35.377497" elapsed="0.001722"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T01:09:35.383748" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T01:09:35.383557" elapsed="0.000218"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:09:35.383922" elapsed="0.000195"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:09:35.384493" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:09:35.384281" elapsed="0.000238"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:09:35.384992" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:09:35.384727" elapsed="0.000307"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:09:35.385190" elapsed="0.000184"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:09:35.385728" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:09:35.385521" elapsed="0.000233"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:09:35.386175" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:09:35.385914" elapsed="0.000305"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:09:35.386704" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:09:35.386364" elapsed="0.000366"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:09:35.387124" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:09:35.386890" elapsed="0.000294"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:09:35.387613" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:09:35.387330" elapsed="0.000308"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:09:35.394059" elapsed="0.000236"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:09:35.402875" elapsed="0.000217"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:09:35.403649" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:09:35.403258" elapsed="0.000418"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:09:35.404859" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:09:35.404277" elapsed="0.000624"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:09:35.405035" elapsed="0.000033"/>
</return>
<msg time="2026-04-08T01:09:35.405211" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:09:35.403857" elapsed="0.001380"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:09:35.405844" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:09:35.405397" elapsed="0.000535"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:09:35.406551" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:09:35.406089" elapsed="0.000489"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:09:35.407080" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:09:35.419123" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:09:35.406737" elapsed="0.016507">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:35.423669" elapsed="0.000054"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:35.424043" elapsed="0.000045"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:35.424447" elapsed="0.000048"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:35.424853" elapsed="0.000050"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:35.425268" elapsed="0.000048"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:35.425624" elapsed="0.000047"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:35.426311" elapsed="0.000051"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:35.426844" elapsed="0.000049"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:35.427311" elapsed="0.000050"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:09:35.425979" elapsed="0.001517"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:09:35.425805" elapsed="0.001759"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:35.427946" elapsed="0.000051"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:09:35.428094" elapsed="0.000039"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:09:35.402354" elapsed="0.026059">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:09:35.428585" elapsed="0.000037"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T01:09:35.391842" elapsed="0.037032">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:35.429321" elapsed="0.000051"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:35.434237" elapsed="0.000028"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:35.434430" elapsed="0.000020"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T01:09:35.434496" elapsed="0.000015"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T01:09:35.383002" elapsed="0.051650">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:09:35.434772" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:09:35.434818" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:09:35.382452" elapsed="0.052391"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T01:09:35.435060" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:09:35.434939" elapsed="0.000163"/>
</branch>
<status status="PASS" start="2026-04-08T01:09:35.434917" elapsed="0.000208"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:09:35.436489" elapsed="0.000252"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:09:35.437228" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:09:35.436896" elapsed="0.000359"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:09:35.438054" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:09:35.437788" elapsed="0.000292"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:09:35.438127" elapsed="0.000045"/>
</return>
<msg time="2026-04-08T01:09:35.438295" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:09:35.437448" elapsed="0.000871"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:09:35.438843" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:09:35.438471" elapsed="0.000398"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:09:35.439379" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:09:35.439019" elapsed="0.000387"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:09:35.439767" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:09:35.447596" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:09:35.439560" elapsed="0.010555">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:35.450403" elapsed="0.000034"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:35.450637" elapsed="0.000028"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:35.450856" elapsed="0.000028"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:35.451077" elapsed="0.000028"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:35.451324" elapsed="0.000029"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:35.451542" elapsed="0.000027"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:35.451898" elapsed="0.000027"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:35.452124" elapsed="0.000028"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:35.452363" elapsed="0.000028"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:09:35.451727" elapsed="0.000708"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:09:35.451632" elapsed="0.000841"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:35.452659" elapsed="0.000027"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:09:35.452766" elapsed="0.000024"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:09:35.435916" elapsed="0.017010">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:09:35.453174" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:09:35.453241" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:09:35.435303" elapsed="0.017971"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T01:09:35.454147" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T01:09:35.453695" elapsed="0.000560">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T01:09:35.453397" elapsed="0.000945">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T01:09:35.453369" elapsed="0.001016">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T01:09:35.454449" elapsed="0.000022"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:09:35.381897" elapsed="0.072689">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:35.454823" elapsed="0.000030"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:35.455046" elapsed="0.000027"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T01:09:35.455130" elapsed="0.000020"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T01:09:35.379511" elapsed="0.075779">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:35.455574" elapsed="0.000033"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:35.455823" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:35.456047" elapsed="0.000027"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:35.456284" elapsed="0.000028"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:35.456507" elapsed="0.000026"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:35.456772" elapsed="0.000031"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T01:09:35.456862" elapsed="0.000020"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T01:09:35.376661" elapsed="0.080341">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:09:36.488498" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:09:36.488005" elapsed="0.000526"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:09:36.489123" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:09:36.488698" elapsed="0.000454"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T01:09:36.489218" elapsed="0.000040"/>
</return>
<msg time="2026-04-08T01:09:36.489393" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T01:09:36.487602" elapsed="0.001818"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T01:09:36.494174" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T01:09:36.493963" elapsed="0.000240"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:09:36.494353" elapsed="0.000195"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:09:36.494909" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:09:36.494697" elapsed="0.000244"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:09:36.495402" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:09:36.495125" elapsed="0.000321"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:09:36.495588" elapsed="0.000183"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:09:36.496135" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:09:36.495919" elapsed="0.000258"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:09:36.496591" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:09:36.496343" elapsed="0.000288"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:09:36.497151" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:09:36.496778" elapsed="0.000415"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:09:36.497595" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:09:36.497356" elapsed="0.000282"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:09:36.498075" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:09:36.497783" elapsed="0.000319"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:09:36.506416" elapsed="0.000226"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:09:36.515168" elapsed="0.000228"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:09:36.515943" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:09:36.515550" elapsed="0.000420"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:09:36.517261" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:09:36.516647" elapsed="0.000664"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:09:36.517447" elapsed="0.000034"/>
</return>
<msg time="2026-04-08T01:09:36.517611" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:09:36.516174" elapsed="0.001462"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:09:36.518269" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:09:36.517795" elapsed="0.000510"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:09:36.518909" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:09:36.518469" elapsed="0.000467"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:09:36.519462" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:09:36.530031" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:09:36.519096" elapsed="0.013440">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:36.532803" elapsed="0.000092"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:36.533148" elapsed="0.000057"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:36.533410" elapsed="0.000030"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:36.533656" elapsed="0.000031"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:36.533894" elapsed="0.000029"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:36.534121" elapsed="0.000029"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:36.534545" elapsed="0.000034"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:36.534871" elapsed="0.000029"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:36.535136" elapsed="0.000057"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:09:36.534352" elapsed="0.000963"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:09:36.534250" elapsed="0.001107"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:36.535563" elapsed="0.000031"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:09:36.535652" elapsed="0.000022"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:09:36.514660" elapsed="0.021155">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:09:36.535916" elapsed="0.000021"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T01:09:36.504174" elapsed="0.031884">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:36.536350" elapsed="0.000030"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:36.542359" elapsed="0.000028"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:36.542551" elapsed="0.000022"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T01:09:36.542618" elapsed="0.000015"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T01:09:36.493404" elapsed="0.049334">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:09:36.542856" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:09:36.542901" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:09:36.492694" elapsed="0.050230"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T01:09:36.543136" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:09:36.543018" elapsed="0.000178"/>
</branch>
<status status="PASS" start="2026-04-08T01:09:36.542994" elapsed="0.000225"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:09:36.544600" elapsed="0.000233"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:09:36.545340" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:09:36.544987" elapsed="0.000381"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:09:36.546517" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:09:36.546044" elapsed="0.000500"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:09:36.546594" elapsed="0.000031"/>
</return>
<msg time="2026-04-08T01:09:36.546757" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:09:36.545549" elapsed="0.001235"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:09:36.547338" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:09:36.546942" elapsed="0.000424"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:09:36.547879" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:09:36.547519" elapsed="0.000387"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:09:36.548288" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:09:36.556349" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:09:36.548064" elapsed="0.010700">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:36.559229" elapsed="0.000055"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:36.559614" elapsed="0.000051"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:36.559990" elapsed="0.000050"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:36.560387" elapsed="0.000047"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:36.560753" elapsed="0.000045"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:36.561152" elapsed="0.000081"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:36.561760" elapsed="0.000046"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:36.562199" elapsed="0.000054"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:36.562562" elapsed="0.000045"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:09:36.561481" elapsed="0.001202"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:09:36.561336" elapsed="0.001404"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:36.563047" elapsed="0.000058"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:09:36.563228" elapsed="0.000037"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:09:36.544021" elapsed="0.019454">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:09:36.563843" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:09:36.563987" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:09:36.543367" elapsed="0.020682"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T01:09:36.565663" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T01:09:36.564820" elapsed="0.000907">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T01:09:36.564330" elapsed="0.001509">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T01:09:36.564282" elapsed="0.001592">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T01:09:36.565921" elapsed="0.000016"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:09:36.492128" elapsed="0.073892">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:36.566219" elapsed="0.000023"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:36.566387" elapsed="0.000020"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T01:09:36.566449" elapsed="0.000014"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T01:09:36.489716" elapsed="0.076833">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:36.566717" elapsed="0.000020"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:36.566892" elapsed="0.000021"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:36.567057" elapsed="0.000021"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:36.567237" elapsed="0.000022"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:36.567403" elapsed="0.000020"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:36.567562" elapsed="0.000020"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T01:09:36.567624" elapsed="0.000015"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T01:09:36.486809" elapsed="0.080914">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:09:37.597486" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:09:37.596973" elapsed="0.000546"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:09:37.598030" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:09:37.597688" elapsed="0.000369"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T01:09:37.598107" elapsed="0.000040"/>
</return>
<msg time="2026-04-08T01:09:37.598308" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T01:09:37.596582" elapsed="0.001762"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T01:09:37.603197" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T01:09:37.602990" elapsed="0.000235"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:09:37.603372" elapsed="0.000191"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:09:37.603994" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:09:37.603785" elapsed="0.000235"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:09:37.604476" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:09:37.604217" elapsed="0.000300"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:09:37.604665" elapsed="0.000182"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:09:37.605220" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:09:37.604995" elapsed="0.000251"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:09:37.605677" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:09:37.605431" elapsed="0.000288"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:09:37.606232" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:09:37.605864" elapsed="0.000394"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:09:37.606657" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:09:37.606420" elapsed="0.000281"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:09:37.607127" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:09:37.606845" elapsed="0.000308"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:09:37.613461" elapsed="0.000215"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:09:37.622066" elapsed="0.000227"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:09:37.622827" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:09:37.622443" elapsed="0.000410"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:09:37.624103" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:09:37.623449" elapsed="0.000694"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:09:37.624298" elapsed="0.000033"/>
</return>
<msg time="2026-04-08T01:09:37.624454" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:09:37.623032" elapsed="0.001446"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:09:37.625078" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:09:37.624636" elapsed="0.000469"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:09:37.625727" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:09:37.625278" elapsed="0.000476"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:09:37.626251" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:09:37.638210" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:09:37.625911" elapsed="0.016356">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:37.642593" elapsed="0.000039"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:37.642846" elapsed="0.000030"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:37.643075" elapsed="0.000030"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:37.643334" elapsed="0.000030"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:37.643573" elapsed="0.000029"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:37.643797" elapsed="0.000029"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:37.644191" elapsed="0.000030"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:37.644588" elapsed="0.000031"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:37.644861" elapsed="0.000029"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:09:37.643995" elapsed="0.000981"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:09:37.643894" elapsed="0.001121"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:37.645237" elapsed="0.000030"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:09:37.645343" elapsed="0.000023"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:09:37.621580" elapsed="0.023931">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:09:37.645612" elapsed="0.000021"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T01:09:37.611270" elapsed="0.034482">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:37.645992" elapsed="0.000029"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:37.651481" elapsed="0.000029"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:37.651680" elapsed="0.000021"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T01:09:37.651746" elapsed="0.000015"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T01:09:37.602451" elapsed="0.049401">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:09:37.651972" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:09:37.652015" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:09:37.601885" elapsed="0.050153"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T01:09:37.652287" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:09:37.652132" elapsed="0.000198"/>
</branch>
<status status="PASS" start="2026-04-08T01:09:37.652111" elapsed="0.000242"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:09:37.653748" elapsed="0.000213"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:09:37.654443" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:09:37.654110" elapsed="0.000359"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:09:37.655265" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:09:37.654980" elapsed="0.000312"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:09:37.655340" elapsed="0.000031"/>
</return>
<msg time="2026-04-08T01:09:37.655489" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:09:37.654647" elapsed="0.000866"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:09:37.656036" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:09:37.655667" elapsed="0.000394"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:09:37.656662" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:09:37.656309" elapsed="0.000379"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:09:37.657058" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:09:37.666521" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:09:37.656845" elapsed="0.011422">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:37.668445" elapsed="0.000023"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:37.668609" elapsed="0.000020"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:37.668766" elapsed="0.000019"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:37.668922" elapsed="0.000020"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:37.669084" elapsed="0.000019"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:37.669255" elapsed="0.000021"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:37.669542" elapsed="0.000020"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:37.669797" elapsed="0.000044"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:37.670139" elapsed="0.000075"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:09:37.669419" elapsed="0.000869"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:09:37.669320" elapsed="0.001027"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:37.670645" elapsed="0.000045"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:09:37.670774" elapsed="0.000034"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:09:37.653153" elapsed="0.017857">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:09:37.671291" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:09:37.671392" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:09:37.652500" elapsed="0.018944"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T01:09:37.673419" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T01:09:37.672088" elapsed="0.001472">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T01:09:37.671627" elapsed="0.002074">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T01:09:37.671585" elapsed="0.002186">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T01:09:37.673873" elapsed="0.000034"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:09:37.601332" elapsed="0.072758">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:37.674507" elapsed="0.000049"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:37.674867" elapsed="0.000045"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T01:09:37.675082" elapsed="0.000034"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T01:09:37.598648" elapsed="0.076688">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:37.675698" elapsed="0.000046"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:37.676090" elapsed="0.000046"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:37.676496" elapsed="0.000045"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:37.676841" elapsed="0.000043"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:37.677230" elapsed="0.000048"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:37.677665" elapsed="0.000022"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T01:09:37.677730" elapsed="0.000015"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T01:09:37.595764" elapsed="0.082065">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:09:38.711839" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:09:38.711247" elapsed="0.000627"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:09:38.712424" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:09:38.712045" elapsed="0.000416"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T01:09:38.712528" elapsed="0.000047"/>
</return>
<msg time="2026-04-08T01:09:38.712725" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T01:09:38.710831" elapsed="0.001921"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T01:09:38.717577" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T01:09:38.717380" elapsed="0.000224"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:09:38.717777" elapsed="0.000199"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:09:38.718357" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:09:38.718127" elapsed="0.000256"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:09:38.718826" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:09:38.718565" elapsed="0.000302"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:09:38.719007" elapsed="0.000197"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:09:38.719561" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:09:38.719352" elapsed="0.000235"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:09:38.720001" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:09:38.719749" elapsed="0.000293"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:09:38.720554" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:09:38.720207" elapsed="0.000374"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:09:38.721083" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:09:38.720835" elapsed="0.000293"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:09:38.721602" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:09:38.721311" elapsed="0.000318"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:09:38.728312" elapsed="0.000217"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:09:38.737301" elapsed="0.000223"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:09:38.738114" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:09:38.737713" elapsed="0.000428"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:09:38.739368" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:09:38.738764" elapsed="0.000648"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:09:38.739554" elapsed="0.000041"/>
</return>
<msg time="2026-04-08T01:09:38.739727" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:09:38.738358" elapsed="0.001396"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:09:38.740455" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:09:38.739916" elapsed="0.000568"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:09:38.741080" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:09:38.740641" elapsed="0.000466"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:09:38.741631" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:09:38.753496" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:09:38.741284" elapsed="0.016311">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:38.758039" elapsed="0.000084"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:38.758481" elapsed="0.000048"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:38.758843" elapsed="0.000045"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:38.759243" elapsed="0.000049"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:38.759621" elapsed="0.000045"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:38.759970" elapsed="0.000045"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:38.760595" elapsed="0.000046"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:38.761091" elapsed="0.000047"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:38.761557" elapsed="0.000048"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:09:38.760317" elapsed="0.001494"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:09:38.760122" elapsed="0.001758"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:38.762224" elapsed="0.000050"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:09:38.762365" elapsed="0.000036"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:09:38.736760" elapsed="0.025869">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:09:38.762919" elapsed="0.000024"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T01:09:38.726042" elapsed="0.037029">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:38.763335" elapsed="0.000030"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:38.769391" elapsed="0.000039"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:38.769693" elapsed="0.000033"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T01:09:38.769792" elapsed="0.000022"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T01:09:38.716813" elapsed="0.053129">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:09:38.770108" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:09:38.770196" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:09:38.716199" elapsed="0.054034"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T01:09:38.770534" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:09:38.770364" elapsed="0.000228"/>
</branch>
<status status="PASS" start="2026-04-08T01:09:38.770335" elapsed="0.000288"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:09:38.771995" elapsed="0.000227"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:09:38.772721" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:09:38.772387" elapsed="0.000360"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:09:38.773550" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:09:38.773279" elapsed="0.000297"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:09:38.773624" elapsed="0.000045"/>
</return>
<msg time="2026-04-08T01:09:38.773808" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:09:38.772926" elapsed="0.000906"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:09:38.774382" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:09:38.773987" elapsed="0.000422"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:09:38.774912" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:09:38.774562" elapsed="0.000377"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:09:38.775330" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:09:38.782508" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:09:38.775096" elapsed="0.009209">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:38.784491" elapsed="0.000023"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:38.784659" elapsed="0.000021"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:38.784876" elapsed="0.000021"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:38.785038" elapsed="0.000020"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:38.785222" elapsed="0.000021"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:38.785385" elapsed="0.000020"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:38.785646" elapsed="0.000051"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:38.785849" elapsed="0.000020"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:38.786004" elapsed="0.000020"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:09:38.785522" elapsed="0.000535"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:09:38.785451" elapsed="0.000634"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:38.786239" elapsed="0.000021"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:09:38.786300" elapsed="0.000016"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:09:38.771442" elapsed="0.014970">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:09:38.786530" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:09:38.786575" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:09:38.770791" elapsed="0.015808"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T01:09:38.787467" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T01:09:38.786981" elapsed="0.000572">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T01:09:38.786685" elapsed="0.000955">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T01:09:38.786665" elapsed="0.001020">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T01:09:38.787750" elapsed="0.000023"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:09:38.715634" elapsed="0.072254">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:38.788127" elapsed="0.000055"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:38.788386" elapsed="0.000029"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T01:09:38.788473" elapsed="0.000020"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T01:09:38.713091" elapsed="0.075522">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:38.788839" elapsed="0.000029"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:38.789080" elapsed="0.000027"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:38.789331" elapsed="0.000029"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:38.789618" elapsed="0.000028"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:38.789868" elapsed="0.000029"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:38.790090" elapsed="0.000028"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T01:09:38.790199" elapsed="0.000022"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T01:09:38.709964" elapsed="0.080378">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:09:39.822212" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:09:39.821678" elapsed="0.000569"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:09:39.822724" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:09:39.822414" elapsed="0.000336"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T01:09:39.822798" elapsed="0.000042"/>
</return>
<msg time="2026-04-08T01:09:39.822971" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T01:09:39.821294" elapsed="0.001702"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T01:09:39.827698" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T01:09:39.827510" elapsed="0.000215"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:09:39.827868" elapsed="0.000193"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:09:39.828433" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:09:39.828222" elapsed="0.000236"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:09:39.828889" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:09:39.828637" elapsed="0.000294"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:09:39.829068" elapsed="0.000211"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:09:39.829630" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:09:39.829425" elapsed="0.000229"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:09:39.830078" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:09:39.829813" elapsed="0.000308"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:09:39.830633" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:09:39.830282" elapsed="0.000377"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:09:39.831054" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:09:39.830818" elapsed="0.000280"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:09:39.831541" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:09:39.831257" elapsed="0.000310"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:09:39.837938" elapsed="0.000253"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:09:39.846699" elapsed="0.000216"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:09:39.847470" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:09:39.847065" elapsed="0.000432"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:09:39.848703" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:09:39.848136" elapsed="0.000610"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:09:39.848882" elapsed="0.000031"/>
</return>
<msg time="2026-04-08T01:09:39.849038" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:09:39.847740" elapsed="0.001324"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:09:39.849679" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:09:39.849235" elapsed="0.000472"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:09:39.850334" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:09:39.849860" elapsed="0.000501"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:09:39.850859" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:09:39.860756" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:09:39.850520" elapsed="0.012129">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:39.862999" elapsed="0.000052"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:39.863410" elapsed="0.000048"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:39.863775" elapsed="0.000045"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:39.864131" elapsed="0.000074"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:39.864534" elapsed="0.000046"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:39.864886" elapsed="0.000045"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:39.865498" elapsed="0.000045"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:39.866019" elapsed="0.000050"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:39.866493" elapsed="0.000047"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:09:39.865218" elapsed="0.001458"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:09:39.865032" elapsed="0.001706"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:39.867041" elapsed="0.000045"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:09:39.867205" elapsed="0.000036"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:09:39.846214" elapsed="0.021246">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:09:39.867615" elapsed="0.000034"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T01:09:39.835768" elapsed="0.032067">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:39.868240" elapsed="0.000052"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:39.873959" elapsed="0.000027"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:39.874233" elapsed="0.000022"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T01:09:39.874301" elapsed="0.000015"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T01:09:39.826961" elapsed="0.047445">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:09:39.874519" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:09:39.874563" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:09:39.826415" elapsed="0.048171"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T01:09:39.874789" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:09:39.874675" elapsed="0.000156"/>
</branch>
<status status="PASS" start="2026-04-08T01:09:39.874655" elapsed="0.000199"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:09:39.876141" elapsed="0.000226"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:09:39.876817" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:09:39.876515" elapsed="0.000327"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:09:39.877621" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:09:39.877359" elapsed="0.000288"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:09:39.877694" elapsed="0.000029"/>
</return>
<msg time="2026-04-08T01:09:39.877838" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:09:39.877015" elapsed="0.000876"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:09:39.878443" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:09:39.878059" elapsed="0.000410"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:09:39.878962" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:09:39.878620" elapsed="0.000368"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:09:39.879357" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:09:39.887625" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:09:39.879141" elapsed="0.010214">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:39.889532" elapsed="0.000023"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:39.889697" elapsed="0.000020"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:39.889859" elapsed="0.000019"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:39.890053" elapsed="0.000021"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:39.890242" elapsed="0.000021"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:39.890400" elapsed="0.000019"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:39.890649" elapsed="0.000020"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:39.890955" elapsed="0.000043"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:39.891418" elapsed="0.000047"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:09:39.890529" elapsed="0.001012"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:09:39.890464" elapsed="0.001134"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:39.891902" elapsed="0.000045"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:09:39.892033" elapsed="0.000033"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:09:39.875600" elapsed="0.016701">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:09:39.892557" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:09:39.892654" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:09:39.874996" elapsed="0.017710"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T01:09:39.894134" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T01:09:39.893411" elapsed="0.000894">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T01:09:39.892891" elapsed="0.001554">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T01:09:39.892850" elapsed="0.001664">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T01:09:39.894617" elapsed="0.000035"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:09:39.825842" elapsed="0.068996">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:39.895248" elapsed="0.000048"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:39.895608" elapsed="0.000044"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T01:09:39.895743" elapsed="0.000032"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T01:09:39.823475" elapsed="0.072484">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:39.896350" elapsed="0.000048"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:39.896737" elapsed="0.000044"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:39.897096" elapsed="0.000043"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:39.897472" elapsed="0.000045"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:39.897823" elapsed="0.000043"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:39.898277" elapsed="0.000048"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T01:09:39.898419" elapsed="0.000032"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T01:09:39.820500" elapsed="0.078132">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Verify_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:09:40.929249" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:09:40.928755" elapsed="0.000527"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-08T01:09:40.929764" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-08T01:09:40.929448" elapsed="0.000342"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-08T01:09:40.929841" elapsed="0.000042"/>
</return>
<msg time="2026-04-08T01:09:40.930012" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${candidate_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-08T01:09:40.928363" elapsed="0.001675"/>
</kw>
<kw name="Get_Owner_And_Successors_For_Device" owner="ClusterManagement">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-08T01:09:40.934623" level="INFO">${device_type} = openflow</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-08T01:09:40.934433" elapsed="0.000216"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:09:40.934794" elapsed="0.000191"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:09:40.935354" level="INFO">${device_id_prefix} = </msg>
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:09:40.935129" elapsed="0.000252"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:09:40.935815" level="INFO"/>
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:09:40.935561" elapsed="0.000295"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-08T01:09:40.935997" elapsed="0.000196"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:09:40.936544" level="INFO">${device_id_suffix} = </msg>
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:09:40.936339" elapsed="0.000229"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:09:40.936971" level="INFO"/>
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:09:40.936728" elapsed="0.000283"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:09:40.937514" level="INFO">${id} = openflow:1</msg>
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:09:40.937172" elapsed="0.000367"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:09:40.937931" level="INFO">openflow:1</msg>
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:09:40.937698" elapsed="0.000277"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:09:40.938447" level="INFO">${type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:09:40.938117" elapsed="0.000356"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Find a way to unify and deduplicate code blocks in Get_Owner_And_Candidates_* keywords.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:09:40.944870" elapsed="0.000233"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:09:40.953774" elapsed="0.000212"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:09:40.954563" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:09:40.954137" elapsed="0.000452"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:09:40.955779" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:09:40.955212" elapsed="0.000608"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:09:40.955956" elapsed="0.000032"/>
</return>
<msg time="2026-04-08T01:09:40.956110" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:09:40.954771" elapsed="0.001363"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:09:40.956757" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:09:40.956314" elapsed="0.000469"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:09:40.957381" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:09:40.956935" elapsed="0.000473"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:09:40.957899" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:09:40.971300" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:09:40.957565" elapsed="0.015517">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:40.973285" elapsed="0.000025"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:40.973455" elapsed="0.000021"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:40.973616" elapsed="0.000021"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:40.973783" elapsed="0.000021"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:40.973949" elapsed="0.000020"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:40.974106" elapsed="0.000020"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:40.974422" elapsed="0.000022"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:40.974646" elapsed="0.000021"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:40.974831" elapsed="0.000022"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:09:40.974268" elapsed="0.000644"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:09:40.974191" elapsed="0.000750"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:40.975077" elapsed="0.000021"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:09:40.975136" elapsed="0.000016"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>${id}</arg>
<arg>${type}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:09:40.953285" elapsed="0.021984">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${owner}</value>
<value>${candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:09:40.975338" elapsed="0.000016"/>
</return>
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="FAIL" start="2026-04-08T01:09:40.942712" elapsed="0.032726">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:40.975606" elapsed="0.000021"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by org.opendaylight.mdsal.ServiceEntityType and openflow:1
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:40.981690" elapsed="0.000029"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:40.981880" elapsed="0.000022"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-08T01:09:40.981947" elapsed="0.000015"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-08T01:09:40.933869" elapsed="0.048184">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:09:40.982185" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:09:40.982231" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:09:40.933323" elapsed="0.048931"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-08T01:09:40.982538" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:09:40.982419" elapsed="0.000162"/>
</branch>
<status status="PASS" start="2026-04-08T01:09:40.982396" elapsed="0.000208"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:09:40.983913" elapsed="0.000210"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-08T01:09:40.984594" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-08T01:09:40.984287" elapsed="0.000333"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-08T01:09:40.985406" level="INFO">${ip_address} = 10.30.170.48</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-08T01:09:40.985124" elapsed="0.000308"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-08T01:09:40.985480" elapsed="0.000030"/>
</return>
<msg time="2026-04-08T01:09:40.985628" level="INFO">${ip} = 10.30.170.48</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-08T01:09:40.984794" elapsed="0.000858"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:09:40.986186" level="INFO">${entity_type} = openflow</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:09:40.985805" elapsed="0.000408"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-08T01:09:40.986727" level="INFO">${url} = http://10.30.170.48:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-08T01:09:40.986376" elapsed="0.000382"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-08T01:09:40.987139" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "openflow",
            "name": "openflow:1"
        }
    }
    </msg>
<msg time="2026-04-08T01:09:40.997174" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-08T01:09:40.986938" elapsed="0.012063">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:40.999285" elapsed="0.000034"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:40.999521" elapsed="0.000030"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:40.999746" elapsed="0.000032"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:40.999972" elapsed="0.000029"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:41.000222" elapsed="0.000031"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:41.000444" elapsed="0.000029"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:41.000807" elapsed="0.000029"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:41.001037" elapsed="0.000029"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:41.001276" elapsed="0.000029"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-08T01:09:41.000637" elapsed="0.000716"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-08T01:09:41.000538" elapsed="0.000851"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:41.001577" elapsed="0.000028"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-08T01:09:41.001660" elapsed="0.000022"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:09:40.983371" elapsed="0.018442">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-08T01:09:41.001976" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-08T01:09:41.002039" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-08T01:09:40.982750" elapsed="0.019322"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-08T01:09:41.003073" level="FAIL">Could not parse owner and candidates for device openflow:1</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-08T01:09:41.002614" elapsed="0.000564">Could not parse owner and candidates for device openflow:1</status>
</kw>
<status status="FAIL" start="2026-04-08T01:09:41.002273" elapsed="0.000997">Could not parse owner and candidates for device openflow:1</status>
</branch>
<status status="FAIL" start="2026-04-08T01:09:41.002244" elapsed="0.001070">Could not parse owner and candidates for device openflow:1</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-08T01:09:41.003381" elapsed="0.000022"/>
</return>
<var>${owner}</var>
<var>${candidate_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device openflow:1 of type openflow. Request is sent to member 1.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-08T01:09:40.932765" elapsed="0.070756">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${successor_list}</var>
<arg>@{candidate_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:41.003765" elapsed="0.000031"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:41.003995" elapsed="0.000029"/>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T01:09:41.004084" elapsed="0.000021"/>
</return>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<doc>Returns the owner and a list of successors for the SB device openflow:1 of type openflow. Request is sent to member 1.
Successors are those device candidates not elected as owner. The list of successors = (list of candidates) - (owner).
The returned successor list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
Use Verify_Owner_And_Successors_For_Device if you want the older semantics (inaccessible nodes not present in the list).</doc>
<status status="FAIL" start="2026-04-08T01:09:40.930383" elapsed="0.073867">Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<arg>Owner ${owner} is not in candidate list ${index_list}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:41.004481" elapsed="0.000030"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${expected_candidate_list_origin}</var>
<arg>${after_stop}</arg>
<arg>${index_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:41.004725" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${expected_successor_list}</var>
<arg>@{expected_candidate_list_origin}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:41.004953" elapsed="0.000028"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:41.005191" elapsed="0.000030"/>
</kw>
<kw name="Lists Should Be Equal" owner="Collections">
<arg>${expected_successor_list}</arg>
<arg>${successor_list}</arg>
<arg>Successor list ${successor_list} is not the came as expected ${expected_successor_list}</arg>
<doc>Fails if given lists are unequal.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:41.005421" elapsed="0.000029"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${index_list}</arg>
<arg>${owner}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:41.005641" elapsed="0.000028"/>
</kw>
<return>
<value>${owner}</value>
<value>${index_list}</value>
<status status="NOT RUN" start="2026-04-08T01:09:41.005728" elapsed="0.000020"/>
</return>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Returns the owner and successors for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
For Boron and beyond, candidates are not removed on node down or isolation,
so this keyword expects candidates to be all members from Boron on.
Extra check is done to verify owner and successors are within the ${candidate_list}. This KW is useful when combined with WUKS.
${candidate_list} minus owner is returned as ${successor list}.
Users can still use Get_Owner_And_Successors_For_Device if they are interested in downed candidates,
or for testing heterogeneous clusters.</doc>
<status status="FAIL" start="2026-04-08T01:09:40.927564" elapsed="0.078300">Could not parse owner and candidates for device openflow:1</status>
</kw>
<msg time="2026-04-08T01:09:41.006005" level="FAIL">Keyword 'ClusterManagement.Verify_Owner_And_Successors_For_Device' failed after retrying for 30 seconds. The last error was: Could not parse owner and candidates for device openflow:1</msg>
<var>${owner}</var>
<var>${successor_list}</var>
<arg>30s</arg>
<arg>1s</arg>
<arg>ClusterManagement.Verify_Owner_And_Successors_For_Device</arg>
<arg>device_name=${device}</arg>
<arg>device_type=openflow</arg>
<arg>member_index=${controller_index}</arg>
<arg>candidate_list=${controller_index_list}</arg>
<arg>after_stop=${after_stop}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="FAIL" start="2026-04-08T01:09:10.769030" elapsed="30.237102">Keyword 'ClusterManagement.Verify_Owner_And_Successors_For_Device' failed after retrying for 30 seconds. The last error was: Could not parse owner and candidates for device openflow:1</status>
</kw>
<return>
<value>${owner}</value>
<value>${successor_list}</value>
<status status="NOT RUN" start="2026-04-08T01:09:41.006262" elapsed="0.000023"/>
</return>
<var>${original_owner}</var>
<var>${original_successor_list}</var>
<arg>openflow:1</arg>
<arg>1</arg>
<doc>Check Entity Owner Status and identify owner and successors for the device ${device}. Request is sent to controller ${controller_index}.</doc>
<status status="FAIL" start="2026-04-08T01:09:10.766991" elapsed="30.239445">Keyword 'ClusterManagement.Verify_Owner_And_Successors_For_Device' failed after retrying for 30 seconds. The last error was: Could not parse owner and candidates for device openflow:1</status>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<arg>${original_owner}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:41.006683" elapsed="0.000090"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<arg>${new_cluster_list}</arg>
<arg>${original_successor_list}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="NOT RUN" start="2026-04-08T01:09:41.007026" elapsed="0.000029"/>
</kw>
<kw name="Report Failure Due To Bug" owner="Utils" type="TEARDOWN">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:09:41.008717" level="INFO">${test_skipped} = False</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:09:41.008116" elapsed="0.000640"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="NOT RUN" start="2026-04-08T01:09:41.009413" elapsed="0.000023"/>
</return>
<status status="NOT RUN" start="2026-04-08T01:09:41.008861" elapsed="0.000613"/>
</branch>
<status status="PASS" start="2026-04-08T01:09:41.008835" elapsed="0.000669"/>
</if>
<kw name="Comment" owner="BuiltIn">
<arg>Jira tickets are {PROJECT}-{NUMBER} while Bugzilla tickets are {NUMBER}</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-08T01:09:41.009730" elapsed="0.000302"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="Should Contain" owner="BuiltIn">
<msg time="2026-04-08T01:09:41.011259" level="FAIL">'9145' does not contain '-'</msg>
<arg>${number}</arg>
<arg>-</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="FAIL" start="2026-04-08T01:09:41.010855" elapsed="0.000465">'9145' does not contain '-'</status>
</kw>
<msg time="2026-04-08T01:09:41.011411" level="INFO">${match} = False</msg>
<var>${match}</var>
<arg>Should Contain</arg>
<arg>${number}</arg>
<arg>-</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-08T01:09:41.010273" elapsed="0.001163"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-08T01:09:41.012072" level="INFO">${bug_url} = https://bugs.opendaylight.org/show_bug.cgi?id=9145</msg>
<var>${bug_url}</var>
<arg>${match}</arg>
<arg>https://jira.opendaylight.org/browse/${number}</arg>
<arg>https://bugs.opendaylight.org/show_bug.cgi?id=${number}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-08T01:09:41.011597" elapsed="0.000503"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-08T01:09:41.012579" level="INFO">${msg} = This test fails due to https://bugs.opendaylight.org/show_bug.cgi?id=9145</msg>
<var>${msg}</var>
<arg>This test fails due to ${bug_url}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-08T01:09:41.012280" elapsed="0.000325"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-08T01:09:41.013049" level="INFO">${newline} = 
</msg>
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-08T01:09:41.012754" elapsed="0.000322"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<msg time="2026-04-08T01:09:41.013608" level="INFO">Set test message to:
This test fails due to https://bugs.opendaylight.org/show_bug.cgi?id=9145

Keyword 'ClusterManagement.Verify_Owner_And_Successors_For_Device' failed after retrying for 30 seconds. The last error was: Could not parse owner and candidates for device openflow:1</msg>
<arg>${msg}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="PASS" start="2026-04-08T01:09:41.013241" elapsed="0.000416"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-08T01:09:41.014051" level="INFO">This test fails due to https://bugs.opendaylight.org/show_bug.cgi?id=9145</msg>
<arg>${msg}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-08T01:09:41.013806" elapsed="0.000289"/>
</kw>
<if>
<branch type="IF" condition="&quot;${include_bug_in_tags}&quot;==&quot;True&quot;">
<kw name="Set Tags" owner="BuiltIn">
<msg time="2026-04-08T01:09:41.014781" level="INFO">Set tag 'https://bugs.opendaylight.org/show_bug.cgi?id=9145'.</msg>
<arg>${bug_url}</arg>
<doc>Adds given ``tags`` for the current test or all tests in a suite.</doc>
<status status="PASS" start="2026-04-08T01:09:41.014435" elapsed="0.000400"/>
</kw>
<status status="PASS" start="2026-04-08T01:09:41.014179" elapsed="0.000690"/>
</branch>
<status status="PASS" start="2026-04-08T01:09:41.014145" elapsed="0.000749"/>
</if>
<arg>9145</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-04-08T01:09:41.007625" elapsed="0.007315"/>
</kw>
<doc>Check Entity Owner Status and identify owner and successor for first switch s1.</doc>
<tag>https://bugs.opendaylight.org/show_bug.cgi?id=9145</tag>
<status status="FAIL" start="2026-04-08T01:09:10.759103" elapsed="30.255882">This test fails due to https://bugs.opendaylight.org/show_bug.cgi?id=9145

Keyword 'ClusterManagement.Verify_Owner_And_Successors_For_Device' failed after retrying for 30 seconds. The last error was: Could not parse owner and candidates for device openflow:1</status>
</test>
<test id="s1-s8-t3" name="Stop Mininet" line="34">
<kw name="Stop Mininet And Exit" owner="MininetKeywords">
<if>
<branch type="IF" condition="&quot;&quot;&quot;${mininet_conn}&quot;&quot;&quot; != &quot;&quot;">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${mininet_conn}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-08T01:09:41.020133" elapsed="0.000175"/>
</kw>
<status status="PASS" start="2026-04-08T01:09:41.019911" elapsed="0.000435"/>
</branch>
<status status="PASS" start="2026-04-08T01:09:41.019892" elapsed="0.000480"/>
</if>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-08T01:09:41.023407" level="INFO">exit</msg>
<arg>exit</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-08T01:09:41.020508" elapsed="0.003067"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-08T01:09:41.158426" level="INFO">*** Stopping 0 controllers

*** Stopping 2 links
..
*** Stopping 1 switches
s1 
*** Stopping 2 hosts
h1 h2 
*** Done
completed in 35.876 seconds
[?2004h[jenkins@releng-11369-169-1-mininet-ovs-217-0 ~]&gt;</msg>
<arg>${TOOLS_SYSTEM_PROMPT}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-08T01:09:41.024036" elapsed="0.134569"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-08T01:09:41.158934" elapsed="0.000292"/>
</kw>
<arg>${mininet_conn_id}</arg>
<doc>Stops Mininet and exits session ${mininet_conn}</doc>
<status status="PASS" start="2026-04-08T01:09:41.019641" elapsed="0.139674"/>
</kw>
<doc>Stop Mininet.</doc>
<status status="PASS" start="2026-04-08T01:09:41.015352" elapsed="0.144141"/>
</test>
<kw name="Final Phase" type="TEARDOWN">
<kw name="Delete All Sessions" owner="RequestsLibrary">
<msg time="2026-04-08T01:09:41.160663" level="INFO">Deleting All Sessions</msg>
<doc>Removes all the session objects</doc>
<status status="PASS" start="2026-04-08T01:09:41.160555" elapsed="0.000265"/>
</kw>
<doc>Delete all sessions.</doc>
<status status="PASS" start="2026-04-08T01:09:41.160238" elapsed="0.000655"/>
</kw>
<doc>Switch connections and cluster are restarted.</doc>
<status status="FAIL" start="2026-04-08T01:09:02.540982" elapsed="38.620224"/>
</suite>
<status status="FAIL" start="2026-04-08T00:49:34.359047" elapsed="1206.803956"/>
</suite>
<statistics>
<total>
<stat pass="88" fail="121" skip="0">All Tests</stat>
</total>
<tag>
<stat pass="0" fail="3" skip="0">https://bugs.opendaylight.org/show_bug.cgi?id=6177</stat>
<stat pass="0" fail="1" skip="0">https://bugs.opendaylight.org/show_bug.cgi?id=9145</stat>
<stat pass="0" fail="1" skip="0">https://jira.opendaylight.org/browse/CONTROLLER-1849</stat>
</tag>
<suite>
<stat name="openflowplugin-clustering.txt" id="s1" pass="88" fail="121" skip="0">openflowplugin-clustering.txt</stat>
<stat name="Cluster HA Owner Failover" id="s1-s1" pass="11" fail="40" skip="0">openflowplugin-clustering.txt.Cluster HA Owner Failover</stat>
<stat name="Cluster HA Owner Restart" id="s1-s2" pass="11" fail="40" skip="0">openflowplugin-clustering.txt.Cluster HA Owner Restart</stat>
<stat name="Cluster HA Data Recovery Leader Follower Failover" id="s1-s3" pass="21" fail="0" skip="0">openflowplugin-clustering.txt.Cluster HA Data Recovery Leader Follower Failover</stat>
<stat name="010 Group Flows" id="s1-s4" pass="43" fail="29" skip="0">openflowplugin-clustering.txt.010 Group Flows</stat>
<stat name="010 Switch Disconnect" id="s1-s5" pass="0" fail="3" skip="0">openflowplugin-clustering.txt.010 Switch Disconnect</stat>
<stat name="020 Cluster Node Failure" id="s1-s6" pass="0" fail="3" skip="0">openflowplugin-clustering.txt.020 Cluster Node Failure</stat>
<stat name="030 Cluster Sync Problems" id="s1-s7" pass="0" fail="5" skip="0">openflowplugin-clustering.txt.030 Cluster Sync Problems</stat>
<stat name="9145" id="s1-s8" pass="2" fail="1" skip="0">openflowplugin-clustering.txt.9145</stat>
</suite>
</statistics>
<errors>
</errors>
</robot>
